summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Rottmann <a.rottmann@gmx.at>2009-09-14 12:32:44 +0200
committerAndreas Rottmann <a.rottmann@gmx.at>2009-09-14 12:32:44 +0200
commitfa095a4504cbe668e4244547e2c141597bea4ecf (patch)
tree06135820a286ffec47804e75fbf8a147e92acd2e
Imported Upstream version 0.9.1upstream/0.9.1
-rw-r--r--AUTHORS1
-rw-r--r--BUGS6
-rw-r--r--COPYING674
-rw-r--r--COPYING.LIB165
-rw-r--r--ChangeLog540
-rw-r--r--DEPENDENCIES17
-rw-r--r--HACKING84
-rw-r--r--INSTALL314
-rw-r--r--Makefile.am41
-rw-r--r--Makefile.in1158
-rw-r--r--NEWS9
-rw-r--r--README69
-rw-r--r--README.woe3240
-rw-r--r--THANKS3
-rw-r--r--aclocal.m41558
-rwxr-xr-xautogen.sh452
-rwxr-xr-xbuild-aux/compile142
-rwxr-xr-xbuild-aux/config.guess1533
-rwxr-xr-xbuild-aux/config.rpath672
-rwxr-xr-xbuild-aux/config.sub1693
-rwxr-xr-xbuild-aux/depcomp589
-rwxr-xr-xbuild-aux/fixaclocal35
-rwxr-xr-xbuild-aux/install-sh519
-rw-r--r--build-aux/link-warning.h28
-rw-r--r--build-aux/ltmain.sh8526
-rwxr-xr-xbuild-aux/mdate-sh205
-rwxr-xr-xbuild-aux/missing367
-rwxr-xr-xbuild-aux/run-test139
-rwxr-xr-xbuild-aux/texi2html19554
-rw-r--r--build-aux/texinfo.tex8997
-rwxr-xr-xbuild-aux/windres-options45
-rw-r--r--config.h.in676
-rwxr-xr-xconfigure41717
-rw-r--r--configure.ac153
-rw-r--r--doc/Makefile.am185
-rw-r--r--doc/Makefile.in1207
-rw-r--r--doc/fdl.texi506
-rw-r--r--doc/gpl.texi717
-rw-r--r--doc/lgpl.texi190
-rw-r--r--doc/libunistring.info6200
-rw-r--r--doc/libunistring.texi989
-rw-r--r--doc/libunistring_1.html531
-rw-r--r--doc/libunistring_10.html192
-rw-r--r--doc/libunistring_11.html200
-rw-r--r--doc/libunistring_12.html507
-rw-r--r--doc/libunistring_13.html611
-rw-r--r--doc/libunistring_14.html87
-rw-r--r--doc/libunistring_15.html232
-rw-r--r--doc/libunistring_16.html93
-rw-r--r--doc/libunistring_17.html1526
-rw-r--r--doc/libunistring_18.html770
-rw-r--r--doc/libunistring_19.html188
-rw-r--r--doc/libunistring_2.html141
-rw-r--r--doc/libunistring_3.html107
-rw-r--r--doc/libunistring_4.html864
-rw-r--r--doc/libunistring_5.html296
-rw-r--r--doc/libunistring_6.html451
-rw-r--r--doc/libunistring_7.html125
-rw-r--r--doc/libunistring_8.html2071
-rw-r--r--doc/libunistring_9.html141
-rw-r--r--doc/libunistring_abt.html167
-rw-r--r--doc/libunistring_toc.html164
-rw-r--r--doc/stamp-vti4
-rw-r--r--doc/unicase.texi364
-rw-r--r--doc/uniconv.texi157
-rw-r--r--doc/unictype.texi1145
-rw-r--r--doc/unilbrk.texi88
-rw-r--r--doc/uniname.texi32
-rw-r--r--doc/uninorm.texi299
-rw-r--r--doc/uniregex.texi5
-rw-r--r--doc/unistdio.texi197
-rw-r--r--doc/unistr.texi493
-rw-r--r--doc/unitypes.texi15
-rw-r--r--doc/uniwbrk.texi71
-rw-r--r--doc/uniwidth.texi43
-rw-r--r--doc/version.texi4
-rw-r--r--gnulib-local/Makefile.am30
-rw-r--r--gnulib-local/Makefile.in783
-rw-r--r--gnulib-local/lib/unicase.h.diff19
-rw-r--r--gnulib-local/lib/uniconv.h.diff28
-rw-r--r--gnulib-local/lib/unictype.h.diff24
-rw-r--r--gnulib-local/lib/unilbrk.h.diff19
-rw-r--r--gnulib-local/lib/uninorm.h.diff14
-rw-r--r--gnulib-local/lib/unistr.h.diff24
-rw-r--r--gnulib-local/lib/unitypes.h.diff19
-rw-r--r--gnulib-local/lib/uniwidth.h.diff19
-rw-r--r--gnulib-local/modules/unictype/category-none-tests.diff14
-rw-r--r--gnulib-m4/00gnulib.m430
-rw-r--r--gnulib-m4/alloca.m446
-rw-r--r--gnulib-m4/codeset.m421
-rw-r--r--gnulib-m4/eealloc.m432
-rw-r--r--gnulib-m4/environ.m436
-rw-r--r--gnulib-m4/errno_h.m4115
-rw-r--r--gnulib-m4/error.m422
-rw-r--r--gnulib-m4/exitfail.m413
-rw-r--r--gnulib-m4/exponentd.m4114
-rw-r--r--gnulib-m4/exponentf.m491
-rw-r--r--gnulib-m4/exponentl.m497
-rw-r--r--gnulib-m4/extensions.m4104
-rw-r--r--gnulib-m4/float_h.m419
-rw-r--r--gnulib-m4/fpieee.m452
-rw-r--r--gnulib-m4/frexp.m4146
-rw-r--r--gnulib-m4/frexpl.m4186
-rw-r--r--gnulib-m4/getpagesize.m429
-rw-r--r--gnulib-m4/glibc21.m430
-rw-r--r--gnulib-m4/gnulib-cache.m4373
-rw-r--r--gnulib-m4/gnulib-common.m4124
-rw-r--r--gnulib-m4/gnulib-comp.m41602
-rw-r--r--gnulib-m4/iconv.m4180
-rw-r--r--gnulib-m4/iconv_h.m434
-rw-r--r--gnulib-m4/iconv_open.m4237
-rw-r--r--gnulib-m4/include_next.m4187
-rw-r--r--gnulib-m4/inline.m440
-rw-r--r--gnulib-m4/intlmacosx.m451
-rw-r--r--gnulib-m4/intmax_t.m461
-rw-r--r--gnulib-m4/inttypes_h.m426
-rw-r--r--gnulib-m4/isnand.m495
-rw-r--r--gnulib-m4/isnanf.m4179
-rw-r--r--gnulib-m4/isnanl.m4245
-rw-r--r--gnulib-m4/lcmessage.m430
-rw-r--r--gnulib-m4/ldexpl.m488
-rw-r--r--gnulib-m4/lib-ld.m4110
-rw-r--r--gnulib-m4/lib-link.m4764
-rw-r--r--gnulib-m4/lib-prefix.m4224
-rw-r--r--gnulib-m4/localcharset.m416
-rw-r--r--gnulib-m4/locale-fr.m4185
-rw-r--r--gnulib-m4/locale-ja.m4107
-rw-r--r--gnulib-m4/locale-tr.m497
-rw-r--r--gnulib-m4/locale-zh.m492
-rw-r--r--gnulib-m4/locale_h.m422
-rw-r--r--gnulib-m4/localename.m412
-rw-r--r--gnulib-m4/longlong.m4106
-rw-r--r--gnulib-m4/malloc.m441
-rw-r--r--gnulib-m4/malloca.m414
-rw-r--r--gnulib-m4/math_h.m4103
-rw-r--r--gnulib-m4/mbchar.m413
-rw-r--r--gnulib-m4/mbiter.m417
-rw-r--r--gnulib-m4/mbrtowc.m4383
-rw-r--r--gnulib-m4/mbsinit.m430
-rw-r--r--gnulib-m4/mbstate_t.m434
-rw-r--r--gnulib-m4/memchr.m486
-rw-r--r--gnulib-m4/minmax.m441
-rw-r--r--gnulib-m4/mmap-anon.m459
-rw-r--r--gnulib-m4/multiarch.m465
-rw-r--r--gnulib-m4/nocrash.m4102
-rw-r--r--gnulib-m4/printf-frexp.m445
-rw-r--r--gnulib-m4/printf-frexpl.m464
-rw-r--r--gnulib-m4/printf.m41416
-rw-r--r--gnulib-m4/relocatable-lib.m456
-rw-r--r--gnulib-m4/setenv.m471
-rw-r--r--gnulib-m4/signbit.m4287
-rw-r--r--gnulib-m4/size_max.m475
-rw-r--r--gnulib-m4/stdbool.m4115
-rw-r--r--gnulib-m4/stdint.m4472
-rw-r--r--gnulib-m4/stdint_h.m426
-rw-r--r--gnulib-m4/stdlib_h.m473
-rw-r--r--gnulib-m4/strerror.m468
-rw-r--r--gnulib-m4/string_h.m494
-rw-r--r--gnulib-m4/unistd_h.m483
-rw-r--r--gnulib-m4/vasnprintf.m4276
-rw-r--r--gnulib-m4/wchar.m4100
-rw-r--r--gnulib-m4/wchar_t.m420
-rw-r--r--gnulib-m4/wctob.m491
-rw-r--r--gnulib-m4/wctype.m474
-rw-r--r--gnulib-m4/wcwidth.m485
-rw-r--r--gnulib-m4/wint_t.m428
-rw-r--r--gnulib-m4/xalloc.m424
-rw-r--r--gnulib-m4/xsize.m413
-rw-r--r--lib/Makefile.am297
-rw-r--r--lib/Makefile.gnulib4655
-rw-r--r--lib/Makefile.in4285
-rw-r--r--lib/alloca.in.h56
-rw-r--r--lib/array-mergesort.h274
-rw-r--r--lib/c-ctype.c396
-rw-r--r--lib/c-ctype.h295
-rw-r--r--lib/c-strcase.h55
-rw-r--r--lib/c-strcasecmp.c57
-rw-r--r--lib/c-strcaseeq.h184
-rw-r--r--lib/c-strncasecmp.c57
-rwxr-xr-xlib/config.charset683
-rwxr-xr-xlib/declared.sh135
-rw-r--r--lib/errno.in.h160
-rw-r--r--lib/exported.sh.in24
-rw-r--r--lib/float+.h148
-rw-r--r--lib/float.in.h62
-rw-r--r--lib/fpucw.h107
-rw-r--r--lib/frexp.c166
-rw-r--r--lib/frexpl.c18
-rw-r--r--lib/fseterr.c74
-rw-r--r--lib/fseterr.h37
-rw-r--r--lib/getpagesize.c39
-rw-r--r--lib/iconv.in.h71
-rw-r--r--lib/iconv_open-aix.gperf44
-rw-r--r--lib/iconv_open-aix.h256
-rw-r--r--lib/iconv_open-hpux.gperf56
-rw-r--r--lib/iconv_open-hpux.h299
-rw-r--r--lib/iconv_open-irix.gperf31
-rw-r--r--lib/iconv_open-irix.h199
-rw-r--r--lib/iconv_open-osf.gperf50
-rw-r--r--lib/iconv_open-osf.h278
-rw-r--r--lib/iconv_open.c172
-rw-r--r--lib/iconveh.h41
-rw-r--r--lib/isnan.c161
-rw-r--r--lib/isnand-nolibm.h33
-rw-r--r--lib/isnand.c19
-rw-r--r--lib/isnanf-nolibm.h33
-rw-r--r--lib/isnanf.c20
-rw-r--r--lib/isnanl-nolibm.h33
-rw-r--r--lib/isnanl.c20
-rw-r--r--lib/libunistring.rc38
-rw-r--r--lib/libunistring.sym559
-rw-r--r--lib/localcharset.c499
-rw-r--r--lib/localcharset.h41
-rw-r--r--lib/localename.c1692
-rw-r--r--lib/localename.h77
-rw-r--r--lib/malloc.c57
-rw-r--r--lib/malloca.c137
-rw-r--r--lib/malloca.h134
-rw-r--r--lib/malloca.valgrind7
-rw-r--r--lib/math.in.h567
-rw-r--r--lib/mbchar.c35
-rw-r--r--lib/mbchar.h350
-rw-r--r--lib/mbiter.h215
-rw-r--r--lib/mbrtowc.c386
-rw-r--r--lib/mbsinit.c47
-rw-r--r--lib/mbsnlen.c45
-rw-r--r--lib/memchr.c172
-rw-r--r--lib/memchr.valgrind14
-rw-r--r--lib/memcmp2.c36
-rw-r--r--lib/memcmp2.h39
-rw-r--r--lib/memxfrm.c137
-rw-r--r--lib/memxfrm.h48
-rw-r--r--lib/minmax.h60
-rw-r--r--lib/printf-args.c187
-rw-r--r--lib/printf-args.h154
-rw-r--r--lib/printf-frexp.c188
-rw-r--r--lib/printf-frexp.h23
-rw-r--r--lib/printf-frexpl.c18
-rw-r--r--lib/printf-frexpl.h23
-rw-r--r--lib/printf-parse.c627
-rw-r--r--lib/printf-parse.h179
-rw-r--r--lib/ref-add.sin30
-rw-r--r--lib/ref-del.sin25
-rw-r--r--lib/relocatable.c493
-rw-r--r--lib/relocatable.h83
-rw-r--r--lib/signbitd.c64
-rw-r--r--lib/signbitf.c64
-rw-r--r--lib/signbitl.c64
-rw-r--r--lib/size_max.h31
-rw-r--r--lib/stdbool.in.h119
-rw-r--r--lib/stdint.in.h567
-rw-r--r--lib/stdint.mini.h128
-rw-r--r--lib/stdio-impl.h94
-rw-r--r--lib/stdlib.in.h383
-rw-r--r--lib/streq.h176
-rw-r--r--lib/striconveh.c1251
-rw-r--r--lib/striconveh.h120
-rw-r--r--lib/striconveha.c348
-rw-r--r--lib/striconveha.h95
-rw-r--r--lib/string.in.h620
-rw-r--r--lib/unicase.h457
-rw-r--r--lib/unicase/cased.c53
-rw-r--r--lib/unicase/cased.h343
-rw-r--r--lib/unicase/casefold.h22
-rw-r--r--lib/unicase/caseprop.h32
-rw-r--r--lib/unicase/context.h65
-rw-r--r--lib/unicase/empty-prefix-context.c27
-rw-r--r--lib/unicase/empty-suffix-context.c27
-rw-r--r--lib/unicase/ignorable.c71
-rw-r--r--lib/unicase/ignorable.h544
-rw-r--r--lib/unicase/invariant.h45
-rw-r--r--lib/unicase/locale-language.c55
-rw-r--r--lib/unicase/locale-languages.gperf270
-rw-r--r--lib/unicase/locale-languages.h1034
-rw-r--r--lib/unicase/simple-mapping.h39
-rw-r--r--lib/unicase/special-casing-table.gperf136
-rw-r--r--lib/unicase/special-casing-table.h339
-rw-r--r--lib/unicase/special-casing.c25
-rw-r--r--lib/unicase/special-casing.h60
-rw-r--r--lib/unicase/tocasefold.c27
-rw-r--r--lib/unicase/tocasefold.h567
-rw-r--r--lib/unicase/tolower.c27
-rw-r--r--lib/unicase/tolower.h567
-rw-r--r--lib/unicase/totitle.c27
-rw-r--r--lib/unicase/totitle.h615
-rw-r--r--lib/unicase/toupper.c27
-rw-r--r--lib/unicase/toupper.h615
-rw-r--r--lib/unicase/u-casecmp.h69
-rw-r--r--lib/unicase/u-casecoll.h68
-rw-r--r--lib/unicase/u-casefold.h28
-rw-r--r--lib/unicase/u-casemap.h416
-rw-r--r--lib/unicase/u-casexfrm.h88
-rw-r--r--lib/unicase/u-ct-casefold.h107
-rw-r--r--lib/unicase/u-ct-totitle.h501
-rw-r--r--lib/unicase/u-is-cased.h128
-rw-r--r--lib/unicase/u-is-invariant.h64
-rw-r--r--lib/unicase/u-totitle.h28
-rw-r--r--lib/unicase/u16-casecmp.c35
-rw-r--r--lib/unicase/u16-casecoll.c32
-rw-r--r--lib/unicase/u16-casefold.c26
-rw-r--r--lib/unicase/u16-casemap.c40
-rw-r--r--lib/unicase/u16-casexfrm.c35
-rw-r--r--lib/unicase/u16-ct-casefold.c35
-rw-r--r--lib/unicase/u16-ct-tolower.c40
-rw-r--r--lib/unicase/u16-ct-totitle.c43
-rw-r--r--lib/unicase/u16-ct-toupper.c40
-rw-r--r--lib/unicase/u16-is-cased.c36
-rw-r--r--lib/unicase/u16-is-casefolded.c30
-rw-r--r--lib/unicase/u16-is-invariant.c33
-rw-r--r--lib/unicase/u16-is-lowercase.c30
-rw-r--r--lib/unicase/u16-is-titlecase.c30
-rw-r--r--lib/unicase/u16-is-uppercase.c30
-rw-r--r--lib/unicase/u16-tolower.c39
-rw-r--r--lib/unicase/u16-totitle.c27
-rw-r--r--lib/unicase/u16-toupper.c39
-rw-r--r--lib/unicase/u32-casecmp.c35
-rw-r--r--lib/unicase/u32-casecoll.c32
-rw-r--r--lib/unicase/u32-casefold.c26
-rw-r--r--lib/unicase/u32-casemap.c40
-rw-r--r--lib/unicase/u32-casexfrm.c35
-rw-r--r--lib/unicase/u32-ct-casefold.c35
-rw-r--r--lib/unicase/u32-ct-tolower.c40
-rw-r--r--lib/unicase/u32-ct-totitle.c43
-rw-r--r--lib/unicase/u32-ct-toupper.c40
-rw-r--r--lib/unicase/u32-is-cased.c36
-rw-r--r--lib/unicase/u32-is-casefolded.c30
-rw-r--r--lib/unicase/u32-is-invariant.c33
-rw-r--r--lib/unicase/u32-is-lowercase.c30
-rw-r--r--lib/unicase/u32-is-titlecase.c30
-rw-r--r--lib/unicase/u32-is-uppercase.c30
-rw-r--r--lib/unicase/u32-tolower.c39
-rw-r--r--lib/unicase/u32-totitle.c26
-rw-r--r--lib/unicase/u32-toupper.c39
-rw-r--r--lib/unicase/u8-casecmp.c35
-rw-r--r--lib/unicase/u8-casecoll.c32
-rw-r--r--lib/unicase/u8-casefold.c107
-rw-r--r--lib/unicase/u8-casemap.c40
-rw-r--r--lib/unicase/u8-casexfrm.c35
-rw-r--r--lib/unicase/u8-ct-casefold.c35
-rw-r--r--lib/unicase/u8-ct-tolower.c40
-rw-r--r--lib/unicase/u8-ct-totitle.c43
-rw-r--r--lib/unicase/u8-ct-toupper.c40
-rw-r--r--lib/unicase/u8-is-cased.c36
-rw-r--r--lib/unicase/u8-is-casefolded.c30
-rw-r--r--lib/unicase/u8-is-invariant.c33
-rw-r--r--lib/unicase/u8-is-lowercase.c30
-rw-r--r--lib/unicase/u8-is-titlecase.c30
-rw-r--r--lib/unicase/u8-is-uppercase.c30
-rw-r--r--lib/unicase/u8-tolower.c120
-rw-r--r--lib/unicase/u8-totitle.c107
-rw-r--r--lib/unicase/u8-toupper.c120
-rw-r--r--lib/unicase/ulc-casecmp.c74
-rw-r--r--lib/unicase/ulc-casecoll.c31
-rw-r--r--lib/unicase/ulc-casexfrm.c64
-rw-r--r--lib/unicase/unicasemap.h52
-rw-r--r--lib/uniconv.h169
-rw-r--r--lib/uniconv/u-conv-from-enc.h91
-rw-r--r--lib/uniconv/u-conv-to-enc.h156
-rw-r--r--lib/uniconv/u-strconv-from-enc.h40
-rw-r--r--lib/uniconv/u-strconv-to-enc.h63
-rw-r--r--lib/uniconv/u16-conv-from-enc.c47
-rw-r--r--lib/uniconv/u16-conv-to-enc.c177
-rw-r--r--lib/uniconv/u16-strconv-from-enc.c34
-rw-r--r--lib/uniconv/u16-strconv-from-locale.c29
-rw-r--r--lib/uniconv/u16-strconv-to-enc.c50
-rw-r--r--lib/uniconv/u16-strconv-to-locale.c29
-rw-r--r--lib/uniconv/u32-conv-from-enc.c46
-rw-r--r--lib/uniconv/u32-conv-to-enc.c49
-rw-r--r--lib/uniconv/u32-strconv-from-enc.c34
-rw-r--r--lib/uniconv/u32-strconv-from-locale.c29
-rw-r--r--lib/uniconv/u32-strconv-to-enc.c49
-rw-r--r--lib/uniconv/u32-strconv-to-locale.c29
-rw-r--r--lib/uniconv/u8-conv-from-enc.c105
-rw-r--r--lib/uniconv/u8-conv-to-enc.c92
-rw-r--r--lib/uniconv/u8-strconv-from-enc.c34
-rw-r--r--lib/uniconv/u8-strconv-from-locale.c29
-rw-r--r--lib/uniconv/u8-strconv-to-enc.c79
-rw-r--r--lib/uniconv/u8-strconv-to-locale.c29
-rw-r--r--lib/unictype.h720
-rw-r--r--lib/unictype/bidi_byname.c171
-rw-r--r--lib/unictype/bidi_name.c35
-rw-r--r--lib/unictype/bidi_of.c52
-rw-r--r--lib/unictype/bidi_of.h789
-rw-r--r--lib/unictype/bidi_test.c27
-rw-r--r--lib/unictype/bitmap.h47
-rw-r--r--lib/unictype/block_test.c31
-rw-r--r--lib/unictype/blocks.c62
-rw-r--r--lib/unictype/blocks.h952
-rw-r--r--lib/unictype/categ_C.c27
-rw-r--r--lib/unictype/categ_C.h890
-rw-r--r--lib/unictype/categ_Cc.c27
-rw-r--r--lib/unictype/categ_Cc.h156
-rw-r--r--lib/unictype/categ_Cf.c27
-rw-r--r--lib/unictype/categ_Cf.h452
-rw-r--r--lib/unictype/categ_Cn.c27
-rw-r--r--lib/unictype/categ_Cn.h1014
-rw-r--r--lib/unictype/categ_Co.c27
-rw-r--r--lib/unictype/categ_Co.h310
-rw-r--r--lib/unictype/categ_Cs.c30
-rw-r--r--lib/unictype/categ_Cs.h156
-rw-r--r--lib/unictype/categ_L.c27
-rw-r--r--lib/unictype/categ_L.h580
-rw-r--r--lib/unictype/categ_Ll.c27
-rw-r--r--lib/unictype/categ_Ll.h335
-rw-r--r--lib/unictype/categ_Lm.c27
-rw-r--r--lib/unictype/categ_Lm.h216
-rw-r--r--lib/unictype/categ_Lo.c27
-rw-r--r--lib/unictype/categ_Lo.h568
-rw-r--r--lib/unictype/categ_Lt.c27
-rw-r--r--lib/unictype/categ_Lt.h160
-rw-r--r--lib/unictype/categ_Lu.c27
-rw-r--r--lib/unictype/categ_Lu.h331
-rw-r--r--lib/unictype/categ_M.c27
-rw-r--r--lib/unictype/categ_M.h528
-rw-r--r--lib/unictype/categ_Mc.c27
-rw-r--r--lib/unictype/categ_Mc.h331
-rw-r--r--lib/unictype/categ_Me.c27
-rw-r--r--lib/unictype/categ_Me.h168
-rw-r--r--lib/unictype/categ_Mn.c27
-rw-r--r--lib/unictype/categ_Mn.h528
-rw-r--r--lib/unictype/categ_N.c27
-rw-r--r--lib/unictype/categ_N.h403
-rw-r--r--lib/unictype/categ_Nd.c27
-rw-r--r--lib/unictype/categ_Nd.h351
-rw-r--r--lib/unictype/categ_Nl.c27
-rw-r--r--lib/unictype/categ_Nl.h307
-rw-r--r--lib/unictype/categ_No.c27
-rw-r--r--lib/unictype/categ_No.h355
-rw-r--r--lib/unictype/categ_P.c27
-rw-r--r--lib/unictype/categ_P.h403
-rw-r--r--lib/unictype/categ_Pc.c27
-rw-r--r--lib/unictype/categ_Pc.h164
-rw-r--r--lib/unictype/categ_Pd.c27
-rw-r--r--lib/unictype/categ_Pd.h180
-rw-r--r--lib/unictype/categ_Pe.c27
-rw-r--r--lib/unictype/categ_Pe.h196
-rw-r--r--lib/unictype/categ_Pf.c27
-rw-r--r--lib/unictype/categ_Pf.h164
-rw-r--r--lib/unictype/categ_Pi.c27
-rw-r--r--lib/unictype/categ_Pi.h164
-rw-r--r--lib/unictype/categ_Po.c27
-rw-r--r--lib/unictype/categ_Po.h387
-rw-r--r--lib/unictype/categ_Ps.c27
-rw-r--r--lib/unictype/categ_Ps.h196
-rw-r--r--lib/unictype/categ_S.c27
-rw-r--r--lib/unictype/categ_S.h427
-rw-r--r--lib/unictype/categ_Sc.c27
-rw-r--r--lib/unictype/categ_Sc.h188
-rw-r--r--lib/unictype/categ_Sk.c27
-rw-r--r--lib/unictype/categ_Sk.h176
-rw-r--r--lib/unictype/categ_Sm.c27
-rw-r--r--lib/unictype/categ_Sm.h331
-rw-r--r--lib/unictype/categ_So.c27
-rw-r--r--lib/unictype/categ_So.h403
-rw-r--r--lib/unictype/categ_Z.c27
-rw-r--r--lib/unictype/categ_Z.h172
-rw-r--r--lib/unictype/categ_Zl.c30
-rw-r--r--lib/unictype/categ_Zl.h156
-rw-r--r--lib/unictype/categ_Zp.c30
-rw-r--r--lib/unictype/categ_Zp.h156
-rw-r--r--lib/unictype/categ_Zs.c27
-rw-r--r--lib/unictype/categ_Zs.h172
-rw-r--r--lib/unictype/categ_and.c45
-rw-r--r--lib/unictype/categ_and_not.c42
-rw-r--r--lib/unictype/categ_byname.c105
-rw-r--r--lib/unictype/categ_name.c77
-rw-r--r--lib/unictype/categ_none.c30
-rw-r--r--lib/unictype/categ_of.c81
-rw-r--r--lib/unictype/categ_of.h1088
-rw-r--r--lib/unictype/categ_or.c42
-rw-r--r--lib/unictype/categ_test.c32
-rw-r--r--lib/unictype/combining.c47
-rw-r--r--lib/unictype/combining.h839
-rw-r--r--lib/unictype/ctype_alnum.c32
-rw-r--r--lib/unictype/ctype_alnum.h588
-rw-r--r--lib/unictype/ctype_alpha.c32
-rw-r--r--lib/unictype/ctype_alpha.h588
-rw-r--r--lib/unictype/ctype_blank.c32
-rw-r--r--lib/unictype/ctype_blank.h172
-rw-r--r--lib/unictype/ctype_cntrl.c32
-rw-r--r--lib/unictype/ctype_cntrl.h160
-rw-r--r--lib/unictype/ctype_digit.c32
-rw-r--r--lib/unictype/ctype_digit.h156
-rw-r--r--lib/unictype/ctype_graph.c32
-rw-r--r--lib/unictype/ctype_graph.h890
-rw-r--r--lib/unictype/ctype_lower.c32
-rw-r--r--lib/unictype/ctype_lower.h327
-rw-r--r--lib/unictype/ctype_print.c32
-rw-r--r--lib/unictype/ctype_print.h890
-rw-r--r--lib/unictype/ctype_punct.c32
-rw-r--r--lib/unictype/ctype_punct.h734
-rw-r--r--lib/unictype/ctype_space.c32
-rw-r--r--lib/unictype/ctype_space.h172
-rw-r--r--lib/unictype/ctype_upper.c32
-rw-r--r--lib/unictype/ctype_upper.h327
-rw-r--r--lib/unictype/ctype_xdigit.c32
-rw-r--r--lib/unictype/ctype_xdigit.h156
-rw-r--r--lib/unictype/decdigit.c49
-rw-r--r--lib/unictype/decdigit.h247
-rw-r--r--lib/unictype/digit.c49
-rw-r--r--lib/unictype/digit.h311
-rw-r--r--lib/unictype/identsyntaxmap.h42
-rw-r--r--lib/unictype/mirror.c49
-rw-r--r--lib/unictype/mirror.h503
-rw-r--r--lib/unictype/numeric.c55
-rw-r--r--lib/unictype/numeric.h635
-rw-r--r--lib/unictype/pr_alphabetic.c35
-rw-r--r--lib/unictype/pr_alphabetic.h588
-rw-r--r--lib/unictype/pr_ascii_hex_digit.c35
-rw-r--r--lib/unictype/pr_ascii_hex_digit.h156
-rw-r--r--lib/unictype/pr_bidi_arabic_digit.c47
-rw-r--r--lib/unictype/pr_bidi_arabic_digit.h156
-rw-r--r--lib/unictype/pr_bidi_arabic_right_to_left.c47
-rw-r--r--lib/unictype/pr_bidi_arabic_right_to_left.h172
-rw-r--r--lib/unictype/pr_bidi_block_separator.c47
-rw-r--r--lib/unictype/pr_bidi_block_separator.h160
-rw-r--r--lib/unictype/pr_bidi_boundary_neutral.c47
-rw-r--r--lib/unictype/pr_bidi_boundary_neutral.h590
-rw-r--r--lib/unictype/pr_bidi_common_separator.c47
-rw-r--r--lib/unictype/pr_bidi_common_separator.h168
-rw-r--r--lib/unictype/pr_bidi_control.c35
-rw-r--r--lib/unictype/pr_bidi_control.h156
-rw-r--r--lib/unictype/pr_bidi_embedding_or_override.c49
-rw-r--r--lib/unictype/pr_bidi_embedding_or_override.h156
-rw-r--r--lib/unictype/pr_bidi_eur_num_separator.c47
-rw-r--r--lib/unictype/pr_bidi_eur_num_separator.h172
-rw-r--r--lib/unictype/pr_bidi_eur_num_terminator.c47
-rw-r--r--lib/unictype/pr_bidi_eur_num_terminator.h188
-rw-r--r--lib/unictype/pr_bidi_european_digit.c47
-rw-r--r--lib/unictype/pr_bidi_european_digit.h307
-rw-r--r--lib/unictype/pr_bidi_hebrew_right_to_left.c47
-rw-r--r--lib/unictype/pr_bidi_hebrew_right_to_left.h315
-rw-r--r--lib/unictype/pr_bidi_left_to_right.c47
-rw-r--r--lib/unictype/pr_bidi_left_to_right.h706
-rw-r--r--lib/unictype/pr_bidi_non_spacing_mark.c47
-rw-r--r--lib/unictype/pr_bidi_non_spacing_mark.h528
-rw-r--r--lib/unictype/pr_bidi_other_neutral.c47
-rw-r--r--lib/unictype/pr_bidi_other_neutral.h407
-rw-r--r--lib/unictype/pr_bidi_pdf.c47
-rw-r--r--lib/unictype/pr_bidi_pdf.h156
-rw-r--r--lib/unictype/pr_bidi_segment_separator.c47
-rw-r--r--lib/unictype/pr_bidi_segment_separator.h156
-rw-r--r--lib/unictype/pr_bidi_whitespace.c47
-rw-r--r--lib/unictype/pr_bidi_whitespace.h172
-rw-r--r--lib/unictype/pr_byname.c59
-rw-r--r--lib/unictype/pr_byname.gperf89
-rw-r--r--lib/unictype/pr_byname.h289
-rw-r--r--lib/unictype/pr_combining.c35
-rw-r--r--lib/unictype/pr_combining.h528
-rw-r--r--lib/unictype/pr_composite.c35
-rw-r--r--lib/unictype/pr_composite.h375
-rw-r--r--lib/unictype/pr_currency_symbol.c47
-rw-r--r--lib/unictype/pr_currency_symbol.h188
-rw-r--r--lib/unictype/pr_dash.c35
-rw-r--r--lib/unictype/pr_dash.h184
-rw-r--r--lib/unictype/pr_decimal_digit.c47
-rw-r--r--lib/unictype/pr_decimal_digit.h351
-rw-r--r--lib/unictype/pr_default_ignorable_code_point.c35
-rw-r--r--lib/unictype/pr_default_ignorable_code_point.h464
-rw-r--r--lib/unictype/pr_deprecated.c35
-rw-r--r--lib/unictype/pr_deprecated.h312
-rw-r--r--lib/unictype/pr_diacritic.c35
-rw-r--r--lib/unictype/pr_diacritic.h367
-rw-r--r--lib/unictype/pr_extender.c35
-rw-r--r--lib/unictype/pr_extender.h192
-rw-r--r--lib/unictype/pr_format_control.c35
-rw-r--r--lib/unictype/pr_format_control.h444
-rw-r--r--lib/unictype/pr_grapheme_base.c35
-rw-r--r--lib/unictype/pr_grapheme_base.h616
-rw-r--r--lib/unictype/pr_grapheme_extend.c35
-rw-r--r--lib/unictype/pr_grapheme_extend.h528
-rw-r--r--lib/unictype/pr_grapheme_link.c35
-rw-r--r--lib/unictype/pr_grapheme_link.h319
-rw-r--r--lib/unictype/pr_hex_digit.c35
-rw-r--r--lib/unictype/pr_hex_digit.h160
-rw-r--r--lib/unictype/pr_hyphen.c35
-rw-r--r--lib/unictype/pr_hyphen.h180
-rw-r--r--lib/unictype/pr_id_continue.c35
-rw-r--r--lib/unictype/pr_id_continue.h732
-rw-r--r--lib/unictype/pr_id_start.c35
-rw-r--r--lib/unictype/pr_id_start.h580
-rw-r--r--lib/unictype/pr_ideographic.c35
-rw-r--r--lib/unictype/pr_ideographic.h316
-rw-r--r--lib/unictype/pr_ids_binary_operator.c35
-rw-r--r--lib/unictype/pr_ids_binary_operator.h156
-rw-r--r--lib/unictype/pr_ids_trinary_operator.c35
-rw-r--r--lib/unictype/pr_ids_trinary_operator.h156
-rw-r--r--lib/unictype/pr_ignorable_control.c35
-rw-r--r--lib/unictype/pr_ignorable_control.h452
-rw-r--r--lib/unictype/pr_iso_control.c47
-rw-r--r--lib/unictype/pr_iso_control.h156
-rw-r--r--lib/unictype/pr_join_control.c47
-rw-r--r--lib/unictype/pr_join_control.h156
-rw-r--r--lib/unictype/pr_left_of_pair.c35
-rw-r--r--lib/unictype/pr_left_of_pair.h184
-rw-r--r--lib/unictype/pr_line_separator.c55
-rw-r--r--lib/unictype/pr_line_separator.h156
-rw-r--r--lib/unictype/pr_logical_order_exception.c35
-rw-r--r--lib/unictype/pr_logical_order_exception.h156
-rw-r--r--lib/unictype/pr_lowercase.c35
-rw-r--r--lib/unictype/pr_lowercase.h339
-rw-r--r--lib/unictype/pr_math.c35
-rw-r--r--lib/unictype/pr_math.h335
-rw-r--r--lib/unictype/pr_non_break.c35
-rw-r--r--lib/unictype/pr_non_break.h172
-rw-r--r--lib/unictype/pr_not_a_character.c35
-rw-r--r--lib/unictype/pr_not_a_character.h306
-rw-r--r--lib/unictype/pr_numeric.c35
-rw-r--r--lib/unictype/pr_numeric.h540
-rw-r--r--lib/unictype/pr_other_alphabetic.c35
-rw-r--r--lib/unictype/pr_other_alphabetic.h359
-rw-r--r--lib/unictype/pr_other_default_ignorable_code_point.c35
-rw-r--r--lib/unictype/pr_other_default_ignorable_code_point.h324
-rw-r--r--lib/unictype/pr_other_grapheme_extend.c35
-rw-r--r--lib/unictype/pr_other_grapheme_extend.h307
-rw-r--r--lib/unictype/pr_other_id_continue.c35
-rw-r--r--lib/unictype/pr_other_id_continue.h164
-rw-r--r--lib/unictype/pr_other_id_start.c35
-rw-r--r--lib/unictype/pr_other_id_start.h160
-rw-r--r--lib/unictype/pr_other_lowercase.c35
-rw-r--r--lib/unictype/pr_other_lowercase.h176
-rw-r--r--lib/unictype/pr_other_math.c35
-rw-r--r--lib/unictype/pr_other_math.h323
-rw-r--r--lib/unictype/pr_other_uppercase.c35
-rw-r--r--lib/unictype/pr_other_uppercase.h160
-rw-r--r--lib/unictype/pr_paired_punctuation.c35
-rw-r--r--lib/unictype/pr_paired_punctuation.h184
-rw-r--r--lib/unictype/pr_paragraph_separator.c55
-rw-r--r--lib/unictype/pr_paragraph_separator.h156
-rw-r--r--lib/unictype/pr_pattern_syntax.c35
-rw-r--r--lib/unictype/pr_pattern_syntax.h188
-rw-r--r--lib/unictype/pr_pattern_white_space.c35
-rw-r--r--lib/unictype/pr_pattern_white_space.h160
-rw-r--r--lib/unictype/pr_private_use.c49
-rw-r--r--lib/unictype/pr_private_use.h310
-rw-r--r--lib/unictype/pr_punctuation.c47
-rw-r--r--lib/unictype/pr_punctuation.h403
-rw-r--r--lib/unictype/pr_quotation_mark.c35
-rw-r--r--lib/unictype/pr_quotation_mark.h168
-rw-r--r--lib/unictype/pr_radical.c35
-rw-r--r--lib/unictype/pr_radical.h156
-rw-r--r--lib/unictype/pr_sentence_terminal.c35
-rw-r--r--lib/unictype/pr_sentence_terminal.h220
-rw-r--r--lib/unictype/pr_soft_dotted.c35
-rw-r--r--lib/unictype/pr_soft_dotted.h319
-rw-r--r--lib/unictype/pr_space.c47
-rw-r--r--lib/unictype/pr_space.h172
-rw-r--r--lib/unictype/pr_terminal_punctuation.c35
-rw-r--r--lib/unictype/pr_terminal_punctuation.h371
-rw-r--r--lib/unictype/pr_test.c27
-rw-r--r--lib/unictype/pr_titlecase.c47
-rw-r--r--lib/unictype/pr_titlecase.h160
-rw-r--r--lib/unictype/pr_unassigned_code_value.c35
-rw-r--r--lib/unictype/pr_unassigned_code_value.h884
-rw-r--r--lib/unictype/pr_unified_ideograph.c35
-rw-r--r--lib/unictype/pr_unified_ideograph.h304
-rw-r--r--lib/unictype/pr_uppercase.c35
-rw-r--r--lib/unictype/pr_uppercase.h335
-rw-r--r--lib/unictype/pr_variation_selector.c35
-rw-r--r--lib/unictype/pr_variation_selector.h308
-rw-r--r--lib/unictype/pr_white_space.c35
-rw-r--r--lib/unictype/pr_white_space.h172
-rw-r--r--lib/unictype/pr_xid_continue.c35
-rw-r--r--lib/unictype/pr_xid_continue.h732
-rw-r--r--lib/unictype/pr_xid_start.c35
-rw-r--r--lib/unictype/pr_xid_start.h580
-rw-r--r--lib/unictype/pr_zero_width.c35
-rw-r--r--lib/unictype/pr_zero_width.h452
-rw-r--r--lib/unictype/scripts.c75
-rw-r--r--lib/unictype/scripts.h3704
-rw-r--r--lib/unictype/scripts_byname.gperf89
-rw-r--r--lib/unictype/scripts_byname.h281
-rw-r--r--lib/unictype/sy_c_ident.c31
-rw-r--r--lib/unictype/sy_c_ident.h140
-rw-r--r--lib/unictype/sy_c_whitespace.c27
-rw-r--r--lib/unictype/sy_java_ident.c31
-rw-r--r--lib/unictype/sy_java_ident.h343
-rw-r--r--lib/unictype/sy_java_whitespace.c27
-rw-r--r--lib/unilbrk.h110
-rw-r--r--lib/unilbrk/lbrkprop1.h33
-rw-r--r--lib/unilbrk/lbrkprop2.h2558
-rw-r--r--lib/unilbrk/lbrktables.c63
-rw-r--r--lib/unilbrk/lbrktables.h94
-rw-r--r--lib/unilbrk/u16-possible-linebreaks.c164
-rw-r--r--lib/unilbrk/u16-width-linebreaks.c108
-rw-r--r--lib/unilbrk/u32-possible-linebreaks.c158
-rw-r--r--lib/unilbrk/u32-width-linebreaks.c106
-rw-r--r--lib/unilbrk/u8-possible-linebreaks.c261
-rw-r--r--lib/unilbrk/u8-width-linebreaks.c204
-rw-r--r--lib/unilbrk/ulc-common.c51
-rw-r--r--lib/unilbrk/ulc-common.h31
-rw-r--r--lib/unilbrk/ulc-possible-linebreaks.c212
-rw-r--r--lib/unilbrk/ulc-width-linebreaks.c231
-rw-r--r--lib/uniname.h44
-rwxr-xr-xlib/uniname/gen-uninames.lisp301
-rw-r--r--lib/uniname/uniname.c516
-rw-r--r--lib/uniname/uninames.h61495
-rw-r--r--lib/uninorm.h248
-rw-r--r--lib/uninorm/canonical-decomposition.c108
-rw-r--r--lib/uninorm/compat-decomposition.c31
-rw-r--r--lib/uninorm/composition-table.gperf958
-rw-r--r--lib/uninorm/composition-table.h2159
-rw-r--r--lib/uninorm/composition.c85
-rw-r--r--lib/uninorm/decompose-internal.c28
-rw-r--r--lib/uninorm/decompose-internal.h36
-rw-r--r--lib/uninorm/decomposing-form.c29
-rw-r--r--lib/uninorm/decomposition-table.c23
-rw-r--r--lib/uninorm/decomposition-table.h48
-rw-r--r--lib/uninorm/decomposition-table1.h20
-rw-r--r--lib/uninorm/decomposition-table2.h3152
-rw-r--r--lib/uninorm/decomposition.c102
-rw-r--r--lib/uninorm/nfc.c31
-rw-r--r--lib/uninorm/nfd.c31
-rw-r--r--lib/uninorm/nfkc.c32
-rw-r--r--lib/uninorm/nfkd.c32
-rw-r--r--lib/uninorm/normalize-internal.h37
-rw-r--r--lib/uninorm/u-normalize-internal.h375
-rw-r--r--lib/uninorm/u-normcmp.h64
-rw-r--r--lib/uninorm/u-normcoll.h65
-rw-r--r--lib/uninorm/u-normxfrm.h87
-rw-r--r--lib/uninorm/u16-normalize.c38
-rw-r--r--lib/uninorm/u16-normcmp.c33
-rw-r--r--lib/uninorm/u16-normcoll.c31
-rw-r--r--lib/uninorm/u16-normxfrm.c34
-rw-r--r--lib/uninorm/u32-normalize.c38
-rw-r--r--lib/uninorm/u32-normcmp.c33
-rw-r--r--lib/uninorm/u32-normcoll.c31
-rw-r--r--lib/uninorm/u32-normxfrm.c34
-rw-r--r--lib/uninorm/u8-normalize.c38
-rw-r--r--lib/uninorm/u8-normcmp.c33
-rw-r--r--lib/uninorm/u8-normcoll.c31
-rw-r--r--lib/uninorm/u8-normxfrm.c34
-rw-r--r--lib/uninorm/uninorm-filter.c367
-rw-r--r--lib/unistd.in.h578
-rw-r--r--lib/unistdio.h256
-rw-r--r--lib/unistdio/u-asnprintf.h27
-rw-r--r--lib/unistdio/u-asprintf.h27
-rw-r--r--lib/unistdio/u-printf-args.c22
-rw-r--r--lib/unistdio/u-printf-args.h27
-rw-r--r--lib/unistdio/u-printf-parse.h27
-rw-r--r--lib/unistdio/u-snprintf.h27
-rw-r--r--lib/unistdio/u-sprintf.h27
-rw-r--r--lib/unistdio/u-vasprintf.h35
-rw-r--r--lib/unistdio/u-vsnprintf.h52
-rw-r--r--lib/unistdio/u-vsprintf.h58
-rw-r--r--lib/unistdio/u16-asnprintf.c28
-rw-r--r--lib/unistdio/u16-asprintf.c28
-rw-r--r--lib/unistdio/u16-printf-parse.c26
-rw-r--r--lib/unistdio/u16-snprintf.c28
-rw-r--r--lib/unistdio/u16-sprintf.c28
-rw-r--r--lib/unistdio/u16-u16-asnprintf.c28
-rw-r--r--lib/unistdio/u16-u16-asprintf.c28
-rw-r--r--lib/unistdio/u16-u16-snprintf.c28
-rw-r--r--lib/unistdio/u16-u16-sprintf.c28
-rw-r--r--lib/unistdio/u16-u16-vasnprintf.c49
-rw-r--r--lib/unistdio/u16-u16-vasprintf.c30
-rw-r--r--lib/unistdio/u16-u16-vsnprintf.c33
-rw-r--r--lib/unistdio/u16-u16-vsprintf.c32
-rw-r--r--lib/unistdio/u16-vasnprintf.c50
-rw-r--r--lib/unistdio/u16-vasprintf.c30
-rw-r--r--lib/unistdio/u16-vsnprintf.c33
-rw-r--r--lib/unistdio/u16-vsprintf.c32
-rw-r--r--lib/unistdio/u32-asnprintf.c28
-rw-r--r--lib/unistdio/u32-asprintf.c28
-rw-r--r--lib/unistdio/u32-printf-parse.c26
-rw-r--r--lib/unistdio/u32-snprintf.c28
-rw-r--r--lib/unistdio/u32-sprintf.c28
-rw-r--r--lib/unistdio/u32-u32-asnprintf.c28
-rw-r--r--lib/unistdio/u32-u32-asprintf.c28
-rw-r--r--lib/unistdio/u32-u32-snprintf.c28
-rw-r--r--lib/unistdio/u32-u32-sprintf.c28
-rw-r--r--lib/unistdio/u32-u32-vasnprintf.c49
-rw-r--r--lib/unistdio/u32-u32-vasprintf.c30
-rw-r--r--lib/unistdio/u32-u32-vsnprintf.c33
-rw-r--r--lib/unistdio/u32-u32-vsprintf.c32
-rw-r--r--lib/unistdio/u32-vasnprintf.c50
-rw-r--r--lib/unistdio/u32-vasprintf.c30
-rw-r--r--lib/unistdio/u32-vsnprintf.c33
-rw-r--r--lib/unistdio/u32-vsprintf.c32
-rw-r--r--lib/unistdio/u8-asnprintf.c28
-rw-r--r--lib/unistdio/u8-asprintf.c28
-rw-r--r--lib/unistdio/u8-printf-parse.c26
-rw-r--r--lib/unistdio/u8-snprintf.c28
-rw-r--r--lib/unistdio/u8-sprintf.c28
-rw-r--r--lib/unistdio/u8-u8-asnprintf.c28
-rw-r--r--lib/unistdio/u8-u8-asprintf.c28
-rw-r--r--lib/unistdio/u8-u8-snprintf.c28
-rw-r--r--lib/unistdio/u8-u8-sprintf.c28
-rw-r--r--lib/unistdio/u8-u8-vasnprintf.c49
-rw-r--r--lib/unistdio/u8-u8-vasprintf.c30
-rw-r--r--lib/unistdio/u8-u8-vsnprintf.c33
-rw-r--r--lib/unistdio/u8-u8-vsprintf.c32
-rw-r--r--lib/unistdio/u8-vasnprintf.c50
-rw-r--r--lib/unistdio/u8-vasprintf.c30
-rw-r--r--lib/unistdio/u8-vsnprintf.c33
-rw-r--r--lib/unistdio/u8-vsprintf.c32
-rw-r--r--lib/unistdio/ulc-asnprintf.c28
-rw-r--r--lib/unistdio/ulc-asprintf.c28
-rw-r--r--lib/unistdio/ulc-fprintf.c74
-rw-r--r--lib/unistdio/ulc-printf-parse.c27
-rw-r--r--lib/unistdio/ulc-snprintf.c28
-rw-r--r--lib/unistdio/ulc-sprintf.c28
-rw-r--r--lib/unistdio/ulc-vasnprintf.c46
-rw-r--r--lib/unistdio/ulc-vasprintf.c30
-rw-r--r--lib/unistdio/ulc-vfprintf.c71
-rw-r--r--lib/unistdio/ulc-vsnprintf.c33
-rw-r--r--lib/unistdio/ulc-vsprintf.c32
-rw-r--r--lib/unistr.h684
-rw-r--r--lib/unistr/u-cmp2.h32
-rw-r--r--lib/unistr/u-cpy-alloc.h39
-rw-r--r--lib/unistr/u-cpy.h32
-rw-r--r--lib/unistr/u-endswith.h28
-rw-r--r--lib/unistr/u-move.h44
-rw-r--r--lib/unistr/u-set.h39
-rw-r--r--lib/unistr/u-startswith.h30
-rw-r--r--lib/unistr/u-stpcpy.h24
-rw-r--r--lib/unistr/u-stpncpy.h30
-rw-r--r--lib/unistr/u-strcat.h26
-rw-r--r--lib/unistr/u-strcoll.h81
-rw-r--r--lib/unistr/u-strcpy.h26
-rw-r--r--lib/unistr/u-strcspn.h54
-rw-r--r--lib/unistr/u-strdup.h40
-rw-r--r--lib/unistr/u-strlen.h26
-rw-r--r--lib/unistr/u-strncat.h28
-rw-r--r--lib/unistr/u-strncpy.h32
-rw-r--r--lib/unistr/u-strnlen.h26
-rw-r--r--lib/unistr/u-strpbrk.h46
-rw-r--r--lib/unistr/u-strspn.h54
-rw-r--r--lib/unistr/u-strstr.h49
-rw-r--r--lib/unistr/u-strtok.h52
-rw-r--r--lib/unistr/u16-check.c51
-rw-r--r--lib/unistr/u16-chr.c56
-rw-r--r--lib/unistr/u16-cmp.c54
-rw-r--r--lib/unistr/u16-cmp2.c28
-rw-r--r--lib/unistr/u16-cpy-alloc.c25
-rw-r--r--lib/unistr/u16-cpy.c25
-rw-r--r--lib/unistr/u16-endswith.c27
-rw-r--r--lib/unistr/u16-mblen.c49
-rw-r--r--lib/unistr/u16-mbsnlen.c39
-rw-r--r--lib/unistr/u16-mbtouc-aux.c51
-rw-r--r--lib/unistr/u16-mbtouc-unsafe-aux.c55
-rw-r--r--lib/unistr/u16-mbtouc-unsafe.c66
-rw-r--r--lib/unistr/u16-mbtouc.c61
-rw-r--r--lib/unistr/u16-mbtoucr.c54
-rw-r--r--lib/unistr/u16-move.c25
-rw-r--r--lib/unistr/u16-next.c37
-rw-r--r--lib/unistr/u16-prev.c53
-rw-r--r--lib/unistr/u16-set.c26
-rw-r--r--lib/unistr/u16-startswith.c25
-rw-r--r--lib/unistr/u16-stpcpy.c25
-rw-r--r--lib/unistr/u16-stpncpy.c25
-rw-r--r--lib/unistr/u16-strcat.c26
-rw-r--r--lib/unistr/u16-strchr.c63
-rw-r--r--lib/unistr/u16-strcmp.c50
-rw-r--r--lib/unistr/u16-strcoll.c33
-rw-r--r--lib/unistr/u16-strcpy.c25
-rw-r--r--lib/unistr/u16-strcspn.c28
-rw-r--r--lib/unistr/u16-strdup.c26
-rw-r--r--lib/unistr/u16-strlen.c25
-rw-r--r--lib/unistr/u16-strmblen.c43
-rw-r--r--lib/unistr/u16-strmbtouc.c50
-rw-r--r--lib/unistr/u16-strncat.c26
-rw-r--r--lib/unistr/u16-strncmp.c54
-rw-r--r--lib/unistr/u16-strncpy.c25
-rw-r--r--lib/unistr/u16-strnlen.c25
-rw-r--r--lib/unistr/u16-strpbrk.c27
-rw-r--r--lib/unistr/u16-strrchr.c64
-rw-r--r--lib/unistr/u16-strspn.c29
-rw-r--r--lib/unistr/u16-strstr.c28
-rw-r--r--lib/unistr/u16-strtok.c27
-rw-r--r--lib/unistr/u16-to-u32.c125
-rw-r--r--lib/unistr/u16-to-u8.c136
-rw-r--r--lib/unistr/u16-uctomb-aux.c58
-rw-r--r--lib/unistr/u16-uctomb.c72
-rw-r--r--lib/unistr/u32-check.c39
-rw-r--r--lib/unistr/u32-chr.c32
-rw-r--r--lib/unistr/u32-cmp.c40
-rw-r--r--lib/unistr/u32-cmp2.c28
-rw-r--r--lib/unistr/u32-cpy-alloc.c25
-rw-r--r--lib/unistr/u32-cpy.c25
-rw-r--r--lib/unistr/u32-endswith.c27
-rw-r--r--lib/unistr/u32-mblen.c37
-rw-r--r--lib/unistr/u32-mbsnlen.c27
-rw-r--r--lib/unistr/u32-mbtouc-unsafe.c48
-rw-r--r--lib/unistr/u32-mbtouc.c43
-rw-r--r--lib/unistr/u32-mbtoucr.c39
-rw-r--r--lib/unistr/u32-move.c25
-rw-r--r--lib/unistr/u32-next.c39
-rw-r--r--lib/unistr/u32-prev.c39
-rw-r--r--lib/unistr/u32-set.c26
-rw-r--r--lib/unistr/u32-startswith.c25
-rw-r--r--lib/unistr/u32-stpcpy.c25
-rw-r--r--lib/unistr/u32-stpncpy.c25
-rw-r--r--lib/unistr/u32-strcat.c26
-rw-r--r--lib/unistr/u32-strchr.c36
-rw-r--r--lib/unistr/u32-strcmp.c36
-rw-r--r--lib/unistr/u32-strcoll.c33
-rw-r--r--lib/unistr/u32-strcpy.c25
-rw-r--r--lib/unistr/u32-strcspn.c51
-rw-r--r--lib/unistr/u32-strdup.c26
-rw-r--r--lib/unistr/u32-strlen.c25
-rw-r--r--lib/unistr/u32-strmblen.c36
-rw-r--r--lib/unistr/u32-strmbtouc.c39
-rw-r--r--lib/unistr/u32-strncat.c26
-rw-r--r--lib/unistr/u32-strncmp.c40
-rw-r--r--lib/unistr/u32-strncpy.c25
-rw-r--r--lib/unistr/u32-strnlen.c25
-rw-r--r--lib/unistr/u32-strpbrk.c50
-rw-r--r--lib/unistr/u32-strrchr.c38
-rw-r--r--lib/unistr/u32-strspn.c50
-rw-r--r--lib/unistr/u32-strstr.c26
-rw-r--r--lib/unistr/u32-strtok.c27
-rw-r--r--lib/unistr/u32-to-u16.c130
-rw-r--r--lib/unistr/u32-to-u8.c130
-rw-r--r--lib/unistr/u32-uctomb.c47
-rw-r--r--lib/unistr/u8-check.c105
-rw-r--r--lib/unistr/u8-chr.c87
-rw-r--r--lib/unistr/u8-cmp.c30
-rw-r--r--lib/unistr/u8-cmp2.c28
-rw-r--r--lib/unistr/u8-cpy-alloc.c25
-rw-r--r--lib/unistr/u8-cpy.c25
-rw-r--r--lib/unistr/u8-endswith.c27
-rw-r--r--lib/unistr/u8-mblen.c98
-rw-r--r--lib/unistr/u8-mbsnlen.c39
-rw-r--r--lib/unistr/u8-mbtouc-aux.c158
-rw-r--r--lib/unistr/u8-mbtouc-unsafe-aux.c168
-rw-r--r--lib/unistr/u8-mbtouc-unsafe.c179
-rw-r--r--lib/unistr/u8-mbtouc.c168
-rw-r--r--lib/unistr/u8-mbtoucr.c285
-rw-r--r--lib/unistr/u8-move.c25
-rw-r--r--lib/unistr/u8-next.c37
-rw-r--r--lib/unistr/u8-prev.c93
-rw-r--r--lib/unistr/u8-set.c44
-rw-r--r--lib/unistr/u8-startswith.c25
-rw-r--r--lib/unistr/u8-stpcpy.c44
-rw-r--r--lib/unistr/u8-stpncpy.c44
-rw-r--r--lib/unistr/u8-strcat.c29
-rw-r--r--lib/unistr/u8-strchr.c100
-rw-r--r--lib/unistr/u8-strcmp.c30
-rw-r--r--lib/unistr/u8-strcoll.c33
-rw-r--r--lib/unistr/u8-strcpy.c29
-rw-r--r--lib/unistr/u8-strcspn.c28
-rw-r--r--lib/unistr/u8-strdup.c40
-rw-r--r--lib/unistr/u8-strlen.c29
-rw-r--r--lib/unistr/u8-strmblen.c96
-rw-r--r--lib/unistr/u8-strmbtouc.c129
-rw-r--r--lib/unistr/u8-strncat.c29
-rw-r--r--lib/unistr/u8-strncmp.c30
-rw-r--r--lib/unistr/u8-strncpy.c29
-rw-r--r--lib/unistr/u8-strnlen.c44
-rw-r--r--lib/unistr/u8-strpbrk.c27
-rw-r--r--lib/unistr/u8-strrchr.c101
-rw-r--r--lib/unistr/u8-strspn.c29
-rw-r--r--lib/unistr/u8-strstr.c28
-rw-r--r--lib/unistr/u8-strtok.c27
-rw-r--r--lib/unistr/u8-to-u16.c136
-rw-r--r--lib/unistr/u8-to-u32.c125
-rw-r--r--lib/unistr/u8-uctomb-aux.c69
-rw-r--r--lib/unistr/u8-uctomb.c88
-rw-r--r--lib/unistring-notinline.h23
-rw-r--r--lib/unistring/inline.h68
-rw-r--r--lib/unistring/version.in.h39
-rw-r--r--lib/unistring/woe32dll.in.h30
-rw-r--r--lib/unitypes.h26
-rw-r--r--lib/uniwbrk.h83
-rw-r--r--lib/uniwbrk/u-wordbreaks.h127
-rw-r--r--lib/uniwbrk/u16-wordbreaks.c31
-rw-r--r--lib/uniwbrk/u32-wordbreaks.c31
-rw-r--r--lib/uniwbrk/u8-wordbreaks.c124
-rw-r--r--lib/uniwbrk/ulc-wordbreaks.c201
-rw-r--r--lib/uniwbrk/wbrkprop.h3755
-rw-r--r--lib/uniwbrk/wbrktable.c52
-rw-r--r--lib/uniwbrk/wbrktable.h18
-rw-r--r--lib/uniwbrk/wordbreak-property.c44
-rw-r--r--lib/uniwidth.h64
-rw-r--r--lib/uniwidth/cjk.h37
-rw-r--r--lib/uniwidth/u16-strwidth.c29
-rw-r--r--lib/uniwidth/u16-width.c47
-rw-r--r--lib/uniwidth/u32-strwidth.c29
-rw-r--r--lib/uniwidth/u32-width.c43
-rw-r--r--lib/uniwidth/u8-strwidth.c29
-rw-r--r--lib/uniwidth/u8-width.c47
-rw-r--r--lib/uniwidth/width.c359
-rw-r--r--lib/vasnprintf.c5487
-rw-r--r--lib/verify.h140
-rw-r--r--lib/version.c23
-rw-r--r--lib/wchar.in.h310
-rw-r--r--lib/wctype.in.h184
-rw-r--r--lib/wcwidth.c51
-rw-r--r--lib/xsize.h108
-rw-r--r--m4/exported.m421
-rw-r--r--m4/init-package-version.m497
-rw-r--r--m4/libtool.m47372
-rw-r--r--m4/ltoptions.m4368
-rw-r--r--m4/ltsugar.m4123
-rw-r--r--m4/ltversion.m423
-rw-r--r--m4/lt~obsolete.m492
-rw-r--r--m4/woe32-dll.m445
-rw-r--r--tests/Makefile.am39
-rw-r--r--tests/Makefile.gnulib3200
-rw-r--r--tests/Makefile.in6709
-rw-r--r--tests/error.c338
-rw-r--r--tests/error.h65
-rw-r--r--tests/exitfail.c24
-rw-r--r--tests/exitfail.h18
-rw-r--r--tests/gettext.h279
-rw-r--r--tests/intprops.h77
-rw-r--r--tests/locale.in.h36
-rw-r--r--tests/nan.h60
-rw-r--r--tests/progname.c63
-rw-r--r--tests/progname.h60
-rw-r--r--tests/setenv.c330
-rw-r--r--tests/strerror.c347
-rw-r--r--tests/test-alloca-opt.c62
-rw-r--r--tests/test-array-mergesort.c395
-rw-r--r--tests/test-c-ctype.c398
-rwxr-xr-xtests/test-c-strcase.sh21
-rw-r--r--tests/test-c-strcasecmp.c77
-rw-r--r--tests/test-c-strncasecmp.c91
-rw-r--r--tests/test-environ.c44
-rw-r--r--tests/test-errno.c117
-rw-r--r--tests/test-frexpl.c233
-rw-r--r--tests/test-fseterr.c44
-rw-r--r--tests/test-iconv.c149
-rw-r--r--tests/test-isnand-nolibm.c22
-rw-r--r--tests/test-isnand.h78
-rw-r--r--tests/test-isnanf-nolibm.c21
-rw-r--r--tests/test-isnanf.h80
-rw-r--r--tests/test-isnanl-nolibm.c23
-rw-r--r--tests/test-isnanl.h154
-rw-r--r--tests/test-locale.c44
-rw-r--r--tests/test-localename.c122
-rw-r--r--tests/test-malloca.c59
-rw-r--r--tests/test-math.c53
-rw-r--r--tests/test-mbrtowc.c330
-rwxr-xr-xtests/test-mbrtowc1.sh15
-rwxr-xr-xtests/test-mbrtowc2.sh15
-rwxr-xr-xtests/test-mbrtowc3.sh15
-rwxr-xr-xtests/test-mbrtowc4.sh15
-rw-r--r--tests/test-mbsinit.c62
-rwxr-xr-xtests/test-mbsinit.sh15
-rw-r--r--tests/test-memchr.c130
-rw-r--r--tests/test-printf-frexp.c131
-rw-r--r--tests/test-printf-frexpl.c147
-rw-r--r--tests/test-signbit.c204
-rw-r--r--tests/test-stdbool.c95
-rw-r--r--tests/test-stdint.c360
-rw-r--r--tests/test-stdlib.c43
-rw-r--r--tests/test-strerror.c65
-rw-r--r--tests/test-striconveh.c922
-rw-r--r--tests/test-striconveha.c609
-rw-r--r--tests/test-string.c33
-rw-r--r--tests/test-unistd.c56
-rw-r--r--tests/test-wchar.c31
-rw-r--r--tests/test-wctype.c46
-rw-r--r--tests/test-wcwidth.c91
-rw-r--r--tests/unicase/test-casecmp.h69
-rw-r--r--tests/unicase/test-cased.c135
-rw-r--r--tests/unicase/test-ignorable.c246
-rw-r--r--tests/unicase/test-is-cased.h58
-rw-r--r--tests/unicase/test-is-casefolded.h43
-rw-r--r--tests/unicase/test-is-lowercase.h95
-rw-r--r--tests/unicase/test-is-titlecase.h95
-rw-r--r--tests/unicase/test-is-uppercase.h95
-rw-r--r--tests/unicase/test-locale-language.c56
-rwxr-xr-xtests/unicase/test-locale-language.sh30
-rw-r--r--tests/unicase/test-mapping-part1.h45
-rw-r--r--tests/unicase/test-mapping-part2.h37
-rw-r--r--tests/unicase/test-predicate-part1.h45
-rw-r--r--tests/unicase/test-predicate-part2.h37
-rw-r--r--tests/unicase/test-u16-casecmp.c336
-rw-r--r--tests/unicase/test-u16-casecoll.c54
-rw-r--r--tests/unicase/test-u16-casefold.c214
-rw-r--r--tests/unicase/test-u16-is-cased.c51
-rw-r--r--tests/unicase/test-u16-is-casefolded.c65
-rw-r--r--tests/unicase/test-u16-is-lowercase.c93
-rw-r--r--tests/unicase/test-u16-is-titlecase.c51
-rw-r--r--tests/unicase/test-u16-is-uppercase.c93
-rw-r--r--tests/unicase/test-u16-tolower.c251
-rw-r--r--tests/unicase/test-u16-totitle.c211
-rw-r--r--tests/unicase/test-u16-toupper.c211
-rw-r--r--tests/unicase/test-u32-casecmp.c336
-rw-r--r--tests/unicase/test-u32-casecoll.c54
-rw-r--r--tests/unicase/test-u32-casefold.c214
-rw-r--r--tests/unicase/test-u32-is-cased.c51
-rw-r--r--tests/unicase/test-u32-is-casefolded.c65
-rw-r--r--tests/unicase/test-u32-is-lowercase.c93
-rw-r--r--tests/unicase/test-u32-is-titlecase.c51
-rw-r--r--tests/unicase/test-u32-is-uppercase.c93
-rw-r--r--tests/unicase/test-u32-tolower.c251
-rw-r--r--tests/unicase/test-u32-totitle.c211
-rw-r--r--tests/unicase/test-u32-toupper.c211
-rw-r--r--tests/unicase/test-u8-casecmp.c345
-rw-r--r--tests/unicase/test-u8-casecoll.c54
-rw-r--r--tests/unicase/test-u8-casefold.c220
-rw-r--r--tests/unicase/test-u8-is-cased.c51
-rw-r--r--tests/unicase/test-u8-is-casefolded.c65
-rw-r--r--tests/unicase/test-u8-is-lowercase.c93
-rw-r--r--tests/unicase/test-u8-is-titlecase.c51
-rw-r--r--tests/unicase/test-u8-is-uppercase.c93
-rw-r--r--tests/unicase/test-u8-tolower.c257
-rw-r--r--tests/unicase/test-u8-totitle.c217
-rw-r--r--tests/unicase/test-u8-toupper.c217
-rw-r--r--tests/unicase/test-uc_tolower.c1047
-rw-r--r--tests/unicase/test-uc_totitle.c1055
-rw-r--r--tests/unicase/test-uc_toupper.c1055
-rw-r--r--tests/unicase/test-ulc-casecmp.c408
-rwxr-xr-xtests/unicase/test-ulc-casecmp1.sh15
-rwxr-xr-xtests/unicase/test-ulc-casecmp2.sh15
-rw-r--r--tests/unicase/test-ulc-casecoll.c59
-rwxr-xr-xtests/unicase/test-ulc-casecoll1.sh15
-rwxr-xr-xtests/unicase/test-ulc-casecoll2.sh15
-rw-r--r--tests/uniconv/test-u16-conv-from-enc.c232
-rw-r--r--tests/uniconv/test-u16-conv-to-enc.c188
-rw-r--r--tests/uniconv/test-u16-strconv-from-enc.c132
-rw-r--r--tests/uniconv/test-u16-strconv-to-enc.c121
-rw-r--r--tests/uniconv/test-u32-conv-from-enc.c232
-rw-r--r--tests/uniconv/test-u32-conv-to-enc.c163
-rw-r--r--tests/uniconv/test-u32-strconv-from-enc.c132
-rw-r--r--tests/uniconv/test-u32-strconv-to-enc.c108
-rw-r--r--tests/uniconv/test-u8-conv-from-enc.c218
-rw-r--r--tests/uniconv/test-u8-conv-to-enc.c193
-rw-r--r--tests/uniconv/test-u8-strconv-from-enc.c114
-rw-r--r--tests/uniconv/test-u8-strconv-to-enc.c112
-rw-r--r--tests/unictype/test-bidi_byname.c44
-rw-r--r--tests/unictype/test-bidi_name.c44
-rw-r--r--tests/unictype/test-bidi_of.c45
-rw-r--r--tests/unictype/test-bidi_test.c60
-rw-r--r--tests/unictype/test-block_list.c62
-rw-r--r--tests/unictype/test-block_of.c79
-rw-r--r--tests/unictype/test-block_test.c54
-rw-r--r--tests/unictype/test-categ_C.c469
-rw-r--r--tests/unictype/test-categ_Cc.c24
-rw-r--r--tests/unictype/test-categ_Cf.c36
-rw-r--r--tests/unictype/test-categ_Cn.c467
-rw-r--r--tests/unictype/test-categ_Co.c25
-rw-r--r--tests/unictype/test-categ_Cs.c23
-rw-r--r--tests/unictype/test-categ_L.c412
-rw-r--r--tests/unictype/test-categ_Ll.c620
-rw-r--r--tests/unictype/test-categ_Lm.c61
-rw-r--r--tests/unictype/test-categ_Lo.c304
-rw-r--r--tests/unictype/test-categ_Lt.c32
-rw-r--r--tests/unictype/test-categ_Lu.c613
-rw-r--r--tests/unictype/test-categ_M.c183
-rw-r--r--tests/unictype/test-categ_Mc.c107
-rw-r--r--tests/unictype/test-categ_Me.c27
-rw-r--r--tests/unictype/test-categ_Mn.c182
-rw-r--r--tests/unictype/test-categ_N.c91
-rw-r--r--tests/unictype/test-categ_Nd.c55
-rw-r--r--tests/unictype/test-categ_Nl.c33
-rw-r--r--tests/unictype/test-categ_No.c52
-rw-r--r--tests/unictype/test-categ_P.c134
-rw-r--r--tests/unictype/test-categ_Pc.c28
-rw-r--r--tests/unictype/test-categ_Pd.c36
-rw-r--r--tests/unictype/test-categ_Pe.c92
-rw-r--r--tests/unictype/test-categ_Pf.c32
-rw-r--r--tests/unictype/test-categ_Pi.c33
-rw-r--r--tests/unictype/test-categ_Po.c130
-rw-r--r--tests/unictype/test-categ_Ps.c94
-rw-r--r--tests/unictype/test-categ_S.c201
-rw-r--r--tests/unictype/test-categ_Sc.c36
-rw-r--r--tests/unictype/test-categ_Sk.c48
-rw-r--r--tests/unictype/test-categ_Sm.c87
-rw-r--r--tests/unictype/test-categ_So.c156
-rw-r--r--tests/unictype/test-categ_Z.c31
-rw-r--r--tests/unictype/test-categ_Zl.c23
-rw-r--r--tests/unictype/test-categ_Zp.c23
-rw-r--r--tests/unictype/test-categ_Zs.c30
-rw-r--r--tests/unictype/test-categ_and.c51
-rw-r--r--tests/unictype/test-categ_and_not.c51
-rw-r--r--tests/unictype/test-categ_byname.c62
-rw-r--r--tests/unictype/test-categ_name.c45
-rw-r--r--tests/unictype/test-categ_none.c47
-rw-r--r--tests/unictype/test-categ_of.c67
-rw-r--r--tests/unictype/test-categ_or.c48
-rw-r--r--tests/unictype/test-categ_test_withtable.c50
-rw-r--r--tests/unictype/test-combining.c47
-rw-r--r--tests/unictype/test-ctype_alnum.c439
-rw-r--r--tests/unictype/test-ctype_alpha.c438
-rw-r--r--tests/unictype/test-ctype_blank.c30
-rw-r--r--tests/unictype/test-ctype_cntrl.c25
-rw-r--r--tests/unictype/test-ctype_digit.c23
-rw-r--r--tests/unictype/test-ctype_graph.c471
-rw-r--r--tests/unictype/test-ctype_lower.c592
-rw-r--r--tests/unictype/test-ctype_print.c469
-rw-r--r--tests/unictype/test-ctype_punct.c354
-rw-r--r--tests/unictype/test-ctype_space.c31
-rw-r--r--tests/unictype/test-ctype_upper.c576
-rw-r--r--tests/unictype/test-ctype_xdigit.c25
-rw-r--r--tests/unictype/test-decdigit.c62
-rw-r--r--tests/unictype/test-decdigit.h373
-rw-r--r--tests/unictype/test-digit.c62
-rw-r--r--tests/unictype/test-digit.h471
-rw-r--r--tests/unictype/test-mirror.c53
-rw-r--r--tests/unictype/test-numeric.c72
-rw-r--r--tests/unictype/test-numeric.h939
-rw-r--r--tests/unictype/test-pr_alphabetic.c465
-rw-r--r--tests/unictype/test-pr_ascii_hex_digit.c25
-rw-r--r--tests/unictype/test-pr_bidi_arabic_digit.c26
-rw-r--r--tests/unictype/test-pr_bidi_arabic_right_to_left.c47
-rw-r--r--tests/unictype/test-pr_bidi_block_separator.c27
-rw-r--r--tests/unictype/test-pr_bidi_boundary_neutral.c53
-rw-r--r--tests/unictype/test-pr_bidi_common_separator.c35
-rw-r--r--tests/unictype/test-pr_bidi_control.c24
-rw-r--r--tests/unictype/test-pr_bidi_embedding_or_override.c24
-rw-r--r--tests/unictype/test-pr_bidi_eur_num_separator.c31
-rw-r--r--tests/unictype/test-pr_bidi_eur_num_terminator.c41
-rw-r--r--tests/unictype/test-pr_bidi_european_digit.c32
-rw-r--r--tests/unictype/test-pr_bidi_hebrew_right_to_left.c42
-rw-r--r--tests/unictype/test-pr_bidi_left_to_right.c295
-rw-r--r--tests/unictype/test-pr_bidi_non_spacing_mark.c178
-rw-r--r--tests/unictype/test-pr_bidi_other_neutral.c175
-rw-r--r--tests/unictype/test-pr_bidi_pdf.c23
-rw-r--r--tests/unictype/test-pr_bidi_segment_separator.c25
-rw-r--r--tests/unictype/test-pr_bidi_whitespace.c30
-rw-r--r--tests/unictype/test-pr_byname.c54
-rw-r--r--tests/unictype/test-pr_combining.c183
-rw-r--r--tests/unictype/test-pr_composite.c291
-rw-r--r--tests/unictype/test-pr_currency_symbol.c36
-rw-r--r--tests/unictype/test-pr_dash.c40
-rw-r--r--tests/unictype/test-pr_decimal_digit.c55
-rw-r--r--tests/unictype/test-pr_default_ignorable_code_point.c37
-rw-r--r--tests/unictype/test-pr_deprecated.c28
-rw-r--r--tests/unictype/test-pr_diacritic.c124
-rw-r--r--tests/unictype/test-pr_extender.c38
-rw-r--r--tests/unictype/test-pr_format_control.c30
-rw-r--r--tests/unictype/test-pr_grapheme_base.c524
-rw-r--r--tests/unictype/test-pr_grapheme_extend.c194
-rw-r--r--tests/unictype/test-pr_grapheme_link.c44
-rw-r--r--tests/unictype/test-pr_hex_digit.c28
-rw-r--r--tests/unictype/test-pr_hyphen.c32
-rw-r--r--tests/unictype/test-pr_id_continue.c499
-rw-r--r--tests/unictype/test-pr_id_start.c414
-rw-r--r--tests/unictype/test-pr_ideographic.c32
-rw-r--r--tests/unictype/test-pr_ids_binary_operator.c24
-rw-r--r--tests/unictype/test-pr_ids_trinary_operator.c23
-rw-r--r--tests/unictype/test-pr_ignorable_control.c40
-rw-r--r--tests/unictype/test-pr_iso_control.c24
-rw-r--r--tests/unictype/test-pr_join_control.c23
-rw-r--r--tests/unictype/test-pr_left_of_pair.c63
-rw-r--r--tests/unictype/test-pr_line_separator.c23
-rw-r--r--tests/unictype/test-pr_logical_order_exception.c24
-rw-r--r--tests/unictype/test-pr_lowercase.c623
-rw-r--r--tests/unictype/test-pr_math.c127
-rw-r--r--tests/unictype/test-pr_non_break.c32
-rw-r--r--tests/unictype/test-pr_not_a_character.c40
-rw-r--r--tests/unictype/test-pr_numeric.c101
-rw-r--r--tests/unictype/test-pr_other_alphabetic.c144
-rw-r--r--tests/unictype/test-pr_other_default_ignorable_code_point.c32
-rw-r--r--tests/unictype/test-pr_other_grapheme_extend.c38
-rw-r--r--tests/unictype/test-pr_other_id_continue.c25
-rw-r--r--tests/unictype/test-pr_other_id_start.c25
-rw-r--r--tests/unictype/test-pr_other_lowercase.c35
-rw-r--r--tests/unictype/test-pr_other_math.c121
-rw-r--r--tests/unictype/test-pr_other_uppercase.c24
-rw-r--r--tests/unictype/test-pr_paired_punctuation.c49
-rw-r--r--tests/unictype/test-pr_paragraph_separator.c23
-rw-r--r--tests/unictype/test-pr_pattern_syntax.c50
-rw-r--r--tests/unictype/test-pr_pattern_white_space.c27
-rw-r--r--tests/unictype/test-pr_private_use.c25
-rw-r--r--tests/unictype/test-pr_punctuation.c134
-rw-r--r--tests/unictype/test-pr_quotation_mark.c34
-rw-r--r--tests/unictype/test-pr_radical.c25
-rw-r--r--tests/unictype/test-pr_sentence_terminal.c59
-rw-r--r--tests/unictype/test-pr_soft_dotted.c53
-rw-r--r--tests/unictype/test-pr_space.c30
-rw-r--r--tests/unictype/test-pr_terminal_punctuation.c77
-rw-r--r--tests/unictype/test-pr_test.c47
-rw-r--r--tests/unictype/test-pr_titlecase.c32
-rw-r--r--tests/unictype/test-pr_unassigned_code_value.c476
-rw-r--r--tests/unictype/test-pr_unified_ideograph.c32
-rw-r--r--tests/unictype/test-pr_uppercase.c615
-rw-r--r--tests/unictype/test-pr_variation_selector.c25
-rw-r--r--tests/unictype/test-pr_white_space.c33
-rw-r--r--tests/unictype/test-pr_xid_continue.c506
-rw-r--r--tests/unictype/test-pr_xid_start.c421
-rw-r--r--tests/unictype/test-pr_zero_width.c36
-rw-r--r--tests/unictype/test-predicate-part1.h45
-rw-r--r--tests/unictype/test-predicate-part2.h37
-rw-r--r--tests/unictype/test-scripts.c86
-rw-r--r--tests/unictype/test-sy_c_ident.c50
-rw-r--r--tests/unictype/test-sy_c_whitespace.c24
-rw-r--r--tests/unictype/test-sy_java_ident.c50
-rw-r--r--tests/unictype/test-sy_java_whitespace.c25
-rw-r--r--tests/unilbrk/test-u16-possible-linebreaks.c96
-rw-r--r--tests/unilbrk/test-u16-width-linebreaks.c86
-rw-r--r--tests/unilbrk/test-u32-possible-linebreaks.c96
-rw-r--r--tests/unilbrk/test-u32-width-linebreaks.c86
-rw-r--r--tests/unilbrk/test-u8-possible-linebreaks.c90
-rw-r--r--tests/unilbrk/test-u8-width-linebreaks.c80
-rw-r--r--tests/unilbrk/test-ulc-possible-linebreaks.c66
-rw-r--r--tests/unilbrk/test-ulc-width-linebreaks.c65
-rw-r--r--tests/uniname/UnicodeDataNames.txt30423
-rw-r--r--tests/uniname/test-uninames.c261
-rwxr-xr-xtests/uniname/test-uninames.sh2
-rw-r--r--tests/uninorm/NormalizationTest.txt17819
-rw-r--r--tests/uninorm/test-canonical-decomposition.c156
-rw-r--r--tests/uninorm/test-compat-decomposition.c198
-rw-r--r--tests/uninorm/test-composition.c66
-rw-r--r--tests/uninorm/test-decomposing-form.c47
-rw-r--r--tests/uninorm/test-decomposition.c220
-rw-r--r--tests/uninorm/test-nfc.c44
-rw-r--r--tests/uninorm/test-nfd.c44
-rw-r--r--tests/uninorm/test-nfkc.c44
-rw-r--r--tests/uninorm/test-nfkd.c44
-rw-r--r--tests/uninorm/test-u16-nfc.c345
-rw-r--r--tests/uninorm/test-u16-nfd.c329
-rw-r--r--tests/uninorm/test-u16-nfkc.c393
-rw-r--r--tests/uninorm/test-u16-nfkd.c349
-rw-r--r--tests/uninorm/test-u16-normcmp.c130
-rw-r--r--tests/uninorm/test-u16-normcmp.h69
-rw-r--r--tests/uninorm/test-u16-normcoll.c49
-rw-r--r--tests/uninorm/test-u32-nfc-big.c125
-rwxr-xr-xtests/uninorm/test-u32-nfc-big.sh2
-rw-r--r--tests/uninorm/test-u32-nfc.c345
-rw-r--r--tests/uninorm/test-u32-nfd-big.c125
-rwxr-xr-xtests/uninorm/test-u32-nfd-big.sh2
-rw-r--r--tests/uninorm/test-u32-nfd.c329
-rw-r--r--tests/uninorm/test-u32-nfkc-big.c122
-rwxr-xr-xtests/uninorm/test-u32-nfkc-big.sh2
-rw-r--r--tests/uninorm/test-u32-nfkc.c393
-rw-r--r--tests/uninorm/test-u32-nfkd-big.c122
-rwxr-xr-xtests/uninorm/test-u32-nfkd-big.sh2
-rw-r--r--tests/uninorm/test-u32-nfkd.c349
-rw-r--r--tests/uninorm/test-u32-normalize-big.c315
-rw-r--r--tests/uninorm/test-u32-normalize-big.h70
-rw-r--r--tests/uninorm/test-u32-normcmp.c130
-rw-r--r--tests/uninorm/test-u32-normcmp.h69
-rw-r--r--tests/uninorm/test-u32-normcoll.c49
-rw-r--r--tests/uninorm/test-u8-nfc.c375
-rw-r--r--tests/uninorm/test-u8-nfd.c358
-rw-r--r--tests/uninorm/test-u8-nfkc.c427
-rw-r--r--tests/uninorm/test-u8-nfkd.c379
-rw-r--r--tests/uninorm/test-u8-normcmp.c130
-rw-r--r--tests/uninorm/test-u8-normcmp.h69
-rw-r--r--tests/uninorm/test-u8-normcoll.c49
-rw-r--r--tests/uninorm/test-uninorm-filter-nfc.c122
-rw-r--r--tests/unistdio/test-u16-asnprintf1.c59
-rw-r--r--tests/unistdio/test-u16-asnprintf1.h60
-rw-r--r--tests/unistdio/test-u16-printf1.h941
-rw-r--r--tests/unistdio/test-u16-vasnprintf1.c88
-rw-r--r--tests/unistdio/test-u16-vasnprintf2.c132
-rwxr-xr-xtests/unistdio/test-u16-vasnprintf2.sh21
-rw-r--r--tests/unistdio/test-u16-vasnprintf3.c132
-rwxr-xr-xtests/unistdio/test-u16-vasnprintf3.sh21
-rw-r--r--tests/unistdio/test-u16-vasprintf1.c75
-rw-r--r--tests/unistdio/test-u16-vsnprintf1.c84
-rw-r--r--tests/unistdio/test-u16-vsprintf1.c84
-rw-r--r--tests/unistdio/test-u32-asnprintf1.c59
-rw-r--r--tests/unistdio/test-u32-asnprintf1.h60
-rw-r--r--tests/unistdio/test-u32-printf1.h941
-rw-r--r--tests/unistdio/test-u32-vasnprintf1.c88
-rw-r--r--tests/unistdio/test-u32-vasnprintf2.c132
-rwxr-xr-xtests/unistdio/test-u32-vasnprintf2.sh21
-rw-r--r--tests/unistdio/test-u32-vasnprintf3.c132
-rwxr-xr-xtests/unistdio/test-u32-vasnprintf3.sh21
-rw-r--r--tests/unistdio/test-u32-vasprintf1.c75
-rw-r--r--tests/unistdio/test-u32-vsnprintf1.c84
-rw-r--r--tests/unistdio/test-u32-vsprintf1.c84
-rw-r--r--tests/unistdio/test-u8-asnprintf1.c59
-rw-r--r--tests/unistdio/test-u8-asnprintf1.h57
-rw-r--r--tests/unistdio/test-u8-printf1.h704
-rw-r--r--tests/unistdio/test-u8-vasnprintf1.c88
-rw-r--r--tests/unistdio/test-u8-vasnprintf2.c122
-rwxr-xr-xtests/unistdio/test-u8-vasnprintf2.sh21
-rw-r--r--tests/unistdio/test-u8-vasnprintf3.c122
-rwxr-xr-xtests/unistdio/test-u8-vasnprintf3.sh21
-rw-r--r--tests/unistdio/test-u8-vasprintf1.c75
-rw-r--r--tests/unistdio/test-u8-vsnprintf1.c84
-rw-r--r--tests/unistdio/test-u8-vsprintf1.c84
-rw-r--r--tests/unistdio/test-ulc-asnprintf1.c56
-rw-r--r--tests/unistdio/test-ulc-asnprintf1.h54
-rw-r--r--tests/unistdio/test-ulc-printf1.h498
-rw-r--r--tests/unistdio/test-ulc-vasnprintf1.c85
-rw-r--r--tests/unistdio/test-ulc-vasnprintf2.c258
-rwxr-xr-xtests/unistdio/test-ulc-vasnprintf2.sh21
-rw-r--r--tests/unistdio/test-ulc-vasnprintf3.c246
-rwxr-xr-xtests/unistdio/test-ulc-vasnprintf3.sh21
-rw-r--r--tests/unistdio/test-ulc-vasprintf1.c72
-rw-r--r--tests/unistdio/test-ulc-vsnprintf1.c77
-rw-r--r--tests/unistdio/test-ulc-vsprintf1.c77
-rw-r--r--tests/uniwbrk/test-u16-wordbreaks.c106
-rw-r--r--tests/uniwbrk/test-u32-wordbreaks.c106
-rw-r--r--tests/uniwbrk/test-u8-wordbreaks.c97
-rw-r--r--tests/uniwbrk/test-ulc-wordbreaks.c74
-rwxr-xr-xtests/uniwbrk/test-ulc-wordbreaks.sh15
-rw-r--r--tests/uniwidth/test-u16-strwidth.c71
-rw-r--r--tests/uniwidth/test-u16-width.c77
-rw-r--r--tests/uniwidth/test-u32-strwidth.c71
-rw-r--r--tests/uniwidth/test-u32-width.c77
-rw-r--r--tests/uniwidth/test-u8-strwidth.c66
-rw-r--r--tests/uniwidth/test-u8-width.c75
-rw-r--r--tests/uniwidth/test-uc_width.c69
-rw-r--r--tests/uniwidth/test-uc_width2.c97
-rwxr-xr-xtests/uniwidth/test-uc_width2.sh382
-rw-r--r--tests/unsetenv.c90
-rw-r--r--tests/wctob.c37
-rw-r--r--tests/xalloc-die.c41
-rw-r--r--tests/xalloc.h280
-rw-r--r--tests/xmalloc.c118
-rw-r--r--tests/zerosize-ptr.h68
-rw-r--r--version.sh6
-rw-r--r--woe32dll/export.h106
-rw-r--r--woe32dll/unistring-exports.c146
1404 files changed, 441301 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 00000000..8bedd794
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1 @@
+Bruno Haible <bruno@clisp.org>
diff --git a/BUGS b/BUGS
new file mode 100644
index 00000000..0d2f9798
--- /dev/null
+++ b/BUGS
@@ -0,0 +1,6 @@
+List of known bugs and limitations:
+
+- Line breaking of Thai text should use a dictionary based approach. If you
+ know of a public domain Thai word list that could be used for this purpose,
+ please let us know.
+
diff --git a/COPYING b/COPYING
new file mode 100644
index 00000000..94a9ed02
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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 3 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, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/COPYING.LIB b/COPYING.LIB
new file mode 100644
index 00000000..fc8a5de7
--- /dev/null
+++ b/COPYING.LIB
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 00000000..de708560
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,540 @@
+2009-06-30 Bruno Haible <bruno@clisp.org>
+
+ * Version 0.9.1 released.
+
+2009-06-30 Bruno Haible <bruno@clisp.org>
+
+ * woe32dll/unistring-exports.c: Add unicase_empty_prefix_context,
+ unicase_empty_suffix_context.
+
+2009-06-30 Bruno Haible <bruno@clisp.org>
+
+ * version.sh: Bump date.
+ * lib/Makefile.am (LTV_*): Update to 1:0:1.
+ * README: Update version.
+
+2009-06-30 Bruno Haible <bruno@clisp.org>
+
+ * doc/unicase.texi (Case mappings of substrings): Add an example.
+
+2009-06-29 Bruno Haible <bruno@clisp.org>
+
+ New functions for case mapping of substrings.
+ * autogen.sh (GNULIB_MODULES): Add unicase/* modules relating to
+ context sensitive case mapping. Preprocess also unicase.h.
+ * doc/unicase.texi (Case mappings of substrings): New section.
+ (Case insensitive comparison): Mention u*_ct_casefold functions.
+ * doc/libunistring.texi: Update menu.
+ Reported by Paolo Bonzini.
+
+2009-06-11 Thien-Thi Nguyen <ttn@gnuvola.org>
+
+ * doc/libunistring.texi (Autoconf macro): Small fixes.
+
+2009-05-31 Bruno Haible <bruno@clisp.org>
+
+ * doc/Makefile.am: Use dist-hook instead of old distdir hack.
+ * configure.ac (doc/Makefile.am): Don't invoke FIX_MAKEFILE_DISTRIB.
+ * m4/fixautomake.m4: Remove file.
+
+2009-05-30 Bruno Haible <bruno@clisp.org>
+
+ Generate a compiler independent <unistring/stdint.h>.
+ * lib/Makefile.am (unistring/stdint.h): Produce a file that relies
+ on more #ifs.
+ Reported by David Byron <dbyron@dbyron.com>.
+
+2009-05-30 Bruno Haible <bruno@clisp.org>
+
+ Generate a compiler independent <unistring/stdbool.h>.
+ * lib/stdbool.mini.h: New file, a reduced version of gnulib's
+ lib/stdbool.in.h.
+ * lib/Makefile.am (unistring/stdbool.h): Produce a file that relies
+ on #ifs.
+ Reported by David Byron <dbyron@dbyron.com>.
+
+2009-05-23 Bruno Haible <bruno@clisp.org>
+
+ * configure.ac (AM_INIT_AUTOMAKE): Add 'silent-rules' option.
+
+2009-05-23 Bruno Haible <bruno@clisp.org>
+
+ * m4/init-package-version.m4: New file, from GNU gettext..
+ * configure.ac: Invoke gl_INIT_PACKAGE. Use the preferred form of
+ AM_INIT_AUTOMAKE.
+
+2009-05-21 Bruno Haible <bruno@clisp.org>
+
+ Colored "make check" output.
+ * tests/Makefile.am (AUTOMAKE_OPTIONS): Add 1.11 and color-tests.
+ * autogen.sh: Update comment.
+
+2009-05-21 Bruno Haible <bruno@clisp.org>
+
+ Add support for automake 1.11.
+ * m4/fixautomake.m4: Update from GNU gettext.
+ * autogen.sh: Update comment.
+
+2009-05-10 Bruno Haible <bruno@clisp.org>
+
+ * doc/unictype.texi (Mirrored character): Fix typo.
+ Reported by David Byron <dbyron@dbyron.com>.
+
+2009-05-10 Bruno Haible <bruno@clisp.org>
+
+ * doc/unicase.texi (Case mappings of characters,
+ Case mappings of strings): Explain what title case is.
+ Reported by Paolo Bonzini.
+
+2009-05-06 Bruno Haible <bruno@clisp.org>
+
+ * doc/libunistring.texi (texnl): Define using a trick by Karl Berry.
+ Add braces to all its uses.
+ * doc/unictype.texi: Likewise.
+ * doc/uniwbrk.texi: Likewise.
+
+2009-05-03 Bruno Haible <bruno@clisp.org>
+
+ * lib/Makefile.am (config.h): Echo the commands that are being
+ executed.
+ Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.
+
+2009-05-03 Bruno Haible <bruno@clisp.org>
+
+ * HACKING (Building): Mention also the configure option
+ --disable-static.
+
+2009-05-03 Bruno Haible <bruno@clisp.org>
+
+ New configure option --disable-namespacing.
+ * configure.ac: New option --disable-namespacing.
+ (NAMESPACING): New substituted variable.
+ * lib/Makefile.am (config.h): Don't alias any symbols if NAMESPACING is
+ set to empty.
+ * HACKING: New section "Building".
+
+2009-05-01 Bruno Haible <bruno@clisp.org>
+
+ * doc/libunistring.texi: Enable the table of contents also in TeX mode.
+
+2009-05-01 Bruno Haible <bruno@clisp.org>
+
+ Avoid "overfull hboxes" in the TeXed documentation.
+ * doc/libunistring.texi (texnl): New macro.
+ (Unicode, Autoconf macro): Use it.
+ * doc/unictype.texi (Canonical combining class,
+ Bidirectional category): Likewise.
+ * doc/uniwbrk.texi (Word break property): Likewise.
+ Reported by Ralf Wildenhues.
+
+2009-05-01 Bruno Haible <bruno@clisp.org>
+
+ * lib/exported.sh.in: Fix quoting of argument reference.
+
+2009-05-01 Bruno Haible <bruno@clisp.org>
+
+ * version.sh (GNULIB_GIT_COMMIT): New variable.
+ * HACKING: Clarify which version of gnulib to use.
+ Reported by Paolo Bonzini.
+
+2009-04-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> (tiny change)
+
+ * doc/libunistring.texi: Fix typos.
+ * doc/unistr.texi: Likewise.
+ * doc/uniname.texi: Likewise.
+ * doc/unictype.texi: Likewise.
+ * doc/uninorm.texi: Likewise.
+
+2009-04-28 Bruno Haible <bruno@clisp.org>
+
+ Make VPATH builds work off a git checkout.
+ * lib/Makefile.am (config.h): Look for libunistring.sym first in the
+ current directory.
+ Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.
+
+2009-04-28 Thien-Thi Nguyen <ttn@gnuvola.org> (tiny change)
+
+ Fix typos.
+ * doc/uniconv.texi (uniconv.h): Fix typo.
+ * doc/unictype.texi (Properties): Fix typo.
+
+2009-04-28 Bruno Haible <bruno@clisp.org>
+
+ Doc tweaks.
+ * doc/libunistring.texi: Fix typo.
+ * doc/unistr.texi (u*_cmp2): Clarify what memcmp2 is.
+ * doc/uninorm.texi (u*_normxfrm): Fix description of return value.
+ * doc/unicase.texi (u*_casexfrm): Likewise.
+ Reported by Paolo Bonzini.
+
+2009-04-26 Bruno Haible <bruno@clisp.org>
+
+ * Version 0.9 released.
+
+2009-04-26 Bruno Haible <bruno@clisp.org>
+
+ * version.sh: Bump date.
+
+2009-04-26 Bruno Haible <bruno@clisp.org>
+
+ * doc/libunistring.texi: Initialize 'am' index.
+ (Using the library): New chapter.
+
+2009-04-26 Bruno Haible <bruno@clisp.org>
+
+ * README.woe32: New file, from GNU gettext.
+ * Makefile.am (EXTRA_DIST): Add it.
+
+2009-04-26 Bruno Haible <bruno@clisp.org>
+
+ * doc/uniconv.texi: Update for changed calling conventions of
+ u*_conv_from_encoding and u*_conv_to_encoding functions.
+
+2009-04-24 Bruno Haible <bruno@clisp.org>
+
+ Make VPATH builds on Cygwin work.
+ * lib/Makefile.am (AM_CPPFLAGS): Add the essential -I options.
+
+2009-04-24 Bruno Haible <bruno@clisp.org>
+
+ * gnulib-m4/gnulib-cache.m4: Updated by gnulib-tool.
+
+2009-04-24 Bruno Haible <bruno@clisp.org>
+
+ Make the installed package relocatable.
+ * autogen.sh (GNULIB_MODULES): Add relocatable-lib-lgpl.
+ * lib/Makefile.am (AM_CPPFLAGS): Add DEPENDS_ON_LIBICONV definition.
+
+2009-04-23 Bruno Haible <bruno@clisp.org>
+
+ Fix recognition of "nm" command.
+ * m4/libtool.m4 (LT_PATH_NM): Try "nm" program also when compiling for
+ mingw in a cygwin environment.
+
+2009-04-23 Bruno Haible <bruno@clisp.org>
+
+ * m4/libtool.m4: Fix recognition of 'link' command.
+ 2009-01-26 Peter Rosin <peda@lysator.liu.se>
+ Don't settle for any dumpbin/link program as name lister.
+ * m4/libtool.m4 (LT_PATH_NM): When locating dumpbin or
+ link -dump, check if they appear to really be capable of name
+ listing, in order to eliminate e.g. link from coreutils. This
+ makes the name lister decision fall back on nm as the default
+ if no acceptable candidate is found, which mainly happens on
+ (arguably broken) cross compiles.
+
+2008-04-21 Bruno Haible <bruno@clisp.org>
+
+ Add version metainformation in Windows resource format.
+ * configure.ac: Invoke LT_LANG for Windows Resources.
+ (WOE32): New conditional.
+ * lib/libunistring.rc: New file.
+ * lib/Makefile.am (EXTRA_DIST): Add it.
+ (WOE32_LIBADD): New variable.
+ (libunistring.res.lo): New rule.
+ (libunistring_la_LIBADD, libunistring_la_DEPENDENCIES): Add
+ WOE32_LIBADD.
+ (config.h): Don't compile *.res.c files.
+ * build-aux/windres-options: New file, from GNU gettext.
+ * Makefile.am (EXTRA_DIST): Add it.
+
+2008-04-21 Bruno Haible <bruno@clisp.org>
+
+ Add version metainformation.
+ * configure.ac (AC_CONFIG_SRCDIR): Use lib/unistring/version.in.h.
+ (HEXVERSION): New variable, computed from VERSION.
+ (AC_CONFIG_FILES): Add lib/unistring/version.h.
+ * lib/unistring/version.in.h: New file.
+ * lib/version.c: New file.
+ * lib/Makefile.am (libunistring_la_SOURCES): Add version.c.
+ (nobase_nodist_include_HEADERS): Add unistring/version.h.
+ (HEADERS_WITH_EXTERNS): Add unistring/version.in.h.
+ * woe32dll/unistring-exports.c: Add _libunistring_version.
+
+2008-04-19 Bruno Haible <bruno@clisp.org>
+
+ Avoid compilation errors in tests/uninorm/test-nf*.c.
+ * configure.ac (WOE32DLL): Define also as a C macro.
+
+2008-04-19 Bruno Haible <bruno@clisp.org>
+
+ Avoid a compilation error of tests/unictype/test-categ_none.c.
+ * gnulib-local/modules/unictype/category-none-tests.diff: New file.
+ * gnulib-local/Makefile.am (EXTRA_DIST): Add it.
+
+2008-04-19 Bruno Haible <bruno@clisp.org>
+
+ Don't commit files brought in by autogen.sh.
+ * build-aux/config.guess: Remove from git repository.
+ * build-aux/config.sub: Likewise.
+
+2008-04-19 Bruno Haible <bruno@clisp.org>
+
+ Add support for building as shared library on Cygwin and mingw.
+ * autogen.sh: Insert LIBUNISTRING_DLL_VARIABLE tokens into
+ lib/unictype.h and lib/uninorm.h.
+ * gnulib-local/lib/unictype.h.diff: Add an include of
+ <unistring/woe32dll.h>.
+ * gnulib-local/lib/uninorm.h.diff: New file.
+ * gnulib-local/Makefile.am (EXTRA_DIST): Add it.
+ * lib/unistring/woe32dll.in.h: New file.
+ * woe32dll/unistring-exports.c: New file.
+ * woe32dll/export.h: New file, from GNU gettext.
+ * Makefile.am (EXTRA_DIST): Add it.
+ * configure.ac (WOE32DLL): New conditional.
+ (DLL_VARIABLE): New substituted variable.
+ (AC_CONFIG_FILES): Add lib/unistring/woe32dll.h.
+ * lib/Makefile.am (nobase_nodist_include_HEADERS): Add
+ unistring/woe32dll.h.
+ (libunistring_la_SOURCES) [WOE32DLL]: Add unistring-exports.c.
+ (libunistring_la_LDFLAGS) [WOE32DLL]: Add --export-all-symbols linker
+ flag.
+ (config.h): Remove unused macro DLL_VARIABLE.
+
+2008-04-19 Bruno Haible <bruno@clisp.org>
+
+ Don't use unreliable linker options on native Windows.
+ * m4/woe32-dll.m4: New file, from GNU gettext.
+ * configure.ac: Invoke gl_WOE32_DLL.
+
+2008-04-11 Bruno Haible <bruno@clisp.org>
+
+ Limit the exported symbols through a config.h trick.
+ * m4/exported.m4: New file, from GNU gettext.
+ * lib/exported.sh.in: New file, from GNU gettext.
+ * configure.ac: Invoke gt_GLOBAL_SYMBOL_PIPE.
+ (AC_CONFIG_FILES): Add lib/exported.sh.
+ * lib/declared.sh: New file, borrowing from GNU gettext's moopp.
+ * lib/Makefile.am (HEADERS_WITH_EXTERNS): New variable.
+ (libunistring.sym, config.h): New rules.
+ (MOSTLYCLEANFILES, MAINTAINERCLEANFILES): Update accordingly.
+ (EXTRA_DIST): Add libunistring.sym, declared.sh.
+ * tests/Makefile.am (DEFAULT_INCLUDES): New variable.
+ * HACKING: Require GNU sed.
+
+2008-04-10 Bruno Haible <bruno@clisp.org>
+
+ Install all auxiliary include files in a subdirectory.
+ * lib/unistring/inline.h: Renamed from lib/unistring-inline.h.
+ * configure.ac: Invoke AC_PROG_MKDIR_P.
+ * lib/Makefile.am (nobase_include_HEADERS): Renamed from
+ include_HEADERS. Change unistring-inline.h to unistring/inline.h.
+ (nobase_nodist_include_HEADERS): Renamed from nodist_include_HEADERS.
+ Change unistring-*.h to unistring/*.h.
+ (unistring/stdbool.h): Renamed from unistring-stdbool.h. Ensure target
+ directory exists.
+ (unistring/stdint.h): Renamed from unistring-stdint.h. Ensure target
+ directory exists.
+ (unistring/localcharset.h): Renamed from unistring-localcharset.h.
+ Ensure target directory exists.
+ (unistring/iconveh.h): Renamed from unistring-iconveh.h Ensure target
+ directory exists.
+ (BUILT_SOURCES, MOSTLYCLEANFILES, CLEANFILES): Update.
+ (CLEANDIRS, CLEANDIRS_NOT_IN_SRCDIR): New variables.
+ (clean-local): New rule.
+ * gnulib-local/lib/unicase.h.diff: Update include statements.
+ * gnulib-local/lib/uniconv.h.diff: Likewise.
+ * gnulib-local/lib/unictype.h.diff: Likewise.
+ * gnulib-local/lib/unilbrk.h.diff: Likewise.
+ * gnulib-local/lib/unistr.h.diff: Likewise.
+ * gnulib-local/lib/unitypes.h.diff: Likewise.
+ * gnulib-local/lib/uniwidth.h.diff: Likewise.
+ * lib/unistring-notinline.h: Likewise.
+
+2008-04-10 Bruno Haible <bruno@clisp.org>
+
+ * doc/uniconv.h: Document the 'enum iconv_ilseq_handler' type.
+
+2008-04-10 Bruno Haible <bruno@clisp.org>
+
+ * doc/uniwbrk.texi (Word break property): Remove extra white space.
+
+2008-04-10 Bruno Haible <bruno@clisp.org>
+
+ Provide an installable iconveh.h replacement.
+ * gnulib-local/lib/uniconv.h.diff: Include unistring-iconveh.h instead
+ of iconveh.h. Don't include striconveha.h.
+ * lib/Makefile.am (nodist_include_HEADERS): Add unistring-iconveh.h.
+ (unistring-iconveh.h): New rule.
+ (BUILT_SOURCES, MOSTLYCLEANFILES, CLEANFILES): Update accordingly.
+
+2008-04-10 Bruno Haible <bruno@clisp.org>
+
+ Provide an installable localcharset.h replacement.
+ * gnulib-local/lib/uniconv.h.diff: New file.
+ * gnulib-local/lib/unilbrk.h.diff: New file.
+ * gnulib-local/lib/uniwidth.h.diff: New file.
+ * gnulib-local/Makefile.am (EXTRA_DIST): Add them.
+ * lib/Makefile.am (nodist_include_HEADERS): Add unistring-localcharset.h.
+ (unistring-localcharset.h): New rule.
+ (BUILT_SOURCES, MOSTLYCLEANFILES, CLEANFILES): Update accordingly.
+
+2008-04-10 Bruno Haible <bruno@clisp.org>
+
+ * INSTALL (Multiple Architectures): Recommend to use
+ --disable-dependency-tracking.
+ Suggested by Peter O'Gorman <peter@pogma.com>.
+
+2008-04-10 Bruno Haible <bruno@clisp.org>
+
+ Replace HAVE_INLINE in installed include files.
+ * lib/unistring-inline.h: New file.
+ * lib/unistring-notinline.h: New file.
+ * autogen.sh: Postprocess unistr.h.
+ * gnulib-local/lib/unistr.h.diff: Also include unistring-inline.h.
+ * lib/Makefile.am (include_HEADERS): Add unistring-inline.h.
+ (noinst_HEADERS): New variable.
+ (AM_CPPFLAGS): Define IN_LIBUNISTRING.
+
+2008-04-10 Bruno Haible <bruno@clisp.org>
+
+ Provide installable <stdbool.h>, <stdint.h> replacements.
+ * autogen.sh: Pass --local-dir option to gnulib-tool.
+ * configure.ac (AC_CONFIG_FILES): Add gnulib-local/Makefile.
+ * Makefile.am (SUBDIRS): Add gnulib-local.
+ * gnulib-local/Makefile.am: New file.
+ * gnulib-local/lib/unitypes.h.diff: New file.
+ * gnulib-local/lib/unistr.h.diff: New file.
+ * gnulib-local/lib/unictype.h.diff: New file.
+ * gnulib-local/lib/unicase.h.diff: New file.
+ * lib/stdint.mini.h: New file, a reduced version of gnulib's
+ lib/stdint.in.h.
+ * lib/Makefile.am (nodist_include_HEADERS): New variable.
+ (unistring-stdbool.h, unistring-stdint.h): New rules.
+ (BUILT_SOURCES, MOSTLYCLEANFILES, CLEANFILES): Update accordingly.
+ (EXTRA_DIST): Add stdint.mini.h.
+
+2008-04-09 Bruno Haible <bruno@clisp.org>
+
+ Build and install documentation.
+ * autogen.sh: Fetch a recent copy of texinfo.tex.
+ * configure.ac (TEXI2DVI, DVIPS, PERL): New substituted variables.
+ (AC_CONFIG_FILES): Add doc/Makefile.
+ * m4/fixautomake.m4: New file, from GNU gettext.
+ * Makefile.am (SUBDIRS): Add doc.
+ (EXTRA_DIST): Add build-aux/texi2html.
+ * doc/Makefile.am: New file.
+ * doc/libunistring.texi: Set document encoding to UTF-8.
+ (arrow): Add a fallback definition for texi2html.
+
+ Put the table of contents at the beginning, not at the end.
+ * build-aux/texi2html (INLINE_CONTENTS): Set to 1.
+ (THISVERSION): Append an 'a'.
+
+ * build-aux/texi2html: New file, from texinfo-1.78.
+
+2008-04-06 Bruno Haible <bruno@clisp.org>
+
+ Add support for checking with valgrind.
+ * build-aux/run-test: New file.
+ * Makefile.am (EXTRA_DIST): Add it.
+ * tests/Makefile.am (CHECKER, CHECKER_END_OF_COMMENTS): New variables.
+ (TESTS_ENVIRONMENT): Add a run-test invocation.
+ * HACKING: Mention how to use valgrind.
+
+2008-04-06 Bruno Haible <bruno@clisp.org>
+
+ * Makefile.am (EXTRA_DIST): Add version.sh, DEPENDENCIES, HACKING,
+ autogen.sh, build-aux/fixaclocal.
+ * version.sh: New file.
+
+2008-04-05 Bruno Haible <bruno@clisp.org>
+
+ Allow building as a shared library on AIX.
+ * lib/Makefile.am (libunistring_la_LDFLAGS): Add -no-undefined flag
+ and INTL_MACOSX_LIBS (for MacOS X).
+
+2008-04-05 Bruno Haible <bruno@clisp.org>
+
+ Use libtool versioning.
+ * lib/Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): New variables.
+ (libunistring_la_LDFLAGS): Pass -version-info option.
+
+2008-04-05 Bruno Haible <bruno@clisp.org>
+
+ * gnulib-m4/gnulib-cache.m4: New file, generated by gnulib-tool.
+
+ * autogen.sh: New file.
+ * configure.ac: New file.
+ * build-aux/fixaclocal: New file, from GNU gettext.
+ * Makefile.am: New file.
+ * lib/Makefile.am: New file.
+ * tests/Makefile.am: New file.
+
+2008-04-05 Bruno Haible <bruno@clisp.org>
+
+ * INSTALL: Renamed from INSTALL.generic. Add section about
+ prerequisites,
+
+2008-04-05 Bruno Haible <bruno@clisp.org>
+
+ * doc/*.texi: Add index entries.
+
+2008-04-05 Bruno Haible <bruno@clisp.org>
+
+ * doc/unistr.texi (Elementary string functions): Document
+ u{8,16,32}_cmp2.
+
+2008-04-05 Bruno Haible <bruno@clisp.org>
+
+ * doc/libunistring.texi (func, posixfunc): New macros.
+ Use them where appropriate.
+ * doc/unistr.texi: Likewise.
+
+2008-04-05 Bruno Haible <bruno@clisp.org>
+
+ * doc/libunistring.texi: Complete the detailmenu.
+
+2008-04-05 Bruno Haible <bruno@clisp.org>
+
+ * doc/libunistring.texi: New file.
+ * doc/unitypes.texi: New file, based on gnulib/lib/unitypes.h.
+ * doc/unistr.texi: New file, based on gnulib/lib/unistr.h.
+ * doc/uniconv.texi: New file, based on gnulib/lib/uniconv.h.
+ * doc/unistdio.texi: New file, based on gnulib/lib/unistdio.h.
+ * doc/uniname.texi: New file, based on gnulib/lib/uniname.h.
+ * doc/unictype.texi: New file, based on gnulib/lib/unictype.h.
+ * doc/uniwidth.texi: New file, based on gnulib/lib/uniwidth.h.
+ * doc/uniwbrk.texi: New file, based on gnulib/lib/uniwbrk.h.
+ * doc/unilbrk.texi: New file, based on gnulib/lib/unilbrk.h.
+ * doc/uninorm.texi: New file, based on gnulib/lib/uninorm.h.
+ * doc/unicase.texi: New file, based on gnulib/lib/unicase.h.
+ * doc/uniregex.texi: New file.
+ * doc/gpl.texi: New file, from gnulib.
+ * doc/lgpl.texi: New file, from gnulib.
+ * doc/fdl.texi: New file, from gnulib.
+
+2008-03-14 Bruno Haible <bruno@clisp.org>
+
+ * INSTALL.generic: New file, from gnulib/doc/INSTALL.UTF-8 with an
+ added paragraph mentioning --with-libiconv-prefix.
+
+ * COPYING.LIB: New file, from gnulib/doc/COPYING.LESSERv3.
+ * COPYING: New file, from gnulib/doc/COPYINGv3.
+
+ * m4/libtool.m4: New file, from libtool-2.2.6, with modifications:
+ 2008-04-06 Bruno Haible <bruno@clisp.org>
+ * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use
+ CONFIG_SHELL; don't assume that the Makefile.in will set SHELL
+ to ${CONFIG_SHELL}.
+ * m4/ltoptions.m4: New file, from libtool-2.2.6.
+ * m4/ltsugar.m4: Likewise.
+ * m4/ltversion.m4: Likewise.
+ * m4/lt~obsolete.m4: Likewise.
+ * build-aux/ltmain.sh: New file, from libtool-2.2.6, with
+ modifications.
+ 2008-09-28 Bruno Haible <bruno@clisp.org>
+ * build-aux/ltmain.sh (func_emit_cwrapperexe_src): On mingw,
+ preprocess the argument vector through prepare_spawn.
+
+ * build-aux/config.guess: New file, from gnulib, version 2009-02-03.
+ * build-aux/config.sub: Likewise.
+
+ * README: New file.
+ * AUTHORS: New file.
+ * DEPENDENCIES: New file.
+ * BUGS: New file.
+ * HACKING: New file.
+ * THANKS: New file.
+ * NEWS: New file.
+
diff --git a/DEPENDENCIES b/DEPENDENCIES
new file mode 100644
index 00000000..166db6ff
--- /dev/null
+++ b/DEPENDENCIES
@@ -0,0 +1,17 @@
+The following packages should be installed before GNU libunistring is
+installed:
+
+* GNU libiconv
+ + Not needed on systems with
+ - glibc 2.2 or newer, or
+ - MacOS X 10.3 or newer, or
+ - NetBSD 3.0 or newer.
+ But highly recommended on all other systems.
+ Needed for character set conversion of strings from/to Unicode.
+ + Homepage:
+ http://www.gnu.org/software/libiconv/
+ + Download:
+ http://ftp.gnu.org/gnu/libiconv/
+ ftp://ftp.gnu.org/gnu/libiconv/
+ + If it is installed in a nonstandard directory, pass the option
+ --with-libiconv-prefix=DIR to 'configure'.
diff --git a/HACKING b/HACKING
new file mode 100644
index 00000000..227e0035
--- /dev/null
+++ b/HACKING
@@ -0,0 +1,84 @@
+All you need to know when hacking (modifying) GNU libunistring or when building
+it off a git checkout.
+
+
+Requirements
+============
+
+You will need reasonably recent versions of the build tools:
+
+ * A C compiler. Such as GNU GCC.
+ + Homepage:
+ http://gcc.gnu.org/
+
+ * GNU automake
+ + Homepage:
+ http://www.gnu.org/software/automake/
+
+ * GNU autoconf
+ + Homepage:
+ http://www.gnu.org/software/autoconf/
+
+ * GNU m4
+ + Homepage:
+ http://www.gnu.org/software/m4/
+
+ * GNU gperf
+ + Homepage:
+ http://www.gnu.org/software/gperf/
+
+ * GNU sed
+ + Homepage:
+ http://www.gnu.org/software/sed/
+
+ * Perl
+ + Homepage:
+ http://www.perl.org/
+
+ * Either an internet connection or a recent copy of GNU gnulib.
+ In order to work with the HEAD of libunistring development, you need the
+ HEAD of the gnulib development.
+ In order to work with the version of libunistring at a given date, you need
+ the version of gnulib of the same date.
+ In order to work with a released tarball of libunistring, you need the
+ particular version of gnulib which is indicated in the GNULIB_GIT_COMMIT
+ variable in version.sh.
+ + Homepage:
+ http://www.gnu.org/software/gnulib/
+
+And, of course, the packages listed in the DEPENDENCIES file.
+
+Then you can run the 'autogen.sh' script
+
+
+Sources
+=======
+
+Most of the sources have their origin in gnulib.
+
+
+Building
+========
+
+See the INSTALL file for generic instructions.
+
+To speed up the build:
+ 1) You can use the configure option --disable-namespacing. The speed up is
+ by a factor of 1.5. The resulting library is not namespace-clean and
+ therefore should not be installed (if you don't want to risk collisions
+ with other libraries) and should certainly not be distributed.
+ 2) You can use the configure option --disable-static. The speed up is by
+ a factor of 1.6. The resulting library cannot be used for static
+ linking and therefore should certainly not be distributed.
+
+
+Running the testsuite in valgrind
+=================================
+
+To run the test suite with a memory access checker and leak detector such as
+valgrind,
+ 1) configure with the options --disable-shared and CFLAGS="-g",
+ 2) run "make",
+ 3) edit tests/Makefile to uncomment the appropriate definition of the CHECKER
+ macro,
+ 4) run "make check".
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 00000000..9d4ec2e4
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,314 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007, 2008 Free Software Foundation, Inc.
+
+ This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Prerequisites
+=============
+
+ This package depends on a few other packages. They are listed in
+the file ‘DEPENDENCIES’. It is recommended to install the listed
+packages before installing this package.
+
+Basic Installation
+==================
+
+ Briefly, the shell commands ‘./configure; make; make install’ should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the ‘README’ file for
+instructions specific to this package.
+
+ The ‘configure’ shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a ‘Makefile’ in each directory of the package.
+It may also create one or more ‘.h’ files containing system-dependent
+definitions. Finally, it creates a shell script ‘config.status’ that
+you can run in the future to recreate the current configuration, and a
+file ‘config.log’ containing compiler output (useful mainly for
+debugging ‘configure’).
+
+ It can also use an optional file (typically called ‘config.cache’
+and enabled with ‘--cache-file=config.cache’ or simply ‘-C’) that saves
+the results of its tests to speed up reconfiguring. Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+ If you need to do unusual things to compile the package, please try
+to figure out how ‘configure’ could check whether to do them, and mail
+diffs or instructions to the address given in the ‘README’ so they can
+be considered for the next release. If you are using the cache, and at
+some point ‘config.cache’ contains results you don't want to keep, you
+may remove or edit it.
+
+ The file ‘configure.ac’ (or ‘configure.in’) is used to create
+‘configure’ by a program called ‘autoconf’. You need ‘configure.ac’ if
+you want to change it or regenerate ‘configure’ using a newer version
+of ‘autoconf’.
+
+The simplest way to compile this package is:
+
+ 1. ‘cd’ to the directory containing the package's source code and type
+ ‘./configure’ to configure the package for your system.
+
+ Running ‘configure’ might take a while. While running, it prints
+ some messages telling which features it is checking for.
+
+ 2. Type ‘make’ to compile the package.
+
+ 3. Optionally, type ‘make check’ to run any self-tests that come with
+ the package.
+
+ 4. Type ‘make install’ to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing ‘make clean’. To also remove the
+ files that ‘configure’ created (so you can compile the package for
+ a different kind of computer), type ‘make distclean’. There is
+ also a ‘make maintainer-clean’ target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+ 6. Often, you can also type ‘make uninstall’ to remove the installed
+ files again.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the ‘configure’ script does not know about. Run ‘./configure --help’
+for details on some of the pertinent environment variables.
+
+ You can give ‘configure’ initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you can use GNU ‘make’. ‘cd’ to the
+directory where you want the object files and executables to go and run
+the ‘configure’ script. ‘configure’ automatically checks for the
+source code in the directory that ‘configure’ is in and in ‘..’.
+
+ With a non-GNU ‘make’, it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use ‘make distclean’ before
+reconfiguring for another architecture.
+
+ On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple ‘-arch’ options to the
+compiler but only a single ‘-arch’ option to the preprocessor. Like
+this:
+
+ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CPP="gcc -E" CXXCPP="g++ -E" \
+ --disable-dependency-tracking
+
+ This is not guaranteed to produce working output in all cases. You
+may have to build one architecture at a time and combine the results
+using the ‘lipo’ tool if you have problems.
+
+Installation Names
+==================
+
+ By default, ‘make install’ installs the package's commands under
+‘/usr/local/bin’, include files under ‘/usr/local/include’, etc. You
+can specify an installation prefix other than ‘/usr/local’ by giving
+‘configure’ the option ‘--prefix=PREFIX’.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option ‘--exec-prefix=PREFIX’ to ‘configure’, the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like ‘--bindir=DIR’ to specify different values for particular
+kinds of files. Run ‘configure --help’ for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving ‘configure’ the
+option ‘--program-prefix=PREFIX’ or ‘--program-suffix=SUFFIX’.
+
+Optional Features
+=================
+
+ Some packages pay attention to ‘--enable-FEATURE’ options to
+‘configure’, where FEATURE indicates an optional part of the package.
+They may also pay attention to ‘--with-PACKAGE’ options, where PACKAGE
+is something like ‘gnu-as’ or ‘x’ (for the X Window System). The
+‘README’ should mention any ‘--enable-’ and ‘--with-’ options that the
+package recognizes.
+
+ For packages that use the X Window System, ‘configure’ can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the ‘configure’ options ‘--x-includes=DIR’ and
+‘--x-libraries=DIR’ to specify their locations.
+
+ For packages that use the GNU libiconv library, you can use the
+‘configure’ option ‘--with-libiconv-prefix’ to specify the prefix you
+used while installing GNU libiconv. This option is not necessary if
+that other prefix is the same as the one now specified through --prefix.
+
+Particular systems
+==================
+
+ On HP-UX, the default C compiler is not ANSI C compatible. If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+ ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its ‘<wchar.h>’ header file. The option ‘-nodtk’ can be used as
+a workaround. If GNU CC is not installed, it is therefore recommended
+to try
+
+ ./configure CC="cc"
+
+and if that doesn't work, try
+
+ ./configure CC="cc -nodtk"
+
+ On Solaris, don't put ‘/usr/ucb’ early in your ‘PATH’. This
+directory contains several dysfunctional programs; working variants of
+these programs are available in ‘/usr/bin’. So, if you need ‘/usr/ucb’
+in your ‘PATH’, put it _after_ ‘/usr/bin’.
+
+ On Haiku, software installed for all users goes in ‘/boot/common’,
+not ‘/usr/local’. It is recommended to use the following options:
+
+ ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+ There may be some features ‘configure’ cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on. Usually, assuming the package is built to be run on the
+_same_ architectures, ‘configure’ can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+‘--build=TYPE’ option. TYPE can either be a short name for the system
+type, such as ‘sun4’, or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS KERNEL-OS
+
+ See the file ‘config.sub’ for the possible values of each field. If
+‘config.sub’ isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option ‘--target=TYPE’ to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with ‘--host=TYPE’.
+
+Sharing Defaults
+================
+
+ If you want to set default values for ‘configure’ scripts to share,
+you can create a site shell script called ‘config.site’ that gives
+default values for variables like ‘CC’, ‘cache_file’, and ‘prefix’.
+‘configure’ looks for ‘PREFIX/share/config.site’ if it exists, then
+‘PREFIX/etc/config.site’ if it exists. Or, you can set the
+‘CONFIG_SITE’ environment variable to the location of the site script.
+A warning: not all ‘configure’ scripts look for a site script.
+
+Defining Variables
+==================
+
+ Variables not defined in a site shell script can be set in the
+environment passed to ‘configure’. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the ‘configure’ command line, using ‘VAR=value’. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified ‘gcc’ to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for ‘CONFIG_SHELL’ due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
+
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+‘configure’ Invocation
+======================
+
+ ‘configure’ recognizes the following options to control how it
+operates.
+
+‘--help’
+‘-h’
+ Print a summary of all of the options to ‘configure’, and exit.
+
+‘--help=short’
+‘--help=recursive’
+ Print a summary of the options unique to this package's
+ ‘configure’, and exit. The ‘short’ variant lists options used
+ only in the top level, while the ‘recursive’ variant lists options
+ also present in any nested packages.
+
+‘--version’
+‘-V’
+ Print the version of Autoconf used to generate the ‘configure’
+ script, and exit.
+
+‘--cache-file=FILE’
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally ‘config.cache’. FILE defaults to ‘/dev/null’ to
+ disable caching.
+
+‘--config-cache’
+‘-C’
+ Alias for ‘--cache-file=config.cache’.
+
+‘--quiet’
+‘--silent’
+‘-q’
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to ‘/dev/null’ (any error
+ messages will still be shown).
+
+‘--srcdir=DIR’
+ Look for the package's source code in directory DIR. Usually
+ ‘configure’ can determine that directory automatically.
+
+‘--prefix=DIR’
+ Use DIR as the installation prefix. *note Installation Names::
+ for more details, including other options available for fine-tuning
+ the installation locations.
+
+‘--no-create’
+‘-n’
+ Run the configure checks, but stop before creating any output
+ files.
+
+‘configure’ also accepts some other, not widely useful, options. Run
+‘configure --help’ for more details.
+
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 00000000..91c0bf34
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,41 @@
+## Makefile for the toplevel directory of GNU libunistring.
+## Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+## Process this file with automake to produce Makefile.in.
+
+AUTOMAKE_OPTIONS = 1.5 gnu no-dependencies
+ACLOCAL = build-aux/fixaclocal @ACLOCAL@
+ACLOCAL_AMFLAGS = -I m4 -I gnulib-m4
+
+SUBDIRS = doc gnulib-local lib tests
+
+EXTRA_DIST = \
+ version.sh BUGS DEPENDENCIES HACKING autogen.sh \
+ build-aux/fixaclocal build-aux/texi2html build-aux/run-test
+
+
+# Allow users to use "gnulib-tool --update".
+EXTRA_DIST += gnulib-m4/gnulib-cache.m4
+
+
+# Cygwin support.
+
+EXTRA_DIST += woe32dll/export.h
+
+
+# Woe32 support.
+
+EXTRA_DIST += README.woe32 build-aux/windres-options
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 00000000..bc56d49f
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,1158 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+ $(top_srcdir)/configure \
+ $(top_srcdir)/lib/unistring/version.in.h \
+ $(top_srcdir)/lib/unistring/woe32dll.in.h AUTHORS COPYING \
+ COPYING.LIB ChangeLog INSTALL NEWS THANKS build-aux/compile \
+ build-aux/config.guess build-aux/config.rpath \
+ build-aux/config.sub build-aux/depcomp build-aux/install-sh \
+ build-aux/ltmain.sh build-aux/mdate-sh build-aux/missing \
+ build-aux/texinfo.tex
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
+ $(top_srcdir)/gnulib-m4/alloca.m4 \
+ $(top_srcdir)/gnulib-m4/codeset.m4 \
+ $(top_srcdir)/gnulib-m4/eealloc.m4 \
+ $(top_srcdir)/gnulib-m4/environ.m4 \
+ $(top_srcdir)/gnulib-m4/errno_h.m4 \
+ $(top_srcdir)/gnulib-m4/error.m4 \
+ $(top_srcdir)/gnulib-m4/exitfail.m4 \
+ $(top_srcdir)/gnulib-m4/exponentd.m4 \
+ $(top_srcdir)/gnulib-m4/exponentf.m4 \
+ $(top_srcdir)/gnulib-m4/exponentl.m4 \
+ $(top_srcdir)/gnulib-m4/extensions.m4 \
+ $(top_srcdir)/gnulib-m4/float_h.m4 \
+ $(top_srcdir)/gnulib-m4/fpieee.m4 \
+ $(top_srcdir)/gnulib-m4/frexp.m4 \
+ $(top_srcdir)/gnulib-m4/frexpl.m4 \
+ $(top_srcdir)/gnulib-m4/getpagesize.m4 \
+ $(top_srcdir)/gnulib-m4/glibc21.m4 \
+ $(top_srcdir)/gnulib-m4/gnulib-common.m4 \
+ $(top_srcdir)/gnulib-m4/gnulib-comp.m4 \
+ $(top_srcdir)/gnulib-m4/iconv.m4 \
+ $(top_srcdir)/gnulib-m4/iconv_h.m4 \
+ $(top_srcdir)/gnulib-m4/iconv_open.m4 \
+ $(top_srcdir)/gnulib-m4/include_next.m4 \
+ $(top_srcdir)/gnulib-m4/inline.m4 \
+ $(top_srcdir)/gnulib-m4/intlmacosx.m4 \
+ $(top_srcdir)/gnulib-m4/intmax_t.m4 \
+ $(top_srcdir)/gnulib-m4/inttypes_h.m4 \
+ $(top_srcdir)/gnulib-m4/isnand.m4 \
+ $(top_srcdir)/gnulib-m4/isnanf.m4 \
+ $(top_srcdir)/gnulib-m4/isnanl.m4 \
+ $(top_srcdir)/gnulib-m4/lcmessage.m4 \
+ $(top_srcdir)/gnulib-m4/ldexpl.m4 \
+ $(top_srcdir)/gnulib-m4/lib-ld.m4 \
+ $(top_srcdir)/gnulib-m4/lib-link.m4 \
+ $(top_srcdir)/gnulib-m4/lib-prefix.m4 \
+ $(top_srcdir)/gnulib-m4/localcharset.m4 \
+ $(top_srcdir)/gnulib-m4/locale-fr.m4 \
+ $(top_srcdir)/gnulib-m4/locale-ja.m4 \
+ $(top_srcdir)/gnulib-m4/locale-tr.m4 \
+ $(top_srcdir)/gnulib-m4/locale-zh.m4 \
+ $(top_srcdir)/gnulib-m4/locale_h.m4 \
+ $(top_srcdir)/gnulib-m4/localename.m4 \
+ $(top_srcdir)/gnulib-m4/longlong.m4 \
+ $(top_srcdir)/gnulib-m4/malloc.m4 \
+ $(top_srcdir)/gnulib-m4/malloca.m4 \
+ $(top_srcdir)/gnulib-m4/math_h.m4 \
+ $(top_srcdir)/gnulib-m4/mbchar.m4 \
+ $(top_srcdir)/gnulib-m4/mbiter.m4 \
+ $(top_srcdir)/gnulib-m4/mbrtowc.m4 \
+ $(top_srcdir)/gnulib-m4/mbsinit.m4 \
+ $(top_srcdir)/gnulib-m4/mbstate_t.m4 \
+ $(top_srcdir)/gnulib-m4/memchr.m4 \
+ $(top_srcdir)/gnulib-m4/minmax.m4 \
+ $(top_srcdir)/gnulib-m4/mmap-anon.m4 \
+ $(top_srcdir)/gnulib-m4/multiarch.m4 \
+ $(top_srcdir)/gnulib-m4/nocrash.m4 \
+ $(top_srcdir)/gnulib-m4/printf-frexp.m4 \
+ $(top_srcdir)/gnulib-m4/printf-frexpl.m4 \
+ $(top_srcdir)/gnulib-m4/printf.m4 \
+ $(top_srcdir)/gnulib-m4/relocatable-lib.m4 \
+ $(top_srcdir)/gnulib-m4/setenv.m4 \
+ $(top_srcdir)/gnulib-m4/signbit.m4 \
+ $(top_srcdir)/gnulib-m4/size_max.m4 \
+ $(top_srcdir)/gnulib-m4/stdbool.m4 \
+ $(top_srcdir)/gnulib-m4/stdint.m4 \
+ $(top_srcdir)/gnulib-m4/stdint_h.m4 \
+ $(top_srcdir)/gnulib-m4/stdlib_h.m4 \
+ $(top_srcdir)/gnulib-m4/strerror.m4 \
+ $(top_srcdir)/gnulib-m4/string_h.m4 \
+ $(top_srcdir)/gnulib-m4/unistd_h.m4 \
+ $(top_srcdir)/gnulib-m4/vasnprintf.m4 \
+ $(top_srcdir)/gnulib-m4/wchar.m4 \
+ $(top_srcdir)/gnulib-m4/wchar_t.m4 \
+ $(top_srcdir)/gnulib-m4/wctob.m4 \
+ $(top_srcdir)/gnulib-m4/wctype.m4 \
+ $(top_srcdir)/gnulib-m4/wcwidth.m4 \
+ $(top_srcdir)/gnulib-m4/wint_t.m4 \
+ $(top_srcdir)/gnulib-m4/xalloc.m4 \
+ $(top_srcdir)/gnulib-m4/xsize.m4 $(top_srcdir)/m4/exported.m4 \
+ $(top_srcdir)/m4/init-package-version.m4 \
+ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/woe32-dll.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = lib/unistring/version.h lib/unistring/woe32dll.h
+CONFIG_CLEAN_VPATH_FILES =
+depcomp =
+am__depfiles_maybe =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir dist dist-all distcheck
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ { test ! -d "$(distdir)" \
+ || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -fr "$(distdir)"; }; }
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = build-aux/fixaclocal @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VARIABLE = @DLL_VARIABLE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVIPS = @DVIPS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLOAT_H = @FLOAT_H@
+GLIBC21 = @GLIBC21@
+GLOBAL_SYMBOL_PIPE = @GLOBAL_SYMBOL_PIPE@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CEILF = @GNULIB_CEILF@
+GNULIB_CEILL = @GNULIB_CEILL@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FLOORF = @GNULIB_FLOORF@
+GNULIB_FLOORL = @GNULIB_FLOORL@
+GNULIB_FREXP = @GNULIB_FREXP@
+GNULIB_FREXPL = @GNULIB_FREXPL@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_ISFINITE = @GNULIB_ISFINITE@
+GNULIB_ISINF = @GNULIB_ISINF@
+GNULIB_ISNAN = @GNULIB_ISNAN@
+GNULIB_ISNAND = @GNULIB_ISNAND@
+GNULIB_ISNANF = @GNULIB_ISNANF@
+GNULIB_ISNANL = @GNULIB_ISNANL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LDEXPL = @GNULIB_LDEXPL@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MATHL = @GNULIB_MATHL@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_ROUND = @GNULIB_ROUND@
+GNULIB_ROUNDF = @GNULIB_ROUNDF@
+GNULIB_ROUNDL = @GNULIB_ROUNDL@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SIGNBIT = @GNULIB_SIGNBIT@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_TRUNC = @GNULIB_TRUNC@
+GNULIB_TRUNCF = @GNULIB_TRUNCF@
+GNULIB_TRUNCL = @GNULIB_TRUNCL@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
+HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@
+HAVE_DECL_ASINL = @HAVE_DECL_ASINL@
+HAVE_DECL_ATANL = @HAVE_DECL_ATANL@
+HAVE_DECL_COSL = @HAVE_DECL_COSL@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_EXPL = @HAVE_DECL_EXPL@
+HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@
+HAVE_DECL_LOGL = @HAVE_DECL_LOGL@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SINL = @HAVE_DECL_SINL@
+HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_TANL = @HAVE_DECL_TANL@
+HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@
+HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_GLOBAL_SYMBOL_PIPE = @HAVE_GLOBAL_SYMBOL_PIPE@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISNAND = @HAVE_ISNAND@
+HAVE_ISNANF = @HAVE_ISNANF@
+HAVE_ISNANL = @HAVE_ISNANL@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSETENV = @HAVE_UNSETENV@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HEXVERSION = @HEXVERSION@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_H = @LOCALE_H@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NAMESPACING = @NAMESPACING@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FLOAT_H = @NEXT_FLOAT_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_MATH_H = @NEXT_MATH_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+RC = @RC@
+RELOCATABLE = @RELOCATABLE@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CEILF = @REPLACE_CEILF@
+REPLACE_CEILL = @REPLACE_CEILL@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FLOORF = @REPLACE_FLOORF@
+REPLACE_FLOORL = @REPLACE_FLOORL@
+REPLACE_FREXP = @REPLACE_FREXP@
+REPLACE_FREXPL = @REPLACE_FREXPL@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_ISFINITE = @REPLACE_ISFINITE@
+REPLACE_ISINF = @REPLACE_ISINF@
+REPLACE_ISNAN = @REPLACE_ISNAN@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LDEXPL = @REPLACE_LDEXPL@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NAN = @REPLACE_NAN@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_ROUND = @REPLACE_ROUND@
+REPLACE_ROUNDF = @REPLACE_ROUNDF@
+REPLACE_ROUNDL = @REPLACE_ROUNDL@
+REPLACE_SIGNBIT = @REPLACE_SIGNBIT@
+REPLACE_SIGNBIT_USING_GCC = @REPLACE_SIGNBIT_USING_GCC@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_TRUNCL = @REPLACE_TRUNCL@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+TEXI2DVI = @TEXI2DVI@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+VERSION = @VERSION@
+VOID_UNSETENV = @VOID_UNSETENV@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.5 gnu no-dependencies
+ACLOCAL_AMFLAGS = -I m4 -I gnulib-m4
+SUBDIRS = doc gnulib-local lib tests
+
+# Allow users to use "gnulib-tool --update".
+
+# Cygwin support.
+
+# Woe32 support.
+EXTRA_DIST = version.sh BUGS DEPENDENCIES HACKING autogen.sh \
+ build-aux/fixaclocal build-aux/texi2html build-aux/run-test \
+ gnulib-m4/gnulib-cache.m4 woe32dll/export.h README.woe32 \
+ build-aux/windres-options
+all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+ @if test ! -f $@; then \
+ rm -f stamp-h1; \
+ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
+ else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: $(am__configure_deps)
+ ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+lib/unistring/version.h: $(top_builddir)/config.status $(top_srcdir)/lib/unistring/version.in.h
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+lib/unistring/woe32dll.h: $(top_builddir)/config.status $(top_srcdir)/lib/unistring/woe32dll.in.h
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool config.lt
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-lzma: distdir
+ tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+ $(am__remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lzma*) \
+ unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir); chmod a+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__cd) $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @$(am__cd) '$(distuninstallcheck_dir)' \
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile config.h
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
+ ctags-recursive install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am am--refresh check check-am clean clean-generic \
+ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
+ dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
+ distcheck distclean distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags distcleancheck distdir \
+ distuninstallcheck dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am tags tags-recursive uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/NEWS b/NEWS
new file mode 100644
index 00000000..bc52e97e
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,9 @@
+New in 0.9.1:
+* In the include file unicase.h, functions for case mapping of substrings have
+ been added.
+
+New in 0.9:
+* The new include file unicase.h implements case folding.
+* The new include file uninorm.h implements normalization.
+* The new include file uniwbrk.h implements word break determination.
+* The library source code is now part of gnulib.
diff --git a/README b/README
new file mode 100644
index 00000000..118aa23b
--- /dev/null
+++ b/README
@@ -0,0 +1,69 @@
+ GNU LIBUNISTRING - Unicode string library
+
+This library provides functions for manipulating Unicode strings and
+for manipulating C strings according to the Unicode standard.
+
+It consists of the following parts:
+
+ unistr.h elementary string functions
+ uniconv.h conversion from/to legacy encodings
+ unistdio.h formatted output to strings
+ uniname.h character names
+ unictype.h character classification and properties
+ uniwidth.h string width when using nonproportional fonts
+ uniwbrk.h word breaks
+ unilbrk.h line breaking algorithm
+ uninorm.h normalization (composition and decomposition)
+ unicase.h case folding
+ uniregex.h regular expressions (not yet implemented)
+
+libunistring is for you if your application involves non-trivial text
+processing, such as upper/lower case conversions, line breaking, operations
+on words, or more advanced analysis of text. Text provided by the user can,
+in general, contain characters of all kinds of scripts. The text processing
+functions provided by this library handle all scripts and all languages.
+
+libunistring is for you if your application already uses the ISO C / POSIX
+<ctype.h>, <wctype.h> functions and the text it operates on is provided by
+the user and can be in any language.
+
+libunistring is also for you if your application uses Unicode strings as
+internal in-memory representation.
+
+
+Installation
+------------
+
+As usual for GNU packages:
+
+ $ ./configure --prefix=/usr/local
+ $ make
+ $ make install
+
+
+Copyright
+---------
+
+The libunistring library and its header files are under the GNU LGPL, see
+file COPYING.LIB. This license is based on the GNU GPL, see file COPYING.
+
+The documentation is under another license; see in the documentation.
+
+
+Download
+--------
+
+ http://ftp.gnu.org/gnu/libunistring/libunistring-0.9.1.tar.gz
+
+Homepage
+--------
+
+ http://www.gnu.org/software/libunistring/
+
+Bug reports to
+--------------
+
+ <bug-libunistring@gnu.org>
+
+
+Bruno Haible <bruno@clisp.org>
diff --git a/README.woe32 b/README.woe32
new file mode 100644
index 00000000..07c72603
--- /dev/null
+++ b/README.woe32
@@ -0,0 +1,40 @@
+Installation on Woe32 (WinNT/2000/XP/Vista, Win95/98/ME):
+
+This file explains how to create binaries for the mingw execution environment.
+For how to create binaries for the cygwin environment, please see the normal
+INSTALL file. MS Visual C/C++ with "nmake" is no longer supported.
+
+I recommend to use the cygwin environment as the development environment
+and mingw only as the target (runtime, deployment) environment.
+For this, you need to install
+ - cygwin,
+ - the mingw runtime package, also from the cygwin site.
+
+You must not install cygwin programs directly under /usr/local -
+because the mingw compiler and linker would pick up the include files
+and libraries from there, thus introducing an undesired dependency to
+cygwin. You can for example achieve this by using the
+configure option --prefix=/usr/local/cygwin each time you build a
+program for cygwin.
+
+Building for mingw is then achieved through the following preparation
+and configure commands:
+
+ PATH=/usr/local/mingw/bin:$PATH
+ export PATH
+ ./configure --host=i586-pc-mingw32 --prefix=/usr/local/mingw \
+ CPPFLAGS="-mno-cygwin -Wall -I/usr/local/mingw/include" \
+ CFLAGS="-mno-cygwin -O2 -g" \
+ CXXFLAGS="-mno-cygwin -O2 -g" \
+ LDFLAGS="-mno-cygwin -L/usr/local/mingw/lib"
+
+The -mno-cygwin tells the cygwin compiler and linker to build for mingw.
+The -I and -L option are so that packages previously built for the
+same environment are found. The --host option tells the various
+tools that you are building for mingw, not cygwin.
+
+Dependencies:
+
+This package depends on GNU libiconv. (See the file DEPENDENCIES.) Before
+building this package, you need to build GNU libiconv, in the same development
+environment, with the same configure options, and install it ("make install").
diff --git a/THANKS b/THANKS
new file mode 100644
index 00000000..6d5dd374
--- /dev/null
+++ b/THANKS
@@ -0,0 +1,3 @@
+ Thanks to for
+
+The Unicode consortium the Unicode Standard
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 00000000..e07b2825
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,1558 @@
+# generated automatically by aclocal 1.11 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+
+# po.m4 serial 15 (gettext-0.17)
+dnl Copyright (C) 1995-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ(2.50)
+
+dnl Checks for all prerequisites of the po subdirectory.
+AC_DEFUN([AM_PO_SUBDIRS],
+[
+ AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+ AC_REQUIRE([AC_PROG_INSTALL])dnl
+ AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+ AC_REQUIRE([AM_NLS])dnl
+
+ dnl Release version of the gettext macros. This is used to ensure that
+ dnl the gettext macros and po/Makefile.in.in are in sync.
+ AC_SUBST([GETTEXT_MACRO_VERSION], [0.17])
+
+ dnl Perform the following tests also if --disable-nls has been given,
+ dnl because they are needed for "make dist" to work.
+
+ dnl Search for GNU msgfmt in the PATH.
+ dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
+ dnl The second test excludes FreeBSD msgfmt.
+ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+ [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+ :)
+ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+
+ dnl Test whether it is GNU msgfmt >= 0.15.
+changequote(,)dnl
+ case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+ *) MSGFMT_015=$MSGFMT ;;
+ esac
+changequote([,])dnl
+ AC_SUBST([MSGFMT_015])
+changequote(,)dnl
+ case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+ *) GMSGFMT_015=$GMSGFMT ;;
+ esac
+changequote([,])dnl
+ AC_SUBST([GMSGFMT_015])
+
+ dnl Search for GNU xgettext 0.12 or newer in the PATH.
+ dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
+ dnl The second test excludes FreeBSD xgettext.
+ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+ [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+ :)
+ dnl Remove leftover from FreeBSD xgettext call.
+ rm -f messages.po
+
+ dnl Test whether it is GNU xgettext >= 0.15.
+changequote(,)dnl
+ case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+ *) XGETTEXT_015=$XGETTEXT ;;
+ esac
+changequote([,])dnl
+ AC_SUBST([XGETTEXT_015])
+
+ dnl Search for GNU msgmerge 0.11 or newer in the PATH.
+ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
+ [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
+
+ dnl Installation directories.
+ dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
+ dnl have to define it here, so that it can be used in po/Makefile.
+ test -n "$localedir" || localedir='${datadir}/locale'
+ AC_SUBST([localedir])
+
+ dnl Support for AM_XGETTEXT_OPTION.
+ test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
+ AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
+
+ AC_CONFIG_COMMANDS([po-directories], [[
+ for ac_file in $CONFIG_FILES; do
+ # Support "outfile[:infile[:infile...]]"
+ case "$ac_file" in
+ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ esac
+ # PO directories have a Makefile.in generated from Makefile.in.in.
+ case "$ac_file" in */Makefile.in)
+ # Adjust a relative srcdir.
+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+ # In autoconf-2.13 it is called $ac_given_srcdir.
+ # In autoconf-2.50 it is called $srcdir.
+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+ case "$ac_given_srcdir" in
+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+ /*) top_srcdir="$ac_given_srcdir" ;;
+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+ # Treat a directory as a PO directory if and only if it has a
+ # POTFILES.in file. This allows packages to have multiple PO
+ # directories under different names or in different locations.
+ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
+ rm -f "$ac_dir/POTFILES"
+ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+ POMAKEFILEDEPS="POTFILES.in"
+ # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
+ # on $ac_dir but don't depend on user-specified configuration
+ # parameters.
+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+ # The LINGUAS file contains the set of available languages.
+ if test -n "$OBSOLETE_ALL_LINGUAS"; then
+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+ fi
+ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+ # Hide the ALL_LINGUAS assigment from automake < 1.5.
+ eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+ else
+ # The set of available languages was given in configure.in.
+ # Hide the ALL_LINGUAS assigment from automake < 1.5.
+ eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
+ fi
+ # Compute POFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+ # Compute UPDATEPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+ # Compute DUMMYPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+ # Compute GMOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+ case "$ac_given_srcdir" in
+ .) srcdirpre= ;;
+ *) srcdirpre='$(srcdir)/' ;;
+ esac
+ POFILES=
+ UPDATEPOFILES=
+ DUMMYPOFILES=
+ GMOFILES=
+ for lang in $ALL_LINGUAS; do
+ POFILES="$POFILES $srcdirpre$lang.po"
+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+ done
+ # CATALOGS depends on both $ac_dir and the user's LINGUAS
+ # environment variable.
+ INST_LINGUAS=
+ if test -n "$ALL_LINGUAS"; then
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "$LINGUAS"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ INST_LINGUAS="$INST_LINGUAS $presentlang"
+ fi
+ done
+ fi
+ CATALOGS=
+ if test -n "$INST_LINGUAS"; then
+ for lang in $INST_LINGUAS; do
+ CATALOGS="$CATALOGS $lang.gmo"
+ done
+ fi
+ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+ if test -f "$f"; then
+ case "$f" in
+ *.orig | *.bak | *~) ;;
+ *) cat "$f" >> "$ac_dir/Makefile" ;;
+ esac
+ fi
+ done
+ fi
+ ;;
+ esac
+ done]],
+ [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
+ # from automake < 1.5.
+ eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
+ # Capture the value of LINGUAS because we need it to compute CATALOGS.
+ LINGUAS="${LINGUAS-%UNSET%}"
+ ])
+])
+
+dnl Postprocesses a Makefile in a directory containing PO files.
+AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
+[
+ # When this code is run, in config.status, two variables have already been
+ # set:
+ # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
+ # - LINGUAS is the value of the environment variable LINGUAS at configure
+ # time.
+
+changequote(,)dnl
+ # Adjust a relative srcdir.
+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+ # In autoconf-2.13 it is called $ac_given_srcdir.
+ # In autoconf-2.50 it is called $srcdir.
+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+ case "$ac_given_srcdir" in
+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+ /*) top_srcdir="$ac_given_srcdir" ;;
+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+
+ # Find a way to echo strings without interpreting backslash.
+ if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
+ gt_echo='echo'
+ else
+ if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
+ gt_echo='printf %s\n'
+ else
+ echo_func () {
+ cat <<EOT
+$*
+EOT
+ }
+ gt_echo='echo_func'
+ fi
+ fi
+
+ # A sed script that extracts the value of VARIABLE from a Makefile.
+ sed_x_variable='
+# Test if the hold space is empty.
+x
+s/P/P/
+x
+ta
+# Yes it was empty. Look if we have the expected variable definition.
+/^[ ]*VARIABLE[ ]*=/{
+ # Seen the first line of the variable definition.
+ s/^[ ]*VARIABLE[ ]*=//
+ ba
+}
+bd
+:a
+# Here we are processing a line from the variable definition.
+# Remove comment, more precisely replace it with a space.
+s/#.*$/ /
+# See if the line ends in a backslash.
+tb
+:b
+s/\\$//
+# Print the line, without the trailing backslash.
+p
+tc
+# There was no trailing backslash. The end of the variable definition is
+# reached. Clear the hold space.
+s/^.*$//
+x
+bd
+:c
+# A trailing backslash means that the variable definition continues in the
+# next line. Put a nonempty string into the hold space to indicate this.
+s/^.*$/P/
+x
+:d
+'
+changequote([,])dnl
+
+ # Set POTFILES to the value of the Makefile variable POTFILES.
+ sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
+ POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
+ # Compute POTFILES_DEPS as
+ # $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
+ POTFILES_DEPS=
+ for file in $POTFILES; do
+ POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
+ done
+ POMAKEFILEDEPS=""
+
+ if test -n "$OBSOLETE_ALL_LINGUAS"; then
+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+ fi
+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+ # The LINGUAS file contains the set of available languages.
+ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+ else
+ # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
+ sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
+ ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
+ fi
+ # Hide the ALL_LINGUAS assigment from automake < 1.5.
+ eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+ # Compute POFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+ # Compute UPDATEPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+ # Compute DUMMYPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+ # Compute GMOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+ # Compute PROPERTIESFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
+ # Compute CLASSFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
+ # Compute QMFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
+ # Compute MSGFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
+ # Compute RESOURCESDLLFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
+ case "$ac_given_srcdir" in
+ .) srcdirpre= ;;
+ *) srcdirpre='$(srcdir)/' ;;
+ esac
+ POFILES=
+ UPDATEPOFILES=
+ DUMMYPOFILES=
+ GMOFILES=
+ PROPERTIESFILES=
+ CLASSFILES=
+ QMFILES=
+ MSGFILES=
+ RESOURCESDLLFILES=
+ for lang in $ALL_LINGUAS; do
+ POFILES="$POFILES $srcdirpre$lang.po"
+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+ PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
+ CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
+ QMFILES="$QMFILES $srcdirpre$lang.qm"
+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+ MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+ RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
+ done
+ # CATALOGS depends on both $ac_dir and the user's LINGUAS
+ # environment variable.
+ INST_LINGUAS=
+ if test -n "$ALL_LINGUAS"; then
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "$LINGUAS"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ INST_LINGUAS="$INST_LINGUAS $presentlang"
+ fi
+ done
+ fi
+ CATALOGS=
+ JAVACATALOGS=
+ QTCATALOGS=
+ TCLCATALOGS=
+ CSHARPCATALOGS=
+ if test -n "$INST_LINGUAS"; then
+ for lang in $INST_LINGUAS; do
+ CATALOGS="$CATALOGS $lang.gmo"
+ JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
+ QTCATALOGS="$QTCATALOGS $lang.qm"
+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+ TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+ CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
+ done
+ fi
+
+ sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
+ if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
+ # Add dependencies that cannot be formulated as a simple suffix rule.
+ for lang in $ALL_LINGUAS; do
+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+ cat >> "$ac_file.tmp" <<EOF
+$frobbedlang.msg: $lang.po
+ @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
+ \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+ done
+ fi
+ if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
+ # Add dependencies that cannot be formulated as a simple suffix rule.
+ for lang in $ALL_LINGUAS; do
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+ cat >> "$ac_file.tmp" <<EOF
+$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
+ @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
+ \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+ done
+ fi
+ if test -n "$POMAKEFILEDEPS"; then
+ cat >> "$ac_file.tmp" <<EOF
+Makefile: $POMAKEFILEDEPS
+EOF
+ fi
+ mv "$ac_file.tmp" "$ac_file"
+])
+
+dnl Initializes the accumulator used by AM_XGETTEXT_OPTION.
+AC_DEFUN([AM_XGETTEXT_OPTION_INIT],
+[
+ XGETTEXT_EXTRA_OPTIONS=
+])
+
+dnl Registers an option to be passed to xgettext in the po subdirectory.
+AC_DEFUN([AM_XGETTEXT_OPTION],
+[
+ AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
+ XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
+])
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.11], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 10
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], UPC, [depcc="$UPC" am_compiler_list=],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 16
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_PROG_CC_C_O
+# --------------
+# Like AC_PROG_CC_C_O, but changed for automake.
+AC_DEFUN([AM_PROG_CC_C_O],
+[AC_REQUIRE([AC_PROG_CC_C_O])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+ [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# (`yes' being less verbose, `no' or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules],
+[ --enable-silent-rules less verbose build output (undo: `make V=1')
+ --disable-silent-rules verbose build output (undo: `make V=0')])
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no) AM_DEFAULT_VERBOSITY=1;;
+*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([gnulib-m4/00gnulib.m4])
+m4_include([gnulib-m4/alloca.m4])
+m4_include([gnulib-m4/codeset.m4])
+m4_include([gnulib-m4/eealloc.m4])
+m4_include([gnulib-m4/environ.m4])
+m4_include([gnulib-m4/errno_h.m4])
+m4_include([gnulib-m4/error.m4])
+m4_include([gnulib-m4/exitfail.m4])
+m4_include([gnulib-m4/exponentd.m4])
+m4_include([gnulib-m4/exponentf.m4])
+m4_include([gnulib-m4/exponentl.m4])
+m4_include([gnulib-m4/extensions.m4])
+m4_include([gnulib-m4/float_h.m4])
+m4_include([gnulib-m4/fpieee.m4])
+m4_include([gnulib-m4/frexp.m4])
+m4_include([gnulib-m4/frexpl.m4])
+m4_include([gnulib-m4/getpagesize.m4])
+m4_include([gnulib-m4/glibc21.m4])
+m4_include([gnulib-m4/gnulib-common.m4])
+m4_include([gnulib-m4/gnulib-comp.m4])
+m4_include([gnulib-m4/iconv.m4])
+m4_include([gnulib-m4/iconv_h.m4])
+m4_include([gnulib-m4/iconv_open.m4])
+m4_include([gnulib-m4/include_next.m4])
+m4_include([gnulib-m4/inline.m4])
+m4_include([gnulib-m4/intlmacosx.m4])
+m4_include([gnulib-m4/intmax_t.m4])
+m4_include([gnulib-m4/inttypes_h.m4])
+m4_include([gnulib-m4/isnand.m4])
+m4_include([gnulib-m4/isnanf.m4])
+m4_include([gnulib-m4/isnanl.m4])
+m4_include([gnulib-m4/lcmessage.m4])
+m4_include([gnulib-m4/ldexpl.m4])
+m4_include([gnulib-m4/lib-ld.m4])
+m4_include([gnulib-m4/lib-link.m4])
+m4_include([gnulib-m4/lib-prefix.m4])
+m4_include([gnulib-m4/localcharset.m4])
+m4_include([gnulib-m4/locale-fr.m4])
+m4_include([gnulib-m4/locale-ja.m4])
+m4_include([gnulib-m4/locale-tr.m4])
+m4_include([gnulib-m4/locale-zh.m4])
+m4_include([gnulib-m4/locale_h.m4])
+m4_include([gnulib-m4/localename.m4])
+m4_include([gnulib-m4/longlong.m4])
+m4_include([gnulib-m4/malloc.m4])
+m4_include([gnulib-m4/malloca.m4])
+m4_include([gnulib-m4/math_h.m4])
+m4_include([gnulib-m4/mbchar.m4])
+m4_include([gnulib-m4/mbiter.m4])
+m4_include([gnulib-m4/mbrtowc.m4])
+m4_include([gnulib-m4/mbsinit.m4])
+m4_include([gnulib-m4/mbstate_t.m4])
+m4_include([gnulib-m4/memchr.m4])
+m4_include([gnulib-m4/minmax.m4])
+m4_include([gnulib-m4/mmap-anon.m4])
+m4_include([gnulib-m4/multiarch.m4])
+m4_include([gnulib-m4/nocrash.m4])
+m4_include([gnulib-m4/printf-frexp.m4])
+m4_include([gnulib-m4/printf-frexpl.m4])
+m4_include([gnulib-m4/printf.m4])
+m4_include([gnulib-m4/relocatable-lib.m4])
+m4_include([gnulib-m4/setenv.m4])
+m4_include([gnulib-m4/signbit.m4])
+m4_include([gnulib-m4/size_max.m4])
+m4_include([gnulib-m4/stdbool.m4])
+m4_include([gnulib-m4/stdint.m4])
+m4_include([gnulib-m4/stdint_h.m4])
+m4_include([gnulib-m4/stdlib_h.m4])
+m4_include([gnulib-m4/strerror.m4])
+m4_include([gnulib-m4/string_h.m4])
+m4_include([gnulib-m4/unistd_h.m4])
+m4_include([gnulib-m4/vasnprintf.m4])
+m4_include([gnulib-m4/wchar.m4])
+m4_include([gnulib-m4/wchar_t.m4])
+m4_include([gnulib-m4/wctob.m4])
+m4_include([gnulib-m4/wctype.m4])
+m4_include([gnulib-m4/wcwidth.m4])
+m4_include([gnulib-m4/wint_t.m4])
+m4_include([gnulib-m4/xalloc.m4])
+m4_include([gnulib-m4/xsize.m4])
+m4_include([m4/exported.m4])
+m4_include([m4/init-package-version.m4])
+m4_include([m4/libtool.m4])
+m4_include([m4/ltoptions.m4])
+m4_include([m4/ltsugar.m4])
+m4_include([m4/ltversion.m4])
+m4_include([m4/lt~obsolete.m4])
+m4_include([m4/woe32-dll.m4])
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 00000000..e062b33c
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,452 @@
+#!/bin/sh
+# Convenience script for regenerating all autogeneratable files that are
+# omitted from the version control repository. In particular, this script
+# also regenerates all aclocal.m4, config.h.in, Makefile.in, configure files
+# with new versions of autoconf or automake.
+#
+# This script requires autoconf-2.63 and automake-1.11 in the PATH.
+# It also requires either
+# - the GNULIB_TOOL environment variable pointing to the gnulib-tool script
+# in a gnulib checkout, or
+# - the git program in the PATH and an internet connection.
+# It also requires
+# - the gperf program.
+
+# Copyright (C) 2003-2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+# Usage: ./autogen.sh [--skip-gnulib]
+#
+# Usage from a git checkout: ./autogen.sh
+# This uses an up-to-date gnulib checkout.
+#
+# Usage from a released tarball: ./autogen.sh --skip-gnulib
+# This does not use a gnulib checkout.
+
+skip_gnulib=false
+while :; do
+ case "$1" in
+ --skip-gnulib) skip_gnulib=true; shift;;
+ *) break ;;
+ esac
+done
+
+if test $skip_gnulib = false; then
+ # texinfo.tex
+ # The most recent snapshot of it is available in the gnulib repository.
+ # But this is a snapshot, with all possible dangers.
+ # A stable release of it is available through "automake --add-missing --copy",
+ # but that is too old (does not support @arrow{}). So take the version which
+ # matches the latest stable texinfo release.
+ if test ! -f build-aux/texinfo.tex; then
+ { wget -q --timeout=5 -O build-aux/texinfo.tex.tmp 'http://cvs.savannah.gnu.org/viewvc/*checkout*/texinfo/doc/texinfo.tex?root=texinfo&pathrev=texinfo_4_13' \
+ && mv build-aux/texinfo.tex.tmp build-aux/texinfo.tex; \
+ } || rm -f build-aux/texinfo.tex.tmp
+ fi
+ if test -z "$GNULIB_TOOL"; then
+ # Check out gnulib in a subdirectory 'gnulib'.
+ if test -d gnulib; then
+ (cd gnulib && git pull)
+ else
+ git clone git://git.savannah.gnu.org/gnulib.git
+ fi
+ # Now it should contain a gnulib-tool.
+ if test -f gnulib/gnulib-tool; then
+ GNULIB_TOOL=`pwd`/gnulib/gnulib-tool
+ else
+ echo "** warning: gnulib-tool not found" 1>&2
+ fi
+ fi
+ # Skip the gnulib-tool step if gnulib-tool was not found.
+ if test -n "$GNULIB_TOOL"; then
+ if test -f m4/gnulib-cache.m4; then
+ mv -f m4/gnulib-cache.m4 m4/gnulib-cache.m4~
+ fi
+ if test -f lib/Makefile.gnulib; then
+ mv -f lib/Makefile.gnulib lib/Makefile.gnulib~
+ fi
+ GNULIB_MODULES='
+ unitypes
+ unistr/base
+ unistr/u8-check
+ unistr/u8-chr
+ unistr/u8-cmp
+ unistr/u8-cmp2
+ unistr/u8-cpy
+ unistr/u8-cpy-alloc
+ unistr/u8-endswith
+ unistr/u8-mblen
+ unistr/u8-mbsnlen
+ unistr/u8-mbtouc
+ unistr/u8-mbtoucr
+ unistr/u8-mbtouc-unsafe
+ unistr/u8-move
+ unistr/u8-next
+ unistr/u8-prev
+ unistr/u8-set
+ unistr/u8-startswith
+ unistr/u8-stpcpy
+ unistr/u8-stpncpy
+ unistr/u8-strcat
+ unistr/u8-strchr
+ unistr/u8-strcmp
+ unistr/u8-strcoll
+ unistr/u8-strcpy
+ unistr/u8-strcspn
+ unistr/u8-strdup
+ unistr/u8-strlen
+ unistr/u8-strmblen
+ unistr/u8-strmbtouc
+ unistr/u8-strncat
+ unistr/u8-strncmp
+ unistr/u8-strncpy
+ unistr/u8-strnlen
+ unistr/u8-strpbrk
+ unistr/u8-strrchr
+ unistr/u8-strspn
+ unistr/u8-strstr
+ unistr/u8-strtok
+ unistr/u8-to-u16
+ unistr/u8-to-u32
+ unistr/u8-uctomb
+ unistr/u16-check
+ unistr/u16-chr
+ unistr/u16-cmp
+ unistr/u16-cmp2
+ unistr/u16-cpy
+ unistr/u16-cpy-alloc
+ unistr/u16-endswith
+ unistr/u16-mblen
+ unistr/u16-mbsnlen
+ unistr/u16-mbtouc
+ unistr/u16-mbtoucr
+ unistr/u16-mbtouc-unsafe
+ unistr/u16-move
+ unistr/u16-next
+ unistr/u16-prev
+ unistr/u16-set
+ unistr/u16-startswith
+ unistr/u16-stpcpy
+ unistr/u16-stpncpy
+ unistr/u16-strcat
+ unistr/u16-strchr
+ unistr/u16-strcmp
+ unistr/u16-strcoll
+ unistr/u16-strcpy
+ unistr/u16-strcspn
+ unistr/u16-strdup
+ unistr/u16-strlen
+ unistr/u16-strmblen
+ unistr/u16-strmbtouc
+ unistr/u16-strncat
+ unistr/u16-strncmp
+ unistr/u16-strncpy
+ unistr/u16-strnlen
+ unistr/u16-strpbrk
+ unistr/u16-strrchr
+ unistr/u16-strspn
+ unistr/u16-strstr
+ unistr/u16-strtok
+ unistr/u16-to-u32
+ unistr/u16-to-u8
+ unistr/u16-uctomb
+ unistr/u32-check
+ unistr/u32-chr
+ unistr/u32-cmp
+ unistr/u32-cmp2
+ unistr/u32-cpy
+ unistr/u32-cpy-alloc
+ unistr/u32-endswith
+ unistr/u32-mblen
+ unistr/u32-mbsnlen
+ unistr/u32-mbtouc
+ unistr/u32-mbtoucr
+ unistr/u32-mbtouc-unsafe
+ unistr/u32-move
+ unistr/u32-next
+ unistr/u32-prev
+ unistr/u32-set
+ unistr/u32-startswith
+ unistr/u32-stpcpy
+ unistr/u32-stpncpy
+ unistr/u32-strcat
+ unistr/u32-strchr
+ unistr/u32-strcmp
+ unistr/u32-strcoll
+ unistr/u32-strcpy
+ unistr/u32-strcspn
+ unistr/u32-strdup
+ unistr/u32-strlen
+ unistr/u32-strmblen
+ unistr/u32-strmbtouc
+ unistr/u32-strncat
+ unistr/u32-strncmp
+ unistr/u32-strncpy
+ unistr/u32-strnlen
+ unistr/u32-strpbrk
+ unistr/u32-strrchr
+ unistr/u32-strspn
+ unistr/u32-strstr
+ unistr/u32-strtok
+ unistr/u32-to-u16
+ unistr/u32-to-u8
+ unistr/u32-uctomb
+ uniconv/base
+ uniconv/u8-conv-from-enc
+ uniconv/u8-conv-to-enc
+ uniconv/u8-strconv-from-enc
+ uniconv/u8-strconv-from-locale
+ uniconv/u8-strconv-to-enc
+ uniconv/u8-strconv-to-locale
+ uniconv/u16-conv-from-enc
+ uniconv/u16-conv-to-enc
+ uniconv/u16-strconv-from-enc
+ uniconv/u16-strconv-from-locale
+ uniconv/u16-strconv-to-enc
+ uniconv/u16-strconv-to-locale
+ uniconv/u32-conv-from-enc
+ uniconv/u32-conv-to-enc
+ uniconv/u32-strconv-from-enc
+ uniconv/u32-strconv-from-locale
+ uniconv/u32-strconv-to-enc
+ uniconv/u32-strconv-to-locale
+ unistdio/base
+ unistdio/u8-asnprintf
+ unistdio/u8-asprintf
+ unistdio/u8-snprintf
+ unistdio/u8-sprintf
+ unistdio/u8-u8-asnprintf
+ unistdio/u8-u8-asprintf
+ unistdio/u8-u8-snprintf
+ unistdio/u8-u8-sprintf
+ unistdio/u8-u8-vasnprintf
+ unistdio/u8-u8-vasprintf
+ unistdio/u8-u8-vsnprintf
+ unistdio/u8-u8-vsprintf
+ unistdio/u8-vasnprintf
+ unistdio/u8-vasprintf
+ unistdio/u8-vsnprintf
+ unistdio/u8-vsprintf
+ unistdio/u16-asnprintf
+ unistdio/u16-asprintf
+ unistdio/u16-snprintf
+ unistdio/u16-sprintf
+ unistdio/u16-u16-asnprintf
+ unistdio/u16-u16-asprintf
+ unistdio/u16-u16-snprintf
+ unistdio/u16-u16-sprintf
+ unistdio/u16-u16-vasnprintf
+ unistdio/u16-u16-vasprintf
+ unistdio/u16-u16-vsnprintf
+ unistdio/u16-u16-vsprintf
+ unistdio/u16-vasnprintf
+ unistdio/u16-vasprintf
+ unistdio/u16-vsnprintf
+ unistdio/u16-vsprintf
+ unistdio/u32-asnprintf
+ unistdio/u32-asprintf
+ unistdio/u32-snprintf
+ unistdio/u32-sprintf
+ unistdio/u32-u32-asnprintf
+ unistdio/u32-u32-asprintf
+ unistdio/u32-u32-snprintf
+ unistdio/u32-u32-sprintf
+ unistdio/u32-u32-vasnprintf
+ unistdio/u32-u32-vasprintf
+ unistdio/u32-u32-vsnprintf
+ unistdio/u32-u32-vsprintf
+ unistdio/u32-vasnprintf
+ unistdio/u32-vasprintf
+ unistdio/u32-vsnprintf
+ unistdio/u32-vsprintf
+ unistdio/ulc-asnprintf
+ unistdio/ulc-asprintf
+ unistdio/ulc-fprintf
+ unistdio/ulc-snprintf
+ unistdio/ulc-sprintf
+ unistdio/ulc-vasnprintf
+ unistdio/ulc-vasprintf
+ unistdio/ulc-vfprintf
+ unistdio/ulc-vsnprintf
+ unistdio/ulc-vsprintf
+ uniname/base
+ uniname/uniname
+ unictype/base
+ unictype/bidicategory-all
+ unictype/block-all
+ unictype/category-all
+ unictype/combining-class
+ unictype/ctype-alnum
+ unictype/ctype-alpha
+ unictype/ctype-blank
+ unictype/ctype-cntrl
+ unictype/ctype-digit
+ unictype/ctype-graph
+ unictype/ctype-lower
+ unictype/ctype-print
+ unictype/ctype-punct
+ unictype/ctype-space
+ unictype/ctype-upper
+ unictype/ctype-xdigit
+ unictype/decimal-digit
+ unictype/digit
+ unictype/mirror
+ unictype/numeric
+ unictype/property-all
+ unictype/scripts-all
+ unictype/syntax-c-ident
+ unictype/syntax-c-whitespace
+ unictype/syntax-java-ident
+ unictype/syntax-java-whitespace
+ uniwidth/base
+ uniwidth/u8-strwidth
+ uniwidth/u8-width
+ uniwidth/u16-strwidth
+ uniwidth/u16-width
+ uniwidth/u32-strwidth
+ uniwidth/u32-width
+ uniwidth/width
+ uniwbrk/base
+ uniwbrk/u8-wordbreaks
+ uniwbrk/u16-wordbreaks
+ uniwbrk/u32-wordbreaks
+ uniwbrk/ulc-wordbreaks
+ uniwbrk/wordbreak-property
+ unilbrk/base
+ unilbrk/u8-possible-linebreaks
+ unilbrk/u8-width-linebreaks
+ unilbrk/u16-possible-linebreaks
+ unilbrk/u16-width-linebreaks
+ unilbrk/u32-possible-linebreaks
+ unilbrk/u32-width-linebreaks
+ unilbrk/ulc-possible-linebreaks
+ unilbrk/ulc-width-linebreaks
+ uninorm/base
+ uninorm/canonical-decomposition
+ uninorm/composition
+ uninorm/decomposition
+ uninorm/filter
+ uninorm/nfc
+ uninorm/nfd
+ uninorm/nfkc
+ uninorm/nfkd
+ uninorm/u8-normalize
+ uninorm/u8-normcmp
+ uninorm/u8-normcoll
+ uninorm/u8-normxfrm
+ uninorm/u16-normalize
+ uninorm/u16-normcmp
+ uninorm/u16-normcoll
+ uninorm/u16-normxfrm
+ uninorm/u32-normalize
+ uninorm/u32-normcmp
+ uninorm/u32-normcoll
+ uninorm/u32-normxfrm
+ unicase/base
+ unicase/empty-prefix-context
+ unicase/empty-suffix-context
+ unicase/locale-language
+ unicase/tolower
+ unicase/totitle
+ unicase/toupper
+ unicase/u8-casecmp
+ unicase/u8-casecoll
+ unicase/u8-casefold
+ unicase/u8-casexfrm
+ unicase/u8-ct-casefold
+ unicase/u8-ct-tolower
+ unicase/u8-ct-totitle
+ unicase/u8-ct-toupper
+ unicase/u8-is-cased
+ unicase/u8-is-casefolded
+ unicase/u8-is-lowercase
+ unicase/u8-is-titlecase
+ unicase/u8-is-uppercase
+ unicase/u8-tolower
+ unicase/u8-totitle
+ unicase/u8-toupper
+ unicase/u16-casecmp
+ unicase/u16-casecoll
+ unicase/u16-casefold
+ unicase/u16-casexfrm
+ unicase/u16-ct-casefold
+ unicase/u16-ct-tolower
+ unicase/u16-ct-totitle
+ unicase/u16-ct-toupper
+ unicase/u16-is-cased
+ unicase/u16-is-casefolded
+ unicase/u16-is-lowercase
+ unicase/u16-is-titlecase
+ unicase/u16-is-uppercase
+ unicase/u16-tolower
+ unicase/u16-totitle
+ unicase/u16-toupper
+ unicase/u32-casecmp
+ unicase/u32-casecoll
+ unicase/u32-casefold
+ unicase/u32-casexfrm
+ unicase/u32-ct-casefold
+ unicase/u32-ct-tolower
+ unicase/u32-ct-totitle
+ unicase/u32-ct-toupper
+ unicase/u32-is-cased
+ unicase/u32-is-casefolded
+ unicase/u32-is-lowercase
+ unicase/u32-is-titlecase
+ unicase/u32-is-uppercase
+ unicase/u32-tolower
+ unicase/u32-totitle
+ unicase/u32-toupper
+ unicase/ulc-casecmp
+ unicase/ulc-casecoll
+ unicase/ulc-casexfrm
+ relocatable-lib-lgpl
+ '
+ $GNULIB_TOOL --lib=libunistring --source-base=lib --m4-base=gnulib-m4 --tests-base=tests \
+ --with-tests --lgpl --makefile-name=Makefile.gnulib --libtool --local-dir=gnulib-local \
+ --import $GNULIB_MODULES
+ # Change lib/unistr.h to be usable standalone.
+ sed -e 's/ifdef GNULIB_[A-Za-z0-9_]*/if 1/' -e 's/defined GNULIB_[A-Za-z0-9_]*/1/g' \
+ -e 's/HAVE_INLINE/UNISTRING_HAVE_INLINE/g' \
+ < lib/unistr.h \
+ > lib/unistr.h.tmp \
+ && mv lib/unistr.h.tmp lib/unistr.h
+ # Change lib/unictype.h and lib/uninorm.h for shared libraries on Woe32 systems.
+ sed -e 's/extern const uc_general_category_t UC_/extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_/' \
+ -e 's/extern const uc_property_t UC_/extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_/' \
+ < lib/unictype.h \
+ > lib/unictype.h.tmp \
+ && mv lib/unictype.h.tmp lib/unictype.h
+ sed -e 's/extern const struct unicode_normalization_form /extern LIBUNISTRING_DLL_VARIABLE const struct unicode_normalization_form /' \
+ < lib/uninorm.h \
+ > lib/uninorm.h.tmp \
+ && mv lib/uninorm.h.tmp lib/uninorm.h
+ sed -e 's/extern const casing_/extern LIBUNISTRING_DLL_VARIABLE const casing_/' \
+ < lib/unicase.h \
+ > lib/unicase.h.tmp \
+ && mv lib/unicase.h.tmp lib/unicase.h
+ $GNULIB_TOOL --copy-file build-aux/config.guess; chmod a+x build-aux/config.guess
+ $GNULIB_TOOL --copy-file build-aux/config.sub; chmod a+x build-aux/config.sub
+ # If we got no texinfo.tex so far, take the snapshot from gnulib.
+ if test ! -f build-aux/texinfo.tex; then
+ $GNULIB_TOOL --copy-file build-aux/texinfo.tex build-aux/texinfo.tex
+ fi
+ fi
+fi
+
+build-aux/fixaclocal aclocal -I m4 -I gnulib-m4
+autoconf
+autoheader && touch config.h.in
+automake --add-missing --copy
diff --git a/build-aux/compile b/build-aux/compile
new file mode 100755
index 00000000..1b1d2321
--- /dev/null
+++ b/build-aux/compile
@@ -0,0 +1,142 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand `-c -o'.
+
+scriptversion=2005-05-14.22
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.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, 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 to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case $1 in
+ '')
+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand `-c -o'.
+Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file `INSTALL'.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "compile $scriptversion"
+ exit $?
+ ;;
+esac
+
+ofile=
+cfile=
+eat=
+
+for arg
+do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as `compile cc -o foo foo.c'.
+ # So we strip `-o arg' only if arg is an object.
+ eat=1
+ case $2 in
+ *.o | *.obj)
+ ofile=$2
+ ;;
+ *)
+ set x "$@" -o "$2"
+ shift
+ ;;
+ esac
+ ;;
+ *.c)
+ cfile=$1
+ set x "$@" "$1"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+ # If no `-o' option was seen then we might have been invoked from a
+ # pattern rule where we don't need one. That is ok -- this is a
+ # normal compilation that the losing compiler can handle. If no
+ # `.c' file was seen then we are probably linking. That is also
+ # ok.
+ exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use `[/.-]' here to ensure that we don't use the same name
+# that we are using for the .o file. Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
+while true; do
+ if mkdir "$lockdir" >/dev/null 2>&1; then
+ break
+ fi
+ sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+ mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+ mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/build-aux/config.guess b/build-aux/config.guess
new file mode 100755
index 00000000..e3a2116a
--- /dev/null
+++ b/build-aux/config.guess
@@ -0,0 +1,1533 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+# Free Software Foundation, Inc.
+
+timestamp='2009-06-10'
+
+# This file 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., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub. If it succeeds, it prints the system name on stdout, and
+# exits with 0. Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ sysctl="sysctl -n hw.machine_arch"
+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+ case "${UNAME_MACHINE_ARCH}" in
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE_ARCH}" in
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ eval $set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ELF__
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "${UNAME_VERSION}" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+ exit ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit ;;
+ *:SolidBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+ exit ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit ;;
+ arm:riscos:*:*|arm:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7; exit ;;
+ esac ;;
+ s390x:SunOS:*:*)
+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ eval $set_cc_for_build
+ SUN_ARCH="i386"
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH="x86_64"
+ fi
+ fi
+ echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ exit ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c &&
+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`$dummy $dummyarg` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ then
+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+ [ ${TARGET_BINARY_INTERFACE}x = x ]
+ then
+ echo m88k-dg-dgux${UNAME_RELEASE}
+ else
+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+ exit ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit ;;
+ *:AIX:*:[456])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if [ "${HP_ARCH}" = "" ]; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ eval $set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep -q __LP64__
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo unknown-hitachi-hiuxwe2
+ exit ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:FreeBSD:*:*)
+ case ${UNAME_MACHINE} in
+ pc98)
+ echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ amd64)
+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ *)
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ esac
+ exit ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit ;;
+ *:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit ;;
+ *:Interix*:[3456]*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ EM64T | authenticamd | genuineintel)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ IA64)
+ echo ia64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ esac ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+ exit ;;
+ 8664:Windows_NT:*)
+ echo x86_64-pc-mks
+ exit ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+ exit ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ exit ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit ;;
+ arm*:Linux:*:*)
+ eval $set_cc_for_build
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ fi
+ exit ;;
+ avr32*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ cris:Linux:*:*)
+ echo cris-axis-linux-gnu
+ exit ;;
+ crisv32:Linux:*:*)
+ echo crisv32-axis-linux-gnu
+ exit ;;
+ frv:Linux:*:*)
+ echo frv-unknown-linux-gnu
+ exit ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ mips:Linux:*:* | mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef ${UNAME_MACHINE}
+ #undef ${UNAME_MACHINE}el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=${UNAME_MACHINE}el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=${UNAME_MACHINE}
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^CPU/{
+ s: ::g
+ p
+ }'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ or32:Linux:*:*)
+ echo or32-unknown-linux-gnu
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+ exit ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
+ padre:Linux:*:*)
+ echo sparc-unknown-linux-gnu
+ exit ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-gnu
+ exit ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+ exit ;;
+ xtensa*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ i*86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+ # first see if it will tell us. cd to the root directory to prevent
+ # problems with other programs or directories called `ld' in the path.
+ # Set LC_ALL=C to ensure ld outputs messages in English.
+ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+ | sed -ne '/supported targets:/!d
+ s/[ ][ ]*/ /g
+ s/.*supported targets: *//
+ s/ .*//
+ p'`
+ case "$ld_supported_targets" in
+ elf32-i386)
+ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+ ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <features.h>
+ #ifdef __ELF__
+ # ifdef __GLIBC__
+ # if __GLIBC__ >= 2
+ LIBC=gnu
+ # else
+ LIBC=gnulibc1
+ # endif
+ # else
+ LIBC=gnulibc1
+ # endif
+ #else
+ #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+ LIBC=gnu
+ #else
+ LIBC=gnuaout
+ #endif
+ #endif
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^LIBC/{
+ s: ::g
+ p
+ }'`"
+ test x"${LIBC}" != x && {
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit
+ }
+ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+ ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ exit ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i586.
+ # Note: whatever this is, it MUST be the same as what config.sub
+ # prints for the "djgpp" host, or else GDB configury will decide that
+ # this is a cross-build.
+ echo i586-pc-msdosdjgpp
+ exit ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+ exit ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+ OS_REL='.3'
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ echo ${UNAME_MACHINE}-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo ${UNAME_MACHINE}-stratus-vos
+ exit ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+ exit ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+ exit ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit ;;
+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
+ echo i586-pc-haiku
+ exit ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux${UNAME_RELEASE}
+ exit ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ exit ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit ;;
+ NSE-?:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
+ i*86:rdos:*:*)
+ echo ${UNAME_MACHINE}-pc-rdos
+ exit ;;
+ i*86:AROS:*:*)
+ echo ${UNAME_MACHINE}-pc-aros
+ exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+ printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+ printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+# include <sys/param.h>
+# if defined (BSD)
+# if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+# else
+# if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# endif
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# else
+ printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+ exit ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ c34*)
+ echo c34-convex-bsd
+ exit ;;
+ c38*)
+ echo c38-convex-bsd
+ exit ;;
+ c4*)
+ echo c4-convex-bsd
+ exit ;;
+ esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/build-aux/config.rpath b/build-aux/config.rpath
new file mode 100755
index 00000000..85c2f209
--- /dev/null
+++ b/build-aux/config.rpath
@@ -0,0 +1,672 @@
+#! /bin/sh
+# Output a system dependent set of variables, describing how to set the
+# run time search path of shared libraries in an executable.
+#
+# Copyright 1996-2008 Free Software Foundation, Inc.
+# Taken from GNU libtool, 2001
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+#
+# The first argument passed to this file is the canonical host specification,
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
+# should be set by the caller.
+#
+# The set of defined variables is at the end of this script.
+
+# Known limitations:
+# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
+# than 256 bytes, otherwise the compiler driver will dump core. The only
+# known workaround is to choose shorter directory names for the build
+# directory and/or the installation directory.
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+shrext=.so
+
+host="$1"
+host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+# Code taken from libtool.m4's _LT_CC_BASENAME.
+
+for cc_temp in $CC""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
+
+# Code taken from libtool.m4's _LT_COMPILER_PIC.
+
+wl=
+if test "$GCC" = yes; then
+ wl='-Wl,'
+else
+ case "$host_os" in
+ aix*)
+ wl='-Wl,'
+ ;;
+ darwin*)
+ case $cc_basename in
+ xlc*)
+ wl='-Wl,'
+ ;;
+ esac
+ ;;
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ wl='-Wl,'
+ ;;
+ irix5* | irix6* | nonstopux*)
+ wl='-Wl,'
+ ;;
+ newsos6)
+ ;;
+ linux* | k*bsd*-gnu)
+ case $cc_basename in
+ ecc*)
+ wl='-Wl,'
+ ;;
+ icc* | ifort*)
+ wl='-Wl,'
+ ;;
+ lf95*)
+ wl='-Wl,'
+ ;;
+ pgcc | pgf77 | pgf90)
+ wl='-Wl,'
+ ;;
+ ccc*)
+ wl='-Wl,'
+ ;;
+ como)
+ wl='-lopt='
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ wl='-Wl,'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ osf3* | osf4* | osf5*)
+ wl='-Wl,'
+ ;;
+ rdos*)
+ ;;
+ solaris*)
+ wl='-Wl,'
+ ;;
+ sunos4*)
+ wl='-Qoption ld '
+ ;;
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ wl='-Wl,'
+ ;;
+ sysv4*MP*)
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ wl='-Wl,'
+ ;;
+ unicos*)
+ wl='-Wl,'
+ ;;
+ uts4*)
+ ;;
+ esac
+fi
+
+# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
+
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+
+case "$host_os" in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ # Unlike libtool, we use -rpath here, not --rpath, since the documented
+ # option of GNU ld is called -rpath, not --rpath.
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ case "$host_os" in
+ aix[3-9]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ fi
+ ;;
+ amigaos*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we cannot use
+ # them.
+ ld_shlibs=no
+ ;;
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ cygwin* | mingw* | pw32* | cegcc*)
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ interix[3-9]*)
+ hardcode_direct=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ gnu* | linux* | k*bsd*-gnu)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ netbsd*)
+ ;;
+ solaris*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+ sunos4*)
+ hardcode_direct=yes
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ if test "$ld_shlibs" = no; then
+ hardcode_libdir_flag_spec=
+ fi
+else
+ case "$host_os" in
+ aix3*)
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+ aix[4-9]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ else
+ aix_use_runtimelinking=no
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+ fi
+ hardcode_direct=yes
+ hardcode_libdir_separator=':'
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ ;;
+ esac
+ fi
+ # Begin _LT_AC_SYS_LIBPATH_AIX.
+ echo 'int main () { return 0; }' > conftest.c
+ ${CC} ${LDFLAGS} conftest.c -o conftest
+ aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+ if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+ fi
+ if test -z "$aix_libpath"; then
+ aix_libpath="/usr/lib:/lib"
+ fi
+ rm -f conftest.c conftest
+ # End _LT_AC_SYS_LIBPATH_AIX.
+ if test "$aix_use_runtimelinking" = yes; then
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ else
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ fi
+ fi
+ ;;
+ amigaos*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs=no
+ ;;
+ bsdi[45]*)
+ ;;
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ libext=lib
+ ;;
+ darwin* | rhapsody*)
+ hardcode_direct=no
+ if test "$GCC" = yes ; then
+ :
+ else
+ case $cc_basename in
+ xlc*)
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+ fi
+ ;;
+ dgux*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+ freebsd1*)
+ ld_shlibs=no
+ ;;
+ freebsd2.2*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ freebsd2*)
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ ;;
+ freebsd* | dragonfly*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ hpux9*)
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ hpux10*)
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+ hpux11*)
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct=no
+ ;;
+ *)
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+ irix5* | irix6* | nonstopux*)
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ netbsd*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ newsos6)
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct=yes
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ else
+ case "$host_os" in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ osf3*)
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ osf4* | osf5*)
+ if test "$GCC" = yes; then
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ # Both cc and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ hardcode_libdir_separator=:
+ ;;
+ solaris*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ sunos4*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ ;;
+ sysv4)
+ case $host_vendor in
+ sni)
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ hardcode_direct=no
+ ;;
+ motorola)
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ ;;
+ sysv4.3*)
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ ld_shlibs=yes
+ fi
+ ;;
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ ;;
+ sysv5* | sco3.2v5* | sco5v6*)
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator=':'
+ ;;
+ uts4*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+fi
+
+# Check dynamic linker characteristics
+# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
+# Unlike libtool.m4, here we don't care about _all_ names of the library, but
+# only about the one the linker finds when passed -lNAME. This is the last
+# element of library_names_spec in libtool.m4, or possibly two of them if the
+# linker has special search rules.
+library_names_spec= # the last element of library_names_spec in libtool.m4
+libname_spec='lib$name'
+case "$host_os" in
+ aix3*)
+ library_names_spec='$libname.a'
+ ;;
+ aix[4-9]*)
+ library_names_spec='$libname$shrext'
+ ;;
+ amigaos*)
+ library_names_spec='$libname.a'
+ ;;
+ beos*)
+ library_names_spec='$libname$shrext'
+ ;;
+ bsdi[45]*)
+ library_names_spec='$libname$shrext'
+ ;;
+ cygwin* | mingw* | pw32* | cegcc*)
+ shrext=.dll
+ library_names_spec='$libname.dll.a $libname.lib'
+ ;;
+ darwin* | rhapsody*)
+ shrext=.dylib
+ library_names_spec='$libname$shrext'
+ ;;
+ dgux*)
+ library_names_spec='$libname$shrext'
+ ;;
+ freebsd1*)
+ ;;
+ freebsd* | dragonfly*)
+ case "$host_os" in
+ freebsd[123]*)
+ library_names_spec='$libname$shrext$versuffix' ;;
+ *)
+ library_names_spec='$libname$shrext' ;;
+ esac
+ ;;
+ gnu*)
+ library_names_spec='$libname$shrext'
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $host_cpu in
+ ia64*)
+ shrext=.so
+ ;;
+ hppa*64*)
+ shrext=.sl
+ ;;
+ *)
+ shrext=.sl
+ ;;
+ esac
+ library_names_spec='$libname$shrext'
+ ;;
+ interix[3-9]*)
+ library_names_spec='$libname$shrext'
+ ;;
+ irix5* | irix6* | nonstopux*)
+ library_names_spec='$libname$shrext'
+ case "$host_os" in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
+ *) libsuff= shlibsuff= ;;
+ esac
+ ;;
+ esac
+ ;;
+ linux*oldld* | linux*aout* | linux*coff*)
+ ;;
+ linux* | k*bsd*-gnu)
+ library_names_spec='$libname$shrext'
+ ;;
+ knetbsd*-gnu)
+ library_names_spec='$libname$shrext'
+ ;;
+ netbsd*)
+ library_names_spec='$libname$shrext'
+ ;;
+ newsos6)
+ library_names_spec='$libname$shrext'
+ ;;
+ nto-qnx*)
+ library_names_spec='$libname$shrext'
+ ;;
+ openbsd*)
+ library_names_spec='$libname$shrext$versuffix'
+ ;;
+ os2*)
+ libname_spec='$name'
+ shrext=.dll
+ library_names_spec='$libname.a'
+ ;;
+ osf3* | osf4* | osf5*)
+ library_names_spec='$libname$shrext'
+ ;;
+ rdos*)
+ ;;
+ solaris*)
+ library_names_spec='$libname$shrext'
+ ;;
+ sunos4*)
+ library_names_spec='$libname$shrext$versuffix'
+ ;;
+ sysv4 | sysv4.3*)
+ library_names_spec='$libname$shrext'
+ ;;
+ sysv4*MP*)
+ library_names_spec='$libname$shrext'
+ ;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ library_names_spec='$libname$shrext'
+ ;;
+ uts4*)
+ library_names_spec='$libname$shrext'
+ ;;
+esac
+
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
+shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
+escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+
+LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
+
+# How to pass a linker flag through the compiler.
+wl="$escaped_wl"
+
+# Static library suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally "so").
+shlibext="$shlibext"
+
+# Format of library name prefix.
+libname_spec="$escaped_libname_spec"
+
+# Library names that the linker finds when passed -lNAME.
+library_names_spec="$escaped_library_names_spec"
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator="$hardcode_libdir_separator"
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct="$hardcode_direct"
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L="$hardcode_minus_L"
+
+EOF
diff --git a/build-aux/config.sub b/build-aux/config.sub
new file mode 100755
index 00000000..eb0389a6
--- /dev/null
+++ b/build-aux/config.sub
@@ -0,0 +1,1693 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+# Free Software Foundation, Inc.
+
+timestamp='2009-06-11'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine. It does not imply ALL GNU software can.
+#
+# This file 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., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit ;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ kopensolaris*-gnu* | \
+ storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ *)
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+ if [ $basic_machine != $1 ]
+ then os=`echo $1 | sed 's/.*-/-/'`
+ else os=; fi
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis | -knuth | -cray)
+ os=
+ basic_machine=$1
+ ;;
+ -bluegene*)
+ os=-cnk
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco6)
+ os=-sco5v6
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+ os=-sco3.2v4
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2v[4-9]*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -udk*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -clix*)
+ basic_machine=clipper-intergraph
+ ;;
+ -isc*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -lynx*)
+ os=-lynxos
+ ;;
+ -ptx*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ ;;
+ -windowsnt*)
+ os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ ;;
+ -psos*)
+ os=-psos
+ ;;
+ -mint | -mint[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+ # Recognize the basic CPU types without company name.
+ # Some are omitted here because they have special meanings below.
+ 1750a | 580 \
+ | a29k \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | bfin \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | fido | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+ | lm32 \
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
+ | maxq | mb | microblaze | mcore | mep | metag \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64octeon | mips64octeonel \
+ | mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | moxie \
+ | mt \
+ | msp430 \
+ | nios | nios2 \
+ | ns16k | ns32k \
+ | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+ | score \
+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+ | spu | strongarm \
+ | tahoe | thumb | tic4x | tic80 | tron \
+ | v850 | v850e \
+ | we32k \
+ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+ | z8k | z80)
+ basic_machine=$basic_machine-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12)
+ # Motorola 68HC11/12.
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+ ms1)
+ basic_machine=mt-unknown
+ ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
+ *-*-*)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+ 580-* \
+ | a29k-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* | avr32-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+ | lm32-* \
+ | m32c-* | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64octeon-* | mips64octeonel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64r5900-* | mips64r5900el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | mt-* \
+ | msp430-* \
+ | nios-* | nios2-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
+ | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | xstormy16-* | xtensa*-* \
+ | ymp-* \
+ | z8k-* | z80-*)
+ ;;
+ # Recognize the basic CPU types without company name, with glob match.
+ xtensa*)
+ basic_machine=$basic_machine-unknown
+ ;;
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+ 386bsd)
+ basic_machine=i386-unknown
+ os=-bsd
+ ;;
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ basic_machine=m68000-att
+ ;;
+ 3b*)
+ basic_machine=we32k-att
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+ basic_machine=m68k-unknown
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=-amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
+ aros)
+ basic_machine=i386-pc
+ os=-aros
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=-linux
+ ;;
+ blackfin-*)
+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ bluegene*)
+ basic_machine=powerpc-ibm
+ os=-cnk
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ cegcc)
+ basic_machine=arm-unknown
+ os=-cegcc
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=-bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=-bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=-bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=-bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=-bsd
+ ;;
+ cray | j90)
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16)
+ basic_machine=cr16-unknown
+ os=-elf
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ crx)
+ basic_machine=crx-unknown
+ os=-elf
+ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ ;;
+ decsystem10* | dec10*)
+ basic_machine=pdp10-dec
+ os=-tops10
+ ;;
+ decsystem20* | dec20*)
+ basic_machine=pdp10-dec
+ os=-tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ basic_machine=m68k-motorola
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+ dicos)
+ basic_machine=i686-pc
+ os=-dicos
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+ ;;
+ dpx2* | dpx2*-bull)
+ basic_machine=m68k-bull
+ os=-sysv3
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=-ebmon
+ ;;
+ elxsi)
+ basic_machine=elxsi-elxsi
+ os=-bsd
+ ;;
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
+ fx2800)
+ basic_machine=i860-alliant
+ ;;
+ genix)
+ basic_machine=ns32k-ns
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
+ h3050r* | hiux*)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+ ;;
+ hp300-*)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=-bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=-hpux
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ basic_machine=m68000-hp
+ ;;
+ hp9k3[2-9][0-9])
+ basic_machine=m68k-hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hppa-next)
+ os=-nextstep3
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
+ ;;
+# I'm not sure what "Sysv32" means. Should this be sysv3.2?
+ i*86v32)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
+ ;;
+ i*86v4*)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
+ ;;
+ i*86v)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv
+ ;;
+ i*86sol2)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
+ ;;
+ i386-vsta | vsta)
+ basic_machine=i386-unknown
+ os=-vsta
+ ;;
+ iris | iris4d)
+ basic_machine=mips-sgi
+ case $os in
+ -irix*)
+ ;;
+ *)
+ os=-irix4
+ ;;
+ esac
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=-linux
+ ;;
+ m68knommu-*)
+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ mingw32)
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=-mingw32ce
+ ;;
+ miniframe)
+ basic_machine=m68000-convergent
+ ;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+ mips3*-*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=-morphos
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ ms1-*)
+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=-sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-unknown
+ os=-netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=-linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=-newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=-newsos
+ ;;
+ news-3600 | risc-news)
+ basic_machine=mips-sony
+ os=-newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=-sysv
+ ;;
+ next | m*-next )
+ basic_machine=m68k-next
+ case $os in
+ -nextstep* )
+ ;;
+ -ns2*)
+ os=-nextstep2
+ ;;
+ *)
+ os=-nextstep3
+ ;;
+ esac
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=-cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=-cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=-nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=-mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=-nonstopux
+ ;;
+ np1)
+ basic_machine=np1-gould
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ openrisc | openrisc-*)
+ basic_machine=or32-unknown
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
+ pa-hitachi)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=-osf
+ ;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=-linux
+ ;;
+ parisc-*)
+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ pc98)
+ basic_machine=i386-pc
+ ;;
+ pc98-*)
+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ basic_machine=i686-pc
+ ;;
+ pentiumii | pentium2 | pentiumiii | pentium3)
+ basic_machine=i686-pc
+ ;;
+ pentium4)
+ basic_machine=i786-pc
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium4-*)
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+ power) basic_machine=power-ibm
+ ;;
+ ppc) basic_machine=powerpc-unknown
+ ;;
+ ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppcle | powerpclittle | ppc-le | powerpc-little)
+ basic_machine=powerpcle-unknown
+ ;;
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ps2)
+ basic_machine=i386-ibm
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+ rdos)
+ basic_machine=i386-pc
+ os=-rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ rm[46]00)
+ basic_machine=mips-siemens
+ ;;
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
+ ;;
+ s390 | s390-*)
+ basic_machine=s390-ibm
+ ;;
+ s390x | s390x-*)
+ basic_machine=s390x-ibm
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ sb1)
+ basic_machine=mipsisa64sb1-unknown
+ ;;
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
+ sde)
+ basic_machine=mipsisa32-sde
+ os=-elf
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ sh5el)
+ basic_machine=sh5le-unknown
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparclite-wrs | simso-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=-sysv2
+ ;;
+ spur)
+ basic_machine=spur-unknown
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=-sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=-sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=-sunos4
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=-sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=-sunos4
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=-sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=-sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=-solaris2
+ ;;
+ sun3 | sun3-*)
+ basic_machine=m68k-sun
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=-dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=-unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=-unicos
+ ;;
+ tic54x | c54x*)
+ basic_machine=tic54x-unknown
+ os=-coff
+ ;;
+ tic55x | c55x*)
+ basic_machine=tic55x-unknown
+ os=-coff
+ ;;
+ tic6x | c6x*)
+ basic_machine=tic6x-unknown
+ os=-coff
+ ;;
+ tile*)
+ basic_machine=tile-unknown
+ os=-linux-gnu
+ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+ tx39el)
+ basic_machine=mipstx39el-unknown
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=-tops20
+ ;;
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=-sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=-vms
+ ;;
+ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=-vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
+ z80-*-coff)
+ basic_machine=z80-unknown
+ os=-sim
+ ;;
+ none)
+ basic_machine=none-none
+ os=-none
+ ;;
+
+# Here we handle the default manufacturer of certain CPU types. It is in
+# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
+ ;;
+ op60c)
+ basic_machine=hppa1.1-oki
+ ;;
+ romp)
+ basic_machine=romp-ibm
+ ;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+ vax)
+ basic_machine=vax-dec
+ ;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
+ pdp11)
+ basic_machine=pdp11-dec
+ ;;
+ we32k)
+ basic_machine=we32k-att
+ ;;
+ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+ basic_machine=cydra-cydrome
+ ;;
+ orion)
+ basic_machine=orion-highlevel
+ ;;
+ orion105)
+ basic_machine=clipper-highlevel
+ ;;
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
+ ;;
+ *)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+ *-digital*)
+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+ ;;
+ *-commodore*)
+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ ;;
+ *)
+ ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+ # First match some system type aliases
+ # that might get confused with valid system types.
+ # -solaris* is a basic system type, with this one exception.
+ -solaris1 | -solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ ;;
+ -solaris)
+ os=-solaris2
+ ;;
+ -svr4*)
+ os=-sysv4
+ ;;
+ -unixware*)
+ os=-sysv4.2uw
+ ;;
+ -gnu/linux*)
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ ;;
+ # First accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST END IN A *, to match a version number.
+ # -sysv* is not here because it comes later, after sysvr4.
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+ | -kopensolaris* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* | -aros* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -openbsd* | -solidbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* | -cegcc* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto-qnx*)
+ ;;
+ -nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ ;;
+ -sunos6*)
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ ;;
+ -opened*)
+ os=-openedition
+ ;;
+ -os400*)
+ os=-os400
+ ;;
+ -wince*)
+ os=-wince
+ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+ -osf*)
+ os=-osf
+ ;;
+ -utek*)
+ os=-bsd
+ ;;
+ -dynix*)
+ os=-bsd
+ ;;
+ -acis*)
+ os=-aos
+ ;;
+ -atheos*)
+ os=-atheos
+ ;;
+ -syllable*)
+ os=-syllable
+ ;;
+ -386bsd)
+ os=-bsd
+ ;;
+ -ctix* | -uts*)
+ os=-sysv
+ ;;
+ -nova*)
+ os=-rtmk-nova
+ ;;
+ -ns2 )
+ os=-nextstep2
+ ;;
+ -nsk*)
+ os=-nsk
+ ;;
+ # Preserve the version number of sinix5.
+ -sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+ ;;
+ -sinix*)
+ os=-sysv4
+ ;;
+ -tpf*)
+ os=-tpf
+ ;;
+ -triton*)
+ os=-sysv3
+ ;;
+ -oss*)
+ os=-sysv3
+ ;;
+ -svr4)
+ os=-sysv4
+ ;;
+ -svr3)
+ os=-sysv3
+ ;;
+ -sysvr4)
+ os=-sysv4
+ ;;
+ # This must come after -sysvr4.
+ -sysv*)
+ ;;
+ -ose*)
+ os=-ose
+ ;;
+ -es1800*)
+ os=-ose
+ ;;
+ -xenix)
+ os=-xenix
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -aros*)
+ os=-aros
+ ;;
+ -kaos*)
+ os=-kaos
+ ;;
+ -zvmoe)
+ os=-zvmoe
+ ;;
+ -dicos*)
+ os=-dicos
+ ;;
+ -none)
+ ;;
+ *)
+ # Get rid of the `-' at the beginning of $os.
+ os=`echo $os | sed 's/[^-]*-//'`
+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+ score-*)
+ os=-elf
+ ;;
+ spu-*)
+ os=-elf
+ ;;
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+ ;;
+ pdp11-*)
+ os=-none
+ ;;
+ *-dec | vax-*)
+ os=-ultrix4.2
+ ;;
+ m68*-apollo)
+ os=-domain
+ ;;
+ i386-sun)
+ os=-sunos4.0.2
+ ;;
+ m68000-sun)
+ os=-sunos3
+ # This also exists in the configure program, but was not the
+ # default.
+ # os=-sunos4
+ ;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ mep-*)
+ os=-elf
+ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+ mips*-*)
+ os=-elf
+ ;;
+ or32-*)
+ os=-coff
+ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=-sysv3
+ ;;
+ sparc-* | *-sun)
+ os=-sunos4.1.1
+ ;;
+ *-be)
+ os=-beos
+ ;;
+ *-haiku)
+ os=-haiku
+ ;;
+ *-ibm)
+ os=-aix
+ ;;
+ *-knuth)
+ os=-mmixware
+ ;;
+ *-wec)
+ os=-proelf
+ ;;
+ *-winbond)
+ os=-proelf
+ ;;
+ *-oki)
+ os=-proelf
+ ;;
+ *-hp)
+ os=-hpux
+ ;;
+ *-hitachi)
+ os=-hiux
+ ;;
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+ os=-sysv
+ ;;
+ *-cbm)
+ os=-amigaos
+ ;;
+ *-dg)
+ os=-dgux
+ ;;
+ *-dolphin)
+ os=-sysv3
+ ;;
+ m68k-ccur)
+ os=-rtu
+ ;;
+ m88k-omron*)
+ os=-luna
+ ;;
+ *-next )
+ os=-nextstep
+ ;;
+ *-sequent)
+ os=-ptx
+ ;;
+ *-crds)
+ os=-unos
+ ;;
+ *-ns)
+ os=-genix
+ ;;
+ i370-*)
+ os=-mvs
+ ;;
+ *-next)
+ os=-nextstep3
+ ;;
+ *-gould)
+ os=-sysv
+ ;;
+ *-highlevel)
+ os=-bsd
+ ;;
+ *-encore)
+ os=-bsd
+ ;;
+ *-sgi)
+ os=-irix
+ ;;
+ *-siemens)
+ os=-sysv4
+ ;;
+ *-masscomp)
+ os=-rtu
+ ;;
+ f30[01]-fujitsu | f700-fujitsu)
+ os=-uxpv
+ ;;
+ *-rom68k)
+ os=-coff
+ ;;
+ *-*bug)
+ os=-coff
+ ;;
+ *-apple)
+ os=-macos
+ ;;
+ *-atari*)
+ os=-mint
+ ;;
+ *)
+ os=-none
+ ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer. We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+ *-unknown)
+ case $os in
+ -riscix*)
+ vendor=acorn
+ ;;
+ -sunos*)
+ vendor=sun
+ ;;
+ -cnk*|-aix*)
+ vendor=ibm
+ ;;
+ -beos*)
+ vendor=be
+ ;;
+ -hpux*)
+ vendor=hp
+ ;;
+ -mpeix*)
+ vendor=hp
+ ;;
+ -hiux*)
+ vendor=hitachi
+ ;;
+ -unos*)
+ vendor=crds
+ ;;
+ -dgux*)
+ vendor=dg
+ ;;
+ -luna*)
+ vendor=omron
+ ;;
+ -genix*)
+ vendor=ns
+ ;;
+ -mvs* | -opened*)
+ vendor=ibm
+ ;;
+ -os400*)
+ vendor=ibm
+ ;;
+ -ptx*)
+ vendor=sequent
+ ;;
+ -tpf*)
+ vendor=ibm
+ ;;
+ -vxsim* | -vxworks* | -windiss*)
+ vendor=wrs
+ ;;
+ -aux*)
+ vendor=apple
+ ;;
+ -hms*)
+ vendor=hitachi
+ ;;
+ -mpw* | -macos*)
+ vendor=apple
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ vendor=atari
+ ;;
+ -vos*)
+ vendor=stratus
+ ;;
+ esac
+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/build-aux/depcomp b/build-aux/depcomp
new file mode 100755
index 00000000..e5f9736c
--- /dev/null
+++ b/build-aux/depcomp
@@ -0,0 +1,589 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2007-03-29.01
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 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 to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+ '')
+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+ depmode Dependency tracking mode.
+ source Source file read by `PROGRAMS ARGS'.
+ object Object file output by `PROGRAMS ARGS'.
+ DEPDIR directory where to store dependencies.
+ depfile Dependency file to output.
+ tmpdepfile Temporary file to use when outputing dependencies.
+ libtool Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "depcomp $scriptversion"
+ exit $?
+ ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
+ exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags. We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write. Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+ # HP compiler uses -M and no extra arg.
+ gccflag=-M
+ depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want. Yay! Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff. Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am. Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+ for arg
+ do
+ case $arg in
+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+ *) set fnord "$@" "$arg" ;;
+ esac
+ shift # fnord
+ shift # $arg
+ done
+ "$@"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ mv "$tmpdepfile" "$depfile"
+ ;;
+
+gcc)
+## There are various ways to get dependency output from gcc. Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+## up in a subdir. Having to rename by hand is ugly.
+## (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+## -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+## than renaming).
+ if test -z "$gccflag"; then
+ gccflag=-MD,
+ fi
+ "$@" -Wp,"$gccflag$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+ sed -e 's/^[^:]*: / /' \
+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header). We avoid this by adding
+## dummy dependencies for each header file. Too bad gcc doesn't do
+## this for us directly.
+ tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'. On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+sgi)
+ if test "$libtool" = yes; then
+ "$@" "-Wp,-MDupdate,$tmpdepfile"
+ else
+ "$@" -MDupdate "$tmpdepfile"
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+
+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
+ echo "$object : \\" > "$depfile"
+
+ # Clip off the initial element (the dependent). Don't try to be
+ # clever and replace this with sed code, as IRIX sed won't handle
+ # lines with more than a fixed number of characters (4096 in
+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
+ # the IRIX cc adds comments like `#:fec' to the end of the
+ # dependency line.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+ tr '
+' ' ' >> $depfile
+ echo >> $depfile
+
+ # The second pass generates a dummy entry for each header file.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> $depfile
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+aix)
+ # The C for AIX Compiler uses -M and outputs the dependencies
+ # in a .u file. In older versions, this file always lives in the
+ # current directory. Also, the AIX compiler puts `$object:' at the
+ # start of each line; $object doesn't have directory information.
+ # Version 6 uses the directory in both cases.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$base.u
+ tmpdepfile3=$dir.libs/$base.u
+ "$@" -Wc,-M
+ else
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$dir$base.u
+ tmpdepfile3=$dir$base.u
+ "$@" -M
+ fi
+ stat=$?
+
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ # Each line is of the form `foo.o: dependent.h'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+icc)
+ # Intel's C compiler understands `-MD -MF file'. However on
+ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+ # ICC 7.0 will fill foo.d with something like
+ # foo.o: sub/foo.c
+ # foo.o: sub/foo.h
+ # which is wrong. We want:
+ # sub/foo.o: sub/foo.c
+ # sub/foo.o: sub/foo.h
+ # sub/foo.c:
+ # sub/foo.h:
+ # ICC 7.1 will output
+ # foo.o: sub/foo.c sub/foo.h
+ # and will wrap long lines using \ :
+ # foo.o: sub/foo.c ... \
+ # sub/foo.h ... \
+ # ...
+
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ # Each line is of the form `foo.o: dependent.h',
+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+ sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp2)
+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+ # compilers, which have integrated preprocessors. The correct option
+ # to use with these is +Maked; it writes dependencies to a file named
+ # 'foo.d', which lands next to the object file, wherever that
+ # happens to be.
+ # Much of this is similar to the tru64 case; see comments there.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir.libs/$base.d
+ "$@" -Wc,+Maked
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ "$@" +Maked
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+ # Add `dependent.h:' lines.
+ sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile" "$tmpdepfile2"
+ ;;
+
+tru64)
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in `foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+ if test "$libtool" = yes; then
+ # With Tru64 cc, shared objects can also be used to make a
+ # static library. This mechanism is used in libtool 1.4 series to
+ # handle both shared and static libraries in a single compilation.
+ # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+ #
+ # With libtool 1.5 this exception was removed, and libtool now
+ # generates 2 separate objects for the 2 libraries. These two
+ # compilations output dependencies in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
+ tmpdepfile2=$dir$base.o.d # libtool 1.5
+ tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
+ tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1=$dir$base.o.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ tmpdepfile4=$dir$base.d
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+#nosideeffect)
+ # This comment above is used by automake to tell side-effect
+ # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout, regardless of -o.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove `-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ test -z "$dashmflag" && dashmflag=-M
+ # Require at least two characters before searching for `:'
+ # in the target name. This is to cope with DOS-style filenames:
+ # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+ "$@" $dashmflag |
+ sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+dashXmstdout)
+ # This case only exists to satisfy depend.m4. It is never actually
+ # run, as this mode is specially recognized in the preamble.
+ exit 1
+ ;;
+
+makedepend)
+ "$@" || exit $?
+ # Remove any Libtool call
+ if test "$libtool" = yes; then
+ while test $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+ # X makedepend
+ shift
+ cleared=no
+ for arg in "$@"; do
+ case $cleared in
+ no)
+ set ""; shift
+ cleared=yes ;;
+ esac
+ case "$arg" in
+ -D*|-I*)
+ set fnord "$@" "$arg"; shift ;;
+ # Strip any option that makedepend may not understand. Remove
+ # the object too, otherwise makedepend will parse it as a source file.
+ -*|$object)
+ ;;
+ *)
+ set fnord "$@" "$arg"; shift ;;
+ esac
+ done
+ obj_suffix="`echo $object | sed 's/^.*\././'`"
+ touch "$tmpdepfile"
+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile" "$tmpdepfile".bak
+ ;;
+
+cpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove `-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ "$@" -E |
+ sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+ sed '$ s: \\$::' > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ cat < "$tmpdepfile" >> "$depfile"
+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvisualcpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout, regardless of -o,
+ # because we must use -o when running libtool.
+ "$@" || exit $?
+ IFS=" "
+ for arg
+ do
+ case "$arg" in
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+ set fnord "$@"
+ shift
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
+ esac
+ done
+ "$@" -E |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
+ echo " " >> "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+none)
+ exec "$@"
+ ;;
+
+*)
+ echo "Unknown depmode $depmode" 1>&2
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/build-aux/fixaclocal b/build-aux/fixaclocal
new file mode 100755
index 00000000..10ff8e41
--- /dev/null
+++ b/build-aux/fixaclocal
@@ -0,0 +1,35 @@
+#!/bin/sh
+# Script for fixing aclocal.m4 files produced by 'aclocal' from automake 1.10.
+# Copyright (C) 2006, 2008 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 3 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, see <http://www.gnu.org/licenses/>.
+
+# Usage: fixaclocal aclocal [OPTIONS]
+
+"$@"
+result=$?
+if test $result = 0 && test -f aclocal.m4; then
+ # Remove the block of 4 lines starting with 'm4_if(m4_PACKAGE_VERSION'
+ # and the block of 5 lines starting with 'm4_if(AC_AUTOCONF_VERSION'
+ # (automake <= 1.10.1) or with 'm4_if(m4_defn([AC_AUTOCONF_VERSION])'
+ # (automake >= 1.10.2).
+ sed -e '/m4_if(m4_PACKAGE_VERSION/{N;N;N;d}' -e '/m4_if(AC_AUTOCONF_VERSION/{N;N;N;N;d}' -e '/m4_if(m4_defn(\[AC_AUTOCONF_VERSION\])/{N;N;N;N;d}' < aclocal.m4 > aclocal.m4.tmp
+ if cmp aclocal.m4 aclocal.m4.tmp > /dev/null; then
+ rm -f aclocal.m4.tmp
+ else
+ mv aclocal.m4.tmp aclocal.m4
+ fi
+else
+ exit $result
+fi
diff --git a/build-aux/install-sh b/build-aux/install-sh
new file mode 100755
index 00000000..a5897de6
--- /dev/null
+++ b/build-aux/install-sh
@@ -0,0 +1,519 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2006-12-25.00
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" "" $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+ doit_exec=exec
+else
+ doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+ test "$posix_glob" != "?" || {
+ if (set -f) 2>/dev/null; then
+ posix_glob=
+ else
+ posix_glob=:
+ fi
+ }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve the last data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -s $stripprog installed files.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+ case $1 in
+ -c) ;;
+
+ -C) copy_on_change=true;;
+
+ -d) dir_arg=true;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) mode=$2
+ case $mode in
+ *' '* | *' '* | *'
+'* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
+
+ -o) chowncmd="$chownprog $2"
+ shift;;
+
+ -s) stripcmd=$stripprog;;
+
+ -t) dst_arg=$2
+ shift;;
+
+ -T) no_target_directory=true;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ --) shift
+ break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
+ esac
+ shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ done
+fi
+
+if test $# -eq 0; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call `install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
+
+if test -z "$dir_arg"; then
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
+for src
+do
+ # Protect names starting with `-'.
+ case $src in
+ -*) src=./$src;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ else
+
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dst_arg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ dst=$dst_arg
+ # Protect names starting with `-'.
+ case $dst in
+ -*) dst=./$dst;;
+ esac
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
+ fi
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ # Prefer dirname, but fall back on a substitute if dirname fails.
+ dstdir=`
+ (dirname "$dst") 2>/dev/null ||
+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$dst" : 'X\(//\)[^/]' \| \
+ X"$dst" : 'X\(//\)$' \| \
+ X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$dst" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'
+ `
+
+ test -d "$dstdir"
+ dstdir_status=$?
+ fi
+ fi
+
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writeable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
+
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix='/';;
+ -*) prefix='./';;
+ *) prefix='';;
+ esac
+
+ eval "$initialize_posix_glob"
+
+ oIFS=$IFS
+ IFS=/
+ $posix_glob set -f
+ set fnord $dstdir
+ shift
+ $posix_glob set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test -z "$d" && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
+ fi
+ fi
+ fi
+
+ if test -n "$dir_arg"; then
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+ # Copy the file name to the temp name.
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+ eval "$initialize_posix_glob" &&
+ $posix_glob set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ $posix_glob set +f &&
+
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/build-aux/link-warning.h b/build-aux/link-warning.h
new file mode 100644
index 00000000..fda01941
--- /dev/null
+++ b/build-aux/link-warning.h
@@ -0,0 +1,28 @@
+/* GL_LINK_WARNING("literal string") arranges to emit the literal string as
+ a linker warning on most glibc systems.
+ We use a linker warning rather than a preprocessor warning, because
+ #warning cannot be used inside macros. */
+#ifndef GL_LINK_WARNING
+ /* This works on platforms with GNU ld and ELF object format.
+ Testing __GLIBC__ is sufficient for asserting that GNU ld is in use.
+ Testing __ELF__ guarantees the ELF object format.
+ Testing __GNUC__ is necessary for the compound expression syntax. */
+# if defined __GLIBC__ && defined __ELF__ && defined __GNUC__
+# define GL_LINK_WARNING(message) \
+ GL_LINK_WARNING1 (__FILE__, __LINE__, message)
+# define GL_LINK_WARNING1(file, line, message) \
+ GL_LINK_WARNING2 (file, line, message) /* macroexpand file and line */
+# define GL_LINK_WARNING2(file, line, message) \
+ GL_LINK_WARNING3 (file ":" #line ": warning: " message)
+# define GL_LINK_WARNING3(message) \
+ ({ static const char warning[sizeof (message)] \
+ __attribute__ ((__unused__, \
+ __section__ (".gnu.warning"), \
+ __aligned__ (1))) \
+ = message "\n"; \
+ (void)0; \
+ })
+# else
+# define GL_LINK_WARNING(message) ((void) 0)
+# endif
+#endif
diff --git a/build-aux/ltmain.sh b/build-aux/ltmain.sh
new file mode 100644
index 00000000..271873d3
--- /dev/null
+++ b/build-aux/ltmain.sh
@@ -0,0 +1,8526 @@
+# Generated from ltmain.m4sh.
+
+# ltmain.sh (GNU libtool) 2.2.6
+# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions. There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool 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.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Usage: $progname [OPTION]... [MODE-ARG]...
+#
+# Provide generalized library-building support services.
+#
+# --config show all configuration variables
+# --debug enable verbose shell tracing
+# -n, --dry-run display commands without modifying any files
+# --features display basic configuration information and exit
+# --mode=MODE use operation mode MODE
+# --preserve-dup-deps don't remove duplicate dependency libraries
+# --quiet, --silent don't print informational messages
+# --tag=TAG use configuration variables from tag TAG
+# -v, --verbose print informational messages (default)
+# --version print version information
+# -h, --help print short or long help message
+#
+# MODE must be one of the following:
+#
+# clean remove files from the build directory
+# compile compile a source file into a libtool object
+# execute automatically set library path, then run a program
+# finish complete the installation of libtool libraries
+# install install libraries or executables
+# link create a library or an executable
+# uninstall remove libraries from an installed directory
+#
+# MODE-ARGS vary depending on the MODE.
+# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
+#
+# When reporting a bug, please describe a test case to reproduce it and
+# include the following information:
+#
+# host-triplet: $host
+# shell: $SHELL
+# compiler: $LTCC
+# compiler flags: $LTCFLAGS
+# linker: $LD (gnu? $with_gnu_ld)
+# $progname: (GNU libtool) 2.2.6
+# automake: $automake_version
+# autoconf: $autoconf_version
+#
+# Report bugs to <bug-libtool@gnu.org>.
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=2.2.6
+TIMESTAMP=""
+package_revision=1.3012
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# NLS nuisances: We save the old values to restore during execute mode.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+lt_user_locale=
+lt_safe_locale=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+ eval "if test \"\${$lt_var+set}\" = set; then
+ save_$lt_var=\$$lt_var
+ $lt_var=C
+ export $lt_var
+ lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
+ lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+ fi"
+done
+
+$lt_unset CDPATH
+
+
+
+
+
+: ${CP="cp -f"}
+: ${ECHO="echo"}
+: ${EGREP="/usr/bin/grep -E"}
+: ${FGREP="/usr/bin/grep -F"}
+: ${GREP="/usr/bin/grep"}
+: ${LN_S="ln -s"}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SED="/opt/local/bin/gsed"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+: ${Xsed="$SED -e 1s/^X//"}
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
+
+exit_status=$EXIT_SUCCESS
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" $lt_nl"
+
+dirname="s,/[^/]*$,,"
+basename="s,^.*/,,"
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+# dirname: Compute the dirname of FILE. If nonempty,
+# add APPEND to the result, otherwise set result
+# to NONDIR_REPLACEMENT.
+# value returned in "$func_dirname_result"
+# basename: Compute filename of FILE.
+# value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+ # Extract subdirectory from the argument.
+ func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
+ if test "X$func_dirname_result" = "X${1}"; then
+ func_dirname_result="${3}"
+ else
+ func_dirname_result="$func_dirname_result${2}"
+ fi
+ func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
+}
+
+# Generated shell functions inserted here.
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+# In the unlikely event $progname began with a '-', it would play havoc with
+# func_echo (imagine progname=-n), so we prepend ./ in that case:
+func_dirname_and_basename "$progpath"
+progname=$func_basename_result
+case $progname in
+ -*) progname=./$progname ;;
+esac
+
+# Make sure we have an absolute path for reexecution:
+case $progpath in
+ [\\/]*|[A-Za-z]:\\*) ;;
+ *[\\/]*)
+ progdir=$func_dirname_result
+ progdir=`cd "$progdir" && pwd`
+ progpath="$progdir/$progname"
+ ;;
+ *)
+ save_IFS="$IFS"
+ IFS=:
+ for progdir in $PATH; do
+ IFS="$save_IFS"
+ test -x "$progdir/$progname" && break
+ done
+ IFS="$save_IFS"
+ test -n "$progdir" || progdir=`pwd`
+ progpath="$progdir/$progname"
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Re-`\' parameter expansions in output of double_quote_subst that were
+# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
+# in input to double_quote_subst, that '$' was protected from expansion.
+# Since each input `\' is now two `\'s, look for any number of runs of
+# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
+bs='\\'
+bs2='\\\\'
+bs4='\\\\\\\\'
+dollar='\$'
+sed_double_backslash="\
+ s/$bs4/&\\
+/g
+ s/^$bs2$dollar/$bs&/
+ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
+ s/\n//g"
+
+# Standard options:
+opt_dry_run=false
+opt_help=false
+opt_quiet=false
+opt_verbose=false
+opt_warning=:
+
+# func_echo arg...
+# Echo program name prefixed message, along with the current mode
+# name if it has been set yet.
+func_echo ()
+{
+ $ECHO "$progname${mode+: }$mode: $*"
+}
+
+# func_verbose arg...
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+ $opt_verbose && func_echo ${1+"$@"}
+
+ # A bug in bash halts the script if the last line of a function
+ # fails when set -e is in force, so we need another command to
+ # work around that:
+ :
+}
+
+# func_error arg...
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+ $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
+}
+
+# func_warning arg...
+# Echo program name prefixed warning message to standard error.
+func_warning ()
+{
+ $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
+
+ # bash bug again:
+ :
+}
+
+# func_fatal_error arg...
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+ func_error ${1+"$@"}
+ exit $EXIT_FAILURE
+}
+
+# func_fatal_help arg...
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+ func_error ${1+"$@"}
+ func_fatal_error "$help"
+}
+help="Try \`$progname --help' for more information." ## default
+
+
+# func_grep expression filename
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+ $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_mkdir_p directory-path
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+ my_directory_path="$1"
+ my_dir_list=
+
+ if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+
+ # Protect directory names starting with `-'
+ case $my_directory_path in
+ -*) my_directory_path="./$my_directory_path" ;;
+ esac
+
+ # While some portion of DIR does not yet exist...
+ while test ! -d "$my_directory_path"; do
+ # ...make a list in topmost first order. Use a colon delimited
+ # list incase some portion of path contains whitespace.
+ my_dir_list="$my_directory_path:$my_dir_list"
+
+ # If the last portion added has no slash in it, the list is done
+ case $my_directory_path in */*) ;; *) break ;; esac
+
+ # ...otherwise throw away the child directory and loop
+ my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
+ done
+ my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
+
+ save_mkdir_p_IFS="$IFS"; IFS=':'
+ for my_dir in $my_dir_list; do
+ IFS="$save_mkdir_p_IFS"
+ # mkdir can fail with a `File exist' error if two processes
+ # try to create one of the directories concurrently. Don't
+ # stop in that case!
+ $MKDIR "$my_dir" 2>/dev/null || :
+ done
+ IFS="$save_mkdir_p_IFS"
+
+ # Bail out if we (or some other process) failed to create a directory.
+ test -d "$my_directory_path" || \
+ func_fatal_error "Failed to create \`$1'"
+ fi
+}
+
+
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible. If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+ my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+ if test "$opt_dry_run" = ":"; then
+ # Return a directory name, but don't create it in dry-run mode
+ my_tmpdir="${my_template}-$$"
+ else
+
+ # If mktemp works, use that first and foremost
+ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+ if test ! -d "$my_tmpdir"; then
+ # Failing that, at least try and use $RANDOM to avoid a race
+ my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+ save_mktempdir_umask=`umask`
+ umask 0077
+ $MKDIR "$my_tmpdir"
+ umask $save_mktempdir_umask
+ fi
+
+ # If we're not in dry-run mode, bomb out on failure
+ test -d "$my_tmpdir" || \
+ func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
+ fi
+
+ $ECHO "X$my_tmpdir" | $Xsed
+}
+
+
+# func_quote_for_eval arg
+# Aesthetically quote ARG to be evaled later.
+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
+# is double-quoted, suitable for a subsequent eval, whereas
+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
+# which are still active within double quotes backslashified.
+func_quote_for_eval ()
+{
+ case $1 in
+ *[\\\`\"\$]*)
+ func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
+ *)
+ func_quote_for_eval_unquoted_result="$1" ;;
+ esac
+
+ case $func_quote_for_eval_unquoted_result in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting, command substitution and and variable
+ # expansion for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
+ ;;
+ *)
+ func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
+ esac
+}
+
+
+# func_quote_for_expand arg
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+ case $1 in
+ *[\\\`\"]*)
+ my_arg=`$ECHO "X$1" | $Xsed \
+ -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+ *)
+ my_arg="$1" ;;
+ esac
+
+ case $my_arg in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting and command substitution for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ my_arg="\"$my_arg\""
+ ;;
+ esac
+
+ func_quote_for_expand_result="$my_arg"
+}
+
+
+# func_show_eval cmd [fail_exp]
+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+ my_cmd="$1"
+ my_fail_exp="${2-:}"
+
+ ${opt_silent-false} || {
+ func_quote_for_expand "$my_cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+
+ if ${opt_dry_run-false}; then :; else
+ eval "$my_cmd"
+ my_status=$?
+ if test "$my_status" -eq 0; then :; else
+ eval "(exit $my_status); $my_fail_exp"
+ fi
+ fi
+}
+
+
+# func_show_eval_locale cmd [fail_exp]
+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it. Use the saved locale for evaluation.
+func_show_eval_locale ()
+{
+ my_cmd="$1"
+ my_fail_exp="${2-:}"
+
+ ${opt_silent-false} || {
+ func_quote_for_expand "$my_cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+
+ if ${opt_dry_run-false}; then :; else
+ eval "$lt_user_locale
+ $my_cmd"
+ my_status=$?
+ eval "$lt_safe_locale"
+ if test "$my_status" -eq 0; then :; else
+ eval "(exit $my_status); $my_fail_exp"
+ fi
+ fi
+}
+
+
+
+
+
+# func_version
+# Echo version message to standard output and exit.
+func_version ()
+{
+ $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
+ s/^# //
+ s/^# *$//
+ s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
+ p
+ }' < "$progpath"
+ exit $?
+}
+
+# func_usage
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+ $SED -n '/^# Usage:/,/# -h/ {
+ s/^# //
+ s/^# *$//
+ s/\$progname/'$progname'/
+ p
+ }' < "$progpath"
+ $ECHO
+ $ECHO "run \`$progname --help | more' for full usage"
+ exit $?
+}
+
+# func_help
+# Echo long help message to standard output and exit.
+func_help ()
+{
+ $SED -n '/^# Usage:/,/# Report bugs to/ {
+ s/^# //
+ s/^# *$//
+ s*\$progname*'$progname'*
+ s*\$host*'"$host"'*
+ s*\$SHELL*'"$SHELL"'*
+ s*\$LTCC*'"$LTCC"'*
+ s*\$LTCFLAGS*'"$LTCFLAGS"'*
+ s*\$LD*'"$LD"'*
+ s/\$with_gnu_ld/'"$with_gnu_ld"'/
+ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
+ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+ p
+ }' < "$progpath"
+ exit $?
+}
+
+# func_missing_arg argname
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+ func_error "missing argument for $1"
+ exit_cmd=exit
+}
+
+exit_cmd=:
+
+
+
+
+
+# Check that we have a working $ECHO.
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
+ # Yippee, $ECHO works!
+ :
+else
+ # Restart under the correct shell, and then maybe $ECHO will work.
+ exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit $EXIT_SUCCESS
+fi
+
+magic="%%%MAGIC variable%%%"
+magic_exe="%%%MAGIC EXE variable%%%"
+
+# Global variables.
+# $mode is unset
+nonopt=
+execute_dlfiles=
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
+
+opt_dry_run=false
+opt_duplicate_deps=false
+opt_silent=false
+opt_debug=:
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end. This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+# func_fatal_configuration arg...
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+ func_error ${1+"$@"}
+ func_error "See the $PACKAGE documentation for more information."
+ func_fatal_error "Fatal configuration error."
+}
+
+
+# func_config
+# Display the configuration for all the tags in this script.
+func_config ()
+{
+ re_begincf='^# ### BEGIN LIBTOOL'
+ re_endcf='^# ### END LIBTOOL'
+
+ # Default configuration.
+ $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
+
+ # Now print the configurations for the tags.
+ for tagname in $taglist; do
+ $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
+ done
+
+ exit $?
+}
+
+# func_features
+# Display the features supported by this script.
+func_features ()
+{
+ $ECHO "host: $host"
+ if test "$build_libtool_libs" = yes; then
+ $ECHO "enable shared libraries"
+ else
+ $ECHO "disable shared libraries"
+ fi
+ if test "$build_old_libs" = yes; then
+ $ECHO "enable static libraries"
+ else
+ $ECHO "disable static libraries"
+ fi
+
+ exit $?
+}
+
+# func_enable_tag tagname
+# Verify that TAGNAME is valid, and either flag an error and exit, or
+# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
+# variable here.
+func_enable_tag ()
+{
+ # Global variable:
+ tagname="$1"
+
+ re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+ re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+ sed_extractcf="/$re_begincf/,/$re_endcf/p"
+
+ # Validate tagname.
+ case $tagname in
+ *[!-_A-Za-z0-9,/]*)
+ func_fatal_error "invalid tag name: $tagname"
+ ;;
+ esac
+
+ # Don't test for the "default" C tag, as we know it's
+ # there but not specially marked.
+ case $tagname in
+ CC) ;;
+ *)
+ if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+ taglist="$taglist $tagname"
+
+ # Evaluate the configuration. Be careful to quote the path
+ # and the sed script, to avoid splitting on whitespace, but
+ # also don't use non-portable quotes within backquotes within
+ # quotes we have to do it in 2 steps:
+ extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+ eval "$extractedcf"
+ else
+ func_error "ignoring unknown tag $tagname"
+ fi
+ ;;
+ esac
+}
+
+# Parse options once, thoroughly. This comes as soon as possible in
+# the script to make things like `libtool --version' happen quickly.
+{
+
+ # Shorthand for --mode=foo, only valid as the first argument
+ case $1 in
+ clean|clea|cle|cl)
+ shift; set dummy --mode clean ${1+"$@"}; shift
+ ;;
+ compile|compil|compi|comp|com|co|c)
+ shift; set dummy --mode compile ${1+"$@"}; shift
+ ;;
+ execute|execut|execu|exec|exe|ex|e)
+ shift; set dummy --mode execute ${1+"$@"}; shift
+ ;;
+ finish|finis|fini|fin|fi|f)
+ shift; set dummy --mode finish ${1+"$@"}; shift
+ ;;
+ install|instal|insta|inst|ins|in|i)
+ shift; set dummy --mode install ${1+"$@"}; shift
+ ;;
+ link|lin|li|l)
+ shift; set dummy --mode link ${1+"$@"}; shift
+ ;;
+ uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+ shift; set dummy --mode uninstall ${1+"$@"}; shift
+ ;;
+ esac
+
+ # Parse non-mode specific arguments:
+ while test "$#" -gt 0; do
+ opt="$1"
+ shift
+
+ case $opt in
+ --config) func_config ;;
+
+ --debug) preserve_args="$preserve_args $opt"
+ func_echo "enabling shell trace mode"
+ opt_debug='set -x'
+ $opt_debug
+ ;;
+
+ -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break
+ execute_dlfiles="$execute_dlfiles $1"
+ shift
+ ;;
+
+ --dry-run | -n) opt_dry_run=: ;;
+ --features) func_features ;;
+ --finish) mode="finish" ;;
+
+ --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break
+ case $1 in
+ # Valid mode arguments:
+ clean) ;;
+ compile) ;;
+ execute) ;;
+ finish) ;;
+ install) ;;
+ link) ;;
+ relink) ;;
+ uninstall) ;;
+
+ # Catch anything else as an error
+ *) func_error "invalid argument for $opt"
+ exit_cmd=exit
+ break
+ ;;
+ esac
+
+ mode="$1"
+ shift
+ ;;
+
+ --preserve-dup-deps)
+ opt_duplicate_deps=: ;;
+
+ --quiet|--silent) preserve_args="$preserve_args $opt"
+ opt_silent=:
+ ;;
+
+ --verbose| -v) preserve_args="$preserve_args $opt"
+ opt_silent=false
+ ;;
+
+ --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break
+ preserve_args="$preserve_args $opt $1"
+ func_enable_tag "$1" # tagname is set here
+ shift
+ ;;
+
+ # Separate optargs to long options:
+ -dlopen=*|--mode=*|--tag=*)
+ func_opt_split "$opt"
+ set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
+ shift
+ ;;
+
+ -\?|-h) func_usage ;;
+ --help) opt_help=: ;;
+ --version) func_version ;;
+
+ -*) func_fatal_help "unrecognized option \`$opt'" ;;
+
+ *) nonopt="$opt"
+ break
+ ;;
+ esac
+ done
+
+
+ case $host in
+ *cygwin* | *mingw* | *pw32* | *cegcc*)
+ # don't eliminate duplications in $postdeps and $predeps
+ opt_duplicate_compiler_generated_deps=:
+ ;;
+ *)
+ opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
+ ;;
+ esac
+
+ # Having warned about all mis-specified options, bail out if
+ # anything was wrong.
+ $exit_cmd $EXIT_FAILURE
+}
+
+# func_check_version_match
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
+{
+ if test "$package_revision" != "$macro_revision"; then
+ if test "$VERSION" != "$macro_version"; then
+ if test -z "$macro_version"; then
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+ else
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+ fi
+ else
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
+ fi
+
+ exit $EXIT_MISMATCH
+ fi
+}
+
+
+## ----------- ##
+## Main. ##
+## ----------- ##
+
+$opt_help || {
+ # Sanity checks first:
+ func_check_version_match
+
+ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ func_fatal_configuration "not configured to build any kind of library"
+ fi
+
+ test -z "$mode" && func_fatal_error "error: you must specify a MODE."
+
+
+ # Darwin sucks
+ eval std_shrext=\"$shrext_cmds\"
+
+
+ # Only execute mode is allowed to have -dlopen flags.
+ if test -n "$execute_dlfiles" && test "$mode" != execute; then
+ func_error "unrecognized option \`-dlopen'"
+ $ECHO "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Change the help message to a mode-specific one.
+ generic_help="$help"
+ help="Try \`$progname --help --mode=$mode' for more information."
+}
+
+
+# func_lalib_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_lalib_p ()
+{
+ test -f "$1" &&
+ $SED -e 4q "$1" 2>/dev/null \
+ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# func_lalib_unsafe_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function implements the same check as func_lalib_p without
+# resorting to external programs. To this end, it redirects stdin and
+# closes it afterwards, without saving the original file descriptor.
+# As a safety measure, use it only where a negative result would be
+# fatal anyway. Works if `file' does not exist.
+func_lalib_unsafe_p ()
+{
+ lalib_p=no
+ if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
+ for lalib_p_l in 1 2 3 4
+ do
+ read lalib_p_line
+ case "$lalib_p_line" in
+ \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
+ esac
+ done
+ exec 0<&5 5<&-
+ fi
+ test "$lalib_p" = yes
+}
+
+# func_ltwrapper_script_p file
+# True iff FILE is a libtool wrapper script
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_script_p ()
+{
+ func_lalib_p "$1"
+}
+
+# func_ltwrapper_executable_p file
+# True iff FILE is a libtool wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_executable_p ()
+{
+ func_ltwrapper_exec_suffix=
+ case $1 in
+ *.exe) ;;
+ *) func_ltwrapper_exec_suffix=.exe ;;
+ esac
+ $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
+}
+
+# func_ltwrapper_scriptname file
+# Assumes file is an ltwrapper_executable
+# uses $file to determine the appropriate filename for a
+# temporary ltwrapper_script.
+func_ltwrapper_scriptname ()
+{
+ func_ltwrapper_scriptname_result=""
+ if func_ltwrapper_executable_p "$1"; then
+ func_dirname_and_basename "$1" "" "."
+ func_stripname '' '.exe' "$func_basename_result"
+ func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+ fi
+}
+
+# func_ltwrapper_p file
+# True iff FILE is a libtool wrapper script or wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_p ()
+{
+ func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
+}
+
+
+# func_execute_cmds commands fail_cmd
+# Execute tilde-delimited COMMANDS.
+# If FAIL_CMD is given, eval that upon failure.
+# FAIL_CMD may read-access the current command in variable CMD!
+func_execute_cmds ()
+{
+ $opt_debug
+ save_ifs=$IFS; IFS='~'
+ for cmd in $1; do
+ IFS=$save_ifs
+ eval cmd=\"$cmd\"
+ func_show_eval "$cmd" "${2-:}"
+ done
+ IFS=$save_ifs
+}
+
+
+# func_source file
+# Source FILE, adding directory component if necessary.
+# Note that it is not necessary on cygwin/mingw to append a dot to
+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
+# behavior happens only for exec(3), not for open(2)! Also, sourcing
+# `FILE.' does not work on cygwin managed mounts.
+func_source ()
+{
+ $opt_debug
+ case $1 in
+ */* | *\\*) . "$1" ;;
+ *) . "./$1" ;;
+ esac
+}
+
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+ $opt_debug
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+ func_quote_for_eval "$arg"
+ CC_quoted="$CC_quoted $func_quote_for_eval_result"
+ done
+ case $@ in
+ # Blanks in the command may have been stripped by the calling shell,
+ # but not from the CC environment variable when configure was run.
+ " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
+ # Blanks at the start of $base_compile will cause this to fail
+ # if we don't check for them as well.
+ *)
+ for z in $available_tags; do
+ if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+ CC_quoted=
+ for arg in $CC; do
+ # Double-quote args containing other shell metacharacters.
+ func_quote_for_eval "$arg"
+ CC_quoted="$CC_quoted $func_quote_for_eval_result"
+ done
+ case "$@ " in
+ " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
+ # The compiler in the base compile command matches
+ # the one in the tagged configuration.
+ # Assume this is the tagged configuration we want.
+ tagname=$z
+ break
+ ;;
+ esac
+ fi
+ done
+ # If $tagname still isn't set, then no tagged configuration
+ # was found and let the user know that the "--tag" command
+ # line option must be used.
+ if test -z "$tagname"; then
+ func_echo "unable to infer tagged configuration"
+ func_fatal_error "specify a tag with \`--tag'"
+# else
+# func_verbose "using $tagname tagged configuration"
+ fi
+ ;;
+ esac
+ fi
+}
+
+
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
+{
+ write_libobj=${1}
+ if test "$build_libtool_libs" = yes; then
+ write_lobj=\'${2}\'
+ else
+ write_lobj=none
+ fi
+
+ if test "$build_old_libs" = yes; then
+ write_oldobj=\'${3}\'
+ else
+ write_oldobj=none
+ fi
+
+ $opt_dry_run || {
+ cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+ $MV "${write_libobj}T" "${write_libobj}"
+ }
+}
+
+# func_mode_compile arg...
+func_mode_compile ()
+{
+ $opt_debug
+ # Get the compilation command and the source file.
+ base_compile=
+ srcfile="$nonopt" # always keep a non-empty value in "srcfile"
+ suppress_opt=yes
+ suppress_output=
+ arg_mode=normal
+ libobj=
+ later=
+ pie_flag=
+
+ for arg
+ do
+ case $arg_mode in
+ arg )
+ # do not "continue". Instead, add this to base_compile
+ lastarg="$arg"
+ arg_mode=normal
+ ;;
+
+ target )
+ libobj="$arg"
+ arg_mode=normal
+ continue
+ ;;
+
+ normal )
+ # Accept any command-line options.
+ case $arg in
+ -o)
+ test -n "$libobj" && \
+ func_fatal_error "you cannot specify \`-o' more than once"
+ arg_mode=target
+ continue
+ ;;
+
+ -pie | -fpie | -fPIE)
+ pie_flag="$pie_flag $arg"
+ continue
+ ;;
+
+ -shared | -static | -prefer-pic | -prefer-non-pic)
+ later="$later $arg"
+ continue
+ ;;
+
+ -no-suppress)
+ suppress_opt=no
+ continue
+ ;;
+
+ -Xcompiler)
+ arg_mode=arg # the next one goes into the "base_compile" arg list
+ continue # The current "srcfile" will either be retained or
+ ;; # replaced later. I would guess that would be a bug.
+
+ -Wc,*)
+ func_stripname '-Wc,' '' "$arg"
+ args=$func_stripname_result
+ lastarg=
+ save_ifs="$IFS"; IFS=','
+ for arg in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$arg"
+ lastarg="$lastarg $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$lastarg"
+ lastarg=$func_stripname_result
+
+ # Add the arguments to base_compile.
+ base_compile="$base_compile $lastarg"
+ continue
+ ;;
+
+ *)
+ # Accept the current argument as the source file.
+ # The previous "srcfile" becomes the current argument.
+ #
+ lastarg="$srcfile"
+ srcfile="$arg"
+ ;;
+ esac # case $arg
+ ;;
+ esac # case $arg_mode
+
+ # Aesthetically quote the previous argument.
+ func_quote_for_eval "$lastarg"
+ base_compile="$base_compile $func_quote_for_eval_result"
+ done # for arg
+
+ case $arg_mode in
+ arg)
+ func_fatal_error "you must specify an argument for -Xcompile"
+ ;;
+ target)
+ func_fatal_error "you must specify a target with \`-o'"
+ ;;
+ *)
+ # Get the name of the library object.
+ test -z "$libobj" && {
+ func_basename "$srcfile"
+ libobj="$func_basename_result"
+ }
+ ;;
+ esac
+
+ # Recognize several different file suffixes.
+ # If the user specifies -o file.o, it is replaced with file.lo
+ case $libobj in
+ *.[cCFSifmso] | \
+ *.ada | *.adb | *.ads | *.asm | \
+ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
+ *.[fF][09]? | *.for | *.java | *.obj | *.sx)
+ func_xform "$libobj"
+ libobj=$func_xform_result
+ ;;
+ esac
+
+ case $libobj in
+ *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
+ *)
+ func_fatal_error "cannot determine name of library object from \`$libobj'"
+ ;;
+ esac
+
+ func_infer_tag $base_compile
+
+ for arg in $later; do
+ case $arg in
+ -shared)
+ test "$build_libtool_libs" != yes && \
+ func_fatal_configuration "can not build a shared library"
+ build_old_libs=no
+ continue
+ ;;
+
+ -static)
+ build_libtool_libs=no
+ build_old_libs=yes
+ continue
+ ;;
+
+ -prefer-pic)
+ pic_mode=yes
+ continue
+ ;;
+
+ -prefer-non-pic)
+ pic_mode=no
+ continue
+ ;;
+ esac
+ done
+
+ func_quote_for_eval "$libobj"
+ test "X$libobj" != "X$func_quote_for_eval_result" \
+ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
+ && func_warning "libobj name \`$libobj' may not contain shell special characters."
+ func_dirname_and_basename "$obj" "/" ""
+ objname="$func_basename_result"
+ xdir="$func_dirname_result"
+ lobj=${xdir}$objdir/$objname
+
+ test -z "$base_compile" && \
+ func_fatal_help "you must specify a compilation command"
+
+ # Delete any leftover library objects.
+ if test "$build_old_libs" = yes; then
+ removelist="$obj $lobj $libobj ${libobj}T"
+ else
+ removelist="$lobj $libobj ${libobj}T"
+ fi
+
+ # On Cygwin there's no "real" PIC flag so we must build both object types
+ case $host_os in
+ cygwin* | mingw* | pw32* | os2* | cegcc*)
+ pic_mode=default
+ ;;
+ esac
+ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+ # non-PIC code in shared libraries is not supported
+ pic_mode=default
+ fi
+
+ # Calculate the filename of the output object if compiler does
+ # not support -o with -c
+ if test "$compiler_c_o" = no; then
+ output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+ lockfile="$output_obj.lock"
+ else
+ output_obj=
+ need_locks=no
+ lockfile=
+ fi
+
+ # Lock this critical section if it is needed
+ # We use this script file to make the link, it avoids creating a new file
+ if test "$need_locks" = yes; then
+ until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+ func_echo "Waiting for $lockfile to be removed"
+ sleep 2
+ done
+ elif test "$need_locks" = warn; then
+ if test -f "$lockfile"; then
+ $ECHO "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+ removelist="$removelist $output_obj"
+ $ECHO "$srcfile" > "$lockfile"
+ fi
+
+ $opt_dry_run || $RM $removelist
+ removelist="$removelist $lockfile"
+ trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
+ if test -n "$fix_srcfile_path"; then
+ eval srcfile=\"$fix_srcfile_path\"
+ fi
+ func_quote_for_eval "$srcfile"
+ qsrcfile=$func_quote_for_eval_result
+
+ # Only build a PIC object if we are building libtool libraries.
+ if test "$build_libtool_libs" = yes; then
+ # Without this assignment, base_compile gets emptied.
+ fbsd_hideous_sh_bug=$base_compile
+
+ if test "$pic_mode" != no; then
+ command="$base_compile $qsrcfile $pic_flag"
+ else
+ # Don't build PIC code
+ command="$base_compile $qsrcfile"
+ fi
+
+ func_mkdir_p "$xdir$objdir"
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+ command="$command -o $lobj"
+ fi
+
+ func_show_eval_locale "$command" \
+ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed, then go on to compile the next one
+ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+ func_show_eval '$MV "$output_obj" "$lobj"' \
+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+ fi
+
+ # Allow error messages only from the first compilation.
+ if test "$suppress_opt" = yes; then
+ suppress_output=' >/dev/null 2>&1'
+ fi
+ fi
+
+ # Only build a position-dependent object if we build old libraries.
+ if test "$build_old_libs" = yes; then
+ if test "$pic_mode" != yes; then
+ # Don't build PIC code
+ command="$base_compile $qsrcfile$pie_flag"
+ else
+ command="$base_compile $qsrcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ command="$command -o $obj"
+ fi
+
+ # Suppress compiler output if we already did a PIC compilation.
+ command="$command$suppress_output"
+ func_show_eval_locale "$command" \
+ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed
+ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+ func_show_eval '$MV "$output_obj" "$obj"' \
+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+ fi
+ fi
+
+ $opt_dry_run || {
+ func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
+
+ # Unlock the critical section if it was locked
+ if test "$need_locks" != no; then
+ removelist=$lockfile
+ $RM "$lockfile"
+ fi
+ }
+
+ exit $EXIT_SUCCESS
+}
+
+$opt_help || {
+test "$mode" = compile && func_mode_compile ${1+"$@"}
+}
+
+func_mode_help ()
+{
+ # We need to display help for each of the modes.
+ case $mode in
+ "")
+ # Generic help is extracted from the usage comments
+ # at the start of this file.
+ func_help
+ ;;
+
+ clean)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+ compile)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+ -o OUTPUT-FILE set the output file name to OUTPUT-FILE
+ -no-suppress do not suppress compiler output for multiple passes
+ -prefer-pic try to building PIC objects only
+ -prefer-non-pic try to building non-PIC objects only
+ -shared do not build a \`.o' file suitable for static linking
+ -static only build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+ ;;
+
+ execute)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+ -dlopen FILE add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+ ;;
+
+ finish)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges. Use
+the \`--dry-run' option if you just want to see what would be executed."
+ ;;
+
+ install)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command. The first component should be
+either the \`install' or \`cp' program.
+
+The following components of INSTALL-COMMAND are treated specially:
+
+ -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+ ;;
+
+ link)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+ -all-static do not do any dynamic linking at all
+ -avoid-version do not add a version suffix if possible
+ -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
+ -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
+ -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+ -export-symbols SYMFILE
+ try to export only the symbols listed in SYMFILE
+ -export-symbols-regex REGEX
+ try to export only the symbols matching REGEX
+ -LLIBDIR search LIBDIR for required installed libraries
+ -lNAME OUTPUT-FILE requires the installed library libNAME
+ -module build a library that can dlopened
+ -no-fast-install disable the fast-install mode
+ -no-install link a not-installable executable
+ -no-undefined declare that a library does not refer to external symbols
+ -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
+ -objectlist FILE Use a list of object files found in FILE to specify objects
+ -precious-files-regex REGEX
+ don't remove output files matching REGEX
+ -release RELEASE specify package release information
+ -rpath LIBDIR the created library will eventually be installed in LIBDIR
+ -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
+ -shared only do dynamic linking of libtool libraries
+ -shrext SUFFIX override the standard shared library file extension
+ -static do not do any dynamic linking of uninstalled libtool libraries
+ -static-libtool-libs
+ do not do any dynamic linking of libtool libraries
+ -version-info CURRENT[:REVISION[:AGE]]
+ specify library version info [each variable defaults to 0]
+ -weak LIBNAME declare that the target provides the LIBNAME interface
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename. Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+ ;;
+
+ uninstall)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+ *)
+ func_fatal_help "invalid operation mode \`$mode'"
+ ;;
+ esac
+
+ $ECHO
+ $ECHO "Try \`$progname --help' for more information about other modes."
+
+ exit $?
+}
+
+ # Now that we've collected a possible --mode arg, show help if necessary
+ $opt_help && func_mode_help
+
+
+# func_mode_execute arg...
+func_mode_execute ()
+{
+ $opt_debug
+ # The first argument is the command name.
+ cmd="$nonopt"
+ test -z "$cmd" && \
+ func_fatal_help "you must specify a COMMAND"
+
+ # Handle -dlopen flags immediately.
+ for file in $execute_dlfiles; do
+ test -f "$file" \
+ || func_fatal_help "\`$file' is not a file"
+
+ dir=
+ case $file in
+ *.la)
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "\`$lib' is not a valid libtool archive"
+
+ # Read the libtool library.
+ dlname=
+ library_names=
+ func_source "$file"
+
+ # Skip this library if it cannot be dlopened.
+ if test -z "$dlname"; then
+ # Warn if it was a shared library.
+ test -n "$library_names" && \
+ func_warning "\`$file' was not linked with \`-export-dynamic'"
+ continue
+ fi
+
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+
+ if test -f "$dir/$objdir/$dlname"; then
+ dir="$dir/$objdir"
+ else
+ if test ! -f "$dir/$dlname"; then
+ func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+ fi
+ fi
+ ;;
+
+ *.lo)
+ # Just add the directory containing the .lo file.
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+ ;;
+
+ *)
+ func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+ continue
+ ;;
+ esac
+
+ # Get the absolute pathname.
+ absdir=`cd "$dir" && pwd`
+ test -n "$absdir" && dir="$absdir"
+
+ # Now add the directory to shlibpath_var.
+ if eval "test -z \"\$$shlibpath_var\""; then
+ eval "$shlibpath_var=\"\$dir\""
+ else
+ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+ fi
+ done
+
+ # This variable tells wrapper scripts just to set shlibpath_var
+ # rather than running their programs.
+ libtool_execute_magic="$magic"
+
+ # Check if any of the arguments is a wrapper script.
+ args=
+ for file
+ do
+ case $file in
+ -*) ;;
+ *)
+ # Do a test to see if this is really a libtool program.
+ if func_ltwrapper_script_p "$file"; then
+ func_source "$file"
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ elif func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ func_source "$func_ltwrapper_scriptname_result"
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ fi
+ ;;
+ esac
+ # Quote arguments (to preserve shell metacharacters).
+ func_quote_for_eval "$file"
+ args="$args $func_quote_for_eval_result"
+ done
+
+ if test "X$opt_dry_run" = Xfalse; then
+ if test -n "$shlibpath_var"; then
+ # Export the shlibpath_var.
+ eval "export $shlibpath_var"
+ fi
+
+ # Restore saved environment variables
+ for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+ do
+ eval "if test \"\${save_$lt_var+set}\" = set; then
+ $lt_var=\$save_$lt_var; export $lt_var
+ else
+ $lt_unset $lt_var
+ fi"
+ done
+
+ # Now prepare to actually exec the command.
+ exec_cmd="\$cmd$args"
+ else
+ # Display what would be done.
+ if test -n "$shlibpath_var"; then
+ eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+ $ECHO "export $shlibpath_var"
+ fi
+ $ECHO "$cmd$args"
+ exit $EXIT_SUCCESS
+ fi
+}
+
+test "$mode" = execute && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+ $opt_debug
+ libdirs="$nonopt"
+ admincmds=
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ for dir
+ do
+ libdirs="$libdirs $dir"
+ done
+
+ for libdir in $libdirs; do
+ if test -n "$finish_cmds"; then
+ # Do each command in the finish commands.
+ func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
+'"$cmd"'"'
+ fi
+ if test -n "$finish_eval"; then
+ # Do the single finish_eval.
+ eval cmds=\"$finish_eval\"
+ $opt_dry_run || eval "$cmds" || admincmds="$admincmds
+ $cmds"
+ fi
+ done
+ fi
+
+ # Exit here if they wanted silent mode.
+ $opt_silent && exit $EXIT_SUCCESS
+
+ $ECHO "X----------------------------------------------------------------------" | $Xsed
+ $ECHO "Libraries have been installed in:"
+ for libdir in $libdirs; do
+ $ECHO " $libdir"
+ done
+ $ECHO
+ $ECHO "If you ever happen to want to link against installed libraries"
+ $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
+ $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
+ $ECHO "flag during linking and do at least one of the following:"
+ if test -n "$shlibpath_var"; then
+ $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable"
+ $ECHO " during execution"
+ fi
+ if test -n "$runpath_var"; then
+ $ECHO " - add LIBDIR to the \`$runpath_var' environment variable"
+ $ECHO " during linking"
+ fi
+ if test -n "$hardcode_libdir_flag_spec"; then
+ libdir=LIBDIR
+ eval flag=\"$hardcode_libdir_flag_spec\"
+
+ $ECHO " - use the \`$flag' linker flag"
+ fi
+ if test -n "$admincmds"; then
+ $ECHO " - have your system administrator run these commands:$admincmds"
+ fi
+ if test -f /etc/ld.so.conf; then
+ $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+ fi
+ $ECHO
+
+ $ECHO "See any operating system documentation about shared libraries for"
+ case $host in
+ solaris2.[6789]|solaris2.1[0-9])
+ $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+ $ECHO "pages."
+ ;;
+ *)
+ $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
+ ;;
+ esac
+ $ECHO "X----------------------------------------------------------------------" | $Xsed
+ exit $EXIT_SUCCESS
+}
+
+test "$mode" = finish && func_mode_finish ${1+"$@"}
+
+
+# func_mode_install arg...
+func_mode_install ()
+{
+ $opt_debug
+ # There may be an optional sh(1) argument at the beginning of
+ # install_prog (especially on Windows NT).
+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+ # Allow the use of GNU shtool's install command.
+ $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
+ # Aesthetically quote it.
+ func_quote_for_eval "$nonopt"
+ install_prog="$func_quote_for_eval_result "
+ arg=$1
+ shift
+ else
+ install_prog=
+ arg=$nonopt
+ fi
+
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ func_quote_for_eval "$arg"
+ install_prog="$install_prog$func_quote_for_eval_result"
+
+ # We need to accept at least all the BSD install flags.
+ dest=
+ files=
+ opts=
+ prev=
+ install_type=
+ isdir=no
+ stripme=
+ for arg
+ do
+ if test -n "$dest"; then
+ files="$files $dest"
+ dest=$arg
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=yes ;;
+ -f)
+ case " $install_prog " in
+ *[\\\ /]cp\ *) ;;
+ *) prev=$arg ;;
+ esac
+ ;;
+ -g | -m | -o)
+ prev=$arg
+ ;;
+ -s)
+ stripme=" -s"
+ continue
+ ;;
+ -*)
+ ;;
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ prev=
+ else
+ dest=$arg
+ continue
+ fi
+ ;;
+ esac
+
+ # Aesthetically quote the argument.
+ func_quote_for_eval "$arg"
+ install_prog="$install_prog $func_quote_for_eval_result"
+ done
+
+ test -z "$install_prog" && \
+ func_fatal_help "you must specify an install program"
+
+ test -n "$prev" && \
+ func_fatal_help "the \`$prev' option requires an argument"
+
+ if test -z "$files"; then
+ if test -z "$dest"; then
+ func_fatal_help "no file or destination specified"
+ else
+ func_fatal_help "you must specify a destination"
+ fi
+ fi
+
+ # Strip any trailing slash from the destination.
+ func_stripname '' '/' "$dest"
+ dest=$func_stripname_result
+
+ # Check to see that the destination is a directory.
+ test -d "$dest" && isdir=yes
+ if test "$isdir" = yes; then
+ destdir="$dest"
+ destname=
+ else
+ func_dirname_and_basename "$dest" "" "."
+ destdir="$func_dirname_result"
+ destname="$func_basename_result"
+
+ # Not a directory, so check to see that there is only one file specified.
+ set dummy $files; shift
+ test "$#" -gt 1 && \
+ func_fatal_help "\`$dest' is not a directory"
+ fi
+ case $destdir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ for file in $files; do
+ case $file in
+ *.lo) ;;
+ *)
+ func_fatal_help "\`$destdir' must be an absolute directory name"
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic="$magic"
+
+ staticlibs=
+ future_libdirs=
+ current_libdirs=
+ for file in $files; do
+
+ # Do each installation.
+ case $file in
+ *.$libext)
+ # Do the static libraries later.
+ staticlibs="$staticlibs $file"
+ ;;
+
+ *.la)
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "\`$file' is not a valid libtool archive"
+
+ library_names=
+ old_library=
+ relink_command=
+ func_source "$file"
+
+ # Add the libdir to current_libdirs if it is the destination.
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+ *) current_libdirs="$current_libdirs $libdir" ;;
+ esac
+ else
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+ *) future_libdirs="$future_libdirs $libdir" ;;
+ esac
+ fi
+
+ func_dirname "$file" "/" ""
+ dir="$func_dirname_result"
+ dir="$dir$objdir"
+
+ if test -n "$relink_command"; then
+ # Determine the prefix the user has applied to our future dir.
+ inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
+
+ # Don't allow the user to place us outside of our expected
+ # location b/c this prevents finding dependent libraries that
+ # are installed to the same prefix.
+ # At present, this check doesn't affect windows .dll's that
+ # are installed into $libdir/../bin (currently, that works fine)
+ # but it's something to keep an eye on.
+ test "$inst_prefix_dir" = "$destdir" && \
+ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
+
+ if test -n "$inst_prefix_dir"; then
+ # Stick the inst_prefix_dir data into the link command.
+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+ else
+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
+ fi
+
+ func_warning "relinking \`$file'"
+ func_show_eval "$relink_command" \
+ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
+ fi
+
+ # See the names of the shared library.
+ set dummy $library_names; shift
+ if test -n "$1"; then
+ realname="$1"
+ shift
+
+ srcname="$realname"
+ test -n "$relink_command" && srcname="$realname"T
+
+ # Install the shared library and build the symlinks.
+ func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
+ 'exit $?'
+ tstripme="$stripme"
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ case $realname in
+ *.dll.a)
+ tstripme=""
+ ;;
+ esac
+ ;;
+ esac
+ if test -n "$tstripme" && test -n "$striplib"; then
+ func_show_eval "$striplib $destdir/$realname" 'exit $?'
+ fi
+
+ if test "$#" -gt 0; then
+ # Delete the old symlinks, and create new ones.
+ # Try `ln -sf' first, because the `ln' binary might depend on
+ # the symlink we replace! Solaris /bin/ln does not understand -f,
+ # so we also need to try rm && ln -s.
+ for linkname
+ do
+ test "$linkname" != "$realname" \
+ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
+ done
+ fi
+
+ # Do each command in the postinstall commands.
+ lib="$destdir/$realname"
+ func_execute_cmds "$postinstall_cmds" 'exit $?'
+ fi
+
+ # Install the pseudo-library for information purposes.
+ func_basename "$file"
+ name="$func_basename_result"
+ instname="$dir/$name"i
+ func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
+
+ # Maybe install the static library, too.
+ test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+ ;;
+
+ *.lo)
+ # Install (i.e. copy) a libtool object.
+
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ func_basename "$file"
+ destfile="$func_basename_result"
+ destfile="$destdir/$destfile"
+ fi
+
+ # Deduce the name of the destination old-style object file.
+ case $destfile in
+ *.lo)
+ func_lo2o "$destfile"
+ staticdest=$func_lo2o_result
+ ;;
+ *.$objext)
+ staticdest="$destfile"
+ destfile=
+ ;;
+ *)
+ func_fatal_help "cannot copy a libtool object to \`$destfile'"
+ ;;
+ esac
+
+ # Install the libtool object if requested.
+ test -n "$destfile" && \
+ func_show_eval "$install_prog $file $destfile" 'exit $?'
+
+ # Install the old object if enabled.
+ if test "$build_old_libs" = yes; then
+ # Deduce the name of the old-style object file.
+ func_lo2o "$file"
+ staticobj=$func_lo2o_result
+ func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
+ fi
+ exit $EXIT_SUCCESS
+ ;;
+
+ *)
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ func_basename "$file"
+ destfile="$func_basename_result"
+ destfile="$destdir/$destfile"
+ fi
+
+ # If the file is missing, and there is a .exe on the end, strip it
+ # because it is most likely a libtool script we actually want to
+ # install
+ stripped_ext=""
+ case $file in
+ *.exe)
+ if test ! -f "$file"; then
+ func_stripname '' '.exe' "$file"
+ file=$func_stripname_result
+ stripped_ext=".exe"
+ fi
+ ;;
+ esac
+
+ # Do a test to see if this is really a libtool program.
+ case $host in
+ *cygwin* | *mingw*)
+ if func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ wrapper=$func_ltwrapper_scriptname_result
+ else
+ func_stripname '' '.exe' "$file"
+ wrapper=$func_stripname_result
+ fi
+ ;;
+ *)
+ wrapper=$file
+ ;;
+ esac
+ if func_ltwrapper_script_p "$wrapper"; then
+ notinst_deplibs=
+ relink_command=
+
+ func_source "$wrapper"
+
+ # Check the variables that should have been set.
+ test -z "$generated_by_libtool_version" && \
+ func_fatal_error "invalid libtool wrapper script \`$wrapper'"
+
+ finalize=yes
+ for lib in $notinst_deplibs; do
+ # Check to see that each library is installed.
+ libdir=
+ if test -f "$lib"; then
+ func_source "$lib"
+ fi
+ libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+ if test -n "$libdir" && test ! -f "$libfile"; then
+ func_warning "\`$lib' has not been installed in \`$libdir'"
+ finalize=no
+ fi
+ done
+
+ relink_command=
+ func_source "$wrapper"
+
+ outputname=
+ if test "$fast_install" = no && test -n "$relink_command"; then
+ $opt_dry_run || {
+ if test "$finalize" = yes; then
+ tmpdir=`func_mktempdir`
+ func_basename "$file$stripped_ext"
+ file="$func_basename_result"
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+ relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+ $opt_silent || {
+ func_quote_for_expand "$relink_command"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ if eval "$relink_command"; then :
+ else
+ func_error "error: relink \`$file' with the above command before installing it"
+ $opt_dry_run || ${RM}r "$tmpdir"
+ continue
+ fi
+ file="$outputname"
+ else
+ func_warning "cannot relink \`$file'"
+ fi
+ }
+ else
+ # Install the binary that we compiled earlier.
+ file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+ fi
+ fi
+
+ # remove .exe since cygwin /usr/bin/install will append another
+ # one anyway
+ case $install_prog,$host in
+ */usr/bin/install*,*cygwin*)
+ case $file:$destfile in
+ *.exe:*.exe)
+ # this is ok
+ ;;
+ *.exe:*)
+ destfile=$destfile.exe
+ ;;
+ *:*.exe)
+ func_stripname '' '.exe' "$destfile"
+ destfile=$func_stripname_result
+ ;;
+ esac
+ ;;
+ esac
+ func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
+ $opt_dry_run || if test -n "$outputname"; then
+ ${RM}r "$tmpdir"
+ fi
+ ;;
+ esac
+ done
+
+ for file in $staticlibs; do
+ func_basename "$file"
+ name="$func_basename_result"
+
+ # Set up the ranlib parameters.
+ oldlib="$destdir/$name"
+
+ func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
+
+ if test -n "$stripme" && test -n "$old_striplib"; then
+ func_show_eval "$old_striplib $oldlib" 'exit $?'
+ fi
+
+ # Do each command in the postinstall commands.
+ func_execute_cmds "$old_postinstall_cmds" 'exit $?'
+ done
+
+ test -n "$future_libdirs" && \
+ func_warning "remember to run \`$progname --finish$future_libdirs'"
+
+ if test -n "$current_libdirs"; then
+ # Maybe just do a dry run.
+ $opt_dry_run && current_libdirs=" -n$current_libdirs"
+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+ else
+ exit $EXIT_SUCCESS
+ fi
+}
+
+test "$mode" = install && func_mode_install ${1+"$@"}
+
+
+# func_generate_dlsyms outputname originator pic_p
+# Extract symbols from dlprefiles and create ${outputname}S.o with
+# a dlpreopen symbol table.
+func_generate_dlsyms ()
+{
+ $opt_debug
+ my_outputname="$1"
+ my_originator="$2"
+ my_pic_p="${3-no}"
+ my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+ my_dlsyms=
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ if test -n "$NM" && test -n "$global_symbol_pipe"; then
+ my_dlsyms="${my_outputname}S.c"
+ else
+ func_error "not configured to extract global symbols from dlpreopened files"
+ fi
+ fi
+
+ if test -n "$my_dlsyms"; then
+ case $my_dlsyms in
+ "") ;;
+ *.c)
+ # Discover the nlist of each of the dlfiles.
+ nlist="$output_objdir/${my_outputname}.nm"
+
+ func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
+
+ # Parse the name list into a source file.
+ func_verbose "creating $output_objdir/$my_dlsyms"
+
+ $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* External symbol declarations for the compiler. */\
+"
+
+ if test "$dlself" = yes; then
+ func_verbose "generating symbol list for \`$output'"
+
+ $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
+
+ # Add our own program objects to the symbol list.
+ progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ for progfile in $progfiles; do
+ func_verbose "extracting global C symbols from \`$progfile'"
+ $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -n "$exclude_expsyms"; then
+ $opt_dry_run || {
+ eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ }
+ fi
+
+ if test -n "$export_symbols_regex"; then
+ $opt_dry_run || {
+ eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ }
+ fi
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ export_symbols="$output_objdir/$outputname.exp"
+ $opt_dry_run || {
+ $RM $export_symbols
+ eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
+ else
+ $opt_dry_run || {
+ eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+ eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ case $host in
+ *cygwin | *mingw* | *cegcc* )
+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
+ fi
+ fi
+
+ for dlprefile in $dlprefiles; do
+ func_verbose "extracting global C symbols from \`$dlprefile'"
+ func_basename "$dlprefile"
+ name="$func_basename_result"
+ $opt_dry_run || {
+ eval '$ECHO ": $name " >> "$nlist"'
+ eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+ }
+ done
+
+ $opt_dry_run || {
+ # Make sure we have at least an empty file.
+ test -f "$nlist" || : > "$nlist"
+
+ if test -n "$exclude_expsyms"; then
+ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+ $MV "$nlist"T "$nlist"
+ fi
+
+ # Try sorting and uniquifying the output.
+ if $GREP -v "^: " < "$nlist" |
+ if sort -k 3 </dev/null >/dev/null 2>&1; then
+ sort -k 3
+ else
+ sort +2
+ fi |
+ uniq > "$nlist"S; then
+ :
+ else
+ $GREP -v "^: " < "$nlist" > "$nlist"S
+ fi
+
+ if test -f "$nlist"S; then
+ eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
+ else
+ $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
+ fi
+
+ $ECHO >> "$output_objdir/$my_dlsyms" "\
+
+/* The mapping between symbol names and symbols. */
+typedef struct {
+ const char *name;
+ void *address;
+} lt_dlsymlist;
+"
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ $ECHO >> "$output_objdir/$my_dlsyms" "\
+/* DATA imports from DLLs on WIN32 con't be const, because
+ runtime relocations are performed -- see ld's documentation
+ on pseudo-relocs. */"
+ lt_dlsym_const= ;;
+ *osf5*)
+ echo >> "$output_objdir/$my_dlsyms" "\
+/* This system does not cope well with relocations in const data */"
+ lt_dlsym_const= ;;
+ *)
+ lt_dlsym_const=const ;;
+ esac
+
+ $ECHO >> "$output_objdir/$my_dlsyms" "\
+extern $lt_dlsym_const lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];
+$lt_dlsym_const lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{\
+ { \"$my_originator\", (void *) 0 },"
+
+ case $need_lib_prefix in
+ no)
+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
+ ;;
+ *)
+ eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
+ ;;
+ esac
+ $ECHO >> "$output_objdir/$my_dlsyms" "\
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt_${my_prefix}_LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+ } # !$opt_dry_run
+
+ pic_flag_for_symtable=
+ case "$compile_command " in
+ *" -static "*) ;;
+ *)
+ case $host in
+ # compiling the symbol table file with pic_flag works around
+ # a FreeBSD bug that causes programs to crash when -lm is
+ # linked before any other PIC object. But we must not use
+ # pic_flag when linking with -static. The problem exists in
+ # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+ *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+ pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
+ *-*-hpux*)
+ pic_flag_for_symtable=" $pic_flag" ;;
+ *)
+ if test "X$my_pic_p" != Xno; then
+ pic_flag_for_symtable=" $pic_flag"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ symtab_cflags=
+ for arg in $LTCFLAGS; do
+ case $arg in
+ -pie | -fpie | -fPIE) ;;
+ *) symtab_cflags="$symtab_cflags $arg" ;;
+ esac
+ done
+
+ # Now compile the dynamic symbol file.
+ func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+
+ # Clean up the generated files.
+ func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+
+ # Transform the symbol file into the correct name.
+ symfileobj="$output_objdir/${my_outputname}S.$objext"
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ if test -f "$output_objdir/$my_outputname.def"; then
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+ else
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+ fi
+ ;;
+ *)
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+ ;;
+ esac
+ ;;
+ *)
+ func_fatal_error "unknown suffix for \`$my_dlsyms'"
+ ;;
+ esac
+ else
+ # We keep going just in case the user didn't refer to
+ # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
+ # really was required.
+
+ # Nullify the symbol file.
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+ fi
+}
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+func_win32_libid ()
+{
+ $opt_debug
+ win32_libid_type="unknown"
+ win32_fileres=`file -L $1 2>/dev/null`
+ case $win32_fileres in
+ *ar\ archive\ import\ library*) # definitely import
+ win32_libid_type="x86 archive import"
+ ;;
+ *ar\ archive*) # could be an import, or static
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
+ $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+ win32_nmres=`eval $NM -f posix -A $1 |
+ $SED -n -e '
+ 1,100{
+ / I /{
+ s,.*,import,
+ p
+ q
+ }
+ }'`
+ case $win32_nmres in
+ import*) win32_libid_type="x86 archive import";;
+ *) win32_libid_type="x86 archive static";;
+ esac
+ fi
+ ;;
+ *DLL*)
+ win32_libid_type="x86 DLL"
+ ;;
+ *executable*) # but shell scripts are "executable" too...
+ case $win32_fileres in
+ *MS\ Windows\ PE\ Intel*)
+ win32_libid_type="x86 DLL"
+ ;;
+ esac
+ ;;
+ esac
+ $ECHO "$win32_libid_type"
+}
+
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+ $opt_debug
+ f_ex_an_ar_dir="$1"; shift
+ f_ex_an_ar_oldlib="$1"
+ func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
+ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
+ fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+ $opt_debug
+ my_gentop="$1"; shift
+ my_oldlibs=${1+"$@"}
+ my_oldobjs=""
+ my_xlib=""
+ my_xabs=""
+ my_xdir=""
+
+ for my_xlib in $my_oldlibs; do
+ # Extract the objects.
+ case $my_xlib in
+ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+ *) my_xabs=`pwd`"/$my_xlib" ;;
+ esac
+ func_basename "$my_xlib"
+ my_xlib="$func_basename_result"
+ my_xlib_u=$my_xlib
+ while :; do
+ case " $extracted_archives " in
+ *" $my_xlib_u "*)
+ func_arith $extracted_serial + 1
+ extracted_serial=$func_arith_result
+ my_xlib_u=lt$extracted_serial-$my_xlib ;;
+ *) break ;;
+ esac
+ done
+ extracted_archives="$extracted_archives $my_xlib_u"
+ my_xdir="$my_gentop/$my_xlib_u"
+
+ func_mkdir_p "$my_xdir"
+
+ case $host in
+ *-darwin*)
+ func_verbose "Extracting $my_xabs"
+ # Do not bother doing anything if just a dry run
+ $opt_dry_run || {
+ darwin_orig_dir=`pwd`
+ cd $my_xdir || exit $?
+ darwin_archive=$my_xabs
+ darwin_curdir=`pwd`
+ darwin_base_archive=`basename "$darwin_archive"`
+ darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
+ if test -n "$darwin_arches"; then
+ darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
+ darwin_arch=
+ func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
+ for darwin_arch in $darwin_arches ; do
+ func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+ cd "$darwin_curdir"
+ $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+ done # $darwin_arches
+ ## Okay now we've a bunch of thin objects, gotta fatten them up :)
+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
+ darwin_file=
+ darwin_files=
+ for darwin_file in $darwin_filelist; do
+ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+ $LIPO -create -output "$darwin_file" $darwin_files
+ done # $darwin_filelist
+ $RM -rf unfat-$$
+ cd "$darwin_orig_dir"
+ else
+ cd $darwin_orig_dir
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ fi # $darwin_arches
+ } # !$opt_dry_run
+ ;;
+ *)
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ ;;
+ esac
+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+ done
+
+ func_extract_archives_result="$my_oldobjs"
+}
+
+
+
+# func_emit_wrapper_part1 [arg=no]
+#
+# Emit the first part of a libtool wrapper script on stdout.
+# For more information, see the description associated with
+# func_emit_wrapper(), below.
+func_emit_wrapper_part1 ()
+{
+ func_emit_wrapper_part1_arg1=no
+ if test -n "$1" ; then
+ func_emit_wrapper_part1_arg1=$1
+ fi
+
+ $ECHO "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# Be Bourne compatible
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+ # install mode needs the following variables:
+ generated_by_libtool_version='$macro_version'
+ notinst_deplibs='$notinst_deplibs'
+else
+ # When we are sourced in execute mode, \$file and \$ECHO are already set.
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ ECHO=\"$qecho\"
+ file=\"\$0\"
+ # Make sure echo works.
+ if test \"X\$1\" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+ elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
+ # Yippee, \$ECHO works!
+ :
+ else
+ # Restart under the correct shell, and then maybe \$ECHO will work.
+ exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+ fi
+ fi\
+"
+ $ECHO "\
+
+ # Find the directory that this script lives in.
+ thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+ test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+ # Follow symbolic links until we get to the real thisdir.
+ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+ while test -n \"\$file\"; do
+ destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+ # If there was a directory component, then change thisdir.
+ if test \"x\$destdir\" != \"x\$file\"; then
+ case \"\$destdir\" in
+ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+ *) thisdir=\"\$thisdir/\$destdir\" ;;
+ esac
+ fi
+
+ file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+ done
+"
+}
+# end: func_emit_wrapper_part1
+
+# func_emit_wrapper_part2 [arg=no]
+#
+# Emit the second part of a libtool wrapper script on stdout.
+# For more information, see the description associated with
+# func_emit_wrapper(), below.
+func_emit_wrapper_part2 ()
+{
+ func_emit_wrapper_part2_arg1=no
+ if test -n "$1" ; then
+ func_emit_wrapper_part2_arg1=$1
+ fi
+
+ $ECHO "\
+
+ # Usually 'no', except on cygwin/mingw when embedded into
+ # the cwrapper.
+ WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
+ if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
+ # special case for '.'
+ if test \"\$thisdir\" = \".\"; then
+ thisdir=\`pwd\`
+ fi
+ # remove .libs from thisdir
+ case \"\$thisdir\" in
+ *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
+ $objdir ) thisdir=. ;;
+ esac
+ fi
+
+ # Try to get the absolute directory name.
+ absdir=\`cd \"\$thisdir\" && pwd\`
+ test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+ if test "$fast_install" = yes; then
+ $ECHO "\
+ program=lt-'$outputname'$exeext
+ progdir=\"\$thisdir/$objdir\"
+
+ if test ! -f \"\$progdir/\$program\" ||
+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+ test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+ file=\"\$\$-\$program\"
+
+ if test ! -d \"\$progdir\"; then
+ $MKDIR \"\$progdir\"
+ else
+ $RM \"\$progdir/\$file\"
+ fi"
+
+ $ECHO "\
+
+ # relink executable if necessary
+ if test -n \"\$relink_command\"; then
+ if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+ else
+ $ECHO \"\$relink_command_output\" >&2
+ $RM \"\$progdir/\$file\"
+ exit 1
+ fi
+ fi
+
+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+ { $RM \"\$progdir/\$program\";
+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+ $RM \"\$progdir/\$file\"
+ fi"
+ else
+ $ECHO "\
+ program='$outputname'
+ progdir=\"\$thisdir/$objdir\"
+"
+ fi
+
+ $ECHO "\
+
+ if test -f \"\$progdir/\$program\"; then"
+
+ # Export our shlibpath_var if we have one.
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $ECHO "\
+ # Add our own library path to $shlibpath_var
+ $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+ # Some systems cannot cope with colon-terminated $shlibpath_var
+ # The second colon is a workaround for a bug in BeOS R4 sed
+ $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+ export $shlibpath_var
+"
+ fi
+
+ # fixup the dll searchpath if we need to.
+ if test -n "$dllsearchpath"; then
+ $ECHO "\
+ # Add the dll search path components to the executable PATH
+ PATH=$dllsearchpath:\$PATH
+"
+ fi
+
+ $ECHO "\
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ # Run the actual program with our arguments.
+"
+ case $host in
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2* | *-cegcc*)
+ $ECHO "\
+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+ ;;
+
+ *)
+ $ECHO "\
+ exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+ ;;
+ esac
+ $ECHO "\
+ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+ exit 1
+ fi
+ else
+ # The program doesn't exist.
+ \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+ \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
+ $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
+ exit 1
+ fi
+fi\
+"
+}
+# end: func_emit_wrapper_part2
+
+
+# func_emit_wrapper [arg=no]
+#
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable. Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take. If 'yes', then the emitted script
+# will assume that the directory in which it is stored is
+# the $objdir directory. This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+ func_emit_wrapper_arg1=no
+ if test -n "$1" ; then
+ func_emit_wrapper_arg1=$1
+ fi
+
+ # split this up so that func_emit_cwrapperexe_src
+ # can call each part independently.
+ func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
+ func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
+}
+
+
+# func_to_host_path arg
+#
+# Convert paths to host format when used with build tools.
+# Intended for use with "native" mingw (where libtool itself
+# is running under the msys shell), or in the following cross-
+# build environments:
+# $build $host
+# mingw (msys) mingw [e.g. native]
+# cygwin mingw
+# *nix + wine mingw
+# where wine is equipped with the `winepath' executable.
+# In the native mingw case, the (msys) shell automatically
+# converts paths for any non-msys applications it launches,
+# but that facility isn't available from inside the cwrapper.
+# Similar accommodations are necessary for $host mingw and
+# $build cygwin. Calling this function does no harm for other
+# $host/$build combinations not listed above.
+#
+# ARG is the path (on $build) that should be converted to
+# the proper representation for $host. The result is stored
+# in $func_to_host_path_result.
+func_to_host_path ()
+{
+ func_to_host_path_result="$1"
+ if test -n "$1" ; then
+ case $host in
+ *mingw* )
+ lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+ case $build in
+ *mingw* ) # actually, msys
+ # awkward: cmd appends spaces to result
+ lt_sed_strip_trailing_spaces="s/[ ]*\$//"
+ func_to_host_path_tmp1=`( cmd //c echo "$1" |\
+ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
+ func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
+ $SED -e "$lt_sed_naive_backslashify"`
+ ;;
+ *cygwin* )
+ func_to_host_path_tmp1=`cygpath -w "$1"`
+ func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
+ $SED -e "$lt_sed_naive_backslashify"`
+ ;;
+ * )
+ # Unfortunately, winepath does not exit with a non-zero
+ # error code, so we are forced to check the contents of
+ # stdout. On the other hand, if the command is not
+ # found, the shell will set an exit code of 127 and print
+ # *an error message* to stdout. So we must check for both
+ # error code of zero AND non-empty stdout, which explains
+ # the odd construction:
+ func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
+ if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
+ func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
+ $SED -e "$lt_sed_naive_backslashify"`
+ else
+ # Allow warning below.
+ func_to_host_path_result=""
+ fi
+ ;;
+ esac
+ if test -z "$func_to_host_path_result" ; then
+ func_error "Could not determine host path corresponding to"
+ func_error " '$1'"
+ func_error "Continuing, but uninstalled executables may not work."
+ # Fallback:
+ func_to_host_path_result="$1"
+ fi
+ ;;
+ esac
+ fi
+}
+# end: func_to_host_path
+
+# func_to_host_pathlist arg
+#
+# Convert pathlists to host format when used with build tools.
+# See func_to_host_path(), above. This function supports the
+# following $build/$host combinations (but does no harm for
+# combinations not listed here):
+# $build $host
+# mingw (msys) mingw [e.g. native]
+# cygwin mingw
+# *nix + wine mingw
+#
+# Path separators are also converted from $build format to
+# $host format. If ARG begins or ends with a path separator
+# character, it is preserved (but converted to $host format)
+# on output.
+#
+# ARG is a pathlist (on $build) that should be converted to
+# the proper representation on $host. The result is stored
+# in $func_to_host_pathlist_result.
+func_to_host_pathlist ()
+{
+ func_to_host_pathlist_result="$1"
+ if test -n "$1" ; then
+ case $host in
+ *mingw* )
+ lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+ # Remove leading and trailing path separator characters from
+ # ARG. msys behavior is inconsistent here, cygpath turns them
+ # into '.;' and ';.', and winepath ignores them completely.
+ func_to_host_pathlist_tmp2="$1"
+ # Once set for this call, this variable should not be
+ # reassigned. It is used in tha fallback case.
+ func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
+ $SED -e 's|^:*||' -e 's|:*$||'`
+ case $build in
+ *mingw* ) # Actually, msys.
+ # Awkward: cmd appends spaces to result.
+ lt_sed_strip_trailing_spaces="s/[ ]*\$//"
+ func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
+ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
+ func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
+ $SED -e "$lt_sed_naive_backslashify"`
+ ;;
+ *cygwin* )
+ func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
+ func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
+ $SED -e "$lt_sed_naive_backslashify"`
+ ;;
+ * )
+ # unfortunately, winepath doesn't convert pathlists
+ func_to_host_pathlist_result=""
+ func_to_host_pathlist_oldIFS=$IFS
+ IFS=:
+ for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
+ IFS=$func_to_host_pathlist_oldIFS
+ if test -n "$func_to_host_pathlist_f" ; then
+ func_to_host_path "$func_to_host_pathlist_f"
+ if test -n "$func_to_host_path_result" ; then
+ if test -z "$func_to_host_pathlist_result" ; then
+ func_to_host_pathlist_result="$func_to_host_path_result"
+ else
+ func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
+ fi
+ fi
+ fi
+ IFS=:
+ done
+ IFS=$func_to_host_pathlist_oldIFS
+ ;;
+ esac
+ if test -z "$func_to_host_pathlist_result" ; then
+ func_error "Could not determine the host path(s) corresponding to"
+ func_error " '$1'"
+ func_error "Continuing, but uninstalled executables may not work."
+ # Fallback. This may break if $1 contains DOS-style drive
+ # specifications. The fix is not to complicate the expression
+ # below, but for the user to provide a working wine installation
+ # with winepath so that path translation in the cross-to-mingw
+ # case works properly.
+ lt_replace_pathsep_nix_to_dos="s|:|;|g"
+ func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
+ $SED -e "$lt_replace_pathsep_nix_to_dos"`
+ fi
+ # Now, add the leading and trailing path separators back
+ case "$1" in
+ :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
+ ;;
+ esac
+ case "$1" in
+ *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+}
+# end: func_to_host_pathlist
+
+# func_emit_cwrapperexe_src
+# emit the source code for a wrapper executable on stdout
+# Must ONLY be called from within func_mode_link because
+# it depends on a number of variable set therein.
+func_emit_cwrapperexe_src ()
+{
+ cat <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+ Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+
+ The $output program cannot be directly executed until all the libtool
+ libraries that it depends on are installed.
+
+ This wrapper executable should never be moved out of the build directory.
+ If it is, it will not operate correctly.
+
+ Currently, it simply execs the wrapper *script* "$SHELL $output",
+ but could eventually absorb all of the scripts functionality and
+ exec $objdir/$outputname directly.
+*/
+EOF
+ cat <<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+# define setmode _setmode
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+# include <io.h>
+# define HAVE_SETENV
+# ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+# endif
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
+
+#ifdef _MSC_VER
+# define S_IXUSR _S_IEXEC
+# define stat _stat
+# ifndef _INTPTR_T_DEFINED
+# define intptr_t int
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+ defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# define FOPEN_WB "wb"
+# ifndef DIR_SEPARATOR_2
+# define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+# define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#ifdef __CYGWIN__
+# define FOPEN_WB "wb"
+#endif
+
+#ifndef FOPEN_WB
+# define FOPEN_WB "w"
+#endif
+#ifndef _O_BINARY
+# define _O_BINARY 0
+#endif
+
+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+ if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+#undef LTWRAPPER_DEBUGPRINTF
+#if defined DEBUGWRAPPER
+# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
+static void
+ltwrapper_debugprintf (const char *fmt, ...)
+{
+ va_list args;
+ va_start (args, fmt);
+ (void) vfprintf (stderr, fmt, args);
+ va_end (args);
+}
+#else
+# define LTWRAPPER_DEBUGPRINTF(args)
+#endif
+
+const char *program_name = NULL;
+
+void *xmalloc (size_t num);
+char *xstrdup (const char *string);
+const char *base_name (const char *name);
+char *find_executable (const char *wrapper);
+char *chase_symlinks (const char *pathspec);
+int make_executable (const char *path);
+int check_executable (const char *path);
+char *strendzap (char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+void lt_setenv (const char *name, const char *value);
+char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+void lt_opt_process_env_set (const char *arg);
+void lt_opt_process_env_prepend (const char *arg);
+void lt_opt_process_env_append (const char *arg);
+int lt_split_name_value (const char *arg, char** name, char** value);
+void lt_update_exe_path (const char *name, const char *value);
+void lt_update_lib_path (const char *name, const char *value);
+char **prepare_spawn (char **argv);
+
+static const char *script_text_part1 =
+EOF
+
+ func_emit_wrapper_part1 yes |
+ $SED -e 's/\([\\"]\)/\\\1/g' \
+ -e 's/^/ "/' -e 's/$/\\n"/'
+ echo ";"
+ cat <<EOF
+
+static const char *script_text_part2 =
+EOF
+ func_emit_wrapper_part2 yes |
+ $SED -e 's/\([\\"]\)/\\\1/g' \
+ -e 's/^/ "/' -e 's/$/\\n"/'
+ echo ";"
+
+ cat <<EOF
+const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ func_to_host_pathlist "$temp_rpath"
+ cat <<EOF
+const char * LIB_PATH_VALUE = "$func_to_host_pathlist_result";
+EOF
+ else
+ cat <<"EOF"
+const char * LIB_PATH_VALUE = "";
+EOF
+ fi
+
+ if test -n "$dllsearchpath"; then
+ func_to_host_pathlist "$dllsearchpath:"
+ cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE = "$func_to_host_pathlist_result";
+EOF
+ else
+ cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE = "";
+EOF
+ fi
+
+ if test "$fast_install" = yes; then
+ cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+ else
+ cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+ fi
+
+
+ cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX "--lt-"
+#define LTWRAPPER_OPTION_PREFIX_LENGTH 5
+
+static const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH;
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+
+static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script";
+
+static const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
+static const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set";
+ /* argument is putenv-style "foo=bar", value of foo is set to bar */
+
+static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
+static const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prepend";
+ /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
+
+static const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
+static const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-append";
+ /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
+
+int
+main (int argc, char *argv[])
+{
+ char **newargz;
+ int newargc;
+ char *tmp_pathspec;
+ char *actual_cwrapper_path;
+ char *actual_cwrapper_name;
+ char *target_name;
+ char *lt_argv_zero;
+ intptr_t rval = 127;
+
+ int i;
+
+ program_name = (char *) xstrdup (base_name (argv[0]));
+ LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0]));
+ LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
+
+ /* very simple arg parsing; don't want to rely on getopt */
+ for (i = 1; i < argc; i++)
+ {
+ if (strcmp (argv[i], dumpscript_opt) == 0)
+ {
+EOF
+ case "$host" in
+ *mingw* | *cygwin* )
+ # make stdout use "unix" line endings
+ echo " setmode(1,_O_BINARY);"
+ ;;
+ esac
+
+ cat <<"EOF"
+ printf ("%s", script_text_part1);
+ printf ("%s", script_text_part2);
+ return 0;
+ }
+ }
+
+ newargz = XMALLOC (char *, argc + 1);
+ tmp_pathspec = find_executable (argv[0]);
+ if (tmp_pathspec == NULL)
+ lt_fatal ("Couldn't find %s", argv[0]);
+ LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
+ tmp_pathspec));
+
+ actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+ LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
+ actual_cwrapper_path));
+ XFREE (tmp_pathspec);
+
+ actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
+ strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+ /* wrapper name transforms */
+ strendzap (actual_cwrapper_name, ".exe");
+ tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+ XFREE (actual_cwrapper_name);
+ actual_cwrapper_name = tmp_pathspec;
+ tmp_pathspec = 0;
+
+ /* target_name transforms -- use actual target program name; might have lt- prefix */
+ target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+ strendzap (target_name, ".exe");
+ tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+ XFREE (target_name);
+ target_name = tmp_pathspec;
+ tmp_pathspec = 0;
+
+ LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
+ target_name));
+EOF
+
+ cat <<EOF
+ newargz[0] =
+ XMALLOC (char, (strlen (actual_cwrapper_path) +
+ strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+ strcpy (newargz[0], actual_cwrapper_path);
+ strcat (newargz[0], "$objdir");
+ strcat (newargz[0], "/");
+EOF
+
+ cat <<"EOF"
+ /* stop here, and copy so we don't have to do this twice */
+ tmp_pathspec = xstrdup (newargz[0]);
+
+ /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+ strcat (newargz[0], actual_cwrapper_name);
+
+ /* DO want the lt- prefix here if it exists, so use target_name */
+ lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+ XFREE (tmp_pathspec);
+ tmp_pathspec = NULL;
+EOF
+
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+ {
+ char* p;
+ while ((p = strchr (newargz[0], '\\')) != NULL)
+ {
+ *p = '/';
+ }
+ while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+ {
+ *p = '/';
+ }
+ }
+EOF
+ ;;
+ esac
+
+ cat <<"EOF"
+ XFREE (target_name);
+ XFREE (actual_cwrapper_path);
+ XFREE (actual_cwrapper_name);
+
+ lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+ lt_setenv ("DUALCASE", "1"); /* for MSK sh */
+ lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+ lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+
+ newargc=0;
+ for (i = 1; i < argc; i++)
+ {
+ if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
+ {
+ if (argv[i][env_set_opt_len] == '=')
+ {
+ const char *p = argv[i] + env_set_opt_len + 1;
+ lt_opt_process_env_set (p);
+ }
+ else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
+ {
+ lt_opt_process_env_set (argv[++i]); /* don't copy */
+ }
+ else
+ lt_fatal ("%s missing required argument", env_set_opt);
+ continue;
+ }
+ if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
+ {
+ if (argv[i][env_prepend_opt_len] == '=')
+ {
+ const char *p = argv[i] + env_prepend_opt_len + 1;
+ lt_opt_process_env_prepend (p);
+ }
+ else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
+ {
+ lt_opt_process_env_prepend (argv[++i]); /* don't copy */
+ }
+ else
+ lt_fatal ("%s missing required argument", env_prepend_opt);
+ continue;
+ }
+ if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
+ {
+ if (argv[i][env_append_opt_len] == '=')
+ {
+ const char *p = argv[i] + env_append_opt_len + 1;
+ lt_opt_process_env_append (p);
+ }
+ else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
+ {
+ lt_opt_process_env_append (argv[++i]); /* don't copy */
+ }
+ else
+ lt_fatal ("%s missing required argument", env_append_opt);
+ continue;
+ }
+ if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
+ {
+ /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+ namespace, but it is not one of the ones we know about and
+ have already dealt with, above (inluding dump-script), then
+ report an error. Otherwise, targets might begin to believe
+ they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+ namespace. The first time any user complains about this, we'll
+ need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+ or a configure.ac-settable value.
+ */
+ lt_fatal ("Unrecognized option in %s namespace: '%s'",
+ ltwrapper_option_prefix, argv[i]);
+ }
+ /* otherwise ... */
+ newargz[++newargc] = xstrdup (argv[i]);
+ }
+ newargz[++newargc] = NULL;
+
+ LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
+ for (i = 0; i < newargc; i++)
+ {
+ LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
+ }
+
+EOF
+
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+ /* execv doesn't actually work on mingw as expected on unix */
+ newargz = prepare_spawn (newargz);
+ rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+ if (rval == -1)
+ {
+ /* failed to start process */
+ LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
+ return 127;
+ }
+ return rval;
+EOF
+ ;;
+ *)
+ cat <<"EOF"
+ execv (lt_argv_zero, newargz);
+ return rval; /* =127, but avoids unused variable warning */
+EOF
+ ;;
+ esac
+
+ cat <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+ void *p = (void *) malloc (num);
+ if (!p)
+ lt_fatal ("Memory exhausted");
+
+ return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+ return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
+ string) : NULL;
+}
+
+const char *
+base_name (const char *name)
+{
+ const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ /* Skip over the disk name in MSDOS pathnames. */
+ if (isalpha ((unsigned char) name[0]) && name[1] == ':')
+ name += 2;
+#endif
+
+ for (base = name; *name; name++)
+ if (IS_DIR_SEPARATOR (*name))
+ base = name + 1;
+ return base;
+}
+
+int
+check_executable (const char *path)
+{
+ struct stat st;
+
+ LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n",
+ path ? (*path ? path : "EMPTY!") : "NULL!"));
+ if ((!path) || (!*path))
+ return 0;
+
+ if ((stat (path, &st) >= 0)
+ && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
+ return 1;
+ else
+ return 0;
+}
+
+int
+make_executable (const char *path)
+{
+ int rval = 0;
+ struct stat st;
+
+ LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n",
+ path ? (*path ? path : "EMPTY!") : "NULL!"));
+ if ((!path) || (!*path))
+ return 0;
+
+ if (stat (path, &st) >= 0)
+ {
+ rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
+ }
+ return rval;
+}
+
+/* Searches for the full path of the wrapper. Returns
+ newly allocated full path name if found, NULL otherwise
+ Does not chase symlinks, even on platforms that support them.
+*/
+char *
+find_executable (const char *wrapper)
+{
+ int has_slash = 0;
+ const char *p;
+ const char *p_next;
+ /* static buffer for getcwd */
+ char tmp[LT_PATHMAX + 1];
+ int tmp_len;
+ char *concat_name;
+
+ LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n",
+ wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
+
+ if ((wrapper == NULL) || (*wrapper == '\0'))
+ return NULL;
+
+ /* Absolute path? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ }
+ else
+ {
+#endif
+ if (IS_DIR_SEPARATOR (wrapper[0]))
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ }
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ }
+#endif
+
+ for (p = wrapper; *p; p++)
+ if (*p == '/')
+ {
+ has_slash = 1;
+ break;
+ }
+ if (!has_slash)
+ {
+ /* no slashes; search PATH */
+ const char *path = getenv ("PATH");
+ if (path != NULL)
+ {
+ for (p = path; *p; p = p_next)
+ {
+ const char *q;
+ size_t p_len;
+ for (q = p; *q; q++)
+ if (IS_PATH_SEPARATOR (*q))
+ break;
+ p_len = q - p;
+ p_next = (*q == '\0' ? q : q + 1);
+ if (p_len == 0)
+ {
+ /* empty path: current directory */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+ tmp_len = strlen (tmp);
+ concat_name =
+ XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+ }
+ else
+ {
+ concat_name =
+ XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, p, p_len);
+ concat_name[p_len] = '/';
+ strcpy (concat_name + p_len + 1, wrapper);
+ }
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ }
+ }
+ /* not found in PATH; assume curdir */
+ }
+ /* Relative path | not found in path: prepend cwd */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+ tmp_len = strlen (tmp);
+ concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ return NULL;
+}
+
+char *
+chase_symlinks (const char *pathspec)
+{
+#ifndef S_ISLNK
+ return xstrdup (pathspec);
+#else
+ char buf[LT_PATHMAX];
+ struct stat s;
+ char *tmp_pathspec = xstrdup (pathspec);
+ char *p;
+ int has_symlinks = 0;
+ while (strlen (tmp_pathspec) && !has_symlinks)
+ {
+ LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
+ tmp_pathspec));
+ if (lstat (tmp_pathspec, &s) == 0)
+ {
+ if (S_ISLNK (s.st_mode) != 0)
+ {
+ has_symlinks = 1;
+ break;
+ }
+
+ /* search backwards for last DIR_SEPARATOR */
+ p = tmp_pathspec + strlen (tmp_pathspec) - 1;
+ while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+ p--;
+ if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+ {
+ /* no more DIR_SEPARATORS left */
+ break;
+ }
+ *p = '\0';
+ }
+ else
+ {
+ char *errstr = strerror (errno);
+ lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
+ }
+ }
+ XFREE (tmp_pathspec);
+
+ if (!has_symlinks)
+ {
+ return xstrdup (pathspec);
+ }
+
+ tmp_pathspec = realpath (pathspec, buf);
+ if (tmp_pathspec == 0)
+ {
+ lt_fatal ("Could not follow symlinks for %s", pathspec);
+ }
+ return xstrdup (tmp_pathspec);
+#endif
+}
+
+char *
+strendzap (char *str, const char *pat)
+{
+ size_t len, patlen;
+
+ assert (str != NULL);
+ assert (pat != NULL);
+
+ len = strlen (str);
+ patlen = strlen (pat);
+
+ if (patlen <= len)
+ {
+ str += len - patlen;
+ if (strcmp (str, pat) == 0)
+ *str = '\0';
+ }
+ return str;
+}
+
+static void
+lt_error_core (int exit_status, const char *mode,
+ const char *message, va_list ap)
+{
+ fprintf (stderr, "%s: %s: ", program_name, mode);
+ vfprintf (stderr, message, ap);
+ fprintf (stderr, ".\n");
+
+ if (exit_status >= 0)
+ exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+ va_list ap;
+ va_start (ap, message);
+ lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+ va_end (ap);
+}
+
+void
+lt_setenv (const char *name, const char *value)
+{
+ LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
+ (name ? name : "<NULL>"),
+ (value ? value : "<NULL>")));
+ {
+#ifdef HAVE_SETENV
+ /* always make a copy, for consistency with !HAVE_SETENV */
+ char *str = xstrdup (value);
+ setenv (name, str, 1);
+#else
+ int len = strlen (name) + 1 + strlen (value) + 1;
+ char *str = XMALLOC (char, len);
+ sprintf (str, "%s=%s", name, value);
+ if (putenv (str) != EXIT_SUCCESS)
+ {
+ XFREE (str);
+ }
+#endif
+ }
+}
+
+char *
+lt_extend_str (const char *orig_value, const char *add, int to_end)
+{
+ char *new_value;
+ if (orig_value && *orig_value)
+ {
+ int orig_value_len = strlen (orig_value);
+ int add_len = strlen (add);
+ new_value = XMALLOC (char, add_len + orig_value_len + 1);
+ if (to_end)
+ {
+ strcpy (new_value, orig_value);
+ strcpy (new_value + orig_value_len, add);
+ }
+ else
+ {
+ strcpy (new_value, add);
+ strcpy (new_value + add_len, orig_value);
+ }
+ }
+ else
+ {
+ new_value = xstrdup (add);
+ }
+ return new_value;
+}
+
+int
+lt_split_name_value (const char *arg, char** name, char** value)
+{
+ const char *p;
+ int len;
+ if (!arg || !*arg)
+ return 1;
+
+ p = strchr (arg, (int)'=');
+
+ if (!p)
+ return 1;
+
+ *value = xstrdup (++p);
+
+ len = strlen (arg) - strlen (*value);
+ *name = XMALLOC (char, len);
+ strncpy (*name, arg, len-1);
+ (*name)[len - 1] = '\0';
+
+ return 0;
+}
+
+void
+lt_opt_process_env_set (const char *arg)
+{
+ char *name = NULL;
+ char *value = NULL;
+
+ if (lt_split_name_value (arg, &name, &value) != 0)
+ {
+ XFREE (name);
+ XFREE (value);
+ lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
+ }
+
+ lt_setenv (name, value);
+ XFREE (name);
+ XFREE (value);
+}
+
+void
+lt_opt_process_env_prepend (const char *arg)
+{
+ char *name = NULL;
+ char *value = NULL;
+ char *new_value = NULL;
+
+ if (lt_split_name_value (arg, &name, &value) != 0)
+ {
+ XFREE (name);
+ XFREE (value);
+ lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
+ }
+
+ new_value = lt_extend_str (getenv (name), value, 0);
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ XFREE (name);
+ XFREE (value);
+}
+
+void
+lt_opt_process_env_append (const char *arg)
+{
+ char *name = NULL;
+ char *value = NULL;
+ char *new_value = NULL;
+
+ if (lt_split_name_value (arg, &name, &value) != 0)
+ {
+ XFREE (name);
+ XFREE (value);
+ lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
+ }
+
+ new_value = lt_extend_str (getenv (name), value, 1);
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ XFREE (name);
+ XFREE (value);
+}
+
+void
+lt_update_exe_path (const char *name, const char *value)
+{
+ LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+ (name ? name : "<NULL>"),
+ (value ? value : "<NULL>")));
+
+ if (name && *name && value && *value)
+ {
+ char *new_value = lt_extend_str (getenv (name), value, 0);
+ /* some systems can't cope with a ':'-terminated path #' */
+ int len = strlen (new_value);
+ while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+ {
+ new_value[len-1] = '\0';
+ }
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ }
+}
+
+void
+lt_update_lib_path (const char *name, const char *value)
+{
+ LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+ (name ? name : "<NULL>"),
+ (value ? value : "<NULL>")));
+
+ if (name && *name && value && *value)
+ {
+ char *new_value = lt_extend_str (getenv (name), value, 0);
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ }
+}
+
+EOF
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+
+/* Prepares an argument vector before calling spawn().
+ Note that spawn() does not by itself call the command interpreter
+ (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
+ ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+ GetVersionEx(&v);
+ v.dwPlatformId == VER_PLATFORM_WIN32_NT;
+ }) ? "cmd.exe" : "command.com").
+ Instead it simply concatenates the arguments, separated by ' ', and calls
+ CreateProcess(). We must quote the arguments since Win32 CreateProcess()
+ interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
+ special way:
+ - Space and tab are interpreted as delimiters. They are not treated as
+ delimiters if they are surrounded by double quotes: "...".
+ - Unescaped double quotes are removed from the input. Their only effect is
+ that within double quotes, space and tab are treated like normal
+ characters.
+ - Backslashes not followed by double quotes are not special.
+ - But 2*n+1 backslashes followed by a double quote become
+ n backslashes followed by a double quote (n >= 0):
+ \" -> "
+ \\\" -> \"
+ \\\\\" -> \\"
+ */
+#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+char **
+prepare_spawn (char **argv)
+{
+ size_t argc;
+ char **new_argv;
+ size_t i;
+
+ /* Count number of arguments. */
+ for (argc = 0; argv[argc] != NULL; argc++)
+ ;
+
+ /* Allocate new argument vector. */
+ new_argv = XMALLOC (char *, argc + 1);
+
+ /* Put quoted arguments into the new argument vector. */
+ for (i = 0; i < argc; i++)
+ {
+ const char *string = argv[i];
+
+ if (string[0] == '\0')
+ new_argv[i] = xstrdup ("\"\"");
+ else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
+ {
+ int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
+ size_t length;
+ unsigned int backslashes;
+ const char *s;
+ char *quoted_string;
+ char *p;
+
+ length = 0;
+ backslashes = 0;
+ if (quote_around)
+ length++;
+ for (s = string; *s != '\0'; s++)
+ {
+ char c = *s;
+ if (c == '"')
+ length += backslashes + 1;
+ length++;
+ if (c == '\\')
+ backslashes++;
+ else
+ backslashes = 0;
+ }
+ if (quote_around)
+ length += backslashes + 1;
+
+ quoted_string = XMALLOC (char, length + 1);
+
+ p = quoted_string;
+ backslashes = 0;
+ if (quote_around)
+ *p++ = '"';
+ for (s = string; *s != '\0'; s++)
+ {
+ char c = *s;
+ if (c == '"')
+ {
+ unsigned int j;
+ for (j = backslashes + 1; j > 0; j--)
+ *p++ = '\\';
+ }
+ *p++ = c;
+ if (c == '\\')
+ backslashes++;
+ else
+ backslashes = 0;
+ }
+ if (quote_around)
+ {
+ unsigned int j;
+ for (j = backslashes; j > 0; j--)
+ *p++ = '\\';
+ *p++ = '"';
+ }
+ *p = '\0';
+
+ new_argv[i] = quoted_string;
+ }
+ else
+ new_argv[i] = (char *) string;
+ }
+ new_argv[argc] = NULL;
+
+ return new_argv;
+}
+EOF
+ ;;
+ esac
+}
+# end: func_emit_cwrapperexe_src
+
+# func_mode_link arg...
+func_mode_link ()
+{
+ $opt_debug
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ # It is impossible to link a dll without this setting, and
+ # we shouldn't force the makefile maintainer to figure out
+ # which system we are compiling for in order to pass an extra
+ # flag for every libtool invocation.
+ # allow_undefined=no
+
+ # FIXME: Unfortunately, there are problems with the above when trying
+ # to make a dll which has undefined symbols, in which case not
+ # even a static library is built. For now, we need to specify
+ # -no-undefined on the libtool link line when we can be certain
+ # that all symbols are satisfied, otherwise we get a static library.
+ allow_undefined=yes
+ ;;
+ *)
+ allow_undefined=yes
+ ;;
+ esac
+ libtool_args=$nonopt
+ base_compile="$nonopt $@"
+ compile_command=$nonopt
+ finalize_command=$nonopt
+
+ compile_rpath=
+ finalize_rpath=
+ compile_shlibpath=
+ finalize_shlibpath=
+ convenience=
+ old_convenience=
+ deplibs=
+ old_deplibs=
+ compiler_flags=
+ linker_flags=
+ dllsearchpath=
+ lib_search_path=`pwd`
+ inst_prefix_dir=
+ new_inherited_linker_flags=
+
+ avoid_version=no
+ dlfiles=
+ dlprefiles=
+ dlself=no
+ export_dynamic=no
+ export_symbols=
+ export_symbols_regex=
+ generated=
+ libobjs=
+ ltlibs=
+ module=no
+ no_install=no
+ objs=
+ non_pic_objects=
+ precious_files_regex=
+ prefer_static_libs=no
+ preload=no
+ prev=
+ prevarg=
+ release=
+ rpath=
+ xrpath=
+ perm_rpath=
+ temp_rpath=
+ thread_safe=no
+ vinfo=
+ vinfo_number=no
+ weak_libs=
+ single_module="${wl}-single_module"
+ func_infer_tag $base_compile
+
+ # We need to know -static, to get the right output filenames.
+ for arg
+ do
+ case $arg in
+ -shared)
+ test "$build_libtool_libs" != yes && \
+ func_fatal_configuration "can not build a shared library"
+ build_old_libs=no
+ break
+ ;;
+ -all-static | -static | -static-libtool-libs)
+ case $arg in
+ -all-static)
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ func_warning "complete static linking is impossible in this configuration"
+ fi
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ -static)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=built
+ ;;
+ -static-libtool-libs)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ esac
+ build_libtool_libs=no
+ build_old_libs=yes
+ break
+ ;;
+ esac
+ done
+
+ # See if our shared archives depend on static archives.
+ test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+ # Go through the arguments, transforming them on the way.
+ while test "$#" -gt 0; do
+ arg="$1"
+ shift
+ func_quote_for_eval "$arg"
+ qarg=$func_quote_for_eval_unquoted_result
+ func_append libtool_args " $func_quote_for_eval_result"
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ output)
+ func_append compile_command " @OUTPUT@"
+ func_append finalize_command " @OUTPUT@"
+ ;;
+ esac
+
+ case $prev in
+ dlfiles|dlprefiles)
+ if test "$preload" = no; then
+ # Add the symbol object into the linking commands.
+ func_append compile_command " @SYMFILE@"
+ func_append finalize_command " @SYMFILE@"
+ preload=yes
+ fi
+ case $arg in
+ *.la | *.lo) ;; # We handle these cases below.
+ force)
+ if test "$dlself" = no; then
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ self)
+ if test "$prev" = dlprefiles; then
+ dlself=yes
+ elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+ dlself=yes
+ else
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ *)
+ if test "$prev" = dlfiles; then
+ dlfiles="$dlfiles $arg"
+ else
+ dlprefiles="$dlprefiles $arg"
+ fi
+ prev=
+ continue
+ ;;
+ esac
+ ;;
+ expsyms)
+ export_symbols="$arg"
+ test -f "$arg" \
+ || func_fatal_error "symbol file \`$arg' does not exist"
+ prev=
+ continue
+ ;;
+ expsyms_regex)
+ export_symbols_regex="$arg"
+ prev=
+ continue
+ ;;
+ framework)
+ case $host in
+ *-*-darwin*)
+ case "$deplibs " in
+ *" $qarg.ltframework "*) ;;
+ *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
+ ;;
+ esac
+ ;;
+ esac
+ prev=
+ continue
+ ;;
+ inst_prefix)
+ inst_prefix_dir="$arg"
+ prev=
+ continue
+ ;;
+ objectlist)
+ if test -f "$arg"; then
+ save_arg=$arg
+ moreargs=
+ for fil in `cat "$save_arg"`
+ do
+# moreargs="$moreargs $fil"
+ arg=$fil
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if func_lalib_unsafe_p "$arg"; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ func_source "$arg"
+
+ if test -z "$pic_object" ||
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none &&
+ test "$non_pic_object" = none; then
+ func_fatal_error "cannot find name of object for \`$arg'"
+ fi
+
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$dlfiles $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ func_append libobjs " $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ func_append non_pic_objects " $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if $opt_dry_run; then
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ func_lo2o "$arg"
+ pic_object=$xdir$objdir/$func_lo2o_result
+ non_pic_object=$xdir$func_lo2o_result
+ func_append libobjs " $pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ else
+ func_fatal_error "\`$arg' is not a valid libtool object"
+ fi
+ fi
+ done
+ else
+ func_fatal_error "link input file \`$arg' does not exist"
+ fi
+ arg=$save_arg
+ prev=
+ continue
+ ;;
+ precious_regex)
+ precious_files_regex="$arg"
+ prev=
+ continue
+ ;;
+ release)
+ release="-$arg"
+ prev=
+ continue
+ ;;
+ rpath | xrpath)
+ # We need an absolute path.
+ case $arg in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ if test "$prev" = rpath; then
+ case "$rpath " in
+ *" $arg "*) ;;
+ *) rpath="$rpath $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+ *) xrpath="$xrpath $arg" ;;
+ esac
+ fi
+ prev=
+ continue
+ ;;
+ shrext)
+ shrext_cmds="$arg"
+ prev=
+ continue
+ ;;
+ weak)
+ weak_libs="$weak_libs $arg"
+ prev=
+ continue
+ ;;
+ xcclinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xcompiler)
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xlinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $wl$qarg"
+ prev=
+ func_append compile_command " $wl$qarg"
+ func_append finalize_command " $wl$qarg"
+ continue
+ ;;
+ *)
+ eval "$prev=\"\$arg\""
+ prev=
+ continue
+ ;;
+ esac
+ fi # test -n "$prev"
+
+ prevarg="$arg"
+
+ case $arg in
+ -all-static)
+ if test -n "$link_static_flag"; then
+ # See comment for -static flag below, for more details.
+ func_append compile_command " $link_static_flag"
+ func_append finalize_command " $link_static_flag"
+ fi
+ continue
+ ;;
+
+ -allow-undefined)
+ # FIXME: remove this flag sometime in the future.
+ func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+ ;;
+
+ -avoid-version)
+ avoid_version=yes
+ continue
+ ;;
+
+ -dlopen)
+ prev=dlfiles
+ continue
+ ;;
+
+ -dlpreopen)
+ prev=dlprefiles
+ continue
+ ;;
+
+ -export-dynamic)
+ export_dynamic=yes
+ continue
+ ;;
+
+ -export-symbols | -export-symbols-regex)
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+ func_fatal_error "more than one -exported-symbols argument is not allowed"
+ fi
+ if test "X$arg" = "X-export-symbols"; then
+ prev=expsyms
+ else
+ prev=expsyms_regex
+ fi
+ continue
+ ;;
+
+ -framework)
+ prev=framework
+ continue
+ ;;
+
+ -inst-prefix-dir)
+ prev=inst_prefix
+ continue
+ ;;
+
+ # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+ # so, if we see these flags be careful not to treat them like -L
+ -L[A-Z][A-Z]*:*)
+ case $with_gcc/$host in
+ no/*-*-irix* | /*-*-irix*)
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ ;;
+ esac
+ continue
+ ;;
+
+ -L*)
+ func_stripname '-L' '' "$arg"
+ dir=$func_stripname_result
+ if test -z "$dir"; then
+ if test "$#" -gt 0; then
+ func_fatal_error "require no space between \`-L' and \`$1'"
+ else
+ func_fatal_error "need path for \`-L' option"
+ fi
+ fi
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ test -z "$absdir" && \
+ func_fatal_error "cannot determine absolute directory name of \`$dir'"
+ dir="$absdir"
+ ;;
+ esac
+ case "$deplibs " in
+ *" -L$dir "*) ;;
+ *)
+ deplibs="$deplibs -L$dir"
+ lib_search_path="$lib_search_path $dir"
+ ;;
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ ::) dllsearchpath=$dir;;
+ *) dllsearchpath="$dllsearchpath:$dir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ ::) dllsearchpath=$testbindir;;
+ *) dllsearchpath="$dllsearchpath:$testbindir";;
+ esac
+ ;;
+ esac
+ continue
+ ;;
+
+ -l*)
+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
+ # These systems don't actually have a C or math library (as such)
+ continue
+ ;;
+ *-*-os2*)
+ # These systems don't actually have a C library (as such)
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C and math libraries are in the System framework
+ deplibs="$deplibs System.ltframework"
+ continue
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ test "X$arg" = "X-lc" && continue
+ ;;
+ esac
+ elif test "X$arg" = "X-lc_r"; then
+ case $host in
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc_r directly, use -pthread flag.
+ continue
+ ;;
+ esac
+ fi
+ deplibs="$deplibs $arg"
+ continue
+ ;;
+
+ -module)
+ module=yes
+ continue
+ ;;
+
+ # Tru64 UNIX uses -model [arg] to determine the layout of C++
+ # classes, name mangling, and exception handling.
+ # Darwin uses the -arch flag to determine output architecture.
+ -model|-arch|-isysroot)
+ compiler_flags="$compiler_flags $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ prev=xcompiler
+ continue
+ ;;
+
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+ compiler_flags="$compiler_flags $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ case "$new_inherited_linker_flags " in
+ *" $arg "*) ;;
+ * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
+ esac
+ continue
+ ;;
+
+ -multi_module)
+ single_module="${wl}-multi_module"
+ continue
+ ;;
+
+ -no-fast-install)
+ fast_install=no
+ continue
+ ;;
+
+ -no-install)
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
+ # The PATH hackery in wrapper scripts is required on Windows
+ # and Darwin in order for the loader to find any dlls it needs.
+ func_warning "\`-no-install' is ignored for $host"
+ func_warning "assuming \`-no-fast-install' instead"
+ fast_install=no
+ ;;
+ *) no_install=yes ;;
+ esac
+ continue
+ ;;
+
+ -no-undefined)
+ allow_undefined=no
+ continue
+ ;;
+
+ -objectlist)
+ prev=objectlist
+ continue
+ ;;
+
+ -o) prev=output ;;
+
+ -precious-files-regex)
+ prev=precious_regex
+ continue
+ ;;
+
+ -release)
+ prev=release
+ continue
+ ;;
+
+ -rpath)
+ prev=rpath
+ continue
+ ;;
+
+ -R)
+ prev=xrpath
+ continue
+ ;;
+
+ -R*)
+ func_stripname '-R' '' "$arg"
+ dir=$func_stripname_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ continue
+ ;;
+
+ -shared)
+ # The effects of -shared are defined in a previous loop.
+ continue
+ ;;
+
+ -shrext)
+ prev=shrext
+ continue
+ ;;
+
+ -static | -static-libtool-libs)
+ # The effects of -static are defined in a previous loop.
+ # We used to do the same as -all-static on platforms that
+ # didn't have a PIC flag, but the assumption that the effects
+ # would be equivalent was wrong. It would break on at least
+ # Digital Unix and AIX.
+ continue
+ ;;
+
+ -thread-safe)
+ thread_safe=yes
+ continue
+ ;;
+
+ -version-info)
+ prev=vinfo
+ continue
+ ;;
+
+ -version-number)
+ prev=vinfo
+ vinfo_number=yes
+ continue
+ ;;
+
+ -weak)
+ prev=weak
+ continue
+ ;;
+
+ -Wc,*)
+ func_stripname '-Wc,' '' "$arg"
+ args=$func_stripname_result
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$flag"
+ arg="$arg $wl$func_quote_for_eval_result"
+ compiler_flags="$compiler_flags $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$arg"
+ arg=$func_stripname_result
+ ;;
+
+ -Wl,*)
+ func_stripname '-Wl,' '' "$arg"
+ args=$func_stripname_result
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ func_quote_for_eval "$flag"
+ arg="$arg $wl$func_quote_for_eval_result"
+ compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
+ linker_flags="$linker_flags $func_quote_for_eval_result"
+ done
+ IFS="$save_ifs"
+ func_stripname ' ' '' "$arg"
+ arg=$func_stripname_result
+ ;;
+
+ -Xcompiler)
+ prev=xcompiler
+ continue
+ ;;
+
+ -Xlinker)
+ prev=xlinker
+ continue
+ ;;
+
+ -XCClinker)
+ prev=xcclinker
+ continue
+ ;;
+
+ # -msg_* for osf cc
+ -msg_*)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+
+ # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+ # -r[0-9][0-9]* specifies the processor on the SGI compiler
+ # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+ # +DA*, +DD* enable 64-bit mode on the HP compiler
+ # -q* pass through compiler args for the IBM compiler
+ # -m*, -t[45]*, -txscale* pass through architecture-specific
+ # compiler args for GCC
+ # -F/path gives path to uninstalled frameworks, gcc on darwin
+ # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
+ # @file GCC response files
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ compiler_flags="$compiler_flags $arg"
+ continue
+ ;;
+
+ # Some other compiler flag.
+ -* | +*)
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+
+ *.$objext)
+ # A standard object.
+ objs="$objs $arg"
+ ;;
+
+ *.lo)
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if func_lalib_unsafe_p "$arg"; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ func_source "$arg"
+
+ if test -z "$pic_object" ||
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none &&
+ test "$non_pic_object" = none; then
+ func_fatal_error "cannot find name of object for \`$arg'"
+ fi
+
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$dlfiles $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ func_append libobjs " $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ func_append non_pic_objects " $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if $opt_dry_run; then
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir="$func_dirname_result"
+
+ func_lo2o "$arg"
+ pic_object=$xdir$objdir/$func_lo2o_result
+ non_pic_object=$xdir$func_lo2o_result
+ func_append libobjs " $pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ else
+ func_fatal_error "\`$arg' is not a valid libtool object"
+ fi
+ fi
+ ;;
+
+ *.$libext)
+ # An archive.
+ deplibs="$deplibs $arg"
+ old_deplibs="$old_deplibs $arg"
+ continue
+ ;;
+
+ *.la)
+ # A libtool-controlled library.
+
+ if test "$prev" = dlfiles; then
+ # This library was specified with -dlopen.
+ dlfiles="$dlfiles $arg"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+ dlprefiles="$dlprefiles $arg"
+ prev=
+ else
+ deplibs="$deplibs $arg"
+ fi
+ continue
+ ;;
+
+ # Some other compiler argument.
+ *)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ func_quote_for_eval "$arg"
+ arg="$func_quote_for_eval_result"
+ ;;
+ esac # arg
+
+ # Now actually substitute the argument into the commands.
+ if test -n "$arg"; then
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ fi
+ done # argument parsing loop
+
+ test -n "$prev" && \
+ func_fatal_help "the \`$prevarg' option requires an argument"
+
+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+ eval arg=\"$export_dynamic_flag_spec\"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ fi
+
+ oldlibs=
+ # calculate the name of the file, without its directory
+ func_basename "$output"
+ outputname="$func_basename_result"
+ libobjs_save="$libobjs"
+
+ if test -n "$shlibpath_var"; then
+ # get the directories listed in $shlibpath_var
+ eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+ else
+ shlib_search_path=
+ fi
+ eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+ func_dirname "$output" "/" ""
+ output_objdir="$func_dirname_result$objdir"
+ # Create the object directory.
+ func_mkdir_p "$output_objdir"
+
+ # Determine the type of output
+ case $output in
+ "")
+ func_fatal_help "you must specify an output file"
+ ;;
+ *.$libext) linkmode=oldlib ;;
+ *.lo | *.$objext) linkmode=obj ;;
+ *.la) linkmode=lib ;;
+ *) linkmode=prog ;; # Anything else should be a program.
+ esac
+
+ specialdeplibs=
+
+ libs=
+ # Find all interdependent deplibs by searching for libraries
+ # that are linked more than once (e.g. -la -lb -la)
+ for deplib in $deplibs; do
+ if $opt_duplicate_deps ; then
+ case "$libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ libs="$libs $deplib"
+ done
+
+ if test "$linkmode" = lib; then
+ libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+ # Compute libraries that are listed more than once in $predeps
+ # $postdeps and mark them as special (i.e., whose duplicates are
+ # not to be eliminated).
+ pre_post_deps=
+ if $opt_duplicate_compiler_generated_deps; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+ esac
+ pre_post_deps="$pre_post_deps $pre_post_dep"
+ done
+ fi
+ pre_post_deps=
+ fi
+
+ deplibs=
+ newdependency_libs=
+ newlib_search_path=
+ need_relink=no # whether we're linking any uninstalled libtool libraries
+ notinst_deplibs= # not-installed libtool libraries
+ notinst_path= # paths that contain not-installed libtool libraries
+
+ case $linkmode in
+ lib)
+ passes="conv dlpreopen link"
+ for file in $dlfiles $dlprefiles; do
+ case $file in
+ *.la) ;;
+ *)
+ func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+ ;;
+ esac
+ done
+ ;;
+ prog)
+ compile_deplibs=
+ finalize_deplibs=
+ alldeplibs=no
+ newdlfiles=
+ newdlprefiles=
+ passes="conv scan dlopen dlpreopen link"
+ ;;
+ *) passes="conv"
+ ;;
+ esac
+
+ for pass in $passes; do
+ # The preopen pass in lib mode reverses $deplibs; put it back here
+ # so that -L comes before libs that need it for instance...
+ if test "$linkmode,$pass" = "lib,link"; then
+ ## FIXME: Find the place where the list is rebuilt in the wrong
+ ## order, and fix it there properly
+ tmp_deplibs=
+ for deplib in $deplibs; do
+ tmp_deplibs="$deplib $tmp_deplibs"
+ done
+ deplibs="$tmp_deplibs"
+ fi
+
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan"; then
+ libs="$deplibs"
+ deplibs=
+ fi
+ if test "$linkmode" = prog; then
+ case $pass in
+ dlopen) libs="$dlfiles" ;;
+ dlpreopen) libs="$dlprefiles" ;;
+ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+ esac
+ fi
+ if test "$linkmode,$pass" = "lib,dlpreopen"; then
+ # Collect and forward deplibs of preopened libtool libs
+ for lib in $dlprefiles; do
+ # Ignore non-libtool-libs
+ dependency_libs=
+ case $lib in
+ *.la) func_source "$lib" ;;
+ esac
+
+ # Collect preopened libtool deplibs, except any this library
+ # has declared as weak libs
+ for deplib in $dependency_libs; do
+ deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
+ case " $weak_libs " in
+ *" $deplib_base "*) ;;
+ *) deplibs="$deplibs $deplib" ;;
+ esac
+ done
+ done
+ libs="$dlprefiles"
+ fi
+ if test "$pass" = dlopen; then
+ # Collect dlpreopened libraries
+ save_deplibs="$deplibs"
+ deplibs=
+ fi
+
+ for deplib in $libs; do
+ lib=
+ found=no
+ case $deplib in
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ compiler_flags="$compiler_flags $deplib"
+ if test "$linkmode" = lib ; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+ * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
+ esac
+ fi
+ fi
+ continue
+ ;;
+ -l*)
+ if test "$linkmode" != lib && test "$linkmode" != prog; then
+ func_warning "\`-l' is ignored for archives/objects"
+ continue
+ fi
+ func_stripname '-l' '' "$deplib"
+ name=$func_stripname_result
+ if test "$linkmode" = lib; then
+ searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+ else
+ searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+ fi
+ for searchdir in $searchdirs; do
+ for search_ext in .la $std_shrext .so .a; do
+ # Search the libtool library
+ lib="$searchdir/lib${name}${search_ext}"
+ if test -f "$lib"; then
+ if test "$search_ext" = ".la"; then
+ found=yes
+ else
+ found=no
+ fi
+ break 2
+ fi
+ done
+ done
+ if test "$found" != yes; then
+ # deplib doesn't seem to be a libtool library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ else # deplib is a libtool library
+ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+ # We need to do some special things here, and not later.
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $deplib "*)
+ if func_lalib_p "$lib"; then
+ library_names=
+ old_library=
+ func_source "$lib"
+ for l in $old_library $library_names; do
+ ll="$l"
+ done
+ if test "X$ll" = "X$old_library" ; then # only static version available
+ found=no
+ func_dirname "$lib" "" "."
+ ladir="$func_dirname_result"
+ lib=$ladir/$old_library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ fi
+ fi
+ ;;
+ *) ;;
+ esac
+ fi
+ fi
+ ;; # -l
+ *.ltframework)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ if test "$linkmode" = lib ; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+ * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
+ esac
+ fi
+ fi
+ continue
+ ;;
+ -L*)
+ case $linkmode in
+ lib)
+ deplibs="$deplib $deplibs"
+ test "$pass" = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ func_stripname '-L' '' "$deplib"
+ newlib_search_path="$newlib_search_path $func_stripname_result"
+ ;;
+ prog)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ if test "$pass" = scan; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ func_stripname '-L' '' "$deplib"
+ newlib_search_path="$newlib_search_path $func_stripname_result"
+ ;;
+ *)
+ func_warning "\`-L' is ignored for archives/objects"
+ ;;
+ esac # linkmode
+ continue
+ ;; # -L
+ -R*)
+ if test "$pass" = link; then
+ func_stripname '-R' '' "$deplib"
+ dir=$func_stripname_result
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+ *.la) lib="$deplib" ;;
+ *.$libext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ case $linkmode in
+ lib)
+ # Linking convenience modules into shared libraries is allowed,
+ # but linking other static libraries is non-portable.
+ case " $dlpreconveniencelibs " in
+ *" $deplib "*) ;;
+ *)
+ valid_a_lib=no
+ case $deplibs_check_method in
+ match_pattern*)
+ set dummy $deplibs_check_method; shift
+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
+ | $EGREP "$match_pattern_regex" > /dev/null; then
+ valid_a_lib=yes
+ fi
+ ;;
+ pass_all)
+ valid_a_lib=yes
+ ;;
+ esac
+ if test "$valid_a_lib" != yes; then
+ $ECHO
+ $ECHO "*** Warning: Trying to link with static lib archive $deplib."
+ $ECHO "*** I have the capability to make that library automatically link in when"
+ $ECHO "*** you link to this library. But I can only do this if you have a"
+ $ECHO "*** shared version of the library, which you do not appear to have"
+ $ECHO "*** because the file extensions .$libext of this argument makes me believe"
+ $ECHO "*** that it is just a static archive that I should not use here."
+ else
+ $ECHO
+ $ECHO "*** Warning: Linking the shared library $output against the"
+ $ECHO "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ fi
+ ;;
+ esac
+ continue
+ ;;
+ prog)
+ if test "$pass" != link; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ continue
+ ;;
+ esac # linkmode
+ ;; # *.$libext
+ *.lo | *.$objext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ elif test "$linkmode" = prog; then
+ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+ # If there is no dlopen support or we're linking statically,
+ # we need to preload.
+ newdlprefiles="$newdlprefiles $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ newdlfiles="$newdlfiles $deplib"
+ fi
+ fi
+ continue
+ ;;
+ %DEPLIBS%)
+ alldeplibs=yes
+ continue
+ ;;
+ esac # case $deplib
+
+ if test "$found" = yes || test -f "$lib"; then :
+ else
+ func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
+ fi
+
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$lib" \
+ || func_fatal_error "\`$lib' is not a valid libtool archive"
+
+ func_dirname "$lib" "" "."
+ ladir="$func_dirname_result"
+
+ dlname=
+ dlopen=
+ dlpreopen=
+ libdir=
+ library_names=
+ old_library=
+ inherited_linker_flags=
+ # If the library was installed with an old release of libtool,
+ # it will not redefine variables installed, or shouldnotlink
+ installed=yes
+ shouldnotlink=no
+ avoidtemprpath=
+
+
+ # Read the .la file
+ func_source "$lib"
+
+ # Convert "-framework foo" to "foo.ltframework"
+ if test -n "$inherited_linker_flags"; then
+ tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+ *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
+ esac
+ done
+ fi
+ dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+ test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+ test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+ fi
+
+ if test "$pass" = conv; then
+ # Only check for convenience libraries
+ deplibs="$lib $deplibs"
+ if test -z "$libdir"; then
+ if test -z "$old_library"; then
+ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+ # It is a libtool convenience library, so add in its objects.
+ convenience="$convenience $ladir/$objdir/$old_library"
+ old_convenience="$old_convenience $ladir/$objdir/$old_library"
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ func_fatal_error "\`$lib' is not a convenience library"
+ fi
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ if $opt_duplicate_deps ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+ continue
+ fi # $pass = conv
+
+
+ # Get the name of the library we link against.
+ linklib=
+ for l in $old_library $library_names; do
+ linklib="$l"
+ done
+ if test -z "$linklib"; then
+ func_fatal_error "cannot find name of link library for \`$lib'"
+ fi
+
+ # This library was specified with -dlopen.
+ if test "$pass" = dlopen; then
+ if test -z "$libdir"; then
+ func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
+ fi
+ if test -z "$dlname" ||
+ test "$dlopen_support" != yes ||
+ test "$build_libtool_libs" = no; then
+ # If there is no dlname, no dlopen support or we're linking
+ # statically, we need to preload. We also need to preload any
+ # dependent libraries so libltdl's deplib preloader doesn't
+ # bomb out in the load deplibs phase.
+ dlprefiles="$dlprefiles $lib $dependency_libs"
+ else
+ newdlfiles="$newdlfiles $lib"
+ fi
+ continue
+ fi # $pass = dlopen
+
+ # We need an absolute path.
+ case $ladir in
+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+ *)
+ abs_ladir=`cd "$ladir" && pwd`
+ if test -z "$abs_ladir"; then
+ func_warning "cannot determine absolute directory name of \`$ladir'"
+ func_warning "passing it literally to the linker, although it might fail"
+ abs_ladir="$ladir"
+ fi
+ ;;
+ esac
+ func_basename "$lib"
+ laname="$func_basename_result"
+
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ func_warning "library \`$lib' was moved."
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+ dir="$libdir"
+ absdir="$libdir"
+ fi
+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+ else
+ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ dir="$ladir"
+ absdir="$abs_ladir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ else
+ dir="$ladir/$objdir"
+ absdir="$abs_ladir/$objdir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ fi
+ fi # $installed = yes
+ func_stripname 'lib' '.la' "$laname"
+ name=$func_stripname_result
+
+ # This library was specified with -dlpreopen.
+ if test "$pass" = dlpreopen; then
+ if test -z "$libdir" && test "$linkmode" = prog; then
+ func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+ fi
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ newdlprefiles="$newdlprefiles $dir/$old_library"
+ # Keep a list of preopened convenience libraries to check
+ # that they are being used correctly in the link pass.
+ test -z "$libdir" && \
+ dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
+ # Otherwise, use the dlname, so that lt_dlopen finds it.
+ elif test -n "$dlname"; then
+ newdlprefiles="$newdlprefiles $dir/$dlname"
+ else
+ newdlprefiles="$newdlprefiles $dir/$linklib"
+ fi
+ fi # $pass = dlpreopen
+
+ if test -z "$libdir"; then
+ # Link the convenience library
+ if test "$linkmode" = lib; then
+ deplibs="$dir/$old_library $deplibs"
+ elif test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$dir/$old_library $compile_deplibs"
+ finalize_deplibs="$dir/$old_library $finalize_deplibs"
+ else
+ deplibs="$lib $deplibs" # used for prog,scan pass
+ fi
+ continue
+ fi
+
+
+ if test "$linkmode" = prog && test "$pass" != link; then
+ newlib_search_path="$newlib_search_path $ladir"
+ deplibs="$lib $deplibs"
+
+ linkalldeplibs=no
+ if test "$link_all_deplibs" != no || test -z "$library_names" ||
+ test "$build_libtool_libs" = no; then
+ linkalldeplibs=yes
+ fi
+
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) func_stripname '-L' '' "$deplib"
+ newlib_search_path="$newlib_search_path $func_stripname_result"
+ ;;
+ esac
+ # Need to link against all dependency_libs?
+ if test "$linkalldeplibs" = yes; then
+ deplibs="$deplib $deplibs"
+ else
+ # Need to hardcode shared library paths
+ # or/and link against static libraries
+ newdependency_libs="$deplib $newdependency_libs"
+ fi
+ if $opt_duplicate_deps ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done # for deplib
+ continue
+ fi # $linkmode = prog...
+
+ if test "$linkmode,$pass" = "prog,link"; then
+ if test -n "$library_names" &&
+ { { test "$prefer_static_libs" = no ||
+ test "$prefer_static_libs,$installed" = "built,yes"; } ||
+ test -z "$old_library"; }; then
+ # We need to hardcode the library path
+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+ # Make sure the rpath contains only unique directories.
+ case "$temp_rpath:" in
+ *"$absdir:"*) ;;
+ *) temp_rpath="$temp_rpath$absdir:" ;;
+ esac
+ fi
+
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi # $linkmode,$pass = prog,link...
+
+ if test "$alldeplibs" = yes &&
+ { test "$deplibs_check_method" = pass_all ||
+ { test "$build_libtool_libs" = yes &&
+ test -n "$library_names"; }; }; then
+ # We only need to search for static libraries
+ continue
+ fi
+ fi
+
+ link_static=no # Whether the deplib will be linked statically
+ use_static_libs=$prefer_static_libs
+ if test "$use_static_libs" = built && test "$installed" = yes; then
+ use_static_libs=no
+ fi
+ if test -n "$library_names" &&
+ { test "$use_static_libs" = no || test -z "$old_library"; }; then
+ case $host in
+ *cygwin* | *mingw* | *cegcc*)
+ # No point in relinking DLLs because paths are not encoded
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=no
+ ;;
+ *)
+ if test "$installed" = no; then
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=yes
+ fi
+ ;;
+ esac
+ # This is a shared library
+
+ # Warn about portability, can't link against -module's on some
+ # systems (darwin). Don't bleat about dlopened modules though!
+ dlopenmodule=""
+ for dlpremoduletest in $dlprefiles; do
+ if test "X$dlpremoduletest" = "X$lib"; then
+ dlopenmodule="$dlpremoduletest"
+ break
+ fi
+ done
+ if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
+ $ECHO
+ if test "$linkmode" = prog; then
+ $ECHO "*** Warning: Linking the executable $output against the loadable module"
+ else
+ $ECHO "*** Warning: Linking the shared library $output against the loadable module"
+ fi
+ $ECHO "*** $linklib is not portable!"
+ fi
+ if test "$linkmode" = lib &&
+ test "$hardcode_into_libs" = yes; then
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi
+
+ if test -n "$old_archive_from_expsyms_cmds"; then
+ # figure out the soname
+ set dummy $library_names
+ shift
+ realname="$1"
+ shift
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ # use dlname if we got it. it's perfectly good, no?
+ if test -n "$dlname"; then
+ soname="$dlname"
+ elif test -n "$soname_spec"; then
+ # bleh windows
+ case $host in
+ *cygwin* | mingw* | *cegcc*)
+ func_arith $current - $age
+ major=$func_arith_result
+ versuffix="-$major"
+ ;;
+ esac
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+
+ # Make a new name for the extract_expsyms_cmds to use
+ soroot="$soname"
+ func_basename "$soroot"
+ soname="$func_basename_result"
+ func_stripname 'lib' '.dll' "$soname"
+ newlib=libimp-$func_stripname_result.a
+
+ # If the library has no export list, then create one now
+ if test -f "$output_objdir/$soname-def"; then :
+ else
+ func_verbose "extracting exported symbol list from \`$soname'"
+ func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
+ fi
+
+ # Create $newlib
+ if test -f "$output_objdir/$newlib"; then :; else
+ func_verbose "generating import library for \`$soname'"
+ func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
+ fi
+ # make sure the library variables are pointing to the new library
+ dir=$output_objdir
+ linklib=$newlib
+ fi # test -n "$old_archive_from_expsyms_cmds"
+
+ if test "$linkmode" = prog || test "$mode" != relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ lib_linked=yes
+ case $hardcode_action in
+ immediate | unsupported)
+ if test "$hardcode_direct" = no; then
+ add="$dir/$linklib"
+ case $host in
+ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+ *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+ *-*-unixware7*) add_dir="-L$dir" ;;
+ *-*-darwin* )
+ # if the lib is a (non-dlopened) module then we can not
+ # link against it, someone is ignoring the earlier warnings
+ if /usr/bin/file -L $add 2> /dev/null |
+ $GREP ": [^:]* bundle" >/dev/null ; then
+ if test "X$dlopenmodule" != "X$lib"; then
+ $ECHO "*** Warning: lib $linklib is a module, not a shared library"
+ if test -z "$old_library" ; then
+ $ECHO
+ $ECHO "*** And there doesn't seem to be a static archive available"
+ $ECHO "*** The link will probably fail, sorry"
+ else
+ add="$dir/$old_library"
+ fi
+ elif test -n "$old_library"; then
+ add="$dir/$old_library"
+ fi
+ fi
+ esac
+ elif test "$hardcode_minus_L" = no; then
+ case $host in
+ *-*-sunos*) add_shlibpath="$dir" ;;
+ esac
+ add_dir="-L$dir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = no; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ relink)
+ if test "$hardcode_direct" = yes &&
+ test "$hardcode_direct_absolute" = no; then
+ add="$dir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$dir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ *) lib_linked=no ;;
+ esac
+
+ if test "$lib_linked" != yes; then
+ func_fatal_configuration "unsupported hardcode properties"
+ fi
+
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+ *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+ esac
+ fi
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+ test -n "$add" && compile_deplibs="$add $compile_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ if test "$hardcode_direct" != yes &&
+ test "$hardcode_minus_L" != yes &&
+ test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ fi
+ fi
+ fi
+
+ if test "$linkmode" = prog || test "$mode" = relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ # Finalize command for both is simple: just hardcode it.
+ if test "$hardcode_direct" = yes &&
+ test "$hardcode_direct_absolute" = no; then
+ add="$libdir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$libdir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ add="-l$name"
+ elif test "$hardcode_automatic" = yes; then
+ if test -n "$inst_prefix_dir" &&
+ test -f "$inst_prefix_dir$libdir/$linklib" ; then
+ add="$inst_prefix_dir$libdir/$linklib"
+ else
+ add="$libdir/$linklib"
+ fi
+ else
+ # We cannot seem to hardcode it, guess we'll fake it.
+ add_dir="-L$libdir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ fi
+
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ fi
+ fi
+ elif test "$linkmode" = prog; then
+ # Here we assume that one of hardcode_direct or hardcode_minus_L
+ # is not unsupported. This is valid on all known static and
+ # shared platforms.
+ if test "$hardcode_direct" != unsupported; then
+ test -n "$old_library" && linklib="$old_library"
+ compile_deplibs="$dir/$linklib $compile_deplibs"
+ finalize_deplibs="$dir/$linklib $finalize_deplibs"
+ else
+ compile_deplibs="-l$name -L$dir $compile_deplibs"
+ finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+ fi
+ elif test "$build_libtool_libs" = yes; then
+ # Not a shared library
+ if test "$deplibs_check_method" != pass_all; then
+ # We're trying link a shared library against a static one
+ # but the system doesn't support it.
+
+ # Just print a warning and add the library to dependency_libs so
+ # that the program can be linked against the static library.
+ $ECHO
+ $ECHO "*** Warning: This system can not link to static lib archive $lib."
+ $ECHO "*** I have the capability to make that library automatically link in when"
+ $ECHO "*** you link to this library. But I can only do this if you have a"
+ $ECHO "*** shared version of the library, which you do not appear to have."
+ if test "$module" = yes; then
+ $ECHO "*** But as you try to build a module library, libtool will still create "
+ $ECHO "*** a static module, that should work as long as the dlopening application"
+ $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
+ if test -z "$global_symbol_pipe"; then
+ $ECHO
+ $ECHO "*** However, this would only work if libtool was able to extract symbol"
+ $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ $ECHO "*** not find such a program. So, this module is probably useless."
+ $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test "$build_old_libs" = no; then
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ else
+ deplibs="$dir/$old_library $deplibs"
+ link_static=yes
+ fi
+ fi # link shared/static library?
+
+ if test "$linkmode" = lib; then
+ if test -n "$dependency_libs" &&
+ { test "$hardcode_into_libs" != yes ||
+ test "$build_old_libs" = yes ||
+ test "$link_static" = yes; }; then
+ # Extract -R from dependency_libs
+ temp_deplibs=
+ for libdir in $dependency_libs; do
+ case $libdir in
+ -R*) func_stripname '-R' '' "$libdir"
+ temp_xrpath=$func_stripname_result
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+ *) xrpath="$xrpath $temp_xrpath";;
+ esac;;
+ *) temp_deplibs="$temp_deplibs $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
+
+ newlib_search_path="$newlib_search_path $absdir"
+ # Link against this library
+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+ # ... and its dependency_libs
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ newdependency_libs="$deplib $newdependency_libs"
+ if $opt_duplicate_deps ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+
+ if test "$link_all_deplibs" != no; then
+ # Add the search paths of all dependency libraries
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) path="$deplib" ;;
+ *.la)
+ func_dirname "$deplib" "" "."
+ dir="$func_dirname_result"
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ func_warning "cannot determine absolute directory name of \`$dir'"
+ absdir="$dir"
+ fi
+ ;;
+ esac
+ if $GREP "^installed=no" $deplib > /dev/null; then
+ case $host in
+ *-*-darwin*)
+ depdepl=
+ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+ if test -n "$deplibrary_names" ; then
+ for tmp in $deplibrary_names ; do
+ depdepl=$tmp
+ done
+ if test -f "$absdir/$objdir/$depdepl" ; then
+ depdepl="$absdir/$objdir/$depdepl"
+ darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ if test -z "$darwin_install_name"; then
+ darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ fi
+ compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+ linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
+ path=
+ fi
+ fi
+ ;;
+ *)
+ path="-L$absdir/$objdir"
+ ;;
+ esac
+ else
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+ test "$absdir" != "$libdir" && \
+ func_warning "\`$deplib' seems to be moved"
+
+ path="-L$absdir"
+ fi
+ ;;
+ esac
+ case " $deplibs " in
+ *" $path "*) ;;
+ *) deplibs="$path $deplibs" ;;
+ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+ done # for deplib in $libs
+ if test "$pass" = link; then
+ if test "$linkmode" = "prog"; then
+ compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
+ finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
+ else
+ compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ fi
+ fi
+ dependency_libs="$newdependency_libs"
+ if test "$pass" = dlpreopen; then
+ # Link the dlpreopened libraries before other libraries
+ for deplib in $save_deplibs; do
+ deplibs="$deplib $deplibs"
+ done
+ fi
+ if test "$pass" != dlopen; then
+ if test "$pass" != conv; then
+ # Make sure lib_search_path contains only unique directories.
+ lib_search_path=
+ for dir in $newlib_search_path; do
+ case "$lib_search_path " in
+ *" $dir "*) ;;
+ *) lib_search_path="$lib_search_path $dir" ;;
+ esac
+ done
+ newlib_search_path=
+ fi
+
+ if test "$linkmode,$pass" != "prog,link"; then
+ vars="deplibs"
+ else
+ vars="compile_deplibs finalize_deplibs"
+ fi
+ for var in $vars dependency_libs; do
+ # Add libraries to $var in reverse order
+ eval tmp_libs=\"\$$var\"
+ new_libs=
+ for deplib in $tmp_libs; do
+ # FIXME: Pedantically, this is the right thing to do, so
+ # that some nasty dependency loop isn't accidentally
+ # broken:
+ #new_libs="$deplib $new_libs"
+ # Pragmatically, this seems to cause very few problems in
+ # practice:
+ case $deplib in
+ -L*) new_libs="$deplib $new_libs" ;;
+ -R*) ;;
+ *)
+ # And here is the reason: when a library appears more
+ # than once as an explicit dependence of a library, or
+ # is implicitly linked in more than once by the
+ # compiler, it is considered special, and multiple
+ # occurrences thereof are not removed. Compare this
+ # with having the same library being listed as a
+ # dependency of multiple other libraries: in this case,
+ # we know (pedantically, we assume) the library does not
+ # need to be listed more than once, so we keep only the
+ # last copy. This is not always right, but it is rare
+ # enough that we require users that really mean to play
+ # such unportable linking tricks to link the library
+ # using -Wl,-lname, so that libtool does not consider it
+ # for duplicate removal.
+ case " $specialdeplibs " in
+ *" $deplib "*) new_libs="$deplib $new_libs" ;;
+ *)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$deplib $new_libs" ;;
+ esac
+ ;;
+ esac
+ ;;
+ esac
+ done
+ tmp_libs=
+ for deplib in $new_libs; do
+ case $deplib in
+ -L*)
+ case " $tmp_libs " in
+ *" $deplib "*) ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ done
+ eval $var=\"$tmp_libs\"
+ done # for var
+ fi
+ # Last step: remove runtime libs from dependency_libs
+ # (they stay in deplibs)
+ tmp_libs=
+ for i in $dependency_libs ; do
+ case " $predeps $postdeps $compiler_lib_search_path " in
+ *" $i "*)
+ i=""
+ ;;
+ esac
+ if test -n "$i" ; then
+ tmp_libs="$tmp_libs $i"
+ fi
+ done
+ dependency_libs=$tmp_libs
+ done # for pass
+ if test "$linkmode" = prog; then
+ dlfiles="$newdlfiles"
+ fi
+ if test "$linkmode" = prog || test "$linkmode" = lib; then
+ dlprefiles="$newdlprefiles"
+ fi
+
+ case $linkmode in
+ oldlib)
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ func_warning "\`-dlopen' is ignored for archives"
+ fi
+
+ case " $deplibs" in
+ *\ -l* | *\ -L*)
+ func_warning "\`-l' and \`-L' are ignored for archives" ;;
+ esac
+
+ test -n "$rpath" && \
+ func_warning "\`-rpath' is ignored for archives"
+
+ test -n "$xrpath" && \
+ func_warning "\`-R' is ignored for archives"
+
+ test -n "$vinfo" && \
+ func_warning "\`-version-info/-version-number' is ignored for archives"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for archives"
+
+ test -n "$export_symbols$export_symbols_regex" && \
+ func_warning "\`-export-symbols' is ignored for archives"
+
+ # Now set the variables for building old libraries.
+ build_libtool_libs=no
+ oldlibs="$output"
+ objs="$objs$old_deplibs"
+ ;;
+
+ lib)
+ # Make sure we only generate libraries of the form `libNAME.la'.
+ case $outputname in
+ lib*)
+ func_stripname 'lib' '.la' "$outputname"
+ name=$func_stripname_result
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ ;;
+ *)
+ test "$module" = no && \
+ func_fatal_help "libtool library \`$output' must begin with \`lib'"
+
+ if test "$need_lib_prefix" != no; then
+ # Add the "lib" prefix for modules if required
+ func_stripname '' '.la' "$outputname"
+ name=$func_stripname_result
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ else
+ func_stripname '' '.la' "$outputname"
+ libname=$func_stripname_result
+ fi
+ ;;
+ esac
+
+ if test -n "$objs"; then
+ if test "$deplibs_check_method" != pass_all; then
+ func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
+ else
+ $ECHO
+ $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+ $ECHO "*** objects $objs is not portable!"
+ libobjs="$libobjs $objs"
+ fi
+ fi
+
+ test "$dlself" != no && \
+ func_warning "\`-dlopen self' is ignored for libtool libraries"
+
+ set dummy $rpath
+ shift
+ test "$#" -gt 1 && \
+ func_warning "ignoring multiple \`-rpath's for a libtool library"
+
+ install_libdir="$1"
+
+ oldlibs=
+ if test -z "$rpath"; then
+ if test "$build_libtool_libs" = yes; then
+ # Building a libtool convenience library.
+ # Some compilers have problems with a `.al' extension so
+ # convenience libraries should have the same extension an
+ # archive normally would.
+ oldlibs="$output_objdir/$libname.$libext $oldlibs"
+ build_libtool_libs=convenience
+ build_old_libs=yes
+ fi
+
+ test -n "$vinfo" && \
+ func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for convenience libraries"
+ else
+
+ # Parse the version information argument.
+ save_ifs="$IFS"; IFS=':'
+ set dummy $vinfo 0 0 0
+ shift
+ IFS="$save_ifs"
+
+ test -n "$7" && \
+ func_fatal_help "too many parameters to \`-version-info'"
+
+ # convert absolute version numbers to libtool ages
+ # this retains compatibility with .la files and attempts
+ # to make the code below a bit more comprehensible
+
+ case $vinfo_number in
+ yes)
+ number_major="$1"
+ number_minor="$2"
+ number_revision="$3"
+ #
+ # There are really only two kinds -- those that
+ # use the current revision as the major version
+ # and those that subtract age and use age as
+ # a minor version. But, then there is irix
+ # which has an extra 1 added just for fun
+ #
+ case $version_type in
+ darwin|linux|osf|windows|none)
+ func_arith $number_major + $number_minor
+ current=$func_arith_result
+ age="$number_minor"
+ revision="$number_revision"
+ ;;
+ freebsd-aout|freebsd-elf|sunos)
+ current="$number_major"
+ revision="$number_minor"
+ age="0"
+ ;;
+ irix|nonstopux)
+ func_arith $number_major + $number_minor
+ current=$func_arith_result
+ age="$number_minor"
+ revision="$number_minor"
+ lt_irix_increment=no
+ ;;
+ esac
+ ;;
+ no)
+ current="$1"
+ revision="$2"
+ age="$3"
+ ;;
+ esac
+
+ # Check that each of the things are valid numbers.
+ case $current in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "CURRENT \`$current' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
+
+ case $revision in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "REVISION \`$revision' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
+
+ case $age in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "AGE \`$age' must be a nonnegative integer"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ ;;
+ esac
+
+ if test "$age" -gt "$current"; then
+ func_error "AGE \`$age' is greater than the current interface number \`$current'"
+ func_fatal_error "\`$vinfo' is not valid version information"
+ fi
+
+ # Calculate the version variables.
+ major=
+ versuffix=
+ verstring=
+ case $version_type in
+ none) ;;
+
+ darwin)
+ # Like Linux, but with the current version available in
+ # verstring for coding it into the library header
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ func_arith $current + 1
+ minor_current=$func_arith_result
+ xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ ;;
+
+ freebsd-aout)
+ major=".$current"
+ versuffix=".$current.$revision";
+ ;;
+
+ freebsd-elf)
+ major=".$current"
+ versuffix=".$current"
+ ;;
+
+ irix | nonstopux)
+ if test "X$lt_irix_increment" = "Xno"; then
+ func_arith $current - $age
+ else
+ func_arith $current - $age + 1
+ fi
+ major=$func_arith_result
+
+ case $version_type in
+ nonstopux) verstring_prefix=nonstopux ;;
+ *) verstring_prefix=sgi ;;
+ esac
+ verstring="$verstring_prefix$major.$revision"
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$revision
+ while test "$loop" -ne 0; do
+ func_arith $revision - $loop
+ iface=$func_arith_result
+ func_arith $loop - 1
+ loop=$func_arith_result
+ verstring="$verstring_prefix$major.$iface:$verstring"
+ done
+
+ # Before this point, $major must not contain `.'.
+ major=.$major
+ versuffix="$major.$revision"
+ ;;
+
+ linux)
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix="$major.$age.$revision"
+ ;;
+
+ osf)
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix=".$current.$age.$revision"
+ verstring="$current.$age.$revision"
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$age
+ while test "$loop" -ne 0; do
+ func_arith $current - $loop
+ iface=$func_arith_result
+ func_arith $loop - 1
+ loop=$func_arith_result
+ verstring="$verstring:${iface}.0"
+ done
+
+ # Make executables depend on our current version.
+ verstring="$verstring:${current}.0"
+ ;;
+
+ qnx)
+ major=".$current"
+ versuffix=".$current"
+ ;;
+
+ sunos)
+ major=".$current"
+ versuffix=".$current.$revision"
+ ;;
+
+ windows)
+ # Use '-' rather than '.', since we only want one
+ # extension on DOS 8.3 filesystems.
+ func_arith $current - $age
+ major=$func_arith_result
+ versuffix="-$major"
+ ;;
+
+ *)
+ func_fatal_configuration "unknown library version type \`$version_type'"
+ ;;
+ esac
+
+ # Clear the version info if we defaulted, and they specified a release.
+ if test -z "$vinfo" && test -n "$release"; then
+ major=
+ case $version_type in
+ darwin)
+ # we can't check for "0.0" in archive_cmds due to quoting
+ # problems, so we reset it completely
+ verstring=
+ ;;
+ *)
+ verstring="0.0"
+ ;;
+ esac
+ if test "$need_version" = no; then
+ versuffix=
+ else
+ versuffix=".0.0"
+ fi
+ fi
+
+ # Remove version info from name if versioning should be avoided
+ if test "$avoid_version" = yes && test "$need_version" = no; then
+ major=
+ versuffix=
+ verstring=""
+ fi
+
+ # Check to see if the archive will have undefined symbols.
+ if test "$allow_undefined" = yes; then
+ if test "$allow_undefined_flag" = unsupported; then
+ func_warning "undefined symbols not allowed in $host shared libraries"
+ build_libtool_libs=no
+ build_old_libs=yes
+ fi
+ else
+ # Don't allow undefined symbols.
+ allow_undefined_flag="$no_undefined_flag"
+ fi
+
+ fi
+
+ func_generate_dlsyms "$libname" "$libname" "yes"
+ libobjs="$libobjs $symfileobj"
+ test "X$libobjs" = "X " && libobjs=
+
+ if test "$mode" != relink; then
+ # Remove our outputs, but don't remove object files since they
+ # may have been created when compiling PIC objects.
+ removelist=
+ tempremovelist=`$ECHO "$output_objdir/*"`
+ for p in $tempremovelist; do
+ case $p in
+ *.$objext | *.gcno)
+ ;;
+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+ if test "X$precious_files_regex" != "X"; then
+ if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+ then
+ continue
+ fi
+ fi
+ removelist="$removelist $p"
+ ;;
+ *) ;;
+ esac
+ done
+ test -n "$removelist" && \
+ func_show_eval "${RM}r \$removelist"
+ fi
+
+ # Now set the variables for building old libraries.
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+ oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+ # Transform .lo files to .o files.
+ oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+ fi
+
+ # Eliminate all temporary directories.
+ #for path in $notinst_path; do
+ # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
+ # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
+ # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
+ #done
+
+ if test -n "$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ temp_xrpath=
+ for libdir in $xrpath; do
+ temp_xrpath="$temp_xrpath -R$libdir"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir" ;;
+ esac
+ done
+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+ dependency_libs="$temp_xrpath $dependency_libs"
+ fi
+ fi
+
+ # Make sure dlfiles contains only unique files that won't be dlpreopened
+ old_dlfiles="$dlfiles"
+ dlfiles=
+ for lib in $old_dlfiles; do
+ case " $dlprefiles $dlfiles " in
+ *" $lib "*) ;;
+ *) dlfiles="$dlfiles $lib" ;;
+ esac
+ done
+
+ # Make sure dlprefiles contains only unique files
+ old_dlprefiles="$dlprefiles"
+ dlprefiles=
+ for lib in $old_dlprefiles; do
+ case "$dlprefiles " in
+ *" $lib "*) ;;
+ *) dlprefiles="$dlprefiles $lib" ;;
+ esac
+ done
+
+ if test "$build_libtool_libs" = yes; then
+ if test -n "$rpath"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
+ # these systems don't actually have a c library (as such)!
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C library is in the System framework
+ deplibs="$deplibs System.ltframework"
+ ;;
+ *-*-netbsd*)
+ # Don't link with libc until the a.out ld.so is fixed.
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ ;;
+ *)
+ # Add libc to deplibs on all other systems if necessary.
+ if test "$build_libtool_need_lc" = "yes"; then
+ deplibs="$deplibs -lc"
+ fi
+ ;;
+ esac
+ fi
+
+ # Transform deplibs into only deplibs that can be linked in shared.
+ name_save=$name
+ libname_save=$libname
+ release_save=$release
+ versuffix_save=$versuffix
+ major_save=$major
+ # I'm not sure if I'm treating the release correctly. I think
+ # release should show up in the -l (ie -lgmp5) so we don't want to
+ # add it in twice. Is that correct?
+ release=""
+ versuffix=""
+ major=""
+ newdeplibs=
+ droppeddeps=no
+ case $deplibs_check_method in
+ pass_all)
+ # Don't check for shared/static. Everything works.
+ # This might be a little naive. We might want to check
+ # whether the library exists or not. But this is on
+ # osf3 & osf4 and I'm not really sure... Just
+ # implementing what was already the behavior.
+ newdeplibs=$deplibs
+ ;;
+ test_compile)
+ # This code stresses the "libraries are programs" paradigm to its
+ # limits. Maybe even breaks it. We compile a program, linking it
+ # against the deplibs as a proxy for the library. Then we can check
+ # whether they linked in statically or dynamically with ldd.
+ $opt_dry_run || $RM conftest.c
+ cat > conftest.c <<EOF
+ int main() { return 0; }
+EOF
+ $opt_dry_run || $RM conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+ case $i in
+ -l*)
+ func_stripname -l '' "$i"
+ name=$func_stripname_result
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+ set dummy $deplib_matches; shift
+ deplib_match=$1
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $ECHO
+ $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+ $ECHO "*** I have the capability to make that library automatically link in when"
+ $ECHO "*** you link to this library. But I can only do this if you have a"
+ $ECHO "*** shared version of the library, which I believe you do not have"
+ $ECHO "*** because a test_compile did reveal that the linker did not use it for"
+ $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
+ fi
+ fi
+ ;;
+ *)
+ newdeplibs="$newdeplibs $i"
+ ;;
+ esac
+ done
+ else
+ # Error occurred in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
+ for i in $deplibs; do
+ case $i in
+ -l*)
+ func_stripname -l '' "$i"
+ name=$func_stripname_result
+ $opt_dry_run || $RM conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+ ldd_output=`ldd conftest`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+ set dummy $deplib_matches; shift
+ deplib_match=$1
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $ECHO
+ $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+ $ECHO "*** I have the capability to make that library automatically link in when"
+ $ECHO "*** you link to this library. But I can only do this if you have a"
+ $ECHO "*** shared version of the library, which you do not appear to have"
+ $ECHO "*** because a test_compile did reveal that the linker did not use this one"
+ $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
+ fi
+ fi
+ else
+ droppeddeps=yes
+ $ECHO
+ $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
+ $ECHO "*** make it link in! You will probably need to install it or some"
+ $ECHO "*** library that it depends on before this library will be fully"
+ $ECHO "*** functional. Installing it before continuing would be even better."
+ fi
+ ;;
+ *)
+ newdeplibs="$newdeplibs $i"
+ ;;
+ esac
+ done
+ fi
+ ;;
+ file_magic*)
+ set dummy $deplibs_check_method; shift
+ file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ for a_deplib in $deplibs; do
+ case $a_deplib in
+ -l*)
+ func_stripname -l '' "$a_deplib"
+ name=$func_stripname_result
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ for potent_lib in $potential_libs; do
+ # Follow soft links.
+ if ls -lLd "$potent_lib" 2>/dev/null |
+ $GREP " -> " >/dev/null; then
+ continue
+ fi
+ # The statement above tries to avoid entering an
+ # endless loop below, in case of cyclic links.
+ # We might still enter an endless loop, since a link
+ # loop can be closed while we follow links,
+ # but so what?
+ potlib="$potent_lib"
+ while test -h "$potlib" 2>/dev/null; do
+ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+ case $potliblink in
+ [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+ *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+ esac
+ done
+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+ $SED -e 10q |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ $ECHO
+ $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+ $ECHO "*** I have the capability to make that library automatically link in when"
+ $ECHO "*** you link to this library. But I can only do this if you have a"
+ $ECHO "*** shared version of the library, which you do not appear to have"
+ $ECHO "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib" ; then
+ $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
+ else
+ $ECHO "*** with $libname and none of the candidates passed a file format test"
+ $ECHO "*** using a file magic. Last file checked: $potlib"
+ fi
+ fi
+ ;;
+ *)
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ ;;
+ esac
+ done # Gone through all deplibs.
+ ;;
+ match_pattern*)
+ set dummy $deplibs_check_method; shift
+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ for a_deplib in $deplibs; do
+ case $a_deplib in
+ -l*)
+ func_stripname -l '' "$a_deplib"
+ name=$func_stripname_result
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ for potent_lib in $potential_libs; do
+ potlib="$potent_lib" # see symlink-check above in file_magic test
+ if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
+ $EGREP "$match_pattern_regex" > /dev/null; then
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ $ECHO
+ $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+ $ECHO "*** I have the capability to make that library automatically link in when"
+ $ECHO "*** you link to this library. But I can only do this if you have a"
+ $ECHO "*** shared version of the library, which you do not appear to have"
+ $ECHO "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib" ; then
+ $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
+ else
+ $ECHO "*** with $libname and none of the candidates passed a file format test"
+ $ECHO "*** using a regex pattern. Last file checked: $potlib"
+ fi
+ fi
+ ;;
+ *)
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ ;;
+ esac
+ done # Gone through all deplibs.
+ ;;
+ none | unknown | *)
+ newdeplibs=""
+ tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
+ -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ for i in $predeps $postdeps ; do
+ # can't use Xsed below, because $i might contain '/'
+ tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
+ done
+ fi
+ if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' |
+ $GREP . >/dev/null; then
+ $ECHO
+ if test "X$deplibs_check_method" = "Xnone"; then
+ $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
+ else
+ $ECHO "*** Warning: inter-library dependencies are not known to be supported."
+ fi
+ $ECHO "*** All declared inter-library dependencies are being dropped."
+ droppeddeps=yes
+ fi
+ ;;
+ esac
+ versuffix=$versuffix_save
+ major=$major_save
+ release=$release_save
+ libname=$libname_save
+ name=$name_save
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library with the System framework
+ newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+ ;;
+ esac
+
+ if test "$droppeddeps" = yes; then
+ if test "$module" = yes; then
+ $ECHO
+ $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
+ $ECHO "*** dependencies of module $libname. Therefore, libtool will create"
+ $ECHO "*** a static module, that should work as long as the dlopening"
+ $ECHO "*** application is linked with the -dlopen flag."
+ if test -z "$global_symbol_pipe"; then
+ $ECHO
+ $ECHO "*** However, this would only work if libtool was able to extract symbol"
+ $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ $ECHO "*** not find such a program. So, this module is probably useless."
+ $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test "$build_old_libs" = no; then
+ oldlibs="$output_objdir/$libname.$libext"
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ else
+ $ECHO "*** The inter-library dependencies that have been dropped here will be"
+ $ECHO "*** automatically added whenever a program is linked with this library"
+ $ECHO "*** or is declared to -dlopen it."
+
+ if test "$allow_undefined" = no; then
+ $ECHO
+ $ECHO "*** Since this library must not contain undefined symbols,"
+ $ECHO "*** because either the platform does not support them or"
+ $ECHO "*** it was explicitly requested with -no-undefined,"
+ $ECHO "*** libtool will only create a static version of it."
+ if test "$build_old_libs" = no; then
+ oldlibs="$output_objdir/$libname.$libext"
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ fi
+ fi
+ # Done checking deplibs!
+ deplibs=$newdeplibs
+ fi
+ # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+ case $host in
+ *-*-darwin*)
+ newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ ;;
+ esac
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $deplibs " in
+ *" -L$path/$objdir "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ deplibs="$new_libs"
+
+ # All the library-specific variables (install_libdir is set above).
+ library_names=
+ old_library=
+ dlname=
+
+ # Test again, we may have decided not to build it any more
+ if test "$build_libtool_libs" = yes; then
+ if test "$hardcode_into_libs" = yes; then
+ # Hardcode the library paths
+ hardcode_libdirs=
+ dep_rpath=
+ rpath="$finalize_rpath"
+ test "$mode" != relink && rpath="$compile_rpath$rpath"
+ for libdir in $rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ dep_rpath="$dep_rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ if test -n "$hardcode_libdir_flag_spec_ld"; then
+ eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+ else
+ eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+ fi
+ fi
+ if test -n "$runpath_var" && test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+ fi
+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+ fi
+
+ shlibpath="$finalize_shlibpath"
+ test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+ if test -n "$shlibpath"; then
+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+ fi
+
+ # Get the real and link names of the library.
+ eval shared_ext=\"$shrext_cmds\"
+ eval library_names=\"$library_names_spec\"
+ set dummy $library_names
+ shift
+ realname="$1"
+ shift
+
+ if test -n "$soname_spec"; then
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+ if test -z "$dlname"; then
+ dlname=$soname
+ fi
+
+ lib="$output_objdir/$realname"
+ linknames=
+ for link
+ do
+ linknames="$linknames $link"
+ done
+
+ # Use standard objects if they are pic
+ test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ test "X$libobjs" = "X " && libobjs=
+
+ delfiles=
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+ export_symbols="$output_objdir/$libname.uexp"
+ delfiles="$delfiles $export_symbols"
+ fi
+
+ orig_export_symbols=
+ case $host_os in
+ cygwin* | mingw* | cegcc*)
+ if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
+ # exporting using user supplied symfile
+ if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+ # and it's NOT already a .def file. Must figure out
+ # which of the given symbols are data symbols and tag
+ # them as such. So, trigger use of export_symbols_cmds.
+ # export_symbols gets reassigned inside the "prepare
+ # the list of exported symbols" if statement, so the
+ # include_expsyms logic still works.
+ orig_export_symbols="$export_symbols"
+ export_symbols=
+ always_export_symbols=yes
+ fi
+ fi
+ ;;
+ esac
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+ func_verbose "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $opt_dry_run || $RM $export_symbols
+ cmds=$export_symbols_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ func_len " $cmd"
+ len=$func_len_result
+ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ func_show_eval "$cmd" 'exit $?'
+ skipped_export=false
+ else
+ # The command line is too long to execute in one step.
+ func_verbose "using reloadable object file for export list..."
+ skipped_export=:
+ # Break out early, otherwise skipped_export may be
+ # set to false by a later but shorter cmd.
+ break
+ fi
+ done
+ IFS="$save_ifs"
+ if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+ fi
+
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ tmp_export_symbols="$export_symbols"
+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+ $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
+ fi
+
+ if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+ # The given exports_symbols file has to be filtered, so filter it.
+ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+ # FIXME: $output_objdir/$libname.filter potentially contains lots of
+ # 's' commands which not all seds can handle. GNU sed should be fine
+ # though. Also, the filter scales superlinearly with the number of
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+ delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+
+ tmp_deplibs=
+ for test_deplib in $deplibs; do
+ case " $convenience " in
+ *" $test_deplib "*) ;;
+ *)
+ tmp_deplibs="$tmp_deplibs $test_deplib"
+ ;;
+ esac
+ done
+ deplibs="$tmp_deplibs"
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec" &&
+ test "$compiler_needs_object" = yes &&
+ test -z "$libobjs"; then
+ # extract the archives, so we have objects to list.
+ # TODO: could optimize this to just extract one archive.
+ whole_archive_flag_spec=
+ fi
+ if test -n "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ test "X$libobjs" = "X " && libobjs=
+ else
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ libobjs="$libobjs $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+ fi
+
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ linker_flags="$linker_flags $flag"
+ fi
+
+ # Make a backup of the uninstalled library when relinking
+ if test "$mode" = relink; then
+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
+ fi
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ eval test_cmds=\"$module_expsym_cmds\"
+ cmds=$module_expsym_cmds
+ else
+ eval test_cmds=\"$module_cmds\"
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ eval test_cmds=\"$archive_expsym_cmds\"
+ cmds=$archive_expsym_cmds
+ else
+ eval test_cmds=\"$archive_cmds\"
+ cmds=$archive_cmds
+ fi
+ fi
+
+ if test "X$skipped_export" != "X:" &&
+ func_len " $test_cmds" &&
+ len=$func_len_result &&
+ test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+ # The command line is too long to link in one step, link piecewise
+ # or, if using GNU ld and skipped_export is not :, use a linker
+ # script.
+
+ # Save the value of $output and $libobjs because we want to
+ # use them later. If we have whole_archive_flag_spec, we
+ # want to use save_libobjs as it was before
+ # whole_archive_flag_spec was expanded, because we can't
+ # assume the linker understands whole_archive_flag_spec.
+ # This may have to be revisited, in case too many
+ # convenience libraries get linked in and end up exceeding
+ # the spec.
+ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ fi
+ save_output=$output
+ output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
+
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+ test_cmds=
+ concat_cmds=
+ objlist=
+ last_robj=
+ k=1
+
+ if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
+ output=${output_objdir}/${output_la}.lnkscript
+ func_verbose "creating GNU ld script: $output"
+ $ECHO 'INPUT (' > $output
+ for obj in $save_libobjs
+ do
+ $ECHO "$obj" >> $output
+ done
+ $ECHO ')' >> $output
+ delfiles="$delfiles $output"
+ elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
+ output=${output_objdir}/${output_la}.lnk
+ func_verbose "creating linker input file list: $output"
+ : > $output
+ set x $save_libobjs
+ shift
+ firstobj=
+ if test "$compiler_needs_object" = yes; then
+ firstobj="$1 "
+ shift
+ fi
+ for obj
+ do
+ $ECHO "$obj" >> $output
+ done
+ delfiles="$delfiles $output"
+ output=$firstobj\"$file_list_spec$output\"
+ else
+ if test -n "$save_libobjs"; then
+ func_verbose "creating reloadable object files..."
+ output=$output_objdir/$output_la-${k}.$objext
+ eval test_cmds=\"$reload_cmds\"
+ func_len " $test_cmds"
+ len0=$func_len_result
+ len=$len0
+
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ func_len " $obj"
+ func_arith $len + $func_len_result
+ len=$func_arith_result
+ if test "X$objlist" = X ||
+ test "$len" -lt "$max_cmd_len"; then
+ func_append objlist " $obj"
+ else
+ # The command $test_cmds is almost too long, add a
+ # command to the queue.
+ if test "$k" -eq 1 ; then
+ # The first file doesn't have a previous command to add.
+ eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+ else
+ # All subsequent reloadable object files will link in
+ # the last one created.
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
+ fi
+ last_robj=$output_objdir/$output_la-${k}.$objext
+ func_arith $k + 1
+ k=$func_arith_result
+ output=$output_objdir/$output_la-${k}.$objext
+ objlist=$obj
+ func_len " $last_robj"
+ func_arith $len0 + $func_len_result
+ len=$func_arith_result
+ fi
+ done
+ # Handle the remaining objects by creating one last
+ # reloadable object file. All subsequent reloadable object
+ # files will link in the last one created.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+ if test -n "$last_robj"; then
+ eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+ fi
+ delfiles="$delfiles $output"
+
+ else
+ output=
+ fi
+
+ if ${skipped_export-false}; then
+ func_verbose "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $opt_dry_run || $RM $export_symbols
+ libobjs=$output
+ # Append the command to create the export file.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+ if test -n "$last_robj"; then
+ eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+ fi
+ fi
+
+ test -n "$save_libobjs" &&
+ func_verbose "creating a temporary reloadable object file: $output"
+
+ # Loop through the commands generated above and execute them.
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $concat_cmds; do
+ IFS="$save_ifs"
+ $opt_silent || {
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ $opt_dry_run || eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+
+ if test -n "$export_symbols_regex" && ${skipped_export-false}; then
+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+
+ if ${skipped_export-false}; then
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ tmp_export_symbols="$export_symbols"
+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+ $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
+ fi
+
+ if test -n "$orig_export_symbols"; then
+ # The given exports_symbols file has to be filtered, so filter it.
+ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+ # FIXME: $output_objdir/$libname.filter potentially contains lots of
+ # 's' commands which not all seds can handle. GNU sed should be fine
+ # though. Also, the filter scales superlinearly with the number of
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+ delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+ fi
+
+ libobjs=$output
+ # Restore the value of output.
+ output=$save_output
+
+ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+ # Expand the library linking commands again to reset the
+ # value of $libobjs for piecewise linking.
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ cmds=$module_expsym_cmds
+ else
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ cmds=$archive_expsym_cmds
+ else
+ cmds=$archive_cmds
+ fi
+ fi
+ fi
+
+ if test -n "$delfiles"; then
+ # Append the command to remove temporary files to $cmds.
+ eval cmds=\"\$cmds~\$RM $delfiles\"
+ fi
+
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+ libobjs="$libobjs $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $opt_silent || {
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ $opt_dry_run || eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
+
+ if test -n "$convenience"; then
+ if test -z "$whole_archive_flag_spec"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ # Create links to the real library.
+ for linkname in $linknames; do
+ if test "$realname" != "$linkname"; then
+ func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
+ fi
+ done
+
+ # If -module or -export-dynamic was specified, set the dlname.
+ if test "$module" = yes || test "$export_dynamic" = yes; then
+ # On all known operating systems, these are identical.
+ dlname="$soname"
+ fi
+ fi
+ ;;
+
+ obj)
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ func_warning "\`-dlopen' is ignored for objects"
+ fi
+
+ case " $deplibs" in
+ *\ -l* | *\ -L*)
+ func_warning "\`-l' and \`-L' are ignored for objects" ;;
+ esac
+
+ test -n "$rpath" && \
+ func_warning "\`-rpath' is ignored for objects"
+
+ test -n "$xrpath" && \
+ func_warning "\`-R' is ignored for objects"
+
+ test -n "$vinfo" && \
+ func_warning "\`-version-info' is ignored for objects"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for objects"
+
+ case $output in
+ *.lo)
+ test -n "$objs$old_deplibs" && \
+ func_fatal_error "cannot build library object \`$output' from non-libtool objects"
+
+ libobj=$output
+ func_lo2o "$libobj"
+ obj=$func_lo2o_result
+ ;;
+ *)
+ libobj=
+ obj="$output"
+ ;;
+ esac
+
+ # Delete the old objects.
+ $opt_dry_run || $RM $obj $libobj
+
+ # Objects from convenience libraries. This assumes
+ # single-version convenience libraries. Whenever we create
+ # different ones for PIC/non-PIC, this we'll have to duplicate
+ # the extraction.
+ reload_conv_objs=
+ gentop=
+ # reload_cmds runs $LD directly, so let us get rid of
+ # -Wl from whole_archive_flag_spec and hope we can get by with
+ # turning comma into space..
+ wl=
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+ reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
+ else
+ gentop="$output_objdir/${obj}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ reload_conv_objs="$reload_objs $func_extract_archives_result"
+ fi
+ fi
+
+ # Create the old-style object.
+ reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+ output="$obj"
+ func_execute_cmds "$reload_cmds" 'exit $?'
+
+ # Exit if we aren't doing a library object file.
+ if test -z "$libobj"; then
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$build_libtool_libs" != yes; then
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ # Create an invalid libtool object if no PIC, so that we don't
+ # accidentally link it into a program.
+ # $show "echo timestamp > $libobj"
+ # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+ if test -n "$pic_flag" || test "$pic_mode" != default; then
+ # Only do commands if we really have different PIC objects.
+ reload_objs="$libobjs $reload_conv_objs"
+ output="$libobj"
+ func_execute_cmds "$reload_cmds" 'exit $?'
+ fi
+
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ prog)
+ case $host in
+ *cygwin*) func_stripname '' '.exe' "$output"
+ output=$func_stripname_result.exe;;
+ esac
+ test -n "$vinfo" && \
+ func_warning "\`-version-info' is ignored for programs"
+
+ test -n "$release" && \
+ func_warning "\`-release' is ignored for programs"
+
+ test "$preload" = yes \
+ && test "$dlopen_support" = unknown \
+ && test "$dlopen_self" = unknown \
+ && test "$dlopen_self_static" = unknown && \
+ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+ finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+ ;;
+ esac
+
+ case $host in
+ *-*-darwin*)
+ # Don't allow lazy linking, it breaks C++ global constructors
+ # But is supposedly fixed on 10.4 or later (yay!).
+ if test "$tagname" = CXX ; then
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+ 10.[0123])
+ compile_command="$compile_command ${wl}-bind_at_load"
+ finalize_command="$finalize_command ${wl}-bind_at_load"
+ ;;
+ esac
+ fi
+ # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+ compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+ ;;
+ esac
+
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $compile_deplibs " in
+ *" -L$path/$objdir "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $compile_deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ compile_deplibs="$new_libs"
+
+
+ compile_command="$compile_command $compile_deplibs"
+ finalize_command="$finalize_command $finalize_deplibs"
+
+ if test -n "$rpath$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ for libdir in $rpath $xrpath; do
+ # This is the magic to use -rpath.
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir" ;;
+ esac
+ done
+ fi
+
+ # Now hardcode the library paths
+ rpath=
+ hardcode_libdirs=
+ for libdir in $compile_rpath $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ ::) dllsearchpath=$libdir;;
+ *) dllsearchpath="$dllsearchpath:$libdir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ ::) dllsearchpath=$testbindir;;
+ *) dllsearchpath="$dllsearchpath:$testbindir";;
+ esac
+ ;;
+ esac
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ compile_rpath="$rpath"
+
+ rpath=
+ hardcode_libdirs=
+ for libdir in $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ finalize_rpath="$rpath"
+
+ if test -n "$libobjs" && test "$build_old_libs" = yes; then
+ # Transform all the library objects into standard objects.
+ compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ fi
+
+ func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+
+ # template prelinking step
+ if test -n "$prelink_cmds"; then
+ func_execute_cmds "$prelink_cmds" 'exit $?'
+ fi
+
+ wrappers_required=yes
+ case $host in
+ *cygwin* | *mingw* )
+ if test "$build_libtool_libs" != yes; then
+ wrappers_required=no
+ fi
+ ;;
+ *cegcc)
+ # Disable wrappers for cegcc, we are cross compiling anyway.
+ wrappers_required=no
+ ;;
+ *)
+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+ wrappers_required=no
+ fi
+ ;;
+ esac
+ if test "$wrappers_required" = no; then
+ # Replace the output file specification.
+ compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ link_command="$compile_command$compile_rpath"
+
+ # We have no uninstalled library dependencies, so finalize right now.
+ exit_status=0
+ func_show_eval "$link_command" 'exit_status=$?'
+
+ # Delete the generated files.
+ if test -f "$output_objdir/${outputname}S.${objext}"; then
+ func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+ fi
+
+ exit $exit_status
+ fi
+
+ if test -n "$compile_shlibpath$finalize_shlibpath"; then
+ compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+ fi
+ if test -n "$finalize_shlibpath"; then
+ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+ fi
+
+ compile_var=
+ finalize_var=
+ if test -n "$runpath_var"; then
+ if test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ if test -n "$finalize_perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $finalize_perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ fi
+
+ if test "$no_install" = yes; then
+ # We don't need to create a wrapper script.
+ link_command="$compile_var$compile_command$compile_rpath"
+ # Replace the output file specification.
+ link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ # Delete the old output file.
+ $opt_dry_run || $RM $output
+ # Link the executable and exit
+ func_show_eval "$link_command" 'exit $?'
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+ func_warning "this platform does not like uninstalled shared libraries"
+ func_warning "\`$output' will be relinked during installation"
+ else
+ if test "$fast_install" != no; then
+ link_command="$finalize_var$compile_command$finalize_rpath"
+ if test "$fast_install" = yes; then
+ relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+ else
+ # fast_install is set to needless
+ relink_command=
+ fi
+ else
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+ fi
+ fi
+
+ # Replace the output file specification.
+ link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+ # Delete the old output files.
+ $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+ func_show_eval "$link_command" 'exit $?'
+
+ # Now create the wrapper script.
+ func_verbose "creating $output"
+
+ # Quote the relink command for shipping.
+ if test -n "$relink_command"; then
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ func_quote_for_eval "$var_value"
+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+ fi
+ done
+ relink_command="(cd `pwd`; $relink_command)"
+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Quote $ECHO for shipping.
+ if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
+ case $progpath in
+ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+ esac
+ qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
+ else
+ qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Only actually do things if not in dry run mode.
+ $opt_dry_run || {
+ # win32 will think the script is a binary if it has
+ # a .exe suffix, so we strip it off here.
+ case $output in
+ *.exe) func_stripname '' '.exe' "$output"
+ output=$func_stripname_result ;;
+ esac
+ # test for cygwin because mv fails w/o .exe extensions
+ case $host in
+ *cygwin*)
+ exeext=.exe
+ func_stripname '' '.exe' "$outputname"
+ outputname=$func_stripname_result ;;
+ *) exeext= ;;
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+ func_dirname_and_basename "$output" "" "."
+ output_name=$func_basename_result
+ output_path=$func_dirname_result
+ cwrappersource="$output_path/$objdir/lt-$output_name.c"
+ cwrapper="$output_path/$output_name.exe"
+ $RM $cwrappersource $cwrapper
+ trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+ func_emit_cwrapperexe_src > $cwrappersource
+
+ # The wrapper executable is built using the $host compiler,
+ # because it contains $host paths and files. If cross-
+ # compiling, it, like the target executable, must be
+ # executed on the $host or under an emulation environment.
+ $opt_dry_run || {
+ $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
+ $STRIP $cwrapper
+ }
+
+ # Now, create the wrapper script for func_source use:
+ func_ltwrapper_scriptname $cwrapper
+ $RM $func_ltwrapper_scriptname_result
+ trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
+ $opt_dry_run || {
+ # note: this script will not be executed, so do not chmod.
+ if test "x$build" = "x$host" ; then
+ $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
+ else
+ func_emit_wrapper no > $func_ltwrapper_scriptname_result
+ fi
+ }
+ ;;
+ * )
+ $RM $output
+ trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
+
+ func_emit_wrapper no > $output
+ chmod +x $output
+ ;;
+ esac
+ }
+ exit $EXIT_SUCCESS
+ ;;
+ esac
+
+ # See if we need to build an old-fashioned archive.
+ for oldlib in $oldlibs; do
+
+ if test "$build_libtool_libs" = convenience; then
+ oldobjs="$libobjs_save $symfileobj"
+ addlibs="$convenience"
+ build_libtool_libs=no
+ else
+ if test "$build_libtool_libs" = module; then
+ oldobjs="$libobjs_save"
+ build_libtool_libs=no
+ else
+ oldobjs="$old_deplibs $non_pic_objects"
+ if test "$preload" = yes && test -f "$symfileobj"; then
+ oldobjs="$oldobjs $symfileobj"
+ fi
+ fi
+ addlibs="$old_convenience"
+ fi
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $addlibs
+ oldobjs="$oldobjs $func_extract_archives_result"
+ fi
+
+ # Do each command in the archive commands.
+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+ cmds=$old_archive_from_new_cmds
+ else
+
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+ oldobjs="$oldobjs $func_extract_archives_result"
+ fi
+
+ # POSIX demands no paths to be encoded in archives. We have
+ # to avoid creating archives with duplicate basenames if we
+ # might have to extract them afterwards, e.g., when creating a
+ # static archive out of a convenience library, or when linking
+ # the entirety of a libtool archive into another (currently
+ # not supported by libtool).
+ if (for obj in $oldobjs
+ do
+ func_basename "$obj"
+ $ECHO "$func_basename_result"
+ done | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $ECHO "copying selected object files to avoid basename conflicts..."
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+ func_mkdir_p "$gentop"
+ save_oldobjs=$oldobjs
+ oldobjs=
+ counter=1
+ for obj in $save_oldobjs
+ do
+ func_basename "$obj"
+ objbase="$func_basename_result"
+ case " $oldobjs " in
+ " ") oldobjs=$obj ;;
+ *[\ /]"$objbase "*)
+ while :; do
+ # Make sure we don't pick an alternate name that also
+ # overlaps.
+ newobj=lt$counter-$objbase
+ func_arith $counter + 1
+ counter=$func_arith_result
+ case " $oldobjs " in
+ *[\ /]"$newobj "*) ;;
+ *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+ esac
+ done
+ func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+ oldobjs="$oldobjs $gentop/$newobj"
+ ;;
+ *) oldobjs="$oldobjs $obj" ;;
+ esac
+ done
+ fi
+ eval cmds=\"$old_archive_cmds\"
+
+ func_len " $cmds"
+ len=$func_len_result
+ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ cmds=$old_archive_cmds
+ else
+ # the command line is too long to link in one step, link in parts
+ func_verbose "using piecewise archive linking..."
+ save_RANLIB=$RANLIB
+ RANLIB=:
+ objlist=
+ concat_cmds=
+ save_oldobjs=$oldobjs
+ oldobjs=
+ # Is there a better way of finding the last object in the list?
+ for obj in $save_oldobjs
+ do
+ last_oldobj=$obj
+ done
+ eval test_cmds=\"$old_archive_cmds\"
+ func_len " $test_cmds"
+ len0=$func_len_result
+ len=$len0
+ for obj in $save_oldobjs
+ do
+ func_len " $obj"
+ func_arith $len + $func_len_result
+ len=$func_arith_result
+ func_append objlist " $obj"
+ if test "$len" -lt "$max_cmd_len"; then
+ :
+ else
+ # the above command should be used before it gets too long
+ oldobjs=$objlist
+ if test "$obj" = "$last_oldobj" ; then
+ RANLIB=$save_RANLIB
+ fi
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+ objlist=
+ len=$len0
+ fi
+ done
+ RANLIB=$save_RANLIB
+ oldobjs=$objlist
+ if test "X$oldobjs" = "X" ; then
+ eval cmds=\"\$concat_cmds\"
+ else
+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+ fi
+ fi
+ fi
+ func_execute_cmds "$cmds" 'exit $?'
+ done
+
+ test -n "$generated" && \
+ func_show_eval "${RM}r$generated"
+
+ # Now create the libtool archive.
+ case $output in
+ *.la)
+ old_library=
+ test "$build_old_libs" = yes && old_library="$libname.$libext"
+ func_verbose "creating $output"
+
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ func_quote_for_eval "$var_value"
+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+ fi
+ done
+ # Quote the link command for shipping.
+ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ if test "$hardcode_automatic" = yes ; then
+ relink_command=
+ fi
+
+ # Only create the output if not a dry run.
+ $opt_dry_run || {
+ for installed in no yes; do
+ if test "$installed" = yes; then
+ if test -z "$install_libdir"; then
+ break
+ fi
+ output="$output_objdir/$outputname"i
+ # Replace all uninstalled libtool libraries with the installed ones
+ newdependency_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ *.la)
+ func_basename "$deplib"
+ name="$func_basename_result"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$deplib' is not a valid libtool archive"
+ newdependency_libs="$newdependency_libs $libdir/$name"
+ ;;
+ *) newdependency_libs="$newdependency_libs $deplib" ;;
+ esac
+ done
+ dependency_libs="$newdependency_libs"
+ newdlfiles=
+
+ for lib in $dlfiles; do
+ case $lib in
+ *.la)
+ func_basename "$lib"
+ name="$func_basename_result"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$lib' is not a valid libtool archive"
+ newdlfiles="$newdlfiles $libdir/$name"
+ ;;
+ *) newdlfiles="$newdlfiles $lib" ;;
+ esac
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ *.la)
+ # Only pass preopened files to the pseudo-archive (for
+ # eventual linking with the app. that links it) if we
+ # didn't already link the preopened objects directly into
+ # the library:
+ func_basename "$lib"
+ name="$func_basename_result"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ test -z "$libdir" && \
+ func_fatal_error "\`$lib' is not a valid libtool archive"
+ newdlprefiles="$newdlprefiles $libdir/$name"
+ ;;
+ esac
+ done
+ dlprefiles="$newdlprefiles"
+ else
+ newdlfiles=
+ for lib in $dlfiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlfiles="$newdlfiles $abs"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlprefiles="$newdlprefiles $abs"
+ done
+ dlprefiles="$newdlprefiles"
+ fi
+ $RM $output
+ # place dlname in correct position for cygwin
+ tdlname=$dlname
+ case $host,$output,$installed,$module,$dlname in
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+ esac
+ $ECHO > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags='$new_inherited_linker_flags'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Names of additional weak libraries provided by this library
+weak_library_names='$weak_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+ if test "$installed" = no && test "$need_relink" = yes; then
+ $ECHO >> $output "\
+relink_command=\"$relink_command\""
+ fi
+ done
+ }
+
+ # Do a symbolic link so that the libtool archive can be found in
+ # LD_LIBRARY_PATH before the program is installed.
+ func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
+ ;;
+ esac
+ exit $EXIT_SUCCESS
+}
+
+{ test "$mode" = link || test "$mode" = relink; } &&
+ func_mode_link ${1+"$@"}
+
+
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+ $opt_debug
+ RM="$nonopt"
+ files=
+ rmforce=
+ exit_status=0
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic="$magic"
+
+ for arg
+ do
+ case $arg in
+ -f) RM="$RM $arg"; rmforce=yes ;;
+ -*) RM="$RM $arg" ;;
+ *) files="$files $arg" ;;
+ esac
+ done
+
+ test -z "$RM" && \
+ func_fatal_help "you must specify an RM program"
+
+ rmdirs=
+
+ origobjdir="$objdir"
+ for file in $files; do
+ func_dirname "$file" "" "."
+ dir="$func_dirname_result"
+ if test "X$dir" = X.; then
+ objdir="$origobjdir"
+ else
+ objdir="$dir/$origobjdir"
+ fi
+ func_basename "$file"
+ name="$func_basename_result"
+ test "$mode" = uninstall && objdir="$dir"
+
+ # Remember objdir for removal later, being careful to avoid duplicates
+ if test "$mode" = clean; then
+ case " $rmdirs " in
+ *" $objdir "*) ;;
+ *) rmdirs="$rmdirs $objdir" ;;
+ esac
+ fi
+
+ # Don't error if the file doesn't exist and rm -f was used.
+ if { test -L "$file"; } >/dev/null 2>&1 ||
+ { test -h "$file"; } >/dev/null 2>&1 ||
+ test -f "$file"; then
+ :
+ elif test -d "$file"; then
+ exit_status=1
+ continue
+ elif test "$rmforce" = yes; then
+ continue
+ fi
+
+ rmfiles="$file"
+
+ case $name in
+ *.la)
+ # Possibly a libtool archive, so verify it.
+ if func_lalib_p "$file"; then
+ func_source $dir/$name
+
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+ rmfiles="$rmfiles $objdir/$n"
+ done
+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+
+ case "$mode" in
+ clean)
+ case " $library_names " in
+ # " " in the beginning catches empty $dlname
+ *" $dlname "*) ;;
+ *) rmfiles="$rmfiles $objdir/$dlname" ;;
+ esac
+ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+ ;;
+ uninstall)
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+ fi
+
+ if test -n "$old_library"; then
+ # Do each command in the old_postuninstall commands.
+ func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+ ;;
+ esac
+ fi
+ ;;
+
+ *.lo)
+ # Possibly a libtool object, so verify it.
+ if func_lalib_p "$file"; then
+
+ # Read the .lo file
+ func_source $dir/$name
+
+ # Add PIC object to the list of files to remove.
+ if test -n "$pic_object" &&
+ test "$pic_object" != none; then
+ rmfiles="$rmfiles $dir/$pic_object"
+ fi
+
+ # Add non-PIC object to the list of files to remove.
+ if test -n "$non_pic_object" &&
+ test "$non_pic_object" != none; then
+ rmfiles="$rmfiles $dir/$non_pic_object"
+ fi
+ fi
+ ;;
+
+ *)
+ if test "$mode" = clean ; then
+ noexename=$name
+ case $file in
+ *.exe)
+ func_stripname '' '.exe' "$file"
+ file=$func_stripname_result
+ func_stripname '' '.exe' "$name"
+ noexename=$func_stripname_result
+ # $file with .exe has already been added to rmfiles,
+ # add $file without .exe
+ rmfiles="$rmfiles $file"
+ ;;
+ esac
+ # Do a test to see if this is a libtool program.
+ if func_ltwrapper_p "$file"; then
+ if func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ relink_command=
+ func_source $func_ltwrapper_scriptname_result
+ rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
+ else
+ relink_command=
+ func_source $dir/$noexename
+ fi
+
+ # note $name still contains .exe if it was in $file originally
+ # as does the version of $file that was added into $rmfiles
+ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+ if test "$fast_install" = yes && test -n "$relink_command"; then
+ rmfiles="$rmfiles $objdir/lt-$name"
+ fi
+ if test "X$noexename" != "X$name" ; then
+ rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ func_show_eval "$RM $rmfiles" 'exit_status=1'
+ done
+ objdir="$origobjdir"
+
+ # Try to remove the ${objdir}s in the directories where we deleted files
+ for dir in $rmdirs; do
+ if test -d "$dir"; then
+ func_show_eval "rmdir $dir >/dev/null 2>&1"
+ fi
+ done
+
+ exit $exit_status
+}
+
+{ test "$mode" = uninstall || test "$mode" = clean; } &&
+ func_mode_uninstall ${1+"$@"}
+
+test -z "$mode" && {
+ help="$generic_help"
+ func_fatal_help "you must specify a MODE"
+}
+
+test -z "$exec_cmd" && \
+ func_fatal_help "invalid operation mode \`$mode'"
+
+if test -n "$exec_cmd"; then
+ eval exec "$exec_cmd"
+ exit $EXIT_FAILURE
+fi
+
+exit $exit_status
+
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries. Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them. This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration. But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
+# vi:sw=2
+
diff --git a/build-aux/mdate-sh b/build-aux/mdate-sh
new file mode 100755
index 00000000..83d27009
--- /dev/null
+++ b/build-aux/mdate-sh
@@ -0,0 +1,205 @@
+#!/bin/sh
+# Get modification time of a file or directory and pretty-print it.
+
+scriptversion=2007-03-30.02
+
+# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005, 2007 Free Software
+# Foundation, Inc.
+# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
+#
+# 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 to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case $1 in
+ '')
+ echo "$0: No file. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: mdate-sh [--help] [--version] FILE
+
+Pretty-print the modification time of FILE.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "mdate-sh $scriptversion"
+ exit $?
+ ;;
+esac
+
+# Prevent date giving response in another language.
+LANG=C
+export LANG
+LC_ALL=C
+export LC_ALL
+LC_TIME=C
+export LC_TIME
+
+# GNU ls changes its time format in response to the TIME_STYLE
+# variable. Since we cannot assume `unset' works, revert this
+# variable to its documented default.
+if test "${TIME_STYLE+set}" = set; then
+ TIME_STYLE=posix-long-iso
+ export TIME_STYLE
+fi
+
+save_arg1=$1
+
+# Find out how to get the extended ls output of a file or directory.
+if ls -L /dev/null 1>/dev/null 2>&1; then
+ ls_command='ls -L -l -d'
+else
+ ls_command='ls -l -d'
+fi
+# Avoid user/group names that might have spaces, when possible.
+if ls -n /dev/null 1>/dev/null 2>&1; then
+ ls_command="$ls_command -n"
+fi
+
+# A `ls -l' line looks as follows on OS/2.
+# drwxrwx--- 0 Aug 11 2001 foo
+# This differs from Unix, which adds ownership information.
+# drwxrwx--- 2 root root 4096 Aug 11 2001 foo
+#
+# To find the date, we split the line on spaces and iterate on words
+# until we find a month. This cannot work with files whose owner is a
+# user named `Jan', or `Feb', etc. However, it's unlikely that `/'
+# will be owned by a user whose name is a month. So we first look at
+# the extended ls output of the root directory to decide how many
+# words should be skipped to get the date.
+
+# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
+set x`$ls_command /`
+
+# Find which argument is the month.
+month=
+command=
+until test $month
+do
+ shift
+ # Add another shift to the command.
+ command="$command shift;"
+ case $1 in
+ Jan) month=January; nummonth=1;;
+ Feb) month=February; nummonth=2;;
+ Mar) month=March; nummonth=3;;
+ Apr) month=April; nummonth=4;;
+ May) month=May; nummonth=5;;
+ Jun) month=June; nummonth=6;;
+ Jul) month=July; nummonth=7;;
+ Aug) month=August; nummonth=8;;
+ Sep) month=September; nummonth=9;;
+ Oct) month=October; nummonth=10;;
+ Nov) month=November; nummonth=11;;
+ Dec) month=December; nummonth=12;;
+ esac
+done
+
+# Get the extended ls output of the file or directory.
+set dummy x`eval "$ls_command \"\$save_arg1\""`
+
+# Remove all preceding arguments
+eval $command
+
+# Because of the dummy argument above, month is in $2.
+#
+# On a POSIX system, we should have
+#
+# $# = 5
+# $1 = file size
+# $2 = month
+# $3 = day
+# $4 = year or time
+# $5 = filename
+#
+# On Darwin 7.7.0 and 7.6.0, we have
+#
+# $# = 4
+# $1 = day
+# $2 = month
+# $3 = year or time
+# $4 = filename
+
+# Get the month.
+case $2 in
+ Jan) month=January; nummonth=1;;
+ Feb) month=February; nummonth=2;;
+ Mar) month=March; nummonth=3;;
+ Apr) month=April; nummonth=4;;
+ May) month=May; nummonth=5;;
+ Jun) month=June; nummonth=6;;
+ Jul) month=July; nummonth=7;;
+ Aug) month=August; nummonth=8;;
+ Sep) month=September; nummonth=9;;
+ Oct) month=October; nummonth=10;;
+ Nov) month=November; nummonth=11;;
+ Dec) month=December; nummonth=12;;
+esac
+
+case $3 in
+ ???*) day=$1;;
+ *) day=$3; shift;;
+esac
+
+# Here we have to deal with the problem that the ls output gives either
+# the time of day or the year.
+case $3 in
+ *:*) set `date`; eval year=\$$#
+ case $2 in
+ Jan) nummonthtod=1;;
+ Feb) nummonthtod=2;;
+ Mar) nummonthtod=3;;
+ Apr) nummonthtod=4;;
+ May) nummonthtod=5;;
+ Jun) nummonthtod=6;;
+ Jul) nummonthtod=7;;
+ Aug) nummonthtod=8;;
+ Sep) nummonthtod=9;;
+ Oct) nummonthtod=10;;
+ Nov) nummonthtod=11;;
+ Dec) nummonthtod=12;;
+ esac
+ # For the first six month of the year the time notation can also
+ # be used for files modified in the last year.
+ if (expr $nummonth \> $nummonthtod) > /dev/null;
+ then
+ year=`expr $year - 1`
+ fi;;
+ *) year=$3;;
+esac
+
+# The result.
+echo $day $month $year
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/build-aux/missing b/build-aux/missing
new file mode 100755
index 00000000..1c8ff704
--- /dev/null
+++ b/build-aux/missing
@@ -0,0 +1,367 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2006-05-10.23
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# 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 to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+ configure_ac=configure.ac
+else
+ configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+ # Try to run requested program, and just exit if it succeeds.
+ run=
+ shift
+ "$@" && exit 0
+ # Exit code 63 means version mismatch. This often happens
+ # when the user try to use an ancient version of a tool on
+ # a file that requires a minimum version. In this case we
+ # we should proceed has if the program had been absent, or
+ # if --run hadn't been passed.
+ if test $? = 63; then
+ run=:
+ msg="probably too old"
+ fi
+ ;;
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+ --run try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+ aclocal touch file \`aclocal.m4'
+ autoconf touch file \`configure'
+ autoheader touch file \`config.h.in'
+ autom4te touch the output file, or create a stub one
+ automake touch all \`Makefile.in' files
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
+ flex create \`lex.yy.c', if possible, from existing .c
+ help2man touch the output file
+ lex create \`lex.yy.c', if possible, from existing .c
+ makeinfo touch the output file
+ tar try tar, gnutar, gtar, then tar without non-portable flags
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake@gnu.org>."
+ exit $?
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
+ ;;
+
+ -*)
+ echo 1>&2 "$0: Unknown \`$1' option"
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+ ;;
+
+esac
+
+# Now exit if we have it, but it failed. Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case $1 in
+ lex|yacc)
+ # Not GNU programs, they don't have --version.
+ ;;
+
+ tar)
+ if test -n "$run"; then
+ echo 1>&2 "ERROR: \`tar' requires --run"
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ exit 1
+ fi
+ ;;
+
+ *)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ # Could not run --version or --help. This is probably someone
+ # running `$TOOL --version' or `$TOOL --help' to check whether
+ # $TOOL exists and not knowing $TOOL uses missing.
+ exit 1
+ fi
+ ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $1 in
+ aclocal*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
+ to install the \`Automake' and \`Perl' packages. Grab them from
+ any GNU archive site."
+ touch aclocal.m4
+ ;;
+
+ autoconf)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`${configure_ac}'. You might want to install the
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+ archive site."
+ touch configure
+ ;;
+
+ autoheader)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
+ from any GNU archive site."
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+ test -z "$files" && files="config.h"
+ touch_files=
+ for f in $files; do
+ case $f in
+ *:*) touch_files="$touch_files "`echo "$f" |
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+ *) touch_files="$touch_files $f.in";;
+ esac
+ done
+ touch $touch_files
+ ;;
+
+ automake*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+ You might want to install the \`Automake' and \`Perl' packages.
+ Grab them from any GNU archive site."
+ find . -type f -name Makefile.am -print |
+ sed 's/\.am$/.in/' |
+ while read f; do touch "$f"; done
+ ;;
+
+ autom4te)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them.
+ You can get \`$1' as part of \`Autoconf' from any GNU
+ archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo "#! /bin/sh"
+ echo "# Created by GNU Automake missing as a replacement of"
+ echo "# $ $@"
+ echo "exit 0"
+ chmod +x $file
+ exit 1
+ fi
+ ;;
+
+ bison|yacc)
+ echo 1>&2 "\
+WARNING: \`$1' $msg. You should only need it if
+ you modified a \`.y' file. You may need the \`Bison' package
+ in order for those modifications to take effect. You can get
+ \`Bison' from any GNU archive site."
+ rm -f y.tab.c y.tab.h
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f y.tab.h; then
+ echo >y.tab.h
+ fi
+ if test ! -f y.tab.c; then
+ echo 'main() { return 0; }' >y.tab.c
+ fi
+ ;;
+
+ lex|flex)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.l' file. You may need the \`Flex' package
+ in order for those modifications to take effect. You can get
+ \`Flex' from any GNU archive site."
+ rm -f lex.yy.c
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f lex.yy.c; then
+ echo 'main() { return 0; }' >lex.yy.c
+ fi
+ ;;
+
+ help2man)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a dependency of a manual page. You may need the
+ \`Help2man' package in order for those modifications to take
+ effect. You can get \`Help2man' from any GNU archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo ".ab help2man is required to generate this page"
+ exit 1
+ fi
+ ;;
+
+ makeinfo)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.texi' or \`.texinfo' file, or any other file
+ indirectly affecting the aspect of the manual. The spurious
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+ # The file to touch is that specified with -o ...
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -z "$file"; then
+ # ... or it is the one specified with @setfilename ...
+ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+ file=`sed -n '
+ /^@setfilename/{
+ s/.* \([^ ]*\) *$/\1/
+ p
+ q
+ }' $infile`
+ # ... or it is derived from the source name (dir/f.texi becomes f.info)
+ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+ fi
+ # If the file does not exist, the user really needs makeinfo;
+ # let's fail without touching anything.
+ test -f $file || exit 1
+ touch $file
+ ;;
+
+ tar)
+ shift
+
+ # We have already tried tar in the generic part.
+ # Look for gnutar/gtar before invocation to avoid ugly error
+ # messages.
+ if (gnutar --version > /dev/null 2>&1); then
+ gnutar "$@" && exit 0
+ fi
+ if (gtar --version > /dev/null 2>&1); then
+ gtar "$@" && exit 0
+ fi
+ firstarg="$1"
+ if shift; then
+ case $firstarg in
+ *o*)
+ firstarg=`echo "$firstarg" | sed s/o//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ case $firstarg in
+ *h*)
+ firstarg=`echo "$firstarg" | sed s/h//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ fi
+
+ echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+ You may want to install GNU tar or Free paxutils, or check the
+ command line arguments."
+ exit 1
+ ;;
+
+ *)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them. Check the \`README' file,
+ it often tells you about the needed prerequisites for installing
+ this package. You may also peek at any GNU archive site, in case
+ some other package would contain this missing \`$1' program."
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/build-aux/run-test b/build-aux/run-test
new file mode 100755
index 00000000..cfa77518
--- /dev/null
+++ b/build-aux/run-test
@@ -0,0 +1,139 @@
+#!/bin/sh
+#
+# Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+#
+
+# This program is a test driver that supports running a test under valgrind.
+# Usage: run-test CHECKER PROGRAM [ARGUMENT...]
+
+progname=$0
+
+# func_usage
+# outputs to stdout the --help usage message.
+func_usage ()
+{
+ echo "\
+Usage: run-test [OPTION...] CHECKER PROGRAM [ARGUMENT...]
+
+Runs PROGRAM under the control of CHECKER.
+
+CHECKER may be empty or a valgrind command with some options, such as
+'valgrind --tool=memcheck --num-callers=20 --leak-check=yes --leak-resolution=high --show-reachable=yes'.
+
+When CHECKER is not empty, it is recommended that the package has been
+configured with
+ --disable-shared so that tests are real executables and not libtool
+ wrapper scripts, and
+ CFLAGS=\"-g\" so that valgrind shows line numbers.
+
+Report bugs to Bruno Haible."
+}
+
+# func_version
+# outputs to stdout the --version message.
+func_version ()
+{
+ echo "\
+run-test (GNU libunistring)
+Copyright (C) 2009 Free Software Foundation, Inc.
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+Written by" "Bruno Haible"
+}
+
+# func_fatal_error message
+# outputs to stderr a fatal error message, and terminates the program.
+# Input:
+# - progname name of this program
+func_fatal_error ()
+{
+ echo "$progname: *** $1" 1>&2
+ echo "$progname: *** Stop." 1>&2
+ func_exit 1
+}
+
+# Command-line option processing.
+# Removes the OPTIONS from the arguments. Sets the variables:
+# - checker wrapper program for executables
+{
+ while test $# -gt 0; do
+ case "$1" in
+ --help | --hel | --he | --h )
+ func_usage
+ exit $? ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v )
+ func_version
+ exit $? ;;
+ -- )
+ # Stop option processing
+ shift
+ break ;;
+ -* )
+ echo "run-test: unknown option $1" 1>&2
+ echo "Try 'run-test --help' for more information." 1>&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+ done
+
+ if test $# -lt 2; then
+ echo "run-test: too few arguments" 1>&2
+ echo "Try 'run-test --help' for more information." 1>&2
+ exit 1
+ fi
+
+ checker="$1"
+ shift
+}
+
+if test -z "$checker"; then
+ # No checker. Run the test directly.
+ exec "$@"
+else
+ # Using valgrind. We want to apply valgrind only to executables, not to
+ # shell script, because
+ # 1. we don't want to look for memory leaks in bash,
+ # 2. on a bi-arch system, we would get an error message such as
+ # "valgrind: wrong executable class (eg. 32-bit instead of 64-bit)".
+ case "$1" in
+ *.sh)
+ # A shell script. Ignore the checker.
+ exec "$@"
+ ;;
+ *)
+ # The 'file' command is not portable enough. So, look
+ # at the first two bytes of the file. Are they '#!'?
+ if { if od -A x < /dev/null >/dev/null 2>/dev/null; then
+ # Use POSIX od.
+ firstbytes=`od -A n -t o1 -N 2 < "$1" | tr -d ' '`
+ else
+ # Use BSD hexdump.
+ firstbytes=`dd if="$1" bs=1 count=2 2>/dev/null | hexdump -e '1/1 "%03o"'`
+ fi
+ test "$firstbytes" = "043041"
+ }; then
+ # A shell script. Ignore the checker.
+ exec "$@"
+ else
+ # An executable. Use the checker.
+ exec $checker "$@"
+ fi
+ ;;
+ esac
+fi
diff --git a/build-aux/texi2html b/build-aux/texi2html
new file mode 100755
index 00000000..a0343665
--- /dev/null
+++ b/build-aux/texi2html
@@ -0,0 +1,19554 @@
+#! /usr/bin/perl -- # perl
+'di ';
+'ig 00 ';
+#+##############################################################################
+#
+# texi2html: Program to transform Texinfo documents to HTML
+#
+# Copyright (C) 1999-2005 Patrice Dumas <dumas@centre-cired.fr>,
+# Derek Price <derek@ximbiot.com>,
+# Adrian Aichner <adrian@xemacs.org>,
+# & others.
+#
+# 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., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+#
+#-##############################################################################
+# The man page for this program is included at the end of this file and can be
+# viewed using the command 'nroff -man texi2html'.
+
+# for POSIX::setlocale and File::Spec
+require 5.00405;
+# Perl pragma to restrict unsafe constructs
+use strict;
+# used in case of tests, to revert to "C" locale.
+use POSIX qw(setlocale LC_ALL LC_CTYPE);
+# used to obtain the name of the current working directory
+use Cwd;
+# used to find a relative path back to the current working directory
+use File::Spec;
+
+#
+# According to
+# larry.jones@sdrc.com (Larry Jones)
+# this pragma is not present in perl5.004_02:
+#
+# Perl pragma to control optional warnings
+# use warnings;
+
+#++##########################################################################
+#
+# NOTE FOR DEBUGGING THIS SCRIPT:
+# You can run 'perl texi2html.pl' directly, provided you have
+# the environment variable T2H_HOME set to the directory containing
+# the texi2html.init, T2h_i18n.pm, translations.pl, l2h.init,
+# T2h_l2h.pm files
+#
+#--##########################################################################
+
+# CVS version:
+# $Id: texi2html.pl,v 1.182 2007/05/07 22:56:02 pertusus Exp $
+
+# Homepage:
+my $T2H_HOMEPAGE = "http://www.nongnu.org/texi2html/";
+
+# Authors (appears in comments):
+my $T2H_AUTHORS = <<EOT;
+Written by: Lionel Cons <Lionel.Cons\@cern.ch> (original author)
+ Karl Berry <karl\@freefriends.org>
+ Olaf Bachmann <obachman\@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug\@nongnu.org>
+EOT
+
+# Version: set in configure.in
+my $THISVERSION = '1.78a';
+my $THISPROG = "texi2html $THISVERSION"; # program name and version
+
+#+++########################################################################
+# #
+# Paths and file names #
+# #
+#---########################################################################
+
+# set by configure, prefix for the sysconfdir and so on
+my $prefix = '/usr/local';
+my $sysconfdir;
+my $pkgdatadir;
+my $datadir;
+
+# We need to eval as $prefix has to be expanded. However when we haven't
+# run configure @sysconfdir will be expanded as an array, thus we verify
+# whether configure was run or not
+if ('${prefix}/etc' ne '@' . 'sysconfdir@')
+{
+ $sysconfdir = eval '"${prefix}/etc"';
+}
+else
+{
+ $sysconfdir = "/usr/local/etc";
+}
+
+if ('${prefix}/share' ne '@' . 'datadir@')
+{
+ $pkgdatadir = eval '"${prefix}/share/texi2html"';
+ $datadir = eval '"${prefix}/share"';
+}
+else
+{
+ $pkgdatadir = "/usr/local/share/texi2html";
+ $datadir = "/usr/local/share";
+}
+
+my $i18n_dir = 'i18n'; # name of the directory containing the per language files
+my $conf_file_name = 'Config' ;
+my $texinfo_htmlxref = 'htmlxref.cnf';
+
+# directories for texi2html init files
+my @texi2html_config_dirs = ('./');
+push @texi2html_config_dirs, "$ENV{'HOME'}/.texi2html/" if (defined($ENV{'HOME'}));
+push @texi2html_config_dirs, "$sysconfdir/texi2html/" if (defined($sysconfdir));
+push @texi2html_config_dirs, "$pkgdatadir" if (defined($pkgdatadir));
+
+# directories for texinfo configuration files
+my @texinfo_config_dirs = ('./.texinfo/');
+push @texinfo_config_dirs, "$ENV{'HOME'}/.texinfo/" if (defined($ENV{'HOME'}));
+push @texinfo_config_dirs, "$sysconfdir/texinfo/" if (defined($sysconfdir));
+push @texinfo_config_dirs, "$datadir/texinfo/" if (defined($datadir));
+
+
+#+++########################################################################
+# #
+# Constants #
+# #
+#---########################################################################
+
+my $DEBUG_MENU = 1;
+my $DEBUG_INDEX = 2;
+my $DEBUG_TEXI = 4;
+my $DEBUG_MACROS = 8;
+my $DEBUG_FORMATS = 16;
+my $DEBUG_ELEMENTS = 32;
+my $DEBUG_USER = 64;
+my $DEBUG_L2H = 128;
+
+my $ERROR = "***"; # prefix for errors
+my $WARN = "**"; # prefix for warnings
+
+my $VARRE = '[\w\-]+'; # RE for a variable name
+my $NODERE = '[^:]+'; # RE for node names
+
+my $MAX_LEVEL = 4;
+my $MIN_LEVEL = 1;
+
+#+++###########################################################################
+# #
+# Initialization #
+# Some declarations, some functions that are GPL and therefore cannot be in #
+# texi2html.init, some functions that are not to be customized. #
+# Pasted content of File $(srcdir)/texi2html.init: Default initializations #
+# #
+#---###########################################################################
+
+{
+package Texi2HTML::Config;
+
+
+sub load($)
+{
+ my $file = shift;
+ eval { require($file) ;};
+ if ($@ ne '')
+ {
+ print STDERR "error loading $file: $@\n";
+ return 0;
+ }
+ return 1;
+}
+
+# customization options variables
+
+use vars qw(
+$DEBUG
+$PREFIX
+$VERBOSE
+$SUBDIR
+$IDX_SUMMARY
+$SPLIT
+$SHORT_REF
+@EXPAND
+$EXPAND
+$TOP
+$DOCTYPE
+$FRAMESET_DOCTYPE
+$CHECK
+$TEST
+$DUMP_TEXI
+$MACRO_EXPAND
+$USE_GLOSSARY
+$INVISIBLE_MARK
+$USE_ISO
+$TOP_FILE
+$TOC_FILE
+$FRAMES
+$SHOW_MENU
+$NUMBER_SECTIONS
+$USE_NODES
+$USE_UNICODE
+$USE_UNIDECODE
+$TRANSLITERATE_NODE
+$NODE_FILES
+$NODE_NAME_IN_MENU
+$AVOID_MENU_REDUNDANCY
+$SECTION_NAVIGATION
+$SHORTEXTN
+$EXTENSION
+$OUT
+$NOVALIDATE
+$DEF_TABLE
+$LANG
+$DO_CONTENTS
+$DO_SCONTENTS
+$SEPARATED_FOOTNOTES
+$TOC_LINKS
+$L2H
+$L2H_L2H
+$L2H_SKIP
+$L2H_TMP
+$L2H_CLEAN
+$L2H_FILE
+$L2H_HTML_VERSION
+$EXTERNAL_DIR
+@INCLUDE_DIRS
+@PREPEND_DIRS
+@CONF_DIRS
+$IGNORE_PREAMBLE_TEXT
+@CSS_FILES
+$INLINE_CONTENTS
+);
+
+# customization variables
+# ENCODING is deprecated
+use vars qw(
+$ENCODING
+
+$ENCODING_NAME
+$DOCUMENT_ENCODING
+$OUT_ENCODING
+$IN_ENCODING
+$DEFAULT_ENCODING
+$MENU_PRE_STYLE
+$CENTER_IMAGE
+$EXAMPLE_INDENT_CELL
+$SMALL_EXAMPLE_INDENT_CELL
+$SMALL_FONT_SIZE
+$SMALL_RULE
+$DEFAULT_RULE
+$MIDDLE_RULE
+$BIG_RULE
+$TOP_HEADING
+$INDEX_CHAPTER
+$SPLIT_INDEX
+$HREF_DIR_INSTEAD_FILE
+$USE_MENU_DIRECTIONS
+$AFTER_BODY_OPEN
+$PRE_BODY_CLOSE
+$EXTRA_HEAD
+$VERTICAL_HEAD_NAVIGATION
+$WORDS_IN_PAGE
+$ICONS
+$UNNUMBERED_SYMBOL_IN_MENU
+$SIMPLE_MENU
+$MENU_SYMBOL
+$OPEN_QUOTE_SYMBOL
+$CLOSE_QUOTE_SYMBOL
+$TOC_LIST_STYLE
+$TOC_LIST_ATTRIBUTE
+$TOP_NODE_FILE
+$TOP_NODE_UP
+$NODE_FILE_EXTENSION
+$BEFORE_OVERVIEW
+$AFTER_OVERVIEW
+$BEFORE_TOC_LINES
+$AFTER_TOC_LINES
+$NEW_CROSSREF_STYLE
+$USER
+$USE_NUMERIC_ENTITY
+$DATE
+%ACTIVE_ICONS
+%NAVIGATION_TEXT
+%PASSIVE_ICONS
+%BUTTONS_NAME
+%BUTTONS_GOTO
+%BUTTONS_EXAMPLE
+@CHAPTER_BUTTONS
+@MISC_BUTTONS
+@SECTION_BUTTONS
+@SECTION_FOOTER_BUTTONS
+@NODE_FOOTER_BUTTONS
+@IMAGE_EXTENSIONS
+);
+
+# customization variables which may be guessed in the script
+#our $ADDRESS;
+use vars qw(
+$BODYTEXT
+$CSS_LINES
+$DOCUMENT_DESCRIPTION
+$EXTERNAL_CROSSREF_SPLIT
+);
+
+# I18n
+use vars qw(
+$I
+$LANGUAGES
+);
+
+# customizable subroutines references
+use vars qw(
+$print_section
+$one_section
+$end_section
+$print_Top_header
+$print_Top_footer
+$print_Top
+$print_Toc
+$print_Overview
+$print_Footnotes
+$print_About
+$print_misc_header
+$print_misc_footer
+$print_misc
+$print_section_header
+$print_section_footer
+$print_chapter_header
+$print_chapter_footer
+$print_page_head
+$print_page_foot
+$print_head_navigation
+$print_foot_navigation
+$button_icon_img
+$print_navigation
+$about_body
+$print_frame
+$print_toc_frame
+$toc_body
+$titlepage
+$css_lines
+$print_redirection_page
+$init_out
+$finish_out
+$node_file_name
+$element_file_name
+$inline_contents
+
+$protect_text
+$anchor
+$def_item
+$def
+$menu
+$menu_link
+$menu_description
+$menu_comment
+$simple_menu_link
+$ref_beginning
+$info_ref
+$book_ref
+$external_href
+$external_ref
+$internal_ref
+$table_item
+$table_line
+$row
+$cell
+$list_item
+$comment
+$def_line
+$def_line_no_texi
+$raw
+$raw_no_texi
+$heading
+$paragraph
+$preformatted
+$foot_line_and_ref
+$foot_section
+$address
+$image
+$image_files
+$index_entry_label
+$index_entry
+$index_letter
+$print_index
+$index_summary
+$summary_letter
+$complex_format
+$cartouche
+$sp
+$definition_category
+$table_list
+$copying_comment
+$index_summary_file_entry
+$index_summary_file_end
+$index_summary_file_begin
+$style
+$format
+$normal_text
+$empty_line
+$unknown
+$unknown_style
+$float
+$caption_shortcaption
+$listoffloats
+$listoffloats_entry
+$listoffloats_caption
+$listoffloats_float_style
+$listoffloats_style
+$acronym_like
+$quotation
+$quotation_prepend_text
+$paragraph_style_command
+$heading_texi
+$index_element_heading_texi
+
+$PRE_ABOUT
+$AFTER_ABOUT
+);
+
+# hash which entries might be redefined by the user
+use vars qw(
+$complex_format_map
+%accent_map
+%def_map
+%format_map
+%simple_map
+%simple_map_pre
+%simple_map_texi
+%style_map
+%style_map_pre
+%style_map_texi
+%simple_format_simple_map_texi
+%simple_format_style_map_texi
+%simple_format_texi_map
+%command_type
+%paragraph_style
+%things_map
+%pre_map
+%texi_map
+%unicode_map
+%unicode_diacritical
+%transliterate_map
+%transliterate_accent_map
+%no_transliterate_map
+%ascii_character_map
+%ascii_simple_map
+%ascii_things_map
+%numeric_entity_map
+%perl_charset_to_html
+%iso_symbols
+%misc_command
+%css_map
+%format_in_paragraph
+%special_list_commands
+%accent_letters
+%unicode_accents
+%special_accents
+@command_handler_init
+@command_handler_process
+@command_handler_finish
+%command_handler
+);
+
+# needed in this namespace for translations
+$I = \&Texi2HTML::I18n::get_string;
+
+#
+# Function refs covered by the GPL as part of the texi2html.pl original
+# code. As such they cannot appear in texi2html.init which is public
+# domain (at least the things coded by me, and, if I'm not wrong also the
+# things coded by Olaf -- Pat).
+#
+
+$toc_body = \&T2H_GPL_toc_body;
+$style = \&T2H_GPL_style;
+$format = \&T2H_GPL_format;
+
+sub T2H_GPL_toc_body($)
+{
+ my $elements_list = shift;
+ return unless ($DO_CONTENTS or $DO_SCONTENTS or $FRAMES);
+ my $current_level = 0;
+ my $ul_style = $NUMBER_SECTIONS ? $TOC_LIST_ATTRIBUTE : '';
+ foreach my $element (@$elements_list)
+ {
+ next if ($element->{'top'} or $element->{'index_page'});
+ my $ind = ' ' x $current_level;
+ my $level = $element->{'toc_level'};
+ print STDERR "Bug no toc_level for ($element) $element->{'texi'}\n" if (!defined ($level));
+ if ($level > $current_level)
+ {
+ while ($level > $current_level)
+ {
+ $current_level++;
+ my $ln = "\n$ind<ul${ul_style}>\n";
+ $ind = ' ' x $current_level;
+ push(@{$Texi2HTML::TOC_LINES}, $ln);
+ }
+ }
+ elsif ($level < $current_level)
+ {
+ while ($level < $current_level)
+ {
+ $current_level--;
+ $ind = ' ' x $current_level;
+ my $line = "</li>\n$ind</ul>";
+ $line .= "</li>" if ($level == $current_level);
+ push(@{$Texi2HTML::TOC_LINES}, "$line\n");
+
+ }
+ }
+ else
+ {
+ push(@{$Texi2HTML::TOC_LINES}, "</li>\n");
+ }
+ my $file = '';
+ $file = $element->{'file'} if ($SPLIT);
+ my $text = $element->{'text'};
+ #$text = $element->{'name'} unless ($NUMBER_SECTIONS);
+ my $entry = "<li>" . &$anchor ($element->{'tocid'}, "$file#$element->{'id'}",$text);
+ push (@{$Texi2HTML::TOC_LINES}, $ind . $entry);
+ push(@{$Texi2HTML::OVERVIEW}, $entry. "</li>\n") if ($level == 1);
+ }
+ while (0 < $current_level)
+ {
+ $current_level--;
+ my $ind = ' ' x $current_level;
+ push(@{$Texi2HTML::TOC_LINES}, "</li>\n$ind</ul>\n");
+ }
+ @{$Texi2HTML::TOC_LINES} = () unless ($DO_CONTENTS);
+ if (@{$Texi2HTML::TOC_LINES})
+ {
+ unshift @{$Texi2HTML::TOC_LINES}, $BEFORE_TOC_LINES;
+ push @{$Texi2HTML::TOC_LINES}, $AFTER_TOC_LINES;
+ }
+ @{$Texi2HTML::OVERVIEW} = () unless ($DO_SCONTENTS or $FRAMES);
+ if (@{$Texi2HTML::OVERVIEW})
+ {
+ unshift @{$Texi2HTML::OVERVIEW}, "<ul${ul_style}>\n";
+ push @{$Texi2HTML::OVERVIEW}, "</ul>\n";
+ unshift @{$Texi2HTML::OVERVIEW}, $BEFORE_OVERVIEW;
+ push @{$Texi2HTML::OVERVIEW}, $AFTER_OVERVIEW;
+ }
+}
+
+sub T2H_GPL_style($$$$$$$$$)
+{ # known style
+ my $style = shift;
+ my $command = shift;
+ my $text = shift;
+ my $args = shift;
+ my $no_close = shift;
+ my $no_open = shift;
+ my $line_nr = shift;
+ my $state = shift;
+ my $style_stack = shift;
+
+ my $do_quotes = 0;
+ my $use_attribute = 0;
+ my $use_begin_end = 0;
+ if (ref($style) eq 'HASH')
+ {
+ #print STDERR "GPL_STYLE $command\n";
+ #print STDERR " @$args\n";
+ $do_quotes = $style->{'quote'};
+ if ((@{$style->{'args'}} == 1) and defined($style->{'attribute'}))
+ {
+ $style = $style->{'attribute'};
+ $use_attribute = 1;
+ $text = $args->[0];
+ }
+ elsif (defined($style->{'function'}))
+ {
+ $text = &{$style->{'function'}}($command, $args, $style_stack, $state, $line_nr);
+ }
+ }
+ else
+ {
+ if ($style =~ s/^\"//)
+ { # add quotes
+ $do_quotes = 1;
+ }
+ if ($style =~ s/^\&//)
+ { # custom
+ $style = 'Texi2HTML::Config::' . $style;
+ eval "\$text = &$style(\$text, \$command, \$style_stack)";
+ }
+ elsif ($style ne '')
+ {
+ $use_attribute = 1;
+ }
+ else
+ { # no style
+ }
+ }
+ if ($use_attribute)
+ { # good style
+ my $attribute_text = '';
+ if ($style =~ /^(\w+)(\s+.*)/)
+ {
+ $style = $1;
+ $attribute_text = $2;
+ }
+# $text = "<${style}$attribute_text>$text</$style>" ;
+ $text = "<${style}$attribute_text>" . "$text" if (!$no_open);
+ $text .= "</$style>" if (!$no_close);
+ if ($do_quotes)
+ {
+ $text = $OPEN_QUOTE_SYMBOL . "$text" if (!$no_open);
+ $text .= $CLOSE_QUOTE_SYMBOL if (!$no_close);
+ }
+ }
+ if (ref($style) eq 'HASH')
+ {
+ if (defined($style->{'begin'}) and !$no_open)
+ {
+ $text = $style->{'begin'} . $text;
+ }
+ if (defined($style->{'end'}) and !$no_close)
+ {
+ $text = $text . $style->{'end'};
+ }
+ }
+ if ($do_quotes and !$use_attribute)
+ {
+ $text = $OPEN_QUOTE_SYMBOL . "$text" if (!$no_open);
+ $text .= $CLOSE_QUOTE_SYMBOL if (!$no_close);
+ }
+ return $text;
+}
+
+sub T2H_GPL_format($$$)
+{
+ my $tag = shift;
+ my $element = shift;
+ my $text = shift;
+ return '' if (!defined($element) or ($text !~ /\S/));
+ return $text if ($element eq '');
+ my $attribute_text = '';
+ if ($element =~ /^(\w+)(\s+.*)/)
+ {
+ $element = $1;
+ $attribute_text = $2;
+ }
+ return "<${element}$attribute_text>\n" . $text. "</$element>\n";
+}
+
+# leave this within comments, and keep the require statement
+# This way, you can directly run texi2html.pl, if
+# $ENV{T2H_HOME}/texi2html.init exists.
+
+# @INIT@
+# -*-perl-*-
+######################################################################
+# File: texi2html.init
+#
+# Default values for command-line arguments and for various customizable
+# procedures are set in this file.
+#
+# A copy of this file is pasted into the beginning of texi2html by
+# running './configure'.
+#
+# Copy this file, rename it and make changes to it, if you like.
+# Afterwards, load the file with command-line
+# option -init-file <your_init_file>
+#
+# $Id: texi2html.init,v 1.116 2007/05/07 22:56:02 pertusus Exp $
+
+######################################################################
+# The following variables can also be set by command-line options
+#
+#
+# The default values are set in this file, texi2html.init and the content
+# of this file is included at the beginning of the texi2html script file.
+# Those values may be overrided by values set in $sysconfdir/texi2htmlrc
+# and then by values set in $HOME/texi2htmlrc.
+#
+# command line switches may override these values, and values set in files
+# specified by -init-file are also taken into account.
+# values set in these files overwrite values set by the command-line
+# options appearing before -init-file and might still be overwritten by
+# command-line arguments following the -init-file option.
+
+# -debug
+# The integer value specifies what kind of debugging output is generated.
+$DEBUG = 0;
+
+# -doctype
+# The value is the 'SystemLiteral' which identifies the canonical DTD
+# for the document.
+# Definition: The SystemLiteral is called the entity's system
+# identifier. It is a URI, which may be used to retrieve the entity.
+# See http://www.xml.com/axml/target.html#NT-ExternalID
+$DOCTYPE = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">';
+
+# -frameset-doctype
+# When frames are used, this SystemLiteral identifies the DTD used for
+# the file containing the frame description.
+$FRAMESET_DOCTYPE = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html401/frameset.dtd">';
+
+# -test
+# If this value is true, some variables which should be dynamically generated
+# (the date, the user running texi2html, the version of texi2html) are set to
+# fix and given values. This is usefull in case the resulting manual is
+# compared with a reference. For example this is used in the tests of test.sh.
+$TEST = 0;
+
+# -dump-texi
+# This value is usefull for debugging purposes. The result of the first pass is
+# put in <document name>.passtexi, the result of the second pass is put in
+# <document name>.passfirst.
+$DUMP_TEXI = 0;
+
+# -expand
+# the @EXPAND array contains the expanded section names.
+@EXPAND = ('html');
+
+# -invisible
+# This seems obsolete and is not used anywhere.
+# This was a workaround for a known bug of many WWW browsers, including
+# netscape. This was used to create invisible destination in anchors.
+$INVISIBLE_MARK = '';
+# $INVISIBLE_MARK = '&#160;';
+
+# -iso
+# if this value is true, ISO8859 characters are used for special symbols
+# (like copyright, etc).
+$USE_ISO = 1;
+
+# -I
+# add a directory to the list of directories where @include files are
+# searched for (besides the directory of the file). additional '-I'
+# args are appended to this list.
+# (APA: Don't implicitely search ., to conform with the docs!)
+# my @INCLUDE_DIRS = (".");
+@INCLUDE_DIRS = ();
+
+# -P
+# prepend a directory to the list of directories where @include files are
+# searched for before the directory of the file. additional '-P'
+# args are prepended to this list.
+@PREPEND_DIRS = ();
+
+# --conf-dir
+# append to the files searched for init files.
+@CONF_DIRS = ();
+
+# -top-file
+# This file name is used for the top-level file.
+# The extension is set appropriately, if necessary.
+# If empty, <basename of document>.html is used.
+# Typically, you would set this to "index.html".
+$TOP_FILE = '';
+
+# -toc-file
+# This file name is used for the table of contents. The
+# extension is set appropriately, if necessary.
+# If empty, <basename of document>_toc.html is used.
+$TOC_FILE = '';
+
+# -frames
+# if the value is true, HTML 4.0 "frames" are used.
+# A file describing the frame layout is generated, together with a file
+# with the short table of contents.
+$FRAMES = 0;
+
+# -menu | -nomenu
+# if the value is true the Texinfo menus are shown.
+$SHOW_MENU = 1;
+
+# -number | -nonumber
+# if this is set the sections are numbered, and section names and numbers
+# are used in references and menus (instead of node names).
+$NUMBER_SECTIONS = 1;
+
+# -use-nodes
+# if this is set the nodes are used as sectionning elements.
+# Otherwise the nodes are incorporated in sections.
+$USE_NODES = 0;
+
+# -node-files
+# if this is set one file per node is generated, which can be a target for
+# cross manual references.
+$NODE_FILES = 0;
+
+# -split section|chapter|node|none
+# if $SPLIT is set to 'section' (resp. 'chapter') one html file per section
+# (resp. chapter) is generated. If $SPLIT is set to 'node' one html file per
+# node or sectionning element is generated. In all these cases separate pages
+# for Top, Table of content (Toc), Overview and About are generated.
+# Otherwise a monolithic html file that contains the whole document is
+# created.
+#$SPLIT = 'section';
+$SPLIT = '';
+
+# -sec-nav|-nosec-nav
+# if this is set then navigation panels are printed at the beginning of each
+# section.
+# If the document is split at nodes then navigation panels are
+# printed at the end if there were more than $WORDS_IN_PAGE words on page.
+#
+# If the document is split at sections this is ignored.
+#
+# This is most useful if you do not want to have section navigation
+# with -split chapter. There will be chapter navigation panel at the
+# beginning and at the end of chapters anyway.
+$SECTION_NAVIGATION = 1;
+
+# -separated-footnotes
+# if this is set footnotes are on a separated page. Otherwise they are at
+# the end of each file (if the document is split).
+$SEPARATED_FOOTNOTES = 1;
+
+# -toc-links
+# if this is set, links from headings to toc entries are created.
+$TOC_LINKS = 0;
+
+# -subdir
+# If this is set, then put result files into the specified directory.
+# If not set, then result files are put into the current directory.
+#$SUBDIR = 'html';
+$SUBDIR = '';
+
+# -short-extn
+# If this is set, then all HTML files will have extension ".htm" instead of
+# ".html". This is helpful when shipping the document to DOS-based systems.
+$SHORTEXTN = 0;
+
+# -prefix
+# This set the output file prefix, prepended to all .html, .gif and .pl files.
+# By default, this is the basename of the document.
+$PREFIX = '';
+
+# -o filename
+# If this is set a monolithic document is outputted into $filename.
+$OUT = '';
+
+# -no-validate
+# suppress node cross-reference validation
+$NOVALIDATE = 0;
+
+# -short-ref
+# if this is set cross-references are given without section numbers.
+$SHORT_REF = '';
+
+# -idx-sum
+# if value is set, then for each @printindex <index name>
+# <document name>_<index name>.idx is created which contains lines of the form
+# key ref sorted alphabetically (case matters).
+$IDX_SUMMARY = 0;
+
+# -def-table
+# If this is set a table construction for @def.... instead of definition
+# lists.
+# (New Option: 27.07.2000 Karl Heinz Marbaise)
+$DEF_TABLE = 0;
+
+# -verbose
+# if this is set chatter about what we are doing.
+$VERBOSE = '';
+
+# -lang
+# use &$I('my string') if you want to have translations of 'my string'
+# and provide the translations in $LANGUAGES->{$LANG} with 'my string'
+# as key.
+# To add a new language use ISO 639 language codes (see e.g. perl module
+# Locale-Codes-1.02 for definitions). Supply translations in the
+# $LANGUAGES hash and put it in a file with $LANG as name in an i18n
+# directory.
+# Default's to 'en' if not set or no @documentlanguage is specified.
+$LANG = 'en';
+
+# -ignore-preamble-text
+# If this is set the text before @node and sectionning commands is ignored.
+$IGNORE_PREAMBLE_TEXT = 0;
+
+# -html-xref-prefix
+# base directory for external manuals.
+#$EXTERNAL_DIR = '../';
+$EXTERNAL_DIR = undef;
+
+# -l2h
+# if this is set, latex2html is used for generation of math content.
+$L2H = '';
+
+# -css-include
+# All the specified css files are used. More precisely the @import sections
+# are added to the beginning of the CSS_LINES the remaining is added at
+# the end of the CSS_LINES (after the css rules generated by texi2html).
+# cf texinfo manual for more info.
+# - means STDIN
+@CSS_FILES = ();
+
+######################
+# The following options are only relevant if $L2H is set
+#
+# -l2h-l2h
+# name/location of latex2html program
+$L2H_L2H = "latex2html";
+
+# -l2h-skip
+# If this is set the actual call to latex2html is skipped. The previously
+# generated content is reused, instead.
+$L2H_SKIP = '';
+
+# -l2h-tmp
+# If this is set l2h uses the specified directory for temporary files. The path
+# leading to this directory may not contain a dot (i.e., a ".");
+# otherwise, l2h will fail.
+$L2H_TMP = '';
+
+# -l2h-file
+# If set, l2h uses the file as latex2html init file
+$L2H_FILE = 'l2h.init';
+
+# -l2h-clean
+# if this is set the intermediate files generated by texi2html in relation with
+# latex2html are cleaned (they all have the prefix <document name>_l2h_).
+$L2H_CLEAN = 1;
+
+##############################################################################
+#
+# The following can only be set in the init file
+#
+##############################################################################
+
+# If true do table of contents even if there is no @content
+$DO_CONTENTS = 0;
+
+# If true do short table of contents even if there is no @shortcontent
+$DO_SCONTENTS = 0;
+
+# if set, output the contents where the command is located
+$INLINE_CONTENTS = 1;
+
+# if this variable is true, numeric entities are used when there is no
+# corresponding textual entity.
+$USE_NUMERIC_ENTITY = 1;
+
+# if set, then use node names in menu entries, instead of section names
+$NODE_NAME_IN_MENU = 0;
+
+# new style for crossrefs
+$NEW_CROSSREF_STYLE = 1;
+
+# transliterate node names for external refs (and internal if NODE_FILES)
+$TRANSLITERATE_NODE = 1;
+
+# if set and menu entry equals menu description, then do not print
+# menu description.
+# Likewise, if node name equals entry name, do not print entry name.
+$AVOID_MENU_REDUNDANCY = 1;
+
+# if set, center @image by default
+# otherwise, do not center by default
+# Deprecated and not used anymore
+$CENTER_IMAGE = 1;
+
+# used as identation for block enclosing command @example, etc
+# If not empty, must be enclosed in <td></td>
+$EXAMPLE_INDENT_CELL = '<td>&nbsp;</td>';
+
+# same as above, only for @small
+$SMALL_EXAMPLE_INDENT_CELL = '<td>&nbsp;</td>';
+
+# font size for @small
+$SMALL_FONT_SIZE = '-1';
+
+# horizontal rules
+$SMALL_RULE = '<hr size="1">';
+$DEFAULT_RULE = '<hr>';
+$MIDDLE_RULE = '<hr size="2">';
+$BIG_RULE = '<hr size="6">';
+
+# if non-empty, and no @..heading appeared in Top node, then
+# use this as header for top node/section, otherwise use value of
+# @settitle or @shorttitle (in that order)
+$TOP_HEADING = '';
+
+# if set, use this chapter for 'Index' button, else
+# use first chapter with @printindex
+$INDEX_CHAPTER = '';
+
+# if set and $SPLIT is set, then split index pages at the next letter
+# after they have more than that many entries
+$SPLIT_INDEX = 100;
+
+# symbol put at the beginning of nodes entry in menu (and optionnaly of
+# unnumbered in menus, see next variable)
+$MENU_SYMBOL = '&bull;';
+#$MENU_SYMBOL = '*';
+
+$SIMPLE_MENU = 0;
+
+$OPEN_QUOTE_SYMBOL = "\`";
+$CLOSE_QUOTE_SYMBOL = "'";
+
+# if true put a $MENU_SYMBOL before unnumbered in menus
+$UNNUMBERED_SYMBOL_IN_MENU = 0;
+
+# extension for nodes files when NODE_FILES is true
+$NODE_FILE_EXTENSION = "html";
+
+# extension
+$EXTENSION = "html";
+
+# file name used for Top node when NODE_FILES is true
+$TOP_NODE_FILE = "index";
+
+# node name used for Top node when automatic node directions are used
+$TOP_NODE_UP = '(dir)';
+
+# this controls the pre style for menus
+$MENU_PRE_STYLE = 'font-family: serif';
+
+# This controls the ul style for toc
+$TOC_LIST_STYLE = 'list-style: none';
+$TOC_LIST_ATTRIBUTE = ' class="toc"';
+
+# These lines are inserted before and after the shortcontents
+$BEFORE_OVERVIEW = "<div class=\"shortcontents\">\n";
+$AFTER_OVERVIEW = "</div>\n";
+
+# These lines are inserted before and after the contents
+$BEFORE_TOC_LINES = "<div class=\"contents\">\n";
+$AFTER_TOC_LINES = "</div>\n";
+
+# if set (e.g., to index.html) replace hrefs to this file
+# (i.e., to index.html) by ./
+# Obsolete. Worked around a bug that is fixed now.
+$HREF_DIR_INSTEAD_FILE = '';
+
+# text inserted after <body ...>
+$AFTER_BODY_OPEN = '';
+
+# text inserted before </body>, this will be automatically inside <p></p>
+$PRE_BODY_CLOSE = '';
+
+# this is added inside <head></head> after <title> and some <meta name>
+# stuff, it can be used for eg. <style>, <script>, <meta> etc. tags.
+$EXTRA_HEAD = '';
+
+# Specifies the minimum page length required before a navigation panel
+# is placed at the bottom of a page
+# FIXME this is not true:
+# THIS_WORDS_IN_PAGE holds number of words of current page
+$WORDS_IN_PAGE = 300;
+
+# if this is set a vertical navigation panel is used.
+$VERTICAL_HEAD_NAVIGATION = 0;
+
+# html version for latex2html
+$L2H_HTML_VERSION = "4.0";
+
+# use the information given by menus to complete the node directions
+$USE_MENU_DIRECTIONS = 1;
+
+# specify in this array which "buttons" should appear in which order
+# in the navigation panel for sections; use ' ' for empty buttons (space)
+@SECTION_BUTTONS =
+ (
+ 'Back', 'Forward', ' ', 'FastBack', 'Up', 'FastForward',
+ ' ', ' ', ' ', ' ',
+ 'Top', 'Contents', 'Index', 'About',
+ );
+
+# buttons for misc stuff
+@MISC_BUTTONS = ('Top', 'Contents', 'Index', 'About');
+
+# buttons for chapter file footers
+# (and headers but only if SECTION_NAVIGATION is false)
+@CHAPTER_BUTTONS =
+ (
+ 'FastBack', 'FastForward', ' ',
+ ' ', ' ', ' ', ' ',
+ 'Top', 'Contents', 'Index', 'About',
+ );
+
+# buttons for section file footers
+@SECTION_FOOTER_BUTTONS =
+ (
+ 'Back', 'Forward', ' ', 'FastBack', 'Up', 'FastForward'
+ );
+
+@NODE_FOOTER_BUTTONS =
+ (
+ 'Back', 'Forward', ' ', 'FastBack', 'Up', 'FastForward',
+ ' ', ' ', ' ', ' ',
+ 'Top', 'Contents', 'Index', 'About',
+# 'Back', 'Forward', ' ', 'FastBack', 'Up', 'FastForward'
+ );
+
+$ICONS = 0;
+
+# insert here name of icon images for buttons
+# Icons are used, if $ICONS and resp. value are set
+%ACTIVE_ICONS =
+ (
+ 'Top', '',
+ 'Contents', '',
+ 'Overview', '',
+ 'Index', '',
+ 'This', '',
+ 'Back', '',
+ 'FastBack', '',
+ 'Prev', '',
+ 'Up', '',
+ 'Next', '',
+ 'NodeUp', '',
+ 'NodeNext', '',
+ 'NodePrev', '',
+ 'Following', '',
+ 'Forward', '',
+ 'FastForward', '',
+ 'About' , '',
+ 'First', '',
+ 'Last', '',
+ ' ', ''
+ );
+
+# insert here name of icon images for these, if button is inactive
+%PASSIVE_ICONS =
+ (
+ 'Top', '',
+ 'Contents', '',
+ 'Overview', '',
+ 'Index', '',
+ 'This', '',
+ 'Back', '',
+ 'FastBack', '',
+ 'Prev', '',
+ 'Up', '',
+ 'Next', '',
+ 'NodeUp', '',
+ 'NodeNext', '',
+ 'NodePrev', '',
+ 'Following', '',
+ 'Forward', '',
+ 'FastForward', '',
+ 'About', '',
+ 'First', '',
+ 'Last', '',
+ );
+
+@IMAGE_EXTENSIONS = ('png','jpg','jpeg','gif');
+
+$init_out = \&t2h_default_init_out;
+$finish_out = \&t2h_default_finish_out;
+
+# We have to do this dynamically because of internationalization and because
+# in body $LANG could be used.
+sub t2h_default_init_out()
+{
+# Names of text as alternative for icons
+# FIXME maybe get those in simple_format?
+ %NAVIGATION_TEXT =
+ (
+ 'Top', &$I('Top'),
+ 'Contents', &$I('Contents'),
+ 'Overview', &$I('Overview'),
+ 'Index', &$I('Index'),
+ ' ', ' &nbsp; ',
+ 'This', &$I('current'),
+ 'Back', ' &lt; ',
+ 'FastBack', ' &lt;&lt; ',
+ 'Prev', &$I('Prev'),
+ 'Up', &$I(' Up '),
+ 'Next', &$I('Next'),
+ 'NodeUp', &$I('Node up'),
+ 'NodeNext', &$I('Next node'),
+ 'NodePrev', &$I('Previous node'),
+ 'Following', &$I('Following node'),
+ 'Forward', ' &gt; ',
+ 'FastForward', ' &gt;&gt; ',
+ 'About', ' ? ',
+ 'First', ' |&lt; ',
+ 'Last', ' &gt;| '
+ );
+
+ %BUTTONS_GOTO =
+ (
+ 'Top', &$I('Cover (top) of document'),
+ 'Contents', &$I('Table of contents'),
+ 'Overview', &$I('Short table of contents'),
+ 'Index', &$I('Index'),
+ 'This', &$I('Current section'),
+ 'Back', &$I('Previous section in reading order'),
+ 'FastBack', &$I('Beginning of this chapter or previous chapter'),
+ 'Prev', &$I('Previous section on same level'),
+ 'Up', &$I('Up section'),
+ 'Next', &$I('Next section on same level'),
+ 'NodeUp', &$I('Up node'),
+ 'NodeNext', &$I('Next node'),
+ 'NodePrev', &$I('Previous node'),
+ 'Following', &$I('Node following in node reading order'),
+ 'Forward', &$I('Next section in reading order'),
+ 'FastForward', &$I('Next chapter'),
+ 'About' , &$I('About (help)'),
+ 'First', &$I('First section in reading order'),
+ 'Last', &$I('Last section in reading order'),
+ );
+
+ %BUTTONS_NAME =
+ (
+ 'Top', &$I('Top'),
+ 'Contents', &$I('Contents'),
+ 'Overview', &$I('Overview'),
+ 'Index', &$I('Index'),
+ ' ', ' ',
+ 'This', &$I('This'),
+ 'Back', &$I('Back'),
+ 'FastBack', &$I('FastBack'),
+ 'Prev', &$I('Prev'),
+ 'Up', &$I('Up'),
+ 'Next', &$I('Next'),
+ 'NodeUp', &$I('NodeUp'),
+ 'NodeNext', &$I('NodeNext'),
+ 'NodePrev', &$I('NodePrev'),
+ 'Following', &$I('Following'),
+ 'Forward', &$I('Forward'),
+ 'FastForward', &$I('FastForward'),
+ 'About', &$I('About'),
+ 'First', &$I('First'),
+ 'Last', &$I('Last')
+ );
+
+ # Set the default body text, inserted between <body ... >
+ $BODYTEXT = 'lang="' . $LANG . '" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"' unless (defined($BODYTEXT));
+ if (!defined($EXTERNAL_CROSSREF_SPLIT))
+ {
+ if ($SPLIT)
+ {
+ $EXTERNAL_CROSSREF_SPLIT = 1;
+ }
+ else
+ {
+ $EXTERNAL_CROSSREF_SPLIT = 0;
+ }
+ }
+
+ $ENCODING_NAME = $ENCODING if (!defined($ENCODING_NAME) and
+ defined($ENCODING));
+
+ if (!defined($OUT_ENCODING) and (defined($ENCODING_NAME)))
+ {
+ $OUT_ENCODING = main::encoding_alias ($ENCODING_NAME);
+ $OUT_ENCODING = $ENCODING_NAME if (!defined($OUT_ENCODING));
+ }
+ if (!defined($OUT_ENCODING) and (defined($IN_ENCODING)))
+ {
+ $OUT_ENCODING = $IN_ENCODING;
+ }
+ if (!defined($OUT_ENCODING) and (defined($DOCUMENT_ENCODING)))
+ {
+ $OUT_ENCODING = main::encoding_alias ($DOCUMENT_ENCODING);
+ $OUT_ENCODING = $DOCUMENT_ENCODING if (!defined($OUT_ENCODING));
+ }
+
+ if (!defined($ENCODING_NAME))
+ {
+ if (defined($OUT_ENCODING) and defined($perl_charset_to_html{$OUT_ENCODING}))
+ {
+ $ENCODING_NAME = $perl_charset_to_html{$OUT_ENCODING};
+ }
+ elsif (defined($IN_ENCODING) and defined($perl_charset_to_html{$IN_ENCODING}))
+ {
+ $ENCODING_NAME = $perl_charset_to_html{$IN_ENCODING};
+ }
+ elsif (defined($DOCUMENT_ENCODING) and defined($perl_charset_to_html{$DOCUMENT_ENCODING}))
+ {
+ $ENCODING_NAME = $perl_charset_to_html{$DOCUMENT_ENCODING};
+ }
+ elsif (defined($OUT_ENCODING))
+ {
+ $ENCODING_NAME = $OUT_ENCODING;
+ }
+ elsif (defined($IN_ENCODING))
+ {
+ $ENCODING_NAME = $IN_ENCODING;
+ }
+ elsif (defined($DOCUMENT_ENCODING))
+ {
+ $ENCODING_NAME = $DOCUMENT_ENCODING;
+ }
+ elsif (defined($perl_charset_to_html{$DEFAULT_ENCODING}))
+ {
+ $ENCODING_NAME = $perl_charset_to_html{$DEFAULT_ENCODING};
+ }
+ else
+ {
+ $ENCODING_NAME = 'us-ascii';
+ }
+ }
+ my $out_encoding = $OUT_ENCODING;
+ $out_encoding = 'UNDEF' if (!defined($out_encoding));
+ my $in_encoding = $IN_ENCODING;
+ $in_encoding = 'UNDEF' if (!defined($in_encoding));
+ my $document_encoding = $DOCUMENT_ENCODING;
+ $document_encoding = 'UNDEF' if (!defined($document_encoding));
+ print STDERR "# Encodings: doc $document_encoding, in $in_encoding out $out_encoding, name $ENCODING_NAME\n" if ($VERBOSE);
+
+ if ($SIMPLE_MENU and !defined($complex_format_map->{'menu'}))
+ {
+ $complex_format_map->{'menu'} = { 'begin' => q{''} , 'end' => q{''},
+ 'pre_style' => "$MENU_PRE_STYLE", 'class' => 'menu-preformatted' };
+ }
+
+ return $OUT_ENCODING;
+};
+
+sub t2h_default_finish_out()
+{
+}
+
+#######################################################################
+#
+# Values guessed if not set here, set in init_out
+#
+#######################################################################
+
+$BODYTEXT = undef;
+
+# default used in init_out for the setting of the ENCODING_NAME variable
+$DEFAULT_ENCODING = 'utf8';
+
+# In file encoding. The @documentencoding overrides that variable.
+$DOCUMENT_ENCODING = undef;
+
+# In file encoding, understandable by perl. Set according to DOCUMENT_ENCODING
+$IN_ENCODING = undef;
+
+# Formatted document encoding name. If undef, set in init_out based on
+# $OUT_ENCODING or $DOCUMENT_ENCODING if they are defined
+$ENCODING_NAME = undef;
+
+# Out files encoding, understandable by perl. If undef, set in init_out
+# using $ENCODING_NAME or $IN_ENCODING if they are defined
+$OUT_ENCODING = undef;
+
+# if undef set to @documentdescription. If there is no @documentdescription,
+# set in page_head
+$DOCUMENT_DESCRIPTION = undef;
+
+# if undef set 1 if SPLIT, to 0 otherwise
+$EXTERNAL_CROSSREF_SPLIT = undef;
+
+$USER = undef;
+$DATE = undef;
+
+
+########################################################################
+# Control of Page layout:
+# You can make changes of the Page layout at two levels:
+# 1.) For small changes, it is often enough to change the value of
+# some global string/hash/array variables
+# 2.) For larger changes, reimplement one of the T2H_DEFAULT_<fnc>* routines,
+# give them another name, and assign them to the respective
+# $<fnc> variable.
+
+# As a general interface, the hashes Texi2HTML::HREF, Texi2HTML::NAME, Texi2HTML::NODE, Texi2HTML::NO_TEXI, hold
+# href, html-name, node-name, name after removal of texi commands of
+# This -- current section (resp. html page)
+# Top -- top element
+# Contents -- Table of contents element
+# Overview -- Short table of contents element
+# Index -- Index page element
+# About -- page which explain "navigation buttons" element
+# First -- first node element
+# Last -- last node element
+#
+# Whether or not the following hash values are set, depends on the context
+# (all values are w.r.t. 'This' section)
+# Next -- next element of texinfo
+# Prev -- previous element of texinfo
+# NodeUp -- up node of texinfo
+# Following -- following node in node reading order, taking menu into account
+# Forward -- next node in reading order
+# Back -- previous node in reading order
+# Up -- parent given by sectionning commands
+# FastForward -- if leave node, up and next, else next node
+# FastBackward-- if leave node, up and prev, else prev node
+#
+# Furthermore, the following global variabels are set:
+# $Texi2HTML::THISDOC{title} -- title as set by @setttile
+# $Texi2HTML::THISDOC{title_no_texi} -- title without texi (without html elements)
+# $Texi2HTML::THISDOC{title_texi} -- title with texinfo @-commands
+# $Texi2HTML::THISDOC{fulltitle} -- full title as set by @title...
+# $Texi2HTML::THISDOC{subtitle} -- subtitle as set by @subtitle
+# $Texi2HTML::THISDOC{author} -- author as set by @author
+# $Texi2HTML::THISDOC{copying} -- text of @copying and @end copying in comment
+#
+# $Texi2HTML::THISDOC{program} -- name and version of texi2html
+# $Texi2HTML::THISDOC{program_homepage} -- homepage for texi2html
+# $Texi2HTML::THISDOC{program_authors} -- authors of texi2html
+# $Texi2HTML::THISDOC{today} -- date formatted with pretty_date
+# $Texi2HTML::THISDOC{toc_file} -- table of contents file
+# $Texi2HTML::THISDOC{file_base_name} -- base name of the texinfo manual file
+# $Texi2HTML::THISDOC{destination_directory}
+ # -- directory for the resulting files
+# $Texi2HTML::THISDOC{user} -- user running the script
+# $Texi2HTML::THISDOC{css_import_lines} -- ref on @import lines in css files
+# $Texi2HTML::THISDOC{css_lines} -- ref on css rules lines
+# other $Texi2HTML::THISDOC keys corresponds with texinfo commands, the value
+# being the command arg, for the following commands:
+# kbdinputstyle, paragraphindent, setchapternewpage, headings, footnotestyle,
+# exampleindent, firstparagraphindent, everyheading, everyfooting,
+# evenheading, evenfooting, oddheading, oddfooting
+#
+# and pointer to arrays of lines which need to be printed by main::print_lines
+# $Texi2HTML::THIS_SECTION -- lines of 'This' section
+# $Texi2HTML::THIS_HEADER -- lines preceding navigation panel of 'This' section
+# $Texi2HTML::OVERVIEW -- lines of short table of contents
+# $Texi2HTML::TOC_LINES -- lines of table of contents
+# $Texi2HTML::TITLEPAGE -- lines of title page
+#
+# $Texi2HTML::THIS_ELEMENT holds the element reference.
+
+#
+# There are the following subs which control the layout:
+#
+$print_section = \&T2H_DEFAULT_print_section;
+$end_section = \&T2H_DEFAULT_end_section;
+$one_section = \&T2H_DEFAULT_one_section;
+$print_Top_header = \&T2H_DEFAULT_print_Top_header;
+$print_Top_footer = \&T2H_DEFAULT_print_Top_footer;
+$print_Top = \&T2H_DEFAULT_print_Top;
+$print_Toc = \&T2H_DEFAULT_print_Toc;
+$print_Overview = \&T2H_DEFAULT_print_Overview;
+$print_Footnotes = \&T2H_DEFAULT_print_Footnotes;
+$print_About = \&T2H_DEFAULT_print_About;
+$print_misc_header = \&T2H_DEFAULT_print_misc_header;
+$print_misc_footer = \&T2H_DEFAULT_print_misc_footer;
+$print_misc = \&T2H_DEFAULT_print_misc;
+$print_section_footer = \&T2H_DEFAULT_print_section_footer;
+$print_chapter_header = \&T2H_DEFAULT_print_chapter_header;
+$print_section_header = \&T2H_DEFAULT_print_section_header;
+$print_chapter_footer = \&T2H_DEFAULT_print_chapter_footer;
+$print_page_head = \&T2H_DEFAULT_print_page_head;
+$print_page_foot = \&T2H_DEFAULT_print_page_foot;
+$print_head_navigation = \&T2H_DEFAULT_print_head_navigation;
+$print_foot_navigation = \&T2H_DEFAULT_print_foot_navigation;
+$button_icon_img = \&T2H_DEFAULT_button_icon_img;
+$print_navigation = \&T2H_DEFAULT_print_navigation;
+$about_body = \&T2H_DEFAULT_about_body;
+$print_frame = \&T2H_DEFAULT_print_frame;
+$print_toc_frame = \&T2H_DEFAULT_print_toc_frame;
+#$toc_body = \&T2H_DEFAULT_toc_body;
+$titlepage = \&T2H_DEFAULT_titlepage;
+$css_lines = \&T2H_DEFAULT_css_lines;
+$print_redirection_page = \&T2H_DEFAULT_print_redirection_page;
+$node_file_name = \&T2H_DEFAULT_node_file_name;
+$inline_contents = \&T2H_DEFAULT_inline_contents;
+
+########################################################################
+# Layout for html for every sections
+#
+sub T2H_DEFAULT_print_section
+{
+ my $fh = shift;
+ my $first_in_page = shift;
+ my $previous_is_top = shift;
+ my $buttons = \@SECTION_BUTTONS;
+
+ if ($first_in_page and $SECTION_NAVIGATION)
+ {
+ &$print_head_navigation($fh, $buttons);
+ }
+ else
+ { # got to do this here, as it isn't done in print_head_navigation
+ main::print_lines($fh, $Texi2HTML::THIS_HEADER);
+ &$print_navigation($fh, $buttons) if ($SECTION_NAVIGATION);
+ }
+ my $nw = main::print_lines($fh);
+ if (defined $SPLIT
+ and (($SPLIT eq 'node') && $SECTION_NAVIGATION))
+ {
+ &$print_foot_navigation($fh);
+ print $fh "$SMALL_RULE\n";
+ &$print_navigation($fh, \@NODE_FOOTER_BUTTONS) if (!defined($WORDS_IN_PAGE) or (defined ($nw)
+ and $nw >= $WORDS_IN_PAGE));
+ }
+}
+
+sub T2H_DEFAULT_one_section($)
+{
+ my $fh = shift;
+ main::print_lines($fh, $Texi2HTML::THIS_HEADER);
+ main::print_lines($fh);
+ print $fh "$SMALL_RULE\n";
+ &$print_foot_navigation($fh);
+ &$print_page_foot($fh);
+}
+
+###################################################################
+# Layout of top-page I recommend that you use @ifnothtml, @ifhtml,
+# @html within the Top texinfo node to specify content of top-level
+# page.
+#
+# If you enclose everything in @ifnothtml, then title, subtitle,
+# author and overview is printed
+# Texi2HTML::HREF of Next, Prev, Up, Forward, Back are not defined
+# if $T2H_SPLIT then Top page is in its own html file
+sub T2H_DEFAULT_print_Top_header($$)
+{
+ my $fh = shift;
+ my $do_page_head = shift;
+ &$print_page_head($fh) if ($do_page_head);
+}
+sub T2H_DEFAULT_print_Top_footer($$)
+{
+ my $fh = shift;
+ my $end_page = shift;
+ my $buttons = \@MISC_BUTTONS;
+ &$print_foot_navigation($fh);
+ print $fh "$SMALL_RULE\n";
+ if ($end_page)
+ {
+ &$print_navigation($fh, $buttons);
+ &$print_page_foot($fh);
+ }
+}
+sub T2H_DEFAULT_print_Top($$)
+{
+ my $fh = shift;
+ my $has_top_heading = shift;
+
+ # for redefining navigation buttons use:
+ # my $buttons = [...];
+ # as it is, 'Top', 'Contents', 'Index', 'About' are printed
+ my $buttons = \@MISC_BUTTONS;
+ &$print_head_navigation($fh, $buttons) if ($SPLIT or $SECTION_NAVIGATION);
+ my $nw;
+ if (@$Texi2HTML::THIS_SECTION)
+ {
+ # if top-level node has content, then print it with extra header
+ #print $fh "<h1>$Texi2HTML::NAME{Top}</h1>\n"
+ print $fh "<h1 class=\"settitle\">$Texi2HTML::NAME{Top}</h1>\n"
+ unless ($has_top_heading);
+ $nw = main::print_lines($fh, $Texi2HTML::THIS_SECTION);
+ }
+ else
+ {
+ # top-level node is fully enclosed in @ifnothtml
+ # print fulltitle, subtitle, author, Overview or table of contents
+ print $fh $Texi2HTML::TITLEPAGE;
+ if (@{$Texi2HTML::OVERVIEW} and !$Texi2HTML::THISDOC{'setshortcontentsaftertitlepage'})
+ {
+ print $fh '<h2> ' . $Texi2HTML::NAME{'Overview'} . "</h2>\n" . "<blockquote\n";
+ my $nw = main::print_lines($fh, $Texi2HTML::OVERVIEW);
+ print $fh "</blockquote>\n";
+ }
+ elsif (@{$Texi2HTML::TOC_LINES} and !$Texi2HTML::THISDOC{'setcontentsaftertitlepage'})
+ {
+ print $fh '<h1> ' . $Texi2HTML::NAME{'Contents'} . "</h1>\n";
+ my $nw = main::print_lines($fh, $Texi2HTML::TOC_LINES);
+ }
+ }
+}
+
+###################################################################
+# Layout of Toc, Overview, and Footnotes pages
+# By default, we use "normal" layout
+# Texi2HTML::HREF of Next, Prev, Up, Forward, Back, etc are not defined
+# use: my $buttons = [...] to redefine navigation buttons
+sub T2H_DEFAULT_print_Toc
+{
+ return &$print_misc(@_);
+}
+sub T2H_DEFAULT_print_Overview
+{
+ return &$print_misc(@_);
+}
+sub T2H_DEFAULT_print_Footnotes
+{
+ return &$print_misc(@_);
+}
+sub T2H_DEFAULT_print_About
+{
+ # if there is no section navigation and it is not split, the
+ # navigation information is useless
+ return &$print_misc(@_) if ($SPLIT or $SECTION_NAVIGATION);
+}
+
+sub T2H_DEFAULT_print_misc_header
+{
+ my $fh = shift;
+ my $buttons = shift;
+ &$print_page_head($fh) if $SPLIT;
+ &$print_head_navigation($fh, $buttons) if ($SPLIT or $SECTION_NAVIGATION);
+}
+
+sub T2H_DEFAULT_print_misc_footer
+{
+ my $fh = shift;
+ my $buttons = shift;
+ my $nwords = shift;
+ &$print_foot_navigation($fh, $buttons);
+ print $fh "$SMALL_RULE\n";
+ if ($SPLIT)
+ {
+ &$print_navigation($fh, $buttons);# if ($SPLIT ne 'node');
+ &$print_page_foot($fh);
+ }
+}
+
+sub T2H_DEFAULT_print_misc
+{
+ my $fh = shift;
+ my $buttons = \@MISC_BUTTONS;
+ &$print_misc_header($fh, $buttons);
+ print $fh "<h1>$Texi2HTML::NAME{This}</h1>\n";
+ main::print_lines($fh);
+ &$print_misc_footer($fh, $buttons);
+}
+##################################################################
+# section_footer is only called if SPLIT eq 'section'
+# section_footer: after print_section of last section, before print_page_foot
+#
+
+sub T2H_DEFAULT_print_section_footer
+{
+ my $fh = shift;
+ my $buttons = \@SECTION_FOOTER_BUTTONS;
+ &$end_section ($fh, 1);
+ &$print_navigation($fh, $buttons);
+}
+
+###################################################################
+# chapter_header and chapter_footer are only called if
+# SPLIT eq 'chapter'
+# chapter_header: after print_page_head, before print_section
+# chapter_footer: after print_section of last section, before print_page_foot
+#
+# If you want to get rid of navigation stuff after each section,
+# redefine print_section such that it does not call print_navigation,
+# and put print_navigation into print_chapter_header
+sub T2H_DEFAULT_print_chapter_header
+{
+ # nothing to do there, by default, the navigation panel
+ # is the section navigation panel
+ if (! $SECTION_NAVIGATION)
+ { # in this case print_navigation is called here.
+ my $fh = shift;
+ my $buttons = \@CHAPTER_BUTTONS;
+ &$print_head_navigation($fh, $buttons); #do that instead ?
+ #&$print_head_navigation($fh, $buttons); # FIXME VERTICAL_HEAD_NAVIGATION ?
+ print $fh "\n$MIDDLE_RULE\n";
+ }
+}
+
+sub T2H_DEFAULT_print_chapter_footer
+{
+ my $fh = shift;
+ my $buttons = \@CHAPTER_BUTTONS;
+ &$print_foot_navigation($fh);
+ print $fh "$BIG_RULE\n";
+ &$print_navigation($fh, $buttons);
+}
+
+sub T2H_DEFAULT_print_section_header
+{
+ # nothing to do there, by default
+ if (! $SECTION_NAVIGATION)
+ { # in this case print_navigation is called here.
+ my $fh = shift;
+ my $buttons = \@SECTION_BUTTONS;
+ &$print_head_navigation($fh, $buttons);
+ }
+}
+
+###################################################################
+# Layout of standard header and footer
+#
+
+sub T2H_DEFAULT_print_page_head($)
+{
+ my $fh = shift;
+ my $longtitle = "$Texi2HTML::THISDOC{'title_simple_format'}";
+ $longtitle .= ": $Texi2HTML::SIMPLE_TEXT{'This'}" if (defined ($Texi2HTML::SIMPLE_TEXT{'This'}) and ($Texi2HTML::SIMPLE_TEXT{'This'} !~ /^\s*$/) and $SPLIT);
+ my $description = $DOCUMENT_DESCRIPTION;
+ $description = $longtitle if (!defined($description));
+ $description = "<meta name=\"description\" content=\"$description\">" if
+ ($description ne '');
+ my $encoding = '';
+ $encoding = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=$ENCODING_NAME\">" if (defined($ENCODING_NAME) and ($ENCODING_NAME ne ''));
+ print $fh <<EOT;
+$DOCTYPE
+<html>
+$Texi2HTML::THISDOC{'copying'}<!-- Created on $Texi2HTML::THISDOC{today} by $Texi2HTML::THISDOC{program} -->
+<!--
+$Texi2HTML::THISDOC{program_authors}
+-->
+<head>
+<title>$longtitle</title>
+
+$description
+<meta name="keywords" content="$longtitle">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="$Texi2HTML::THISDOC{program}">
+$encoding
+$CSS_LINES
+$EXTRA_HEAD
+</head>
+
+<body $BODYTEXT>
+$AFTER_BODY_OPEN
+EOT
+}
+
+sub program_string()
+{
+ my $user = $Texi2HTML::THISDOC{'user'};
+ my $date = $Texi2HTML::THISDOC{'today'};
+ $user = '' if (!defined($user));
+ $date = '' if (!defined($date));
+ if (($user ne '') and ($date ne ''))
+ {
+ return &$I('This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.', {
+ 'user' => $user, 'date' => $date, 'program_homepage' => $Texi2HTML::THISDOC{'program_homepage'}, 'program' => $Texi2HTML::THISDOC{'program'} });
+ }
+ elsif ($user ne '')
+ {
+ return &$I('This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.', {
+ 'user' => $user, 'program_homepage' => $Texi2HTML::THISDOC{'program_homepage'}, 'program' => $Texi2HTML::THISDOC{'program'} });
+ }
+ elsif ($date ne '')
+ {
+ return &$I('This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.', {
+ 'date' => $date, 'program_homepage' => $Texi2HTML::THISDOC{'program_homepage'}, 'program' => $Texi2HTML::THISDOC{'program'} });
+ }
+ return &$I('This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.', {
+ 'program_homepage' => $Texi2HTML::THISDOC{'program_homepage'}, 'program'
+=> $Texi2HTML::THISDOC{'program'} });
+}
+
+sub T2H_DEFAULT_end_section($$)
+{
+ my $fh = shift;
+ my $end_foot_navigation = shift;
+ &$print_foot_navigation($fh) if ($end_foot_navigation);
+ print $fh "$BIG_RULE\n";
+}
+
+sub T2H_DEFAULT_print_page_foot($)
+{
+ my $fh = shift;
+ my $program_string = program_string();
+ print $fh <<EOT;
+<p>
+ <font size="-1">
+ $program_string
+ </font>
+ <br>
+$PRE_BODY_CLOSE
+</p>
+</body>
+</html>
+EOT
+}
+
+###################################################################
+# Layout of navigation panel
+
+sub T2H_DEFAULT_print_head_navigation($$)
+{
+ my $fh = shift;
+ my $buttons = shift;
+ if ($VERTICAL_HEAD_NAVIGATION)
+ {
+ print $fh <<EOT;
+<table border="0" cellpadding="0" cellspacing="0">
+<tr valign="top">
+<td align="left">
+EOT
+ }
+ main::print_lines($fh, $Texi2HTML::THIS_HEADER);
+ &$print_navigation($fh, $buttons, $VERTICAL_HEAD_NAVIGATION);
+ if ($VERTICAL_HEAD_NAVIGATION)
+ {
+ print $fh <<EOT;
+</td>
+<td align="left">
+EOT
+ }
+ elsif (defined $SPLIT
+ and ($SPLIT eq 'node'))
+ {
+ print $fh "$SMALL_RULE\n";
+ }
+}
+
+sub T2H_DEFAULT_print_foot_navigation
+{
+ my $fh = shift;
+ if ($VERTICAL_HEAD_NAVIGATION)
+ {
+ print $fh <<EOT;
+</td>
+</tr>
+</table>
+EOT
+ }
+}
+
+######################################################################
+# navigation panel
+#
+# how to create IMG tag
+sub T2H_DEFAULT_button_icon_img
+{
+ my $button = shift;
+ my $icon = shift;
+ my $name = shift;
+ return '' if (!defined($icon));
+ $button = "" if (!defined ($button));
+ $name = '' if (!defined($name));
+ my $alt = '';
+ if ($name ne '')
+ {
+ if ($button ne '')
+ {
+ $alt = "$button: $name";
+ }
+ else
+ {
+ $alt = $name;
+ }
+ }
+ else
+ {
+ $alt = $button;
+ }
+ return qq{<img src="$icon" border="0" alt="$alt" align="middle">};
+}
+
+sub T2H_DEFAULT_print_navigation
+{
+ my $fh = shift;
+ my $buttons = shift;
+ my $vertical = shift;
+ my $spacing = 1;
+ print $fh '<table cellpadding="', $spacing, '" cellspacing="', $spacing,
+ "\" border=\"0\">\n";
+
+ print $fh "<tr>" unless $vertical;
+ for my $button (@$buttons)
+ {
+ print $fh qq{<tr valign="top" align="left">\n} if $vertical;
+ print $fh qq{<td valign="middle" align="left">};
+
+ if (ref($button) eq 'CODE')
+ {
+ &$button($fh, $vertical);
+ }
+ elsif (ref($button) eq 'SCALAR')
+ {
+ print $fh "$$button" if defined($$button);
+ }
+ elsif (ref($button) eq 'ARRAY')
+ {
+ my $text = $button->[1];
+ my $button_href = $button->[0];
+ # verify that $button_href is simple text and text is a reference
+ if (defined($button_href) and !ref($button_href)
+ and defined($text) and (ref($text) eq 'SCALAR') and defined($$text))
+ { # use given text
+ if ($Texi2HTML::HREF{$button_href})
+ {
+ print $fh "" .
+ &$anchor('',
+ $Texi2HTML::HREF{$button_href},
+ $$text
+ )
+ ;
+ }
+ else
+ {
+ print $fh $$text;
+ }
+ }
+ }
+ elsif ($button eq ' ')
+ { # handle space button
+ print $fh
+ ($ICONS && $ACTIVE_ICONS{' '}) ?
+ &$button_icon_img($BUTTONS_NAME{$button}, $ACTIVE_ICONS{' '}) :
+ $NAVIGATION_TEXT{' '};
+ #next;
+ }
+ elsif ($Texi2HTML::HREF{$button})
+ { # button is active
+ my $btitle = $BUTTONS_GOTO{$button} ?
+ 'title="' . $BUTTONS_GOTO{$button} . '"' : '';
+ if ($ICONS && $ACTIVE_ICONS{$button})
+ { # use icon
+ print $fh '' .
+ &$anchor('',
+ $Texi2HTML::HREF{$button},
+ &$button_icon_img($BUTTONS_NAME{$button},
+ $ACTIVE_ICONS{$button},
+ $Texi2HTML::SIMPLE_TEXT{$button}),
+ $btitle
+ );
+ }
+ else
+ { # use text
+ print $fh
+ '[' .
+ &$anchor('',
+ $Texi2HTML::HREF{$button},
+ $NAVIGATION_TEXT{$button},
+ $btitle
+ ) .
+ ']';
+ }
+ }
+ else
+ { # button is passive
+ print $fh
+ $ICONS && $PASSIVE_ICONS{$button} ?
+ &$button_icon_img($BUTTONS_NAME{$button},
+ $PASSIVE_ICONS{$button},
+ $Texi2HTML::SIMPLE_TEXT{$button}) :
+
+ "[" . $NAVIGATION_TEXT{$button} . "]";
+ }
+ print $fh "</td>\n";
+ print $fh "</tr>\n" if $vertical;
+ }
+ print $fh "</tr>" unless $vertical;
+ print $fh "</table>\n";
+}
+
+######################################################################
+# Frames: this is from "Richard Y. Kim" <ryk@coho.net>
+# Should be improved to be more conforming to other _print* functions
+# FIXME pass toc_file and main_file as args or in $Texi2HTML::THISDOC ?
+
+sub T2H_DEFAULT_print_frame
+{
+ my $fh = shift;
+ my $toc_file = shift;
+ my $main_file = shift;
+ print $fh <<EOT;
+$FRAMESET_DOCTYPE
+<html>
+<head><title>$Texi2HTML::THISDOC{title}</title></head>
+<frameset cols="140,*">
+ <frame name="toc" src="$toc_file">
+ <frame name="main" src="$main_file">
+</frameset>
+</html>
+EOT
+}
+
+sub T2H_DEFAULT_print_toc_frame
+{
+ my $fh = shift;
+ my $stoc_lines = shift;
+ &$print_page_head($fh);
+ print $fh <<EOT;
+<h2>Content</h2>
+EOT
+ print $fh map {s/\bhref=/target="main" href=/; $_;} @$stoc_lines;
+ print $fh "</body></html>\n";
+}
+
+# This subroutine is intended to fill @Texi2HTML::TOC_LINES and
+# @Texi2HTML::OVERVIEW with the table of contents and short table of
+# contents.
+#
+# arguments:
+# ref on an array containing all the elements
+
+# each element is a reference on a hash. The following keys might be of
+# use:
+# 'top': true if this is the top element
+# 'index_page': true if the element is an index page added because of index
+# splitting
+# 'toc_level': level of the element in the table of content. Highest level
+# is 1 for the @top element and for chapters, appendix and so on,
+# 2 for section, unnumberedsec and so on...
+# 'tocid': label used for reference linking to the element in table of
+# contents
+# 'file': the file containing the element, usefull to do href to that file
+# in case the document is split.
+# 'text': text of the element, with section number
+# 'text_nonumber': text of the element, without section number
+
+# Relevant configuration variables are:
+# $NUMBER_SECTIONS
+# $TOC_LIST_ATTRIBUTE: usefull in case a list is used
+# $FRAMES: @Texi2HTML::OVERVIEW is used in one of the frames.
+# $BEFORE_OVERVIEW
+# $AFTER_OVERVIEW
+# $BEFORE_TOC_LINES
+# $AFTER_TOC_LINES
+# $DO_CONTENTS
+# $DO_SCONTENTS
+
+sub T2H_DEFAULT_toc_body($)
+{
+}
+
+sub T2H_DEFAULT_inline_contents($$$)
+{
+ my $fh = shift;
+ my $command = shift;
+ my $element = shift;
+ my $name;
+ my $lines;
+
+ my $result = undef;
+
+ if ($command eq 'contents')
+ {
+ $name = $Texi2HTML::NAME{'Contents'};
+ $lines = $Texi2HTML::TOC_LINES;
+ }
+ else
+ {
+ $name = $Texi2HTML::NAME{'Overview'};
+ $lines = $Texi2HTML::OVERVIEW;
+ }
+ if (@{$lines})
+ {
+ $result = [ "".&$anchor($element->{'id'})."\n",
+ "<h1>$name</h1>\n" ];
+ push @$result, @$lines;
+ }
+
+ return $result;
+}
+
+sub T2H_DEFAULT_css_lines ($$)
+{
+ my $import_lines = shift;
+ my $rule_lines = shift;
+ return if (defined($CSS_LINES) or (!@$rule_lines and !@$import_lines and (! keys(%css_map))));
+ $CSS_LINES = "<style type=\"text/css\">\n<!--\n";
+ $CSS_LINES .= join('',@$import_lines) . "\n" if (@$import_lines);
+ foreach my $css_rule (sort(keys(%css_map)))
+ {
+ next unless ($css_map{$css_rule});
+ $CSS_LINES .= "$css_rule {$css_map{$css_rule}}\n";
+ }
+ $CSS_LINES .= join('',@$rule_lines) . "\n" if (@$rule_lines);
+ $CSS_LINES .= "-->\n</style>\n";
+}
+
+######################################################################
+# About page
+#
+
+# PRE_ABOUT can be a function reference or a scalar.
+# Note that if it is a scalar, T2H_InitGlobals has not been called,
+# and all global variables like $ADDRESS are not available.
+$PRE_ABOUT = sub
+{
+ return ' ' . program_string() . "\n";
+};
+
+# If customizing $AFTER_ABOUT, be sure to put the content inside <p></p>.
+$AFTER_ABOUT = '';
+
+%BUTTONS_EXAMPLE =
+ (
+ 'Top', ' &nbsp; ',
+ 'Contents', ' &nbsp; ',
+ 'Overview', ' &nbsp; ',
+ 'Index', ' &nbsp; ',
+ 'This', '1.2.3',
+ 'Back', '1.2.2',
+ 'FastBack', '1',
+ 'Prev', '1.2.2',
+ 'Up', '1.2',
+ 'Next', '1.2.4',
+ 'NodeUp', '1.2',
+ 'NodeNext', '1.2.4',
+ 'NodePrev', '1.2.2',
+ 'Following', '1.2.4',
+ 'Forward', '1.2.4',
+ 'FastForward', '2',
+ 'About', ' &nbsp; ',
+ 'First', '1.',
+ 'Last', '1.2.4',
+ );
+
+sub T2H_DEFAULT_about_body
+{
+ my $about = "<p>\n";
+ if (ref($PRE_ABOUT) eq 'CODE')
+ {
+ $about .= &$PRE_ABOUT();
+ }
+ else
+ {
+ $about .= $PRE_ABOUT;
+ }
+ $about .= <<EOT;
+</p>
+<p>
+EOT
+ $about .= &$I(' The buttons in the navigation panels have the following meaning:') . "\n";
+ $about .= <<EOT;
+</p>
+<table border="1">
+ <tr>
+EOT
+ $about .= ' <th> ' . &$I('Button') . " </th>\n" .
+' <th> ' . &$I('Name') . " </th>\n" .
+' <th> ' . &$I('Go to') . " </th>\n" .
+' <th> ' . &$I('From 1.2.3 go to') . "</th>\n" . " </tr>\n";
+
+ for my $button (@SECTION_BUTTONS)
+ {
+ next if $button eq ' ' || ref($button) eq 'CODE' || ref($button) eq 'SCALAR' || ref($button) eq 'ARRAY';
+ $about .= " <tr>\n <td align=\"center\">";
+ $about .=
+ ($ICONS && $ACTIVE_ICONS{$button} ?
+ &$button_icon_img($BUTTONS_NAME{$button}, $ACTIVE_ICONS{$button}) :
+ ' [' . $NAVIGATION_TEXT{$button} . '] ');
+ $about .= "</td>\n";
+ $about .= <<EOT;
+ <td align="center">$BUTTONS_NAME{$button}</td>
+ <td>$BUTTONS_GOTO{$button}</td>
+ <td>$BUTTONS_EXAMPLE{$button}</td>
+ </tr>
+EOT
+ }
+
+ $about .= <<EOT;
+</table>
+
+<p>
+EOT
+ $about .= &$I(' where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:') . "\n";
+
+# where the <strong> Example </strong> assumes that the current position
+# is at <strong> Subsubsection One-Two-Three </strong> of a document of
+# the following structure:
+ $about .= <<EOT;
+</p>
+
+<ul>
+EOT
+ $about .= ' <li> 1. ' . &$I('Section One') . "\n" .
+" <ul>\n" .
+' <li>1.1 ' . &$I('Subsection One-One') . "\n";
+ $about .= <<EOT;
+ <ul>
+ <li>...</li>
+ </ul>
+ </li>
+EOT
+ $about .= ' <li>1.2 ' . &$I('Subsection One-Two') . "\n" .
+" <ul>\n" .
+' <li>1.2.1 ' . &$I('Subsubsection One-Two-One') . "</li>\n" .
+' <li>1.2.2 ' . &$I('Subsubsection One-Two-Two') . "</li>\n" .
+' <li>1.2.3 ' . &$I('Subsubsection One-Two-Three') . " &nbsp; &nbsp;\n"
+.
+' <strong>&lt;== ' . &$I('Current Position') . " </strong></li>\n" .
+' <li>1.2.4 ' . &$I('Subsubsection One-Two-Four') . "</li>\n" .
+" </ul>\n" .
+" </li>\n" .
+' <li>1.3 ' . &$I('Subsection One-Three') . "\n";
+ $about .= <<EOT;
+ <ul>
+ <li>...</li>
+ </ul>
+ </li>
+EOT
+ $about .= ' <li>1.4 ' . &$I('Subsection One-Four') . "</li>\n";
+ $about .= <<EOT;
+ </ul>
+ </li>
+</ul>
+$AFTER_ABOUT
+EOT
+ return $about;
+}
+
+sub T2H_DEFAULT_titlepage()
+{
+ my $result = '';
+ if (@{$Texi2HTML::THISDOC{'titles'}}
+ or @{$Texi2HTML::THISDOC{'subtitles'}}
+ or @{$Texi2HTML::THISDOC{'authors'}})
+ {
+ $result = "<div align=\"center\">\n";
+ foreach my $title (@{$Texi2HTML::THISDOC{'titles'}})
+ {
+ $result .= '<h1>' . $title . "</h1>\n";
+ }
+ foreach my $subtitle (@{$Texi2HTML::THISDOC{'subtitles'}})
+ {
+ $result .= '<h2>' . $subtitle . "</h2>\n";
+ }
+ foreach my $author (@{$Texi2HTML::THISDOC{'authors'}})
+ {
+ $result .= '<strong> ' . $author . " </strong><br>\n";
+ }
+ $result .= "</div>\n$DEFAULT_RULE\n";
+ }
+
+ $Texi2HTML::TITLEPAGE = $result . $Texi2HTML::TITLEPAGE;
+
+ if ($Texi2HTML::THISDOC{'setcontentsaftertitlepage'} and @{$Texi2HTML::THISDOC{'inline_contents'}->{'contents'}})
+ {
+ foreach my $line(@{$Texi2HTML::THISDOC{'inline_contents'}->{'contents'}})
+ {
+ $Texi2HTML::TITLEPAGE .= $line;
+ }
+ $Texi2HTML::TITLEPAGE .= "$DEFAULT_RULE\n";
+ }
+ if ($Texi2HTML::THISDOC{'setshortcontentsaftertitlepage'} and @{$Texi2HTML::THISDOC{'inline_contents'}->{'shortcontents'}})
+ {
+ foreach my $line(@{$Texi2HTML::THISDOC{'inline_contents'}->{'shortcontents'}})
+ {
+ $Texi2HTML::TITLEPAGE .= $line;
+ }
+ $Texi2HTML::TITLEPAGE .= "$DEFAULT_RULE\n";
+ }
+}
+
+# FIXME Honor DOCUMENT_DESCRIPTION?
+sub T2H_DEFAULT_print_redirection_page($)
+{
+ my $fh = shift;
+ my $longtitle = "$Texi2HTML::THISDOC{'title_simple_format'}";
+ $longtitle .= ": $Texi2HTML::SIMPLE_TEXT{'This'}" if exists $Texi2HTML::SIMPLE_TEXT{'This'};
+ my $description = $longtitle;
+ my $encoding = '';
+ $encoding = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=$ENCODING_NAME\">" if (defined($ENCODING_NAME) and ($ENCODING_NAME ne ''));
+ my $href = &$anchor('', $Texi2HTML::HREF{'This'}, $Texi2HTML::NAME{'This'});
+ my $string = &$I('The node you are looking for is at %{href}.',
+ { 'href' => $href });
+ print $fh <<EOT;
+$DOCTYPE
+<html>
+<!-- Created on $Texi2HTML::THISDOC{'today'} by $Texi2HTML::THISDOC{'program'} -->
+<!--
+$Texi2HTML::THISDOC{'program_authors'}
+-->
+<head>
+<title>$longtitle</title>
+
+<meta name="description" content="$description">
+<meta name="keywords" content="$longtitle">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="$Texi2HTML::THISDOC{program}">
+$encoding
+$CSS_LINES
+<meta http-equiv="Refresh" content="2; url=$Texi2HTML::HREF{'This'}">
+$EXTRA_HEAD
+</head>
+
+<body $BODYTEXT>
+$AFTER_BODY_OPEN
+<p>$string</p>
+</body>
+EOT
+}
+
+sub T2H_DEFAULT_node_file_name($$)
+{
+ my $node = shift;
+ my $type = shift;
+ return undef if ($node->{'external_node'} or $node->{'index_page'}
+ or ($type eq 'top' and !$NEW_CROSSREF_STYLE));
+ my $node_file_base;
+ if ($type eq 'top' and defined($TOP_NODE_FILE))
+ {
+ $node_file_base = $TOP_NODE_FILE;
+ }
+ elsif ($NEW_CROSSREF_STYLE)
+ {
+ if ($TRANSLITERATE_NODE)
+ {
+ $node_file_base = $node->{'cross_manual_file'};
+ }
+ else
+ {
+ $node_file_base = $node->{'cross_manual_target'};
+ }
+ }
+ else
+ {
+ $node_file_base = main::remove_texi($node->{'texi'});
+ $node_file_base =~ s/[^\w\.\-]/-/g;
+ }
+ if (defined($NODE_FILE_EXTENSION) and $NODE_FILE_EXTENSION ne '')
+ {
+ return ($node_file_base . ".$NODE_FILE_EXTENSION");
+ }
+ return $node_file_base;
+}
+
+########################################################################
+# Control of formatting:
+# 1.) For some changes, it is often enough to change the value of
+# some global map. It might necessitate building a little
+# function along with the change in hash, if the change is the use
+# of another function (in style_map).
+# 2.) For other changes, reimplement one of the t2h_default_<fnc>* routines,
+# give them another name, and assign them to the respective
+# $<fnc> variable (below).
+
+
+#
+# This hash should have keys corresponding with the nonletter command accent
+# whose following character is considered to be the argument
+# This hash associates an accent macro to the ISO name for the accent if any.
+# The customary use of this map is to find the ISO name appearing in html
+# entity (like &eacute;) associated with a texinfo accent macro.
+#
+# The keys of the hash are
+# ": umlaut
+# ~: tilda accent
+# ^: circumflex accent
+# `: grave accent
+# ': acute accent
+# =: macron accent
+%accent_map = (
+ '"', 'uml',
+ '~', 'tilde',
+ '^', 'circ',
+ '`', 'grave',
+ "'", 'acute',
+ '=', '',
+ );
+
+#
+# texinfo "simple things" (@foo) to HTML ones
+#
+%simple_map = (
+ "*", "<br>", # HTML+
+ ' ', '&nbsp;',
+ "\t", '&nbsp;',
+ "\n", '&nbsp;',
+ # "&#173;" or "&shy;" could also be possible for @-, but it seems
+ # that some browser will consider this as an always visible hyphen mark
+ # which is not what we want (see http://www.cs.tut.fi/~jkorpela/shy.html)
+ '-', '', # hyphenation hint
+ '|', '', # used in formatting commands @evenfooting and friends
+ '/', '',
+ # spacing commands
+ ':', '',
+ '!', '!',
+ '?', '?',
+ '.', '.',
+ '@', '@',
+ '}', '}',
+ '{', '{',
+ );
+
+# this map is used in preformatted text
+%simple_map_pre = %simple_map;
+$simple_map_pre{'*'} = "\n";
+
+#
+# texinfo "things" (@foo{}) to HTML ones
+#
+%things_map = (
+ 'TeX' => 'TeX',
+ 'LaTeX' => 'LaTeX',
+# pertusus: unknown by makeinfo, not in texinfo manual (@* is the right thing)
+# 'br', '<br>', # paragraph break
+ 'bullet' => '*',
+# #'copyright' => '(C)',
+ 'copyright' => '&copy;',
+ 'registeredsymbol' => '&reg;',
+ 'dots' => '<small class="dots">...</small>',
+ 'enddots' => '<small class="enddots">....</small>',
+ 'equiv' => '==',
+# FIXME i18n
+ 'error' => 'error--&gt;',
+ 'expansion' => '==&gt;',
+ 'minus' => '-',
+ 'point' => '-!-',
+ 'print' => '-|',
+ 'result' => '=&gt;',
+ # set in code using the language
+ # 'today', &pretty_date,
+ 'today' => '',
+ 'aa' => '&aring;',
+ 'AA' => '&Aring;',
+ 'ae' => '&aelig;',
+ 'oe' => '&oelig;', #pertusus: also &#156;. &oelig; not in html 3.2
+ 'AE' => '&AElig;',
+ 'OE' => '&OElig;', #pertusus: also &#140;. &OElig; not in html 3.2
+ 'o' => '&oslash;',
+ 'O' => '&Oslash;',
+ 'ss' => '&szlig;',
+ 'l' => '&#322;',
+ 'L' => '&#321;',
+ 'exclamdown' => '&iexcl;',
+ 'questiondown' => '&iquest;',
+ 'pounds' => '&pound;',
+ 'ordf' => '&ordf;',
+ 'ordm' => '&ordm;',
+ 'comma' => ',',
+ 'euro' => '&euro;',
+ 'tie' => '&nbsp;',
+ );
+
+# This map is used in preformatted environments
+%pre_map = %things_map;
+$pre_map{'dots'} = '...';
+$pre_map{'enddots'} = '....';
+#$pre_map{'br'} = "\n";
+
+# ascii representation of @-commands
+%ascii_simple_map = (
+ "*", "\n", # HTML+
+ ' ', ' ',
+ "\t", "\t",
+ "\n", "\n",
+ '-', '', # hyphenation hint
+ '|', '', # used in formatting commands @evenfooting and friends
+ '/', '',
+ ':', '',
+ '!', '!',
+ '?', '?',
+ '.', '.',
+ '@', '@',
+ '}', '}',
+ '{', '{',
+);
+
+%ascii_things_map = (
+ 'TeX' => 'TeX',
+ 'LaTeX' => 'LaTeX',
+ 'bullet' => '*',
+ 'copyright' => '(C)',
+ 'registeredsymbol' => '(R)',
+ 'dots' => '...',
+ 'enddots' => '....',
+ 'equiv' => '==',
+# FIXME i18n
+ 'error' => 'error-->',
+ 'expansion' => '==>',
+ 'minus' => '-',
+ 'point' => '-!-',
+ 'print' => '-|',
+ 'result' => '=>',
+ 'today' => '',
+ 'aa' => 'aa',
+ 'AA' => 'AA',
+ 'ae' => 'ae',
+ 'oe' => 'oe',
+ 'AE' => 'AE',
+ 'OE' => 'OE',
+ 'o' => '/o',
+ 'O' => '/O',
+ 'ss' => 'ss',
+ 'l' => '/l',
+ 'L' => '/L',
+ 'exclamdown' => '?',
+ 'questiondown' => '!',
+ 'pounds' => '#',
+ 'ordf' => 'a',
+ 'ordm' => 'o',
+ 'comma' => ',',
+ 'euro' => 'Euro',
+ 'tie' => ' ',
+);
+
+#
+# This map is used when texi elements are removed and replaced
+# by simple text
+#
+%simple_map_texi = (
+ "*", "",
+ " ", " ",
+ "\t", " ",
+ "-", "-", # soft hyphen
+ "\n", "\n",
+ "|", "",
+ # spacing commands
+ ":", "",
+ "!", "!",
+ "?", "?",
+ ".", ".",
+ "-", "",
+ '@', '@',
+ '}', '}',
+ '{', '{',
+ );
+
+# text replacing macros when texi commands are removed and plain text is
+# produced
+%texi_map = (
+ 'TeX', 'TeX',
+ 'LaTeX', 'LaTeX',
+ 'bullet', '*',
+ 'copyright', 'C',
+ 'registeredsymbol', 'R',
+ 'dots', '...',
+ 'enddots', '....',
+ 'equiv', '==',
+ 'error', 'error-->',
+ 'expansion', '==>',
+ 'minus', '-',
+ 'point', '-!-',
+ 'print', '-|',
+ 'result', '=>',
+ 'today' => '',
+ 'aa', 'aa',
+ 'AA', 'AA',
+ 'ae', 'ae',
+ 'oe', 'oe',
+ 'AE', 'AE',
+ 'OE', 'OE',
+ 'o', 'o',
+ 'O', 'O',
+ 'ss', 'ss',
+ 'l', 'l',
+ 'L', 'L',
+ 'exclamdown', '! upside-down',
+ #'exclamdown', '&iexcl;',
+ 'questiondown', '? upside-down',
+ #'questiondown', '&iquest;',
+ 'pounds', 'pound sterling',
+ #'pounds', '&pound;'
+ 'ordf' => 'a',
+ 'ordm' => 'o',
+ 'comma' => ',',
+ 'euro' => 'Euro',
+ 'tie' => ' ',
+ );
+
+# taken from
+#Latin extended additionnal
+#http://www.alanwood.net/unicode/latin_extended_additional.html
+#C1 Controls and Latin-1 Supplement
+#http://www.alanwood.net/unicode/latin_1_supplement.html
+#Latin Extended-A
+#http://www.alanwood.net/unicode/latin_extended_a.html
+#Latin Extended-B
+#http://www.alanwood.net/unicode/latin_extended_b.html
+#dotless i: 0131
+
+#http://www.alanwood.net/unicode/arrows.html 21**
+#http://www.alanwood.net/unicode/general_punctuation.html 20**
+#http://www.alanwood.net/unicode/mathematical_operators.html 22**
+
+%unicode_map = (
+ 'bullet' => '2022',
+ 'copyright' => '00A9',
+ 'registeredsymbol' => '00AE',
+ 'dots' => '2026',
+ 'enddots' => '',
+ 'equiv' => '2261',
+ 'error' => '',
+ 'expansion' => '2192',
+ 'minus' => '2212', # in mathematical operators
+# 'minus' => '002D', # in latin1
+ 'point' => '2605',
+ 'print' => '22A3',
+ 'result' => '21D2',
+ 'today' => '',
+ 'aa' => '00E5',
+ 'AA' => '00C5',
+ 'ae' => '00E6',
+ 'oe' => '0153',
+ 'AE' => '00C6',
+ 'OE' => '0152',
+ 'o' => '00F8',
+ 'O' => '00D8',
+ 'ss' => '00DF',
+ 'l' => '0142',
+ 'L' => '0141',
+ 'exclamdown' => '00A1',
+ 'questiondown' => '00BF',
+ 'pounds' => '00A3',
+ 'ordf' => '00AA',
+ 'ordm' => '00BA',
+ 'comma' => '002C',
+ 'euro' => '20AC',
+ 'tie' => '',
+# 'tie' => '0020',
+ );
+
+%transliterate_map = (
+ '00C5' => 'AA',
+ '00E5' => 'aa',
+ '00D8' => 'OE',
+ '00F8' => 'oe',
+ '00E6' => 'ae',
+ '0153' => 'oe',
+ '00C6' => 'AE',
+ '0152' => 'OE',
+ '00DF' => 'ss',
+ '0141' => 'L',
+ '0142' => 'l',
+ '00D0' => 'DH',
+ '0415' => 'E',
+ '0435' => 'e',
+ '0426' => 'C',
+ '042A' => 'W',
+ '044A' => 'w',
+ '042C' => 'X',
+ '044C' => 'x',
+ '042E' => 'yu',
+ '042F' => 'YA',
+ '044F' => 'ya',
+ '0433' => 'g',
+ '0446' => 'c',
+ '04D7' => 'IO',
+ '00DD' => 'Y', # unidecode gets this wrong ?
+ );
+
+foreach my $symbol(keys(%unicode_map))
+{
+ if ($unicode_map{$symbol} ne '' and !exists($transliterate_map{$symbol}))
+ {
+ $no_transliterate_map{$unicode_map{$symbol}} = 1;
+ }
+}
+
+%ascii_character_map = (
+ ' ' => '0020',
+ '!' => '0021',
+ '"' => '0022',
+ '#' => '0023',
+ '$' => '0024',
+ '%' => '0025',
+ '&' => '0026',
+ "'" => '0027',
+ '(' => '0028',
+ ')' => '0029',
+ '*' => '002A',
+ '+' => '002B',
+ ',' => '002C',
+ '-' => '002D',
+ '.' => '002E',
+ '/' => '002F',
+ ':' => '003A',
+ ';' => '003B',
+ '<' => '003C',
+ '=' => '003D',
+ '>' => '003E',
+ '?' => '003F',
+ '@' => '0040',
+ '[' => '005B',
+ '\\' => '005C',
+ ']' => '005D',
+ '^' => '005E',
+ '_' => '005F',
+ '`' => '0060',
+ '{' => '007B',
+ '|' => '007C',
+ '}' => '007D',
+ '~' => '007E',
+);
+
+%perl_charset_to_html = (
+ 'utf8' => 'utf-8',
+ 'utf-8-strict' => 'utf-8',
+ 'ascii' => 'us-ascii',
+);
+
+# symbols used for the commands if $USE_ISO is true.
+%iso_symbols = (
+ 'equiv' => '&equiv;',
+ 'dots' => '&hellip;',
+ 'bullet' => '&bull;',
+ 'result' => '&rArr;',
+ 'expansion' => '&rarr;',
+ 'point' => '&lowast;',
+ "'" => '&rsquo;',
+ '`' => '&lsquo;',
+ );
+
+# not used currently for html, but used in chm.init
+%numeric_entity_map = ();
+
+foreach my $symbol (keys(%unicode_map))
+{
+ if ($symbol ne '')
+ {
+ $numeric_entity_map{$symbol} = '&#' . hex($unicode_map{$symbol}) . ';';
+ }
+}
+
+# When the value begins with & the function with that name is used to do the
+# html. The first argument is the text enclosed within {}, the second is the
+# style name (which is also the key of the hash)
+#
+# Otherwithe the value is the html element used to enclose the text, and if
+# there is a " the resulting text is also enclosed within `'
+my %old_style_map = (
+ 'acronym', '',
+ 'asis', '',
+ 'b', 'b',
+ 'cite', 'cite',
+ 'code', 'code',
+ 'command', 'code',
+ 'ctrl', '&default_ctrl',
+ 'dfn', 'em',
+ 'dmn', '',
+ 'email', '&default_email',
+ 'emph', 'em',
+ 'env', 'code',
+ 'file', '"tt',
+ 'i', 'i',
+ 'kbd', 'kbd',
+ 'key', 'kbd',
+ 'math', 'em',
+ 'option', '"samp',
+ 'r', '',
+ 'samp', '"samp',
+ 'sc', '&default_sc',
+ 'strong', 'strong',
+ 't', 'tt',
+ 'uref', '&default_uref',
+ 'url', '&default_url',
+ 'var', 'var',
+ 'verb', 'tt',
+ 'titlefont', '&default_titlefont',
+ 'w', '',
+ );
+
+# default is {'args' => ['normal'], 'attribute' => ''},
+%style_map = (
+ 'asis', {},
+ 'b', {'attribute' => 'b'},
+ 'cite', {'attribute' => 'cite'},
+ 'code', {'args' => ['code'], 'attribute' => 'code'},
+ 'command', {'args' => ['code'], 'attribute' => 'code'},
+ 'ctrl', {'function' => \&t2h_default_ctrl,'type' => 'simple_type'},
+ 'dfn', {'attribute' => 'em'},
+ 'dmn', {},
+ 'email', {'args' => ['code', 'normal'],
+ 'function' => \&t2h_default_email,
+ 'type' => 'simple_type'},
+ #'email', {'args' => ['normal', 'normal'],
+ # 'function' => \&t2h_default_email},
+ 'emph', {'attribute' => 'em'},
+ 'env', {'args' => ['code'], 'attribute' => 'code'},
+ 'file', {'args' => ['code'], 'attribute' => 'tt', 'quote' => '"'},
+ 'i', {'attribute' => 'i'},
+ 'slanted', {'attribute' => 'i'},
+ 'sansserif', {'attribute' => 'span class="sansserif"'},
+ 'kbd', {'args' => ['code'], 'attribute' => 'kbd'},
+ 'key', {'begin' => '&lt;', 'end' => '&gt;'},
+ 'math', {'attribute' => 'em'},
+ 'option', {'args' => ['code'], 'attribute' => 'samp', 'quote' => '"'},
+ 'r', {'attribute' => 'span class="roman"'},
+ 'samp', {'args' => ['code'], 'attribute' => 'samp', 'quote' => '"'},
+# 'sc', {'function' => \&t2h_default_sc},
+ 'sc', {'attribute' => 'small'},
+ 'strong', {'attribute' => 'strong'},
+ 't', {'attribute' => 'tt'},
+ 'uref', {'function' => \&t2h_default_uref,
+ 'args' => ['code', 'normal', 'normal'],
+ 'type' => 'simple_type' },
+ #'uref', {'function' => \&t2h_default_uref,
+ # 'args' => ['normal', 'normal', 'normal']},
+ 'url', {'function' => \&t2h_default_uref,
+ 'args' => ['code', 'normal', 'normal'],
+ 'type' => 'simple_type'},
+ 'indicateurl', {'args' => ['code'], 'begin' => '&lt;<code>', 'end' => '</code>&gt;','type' => 'simple_type'},
+ 'var', {'attribute' => 'var'},
+ 'verb', {'args' => ['code'], 'attribute' => 'tt'},
+ 'titlefont', {'function' => \&t2h_default_titlefont,
+ 'type' => 'simple_type'},
+ 'w', {'type' => 'simple_type'},
+ );
+
+%command_type = ();
+
+foreach my $style (keys(%style_map))
+{
+ if (exists($style_map{$style}->{'type'}))
+ {
+ $command_type{$style} = $style_map{$style}->{'type'};
+ }
+ else
+ {
+ $command_type{$style} = 'style';
+ }
+}
+
+%unicode_diacritical = (
+ 'H' => '030B',
+ 'ringaccent' => '030A',
+ "'" => '0301',
+ 'v' => '030C',
+ ',' => '0327',
+ '^' => '0302',
+ 'dotaccent' => '0307',
+ '`' => '0300',
+ '=' => '0304',
+ '~' => '0303',
+ '"' => '0308',
+ 'udotaccent' => '0323',
+ 'ubaraccent' => '0332',
+ 'u' => '0306',
+ 'tieaccent' => '0361'
+);
+
+%unicode_accents = (
+ 'dotaccent' => { # dot above
+ 'A' => '0226', #C moz-1.2
+ 'a' => '0227', #c moz-1.2
+ 'B' => '1E02',
+ 'b' => '1E03',
+ 'C' => '010A',
+ 'c' => '010B',
+ 'D' => '1E0A',
+ 'd' => '1E0B',
+ 'E' => '0116',
+ 'e' => '0117',
+ 'F' => '1E1E',
+ 'f' => '1E1F',
+ 'G' => '0120',
+ 'g' => '0121',
+ 'H' => '1E22',
+ 'h' => '1E23',
+ 'i' => '0069',
+ 'I' => '0130',
+ 'N' => '1E44',
+ 'n' => '1E45',
+ 'O' => '022E', #Y moz-1.2
+ 'o' => '022F', #v moz-1.2
+ 'P' => '1E56',
+ 'p' => '1E57',
+ 'R' => '1E58',
+ 'r' => '1E59',
+ 'S' => '1E60',
+ 's' => '1E61',
+ 'T' => '1E6A',
+ 't' => '1E6B',
+ 'W' => '1E86',
+ 'w' => '1E87',
+ 'X' => '1E8A',
+ 'x' => '1E8B',
+ 'Y' => '1E8E',
+ 'y' => '1E8F',
+ 'Z' => '017B',
+ 'z' => '017C',
+ },
+ 'udotaccent' => { # dot below
+ 'A' => '1EA0',
+ 'a' => '1EA1',
+ 'B' => '1E04',
+ 'b' => '1E05',
+ 'D' => '1E0C',
+ 'd' => '1E0D',
+ 'E' => '1EB8',
+ 'e' => '1EB9',
+ 'H' => '1E24',
+ 'h' => '1E25',
+ 'I' => '1ECA',
+ 'i' => '1ECB',
+ 'K' => '1E32',
+ 'k' => '1E33',
+ 'L' => '1E36',
+ 'l' => '1E37',
+ 'M' => '1E42',
+ 'm' => '1E43',
+ 'N' => '1E46',
+ 'n' => '1E47',
+ 'O' => '1ECC',
+ 'o' => '1ECD',
+ 'R' => '1E5A',
+ 'r' => '1E5B',
+ 'S' => '1E62',
+ 's' => '1E63',
+ 'T' => '1E6C',
+ 't' => '1E6D',
+ 'U' => '1EE4',
+ 'u' => '1EE5',
+ 'V' => '1E7E',
+ 'v' => '1E7F',
+ 'W' => '1E88',
+ 'w' => '1E89',
+ 'Y' => '1EF4',
+ 'y' => '1EF5',
+ 'Z' => '1E92',
+ 'z' => '1E93',
+ },
+ 'ubaraccent' => { # line below
+ 'B' => '1E06',
+ 'b' => '1E07',
+ 'D' => '1E0E',
+ 'd' => '1E0F',
+ 'h' => '1E96',
+ 'K' => '1E34',
+ 'k' => '1E35',
+ 'L' => '1E3A',
+ 'l' => '1E3B',
+ 'N' => '1E48',
+ 'n' => '1E49',
+ 'R' => '1E5E',
+ 'r' => '1E5F',
+ 'T' => '1E6E',
+ 't' => '1E6F',
+ 'Z' => '1E94',
+ 'z' => '1E95',
+ },
+ ',' => { # cedilla
+ 'C' => '00C7',
+ 'c' => '00E7',
+ 'D' => '1E10',
+ 'd' => '1E11',
+ 'E' => '0228', #C moz-1.2
+ 'e' => '0229', #c moz-1.2
+ 'G' => '0122',
+ 'g' => '0123',
+ 'H' => '1E28',
+ 'h' => '1E29',
+ 'K' => '0136',
+ 'k' => '0137',
+ 'L' => '013B',
+ 'l' => '013C',
+ 'N' => '0145',
+ 'n' => '0146',
+ 'R' => '0156',
+ 'r' => '0157',
+ 'S' => '015E',
+ 's' => '015F',
+ 'T' => '0162',
+ 't' => '0163',
+ },
+ '=' => { # macron
+ 'A' => '0100',
+ 'a' => '0101',
+ 'E' => '0112',
+ 'e' => '0113',
+ 'I' => '012A',
+ 'i' => '012B',
+ 'G' => '1E20',
+ 'g' => '1E21',
+ 'O' => '014C',
+ 'o' => '014D',
+ 'U' => '016A',
+ 'u' => '016B',
+ 'Y' => '0232', #? moz-1.2
+ 'y' => '0233', #? moz-1.2
+ },
+ '"' => { # diaeresis
+ 'A' => '00C4',
+ 'a' => '00E4',
+ 'E' => '00CB',
+ 'e' => '00EB',
+ 'H' => '1E26',
+ 'h' => '1E27',
+ 'I' => '00CF',
+ 'i' => '00EF',
+ 'O' => '00D6',
+ 'o' => '00F6',
+ 't' => '1E97',
+ 'U' => '00DC',
+ 'u' => '00FC',
+ 'W' => '1E84',
+ 'w' => '1E85',
+ 'X' => '1E8C',
+ 'x' => '1E8D',
+ 'y' => '00FF',
+ 'Y' => '0178',
+ },
+ 'u' => { # breve
+ 'A' => '0102',
+ 'a' => '0103',
+ 'E' => '0114',
+ 'e' => '0115',
+ 'G' => '011E',
+ 'g' => '011F',
+ 'I' => '012C',
+ 'i' => '012D',
+ 'O' => '014E',
+ 'o' => '014F',
+ 'U' => '016C',
+ 'u' => '016D',
+ },
+ "'" => { # acute
+ 'A' => '00C1',
+ 'a' => '00E1',
+ 'C' => '0106',
+ 'c' => '0107',
+ 'E' => '00C9',
+ 'e' => '00E9',
+ 'G' => '01F4',
+ 'g' => '01F5',
+ 'I' => '00CD',
+ 'i' => '00ED',
+ 'K' => '1E30',
+ 'k' => '1E31',
+ 'L' => '0139',
+ 'l' => '013A',
+ 'M' => '1E3E',
+ 'm' => '1E3F',
+ 'N' => '0143',
+ 'n' => '0144',
+ 'O' => '00D3',
+ 'o' => '00F3',
+ 'P' => '1E54',
+ 'p' => '1E55',
+ 'R' => '0154',
+ 'r' => '0155',
+ 'S' => '015A',
+ 's' => '015B',
+ 'U' => '00DA',
+ 'u' => '00FA',
+ 'W' => '1E82',
+ 'w' => '1E83',
+ 'Y' => '00DD',
+ 'y' => '00FD',
+ 'Z' => '0179',
+ 'z' => '018A',
+ },
+ '~' => { # tilde
+ 'A' => '00C3',
+ 'a' => '00E3',
+ 'E' => '1EBC',
+ 'e' => '1EBD',
+ 'I' => '0128',
+ 'i' => '0129',
+ 'N' => '00D1',
+ 'n' => '00F1',
+ 'O' => '00D5',
+ 'o' => '00F5',
+ 'U' => '0168',
+ 'u' => '0169',
+ 'V' => '1E7C',
+ 'v' => '1E7D',
+ 'Y' => '1EF8',
+ 'y' => '1EF9',
+ },
+ '`' => { # grave
+ 'A' => '00C0',
+ 'a' => '00E0',
+ 'E' => '00C8',
+ 'e' => '00E8',
+ 'I' => '00CC',
+ 'i' => '00EC',
+ 'N' => '01F8',
+ 'n' => '01F9',
+ 'O' => '00D2',
+ 'o' => '00F2',
+ 'U' => '00D9',
+ 'u' => '00F9',
+ 'W' => '1E80',
+ 'w' => '1E81',
+ 'Y' => '1EF2',
+ 'y' => '1EF3',
+ },
+ '^' => { # circumflex
+ 'A' => '00C2',
+ 'a' => '00E2',
+ 'C' => '0108',
+ 'c' => '0109',
+ 'E' => '00CA',
+ 'e' => '00EA',
+ 'G' => '011C',
+ 'g' => '011D',
+ 'H' => '0124',
+ 'h' => '0125',
+ 'I' => '00CE',
+ 'i' => '00EE',
+ 'J' => '0134',
+ 'j' => '0135',
+ 'O' => '00D4',
+ 'o' => '00F4',
+ 'S' => '015C',
+ 's' => '015D',
+ 'U' => '00DB',
+ 'u' => '00FB',
+ 'W' => '0174',
+ 'w' => '0175',
+ 'Y' => '0176',
+ 'y' => '0177',
+ 'Z' => '1E90',
+ 'z' => '1E91',
+ },
+ 'ringaccent' => { # ring
+ 'A' => '00C5',
+ 'a' => '00E5',
+ 'U' => '016E',
+ 'u' => '016F',
+ 'w' => '1E98',
+ 'y' => '1E99',
+ },
+ 'v' => { # caron
+ 'A' => '01CD',
+ 'a' => '01CE',
+ 'C' => '010C',
+ 'c' => '010D',
+ 'D' => '010E',
+ 'd' => '010F',
+ 'E' => '011A',
+ 'e' => '011B',
+ 'G' => '01E6',
+ 'g' => '01E7',
+ 'H' => '021E', #K with moz-1.2
+ 'h' => '021F', #k with moz-1.2
+ 'I' => '01CF',
+ 'i' => '01D0',
+ 'K' => '01E8',
+ 'k' => '01E9',
+ 'L' => '013D', #L' with moz-1.2
+ 'l' => '013E', #l' with moz-1.2
+ 'N' => '0147',
+ 'n' => '0148',
+ 'O' => '01D1',
+ 'o' => '01D2',
+ 'R' => '0158',
+ 'r' => '0159',
+ 'S' => '0160',
+ 's' => '0161',
+ 'T' => '0164',
+ 't' => '0165',
+ 'U' => '01D3',
+ 'u' => '01D4',
+ 'Z' => '017D',
+ 'z' => '017E',
+ },
+ 'H' => { # double acute
+ 'O' => '0150',
+ 'o' => '0151',
+ 'U' => '0170',
+ 'u' => '0171',
+ },
+);
+
+%transliterate_accent_map = ();
+foreach my $command (keys(%unicode_accents))
+{
+ foreach my $letter(keys (%{$unicode_accents{$command}}))
+ {
+ $transliterate_accent_map{$unicode_accents{$command}->{$letter}}
+ = $letter
+ unless (exists($transliterate_map{$unicode_accents{$command}->{$letter}}));
+ }
+}
+
+%special_accents = (
+ 'ringaccent' => 'aA',
+ "'" => 'aeiouyAEIOUY',
+ ',' => 'cC',
+ '^' => 'aeiouAEIOU',
+ '`' => 'aeiouAEIOU',
+ '~' => 'nNaoAO',
+ '"' => 'aeiouyAEIOU',
+);
+
+foreach my $accent_command ('tieaccent', 'dotless', keys(%unicode_accents))
+{
+ $style_map{$accent_command} = { 'function' => \&t2h_default_accent };
+ $old_style_map{$accent_command} = '&default_accent';
+ $style_map_texi{$accent_command} = { 'function' => \&t2h_default_ascii_accent };
+}
+
+sub default_accent($$)
+{
+ my $text = shift;
+ my $accent = shift;
+ return "&${text}$accent_map{$accent};" if (defined($accent_map{$accent}) and defined($special_accents{$accent}) and ($text =~ /^[$special_accents{$accent}]$/));
+ return '&' . $text . 'ring;' if (($accent eq 'ringaccent') and (defined($special_accents{$accent})) and ($text =~ /^[$special_accents{$accent}]$/));
+ return $text . '&lt;' if ($accent eq 'v');
+ return "&${text}cedil;" if (($accent eq ',') and (defined($special_accents{$accent})) and ($text =~ /^[$special_accents{$accent}]$/));
+ return ascii_accents($text, $accent);
+}
+
+sub t2h_default_accent($$)
+{
+ my $accent = shift;
+ my $args = shift;
+
+ my $text = $args->[0];
+
+ return "&${text}$accent_map{$accent};" if (defined($accent_map{$accent}) and defined($special_accents{$accent}) and ($text =~ /^[$special_accents{$accent}]$/));
+ return '&' . $text . 'ring;' if (($accent eq 'ringaccent') and (defined($special_accents{$accent})) and ($text =~ /^[$special_accents{$accent}]$/));
+ return $text . '&lt;' if ($accent eq 'v');
+ return "&${text}cedil;" if (($accent eq ',') and (defined($special_accents{$accent})) and ($text =~ /^[$special_accents{$accent}]$/));
+# FIXME here there could be a conversion to the character in the right
+# encoding, like
+# if ($USE_UNICODE and defined($OUT_ENCODING) and $OUT_ENCODING ne ''
+# and exists($unicode_accents{$accent}) and exists($unicode_accents{$accent}->{$text}))
+# {
+# my $encoded_char = Encode::encode($OUT_ENCODING, chr(hex($unicode_map{$thing})), Encode::FB_QUIET);
+# return $encoded_char if ($encoded_char ne '');
+# }
+ if ($USE_NUMERIC_ENTITY)
+ {
+ if (exists($unicode_accents{$accent}) and exists($unicode_accents{$accent}->{$text}))
+ {
+ return ('&#' . hex($unicode_accents{$accent}->{$text}) . ';');
+ }
+ }
+ return ascii_accents($text, $accent);
+}
+
+sub ascii_accents($$)
+{
+ my $text = shift;
+ my $accent = shift;
+ return $text if ($accent eq 'dotless');
+ return $text . $accent if (defined($accent_map{$accent}));
+ return $text . "''" if ($accent eq 'H');
+ return $text . '.' if ($accent eq 'dotaccent');
+ return $text . '*' if ($accent eq 'ringaccent');
+ return $text . '[' if ($accent eq 'tieaccent');
+ return $text . '(' if ($accent eq 'u');
+ return $text . '_' if ($accent eq 'ubaraccent');
+ return '.' . $text if ($accent eq 'udotaccent');
+ return $text . '<' if ($accent eq 'v');
+ return $text . ',' if ($accent eq ',');
+}
+
+sub default_sc($$)
+{
+ return '<small>' . uc($_[0]) . '</small>';
+}
+
+# now unused, upcasing is done in normal_text
+sub t2h_default_sc($$$)
+{
+ shift;
+ my $args = shift;
+ return '<small>' . uc($args->[0]) . '</small>';
+}
+
+sub default_ctrl($$)
+{
+ return "^$_[0]";
+}
+
+sub t2h_default_ctrl($$$)
+{
+ shift;
+ my $args = shift;
+ return "^$args->[0]";
+}
+
+sub default_sc_pre($$)
+{
+ return uc($_[0]);
+}
+
+# now unused, upcasing is done in normal_text
+sub t2h_default_sc_pre($$$)
+{
+ shift;
+ my $args = shift;
+ return uc($args->[0]);
+}
+
+sub default_titlefont($$)
+{
+ return "<h1 class=\"titlefont\">$_[0]</h1>" if ($_[0] =~ /\S/);
+ return '';
+}
+
+# Avoid adding h1 if the text is empty
+sub t2h_default_titlefont($$$)
+{
+ shift;
+ my $args = shift;
+ return "<h1 class=\"titlefont\">$args->[0]</h1>" if ($args->[0] =~ /\S/);
+ return '';
+}
+
+# At some point in time (before 4.7?) according to the texinfo
+# manual, url shouldn't lead to a link but rather be formatted
+# like text. It is now what indicateurl do, url is the same that
+# uref with one arg. If we did like makeinfo did it would have been
+#sub url($$)
+#{
+# return '&lt;<code>' . $_[0] . '</code>&gt;';
+#}
+#
+# This is unused, t2h_default_uref is used instead
+sub t2h_default_url ($$)
+{
+ shift;
+ my $args = shift;
+ my $url = shift @$args;
+ #$url =~ s/\s*$//;
+ #$url =~ s/^\s*//;
+ $url = main::normalise_space($url);
+ return '' unless ($url =~ /\S/);
+ return &$anchor('', $url, $url);
+}
+
+sub default_url ($$)
+{
+ my $url = shift;
+ my $command = shift;
+ $url =~ s/\s*$//;
+ $url =~ s/^\s*//;
+ return '' unless ($url =~ /\S/);
+ return &$anchor('', $url, $url);
+}
+
+sub default_uref($$)
+{
+ my $arg = shift;
+ my $command = shift;
+ my ($url, $text, $replacement);
+ ($url, $text, $replacement) = split /,\s*/, $arg;
+ $url =~ s/\s*$//;
+ $url =~ s/^\s*//;
+ $text = $replacement if (defined($replacement));
+ $text = $url unless ($text);
+ return $text if ($url eq '');
+ return &$anchor('', $url, $text);
+}
+
+sub t2h_default_uref($$)
+{
+ shift;
+ my $args = shift;
+ my $url = shift @$args;
+ my $text = shift @$args;
+ my $replacement = shift @$args;
+ #$url =~ s/\s*$//;
+ #$url =~ s/^\s*//;
+ $url = main::normalise_space($url);
+ $replacement = '' if (!defined($replacement));
+ $replacement = main::normalise_space($replacement);
+ $text = '' if (!defined($text));
+ $text = main::normalise_space($text);
+ $text = $replacement if ($replacement ne '');
+ $text = $url unless ($text ne '');
+ return $text if ($url eq '');
+ return &$anchor('', $url, $text);
+}
+
+sub default_email($$)
+{
+ my $arg = shift;
+ my $command = shift;
+ my ($mail, $text);
+ ($mail, $text) = split /,\s*/, $arg;
+ $mail =~ s/\s*$//;
+ $mail =~ s/^\s*//;
+ $text = $mail unless ($text);
+ return $text if ($mail eq '');
+ return &$anchor('', "mailto:$mail", $text);
+}
+
+sub t2h_default_email($$)
+{
+ my $command = shift;
+ my $args = shift;
+ my $mail = shift @$args;
+ my $text = shift @$args;
+ $mail = main::normalise_space($mail);
+ #$mail =~ s/\s*$//;
+ #$mail =~ s/^\s*//;
+ $text = $mail unless (defined($text) and ($text ne ''));
+ $text = main::normalise_space($text);
+ return $text if ($mail eq '');
+ return &$anchor('', "mailto:$mail", $text);
+}
+
+sub t2h_default_ascii_accent($$$$)
+{
+ my $accent = shift;
+ my $args = shift;
+
+ my $text = $args->[0];
+ return ascii_accents($text, $accent);
+}
+
+sub t2h_default_no_texi_email
+{
+ my $command = shift;
+ my $args = shift;
+ my $mail = shift @$args;
+ my $text = shift @$args;
+ $mail = main::normalise_space($mail);
+ #$mail =~ s/\s*$//;
+ #$mail =~ s/^\s*//;
+ return $text if (defined($text) and ($text ne ''));
+ return $mail;
+}
+
+sub t2h_default_no_texi_image($$$$)
+{
+ my $command = shift;
+ my $args = shift;
+ my $text = $args->[0];
+ $text = main::normalise_space($text);
+ my @args = split (/\s*,\s*/, $text);
+ return $args[0];
+}
+
+sub t2h_default_no_texi_acronym_like($$)
+{
+ my $command = shift;
+ my $args = shift;
+ my $acronym_texi = $args->[0];
+ return (main::remove_texi($acronym_texi));
+}
+
+sub t2h_remove_command($$$$)
+{
+ return '';
+}
+
+# This is used for style in preformatted sections
+my %old_style_map_pre = %old_style_map;
+$old_style_map_pre{'sc'} = '&default_sc_pre';
+$old_style_map_pre{'titlefont'} = '';
+
+foreach my $command (keys(%style_map))
+{
+ $style_map_pre{$command} = {};
+ $style_map_texi{$command} = {} if (!exists($style_map_texi{$command}));
+ $style_map_texi{$command}->{'args'} = $style_map{$command}->{'args'}
+ if (exists($style_map{$command}->{'args'}));
+ #print STDERR "COMMAND $command";
+
+ foreach my $key (keys(%{$style_map{$command}}))
+ {
+ $style_map_pre{$command}->{$key} = $style_map{$command}->{$key};
+ }
+}
+
+#$style_map_pre{'sc'}->{'function'} = \&t2h_default_sc_pre;
+$style_map_pre{'sc'} = {};
+$style_map_pre{'titlefont'} = {};
+
+#$style_map_texi{'sc'}->{'function'} = \&t2h_default_sc_pre;
+$style_map_texi{'sc'} = {};
+$style_map_texi{'email'}->{'function'} = \&t2h_default_no_texi_email;
+
+####### special styles. You shouldn't need to change them
+my %special_style = (
+ #'xref' => ['keep','normal','normal','keep','normal'],
+ 'xref' => { 'args' => ['keep','keep','keep','keep','keep'],
+ 'function' => \&main::do_xref },
+ 'ref' => { 'args' => ['keep','keep','keep','keep','keep'],
+ 'function' => \&main::do_xref },
+ 'pxref' => { 'args' => ['keep','keep','keep','keep','keep'],
+ 'function' => \&main::do_xref },
+ 'inforef' => { 'args' => ['keep','keep','keep'],
+ 'function' => \&main::do_xref },
+ 'image' => { 'args' => ['keep'], 'function' => \&main::do_image },
+ 'anchor' => { 'args' => ['keep'], 'function' => \&main::do_anchor_label },
+ 'footnote' => { 'args' => ['keep'], 'function' => \&main::do_footnote },
+ 'shortcaption' => { 'args' => ['keep'], 'function' => \&main::do_caption_shortcaption },
+ 'caption' => { 'args' => ['keep'], 'function' => \&main::do_caption_shortcaption },
+ 'acronym', {'args' => ['keep','keep'], 'function' => \&main::do_acronym_like},
+ 'abbr', {'args' => ['keep','keep'], 'function' => \&main::do_acronym_like},
+);
+
+# @image is replaced by the first arg in strings
+$style_map_texi{'image'} = { 'args' => ['keep'],
+ 'function' => \&t2h_default_no_texi_image };
+
+$style_map_texi{'acronym'} = { 'args' => ['keep','keep'],
+ 'function' => \&t2h_default_no_texi_acronym_like };
+$style_map_texi{'abbr'} = { 'args' => ['keep','keep'],
+ 'function' => \&t2h_default_no_texi_acronym_like };
+
+foreach my $special (keys(%special_style))
+{
+ $style_map{$special} = $special_style{$special}
+ unless (defined($style_map{$special}));
+ $style_map_pre{$special} = $special_style{$special}
+ unless (defined($style_map_pre{$special}));
+ $style_map_texi{$special} = { 'args' => ['keep'],
+ 'function' => \&t2h_remove_command }
+ unless (defined($style_map_texi{$special}));
+}
+####### end special styles.
+
+
+#foreach my $command (keys(%style_map))
+#{
+# print STDERR "STYLE_MAP_TEXI $command($style_map_texi{$command}) ";
+# print STDERR "ARGS $style_map_texi{$command}->{'args'} " if (defined($style_map_texi{$command}->{'args'}));
+# print STDERR "FUN $style_map_texi{$command}->{'function'} " if (defined($style_map_texi{$command}->{'function'}));
+# print STDERR "\n";
+#}
+
+# uncomment to use the old interface
+#%style_map = %old_style_map;
+#%style_map_pre = %old_style_map_pre;
+
+%simple_format_simple_map_texi = %simple_map_pre;
+%simple_format_texi_map = %pre_map;
+%simple_format_style_map_texi = ();
+
+foreach my $command (keys(%style_map_texi))
+{
+ #$simple_format_style_map_texi{$command} = {};
+ foreach my $key (keys (%{$style_map_texi{$command}}))
+ {
+ #print STDERR "$command, $key, $style_map_texi{$command}->{$key}\n";
+ $simple_format_style_map_texi{$command}->{$key} =
+ $style_map_texi{$command}->{$key};
+ }
+ $simple_format_style_map_texi{$command} = {} if (!defined($simple_format_style_map_texi{$command}));
+}
+
+foreach my $accent_command ('tieaccent', 'dotless', keys(%unicode_accents))
+{
+# $simple_format_style_map_texi{$accent_command}->{'args'} = ['normal'];
+ $simple_format_style_map_texi{$accent_command}->{'function'} = \&t2h_default_accent;
+}
+
+%format_map = (
+# 'quotation' => 'blockquote',
+ # lists
+# 'itemize' => 'ul',
+ 'enumerate' => 'ol',
+ 'multitable' => 'table',
+ 'table' => 'dl compact="compact"',
+ 'vtable' => 'dl compact="compact"',
+ 'ftable' => 'dl compact="compact"',
+ 'group' => '',
+ );
+
+%special_list_commands = (
+ 'table' => {},
+ 'vtable' => {},
+ 'ftable' => {},
+ 'itemize' => { 'bullet' => '' }
+ );
+#
+# texinfo format to align attribute of paragraphs
+#
+
+%paragraph_style = (
+ 'center' => 'center',
+ 'flushleft' => 'left',
+ 'flushright' => 'right',
+ );
+
+# an eval of these $complex_format_map->{what}->{'begin'} yields beginning
+# an eval of these $complex_format_map->{what}->{'end'} yields end
+# $EXAMPLE_INDENT_CELL and SMALL_EXAMPLE_INDENT_CELL can be usefull here
+$complex_format_map =
+{
+ 'example' =>
+ {
+ 'begin' => q{"<table><tr>$EXAMPLE_INDENT_CELL<td>"},
+ 'end' => q{"</td></tr></table>\n"},
+ },
+ 'smallexample' =>
+ {
+ 'begin' => q{"<table><tr>$SMALL_EXAMPLE_INDENT_CELL<td>"},
+ 'end' => q{"</td></tr></table>\n"},
+ },
+ 'display' =>
+ {
+ 'begin' => q{"<table><tr>$EXAMPLE_INDENT_CELL<td>"},
+ 'end' => q{"</td></tr></table>\n"},
+ },
+ 'smalldisplay' =>
+ {
+ 'begin' => q{"<table><tr>$SMALL_EXAMPLE_INDENT_CELL<td>"},
+ 'end' => q{"</td></tr></table>\n"},
+ }
+};
+
+# format shouldn't narrow the margins
+
+$complex_format_map->{'lisp'} = $complex_format_map->{'example'};
+$complex_format_map->{'smalllisp'} = $complex_format_map->{'smallexample'};
+$complex_format_map->{'format'} = $complex_format_map->{'display'};
+$complex_format_map->{'smallformat'} = $complex_format_map->{'smalldisplay'};
+
+%def_map = (
+ # basic commands
+ 'deffn', [ 'f', 'category', 'name', 'arg' ],
+ 'defvr', [ 'v', 'category', 'name' ],
+ 'deftypefn', [ 'f', 'category', 'type', 'name', 'arg' ],
+ 'deftypeop', [ 'f', 'category', 'class' , 'type', 'name', 'arg' ],
+ 'deftypevr', [ 'v', 'category', 'type', 'name' ],
+ 'defcv', [ 'v', 'category', 'class' , 'name' ],
+ 'deftypecv', [ 'v', 'category', 'class' , 'type', 'name' ],
+ 'defop', [ 'f', 'category', 'class' , 'name', 'arg' ],
+ 'deftp', [ 't', 'category', 'name', 'arg' ],
+ # shortcuts
+ # FIXME i18n
+ 'defun', 'deffn Function',
+ 'defmac', 'deffn Macro',
+ 'defspec', 'deffn {Special Form}',
+ 'defvar', 'defvr Variable',
+ 'defopt', 'defvr {User Option}',
+ 'deftypefun', 'deftypefn {Function}',
+ 'deftypevar', 'deftypevr Variable',
+ 'defivar', 'defcv {Instance Variable}',
+ 'deftypeivar', 'deftypecv {Instance Variable}',
+ 'defmethod', 'defop Method',
+ 'deftypemethod', 'deftypeop Method',
+ );
+
+# basic x commands
+foreach my $key (keys(%def_map))
+{
+ $def_map{$key . 'x'} = $def_map{$key};
+}
+
+#
+# miscalleneous commands
+#
+# Depending on the value, the command arg or spaces following the command
+# are handled differently:
+#
+# the value is a reference on a hash.
+# the hash keys are
+# 'arg' if the value is 'line' then the remaining of the line is the arg
+# if it is a number it is the number of args (separated by spaces)
+# 'skip' if the value is 'line' then the remaining of the line is skipped
+# if the value is 'space' space but no newline is skipped
+# if the value is 'whitespace' space is skipped
+# if the value is 'linewhitespace' space is skipped if there are
+# only spaces remaining on the line
+# if the value is 'linespace' space but no newline is skipped if
+# there are only spaces remaining on the line
+# 'texi' if true it is some texinfo code and @value and @macros are expanded
+# 'keep' if true the args and the macro are kept, otherwise the macro
+# args and skipped stuffs are removed
+%misc_command = (
+ # not needed for formatting
+ 'raisesections' => {'skip' => 'line'}, # no arg
+ 'lowersections' => {'skip' => 'line'}, # no arg
+ 'contents' => {}, # no arg
+ 'shortcontents' => {}, # no arg
+ 'summarycontents'=> {}, # no arg
+ 'setcontentsaftertitlepage' => {}, # no arg
+ 'setshortcontentsaftertitlepage' => {}, # no arg
+ 'detailmenu' => {'skip' => 'whitespace'}, # no arg
+ 'end detailmenu' => {'skip' => 'space'}, # no arg
+ 'bye' => {'skip' => 'line'}, # no arg
+ # comments
+ 'comment' => {'arg' => 'line'},
+ 'c' => {'arg' => 'line'},
+ # in preamble
+ 'novalidate' => {}, # no arg
+ 'dircategory'=> {'skip' => 'line'}, # line. Position with regard
+ # with direntry is significant
+ 'pagesizes' => {'skip' => 'line', 'arg' => 2}, # can have 2 args
+ # or one? 200mm,150mm 11.5in
+ 'finalout' => {}, # no arg
+ 'paragraphindent' => {'skip' => 'line', 'arg' => 1}, # arg none asis
+ # or a number and forbids anything else on the line
+ 'firstparagraphindent' => {'skip' => 'line', 'arg' => 1}, # none insert
+ 'frenchspacing' => {'arg' => 1}, # on off
+ 'exampleindent' => {'skip' => 'line', 'arg' => 1}, # asis or a number
+ 'footnotestyle'=> {'skip' => 'line', 'arg' => 1}, # end and separate
+ # and nothing else on the line
+ 'afourpaper' => {'skip' => 'line'}, # no arg
+ 'afourlatex' => {'skip' => 'line'}, # no arg
+ 'afourwide' => {'skip' => 'line'}, # no arg
+ 'headings'=> {'skip' => 'line', 'arg' => 1},
+ #off on single double singleafter doubleafter
+ # interacts with setchapternewpage
+ 'setchapternewpage' => {'skip' => 'line', 'arg' => 1}, # off on odd
+ 'everyheading' => {'arg' => 'line'},
+ 'everyfooting' => {'arg' => 'line'},
+ 'evenheading' => {'arg' => 'line'},
+ 'evenfooting' => {'arg' => 'line'},
+ 'oddheading' => {'arg' => 'line'},
+ 'oddfooting' => {'arg' => 'line'},
+ 'smallbook' => {'skip' => 'line'}, # no arg
+ 'setfilename' => {'arg' => 'line'},
+ 'shorttitle' => {'arg' => 'line', 'texi' => 1},
+ 'shorttitlepage' => {'arg' => 'line', 'texi' => 1},
+ 'settitle' => {'arg' => 'line', 'texi' => 1},
+ 'author' => {'arg' => 'line', 'texi' => 1},
+ 'subtitle' => {'arg' => 'line', 'texi' => 1},
+ 'title' => {'arg' => 'line', 'texi' => 1},
+ 'syncodeindex' => {'skip' => 'linespace', 'arg' => 2},
+ # args are index identifiers
+ 'synindex' => {'skip' => 'linespace', 'arg' => 2},
+ 'defindex' => {'skip' => 'line', 'arg' => 1}, # one identifier arg
+ 'defcodeindex' => {'skip' => 'line', 'arg' => 1}, # one identifier arg
+ 'documentlanguage' => {'skip' => 'whitespace', 'arg' => 1},
+ # language code arg
+ 'kbdinputstyle' => {'skip' => 'whitespace', 'arg' => 1}, # code
+ #example distinct
+ 'sp' => {'skip' => 'whitespace', 'arg' => 1}, # no arg
+ # at the end of line or a numerical arg
+ # formatting
+ 'page' => {}, # no arg (pagebreak)
+ 'refill' => {}, # no arg (obsolete, to be ignored)
+ 'noindent' => {'skip' => 'whitespace'}, # no arg
+ 'indent' => {'skip' => 'whitespace'},
+ 'need' => {'skip' => 'line', 'arg' => 1}, # one numerical/real arg
+ 'exdent' => {'skip' => 'space'},
+ # not valid for info (should be in @iftex)
+ 'vskip' => {'arg' => 'line'}, # arg line in TeX
+ 'cropmarks' => {}, # no arg
+ # miscalleneous
+ 'verbatiminclude'=> {'skip' => 'line'},
+ 'documentencoding' => {'arg' => 1}, # makeinfo ignore the whole line
+ # ???
+ 'filbreak' => {},
+ # obsolete @-commands
+ 'quote-arg' => {},
+ 'allow-recursion' => {},
+ );
+my %misc_command_old = (
+ # not needed for formatting
+ 'raisesections', 'line', # no arg
+ 'lowersections', 'line', # no arg
+ 'contents', 1, # no arg
+ 'shortcontents', 1, # no arg
+ 'summarycontents', 1, # no arg
+ 'detailmenu', 'whitespace', # no arg
+ 'end detailmenu', 'space', # no arg
+ #'end detailmenu', 1, # no arg
+ 'novalidate', 1, # no arg
+ 'bye', 'line', # no arg
+ # comments
+ 'comment', 'line',
+ 'c', 'line',
+ # in preamble
+ 'dircategory', 'line', # line. Position with regard with direntry is
+ # significant
+ 'pagesizes', 'line arg2', # can have 2 args
+ 'finalout', 1, # no arg
+ 'paragraphindent', 'line arg1', # in fact accepts only none asis
+ # or a number and forbids anything else on the line
+ 'firstparagraphindent', 'line arg1', # in fact accepts only none insert
+ 'exampleindent', 'line arg1', # in fact accepts only asis or a number
+ 'footnotestyle', 'line arg1', # in fact accepts only end and separate
+ # and nothing else on the line
+ 'afourpaper', 'line', # no arg
+ 'afourlatex', 'line', # no arg
+ 'afourwide', 'line', # no arg
+ 'headings', 'line', # one arg, possibilities are
+ #off on single double singleafter doubleafter
+ # interacts with setchapternewpage
+ 'setchapternewpage', 'line', # no arg
+ 'everyheading', 'line',
+ 'everyfooting', 'line',
+ 'evenheading', 'line',
+ 'evenfooting', 'line',
+ 'oddheading', 'line',
+ 'oddfooting', 'line',
+ 'smallbook', 'line', # no arg
+ 'setfilename', 'line',
+ 'shorttitle', 'linetexi',
+ 'shorttitlepage', 'linetexi',
+ 'settitle', 'linetexi',
+ 'author', 'linetexi',
+ 'subtitle', 'linetexi',
+ 'title','linetexi',
+ 'syncodeindex','linespace arg2', # args are
+ 'synindex','linespace arg2',
+ 'defindex', 'line arg1', # one identifier arg
+ 'defcodeindex', 'line arg1', # one identifier arg
+ 'documentlanguage', 'whitespace arg1', # one language code arg
+ 'kbdinputstyle', 'whitespace arg1', # one arg within
+ #code example distnct
+ 'sp', 'whitespace arg1', # no arg at the en of line or a numerical arg
+ # formatting
+ 'page', 1, # no arg (pagebreak)
+ 'refill', 1, # no arg (obsolete, to be ignored))
+ 'noindent', 'space', # no arg
+ 'need', 'line arg1', # one numerical/real arg
+ 'exdent', 'space',
+ # not valid for info (should be in @iftex)
+ 'vskip', 'line', # arg line in TeX
+ 'cropmarks', 1, # no arg
+ # miscalleneous
+ 'verbatiminclude', 'line',
+ 'documentencoding', 'arg1',
+ # ???
+ 'filbreak', 1,
+ );
+
+%format_in_paragraph = (
+ 'group' => 1,
+ 'html' => 1,
+);
+# map mapping css specification to style
+
+%css_map =
+ (
+ 'ul.toc' => "$TOC_LIST_STYLE",
+ 'pre.menu-comment' => "$MENU_PRE_STYLE",
+ 'pre.menu-preformatted' => "$MENU_PRE_STYLE",
+ 'a.summary-letter' => 'text-decoration: none',
+ 'pre.display' => 'font-family: serif',
+ 'pre.smalldisplay' => 'font-family: serif; font-size: smaller',
+ 'pre.smallexample' => 'font-size: smaller',
+ 'span.sansserif' => 'font-family:sans-serif; font-weight:normal;',
+ 'span.roman' => 'font-family:serif; font-weight:normal;'
+ );
+
+$css_map{'pre.format'} = $css_map{'pre.display'};
+$css_map{'pre.smallformat'} = $css_map{'pre.smalldisplay'};
+$css_map{'pre.smalllisp'} = $css_map{'pre.smallexample'};
+
+# The command_handler arrays are for commands formatted externally.
+# The function references in @command_handler_init are called
+# before the second pass, before the @-commands text collection.
+# Those in @command_handler_process are called between the second pass
+# and the third pass, after collection of @-commands text and before their
+# expansion.
+# Those in @command_handler_process are called after the third pass,
+# after the document generation.
+@command_handler_init = ();
+@command_handler_process = ();
+@command_handler_finish = ();
+
+# the keys of %command_handler are @-command names and the value
+# is a hash reference with the following keys:
+# 'init' function reference used to collect the @-command text
+# 'expand' function reference used when expanding the @-command text
+%command_handler = ();
+
+# formatting functions
+
+$anchor = \&t2h_default_anchor;
+$def_item = \&t2h_default_def_item;
+$def = \&t2h_default_def;
+$menu = \&t2h_default_menu;
+$menu_link = \&t2h_default_menu_link;
+$menu_comment = \&t2h_default_menu_comment;
+$menu_description = \&t2h_default_menu_description;
+$simple_menu_link = \&t2h_default_simple_menu_link;
+$external_ref = \&t2h_default_external_ref;
+$external_href = \&t2h_default_external_href;
+$internal_ref = \&t2h_default_internal_ref;
+$table_item = \&t2h_default_table_item;
+$table_line = \&t2h_default_table_line;
+$table_list = \&t2h_default_table_list;
+$row = \&t2h_default_row;
+$cell = \&t2h_default_cell;
+$list_item = \&t2h_default_list_item;
+$comment = \&t2h_default_comment;
+$def_line = \&t2h_default_def_line;
+$def_line_no_texi = \&t2h_default_def_line_no_texi;
+$raw = \&t2h_default_raw;
+$raw_no_texi = \&t2h_default_raw_no_texi;
+$heading = \&t2h_default_heading;
+$paragraph = \&t2h_default_paragraph;
+$preformatted = \&t2h_default_preformatted;
+$foot_line_and_ref = \&t2h_default_foot_line_and_ref;
+$foot_section = \&t2h_default_foot_section;
+$image_files = \&t2h_default_image_files;
+$image = \&t2h_default_image;
+$address = \&t2h_default_address;
+$index_entry_label = \&t2h_default_index_entry_label;
+$index_summary = \&t2h_default_index_summary;
+$summary_letter = \&t2h_default_summary_letter;
+$index_entry = \&t2h_default_index_entry;
+$index_letter = \&t2h_default_index_letter;
+$print_index = \&t2h_default_print_index;
+$protect_text = \&t2h_default_protect_text;
+$normal_text = \&t2h_default_normal_text;
+$complex_format = \&t2h_default_complex_format;
+$cartouche = \&t2h_default_cartouche;
+$sp = \&t2h_default_sp;
+$definition_category = \&t2h_default_definition_category;
+$copying_comment = \&t2h_default_copying_comment;
+$index_summary_file_entry = \&t2h_default_index_summary_file_entry;
+$index_summary_file_end = \&t2h_default_index_summary_file_end;
+$index_summary_file_begin = \&t2h_default_index_summary_file_begin;
+$empty_line = \&t2h_default_empty_line;
+$unknown = \&t2h_default_unknown;
+$unknown_style = \&t2h_default_unknown_style;
+$caption_shortcaption = \&t2h_caption_shortcaption;
+$float = \&t2h_default_float;
+$listoffloats = \&t2h_default_listoffloats;
+$listoffloats_entry = \&t2h_default_listoffloats_entry;
+$listoffloats_caption = \&t2h_default_listoffloats_caption;
+$listoffloats_float_style = \&t2h_default_listoffloats_float_style;
+$listoffloats_style = \&t2h_default_listoffloats_style;
+$acronym_like = \&t2h_default_acronym_like;
+$quotation = \&t2h_default_quotation;
+$quotation_prepend_text = \&t2h_default_quotation_prepend_text;
+$paragraph_style_command = \&t2h_default_paragraph_style_command;
+$heading_texi = \&t2h_default_heading_texi;
+$index_element_heading_texi = \&t2h_default_index_element_heading_texi;
+
+# This function is called whenever a complex format is processed
+#
+# arguments:
+# name of the format
+# text appearing inside the format
+#
+# an eval of $complex_format->{format name}->{'begin'} should lead to the
+# beginning of the complex format, an eval of
+# $complex_format->{format name}->{'end'} should lead to the end of the
+# complex format.
+sub t2h_default_complex_format($$)
+{
+ my $name = shift;
+ my $text = shift;
+ return '' if ($text eq '');
+ my $beginning = eval "$complex_format_map->{$name}->{'begin'}";
+ if ($@ ne '')
+ {
+ print STDERR "$ERROR Evaluation of $complex_format_map->{$name}->{'begin'}: $@";
+ $beginning = '';
+
+ }
+ my $end = eval "$complex_format_map->{$name}->{'end'}";
+ if ($@ ne '')
+ {
+ print STDERR "$ERROR Evaluation of $complex_format_map->{$name}->{'end'}: $@";
+ $end = '';
+
+ }
+ return $beginning . $text . $end;
+}
+
+sub t2h_default_empty_line($$)
+{
+ my $text = shift;
+ my $state = shift;
+ #ignore the line if it just follows a deff
+ return '' if ($state->{'deff_line'});
+ return $text;
+}
+
+sub t2h_default_unknown($$$$)
+{
+ my $macro = shift;
+ my $line = shift;
+ my $stack = shift;
+ my $state = shift;
+
+ my ($result_line, $result, $result_text, $message);
+ return ($line, 0, undef, undef);
+}
+
+sub t2h_default_unknown_style($$$$)
+{
+ my $command = shift;
+ my $text = shift;
+ my $state = shift;
+
+ my ($result, $result_text, $message);
+ return (0, undef, undef);
+}
+
+sub t2h_caption_shortcaption($)
+{
+ my $float = shift;
+ my $caption_lines;
+ my $shortcaption_lines;
+ my $style = $float->{'style_texi'};
+ if (defined($float->{'nr'}))
+ {
+ my $nr = $float->{'nr'};
+ if ($style ne '')
+ {
+ $style = &$I('%{style} %{number}', { 'style' => $style, 'number' => $nr});
+ }
+ else
+ {
+ $style = $nr;
+ }
+ }
+
+ if (defined($float->{'caption_texi'}))
+ {
+ @$caption_lines = @{$float->{'caption_texi'}};
+ if (defined($style))
+ {
+ $caption_lines->[0] = '@strong{' . &$I('%{style}: %{caption_first_line}', { 'style' => $style, 'caption_first_line' => $caption_lines->[0] });
+ }
+ else
+ {
+ $caption_lines->[0] = '@strong{' . $caption_lines->[0];
+ }
+ push @$caption_lines, "}\n";
+ }
+ elsif (defined($style))
+ {
+ $caption_lines->[0] = '@strong{' . $style . '}' . "\n";
+ }
+ if (defined($float->{'shortcaption_texi'}))
+ {
+ @$shortcaption_lines = @{$float->{'shortcaption_texi'}};
+ if (defined($style))
+ {
+ $shortcaption_lines->[0] = '@strong{' . &$I('%{style}: %{shortcaption_first_line}', { 'style' => $style, 'shortcaption_first_line' => $shortcaption_lines->[0] });
+ }
+ else
+ {
+ $shortcaption_lines->[0] = '@strong{' . $shortcaption_lines->[0];
+ }
+ push @$shortcaption_lines, "}\n";
+ }
+ elsif (defined($style))
+ {
+ $shortcaption_lines->[0] = '@strong{' . $style . '}' . "\n";
+ }
+ return ($caption_lines, $shortcaption_lines);
+}
+
+sub t2h_default_float($$$$$)
+{
+ my $text = shift;
+ my $float = shift;
+ my $caption = shift;
+ my $shortcaption = shift;
+
+ my $label = '';
+ if (exists($float->{'id'}))
+ {
+ $label = &$anchor($float->{'id'});
+ }
+ my $caption_text = '';
+
+ if (defined($float->{'caption_texi'}))
+ {
+ $caption_text = $caption;
+ }
+ elsif (defined($float->{'shortcaption_texi'}))
+ {
+ $caption_text = $shortcaption;
+ }
+ elsif (defined($caption))
+ {
+ $caption_text = $caption;
+ }
+
+ return '<div class="float">' . "$label\n" . $text . '</div>' . $caption_text;
+}
+
+sub t2h_default_listoffloats_style($)
+{
+ my $style_texi = shift;
+ return ($style_texi);
+}
+
+sub t2h_default_listoffloats_float_style($$)
+{
+ my $style_texi = shift;
+ my $float = shift;
+
+ my $style = $float->{'style_texi'};
+ if (defined($float->{'nr'}))
+ {
+ my $nr = $float->{'nr'};
+ if ($style ne '')
+ {
+ $style = &$I('%{style} %{number}', { 'style' => $style, 'number' => $nr});
+ }
+ else
+ {
+ $style = $nr;
+ }
+ }
+ return $style;
+}
+
+sub t2h_default_listoffloats_caption($)
+{
+ my $float = shift;
+ if (defined($float->{'shortcaption_texi'}))
+ {
+ return [ @{$float->{'shortcaption_texi'}} ];
+ }
+ elsif (defined($float->{'caption_texi'}))
+ {
+ return [ @{$float->{'caption_texi'}} ];
+ }
+ return [ ];
+}
+
+sub t2h_default_listoffloats_entry($$$$)
+{
+ my $style_texi = shift;
+ my $float = shift;
+ my $float_style = shift;
+ my $caption = shift;
+ my $href = shift;
+
+ return '<dt>' . &$anchor('', $href, $float_style) . '</dt><dd>' . $caption
+. '</dd>' . "\n";
+}
+
+sub t2h_default_listoffloats($$$)
+{
+ my $style_texi = shift;
+ my $style = shift;
+ my $float_entries = shift;
+
+ my $result = "<dl class=\"listoffloats\">\n" ;
+ foreach my $float_entry (@$float_entries)
+ {
+ $result .= $float_entry;
+ }
+ return $result . "</dl>\n";
+}
+
+# This function is used to protect characters which are special in html
+# in inline text: &, ", <, and >.
+#
+# argument:
+# text to be protected
+sub t2h_default_protect_text($)
+{
+ my $text = shift;
+ $text =~ s/&/&amp;/g;
+ $text =~ s/</&lt;/g;
+ $text =~ s/>/&gt;/g;
+ $text =~ s/\"/&quot;/g;
+ return $text;
+}
+
+
+sub in_small_caps($)
+{
+ my $style_stack = shift;
+ my $in_sc = 0;
+ if ($style_stack and scalar(@{$style_stack}))
+ {
+ my $level = $#$style_stack;
+ #print STDERR ":::$level ::@{$style_stack}\n";
+ while ($level >= 0)
+ {
+ if ($style_stack->[$level] eq 'sc')
+ {
+ $in_sc = 1;
+ last;
+ }
+ $level--;
+ }
+ }
+ return $in_sc;
+}
+#
+#
+sub t2h_default_normal_text($$$$$)
+{
+ my $text = shift;
+ my $in_raw_text = shift;
+ my $in_preformatted = shift;
+ my $in_code = shift;
+ my $style_stack = shift;
+ $text = uc($text) if (in_small_caps($style_stack));
+ $text = &$protect_text($text) unless($in_raw_text);
+ if (! $in_code and !$in_preformatted)
+ {
+ if ($USE_ISO and !$in_raw_text)
+ {
+ $text =~ s/---/\&mdash\;/g;
+ $text =~ s/--/\&ndash\;/g;
+ $text =~ s/``/\&ldquo\;/g;
+ $text =~ s/''/\&rdquo\;/g;
+ }
+ else
+ {
+ if ($in_raw_text) #FIXME really do that ?
+ {
+ $text =~ s/``/"/g;
+ $text =~ s/''/"/g;
+ }
+ else
+ {
+ $text =~ s/``/&quot;/g;
+ $text =~ s/''/&quot;/g;
+ }
+ # temporary reuse '' to store --- !....
+ # FIXME won't '---' be handled wrongly?
+ # FIXME really do that in raw text?
+ $text =~ s/---/''/g;
+ $text =~ s/--/-/g;
+ $text =~ s/''/--/g;
+ }
+ }
+ return $text;
+}
+
+# This function produces an anchor
+#
+# arguments:
+# $name : anchor name
+# $href : anchor href
+# text : text displayed
+# extra_attribs : added to anchor attributes list
+sub t2h_default_anchor($;$$$)
+{
+ my $name = shift;
+ my $href = shift;
+ my $text = shift;
+ my $attributes = shift;
+#print STDERR "!$name!$href!$text!$attributes!\n";
+ if (!defined($attributes) or ($attributes !~ /\S/))
+ {
+ $attributes = '';
+ }
+ else
+ {
+ $attributes = ' ' . $attributes;
+ }
+ $name = '' if (!defined($name) or ($name !~ /\S/));
+ $href = '' if (!defined($href) or ($href !~ /\S/));
+ $text = '' if (!defined($text));
+ return $text if (($name eq '') and ($href eq ''));
+ $name = "name=\"$name\"" if ($name ne '');
+ $href = "href=\"$href\"" if ($href ne '');
+ $href = ' ' . $href if (($name ne '') and ($href ne ''));
+#print STDERR "!!!$name!$href!$text!$attributes!\n";
+ return "<a ${name}${href}${attributes}>$text</a>";
+}
+
+# This function is used to format the text associated with a @deff/@end deff
+#
+# argument:
+# text
+#
+# $DEF_TABLE should be used to distinguish between @def formatted as table
+# and as definition lists.
+sub t2h_default_def_item($)
+{
+ my $text = shift;
+ if ($text =~ /\S/)
+ {
+ if (! $DEF_TABLE)
+ {
+ return '<dd>' . $text . '</dd>';
+ }
+ else
+ {
+ return '<tr><td colspan="2">' . $text . '</td></tr>';
+ }
+ }
+ return '';
+}
+
+sub t2h_default_definition_category($$$)
+{
+ my $name = shift;
+ my $class = shift;
+ my $style = shift;
+ return ($name) if (!defined($class) or $class =~ /^\s*$/);
+ if ($style eq 'f')
+ {
+ return &$I('%{name} on %{class}', { 'name' => $name, 'class' => $class });
+ }
+ elsif ($style eq 'v')
+ {
+ return &$I('%{name} of %{class}', { 'name' => $name, 'class' => $class });
+ }
+ else
+ {
+ return $name;
+ }
+}
+
+# format the container for the @deffn line and text
+#
+# argument
+# text of the whole @def, line and associated text.
+#
+# $DEF_TABLE should be used.
+sub t2h_default_def($)
+{
+ my $text = shift;
+ if ($text =~ /\S/)
+ {
+ if (! $DEF_TABLE)
+ {
+ return "<dl>\n" . $text . "</dl>\n";
+ }
+ else
+ {
+ return "<table width=\"100%\">\n" . $text . "</table>\n";
+ }
+ }
+ return '';
+
+}
+
+# a whole menu
+#
+# argument:
+# the whole menu text (entries and menu comments)
+#
+# argument:
+# whole menu text.
+sub t2h_default_menu($)
+{
+ my $text = shift;
+ if ($text =~ /\S/)
+ {
+ return "<table class=\"menu\" border=\"0\" cellspacing=\"0\">\n"
+ . $text . "</table>\n";
+ }
+}
+
+# a simple menu entry ref in case we aren't in a standard menu context
+sub t2h_default_simple_menu_link($$$$$$)
+{
+ my $entry = shift;
+ my $preformatted = shift;
+ my $href = shift;
+ my $node = shift;
+ my $name = shift;
+ my $ending = shift;
+ $ending = '' if (!defined($ending));
+ if (($entry eq '') or $NODE_NAME_IN_MENU or $preformatted)
+ {
+ $name .= ':' if ($name ne '');
+ $entry = "$MENU_SYMBOL$name$node";
+ }
+ $entry = &$anchor('', $href, $entry) if ($href);
+ $entry .= $ending if ($preformatted);
+ $entry .= '&nbsp;' unless $preformatted;
+ return $entry;
+}
+
+# formats a menu entry link pointing to a node or section
+#
+# arguments:
+# the entry text
+# the state, a hash reference holding informations about the context, with a
+# usefull entry, 'preformatted', true if we are in a preformatted format
+# (a format keeping space between words). In that case a function
+# of the main program, main::do_preformatted($text, $state) might
+# be used to format the text with the current format style.
+# href is optionnal. It is the reference to the section or the node anchor
+# which should be used to make the link (typically it is the argument
+# of a href= attribute in a <a> element).
+sub t2h_default_menu_link($$$$$$)
+{
+ my $entry = shift;
+ my $state = shift;
+ my $href = shift;
+ my $node = shift;
+ my $name = shift;
+ my $ending = shift;
+#print STDERR "MENU_LINK\n";
+ if (($entry eq '') or $NODE_NAME_IN_MENU or $state->{'preformatted'})
+ {
+ $name .= ':' if ($name ne '');
+ $entry = "$MENU_SYMBOL$name$node";
+ }
+ $entry = &$anchor ('', $href, $entry) if (defined($href));
+ return $entry if ($SIMPLE_MENU);
+ if ($state->{'preformatted'})
+ {
+ return '<tr><td>' . main::do_preformatted($entry . $ending, $state);
+ }
+ return "<tr><td align=\"left\" valign=\"top\">$entry</td><td>&nbsp;&nbsp;</td>";
+}
+
+sub simplify_text($)
+{
+ my $text = shift;
+ $text =~ s/[^\w]//og;
+ return $text;
+}
+
+# formats a menu entry description, ie the text appearing after the node
+# specification in a menu entry an spanning until there is another
+# menu entry, an empty line or some text at the very beginning of the line
+# (we consider that text at the beginning of the line begins a menu comment)
+#
+# arguments:
+# the description text
+# the state. See menu_entry.
+# the heading of the element associated with the node.
+sub t2h_default_menu_description($$$)
+{
+ my $text = shift;
+ my $state = shift;
+ my $element_text = shift;
+ return $text if ($SIMPLE_MENU);
+#print STDERR "MENU_DESCRIPTION element_text!$element_text, text!$text\n";
+ if ($state->{'preformatted'})
+ {
+ return main::do_preformatted($text, $state) . '</td></tr>';
+ }
+ elsif ($AVOID_MENU_REDUNDANCY)
+ {
+ $text = '' if (simplify_text($element_text) eq simplify_text($text));
+ }
+ return "<td align=\"left\" valign=\"top\">$text</td></tr>\n";
+}
+
+# a menu comment (between menu lines)
+# formats the container of a menu comment. A menu comment is any text
+# appearing between menu lines, either separated by an empty line from
+# the preceding menu entry, or a text beginning at the first character
+# of the line (text not at the very beginning of the line is considered to
+# be the continuation of a menu entry description text).
+#
+# The text itself is considered to be in a preformatted environment
+# with name 'menu-commment' and with style $MENU_PRE_STYLE.
+#
+# argument
+# text contained in the menu comment.
+sub t2h_default_menu_comment($)
+{
+ my $text = shift;
+ return $text if ($SIMPLE_MENU);
+ if ($text =~ /\S/)
+ {
+ return "<tr><th colspan=\"3\" align=\"left\" valign=\"top\">$text</th></tr>";
+ }
+ return '';
+}
+
+# Construct a href to an external source of information.
+# node is the node with texinfo @-commands
+# node_id is the node transliterated and transformed as explained in the
+# texinfo manual
+# node_xhtml_id is the node transformed such that it is unique and can
+# be used to make an html cross ref as explained in the texinfo manual
+# file is the file in '(file)node'
+sub t2h_default_external_href($$$)
+{
+ my $node = shift;
+ my $node_id = shift;
+ my $node_xhtml_id = shift;
+ my $file = shift;
+ $file = '' if (!defined($file));
+ my $default_target_split = $EXTERNAL_CROSSREF_SPLIT;
+ my $target_split;
+ my $target_mono;
+ my $href_split;
+ my $href_mono;
+ if ($file ne '')
+ {
+ if ($NEW_CROSSREF_STYLE)
+ {
+ $file =~ s/\.[^\.]*$//;
+ $file =~ s/^.*\///;
+ my $href;
+ if (exists($Texi2HTML::THISDOC{'htmlxref'}->{$file}))
+ {
+ if (exists($Texi2HTML::THISDOC{'htmlxref'}->{$file}->{'split'}))
+ {
+ $target_split = 1;
+ $href_split = $Texi2HTML::THISDOC{'htmlxref'}->{$file}->{'split'}->{'href'};
+ }
+ if (exists($Texi2HTML::THISDOC{'htmlxref'}->{$file}->{'mono'}))
+ {
+ $target_mono = 1;
+ $href_mono = $Texi2HTML::THISDOC{'htmlxref'}->{$file}->{'mono'}->{'href'};
+ }
+ }
+
+ if ((not $target_mono) and (not $target_split))
+ { # nothing specified for that manual, use default
+ $target_split = $default_target_split;
+ }
+ elsif ($target_split and $target_mono)
+ { # depends on the splitting of the manual
+ $target_split = $SPLIT;
+ }
+ elsif ($target_mono)
+ { # only mono specified
+ $target_split = 0;
+ }
+
+ if ($target_split)
+ {
+ if (defined($href_split))
+ {
+ $file = "$href_split";
+ }
+ elsif (defined($EXTERNAL_DIR))
+ {
+ $file = "$EXTERNAL_DIR/$file";
+ }
+ elsif ($SPLIT)
+ {
+ $file = "../$file";
+ }
+ $file .= "/";
+ }
+ else
+ {# target not split
+ if (defined($href_mono))
+ {
+ $file = "$href_mono";
+ }
+ else
+ {
+ if (defined($EXTERNAL_DIR))
+ {
+ $file = "$EXTERNAL_DIR/$file";
+ }
+ elsif ($SPLIT)
+ {
+ $file = "../$file";
+ }
+ $file .= "." . $NODE_FILE_EXTENSION;
+ }
+ }
+ }
+ else
+ {
+ $file .= "/";
+ if (defined($EXTERNAL_DIR))
+ {
+ $file = $EXTERNAL_DIR . $file;
+ }
+ else
+ {
+ $file = '../' . $file;
+ }
+ }
+ }
+ else
+ {
+ $target_split = $default_target_split;
+ }
+ if ($node eq '')
+ {
+ if ($NEW_CROSSREF_STYLE)
+ {
+ if ($target_split)
+ {
+ return $file . $TOP_NODE_FILE . '.' . $NODE_FILE_EXTENSION . '#Top';
+ # or ?
+ #return $file . '#Top';
+ }
+ else
+ {
+ return $file . '#Top';
+ }
+ }
+ else
+ {
+ return $file;
+ }
+ }
+ my $target;
+ if ($NEW_CROSSREF_STYLE)
+ {
+ $node = $node_id;
+ $target = $node_xhtml_id;
+ }
+ else
+ {
+ $node = main::remove_texi($node);
+ $node =~ s/[^\w\.\-]/-/g;
+ }
+ my $file_basename = $node;
+ $file_basename = $TOP_NODE_FILE if ($node =~ /^top$/i);
+ if ($NEW_CROSSREF_STYLE)
+ {
+ if ($target_split)
+ {
+ return $file . $file_basename . ".$NODE_FILE_EXTENSION" . '#' . $target;
+ }
+ else
+ {
+ return $file . '#' . $target;
+ }
+ }
+ else
+ {
+ return $file . $file_basename . ".$NODE_FILE_EXTENSION";
+ }
+}
+
+# format a reference external to the generated manual. This produces a full
+# reference with introductive words and the reference itself.
+#
+# arguments:
+# type of the reference: xref (reference at the beginning of a sentence),
+# pxref (reference in a parenthesis),
+# section in the book. This might be undef.
+# book name.
+# node and file name formatted according to the convention used in info
+# '(file)node' and no node means the Top node.
+# href linking to the html page containing the referenced node. A typical
+# use for this href is a href attribute in an <a> element
+# an optionnal cross reference name
+sub t2h_default_external_ref($$$$$$)
+{
+ my $type = shift;
+ my $section = shift;
+ my $book = shift;
+ my $file_node = shift;
+ my $href = shift;
+ my $cross_ref = shift;
+
+ $file_node = "$cross_ref: $file_node" if (($file_node ne '') and ($cross_ref ne ''));
+ $file_node = &$anchor('', $href, $file_node) if ($file_node ne '');
+
+ # Yes, this is ugly, but this helps internationalization
+ if ($type eq 'pxref')
+ {
+ if (($book ne '') and ($file_node ne ''))
+ {
+ return &$I('see %{node_file_href} section `%{section}\' in @cite{%{book}}', { 'node_file_href' => $file_node, 'book' => $book, 'section' => $section }) if ($section ne '');
+ return &$I('see %{node_file_href} @cite{%{book}}', { 'node_file_href' => $file_node, 'book' => $book });
+ }
+ elsif ($book ne '')
+ {
+ return &$I('see section `%{section}\' in @cite{%{book}}', { 'book' => $book, 'section' => $section }) if ($section ne '');
+ return &$I('see @cite{%{book}}', { 'book' => $book });
+ }
+ elsif ($file_node ne '')
+ {
+ return &$I('see %{node_file_href}', { 'node_file_href' => $file_node });
+ }
+ }
+ if ($type eq 'xref')
+ {
+ if (($book ne '') and ($file_node ne ''))
+ {
+ return &$I('See %{node_file_href} section `%{section}\' in @cite{%{book}}', { 'node_file_href' => $file_node, 'book' => $book, 'section' => $section }) if ($section ne '');
+ return &$I('See %{node_file_href} @cite{%{book}}', { 'node_file_href' => $file_node, 'book' => $book });
+ }
+ elsif ($book ne '')
+ {
+ return &$I('See section `%{section}\' in @cite{%{book}}', { 'book' => $book, 'section' => $section }) if ($section ne '');
+ return &$I('See @cite{%{book}}', { 'book' => $book });
+ }
+ elsif ($file_node ne '')
+ {
+ return &$I('See %{node_file_href}', { 'node_file_href' => $file_node });
+ }
+ }
+ if ($type eq 'ref')
+ {
+ if (($book ne '') and ($file_node ne ''))
+ {
+ return &$I('%{node_file_href} section `%{section}\' in @cite{%{book}}', { 'node_file_href' => $file_node, 'book' => $book, 'section' => $section }) if ($section ne '');
+ return &$I('%{node_file_href} @cite{%{book}}', { 'node_file_href' => $file_node, 'book' => $book });
+ }
+ elsif ($book ne '')
+ {
+ return &$I('section `%{section}\' in @cite{%{book}}', { 'book' => $book, 'section' => $section }) if ($section ne '');
+ return &$I('@cite{%{book}}', { 'book' => $book });
+ }
+ elsif ($file_node ne '')
+ {
+ return &$I('%{node_file_href}', { 'node_file_href' => $file_node });
+ }
+ }
+ return '';
+}
+
+# format a reference to a node or a section in the generated manual. This
+# produces a full reference with introductive words and the reference itself.
+#
+# arguments:
+# type of the reference: xref (reference at the beginning of a sentence),
+# pxref (reference in a parenthesis),
+# href linking to the html page containing the node or the section. A typical
+# use for this href is a href attribute in an <a> element
+# short name for this reference
+# name for this reference
+# boolean true if the reference is a reference to a section
+#
+# $SHORT_REF should be used.
+sub t2h_default_internal_ref($$$$$)
+{
+ my $type = shift;
+ my $href = shift;
+ my $short_name = shift;
+ my $name = shift;
+ my $is_section = shift;
+
+ if (! $SHORT_REF)
+ {
+ $name = &$anchor('', $href, $name);
+ if ($type eq 'pxref')
+ {
+ return &$I('see section %{reference_name}', { 'reference_name' => $name }) if ($is_section);
+ return &$I('see %{reference_name}', { 'reference_name' => $name });
+ }
+ elsif ($type eq 'xref')
+ {
+ return &$I('See section %{reference_name}', { 'reference_name' => $name }) if ($is_section);
+ return &$I('See %{reference_name}', { 'reference_name' => $name });
+ }
+ elsif ($type eq 'ref')
+ {
+ return &$I('%{reference_name}', { 'reference_name' => $name });
+ }
+ }
+ else
+ {
+ $name = &$anchor('', $href, $short_name);
+ if ($type eq 'pxref')
+ {
+ return &$I('see %{reference_name}', { 'reference_name' => $name });
+ }
+ elsif ($type eq 'xref')
+ {
+ return &$I('See %{reference_name}', { 'reference_name' => $name });
+ }
+ elsif ($type eq 'ref')
+ {
+ return &$I('%{reference_name}', { 'reference_name' => $name });
+ }
+ }
+ return '';
+}
+
+sub teletyped_in_stack($)
+{
+ my $stack = shift;
+ foreach my $element(reverse(@$stack))
+ {
+ if ($complex_format_map->{$element})
+ {
+ if (!$complex_format_map->{$element}->{'pre_style'})
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+ }
+ return 0;
+}
+
+# text after @item in table, vtable and ftable
+sub t2h_default_table_item($$$$$$)
+{
+ my $text = shift;
+ my $index_label = shift;
+ my $format = shift;
+ my $command = shift;
+ my $formatted_command = shift;
+ my $style_stack = shift;
+ #print STDERR "-> $format (@$style_stack)\n";
+ $formatted_command = '' if (!defined($formatted_command) or
+ exists($special_list_commands{$format}->{$command}));
+ if (teletyped_in_stack($style_stack))
+ {
+ $text .= '</tt>';
+ $formatted_command = '<tt>' . $formatted_command;
+ }
+ $text .= "\n" . $index_label if (defined($index_label));
+ return '<dt>' . $formatted_command . $text . '</dt>' . "\n";
+}
+
+# format text on the line following the @item line (in table, vtable and ftable)
+sub t2h_default_table_line($)
+{
+ my $text = shift;
+
+ if ($text =~ /\S/)
+ {
+ return '<dd>' . $text . '</dd>' . "\n";
+ }
+ return '';
+}
+
+# row in multitable
+sub t2h_default_row($$)
+{
+ my $text = shift;
+ my $macro = shift;
+
+ if ($text =~ /\S/)
+ {
+ if ($macro eq 'headitem')
+ {
+ return '<thead><tr>' . $text . '</tr></thead>' . "\n";
+ }
+ return '<tr>' . $text . '</tr>' . "\n";
+ }
+ return '';
+}
+
+# cell in multitable
+sub t2h_default_cell($$)
+{
+ my $text = shift;
+ my $row_macro = shift;
+
+ if ($row_macro eq 'headitem')
+ {
+ return '<th>' . $text . '</th>';
+ }
+ return '<td>' . $text . '</td>';
+}
+
+# format an item in a list
+#
+# argument:
+# text of the item
+# format of the list (itemize or enumerate)
+# command passed as argument to the format
+# formatted_command leading command formatted, if it is a thing command
+sub t2h_default_list_item($$$$$$$)
+{
+ my $text = shift;
+ my $format = shift;
+ my $command = shift;
+ my $formatted_command = shift;
+ my $item_nr = shift;
+ my $enumerate_style = shift;
+ my $number = shift;
+
+ $formatted_command = '' if (!defined($formatted_command) or
+ exists($special_list_commands{$format}->{$command}));
+ if ($text =~ /\S/)
+ {
+ return '<li>' . $formatted_command . $text . '</li>';
+ }
+ return '';
+}
+
+sub t2h_default_table_list($$$$$$)
+{
+ my $format = shift;
+ my $text = shift;
+ my $command = shift;
+ my $formatted_command = shift;
+ my $item_nr = shift;
+ my $enumerate_style = shift;
+ my $number = shift;
+ $formatted_command = '' if (!defined($formatted_command) or
+ exists($special_list_commands{$format}->{$command}));
+ if ($format eq 'itemize')
+ {
+ return "<ul>\n" . $text . "</ul>\n" if ($command eq 'bullet');
+ return "<ul$TOC_LIST_ATTRIBUTE>\n" . $text . "</ul>\n";
+ }
+}
+
+# an html comment
+sub t2h_default_comment($)
+{
+ my $text = shift;
+ $text =~ s/--+/-/go;
+ return '<!-- ' . $text . ' -->' . "\n";
+}
+
+sub t2h_collect_styles($)
+{
+ my $stack = shift;
+ my @result = ();
+ foreach my $style (reverse(@$stack))
+ {
+# last unless (defined($command_type{$style}) and $command_type{$style} eq 'style');
+ push @result, $style if (defined($command_type{$style}) and $command_type{$style} eq 'style');
+ }
+ return @result;
+}
+
+sub t2h_get_attribute($;$)
+{
+ my $command = shift;
+ my $map_ref = shift;
+ $map_ref = \%style_map if (!defined($map_ref));
+ return '' unless (defined($map_ref->{$command}));
+ if ((ref($map_ref->{$command}) eq 'HASH')
+ and exists($map_ref->{$command}->{'attribute'}))
+ {
+ return $map_ref->{$command}->{'attribute'};
+ }
+ elsif ($map_ref->{$command} !~ /^&/)
+ {
+ my $attribute = $map_ref->{$command};
+ $attribute =~ s/^\"//;
+ return $attribute;
+ }
+ return '';
+}
+
+sub t2h_begin_style($$;$)
+{
+ my $command = shift;
+ my $text = shift;
+ my $map_ref = shift;
+ my $attribute = t2h_get_attribute($command,$map_ref);
+ $attribute = "<$attribute>" if ($attribute ne '');
+ return $attribute.$text;
+}
+
+sub t2h_end_style($$;$)
+{
+ my $command = shift;
+ my $text = shift;
+ my $map_ref = shift;
+ my $attribute = t2h_get_attribute($command,$map_ref);
+ if ($attribute =~ /^(\w+)/)
+ {
+ $attribute = $1;
+ }
+ $attribute = "</$attribute>" if ($attribute ne '');
+ return $text.$attribute;
+}
+
+# a paragraph
+# arguments:
+# $text of the paragraph
+# $align for the alignement
+# $indent for the indent style (indent or noindent)
+# The following is usefull if the paragraph is in an itemize.
+# $paragraph_command is the leading formatting command (like @minus)
+# $paragraph_command_formatted is the leading formatting command formatted
+# $paragraph_number is a reference on the number of paragraphs appearing
+# in the format. The value should be increased if a paragraph is done
+# $format is the format name (@itemize)
+sub t2h_default_paragraph($$$$$$$$$$$$)
+{
+ my $text = shift;
+ my $align = shift;
+ my $indent = shift;
+ my $paragraph_command = shift;
+ my $paragraph_command_formatted = shift;
+ my $paragraph_number = shift;
+ my $format = shift;
+ my $item_nr = shift;
+ my $enumerate_style = shift;
+ my $number = shift;
+ my $command_stack_at_end = shift;
+ my $command_stack_at_begin = shift;
+#print STDERR "format: $format\n" if (defined($format));
+#print STDERR "paragraph @$command_stack_at_end; @$command_stack_at_begin\n";
+ $paragraph_command_formatted = '' if (!defined($paragraph_command_formatted) or
+ exists($special_list_commands{$format}->{$paragraph_command}));
+ return '' if ($text =~ /^\s*$/);
+ foreach my $style(t2h_collect_styles($command_stack_at_begin))
+ {
+ $text = t2h_begin_style($style, $text);
+ }
+ foreach my $style(t2h_collect_styles($command_stack_at_end))
+ {
+ $text = t2h_end_style($style, $text);
+ }
+ if (defined($paragraph_number) and defined($$paragraph_number))
+ {
+ $$paragraph_number++;
+ return $text if (($format eq 'itemize' or $format eq 'enumerate') and
+ ($$paragraph_number == 1));
+ }
+ my $open = '<p>';
+ if ($align)
+ {
+ $open = "<p align=\"$paragraph_style{$align}\">";
+ }
+ return $open.$text.'</p>';
+}
+
+# a preformatted region
+# arguments:
+# $text of the preformatted region
+# $pre_style css style
+# $class identifier for the preformatted region (example, menu-comment)
+# The following is usefull if the preformatted is in an itemize.
+# $leading_command is the leading formatting command (like @minus)
+# $leading_command_formatted is the leading formatting command formatted
+# $preformatted_number is a reference on the number of preformatteds appearing
+# in the format. The value should be increased if a preformatted is done
+sub t2h_default_preformatted($$$$$$$$$$$$)
+{
+ my $text = shift;
+ my $pre_style = shift;
+ my $class = shift;
+ my $leading_command = shift;
+ my $leading_command_formatted = shift;
+ my $preformatted_number = shift;
+ my $format = shift;
+ my $item_nr = shift;
+ my $enumerate_style = shift;
+ my $number = shift;
+ my $command_stack_at_end = shift;
+ my $command_stack_at_begin = shift;
+
+#print STDERR "preformatted @$command_stack_at_end; @$command_stack_at_begin\n";
+ return '' if ($text eq '');
+ $leading_command_formatted = '' if (!defined($leading_command_formatted) or
+ exists($special_list_commands{$format}->{$leading_command}));
+ if (defined($preformatted_number) and defined($$preformatted_number))
+ {
+ $$preformatted_number++;
+ }
+ foreach my $style(t2h_collect_styles($command_stack_at_begin))
+ {
+ $text = t2h_begin_style($style, $text, \%style_map_pre);
+ }
+ foreach my $style(t2h_collect_styles($command_stack_at_end))
+ {
+ $text = t2h_end_style($style, $text, \%style_map_pre);
+ }
+ return "<pre class=\"$class\">".$text."</pre>";
+}
+
+# This function formats a heading for an element
+#
+# argument:
+# an element. It is a hash reference for a node or a sectionning command.
+# The interesting keys are:
+# 'text': the heading text
+# 'text_nonumber': the heading text without section number
+# 'node': true if it is a node
+# 'level': level of the element. 0 for @top, 1 for chapter, heading,
+# appendix..., 2 for section and so on...
+# 'tag_level': the sectionning element name, raisesections and lowersections
+# taken into account
+sub t2h_default_heading($)
+{
+ my $element = shift;
+ my $level = 3;
+ if (!$element->{'node'})
+ {
+ $level = $element->{'level'};
+ }
+ $level = 1 if ($level == 0);
+ my $text = $element->{'text'};
+ return '' if ($text !~ /\S/);
+ my $class = $element->{'tag_level'};
+ $class = 'unnumbered' if ($class eq 'top');
+ if (defined($element->{'tocid'}) and $TOC_LINKS)
+ {
+ $text = &$anchor ('', "$Texi2HTML::THISDOC{'toc_file'}#$element->{'tocid'}", $text);
+ }
+ my $align = '';
+ $align = ' align="center"' if ($element->{'tag'} eq 'centerchap');
+ return "<h$level class=\"$class\"$align> $text </h$level>\n";
+}
+
+# formatting of raw regions
+# if L2H is true another mechanism is used for tex
+sub t2h_default_raw($$)
+{
+ my $style = shift;
+ my $text = shift;
+ if ($style eq 'verbatim' or $style eq 'tex')
+ {
+ return "<pre class=\"$style\">" . &$protect_text($text) . '</pre>';
+ }
+ elsif ($style eq 'html')
+ {
+ return $text;
+ }
+ else
+ {
+ warn "$WARN (bug) unknown style $style\n";
+ return &$protect_text($text);
+ }
+}
+
+# raw environment when removing texi (in comments)
+sub t2h_default_raw_no_texi($$)
+{
+ my $style = shift;
+ my $text = shift;
+ return $text;
+}
+
+# This function formats a footnote reference and the footnote text associated
+# with a given footnote.
+# The footnote reference is the text appearing in the main document pointing
+# to the footnote text.
+#
+# arguments:
+# absolute number of the footnote (in the document)
+# relative number of the footnote (in the page)
+# identifier for the footnote
+# identifier for the footnote reference in the main document
+# main document file
+# footnote text file
+# array with the footnote text lines
+# the state. See menu entry.
+#
+# returns:
+# reference on an array containing the footnote text lines which should
+# have been updated
+# the text for the reference pointing on the footnote text
+sub t2h_default_foot_line_and_ref($$$$$$$)
+{
+ my $number_in_doc = shift;
+ my $number_in_page = shift;
+ my $footnote_id = shift;
+ my $place_id = shift;
+ my $document_file = shift;
+ my $footnote_file = shift;
+ my $lines = shift;
+ my $state = shift;
+
+ unshift (@$lines, '<h3>' .
+ &$anchor($footnote_id, $document_file . "#$place_id",
+ "($number_in_doc)")
+ . "</h3>\n");
+ return ($lines, &$anchor($place_id, $footnote_file . "#$footnote_id",
+ "($number_in_doc)"));
+}
+
+# formats a group of footnotes.
+#
+# argument:
+# array reference on the footnotes texts lines
+#
+# returns an array reference on the group of footnotes lines
+sub t2h_default_foot_section($)
+{
+ my $lines = shift;
+ unshift (@$lines, "<div class=\"footnote\">\n" ,"$DEFAULT_RULE\n", "<h3>" . &$I('Footnotes') . "</h3>\n");
+ push (@$lines, "</div>\n");
+ return $lines;
+}
+
+sub t2h_default_image_files($$)
+{
+ my $base = shift;
+ my $extension = shift;
+ my @files = ();
+ return @files if (!defined($base) or ($base eq ''));
+ push @files,"$base.$extension" if (defined($extension) and ($extension ne ''));
+ foreach my $ext (@IMAGE_EXTENSIONS)
+ {
+ push @files, "$base.$ext";
+ }
+ return @files;
+}
+
+# format an image
+#
+# arguments:
+# image file name with path
+# image basename
+# a boolean true if we are in a preformatted format
+# image file name without path
+# alt text
+# width
+# height
+# raw alt
+# extension
+# path to working dir
+# path to file relative from working dir
+sub t2h_default_image($$$$$$$$$$$)
+{
+ my $file = shift;
+ my $base = shift;
+ my $preformatted = shift;
+ my $file_name = shift;
+ my $alt = shift;
+ my $width = shift;
+ my $height = shift;
+ my $raw_alt = shift;
+ my $extension = shift;
+ my $working_dir = shift;
+ my $file_path = shift;
+
+ if (!defined($file_path) or $file_path eq '')
+ {
+ if (defined($extension) and $extension ne '')
+ {
+ $file = "$base.$extension";
+ }
+ else
+ {
+ $file = "$base.jpg";
+ }
+ main::echo_warn ("no image file for $base, (using $file)");
+ }
+ $alt = &$protect_text($base) if (!defined($alt) or ($alt eq ''));
+ return "[ $alt ]" if ($preformatted);
+ # it is possible that $file_name is more correct as it allows the user
+ # to chose the relative path.
+ $file = &$protect_text($file);
+ return "<img src=\"$file\" alt=\"$alt\">";
+}
+
+# address put in footer describing when was generated and who did the manual
+sub t2h_default_address($$)
+{
+ my $user = shift;
+ my $date = shift;
+ $user = '' if (!defined($user));
+ $date = '' if (!defined($date));
+ if (($user ne '') and ($date ne ''))
+ {
+ return &$I('by @emph{%{user}} on @emph{%{date}}', { 'user' => $user,
+ 'date' => $date });
+ }
+ elsif ($user ne '')
+ {
+ return &$I('by @emph{%{user}}', { 'user' => $user });
+ }
+ elsif ($date ne '')
+ {
+ return &$I('on @emph{%{date}}', { 'date' => $date });
+ }
+ return '';
+}
+
+# format a target in the main document for an index entry.
+#
+# arguments:
+# target identifier
+# boolean true if in preformatted format
+# FIXME document the remaining
+sub t2h_default_index_entry_label($$)
+{
+ my $identifier = shift;
+ my $preformatted = shift;
+
+ return '' if (!defined($identifier) or ($identifier !~ /\S/));
+ my $label = &$anchor($identifier);
+ return $label . "\n" if (!$preformatted);
+ return $label;
+}
+
+# process definition commands line @deffn for example
+sub t2h_default_def_line($$$$$)
+{
+ my $category = shift;
+ my $name = shift;
+ my $type = shift;
+ my $arguments = shift;
+ my $index_label = shift;
+ $index_label = '' if (!defined($index_label));
+ $category = '' if (!defined($category) or ($category =~ /^\s*$/));
+ $name = '' if (!defined($name) or ($name =~ /^\s*$/));
+ $type = '' if (!defined($type) or $type =~ /^\s*$/);
+ if (!defined($arguments) or $arguments =~ /^\s*$/)
+ {
+ $arguments = '';
+ }
+ else
+ {
+ chomp ($arguments);
+ $arguments = '<i>' . $arguments . '</i>';
+ }
+ my $type_name = '';
+ $type_name = " $type" if ($type ne '');
+ $type_name .= ' <b>' . $name . '</b>' if ($name ne '');
+ $type_name .= $arguments . "\n";
+ if (! $DEF_TABLE)
+ {
+ return '<dt>'. '<u>' . $category . ':</u>' . $type_name . $index_label . "</dt>\n";
+ }
+ else
+ {
+
+ return "<tr>\n<td align=\"left\">" . $type_name .
+ "</td>\n<td align=\"right\">" . $category . $index_label . "</td>\n" . "</tr>\n";
+ }
+}
+
+# process definition commands line @deffn for example while removing texi
+# commands
+sub t2h_default_def_line_no_texi($$$$$)
+{
+ my $category = shift;
+ my $name = shift;
+ my $type = shift;
+ my $arguments = shift;
+ $name = '' if (!defined($name) or ($name =~ /^\s*$/));
+ $type = '' if (!defined($type) or $type =~ /^\s*$/);
+ if (!defined($arguments) or $arguments =~ /^\s*$/)
+ {
+ $arguments = '';
+ }
+ my $type_name = '';
+ $type_name = " $type" if ($type ne '');
+ $type_name .= ' ' . $name if ($name ne '');
+ $type_name .= $arguments;
+ if (! $DEF_TABLE)
+ {
+ return $category . ':' . $type_name . "\n";
+ }
+ else
+ {
+
+ return $type_name . " " . $category . "\n";
+ }
+}
+
+# a cartouche
+sub t2h_default_cartouche($$)
+{
+ my $text = shift;
+
+ if ($text =~ /\S/)
+ {
+ return "<table class=\"cartouche\" border=\"1\"><tr><td>\n" . $text . "</td></tr></table>\n";
+ }
+ return '';
+}
+
+# key:
+# origin_href:
+# entry:
+# texi entry:
+# element_href:
+# element_text:
+sub t2h_default_index_summary_file_entry ($$$$$$$$)
+{
+ my $index_name = shift;
+ my $key = shift;
+ my $origin_href = shift;
+ my $entry = shift;
+ my $texi_entry = shift;
+ my $element_href = shift;
+ my $element_text = shift;
+ my $is_printed = shift;
+ print IDXFILE "key: $key\n origin_href: $origin_href\n entry: $entry\n"
+ . " texi_entry: $texi_entry\n"
+ . " element_href: $element_href\n element_text: $element_text\n";
+}
+
+sub t2h_default_index_summary_file_begin($$)
+{
+ my $name = shift;
+ my $is_printed = shift;
+ open(IDXFILE, ">$Texi2HTML::THISDOC{'destination_directory'}$Texi2HTML::THISDOC{'file_base_name'}" . "_$name.idx")
+ || die "Can't open >$Texi2HTML::THISDOC{'destination_directory'}$Texi2HTML::THISDOC{'file_base_name'}" . "_$name.idx for writing: $!\n";
+}
+
+sub t2h_default_index_summary_file_end($$)
+{
+ my $name = shift;
+ my $is_printed = shift;
+ close (IDXFILE);
+}
+
+sub t2h_default_sp($$)
+{
+ my $number = shift;
+ my $preformatted = shift;
+ return "<br>\n" x $number if (!$preformatted);
+ return "\n" x $number;
+}
+
+sub t2h_default_acronym_like($$$$$$)
+{
+ my $command = shift;
+ my $acronym_texi = shift;
+ my $acronym_text = shift;
+ my $with_explanation = shift;
+ my $explanation_lines = shift;
+ my $explanation_text = shift;
+ my $explanation_simply_formatted = shift;
+
+ my $attribute = $command;
+ my $opening = "<$attribute>";
+ if (defined($explanation_simply_formatted))
+ {
+ $opening = "<$attribute title=\"$explanation_simply_formatted\">";
+ }
+ if ($with_explanation)
+ {
+ return &$I('%{acronym_like} (%{explanation})', {'acronym_like' => $opening . $acronym_text . "</$attribute>", 'explanation' => $explanation_text})
+ }
+ else
+ {
+ return $opening . $acronym_text . "</$attribute>";
+ }
+}
+
+sub t2h_default_quotation_prepend_text($)
+{
+ my $text = shift;
+ return undef if (!defined($text) or $text =~ /^$/);
+# FIXME if there is a @ protecting the end of line the result is
+# @b{some text @:}
+# It is likely not to be what was intended
+ chomp($text);
+ return &$I('@b{%{quotation_arg}:} ', {'quotation_arg' => $text}, {'keep_texi' => 1});
+}
+
+sub t2h_default_quotation($$$)
+{
+ my $text = shift;
+ my $argument_text = shift;
+ my $argument_text_texi = shift;
+# my $argument_style_texi = shift;
+# my $argument_style_id = shift;
+# if (defined($argument_text))
+# {
+# return '<blockquote>' . &$I('%{style}:%{quotation}',
+# {'style' => $argument_text, 'quotation' => $text}) . '</blockquote>' ;
+# }
+ return '<blockquote>' . $text . "</blockquote>\n";
+}
+
+# format the text within a paragraph style format,
+#
+# argument:
+# format name
+# text within the format
+sub t2h_default_paragraph_style_command($$)
+{
+ my $format = shift;
+ my $text = shift;
+ return $text;
+}
+
+# format a whole index
+#
+# argument:
+# index text
+# index name
+sub t2h_default_print_index($$)
+{
+ my $text = shift;
+ my $name = shift;
+ return "<table border=\"0\" class=\"index-$name\">\n" .
+ "<tr><td></td><th align=\"left\">" . &$I('Index Entry') . "</th><th align=\"left\"> " . &$I('Section') . "</th></tr>\n"
+ . "<tr><td colspan=\"3\"> $DEFAULT_RULE</td></tr>\n" . $text .
+ "</table>\n";
+}
+
+# format a letter entry in an index page. The letter entry contains
+# the index entries for the words beginning with that letter. It is
+# a target for links pointing from the summary of the index.
+#
+# arguments:
+# the letter
+# identifier for the letter entry. This should be used to make the target
+# identifier
+# text of the index entries
+sub t2h_default_index_letter($$$)
+{
+ my $letter = shift;
+ my $id = shift;
+ my $text = shift;
+ return '<tr><th>' . &$anchor($id,'',&$protect_text($letter)) .
+ "</th><td></td><td></td></tr>\n" . $text .
+ "<tr><td colspan=\"3\"> $DEFAULT_RULE</td></tr>\n";
+}
+
+# format an index entry (in a letter entry).
+#
+# arguments:
+# href to the main text, linking to the place where the index entry appears
+# entry text
+# href to the main text, linking to the section or node where the index
+# entry appears
+# section or node heading
+sub t2h_default_index_entry($$$$)
+{
+ my $text_href = shift;
+ my $entry = shift;
+ my $element_href = shift;
+ my $element_text = shift;
+
+ return '<tr><td></td><td valign="top">' . &$anchor('', $text_href, $entry)
+ . '</td><td valign="top">' . &$anchor('', $element_href, $element_text)
+ . "</td></tr>\n";
+}
+
+
+sub t2h_default_copying_comment($)
+{
+ my $copying_lines = shift;
+ my $text = &$comment(main::remove_texi(@$copying_lines));
+ return $text;
+}
+# format a letter appearing in a summary for an index. The letter links to
+# the place where the index elements beginning with this letter are (called
+# a letter entry).
+#
+# arguments:
+# letter
+# file where the target letter entry is
+# identifier for the target letter entry
+sub t2h_default_summary_letter($$$)
+{
+ my $letter = shift;
+ my $file = shift;
+ my $identifier = shift;
+ return &$anchor('', $file . '#' . $identifier, '<b>' . &$protect_text($letter) . '</b>', 'class="summary-letter"');
+}
+
+# format an index summary. This is a list of letters linking to the letter
+# entries.
+#
+# arguments:
+# array reference containing the formatted alphabetical letters
+# array reference containing the formatted non lphabetical letters
+sub t2h_default_index_summary($$)
+{
+ my $alpha = shift;
+ my $nonalpha = shift;
+ my $join = '';
+ my $nonalpha_text = '';
+ my $alpha_text = '';
+ $join = " &nbsp; \n<br>\n" if (@$nonalpha and @$alpha);
+ if (@$nonalpha)
+ {
+ $nonalpha_text = join("\n &nbsp; \n", @$nonalpha) . "\n";
+ }
+ if (@$alpha)
+ {
+ $alpha_text = join("\n &nbsp; \n", @$alpha) . "\n &nbsp; \n";
+ }
+ return "<table><tr><th valign=\"top\">" . &$I('Jump to') .": &nbsp; </th><td>" .
+ $nonalpha_text . $join . $alpha_text . "</td></tr></table>\n";
+}
+
+# return the heading with number texinfo text
+# also called for nodes.
+sub t2h_default_heading_texi($$$)
+{
+ my $tag = shift;
+ my $texi = shift;
+ my $number = shift;
+ $texi =~ s/\s*$//;
+ $texi =~ s/^\s*//;
+ return "$number $texi" if ($NUMBER_SECTIONS and defined($number) and ($number !~ /^\s*$/)) ;
+ return $texi;
+}
+
+# return the heading texinfo text for split index sections
+sub t2h_default_index_element_heading_texi($$$)
+{ # FIXME i18n
+ my $heading_texi = shift;
+ my $tag = shift;
+ my $texi = shift;
+ my $number = shift;
+ my $first_letter = shift;
+ my $last_letter = shift;
+ return "$heading_texi: $first_letter -- $last_letter" if ($last_letter ne $first_letter);
+ return "$heading_texi: $first_letter";
+}
+
+1;
+
+require "$ENV{T2H_HOME}/texi2html.init"
+ if ($0 =~ /\.pl$/ &&
+ -e "$ENV{T2H_HOME}/texi2html.init" && -r "$ENV{T2H_HOME}/texi2html.init");
+
+my $translation_file = 'translations.pl'; # file containing all the translations
+my $T2H_OBSOLETE_STRINGS;
+
+# leave this within comments, and keep the require statement
+# This way, you can directly run texi2html.pl,
+# if $ENV{T2H_HOME}/translations.pl exists.
+#
+# @T2H_TRANSLATIONS_FILE@
+$LANGUAGES->{'de'} = {
+ ' The buttons in the navigation panels have the following meaning:' => '',
+ ' where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:' => '',
+ ' Up ' => '',
+ '%{acronym_like} (%{explanation})' => '',
+ '%{month}, %{day} %{year}' => '',
+ '%{name} of %{class}' => '',
+ '%{name} on %{class}' => '',
+ '%{node_file_href}' => '',
+ '%{node_file_href} @cite{%{book}}' => '',
+ '%{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+ '%{reference_name}' => '',
+ '%{style} %{number}' => '',
+ '%{style}: %{caption_first_line}' => '',
+ '%{style}: %{shortcaption_first_line}' => '',
+ '@b{%{quotation_arg}:} ' => '',
+ '@cite{%{book}}' => '',
+ 'About' => '',
+ 'About (help)' => '',
+ 'About This Document' => '@"Uber dieses Dokument',
+ 'April' => 'April',
+ 'August' => 'August',
+ 'Back' => '',
+ 'Beginning of this chapter or previous chapter' => '',
+ 'Button' => '',
+ 'Contents' => '',
+ 'Cover (top) of document' => '',
+ 'Current Position' => '',
+ 'Current section' => '',
+ 'December' => 'Dezember',
+ 'FastBack' => '',
+ 'FastForward' => '',
+ 'February' => 'Februar',
+ 'First' => '',
+ 'First section in reading order' => '',
+ 'Following' => '',
+ 'Following node' => '',
+ 'Footnotes' => 'Fu@ss{}noten',
+ 'Forward' => '',
+ 'From 1.2.3 go to' => '',
+ 'Go to' => '',
+ 'Index' => 'Index',
+ 'Index Entry' => '',
+ 'January' => 'Januar',
+ 'July' => 'Juli',
+ 'Jump to' => '',
+ 'June' => 'Juni',
+ 'Last' => '',
+ 'Last section in reading order' => '',
+ 'March' => 'M@"arz',
+ 'May' => 'Mai',
+ 'Menu:' => '',
+ 'Name' => '',
+ 'Next' => '',
+ 'Next chapter' => '',
+ 'Next node' => '',
+ 'Next section in reading order' => '',
+ 'Next section on same level' => '',
+ 'Node following in node reading order' => '',
+ 'Node up' => '',
+ 'NodeNext' => '',
+ 'NodePrev' => '',
+ 'NodeUp' => '',
+ 'November' => 'November',
+ 'October' => 'Oktober',
+ 'Overview' => '',
+ 'Overview:' => '',
+ 'Prev' => '',
+ 'Previous node' => '',
+ 'Previous section in reading order' => '',
+ 'Previous section on same level' => '',
+ 'Section' => '',
+ 'Section One' => '',
+ 'See %{node_file_href}' => '',
+ 'See %{node_file_href} @cite{%{book}}' => '',
+ 'See %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+ 'See %{reference_name}' => '',
+ 'See @cite{%{book}}' => '',
+ 'See section %{reference_name}' => '',
+ 'See section `%{section}\' in @cite{%{book}}' => '',
+ 'September' => 'September',
+ 'Short Table of Contents' => 'Kurzes Inhaltsverzeichniss',
+ 'Short table of contents' => '',
+ 'Subsection One-Four' => '',
+ 'Subsection One-One' => '',
+ 'Subsection One-Three' => '',
+ 'Subsection One-Two' => '',
+ 'Subsubsection One-Two-Four' => '',
+ 'Subsubsection One-Two-One' => '',
+ 'Subsubsection One-Two-Three' => '',
+ 'Subsubsection One-Two-Two' => '',
+ 'T2H_today' => '',
+ 'Table of Contents' => 'Inhaltsverzeichniss',
+ 'Table of contents' => '',
+ 'The node you are looking for is at %{href}.' => '',
+ 'This' => '',
+ 'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
+ 'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
+ 'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => '',
+ 'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
+ 'Top' => '',
+ 'Untitled Document' => '',
+ 'Up' => '',
+ 'Up node' => '',
+ 'Up section' => '',
+ 'by @emph{%{user}}' => '',
+ 'by @emph{%{user}} on @emph{%{date}}' => '',
+ 'current' => '',
+ 'on @emph{%{date}}' => '',
+ 'section `%{section}\' in @cite{%{book}}' => '',
+ 'see %{node_file_href}' => '',
+ 'see %{node_file_href} @cite{%{book}}' => '',
+ 'see %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+ 'see %{reference_name}' => '',
+ 'see @cite{%{book}}' => '',
+ 'see section %{reference_name}' => '',
+ 'see section `%{section}\' in @cite{%{book}}' => '',
+ 'unknown' => ''
+ };
+
+$T2H_OBSOLETE_STRINGS->{'de'} = {
+ 'See' => 'Siehe',
+ 'section' => 'Abschnitt',
+ 'see' => 'siehe'
+ };
+
+
+$LANGUAGES->{'en'} = {
+ ' The buttons in the navigation panels have the following meaning:' => '',
+ ' where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:' => '',
+ ' Up ' => '',
+ '%{acronym_like} (%{explanation})' => '',
+ '%{month}, %{day} %{year}' => '',
+ '%{name} of %{class}' => '',
+ '%{name} on %{class}' => '',
+ '%{node_file_href}' => '',
+ '%{node_file_href} @cite{%{book}}' => '',
+ '%{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+ '%{reference_name}' => '',
+ '%{style} %{number}' => '',
+ '%{style}: %{caption_first_line}' => '',
+ '%{style}: %{shortcaption_first_line}' => '',
+ '@b{%{quotation_arg}:} ' => '',
+ '@cite{%{book}}' => '',
+ 'About' => '',
+ 'About (help)' => '',
+ 'About This Document' => '',
+ 'April' => '',
+ 'August' => '',
+ 'Back' => '',
+ 'Beginning of this chapter or previous chapter' => '',
+ 'Button' => '',
+ 'Contents' => '',
+ 'Cover (top) of document' => '',
+ 'Current Position' => '',
+ 'Current section' => '',
+ 'December' => '',
+ 'FastBack' => '',
+ 'FastForward' => '',
+ 'February' => '',
+ 'First' => '',
+ 'First section in reading order' => '',
+ 'Following' => '',
+ 'Following node' => '',
+ 'Footnotes' => '',
+ 'Forward' => '',
+ 'From 1.2.3 go to' => '',
+ 'Go to' => '',
+ 'Index' => '',
+ 'Index Entry' => '',
+ 'January' => '',
+ 'July' => '',
+ 'Jump to' => '',
+ 'June' => '',
+ 'Last' => '',
+ 'Last section in reading order' => '',
+ 'March' => '',
+ 'May' => '',
+ 'Menu:' => '',
+ 'Name' => '',
+ 'Next' => '',
+ 'Next chapter' => '',
+ 'Next node' => '',
+ 'Next section in reading order' => '',
+ 'Next section on same level' => '',
+ 'Node following in node reading order' => '',
+ 'Node up' => '',
+ 'NodeNext' => '',
+ 'NodePrev' => '',
+ 'NodeUp' => '',
+ 'November' => '',
+ 'October' => '',
+ 'Overview' => '',
+ 'Overview:' => '',
+ 'Prev' => '',
+ 'Previous node' => '',
+ 'Previous section in reading order' => '',
+ 'Previous section on same level' => '',
+ 'Section' => '',
+ 'Section One' => '',
+ 'See %{node_file_href}' => '',
+ 'See %{node_file_href} @cite{%{book}}' => '',
+ 'See %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+ 'See %{reference_name}' => '',
+ 'See @cite{%{book}}' => '',
+ 'See section %{reference_name}' => '',
+ 'See section `%{section}\' in @cite{%{book}}' => '',
+ 'September' => '',
+ 'Short Table of Contents' => '',
+ 'Short table of contents' => '',
+ 'Subsection One-Four' => '',
+ 'Subsection One-One' => '',
+ 'Subsection One-Three' => '',
+ 'Subsection One-Two' => '',
+ 'Subsubsection One-Two-Four' => '',
+ 'Subsubsection One-Two-One' => '',
+ 'Subsubsection One-Two-Three' => '',
+ 'Subsubsection One-Two-Two' => '',
+ 'T2H_today' => '%s, %d %d',
+ 'Table of Contents' => '',
+ 'Table of contents' => '',
+ 'The node you are looking for is at %{href}.' => '',
+ 'This' => '',
+ 'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
+ 'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
+ 'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => '',
+ 'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
+ 'Top' => '',
+ 'Untitled Document' => '',
+ 'Up' => '',
+ 'Up node' => '',
+ 'Up section' => '',
+ 'by @emph{%{user}}' => '',
+ 'by @emph{%{user}} on @emph{%{date}}' => '',
+ 'current' => '',
+ 'on @emph{%{date}}' => '',
+ 'section `%{section}\' in @cite{%{book}}' => '',
+ 'see %{node_file_href}' => '',
+ 'see %{node_file_href} @cite{%{book}}' => '',
+ 'see %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+ 'see %{reference_name}' => '',
+ 'see @cite{%{book}}' => '',
+ 'see section %{reference_name}' => '',
+ 'see section `%{section}\' in @cite{%{book}}' => '',
+ 'unknown' => ''
+ };
+
+$T2H_OBSOLETE_STRINGS->{'en'} = {};
+
+
+$LANGUAGES->{'es'} = {
+ ' The buttons in the navigation panels have the following meaning:' => '',
+ ' where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:' => '',
+ ' Up ' => '',
+ '%{acronym_like} (%{explanation})' => '',
+ '%{month}, %{day} %{year}' => '',
+ '%{name} of %{class}' => '',
+ '%{name} on %{class}' => '',
+ '%{node_file_href}' => '',
+ '%{node_file_href} @cite{%{book}}' => '',
+ '%{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+ '%{reference_name}' => '',
+ '%{style} %{number}' => '',
+ '%{style}: %{caption_first_line}' => '',
+ '%{style}: %{shortcaption_first_line}' => '',
+ '@b{%{quotation_arg}:} ' => '',
+ '@cite{%{book}}' => '',
+ 'About' => '',
+ 'About (help)' => '',
+ 'About This Document' => '',
+ 'April' => 'abril',
+ 'August' => 'agosto',
+ 'Back' => '',
+ 'Beginning of this chapter or previous chapter' => '',
+ 'Button' => '',
+ 'Contents' => '',
+ 'Cover (top) of document' => '',
+ 'Current Position' => '',
+ 'Current section' => '',
+ 'December' => 'diciembre',
+ 'FastBack' => '',
+ 'FastForward' => '',
+ 'February' => 'febrero',
+ 'First' => '',
+ 'First section in reading order' => '',
+ 'Following' => '',
+ 'Following node' => '',
+ 'Footnotes' => '',
+ 'Forward' => '',
+ 'From 1.2.3 go to' => '',
+ 'Go to' => '',
+ 'Index' => 'Index',
+ 'Index Entry' => '',
+ 'January' => 'enero',
+ 'July' => 'julio',
+ 'Jump to' => '',
+ 'June' => 'junio',
+ 'Last' => '',
+ 'Last section in reading order' => '',
+ 'March' => 'marzo',
+ 'May' => 'mayo',
+ 'Menu:' => '',
+ 'Name' => '',
+ 'Next' => '',
+ 'Next chapter' => '',
+ 'Next node' => '',
+ 'Next section in reading order' => '',
+ 'Next section on same level' => '',
+ 'Node following in node reading order' => '',
+ 'Node up' => '',
+ 'NodeNext' => '',
+ 'NodePrev' => '',
+ 'NodeUp' => '',
+ 'November' => 'noviembre',
+ 'October' => 'octubre',
+ 'Overview' => '',
+ 'Overview:' => '',
+ 'Prev' => '',
+ 'Previous node' => '',
+ 'Previous section in reading order' => '',
+ 'Previous section on same level' => '',
+ 'Section' => '',
+ 'Section One' => '',
+ 'See %{node_file_href}' => '',
+ 'See %{node_file_href} @cite{%{book}}' => '',
+ 'See %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+ 'See %{reference_name}' => '',
+ 'See @cite{%{book}}' => '',
+ 'See section %{reference_name}' => '',
+ 'See section `%{section}\' in @cite{%{book}}' => '',
+ 'September' => 'septiembre',
+ 'Short Table of Contents' => 'Resumen del Contenido',
+ 'Short table of contents' => '',
+ 'Subsection One-Four' => '',
+ 'Subsection One-One' => '',
+ 'Subsection One-Three' => '',
+ 'Subsection One-Two' => '',
+ 'Subsubsection One-Two-Four' => '',
+ 'Subsubsection One-Two-One' => '',
+ 'Subsubsection One-Two-Three' => '',
+ 'Subsubsection One-Two-Two' => '',
+ 'T2H_today' => '',
+ 'Table of Contents' => '@\'{@dotless{I}}ndice General',
+ 'Table of contents' => '',
+ 'The node you are looking for is at %{href}.' => '',
+ 'This' => '',
+ 'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
+ 'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
+ 'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => '',
+ 'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
+ 'Top' => '',
+ 'Untitled Document' => '',
+ 'Up' => '',
+ 'Up node' => '',
+ 'Up section' => '',
+ 'by @emph{%{user}}' => '',
+ 'by @emph{%{user}} on @emph{%{date}}' => '',
+ 'current' => '',
+ 'on @emph{%{date}}' => '',
+ 'section `%{section}\' in @cite{%{book}}' => '',
+ 'see %{node_file_href}' => '',
+ 'see %{node_file_href} @cite{%{book}}' => '',
+ 'see %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+ 'see %{reference_name}' => '',
+ 'see @cite{%{book}}' => '',
+ 'see section %{reference_name}' => '',
+ 'see section `%{section}\' in @cite{%{book}}' => '',
+ 'unknown' => ''
+ };
+
+$T2H_OBSOLETE_STRINGS->{'es'} = {
+ 'See' => 'V@\'ease',
+ 'section' => 'secci@\'on',
+ 'see' => 'v@\'ase'
+ };
+
+
+$LANGUAGES->{'fr'} = {
+ ' The buttons in the navigation panels have the following meaning:' => ' Les boutons de navigation ont la signification suivante :',
+ ' where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:' => ' Dans cet exemple on est @`a @strong{ Sous section un-deux-trois } dans un document dont la structure est :',
+ ' Up ' => 'Plus haut',
+ '%{acronym_like} (%{explanation})' => '',
+ '%{month}, %{day} %{year}' => 'le %{day} %{month} %{year}',
+ '%{name} of %{class}' => '%{name} de %{class}',
+ '%{name} on %{class}' => '%{name} de %{class}',
+ '%{node_file_href}' => '',
+ '%{node_file_href} @cite{%{book}}' => '',
+ '%{node_file_href} section `%{section}\' in @cite{%{book}}' => '%{node_file_href} section `%{section}\' dans @cite{%{book}}',
+ '%{reference_name}' => '',
+ '%{style} %{number}' => '',
+ '%{style}: %{caption_first_line}' => '',
+ '%{style}: %{shortcaption_first_line}' => '',
+ '@b{%{quotation_arg}:} ' => '',
+ '@cite{%{book}}' => '',
+ 'About' => 'A propos',
+ 'About (help)' => 'A propos (page d\'aide)',
+ 'About This Document' => 'A propos de ce document',
+ 'April' => 'Avril',
+ 'August' => 'Ao@^ut',
+ 'Back' => 'Retour',
+ 'Beginning of this chapter or previous chapter' => 'D@\'ebut de ce chapitre ou chapitre pr@\'ec@\'edent',
+ 'Button' => 'Bouton',
+ 'Contents' => 'Table des mati@`eres',
+ 'Cover (top) of document' => 'Couverture (top) du document',
+ 'Current Position' => 'Position',
+ 'Current section' => 'Section actuelle',
+ 'December' => 'D@\'ecembre',
+ 'FastBack' => 'RetourRapide',
+ 'FastForward' => 'AvanceRapide',
+ 'February' => 'F@\'evrier',
+ 'First' => 'Premier',
+ 'First section in reading order' => 'Premi@`e section dans l\'ordre de lecture',
+ 'Following' => 'Suivant',
+ 'Following node' => 'N@oe{}ud suivant',
+ 'Footnotes' => 'Notes de bas de page',
+ 'Forward' => 'Avant',
+ 'From 1.2.3 go to' => 'Depuis 1.2.3 aller @`a',
+ 'Go to' => 'Aller @`a',
+ 'Index' => 'Index',
+ 'Index Entry' => 'Entr@\'ee d\'index',
+ 'January' => 'Janvier',
+ 'July' => 'Juillet',
+ 'Jump to' => 'Aller @`a',
+ 'June' => 'Juin',
+ 'Last' => 'Dernier',
+ 'Last section in reading order' => 'Derni@`ere section dans l\'ordre de lecture',
+ 'March' => 'Mars',
+ 'May' => 'Mai',
+ 'Menu:' => 'Menu@ :',
+ 'Name' => 'Nom',
+ 'Next' => 'Suivant',
+ 'Next chapter' => 'Chapitre suivant',
+ 'Next node' => 'N@oe{}ud suivant',
+ 'Next section in reading order' => 'Section suivante dans l\'ordre de lecture',
+ 'Next section on same level' => 'Section suivante au m@^eme niveau',
+ 'Node following in node reading order' => 'N@oe{}ud suivant dans l\'ordre de lecture',
+ 'Node up' => 'N@oe{}ud au dessus',
+ 'NodeNext' => 'N@oe{}udSuivant',
+ 'NodePrev' => 'N@oe{}udPr@\'ec@\'edent',
+ 'NodeUp' => 'N@oe{}udMonter',
+ 'November' => 'Novembre',
+ 'October' => 'Octobre',
+ 'Overview' => 'Vue d\'ensemble',
+ 'Overview:' => 'Vue d\'ensemble@ :',
+ 'Prev' => 'Pr@\'ec@\'edent',
+ 'Previous node' => 'N@oe{}ud pr@\'ec@\'edent',
+ 'Previous section in reading order' => 'Section pr@\'ec@\'edente dans l\'ordre de lecture',
+ 'Previous section on same level' => 'Section pr@\'ec@\'edente au m@^eme niveau',
+ 'Section' => '',
+ 'Section One' => 'Section un',
+ 'See %{node_file_href}' => 'Voir %{node_file_href}',
+ 'See %{node_file_href} @cite{%{book}}' => 'Voir %{node_file_href} @cite{%{book}}',
+ 'See %{node_file_href} section `%{section}\' in @cite{%{book}}' => 'Voir %{node_file_href} section `%{section}\' dans @cite{%{book}}',
+ 'See %{reference_name}' => 'Voir %{reference_name}',
+ 'See @cite{%{book}}' => 'Voir @cite{%{book}}',
+ 'See section %{reference_name}' => 'Voir la section %{reference_name}',
+ 'See section `%{section}\' in @cite{%{book}}' => 'Voir la section `%{section}\' dans @cite{%{book}}',
+ 'September' => 'Septembre',
+ 'Short Table of Contents' => 'R@\'esum@\'e du contenu',
+ 'Short table of contents' => 'R@\'esum@\'e du contenu',
+ 'Subsection One-Four' => 'Sous section un-quatre',
+ 'Subsection One-One' => 'Sous section un-un',
+ 'Subsection One-Three' => 'Sous section un-trois',
+ 'Subsection One-Two' => 'Sous section un-deux',
+ 'Subsubsection One-Two-Four' => 'Sous sous section un-deux-quatre',
+ 'Subsubsection One-Two-One' => 'Sous sous section un-deux-un',
+ 'Subsubsection One-Two-Three' => 'Sous sous section un-deux-trois',
+ 'Subsubsection One-Two-Two' => 'Sous sous section un-deux-deux',
+ 'T2H_today' => 'le %2$d %1$s %3$d',
+ 'Table of Contents' => 'Table des mati@`eres',
+ 'Table of contents' => 'Table des mati@`eres',
+ 'The node you are looking for is at %{href}.' => 'Le n@oe{}ud que vous recherchez est ici@ : %{href}.',
+ 'This' => 'Ici',
+ 'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Ce document a @\'et@\'e g@\'en@\'er@\'e par @emph{%{user}} @emph{%{date}} en utilisant @uref{%{program_homepage}, @emph{%{program}}}.',
+ 'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Ce document a @\'et@\'e g@\'en@\'er@\'e par @emph{%{user}} en utilisant @uref{%{program_homepage}, @emph{%{program}}}.',
+ 'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => 'Ce document a @\'et@\'e g@\'en@\'er@\'e @emph{%{date}} en utilisant @uref{%{program_homepage}, @emph{%{program}}}',
+ 'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Ce document a @\'et@\'e g@\'en@\'er@\'e en utilisant @uref{%{program_homepage}, @emph{%{program}}}.',
+ 'Top' => '',
+ 'Untitled Document' => 'Document sans titre',
+ 'Up' => 'Monter',
+ 'Up node' => 'N@oe{}ud au dessus',
+ 'Up section' => 'Section sup@\'erieure',
+ 'by @emph{%{user}}' => 'par @emph{%{user}}',
+ 'by @emph{%{user}} on @emph{%{date}}' => 'par @emph{%{user}} @emph{%{date}}',
+ 'current' => 'courante',
+ 'on @emph{%{date}}' => '@emph{%{date}}',
+ 'section `%{section}\' in @cite{%{book}}' => 'section `%{section}\' dans @cite{%{book}}',
+ 'see %{node_file_href}' => 'voir %{node_file_href}',
+ 'see %{node_file_href} @cite{%{book}}' => 'voir %{node_file_href} @cite{%{book}}',
+ 'see %{node_file_href} section `%{section}\' in @cite{%{book}}' => 'voir %{node_file_href} section `%{section}\' dans @cite{%{book}}',
+ 'see %{reference_name}' => 'voir %{reference_name}',
+ 'see @cite{%{book}}' => 'voir @cite{%{book}}',
+ 'see section %{reference_name}' => 'voir la section %{reference_name}',
+ 'see section `%{section}\' in @cite{%{book}}' => 'voir la section `%{section}\' dans @cite{{book}}',
+ 'unknown' => 'inconnu'
+ };
+
+$T2H_OBSOLETE_STRINGS->{'fr'} = {
+ ' This document was generated %{who_and_when_generated} using %{program_homepage_href}.' => ' Ce document a &eacute;t&eacute; g&eacute;n&eacute;r&eacute; %{who_and_when_generated} en utilisant %{program_homepage_href}.',
+ ' where the <strong> Example </strong> assumes that the current position is at <strong> Subsubsection One-Two-Three </strong> of a document of the following structure:' => ' Dans cet exemple on est &agrave; <strong> Sous section un-deux-trois </strong> dans un document dont la structure est :',
+ '%{node_file_href} section `%{section}\' in <cite>%{book}</cite>' => '%{node_file_href} section `%{section}\' dans <cite>%{book}</cite>',
+ 'See' => 'Voir',
+ 'See %{node_file_href} <cite>%{book}</cite>' => 'Voir %{node_file_href} <cite>%{book}</cite>',
+ 'See %{node_file_href} section `%{section}\' in <cite>%{book}</cite>' => 'Voir %{node_file_href} section `%{section}\' dans <cite>%{book}</cite>',
+ 'See <cite>%{book}</cite>' => 'Voir <cite>%{book}</cite>',
+ 'See section `%{section}\' in <cite>%{book}</cite>' => 'Voir la section `%{section}\' dans <cite>%{book}</cite>',
+ 'This document was generated by <i>%{user}</i> on <i>%{date}</i> using %{program_homepage_href}.' => 'Ce document a &eacute;t&eacute; g&eacute;n&eacute;r&eacute; par <i>%{user}</i> <i>%{date}</i> en utilisant %{program_homepage_href}.',
+ 'This document was generated by <i>%{user}</i> using %{program_homepage_href}.' => 'Ce document a &eacute;t&eacute; g&eacute;n&eacute;r&eacute; par <i>%{user}</i> en utilisant %{program_homepage_href}.',
+ 'This document was generated by @emph{%{user}} on @emph{%{date}} using %{program_homepage_href}.' => 'Ce document a @\'et@\'e g@\'en@\'er@\'e par @emph{%{user}} @emph{%{date}} en utilisant %{program_homepage_href}.',
+ 'This document was generated by @emph{%{user}} using %{program_homepage_href}.' => 'Ce document a @\'et@\'e g@\'en@\'er@\'e par @emph{%{user}} en utilisant %{program_homepage_href}.',
+ 'This document was generated on <i>%{date}</i> using %{program_homepage_href}.' => 'Ce document a &eacute;t&eacute; g&eacute;n&eacute;r&eacute; <i>%{date}</i> en utilisant %{program_homepage_href}.',
+ 'This document was generated on @emph{%{date}} using %{program_homepage_href}.' => 'Ce document a @\'et@\'e g@\'en@\'er@\'e @emph{%{date}} en utilisant %{program_homepage_href}.',
+ 'This document was generated on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Ce document a @\'et@\'e g@\'en@\'er@\'e @emph{%{date}} en utilisant @uref{%{program_homepage}, @emph{%{program}}}.',
+ 'This document was generated using %{program_homepage_href}.' => 'Ce document a @\'et@\'e g@\'en@\'er@\'e en utilisant %{program_homepage_href}.',
+ 'about (help)' => '@`a propos (page d\'aide)',
+ 'about (this page)' => 'a propos (cette page)',
+ 'beginning of this chapter or previous chapter' => 'd@\'ebut de ce chapitre ou chapitre pr@\'ec@\'edent',
+ 'by <i>%{user}</i>' => 'par <i>%{user}</i>',
+ 'by <i>%{user}</i> on <i>%{date}</i>' => 'par <i>%{user}</i> <i>%{date}</i>',
+ 'concept index' => 'index',
+ 'cover (top) of document' => 'couverture (top) du document',
+ 'current section' => 'section actuelle',
+ 'first section in reading order' => 'premi@`e section dans l\'ordre de lecture',
+ 'following node' => 'node suivant',
+ 'index' => 'index',
+ 'last section in reading order' => 'derni@`ere section dans l\'ordre de lecture',
+ 'next chapter' => 'chapitre suivant',
+ 'next node' => 'node suivant',
+ 'next section in reading order' => 'section suivante dans l\'ordre de lecture',
+ 'next section on same level' => 'section suivante au m@^eme niveau',
+ 'node following in node reading order' => 'node suivant dans l\'ordre des nodes',
+ 'node up' => 'node au dessus',
+ 'on <i>%{date}</i>' => '<i>%{date}</i>',
+ 'previous node' => 'node pr@\'ec@\'edent',
+ 'previous section in reading order' => 'section pr@\'ec@\'edente dans l\'ordre de lecture',
+ 'previous section on same level' => 'section pr@\'ec@\'edente au m@^eme niveau',
+ 'section' => 'section',
+ 'section `%{section}\' in <cite>%{book}</cite>' => 'section `%{section}\' dans <cite>%{book}</cite>',
+ 'see' => 'voir',
+ 'see %{node_file_href} <cite>%{book}</cite>' => 'voir %{node_file_href} <cite>%{book}</cite>',
+ 'see %{node_file_href} section `%{section}\' in <cite>%{book}</cite>' => 'voir %{node_file_href} section `%{section}\' dans <cite>%{book}</cite>',
+ 'see <cite>%{book}</cite>' => 'voir <cite>%{book}</cite>',
+ 'see section `%{section}\' in <cite>%{book}</cite>' => 'voir la section `%{section}\' dans <cite>%{book}</cite>',
+ 'short table of contents' => 'table des mati@`eres r@\'esum@\'ee',
+ 'table of contents' => 'table des mati@`eres',
+ 'up node' => 'node au dessus',
+ 'up section' => 'section sup@\'erieure'
+ };
+
+
+$LANGUAGES->{'ja'} = {
+ ' The buttons in the navigation panels have the following meaning:' => 'ナビゲーションパネル中のボタンには以下の意味があります。',
+ ' where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:' => '@strong{例}では、以下に示す構造を持つ文書の@strong{1.2.3項}を現在位置に仮定しています。',
+ ' Up ' => '上',
+ '%{acronym_like} (%{explanation})' => '',
+ '%{month}, %{day} %{year}' => '%{year}年%{month}月%{day}日',
+ '%{name} of %{class}' => '',
+ '%{name} on %{class}' => '',
+ '%{node_file_href}' => '',
+ '%{node_file_href} @cite{%{book}}' => '',
+ '%{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+ '%{reference_name}' => '',
+ '%{style} %{number}' => '',
+ '%{style}: %{caption_first_line}' => '',
+ '%{style}: %{shortcaption_first_line}' => '',
+ '@b{%{quotation_arg}:} ' => '',
+ '@cite{%{book}}' => '',
+ 'About' => '',
+ 'About (help)' => '',
+ 'About This Document' => 'この文書について',
+ 'April' => '4月',
+ 'August' => '8月',
+ 'Back' => '',
+ 'Beginning of this chapter or previous chapter' => '',
+ 'Button' => 'ボタン',
+ 'Contents' => '目次',
+ 'Cover (top) of document' => '',
+ 'Current Position' => '現在位置',
+ 'Current section' => '',
+ 'December' => '12月',
+ 'FastBack' => '',
+ 'FastForward' => '',
+ 'February' => '2月',
+ 'First' => '',
+ 'First section in reading order' => '',
+ 'Following' => '',
+ 'Following node' => '',
+ 'Footnotes' => '脚注',
+ 'Forward' => '',
+ 'From 1.2.3 go to' => '1.2.3項からの移動先',
+ 'Go to' => '移動先',
+ 'Index' => '見出し',
+ 'Index Entry' => '見出し一覧',
+ 'January' => '1月',
+ 'July' => '7月',
+ 'Jump to' => '移動',
+ 'June' => '6月',
+ 'Last' => '',
+ 'Last section in reading order' => '',
+ 'March' => '3月',
+ 'May' => '5月',
+ 'Menu:' => 'メニュー',
+ 'Name' => '名称',
+ 'Next' => '次',
+ 'Next chapter' => '',
+ 'Next node' => '',
+ 'Next section in reading order' => '',
+ 'Next section on same level' => '',
+ 'Node following in node reading order' => '',
+ 'Node up' => '',
+ 'NodeNext' => '',
+ 'NodePrev' => '',
+ 'NodeUp' => '',
+ 'November' => '11月',
+ 'October' => '10月',
+ 'Overview' => '概要',
+ 'Overview:' => '概要:',
+ 'Prev' => '前',
+ 'Previous node' => '',
+ 'Previous section in reading order' => '',
+ 'Previous section on same level' => '',
+ 'Section' => '項',
+ 'Section One' => '第1項',
+ 'See %{node_file_href}' => '',
+ 'See %{node_file_href} @cite{%{book}}' => '',
+ 'See %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+ 'See %{reference_name}' => '',
+ 'See @cite{%{book}}' => '',
+ 'See section %{reference_name}' => '',
+ 'See section `%{section}\' in @cite{%{book}}' => '',
+ 'September' => '9月',
+ 'Short Table of Contents' => '簡略化した目次',
+ 'Short table of contents' => '',
+ 'Subsection One-Four' => '第1.4項',
+ 'Subsection One-One' => '第1.1項',
+ 'Subsection One-Three' => '第1.3項',
+ 'Subsection One-Two' => '第1.2項',
+ 'Subsubsection One-Two-Four' => '第1.2.4項',
+ 'Subsubsection One-Two-One' => '第1.2.1項',
+ 'Subsubsection One-Two-Three' => '第1.2.3項',
+ 'Subsubsection One-Two-Two' => '第1.2.2項',
+ 'T2H_today' => '%s, %d %d',
+ 'Table of Contents' => '目次',
+ 'Table of contents' => '',
+ 'The node you are looking for is at %{href}.' => '',
+ 'This' => '',
+ 'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => 'この文書は@emph{%{user}}によって@emph{%{date}}に@uref{%{program_homepage}, @emph{%{program}}}を用いて生成されました。',
+ 'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => 'この文書は@emph{%{user}}によって@uref{%{program_homepage}, @emph{%{program}}}を用いて生成されました。',
+ 'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => 'この文書は@emph{%{date}}に@uref{%{program_homepage}, @emph{%{program}}}を用いて生成されました。',
+ 'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => 'この文書は@uref{%{program_homepage}, @emph{%{program}}}を用いて生成されました。',
+ 'Top' => '冒頭',
+ 'Untitled Document' => '無題の文書',
+ 'Up' => '',
+ 'Up node' => '',
+ 'Up section' => '',
+ 'by @emph{%{user}}' => '@emph{%{user}}',
+ 'by @emph{%{user}} on @emph{%{date}}' => '@emph{%{user}}, @emph{%{date}',
+ 'current' => '現在位置',
+ 'on @emph{%{date}}' => '@emph{%{date}}',
+ 'section `%{section}\' in @cite{%{book}}' => '@cite{%{book}}の `%{section}\' ',
+ 'see %{node_file_href}' => '%{node_file_href}参照',
+ 'see %{node_file_href} @cite{%{book}}' => '%{node_file_href} @cite{%{book}}参照',
+ 'see %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+ 'see %{reference_name}' => '',
+ 'see @cite{%{book}}' => '',
+ 'see section %{reference_name}' => '',
+ 'see section `%{section}\' in @cite{%{book}}' => '',
+ 'unknown' => '不明'
+ };
+
+$T2H_OBSOLETE_STRINGS->{'ja'} = {
+ 'about (help)' => '使用法 (ヘルプ)',
+ 'beginning of this chapter or previous chapter' => 'この章または前の章の冒頭',
+ 'cover (top) of document' => '文書の表紙 (トップ)',
+ 'current section' => '現在の節',
+ 'first section in reading order' => '文書順で前の項',
+ 'following node' => '次の節',
+ 'index' => '見出し',
+ 'last section in reading order' => '文書順で最後の項',
+ 'next chapter' => '次の章',
+ 'next node' => '次の節',
+ 'next section in reading order' => '文書順で次の項',
+ 'next section on same level' => '同じ階層にある次の項',
+ 'node following in node reading order' => '文書順で次の節',
+ 'node up' => '上の節へ',
+ 'previous node' => '前の節',
+ 'previous section in reading order' => '文書順で前の節',
+ 'previous section on same level' => '同じ階層にある前の項',
+ 'short table of contents' => '簡略化した目次',
+ 'table of contents' => '文書の目次',
+ 'up node' => '上の節',
+ 'up section' => '上の項'
+ };
+
+
+$LANGUAGES->{'nl'} = {
+ ' The buttons in the navigation panels have the following meaning:' => '',
+ ' where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:' => '',
+ ' Up ' => '',
+ '%{acronym_like} (%{explanation})' => '',
+ '%{month}, %{day} %{year}' => '',
+ '%{name} of %{class}' => '',
+ '%{name} on %{class}' => '',
+ '%{node_file_href}' => '',
+ '%{node_file_href} @cite{%{book}}' => '',
+ '%{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+ '%{reference_name}' => '',
+ '%{style} %{number}' => '',
+ '%{style}: %{caption_first_line}' => '',
+ '%{style}: %{shortcaption_first_line}' => '',
+ '@b{%{quotation_arg}:} ' => '',
+ '@cite{%{book}}' => '',
+ 'About' => '',
+ 'About (help)' => '',
+ 'About This Document' => 'No translation available!',
+ 'April' => 'April',
+ 'August' => 'Augustus',
+ 'Back' => '',
+ 'Beginning of this chapter or previous chapter' => '',
+ 'Button' => '',
+ 'Contents' => '',
+ 'Cover (top) of document' => '',
+ 'Current Position' => '',
+ 'Current section' => '',
+ 'December' => 'December',
+ 'FastBack' => '',
+ 'FastForward' => '',
+ 'February' => 'Februari',
+ 'First' => '',
+ 'First section in reading order' => '',
+ 'Following' => '',
+ 'Following node' => '',
+ 'Footnotes' => 'No translation available!',
+ 'Forward' => '',
+ 'From 1.2.3 go to' => '',
+ 'Go to' => '',
+ 'Index' => 'Index',
+ 'Index Entry' => '',
+ 'January' => 'Januari',
+ 'July' => 'Juli',
+ 'Jump to' => '',
+ 'June' => 'Juni',
+ 'Last' => '',
+ 'Last section in reading order' => '',
+ 'March' => 'Maart',
+ 'May' => 'Mei',
+ 'Menu:' => '',
+ 'Name' => '',
+ 'Next' => '',
+ 'Next chapter' => '',
+ 'Next node' => '',
+ 'Next section in reading order' => '',
+ 'Next section on same level' => '',
+ 'Node following in node reading order' => '',
+ 'Node up' => '',
+ 'NodeNext' => '',
+ 'NodePrev' => '',
+ 'NodeUp' => '',
+ 'November' => 'November',
+ 'October' => 'Oktober',
+ 'Overview' => '',
+ 'Overview:' => '',
+ 'Prev' => '',
+ 'Previous node' => '',
+ 'Previous section in reading order' => '',
+ 'Previous section on same level' => '',
+ 'Section' => '',
+ 'Section One' => '',
+ 'See %{node_file_href}' => '',
+ 'See %{node_file_href} @cite{%{book}}' => '',
+ 'See %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+ 'See %{reference_name}' => '',
+ 'See @cite{%{book}}' => '',
+ 'See section %{reference_name}' => '',
+ 'See section `%{section}\' in @cite{%{book}}' => '',
+ 'September' => 'September',
+ 'Short Table of Contents' => 'Korte inhoudsopgave',
+ 'Short table of contents' => '',
+ 'Subsection One-Four' => '',
+ 'Subsection One-One' => '',
+ 'Subsection One-Three' => '',
+ 'Subsection One-Two' => '',
+ 'Subsubsection One-Two-Four' => '',
+ 'Subsubsection One-Two-One' => '',
+ 'Subsubsection One-Two-Three' => '',
+ 'Subsubsection One-Two-Two' => '',
+ 'T2H_today' => '',
+ 'Table of Contents' => 'Inhoudsopgave',
+ 'Table of contents' => '',
+ 'The node you are looking for is at %{href}.' => '',
+ 'This' => '',
+ 'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
+ 'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
+ 'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => '',
+ 'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
+ 'Top' => '',
+ 'Untitled Document' => '',
+ 'Up' => '',
+ 'Up node' => '',
+ 'Up section' => '',
+ 'by @emph{%{user}}' => '',
+ 'by @emph{%{user}} on @emph{%{date}}' => '',
+ 'current' => '',
+ 'on @emph{%{date}}' => '',
+ 'section `%{section}\' in @cite{%{book}}' => '',
+ 'see %{node_file_href}' => '',
+ 'see %{node_file_href} @cite{%{book}}' => '',
+ 'see %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+ 'see %{reference_name}' => '',
+ 'see @cite{%{book}}' => '',
+ 'see section %{reference_name}' => '',
+ 'see section `%{section}\' in @cite{%{book}}' => '',
+ 'unknown' => ''
+ };
+
+$T2H_OBSOLETE_STRINGS->{'nl'} = {
+ 'See' => 'Zie',
+ 'section' => 'sectie',
+ 'see' => 'zie'
+ };
+
+
+$LANGUAGES->{'no'} = {
+ ' The buttons in the navigation panels have the following meaning:' => '',
+ ' where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:' => '',
+ ' Up ' => '',
+ '%{acronym_like} (%{explanation})' => '',
+ '%{month}, %{day} %{year}' => '',
+ '%{name} of %{class}' => '',
+ '%{name} on %{class}' => '',
+ '%{node_file_href}' => '',
+ '%{node_file_href} @cite{%{book}}' => '',
+ '%{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+ '%{reference_name}' => '',
+ '%{style} %{number}' => '',
+ '%{style}: %{caption_first_line}' => '',
+ '%{style}: %{shortcaption_first_line}' => '',
+ '@b{%{quotation_arg}:} ' => '',
+ '@cite{%{book}}' => '',
+ 'About' => '',
+ 'About (help)' => '',
+ 'About This Document' => 'No translation available!',
+ 'April' => 'april',
+ 'August' => 'august',
+ 'Back' => '',
+ 'Beginning of this chapter or previous chapter' => '',
+ 'Button' => '',
+ 'Contents' => '',
+ 'Cover (top) of document' => '',
+ 'Current Position' => '',
+ 'Current section' => '',
+ 'December' => 'desember',
+ 'FastBack' => '',
+ 'FastForward' => '',
+ 'February' => 'februar',
+ 'First' => '',
+ 'First section in reading order' => '',
+ 'Following' => '',
+ 'Following node' => '',
+ 'Footnotes' => 'No translation available!',
+ 'Forward' => '',
+ 'From 1.2.3 go to' => '',
+ 'Go to' => '',
+ 'Index' => 'Indeks',
+ 'Index Entry' => '',
+ 'January' => 'januar',
+ 'July' => 'juli',
+ 'Jump to' => '',
+ 'June' => 'juni',
+ 'Last' => '',
+ 'Last section in reading order' => '',
+ 'March' => 'mars',
+ 'May' => 'mai',
+ 'Menu:' => '',
+ 'Name' => '',
+ 'Next' => '',
+ 'Next chapter' => '',
+ 'Next node' => '',
+ 'Next section in reading order' => '',
+ 'Next section on same level' => '',
+ 'Node following in node reading order' => '',
+ 'Node up' => '',
+ 'NodeNext' => '',
+ 'NodePrev' => '',
+ 'NodeUp' => '',
+ 'November' => 'november',
+ 'October' => 'oktober',
+ 'Overview' => '',
+ 'Overview:' => '',
+ 'Prev' => '',
+ 'Previous node' => '',
+ 'Previous section in reading order' => '',
+ 'Previous section on same level' => '',
+ 'Section' => '',
+ 'Section One' => '',
+ 'See %{node_file_href}' => '',
+ 'See %{node_file_href} @cite{%{book}}' => '',
+ 'See %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+ 'See %{reference_name}' => '',
+ 'See @cite{%{book}}' => '',
+ 'See section %{reference_name}' => '',
+ 'See section `%{section}\' in @cite{%{book}}' => '',
+ 'September' => 'september',
+ 'Short Table of Contents' => 'Kort innholdsfortegnelse',
+ 'Short table of contents' => '',
+ 'Subsection One-Four' => '',
+ 'Subsection One-One' => '',
+ 'Subsection One-Three' => '',
+ 'Subsection One-Two' => '',
+ 'Subsubsection One-Two-Four' => '',
+ 'Subsubsection One-Two-One' => '',
+ 'Subsubsection One-Two-Three' => '',
+ 'Subsubsection One-Two-Two' => '',
+ 'T2H_today' => '',
+ 'Table of Contents' => 'Innholdsfortegnelse',
+ 'Table of contents' => '',
+ 'The node you are looking for is at %{href}.' => '',
+ 'This' => '',
+ 'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
+ 'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
+ 'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => '',
+ 'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => '',
+ 'Top' => '',
+ 'Untitled Document' => '',
+ 'Up' => '',
+ 'Up node' => '',
+ 'Up section' => '',
+ 'by @emph{%{user}}' => '',
+ 'by @emph{%{user}} on @emph{%{date}}' => '',
+ 'current' => '',
+ 'on @emph{%{date}}' => '',
+ 'section `%{section}\' in @cite{%{book}}' => '',
+ 'see %{node_file_href}' => '',
+ 'see %{node_file_href} @cite{%{book}}' => '',
+ 'see %{node_file_href} section `%{section}\' in @cite{%{book}}' => '',
+ 'see %{reference_name}' => '',
+ 'see @cite{%{book}}' => '',
+ 'see section %{reference_name}' => '',
+ 'see section `%{section}\' in @cite{%{book}}' => '',
+ 'unknown' => ''
+ };
+
+$T2H_OBSOLETE_STRINGS->{'no'} = {
+ 'See' => 'Se',
+ 'section' => 'avsnitt',
+ 'see' => 'se'
+ };
+
+
+$LANGUAGES->{'pt'} = {
+ ' The buttons in the navigation panels have the following meaning:' => ' Os bot@~oes nos pain@\'eis de navega@,{c}@~ao possuem os seguintes significados:',
+ ' where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:' => ' onde o @strong{ Exemplo } assume que a posi@,{c}@~ao atual localiza-se em @strong{ Subsub@,{c}@~ao Um-Dois-Tr@^es } de um documento com a seguinte estrutura:',
+ ' Up ' => ' Acima ',
+ '%{acronym_like} (%{explanation})' => '',
+ '%{month}, %{day} %{year}' => '%{day} de %{month} de %{year}',
+ '%{name} of %{class}' => '%{name} da %{class}',
+ '%{name} on %{class}' => '%{name} na %{class}',
+ '%{node_file_href}' => '',
+ '%{node_file_href} @cite{%{book}}' => '',
+ '%{node_file_href} section `%{section}\' in @cite{%{book}}' => '%{node_file_href} se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+ '%{reference_name}' => '',
+ '%{style} %{number}' => '',
+ '%{style}: %{caption_first_line}' => '',
+ '%{style}: %{shortcaption_first_line}' => '',
+ '@b{%{quotation_arg}:} ' => '',
+ '@cite{%{book}}' => '',
+ 'About' => 'Sobre',
+ 'About (help)' => 'Sobre (ajuda)',
+ 'About This Document' => 'Sobre Esse Documento',
+ 'April' => 'Abril',
+ 'August' => 'Agosto',
+ 'Back' => 'Volta',
+ 'Beginning of this chapter or previous chapter' => 'Come@,{c}o desse cap@\'itulo ou cap@\'itulo anterior',
+ 'Button' => 'Bot@~ao',
+ 'Contents' => 'Conte@\'udo',
+ 'Cover (top) of document' => 'In@\'icio (topo) do documento',
+ 'Current Position' => 'Posi@,{c}@~ao Atual',
+ 'Current section' => 'Se@,{c}@~ao atual',
+ 'December' => 'Dezembro',
+ 'FastBack' => 'Voltar R@\'apido',
+ 'FastForward' => 'Avan@,{c}ar R@\'apido',
+ 'February' => 'Fevereiro',
+ 'First' => 'Primeiro',
+ 'First section in reading order' => 'Primeira se@,{c}@~ao na ordem de leitura',
+ 'Following' => 'Seguinte',
+ 'Following node' => 'Nodo seguinte',
+ 'Footnotes' => 'Notas de Rodap@\'e',
+ 'Forward' => 'Avan@,{c}ar',
+ 'From 1.2.3 go to' => 'De 1.2.3 v@\'a para',
+ 'Go to' => 'V@\'a para',
+ 'Index' => '@\'Indice',
+ 'Index Entry' => 'Entrada de @\'Indice',
+ 'January' => 'Janeiro',
+ 'July' => 'Julho',
+ 'Jump to' => 'Pular para',
+ 'June' => 'Junho',
+ 'Last' => '@\'Ultimo',
+ 'Last section in reading order' => '@\'Ultima se@,{c}@~ao na ordem de leitura',
+ 'March' => 'Mar@,{c}o',
+ 'May' => 'Maio',
+ 'Menu:' => '',
+ 'Name' => 'Nome',
+ 'Next' => 'Pr@\'oximo',
+ 'Next chapter' => 'Pr@\'oximo cap@\'itulo',
+ 'Next node' => 'Pr@\'oximo nodo',
+ 'Next section in reading order' => 'Pr@\'oxima se@,{c}@~ao na ordem de leitura',
+ 'Next section on same level' => 'Pr@\'oxima se@,{c}@~ao no mesmo n@\'ivel',
+ 'Node following in node reading order' => 'Nodo seguinte na ordem de leitura de nodos',
+ 'Node up' => 'Nodo acima',
+ 'NodeNext' => 'Pr@\'oximo Nodo',
+ 'NodePrev' => 'Nodo Anterior',
+ 'NodeUp' => 'Nodo Acima',
+ 'November' => 'Novembro',
+ 'October' => 'Outubro',
+ 'Overview' => 'Vis@~ao geral',
+ 'Overview:' => 'Vis@~ao geral:',
+ 'Prev' => 'Pr@\'evio',
+ 'Previous node' => 'Nodo anterior',
+ 'Previous section in reading order' => 'Se@,{c}@~ao anterior na ordem de leitura',
+ 'Previous section on same level' => 'Se@,{c}@~ao anterior no mesmo n@\'ivel',
+ 'Section' => 'Se@,{c}@~ao',
+ 'Section One' => 'Se@,{c}@~ao Um',
+ 'See %{node_file_href}' => 'Veja %{node_file_href}',
+ 'See %{node_file_href} @cite{%{book}}' => 'Veja %{node_file_href} @cite{%{book}}',
+ 'See %{node_file_href} section `%{section}\' in @cite{%{book}}' => 'Veja %{node_file_href} se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+ 'See %{reference_name}' => 'Veja %{reference_name}',
+ 'See @cite{%{book}}' => 'Veja @cite{%{book}}',
+ 'See section %{reference_name}' => 'Veja se@,{c}@~ao %{reference_name}',
+ 'See section `%{section}\' in @cite{%{book}}' => 'Veja se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+ 'September' => 'Setembro',
+ 'Short Table of Contents' => 'Breve Sum@\'ario',
+ 'Short table of contents' => 'Breve sum@\'ario',
+ 'Subsection One-Four' => 'Subse@,{c}@~ao Um-Quatro',
+ 'Subsection One-One' => 'Subse@,{c}@~ao Um-Um',
+ 'Subsection One-Three' => 'Subse@,{c}@~ao Um-Tr@^es',
+ 'Subsection One-Two' => 'Subse@,{c}@~ao Um-Dois',
+ 'Subsubsection One-Two-Four' => 'Subse@,{c}@~ao Um-Dois-Quatro',
+ 'Subsubsection One-Two-One' => 'Subse@,{c}@~ao Um-Dois-Um',
+ 'Subsubsection One-Two-Three' => 'Subse@,{c}@~ao Um-Dois-Tr@^es',
+ 'Subsubsection One-Two-Two' => 'Subse@,{c}@~ao Um-Dois-Dois',
+ 'T2H_today' => '',
+ 'Table of Contents' => 'Sum@\'ario',
+ 'Table of contents' => 'Sum@\'ario',
+ 'The node you are looking for is at %{href}.' => 'O nodo que vo@^e est@\'a olhando est@\'a em %{href}.',
+ 'This' => 'Esse',
+ 'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Esse documento foi gereado por @emph{%{user}} em @emph{%{date}} usando @uref{%{program_homepage}, @emph{%{program}}}.',
+ 'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Esse documento foi gerado por @emph{%{user}} usando @uref{%{program_homepage}, @emph{%{program}}}.',
+ 'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => 'Esse documento foi gerado em @i{%{date}} usando @uref{%{program_homepage}, @i{%{program}}}.',
+ 'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Esse documento foi gerado usando @uref{%{program_homepage}, @emph{%{program}}}.',
+ 'Top' => 'Topo',
+ 'Untitled Document' => 'Documento Sem Nome',
+ 'Up' => 'Acima',
+ 'Up node' => 'Nodo acima',
+ 'Up section' => 'Se@,{c}@~ao acima',
+ 'by @emph{%{user}}' => 'por @emph{%{user}}',
+ 'by @emph{%{user}} on @emph{%{date}}' => 'por @emph{%{user}} em @emph{%{date}}',
+ 'current' => 'atual',
+ 'on @emph{%{date}}' => 'em @emph{%{date}}',
+ 'section `%{section}\' in @cite{%{book}}' => 'se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+ 'see %{node_file_href}' => 'veja %{node_file_href}',
+ 'see %{node_file_href} @cite{%{book}}' => 'veja %{node_file_href} @cite{%{book}}',
+ 'see %{node_file_href} section `%{section}\' in @cite{%{book}}' => 'veja %{node_file_href} se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+ 'see %{reference_name}' => 'veja %{reference_name}',
+ 'see @cite{%{book}}' => 'veja @cite{%{book}}',
+ 'see section %{reference_name}' => 'veja se@,{c}@~ao %{reference_name}',
+ 'see section `%{section}\' in @cite{%{book}}' => 'veja se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+ 'unknown' => 'desconhecido'
+ };
+
+$T2H_OBSOLETE_STRINGS->{'pt'} = {
+ 'See' => 'Veja',
+ 'about (help)' => 'sobre (ajuda)',
+ 'beginning of this chapter or previous chapter' => 'come@,{c}o desse cap@\'itulo ou cap@\'itulo anterior',
+ 'cover (top) of document' => 'in@\'icio (topo) do documento',
+ 'current section' => 'se@,{c}@~ao atual',
+ 'first section in reading order' => 'primeira se@,{c}@~ao na ordem de leitura',
+ 'following node' => 'nodo seguinte',
+ 'index' => '@\'indice',
+ 'last section in reading order' => '@\'ultima se@,{c}@~ao na ordem de leitura',
+ 'next chapter' => 'pr@\'oximo cap@\'itulo',
+ 'next node' => 'pr@\'oximo nodo',
+ 'next section in reading order' => 'pr@\'oxima se@,{c}@~ao na ordem de leitura',
+ 'next section on same level' => 'pr@\'oxima se@,{c}@~ao no mesmo n@\'ivel',
+ 'node following in node reading order' => 'nodo seguinte na ordem de leitura de nodos',
+ 'node up' => 'nodo acima',
+ 'previous node' => 'nodo anterior',
+ 'previous section in reading order' => 'se@,{c}@~ao anterior na ordem de leitura',
+ 'previous section on same level' => 'se@,{c}@~ao anterior no mesmo n@\'ivel',
+ 'section' => 'Se@,{c}@~ao',
+ 'see' => 'veja',
+ 'short table of contents' => 'breve sum@\'ario',
+ 'table of contents' => 'sum@\'ario',
+ 'up node' => 'nodo acima',
+ 'up section' => 'se@,{c}@~ao acima'
+ };
+
+
+$LANGUAGES->{'pt_BR'} = {
+ ' The buttons in the navigation panels have the following meaning:' => ' Os bot@~oes nos pain@\'eis de navega@,{c}@~ao possuem os seguintes significados:',
+ ' where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:' => ' onde o @strong{ Exemplo } assume que a posi@,{c}@~ao atual localiza-se em @strong{ Subsub@,{c}@~ao Um-Dois-Tr@^es } de um documento com a seguinte estrutura:',
+ ' Up ' => ' Acima ',
+ '%{acronym_like} (%{explanation})' => '',
+ '%{month}, %{day} %{year}' => '%{day} de %{month} de %{year}',
+ '%{name} of %{class}' => '%{name} da %{class}',
+ '%{name} on %{class}' => '%{name} na %{class}',
+ '%{node_file_href}' => '',
+ '%{node_file_href} @cite{%{book}}' => '',
+ '%{node_file_href} section `%{section}\' in @cite{%{book}}' => '%{node_file_href} se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+ '%{reference_name}' => '',
+ '%{style} %{number}' => '',
+ '%{style}: %{caption_first_line}' => '',
+ '%{style}: %{shortcaption_first_line}' => '',
+ '@b{%{quotation_arg}:} ' => '',
+ '@cite{%{book}}' => '',
+ 'About' => 'Sobre',
+ 'About (help)' => 'Sobre (ajuda)',
+ 'About This Document' => 'Sobre Esse Documento',
+ 'April' => 'Abril',
+ 'August' => 'Agosto',
+ 'Back' => 'Volta',
+ 'Beginning of this chapter or previous chapter' => 'Come@,{c}o desse cap@\'itulo ou cap@\'itulo anterior',
+ 'Button' => 'Bot@~ao',
+ 'Contents' => 'Conte@\'udo',
+ 'Cover (top) of document' => 'In@\'icio (topo) do documento',
+ 'Current Position' => 'Posi@,{c}@~ao Atual',
+ 'Current section' => 'Se@,{c}@~ao atual',
+ 'December' => 'Dezembro',
+ 'FastBack' => 'Voltar R@\'apido',
+ 'FastForward' => 'Avan@,{c}ar R@\'apido',
+ 'February' => 'Fevereiro',
+ 'First' => 'Primeiro',
+ 'First section in reading order' => 'Primeira se@,{c}@~ao na ordem de leitura',
+ 'Following' => 'Seguinte',
+ 'Following node' => 'Nodo seguinte',
+ 'Footnotes' => 'Notas de Rodap@\'e',
+ 'Forward' => 'Avan@,{c}ar',
+ 'From 1.2.3 go to' => 'De 1.2.3 v@\'a para',
+ 'Go to' => 'V@\'a para',
+ 'Index' => '@\'Indice',
+ 'Index Entry' => 'Entrada de @\'Indice',
+ 'January' => 'Janeiro',
+ 'July' => 'Julho',
+ 'Jump to' => 'Pular para',
+ 'June' => 'Junho',
+ 'Last' => '@\'Ultimo',
+ 'Last section in reading order' => '@\'Ultima se@,{c}@~ao na ordem de leitura',
+ 'March' => 'Mar@,{c}o',
+ 'May' => 'Maio',
+ 'Menu:' => '',
+ 'Name' => 'Nome',
+ 'Next' => 'Pr@\'oximo',
+ 'Next chapter' => 'Pr@\'oximo cap@\'itulo',
+ 'Next node' => 'Pr@\'oximo nodo',
+ 'Next section in reading order' => 'Pr@\'oxima se@,{c}@~ao na ordem de leitura',
+ 'Next section on same level' => 'Pr@\'oxima se@,{c}@~ao no mesmo n@\'ivel',
+ 'Node following in node reading order' => 'Nodo seguinte na ordem de leitura de nodos',
+ 'Node up' => 'Nodo acima',
+ 'NodeNext' => 'Pr@\'oximo Nodo',
+ 'NodePrev' => 'Nodo Anterior',
+ 'NodeUp' => 'Nodo Acima',
+ 'November' => 'Novembro',
+ 'October' => 'Outubro',
+ 'Overview' => 'Vis@~ao geral',
+ 'Overview:' => 'Vis@~ao geral:',
+ 'Prev' => 'Pr@\'evio',
+ 'Previous node' => 'Nodo anterior',
+ 'Previous section in reading order' => 'Se@,{c}@~ao anterior na ordem de leitura',
+ 'Previous section on same level' => 'Se@,{c}@~ao anterior no mesmo n@\'ivel',
+ 'Section' => 'Se@,{c}@~ao',
+ 'Section One' => 'Se@,{c}@~ao Um',
+ 'See %{node_file_href}' => 'Veja %{node_file_href}',
+ 'See %{node_file_href} @cite{%{book}}' => 'Veja %{node_file_href} @cite{%{book}}',
+ 'See %{node_file_href} section `%{section}\' in @cite{%{book}}' => 'Veja %{node_file_href} se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+ 'See %{reference_name}' => 'Veja %{reference_name}',
+ 'See @cite{%{book}}' => 'Veja @cite{%{book}}',
+ 'See section %{reference_name}' => 'Veja se@,{c}@~ao %{reference_name}',
+ 'See section `%{section}\' in @cite{%{book}}' => 'Veja se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+ 'September' => 'Setembro',
+ 'Short Table of Contents' => 'Breve Sum@\'ario',
+ 'Short table of contents' => 'Breve sum@\'ario',
+ 'Subsection One-Four' => 'Subse@,{c}@~ao Um-Quatro',
+ 'Subsection One-One' => 'Subse@,{c}@~ao Um-Um',
+ 'Subsection One-Three' => 'Subse@,{c}@~ao Um-Tr@^es',
+ 'Subsection One-Two' => 'Subse@,{c}@~ao Um-Dois',
+ 'Subsubsection One-Two-Four' => 'Subse@,{c}@~ao Um-Dois-Quatro',
+ 'Subsubsection One-Two-One' => 'Subse@,{c}@~ao Um-Dois-Um',
+ 'Subsubsection One-Two-Three' => 'Subse@,{c}@~ao Um-Dois-Tr@^es',
+ 'Subsubsection One-Two-Two' => 'Subse@,{c}@~ao Um-Dois-Dois',
+ 'T2H_today' => '',
+ 'Table of Contents' => 'Sum@\'ario',
+ 'Table of contents' => 'Sum@\'ario',
+ 'The node you are looking for is at %{href}.' => 'O nodo que vo@^e est@\'a olhando est@\'a em %{href}.',
+ 'This' => 'Esse',
+ 'This document was generated by @emph{%{user}} on @emph{%{date}} using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Esse documento foi gereado por @emph{%{user}} em @emph{%{date}} usando @uref{%{program_homepage}, @emph{%{program}}}.',
+ 'This document was generated by @emph{%{user}} using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Esse documento foi gerado por @emph{%{user}} usando @uref{%{program_homepage}, @emph{%{program}}}.',
+ 'This document was generated on @i{%{date}} using @uref{%{program_homepage}, @i{%{program}}}.' => 'Esse documento foi gerado em @i{%{date}} usando @uref{%{program_homepage}, @i{%{program}}}.',
+ 'This document was generated using @uref{%{program_homepage}, @emph{%{program}}}.' => 'Esse documento foi gerado usando @uref{%{program_homepage}, @emph{%{program}}}.',
+ 'Top' => 'Topo',
+ 'Untitled Document' => 'Documento Sem Nome',
+ 'Up' => 'Acima',
+ 'Up node' => 'Nodo acima',
+ 'Up section' => 'Se@,{c}@~ao acima',
+ 'by @emph{%{user}}' => 'por @emph{%{user}}',
+ 'by @emph{%{user}} on @emph{%{date}}' => 'por @emph{%{user}} em @emph{%{date}}',
+ 'current' => 'atual',
+ 'on @emph{%{date}}' => 'em @emph{%{date}}',
+ 'section `%{section}\' in @cite{%{book}}' => 'se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+ 'see %{node_file_href}' => 'veja %{node_file_href}',
+ 'see %{node_file_href} @cite{%{book}}' => 'veja %{node_file_href} @cite{%{book}}',
+ 'see %{node_file_href} section `%{section}\' in @cite{%{book}}' => 'veja %{node_file_href} se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+ 'see %{reference_name}' => 'veja %{reference_name}',
+ 'see @cite{%{book}}' => 'veja @cite{%{book}}',
+ 'see section %{reference_name}' => 'veja se@,{c}@~ao %{reference_name}',
+ 'see section `%{section}\' in @cite{%{book}}' => 'veja se@,{c}@~ao `%{section}\' em @cite{%{book}}',
+ 'unknown' => 'desconhecido'
+ };
+
+$T2H_OBSOLETE_STRINGS->{'pt_BR'} = {
+ 'See' => 'Veja',
+ 'about (help)' => 'sobre (ajuda)',
+ 'beginning of this chapter or previous chapter' => 'come@,{c}o desse cap@\'itulo ou cap@\'itulo anterior',
+ 'cover (top) of document' => 'in@\'icio (topo) do documento',
+ 'current section' => 'se@,{c}@~ao atual',
+ 'first section in reading order' => 'primeira se@,{c}@~ao na ordem de leitura',
+ 'following node' => 'nodo seguinte',
+ 'index' => '@\'indice',
+ 'last section in reading order' => '@\'ultima se@,{c}@~ao na ordem de leitura',
+ 'next chapter' => 'pr@\'oximo cap@\'itulo',
+ 'next node' => 'pr@\'oximo nodo',
+ 'next section in reading order' => 'pr@\'oxima se@,{c}@~ao na ordem de leitura',
+ 'next section on same level' => 'pr@\'oxima se@,{c}@~ao no mesmo n@\'ivel',
+ 'node following in node reading order' => 'nodo seguinte na ordem de leitura de nodos',
+ 'node up' => 'nodo acima',
+ 'previous node' => 'nodo anterior',
+ 'previous section in reading order' => 'se@,{c}@~ao anterior na ordem de leitura',
+ 'previous section on same level' => 'se@,{c}@~ao anterior no mesmo n@\'ivel',
+ 'section' => 'Se@,{c}@~ao',
+ 'see' => 'veja',
+ 'short table of contents' => 'breve sum@\'ario',
+ 'table of contents' => 'sum@\'ario',
+ 'up node' => 'nodo acima',
+ 'up section' => 'se@,{c}@~ao acima'
+ };
+
+
+
+require "$ENV{T2H_HOME}/$translation_file"
+ if ($0 =~ /\.pl$/ &&
+ -e "$ENV{T2H_HOME}/$translation_file" && -r "$ENV{T2H_HOME}/$translation_file");
+
+# set the default 'args' entry to normal for each style hash (and each command
+# within)
+my $name_index = -1;
+my @hash_names = ('style_map', 'style_map_pre', 'style_map_texi', 'simple_format_style_map_texi');
+foreach my $hash (\%style_map, \%style_map_pre, \%style_map_texi, \%simple_format_style_map_texi)
+{
+ $name_index++;
+ my $name = $hash_names[$name_index]; # name associated with hash ref
+ foreach my $style (keys(%{$hash}))
+ {
+ next unless (ref($hash->{$style}) eq 'HASH');
+ $hash->{$style}->{'args'} = ['normal'] if (!exists($hash->{$style}->{'args'}));
+ die "Bug: args not defined, but existing, for $style in $name" if (!defined($hash->{$style}->{'args'}));
+#print STDERR "DEFAULT($name, $hash) add normal as arg for $style ($hash->{$style}), $hash->{$style}->{'args'}\n";
+ }
+}
+
+#
+# Some functions used to override normal formatting functions in specific
+# cases. The user shouldn't want to change them, but can use them.
+#
+
+# used to utf8 encode the result
+sub t2h_utf8_accent($$$)
+{
+ my $accent = shift;
+ my $args = shift;
+ my $style_stack = shift;
+
+ my $text = $args->[0];
+ #print STDERR "$accent\[".scalar(@$style_stack) ."\] (@$style_stack)\n";
+
+ # special handling of @dotless{i}
+ if ($accent eq 'dotless')
+ {
+ if (($text eq 'i') and (!defined($style_stack->[-1]) or (!defined($unicode_accents{$style_stack->[-1]})) or ($style_stack->[-1] eq 'tieaccent')))
+ {
+ return "\x{0131}";
+ }
+ #return "\x{}" if ($text eq 'j'); # not found !
+ return $text;
+ }
+
+ # FIXME \x{0131}\x{0308} for @dotless{i} @" doesn't lead to NFC 00ef.
+ return Unicode::Normalize::NFC($text . chr(hex($unicode_diacritical{$accent})))
+ if (defined($unicode_diacritical{$accent}));
+ return ascii_accents($text, $accent);
+}
+
+sub t2h_utf8_normal_text($$$$$)
+{
+ my $text = shift;
+ my $in_raw_text = shift;
+ my $in_preformatted = shift;
+ my $in_code =shift;
+ my $style_stack = shift;
+ $text = &$protect_text($text) unless($in_raw_text);
+ $text = uc($text) if (in_small_caps($style_stack));
+
+ if (!$in_code and !$in_preformatted)
+ {
+ $text =~ s/---/\x{2014}/g;
+ $text =~ s/--/\x{2013}/g;
+ $text =~ s/``/\x{201C}/g;
+ $text =~ s/''/\x{201D}/g;
+ }
+ return Unicode::Normalize::NFC($text);
+}
+
+# these are unlikely to be used by users, as they are essentially
+# used to follow the html external refs specification in texinfo
+sub t2h_cross_manual_normal_text($$$$$)
+{
+ my $text = shift;
+ my $in_raw_text = shift;
+ my $in_preformatted = shift;
+ my $in_code =shift;
+ my $style_stack = shift;
+
+ $text = uc($text) if (in_small_caps($style_stack));
+ return $text if ($USE_UNICODE);
+
+ # if there is no unicode support, we do all the transformations here
+ my $result = '';
+ while ($text ne '')
+ {
+ if ($text =~ s/^([A-Za-z0-9]+)//o)
+ {
+ $result .= $1;
+ }
+ elsif ($text =~ s/^ //o)
+ {
+ $result .= '-';
+ }
+ elsif ($text =~ s/^(.)//o)
+ {
+ if (exists($ascii_character_map{$1}))
+ {
+ $result .= '_' . lc($ascii_character_map{$1});
+ }
+ else
+ { # wild guess that should work for latin1
+ $result .= '_' . '00' . lc(sprintf("%02x",ord($1)));
+ }
+ }
+ else
+ {
+ print STDERR "Bug: unknown character in cross ref (likely in infinite loop)\n";
+ sleep 1;
+ }
+ }
+
+ return $result;
+}
+
+sub t2h_nounicode_cross_manual_accent($$$)
+{
+ my $accent = shift;
+ my $args = shift;
+ my $style_stack = shift;
+
+ my $text = $args->[0];
+
+ if ($accent eq 'dotless')
+ {
+ if (($text eq 'i') and (!defined($style_stack->[-1]) or (!defined($unicode_accents{$style_stack->[-1]})) or ($style_stack->[-1] eq 'tieaccent')))
+ {
+ return "_0131";
+ }
+ #return "\x{}" if ($text eq 'j'); # not found !
+ return $text;
+ }
+ return '_' . lc($unicode_accents{$accent}->{$text})
+ if (defined($unicode_accents{$accent}->{$text}));
+ return ($text . '_' . lc($unicode_diacritical{$accent}))
+ if (defined($unicode_diacritical{$accent}));
+ return ascii_accents($text, $accent);
+}
+
+sub t2h_transliterate_cross_manual_accent($$)
+{
+ my $accent = shift;
+ my $args = shift;
+
+ my $text = $args->[0];
+
+ if (exists($unicode_accents{$accent}->{$text}) and
+ exists ($transliterate_map{$unicode_accents{$accent}->{$text}}))
+ {
+ return $transliterate_map{$unicode_accents{$accent}->{$text}};
+ }
+ return $text;
+}
+
+
+} # end package Texi2HTML::Config
+
+use vars qw(
+%value
+);
+
+# variables which might be redefined by the user but aren't likely to be
+# they seem to be in the main namespace
+use vars qw(
+%index_names
+%predefined_index
+%valid_index
+%sec2level
+%code_style_map
+%region_lines
+%forbidden_index_name
+);
+
+# Some global variables are set in the script, and used in the subroutines
+# they are in the Texi2HTML namespace, thus prefixed with Texi2HTML::.
+# see texi2html.init for details.
+
+#+++############################################################################
+# #
+# Initialization #
+# Pasted content of File $(srcdir)/MySimple.pm: Command-line processing #
+# #
+#---############################################################################
+
+# leave this within comments, and keep the require statement
+# This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/texi2html.init
+# exists.
+
+# @MYSIMPLE@
+package Getopt::MySimple;
+
+# Name:
+# Getopt::MySimple.
+#
+# Documentation:
+# POD-style (incomplete) documentation is in file MySimple.pod
+#
+# Tabs:
+# 4 spaces || die.
+#
+# Author:
+# Ron Savage rpsavage@ozemail.com.au.
+# 1.00 19-Aug-97 Initial version.
+# 1.10 13-Oct-97 Add arrays of switches (eg '=s@').
+# 1.20 3-Dec-97 Add 'Help' on a per-switch basis.
+# 1.30 11-Dec-97 Change 'Help' to 'verbose'. Make all hash keys lowercase.
+# 1.40 10-Nov-98 Change width of help report. Restructure tests.
+# 1-Jul-00 Modifications for Texi2html
+
+# --------------------------------------------------------------------------
+# Locally modified by obachman (Display type instead of env, order by cmp)
+# $Id: MySimple.pm,v 1.5 2006/04/17 23:11:09 pertusus Exp $
+
+# use strict;
+# no strict 'refs';
+
+use vars qw(@EXPORT @EXPORT_OK @ISA);
+use vars qw($fieldWidth $opt $VERSION);
+
+use Exporter();
+use Getopt::Long;
+
+@ISA = qw(Exporter);
+@EXPORT = qw();
+@EXPORT_OK = qw($opt); # An alias for $self -> {'opt'}.
+
+# --------------------------------------------------------------------------
+
+$fieldWidth = 20;
+$VERSION = '1.41';
+
+# --------------------------------------------------------------------------
+
+sub byOrder
+{
+ my($self) = @_;
+
+ return uc($a) cmp (uc($b));
+}
+
+# --------------------------------------------------------------------------
+
+sub dumpOptions
+{
+ my($self) = @_;
+
+ print 'Option', ' ' x ($fieldWidth - length('Option') ), "Value\n";
+
+ for (sort byOrder keys(%{$self -> {'opt'} }) )
+ {
+ print "-$_", ' ' x ($fieldWidth - (1 + length) ), "${$self->{'opt'} }{$_}\n";
+ }
+
+ print "\n";
+
+} # End of dumpOptions.
+
+# --------------------------------------------------------------------------
+# Return:
+# 0 -> Error.
+# 1 -> Ok.
+
+sub getOptions
+{
+ push(@_, 0) if ($#_ == 2); # Default for $ignoreCase is 0.
+ push(@_, 1) if ($#_ == 3); # Default for $helpThenExit is 1.
+
+ my($self, $default, $helpText, $versionText,
+ $helpThenExit, $versionThenExit, $ignoreCase) = @_;
+
+ $helpThenExit = 1 unless (defined($helpThenExit));
+ $versionThenExit = 1 unless (defined($versionThenExit));
+ $ignoreCase = 0 unless (defined($ignoreCase));
+
+ $self -> {'default'} = $default;
+ $self -> {'helpText'} = $helpText;
+ $self -> {'versionText'} = $versionText;
+ $Getopt::Long::ignorecase = $ignoreCase;
+
+ unless (defined($self -> {'default'}{'help'}))
+ {
+ $self -> {'default'}{'help'} =
+ {
+ type => ':i',
+ default => '',
+ linkage => sub {$self->helpOptions($_[1]); sleep 5;exit (0) if $helpThenExit;},
+ verbose => "print help and exit"
+ };
+ }
+
+ unless (defined($self -> {'default'}{'version'}))
+ {
+ $self -> {'default'}{'version'} =
+ {
+ type => '',
+ default => '',
+ linkage => sub {print $self->{'versionText'}; exit (0) if $versionThenExit;},
+ verbose => "print version and exit"
+ };
+ }
+
+ for (keys(%{$self -> {'default'} }) )
+ {
+ next unless (ref(${$self -> {'default'} }{$_}) eq 'HASH');
+ my $type = ${$self -> {'default'} }{$_}{'type'};
+ push(@{$self -> {'type'} }, "$_$type");
+ $self->{'opt'}->{$_} = ${$self -> {'default'} }{$_}{'linkage'}
+ if ${$self -> {'default'} }{$_}{'linkage'};
+ }
+
+ my($result) = &GetOptions($self -> {'opt'}, @{$self -> {'type'} });
+
+ return $result unless $result;
+
+ for (keys(%{$self -> {'default'} }) )
+ {
+ if (! defined(${$self -> {'opt'} }{$_})) #{
+ {
+ ${$self -> {'opt'} }{$_} = ${$self -> {'default'} }{$_}{'default'};
+ }
+ }
+
+ $result;
+} # End of getOptions.
+
+# --------------------------------------------------------------------------
+
+sub helpOptions
+{
+ my($self) = shift;
+ my($noHelp) = shift;
+ $noHelp = 0 unless $noHelp;
+ my($optwidth, $typewidth, $defaultwidth, $maxlinewidth, $valind, $valwidth)
+ = (10, 5, 9, 78, 4, 11);
+
+ print "$self->{'helpText'}" if ($self -> {'helpText'});
+
+ print ' Option', ' ' x ($optwidth - length('Option') -1 ),
+ 'Type', ' ' x ($typewidth - length('Type') + 1),
+ 'Default', ' ' x ($defaultwidth - length('Default') ),
+ "Description\n";
+
+ for (sort byOrder keys(%{$self -> {'default'} }) )
+ {
+ my($line, $help, $option, $val);
+ $option = $_;
+ next if ${$self->{'default'} }{$_}{'noHelp'} && ${$self->{'default'} }{$_}{'noHelp'} > $noHelp;
+ #$line = " -$_" . ' ' x ($optwidth - (2 + length) ) .
+ # "${$self->{'default'} }{$_}{'type'} ".
+ # ' ' x ($typewidth - (1+length(${$self -> {'default'} }{$_}{'type'}) ));
+ $line = " --$_" . "${$self->{'default'} }{$_}{'type'}".
+ ' ' x ($typewidth - (1+length(${$self -> {'default'} }{$_}{'type'}) ));
+
+ $val = ${$self->{'default'} }{$_}{'linkage'};
+ if ($val)
+ {
+ if ((ref($val) eq 'SCALAR') and (defined($$val)))
+ {
+ $val = $$val;
+ }
+ else
+ {
+ $val = '';
+ }
+ }
+ elsif (defined(${$self->{'default'} }{$_}{'default'}))
+ {
+ $val = ${$self->{'default'} }{$_}{'default'};
+ }
+ else
+ {
+ $val = '';
+ }
+ $line .= "$val ";
+ $line .= ' ' x ($optwidth + $typewidth + $defaultwidth + 1 - length($line));
+
+ if (defined(${$self -> {'default'} }{$_}{'verbose'}) &&
+ ${$self -> {'default'} }{$_}{'verbose'} ne '')
+ {
+ $help = "${$self->{'default'} }{$_}{'verbose'}";
+ }
+ else
+ {
+ $help = ' ';
+ }
+ if ((length("$line") + length($help)) < $maxlinewidth)
+ {
+ print $line , $help, "\n";
+ }
+ else
+ {
+ print $line, "\n", ' ' x $valind, $help, "\n";
+ }
+ for $val (sort byOrder keys(%{${$self->{'default'}}{$option}{'values'}}))
+ {
+ print ' ' x ($valind + 2);
+ print $val, ' ', ' ' x ($valwidth - length($val) - 2);
+ print ${$self->{'default'}}{$option}{'values'}{$val}, "\n";
+ }
+ }
+
+ print <<EOT;
+Note: 'Options' may be abbreviated. 'Type' specifications mean:
+ <none>| ! no argument: variable is set to 1 on -foo (or, to 0 on -nofoo)
+ =s | :s mandatory (or, optional) string argument
+ =i | :i mandatory (or, optional) integer argument
+EOT
+} # End of helpOptions.
+
+#-------------------------------------------------------------------
+
+sub new
+{
+ my($class) = @_;
+ my($self) = {};
+ $self -> {'default'} = {};
+ $self -> {'helpText'} = '';
+ $self -> {'opt'} = {};
+ $opt = $self -> {'opt'}; # An alias for $self -> {'opt'}.
+ $self -> {'type'} = ();
+
+ return bless $self, $class;
+
+} # End of new.
+
+# --------------------------------------------------------------------------
+
+1;
+
+# End MySimple.pm
+
+require "$ENV{T2H_HOME}/MySimple.pm"
+ if ($0 =~ /\.pl$/ &&
+ -e "$ENV{T2H_HOME}/MySimple.pm" && -r "$ENV{T2H_HOME}/MySimple.pm");
+
+#+++########################################################################
+# #
+# Initialization #
+# Pasted content of File $(srcdir)/T2h_i18n.pm: Internationalisation #
+# #
+#---########################################################################
+
+# leave this within comments, and keep the require statement
+# This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/T2h_i18n.pm
+# exists.
+
+# @T2H_I18N@
+#+##############################################################################
+#
+# T2h_i18n.pm: Internationalization for texi2html
+#
+# Copyright (C) 1999-2005 Patrice Dumas <dumas@centre-cired.fr>,
+# Derek Price <derek@ximbiot.com>,
+# Adrian Aichner <adrian@xemacs.org>,
+# & others.
+#
+# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+#-##############################################################################
+
+# This requires perl version 5 or higher
+require 5.0;
+
+package Texi2HTML::I18n;
+
+use strict;
+
+use vars qw(
+@ISA
+@EXPORT
+);
+
+use Exporter;
+@ISA = qw(Exporter);
+@EXPORT = qw(pretty_date);
+
+my $language;
+my $i18n_dir = 'i18n'; # name of the directory containing the per language files
+#my $translation_file = 'translations.pl'; # file containing all the translations
+#my @known_languages = ('de', 'nl', 'es', 'no', 'pt', 'fr'); # The supported
+ # languages
+
+########################################################################
+# Language dependencies:
+# To add a new language extend the WORDS hash and create $T2H_<...>_WORDS hash
+# To redefine one word, simply do:
+# $T2h_i18n::T2H_LANGUAGES->{<language>}->{<word>} = 'whatever' in your personal init file.
+#
+
+# Those hashes are obsolete but retained here for reference
+
+my $T2H_WORDS_EN =
+{
+ # titles of pages
+ #'Table of Contents' => 'Table of Contents',
+ #'Short Table of Contents' => 'Short Table of Contents',
+ #'Index' => 'Index',
+ #'About This Document' => 'About This Document',
+ #'Footnotes' => 'Footnotes',
+ #'See' => 'See',
+ #'see' => 'see',
+ #'section' => 'section',
+ 'About This Document' => '',
+ 'Table of Contents' => '',
+ 'Short Table of Contents', => '',
+ 'Index' => '',
+ 'Footnotes' => '',
+ 'See' => '',
+ 'see' => '',
+ 'section' => '',
+ 'Top' => '',
+ 'Untitled Document' => '',
+ # If necessary, we could extend this as follows:
+ # # text for buttons
+ # 'Top_Button' => 'Top',
+ # 'ToC_Button' => 'Contents',
+ # 'Overview_Button' => 'Overview',
+ # 'Index_button' => 'Index',
+ # 'Back_Button' => 'Back',
+ # 'FastBack_Button' => 'FastBack',
+ # 'Prev_Button' => 'Prev',
+ # 'Up_Button' => 'Up',
+ # 'Next_Button' => 'Next',
+ # 'Forward_Button' =>'Forward',
+ # 'FastWorward_Button' => 'FastForward',
+ # 'First_Button' => 'First',
+ # 'Last_Button' => 'Last',
+ # 'About_Button' => 'About'
+ 'January' => '',
+ 'February' => '',
+ 'March' => '',
+ 'April' => '',
+ 'May' => '',
+ 'June' => '',
+ 'July' => '',
+ 'August' => '',
+ 'September' => '',
+ 'October' => '',
+ 'November' => '',
+ 'December' => '',
+ 'T2H_today' => '%s, %d %d',
+};
+
+my $T2H_WORDS_DE =
+{
+ 'Table of Contents' => 'Inhaltsverzeichniss',
+ 'Short Table of Contents' => 'Kurzes Inhaltsverzeichniss',
+ 'Index' => 'Index',
+ 'About This Document' => '&Uuml;ber dieses Dokument',
+ 'Footnotes' => 'Fu&szlig;noten',
+ 'See' => 'Siehe',
+ 'see' => 'siehe',
+ 'section' => 'Abschnitt',
+ 'January' => 'Januar',
+ 'February' => 'Februar',
+ 'March' => 'M&auml;rz',
+ 'April' => 'April',
+ 'May' => 'Mai',
+ 'June' => 'Juni',
+ 'July' => 'Juli',
+ 'August' => 'August',
+ 'September' => 'September',
+ 'October' => 'Oktober',
+ 'November' => 'November',
+ 'December' => 'Dezember',
+};
+
+my $T2H_WORDS_NL =
+{
+ 'Table of Contents' => 'Inhoudsopgave',
+ 'Short Table of Contents' => 'Korte inhoudsopgave',
+ 'Index' => 'Index', #Not sure ;-)
+ 'About This Document' => 'No translation available!', #No translation available!
+ 'Footnotes' => 'No translation available!', #No translation available!
+ 'See' => 'Zie',
+ 'see' => 'zie',
+ 'section' => 'sectie',
+ 'January' => 'Januari',
+ 'February' => 'Februari',
+ 'March' => 'Maart',
+ 'April' => 'April',
+ 'May' => 'Mei',
+ 'June' => 'Juni',
+ 'July' => 'Juli',
+ 'August' => 'Augustus',
+ 'September' => 'September',
+ 'October' => 'Oktober',
+ 'November' => 'November',
+ 'December' => 'December',
+};
+
+my $T2H_WORDS_ES =
+{
+ 'Table of Contents' => '&iacute;ndice General',
+ 'Short Table of Contents' => 'Resumen del Contenido',
+ 'Index' => 'Index', #Not sure ;-)
+ 'About This Document' => 'No translation available!', #No translation available!
+ 'Footnotes' => 'Fu&szlig;noten',
+ 'See' => 'V&eacute;ase',
+ 'see' => 'v&eacute;ase',
+ 'section' => 'secci&oacute;n',
+ 'January' => 'enero',
+ 'February' => 'febrero',
+ 'March' => 'marzo',
+ 'April' => 'abril',
+ 'May' => 'mayo',
+ 'June' => 'junio',
+ 'July' => 'julio',
+ 'August' => 'agosto',
+ 'September' => 'septiembre',
+ 'October' => 'octubre',
+ 'November' => 'noviembre',
+ 'December' => 'diciembre',
+};
+
+my $T2H_WORDS_NO =
+{
+ 'Table of Contents' => 'Innholdsfortegnelse',
+ 'Short Table of Contents' => 'Kort innholdsfortegnelse',
+ 'Index' => 'Indeks', #Not sure ;-)
+ 'About This Document' => 'No translation available!', #No translation available!
+ 'Footnotes' => 'No translation available!',
+ 'See' => 'Se',
+ 'see' => 'se',
+ 'section' => 'avsnitt',
+ 'January' => 'januar',
+ 'February' => 'februar',
+ 'March' => 'mars',
+ 'April' => 'april',
+ 'May' => 'mai',
+ 'June' => 'juni',
+ 'July' => 'juli',
+ 'August' => 'august',
+ 'September' => 'september',
+ 'October' => 'oktober',
+ 'November' => 'november',
+ 'December' => 'desember',
+};
+
+my $T2H_WORDS_PT =
+{
+ 'Table of Contents' => 'Sum&aacute;rio',
+ 'Short Table of Contents' => 'Breve Sum&aacute;rio',
+ 'Index' => '&Iacute;ndice', #Not sure ;-)
+ 'About This Document' => 'No translation available!', #No translation available!
+ 'Footnotes' => 'No translation available!',
+ 'See' => 'Veja',
+ 'see' => 'veja',
+ 'section' => 'Se&ccedil;&atilde;o',
+ 'January' => 'Janeiro',
+ 'February' => 'Fevereiro',
+ 'March' => 'Mar&ccedil;o',
+ 'April' => 'Abril',
+ 'May' => 'Maio',
+ 'June' => 'Junho',
+ 'July' => 'Julho',
+ 'August' => 'Agosto',
+ 'September' => 'Setembro',
+ 'October' => 'Outubro',
+ 'November' => 'Novembro',
+ 'December' => 'Dezembro',
+};
+
+my $T2H_WORDS_FR =
+{
+ 'Table of Contents' => 'Table des mati&egrave;res',
+ 'Short Table of Contents' => 'R&eacute;sum&eacute;e du contenu',
+ 'Index' => 'Index',
+ 'About This Document' => 'A propos de ce document',
+ 'Footnotes' => 'Notes de bas de page',
+ 'See' => 'Voir',
+ 'see' => 'voir',
+ 'section' => 'section',
+ 'January' => 'Janvier',
+ 'February' => 'F&eacute;vrier',
+ 'March' => 'Mars',
+ 'April' => 'Avril',
+ 'May' => 'Mai',
+ 'June' => 'Juin',
+ 'July' => 'Juillet',
+ 'August' => 'Ao&ucirc;t',
+ 'September' => 'Septembre',
+ 'October' => 'Octobre',
+ 'November' => 'Novembre',
+ 'December' => 'D&eacute;cembre',
+ 'T2H_today' => 'le %2$d %1$s %3$d'
+};
+
+#$T2H_LANGUAGES =
+#{
+# 'en' => $T2H_WORDS_EN,
+# 'de' => $T2H_WORDS_DE,
+# 'nl' => $T2H_WORDS_NL,
+# 'es' => $T2H_WORDS_ES,
+# 'no' => $T2H_WORDS_NO,
+# 'pt' => $T2H_WORDS_PT,
+# 'fr' => $T2H_WORDS_FR,
+#};
+
+sub set_language($)
+{
+ my $lang = shift;
+ if (defined($lang) && exists($Texi2HTML::Config::LANGUAGES->{$lang}) && defined($Texi2HTML::Config::LANGUAGES->{$lang}))
+ {
+ $language = $lang;
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+
+my @MONTH_NAMES =
+ (
+ 'January', 'February', 'March', 'April', 'May',
+ 'June', 'July', 'August', 'September', 'October',
+ 'November', 'December'
+ );
+
+my $I = \&get_string;
+
+sub pretty_date($)
+{
+ my $lang = shift;
+ my($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst);
+
+ ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
+ $year += ($year < 70) ? 2000 : 1900;
+ # obachman: Let's do it as the Americans do
+ #return($MONTH_NAMES->{$lang}[$mon] . ", " . $mday . " " . $year);
+ #return(sprintf(&$I('T2H_today'), (get_string($MONTH_NAMES[$mon]), $mday, $year)));
+ return &$I('%{month}, %{day} %{year}', { 'month' => get_string($MONTH_NAMES[$mon]),
+ 'day' => $mday, 'year' => $year });
+}
+
+my $error_no_en = 0;
+sub get_string($;$$)
+{
+ my $string = shift;
+ my $arguments = shift;
+ my $state = shift;
+ my $T2H_LANGUAGES = $Texi2HTML::Config::LANGUAGES;
+ if (! exists($T2H_LANGUAGES->{'en'}))
+ {
+ unless($error_no_en)
+ {
+ print STDERR "i18n: no LANGUAGES->{'en'} hash\n";
+ $error_no_en = 1;
+ }
+ }
+ else
+ {
+ print STDERR "i18n: missing string $string\n" unless (exists ($T2H_LANGUAGES->{'en'}->{$string}));
+ if (defined ($T2H_LANGUAGES->{$language}->{$string}) and
+ ($T2H_LANGUAGES->{$language}->{$string} ne ''))
+ {
+ $string = $T2H_LANGUAGES->{$language}->{$string};
+ }
+ elsif (defined ($T2H_LANGUAGES->{'en'}->{$string}) and
+ ($T2H_LANGUAGES->{'en'}->{$string} ne ''))
+ {
+ $string = $T2H_LANGUAGES->{'en'}->{$string};
+ }
+ }
+ return main::substitute_line($string, $state) unless (defined($arguments) or !keys(%$arguments));
+ # if there are arguments, we must protect the %{arg} constructs before
+ # doing substitute_line. So there is a first pass here to change %{arg}
+ # to %@{arg@}
+ my $result = '';
+ if (!$state->{'keep_texi'})
+ {
+ while ($string)
+ {
+ if ($string =~ s/^([^%]*)%//)
+ {
+ $result .= $1 if (defined($1));
+ $result .= '%';
+ if ($string =~ s/^%//)
+ {
+ $result .= '%';
+ }
+ elsif ($string =~ /^\{(\w+)\}/ and exists($arguments->{$1}))
+ {
+ $string =~ s/^\{(\w+)\}//;
+ $result .= "\@\{$1\@\}";
+ }
+ else
+ {
+ $result .= '%';
+ }
+ next;
+ }
+ else
+ {
+ $result .= $string;
+ last;
+ }
+ }
+ $string = main::substitute_line($result, $state);
+ }
+ # now we substitute the arguments
+ $result = '';
+ while ($string)
+ {
+ if ($string =~ s/^([^%]*)%//)
+ {
+ $result .= $1 if (defined($1));
+ if ($string =~ s/^%//)
+ {
+ $result .= '%';
+ }
+ elsif ($string =~ /^\{(\w+)\}/ and exists($arguments->{$1}))
+ {
+ $string =~ s/^\{(\w+)\}//;
+ $result .= $arguments->{$1};
+ }
+ else
+ {
+ $result .= '%';
+ }
+ next;
+ }
+ else
+ {
+ $result .= $string;
+ last;
+ }
+ }
+ return $result;
+}
+
+1;
+require "$ENV{T2H_HOME}/T2h_i18n.pm"
+ if ($0 =~ /\.pl$/ &&
+ -e "$ENV{T2H_HOME}/T2h_i18n.pm" && -r "$ENV{T2H_HOME}/T2h_i18n.pm");
+
+
+#########################################################################
+#
+# latex2html stuff
+#
+#---######################################################################
+
+{
+# leave this within comments, and keep the require statement
+# This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/T2h_l2h.pm
+# exists.
+
+# @T2H_L2H@
+#+##############################################################################
+#
+# T2h_l2h.pm: interface to LaTeX2HTML
+#
+# Copyright (C) 1999-2005 Patrice Dumas <dumas@centre-cired.fr>,
+# Derek Price <derek@ximbiot.com>,
+# Adrian Aichner <adrian@xemacs.org>,
+# & others.
+#
+# 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., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA
+#
+#-##############################################################################
+
+require 5.0;
+use strict;
+
+package Texi2HTML::LaTeX2HTML;
+use Cwd;
+
+
+# latex2html conversions consist of three stages:
+# 1) ToLatex: Put "latex" code into a latex file
+# 2) ToHtml: Use latex2html to generate corresponding html code and images
+# 3) FromHtml: Extract generated code and images from latex2html run
+#
+
+# init l2h defaults for files and names
+
+# global variable used for caching
+use vars qw(
+ %l2h_cache
+ );
+
+my ($l2h_name, $l2h_latex_file, $l2h_cache_file, $l2h_html_file, $l2h_prefix);
+
+# holds the status of latex2html operations. If 0 it means that there was
+# an error
+my $status = 0;
+
+my $debug;
+my $verbose;
+my $docu_rdir;
+my $docu_name;
+my $docu_ext;
+my $ERROR = '***';
+
+##########################
+#
+# First stage: Generation of Latex file
+# Initialize with: init
+# Add content with: to_latex ($text) --> HTML placeholder comment
+# Finish with: finish_to_latex
+#
+
+my $l2h_latex_preamble = <<EOT;
+% This document was automatically generated by the l2h extenstion of texi2html
+% DO NOT EDIT !!!
+\\documentclass{article}
+\\usepackage{html}
+\\begin{document}
+EOT
+
+my $l2h_latex_closing = <<EOT;
+\\end{document}
+EOT
+
+my %l2h_to_latex = (); # associate a latex text with the index in the
+ # html result array.
+my @l2h_to_latex = (); # array used to associate the index with
+ # the original latex text.
+my $latex_count = 0; # number of latex texts really stored
+my $latex_converted_count = 0; # number of latex texts passed through latex2html
+my $to_latex_count = 0; # total number of latex texts processed
+my $cached_count = 0; # number of cached latex texts
+%l2h_cache = (); # the cache hash. Associate latex text with
+ # html from the previous run
+my @l2h_from_html; # array of resulting html
+
+my %global_count = (); # associate a command name and the
+ # corresponding counter to the index in the
+ # html result array
+
+# set $status to 1, if l2h could be initalized properly, to 0 otherwise
+sub init()
+{
+ $docu_name = $Texi2HTML::THISDOC{'file_base_name'};
+ $docu_rdir = $Texi2HTML::THISDOC{'out_dir'};
+ $docu_ext = $Texi2HTML::THISDOC{'extension'};
+ $l2h_name = "${docu_name}_l2h";
+ $l2h_latex_file = "$docu_rdir${l2h_name}.tex";
+ $l2h_cache_file = "${docu_rdir}${docu_name}-l2h_cache.pm";
+ # destination dir -- generated images are put there, should be the same
+ # as dir of enclosing html document --
+ $l2h_html_file = "$docu_rdir${l2h_name}.html";
+ $l2h_prefix = "${l2h_name}_";
+ $debug = $Texi2HTML::THISDOC{'debug_l2h'};
+ $verbose = $Texi2HTML::Config::VERBOSE;
+
+ unless ($Texi2HTML::Config::L2H_SKIP)
+ {
+ unless (open(L2H_LATEX, ">$l2h_latex_file"))
+ {
+ warn "$ERROR l2h: Can't open latex file '$l2h_latex_file' for writing: $!\n";
+ $status = 0;
+ return;
+ }
+ warn "# l2h: use ${l2h_latex_file} as latex file\n" if ($verbose);
+ print L2H_LATEX $l2h_latex_preamble;
+ }
+ # open the database that holds cached text
+ init_cache();
+ $status = 1;
+}
+
+
+# print text (2nd arg) into latex file (if not already there nor in cache)
+# which can be later on replaced by the latex2html generated text.
+#
+sub to_latex($$$)
+{
+ my $command = shift;
+ my $text = shift;
+ my $counter = shift;
+ if ($command eq 'tex')
+ {
+ $text .= ' ';
+ }
+ elsif ($command eq 'math')
+ {
+ $text = "\$".$text."\$";
+ }
+ $to_latex_count++;
+ $text =~ s/(\s*)$//;
+ # try whether we have text already on things to do
+ my $count = $l2h_to_latex{$text};
+ unless ($count)
+ {
+ $latex_count++;
+ $count = $latex_count;
+ # try whether we can get it from cache
+ my $cached_text = from_cache($text);
+ if (defined($cached_text))
+ {
+ $cached_count++;
+ # put the cached result in the html result array
+ $l2h_from_html[$count] = $cached_text;
+ }
+ else
+ {
+ $latex_converted_count++;
+ unless ($Texi2HTML::Config::L2H_SKIP)
+ {
+ print L2H_LATEX "\\begin{rawhtml}\n";
+ print L2H_LATEX "<!-- l2h_begin $l2h_name $count -->\n";
+ print L2H_LATEX "\\end{rawhtml}\n";
+
+ print L2H_LATEX "$text\n";
+
+ print L2H_LATEX "\\begin{rawhtml}\n";
+ print L2H_LATEX "<!-- l2h_end $l2h_name $count -->\n";
+ print L2H_LATEX "\\end{rawhtml}\n";
+ }
+ }
+ $l2h_to_latex[$count] = $text;
+ $l2h_to_latex{$text} = $count;
+ }
+ $global_count{"${command}_$counter"} = $count;
+ return 1;
+}
+
+# print closing into latex file and close it
+sub finish_to_latex()
+{
+ my $reused = $to_latex_count - $latex_converted_count - $cached_count;
+ unless ($Texi2HTML::Config::L2H_SKIP)
+ {
+ print L2H_LATEX $l2h_latex_closing;
+ close (L2H_LATEX);
+ }
+ warn "# l2h: finished to latex ($cached_count cached, $reused reused, $latex_converted_count to process)\n" if ($verbose);
+ unless ($latex_count)
+ {
+ # no @tex nor @math
+ finish();
+ return 0;
+ }
+ return 1;
+}
+
+###################################
+# Second stage: Use latex2html to generate corresponding html code and images
+#
+# to_html([$l2h_latex_file, [$l2h_html_dir]]):
+# Call latex2html on $l2h_latex_file
+# Put images (prefixed with $l2h_name."_") and html file(s) in $l2h_html_dir
+# Return 1, on success
+# 0, otherwise
+#
+sub to_html()
+{
+ my ($call, $dotbug);
+ # when there are no tex constructs to convert (happens in case everything
+ # comes from the cache), there is no latex2html run
+ if ($Texi2HTML::Config::L2H_SKIP or ($latex_converted_count == 0))
+ {
+ warn "# l2h: skipping latex2html run\n" if ($verbose);
+ return 1;
+ }
+ # Check for dot in directory where dvips will work
+ if ($Texi2HTML::Config::L2H_TMP)
+ {
+ if ($Texi2HTML::Config::L2H_TMP =~ /\./)
+ {
+ warn "$ERROR Warning l2h: l2h_tmp dir contains a dot. Use /tmp, instead\n";
+ $dotbug = 1;
+ }
+ }
+ else
+ {
+ if (cwd() =~ /\./)
+ {
+ warn "$ERROR Warning l2h: current dir contains a dot. Use /tmp as l2h_tmp dir \n";
+ $dotbug = 1;
+ }
+ }
+ # fix it, if necessary and hope that it works
+ $Texi2HTML::Config::L2H_TMP = "/tmp" if ($dotbug);
+
+ $call = $Texi2HTML::Config::L2H_L2H;
+ # use init file, if specified
+ my $init_file = main::locate_init_file($Texi2HTML::Config::L2H_FILE);
+ $call = $call . " -init_file " . $init_file if ($init_file);
+ # set output dir
+ $call .= ($docu_rdir ? " -dir $docu_rdir" : " -no_subdir");
+ # use l2h_tmp, if specified
+ $call .= " -tmp $Texi2HTML::Config::L2H_TMP" if ($Texi2HTML::Config::L2H_TMP);
+ # use a given html version if specified
+ $call .= " -html_version $Texi2HTML::Config::L2H_HTML_VERSION" if ($Texi2HTML::Config::L2H_HTML_VERSION);
+ # options we want to be sure of
+ $call .= " -address 0 -info 0 -split 0 -no_navigation -no_auto_link";
+ $call .= " -prefix $l2h_prefix $l2h_latex_file";
+
+ warn "# l2h: executing '$call'\n" if ($verbose);
+ if (system($call))
+ {
+ warn "$ERROR l2h: '${call}' did not succeed\n";
+ return 0;
+ }
+ else
+ {
+ warn "# l2h: latex2html finished successfully\n" if ($verbose);
+ return 1;
+ }
+}
+
+##########################
+# Third stage: Extract generated contents from latex2html run
+# Initialize with: init_from_html
+# open $l2h_html_file for reading
+# reads in contents into array indexed by numbers
+# return 1, on success -- 0, otherwise
+# Finish with: finish
+# closes $l2h_html_dir/$l2h_name.".$docu_ext"
+
+# the images generated by latex2html have names like ${docu_name}_l2h_img?.png
+# they are copied to ${docu_name}_?.png, and html is changed accordingly.
+my %l2h_img; # associate src file to destination file
+ # such that files are not copied twice
+my $image_count = 1;
+sub change_image_file_names($)
+{
+ my $content = shift;
+ my @images = ($content =~ /SRC="(.*?)"/g);
+ my ($src, $dest);
+
+ for $src (@images)
+ {
+ $dest = $l2h_img{$src};
+ unless ($dest)
+ {
+ my $ext = '';
+ if ($src =~ /.*\.(.*)$/ && $1 ne $docu_ext)
+ {
+ $ext = ".$1";
+ }
+ else
+ {
+ warn "$ERROR: L2h image $src has invalid extension\n";
+ next;
+ }
+ while (-e "$docu_rdir${docu_name}_${image_count}$ext")
+ {
+ $image_count++;
+ }
+ $dest = "${docu_name}_${image_count}$ext";
+# FIXME this isn't portable. + error condition not checked.
+ system("cp -f $docu_rdir$src $docu_rdir$dest");
+ $l2h_img{$src} = $dest;
+# FIXME error condition not checked
+ unlink "$docu_rdir$src" unless ($debug);
+ }
+ $content =~ s/SRC="$src"/SRC="$dest"/g;
+ }
+ return $content;
+}
+
+my $extract_error_count = 0;
+my $invalid_counter_count = 0;
+
+sub init_from_html()
+{
+ # when there are no tex constructs to convert (happens in case everything
+ # comes from the cache), the html file that was generated by previous
+ # latex2html runs isn't reused.
+ if ($latex_converted_count == 0)
+ {
+ return 1;
+ }
+
+ if (! open(L2H_HTML, "<$l2h_html_file"))
+ {
+ warn "$ERROR l2h: Can't open $l2h_html_file for reading\n";
+ return 0;
+ }
+ warn "# l2h: use $l2h_html_file as html file\n" if ($verbose);
+
+ my $html_converted_count = 0; # number of html resulting texts
+ # retrieved in the file
+
+ my ($count, $h_line);
+ while ($h_line = <L2H_HTML>)
+ {
+ if ($h_line =~ /^<!-- l2h_begin $l2h_name ([0-9]+) -->/)
+ {
+ $count = $1;
+ my $h_content = '';
+ my $h_end_found = 0;
+ while ($h_line = <L2H_HTML>)
+ {
+ if ($h_line =~ /^<!-- l2h_end $l2h_name $count -->/)
+ {
+ $h_end_found = 1;
+ chomp $h_content;
+ chomp $h_content;
+ $html_converted_count++;
+ # transform image file names and copy image files
+ $h_content = change_image_file_names($h_content);
+ # store result in the html result array
+ $l2h_from_html[$count] = $h_content;
+ # also add the result in cache hash
+ $l2h_cache{$l2h_to_latex[$count]} = $h_content;
+ last;
+ }
+ $h_content = $h_content.$h_line;
+ }
+ unless ($h_end_found)
+ { # couldn't found the closing comment. Certainly a bug.
+ warn "$ERROR l2h(BUG): l2h_end $l2h_name $count not found\n";
+ close(L2H_HTML);
+ return 0;
+ }
+ }
+ }
+
+ # Not the same number of converted elements and retrieved elements
+ if ($latex_converted_count != $html_converted_count)
+ {
+ warn "$ERROR l2h(BUG): waiting for $latex_converted_count elements found $html_converted_count\n";
+ }
+
+ warn "# l2h: Got $html_converted_count of $latex_count html contents\n"
+ if ($verbose);
+
+ close(L2H_HTML);
+ return 1;
+}
+
+my $html_output_count = 0; # html text outputed in html result file
+
+# called each time a construct handled by latex2html is encountered, should
+# output the corresponding html
+sub do_tex($$$$)
+{
+ my $style = shift;
+ my $counter = shift;
+ my $state = shift;
+ my $count = $global_count{"${style}_$counter"};
+ ################################## begin debug section (incorrect counts)
+ if (!defined($count))
+ {
+ # counter is undefined
+ $invalid_counter_count++;
+ warn "$ERROR l2h(BUG): undefined count for ${style}_$counter\n";
+ return ("<!-- l2h: ". __LINE__ . " undef count for ${style}_$counter -->")
+ if ($debug);
+ return '';
+ }
+ elsif(($count <= 0) or ($count > $latex_count))
+ {
+ # counter out of range
+ $invalid_counter_count++;
+ warn "$ERROR l2h(BUG): Request of $count content which is out of valide range [0,$latex_count)\n";
+ return ("<!-- l2h: ". __LINE__ . " out of range count $count -->")
+ if ($debug);
+ return '';
+ }
+ ################################## end debug section (incorrect counts)
+
+ # this seems to be a valid counter
+ my $result = '';
+ $result = "<!-- l2h_begin $l2h_name $count -->" if ($debug);
+ if (defined($l2h_from_html[$count]))
+ {
+ $html_output_count++;
+ # maybe we could also have something if simple_format
+ # with Texi2HTML::Config::protect_text, once simple_format
+ # may happen for anything else than lines
+ if ($state->{'remove_texi'})
+ {# don't protect anything
+ $result .= $l2h_to_latex[$count];
+ }
+ else
+ {
+ $result .= $l2h_from_html[$count];
+ }
+ }
+ else
+ {
+ # if the result is not in @l2h_from_html, there is an error somewhere.
+ $extract_error_count++;
+ warn "$ERROR l2h(BUG): can't extract content $count from html\n";
+ # try simple (ordinary) substitution (without l2h)
+ $result .= "<!-- l2h: ". __LINE__ . " use texi2html -->" if ($debug);
+ $result .= main::substitute_text({}, $l2h_to_latex[$count]);
+ }
+ $result .= "<!-- l2h_end $l2h_name $count -->" if ($debug);
+ return $result;
+}
+
+# store results in the cache and remove temporary files.
+sub finish()
+{
+ return unless($status);
+ if ($verbose)
+ {
+ if ($extract_error_count + $invalid_counter_count)
+ {
+ warn "# l2h: finished from html ($extract_error_count extract and $invalid_counter_count invalid counter errors)\n";
+ }
+ else
+ {
+ warn "# l2h: finished from html (no error)\n";
+ }
+ if ($html_output_count != $latex_converted_count)
+ { # this may happen if @-commands are collected at some places
+ # but @-command at those places are not expanded later. For
+ # example @math on @multitable lines.
+ warn "# l2h: $html_output_count html outputed for $latex_converted_count converted\n";
+ }
+ }
+ store_cache();
+ if ($Texi2HTML::Config::L2H_CLEAN)
+ {
+ local ($_);
+ warn "# l2h: removing temporary files generated by l2h extension\n"
+ if $verbose;
+ while (<"$docu_rdir$l2h_name"*>)
+ {
+# FIXME error condition not checked
+ unlink $_;
+ }
+ }
+ warn "# l2h: Finished\n" if $verbose;
+ return 1;
+}
+
+# the driver of end of first pass, second pass and beginning of third pass
+#
+sub latex2html()
+{
+ return unless($status);
+ return unless ($status = finish_to_latex());
+ return unless ($status = to_html());
+ return unless ($status = init_from_html());
+}
+
+
+##############################
+# stuff for l2h caching
+#
+
+# I tried doing this with a dbm data base, but it did not store all
+# keys/values. Hence, I did as latex2html does it
+sub init_cache
+{
+ if (-r "$l2h_cache_file")
+ {
+ my $rdo = do "$l2h_cache_file";
+ warn("$ERROR l2h Error: could not load $docu_rdir$l2h_cache_file: $@\n")
+ unless ($rdo);
+ }
+}
+
+# store all the text obtained through latex2html
+sub store_cache
+{
+ return unless $latex_count;
+ my ($key, $value);
+ unless (open(FH, ">$l2h_cache_file"))
+ {
+ warn "$ERROR l2h Error: could not open $docu_rdir$l2h_cache_file for writing: $!\n";
+ return;
+ }
+ while (($key, $value) = each %l2h_cache)
+ {
+ # escape stuff
+ $key =~ s|/|\\/|g;
+ $key =~ s|\\\\/|\\/|g;
+ # weird, a \ at the end of the key results in an error
+ # maybe this also broke the dbm database stuff
+ $key =~ s|\\$|\\\\|;
+ $value =~ s/\|/\\\|/go;
+ $value =~ s/\\\\\|/\\\|/go;
+ $value =~ s|\\\\|\\\\\\\\|g;
+ print FH "\n\$l2h_cache_key = q/$key/;\n";
+ print FH "\$l2h_cache{\$l2h_cache_key} = q|$value|;\n";
+ }
+ print FH "1;";
+ close (FH);
+}
+
+# return cached html, if it exists for text, and if all pictures
+# are there, as well
+sub from_cache($)
+{
+ my $text = shift;
+ my $cached = $l2h_cache{$text};
+ if (defined($cached))
+ {
+ while ($cached =~ m/SRC="(.*?)"/g)
+ {
+ unless (-e "$docu_rdir$1")
+ {
+ return undef;
+ }
+ }
+ return $cached;
+ }
+ return undef;
+}
+
+1;
+
+
+require "$ENV{T2H_HOME}/T2h_l2h.pm"
+ if ($0 =~ /\.pl$/ &&
+ -e "$ENV{T2H_HOME}/T2h_l2h.pm" && -r "$ENV{T2H_HOME}/T2h_l2h.pm");
+
+}
+
+{
+package Texi2HTML::LaTeX2HTML::Config;
+
+# latex2html variables
+# These variables are not used. They are here for information only, and
+# an example of config file for latex2html file is included.
+my $ADDRESS;
+my $ANTI_ALIAS;
+my $ANTI_ALIAS_TEXT;
+my $ASCII_MODE;
+my $AUTO_LINK;
+my $AUTO_PREFIX;
+my $CHILDLINE;
+my $DEBUG;
+my $DESTDIR;
+my $ERROR;
+my $EXTERNAL_FILE;
+my $EXTERNAL_IMAGES;
+my $EXTERNAL_UP_LINK;
+my $EXTERNAL_UP_TITLE;
+my $FIGURE_SCALE_FACTOR;
+my $HTML_VERSION;
+my $IMAGES_ONLY;
+my $INFO;
+my $LINE_WIDTH;
+my $LOCAL_ICONS;
+my $LONG_TITLES;
+my $MATH_SCALE_FACTOR;
+my $MAX_LINK_DEPTH;
+my $MAX_SPLIT_DEPTH;
+my $NETSCAPE_HTML;
+my $NOLATEX;
+my $NO_FOOTNODE;
+my $NO_IMAGES;
+my $NO_NAVIGATION;
+my $NO_SIMPLE_MATH;
+my $NO_SUBDIR;
+my $PAPERSIZE;
+my $PREFIX;
+my $PS_IMAGES;
+my $REUSE;
+my $SCALABLE_FONTS;
+my $SHORTEXTN;
+my $SHORT_INDEX;
+my $SHOW_SECTION_NUMBERS;
+my $SPLIT;
+my $TEXDEFS;
+my $TITLE;
+my $TITLES_LANGUAGE;
+my $TMP;
+my $VERBOSE;
+my $WORDS_IN_NAVIGATION_PANEL_TITLES;
+my $WORDS_IN_PAGE;
+
+# @T2H_L2H_INIT@
+
+######################################################################
+# from here on, its l2h init stuff
+#
+
+## initialization for latex2html as for Singular manual generation
+## obachman 3/99
+
+#
+# Options controlling Titles, File-Names, Tracing and Sectioning
+#
+$TITLE = '';
+
+$SHORTEXTN = 0;
+
+$LONG_TITLES = 0;
+
+$DESTDIR = '';
+
+$NO_SUBDIR = 1;
+
+$PREFIX = '';
+
+$AUTO_PREFIX = 0;
+
+$AUTO_LINK = 0;
+
+$SPLIT = 0;
+
+$MAX_LINK_DEPTH = 0;
+
+$TMP = '';
+
+$DEBUG = 0;
+
+$VERBOSE = 1;
+
+#
+# Options controlling Extensions and Special Features
+#
+#$HTML_VERSION = "3.2"; # set by command line
+
+$TEXDEFS = 1; # we absolutely need that
+
+$EXTERNAL_FILE = '';
+
+$SCALABLE_FONTS = 1;
+
+$NO_SIMPLE_MATH = 1;
+
+$LOCAL_ICONS = 1;
+
+$SHORT_INDEX = 0;
+
+$NO_FOOTNODE = 1;
+
+$ADDRESS = '';
+
+$INFO = '';
+
+#
+# Switches controlling Image Generation
+#
+$ASCII_MODE = 0;
+
+$NOLATEX = 0;
+
+$EXTERNAL_IMAGES = 0;
+
+$PS_IMAGES = 0;
+
+$NO_IMAGES = 0;
+
+$IMAGES_ONLY = 0;
+
+$REUSE = 2;
+
+$ANTI_ALIAS = 1;
+
+$ANTI_ALIAS_TEXT = 1;
+
+#
+#Switches controlling Navigation Panels
+#
+$NO_NAVIGATION = 1;
+$ADDRESS = '';
+$INFO = 0; # 0 = do not make a "About this document..." section
+
+#
+#Switches for Linking to other documents
+#
+# currently -- we don't care
+
+$MAX_SPLIT_DEPTH = 0; # Stop making separate files at this depth
+
+$MAX_LINK_DEPTH = 0; # Stop showing child nodes at this depth
+
+$NOLATEX = 0; # 1 = do not pass unknown environments to Latex
+
+$EXTERNAL_IMAGES = 0; # 1 = leave the images outside the document
+
+$ASCII_MODE = 0; # 1 = do not use any icons or internal images
+
+# 1 = use links to external postscript images rather than inlined bitmap
+# images.
+$PS_IMAGES = 0;
+$SHOW_SECTION_NUMBERS = 0;
+
+### Other global variables ###############################################
+$CHILDLINE = "";
+
+# This is the line width measured in pixels and it is used to right justify
+# equations and equation arrays;
+$LINE_WIDTH = 500;
+
+# Used in conjunction with AUTO_NAVIGATION
+$WORDS_IN_PAGE = 300;
+
+# The value of this variable determines how many words to use in each
+# title that is added to the navigation panel (see below)
+#
+$WORDS_IN_NAVIGATION_PANEL_TITLES = 0;
+
+# This number will determine the size of the equations, special characters,
+# and anything which will be converted into an inlined image
+# *except* "image generating environments" such as "figure", "table"
+# or "minipage".
+# Effective values are those greater than 0.
+# Sensible values are between 0.1 - 4.
+$MATH_SCALE_FACTOR = 1.5;
+
+# This number will determine the size of
+# image generating environments such as "figure", "table" or "minipage".
+# Effective values are those greater than 0.
+# Sensible values are between 0.1 - 4.
+$FIGURE_SCALE_FACTOR = 1.6;
+
+
+# If both of the following two variables are set then the "Up" button
+# of the navigation panel in the first node/page of a converted document
+# will point to $EXTERNAL_UP_LINK. $EXTERNAL_UP_TITLE should be set
+# to some text which describes this external link.
+$EXTERNAL_UP_LINK = "";
+$EXTERNAL_UP_TITLE = "";
+
+# If this is set then the resulting HTML will look marginally better if viewed
+# with Netscape.
+$NETSCAPE_HTML = 1;
+
+# Valid paper sizes are "letter", "legal", "a4","a3","a2" and "a0"
+# Paper sizes has no effect other than in the time it takes to create inlined
+# images and in whether large images can be created at all ie
+# - larger paper sizes *MAY* help with large image problems
+# - smaller paper sizes are quicker to handle
+$PAPERSIZE = "a4";
+
+# Replace "english" with another language in order to tell LaTeX2HTML that you
+# want some generated section titles (eg "Table of Contents" or "References")
+# to appear in a different language. Currently only "english" and "french"
+# is supported but it is very easy to add your own. See the example in the
+# file "latex2html.config"
+$TITLES_LANGUAGE = "english";
+
+1; # This must be the last non-comment line
+
+# End File l2h.init
+######################################################################
+
+}
+
+package main;
+
+#
+# pre-defined indices
+#
+
+my %index_prefix_to_name = ();
+
+%index_names =
+(
+ 'cp' => { 'prefix' => ['cp','c']},
+ 'fn' => { 'prefix' => ['fn', 'f'], code => 1},
+ 'vr' => { 'prefix' => ['vr', 'v'], code => 1},
+ 'ky' => { 'prefix' => ['ky', 'k'], code => 1},
+ 'pg' => { 'prefix' => ['pg', 'p'], code => 1},
+ 'tp' => { 'prefix' => ['tp', 't'], code => 1}
+);
+
+foreach my $name(keys(%index_names))
+{
+ foreach my $prefix (@{$index_names{$name}->{'prefix'}})
+ {
+ $forbidden_index_name{$prefix} = 1;
+ $index_prefix_to_name{$prefix} = $name;
+ }
+}
+
+foreach my $other_forbidden_index_name ('info','ps','pdf','htm',
+ 'log','aux','dvi','texi','txi','texinfo','tex','bib')
+{
+ $forbidden_index_name{$other_forbidden_index_name} = 1;
+}
+
+# commands with ---, -- '' and `` preserved
+# usefull with the old interface
+
+%code_style_map = (
+ 'code' => 1,
+ 'command' => 1,
+ 'env' => 1,
+ 'file' => 1,
+ 'kbd' => 1,
+ 'option' => 1,
+ 'samp' => 1,
+ 'verb' => 1,
+);
+
+my @element_directions = ('Up', 'Forward', 'Back', 'Next', 'Prev',
+'SectionNext', 'SectionPrev', 'SectionUp', 'FastForward', 'FastBack',
+'This', 'NodeUp', 'NodePrev', 'NodeNext', 'Following' );
+$::simple_map_ref = \%Texi2HTML::Config::simple_map;
+$::simple_map_pre_ref = \%Texi2HTML::Config::simple_map_pre;
+$::simple_map_texi_ref = \%Texi2HTML::Config::simple_map_texi;
+$::style_map_ref = \%Texi2HTML::Config::style_map;
+$::style_map_pre_ref = \%Texi2HTML::Config::style_map_pre;
+$::style_map_texi_ref = \%Texi2HTML::Config::style_map_texi;
+$::things_map_ref = \%Texi2HTML::Config::things_map;
+$::pre_map_ref = \%Texi2HTML::Config::pre_map;
+$::texi_map_ref = \%Texi2HTML::Config::texi_map;
+
+# delete from hash if we are using the new interface
+foreach my $code (keys(%code_style_map))
+{
+ delete ($code_style_map{$code})
+ if (ref($::style_map_ref->{$code}) eq 'HASH');
+}
+
+# no paragraph in these commands
+my %no_paragraph_macro = (
+ 'xref' => 1,
+ 'ref' => 1,
+ 'pxref' => 1,
+ 'inforef' => 1,
+ 'anchor' => 1,
+);
+
+
+#
+# texinfo section names to level
+#
+%sec2level = (
+ 'top', 0,
+ 'chapter', 1,
+ 'unnumbered', 1,
+ 'chapheading', 1,
+ 'appendix', 1,
+ 'section', 2,
+ 'unnumberedsec', 2,
+ 'heading', 2,
+ 'appendixsec', 2,
+ 'subsection', 3,
+ 'unnumberedsubsec', 3,
+ 'subheading', 3,
+ 'appendixsubsec', 3,
+ 'subsubsection', 4,
+ 'unnumberedsubsubsec', 4,
+ 'subsubheading', 4,
+ 'appendixsubsubsec', 4,
+ );
+
+# the reverse mapping. There is an entry for each sectionning command.
+# The value is a ref on an array containing at each index the corresponding
+# sectionning command name.
+my %level2sec;
+{
+ my $sections = [ ];
+ my $appendices = [ ];
+ my $unnumbered = [ ];
+ my $headings = [ ];
+ foreach my $command (keys (%sec2level))
+ {
+ if ($command =~ /^appendix/)
+ {
+ $level2sec{$command} = $appendices;
+ }
+ elsif ($command =~ /^unnumbered/ or $command eq 'top')
+ {
+ $level2sec{$command} = $unnumbered;
+ }
+ elsif ($command =~ /section$/ or $command eq 'chapter')
+ {
+ $level2sec{$command} = $sections;
+ }
+ else
+ {
+ $level2sec{$command} = $headings;
+ }
+ $level2sec{$command}->[$sec2level{$command}] = $command;
+ }
+}
+
+# this are synonyms
+$sec2level{'appendixsection'} = 2;
+# sec2level{'majorheading'} is also 1 and not 0
+$sec2level{'majorheading'} = 1;
+$sec2level{'chapheading'} = 1;
+$sec2level{'centerchap'} = 1;
+
+# sction to level hash not taking into account raise and lower sections
+my %reference_sec2level = %sec2level;
+
+# regions treated especially. The text for these regions is collected in the
+# corresponding array
+%region_lines = (
+ 'titlepage' => [ ],
+ 'documentdescription' => [ ],
+ 'copying' => [ ],
+);
+
+# those macros aren't considered as beginning a paragraph
+my %no_line_macros = (
+ 'macro' => 1,
+ 'unmacro' => 1,
+ 'rmacro' => 1,
+ 'set' => 1,
+ 'clear' => 1,
+ 'titlefont' => 1,
+ 'include' => 1,
+ 'copying' => 1,
+ 'end copying' => 1,
+ 'tab' => 1,
+ 'item' => 1,
+ 'itemx' => 1,
+ '*' => 1,
+ 'float' => 1,
+ 'end float' => 1,
+ 'caption' => 1,
+ 'shortcaption' => 1,
+);
+
+foreach my $key (keys(%Texi2HTML::Config::misc_command))
+{
+ $no_line_macros{$key} = 1;
+}
+
+# a hash associating a format @thing / @end thing with the type of the format
+# 'complex_format' 'simple_format' 'deff' 'list' 'menu' 'paragraph_format'
+my %format_type = ();
+
+foreach my $simple_format (keys(%Texi2HTML::Config::format_map))
+{
+ $format_type{$simple_format} = 'simple_format';
+}
+foreach my $paragraph_style (keys(%Texi2HTML::Config::paragraph_style))
+{
+ $format_type{$paragraph_style} = 'paragraph_format';
+}
+foreach my $complex_format (keys(%$Texi2HTML::Config::complex_format_map))
+{
+ $format_type{$complex_format} = 'complex_format';
+}
+foreach my $table (('table', 'ftable', 'vtable', 'multitable'))
+{
+ $format_type{$table} = 'table';
+}
+foreach my $def_format (keys(%Texi2HTML::Config::def_map))
+{
+ $format_type{$def_format} = 'deff';
+}
+$format_type{'itemize'} = 'list';
+$format_type{'enumerate'} = 'list';
+
+$format_type{'menu'} = 'menu';
+
+$format_type{'cartouche'} = 'cartouche';
+
+$format_type{'float'} = 'float';
+
+$format_type{'quotation'} = 'quotation';
+
+$format_type{'group'} = 'group';
+
+foreach my $key (keys(%format_type))
+{
+ $no_line_macros{$key} = 1;
+ $no_line_macros{"end $key"} = 1;
+}
+
+foreach my $macro (keys(%Texi2HTML::Config::format_in_paragraph))
+{
+ $no_line_macros{$macro} = 1;
+ $no_line_macros{"end $macro"} = 1;
+}
+
+# fake format at the bottom of the stack
+$format_type{'noformat'} = '';
+
+# fake formats are formats used internally within other formats
+# we associate them with a real format, for the error messages
+my %fake_format = (
+ 'line' => 'table',
+ 'term' => 'table',
+ 'item' => 'list or table',
+ 'row' => 'multitable row',
+ 'cell' => 'multitable cell',
+ 'deff_item' => 'definition command',
+ 'menu_comment' => 'menu',
+ 'menu_description' => 'menu',
+ 'menu_preformatted' => 'menu',
+ );
+
+foreach my $key (keys(%fake_format))
+{
+ $format_type{$key} = 'fake';
+}
+
+# raw formats which are expanded especially
+my @raw_regions = ('html', 'verbatim', 'tex', 'xml', 'docbook');
+
+# regions expanded or not depending on the value of this hash
+my %text_macros = (
+ 'iftex' => 0,
+ 'ignore' => 0,
+ 'menu' => 0,
+ 'ifplaintext' => 0,
+ 'ifinfo' => 0,
+ 'ifxml' => 0,
+ 'ifhtml' => 0,
+ 'ifdocbook' => 0,
+ 'html' => 0,
+ 'tex' => 0,
+ 'xml' => 0,
+ 'titlepage' => 1,
+ 'documentdescription' => 1,
+ 'copying' => 1,
+ 'ifnothtml' => 1,
+ 'ifnottex' => 1,
+ 'ifnotplaintext' => 1,
+ 'ifnotinfo' => 1,
+ 'ifnotxml' => 1,
+ 'ifnotdocbook' => 1,
+ 'direntry' => 0,
+ 'verbatim' => 'raw',
+ 'ifclear' => 'value',
+ 'ifset' => 'value' ,
+ );
+
+foreach my $key (keys(%text_macros))
+{
+ unless ($text_macros{$key} eq 'raw')
+ {
+ $no_line_macros{$key} = 1;
+ $no_line_macros{"end $key"} = 1;
+ }
+}
+
+# The css formats are associated with complex format commands, and associated
+# with the 'pre_style' key
+foreach my $complex_format (keys(%$Texi2HTML::Config::complex_format_map))
+{
+ next if (defined($Texi2HTML::Config::complex_format_map->{$complex_format}->{'pre_style'}));
+ $Texi2HTML::Config::complex_format_map->{$complex_format}->{'pre_style'} = '';
+ $Texi2HTML::Config::complex_format_map->{$complex_format}->{'pre_style'} = $Texi2HTML::Config::css_map{"pre.$complex_format"} if (exists($Texi2HTML::Config::css_map{"pre.$complex_format"}));
+}
+
+#+++############################################################################
+# #
+# Argument parsing, initialisation #
+# #
+#---############################################################################
+
+#
+# flush stdout and stderr after every write
+#
+select(STDERR);
+$| = 1;
+select(STDOUT);
+$| = 1;
+
+my $I = \&Texi2HTML::I18n::get_string;
+
+my $T2H_USER; # user running the script
+my $documentdescription; # text in @documentdescription
+
+# shorthand for Texi2HTML::Config::VERBOSE
+my $T2H_VERBOSE;
+my $T2H_DEBUG;
+
+sub echo_warn($;$);
+#print STDERR "" . &$I('test i18n: \' , \a \\ %% %{unknown}a %known % %{known} \\', { 'known' => 'a known string', 'no' => 'nope'}); exit 0;
+
+# file: file name to locate. It can be a file path.
+# all_files: if true collect all the files with that name, otherwise stop
+# at first match.
+# directories: a reference on a array containing a list of directories to
+# search the file in. default is \@texi2html_config_dirs.
+sub locate_init_file($;$$)
+{
+ my $file = shift;
+ my $all_files = shift;
+ my $directories = shift;
+
+ $directories = \@texi2html_config_dirs if !defined($directories);
+
+ if ($file =~ /^\//)
+ {
+ return $file if (-e $file and -r $file);
+ }
+ else
+ {
+ my @files;
+ foreach my $dir (@$directories)
+ {
+ next unless (-d "$dir");
+ if ($all_files)
+ {
+ push (@files, "$dir/$file") if (-e "$dir/$file" and -r "$dir/$file");
+ }
+ else
+ {
+ return "$dir/$file" if (-e "$dir/$file" and -r "$dir/$file");
+ }
+ }
+ return @files if ($all_files);
+ }
+ return undef;
+}
+
+# called on -init-file
+sub load_init_file
+{
+ # First argument is option
+ shift;
+ # second argument is value of options
+ my $init_file = shift;
+ my $file;
+ if ($file = locate_init_file($init_file))
+ {
+ print STDERR "# reading initialization file from $file\n"
+ if ($T2H_VERBOSE);
+ return (Texi2HTML::Config::load($file));
+ }
+ else
+ {
+ print STDERR "$ERROR Error: can't read init file $init_file\n";
+ return 0;
+ }
+}
+
+my $cmd_line_lang = 0; # 1 if lang was succesfully set by the command line
+ # in that case @documentlanguage is ignored.
+my $lang_set = 0; # 1 if lang was set
+
+#
+# called on -lang
+sub set_document_language ($;$$)
+{
+ my $lang = shift;
+ my $from_command_line = shift;
+ my $line_nr = shift;
+ my @files = locate_init_file("$i18n_dir/$lang", 1);
+ foreach my $file (@files)
+ {
+ Texi2HTML::Config::load($file);
+ }
+ if (Texi2HTML::I18n::set_language($lang))
+ {
+ print STDERR "# using '$lang' as document language\n" if ($T2H_VERBOSE);
+ $Texi2HTML::Config::LANG = $lang;
+ $lang_set = 1;
+ $cmd_line_lang = 1 if ($from_command_line);
+ if (!$Texi2HTML::Config::TEST)
+ {
+ print STDERR "# Setting date in $Texi2HTML::Config::LANG\n" if ($T2H_DEBUG);
+ $Texi2HTML::THISDOC{'today'} = Texi2HTML::I18n::pretty_date($Texi2HTML::Config::LANG); # like "20 September 1993";
+ }
+ else
+ {
+ $Texi2HTML::THISDOC{'today'} = 'a sunny day';
+ }
+ $Texi2HTML::THISDOC{'today'} = $Texi2HTML::Config::DATE
+ if (defined($Texi2HTML::Config::DATE));
+ $::things_map_ref->{'today'} = $Texi2HTML::THISDOC{'today'};
+ $::pre_map_ref->{'today'} = $Texi2HTML::THISDOC{'today'};
+ $::texi_map_ref->{'today'} = $Texi2HTML::THISDOC{'today'};
+ }
+ else
+ {
+ echo_error ("Language specs for '$lang' do not exists. Reverting to '$Texi2HTML::Config::LANG'", $line_nr);
+ }
+}
+
+# used to manage expanded sections from the command line
+sub set_expansion($$)
+{
+ my $region = shift;
+ my $set = shift;
+ $set = 1 if (!defined($set));
+ if ($set)
+ {
+ push (@Texi2HTML::Config::EXPAND, $region) unless (grep {$_ eq $region} @Texi2HTML::Config::EXPAND);
+ }
+ else
+ {
+ @Texi2HTML::Config::EXPAND = grep {$_ ne $region} @Texi2HTML::Config::EXPAND;
+ }
+}
+
+
+# find the encoding alias.
+# with encoding support (USE_UNICODE), may return undef if no alias was found
+sub encoding_alias($)
+{
+ my $encoding = shift;
+ return $encoding if (!defined($encoding) or $encoding eq '');
+ if ($Texi2HTML::Config::USE_UNICODE)
+ {
+ if (! Encode::resolve_alias($encoding))
+ {
+ echo_warn("Encoding $encoding unknown");
+ return undef;
+ }
+ print STDERR "# Using encoding " . Encode::resolve_alias($encoding) . "\n"
+ if ($T2H_VERBOSE);
+ return Encode::resolve_alias($encoding);
+ }
+ else
+ {
+ echo_warn("No alias searched for encoding");
+ return $encoding;
+ }
+}
+
+# setup hashes used for html manual cross references in texinfo
+my %cross_ref_texi_map = %Texi2HTML::Config::texi_map;
+
+$cross_ref_texi_map{'enddots'} = '...';
+
+my %cross_ref_simple_map_texi = %Texi2HTML::Config::simple_map_texi;
+my %cross_ref_style_map_texi = ();
+my %cross_transliterate_style_map_texi = ();
+
+my %cross_transliterate_texi_map = %cross_ref_texi_map;
+
+foreach my $command (keys(%Texi2HTML::Config::style_map_texi))
+{
+ $cross_ref_style_map_texi{$command} = {};
+ $cross_transliterate_style_map_texi{$command} = {};
+ foreach my $key (keys (%{$Texi2HTML::Config::style_map_texi{$command}}))
+ {
+#print STDERR "$command, $key, $style_map_texi{$command}->{$key}\n";
+ $cross_ref_style_map_texi{$command}->{$key} =
+ $Texi2HTML::Config::style_map_texi{$command}->{$key};
+ $cross_transliterate_style_map_texi{$command}->{$key} =
+ $Texi2HTML::Config::style_map_texi{$command}->{$key};
+ }
+}
+
+$cross_ref_simple_map_texi{"\n"} = ' ';
+$cross_ref_simple_map_texi{"*"} = ' ';
+
+my %nodes = (); # nodes hash. The key is the texi node name
+my %cross_reference_nodes = (); # normalized node names arrays
+
+# This function is used to construct link names from node names as
+# specified for texinfo
+sub cross_manual_links()
+{
+ print STDERR "# Doing ".scalar(keys(%nodes))." cross manual links\n"
+ if ($T2H_DEBUG);
+ my $normal_text_kept = $Texi2HTML::Config::normal_text;
+ $::simple_map_texi_ref = \%cross_ref_simple_map_texi;
+ $::style_map_texi_ref = \%cross_ref_style_map_texi;
+ $::texi_map_ref = \%cross_ref_texi_map;
+ $Texi2HTML::Config::normal_text = \&Texi2HTML::Config::t2h_cross_manual_normal_text;
+
+ foreach my $key (keys(%nodes))
+ {
+ my $node = $nodes{$key};
+ #print STDERR "CROSS_MANUAL:$key,$node\n";
+ next if ($node->{'index_page'});
+ if (!defined($node->{'texi'}))
+ {
+ ###################### debug section
+ foreach my $key (keys(%$node))
+ {
+ #print STDERR "$key:$node->{$key}!!!\n";
+ }
+ ###################### end debug section
+ }
+ else
+ {
+ $node->{'cross_manual_target'} = remove_texi($node->{'texi'});
+ if ($Texi2HTML::Config::USE_UNICODE)
+ {
+ $node->{'cross_manual_target'} = Unicode::Normalize::NFC($node->{'cross_manual_target'});
+ if ($Texi2HTML::Config::TRANSLITERATE_NODE and $Texi2HTML::Config::USE_UNIDECODE)
+ {
+ $node->{'cross_manual_file'} =
+ unicode_to_protected(unicode_to_transliterate($node->{'cross_manual_target'}));
+ }
+ $node->{'cross_manual_target'} =
+ unicode_to_protected($node->{'cross_manual_target'});
+ }
+#print STDERR "CROSS_MANUAL_TARGET $node->{'cross_manual_target'}\n";
+ unless ($node->{'external_node'})
+ {
+ if (exists($cross_reference_nodes{$node->{'cross_manual_target'}}))
+ {
+ my $other_node_array = $cross_reference_nodes{$node->{'cross_manual_target'}};
+ my $node_seen;
+ foreach my $other_node (@{$other_node_array})
+ {
+ $node_seen = $other_node;
+ last if ($nodes{$other_node}->{'seen'})
+ }
+ echo_error("Node equivalent with `$node->{'texi'}' allready used `$node_seen'");
+ push @{$other_node_array}, $node->{'texi'};
+ }
+ else
+ {
+ push @{$cross_reference_nodes{$node->{'cross_manual_target'}}}, $node->{'texi'};
+ }
+ }
+ }
+ }
+
+
+ if ($Texi2HTML::Config::TRANSLITERATE_NODE and
+ (!$Texi2HTML::Config::USE_UNICODE or !$Texi2HTML::Config::USE_UNIDECODE))
+ {
+ $::style_map_texi_ref = \%cross_transliterate_style_map_texi;
+ $::texi_map_ref = \%cross_transliterate_texi_map;
+
+ foreach my $key (keys(%nodes))
+ {
+ my $node = $nodes{$key};
+ next if ($node->{'index_page'});
+ if (defined($node->{'texi'}))
+ {
+ $node->{'cross_manual_file'} = remove_texi($node->{'texi'});
+ $node->{'cross_manual_file'} = unicode_to_protected(unicode_to_transliterate($node->{'cross_manual_file'})) if ($Texi2HTML::Config::USE_UNICODE);
+ }
+ }
+ }
+
+ $Texi2HTML::Config::normal_text = $normal_text_kept;
+ $::simple_map_texi_ref = \%Texi2HTML::Config::simple_map_texi;
+ $::style_map_texi_ref = \%Texi2HTML::Config::style_map_texi;
+ $::texi_map_ref = \%Texi2HTML::Config::texi_map;
+}
+
+sub unicode_to_protected($)
+{
+ my $text = shift;
+ my $result = '';
+ while ($text ne '')
+ {
+ if ($text =~ s/^([A-Za-z0-9]+)//o)
+ {
+ $result .= $1;
+ }
+ elsif ($text =~ s/^ //o)
+ {
+ $result .= '-';
+ }
+ elsif ($text =~ s/^(.)//o)
+ {
+ if (exists($Texi2HTML::Config::ascii_character_map{$1}))
+ {
+ $result .= '_' . lc($Texi2HTML::Config::ascii_character_map{$1});
+ }
+ else
+ {
+ $result .= '_' . lc(sprintf("%04x",ord($1)));
+ }
+ }
+ else
+ {
+ print STDERR "Bug: unknown character in a cross ref (likely in infinite loop)\n";
+ print STDERR "Text: !!$text!!\n";
+ sleep 1;
+ }
+ }
+ return $result;
+}
+
+sub unicode_to_transliterate($)
+{
+ my $text = shift;
+ my $result = '';
+ while ($text ne '')
+ {
+ if ($text =~ s/^([A-Za-z0-9 ]+)//o)
+ {
+ $result .= $1;
+ }
+ elsif ($text =~ s/^(.)//o)
+ {
+ if (exists($Texi2HTML::Config::ascii_character_map{$1}))
+ {
+ $result .= $1;
+ }
+ elsif (exists($Texi2HTML::Config::transliterate_map{uc(sprintf("%04x",ord($1)))}))
+ {
+ $result .= $Texi2HTML::Config::transliterate_map{uc(sprintf("%04x",ord($1)))};
+ }
+ elsif (exists($Texi2HTML::Config::unicode_diacritical{uc(sprintf("%04x",ord($1)))}))
+ {
+ $result .= '';
+ }
+ else
+ {
+ if ($Texi2HTML::Config::USE_UNIDECODE)
+ {
+ $result .= unidecode($1);
+ }
+ else
+ {
+ $result .= $1;
+ }
+ }
+ }
+ else
+ {
+ print STDERR "Bug: unknown character in cross ref transliteration (likely in infinite loop)\n";
+ sleep 1;
+ }
+ }
+ return $result;
+}
+
+# This function is used to construct a link name from a node name as
+# specified for texinfo
+sub cross_manual_line($;$)
+{
+ my $text = shift;
+ my $transliterate = shift;
+#print STDERR "cross_manual_line $text\n";
+#print STDERR "remove_texi text ". remove_texi($text)."\n\n\n";
+ $::simple_map_texi_ref = \%cross_ref_simple_map_texi;
+ $::style_map_texi_ref = \%cross_ref_style_map_texi;
+ $::texi_map_ref = \%cross_ref_texi_map;
+ my $normal_text_kept = $Texi2HTML::Config::normal_text;
+ $Texi2HTML::Config::normal_text = \&Texi2HTML::Config::t2h_cross_manual_normal_text;
+
+ my ($cross_ref_target, $cross_ref_file);
+ if ($Texi2HTML::Config::USE_UNICODE)
+ {
+ $cross_ref_target = Unicode::Normalize::NFC(remove_texi($text));
+ if ($transliterate and $Texi2HTML::Config::USE_UNIDECODE)
+ {
+ $cross_ref_file =
+ unicode_to_protected(unicode_to_transliterate($cross_ref_target));
+ }
+ $cross_ref_target = unicode_to_protected($cross_ref_target);
+ }
+ else
+ {
+ $cross_ref_target = remove_texi($text);
+ }
+
+ if ($transliterate and
+ (!$Texi2HTML::Config::USE_UNICODE or !$Texi2HTML::Config::USE_UNIDECODE))
+ {
+ $::style_map_texi_ref = \%cross_transliterate_style_map_texi;
+ $::texi_map_ref = \%cross_transliterate_texi_map;
+ $cross_ref_file = remove_texi($text);
+ $cross_ref_file = unicode_to_protected(unicode_to_transliterate($cross_ref_file))
+ if ($Texi2HTML::Config::USE_UNICODE);
+ }
+
+ $Texi2HTML::Config::normal_text = $normal_text_kept;
+ $::simple_map_texi_ref = \%Texi2HTML::Config::simple_map_texi;
+ $::style_map_texi_ref = \%Texi2HTML::Config::style_map_texi;
+ $::texi_map_ref = \%Texi2HTML::Config::texi_map;
+#print STDERR "\n\ncross_ref $cross_ref\n";
+ unless ($transliterate)
+ {
+ return $cross_ref_target;
+ }
+# print STDERR "$text|$cross_ref_target|$cross_ref_file\n";
+ return ($cross_ref_target, $cross_ref_file);
+}
+
+# T2H_OPTIONS is a hash whose keys are the (long) names of valid
+# command-line options and whose values are a hash with the following keys:
+# type ==> one of !|=i|:i|=s|:s (see GetOpt::Long for more info)
+# linkage ==> ref to scalar, array, or subroutine (see GetOpt::Long for more info)
+# verbose ==> short description of option (displayed by -h)
+# noHelp ==> if 1 -> for "not so important options": only print description on -h 1
+# 2 -> for obsolete options: only print description on -h 2
+my $T2H_OPTIONS;
+$T2H_OPTIONS -> {'debug'} =
+{
+ type => '=i',
+ linkage => \$Texi2HTML::Config::DEBUG,
+ verbose => 'output HTML with debuging information',
+};
+
+$T2H_OPTIONS -> {'doctype'} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::DOCTYPE,
+ verbose => 'document type which is output in header of HTML files',
+ noHelp => 1
+};
+
+$T2H_OPTIONS -> {'frameset-doctype'} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::FRAMESET_DOCTYPE,
+ verbose => 'document type for HTML frameset documents',
+ noHelp => 1
+};
+
+$T2H_OPTIONS -> {'test'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::TEST,
+ verbose => 'use predefined information to avoid differences with reference files',
+ noHelp => 1
+};
+
+$T2H_OPTIONS -> {'dump-texi'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::DUMP_TEXI,
+ verbose => 'dump the output of first pass into a file with extension passfirst and exit',
+ noHelp => 1
+};
+
+$T2H_OPTIONS -> {'macro-expand'} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::MACRO_EXPAND,
+ verbose => 'output macro expanded source in <file>',
+};
+
+$T2H_OPTIONS -> {'expand'} =
+{
+ type => '=s',
+ linkage => sub {set_expansion($_[1], 1);},
+ verbose => 'Expand info|tex|none section of texinfo source',
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {'no-expand'} =
+{
+ type => '=s',
+ linkage => sub {set_expansion ($_[1], 0);},
+ verbose => 'Don\'t expand the given section of texinfo source',
+};
+
+$T2H_OPTIONS -> {'noexpand'} =
+{
+ type => '=s',
+ linkage => $T2H_OPTIONS->{'no-expand'}->{'linkage'},
+ verbose => $T2H_OPTIONS->{'no-expand'}->{'verbose'},
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {'ifhtml'} =
+{
+ type => '!',
+ linkage => sub { set_expansion('html', $_[1]); },
+ verbose => "expand ifhtml and html sections",
+};
+
+$T2H_OPTIONS -> {'ifinfo'} =
+{
+ type => '!',
+ linkage => sub { set_expansion('info', $_[1]); },
+ verbose => "expand ifinfo",
+};
+
+$T2H_OPTIONS -> {'ifxml'} =
+{
+ type => '!',
+ linkage => sub { set_expansion('xml', $_[1]); },
+ verbose => "expand ifxml and xml sections",
+};
+
+$T2H_OPTIONS -> {'ifdocbook'} =
+{
+ type => '!',
+ linkage => sub { set_expansion('docbook', $_[1]); },
+ verbose => "expand ifdocbook and docbook sections",
+};
+
+$T2H_OPTIONS -> {'iftex'} =
+{
+ type => '!',
+ linkage => sub { set_expansion('tex', $_[1]); },
+ verbose => "expand iftex and tex sections",
+};
+
+$T2H_OPTIONS -> {'ifplaintext'} =
+{
+ type => '!',
+ linkage => sub { set_expansion('plaintext', $_[1]); },
+ verbose => "expand ifplaintext sections",
+};
+
+$T2H_OPTIONS -> {'invisible'} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::INVISIBLE_MARK,
+ verbose => 'use text in invisble anchor',
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {'iso'} =
+{
+ type => 'iso',
+ linkage => \$Texi2HTML::Config::USE_ISO,
+ verbose => 'if set, ISO8859 characters are used for special symbols (like copyright, etc)',
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {'I'} =
+{
+ type => '=s',
+ linkage => \@Texi2HTML::Config::INCLUDE_DIRS,
+ verbose => 'append $s to the @include search path',
+};
+
+$T2H_OPTIONS -> {'conf-dir'} =
+{
+ type => '=s',
+ linkage => \@Texi2HTML::Config::CONF_DIRS,
+ verbose => 'append $s to the init file directories',
+};
+
+$T2H_OPTIONS -> {'P'} =
+{
+ type => '=s',
+ linkage => sub {unshift (@Texi2HTML::Config::PREPEND_DIRS, $_[1]);},
+ verbose => 'prepend $s to the @include search path',
+};
+
+$T2H_OPTIONS -> {'top-file'} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::TOP_FILE,
+ verbose => 'use $s as top file, instead of <docname>.html',
+};
+
+$T2H_OPTIONS -> {'toc-file'} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::TOC_FILE,
+ verbose => 'use $s as ToC file, instead of <docname>_toc.html',
+};
+
+$T2H_OPTIONS -> {'frames'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::FRAMES,
+ verbose => 'output files which use HTML 4.0 frames (experimental)',
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {'menu'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::SHOW_MENU,
+ verbose => 'output Texinfo menus',
+};
+
+$T2H_OPTIONS -> {'number'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::NUMBER_SECTIONS,
+ verbose => 'use numbered sections',
+};
+
+$T2H_OPTIONS -> {'use-nodes'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::USE_NODES,
+ verbose => 'use nodes for sectionning',
+};
+
+$T2H_OPTIONS -> {'node-files'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::NODE_FILES,
+ verbose => 'produce one file per node for cross references'
+};
+
+$T2H_OPTIONS -> {'separated-footnotes'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::SEPARATED_FOOTNOTES,
+ verbose => 'footnotes on a separated page',
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {'toc-links'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::TOC_LINKS,
+ verbose => 'create links from headings to toc entries'
+};
+
+$T2H_OPTIONS -> {'split'} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::SPLIT,
+ verbose => 'split document on section|chapter|node else no splitting',
+};
+
+$T2H_OPTIONS -> {'sec-nav'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::SECTION_NAVIGATION,
+ verbose => 'output navigation panels for each section',
+};
+
+$T2H_OPTIONS -> {'subdir'} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::SUBDIR,
+ verbose => 'put files in directory $s, not $cwd',
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {'short-ext'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::SHORTEXTN,
+ verbose => 'use "htm" extension for output HTML files',
+};
+
+$T2H_OPTIONS -> {'prefix'} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::PREFIX,
+ verbose => 'use as prefix for output files, instead of <docname>',
+};
+
+$T2H_OPTIONS -> {'output'} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::OUT,
+ verbose => 'output goes to $s (directory if split)',
+};
+
+$T2H_OPTIONS -> {'no-validate'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::NOVALIDATE,
+ verbose => 'suppress node cross-reference validation',
+};
+
+$T2H_OPTIONS -> {'short-ref'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::SHORT_REF,
+ verbose => 'if set, references are without section numbers',
+};
+
+$T2H_OPTIONS -> {'idx-sum'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::IDX_SUMMARY,
+ verbose => 'if set, also output index summary',
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {'def-table'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::DEF_TABLE,
+ verbose => 'if set, \@def.. are converted using tables.',
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {'Verbose'} =
+{
+ type => '!',
+ linkage=> \$Texi2HTML::Config::VERBOSE,
+ verbose => 'print progress info to stdout',
+};
+
+$T2H_OPTIONS -> {'lang'} =
+{
+ type => '=s',
+ linkage => sub {set_document_language($_[1], 1)},
+ verbose => 'use $s as document language (ISO 639 encoding)',
+};
+
+$T2H_OPTIONS -> {'ignore-preamble-text'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::IGNORE_PREAMBLE_TEXT,
+ verbose => 'if set, ignore the text before @node and sectionning commands',
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {'html-xref-prefix'} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::EXTERNAL_DIR,
+ verbose => '$s is the base dir for external manual references',
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {'l2h'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::L2H,
+ verbose => 'if set, uses latex2html for @math and @tex',
+};
+
+$T2H_OPTIONS -> {'l2h-l2h'} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::L2H_L2H,
+ verbose => 'program to use for latex2html translation',
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {'l2h-skip'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::L2H_SKIP,
+ verbose => 'if set, tries to reuse previously latex2html output',
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {'l2h-tmp'} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::L2H_TMP,
+ verbose => 'if set, uses $s as temporary latex2html directory',
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {'l2h-file'} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::L2H_FILE,
+ verbose => 'if set, uses $s as latex2html init file',
+ noHelp => 1,
+};
+
+
+$T2H_OPTIONS -> {'l2h-clean'} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::L2H_CLEAN,
+ verbose => 'if set, do not keep intermediate latex2html files for later reuse',
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {'D'} =
+{
+ type => '=s',
+ linkage => sub {$value{$_[1]} = 1;},
+ verbose => 'equivalent to Texinfo "@set $s 1"',
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {'U'} =
+{
+ type => '=s',
+ linkage => sub {delete $value{$_[1]};},
+ verbose => 'equivalent to Texinfo "@clear $s"',
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {'init-file'} =
+{
+ type => '=s',
+ linkage => \&load_init_file,
+ verbose => 'load init file $s'
+};
+
+$T2H_OPTIONS -> {'css-include'} =
+{
+ type => '=s',
+ linkage => \@Texi2HTML::Config::CSS_FILES,
+ verbose => 'use css file $s'
+};
+
+##
+## obsolete cmd line options
+##
+my $T2H_OBSOLETE_OPTIONS;
+
+$T2H_OBSOLETE_OPTIONS -> {'out-file'} =
+{
+ type => '=s',
+ linkage => sub {$Texi2HTML::Config::OUT = $_[1]; $Texi2HTML::Config::SPLIT = '';},
+ verbose => 'if set, all HTML output goes into file $s, obsoleted by "-output" with different semantics',
+ noHelp => 2
+};
+
+$T2H_OBSOLETE_OPTIONS -> {init_file} =
+{
+ type => '=s',
+ linkage => \&load_init_file,
+ verbose => 'obsolete, use "-init-file" instead',
+ noHelp => 2
+};
+
+$T2H_OBSOLETE_OPTIONS -> {l2h_clean} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::L2H_CLEAN,
+ verbose => 'obsolete, use "-l2h-clean" instead',
+ noHelp => 2,
+};
+
+$T2H_OBSOLETE_OPTIONS -> {l2h_l2h} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::L2H_L2H,
+ verbose => 'obsolete, use "-l2h-l2h" instead',
+ noHelp => 2
+};
+
+$T2H_OBSOLETE_OPTIONS -> {l2h_skip} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::L2H_SKIP,
+ verbose => 'obsolete, use "-l2h-skip" instead',
+ noHelp => 2
+};
+
+$T2H_OBSOLETE_OPTIONS -> {l2h_tmp} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::L2H_TMP,
+ verbose => 'obsolete, use "-l2h-tmp" instead',
+ noHelp => 2
+};
+
+$T2H_OBSOLETE_OPTIONS -> {out_file} =
+{
+ type => '=s',
+ linkage => sub {$Texi2HTML::Config::OUT = $_[1]; $Texi2HTML::Config::SPLIT = '';},
+ verbose => 'obsolete, use "-out-file" instead',
+ noHelp => 2
+};
+
+$T2H_OBSOLETE_OPTIONS -> {short_ref} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::SHORT_REF,
+ verbose => 'obsolete, use "-short-ref" instead',
+ noHelp => 2
+};
+
+$T2H_OBSOLETE_OPTIONS -> {idx_sum} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::IDX_SUMMARY,
+ verbose => 'obsolete, use "-idx-sum" instead',
+ noHelp => 2
+};
+
+$T2H_OBSOLETE_OPTIONS -> {def_table} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::DEF_TABLE,
+ verbose => 'obsolete, use "-def-table" instead',
+ noHelp => 2
+};
+
+$T2H_OBSOLETE_OPTIONS -> {short_ext} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::SHORTEXTN,
+ verbose => 'obsolete, use "-short-ext" instead',
+ noHelp => 2
+};
+
+$T2H_OBSOLETE_OPTIONS -> {sec_nav} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::SECTION_NAVIGATION,
+ verbose => 'obsolete, use "-sec-nav" instead',
+ noHelp => 2
+};
+
+$T2H_OBSOLETE_OPTIONS -> {top_file} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::TOP_FILE,
+ verbose => 'obsolete, use "-top-file" instead',
+ noHelp => 2
+};
+
+$T2H_OBSOLETE_OPTIONS -> {toc_file} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::TOC_FILE,
+ verbose => 'obsolete, use "-toc-file" instead',
+ noHelp => 2
+};
+
+$T2H_OBSOLETE_OPTIONS -> {glossary} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::USE_GLOSSARY,
+ verbose => "this does nothing",
+ noHelp => 2,
+};
+
+$T2H_OBSOLETE_OPTIONS -> {check} =
+{
+ type => '!',
+ linkage => sub {exit 0;},
+ verbose => "exit without doing anything",
+ noHelp => 2,
+};
+
+$T2H_OBSOLETE_OPTIONS -> {dump_texi} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::DUMP_TEXI,
+ verbose => 'obsolete, use "-dump-texi" instead',
+ noHelp => 1
+};
+
+$T2H_OBSOLETE_OPTIONS -> {frameset_doctype} =
+{
+ type => '=s',
+ linkage => \$Texi2HTML::Config::FRAMESET_DOCTYPE,
+ verbose => 'obsolete, use "-frameset-doctype" instead',
+ noHelp => 2
+};
+
+$T2H_OBSOLETE_OPTIONS -> {'no-section_navigation'} =
+{
+ type => '!',
+ linkage => sub {$Texi2HTML::Config::SECTION_NAVIGATION = 0;},
+ verbose => 'obsolete, use -nosec_nav',
+ noHelp => 2,
+};
+my $use_acc; # not used
+$T2H_OBSOLETE_OPTIONS -> {use_acc} =
+{
+ type => '!',
+ linkage => \$use_acc,
+ verbose => 'obsolete, set to true unconditionnaly',
+ noHelp => 2
+};
+$T2H_OBSOLETE_OPTIONS -> {expandinfo} =
+{
+ type => '!',
+ linkage => sub {push @Texi2HTML::Config::EXPAND, 'info';},
+ verbose => 'obsolete, use "-expand info" instead',
+ noHelp => 2,
+};
+$T2H_OBSOLETE_OPTIONS -> {expandtex} =
+{
+ type => '!',
+ linkage => sub {push @Texi2HTML::Config::EXPAND, 'tex';},
+ verbose => 'obsolete, use "-expand tex" instead',
+ noHelp => 2,
+};
+$T2H_OBSOLETE_OPTIONS -> {monolithic} =
+{
+ type => '!',
+ linkage => sub {$Texi2HTML::Config::SPLIT = '';},
+ verbose => 'obsolete, use "-split no" instead',
+ noHelp => 2
+};
+$T2H_OBSOLETE_OPTIONS -> {split_node} =
+{
+ type => '!',
+ linkage => sub{$Texi2HTML::Config::SPLIT = 'section';},
+ verbose => 'obsolete, use "-split section" instead',
+ noHelp => 2,
+};
+$T2H_OBSOLETE_OPTIONS -> {split_chapter} =
+{
+ type => '!',
+ linkage => sub{$Texi2HTML::Config::SPLIT = 'chapter';},
+ verbose => 'obsolete, use "-split chapter" instead',
+ noHelp => 2,
+};
+$T2H_OBSOLETE_OPTIONS -> {no_verbose} =
+{
+ type => '!',
+ linkage => sub {$Texi2HTML::Config::VERBOSE = 0;},
+ verbose => 'obsolete, use -noverbose instead',
+ noHelp => 2,
+};
+$T2H_OBSOLETE_OPTIONS -> {output_file} =
+{
+ type => '=s',
+ linkage => sub {$Texi2HTML::Config::OUT = $_[1]; $Texi2HTML::Config::SPLIT = '';},
+ verbose => 'obsolete, use --out-file instead',
+ noHelp => 2
+};
+
+$T2H_OBSOLETE_OPTIONS -> {section_navigation} =
+{
+ type => '!',
+ linkage => \$Texi2HTML::Config::SECTION_NAVIGATION,
+ verbose => 'obsolete, use --sec-nav instead',
+ noHelp => 2,
+};
+
+$T2H_OBSOLETE_OPTIONS -> {verbose} =
+{
+ type => '!',
+ linkage=> \$Texi2HTML::Config::VERBOSE,
+ verbose => 'obsolete, use -Verbose instead',
+ noHelp => 2
+};
+
+# read initialzation from $sysconfdir/texi2htmlrc or $HOME/.texi2htmlrc
+# (this is obsolete)
+my @rc_files = ();
+push @rc_files, "$sysconfdir/texi2htmlrc" if defined($sysconfdir);
+push @rc_files, "$ENV{'HOME'}/.texi2htmlrc" if (defined($ENV{HOME}));
+foreach my $i (@rc_files)
+{
+ if (-e $i and -r $i)
+ {
+ print STDERR "# reading initialization file from $i\n"
+ if ($T2H_VERBOSE);
+ print STDERR "Reading config from $i is obsolete, use texi2html/$conf_file_name instead\n";
+ Texi2HTML::Config::load($i);
+ }
+}
+
+# read initialization files
+foreach my $file (locate_init_file($conf_file_name, 1))
+{
+ print STDERR "# reading initialization file from $file\n" if ($T2H_VERBOSE);
+ Texi2HTML::Config::load($file);
+}
+
+#
+# %value hold texinfo variables, see also -D, -U, @set and @clear.
+# we predefine html (the output format) and texi2html (the translator)
+%value =
+ (
+ 'html' => 1,
+ 'texi2html' => $THISVERSION,
+ );
+
+#+++############################################################################
+# #
+# parse command-line options
+# #
+#---############################################################################
+
+
+my $T2H_USAGE_TEXT = <<EOT;
+Usage: texi2html [OPTIONS] TEXINFO-FILE
+Translates Texinfo source documentation to HTML.
+EOT
+my $T2H_FAILURE_TEXT = <<EOT;
+Try 'texi2html --help' for usage instructions.
+EOT
+
+my $options = new Getopt::MySimple;
+
+$T2H_OPTIONS -> {'help'} =
+{
+ type => ':i',
+ default => '',
+ linkage => sub {$options->helpOptions($_[1]);
+ print "\nSend bugs and suggestions to <texi2html-bug\@nongnu.org>\n";
+ exit (0);},
+ verbose => "print help and exit"
+};
+
+# this avoids getOptions defining twice 'help' and 'version'.
+$T2H_OBSOLETE_OPTIONS -> {'help'} = 0;
+$T2H_OBSOLETE_OPTIONS -> {'version'} = 0;
+
+# some older version of GetOpt::Long don't have
+# Getopt::Long::Configure("pass_through")
+eval {Getopt::Long::Configure("pass_through");};
+my $Configure_failed = $@ && <<EOT;
+**WARNING: Parsing of obsolete command-line options could have failed.
+ Consider to use only documented command-line options (run
+ 'texi2html --help 2' for a complete list) or upgrade to perl
+ version 5.005 or higher.
+EOT
+if (! $options->getOptions($T2H_OPTIONS, $T2H_USAGE_TEXT, "$THISVERSION\n"))
+{
+ print STDERR "$Configure_failed" if $Configure_failed;
+ die $T2H_FAILURE_TEXT;
+}
+if (@ARGV > 1)
+{
+ eval {Getopt::Long::Configure("no_pass_through");};
+ if (! $options->getOptions($T2H_OBSOLETE_OPTIONS, $T2H_USAGE_TEXT, "$THISVERSION\n"))
+ {
+ print STDERR "$Configure_failed" if $Configure_failed;
+ die $T2H_FAILURE_TEXT;
+ }
+}
+
+#
+# read texi2html extensions (if any)
+# It is obsolete (obsoleted by -init-file). we keep it for backward
+# compatibility.
+my $extensions = 'texi2html.ext'; # extensions in working directory
+if (-f $extensions)
+{
+ print STDERR "# reading extensions from $extensions\n" if $T2H_VERBOSE;
+ require($extensions);
+}
+my $progdir;
+($progdir = $0) =~ s/[^\/]+$//;
+if ($progdir && ($progdir ne './'))
+{
+ $extensions = "${progdir}texi2html.ext"; # extensions in texi2html directory
+ if (-f $extensions)
+ {
+ print STDERR "# reading extensions from $extensions\n" if $T2H_VERBOSE;
+ require($extensions);
+ }
+}
+
+# $T2H_DEBUG and $T2H_VERBOSE are shorthands
+$T2H_DEBUG = $Texi2HTML::Config::DEBUG;
+$T2H_VERBOSE = $Texi2HTML::Config::VERBOSE;
+
+$Texi2HTML::THISDOC{'debug_l2h'} = 0;
+$Texi2HTML::THISDOC{'debug_l2h'} = 1 if ($T2H_DEBUG & $DEBUG_L2H);
+
+
+#+++############################################################################
+# #
+# evaluation of cmd line options
+# #
+#---############################################################################
+
+# Fill in the %style_type hash, a hash associating style @-comand with
+# the type, 'accent', real 'style', simple' style, or 'special'.
+# 'simple_style' styles don't extend accross lines.
+my %style_type = ();
+my @simple_styles = ('ctrl', 'w', 'url','uref','indicateurl','email',
+ 'titlefont');
+foreach my $style (keys(%Texi2HTML::Config::style_map))
+{
+ if (exists $Texi2HTML::Config::command_type{$style})
+ {
+ $style_type{$style} = $Texi2HTML::Config::command_type{$style};
+ next;
+ }
+ if (ref($Texi2HTML::Config::style_map{$style} eq 'HASH'))
+ {
+ $style_type{$style} = $Texi2HTML::Config::style_map{$style}->{'type'}
+ if (exists($Texi2HTML::Config::style_map{$style}->{'type'}));
+ }
+ else
+ {
+ $style_type{$style} = 'simple_style' if (grep {$_ eq $style} @simple_styles);
+ }
+ $style_type{$style} = 'style' unless (defined($style_type{$style}));
+}
+foreach my $accent (keys(%Texi2HTML::Config::unicode_accents), 'tieaccent', 'dotless')
+{
+ if (exists $Texi2HTML::Config::command_type{$accent})
+ {
+ $style_type{$accent} = $Texi2HTML::Config::command_type{$accent};
+ next;
+ }
+ $style_type{$accent} = 'accent';
+}
+#foreach my $simple ('ctrl', 'w', 'url','uref','indicateurl','email')
+#{
+# $style_type{$simple} = 'simple_style';
+#}
+foreach my $special ('footnote', 'ref', 'xref', 'pxref', 'inforef', 'anchor', 'image')
+{
+ if (exists $Texi2HTML::Config::command_type{$special})
+ {
+ $style_type{$special} = $Texi2HTML::Config::command_type{$special};
+ next;
+ }
+ $style_type{$special} = 'special';
+}
+
+# retro compatibility for $Texi2HTML::Config::EXPAND
+push (@Texi2HTML::Config::EXPAND, $Texi2HTML::Config::EXPAND) if ($Texi2HTML::Config::EXPAND);
+
+unshift @texi2html_config_dirs, @Texi2HTML::Config::CONF_DIRS;
+# correct %text_macros based on command line and init
+# variables
+$text_macros{'menu'} = 1 if ($Texi2HTML::Config::SHOW_MENU);
+
+foreach my $expanded (@Texi2HTML::Config::EXPAND)
+{
+ $text_macros{"if$expanded"} = 1 if (exists($text_macros{"if$expanded"}));
+ next unless (exists($text_macros{$expanded}));
+ if (grep {$_ eq $expanded} @raw_regions)
+ {
+ $text_macros{$expanded} = 'raw';
+ }
+ else
+ {
+ $text_macros{$expanded} = 1;
+ }
+}
+
+# handle ifnot regions
+foreach my $region (keys (%text_macros))
+{
+ next if ($region =~ /^ifnot/);
+ if ($text_macros{$region} and $region =~ /^if(\w+)$/)
+ {
+ $text_macros{"ifnot$1"} = 0;
+ }
+}
+
+if ($T2H_VERBOSE)
+{
+ print STDERR "# Expanded: ";
+ foreach my $text_macro (keys(%text_macros))
+ {
+ print STDERR "$text_macro " if ($text_macros{$text_macro});
+ }
+ print STDERR "\n";
+}
+
+# This is kept in that file although it is html formatting as it seems to
+# be rather obsolete
+$Texi2HTML::Config::INVISIBLE_MARK = '<img src="invisible.xbm" alt="">' if $Texi2HTML::Config::INVISIBLE_MARK eq 'xbm';
+
+$T2H_DEBUG |= $DEBUG_TEXI if ($Texi2HTML::Config::DUMP_TEXI);
+
+# no user provided USE_UNICODE, use configure provided
+if (!defined($Texi2HTML::Config::USE_UNICODE))
+{
+ $Texi2HTML::Config::USE_UNICODE = '1';
+}
+
+# no user provided nor configured, run time test
+if ($Texi2HTML::Config::USE_UNICODE eq '@' .'USE_UNICODE@')
+{
+ $Texi2HTML::Config::USE_UNICODE = 1;
+ eval {
+ require Encode;
+ require Unicode::Normalize;
+ Encode->import('encode');
+ };
+ $Texi2HTML::Config::USE_UNICODE = 0 if ($@);
+}
+elsif ($Texi2HTML::Config::USE_UNICODE)
+{# user provided or set by configure
+ require Encode;
+ require Unicode::Normalize;
+ Encode->import('encode');
+}
+
+# no user provided USE_UNIDECODE, use configure provided
+if (!defined($Texi2HTML::Config::USE_UNIDECODE))
+{
+ $Texi2HTML::Config::USE_UNIDECODE = '0';
+}
+
+# no user provided nor configured, run time test
+if ($Texi2HTML::Config::USE_UNIDECODE eq '@' .'USE_UNIDECODE@')
+{
+ $Texi2HTML::Config::USE_UNIDECODE = 1;
+ eval {
+ require Text::Unidecode;
+ Text::Unidecode->import('unidecode');
+ };
+ $Texi2HTML::Config::USE_UNIDECODE = 0 if ($@);
+}
+elsif ($Texi2HTML::Config::USE_UNIDECODE)
+{# user provided or set by configure
+ require Text::Unidecode;
+ Text::Unidecode->import('unidecode');
+}
+
+print STDERR "# USE_UNICODE $Texi2HTML::Config::USE_UNICODE, USE_UNIDECODE $Texi2HTML::Config::USE_UNIDECODE \n"
+ if ($T2H_VERBOSE);
+
+# Construct hashes used for cross references generation
+# Do it now as the user may have changed $USE_UNICODE
+
+foreach my $key (keys(%Texi2HTML::Config::unicode_map))
+{
+ if ($Texi2HTML::Config::unicode_map{$key} ne '')
+ {
+ if ($Texi2HTML::Config::USE_UNICODE)
+ {
+ $cross_ref_texi_map{$key} = chr(hex($Texi2HTML::Config::unicode_map{$key}));
+ if (($Texi2HTML::Config::TRANSLITERATE_NODE and !$Texi2HTML::Config::USE_UNIDECODE)
+ and (exists ($Texi2HTML::Config::transliterate_map{$Texi2HTML::Config::unicode_map{$key}})))
+ {
+ $cross_transliterate_texi_map{$key} = $Texi2HTML::Config::transliterate_map{$Texi2HTML::Config::unicode_map{$key}};
+
+ }
+ }
+ else
+ {
+ $cross_ref_texi_map{$key} = '_' . lc($Texi2HTML::Config::unicode_map{$key});
+ if ($Texi2HTML::Config::TRANSLITERATE_NODE)
+ {
+ if (exists ($Texi2HTML::Config::transliterate_map{$Texi2HTML::Config::unicode_map{$key}}))
+ {
+ $cross_transliterate_texi_map{$key} = $Texi2HTML::Config::transliterate_map{$Texi2HTML::Config::unicode_map{$key}};
+ }
+ else
+ {
+ $cross_transliterate_texi_map{$key} = '_' . lc($Texi2HTML::Config::unicode_map{$key});
+ }
+ }
+ }
+ }
+}
+if ($Texi2HTML::Config::USE_UNICODE and $Texi2HTML::Config::TRANSLITERATE_NODE
+ and ! $Texi2HTML::Config::USE_UNIDECODE)
+{
+ foreach my $key (keys (%Texi2HTML::Config::transliterate_accent_map))
+ {
+ $Texi2HTML::Config::transliterate_map{$key} = $Texi2HTML::Config::transliterate_accent_map{$key};
+ }
+}
+
+foreach my $key (keys(%cross_ref_style_map_texi))
+{
+ if ($style_type{$key} eq 'accent'
+ and (ref($cross_ref_style_map_texi{$key}) eq 'HASH'))
+ {
+ if ($Texi2HTML::Config::USE_UNICODE)
+ {
+ $cross_ref_style_map_texi{$key}->{'function'} = \&Texi2HTML::Config::t2h_utf8_accent;
+ }
+ else
+ {
+ $cross_ref_style_map_texi{$key}->{'function'} = \&Texi2HTML::Config::t2h_nounicode_cross_manual_accent;
+ }
+ if ($Texi2HTML::Config::TRANSLITERATE_NODE and
+ !($Texi2HTML::Config::USE_UNICODE and $Texi2HTML::Config::USE_UNIDECODE))
+ {
+ $cross_transliterate_style_map_texi{$key}->{'function'} = \&Texi2HTML::Config::t2h_transliterate_cross_manual_accent;
+ }
+ }
+}
+
+#
+# file name business
+#
+
+
+my $docu_dir; # directory of the document
+my $docu_name; # basename of the document
+my $docu_rdir; # directory for the output
+my $docu_ext = $Texi2HTML::Config::EXTENSION; # extension
+my $docu_toc; # document's table of contents
+my $docu_stoc; # document's short toc
+my $docu_foot; # document's footnotes
+my $docu_about; # about this document
+my $docu_top; # document top
+my $docu_doc; # document (or document top of split)
+
+die "Need exactly one file to translate\n$T2H_FAILURE_TEXT" unless @ARGV == 1;
+my $docu = shift(@ARGV);
+if ($docu =~ /(.*\/)/)
+{
+ chop($docu_dir = $1);
+ $docu_name = $docu;
+ $docu_name =~ s/.*\///;
+}
+else
+{
+ $docu_dir = '.';
+ $docu_name = $docu;
+}
+unshift(@Texi2HTML::Config::INCLUDE_DIRS, $docu_dir);
+unshift(@Texi2HTML::Config::INCLUDE_DIRS, @Texi2HTML::Config::PREPEND_DIRS);
+$docu_name =~ s/\.te?x(i|info)?$//;
+$docu_name = $Texi2HTML::Config::PREFIX if $Texi2HTML::Config::PREFIX;
+
+# resulting files splitting
+if ($Texi2HTML::Config::SPLIT =~ /section/i)
+{
+ $Texi2HTML::Config::SPLIT = 'section';
+}
+elsif ($Texi2HTML::Config::SPLIT =~ /node/i)
+{
+ $Texi2HTML::Config::SPLIT = 'node';
+}
+elsif ($Texi2HTML::Config::SPLIT =~ /chapter/i)
+{
+ $Texi2HTML::Config::SPLIT = 'chapter';
+}
+else
+{
+ $Texi2HTML::Config::SPLIT = '';
+}
+
+# Something like backward compatibility
+if ($Texi2HTML::Config::SPLIT and $Texi2HTML::Config::SUBDIR)
+{
+ $Texi2HTML::Config::OUT = $Texi2HTML::Config::SUBDIR;
+}
+
+# subdir
+
+die "output to STDOUT and split or frames incompatible\n"
+ if (($Texi2HTML::Config::SPLIT or $Texi2HTML::Config::FRAMES) and ($Texi2HTML::Config::OUT eq '-'));
+
+if ($Texi2HTML::Config::SPLIT and ($Texi2HTML::Config::OUT eq ''))
+{
+ $Texi2HTML::Config::OUT = $docu_name;
+}
+
+if ($Texi2HTML::Config::SPLIT and ($Texi2HTML::Config::OUT eq '.'))
+{# This is to avoid trouble with latex2html
+ $Texi2HTML::Config::OUT = '';
+}
+
+$docu_rdir = '';
+
+if ($Texi2HTML::Config::SPLIT and ($Texi2HTML::Config::OUT ne ''))
+{
+ $Texi2HTML::Config::OUT =~ s|/*$||;
+ $docu_rdir = "$Texi2HTML::Config::OUT/";
+ unless (-d $Texi2HTML::Config::OUT)
+ {
+ if ( mkdir($Texi2HTML::Config::OUT, oct(755)))
+ {
+ print STDERR "# created directory $Texi2HTML::Config::OUT\n" if ($T2H_VERBOSE);
+ }
+ else
+ {
+ die "$ERROR can't create directory $Texi2HTML::Config::OUT\n";
+ }
+ }
+ print STDERR "# putting result files into directory $docu_rdir\n" if ($T2H_VERBOSE);
+}
+elsif (! $Texi2HTML::Config::SPLIT and ($Texi2HTML::Config::OUT ne ''))
+{
+ if ($Texi2HTML::Config::OUT =~ m|(.*)/|)
+ {# there is a leading directories
+ $docu_rdir = "$1/";
+ unless (-d $docu_rdir)
+ {
+ if ( mkdir($docu_rdir, oct(755)))
+ {
+ print STDERR "# created directory $docu_rdir\n" if ($T2H_VERBOSE);
+ }
+ else
+ {
+ die "$ERROR can't create directory $docu_rdir\n";
+ }
+ }
+ print STDERR "# putting result files into directory $docu_rdir\n" if ($T2H_VERBOSE);
+ }
+ else
+ {
+ print STDERR "# putting result files into current directory \n" if ($T2H_VERBOSE);
+ $docu_rdir = '';
+ }
+}
+
+# We don't use "./" as $docu_rdir when $docu_rdir is the current directory
+# because it is problematic for latex2html. To test writability with -w,
+# however we need a real directory.
+my $result_rdir = $docu_rdir;
+$result_rdir = "." if ($docu_rdir eq '');
+unless (-w $result_rdir)
+{
+ $docu_rdir = 'current directory' if ($docu_rdir eq '');
+ die "$ERROR $docu_rdir not writable\n";
+}
+
+# relative path leading to the working directory from the document directory
+my $path_to_working_dir = $docu_rdir;
+if ($docu_rdir ne '')
+{
+ my $cwd = cwd;
+ my $docu_path = $docu_rdir;
+ $docu_path = $cwd . '/' . $docu_path unless ($docu_path =~ /^\//);
+ my @result = ();
+ foreach my $element (split /\//, File::Spec->canonpath($docu_path))
+ {
+ if ($element eq '')
+ {
+ push @result, '';
+ }
+ elsif ($element eq '..')
+ {
+ if (@result and ($result[-1] eq ''))
+ {
+ print STDERR "Too much .. in absolute file name\n";
+ }
+ elsif (@result and ($result[-1] ne '..'))
+ {
+ pop @result;
+ }
+ else
+ {
+ push @result, $element;
+ }
+ }
+ else
+ {
+ push @result, $element;
+ }
+ }
+ $path_to_working_dir = File::Spec->abs2rel($cwd, join ('/', @result));
+ $path_to_working_dir =~ s|.*/||;
+ $path_to_working_dir .= '/' unless($path_to_working_dir eq '');
+}
+
+# extension
+if ($Texi2HTML::Config::SHORTEXTN)
+{
+ $docu_ext = "htm";
+}
+
+$docu_doc = $docu_name . ($docu_ext ? ".$docu_ext" : ""); # document's contents
+if ($Texi2HTML::Config::SPLIT)
+{
+ $docu_top = $Texi2HTML::Config::TOP_FILE || $docu_doc;
+
+ if (defined $Texi2HTML::Config::element_file_name)
+ {
+ $docu_toc = &$Texi2HTML::Config::element_file_name
+ (undef, "toc", $docu_name);
+ $docu_stoc = &$Texi2HTML::Config::element_file_name
+ (undef, "stoc", $docu_name);
+ $docu_foot = &$Texi2HTML::Config::element_file_name
+ (undef, "foot", $docu_name);
+ $docu_about = &$Texi2HTML::Config::element_file_name
+ (undef, "about", $docu_name);
+ # $docu_top may be overwritten later.
+ }
+ if (!defined($docu_toc))
+ {
+ my $default_toc = "${docu_name}_toc";
+ $default_toc .= ".$docu_ext" if (defined($docu_ext));
+ $docu_toc = $Texi2HTML::Config::TOC_FILE || $default_toc;
+ }
+ if (!defined($docu_stoc))
+ {
+ $docu_stoc = "${docu_name}_ovr";
+ $docu_stoc .= ".$docu_ext" if (defined($docu_ext));
+ }
+ if (!defined($docu_foot))
+ {
+ $docu_foot = "${docu_name}_fot";
+ $docu_foot .= ".$docu_ext" if (defined($docu_ext));
+ }
+ if (!defined($docu_about))
+ {
+ $docu_about = "${docu_name}_abt";
+ $docu_about .= ".$docu_ext" if (defined($docu_ext));
+ }
+}
+else
+{
+ if ($Texi2HTML::Config::OUT)
+ {
+ $docu_doc = $Texi2HTML::Config::OUT;
+ $docu_doc =~ s|.*/||;
+ }
+ if (defined $Texi2HTML::Config::element_file_name)
+ {
+ my $docu_name = &$Texi2HTML::Config::element_file_name
+ (undef, "doc", $docu_name);
+ $docu_top = $docu_name if (defined($docu_name));
+ }
+ $docu_toc = $docu_foot = $docu_stoc = $docu_about = $docu_top = $docu_doc;
+}
+
+# Note that file extension has already been added here.
+
+# For use in init files
+$Texi2HTML::THISDOC{'filename'}->{'top'} = $docu_top;
+$Texi2HTML::THISDOC{'filename'}->{'foot'} = $docu_foot;
+$Texi2HTML::THISDOC{'filename'}->{'stoc'} = $docu_stoc;
+$Texi2HTML::THISDOC{'filename'}->{'about'} = $docu_about;
+$Texi2HTML::THISDOC{'filename'}->{'toc'} = $docu_toc;
+$Texi2HTML::THISDOC{'extension'} = $docu_ext;
+# FIXME document that
+$Texi2HTML::THISDOC{'out_dir'} = $docu_rdir;
+$Texi2HTML::THISDOC{'file_base_name'} = $docu_name;
+
+
+my $docu_doc_file = "$docu_rdir$docu_doc";
+my $docu_toc_file = "$docu_rdir$docu_toc";
+my $docu_stoc_file = "$docu_rdir$docu_stoc";
+my $docu_foot_file = "$docu_rdir$docu_foot";
+my $docu_about_file = "$docu_rdir$docu_about";
+my $docu_top_file = "$docu_rdir$docu_top";
+
+my $docu_frame_file = "$docu_rdir${docu_name}_frame";
+$docu_frame_file .= ".$docu_ext" if $docu_ext;
+my $docu_toc_frame_file = "$docu_rdir${docu_name}_toc_frame";
+$docu_toc_frame_file .= ".$docu_ext" if $docu_ext;
+
+#
+# _foo: internal variables to track @foo
+#
+foreach my $key ('_author', '_title', '_subtitle', '_shorttitlepage',
+ '_settitle', '_setfilename', '_shorttitle', '_titlefont')
+{
+ $value{$key} = ''; # prevent -w warnings
+}
+my $index; # ref on a hash for the index entries
+my %indices = (); # hash of indices names containing
+ #[ $pages, $entries ] (page indices and
+ # raw index entries)
+my @index_labels = (); # array corresponding with @?index commands
+ # constructed during pass_texi, used to
+ # put labels in pass_text
+#
+# initial counters
+#
+my $foot_num = 0;
+my $relative_foot_num = 0;
+my $idx_num = 0;
+my $sec_num = 0;
+my $anchor_num = 0;
+
+#
+# can I use ISO8859 characters? (HTML+)
+#
+if ($Texi2HTML::Config::USE_ISO)
+{
+ foreach my $thing (keys(%Texi2HTML::Config::iso_symbols))
+ {
+ next unless exists ($::things_map_ref->{$thing});
+ $::things_map_ref->{$thing} = $Texi2HTML::Config::iso_symbols{$thing};
+ $::pre_map_ref->{$thing} = $Texi2HTML::Config::iso_symbols{$thing};
+ $Texi2HTML::Config::simple_format_texi_map{$thing} = $Texi2HTML::Config::iso_symbols{$thing};
+ }
+ # we don't override the user defined quote, but beware that this works
+ # only if the hardcoded defaults, '`' and "'" match with the defaults
+ # in the default init file
+ $Texi2HTML::Config::OPEN_QUOTE_SYMBOL = $Texi2HTML::Config::iso_symbols{'`'}
+ if (exists($Texi2HTML::Config::iso_symbols{'`'}) and ($Texi2HTML::Config::OPEN_QUOTE_SYMBOL eq '`'));
+ $Texi2HTML::Config::CLOSE_QUOTE_SYMBOL = $Texi2HTML::Config::iso_symbols{"'"}
+ if (exists($Texi2HTML::Config::iso_symbols{"'"}) and ($Texi2HTML::Config::CLOSE_QUOTE_SYMBOL eq "'"));
+}
+
+
+
+# process a css file
+sub process_css_file ($$)
+{
+ my $fh =shift;
+ my $file = shift;
+ my $in_rules = 0;
+ my $in_comment = 0;
+ my $in_import = 0;
+ my $in_string = 0;
+ my $rules = [];
+ my $imports = [];
+ while (<$fh>)
+ {
+ #print STDERR "Line: $_";
+ if ($in_rules)
+ {
+ push @$rules, $_;
+ next;
+ }
+ my $text = '';
+ while (1)
+ {
+ #sleep 1;
+ #print STDERR "${text}!in_comment $in_comment in_rules $in_rules in_import $in_import in_string $in_string: $_";
+ if ($in_comment)
+ {
+ if (s/^(.*?\*\/)//)
+ {
+ $text .= $1;
+ $in_comment = 0;
+ }
+ else
+ {
+ push @$imports, $text . $_;
+ last;
+ }
+ }
+ elsif (!$in_string and s/^\///)
+ { # what do '\' do here ?
+ if (s/^\*//)
+ {
+ $text .= '/*';
+ $in_comment = 1;
+ }
+ else
+ {
+ push (@$imports, $text. "\n") if ($text ne '');
+ push (@$rules, '/' . $_);
+ $in_rules = 1;
+ last;
+ }
+ }
+ elsif (!$in_string and $in_import and s/^([\"\'])//)
+ { # strings outside of import start rules
+ $text .= "$1";
+ $in_string = quotemeta("$1");
+ }
+ elsif ($in_string and s/^(\\$in_string)//)
+ {
+ $text .= $1;
+ }
+ elsif ($in_string and s/^($in_string)//)
+ {
+ $text .= $1;
+ $in_string = 0;
+ }
+ elsif ((! $in_string and !$in_import) and (s/^([\\]?\@import)$// or s/^([\\]?\@import\s+)//))
+ {
+ $text .= $1;
+ $in_import = 1;
+ }
+ elsif (!$in_string and $in_import and s/^\;//)
+ {
+ $text .= ';';
+ $in_import = 0;
+ }
+ elsif (($in_import or $in_string) and s/^(.)//)
+ {
+ $text .= $1;
+ }
+ elsif (!$in_import and s/^([^\s])//)
+ {
+ push (@$imports, $text. "\n") if ($text ne '');
+ push (@$rules, $1 . $_);
+ $in_rules = 1;
+ last;
+ }
+ elsif (s/^(\s)//)
+ {
+ $text .= $1;
+ }
+ elsif ($_ eq '')
+ {
+ push (@$imports, $text);
+ last;
+ }
+ }
+ }
+ warn "$WARN string not closed in css file $file\n" if ($in_string);
+ warn "$WARN comment not closed in css file $file\n" if ($in_comment);
+ warn "$WARN \@import not finished in css file $file\n" if ($in_import and !$in_comment and !$in_string);
+ return ($imports, $rules);
+}
+
+
+
+# parse texinfo cnf file for external manual specifications. This was
+# discussed on texinfo list but not in makeinfo for now.
+my @texinfo_htmlxref_files = locate_init_file ($texinfo_htmlxref, 1, \@texinfo_config_dirs);
+foreach my $file (@texinfo_htmlxref_files)
+{
+ print STDERR "html refs config file: $file\n" if ($T2H_DEBUG);
+ unless (open (HTMLXREF, $file))
+ {
+ warn "Cannot open html refs config file ${file}: $!";
+ next;
+ }
+ while (<HTMLXREF>)
+ {
+ my $line = $_;
+ s/[#]\s.*//;
+ s/^\s*//;
+ next if /^\s*$/;
+ my @htmlxref = split /\s+/;
+ my $manual = shift @htmlxref;
+ my $split_or_mono = shift @htmlxref;
+ if (!defined($split_or_mono) or ($split_or_mono ne 'split' and $split_or_mono ne 'mono'))
+ {
+ echo_warn("Bad line in $file: $line");
+ next;
+ }
+ my $href = shift @htmlxref;
+ next if (exists($Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{$split_or_mono}) and exists($Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{$split_or_mono}->{'href'}));
+
+ if (defined($href))
+ {
+ $href =~ s/\/*$// if ($split_or_mono eq 'split');
+ $Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{$split_or_mono}->{'href'} = $href;
+ }
+ else
+ {
+ $Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{$split_or_mono} = {};
+ }
+ }
+ close (HTMLXREF);
+}
+
+if ($T2H_DEBUG)
+{
+ foreach my $manual (keys(%{$Texi2HTML::THISDOC{'htmlxref'}}))
+ {
+ foreach my $split ('split', 'mono')
+ {
+ my $href = 'NO';
+ next unless (exists($Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{$split}));
+ $href = $Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{$split}->{'href'} if
+ exists($Texi2HTML::THISDOC{'htmlxref'}->{$manual}->{$split}->{'href'});
+ print STDERR "$manual: $split, href: $href\n";
+ }
+ }
+}
+
+print STDERR "# reading from $docu\n" if $T2H_VERBOSE;
+
+#+++###########################################################################
+# #
+# Pass texi: read source, handle variable, ignored text, #
+# #
+#---###########################################################################
+
+my @fhs = (); # hold the file handles to read
+my $input_spool; # spooled lines to read
+my @lines = (); # whole document
+my @lines_numbers = (); # line number, originating file associated with
+ # whole document
+my $macros; # macros. reference on a hash
+my %info_enclose; # macros defined with definfoenclose
+my $texi_line_number = { 'file_name' => '', 'line_nr' => 0, 'macro' => '' };
+my @floats = (); # floats list
+my %floats = (); # floats by style
+
+sub initialise_state_texi($)
+{
+ my $state = shift;
+ $state->{'texi'} = 1; # for substitute_text and close_stack:
+ # 1 if pass_texi/scan_texi is to be used
+ $state->{'macro_inside'} = 0 unless(defined($state->{'macro_inside'}));
+ $state->{'ifvalue_inside'} = 0 unless(defined($state->{'ifvalue_inside'}));
+ $state->{'arg_expansion'} = 0 unless(defined($state->{'arg_expansion'}));
+}
+
+my @first_lines = ();
+
+sub pass_texi()
+{
+ my $first_lines = 1; # is it the first lines
+ my $state = {};
+ # holds the informations about the context
+ # to pass it down to the functions
+ initialise_state_texi($state);
+ my @stack;
+ my $text;
+ INPUT_LINE: while (defined($_ = next_line($texi_line_number)))
+ {
+ #
+ # remove the lines preceding \input or an @-command
+ #
+ if ($first_lines)
+ {
+ if (/^\\input/)
+ {
+ push @first_lines, $_;
+ $first_lines = 0;
+ next;
+ }
+ if (/^\s*\@/)
+ {
+ $first_lines = 0;
+ }
+ else
+ {
+ push @first_lines, $_;
+ next;
+ }
+ }
+ #print STDERR "PASS_TEXI($texi_line_number->{'line_nr'})$_";
+ my $chomped_line = $_;
+ if (scan_texi ($_, \$text, \@stack, $state, $texi_line_number) and chomp($chomped_line))
+ {
+ #print STDERR "==> new page (line_nr $texi_line_number->{'line_nr'},$texi_line_number->{'file_name'},$texi_line_number->{'macro'})\n";
+ push (@lines_numbers, { 'file_name' => $texi_line_number->{'file_name'},
+ 'line_nr' => $texi_line_number->{'line_nr'},
+ 'macro' => $texi_line_number->{'macro'} });
+ }
+ #dump_stack (\$text, \@stack, $state);
+ if ($state->{'bye'})
+ {
+ #dump_stack(\$text, \@stack, $state);
+ # close stack after bye
+ #print STDERR "close stack after bye\n";
+ close_stack_texi_structure(\$text, \@stack, $state, $texi_line_number);
+ #dump_stack(\$text, \@stack, $state);
+ }
+ next if (@stack);
+ $_ = $text;
+ $text = '';
+ if (!defined($_))
+ {# FIXME: remove the error message if it is reported too often
+ print STDERR "# \$_ undefined after scan_texi. This may be a bug, or not.\n";
+ print STDERR "# Report (with texinfo file) if you want, otherwise ignore that message.\n";
+ next unless ($state->{'bye'});
+ }
+ push @lines, split_lines($_);
+ last if ($state->{'bye'});
+ }
+ # close stack at the end of pass texi
+ #print STDERR "close stack at the end of pass texi\n";
+ close_stack_texi_structure(\$text, \@stack, $state, $texi_line_number);
+ push @lines, split_lines($text);
+ print STDERR "# end of pass texi\n" if $T2H_VERBOSE;
+}
+
+# return the line after preserving things according to misc_command map.
+sub preserve_command($$)
+{
+ my $line = shift;
+ my $macro = shift;
+ my $text = '';
+ my $args = '';
+ my $skip_spec = '';
+ my $arg_spec = '';
+
+ $skip_spec = $Texi2HTML::Config::misc_command{$macro}->{'skip'}
+ if (defined($Texi2HTML::Config::misc_command{$macro}->{'skip'}));
+ $arg_spec = $Texi2HTML::Config::misc_command{$macro}->{'arg'}
+ if (defined($Texi2HTML::Config::misc_command{$macro}->{'arg'}));
+
+ if ($arg_spec eq 'line')
+ {
+ $text .= $line;
+ $args .= $line;
+ $line = '';
+ }
+ elsif ($arg_spec)
+ {
+ my $arg_nr = $Texi2HTML::Config::misc_command{$macro}->{'arg'};
+ while ($arg_nr)
+ {
+ $line =~ s/(\s+\S*)//o;
+ $text .= $1 if defined($1);
+ $args .= $1 if defined($1);
+ $arg_nr--;
+ }
+ }
+
+ if ($macro eq 'bye')
+ {
+ $line = '';
+ $text = "\n";
+ }
+ elsif ($skip_spec eq 'linespace')
+ {
+ if ($line =~ /^\s*$/o)
+ {
+ $line =~ s/([ \t]*)//o;
+ $text .= $1;
+ }
+ }
+ elsif ($skip_spec eq 'linewhitespace')
+ {
+ if ($line =~ /^\s*$/o)
+ {
+ $text .= $line;
+ $line = '';
+ }
+ }
+ elsif ($skip_spec eq 'line')
+ {
+ $text .= $line;
+ $line = '';
+ }
+ elsif ($skip_spec eq 'whitespace')
+ {
+ $line =~ s/(\s*)//o;
+ $text .= $1;
+ }
+ elsif ($skip_spec eq 'space')
+ {
+ $line =~ s/([ \t]*)//o;
+ $text .= $1;
+ }
+ $line = '' if (!defined($line));
+ return ($line, $text, $args);
+}
+
+#+++###########################################################################
+# #
+# Pass structure: parse document structure #
+# #
+#---###########################################################################
+
+# This is a virtual element for things appearing before @node and
+# sectionning commands
+my $element_before_anything =
+{
+ 'before_anything' => 1,
+ 'place' => [],
+ 'texi' => 'VIRTUAL ELEMENT BEFORE ANYTHING',
+};
+
+# This is a place for index entries, anchors and so on appearing in
+# copying or documentdescription
+my $region_place = [];
+
+sub initialise_state_structure($)
+{
+ my $state = shift;
+ $state->{'structure'} = 1; # for substitute_text and close_stack:
+ # 1 if pass_structure/scan_structure is
+ # to be used
+ $state->{'menu'} = 0; # number of opened menus
+ $state->{'detailmenu'} = 0; # number of opened detailed menus
+ $state->{'sectionning_base'} = 0; # current base sectionning level
+ $state->{'table_stack'} = [ "no table" ]; # a stack of opened tables/lists
+ if (exists($state->{'region_lines'}) and !defined($state->{'region_lines'}))
+ {
+ delete ($state->{'region_lines'});
+ print STDERR "Bug: state->{'region_lines'} exists but undef.\n";
+ }
+}
+
+my @doc_lines = (); # whole document
+my @doc_numbers = (); # whole document line numbers and file names
+my @nodes_list = (); # nodes in document reading order
+ # each member is a reference on a hash
+my @sections_list = (); # sections in reading order
+ # each member is a reference on a hash
+my @all_elements = (); # sectionning elements (nodes and sections)
+ # in reading order. Each member is a reference
+ # on a hash which also appears in %nodes,
+ # @sections_list @nodes_list, @elements_list
+my @elements_list; # all the resulting elements in document order
+my %sections = (); # sections hash. The key is the section number
+ # headings are there, although they are not elements
+my $section_top; # @top section
+my $element_top; # Top element
+my $node_top; # Top node
+my $node_first; # First node
+my $element_index; # element with first index
+my $element_chapter_index; # chapter with first index
+my $element_first; # first element
+my $element_last; # last element
+my %special_commands; # hash for the commands specially handled
+ # by the user
+
+# This is a virtual element used to have the right hrefs for index entries
+# and anchors in footnotes
+my $footnote_element =
+{
+ 'id' => 'SEC_Foot',
+ 'file' => $docu_foot,
+ 'footnote' => 1,
+ 'element' => 1,
+ 'place' => [],
+};
+
+my %content_element =
+(
+ 'contents' => { 'id' => 'SEC_Contents', 'contents' => 1, 'texi' => '_contents' },
+ 'shortcontents' => { 'id' => 'SEC_Overview', 'shortcontents' => 1, 'texi' => '_shortcontents' },
+);
+
+#my $do_contents; # do table of contents if true
+#my $do_scontents; # do short table of contents if true
+my $novalidate = $Texi2HTML::Config::NOVALIDATE; # @novalidate appeared
+
+sub pass_structure()
+{
+ my $state = {};
+ # holds the informations about the context
+ # to pass it down to the functions
+ initialise_state_structure($state);
+ $state->{'element'} = $element_before_anything;
+ $state->{'place'} = $element_before_anything->{'place'};
+ my @stack;
+ my $text;
+ my $line_nr;
+
+ while (@lines)
+ {
+ $_ = shift @lines;
+ my $chomped_line = $_;
+ if (!chomp($chomped_line) and @lines)
+ {
+ $lines[0] = $_ . $lines[0];
+ next;
+ }
+ $line_nr = shift (@lines_numbers);
+ #print STDERR "PASS_STRUCTURE: $_";
+ if (!$state->{'raw'} and !$state->{'verb'})
+ {
+ my $tag = '';
+ if (/^\s*\@(\w+)\b/)
+ {
+ $tag = $1;
+ }
+
+ #
+ # analyze the tag
+ #
+ if ($tag and $tag eq 'node' or defined($sec2level{$tag}) or $tag eq 'printindex')
+ {
+ $_ = substitute_texi_line($_);
+ if ($tag eq 'node' or defined($sec2level{$tag}))
+ {# in pass structure node shouldn't appear in formats
+ close_stack_texi_structure(\$text, \@stack, $state, $line_nr);
+ if (exists($state->{'region_lines'}))
+ {
+ push @{$region_lines{$state->{'region_lines'}->{'format'}}}, split_lines($text);
+ close_region($state);
+ }
+ else
+ {
+ push @doc_lines, split_lines($text);
+ }
+ $text = '';
+ }
+ if ($tag eq 'node')
+ {
+ my $node_ref;
+ my $auto_directions;
+ $auto_directions = 1 unless (/,/o);
+ my ($node, $node_next, $node_prev, $node_up) = split(/,/, $_);
+ $node =~ s/^\@node\s+// if ($node);
+ if ($node)
+ {
+ $node = normalise_space($node);
+ if (exists($nodes{$node}) and defined($nodes{$node})
+ and $nodes{$node}->{'seen'})
+ {
+ echo_error ("Duplicate node found: $node", $line_nr);
+ next;
+ }
+ else
+ {
+ if (exists($nodes{$node}) and defined($nodes{$node}))
+ { # node appeared in a menu
+ $node_ref = $nodes{$node};
+ }
+ else
+ {
+ my $first;
+ $first = 1 if (!defined($node_ref));
+ $node_ref = {};
+ $node_first = $node_ref if ($first);
+ $nodes{$node} = $node_ref;
+ }
+ $node_ref->{'node'} = 1;
+ $node_ref->{'tag'} = 'node';
+ $node_ref->{'tag_level'} = 'node';
+ $node_ref->{'texi'} = $node;
+ $node_ref->{'seen'} = 1;
+ $node_ref->{'automatic_directions'} = $auto_directions;
+ $node_ref->{'place'} = [];
+ $node_ref->{'current_place'} = [];
+ merge_element_before_anything($node_ref);
+ $node_ref->{'index_names'} = [];
+ $state->{'place'} = $node_ref->{'current_place'};
+ $state->{'element'} = $node_ref;
+ $state->{'after_element'} = 1;
+ $state->{'node_ref'} = $node_ref;
+ # makeinfo treats differently case variants of
+ # top in nodes and anchors and in refs commands and
+ # refs from nodes.
+ if ($node =~ /^top$/i)
+ {
+ if (!defined($node_top))
+ {
+ $node_top = $node_ref;
+ $node_top->{'texi'} = 'Top';
+ delete $nodes{$node};
+ $nodes{$node_top->{'texi'}} = $node_ref;
+ }
+ else
+ { # All the refs are going to point to the first Top
+ echo_warn ("Top node allready exists", $line_nr);
+ #warn "$WARN Top node allready exists\n";
+ }
+ }
+ unless (@nodes_list)
+ {
+ $node_ref->{'first'} = 1;
+ }
+ push (@nodes_list, $node_ref);
+ push @all_elements, $node_ref;
+ }
+ }
+ else
+ {
+ echo_error ("Node is undefined: $_ (eg. \@node NODE-NAME, NEXT, PREVIOUS, UP)", $line_nr);
+ next;
+ }
+
+ if ($node_next)
+ {
+ $node_ref->{'node_next'} = normalise_node($node_next);
+ }
+ if ($node_prev)
+ {
+ $node_ref->{'node_prev'} = normalise_node($node_prev);
+ }
+ if ($node_up)
+ {
+ $node_ref->{'node_up'} = normalise_node($node_up);
+ }
+ }
+ elsif (defined($sec2level{$tag}))
+ { # section or heading
+ if (/^\@$tag\s*(.*)$/)
+ {
+ my $name = normalise_space($1);
+ $name = '' if (!defined($name));
+ my $level = $sec2level{$tag};
+ $state->{'after_element'} = 1;
+ my ($docid, $num);
+ if($tag ne 'top')
+ {
+ $sec_num++;
+ $num = $sec_num;
+ $docid = "SEC$sec_num";
+ }
+ else
+ {
+ $num = 0;
+ $docid = "SEC_Top";
+ }
+ if ($tag !~ /heading/)
+ {
+ my $section_ref = { 'texi' => $name,
+ 'level' => $level,
+ 'tag' => $tag,
+ 'sec_num' => $num,
+ 'section' => 1,
+ 'id' => $docid,
+ 'seen' => 1,
+ 'index_names' => [],
+ 'current_place' => [],
+ 'place' => []
+ };
+
+ if ($tag eq 'top')
+ {
+ $section_ref->{'top'} = 1;
+ $section_ref->{'number'} = '';
+ $sections{0} = $section_ref;
+ $section_top = $section_ref;
+ }
+ $sections{$num} = $section_ref;
+ merge_element_before_anything($section_ref);
+ if ($state->{'node_ref'} and !exists($state->{'node_ref'}->{'with_section'}))
+ {
+ my $node_ref = $state->{'node_ref'};
+ $section_ref->{'node_ref'} = $node_ref;
+ $section_ref->{'titlefont'} = $node_ref->{'titlefont'};
+ $node_ref->{'with_section'} = $section_ref;
+ $node_ref->{'top'} = 1 if ($tag eq 'top');
+ }
+ if (! $name and $level)
+ {
+ echo_warn ("$tag without name", $line_nr);
+ }
+ push @sections_list, $section_ref;
+ push @all_elements, $section_ref;
+ $state->{'element'} = $section_ref;
+ $state->{'place'} = $section_ref->{'current_place'};
+ my $node_ref = "NO NODE";
+ my $node_texi ='';
+ if ($state->{'node_ref'})
+ {
+ $node_ref = $state->{'node_ref'};
+ $node_texi = $state->{'node_ref'}->{'texi'};
+ }
+ print STDERR "# pass_structure node($node_ref)$node_texi, tag \@$tag($level) ref $section_ref, num,id $num,$docid\n $name\n"
+ if $T2H_DEBUG & $DEBUG_ELEMENTS;
+ }
+ else
+ {
+ my $section_ref = { 'texi' => $name,
+ 'level' => $level,
+ 'heading' => 1,
+ 'tag' => $tag,
+ 'tag_level' => $tag,
+ 'sec_num' => $sec_num,
+ 'id' => $docid,
+ 'number' => '' };
+ $state->{'element'} = $section_ref;
+ push @{$state->{'place'}}, $section_ref;
+ $sections{$sec_num} = $section_ref;
+ }
+ }
+ }
+ elsif (/^\@printindex\s+(\w+)/)
+ {
+ unless (@all_elements)
+ {
+ echo_warn ("Printindex before document beginning: \@printindex $1", $line_nr);
+ next;
+ }
+ delete $state->{'after_element'};
+ # $element_index is the first element with index
+ $element_index = $all_elements[-1] unless (defined($element_index));
+ # associate the index to the element such that the page
+ # number is right
+ my $placed_elements = [];
+ push @{$all_elements[-1]->{'index_names'}}, { 'name' => $1, 'place' => $placed_elements };
+ $state->{'place'} = $placed_elements;
+ }
+ if (exists($state->{'region_lines'}))
+ {
+ push @{$region_lines{$state->{'region_lines'}->{'format'}}}, $_;
+ }
+ else
+ {
+ push @doc_lines, $_;
+ push @doc_numbers, $line_nr;
+ }
+ next;
+ }
+ }
+ if (scan_structure ($_, \$text, \@stack, $state, $line_nr) and !(exists($state->{'region_lines'})))
+ {
+ push (@doc_numbers, $line_nr);
+ }
+ next if (@stack);
+ $_ = $text;
+ $text = '';
+ next if (!defined($_));
+ if ($state->{'region_lines'})
+ {
+ push @{$region_lines{$state->{'region_lines'}->{'format'}}}, split_lines($_);
+ }
+ else
+ {
+ push @doc_lines, split_lines($_);
+ }
+ }
+ if (@stack)
+ {# close stack at the end of pass structure
+ close_stack_texi_structure(\$text, \@stack, $state, $line_nr);
+ if ($text)
+ {
+ if (exists($state->{'region_lines'}))
+ {
+ push @{$region_lines{$state->{'region_lines'}->{'format'}}},
+ split_lines($text);
+ }
+ else
+ {
+ push @doc_lines, split_lines($text);
+ }
+ }
+ }
+ echo_warn ("At end of document, $state->{'region_lines'}->{'number'} $state->{'region_lines'}->{'format'} not closed") if (exists($state->{'region_lines'}));
+ print STDERR "# end of pass structure\n" if $T2H_VERBOSE;
+}
+
+# split line at end of line and put each resulting line in an array
+# FIXME there must be a more perlish way to do it... Not a big deal
+# as long as it work
+sub split_lines($)
+{
+ my $line = shift;
+ my @result = ();
+ my $i = 0;
+ while ($line)
+ {
+ $result[$i] = '';
+ $line =~ s/^(.*)//;
+ $result[$i] .= $1;
+ $result[$i] .= "\n" if ($line =~ s/^\n//);
+ #print STDERR "$i: $result[$i]";
+ $i++;
+ }
+ return @result;
+}
+
+# handle misc commands and misc command args
+sub misc_command_structure($$$$)
+{
+ my $line = shift;
+ my $macro = shift;
+ my $state = shift;
+ my $line_nr = shift;
+ my $text;
+ my $args;
+
+ if ($macro eq 'lowersections')
+ {
+ my ($sec, $level);
+ while (($sec, $level) = each %sec2level)
+ {
+ $sec2level{$sec} = $level + 1;
+ }
+ $state->{'sectionning_base'}--;
+ }
+ elsif ($macro eq 'raisesections')
+ {
+ my ($sec, $level);
+ while (($sec, $level) = each %sec2level)
+ {
+ $sec2level{$sec} = $level - 1;
+ }
+ $state->{'sectionning_base'}++;
+ }
+ elsif (($macro eq 'contents') or ($macro eq 'summarycontents') or ($macro eq 'shortcontents'))
+ {
+ if ($macro eq 'contents')
+ {
+ $Texi2HTML::Config::DO_CONTENTS = 1;
+ }
+ else
+ {
+ $macro = 'shortcontents';
+ $Texi2HTML::Config::DO_SCONTENTS = 1;
+ }
+ push @{$state->{'place'}}, $content_element{$macro};
+ }
+ elsif ($macro eq 'detailmenu')
+ {
+ $state->{'detailmenu'}++;
+ }
+ elsif ($macro eq 'novalidate')
+ {
+ $novalidate = 1;
+ $Texi2HTML::THISDOC{$macro} = 1;
+ }
+ elsif (grep {$_ eq $macro} ('settitle','setfilename','shortitle','shorttitlepage')
+ and ($line =~ /^\s+(.*)$/))
+ {
+ $value{"_$macro"} = substitute_texi_line($1);
+ }
+ elsif (grep {$_ eq $macro} ('author','subtitle','title')
+ and ($line =~ /^\s+(.*)$/))
+ {
+ $value{"_$macro"} .= substitute_texi_line($1)."\n";
+ push @{$Texi2HTML::THISDOC{"${macro}s"}}, substitute_texi_line($1);
+ }
+ elsif ($macro eq 'synindex' || $macro eq 'syncodeindex')
+ {
+ if ($line =~ /^\s+(\w+)\s+(\w+)/)
+ {
+ my $index_from = $1;
+ my $index_to = $2;
+ echo_error ("unknown from index name $index_from in \@$macro", $line_nr)
+ unless $index_names{$index_from};
+ echo_error ("unknown to index name $index_to in \@$macro", $line_nr)
+ unless $index_names{$index_to};
+ if ($index_names{$index_from} and $index_names{$index_to})
+ {
+ if ($macro eq 'syncodeindex')
+ {
+ $index_names{$index_to}->{'associated_indices_code'}->{$index_from} = 1;
+ }
+ else
+ {
+ $index_names{$index_to}->{'associated_indices'}->{$index_from} = 1;
+ }
+ push @{$Texi2HTML::THISDOC{$macro}}, [$index_from,$index_to];
+ }
+ }
+ else
+ {
+ echo_error ("Bad $macro line: $line", $line_nr);
+ }
+ }
+ elsif ($macro eq 'defindex' || $macro eq 'defcodeindex')
+ {
+ if ($line =~ /^\s+(\w+)\s*$/)
+ {
+ my $name = $1;
+ if ($forbidden_index_name{$name})
+ {
+ echo_error("Reserved index name $name", $line_nr);
+ }
+ else
+ {
+ @{$index_names{$name}->{'prefix'}} = ($name);
+ $index_names{$name}->{'code'} = 1 if $macro eq 'defcodeindex';
+ $index_prefix_to_name{$name} = $name;
+ push @{$Texi2HTML::THISDOC{$macro}}, $name;
+ }
+ }
+ else
+ {# makeinfo don't warn and even accepts index with empty name
+ # and index with numbers only. I reported it on the mailing list
+ # this should be fixed in future makeinfo versions.
+ echo_error ("Bad $macro line: $line", $line_nr);
+ }
+ }
+ elsif ($macro eq 'documentlanguage')
+ {
+ if ($line =~ /\s+(\w+)/)
+ {
+ my $lang = $1;
+ set_document_language($lang, 0, $line_nr) if (!$cmd_line_lang && $lang);
+ # warning, this is not the language of the document but the one that
+ # appear in the texinfo...
+ $Texi2HTML::THISDOC{$macro} = $lang;
+ }
+ }
+ elsif ($macro eq 'kbdinputstyle')
+ {# makeinfo ignores that with --html. I reported it and it should be
+ # fixed in future makeinfo releases
+ if ($line =~ /\s+([a-z]+)/)
+ {
+ if ($1 eq 'code')
+ {
+ $::style_map_ref->{'kbd'} = $::style_map_ref->{'code'};
+ $::style_map_pre_ref->{'kbd'} = $::style_map_pre_ref->{'code'};
+ $Texi2HTML::THISDOC{$macro} = $1;
+ }
+ elsif ($1 eq 'example')
+ {
+ $::style_map_pre_ref->{'kbd'} = $::style_map_pre_ref->{'code'};
+ $Texi2HTML::THISDOC{$macro} = $1;
+ }
+ elsif ($1 ne 'distinct')
+ {
+ echo_error ("Unknown argument for \@$macro: $1", $line_nr);
+ }
+ }
+ else
+ {
+ echo_error ("Bad \@$macro", $line_nr);
+ }
+ }
+ elsif ($macro eq 'paragraphindent')
+ {
+ if ($line =~ /\s+([0-9]+)/)
+ {
+ $Texi2HTML::THISDOC{$macro} = $1;
+ }
+ elsif (($line =~ /\s+(none)[^\w\-]/) or ($line =~ /\s+(asis)[^\w\-]/))
+ {
+ $Texi2HTML::THISDOC{$macro} = $1;
+ }
+ else
+ {
+ echo_error ("Bad \@$macro", $line_nr);
+ }
+ }
+ elsif ($macro eq 'firstparagraphindent')
+ {
+ if (($line =~ /\s+(none)[^\w\-]/) or ($line =~ /\s+(insert)[^\w\-]/))
+ {
+ $Texi2HTML::THISDOC{$macro} = $1;
+ }
+ else
+ {
+ echo_error ("Bad \@$macro", $line_nr);
+ }
+ }
+ elsif ($macro eq 'exampleindent')
+ {
+ if ($line =~ /^\s+([0-9]+)/)
+ {
+ $Texi2HTML::THISDOC{$macro} = $1;
+ }
+ elsif ($line =~ /^\s+(asis)[^\w\-]/)
+ {
+ $Texi2HTML::THISDOC{$macro} = $1;
+ }
+ else
+ {
+ echo_error ("Bad \@$macro", $line_nr);
+ }
+ }
+ elsif ($macro eq 'frenchspacing')
+ {
+ if (($line =~ /^\s+(on)[^\w\-]/) or ($line =~ /^\s+(off)[^\w\-]/))
+ {
+ $Texi2HTML::THISDOC{$macro} = $1;
+ }
+ else
+ {
+ echo_error ("Bad \@$macro", $line_nr);
+ }
+ }
+ elsif ($macro eq 'footnotestyle')
+ {
+ if (($line =~ /^\s+(end)[^\w\-]/) or ($line =~ /^\s+(separate)[^\w\-]/))
+ {
+ $Texi2HTML::THISDOC{$macro} = $1;
+ }
+ else
+ {
+ echo_error ("Bad \@$macro", $line_nr);
+ }
+ }
+ elsif ($macro eq 'headings')
+ {
+ my $valid_arg = 0;
+ foreach my $possible_arg (('off','on','single','double',
+ 'singleafter','doubleafter'))
+ {
+ if ($line =~ /^\s+($possible_arg)[^\w\-]/)
+ {
+ $valid_arg = 1;
+ $Texi2HTML::THISDOC{$macro} = $possible_arg;
+ last;
+ }
+ }
+ unless ($valid_arg)
+ {
+ echo_error ("Bad \@$macro", $line_nr);
+ }
+ }
+ elsif ($macro eq 'setchapternewpage')
+ {
+ if (($line =~ /^\s+(on)[^\w\-]/) or ($line =~ /^\s+(off)[^\w\-]/)
+ or ($line =~ /^\s+(odd)[^\w\-]/))
+ {
+ $Texi2HTML::THISDOC{$macro} = $1;
+ }
+ else
+ {
+ echo_error ("Bad \@$macro", $line_nr);
+ }
+ }
+ elsif ($macro eq 'setcontentsaftertitlepage' or $macro eq 'setshortcontentsaftertitlepage')
+ {
+ $Texi2HTML::THISDOC{$macro} = 1;
+ my $tag = 'contents';
+ $tag = 'shortcontents' if ($macro ne 'setcontentsaftertitlepage');
+ $content_element{$tag}->{'aftertitlepage'} = 1;
+ }
+ elsif (grep {$macro eq $_} ('everyheading', 'everyfooting',
+ 'evenheading', 'evenfooting', 'oddheading', 'oddfooting'))
+ {
+ my $arg = $line;
+ $arg =~ s/^\s+//;
+ $Texi2HTML::THISDOC{$macro} = $arg;
+ }
+ elsif ($macro eq 'need')
+ {
+ unless (($line =~ /^\s+([0-9]+(\.[0-9]*)?)[^\w\-]/) or
+ ($line =~ /^\s+(\.[0-9]+)[^\w\-]/))
+ {
+ echo_warn ("Bad \@$macro", $line_nr);
+ }
+ }
+
+ ($text, $line, $args) = preserve_command($line, $macro);
+ return ($text, $line);
+}
+
+# return the line after removing things according to misc_command map.
+# if the skipped macro has an effect it is done here
+# this is used during pass_text
+sub misc_command_text($$$$$$)
+{
+ my $line = shift;
+ my $macro = shift;
+ my $stack = shift;
+ my $state = shift;
+ my $text = shift;
+ my $line_nr = shift;
+ my ($skipped, $remaining, $args);
+ # if it is true the command args are kept so the user can modify how
+ # they are skipped and handle them as unknown @-commands
+ my $keep = $Texi2HTML::Config::misc_command{$macro}->{'keep'};
+
+ if ($macro eq 'detailmenu')
+ {
+ $state->{'detailmenu'}++;
+ }
+ elsif ($macro eq 'sp')
+ {
+ my $sp_number;
+ if ($line =~ /^\s+(\d+)\s/)
+ {
+ $sp_number = $1;
+ }
+ elsif ($line =~ /(\s*)$/)
+ {
+ $sp_number = '';
+ }
+ else
+ {
+ echo_error ("\@$macro needs a numeric arg or no arg", $line_nr);
+ }
+ $sp_number = 1 if ($sp_number eq '');
+ if (!$state->{'remove_texi'})
+ {
+ add_prev($text, $stack, &$Texi2HTML::Config::sp($sp_number, $state->{'preformatted'}));
+ }
+ }
+ elsif($macro eq 'verbatiminclude' and !$keep)
+ {
+ if ($line =~ /\s+(.+)/)
+ {
+ my $arg = $1;
+ my $file = locate_include_file($arg);
+ if (defined($file))
+ {
+ if (!open(VERBINCLUDE, $file))
+ {
+ echo_warn ("Can't read file $file: $!",$line_nr);
+ }
+ else
+ {
+ my $verb_text = '';
+ while (my $line = <VERBINCLUDE>)
+ {
+ $verb_text .= $line;
+ }
+
+ if ($state->{'remove_texi'})
+ {
+ add_prev ($text, $stack, &$Texi2HTML::Config::raw_no_texi('verbatim', $verb_text));
+ }
+ else
+ {
+ add_prev($text, $stack, &$Texi2HTML::Config::raw('verbatim', $verb_text));
+ }
+ close VERBINCLUDE;
+ }
+ }
+ else
+ {
+ echo_error ("Can't find $arg, skipping", $line_nr);
+ }
+ }
+ else
+ {
+ echo_error ("Bad \@$macro line: $_", $line_nr);
+ }
+ }
+ elsif ($macro eq 'indent' or $macro eq 'noindent')
+ {
+ $state->{'paragraph_indent'} = $macro;
+ }
+ ($remaining, $skipped, $args) = preserve_command($line, $macro);
+ return ($skipped) if ($keep);
+ return $remaining if ($remaining ne '');
+ return undef;
+}
+
+# merge the things appearing before the first @node or sectionning command
+# (held by element_before_anything) with the current element
+# do that only once.
+sub merge_element_before_anything($)
+{
+ my $element = shift;
+ if (exists($element_before_anything->{'place'}))
+ {
+ $element->{'current_place'} = $element_before_anything->{'place'};
+ delete $element_before_anything->{'place'};
+ foreach my $placed_thing (@{$element->{'current_place'}})
+ {
+ $placed_thing->{'element'} = $element if (exists($placed_thing->{'element'}));
+ }
+ }
+ # this is certainly redundant with the above condition, but cleaner
+ # that way
+ if (exists($element_before_anything->{'titlefont'}))
+ {
+ $element->{'titlefont'} = $element_before_anything->{'titlefont'};
+ delete $element_before_anything->{'titlefont'};
+ }
+}
+
+# find menu_prev, menu_up... for a node in menu
+sub menu_entry_texi($$$)
+{
+ my $node = shift;
+ my $state = shift;
+ my $line_nr = shift;
+ my $node_menu_ref = {};
+ if (exists($nodes{$node}))
+ {
+ $node_menu_ref = $nodes{$node};
+ }
+ else
+ {
+ $nodes{$node} = $node_menu_ref;
+ $node_menu_ref->{'texi'} = $node;
+ $node_menu_ref->{'external_node'} = 1 if ($node =~ /\(.+\)/);
+ }
+ return if ($state->{'detailmenu'});
+ if ($state->{'node_ref'})
+ {
+ $node_menu_ref->{'menu_up'} = $state->{'node_ref'};
+ $node_menu_ref->{'menu_up_hash'}->{$state->{'node_ref'}->{'texi'}} = 1;
+ }
+ else
+ {
+ echo_warn ("menu entry without previous node: $node", $line_nr) unless ($node =~ /\(.+\)/);
+ }
+ if ($state->{'prev_menu_node'})
+ {
+ $node_menu_ref->{'menu_prev'} = $state->{'prev_menu_node'};
+ $state->{'prev_menu_node'}->{'menu_next'} = $node_menu_ref;
+ }
+ elsif ($state->{'node_ref'})
+ {
+ $state->{'node_ref'}->{'menu_child'} = $node_menu_ref;
+ }
+ $state->{'prev_menu_node'} = $node_menu_ref;
+}
+
+sub equivalent_nodes($)
+{
+ my $name = shift;
+#print STDERR "equivalent_nodes $name\n";
+ my $node = normalise_node($name);
+ $name = cross_manual_line($node);
+ my @equivalent_nodes = ();
+ if (exists($cross_reference_nodes{$name}))
+ {
+ @equivalent_nodes = grep {$_ ne $node} @{$cross_reference_nodes{$name}};
+ }
+ return @equivalent_nodes;
+}
+
+my %files = (); # keys are files. This is used to avoid reusing an allready
+ # used file name
+my %empty_indices = (); # value is true for an index name key if the index
+ # is empty
+my %printed_indices = (); # value is true for an index name not empty and
+ # printed
+
+# find next, prev, up, back, forward, fastback, fastforward
+# find element id and file
+# split index pages
+# associate placed items (items which have links to them) with the right
+# file and id
+# associate nodes with sections
+sub rearrange_elements()
+{
+ print STDERR "# find sections levels and toplevel\n"
+ if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+
+ my $toplevel = 4;
+ # correct level if raisesections or lowersections overflowed
+ # and find toplevel level
+ # use %sections to modify also the headings
+ foreach my $section (values(%sections))
+ {
+ my $level = $section->{'level'};
+ if ($level > $MAX_LEVEL)
+ {
+ $section->{'level'} = $MAX_LEVEL;
+ }
+ elsif ($level < $MIN_LEVEL and !$section->{'top'})
+ {
+ $section->{'level'} = $MIN_LEVEL;
+ }
+ else
+ {
+ $section->{'level'} = $level;
+ }
+ $section->{'toc_level'} = $section->{'level'};
+ # This is for top
+ $section->{'toc_level'} = $MIN_LEVEL if ($section->{'level'} < $MIN_LEVEL);
+ # find the new tag corresponding with the level of the section
+ if ($section->{'tag'} !~ /heading/ and ($level ne $reference_sec2level{$section->{'tag'}}))
+ {
+ $section->{'tag_level'} = $level2sec{$section->{'tag'}}->[$section->{'level'}];
+ }
+ else
+ {
+ $section->{'tag_level'} = $section->{'tag'};
+ }
+ $toplevel = $section->{'level'} if (($section->{'level'} < $toplevel) and ($section->{'level'} > 0 and ($section->{'tag'} !~ /heading/)));
+ print STDERR "# section level $level: $section->{'texi'}\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ }
+
+ print STDERR "# find sections structure, construct section numbers (toplevel=$toplevel)\n"
+ if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ my $in_appendix = 0;
+ # these arrays have an element per sectionning level.
+ my @previous_numbers = (); # holds the number of the previous sections
+ # at the same and upper levels
+ my @previous_sections = (); # holds the ref of the previous sections
+
+ foreach my $section (@sections_list)
+ {
+ ########################### debug
+ print STDERR "BUG: node or section_ref defined for section $section->{'texi'}\n"
+ if (exists($section->{'node'}) or exists($section->{'section_ref'}));
+ ########################### end debug
+ next if ($section->{'top'});
+ print STDERR "Bug level undef for ($section) $section->{'texi'}\n" if (!defined($section->{'level'}));
+ $section->{'toplevel'} = 1 if ($section->{'level'} == $toplevel);
+ # undef things under that section level
+ for (my $level = $section->{'level'} + 1; $level < $MAX_LEVEL + 1 ; $level++)
+ {
+ $previous_numbers[$level] = undef;
+ $previous_sections[$level] = undef;
+ }
+ my $number_set;
+ # find number at the current level
+ if ($section->{'tag'} =~ /appendix/ and !$in_appendix)
+ {
+ $previous_numbers[$toplevel] = 'A';
+ $in_appendix = 1;
+ $number_set = 1 if ($section->{'level'} == $toplevel);
+ }
+ if (!defined($previous_numbers[$section->{'level'}]) and !$number_set)
+ {
+ if ($section->{'tag'} =~ /unnumbered/)
+ {
+ $previous_numbers[$section->{'level'}] = undef;
+ }
+ else
+ {
+ $previous_numbers[$section->{'level'}] = 1;
+ }
+ }
+ elsif ($section->{'tag'} !~ /unnumbered/ and !$number_set)
+ {
+ $previous_numbers[$section->{'level'}]++;
+ }
+ # construct the section number
+ $section->{'number'} = '';
+
+ unless ($section->{'tag'} =~ /unnumbered/)
+ {
+ my $level = $section->{'level'};
+ while ($level > $toplevel)
+ {
+ my $number = $previous_numbers[$level];
+ $number = 0 if (!defined($number));
+ if ($section->{'number'})
+ {
+ $section->{'number'} = "$number.$section->{'number'}";
+ }
+ else
+ {
+ $section->{'number'} = $number;
+ }
+ $level--;
+ }
+ my $toplevel_number = $previous_numbers[$toplevel];
+ $toplevel_number = 0 if (!defined($toplevel_number));
+ $section->{'number'} = "$toplevel_number.$section->{'number'}";
+ }
+ # find the previous section
+ if (defined($previous_sections[$section->{'level'}]))
+ {
+ my $prev_section = $previous_sections[$section->{'level'}];
+ $section->{'sectionprev'} = $prev_section;
+ $prev_section->{'sectionnext'} = $section;
+ }
+ # find the up section
+ if ($section->{'level'} == $toplevel)
+ {
+ $section->{'sectionup'} = undef;
+ }
+ else
+ {
+ my $level = $section->{'level'} - 1;
+ while (!defined($previous_sections[$level]) and ($level >= 0))
+ {
+ $level--;
+ }
+ if ($level >= 0)
+ {
+ $section->{'sectionup'} = $previous_sections[$level];
+ # 'child' is the first child
+ $section->{'sectionup'}->{'child'} = $section unless ($section->{'sectionprev'});
+ push @{$section->{'sectionup'}->{'section_childs'}}, $section;
+ }
+ else
+ {
+ $section->{'sectionup'} = undef;
+ }
+ }
+ $previous_sections[$section->{'level'}] = $section;
+ # This is what is used in the .init file.
+ $section->{'up'} = $section->{'sectionup'};
+ # Not used but documented.
+ $section->{'next'} = $section->{'sectionnext'};
+ $section->{'prev'} = $section->{'sectionprev'};
+
+ ############################# debug
+ my $up = "NO_UP";
+ $up = $section->{'sectionup'} if (defined($section->{'sectionup'}));
+ print STDERR "# numbering section ($section->{'level'}): $section->{'number'}: (up: $up) $section->{'texi'}\n"
+ if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ ############################# end debug
+ }
+
+ # at that point there are still some node structures that are not
+ # in %nodes, (the external nodes, and unknown nodes in case
+ # novalidate is true) so we cannot find the id. The consequence is that
+ # some node equivalent with another node may not be catched during
+ # that pass. We mark the nodes that have directions for unreferenced
+ # nodes and make a second pass for these nodes afterwards.
+ my @nodes_with_unknown_directions = ();
+
+ my @node_directions = ('node_prev', 'node_next', 'node_up');
+ # handle nodes
+ # the node_prev... are texinfo strings, find the associated node references
+ print STDERR "# Resolve nodes directions\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ foreach my $node (@nodes_list)
+ {
+ foreach my $direction (@node_directions)
+ {
+ if (defined($node->{$direction}) and !ref($node->{$direction})
+ and ($node->{$direction} ne ''))
+ {
+ if ($nodes{$node->{$direction}} and $nodes{$node->{$direction}}->{'seen'})
+ {
+ $node->{$direction} = $nodes{$node->{$direction}};
+ }
+ elsif (($node->{$direction} =~ /^\(.*\)/) or $novalidate)
+ { # ref to an external node
+ if (exists($nodes{$node->{$direction}}))
+ {
+ $node->{$direction} = $nodes{$node->{$direction}};
+ }
+ else
+ {
+ # FIXME if {'seen'} this is a node appearing in the
+ # document and a node like `(file)node'. What to
+ # do then ?
+ my $node_ref = { 'texi' => $node->{$direction} };
+ $node_ref->{'external_node'} = 1 if ($node->{$direction} =~ /^\(.*\)/);
+ $nodes{$node->{$direction}} = $node_ref;
+ $node->{$direction} = $node_ref;
+ }
+ }
+ else
+ {
+ push @nodes_with_unknown_directions, $node;
+ }
+ }
+ }
+ }
+
+ # Find cross manual links as explained on the texinfo mailing list
+ # The specification is such that cross manual links formatting should
+ # be insensitive to the manual split
+ cross_manual_links();
+
+ # Now it is possible to find the unknown directions that are equivalent
+ # (have same node id) than an existing node
+ foreach my $node (@nodes_with_unknown_directions)
+ {
+ foreach my $direction (@node_directions)
+ {
+ if (defined($node->{$direction}) and !ref($node->{$direction})
+ and ($node->{$direction} ne ''))
+ {
+ echo_warn ("$direction `$node->{$direction}' for `$node->{'texi'}' not found");
+ my @equivalent_nodes = equivalent_nodes($node->{$direction});
+ my $node_seen;
+ foreach my $equivalent_node (@equivalent_nodes)
+ {
+ if ($nodes{$equivalent_node}->{'seen'})
+ {
+ $node_seen = $equivalent_node;
+ last;
+ }
+ }
+ if (defined($node_seen))
+ {
+ echo_warn (" ---> but equivalent node `$node_seen' found");
+ $node->{$direction} = $nodes{$node_seen};
+ }
+ else
+ {
+ delete $node->{$direction};
+ }
+ }
+ }
+ }
+
+ # find section preceding and following top
+ my $section_before_top; # section preceding the top node
+ my $section_after_top; # section following the top node
+ if ($node_top)
+ {
+ my $previous_is_top = 0;
+ foreach my $element (@all_elements)
+ {
+ if ($element eq $node_top)
+ {
+ $previous_is_top = 1;
+ next;
+ }
+ if ($previous_is_top)
+ {
+ if ($element->{'section'})
+ {
+ $section_after_top = $element;
+ last;
+ }
+ next;
+ }
+ $section_before_top = $element if ($element->{'section'});
+ }
+ }
+ print STDERR "# section before Top: $section_before_top->{'texi'}\n"
+ if ($section_before_top and ($T2H_DEBUG & $DEBUG_ELEMENTS));
+ print STDERR "# section after Top: $section_after_top->{'texi'}\n"
+ if ($section_after_top and ($T2H_DEBUG & $DEBUG_ELEMENTS));
+
+ print STDERR "# Build the elements list\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ if (!$Texi2HTML::Config::USE_NODES)
+ {
+ #the only sectionning elements are sections
+ @elements_list = @sections_list;
+ # if there is no section we use nodes...
+ if (!@elements_list)
+ {
+ print STDERR "# no section\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ @elements_list = @all_elements;
+ }
+ elsif (!$section_top and $node_top and !$node_top->{'with_section'})
+ { # special case for the top node if it isn't associated with
+ # a section. The top node element is inserted between the
+ # $section_before_top and the $section_after_top
+ print STDERR "# Top not associated with a section\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ $node_top->{'top_as_section'} = 1;
+ $node_top->{'section_ref'} = $node_top;
+ my @old_element_lists = @elements_list;
+ @elements_list = ();
+ while (@old_element_lists)
+ {
+ my $section = shift @old_element_lists;
+ if ($section_before_top and ($section eq $section_before_top))
+ {
+ push @elements_list, $section;
+ push @elements_list, $node_top;
+ last;
+ }
+ elsif ($section_after_top and ($section eq $section_after_top))
+ {
+ push @elements_list, $node_top;
+ push @elements_list, $section;
+ last;
+ }
+ push @elements_list, $section;
+ }
+ push @elements_list, @old_element_lists;
+ }
+
+ foreach my $element (@elements_list)
+ {
+ print STDERR "# new section element $element->{'texi'}\n"
+ if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ }
+ }
+ else
+ {
+ # elements are sections if possible, and node if no section associated
+ foreach my $element(@all_elements)
+ {
+ if ($element->{'node'})
+ {
+ if (!defined($element->{'with_section'}))
+ {
+ $element->{'toc_level'} = $MIN_LEVEL if (!defined($element->{'toc_level'}));
+ print STDERR "# new node element ($element) $element->{'texi'}\n"
+ if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ push @elements_list, $element;
+ }
+ }
+ else
+ {
+ print STDERR "# new section element ($element) $element->{'texi'}\n"
+ if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ push @elements_list, $element;
+ }
+ }
+ }
+
+ # nodes are attached to the section preceding them if not allready
+ # associated with a section
+ # here we don't set @{$element->{'nodes'}} since it may be changed
+ # below if split by indices. Therefore we only set
+ # @{$element->{'all_elements'}} with all the elements associated
+ # with an element output, in the right order
+ print STDERR "# Find the section associated with each node\n"
+ if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ my $current_section = $sections_list[0];
+ $current_section = $node_top if ($node_top and $node_top->{'top_as_section'} and !$section_before_top);
+ foreach my $element (@all_elements)
+ {
+ if ($element->{'node'} and !$element->{'top_as_section'})
+ {
+ if ($element->{'with_section'})
+ { # the node is associated with a section
+ $element->{'section_ref'} = $element->{'with_section'};
+ push @{$element->{'section_ref'}->{'all_elements'}}, $element, $element->{'section_ref'};
+ # first index is section if the first index is associated with that node
+ $element_index = $element->{'section_ref'} if ($element_index and ($element_index eq $element));
+ }
+ elsif (defined($current_section))
+ {# node appearing after a section, but not before another section,
+ # or appearing before any section
+ $element->{'section_ref'} = $current_section;
+ $element->{'toc_level'} = $current_section->{'toc_level'};
+ push @{$current_section->{'node_childs'}}, $element;
+ if ($Texi2HTML::Config::USE_NODES)
+ { # the node is an element itself
+ push @{$element->{'all_elements'}}, $element;
+ }
+ else
+ {
+ push @{$current_section->{'all_elements'}}, $element;
+ # first index is section if the first index is associated with that node
+ $element_index = $current_section if ($element_index and ($element_index eq $element));
+ }
+ }
+ else
+ { # seems like there are only nodes in the documents
+ $element->{'toc_level'} = $MIN_LEVEL;
+ push @{$element->{'all_elements'}}, $element;
+ }
+ }
+ else
+ {
+ $current_section = $element;
+ if ($element->{'node'})
+ { # Top node not associated with a section
+ $element->{'toc_level'} = $MIN_LEVEL;
+ push @{$element->{'section_ref'}->{'all_elements'}}, $element;
+ }
+ elsif (!$element->{'node_ref'})
+ { # a section not preceded by a node
+ push @{$element->{'all_elements'}}, $element;
+ }
+ }
+ }
+
+ # find first, last and top elements
+ $element_first = $elements_list[0];
+ print STDERR "# element first: $element_first->{'texi'}\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ print STDERR "# top node: $node_top->{'texi'}\n" if (defined($node_top) and
+ ($T2H_DEBUG & $DEBUG_ELEMENTS));
+ # element top is the element with @top.
+ $element_top = $section_top;
+ # If the top node is associated with a section it is the top_element
+ # otherwise element top may be the top node
+ $element_top = $node_top if (!defined($element_top) and defined($node_top));
+ # If there is no @top section no top node the first node is the top element
+ $element_top = $element_first unless (defined($element_top));
+ $element_top->{'top'} = 1 if ($element_top->{'node'});
+ print STDERR "# element top: $element_top->{'texi'}\n" if ($element_top and
+ ($T2H_DEBUG & $DEBUG_ELEMENTS));
+
+ # It is the last element before indices split, which may add new
+ # elements
+ $element_last = $elements_list[-1];
+
+ print STDERR "# Complete nodes next prev and up based on menus and sections\n"
+ if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ # set the default id based on the node number
+ my $node_nr = 1;
+ # find the node* directions
+ # find the directions corresponding with sections
+ # and set 'up' for the node
+ foreach my $node (@nodes_list)
+ {
+ # first a warning if the node and the equivalent nodes don't
+ # appear in menus
+ if (!$node->{'first'} and !$node->{'top'} and !$node->{'menu_up'} and ($node->{'texi'} !~ /^top$/i) and $Texi2HTML::Config::SHOW_MENU)
+ {
+ my @equivalent_nodes = equivalent_nodes($node->{'texi'});
+ my $found = 0;
+ foreach my $equivalent_node (@equivalent_nodes)
+ {
+ if ($nodes{$equivalent_node}->{'first'} or $nodes{$equivalent_node}->{'menu_up'})
+ {
+ $found = 1;
+ last;
+ }
+ }
+ unless ($found)
+ {
+ warn "$WARN `$node->{'texi'}' doesn't appear in menus\n";
+ }
+ }
+
+ # use values deduced from menus to complete missing up, next, prev
+ # or from sectionning commands if automatic sectionning
+ if ($node->{'node_up'})
+ {
+ $node->{'nodeup'} = $node->{'node_up'};
+ }
+ elsif ($node->{'automatic_directions'} and $node->{'section_ref'})
+ {
+ if (defined($node_top) and ($node eq $node_top))
+ { # Top node has a special up, which is (dir) by default
+ my $top_nodeup = $Texi2HTML::Config::TOP_NODE_UP;
+ if (exists($nodes{$top_nodeup}))
+ {
+ $node->{'nodeup'} = $nodes{$top_nodeup};
+ }
+ else
+ {
+ my $node_ref = { 'texi' => $top_nodeup };
+ $node_ref->{'external_node'} = 1;
+ $nodes{$top_nodeup} = $node_ref;
+ $node->{'nodeup'} = $node_ref;
+ }
+ }
+ elsif (defined($node->{'section_ref'}->{'sectionup'}))
+ {
+ $node->{'nodeup'} = get_node($node->{'section_ref'}->{'sectionup'});
+ }
+ elsif ($node->{'section_ref'}->{'toplevel'} and ($node->{'section_ref'} ne $element_top))
+ {
+ $node->{'nodeup'} = get_node($element_top);
+ }
+ print STDERR "# Deducing from section node_up $node->{'nodeup'}->{'texi'} for $node->{'texi'}\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS and defined($node->{'nodeup'}));
+ }
+
+ if (!$node->{'nodeup'} and $node->{'menu_up'} and $Texi2HTML::Config::USE_MENU_DIRECTIONS)
+ { # makeinfo don't do that
+ $node->{'nodeup'} = $node->{'menu_up'};
+ print STDERR "# Deducing from menu node_up $node->{'menu_up'}->{'texi'} for $node->{'texi'}\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ }
+
+ if ($node->{'nodeup'} and !$node->{'nodeup'}->{'external_node'})
+ {
+ # We detect when the up node has no menu entry for that node, as
+ # there may be infinite loops when finding following node (see below)
+ unless (defined($node->{'menu_up_hash'}) and ($node->{'menu_up_hash'}->{$node->{'nodeup'}->{'texi'}}))
+ {
+ print STDERR "$WARN `$node->{'nodeup'}->{'texi'}' is up for `$node->{'texi'}', but has no menu entry for this node\n" if ($Texi2HTML::Config::SHOW_MENU);
+ push @{$node->{'up_not_in_menu'}}, $node->{'nodeup'}->{'texi'};
+ }
+ }
+
+ # Find next node
+ if ($node->{'node_next'})
+ {
+ $node->{'nodenext'} = $node->{'node_next'};
+ }
+ elsif ($node->{'texi'} eq 'Top')
+ { # special case as said in the texinfo manual
+ $node->{'nodenext'} = $node->{'menu_child'} if ($node->{'menu_child'});
+ }
+ elsif ($node->{'automatic_directions'})
+ {
+ if (defined($node->{'section_ref'}))
+ {
+ my $next;
+ my $section = $node->{'section_ref'};
+ if (defined($section->{'sectionnext'}))
+ {
+ $next = get_node($section->{'sectionnext'})
+ }
+ else
+ {
+ while (defined($section->{'sectionup'}) and !defined($section->{'sectionnext'}))
+ {
+ $section = $section->{'sectionup'};
+ }
+ if (defined($section->{'sectionnext'}))
+ {
+ $next = get_node($section->{'sectionnext'});
+ }
+ }
+ $node->{'nodenext'} = $next;
+ }
+ }
+ # next we try menus. makeinfo don't do that
+ if (!defined($node->{'nodenext'}) and $node->{'menu_next'}
+ and $Texi2HTML::Config::USE_MENU_DIRECTIONS)
+ {
+ $node->{'nodenext'} = $node->{'menu_next'};
+ }
+ # Find prev node
+ if ($node->{'node_prev'})
+ {
+ $node->{'nodeprev'} = $node->{'node_prev'};
+ }
+ elsif ($node->{'automatic_directions'})
+ {
+ if (defined($node->{'section_ref'}))
+ {
+ my $section = $node->{'section_ref'};
+ if (defined($section->{'sectionprev'}))
+ {
+ $node->{'nodeprev'} = get_node($section->{'sectionprev'});
+ }
+ elsif (defined($section->{'sectionup'}))
+ {
+ $node->{'nodeprev'} = get_node($section->{'sectionup'});
+ }
+ }
+ }
+ # next we try menus. makeinfo don't do that
+ if (!defined($node->{'nodeprev'}) and $node->{'menu_prev'} and $Texi2HTML::Config::USE_MENU_DIRECTIONS)
+ {
+ $node->{'nodeprev'} = $node->{'menu_prev'};
+ }
+ # the prev node is the parent node
+ elsif (!defined($node->{'nodeprev'}) and $node->{'menu_up'} and $Texi2HTML::Config::USE_MENU_DIRECTIONS)
+ {
+ $node->{'nodeprev'} = $node->{'menu_up'};
+ }
+
+ # the following node is the node following in node reading order
+ # it is thus first the child, else the next, else the next following
+ # the up
+ if ($node->{'menu_child'})
+ {
+ $node->{'following'} = $node->{'menu_child'};
+ }
+ elsif ($node->{'automatic_directions'} and defined($node->{'section_ref'}) and defined($node->{'section_ref'}->{'child'}))
+ {
+ $node->{'following'} = get_node($node->{'section_ref'}->{'child'});
+ }
+ elsif (defined($node->{'nodenext'}))
+ {
+ $node->{'following'} = $node->{'nodenext'};
+ }
+ else
+ {
+ my $up = $node->{'nodeup'};
+ # in order to avoid infinite recursion in case the up node is the
+ # node itself we use the up node as following when there isn't
+ # a correct menu structure, here and also below.
+ $node->{'following'} = $up if (defined($up) and grep {$_ eq $up->{'texi'}} @{$node->{'up_not_in_menu'}});
+ while ((!defined($node->{'following'})) and (defined($up)))
+ {
+ if (($node_top) and ($up eq $node_top))
+ { # if we are at Top, Top is following
+ $node->{'following'} = $node_top;
+ $up = undef;
+ }
+ if (defined($up->{'nodenext'}))
+ {
+ $node->{'following'} = $up->{'nodenext'};
+ }
+ elsif (defined($up->{'nodeup'}))
+ {
+ if (! grep { $_ eq $up->{'nodeup'}->{'texi'} } @{$node->{'up_not_in_menu'}})
+ {
+ $up = $up->{'nodeup'};
+ }
+ else
+ { # in that case we can go into a infinite loop
+ $node->{'following'} = $up->{'nodeup'};
+ }
+ }
+ else
+ {
+ $up = undef;
+ }
+ }
+ }
+
+ if (defined($node->{'section_ref'}))
+ {
+ my $section = $node->{'section_ref'};
+ foreach my $direction ('sectionnext', 'sectionprev', 'sectionup')
+ {
+ $node->{$direction} = $section->{$direction}
+ if (defined($section->{$direction}));
+ }
+ # this is a node appearing within a section but not associated
+ # with that section. We consider that it is below that section.
+ $node->{'sectionup'} = $section
+ if (grep {$node eq $_} @{$section->{'node_childs'}});
+ }
+ # 'up' is used in .init files. Maybe should go away.
+ if (defined($node->{'sectionup'}))
+ {
+ $node->{'up'} = $node->{'sectionup'};
+ }
+ elsif (defined($node->{'nodeup'}) and
+ (!$node_top or ($node ne $node_top)))
+ {
+ $node->{'up'} = $node->{'nodeup'};
+ }
+ # 'next' not used but documented.
+ if (defined($node->{'sectionnext'}))
+ {
+ $node->{'next'} = $node->{'sectionnext'};
+ }
+ if (defined($node->{'sectionprev'}))
+ {
+ $node->{'prev'} = $node->{'sectionprev'};
+ }
+
+ # default id for nodes. Should be overriden later.
+ $node->{'id'} = 'NOD' . $node_nr;
+ $node_nr++;
+ }
+
+ print STDERR "# find forward and back\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ my $prev;
+ foreach my $element (@elements_list)
+ {
+ $element->{'element'} = 1;
+ # complete the up for toplevel elements now that element_top is defined
+ print STDERR "# fwd and back for $element->{'texi'}\n"
+ if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ # at that point no node may be toplevel, only sections.
+ if ($element->{'toplevel'} and ($element ne $element_top))
+ {
+ $element->{'sectionup'} = $element_top;
+ $element->{'up'} = $element_top;
+ }
+ if ($prev)
+ {
+ $element->{'back'} = $prev;
+ $prev->{'forward'} = $element;
+ $prev = $element;
+ }
+ else
+ {
+ $prev = $element;
+ }
+ # If the element is not a node, then all the node directions are copied
+ # if there is an associated node
+ if (defined($element->{'node_ref'}))
+ {
+ $element->{'nodenext'} = $element->{'node_ref'}->{'nodenext'};
+ $element->{'nodeprev'} = $element->{'node_ref'}->{'nodeprev'};
+ $element->{'menu_next'} = $element->{'node_ref'}->{'menu_next'};
+ $element->{'menu_prev'} = $element->{'node_ref'}->{'menu_prev'};
+ $element->{'menu_child'} = $element->{'node_ref'}->{'menu_child'};
+ $element->{'menu_up'} = $element->{'node_ref'}->{'menu_up'};
+ $element->{'nodeup'} = $element->{'node_ref'}->{'nodeup'};
+ $element->{'following'} = $element->{'node_ref'}->{'following'};
+ }
+ elsif (! $element->{'node'})
+ { # the section has no node associated. Find the node directions using
+ # sections
+ if (defined($element->{'sectionnext'}))
+ {
+ $element->{'nodenext'} = get_node($element->{'sectionnext'});
+ }
+ if (defined($element->{'sectionprev'}))
+ {
+ $element->{'nodeprev'} = get_node($element->{'sectionprev'});
+ }
+ if (defined($element->{'up'}))
+ {
+ $element->{'nodeup'} = get_node($element->{'up'});
+ }
+ if ($element->{'child'})
+ {
+ $element->{'following'} = get_node($element->{'child'});
+ }
+ elsif ($element->{'sectionnext'})
+ {
+ $element->{'following'} = get_node($element->{'sectionnext'});
+ }
+ elsif ($element->{'up'})
+ {
+ my $up = $element;
+ while ($up->{'up'} and !$element->{'following'})
+ {
+ print STDERR "# Going up, searching next section from $up->{'texi'}\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ $up = $up->{'up'};
+ if ($up->{'sectionnext'})
+ {
+ $element->{'following'} = get_node ($up->{'sectionnext'});
+ }
+ # avoid infinite loop if the top is up for itself
+ last if ($up->{'toplevel'} or $up->{'top'});
+ }
+ }
+ }
+ }
+
+ my @new_elements = ();
+ print STDERR "# preparing indices\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+
+ while(@elements_list)
+ {
+ my $element = shift @elements_list;
+ # current_element is the last element which can hold text. It is
+ # initialized to a fake element
+ my $current_element = { 'holder' => 1, 'texi' => 'HOLDER',
+ 'place' => [], 'indices' => [] };
+ # $back, $forward and $sectionnext are kept because $element
+ # is in @{$element->{'all_elements'}}, so it is possible that
+ # those directions get changed.
+ # back is set to find back and forward
+ my $back = $element->{'back'} if defined($element->{'back'});
+ my $forward = $element->{'forward'};
+ my $sectionnext = $element->{'sectionnext'};
+ my $index_num = 0;
+ my @waiting_elements = (); # elements (nodes) not used for sectionning
+ # waiting to be associated with an element
+ foreach my $checked_element(@{$element->{'all_elements'}})
+ {
+ if ($checked_element->{'element'})
+ { # this is the element, we must add it
+ push @new_elements, $checked_element;
+ if ($current_element->{'holder'})
+ { # no previous element added
+ push @{$checked_element->{'place'}}, @{$current_element->{'place'}};
+ foreach my $index(@{$current_element->{'indices'}})
+ {
+ push @{$checked_element->{'indices'}}, [ { 'element' => $checked_element, 'page' => $index->[0]->{'page'}, 'name' => $index->[0]->{'name'} } ] ;
+ }
+ }
+ else
+ {
+ $current_element->{'sectionnext'} = $checked_element;
+ $current_element->{'following'} = $checked_element;
+ $checked_element->{'sectionprev'} = $current_element;
+ }
+ $current_element = $checked_element;
+ $checked_element->{'back'} = $back;
+ $back->{'forward'} = $checked_element if (defined($back));
+ $back = $checked_element;
+ push @{$checked_element->{'nodes'}}, @waiting_elements;
+ @waiting_elements = ();
+ }
+ elsif ($current_element->{'holder'})
+ {
+ push @waiting_elements, $checked_element;
+ }
+ else
+ {
+ push @{$current_element->{'nodes'}}, $checked_element;
+ $checked_element->{'section_ref'} = $current_element;
+ }
+ push @{$current_element->{'place'}}, @{$checked_element->{'current_place'}};
+ foreach my $index (@{$checked_element->{'index_names'}})
+ {
+ print STDERR "# Index in `$checked_element->{'texi'}': $index->{'name'}. Current is `$current_element->{'texi'}'\n"
+ if ($T2H_DEBUG & $DEBUG_INDEX);
+ my ($pages, $entries) = get_index($index->{'name'});
+ if (defined($pages))
+ {
+ my @pages = @$pages;
+ my $first_page = shift @pages;
+ ############################## begin debug section
+ my $back_texi = 'NO_BACK';
+ $back_texi = $back->{'texi'} if (defined($back));
+ print STDERR "# Index first page (back `$back_texi', in `$current_element->{'texi'}')\n" if ($T2H_DEBUG & $DEBUG_INDEX);
+ ############################## end debug section
+ push @{$current_element->{'indices'}}, [ {'element' => $current_element, 'page' => $first_page, 'name' => $index->{'name'} } ];
+ if (@pages)
+ {# index is split accross more than one page
+ if ($current_element->{'holder'})
+ { # the current element isn't an element which is
+ # normally outputted. We add a real element.
+ # we are in a node of a section but the element
+ # is split by the index, thus we must add
+ # a new element which will contain the text
+ # between the beginning of the element and the index
+ # WARNING the added element is like a section, and
+ # indeed it is a 'section_ref' and 'sectionup'
+ # for other nodes, it has 'nodes'
+ # (see below and above).
+ # But it is also a node. It may have a 'with_section'
+ # and have a 'section_ref'
+ # it may be considered 'node_ref' for a section.
+ # and the Texi2HTML::NODE is relative to this
+ # added element.
+
+ push @new_elements, $checked_element;
+ print STDERR "# Add `$checked_element->{'texi'}' before index page for `$element->{'texi'}'\n"
+ if ($T2H_DEBUG & $DEBUG_INDEX);
+ echo_warn("Add `$checked_element->{'texi'}' for indicing");
+ $checked_element->{'element'} = 1;
+ $checked_element->{'level'} = $element->{'level'};
+ $checked_element->{'toc_level'} = $element->{'toc_level'};
+ $checked_element->{'toplevel'} = $element->{'toplevel'};
+ if ($element->{'top'})
+ {
+ $checked_element->{'toplevel'} = 1;
+ $checked_element->{'top'} = 1;
+ }
+ $checked_element->{'up'} = $element->{'up'};
+ $checked_element->{'sectionup'} = $element->{'sectionup'};
+ $checked_element->{'element_added'} = 1;
+ print STDERR "Bug: checked element wasn't seen" if
+ (!$checked_element->{'seen'});
+ $element->{'sectionprev'}->{'sectionnext'} = $checked_element if (exists($element->{'sectionprev'}));
+ push @{$checked_element->{'place'}}, @{$current_element->{'place'}};
+ foreach my $index(@{$current_element->{'indices'}})
+ {
+ push @{$checked_element->{'indices'}}, [ { 'element' => $checked_element, 'page' => $index->[0]->{'page'}, 'name' => $index->[0]->{'name'} } ] ;
+ }
+ foreach my $waiting_element (@waiting_elements)
+ {
+ next if ($waiting_element eq $checked_element);
+ $waiting_element->{'section_ref'} = $checked_element;
+ $waiting_element->{'sectionup'} = $checked_element;
+ push @{$checked_element->{'nodes'}}, $waiting_element;
+ }
+ @waiting_elements = ();
+ $checked_element->{'back'} = $back;
+ $back->{'forward'} = $checked_element if (defined($back));
+ $current_element = $checked_element;
+ $back = $checked_element;
+ }
+ my $index_page;
+ while(@pages)
+ {
+ print STDERR "# New page (back `$back->{'texi'}', current `$current_element->{'texi'}')\n" if ($T2H_DEBUG & $DEBUG_INDEX);
+ $index_num++;
+ my $page = shift @pages;
+ $index_page = { 'index_page' => 1,
+ 'texi' => "NOT REALLY USED: $current_element->{'texi'}' index $index->{'name'} page $index_num",
+ 'level' => $element->{'level'},
+ 'tag' => $element->{'tag'},
+ 'tag_level' => $element->{'tag_level'},
+ 'toplevel' => $element->{'toplevel'},
+ 'top' => $element->{'top'},
+ 'up' => $element->{'up'},
+ 'sectionup' => $element->{'sectionup'},
+ 'back' => $back,
+ 'prev' => $back,
+ 'sectionnext' => $sectionnext,
+ 'following' => $current_element->{'following'},
+ 'nodeup' => $current_element->{'nodeup'},
+ 'nodenext' => $current_element->{'nodenext'},
+ 'nodeprev' => $back,
+ 'place' => [],
+ 'seen' => 1,
+ 'page' => $page
+ };
+ # the index page is associated with the new element
+ # if there is one, the element otherwise
+ if ($checked_element->{'element_added'})
+ {
+ $index_page->{'original_index_element'} = $checked_element;
+ }
+ else
+ {
+ $index_page->{'original_index_element'} = $element;
+ }
+ $index_page->{'node'} = 1 if ($element->{'node'});
+ while ($nodes{$index_page->{'texi'}})
+ {
+ $nodes{$index_page->{'texi'}} .= ' ';
+ }
+ $nodes{$index_page->{'texi'}} = $index_page;
+ push @{$current_element->{'indices'}->[-1]}, {'element' => $index_page, 'page' => $page, 'name' => $index->{'name'} };
+ push @new_elements, $index_page;
+ $back->{'forward'} = $index_page;
+ $back->{'nodenext'} = $index_page;
+ $back->{'sectionnext'} = $index_page unless ($back->{'top'});
+ $back->{'following'} = $index_page;
+ $back = $index_page;
+ $index_page->{'toplevel'} = 1 if ($element->{'top'});
+ }
+ $current_element = $index_page;
+ }
+ }
+ else
+ {
+ print STDERR "# Empty index: $index->{'name'}\n"
+ if ($T2H_DEBUG & $DEBUG_INDEX);
+ $empty_indices{$index->{'name'}} = 1;
+ }
+ push @{$current_element->{'place'}}, @{$index->{'place'}};
+ }
+ }
+ if ($forward and ($current_element ne $element))
+ {
+ $current_element->{'forward'} = $forward;
+ $forward->{'back'} = $current_element;
+ }
+ next if ($current_element eq $element or !$element->{'toplevel'});
+ # reparent the elements below $element to the last index page
+ print STDERR "# Reparent for `$element->{'texi'}':\n" if ($T2H_DEBUG & $DEBUG_INDEX);
+ foreach my $reparented(@{$element->{'section_childs'}},@{$element->{'node_childs'}})
+ {
+ $reparented->{'sectionup'} = $current_element;
+ print STDERR " reparented: $reparented->{'texi'}\n"
+ if ($T2H_DEBUG & $DEBUG_INDEX);
+ }
+ }
+ @elements_list = @new_elements;
+
+ print STDERR "# find fastback and fastforward\n"
+ if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ foreach my $element (@elements_list)
+ {
+ my $up = get_top($element);
+ next unless (defined($up));
+ $element_chapter_index = $up if ($element_index and ($element_index eq $element));
+ # fastforward is the next element on same level than the upper parent
+ # element
+ $element->{'fastforward'} = $up->{'sectionnext'} if (exists ($up->{'sectionnext'}));
+ # if the element isn't at the highest level, fastback is the
+ # highest parent element
+ if ($up and ($up ne $element))
+ {
+ $element->{'fastback'} = $up;
+ }
+ elsif ($element->{'toplevel'})
+ {
+ # the element is a top level element, we adjust the next
+ # toplevel element fastback
+ $element->{'fastforward'}->{'fastback'} = $element if ($element->{'fastforward'});
+ }
+ }
+
+ # set 'reference_element' which is used each time there is a cross ref
+ # to that node.
+ # It is the section associated with the node except if USE_NODES
+ unless ($Texi2HTML::Config::USE_NODES)
+ {
+ foreach my $node(@nodes_list)
+ {
+ if ($node->{'with_section'})
+ {
+ $node->{'reference_element'} = $node->{'with_section'};
+ }
+ }
+ }
+
+ my $index_nr = 0;
+ # convert directions in direction with first letter in all caps, to be
+ # consistent with the convention used in the .init file.
+ # find id for nodes and indices
+ foreach my $element (@elements_list)
+ {
+ $element->{'this'} = $element;
+ foreach my $direction (@element_directions)
+ {
+ my $direction_no_caps = $direction;
+ $direction_no_caps =~ tr/A-Z/a-z/;
+ $element->{$direction} = $element->{$direction_no_caps};
+ }
+ if ($element->{'index_page'})
+ {
+ $element->{'id'} = "INDEX" . $index_nr;
+ $index_nr++;
+ }
+ }
+
+ print STDERR "# find float id\n"
+ if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ foreach my $float (@floats)
+ {
+ $float->{'style_id'} = cross_manual_line(normalise_space($float->{'style_texi'}));
+ my $float_style = { };
+ if (exists($floats{$float->{'style_id'}}))
+ {
+ $float_style = $floats{$float->{'style_id'}};
+ }
+ else
+ {
+ $floats{$float->{'style_id'}} = $float_style;
+ }
+ push @{$float_style->{'floats'}}, $float;
+ $float->{'absolute_nr'} = scalar(@{$float_style->{'floats'}});
+ my $up = get_top($float->{'element'});
+ if (defined($up) and (!defined($float_style->{'current_chapter'}) or ($up->{'texi'} ne $float_style->{'current_chapter'})))
+ {
+ $float_style->{'current_chapter'} = $up->{'texi'};
+ $float_style->{'nr_in_chapter'} = 1;
+ }
+ else
+ {
+ $float_style->{'nr_in_chapter'}++;
+ }
+ if (defined($up) and $up->{'number'} ne '')
+ {
+ $float->{'chapter_nr'} = $up->{'number'};
+ $float->{'nr'} = $float->{'chapter_nr'} . $float_style->{'nr_in_chapter'};
+ }
+ else
+ {
+ $float->{'nr'} = $float->{'absolute_nr'};
+ }
+ }
+
+ if ($Texi2HTML::Config::NEW_CROSSREF_STYLE)
+ {
+ foreach my $key (keys(%nodes))
+ {
+ my $node = $nodes{$key};
+ next if ($node->{'external_node'} or $node->{'index_page'});
+ $node->{'id'} = node_to_id($node->{'cross_manual_target'});
+ }
+ }
+
+ # Find node file names and file names for nodes considered as elements
+ my $node_as_top;
+ if ($node_top)
+ {
+ $node_as_top = $node_top;
+ }
+ elsif ($element_top->{'node_ref'})
+ {
+ $node_as_top = $element_top->{'node_ref'};
+ }
+ else
+ {
+ $node_as_top = $node_first;
+ }
+ if ($node_as_top)
+ {
+ my $node_file;
+ $node_file = &$Texi2HTML::Config::node_file_name($node_as_top,'top');
+ $node_as_top->{'node_file'} = $node_file if (defined($node_file));
+ }
+ foreach my $key (keys(%nodes))
+ {
+ my $node = $nodes{$key};
+ next if (defined($node_as_top) and ($node eq $node_as_top));
+ my $node_file = &$Texi2HTML::Config::node_file_name($node,'');
+ $node->{'node_file'} = $node_file if (defined($node_file));
+ }
+
+ print STDERR "# split and set files\n"
+ if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ # find document nr and document file for sections and nodes.
+ # Split according to Texi2HTML::Config::SPLIT.
+ # find file and id for placed elements (anchors, index entries, headings)
+ if ($Texi2HTML::Config::SPLIT)
+ {
+ my $cut_section = $toplevel;
+ my $doc_nr = -1;
+ if ($Texi2HTML::Config::SPLIT eq 'section')
+ {
+ $cut_section = 2 if ($toplevel <= 2);
+ }
+ my $previous_file;
+ foreach my $element (@elements_list)
+ {
+ print STDERR "# Splitting ($Texi2HTML::Config::SPLIT:$cut_section) $element->{'texi'}\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ my $new_file = 0;
+ if (
+ ($Texi2HTML::Config::SPLIT eq 'node') or
+ (
+ defined($element->{'level'}) and ($element->{'level'} <= $cut_section)
+ )
+ )
+ {
+ $new_file = 1;
+ $doc_nr++;
+ }
+ $doc_nr = 0 if ($doc_nr < 0); # happens if first elements are nodes
+ $element->{'doc_nr'} = $doc_nr;
+ my $is_top = '';
+ $element->{'file'} = "${docu_name}_$doc_nr"
+ . ($docu_ext ? ".$docu_ext" : "");
+ if ($element->{'top'} or (defined($element->{'node_ref'}) and $element->{'node_ref'} eq $element_top))
+ { # the top elements
+ $is_top = "top";
+ $element->{'file'} = $docu_top;
+ }
+ elsif ($Texi2HTML::Config::NODE_FILES)
+ {
+ if ($new_file)
+ {
+ my $node = get_node($element) unless(exists($element->{'node_ref'})
+ and $element->{'node_ref'}->{'element_added'});
+ if ($node and defined($node->{'node_file'}))
+ {
+ $element->{'file'} = $node->{'node_file'};
+ }
+ $previous_file = $element->{'file'};
+ }
+ elsif($previous_file)
+ {
+ $element->{'file'} = $previous_file;
+ }
+ }
+ if (defined($Texi2HTML::Config::element_file_name))
+ {
+ my $filename =
+ &$Texi2HTML::Config::element_file_name ($element, $is_top, $docu_name);
+ $element->{'file'} = $filename if (defined($filename));
+ }
+ print STDERR "# add_file $element->{'file'} for $element->{'texi'}\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ add_file($element->{'file'});
+ foreach my $place(@{$element->{'place'}})
+ {
+ $place->{'file'} = $element->{'file'};
+ $place->{'id'} = $element->{'id'} unless defined($place->{'id'});
+ }
+ if ($element->{'nodes'})
+ {
+ foreach my $node (@{$element->{'nodes'}})
+ {
+ $node->{'doc_nr'} = $element->{'doc_nr'};
+ $node->{'file'} = $element->{'file'};
+ }
+ }
+ }
+ }
+ else
+ { # not split
+ add_file($docu_doc);
+ foreach my $element(@elements_list)
+ {
+ $element->{'file'} = $docu_doc;
+ $element->{'doc_nr'} = 0;
+ foreach my $place(@{$element->{'place'}})
+ {
+ $place->{'file'} = $element->{'file'};
+ $place->{'id'} = $element->{'id'} unless defined($place->{'id'});
+ }
+ }
+ foreach my $node(@nodes_list)
+ {
+ $node->{'file'} = $docu_doc;
+ $node->{'doc_nr'} = 0;
+ }
+ }
+ # correct the id and file for the things placed in footnotes
+ foreach my $place(@{$footnote_element->{'place'}})
+ {
+ $place->{'file'} = $footnote_element->{'file'};
+ $place->{'id'} = $footnote_element->{'id'} unless defined($place->{'id'});
+ }
+ # if setcontentsaftertitlepage is set, the contents should be associated
+ # with the titlepage. That's wat is done there.
+ push @$region_place, $content_element{'contents'}
+ if ($Texi2HTML::Config::DO_CONTENTS and $Texi2HTML::THISDOC{'setcontentsaftertitlepage'});
+ push @$region_place, $content_element{'shortcontents'}
+ if ($Texi2HTML::Config::DO_SCONTENTS and $Texi2HTML::THISDOC{'setshortcontentsaftertitlepage'});
+ # correct the id and file for the things placed in regions (copying...)
+ foreach my $place(@$region_place)
+ {
+#print STDERR "entry $place->{'entry'} texi $place->{'texi'}\n";
+ $place->{'file'} = $element_top->{'file'};
+ $place->{'id'} = $element_top->{'id'} unless defined($place->{'id'});
+ $place->{'element'} = $element_top if (exists($place->{'element'}));
+ }
+ foreach my $content_type(keys(%content_element))
+ {
+ if (!defined($content_element{$content_type}->{'file'}))
+ {
+ print STDERR "# No content $content_type\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ $content_element{$content_type} = undef;
+ }
+ }
+
+ ########################### debug prints
+ foreach my $file (keys(%files))
+ {
+ last unless ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ print STDERR "$file: counter $files{$file}->{'counter'}\n";
+ }
+ foreach my $element ((@elements_list, $footnote_element))
+ {
+ last unless ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ my $is_toplevel = 'not toplevel';
+ $is_toplevel = 'toplevel' if ($element->{'toplevel'});
+ print STDERR "$element ";
+ if ($element->{'index_page'})
+ {
+ print STDERR "index($element->{'id'}, $is_toplevel, doc_nr $element->{'doc_nr'}($element->{'file'})): $element->{'texi'}\n";
+ }
+ elsif ($element->{'node'})
+ {
+ print STDERR "node($element->{'id'}, toc_level $element->{'toc_level'}, $is_toplevel, doc_nr $element->{'doc_nr'}($element->{'file'})) $element->{'texi'}:\n";
+ print STDERR " section_ref: $element->{'section_ref'}->{'texi'}\n" if (defined($element->{'section_ref'}));
+ }
+ elsif ($element->{'footnote'})
+ {
+ print STDERR "footnotes($element->{'id'}, file $element->{'file'})\n";
+ }
+ else
+ {
+ my $number = "UNNUMBERED";
+ $number = $element->{'number'} if ($element->{'number'});
+ print STDERR "$number ($element->{'id'}, $is_toplevel, level $element->{'level'}-$element->{'toc_level'}, doc_nr $element->{'doc_nr'}($element->{'file'})) $element->{'texi'}:\n";
+ print STDERR " node_ref: $element->{'node_ref'}->{'texi'}\n" if (defined($element->{'node_ref'}));
+ }
+
+ if (!$element->{'footnote'})
+ {
+ if (!defined($files{$element->{'file'}}))
+ {
+ die "Bug: files{\$element->{'file'}} undef element $element->{'texi'}, file $element->{'file'}.";
+ }
+ print STDERR " file: $element->{'file'} $files{$element->{'file'}}, counter $files{$element->{'file'}}->{'counter'}\n";
+ }
+ print STDERR " TOP($toplevel) " if ($element->{'top'});
+ print STDERR " u: $element->{'up'}->{'texi'}\n" if (defined($element->{'up'}));
+ print STDERR " ch: $element->{'child'}->{'texi'}\n" if (defined($element->{'child'}));
+ print STDERR " fb: $element->{'fastback'}->{'texi'}\n" if (defined($element->{'fastback'}));
+ print STDERR " b: $element->{'back'}->{'texi'}\n" if (defined($element->{'back'}));
+ print STDERR " p: $element->{'prev'}->{'texi'}\n" if (defined($element->{'prev'}));
+ print STDERR " n: $element->{'sectionnext'}->{'texi'}\n" if (defined($element->{'sectionnext'}));
+ print STDERR " n_u: $element->{'nodeup'}->{'texi'}\n" if (defined($element->{'nodeup'}));
+ print STDERR " f: $element->{'forward'}->{'texi'}\n" if (defined($element->{'forward'}));
+ print STDERR " follow: $element->{'following'}->{'texi'}\n" if (defined($element->{'following'}));
+ print STDERR " m_p: $element->{'menu_prev'}->{'texi'}\n" if (defined($element->{'menu_prev'}));
+ print STDERR " m_n: $element->{'menu_next'}->{'texi'}\n" if (defined($element->{'menu_next'}));
+ print STDERR " m_u: $element->{'menu_up'}->{'texi'}\n" if (defined($element->{'menu_up'}));
+ print STDERR " m_ch: $element->{'menu_child'}->{'texi'}\n" if (defined($element->{'menu_child'}));
+ print STDERR " ff: $element->{'fastforward'}->{'texi'}\n" if (defined($element->{'fastforward'}));
+ if (defined($element->{'menu_up_hash'}))
+ {
+ print STDERR " parent nodes:\n";
+ foreach my $menu_up (keys%{$element->{'menu_up_hash'}})
+ {
+ print STDERR " $menu_up ($element->{'menu_up_hash'}->{$menu_up})\n";
+ }
+ }
+ if (defined($element->{'nodes'}))
+ {
+ print STDERR " nodes: $element->{'nodes'} (@{$element->{'nodes'}})\n";
+ foreach my $node (@{$element->{'nodes'}})
+ {
+ my $beginning = " ";
+ $beginning = " *" if ($node->{'with_section'});
+ my $file = $node->{'file'};
+ $file = "file undef" if (! defined($node->{'file'}));
+ print STDERR "${beginning}$node->{'texi'} $file\n";
+ }
+ }
+ print STDERR " places: $element->{'place'}\n";
+ foreach my $place(@{$element->{'place'}})
+ {
+ if (!$place->{'entry'} and !$place->{'float'} and !$place->{'texi'} and !$place->{'contents'} and !$place->{'shortcontents'})
+ {
+ print STDERR "BUG: unknown placed stuff ========\n";
+ foreach my $key (keys(%$place))
+ {
+ print STDERR "$key: $place->{$key}\n";
+ }
+ print STDERR "==================================\n";
+ }
+ elsif ($place->{'entry'})
+ {
+ print STDERR " index($place): $place->{'entry'}\n";
+ }
+ elsif ($place->{'anchor'})
+ {
+ print STDERR " anchor: $place->{'texi'}\n";
+ }
+ elsif ($place->{'float'})
+ {
+ if (defined($place->{'texi'}))
+ {
+ print STDERR " float($place): $place->{'texi'}\n";
+ }
+ else
+ {
+ print STDERR " float($place): NO LABEL\n";
+ }
+ }
+ elsif ($place->{'contents'})
+ {
+ print STDERR " contents\n";
+ }
+ elsif ($place->{'shortcontents'})
+ {
+ print STDERR " shortcontents\n";
+ }
+ else
+ {
+ print STDERR " heading: $place->{'texi'}\n";
+ }
+ }
+ if ($element->{'indices'})
+ {
+ print STDERR " indices: $element->{'indices'}\n";
+ foreach my $index(@{$element->{'indices'}})
+ {
+ print STDERR " $index: ";
+ foreach my $page (@$index)
+ {
+ print STDERR "'$page->{'element'}->{'texi'}'($page->{'name'}): $page->{'page'} ";
+ }
+ print STDERR "\n";
+ }
+ }
+ }
+ ########################### end debug prints
+}
+
+sub add_file($)
+{
+ my $file = shift;
+ if ($files{$file})
+ {
+ $files{$file}->{'counter'}++;
+ }
+ else
+ {
+ $files{$file} = {
+ #'type' => 'section',
+ 'counter' => 1,
+ 'relative_foot_num' => 1,
+ 'foot_lines' => []
+ };
+ }
+}
+
+# find parent element which is a top element, or a node within the top section
+sub get_top($)
+{
+ my $element = shift;
+ my $up = $element;
+ while (!$up->{'toplevel'} and !$up->{'top'})
+ {
+ $up = $up->{'sectionup'};
+ if (!defined($up))
+ {
+ # If there is no section, it is normal not to have toplevel element,
+ # and it is also the case if there is a low level element before
+ # a top level element
+ return undef;
+ }
+ }
+ return $up;
+}
+
+sub get_node($)
+{
+ my $element = shift;
+ return undef if (!defined($element));
+ return $element if ($element->{'node'});
+ return $element->{'node_ref'} if ($element->{'node_ref'});
+ return $element;
+}
+# get the html names from the texi for all elements
+sub do_names()
+{
+ print STDERR "# Doing ". scalar(keys(%nodes)) . " nodes, ".
+ scalar(keys(%sections)) . " sections in ". $#elements_list .
+ " elements\n" if ($T2H_DEBUG);
+ # for nodes and anchors we haven't any state defined
+ # This seems right, however, as we don't want @refs or @footnotes
+ # or @anchors within nodes, section commands or anchors.
+ foreach my $node (keys(%nodes))
+ {
+ next if ($nodes{$node}->{'index_page'}); # some nodes are index pages.
+ my $texi = &$Texi2HTML::Config::heading_texi($nodes{$node}->{'tag'},
+ $nodes{$node}->{'texi'}, undef);
+ $nodes{$node}->{'text'} = substitute_line ($texi);
+ $nodes{$node}->{'text_nonumber'} = $nodes{$node}->{'text'};
+ # backward compatibility
+ $nodes{$node}->{'name'} = $nodes{$node}->{'text_nonumber'};
+ $nodes{$node}->{'no_texi'} = remove_texi($texi);
+ $nodes{$node}->{'simple_format'} = simple_format(undef, $texi);
+ $nodes{$node}->{'heading_texi'} = $texi;
+ # FIXME : what to do if $nodes{$node}->{'external_node'} and
+ # $nodes{$node}->{'seen'}
+ }
+ foreach my $number (keys(%sections))
+ {
+ my $section = $sections{$number};
+ #$section->{'name'} = substitute_line($section->{'texi'});
+ my $texi = &$Texi2HTML::Config::heading_texi($section->{'tag'}, $section->{'texi'}, $section->{'number'});
+ $section->{'text'} = substitute_line($texi);
+ $section->{'text_nonumber'} = substitute_line($section->{'texi'});
+ # backward compatibility
+ $section->{'name'} = $section->{'text_nonumber'};
+ $section->{'no_texi'} = remove_texi($texi);
+ $section->{'simple_format'} = simple_format(undef,$texi);
+ $section->{'heading_texi'} = $texi;
+ }
+ my $tocnr = 1;
+ foreach my $element (@elements_list)
+ {
+ if (!$element->{'top'} and !$element->{'index_page'})
+ { # for link back to table of contents
+ # FIXME do it for top too?
+ $element->{'tocid'} = 'TOC' . $tocnr;
+ $tocnr++;
+ }
+ next if (defined($element->{'text'}));
+ if ($element->{'index_page'})
+ {
+ my $page = $element->{'page'};
+ my $original_element = $element->{'original_index_element'};
+ my $texi = &$Texi2HTML::Config::index_element_heading_texi(
+ $original_element->{'heading_texi'},
+ $original_element->{'tag'},
+ $original_element->{'texi'},
+ $original_element->{'number'},
+ $page->{'first_letter'}, $page->{'last_letter'});
+ $element->{'heading_texi'} = $texi;
+ $element->{'text'} = substitute_line($texi);
+ $element->{'no_texi'} = remove_texi($texi);
+ $element->{'simple_format'} = simple_format(undef,$texi);
+ }
+ }
+ print STDERR "# Names done\n" if ($T2H_DEBUG);
+}
+
+@{$Texi2HTML::TOC_LINES} = (); # table of contents
+@{$Texi2HTML::OVERVIEW} = (); # short table of contents
+
+
+
+#+++############################################################################
+# #
+# Stuff related to Index generation #
+# #
+#---############################################################################
+
+# called during pass_structure
+sub enter_index_entry($$$$$$$)
+{
+ my $prefix = shift;
+ my $line_nr = shift;
+ my $key = shift;
+ my $place = shift;
+ my $element = shift;
+ my $use_section_id = shift;
+ my $command = shift;
+ unless ($index_prefix_to_name{$prefix})
+ {
+ echo_error ("Undefined index command: ${prefix}index", $line_nr);
+ $key = '';
+ }
+ if (!exists($element->{'tag'}) and !$element->{'footnote'})
+ {
+ echo_warn ("Index entry before document: \@${prefix}index $key", $line_nr);
+ }
+ $key =~ s/\s+$//;
+ $key =~ s/^\s*//;
+ my $entry = $key;
+ # The $key is mostly usefull for alphabetical sorting
+ $key = remove_texi($key);
+ my $id = '';
+ # don't add a specific index target if after a section or the index
+ # entry is in @copying or the like
+ unless ($use_section_id or ($place eq $region_place))
+ {
+ $id = 'IDX' . ++$idx_num;
+ }
+ my $index_entry = {
+ 'entry' => $entry,
+ 'element' => $element,
+ 'prefix' => $prefix,
+ 'label' => $id,
+ 'command' => $command
+ };
+
+ print STDERR "# enter \@$command ${prefix}index '$key' with id $id ($index_entry)\n"
+ if ($T2H_DEBUG & $DEBUG_INDEX);
+ if ($key =~ /^\s*$/)
+ {
+ echo_warn("Empty index entry for \@$command",$line_nr);
+ # don't add the index entry to the list of index entries used for index
+ # entry formatting,if the index entry appears in a region like copying
+ push @index_labels, $index_entry unless ($place eq $region_place);
+ return;
+ }
+ while (exists $index->{$prefix}->{$key})
+ {
+ $key .= ' ';
+ }
+ $index->{$prefix}->{$key} = $index_entry;
+ push @$place, $index_entry;
+ # don't add the index entry to the list of index entries used for index
+ # entry formatting,if the index entry appears in a region like copying
+ push @index_labels, $index_entry unless ($place eq $region_place);
+}
+
+# sort according to cmp if both $a and $b are alphabetical or non alphabetical,
+# otherwise the alphabetical is ranked first
+sub by_alpha
+{
+ if ($a =~ /^[A-Za-z]/)
+ {
+ if ($b =~ /^[A-Za-z]/)
+ {
+ return lc($a) cmp lc($b);
+ }
+ else
+ {
+ return 1;
+ }
+ }
+ elsif ($b =~ /^[A-Za-z]/)
+ {
+ return -1;
+ }
+ else
+ {
+ return lc($a) cmp lc($b);
+ }
+}
+
+# returns an array of index entries pages splitted by letters
+# each page has the following members:
+# 'first_letter' first letter on that page
+# 'last_letter' last letter on that page
+# 'letters' ref on an array with all the letters for that page
+# 'entries_by_letter' ref on a hash. Each key is a letter, with value a ref
+# on arrays of index entries beginning with this letter
+sub get_index_pages($)
+{
+ my $entries = shift;
+ my (@letters);
+ my ($entries_by_letter, $pages, $page) = ({}, [], {});
+ my @keys = sort by_alpha keys %$entries;
+
+ # each index entry is placed according to its first letter in
+ # entries_by_letter
+ for my $key (@keys)
+ {
+ push @{$entries_by_letter->{uc(substr($key,0, 1))}} , $entries->{$key};
+ }
+ @letters = sort by_alpha keys %$entries_by_letter;
+ $Texi2HTML::Config::SPLIT_INDEX = 0 unless $Texi2HTML::Config::SPLIT;
+
+ if ($Texi2HTML::Config::SPLIT_INDEX and $Texi2HTML::Config::SPLIT_INDEX =~ /^\d+$/)
+ {
+ my $i = 0;
+ my ($prev_letter);
+ foreach my $letter (@letters)
+ {
+ if ($i > $Texi2HTML::Config::SPLIT_INDEX)
+ {
+ $page->{'last_letter'} = $prev_letter;
+ push @$pages, $page;
+ $i=0;
+ }
+ if ($i == 0)
+ {
+ $page = {};
+ $page->{'letters'} = [];
+ $page->{'entries_by_letter'} = {};
+ $page->{'first_letter'} = $letter;
+ }
+ push @{$page->{'letters'}}, $letter;
+ $page->{'entries_by_letter'}->{$letter} = [@{$entries_by_letter->{$letter}}];
+ $i += scalar(@{$entries_by_letter->{$letter}});
+ $prev_letter = $letter;
+ }
+ $page->{'last_letter'} = $letters[$#letters];
+ push @$pages, $page;
+ }
+ else
+ {
+ warn "$WARN Bad Texi2HTML::Config::SPLIT_INDEX: $Texi2HTML::Config::SPLIT_INDEX\n" if ($Texi2HTML::Config::SPLIT_INDEX);
+ $page->{'first_letter'} = $letters[0];
+ $page->{'last_letter'} = $letters[$#letters];
+ $page->{'letters'} = \@letters;
+ $page->{'entries_by_letter'} = $entries_by_letter;
+ push @$pages, $page;
+ return $pages;
+ }
+ return $pages;
+}
+
+# return the page and the entries. Cache the result in %indices.
+sub get_index($;$)
+{
+ my $index_name = shift;
+ my $line_nr = shift;
+
+ return (@{$indices{$index_name}}) if ($indices{$index_name});
+
+ unless (exists($index_names{$index_name}))
+ {
+ echo_error ("Bad index name: $index_name", $line_nr);
+ return;
+ }
+ # add the index name itself to the index names searched for index
+ # prefixes. Only those found associated by synindex or syncodeindex are
+ # allready there (unless this code has allready been called).
+ if ($index_names{$index_name}->{'code'})
+ {
+ $index_names{$index_name}->{'associated_indices_code'}->{$index_name} = 1;
+ }
+ else
+ {
+ $index_names{$index_name}->{'associated_indices'}->{$index_name} = 1;
+ }
+
+ # find all the index names associated with the prefixes and then
+ # all the entries associated with each prefix
+ my $entries = {};
+ foreach my $associated_indice(keys %{$index_names{$index_name}->{'associated_indices'}})
+ {
+ foreach my $prefix(@{$index_names{$associated_indice}->{'prefix'}})
+ {
+ foreach my $key (keys %{$index->{$prefix}})
+ {
+ $entries->{$key} = $index->{$prefix}->{$key};
+ }
+ }
+ }
+
+ foreach my $associated_indice (keys %{$index_names{$index_name}->{'associated_indices_code'}})
+ {
+ unless (exists ($index_names{$index_name}->{'associated_indices'}->{$associated_indice}))
+ {
+ foreach my $prefix (@{$index_names{$associated_indice}->{'prefix'}})
+ {
+ foreach my $key (keys (%{$index->{$prefix}}))
+ {
+ $entries->{$key} = $index->{$prefix}->{$key};
+ # use @code for code style index entry
+ $entries->{$key}->{'entry'} = "\@code{$entries->{$key}->{entry}}";
+ }
+ }
+ }
+ }
+
+ return unless %$entries;
+ my $pages = get_index_pages($entries);
+ $indices{$index_name} = [ $pages, $entries ];
+ return ($pages, $entries);
+}
+
+my @foot_lines = (); # footnotes
+my $copying_comment = ''; # comment constructed from text between
+ # @copying and @end copying with licence
+my $to_encoding; # out file encoding
+my %acronyms_like = (); # acronyms or similar commands associated texts
+ # the key are the commands, the values are
+ # hash references associating shorthands to
+ # texts.
+
+sub initialise_state($)
+{
+ my $state = shift;
+ $state->{'preformatted'} = 0 unless exists($state->{'preformatted'});
+ $state->{'code_style'} = 0 unless exists($state->{'code_style'});
+ $state->{'keep_texi'} = 0 unless exists($state->{'keep_texi'});
+ $state->{'keep_nr'} = 0 unless exists($state->{'keep_nr'});
+ $state->{'detailmenu'} = 0 unless exists($state->{'detailmenu'}); # number of opened detailed menus
+ $state->{'table_list_stack'} = [ {'format' => "noformat"} ] unless exists($state->{'table_list_stack'});
+ $state->{'paragraph_style'} = [ '' ] unless exists($state->{'paragraph_style'});
+ $state->{'preformatted_stack'} = [ '' ] unless exists($state->{'preformatted_stack'});
+ $state->{'menu'} = 0 unless exists($state->{'menu'});
+ $state->{'command_stack'} = [] unless exists($state->{'command_stack'});
+ $state->{'quotation_stack'} = [] unless exists($state->{'quotation_stack'});
+ # if there is no $state->{'element'} the first element is used
+ $state->{'element'} = $elements_list[0] unless (exists($state->{'element'}) and !$state->{'element'}->{'before_anything'});
+}
+
+sub pass_text()
+{
+ my %state;
+ initialise_state(\%state);
+ my @stack;
+ my $text;
+ my $doc_nr;
+ my $in_doc = 0;
+ my $element;
+ my @text =();
+ my @section_lines = ();
+ my @head_lines = ();
+ my $one_section = 1 if (@elements_list == 1);
+
+ if (@elements_list == 0)
+ {
+ warn "$WARN empty document\n";
+ exit (0);
+ }
+
+ # We set titlefont only if the titlefont appeared in the top element
+ if (defined($element_top->{'titlefont'}))
+ {
+ $value{'_titlefont'} = $element_top->{'titlefont'};
+ }
+
+ # prepare %Texi2HTML::THISDOC
+# $Texi2HTML::THISDOC{'settitle_texi'} = $value{'_settitle'};
+ $Texi2HTML::THISDOC{'fulltitle_texi'} = '';
+ $Texi2HTML::THISDOC{'title_texi'} = '';
+ foreach my $possible_fulltitle (('_title', '_settitle', '_shorttitlepage', '_titlefont'))
+ {
+ if ($value{$possible_fulltitle} ne '')
+ {
+ $Texi2HTML::THISDOC{'fulltitle_texi'} = $value{$possible_fulltitle};
+ last;
+ }
+ }
+ foreach my $possible_title_texi ($value{'_settitle'}, $Texi2HTML::THISDOC{'fulltitle_texi'})
+ {
+ if ($possible_title_texi ne '')
+ {
+ $Texi2HTML::THISDOC{'title_texi'} = $possible_title_texi;
+ last;
+ }
+ }
+# $Texi2HTML::THISDOC{'fulltitle_texi'} = $value{'_title'} || $value{'_settitle'} || $value{'_shorttitlepage'} || $value{'_titlefont'};
+# $Texi2HTML::THISDOC{'title_texi'} = $value{'_title'} || $value{'_settitle'} || $value{'_shorttitlepage'} || $value{'_titlefont'};
+ foreach my $texi_cmd (('shorttitlepage', 'settitle', 'author',
+ 'titlefont', 'subtitle', 'shorttitle'))
+ {
+ $Texi2HTML::THISDOC{$texi_cmd . '_texi'} = $value{'_' . $texi_cmd};
+ }
+ foreach my $doc_thing (('shorttitlepage', 'settitle', 'author',
+ 'titlefont', 'subtitle', 'shorttitle', 'fulltitle', 'title'))
+ {
+ my $thing_texi = $Texi2HTML::THISDOC{$doc_thing . '_texi'};
+ $Texi2HTML::THISDOC{$doc_thing} = substitute_line($thing_texi);
+ $Texi2HTML::THISDOC{$doc_thing . '_no_texi'} =
+ remove_texi($thing_texi);
+ $Texi2HTML::THISDOC{$doc_thing . '_simple_format'} =
+ simple_format(undef, $thing_texi);
+ }
+
+ # find Top name
+ my $element_top_text = '';
+ my $top_no_texi = '';
+ my $top_simple_format = '';
+ my $top_name;
+ if ($element_top and $element_top->{'text'} and (!$node_top or ($element_top ne $node_top)))
+ {
+ $element_top_text = $element_top->{'text'};
+ $top_no_texi = $element_top->{'no_texi'};
+ $top_simple_format = $element_top->{'simple_format'};
+ }
+ foreach my $possible_top_name ($Texi2HTML::Config::TOP_HEADING,
+ $element_top_text, $Texi2HTML::THISDOC{'title'},
+ $Texi2HTML::THISDOC{'shorttitle'}, &$I('Top'))
+ {
+ if (defined($possible_top_name) and $possible_top_name ne '')
+ {
+ $top_name = $possible_top_name;
+ last;
+ }
+ }
+ foreach my $possible_top_no_texi ($Texi2HTML::Config::TOP_HEADING,
+ $top_no_texi, $Texi2HTML::THISDOC{'title_no_texi'},
+ $Texi2HTML::THISDOC{'shorttitle_no_texi'},
+ &$I('Top',{},{'remove_texi' => 1}))
+ {
+ if (defined($possible_top_no_texi) and $possible_top_no_texi ne '')
+ {
+ $top_no_texi = $possible_top_no_texi;
+ last;
+ }
+ }
+
+ foreach my $possible_top_simple_format ($top_simple_format,
+ $Texi2HTML::THISDOC{'title_simple_format'},
+ $Texi2HTML::THISDOC{'shorttitle_simple_format'},
+ &$I('Top',{}, {'simple_format' => 1}))
+ {
+ if (defined($possible_top_simple_format) and $possible_top_simple_format ne '')
+ {
+ $top_simple_format = $possible_top_simple_format;
+ last;
+ }
+ }
+
+
+# my $top_name = $Texi2HTML::Config::TOP_HEADING || $element_top_text || $Texi2HTML::THISDOC{'title'} || $Texi2HTML::THISDOC{'shorttitle'} || &$I('Top');
+
+ if ($Texi2HTML::THISDOC{'fulltitle_texi'} eq '')
+ {
+ $Texi2HTML::THISDOC{'fulltitle_texi'} = &$I('Untitled Document',{},
+ {'keep_texi' => 1});
+ }
+ $Texi2HTML::THISDOC{'title_texi'} = $Texi2HTML::THISDOC{'settitle_texi'};
+ $Texi2HTML::THISDOC{'title_texi'} = $Texi2HTML::THISDOC{'fulltitle_texi'}
+ if ($Texi2HTML::THISDOC{'title_texi'} eq '');
+
+ foreach my $doc_thing (('fulltitle', 'title'))
+ {
+ my $thing_texi = $Texi2HTML::THISDOC{$doc_thing . '_texi'};
+ $Texi2HTML::THISDOC{$doc_thing} = substitute_line($thing_texi);
+ $Texi2HTML::THISDOC{$doc_thing . '_no_texi'} =
+ remove_texi($thing_texi);
+ $Texi2HTML::THISDOC{$doc_thing . '_simple_format'} =
+ simple_format(undef, $thing_texi);
+ }
+
+ for my $key (keys %Texi2HTML::THISDOC)
+ {
+ next if (ref($Texi2HTML::THISDOC{$key}));
+print STDERR "!!$key\n" if (!defined($Texi2HTML::THISDOC{$key}));
+ $Texi2HTML::THISDOC{$key} =~ s/\s*$//;
+ }
+ $Texi2HTML::THISDOC{'program'} = $THISPROG;
+ $Texi2HTML::THISDOC{'program_homepage'} = $T2H_HOMEPAGE;
+ $Texi2HTML::THISDOC{'program_authors'} = $T2H_AUTHORS;
+ $Texi2HTML::THISDOC{'user'} = $T2H_USER;
+ $Texi2HTML::THISDOC{'user'} = $Texi2HTML::Config::USER if (defined($Texi2HTML::Config::USER));
+# $Texi2HTML::THISDOC{'documentdescription'} = $documentdescription;
+ $Texi2HTML::THISDOC{'copying'} = $copying_comment;
+ $Texi2HTML::THISDOC{'destination_directory'} = $docu_rdir;
+ $Texi2HTML::THISDOC{'authors'} = [] if (!defined($Texi2HTML::THISDOC{'authors'}));
+ $Texi2HTML::THISDOC{'subtitles'} = [] if (!defined($Texi2HTML::THISDOC{'subtitles'}));
+ $Texi2HTML::THISDOC{'titles'} = [] if (!defined($Texi2HTML::THISDOC{'titles'}));
+ foreach my $element (('authors', 'subtitles', 'titles'))
+ {
+ my $i;
+ for ($i = 0; $i < $#{$Texi2HTML::THISDOC{$element}} + 1; $i++)
+ {
+ chomp ($Texi2HTML::THISDOC{$element}->[$i]);
+ $Texi2HTML::THISDOC{$element}->[$i] = substitute_line($Texi2HTML::THISDOC{$element}->[$i]);
+ #print STDERR "$element:$i: $Texi2HTML::THISDOC{$element}->[$i]\n";
+ }
+ }
+ # prepare TOC, OVERVIEW...
+ my ($toc_file, $stoc_file, $foot_file, $about_file);
+ # if not split the references are to the same file
+ $toc_file = $stoc_file = $foot_file = $about_file = '';
+ if ($Texi2HTML::Config::SPLIT)
+ {
+ $toc_file = $docu_toc;
+ $stoc_file = $docu_stoc;
+ if ($Texi2HTML::Config::INLINE_CONTENTS)
+ {
+ $toc_file = $content_element{'contents'}->{'file'} if (defined($content_element{'contents'}));
+ $stoc_file = $content_element{'shortcontents'}->{'file'} if (defined($content_element{'shortcontents'}));
+ }
+ $foot_file = $docu_foot;
+ $about_file = $docu_about;
+ }
+ $Texi2HTML::THISDOC{'toc_file'} = $toc_file;
+ $Texi2HTML::HREF{'Contents'} = $toc_file.'#'.$content_element{'contents'}->{'id'} if @{$Texi2HTML::TOC_LINES};
+ $Texi2HTML::HREF{'Overview'} = $stoc_file.'#'.$content_element{'shortcontents'}->{'id'} if @{$Texi2HTML::OVERVIEW};
+ $Texi2HTML::HREF{'Footnotes'} = $foot_file. '#SEC_Foot';
+ $Texi2HTML::HREF{'About'} = $about_file . '#SEC_About' unless ($one_section or (not $Texi2HTML::Config::SPLIT and not $Texi2HTML::Config::SECTION_NAVIGATION));
+
+ $Texi2HTML::NAME{'First'} = $element_first->{'text'};
+ $Texi2HTML::NAME{'Last'} = $element_last->{'text'};
+ $Texi2HTML::NAME{'About'} = &$I('About This Document');
+ $Texi2HTML::NAME{'Contents'} = &$I('Table of Contents');
+ $Texi2HTML::NAME{'Overview'} = &$I('Short Table of Contents');
+ $Texi2HTML::NAME{'Top'} = $top_name;
+ $Texi2HTML::NAME{'Footnotes'} = &$I('Footnotes');
+ $Texi2HTML::NAME{'Index'} = $element_chapter_index->{'text'} if (defined($element_chapter_index));
+ $Texi2HTML::NAME{'Index'} = $Texi2HTML::Config::INDEX_CHAPTER if ($Texi2HTML::Config::INDEX_CHAPTER ne '');
+
+ $Texi2HTML::NO_TEXI{'First'} = $element_first->{'no_texi'};
+ $Texi2HTML::NO_TEXI{'Last'} = $element_last->{'no_texi'};
+ $Texi2HTML::NO_TEXI{'About'} = &$I('About This Document', {}, {'remove_texi' => 1} );
+ $Texi2HTML::NO_TEXI{'Contents'} = &$I('Table of Contents', {}, {'remove_texi' => 1} );
+ $Texi2HTML::NO_TEXI{'Overview'} = &$I('Short Table of Contents', {}, {'remove_texi' => 1} );
+ $Texi2HTML::NO_TEXI{'Top'} = $top_no_texi;
+ $Texi2HTML::NO_TEXI{'Footnotes'} = &$I('Footnotes', {}, {'remove_texi' => 1} );
+ $Texi2HTML::NO_TEXI{'Index'} = $element_chapter_index->{'no_texi'} if (defined($element_chapter_index));
+
+ $Texi2HTML::SIMPLE_TEXT{'First'} = $element_first->{'simple_format'};
+ $Texi2HTML::SIMPLE_TEXT{'Last'} = $element_last->{'simple_format'};
+ $Texi2HTML::SIMPLE_TEXT{'About'} = &$I('About This Document', {}, {'simple_format' => 1});
+ $Texi2HTML::SIMPLE_TEXT{'Contents'} = &$I('Table of Contents',{}, {'simple_format' => 1});
+ $Texi2HTML::SIMPLE_TEXT{'Overview'} = &$I('Short Table of Contents', {}, {'simple_format' => 1});
+ $Texi2HTML::SIMPLE_TEXT{'Top'} = $top_simple_format;
+ $Texi2HTML::SIMPLE_TEXT{'Footnotes'} = &$I('Footnotes', {},{'simple_format' => 1});
+
+ $Texi2HTML::SIMPLE_TEXT{'Index'} = $element_chapter_index->{'simple_format'} if (defined($element_chapter_index));
+ # must be after toc_body, but before titlepage
+ for my $element_tag ('contents', 'shortcontents')
+ {
+ my $toc_lines = &$Texi2HTML::Config::inline_contents(undef, $element_tag, $content_element{$element_tag});
+ @{$Texi2HTML::THISDOC{'inline_contents'}->{$element_tag}} = @$toc_lines if (defined($toc_lines));
+ }
+ $Texi2HTML::TITLEPAGE = '';
+ $Texi2HTML::TITLEPAGE = substitute_text({}, @{$region_lines{'titlepage'}})
+ if (@{$region_lines{'titlepage'}});
+ &$Texi2HTML::Config::titlepage();
+
+ &$Texi2HTML::Config::init_out();
+ $to_encoding = $Texi2HTML::Config::OUT_ENCODING;
+
+ ############################################################################
+ # print frame and frame toc file
+ #
+ if ( $Texi2HTML::Config::FRAMES )
+ {
+ my $FH = open_out($docu_frame_file);
+ print STDERR "# Creating frame in $docu_frame_file ...\n" if $T2H_VERBOSE;
+ &$Texi2HTML::Config::print_frame($FH, $docu_toc_frame_file, $docu_top_file);
+ close_out($FH, $docu_frame_file);
+
+ $FH = open_out($docu_toc_frame_file);
+ print STDERR "# Creating toc frame in $docu_frame_file ...\n" if $T2H_VERBOSE;
+ &$Texi2HTML::Config::print_toc_frame($FH, $Texi2HTML::OVERVIEW);
+ close_out($FH, $docu_toc_frame_file);
+ }
+
+ ############################################################################
+ #
+ #
+
+ my $FH;
+ my $index_pages;
+ my $index_pages_nr;
+ my $index_nr = 0;
+ my $line_nr;
+ my $first_section = 0; # 1 if it is the first section of a page
+ while (@doc_lines)
+ {
+ unless ($index_pages)
+ { # not in a index split over sections
+ $_ = shift @doc_lines;
+ my $chomped_line = $_;
+ if (!chomp($chomped_line) and @doc_lines)
+ { # if the line has no end of line it is concatenated with the next
+ $doc_lines[0] = $_ . $doc_lines[0];
+ next;
+ }
+ $line_nr = shift (@doc_numbers);
+ #print STDERR "$line_nr->{'file_name'}($line_nr->{'macro'},$line_nr->{'line_nr'}) $_" if ($line_nr);
+ }
+ #print STDERR "PASS_TEXT: $_";
+ #dump_stack(\$text, \@stack, \%state);
+ if (!$state{'raw'} and !$state{'verb'})
+ {
+ my $tag = '';
+ $tag = $1 if (/^\@(\w+)/ and !$index_pages);
+
+ if (($tag eq 'node') or defined($sec2level{$tag}) or $index_pages)
+ {
+ if (@stack or (defined($text) and $text ne ''))
+ {# in pass text node and section shouldn't appear in formats
+ #print STDERR "close_stack before \@$tag\n";
+ #print STDERR "text!$text%" if (! @stack);
+ close_stack(\$text, \@stack, \%state, $line_nr);
+ push @section_lines, $text;
+ $text = '';
+ }
+ $sec_num++ if ($sec2level{$tag});
+ my $new_element;
+ my $current_element;
+ if ($tag =~ /heading/)
+ {# handle headings, they are not in element lists
+ $current_element = $sections{$sec_num};
+ #print STDERR "HEADING $_";
+ if (! $element)
+ {
+ $new_element = shift @elements_list;
+ }
+ else
+ {
+ push (@section_lines, &$Texi2HTML::Config::anchor($current_element->{'id'}) . "\n");
+ push @section_lines, &$Texi2HTML::Config::heading($current_element);
+ next;
+ }
+ }
+ elsif (!$index_pages)
+ {# handle node and structuring elements
+ $current_element = shift (@all_elements);
+ ########################## begin debug section
+ if ($current_element->{'node'})
+ {
+ print STDERR 'NODE ' . "$current_element->{'texi'}($current_element->{'file'})" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ print STDERR "($current_element->{'section_ref'}->{'texi'})" if ($current_element->{'section_ref'} and ($T2H_DEBUG & $DEBUG_ELEMENTS));
+ }
+ else
+ {
+ print STDERR 'SECTION ' . $current_element->{'texi'} if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ }
+ print STDERR ": $_" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ ########################## end debug section
+
+ # The element begins a new section if there is no previous
+ # or it is an element and not the current one or the
+ # associated section (in case of node) is not the current
+ # one
+ if (!$element
+ or ($current_element->{'element'} and ($current_element ne $element))
+ or ($current_element->{'section_ref'} and ($current_element->{'section_ref'} ne $element)))
+ {
+ $new_element = shift @elements_list;
+ }
+ ########################### begin debug
+ my $section_element = $new_element;
+ $section_element = $element unless ($section_element);
+ if (!$current_element->{'node'} and !$current_element->{'index_page'} and ($section_element ne $current_element))
+ {
+ print STDERR "NODE: $element->{'texi'}\n" if ($element->{'node'});
+ warn "elements_list and all_elements not in sync (elements $section_element->{'texi'}, all $current_element->{'texi'}): $_";
+ }
+ ########################### end debug
+ }
+ else
+ { # this is a new index section
+ $new_element = $index_pages->[$index_pages_nr]->{'element'};
+ $current_element = $index_pages->[$index_pages_nr]->{'element'};
+ print STDERR "New index page '$new_element->{'texi'}' nr: $index_pages_nr\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ my $list_element = shift @elements_list;
+ die "element in index_pages $new_element->{'texi'} and in list $list_element->{'texi'} differs\n" unless ($list_element eq $new_element);
+ }
+ if ($new_element)
+ {
+ $index_nr = 0;
+ my $old = 'NO_OLD';
+ $old = $element->{'texi'} if (defined($element));
+ print STDERR "NEW: $new_element->{'texi'}, OLD: $old\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ # print the element that just finished
+ $Texi2HTML::THIS_SECTION = \@section_lines;
+ $Texi2HTML::THIS_HEADER = \@head_lines;
+ if ($element)
+ {
+ finish_element($FH, $element, $new_element, $first_section);
+ $first_section = 0;
+ @section_lines = ();
+ @head_lines = ();
+ }
+ else
+ {
+ print STDERR "# Writing elements:" if ($T2H_VERBOSE);
+ if ($Texi2HTML::Config::IGNORE_PREAMBLE_TEXT)
+ {
+ @section_lines = ();
+ @head_lines = ();
+ }
+ # remove empty line at the beginning of @section_lines
+ shift @section_lines while (@section_lines and ($section_lines[0] =~ /^\s*$/));
+ }
+ # begin new element
+ my $previous_file;
+ $previous_file = $element->{'file'} if (defined($element));
+ $element = $new_element;
+ $state{'element'} = $element;
+ $Texi2HTML::THIS_ELEMENT = $element;
+ #print STDERR "Doing hrefs for $element->{'texi'} First ";
+ $Texi2HTML::HREF{'First'} = href($element_first, $element->{'file'});
+ #print STDERR "Last ";
+ $Texi2HTML::HREF{'Last'} = href($element_last, $element->{'file'});
+ #print STDERR "Index ";
+ $Texi2HTML::HREF{'Index'} = href($element_chapter_index, $element->{'file'}) if (defined($element_chapter_index));
+ #print STDERR "Top ";
+ $Texi2HTML::HREF{'Top'} = href($element_top, $element->{'file'});
+ if ($Texi2HTML::Config::INLINE_CONTENTS)
+ {
+ $Texi2HTML::HREF{'Contents'} = href($content_element{'contents'}, $element->{'file'});
+ $Texi2HTML::HREF{'Overview'} = href($content_element{'shortcontents'}, $element->{'file'});
+ }
+ foreach my $direction (@element_directions)
+ {
+ my $elem = $element->{$direction};
+ $Texi2HTML::NODE{$direction} = undef;
+ $Texi2HTML::HREF{$direction} = undef;
+ next unless (defined($elem));
+ #print STDERR "$direction ";
+ if ($elem->{'node'} or $elem->{'external_node'} or $elem->{'index_page'} or !$elem->{'seen'})
+ {
+ $Texi2HTML::NODE{$direction} = $elem->{'text'};
+ }
+ elsif ($elem->{'node_ref'})
+ {
+ $Texi2HTML::NODE{$direction} = $elem->{'node_ref'}->{'text'};
+ }
+ if (!$elem->{'seen'})
+ {
+ $Texi2HTML::HREF{$direction} = do_external_href($elem->{'texi'});
+ }
+ else
+ {
+ $Texi2HTML::HREF{$direction} = href($elem, $element->{'file'});
+ }
+ $Texi2HTML::NAME{$direction} = $elem->{'text'};
+ $Texi2HTML::NO_TEXI{$direction} = $elem->{'no_texi'};
+ $Texi2HTML::SIMPLE_TEXT{$direction} = $elem->{'simple_format'};
+ #print STDERR "$direction ($element->{'texi'}): \n NO_TEXI: $Texi2HTML::NO_TEXI{$direction}\n NAME $Texi2HTML::NAME{$direction}\n NODE $Texi2HTML::NODE{$direction}\n HREF $Texi2HTML::HREF{$direction}\n\n";
+ }
+ #print STDERR "\nDone hrefs for $element->{'texi'}\n";
+ $files{$element->{'file'}}->{'counter'}--;
+ if (!defined($previous_file) or ($element->{'file'} ne $previous_file))
+ {
+ my $file = $element->{'file'};
+ print STDERR "\n" if ($T2H_VERBOSE and !$T2H_DEBUG);
+ print STDERR "# Writing to $docu_rdir$file " if $T2H_VERBOSE;
+ my $do_page_head = 0;
+ if ($files{$file}->{'filehandle'})
+ {
+ $FH = $files{$file}->{'filehandle'};
+ }
+ else
+ {
+ $FH = open_out("$docu_rdir$file");
+#print STDERR "OPEN $docu_rdir$file, $FH". scalar($FH)."\n";
+ $files{$file}->{'filehandle'} = $FH;
+ $do_page_head = 1;
+ }
+ if ($element->{'top'})
+ {
+ &$Texi2HTML::Config::print_Top_header($FH, $do_page_head);
+ }
+ else
+ {
+ &$Texi2HTML::Config::print_page_head($FH) if ($do_page_head);
+ &$Texi2HTML::Config::print_chapter_header($FH) if $Texi2HTML::Config::SPLIT eq 'chapter';
+ &$Texi2HTML::Config::print_section_header($FH) if $Texi2HTML::Config::SPLIT eq 'section';
+ }
+ $first_section = 1;
+ }
+ print STDERR "." if ($T2H_VERBOSE);
+ print STDERR "\n" if ($T2H_DEBUG);
+ }
+ my $label = &$Texi2HTML::Config::anchor($current_element->{'id'}) . "\n";
+ if (@section_lines)
+ {
+ push (@section_lines, $label);
+ }
+ else
+ {
+ push @head_lines, $label;
+ }
+ if ($index_pages)
+ {
+ push @section_lines, &$Texi2HTML::Config::heading($element);
+ #print STDERR "Do index page $index_pages_nr\n";
+ my $page = do_index_page($index_pages, $index_pages_nr);
+ push @section_lines, $page;
+ if (defined ($index_pages->[$index_pages_nr + 1]))
+ {
+ $index_pages_nr++;
+ }
+ else
+ {
+ $index_pages = undef;
+ }
+ next;
+ }
+ push @section_lines, &$Texi2HTML::Config::heading($current_element) if ($current_element->{'element'} and !$current_element->{'top'});
+ next;
+ }
+ elsif ($tag eq 'printindex')
+ {
+ s/\s+(\w+)\s*//;
+ my $name = $1;
+ close_paragraph(\$text, \@stack, \%state);
+ next if (!$index_names{$name} or $empty_indices{$name});
+ $printed_indices{$name} = 1;
+ print STDERR "print index $name($index_nr) in `$element->{'texi'}', element->{'indices'}: $element->{'indices'},\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS or $T2H_DEBUG & $DEBUG_INDEX);
+ print STDERR "element->{'indices'}->[index_nr]: $element->{'indices'}->[$index_nr] (@{$element->{'indices'}->[$index_nr]})\n" if ($T2H_DEBUG & $DEBUG_ELEMENTS or $T2H_DEBUG & $DEBUG_INDEX);
+ $index_pages = $element->{'indices'}->[$index_nr] if (@{$element->{'indices'}->[$index_nr]} > 1);
+ $index_pages_nr = 0;
+ add_prev(\$text, \@stack, do_index_page($element->{'indices'}->[$index_nr], 0));
+ $index_pages_nr++;
+ $index_nr++;
+ begin_paragraph (\@stack, \%state) if ($state{'preformatted'});
+ next if (@stack);
+ push @section_lines, $text;
+ $text = '';
+ next;
+ }
+ elsif (($tag eq 'contents') or ($tag eq 'summarycontents') or ($tag eq 'shortcontents'))
+ {
+ my $element_tag = $tag;
+ $element_tag = 'shortcontents' if ($element_tag ne 'contents');
+ if ($Texi2HTML::Config::INLINE_CONTENTS and !$content_element{$element_tag}->{'aftertitlepage'})
+ {
+ if (@stack or (defined($text) and $text ne ''))
+ {# in pass text contents shouldn't appear in formats
+ close_stack(\$text, \@stack, \%state, $line_nr);
+ push @section_lines, $text;
+ $text = '';
+ }
+ my $toc_lines = &$Texi2HTML::Config::inline_contents($FH, $tag, $content_element{$element_tag});
+ push (@section_lines, @$toc_lines) if (defined($toc_lines)) ;
+ }
+ next;
+ }
+ }
+ scan_line($_, \$text, \@stack, \%state, $line_nr);
+ #print STDERR "after scan_line: $_";
+ #dump_stack(\$text, \@stack, \%state);
+ next if (@stack);
+ if ($text ne '' )
+ {
+ push @section_lines, $text;
+ $text = '';
+ }
+ }
+ if (@stack)
+ {# close stack at the end of pass text
+ close_stack(\$text, \@stack, \%state, $line_nr);
+ }
+ if (defined($text))
+ {
+ push @section_lines, $text;
+ }
+ print STDERR "\n" if ($T2H_VERBOSE);
+
+ $Texi2HTML::THIS_SECTION = \@section_lines;
+ # if no sections, then simply print document as is
+ if ($one_section)
+ {
+ if (@foot_lines)
+ {
+ &$Texi2HTML::Config::foot_section (\@foot_lines);
+ push @section_lines, @foot_lines;
+ }
+ $Texi2HTML::THIS_HEADER = \@head_lines;
+ if ($element->{'top'})
+ {
+ print STDERR "Bug: `$element->{'texi'}' level undef\n" if (!$element->{'node'} and !defined($element->{'level'}));
+ $element->{'level'} = 1 if (!defined($element->{'level'}));
+ $element->{'node'} = 0; # otherwise Texi2HTML::Config::heading may uses the node level
+ $element->{'text'} = $Texi2HTML::NAME{'Top'};
+ print STDERR "[Top]" if ($T2H_VERBOSE);
+ unless ($element->{'titlefont'} or $element->{'index_page'})
+ {
+ unshift @section_lines, &$Texi2HTML::Config::heading($element);
+ }
+ }
+ print STDERR "# Write the section $element->{'texi'}\n" if ($T2H_VERBOSE);
+ &$Texi2HTML::Config::one_section($FH);
+ close_out($FH);
+ return;
+ }
+
+ finish_element ($FH, $element, undef, $first_section);
+
+ ############################################################################
+ # Print ToC, Overview, Footnotes
+ #
+ foreach my $direction (@element_directions)
+ {
+ $Texi2HTML::HREF{$direction} = undef;
+ delete $Texi2HTML::HREF{$direction};
+ # it is better to undef in case the references to these hash entries
+ # are used, as if deleted, the
+ # references are still refering to the old, undeleted element
+ # (we could do both)
+ $Texi2HTML::NAME{$direction} = undef;
+ $Texi2HTML::NO_TEXI{$direction} = undef;
+ $Texi2HTML::SIMPLE_TEXT{$direction} = undef;
+ $Texi2HTML::NODE{$direction} = undef;
+
+ $Texi2HTML::THIS_ELEMENT = undef;
+ }
+ if (@foot_lines)
+ {
+ print STDERR "# writing Footnotes in $docu_foot_file\n" if $T2H_VERBOSE;
+ $FH = open_out ($docu_foot_file)
+ if $Texi2HTML::Config::SPLIT;
+ $Texi2HTML::HREF{'This'} = $Texi2HTML::HREF{'Footnotes'};
+ $Texi2HTML::HREF{'Footnotes'} = '#' . $footnote_element->{'id'};
+ $Texi2HTML::NAME{'This'} = $Texi2HTML::NAME{'Footnotes'};
+ $Texi2HTML::NO_TEXI{'This'} = $Texi2HTML::NO_TEXI{'Footnotes'};
+ $Texi2HTML::SIMPLE_TEXT{'This'} = $Texi2HTML::SIMPLE_TEXT{'Footnotes'};
+ $Texi2HTML::THIS_SECTION = \@foot_lines;
+ $Texi2HTML::THIS_HEADER = [ &$Texi2HTML::Config::anchor($footnote_element->{'id'}) . "\n" ];
+ &$Texi2HTML::Config::print_Footnotes($FH);
+ close_out($FH, $docu_foot_file)
+ if ($Texi2HTML::Config::SPLIT);
+ $Texi2HTML::HREF{'Footnotes'} = $Texi2HTML::HREF{'This'};
+ }
+
+ if (@{$Texi2HTML::TOC_LINES} and !$Texi2HTML::Config::INLINE_CONTENTS)
+ {
+ print STDERR "# writing Toc in $docu_toc_file\n" if $T2H_VERBOSE;
+ $FH = open_out ($docu_toc_file)
+ if $Texi2HTML::Config::SPLIT;
+ $Texi2HTML::HREF{'This'} = $Texi2HTML::HREF{'Contents'};
+ $Texi2HTML::HREF{'Contents'} = "#SEC_Contents";
+ $Texi2HTML::NAME{'This'} = $Texi2HTML::NAME{'Contents'};
+ $Texi2HTML::NO_TEXI{'This'} = $Texi2HTML::NO_TEXI{'Contents'};
+ $Texi2HTML::SIMPLE_TEXT{'This'} = $Texi2HTML::SIMPLE_TEXT{'Contents'};
+ $Texi2HTML::THIS_SECTION = $Texi2HTML::TOC_LINES;
+ $Texi2HTML::THIS_HEADER = [ &$Texi2HTML::Config::anchor("SEC_Contents") . "\n" ];
+ &$Texi2HTML::Config::print_Toc($FH);
+ close_out($FH, $docu_toc_file)
+ if ($Texi2HTML::Config::SPLIT);
+ $Texi2HTML::HREF{'Contents'} = $Texi2HTML::HREF{'This'};
+ }
+
+ if (@{$Texi2HTML::OVERVIEW} and !$Texi2HTML::Config::INLINE_CONTENTS)
+ {
+ print STDERR "# writing Overview in $docu_stoc_file\n" if $T2H_VERBOSE;
+ $FH = open_out ($docu_stoc_file)
+ if $Texi2HTML::Config::SPLIT;
+ $Texi2HTML::HREF{This} = $Texi2HTML::HREF{Overview};
+ $Texi2HTML::HREF{Overview} = "#SEC_Overview";
+ $Texi2HTML::NAME{This} = $Texi2HTML::NAME{Overview};
+ $Texi2HTML::NO_TEXI{This} = $Texi2HTML::NO_TEXI{Overview};
+ $Texi2HTML::SIMPLE_TEXT{This} = $Texi2HTML::SIMPLE_TEXT{Overview};
+ $Texi2HTML::THIS_SECTION = $Texi2HTML::OVERVIEW;
+ $Texi2HTML::THIS_HEADER = [ &$Texi2HTML::Config::anchor("SEC_Overview") . "\n" ];
+ &$Texi2HTML::Config::print_Overview($FH);
+ close_out($FH,$docu_stoc_file)
+ if ($Texi2HTML::Config::SPLIT);
+ $Texi2HTML::HREF{Overview} = $Texi2HTML::HREF{This};
+ }
+ my $about_body;
+ if ($about_body = &$Texi2HTML::Config::about_body())
+ {
+ print STDERR "# writing About in $docu_about_file\n" if $T2H_VERBOSE;
+ $FH = open_out ($docu_about_file)
+ if $Texi2HTML::Config::SPLIT;
+
+ $Texi2HTML::HREF{This} = $Texi2HTML::HREF{About};
+ $Texi2HTML::HREF{About} = "#SEC_About";
+ $Texi2HTML::NAME{This} = $Texi2HTML::NAME{About};
+ $Texi2HTML::NO_TEXI{This} = $Texi2HTML::NO_TEXI{About};
+ $Texi2HTML::SIMPLE_TEXT{This} = $Texi2HTML::SIMPLE_TEXT{About};
+ $Texi2HTML::THIS_SECTION = [$about_body];
+ $Texi2HTML::THIS_HEADER = [ &$Texi2HTML::Config::anchor("SEC_About") . "\n" ];
+ &$Texi2HTML::Config::print_About($FH);
+ close_out($FH, $docu_stoc_file)
+ if ($Texi2HTML::Config::SPLIT);
+ $Texi2HTML::HREF{About} = $Texi2HTML::HREF{This};
+ }
+
+ unless ($Texi2HTML::Config::SPLIT)
+ {
+ &$Texi2HTML::Config::print_page_foot($FH);
+ close_out ($FH);
+ }
+}
+
+# print section, close file if needed.
+sub finish_element($$$$)
+{
+ my $FH = shift;
+ my $element = shift;
+ my $new_element = shift;
+ my $first_section = shift;
+#print STDERR "FINISH_ELEMENT($FH)($element->{'texi'})[$element->{'file'}] counter $files{$element->{'file'}}->{'counter'}\n";
+
+ # handle foot notes
+ if ($Texi2HTML::Config::SPLIT and scalar(@foot_lines)
+ and !$Texi2HTML::Config::SEPARATED_FOOTNOTES
+ and (! $new_element or
+ ($element and ($new_element->{'file'} ne $element->{'file'})))
+ )
+ {
+ if ($files{$element->{'file'}}->{'counter'})
+ {# there are other elements in that page we are not on its foot
+ $files{$element->{'file'}}->{'relative_foot_num'}
+ = $relative_foot_num;
+ push @{$files{$element->{'file'}}->{'foot_lines'}},
+ @foot_lines;
+ }
+ else
+ {# we output the footnotes as we are at the file end
+ unshift @foot_lines, @{$files{$element->{'file'}}->{'foot_lines'}};
+ &$Texi2HTML::Config::foot_section (\@foot_lines);
+ push @{$Texi2HTML::THIS_SECTION}, @foot_lines;
+ }
+ if ($new_element)
+ {
+ $relative_foot_num =
+ $files{$new_element->{'file'}}->{'relative_foot_num'};
+ }
+ @foot_lines = ();
+ }
+ if ($element->{'top'})
+ {
+ my $top_file = $docu_top_file;
+ #print STDERR "TOP $element->{'texi'}, @section_lines\n";
+ print STDERR "[Top]" if ($T2H_VERBOSE);
+ $Texi2HTML::HREF{'Top'} = href($element_top, $element->{'file'});
+ &$Texi2HTML::Config::print_Top($FH, ($element->{'titlefont'} or $element->{'index_page'}));
+ my $end_page = 0;
+ if ($Texi2HTML::Config::SPLIT)
+ {
+ if (!$files{$element->{'file'}}->{'counter'})
+ {
+ $end_page = 1;
+ }
+ }
+ &$Texi2HTML::Config::print_Top_footer($FH, $end_page);
+ close_out($FH, $top_file) if ($end_page);
+ }
+ else
+ {
+ print STDERR "# do element $element->{'texi'}\n"
+ if ($T2H_DEBUG & $DEBUG_ELEMENTS);
+ &$Texi2HTML::Config::print_section($FH, $first_section);
+ if (defined($new_element) and ($new_element->{'file'} ne $element->{'file'}))
+ {
+ if (!$files{$element->{'file'}}->{'counter'})
+ {
+ &$Texi2HTML::Config::print_chapter_footer($FH) if ($Texi2HTML::Config::SPLIT eq 'chapter');
+ &$Texi2HTML::Config::print_section_footer($FH) if ($Texi2HTML::Config::SPLIT eq 'section');
+ #print STDERR "Close file after $element->{'texi'}\n";
+ &$Texi2HTML::Config::print_page_foot($FH);
+ close_out($FH);
+ }
+ else
+ {
+ print STDERR "counter $files{$element->{'file'}}->{'counter'} ne 0, file $element->{'file'}\n" if ($T2H_DEBUG);
+ }
+ }
+ elsif (!defined($new_element))
+ {
+ if ($Texi2HTML::Config::SPLIT)
+ { # end of last splitted section
+ &$Texi2HTML::Config::print_chapter_footer($FH) if ($Texi2HTML::Config::SPLIT eq 'chapter');
+ &$Texi2HTML::Config::print_section_footer($FH) if ($Texi2HTML::Config::SPLIT eq 'section');
+ &$Texi2HTML::Config::print_page_foot($FH);
+ close_out($FH);
+ }
+ else
+ {
+ &$Texi2HTML::Config::end_section($FH, 1);
+ }
+ }
+ elsif ($new_element->{'top'})
+ {
+ &$Texi2HTML::Config::end_section($FH, 1);
+ }
+ else
+ {
+ &$Texi2HTML::Config::end_section($FH);
+ }
+ }
+}
+
+# write to files with name the node name for cross manual references.
+sub do_node_files()
+{
+ foreach my $key (keys(%nodes))
+ {
+ my $node = $nodes{$key};
+ next unless ($node->{'node_file'});
+ my $redirection_file = $docu_doc;
+ $redirection_file = $node->{'file'} if ($Texi2HTML::Config::SPLIT);
+ if (!$redirection_file)
+ {
+ print STDERR "Bug: file for redirection for `$node->{'texi'}' don't exist\n" unless ($novalidate);
+ next;
+ }
+ next if ($redirection_file eq $node->{'node_file'});
+ my $file = "${docu_rdir}$node->{'node_file'}";
+ $Texi2HTML::NODE{'This'} = $node->{'text'};
+ $Texi2HTML::NO_TEXI{'This'} = $node->{'no_texi'};
+ $Texi2HTML::SIMPLE_TEXT{'This'} = $node->{'simple_format'};
+ $Texi2HTML::NAME{'This'} = $node->{'text'};
+ $Texi2HTML::HREF{'This'} = "$node->{'file'}#$node->{'id'}";
+ my $NODEFILE = open_out ($file);
+ &$Texi2HTML::Config::print_redirection_page ($NODEFILE);
+ close $NODEFILE || die "$ERROR: Can't close $file: $!\n";
+ }
+}
+
+#+++############################################################################
+# #
+# Low level functions #
+# #
+#---############################################################################
+
+sub locate_include_file($)
+{
+ my $file = shift;
+
+ # APA: Don't implicitely search ., to conform with the docs!
+ # return $file if (-e $file && -r $file);
+ foreach my $dir (@Texi2HTML::Config::INCLUDE_DIRS)
+ {
+ return "$dir/$file" if (-e "$dir/$file" && -r "$dir/$file");
+ }
+ return undef;
+}
+
+sub open_file($$)
+{
+ my $name = shift;
+ my $line_number = shift;
+ local *FH;
+ if (open(*FH, "<$name"))
+ {
+ if (defined($Texi2HTML::Config::IN_ENCODING) and $Texi2HTML::Config::USE_UNICODE)
+ {
+ binmode(*FH, ":encoding($Texi2HTML::Config::IN_ENCODING)");
+ }
+ my $file = { 'fh' => *FH,
+ 'input_spool' => { 'spool' => [],
+ 'macro' => '' },
+ 'name' => $name,
+ 'line_nr' => 0 };
+ unshift(@fhs, $file);
+ $input_spool = $file->{'input_spool'};
+ $line_number->{'file_name'} = $name;
+ $line_number->{'line_nr'} = 1;
+ }
+ else
+ {
+ warn "$ERROR Can't read file $name: $!\n";
+ }
+}
+
+sub open_out($)
+{
+ my $file = shift;
+ local *FILE;
+ if ($file eq '-')
+ {
+ binmode(STDOUT, ":encoding($to_encoding)") if (defined($to_encoding) and $Texi2HTML::Config::USE_UNICODE);
+ return \*STDOUT;
+ }
+
+ unless (open(FILE, ">$file"))
+ {
+ die "$ERROR Can't open $file for writing: $!\n";
+ }
+ if (defined($to_encoding) and $Texi2HTML::Config::USE_UNICODE)
+ {
+ if ($to_encoding eq 'utf8' or $to_encoding eq 'utf-8-strict')
+ {
+ binmode(FILE, ':utf8');
+ }
+ else
+ {
+ binmode(FILE, ':bytes');
+ }
+ binmode(FILE, ":encoding($to_encoding)");
+ }
+ return *FILE;
+}
+
+# FIXME not used when split
+sub close_out($;$)
+{
+ my $FH = shift;
+ my $file = shift;
+ $file = '' if (!defined($file));
+ return if ($Texi2HTML::Config::OUT eq '');
+ close ($FH) || die "$ERROR: Error occurred when closing $file: $!\n";
+}
+
+sub next_line($)
+{
+ my $line_number = shift;
+ while (@fhs)
+ {
+ my $file = $fhs[0];
+ $line_number->{'file_name'} = $file->{'name'};
+ $input_spool = $file->{'input_spool'};
+ if (@{$input_spool->{'spool'}})
+ {
+ $line_number->{'macro'} = $file->{'input_spool'}->{'macro'};
+ $line_number->{'line_nr'} = $file->{'line_nr'};
+ my $line = shift(@{$input_spool->{'spool'}});
+ print STDERR "# unspooling $line" if ($T2H_DEBUG & $DEBUG_MACROS);
+ return($line);
+ }
+ else
+ {
+ $file->{'input_spool'}->{'macro'} = '';
+ $line_number->{'macro'} = '';
+ }
+ my $fh = $file->{'fh'};
+ no strict "refs";
+ my $line = <$fh>;
+ use strict "refs";
+ my $chomped_line = $line;
+ $file->{'line_nr'}++ if (defined($line) and chomp($chomped_line));
+ $line_number->{'line_nr'} = $file->{'line_nr'};
+ return($line) if (defined($line));
+ no strict "refs";
+ close($fh);
+ use strict "refs";
+ shift(@fhs);
+ }
+ return(undef);
+}
+
+# echo a warning
+sub echo_warn($;$)
+{
+ my $text = shift;
+ chomp ($text);
+ my $line_number = shift;
+ warn "$WARN $text " . format_line_number($line_number) . "\n";
+}
+
+sub echo_error($;$)
+{
+ my $text = shift;
+ chomp ($text);
+ my $line_number = shift;
+ warn "$ERROR $text " . format_line_number($line_number) . "\n";
+}
+
+sub format_line_number($)
+{
+ my $line_number = shift;
+ my $macro_text = '';
+ #$line_number = undef;
+ return '' unless (defined($line_number));
+ $macro_text = " in $line_number->{'macro'}" if ($line_number->{'macro'} ne '');
+ my $file_text = '(';
+ $file_text = "(in $line_number->{'file_name'} " if ($line_number->{'file_name'} ne $docu);
+ return "${file_text}l. $line_number->{'line_nr'}" . $macro_text . ')';
+}
+
+# to debug, dump the result of pass_texi and pass_structure in a file
+sub dump_texi($$;$$)
+{
+ my $lines = shift;
+ my $pass = shift;
+ my $numbers = shift;
+ my $file = shift;
+ $file = "$docu_rdir$docu_name" . ".pass$pass" if (!defined($file));
+ unless (open(DMPTEXI, ">$file"))
+ {
+ warn "Can't open $file for writing: $!\n";
+ }
+ print STDERR "# Dump texi\n" if ($T2H_VERBOSE);
+ my $index = 0;
+ foreach my $line (@$lines)
+ {
+ my $number_information = '';
+ my $chomped_line = $line;
+ $number_information = "$numbers->[$index]->{'file_name'}($numbers->[$index]->{'macro'},$numbers->[$index]->{'line_nr'}) " if (defined($numbers));
+ print DMPTEXI "${number_information}$line";
+ $index++ if (chomp($chomped_line));
+ }
+ close DMPTEXI;
+}
+
+# return next tag on the line
+sub next_tag($)
+{
+ my $line = shift;
+ # macro_regexp
+ if ($line =~ /^\s*\@(["'~\@\}\{,\.!\?\s\*\-\^`=:\|\/])/o or $line =~ /^\s*\@([a-zA-Z][\w-]*)([\s\{\}\@])/ or $line =~ /^\s*\@([a-zA-Z][\w-]*)$/)
+ {
+ return ($1);
+ }
+ return '';
+}
+
+sub top_stack($)
+{
+ my $stack = shift;
+ return undef unless(@$stack);
+ return $stack->[-1];
+}
+
+# return the next element with balanced {}
+sub next_bracketed($$)
+{
+ my $line = shift;
+ my $line_nr = shift;
+ my $opened_braces = 0;
+ my $result = '';
+ my $spaces;
+ if ($line =~ /^(\s*)$/)
+ {
+ return ('','',$1);
+ }
+ while ($line !~ /^\s*$/)
+ {
+#print STDERR "next_bracketed($opened_braces): $result !!! $line";
+ if (!$opened_braces)
+ { # beginning of item
+ $line =~ s/^(\s*)//;
+ $spaces = $1;
+ #if ($line =~ s/^([^\{\}\s]+)//)
+ if ($line =~ s/^([^\{\}]+?)(\s+)/$2/ or $line =~ s/^([^\{\}]+?)$//)
+ {
+ $result = $1;
+ $result =~ s/\s*$//;
+ return ($result, $line, $spaces);
+ }
+ elsif ($line =~ s/^([^\{\}]+?)([\{\}])/$2/)
+ {
+ $result = $1;
+ }
+ }
+ elsif($line =~ s/^([^\{\}]+)//)
+ {
+ $result .= $1;
+ }
+ if ($line =~ s/^([\{\}])//)
+ {
+ my $brace = $1;
+ $opened_braces++ if ($brace eq '{');
+ $opened_braces-- if ($brace eq '}');
+
+ if ($opened_braces < 0)
+ {
+ echo_error("too much '}' in specification", $line_nr);
+ $opened_braces = 0;
+ next;
+ }
+ $result .= $brace;
+ return ($result, $line, $spaces) if ($opened_braces == 0);
+ }
+ }
+ if ($opened_braces)
+ {
+ echo_error("'{' not closed in specification", $line_nr);
+ return ($result . ( '}' x $opened_braces), '', $spaces);
+ }
+ print STDERR "BUG: at the end of next_bracketed\n";
+ return undef;
+}
+
+# do a href using file and id and taking care of ommitting file if it is
+# the same
+# element: structuring element to point to
+# file: current file
+sub href($$)
+{
+ my $element = shift;
+ my $file = shift;
+ return '' unless defined($element);
+ my $href = '';
+ print STDERR "Bug: $element->{'texi'}, id undef\n" if (!defined($element->{'id'}));
+ print STDERR "Bug: $element->{'texi'}, file undef\n" if (!defined($element->{'file'}));
+#foreach my $key (keys(%{$element}))
+#{
+# my $value = 'UNDEF'; $value = $element->{$key} if defined($element->{$key});
+# print STDERR "$key: $value\n";
+#}print STDERR "\n";
+ $href .= $element->{'file'} if (defined($element->{'file'}) and $file ne $element->{'file'});
+ $href .= "#$element->{'id'}" if (defined($element->{'id'}));
+ return $href;
+}
+
+sub normalise_space($)
+{
+ return undef unless (defined ($_[0]));
+ my $text = shift;
+ $text =~ s/\s+/ /go;
+ $text =~ s/ $//;
+ $text =~ s/^ //;
+ return $text;
+}
+
+sub normalise_node($)
+{
+ return undef unless (defined ($_[0]));
+ my $text = shift;
+ $text = normalise_space($text);
+ $text =~ s/^top$/Top/i;
+ return $text;
+}
+
+sub do_anchor_label($$$$)
+{
+ my $command = shift;
+ #my $anchor = shift;
+ my $args = shift;
+ my $anchor = $args->[0];
+ my $style_stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+
+ return '' if ($state->{'multiple_pass'});
+ $anchor = normalise_node($anchor);
+ if (!exists($nodes{$anchor}) or !defined($nodes{$anchor}->{'id'}))
+ {
+ print STDERR "Bug: unknown anchor `$anchor'\n";
+ }
+ return &$Texi2HTML::Config::anchor($nodes{$anchor}->{'id'});
+}
+
+sub get_format_command($)
+{
+ my $format = shift;
+ my $command = '';
+ my $format_name = '';
+ my $term = 0;
+ my $item_nr;
+ my $paragraph_number;
+ my $enumerate_type;
+ my $number;
+
+ $command = $format->{'command'} if (defined($format->{'command'}));
+ $format_name = $format->{'format'} if (defined($format->{'format'}));
+ $term = 1 if ($format->{'term'}); #This should never happen
+
+ return ($format_name,$command,\$format->{'paragraph_number'},$term,
+ $format->{'item_nr'}, $format->{'spec'}, $format->{'number'},
+ $format->{'stack_at_beginning'});
+}
+
+sub do_paragraph($$)
+{
+ my $text = shift;
+ my $state = shift;
+ my ($format, $paragraph_command, $paragraph_number, $term, $item_nr,
+ $enumerate_type, $number,$stack_at_beginning)
+ = get_format_command ($state->{'paragraph_context'});
+ delete $state->{'paragraph_context'};
+
+ my $indent_style = '';
+ if (exists($state->{'paragraph_indent'}))
+ {
+ $indent_style = $state->{'paragraph_indent'};
+ $state->{'paragraph_indent'} = undef;
+ delete $state->{'paragraph_indent'};
+ }
+ my $paragraph_command_formatted;
+ $state->{'paragraph_nr'}--;
+ (print STDERR "Bug text undef in do_paragraph", return '') unless defined($text);
+ my $align = '';
+ $align = $state->{'paragraph_style'}->[-1] if ($state->{'paragraph_style'}->[-1]);
+
+ if (exists($::style_map_ref->{$paragraph_command}) and
+ !exists($Texi2HTML::Config::special_list_commands{$format}->{$paragraph_command}))
+ {
+ if ($format eq 'itemize')
+ {
+ chomp ($text);
+ $text = do_simple($paragraph_command, $text, $state, [$text]);
+ $text = $text . "\n";
+ }
+ }
+ elsif (exists($::things_map_ref->{$paragraph_command}))
+ {
+ $paragraph_command_formatted = do_simple($paragraph_command, '', $state);
+ }
+ return &$Texi2HTML::Config::paragraph($text, $align, $indent_style, $paragraph_command, $paragraph_command_formatted, $paragraph_number, $format, $item_nr, $enumerate_type, $number,$state->{'command_stack'},$stack_at_beginning);
+}
+
+sub do_preformatted($$)
+{
+ my $text = shift;
+ my $state = shift;
+ my ($format, $leading_command, $preformatted_number, $term, $item_nr,
+ $enumerate_type, $number,$stack_at_beginning)
+ = get_format_command($state->{'preformatted_context'});
+ delete ($state->{'preformatted_context'});
+ my $leading_command_formatted;
+ my $pre_style = '';
+ my $class = '';
+ $pre_style = $state->{'preformatted_stack'}->[-1]->{'pre_style'} if ($state->{'preformatted_stack'}->[-1]->{'pre_style'});
+ $class = $state->{'preformatted_stack'}->[-1]->{'class'};
+ print STDERR "BUG: !state->{'preformatted_stack'}->[-1]->{'class'}\n" unless ($class);
+ if (exists($::style_map_ref->{$leading_command}) and
+ !exists($Texi2HTML::Config::special_list_commands{$format}->{$leading_command}) and ($style_type{$leading_command} eq 'style'))
+ {
+ $text = do_simple($leading_command, $text, $state,[$text]) if ($format eq 'itemize');
+ }
+ elsif (exists($::things_map_ref->{$leading_command}))
+ {
+ $leading_command_formatted = do_simple($leading_command, '', $state);
+ }
+ return &$Texi2HTML::Config::preformatted($text, $pre_style, $class, $leading_command, $leading_command_formatted, $preformatted_number, $format, $item_nr, $enumerate_type, $number,$state->{'command_stack'},$stack_at_beginning);
+}
+
+sub do_external_href($)
+{
+ # node_id is a unique node identifier with only letters, digits, - and _
+ # node_xhtml_id is almost the same, but xhtml id can only begin with
+ # letters, so a prefix has to be appended
+ my $texi_node = shift;
+ my $file = '';
+ my $node_file = '';
+ my $node_id = '';
+ my $node_xhtml_id = '';
+
+#print STDERR "do_external_href $texi_node\n";
+
+ if ($texi_node =~ s/^\((.+?)\)//)
+ {
+ $file = $1;
+ }
+ $texi_node = normalise_node($texi_node);
+ if ($texi_node ne '')
+ {
+ if (exists($nodes{$texi_node}) and ($nodes{$texi_node}->{'cross_manual_target'}))
+ {
+ $node_id = $nodes{$texi_node}->{'cross_manual_target'};
+ if ($Texi2HTML::Config::TRANSLITERATE_NODE)
+ {
+ $node_file = $nodes{$texi_node}->{'cross_manual_file'};
+ }
+ }
+ else
+ {
+ if ($Texi2HTML::Config::TRANSLITERATE_NODE)
+ {
+ ($node_id, $node_file) = cross_manual_line($texi_node,1);
+ }
+ else
+ {
+ $node_id = cross_manual_line($texi_node);
+ }
+ }
+ $node_xhtml_id = node_to_id($node_id);
+ $node_file = $node_id unless ($Texi2HTML::Config::TRANSLITERATE_NODE);
+ }
+ return &$Texi2HTML::Config::external_href($texi_node, $node_file,
+ $node_xhtml_id, $file);
+}
+
+# transform node for cross ref name to id suitable for xhtml: an xhtml id
+# must begin with a letter.
+sub node_to_id($)
+{
+ my $cross_ref_node_name = shift;
+ $cross_ref_node_name =~ s/^([0-9_])/g_t$1/;
+ return $cross_ref_node_name;
+}
+
+# return 1 if the following tag shouldn't begin a line
+sub no_line($)
+{
+ my $line = shift;
+ my $next_tag = next_tag($line);
+ return 1 if (($line =~ /^\s*$/) or $no_line_macros{$next_tag} or
+ (($next_tag =~ /^(\w+?)index$/) and ($1 ne 'print')) or
+ (($line =~ /^\@end\s+(\w+)/) and $no_line_macros{"end $1"}));
+ return 0;
+}
+
+sub no_paragraph($$)
+{
+ my $state = shift;
+ my $line = shift;
+ return ($state->{'paragraph_context'} or $state->{'preformatted'} or $state->{'remove_texi'} or no_line($line) or $state->{'no_paragraph'});
+}
+
+# We restart the preformatted format which was stopped
+# by the format if in preformatted, and start a paragraph
+# for the text following the end of the format, if needed
+sub begin_paragraph_after_command($$$$)
+{
+ my $state = shift;
+ my $stack = shift;
+ my $command = shift;
+ my $text_following = shift;
+
+ if (($state->{'preformatted'}
+ and !$Texi2HTML::Config::format_in_paragraph{$command})
+ or (!no_paragraph($state,$text_following)))
+ {
+ begin_paragraph($stack, $state);
+ }
+}
+
+# handle raw formatting, ignored regions...
+sub do_text_macro($$$$$)
+{
+ my $type = shift;
+ my $line = shift;
+ my $state = shift;
+ my $stack = shift;
+ my $line_nr = shift;
+ my $value;
+ #print STDERR "do_text_macro $type\n";
+
+ if ($text_macros{$type} eq 'raw')
+ {
+ $state->{'raw'} = $type;
+ #print STDERR "RAW\n";
+ if ($state->{'raw'})
+ {
+ push @$stack, { 'style' => $type, 'text' => '' };
+ }
+ }
+ elsif ($text_macros{$type} eq 'value')
+ {
+ if (($line =~ s/(\s+)($VARRE)$//) or ($line =~ s/(\s+)($VARRE)(\s)//))
+ {
+ $value = $1 . $2;
+ $value .= $3 if defined($3);
+ if ($state->{'ignored'})
+ {
+ if ($type eq $state->{'ignored'})
+ {
+ $state->{'ifvalue_inside'}++;
+ }
+ # if 'ignored' we don't care about the command as long as
+ # the nesting is correct
+ return ($line,'');
+ }
+ my $open_ifvalue = 0;
+ if ($type eq 'ifclear')
+ {
+ if (defined($value{$2}))
+ {
+ $open_ifvalue = 1;
+ }
+ else
+ {
+ push @{$state->{'text_macro_stack'}}, $type;
+ }
+ }
+ elsif ($type eq 'ifset')
+ {
+ unless (defined($value{$2}))
+ {
+ $open_ifvalue = 1;
+ }
+ else
+ {
+ push @{$state->{'text_macro_stack'}}, $type;
+ }
+ }
+ if ($open_ifvalue)
+ {
+ $state->{'ignored'} = $type;
+ $state->{'ifvalue'} = $type;
+ $state->{'ifvalue_inside'} = 1;
+ # We add at the top of the stack to be able to close all
+ # opened comands when closing the ifset/ifclear (and ignore
+ # everything that is in those commands)
+ push @$stack, { 'style' => 'ifvalue', 'text' => '' };
+ }
+
+ }
+ else
+ { # we accept a lone @ifset or @ifclear if it is inside an
+ if ($type eq $state->{'ifvalue'})
+ {
+ $state->{'ifvalue_inside'}++;
+ return ($line,'');
+ }
+ echo_error ("Bad $type line: $line", $line_nr) unless ($state->{'ignored'});
+ }
+ }
+ elsif (not $text_macros{$type})
+ { # ignored text
+ $state->{'ignored'} = $type;
+ #print STDERR "IGNORED\n";
+ }
+ else
+ {
+ push @{$state->{'text_macro_stack'}}, $type unless($state->{'ignored'}) ;
+ }
+ my $text = "\@$type";
+ $text .= $value if defined($value);
+ return ($line, $text);
+}
+
+# do regions handled specially, currently only tex, going through latex2html
+sub init_special($$)
+{
+ my $style = shift;
+ my $text = shift;
+ if (defined($Texi2HTML::Config::command_handler{$style}) and
+ defined($Texi2HTML::Config::command_handler{$style}->{'init'}))
+ {
+ $special_commands{$style}->{'count'} = 0 if (!defined($special_commands{$style}));
+ if ($Texi2HTML::Config::command_handler{$style}->{'init'}($style,$text,
+ $special_commands{$style}->{'count'} +1))
+ {
+ $special_commands{$style}->{'count'}++;
+ return "\@special_${style}_".$special_commands{$style}->{'count'}."{}";
+ }
+ return '';
+ }
+}
+
+sub do_insertcopying($)
+{
+ my $state = shift;
+ return '' unless @{$region_lines{'copying'}};
+ my $insert_copying_state = duplicate_state($state);
+ $insert_copying_state->{'multiple_pass'} = 1;
+ return substitute_text($insert_copying_state, @{$region_lines{'copying'}});
+}
+
+sub get_deff_index($$$)
+{
+ my $tag = shift;
+ my $line = shift;
+ my $line_nr = shift;
+
+ $tag =~ s/x$//;
+ my ($style, $category, $name, $type, $class, $arguments);
+ ($style, $category, $name, $type, $class, $arguments) = parse_def($tag, $line, $line_nr);
+ $name = &$Texi2HTML::Config::definition_category($name, $class, $style);
+ return ($style, '') if (!defined($name) or ($name =~ /^\s*$/));
+ return ($style, $name, $arguments);
+}
+
+sub parse_def($$$)
+{
+ my $command = shift;
+ my $line = shift;
+ my $line_nr = shift;
+
+ my $tag = $command;
+
+ if (!ref ($Texi2HTML::Config::def_map{$tag}))
+ {
+ # substitute shortcuts for definition commands
+ my $substituted = $Texi2HTML::Config::def_map{$tag};
+ $substituted =~ s/(\w+)//;
+ $tag = $1;
+ $line = $substituted . $line;
+ }
+#print STDERR "PARSE_DEF($command,$tag) $line";
+ my ($category, $name, $type, $class, $arguments);
+ my @args = @{$Texi2HTML::Config::def_map{$tag}};
+ my $style = shift @args;
+ while (@args)
+ {
+ my $arg = shift @args;
+ if (defined($arg))
+ {
+ # backward compatibility, it was possible to have a { in front.
+ $arg =~ s/^\{//;
+ my $item;
+ my $spaces;
+ ($item, $line,$spaces) = next_bracketed($line, $line_nr);
+ last if (!defined($item));
+ $item =~ s/^\{(.*)\}$/$1/ if ($item =~ /^\{/);
+ if ($arg eq 'category')
+ {
+ $category = $item;
+ }
+ elsif ($arg eq 'name')
+ {
+ $name = $item;
+ }
+ elsif ($arg eq 'type')
+ {
+ $type = $item;
+ }
+ elsif ($arg eq 'class')
+ {
+ $class = $item;
+ }
+ elsif ($arg eq 'arg')
+ {
+ $line = $spaces . $item . $line;
+ }
+ }
+ else
+ {
+ last;
+ }
+ }
+#print STDERR "PARSE_DEF (style $style, category $category, name $name, type $type, class $class, line $line)\n";
+ return ($style, $category, $name, $type, $class, $line);
+}
+
+sub begin_deff_item($$;$)
+{
+ my $stack = shift;
+ my $state = shift;
+ my $no_paragraph = shift;
+ #print STDERR "DEF push deff_item for $state->{'deff'}\n";
+ push @$stack, { 'format' => 'deff_item', 'text' => '', 'deff_line' => $state->{'deff_line'}};
+ # there is no paragraph when a new deff just follows the deff we are
+ # opening
+ begin_paragraph($stack, $state)
+ if ($state->{'preformatted'} and !$no_paragraph);
+ delete($state->{'deff_line'});
+ #dump_stack(undef, $stack, $state);
+}
+
+sub begin_paragraph($$)
+{
+ my $stack = shift;
+ my $state = shift;
+
+ my $command = 1;
+ my $top_format = top_format($stack);
+ if (defined($top_format))
+ {
+ $command = $top_format;
+ }
+ else
+ {
+ $command = { };
+ }
+ $command->{'stack_at_beginning'} = [ @{$state->{'command_stack'}} ];
+ if ($state->{'preformatted'})
+ {
+ push @$stack, {'format' => 'preformatted', 'text' => '' };
+ $state->{'preformatted_context'} = $command;
+ push @$stack, @{$state->{'paragraph_macros'}} if $state->{'paragraph_macros'};
+ delete $state->{'paragraph_macros'};
+ return;
+ }
+ $state->{'paragraph_context'} = $command;
+ $state->{'paragraph_nr'}++;
+ push @$stack, {'format' => 'paragraph', 'text' => '' };
+ # if there are macros which weren't closed when the previous
+ # paragraph was closed we reopen them here
+ push @$stack, @{$state->{'paragraph_macros'}} if $state->{'paragraph_macros'};
+ delete $state->{'paragraph_macros'};
+}
+
+sub parse_format_command($$)
+{
+ my $line = shift;
+ my $tag = shift;
+ my $command = 'asis';
+ # macro_regexp
+ if (($line =~ /^\s*\@([A-Za-z][\w-]*)(\{\})?$/ or $line =~ /^\s*\@([A-Za-z][\w-]*)(\{\})?\s/) and ($::things_map_ref->{$1} or defined($::style_map_ref->{$1})))
+ {
+ # macro_regexp
+ $line =~ s/^\s*\@([A-Za-z][\w-]*)(\{\})?\s*//;
+ $command = $1;
+ }
+ return ('', $command) if ($line =~ /^\s*$/);
+ chomp $line;
+ $line = substitute_text ({'keep_nr' => 1, 'keep_texi' => 1, 'check_item' => $tag}, $line);
+ return ($line, $command);
+}
+
+sub parse_enumerate($)
+{
+ my $line = shift;
+ my $spec;
+ if ($line =~ /^\s*(\w)\b/ and ($1 ne '_'))
+ {
+ $spec = $1;
+ $line =~ s/^\s*(\w)\s*//;
+ }
+ return ($line, $spec);
+}
+
+sub parse_multitable($$)
+{
+ my $line = shift;
+ my $line_nr = shift;
+ # first find the table width
+ my $table_width = 0;
+ if ($line =~ s/^\s+\@columnfractions\s+//)
+ {
+ my @fractions = split /\s+/, $line;
+ $table_width = $#fractions + 1;
+ while (@fractions)
+ {
+ my $fraction = shift @fractions;
+ unless ($fraction =~ /^(\d*\.\d+)|(\d+)\.?$/)
+ {
+ echo_error ("column fraction not a number: $fraction", $line_nr);
+ #warn "$ERROR column fraction not a number: $fraction";
+ }
+ }
+ }
+ else
+ {
+ my $element;
+ my $line_orig = $line;
+ while ($line !~ /^\s*$/)
+ {
+ my $spaces;
+ ($element, $line, $spaces) = next_bracketed($line, $line_nr);
+ if ($element =~ /^\{/)
+ {
+ $table_width++;
+ }
+ else
+ {
+ echo_error ("garbage in multitable specification: $element", $line_nr);
+ }
+ }
+ }
+ return ($table_width);
+}
+
+sub end_format($$$$$)
+{
+ my $text = shift;
+ my $stack = shift;
+ my $state = shift;
+ my $format = shift;
+ my $line_nr = shift;
+ #print STDERR "END FORMAT $format\n";
+ #dump_stack($text, $stack, $state);
+ #sleep 1;
+ if ($format_type{$format} eq 'menu')
+ {
+ $state->{'menu'}--;
+ close_menu($text, $stack, $state, $line_nr);
+ }
+ if (($format_type{$format} eq 'list') or ($format_type{$format} eq 'table'))
+ { # those functions return if they detect an inapropriate context
+ add_item($text, $stack, $state, $line_nr, '', 1); # handle lists
+ add_term($text, $stack, $state, $line_nr, 1); # handle table
+ add_line($text, $stack, $state, $line_nr, 1); # handle table
+ add_row($text, $stack, $state, $line_nr); # handle multitable
+ }
+
+ #print STDERR "END_FORMAT\n";
+ #dump_stack($text, $stack, $state);
+
+ # set to 1 if there is a mismatch between the closed format and format
+ # opened before
+ my $format_mismatch = 0;
+
+ my $format_ref = pop @$stack;
+
+ ######################### debug
+ if (!defined($format_ref->{'text'}))
+ {
+ push @$stack, $format_ref;
+ print STDERR "Bug: text undef in end_format $format\n";
+ dump_stack($text, $stack, $state);
+ pop @$stack;
+ }
+ ######################### end debug
+
+ if (defined($Texi2HTML::Config::def_map{$format}))
+ {
+ close_stack($text, $stack, $state, $line_nr, undef, 'deff_item')
+ unless ($format_ref->{'format'} eq 'deff_item');
+ add_prev($text, $stack, &$Texi2HTML::Config::def_item($format_ref->{'text'}));
+ $format_ref = pop @$stack; # pop deff
+ ######################################### debug
+ if (!defined($format_ref->{'format'}) or !defined($Texi2HTML::Config::def_map{$format_ref->{'format'}}))
+ {
+ print STDERR "Bug: not a def* under deff_item\n";
+ push (@$stack, $format_ref);
+ dump_stack($text, $stack, $state);
+ pop @$stack;
+ }
+ ######################################### end debug
+ elsif ($format_ref->{'format'} ne $format)
+ {
+ $format_mismatch = 1;
+ echo_warn ("Waiting for \@end $format_ref->{'format'}, found \@end $format", $line_nr);
+ }
+ add_prev($text, $stack, &$Texi2HTML::Config::def($format_ref->{'text'}));
+ }
+ elsif ($format_type{$format} eq 'cartouche')
+ {
+ add_prev($text, $stack, &$Texi2HTML::Config::cartouche($format_ref->{'text'},$state->{'command_stack'}));
+ }
+ elsif ($format eq 'float')
+ {
+ unless (defined($state->{'float'}))
+ {
+ print STDERR "Bug: state->{'float'} not defined in float\n";
+ next;
+ }
+ my ($caption_lines, $shortcaption_lines) = &$Texi2HTML::Config::caption_shortcaption($state->{'float'});
+ my ($caption_text, $shortcaption_text);
+ $caption_text = substitute_text(duplicate_state($state), @$caption_lines) if (defined($caption_lines));
+ $shortcaption_text = substitute_text(duplicate_state($state), @$shortcaption_lines) if (defined($shortcaption_lines));
+ add_prev($text, $stack, &$Texi2HTML::Config::float($format_ref->{'text'}, $state->{'float'}, $caption_text, $shortcaption_text));
+ delete $state->{'float'};
+ }
+ elsif (exists ($Texi2HTML::Config::complex_format_map->{$format}))
+ {
+ $state->{'preformatted'}--;
+ pop @{$state->{'preformatted_stack'}};
+ # debug
+ if (!defined($Texi2HTML::Config::complex_format_map->{$format_ref->{'format'}}->{'begin'}))
+ {
+ print STDERR "Bug undef $format_ref->{'format'}" . "->{'begin'} (for $format...)\n";
+ dump_stack ($text, $stack, $state);
+ }
+ #print STDERR "before $format\n";
+ #dump_stack ($text, $stack, $state);
+ add_prev($text, $stack, &$Texi2HTML::Config::complex_format($format_ref->{'format'}, $format_ref->{'text'}));
+ #print STDERR "after $format\n";
+ #dump_stack ($text, $stack, $state);
+ }
+ elsif (($format_type{$format} eq 'table') or ($format_type{$format} eq 'list'))
+ {
+ #print STDERR "CLOSE $format ($format_ref->{'format'})\n$format_ref->{'text'}\n";
+ pop @{$state->{'table_list_stack'}};
+ #dump_stack($text, $stack, $state);
+ if ($format_ref->{'format'} ne $format)
+ { # for example vtable closing a table. Cannot be known
+ # before if in a cell
+ $format_mismatch = 1;
+ echo_warn ("Waiting for \@end $format_ref->{'format'}, found \@end $format ", $line_nr);
+ }
+ if ($Texi2HTML::Config::format_map{$format})
+ { # table or list has a simple format
+ add_prev($text, $stack, end_simple_format($format_ref->{'format'}, $format_ref->{'text'}));
+ }
+ else
+ { # table or list handler defined by the user
+ add_prev($text, $stack, &$Texi2HTML::Config::table_list($format_ref->{'format'}, $format_ref->{'text'}, $format_ref->{'command'}));
+ }
+ }
+ elsif ($format_type{$format} eq 'menu')
+ {
+ # it should be short-circuited if $Texi2HTML::Config::SIMPLE_MENU
+ if ($state->{'preformatted'})
+ {
+ # end the fake complex format
+ $state->{'preformatted'}--;
+ pop @{$state->{'preformatted_stack'}};
+ pop @$stack;
+ }
+ add_prev($text, $stack, &$Texi2HTML::Config::menu($format_ref->{'text'}));
+ }
+ elsif ($format eq 'quotation')
+ {
+ my $quotation_args = pop @{$state->{'quotation_stack'}};
+ #add_prev($text, $stack, &$Texi2HTML::Config::quotation($format_ref->{'text'}, $quotation_args->{'text'}, $quotation_args->{'style_texi'}, $quotation_args->{'style_id'}));
+ add_prev($text, $stack, &$Texi2HTML::Config::quotation($format_ref->{'text'}, $quotation_args->{'text'}, $quotation_args->{'text_texi'}));
+ }
+ elsif ($Texi2HTML::Config::paragraph_style{$format})
+ {
+ if ($state->{'paragraph_style'}->[-1] eq $format)
+ {
+ pop @{$state->{'paragraph_style'}};
+ }
+ add_prev($text, $stack, &$Texi2HTML::Config::paragraph_style_command($format_ref->{'format'},$format_ref->{'text'}));
+ }
+ elsif (exists($Texi2HTML::Config::format_map{$format}))
+ {
+ add_prev($text, $stack, end_simple_format($format_ref->{'format'}, $format_ref->{'text'}));
+ }
+ else
+ {
+ echo_warn("Unknown format $format", $line_nr);
+ }
+ # special case for center as it is at the bottom of the stack
+ my $removed_from_stack;
+ if ($format eq 'center')
+ {
+ $removed_from_stack = shift @{$state->{'command_stack'}};
+ }
+ else
+ {
+ $removed_from_stack = pop @{$state->{'command_stack'}};
+ }
+ if ($removed_from_stack ne $format and !$format_mismatch)
+ {
+ print STDERR "Bug: removed_from_stack $removed_from_stack ne format $format\n";
+ }
+}
+
+sub do_text($;$)
+{
+ my $text = shift;
+ my $state = shift;
+ return $text if ($state->{'keep_texi'});
+ my $remove_texi = 1 if ($state->{'remove_texi'} and !$state->{'simple_format'});
+ return (&$Texi2HTML::Config::normal_text($text, $remove_texi, $state->{'preformatted'}, $state->{'code_style'},$state->{'command_stack'}));
+}
+
+sub end_simple_format($$)
+{
+ my $tag = shift;
+ my $text = shift;
+
+ my $element = $Texi2HTML::Config::format_map{$tag};
+ return &$Texi2HTML::Config::format($tag, $element, $text);
+}
+
+sub close_menu($$$$)
+{
+ my $text = shift;
+ my $stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+ if ($state->{'menu_comment'})
+ {
+ #print STDERR "close MENU_COMMENT\n";
+ #dump_stack($text, $stack, $state);
+ close_stack($text, $stack, $state, $line_nr, undef, 'menu_comment');
+ # close_paragraph isn't needed in most cases, but a preformatted may
+ # appear after close_stack if we closed a format, as formats reopen
+ # preformatted. However it is empty and close_paragraph will remove it
+ close_paragraph($text, $stack, $state);
+ my $menu_comment = pop @$stack;
+ if (!$menu_comment->{'format'} or $menu_comment->{'format'} ne 'menu_comment')
+ {
+ warn "Bug waiting for menu_comment, got $menu_comment->{'format'}\n";
+ dump_stack($text, $stack, $state);
+ }
+ add_prev($text, $stack, &$Texi2HTML::Config::menu_comment($menu_comment->{'text'}));
+ unless ($Texi2HTML::Config::SIMPLE_MENU)
+ {
+ pop @{$state->{'preformatted_stack'}};
+ $state->{'preformatted'}--;
+ }
+ $state->{'menu_comment'}--;
+ }
+ if ($state->{'menu_entry'})
+ {
+ close_stack($text, $stack,$state, $line_nr, undef, 'menu_description');
+ my $descr = pop(@$stack);
+ print STDERR "# close_menu: close description\n" if ($T2H_DEBUG & $DEBUG_MENU);
+ add_prev($text, $stack, do_menu_description($descr->{'text'}, $state));
+ delete $state->{'menu_entry'};
+ }
+}
+
+# Format menu link
+sub do_menu_link($$;$)
+{
+ my $state = shift;
+ my $line_nr = shift;
+ my $simple = shift;
+ my $menu_entry = $state->{'menu_entry'};
+ my $file = $state->{'element'}->{'file'};
+ my $node_name = normalise_node($menu_entry->{'node'});
+
+ my $substitution_state = duplicate_state($state);
+ my $name = substitute_line($menu_entry->{'name'}, $substitution_state);
+ my $node_formatted = substitute_line($menu_entry->{'node'}, $substitution_state);
+
+ my $entry = '';
+ my $href;
+ my $element = $nodes{$node_name};
+
+ # menu points to an unknown node
+ if (!$element->{'seen'})
+ {
+ if ($menu_entry->{'node'} =~ /^\s*\(.*\)/o or $novalidate)
+ {
+ # menu entry points to another info manual or invalid nodes
+ # and novalidate is set
+ #$href = $nodes{$node_name}->{'file'};
+ $href = do_external_href($node_name);
+ }
+ else
+ {
+ echo_error ("Unknown node in menu entry `$node_name'", $line_nr);
+ # try to find an equivalent node
+ my @equivalent_nodes = equivalent_nodes($node_name);
+ my $node_seen;
+ foreach my $equivalent_node (@equivalent_nodes)
+ {
+ if ($nodes{$equivalent_node}->{'seen'})
+ {
+ $node_seen = $equivalent_node;
+ last;
+ }
+ }
+ if (defined($node_seen))
+ {
+ echo_warn (" ---> but equivalent node `$node_seen' found");
+ $element = $nodes{$node_seen};
+ }
+ }
+ }
+
+ # the original node or an equivalent node was seen
+ if ($element->{'seen'})
+ {
+ if ($element->{'reference_element'})
+ {
+ $element = $element->{'reference_element'};
+ }
+
+ #print STDERR "SUBHREF in menu for `$element->{'texi'}'\n";
+ $href = href($element, $file);
+ if (! $element->{'node'})
+ {
+ $entry = $element->{'text'}; # this is the section/node name
+ $entry = "$Texi2HTML::Config::MENU_SYMBOL $entry" if (($entry ne '') and (!defined($element->{'number'}) or ($element->{'number'} =~ /^\s*$/)) and $Texi2HTML::Config::UNNUMBERED_SYMBOL_IN_MENU);
+ }
+ }
+ # save the element used for the href for the description
+ $menu_entry->{'menu_reference_element'} = $element;
+
+ return &$Texi2HTML::Config::menu_link($entry, $substitution_state, $href, $node_formatted, $name, $menu_entry->{'ending'}) unless ($simple);
+ return &$Texi2HTML::Config::simple_menu_link($entry, $state->{'preformatted'}, $href, $node_formatted, $name, $menu_entry->{'ending'});
+}
+
+sub do_menu_description($$)
+{
+ my $descr = shift;
+ my $state = shift;
+ my $menu_entry = $state->{'menu_entry'};
+
+ my $element = $menu_entry->{'menu_reference_element'};
+
+ return &$Texi2HTML::Config::menu_description($descr, duplicate_state($state),$element->{'text_nonumber'});
+}
+
+sub do_xref($$$$)
+{
+ my $macro = shift;
+ my $args = shift;
+ my $style_stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+
+ my $result = '';
+ my @args = @$args;
+ #print STDERR "DO_XREF: $macro\n";
+ my $j = 0;
+ for ($j = 0; $j <= $#$args; $j++)
+ {
+ $args[$j] = normalise_space($args[$j]);
+ # print STDERR " ($j)$args[$j]\n";
+ }
+ $args[0] = '' if (!defined($args[0]));
+ my $node_texi = normalise_node($args[0]);
+ # a ref to a node in an info manual
+ if ($args[0] =~ s/^\(([^\)]+)\)\s*//)
+ {
+ if ($macro eq 'inforef')
+ {
+ $args[2] = $1 unless ($args[2]);
+ }
+ else
+ {
+ $args[3] = $1 unless ($args[3]);
+ }
+ }
+ if (($macro ne 'inforef') and $args[3])
+ {
+ $node_texi = "($args[3])" . normalise_node($args[0]);
+ }
+
+ if ($macro eq 'inforef')
+ {
+ if ((@args < 1) or ($args[0] eq ''))
+ {
+ echo_error ("Need a node name for \@$macro", $line_nr);
+ return '';
+ }
+ if (@args > 3)
+ {
+ echo_warn ("Too much arguments for \@$macro", $line_nr);
+ }
+ $args[2] = '' if (!defined($args[2]));
+ $args[1] = '' if (!defined($args[1]));
+ $node_texi = "($args[2])$args[0]";
+ }
+
+ my $i;
+ my $new_state = duplicate_state($state);
+ $new_state->{'keep_texi'} = 0;
+ $new_state->{'keep_nr'} = 0;
+ for ($i = 0; $i < 5; $i++)
+ {
+ $args[$i] = substitute_line($args[$i], $new_state);
+ }
+ #print STDERR "(@args)\n";
+
+ if (($macro eq 'inforef') or ($args[3] ne '') or ($args[4] ne ''))
+ {# external ref
+ if ($macro eq 'inforef')
+ {
+ $macro = 'xref';
+ $args[3] = $args[2];
+ }
+ my $href = '';
+ my $node_file = '';
+ if ($args[3] ne '')
+ {
+ $href = do_external_href($node_texi);
+ $node_file = "($args[3])$args[0]";
+ }
+ my $section = '';
+ if ($args[4] ne '')
+ {
+ $section = $args[0];
+ if ($args[2] ne '')
+ {
+ $section = $args[2];
+ }
+ }
+ $result = &$Texi2HTML::Config::external_ref($macro, $section, $args[4], $node_file, $href, $args[1]);
+ }
+ else
+ {
+ my $element = $nodes{$node_texi};
+ if ($element and $element->{'seen'})
+ {
+ if ($element->{'reference_element'})
+ {
+ $element = $element->{'reference_element'};
+ }
+ my $file = '';
+ if (defined($state->{'element'}))
+ {
+ $file = $state->{'element'}->{'file'};
+ }
+ else
+ {
+ echo_warn ("\@$macro not in text (in anchor, node, section...)", $line_nr);
+ # if Texi2HTML::Config::SPLIT the file is '' which ensures
+ # a href with the file name. if ! Texi2HTML::Config::SPLIT
+ # the 2 file will be the same thus there won't be the file name
+ $file = $element->{'file'} unless ($Texi2HTML::Config::SPLIT);
+ }
+ #print STDERR "SUBHREF in ref to node `$node_texi': $_";
+ my $href = href($element, $file);
+ my $section = $args[2];
+ $section = $args[1] if ($section eq '');
+ my $name = $section;
+ my $short_name = $section;
+ if ($section eq '')
+ {
+ # FIXME maybe one should use 'text' instead of 'text_nonumber'
+ # However the real fix would be to have an internal_ref call
+ # with more informations
+ $name = $element->{'text_nonumber'};
+ $short_name = $args[0];
+ }
+ $result = &$Texi2HTML::Config::internal_ref ($macro, $href, $short_name, $name, $element->{'section'});
+ }
+ else
+ {
+ if (($node_texi eq '') or !$novalidate)
+ {
+ echo_error ("Undefined node `$node_texi' in \@$macro", $line_nr);
+ my $text = '';
+ for (my $i = 0; $i < @$args -1; $i++)
+ {
+ $text .= $args->[$i] .',';
+ }
+ $text .= $args->[-1];
+ $result = "\@$macro"."{${text}}";
+ }
+ else
+ {
+ $result = &$Texi2HTML::Config::external_ref($macro, '', '', $args[0], do_external_href($node_texi), $args[1]);
+ }
+ }
+ }
+ return $result;
+}
+
+sub do_acronym_like($$$$$)
+{
+ my $command = shift;
+ my $args = shift;
+ my $acronym_texi = shift @$args;
+ my $explanation = shift @$args;
+ my $style_stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+
+ my $explanation_lines;
+ my $explanation_text;
+ my $explanation_simple_format;
+
+ if (defined($explanation))
+ {
+ $explanation =~ s/^\s*//;
+ $explanation =~ s/\s*$//;
+ $explanation = undef if ($explanation eq '');
+ }
+ $acronym_texi =~ s/^\s*//;
+ $acronym_texi =~ s/\s*$//;
+
+ return '' if ($acronym_texi eq '');
+
+ my $with_explanation = 0;
+ my $normalized_text = cross_manual_line(normalise_node($acronym_texi));
+ if (defined($explanation))
+ {
+ $with_explanation = 1;
+ $acronyms_like{$command}->{$normalized_text} = $explanation;
+ }
+ elsif (exists($acronyms_like{$command}->{$normalized_text}))
+ {
+ $explanation = $acronyms_like{$command}->{$normalized_text};
+ }
+
+ if (defined($explanation))
+ {
+ @$explanation_lines = map {$_ = $_."\n"} split (/\n/, $explanation);
+ my $text = '';
+ foreach my $line(@$explanation_lines)
+ {
+ $line .= ' ' if (chomp ($line));
+ $text .= $line
+ }
+ $text =~ s/ $//;
+ my $simple_format_state = duplicate_state($state);
+ $explanation_simple_format = simple_format($simple_format_state,$text);
+ $explanation_text = substitute_line($text, duplicate_state($state));
+ }
+ return &$Texi2HTML::Config::acronym_like($command, $acronym_texi, substitute_line($acronym_texi, duplicate_state($state)),
+ $with_explanation, $explanation_lines, $explanation_text, $explanation_simple_format);
+}
+
+sub do_caption_shortcaption($$$$$)
+{
+ my $command = shift;
+ my $args = shift;
+ my $text = $args->[0];
+ my $style_stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+
+ if (!exists($state->{'float'}))
+ {
+#dump_stack(\"", [], $state);
+ echo_error("\@$command outside of float", $line_nr);
+ return '';
+ }
+ my $float = $state->{'float'};
+ my @texi_lines = map {$_ = $_."\n"} split (/\n/, $text);
+ $float->{"${command}_texi"} = \@texi_lines;
+ return '';
+}
+
+# function called when a @float is encountered. Don't do any output
+# but prepare $state->{'float'}
+sub do_float_line($$$$$)
+{
+ my $command = shift;
+ my $args = shift;
+ my @args = @$args;
+ my $style_texi = shift @args;
+ my $label_texi = shift @args;
+ my $style_stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+
+ $style_texi = undef if (defined($style_texi) and $style_texi=~/^\s*$/);
+ $label_texi = undef if (defined($label_texi) and $label_texi=~/^\s*$/);
+ if (defined($label_texi))
+ { # the float is considered as a node as it may be a target for refs.
+ # it was entered as a node in the pass_structure and the float
+ # line was parsed at that time
+ $state->{'float'} = $nodes{normalise_node($label_texi)};
+ #print STDERR "float: $state->{'float'}, $state->{'float'}->{'texi'}\n";
+ }
+ else
+ { # a float without label. It can't be the target for refs.
+ $state->{'float'} = { 'float' => 1 };
+ if (defined($style_texi))
+ {
+ $state->{'float'}->{'style_texi'} = normalise_space($style_texi);
+ $state->{'float'}->{'style_id'} =
+ cross_manual_line($state->{'float'}->{'style_texi'});
+ $state->{'float'}->{'style'} = substitute_line($style_texi);
+ }
+ #print STDERR "float: (no label) $state->{'float'}\n";
+ }
+ return '';
+}
+
+sub do_quotation_line($$$$$)
+{
+ my $command = shift;
+ my $args = shift;
+ my @args = @$args;
+ my $text_texi = shift @args;
+ my $style_stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+ my $text;
+
+ $text_texi = undef if (defined($text_texi) and $text_texi=~/^\s*$/);
+ if (defined($text_texi))
+ {
+ $text = substitute_line($text_texi, duplicate_state($state));
+ $text =~ s/\s*$//;
+ }
+ my $quotation_args = { 'text' => $text, 'text_texi' => $text_texi };
+ push @{$state->{'quotation_stack'}}, $quotation_args;
+ $state->{'prepend_text'} = &$Texi2HTML::Config::quotation_prepend_text($text_texi);
+ return '';
+}
+
+sub do_def_line($$$$$)
+{
+ my $command = shift;
+ my $args = shift;
+ my @args = @$args;
+ my $arguments = shift @args;
+ my $style_stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+
+ $state->{'deff_line'}->{'arguments'} = $arguments;
+ return '';
+}
+
+sub do_footnote($$$$)
+{
+ my $command = shift;
+ my $args = shift;
+ my $text = $args->[0];
+ my $style_stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+
+ $text .= "\n";
+ $foot_num++;
+ $relative_foot_num++;
+ my $docid = "DOCF$foot_num";
+ my $footid = "FOOT$foot_num";
+ my $from_file = '';
+ if ($state->{'element'} and $Texi2HTML::Config::SPLIT and $Texi2HTML::Config::SEPARATED_FOOTNOTES)
+ {
+ $from_file = $state->{'element'}->{'file'};
+ }
+ my %state;
+ initialise_state(\%state);
+ if ($Texi2HTML::Config::SEPARATED_FOOTNOTES)
+ {
+ $state{'element'} = $footnote_element;
+ }
+ else
+ {
+ $state{'element'} = $state->{'element'};
+ }
+ my $file = '';
+ $file = $docu_foot if ($Texi2HTML::Config::SPLIT and $Texi2HTML::Config::SEPARATED_FOOTNOTES);
+
+ # FIXME use split_lines ? It seems to work like it is now ?
+ my @lines = substitute_text(\%state, map {$_ = $_."\n"} split (/\n/, $text));
+ my ($foot_lines, $foot_label) = &$Texi2HTML::Config::foot_line_and_ref ($foot_num,
+ $relative_foot_num, $footid, $docid, $from_file, $file, \@lines, $state);
+ push(@foot_lines, @{$foot_lines});
+ return $foot_label;
+}
+
+sub do_image($$$$)
+{
+ # replace images
+ my $command = shift;
+ my $args = shift;
+ my $text = $args->[0];
+ my $style_stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+ $text =~ s/\s+/ /gos; # remove useless spaces and newlines
+ my @args = split (/\s*,\s*/, $text);
+ my $base = $args[0];
+ if ($base eq '')
+ {
+ echo_error ("no file argument for \@image", $line_nr);
+ #warn "$ERROR no file argument for \@image\n";
+ return '';
+ }
+ $args[4] = '' if (!defined($args[4]));
+ $args[3] = '' if (!defined($args[3]));
+ my $image;
+ my $file_name;
+ my @file_names = &$Texi2HTML::Config::image_files($base,$args[4]);
+# $image = locate_include_file("$base.$args[4]") if ($args[4] ne '');
+ foreach my $file (@file_names)
+ {
+ if ($image = locate_include_file($file))
+ {
+ $file_name = $file;
+ last;
+ }
+ }
+ $image = '' if (!defined($image));
+
+ my $alt;
+ if ($args[3] =~ /\S/)
+ {
+ # makeinfo don't do that. Maybe it should be remove_texi or
+ # simple_format... The raw alt is also given in argument
+ $alt = do_text($args[3]);
+ $alt = $alt if ($alt =~ /\S/);
+ }
+ return &$Texi2HTML::Config::image($path_to_working_dir . $image, $base,
+ $state->{'preformatted'}, $file_name, $alt, $args[1], $args[2],
+ $args[3], $args[4], $path_to_working_dir, $image);
+}
+
+sub duplicate_state($)
+{
+ my $state = shift;
+ my $new_state = { 'element' => $state->{'element'},
+ 'preformatted' => $state->{'preformatted'},
+ 'code_style' => $state->{'code_style'},
+ 'keep_texi' => $state->{'keep_texi'},
+ 'keep_nr' => $state->{'keep_nr'},
+ 'preformatted_stack' => $state->{'preformatted_stack'},
+ 'multiple_pass' => $state->{'multiple_pass'},
+# this is needed for preformatted
+ 'command_stack' => [ @{$state->{'command_stack'}} ],
+ 'preformatted_context' =>
+ {'stack_at_beginning' => [ @{$state->{'command_stack'}} ] }
+ };
+ return $new_state;
+}
+
+sub expand_macro($$$$$)
+{
+ my $name = shift;
+ my $args = shift;
+ my $end_line = shift;
+ my $line_nr = shift;
+ my $state = shift;
+
+ # we dont expand macros when in ignored environment.
+ return if ($state->{'ignored'});
+ my $index = 0;
+ foreach my $arg (@$args)
+ { # expand @macros in arguments. It is complicated because we must be
+ # carefull not to expand macros in @ignore section or the like, and
+ # still keep every single piece of text (including the @ignore macros).
+ $args->[$index] = substitute_text({'texi' => 1, 'arg_expansion' => 1}, split_lines($arg));
+ $index++;
+ }
+ # retrieve the macro definition
+ my $macrobody = $macros->{$name}->{'body'};
+ my $formal_args = $macros->{$name}->{'args'};
+ my $args_index = $macros->{$name}->{'args_index'};
+ my $i;
+
+ die "Bug end_line not defined" if (!defined($end_line));
+
+ for ($i=0; $i<=$#$formal_args; $i++)
+ {
+ $args->[$i] = "" unless (defined($args->[$i]));
+ print STDERR "# arg($i): $args->[$i]\n" if ($T2H_DEBUG & $DEBUG_MACROS);
+ }
+ echo_error ("too much arguments for macro $name", $line_nr) if (defined($args->[$i + 1]));
+ my $result = '';
+ while ($macrobody)
+ {
+ if ($macrobody =~ s/^([^\\]*)\\//o)
+ {
+ $result .= $1 if defined($1);
+ if ($macrobody =~ s/^\\//)
+ {
+ $result .= '\\';
+ }
+ elsif ($macrobody =~ s/^(\@end\sr?macro)$// or $macrobody =~ s/^(\@end\sr?macro\s)// or $macrobody =~ s/^(\@r?macro\s+\w+\s*.*)//)
+ { # \ protect @end macro
+ $result .= $1;
+ }
+ elsif ($macrobody =~ s/^([^\\]*)\\//)
+ {
+ my $arg = $1;
+ if (defined($args_index->{$arg}))
+ {
+ $result .= $args->[$args_index->{$arg}];
+ }
+ else
+ {
+ warn "$ERROR \\ not followed by \\ or an arg but by $arg in macro\n";
+ $result .= '\\' . $arg;
+ }
+ }
+ next;
+ }
+ $result .= $macrobody;
+ last;
+ }
+ my @result = split(/^/m, $result);
+ # Add the result of the macro expansion back to the input_spool.
+ # Set the macro name if in the outer macro
+ if ($state->{'arg_expansion'})
+ {
+ unshift @{$state->{'spool'}}, (@result, $end_line);
+ }
+ else
+ {
+ unshift @{$input_spool->{'spool'}}, (@result, $end_line);
+ $input_spool->{'macro'} = $name if ($input_spool->{'macro'} eq '');
+ }
+ if ($T2H_DEBUG & $DEBUG_MACROS)
+ {
+ print STDERR "# macro expansion result:\n";
+ #print STDERR "$first_line";
+ foreach my $line (@result)
+ {
+ print STDERR "$line";
+ }
+ print STDERR "# macro expansion result end\n";
+ }
+}
+
+sub do_index_summary_file($)
+{
+ my $name = shift;
+ my ($pages, $entries) = get_index($name);
+ &$Texi2HTML::Config::index_summary_file_begin ($name, $printed_indices{$name});
+ print STDERR "# writing $name index summary\n" if $T2H_VERBOSE;
+
+ foreach my $key (sort keys %$entries)
+ {
+ my $entry = $entries->{$key};
+ my $indexed_element = $entry->{'element'};
+ my $entry_element = $indexed_element;
+ # notice that we use the section associated with a node even when
+ # there is no with_section, i.e. when there is another node preceding
+ # the sectionning command.
+ # However when it is the Top node, we use the node instead.
+ # (for the Top node, 'top_as_section' is true)
+ $entry_element = $entry_element->{'section_ref'} if ($entry_element->{'section_ref'} and !$entry_element->{'top_as_section'});
+ my $origin_href = $entry->{'file'};
+ #print STDERR "$entry $entry->{'entry'}, real elem $indexed_element->{'texi'}, section $entry_element->{'texi'}, real $indexed_element->{'file'}, entry file $entry->{'file'}\n";
+ if ($entry->{'label'})
+ {
+ $origin_href .= '#' . $entry->{'label'};
+ }
+ else
+ {
+ # If the $indexed_element element and the $index entry are on
+ # the same
+ # file the real element is prefered. If they aren't on the same file
+ # the entry id is choosed as it means that the real element
+ # and the index entry are separated by a printindex.
+ print STDERR "id undef ($entry) entry: $entry->{'entry'}, label: $indexed_element->{'text'}\n" if (!defined($entry->{'id'}));
+ if ($entry->{'file'} eq $indexed_element->{'file'})
+ {
+ $origin_href .= '#' . $indexed_element->{'id'};
+ }
+ else
+ {
+ $origin_href .= '#' . $entry->{'id'} ;
+ }
+ }
+ &$Texi2HTML::Config::index_summary_file_entry ($name,
+ $key, $origin_href,
+ substitute_line($entry->{'entry'}), $entry->{'entry'},
+ href($entry_element, ''),
+ $entry_element->{'text'},
+ $printed_indices{$name});
+ }
+ &$Texi2HTML::Config::index_summary_file_end ($name, $printed_indices{$name});
+}
+
+sub do_index_page($$;$)
+{
+ my $index_elements = shift;
+ my $nr = shift;
+ my $page = shift;
+ my $index_element = $index_elements->[$nr];
+ my $summary = do_index_summary($index_element->{'element'}, $index_elements);
+ my $entries = do_index_entries($index_element->{'element'}, $index_element->{'page'}, $index_element->{'name'});
+ return $summary . $entries . $summary;
+}
+
+sub do_index_summary($$)
+{
+ my $element = shift;
+ my $index_elements = shift;
+
+ my @letters;
+ my @symbols;
+
+ for my $index_element_item (@$index_elements)
+ {
+ my $index_element = $index_element_item->{'element'};
+ my $file = '';
+ $file .= $index_element->{'file'} if ($index_element->{'file'} ne $element->{'file'});
+ my $index = 0;
+ for my $letter (@{$index_element_item->{'page'}->{'letters'}})
+ {
+ if ($letter =~ /^[A-Za-z]/)
+ {
+ push @letters, &$Texi2HTML::Config::summary_letter($letter, $file, "$index_element->{'id'}" . "_$index");
+ }
+ else
+ {
+ push @symbols, &$Texi2HTML::Config::summary_letter($letter, $file, "$index_element->{'id'}" . "_$index");
+ }
+ $index++;
+ }
+ }
+ return &$Texi2HTML::Config::index_summary(\@letters, \@symbols);
+}
+
+sub do_index_entries($$$)
+{
+ my $element = shift;
+ my $page = shift;
+ my $name = shift;
+
+ my $letters = '';
+ my $index = 0;
+ foreach my $letter (@{$page->{'letters'}})
+ {
+ my $entries = '';
+ foreach my $entry (@{$page->{'entries_by_letter'}->{$letter}})
+ {
+ my $indexed_element = $entry->{'element'};
+ my $entry_element = $indexed_element;
+ # notice that we use the section associated with a node even when
+ # there is no with_section, i.e. when there is another node preceding
+ # the sectionning command.
+ # However when it is the Top node, we use the node instead.
+ # (for the Top node, 'top_as_section' is true)
+ $entry_element = $entry_element->{'section_ref'} if ($entry_element->{'section_ref'} and !$entry_element->{'top_as_section'});
+ my $origin_href = '';
+ $origin_href = $entry->{'file'} if ($Texi2HTML::Config::SPLIT and $entry->{'file'} ne $element->{'file'});
+ #print STDERR "$entry $entry->{'entry'}, real elem $indexed_element->{'texi'}, section $entry_element->{'texi'}, real $indexed_element->{'file'}, entry file $entry->{'file'}\n";
+ if ($entry->{'label'})
+ {
+ $origin_href .= '#' . $entry->{'label'};
+ }
+ else
+ {
+ # If the $indexed_element element and the $index entry are
+ # in the same file the indexed_element is prefered. If they
+ # aren't in the same file the entry id is choosed as it means
+ # that the indexed_element element and the index entry are
+ # separated by a printindex.
+ print STDERR "id undef ($entry) entry: $entry->{'entry'}, label: $indexed_element->{'text'}\n" if (!defined($entry->{'id'}));
+ if ($entry->{'file'} eq $indexed_element->{'file'})
+ {
+ $origin_href .= '#' . $indexed_element->{'id'};
+ }
+ else
+ {
+ $origin_href .= '#' . $entry->{'id'} ;
+ }
+ }
+ #print STDERR "SUBHREF in index entry `$entry->{'entry'}' for `$entry_element->{'texi'}'\n";
+ $entries .= &$Texi2HTML::Config::index_entry ($origin_href,
+ substitute_line($entry->{'entry'}),
+ href($entry_element, $element->{'file'}),
+ $entry_element->{'text'});
+ }
+ $letters .= &$Texi2HTML::Config::index_letter ($letter, "$element->{'id'}" . "_$index", $entries);
+ $index++;
+ }
+ return &$Texi2HTML::Config::print_index($letters, $name);
+}
+
+# remove texi commands, replacing with what seems adequate. see simple_map_texi
+# and texi_map.
+# Doesn't protect html
+sub remove_texi(@)
+{
+ return substitute_text ({ 'remove_texi' => 1}, @_);
+}
+
+# Same as remove texi but protect text and use special maps for @-commands
+sub simple_format($@)
+{
+ my $state = shift;
+ $state = {} if (!defined($state));
+ $state->{'remove_texi'} = 1;
+ $state->{'simple_format'} = 1;
+ # WARNING currently it is only used for lines. It may change in the future.
+ $state->{'no_paragraph'} = 1;
+ $::simple_map_texi_ref = \%Texi2HTML::Config::simple_format_simple_map_texi;
+ $::style_map_texi_ref = \%Texi2HTML::Config::simple_format_style_map_texi;
+ $::texi_map_ref = \%Texi2HTML::Config::simple_format_texi_map;
+ my $text = substitute_text($state, @_);
+ $::simple_map_texi_ref = \%Texi2HTML::Config::simple_map_texi;
+ $::style_map_texi_ref = \%Texi2HTML::Config::style_map_texi;
+ $::texi_map_ref = \%Texi2HTML::Config::texi_map;
+ return $text;
+}
+
+sub enter_table_index_entry($$$$)
+{
+ my $text = shift;
+ my $stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+ if ($state->{'item'} and ($state->{'table_stack'}->[-1] =~ /^(v|f)table$/))
+ {
+ my $index = $1;
+ my $macro = $state->{'item'};
+ delete $state->{'item'};
+ close_stack($text, $stack, $state, $line_nr, undef, 'index_item');
+ my $item = pop @$stack;
+ my $element = $state->{'element'};
+ $element = $state->{'node_ref'} unless ($element);
+ enter_index_entry($index, $line_nr, $item->{'text'},
+ $state->{'place'}, $element, 0, $state->{'table_stack'}->[-1]);
+ add_prev($text, $stack, "\@$macro" . $item->{'text'});
+ }
+}
+
+sub scan_texi($$$$;$)
+{
+ my $line = shift;
+ my $text = shift;
+ my $stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+
+ die "stack not an array ref" unless (ref($stack) eq "ARRAY");
+ local $_ = $line;
+
+ while(1)
+ {
+ # scan_texi
+ #print STDERR "WHILE:$_";
+ #print STDERR "ARG_EXPANSION: $state->{'arg_expansion'}\n" if ($state->{'arg_expansion'});
+ #dump_stack($text, $stack, $state);
+ #print STDERR "ifvalue_inside $state->{'ifvalue_inside'}\n";
+
+
+ # first we handle special cases:
+ # macro definition: $state->{'macro_inside'}
+ # macro arguments: $state->{'macro_name'}
+ # raw format: $state->{'raw'}
+ # @verb: $state->{'verb'}
+ # ignored: $state->{'ignored'}
+ # and then the remaining text/macros.
+
+ # in macro definition
+ if ($state->{'macro_inside'})
+ {
+ if (s/^([^\\\@]*\\)//)
+ {# protected character or @end macro
+ $state->{'macro'}->{'body'} .= $1 unless ($state->{'ignored'});
+ if (s/^\\//)
+ {
+ $state->{'macro'}->{'body'} .= '\\' unless ($state->{'ignored'});
+ next;
+ }
+ # I believe it is correct, although makeinfo don't do that.
+ elsif (s/^(\@end\sr?macro)$//o or s/^(\@end\sr?macro\s)//o
+ or s/^(\@r?macro\s+\w+\s*.*)//o)
+ {
+ $state->{'macro'}->{'body'} .= $1 unless ($state->{'ignored'});
+ next;
+ }
+ }
+ #if (s/^(.*?)\@end\sr?macro$//o or s/^(.*?)\@end\sr?macro\s+//o)
+ if (s/^(\@end\sr?macro)$//o or s/^(\@end\sr?macro\s+)//o)
+ {
+ $state->{'macro_inside'}--;
+ next if ($state->{'ignored'});
+ if ($state->{'macro_inside'})
+ {
+ $state->{'macro'}->{'body'} .= $1;
+ next;
+ }
+ chomp $state->{'macro'}->{'body'};
+ print STDERR "# end macro def. Body:\n$state->{'macro'}->{'body'}"
+ if ($T2H_DEBUG & $DEBUG_MACROS);
+ delete $state->{'macro'};
+ return if (/^\s*$/);
+ next;
+ }
+ elsif(/^(\@r?macro\s+\w+\s*.*)/)
+ {
+ $state->{'macro'}->{'body'} .= $_ unless ($state->{'ignored'});
+ $state->{'macro_inside'}++;
+ return;
+ }
+ elsif (s/^\@(.)//)
+ {
+ $state->{'macro'}->{'body'} .= '@' . $1 unless ($state->{'ignored'});
+ next;
+ }
+ elsif (s/^\@//)
+ {
+ $state->{'macro'}->{'body'} .= '@' unless ($state->{'ignored'});
+ next;
+ }
+ else
+ {
+ s/([^\@\\]*)//;
+ if ($state->{'ignored'})
+ {
+ return if (/^$/);
+ next;
+ }
+ $state->{'macro'}->{'body'} .= $1 if (defined($1));
+ if (/^$/)
+ {
+ $state->{'macro'}->{'body'} .= $_;
+ return;
+ }
+ next;
+ }
+ }
+ # in macro arguments parsing/expansion. Here \ { } and , if this is a
+ # multi args macro have a signification, the remaining is passed
+ # unmodified
+ if (defined($state->{'macro_name'}))
+ {
+ my $special_chars = quotemeta ('\{}');
+ my $multi_args = 0;
+ my $formal_args = $macros->{$state->{'macro_name'}}->{'args'};
+ $multi_args = 1 if ($#$formal_args >= 1);
+ $special_chars .= quotemeta(',') if ($multi_args);
+ if ($state->{'macro_args'}->[-1] eq '')
+ {# remove space at the very beginning
+ s/^\s*//o;
+ }
+ if (s/^([^$special_chars]*)([$special_chars])//)
+ {
+ $state->{'macro_args'}->[-1] .= $1 if defined($1);
+ # \ protects any character in macro arguments
+ if ($2 eq '\\')
+ {
+ print STDERR "# macro call: protected char\n" if ($T2H_DEBUG & $DEBUG_MACROS);
+ if (s/^(.)//)
+ {
+ $state->{'macro_args'}->[-1] .= $1;
+ }
+ else
+ {
+ $state->{'macro_args'}->[-1] .= '\\';
+ }
+ }
+ elsif ($2 eq ',')
+ { # in texinfo 4.8.90 a comma in braces is protected
+ if ($state->{'macro_depth'} > 1)
+ {
+ $state->{'macro_args'}->[-1] .= ',';
+ }
+ else
+ { # separate args
+ print STDERR "# macro call: new arg\n" if ($T2H_DEBUG & $DEBUG_MACROS);
+ s/^\s*//o;
+ push @{$state->{'macro_args'}}, '';
+ }
+ }
+ elsif ($2 eq '}')
+ { # balanced } ends the macro call, otherwise it is in the arg
+ $state->{'macro_depth'}--;
+ if ($state->{'macro_depth'} == 0)
+ {
+ print STDERR "# expanding macro $state->{'macro_name'}\n" if ($T2H_DEBUG & $DEBUG_MACROS);
+ $_ = expand_macro($state->{'macro_name'}, $state->{'macro_args'}, $_, $line_nr, $state);
+ delete $state->{'macro_name'};
+ delete $state->{'macro_depth'};
+ delete $state->{'macro_args'};
+ return;
+ }
+ else
+ {
+ print STDERR "# macro call: closing }\n" if ($T2H_DEBUG & $DEBUG_MACROS);
+ add_text('}', \$state->{'macro_args'}->[-1]);
+ }
+ }
+ elsif ($2 eq '{')
+ {
+ print STDERR "# macro call: opening {\n" if ($T2H_DEBUG & $DEBUG_MACROS);
+ $state->{'macro_depth'}++;
+ add_text('{', \$state->{'macro_args'}->[-1]);
+ }
+ next;
+ }
+ print STDERR "# macro call: end of line\n" if ($T2H_DEBUG & $DEBUG_MACROS);
+ $state->{'macro_args'}->[-1] .= $_;
+ return;
+ }
+ # in a raw format, verbatim, tex or html
+ if ($state->{'raw'})
+ {
+ my $tag = $state->{'raw'};
+
+ # debugging
+ if (! @$stack or ($stack->[-1]->{'style'} ne $tag))
+ {
+ print STDERR "Bug: raw or special: $tag but not on top of stack\n";
+ print STDERR "line: $_";
+ dump_stack($text, $stack, $state);
+ exit 1;
+ }
+
+ if (s/^(.*?)(\@end\s$tag)$// or s/^(.*?)(\@end\s$tag\s)//)
+ {# we add it even if 'ignored', it'll be discarded when there is
+ # the @end
+ add_prev ($text, $stack, $1);
+ my $end = $2;
+ my $style = pop @$stack;
+ if ($style->{'text'} !~ /^\s*$/ or $state->{'arg_expansion'})
+ # FIXME if 'arg_expansion' and also 'ignored' is true,
+ # theoretically we should keep
+ # what is in the raw format however
+ # it will be removed later anyway
+ {# ARG_EXPANSION
+ my $after_macro = '';
+ $after_macro = ' ' unless (/^\s*$/);
+ add_prev ($text, $stack, $style->{'text'} . $end . $after_macro) unless ($state->{'ignored'});
+ delete $state->{'raw'};
+ }
+ next;
+ }
+ else
+ {# we add it even if 'ignored', it'll be discarded when there is
+ # the @end
+ add_prev ($text, $stack, $_);
+ last;
+ }
+ }
+
+ # in a @verb{ .. } macro
+ if (defined($state->{'verb'}))
+ {
+ #dump_stack($text, $stack, $state);
+ my $char = quotemeta($state->{'verb'});
+ #print STDERR "VERB $char\n";
+ if (s/^(.*?)$char\}/\}/)
+ {# we add it even if 'ignored', it'll be discarded when closing
+ add_prev($text, $stack, $1 . $state->{'verb'});
+ $stack->[-1]->{'text'} = $state->{'verb'} . $stack->[-1]->{'text'};
+ delete $state->{'verb'};
+ next;
+ }
+ else
+ {# we add it even if 'ignored', it'll be discarded when closing
+ add_prev($text, $stack, $_);
+ last;
+ }
+ }
+ # In ignored region
+ if ($state->{'ignored'})
+ {
+ #print STDERR "IGNORED(ifvalue($state->{'ifvalue_inside'})): $state->{'ignored'}\n";
+ if (/^.*?\@end(\s+)([a-zA-Z]\w+)/)
+ {
+ if ($2 eq $state->{'ignored'})
+ {
+ s/^(.*?\@end)(\s+)([a-zA-Z]\w+)//;
+ my $end_ignore = $1.$2.$3;
+ if (($state->{'ifvalue_inside'}) and $state->{'ignored'} eq $state->{'ifvalue'})
+ {
+ if ($state->{'ifvalue_inside'} == 1)
+ {# closing still opened @-commands with braces
+ pop (@$stack) while (@$stack and $stack->[-1]->{'style'} ne 'ifvalue')
+ }
+ pop (@$stack);
+ $state->{'ifvalue_inside'}--;
+ }
+ $state->{'ignored'} = undef;
+ delete $state->{'ignored'};
+ # We are stil in the ignored ifset or ifclear section
+ $state->{'ignored'} = $state->{'ifvalue'} if ($state->{'ifvalue_inside'});
+ #dump_stack($text, $stack, $state);
+ # MACRO_ARG => keep ignored text
+ if ($state->{'arg_expansion'})
+ {# this may not be very usefull as it'll be remove later
+ add_prev ($text, $stack, $end_ignore);
+ next;
+ }
+ return if /^\s*$/o;
+ next;
+ }
+ }
+ add_prev ($text, $stack, $_) if ($state->{'arg_expansion'});
+ # we could theoretically continue for ignored commands other
+ # than ifset or ifclear, however it isn't usefull.
+ return unless ($state->{'ifvalue_inside'} and ($state->{'ignored'} eq $state->{'ifvalue'}));
+ }
+
+
+ # an @end tag
+ # macro_regexp
+ if (s/^([^{}@]*)\@end(\s+)([a-zA-Z][\w-]*)//)
+ {
+ my $leading_text = $1;
+ my $space = $2;
+ my $end_tag = $3;
+ # when 'ignored' we don't open environments that aren't associated
+ # with ignored regions, so we don't need to close them.
+ next if ($state->{'ignored'});# ARG_EXPANSION
+ add_prev($text, $stack, $leading_text);
+ if (defined($state->{'text_macro_stack'})
+ and @{$state->{'text_macro_stack'}}
+ and ($end_tag eq $state->{'text_macro_stack'}->[-1]))
+ {
+ pop @{$state->{'text_macro_stack'}};
+ # we keep menu and titlepage for the following pass
+ if ((($end_tag eq 'menu') and $text_macros{'menu'}) or ($region_lines{$end_tag}) or $state->{'arg_expansion'})
+ {
+ add_prev($text, $stack, "\@end${space}$end_tag");
+ }
+ else
+ {
+ #print STDERR "End $end_tag\n";
+ #dump_stack($text, $stack, $state);
+ return if (/^\s*$/);
+ }
+ }
+ elsif ($text_macros{$end_tag})
+ {
+ echo_error ("\@end $end_tag without corresponding element", $line_nr);
+ }
+ else
+ {# ARG_EXPANSION
+ add_prev($text, $stack, "\@end${space}$end_tag");
+ }
+ next;
+ }
+ # macro_regexp
+ elsif (s/^([^{}@]*)\@(["'~\@\}\{,\.!\?\s\*\-\^`=:\|\/])//o or s/^([^{}@]*)\@([a-zA-Z][\w-]*)([\s\{\}\@])/$3/o or s/^([^{}@]*)\@([a-zA-Z][\w-]*)$//o)
+ {# ARG_EXPANSION
+ add_prev($text, $stack, $1) unless $state->{'ignored'};
+ my $macro = $2;
+ #print STDERR "MACRO $macro\n";
+ # handle skipped @-commands
+ $state->{'bye'} = 1 if ($macro eq 'bye' and !$state->{'ignored'} and !$state->{'arg_expansion'});
+ if (defined($Texi2HTML::Config::misc_command{$macro}) and
+ !$Texi2HTML::Config::misc_command{$macro}->{'texi'}
+ and $macro ne 'documentencoding')
+ {# ARG_EXPANSION
+ my ($line, $args);
+ ($_, $line, $args) = preserve_command($_, $macro);
+ add_prev ($text, $stack, "\@$macro" . $line) unless $state->{'ignored'};
+ }
+ # pertusus: it seems that value substitution are performed after
+ # macro argument expansions: if we have
+ # @set comma ,
+ # and a call to a macro @macro {arg1 @value{comma} arg2}
+ # the macro arg is arg1 , arg2 and the comma don't separate
+ # args. Likewise it seems that the @value are not expanded
+ # in macro definitions
+
+ # track variables
+ elsif($macro eq 'set' or $macro eq 'clear')
+ {
+ if ($macro eq 'set')
+ {
+ if (s/^(\s+)($VARRE)(\s+)(.*)$//o)
+ {
+ if ($state->{'arg_expansion'})
+ {
+ my $line = "\@$macro" . $1.$2.$3;
+ $line .= $4 if (defined($4));
+ add_prev($text, $stack, $line);
+ next;
+ }
+ next if $state->{'ignored'};
+ $value{$2} = $4;
+ }
+ else
+ {
+ echo_warn ("Missing argument for \@$macro", $line_nr);
+ }
+ }
+ elsif ($macro eq 'clear')
+ {
+ if (s/^(\s+)($VARRE)//o)
+ {
+ if ($state->{'arg_expansion'})
+ {
+ add_prev($text, $stack, "\@$macro" . $1 . $2);
+ next;
+ }
+ next if $state->{'ignored'};
+ delete $value{$2};
+ }
+ else
+ {
+ echo_warn ("Missing argument for \@$macro", $line_nr);
+ }
+ }
+ return if (/^\s*$/);
+ }
+ elsif ($macro =~ /^r?macro$/)
+ { #FIXME what to do if 'arg_expansion' is true (ie within another
+ # macro call arguments?
+ if (/^\s+(\w[\w-]*)\s*(.*)/)
+ {
+ my $name = $1;
+ unless ($state->{'ignored'})
+ {
+ if (exists($macros->{$name}))
+ {
+ echo_warn ("macro `$name' allready defined " .
+ format_line_number($macros->{$name}->{'line_nr'}) . " redefined", $line_nr);
+ }
+
+ }
+ $state->{'macro_inside'} = 1;
+ next if ($state->{'ignored'});
+ # if in 'arg_expansion' we really want to take into account
+ # that we are in an ignored ifclear.
+ my @args = ();
+ @args = split(/\s*,\s*/ , $1)
+ if ($2 =~ /^\s*{\s*(.*?)\s*}\s*/);
+ # keep the context information of the definition
+ $macros->{$name}->{'line_nr'} = { 'file_name' => $line_nr->{'file_name'},
+ 'line_nr' => $line_nr->{'line_nr'}, 'macro' => $line_nr->{'macro'} } if (defined($line_nr));
+ $macros->{$name}->{'args'} = \@args;
+ my $arg_index = 0;
+ my $debug_msg = '';
+ foreach my $arg (@args)
+ { # when expanding macros, the argument index is retrieved
+ # with args_index
+ $macros->{$name}->{'args_index'}->{$arg} = $arg_index;
+ $debug_msg .= "$arg($arg_index) ";
+ $arg_index++;
+ }
+ $macros->{$name}->{'body'} = '';
+ $state->{'macro'} = $macros->{$name};
+ print STDERR "# macro def $name: $debug_msg\n"
+ if ($T2H_DEBUG & $DEBUG_MACROS);
+ }
+ else
+ {# it means we have a macro without a name
+ echo_error ("Macro definition without macro name $_", $line_nr)
+ unless ($state->{'ignored'});
+ }
+ return;
+ }
+ elsif (defined($text_macros{$macro}))
+ {
+ my $tag;
+ ($_, $tag) = do_text_macro($macro, $_, $state, $stack, $line_nr);
+ # if it is a raw formatting command or a menu command
+ # we must keep it for later, unless we are in an 'ignored'.
+ # if in 'arg_expansion' we keep everything.
+ my $macro_kept;
+ if ((($state->{'raw'} or (($macro eq 'menu') and $text_macros{'menu'}) or (exists($region_lines{$macro}))) and !$state->{'ignored'}) or $state->{'arg_expansion'})
+ {
+ add_prev($text, $stack, $tag);
+ $macro_kept = 1;
+ }
+ #dump_stack ($text, $stack, $state);
+ next if $macro_kept;
+ return if (/^\s*$/);
+ }
+ elsif ($macro eq 'documentencoding')
+ {
+ my $spaces = '';
+ my $encoding = '';
+ if (s/(\s+)([0-9\w\-]+)//)
+ {
+ $spaces = $1;
+ $encoding = $2;
+ next if ($state->{'ignored'});
+ if (!$state->{'arg_expansion'} and !$state->{'ignored'})
+ {
+ $Texi2HTML::Config::DOCUMENT_ENCODING = $encoding;
+ my $from_encoding = encoding_alias($encoding);
+ $Texi2HTML::Config::IN_ENCODING = $from_encoding if
+ defined($from_encoding);
+ if (defined($from_encoding) and $Texi2HTML::Config::USE_UNICODE)
+ {
+ foreach my $file (@fhs)
+ {
+ binmode($file->{'fh'}, ":encoding($from_encoding)");
+ }
+ }
+ }
+ }# ARG_EXPANSION
+ add_prev($text, $stack, "\@$macro" . $spaces . $encoding) unless ($state->{'ignored'});
+ }
+ elsif ($macro eq 'definfoenclose')
+ {
+ # FIXME if 'ignored' or 'arg_expansion' maybe we could parse
+ # the args anyway and don't take away the whole line?
+
+ # as in the makeinfo doc 'definfoenclose' may override
+ # texinfo @-commands like @i. It is what we do here.
+ if ($state->{'arg_expansion'})
+ {
+ add_prev($text, $stack, "\@$macro" . $_);
+ return;
+ }
+ return if ($state->{'ignored'});
+ if (s/^\s+([a-z]+)\s*,\s*([^\s]+)\s*,\s*([^\s]+)//)
+ {
+ $info_enclose{$1} = [ $2, $3 ];
+ }
+ else
+ {
+ echo_error("Bad \@$macro", $line_nr);
+ }
+ return if (/^\s*$/);
+ s/^\s*//;
+ }
+ elsif ($macro eq 'include')
+ {
+ if ($state->{'arg_expansion'})
+ {
+ add_prev($text, $stack, "\@$macro" . $_);
+ return;
+ }
+ return if ($state->{'ignored'});
+ #if (s/^\s+([\/\w.+-]+)//o)
+ if (s/^(\s+)(.*)//o)
+ {
+ my $file_name = $2;
+ $file_name =~ s/\s*$//;
+ my $file = locate_include_file($file_name);
+ if (defined($file))
+ {
+ open_file($file, $line_nr);
+ print STDERR "# including $file\n" if $T2H_VERBOSE;
+ }
+ else
+ {
+ echo_error ("Can't find $file_name, skipping", $line_nr);
+ }
+ }
+ else
+ {
+ echo_error ("Bad include line: $_", $line_nr);
+ return;
+ }
+ return;
+ }
+ elsif ($macro eq 'value')
+ {
+ if (s/^{($VARRE)}//)
+ {
+ my $value = $1;
+ if ($state->{'arg_expansion'})
+ {
+ add_prev($text, $stack, "\@$macro" .'{'. $value .'}');
+ next;
+ }
+ next if ($state->{'ignored'});
+ my $expansion = "No value for $value";
+ $expansion = $value{$value} if (defined($value{$value}));
+ $_ = $expansion . $_;
+ }
+ else
+ {
+ if ($state->{'arg_expansion'})
+ {
+ add_prev($text, $stack, "\@$macro");
+ next;
+ }
+ next if ($state->{'ignored'});
+ echo_error ("bad \@value macro", $line_nr);
+ }
+ }
+ elsif ($macro eq 'unmacro')
+ { #FIXME with 'arg_expansion' should it be passed unmodified ?
+ if ($state->{'ignored'})
+ {
+ s/^\s+(\w+)//;
+ }
+ else
+ {
+ delete $macros->{$1} if (s/^\s+(\w+)//);
+ }
+ return if (/^\s*$/);
+ s/^\s*//;
+ }
+ elsif (exists($macros->{$macro}))
+ {# it must be before the handling of {, otherwise it is considered
+ # to be regular texinfo @-command. Maybe it could be placed higher
+ # if we want user defined macros to override texinfo @-commands
+
+ # in 'ignored' we parse macro defined args anyway as it removes
+ # some text, but we don't expand the macro
+
+ my $ref = $macros->{$macro}->{'args'};
+ # we remove any space/new line before the argument
+ if (s/^\s*{\s*//)
+ { # the macro has args
+ $state->{'macro_args'} = [ "" ];
+ $state->{'macro_name'} = $macro;
+ $state->{'macro_depth'} = 1;
+ }
+ elsif (($#$ref >= 1) or ($#$ref <0))
+ { # no brace -> no arg
+ $_ = expand_macro ($macro, [], $_, $line_nr, $state);
+ return;
+ }
+ else
+ { # macro with one arg on the line
+ chomp $_;
+ $_ = expand_macro ($macro, [$_], "\n", $line_nr, $state);
+ return;
+ }
+ }
+ elsif ($macro eq ',')
+ {# the @, causes problems when `,' separates things (in @node, @ref)
+ $_ = "\@m_cedilla" . $_;
+ } # handling of @, must be done before handling of {
+ elsif (s/^{//)
+ {# we add nested commands in a stack. verb is also on the stack
+ # but handled specifically.
+ # we add it the comands even in 'ignored' as their result is
+ # discarded when the closing brace appear, or the ifset or
+ # iclear is closed.
+ if ($macro eq 'verb')
+ {
+ if (/^$/)
+ {
+ echo_error ("without associated character", $line_nr);
+ #warn "$ERROR verb at end of line";
+ }
+ else
+ {
+ s/^(.)//;
+ $state->{'verb'} = $1;
+ }
+ }
+ push (@$stack, { 'style' => $macro, 'text' => '' });
+ }
+ else
+ {
+ add_prev($text, $stack, "\@$macro") unless($state->{'ignored'});
+ }
+ next;
+ }
+ #elsif(s/^([^{}@]*)\@(.)//o)
+ elsif(s/^([^{}@]*)\@([^\s\}\{\@]*)//o)
+ {# ARG_EXPANSION
+ # No need to warn here for @ followed by a character that
+ # is not in any @-command and it is done later
+ add_prev($text, $stack, $1 . "\@$2") unless($state->{'ignored'});
+ next;
+ }
+ elsif (s/^([^{}]*)([{}])//o)
+ {
+ # in ignored section we cannot be sure that there is an @-command
+ # allready opened so we must discard the text.
+ # ARG_EXPANSION
+ add_prev($text, $stack, $1) unless($state->{'ignored'});
+ if ($2 eq '{')
+ {
+ # this empty style is for a lone brace.
+ # we add it even in 'ignored' as it is discarded when the closing
+ # brace appear, or the ifset or iclear is closed.
+ push @$stack, { 'style' => '', 'text' => '' };
+ }
+ else
+ {
+ if (@$stack)
+ {
+ my $style = pop @$stack;
+ my $result;
+ if (($style->{'style'} ne '') and exists($info_enclose{$style->{'style'}}) and !$state->{'arg_expansion'})
+ {
+ $result = $info_enclose{$style->{'style'}}->[0] . $style->{'text'} . $info_enclose{$style->{'style'}}->[1];
+ }
+ elsif ($style->{'style'} ne '')
+ {
+ $result = '@' . $style->{'style'} . '{' . $style->{'text'} . '}';
+ }
+ else
+ {
+ $result = '{' . $style->{'text'};
+ # don't close { if we are closing stack as we are not
+ # sure this is a { ... } construct. i.e. we are
+ # not sure that the user properly closed the matching
+ # brace, so we don't close it ourselves
+ $result .= '}' unless ($state->{'close_stack'} or $state->{'arg_expansion'});
+ }
+ if ($state->{'ignored'})
+ {# ARG_EXPANSION
+ print STDERR "# Popped `$style->{'style'}' in ifset/ifclear\n" if ($T2H_DEBUG);
+ next;
+ }
+ add_prev ($text, $stack, $result);
+ #print STDERR "MACRO end $style->{'style'} remaining: $_";
+ next;
+ }
+ else
+ {# ARG_EXPANSION
+ # we warn in the last pass that there is a } without open
+ add_prev ($text, $stack, '}') unless($state->{'ignored'});
+ }
+ }
+ }
+ else
+ {# ARG_EXPANSION
+ #print STDERR "END_LINE $_";
+ add_prev($text, $stack, $_) unless($state->{'ignored'});
+ last;
+ }
+ }
+ return undef if ($state->{'ignored'});
+ return 1;
+}
+
+sub close_structure_command($$$$)
+{
+ my $cmd_ref = shift;
+ my $state = shift;
+ my $unclosed_commands = shift;
+ my $line_nr = shift;
+ my $result;
+
+ if ($cmd_ref->{'style'} eq 'anchor')
+ {
+ my $anchor = $cmd_ref->{'text'};
+ $anchor = normalise_node($anchor);
+ if ($nodes{$anchor})
+ {
+ echo_error ("Duplicate node for anchor found: $anchor", $line_nr);
+ return '';
+ }
+ $anchor_num++;
+ $nodes{$anchor} = { 'anchor' => 1, 'seen' => 1, 'texi' => $anchor, 'id' => 'ANC' . $anchor_num};
+ push @{$state->{'place'}}, $nodes{$anchor};
+ }
+ elsif ($cmd_ref->{'style'} eq 'footnote')
+ {
+ if ($Texi2HTML::Config::SEPARATED_FOOTNOTES)
+ {
+ $state->{'element'} = $state->{'footnote_element'};
+ $state->{'place'} = $state->{'footnote_place'};
+ }
+ }
+ elsif ($cmd_ref->{'style'} eq 'caption' or $cmd_ref->{'style'}
+ eq 'shortcaption' and $state->{'float'})
+ {
+ my @texi_lines = map {$_ = $_."\n"} split (/\n/, $cmd_ref->{'text'});
+ $state->{'float'}->{$cmd_ref->{'style'} . "_texi"} = \@texi_lines;
+ }
+ if (($cmd_ref->{'style'} eq 'titlefont') and ($cmd_ref->{'text'} =~ /\S/))
+ {
+ $state->{'element'}->{'titlefont'} = $cmd_ref->{'text'} unless ((exists($state->{'region_lines'}) and ($state->{'region_lines'}->{'format'} eq 'titlepage')) or defined($state->{'element'}->{'titlefont'})) ;
+ }
+ if (defined($Texi2HTML::Config::command_handler{$cmd_ref->{'style'}}))
+ {
+ $result = init_special($cmd_ref->{'style'},$cmd_ref->{'text'});
+ if ($unclosed_commands)
+ {
+ $result .= "\n"; # the end of line is eaten by init_special
+ echo_error("Closing specially handled \@-command $cmd_ref->{'style'}",$line_nr);
+ }
+ }
+ elsif ($cmd_ref->{'style'})
+ {
+ $result = '@' . $cmd_ref->{'style'} . '{' . $cmd_ref->{'text'};
+ $result .= '}' unless ($unclosed_commands);
+ }
+ else
+ {
+ $result = '{' . $cmd_ref->{'text'};
+ # don't close { if we are closing stack as we are not
+ # sure this is a licit { ... } construct.
+ $result .= '}' unless ($unclosed_commands);
+ }
+ return $result;
+}
+
+sub scan_structure($$$$;$)
+{
+ my $line = shift;
+ my $text = shift;
+ my $stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+
+ die "stack not an array ref" unless (ref($stack) eq "ARRAY");
+ local $_ = $line;
+ #print STDERR "SCAN_STRUCTURE: $line";
+ #dump_stack ($text, $stack, $state);
+ if (!$state->{'raw'} and (!exists($state->{'region_lines'})))
+ {
+ if (!$state->{'verb'} and $state->{'menu'} and /^\*/o)
+ {
+ # new menu entry
+ delete ($state->{'after_element'});
+ my $menu_line = $_;
+ my $node;
+ if (/^\*\s+($NODERE)::/)
+ {
+ $node = $1;
+ }
+ elsif (/^\*\s+([^:]+):\s*([^\t,\.\n]+)[\t,\.\n]/)
+ {
+ #$name = $1;
+ $node = $2;
+ }
+ if ($node)
+ {
+ menu_entry_texi(normalise_node($node), $state, $line_nr);
+ }
+ }
+ unless (no_line($_))
+ {
+ delete $state->{'after_element'};
+ }
+ }
+
+ while(1)
+ {
+ # scan structure
+ #print STDERR "WHILE (s):$_";
+ #dump_stack($text, $stack, $state);
+
+ # as texinfo 4.5
+ # verbatim might begin at another position than beginning
+ # of line, and end verbatim might too. To end a verbatim section
+ # @end verbatim must have exactly one space between end and verbatim
+ # things following end verbatim are not ignored.
+ #
+ # html might begin at another position than beginning
+ # of line, but @end html must begin the line, and have
+ # exactly one space. Things following end html are ignored.
+ # tex and ignore works like html
+ #
+ # ifnothtml might begin at another position than beginning
+ # of line, and @end ifnothtml might too, there might be more
+ # than one space between @end and ifnothtml but nothing more on
+ # the line.
+ # @end itemize, @end ftable works like @end ifnothtml.
+ # except that @item on the same line than @end vtable doesn't work
+ #
+ # text right after the itemize before an item is displayed.
+ # @item might be somewhere in a line.
+ # strangely @item on the same line than @end vtable doesn't work
+ # there should be nothing else than a command following @itemize...
+ #
+ # see more examples in formatting directory
+
+ if ($state->{'raw'})
+ {
+ my $tag = $state->{'raw'};
+ ################# debug
+ if (! @$stack or ($stack->[-1]->{'style'} ne $tag))
+ {
+ print STDERR "Bug: raw or special: $tag but not on top of stack\n";
+ print STDERR "line: $_";
+ dump_stack($text, $stack, $state);
+ exit 1;
+ }
+ ################# end debug
+ if (s/^(.*?)\@end\s$tag$// or s/^(.*?)\@end\s$tag\s//)
+ {
+ add_prev ($text, $stack, $1);
+ delete $state->{'raw'};
+ my $style = pop @$stack;
+ if (defined($Texi2HTML::Config::command_handler{$tag}))
+ { # replace the special region by what init_special give
+ if ($style->{'text'} !~ /^\s*$/)
+ {
+ add_prev ($text, $stack, init_special($style->{'style'}, $style->{'text'}));
+ }
+
+ }
+ else
+ {
+ my $after_macro = '';
+ $after_macro = ' ' unless (/^\s*$/);
+ add_prev ($text, $stack, $style->{'text'} . "\@end $tag" . $after_macro);
+ }
+ unless (no_line($_))
+ {
+ delete ($state->{'after_element'});
+ }
+ next;
+ }
+ else
+ {
+ add_prev ($text, $stack, $_);
+ return if (defined($Texi2HTML::Config::command_handler{$tag}));
+ last;
+ }
+ }
+
+ if (defined($state->{'verb'}))
+ {
+ my $char = quotemeta($state->{'verb'});
+ if (s/^(.*?)$char\}/\}/)
+ {
+ add_prev($text, $stack, $1 . $state->{'verb'});
+ $stack->[-1]->{'text'} = $state->{'verb'} . $stack->[-1]->{'text'};
+ delete $state->{'verb'};
+ next;
+ }
+ else
+ {
+ add_prev($text, $stack, $_);
+ last;
+ }
+ }
+
+ unless (no_line($_))
+ {
+ delete $state->{'after_element'};
+ }
+ # macro_regexp
+ if (s/^([^{}@]*)\@end\s+([a-zA-Z][\w-]*)//)
+ {
+ add_prev($text, $stack, $1);
+ my $end_tag = $2;
+ #print STDERR "END STRUCTURE $end_tag\n";
+ $state->{'detailmenu'}-- if ($end_tag eq 'detailmenu' and $state->{'detailmenu'});
+ if (defined($state->{'text_macro_stack'})
+ and @{$state->{'text_macro_stack'}}
+ and ($end_tag eq $state->{'text_macro_stack'}->[-1]))
+ {
+ pop @{$state->{'text_macro_stack'}};
+ if (exists($region_lines{$end_tag}))
+ { # end a region_line macro, like documentdescription, copying
+ print STDERR "Bug: end_tag $end_tag ne $state->{'region_lines'}->{'format'}"
+ if ( $end_tag ne $state->{'region_lines'}->{'format'});
+ $state->{'region_lines'}->{'number'}--;
+ if ($state->{'region_lines'}->{'number'} == 0)
+ {
+ close_region($state);
+ }
+ #dump_stack($text, $stack, $state);
+ }
+ if ($end_tag eq 'menu')
+ {
+ add_prev($text, $stack, "\@end $end_tag");
+ $state->{'menu'}--;
+ }
+ else
+ {
+ #print STDERR "End $end_tag\n";
+ #dump_stack($text, $stack, $state);
+ return if (/^\s*$/);
+ }
+ }
+ elsif ($text_macros{$end_tag})
+ {
+ echo_error ("\@end $end_tag without corresponding element", $line_nr);
+ #dump_stack($text, $stack, $state);
+ }
+ else
+ {
+ if ($end_tag eq 'float' and $state->{'float'})
+ {
+ delete $state->{'float'};
+ }
+ elsif ($end_tag eq $state->{'table_stack'}->[-1])
+ {
+ enter_table_index_entry($text, $stack, $state, $line_nr);
+ pop @{$state->{'table_stack'}};
+ }
+ #add end tag
+ add_prev($text, $stack, "\@end $end_tag");
+ }
+ next;
+ }
+ #elsif (s/^([^{}@]*)\@([a-zA-Z]\w*|["'~\@\}\{,\.!\?\s\*\-\^`=:\/])//o)
+ # macro_regexp
+ elsif (s/^([^{}@]*)\@(["'~\@\}\{,\.!\?\s\*\-\^`=:\|\/])//o or s/^([^{}@]*)\@([a-zA-Z][\w-]*)([\s\{\}\@])/$3/o or s/^([^{}@]*)\@([a-zA-Z][\w-]*)$//o)
+ {
+ add_prev($text, $stack, $1);
+ my $macro = $2;
+ #print STDERR "MACRO $macro\n";
+ if (defined($Texi2HTML::Config::misc_command{$macro}))
+ {
+ my $line;
+ ($_, $line) = misc_command_structure($_, $macro, $state,
+ $line_nr);
+ add_prev ($text, $stack, "\@$macro".$line);
+ next;
+ }
+
+ if ($macro =~ /^(\w+?)index/ and ($1 ne 'print') and ($1 ne 'syncode') and ($1 ne 'syn') and ($1 ne 'def') and ($1 ne 'defcode'))
+ {
+ my $index_prefix = $1;
+ my $key = $_;
+ $key =~ s/^\s*//;
+ $_ = substitute_texi_line($_);
+ enter_index_entry($index_prefix, $line_nr, $key, $state->{'place'}, $state->{'element'}, $state->{'after_element'}, $macro);
+ add_prev ($text, $stack, "\@$macro" . $_);
+ last;
+ }
+ elsif (defined($text_macros{$macro}))
+ {
+ #print STDERR "TEXT_MACRO: $macro\n";
+ if ($text_macros{$macro} eq 'raw')
+ {
+ $state->{'raw'} = $macro;
+ #print STDERR "RAW\n";
+ }
+ elsif ($format_type{$macro} and $format_type{$macro} eq 'menu')
+ {
+ $state->{'menu'}++;
+ delete ($state->{'prev_menu_node'});
+ push @{$state->{'text_macro_stack'}}, $macro;
+ #print STDERR "MENU (text_macro_stack: @{$state->{'text_macro_stack'}})\n";
+ }
+ elsif (exists($region_lines{$macro}))
+ {
+ if (exists($state->{'region_lines'}) and ($state->{'region_lines'}->{'format'} ne $macro))
+ {
+ echo_error("\@$macro not allowed within $state->{'region_lines'}->{'format'}", $line_nr);
+ next;
+ }
+ if (!exists($state->{'region_lines'}))
+ {
+ $state->{'region_lines'}->{'format'} = $macro;
+ $state->{'region_lines'}->{'number'} = 1;
+ $state->{'region_lines'}->{'after_element'} = 1 if ($state->{'after_element'});
+ $state->{'region_lines'}->{'kept_place'} = $state->{'place'};
+ $state->{'place'} = $region_place;
+ }
+ else
+ {
+ $state->{'region_lines'}->{'number'}++;
+ }
+ push @{$state->{'text_macro_stack'}}, $macro;
+ }
+ # if it is a raw formatting command or a menu command
+ # we must keep it for later
+ my $macro_kept;
+ if (($state->{'raw'} and (!defined($Texi2HTML::Config::command_handler{$macro}))) or ($macro eq 'menu'))
+ {
+ add_prev($text, $stack, "\@$macro");
+ $macro_kept = 1;
+ }
+ if ($state->{'raw'})
+ {
+ push @$stack, { 'style' => $macro, 'text' => '' };
+ }
+ next if $macro_kept;
+ #dump_stack ($text, $stack, $state);
+ return if (/^\s*$/);
+ }
+ elsif ($macro eq 'float')
+ {
+ my ($style_texi, $label_texi) = split(/,/, $_);
+ $style_texi = normalise_space($style_texi);
+ $label_texi = undef if (defined($label_texi) and ($label_texi =~ /^\s*$/));
+ if (defined($label_texi))
+ { # The float may be a target for refs if it has a label
+ $label_texi = normalise_node($label_texi);
+ if (exists($nodes{$label_texi}) and defined($nodes{$label_texi})
+ and $nodes{$label_texi}->{'seen'})
+ {
+ echo_error ("Duplicate label found: $label_texi", $line_nr);
+ while ($_ =~ /,/)
+ {
+ $_ =~ s/,.*$//;
+ }
+ }
+ else
+ {
+ my $float = { };
+ if (exists($nodes{$label_texi}) and defined($nodes{$label_texi}))
+ { # float appeared in a menu
+ $float = $nodes{$label_texi};
+ }
+ else
+ {
+ $nodes{$label_texi} = $float;
+ }
+ $float->{'float'} = 1;
+ $float->{'tag'} = 'float';
+ $float->{'texi'} = $label_texi;
+ $float->{'seen'} = 1;
+ $float->{'id'} = $label_texi;
+#print STDERR "FLOAT: $float $float->{'texi'}, place $state->{'place'}\n";
+ push @{$state->{'place'}}, $float;
+ $float->{'element'} = $state->{'element'};
+ $state->{'float'} = $float;
+ $float->{'style_texi'} = $style_texi;
+ push @floats, $float;
+ }
+ }
+ add_prev($text, $stack, "\@$macro" . $_);
+ last;
+ }
+ elsif (defined($Texi2HTML::Config::def_map{$macro}))
+ {
+ #We must enter the index entries
+ my ($prefix, $entry, $argument) = get_deff_index($macro, $_, $line_nr);
+ # use deffn instead of deffnx for @-command record
+ # associated with index entry
+ my $idx_macro = $macro;
+ $idx_macro =~ s/x$//;
+ enter_index_entry($prefix, $line_nr, $entry, $state->{'place'},
+ $state->{'element'}, 0, $idx_macro) if ($prefix);
+ s/(.*)//;
+ add_prev($text, $stack, "\@$macro" . $1);
+ # the text is discarded but we must handle correctly bad
+ # texinfo with 2 @def-like commands on the same line
+ substitute_text({'structure' => 1, 'place' => $state->{'place'} },($argument));
+ }
+ elsif ($macro =~ /^itemx?$/)
+ {
+ enter_table_index_entry($text, $stack, $state, $line_nr);
+ if ($state->{'table_stack'}->[-1] =~ /^(v|f)table$/)
+ {
+ $state->{'item'} = $macro;
+ push @$stack, { 'format' => 'index_item', 'text' => "" };
+ }
+ else
+ {
+ add_prev($text, $stack, "\@$macro");
+ }
+ }
+ elsif ($format_type{$macro} and ($format_type{$macro} eq 'table' or $format_type{$macro} eq 'list'))
+ { # We must enter the index entries of (v|f)table thus we track
+ # in which table we are
+ push @{$state->{'table_stack'}}, $macro;
+ add_prev($text, $stack, "\@$macro");
+ }
+ elsif (s/^{//)
+ {
+ if ($macro eq 'verb')
+ {
+ if (/^$/)
+ {
+ # We allready warned in pass texi
+ #warn "$ERROR verb at end of line";
+ }
+ else
+ {
+ s/^(.)//;
+ $state->{'verb'} = $1;
+ }
+ }
+ elsif ($macro eq 'footnote' and $Texi2HTML::Config::SEPARATED_FOOTNOTES)
+ {
+ $state->{'footnote_element'} = $state->{'element'};
+ $state->{'footnote_place'} = $state->{'place'};
+ $state->{'element'} = $footnote_element;
+ $state->{'place'} = $footnote_element->{'place'};
+ }
+ push (@$stack, { 'style' => $macro, 'text' => '' });
+ }
+ else
+ {
+ add_prev($text, $stack, "\@$macro");
+ }
+ next;
+ }
+ #elsif(s/^([^{}@]*)\@(.)//o)
+ elsif(s/^([^{}@]*)\@([^\s\}\{\@]*)//o)
+ {
+ add_prev($text, $stack, $1 . "\@$2");
+ next;
+ }
+ elsif (s/^([^{}]*)([{}])//o)
+ {
+ add_prev($text, $stack, $1);
+ if ($2 eq '{')
+ {
+ push @$stack, { 'style' => '', 'text' => '' };
+ }
+ else
+ {
+ if (@$stack)
+ {
+ my $style = pop @$stack;
+ my $result;
+ add_prev ($text, $stack, close_structure_command($style,
+ $state, 0, $line_nr));
+ next;
+ }
+ else
+ {
+ # We warn in the last pass
+ #warn "$ERROR '}' without opening '{' line: $line";
+ #echo_error ("'}' without opening '{' line: $line", $line_nr);
+ add_prev ($text, $stack, '}');
+ }
+ }
+ }
+ else
+ {
+ #print STDERR "END_LINE $_";
+ add_prev($text, $stack, $_);
+ enter_table_index_entry($text, $stack, $state, $line_nr);
+ last;
+ }
+ }
+ return 1;
+}
+
+sub scan_line($$$$;$)
+{
+ my $line = shift;
+ my $text = shift;
+ my $stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+
+ die "stack not an array ref" unless (ref($stack) eq "ARRAY");
+ local $_ = $line;
+ #print STDERR "SCAN_LINE (@{$state->{'command_stack'}}): $line";
+ #dump_stack($text, $stack, $state );
+ my $new_menu_entry; # true if there is a new menu entry
+ my $menu_description_in_format; # true if we are in a menu description
+ # but in another format section (@table....)
+ if (defined($state->{'prepend_text'}))
+ {
+ $_ = $state->{'prepend_text'} . $_;
+ $state->{'prepend_text'} = undef;
+ delete $state->{'prepend_text'};
+ }
+
+ unless ($state->{'end_of_line_protected'} and $state->{'deff_line'})
+ { # end of lines are really protected only for @def*
+ if (!$state->{'raw'} and !$state->{'verb'} and $state->{'menu'})
+ { # new menu entry
+ my ($node, $name, $ending);
+ if (s/^\*(\s+$NODERE)(::)//o)
+ {
+ $node = $1;
+ $ending = $2;
+ }
+ elsif (s/^\*(\s+[^:]+):(\s*[^\t,\.\n]+)([\t,\.\n])//o)
+ {
+ $name = $1;
+ $node = $2;
+ $ending = $3;
+ }
+ if ($node)
+ {
+ my $top_stack = top_stack($stack);
+ if ($top_stack and $top_stack->{'format'} and
+ (
+ ($top_stack->{'format'} eq 'menu_description') or
+ ($top_stack->{'format'} eq 'menu') or
+ (($top_stack->{'format'} eq 'preformatted') and (stack_order($stack, 'preformatted', 'menu_comment'))) or
+ ($top_stack->{'format'} eq 'menu_preformatted') or
+ ($top_stack->{'format'} eq 'menu_comment')
+ )
+ )
+ { # we are in a normal menu state.
+ close_menu($text, $stack, $state, $line_nr);
+ $new_menu_entry = 1;
+ $state->{'menu_entry'} = { 'name' => $name, 'node' => $node,
+ 'ending' => $ending };
+ add_prev ($text, $stack, do_menu_link($state, $line_nr));
+ print STDERR "# New menu entry: $node\n" if ($T2H_DEBUG & $DEBUG_MENU);
+ push @$stack, {'format' => 'menu_description', 'text' => ''};
+ }
+ else
+ { # we are within a macro or a format. In that case we use
+ # a simplified formatting of menu which should be right whatever
+ # the context
+ my $menu_entry = $state->{'menu_entry'};
+ $state->{'menu_entry'} = { 'name' => $name, 'node' => $node,
+ 'ending' => $ending };
+ add_prev ($text, $stack, do_menu_link($state, $line_nr, 1));
+ $state->{'menu_entry'} = $menu_entry;
+ }
+ }
+ }
+ # we're in a menu entry description
+ if ($state->{'menu_entry'} and !$new_menu_entry)
+ {
+ my $top_stack = top_stack($stack);
+ if (/^\s+\S.*$/ or (!$top_stack->{'format'} or ($top_stack->{'format'} ne 'menu_description')))
+ { # description continues
+ $menu_description_in_format = 1 if ($top_stack->{'format'} and ($top_stack->{'format'} ne 'menu_description'));
+ print STDERR "# Description continues\n" if ($T2H_DEBUG & $DEBUG_MENU);
+ }
+ else
+ { # enter menu comment after menu entry
+ ################################ begin debug
+ if (!$top_stack->{'format'} or ($top_stack->{'format'} ne 'menu_description'))
+ {
+ print STDERR "Bug: begin menu comment but previous isn't menu_description\n";
+ dump_stack ($text, $stack, $state);
+ }
+ print STDERR "# Menu comment begins\n" if ($T2H_DEBUG & $DEBUG_MENU);
+ ################################ end debug
+ my $descr = pop(@$stack);
+
+ add_prev ($text, $stack, do_menu_description($descr->{'text'}, $state));
+ delete $state->{'menu_entry'};
+ unless (/^\s*\@end\s+menu\b/)
+ {
+ $state->{'menu_comment'}++;
+ push @$stack, {'format' => 'menu_comment', 'text' => ''};
+ unless ($Texi2HTML::Config::SIMPLE_MENU)
+ {
+ push @{$state->{'preformatted_stack'}}, {'pre_style' => $Texi2HTML::Config::MENU_PRE_STYLE, 'class' => 'menu-comment' };
+ $state->{'preformatted'}++;
+ begin_paragraph($stack, $state);
+ }
+ }
+ }
+ }
+ if (($state->{'menu_entry'} and !$menu_description_in_format) or $state->{'raw'} or $state->{'preformatted'} or $state->{'no_paragraph'} or $state->{'keep_texi'} or $state->{'remove_texi'})
+ { # empty lines are left unmodified
+ if (/^\s*$/)
+ {
+ add_prev($text, $stack, $_);
+ return;
+ }
+ elsif (!$state->{'raw'})
+ {
+ my $next_tag = next_tag($_);
+ if ($state->{'deff_line'} and !defined($Texi2HTML::Config::def_map{$next_tag}))
+ {
+ begin_deff_item($stack, $state);
+ }
+ }
+ }
+ else
+ {
+ if (/^\s*$/)
+ {
+ if ($state->{'paragraph_context'})
+ { # An empty line ends a paragraph
+ close_paragraph($text, $stack, $state, $line_nr);
+ }
+ add_prev($text, $stack, &$Texi2HTML::Config::empty_line($_,$state));
+ return 1;
+ }
+ else
+ {
+ #print STDERR "a line not empty and not in no paragraph format\n";
+ my $next_tag = next_tag($_);
+ if ($state->{'deff_line'} and !defined($Texi2HTML::Config::def_map{$next_tag}))
+ { # finish opening the deff, as this is not a deff tag, it can't be
+ # a deff macro with x
+ begin_deff_item($stack, $state);
+ }
+ if (!no_paragraph($state,$_))
+ { # open a paragraph, unless the line begins with a macro that
+ # shouldn't trigger a paragraph opening
+ begin_paragraph($stack, $state);
+ }
+ }
+ }
+ }
+ delete $state->{'end_of_line_protected'}
+ if ($state->{'end_of_line_protected'});
+
+ while(1)
+ {
+ # scan_line
+ #print STDERR "WHILE (l): $_|";
+ #dump_stack($text, $stack, $state);
+ # we're in a raw format (html, tex if !L2H, verbatim)
+ if (defined($state->{'raw'}))
+ {
+ (dump_stack($text, $stack, $state), die "Bug for raw ($state->{'raw'})") if (! @$stack or ! ($stack->[-1]->{'style'} eq $state->{'raw'}));
+ if (s/^(.*?)\@end\s$state->{'raw'}$// or s/^(.*?)\@end\s$state->{'raw'}\s+//)
+ # don't protect html, it is done by Texi2HTML::Config::raw if needed
+ {
+ print STDERR "# end raw $state->{'raw'}\n" if ($T2H_DEBUG & $DEBUG_FORMATS);
+ add_prev ($text, $stack, $1);
+ my $style = pop @$stack;
+ if ($style->{'text'} !~ /^\s*$/)
+ {
+ if ($state->{'keep_texi'})
+ {
+ add_prev ($text, $stack, $style->{'text'} . "\@end $state->{'raw'}");
+ }
+ elsif ($state->{'remove_texi'})
+ {
+ add_prev ($text, $stack, &$Texi2HTML::Config::raw_no_texi($style->{'style'}, $style->{'text'}));
+ }
+ else
+ {
+ add_prev($text, $stack, &$Texi2HTML::Config::raw($style->{'style'}, $style->{'text'}));
+ }
+ }
+ if (!$state->{'keep_texi'} and !$state->{'remove_texi'})
+ {
+ # reopen preformatted if it was interrupted by the raw format
+ # if raw format is html the preformatted wasn't interrupted
+ begin_paragraph($stack, $state) if ($state->{'preformatted'} and (!$Texi2HTML::Config::format_in_paragraph{$state->{'raw'}}));
+ delete $state->{'raw'};
+ return if (/^\s*$/);
+ }
+ delete $state->{'raw'};
+ next;
+ }
+ else
+ {
+ print STDERR "#within raw $state->{'raw'}:$_" if ($T2H_DEBUG & $DEBUG_FORMATS);
+ add_prev ($text, $stack, $_);
+ last;
+ }
+ }
+
+ # we are within a @verb
+ if (defined($state->{'verb'}))
+ {
+ my $char = quotemeta($state->{'verb'});
+ if (s/^(.*?)$char\}/\}/)
+ {
+ if ($state->{'keep_texi'})
+ {
+ add_prev($text, $stack, $1 . $state->{'verb'});
+ $stack->[-1]->{'text'} = $state->{'verb'} . $stack->[-1]->{'text'};
+ }
+ elsif ($state->{'remove_texi'})
+ {
+ add_prev($text, $stack, $1);
+ }
+ else
+ {
+ add_prev($text, $stack, do_text($1, $state));
+ }
+ delete $state->{'verb'};
+ next;
+ }
+ else
+ {
+ add_prev($text, $stack, $_);
+ last;
+ }
+ }
+
+ # a special case for @ followed by an end of line in deff
+ # FIXME this is similar with makeinfo, but shouldn't that
+ # be done for @floats and @quotations too? and @item, @center?
+ # this piece of code is required, to avoid the 'cmd_line' to be
+ # closed below
+ if ($state->{'end_of_line_protected'} and $state->{'deff_line'})
+ {
+ print STDERR "Bug: 'end_of_line_protected' with text following: $_\n"
+ unless /^$/;
+ return;
+ }
+
+ # We handle now the end tags
+ # macro_regexp
+ if ($state->{'keep_texi'} and s/^([^{}@]*)\@end\s+([a-zA-Z][\w-]*)//)
+ {
+ my $end_tag = $2;
+ add_prev($text, $stack, $1 . "\@end $end_tag");
+ next;
+ }
+ # macro_regexp
+ elsif ($state->{'remove_texi'} and s/^([^{}@]*)\@end\s+([a-zA-Z][\w-]*)//)
+ {
+ add_prev($text, $stack, $1);
+ next;
+ }
+ # macro_regexp
+ if (s/^([^{}@,]*)\@end\s+([a-zA-Z][\w-]*)\s//o or s/^([^{}@,]*)\@end\s+([a-zA-Z][\w-]*)$//o)
+ {
+ add_prev($text, $stack, do_text($1, $state));
+ my $end_tag = $2;
+ #print STDERR "END_MACRO $end_tag\n";
+ #dump_stack ($text, $stack, $state);
+
+ # First we test if the stack is not empty.
+ # Then we test if the end tag is a format tag.
+ # We then close paragraphs and preformatted at top of the stack.
+ # We handle the end tag (even when it was not the tag which appears
+ # on the top of the stack; in that case we close anything
+ # until that element)
+ $state->{'detailmenu'}-- if ($end_tag eq 'detailmenu' and $state->{'detailmenu'});
+ # FIXME handle below (look for misc_command) to let the user
+ # keep that end tag. On the other hand it is only used for
+ # end detailmenu, so maybe it should just go and detailmenu
+ # could be handled like a normal format. Last there could be
+ # something similar than what is done for other misc_commands.
+ next if (defined($Texi2HTML::Config::misc_command{"end $end_tag"}));
+ my $top_stack = top_stack($stack);
+ if (!$top_stack)
+ {
+ echo_error ("\@end $end_tag without corresponding opening", $line_nr);
+ add_prev($text, $stack, "\@end $end_tag");
+ next;
+ }
+
+ if (!$format_type{$end_tag})
+ {
+ echo_warn ("Unknown \@end $end_tag", $line_nr);
+ #warn "$ERROR Unknown \@end $end_tag\n";
+ add_prev($text, $stack, "\@end $end_tag");
+ next;
+ }
+ unless ($Texi2HTML::Config::format_in_paragraph{$end_tag})
+ { # If the $end_tag is wrong we may be keeping paragraph
+ # for a format with paragraphs on the stack
+ close_paragraph($text, $stack, $state, $line_nr);
+ }
+
+ $top_stack = top_stack($stack);
+ if (!$top_stack or (!defined($top_stack->{'format'})))
+ {
+ echo_error ("\@end $end_tag without corresponding opening element", $line_nr);
+ add_prev($text, $stack, "\@end $end_tag");
+ dump_stack ($text, $stack, $state) if ($T2H_DEBUG);
+ next;
+ }
+ # Warn if the format on top of stack is not compatible with the
+ # end tag, and find the end tag.
+ unless (
+ ($top_stack->{'format'} eq $end_tag)
+ or
+ (
+ ($format_type{$end_tag} eq 'menu') and
+ (
+ ($top_stack->{'format'} eq 'menu_preformatted') or
+ ($top_stack->{'format'} eq 'menu_comment') or
+ ($top_stack->{'format'} eq 'menu_description')
+ )
+ ) or
+ (
+ ($end_tag eq 'multitable') and
+ (
+ ($top_stack->{'format'} eq 'cell') or
+ ($top_stack->{'format'} eq 'null')
+ )
+ ) or
+ (
+ ($format_type{$end_tag} eq 'list' ) and
+ ($top_stack->{'format'} eq 'item')
+ ) or
+ (
+ (
+ ($format_type{$end_tag} eq 'table') and
+ ($end_tag ne 'multitable')
+ ) and
+ (
+ ($top_stack->{'format'} eq 'term') or
+ ($top_stack->{'format'} eq 'line')
+ )
+ ) or
+ (
+ (defined($Texi2HTML::Config::def_map{$end_tag})) and
+ ($top_stack->{'format'} eq 'deff_item')
+ ) or
+ (
+ ($end_tag eq 'row') and
+ ($top_stack->{'format'} eq 'cell')
+ )
+ )
+ {
+ # this is not the right format. We try to close other
+ # formats to find the format we are searching for.
+ # First we close paragraphs, as with a wrong $end_format
+ # they may not be closed properly.
+ close_paragraph($text, $stack, $state, $line_nr);
+ $top_stack = top_stack($stack);
+ if (!$top_stack or (!defined($top_stack->{'format'})))
+ {
+ echo_error ("\@end $end_tag without corresponding opening element", $line_nr);
+ add_prev($text, $stack, "\@end $end_tag");
+ dump_stack ($text, $stack, $state) if ($T2H_DEBUG);
+ next;
+ }
+ my $waited_format = $top_stack->{'format'};
+ $waited_format = $fake_format{$top_stack->{'format'}} if ($format_type{$top_stack->{'format'}} eq 'fake');
+ echo_error ("waiting for end of $waited_format, found \@end $end_tag", $line_nr);
+ close_stack($text, $stack, $state, $line_nr, undef, $end_tag);
+ # an empty preformatted may appear when closing things as
+ # when closed, formats reopen the preformatted environment
+ # in case there is some text following, but we know it isn't
+ # the case here, thus we can close paragraphs.
+ close_paragraph($text, $stack, $state);
+ my $new_top_stack = top_stack($stack);
+ next unless ($new_top_stack and defined($new_top_stack->{'format'}) and (($new_top_stack->{'format'} eq $end_tag)
+ or (($format_type{$new_top_stack->{'format'}} eq 'fake') and ($fake_format{$new_top_stack->{'format'}} eq $format_type{$end_tag}))));
+ }
+ # We should now be able to handle the format
+ if (defined($format_type{$end_tag}) and $format_type{$end_tag} ne 'fake')
+ {
+ end_format($text, $stack, $state, $end_tag, $line_nr);
+ begin_paragraph_after_command($state,$stack,$end_tag,$_);
+ }
+ else
+ { # this is a fake format, ie a format used internally, inside
+ # a real format. We do nothing, hoping the real format will
+ # get closed, closing the fake internal formats
+ #print STDERR "FAKE \@end $end_tag\n";
+ }
+ next;
+ }
+ # This is a macro
+ #elsif (s/^([^{}@]*)\@([a-zA-Z]\w*|["'~\@\}\{,\.!\?\s\*\-\^`=:\/])//o)
+ # macro_regexp
+ elsif (s/^([^{},@]*)\@(["'~\@\}\{,\.!\?\s\*\-\^`=:\|\/])//o or s/^([^{}@,]*)\@([a-zA-Z][\w-]*)([\s\{\}\@])/$3/o or s/^([^{},@]*)\@([a-zA-Z][\w-]*)$//o)
+ {
+ add_prev($text, $stack, do_text($1, $state));
+ my $macro = $2;
+ #print STDERR "MACRO $macro\n";
+ #print STDERR "LINE $_";
+ #dump_stack ($text, $stack, $state);
+ # This is a macro added by close_stack to mark paragraph end
+ if ($macro eq 'end_paragraph')
+ {
+ s/^\{\}//;
+ my $top_stack = top_stack($stack);
+ #################################### debug
+ if (!$top_stack or !$top_stack->{'format'}
+ or ($top_stack->{'format'} ne 'paragraph'))
+ {
+ print STDERR "Bug: end_paragraph but no paragraph to end\n";
+ dump_stack ($text, $stack, $state);
+ next;
+ }
+ #################################### end debug
+ s/^\s//;
+ my $paragraph = pop @$stack;
+ add_prev ($text, $stack, do_paragraph($paragraph->{'text'}, $state));
+ next;
+ }
+ # Handle macro added by close_stack to mark preformatted region end
+ elsif ($macro eq 'end_preformatted')
+ {
+ #print STDERR "END_PREFORMATTED\n";
+ s/^\{\}//;
+ my $top_stack = top_stack($stack);
+ #################################### debug
+ if (!$top_stack or !$top_stack->{'format'}
+ or ($top_stack->{'format'} ne 'preformatted'))
+ {
+ print STDERR "Bug: end_preformatted but no preformatted to end\n";
+ dump_stack ($text, $stack, $state);
+ next;
+ }
+ #################################### end debug
+ my $paragraph = pop @$stack;
+ s/^\s//;
+ add_prev ($text, $stack, do_preformatted($paragraph->{'text'}, $state));
+ next;
+ }
+ if (defined($Texi2HTML::Config::misc_command{$macro}))
+ {
+ # The strange condition associated with 'keep_texi' is
+ # there because for an argument appearing on an @itemize
+ # line (we're in 'check_item'), meant to be prepended to an
+ # @item we don't want to keep @c or @comment as otherwise it
+ # eats the @item line. Other commands could do that too but
+ # then the user deserves what he gets.
+ if ($state->{'keep_texi'} and
+ (!$state->{'check_item'} or ($macro ne 'c' and $macro ne 'comment')))
+ {
+ my ($line, $args);
+ ($_, $line, $args) = preserve_command($_, $macro);
+ add_prev($text, $stack, "\@$macro". $line);
+ next;
+ }
+
+ # Handle the misc command
+ $_ = misc_command_text($_, $macro, $stack, $state, $text, $line_nr);
+ return unless (defined($_));
+ unless ($Texi2HTML::Config::misc_command{$macro}->{'keep'})
+ {
+ begin_paragraph($stack, $state) if
+ (!no_paragraph($state,$_));
+ next;
+ }
+ }
+ if ($macro eq 'listoffloats')
+ {
+ if ($state->{'keep_texi'})
+ {
+ if (s/(.*)//o)
+ {
+ add_prev($text, $stack, "\@$macro" . $1);
+ }
+ next;
+ }
+ return undef if ($state->{'remove_texi'});
+
+ if (s/^(\s+)(.*)//o)
+ {
+ my $arg = $2;
+ my $style_id = cross_manual_line(normalise_space($arg));
+ my $style = substitute_line (&$Texi2HTML::Config::listoffloats_style($arg));
+ if (exists ($floats{$style_id}))
+ {
+ close_paragraph($text, $stack, $state, $line_nr);
+ my @listoffloats_entries = ();
+ foreach my $float (@{$floats{$style_id}->{'floats'}})
+ {
+ my $float_style = substitute_line(&$Texi2HTML::Config::listoffloats_float_style($arg, $float));
+ my $caption_lines = &$Texi2HTML::Config::listoffloats_caption($float);
+ # we set 'multiple_pass' such that index entries
+ # and anchors are not handled one more time;
+ # the caption has allready been formatted,
+ # and these have been handled at the right place
+ my $caption = substitute_text({ 'multiple_pass' => 1 }, @$caption_lines);
+ push @listoffloats_entries, &$Texi2HTML::Config::listoffloats_entry($arg, $float, $float_style, $caption, href($float, $state->{'element'}->{'file'}));
+ }
+ add_prev($text, $stack, &$Texi2HTML::Config::listoffloats($arg, $style, \@listoffloats_entries));
+ }
+ else
+ {
+ echo_warn ("Unknown float style $arg", $line_nr);
+ }
+ }
+ else
+ {
+ echo_error ("Bad \@$macro line: $_", $line_nr);
+ }
+ return undef;
+ }
+ # This is a @macroname{...} construct. We add it on top of stack
+ # It will be handled when we encounter the '}'
+ # There is a special case for def macros as @deffn{def} is licit
+ if (!$Texi2HTML::Config::def_map{$macro} and s/^{//)
+ {
+ if ($macro eq 'verb')
+ {
+ if (/^$/)
+ {
+ # Allready warned
+ #warn "$ERROR verb at end of line";
+ }
+ else
+ {
+ s/^(.)//;
+ $state->{'verb'} = $1;
+ }
+ }
+ elsif ($macro eq 'm_cedilla' and !$state->{'keep_texi'})
+ {
+ $macro = ',';
+ }
+ # currently if remove_texi and anchor/ref/footnote
+ # the text within the command is ignored
+ # see t2h_remove_command in texi2html.init
+ push (@$stack, { 'style' => $macro, 'text' => '', 'arg_nr' => 0 });
+ $state->{'no_paragraph'}++ if ($no_paragraph_macro{$macro});
+ open_arg($macro, 0, $state);
+ if (defined($style_type{$macro}) and (($style_type{$macro} eq 'style') or ($style_type{$macro} eq 'accent')))
+ {
+ push (@{$state->{'command_stack'}}, $macro);
+ #print STDERR "# Stacked $macro (@{$state->{'command_stack'}})\n" if ($T2H_DEBUG);
+ }
+ next;
+ }
+
+ # special case if we are checking itemize line. In that case
+ # we want to make sure that there is no @item on the @itemize
+ # line, otherwise it will be added on the front of another @item,
+ # leading to an infinite loop...
+
+ if ($state->{'check_item'} and ($macro =~ /^itemx?$/ or $macro eq 'headitem'))
+ {
+ echo_error("\@$macro on \@$state->{'check_item'} line", $line_nr);
+ next;
+ }
+
+ # if we're keeping texi unmodified we can do it now
+ if ($state->{'keep_texi'})
+ {
+ # We treat specially formats accepting {} on command line
+ if ($macro eq 'multitable' or defined($Texi2HTML::Config::def_map{$macro}))
+ {
+ add_prev($text, $stack, "\@$macro" . $_);
+ $_ = '';
+ next;
+ }
+ # @ at the end of line may protect the end of line even when
+ # keeping texi
+ if ($macro eq "\n")
+ {
+ $state->{'end_of_line_protected'} = 1;
+ #print STDERR "PROTECTING END OF LINE\n";
+ }
+
+ add_prev($text, $stack, "\@$macro");
+ if ($text_macros{$macro} and $text_macros{$macro} eq 'raw')
+ {
+ $state->{'raw'} = $macro;
+ push (@$stack, {'style' => $macro, 'text' => ''});
+ }
+ next;
+ }
+
+ # If we are removing texi, the following macros are not removed
+ # as is but modified. So they are collected first, as if we were
+ # in normal text
+
+ # a raw macro beginning
+ if ($text_macros{$macro} and $text_macros{$macro} eq 'raw')
+ {
+ if (!$Texi2HTML::Config::format_in_paragraph{$macro})
+ { # close paragraph before verbatim (and tex if !L2H)
+ close_paragraph($text, $stack, $state, $line_nr);
+ }
+ $state->{'raw'} = $macro;
+ push (@$stack, {'style' => $macro, 'text' => ''});
+ return if (/^\s*$/);
+ next;
+ }
+ my $simple_macro = 1;
+ # An accent macro
+ if (exists($Texi2HTML::Config::accent_map{$macro}))
+ {
+ push (@{$state->{'command_stack'}}, $macro);
+ if (s/^(\S)//o)
+ {
+ add_prev($text, $stack, do_simple($macro, $1, $state, [ $1 ], $line_nr));
+ }
+ else
+ { # The accent is at end of line
+ add_prev($text, $stack, do_text($macro, $state));
+ }
+ pop @{$state->{'command_stack'}};
+ }
+ # an @-command which should be like @command{}. We handle it...
+ elsif ($::things_map_ref->{$macro})
+ {
+ echo_warn ("$macro requires {}", $line_nr);
+ add_prev($text, $stack, do_simple($macro, '', $state));
+ }
+ # an @-command like @command
+ elsif (defined($::simple_map_ref->{$macro}))
+ {
+ add_prev($text, $stack, do_simple($macro, '', $state));
+ }
+ else
+ {
+ $simple_macro = 0;
+ }
+ if ($simple_macro)
+ {# if the macro didn't triggered a paragraph start it might now
+ begin_paragraph($stack, $state) if
+ ($no_line_macros{$macro} and !no_paragraph($state,$_));
+ next;
+ }
+ # the following macros are modified or ignored if we are
+ # removing texi, and they are not handled like macros in text
+ if ($state->{'remove_texi'})
+ {
+ # handle specially some macros
+ if ((($macro =~ /^(\w+?)index$/) and ($1 ne 'print')) or
+ ($macro eq 'itemize') or ($macro =~ /^(|v|f)table$/)
+ or ($macro eq 'multitable') or ($macro eq 'quotation'))
+ {
+ return;
+ }
+ elsif ($macro eq 'enumerate')
+ {
+ my $spec;
+ ($_, $spec) = parse_enumerate ($_);
+ return if (/^\s*$/);
+ next;
+ }
+ elsif (defined($Texi2HTML::Config::def_map{$macro}))
+ {
+ my ($style, $category, $name, $type, $class, $arguments);
+ ($style, $category, $name, $type, $class, $arguments) = parse_def($macro, $_, $line_nr);
+ # FIXME -- --- ''... lead to simple text in texi2html
+ # while they are kept as is in html coments by makeinfo
+ $category = remove_texi($category) if (defined($category));
+ $name = remove_texi($name) if (defined($name));
+ $type = remove_texi($type) if (defined($type));
+ $class = remove_texi($class) if (defined($class));
+ $arguments = remove_texi($arguments) if (defined($arguments));
+ chomp($arguments);
+ add_prev($text, $stack, &$Texi2HTML::Config::def_line_no_texi($category, $name, $type, $arguments));
+ return;
+ }
+
+ # ignore other macros
+ next;
+ }
+
+ # handle the other macros, in the context of some normal text
+ if (($macro =~ /^(\w+?)index$/) and ($1 ne 'print'))
+ {
+ add_prev($text, $stack, do_index_entry_label($macro,$state,$line_nr));
+ return;
+ }
+ if ($macro eq 'insertcopying')
+ {
+ close_paragraph($text, $stack, $state, $line_nr);
+ add_prev($text, $stack, do_insertcopying($state));
+ # reopen a preformatted format if it was interrupted by the macro
+ begin_paragraph ($stack, $state) if ($state->{'preformatted'});
+ return;
+ }
+ if ($macro =~ /^itemx?$/o or ($macro eq 'headitem'))
+ {
+ #print STDERR "ITEM: $_";
+ #dump_stack($text, $stack, $state);
+ abort_empty_preformatted($stack, $state);
+ # FIXME let the user be able not to close the paragraph
+ close_paragraph($text, $stack, $state, $line_nr);
+ # these functions return the format if in the right context
+ my $format;
+ if ($format = add_item($text, $stack, $state, $line_nr, $_))
+ { # handle lists
+ }
+ elsif ($format = add_term($text, $stack, $state, $line_nr))
+ {# handle table @item line
+ }
+ elsif ($format = add_line($text, $stack, $state, $line_nr))
+ {# handle table text
+ }
+ if ($format)
+ {
+ if (defined($format->{'prepended'}))
+ {
+ $_ = $format->{'prepended'} . ' ' . $_ if ($format->{'prepended'} ne '');
+ }
+ if (defined($format->{'command'}))
+ {
+ open_arg($format->{'command'},0, $state);
+ }
+ next;
+ }
+ $format = add_row ($text, $stack, $state, $line_nr); # handle multitable
+ unless ($format)
+ {
+ echo_warn ("\@$macro outside of table or list", $line_nr);
+ next;
+ }
+ push @$stack, {'format' => 'row', 'text' => '', 'item_cmd' => $macro };
+ if ($format->{'max_columns'})
+ {
+ push @$stack, {'format' => 'cell', 'text' => ''};
+ $format->{'cell'} = 1;
+
+ begin_paragraph_after_command($state,$stack,$macro,$_);
+ }
+ else
+ {
+ echo_warn ("\@$macro in empty multitable", $line_nr);
+ }
+ next;
+ }
+ if ($macro eq 'tab')
+ {
+ abort_empty_preformatted($stack, $state);
+ # FIXME let the user be able not to close the paragraph
+ close_paragraph($text, $stack, $state, $line_nr);
+ my $format = add_cell ($text, $stack, $state);
+ #print STDERR "tab, $format->{'cell'}, max $format->{'max_columns'}\n";
+ if (!$format)
+ {
+ echo_warn ("\@$macro outside of multitable", $line_nr);
+ }
+ elsif (!$format->{'max_columns'})
+ {
+ echo_warn ("\@$macro in empty multitable", $line_nr);
+ push @$stack, {'format' => 'null', 'text' => ''};
+ next;
+ }
+ elsif ($format->{'cell'} > $format->{'max_columns'})
+ {
+ echo_warn ("too much \@$macro (multitable has only $format->{'max_columns'} column(s))", $line_nr);
+ push @$stack, {'format' => 'null', 'text' => ''};
+ next;
+ }
+ else
+ {
+ push @$stack, {'format' => 'cell', 'text' => ''};
+ }
+ begin_paragraph_after_command($state,$stack,$macro,$_);
+ next;
+ }
+ # Macro opening a format (table, list, deff, example...)
+ if ($format_type{$macro} and ($format_type{$macro} ne 'fake'))
+ {
+ unless ($Texi2HTML::Config::format_in_paragraph{$macro})
+ {
+ close_paragraph($text, $stack, $state, $line_nr);
+ }
+ push (@{$state->{'command_stack'}}, $macro);
+ if ($format_type{$macro} eq 'menu')
+ {
+ close_menu($text, $stack, $state, $line_nr);
+ $state->{'menu'}++;
+ }
+ # A deff like macro
+ if (defined($Texi2HTML::Config::def_map{$macro}))
+ {
+ my $top_format = top_format($stack);
+ if (defined($top_format) and ("$top_format->{'format'}x" eq $macro))
+ {
+ # the @DEFx macro has been put at the top of the
+ # command_stack, although there is no real format opening
+ pop @{$state->{'command_stack'}};
+ $macro =~ s/x$//o;
+ if (!$state->{'deff_line'})
+ {# DEFx macro within a DEF paragraph
+ close_stack($text, $stack, $state, $line_nr, undef, 'deff_item');
+ my $format_ref = pop @$stack;
+ add_prev($text, $stack, &$Texi2HTML::Config::def_item($format_ref->{'text'}));
+ }
+ #print STDERR "DEFx $macro\n";
+ }
+ else
+ {
+ # The previous @def command isn't the same @def
+ # command. We begin the item for the previous @def
+ # command and immediately open the new one.
+ begin_deff_item($stack, $state, 1) if ($state->{'deff_line'});
+ $macro =~ s/x$//o;
+ # we remove what is on the stack and put it back,
+ # to make sure that it is the form without x.
+ pop @{$state->{'command_stack'}};
+ push @{$state->{'command_stack'}}, $macro;
+ #print STDERR "DEF begin $macro\n";
+ push @$stack, { 'format' => $macro, 'text' => '' };
+ }
+ #print STDERR "BEGIN_DEFF $macro\n";
+ #dump_stack ($text, $stack, $state);
+ $state->{'deff_line'}->{'command'} = $macro;
+ my ($style, $category, $name, $type, $class, $arguments);
+ ($style, $category, $name, $type, $class, $_) = parse_def($macro, $_, $line_nr);
+ #print STDERR "AFTER parse_def $_";
+ # duplicate_state?
+ $state->{'deff_line'}->{'style'} = $style;
+ $state->{'deff_line'}->{'category'} = substitute_line($category) if (defined($category));
+ $state->{'deff_line'}->{'category'} = '' if (!defined($category));
+ # FIXME -- --- ''... are transformed to entities by
+ # makeinfo. It may be wrong.
+ $state->{'deff_line'}->{'name'} = substitute_line($name) if (defined($name));
+ $state->{'deff_line'}->{'name'} = '' if (!defined($name));
+ $state->{'deff_line'}->{'type'} = substitute_line($type) if (defined($type));
+ $state->{'deff_line'}->{'class'} = substitute_line($class) if (defined($class));
+ # the remaining of the line (the argument)
+ #print STDERR "DEFF: open_cmd_line do_def_line $_";
+ open_cmd_line($stack, $state, ['keep'], \&do_def_line);
+ next;
+ }
+ elsif (exists ($Texi2HTML::Config::complex_format_map->{$macro}))
+ { # handle menu if SIMPLE_MENU. see texi2html.init
+ $state->{'preformatted'}++;
+ my $complex_format = $Texi2HTML::Config::complex_format_map->{$macro};
+ my $format = { 'format' => $macro, 'text' => '', 'pre_style' => $complex_format->{'pre_style'} };
+ my $class = $macro;
+ $class = $complex_format->{'class'} if (defined($complex_format->{'class'}));
+ push @{$state->{'preformatted_stack'}}, {'pre_style' =>$complex_format->{'pre_style'}, 'class' => $class };
+ push @$stack, $format;
+ unless ($Texi2HTML::Config::format_in_paragraph{$macro})
+ {
+ begin_paragraph($stack, $state);
+ }
+ }
+ elsif ($Texi2HTML::Config::paragraph_style{$macro})
+ {
+ push (@$stack, { 'format' => $macro, 'text' => '' });
+ begin_paragraph_after_command($state,$stack,$macro,$_);
+ push @{$state->{'paragraph_style'}}, $macro;
+ if ($macro eq 'center')
+ {
+ # @center may be in a weird state with regard with
+ # nesting, so we put it on the bottom of the stack
+ pop @{$state->{'command_stack'}};
+ unshift @{$state->{'command_stack'}}, $macro;
+ # for similar reasons, we may have a bad stack nesting
+ # which results in } after a closing. For example
+ # @center @samp{something @center end of samp}
+ # results to samp being kept in the 'command_stack'
+
+ # we keep the end of line for @center, to
+ # avoid the return in case there is only spaces
+ # which occurs for all the format commmands followed by
+ # spaces only
+ next;
+ }
+ }
+ elsif ($format_type{$macro} eq 'menu')
+ {
+ # if $Texi2HTML::Config::SIMPLE_MENU we won't get there
+ # as the menu is a complex format in that case, so it
+ # is handled above
+ push @$stack, { 'format' => $macro, 'text' => '' };
+ if ($state->{'preformatted'})
+ {
+ # Start a fake complex format in order to have a given pre style
+ $state->{'preformatted'}++;
+ push @$stack, { 'format' => 'menu_preformatted', 'text' => '', 'pre_style' => $Texi2HTML::Config::MENU_PRE_STYLE };
+ push @{$state->{'preformatted_stack'}}, {'pre_style' => $Texi2HTML::Config::MENU_PRE_STYLE, 'class' => 'menu-preformatted' };
+ }
+ }
+ elsif (($format_type{$macro} eq 'list') or ($format_type{$macro} eq 'table'))
+ {
+ my $format;
+ #print STDERR "LIST_TABLE $macro\n";
+ #dump_stack($text, $stack, $state);
+ if (($macro eq 'itemize') or ($macro =~ /^(|v|f)table$/))
+ {
+ my $command;
+ my $prepended;
+ ($prepended, $command) = parse_format_command($_,$macro);
+ $format = { 'format' => $macro, 'text' => '', 'command' => $command, 'prepended' => $prepended, 'term' => 0 };
+ $_ = '';
+ }
+ elsif ($macro eq 'enumerate')
+ {
+ my $spec;
+ ($_, $spec) = parse_enumerate ($_);
+ $spec = 1 if (!defined($spec));
+ $format = { 'format' => $macro, 'text' => '', 'spec' => $spec, 'item_nr' => 0 };
+ }
+ elsif ($macro eq 'multitable')
+ {
+ my $max_columns = parse_multitable ($_, $line_nr);
+ if (!$max_columns)
+ {
+ echo_warn ("empty multitable", $line_nr);
+ $max_columns = 0;
+ }
+ $format = { 'format' => $macro, 'text' => '', 'max_columns' => $max_columns, 'cell' => 1 };
+ }
+ $format->{'first'} = 1;
+ $format->{'paragraph_number'} = 0;
+ push @$stack, $format;
+ push @{$state->{'table_list_stack'}}, $format;
+ if ($macro =~ /^(|v|f)table$/)
+ {
+ push @$stack, { 'format' => 'line', 'text' => ''};
+ }
+ elsif ($macro eq 'multitable')
+ {
+ if ($format->{'max_columns'})
+ {
+ push @$stack, { 'format' => 'row', 'text' => '', 'item_cmd' => $macro };
+ push @$stack, { 'format' => 'cell', 'text' => ''};
+ }
+ else
+ {
+ # multitable without row... We use the special null
+ # format which content is ignored
+ push @$stack, { 'format' => 'null', 'text' => ''};
+ push @$stack, { 'format' => 'null', 'text' => ''};
+ }
+ }
+ if ($format_type{$macro} eq 'list')
+ {
+ push @$stack, { 'format' => 'item', 'text' => ''};
+ }
+ begin_paragraph_after_command($state,$stack,$macro,$_)
+ if ($macro ne 'multitable');
+ return if ($format_type{$macro} eq 'table' or $macro eq 'itemize');
+ }
+ elsif ($macro eq 'float' or $macro eq 'quotation')
+ {
+ push @$stack, {'format' => $macro, 'text' => '' };
+ if ($macro eq 'float')
+ {
+ open_cmd_line($stack, $state, ['keep','keep'], \&do_float_line);
+ }
+ elsif ($macro eq 'quotation')
+ {
+ open_cmd_line($stack, $state, ['keep'], \&do_quotation_line);
+ }
+ #dump_stack($text, $stack, $state);
+ next;
+ }
+ # keep this one at the end as there are some other formats
+ # which are also in format_map
+ elsif (defined($Texi2HTML::Config::format_map{$macro}) or ($format_type{$macro} eq 'cartouche'))
+ {
+ push @$stack, { 'format' => $macro, 'text' => '' };
+ begin_paragraph_after_command($state,$stack,$macro,$_);
+ }
+ return if (/^\s*$/);
+ next;
+ }
+ $_ = do_unknown ($macro, $_, $text, $stack, $state, $line_nr);
+ next;
+ }
+ elsif(s/^([^{}@,]*)\@([^\s\}\{\@]*)//o)
+ { # A macro with a character which shouldn't appear in macro name
+ add_prev($text, $stack, do_text($1, $state));
+ $_ = do_unknown ($2, $_, $text, $stack, $state, $line_nr);
+ next;
+ }
+ elsif (s/^([^{},]*)([{}])//o or (@$stack and
+ defined($stack->[-1]->{'style'}) and
+ ($stack->[-1]->{'style'} eq 'cmd_line') and /^([^{},]*)$/o))
+ {
+ my $leading_text = $1;
+ my $brace = $2;
+ add_prev($text, $stack, do_text($leading_text, $state));
+ if (defined($brace) and ($brace eq '{'))
+ {
+ add_prev($text, $stack, do_text('{',$state));
+ unless ($state->{'keep_texi'} or $state->{'remove_texi'})
+ {
+ echo_error ("'{' without macro. Before: $_", $line_nr);
+ }
+ }
+ elsif (defined($brace) and ($brace eq '}') and
+ (!@$stack or (!defined($stack->[-1]->{'style'}))
+ # a non empty stack, but with 'cmd_line' as first item on the stack
+ # is like an empty stack
+ or ($stack->[-1]->{'style'} eq 'cmd_line')))
+ {
+ if ($state->{'keep_texi'})
+ {
+ add_prev($text, $stack, '}');
+ }
+ else
+ {
+ echo_error("'}' without opening '{' before: $_", $line_nr);
+ }
+ }
+ else
+ { # A @-command{ ...} is closed
+ my $style = pop @$stack;
+ my $command = $style->{'style'};
+ my $result;
+ if (ref($::style_map_ref->{$command}) eq 'HASH')
+ {
+ push (@{$style->{'args'}}, $style->{'text'});
+ $style->{'fulltext'} .= $style->{'text'};
+ #my $number = 0;
+ #foreach my $arg(@{$style->{'args'}})
+ #{
+ #print STDERR " $number: $arg\n";
+ # $number++;
+ #}
+ $style->{'text'} = $style->{'fulltext'};
+ $state->{'keep_texi'} = 0 if (
+ ($::style_map_ref->{$command}->{'args'}->[$style->{'arg_nr'}] eq 'keep')
+ and ($state->{'keep_nr'} == 1));
+ }
+ $state->{'no_paragraph'}-- if ($no_paragraph_macro{$command});
+ if ($command)
+ {
+ $style->{'no_close'} = 1 if ($state->{'no_close'});
+ if ($::style_map_ref->{$command} and (defined($style_type{$command})) and ((!$style->{'no_close'} and ($style_type{$command} eq 'style')) or ($style_type{$command} eq 'accent')))
+ {
+ my $style_command = pop @{$state->{'command_stack'}};
+ if ($style_command ne $command)
+ {
+ print STDERR "Bug: $style_command on 'command_stack', not $command\n";
+ push @$stack, $style;
+ push @{$state->{'command_stack'}}, $style_command;
+ print STDERR "Stacks before pop top:\n";
+ dump_stack($text, $stack, $state);
+ pop @$stack;
+ }
+ }
+ if ($state->{'keep_texi'})
+ { # don't expand @-commands in anchor, refs...
+ close_arg ($command, $style->{'arg_nr'}, $state);
+ $result = '@' . $command . '{' . $style->{'text'} . '}';
+ }
+ else
+ {
+ $result = do_simple($command, $style->{'text'}, $state, $style->{'args'}, $line_nr, $style->{'no_open'}, $style->{'no_close'});
+ if ($state->{'code_style'} < 0)
+ {
+ echo_error ("Bug: negative code_style: $state->{'code_style'}, line:$_", $line_nr);
+ }
+ }
+ }
+ else
+ {
+ print STDERR "Bug: empty style in pass_text\n";
+ }
+ add_prev($text, $stack, $result);
+ if ($command eq 'cmd_line')
+ {
+ if ($state->{'deff_line'})
+ {
+#print STDERR "DO DEFF $state->{'deff_line'}->{'command'} $state->{'deff_line'}->{'arguments'}\n";
+ my $command = $state->{'deff_line'}->{'command'};
+ my $def_style = $state->{'deff_line'}->{'style'};
+ my $category = $state->{'deff_line'}->{'category'};
+ my $class = $state->{'deff_line'}->{'class'};
+ my $type = $state->{'deff_line'}->{'type'};
+ my $name = $state->{'deff_line'}->{'name'};
+ #my $arguments = $state->{'deff'}->{'arguments'};
+ my $arguments;
+ $arguments = substitute_line($state->{'deff_line'}->{'arguments'}) if (defined($state->{'deff_line'}->{'arguments'}));
+
+ $category = &$Texi2HTML::Config::definition_category($category, $class, $def_style);
+ my $index_label = do_index_entry_label($command, $state,$line_nr);
+ add_prev($text, $stack, &$Texi2HTML::Config::def_line($category, $name, $type, $arguments, $index_label));
+ }
+ elsif ($state->{'preformatted'})
+ { # inconditionally begin a preformatted section for
+ # non @def* commands (currently @float and @quotation)
+ # for @def* it is done in begin_deff_item
+ begin_paragraph($stack, $state);
+ }
+ $state->{'no_paragraph'}--;
+ return;
+ }
+ }
+ }
+ elsif (s/^([^,]*)[,]//o)
+ {
+ add_prev($text, $stack, do_text($1, $state));
+ if (@$stack and defined($stack->[-1]->{'style'})
+ and (ref($::style_map_ref->{$stack->[-1]->{'style'}}) eq 'HASH'))
+ {
+ my $macro = $stack->[-1]->{'style'};
+ my $style_args = $::style_map_ref->{$macro}->{'args'};
+ if (defined($style_args->[$stack->[-1]->{'arg_nr'} + 1]))
+ {
+ push (@{$stack->[-1]->{'args'}}, $stack->[-1]->{'text'});
+ $stack->[-1]->{'fulltext'} .= $stack->[-1]->{'text'} . do_text(',', $state);
+ $stack->[-1]->{'text'} = '';
+ close_arg ($macro, $stack->[-1]->{'arg_nr'}, $state);
+ $stack->[-1]->{'arg_nr'}++;
+ open_arg ($macro, $stack->[-1]->{'arg_nr'}, $state);
+ next;
+ }
+ }
+ add_prev($text, $stack, do_text(',', $state));
+ }
+ else
+ { # no macro nor '}', but normal text
+ add_prev($text, $stack, do_text($_, $state));
+ #print STDERR "END LINE:$_!!!\n";
+ #dump_stack($text, $stack, $state);
+
+ # @item line is closed by end of line
+ add_term($text, $stack, $state, $line_nr);
+
+ # @center is closed at the end of line. When a @-command which
+ # keeps the texi as is happens on the @center line, the @center
+ # is closed at the end of line appearing after the @-command
+ # closing (for example @ref, @footnote).
+
+ # when 'closing_center' is true we don't retry to close
+ # the @center line.
+ if ($state->{'paragraph_style'}->[-1] eq 'center'
+ and !$state->{'closing_center'} and !$state->{'keep_texi'})
+ {
+ $state->{'closing_center'} = 1;
+ unless ($Texi2HTML::Config::format_in_paragraph{'center'})
+ {
+ close_paragraph($text, $stack, $state, $line_nr);
+ }
+ close_stack($text, $stack, $state, $line_nr, undef, 'center');
+ delete $state->{'closing_center'};
+ my $center = pop @$stack;
+ add_prev($text, $stack, &$Texi2HTML::Config::paragraph_style_command('center',$center->{'text'}));
+ my $top_paragraph_style = pop @{$state->{'paragraph_style'}};
+ # center is at the bottom of the comand_stack because it
+ # may be nested in many way
+ my $bottom_command_stack = shift @{$state->{'command_stack'}};
+ print STDERR "Bug: closing center, top_paragraph_style: $top_paragraph_style, bottom_command_stack: $bottom_command_stack.\n"
+ if ($bottom_command_stack ne 'center' or $top_paragraph_style ne 'center');
+ $_ = '';
+ next;
+ }
+ last;
+ }
+ }
+ return 1;
+}
+
+sub open_arg($$$)
+{
+ my $macro = shift;
+ my $arg_nr = shift;
+ my $state = shift;
+ if (ref($::style_map_ref->{$macro}) eq 'HASH')
+ {
+ my $arg = $::style_map_ref->{$macro}->{'args'}->[$arg_nr];
+ if ($arg eq 'code' and !$state->{'keep_texi'})
+ {
+ $state->{'code_style'}++;
+ }
+ elsif ($arg eq 'keep')
+ {
+ $state->{'keep_nr'}++;
+ $state->{'keep_texi'} = 1;
+ }
+ }
+ elsif ($code_style_map{$macro} and !$state->{'keep_texi'})
+ {
+ $state->{'code_style'}++;
+ }
+}
+
+sub close_arg($$$)
+{
+ my $macro = shift;
+ my $arg_nr = shift;
+ my $state = shift;
+ if (ref($::style_map_ref->{$macro}) eq 'HASH')
+ {
+ my $arg = $::style_map_ref->{$macro}->{'args'}->[$arg_nr];
+ if ($arg eq 'code' and !$state->{'keep_texi'})
+ {
+ $state->{'code_style'}--;
+ }
+ elsif ($arg eq 'keep')
+ {
+ $state->{'keep_nr'}--;
+ $state->{'keep_texi'} = 0 if ($state->{'keep_nr'} == 0);
+ }
+#print STDERR "c $arg_nr $macro $arg $state->{'code_style'}\n";
+ }
+ elsif ($code_style_map{$macro} and !$state->{'keep_texi'})
+ {
+ $state->{'code_style'}--;
+ }
+}
+
+# add a special style on the top of the stack. This is used for commands
+# that extend until the end of the line
+sub open_cmd_line($$$$)
+{
+ my $stack = shift;
+ my $state = shift;
+ my $args = shift;
+ my $function = shift;
+ push @$stack, {'style' => 'cmd_line', 'text' => '', 'arg_nr' => 0};
+ foreach my $hash (\%Texi2HTML::Config::style_map, \%Texi2HTML::Config::style_map_pre, \%Texi2HTML::Config::style_map_texi, \%Texi2HTML::Config::simple_format_style_map_texi)
+ {
+ $hash->{'cmd_line'}->{'args'} = $args;
+ $hash->{'cmd_line'}->{'function'} = $function;
+ }
+ $state->{'no_paragraph'}++;
+ open_arg ('cmd_line', 0, $state);
+}
+
+# finish @item line in @*table
+sub add_term($$$$;$)
+{
+ my $text = shift;
+ my $stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+ my $end = shift;
+ return unless (exists ($state->{'table_list_stack'}));
+ my $format = $state->{'table_list_stack'}->[-1];
+ return unless (($format_type{$format->{'format'}} eq 'table') and ($format->{'format'} ne 'multitable' ) and $format->{'term'});
+ #print STDERR "ADD_TERM\n";
+ # we set 'term' = 0 early such that if we encounter an end of line
+ # during close_stack we don't try to do the term once more
+ $state->{'table_list_stack'}->[-1]->{'term'} = 0;
+ # it is the first paragraph for the term.
+ $format->{'paragraph_number'} = 0;
+
+ #dump_stack($text, $stack, $state);
+ close_stack($text, $stack, $state, $line_nr, undef, 'term');
+ my $term = pop @$stack;
+ my $command_formatted;
+ chomp ($term->{'text'});
+ if (exists($::style_map_ref->{$format->{'command'}}) and
+ !exists($Texi2HTML::Config::special_list_commands{$format->{'format'}}->{$format->{'command'}}) and ($style_type{$format->{'command'}} eq 'style'))
+ {
+ my $leading_spaces = '';
+ my $trailing_spaces = '';
+ $term->{'text'} =~ s/^(\s*)//o;
+ $leading_spaces = $1 if (defined($1));
+ $term->{'text'} =~ s/(\s*)$//o;
+ $trailing_spaces = $1 if (defined($1));
+ $term->{'text'} = do_simple($format->{'command'}, $term->{'text'}, $state, [$term->{'text'}]);
+ $term->{'text'} = $leading_spaces. $term->{'text'} .$trailing_spaces;
+ }
+ elsif (exists($::things_map_ref->{$format->{'command'}}))
+ {
+ $command_formatted = do_simple($format->{'command'}, '', $state);
+ }
+ my $index_label;
+ if ($format->{'format'} =~ /^(f|v)/o)
+ {
+ $index_label = do_index_entry_label($format->{'format'}, $state,$line_nr);
+ print STDERR "Bug: no index entry for $text" unless defined($index_label);
+ }
+ add_prev($text, $stack, &$Texi2HTML::Config::table_item($term->{'text'}, $index_label,$format->{'format'},$format->{'command'}, $command_formatted,$state->{'command_stack'}));
+ unless ($end)
+ {
+ push (@$stack, { 'format' => 'line', 'text' => '' });
+ begin_paragraph($stack, $state) if ($state->{'preformatted'});
+ }
+ return $format;
+}
+
+sub add_row($$$$)
+{
+ my $text = shift;
+ my $stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+ my $format = $state->{'table_list_stack'}->[-1];
+ return unless ($format->{'format'} eq 'multitable');
+ if ($format->{'cell'} > $format->{'max_columns'})
+ {
+ close_stack($text, $stack, $state, $line_nr, undef, 'null');
+ pop @$stack;
+ }
+ unless ($format->{'max_columns'})
+ { # empty multitable
+ pop @$stack; # pop 'row'
+ return $format;
+ }
+ if ($format->{'first'})
+ { # first row
+ $format->{'first'} = 0;
+ #dump_stack($text, $stack, $state);
+ #if ($stack->[-1]->{'format'} and ($stack->[-1]->{'format'} eq 'paragraph') and ($stack->[-1]->{'text'} =~ /^\s*$/) and ($format->{'cell'} == 1))
+ if ($stack->[-1]->{'format'} and ($stack->[-1]->{'format'} eq 'cell') and ($stack->[-1]->{'text'} =~ /^\s*$/) and ($format->{'cell'} == 1))
+ {
+ pop @$stack;
+ pop @$stack;
+ #pop @$stack;
+ return $format;
+ }
+ }
+ add_cell($text, $stack, $state);
+ my $row = pop @$stack;
+ add_prev($text, $stack, &$Texi2HTML::Config::row($row->{'text'}, $row->{'item_cmd'}));
+ return $format;
+}
+
+sub add_cell($$$$)
+{
+ my $text = shift;
+ my $stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+ my $format = $state->{'table_list_stack'}->[-1];
+ return unless ($format->{'format'} eq 'multitable');
+ if ($format->{'cell'} <= $format->{'max_columns'})
+ {
+ close_stack($text, $stack, $state, $line_nr, undef, 'cell');
+ my $cell = pop @$stack;
+ my $row = top_stack($stack);
+ print STDERR "Bug: top_stack of cell not a row\n" if (!defined($row) or !defined($row->{'format'}) or ($row->{'format'} ne 'row'));
+ add_prev($text, $stack, &$Texi2HTML::Config::cell($cell->{'text'}, $row->{'item_cmd'}));
+ $format->{'cell'}++;
+ }
+ return $format;
+}
+
+sub add_line($$$$;$)
+{
+ my $text = shift;
+ my $stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+ my $end = shift;
+ my $format = $state->{'table_list_stack'}->[-1];
+ return unless ($format_type{$format->{'format'}} eq 'table' and ($format->{'format'} ne 'multitable') and ($format->{'term'} == 0));
+ #print STDERR "ADD_LINE\n";
+ #dump_stack($text, $stack, $state);
+ # as in pre the end of line are kept, we must explicitely abort empty
+ # preformatted, close_stack doesn't abort the empty preformatted regions.
+ abort_empty_preformatted($stack, $state) if ($format->{'first'});
+ close_stack($text, $stack, $state, $line_nr, undef, 'line');
+ my $line = pop @$stack;
+ $format->{'paragraph_number'} = 0;
+ my $first = 0;
+ $first = 1 if ($format->{'first'});
+ if ($first)
+ {
+ $format->{'first'} = 0;
+ # we must have <dd> or <dt> following <dl> thus we do a
+ # &$Texi2HTML::Config::table_line here too, although it could have
+ # been a normal paragraph.
+ add_prev($text, $stack, &$Texi2HTML::Config::table_line($line->{'text'})) if ($line->{'text'} =~ /\S/o);
+ }
+ else
+ {
+ add_prev($text, $stack, &$Texi2HTML::Config::table_line($line->{'text'}));
+ }
+ unless($end)
+ {
+ push (@$stack, { 'format' => 'term', 'text' => '' });
+ }
+ $format->{'term'} = 1;
+ return $format;
+}
+
+# finish @enumerate or @itemize @item
+sub add_item($$$$;$)
+{
+ my $text = shift;
+ my $stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+ my $line = shift;
+ my $end = shift;
+ my $format = $state->{'table_list_stack'}->[-1];
+ return unless ($format_type{$format->{'format'}} eq 'list');
+ #print STDERR "ADD_ITEM: \n";
+ # as in pre the end of line are kept, we must explicitely abort empty
+ # preformatted, close_stack doesn't do that.
+ abort_empty_preformatted($stack, $state) if ($format->{'first'});
+ close_stack($text, $stack, $state, $line_nr, undef, 'item');
+ $format->{'paragraph_number'} = 0;
+ if ($format->{'format'} eq 'enumerate')
+ {
+ $format->{'number'} = '';
+ my $spec = $format->{'spec'};
+ $format->{'item_nr'}++;
+ if ($spec =~ /^[0-9]$/)
+ {
+ $format->{'number'} = $spec + $format->{'item_nr'} - 1;
+ }
+ else
+ {
+ my $base_letter = ord('a');
+ $base_letter = ord('A') if (ucfirst($spec) eq $spec);
+
+ my @letter_ords = decompose(ord($spec) - $base_letter + $format->{'item_nr'} - 1, 26);
+ foreach my $ord (@letter_ords)
+ {# WARNING we go directly to 'ba' after 'z', and not 'aa'
+ #because 'ba' is 1,0 and 'aa' is 0,0.
+ $format->{'number'} = chr($base_letter + $ord) . $format->{'number'};
+ }
+ }
+ }
+
+ #dump_stack ($text, $stack, $state);
+ my $item = pop @$stack;
+ # the element following ol or ul must be li. Thus even though there
+ # is no @item we put a normal item.
+
+ # don't do an item if it is the first and it is empty
+ if (!$format->{'first'} or ($item->{'text'} =~ /\S/o))
+ {
+ my $formatted_command;
+ if (defined($format->{'command'}) and exists($::things_map_ref->{$format->{'command'}}))
+ {
+ $formatted_command = do_simple($format->{'command'}, '', $state);
+ }
+ #chomp($item->{'text'});
+ add_prev($text, $stack, &$Texi2HTML::Config::list_item($item->{'text'},$format->{'format'},$format->{'command'}, $formatted_command, $format->{'item_nr'}, $format->{'spec'}, $format->{'number'}));
+ }
+ if ($format->{'first'})
+ {
+ $format->{'first'} = 0;
+ }
+
+ # Now prepare the new item
+ unless($end)
+ {
+ push (@$stack, { 'format' => 'item', 'text' => '' });
+ begin_paragraph($stack, $state) unless (!$state->{'preformatted'} and no_line($line));
+ }
+ return $format;
+}
+
+# format ``simple'' macros, that is macros without arg or style macros
+sub do_simple($$$;$$$$)
+{
+ my $macro = shift;
+ my $text = shift;
+ my $state = shift;
+ my $args = shift;
+ my $line_nr = shift;
+ my $no_open = shift;
+ my $no_close = shift;
+
+ my $arg_nr = 0;
+ $arg_nr = @$args - 1 if (defined($args));
+
+#print STDERR "DO_SIMPLE $macro $arg_nr $args @$args\n" if (defined($args));
+ if (defined($::simple_map_ref->{$macro}))
+ {
+ # \n may in certain circumstances, protect end of lines
+ if ($macro eq "\n")
+ {
+ $state->{'end_of_line_protected'} = 1;
+ #print STDERR "PROTECTING END OF LINE\n";
+ }
+ if ($state->{'keep_texi'})
+ {
+ return "\@$macro";
+ }
+ elsif ($state->{'remove_texi'})
+ {
+#print STDERR "DO_SIMPLE remove_texi $macro\n";
+ return $::simple_map_texi_ref->{$macro};
+ }
+ elsif ($state->{'preformatted'})
+ {
+ return $::simple_map_pre_ref->{$macro};
+ }
+ else
+ {
+ return $::simple_map_ref->{$macro};
+ }
+ }
+ if (defined($::things_map_ref->{$macro}))
+ {
+ my $result;
+ if ($state->{'keep_texi'})
+ {
+ $result = "\@$macro" . '{}';
+ }
+ elsif ($state->{'remove_texi'})
+ {
+ $result = $::texi_map_ref->{$macro};
+#print STDERR "DO_SIMPLE remove_texi texi_map $macro\n";
+ }
+ elsif ($state->{'preformatted'})
+ {
+ $result = $::pre_map_ref->{$macro};
+ }
+ else
+ {
+ $result = $::things_map_ref->{$macro};
+ }
+ return $result . $text;
+ }
+ elsif (defined($::style_map_ref->{$macro}))
+ {
+ if ($state->{'keep_texi'})
+ {
+ return "\@$macro" . '{' . $text . '}';
+ }
+ else
+ {
+ my $style;
+ my $result;
+ if ($state->{'remove_texi'})
+ {
+#print STDERR "REMOVE $macro, $style_map_texi_ref->{$macro}, fun $style_map_texi_ref->{$macro}->{'function'} remove cmd " . \&Texi2HTML::Config::t2h_remove_command . " ascii acc " . \&t2h_default_ascii_accent;
+ $style = $::style_map_texi_ref->{$macro};
+ }
+ elsif ($state->{'preformatted'})
+ {
+ $style = $::style_map_pre_ref->{$macro};
+ }
+ else
+ {
+ $style = $::style_map_ref->{$macro};
+ }
+ if (defined($style))
+ { # known style
+ $result = &$Texi2HTML::Config::style($style, $macro, $text, $args, $no_close, $no_open, $line_nr, $state, $state->{'command_stack'});
+ }
+ if (!$no_close)
+ {
+ close_arg($macro,$arg_nr, $state);
+ }
+ return $result;
+ }
+ }
+ elsif ($macro =~ /^special_(\w+)_(\d+)$/o)
+ {
+ my $style = $1;
+ my $count = $2;
+ print STDERR "Bug? text in \@$macro not empty.\n" if ($text ne '');
+ if ($state->{'keep_texi'})
+ {# text should be empty
+ return "\@$macro" . '{' . $text . '}';
+ }
+ if (defined($Texi2HTML::Config::command_handler{$style}) and
+ defined($Texi2HTML::Config::command_handler{$style}->{'expand'}))
+ {
+ my $struct_count = 1+ $special_commands{$style}->{'max'} - $special_commands{$style}->{'count'};
+ if (($count != $struct_count) and $T2H_DEBUG)
+ {
+ print STDERR "count $count in \@special $style and structure $struct_count differ\n";
+ }
+ $special_commands{$style}->{'count'}--;
+ }
+ my $result = $Texi2HTML::Config::command_handler{$style}->{'expand'}
+ ($style,$count,$state,$text);
+ $result = '' if (!defined($result));
+ return $result;
+ }
+ # Unknown macro
+ my $result = '';
+ my ($done, $result_text, $message) = &$Texi2HTML::Config::unknown_style($macro, $text,$state);
+ if ($done)
+ {
+ echo_warn($message, $line_nr) if (defined($message));
+ if (defined($result_text))
+ {
+ $result = $result_text;
+ }
+ }
+ else
+ {
+ unless ($no_open)
+ { # we warn only if no_open is true, i.e. it is the first time we
+ # close the macro for a multiline macro
+ echo_warn ("Unknown command with braces `\@$macro'", $line_nr);
+ $result = do_text("\@$macro") . "{";
+ }
+ $result .= $text;
+ $result .= '}' unless ($no_close);
+ }
+ return $result;
+}
+
+sub do_unknown($$$$$$)
+{
+ my $macro = shift;
+ my $line = shift;
+ my $text = shift;
+ my $stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+ #print STDERR "do_unknown: $macro ::: $line";
+ my ($result_line, $result, $result_text, $message) = &$Texi2HTML::Config::unknown($macro, $line,$stack,$state);
+ if ($result)
+ {
+ add_prev ($text, $stack, $result_text) if (defined($result_text));
+ echo_warn($message, $line_nr) if (defined($message));
+ return $result_line;
+ }
+ else
+ {
+ echo_warn ("Unknown command `\@$macro' (left as is)", $line_nr);
+ add_prev ($text, $stack, do_text("\@$macro"));
+ return $line;
+ }
+}
+
+# used only during @macro processing
+sub add_text($@)
+{
+ my $string = shift;
+
+ return if (!defined($string));
+ foreach my $scalar_ref (@_)
+ {
+ next unless defined($scalar_ref);
+ if (!defined($$scalar_ref))
+ {
+ $$scalar_ref = $string;
+ }
+ else
+ {
+ $$scalar_ref .= $string;
+ }
+ return;
+ }
+}
+
+sub add_prev ($$$)
+{
+ my $text = shift;
+ my $stack = shift;
+ my $string = shift;
+
+ unless (defined($text) and ref($text) eq "SCALAR")
+ {
+ die "text not a SCALAR ref: " . ref($text) . "";
+ }
+ #if (!defined($stack) or (ref($stack) ne "ARRAY"))
+ #{
+ # $string = $stack;
+ # $stack = [];
+ #}
+
+ return if (!defined($string));
+ if (@$stack)
+ {
+ $stack->[-1]->{'text'} .= $string;
+ return;
+ }
+
+ if (!defined($$text))
+ {
+ $$text = $string;
+ }
+ else
+ {
+ $$text .= $string;
+ }
+}
+
+sub close_stack_texi_structure($$$$)
+{
+ my $text = shift;
+ my $stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+
+ return undef unless (@$stack or $state->{'raw'} or $state->{'macro'} or $state->{'macro_name'} or $state->{'ignored'});
+
+ #print STDERR "close_stack_texi_structure\n";
+ #dump_stack ($text, $stack, $state);
+ my $stack_level = $#$stack + 1;
+ my $string = '';
+
+ if ($state->{'ignored'})
+ {
+ $string .= "\@end $state->{'ignored'} ";
+ echo_warn ("closing $state->{'ignored'}", $line_nr);
+ }
+ if ($state->{'texi'})
+ {
+ if ($state->{'macro'})
+ {
+ $string .= "\@end macro ";
+ echo_warn ("closing macro", $line_nr);
+ }
+ elsif ($state->{'macro_name'})
+ {
+ $string .= ('}' x $state->{'macro_depth'}) . " ";
+ echo_warn ("closing $state->{'macro_name'} ($state->{'macro_depth'} braces missing)", $line_nr);
+ }
+ elsif ($state->{'verb'})
+ {
+ echo_warn ("closing \@verb", $line_nr);
+ $string .= $state->{'verb'} . '}';
+ }
+ elsif ($state->{'raw'})
+ {
+ echo_warn ("closing \@$state->{'raw'} raw format", $line_nr);
+ $string .= "\@end $state->{'raw'} ";
+ }
+ if ($string ne '')
+ {
+ #print STDERR "close_stack scan_texi ($string)\n";
+ scan_texi ($string, $text, $stack, $state, $line_nr);
+ $string = '';
+ }
+ }
+ elsif ($state->{'verb'})
+ {
+ $string .= $state->{'verb'};
+ }
+
+ while ($stack_level--)
+ {
+ my $stack_text = $stack->[$stack_level]->{'text'};
+ $stack_text = '' if (!defined($stack_text));
+ if ($stack->[$stack_level]->{'format'})
+ {
+ my $format = $stack->[$stack_level]->{'format'};
+ if ($format eq 'index_item')
+ {
+ enter_table_index_entry($text, $stack, $state, $line_nr);
+ next;
+ }
+ elsif (!defined($format_type{$format}) or ($format_type{$format} ne 'fake'))
+ {
+ $stack_text = "\@$format\n" . $stack_text;
+ }
+ }
+ elsif (defined($stack->[$stack_level]->{'style'}))
+ {
+ if ($state->{'structure'})
+ {
+ $stack_text = close_structure_command($stack->[$stack_level],
+ $state,1,$line_nr)
+ }
+ else
+ {
+ my $style = $stack->[$stack_level]->{'style'};
+ if ($style ne '')
+ {
+ $stack_text = "\@$style\{" . $stack_text;
+ }
+ else
+ {# this is a lone opened brace. We readd it there.
+ $stack_text = "\{" . $stack_text;
+ }
+ }
+ }
+ pop @$stack;
+ add_prev($text, $stack, $stack_text);
+ }
+ $stack = [ ];
+
+ $state->{'close_stack'} = 1;
+ if ($string ne '')
+ {
+ if ($state->{'texi'})
+ {
+ #print STDERR "scan_texi in close_stack ($string)\n";
+ scan_texi($string, $text, $stack, $state, $line_nr);
+ }
+ elsif ($state->{'structure'})
+ {
+ #print STDERR "scan_structure in close_stack ($string)\n";
+ scan_structure($string, $text, $stack, $state, $line_nr);
+ }
+ }
+ delete $state->{'close_stack'};
+}
+
+# close region like @insertcopying, titlepage...
+# restore $state->{'after_element'} and delete the structure
+sub close_region($)
+{
+ my $state = shift;
+ $state->{'after_element'} = 1;
+ delete $state->{'after_element'} unless
+ ($state->{'region_lines'}->{'after_element'});
+ $state->{'place'} = $state->{'region_lines'}->{'kept_place'};
+ delete $state->{'region_lines'}->{'number'};
+ delete $state->{'region_lines'}->{'format'};
+ delete $state->{'region_lines'}->{'after_element'};
+ delete $state->{'region_lines'}->{'kept_place'};
+ delete $state->{'region_lines'};
+}
+
+# close the stack, closing macros and formats left open.
+# the precise behavior of the function depends on $close_paragraph:
+# undef -> close everything
+# defined -> remove empty paragraphs, close until the first format or
+# paragraph. don't close styles, duplicate stack of styles not closed
+
+# if a $format is given the stack is closed according to $close_paragraph but
+# if $format is encountered the closing stops
+
+sub close_stack($$$$;$$)
+{
+ my $text = shift;
+ my $stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+ my $close_paragraph = shift;
+ my $format = shift;
+ my $new_stack;
+
+ #print STDERR "sub_close_stack\n";
+ return $new_stack unless (@$stack);
+
+ my $stack_level = $#$stack + 1;
+ my $string = '';
+ my $verb = '';
+
+ if ($state->{'verb'})
+ {
+ $string .= $state->{'verb'};
+ $verb = $state->{'verb'};
+ }
+
+ #debugging
+ #my $print_format = 'NO FORMAT';
+ #$print_format = $format if ($format);
+ #my $print_close_paragraph = 'close everything';
+ #$print_close_paragraph = 'close paragraph without duplicating' if (defined($close_paragraph));
+ #$print_close_paragraph = $close_paragraph if ($close_paragraph);
+ #print STDERR "Close_stack: format $print_format, close_paragraph: $print_close_paragraph\n";
+
+ while ($stack_level--)
+ {
+ if ($stack->[$stack_level]->{'format'})
+ {
+ my $stack_format = $stack->[$stack_level]->{'format'};
+ last if (defined($close_paragraph) or (defined($format) and $stack_format eq $format));
+ # We silently close paragraphs, preformatted sections and fake formats
+ if ($stack_format eq 'paragraph')
+ {
+ $string .= "\@end_paragraph{}";
+ }
+ elsif ($stack_format eq 'preformatted')
+ {
+ $string .= "\@end_preformatted{}";
+ }
+ else
+ {
+ if ($fake_format{$stack_format})
+ {
+ warn "# Closing a fake format `$stack_format'\n" if ($T2H_VERBOSE);
+ }
+ elsif ($stack_format ne 'center')
+ { # we don't warn, but add an @end center
+ echo_warn ("closing `$stack_format'", $line_nr);
+ #dump_stack ($text, $stack, $state);
+ }
+ $string .= "\@end $stack_format ";
+ }
+ }
+ else
+ {
+ my $style = $stack->[$stack_level]->{'style'};
+ # FIXME images, footnotes, xrefs, anchors with $close_paragraphs?
+ # seems that it is not possible, as it is triggered by
+ # close_paragraph which shouldn't be called with keep_texi
+ # and when the arguments are expanded, there is a
+ # substitute_line or similar with a new stack.
+ if ($close_paragraph)
+ { #duplicate the stack
+ # the !exists($style_type{$style}) condition catches the unknown
+ # @-commands: by default they are considered as style commands
+ if ((exists($style_type{$style}) and ($style_type{$style} eq 'style')) or (!exists($style_type{$style})))
+ {
+ push @$new_stack, { 'style' => $style, 'text' => '', 'no_open' => 1, 'arg_nr' => 0 };
+ $string .= '}';
+ }
+ elsif (($style_type{$style} eq 'simple_style') or ($style_type{$style} eq 'accent'))
+ {
+ $string .= '}';
+ }
+ else
+ {
+ print STDERR "$style while closing paragraph\n";
+ }
+ }
+ else
+ {
+ dump_stack ($text, $stack, $state) if (!defined($style)); # bug
+ $string .= '}';
+ echo_warn ("closing \@-command $style", $line_nr) if ($style);
+ }
+ }
+ }
+ $state->{'no_close'} = 1 if ($close_paragraph);
+ $state->{'close_stack'} = 1;
+ if ($string ne '')
+ {
+ #print STDERR "scan_line in CLOSE_STACK ($string)\n";
+ #dump_stack ($text, $stack, $state);
+ scan_line($string, $text, $stack, $state, $line_nr);
+ }
+ delete $state->{'no_close'};
+ delete $state->{'close_stack'};
+ $state->{'verb'} = $verb if (($verb ne '') and $close_paragraph);
+ # cancel paragraph states and command_stack
+ # FIXME this seems to be unusefull, see formatting/center.texi
+ unless (defined($close_paragraph) or defined($format))
+ {
+ $state->{'paragraph_style'} = [ '' ];
+ $state->{'command_stack'} = [ '' ];
+ }
+ return $new_stack;
+}
+
+# given a stack and a list of formats, return true if the stack contains
+# these formats, first on top
+sub stack_order($@)
+{
+ my $stack = shift;
+ my $stack_level = $#$stack + 1;
+ while (@_)
+ {
+ my $format = shift;
+ while ($stack_level--)
+ {
+ if ($stack->[$stack_level]->{'format'})
+ {
+ if ($stack->[$stack_level]->{'format'} eq $format)
+ {
+ $format = undef;
+ last;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+ }
+ return 0 if ($format);
+ }
+ return 1;
+}
+
+sub top_format($)
+{
+ my $stack = shift;
+ my $stack_level = $#$stack + 1;
+ while ($stack_level--)
+ {
+ if ($stack->[$stack_level]->{'format'} and !$fake_format{$stack->[$stack_level]->{'format'}})
+ {
+ return $stack->[$stack_level];
+ }
+ }
+ return undef;
+}
+
+sub close_paragraph($$$;$)
+{
+ my $text = shift;
+ my $stack = shift;
+ my $state = shift;
+ my $line_nr = shift;
+ #my $macro = shift;
+ #print STDERR "CLOSE_PARAGRAPH\n";
+ #dump_stack($text, $stack, $state);
+ my $new_stack = close_stack($text, $stack, $state, $line_nr, 1);
+ my $top_stack = top_stack($stack);
+ if ($top_stack and !defined($top_stack->{'format'}))
+ { #debug
+ print STDERR "Bug: no format on top stack\n";
+ dump_stack($text, $stack, $state);
+ }
+ if ($top_stack and ($top_stack->{'format'} eq 'paragraph'))
+ {
+ my $paragraph = pop @$stack;
+ add_prev($text, $stack, do_paragraph($paragraph->{'text'}, $state));
+ $state->{'paragraph_macros'} = $new_stack;
+ return 1;
+ }
+ elsif ($top_stack and ($top_stack->{'format'} eq 'preformatted'))
+ {
+ my $paragraph = pop @$stack;
+ add_prev($text, $stack, do_preformatted($paragraph->{'text'}, $state));
+ $state->{'paragraph_macros'} = $new_stack;
+ return 1;
+ }
+ return;
+}
+
+sub abort_empty_preformatted($$)
+{
+ my $stack = shift;
+ my $state = shift;
+ if (@$stack and $stack->[-1]->{'format'}
+ and ($stack->[-1]->{'format'} eq 'preformatted')
+ and ($stack->[-1]->{'text'} !~ /\S/))
+ {
+ pop @$stack;
+ }
+}
+
+# for debugging
+sub dump_stack($$$)
+{
+ my $text = shift;
+ my $stack = shift;
+ my $state = shift;
+
+ if (defined($$text))
+ {
+ print STDERR "text: $$text\n";
+ }
+ else
+ {
+ print STDERR "text: UNDEF\n";
+ }
+ my $in_remove = 0;
+ my $in_simple_format = 0;
+ my $in_keep = 0;
+ $in_keep = 1 if ($state->{'keep_texi'});
+ if (!$in_keep)
+ {
+ $in_simple_format = 1 if ($state->{'simple_format'});
+ $in_remove = 1 if ($state->{'remove_texi'} and !$in_simple_format);
+ }
+ print STDERR "state(k${in_keep}s${in_simple_format}r${in_remove}): ";
+ foreach my $key (keys(%$state))
+ {
+ my $value = 'UNDEF';
+ $value = $state->{$key} if (defined($state->{$key}));
+ print STDERR "$key: $value " if (!ref($value));
+ }
+ print STDERR "\n";
+ my $stack_level = $#$stack + 1;
+ while ($stack_level--)
+ {
+ print STDERR " $stack_level-> ";
+ foreach my $key (keys(%{$stack->[$stack_level]}))
+ {
+ my $value = 'UNDEF';
+ $value = $stack->[$stack_level]->{$key} if
+ (defined($stack->[$stack_level]->{$key}));
+ print STDERR "$key: $value ";
+ }
+ print STDERR "\n";
+ }
+ if (defined($state->{'table_list_stack'}))
+ {
+ print STDERR "table_list_stack: ";
+ foreach my $format (@{$state->{'table_list_stack'}})
+ {
+ print STDERR "$format->{'format'} ";
+ }
+ print STDERR "\n";
+ }
+ if (defined($state->{'command_stack'}))
+ {
+ print STDERR "command_stack: ";
+ foreach my $style (@{$state->{'command_stack'}})
+ {
+ print STDERR "($style) ";
+ }
+ print STDERR "\n";
+ }
+ if (defined($state->{'region_lines'}))
+ {
+ print STDERR "region_lines($state->{'region_lines'}->{'number'}): $state->{'region_lines'}->{'format'}\n";
+ }
+ if (defined($state->{'text_macro_stack'}) and @{$state->{'text_macro_stack'}})
+ {
+ print STDERR "text_macro_stack: (@{$state->{'text_macro_stack'}})\n";
+ }
+}
+
+# for debugging
+sub print_elements($)
+{
+ my $elements = shift;
+ foreach my $elem(@$elements)
+ {
+ if ($elem->{'node'})
+ {
+ print STDERR "node-> $elem ";
+ }
+ else
+ {
+ print STDERR "chap=> $elem ";
+ }
+ foreach my $key (keys(%$elem))
+ {
+ my $value = "UNDEF";
+ $value = $elem->{$key} if (defined($elem->{$key}));
+ print STDERR "$key: $value ";
+ }
+ print STDERR "\n";
+ }
+}
+
+sub substitute_line($;$)
+{
+ my $line = shift;
+ my $state = shift;
+ $state = {} if (!defined($state));
+ $state->{'no_paragraph'} = 1;
+ # this is usefull when called from &$I
+ return simple_format($state, $line) if ($state->{'simple_format'});
+ return substitute_text($state, $line);
+}
+
+sub substitute_text($@)
+{
+ my $state = shift;
+ my @stack = ();
+ my $text = '';
+ my $result = '';
+ if ($state->{'structure'})
+ {
+ initialise_state_structure($state);
+ }
+ elsif ($state->{'texi'})
+ {
+ initialise_state_texi($state);
+ }
+ else
+ {
+ initialise_state($state);
+ }
+ $state->{'spool'} = [];
+ #print STDERR "SUBST_TEXT begin\n";
+
+ while (@_ or @{$state->{'spool'}})
+ {
+ my $line;
+ if (@{$state->{'spool'}})
+ {
+ $line = shift @{$state->{'spool'}};
+ }
+ else
+ {
+ $line = shift @_;
+ }
+ next unless (defined($line));
+ if ($state->{'structure'})
+ {
+ scan_structure ($line, \$text, \@stack, $state);
+ }
+ elsif ($state->{'texi'})
+ {
+ scan_texi ($line, \$text, \@stack, $state);
+ }
+ else
+ {
+ scan_line($line, \$text, \@stack, $state);
+ }
+ next if (@stack);
+ $result .= $text;
+ $text = '';
+ }
+ # FIXME could we have the line number ?
+ # close stack in substitute_text
+ if ($state->{'texi'} or $state->{'structure'})
+ {
+ close_stack_texi_structure(\$text, \@stack, $state, undef);
+ }
+ else
+ {
+ close_stack(\$text, \@stack, $state, undef);
+ }
+ #print STDERR "SUBST_TEXT end\n";
+ return $result . $text;
+}
+
+# this function does the second pass formatting. It is not obvious that
+# it is usefull as in that pass the collected things
+sub substitute_texi_line($)
+{
+ my $text = shift;
+ return $text if $text =~ /^\s*$/;
+ #print STDERR "substitute_texi_line $text\n";
+ my @text = substitute_text({'structure' => 1}, $text);
+ my @result = ();
+ while (@text)
+ {
+ push @result, split (/\n/, shift (@text));
+ }
+ return '' unless (@result);
+ my $result = shift @result;
+ return $result . "\n" unless (@result);
+ foreach my $line (@result)
+ {
+ chomp $line;
+ $result .= ' ' . $line;
+ }
+ return $result . "\n";
+}
+
+sub print_lines($;$)
+{
+ my ($fh, $lines) = @_;
+ $lines = $Texi2HTML::THIS_SECTION unless $lines;
+ my @cnt;
+ my $cnt;
+ for my $line (@$lines)
+ {
+ print $fh $line;
+ if (defined($Texi2HTML::Config::WORDS_IN_PAGE) and ($Texi2HTML::Config::SPLIT eq 'node'))
+ {
+ @cnt = split(/\W*\s+\W*/, $line);
+ $cnt += scalar(@cnt);
+ }
+ }
+ return $cnt;
+}
+
+sub do_index_entry_label($$$)
+{
+ my $command = shift;
+ my $state = shift;
+ my $line_nr = shift;
+ return '' if ($state->{'multiple_pass'});
+ my $entry = shift @index_labels;
+ if (!defined($entry))
+ {
+ echo_warn ("Not enough index entries !", $line_nr);
+ return '';
+ }
+ if ($command ne $entry->{'command'})
+ {
+ # happens with bad texinfo with a line like
+ # @deffn func aaaa args @defvr c--ategory d--efvr_name
+ echo_warn ("Waiting for index cmd \@$entry->{'command'}, got \@$command", $line_nr);
+ }
+
+ print STDERR "[(index $command) $entry->{'entry'} $entry->{'label'}]\n"
+ if ($T2H_DEBUG & $DEBUG_INDEX);
+ return &$Texi2HTML::Config::index_entry_label ($entry->{'label'}, $state->{'preformatted'}, substitute_line($entry->{'entry'}),
+ $index_prefix_to_name{$prefix},
+ $command);
+}
+
+# decompose a decimal number on a given base. The algorithm looks like
+# the division with growing powers (division suivant les puissances
+# croissantes) ?
+sub decompose($$)
+{
+ my $number = shift;
+ my $base = shift;
+ my @result = ();
+
+ return (0) if ($number == 0);
+ my $power = 1;
+ my $remaining = $number;
+
+ while ($remaining)
+ {
+ my $factor = $remaining % ($base ** $power);
+ $remaining -= $factor;
+ push (@result, $factor / ($base ** ($power - 1)));
+ $power++;
+ }
+ return @result;
+}
+
+# main processing is called here
+set_document_language('en') unless ($lang_set);
+# APA: There's got to be a better way:
+$T2H_USER = &$I('unknown');
+
+if ($Texi2HTML::Config::TEST)
+{
+ # to generate files similar to reference ones to be able to check for
+ # real changes we use these dummy values if -test is given
+ $T2H_USER = 'a tester';
+ $THISPROG = 'texi2html';
+ setlocale( LC_ALL, "C" );
+}
+else
+{
+ # the eval prevents this from breaking on system which do not have
+ # a proper getpwuid implemented
+ eval { ($T2H_USER = (getpwuid ($<))[6]) =~ s/,.*//;}; # Who am i
+ # APA: Provide Windows NT workaround until getpwuid gets
+ # implemented there.
+ $T2H_USER = $ENV{'USERNAME'} unless defined $T2H_USER;
+}
+
+open_file($docu, $texi_line_number);
+#Texi2HTML::LaTeX2HTML::init() if ($Texi2HTML::Config::L2H);
+if ($Texi2HTML::Config::L2H)
+{
+ push @Texi2HTML::Config::command_handler_init, \&Texi2HTML::LaTeX2HTML::init;
+ push @Texi2HTML::Config::command_handler_process, \&Texi2HTML::LaTeX2HTML::latex2html;
+ push @Texi2HTML::Config::command_handler_finish, \&Texi2HTML::LaTeX2HTML::finish;
+ $Texi2HTML::Config::command_handler{'math'} =
+ { 'init' => \&Texi2HTML::LaTeX2HTML::to_latex,
+ 'expand' => \&Texi2HTML::LaTeX2HTML::do_tex
+ };
+ $Texi2HTML::Config::command_handler{'tex'} =
+ { 'init' => \&Texi2HTML::LaTeX2HTML::to_latex,
+ 'expand' => \&Texi2HTML::LaTeX2HTML::do_tex
+ };
+}
+foreach my $handler(@Texi2HTML::Config::command_handler_init)
+{
+ &$handler;
+}
+
+my @css_import_lines;
+my @css_rule_lines;
+
+# process css files
+foreach my $file (@Texi2HTML::Config::CSS_FILES)
+{
+ my $css_file_fh;
+ my $css_file;
+ if ($file eq '-')
+ {
+ $css_file_fh = \*STDIN;
+ $css_file = '-';
+ }
+ else
+ {
+ $css_file = locate_init_file ($file);
+ unless (defined($css_file))
+ {
+ warn "css file $file not found\n";
+ next;
+ }
+ unless (open (CSSFILE, "$css_file"))
+ {
+ warn "Cannot open ${css_file}: $!";
+ next;
+ }
+ $css_file_fh = \*CSSFILE;
+ }
+ my ($import_lines, $rules_lines);
+ ($import_lines, $rules_lines) = process_css_file ($css_file_fh, $css_file);
+ push @css_import_lines, @$import_lines;
+ push @css_rule_lines, @$rules_lines;
+}
+
+$Texi2HTML::THISDOC{'css_import_lines'} = \@css_import_lines;
+$Texi2HTML::THISDOC{'css_lines'} = \@css_rule_lines;
+
+if ($T2H_DEBUG & $DEBUG_USER)
+{
+ if (@css_import_lines)
+ {
+ print STDERR "# css import lines\n";
+ foreach my $line (@css_import_lines)
+ {
+ print STDERR "$line";
+ }
+ }
+ if (@css_rule_lines)
+ {
+ print STDERR "# css rule lines\n";
+ foreach my $line (@css_rule_lines)
+ {
+ print STDERR "$line";
+ }
+ }
+}
+
+pass_texi();
+dump_texi(\@lines, 'texi', \@lines_numbers) if ($T2H_DEBUG & $DEBUG_TEXI);
+if (defined($Texi2HTML::Config::MACRO_EXPAND))
+{
+ my @texi_lines = (@first_lines, @lines);
+ dump_texi(\@texi_lines, '', undef, $Texi2HTML::Config::MACRO_EXPAND);
+}
+pass_structure();
+if ($T2H_DEBUG & $DEBUG_TEXI)
+{
+ dump_texi(\@doc_lines, 'first', \@doc_numbers);
+ if (defined($Texi2HTML::Config::MACRO_EXPAND and $Texi2HTML::Config::DUMP_TEXI))
+ {
+ unshift (@doc_lines, @first_lines);
+ push (@doc_lines, "\@bye\n");
+ dump_texi(\@doc_lines, '', undef, $Texi2HTML::Config::MACRO_EXPAND . ".first");
+ }
+}
+exit(0) if ($Texi2HTML::Config::DUMP_TEXI or defined($Texi2HTML::Config::MACRO_EXPAND));
+
+foreach my $style (keys(%special_commands))
+{
+ $special_commands{$style}->{'max'} = $special_commands{$style}->{'count'};
+}
+
+rearrange_elements();
+do_names();
+
+#Texi2HTML::LaTeX2HTML::latex2html();
+foreach my $handler(@Texi2HTML::Config::command_handler_process)
+{
+ &$handler;
+}
+
+if (@{$region_lines{'documentdescription'}} and (!defined($Texi2HTML::Config::DOCUMENT_DESCRIPTION)))
+{
+ my $documentdescription = remove_texi(@{$region_lines{'documentdescription'}});
+ my @documentdescription = split (/\n/, $documentdescription);
+ $Texi2HTML::Config::DOCUMENT_DESCRIPTION = shift @documentdescription;
+ chomp $Texi2HTML::Config::DOCUMENT_DESCRIPTION;
+ foreach my $line (@documentdescription)
+ {
+ chomp $line;
+ $Texi2HTML::Config::DOCUMENT_DESCRIPTION .= ' ' . $line;
+ }
+}
+# do copyright notice inserted in comment at the beginning of the files
+if (@{$region_lines{'copying'}})
+{
+ $copying_comment = &$Texi2HTML::Config::copying_comment($region_lines{'copying'});
+}
+&$Texi2HTML::Config::toc_body(\@elements_list);
+$sec_num = 0;
+
+
+&$Texi2HTML::Config::css_lines(\@css_import_lines, \@css_rule_lines);
+
+pass_text();
+print STDERR "BUG: " . scalar(@index_labels) . " index entries pending\n"
+ if (scalar(@index_labels));
+foreach my $special (keys(%special_commands))
+{
+ my $count = $special_commands{$special}->{'count'};
+ if (($count != 0) and $T2H_VERBOSE)
+ {
+ echo_warn ("$count special \@$special were not processed.\n");
+ }
+}
+if ($Texi2HTML::Config::IDX_SUMMARY)
+{
+ foreach my $entry (keys(%index_names))
+ {
+ do_index_summary_file($entry) unless ($empty_indices{$entry});
+ }
+}
+do_node_files() if ($Texi2HTML::Config::NODE_FILES);
+#l2h_FinishFromHtml() if ($Texi2HTML::Config::L2H);
+#l2h_Finish() if($Texi2HTML::Config::L2H);
+#Texi2HTML::LaTeX2HTML::finish();
+foreach my $handler(@Texi2HTML::Config::command_handler_finish)
+{
+ &$handler;
+}
+&$Texi2HTML::Config::finish_out();
+print STDERR "# that's all folks\n" if $T2H_VERBOSE;
+
+exit(0);
+
+
+##############################################################################
+
+# These next few lines are legal in both Perl and nroff.
+
+.00 ; # finish .ig
+
+'di \" finish diversion--previous line must be blank
+.nr nl 0-1 \" fake up transition to first page again
+.nr % 0 \" start at page 1
+'; __END__ ############# From here on it's a standard manual page ############
+ .so ${prefix}/man/man1/texi2html.1
diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex
new file mode 100644
index 00000000..bac07260
--- /dev/null
+++ b/build-aux/texinfo.tex
@@ -0,0 +1,8997 @@
+% texinfo.tex -- TeX macros to handle Texinfo files.
+%
+% Load plain if necessary, i.e., if running under initex.
+\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
+%
+\def\texinfoversion{2008-04-18.10}
+%
+% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+% 2007, 2008 Free Software Foundation, Inc.
+%
+% This texinfo.tex file 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 3 of the
+% License, or (at your option) any later version.
+%
+% This texinfo.tex file 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, see <http://www.gnu.org/licenses/>.
+%
+% As a special exception, when this file is read by TeX when processing
+% a Texinfo source document, you may use the result without
+% restriction. (This has been our intent since Texinfo was invented.)
+%
+% Please try the latest version of texinfo.tex before submitting bug
+% reports; you can get the latest version from:
+% http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
+% ftp://tug.org/tex/texinfo.tex
+% (and all CTAN mirrors, see http://www.ctan.org).
+% The texinfo.tex in any given distribution could well be out
+% of date, so if that's what you're using, please check.
+%
+% Send bug reports to bug-texinfo@gnu.org. Please include including a
+% complete document in each bug report with which we can reproduce the
+% problem. Patches are, of course, greatly appreciated.
+%
+% To process a Texinfo manual with TeX, it's most reliable to use the
+% texi2dvi shell script that comes with the distribution. For a simple
+% manual foo.texi, however, you can get away with this:
+% tex foo.texi
+% texindex foo.??
+% tex foo.texi
+% tex foo.texi
+% dvips foo.dvi -o # or whatever; this makes foo.ps.
+% The extra TeX runs get the cross-reference information correct.
+% Sometimes one run after texindex suffices, and sometimes you need more
+% than two; texi2dvi does it as many times as necessary.
+%
+% It is possible to adapt texinfo.tex for other languages, to some
+% extent. You can get the existing language-specific files from the
+% full Texinfo distribution.
+%
+% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
+
+
+\message{Loading texinfo [version \texinfoversion]:}
+
+% If in a .fmt file, print the version number
+% and turn on active characters that we couldn't do earlier because
+% they might have appeared in the input file name.
+\everyjob{\message{[Texinfo version \texinfoversion]}%
+ \catcode`+=\active \catcode`\_=\active}
+
+
+\chardef\other=12
+
+% We never want plain's \outer definition of \+ in Texinfo.
+% For @tex, we can use \tabalign.
+\let\+ = \relax
+
+% Save some plain tex macros whose names we will redefine.
+\let\ptexb=\b
+\let\ptexbullet=\bullet
+\let\ptexc=\c
+\let\ptexcomma=\,
+\let\ptexdot=\.
+\let\ptexdots=\dots
+\let\ptexend=\end
+\let\ptexequiv=\equiv
+\let\ptexexclam=\!
+\let\ptexfootnote=\footnote
+\let\ptexgtr=>
+\let\ptexhat=^
+\let\ptexi=\i
+\let\ptexindent=\indent
+\let\ptexinsert=\insert
+\let\ptexlbrace=\{
+\let\ptexless=<
+\let\ptexnewwrite\newwrite
+\let\ptexnoindent=\noindent
+\let\ptexplus=+
+\let\ptexrbrace=\}
+\let\ptexslash=\/
+\let\ptexstar=\*
+\let\ptext=\t
+\let\ptextop=\top
+
+% If this character appears in an error message or help string, it
+% starts a new line in the output.
+\newlinechar = `^^J
+
+% Use TeX 3.0's \inputlineno to get the line number, for better error
+% messages, but if we're using an old version of TeX, don't do anything.
+%
+\ifx\inputlineno\thisisundefined
+ \let\linenumber = \empty % Pre-3.0.
+\else
+ \def\linenumber{l.\the\inputlineno:\space}
+\fi
+
+% Set up fixed words for English if not already set.
+\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
+\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
+\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
+\ifx\putwordin\undefined \gdef\putwordin{in}\fi
+\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
+\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
+\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
+\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi
+\ifx\putwordof\undefined \gdef\putwordof{of}\fi
+\ifx\putwordon\undefined \gdef\putwordon{on}\fi
+\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi
+\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi
+\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi
+\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi
+\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi
+\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi
+\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi
+%
+\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
+\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
+\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
+\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
+\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
+\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
+\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
+\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
+\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
+\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
+\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
+\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
+%
+\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi
+\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi
+\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi
+\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
+\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
+
+% Since the category of space is not known, we have to be careful.
+\chardef\spacecat = 10
+\def\spaceisspace{\catcode`\ =\spacecat}
+
+% sometimes characters are active, so we need control sequences.
+\chardef\colonChar = `\:
+\chardef\commaChar = `\,
+\chardef\dashChar = `\-
+\chardef\dotChar = `\.
+\chardef\exclamChar= `\!
+\chardef\lquoteChar= `\`
+\chardef\questChar = `\?
+\chardef\rquoteChar= `\'
+\chardef\semiChar = `\;
+\chardef\underChar = `\_
+
+% Ignore a token.
+%
+\def\gobble#1{}
+
+% The following is used inside several \edef's.
+\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
+
+% Hyphenation fixes.
+\hyphenation{
+ Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
+ ap-pen-dix bit-map bit-maps
+ data-base data-bases eshell fall-ing half-way long-est man-u-script
+ man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
+ par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
+ spell-ing spell-ings
+ stand-alone strong-est time-stamp time-stamps which-ever white-space
+ wide-spread wrap-around
+}
+
+% Margin to add to right of even pages, to left of odd pages.
+\newdimen\bindingoffset
+\newdimen\normaloffset
+\newdimen\pagewidth \newdimen\pageheight
+
+% For a final copy, take out the rectangles
+% that mark overfull boxes (in case you have decided
+% that the text looks ok even though it passes the margin).
+%
+\def\finalout{\overfullrule=0pt}
+
+% @| inserts a changebar to the left of the current line. It should
+% surround any changed text. This approach does *not* work if the
+% change spans more than two lines of output. To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change).
+%
+\def\|{%
+ % \vadjust can only be used in horizontal mode.
+ \leavevmode
+ %
+ % Append this vertical mode material after the current line in the output.
+ \vadjust{%
+ % We want to insert a rule with the height and depth of the current
+ % leading; that is exactly what \strutbox is supposed to record.
+ \vskip-\baselineskip
+ %
+ % \vadjust-items are inserted at the left edge of the type. So
+ % the \llap here moves out into the left-hand margin.
+ \llap{%
+ %
+ % For a thicker or thinner bar, change the `1pt'.
+ \vrule height\baselineskip width1pt
+ %
+ % This is the space between the bar and the text.
+ \hskip 12pt
+ }%
+ }%
+}
+
+% Sometimes it is convenient to have everything in the transcript file
+% and nothing on the terminal. We don't just call \tracingall here,
+% since that produces some useless output on the terminal. We also make
+% some effort to order the tracing commands to reduce output in the log
+% file; cf. trace.sty in LaTeX.
+%
+\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
+\def\loggingall{%
+ \tracingstats2
+ \tracingpages1
+ \tracinglostchars2 % 2 gives us more in etex
+ \tracingparagraphs1
+ \tracingoutput1
+ \tracingmacros2
+ \tracingrestores1
+ \showboxbreadth\maxdimen \showboxdepth\maxdimen
+ \ifx\eTeXversion\undefined\else % etex gives us more logging
+ \tracingscantokens1
+ \tracingifs1
+ \tracinggroups1
+ \tracingnesting2
+ \tracingassigns1
+ \fi
+ \tracingcommands3 % 3 gives us more in etex
+ \errorcontextlines16
+}%
+
+% add check for \lastpenalty to plain's definitions. If the last thing
+% we did was a \nobreak, we don't want to insert more space.
+%
+\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
+ \removelastskip\penalty-50\smallskip\fi\fi}
+\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
+ \removelastskip\penalty-100\medskip\fi\fi}
+\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
+ \removelastskip\penalty-200\bigskip\fi\fi}
+
+% For @cropmarks command.
+% Do @cropmarks to get crop marks.
+%
+\newif\ifcropmarks
+\let\cropmarks = \cropmarkstrue
+%
+% Dimensions to add cropmarks at corners.
+% Added by P. A. MacKay, 12 Nov. 1986
+%
+\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
+\newdimen\cornerlong \cornerlong=1pc
+\newdimen\cornerthick \cornerthick=.3pt
+\newdimen\topandbottommargin \topandbottommargin=.75in
+
+% Output a mark which sets \thischapter, \thissection and \thiscolor.
+% We dump everything together because we only have one kind of mark.
+% This works because we only use \botmark / \topmark, not \firstmark.
+%
+% A mark contains a subexpression of the \ifcase ... \fi construct.
+% \get*marks macros below extract the needed part using \ifcase.
+%
+% Another complication is to let the user choose whether \thischapter
+% (\thissection) refers to the chapter (section) in effect at the top
+% of a page, or that at the bottom of a page. The solution is
+% described on page 260 of The TeXbook. It involves outputting two
+% marks for the sectioning macros, one before the section break, and
+% one after. I won't pretend I can describe this better than DEK...
+\def\domark{%
+ \toks0=\expandafter{\lastchapterdefs}%
+ \toks2=\expandafter{\lastsectiondefs}%
+ \toks4=\expandafter{\prevchapterdefs}%
+ \toks6=\expandafter{\prevsectiondefs}%
+ \toks8=\expandafter{\lastcolordefs}%
+ \mark{%
+ \the\toks0 \the\toks2
+ \noexpand\or \the\toks4 \the\toks6
+ \noexpand\else \the\toks8
+ }%
+}
+% \topmark doesn't work for the very first chapter (after the title
+% page or the contents), so we use \firstmark there -- this gets us
+% the mark with the chapter defs, unless the user sneaks in, e.g.,
+% @setcolor (or @url, or @link, etc.) between @contents and the very
+% first @chapter.
+\def\gettopheadingmarks{%
+ \ifcase0\topmark\fi
+ \ifx\thischapter\empty \ifcase0\firstmark\fi \fi
+}
+\def\getbottomheadingmarks{\ifcase1\botmark\fi}
+\def\getcolormarks{\ifcase2\topmark\fi}
+
+% Avoid "undefined control sequence" errors.
+\def\lastchapterdefs{}
+\def\lastsectiondefs{}
+\def\prevchapterdefs{}
+\def\prevsectiondefs{}
+\def\lastcolordefs{}
+
+% Main output routine.
+\chardef\PAGE = 255
+\output = {\onepageout{\pagecontents\PAGE}}
+
+\newbox\headlinebox
+\newbox\footlinebox
+
+% \onepageout takes a vbox as an argument. Note that \pagecontents
+% does insertions, but you have to call it yourself.
+\def\onepageout#1{%
+ \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
+ %
+ \ifodd\pageno \advance\hoffset by \bindingoffset
+ \else \advance\hoffset by -\bindingoffset\fi
+ %
+ % Do this outside of the \shipout so @code etc. will be expanded in
+ % the headline as they should be, not taken literally (outputting ''code).
+ \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
+ \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
+ \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
+ \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
+ %
+ {%
+ % Have to do this stuff outside the \shipout because we want it to
+ % take effect in \write's, yet the group defined by the \vbox ends
+ % before the \shipout runs.
+ %
+ \indexdummies % don't expand commands in the output.
+ \normalturnoffactive % \ in index entries must not stay \, e.g., if
+ % the page break happens to be in the middle of an example.
+ % We don't want .vr (or whatever) entries like this:
+ % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
+ % "\acronym" won't work when it's read back in;
+ % it needs to be
+ % {\code {{\tt \backslashcurfont }acronym}
+ \shipout\vbox{%
+ % Do this early so pdf references go to the beginning of the page.
+ \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
+ %
+ \ifcropmarks \vbox to \outervsize\bgroup
+ \hsize = \outerhsize
+ \vskip-\topandbottommargin
+ \vtop to0pt{%
+ \line{\ewtop\hfil\ewtop}%
+ \nointerlineskip
+ \line{%
+ \vbox{\moveleft\cornerthick\nstop}%
+ \hfill
+ \vbox{\moveright\cornerthick\nstop}%
+ }%
+ \vss}%
+ \vskip\topandbottommargin
+ \line\bgroup
+ \hfil % center the page within the outer (page) hsize.
+ \ifodd\pageno\hskip\bindingoffset\fi
+ \vbox\bgroup
+ \fi
+ %
+ \unvbox\headlinebox
+ \pagebody{#1}%
+ \ifdim\ht\footlinebox > 0pt
+ % Only leave this space if the footline is nonempty.
+ % (We lessened \vsize for it in \oddfootingyyy.)
+ % The \baselineskip=24pt in plain's \makefootline has no effect.
+ \vskip 24pt
+ \unvbox\footlinebox
+ \fi
+ %
+ \ifcropmarks
+ \egroup % end of \vbox\bgroup
+ \hfil\egroup % end of (centering) \line\bgroup
+ \vskip\topandbottommargin plus1fill minus1fill
+ \boxmaxdepth = \cornerthick
+ \vbox to0pt{\vss
+ \line{%
+ \vbox{\moveleft\cornerthick\nsbot}%
+ \hfill
+ \vbox{\moveright\cornerthick\nsbot}%
+ }%
+ \nointerlineskip
+ \line{\ewbot\hfil\ewbot}%
+ }%
+ \egroup % \vbox from first cropmarks clause
+ \fi
+ }% end of \shipout\vbox
+ }% end of group with \indexdummies
+ \advancepageno
+ \ifnum\outputpenalty>-20000 \else\dosupereject\fi
+}
+
+\newinsert\margin \dimen\margin=\maxdimen
+
+\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
+{\catcode`\@ =11
+\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
+% marginal hacks, juha@viisa.uucp (Juha Takala)
+\ifvoid\margin\else % marginal info is present
+ \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
+\dimen@=\dp#1\relax \unvbox#1\relax
+\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
+\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
+}
+
+% Here are the rules for the cropmarks. Note that they are
+% offset so that the space between them is truly \outerhsize or \outervsize
+% (P. A. MacKay, 12 November, 1986)
+%
+\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
+\def\nstop{\vbox
+ {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
+\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
+\def\nsbot{\vbox
+ {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
+
+% Parse an argument, then pass it to #1. The argument is the rest of
+% the input line (except we remove a trailing comment). #1 should be a
+% macro which expects an ordinary undelimited TeX argument.
+%
+\def\parsearg{\parseargusing{}}
+\def\parseargusing#1#2{%
+ \def\argtorun{#2}%
+ \begingroup
+ \obeylines
+ \spaceisspace
+ #1%
+ \parseargline\empty% Insert the \empty token, see \finishparsearg below.
+}
+
+{\obeylines %
+ \gdef\parseargline#1^^M{%
+ \endgroup % End of the group started in \parsearg.
+ \argremovecomment #1\comment\ArgTerm%
+ }%
+}
+
+% First remove any @comment, then any @c comment.
+\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
+\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
+
+% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
+%
+% \argremovec might leave us with trailing space, e.g.,
+% @end itemize @c foo
+% This space token undergoes the same procedure and is eventually removed
+% by \finishparsearg.
+%
+\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
+\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
+\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
+ \def\temp{#3}%
+ \ifx\temp\empty
+ % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
+ \let\temp\finishparsearg
+ \else
+ \let\temp\argcheckspaces
+ \fi
+ % Put the space token in:
+ \temp#1 #3\ArgTerm
+}
+
+% If a _delimited_ argument is enclosed in braces, they get stripped; so
+% to get _exactly_ the rest of the line, we had to prevent such situation.
+% We prepended an \empty token at the very beginning and we expand it now,
+% just before passing the control to \argtorun.
+% (Similarly, we have to think about #3 of \argcheckspacesY above: it is
+% either the null string, or it ends with \^^M---thus there is no danger
+% that a pair of braces would be stripped.
+%
+% But first, we have to remove the trailing space token.
+%
+\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
+
+% \parseargdef\foo{...}
+% is roughly equivalent to
+% \def\foo{\parsearg\Xfoo}
+% \def\Xfoo#1{...}
+%
+% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
+% favourite TeX trick. --kasal, 16nov03
+
+\def\parseargdef#1{%
+ \expandafter \doparseargdef \csname\string#1\endcsname #1%
+}
+\def\doparseargdef#1#2{%
+ \def#2{\parsearg#1}%
+ \def#1##1%
+}
+
+% Several utility definitions with active space:
+{
+ \obeyspaces
+ \gdef\obeyedspace{ }
+
+ % Make each space character in the input produce a normal interword
+ % space in the output. Don't allow a line break at this space, as this
+ % is used only in environments like @example, where each line of input
+ % should produce a line of output anyway.
+ %
+ \gdef\sepspaces{\obeyspaces\let =\tie}
+
+ % If an index command is used in an @example environment, any spaces
+ % therein should become regular spaces in the raw index file, not the
+ % expansion of \tie (\leavevmode \penalty \@M \ ).
+ \gdef\unsepspaces{\let =\space}
+}
+
+
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
+
+% Define the framework for environments in texinfo.tex. It's used like this:
+%
+% \envdef\foo{...}
+% \def\Efoo{...}
+%
+% It's the responsibility of \envdef to insert \begingroup before the
+% actual body; @end closes the group after calling \Efoo. \envdef also
+% defines \thisenv, so the current environment is known; @end checks
+% whether the environment name matches. The \checkenv macro can also be
+% used to check whether the current environment is the one expected.
+%
+% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
+% are not treated as environments; they don't open a group. (The
+% implementation of @end takes care not to call \endgroup in this
+% special case.)
+
+
+% At run-time, environments start with this:
+\def\startenvironment#1{\begingroup\def\thisenv{#1}}
+% initialize
+\let\thisenv\empty
+
+% ... but they get defined via ``\envdef\foo{...}'':
+\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
+\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
+
+% Check whether we're in the right environment:
+\def\checkenv#1{%
+ \def\temp{#1}%
+ \ifx\thisenv\temp
+ \else
+ \badenverr
+ \fi
+}
+
+% Environment mismatch, #1 expected:
+\def\badenverr{%
+ \errhelp = \EMsimple
+ \errmessage{This command can appear only \inenvironment\temp,
+ not \inenvironment\thisenv}%
+}
+\def\inenvironment#1{%
+ \ifx#1\empty
+ out of any environment%
+ \else
+ in environment \expandafter\string#1%
+ \fi
+}
+
+% @end foo executes the definition of \Efoo.
+% But first, it executes a specialized version of \checkenv
+%
+\parseargdef\end{%
+ \if 1\csname iscond.#1\endcsname
+ \else
+ % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
+ \expandafter\checkenv\csname#1\endcsname
+ \csname E#1\endcsname
+ \endgroup
+ \fi
+}
+
+\newhelp\EMsimple{Press RETURN to continue.}
+
+
+%% Simple single-character @ commands
+
+% @@ prints an @
+% Kludge this until the fonts are right (grr).
+\def\@{{\tt\char64}}
+
+% This is turned off because it was never documented
+% and you can use @w{...} around a quote to suppress ligatures.
+%% Define @` and @' to be the same as ` and '
+%% but suppressing ligatures.
+%\def\`{{`}}
+%\def\'{{'}}
+
+% Used to generate quoted braces.
+\def\mylbrace {{\tt\char123}}
+\def\myrbrace {{\tt\char125}}
+\let\{=\mylbrace
+\let\}=\myrbrace
+\begingroup
+ % Definitions to produce \{ and \} commands for indices,
+ % and @{ and @} for the aux/toc files.
+ \catcode`\{ = \other \catcode`\} = \other
+ \catcode`\[ = 1 \catcode`\] = 2
+ \catcode`\! = 0 \catcode`\\ = \other
+ !gdef!lbracecmd[\{]%
+ !gdef!rbracecmd[\}]%
+ !gdef!lbraceatcmd[@{]%
+ !gdef!rbraceatcmd[@}]%
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+\let\, = \c
+\let\dotaccent = \.
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \t
+\let\ubaraccent = \b
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+ \def\temp{#1}%
+ \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
+ \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
+ \else \errmessage{@dotless can be used only with i or j}%
+ \fi\fi
+}
+
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence. (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo. Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+ L\kern-.36em
+ {\setbox0=\hbox{T}%
+ \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}%
+ \kern-.15em
+ \TeX
+}
+
+% Be sure we're in horizontal mode when doing a tie, since we make space
+% equivalent to this in @example-like environments. Otherwise, a space
+% at the beginning of a line will start with \penalty -- and
+% since \penalty is valid in vertical mode, we'd end up putting the
+% penalty on the vertical list instead of in the new paragraph.
+{\catcode`@ = 11
+ % Avoid using \@M directly, because that causes trouble
+ % if the definition is written into an index file.
+ \global\let\tiepenalty = \@M
+ \gdef\tie{\leavevmode\penalty\tiepenalty\ }
+}
+
+% @: forces normal size whitespace following.
+\def\:{\spacefactor=1000 }
+
+% @* forces a line break.
+\def\*{\hfil\break\hbox{}\ignorespaces}
+
+% @/ allows a line break.
+\let\/=\allowbreak
+
+% @. is an end-of-sentence period.
+\def\.{.\spacefactor=\endofsentencespacefactor\space}
+
+% @! is an end-of-sentence bang.
+\def\!{!\spacefactor=\endofsentencespacefactor\space}
+
+% @? is an end-of-sentence query.
+\def\?{?\spacefactor=\endofsentencespacefactor\space}
+
+% @frenchspacing on|off says whether to put extra space after punctuation.
+%
+\def\onword{on}
+\def\offword{off}
+%
+\parseargdef\frenchspacing{%
+ \def\temp{#1}%
+ \ifx\temp\onword \plainfrenchspacing
+ \else\ifx\temp\offword \plainnonfrenchspacing
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
+ \fi\fi
+}
+
+% @w prevents a word break. Without the \leavevmode, @w at the
+% beginning of a paragraph, when TeX is still in vertical mode, would
+% produce a whole line of output instead of starting the paragraph.
+\def\w#1{\leavevmode\hbox{#1}}
+
+% @group ... @end group forces ... to be all on one page, by enclosing
+% it in a TeX vbox. We use \vtop instead of \vbox to construct the box
+% to keep its height that of a normal line. According to the rules for
+% \topskip (p.114 of the TeXbook), the glue inserted is
+% max (\topskip - \ht (first item), 0). If that height is large,
+% therefore, no glue is inserted, and the space between the headline and
+% the text is small, which looks bad.
+%
+% Another complication is that the group might be very large. This can
+% cause the glue on the previous page to be unduly stretched, because it
+% does not have much material. In this case, it's better to add an
+% explicit \vfill so that the extra space is at the bottom. The
+% threshold for doing this is if the group is more than \vfilllimit
+% percent of a page (\vfilllimit can be changed inside of @tex).
+%
+\newbox\groupbox
+\def\vfilllimit{0.7}
+%
+\envdef\group{%
+ \ifnum\catcode`\^^M=\active \else
+ \errhelp = \groupinvalidhelp
+ \errmessage{@group invalid in context where filling is enabled}%
+ \fi
+ \startsavinginserts
+ %
+ \setbox\groupbox = \vtop\bgroup
+ % Do @comment since we are called inside an environment such as
+ % @example, where each end-of-line in the input causes an
+ % end-of-line in the output. We don't want the end-of-line after
+ % the `@group' to put extra space in the output. Since @group
+ % should appear on a line by itself (according to the Texinfo
+ % manual), we don't worry about eating any user text.
+ \comment
+}
+%
+% The \vtop produces a box with normal height and large depth; thus, TeX puts
+% \baselineskip glue before it, and (when the next line of text is done)
+% \lineskip glue after it. Thus, space below is not quite equal to space
+% above. But it's pretty close.
+\def\Egroup{%
+ % To get correct interline space between the last line of the group
+ % and the first line afterwards, we have to propagate \prevdepth.
+ \endgraf % Not \par, as it may have been set to \lisppar.
+ \global\dimen1 = \prevdepth
+ \egroup % End the \vtop.
+ % \dimen0 is the vertical size of the group's box.
+ \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox
+ % \dimen2 is how much space is left on the page (more or less).
+ \dimen2 = \pageheight \advance\dimen2 by -\pagetotal
+ % if the group doesn't fit on the current page, and it's a big big
+ % group, force a page break.
+ \ifdim \dimen0 > \dimen2
+ \ifdim \pagetotal < \vfilllimit\pageheight
+ \page
+ \fi
+ \fi
+ \box\groupbox
+ \prevdepth = \dimen1
+ \checkinserts
+}
+%
+% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
+% message, so this ends up printing `@group can only ...'.
+%
+\newhelp\groupinvalidhelp{%
+group can only be used in environments such as @example,^^J%
+where each line of input produces a line of output.}
+
+% @need space-in-mils
+% forces a page break if there is not space-in-mils remaining.
+
+\newdimen\mil \mil=0.001in
+
+% Old definition--didn't work.
+%\parseargdef\need{\par %
+%% This method tries to make TeX break the page naturally
+%% if the depth of the box does not fit.
+%{\baselineskip=0pt%
+%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
+%\prevdepth=-1000pt
+%}}
+
+\parseargdef\need{%
+ % Ensure vertical mode, so we don't make a big box in the middle of a
+ % paragraph.
+ \par
+ %
+ % If the @need value is less than one line space, it's useless.
+ \dimen0 = #1\mil
+ \dimen2 = \ht\strutbox
+ \advance\dimen2 by \dp\strutbox
+ \ifdim\dimen0 > \dimen2
+ %
+ % Do a \strut just to make the height of this box be normal, so the
+ % normal leading is inserted relative to the preceding line.
+ % And a page break here is fine.
+ \vtop to #1\mil{\strut\vfil}%
+ %
+ % TeX does not even consider page breaks if a penalty added to the
+ % main vertical list is 10000 or more. But in order to see if the
+ % empty box we just added fits on the page, we must make it consider
+ % page breaks. On the other hand, we don't want to actually break the
+ % page after the empty box. So we use a penalty of 9999.
+ %
+ % There is an extremely small chance that TeX will actually break the
+ % page at this \penalty, if there are no other feasible breakpoints in
+ % sight. (If the user is using lots of big @group commands, which
+ % almost-but-not-quite fill up a page, TeX will have a hard time doing
+ % good page breaking, for example.) However, I could not construct an
+ % example where a page broke at this \penalty; if it happens in a real
+ % document, then we can reconsider our strategy.
+ \penalty9999
+ %
+ % Back up by the size of the box, whether we did a page break or not.
+ \kern -#1\mil
+ %
+ % Do not allow a page break right after this kern.
+ \nobreak
+ \fi
+}
+
+% @br forces paragraph break (and is undocumented).
+
+\let\br = \par
+
+% @page forces the start of a new page.
+%
+\def\page{\par\vfill\supereject}
+
+% @exdent text....
+% outputs text on separate line in roman font, starting at standard page margin
+
+% This records the amount of indent in the innermost environment.
+% That's how much \exdent should take out.
+\newskip\exdentamount
+
+% This defn is used inside fill environments such as @defun.
+\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
+
+% This defn is used inside nofill environments such as @example.
+\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
+ \leftline{\hskip\leftskip{\rm#1}}}}
+
+% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
+% paragraph. For more general purposes, use the \margin insertion
+% class. WHICH is `l' or `r'.
+%
+\newskip\inmarginspacing \inmarginspacing=1cm
+\def\strutdepth{\dp\strutbox}
+%
+\def\doinmargin#1#2{\strut\vadjust{%
+ \nobreak
+ \kern-\strutdepth
+ \vtop to \strutdepth{%
+ \baselineskip=\strutdepth
+ \vss
+ % if you have multiple lines of stuff to put here, you'll need to
+ % make the vbox yourself of the appropriate size.
+ \ifx#1l%
+ \llap{\ignorespaces #2\hskip\inmarginspacing}%
+ \else
+ \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
+ \fi
+ \null
+ }%
+}}
+\def\inleftmargin{\doinmargin l}
+\def\inrightmargin{\doinmargin r}
+%
+% @inmargin{TEXT [, RIGHT-TEXT]}
+% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
+% else use TEXT for both).
+%
+\def\inmargin#1{\parseinmargin #1,,\finish}
+\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0 > 0pt
+ \def\lefttext{#1}% have both texts
+ \def\righttext{#2}%
+ \else
+ \def\lefttext{#1}% have only one text
+ \def\righttext{#1}%
+ \fi
+ %
+ \ifodd\pageno
+ \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
+ \else
+ \def\temp{\inleftmargin\lefttext}%
+ \fi
+ \temp
+}
+
+% @include FILE -- \input text of FILE.
+%
+\def\include{\parseargusing\filenamecatcodes\includezzz}
+\def\includezzz#1{%
+ \pushthisfilestack
+ \def\thisfile{#1}%
+ {%
+ \makevalueexpandable % we want to expand any @value in FILE.
+ \turnoffactive % and allow special characters in the expansion
+ \edef\temp{\noexpand\input #1 }%
+ %
+ % This trickery is to read FILE outside of a group, in case it makes
+ % definitions, etc.
+ \expandafter
+ }\temp
+ \popthisfilestack
+}
+\def\filenamecatcodes{%
+ \catcode`\\=\other
+ \catcode`~=\other
+ \catcode`^=\other
+ \catcode`_=\other
+ \catcode`|=\other
+ \catcode`<=\other
+ \catcode`>=\other
+ \catcode`+=\other
+ \catcode`-=\other
+}
+
+\def\pushthisfilestack{%
+ \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
+}
+\def\pushthisfilestackX{%
+ \expandafter\pushthisfilestackY\thisfile\StackTerm
+}
+\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
+ \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
+}
+
+\def\popthisfilestack{\errthisfilestackempty}
+\def\errthisfilestackempty{\errmessage{Internal error:
+ the stack of filenames is empty.}}
+
+\def\thisfile{}
+
+% @center line
+% outputs that line, centered.
+%
+\parseargdef\center{%
+ \ifhmode
+ \let\next\centerH
+ \else
+ \let\next\centerV
+ \fi
+ \next{\hfil \ignorespaces#1\unskip \hfil}%
+}
+\def\centerH#1{%
+ {%
+ \hfil\break
+ \advance\hsize by -\leftskip
+ \advance\hsize by -\rightskip
+ \line{#1}%
+ \break
+ }%
+}
+\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
+
+% @sp n outputs n lines of vertical space
+
+\parseargdef\sp{\vskip #1\baselineskip}
+
+% @comment ...line which is ignored...
+% @c is the same as @comment
+% @ignore ... @end ignore is another way to write a comment
+
+\def\comment{\begingroup \catcode`\^^M=\other%
+\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
+\commentxxx}
+{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
+
+\let\c=\comment
+
+% @paragraphindent NCHARS
+% We'll use ems for NCHARS, close enough.
+% NCHARS can also be the word `asis' or `none'.
+% We cannot feasibly implement @paragraphindent asis, though.
+%
+\def\asisword{asis} % no translation, these are keywords
+\def\noneword{none}
+%
+\parseargdef\paragraphindent{%
+ \def\temp{#1}%
+ \ifx\temp\asisword
+ \else
+ \ifx\temp\noneword
+ \defaultparindent = 0pt
+ \else
+ \defaultparindent = #1em
+ \fi
+ \fi
+ \parindent = \defaultparindent
+}
+
+% @exampleindent NCHARS
+% We'll use ems for NCHARS like @paragraphindent.
+% It seems @exampleindent asis isn't necessary, but
+% I preserve it to make it similar to @paragraphindent.
+\parseargdef\exampleindent{%
+ \def\temp{#1}%
+ \ifx\temp\asisword
+ \else
+ \ifx\temp\noneword
+ \lispnarrowing = 0pt
+ \else
+ \lispnarrowing = #1em
+ \fi
+ \fi
+}
+
+% @firstparagraphindent WORD
+% If WORD is `none', then suppress indentation of the first paragraph
+% after a section heading. If WORD is `insert', then do indent at such
+% paragraphs.
+%
+% The paragraph indentation is suppressed or not by calling
+% \suppressfirstparagraphindent, which the sectioning commands do.
+% We switch the definition of this back and forth according to WORD.
+% By default, we suppress indentation.
+%
+\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
+\def\insertword{insert}
+%
+\parseargdef\firstparagraphindent{%
+ \def\temp{#1}%
+ \ifx\temp\noneword
+ \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
+ \else\ifx\temp\insertword
+ \let\suppressfirstparagraphindent = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @firstparagraphindent option `\temp'}%
+ \fi\fi
+}
+
+% Here is how we actually suppress indentation. Redefine \everypar to
+% \kern backwards by \parindent, and then reset itself to empty.
+%
+% We also make \indent itself not actually do anything until the next
+% paragraph.
+%
+\gdef\dosuppressfirstparagraphindent{%
+ \gdef\indent{%
+ \restorefirstparagraphindent
+ \indent
+ }%
+ \gdef\noindent{%
+ \restorefirstparagraphindent
+ \noindent
+ }%
+ \global\everypar = {%
+ \kern -\parindent
+ \restorefirstparagraphindent
+ }%
+}
+
+\gdef\restorefirstparagraphindent{%
+ \global \let \indent = \ptexindent
+ \global \let \noindent = \ptexnoindent
+ \global \everypar = {}%
+}
+
+
+% @asis just yields its argument. Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @math{@var{some_variable} + 1}. So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+ \catcode`\_ = \active
+ \gdef\mathunderscore{%
+ \catcode`\_=\active
+ \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+ }
+}
+% Another complication: we want \\ (and @\) to output a \ character.
+% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
+% this is not advertised and we don't care. Texinfo does not
+% otherwise define @\.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+ \tex
+ \mathunderscore
+ \let\\ = \mathbackslash
+ \mathactive
+ % make the texinfo accent commands work in math mode
+ \let\"=\ddot
+ \let\'=\acute
+ \let\==\bar
+ \let\^=\hat
+ \let\`=\grave
+ \let\u=\breve
+ \let\v=\check
+ \let\~=\tilde
+ \let\dotaccent=\dot
+ $\finishmath
+}
+\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+ \catcode`^ = \active
+ \catcode`< = \active
+ \catcode`> = \active
+ \catcode`+ = \active
+ \gdef\mathactive{%
+ \let^ = \ptexhat
+ \let< = \ptexless
+ \let> = \ptexgtr
+ \let+ = \ptexplus
+ }
+}
+
+% Some math mode symbols.
+\def\bullet{$\ptexbullet$}
+\def\geq{\ifmmode \ge\else $\ge$\fi}
+\def\leq{\ifmmode \le\else $\le$\fi}
+\def\minus{\ifmmode -\else $-$\fi}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in the cm
+% typewriter fonts as three actual period characters; on the other hand,
+% in other typewriter fonts three periods are wider than 1.5em. So do
+% whichever is larger.
+%
+\def\dots{%
+ \leavevmode
+ \setbox0=\hbox{...}% get width of three periods
+ \ifdim\wd0 > 1.5em
+ \dimen0 = \wd0
+ \else
+ \dimen0 = 1.5em
+ \fi
+ \hbox to \dimen0{%
+ \hskip 0pt plus.25fil
+ .\hskip 0pt plus1fil
+ .\hskip 0pt plus1fil
+ .\hskip 0pt plus.5fil
+ }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+ \dots
+ \spacefactor=\endofsentencespacefactor
+}
+
+% @comma{} is so commas can be inserted into text without messing up
+% Texinfo's parsing.
+%
+\let\comma = ,
+
+% @refill is a no-op.
+\let\refill=\relax
+
+% If working on a large document in chapters, it is convenient to
+% be able to disable indexing, cross-referencing, and contents, for test runs.
+% This is done with @novalidate (before @setfilename).
+%
+\newif\iflinks \linkstrue % by default we want the aux files.
+\let\novalidate = \linksfalse
+
+% @setfilename is done at the beginning of every texinfo file.
+% So open here the files we need to have open while reading the input.
+% This makes it possible to make a .fmt file for texinfo.
+\def\setfilename{%
+ \fixbackslash % Turn off hack to swallow `\input texinfo'.
+ \iflinks
+ \tryauxfile
+ % Open the new aux file. TeX will close it automatically at exit.
+ \immediate\openout\auxfile=\jobname.aux
+ \fi % \openindices needs to do some work in any case.
+ \openindices
+ \let\setfilename=\comment % Ignore extra @setfilename cmds.
+ %
+ % If texinfo.cnf is present on the system, read it.
+ % Useful for site-wide @afourpaper, etc.
+ \openin 1 texinfo.cnf
+ \ifeof 1 \else \input texinfo.cnf \fi
+ \closein 1
+ %
+ \comment % Ignore the actual filename.
+}
+
+% Called from \setfilename.
+%
+\def\openindices{%
+ \newindex{cp}%
+ \newcodeindex{fn}%
+ \newcodeindex{vr}%
+ \newcodeindex{tp}%
+ \newcodeindex{ky}%
+ \newcodeindex{pg}%
+}
+
+% @bye.
+\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
+
+
+\message{pdf,}
+% adobe `portable' document format
+\newcount\tempnum
+\newcount\lnkcount
+\newtoks\filename
+\newcount\filenamelength
+\newcount\pgn
+\newtoks\toksA
+\newtoks\toksB
+\newtoks\toksC
+\newtoks\toksD
+\newbox\boxA
+\newcount\countA
+\newif\ifpdf
+\newif\ifpdfmakepagedest
+
+% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
+% can be set). So we test for \relax and 0 as well as \undefined,
+% borrowed from ifpdf.sty.
+\ifx\pdfoutput\undefined
+\else
+ \ifx\pdfoutput\relax
+ \else
+ \ifcase\pdfoutput
+ \else
+ \pdftrue
+ \fi
+ \fi
+\fi
+
+% PDF uses PostScript string constants for the names of xref targets,
+% for display in the outlines, and in other places. Thus, we have to
+% double any backslashes. Otherwise, a name like "\node" will be
+% interpreted as a newline (\n), followed by o, d, e. Not good.
+% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
+% (and related messages, the final outcome is that it is up to the TeX
+% user to double the backslashes and otherwise make the string valid, so
+% that's what we do).
+
+% double active backslashes.
+%
+{\catcode`\@=0 \catcode`\\=\active
+ @gdef@activebackslashdouble{%
+ @catcode`@\=@active
+ @let\=@doublebackslash}
+}
+
+% To handle parens, we must adopt a different approach, since parens are
+% not active characters. hyperref.dtx (which has the same problem as
+% us) handles it with this amazing macro to replace tokens, with minor
+% changes for Texinfo. It is included here under the GPL by permission
+% from the author, Heiko Oberdiek.
+%
+% #1 is the tokens to replace.
+% #2 is the replacement.
+% #3 is the control sequence with the string.
+%
+\def\HyPsdSubst#1#2#3{%
+ \def\HyPsdReplace##1#1##2\END{%
+ ##1%
+ \ifx\\##2\\%
+ \else
+ #2%
+ \HyReturnAfterFi{%
+ \HyPsdReplace##2\END
+ }%
+ \fi
+ }%
+ \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
+}
+\long\def\HyReturnAfterFi#1\fi{\fi#1}
+
+% #1 is a control sequence in which to do the replacements.
+\def\backslashparens#1{%
+ \xdef#1{#1}% redefine it as its expansion; the definition is simply
+ % \lastnode when called from \setref -> \pdfmkdest.
+ \HyPsdSubst{(}{\realbackslash(}{#1}%
+ \HyPsdSubst{)}{\realbackslash)}{#1}%
+}
+
+\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
+with PDF output, and none of those formats could be found. (.eps cannot
+be supported due to the design of the PDF format; use regular TeX (DVI
+output) for that.)}
+
+\ifpdf
+ %
+ % Color manipulation macros based on pdfcolor.tex.
+ \def\cmykDarkRed{0.28 1 1 0.35}
+ \def\cmykBlack{0 0 0 1}
+ %
+ \def\pdfsetcolor#1{\pdfliteral{#1 k}}
+ % Set color, and create a mark which defines \thiscolor accordingly,
+ % so that \makeheadline knows which color to restore.
+ \def\setcolor#1{%
+ \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
+ \domark
+ \pdfsetcolor{#1}%
+ }
+ %
+ \def\maincolor{\cmykBlack}
+ \pdfsetcolor{\maincolor}
+ \edef\thiscolor{\maincolor}
+ \def\lastcolordefs{}
+ %
+ \def\makefootline{%
+ \baselineskip24pt
+ \line{\pdfsetcolor{\maincolor}\the\footline}%
+ }
+ %
+ \def\makeheadline{%
+ \vbox to 0pt{%
+ \vskip-22.5pt
+ \line{%
+ \vbox to8.5pt{}%
+ % Extract \thiscolor definition from the marks.
+ \getcolormarks
+ % Typeset the headline with \maincolor, then restore the color.
+ \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
+ }%
+ \vss
+ }%
+ \nointerlineskip
+ }
+ %
+ %
+ \pdfcatalog{/PageMode /UseOutlines}
+ %
+ % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
+ \def\dopdfimage#1#2#3{%
+ \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+ \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+ %
+ % pdftex (and the PDF format) support .png, .jpg, .pdf (among
+ % others). Let's try in that order.
+ \let\pdfimgext=\empty
+ \begingroup
+ \openin 1 #1.png \ifeof 1
+ \openin 1 #1.jpg \ifeof 1
+ \openin 1 #1.jpeg \ifeof 1
+ \openin 1 #1.JPG \ifeof 1
+ \openin 1 #1.pdf \ifeof 1
+ \openin 1 #1.PDF \ifeof 1
+ \errhelp = \nopdfimagehelp
+ \errmessage{Could not find image file #1 for pdf}%
+ \else \gdef\pdfimgext{PDF}%
+ \fi
+ \else \gdef\pdfimgext{pdf}%
+ \fi
+ \else \gdef\pdfimgext{JPG}%
+ \fi
+ \else \gdef\pdfimgext{jpeg}%
+ \fi
+ \else \gdef\pdfimgext{jpg}%
+ \fi
+ \else \gdef\pdfimgext{png}%
+ \fi
+ \closein 1
+ \endgroup
+ %
+ % without \immediate, ancient pdftex seg faults when the same image is
+ % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.)
+ \ifnum\pdftexversion < 14
+ \immediate\pdfimage
+ \else
+ \immediate\pdfximage
+ \fi
+ \ifdim \wd0 >0pt width \imagewidth \fi
+ \ifdim \wd2 >0pt height \imageheight \fi
+ \ifnum\pdftexversion<13
+ #1.\pdfimgext
+ \else
+ {#1.\pdfimgext}%
+ \fi
+ \ifnum\pdftexversion < 14 \else
+ \pdfrefximage \pdflastximage
+ \fi}
+ %
+ \def\pdfmkdest#1{{%
+ % We have to set dummies so commands such as @code, and characters
+ % such as \, aren't expanded when present in a section title.
+ \indexnofonts
+ \turnoffactive
+ \activebackslashdouble
+ \makevalueexpandable
+ \def\pdfdestname{#1}%
+ \backslashparens\pdfdestname
+ \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+ }}
+ %
+ % used to mark target names; must be expandable.
+ \def\pdfmkpgn#1{#1}
+ %
+ % by default, use a color that is dark enough to print on paper as
+ % nearly black, but still distinguishable for online viewing.
+ \def\urlcolor{\cmykDarkRed}
+ \def\linkcolor{\cmykDarkRed}
+ \def\endlink{\setcolor{\maincolor}\pdfendlink}
+ %
+ % Adding outlines to PDF; macros for calculating structure of outlines
+ % come from Petr Olsak
+ \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
+ \else \csname#1\endcsname \fi}
+ \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
+ \advance\tempnum by 1
+ \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
+ %
+ % #1 is the section text, which is what will be displayed in the
+ % outline by the pdf viewer. #2 is the pdf expression for the number
+ % of subentries (or empty, for subsubsections). #3 is the node text,
+ % which might be empty if this toc entry had no corresponding node.
+ % #4 is the page number
+ %
+ \def\dopdfoutline#1#2#3#4{%
+ % Generate a link to the node text if that exists; else, use the
+ % page number. We could generate a destination for the section
+ % text in the case where a section has no node, but it doesn't
+ % seem worth the trouble, since most documents are normally structured.
+ \def\pdfoutlinedest{#3}%
+ \ifx\pdfoutlinedest\empty
+ \def\pdfoutlinedest{#4}%
+ \else
+ % Doubled backslashes in the name.
+ {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
+ \backslashparens\pdfoutlinedest}%
+ \fi
+ %
+ % Also double the backslashes in the display string.
+ {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
+ \backslashparens\pdfoutlinetext}%
+ %
+ \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
+ }
+ %
+ \def\pdfmakeoutlines{%
+ \begingroup
+ % Thanh's hack / proper braces in bookmarks
+ \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
+ \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
+ %
+ % Read toc silently, to get counts of subentries for \pdfoutline.
+ \def\numchapentry##1##2##3##4{%
+ \def\thischapnum{##2}%
+ \def\thissecnum{0}%
+ \def\thissubsecnum{0}%
+ }%
+ \def\numsecentry##1##2##3##4{%
+ \advancenumber{chap\thischapnum}%
+ \def\thissecnum{##2}%
+ \def\thissubsecnum{0}%
+ }%
+ \def\numsubsecentry##1##2##3##4{%
+ \advancenumber{sec\thissecnum}%
+ \def\thissubsecnum{##2}%
+ }%
+ \def\numsubsubsecentry##1##2##3##4{%
+ \advancenumber{subsec\thissubsecnum}%
+ }%
+ \def\thischapnum{0}%
+ \def\thissecnum{0}%
+ \def\thissubsecnum{0}%
+ %
+ % use \def rather than \let here because we redefine \chapentry et
+ % al. a second time, below.
+ \def\appentry{\numchapentry}%
+ \def\appsecentry{\numsecentry}%
+ \def\appsubsecentry{\numsubsecentry}%
+ \def\appsubsubsecentry{\numsubsubsecentry}%
+ \def\unnchapentry{\numchapentry}%
+ \def\unnsecentry{\numsecentry}%
+ \def\unnsubsecentry{\numsubsecentry}%
+ \def\unnsubsubsecentry{\numsubsubsecentry}%
+ \readdatafile{toc}%
+ %
+ % Read toc second time, this time actually producing the outlines.
+ % The `-' means take the \expnumber as the absolute number of
+ % subentries, which we calculated on our first read of the .toc above.
+ %
+ % We use the node names as the destinations.
+ \def\numchapentry##1##2##3##4{%
+ \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
+ \def\numsecentry##1##2##3##4{%
+ \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
+ \def\numsubsecentry##1##2##3##4{%
+ \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
+ \def\numsubsubsecentry##1##2##3##4{% count is always zero
+ \dopdfoutline{##1}{}{##3}{##4}}%
+ %
+ % PDF outlines are displayed using system fonts, instead of
+ % document fonts. Therefore we cannot use special characters,
+ % since the encoding is unknown. For example, the eogonek from
+ % Latin 2 (0xea) gets translated to a | character. Info from
+ % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
+ %
+ % xx to do this right, we have to translate 8-bit characters to
+ % their "best" equivalent, based on the @documentencoding. Right
+ % now, I guess we'll just let the pdf reader have its way.
+ \indexnofonts
+ \setupdatafile
+ \catcode`\\=\active \otherbackslash
+ \input \tocreadfilename
+ \endgroup
+ }
+ %
+ \def\skipspaces#1{\def\PP{#1}\def\D{|}%
+ \ifx\PP\D\let\nextsp\relax
+ \else\let\nextsp\skipspaces
+ \ifx\p\space\else\addtokens{\filename}{\PP}%
+ \advance\filenamelength by 1
+ \fi
+ \fi
+ \nextsp}
+ \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
+ \ifnum\pdftexversion < 14
+ \let \startlink \pdfannotlink
+ \else
+ \let \startlink \pdfstartlink
+ \fi
+ % make a live url in pdf output.
+ \def\pdfurl#1{%
+ \begingroup
+ % it seems we really need yet another set of dummies; have not
+ % tried to figure out what each command should do in the context
+ % of @url. for now, just make @/ a no-op, that's the only one
+ % people have actually reported a problem with.
+ %
+ \normalturnoffactive
+ \def\@{@}%
+ \let\/=\empty
+ \makevalueexpandable
+ \leavevmode\setcolor{\urlcolor}%
+ \startlink attr{/Border [0 0 0]}%
+ user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
+ \endgroup}
+ \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
+ \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+ \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
+ \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
+ \def\maketoks{%
+ \expandafter\poptoks\the\toksA|ENDTOKS|\relax
+ \ifx\first0\adn0
+ \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
+ \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
+ \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
+ \else
+ \ifnum0=\countA\else\makelink\fi
+ \ifx\first.\let\next=\done\else
+ \let\next=\maketoks
+ \addtokens{\toksB}{\the\toksD}
+ \ifx\first,\addtokens{\toksB}{\space}\fi
+ \fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \next}
+ \def\makelink{\addtokens{\toksB}%
+ {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
+ \def\pdflink#1{%
+ \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
+ \setcolor{\linkcolor}#1\endlink}
+ \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
+\else
+ \let\pdfmkdest = \gobble
+ \let\pdfurl = \gobble
+ \let\endlink = \relax
+ \let\setcolor = \gobble
+ \let\pdfsetcolor = \gobble
+ \let\pdfmakeoutlines = \relax
+\fi % \ifx\pdfoutput
+
+
+\message{fonts,}
+
+% Change the current font style to #1, remembering it in \curfontstyle.
+% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
+% italics, not bold italics.
+%
+\def\setfontstyle#1{%
+ \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
+ \csname ten#1\endcsname % change the current font
+}
+
+% Select #1 fonts with the current style.
+%
+\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
+
+\def\rm{\fam=0 \setfontstyle{rm}}
+\def\it{\fam=\itfam \setfontstyle{it}}
+\def\sl{\fam=\slfam \setfontstyle{sl}}
+\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
+\def\tt{\fam=\ttfam \setfontstyle{tt}}
+
+% Texinfo sort of supports the sans serif font style, which plain TeX does not.
+% So we set up a \sf.
+\newfam\sffam
+\def\sf{\fam=\sffam \setfontstyle{sf}}
+\let\li = \sf % Sometimes we call it \li, not \sf.
+
+% We don't need math for this font style.
+\def\ttsl{\setfontstyle{ttsl}}
+
+
+% Default leading.
+\newdimen\textleading \textleading = 13.2pt
+
+% Set the baselineskip to #1, and the lineskip and strut size
+% correspondingly. There is no deep meaning behind these magic numbers
+% used as factors; they just match (closely enough) what Knuth defined.
+%
+\def\lineskipfactor{.08333}
+\def\strutheightpercent{.70833}
+\def\strutdepthpercent {.29167}
+%
+% can get a sort of poor man's double spacing by redefining this.
+\def\baselinefactor{1}
+%
+\def\setleading#1{%
+ \dimen0 = #1\relax
+ \normalbaselineskip = \baselinefactor\dimen0
+ \normallineskip = \lineskipfactor\normalbaselineskip
+ \normalbaselines
+ \setbox\strutbox =\hbox{%
+ \vrule width0pt height\strutheightpercent\baselineskip
+ depth \strutdepthpercent \baselineskip
+ }%
+}
+
+% PDF CMaps. See also LaTeX's t1.cmap.
+%
+% do nothing with this by default.
+\expandafter\let\csname cmapOT1\endcsname\gobble
+\expandafter\let\csname cmapOT1IT\endcsname\gobble
+\expandafter\let\csname cmapOT1TT\endcsname\gobble
+
+% if we are producing pdf, and we have \pdffontattr, then define cmaps.
+% (\pdffontattr was introduced many years ago, but people still run
+% older pdftex's; it's easy to conditionalize, so we do.)
+\ifpdf \ifx\pdffontattr\undefined \else
+ \begingroup
+ \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+ \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1-0)
+%%Title: (TeX-OT1-0 TeX OT1 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+40 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+ }\endgroup
+ \expandafter\edef\csname cmapOT1\endcsname#1{%
+ \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+ }%
+%
+% \cmapOT1IT
+ \begingroup
+ \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+ \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1IT-0)
+%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1IT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1IT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<25> <26> <0025>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+42 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<23> <0023>
+<24> <00A3>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+ }\endgroup
+ \expandafter\edef\csname cmapOT1IT\endcsname#1{%
+ \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+ }%
+%
+% \cmapOT1TT
+ \begingroup
+ \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+ \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1TT-0)
+%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1TT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1TT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+5 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<21> <26> <0021>
+<28> <5F> <0028>
+<61> <7E> <0061>
+endbfrange
+32 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <2191>
+<0C> <2193>
+<0D> <0027>
+<0E> <00A1>
+<0F> <00BF>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<20> <2423>
+<27> <2019>
+<60> <2018>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+ }\endgroup
+ \expandafter\edef\csname cmapOT1TT\endcsname#1{%
+ \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+ }%
+\fi\fi
+
+
+% Set the font macro #1 to the font named #2, adding on the
+% specified font prefix (normally `cm').
+% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
+% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass
+% empty to omit).
+\def\setfont#1#2#3#4#5{%
+ \font#1=\fontprefix#2#3 scaled #4
+ \csname cmap#5\endcsname#1%
+}
+% This is what gets called when #5 of \setfont is empty.
+\let\cmap\gobble
+% emacs-page end of cmaps
+
+% Use cm as the default font prefix.
+% To specify the font prefix, you must define \fontprefix
+% before you read in texinfo.tex.
+\ifx\fontprefix\undefined
+\def\fontprefix{cm}
+\fi
+% Support font families that don't use the same naming scheme as CM.
+\def\rmshape{r}
+\def\rmbshape{bx} %where the normal face is bold
+\def\bfshape{b}
+\def\bxshape{bx}
+\def\ttshape{tt}
+\def\ttbshape{tt}
+\def\ttslshape{sltt}
+\def\itshape{ti}
+\def\itbshape{bxti}
+\def\slshape{sl}
+\def\slbshape{bxsl}
+\def\sfshape{ss}
+\def\sfbshape{ss}
+\def\scshape{csc}
+\def\scbshape{csc}
+
+% Definitions for a main text size of 11pt. This is the default in
+% Texinfo.
+%
+\def\definetextfontsizexi{%
+% Text fonts (11.2pt, magstep1).
+\def\textnominalsize{11pt}
+\edef\mainmagstep{\magstephalf}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1095}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstep1}{OT1}
+\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\authorrm{\secrm}
+\def\authortt{\sectt}
+\def\titleecsize{2074}
+
+% Chapter (and unnumbered) fonts (17.28pt).
+\def\chapnominalsize{17pt}
+\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
+\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
+\setfont\chapsf\sfbshape{17}{1000}{OT1}
+\let\chapbf=\chaprm
+\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
+\font\chapi=cmmi12 scaled \magstep2
+\font\chapsy=cmsy10 scaled \magstep3
+\def\chapecsize{1728}
+
+% Section fonts (14.4pt).
+\def\secnominalsize{14pt}
+\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
+\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep2}{OT1}
+\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep2}{OT1}
+\font\seci=cmmi12 scaled \magstep1
+\font\secsy=cmsy10 scaled \magstep2
+\def\sececsize{1440}
+
+% Subsection fonts (13.15pt).
+\def\ssecnominalsize{13pt}
+\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
+\setfont\ssecit\itbshape{10}{1315}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1315}{OT1}
+\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
+\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1315}{OT1}
+\font\sseci=cmmi12 scaled \magstephalf
+\font\ssecsy=cmsy10 scaled 1315
+\def\ssececsize{1200}
+
+% Reduced fonts for @acro in text (10pt).
+\def\reducednominalsize{10pt}
+\setfont\reducedrm\rmshape{10}{1000}{OT1}
+\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{1000}{OT1}
+\setfont\reducedit\itshape{10}{1000}{OT1IT}
+\setfont\reducedsl\slshape{10}{1000}{OT1}
+\setfont\reducedsf\sfshape{10}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{1000}{OT1}
+\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
+\font\reducedi=cmmi10
+\font\reducedsy=cmsy10
+\def\reducedecsize{1000}
+
+% reset the current fonts
+\textfonts
+\rm
+} % end of 11pt text font size definitions
+
+
+% Definitions to make the main text be 10pt Computer Modern, with
+% section, chapter, etc., sizes following suit. This is for the GNU
+% Press printing of the Emacs 22 manual. Maybe other manuals in the
+% future. Used with @smallbook, which sets the leading to 12pt.
+%
+\def\definetextfontsizex{%
+% Text fonts (10pt).
+\def\textnominalsize{10pt}
+\edef\mainmagstep{1000}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1000}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
+\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\authorrm{\secrm}
+\def\authortt{\sectt}
+\def\titleecsize{2074}
+
+% Chapter fonts (14.4pt).
+\def\chapnominalsize{14pt}
+\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
+\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
+\let\chapbf\chaprm
+\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
+\font\chapi=cmmi12 scaled \magstep1
+\font\chapsy=cmsy10 scaled \magstep2
+\def\chapecsize{1440}
+
+% Section fonts (12pt).
+\def\secnominalsize{12pt}
+\setfont\secrm\rmbshape{12}{1000}{OT1}
+\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep1}{OT1}
+\setfont\sectt\ttbshape{12}{1000}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
+\setfont\secsf\sfbshape{12}{1000}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep1}{OT1}
+\font\seci=cmmi12
+\font\secsy=cmsy10 scaled \magstep1
+\def\sececsize{1200}
+
+% Subsection fonts (10pt).
+\def\ssecnominalsize{10pt}
+\setfont\ssecrm\rmbshape{10}{1000}{OT1}
+\setfont\ssecit\itbshape{10}{1000}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1000}{OT1}
+\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
+\setfont\ssecsf\sfbshape{10}{1000}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1000}{OT1}
+\font\sseci=cmmi10
+\font\ssecsy=cmsy10
+\def\ssececsize{1000}
+
+% Reduced fonts for @acro in text (9pt).
+\def\reducednominalsize{9pt}
+\setfont\reducedrm\rmshape{9}{1000}{OT1}
+\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{900}{OT1}
+\setfont\reducedit\itshape{9}{1000}{OT1IT}
+\setfont\reducedsl\slshape{9}{1000}{OT1}
+\setfont\reducedsf\sfshape{9}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{900}{OT1}
+\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
+\font\reducedi=cmmi9
+\font\reducedsy=cmsy9
+\def\reducedecsize{0900}
+
+% reduce space between paragraphs
+\divide\parskip by 2
+
+% reset the current fonts
+\textfonts
+\rm
+} % end of 10pt text font size definitions
+
+
+% We provide the user-level command
+% @fonttextsize 10
+% (or 11) to redefine the text font size. pt is assumed.
+%
+\def\xword{10}
+\def\xiword{11}
+%
+\parseargdef\fonttextsize{%
+ \def\textsizearg{#1}%
+ \wlog{doing @fonttextsize \textsizearg}%
+ %
+ % Set \globaldefs so that documents can use this inside @tex, since
+ % makeinfo 4.8 does not support it, but we need it nonetheless.
+ %
+ \begingroup \globaldefs=1
+ \ifx\textsizearg\xword \definetextfontsizex
+ \else \ifx\textsizearg\xiword \definetextfontsizexi
+ \else
+ \errhelp=\EMsimple
+ \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
+ \fi\fi
+ \endgroup
+}
+
+
+% In order for the font changes to affect most math symbols and letters,
+% we have to define the \textfont of the standard families. Since
+% texinfo doesn't allow for producing subscripts and superscripts except
+% in the main text, we don't bother to reset \scriptfont and
+% \scriptscriptfont (which would also require loading a lot more fonts).
+%
+\def\resetmathfonts{%
+ \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
+ \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
+ \textfont\ttfam=\tentt \textfont\sffam=\tensf
+}
+
+% The font-changing commands redefine the meanings of \tenSTYLE, instead
+% of just \STYLE. We do this because \STYLE needs to also set the
+% current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire
+% \tenSTYLE to set the current font.
+%
+% Each font-changing command also sets the names \lsize (one size lower)
+% and \lllsize (three sizes lower). These relative commands are used in
+% the LaTeX logo and acronyms.
+%
+% This all needs generalizing, badly.
+%
+\def\textfonts{%
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
+ \let\tenttsl=\textttsl
+ \def\curfontsize{text}%
+ \def\lsize{reduced}\def\lllsize{smaller}%
+ \resetmathfonts \setleading{\textleading}}
+\def\titlefonts{%
+ \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
+ \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
+ \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
+ \let\tenttsl=\titlettsl
+ \def\curfontsize{title}%
+ \def\lsize{chap}\def\lllsize{subsec}%
+ \resetmathfonts \setleading{25pt}}
+\def\titlefont#1{{\titlefonts\rm #1}}
+\def\chapfonts{%
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
+ \let\tenttsl=\chapttsl
+ \def\curfontsize{chap}%
+ \def\lsize{sec}\def\lllsize{text}%
+ \resetmathfonts \setleading{19pt}}
+\def\secfonts{%
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
+ \let\tenttsl=\secttsl
+ \def\curfontsize{sec}%
+ \def\lsize{subsec}\def\lllsize{reduced}%
+ \resetmathfonts \setleading{16pt}}
+\def\subsecfonts{%
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
+ \let\tenttsl=\ssecttsl
+ \def\curfontsize{ssec}%
+ \def\lsize{text}\def\lllsize{small}%
+ \resetmathfonts \setleading{15pt}}
+\let\subsubsecfonts = \subsecfonts
+\def\reducedfonts{%
+ \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
+ \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
+ \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
+ \let\tenttsl=\reducedttsl
+ \def\curfontsize{reduced}%
+ \def\lsize{small}\def\lllsize{smaller}%
+ \resetmathfonts \setleading{10.5pt}}
+\def\smallfonts{%
+ \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
+ \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
+ \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
+ \let\tenttsl=\smallttsl
+ \def\curfontsize{small}%
+ \def\lsize{smaller}\def\lllsize{smaller}%
+ \resetmathfonts \setleading{10.5pt}}
+\def\smallerfonts{%
+ \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
+ \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
+ \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
+ \let\tenttsl=\smallerttsl
+ \def\curfontsize{smaller}%
+ \def\lsize{smaller}\def\lllsize{smaller}%
+ \resetmathfonts \setleading{9.5pt}}
+
+% Set the fonts to use with the @small... environments.
+\let\smallexamplefonts = \smallfonts
+
+% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample
+% can fit this many characters:
+% 8.5x11=86 smallbook=72 a4=90 a5=69
+% If we use \scriptfonts (8pt), then we can fit this many characters:
+% 8.5x11=90+ smallbook=80 a4=90+ a5=77
+% For me, subjectively, the few extra characters that fit aren't worth
+% the additional smallness of 8pt. So I'm making the default 9pt.
+%
+% By the way, for comparison, here's what fits with @example (10pt):
+% 8.5x11=71 smallbook=60 a4=75 a5=58
+%
+% I wish the USA used A4 paper.
+% --karl, 24jan03.
+
+
+% Set up the default fonts, so we can use them for creating boxes.
+%
+\definetextfontsizexi
+
+% Define these so they can be easily changed for other fonts.
+\def\angleleft{$\langle$}
+\def\angleright{$\rangle$}
+
+% Count depth in font-changes, for error checks
+\newcount\fontdepth \fontdepth=0
+
+% Fonts for short table of contents.
+\setfont\shortcontrm\rmshape{12}{1000}{OT1}
+\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}{OT1}
+\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
+
+%% Add scribe-like font environments, plus @l for inline lisp (usually sans
+%% serif) and @ii for TeX italic
+
+% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
+% unless the following character is such as not to need one.
+\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
+ \ptexslash\fi\fi\fi}
+\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
+\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
+
+% like \smartslanted except unconditionally uses \ttsl.
+% @var is set to this for defun arguments.
+\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
+
+% like \smartslanted except unconditionally use \sl. We never want
+% ttsl for book titles, do we?
+\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
+
+\let\i=\smartitalic
+\let\slanted=\smartslanted
+\let\var=\smartslanted
+\let\dfn=\smartslanted
+\let\emph=\smartitalic
+
+% @b, explicit bold.
+\def\b#1{{\bf #1}}
+\let\strong=\b
+
+% @sansserif, explicit sans.
+\def\sansserif#1{{\sf #1}}
+
+% We can't just use \exhyphenpenalty, because that only has effect at
+% the end of a paragraph. Restore normal hyphenation at the end of the
+% group within which \nohyphenation is presumably called.
+%
+\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation}
+\def\restorehyphenation{\hyphenchar\font = `- }
+
+% Set sfcode to normal for the chars that usually have another value.
+% Can't use plain's \frenchspacing because it uses the `\x notation, and
+% sometimes \x has an active definition that messes things up.
+%
+\catcode`@=11
+ \def\plainfrenchspacing{%
+ \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
+ \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
+ \def\endofsentencespacefactor{1000}% for @. and friends
+ }
+ \def\plainnonfrenchspacing{%
+ \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
+ \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
+ \def\endofsentencespacefactor{3000}% for @. and friends
+ }
+\catcode`@=\other
+\def\endofsentencespacefactor{3000}% default
+
+\def\t#1{%
+ {\tt \rawbackslash \plainfrenchspacing #1}%
+ \null
+}
+\def\samp#1{`\tclose{#1}'\null}
+\setfont\keyrm\rmshape{8}{1000}{OT1}
+\font\keysy=cmsy9
+\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
+ \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
+ \vbox{\hrule\kern-0.4pt
+ \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+ \kern-0.4pt\hrule}%
+ \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+\def\key #1{{\nohyphenation \uppercase{#1}}\null}
+% The old definition, with no lozenge:
+%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
+\def\ctrl #1{{\tt \rawbackslash \hat}#1}
+
+% @file, @option are the same as @samp.
+\let\file=\samp
+\let\option=\samp
+
+% @code is a modification of @t,
+% which makes spaces the same size as normal in the surrounding text.
+\def\tclose#1{%
+ {%
+ % Change normal interword space to be same as for the current font.
+ \spaceskip = \fontdimen2\font
+ %
+ % Switch to typewriter.
+ \tt
+ %
+ % But `\ ' produces the large typewriter interword space.
+ \def\ {{\spaceskip = 0pt{} }}%
+ %
+ % Turn off hyphenation.
+ \nohyphenation
+ %
+ \rawbackslash
+ \plainfrenchspacing
+ #1%
+ }%
+ \null
+}
+
+% We *must* turn on hyphenation at `-' and `_' in @code.
+% Otherwise, it is too hard to avoid overfull hboxes
+% in the Emacs manual, the Library manual, etc.
+
+% Unfortunately, TeX uses one parameter (\hyphenchar) to control
+% both hyphenation at - and hyphenation within words.
+% We must therefore turn them both off (\tclose does that)
+% and arrange explicitly to hyphenate at a dash.
+% -- rms.
+{
+ \catcode`\-=\active \catcode`\_=\active
+ \catcode`\'=\active \catcode`\`=\active
+ %
+ \global\def\code{\begingroup
+ \catcode\rquoteChar=\active \catcode\lquoteChar=\active
+ \let'\codequoteright \let`\codequoteleft
+ %
+ \catcode\dashChar=\active \catcode\underChar=\active
+ \ifallowcodebreaks
+ \let-\codedash
+ \let_\codeunder
+ \else
+ \let-\realdash
+ \let_\realunder
+ \fi
+ \codex
+ }
+}
+
+\def\realdash{-}
+\def\codedash{-\discretionary{}{}{}}
+\def\codeunder{%
+ % this is all so @math{@code{var_name}+1} can work. In math mode, _
+ % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
+ % will therefore expand the active definition of _, which is us
+ % (inside @code that is), therefore an endless loop.
+ \ifusingtt{\ifmmode
+ \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
+ \else\normalunderscore \fi
+ \discretionary{}{}{}}%
+ {\_}%
+}
+\def\codex #1{\tclose{#1}\endgroup}
+
+% An additional complication: the above will allow breaks after, e.g.,
+% each of the four underscores in __typeof__. This is undesirable in
+% some manuals, especially if they don't have long identifiers in
+% general. @allowcodebreaks provides a way to control this.
+%
+\newif\ifallowcodebreaks \allowcodebreakstrue
+
+\def\keywordtrue{true}
+\def\keywordfalse{false}
+
+\parseargdef\allowcodebreaks{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\keywordtrue
+ \allowcodebreakstrue
+ \else\ifx\txiarg\keywordfalse
+ \allowcodebreaksfalse
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
+ \fi\fi
+}
+
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+
+% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
+% `example' (@kbd uses ttsl only inside of @example and friends),
+% or `code' (@kbd uses normal tty font always).
+\parseargdef\kbdinputstyle{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\worddistinct
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+ \else\ifx\txiarg\wordexample
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+ \else\ifx\txiarg\wordcode
+ \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
+ \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct.'
+\kbdinputstyle distinct
+
+\def\xkey{\key}
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
+\ifx\one\xkey\ifx\threex\three \key{#2}%
+\else{\tclose{\kbdfont\look}}\fi
+\else{\tclose{\kbdfont\look}}\fi}
+
+% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
+\let\indicateurl=\code
+\let\env=\code
+\let\command=\code
+
+% @clicksequence{File @click{} Open ...}
+\def\clicksequence#1{\begingroup #1\endgroup}
+
+% @clickstyle @arrow (by default)
+\parseargdef\clickstyle{\def\click{#1}}
+\def\click{\arrow}
+
+% @uref (abbreviation for `urlref') takes an optional (comma-separated)
+% second argument specifying the text to display and an optional third
+% arg as text to display instead of (rather than in addition to) the url
+% itself. First (mandatory) arg is the url. Perhaps eventually put in
+% a hypertex \special here.
+%
+\def\uref#1{\douref #1,,,\finish}
+\def\douref#1,#2,#3,#4\finish{\begingroup
+ \unsepspaces
+ \pdfurl{#1}%
+ \setbox0 = \hbox{\ignorespaces #3}%
+ \ifdim\wd0 > 0pt
+ \unhbox0 % third arg given, show only that
+ \else
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0 > 0pt
+ \ifpdf
+ \unhbox0 % PDF: 2nd arg given, show only it
+ \else
+ \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
+ \fi
+ \else
+ \code{#1}% only url given, so show it
+ \fi
+ \fi
+ \endlink
+\endgroup}
+
+% @url synonym for @uref, since that's how everyone uses it.
+%
+\let\url=\uref
+
+% rms does not like angle brackets --karl, 17may97.
+% So now @email is just like @uref, unless we are pdf.
+%
+%\def\email#1{\angleleft{\tt #1}\angleright}
+\ifpdf
+ \def\email#1{\doemail#1,,\finish}
+ \def\doemail#1,#2,#3\finish{\begingroup
+ \unsepspaces
+ \pdfurl{mailto:#1}%
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
+ \endlink
+ \endgroup}
+\else
+ \let\email=\uref
+\fi
+
+% Check if we are currently using a typewriter font. Since all the
+% Computer Modern typewriter fonts have zero interword stretch (and
+% shrink), and it is reasonable to expect all typewriter fonts to have
+% this property, we can check that font parameter.
+%
+\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
+
+% Typeset a dimension, e.g., `in' or `pt'. The only reason for the
+% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
+%
+\def\dmn#1{\thinspace #1}
+
+\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
+
+% @l was never documented to mean ``switch to the Lisp font'',
+% and it is not used as such in any manual I can find. We need it for
+% Polish suppressed-l. --karl, 22sep96.
+%\def\l#1{{\li #1}\null}
+
+% Explicit font changes: @r, @sc, undocumented @ii.
+\def\r#1{{\rm #1}} % roman font
+\def\sc#1{{\smallcaps#1}} % smallcaps font
+\def\ii#1{{\it #1}} % italic font
+
+% @acronym for "FBI", "NATO", and the like.
+% We print this one point size smaller, since it's intended for
+% all-uppercase.
+%
+\def\acronym#1{\doacronym #1,,\finish}
+\def\doacronym#1,#2,#3\finish{%
+ {\selectfonts\lsize #1}%
+ \def\temp{#2}%
+ \ifx\temp\empty \else
+ \space ({\unsepspaces \ignorespaces \temp \unskip})%
+ \fi
+}
+
+% @abbr for "Comput. J." and the like.
+% No font change, but don't do end-of-sentence spacing.
+%
+\def\abbr#1{\doabbr #1,,\finish}
+\def\doabbr#1,#2,#3\finish{%
+ {\plainfrenchspacing #1}%
+ \def\temp{#2}%
+ \ifx\temp\empty \else
+ \space ({\unsepspaces \ignorespaces \temp \unskip})%
+ \fi
+}
+
+% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
+%
+\def\pounds{{\it\$}}
+
+% @euro{} comes from a separate font, depending on the current style.
+% We use the free feym* fonts from the eurosym package by Henrik
+% Theiling, which support regular, slanted, bold and bold slanted (and
+% "outlined" (blackboard board, sort of) versions, which we don't need).
+% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
+%
+% Although only regular is the truly official Euro symbol, we ignore
+% that. The Euro is designed to be slightly taller than the regular
+% font height.
+%
+% feymr - regular
+% feymo - slanted
+% feybr - bold
+% feybo - bold slanted
+%
+% There is no good (free) typewriter version, to my knowledge.
+% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
+% Hmm.
+%
+% Also doesn't work in math. Do we need to do math with euro symbols?
+% Hope not.
+%
+%
+\def\euro{{\eurofont e}}
+\def\eurofont{%
+ % We set the font at each command, rather than predefining it in
+ % \textfonts and the other font-switching commands, so that
+ % installations which never need the symbol don't have to have the
+ % font installed.
+ %
+ % There is only one designed size (nominal 10pt), so we always scale
+ % that to the current nominal size.
+ %
+ % By the way, simply using "at 1em" works for cmr10 and the like, but
+ % does not work for cmbx10 and other extended/shrunken fonts.
+ %
+ \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
+ %
+ \ifx\curfontstyle\bfstylename
+ % bold:
+ \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
+ \else
+ % regular:
+ \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
+ \fi
+ \thiseurofont
+}
+
+% Hacks for glyphs from the EC fonts similar to \euro. We don't
+% use \let for the aliases, because sometimes we redefine the original
+% macro, and the alias should reflect the redefinition.
+\def\guillemetleft{{\ecfont \char"13}}
+\def\guillemotleft{\guillemetleft}
+\def\guillemetright{{\ecfont \char"14}}
+\def\guillemotright{\guillemetright}
+\def\guilsinglleft{{\ecfont \char"0E}}
+\def\guilsinglright{{\ecfont \char"0F}}
+\def\quotedblbase{{\ecfont \char"12}}
+\def\quotesinglbase{{\ecfont \char"0D}}
+%
+\def\ecfont{%
+ % We can't distinguish serif/sanserif and italic/slanted, but this
+ % is used for crude hacks anyway (like adding French and German
+ % quotes to documents typeset with CM, where we lose kerning), so
+ % hopefully nobody will notice/care.
+ \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
+ \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
+ \ifx\curfontstyle\bfstylename
+ % bold:
+ \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
+ \else
+ % regular:
+ \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+ \fi
+ \thisecfont
+}
+
+% @registeredsymbol - R in a circle. The font for the R should really
+% be smaller yet, but lllsize is the best we can do for now.
+% Adapted from the plain.tex definition of \copyright.
+%
+\def\registeredsymbol{%
+ $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
+ \hfil\crcr\Orb}}%
+ }$%
+}
+
+% @textdegree - the normal degrees sign.
+%
+\def\textdegree{$^\circ$}
+
+% Laurent Siebenmann reports \Orb undefined with:
+% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38
+% so we'll define it if necessary.
+%
+\ifx\Orb\undefined
+\def\Orb{\mathhexbox20D}
+\fi
+
+% Quotes.
+\chardef\quotedblleft="5C
+\chardef\quotedblright=`\"
+\chardef\quoteleft=`\`
+\chardef\quoteright=`\'
+
+
+\message{page headings,}
+
+\newskip\titlepagetopglue \titlepagetopglue = 1.5in
+\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
+
+% First the title page. Must do @settitle before @titlepage.
+\newif\ifseenauthor
+\newif\iffinishedtitlepage
+
+% Do an implicit @contents or @shortcontents after @end titlepage if the
+% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
+%
+\newif\ifsetcontentsaftertitlepage
+ \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
+\newif\ifsetshortcontentsaftertitlepage
+ \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
+
+\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+ \endgroup\page\hbox{}\page}
+
+\envdef\titlepage{%
+ % Open one extra group, as we want to close it in the middle of \Etitlepage.
+ \begingroup
+ \parindent=0pt \textfonts
+ % Leave some space at the very top of the page.
+ \vglue\titlepagetopglue
+ % No rule at page bottom unless we print one at the top with @title.
+ \finishedtitlepagetrue
+ %
+ % Most title ``pages'' are actually two pages long, with space
+ % at the top of the second. We don't want the ragged left on the second.
+ \let\oldpage = \page
+ \def\page{%
+ \iffinishedtitlepage\else
+ \finishtitlepage
+ \fi
+ \let\page = \oldpage
+ \page
+ \null
+ }%
+}
+
+\def\Etitlepage{%
+ \iffinishedtitlepage\else
+ \finishtitlepage
+ \fi
+ % It is important to do the page break before ending the group,
+ % because the headline and footline are only empty inside the group.
+ % If we use the new definition of \page, we always get a blank page
+ % after the title page, which we certainly don't want.
+ \oldpage
+ \endgroup
+ %
+ % Need this before the \...aftertitlepage checks so that if they are
+ % in effect the toc pages will come out with page numbers.
+ \HEADINGSon
+ %
+ % If they want short, they certainly want long too.
+ \ifsetshortcontentsaftertitlepage
+ \shortcontents
+ \contents
+ \global\let\shortcontents = \relax
+ \global\let\contents = \relax
+ \fi
+ %
+ \ifsetcontentsaftertitlepage
+ \contents
+ \global\let\contents = \relax
+ \global\let\shortcontents = \relax
+ \fi
+}
+
+\def\finishtitlepage{%
+ \vskip4pt \hrule height 2pt width \hsize
+ \vskip\titlepagebottomglue
+ \finishedtitlepagetrue
+}
+
+%%% Macros to be used within @titlepage:
+
+\let\subtitlerm=\tenrm
+\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
+
+\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines
+ \let\tt=\authortt}
+
+\parseargdef\title{%
+ \checkenv\titlepage
+ \leftline{\titlefonts\rm #1}
+ % print a rule at the page bottom also.
+ \finishedtitlepagefalse
+ \vskip4pt \hrule height 4pt width \hsize \vskip4pt
+}
+
+\parseargdef\subtitle{%
+ \checkenv\titlepage
+ {\subtitlefont \rightline{#1}}%
+}
+
+% @author should come last, but may come many times.
+% It can also be used inside @quotation.
+%
+\parseargdef\author{%
+ \def\temp{\quotation}%
+ \ifx\thisenv\temp
+ \def\quotationauthor{#1}% printed in \Equotation.
+ \else
+ \checkenv\titlepage
+ \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
+ {\authorfont \leftline{#1}}%
+ \fi
+}
+
+
+%%% Set up page headings and footings.
+
+\let\thispage=\folio
+
+\newtoks\evenheadline % headline on even pages
+\newtoks\oddheadline % headline on odd pages
+\newtoks\evenfootline % footline on even pages
+\newtoks\oddfootline % footline on odd pages
+
+% Now make TeX use those variables
+\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
+ \else \the\evenheadline \fi}}
+\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
+ \else \the\evenfootline \fi}\HEADINGShook}
+\let\HEADINGShook=\relax
+
+% Commands to set those variables.
+% For example, this is what @headings on does
+% @evenheading @thistitle|@thispage|@thischapter
+% @oddheading @thischapter|@thispage|@thistitle
+% @evenfooting @thisfile||
+% @oddfooting ||@thisfile
+
+
+\def\evenheading{\parsearg\evenheadingxxx}
+\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
+\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddheading{\parsearg\oddheadingxxx}
+\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
+\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
+
+\def\evenfooting{\parsearg\evenfootingxxx}
+\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
+\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddfooting{\parsearg\oddfootingxxx}
+\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
+\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
+ \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
+ %
+ % Leave some space for the footline. Hopefully ok to assume
+ % @evenfooting will not be used by itself.
+ \global\advance\pageheight by -12pt
+ \global\advance\vsize by -12pt
+}
+
+\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
+
+% @evenheadingmarks top \thischapter <- chapter at the top of a page
+% @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page
+%
+% The same set of arguments for:
+%
+% @oddheadingmarks
+% @evenfootingmarks
+% @oddfootingmarks
+% @everyheadingmarks
+% @everyfootingmarks
+
+\def\evenheadingmarks{\headingmarks{even}{heading}}
+\def\oddheadingmarks{\headingmarks{odd}{heading}}
+\def\evenfootingmarks{\headingmarks{even}{footing}}
+\def\oddfootingmarks{\headingmarks{odd}{footing}}
+\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
+ \headingmarks{odd}{heading}{#1} }
+\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
+ \headingmarks{odd}{footing}{#1} }
+% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
+\def\headingmarks#1#2#3 {%
+ \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname
+ \global\expandafter\let\csname get#1#2marks\endcsname \temp
+}
+
+\everyheadingmarks bottom
+\everyfootingmarks bottom
+
+% @headings double turns headings on for double-sided printing.
+% @headings single turns headings on for single-sided printing.
+% @headings off turns them off.
+% @headings on same as @headings double, retained for compatibility.
+% @headings after turns on double-sided headings after this page.
+% @headings doubleafter turns on double-sided headings after this page.
+% @headings singleafter turns on single-sided headings after this page.
+% By default, they are off at the start of a document,
+% and turned `on' after @end titlepage.
+
+\def\headings #1 {\csname HEADINGS#1\endcsname}
+
+\def\HEADINGSoff{%
+\global\evenheadline={\hfil} \global\evenfootline={\hfil}
+\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
+\HEADINGSoff
+% When we turn headings on, set the page number to 1.
+% For double-sided printing, put current file name in lower left corner,
+% chapter name on inside top of right hand pages, document
+% title on inside top of left hand pages, and page numbers on outside top
+% edge of all pages.
+\def\HEADINGSdouble{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+\let\contentsalignmacro = \chappager
+
+% For single-sided printing, chapter title goes across top left of page,
+% page number on top right.
+\def\HEADINGSsingle{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+\def\HEADINGSon{\HEADINGSdouble}
+
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
+\let\HEADINGSdoubleafter=\HEADINGSafter
+\def\HEADINGSdoublex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
+\def\HEADINGSsinglex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+
+% Subroutines used in generating headings
+% This produces Day Month Year style of output.
+% Only define if not already defined, in case a txi-??.tex file has set
+% up a different format (e.g., txi-cs.tex does this).
+\ifx\today\undefined
+\def\today{%
+ \number\day\space
+ \ifcase\month
+ \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+ \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
+ \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+ \fi
+ \space\number\year}
+\fi
+
+% @settitle line... specifies the title of the document, for headings.
+% It generates no output of its own.
+\def\thistitle{\putwordNoTitle}
+\def\settitle{\parsearg{\gdef\thistitle}}
+
+
+\message{tables,}
+% Tables -- @table, @ftable, @vtable, @item(x).
+
+% default indentation of table text
+\newdimen\tableindent \tableindent=.8in
+% default indentation of @itemize and @enumerate text
+\newdimen\itemindent \itemindent=.3in
+% margin between end of table item and start of table text.
+\newdimen\itemmargin \itemmargin=.1in
+
+% used internally for \itemindent minus \itemmargin
+\newdimen\itemmax
+
+% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
+% these defs.
+% They also define \itemindex
+% to index the item name in whatever manner is desired (perhaps none).
+
+\newif\ifitemxneedsnegativevskip
+
+\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
+
+\def\internalBitem{\smallbreak \parsearg\itemzzz}
+\def\internalBitemx{\itemxpar \parsearg\itemzzz}
+
+\def\itemzzz #1{\begingroup %
+ \advance\hsize by -\rightskip
+ \advance\hsize by -\tableindent
+ \setbox0=\hbox{\itemindicate{#1}}%
+ \itemindex{#1}%
+ \nobreak % This prevents a break before @itemx.
+ %
+ % If the item text does not fit in the space we have, put it on a line
+ % by itself, and do not allow a page break either before or after that
+ % line. We do not start a paragraph here because then if the next
+ % command is, e.g., @kindex, the whatsit would get put into the
+ % horizontal list on a line by itself, resulting in extra blank space.
+ \ifdim \wd0>\itemmax
+ %
+ % Make this a paragraph so we get the \parskip glue and wrapping,
+ % but leave it ragged-right.
+ \begingroup
+ \advance\leftskip by-\tableindent
+ \advance\hsize by\tableindent
+ \advance\rightskip by0pt plus1fil
+ \leavevmode\unhbox0\par
+ \endgroup
+ %
+ % We're going to be starting a paragraph, but we don't want the
+ % \parskip glue -- logically it's part of the @item we just started.
+ \nobreak \vskip-\parskip
+ %
+ % Stop a page break at the \parskip glue coming up. However, if
+ % what follows is an environment such as @example, there will be no
+ % \parskip glue; then the negative vskip we just inserted would
+ % cause the example and the item to crash together. So we use this
+ % bizarre value of 10001 as a signal to \aboveenvbreak to insert
+ % \parskip glue after all. Section titles are handled this way also.
+ %
+ \penalty 10001
+ \endgroup
+ \itemxneedsnegativevskipfalse
+ \else
+ % The item text fits into the space. Start a paragraph, so that the
+ % following text (if any) will end up on the same line.
+ \noindent
+ % Do this with kerns and \unhbox so that if there is a footnote in
+ % the item text, it can migrate to the main vertical list and
+ % eventually be printed.
+ \nobreak\kern-\tableindent
+ \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
+ \unhbox0
+ \nobreak\kern\dimen0
+ \endgroup
+ \itemxneedsnegativevskiptrue
+ \fi
+}
+
+\def\item{\errmessage{@item while not in a list environment}}
+\def\itemx{\errmessage{@itemx while not in a list environment}}
+
+% @table, @ftable, @vtable.
+\envdef\table{%
+ \let\itemindex\gobble
+ \tablecheck{table}%
+}
+\envdef\ftable{%
+ \def\itemindex ##1{\doind {fn}{\code{##1}}}%
+ \tablecheck{ftable}%
+}
+\envdef\vtable{%
+ \def\itemindex ##1{\doind {vr}{\code{##1}}}%
+ \tablecheck{vtable}%
+}
+\def\tablecheck#1{%
+ \ifnum \the\catcode`\^^M=\active
+ \endgroup
+ \errmessage{This command won't work in this context; perhaps the problem is
+ that we are \inenvironment\thisenv}%
+ \def\next{\doignore{#1}}%
+ \else
+ \let\next\tablex
+ \fi
+ \next
+}
+\def\tablex#1{%
+ \def\itemindicate{#1}%
+ \parsearg\tabley
+}
+\def\tabley#1{%
+ {%
+ \makevalueexpandable
+ \edef\temp{\noexpand\tablez #1\space\space\space}%
+ \expandafter
+ }\temp \endtablez
+}
+\def\tablez #1 #2 #3 #4\endtablez{%
+ \aboveenvbreak
+ \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
+ \ifnum 0#2>0 \tableindent=#2\mil \fi
+ \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
+ \itemmax=\tableindent
+ \advance \itemmax by -\itemmargin
+ \advance \leftskip by \tableindent
+ \exdentamount=\tableindent
+ \parindent = 0pt
+ \parskip = \smallskipamount
+ \ifdim \parskip=0pt \parskip=2pt \fi
+ \let\item = \internalBitem
+ \let\itemx = \internalBitemx
+}
+\def\Etable{\endgraf\afterenvbreak}
+\let\Eftable\Etable
+\let\Evtable\Etable
+\let\Eitemize\Etable
+\let\Eenumerate\Etable
+
+% This is the counter used by @enumerate, which is really @itemize
+
+\newcount \itemno
+
+\envdef\itemize{\parsearg\doitemize}
+
+\def\doitemize#1{%
+ \aboveenvbreak
+ \itemmax=\itemindent
+ \advance\itemmax by -\itemmargin
+ \advance\leftskip by \itemindent
+ \exdentamount=\itemindent
+ \parindent=0pt
+ \parskip=\smallskipamount
+ \ifdim\parskip=0pt \parskip=2pt \fi
+ \def\itemcontents{#1}%
+ % @itemize with no arg is equivalent to @itemize @bullet.
+ \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
+ \let\item=\itemizeitem
+}
+
+% Definition of @item while inside @itemize and @enumerate.
+%
+\def\itemizeitem{%
+ \advance\itemno by 1 % for enumerations
+ {\let\par=\endgraf \smallbreak}% reasonable place to break
+ {%
+ % If the document has an @itemize directly after a section title, a
+ % \nobreak will be last on the list, and \sectionheading will have
+ % done a \vskip-\parskip. In that case, we don't want to zero
+ % parskip, or the item text will crash with the heading. On the
+ % other hand, when there is normal text preceding the item (as there
+ % usually is), we do want to zero parskip, or there would be too much
+ % space. In that case, we won't have a \nobreak before. At least
+ % that's the theory.
+ \ifnum\lastpenalty<10000 \parskip=0in \fi
+ \noindent
+ \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
+ \vadjust{\penalty 1200}}% not good to break after first line of item.
+ \flushcr
+}
+
+% \splitoff TOKENS\endmark defines \first to be the first token in
+% TOKENS, and \rest to be the remainder.
+%
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
+
+% Allow an optional argument of an uppercase letter, lowercase letter,
+% or number, to specify the first label in the enumerated list. No
+% argument is the same as `1'.
+%
+\envparseargdef\enumerate{\enumeratey #1 \endenumeratey}
+\def\enumeratey #1 #2\endenumeratey{%
+ % If we were given no argument, pretend we were given `1'.
+ \def\thearg{#1}%
+ \ifx\thearg\empty \def\thearg{1}\fi
+ %
+ % Detect if the argument is a single token. If so, it might be a
+ % letter. Otherwise, the only valid thing it can be is a number.
+ % (We will always have one token, because of the test we just made.
+ % This is a good thing, since \splitoff doesn't work given nothing at
+ % all -- the first parameter is undelimited.)
+ \expandafter\splitoff\thearg\endmark
+ \ifx\rest\empty
+ % Only one token in the argument. It could still be anything.
+ % A ``lowercase letter'' is one whose \lccode is nonzero.
+ % An ``uppercase letter'' is one whose \lccode is both nonzero, and
+ % not equal to itself.
+ % Otherwise, we assume it's a number.
+ %
+ % We need the \relax at the end of the \ifnum lines to stop TeX from
+ % continuing to look for a <number>.
+ %
+ \ifnum\lccode\expandafter`\thearg=0\relax
+ \numericenumerate % a number (we hope)
+ \else
+ % It's a letter.
+ \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
+ \lowercaseenumerate % lowercase letter
+ \else
+ \uppercaseenumerate % uppercase letter
+ \fi
+ \fi
+ \else
+ % Multiple tokens in the argument. We hope it's a number.
+ \numericenumerate
+ \fi
+}
+
+% An @enumerate whose labels are integers. The starting integer is
+% given in \thearg.
+%
+\def\numericenumerate{%
+ \itemno = \thearg
+ \startenumeration{\the\itemno}%
+}
+
+% The starting (lowercase) letter is in \thearg.
+\def\lowercaseenumerate{%
+ \itemno = \expandafter`\thearg
+ \startenumeration{%
+ % Be sure we're not beyond the end of the alphabet.
+ \ifnum\itemno=0
+ \errmessage{No more lowercase letters in @enumerate; get a bigger
+ alphabet}%
+ \fi
+ \char\lccode\itemno
+ }%
+}
+
+% The starting (uppercase) letter is in \thearg.
+\def\uppercaseenumerate{%
+ \itemno = \expandafter`\thearg
+ \startenumeration{%
+ % Be sure we're not beyond the end of the alphabet.
+ \ifnum\itemno=0
+ \errmessage{No more uppercase letters in @enumerate; get a bigger
+ alphabet}
+ \fi
+ \char\uccode\itemno
+ }%
+}
+
+% Call \doitemize, adding a period to the first argument and supplying the
+% common last two arguments. Also subtract one from the initial value in
+% \itemno, since @item increments \itemno.
+%
+\def\startenumeration#1{%
+ \advance\itemno by -1
+ \doitemize{#1.}\flushcr
+}
+
+% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
+% to @enumerate.
+%
+\def\alphaenumerate{\enumerate{a}}
+\def\capsenumerate{\enumerate{A}}
+\def\Ealphaenumerate{\Eenumerate}
+\def\Ecapsenumerate{\Eenumerate}
+
+
+% @multitable macros
+% Amy Hendrickson, 8/18/94, 3/6/96
+%
+% @multitable ... @end multitable will make as many columns as desired.
+% Contents of each column will wrap at width given in preamble. Width
+% can be specified either with sample text given in a template line,
+% or in percent of \hsize, the current width of text on page.
+
+% Table can continue over pages but will only break between lines.
+
+% To make preamble:
+%
+% Either define widths of columns in terms of percent of \hsize:
+% @multitable @columnfractions .25 .3 .45
+% @item ...
+%
+% Numbers following @columnfractions are the percent of the total
+% current hsize to be used for each column. You may use as many
+% columns as desired.
+
+
+% Or use a template:
+% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+% @item ...
+% using the widest term desired in each column.
+
+% Each new table line starts with @item, each subsequent new column
+% starts with @tab. Empty columns may be produced by supplying @tab's
+% with nothing between them for as many times as empty columns are needed,
+% ie, @tab@tab@tab will produce two empty columns.
+
+% @item, @tab do not need to be on their own lines, but it will not hurt
+% if they are.
+
+% Sample multitable:
+
+% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+% @item first col stuff @tab second col stuff @tab third col
+% @item
+% first col stuff
+% @tab
+% second col stuff
+% @tab
+% third col
+% @item first col stuff @tab second col stuff
+% @tab Many paragraphs of text may be used in any column.
+%
+% They will wrap at the width determined by the template.
+% @item@tab@tab This will be in third column.
+% @end multitable
+
+% Default dimensions may be reset by user.
+% @multitableparskip is vertical space between paragraphs in table.
+% @multitableparindent is paragraph indent in table.
+% @multitablecolmargin is horizontal space to be left between columns.
+% @multitablelinespace is space to leave between table items, baseline
+% to baseline.
+% 0pt means it depends on current normal line spacing.
+%
+\newskip\multitableparskip
+\newskip\multitableparindent
+\newdimen\multitablecolspace
+\newskip\multitablelinespace
+\multitableparskip=0pt
+\multitableparindent=6pt
+\multitablecolspace=12pt
+\multitablelinespace=0pt
+
+% Macros used to set up halign preamble:
+%
+\let\endsetuptable\relax
+\def\xendsetuptable{\endsetuptable}
+\let\columnfractions\relax
+\def\xcolumnfractions{\columnfractions}
+\newif\ifsetpercent
+
+% #1 is the @columnfraction, usually a decimal number like .5, but might
+% be just 1. We just use it, whatever it is.
+%
+\def\pickupwholefraction#1 {%
+ \global\advance\colcount by 1
+ \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}%
+ \setuptable
+}
+
+\newcount\colcount
+\def\setuptable#1{%
+ \def\firstarg{#1}%
+ \ifx\firstarg\xendsetuptable
+ \let\go = \relax
+ \else
+ \ifx\firstarg\xcolumnfractions
+ \global\setpercenttrue
+ \else
+ \ifsetpercent
+ \let\go\pickupwholefraction
+ \else
+ \global\advance\colcount by 1
+ \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a
+ % separator; typically that is always in the input, anyway.
+ \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
+ \fi
+ \fi
+ \ifx\go\pickupwholefraction
+ % Put the argument back for the \pickupwholefraction call, so
+ % we'll always have a period there to be parsed.
+ \def\go{\pickupwholefraction#1}%
+ \else
+ \let\go = \setuptable
+ \fi%
+ \fi
+ \go
+}
+
+% multitable-only commands.
+%
+% @headitem starts a heading row, which we typeset in bold.
+% Assignments have to be global since we are inside the implicit group
+% of an alignment entry. Note that \everycr resets \everytab.
+\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}%
+%
+% A \tab used to include \hskip1sp. But then the space in a template
+% line is not enough. That is bad. So let's go back to just `&' until
+% we encounter the problem it was intended to solve again.
+% --karl, nathan@acm.org, 20apr99.
+\def\tab{\checkenv\multitable &\the\everytab}%
+
+% @multitable ... @end multitable definitions:
+%
+\newtoks\everytab % insert after every tab.
+%
+\envdef\multitable{%
+ \vskip\parskip
+ \startsavinginserts
+ %
+ % @item within a multitable starts a normal row.
+ % We use \def instead of \let so that if one of the multitable entries
+ % contains an @itemize, we don't choke on the \item (seen as \crcr aka
+ % \endtemplate) expanding \doitemize.
+ \def\item{\crcr}%
+ %
+ \tolerance=9500
+ \hbadness=9500
+ \setmultitablespacing
+ \parskip=\multitableparskip
+ \parindent=\multitableparindent
+ \overfullrule=0pt
+ \global\colcount=0
+ %
+ \everycr = {%
+ \noalign{%
+ \global\everytab={}%
+ \global\colcount=0 % Reset the column counter.
+ % Check for saved footnotes, etc.
+ \checkinserts
+ % Keeps underfull box messages off when table breaks over pages.
+ %\filbreak
+ % Maybe so, but it also creates really weird page breaks when the
+ % table breaks over pages. Wouldn't \vfil be better? Wait until the
+ % problem manifests itself, so it can be fixed for real --karl.
+ }%
+ }%
+ %
+ \parsearg\domultitable
+}
+\def\domultitable#1{%
+ % To parse everything between @multitable and @item:
+ \setuptable#1 \endsetuptable
+ %
+ % This preamble sets up a generic column definition, which will
+ % be used as many times as user calls for columns.
+ % \vtop will set a single line and will also let text wrap and
+ % continue for many paragraphs if desired.
+ \halign\bgroup &%
+ \global\advance\colcount by 1
+ \multistrut
+ \vtop{%
+ % Use the current \colcount to find the correct column width:
+ \hsize=\expandafter\csname col\the\colcount\endcsname
+ %
+ % In order to keep entries from bumping into each other
+ % we will add a \leftskip of \multitablecolspace to all columns after
+ % the first one.
+ %
+ % If a template has been used, we will add \multitablecolspace
+ % to the width of each template entry.
+ %
+ % If the user has set preamble in terms of percent of \hsize we will
+ % use that dimension as the width of the column, and the \leftskip
+ % will keep entries from bumping into each other. Table will start at
+ % left margin and final column will justify at right margin.
+ %
+ % Make sure we don't inherit \rightskip from the outer environment.
+ \rightskip=0pt
+ \ifnum\colcount=1
+ % The first column will be indented with the surrounding text.
+ \advance\hsize by\leftskip
+ \else
+ \ifsetpercent \else
+ % If user has not set preamble in terms of percent of \hsize
+ % we will advance \hsize by \multitablecolspace.
+ \advance\hsize by \multitablecolspace
+ \fi
+ % In either case we will make \leftskip=\multitablecolspace:
+ \leftskip=\multitablecolspace
+ \fi
+ % Ignoring space at the beginning and end avoids an occasional spurious
+ % blank line, when TeX decides to break the line at the space before the
+ % box from the multistrut, so the strut ends up on a line by itself.
+ % For example:
+ % @multitable @columnfractions .11 .89
+ % @item @code{#}
+ % @tab Legal holiday which is valid in major parts of the whole country.
+ % Is automatically provided with highlighting sequences respectively
+ % marking characters.
+ \noindent\ignorespaces##\unskip\multistrut
+ }\cr
+}
+\def\Emultitable{%
+ \crcr
+ \egroup % end the \halign
+ \global\setpercentfalse
+}
+
+\def\setmultitablespacing{%
+ \def\multistrut{\strut}% just use the standard line spacing
+ %
+ % Compute \multitablelinespace (if not defined by user) for use in
+ % \multitableparskip calculation. We used define \multistrut based on
+ % this, but (ironically) that caused the spacing to be off.
+ % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
+\ifdim\multitablelinespace=0pt
+\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
+\global\advance\multitablelinespace by-\ht0
+\fi
+%% Test to see if parskip is larger than space between lines of
+%% table. If not, do nothing.
+%% If so, set to same dimension as multitablelinespace.
+\ifdim\multitableparskip>\multitablelinespace
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
+ %% than skip between lines in the table.
+\fi%
+\ifdim\multitableparskip=0pt
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
+ %% than skip between lines in the table.
+\fi}
+
+
+\message{conditionals,}
+
+% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
+% @ifnotxml always succeed. They currently do nothing; we don't
+% attempt to check whether the conditionals are properly nested. But we
+% have to remember that they are conditionals, so that @end doesn't
+% attempt to close an environment group.
+%
+\def\makecond#1{%
+ \expandafter\let\csname #1\endcsname = \relax
+ \expandafter\let\csname iscond.#1\endcsname = 1
+}
+\makecond{iftex}
+\makecond{ifnotdocbook}
+\makecond{ifnothtml}
+\makecond{ifnotinfo}
+\makecond{ifnotplaintext}
+\makecond{ifnotxml}
+
+% Ignore @ignore, @ifhtml, @ifinfo, and the like.
+%
+\def\direntry{\doignore{direntry}}
+\def\documentdescription{\doignore{documentdescription}}
+\def\docbook{\doignore{docbook}}
+\def\html{\doignore{html}}
+\def\ifdocbook{\doignore{ifdocbook}}
+\def\ifhtml{\doignore{ifhtml}}
+\def\ifinfo{\doignore{ifinfo}}
+\def\ifnottex{\doignore{ifnottex}}
+\def\ifplaintext{\doignore{ifplaintext}}
+\def\ifxml{\doignore{ifxml}}
+\def\ignore{\doignore{ignore}}
+\def\menu{\doignore{menu}}
+\def\xml{\doignore{xml}}
+
+% Ignore text until a line `@end #1', keeping track of nested conditionals.
+%
+% A count to remember the depth of nesting.
+\newcount\doignorecount
+
+\def\doignore#1{\begingroup
+ % Scan in ``verbatim'' mode:
+ \obeylines
+ \catcode`\@ = \other
+ \catcode`\{ = \other
+ \catcode`\} = \other
+ %
+ % Make sure that spaces turn into tokens that match what \doignoretext wants.
+ \spaceisspace
+ %
+ % Count number of #1's that we've seen.
+ \doignorecount = 0
+ %
+ % Swallow text until we reach the matching `@end #1'.
+ \dodoignore{#1}%
+}
+
+{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
+ \obeylines %
+ %
+ \gdef\dodoignore#1{%
+ % #1 contains the command name as a string, e.g., `ifinfo'.
+ %
+ % Define a command to find the next `@end #1'.
+ \long\def\doignoretext##1^^M@end #1{%
+ \doignoretextyyy##1^^M@#1\_STOP_}%
+ %
+ % And this command to find another #1 command, at the beginning of a
+ % line. (Otherwise, we would consider a line `@c @ifset', for
+ % example, to count as an @ifset for nesting.)
+ \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
+ %
+ % And now expand that command.
+ \doignoretext ^^M%
+ }%
+}
+
+\def\doignoreyyy#1{%
+ \def\temp{#1}%
+ \ifx\temp\empty % Nothing found.
+ \let\next\doignoretextzzz
+ \else % Found a nested condition, ...
+ \advance\doignorecount by 1
+ \let\next\doignoretextyyy % ..., look for another.
+ % If we're here, #1 ends with ^^M\ifinfo (for example).
+ \fi
+ \next #1% the token \_STOP_ is present just after this macro.
+}
+
+% We have to swallow the remaining "\_STOP_".
+%
+\def\doignoretextzzz#1{%
+ \ifnum\doignorecount = 0 % We have just found the outermost @end.
+ \let\next\enddoignore
+ \else % Still inside a nested condition.
+ \advance\doignorecount by -1
+ \let\next\doignoretext % Look for the next @end.
+ \fi
+ \next
+}
+
+% Finish off ignored text.
+{ \obeylines%
+ % Ignore anything after the last `@end #1'; this matters in verbatim
+ % environments, where otherwise the newline after an ignored conditional
+ % would result in a blank line in the output.
+ \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
+}
+
+
+% @set VAR sets the variable VAR to an empty value.
+% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
+%
+% Since we want to separate VAR from REST-OF-LINE (which might be
+% empty), we can't just use \parsearg; we have to insert a space of our
+% own to delimit the rest of the line, and then take it out again if we
+% didn't need it.
+% We rely on the fact that \parsearg sets \catcode`\ =10.
+%
+\parseargdef\set{\setyyy#1 \endsetyyy}
+\def\setyyy#1 #2\endsetyyy{%
+ {%
+ \makevalueexpandable
+ \def\temp{#2}%
+ \edef\next{\gdef\makecsname{SET#1}}%
+ \ifx\temp\empty
+ \next{}%
+ \else
+ \setzzz#2\endsetzzz
+ \fi
+ }%
+}
+% Remove the trailing space \setxxx inserted.
+\def\setzzz#1 \endsetzzz{\next{#1}}
+
+% @clear VAR clears (i.e., unsets) the variable VAR.
+%
+\parseargdef\clear{%
+ {%
+ \makevalueexpandable
+ \global\expandafter\let\csname SET#1\endcsname=\relax
+ }%
+}
+
+% @value{foo} gets the text saved in variable foo.
+\def\value{\begingroup\makevalueexpandable\valuexxx}
+\def\valuexxx#1{\expandablevalue{#1}\endgroup}
+{
+ \catcode`\- = \active \catcode`\_ = \active
+ %
+ \gdef\makevalueexpandable{%
+ \let\value = \expandablevalue
+ % We don't want these characters active, ...
+ \catcode`\-=\other \catcode`\_=\other
+ % ..., but we might end up with active ones in the argument if
+ % we're called from @code, as @code{@value{foo-bar_}}, though.
+ % So \let them to their normal equivalents.
+ \let-\realdash \let_\normalunderscore
+ }
+}
+
+% We have this subroutine so that we can handle at least some @value's
+% properly in indexes (we call \makevalueexpandable in \indexdummies).
+% The command has to be fully expandable (if the variable is set), since
+% the result winds up in the index file. This means that if the
+% variable's value contains other Texinfo commands, it's almost certain
+% it will fail (although perhaps we could fix that with sufficient work
+% to do a one-level expansion on the result, instead of complete).
+%
+\def\expandablevalue#1{%
+ \expandafter\ifx\csname SET#1\endcsname\relax
+ {[No value for ``#1'']}%
+ \message{Variable `#1', used in @value, is not set.}%
+ \else
+ \csname SET#1\endcsname
+ \fi
+}
+
+% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
+% with @set.
+%
+% To get special treatment of `@end ifset,' call \makeond and the redefine.
+%
+\makecond{ifset}
+\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
+\def\doifset#1#2{%
+ {%
+ \makevalueexpandable
+ \let\next=\empty
+ \expandafter\ifx\csname SET#2\endcsname\relax
+ #1% If not set, redefine \next.
+ \fi
+ \expandafter
+ }\next
+}
+\def\ifsetfail{\doignore{ifset}}
+
+% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
+% defined with @set, or has been undefined with @clear.
+%
+% The `\else' inside the `\doifset' parameter is a trick to reuse the
+% above code: if the variable is not set, do nothing, if it is set,
+% then redefine \next to \ifclearfail.
+%
+\makecond{ifclear}
+\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
+\def\ifclearfail{\doignore{ifclear}}
+
+% @dircategory CATEGORY -- specify a category of the dir file
+% which this file should belong to. Ignore this in TeX.
+\let\dircategory=\comment
+
+% @defininfoenclose.
+\let\definfoenclose=\comment
+
+
+\message{indexing,}
+% Index generation facilities
+
+% Define \newwrite to be identical to plain tex's \newwrite
+% except not \outer, so it can be used within macros and \if's.
+\edef\newwrite{\makecsname{ptexnewwrite}}
+
+% \newindex {foo} defines an index named foo.
+% It automatically defines \fooindex such that
+% \fooindex ...rest of line... puts an entry in the index foo.
+% It also defines \fooindfile to be the number of the output channel for
+% the file that accumulates this index. The file's extension is foo.
+% The name of an index should be no more than 2 characters long
+% for the sake of vms.
+%
+\def\newindex#1{%
+ \iflinks
+ \expandafter\newwrite \csname#1indfile\endcsname
+ \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
+ \fi
+ \expandafter\xdef\csname#1index\endcsname{% % Define @#1index
+ \noexpand\doindex{#1}}
+}
+
+% @defindex foo == \newindex{foo}
+%
+\def\defindex{\parsearg\newindex}
+
+% Define @defcodeindex, like @defindex except put all entries in @code.
+%
+\def\defcodeindex{\parsearg\newcodeindex}
+%
+\def\newcodeindex#1{%
+ \iflinks
+ \expandafter\newwrite \csname#1indfile\endcsname
+ \openout \csname#1indfile\endcsname \jobname.#1
+ \fi
+ \expandafter\xdef\csname#1index\endcsname{%
+ \noexpand\docodeindex{#1}}%
+}
+
+
+% @synindex foo bar makes index foo feed into index bar.
+% Do this instead of @defindex foo if you don't want it as a separate index.
+%
+% @syncodeindex foo bar similar, but put all entries made for index foo
+% inside @code.
+%
+\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
+\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
+
+% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
+% #3 the target index (bar).
+\def\dosynindex#1#2#3{%
+ % Only do \closeout if we haven't already done it, else we'll end up
+ % closing the target index.
+ \expandafter \ifx\csname donesynindex#2\endcsname \undefined
+ % The \closeout helps reduce unnecessary open files; the limit on the
+ % Acorn RISC OS is a mere 16 files.
+ \expandafter\closeout\csname#2indfile\endcsname
+ \expandafter\let\csname\donesynindex#2\endcsname = 1
+ \fi
+ % redefine \fooindfile:
+ \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
+ \expandafter\let\csname#2indfile\endcsname=\temp
+ % redefine \fooindex:
+ \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
+}
+
+% Define \doindex, the driver for all \fooindex macros.
+% Argument #1 is generated by the calling \fooindex macro,
+% and it is "foo", the name of the index.
+
+% \doindex just uses \parsearg; it calls \doind for the actual work.
+% This is because \doind is more useful to call from other macros.
+
+% There is also \dosubind {index}{topic}{subtopic}
+% which makes an entry in a two-level index such as the operation index.
+
+\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
+\def\singleindexer #1{\doind{\indexname}{#1}}
+
+% like the previous two, but they put @code around the argument.
+\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
+\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
+
+% Take care of Texinfo commands that can appear in an index entry.
+% Since there are some commands we want to expand, and others we don't,
+% we have to laboriously prevent expansion for those that we don't.
+%
+\def\indexdummies{%
+ \escapechar = `\\ % use backslash in output files.
+ \def\@{@}% change to @@ when we switch to @ as escape char in index files.
+ \def\ {\realbackslash\space }%
+ %
+ % Need these in case \tex is in effect and \{ is a \delimiter again.
+ % But can't use \lbracecmd and \rbracecmd because texindex assumes
+ % braces and backslashes are used only as delimiters.
+ \let\{ = \mylbrace
+ \let\} = \myrbrace
+ %
+ % I don't entirely understand this, but when an index entry is
+ % generated from a macro call, the \endinput which \scanmacro inserts
+ % causes processing to be prematurely terminated. This is,
+ % apparently, because \indexsorttmp is fully expanded, and \endinput
+ % is an expandable command. The redefinition below makes \endinput
+ % disappear altogether for that purpose -- although logging shows that
+ % processing continues to some further point. On the other hand, it
+ % seems \endinput does not hurt in the printed index arg, since that
+ % is still getting written without apparent harm.
+ %
+ % Sample source (mac-idx3.tex, reported by Graham Percival to
+ % help-texinfo, 22may06):
+ % @macro funindex {WORD}
+ % @findex xyz
+ % @end macro
+ % ...
+ % @funindex commtest
+ %
+ % The above is not enough to reproduce the bug, but it gives the flavor.
+ %
+ % Sample whatsit resulting:
+ % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
+ %
+ % So:
+ \let\endinput = \empty
+ %
+ % Do the redefinitions.
+ \commondummies
+}
+
+% For the aux and toc files, @ is the escape character. So we want to
+% redefine everything using @ as the escape character (instead of
+% \realbackslash, still used for index files). When everything uses @,
+% this will be simpler.
+%
+\def\atdummies{%
+ \def\@{@@}%
+ \def\ {@ }%
+ \let\{ = \lbraceatcmd
+ \let\} = \rbraceatcmd
+ %
+ % Do the redefinitions.
+ \commondummies
+ \otherbackslash
+}
+
+% Called from \indexdummies and \atdummies.
+%
+\def\commondummies{%
+ %
+ % \definedummyword defines \#1 as \string\#1\space, thus effectively
+ % preventing its expansion. This is used only for control% words,
+ % not control letters, because the \space would be incorrect for
+ % control characters, but is needed to separate the control word
+ % from whatever follows.
+ %
+ % For control letters, we have \definedummyletter, which omits the
+ % space.
+ %
+ % These can be used both for control words that take an argument and
+ % those that do not. If it is followed by {arg} in the input, then
+ % that will dutifully get written to the index (or wherever).
+ %
+ \def\definedummyword ##1{\def##1{\string##1\space}}%
+ \def\definedummyletter##1{\def##1{\string##1}}%
+ \let\definedummyaccent\definedummyletter
+ %
+ \commondummiesnofonts
+ %
+ \definedummyletter\_%
+ %
+ % Non-English letters.
+ \definedummyword\AA
+ \definedummyword\AE
+ \definedummyword\L
+ \definedummyword\OE
+ \definedummyword\O
+ \definedummyword\aa
+ \definedummyword\ae
+ \definedummyword\l
+ \definedummyword\oe
+ \definedummyword\o
+ \definedummyword\ss
+ \definedummyword\exclamdown
+ \definedummyword\questiondown
+ \definedummyword\ordf
+ \definedummyword\ordm
+ %
+ % Although these internal commands shouldn't show up, sometimes they do.
+ \definedummyword\bf
+ \definedummyword\gtr
+ \definedummyword\hat
+ \definedummyword\less
+ \definedummyword\sf
+ \definedummyword\sl
+ \definedummyword\tclose
+ \definedummyword\tt
+ %
+ \definedummyword\LaTeX
+ \definedummyword\TeX
+ %
+ % Assorted special characters.
+ \definedummyword\bullet
+ \definedummyword\comma
+ \definedummyword\copyright
+ \definedummyword\registeredsymbol
+ \definedummyword\dots
+ \definedummyword\enddots
+ \definedummyword\equiv
+ \definedummyword\error
+ \definedummyword\euro
+ \definedummyword\guillemetleft
+ \definedummyword\guillemetright
+ \definedummyword\guilsinglleft
+ \definedummyword\guilsinglright
+ \definedummyword\expansion
+ \definedummyword\minus
+ \definedummyword\pounds
+ \definedummyword\point
+ \definedummyword\print
+ \definedummyword\quotedblbase
+ \definedummyword\quotedblleft
+ \definedummyword\quotedblright
+ \definedummyword\quoteleft
+ \definedummyword\quoteright
+ \definedummyword\quotesinglbase
+ \definedummyword\result
+ \definedummyword\textdegree
+ %
+ % We want to disable all macros so that they are not expanded by \write.
+ \macrolist
+ %
+ \normalturnoffactive
+ %
+ % Handle some cases of @value -- where it does not contain any
+ % (non-fully-expandable) commands.
+ \makevalueexpandable
+}
+
+% \commondummiesnofonts: common to \commondummies and \indexnofonts.
+%
+\def\commondummiesnofonts{%
+ % Control letters and accents.
+ \definedummyletter\!%
+ \definedummyaccent\"%
+ \definedummyaccent\'%
+ \definedummyletter\*%
+ \definedummyaccent\,%
+ \definedummyletter\.%
+ \definedummyletter\/%
+ \definedummyletter\:%
+ \definedummyaccent\=%
+ \definedummyletter\?%
+ \definedummyaccent\^%
+ \definedummyaccent\`%
+ \definedummyaccent\~%
+ \definedummyword\u
+ \definedummyword\v
+ \definedummyword\H
+ \definedummyword\dotaccent
+ \definedummyword\ringaccent
+ \definedummyword\tieaccent
+ \definedummyword\ubaraccent
+ \definedummyword\udotaccent
+ \definedummyword\dotless
+ %
+ % Texinfo font commands.
+ \definedummyword\b
+ \definedummyword\i
+ \definedummyword\r
+ \definedummyword\sc
+ \definedummyword\t
+ %
+ % Commands that take arguments.
+ \definedummyword\acronym
+ \definedummyword\cite
+ \definedummyword\code
+ \definedummyword\command
+ \definedummyword\dfn
+ \definedummyword\emph
+ \definedummyword\env
+ \definedummyword\file
+ \definedummyword\kbd
+ \definedummyword\key
+ \definedummyword\math
+ \definedummyword\option
+ \definedummyword\pxref
+ \definedummyword\ref
+ \definedummyword\samp
+ \definedummyword\strong
+ \definedummyword\tie
+ \definedummyword\uref
+ \definedummyword\url
+ \definedummyword\var
+ \definedummyword\verb
+ \definedummyword\w
+ \definedummyword\xref
+}
+
+% \indexnofonts is used when outputting the strings to sort the index
+% by, and when constructing control sequence names. It eliminates all
+% control sequences and just writes whatever the best ASCII sort string
+% would be for a given command (usually its argument).
+%
+\def\indexnofonts{%
+ % Accent commands should become @asis.
+ \def\definedummyaccent##1{\let##1\asis}%
+ % We can just ignore other control letters.
+ \def\definedummyletter##1{\let##1\empty}%
+ % Hopefully, all control words can become @asis.
+ \let\definedummyword\definedummyaccent
+ %
+ \commondummiesnofonts
+ %
+ % Don't no-op \tt, since it isn't a user-level command
+ % and is used in the definitions of the active chars like <, >, |, etc.
+ % Likewise with the other plain tex font commands.
+ %\let\tt=\asis
+ %
+ \def\ { }%
+ \def\@{@}%
+ % how to handle braces?
+ \def\_{\normalunderscore}%
+ %
+ % Non-English letters.
+ \def\AA{AA}%
+ \def\AE{AE}%
+ \def\L{L}%
+ \def\OE{OE}%
+ \def\O{O}%
+ \def\aa{aa}%
+ \def\ae{ae}%
+ \def\l{l}%
+ \def\oe{oe}%
+ \def\o{o}%
+ \def\ss{ss}%
+ \def\exclamdown{!}%
+ \def\questiondown{?}%
+ \def\ordf{a}%
+ \def\ordm{o}%
+ %
+ \def\LaTeX{LaTeX}%
+ \def\TeX{TeX}%
+ %
+ % Assorted special characters.
+ % (The following {} will end up in the sort string, but that's ok.)
+ \def\bullet{bullet}%
+ \def\comma{,}%
+ \def\copyright{copyright}%
+ \def\registeredsymbol{R}%
+ \def\dots{...}%
+ \def\enddots{...}%
+ \def\equiv{==}%
+ \def\error{error}%
+ \def\euro{euro}%
+ \def\guillemetleft{<<}%
+ \def\guillemetright{>>}%
+ \def\guilsinglleft{<}%
+ \def\guilsinglright{>}%
+ \def\expansion{==>}%
+ \def\minus{-}%
+ \def\pounds{pounds}%
+ \def\point{.}%
+ \def\print{-|}%
+ \def\quotedblbase{"}%
+ \def\quotedblleft{"}%
+ \def\quotedblright{"}%
+ \def\quoteleft{`}%
+ \def\quoteright{'}%
+ \def\quotesinglbase{,}%
+ \def\result{=>}%
+ \def\textdegree{degrees}%
+ %
+ % We need to get rid of all macros, leaving only the arguments (if present).
+ % Of course this is not nearly correct, but it is the best we can do for now.
+ % makeinfo does not expand macros in the argument to @deffn, which ends up
+ % writing an index entry, and texindex isn't prepared for an index sort entry
+ % that starts with \.
+ %
+ % Since macro invocations are followed by braces, we can just redefine them
+ % to take a single TeX argument. The case of a macro invocation that
+ % goes to end-of-line is not handled.
+ %
+ \macrolist
+}
+
+\let\indexbackslash=0 %overridden during \printindex.
+\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
+
+% Most index entries go through here, but \dosubind is the general case.
+% #1 is the index name, #2 is the entry text.
+\def\doind#1#2{\dosubind{#1}{#2}{}}
+
+% Workhorse for all \fooindexes.
+% #1 is name of index, #2 is stuff to put there, #3 is subentry --
+% empty if called from \doind, as we usually are (the main exception
+% is with most defuns, which call us directly).
+%
+\def\dosubind#1#2#3{%
+ \iflinks
+ {%
+ % Store the main index entry text (including the third arg).
+ \toks0 = {#2}%
+ % If third arg is present, precede it with a space.
+ \def\thirdarg{#3}%
+ \ifx\thirdarg\empty \else
+ \toks0 = \expandafter{\the\toks0 \space #3}%
+ \fi
+ %
+ \edef\writeto{\csname#1indfile\endcsname}%
+ %
+ \safewhatsit\dosubindwrite
+ }%
+ \fi
+}
+
+% Write the entry in \toks0 to the index file:
+%
+\def\dosubindwrite{%
+ % Put the index entry in the margin if desired.
+ \ifx\SETmarginindex\relax\else
+ \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
+ \fi
+ %
+ % Remember, we are within a group.
+ \indexdummies % Must do this here, since \bf, etc expand at this stage
+ \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
+ % so it will be output as is; and it will print as backslash.
+ %
+ % Process the index entry with all font commands turned off, to
+ % get the string to sort by.
+ {\indexnofonts
+ \edef\temp{\the\toks0}% need full expansion
+ \xdef\indexsorttmp{\temp}%
+ }%
+ %
+ % Set up the complete index entry, with both the sort key and
+ % the original text, including any font commands. We write
+ % three arguments to \entry to the .?? file (four in the
+ % subentry case), texindex reduces to two when writing the .??s
+ % sorted result.
+ \edef\temp{%
+ \write\writeto{%
+ \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
+ }%
+ \temp
+}
+
+% Take care of unwanted page breaks/skips around a whatsit:
+%
+% If a skip is the last thing on the list now, preserve it
+% by backing up by \lastskip, doing the \write, then inserting
+% the skip again. Otherwise, the whatsit generated by the
+% \write or \pdfdest will make \lastskip zero. The result is that
+% sequences like this:
+% @end defun
+% @tindex whatever
+% @defun ...
+% will have extra space inserted, because the \medbreak in the
+% start of the @defun won't see the skip inserted by the @end of
+% the previous defun.
+%
+% But don't do any of this if we're not in vertical mode. We
+% don't want to do a \vskip and prematurely end a paragraph.
+%
+% Avoid page breaks due to these extra skips, too.
+%
+% But wait, there is a catch there:
+% We'll have to check whether \lastskip is zero skip. \ifdim is not
+% sufficient for this purpose, as it ignores stretch and shrink parts
+% of the skip. The only way seems to be to check the textual
+% representation of the skip.
+%
+% The following is almost like \def\zeroskipmacro{0.0pt} except that
+% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
+%
+\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
+%
+\newskip\whatsitskip
+\newcount\whatsitpenalty
+%
+% ..., ready, GO:
+%
+\def\safewhatsit#1{%
+\ifhmode
+ #1%
+\else
+ % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
+ \whatsitskip = \lastskip
+ \edef\lastskipmacro{\the\lastskip}%
+ \whatsitpenalty = \lastpenalty
+ %
+ % If \lastskip is nonzero, that means the last item was a
+ % skip. And since a skip is discardable, that means this
+ % -\whatsitskip glue we're inserting is preceded by a
+ % non-discardable item, therefore it is not a potential
+ % breakpoint, therefore no \nobreak needed.
+ \ifx\lastskipmacro\zeroskipmacro
+ \else
+ \vskip-\whatsitskip
+ \fi
+ %
+ #1%
+ %
+ \ifx\lastskipmacro\zeroskipmacro
+ % If \lastskip was zero, perhaps the last item was a penalty, and
+ % perhaps it was >=10000, e.g., a \nobreak. In that case, we want
+ % to re-insert the same penalty (values >10000 are used for various
+ % signals); since we just inserted a non-discardable item, any
+ % following glue (such as a \parskip) would be a breakpoint. For example:
+ %
+ % @deffn deffn-whatever
+ % @vindex index-whatever
+ % Description.
+ % would allow a break between the index-whatever whatsit
+ % and the "Description." paragraph.
+ \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
+ \else
+ % On the other hand, if we had a nonzero \lastskip,
+ % this make-up glue would be preceded by a non-discardable item
+ % (the whatsit from the \write), so we must insert a \nobreak.
+ \nobreak\vskip\whatsitskip
+ \fi
+\fi
+}
+
+% The index entry written in the file actually looks like
+% \entry {sortstring}{page}{topic}
+% or
+% \entry {sortstring}{page}{topic}{subtopic}
+% The texindex program reads in these files and writes files
+% containing these kinds of lines:
+% \initial {c}
+% before the first topic whose initial is c
+% \entry {topic}{pagelist}
+% for a topic that is used without subtopics
+% \primary {topic}
+% for the beginning of a topic that is used with subtopics
+% \secondary {subtopic}{pagelist}
+% for each subtopic.
+
+% Define the user-accessible indexing commands
+% @findex, @vindex, @kindex, @cindex.
+
+\def\findex {\fnindex}
+\def\kindex {\kyindex}
+\def\cindex {\cpindex}
+\def\vindex {\vrindex}
+\def\tindex {\tpindex}
+\def\pindex {\pgindex}
+
+\def\cindexsub {\begingroup\obeylines\cindexsub}
+{\obeylines %
+\gdef\cindexsub "#1" #2^^M{\endgroup %
+\dosubind{cp}{#2}{#1}}}
+
+% Define the macros used in formatting output of the sorted index material.
+
+% @printindex causes a particular index (the ??s file) to get printed.
+% It does not print any chapter heading (usually an @unnumbered).
+%
+\parseargdef\printindex{\begingroup
+ \dobreak \chapheadingskip{10000}%
+ %
+ \smallfonts \rm
+ \tolerance = 9500
+ \plainfrenchspacing
+ \everypar = {}% don't want the \kern\-parindent from indentation suppression.
+ %
+ % See if the index file exists and is nonempty.
+ % Change catcode of @ here so that if the index file contains
+ % \initial {@}
+ % as its first line, TeX doesn't complain about mismatched braces
+ % (because it thinks @} is a control sequence).
+ \catcode`\@ = 11
+ \openin 1 \jobname.#1s
+ \ifeof 1
+ % \enddoublecolumns gets confused if there is no text in the index,
+ % and it loses the chapter title and the aux file entries for the
+ % index. The easiest way to prevent this problem is to make sure
+ % there is some text.
+ \putwordIndexNonexistent
+ \else
+ %
+ % If the index file exists but is empty, then \openin leaves \ifeof
+ % false. We have to make TeX try to read something from the file, so
+ % it can discover if there is anything in it.
+ \read 1 to \temp
+ \ifeof 1
+ \putwordIndexIsEmpty
+ \else
+ % Index files are almost Texinfo source, but we use \ as the escape
+ % character. It would be better to use @, but that's too big a change
+ % to make right now.
+ \def\indexbackslash{\backslashcurfont}%
+ \catcode`\\ = 0
+ \escapechar = `\\
+ \begindoublecolumns
+ \input \jobname.#1s
+ \enddoublecolumns
+ \fi
+ \fi
+ \closein 1
+\endgroup}
+
+% These macros are used by the sorted index file itself.
+% Change them to control the appearance of the index.
+
+\def\initial#1{{%
+ % Some minor font changes for the special characters.
+ \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
+ %
+ % Remove any glue we may have, we'll be inserting our own.
+ \removelastskip
+ %
+ % We like breaks before the index initials, so insert a bonus.
+ \nobreak
+ \vskip 0pt plus 3\baselineskip
+ \penalty 0
+ \vskip 0pt plus -3\baselineskip
+ %
+ % Typeset the initial. Making this add up to a whole number of
+ % baselineskips increases the chance of the dots lining up from column
+ % to column. It still won't often be perfect, because of the stretch
+ % we need before each entry, but it's better.
+ %
+ % No shrink because it confuses \balancecolumns.
+ \vskip 1.67\baselineskip plus .5\baselineskip
+ \leftline{\secbf #1}%
+ % Do our best not to break after the initial.
+ \nobreak
+ \vskip .33\baselineskip plus .1\baselineskip
+}}
+
+% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
+% then page number (#2) flushed to the right margin. It is used for index
+% and table of contents entries. The paragraph is indented by \leftskip.
+%
+% A straightforward implementation would start like this:
+% \def\entry#1#2{...
+% But this freezes the catcodes in the argument, and can cause problems to
+% @code, which sets - active. This problem was fixed by a kludge---
+% ``-'' was active throughout whole index, but this isn't really right.
+%
+% The right solution is to prevent \entry from swallowing the whole text.
+% --kasal, 21nov03
+\def\entry{%
+ \begingroup
+ %
+ % Start a new paragraph if necessary, so our assignments below can't
+ % affect previous text.
+ \par
+ %
+ % Do not fill out the last line with white space.
+ \parfillskip = 0in
+ %
+ % No extra space above this paragraph.
+ \parskip = 0in
+ %
+ % Do not prefer a separate line ending with a hyphen to fewer lines.
+ \finalhyphendemerits = 0
+ %
+ % \hangindent is only relevant when the entry text and page number
+ % don't both fit on one line. In that case, bob suggests starting the
+ % dots pretty far over on the line. Unfortunately, a large
+ % indentation looks wrong when the entry text itself is broken across
+ % lines. So we use a small indentation and put up with long leaders.
+ %
+ % \hangafter is reset to 1 (which is the value we want) at the start
+ % of each paragraph, so we need not do anything with that.
+ \hangindent = 2em
+ %
+ % When the entry text needs to be broken, just fill out the first line
+ % with blank space.
+ \rightskip = 0pt plus1fil
+ %
+ % A bit of stretch before each entry for the benefit of balancing
+ % columns.
+ \vskip 0pt plus1pt
+ %
+ % Swallow the left brace of the text (first parameter):
+ \afterassignment\doentry
+ \let\temp =
+}
+\def\doentry{%
+ \bgroup % Instead of the swallowed brace.
+ \noindent
+ \aftergroup\finishentry
+ % And now comes the text of the entry.
+}
+\def\finishentry#1{%
+ % #1 is the page number.
+ %
+ % The following is kludged to not output a line of dots in the index if
+ % there are no page numbers. The next person who breaks this will be
+ % cursed by a Unix daemon.
+ \setbox\boxA = \hbox{#1}%
+ \ifdim\wd\boxA = 0pt
+ \ %
+ \else
+ %
+ % If we must, put the page number on a line of its own, and fill out
+ % this line with blank space. (The \hfil is overwhelmed with the
+ % fill leaders glue in \indexdotfill if the page number does fit.)
+ \hfil\penalty50
+ \null\nobreak\indexdotfill % Have leaders before the page number.
+ %
+ % The `\ ' here is removed by the implicit \unskip that TeX does as
+ % part of (the primitive) \par. Without it, a spurious underfull
+ % \hbox ensues.
+ \ifpdf
+ \pdfgettoks#1.%
+ \ \the\toksA
+ \else
+ \ #1%
+ \fi
+ \fi
+ \par
+ \endgroup
+}
+
+% Like plain.tex's \dotfill, except uses up at least 1 em.
+\def\indexdotfill{\cleaders
+ \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
+
+\def\primary #1{\line{#1\hfil}}
+
+\newskip\secondaryindent \secondaryindent=0.5cm
+\def\secondary#1#2{{%
+ \parfillskip=0in
+ \parskip=0in
+ \hangindent=1in
+ \hangafter=1
+ \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
+ \ifpdf
+ \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
+ \else
+ #2
+ \fi
+ \par
+}}
+
+% Define two-column mode, which we use to typeset indexes.
+% Adapted from the TeXbook, page 416, which is to say,
+% the manmac.tex format used to print the TeXbook itself.
+\catcode`\@=11
+
+\newbox\partialpage
+\newdimen\doublecolumnhsize
+
+\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
+ % Grab any single-column material above us.
+ \output = {%
+ %
+ % Here is a possibility not foreseen in manmac: if we accumulate a
+ % whole lot of material, we might end up calling this \output
+ % routine twice in a row (see the doublecol-lose test, which is
+ % essentially a couple of indexes with @setchapternewpage off). In
+ % that case we just ship out what is in \partialpage with the normal
+ % output routine. Generally, \partialpage will be empty when this
+ % runs and this will be a no-op. See the indexspread.tex test case.
+ \ifvoid\partialpage \else
+ \onepageout{\pagecontents\partialpage}%
+ \fi
+ %
+ \global\setbox\partialpage = \vbox{%
+ % Unvbox the main output page.
+ \unvbox\PAGE
+ \kern-\topskip \kern\baselineskip
+ }%
+ }%
+ \eject % run that output routine to set \partialpage
+ %
+ % Use the double-column output routine for subsequent pages.
+ \output = {\doublecolumnout}%
+ %
+ % Change the page size parameters. We could do this once outside this
+ % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
+ % format, but then we repeat the same computation. Repeating a couple
+ % of assignments once per index is clearly meaningless for the
+ % execution time, so we may as well do it in one place.
+ %
+ % First we halve the line length, less a little for the gutter between
+ % the columns. We compute the gutter based on the line length, so it
+ % changes automatically with the paper format. The magic constant
+ % below is chosen so that the gutter has the same value (well, +-<1pt)
+ % as it did when we hard-coded it.
+ %
+ % We put the result in a separate register, \doublecolumhsize, so we
+ % can restore it in \pagesofar, after \hsize itself has (potentially)
+ % been clobbered.
+ %
+ \doublecolumnhsize = \hsize
+ \advance\doublecolumnhsize by -.04154\hsize
+ \divide\doublecolumnhsize by 2
+ \hsize = \doublecolumnhsize
+ %
+ % Double the \vsize as well. (We don't need a separate register here,
+ % since nobody clobbers \vsize.)
+ \vsize = 2\vsize
+}
+
+% The double-column output routine for all double-column pages except
+% the last.
+%
+\def\doublecolumnout{%
+ \splittopskip=\topskip \splitmaxdepth=\maxdepth
+ % Get the available space for the double columns -- the normal
+ % (undoubled) page height minus any material left over from the
+ % previous page.
+ \dimen@ = \vsize
+ \divide\dimen@ by 2
+ \advance\dimen@ by -\ht\partialpage
+ %
+ % box0 will be the left-hand column, box2 the right.
+ \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
+ \onepageout\pagesofar
+ \unvbox255
+ \penalty\outputpenalty
+}
+%
+% Re-output the contents of the output page -- any previous material,
+% followed by the two boxes we just split, in box0 and box2.
+\def\pagesofar{%
+ \unvbox\partialpage
+ %
+ \hsize = \doublecolumnhsize
+ \wd0=\hsize \wd2=\hsize
+ \hbox to\pagewidth{\box0\hfil\box2}%
+}
+%
+% All done with double columns.
+\def\enddoublecolumns{%
+ % The following penalty ensures that the page builder is exercised
+ % _before_ we change the output routine. This is necessary in the
+ % following situation:
+ %
+ % The last section of the index consists only of a single entry.
+ % Before this section, \pagetotal is less than \pagegoal, so no
+ % break occurs before the last section starts. However, the last
+ % section, consisting of \initial and the single \entry, does not
+ % fit on the page and has to be broken off. Without the following
+ % penalty the page builder will not be exercised until \eject
+ % below, and by that time we'll already have changed the output
+ % routine to the \balancecolumns version, so the next-to-last
+ % double-column page will be processed with \balancecolumns, which
+ % is wrong: The two columns will go to the main vertical list, with
+ % the broken-off section in the recent contributions. As soon as
+ % the output routine finishes, TeX starts reconsidering the page
+ % break. The two columns and the broken-off section both fit on the
+ % page, because the two columns now take up only half of the page
+ % goal. When TeX sees \eject from below which follows the final
+ % section, it invokes the new output routine that we've set after
+ % \balancecolumns below; \onepageout will try to fit the two columns
+ % and the final section into the vbox of \pageheight (see
+ % \pagebody), causing an overfull box.
+ %
+ % Note that glue won't work here, because glue does not exercise the
+ % page builder, unlike penalties (see The TeXbook, pp. 280-281).
+ \penalty0
+ %
+ \output = {%
+ % Split the last of the double-column material. Leave it on the
+ % current page, no automatic page break.
+ \balancecolumns
+ %
+ % If we end up splitting too much material for the current page,
+ % though, there will be another page break right after this \output
+ % invocation ends. Having called \balancecolumns once, we do not
+ % want to call it again. Therefore, reset \output to its normal
+ % definition right away. (We hope \balancecolumns will never be
+ % called on to balance too much material, but if it is, this makes
+ % the output somewhat more palatable.)
+ \global\output = {\onepageout{\pagecontents\PAGE}}%
+ }%
+ \eject
+ \endgroup % started in \begindoublecolumns
+ %
+ % \pagegoal was set to the doubled \vsize above, since we restarted
+ % the current page. We're now back to normal single-column
+ % typesetting, so reset \pagegoal to the normal \vsize (after the
+ % \endgroup where \vsize got restored).
+ \pagegoal = \vsize
+}
+%
+% Called at the end of the double column material.
+\def\balancecolumns{%
+ \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
+ \dimen@ = \ht0
+ \advance\dimen@ by \topskip
+ \advance\dimen@ by-\baselineskip
+ \divide\dimen@ by 2 % target to split to
+ %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
+ \splittopskip = \topskip
+ % Loop until we get a decent breakpoint.
+ {%
+ \vbadness = 10000
+ \loop
+ \global\setbox3 = \copy0
+ \global\setbox1 = \vsplit3 to \dimen@
+ \ifdim\ht3>\dimen@
+ \global\advance\dimen@ by 1pt
+ \repeat
+ }%
+ %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
+ \setbox0=\vbox to\dimen@{\unvbox1}%
+ \setbox2=\vbox to\dimen@{\unvbox3}%
+ %
+ \pagesofar
+}
+\catcode`\@ = \other
+
+
+\message{sectioning,}
+% Chapters, sections, etc.
+
+% \unnumberedno is an oxymoron, of course. But we count the unnumbered
+% sections so that we can refer to them unambiguously in the pdf
+% outlines by their "section number". We avoid collisions with chapter
+% numbers by starting them at 10000. (If a document ever has 10000
+% chapters, we're in trouble anyway, I'm sure.)
+\newcount\unnumberedno \unnumberedno = 10000
+\newcount\chapno
+\newcount\secno \secno=0
+\newcount\subsecno \subsecno=0
+\newcount\subsubsecno \subsubsecno=0
+
+% This counter is funny since it counts through charcodes of letters A, B, ...
+\newcount\appendixno \appendixno = `\@
+%
+% \def\appendixletter{\char\the\appendixno}
+% We do the following ugly conditional instead of the above simple
+% construct for the sake of pdftex, which needs the actual
+% letter in the expansion, not just typeset.
+%
+\def\appendixletter{%
+ \ifnum\appendixno=`A A%
+ \else\ifnum\appendixno=`B B%
+ \else\ifnum\appendixno=`C C%
+ \else\ifnum\appendixno=`D D%
+ \else\ifnum\appendixno=`E E%
+ \else\ifnum\appendixno=`F F%
+ \else\ifnum\appendixno=`G G%
+ \else\ifnum\appendixno=`H H%
+ \else\ifnum\appendixno=`I I%
+ \else\ifnum\appendixno=`J J%
+ \else\ifnum\appendixno=`K K%
+ \else\ifnum\appendixno=`L L%
+ \else\ifnum\appendixno=`M M%
+ \else\ifnum\appendixno=`N N%
+ \else\ifnum\appendixno=`O O%
+ \else\ifnum\appendixno=`P P%
+ \else\ifnum\appendixno=`Q Q%
+ \else\ifnum\appendixno=`R R%
+ \else\ifnum\appendixno=`S S%
+ \else\ifnum\appendixno=`T T%
+ \else\ifnum\appendixno=`U U%
+ \else\ifnum\appendixno=`V V%
+ \else\ifnum\appendixno=`W W%
+ \else\ifnum\appendixno=`X X%
+ \else\ifnum\appendixno=`Y Y%
+ \else\ifnum\appendixno=`Z Z%
+ % The \the is necessary, despite appearances, because \appendixletter is
+ % expanded while writing the .toc file. \char\appendixno is not
+ % expandable, thus it is written literally, thus all appendixes come out
+ % with the same letter (or @) in the toc without it.
+ \else\char\the\appendixno
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+% Each @chapter defines these (using marks) as the number+name, number
+% and name of the chapter. Page headings and footings can use
+% these. @section does likewise.
+\def\thischapter{}
+\def\thischapternum{}
+\def\thischaptername{}
+\def\thissection{}
+\def\thissectionnum{}
+\def\thissectionname{}
+
+\newcount\absseclevel % used to calculate proper heading level
+\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
+
+% @raisesections: treat @section as chapter, @subsection as section, etc.
+\def\raisesections{\global\advance\secbase by -1}
+\let\up=\raisesections % original BFox name
+
+% @lowersections: treat @chapter as section, @section as subsection, etc.
+\def\lowersections{\global\advance\secbase by 1}
+\let\down=\lowersections % original BFox name
+
+% we only have subsub.
+\chardef\maxseclevel = 3
+%
+% A numbered section within an unnumbered changes to unnumbered too.
+% To achive this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unmlevel = \maxseclevel
+%
+% Trace whether the current chapter is an appendix or not:
+% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
+\def\chapheadtype{N}
+
+% Choose a heading macro
+% #1 is heading type
+% #2 is heading level
+% #3 is text for heading
+\def\genhead#1#2#3{%
+ % Compute the abs. sec. level:
+ \absseclevel=#2
+ \advance\absseclevel by \secbase
+ % Make sure \absseclevel doesn't fall outside the range:
+ \ifnum \absseclevel < 0
+ \absseclevel = 0
+ \else
+ \ifnum \absseclevel > 3
+ \absseclevel = 3
+ \fi
+ \fi
+ % The heading type:
+ \def\headtype{#1}%
+ \if \headtype U%
+ \ifnum \absseclevel < \unmlevel
+ \chardef\unmlevel = \absseclevel
+ \fi
+ \else
+ % Check for appendix sections:
+ \ifnum \absseclevel = 0
+ \edef\chapheadtype{\headtype}%
+ \else
+ \if \headtype A\if \chapheadtype N%
+ \errmessage{@appendix... within a non-appendix chapter}%
+ \fi\fi
+ \fi
+ % Check for numbered within unnumbered:
+ \ifnum \absseclevel > \unmlevel
+ \def\headtype{U}%
+ \else
+ \chardef\unmlevel = 3
+ \fi
+ \fi
+ % Now print the heading:
+ \if \headtype U%
+ \ifcase\absseclevel
+ \unnumberedzzz{#3}%
+ \or \unnumberedseczzz{#3}%
+ \or \unnumberedsubseczzz{#3}%
+ \or \unnumberedsubsubseczzz{#3}%
+ \fi
+ \else
+ \if \headtype A%
+ \ifcase\absseclevel
+ \appendixzzz{#3}%
+ \or \appendixsectionzzz{#3}%
+ \or \appendixsubseczzz{#3}%
+ \or \appendixsubsubseczzz{#3}%
+ \fi
+ \else
+ \ifcase\absseclevel
+ \chapterzzz{#3}%
+ \or \seczzz{#3}%
+ \or \numberedsubseczzz{#3}%
+ \or \numberedsubsubseczzz{#3}%
+ \fi
+ \fi
+ \fi
+ \suppressfirstparagraphindent
+}
+
+% an interface:
+\def\numhead{\genhead N}
+\def\apphead{\genhead A}
+\def\unnmhead{\genhead U}
+
+% @chapter, @appendix, @unnumbered. Increment top-level counter, reset
+% all lower-level sectioning counters to zero.
+%
+% Also set \chaplevelprefix, which we prepend to @float sequence numbers
+% (e.g., figures), q.v. By default (before any chapter), that is empty.
+\let\chaplevelprefix = \empty
+%
+\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
+\def\chapterzzz#1{%
+ % section resetting is \global in case the chapter is in a group, such
+ % as an @include file.
+ \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+ \global\advance\chapno by 1
+ %
+ % Used for \float.
+ \gdef\chaplevelprefix{\the\chapno.}%
+ \resetallfloatnos
+ %
+ \message{\putwordChapter\space \the\chapno}%
+ %
+ % Write the actual heading.
+ \chapmacro{#1}{Ynumbered}{\the\chapno}%
+ %
+ % So @section and the like are numbered underneath this chapter.
+ \global\let\section = \numberedsec
+ \global\let\subsection = \numberedsubsec
+ \global\let\subsubsection = \numberedsubsubsec
+}
+
+\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz
+\def\appendixzzz#1{%
+ \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+ \global\advance\appendixno by 1
+ \gdef\chaplevelprefix{\appendixletter.}%
+ \resetallfloatnos
+ %
+ \def\appendixnum{\putwordAppendix\space \appendixletter}%
+ \message{\appendixnum}%
+ %
+ \chapmacro{#1}{Yappendix}{\appendixletter}%
+ %
+ \global\let\section = \appendixsec
+ \global\let\subsection = \appendixsubsec
+ \global\let\subsubsection = \appendixsubsubsec
+}
+
+\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+\def\unnumberedzzz#1{%
+ \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+ \global\advance\unnumberedno by 1
+ %
+ % Since an unnumbered has no number, no prefix for figures.
+ \global\let\chaplevelprefix = \empty
+ \resetallfloatnos
+ %
+ % This used to be simply \message{#1}, but TeX fully expands the
+ % argument to \message. Therefore, if #1 contained @-commands, TeX
+ % expanded them. For example, in `@unnumbered The @cite{Book}', TeX
+ % expanded @cite (which turns out to cause errors because \cite is meant
+ % to be executed, not expanded).
+ %
+ % Anyway, we don't want the fully-expanded definition of @cite to appear
+ % as a result of the \message, we just want `@cite' itself. We use
+ % \the<toks register> to achieve this: TeX expands \the<toks> only once,
+ % simply yielding the contents of <toks register>. (We also do this for
+ % the toc entries.)
+ \toks0 = {#1}%
+ \message{(\the\toks0)}%
+ %
+ \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
+ %
+ \global\let\section = \unnumberedsec
+ \global\let\subsection = \unnumberedsubsec
+ \global\let\subsubsection = \unnumberedsubsubsec
+}
+
+% @centerchap is like @unnumbered, but the heading is centered.
+\outer\parseargdef\centerchap{%
+ % Well, we could do the following in a group, but that would break
+ % an assumption that \chapmacro is called at the outermost level.
+ % Thus we are safer this way: --kasal, 24feb04
+ \let\centerparametersmaybe = \centerparameters
+ \unnmhead0{#1}%
+ \let\centerparametersmaybe = \relax
+}
+
+% @top is like @unnumbered.
+\let\top\unnumbered
+
+% Sections.
+\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
+\def\seczzz#1{%
+ \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
+ \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
+}
+
+\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
+\def\appendixsectionzzz#1{%
+ \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
+ \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
+}
+\let\appendixsec\appendixsection
+
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
+\def\unnumberedseczzz#1{%
+ \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
+ \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
+}
+
+% Subsections.
+\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
+\def\numberedsubseczzz#1{%
+ \global\subsubsecno=0 \global\advance\subsecno by 1
+ \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
+}
+
+\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
+\def\appendixsubseczzz#1{%
+ \global\subsubsecno=0 \global\advance\subsecno by 1
+ \sectionheading{#1}{subsec}{Yappendix}%
+ {\appendixletter.\the\secno.\the\subsecno}%
+}
+
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+\def\unnumberedsubseczzz#1{%
+ \global\subsubsecno=0 \global\advance\subsecno by 1
+ \sectionheading{#1}{subsec}{Ynothing}%
+ {\the\unnumberedno.\the\secno.\the\subsecno}%
+}
+
+% Subsubsections.
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
+\def\numberedsubsubseczzz#1{%
+ \global\advance\subsubsecno by 1
+ \sectionheading{#1}{subsubsec}{Ynumbered}%
+ {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
+\def\appendixsubsubseczzz#1{%
+ \global\advance\subsubsecno by 1
+ \sectionheading{#1}{subsubsec}{Yappendix}%
+ {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+\def\unnumberedsubsubseczzz#1{%
+ \global\advance\subsubsecno by 1
+ \sectionheading{#1}{subsubsec}{Ynothing}%
+ {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% These macros control what the section commands do, according
+% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
+% Define them by default for a numbered chapter.
+\let\section = \numberedsec
+\let\subsection = \numberedsubsec
+\let\subsubsection = \numberedsubsubsec
+
+% Define @majorheading, @heading and @subheading
+
+% NOTE on use of \vbox for chapter headings, section headings, and such:
+% 1) We use \vbox rather than the earlier \line to permit
+% overlong headings to fold.
+% 2) \hyphenpenalty is set to 10000 because hyphenation in a
+% heading is obnoxious; this forbids it.
+% 3) Likewise, headings look best if no \parindent is used, and
+% if justification is not attempted. Hence \raggedright.
+
+
+\def\majorheading{%
+ {\advance\chapheadingskip by 10pt \chapbreak }%
+ \parsearg\chapheadingzzz
+}
+
+\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
+\def\chapheadingzzz#1{%
+ {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}%
+ \bigskip \par\penalty 200\relax
+ \suppressfirstparagraphindent
+}
+
+% @heading, @subheading, @subsubheading.
+\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
+ \suppressfirstparagraphindent}
+\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
+ \suppressfirstparagraphindent}
+\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
+ \suppressfirstparagraphindent}
+
+% These macros generate a chapter, section, etc. heading only
+% (including whitespace, linebreaking, etc. around it),
+% given all the information in convenient, parsed form.
+
+%%% Args are the skip and penalty (usually negative)
+\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
+
+%%% Define plain chapter starts, and page on/off switching for it
+% Parameter controlling skip before chapter headings (if needed)
+
+\newskip\chapheadingskip
+
+\def\chapbreak{\dobreak \chapheadingskip {-4000}}
+\def\chappager{\par\vfill\supereject}
+% Because \domark is called before \chapoddpage, the filler page will
+% get the headings for the next chapter, which is wrong. But we don't
+% care -- we just disable all headings on the filler page.
+\def\chapoddpage{%
+ \chappager
+ \ifodd\pageno \else
+ \begingroup
+ \evenheadline={\hfil}\evenfootline={\hfil}%
+ \oddheadline={\hfil}\oddfootline={\hfil}%
+ \hbox to 0pt{}%
+ \chappager
+ \endgroup
+ \fi
+}
+
+\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
+
+\def\CHAPPAGoff{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chapbreak
+\global\let\pagealignmacro=\chappager}
+
+\def\CHAPPAGon{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chappager
+\global\let\pagealignmacro=\chappager
+\global\def\HEADINGSon{\HEADINGSsingle}}
+
+\def\CHAPPAGodd{%
+\global\let\contentsalignmacro = \chapoddpage
+\global\let\pchapsepmacro=\chapoddpage
+\global\let\pagealignmacro=\chapoddpage
+\global\def\HEADINGSon{\HEADINGSdouble}}
+
+\CHAPPAGon
+
+% Chapter opening.
+%
+% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
+% Yappendix, Yomitfromtoc), #3 the chapter number.
+%
+% To test against our argument.
+\def\Ynothingkeyword{Ynothing}
+\def\Yomitfromtockeyword{Yomitfromtoc}
+\def\Yappendixkeyword{Yappendix}
+%
+\def\chapmacro#1#2#3{%
+ % Insert the first mark before the heading break (see notes for \domark).
+ \let\prevchapterdefs=\lastchapterdefs
+ \let\prevsectiondefs=\lastsectiondefs
+ \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
+ \gdef\thissection{}}%
+ %
+ \def\temptype{#2}%
+ \ifx\temptype\Ynothingkeyword
+ \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+ \gdef\thischapter{\thischaptername}}%
+ \else\ifx\temptype\Yomitfromtockeyword
+ \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+ \gdef\thischapter{}}%
+ \else\ifx\temptype\Yappendixkeyword
+ \toks0={#1}%
+ \xdef\lastchapterdefs{%
+ \gdef\noexpand\thischaptername{\the\toks0}%
+ \gdef\noexpand\thischapternum{\appendixletter}%
+ \gdef\noexpand\thischapter{\putwordAppendix{} \noexpand\thischapternum:
+ \noexpand\thischaptername}%
+ }%
+ \else
+ \toks0={#1}%
+ \xdef\lastchapterdefs{%
+ \gdef\noexpand\thischaptername{\the\toks0}%
+ \gdef\noexpand\thischapternum{\the\chapno}%
+ \gdef\noexpand\thischapter{\putwordChapter{} \noexpand\thischapternum:
+ \noexpand\thischaptername}%
+ }%
+ \fi\fi\fi
+ %
+ % Output the mark. Pass it through \safewhatsit, to take care of
+ % the preceding space.
+ \safewhatsit\domark
+ %
+ % Insert the chapter heading break.
+ \pchapsepmacro
+ %
+ % Now the second mark, after the heading break. No break points
+ % between here and the heading.
+ \let\prevchapterdefs=\lastchapterdefs
+ \let\prevsectiondefs=\lastsectiondefs
+ \domark
+ %
+ {%
+ \chapfonts \rm
+ %
+ % Have to define \lastsection before calling \donoderef, because the
+ % xref code eventually uses it. On the other hand, it has to be called
+ % after \pchapsepmacro, or the headline will change too soon.
+ \gdef\lastsection{#1}%
+ %
+ % Only insert the separating space if we have a chapter/appendix
+ % number, and don't print the unnumbered ``number''.
+ \ifx\temptype\Ynothingkeyword
+ \setbox0 = \hbox{}%
+ \def\toctype{unnchap}%
+ \else\ifx\temptype\Yomitfromtockeyword
+ \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
+ \def\toctype{omit}%
+ \else\ifx\temptype\Yappendixkeyword
+ \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
+ \def\toctype{app}%
+ \else
+ \setbox0 = \hbox{#3\enspace}%
+ \def\toctype{numchap}%
+ \fi\fi\fi
+ %
+ % Write the toc entry for this chapter. Must come before the
+ % \donoderef, because we include the current node name in the toc
+ % entry, and \donoderef resets it to empty.
+ \writetocentry{\toctype}{#1}{#3}%
+ %
+ % For pdftex, we have to write out the node definition (aka, make
+ % the pdfdest) after any page break, but before the actual text has
+ % been typeset. If the destination for the pdf outline is after the
+ % text, then jumping from the outline may wind up with the text not
+ % being visible, for instance under high magnification.
+ \donoderef{#2}%
+ %
+ % Typeset the actual heading.
+ \nobreak % Avoid page breaks at the interline glue.
+ \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+ \hangindent=\wd0 \centerparametersmaybe
+ \unhbox0 #1\par}%
+ }%
+ \nobreak\bigskip % no page break after a chapter title
+ \nobreak
+}
+
+% @centerchap -- centered and unnumbered.
+\let\centerparametersmaybe = \relax
+\def\centerparameters{%
+ \advance\rightskip by 3\rightskip
+ \leftskip = \rightskip
+ \parfillskip = 0pt
+}
+
+
+% I don't think this chapter style is supported any more, so I'm not
+% updating it with the new noderef stuff. We'll see. --karl, 11aug03.
+%
+\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
+%
+\def\unnchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}\bigskip \par\nobreak
+}
+\def\chfopen #1#2{\chapoddpage {\chapfonts
+\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
+\par\penalty 5000 %
+}
+\def\centerchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt
+ \hfill {\rm #1}\hfill}}\bigskip \par\nobreak
+}
+\def\CHAPFopen{%
+ \global\let\chapmacro=\chfopen
+ \global\let\centerchapmacro=\centerchfopen}
+
+
+% Section titles. These macros combine the section number parts and
+% call the generic \sectionheading to do the printing.
+%
+\newskip\secheadingskip
+\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
+
+% Subsection titles.
+\newskip\subsecheadingskip
+\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
+
+% Subsubsection titles.
+\def\subsubsecheadingskip{\subsecheadingskip}
+\def\subsubsecheadingbreak{\subsecheadingbreak}
+
+
+% Print any size, any type, section title.
+%
+% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
+% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
+% section number.
+%
+\def\seckeyword{sec}
+%
+\def\sectionheading#1#2#3#4{%
+ {%
+ % Switch to the right set of fonts.
+ \csname #2fonts\endcsname \rm
+ %
+ \def\sectionlevel{#2}%
+ \def\temptype{#3}%
+ %
+ % Insert first mark before the heading break (see notes for \domark).
+ \let\prevsectiondefs=\lastsectiondefs
+ \ifx\temptype\Ynothingkeyword
+ \ifx\sectionlevel\seckeyword
+ \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
+ \gdef\thissection{\thissectionname}}%
+ \fi
+ \else\ifx\temptype\Yomitfromtockeyword
+ % Don't redefine \thissection.
+ \else\ifx\temptype\Yappendixkeyword
+ \ifx\sectionlevel\seckeyword
+ \toks0={#1}%
+ \xdef\lastsectiondefs{%
+ \gdef\noexpand\thissectionname{\the\toks0}%
+ \gdef\noexpand\thissectionnum{#4}%
+ \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum:
+ \noexpand\thissectionname}%
+ }%
+ \fi
+ \else
+ \ifx\sectionlevel\seckeyword
+ \toks0={#1}%
+ \xdef\lastsectiondefs{%
+ \gdef\noexpand\thissectionname{\the\toks0}%
+ \gdef\noexpand\thissectionnum{#4}%
+ \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum:
+ \noexpand\thissectionname}%
+ }%
+ \fi
+ \fi\fi\fi
+ %
+ % Output the mark. Pass it through \safewhatsit, to take care of
+ % the preceding space.
+ \safewhatsit\domark
+ %
+ % Insert space above the heading.
+ \csname #2headingbreak\endcsname
+ %
+ % Now the second mark, after the heading break. No break points
+ % between here and the heading.
+ \let\prevsectiondefs=\lastsectiondefs
+ \domark
+ %
+ % Only insert the space after the number if we have a section number.
+ \ifx\temptype\Ynothingkeyword
+ \setbox0 = \hbox{}%
+ \def\toctype{unn}%
+ \gdef\lastsection{#1}%
+ \else\ifx\temptype\Yomitfromtockeyword
+ % for @headings -- no section number, don't include in toc,
+ % and don't redefine \lastsection.
+ \setbox0 = \hbox{}%
+ \def\toctype{omit}%
+ \let\sectionlevel=\empty
+ \else\ifx\temptype\Yappendixkeyword
+ \setbox0 = \hbox{#4\enspace}%
+ \def\toctype{app}%
+ \gdef\lastsection{#1}%
+ \else
+ \setbox0 = \hbox{#4\enspace}%
+ \def\toctype{num}%
+ \gdef\lastsection{#1}%
+ \fi\fi\fi
+ %
+ % Write the toc entry (before \donoderef). See comments in \chapmacro.
+ \writetocentry{\toctype\sectionlevel}{#1}{#4}%
+ %
+ % Write the node reference (= pdf destination for pdftex).
+ % Again, see comments in \chapmacro.
+ \donoderef{#3}%
+ %
+ % Interline glue will be inserted when the vbox is completed.
+ % That glue will be a valid breakpoint for the page, since it'll be
+ % preceded by a whatsit (usually from the \donoderef, or from the
+ % \writetocentry if there was no node). We don't want to allow that
+ % break, since then the whatsits could end up on page n while the
+ % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000.
+ \nobreak
+ %
+ % Output the actual section heading.
+ \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+ \hangindent=\wd0 % zero if no section number
+ \unhbox0 #1}%
+ }%
+ % Add extra space after the heading -- half of whatever came above it.
+ % Don't allow stretch, though.
+ \kern .5 \csname #2headingskip\endcsname
+ %
+ % Do not let the kern be a potential breakpoint, as it would be if it
+ % was followed by glue.
+ \nobreak
+ %
+ % We'll almost certainly start a paragraph next, so don't let that
+ % glue accumulate. (Not a breakpoint because it's preceded by a
+ % discardable item.)
+ \vskip-\parskip
+ %
+ % This is purely so the last item on the list is a known \penalty >
+ % 10000. This is so \startdefun can avoid allowing breakpoints after
+ % section headings. Otherwise, it would insert a valid breakpoint between:
+ %
+ % @section sec-whatever
+ % @deffn def-whatever
+ \penalty 10001
+}
+
+
+\message{toc,}
+% Table of contents.
+\newwrite\tocfile
+
+% Write an entry to the toc file, opening it if necessary.
+% Called from @chapter, etc.
+%
+% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
+% We append the current node name (if any) and page number as additional
+% arguments for the \{chap,sec,...}entry macros which will eventually
+% read this. The node name is used in the pdf outlines as the
+% destination to jump to.
+%
+% We open the .toc file for writing here instead of at @setfilename (or
+% any other fixed time) so that @contents can be anywhere in the document.
+% But if #1 is `omit', then we don't do anything. This is used for the
+% table of contents chapter openings themselves.
+%
+\newif\iftocfileopened
+\def\omitkeyword{omit}%
+%
+\def\writetocentry#1#2#3{%
+ \edef\writetoctype{#1}%
+ \ifx\writetoctype\omitkeyword \else
+ \iftocfileopened\else
+ \immediate\openout\tocfile = \jobname.toc
+ \global\tocfileopenedtrue
+ \fi
+ %
+ \iflinks
+ {\atdummies
+ \edef\temp{%
+ \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
+ \temp
+ }%
+ \fi
+ \fi
+ %
+ % Tell \shipout to create a pdf destination on each page, if we're
+ % writing pdf. These are used in the table of contents. We can't
+ % just write one on every page because the title pages are numbered
+ % 1 and 2 (the page numbers aren't printed), and so are the first
+ % two pages of the document. Thus, we'd have two destinations named
+ % `1', and two named `2'.
+ \ifpdf \global\pdfmakepagedesttrue \fi
+}
+
+
+% These characters do not print properly in the Computer Modern roman
+% fonts, so we must take special care. This is more or less redundant
+% with the Texinfo input format setup at the end of this file.
+%
+\def\activecatcodes{%
+ \catcode`\"=\active
+ \catcode`\$=\active
+ \catcode`\<=\active
+ \catcode`\>=\active
+ \catcode`\\=\active
+ \catcode`\^=\active
+ \catcode`\_=\active
+ \catcode`\|=\active
+ \catcode`\~=\active
+}
+
+
+% Read the toc file, which is essentially Texinfo input.
+\def\readtocfile{%
+ \setupdatafile
+ \activecatcodes
+ \input \tocreadfilename
+}
+
+\newskip\contentsrightmargin \contentsrightmargin=1in
+\newcount\savepageno
+\newcount\lastnegativepageno \lastnegativepageno = -1
+
+% Prepare to read what we've written to \tocfile.
+%
+\def\startcontents#1{%
+ % If @setchapternewpage on, and @headings double, the contents should
+ % start on an odd page, unlike chapters. Thus, we maintain
+ % \contentsalignmacro in parallel with \pagealignmacro.
+ % From: Torbjorn Granlund <tege@matematik.su.se>
+ \contentsalignmacro
+ \immediate\closeout\tocfile
+ %
+ % Don't need to put `Contents' or `Short Contents' in the headline.
+ % It is abundantly clear what they are.
+ \chapmacro{#1}{Yomitfromtoc}{}%
+ %
+ \savepageno = \pageno
+ \begingroup % Set up to handle contents files properly.
+ \raggedbottom % Worry more about breakpoints than the bottom.
+ \advance\hsize by -\contentsrightmargin % Don't use the full line length.
+ %
+ % Roman numerals for page numbers.
+ \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
+}
+
+% redefined for the two-volume lispref. We always output on
+% \jobname.toc even if this is redefined.
+%
+\def\tocreadfilename{\jobname.toc}
+
+% Normal (long) toc.
+%
+\def\contents{%
+ \startcontents{\putwordTOC}%
+ \openin 1 \tocreadfilename\space
+ \ifeof 1 \else
+ \readtocfile
+ \fi
+ \vfill \eject
+ \contentsalignmacro % in case @setchapternewpage odd is in effect
+ \ifeof 1 \else
+ \pdfmakeoutlines
+ \fi
+ \closein 1
+ \endgroup
+ \lastnegativepageno = \pageno
+ \global\pageno = \savepageno
+}
+
+% And just the chapters.
+\def\summarycontents{%
+ \startcontents{\putwordShortTOC}%
+ %
+ \let\numchapentry = \shortchapentry
+ \let\appentry = \shortchapentry
+ \let\unnchapentry = \shortunnchapentry
+ % We want a true roman here for the page numbers.
+ \secfonts
+ \let\rm=\shortcontrm \let\bf=\shortcontbf
+ \let\sl=\shortcontsl \let\tt=\shortconttt
+ \rm
+ \hyphenpenalty = 10000
+ \advance\baselineskip by 1pt % Open it up a little.
+ \def\numsecentry##1##2##3##4{}
+ \let\appsecentry = \numsecentry
+ \let\unnsecentry = \numsecentry
+ \let\numsubsecentry = \numsecentry
+ \let\appsubsecentry = \numsecentry
+ \let\unnsubsecentry = \numsecentry
+ \let\numsubsubsecentry = \numsecentry
+ \let\appsubsubsecentry = \numsecentry
+ \let\unnsubsubsecentry = \numsecentry
+ \openin 1 \tocreadfilename\space
+ \ifeof 1 \else
+ \readtocfile
+ \fi
+ \closein 1
+ \vfill \eject
+ \contentsalignmacro % in case @setchapternewpage odd is in effect
+ \endgroup
+ \lastnegativepageno = \pageno
+ \global\pageno = \savepageno
+}
+\let\shortcontents = \summarycontents
+
+% Typeset the label for a chapter or appendix for the short contents.
+% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
+%
+\def\shortchaplabel#1{%
+ % This space should be enough, since a single number is .5em, and the
+ % widest letter (M) is 1em, at least in the Computer Modern fonts.
+ % But use \hss just in case.
+ % (This space doesn't include the extra space that gets added after
+ % the label; that gets put in by \shortchapentry above.)
+ %
+ % We'd like to right-justify chapter numbers, but that looks strange
+ % with appendix letters. And right-justifying numbers and
+ % left-justifying letters looks strange when there is less than 10
+ % chapters. Have to read the whole toc once to know how many chapters
+ % there are before deciding ...
+ \hbox to 1em{#1\hss}%
+}
+
+% These macros generate individual entries in the table of contents.
+% The first argument is the chapter or section name.
+% The last argument is the page number.
+% The arguments in between are the chapter number, section number, ...
+
+% Chapters, in the main contents.
+\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
+%
+% Chapters, in the short toc.
+% See comments in \dochapentry re vbox and related settings.
+\def\shortchapentry#1#2#3#4{%
+ \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
+}
+
+% Appendices, in the main contents.
+% Need the word Appendix, and a fixed-size box.
+%
+\def\appendixbox#1{%
+ % We use M since it's probably the widest letter.
+ \setbox0 = \hbox{\putwordAppendix{} M}%
+ \hbox to \wd0{\putwordAppendix{} #1\hss}}
+%
+\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
+
+% Unnumbered chapters.
+\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
+\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
+
+% Sections.
+\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
+\let\appsecentry=\numsecentry
+\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
+
+% Subsections.
+\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsecentry=\numsubsecentry
+\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
+
+% And subsubsections.
+\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsubsecentry=\numsubsubsecentry
+\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
+
+% This parameter controls the indentation of the various levels.
+% Same as \defaultparindent.
+\newdimen\tocindent \tocindent = 15pt
+
+% Now for the actual typesetting. In all these, #1 is the text and #2 is the
+% page number.
+%
+% If the toc has to be broken over pages, we want it to be at chapters
+% if at all possible; hence the \penalty.
+\def\dochapentry#1#2{%
+ \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
+ \begingroup
+ \chapentryfonts
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+ \endgroup
+ \nobreak\vskip .25\baselineskip plus.1\baselineskip
+}
+
+\def\dosecentry#1#2{\begingroup
+ \secentryfonts \leftskip=\tocindent
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsecentry#1#2{\begingroup
+ \subsecentryfonts \leftskip=2\tocindent
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsubsecentry#1#2{\begingroup
+ \subsubsecentryfonts \leftskip=3\tocindent
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+% We use the same \entry macro as for the index entries.
+\let\tocentry = \entry
+
+% Space between chapter (or whatever) number and the title.
+\def\labelspace{\hskip1em \relax}
+
+\def\dopageno#1{{\rm #1}}
+\def\doshortpageno#1{{\rm #1}}
+
+\def\chapentryfonts{\secfonts \rm}
+\def\secentryfonts{\textfonts}
+\def\subsecentryfonts{\textfonts}
+\def\subsubsecentryfonts{\textfonts}
+
+
+\message{environments,}
+% @foo ... @end foo.
+
+% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
+%
+% Since these characters are used in examples, they should be an even number of
+% \tt widths. Each \tt character is 1en, so two makes it 1em.
+%
+\def\point{$\star$}
+\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
+\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
+\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+
+% The @error{} command.
+% Adapted from the TeXbook's \boxit.
+%
+\newbox\errorbox
+%
+{\tentt \global\dimen0 = 3em}% Width of the box.
+\dimen2 = .55pt % Thickness of rules
+% The text. (`r' is open on the right, `e' somewhat less so on the left.)
+\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
+%
+\setbox\errorbox=\hbox to \dimen0{\hfil
+ \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
+ \advance\hsize by -2\dimen2 % Rules.
+ \vbox{%
+ \hrule height\dimen2
+ \hbox{\vrule width\dimen2 \kern3pt % Space to left of text.
+ \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
+ \kern3pt\vrule width\dimen2}% Space to right.
+ \hrule height\dimen2}
+ \hfil}
+%
+\def\error{\leavevmode\lower.7ex\copy\errorbox}
+
+% @tex ... @end tex escapes into raw Tex temporarily.
+% One exception: @ is still an escape character, so that @end tex works.
+% But \@ or @@ will get a plain tex @ character.
+
+\envdef\tex{%
+ \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
+ \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
+ \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
+ \catcode `\%=14
+ \catcode `\+=\other
+ \catcode `\"=\other
+ \catcode `\|=\other
+ \catcode `\<=\other
+ \catcode `\>=\other
+ \escapechar=`\\
+ %
+ \let\b=\ptexb
+ \let\bullet=\ptexbullet
+ \let\c=\ptexc
+ \let\,=\ptexcomma
+ \let\.=\ptexdot
+ \let\dots=\ptexdots
+ \let\equiv=\ptexequiv
+ \let\!=\ptexexclam
+ \let\i=\ptexi
+ \let\indent=\ptexindent
+ \let\noindent=\ptexnoindent
+ \let\{=\ptexlbrace
+ \let\+=\tabalign
+ \let\}=\ptexrbrace
+ \let\/=\ptexslash
+ \let\*=\ptexstar
+ \let\t=\ptext
+ \expandafter \let\csname top\endcsname=\ptextop % outer
+ \let\frenchspacing=\plainfrenchspacing
+ %
+ \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
+ \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
+ \def\@{@}%
+}
+% There is no need to define \Etex.
+
+% Define @lisp ... @end lisp.
+% @lisp environment forms a group so it can rebind things,
+% including the definition of @end lisp (which normally is erroneous).
+
+% Amount to narrow the margins by for @lisp.
+\newskip\lispnarrowing \lispnarrowing=0.4in
+
+% This is the definition that ^^M gets inside @lisp, @example, and other
+% such environments. \null is better than a space, since it doesn't
+% have any width.
+\def\lisppar{\null\endgraf}
+
+% This space is always present above and below environments.
+\newskip\envskipamount \envskipamount = 0pt
+
+% Make spacing and below environment symmetrical. We use \parskip here
+% to help in doing that, since in @example-like environments \parskip
+% is reset to zero; thus the \afterenvbreak inserts no space -- but the
+% start of the next paragraph will insert \parskip.
+%
+\def\aboveenvbreak{{%
+ % =10000 instead of <10000 because of a special case in \itemzzz and
+ % \sectionheading, q.v.
+ \ifnum \lastpenalty=10000 \else
+ \advance\envskipamount by \parskip
+ \endgraf
+ \ifdim\lastskip<\envskipamount
+ \removelastskip
+ % it's not a good place to break if the last penalty was \nobreak
+ % or better ...
+ \ifnum\lastpenalty<10000 \penalty-50 \fi
+ \vskip\envskipamount
+ \fi
+ \fi
+}}
+
+\let\afterenvbreak = \aboveenvbreak
+
+% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will
+% also clear it, so that its embedded environments do the narrowing again.
+\let\nonarrowing=\relax
+
+% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
+% environment contents.
+\font\circle=lcircle10
+\newdimen\circthick
+\newdimen\cartouter\newdimen\cartinner
+\newskip\normbskip\newskip\normpskip\newskip\normlskip
+\circthick=\fontdimen8\circle
+%
+\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
+\def\ctr{{\hskip 6pt\circle\char'010}}
+\def\cbl{{\circle\char'012\hskip -6pt}}
+\def\cbr{{\hskip 6pt\circle\char'011}}
+\def\carttop{\hbox to \cartouter{\hskip\lskip
+ \ctl\leaders\hrule height\circthick\hfil\ctr
+ \hskip\rskip}}
+\def\cartbot{\hbox to \cartouter{\hskip\lskip
+ \cbl\leaders\hrule height\circthick\hfil\cbr
+ \hskip\rskip}}
+%
+\newskip\lskip\newskip\rskip
+
+\envdef\cartouche{%
+ \ifhmode\par\fi % can't be in the midst of a paragraph.
+ \startsavinginserts
+ \lskip=\leftskip \rskip=\rightskip
+ \leftskip=0pt\rightskip=0pt % we want these *outside*.
+ \cartinner=\hsize \advance\cartinner by-\lskip
+ \advance\cartinner by-\rskip
+ \cartouter=\hsize
+ \advance\cartouter by 18.4pt % allow for 3pt kerns on either
+ % side, and for 6pt waste from
+ % each corner char, and rule thickness
+ \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
+ % Flag to tell @lisp, etc., not to narrow margin.
+ \let\nonarrowing = t%
+ \vbox\bgroup
+ \baselineskip=0pt\parskip=0pt\lineskip=0pt
+ \carttop
+ \hbox\bgroup
+ \hskip\lskip
+ \vrule\kern3pt
+ \vbox\bgroup
+ \kern3pt
+ \hsize=\cartinner
+ \baselineskip=\normbskip
+ \lineskip=\normlskip
+ \parskip=\normpskip
+ \vskip -\parskip
+ \comment % For explanation, see the end of \def\group.
+}
+\def\Ecartouche{%
+ \ifhmode\par\fi
+ \kern3pt
+ \egroup
+ \kern3pt\vrule
+ \hskip\rskip
+ \egroup
+ \cartbot
+ \egroup
+ \checkinserts
+}
+
+
+% This macro is called at the beginning of all the @example variants,
+% inside a group.
+\def\nonfillstart{%
+ \aboveenvbreak
+ \hfuzz = 12pt % Don't be fussy
+ \sepspaces % Make spaces be word-separators rather than space tokens.
+ \let\par = \lisppar % don't ignore blank lines
+ \obeylines % each line of input is a line of output
+ \parskip = 0pt
+ \parindent = 0pt
+ \emergencystretch = 0pt % don't try to avoid overfull boxes
+ \ifx\nonarrowing\relax
+ \advance \leftskip by \lispnarrowing
+ \exdentamount=\lispnarrowing
+ \else
+ \let\nonarrowing = \relax
+ \fi
+ \let\exdent=\nofillexdent
+}
+
+% If you want all examples etc. small: @set dispenvsize small.
+% If you want even small examples the full size: @set dispenvsize nosmall.
+% This affects the following displayed environments:
+% @example, @display, @format, @lisp
+%
+\def\smallword{small}
+\def\nosmallword{nosmall}
+\let\SETdispenvsize\relax
+\def\setnormaldispenv{%
+ \ifx\SETdispenvsize\smallword
+ % end paragraph for sake of leading, in case document has no blank
+ % line. This is redundant with what happens in \aboveenvbreak, but
+ % we need to do it before changing the fonts, and it's inconvenient
+ % to change the fonts afterward.
+ \ifnum \lastpenalty=10000 \else \endgraf \fi
+ \smallexamplefonts \rm
+ \fi
+}
+\def\setsmalldispenv{%
+ \ifx\SETdispenvsize\nosmallword
+ \else
+ \ifnum \lastpenalty=10000 \else \endgraf \fi
+ \smallexamplefonts \rm
+ \fi
+}
+
+% We often define two environments, @foo and @smallfoo.
+% Let's do it by one command:
+\def\makedispenv #1#2{
+ \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}
+ \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}
+ \expandafter\let\csname E#1\endcsname \afterenvbreak
+ \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
+}
+
+% Define two synonyms:
+\def\maketwodispenvs #1#2#3{
+ \makedispenv{#1}{#3}
+ \makedispenv{#2}{#3}
+}
+
+% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
+%
+% @smallexample and @smalllisp: use smaller fonts.
+% Originally contributed by Pavel@xerox.
+%
+\maketwodispenvs {lisp}{example}{%
+ \nonfillstart
+ \tt\quoteexpand
+ \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
+ \gobble % eat return
+}
+% @display/@smalldisplay: same as @lisp except keep current font.
+%
+\makedispenv {display}{%
+ \nonfillstart
+ \gobble
+}
+
+% @format/@smallformat: same as @display except don't narrow margins.
+%
+\makedispenv{format}{%
+ \let\nonarrowing = t%
+ \nonfillstart
+ \gobble
+}
+
+% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
+\envdef\flushleft{%
+ \let\nonarrowing = t%
+ \nonfillstart
+ \gobble
+}
+\let\Eflushleft = \afterenvbreak
+
+% @flushright.
+%
+\envdef\flushright{%
+ \let\nonarrowing = t%
+ \nonfillstart
+ \advance\leftskip by 0pt plus 1fill
+ \gobble
+}
+\let\Eflushright = \afterenvbreak
+
+
+% @quotation does normal linebreaking (hence we can't use \nonfillstart)
+% and narrows the margins. We keep \parskip nonzero in general, since
+% we're doing normal filling. So, when using \aboveenvbreak and
+% \afterenvbreak, temporarily make \parskip 0.
+%
+\envdef\quotation{%
+ {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+ \parindent=0pt
+ %
+ % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+ \ifx\nonarrowing\relax
+ \advance\leftskip by \lispnarrowing
+ \advance\rightskip by \lispnarrowing
+ \exdentamount = \lispnarrowing
+ \else
+ \let\nonarrowing = \relax
+ \fi
+ \parsearg\quotationlabel
+}
+
+% We have retained a nonzero parskip for the environment, since we're
+% doing normal filling.
+%
+\def\Equotation{%
+ \par
+ \ifx\quotationauthor\undefined\else
+ % indent a bit.
+ \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
+ \fi
+ {\parskip=0pt \afterenvbreak}%
+}
+
+% If we're given an argument, typeset it in bold with a colon after.
+\def\quotationlabel#1{%
+ \def\temp{#1}%
+ \ifx\temp\empty \else
+ {\bf #1: }%
+ \fi
+}
+
+
+% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
+% If we want to allow any <char> as delimiter,
+% we need the curly braces so that makeinfo sees the @verb command, eg:
+% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org
+%
+% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook.
+%
+% [Knuth] p.344; only we need to do the other characters Texinfo sets
+% active too. Otherwise, they get lost as the first character on a
+% verbatim line.
+\def\dospecials{%
+ \do\ \do\\\do\{\do\}\do\$\do\&%
+ \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
+ \do\<\do\>\do\|\do\@\do+\do\"%
+}
+%
+% [Knuth] p. 380
+\def\uncatcodespecials{%
+ \def\do##1{\catcode`##1=\other}\dospecials}
+%
+% [Knuth] pp. 380,381,391
+% Disable Spanish ligatures ?` and !` of \tt font
+\begingroup
+ \catcode`\`=\active\gdef`{\relax\lq}
+\endgroup
+%
+% Setup for the @verb command.
+%
+% Eight spaces for a tab
+\begingroup
+ \catcode`\^^I=\active
+ \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
+\endgroup
+%
+\def\setupverb{%
+ \tt % easiest (and conventionally used) font for verbatim
+ \def\par{\leavevmode\endgraf}%
+ \catcode`\`=\active
+ \tabeightspaces
+ % Respect line breaks,
+ % print special symbols as themselves, and
+ % make each space count
+ % must do in this order:
+ \obeylines \uncatcodespecials \sepspaces
+}
+
+% Setup for the @verbatim environment
+%
+% Real tab expansion
+\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
+%
+\def\starttabbox{\setbox0=\hbox\bgroup}
+
+% Allow an option to not replace quotes with a regular directed right
+% quote/apostrophe (char 0x27), but instead use the undirected quote
+% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it
+% the default, but it works for pasting with more pdf viewers (at least
+% evince), the lilypond developers report. xpdf does work with the
+% regular 0x27.
+%
+\def\codequoteright{%
+ \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
+ \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
+ '%
+ \else \char'15 \fi
+ \else \char'15 \fi
+}
+%
+% and a similar option for the left quote char vs. a grave accent.
+% Modern fonts display ASCII 0x60 as a grave accent, so some people like
+% the code environments to do likewise.
+%
+\def\codequoteleft{%
+ \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
+ \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
+ `%
+ \else \char'22 \fi
+ \else \char'22 \fi
+}
+%
+\begingroup
+ \catcode`\^^I=\active
+ \gdef\tabexpand{%
+ \catcode`\^^I=\active
+ \def^^I{\leavevmode\egroup
+ \dimen0=\wd0 % the width so far, or since the previous tab
+ \divide\dimen0 by\tabw
+ \multiply\dimen0 by\tabw % compute previous multiple of \tabw
+ \advance\dimen0 by\tabw % advance to next multiple of \tabw
+ \wd0=\dimen0 \box0 \starttabbox
+ }%
+ }
+ \catcode`\'=\active
+ \gdef\rquoteexpand{\catcode\rquoteChar=\active \def'{\codequoteright}}%
+ %
+ \catcode`\`=\active
+ \gdef\lquoteexpand{\catcode\lquoteChar=\active \def`{\codequoteleft}}%
+ %
+ \gdef\quoteexpand{\rquoteexpand \lquoteexpand}%
+\endgroup
+
+% start the verbatim environment.
+\def\setupverbatim{%
+ \let\nonarrowing = t%
+ \nonfillstart
+ % Easiest (and conventionally used) font for verbatim
+ \tt
+ \def\par{\leavevmode\egroup\box0\endgraf}%
+ \catcode`\`=\active
+ \tabexpand
+ \quoteexpand
+ % Respect line breaks,
+ % print special symbols as themselves, and
+ % make each space count
+ % must do in this order:
+ \obeylines \uncatcodespecials \sepspaces
+ \everypar{\starttabbox}%
+}
+
+% Do the @verb magic: verbatim text is quoted by unique
+% delimiter characters. Before first delimiter expect a
+% right brace, after last delimiter expect closing brace:
+%
+% \def\doverb'{'<char>#1<char>'}'{#1}
+%
+% [Knuth] p. 382; only eat outer {}
+\begingroup
+ \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
+ \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
+\endgroup
+%
+\def\verb{\begingroup\setupverb\doverb}
+%
+%
+% Do the @verbatim magic: define the macro \doverbatim so that
+% the (first) argument ends when '@end verbatim' is reached, ie:
+%
+% \def\doverbatim#1@end verbatim{#1}
+%
+% For Texinfo it's a lot easier than for LaTeX,
+% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
+% we need not redefine '\', '{' and '}'.
+%
+% Inspired by LaTeX's verbatim command set [latex.ltx]
+%
+\begingroup
+ \catcode`\ =\active
+ \obeylines %
+ % ignore everything up to the first ^^M, that's the newline at the end
+ % of the @verbatim input line itself. Otherwise we get an extra blank
+ % line in the output.
+ \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}%
+ % We really want {...\end verbatim} in the body of the macro, but
+ % without the active space; thus we have to use \xdef and \gobble.
+\endgroup
+%
+\envdef\verbatim{%
+ \setupverbatim\doverbatim
+}
+\let\Everbatim = \afterenvbreak
+
+
+% @verbatiminclude FILE - insert text of file in verbatim environment.
+%
+\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
+%
+\def\doverbatiminclude#1{%
+ {%
+ \makevalueexpandable
+ \setupverbatim
+ \input #1
+ \afterenvbreak
+ }%
+}
+
+% @copying ... @end copying.
+% Save the text away for @insertcopying later.
+%
+% We save the uninterpreted tokens, rather than creating a box.
+% Saving the text in a box would be much easier, but then all the
+% typesetting commands (@smallbook, font changes, etc.) have to be done
+% beforehand -- and a) we want @copying to be done first in the source
+% file; b) letting users define the frontmatter in as flexible order as
+% possible is very desirable.
+%
+\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
+\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
+%
+\def\insertcopying{%
+ \begingroup
+ \parindent = 0pt % paragraph indentation looks wrong on title page
+ \scanexp\copyingtext
+ \endgroup
+}
+
+
+\message{defuns,}
+% @defun etc.
+
+\newskip\defbodyindent \defbodyindent=.4in
+\newskip\defargsindent \defargsindent=50pt
+\newskip\deflastargmargin \deflastargmargin=18pt
+\newcount\defunpenalty
+
+% Start the processing of @deffn:
+\def\startdefun{%
+ \ifnum\lastpenalty<10000
+ \medbreak
+ \defunpenalty=10003 % Will keep this @deffn together with the
+ % following @def command, see below.
+ \else
+ % If there are two @def commands in a row, we'll have a \nobreak,
+ % which is there to keep the function description together with its
+ % header. But if there's nothing but headers, we need to allow a
+ % break somewhere. Check specifically for penalty 10002, inserted
+ % by \printdefunline, instead of 10000, since the sectioning
+ % commands also insert a nobreak penalty, and we don't want to allow
+ % a break between a section heading and a defun.
+ %
+ % As a minor refinement, we avoid "club" headers by signalling
+ % with penalty of 10003 after the very first @deffn in the
+ % sequence (see above), and penalty of 10002 after any following
+ % @def command.
+ \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
+ %
+ % Similarly, after a section heading, do not allow a break.
+ % But do insert the glue.
+ \medskip % preceded by discardable penalty, so not a breakpoint
+ \fi
+ %
+ \parindent=0in
+ \advance\leftskip by \defbodyindent
+ \exdentamount=\defbodyindent
+}
+
+\def\dodefunx#1{%
+ % First, check whether we are in the right environment:
+ \checkenv#1%
+ %
+ % As above, allow line break if we have multiple x headers in a row.
+ % It's not a great place, though.
+ \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
+ %
+ % And now, it's time to reuse the body of the original defun:
+ \expandafter\gobbledefun#1%
+}
+\def\gobbledefun#1\startdefun{}
+
+% \printdefunline \deffnheader{text}
+%
+\def\printdefunline#1#2{%
+ \begingroup
+ % call \deffnheader:
+ #1#2 \endheader
+ % common ending:
+ \interlinepenalty = 10000
+ \advance\rightskip by 0pt plus 1fil
+ \endgraf
+ \nobreak\vskip -\parskip
+ \penalty\defunpenalty % signal to \startdefun and \dodefunx
+ % Some of the @defun-type tags do not enable magic parentheses,
+ % rendering the following check redundant. But we don't optimize.
+ \checkparencounts
+ \endgroup
+}
+
+\def\Edefun{\endgraf\medbreak}
+
+% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
+% the only thing remaining is to define \deffnheader.
+%
+\def\makedefun#1{%
+ \expandafter\let\csname E#1\endcsname = \Edefun
+ \edef\temp{\noexpand\domakedefun
+ \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
+ \temp
+}
+
+% \domakedefun \deffn \deffnx \deffnheader
+%
+% Define \deffn and \deffnx, without parameters.
+% \deffnheader has to be defined explicitly.
+%
+\def\domakedefun#1#2#3{%
+ \envdef#1{%
+ \startdefun
+ \parseargusing\activeparens{\printdefunline#3}%
+ }%
+ \def#2{\dodefunx#1}%
+ \def#3%
+}
+
+%%% Untyped functions:
+
+% @deffn category name args
+\makedefun{deffn}{\deffngeneral{}}
+
+% @deffn category class name args
+\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
+
+% \defopon {category on}class name args
+\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deffngeneral {subind}category name args
+%
+\def\deffngeneral#1#2 #3 #4\endheader{%
+ % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
+ \dosubind{fn}{\code{#3}}{#1}%
+ \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
+}
+
+%%% Typed functions:
+
+% @deftypefn category type name args
+\makedefun{deftypefn}{\deftypefngeneral{}}
+
+% @deftypeop category class type name args
+\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
+
+% \deftypeopon {category on}class type name args
+\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypefngeneral {subind}category type name args
+%
+\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
+ \dosubind{fn}{\code{#4}}{#1}%
+ \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+%%% Typed variables:
+
+% @deftypevr category type var args
+\makedefun{deftypevr}{\deftypecvgeneral{}}
+
+% @deftypecv category class type var args
+\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
+
+% \deftypecvof {category of}class type var args
+\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypecvgeneral {subind}category type var args
+%
+\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
+ \dosubind{vr}{\code{#4}}{#1}%
+ \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+%%% Untyped variables:
+
+% @defvr category var args
+\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
+
+% @defcv category class var args
+\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
+
+% \defcvof {category of}class var args
+\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
+
+%%% Type:
+% @deftp category name args
+\makedefun{deftp}#1 #2 #3\endheader{%
+ \doind{tp}{\code{#2}}%
+ \defname{#1}{}{#2}\defunargs{#3\unskip}%
+}
+
+% Remaining @defun-like shortcuts:
+\makedefun{defun}{\deffnheader{\putwordDeffunc} }
+\makedefun{defmac}{\deffnheader{\putwordDefmac} }
+\makedefun{defspec}{\deffnheader{\putwordDefspec} }
+\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
+\makedefun{defvar}{\defvrheader{\putwordDefvar} }
+\makedefun{defopt}{\defvrheader{\putwordDefopt} }
+\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
+\makedefun{defmethod}{\defopon\putwordMethodon}
+\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
+\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
+\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
+
+% \defname, which formats the name of the @def (not the args).
+% #1 is the category, such as "Function".
+% #2 is the return type, if any.
+% #3 is the function name.
+%
+% We are followed by (but not passed) the arguments, if any.
+%
+\def\defname#1#2#3{%
+ % Get the values of \leftskip and \rightskip as they were outside the @def...
+ \advance\leftskip by -\defbodyindent
+ %
+ % How we'll format the type name. Putting it in brackets helps
+ % distinguish it from the body text that may end up on the next line
+ % just below it.
+ \def\temp{#1}%
+ \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
+ %
+ % Figure out line sizes for the paragraph shape.
+ % The first line needs space for \box0; but if \rightskip is nonzero,
+ % we need only space for the part of \box0 which exceeds it:
+ \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip
+ % The continuations:
+ \dimen2=\hsize \advance\dimen2 by -\defargsindent
+ % (plain.tex says that \dimen1 should be used only as global.)
+ \parshape 2 0in \dimen0 \defargsindent \dimen2
+ %
+ % Put the type name to the right margin.
+ \noindent
+ \hbox to 0pt{%
+ \hfil\box0 \kern-\hsize
+ % \hsize has to be shortened this way:
+ \kern\leftskip
+ % Intentionally do not respect \rightskip, since we need the space.
+ }%
+ %
+ % Allow all lines to be underfull without complaint:
+ \tolerance=10000 \hbadness=10000
+ \exdentamount=\defbodyindent
+ {%
+ % defun fonts. We use typewriter by default (used to be bold) because:
+ % . we're printing identifiers, they should be in tt in principle.
+ % . in languages with many accents, such as Czech or French, it's
+ % common to leave accents off identifiers. The result looks ok in
+ % tt, but exceedingly strange in rm.
+ % . we don't want -- and --- to be treated as ligatures.
+ % . this still does not fix the ?` and !` ligatures, but so far no
+ % one has made identifiers using them :).
+ \df \tt
+ \def\temp{#2}% return value type
+ \ifx\temp\empty\else \tclose{\temp} \fi
+ #3% output function name
+ }%
+ {\rm\enskip}% hskip 0.5 em of \tenrm
+ %
+ \boldbrax
+ % arguments will be output next, if any.
+}
+
+% Print arguments in slanted roman (not ttsl), inconsistently with using
+% tt for the name. This is because literal text is sometimes needed in
+% the argument list (groff manual), and ttsl and tt are not very
+% distinguishable. Prevent hyphenation at `-' chars.
+%
+\def\defunargs#1{%
+ % use sl by default (not ttsl),
+ % tt for the names.
+ \df \sl \hyphenchar\font=0
+ %
+ % On the other hand, if an argument has two dashes (for instance), we
+ % want a way to get ttsl. Let's try @var for that.
+ \let\var=\ttslanted
+ #1%
+ \sl\hyphenchar\font=45
+}
+
+% We want ()&[] to print specially on the defun line.
+%
+\def\activeparens{%
+ \catcode`\(=\active \catcode`\)=\active
+ \catcode`\[=\active \catcode`\]=\active
+ \catcode`\&=\active
+}
+
+% Make control sequences which act like normal parenthesis chars.
+\let\lparen = ( \let\rparen = )
+
+% Be sure that we always have a definition for `(', etc. For example,
+% if the fn name has parens in it, \boldbrax will not be in effect yet,
+% so TeX would otherwise complain about undefined control sequence.
+{
+ \activeparens
+ \global\let(=\lparen \global\let)=\rparen
+ \global\let[=\lbrack \global\let]=\rbrack
+ \global\let& = \&
+
+ \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+ \gdef\magicamp{\let&=\amprm}
+}
+
+\newcount\parencount
+
+% If we encounter &foo, then turn on ()-hacking afterwards
+\newif\ifampseen
+\def\amprm#1 {\ampseentrue{\bf\&#1 }}
+
+\def\parenfont{%
+ \ifampseen
+ % At the first level, print parens in roman,
+ % otherwise use the default font.
+ \ifnum \parencount=1 \rm \fi
+ \else
+ % The \sf parens (in \boldbrax) actually are a little bolder than
+ % the contained text. This is especially needed for [ and ] .
+ \sf
+ \fi
+}
+\def\infirstlevel#1{%
+ \ifampseen
+ \ifnum\parencount=1
+ #1%
+ \fi
+ \fi
+}
+\def\bfafterword#1 {#1 \bf}
+
+\def\opnr{%
+ \global\advance\parencount by 1
+ {\parenfont(}%
+ \infirstlevel \bfafterword
+}
+\def\clnr{%
+ {\parenfont)}%
+ \infirstlevel \sl
+ \global\advance\parencount by -1
+}
+
+\newcount\brackcount
+\def\lbrb{%
+ \global\advance\brackcount by 1
+ {\bf[}%
+}
+\def\rbrb{%
+ {\bf]}%
+ \global\advance\brackcount by -1
+}
+
+\def\checkparencounts{%
+ \ifnum\parencount=0 \else \badparencount \fi
+ \ifnum\brackcount=0 \else \badbrackcount \fi
+}
+% these should not use \errmessage; the glibc manual, at least, actually
+% has such constructs (when documenting function pointers).
+\def\badparencount{%
+ \message{Warning: unbalanced parentheses in @def...}%
+ \global\parencount=0
+}
+\def\badbrackcount{%
+ \message{Warning: unbalanced square brackets in @def...}%
+ \global\brackcount=0
+}
+
+
+\message{macros,}
+% @macro.
+
+% To do this right we need a feature of e-TeX, \scantokens,
+% which we arrange to emulate with a temporary file in ordinary TeX.
+\ifx\eTeXversion\undefined
+ \newwrite\macscribble
+ \def\scantokens#1{%
+ \toks0={#1}%
+ \immediate\openout\macscribble=\jobname.tmp
+ \immediate\write\macscribble{\the\toks0}%
+ \immediate\closeout\macscribble
+ \input \jobname.tmp
+ }
+\fi
+
+\def\scanmacro#1{%
+ \begingroup
+ \newlinechar`\^^M
+ \let\xeatspaces\eatspaces
+ % Undo catcode changes of \startcontents and \doprintindex
+ % When called from @insertcopying or (short)caption, we need active
+ % backslash to get it printed correctly. Previously, we had
+ % \catcode`\\=\other instead. We'll see whether a problem appears
+ % with macro expansion. --kasal, 19aug04
+ \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+ % ... and \example
+ \spaceisspace
+ %
+ % Append \endinput to make sure that TeX does not see the ending newline.
+ % I've verified that it is necessary both for e-TeX and for ordinary TeX
+ % --kasal, 29nov03
+ \scantokens{#1\endinput}%
+ \endgroup
+}
+
+\def\scanexp#1{%
+ \edef\temp{\noexpand\scanmacro{#1}}%
+ \temp
+}
+
+\newcount\paramno % Count of parameters
+\newtoks\macname % Macro name
+\newif\ifrecursive % Is it recursive?
+
+% List of all defined macros in the form
+% \definedummyword\macro1\definedummyword\macro2...
+% Currently is also contains all @aliases; the list can be split
+% if there is a need.
+\def\macrolist{}
+
+% Add the macro to \macrolist
+\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
+\def\addtomacrolistxxx#1{%
+ \toks0 = \expandafter{\macrolist\definedummyword#1}%
+ \xdef\macrolist{\the\toks0}%
+}
+
+% Utility routines.
+% This does \let #1 = #2, with \csnames; that is,
+% \let \csname#1\endcsname = \csname#2\endcsname
+% (except of course we have to play expansion games).
+%
+\def\cslet#1#2{%
+ \expandafter\let
+ \csname#1\expandafter\endcsname
+ \csname#2\endcsname
+}
+
+% Trim leading and trailing spaces off a string.
+% Concepts from aro-bend problem 15 (see CTAN).
+{\catcode`\@=11
+\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
+\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
+\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
+\def\unbrace#1{#1}
+\unbrace{\gdef\trim@@@ #1 } #2@{#1}
+}
+
+% Trim a single trailing ^^M off a string.
+{\catcode`\^^M=\other \catcode`\Q=3%
+\gdef\eatcr #1{\eatcra #1Q^^MQ}%
+\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
+\gdef\eatcrb#1Q#2Q{#1}%
+}
+
+% Macro bodies are absorbed as an argument in a context where
+% all characters are catcode 10, 11 or 12, except \ which is active
+% (as in normal texinfo). It is necessary to change the definition of \.
+
+% Non-ASCII encodings make 8-bit characters active, so un-activate
+% them to avoid their expansion. Must do this non-globally, to
+% confine the change to the current group.
+
+% It's necessary to have hard CRs when the macro is executed. This is
+% done by making ^^M (\endlinechar) catcode 12 when reading the macro
+% body, and then making it the \newlinechar in \scanmacro.
+
+\def\scanctxt{%
+ \catcode`\"=\other
+ \catcode`\+=\other
+ \catcode`\<=\other
+ \catcode`\>=\other
+ \catcode`\@=\other
+ \catcode`\^=\other
+ \catcode`\_=\other
+ \catcode`\|=\other
+ \catcode`\~=\other
+ \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
+}
+
+\def\scanargctxt{%
+ \scanctxt
+ \catcode`\\=\other
+ \catcode`\^^M=\other
+}
+
+\def\macrobodyctxt{%
+ \scanctxt
+ \catcode`\{=\other
+ \catcode`\}=\other
+ \catcode`\^^M=\other
+ \usembodybackslash
+}
+
+\def\macroargctxt{%
+ \scanctxt
+ \catcode`\\=\other
+}
+
+% \mbodybackslash is the definition of \ in @macro bodies.
+% It maps \foo\ => \csname macarg.foo\endcsname => #N
+% where N is the macro parameter number.
+% We define \csname macarg.\endcsname to be \realbackslash, so
+% \\ in macro replacement text gets you a backslash.
+
+{\catcode`@=0 @catcode`@\=@active
+ @gdef@usembodybackslash{@let\=@mbodybackslash}
+ @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
+}
+\expandafter\def\csname macarg.\endcsname{\realbackslash}
+
+\def\macro{\recursivefalse\parsearg\macroxxx}
+\def\rmacro{\recursivetrue\parsearg\macroxxx}
+
+\def\macroxxx#1{%
+ \getargs{#1}% now \macname is the macname and \argl the arglist
+ \ifx\argl\empty % no arguments
+ \paramno=0%
+ \else
+ \expandafter\parsemargdef \argl;%
+ \fi
+ \if1\csname ismacro.\the\macname\endcsname
+ \message{Warning: redefining \the\macname}%
+ \else
+ \expandafter\ifx\csname \the\macname\endcsname \relax
+ \else \errmessage{Macro name \the\macname\space already defined}\fi
+ \global\cslet{macsave.\the\macname}{\the\macname}%
+ \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
+ \addtomacrolist{\the\macname}%
+ \fi
+ \begingroup \macrobodyctxt
+ \ifrecursive \expandafter\parsermacbody
+ \else \expandafter\parsemacbody
+ \fi}
+
+\parseargdef\unmacro{%
+ \if1\csname ismacro.#1\endcsname
+ \global\cslet{#1}{macsave.#1}%
+ \global\expandafter\let \csname ismacro.#1\endcsname=0%
+ % Remove the macro name from \macrolist:
+ \begingroup
+ \expandafter\let\csname#1\endcsname \relax
+ \let\definedummyword\unmacrodo
+ \xdef\macrolist{\macrolist}%
+ \endgroup
+ \else
+ \errmessage{Macro #1 not defined}%
+ \fi
+}
+
+% Called by \do from \dounmacro on each macro. The idea is to omit any
+% macro definitions that have been changed to \relax.
+%
+\def\unmacrodo#1{%
+ \ifx #1\relax
+ % remove this
+ \else
+ \noexpand\definedummyword \noexpand#1%
+ \fi
+}
+
+% This makes use of the obscure feature that if the last token of a
+% <parameter list> is #, then the preceding argument is delimited by
+% an opening brace, and that opening brace is not consumed.
+\def\getargs#1{\getargsxxx#1{}}
+\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
+\def\getmacname #1 #2\relax{\macname={#1}}
+\def\getmacargs#1{\def\argl{#1}}
+
+% Parse the optional {params} list. Set up \paramno and \paramlist
+% so \defmacro knows what to do. Define \macarg.blah for each blah
+% in the params list, to be ##N where N is the position in that list.
+% That gets used by \mbodybackslash (above).
+
+% We need to get `macro parameter char #' into several definitions.
+% The technique used is stolen from LaTeX: let \hash be something
+% unexpandable, insert that wherever you need a #, and then redefine
+% it to # just before using the token list produced.
+%
+% The same technique is used to protect \eatspaces till just before
+% the macro is used.
+
+\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
+ \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
+\def\parsemargdefxxx#1,{%
+ \if#1;\let\next=\relax
+ \else \let\next=\parsemargdefxxx
+ \advance\paramno by 1%
+ \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
+ {\xeatspaces{\hash\the\paramno}}%
+ \edef\paramlist{\paramlist\hash\the\paramno,}%
+ \fi\next}
+
+% These two commands read recursive and nonrecursive macro bodies.
+% (They're different since rec and nonrec macros end differently.)
+
+\long\def\parsemacbody#1@end macro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\long\def\parsermacbody#1@end rmacro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+
+% This defines the macro itself. There are six cases: recursive and
+% nonrecursive macros of zero, one, and many arguments.
+% Much magic with \expandafter here.
+% \xdef is used so that macro definitions will survive the file
+% they're defined in; @include reads the file inside a group.
+\def\defmacro{%
+ \let\hash=##% convert placeholders to macro parameter chars
+ \ifrecursive
+ \ifcase\paramno
+ % 0
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\scanmacro{\temp}}%
+ \or % 1
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\braceorline
+ \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+ \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+ \egroup\noexpand\scanmacro{\temp}}%
+ \else % many
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname xxx\endcsname
+ \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+ \fi
+ \else
+ \ifcase\paramno
+ % 0
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\norecurse{\the\macname}%
+ \noexpand\scanmacro{\temp}\egroup}%
+ \or % 1
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\braceorline
+ \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+ \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+ \egroup
+ \noexpand\norecurse{\the\macname}%
+ \noexpand\scanmacro{\temp}\egroup}%
+ \else % many
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \expandafter\noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname xxx\endcsname
+ \paramlist{%
+ \egroup
+ \noexpand\norecurse{\the\macname}%
+ \noexpand\scanmacro{\temp}\egroup}%
+ \fi
+ \fi}
+
+\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
+
+% \braceorline decides whether the next nonwhitespace character is a
+% {. If so it reads up to the closing }, if not, it reads the whole
+% line. Whatever was read is then fed to the next control sequence
+% as an argument (by \parsebrace or \parsearg)
+\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
+\def\braceorlinexxx{%
+ \ifx\nchar\bgroup\else
+ \expandafter\parsearg
+ \fi \macnamexxx}
+
+
+% @alias.
+% We need some trickery to remove the optional spaces around the equal
+% sign. Just make them active and then expand them all to nothing.
+\def\alias{\parseargusing\obeyspaces\aliasxxx}
+\def\aliasxxx #1{\aliasyyy#1\relax}
+\def\aliasyyy #1=#2\relax{%
+ {%
+ \expandafter\let\obeyedspace=\empty
+ \addtomacrolist{#1}%
+ \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
+ }%
+ \next
+}
+
+
+\message{cross references,}
+
+\newwrite\auxfile
+\newif\ifhavexrefs % True if xref values are known.
+\newif\ifwarnedxrefs % True if we warned once that they aren't known.
+
+% @inforef is relatively simple.
+\def\inforef #1{\inforefzzz #1,,,,**}
+\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+ node \samp{\ignorespaces#1{}}}
+
+% @node's only job in TeX is to define \lastnode, which is used in
+% cross-references. The @node line might or might not have commas, and
+% might or might not have spaces before the first comma, like:
+% @node foo , bar , ...
+% We don't want such trailing spaces in the node name.
+%
+\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
+%
+% also remove a trailing comma, in case of something like this:
+% @node Help-Cross, , , Cross-refs
+\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
+\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
+
+\let\nwnode=\node
+\let\lastnode=\empty
+
+% Write a cross-reference definition for the current node. #1 is the
+% type (Ynumbered, Yappendix, Ynothing).
+%
+\def\donoderef#1{%
+ \ifx\lastnode\empty\else
+ \setref{\lastnode}{#1}%
+ \global\let\lastnode=\empty
+ \fi
+}
+
+% @anchor{NAME} -- define xref target at arbitrary point.
+%
+\newcount\savesfregister
+%
+\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
+\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
+\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
+
+% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
+% anchor), which consists of three parts:
+% 1) NAME-title - the current sectioning name taken from \lastsection,
+% or the anchor name.
+% 2) NAME-snt - section number and type, passed as the SNT arg, or
+% empty for anchors.
+% 3) NAME-pg - the page number.
+%
+% This is called from \donoderef, \anchor, and \dofloat. In the case of
+% floats, there is an additional part, which is not written here:
+% 4) NAME-lof - the text as it should appear in a @listoffloats.
+%
+\def\setref#1#2{%
+ \pdfmkdest{#1}%
+ \iflinks
+ {%
+ \atdummies % preserve commands, but don't expand them
+ \edef\writexrdef##1##2{%
+ \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
+ ##1}{##2}}% these are parameters of \writexrdef
+ }%
+ \toks0 = \expandafter{\lastsection}%
+ \immediate \writexrdef{title}{\the\toks0 }%
+ \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
+ \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
+ }%
+ \fi
+}
+
+% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
+% the node name, #2 the name of the Info cross-reference, #3 the printed
+% node name, #4 the name of the Info file, #5 the name of the printed
+% manual. All but the node name can be omitted.
+%
+\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
+\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
+\def\ref#1{\xrefX[#1,,,,,,,]}
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
+ \unsepspaces
+ \def\printedmanual{\ignorespaces #5}%
+ \def\printedrefname{\ignorespaces #3}%
+ \setbox1=\hbox{\printedmanual\unskip}%
+ \setbox0=\hbox{\printedrefname\unskip}%
+ \ifdim \wd0 = 0pt
+ % No printed node name was explicitly given.
+ \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
+ % Use the node name inside the square brackets.
+ \def\printedrefname{\ignorespaces #1}%
+ \else
+ % Use the actual chapter/section title appear inside
+ % the square brackets. Use the real section title if we have it.
+ \ifdim \wd1 > 0pt
+ % It is in another manual, so we don't have it.
+ \def\printedrefname{\ignorespaces #1}%
+ \else
+ \ifhavexrefs
+ % We know the real title if we have the xref values.
+ \def\printedrefname{\refx{#1-title}{}}%
+ \else
+ % Otherwise just copy the Info node name.
+ \def\printedrefname{\ignorespaces #1}%
+ \fi%
+ \fi
+ \fi
+ \fi
+ %
+ % Make link in pdf output.
+ \ifpdf
+ {\indexnofonts
+ \turnoffactive
+ % This expands tokens, so do it after making catcode changes, so _
+ % etc. don't get their TeX definitions.
+ \getfilename{#4}%
+ %
+ % See comments at \activebackslashdouble.
+ {\activebackslashdouble \xdef\pdfxrefdest{#1}%
+ \backslashparens\pdfxrefdest}%
+ %
+ \leavevmode
+ \startlink attr{/Border [0 0 0]}%
+ \ifnum\filenamelength>0
+ goto file{\the\filename.pdf} name{\pdfxrefdest}%
+ \else
+ goto name{\pdfmkpgn{\pdfxrefdest}}%
+ \fi
+ }%
+ \setcolor{\linkcolor}%
+ \fi
+ %
+ % Float references are printed completely differently: "Figure 1.2"
+ % instead of "[somenode], p.3". We distinguish them by the
+ % LABEL-title being set to a magic string.
+ {%
+ % Have to otherify everything special to allow the \csname to
+ % include an _ in the xref name, etc.
+ \indexnofonts
+ \turnoffactive
+ \expandafter\global\expandafter\let\expandafter\Xthisreftitle
+ \csname XR#1-title\endcsname
+ }%
+ \iffloat\Xthisreftitle
+ % If the user specified the print name (third arg) to the ref,
+ % print it instead of our usual "Figure 1.2".
+ \ifdim\wd0 = 0pt
+ \refx{#1-snt}{}%
+ \else
+ \printedrefname
+ \fi
+ %
+ % if the user also gave the printed manual name (fifth arg), append
+ % "in MANUALNAME".
+ \ifdim \wd1 > 0pt
+ \space \putwordin{} \cite{\printedmanual}%
+ \fi
+ \else
+ % node/anchor (non-float) references.
+ %
+ % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
+ % insert empty discretionaries after hyphens, which means that it will
+ % not find a line break at a hyphen in a node names. Since some manuals
+ % are best written with fairly long node names, containing hyphens, this
+ % is a loss. Therefore, we give the text of the node name again, so it
+ % is as if TeX is seeing it for the first time.
+ \ifdim \wd1 > 0pt
+ \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
+ \else
+ % _ (for example) has to be the character _ for the purposes of the
+ % control sequence corresponding to the node, but it has to expand
+ % into the usual \leavevmode...\vrule stuff for purposes of
+ % printing. So we \turnoffactive for the \refx-snt, back on for the
+ % printing, back off for the \refx-pg.
+ {\turnoffactive
+ % Only output a following space if the -snt ref is nonempty; for
+ % @unnumbered and @anchor, it won't be.
+ \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
+ \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
+ }%
+ % output the `[mynode]' via a macro so it can be overridden.
+ \xrefprintnodename\printedrefname
+ %
+ % But we always want a comma and a space:
+ ,\space
+ %
+ % output the `page 3'.
+ \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+ \fi
+ \fi
+ \endlink
+\endgroup}
+
+% This macro is called from \xrefX for the `[nodename]' part of xref
+% output. It's a separate macro only so it can be changed more easily,
+% since square brackets don't work well in some documents. Particularly
+% one that Bob is working on :).
+%
+\def\xrefprintnodename#1{[#1]}
+
+% Things referred to by \setref.
+%
+\def\Ynothing{}
+\def\Yomitfromtoc{}
+\def\Ynumbered{%
+ \ifnum\secno=0
+ \putwordChapter@tie \the\chapno
+ \else \ifnum\subsecno=0
+ \putwordSection@tie \the\chapno.\the\secno
+ \else \ifnum\subsubsecno=0
+ \putwordSection@tie \the\chapno.\the\secno.\the\subsecno
+ \else
+ \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
+ \fi\fi\fi
+}
+\def\Yappendix{%
+ \ifnum\secno=0
+ \putwordAppendix@tie @char\the\appendixno{}%
+ \else \ifnum\subsecno=0
+ \putwordSection@tie @char\the\appendixno.\the\secno
+ \else \ifnum\subsubsecno=0
+ \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno
+ \else
+ \putwordSection@tie
+ @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
+ \fi\fi\fi
+}
+
+% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
+% If its value is nonempty, SUFFIX is output afterward.
+%
+\def\refx#1#2{%
+ {%
+ \indexnofonts
+ \otherbackslash
+ \expandafter\global\expandafter\let\expandafter\thisrefX
+ \csname XR#1\endcsname
+ }%
+ \ifx\thisrefX\relax
+ % If not defined, say something at least.
+ \angleleft un\-de\-fined\angleright
+ \iflinks
+ \ifhavexrefs
+ \message{\linenumber Undefined cross reference `#1'.}%
+ \else
+ \ifwarnedxrefs\else
+ \global\warnedxrefstrue
+ \message{Cross reference values unknown; you must run TeX again.}%
+ \fi
+ \fi
+ \fi
+ \else
+ % It's defined, so just use it.
+ \thisrefX
+ \fi
+ #2% Output the suffix in any case.
+}
+
+% This is the macro invoked by entries in the aux file. Usually it's
+% just a \def (we prepend XR to the control sequence name to avoid
+% collisions). But if this is a float type, we have more work to do.
+%
+\def\xrdef#1#2{%
+ {% The node name might contain 8-bit characters, which in our current
+ % implementation are changed to commands like @'e. Don't let these
+ % mess up the control sequence name.
+ \indexnofonts
+ \turnoffactive
+ \xdef\safexrefname{#1}%
+ }%
+ %
+ \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
+ %
+ % Was that xref control sequence that we just defined for a float?
+ \expandafter\iffloat\csname XR\safexrefname\endcsname
+ % it was a float, and we have the (safe) float type in \iffloattype.
+ \expandafter\let\expandafter\floatlist
+ \csname floatlist\iffloattype\endcsname
+ %
+ % Is this the first time we've seen this float type?
+ \expandafter\ifx\floatlist\relax
+ \toks0 = {\do}% yes, so just \do
+ \else
+ % had it before, so preserve previous elements in list.
+ \toks0 = \expandafter{\floatlist\do}%
+ \fi
+ %
+ % Remember this xref in the control sequence \floatlistFLOATTYPE,
+ % for later use in \listoffloats.
+ \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
+ {\safexrefname}}%
+ \fi
+}
+
+% Read the last existing aux file, if any. No error if none exists.
+%
+\def\tryauxfile{%
+ \openin 1 \jobname.aux
+ \ifeof 1 \else
+ \readdatafile{aux}%
+ \global\havexrefstrue
+ \fi
+ \closein 1
+}
+
+\def\setupdatafile{%
+ \catcode`\^^@=\other
+ \catcode`\^^A=\other
+ \catcode`\^^B=\other
+ \catcode`\^^C=\other
+ \catcode`\^^D=\other
+ \catcode`\^^E=\other
+ \catcode`\^^F=\other
+ \catcode`\^^G=\other
+ \catcode`\^^H=\other
+ \catcode`\^^K=\other
+ \catcode`\^^L=\other
+ \catcode`\^^N=\other
+ \catcode`\^^P=\other
+ \catcode`\^^Q=\other
+ \catcode`\^^R=\other
+ \catcode`\^^S=\other
+ \catcode`\^^T=\other
+ \catcode`\^^U=\other
+ \catcode`\^^V=\other
+ \catcode`\^^W=\other
+ \catcode`\^^X=\other
+ \catcode`\^^Z=\other
+ \catcode`\^^[=\other
+ \catcode`\^^\=\other
+ \catcode`\^^]=\other
+ \catcode`\^^^=\other
+ \catcode`\^^_=\other
+ % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
+ % in xref tags, i.e., node names. But since ^^e4 notation isn't
+ % supported in the main text, it doesn't seem desirable. Furthermore,
+ % that is not enough: for node names that actually contain a ^
+ % character, we would end up writing a line like this: 'xrdef {'hat
+ % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
+ % argument, and \hat is not an expandable control sequence. It could
+ % all be worked out, but why? Either we support ^^ or we don't.
+ %
+ % The other change necessary for this was to define \auxhat:
+ % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
+ % and then to call \auxhat in \setq.
+ %
+ \catcode`\^=\other
+ %
+ % Special characters. Should be turned off anyway, but...
+ \catcode`\~=\other
+ \catcode`\[=\other
+ \catcode`\]=\other
+ \catcode`\"=\other
+ \catcode`\_=\other
+ \catcode`\|=\other
+ \catcode`\<=\other
+ \catcode`\>=\other
+ \catcode`\$=\other
+ \catcode`\#=\other
+ \catcode`\&=\other
+ \catcode`\%=\other
+ \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
+ %
+ % This is to support \ in node names and titles, since the \
+ % characters end up in a \csname. It's easier than
+ % leaving it active and making its active definition an actual \
+ % character. What I don't understand is why it works in the *value*
+ % of the xrdef. Seems like it should be a catcode12 \, and that
+ % should not typeset properly. But it works, so I'm moving on for
+ % now. --karl, 15jan04.
+ \catcode`\\=\other
+ %
+ % Make the characters 128-255 be printing characters.
+ {%
+ \count1=128
+ \def\loop{%
+ \catcode\count1=\other
+ \advance\count1 by 1
+ \ifnum \count1<256 \loop \fi
+ }%
+ }%
+ %
+ % @ is our escape character in .aux files, and we need braces.
+ \catcode`\{=1
+ \catcode`\}=2
+ \catcode`\@=0
+}
+
+\def\readdatafile#1{%
+\begingroup
+ \setupdatafile
+ \input\jobname.#1
+\endgroup}
+
+
+\message{insertions,}
+% including footnotes.
+
+\newcount \footnoteno
+
+% The trailing space in the following definition for supereject is
+% vital for proper filling; pages come out unaligned when you do a
+% pagealignmacro call if that space before the closing brace is
+% removed. (Generally, numeric constants should always be followed by a
+% space to prevent strange expansion errors.)
+\def\supereject{\par\penalty -20000\footnoteno =0 }
+
+% @footnotestyle is meaningful for info output only.
+\let\footnotestyle=\comment
+
+{\catcode `\@=11
+%
+% Auto-number footnotes. Otherwise like plain.
+\gdef\footnote{%
+ \let\indent=\ptexindent
+ \let\noindent=\ptexnoindent
+ \global\advance\footnoteno by \@ne
+ \edef\thisfootno{$^{\the\footnoteno}$}%
+ %
+ % In case the footnote comes at the end of a sentence, preserve the
+ % extra spacing after we do the footnote number.
+ \let\@sf\empty
+ \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
+ %
+ % Remove inadvertent blank space before typesetting the footnote number.
+ \unskip
+ \thisfootno\@sf
+ \dofootnote
+}%
+
+% Don't bother with the trickery in plain.tex to not require the
+% footnote text as a parameter. Our footnotes don't need to be so general.
+%
+% Oh yes, they do; otherwise, @ifset (and anything else that uses
+% \parseargline) fails inside footnotes because the tokens are fixed when
+% the footnote is read. --karl, 16nov96.
+%
+\gdef\dofootnote{%
+ \insert\footins\bgroup
+ % We want to typeset this text as a normal paragraph, even if the
+ % footnote reference occurs in (for example) a display environment.
+ % So reset some parameters.
+ \hsize=\pagewidth
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\ht\strutbox % top baseline for broken footnotes
+ \splitmaxdepth\dp\strutbox
+ \floatingpenalty\@MM
+ \leftskip\z@skip
+ \rightskip\z@skip
+ \spaceskip\z@skip
+ \xspaceskip\z@skip
+ \parindent\defaultparindent
+ %
+ \smallfonts \rm
+ %
+ % Because we use hanging indentation in footnotes, a @noindent appears
+ % to exdent this text, so make it be a no-op. makeinfo does not use
+ % hanging indentation so @noindent can still be needed within footnote
+ % text after an @example or the like (not that this is good style).
+ \let\noindent = \relax
+ %
+ % Hang the footnote text off the number. Use \everypar in case the
+ % footnote extends for more than one paragraph.
+ \everypar = {\hang}%
+ \textindent{\thisfootno}%
+ %
+ % Don't crash into the line above the footnote text. Since this
+ % expands into a box, it must come within the paragraph, lest it
+ % provide a place where TeX can split the footnote.
+ \footstrut
+ \futurelet\next\fo@t
+}
+}%end \catcode `\@=11
+
+% In case a @footnote appears in a vbox, save the footnote text and create
+% the real \insert just after the vbox finished. Otherwise, the insertion
+% would be lost.
+% Similarly, if a @footnote appears inside an alignment, save the footnote
+% text to a box and make the \insert when a row of the table is finished.
+% And the same can be done for other insert classes. --kasal, 16nov03.
+
+% Replace the \insert primitive by a cheating macro.
+% Deeper inside, just make sure that the saved insertions are not spilled
+% out prematurely.
+%
+\def\startsavinginserts{%
+ \ifx \insert\ptexinsert
+ \let\insert\saveinsert
+ \else
+ \let\checkinserts\relax
+ \fi
+}
+
+% This \insert replacement works for both \insert\footins{foo} and
+% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
+%
+\def\saveinsert#1{%
+ \edef\next{\noexpand\savetobox \makeSAVEname#1}%
+ \afterassignment\next
+ % swallow the left brace
+ \let\temp =
+}
+\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
+\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
+
+\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
+
+\def\placesaveins#1{%
+ \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
+ {\box#1}%
+}
+
+% eat @SAVE -- beware, all of them have catcode \other:
+{
+ \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-)
+ \gdef\gobblesave @SAVE{}
+}
+
+% initialization:
+\def\newsaveins #1{%
+ \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
+ \next
+}
+\def\newsaveinsX #1{%
+ \csname newbox\endcsname #1%
+ \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
+ \checksaveins #1}%
+}
+
+% initialize:
+\let\checkinserts\empty
+\newsaveins\footins
+\newsaveins\margin
+
+
+% @image. We use the macros from epsf.tex to support this.
+% If epsf.tex is not installed and @image is used, we complain.
+%
+% Check for and read epsf.tex up front. If we read it only at @image
+% time, we might be inside a group, and then its definitions would get
+% undone and the next image would fail.
+\openin 1 = epsf.tex
+\ifeof 1 \else
+ % Do not bother showing banner with epsf.tex v2.7k (available in
+ % doc/epsf.tex and on ctan).
+ \def\epsfannounce{\toks0 = }%
+ \input epsf.tex
+\fi
+\closein 1
+%
+% We will only complain once about lack of epsf.tex.
+\newif\ifwarnednoepsf
+\newhelp\noepsfhelp{epsf.tex must be installed for images to
+ work. It is also included in the Texinfo distribution, or you can get
+ it from ftp://tug.org/tex/epsf.tex.}
+%
+\def\image#1{%
+ \ifx\epsfbox\undefined
+ \ifwarnednoepsf \else
+ \errhelp = \noepsfhelp
+ \errmessage{epsf.tex not found, images will be ignored}%
+ \global\warnednoepsftrue
+ \fi
+ \else
+ \imagexxx #1,,,,,\finish
+ \fi
+}
+%
+% Arguments to @image:
+% #1 is (mandatory) image filename; we tack on .eps extension.
+% #2 is (optional) width, #3 is (optional) height.
+% #4 is (ignored optional) html alt text.
+% #5 is (ignored optional) extension.
+% #6 is just the usual extra ignored arg for parsing this stuff.
+\newif\ifimagevmode
+\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
+ \catcode`\^^M = 5 % in case we're inside an example
+ \normalturnoffactive % allow _ et al. in names
+ % If the image is by itself, center it.
+ \ifvmode
+ \imagevmodetrue
+ \nobreak\medskip
+ % Usually we'll have text after the image which will insert
+ % \parskip glue, so insert it here too to equalize the space
+ % above and below.
+ \nobreak\vskip\parskip
+ \nobreak
+ \fi
+ %
+ % Leave vertical mode so that indentation from an enclosing
+ % environment such as @quotation is respected. On the other hand, if
+ % it's at the top level, we don't want the normal paragraph indentation.
+ \noindent
+ %
+ % Output the image.
+ \ifpdf
+ \dopdfimage{#1}{#2}{#3}%
+ \else
+ % \epsfbox itself resets \epsf?size at each figure.
+ \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
+ \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
+ \epsfbox{#1.eps}%
+ \fi
+ %
+ \ifimagevmode \medskip \fi % space after the standalone image
+\endgroup}
+
+
+% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
+% etc. We don't actually implement floating yet, we always include the
+% float "here". But it seemed the best name for the future.
+%
+\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
+
+% There may be a space before second and/or third parameter; delete it.
+\def\eatcommaspace#1, {#1,}
+
+% #1 is the optional FLOATTYPE, the text label for this float, typically
+% "Figure", "Table", "Example", etc. Can't contain commas. If omitted,
+% this float will not be numbered and cannot be referred to.
+%
+% #2 is the optional xref label. Also must be present for the float to
+% be referable.
+%
+% #3 is the optional positioning argument; for now, it is ignored. It
+% will somehow specify the positions allowed to float to (here, top, bottom).
+%
+% We keep a separate counter for each FLOATTYPE, which we reset at each
+% chapter-level command.
+\let\resetallfloatnos=\empty
+%
+\def\dofloat#1,#2,#3,#4\finish{%
+ \let\thiscaption=\empty
+ \let\thisshortcaption=\empty
+ %
+ % don't lose footnotes inside @float.
+ %
+ % BEWARE: when the floats start float, we have to issue warning whenever an
+ % insert appears inside a float which could possibly float. --kasal, 26may04
+ %
+ \startsavinginserts
+ %
+ % We can't be used inside a paragraph.
+ \par
+ %
+ \vtop\bgroup
+ \def\floattype{#1}%
+ \def\floatlabel{#2}%
+ \def\floatloc{#3}% we do nothing with this yet.
+ %
+ \ifx\floattype\empty
+ \let\safefloattype=\empty
+ \else
+ {%
+ % the floattype might have accents or other special characters,
+ % but we need to use it in a control sequence name.
+ \indexnofonts
+ \turnoffactive
+ \xdef\safefloattype{\floattype}%
+ }%
+ \fi
+ %
+ % If label is given but no type, we handle that as the empty type.
+ \ifx\floatlabel\empty \else
+ % We want each FLOATTYPE to be numbered separately (Figure 1,
+ % Table 1, Figure 2, ...). (And if no label, no number.)
+ %
+ \expandafter\getfloatno\csname\safefloattype floatno\endcsname
+ \global\advance\floatno by 1
+ %
+ {%
+ % This magic value for \lastsection is output by \setref as the
+ % XREFLABEL-title value. \xrefX uses it to distinguish float
+ % labels (which have a completely different output format) from
+ % node and anchor labels. And \xrdef uses it to construct the
+ % lists of floats.
+ %
+ \edef\lastsection{\floatmagic=\safefloattype}%
+ \setref{\floatlabel}{Yfloat}%
+ }%
+ \fi
+ %
+ % start with \parskip glue, I guess.
+ \vskip\parskip
+ %
+ % Don't suppress indentation if a float happens to start a section.
+ \restorefirstparagraphindent
+}
+
+% we have these possibilities:
+% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
+% @float Foo,lbl & no caption: Foo 1.1
+% @float Foo & @caption{Cap}: Foo: Cap
+% @float Foo & no caption: Foo
+% @float ,lbl & Caption{Cap}: 1.1: Cap
+% @float ,lbl & no caption: 1.1
+% @float & @caption{Cap}: Cap
+% @float & no caption:
+%
+\def\Efloat{%
+ \let\floatident = \empty
+ %
+ % In all cases, if we have a float type, it comes first.
+ \ifx\floattype\empty \else \def\floatident{\floattype}\fi
+ %
+ % If we have an xref label, the number comes next.
+ \ifx\floatlabel\empty \else
+ \ifx\floattype\empty \else % if also had float type, need tie first.
+ \appendtomacro\floatident{\tie}%
+ \fi
+ % the number.
+ \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
+ \fi
+ %
+ % Start the printed caption with what we've constructed in
+ % \floatident, but keep it separate; we need \floatident again.
+ \let\captionline = \floatident
+ %
+ \ifx\thiscaption\empty \else
+ \ifx\floatident\empty \else
+ \appendtomacro\captionline{: }% had ident, so need a colon between
+ \fi
+ %
+ % caption text.
+ \appendtomacro\captionline{\scanexp\thiscaption}%
+ \fi
+ %
+ % If we have anything to print, print it, with space before.
+ % Eventually this needs to become an \insert.
+ \ifx\captionline\empty \else
+ \vskip.5\parskip
+ \captionline
+ %
+ % Space below caption.
+ \vskip\parskip
+ \fi
+ %
+ % If have an xref label, write the list of floats info. Do this
+ % after the caption, to avoid chance of it being a breakpoint.
+ \ifx\floatlabel\empty \else
+ % Write the text that goes in the lof to the aux file as
+ % \floatlabel-lof. Besides \floatident, we include the short
+ % caption if specified, else the full caption if specified, else nothing.
+ {%
+ \atdummies
+ %
+ % since we read the caption text in the macro world, where ^^M
+ % is turned into a normal character, we have to scan it back, so
+ % we don't write the literal three characters "^^M" into the aux file.
+ \scanexp{%
+ \xdef\noexpand\gtemp{%
+ \ifx\thisshortcaption\empty
+ \thiscaption
+ \else
+ \thisshortcaption
+ \fi
+ }%
+ }%
+ \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
+ \ifx\gtemp\empty \else : \gtemp \fi}}%
+ }%
+ \fi
+ \egroup % end of \vtop
+ %
+ % place the captured inserts
+ %
+ % BEWARE: when the floats start floating, we have to issue warning
+ % whenever an insert appears inside a float which could possibly
+ % float. --kasal, 26may04
+ %
+ \checkinserts
+}
+
+% Append the tokens #2 to the definition of macro #1, not expanding either.
+%
+\def\appendtomacro#1#2{%
+ \expandafter\def\expandafter#1\expandafter{#1#2}%
+}
+
+% @caption, @shortcaption
+%
+\def\caption{\docaption\thiscaption}
+\def\shortcaption{\docaption\thisshortcaption}
+\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
+\def\defcaption#1#2{\egroup \def#1{#2}}
+
+% The parameter is the control sequence identifying the counter we are
+% going to use. Create it if it doesn't exist and assign it to \floatno.
+\def\getfloatno#1{%
+ \ifx#1\relax
+ % Haven't seen this figure type before.
+ \csname newcount\endcsname #1%
+ %
+ % Remember to reset this floatno at the next chap.
+ \expandafter\gdef\expandafter\resetallfloatnos
+ \expandafter{\resetallfloatnos #1=0 }%
+ \fi
+ \let\floatno#1%
+}
+
+% \setref calls this to get the XREFLABEL-snt value. We want an @xref
+% to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we
+% first read the @float command.
+%
+\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}%
+
+% Magic string used for the XREFLABEL-title value, so \xrefX can
+% distinguish floats from other xref types.
+\def\floatmagic{!!float!!}
+
+% #1 is the control sequence we are passed; we expand into a conditional
+% which is true if #1 represents a float ref. That is, the magic
+% \lastsection value which we \setref above.
+%
+\def\iffloat#1{\expandafter\doiffloat#1==\finish}
+%
+% #1 is (maybe) the \floatmagic string. If so, #2 will be the
+% (safe) float type for this float. We set \iffloattype to #2.
+%
+\def\doiffloat#1=#2=#3\finish{%
+ \def\temp{#1}%
+ \def\iffloattype{#2}%
+ \ifx\temp\floatmagic
+}
+
+% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
+%
+\parseargdef\listoffloats{%
+ \def\floattype{#1}% floattype
+ {%
+ % the floattype might have accents or other special characters,
+ % but we need to use it in a control sequence name.
+ \indexnofonts
+ \turnoffactive
+ \xdef\safefloattype{\floattype}%
+ }%
+ %
+ % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
+ \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
+ \ifhavexrefs
+ % if the user said @listoffloats foo but never @float foo.
+ \message{\linenumber No `\safefloattype' floats to list.}%
+ \fi
+ \else
+ \begingroup
+ \leftskip=\tocindent % indent these entries like a toc
+ \let\do=\listoffloatsdo
+ \csname floatlist\safefloattype\endcsname
+ \endgroup
+ \fi
+}
+
+% This is called on each entry in a list of floats. We're passed the
+% xref label, in the form LABEL-title, which is how we save it in the
+% aux file. We strip off the -title and look up \XRLABEL-lof, which
+% has the text we're supposed to typeset here.
+%
+% Figures without xref labels will not be included in the list (since
+% they won't appear in the aux file).
+%
+\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
+\def\listoffloatsdoentry#1-title\finish{{%
+ % Can't fully expand XR#1-lof because it can contain anything. Just
+ % pass the control sequence. On the other hand, XR#1-pg is just the
+ % page number, and we want to fully expand that so we can get a link
+ % in pdf output.
+ \toksA = \expandafter{\csname XR#1-lof\endcsname}%
+ %
+ % use the same \entry macro we use to generate the TOC and index.
+ \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
+ \writeentry
+}}
+
+
+\message{localization,}
+
+% @documentlanguage is usually given very early, just after
+% @setfilename. If done too late, it may not override everything
+% properly. Single argument is the language (de) or locale (de_DE)
+% abbreviation. It would be nice if we could set up a hyphenation file.
+%
+{
+ \catcode`\_ = \active
+ \globaldefs=1
+\parseargdef\documentlanguage{\begingroup
+ \let_=\normalunderscore % normal _ character for filenames
+ \tex % read txi-??.tex file in plain TeX.
+ % Read the file by the name they passed if it exists.
+ \openin 1 txi-#1.tex
+ \ifeof 1
+ \documentlanguagetrywithoutunderscore{#1_\finish}%
+ \else
+ \input txi-#1.tex
+ \fi
+ \closein 1
+ \endgroup
+\endgroup}
+}
+%
+% If they passed de_DE, and txi-de_DE.tex doesn't exist,
+% try txi-de.tex.
+%
+\def\documentlanguagetrywithoutunderscore#1_#2\finish{%
+ \openin 1 txi-#1.tex
+ \ifeof 1
+ \errhelp = \nolanghelp
+ \errmessage{Cannot read language file txi-#1.tex}%
+ \else
+ \input txi-#1.tex
+ \fi
+ \closein 1
+}
+%
+\newhelp\nolanghelp{The given language definition file cannot be found or
+is empty. Maybe you need to install it? In the current directory
+should work if nowhere else does.}
+
+% Set the catcode of characters 128 through 255 to the specified number.
+%
+\def\setnonasciicharscatcode#1{%
+ \count255=128
+ \loop\ifnum\count255<256
+ \global\catcode\count255=#1\relax
+ \advance\count255 by 1
+ \repeat
+}
+
+\def\setnonasciicharscatcodenonglobal#1{%
+ \count255=128
+ \loop\ifnum\count255<256
+ \catcode\count255=#1\relax
+ \advance\count255 by 1
+ \repeat
+}
+
+% @documentencoding sets the definition of non-ASCII characters
+% according to the specified encoding.
+%
+\parseargdef\documentencoding{%
+ % Encoding being declared for the document.
+ \def\declaredencoding{\csname #1.enc\endcsname}%
+ %
+ % Supported encodings: names converted to tokens in order to be able
+ % to compare them with \ifx.
+ \def\ascii{\csname US-ASCII.enc\endcsname}%
+ \def\latnine{\csname ISO-8859-15.enc\endcsname}%
+ \def\latone{\csname ISO-8859-1.enc\endcsname}%
+ \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
+ \def\utfeight{\csname UTF-8.enc\endcsname}%
+ %
+ \ifx \declaredencoding \ascii
+ \asciichardefs
+ %
+ \else \ifx \declaredencoding \lattwo
+ \setnonasciicharscatcode\active
+ \lattwochardefs
+ %
+ \else \ifx \declaredencoding \latone
+ \setnonasciicharscatcode\active
+ \latonechardefs
+ %
+ \else \ifx \declaredencoding \latnine
+ \setnonasciicharscatcode\active
+ \latninechardefs
+ %
+ \else \ifx \declaredencoding \utfeight
+ \setnonasciicharscatcode\active
+ \utfeightchardefs
+ %
+ \else
+ \message{Unknown document encoding #1, ignoring.}%
+ %
+ \fi % utfeight
+ \fi % latnine
+ \fi % latone
+ \fi % lattwo
+ \fi % ascii
+}
+
+% A message to be logged when using a character that isn't available
+% the default font encoding (OT1).
+%
+\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
+
+% Take account of \c (plain) vs. \, (Texinfo) difference.
+\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
+
+% First, make active non-ASCII characters in order for them to be
+% correctly categorized when TeX reads the replacement text of
+% macros containing the character definitions.
+\setnonasciicharscatcode\active
+%
+% Latin1 (ISO-8859-1) character definitions.
+\def\latonechardefs{%
+ \gdef^^a0{~}
+ \gdef^^a1{\exclamdown}
+ \gdef^^a2{\missingcharmsg{CENT SIGN}}
+ \gdef^^a3{{\pounds}}
+ \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+ \gdef^^a5{\missingcharmsg{YEN SIGN}}
+ \gdef^^a6{\missingcharmsg{BROKEN BAR}}
+ \gdef^^a7{\S}
+ \gdef^^a8{\"{}}
+ \gdef^^a9{\copyright}
+ \gdef^^aa{\ordf}
+ \gdef^^ab{\missingcharmsg{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK}}
+ \gdef^^ac{$\lnot$}
+ \gdef^^ad{\-}
+ \gdef^^ae{\registeredsymbol}
+ \gdef^^af{\={}}
+ %
+ \gdef^^b0{\textdegree}
+ \gdef^^b1{$\pm$}
+ \gdef^^b2{$^2$}
+ \gdef^^b3{$^3$}
+ \gdef^^b4{\'{}}
+ \gdef^^b5{$\mu$}
+ \gdef^^b6{\P}
+ %
+ \gdef^^b7{$^.$}
+ \gdef^^b8{\cedilla\ }
+ \gdef^^b9{$^1$}
+ \gdef^^ba{\ordm}
+ %
+ \gdef^^bb{\missingcharmsg{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK}}
+ \gdef^^bc{$1\over4$}
+ \gdef^^bd{$1\over2$}
+ \gdef^^be{$3\over4$}
+ \gdef^^bf{\questiondown}
+ %
+ \gdef^^c0{\`A}
+ \gdef^^c1{\'A}
+ \gdef^^c2{\^A}
+ \gdef^^c3{\~A}
+ \gdef^^c4{\"A}
+ \gdef^^c5{\ringaccent A}
+ \gdef^^c6{\AE}
+ \gdef^^c7{\cedilla C}
+ \gdef^^c8{\`E}
+ \gdef^^c9{\'E}
+ \gdef^^ca{\^E}
+ \gdef^^cb{\"E}
+ \gdef^^cc{\`I}
+ \gdef^^cd{\'I}
+ \gdef^^ce{\^I}
+ \gdef^^cf{\"I}
+ %
+ \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER ETH}}
+ \gdef^^d1{\~N}
+ \gdef^^d2{\`O}
+ \gdef^^d3{\'O}
+ \gdef^^d4{\^O}
+ \gdef^^d5{\~O}
+ \gdef^^d6{\"O}
+ \gdef^^d7{$\times$}
+ \gdef^^d8{\O}
+ \gdef^^d9{\`U}
+ \gdef^^da{\'U}
+ \gdef^^db{\^U}
+ \gdef^^dc{\"U}
+ \gdef^^dd{\'Y}
+ \gdef^^de{\missingcharmsg{LATIN CAPITAL LETTER THORN}}
+ \gdef^^df{\ss}
+ %
+ \gdef^^e0{\`a}
+ \gdef^^e1{\'a}
+ \gdef^^e2{\^a}
+ \gdef^^e3{\~a}
+ \gdef^^e4{\"a}
+ \gdef^^e5{\ringaccent a}
+ \gdef^^e6{\ae}
+ \gdef^^e7{\cedilla c}
+ \gdef^^e8{\`e}
+ \gdef^^e9{\'e}
+ \gdef^^ea{\^e}
+ \gdef^^eb{\"e}
+ \gdef^^ec{\`{\dotless i}}
+ \gdef^^ed{\'{\dotless i}}
+ \gdef^^ee{\^{\dotless i}}
+ \gdef^^ef{\"{\dotless i}}
+ %
+ \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER ETH}}
+ \gdef^^f1{\~n}
+ \gdef^^f2{\`o}
+ \gdef^^f3{\'o}
+ \gdef^^f4{\^o}
+ \gdef^^f5{\~o}
+ \gdef^^f6{\"o}
+ \gdef^^f7{$\div$}
+ \gdef^^f8{\o}
+ \gdef^^f9{\`u}
+ \gdef^^fa{\'u}
+ \gdef^^fb{\^u}
+ \gdef^^fc{\"u}
+ \gdef^^fd{\'y}
+ \gdef^^fe{\missingcharmsg{LATIN SMALL LETTER THORN}}
+ \gdef^^ff{\"y}
+}
+
+% Latin9 (ISO-8859-15) encoding character definitions.
+\def\latninechardefs{%
+ % Encoding is almost identical to Latin1.
+ \latonechardefs
+ %
+ \gdef^^a4{\euro}
+ \gdef^^a6{\v S}
+ \gdef^^a8{\v s}
+ \gdef^^b4{\v Z}
+ \gdef^^b8{\v z}
+ \gdef^^bc{\OE}
+ \gdef^^bd{\oe}
+ \gdef^^be{\"Y}
+}
+
+% Latin2 (ISO-8859-2) character definitions.
+\def\lattwochardefs{%
+ \gdef^^a0{~}
+ \gdef^^a1{\missingcharmsg{LATIN CAPITAL LETTER A WITH OGONEK}}
+ \gdef^^a2{\u{}}
+ \gdef^^a3{\L}
+ \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+ \gdef^^a5{\v L}
+ \gdef^^a6{\'S}
+ \gdef^^a7{\S}
+ \gdef^^a8{\"{}}
+ \gdef^^a9{\v S}
+ \gdef^^aa{\cedilla S}
+ \gdef^^ab{\v T}
+ \gdef^^ac{\'Z}
+ \gdef^^ad{\-}
+ \gdef^^ae{\v Z}
+ \gdef^^af{\dotaccent Z}
+ %
+ \gdef^^b0{\textdegree}
+ \gdef^^b1{\missingcharmsg{LATIN SMALL LETTER A WITH OGONEK}}
+ \gdef^^b2{\missingcharmsg{OGONEK}}
+ \gdef^^b3{\l}
+ \gdef^^b4{\'{}}
+ \gdef^^b5{\v l}
+ \gdef^^b6{\'s}
+ \gdef^^b7{\v{}}
+ \gdef^^b8{\cedilla\ }
+ \gdef^^b9{\v s}
+ \gdef^^ba{\cedilla s}
+ \gdef^^bb{\v t}
+ \gdef^^bc{\'z}
+ \gdef^^bd{\H{}}
+ \gdef^^be{\v z}
+ \gdef^^bf{\dotaccent z}
+ %
+ \gdef^^c0{\'R}
+ \gdef^^c1{\'A}
+ \gdef^^c2{\^A}
+ \gdef^^c3{\u A}
+ \gdef^^c4{\"A}
+ \gdef^^c5{\'L}
+ \gdef^^c6{\'C}
+ \gdef^^c7{\cedilla C}
+ \gdef^^c8{\v C}
+ \gdef^^c9{\'E}
+ \gdef^^ca{\missingcharmsg{LATIN CAPITAL LETTER E WITH OGONEK}}
+ \gdef^^cb{\"E}
+ \gdef^^cc{\v E}
+ \gdef^^cd{\'I}
+ \gdef^^ce{\^I}
+ \gdef^^cf{\v D}
+ %
+ \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}}
+ \gdef^^d1{\'N}
+ \gdef^^d2{\v N}
+ \gdef^^d3{\'O}
+ \gdef^^d4{\^O}
+ \gdef^^d5{\H O}
+ \gdef^^d6{\"O}
+ \gdef^^d7{$\times$}
+ \gdef^^d8{\v R}
+ \gdef^^d9{\ringaccent U}
+ \gdef^^da{\'U}
+ \gdef^^db{\H U}
+ \gdef^^dc{\"U}
+ \gdef^^dd{\'Y}
+ \gdef^^de{\cedilla T}
+ \gdef^^df{\ss}
+ %
+ \gdef^^e0{\'r}
+ \gdef^^e1{\'a}
+ \gdef^^e2{\^a}
+ \gdef^^e3{\u a}
+ \gdef^^e4{\"a}
+ \gdef^^e5{\'l}
+ \gdef^^e6{\'c}
+ \gdef^^e7{\cedilla c}
+ \gdef^^e8{\v c}
+ \gdef^^e9{\'e}
+ \gdef^^ea{\missingcharmsg{LATIN SMALL LETTER E WITH OGONEK}}
+ \gdef^^eb{\"e}
+ \gdef^^ec{\v e}
+ \gdef^^ed{\'\i}
+ \gdef^^ee{\^\i}
+ \gdef^^ef{\v d}
+ %
+ \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}}
+ \gdef^^f1{\'n}
+ \gdef^^f2{\v n}
+ \gdef^^f3{\'o}
+ \gdef^^f4{\^o}
+ \gdef^^f5{\H o}
+ \gdef^^f6{\"o}
+ \gdef^^f7{$\div$}
+ \gdef^^f8{\v r}
+ \gdef^^f9{\ringaccent u}
+ \gdef^^fa{\'u}
+ \gdef^^fb{\H u}
+ \gdef^^fc{\"u}
+ \gdef^^fd{\'y}
+ \gdef^^fe{\cedilla t}
+ \gdef^^ff{\dotaccent{}}
+}
+
+% UTF-8 character definitions.
+%
+% This code to support UTF-8 is based on LaTeX's utf8.def, with some
+% changes for Texinfo conventions. It is included here under the GPL by
+% permission from Frank Mittelbach and the LaTeX team.
+%
+\newcount\countUTFx
+\newcount\countUTFy
+\newcount\countUTFz
+
+\gdef\UTFviiiTwoOctets#1#2{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\endcsname}
+%
+\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
+%
+\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
+
+\gdef\UTFviiiDefined#1{%
+ \ifx #1\relax
+ \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
+ \else
+ \expandafter #1%
+ \fi
+}
+
+\begingroup
+ \catcode`\~13
+ \catcode`\"12
+
+ \def\UTFviiiLoop{%
+ \global\catcode\countUTFx\active
+ \uccode`\~\countUTFx
+ \uppercase\expandafter{\UTFviiiTmp}%
+ \advance\countUTFx by 1
+ \ifnum\countUTFx < \countUTFy
+ \expandafter\UTFviiiLoop
+ \fi}
+
+ \countUTFx = "C2
+ \countUTFy = "E0
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
+ \UTFviiiLoop
+
+ \countUTFx = "E0
+ \countUTFy = "F0
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
+ \UTFviiiLoop
+
+ \countUTFx = "F0
+ \countUTFy = "F4
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiFourOctets\string~}}
+ \UTFviiiLoop
+\endgroup
+
+\begingroup
+ \catcode`\"=12
+ \catcode`\<=12
+ \catcode`\.=12
+ \catcode`\,=12
+ \catcode`\;=12
+ \catcode`\!=12
+ \catcode`\~=13
+
+ \gdef\DeclareUnicodeCharacter#1#2{%
+ \countUTFz = "#1\relax
+ \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+ \begingroup
+ \parseXMLCharref
+ \def\UTFviiiTwoOctets##1##2{%
+ \csname u8:##1\string ##2\endcsname}%
+ \def\UTFviiiThreeOctets##1##2##3{%
+ \csname u8:##1\string ##2\string ##3\endcsname}%
+ \def\UTFviiiFourOctets##1##2##3##4{%
+ \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter
+ \gdef\UTFviiiTmp{#2}%
+ \endgroup}
+
+ \gdef\parseXMLCharref{%
+ \ifnum\countUTFz < "A0\relax
+ \errhelp = \EMsimple
+ \errmessage{Cannot define Unicode char value < 00A0}%
+ \else\ifnum\countUTFz < "800\relax
+ \parseUTFviiiA,%
+ \parseUTFviiiB C\UTFviiiTwoOctets.,%
+ \else\ifnum\countUTFz < "10000\relax
+ \parseUTFviiiA;%
+ \parseUTFviiiA,%
+ \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
+ \else
+ \parseUTFviiiA;%
+ \parseUTFviiiA,%
+ \parseUTFviiiA!%
+ \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
+ \fi\fi\fi
+ }
+
+ \gdef\parseUTFviiiA#1{%
+ \countUTFx = \countUTFz
+ \divide\countUTFz by 64
+ \countUTFy = \countUTFz
+ \multiply\countUTFz by 64
+ \advance\countUTFx by -\countUTFz
+ \advance\countUTFx by 128
+ \uccode `#1\countUTFx
+ \countUTFz = \countUTFy}
+
+ \gdef\parseUTFviiiB#1#2#3#4{%
+ \advance\countUTFz by "#10\relax
+ \uccode `#3\countUTFz
+ \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
+\endgroup
+
+\def\utfeightchardefs{%
+ \DeclareUnicodeCharacter{00A0}{\tie}
+ \DeclareUnicodeCharacter{00A1}{\exclamdown}
+ \DeclareUnicodeCharacter{00A3}{\pounds}
+ \DeclareUnicodeCharacter{00A8}{\"{ }}
+ \DeclareUnicodeCharacter{00A9}{\copyright}
+ \DeclareUnicodeCharacter{00AA}{\ordf}
+ \DeclareUnicodeCharacter{00AB}{\guillemetleft}
+ \DeclareUnicodeCharacter{00AD}{\-}
+ \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
+ \DeclareUnicodeCharacter{00AF}{\={ }}
+
+ \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
+ \DeclareUnicodeCharacter{00B4}{\'{ }}
+ \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
+ \DeclareUnicodeCharacter{00BA}{\ordm}
+ \DeclareUnicodeCharacter{00BB}{\guillemetright}
+ \DeclareUnicodeCharacter{00BF}{\questiondown}
+
+ \DeclareUnicodeCharacter{00C0}{\`A}
+ \DeclareUnicodeCharacter{00C1}{\'A}
+ \DeclareUnicodeCharacter{00C2}{\^A}
+ \DeclareUnicodeCharacter{00C3}{\~A}
+ \DeclareUnicodeCharacter{00C4}{\"A}
+ \DeclareUnicodeCharacter{00C5}{\AA}
+ \DeclareUnicodeCharacter{00C6}{\AE}
+ \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
+ \DeclareUnicodeCharacter{00C8}{\`E}
+ \DeclareUnicodeCharacter{00C9}{\'E}
+ \DeclareUnicodeCharacter{00CA}{\^E}
+ \DeclareUnicodeCharacter{00CB}{\"E}
+ \DeclareUnicodeCharacter{00CC}{\`I}
+ \DeclareUnicodeCharacter{00CD}{\'I}
+ \DeclareUnicodeCharacter{00CE}{\^I}
+ \DeclareUnicodeCharacter{00CF}{\"I}
+
+ \DeclareUnicodeCharacter{00D1}{\~N}
+ \DeclareUnicodeCharacter{00D2}{\`O}
+ \DeclareUnicodeCharacter{00D3}{\'O}
+ \DeclareUnicodeCharacter{00D4}{\^O}
+ \DeclareUnicodeCharacter{00D5}{\~O}
+ \DeclareUnicodeCharacter{00D6}{\"O}
+ \DeclareUnicodeCharacter{00D8}{\O}
+ \DeclareUnicodeCharacter{00D9}{\`U}
+ \DeclareUnicodeCharacter{00DA}{\'U}
+ \DeclareUnicodeCharacter{00DB}{\^U}
+ \DeclareUnicodeCharacter{00DC}{\"U}
+ \DeclareUnicodeCharacter{00DD}{\'Y}
+ \DeclareUnicodeCharacter{00DF}{\ss}
+
+ \DeclareUnicodeCharacter{00E0}{\`a}
+ \DeclareUnicodeCharacter{00E1}{\'a}
+ \DeclareUnicodeCharacter{00E2}{\^a}
+ \DeclareUnicodeCharacter{00E3}{\~a}
+ \DeclareUnicodeCharacter{00E4}{\"a}
+ \DeclareUnicodeCharacter{00E5}{\aa}
+ \DeclareUnicodeCharacter{00E6}{\ae}
+ \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
+ \DeclareUnicodeCharacter{00E8}{\`e}
+ \DeclareUnicodeCharacter{00E9}{\'e}
+ \DeclareUnicodeCharacter{00EA}{\^e}
+ \DeclareUnicodeCharacter{00EB}{\"e}
+ \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
+ \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
+ \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
+ \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
+
+ \DeclareUnicodeCharacter{00F1}{\~n}
+ \DeclareUnicodeCharacter{00F2}{\`o}
+ \DeclareUnicodeCharacter{00F3}{\'o}
+ \DeclareUnicodeCharacter{00F4}{\^o}
+ \DeclareUnicodeCharacter{00F5}{\~o}
+ \DeclareUnicodeCharacter{00F6}{\"o}
+ \DeclareUnicodeCharacter{00F8}{\o}
+ \DeclareUnicodeCharacter{00F9}{\`u}
+ \DeclareUnicodeCharacter{00FA}{\'u}
+ \DeclareUnicodeCharacter{00FB}{\^u}
+ \DeclareUnicodeCharacter{00FC}{\"u}
+ \DeclareUnicodeCharacter{00FD}{\'y}
+ \DeclareUnicodeCharacter{00FF}{\"y}
+
+ \DeclareUnicodeCharacter{0100}{\=A}
+ \DeclareUnicodeCharacter{0101}{\=a}
+ \DeclareUnicodeCharacter{0102}{\u{A}}
+ \DeclareUnicodeCharacter{0103}{\u{a}}
+ \DeclareUnicodeCharacter{0106}{\'C}
+ \DeclareUnicodeCharacter{0107}{\'c}
+ \DeclareUnicodeCharacter{0108}{\^C}
+ \DeclareUnicodeCharacter{0109}{\^c}
+ \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
+ \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
+ \DeclareUnicodeCharacter{010C}{\v{C}}
+ \DeclareUnicodeCharacter{010D}{\v{c}}
+ \DeclareUnicodeCharacter{010E}{\v{D}}
+
+ \DeclareUnicodeCharacter{0112}{\=E}
+ \DeclareUnicodeCharacter{0113}{\=e}
+ \DeclareUnicodeCharacter{0114}{\u{E}}
+ \DeclareUnicodeCharacter{0115}{\u{e}}
+ \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
+ \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
+ \DeclareUnicodeCharacter{011A}{\v{E}}
+ \DeclareUnicodeCharacter{011B}{\v{e}}
+ \DeclareUnicodeCharacter{011C}{\^G}
+ \DeclareUnicodeCharacter{011D}{\^g}
+ \DeclareUnicodeCharacter{011E}{\u{G}}
+ \DeclareUnicodeCharacter{011F}{\u{g}}
+
+ \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
+ \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
+ \DeclareUnicodeCharacter{0124}{\^H}
+ \DeclareUnicodeCharacter{0125}{\^h}
+ \DeclareUnicodeCharacter{0128}{\~I}
+ \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
+ \DeclareUnicodeCharacter{012A}{\=I}
+ \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
+ \DeclareUnicodeCharacter{012C}{\u{I}}
+ \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
+
+ \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
+ \DeclareUnicodeCharacter{0131}{\dotless{i}}
+ \DeclareUnicodeCharacter{0132}{IJ}
+ \DeclareUnicodeCharacter{0133}{ij}
+ \DeclareUnicodeCharacter{0134}{\^J}
+ \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
+ \DeclareUnicodeCharacter{0139}{\'L}
+ \DeclareUnicodeCharacter{013A}{\'l}
+
+ \DeclareUnicodeCharacter{0141}{\L}
+ \DeclareUnicodeCharacter{0142}{\l}
+ \DeclareUnicodeCharacter{0143}{\'N}
+ \DeclareUnicodeCharacter{0144}{\'n}
+ \DeclareUnicodeCharacter{0147}{\v{N}}
+ \DeclareUnicodeCharacter{0148}{\v{n}}
+ \DeclareUnicodeCharacter{014C}{\=O}
+ \DeclareUnicodeCharacter{014D}{\=o}
+ \DeclareUnicodeCharacter{014E}{\u{O}}
+ \DeclareUnicodeCharacter{014F}{\u{o}}
+
+ \DeclareUnicodeCharacter{0150}{\H{O}}
+ \DeclareUnicodeCharacter{0151}{\H{o}}
+ \DeclareUnicodeCharacter{0152}{\OE}
+ \DeclareUnicodeCharacter{0153}{\oe}
+ \DeclareUnicodeCharacter{0154}{\'R}
+ \DeclareUnicodeCharacter{0155}{\'r}
+ \DeclareUnicodeCharacter{0158}{\v{R}}
+ \DeclareUnicodeCharacter{0159}{\v{r}}
+ \DeclareUnicodeCharacter{015A}{\'S}
+ \DeclareUnicodeCharacter{015B}{\'s}
+ \DeclareUnicodeCharacter{015C}{\^S}
+ \DeclareUnicodeCharacter{015D}{\^s}
+ \DeclareUnicodeCharacter{015E}{\cedilla{S}}
+ \DeclareUnicodeCharacter{015F}{\cedilla{s}}
+
+ \DeclareUnicodeCharacter{0160}{\v{S}}
+ \DeclareUnicodeCharacter{0161}{\v{s}}
+ \DeclareUnicodeCharacter{0162}{\cedilla{t}}
+ \DeclareUnicodeCharacter{0163}{\cedilla{T}}
+ \DeclareUnicodeCharacter{0164}{\v{T}}
+
+ \DeclareUnicodeCharacter{0168}{\~U}
+ \DeclareUnicodeCharacter{0169}{\~u}
+ \DeclareUnicodeCharacter{016A}{\=U}
+ \DeclareUnicodeCharacter{016B}{\=u}
+ \DeclareUnicodeCharacter{016C}{\u{U}}
+ \DeclareUnicodeCharacter{016D}{\u{u}}
+ \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
+ \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
+
+ \DeclareUnicodeCharacter{0170}{\H{U}}
+ \DeclareUnicodeCharacter{0171}{\H{u}}
+ \DeclareUnicodeCharacter{0174}{\^W}
+ \DeclareUnicodeCharacter{0175}{\^w}
+ \DeclareUnicodeCharacter{0176}{\^Y}
+ \DeclareUnicodeCharacter{0177}{\^y}
+ \DeclareUnicodeCharacter{0178}{\"Y}
+ \DeclareUnicodeCharacter{0179}{\'Z}
+ \DeclareUnicodeCharacter{017A}{\'z}
+ \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
+ \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
+ \DeclareUnicodeCharacter{017D}{\v{Z}}
+ \DeclareUnicodeCharacter{017E}{\v{z}}
+
+ \DeclareUnicodeCharacter{01C4}{D\v{Z}}
+ \DeclareUnicodeCharacter{01C5}{D\v{z}}
+ \DeclareUnicodeCharacter{01C6}{d\v{z}}
+ \DeclareUnicodeCharacter{01C7}{LJ}
+ \DeclareUnicodeCharacter{01C8}{Lj}
+ \DeclareUnicodeCharacter{01C9}{lj}
+ \DeclareUnicodeCharacter{01CA}{NJ}
+ \DeclareUnicodeCharacter{01CB}{Nj}
+ \DeclareUnicodeCharacter{01CC}{nj}
+ \DeclareUnicodeCharacter{01CD}{\v{A}}
+ \DeclareUnicodeCharacter{01CE}{\v{a}}
+ \DeclareUnicodeCharacter{01CF}{\v{I}}
+
+ \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
+ \DeclareUnicodeCharacter{01D1}{\v{O}}
+ \DeclareUnicodeCharacter{01D2}{\v{o}}
+ \DeclareUnicodeCharacter{01D3}{\v{U}}
+ \DeclareUnicodeCharacter{01D4}{\v{u}}
+
+ \DeclareUnicodeCharacter{01E2}{\={\AE}}
+ \DeclareUnicodeCharacter{01E3}{\={\ae}}
+ \DeclareUnicodeCharacter{01E6}{\v{G}}
+ \DeclareUnicodeCharacter{01E7}{\v{g}}
+ \DeclareUnicodeCharacter{01E8}{\v{K}}
+ \DeclareUnicodeCharacter{01E9}{\v{k}}
+
+ \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
+ \DeclareUnicodeCharacter{01F1}{DZ}
+ \DeclareUnicodeCharacter{01F2}{Dz}
+ \DeclareUnicodeCharacter{01F3}{dz}
+ \DeclareUnicodeCharacter{01F4}{\'G}
+ \DeclareUnicodeCharacter{01F5}{\'g}
+ \DeclareUnicodeCharacter{01F8}{\`N}
+ \DeclareUnicodeCharacter{01F9}{\`n}
+ \DeclareUnicodeCharacter{01FC}{\'{\AE}}
+ \DeclareUnicodeCharacter{01FD}{\'{\ae}}
+ \DeclareUnicodeCharacter{01FE}{\'{\O}}
+ \DeclareUnicodeCharacter{01FF}{\'{\o}}
+
+ \DeclareUnicodeCharacter{021E}{\v{H}}
+ \DeclareUnicodeCharacter{021F}{\v{h}}
+
+ \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
+ \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
+ \DeclareUnicodeCharacter{0228}{\cedilla{E}}
+ \DeclareUnicodeCharacter{0229}{\cedilla{e}}
+ \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
+ \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
+
+ \DeclareUnicodeCharacter{0232}{\=Y}
+ \DeclareUnicodeCharacter{0233}{\=y}
+ \DeclareUnicodeCharacter{0237}{\dotless{j}}
+
+ \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
+ \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
+ \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
+ \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
+ \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
+ \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
+ \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
+ \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
+ \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
+ \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
+ \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
+ \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
+
+ \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
+ \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
+
+ \DeclareUnicodeCharacter{1E20}{\=G}
+ \DeclareUnicodeCharacter{1E21}{\=g}
+ \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
+ \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
+ \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
+ \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
+ \DeclareUnicodeCharacter{1E26}{\"H}
+ \DeclareUnicodeCharacter{1E27}{\"h}
+
+ \DeclareUnicodeCharacter{1E30}{\'K}
+ \DeclareUnicodeCharacter{1E31}{\'k}
+ \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
+ \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
+ \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
+ \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
+ \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
+ \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
+ \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
+ \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
+ \DeclareUnicodeCharacter{1E3E}{\'M}
+ \DeclareUnicodeCharacter{1E3F}{\'m}
+
+ \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
+ \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
+ \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
+ \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
+ \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
+ \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
+ \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
+ \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
+ \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
+ \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
+
+ \DeclareUnicodeCharacter{1E54}{\'P}
+ \DeclareUnicodeCharacter{1E55}{\'p}
+ \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
+ \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
+ \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
+ \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
+ \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
+ \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
+ \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
+ \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
+
+ \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
+ \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
+ \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
+ \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
+ \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
+ \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
+ \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
+ \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
+ \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
+ \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
+
+ \DeclareUnicodeCharacter{1E7C}{\~V}
+ \DeclareUnicodeCharacter{1E7D}{\~v}
+ \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
+ \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
+
+ \DeclareUnicodeCharacter{1E80}{\`W}
+ \DeclareUnicodeCharacter{1E81}{\`w}
+ \DeclareUnicodeCharacter{1E82}{\'W}
+ \DeclareUnicodeCharacter{1E83}{\'w}
+ \DeclareUnicodeCharacter{1E84}{\"W}
+ \DeclareUnicodeCharacter{1E85}{\"w}
+ \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
+ \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
+ \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
+ \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
+ \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
+ \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
+ \DeclareUnicodeCharacter{1E8C}{\"X}
+ \DeclareUnicodeCharacter{1E8D}{\"x}
+ \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
+ \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
+
+ \DeclareUnicodeCharacter{1E90}{\^Z}
+ \DeclareUnicodeCharacter{1E91}{\^z}
+ \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
+ \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
+ \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
+ \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
+ \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
+ \DeclareUnicodeCharacter{1E97}{\"t}
+ \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
+ \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
+
+ \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
+ \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
+
+ \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
+ \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
+ \DeclareUnicodeCharacter{1EBC}{\~E}
+ \DeclareUnicodeCharacter{1EBD}{\~e}
+
+ \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
+ \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
+ \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
+ \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
+
+ \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
+ \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
+
+ \DeclareUnicodeCharacter{1EF2}{\`Y}
+ \DeclareUnicodeCharacter{1EF3}{\`y}
+ \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
+
+ \DeclareUnicodeCharacter{1EF8}{\~Y}
+ \DeclareUnicodeCharacter{1EF9}{\~y}
+
+ \DeclareUnicodeCharacter{2013}{--}
+ \DeclareUnicodeCharacter{2014}{---}
+ \DeclareUnicodeCharacter{2018}{\quoteleft}
+ \DeclareUnicodeCharacter{2019}{\quoteright}
+ \DeclareUnicodeCharacter{201A}{\quotesinglbase}
+ \DeclareUnicodeCharacter{201C}{\quotedblleft}
+ \DeclareUnicodeCharacter{201D}{\quotedblright}
+ \DeclareUnicodeCharacter{201E}{\quotedblbase}
+ \DeclareUnicodeCharacter{2022}{\bullet}
+ \DeclareUnicodeCharacter{2026}{\dots}
+ \DeclareUnicodeCharacter{2039}{\guilsinglleft}
+ \DeclareUnicodeCharacter{203A}{\guilsinglright}
+ \DeclareUnicodeCharacter{20AC}{\euro}
+
+ \DeclareUnicodeCharacter{2192}{\expansion}
+ \DeclareUnicodeCharacter{21D2}{\result}
+
+ \DeclareUnicodeCharacter{2212}{\minus}
+ \DeclareUnicodeCharacter{2217}{\point}
+ \DeclareUnicodeCharacter{2261}{\equiv}
+}% end of \utfeightchardefs
+
+
+% US-ASCII character definitions.
+\def\asciichardefs{% nothing need be done
+ \relax
+}
+
+% Make non-ASCII characters printable again for compatibility with
+% existing Texinfo documents that may use them, even without declaring a
+% document encoding.
+%
+\setnonasciicharscatcode \other
+
+
+\message{formatting,}
+
+\newdimen\defaultparindent \defaultparindent = 15pt
+
+\chapheadingskip = 15pt plus 4pt minus 2pt
+\secheadingskip = 12pt plus 3pt minus 2pt
+\subsecheadingskip = 9pt plus 2pt minus 2pt
+
+% Prevent underfull vbox error messages.
+\vbadness = 10000
+
+% Don't be so finicky about underfull hboxes, either.
+\hbadness = 2000
+
+% Following George Bush, get rid of widows and orphans.
+\widowpenalty=10000
+\clubpenalty=10000
+
+% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
+% using an old version of TeX, don't do anything. We want the amount of
+% stretch added to depend on the line length, hence the dependence on
+% \hsize. We call this whenever the paper size is set.
+%
+\def\setemergencystretch{%
+ \ifx\emergencystretch\thisisundefined
+ % Allow us to assign to \emergencystretch anyway.
+ \def\emergencystretch{\dimen0}%
+ \else
+ \emergencystretch = .15\hsize
+ \fi
+}
+
+% Parameters in order: 1) textheight; 2) textwidth;
+% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
+% 7) physical page height; 8) physical page width.
+%
+% We also call \setleading{\textleading}, so the caller should define
+% \textleading. The caller should also set \parskip.
+%
+\def\internalpagesizes#1#2#3#4#5#6#7#8{%
+ \voffset = #3\relax
+ \topskip = #6\relax
+ \splittopskip = \topskip
+ %
+ \vsize = #1\relax
+ \advance\vsize by \topskip
+ \outervsize = \vsize
+ \advance\outervsize by 2\topandbottommargin
+ \pageheight = \vsize
+ %
+ \hsize = #2\relax
+ \outerhsize = \hsize
+ \advance\outerhsize by 0.5in
+ \pagewidth = \hsize
+ %
+ \normaloffset = #4\relax
+ \bindingoffset = #5\relax
+ %
+ \ifpdf
+ \pdfpageheight #7\relax
+ \pdfpagewidth #8\relax
+ % if we don't reset these, they will remain at "1 true in" of
+ % whatever layout pdftex was dumped with.
+ \pdfhorigin = 1 true in
+ \pdfvorigin = 1 true in
+ \fi
+ %
+ \setleading{\textleading}
+ %
+ \parindent = \defaultparindent
+ \setemergencystretch
+}
+
+% @letterpaper (the default).
+\def\letterpaper{{\globaldefs = 1
+ \parskip = 3pt plus 2pt minus 1pt
+ \textleading = 13.2pt
+ %
+ % If page is nothing but text, make it come out even.
+ \internalpagesizes{607.2pt}{6in}% that's 46 lines
+ {\voffset}{.25in}%
+ {\bindingoffset}{36pt}%
+ {11in}{8.5in}%
+}}
+
+% Use @smallbook to reset parameters for 7x9.25 trim size.
+\def\smallbook{{\globaldefs = 1
+ \parskip = 2pt plus 1pt
+ \textleading = 12pt
+ %
+ \internalpagesizes{7.5in}{5in}%
+ {-.2in}{0in}%
+ {\bindingoffset}{16pt}%
+ {9.25in}{7in}%
+ %
+ \lispnarrowing = 0.3in
+ \tolerance = 700
+ \hfuzz = 1pt
+ \contentsrightmargin = 0pt
+ \defbodyindent = .5cm
+}}
+
+% Use @smallerbook to reset parameters for 6x9 trim size.
+% (Just testing, parameters still in flux.)
+\def\smallerbook{{\globaldefs = 1
+ \parskip = 1.5pt plus 1pt
+ \textleading = 12pt
+ %
+ \internalpagesizes{7.4in}{4.8in}%
+ {-.2in}{-.4in}%
+ {0pt}{14pt}%
+ {9in}{6in}%
+ %
+ \lispnarrowing = 0.25in
+ \tolerance = 700
+ \hfuzz = 1pt
+ \contentsrightmargin = 0pt
+ \defbodyindent = .4cm
+}}
+
+% Use @afourpaper to print on European A4 paper.
+\def\afourpaper{{\globaldefs = 1
+ \parskip = 3pt plus 2pt minus 1pt
+ \textleading = 13.2pt
+ %
+ % Double-side printing via postscript on Laserjet 4050
+ % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
+ % To change the settings for a different printer or situation, adjust
+ % \normaloffset until the front-side and back-side texts align. Then
+ % do the same for \bindingoffset. You can set these for testing in
+ % your texinfo source file like this:
+ % @tex
+ % \global\normaloffset = -6mm
+ % \global\bindingoffset = 10mm
+ % @end tex
+ \internalpagesizes{673.2pt}{160mm}% that's 51 lines
+ {\voffset}{\hoffset}%
+ {\bindingoffset}{44pt}%
+ {297mm}{210mm}%
+ %
+ \tolerance = 700
+ \hfuzz = 1pt
+ \contentsrightmargin = 0pt
+ \defbodyindent = 5mm
+}}
+
+% Use @afivepaper to print on European A5 paper.
+% From romildo@urano.iceb.ufop.br, 2 July 2000.
+% He also recommends making @example and @lisp be small.
+\def\afivepaper{{\globaldefs = 1
+ \parskip = 2pt plus 1pt minus 0.1pt
+ \textleading = 12.5pt
+ %
+ \internalpagesizes{160mm}{120mm}%
+ {\voffset}{\hoffset}%
+ {\bindingoffset}{8pt}%
+ {210mm}{148mm}%
+ %
+ \lispnarrowing = 0.2in
+ \tolerance = 800
+ \hfuzz = 1.2pt
+ \contentsrightmargin = 0pt
+ \defbodyindent = 2mm
+ \tableindent = 12mm
+}}
+
+% A specific text layout, 24x15cm overall, intended for A4 paper.
+\def\afourlatex{{\globaldefs = 1
+ \afourpaper
+ \internalpagesizes{237mm}{150mm}%
+ {\voffset}{4.6mm}%
+ {\bindingoffset}{7mm}%
+ {297mm}{210mm}%
+ %
+ % Must explicitly reset to 0 because we call \afourpaper.
+ \globaldefs = 0
+}}
+
+% Use @afourwide to print on A4 paper in landscape format.
+\def\afourwide{{\globaldefs = 1
+ \afourpaper
+ \internalpagesizes{241mm}{165mm}%
+ {\voffset}{-2.95mm}%
+ {\bindingoffset}{7mm}%
+ {297mm}{210mm}%
+ \globaldefs = 0
+}}
+
+% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
+% Perhaps we should allow setting the margins, \topskip, \parskip,
+% and/or leading, also. Or perhaps we should compute them somehow.
+%
+\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
+\def\pagesizesyyy#1,#2,#3\finish{{%
+ \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
+ \globaldefs = 1
+ %
+ \parskip = 3pt plus 2pt minus 1pt
+ \setleading{\textleading}%
+ %
+ \dimen0 = #1\relax
+ \advance\dimen0 by \voffset
+ %
+ \dimen2 = \hsize
+ \advance\dimen2 by \normaloffset
+ %
+ \internalpagesizes{#1}{\hsize}%
+ {\voffset}{\normaloffset}%
+ {\bindingoffset}{44pt}%
+ {\dimen0}{\dimen2}%
+}}
+
+% Set default to letter.
+%
+\letterpaper
+
+
+\message{and turning on texinfo input format.}
+
+% Define macros to output various characters with catcode for normal text.
+\catcode`\"=\other
+\catcode`\~=\other
+\catcode`\^=\other
+\catcode`\_=\other
+\catcode`\|=\other
+\catcode`\<=\other
+\catcode`\>=\other
+\catcode`\+=\other
+\catcode`\$=\other
+\def\normaldoublequote{"}
+\def\normaltilde{~}
+\def\normalcaret{^}
+\def\normalunderscore{_}
+\def\normalverticalbar{|}
+\def\normalless{<}
+\def\normalgreater{>}
+\def\normalplus{+}
+\def\normaldollar{$}%$ font-lock fix
+
+% This macro is used to make a character print one way in \tt
+% (where it can probably be output as-is), and another way in other fonts,
+% where something hairier probably needs to be done.
+%
+% #1 is what to print if we are indeed using \tt; #2 is what to print
+% otherwise. Since all the Computer Modern typewriter fonts have zero
+% interword stretch (and shrink), and it is reasonable to expect all
+% typewriter fonts to have this, we can check that font parameter.
+%
+\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
+
+% Same as above, but check for italic font. Actually this also catches
+% non-italic slanted fonts since it is impossible to distinguish them from
+% italic fonts. But since this is only used by $ and it uses \sl anyway
+% this is not a problem.
+\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
+
+% Turn off all special characters except @
+% (and those which the user can use as if they were ordinary).
+% Most of these we simply print from the \tt font, but for some, we can
+% use math or other variants that look better in normal text.
+
+\catcode`\"=\active
+\def\activedoublequote{{\tt\char34}}
+\let"=\activedoublequote
+\catcode`\~=\active
+\def~{{\tt\char126}}
+\chardef\hat=`\^
+\catcode`\^=\active
+\def^{{\tt \hat}}
+
+\catcode`\_=\active
+\def_{\ifusingtt\normalunderscore\_}
+\let\realunder=_
+% Subroutine for the previous macro.
+\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
+
+\catcode`\|=\active
+\def|{{\tt\char124}}
+\chardef \less=`\<
+\catcode`\<=\active
+\def<{{\tt \less}}
+\chardef \gtr=`\>
+\catcode`\>=\active
+\def>{{\tt \gtr}}
+\catcode`\+=\active
+\def+{{\tt \char 43}}
+\catcode`\$=\active
+\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+
+% If a .fmt file is being used, characters that might appear in a file
+% name cannot be active until we have parsed the command line.
+% So turn them off again, and have \everyjob (or @setfilename) turn them on.
+% \otherifyactive is called near the end of this file.
+\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
+
+% Used sometimes to turn off (effectively) the active characters even after
+% parsing them.
+\def\turnoffactive{%
+ \normalturnoffactive
+ \otherbackslash
+}
+
+\catcode`\@=0
+
+% \backslashcurfont outputs one backslash character in current font,
+% as in \char`\\.
+\global\chardef\backslashcurfont=`\\
+\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work
+
+% \realbackslash is an actual character `\' with catcode other, and
+% \doublebackslash is two of them (for the pdf outlines).
+{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
+
+% In texinfo, backslash is an active character; it prints the backslash
+% in fixed width font.
+\catcode`\\=\active
+@def@normalbackslash{{@tt@backslashcurfont}}
+% On startup, @fixbackslash assigns:
+% @let \ = @normalbackslash
+
+% \rawbackslash defines an active \ to do \backslashcurfont.
+% \otherbackslash defines an active \ to be a literal `\' character with
+% catcode other.
+@gdef@rawbackslash{@let\=@backslashcurfont}
+@gdef@otherbackslash{@let\=@realbackslash}
+
+% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
+% the literal character `\'.
+%
+@def@normalturnoffactive{%
+ @let\=@normalbackslash
+ @let"=@normaldoublequote
+ @let~=@normaltilde
+ @let^=@normalcaret
+ @let_=@normalunderscore
+ @let|=@normalverticalbar
+ @let<=@normalless
+ @let>=@normalgreater
+ @let+=@normalplus
+ @let$=@normaldollar %$ font-lock fix
+ @unsepspaces
+}
+
+% Make _ and + \other characters, temporarily.
+% This is canceled by @fixbackslash.
+@otherifyactive
+
+% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
+% That is what \eatinput is for; after that, the `\' should revert to printing
+% a backslash.
+%
+@gdef@eatinput input texinfo{@fixbackslash}
+@global@let\ = @eatinput
+
+% On the other hand, perhaps the file did not have a `\input texinfo'. Then
+% the first `\' in the file would cause an error. This macro tries to fix
+% that, assuming it is called before the first `\' could plausibly occur.
+% Also turn back on active characters that might appear in the input
+% file name, in case not using a pre-dumped format.
+%
+@gdef@fixbackslash{%
+ @ifx\@eatinput @let\ = @normalbackslash @fi
+ @catcode`+=@active
+ @catcode`@_=@active
+}
+
+% Say @foo, not \foo, in error messages.
+@escapechar = `@@
+
+% These look ok in all fonts, so just make them not special.
+@catcode`@& = @other
+@catcode`@# = @other
+@catcode`@% = @other
+
+
+@c Local variables:
+@c eval: (add-hook 'write-file-hooks 'time-stamp)
+@c page-delimiter: "^\\\\message"
+@c time-stamp-start: "def\\\\texinfoversion{"
+@c time-stamp-format: "%:y-%02m-%02d.%02H"
+@c time-stamp-end: "}"
+@c End:
+
+@c vim:sw=2:
+
+@ignore
+ arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
+@end ignore
diff --git a/build-aux/windres-options b/build-aux/windres-options
new file mode 100755
index 00000000..779fddec
--- /dev/null
+++ b/build-aux/windres-options
@@ -0,0 +1,45 @@
+#!/bin/sh
+# Usage: windres-options [--escape] PACKAGE_VERSION
+# Outputs a set of command-line options for 'windres', containing definitions
+# for the preprocessor variables
+# PACKAGE_VERSION_STRING
+# PACKAGE_VERSION_MAJOR
+# PACKAGE_VERSION_MINOR
+# PACKAGE_VERSION_SUBMINOR
+
+escape=
+if test "$1" = "--escape"; then
+ escape=yes
+ shift
+fi
+version="$1" # something like 2.0 or 2.17 or 2.17.3 or 2.17.3-pre3
+
+sed_extract_major='/^[0-9]/{s/^\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{s/^[0-9]*[.]\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{s/^[0-9]*[.][0-9]*[.]\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+
+{
+ echo "-DPACKAGE_VERSION_STRING=\"${version}\""
+ echo "-DPACKAGE_VERSION_MAJOR="`echo "${version}" | sed -n -e "$sed_extract_major"`
+ echo "-DPACKAGE_VERSION_MINOR="`echo "${version}" | sed -n -e "$sed_extract_minor"`
+ echo "-DPACKAGE_VERSION_SUBMINOR="`echo "${version}" | sed -n -e "$sed_extract_subminor"`
+} |
+{
+ if test -n "$escape"; then
+ sed -e 's,\(["\\]\),\\\1,g'
+ else
+ cat
+ fi
+}
diff --git a/config.h.in b/config.h.in
new file mode 100644
index 00000000..ab2effb6
--- /dev/null
+++ b/config.h.in
@@ -0,0 +1,676 @@
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define if the compiler is building for multiple architectures of Apple
+ platforms at once. */
+#undef AA_APPLE_UNIVERSAL_BUILD
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* Define to the number of bits in type 'ptrdiff_t'. */
+#undef BITSIZEOF_PTRDIFF_T
+
+/* Define to the number of bits in type 'sig_atomic_t'. */
+#undef BITSIZEOF_SIG_ATOMIC_T
+
+/* Define to the number of bits in type 'size_t'. */
+#undef BITSIZEOF_SIZE_T
+
+/* Define to the number of bits in type 'wchar_t'. */
+#undef BITSIZEOF_WCHAR_T
+
+/* Define to the number of bits in type 'wint_t'. */
+#undef BITSIZEOF_WINT_T
+
+/* Define if you wish *printf() functions that have a safe handling of
+ non-IEEE-754 'long double' values. */
+#undef CHECK_PRINTF_SAFE
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+ systems. This function is required for `alloca.c' support on those systems.
+ */
+#undef CRAY_STACKSEG_END
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Define as the bit index in the word where to find bit 0 of the exponent of
+ 'double'. */
+#undef DBL_EXPBIT0_BIT
+
+/* Define as the word index where to find the exponent of 'double'. */
+#undef DBL_EXPBIT0_WORD
+
+/* Define as the bit index in the word where to find the sign of 'double'. */
+#undef DBL_SIGNBIT_BIT
+
+/* Define as the word index where to find the sign of 'double'. */
+#undef DBL_SIGNBIT_WORD
+
+/* Define to 1 if the package shall run at any location in the filesystem. */
+#undef ENABLE_RELOCATABLE
+
+/* Define as the bit index in the word where to find bit 0 of the exponent of
+ 'float'. */
+#undef FLT_EXPBIT0_BIT
+
+/* Define as the word index where to find the exponent of 'float'. */
+#undef FLT_EXPBIT0_WORD
+
+/* Define as the bit index in the word where to find the sign of 'float'. */
+#undef FLT_SIGNBIT_BIT
+
+/* Define as the word index where to find the sign of 'float'. */
+#undef FLT_SIGNBIT_WORD
+
+/* Define to 1 when using the gnulib module uninorm/u16-normalize. */
+#undef GNULIB_UNINORM_U16_NORMALIZE
+
+/* Define to 1 when using the gnulib module uninorm/u32-normalize. */
+#undef GNULIB_UNINORM_U32_NORMALIZE
+
+/* Define to 1 when using the gnulib module uninorm/u8-normalize. */
+#undef GNULIB_UNINORM_U8_NORMALIZE
+
+/* Define to 1 when using the gnulib module unistr/u16-mbtouc. */
+#undef GNULIB_UNISTR_U16_MBTOUC
+
+/* Define to 1 when using the gnulib module unistr/u16-mbtoucr. */
+#undef GNULIB_UNISTR_U16_MBTOUCR
+
+/* Define to 1 when using the gnulib module unistr/u16-mbtouc-unsafe. */
+#undef GNULIB_UNISTR_U16_MBTOUC_UNSAFE
+
+/* Define to 1 when using the gnulib module unistr/u16-uctomb. */
+#undef GNULIB_UNISTR_U16_UCTOMB
+
+/* Define to 1 when using the gnulib module unistr/u32-mbtouc. */
+#undef GNULIB_UNISTR_U32_MBTOUC
+
+/* Define to 1 when using the gnulib module unistr/u32-mbtoucr. */
+#undef GNULIB_UNISTR_U32_MBTOUCR
+
+/* Define to 1 when using the gnulib module unistr/u32-mbtouc-unsafe. */
+#undef GNULIB_UNISTR_U32_MBTOUC_UNSAFE
+
+/* Define to 1 when using the gnulib module unistr/u32-uctomb. */
+#undef GNULIB_UNISTR_U32_UCTOMB
+
+/* Define to 1 when using the gnulib module unistr/u8-mbtouc. */
+#undef GNULIB_UNISTR_U8_MBTOUC
+
+/* Define to 1 when using the gnulib module unistr/u8-mbtoucr. */
+#undef GNULIB_UNISTR_U8_MBTOUCR
+
+/* Define to 1 when using the gnulib module unistr/u8-mbtouc-unsafe. */
+#undef GNULIB_UNISTR_U8_MBTOUC_UNSAFE
+
+/* Define to 1 when using the gnulib module unistr/u8-uctomb. */
+#undef GNULIB_UNISTR_U8_UCTOMB
+
+/* Define to 1 if you have 'alloca' after including <alloca.h>, a header that
+ may be supplied by this distribution. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+ */
+#undef HAVE_ALLOCA_H
+
+/* Define to 1 if you have the <bp-sym.h> header file. */
+#undef HAVE_BP_SYM_H
+
+/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
+ CoreFoundation framework. */
+#undef HAVE_CFLOCALECOPYCURRENT
+
+/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
+ the CoreFoundation framework. */
+#undef HAVE_CFPREFERENCESCOPYAPPVALUE
+
+/* Define if the copysignf function is declared in <math.h> and available in
+ libc. */
+#undef HAVE_COPYSIGNF_IN_LIBC
+
+/* Define if the copysignl function is declared in <math.h> and available in
+ libc. */
+#undef HAVE_COPYSIGNL_IN_LIBC
+
+/* Define if the copysign function is declared in <math.h> and available in
+ libc. */
+#undef HAVE_COPYSIGN_IN_LIBC
+
+/* Define to 1 if you have the declaration of `alarm', and to 0 if you don't.
+ */
+#undef HAVE_DECL_ALARM
+
+/* Define to 1 if you have the declaration of `copysign', and to 0 if you
+ don't. */
+#undef HAVE_DECL_COPYSIGN
+
+/* Define to 1 if you have the declaration of `copysignf', and to 0 if you
+ don't. */
+#undef HAVE_DECL_COPYSIGNF
+
+/* Define to 1 if you have the declaration of `copysignl', and to 0 if you
+ don't. */
+#undef HAVE_DECL_COPYSIGNL
+
+/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `strerror', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRERROR
+
+/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRERROR_R
+
+/* Define to 1 if you have the declaration of `wctob', and to 0 if you don't.
+ */
+#undef HAVE_DECL_WCTOB
+
+/* Define to 1 if you have the declaration of `wcwidth', and to 0 if you
+ don't. */
+#undef HAVE_DECL_WCWIDTH
+
+/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you
+ don't. */
+#undef HAVE_DECL__SNPRINTF
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define if you have the declaration of environ. */
+#undef HAVE_ENVIRON_DECL
+
+/* Define to 1 if you have the <errno.h> header file. */
+#undef HAVE_ERRNO_H
+
+/* Define to 1 if you have the <float.h> header file. */
+#undef HAVE_FLOAT_H
+
+/* Define if the frexpl function is available in libc. */
+#undef HAVE_FREXPL_IN_LIBC
+
+/* Define if the frexp function is available in libc. */
+#undef HAVE_FREXP_IN_LIBC
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define if you have the iconv() function and it works. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the <iconv.h> header file. */
+#undef HAVE_ICONV_H
+
+/* Define to 1 if the compiler supports one of the keywords 'inline',
+ '__inline__', '__inline' and effectively inlines functions marked as such.
+ */
+#undef HAVE_INLINE
+
+/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
+#undef HAVE_INTMAX_T
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
+ declares uintmax_t. */
+#undef HAVE_INTTYPES_H_WITH_UINTMAX
+
+/* Define if the isnan(double) function is available in libc. */
+#undef HAVE_ISNAND_IN_LIBC
+
+/* Define if the isnan(float) function is available in libc. */
+#undef HAVE_ISNANF_IN_LIBC
+
+/* Define if the isnan(long double) function is available in libc. */
+#undef HAVE_ISNANL_IN_LIBC
+
+/* Define to 1 if you have the `iswcntrl' function. */
+#undef HAVE_ISWCNTRL
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+#undef HAVE_LANGINFO_CODESET
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#undef HAVE_LC_MESSAGES
+
+/* Define if the ldexpl function is available in libc. */
+#undef HAVE_LDEXPL_IN_LIBC
+
+/* Define if the ldexp function is available in libc. */
+#undef HAVE_LDEXP_IN_LIBC
+
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define to 1 if the system has the type `long long int'. */
+#undef HAVE_LONG_LONG_INT
+
+/* Define if the 'malloc' function is POSIX compliant. */
+#undef HAVE_MALLOC_POSIX
+
+/* Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including
+ config.h and <sys/mman.h>. */
+#undef HAVE_MAP_ANONYMOUS
+
+/* Define to 1 if you have the <math.h> header file. */
+#undef HAVE_MATH_H
+
+/* Define to 1 if you have the `mbrtowc' function. */
+#undef HAVE_MBRTOWC
+
+/* Define to 1 if you have the `mbsinit' function. */
+#undef HAVE_MBSINIT
+
+/* Define to 1 if <wchar.h> declares mbstate_t. */
+#undef HAVE_MBSTATE_T
+
+/* Define to 1 if you have the `memchr' function. */
+#undef HAVE_MEMCHR
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if <limits.h> defines the MIN and MAX macros. */
+#undef HAVE_MINMAX_IN_LIMITS_H
+
+/* Define to 1 if <sys/param.h> defines the MIN and MAX macros. */
+#undef HAVE_MINMAX_IN_SYS_PARAM_H
+
+/* Define to 1 if you have the `mprotect' function. */
+#undef HAVE_MPROTECT
+
+/* Define to 1 if you have the `nl_langinfo' function. */
+#undef HAVE_NL_LANGINFO
+
+/* Define to 1 if you have the <OS.h> header file. */
+#undef HAVE_OS_H
+
+/* Define to 1 if you have the <random.h> header file. */
+#undef HAVE_RANDOM_H
+
+/* Define to 1 if you have the <search.h> header file. */
+#undef HAVE_SEARCH_H
+
+/* Define to 1 if you have the `setenv' function. */
+#undef HAVE_SETENV
+
+/* Define to 1 if you have the `setlocale' function. */
+#undef HAVE_SETLOCALE
+
+/* Define to 1 if 'sig_atomic_t' is a signed integer type. */
+#undef HAVE_SIGNED_SIG_ATOMIC_T
+
+/* Define to 1 if 'wchar_t' is a signed integer type. */
+#undef HAVE_SIGNED_WCHAR_T
+
+/* Define to 1 if 'wint_t' is a signed integer type. */
+#undef HAVE_SIGNED_WINT_T
+
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
+/* Define to 1 if stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
+ uintmax_t. */
+#undef HAVE_STDINT_H_WITH_UINTMAX
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `stpcpy' function. */
+#undef HAVE_STPCPY
+
+/* Define to 1 if you have the `strdup' function. */
+#undef HAVE_STRDUP
+
+/* Define to 1 if you have the `strerror_r' function. */
+#undef HAVE_STRERROR_R
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strnlen' function. */
+#undef HAVE_STRNLEN
+
+/* Define to 1 if the system has the type `struct random_data'. */
+#undef HAVE_STRUCT_RANDOM_DATA
+
+/* Define to 1 if you have the <sys/bitypes.h> header file. */
+#undef HAVE_SYS_BITYPES_H
+
+/* Define to 1 if you have the <sys/inttypes.h> header file. */
+#undef HAVE_SYS_INTTYPES_H
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#undef HAVE_SYS_MMAN_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#undef HAVE_SYS_SOCKET_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the `tsearch' function. */
+#undef HAVE_TSEARCH
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `unsetenv' function. */
+#undef HAVE_UNSETENV
+
+/* Define to 1 if the system has the type `unsigned long long int'. */
+#undef HAVE_UNSIGNED_LONG_LONG_INT
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#undef HAVE_WCHAR_H
+
+/* Define if you have the 'wchar_t' type. */
+#undef HAVE_WCHAR_T
+
+/* Define to 1 if you have the `wcrtomb' function. */
+#undef HAVE_WCRTOMB
+
+/* Define to 1 if you have the `wcslen' function. */
+#undef HAVE_WCSLEN
+
+/* Define to 1 if you have the `wcsnlen' function. */
+#undef HAVE_WCSNLEN
+
+/* Define to 1 if you have the `wctob' function. */
+#undef HAVE_WCTOB
+
+/* Define to 1 if you have the <wctype.h> header file. */
+#undef HAVE_WCTYPE_H
+
+/* Define to 1 if you have the `wcwidth' function. */
+#undef HAVE_WCWIDTH
+
+/* Define to 1 if you have the <winsock2.h> header file. */
+#undef HAVE_WINSOCK2_H
+
+/* Define if you have the 'wint_t' type. */
+#undef HAVE_WINT_T
+
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* Define as const if the declaration of iconv() needs const. */
+#undef ICONV_CONST
+
+/* Define to a symbolic name denoting the flavor of iconv_open()
+ implementation. */
+#undef ICONV_FLAVOR
+
+/* Define to the value of ${prefix}, as a string. */
+#undef INSTALLPREFIX
+
+/* Define as the bit index in the word where to find bit 0 of the exponent of
+ 'long double'. */
+#undef LDBL_EXPBIT0_BIT
+
+/* Define as the word index where to find the exponent of 'long double'. */
+#undef LDBL_EXPBIT0_WORD
+
+/* Define as the bit index in the word where to find the sign of 'long
+ double'. */
+#undef LDBL_SIGNBIT_BIT
+
+/* Define as the word index where to find the sign of 'long double'. */
+#undef LDBL_SIGNBIT_WORD
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#undef LT_OBJDIR
+
+/* If malloc(0) is != NULL, define this to 1. Otherwise define this to 0. */
+#undef MALLOC_0_IS_NONNULL
+
+/* Define to a substitute value for mmap()'s MAP_ANONYMOUS flag. */
+#undef MAP_ANONYMOUS
+
+/* Define if the mbrtowc function has the NULL string argument bug. */
+#undef MBRTOWC_NULL_ARG_BUG
+
+/* Define if the mbrtowc function does not return 0 for a NUL character. */
+#undef MBRTOWC_NUL_RETVAL_BUG
+
+/* Define if the mbrtowc function returns a wrong return value. */
+#undef MBRTOWC_RETVAL_BUG
+
+/* Define if the vasnprintf implementation needs special code for the 'a' and
+ 'A' directives. */
+#undef NEED_PRINTF_DIRECTIVE_A
+
+/* Define if the vasnprintf implementation needs special code for the 'F'
+ directive. */
+#undef NEED_PRINTF_DIRECTIVE_F
+
+/* Define if the vasnprintf implementation needs special code for the 'ls'
+ directive. */
+#undef NEED_PRINTF_DIRECTIVE_LS
+
+/* Define if the vasnprintf implementation needs special code for 'double'
+ arguments. */
+#undef NEED_PRINTF_DOUBLE
+
+/* Define if the vasnprintf implementation needs special code for surviving
+ out-of-memory conditions. */
+#undef NEED_PRINTF_ENOMEM
+
+/* Define if the vasnprintf implementation needs special code for the ' flag.
+ */
+#undef NEED_PRINTF_FLAG_GROUPING
+
+/* Define if the vasnprintf implementation needs special code for the '-'
+ flag. */
+#undef NEED_PRINTF_FLAG_LEFTADJUST
+
+/* Define if the vasnprintf implementation needs special code for the 0 flag.
+ */
+#undef NEED_PRINTF_FLAG_ZERO
+
+/* Define if the vasnprintf implementation needs special code for infinite
+ 'double' arguments. */
+#undef NEED_PRINTF_INFINITE_DOUBLE
+
+/* Define if the vasnprintf implementation needs special code for infinite
+ 'long double' arguments. */
+#undef NEED_PRINTF_INFINITE_LONG_DOUBLE
+
+/* Define if the vasnprintf implementation needs special code for 'long
+ double' arguments. */
+#undef NEED_PRINTF_LONG_DOUBLE
+
+/* Define if the vasnprintf implementation needs special code for supporting
+ large precisions without arbitrary bounds. */
+#undef NEED_PRINTF_UNBOUNDED_PRECISION
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+ 'ptrdiff_t'. */
+#undef PTRDIFF_T_SUFFIX
+
+/* Define this to 1 if strerror is broken. */
+#undef REPLACE_STRERROR
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+ 'sig_atomic_t'. */
+#undef SIG_ATOMIC_T_SUFFIX
+
+/* Define as the maximum value of type 'size_t', if the system doesn't define
+ it. */
+#ifndef SIZE_MAX
+# undef SIZE_MAX
+#endif
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+ 'size_t'. */
+#undef SIZE_T_SUFFIX
+
+/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at runtime.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if strerror_r returns char *. */
+#undef STRERROR_R_CHAR_P
+
+/* Version number of package */
+#undef VERSION
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+ 'wchar_t'. */
+#undef WCHAR_T_SUFFIX
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+ 'wint_t'. */
+#undef WINT_T_SUFFIX
+
+/* Define when --enable-shared is used on mingw or Cygwin. */
+#undef WOE32DLL
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+# undef WORDS_BIGENDIAN
+# endif
+#endif
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+ this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
+
+/* Define to 500 only on HP-UX. */
+#undef _XOPEN_SOURCE
+
+/* Enable extensions on AIX 3, Interix. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris. */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop. */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#undef inline
+#endif
+
+/* Define to long or long long if <stdint.h> and <inttypes.h> don't define. */
+#undef intmax_t
+
+/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
+ the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
+ earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
+ __APPLE__ && __MACH__ test for MacOS X.
+ __APPLE_CC__ tests for the Apple compiler and its version.
+ __STDC_VERSION__ tests for the C99 mode. */
+#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
+# define __GNUC_STDC_INLINE__ 1
+#endif
+
+/* Define to a type if <wchar.h> does not define. */
+#undef mbstate_t
+
+/* Define as the type of the result of subtracting two pointers, if the system
+ doesn't define it. */
+#undef ptrdiff_t
+
+/* Define to the equivalent of the C99 'restrict' keyword, or to
+ nothing if this is not supported. Do not define if restrict is
+ supported directly. */
+#undef restrict
+/* Work around a bug in Sun C++: it does not support _Restrict, even
+ though the corresponding Sun C compiler does, which causes
+ "#define restrict _Restrict" in the previous line. Perhaps some future
+ version of Sun C++ will work with _Restrict; if so, it'll probably
+ define __RESTRICT, just as Sun C does. */
+#if defined __SUNPRO_CC && !defined __RESTRICT
+# define _Restrict
+#endif
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define as a marker that can be attached to function parameter declarations
+ for parameters that are not used. This helps to reduce warnings, such as
+ from GCC -Wunused-parameter. */
+#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _UNUSED_PARAMETER_ __attribute__ ((__unused__))
+#else
+# define _UNUSED_PARAMETER_
+#endif
+
diff --git a/configure b/configure
new file mode 100755
index 00000000..b551c597
--- /dev/null
+++ b/configure
@@ -0,0 +1,41717 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.63.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+if test "x$CONFIG_SHELL" = x; then
+ if (eval ":") 2>/dev/null; then
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+
+ if test $as_have_required = yes && (eval ":
+(as_func_return () {
+ (exit \$1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0) || { (exit 1); exit 1; }
+
+(
+ as_lineno_1=\$LINENO
+ as_lineno_2=\$LINENO
+ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+") 2> /dev/null; then
+ :
+else
+ as_candidate_shells=
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ case $as_dir in
+ /*)
+ for as_base in sh bash ksh sh5; do
+ as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+ done;;
+ esac
+done
+IFS=$as_save_IFS
+
+
+ for as_shell in $as_candidate_shells $SHELL; do
+ # Try only shells that exist, to save several forks.
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { ("$as_shell") 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+_ASEOF
+}; then
+ CONFIG_SHELL=$as_shell
+ as_have_required=yes
+ if { "$as_shell" 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+(as_func_return () {
+ (exit $1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = "$1" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test $exitcode = 0) || { (exit 1); exit 1; }
+
+(
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+
+_ASEOF
+}; then
+ break
+fi
+
+fi
+
+ done
+
+ if test "x$CONFIG_SHELL" != x; then
+ for as_var in BASH_ENV ENV
+ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ done
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+
+ if test $as_have_required = no; then
+ echo This script requires a shell more modern than all the
+ echo shells that I found on your system. Please install a
+ echo modern shell, or manually run the script under such a
+ echo shell if you do have one.
+ { (exit 1); exit 1; }
+fi
+
+
+fi
+
+fi
+
+
+
+(eval "as_func_return () {
+ (exit \$1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0") || {
+ echo No shell found that supports shell functions.
+ echo Please tell bug-autoconf@gnu.org about your system,
+ echo including any error possibly output before this message.
+ echo This can help us improve future autoconf versions.
+ echo Configuration will now proceed without shell functions.
+}
+
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line after each line using $LINENO; the second 'sed'
+ # does the real work. The second script uses 'N' to pair each
+ # line-number line with the line containing $LINENO, and appends
+ # trailing '-' during substitution so that $LINENO is not a special
+ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # scripts with optimization help from Paolo Bonzini. Blame Lee
+ # E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+ case `echo 'x\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ *) ECHO_C='\c';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$lt_ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','`
+ ;;
+esac
+
+ECHO=${lt_ECHO-echo}
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $ECHO works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<_LT_EOF
+$*
+_LT_EOF
+ exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$lt_ECHO"; then
+ if test "X${echo_test_string+set}" != Xset; then
+ # find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
+ { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
+ then
+ break
+ fi
+ done
+ fi
+
+ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+ else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ ECHO="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$ECHO" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ ECHO='print -r'
+ elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+ else
+ # Try using printf.
+ ECHO='printf %s\n'
+ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ ECHO="$CONFIG_SHELL $0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ ECHO="$CONFIG_SHELL $0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+ if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "$0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ ECHO=echo
+ fi
+ fi
+ fi
+ fi
+ fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+lt_ECHO=$ECHO
+if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+ lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+exec 7<&0 </dev/null 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+
+ac_unique_file="lib/unistring/version.in.h"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_header_list=
+ac_func_list=
+ac_subst_vars='gltests_LTLIBOBJS
+gltests_LIBOBJS
+gl_LTLIBOBJS
+gl_LIBOBJS
+am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+PERL
+DVIPS
+TEXI2DVI
+HEXVERSION
+HAVE_GLOBAL_SYMBOL_PIPE
+GLOBAL_SYMBOL_PIPE
+NAMESPACING
+DLL_VARIABLE
+WOE32DLL_FALSE
+WOE32DLL_TRUE
+LIBTESTS_LIBDEPS
+LOCALE_H
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H
+NEXT_LOCALE_H
+LTLIBINTL
+LIBINTL
+LOCALE_TR_UTF8
+LOCALE_FR
+REPLACE_ISWCNTRL
+WCTYPE_H
+HAVE_WCTYPE_H
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H
+NEXT_WCTYPE_H
+HAVE_ISWCNTRL
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H
+NEXT_WCHAR_H
+HAVE_WCHAR_H
+HAVE_WINT_T
+HAVE_UNISTD_H
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H
+NEXT_UNISTD_H
+NEXT_AS_FIRST_DIRECTIVE_STRING_H
+NEXT_STRING_H
+HAVE_RANDOM_H
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H
+NEXT_STDLIB_H
+STDINT_H
+WINT_T_SUFFIX
+WCHAR_T_SUFFIX
+SIG_ATOMIC_T_SUFFIX
+SIZE_T_SUFFIX
+PTRDIFF_T_SUFFIX
+HAVE_SIGNED_WINT_T
+HAVE_SIGNED_WCHAR_T
+HAVE_SIGNED_SIG_ATOMIC_T
+BITSIZEOF_WINT_T
+BITSIZEOF_WCHAR_T
+BITSIZEOF_SIG_ATOMIC_T
+BITSIZEOF_SIZE_T
+BITSIZEOF_PTRDIFF_T
+HAVE_SYS_BITYPES_H
+HAVE_SYS_INTTYPES_H
+HAVE_STDINT_H
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H
+NEXT_STDINT_H
+HAVE_SYS_TYPES_H
+HAVE_INTTYPES_H
+HAVE_UNSIGNED_LONG_LONG_INT
+HAVE_LONG_LONG_INT
+HAVE__BOOL
+STDBOOL_H
+RELOCATABLE
+APPLE_UNIVERSAL_BUILD
+REPLACE_STRSIGNAL
+REPLACE_STRERROR
+REPLACE_STRCASESTR
+REPLACE_STRSTR
+REPLACE_STRDUP
+REPLACE_MEMMEM
+REPLACE_MEMCHR
+HAVE_STRVERSCMP
+HAVE_DECL_STRSIGNAL
+HAVE_DECL_STRERROR
+HAVE_DECL_STRTOK_R
+HAVE_STRCASESTR
+HAVE_STRSEP
+HAVE_STRPBRK
+HAVE_DECL_STRNLEN
+HAVE_DECL_STRNDUP
+HAVE_STRNDUP
+HAVE_DECL_STRDUP
+HAVE_STRCHRNUL
+HAVE_STPNCPY
+HAVE_STPCPY
+HAVE_RAWMEMCHR
+HAVE_DECL_MEMRCHR
+HAVE_MEMPCPY
+HAVE_DECL_MEMMEM
+GNULIB_STRVERSCMP
+GNULIB_STRSIGNAL
+GNULIB_STRERROR
+GNULIB_MBSTOK_R
+GNULIB_MBSSEP
+GNULIB_MBSSPN
+GNULIB_MBSPBRK
+GNULIB_MBSCSPN
+GNULIB_MBSCASESTR
+GNULIB_MBSPCASECMP
+GNULIB_MBSNCASECMP
+GNULIB_MBSCASECMP
+GNULIB_MBSSTR
+GNULIB_MBSRCHR
+GNULIB_MBSCHR
+GNULIB_MBSNLEN
+GNULIB_MBSLEN
+GNULIB_STRTOK_R
+GNULIB_STRCASESTR
+GNULIB_STRSTR
+GNULIB_STRSEP
+GNULIB_STRPBRK
+GNULIB_STRNLEN
+GNULIB_STRNDUP
+GNULIB_STRDUP
+GNULIB_STRCHRNUL
+GNULIB_STPNCPY
+GNULIB_STPCPY
+GNULIB_RAWMEMCHR
+GNULIB_MEMRCHR
+GNULIB_MEMPCPY
+GNULIB_MEMMEM
+GNULIB_MEMCHR
+LOCALE_FR_UTF8
+LOCALE_ZH_CN
+LOCALE_JA
+WCHAR_H
+REPLACE_WCWIDTH
+REPLACE_WCSNRTOMBS
+REPLACE_WCSRTOMBS
+REPLACE_WCRTOMB
+REPLACE_MBSNRTOWCS
+REPLACE_MBSRTOWCS
+REPLACE_MBRLEN
+REPLACE_MBRTOWC
+REPLACE_MBSINIT
+REPLACE_WCTOB
+REPLACE_BTOWC
+REPLACE_MBSTATE_T
+HAVE_DECL_WCWIDTH
+HAVE_DECL_WCTOB
+HAVE_WCSNRTOMBS
+HAVE_WCSRTOMBS
+HAVE_WCRTOMB
+HAVE_MBSNRTOWCS
+HAVE_MBSRTOWCS
+HAVE_MBRLEN
+HAVE_MBRTOWC
+HAVE_MBSINIT
+HAVE_BTOWC
+GNULIB_WCWIDTH
+GNULIB_WCSNRTOMBS
+GNULIB_WCSRTOMBS
+GNULIB_WCRTOMB
+GNULIB_MBSNRTOWCS
+GNULIB_MBSRTOWCS
+GNULIB_MBRLEN
+GNULIB_MBRTOWC
+GNULIB_MBSINIT
+GNULIB_WCTOB
+GNULIB_BTOWC
+NEXT_AS_FIRST_DIRECTIVE_MATH_H
+NEXT_MATH_H
+VOID_UNSETENV
+REPLACE_STRTOD
+REPLACE_PUTENV
+REPLACE_MKSTEMP
+HAVE_DECL_GETLOADAVG
+HAVE_UNSETENV
+HAVE_SYS_LOADAVG_H
+HAVE_STRUCT_RANDOM_DATA
+HAVE_STRTOULL
+HAVE_STRTOLL
+HAVE_STRTOD
+HAVE_SETENV
+HAVE_RPMATCH
+HAVE_RANDOM_R
+HAVE_REALLOC_POSIX
+HAVE_MKDTEMP
+HAVE_GETSUBOPT
+HAVE_CALLOC_POSIX
+HAVE_ATOLL
+GNULIB_UNSETENV
+GNULIB_STRTOULL
+GNULIB_STRTOLL
+GNULIB_STRTOD
+GNULIB_SETENV
+GNULIB_RPMATCH
+GNULIB_RANDOM_R
+GNULIB_PUTENV
+GNULIB_MKSTEMP
+GNULIB_MKDTEMP
+GNULIB_GETSUBOPT
+GNULIB_GETLOADAVG
+GNULIB_ATOLL
+GNULIB_CALLOC_POSIX
+GNULIB_REALLOC_POSIX
+GNULIB_MALLOC_POSIX
+HAVE_MALLOC_POSIX
+INTL_MACOSX_LIBS
+LOCALCHARSET_TESTS_ENVIRONMENT
+GLIBC21
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H
+NEXT_ICONV_H
+ICONV_H
+REPLACE_ICONV_UTF
+REPLACE_ICONV_OPEN
+REPLACE_ICONV
+LTLIBICONV
+LIBICONV
+UNISTD_H_HAVE_WINSOCK2_H
+REPLACE_WRITE
+REPLACE_LSEEK
+REPLACE_LCHOWN
+REPLACE_GETPAGESIZE
+REPLACE_GETCWD
+REPLACE_FCHDIR
+REPLACE_CLOSE
+REPLACE_CHOWN
+HAVE_SYS_PARAM_H
+HAVE_OS_H
+HAVE_DECL_GETLOGIN_R
+HAVE_DECL_ENVIRON
+HAVE_SLEEP
+HAVE_READLINK
+HAVE_LINK
+HAVE_GETUSERSHELL
+HAVE_GETPAGESIZE
+HAVE_GETHOSTNAME
+HAVE_GETDTABLESIZE
+HAVE_GETDOMAINNAME
+HAVE_FTRUNCATE
+HAVE_FSYNC
+HAVE_EUIDACCESS
+HAVE_DUP2
+GNULIB_WRITE
+GNULIB_UNISTD_H_SIGPIPE
+GNULIB_SLEEP
+GNULIB_READLINK
+GNULIB_LSEEK
+GNULIB_LINK
+GNULIB_LCHOWN
+GNULIB_GETUSERSHELL
+GNULIB_GETPAGESIZE
+GNULIB_GETLOGIN_R
+GNULIB_GETHOSTNAME
+GNULIB_GETDTABLESIZE
+GNULIB_GETDOMAINNAME
+GNULIB_GETCWD
+GNULIB_FTRUNCATE
+GNULIB_FSYNC
+GNULIB_FCHDIR
+GNULIB_EUIDACCESS
+GNULIB_ENVIRON
+GNULIB_DUP2
+GNULIB_CLOSE
+GNULIB_CHOWN
+REPLACE_TRUNCL
+REPLACE_SIGNBIT_USING_GCC
+REPLACE_SIGNBIT
+REPLACE_ROUNDL
+REPLACE_ROUNDF
+REPLACE_ROUND
+REPLACE_NAN
+REPLACE_LDEXPL
+REPLACE_ISNAN
+REPLACE_ISINF
+REPLACE_ISFINITE
+REPLACE_HUGE_VAL
+REPLACE_FREXPL
+REPLACE_FREXP
+REPLACE_FLOORL
+REPLACE_FLOORF
+REPLACE_CEILL
+REPLACE_CEILF
+HAVE_DECL_TRUNCF
+HAVE_DECL_TRUNC
+HAVE_DECL_TANL
+HAVE_DECL_SQRTL
+HAVE_DECL_SINL
+HAVE_DECL_LOGL
+HAVE_DECL_LDEXPL
+HAVE_DECL_FREXPL
+HAVE_DECL_EXPL
+HAVE_DECL_COSL
+HAVE_DECL_ATANL
+HAVE_DECL_ASINL
+HAVE_DECL_ACOSL
+HAVE_ISNANL
+HAVE_ISNAND
+HAVE_ISNANF
+GNULIB_TRUNCL
+GNULIB_TRUNCF
+GNULIB_TRUNC
+GNULIB_SIGNBIT
+GNULIB_ROUNDL
+GNULIB_ROUNDF
+GNULIB_ROUND
+GNULIB_MATHL
+GNULIB_LDEXPL
+GNULIB_ISNANL
+GNULIB_ISNAND
+GNULIB_ISNANF
+GNULIB_ISNAN
+GNULIB_ISINF
+GNULIB_ISFINITE
+GNULIB_FREXPL
+GNULIB_FREXP
+GNULIB_FLOORL
+GNULIB_FLOORF
+GNULIB_CEILL
+GNULIB_CEILF
+FLOAT_H
+NEXT_AS_FIRST_DIRECTIVE_FLOAT_H
+NEXT_FLOAT_H
+EOVERFLOW_VALUE
+EOVERFLOW_HIDDEN
+ENOLINK_VALUE
+ENOLINK_HIDDEN
+EMULTIHOP_VALUE
+EMULTIHOP_HIDDEN
+ERRNO_H
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H
+NEXT_ERRNO_H
+PRAGMA_SYSTEM_HEADER
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE
+INCLUDE_NEXT
+ALLOCA_H
+ALLOCA
+GL_COND_LIBTOOL_FALSE
+GL_COND_LIBTOOL_TRUE
+WOE32_FALSE
+WOE32_TRUE
+RC
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+lt_ECHO
+AR
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+SED
+LIBTOOL
+OBJDUMP
+DLLTOOL
+AS
+EGREP
+GREP
+RANLIB
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+CPP
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_silent_rules
+enable_dependency_tracking
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+with_gnu_ld
+enable_libtool_lock
+enable_rpath
+with_libiconv_prefix
+enable_relocatable
+enable_namespacing
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+ { (exit 1); exit 1; }; }
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+ { (exit 1); exit 1; }; }
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+ { (exit 1); exit 1; }; }
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+ { (exit 1); exit 1; }; }
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) { $as_echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; }
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ { $as_echo "$as_me: error: missing argument to $ac_option" >&2
+ { (exit 1); exit 1; }; }
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
+ { (exit 1); exit 1; }; } ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; }
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ { $as_echo "$as_me: error: working directory cannot be determined" >&2
+ { (exit 1); exit 1; }; }
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
+ { (exit 1); exit 1; }; }
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { (exit 1); exit 1; }; }
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
+ { (exit 1); exit 1; }; }
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-silent-rules less verbose build output (undo: `make V=1')
+ --disable-silent-rules verbose build output (undo: `make V=0')
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --enable-shared[=PKGS] build shared libraries [default=yes]
+ --enable-static[=PKGS] build static libraries [default=yes]
+ --enable-fast-install[=PKGS]
+ optimize for fast installation [default=yes]
+ --disable-libtool-lock avoid locking (might break parallel builds)
+ --disable-rpath do not hardcode runtime library paths
+ --enable-relocatable install a package that can be moved in the filesystem
+ --disable-namespacing build a library that exports undesired symbols
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-gnu-ld assume the C compiler uses GNU ld default=no
+ --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
+ --without-libiconv-prefix don't search for libiconv in includedir and libdir
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+configure
+generated by GNU Autoconf 2.63
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.63. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+ 2)
+ ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ ac_configure_args="$ac_configure_args '$ac_arg'"
+ ;;
+ esac
+ done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) $as_unset $ac_var ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ ac_site_file1=$CONFIG_SITE
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test -r "$ac_site_file"; then
+ { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special
+ # files actually), so we avoid doing that.
+ if test -f "$cache_file"; then
+ { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+ac_header_list="$ac_header_list errno.h"
+ac_header_list="$ac_header_list float.h"
+ac_header_list="$ac_header_list iconv.h"
+ac_header_list="$ac_header_list math.h"
+ac_func_list="$ac_func_list mbsinit"
+ac_func_list="$ac_func_list mbrtowc"
+ac_header_list="$ac_header_list sys/mman.h"
+ac_func_list="$ac_func_list mprotect"
+gl_printf_safe=yes
+ac_header_list="$ac_header_list stdint.h"
+ac_header_list="$ac_header_list wchar.h"
+ac_header_list="$ac_header_list stdlib.h"
+ac_header_list="$ac_header_list string.h"
+ac_header_list="$ac_header_list unistd.h"
+ac_func_list="$ac_func_list stpcpy"
+ac_func_list="$ac_func_list strdup"
+ac_func_list="$ac_func_list iswcntrl"
+ac_header_list="$ac_header_list wctype.h"
+ac_func_list="$ac_func_list wcwidth"
+ac_header_list="$ac_header_list locale.h"
+ac_func_list="$ac_func_list setenv"
+ac_header_list="$ac_header_list sys/socket.h"
+ac_func_list="$ac_func_list wctob"
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ac_aux_dir=
+for ac_dir in build-aux "$srcdir"/build-aux; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in build-aux \"$srcdir\"/build-aux" >&5
+$as_echo "$as_me: error: cannot find install-sh or install.sh in build-aux \"$srcdir\"/build-aux" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+. $srcdir/version.sh
+
+
+
+
+
+am__api_version='1.11'
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+ ./ | .// | /cC/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ { { $as_echo "$as_me:$LINENO: error: unsafe absolute working directory name" >&5
+$as_echo "$as_me: error: unsafe absolute working directory name" >&2;}
+ { (exit 1); exit 1; }; };;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ { { $as_echo "$as_me:$LINENO: error: unsafe srcdir value: \`$srcdir'" >&5
+$as_echo "$as_me: error: unsafe srcdir value: \`$srcdir'" >&2;}
+ { (exit 1); exit 1; }; };;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&5
+$as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+$as_echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+done
+IFS=$as_save_IFS
+
+fi
+
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ test -d ./--version && rmdir ./--version
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+ [\\/$]* | ?:[\\/]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:$LINENO: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then
+ enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no) AM_DEFAULT_VERBOSITY=1;;
+*) AM_DEFAULT_VERBOSITY=1;;
+esac
+AM_BACKSLASH='\'
+
+
+
+ if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE=''
+ VERSION=''
+
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+ PACKAGE=libunistring
+
+ VERSION=$VERSION_NUMBER
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+
+am__tar='${AMTAR} chof - --owner=root --group=root "$$tardir"'
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compiler --version >&5") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compiler -v >&5") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compiler -V >&5") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { (ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+
+{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+if test -z "$ac_file"; then
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_compiler_gnu=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ CFLAGS=""
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_c89=$ac_arg
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+
+
+{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if test "${ac_cv_prog_CPP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ # Broken: success on invalid input.
+continue
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:$LINENO: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ # Broken: success on invalid input.
+continue
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+ ./ | .// | /cC/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+done
+IFS=$as_save_IFS
+
+fi
+
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ test -d ./--version && rmdir ./--version
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
+$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
+ { (exit 1); exit 1; }; }
+
+{ $as_echo "$as_me:$LINENO: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+ { (exit 1); exit 1; }; }
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
+$as_echo "$as_me: error: invalid value of canonical build" >&2;}
+ { (exit 1); exit 1; }; };;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:$LINENO: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
+$as_echo "$as_me: error: invalid value of canonical host" >&2;}
+ { (exit 1); exit 1; }; };;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+if test "x$CC" != xcc; then
+ { $as_echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
+else
+ { $as_echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
+fi
+set dummy $CC; ac_cc=`$as_echo "$2" |
+ sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ test -f conftest2.$ac_objext && { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); };
+then
+ eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+ if test "x$CC" != xcc; then
+ # Test first that cc exists at all.
+ if { ac_try='cc -c conftest.$ac_ext >&5'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+ rm -f conftest2.*
+ if { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ test -f conftest2.$ac_objext && { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); };
+ then
+ # cc works too.
+ :
+ else
+ # cc exists but doesn't like -o.
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+ fi
+ fi
+ fi
+else
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+fi
+rm -f core conftest*
+
+fi
+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_MINUS_C_MINUS_O 1
+_ACEOF
+
+fi
+
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ ac_count=`expr $ac_count + 1`
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ ac_count=`expr $ac_count + 1`
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_header_stdc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_header_stdc=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+ if test "${ac_cv_header_minix_config_h+set}" = set; then
+ { $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5
+$as_echo_n "checking for minix/config.h... " >&6; }
+if test "${ac_cv_header_minix_config_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
+$as_echo "$ac_cv_header_minix_config_h" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking minix/config.h usability" >&5
+$as_echo_n "checking minix/config.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <minix/config.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking minix/config.h presence" >&5
+$as_echo_n "checking minix/config.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <minix/config.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;}
+
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5
+$as_echo_n "checking for minix/config.h... " >&6; }
+if test "${ac_cv_header_minix_config_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_header_minix_config_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
+$as_echo "$ac_cv_header_minix_config_h" >&6; }
+
+fi
+if test "x$ac_cv_header_minix_config_h" = x""yes; then
+ MINIX=yes
+else
+ MINIX=
+fi
+
+
+ if test "$MINIX" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define _POSIX_SOURCE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _POSIX_1_SOURCE 2
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _MINIX 1
+_ACEOF
+
+ fi
+
+ case "$host_os" in
+ hpux*)
+
+cat >>confdefs.h <<\_ACEOF
+#define _XOPEN_SOURCE 500
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if test "${ac_cv_safe_to_define___extensions__+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+# define __EXTENSIONS__ 1
+ $ac_includes_default
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_safe_to_define___extensions__=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_safe_to_define___extensions__=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+ test $ac_cv_safe_to_define___extensions__ = yes &&
+ cat >>confdefs.h <<\_ACEOF
+#define __EXTENSIONS__ 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define _ALL_SOURCE 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define _GNU_SOURCE 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define _POSIX_PTHREAD_SEMANTICS 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define _TANDEM_SOURCE 1
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+
+
+ # IEEE behaviour is the default on all CPUs except Alpha and SH
+ # (according to the test results of Bruno Haible's ieeefp/fenv_default.m4
+ # and the GCC 4.1.2 manual).
+ case "$host_cpu" in
+ alpha*)
+ # On Alpha systems, a compiler option provides the behaviour.
+ # See the ieee(3) manual page, also available at
+ # <http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/0600____.HTM>
+ if test -n "$GCC"; then
+ # GCC has the option -mieee.
+ CPPFLAGS="$CPPFLAGS -mieee"
+ else
+ # Compaq (ex-DEC) C has the option -ieee.
+ CPPFLAGS="$CPPFLAGS -ieee"
+ fi
+ ;;
+ sh*)
+ if test -n "$GCC"; then
+ # GCC has the option -mieee.
+ CPPFLAGS="$CPPFLAGS -mieee"
+ fi
+ ;;
+ esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ case "$host_os" in
+ mingw* | cygwin*)
+ { $as_echo "$as_me:$LINENO: checking for auto-import of symbols" >&5
+$as_echo_n "checking for auto-import of symbols... " >&6; }
+ if test "${gl_cv_ld_autoimport+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -Wl,--disable-auto-import"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ gl_cv_ld_autoimport=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_ld_autoimport=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$gl_save_LDFLAGS"
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $gl_cv_ld_autoimport" >&5
+$as_echo "$gl_cv_ld_autoimport" >&6; }
+ if test $gl_cv_ld_autoimport = yes; then
+ LDFLAGS="$LDFLAGS -Wl,--disable-auto-import"
+ fi
+ ;;
+ esac
+
+
+case `pwd` in
+ *\ * | *\ *)
+ { $as_echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.2.6'
+macro_revision='1.3012'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+{ $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if test "${ac_cv_path_SED+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+ for ac_i in 1 2 3 4 5 6 7; do
+ ac_script="$ac_script$as_nl$ac_script"
+ done
+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+ $as_unset ac_script || ac_script=
+ if test -z "$SED"; then
+ ac_path_SED_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+# Check for GNU ac_path_SED and select it if it is found.
+ # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo '' >> "conftest.nl"
+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ ac_count=`expr $ac_count + 1`
+ if test $ac_count -gt ${ac_path_SED_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_SED="$ac_path_SED"
+ ac_path_SED_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_SED_found && break 3
+ done
+ done
+done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_SED"; then
+ { { $as_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5
+$as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+else
+ ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+ rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if test "${ac_cv_path_FGREP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+ then ac_cv_path_FGREP="$GREP -F"
+ else
+ if test -z "$FGREP"; then
+ ac_path_FGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in fgrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+ # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'FGREP' >> "conftest.nl"
+ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ ac_count=`expr $ac_count + 1`
+ if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_FGREP="$ac_path_FGREP"
+ ac_path_FGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_FGREP_found && break 3
+ done
+ done
+done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_FGREP"; then
+ { { $as_echo "$as_me:$LINENO: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+else
+ ac_cv_path_FGREP=$FGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+ { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ { $as_echo "$as_me:$LINENO: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if test "${lt_cv_path_NM+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" \
+ && { test "$build" = "$host" \
+ || { test "$build_os" = cygwin && test "$host_os" = mingw32; }; \
+ }; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+ NM="$lt_cv_path_NM"
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ if test -n "$DUMPBIN"; then :
+ # Let the user override the test.
+ else
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in dumpbin "link -dump"
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DUMPBIN+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DUMPBIN"; then
+ ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+ { $as_echo "$as_me:$LINENO: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DUMPBIN" && break
+ done
+fi
+if test -z "$DUMPBIN"; then
+ ac_ct_DUMPBIN=$DUMPBIN
+ for ac_prog in dumpbin "link -dump"
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DUMPBIN"; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_DUMPBIN" && break
+done
+
+ if test "x$ac_ct_DUMPBIN" = x; then
+ DUMPBIN=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DUMPBIN=$ac_ct_DUMPBIN
+ fi
+fi
+
+ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+ *COFF*)
+ DUMPBIN="$DUMPBIN -symbols"
+ ;;
+ *)
+ DUMPBIN=:
+ ;;
+ esac
+ fi
+
+ if test "$DUMPBIN" != ":"; then
+ NM="$DUMPBIN"
+ fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if test "${lt_cv_nm_interface+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:5990: $ac_compile\"" >&5)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:5993: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:5996: output\"" >&5)
+ cat conftest.out >&5
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+{ $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw* | cegcc*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8 ; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
+ = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on
+ # massive amounts of additional arguments before passing them to the
+ # linker. It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
+ ;;
+ esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+ { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+{ $as_echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+ test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+ = c,a/b,, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+{ $as_echo "$as_me:$LINENO: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+ >/dev/null 2>&1 \
+ && lt_shell_append=yes
+{ $as_echo "$as_me:$LINENO: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
+
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ lt_unset=unset
+else
+ lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ lt_SP2NL='tr \040 \012'
+ lt_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ lt_SP2NL='tr \100 \n'
+ lt_NL2SP='tr \r\n \100\100'
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OBJDUMP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OBJDUMP"; then
+ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+ { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+ ac_ct_OBJDUMP=$OBJDUMP
+ # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OBJDUMP"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_OBJDUMP="objdump"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OBJDUMP" = x; then
+ OBJDUMP="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OBJDUMP=$ac_ct_OBJDUMP
+ fi
+else
+ OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[45]*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ if ( file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+
+cegcc)
+ # use the weaker test based on 'objdump'. See mingw*.
+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | dragonfly*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix[3-9]*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+*nto* | *qnx*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+tpf*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AR+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AR="${ac_tool_prefix}ar"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:$LINENO: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_AR="ar"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+else
+ AR="$ac_cv_prog_AR"
+fi
+
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[BCDT]'
+ ;;
+cygwin* | mingw* | pw32* | cegcc*)
+ symcode='[ABCDGISTW]'
+ ;;
+hpux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDEGRST]'
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[BCDEGRST]'
+ ;;
+osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+solaris*)
+ symcode='[BDRT]'
+ ;;
+sco3.2v5*)
+ symcode='[DT]'
+ ;;
+sysv4.2uw2*)
+ symcode='[DT]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[ABDT]'
+ ;;
+sysv4)
+ symcode='[DFNSTU]'
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Fake it for dumpbin and say T for any non-static function
+ # and D for any global variable.
+ # Also find C++ and __fastcall symbols from MSVC++,
+ # which start with @ or ?.
+ lt_cv_sys_global_symbol_pipe="$AWK '"\
+" {last_section=section; section=\$ 3};"\
+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" \$ 0!~/External *\|/{next};"\
+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+" {if(hide[section]) next};"\
+" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+" s[1]~/^[@?]/{print s[1], s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" ' prfx=^$ac_symprfx"
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+ (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ void *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+ { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ cat <<\_LT_EOF >> conftest.$ac_ext
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&5
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+ fi
+ else
+ echo "$progname: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ fi
+ rm -rf conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ { $as_echo "$as_me:$LINENO: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+ enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '#line 7198 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*|s390*-*tpf*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ lt_cv_cc_needs_belf=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ lt_cv_cc_needs_belf=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+sparc*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+ case $host_os in
+ rhapsody* | darwin*)
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DSYMUTIL+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DSYMUTIL"; then
+ ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+ { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+ ac_ct_DSYMUTIL=$DSYMUTIL
+ # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DSYMUTIL"; then
+ ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DSYMUTIL" = x; then
+ DSYMUTIL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DSYMUTIL=$ac_ct_DSYMUTIL
+ fi
+else
+ DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_NMEDIT+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NMEDIT"; then
+ ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+ { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+ ac_ct_NMEDIT=$NMEDIT
+ # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_NMEDIT"; then
+ ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_NMEDIT="nmedit"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_NMEDIT" = x; then
+ NMEDIT=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ NMEDIT=$ac_ct_NMEDIT
+ fi
+else
+ NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_LIPO+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LIPO"; then
+ ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+ { $as_echo "$as_me:$LINENO: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+ ac_ct_LIPO=$LIPO
+ # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_LIPO"; then
+ ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_LIPO="lipo"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_LIPO" = x; then
+ LIPO=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ LIPO=$ac_ct_LIPO
+ fi
+else
+ LIPO="$ac_cv_prog_LIPO"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OTOOL+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL"; then
+ ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+ { $as_echo "$as_me:$LINENO: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+ ac_ct_OTOOL=$OTOOL
+ # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL"; then
+ ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_OTOOL="otool"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL" = x; then
+ OTOOL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL=$ac_ct_OTOOL
+ fi
+else
+ OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OTOOL64+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL64"; then
+ ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+ { $as_echo "$as_me:$LINENO: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+ ac_ct_OTOOL64=$OTOOL64
+ # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL64"; then
+ ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_OTOOL64="otool64"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL64" = x; then
+ OTOOL64=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL64=$ac_ct_OTOOL64
+ fi
+else
+ OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if test "${lt_cv_apple_cc_single_mod+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_apple_cc_single_mod=no
+ if test -z "${LT_MULTI_MODULE}"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ rm -rf libconftest.dylib*
+ echo "int foo(void){return 1;}" > conftest.c
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+ _lt_result=$?
+ if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+ lt_cv_apple_cc_single_mod=yes
+ else
+ cat conftest.err >&5
+ fi
+ rm -rf libconftest.dylib*
+ rm -f conftest.*
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if test "${lt_cv_ld_exported_symbols_list+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ lt_cv_ld_exported_symbols_list=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ lt_cv_ld_exported_symbols_list=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ darwin*) # darwin 5.x on
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[012]*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ else
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ if test "$DSYMUTIL" != ":"; then
+ _lt_dsymutil='~$DSYMUTIL $lib || :'
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+# Set options
+enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AS+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AS"; then
+ ac_cv_prog_AS="$AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AS="${ac_tool_prefix}as"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+ { $as_echo "$as_me:$LINENO: result: $AS" >&5
+$as_echo "$AS" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AS"; then
+ ac_ct_AS=$AS
+ # Extract the first word of "as", so it can be a program name with args.
+set dummy as; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_AS+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AS"; then
+ ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_AS="as"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AS=$ac_cv_prog_ac_ct_AS
+if test -n "$ac_ct_AS"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_AS" >&5
+$as_echo "$ac_ct_AS" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_AS" = x; then
+ AS="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AS=$ac_ct_AS
+ fi
+else
+ AS="$ac_cv_prog_AS"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DLLTOOL+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DLLTOOL"; then
+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+ { $as_echo "$as_me:$LINENO: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+ ac_ct_DLLTOOL=$DLLTOOL
+ # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DLLTOOL"; then
+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DLLTOOL" = x; then
+ DLLTOOL="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DLLTOOL=$ac_ct_DLLTOOL
+ fi
+else
+ DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OBJDUMP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OBJDUMP"; then
+ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+ { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+ ac_ct_OBJDUMP=$OBJDUMP
+ # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OBJDUMP"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_OBJDUMP="objdump"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OBJDUMP" = x; then
+ OBJDUMP="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OBJDUMP=$ac_ct_OBJDUMP
+ fi
+else
+ OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+ ;;
+esac
+
+test -z "$AS" && AS=as
+
+
+
+
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+ enable_dlopen=no
+
+
+
+ # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then
+ enableval=$enable_shared; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+ # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then
+ enableval=$enable_static; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_static=yes
+fi
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then
+ withval=$with_pic; pic_mode="$withval"
+else
+ pic_mode=default
+fi
+
+
+test -z "$pic_mode" && pic_mode=default
+
+
+
+
+
+
+
+ # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+ enableval=$enable_fast_install; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL="${CONFIG_SHELL-$SHELL} "'$(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if test "${lt_cv_objdir+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/${ac_tool_prefix}file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ { $as_echo "$as_me:$LINENO: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ else
+ MAGIC_CMD=:
+ fi
+fi
+
+ fi
+ ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+ { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:8865: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:8869: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+
+
+
+
+
+ lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_static='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[3-9]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared=no
+ enable_shared=no
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ else
+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ linux* | k*bsd*-gnu)
+ case $cc_basename in
+ # old Intel for x86_64 which still supported -KPIC.
+ ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+ xl*)
+ # IBM XL C 8.0/Fortran 10.1 on PPC
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-qpic'
+ lt_prog_compiler_static='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C 5.9
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl='-Wl,'
+ ;;
+ *Sun\ F*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl=''
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ rdos*)
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl='-Qoption ld '
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic='-Kconform_pic'
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_can_build_shared=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic='-pic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared=no
+ ;;
+ esac
+ fi
+
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic=
+ ;;
+ *)
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+$as_echo "$lt_prog_compiler_pic" >&6; }
+
+
+
+
+
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+ { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if test "${lt_cv_prog_compiler_pic_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic_works=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:9204: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:9208: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_pic_works=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+ case $lt_prog_compiler_pic in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+ esac
+else
+ lt_prog_compiler_pic=
+ lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test "${lt_cv_prog_compiler_static_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_static_works=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ else
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+ :
+else
+ lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:9309: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:9313: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:9364: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:9368: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+ hard_links=yes
+ $RM conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ { $as_echo "$as_me:$LINENO: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+ if test "$hard_links" = no; then
+ { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+ runpath_var=
+ allow_undefined_flag=
+ always_export_symbols=no
+ archive_cmds=
+ archive_expsym_cmds=
+ compiler_needs_object=no
+ enable_shared_with_static_runtimes=no
+ export_dynamic_flag_spec=
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ hardcode_automatic=no
+ hardcode_direct=no
+ hardcode_direct_absolute=no
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld=
+ hardcode_libdir_separator=
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=unsupported
+ inherit_rpath=no
+ link_all_deplibs=unknown
+ module_cmds=
+ module_expsym_cmds=
+ old_archive_from_new_cmds=
+ old_archive_from_expsyms_cmds=
+ thread_safe_flag_spec=
+ whole_archive_flag_spec=
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ export_dynamic_flag_spec='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix[3-9]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ interix[3-9]*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu)
+ tmp_diet=no
+ if test "$host_os" = linux-dietlibc; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+ tmp_addflag=
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ lf95*) # Lahey Fortran 8.1
+ whole_archive_flag_spec=
+ tmp_sharedflag='--shared' ;;
+ xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ compiler_needs_object=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ xlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+ archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds=''
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ file_list_spec='${wl}-f,'
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ export_dynamic_flag_spec='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag="-z nodefs"
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag=' ${wl}-bernotok'
+ allow_undefined_flag=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec='$convenience'
+ archive_cmds_need_lc=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_from_new_cmds='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes=yes
+ ;;
+
+ darwin* | rhapsody*)
+
+
+ archive_cmds_need_lc=no
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+ whole_archive_flag_spec=''
+ link_all_deplibs=yes
+ allow_undefined_flag="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=echo
+ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+ else
+ ld_shlibs=no
+ fi
+
+ ;;
+
+ dgux*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ export_dynamic_flag_spec='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld='+b $libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ export_dynamic_flag_spec='${wl}-E'
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ ;;
+ *)
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ export_dynamic_flag_spec='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ cat >conftest.$ac_ext <<_ACEOF
+int foo(void) {}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ inherit_rpath=yes
+ link_all_deplibs=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ newsos6)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_shlibpath_var=no
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ hardcode_direct_absolute=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ allow_undefined_flag=unsupported
+ archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_separator=:
+ ;;
+
+ solaris*)
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ wlarc=''
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ ;;
+ *)
+ wlarc='${wl}'
+ archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_shlibpath_var=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test "$GCC" = yes; then
+ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ esac
+ link_all_deplibs=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds='$CC -r -o $output$reload_objs'
+ hardcode_direct=no
+ ;;
+ motorola)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ export_dynamic_flag_spec='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ no_undefined_flag='${wl}-z,text'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag='${wl}-z,text'
+ allow_undefined_flag='${wl}-z,nodefs'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-R,$libdir'
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ export_dynamic_flag_spec='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+
+ if test x$host_vendor = xsni; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+
+{ $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+ $RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl
+ pic_flag=$lt_prog_compiler_pic
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag
+ allow_undefined_flag=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc=no
+ else
+ archive_cmds_need_lc=yes
+ fi
+ allow_undefined_flag=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+ { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+$as_echo "$archive_cmds_need_lc" >&6; }
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test "$GCC" = yes; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[lt_foo]++; }
+ if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+ sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix[4-9]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix[3-9]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # Some binutils ld are patched to set DT_RUNPATH
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then
+ shlibpath_overrides_runpath=yes
+fi
+
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+*nto* | *qnx*)
+ version_type=qnx
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+ test -n "$runpath_var" ||
+ test "X$hardcode_automatic" = "Xyes" ; then
+
+ # We can hardcode non-existent directories.
+ if test "$hardcode_direct" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
+ test "$hardcode_minus_L" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+ test "$inherit_rpath" = yes; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+
+
+
+
+
+ if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32* | cegcc*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_dl_dlopen=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+
+fi
+
+ ;;
+
+ *)
+ { $as_echo "$as_me:$LINENO: checking for shl_load" >&5
+$as_echo_n "checking for shl_load... " >&6; }
+if test "${ac_cv_func_shl_load+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shl_load (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_shl_load || defined __stub___shl_load
+choke me
+#endif
+
+int
+main ()
+{
+return shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ ac_cv_func_shl_load=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_shl_load=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+$as_echo "$ac_cv_func_shl_load" >&6; }
+if test "x$ac_cv_func_shl_load" = x""yes; then
+ lt_cv_dlopen="shl_load"
+else
+ { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ ac_cv_lib_dld_shl_load=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_dld_shl_load=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = x""yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+ { $as_echo "$as_me:$LINENO: checking for dlopen" >&5
+$as_echo_n "checking for dlopen... " >&6; }
+if test "${ac_cv_func_dlopen+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_dlopen || defined __stub___dlopen
+choke me
+#endif
+
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ ac_cv_func_dlopen=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_dlopen=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+$as_echo "$ac_cv_func_dlopen" >&6; }
+if test "x$ac_cv_func_dlopen" = x""yes; then
+ lt_cv_dlopen="dlopen"
+else
+ { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_dl_dlopen=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ ac_cv_lib_svld_dlopen=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_svld_dlopen=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = x""yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ ac_cv_lib_dld_dld_link=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_dld_dld_link=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = x""yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if test "${lt_cv_dlopen_self+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+#line 12164 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}
+_LT_EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+#line 12260 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}
+_LT_EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+ ;;
+ *)
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+ ;;
+ esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+ # Report which library types will actually be built
+ { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+ { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+ { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+ { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ { $as_echo "$as_me:$LINENO: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args.
+set dummy ${ac_tool_prefix}windres; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RC+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RC"; then
+ ac_cv_prog_RC="$RC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RC="${ac_tool_prefix}windres"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+RC=$ac_cv_prog_RC
+if test -n "$RC"; then
+ { $as_echo "$as_me:$LINENO: result: $RC" >&5
+$as_echo "$RC" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RC"; then
+ ac_ct_RC=$RC
+ # Extract the first word of "windres", so it can be a program name with args.
+set dummy windres; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RC+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_RC"; then
+ ac_cv_prog_ac_ct_RC="$ac_ct_RC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RC="windres"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RC=$ac_cv_prog_ac_ct_RC
+if test -n "$ac_ct_RC"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_RC" >&5
+$as_echo "$ac_ct_RC" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_RC" = x; then
+ RC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RC=$ac_ct_RC
+ fi
+else
+ RC="$ac_cv_prog_RC"
+fi
+
+
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+compiler=$CC
+compiler_RC=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+lt_cv_prog_compiler_c_o_RC=yes
+
+if test -n "$compiler"; then
+ :
+
+
+
+fi
+
+GCC=$lt_save_GCC
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+case "$host_os" in
+ mingw* | cygwin*) is_woe32=yes ;;
+ *) is_woe32=no ;;
+esac
+ if test $is_woe32 = yes; then
+ WOE32_TRUE=
+ WOE32_FALSE='#'
+else
+ WOE32_TRUE='#'
+ WOE32_FALSE=
+fi
+
+
+
+
+
+
+
+
+
+
+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments. Useless!
+{ $as_echo "$as_me:$LINENO: checking for working alloca.h" >&5
+$as_echo_n "checking for working alloca.h... " >&6; }
+if test "${ac_cv_working_alloca_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <alloca.h>
+int
+main ()
+{
+char *p = (char *) alloca (2 * sizeof (int));
+ if (p) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ ac_cv_working_alloca_h=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_working_alloca_h=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
+$as_echo "$ac_cv_working_alloca_h" >&6; }
+if test $ac_cv_working_alloca_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA_H 1
+_ACEOF
+
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for alloca" >&5
+$as_echo_n "checking for alloca... " >&6; }
+if test "${ac_cv_func_alloca_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef _MSC_VER
+# include <malloc.h>
+# define alloca _alloca
+# else
+# ifdef HAVE_ALLOCA_H
+# include <alloca.h>
+# else
+# ifdef _AIX
+ #pragma alloca
+# else
+# ifndef alloca /* predefined by HP cc +Olibcalls */
+char *alloca ();
+# endif
+# endif
+# endif
+# endif
+#endif
+
+int
+main ()
+{
+char *p = (char *) alloca (1);
+ if (p) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ ac_cv_func_alloca_works=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_alloca_works=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
+$as_echo "$ac_cv_func_alloca_works" >&6; }
+
+if test $ac_cv_func_alloca_works = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA 1
+_ACEOF
+
+else
+ # The SVR3 libPW and SVR4 libucb both contain incompatible functions
+# that cause trouble. Some versions do not even contain alloca or
+# contain a buggy version. If you still want to use their alloca,
+# use ar to extract alloca.o from them instead of compiling alloca.c.
+
+
+
+
+
+ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
+
+cat >>confdefs.h <<\_ACEOF
+#define C_ALLOCA 1
+_ACEOF
+
+
+{ $as_echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
+$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
+if test "${ac_cv_os_cray+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#if defined CRAY && ! defined CRAY2
+webecray
+#else
+wenotbecray
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "webecray" >/dev/null 2>&1; then
+ ac_cv_os_cray=yes
+else
+ ac_cv_os_cray=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
+$as_echo "$ac_cv_os_cray" >&6; }
+if test $ac_cv_os_cray = yes; then
+ for ac_func in _getb67 GETB67 getb67; do
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define CRAY_STACKSEG_END $ac_func
+_ACEOF
+
+ break
+fi
+
+ done
+fi
+
+{ $as_echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
+$as_echo_n "checking stack direction for C alloca... " >&6; }
+if test "${ac_cv_c_stack_direction+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_c_stack_direction=0
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+find_stack_direction ()
+{
+ static char *addr = 0;
+ auto char dummy;
+ if (addr == 0)
+ {
+ addr = &dummy;
+ return find_stack_direction ();
+ }
+ else
+ return (&dummy > addr) ? 1 : -1;
+}
+
+int
+main ()
+{
+ return find_stack_direction () < 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_stack_direction=1
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_c_stack_direction=-1
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
+$as_echo "$ac_cv_c_stack_direction" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define STACK_DIRECTION $ac_cv_c_stack_direction
+_ACEOF
+
+
+fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether the preprocessor supports include_next" >&5
+$as_echo_n "checking whether the preprocessor supports include_next... " >&6; }
+if test "${gl_cv_have_include_next+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ rm -rf conftestd1a conftestd1b conftestd2
+ mkdir conftestd1a conftestd1b conftestd2
+ cat <<EOF > conftestd1a/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+ cat <<EOF > conftestd1b/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include <stdio.h>
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+ cat <<EOF > conftestd2/conftest.h
+#ifndef DEFINED_IN_CONFTESTD1
+#error "include_next test doesn't work"
+#endif
+#define DEFINED_IN_CONFTESTD2
+EOF
+ gl_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2"
+ cat >conftest.$ac_ext <<_ACEOF
+#include <conftest.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_have_include_next=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
+ cat >conftest.$ac_ext <<_ACEOF
+#include <conftest.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_have_include_next=buggy
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_have_include_next=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CPPFLAGS="$gl_save_CPPFLAGS"
+ rm -rf conftestd1a conftestd1b conftestd2
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_have_include_next" >&5
+$as_echo "$gl_cv_have_include_next" >&6; }
+ PRAGMA_SYSTEM_HEADER=
+ if test $gl_cv_have_include_next = yes; then
+ INCLUDE_NEXT=include_next
+ INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+ if test -n "$GCC"; then
+ PRAGMA_SYSTEM_HEADER='#pragma GCC system_header'
+ fi
+ else
+ if test $gl_cv_have_include_next = buggy; then
+ INCLUDE_NEXT=include
+ INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+ else
+ INCLUDE_NEXT=include
+ INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include
+ fi
+ fi
+
+
+
+
+
+
+
+
+for ac_header in $ac_header_list
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for complete errno.h" >&5
+$as_echo_n "checking for complete errno.h... " >&6; }
+if test "${gl_cv_header_errno_h_complete+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <errno.h>
+#if !defined ENOMSG
+booboo
+#endif
+#if !defined EIDRM
+booboo
+#endif
+#if !defined ENOLINK
+booboo
+#endif
+#if !defined EPROTO
+booboo
+#endif
+#if !defined EMULTIHOP
+booboo
+#endif
+#if !defined EBADMSG
+booboo
+#endif
+#if !defined EOVERFLOW
+booboo
+#endif
+#if !defined ENOTSUP
+booboo
+#endif
+#if !defined ESTALE
+booboo
+#endif
+#if !defined ECANCELED
+booboo
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "booboo" >/dev/null 2>&1; then
+ gl_cv_header_errno_h_complete=no
+else
+ gl_cv_header_errno_h_complete=yes
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_errno_h_complete" >&5
+$as_echo "$gl_cv_header_errno_h_complete" >&6; }
+ if test $gl_cv_header_errno_h_complete = yes; then
+ ERRNO_H=''
+ else
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_errno_h='<'errno.h'>'
+ else
+ { $as_echo "$as_me:$LINENO: checking absolute name of <errno.h>" >&5
+$as_echo_n "checking absolute name of <errno.h>... " >&6; }
+if test "${gl_cv_next_errno_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test $ac_cv_header_errno_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <errno.h>
+
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+ gl_cv_next_errno_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n '\#/errno.h#{
+ s#.*"\(.*/errno.h\)".*#\1#
+ s#^/[^/]#//&#
+ p
+ q
+ }'`'"'
+ else
+ gl_cv_next_errno_h='<'errno.h'>'
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_errno_h" >&5
+$as_echo "$gl_cv_next_errno_h" >&6; }
+ fi
+ NEXT_ERRNO_H=$gl_cv_next_errno_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'errno.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_errno_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H=$gl_next_as_first_directive
+
+
+
+ ERRNO_H='errno.h'
+ fi
+
+
+ if test -n "$ERRNO_H"; then
+ { $as_echo "$as_me:$LINENO: checking for EMULTIHOP value" >&5
+$as_echo_n "checking for EMULTIHOP value... " >&6; }
+if test "${gl_cv_header_errno_h_EMULTIHOP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <errno.h>
+#ifdef EMULTIHOP
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ gl_cv_header_errno_h_EMULTIHOP=yes
+else
+ gl_cv_header_errno_h_EMULTIHOP=no
+fi
+rm -f conftest*
+
+ if test $gl_cv_header_errno_h_EMULTIHOP = no; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef EMULTIHOP
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ gl_cv_header_errno_h_EMULTIHOP=hidden
+fi
+rm -f conftest*
+
+ if test $gl_cv_header_errno_h_EMULTIHOP = hidden; then
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EMULTIHOP) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EMULTIHOP) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EMULTIHOP) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EMULTIHOP) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EMULTIHOP) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) gl_cv_header_errno_h_EMULTIHOP=$ac_lo;;
+'') ;;
+esac
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+static long int longval () { return EMULTIHOP; }
+static unsigned long int ulongval () { return EMULTIHOP; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if ((EMULTIHOP) < 0)
+ {
+ long int i = longval ();
+ if (i != (EMULTIHOP))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != (EMULTIHOP))
+ return 1;
+ fprintf (f, "%lu", i);
+ }
+ /* Do not output a trailing newline, as this causes \r\n confusion
+ on some platforms. */
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_header_errno_h_EMULTIHOP=`cat conftest.val`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+ fi
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_errno_h_EMULTIHOP" >&5
+$as_echo "$gl_cv_header_errno_h_EMULTIHOP" >&6; }
+ case $gl_cv_header_errno_h_EMULTIHOP in
+ yes | no)
+ EMULTIHOP_HIDDEN=0; EMULTIHOP_VALUE=
+ ;;
+ *)
+ EMULTIHOP_HIDDEN=1; EMULTIHOP_VALUE="$gl_cv_header_errno_h_EMULTIHOP"
+ ;;
+ esac
+
+
+ fi
+
+
+ if test -n "$ERRNO_H"; then
+ { $as_echo "$as_me:$LINENO: checking for ENOLINK value" >&5
+$as_echo_n "checking for ENOLINK value... " >&6; }
+if test "${gl_cv_header_errno_h_ENOLINK+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <errno.h>
+#ifdef ENOLINK
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ gl_cv_header_errno_h_ENOLINK=yes
+else
+ gl_cv_header_errno_h_ENOLINK=no
+fi
+rm -f conftest*
+
+ if test $gl_cv_header_errno_h_ENOLINK = no; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef ENOLINK
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ gl_cv_header_errno_h_ENOLINK=hidden
+fi
+rm -f conftest*
+
+ if test $gl_cv_header_errno_h_ENOLINK = hidden; then
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((ENOLINK) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((ENOLINK) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((ENOLINK) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((ENOLINK) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((ENOLINK) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) gl_cv_header_errno_h_ENOLINK=$ac_lo;;
+'') ;;
+esac
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+static long int longval () { return ENOLINK; }
+static unsigned long int ulongval () { return ENOLINK; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if ((ENOLINK) < 0)
+ {
+ long int i = longval ();
+ if (i != (ENOLINK))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != (ENOLINK))
+ return 1;
+ fprintf (f, "%lu", i);
+ }
+ /* Do not output a trailing newline, as this causes \r\n confusion
+ on some platforms. */
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_header_errno_h_ENOLINK=`cat conftest.val`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+ fi
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_errno_h_ENOLINK" >&5
+$as_echo "$gl_cv_header_errno_h_ENOLINK" >&6; }
+ case $gl_cv_header_errno_h_ENOLINK in
+ yes | no)
+ ENOLINK_HIDDEN=0; ENOLINK_VALUE=
+ ;;
+ *)
+ ENOLINK_HIDDEN=1; ENOLINK_VALUE="$gl_cv_header_errno_h_ENOLINK"
+ ;;
+ esac
+
+
+ fi
+
+
+ if test -n "$ERRNO_H"; then
+ { $as_echo "$as_me:$LINENO: checking for EOVERFLOW value" >&5
+$as_echo_n "checking for EOVERFLOW value... " >&6; }
+if test "${gl_cv_header_errno_h_EOVERFLOW+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <errno.h>
+#ifdef EOVERFLOW
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ gl_cv_header_errno_h_EOVERFLOW=yes
+else
+ gl_cv_header_errno_h_EOVERFLOW=no
+fi
+rm -f conftest*
+
+ if test $gl_cv_header_errno_h_EOVERFLOW = no; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef EOVERFLOW
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ gl_cv_header_errno_h_EOVERFLOW=hidden
+fi
+rm -f conftest*
+
+ if test $gl_cv_header_errno_h_EOVERFLOW = hidden; then
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EOVERFLOW) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EOVERFLOW) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EOVERFLOW) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EOVERFLOW) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EOVERFLOW) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) gl_cv_header_errno_h_EOVERFLOW=$ac_lo;;
+'') ;;
+esac
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+static long int longval () { return EOVERFLOW; }
+static unsigned long int ulongval () { return EOVERFLOW; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if ((EOVERFLOW) < 0)
+ {
+ long int i = longval ();
+ if (i != (EOVERFLOW))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != (EOVERFLOW))
+ return 1;
+ fprintf (f, "%lu", i);
+ }
+ /* Do not output a trailing newline, as this causes \r\n confusion
+ on some platforms. */
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_header_errno_h_EOVERFLOW=`cat conftest.val`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+ fi
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_errno_h_EOVERFLOW" >&5
+$as_echo "$gl_cv_header_errno_h_EOVERFLOW" >&6; }
+ case $gl_cv_header_errno_h_EOVERFLOW in
+ yes | no)
+ EOVERFLOW_HIDDEN=0; EOVERFLOW_VALUE=
+ ;;
+ *)
+ EOVERFLOW_HIDDEN=1; EOVERFLOW_VALUE="$gl_cv_header_errno_h_EOVERFLOW"
+ ;;
+ esac
+
+
+ fi
+
+
+
+
+
+ GNULIB_CEILF=0;
+ GNULIB_CEILL=0;
+ GNULIB_FLOORF=0;
+ GNULIB_FLOORL=0;
+ GNULIB_FREXP=0;
+ GNULIB_FREXPL=0;
+ GNULIB_ISFINITE=0;
+ GNULIB_ISINF=0;
+ GNULIB_ISNAN=0;
+ GNULIB_ISNANF=0;
+ GNULIB_ISNAND=0;
+ GNULIB_ISNANL=0;
+ GNULIB_LDEXPL=0;
+ GNULIB_MATHL=0;
+ GNULIB_ROUND=0;
+ GNULIB_ROUNDF=0;
+ GNULIB_ROUNDL=0;
+ GNULIB_SIGNBIT=0;
+ GNULIB_TRUNC=0;
+ GNULIB_TRUNCF=0;
+ GNULIB_TRUNCL=0;
+ HAVE_ISNANF=1;
+ HAVE_ISNAND=1;
+ HAVE_ISNANL=1;
+ HAVE_DECL_ACOSL=1;
+ HAVE_DECL_ASINL=1;
+ HAVE_DECL_ATANL=1;
+ HAVE_DECL_COSL=1;
+ HAVE_DECL_EXPL=1;
+ HAVE_DECL_FREXPL=1;
+ HAVE_DECL_LDEXPL=1;
+ HAVE_DECL_LOGL=1;
+ HAVE_DECL_SINL=1;
+ HAVE_DECL_SQRTL=1;
+ HAVE_DECL_TANL=1;
+ HAVE_DECL_TRUNC=1;
+ HAVE_DECL_TRUNCF=1;
+ REPLACE_CEILF=0;
+ REPLACE_CEILL=0;
+ REPLACE_FLOORF=0;
+ REPLACE_FLOORL=0;
+ REPLACE_FREXP=0;
+ REPLACE_FREXPL=0;
+ REPLACE_HUGE_VAL=0;
+ REPLACE_ISFINITE=0;
+ REPLACE_ISINF=0;
+ REPLACE_ISNAN=0;
+ REPLACE_LDEXPL=0;
+ REPLACE_NAN=0;
+ REPLACE_ROUND=0;
+ REPLACE_ROUNDF=0;
+ REPLACE_ROUNDL=0;
+ REPLACE_SIGNBIT=0;
+ REPLACE_SIGNBIT_USING_GCC=0;
+ REPLACE_TRUNCL=0;
+
+
+ GNULIB_CHOWN=0;
+ GNULIB_CLOSE=0;
+ GNULIB_DUP2=0;
+ GNULIB_ENVIRON=0;
+ GNULIB_EUIDACCESS=0;
+ GNULIB_FCHDIR=0;
+ GNULIB_FSYNC=0;
+ GNULIB_FTRUNCATE=0;
+ GNULIB_GETCWD=0;
+ GNULIB_GETDOMAINNAME=0;
+ GNULIB_GETDTABLESIZE=0;
+ GNULIB_GETHOSTNAME=0;
+ GNULIB_GETLOGIN_R=0;
+ GNULIB_GETPAGESIZE=0;
+ GNULIB_GETUSERSHELL=0;
+ GNULIB_LCHOWN=0;
+ GNULIB_LINK=0;
+ GNULIB_LSEEK=0;
+ GNULIB_READLINK=0;
+ GNULIB_SLEEP=0;
+ GNULIB_UNISTD_H_SIGPIPE=0;
+ GNULIB_WRITE=0;
+ HAVE_DUP2=1;
+ HAVE_EUIDACCESS=1;
+ HAVE_FSYNC=1;
+ HAVE_FTRUNCATE=1;
+ HAVE_GETDOMAINNAME=1;
+ HAVE_GETDTABLESIZE=1;
+ HAVE_GETHOSTNAME=1;
+ HAVE_GETPAGESIZE=1;
+ HAVE_GETUSERSHELL=1;
+ HAVE_LINK=1;
+ HAVE_READLINK=1;
+ HAVE_SLEEP=1;
+ HAVE_DECL_ENVIRON=1;
+ HAVE_DECL_GETLOGIN_R=1;
+ HAVE_OS_H=0;
+ HAVE_SYS_PARAM_H=0;
+ REPLACE_CHOWN=0;
+ REPLACE_CLOSE=0;
+ REPLACE_FCHDIR=0;
+ REPLACE_GETCWD=0;
+ REPLACE_GETPAGESIZE=0;
+ REPLACE_LCHOWN=0;
+ REPLACE_LSEEK=0;
+ REPLACE_WRITE=0;
+ UNISTD_H_HAVE_WINSOCK2_H=0;
+
+
+ if test "X$prefix" = "XNONE"; then
+ acl_final_prefix="$ac_default_prefix"
+ else
+ acl_final_prefix="$prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ acl_final_exec_prefix='${prefix}'
+ else
+ acl_final_exec_prefix="$exec_prefix"
+ fi
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+ prefix="$acl_save_prefix"
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ { $as_echo "$as_me:$LINENO: checking for ld used by GCC" >&5
+$as_echo_n "checking for ld used by GCC... " >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | [A-Za-z]:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the path of ld
+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+ { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${acl_cv_path_LD+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$LD"; then
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ acl_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break ;;
+ *)
+ test "$with_gnu_ld" != yes && break ;;
+ esac
+ fi
+ done
+ IFS="$ac_save_ifs"
+else
+ acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+ { $as_echo "$as_me:$LINENO: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${acl_cv_prog_gnu_ld+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ acl_cv_prog_gnu_ld=yes ;;
+*)
+ acl_cv_prog_gnu_ld=no ;;
+esac
+fi
+{ $as_echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5
+$as_echo "$acl_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$acl_cv_prog_gnu_ld
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for shared library run path origin" >&5
+$as_echo_n "checking for shared library run path origin... " >&6; }
+if test "${acl_cv_rpath+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+ . ./conftest.sh
+ rm -f ./conftest.sh
+ acl_cv_rpath=done
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5
+$as_echo "$acl_cv_rpath" >&6; }
+ wl="$acl_cv_wl"
+ acl_libext="$acl_cv_libext"
+ acl_shlibext="$acl_cv_shlibext"
+ acl_libname_spec="$acl_cv_libname_spec"
+ acl_library_names_spec="$acl_cv_library_names_spec"
+ acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+ acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+ acl_hardcode_direct="$acl_cv_hardcode_direct"
+ acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
+ # Check whether --enable-rpath was given.
+if test "${enable_rpath+set}" = set; then
+ enableval=$enable_rpath; :
+else
+ enable_rpath=yes
+fi
+
+
+
+
+ acl_libdirstem=lib
+ acl_libdirstem2=
+ case "$host_os" in
+ solaris*)
+ { $as_echo "$as_me:$LINENO: checking for 64-bit host" >&5
+$as_echo_n "checking for 64-bit host... " >&6; }
+if test "${gl_cv_solaris_64bit+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#ifdef _LP64
+sixtyfour bits
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "sixtyfour bits" >/dev/null 2>&1; then
+ gl_cv_solaris_64bit=yes
+else
+ gl_cv_solaris_64bit=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_solaris_64bit" >&5
+$as_echo "$gl_cv_solaris_64bit" >&6; }
+ if test $gl_cv_solaris_64bit = yes; then
+ acl_libdirstem=lib/64
+ case "$host_cpu" in
+ sparc*) acl_libdirstem2=lib/sparcv9 ;;
+ i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
+ esac
+ fi
+ ;;
+ *)
+ searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+ if test -n "$searchpath"; then
+ acl_save_IFS="${IFS= }"; IFS=":"
+ for searchdir in $searchpath; do
+ if test -d "$searchdir"; then
+ case "$searchdir" in
+ */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+ */../ | */.. )
+ # Better ignore directories of this form. They are misleading.
+ ;;
+ *) searchdir=`cd "$searchdir" && pwd`
+ case "$searchdir" in
+ */lib64 ) acl_libdirstem=lib64 ;;
+ esac ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_IFS"
+ fi
+ ;;
+ esac
+ test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
+
+
+
+
+
+
+
+
+
+
+
+
+ use_additional=yes
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+
+# Check whether --with-libiconv-prefix was given.
+if test "${with_libiconv_prefix+set}" = set; then
+ withval=$with_libiconv_prefix;
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/$acl_libdirstem"
+ if test "$acl_libdirstem2" != "$acl_libdirstem" \
+ && ! test -d "$withval/$acl_libdirstem"; then
+ additional_libdir="$withval/$acl_libdirstem2"
+ fi
+ fi
+ fi
+
+fi
+
+ LIBICONV=
+ LTLIBICONV=
+ INCICONV=
+ LIBICONV_PREFIX=
+ HAVE_LIBICONV=
+ rpathdirs=
+ ltrpathdirs=
+ names_already_handled=
+ names_next_round='iconv '
+ while test -n "$names_next_round"; do
+ names_this_round="$names_next_round"
+ names_next_round=
+ for name in $names_this_round; do
+ already_handled=
+ for n in $names_already_handled; do
+ if test "$n" = "$name"; then
+ already_handled=yes
+ break
+ fi
+ done
+ if test -z "$already_handled"; then
+ names_already_handled="$names_already_handled $name"
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+ eval value=\"\$HAVE_LIB$uppername\"
+ if test -n "$value"; then
+ if test "$value" = yes; then
+ eval value=\"\$LIB$uppername\"
+ test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
+ eval value=\"\$LTLIB$uppername\"
+ test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value"
+ else
+ :
+ fi
+ else
+ found_dir=
+ found_la=
+ found_so=
+ found_a=
+ eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
+ if test -n "$acl_shlibext"; then
+ shrext=".$acl_shlibext" # typically: shrext=.so
+ else
+ shrext=
+ fi
+ if test $use_additional = yes; then
+ dir="$additional_libdir"
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ for x in $LDFLAGS $LTLIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ case "$x" in
+ -L*)
+ dir=`echo "X$x" | sed -e 's/^X-L//'`
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
+ ;;
+ esac
+ if test "X$found_dir" != "X"; then
+ break
+ fi
+ done
+ fi
+ if test "X$found_dir" != "X"; then
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name"
+ if test "X$found_so" != "X"; then
+ if test "$enable_rpath" = no \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem" \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ else
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $found_dir"
+ fi
+ if test "$acl_hardcode_direct" = yes; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ else
+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $found_dir"
+ fi
+ else
+ haveit=
+ for x in $LDFLAGS $LIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir"
+ fi
+ if test "$acl_hardcode_minus_L" != no; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ else
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+ fi
+ fi
+ fi
+ fi
+ else
+ if test "X$found_a" != "X"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a"
+ else
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name"
+ fi
+ fi
+ additional_includedir=
+ case "$found_dir" in
+ */$acl_libdirstem | */$acl_libdirstem/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+ if test "$name" = 'iconv'; then
+ LIBICONV_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
+ */$acl_libdirstem2 | */$acl_libdirstem2/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
+ if test "$name" = 'iconv'; then
+ LIBICONV_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
+ esac
+ if test "X$additional_includedir" != "X"; then
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ for x in $CPPFLAGS $INCICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ fi
+ if test -n "$found_la"; then
+ save_libdir="$libdir"
+ case "$found_la" in
+ */* | *\\*) . "$found_la" ;;
+ *) . "./$found_la" ;;
+ esac
+ libdir="$save_libdir"
+ for dep in $dependency_libs; do
+ case "$dep" in
+ -L*)
+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
+ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
+ haveit=
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
+ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ haveit=
+ for x in $LDFLAGS $LIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir"
+ fi
+ fi
+ haveit=
+ for x in $LDFLAGS $LTLIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ ;;
+ -R*)
+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
+ if test "$enable_rpath" != no; then
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $dir"
+ fi
+ fi
+ ;;
+ -l*)
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+ ;;
+ *.la)
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+ ;;
+ *)
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$dep"
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep"
+ ;;
+ esac
+ done
+ fi
+ else
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name"
+ fi
+ fi
+ fi
+ done
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n "$acl_hardcode_libdir_separator"; then
+ alldirs=
+ for found_dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+ done
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+ else
+ for found_dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$found_dir"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+ done
+ fi
+ fi
+ if test "X$ltrpathdirs" != "X"; then
+ for found_dir in $ltrpathdirs; do
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir"
+ done
+ fi
+
+
+
+
+
+
+
+
+ REPLACE_ICONV=0;
+ REPLACE_ICONV_OPEN=0;
+ REPLACE_ICONV_UTF=0;
+ ICONV_H='';
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if test "${ac_cv_c_inline+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_inline=$ac_kw
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+
+case $ac_cv_c_inline in
+ inline | yes) ;;
+ *)
+ case $ac_cv_c_inline in
+ no) ac_val=;;
+ *) ac_val=$ac_cv_c_inline;;
+ esac
+ cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+ ;;
+esac
+
+
+ { $as_echo "$as_me:$LINENO: checking where to find the exponent in a 'float'" >&5
+$as_echo_n "checking where to find the exponent in a 'float'... " >&6; }
+if test "${gl_cv_cc_float_expbit0+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ gl_cv_cc_float_expbit0="word 0 bit 23"
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+ ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { float value; unsigned int word[NWORDS]; } memory_float;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (float x)
+{
+ memory_float m;
+ size_t i;
+ /* Clear it first, in case
+ sizeof (float) < sizeof (memory_float). */
+ memset (&m, 0, sizeof (memory_float));
+ m.value = x;
+ for (i = 0; i < NWORDS; i++)
+ {
+ ored_words[i] |= m.word[i];
+ anded_words[i] &= m.word[i];
+ }
+}
+int main ()
+{
+ size_t j;
+ FILE *fp = fopen ("conftest.out", "w");
+ if (fp == NULL)
+ return 1;
+ for (j = 0; j < NWORDS; j++)
+ anded_words[j] = ~ (unsigned int) 0;
+ add_to_ored_words (0.25f);
+ add_to_ored_words (0.5f);
+ add_to_ored_words (1.0f);
+ add_to_ored_words (2.0f);
+ add_to_ored_words (4.0f);
+ /* Remove bits that are common (e.g. if representation of the first mantissa
+ bit is explicit). */
+ for (j = 0; j < NWORDS; j++)
+ ored_words[j] &= ~anded_words[j];
+ /* Now find the nonzero word. */
+ for (j = 0; j < NWORDS; j++)
+ if (ored_words[j] != 0)
+ break;
+ if (j < NWORDS)
+ {
+ size_t i;
+ for (i = j + 1; i < NWORDS; i++)
+ if (ored_words[i] != 0)
+ {
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+ }
+ for (i = 0; ; i++)
+ if ((ored_words[j] >> i) & 1)
+ {
+ fprintf (fp, "word %d bit %d", (int) j, (int) i);
+ return (fclose (fp) != 0);
+ }
+ }
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_cc_float_expbit0=`cat conftest.out`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_cc_float_expbit0="unknown"
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ rm -f conftest.out
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_cc_float_expbit0" >&5
+$as_echo "$gl_cv_cc_float_expbit0" >&6; }
+ case "$gl_cv_cc_float_expbit0" in
+ word*bit*)
+ word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
+ bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'`
+
+cat >>confdefs.h <<_ACEOF
+#define FLT_EXPBIT0_WORD $word
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define FLT_EXPBIT0_BIT $bit
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if test "${ac_cv_c_bigendian+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_bigendian=unknown
+ # See if we're dealing with a universal compiler.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifndef __APPLE_CC__
+ not a universal capable compiler
+ #endif
+ typedef int dummy;
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+
+ # Check for potential -arch flags. It is not universal unless
+ # there are some -arch flags. Note that *ppc* also matches
+ # ppc64. This check is also rather less than ideal.
+ case "${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}" in #(
+ *-arch*ppc*|*-arch*i386*|*-arch*x86_64*) ac_cv_c_bigendian=universal;;
+ esac
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if test $ac_cv_c_bigendian = unknown; then
+ # See if sys/param.h defines the BYTE_ORDER macro.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+ && LITTLE_ENDIAN)
+ bogus endian macros
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ # It does; now see whether it defined to BIG_ENDIAN or not.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_bigendian=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_c_bigendian=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $ac_cv_c_bigendian = unknown; then
+ # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+ bogus endian macros
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ # It does; now see whether it defined to _BIG_ENDIAN or not.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+ not big endian
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_bigendian=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_c_bigendian=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $ac_cv_c_bigendian = unknown; then
+ # Compile a test program.
+ if test "$cross_compiling" = yes; then
+ # Try to guess by grepping values from an object file.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+short int ascii_mm[] =
+ { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+ short int ascii_ii[] =
+ { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+ int use_ascii (int i) {
+ return ascii_mm[i] + ascii_ii[i];
+ }
+ short int ebcdic_ii[] =
+ { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+ short int ebcdic_mm[] =
+ { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+ int use_ebcdic (int i) {
+ return ebcdic_mm[i] + ebcdic_ii[i];
+ }
+ extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+ ac_cv_c_bigendian=yes
+ fi
+ if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+ if test "$ac_cv_c_bigendian" = unknown; then
+ ac_cv_c_bigendian=no
+ else
+ # finding both strings is unlikely to happen, but who knows?
+ ac_cv_c_bigendian=unknown
+ fi
+ fi
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+ long int l;
+ char c[sizeof (long int)];
+ } u;
+ u.l = 1;
+ return u.c[sizeof (long int) - 1] == 1;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_bigendian=no
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_c_bigendian=yes
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+ yes)
+ cat >>confdefs.h <<\_ACEOF
+#define WORDS_BIGENDIAN 1
+_ACEOF
+;; #(
+ no)
+ ;; #(
+ universal)
+
+cat >>confdefs.h <<\_ACEOF
+#define AC_APPLE_UNIVERSAL_BUILD 1
+_ACEOF
+
+ ;; #(
+ *)
+ { { $as_echo "$as_me:$LINENO: error: unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" >&5
+$as_echo "$as_me: error: unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5
+$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
+if test "${am_cv_langinfo_codeset+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <langinfo.h>
+int
+main ()
+{
+char* cs = nl_langinfo(CODESET); return !cs;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ am_cv_langinfo_codeset=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ am_cv_langinfo_codeset=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5
+$as_echo "$am_cv_langinfo_codeset" >&6; }
+ if test $am_cv_langinfo_codeset = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LANGINFO_CODESET 1
+_ACEOF
+
+ fi
+
+{ $as_echo "$as_me:$LINENO: checking whether getc_unlocked is declared" >&5
+$as_echo_n "checking whether getc_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_getc_unlocked+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getc_unlocked
+ (void) getc_unlocked;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getc_unlocked=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getc_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getc_unlocked" >&5
+$as_echo "$ac_cv_have_decl_getc_unlocked" >&6; }
+if test "x$ac_cv_have_decl_getc_unlocked" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5
+$as_echo_n "checking whether we are using the GNU C Library 2.1 or newer... " >&6; }
+if test "${ac_cv_gnu_library_2_1+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+ Lucky GNU user
+ #endif
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Lucky GNU user" >/dev/null 2>&1; then
+ ac_cv_gnu_library_2_1=yes
+else
+ ac_cv_gnu_library_2_1=no
+fi
+rm -f conftest*
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5
+$as_echo "$ac_cv_gnu_library_2_1" >&6; }
+
+ GLIBC21="$ac_cv_gnu_library_2_1"
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5
+$as_echo_n "checking for LC_MESSAGES... " >&6; }
+if test "${gt_cv_val_LC_MESSAGES+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <locale.h>
+int
+main ()
+{
+return LC_MESSAGES
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ gt_cv_val_LC_MESSAGES=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_val_LC_MESSAGES=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_val_LC_MESSAGES" >&5
+$as_echo "$gt_cv_val_LC_MESSAGES" >&6; }
+ if test $gt_cv_val_LC_MESSAGES = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LC_MESSAGES 1
+_ACEOF
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5
+$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
+if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <CoreFoundation/CFPreferences.h>
+int
+main ()
+{
+CFPreferencesCopyAppValue(NULL, NULL)
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ gt_cv_func_CFPreferencesCopyAppValue=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_func_CFPreferencesCopyAppValue=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CFPREFERENCESCOPYAPPVALUE 1
+_ACEOF
+
+ fi
+ { $as_echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5
+$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; }
+if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <CoreFoundation/CFLocale.h>
+int
+main ()
+{
+CFLocaleCopyCurrent();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ gt_cv_func_CFLocaleCopyCurrent=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_func_CFLocaleCopyCurrent=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
+$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
+ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CFLOCALECOPYCURRENT 1
+_ACEOF
+
+ fi
+ INTL_MACOSX_LIBS=
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+ fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether malloc, realloc, calloc are POSIX compliant" >&5
+$as_echo_n "checking whether malloc, realloc, calloc are POSIX compliant... " >&6; }
+if test "${gl_cv_func_malloc_posix+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+ choke me
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_func_malloc_posix=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_malloc_posix=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_malloc_posix" >&5
+$as_echo "$gl_cv_func_malloc_posix" >&6; }
+
+
+ GNULIB_MALLOC_POSIX=0;
+ GNULIB_REALLOC_POSIX=0;
+ GNULIB_CALLOC_POSIX=0;
+ GNULIB_ATOLL=0;
+ GNULIB_GETLOADAVG=0;
+ GNULIB_GETSUBOPT=0;
+ GNULIB_MKDTEMP=0;
+ GNULIB_MKSTEMP=0;
+ GNULIB_PUTENV=0;
+ GNULIB_RANDOM_R=0;
+ GNULIB_RPMATCH=0;
+ GNULIB_SETENV=0;
+ GNULIB_STRTOD=0;
+ GNULIB_STRTOLL=0;
+ GNULIB_STRTOULL=0;
+ GNULIB_UNSETENV=0;
+ HAVE_ATOLL=1;
+ HAVE_CALLOC_POSIX=1;
+ HAVE_GETSUBOPT=1;
+ HAVE_MALLOC_POSIX=1;
+ HAVE_MKDTEMP=1;
+ HAVE_REALLOC_POSIX=1;
+ HAVE_RANDOM_R=1;
+ HAVE_RPMATCH=1;
+ HAVE_SETENV=1;
+ HAVE_STRTOD=1;
+ HAVE_STRTOLL=1;
+ HAVE_STRTOULL=1;
+ HAVE_STRUCT_RANDOM_DATA=1;
+ HAVE_SYS_LOADAVG_H=0;
+ HAVE_UNSETENV=1;
+ HAVE_DECL_GETLOADAVG=1;
+ REPLACE_MKSTEMP=0;
+ REPLACE_PUTENV=0;
+ REPLACE_STRTOD=0;
+ VOID_UNSETENV=0;
+
+
+
+for ac_header in stdlib.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+{ $as_echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5
+$as_echo_n "checking for GNU libc compatible malloc... " >&6; }
+if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_malloc_0_nonnull=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#if defined STDC_HEADERS || defined HAVE_STDLIB_H
+# include <stdlib.h>
+#else
+char *malloc ();
+#endif
+
+int
+main ()
+{
+return ! malloc (0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_malloc_0_nonnull=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_malloc_0_nonnull=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5
+$as_echo "$ac_cv_func_malloc_0_nonnull" >&6; }
+if test $ac_cv_func_malloc_0_nonnull = yes; then
+ gl_cv_func_malloc_0_nonnull=1
+else
+ gl_cv_func_malloc_0_nonnull=0
+fi
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define MALLOC_0_IS_NONNULL $gl_cv_func_malloc_0_nonnull
+_ACEOF
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for long long int" >&5
+$as_echo_n "checking for long long int... " >&6; }
+if test "${ac_cv_type_long_long_int+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+
+ /* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* For now, do not test the preprocessor; as of 2007 there are too many
+ implementations with broken preprocessors. Perhaps this can
+ be revisited in 2012. In the meantime, code should not expect
+ #if to work with literals wider than 32 bits. */
+ /* Test literals. */
+ long long int ll = 9223372036854775807ll;
+ long long int nll = -9223372036854775807LL;
+ unsigned long long int ull = 18446744073709551615ULL;
+ /* Test constant expressions. */
+ typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+ ? 1 : -1)];
+ typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+ ? 1 : -1)];
+ int i = 63;
+int
+main ()
+{
+/* Test availability of runtime routines for shift and division. */
+ long long int llmax = 9223372036854775807ll;
+ unsigned long long int ullmax = 18446744073709551615ull;
+ return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+ | (llmax / ll) | (llmax % ll)
+ | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+ | (ullmax / ull) | (ullmax % ull));
+ ;
+ return 0;
+}
+
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ if test "$cross_compiling" = yes; then
+ ac_cv_type_long_long_int=yes
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <limits.h>
+ #ifndef LLONG_MAX
+ # define HALF \
+ (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+ # define LLONG_MAX (HALF - 1 + HALF)
+ #endif
+int
+main ()
+{
+long long int n = 1;
+ int i;
+ for (i = 0; ; i++)
+ {
+ long long int m = n << i;
+ if (m >> i != n)
+ return 1;
+ if (LLONG_MAX / 2 < m)
+ break;
+ }
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_long_long_int=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_type_long_long_int=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_long_long_int=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_long_long_int" >&5
+$as_echo "$ac_cv_type_long_long_int" >&6; }
+ if test $ac_cv_type_long_long_int = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LONG_LONG_INT 1
+_ACEOF
+
+ fi
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for mbstate_t" >&5
+$as_echo_n "checking for mbstate_t... " >&6; }
+if test "${ac_cv_type_mbstate_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+# include <wchar.h>
+int
+main ()
+{
+mbstate_t x; return sizeof x;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_mbstate_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_mbstate_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_mbstate_t" >&5
+$as_echo "$ac_cv_type_mbstate_t" >&6; }
+ if test $ac_cv_type_mbstate_t = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MBSTATE_T 1
+_ACEOF
+
+ else
+
+cat >>confdefs.h <<\_ACEOF
+#define mbstate_t int
+_ACEOF
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking whether mbrtowc and mbstate_t are properly declared" >&5
+$as_echo_n "checking whether mbrtowc and mbstate_t are properly declared... " >&6; }
+if test "${ac_cv_func_mbrtowc+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <wchar.h>
+int
+main ()
+{
+wchar_t wc;
+ char const s[] = "";
+ size_t n = 1;
+ mbstate_t state;
+ return ! (sizeof state && (mbrtowc) (&wc, s, n, &state));
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ ac_cv_func_mbrtowc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_mbrtowc=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mbrtowc" >&5
+$as_echo "$ac_cv_func_mbrtowc" >&6; }
+ if test $ac_cv_func_mbrtowc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MBRTOWC 1
+_ACEOF
+
+ fi
+
+
+ GNULIB_BTOWC=0;
+ GNULIB_WCTOB=0;
+ GNULIB_MBSINIT=0;
+ GNULIB_MBRTOWC=0;
+ GNULIB_MBRLEN=0;
+ GNULIB_MBSRTOWCS=0;
+ GNULIB_MBSNRTOWCS=0;
+ GNULIB_WCRTOMB=0;
+ GNULIB_WCSRTOMBS=0;
+ GNULIB_WCSNRTOMBS=0;
+ GNULIB_WCWIDTH=0;
+ HAVE_BTOWC=1;
+ HAVE_MBSINIT=1;
+ HAVE_MBRTOWC=1;
+ HAVE_MBRLEN=1;
+ HAVE_MBSRTOWCS=1;
+ HAVE_MBSNRTOWCS=1;
+ HAVE_WCRTOMB=1;
+ HAVE_WCSRTOMBS=1;
+ HAVE_WCSNRTOMBS=1;
+ HAVE_DECL_WCTOB=1;
+ HAVE_DECL_WCWIDTH=1;
+ REPLACE_MBSTATE_T=0;
+ REPLACE_BTOWC=0;
+ REPLACE_WCTOB=0;
+ REPLACE_MBSINIT=0;
+ REPLACE_MBRTOWC=0;
+ REPLACE_MBRLEN=0;
+ REPLACE_MBSRTOWCS=0;
+ REPLACE_MBSNRTOWCS=0;
+ REPLACE_WCRTOMB=0;
+ REPLACE_WCSRTOMBS=0;
+ REPLACE_WCSNRTOMBS=0;
+ REPLACE_WCWIDTH=0;
+ WCHAR_H='';
+
+
+
+
+
+for ac_func in $ac_func_list
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a traditional japanese locale" >&5
+$as_echo_n "checking for a traditional japanese locale... " >&6; }
+if test "${gt_cv_locale_ja+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+ const char *p;
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether MB_CUR_MAX is > 1. This excludes the dysfunctional locales
+ on Cygwin 1.5.x. */
+ if (MB_CUR_MAX == 1)
+ return 1;
+ /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+ This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+ for (p = buf; *p != '\0'; p++)
+ if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+ return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the AIX locale name.
+ if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja_JP
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja_JP.EUC-JP
+ else
+ # Test for the HP-UX, OSF/1, NetBSD locale name.
+ if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja_JP.eucJP
+ else
+ # Test for the IRIX, FreeBSD locale name.
+ if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja_JP.EUC
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja
+ else
+ # Special test for NetBSD 1.6.
+ if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then
+ gt_cv_locale_ja=ja_JP.eucJP
+ else
+ # None found.
+ gt_cv_locale_ja=none
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_ja" >&5
+$as_echo "$gt_cv_locale_ja" >&6; }
+ LOCALE_JA=$gt_cv_locale_ja
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a transitional chinese locale" >&5
+$as_echo_n "checking for a transitional chinese locale... " >&6; }
+if test "${gt_cv_locale_zh_CN+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <stdlib.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+ const char *p;
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+ This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+ for (p = buf; *p != '\0'; p++)
+ if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+ return 1;
+ /* Check whether a typical GB18030 multibyte sequence is recognized as a
+ single wide character. This excludes the GB2312 and GBK encodings. */
+ if (mblen ("\203\062\332\066", 5) != 4)
+ return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the locale name without encoding suffix.
+ if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_zh_CN=zh_CN
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_zh_CN=zh_CN.GB18030
+ else
+ # None found.
+ gt_cv_locale_zh_CN=none
+ fi
+ fi
+ else
+ # If there was a link error, due to mblen(), the system is so old that
+ # it certainly doesn't have a chinese locale.
+ gt_cv_locale_zh_CN=none
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_zh_CN" >&5
+$as_echo "$gt_cv_locale_zh_CN" >&6; }
+ LOCALE_ZH_CN=$gt_cv_locale_zh_CN
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a french Unicode locale" >&5
+$as_echo_n "checking for a french Unicode locale... " >&6; }
+if test "${gt_cv_locale_fr_utf8+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
+ imitates locale dependent behaviour by looking at the environment
+ variables, and all locales use the UTF-8 encoding. */
+#if !(defined __BEOS__ || defined __HAIKU__)
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+# if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+# endif
+# ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+ two bytes long, with UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 4
+ || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+ return 1;
+#endif
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR.UTF-8
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr.UTF-8
+ else
+ # None found.
+ gt_cv_locale_fr_utf8=none
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr_utf8" >&5
+$as_echo "$gt_cv_locale_fr_utf8" >&6; }
+ LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+
+
+
+ GNULIB_MEMCHR=0;
+ GNULIB_MEMMEM=0;
+ GNULIB_MEMPCPY=0;
+ GNULIB_MEMRCHR=0;
+ GNULIB_RAWMEMCHR=0;
+ GNULIB_STPCPY=0;
+ GNULIB_STPNCPY=0;
+ GNULIB_STRCHRNUL=0;
+ GNULIB_STRDUP=0;
+ GNULIB_STRNDUP=0;
+ GNULIB_STRNLEN=0;
+ GNULIB_STRPBRK=0;
+ GNULIB_STRSEP=0;
+ GNULIB_STRSTR=0;
+ GNULIB_STRCASESTR=0;
+ GNULIB_STRTOK_R=0;
+ GNULIB_MBSLEN=0;
+ GNULIB_MBSNLEN=0;
+ GNULIB_MBSCHR=0;
+ GNULIB_MBSRCHR=0;
+ GNULIB_MBSSTR=0;
+ GNULIB_MBSCASECMP=0;
+ GNULIB_MBSNCASECMP=0;
+ GNULIB_MBSPCASECMP=0;
+ GNULIB_MBSCASESTR=0;
+ GNULIB_MBSCSPN=0;
+ GNULIB_MBSPBRK=0;
+ GNULIB_MBSSPN=0;
+ GNULIB_MBSSEP=0;
+ GNULIB_MBSTOK_R=0;
+ GNULIB_STRERROR=0;
+ GNULIB_STRSIGNAL=0;
+ GNULIB_STRVERSCMP=0;
+ HAVE_DECL_MEMMEM=1;
+ HAVE_MEMPCPY=1;
+ HAVE_DECL_MEMRCHR=1;
+ HAVE_RAWMEMCHR=1;
+ HAVE_STPCPY=1;
+ HAVE_STPNCPY=1;
+ HAVE_STRCHRNUL=1;
+ HAVE_DECL_STRDUP=1;
+ HAVE_STRNDUP=1;
+ HAVE_DECL_STRNDUP=1;
+ HAVE_DECL_STRNLEN=1;
+ HAVE_STRPBRK=1;
+ HAVE_STRSEP=1;
+ HAVE_STRCASESTR=1;
+ HAVE_DECL_STRTOK_R=1;
+ HAVE_DECL_STRERROR=1;
+ HAVE_DECL_STRSIGNAL=1;
+ HAVE_STRVERSCMP=1;
+ REPLACE_MEMCHR=0;
+ REPLACE_MEMMEM=0;
+ REPLACE_STRDUP=0;
+ REPLACE_STRSTR=0;
+ REPLACE_STRCASESTR=0;
+ REPLACE_STRERROR=0;
+ REPLACE_STRSIGNAL=0;
+
+
+
+
+
+
+
+
+
+
+
+
+ # Check for mmap(). Don't use AC_FUNC_MMAP, because it checks too much: it
+ # fails on HP-UX 11, because MAP_FIXED mappings do not work. But this is
+ # irrelevant for anonymous mappings.
+ { $as_echo "$as_me:$LINENO: checking for mmap" >&5
+$as_echo_n "checking for mmap... " >&6; }
+if test "${ac_cv_func_mmap+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define mmap to an innocuous variant, in case <limits.h> declares mmap.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define mmap innocuous_mmap
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char mmap (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef mmap
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char mmap ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_mmap || defined __stub___mmap
+choke me
+#endif
+
+int
+main ()
+{
+return mmap ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ ac_cv_func_mmap=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_mmap=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mmap" >&5
+$as_echo "$ac_cv_func_mmap" >&6; }
+if test "x$ac_cv_func_mmap" = x""yes; then
+ gl_have_mmap=yes
+else
+ gl_have_mmap=no
+fi
+
+
+ # Try to allow MAP_ANONYMOUS.
+ gl_have_mmap_anonymous=no
+ if test $gl_have_mmap = yes; then
+ { $as_echo "$as_me:$LINENO: checking for MAP_ANONYMOUS" >&5
+$as_echo_n "checking for MAP_ANONYMOUS... " >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/mman.h>
+#ifdef MAP_ANONYMOUS
+ I cant identify this map.
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "I cant identify this map." >/dev/null 2>&1; then
+ gl_have_mmap_anonymous=yes
+fi
+rm -f conftest*
+
+ if test $gl_have_mmap_anonymous != yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/mman.h>
+#ifdef MAP_ANON
+ I cant identify this map.
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "I cant identify this map." >/dev/null 2>&1; then
+
+cat >>confdefs.h <<\_ACEOF
+#define MAP_ANONYMOUS MAP_ANON
+_ACEOF
+
+ gl_have_mmap_anonymous=yes
+fi
+rm -f conftest*
+
+ fi
+ { $as_echo "$as_me:$LINENO: result: $gl_have_mmap_anonymous" >&5
+$as_echo "$gl_have_mmap_anonymous" >&6; }
+ if test $gl_have_mmap_anonymous = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MAP_ANONYMOUS 1
+_ACEOF
+
+ fi
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in memchr
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+
+fi
+done
+
+
+ if test $ac_cv_func_memchr = no; then
+
+
+for ac_header in bp-sym.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+ REPLACE_MEMCHR=1
+ fi
+
+ if test $ac_cv_func_memchr = yes; then
+ # Detect platform-specific bugs in some versions of glibc:
+ # memchr should not dereference anything with length 0
+ # http://bugzilla.redhat.com/499689
+ # memchr should not dereference overestimated length after a match
+ # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=521737
+ # http://sourceware.org/bugzilla/show_bug.cgi?id=10162
+ # Assume that memchr works on platforms that lack mprotect.
+ { $as_echo "$as_me:$LINENO: checking whether memchr works" >&5
+$as_echo_n "checking whether memchr works... " >&6; }
+if test "${gl_cv_func_memchr_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_memchr_works="guessing no"
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <string.h>
+#if HAVE_SYS_MMAN_H
+# include <fcntl.h>
+# include <unistd.h>
+# include <sys/types.h>
+# include <sys/mman.h>
+# ifndef MAP_FILE
+# define MAP_FILE 0
+# endif
+#endif
+
+int
+main ()
+{
+
+ char *fence = NULL;
+#if HAVE_SYS_MMAN_H && HAVE_MPROTECT
+# if HAVE_MAP_ANONYMOUS
+ const int flags = MAP_ANONYMOUS | MAP_PRIVATE;
+ const int fd = -1;
+# else /* !HAVE_MAP_ANONYMOUS */
+ const int flags = MAP_FILE | MAP_PRIVATE;
+ int fd = open ("/dev/zero", O_RDONLY, 0666);
+ if (fd >= 0)
+# endif
+ {
+ int pagesize = getpagesize ();
+ char *two_pages =
+ (char *) mmap (NULL, 2 * pagesize, PROT_READ | PROT_WRITE,
+ flags, fd, 0);
+ if (two_pages != (char *)(-1)
+ && mprotect (two_pages + pagesize, pagesize, PROT_NONE) == 0)
+ fence = two_pages + pagesize;
+ }
+#endif
+ if (fence)
+ {
+ if (memchr (fence, 0, 0))
+ return 1;
+ strcpy (fence - 9, "12345678");
+ if (memchr (fence - 9, 0, 79) != fence - 1)
+ return 2;
+ }
+ return 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_memchr_works=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_memchr_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_memchr_works" >&5
+$as_echo "$gl_cv_func_memchr_works" >&6; }
+ if test "$gl_cv_func_memchr_works" != yes; then
+
+
+for ac_header in bp-sym.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+ REPLACE_MEMCHR=1
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS memchr.$ac_objext"
+
+ fi
+ fi
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether <limits.h> defines MIN and MAX" >&5
+$as_echo_n "checking whether <limits.h> defines MIN and MAX... " >&6; }
+if test "${gl_cv_minmax_in_limits_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <limits.h>
+int x = MIN (42, 17);
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_minmax_in_limits_h=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_minmax_in_limits_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_minmax_in_limits_h" >&5
+$as_echo "$gl_cv_minmax_in_limits_h" >&6; }
+ if test $gl_cv_minmax_in_limits_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MINMAX_IN_LIMITS_H 1
+_ACEOF
+
+ fi
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether <sys/param.h> defines MIN and MAX" >&5
+$as_echo_n "checking whether <sys/param.h> defines MIN and MAX... " >&6; }
+if test "${gl_cv_minmax_in_sys_param_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/param.h>
+int x = MIN (42, 17);
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_minmax_in_sys_param_h=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_minmax_in_sys_param_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_minmax_in_sys_param_h" >&5
+$as_echo "$gl_cv_minmax_in_sys_param_h" >&6; }
+ if test $gl_cv_minmax_in_sys_param_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MINMAX_IN_SYS_PARAM_H 1
+_ACEOF
+
+ fi
+
+
+
+
+
+ gl_cv_c_multiarch=no
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifndef __APPLE_CC__
+ not a universal capable compiler
+ #endif
+ typedef int dummy;
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+
+ arch=
+ prev=
+ for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
+ if test -n "$prev"; then
+ case $word in
+ i?86 | x86_64 | ppc | ppc64)
+ if test -z "$arch" || test "$arch" = "$word"; then
+ arch="$word"
+ else
+ gl_cv_c_multiarch=yes
+ fi
+ ;;
+ esac
+ prev=
+ else
+ if test "x$word" = "x-arch"; then
+ prev=arch
+ fi
+ fi
+ done
+
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if test $gl_cv_c_multiarch = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define AA_APPLE_UNIVERSAL_BUILD 1
+_ACEOF
+
+ APPLE_UNIVERSAL_BUILD=1
+ else
+ APPLE_UNIVERSAL_BUILD=0
+ fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether to activate relocatable installation" >&5
+$as_echo_n "checking whether to activate relocatable installation... " >&6; }
+ # Check whether --enable-relocatable was given.
+if test "${enable_relocatable+set}" = set; then
+ enableval=$enable_relocatable; if test "$enableval" != no; then
+ RELOCATABLE=yes
+ else
+ RELOCATABLE=no
+ fi
+
+else
+ RELOCATABLE=no
+fi
+
+
+ { $as_echo "$as_me:$LINENO: result: $RELOCATABLE" >&5
+$as_echo "$RELOCATABLE" >&6; }
+
+
+
+ if test "X$prefix" = "XNONE"; then
+ reloc_final_prefix="$ac_default_prefix"
+ else
+ reloc_final_prefix="$prefix"
+ fi
+
+cat >>confdefs.h <<_ACEOF
+#define INSTALLPREFIX "${reloc_final_prefix}"
+_ACEOF
+
+ if test $RELOCATABLE = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_RELOCATABLE 1
+_ACEOF
+
+ fi
+
+{ $as_echo "$as_me:$LINENO: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if test "${ac_cv_header_stdbool_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <stdbool.h>
+ #ifndef bool
+ "error: bool is not defined"
+ #endif
+ #ifndef false
+ "error: false is not defined"
+ #endif
+ #if false
+ "error: false is not 0"
+ #endif
+ #ifndef true
+ "error: true is not defined"
+ #endif
+ #if true != 1
+ "error: true is not 1"
+ #endif
+ #ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+ #endif
+
+ struct s { _Bool s: 1; _Bool t; } s;
+
+ char a[true == 1 ? 1 : -1];
+ char b[false == 0 ? 1 : -1];
+ char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+ char d[(bool) 0.5 == true ? 1 : -1];
+ bool e = &s;
+ char f[(_Bool) 0.0 == false ? 1 : -1];
+ char g[true];
+ char h[sizeof (_Bool)];
+ char i[sizeof s.t];
+ enum { j = false, k = true, l = false * true, m = true * 256 };
+ _Bool n[m];
+ char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+ char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+ #if defined __xlc__ || defined __GNUC__
+ /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
+ reported by James Lemley on 2005-10-05; see
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+ This test is not quite right, since xlc is allowed to
+ reject this program, as the initializer for xlcbug is
+ not one of the forms that C requires support for.
+ However, doing the test right would require a run-time
+ test, and that would make cross-compilation harder.
+ Let us hope that IBM fixes the xlc bug, and also adds
+ support for this kind of constant expression. In the
+ meantime, this test will reject xlc, which is OK, since
+ our stdbool.h substitute should suffice. We also test
+ this with GCC, where it should work, to detect more
+ quickly whether someone messes up the test in the
+ future. */
+ char digs[] = "0123456789";
+ int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
+ #endif
+ /* Catch a bug in an HP-UX C compiler. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ */
+ _Bool q = true;
+ _Bool *pq = &q;
+
+int
+main ()
+{
+
+ *pq |= q;
+ *pq |= ! q;
+ /* Refer to every declared value, to avoid compiler optimizations. */
+ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+ + !m + !n + !o + !p + !q + !pq);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_header_stdbool_h=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_header_stdbool_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for _Bool" >&5
+$as_echo_n "checking for _Bool... " >&6; }
+if test "${ac_cv_type__Bool+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_type__Bool=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof (_Bool))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof ((_Bool)))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type__Bool=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type__Bool" >&5
+$as_echo "$ac_cv_type__Bool" >&6; }
+if test "x$ac_cv_type__Bool" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+ if test $ac_cv_header_stdbool_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STDBOOL_H 1
+_ACEOF
+
+ fi
+
+ { $as_echo "$as_me:$LINENO: checking for unsigned long long int" >&5
+$as_echo_n "checking for unsigned long long int... " >&6; }
+if test "${ac_cv_type_unsigned_long_long_int+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+
+ /* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* For now, do not test the preprocessor; as of 2007 there are too many
+ implementations with broken preprocessors. Perhaps this can
+ be revisited in 2012. In the meantime, code should not expect
+ #if to work with literals wider than 32 bits. */
+ /* Test literals. */
+ long long int ll = 9223372036854775807ll;
+ long long int nll = -9223372036854775807LL;
+ unsigned long long int ull = 18446744073709551615ULL;
+ /* Test constant expressions. */
+ typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+ ? 1 : -1)];
+ typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+ ? 1 : -1)];
+ int i = 63;
+int
+main ()
+{
+/* Test availability of runtime routines for shift and division. */
+ long long int llmax = 9223372036854775807ll;
+ unsigned long long int ullmax = 18446744073709551615ull;
+ return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+ | (llmax / ll) | (llmax % ll)
+ | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+ | (ullmax / ull) | (ullmax % ull));
+ ;
+ return 0;
+}
+
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ ac_cv_type_unsigned_long_long_int=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_unsigned_long_long_int=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long_int" >&5
+$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
+ if test $ac_cv_type_unsigned_long_long_int = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_UNSIGNED_LONG_LONG_INT 1
+_ACEOF
+
+ fi
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for C/C++ restrict keyword" >&5
+$as_echo_n "checking for C/C++ restrict keyword... " >&6; }
+if test "${ac_cv_c_restrict+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_restrict=no
+ # The order here caters to the fact that C++ does not require restrict.
+ for ac_kw in __restrict __restrict__ _Restrict restrict; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+typedef int * int_ptr;
+ int foo (int_ptr $ac_kw ip) {
+ return ip[0];
+ }
+int
+main ()
+{
+int s[1];
+ int * $ac_kw t = s;
+ t[0] = 0;
+ return foo(t)
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_restrict=$ac_kw
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test "$ac_cv_c_restrict" != no && break
+ done
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_restrict" >&5
+$as_echo "$ac_cv_c_restrict" >&6; }
+
+
+ case $ac_cv_c_restrict in
+ restrict) ;;
+ no) cat >>confdefs.h <<\_ACEOF
+#define restrict /**/
+_ACEOF
+ ;;
+ *) cat >>confdefs.h <<_ACEOF
+#define restrict $ac_cv_c_restrict
+_ACEOF
+ ;;
+ esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_string_h='<'string.h'>'
+ else
+ { $as_echo "$as_me:$LINENO: checking absolute name of <string.h>" >&5
+$as_echo_n "checking absolute name of <string.h>... " >&6; }
+if test "${gl_cv_next_string_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test $ac_cv_header_string_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+ gl_cv_next_string_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n '\#/string.h#{
+ s#.*"\(.*/string.h\)".*#\1#
+ s#^/[^/]#//&#
+ p
+ q
+ }'`'"'
+ else
+ gl_cv_next_string_h='<'string.h'>'
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_string_h" >&5
+$as_echo "$gl_cv_next_string_h" >&6; }
+ fi
+ NEXT_STRING_H=$gl_cv_next_string_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'string.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_string_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_STRING_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for wchar_t" >&5
+$as_echo_n "checking for wchar_t... " >&6; }
+if test "${gt_cv_c_wchar_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stddef.h>
+ wchar_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_c_wchar_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_c_wchar_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_c_wchar_t" >&5
+$as_echo "$gt_cv_c_wchar_t" >&6; }
+ if test $gt_cv_c_wchar_t = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_WCHAR_T 1
+_ACEOF
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for wint_t" >&5
+$as_echo_n "checking for wint_t... " >&6; }
+if test "${gt_cv_c_wint_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+ wint_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_c_wint_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_c_wint_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_c_wint_t" >&5
+$as_echo "$gt_cv_c_wint_t" >&6; }
+ if test $gt_cv_c_wint_t = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_WINT_T 1
+_ACEOF
+
+ fi
+
+{ $as_echo "$as_me:$LINENO: checking for size_t" >&5
+$as_echo_n "checking for size_t... " >&6; }
+if test "${ac_cv_type_size_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_type_size_t=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof (size_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof ((size_t)))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_size_t=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
+$as_echo "$ac_cv_type_size_t" >&6; }
+if test "x$ac_cv_type_size_t" = x""yes; then
+ :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for inttypes.h" >&5
+$as_echo_n "checking for inttypes.h... " >&6; }
+if test "${gl_cv_header_inttypes_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <inttypes.h>
+int
+main ()
+{
+uintmax_t i = (uintmax_t) -1; return !i;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_inttypes_h=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_header_inttypes_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_inttypes_h" >&5
+$as_echo "$gl_cv_header_inttypes_h" >&6; }
+ if test $gl_cv_header_inttypes_h = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INTTYPES_H_WITH_UINTMAX 1
+_ACEOF
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for stdint.h" >&5
+$as_echo_n "checking for stdint.h... " >&6; }
+if test "${gl_cv_header_stdint_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <stdint.h>
+int
+main ()
+{
+uintmax_t i = (uintmax_t) -1; return !i;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_stdint_h=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_header_stdint_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_stdint_h" >&5
+$as_echo "$gl_cv_header_stdint_h" >&6; }
+ if test $gl_cv_header_stdint_h = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STDINT_H_WITH_UINTMAX 1
+_ACEOF
+
+ fi
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for intmax_t" >&5
+$as_echo_n "checking for intmax_t... " >&6; }
+if test "${gt_cv_c_intmax_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stddef.h>
+#include <stdlib.h>
+#if HAVE_STDINT_H_WITH_UINTMAX
+#include <stdint.h>
+#endif
+#if HAVE_INTTYPES_H_WITH_UINTMAX
+#include <inttypes.h>
+#endif
+
+int
+main ()
+{
+intmax_t x = -1; return !x;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_c_intmax_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_c_intmax_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_c_intmax_t" >&5
+$as_echo "$gt_cv_c_intmax_t" >&6; }
+ if test $gt_cv_c_intmax_t = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_INTMAX_T 1
+_ACEOF
+
+ else
+
+ test $ac_cv_type_long_long_int = yes \
+ && ac_type='long long' \
+ || ac_type='long'
+
+cat >>confdefs.h <<_ACEOF
+#define intmax_t $ac_type
+_ACEOF
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ { $as_echo "$as_me:$LINENO: checking whether _snprintf is declared" >&5
+$as_echo_n "checking whether _snprintf is declared... " >&6; }
+if test "${ac_cv_have_decl__snprintf+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdio.h>
+
+int
+main ()
+{
+#ifndef _snprintf
+ (void) _snprintf;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl__snprintf=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl__snprintf=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl__snprintf" >&5
+$as_echo "$ac_cv_have_decl__snprintf" >&6; }
+if test "x$ac_cv_have_decl__snprintf" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL__SNPRINTF 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL__SNPRINTF 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether printf supports 'long double' arguments" >&5
+$as_echo_n "checking whether printf supports 'long double' arguments... " >&6; }
+if test "${gl_cv_func_printf_long_double+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+
+ case "$host_os" in
+ beos*) gl_cv_func_printf_long_double="guessing no";;
+ mingw* | pw*) gl_cv_func_printf_long_double="guessing no";;
+ *) gl_cv_func_printf_long_double="guessing yes";;
+ esac
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stdio.h>
+#include <string.h>
+static char buf[10000];
+int main ()
+{
+ buf[0] = '\0';
+ if (sprintf (buf, "%Lf %d", 1.75L, 33, 44, 55) < 0
+ || strcmp (buf, "1.750000 33") != 0)
+ return 1;
+ buf[0] = '\0';
+ if (sprintf (buf, "%Le %d", 1.75L, 33, 44, 55) < 0
+ || strcmp (buf, "1.750000e+00 33") != 0)
+ return 1;
+ buf[0] = '\0';
+ if (sprintf (buf, "%Lg %d", 1.75L, 33, 44, 55) < 0
+ || strcmp (buf, "1.75 33") != 0)
+ return 1;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_printf_long_double=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_printf_long_double=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_printf_long_double" >&5
+$as_echo "$gl_cv_func_printf_long_double" >&6; }
+
+
+
+ case "$gl_cv_func_printf_long_double" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether printf supports infinite 'double' arguments" >&5
+$as_echo_n "checking whether printf supports infinite 'double' arguments... " >&6; }
+if test "${gl_cv_func_printf_infinite+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+
+ case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_printf_infinite="guessing yes";;
+ # Guess yes on FreeBSD >= 6.
+ freebsd[1-5]*) gl_cv_func_printf_infinite="guessing no";;
+ freebsd* | kfreebsd*) gl_cv_func_printf_infinite="guessing yes";;
+ # Guess yes on MacOS X >= 10.3.
+ darwin[1-6].*) gl_cv_func_printf_infinite="guessing no";;
+ darwin*) gl_cv_func_printf_infinite="guessing yes";;
+ # Guess yes on HP-UX >= 11.
+ hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite="guessing no";;
+ hpux*) gl_cv_func_printf_infinite="guessing yes";;
+ # Guess yes on NetBSD >= 3.
+ netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+ gl_cv_func_printf_infinite="guessing no";;
+ netbsd*) gl_cv_func_printf_infinite="guessing yes";;
+ # Guess yes on BeOS.
+ beos*) gl_cv_func_printf_infinite="guessing yes";;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_printf_infinite="guessing no";;
+ esac
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stdio.h>
+#include <string.h>
+static int
+strisnan (const char *string, size_t start_index, size_t end_index)
+{
+ if (start_index < end_index)
+ {
+ if (string[start_index] == '-')
+ start_index++;
+ if (start_index + 3 <= end_index
+ && memcmp (string + start_index, "nan", 3) == 0)
+ {
+ start_index += 3;
+ if (start_index == end_index
+ || (string[start_index] == '(' && string[end_index - 1] == ')'))
+ return 1;
+ }
+ }
+ return 0;
+}
+static int
+have_minus_zero ()
+{
+ static double plus_zero = 0.0;
+ double minus_zero = - plus_zero;
+ return memcmp (&plus_zero, &minus_zero, sizeof (double)) != 0;
+}
+static char buf[10000];
+static double zero = 0.0;
+int main ()
+{
+ if (sprintf (buf, "%f", 1.0 / 0.0) < 0
+ || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%f", -1.0 / 0.0) < 0
+ || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%f", zero / zero) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%e", 1.0 / 0.0) < 0
+ || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%e", -1.0 / 0.0) < 0
+ || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%e", zero / zero) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%g", 1.0 / 0.0) < 0
+ || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%g", -1.0 / 0.0) < 0
+ || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%g", zero / zero) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ /* This test fails on HP-UX 10.20. */
+ if (have_minus_zero ())
+ if (sprintf (buf, "%g", - zero) < 0
+ || strcmp (buf, "-0") != 0)
+ return 1;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_printf_infinite=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_printf_infinite=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_printf_infinite" >&5
+$as_echo "$gl_cv_func_printf_infinite" >&6; }
+
+
+
+
+
+ if test -n "$gl_printf_safe"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define CHECK_PRINTF_SAFE 1
+_ACEOF
+
+ fi
+ case "$gl_cv_func_printf_long_double" in
+ *yes)
+ { $as_echo "$as_me:$LINENO: checking whether printf supports infinite 'long double' arguments" >&5
+$as_echo_n "checking whether printf supports infinite 'long double' arguments... " >&6; }
+if test "${gl_cv_func_printf_infinite_long_double+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+
+ case "$host_cpu" in
+ # Guess no on ia64, x86_64, i386.
+ ia64 | x86_64 | i*86) gl_cv_func_printf_infinite_long_double="guessing no";;
+ *)
+ case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_printf_infinite_long_double="guessing yes";;
+ # Guess yes on FreeBSD >= 6.
+ freebsd[1-5]*) gl_cv_func_printf_infinite_long_double="guessing no";;
+ freebsd* | kfreebsd*) gl_cv_func_printf_infinite_long_double="guessing yes";;
+ # Guess yes on MacOS X >= 10.3.
+ darwin[1-6].*) gl_cv_func_printf_infinite_long_double="guessing no";;
+ darwin*) gl_cv_func_printf_infinite_long_double="guessing yes";;
+ # Guess yes on HP-UX >= 11.
+ hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite_long_double="guessing no";;
+ hpux*) gl_cv_func_printf_infinite_long_double="guessing yes";;
+ # Guess yes on NetBSD >= 3.
+ netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+ gl_cv_func_printf_infinite_long_double="guessing no";;
+ netbsd*) gl_cv_func_printf_infinite_long_double="guessing yes";;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_printf_infinite_long_double="guessing no";;
+ esac
+ ;;
+ esac
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+
+#include <stdlib.h>
+#if defined __MACH__ && defined __APPLE__
+/* Avoid a crash on MacOS X. */
+#include <mach/mach.h>
+#include <mach/mach_error.h>
+#include <mach/thread_status.h>
+#include <mach/exception.h>
+#include <mach/task.h>
+#include <pthread.h>
+/* The exception port on which our thread listens. */
+static mach_port_t our_exception_port;
+/* The main function of the thread listening for exceptions of type
+ EXC_BAD_ACCESS. */
+static void *
+mach_exception_thread (void *arg)
+{
+ /* Buffer for a message to be received. */
+ struct {
+ mach_msg_header_t head;
+ mach_msg_body_t msgh_body;
+ char data[1024];
+ } msg;
+ mach_msg_return_t retval;
+ /* Wait for a message on the exception port. */
+ retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg),
+ our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
+ if (retval != MACH_MSG_SUCCESS)
+ abort ();
+ exit (1);
+}
+static void
+nocrash_init (void)
+{
+ mach_port_t self = mach_task_self ();
+ /* Allocate a port on which the thread shall listen for exceptions. */
+ if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port)
+ == KERN_SUCCESS) {
+ /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */
+ if (mach_port_insert_right (self, our_exception_port, our_exception_port,
+ MACH_MSG_TYPE_MAKE_SEND)
+ == KERN_SUCCESS) {
+ /* The exceptions we want to catch. Only EXC_BAD_ACCESS is interesting
+ for us. */
+ exception_mask_t mask = EXC_MASK_BAD_ACCESS;
+ /* Create the thread listening on the exception port. */
+ pthread_attr_t attr;
+ pthread_t thread;
+ if (pthread_attr_init (&attr) == 0
+ && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0
+ && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) {
+ pthread_attr_destroy (&attr);
+ /* Replace the exception port info for these exceptions with our own.
+ Note that we replace the exception port for the entire task, not only
+ for a particular thread. This has the effect that when our exception
+ port gets the message, the thread specific exception port has already
+ been asked, and we don't need to bother about it.
+ See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */
+ task_set_exception_ports (self, mask, our_exception_port,
+ EXCEPTION_DEFAULT, MACHINE_THREAD_STATE);
+ }
+ }
+ }
+}
+#else
+/* Avoid a crash on POSIX systems. */
+#include <signal.h>
+/* A POSIX signal handler. */
+static void
+exception_handler (int sig)
+{
+ exit (1);
+}
+static void
+nocrash_init (void)
+{
+#ifdef SIGSEGV
+ signal (SIGSEGV, exception_handler);
+#endif
+#ifdef SIGBUS
+ signal (SIGBUS, exception_handler);
+#endif
+}
+#endif
+
+#include <float.h>
+#include <stdio.h>
+#include <string.h>
+static int
+strisnan (const char *string, size_t start_index, size_t end_index)
+{
+ if (start_index < end_index)
+ {
+ if (string[start_index] == '-')
+ start_index++;
+ if (start_index + 3 <= end_index
+ && memcmp (string + start_index, "nan", 3) == 0)
+ {
+ start_index += 3;
+ if (start_index == end_index
+ || (string[start_index] == '(' && string[end_index - 1] == ')'))
+ return 1;
+ }
+ }
+ return 0;
+}
+static char buf[10000];
+static long double zeroL = 0.0L;
+int main ()
+{
+ nocrash_init();
+ if (sprintf (buf, "%Lf", 1.0L / 0.0L) < 0
+ || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%Lf", -1.0L / 0.0L) < 0
+ || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%Lf", zeroL / zeroL) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Le", 1.0L / 0.0L) < 0
+ || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%Le", -1.0L / 0.0L) < 0
+ || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%Le", zeroL / zeroL) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Lg", 1.0L / 0.0L) < 0
+ || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%Lg", -1.0L / 0.0L) < 0
+ || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%Lg", zeroL / zeroL) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+/* Representation of an 80-bit 'long double' as an initializer for a sequence
+ of 'unsigned int' words. */
+# ifdef WORDS_BIGENDIAN
+# define LDBL80_WORDS(exponent,manthi,mantlo) \
+ { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \
+ ((unsigned int) (manthi) << 16) | (unsigned int) (mantlo) >> 16), \
+ (unsigned int) (mantlo) << 16 \
+ }
+# else
+# define LDBL80_WORDS(exponent,manthi,mantlo) \
+ { mantlo, manthi, exponent }
+# endif
+ { /* Quiet NaN. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Le", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Lg", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ }
+ {
+ /* Signalling NaN. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Le", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Lg", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ }
+ { /* Pseudo-NaN. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Le", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Lg", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ }
+ { /* Pseudo-Infinity. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Le", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Lg", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ }
+ { /* Pseudo-Zero. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Le", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Lg", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ }
+ { /* Unnormalized number. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Le", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Lg", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ }
+ { /* Pseudo-Denormal. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Le", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Lg", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ }
+#endif
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_printf_infinite_long_double=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_printf_infinite_long_double=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_printf_infinite_long_double" >&5
+$as_echo "$gl_cv_func_printf_infinite_long_double" >&6; }
+ ;;
+ *)
+ gl_cv_func_printf_infinite_long_double="irrelevant"
+ ;;
+ esac
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether printf supports the 'a' and 'A' directives" >&5
+$as_echo_n "checking whether printf supports the 'a' and 'A' directives... " >&6; }
+if test "${gl_cv_func_printf_directive_a+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+
+ case "$host_os" in
+ # Guess yes on glibc >= 2.5 systems.
+ *-gnu*)
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <features.h>
+ #ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 5) || (__GLIBC__ > 2)
+ BZ2908
+ #endif
+ #endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "BZ2908" >/dev/null 2>&1; then
+ gl_cv_func_printf_directive_a="guessing yes"
+else
+ gl_cv_func_printf_directive_a="guessing no"
+fi
+rm -f conftest*
+
+ ;;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_printf_directive_a="guessing no";;
+ esac
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+ if (sprintf (buf, "%a %d", 3.1416015625, 33, 44, 55) < 0
+ || (strcmp (buf, "0x1.922p+1 33") != 0
+ && strcmp (buf, "0x3.244p+0 33") != 0
+ && strcmp (buf, "0x6.488p-1 33") != 0
+ && strcmp (buf, "0xc.91p-2 33") != 0))
+ return 1;
+ if (sprintf (buf, "%A %d", -3.1416015625, 33, 44, 55) < 0
+ || (strcmp (buf, "-0X1.922P+1 33") != 0
+ && strcmp (buf, "-0X3.244P+0 33") != 0
+ && strcmp (buf, "-0X6.488P-1 33") != 0
+ && strcmp (buf, "-0XC.91P-2 33") != 0))
+ return 1;
+ /* This catches a FreeBSD 6.1 bug: it doesn't round. */
+ if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0
+ || (strcmp (buf, "0x1.83p+0 33") != 0
+ && strcmp (buf, "0x3.05p-1 33") != 0
+ && strcmp (buf, "0x6.0ap-2 33") != 0
+ && strcmp (buf, "0xc.14p-3 33") != 0))
+ return 1;
+ /* This catches a FreeBSD 6.1 bug. See
+ <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+ if (sprintf (buf, "%010a %d", 1.0 / 0.0, 33, 44, 55) < 0
+ || buf[0] == '0')
+ return 1;
+ /* This catches a MacOS X 10.3.9 (Darwin 7.9) bug. */
+ if (sprintf (buf, "%.1a", 1.999) < 0
+ || (strcmp (buf, "0x1.0p+1") != 0
+ && strcmp (buf, "0x2.0p+0") != 0
+ && strcmp (buf, "0x4.0p-1") != 0
+ && strcmp (buf, "0x8.0p-2") != 0))
+ return 1;
+ /* This catches the same MacOS X 10.3.9 (Darwin 7.9) bug and also a
+ glibc 2.4 bug <http://sourceware.org/bugzilla/show_bug.cgi?id=2908>. */
+ if (sprintf (buf, "%.1La", 1.999L) < 0
+ || (strcmp (buf, "0x1.0p+1") != 0
+ && strcmp (buf, "0x2.0p+0") != 0
+ && strcmp (buf, "0x4.0p-1") != 0
+ && strcmp (buf, "0x8.0p-2") != 0))
+ return 1;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_printf_directive_a=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_printf_directive_a=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_printf_directive_a" >&5
+$as_echo "$gl_cv_func_printf_directive_a" >&6; }
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether printf supports the 'F' directive" >&5
+$as_echo_n "checking whether printf supports the 'F' directive... " >&6; }
+if test "${gl_cv_func_printf_directive_f+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+
+ case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_printf_directive_f="guessing yes";;
+ # Guess yes on FreeBSD >= 6.
+ freebsd[1-5]*) gl_cv_func_printf_directive_f="guessing no";;
+ freebsd* | kfreebsd*) gl_cv_func_printf_directive_f="guessing yes";;
+ # Guess yes on MacOS X >= 10.3.
+ darwin[1-6].*) gl_cv_func_printf_directive_f="guessing no";;
+ darwin*) gl_cv_func_printf_directive_f="guessing yes";;
+ # Guess yes on Solaris >= 2.10.
+ solaris2.[0-9]*) gl_cv_func_printf_directive_f="guessing no";;
+ solaris*) gl_cv_func_printf_directive_f="guessing yes";;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_printf_directive_f="guessing no";;
+ esac
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+ if (sprintf (buf, "%F %d", 1234567.0, 33, 44, 55) < 0
+ || strcmp (buf, "1234567.000000 33") != 0)
+ return 1;
+ if (sprintf (buf, "%F", 1.0 / 0.0) < 0
+ || (strcmp (buf, "INF") != 0 && strcmp (buf, "INFINITY") != 0))
+ return 1;
+ /* This catches a Cygwin 1.5.x bug. */
+ if (sprintf (buf, "%.F", 1234.0) < 0
+ || strcmp (buf, "1234") != 0)
+ return 1;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_printf_directive_f=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_printf_directive_f=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_printf_directive_f" >&5
+$as_echo "$gl_cv_func_printf_directive_f" >&6; }
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether printf supports the 'ls' directive" >&5
+$as_echo_n "checking whether printf supports the 'ls' directive... " >&6; }
+if test "${gl_cv_func_printf_directive_ls+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+
+ case "$host_os" in
+ openbsd*) gl_cv_func_printf_directive_ls="guessing no";;
+ irix*) gl_cv_func_printf_directive_ls="guessing no";;
+ solaris*) gl_cv_func_printf_directive_ls="guessing no";;
+ cygwin*) gl_cv_func_printf_directive_ls="guessing no";;
+ beos* | haiku*) gl_cv_func_printf_directive_ls="guessing no";;
+ *) gl_cv_func_printf_directive_ls="guessing yes";;
+ esac
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+#include <string.h>
+int main ()
+{
+ char buf[100];
+ /* Test whether %ls works at all.
+ This test fails on OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Haiku, but not on
+ Cygwin 1.5. */
+ {
+ static const wchar_t wstring[] = { 'a', 'b', 'c', 0 };
+ buf[0] = '\0';
+ if (sprintf (buf, "%ls", wstring) < 0
+ || strcmp (buf, "abc") != 0)
+ return 1;
+ }
+ /* This test fails on IRIX 6.5, Solaris 2.6, Cygwin 1.5, Haiku (with an
+ assertion failure inside libc), but not on OpenBSD 4.0. */
+ {
+ static const wchar_t wstring[] = { 'a', 0 };
+ buf[0] = '\0';
+ if (sprintf (buf, "%ls", wstring) < 0
+ || strcmp (buf, "a") != 0)
+ return 1;
+ }
+ /* Test whether precisions in %ls are supported as specified in ISO C 99
+ section 7.19.6.1:
+ "If a precision is specified, no more than that many bytes are written
+ (including shift sequences, if any), and the array shall contain a
+ null wide character if, to equal the multibyte character sequence
+ length given by the precision, the function would need to access a
+ wide character one past the end of the array."
+ This test fails on Solaris 10. */
+ {
+ static const wchar_t wstring[] = { 'a', 'b', (wchar_t) 0xfdfdfdfd, 0 };
+ buf[0] = '\0';
+ if (sprintf (buf, "%.2ls", wstring) < 0
+ || strcmp (buf, "ab") != 0)
+ return 1;
+ }
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_printf_directive_ls=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_printf_directive_ls=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_printf_directive_ls" >&5
+$as_echo "$gl_cv_func_printf_directive_ls" >&6; }
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether printf supports the grouping flag" >&5
+$as_echo_n "checking whether printf supports the grouping flag... " >&6; }
+if test "${gl_cv_func_printf_flag_grouping+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+
+ case "$host_os" in
+ cygwin*) gl_cv_func_printf_flag_grouping="guessing no";;
+ netbsd*) gl_cv_func_printf_flag_grouping="guessing no";;
+ mingw* | pw*) gl_cv_func_printf_flag_grouping="guessing no";;
+ *) gl_cv_func_printf_flag_grouping="guessing yes";;
+ esac
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+ if (sprintf (buf, "%'d %d", 1234567, 99) < 0
+ || buf[strlen (buf) - 1] != '9')
+ return 1;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_printf_flag_grouping=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_printf_flag_grouping=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_printf_flag_grouping" >&5
+$as_echo "$gl_cv_func_printf_flag_grouping" >&6; }
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether printf supports the left-adjust flag correctly" >&5
+$as_echo_n "checking whether printf supports the left-adjust flag correctly... " >&6; }
+if test "${gl_cv_func_printf_flag_leftadjust+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+
+ case "$host_os" in
+ # Guess yes on HP-UX 11.
+ hpux11*) gl_cv_func_printf_flag_leftadjust="guessing yes";;
+ # Guess no on HP-UX 10 and older.
+ hpux*) gl_cv_func_printf_flag_leftadjust="guessing no";;
+ # Guess yes otherwise.
+ *) gl_cv_func_printf_flag_leftadjust="guessing yes";;
+ esac
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+ /* Check that a '-' flag is not annihilated by a negative width. */
+ if (sprintf (buf, "a%-*sc", -3, "b") < 0
+ || strcmp (buf, "ab c") != 0)
+ return 1;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_printf_flag_leftadjust=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_printf_flag_leftadjust=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_printf_flag_leftadjust" >&5
+$as_echo "$gl_cv_func_printf_flag_leftadjust" >&6; }
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether printf supports the zero flag correctly" >&5
+$as_echo_n "checking whether printf supports the zero flag correctly... " >&6; }
+if test "${gl_cv_func_printf_flag_zero+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+
+ case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_printf_flag_zero="guessing yes";;
+ # Guess yes on BeOS.
+ beos*) gl_cv_func_printf_flag_zero="guessing yes";;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_printf_flag_zero="guessing no";;
+ esac
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+ if (sprintf (buf, "%010f", 1.0 / 0.0, 33, 44, 55) < 0
+ || (strcmp (buf, " inf") != 0
+ && strcmp (buf, " infinity") != 0))
+ return 1;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_printf_flag_zero=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_printf_flag_zero=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_printf_flag_zero" >&5
+$as_echo "$gl_cv_func_printf_flag_zero" >&6; }
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether printf supports large precisions" >&5
+$as_echo_n "checking whether printf supports large precisions... " >&6; }
+if test "${gl_cv_func_printf_precision+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+
+ case "$host_os" in
+ # Guess no only on native Win32 and BeOS systems.
+ mingw* | pw*) gl_cv_func_printf_precision="guessing no" ;;
+ beos*) gl_cv_func_printf_precision="guessing no" ;;
+ *) gl_cv_func_printf_precision="guessing yes" ;;
+ esac
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stdio.h>
+#include <string.h>
+static char buf[5000];
+int main ()
+{
+#ifdef __BEOS__
+ /* On BeOS, this would crash and show a dialog box. Avoid the crash. */
+ return 1;
+#endif
+ if (sprintf (buf, "%.4000d %d", 1, 33, 44) < 4000 + 3)
+ return 1;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_printf_precision=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_printf_precision=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_printf_precision" >&5
+$as_echo "$gl_cv_func_printf_precision" >&6; }
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether printf survives out-of-memory conditions" >&5
+$as_echo_n "checking whether printf survives out-of-memory conditions... " >&6; }
+if test "${gl_cv_func_printf_enomem+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_cv_func_printf_enomem="guessing no"
+ if test "$cross_compiling" = no; then
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+
+#include <stdlib.h>
+#if defined __MACH__ && defined __APPLE__
+/* Avoid a crash on MacOS X. */
+#include <mach/mach.h>
+#include <mach/mach_error.h>
+#include <mach/thread_status.h>
+#include <mach/exception.h>
+#include <mach/task.h>
+#include <pthread.h>
+/* The exception port on which our thread listens. */
+static mach_port_t our_exception_port;
+/* The main function of the thread listening for exceptions of type
+ EXC_BAD_ACCESS. */
+static void *
+mach_exception_thread (void *arg)
+{
+ /* Buffer for a message to be received. */
+ struct {
+ mach_msg_header_t head;
+ mach_msg_body_t msgh_body;
+ char data1024;
+ } msg;
+ mach_msg_return_t retval;
+ /* Wait for a message on the exception port. */
+ retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg),
+ our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
+ if (retval != MACH_MSG_SUCCESS)
+ abort ();
+ exit (1);
+}
+static void
+nocrash_init (void)
+{
+ mach_port_t self = mach_task_self ();
+ /* Allocate a port on which the thread shall listen for exceptions. */
+ if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port)
+ == KERN_SUCCESS) {
+ /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */
+ if (mach_port_insert_right (self, our_exception_port, our_exception_port,
+ MACH_MSG_TYPE_MAKE_SEND)
+ == KERN_SUCCESS) {
+ /* The exceptions we want to catch. Only EXC_BAD_ACCESS is interesting
+ for us. */
+ exception_mask_t mask = EXC_MASK_BAD_ACCESS;
+ /* Create the thread listening on the exception port. */
+ pthread_attr_t attr;
+ pthread_t thread;
+ if (pthread_attr_init (&attr) == 0
+ && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0
+ && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) {
+ pthread_attr_destroy (&attr);
+ /* Replace the exception port info for these exceptions with our own.
+ Note that we replace the exception port for the entire task, not only
+ for a particular thread. This has the effect that when our exception
+ port gets the message, the thread specific exception port has already
+ been asked, and we don't need to bother about it.
+ See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */
+ task_set_exception_ports (self, mask, our_exception_port,
+ EXCEPTION_DEFAULT, MACHINE_THREAD_STATE);
+ }
+ }
+ }
+}
+#else
+/* Avoid a crash on POSIX systems. */
+#include <signal.h>
+/* A POSIX signal handler. */
+static void
+exception_handler (int sig)
+{
+ exit (1);
+}
+static void
+nocrash_init (void)
+{
+#ifdef SIGSEGV
+ signal (SIGSEGV, exception_handler);
+#endif
+#ifdef SIGBUS
+ signal (SIGBUS, exception_handler);
+#endif
+}
+#endif
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <errno.h>
+int main()
+{
+ struct rlimit limit;
+ int ret;
+ nocrash_init ();
+ /* Some printf implementations allocate temporary space with malloc. */
+ /* On BSD systems, malloc() is limited by RLIMIT_DATA. */
+#ifdef RLIMIT_DATA
+ if (getrlimit (RLIMIT_DATA, &limit) < 0)
+ return 77;
+ if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
+ limit.rlim_max = 5000000;
+ limit.rlim_cur = limit.rlim_max;
+ if (setrlimit (RLIMIT_DATA, &limit) < 0)
+ return 77;
+#endif
+ /* On Linux systems, malloc() is limited by RLIMIT_AS. */
+#ifdef RLIMIT_AS
+ if (getrlimit (RLIMIT_AS, &limit) < 0)
+ return 77;
+ if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
+ limit.rlim_max = 5000000;
+ limit.rlim_cur = limit.rlim_max;
+ if (setrlimit (RLIMIT_AS, &limit) < 0)
+ return 77;
+#endif
+ /* Some printf implementations allocate temporary space on the stack. */
+#ifdef RLIMIT_STACK
+ if (getrlimit (RLIMIT_STACK, &limit) < 0)
+ return 77;
+ if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
+ limit.rlim_max = 5000000;
+ limit.rlim_cur = limit.rlim_max;
+ if (setrlimit (RLIMIT_STACK, &limit) < 0)
+ return 77;
+#endif
+ ret = printf ("%.5000000f", 1.0);
+ return !(ret == 5000002 || (ret < 0 && errno == ENOMEM));
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ (./conftest
+ result=$?
+ if test $result != 0 && test $result != 77; then result=1; fi
+ exit $result
+ ) >/dev/null 2>/dev/null
+ case $? in
+ 0) gl_cv_func_printf_enomem="yes" ;;
+ 77) gl_cv_func_printf_enomem="guessing no" ;;
+ *) gl_cv_func_printf_enomem="no" ;;
+ esac
+ else
+ gl_cv_func_printf_enomem="guessing no"
+ fi
+ rm -fr conftest*
+ else
+ gl_cv_func_printf_enomem="guessing no"
+ fi
+ fi
+ if test "$gl_cv_func_printf_enomem" = "guessing no"; then
+ case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_printf_enomem="guessing yes";;
+ # Guess yes on Solaris.
+ solaris*) gl_cv_func_printf_enomem="guessing yes";;
+ # Guess yes on AIX.
+ aix*) gl_cv_func_printf_enomem="guessing yes";;
+ # Guess yes on HP-UX/hppa.
+ hpux*) case "$host_cpu" in
+ hppa*) gl_cv_func_printf_enomem="guessing yes";;
+ *) gl_cv_func_printf_enomem="guessing no";;
+ esac
+ ;;
+ # Guess yes on IRIX.
+ irix*) gl_cv_func_printf_enomem="guessing yes";;
+ # Guess yes on OSF/1.
+ osf*) gl_cv_func_printf_enomem="guessing yes";;
+ # Guess yes on BeOS.
+ beos*) gl_cv_func_printf_enomem="guessing yes";;
+ # Guess yes on Haiku.
+ haiku*) gl_cv_func_printf_enomem="guessing yes";;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_printf_enomem="guessing no";;
+ esac
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_printf_enomem" >&5
+$as_echo "$gl_cv_func_printf_enomem" >&6; }
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether strerror_r is declared" >&5
+$as_echo_n "checking whether strerror_r is declared... " >&6; }
+if test "${ac_cv_have_decl_strerror_r+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strerror_r
+ (void) strerror_r;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strerror_r=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strerror_r=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strerror_r" >&5
+$as_echo "$ac_cv_have_decl_strerror_r" >&6; }
+if test "x$ac_cv_have_decl_strerror_r" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR_R 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR_R 0
+_ACEOF
+
+
+fi
+
+
+
+for ac_func in strerror_r
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+{ $as_echo "$as_me:$LINENO: checking whether strerror_r returns char *" >&5
+$as_echo_n "checking whether strerror_r returns char *... " >&6; }
+if test "${ac_cv_func_strerror_r_char_p+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ ac_cv_func_strerror_r_char_p=no
+ if test $ac_cv_have_decl_strerror_r = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ char buf[100];
+ char x = *strerror_r (0, buf, sizeof buf);
+ char *p = strerror_r (0, buf, sizeof buf);
+ return !p || x;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_func_strerror_r_char_p=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ else
+ # strerror_r is not declared. Choose between
+ # systems that have relatively inaccessible declarations for the
+ # function. BeOS and DEC UNIX 4.0 fall in this category, but the
+ # former has a strerror_r that returns char*, while the latter
+ # has a strerror_r that returns `int'.
+ # This test should segfault on the DEC system.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+ extern char *strerror_r ();
+int
+main ()
+{
+char buf[100];
+ char x = *strerror_r (0, buf, sizeof buf);
+ return ! isalpha (x);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_strerror_r_char_p=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_strerror_r_char_p" >&5
+$as_echo "$ac_cv_func_strerror_r_char_p" >&6; }
+if test $ac_cv_func_strerror_r_char_p = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STRERROR_R_CHAR_P 1
+_ACEOF
+
+fi
+
+
+ XGETTEXT_EXTRA_OPTIONS=
+
+
+
+
+
+
+
+
+
+
+ if test -z "$ERRNO_H"; then
+ { $as_echo "$as_me:$LINENO: checking for working strerror function" >&5
+$as_echo_n "checking for working strerror function... " >&6; }
+if test "${gl_cv_func_working_strerror+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+int
+main ()
+{
+return !*strerror (-2);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_func_working_strerror=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_working_strerror=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+int
+main ()
+{
+return !*strerror (-2);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_working_strerror=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_working_strerror=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_working_strerror" >&5
+$as_echo "$gl_cv_func_working_strerror" >&6; }
+ if test $gl_cv_func_working_strerror = no; then
+ REPLACE_STRERROR=1
+ fi
+ else
+ REPLACE_STRERROR=1
+ fi
+ if test $REPLACE_STRERROR = 1; then
+
+ { $as_echo "$as_me:$LINENO: checking whether strerror is declared" >&5
+$as_echo_n "checking whether strerror is declared... " >&6; }
+if test "${ac_cv_have_decl_strerror+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strerror
+ (void) strerror;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strerror=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strerror=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strerror" >&5
+$as_echo "$ac_cv_have_decl_strerror" >&6; }
+if test "x$ac_cv_have_decl_strerror" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+ if test $ac_cv_header_sys_socket_h != yes; then
+
+for ac_header in winsock2.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ fi
+
+ fi
+
+{ $as_echo "$as_me:$LINENO: checking whether alarm is declared" >&5
+$as_echo_n "checking whether alarm is declared... " >&6; }
+if test "${ac_cv_have_decl_alarm+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef alarm
+ (void) alarm;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_alarm=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_alarm=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_alarm" >&5
+$as_echo "$ac_cv_have_decl_alarm" >&6; }
+if test "x$ac_cv_have_decl_alarm" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ALARM 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ALARM 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+ if true; then
+ GL_COND_LIBTOOL_TRUE=
+ GL_COND_LIBTOOL_FALSE='#'
+else
+ GL_COND_LIBTOOL_TRUE='#'
+ GL_COND_LIBTOOL_FALSE=
+fi
+
+ gl_cond_libtool=true
+
+
+
+
+
+
+
+
+
+ gl_source_base='lib'
+
+
+
+
+
+ if test $ac_cv_func_alloca_works = no; then
+ :
+ fi
+
+ # Define an additional variable used in the Makefile substitution.
+ if test $ac_cv_working_alloca_h = yes; then
+ { $as_echo "$as_me:$LINENO: checking for alloca as a compiler built-in" >&5
+$as_echo_n "checking for alloca as a compiler built-in... " >&6; }
+if test "${gl_cv_rpl_alloca+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#if defined __GNUC__ || defined _AIX || defined _MSC_VER
+ Need own alloca
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Need own alloca" >/dev/null 2>&1; then
+ gl_cv_rpl_alloca=yes
+else
+ gl_cv_rpl_alloca=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_rpl_alloca" >&5
+$as_echo "$gl_cv_rpl_alloca" >&6; }
+ if test $gl_cv_rpl_alloca = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA 1
+_ACEOF
+
+ ALLOCA_H=alloca.h
+ else
+ ALLOCA_H=
+ fi
+ else
+ ALLOCA_H=alloca.h
+ fi
+
+
+
+
+
+
+ FLOAT_H=
+ case "$host_os" in
+ beos* | openbsd*)
+ FLOAT_H=float.h
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_float_h='<'float.h'>'
+ else
+ { $as_echo "$as_me:$LINENO: checking absolute name of <float.h>" >&5
+$as_echo_n "checking absolute name of <float.h>... " >&6; }
+if test "${gl_cv_next_float_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test $ac_cv_header_float_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <float.h>
+
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+ gl_cv_next_float_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n '\#/float.h#{
+ s#.*"\(.*/float.h\)".*#\1#
+ s#^/[^/]#//&#
+ p
+ q
+ }'`'"'
+ else
+ gl_cv_next_float_h='<'float.h'>'
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_float_h" >&5
+$as_echo "$gl_cv_next_float_h" >&6; }
+ fi
+ NEXT_FLOAT_H=$gl_cv_next_float_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'float.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_float_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_FLOAT_H=$gl_next_as_first_directive
+
+
+
+ ;;
+ esac
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether frexpl() can be used without linking with libm" >&5
+$as_echo_n "checking whether frexpl() can be used without linking with libm... " >&6; }
+if test "${gl_cv_func_frexpl_no_libm+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ long double x;
+int
+main ()
+{
+int e; return frexpl (x, &e) > 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ gl_cv_func_frexpl_no_libm=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_frexpl_no_libm=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_frexpl_no_libm" >&5
+$as_echo "$gl_cv_func_frexpl_no_libm" >&6; }
+ if test $gl_cv_func_frexpl_no_libm = yes; then
+
+
+ { $as_echo "$as_me:$LINENO: checking whether frexpl works" >&5
+$as_echo_n "checking whether frexpl works... " >&6; }
+if test "${gl_cv_func_frexpl_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ case "$host_os" in
+ aix* | beos* | darwin* | irix* | mingw* | pw*)
+ gl_cv_func_frexpl_works="guessing no";;
+ *) gl_cv_func_frexpl_works="guessing yes";;
+ esac
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <float.h>
+#include <math.h>
+/* Override the values of <float.h>, like done in float.in.h. */
+#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__)
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP (-16381)
+#endif
+extern long double frexpl (long double, int *);
+int main()
+{
+ volatile long double x;
+ /* Test on finite numbers that fails on AIX 5.1. */
+ x = 16.0L;
+ {
+ int exp = -9999;
+ frexpl (x, &exp);
+ if (exp != 5)
+ return 1;
+ }
+ /* Test on finite numbers that fails on MacOS X 10.4, because its frexpl
+ function returns an invalid (incorrectly normalized) value: it returns
+ y = { 0x3fe028f5, 0xc28f5c28, 0x3c9eb851, 0xeb851eb8 }
+ but the correct result is
+ 0.505L = { 0x3fe028f5, 0xc28f5c29, 0xbc547ae1, 0x47ae1480 } */
+ x = 1.01L;
+ {
+ int exp = -9999;
+ long double y = frexpl (x, &exp);
+ if (!(exp == 1 && y == 0.505L))
+ return 1;
+ }
+ /* Test on large finite numbers. This fails on BeOS at i = 16322, while
+ LDBL_MAX_EXP = 16384.
+ In the loop end test, we test x against Infinity, rather than comparing
+ i with LDBL_MAX_EXP, because BeOS <float.h> has a wrong LDBL_MAX_EXP. */
+ {
+ int i;
+ for (i = 1, x = 1.0L; x != x + x; i++, x *= 2.0L)
+ {
+ int exp = -9999;
+ frexpl (x, &exp);
+ if (exp != i)
+ return 1;
+ }
+ }
+ /* Test on denormalized numbers. */
+ {
+ int i;
+ for (i = 1, x = 1.0L; i >= LDBL_MIN_EXP; i--, x *= 0.5L)
+ ;
+ if (x > 0.0L)
+ {
+ int exp;
+ long double y = frexpl (x, &exp);
+ /* On machines with IEEE854 arithmetic: x = 1.68105e-4932,
+ exp = -16382, y = 0.5. On MacOS X 10.5: exp = -16384, y = 0.5. */
+ if (exp != LDBL_MIN_EXP - 1)
+ return 1;
+ }
+ }
+ /* Test on infinite numbers. */
+ x = 1.0L / 0.0L;
+ {
+ int exp;
+ long double y = frexpl (x, &exp);
+ if (y != x)
+ return 1;
+ }
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_frexpl_works=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_frexpl_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_frexpl_works" >&5
+$as_echo "$gl_cv_func_frexpl_works" >&6; }
+
+ case "$gl_cv_func_frexpl_works" in
+ *yes) gl_func_frexpl_no_libm=yes ;;
+ *) gl_func_frexpl_no_libm=no; REPLACE_FREXPL=1 ;;
+ esac
+ else
+ gl_func_frexpl_no_libm=no
+ REPLACE_FREXPL=1
+ fi
+ if test $gl_func_frexpl_no_libm = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_FREXPL_IN_LIBC 1
+_ACEOF
+
+ { $as_echo "$as_me:$LINENO: checking whether frexpl is declared" >&5
+$as_echo_n "checking whether frexpl is declared... " >&6; }
+if test "${ac_cv_have_decl_frexpl+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+
+int
+main ()
+{
+#ifndef frexpl
+ (void) frexpl;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_frexpl=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_frexpl=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_frexpl" >&5
+$as_echo "$ac_cv_have_decl_frexpl" >&6; }
+if test "x$ac_cv_have_decl_frexpl" = x""yes; then
+ :
+else
+ HAVE_DECL_FREXPL=0
+fi
+
+ else
+ HAVE_DECL_FREXPL=0
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS frexpl.$ac_objext"
+
+ fi
+
+
+
+ GNULIB_FREXPL=1
+
+
+
+
+
+for ac_func in getpagesize
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ if test $ac_cv_func_getpagesize = no; then
+ HAVE_GETPAGESIZE=0
+
+for ac_header in OS.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ if test $ac_cv_header_OS_h = yes; then
+ HAVE_OS_H=1
+ fi
+
+for ac_header in sys/param.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ if test $ac_cv_header_sys_param_h = yes; then
+ HAVE_SYS_PARAM_H=1
+ fi
+ fi
+ case "$host_os" in
+ mingw*)
+ REPLACE_GETPAGESIZE=1
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS getpagesize.$ac_objext"
+
+ ;;
+ esac
+
+
+
+ GNULIB_GETPAGESIZE=1
+
+
+
+
+
+
+ am_save_CPPFLAGS="$CPPFLAGS"
+
+ for element in $INCICONV; do
+ haveit=
+ for x in $CPPFLAGS; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X$element"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+ fi
+ done
+
+
+ { $as_echo "$as_me:$LINENO: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if test "${am_cv_func_iconv+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ am_cv_func_iconv="no, consider installing GNU libiconv"
+ am_cv_lib_iconv=no
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ am_cv_func_iconv=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ if test "$am_cv_func_iconv" != yes; then
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBICONV"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ am_cv_lib_iconv=yes
+ am_cv_func_iconv=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$am_save_LIBS"
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+ if test "$am_cv_func_iconv" = yes; then
+ { $as_echo "$as_me:$LINENO: checking for working iconv" >&5
+$as_echo_n "checking for working iconv... " >&6; }
+if test "${am_cv_func_iconv_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ am_save_LIBS="$LIBS"
+ if test $am_cv_lib_iconv = yes; then
+ LIBS="$LIBS $LIBICONV"
+ fi
+ if test "$cross_compiling" = yes; then
+ case "$host_os" in
+ aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+ *) am_cv_func_iconv_works="guessing yes" ;;
+ esac
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+ /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+ returns. */
+ {
+ iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+ if (cd_utf8_to_88591 != (iconv_t)(-1))
+ {
+ static const char input[] = "\342\202\254"; /* EURO SIGN */
+ char buf[10];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_utf8_to_88591,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res == 0)
+ return 1;
+ }
+ }
+#if 0 /* This bug could be worked around by the caller. */
+ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
+ {
+ iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+ if (cd_88591_to_utf8 != (iconv_t)(-1))
+ {
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ char buf[50];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_88591_to_utf8,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if ((int)res > 0)
+ return 1;
+ }
+ }
+#endif
+ /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+ provided. */
+ if (/* Try standardized names. */
+ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+ /* Try IRIX, OSF/1 names. */
+ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+ /* Try AIX names. */
+ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+ /* Try HP-UX names. */
+ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+ return 1;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ am_cv_func_iconv_works=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+am_cv_func_iconv_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ LIBS="$am_save_LIBS"
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv_works" >&5
+$as_echo "$am_cv_func_iconv_works" >&6; }
+ case "$am_cv_func_iconv_works" in
+ *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+ *) am_func_iconv=yes ;;
+ esac
+ else
+ am_func_iconv=no am_cv_lib_iconv=no
+ fi
+ if test "$am_func_iconv" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ICONV 1
+_ACEOF
+
+ fi
+ if test "$am_cv_lib_iconv" = yes; then
+ { $as_echo "$as_me:$LINENO: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+ { $as_echo "$as_me:$LINENO: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
+ else
+ CPPFLAGS="$am_save_CPPFLAGS"
+ LIBICONV=
+ LTLIBICONV=
+ fi
+
+
+
+ if test "$am_cv_func_iconv" = yes; then
+ { $as_echo "$as_me:$LINENO: checking for iconv declaration" >&5
+$as_echo_n "checking for iconv declaration... " >&6; }
+ if test "${am_cv_proto_iconv+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ am_cv_proto_iconv_arg1=""
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ am_cv_proto_iconv_arg1="const"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
+fi
+
+ am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+ { $as_echo "$as_me:$LINENO: result: ${ac_t:-
+ }$am_cv_proto_iconv" >&5
+$as_echo "${ac_t:-
+ }$am_cv_proto_iconv" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define ICONV_CONST $am_cv_proto_iconv_arg1
+_ACEOF
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_iconv_h='<'iconv.h'>'
+ else
+ { $as_echo "$as_me:$LINENO: checking absolute name of <iconv.h>" >&5
+$as_echo_n "checking absolute name of <iconv.h>... " >&6; }
+if test "${gl_cv_next_iconv_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test $ac_cv_header_iconv_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <iconv.h>
+
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+ gl_cv_next_iconv_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n '\#/iconv.h#{
+ s#.*"\(.*/iconv.h\)".*#\1#
+ s#^/[^/]#//&#
+ p
+ q
+ }'`'"'
+ else
+ gl_cv_next_iconv_h='<'iconv.h'>'
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_iconv_h" >&5
+$as_echo "$gl_cv_next_iconv_h" >&6; }
+ fi
+ NEXT_ICONV_H=$gl_cv_next_iconv_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'iconv.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_iconv_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_ICONV_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+ if test "$am_cv_func_iconv" = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <iconv.h>
+ #if defined _LIBICONV_VERSION || defined __GLIBC__
+ gnu_iconv
+ #endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "gnu_iconv" >/dev/null 2>&1; then
+ gl_func_iconv_gnu=yes
+else
+ gl_func_iconv_gnu=no
+fi
+rm -f conftest*
+
+ if test $gl_func_iconv_gnu = no; then
+ iconv_flavor=
+ case "$host_os" in
+ aix*) iconv_flavor=ICONV_FLAVOR_AIX ;;
+ irix*) iconv_flavor=ICONV_FLAVOR_IRIX ;;
+ hpux*) iconv_flavor=ICONV_FLAVOR_HPUX ;;
+ osf*) iconv_flavor=ICONV_FLAVOR_OSF ;;
+ esac
+ if test -n "$iconv_flavor"; then
+
+cat >>confdefs.h <<_ACEOF
+#define ICONV_FLAVOR $iconv_flavor
+_ACEOF
+
+
+
+
+ ICONV_H='iconv.h'
+
+ REPLACE_ICONV_OPEN=1
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS iconv_open.$ac_objext"
+
+
+ fi
+ fi
+ fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether the compiler generally respects inline" >&5
+$as_echo_n "checking whether the compiler generally respects inline... " >&6; }
+if test "${gl_cv_c_inline_effective+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test $ac_cv_c_inline = no; then
+ gl_cv_c_inline_effective=no
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifdef __NO_INLINE__
+ #error "inline is not effective"
+ #endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_c_inline_effective=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_c_inline_effective=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_c_inline_effective" >&5
+$as_echo "$gl_cv_c_inline_effective" >&6; }
+ if test $gl_cv_c_inline_effective = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_INLINE 1
+_ACEOF
+
+ fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether isnan(double) can be used without linking with libm" >&5
+$as_echo_n "checking whether isnan(double) can be used without linking with libm... " >&6; }
+if test "${gl_cv_func_isnand_no_libm+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #if __GNUC__ >= 4
+ # undef isnand
+ # define isnand(x) __builtin_isnan ((double)(x))
+ #else
+ # undef isnand
+ # define isnand(x) isnan ((double)(x))
+ #endif
+ double x;
+int
+main ()
+{
+return isnand (x);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ gl_cv_func_isnand_no_libm=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_isnand_no_libm=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_isnand_no_libm" >&5
+$as_echo "$gl_cv_func_isnand_no_libm" >&6; }
+
+ if test $gl_cv_func_isnand_no_libm = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ISNAND_IN_LIBC 1
+_ACEOF
+
+ else
+
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS isnand.$ac_objext"
+
+
+ { $as_echo "$as_me:$LINENO: checking where to find the exponent in a 'double'" >&5
+$as_echo_n "checking where to find the exponent in a 'double'... " >&6; }
+if test "${gl_cv_cc_double_expbit0+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#if defined arm || defined __arm || defined __arm__
+ mixed_endianness
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "mixed_endianness" >/dev/null 2>&1; then
+ gl_cv_cc_double_expbit0="unknown"
+else
+
+
+ :
+if test "${ac_cv_c_bigendian+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_bigendian=unknown
+ # See if we're dealing with a universal compiler.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifndef __APPLE_CC__
+ not a universal capable compiler
+ #endif
+ typedef int dummy;
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+
+ # Check for potential -arch flags. It is not universal unless
+ # there are some -arch flags. Note that *ppc* also matches
+ # ppc64. This check is also rather less than ideal.
+ case "${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}" in #(
+ *-arch*ppc*|*-arch*i386*|*-arch*x86_64*) ac_cv_c_bigendian=universal;;
+ esac
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if test $ac_cv_c_bigendian = unknown; then
+ # See if sys/param.h defines the BYTE_ORDER macro.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+ && LITTLE_ENDIAN)
+ bogus endian macros
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ # It does; now see whether it defined to BIG_ENDIAN or not.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_bigendian=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_c_bigendian=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $ac_cv_c_bigendian = unknown; then
+ # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+ bogus endian macros
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ # It does; now see whether it defined to _BIG_ENDIAN or not.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+ not big endian
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_bigendian=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_c_bigendian=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $ac_cv_c_bigendian = unknown; then
+ # Compile a test program.
+ if test "$cross_compiling" = yes; then
+ # Try to guess by grepping values from an object file.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+short int ascii_mm[] =
+ { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+ short int ascii_ii[] =
+ { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+ int use_ascii (int i) {
+ return ascii_mm[i] + ascii_ii[i];
+ }
+ short int ebcdic_ii[] =
+ { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+ short int ebcdic_mm[] =
+ { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+ int use_ebcdic (int i) {
+ return ebcdic_mm[i] + ebcdic_ii[i];
+ }
+ extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+ ac_cv_c_bigendian=yes
+ fi
+ if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+ if test "$ac_cv_c_bigendian" = unknown; then
+ ac_cv_c_bigendian=no
+ else
+ # finding both strings is unlikely to happen, but who knows?
+ ac_cv_c_bigendian=unknown
+ fi
+ fi
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+ long int l;
+ char c[sizeof (long int)];
+ } u;
+ u.l = 1;
+ return u.c[sizeof (long int) - 1] == 1;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_bigendian=no
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_c_bigendian=yes
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ fi
+fi
+:
+ case $ac_cv_c_bigendian in #(
+ yes)
+ gl_cv_cc_double_expbit0="word 0 bit 20";; #(
+ no)
+ gl_cv_cc_double_expbit0="word 1 bit 20" ;; #(
+ universal)
+
+cat >>confdefs.h <<\_ACEOF
+#define AC_APPLE_UNIVERSAL_BUILD 1
+_ACEOF
+
+ ;; #(
+ *)
+ gl_cv_cc_double_expbit0="unknown" ;;
+ esac
+
+
+fi
+rm -f conftest*
+
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { double value; unsigned int word[NWORDS]; } memory_double;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (double x)
+{
+ memory_double m;
+ size_t i;
+ /* Clear it first, in case sizeof (double) < sizeof (memory_double). */
+ memset (&m, 0, sizeof (memory_double));
+ m.value = x;
+ for (i = 0; i < NWORDS; i++)
+ {
+ ored_words[i] |= m.word[i];
+ anded_words[i] &= m.word[i];
+ }
+}
+int main ()
+{
+ size_t j;
+ FILE *fp = fopen ("conftest.out", "w");
+ if (fp == NULL)
+ return 1;
+ for (j = 0; j < NWORDS; j++)
+ anded_words[j] = ~ (unsigned int) 0;
+ add_to_ored_words (0.25);
+ add_to_ored_words (0.5);
+ add_to_ored_words (1.0);
+ add_to_ored_words (2.0);
+ add_to_ored_words (4.0);
+ /* Remove bits that are common (e.g. if representation of the first mantissa
+ bit is explicit). */
+ for (j = 0; j < NWORDS; j++)
+ ored_words[j] &= ~anded_words[j];
+ /* Now find the nonzero word. */
+ for (j = 0; j < NWORDS; j++)
+ if (ored_words[j] != 0)
+ break;
+ if (j < NWORDS)
+ {
+ size_t i;
+ for (i = j + 1; i < NWORDS; i++)
+ if (ored_words[i] != 0)
+ {
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+ }
+ for (i = 0; ; i++)
+ if ((ored_words[j] >> i) & 1)
+ {
+ fprintf (fp, "word %d bit %d", (int) j, (int) i);
+ return (fclose (fp) != 0);
+ }
+ }
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_cc_double_expbit0=`cat conftest.out`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_cc_double_expbit0="unknown"
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ rm -f conftest.out
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_cc_double_expbit0" >&5
+$as_echo "$gl_cv_cc_double_expbit0" >&6; }
+ case "$gl_cv_cc_double_expbit0" in
+ word*bit*)
+ word=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
+ bit=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word.*bit //'`
+
+cat >>confdefs.h <<_ACEOF
+#define DBL_EXPBIT0_WORD $word
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define DBL_EXPBIT0_BIT $bit
+_ACEOF
+
+ ;;
+ esac
+
+
+ fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether isnan(float) can be used without linking with libm" >&5
+$as_echo_n "checking whether isnan(float) can be used without linking with libm... " >&6; }
+if test "${gl_cv_func_isnanf_no_libm+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #if __GNUC__ >= 4
+ # undef isnanf
+ # define isnanf(x) __builtin_isnanf ((float)(x))
+ #elif defined isnan
+ # undef isnanf
+ # define isnanf(x) isnan ((float)(x))
+ #endif
+ float x;
+int
+main ()
+{
+return isnanf (x);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ gl_cv_func_isnanf_no_libm=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_isnanf_no_libm=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_isnanf_no_libm" >&5
+$as_echo "$gl_cv_func_isnanf_no_libm" >&6; }
+
+ if test $gl_cv_func_isnanf_no_libm = yes; then
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether isnan(float) works" >&5
+$as_echo_n "checking whether isnan(float) works... " >&6; }
+if test "${gl_cv_func_isnanf_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ case "$host_os" in
+ irix* | solaris*) gl_cv_func_isnanf_works="guessing no";;
+ *) gl_cv_func_isnanf_works="guessing yes";;
+ esac
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <math.h>
+#if __GNUC__ >= 4
+# undef isnanf
+# define isnanf(x) __builtin_isnanf ((float)(x))
+#elif defined isnan
+# undef isnanf
+# define isnanf(x) isnan ((float)(x))
+#endif
+/* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */
+#ifdef __DECC
+static float
+NaN ()
+{
+ static float zero = 0.0f;
+ return zero / zero;
+}
+#else
+# define NaN() (0.0f / 0.0f)
+#endif
+#define NWORDS \
+ ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { unsigned int word[NWORDS]; float value; } memory_float;
+int main()
+{
+ memory_float m;
+
+ if (isnanf (1.0f / 0.0f))
+ return 1;
+
+ if (!isnanf (NaN ()))
+ return 1;
+
+#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
+ /* The isnanf function should be immune against changes in the sign bit and
+ in the mantissa bits. The xor operation twiddles a bit that can only be
+ a sign bit or a mantissa bit. */
+ if (FLT_EXPBIT0_WORD == 0 && FLT_EXPBIT0_BIT > 0)
+ {
+ m.value = NaN ();
+ /* Set the bits below the exponent to 01111...111. */
+ m.word[0] &= -1U << FLT_EXPBIT0_BIT;
+ m.word[0] |= 1U << (FLT_EXPBIT0_BIT - 1) - 1;
+ if (!isnanf (m.value))
+ return 1;
+ }
+#endif
+
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_isnanf_works=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_isnanf_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_isnanf_works" >&5
+$as_echo "$gl_cv_func_isnanf_works" >&6; }
+
+ fi
+ if test $gl_cv_func_isnanf_no_libm = yes \
+ && { case "$gl_cv_func_isnanf_works" in
+ *yes) true;;
+ *) false;;
+ esac
+ }; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ISNANF_IN_LIBC 1
+_ACEOF
+
+ else
+
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS isnanf.$ac_objext"
+
+
+ { $as_echo "$as_me:$LINENO: checking where to find the exponent in a 'float'" >&5
+$as_echo_n "checking where to find the exponent in a 'float'... " >&6; }
+if test "${gl_cv_cc_float_expbit0+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ gl_cv_cc_float_expbit0="word 0 bit 23"
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+ ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { float value; unsigned int word[NWORDS]; } memory_float;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (float x)
+{
+ memory_float m;
+ size_t i;
+ /* Clear it first, in case
+ sizeof (float) < sizeof (memory_float). */
+ memset (&m, 0, sizeof (memory_float));
+ m.value = x;
+ for (i = 0; i < NWORDS; i++)
+ {
+ ored_words[i] |= m.word[i];
+ anded_words[i] &= m.word[i];
+ }
+}
+int main ()
+{
+ size_t j;
+ FILE *fp = fopen ("conftest.out", "w");
+ if (fp == NULL)
+ return 1;
+ for (j = 0; j < NWORDS; j++)
+ anded_words[j] = ~ (unsigned int) 0;
+ add_to_ored_words (0.25f);
+ add_to_ored_words (0.5f);
+ add_to_ored_words (1.0f);
+ add_to_ored_words (2.0f);
+ add_to_ored_words (4.0f);
+ /* Remove bits that are common (e.g. if representation of the first mantissa
+ bit is explicit). */
+ for (j = 0; j < NWORDS; j++)
+ ored_words[j] &= ~anded_words[j];
+ /* Now find the nonzero word. */
+ for (j = 0; j < NWORDS; j++)
+ if (ored_words[j] != 0)
+ break;
+ if (j < NWORDS)
+ {
+ size_t i;
+ for (i = j + 1; i < NWORDS; i++)
+ if (ored_words[i] != 0)
+ {
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+ }
+ for (i = 0; ; i++)
+ if ((ored_words[j] >> i) & 1)
+ {
+ fprintf (fp, "word %d bit %d", (int) j, (int) i);
+ return (fclose (fp) != 0);
+ }
+ }
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_cc_float_expbit0=`cat conftest.out`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_cc_float_expbit0="unknown"
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ rm -f conftest.out
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_cc_float_expbit0" >&5
+$as_echo "$gl_cv_cc_float_expbit0" >&6; }
+ case "$gl_cv_cc_float_expbit0" in
+ word*bit*)
+ word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
+ bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'`
+
+cat >>confdefs.h <<_ACEOF
+#define FLT_EXPBIT0_WORD $word
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define FLT_EXPBIT0_BIT $bit
+_ACEOF
+
+ ;;
+ esac
+
+
+ fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether isnan(long double) can be used without linking with libm" >&5
+$as_echo_n "checking whether isnan(long double) can be used without linking with libm... " >&6; }
+if test "${gl_cv_func_isnanl_no_libm+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #if __GNUC__ >= 4
+ # undef isnanl
+ # define isnanl(x) __builtin_isnanl ((long double)(x))
+ #elif defined isnan
+ # undef isnanl
+ # define isnanl(x) isnan ((long double)(x))
+ #endif
+ long double x;
+int
+main ()
+{
+return isnanl (x);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ gl_cv_func_isnanl_no_libm=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_isnanl_no_libm=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_isnanl_no_libm" >&5
+$as_echo "$gl_cv_func_isnanl_no_libm" >&6; }
+
+ gl_func_isnanl_no_libm=$gl_cv_func_isnanl_no_libm
+ if test $gl_func_isnanl_no_libm = yes; then
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether isnanl works" >&5
+$as_echo_n "checking whether isnanl works... " >&6; }
+if test "${gl_cv_func_isnanl_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ case "$host_cpu" in
+ # Guess no on ia64, x86_64, i386.
+ ia64 | x86_64 | i*86) gl_cv_func_isnanl_works="guessing no";;
+ *)
+ case "$host_os" in
+ netbsd*) gl_cv_func_isnanl_works="guessing no";;
+ *) gl_cv_func_isnanl_works="guessing yes";;
+ esac
+ ;;
+ esac
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <float.h>
+#include <limits.h>
+#include <math.h>
+#if __GNUC__ >= 4
+# undef isnanl
+# define isnanl(x) __builtin_isnanl ((long double)(x))
+#elif defined isnan
+# undef isnanl
+# define isnanl(x) isnan ((long double)(x))
+#endif
+#define NWORDS \
+ ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { unsigned int word[NWORDS]; long double value; }
+ memory_long_double;
+/* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the
+ runtime type conversion. */
+#ifdef __sgi
+static long double NaNl ()
+{
+ double zero = 0.0;
+ return zero / zero;
+}
+#else
+# define NaNl() (0.0L / 0.0L)
+#endif
+int main ()
+{
+ memory_long_double m;
+ unsigned int i;
+
+ if (!isnanl (NaNl ()))
+ return 1;
+
+ /* The isnanl function should be immune against changes in the sign bit and
+ in the mantissa bits. The xor operation twiddles a bit that can only be
+ a sign bit or a mantissa bit (since the exponent never extends to
+ bit 31). */
+ m.value = NaNl ();
+ m.word[NWORDS / 2] ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
+ for (i = 0; i < NWORDS; i++)
+ m.word[i] |= 1;
+ if (!isnanl (m.value))
+ return 1;
+
+#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+/* Representation of an 80-bit 'long double' as an initializer for a sequence
+ of 'unsigned int' words. */
+# ifdef WORDS_BIGENDIAN
+# define LDBL80_WORDS(exponent,manthi,mantlo) \
+ { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \
+ ((unsigned int) (manthi) << 16) | (unsigned int) (mantlo) >> 16), \
+ (unsigned int) (mantlo) << 16 \
+ }
+# else
+# define LDBL80_WORDS(exponent,manthi,mantlo) \
+ { mantlo, manthi, exponent }
+# endif
+ { /* Quiet NaN. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
+ if (!isnanl (x.value))
+ return 1;
+ }
+ {
+ /* Signalling NaN. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
+ if (!isnanl (x.value))
+ return 1;
+ }
+ /* The isnanl function should recognize Pseudo-NaNs, Pseudo-Infinities,
+ Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals, as defined in
+ Intel IA-64 Architecture Software Developer's Manual, Volume 1:
+ Application Architecture.
+ Table 5-2 "Floating-Point Register Encodings"
+ Figure 5-6 "Memory to Floating-Point Register Data Translation"
+ */
+ { /* Pseudo-NaN. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
+ if (!isnanl (x.value))
+ return 1;
+ }
+ { /* Pseudo-Infinity. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
+ if (!isnanl (x.value))
+ return 1;
+ }
+ { /* Pseudo-Zero. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
+ if (!isnanl (x.value))
+ return 1;
+ }
+ { /* Unnormalized number. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
+ if (!isnanl (x.value))
+ return 1;
+ }
+ { /* Pseudo-Denormal. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
+ if (!isnanl (x.value))
+ return 1;
+ }
+#endif
+
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_isnanl_works=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_isnanl_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_isnanl_works" >&5
+$as_echo "$gl_cv_func_isnanl_works" >&6; }
+
+ case "$gl_cv_func_isnanl_works" in
+ *yes) ;;
+ *) gl_func_isnanl_no_libm=no ;;
+ esac
+ fi
+ if test $gl_func_isnanl_no_libm = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ISNANL_IN_LIBC 1
+_ACEOF
+
+ else
+
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS isnanl.$ac_objext"
+
+
+
+ { $as_echo "$as_me:$LINENO: checking where to find the exponent in a 'long double'" >&5
+$as_echo_n "checking where to find the exponent in a 'long double'... " >&6; }
+if test "${gl_cv_cc_long_double_expbit0+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+
+ gl_cv_cc_long_double_expbit0="unknown"
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+ ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { long double value; unsigned int word[NWORDS]; }
+ memory_long_double;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (long double x)
+{
+ memory_long_double m;
+ size_t i;
+ /* Clear it first, in case
+ sizeof (long double) < sizeof (memory_long_double). */
+ memset (&m, 0, sizeof (memory_long_double));
+ m.value = x;
+ for (i = 0; i < NWORDS; i++)
+ {
+ ored_words[i] |= m.word[i];
+ anded_words[i] &= m.word[i];
+ }
+}
+int main ()
+{
+ size_t j;
+ FILE *fp = fopen ("conftest.out", "w");
+ if (fp == NULL)
+ return 1;
+ for (j = 0; j < NWORDS; j++)
+ anded_words[j] = ~ (unsigned int) 0;
+ add_to_ored_words (0.25L);
+ add_to_ored_words (0.5L);
+ add_to_ored_words (1.0L);
+ add_to_ored_words (2.0L);
+ add_to_ored_words (4.0L);
+ /* Remove bits that are common (e.g. if representation of the first mantissa
+ bit is explicit). */
+ for (j = 0; j < NWORDS; j++)
+ ored_words[j] &= ~anded_words[j];
+ /* Now find the nonzero word. */
+ for (j = 0; j < NWORDS; j++)
+ if (ored_words[j] != 0)
+ break;
+ if (j < NWORDS)
+ {
+ size_t i;
+ for (i = j + 1; i < NWORDS; i++)
+ if (ored_words[i] != 0)
+ {
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+ }
+ for (i = 0; ; i++)
+ if ((ored_words[j] >> i) & 1)
+ {
+ fprintf (fp, "word %d bit %d", (int) j, (int) i);
+ return (fclose (fp) != 0);
+ }
+ }
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_cc_long_double_expbit0=`cat conftest.out`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_cc_long_double_expbit0="unknown"
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ rm -f conftest.out
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_cc_long_double_expbit0" >&5
+$as_echo "$gl_cv_cc_long_double_expbit0" >&6; }
+ case "$gl_cv_cc_long_double_expbit0" in
+ word*bit*)
+ word=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
+ bit=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word.*bit //'`
+
+cat >>confdefs.h <<_ACEOF
+#define LDBL_EXPBIT0_WORD $word
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define LDBL_EXPBIT0_BIT $bit
+_ACEOF
+
+ ;;
+ esac
+
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+ LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(top_builddir)/$gl_source_base\""
+
+
+
+
+
+for ac_func in setlocale
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+ if test $gl_cv_func_malloc_posix = yes; then
+ HAVE_MALLOC_POSIX=1
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MALLOC_POSIX 1
+_ACEOF
+
+ else
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext"
+
+ HAVE_MALLOC_POSIX=0
+ fi
+
+
+
+
+ GNULIB_MALLOC_POSIX=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_math_h='<'math.h'>'
+ else
+ { $as_echo "$as_me:$LINENO: checking absolute name of <math.h>" >&5
+$as_echo_n "checking absolute name of <math.h>... " >&6; }
+if test "${gl_cv_next_math_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test $ac_cv_header_math_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+ gl_cv_next_math_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n '\#/math.h#{
+ s#.*"\(.*/math.h\)".*#\1#
+ s#^/[^/]#//&#
+ p
+ q
+ }'`'"'
+ else
+ gl_cv_next_math_h='<'math.h'>'
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_math_h" >&5
+$as_echo "$gl_cv_next_math_h" >&6; }
+ fi
+ NEXT_MATH_H=$gl_cv_next_math_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'math.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_math_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_MATH_H=$gl_next_as_first_directive
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether NAN macro works" >&5
+$as_echo_n "checking whether NAN macro works... " >&6; }
+if test "${gl_cv_header_math_nan_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+/* Solaris 10 has a broken definition of NAN. Other platforms
+ fail to provide NAN, or provide it only in C99 mode; this
+ test only needs to fail when NAN is provided but wrong. */
+ float f = 1.0f;
+#ifdef NAN
+ f = NAN;
+#endif
+ return f == 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_math_nan_works=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_header_math_nan_works=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_math_nan_works" >&5
+$as_echo "$gl_cv_header_math_nan_works" >&6; }
+ if test $gl_cv_header_math_nan_works = no; then
+ REPLACE_NAN=1
+ fi
+ { $as_echo "$as_me:$LINENO: checking whether HUGE_VAL works" >&5
+$as_echo_n "checking whether HUGE_VAL works... " >&6; }
+if test "${gl_cv_header_math_huge_val_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+/* Solaris 10 has a broken definition of HUGE_VAL. */
+ double d = HUGE_VAL;
+ return d == 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_math_huge_val_works=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_header_math_huge_val_works=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_math_huge_val_works" >&5
+$as_echo "$gl_cv_header_math_huge_val_works" >&6; }
+ if test $gl_cv_header_math_huge_val_works = no; then
+ REPLACE_HUGE_VAL=1
+ fi
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether mbrtowc handles incomplete characters" >&5
+$as_echo_n "checking whether mbrtowc handles incomplete characters... " >&6; }
+if test "${gl_cv_func_mbrtowc_incomplete_state+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ case "$host_os" in
+ # Guess no on AIX and OSF/1.
+ osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
+ # Guess yes otherwise.
+ *) gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
+ esac
+ if test $LOCALE_JA != none; then
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+ if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
+ {
+ const char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */
+ mbstate_t state;
+ wchar_t wc;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+ if (mbsinit (&state))
+ return 1;
+ }
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_mbrtowc_incomplete_state=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_mbrtowc_incomplete_state=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc_incomplete_state" >&5
+$as_echo "$gl_cv_func_mbrtowc_incomplete_state" >&6; }
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether mbrtowc works as well as mbtowc" >&5
+$as_echo_n "checking whether mbrtowc works as well as mbtowc... " >&6; }
+if test "${gl_cv_func_mbrtowc_sanitycheck+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ case "$host_os" in
+ # Guess no on Solaris 8.
+ solaris2.8) gl_cv_func_mbrtowc_sanitycheck="guessing no" ;;
+ # Guess yes otherwise.
+ *) gl_cv_func_mbrtowc_sanitycheck="guessing yes" ;;
+ esac
+ if test $LOCALE_ZH_CN != none; then
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+ /* This fails on Solaris 8:
+ mbrtowc returns 2, and sets wc to 0x00F0.
+ mbtowc returns 4 (correct) and sets wc to 0x5EDC. */
+ if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
+ {
+ char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
+ mbstate_t state;
+ wchar_t wc;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, input + 3, 6, &state) != 4
+ && mbtowc (&wc, input + 3, 6) == 4)
+ return 1;
+ }
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_mbrtowc_sanitycheck=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_mbrtowc_sanitycheck=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc_sanitycheck" >&5
+$as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
+
+ REPLACE_MBSTATE_T=0
+ case "$gl_cv_func_mbrtowc_incomplete_state" in
+ *yes) ;;
+ *) REPLACE_MBSTATE_T=1 ;;
+ esac
+ case "$gl_cv_func_mbrtowc_sanitycheck" in
+ *yes) ;;
+ *) REPLACE_MBSTATE_T=1 ;;
+ esac
+ else
+ REPLACE_MBSTATE_T=1
+ fi
+ if test $REPLACE_MBSTATE_T = 1; then
+
+
+ WCHAR_H=wchar.h
+
+ fi
+
+ if test $REPLACE_MBSTATE_T = 1; then
+ REPLACE_MBRTOWC=1
+ fi
+
+
+
+
+
+
+ if test $ac_cv_func_mbrtowc = no; then
+ HAVE_MBRTOWC=0
+ fi
+ if test $HAVE_MBRTOWC != 0 && test $REPLACE_MBRTOWC != 1; then
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether mbrtowc handles a NULL string argument" >&5
+$as_echo_n "checking whether mbrtowc handles a NULL string argument... " >&6; }
+if test "${gl_cv_func_mbrtowc_null_arg+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ case "$host_os" in
+ # Guess no on OSF/1.
+ osf*) gl_cv_func_mbrtowc_null_arg="guessing no" ;;
+ # Guess yes otherwise.
+ *) gl_cv_func_mbrtowc_null_arg="guessing yes" ;;
+ esac
+ if test $LOCALE_FR_UTF8 != none; then
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+ if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ {
+ mbstate_t state;
+ wchar_t wc;
+ int ret;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (wchar_t) 0xBADFACE;
+ mbrtowc (&wc, NULL, 5, &state);
+ /* Check that wc was not modified. */
+ if (wc != (wchar_t) 0xBADFACE)
+ return 1;
+ }
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_mbrtowc_null_arg=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_mbrtowc_null_arg=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc_null_arg" >&5
+$as_echo "$gl_cv_func_mbrtowc_null_arg" >&6; }
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether mbrtowc has a correct return value" >&5
+$as_echo_n "checking whether mbrtowc has a correct return value... " >&6; }
+if test "${gl_cv_func_mbrtowc_retval+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ case "$host_os" in
+ # Guess no on HP-UX and Solaris.
+ hpux* | solaris*) gl_cv_func_mbrtowc_retval="guessing no" ;;
+ # Guess yes otherwise.
+ *) gl_cv_func_mbrtowc_retval="guessing yes" ;;
+ esac
+ if test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none; then
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+ /* This fails on Solaris. */
+ if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ {
+ char input[] = "B\303\274\303\237er"; /* "Büßer" */
+ mbstate_t state;
+ wchar_t wc;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+ {
+ input[1] = '\0';
+ if (mbrtowc (&wc, input + 2, 5, &state) != 1)
+ return 1;
+ }
+ }
+ /* This fails on HP-UX 11.11. */
+ if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
+ {
+ char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */
+ mbstate_t state;
+ wchar_t wc;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+ {
+ input[1] = '\0';
+ if (mbrtowc (&wc, input + 2, 5, &state) != 2)
+ return 1;
+ }
+ }
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_mbrtowc_retval=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_mbrtowc_retval=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc_retval" >&5
+$as_echo "$gl_cv_func_mbrtowc_retval" >&6; }
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether mbrtowc returns 0 when parsing a NUL character" >&5
+$as_echo_n "checking whether mbrtowc returns 0 when parsing a NUL character... " >&6; }
+if test "${gl_cv_func_mbrtowc_nul_retval+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ case "$host_os" in
+ # Guess no on Solaris 8 and 9.
+ solaris2.[89]) gl_cv_func_mbrtowc_nul_retval="guessing no" ;;
+ # Guess yes otherwise.
+ *) gl_cv_func_mbrtowc_nul_retval="guessing yes" ;;
+ esac
+ if test $LOCALE_ZH_CN != none; then
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+ /* This fails on Solaris 8 and 9. */
+ if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
+ {
+ mbstate_t state;
+ wchar_t wc;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, "", 1, &state) != 0)
+ return 1;
+ }
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_mbrtowc_nul_retval=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_mbrtowc_nul_retval=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc_nul_retval" >&5
+$as_echo "$gl_cv_func_mbrtowc_nul_retval" >&6; }
+
+ case "$gl_cv_func_mbrtowc_null_arg" in
+ *yes) ;;
+ *)
+cat >>confdefs.h <<\_ACEOF
+#define MBRTOWC_NULL_ARG_BUG 1
+_ACEOF
+
+ REPLACE_MBRTOWC=1
+ ;;
+ esac
+ case "$gl_cv_func_mbrtowc_retval" in
+ *yes) ;;
+ *)
+cat >>confdefs.h <<\_ACEOF
+#define MBRTOWC_RETVAL_BUG 1
+_ACEOF
+
+ REPLACE_MBRTOWC=1
+ ;;
+ esac
+ case "$gl_cv_func_mbrtowc_nul_retval" in
+ *yes) ;;
+ *)
+cat >>confdefs.h <<\_ACEOF
+#define MBRTOWC_NUL_RETVAL_BUG 1
+_ACEOF
+
+ REPLACE_MBRTOWC=1
+ ;;
+ esac
+ fi
+ if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then
+
+
+ WCHAR_H=wchar.h
+
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS mbrtowc.$ac_objext"
+
+
+ :
+
+ fi
+
+
+
+ GNULIB_MBRTOWC=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether mbrtowc handles incomplete characters" >&5
+$as_echo_n "checking whether mbrtowc handles incomplete characters... " >&6; }
+if test "${gl_cv_func_mbrtowc_incomplete_state+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ case "$host_os" in
+ # Guess no on AIX and OSF/1.
+ osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
+ # Guess yes otherwise.
+ *) gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
+ esac
+ if test $LOCALE_JA != none; then
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+ if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
+ {
+ const char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */
+ mbstate_t state;
+ wchar_t wc;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+ if (mbsinit (&state))
+ return 1;
+ }
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_mbrtowc_incomplete_state=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_mbrtowc_incomplete_state=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc_incomplete_state" >&5
+$as_echo "$gl_cv_func_mbrtowc_incomplete_state" >&6; }
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether mbrtowc works as well as mbtowc" >&5
+$as_echo_n "checking whether mbrtowc works as well as mbtowc... " >&6; }
+if test "${gl_cv_func_mbrtowc_sanitycheck+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ case "$host_os" in
+ # Guess no on Solaris 8.
+ solaris2.8) gl_cv_func_mbrtowc_sanitycheck="guessing no" ;;
+ # Guess yes otherwise.
+ *) gl_cv_func_mbrtowc_sanitycheck="guessing yes" ;;
+ esac
+ if test $LOCALE_ZH_CN != none; then
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+ /* This fails on Solaris 8:
+ mbrtowc returns 2, and sets wc to 0x00F0.
+ mbtowc returns 4 (correct) and sets wc to 0x5EDC. */
+ if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
+ {
+ char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
+ mbstate_t state;
+ wchar_t wc;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, input + 3, 6, &state) != 4
+ && mbtowc (&wc, input + 3, 6) == 4)
+ return 1;
+ }
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_mbrtowc_sanitycheck=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_mbrtowc_sanitycheck=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc_sanitycheck" >&5
+$as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
+
+ REPLACE_MBSTATE_T=0
+ case "$gl_cv_func_mbrtowc_incomplete_state" in
+ *yes) ;;
+ *) REPLACE_MBSTATE_T=1 ;;
+ esac
+ case "$gl_cv_func_mbrtowc_sanitycheck" in
+ *yes) ;;
+ *) REPLACE_MBSTATE_T=1 ;;
+ esac
+ else
+ REPLACE_MBSTATE_T=1
+ fi
+ if test $REPLACE_MBSTATE_T = 1; then
+
+
+ WCHAR_H=wchar.h
+
+ fi
+
+ if test $REPLACE_MBSTATE_T = 1; then
+ REPLACE_MBSINIT=1
+ fi
+
+
+
+
+
+
+ if test $ac_cv_func_mbsinit = no; then
+ HAVE_MBSINIT=0
+ fi
+ if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then
+
+
+ WCHAR_H=wchar.h
+
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS mbsinit.$ac_objext"
+
+
+ :
+
+ fi
+
+
+
+ GNULIB_MBSINIT=1
+
+
+
+ GNULIB_MBSNLEN=1
+
+
+
+
+ GNULIB_MEMCHR=1
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether frexp can be used without linking with libm" >&5
+$as_echo_n "checking whether frexp can be used without linking with libm... " >&6; }
+if test "${gl_cv_func_frexp_no_libm+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ double x;
+ int y;
+int
+main ()
+{
+return frexp (x, &y) < 1;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ gl_cv_func_frexp_no_libm=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_frexp_no_libm=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_frexp_no_libm" >&5
+$as_echo "$gl_cv_func_frexp_no_libm" >&6; }
+ if test $gl_cv_func_frexp_no_libm = yes; then
+
+
+ { $as_echo "$as_me:$LINENO: checking whether frexp works" >&5
+$as_echo_n "checking whether frexp works... " >&6; }
+if test "${gl_cv_func_frexp_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ case "$host_os" in
+ netbsd* | irix* | mingw*) gl_cv_func_frexp_works="guessing no";;
+ *) gl_cv_func_frexp_works="guessing yes";;
+ esac
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <float.h>
+#include <math.h>
+#include <string.h>
+int main()
+{
+ int i;
+ volatile double x;
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
+ So we use -zero instead. */
+ double zero = 0.0;
+ /* Test on denormalized numbers. */
+ for (i = 1, x = 1.0; i >= DBL_MIN_EXP; i--, x *= 0.5)
+ ;
+ if (x > 0.0)
+ {
+ int exp;
+ double y = frexp (x, &exp);
+ /* On machines with IEEE754 arithmetic: x = 1.11254e-308, exp = -1022.
+ On NetBSD: y = 0.75. Correct: y = 0.5. */
+ if (y != 0.5)
+ return 1;
+ }
+ /* Test on infinite numbers. */
+ x = 1.0 / 0.0;
+ {
+ int exp;
+ double y = frexp (x, &exp);
+ if (y != x)
+ return 1;
+ }
+ /* Test on negative zero. */
+ x = -zero;
+ {
+ int exp;
+ double y = frexp (x, &exp);
+ if (memcmp (&y, &x, sizeof x))
+ return 1;
+ }
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_frexp_works=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_frexp_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_frexp_works" >&5
+$as_echo "$gl_cv_func_frexp_works" >&6; }
+
+ case "$gl_cv_func_frexp_works" in
+ *yes)
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_FREXP_IN_LIBC 1
+_ACEOF
+
+ ;;
+ esac
+ fi
+
+ { $as_echo "$as_me:$LINENO: checking whether ldexp can be used without linking with libm" >&5
+$as_echo_n "checking whether ldexp can be used without linking with libm... " >&6; }
+if test "${gl_cv_func_ldexp_no_libm+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ double x;
+ int y;
+int
+main ()
+{
+return ldexp (x, y) < 1;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ gl_cv_func_ldexp_no_libm=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_ldexp_no_libm=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_ldexp_no_libm" >&5
+$as_echo "$gl_cv_func_ldexp_no_libm" >&6; }
+ if test $gl_cv_func_ldexp_no_libm = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LDEXP_IN_LIBC 1
+_ACEOF
+
+ fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether frexpl can be used without linking with libm" >&5
+$as_echo_n "checking whether frexpl can be used without linking with libm... " >&6; }
+if test "${gl_cv_func_frexpl_no_libm+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ long double x;
+ int y;
+int
+main ()
+{
+return frexpl (x, &y) < 1;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ gl_cv_func_frexpl_no_libm=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_frexpl_no_libm=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_frexpl_no_libm" >&5
+$as_echo "$gl_cv_func_frexpl_no_libm" >&6; }
+ if test $gl_cv_func_frexpl_no_libm = yes; then
+
+
+ { $as_echo "$as_me:$LINENO: checking whether frexpl works" >&5
+$as_echo_n "checking whether frexpl works... " >&6; }
+if test "${gl_cv_func_frexpl_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ case "$host_os" in
+ aix* | beos* | darwin* | irix* | mingw* | pw*)
+ gl_cv_func_frexpl_works="guessing no";;
+ *) gl_cv_func_frexpl_works="guessing yes";;
+ esac
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <float.h>
+#include <math.h>
+/* Override the values of <float.h>, like done in float.in.h. */
+#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__)
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP (-16381)
+#endif
+extern long double frexpl (long double, int *);
+int main()
+{
+ volatile long double x;
+ /* Test on finite numbers that fails on AIX 5.1. */
+ x = 16.0L;
+ {
+ int exp = -9999;
+ frexpl (x, &exp);
+ if (exp != 5)
+ return 1;
+ }
+ /* Test on finite numbers that fails on MacOS X 10.4, because its frexpl
+ function returns an invalid (incorrectly normalized) value: it returns
+ y = { 0x3fe028f5, 0xc28f5c28, 0x3c9eb851, 0xeb851eb8 }
+ but the correct result is
+ 0.505L = { 0x3fe028f5, 0xc28f5c29, 0xbc547ae1, 0x47ae1480 } */
+ x = 1.01L;
+ {
+ int exp = -9999;
+ long double y = frexpl (x, &exp);
+ if (!(exp == 1 && y == 0.505L))
+ return 1;
+ }
+ /* Test on large finite numbers. This fails on BeOS at i = 16322, while
+ LDBL_MAX_EXP = 16384.
+ In the loop end test, we test x against Infinity, rather than comparing
+ i with LDBL_MAX_EXP, because BeOS <float.h> has a wrong LDBL_MAX_EXP. */
+ {
+ int i;
+ for (i = 1, x = 1.0L; x != x + x; i++, x *= 2.0L)
+ {
+ int exp = -9999;
+ frexpl (x, &exp);
+ if (exp != i)
+ return 1;
+ }
+ }
+ /* Test on denormalized numbers. */
+ {
+ int i;
+ for (i = 1, x = 1.0L; i >= LDBL_MIN_EXP; i--, x *= 0.5L)
+ ;
+ if (x > 0.0L)
+ {
+ int exp;
+ long double y = frexpl (x, &exp);
+ /* On machines with IEEE854 arithmetic: x = 1.68105e-4932,
+ exp = -16382, y = 0.5. On MacOS X 10.5: exp = -16384, y = 0.5. */
+ if (exp != LDBL_MIN_EXP - 1)
+ return 1;
+ }
+ }
+ /* Test on infinite numbers. */
+ x = 1.0L / 0.0L;
+ {
+ int exp;
+ long double y = frexpl (x, &exp);
+ if (y != x)
+ return 1;
+ }
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_frexpl_works=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_frexpl_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_frexpl_works" >&5
+$as_echo "$gl_cv_func_frexpl_works" >&6; }
+
+ case "$gl_cv_func_frexpl_works" in
+ *yes) gl_func_frexpl_no_libm=yes ;;
+ *) gl_func_frexpl_no_libm=no; REPLACE_FREXPL=1 ;;
+ esac
+ else
+ gl_func_frexpl_no_libm=no
+ REPLACE_FREXPL=1
+ fi
+ if test $gl_func_frexpl_no_libm = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_FREXPL_IN_LIBC 1
+_ACEOF
+
+ { $as_echo "$as_me:$LINENO: checking whether frexpl is declared" >&5
+$as_echo_n "checking whether frexpl is declared... " >&6; }
+if test "${ac_cv_have_decl_frexpl+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+
+int
+main ()
+{
+#ifndef frexpl
+ (void) frexpl;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_frexpl=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_frexpl=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_frexpl" >&5
+$as_echo "$ac_cv_have_decl_frexpl" >&6; }
+if test "x$ac_cv_have_decl_frexpl" = x""yes; then
+ :
+else
+ HAVE_DECL_FREXPL=0
+fi
+
+ fi
+
+ { $as_echo "$as_me:$LINENO: checking whether ldexpl can be used without linking with libm" >&5
+$as_echo_n "checking whether ldexpl can be used without linking with libm... " >&6; }
+if test "${gl_cv_func_ldexpl_no_libm+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ long double x;
+ int y;
+int
+main ()
+{
+return ldexpl (x, y) < 1;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ gl_cv_func_ldexpl_no_libm=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_ldexpl_no_libm=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_ldexpl_no_libm" >&5
+$as_echo "$gl_cv_func_ldexpl_no_libm" >&6; }
+ if test $gl_cv_func_ldexpl_no_libm = yes; then
+
+
+ { $as_echo "$as_me:$LINENO: checking whether ldexpl works" >&5
+$as_echo_n "checking whether ldexpl works... " >&6; }
+if test "${gl_cv_func_ldexpl_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ case "$host_os" in
+ aix*) gl_cv_func_ldexpl_works="guessing no";;
+ *) gl_cv_func_ldexpl_works="guessing yes";;
+ esac
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <math.h>
+extern long double ldexpl (long double, int);
+int main()
+{
+ volatile long double x1 = 1.0;
+ volatile long double y1 = ldexpl (x1, -1);
+ volatile long double x2 = 1.73205L;
+ volatile long double y2 = ldexpl (x2, 0);
+ return (y1 != 0.5L) || (y2 != x2);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_ldexpl_works=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_ldexpl_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_ldexpl_works" >&5
+$as_echo "$gl_cv_func_ldexpl_works" >&6; }
+
+ case "$gl_cv_func_ldexpl_works" in
+ *yes)
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LDEXPL_IN_LIBC 1
+_ACEOF
+
+ { $as_echo "$as_me:$LINENO: checking whether ldexpl is declared" >&5
+$as_echo_n "checking whether ldexpl is declared... " >&6; }
+if test "${ac_cv_have_decl_ldexpl+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+
+int
+main ()
+{
+#ifndef ldexpl
+ (void) ldexpl;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_ldexpl=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_ldexpl=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_ldexpl" >&5
+$as_echo "$ac_cv_have_decl_ldexpl" >&6; }
+if test "x$ac_cv_have_decl_ldexpl" = x""yes; then
+ :
+else
+ HAVE_DECL_LDEXPL=0
+fi
+
+ ;;
+ esac
+ fi
+
+
+
+
+ if test $RELOCATABLE = yes; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS relocatable.$ac_objext"
+
+ fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for signbit macro" >&5
+$as_echo_n "checking for signbit macro... " >&6; }
+if test "${gl_cv_func_signbit+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_signbit="guessing no"
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <math.h>
+/* If signbit is defined as a function, don't use it, since calling it for
+ 'float' or 'long double' arguments would involve conversions.
+ If signbit is not declared at all but exists as a library function, don't
+ use it, since the prototype may not match.
+ If signbit is not declared at all but exists as a compiler built-in, don't
+ use it, since it's preferable to use __builtin_signbit* (no warnings,
+ no conversions). */
+#ifndef signbit
+# error "signbit should be a macro"
+#endif
+#include <string.h>
+
+/* Global variables.
+ Needed because GCC 4 constant-folds __builtin_signbitl (literal)
+ but cannot constant-fold __builtin_signbitl (variable). */
+float vf;
+double vd;
+long double vl;
+int main ()
+{
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
+ So we use -p0f and -p0d instead. */
+float p0f = 0.0f;
+float m0f = -p0f;
+double p0d = 0.0;
+double m0d = -p0d;
+/* On HP-UX 10.20, negating 0.0L does not yield -0.0L.
+ So we use another constant expression instead.
+ But that expression does not work on other platforms, such as when
+ cross-compiling to PowerPC on MacOS X 10.5. */
+long double p0l = 0.0L;
+#if defined __hpux || defined __sgi
+long double m0l = -LDBL_MIN * LDBL_MIN;
+#else
+long double m0l = -p0l;
+#endif
+ if (signbit (vf))
+ vf++;
+ {
+ float plus_inf = 1.0f / p0f;
+ float minus_inf = -1.0f / p0f;
+ if (!(!signbit (255.0f)
+ && signbit (-255.0f)
+ && !signbit (p0f)
+ && (memcmp (&m0f, &p0f, sizeof (float)) == 0 || signbit (m0f))
+ && !signbit (plus_inf)
+ && signbit (minus_inf)))
+ return 1;
+ }
+ if (signbit (vd))
+ vd++;
+ {
+ double plus_inf = 1.0 / p0d;
+ double minus_inf = -1.0 / p0d;
+ if (!(!signbit (255.0)
+ && signbit (-255.0)
+ && !signbit (p0d)
+ && (memcmp (&m0d, &p0d, sizeof (double)) == 0 || signbit (m0d))
+ && !signbit (plus_inf)
+ && signbit (minus_inf)))
+ return 1;
+ }
+ if (signbit (vl))
+ vl++;
+ {
+ long double plus_inf = 1.0L / p0l;
+ long double minus_inf = -1.0L / p0l;
+ if (!(!signbit (255.0L)
+ && signbit (-255.0L)
+ && !signbit (p0l)
+ && (memcmp (&m0l, &p0l, sizeof (long double)) == 0 || signbit (m0l))
+ && !signbit (plus_inf)
+ && signbit (minus_inf)))
+ return 1;
+ }
+ return 0;
+}
+
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_signbit=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_signbit=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_signbit" >&5
+$as_echo "$gl_cv_func_signbit" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for signbit compiler built-ins" >&5
+$as_echo_n "checking for signbit compiler built-ins... " >&6; }
+if test "${gl_cv_func_signbit_gcc+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_signbit_gcc="guessing no"
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#if __GNUC__ >= 4
+# define signbit(x) \
+ (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \
+ sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \
+ __builtin_signbitf (x))
+#else
+# error "signbit should be three compiler built-ins"
+#endif
+#include <string.h>
+
+/* Global variables.
+ Needed because GCC 4 constant-folds __builtin_signbitl (literal)
+ but cannot constant-fold __builtin_signbitl (variable). */
+float vf;
+double vd;
+long double vl;
+int main ()
+{
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
+ So we use -p0f and -p0d instead. */
+float p0f = 0.0f;
+float m0f = -p0f;
+double p0d = 0.0;
+double m0d = -p0d;
+/* On HP-UX 10.20, negating 0.0L does not yield -0.0L.
+ So we use another constant expression instead.
+ But that expression does not work on other platforms, such as when
+ cross-compiling to PowerPC on MacOS X 10.5. */
+long double p0l = 0.0L;
+#if defined __hpux || defined __sgi
+long double m0l = -LDBL_MIN * LDBL_MIN;
+#else
+long double m0l = -p0l;
+#endif
+ if (signbit (vf))
+ vf++;
+ {
+ float plus_inf = 1.0f / p0f;
+ float minus_inf = -1.0f / p0f;
+ if (!(!signbit (255.0f)
+ && signbit (-255.0f)
+ && !signbit (p0f)
+ && (memcmp (&m0f, &p0f, sizeof (float)) == 0 || signbit (m0f))
+ && !signbit (plus_inf)
+ && signbit (minus_inf)))
+ return 1;
+ }
+ if (signbit (vd))
+ vd++;
+ {
+ double plus_inf = 1.0 / p0d;
+ double minus_inf = -1.0 / p0d;
+ if (!(!signbit (255.0)
+ && signbit (-255.0)
+ && !signbit (p0d)
+ && (memcmp (&m0d, &p0d, sizeof (double)) == 0 || signbit (m0d))
+ && !signbit (plus_inf)
+ && signbit (minus_inf)))
+ return 1;
+ }
+ if (signbit (vl))
+ vl++;
+ {
+ long double plus_inf = 1.0L / p0l;
+ long double minus_inf = -1.0L / p0l;
+ if (!(!signbit (255.0L)
+ && signbit (-255.0L)
+ && !signbit (p0l)
+ && (memcmp (&m0l, &p0l, sizeof (long double)) == 0 || signbit (m0l))
+ && !signbit (plus_inf)
+ && signbit (minus_inf)))
+ return 1;
+ }
+ return 0;
+}
+
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_signbit_gcc=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_signbit_gcc=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_signbit_gcc" >&5
+$as_echo "$gl_cv_func_signbit_gcc" >&6; }
+ if test "$gl_cv_func_signbit_gcc" = yes; then
+ REPLACE_SIGNBIT_USING_GCC=1
+ else
+ if test "$gl_cv_func_signbit" != yes; then
+ REPLACE_SIGNBIT=1
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS signbitf.$ac_objext"
+
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS signbitd.$ac_objext"
+
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS signbitl.$ac_objext"
+
+
+
+ { $as_echo "$as_me:$LINENO: checking where to find the sign bit in a 'float'" >&5
+$as_echo_n "checking where to find the sign bit in a 'float'... " >&6; }
+if test "${gl_cv_cc_float_signbit+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+
+ gl_cv_cc_float_signbit="unknown"
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stddef.h>
+#include <stdio.h>
+#define NWORDS \
+ ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { float value; unsigned int word[NWORDS]; }
+ memory_float;
+static memory_float plus = { 1.0f };
+static memory_float minus = { -1.0f };
+int main ()
+{
+ size_t j, k, i;
+ unsigned int m;
+ FILE *fp = fopen ("conftest.out", "w");
+ if (fp == NULL)
+ return 1;
+ /* Find the different bit. */
+ k = 0; m = 0;
+ for (j = 0; j < NWORDS; j++)
+ {
+ unsigned int x = plus.word[j] ^ minus.word[j];
+ if ((x & (x - 1)) || (x && m))
+ {
+ /* More than one bit difference. */
+ fprintf (fp, "unknown");
+ return 1;
+ }
+ if (x)
+ {
+ k = j;
+ m = x;
+ }
+ }
+ if (m == 0)
+ {
+ /* No difference. */
+ fprintf (fp, "unknown");
+ return 1;
+ }
+ /* Now m = plus.word[k] ^ ~minus.word[k]. */
+ if (plus.word[k] & ~minus.word[k])
+ {
+ /* Oh? The sign bit is set in the positive and cleared in the negative
+ numbers? */
+ fprintf (fp, "unknown");
+ return 1;
+ }
+ for (i = 0; ; i++)
+ if ((m >> i) & 1)
+ break;
+ fprintf (fp, "word %d bit %d", (int) k, (int) i);
+ return (fclose (fp) != 0);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_cc_float_signbit=`cat conftest.out`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_cc_float_signbit="unknown"
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ rm -f conftest.out
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_cc_float_signbit" >&5
+$as_echo "$gl_cv_cc_float_signbit" >&6; }
+ case "$gl_cv_cc_float_signbit" in
+ word*bit*)
+ word=`echo "$gl_cv_cc_float_signbit" | sed -e 's/word //' -e 's/ bit.*//'`
+ bit=`echo "$gl_cv_cc_float_signbit" | sed -e 's/word.*bit //'`
+
+cat >>confdefs.h <<_ACEOF
+#define FLT_SIGNBIT_WORD $word
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define FLT_SIGNBIT_BIT $bit
+_ACEOF
+
+ ;;
+ esac
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking where to find the sign bit in a 'double'" >&5
+$as_echo_n "checking where to find the sign bit in a 'double'... " >&6; }
+if test "${gl_cv_cc_double_signbit+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+
+ gl_cv_cc_double_signbit="unknown"
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stddef.h>
+#include <stdio.h>
+#define NWORDS \
+ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { double value; unsigned int word[NWORDS]; }
+ memory_float;
+static memory_float plus = { 1.0 };
+static memory_float minus = { -1.0 };
+int main ()
+{
+ size_t j, k, i;
+ unsigned int m;
+ FILE *fp = fopen ("conftest.out", "w");
+ if (fp == NULL)
+ return 1;
+ /* Find the different bit. */
+ k = 0; m = 0;
+ for (j = 0; j < NWORDS; j++)
+ {
+ unsigned int x = plus.word[j] ^ minus.word[j];
+ if ((x & (x - 1)) || (x && m))
+ {
+ /* More than one bit difference. */
+ fprintf (fp, "unknown");
+ return 1;
+ }
+ if (x)
+ {
+ k = j;
+ m = x;
+ }
+ }
+ if (m == 0)
+ {
+ /* No difference. */
+ fprintf (fp, "unknown");
+ return 1;
+ }
+ /* Now m = plus.word[k] ^ ~minus.word[k]. */
+ if (plus.word[k] & ~minus.word[k])
+ {
+ /* Oh? The sign bit is set in the positive and cleared in the negative
+ numbers? */
+ fprintf (fp, "unknown");
+ return 1;
+ }
+ for (i = 0; ; i++)
+ if ((m >> i) & 1)
+ break;
+ fprintf (fp, "word %d bit %d", (int) k, (int) i);
+ return (fclose (fp) != 0);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_cc_double_signbit=`cat conftest.out`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_cc_double_signbit="unknown"
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ rm -f conftest.out
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_cc_double_signbit" >&5
+$as_echo "$gl_cv_cc_double_signbit" >&6; }
+ case "$gl_cv_cc_double_signbit" in
+ word*bit*)
+ word=`echo "$gl_cv_cc_double_signbit" | sed -e 's/word //' -e 's/ bit.*//'`
+ bit=`echo "$gl_cv_cc_double_signbit" | sed -e 's/word.*bit //'`
+
+cat >>confdefs.h <<_ACEOF
+#define DBL_SIGNBIT_WORD $word
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define DBL_SIGNBIT_BIT $bit
+_ACEOF
+
+ ;;
+ esac
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking where to find the sign bit in a 'long double'" >&5
+$as_echo_n "checking where to find the sign bit in a 'long double'... " >&6; }
+if test "${gl_cv_cc_long_double_signbit+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+
+ gl_cv_cc_long_double_signbit="unknown"
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stddef.h>
+#include <stdio.h>
+#define NWORDS \
+ ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { long double value; unsigned int word[NWORDS]; }
+ memory_float;
+static memory_float plus = { 1.0L };
+static memory_float minus = { -1.0L };
+int main ()
+{
+ size_t j, k, i;
+ unsigned int m;
+ FILE *fp = fopen ("conftest.out", "w");
+ if (fp == NULL)
+ return 1;
+ /* Find the different bit. */
+ k = 0; m = 0;
+ for (j = 0; j < NWORDS; j++)
+ {
+ unsigned int x = plus.word[j] ^ minus.word[j];
+ if ((x & (x - 1)) || (x && m))
+ {
+ /* More than one bit difference. */
+ fprintf (fp, "unknown");
+ return 1;
+ }
+ if (x)
+ {
+ k = j;
+ m = x;
+ }
+ }
+ if (m == 0)
+ {
+ /* No difference. */
+ fprintf (fp, "unknown");
+ return 1;
+ }
+ /* Now m = plus.word[k] ^ ~minus.word[k]. */
+ if (plus.word[k] & ~minus.word[k])
+ {
+ /* Oh? The sign bit is set in the positive and cleared in the negative
+ numbers? */
+ fprintf (fp, "unknown");
+ return 1;
+ }
+ for (i = 0; ; i++)
+ if ((m >> i) & 1)
+ break;
+ fprintf (fp, "word %d bit %d", (int) k, (int) i);
+ return (fclose (fp) != 0);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_cc_long_double_signbit=`cat conftest.out`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_cc_long_double_signbit="unknown"
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ rm -f conftest.out
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_cc_long_double_signbit" >&5
+$as_echo "$gl_cv_cc_long_double_signbit" >&6; }
+ case "$gl_cv_cc_long_double_signbit" in
+ word*bit*)
+ word=`echo "$gl_cv_cc_long_double_signbit" | sed -e 's/word //' -e 's/ bit.*//'`
+ bit=`echo "$gl_cv_cc_long_double_signbit" | sed -e 's/word.*bit //'`
+
+cat >>confdefs.h <<_ACEOF
+#define LDBL_SIGNBIT_WORD $word
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define LDBL_SIGNBIT_BIT $bit
+_ACEOF
+
+ ;;
+ esac
+
+
+ if test "$gl_cv_cc_float_signbit" = unknown; then
+ { $as_echo "$as_me:$LINENO: checking whether copysignf is declared" >&5
+$as_echo_n "checking whether copysignf is declared... " >&6; }
+if test "${ac_cv_have_decl_copysignf+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+
+int
+main ()
+{
+#ifndef copysignf
+ (void) copysignf;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_copysignf=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_copysignf=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_copysignf" >&5
+$as_echo "$ac_cv_have_decl_copysignf" >&6; }
+if test "x$ac_cv_have_decl_copysignf" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_COPYSIGNF 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_COPYSIGNF 0
+_ACEOF
+
+
+fi
+
+
+ if test "$ac_cv_have_decl_copysignf" = yes; then
+ { $as_echo "$as_me:$LINENO: checking whether copysignf can be used without linking with libm" >&5
+$as_echo_n "checking whether copysignf can be used without linking with libm... " >&6; }
+if test "${gl_cv_func_copysignf_no_libm+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ float x, y;
+int
+main ()
+{
+return copysignf (x, y) < 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ gl_cv_func_copysignf_no_libm=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_copysignf_no_libm=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_copysignf_no_libm" >&5
+$as_echo "$gl_cv_func_copysignf_no_libm" >&6; }
+ if test $gl_cv_func_copysignf_no_libm = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_COPYSIGNF_IN_LIBC 1
+_ACEOF
+
+ fi
+ fi
+ fi
+ if test "$gl_cv_cc_double_signbit" = unknown; then
+ { $as_echo "$as_me:$LINENO: checking whether copysign is declared" >&5
+$as_echo_n "checking whether copysign is declared... " >&6; }
+if test "${ac_cv_have_decl_copysign+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+
+int
+main ()
+{
+#ifndef copysign
+ (void) copysign;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_copysign=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_copysign=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_copysign" >&5
+$as_echo "$ac_cv_have_decl_copysign" >&6; }
+if test "x$ac_cv_have_decl_copysign" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_COPYSIGN 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_COPYSIGN 0
+_ACEOF
+
+
+fi
+
+
+ if test "$ac_cv_have_decl_copysign" = yes; then
+ { $as_echo "$as_me:$LINENO: checking whether copysign can be used without linking with libm" >&5
+$as_echo_n "checking whether copysign can be used without linking with libm... " >&6; }
+if test "${gl_cv_func_copysign_no_libm+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ double x, y;
+int
+main ()
+{
+return copysign (x, y) < 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ gl_cv_func_copysign_no_libm=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_copysign_no_libm=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_copysign_no_libm" >&5
+$as_echo "$gl_cv_func_copysign_no_libm" >&6; }
+ if test $gl_cv_func_copysign_no_libm = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_COPYSIGN_IN_LIBC 1
+_ACEOF
+
+ fi
+ fi
+ fi
+ if test "$gl_cv_cc_long_double_signbit" = unknown; then
+ { $as_echo "$as_me:$LINENO: checking whether copysignl is declared" >&5
+$as_echo_n "checking whether copysignl is declared... " >&6; }
+if test "${ac_cv_have_decl_copysignl+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+
+int
+main ()
+{
+#ifndef copysignl
+ (void) copysignl;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_copysignl=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_copysignl=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_copysignl" >&5
+$as_echo "$ac_cv_have_decl_copysignl" >&6; }
+if test "x$ac_cv_have_decl_copysignl" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_COPYSIGNL 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_COPYSIGNL 0
+_ACEOF
+
+
+fi
+
+
+ if test "$ac_cv_have_decl_copysignl" = yes; then
+ { $as_echo "$as_me:$LINENO: checking whether copysignl can be used without linking with libm" >&5
+$as_echo_n "checking whether copysignl can be used without linking with libm... " >&6; }
+if test "${gl_cv_func_copysignl_no_libm+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ long double x, y;
+int
+main ()
+{
+return copysignl (x, y) < 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ gl_cv_func_copysignl_no_libm=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_copysignl_no_libm=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_copysignl_no_libm" >&5
+$as_echo "$gl_cv_func_copysignl_no_libm" >&6; }
+ if test $gl_cv_func_copysignl_no_libm = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_COPYSIGNL_IN_LIBC 1
+_ACEOF
+
+ fi
+ fi
+ fi
+ fi
+ fi
+
+
+
+ GNULIB_SIGNBIT=1
+
+
+
+for ac_header in stdint.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ { $as_echo "$as_me:$LINENO: checking for SIZE_MAX" >&5
+$as_echo_n "checking for SIZE_MAX... " >&6; }
+if test "${gl_cv_size_max+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_cv_size_max=
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <limits.h>
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#ifdef SIZE_MAX
+Found it
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Found it" >/dev/null 2>&1; then
+ gl_cv_size_max=yes
+fi
+rm -f conftest*
+
+ if test -z "$gl_cv_size_max"; then
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stddef.h>
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof (size_t) * CHAR_BIT - 1) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stddef.h>
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof (size_t) * CHAR_BIT - 1) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stddef.h>
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof (size_t) * CHAR_BIT - 1) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stddef.h>
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof (size_t) * CHAR_BIT - 1) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stddef.h>
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof (size_t) * CHAR_BIT - 1) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) size_t_bits_minus_1=$ac_lo;;
+'') size_t_bits_minus_1= ;;
+esac
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stddef.h>
+#include <limits.h>
+static long int longval () { return sizeof (size_t) * CHAR_BIT - 1; }
+static unsigned long int ulongval () { return sizeof (size_t) * CHAR_BIT - 1; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if ((sizeof (size_t) * CHAR_BIT - 1) < 0)
+ {
+ long int i = longval ();
+ if (i != (sizeof (size_t) * CHAR_BIT - 1))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != (sizeof (size_t) * CHAR_BIT - 1))
+ return 1;
+ fprintf (f, "%lu", i);
+ }
+ /* Do not output a trailing newline, as this causes \r\n confusion
+ on some platforms. */
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ size_t_bits_minus_1=`cat conftest.val`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+size_t_bits_minus_1=
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stddef.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stddef.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stddef.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stddef.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stddef.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) fits_in_uint=$ac_lo;;
+'') fits_in_uint= ;;
+esac
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stddef.h>
+static long int longval () { return sizeof (size_t) <= sizeof (unsigned int); }
+static unsigned long int ulongval () { return sizeof (size_t) <= sizeof (unsigned int); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if ((sizeof (size_t) <= sizeof (unsigned int)) < 0)
+ {
+ long int i = longval ();
+ if (i != (sizeof (size_t) <= sizeof (unsigned int)))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != (sizeof (size_t) <= sizeof (unsigned int)))
+ return 1;
+ fprintf (f, "%lu", i);
+ }
+ /* Do not output a trailing newline, as this causes \r\n confusion
+ on some platforms. */
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ fits_in_uint=`cat conftest.val`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+fits_in_uint=
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+ if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then
+ if test $fits_in_uint = 1; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stddef.h>
+ extern size_t foo;
+ extern unsigned long foo;
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ fits_in_uint=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $fits_in_uint = 1; then
+ gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
+ else
+ gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
+ fi
+ else
+ gl_cv_size_max='((size_t)~(size_t)0)'
+ fi
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_size_max" >&5
+$as_echo "$gl_cv_size_max" >&6; }
+ if test "$gl_cv_size_max" != yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define SIZE_MAX $gl_cv_size_max
+_ACEOF
+
+ fi
+
+
+
+
+
+
+ # Define two additional variables used in the Makefile substitution.
+
+ if test "$ac_cv_header_stdbool_h" = yes; then
+ STDBOOL_H=''
+ else
+ STDBOOL_H='stdbool.h'
+ fi
+
+
+ if test "$ac_cv_type__Bool" = yes; then
+ HAVE__BOOL=1
+ else
+ HAVE__BOOL=0
+ fi
+
+
+
+
+
+ if test $ac_cv_type_long_long_int = yes; then
+ HAVE_LONG_LONG_INT=1
+ else
+ HAVE_LONG_LONG_INT=0
+ fi
+
+
+ if test $ac_cv_type_unsigned_long_long_int = yes; then
+ HAVE_UNSIGNED_LONG_LONG_INT=1
+ else
+ HAVE_UNSIGNED_LONG_LONG_INT=0
+ fi
+
+
+ if test $ac_cv_header_inttypes_h = yes; then
+ HAVE_INTTYPES_H=1
+ else
+ HAVE_INTTYPES_H=0
+ fi
+
+
+ if test $ac_cv_header_sys_types_h = yes; then
+ HAVE_SYS_TYPES_H=1
+ else
+ HAVE_SYS_TYPES_H=0
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_stdint_h='<'stdint.h'>'
+ else
+ { $as_echo "$as_me:$LINENO: checking absolute name of <stdint.h>" >&5
+$as_echo_n "checking absolute name of <stdint.h>... " >&6; }
+if test "${gl_cv_next_stdint_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test $ac_cv_header_stdint_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdint.h>
+
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+ gl_cv_next_stdint_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n '\#/stdint.h#{
+ s#.*"\(.*/stdint.h\)".*#\1#
+ s#^/[^/]#//&#
+ p
+ q
+ }'`'"'
+ else
+ gl_cv_next_stdint_h='<'stdint.h'>'
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_stdint_h" >&5
+$as_echo "$gl_cv_next_stdint_h" >&6; }
+ fi
+ NEXT_STDINT_H=$gl_cv_next_stdint_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'stdint.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_stdint_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_STDINT_H=$gl_next_as_first_directive
+
+
+
+ if test $ac_cv_header_stdint_h = yes; then
+ HAVE_STDINT_H=1
+ else
+ HAVE_STDINT_H=0
+ fi
+
+
+ if test $ac_cv_header_stdint_h = yes; then
+ { $as_echo "$as_me:$LINENO: checking whether stdint.h conforms to C99" >&5
+$as_echo_n "checking whether stdint.h conforms to C99... " >&6; }
+if test "${gl_cv_header_working_stdint_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ gl_cv_header_working_stdint_h=no
+ cat >conftest.$ac_ext <<_ACEOF
+
+ /* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */
+#if !(defined WCHAR_MIN && defined WCHAR_MAX)
+#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
+#endif
+
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+
+#ifdef INT8_MAX
+int8_t a1 = INT8_MAX;
+int8_t a1min = INT8_MIN;
+#endif
+#ifdef INT16_MAX
+int16_t a2 = INT16_MAX;
+int16_t a2min = INT16_MIN;
+#endif
+#ifdef INT32_MAX
+int32_t a3 = INT32_MAX;
+int32_t a3min = INT32_MIN;
+#endif
+#ifdef INT64_MAX
+int64_t a4 = INT64_MAX;
+int64_t a4min = INT64_MIN;
+#endif
+#ifdef UINT8_MAX
+uint8_t b1 = UINT8_MAX;
+#else
+typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
+#endif
+#ifdef UINT16_MAX
+uint16_t b2 = UINT16_MAX;
+#endif
+#ifdef UINT32_MAX
+uint32_t b3 = UINT32_MAX;
+#endif
+#ifdef UINT64_MAX
+uint64_t b4 = UINT64_MAX;
+#endif
+int_least8_t c1 = INT8_C (0x7f);
+int_least8_t c1max = INT_LEAST8_MAX;
+int_least8_t c1min = INT_LEAST8_MIN;
+int_least16_t c2 = INT16_C (0x7fff);
+int_least16_t c2max = INT_LEAST16_MAX;
+int_least16_t c2min = INT_LEAST16_MIN;
+int_least32_t c3 = INT32_C (0x7fffffff);
+int_least32_t c3max = INT_LEAST32_MAX;
+int_least32_t c3min = INT_LEAST32_MIN;
+int_least64_t c4 = INT64_C (0x7fffffffffffffff);
+int_least64_t c4max = INT_LEAST64_MAX;
+int_least64_t c4min = INT_LEAST64_MIN;
+uint_least8_t d1 = UINT8_C (0xff);
+uint_least8_t d1max = UINT_LEAST8_MAX;
+uint_least16_t d2 = UINT16_C (0xffff);
+uint_least16_t d2max = UINT_LEAST16_MAX;
+uint_least32_t d3 = UINT32_C (0xffffffff);
+uint_least32_t d3max = UINT_LEAST32_MAX;
+uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
+uint_least64_t d4max = UINT_LEAST64_MAX;
+int_fast8_t e1 = INT_FAST8_MAX;
+int_fast8_t e1min = INT_FAST8_MIN;
+int_fast16_t e2 = INT_FAST16_MAX;
+int_fast16_t e2min = INT_FAST16_MIN;
+int_fast32_t e3 = INT_FAST32_MAX;
+int_fast32_t e3min = INT_FAST32_MIN;
+int_fast64_t e4 = INT_FAST64_MAX;
+int_fast64_t e4min = INT_FAST64_MIN;
+uint_fast8_t f1 = UINT_FAST8_MAX;
+uint_fast16_t f2 = UINT_FAST16_MAX;
+uint_fast32_t f3 = UINT_FAST32_MAX;
+uint_fast64_t f4 = UINT_FAST64_MAX;
+#ifdef INTPTR_MAX
+intptr_t g = INTPTR_MAX;
+intptr_t gmin = INTPTR_MIN;
+#endif
+#ifdef UINTPTR_MAX
+uintptr_t h = UINTPTR_MAX;
+#endif
+intmax_t i = INTMAX_MAX;
+uintmax_t j = UINTMAX_MAX;
+
+#include <limits.h> /* for CHAR_BIT */
+#define TYPE_MINIMUM(t) \
+ ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+#define TYPE_MAXIMUM(t) \
+ ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+struct s {
+ int check_PTRDIFF:
+ PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
+ && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
+ ? 1 : -1;
+ /* Detect bug in FreeBSD 6.0 / ia64. */
+ int check_SIG_ATOMIC:
+ SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
+ && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
+ ? 1 : -1;
+ int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
+ int check_WCHAR:
+ WCHAR_MIN == TYPE_MINIMUM (wchar_t)
+ && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
+ ? 1 : -1;
+ /* Detect bug in mingw. */
+ int check_WINT:
+ WINT_MIN == TYPE_MINIMUM (wint_t)
+ && WINT_MAX == TYPE_MAXIMUM (wint_t)
+ ? 1 : -1;
+
+ /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */
+ int check_UINT8_C:
+ (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
+ int check_UINT16_C:
+ (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
+
+ /* Detect bugs in OpenBSD 3.9 stdint.h. */
+#ifdef UINT8_MAX
+ int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
+#endif
+#ifdef UINT16_MAX
+ int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
+#endif
+#ifdef UINT32_MAX
+ int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
+#endif
+#ifdef UINT64_MAX
+ int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
+#endif
+ int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
+ int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
+ int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
+ int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
+ int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
+ int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
+ int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
+ int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
+ int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
+ int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
+ int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
+};
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ if test "$cross_compiling" = yes; then
+ gl_cv_header_working_stdint_h=yes
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+
+ /* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+
+#include <stdio.h>
+#include <string.h>
+#define MVAL(macro) MVAL1(macro)
+#define MVAL1(expression) #expression
+static const char *macro_values[] =
+ {
+#ifdef INT8_MAX
+ MVAL (INT8_MAX),
+#endif
+#ifdef INT16_MAX
+ MVAL (INT16_MAX),
+#endif
+#ifdef INT32_MAX
+ MVAL (INT32_MAX),
+#endif
+#ifdef INT64_MAX
+ MVAL (INT64_MAX),
+#endif
+#ifdef UINT8_MAX
+ MVAL (UINT8_MAX),
+#endif
+#ifdef UINT16_MAX
+ MVAL (UINT16_MAX),
+#endif
+#ifdef UINT32_MAX
+ MVAL (UINT32_MAX),
+#endif
+#ifdef UINT64_MAX
+ MVAL (UINT64_MAX),
+#endif
+ NULL
+ };
+
+int
+main ()
+{
+
+ const char **mv;
+ for (mv = macro_values; *mv != NULL; mv++)
+ {
+ const char *value = *mv;
+ /* Test whether it looks like a cast expression. */
+ if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
+ || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
+ || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
+ || strncmp (value, "((int)"/*)*/, 6) == 0
+ || strncmp (value, "((signed short)"/*)*/, 15) == 0
+ || strncmp (value, "((signed char)"/*)*/, 14) == 0)
+ return 1;
+ }
+ return 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_header_working_stdint_h=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_working_stdint_h" >&5
+$as_echo "$gl_cv_header_working_stdint_h" >&6; }
+ fi
+ if test "$gl_cv_header_working_stdint_h" = yes; then
+ STDINT_H=
+ else
+
+
+for ac_header in sys/inttypes.h sys/bitypes.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ if test $ac_cv_header_sys_inttypes_h = yes; then
+ HAVE_SYS_INTTYPES_H=1
+ else
+ HAVE_SYS_INTTYPES_H=0
+ fi
+
+ if test $ac_cv_header_sys_bitypes_h = yes; then
+ HAVE_SYS_BITYPES_H=1
+ else
+ HAVE_SYS_BITYPES_H=0
+ fi
+
+
+
+
+
+
+
+
+
+
+
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+
+
+
+ for gltype in ptrdiff_t size_t ; do
+ { $as_echo "$as_me:$LINENO: checking for bit size of $gltype" >&5
+$as_echo_n "checking for bit size of $gltype... " >&6; }
+if { as_var=gl_cv_bitsizeof_${gltype}; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) result=$ac_lo;;
+'') result=unknown ;;
+esac
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+#include <limits.h>
+static long int longval () { return sizeof ($gltype) * CHAR_BIT; }
+static unsigned long int ulongval () { return sizeof ($gltype) * CHAR_BIT; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if ((sizeof ($gltype) * CHAR_BIT) < 0)
+ {
+ long int i = longval ();
+ if (i != (sizeof ($gltype) * CHAR_BIT))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != (sizeof ($gltype) * CHAR_BIT))
+ return 1;
+ fprintf (f, "%lu", i);
+ }
+ /* Do not output a trailing newline, as this causes \r\n confusion
+ on some platforms. */
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ result=`cat conftest.val`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+result=unknown
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+ eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+ac_res=`eval 'as_val=${'gl_cv_bitsizeof_${gltype}'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval result=\$gl_cv_bitsizeof_${gltype}
+ if test $result = unknown; then
+ result=0
+ fi
+ GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ cat >>confdefs.h <<_ACEOF
+#define BITSIZEOF_${GLTYPE} $result
+_ACEOF
+
+ eval BITSIZEOF_${GLTYPE}=\$result
+ done
+
+
+ fi
+
+
+
+
+
+ for gltype in sig_atomic_t wchar_t wint_t ; do
+ { $as_echo "$as_me:$LINENO: checking for bit size of $gltype" >&5
+$as_echo_n "checking for bit size of $gltype... " >&6; }
+if { as_var=gl_cv_bitsizeof_${gltype}; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) result=$ac_lo;;
+'') result=unknown ;;
+esac
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+#include <limits.h>
+static long int longval () { return sizeof ($gltype) * CHAR_BIT; }
+static unsigned long int ulongval () { return sizeof ($gltype) * CHAR_BIT; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if ((sizeof ($gltype) * CHAR_BIT) < 0)
+ {
+ long int i = longval ();
+ if (i != (sizeof ($gltype) * CHAR_BIT))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != (sizeof ($gltype) * CHAR_BIT))
+ return 1;
+ fprintf (f, "%lu", i);
+ }
+ /* Do not output a trailing newline, as this causes \r\n confusion
+ on some platforms. */
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ result=`cat conftest.val`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+result=unknown
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+ eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+ac_res=`eval 'as_val=${'gl_cv_bitsizeof_${gltype}'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval result=\$gl_cv_bitsizeof_${gltype}
+ if test $result = unknown; then
+ result=0
+ fi
+ GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ cat >>confdefs.h <<_ACEOF
+#define BITSIZEOF_${GLTYPE} $result
+_ACEOF
+
+ eval BITSIZEOF_${GLTYPE}=\$result
+ done
+
+
+
+
+
+
+
+ for gltype in sig_atomic_t wchar_t wint_t ; do
+ { $as_echo "$as_me:$LINENO: checking whether $gltype is signed" >&5
+$as_echo_n "checking whether $gltype is signed... " >&6; }
+if { as_var=gl_cv_type_${gltype}_signed; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+ int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ result=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ result=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ eval gl_cv_type_${gltype}_signed=\$result
+
+fi
+ac_res=`eval 'as_val=${'gl_cv_type_${gltype}_signed'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval result=\$gl_cv_type_${gltype}_signed
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ if test "$result" = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SIGNED_${GLTYPE} 1
+_ACEOF
+
+ eval HAVE_SIGNED_${GLTYPE}=1
+ else
+ eval HAVE_SIGNED_${GLTYPE}=0
+ fi
+ done
+
+
+ gl_cv_type_ptrdiff_t_signed=yes
+ gl_cv_type_size_t_signed=no
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+
+
+
+ for gltype in ptrdiff_t size_t ; do
+ { $as_echo "$as_me:$LINENO: checking for $gltype integer literal suffix" >&5
+$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
+if { as_var=gl_cv_type_${gltype}_suffix; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval gl_cv_type_${gltype}_suffix=no
+ eval result=\$gl_cv_type_${gltype}_signed
+ if test "$result" = yes; then
+ glsufu=
+ else
+ glsufu=u
+ fi
+ for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+ case $glsuf in
+ '') gltype1='int';;
+ l) gltype1='long int';;
+ ll) gltype1='long long int';;
+ i64) gltype1='__int64';;
+ u) gltype1='unsigned int';;
+ ul) gltype1='unsigned long int';;
+ ull) gltype1='unsigned long long int';;
+ ui64)gltype1='unsigned __int64';;
+ esac
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+ extern $gltype foo;
+ extern $gltype1 foo;
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ eval gl_cv_type_${gltype}_suffix=\$glsuf
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" != no && break
+ done
+fi
+ac_res=`eval 'as_val=${'gl_cv_type_${gltype}_suffix'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" = no && result=
+ eval ${GLTYPE}_SUFFIX=\$result
+ cat >>confdefs.h <<_ACEOF
+#define ${GLTYPE}_SUFFIX $result
+_ACEOF
+
+ done
+
+
+ fi
+
+
+
+
+
+ for gltype in sig_atomic_t wchar_t wint_t ; do
+ { $as_echo "$as_me:$LINENO: checking for $gltype integer literal suffix" >&5
+$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
+if { as_var=gl_cv_type_${gltype}_suffix; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval gl_cv_type_${gltype}_suffix=no
+ eval result=\$gl_cv_type_${gltype}_signed
+ if test "$result" = yes; then
+ glsufu=
+ else
+ glsufu=u
+ fi
+ for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+ case $glsuf in
+ '') gltype1='int';;
+ l) gltype1='long int';;
+ ll) gltype1='long long int';;
+ i64) gltype1='__int64';;
+ u) gltype1='unsigned int';;
+ ul) gltype1='unsigned long int';;
+ ull) gltype1='unsigned long long int';;
+ ui64)gltype1='unsigned __int64';;
+ esac
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+ extern $gltype foo;
+ extern $gltype1 foo;
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ eval gl_cv_type_${gltype}_suffix=\$glsuf
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" != no && break
+ done
+fi
+ac_res=`eval 'as_val=${'gl_cv_type_${gltype}_suffix'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" = no && result=
+ eval ${GLTYPE}_SUFFIX=\$result
+ cat >>confdefs.h <<_ACEOF
+#define ${GLTYPE}_SUFFIX $result
+_ACEOF
+
+ done
+
+
+
+ STDINT_H=stdint.h
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_stdlib_h='<'stdlib.h'>'
+ else
+ { $as_echo "$as_me:$LINENO: checking absolute name of <stdlib.h>" >&5
+$as_echo_n "checking absolute name of <stdlib.h>... " >&6; }
+if test "${gl_cv_next_stdlib_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test $ac_cv_header_stdlib_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+ gl_cv_next_stdlib_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n '\#/stdlib.h#{
+ s#.*"\(.*/stdlib.h\)".*#\1#
+ s#^/[^/]#//&#
+ p
+ q
+ }'`'"'
+ else
+ gl_cv_next_stdlib_h='<'stdlib.h'>'
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_stdlib_h" >&5
+$as_echo "$gl_cv_next_stdlib_h" >&6; }
+ fi
+ NEXT_STDLIB_H=$gl_cv_next_stdlib_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'stdlib.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_stdlib_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H=$gl_next_as_first_directive
+
+
+
+
+for ac_header in random.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ if test $ac_cv_header_random_h = yes; then
+ HAVE_RANDOM_H=1
+ else
+ HAVE_RANDOM_H=0
+ fi
+
+ { $as_echo "$as_me:$LINENO: checking for struct random_data" >&5
+$as_echo_n "checking for struct random_data... " >&6; }
+if test "${ac_cv_type_struct_random_data+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_type_struct_random_data=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+ #if HAVE_RANDOM_H
+ # include <random.h>
+ #endif
+
+
+int
+main ()
+{
+if (sizeof (struct random_data))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+ #if HAVE_RANDOM_H
+ # include <random.h>
+ #endif
+
+
+int
+main ()
+{
+if (sizeof ((struct random_data)))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_struct_random_data=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_struct_random_data" >&5
+$as_echo "$ac_cv_type_struct_random_data" >&6; }
+if test "x$ac_cv_type_struct_random_data" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_RANDOM_DATA 1
+_ACEOF
+
+
+else
+ HAVE_STRUCT_RANDOM_DATA=0
+fi
+
+
+ if test $gl_cond_libtool = false; then
+ gl_ltlibdeps="$gl_ltlibdeps $LTLIBICONV"
+ gl_libdeps="$gl_libdeps $LIBICONV"
+ fi
+
+
+
+
+
+
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_UNINORM_U16_NORMALIZE 1
+_ACEOF
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_UNINORM_U32_NORMALIZE 1
+_ACEOF
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_UNINORM_U8_NORMALIZE 1
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_unistd_h='<'unistd.h'>'
+ else
+ { $as_echo "$as_me:$LINENO: checking absolute name of <unistd.h>" >&5
+$as_echo_n "checking absolute name of <unistd.h>... " >&6; }
+if test "${gl_cv_next_unistd_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test $ac_cv_header_unistd_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <unistd.h>
+
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+ gl_cv_next_unistd_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n '\#/unistd.h#{
+ s#.*"\(.*/unistd.h\)".*#\1#
+ s#^/[^/]#//&#
+ p
+ q
+ }'`'"'
+ else
+ gl_cv_next_unistd_h='<'unistd.h'>'
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_unistd_h" >&5
+$as_echo "$gl_cv_next_unistd_h" >&6; }
+ fi
+ NEXT_UNISTD_H=$gl_cv_next_unistd_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'unistd.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_unistd_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_header_unistd_h = yes; then
+ HAVE_UNISTD_H=1
+ else
+ HAVE_UNISTD_H=0
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for ptrdiff_t" >&5
+$as_echo_n "checking for ptrdiff_t... " >&6; }
+if test "${ac_cv_type_ptrdiff_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_type_ptrdiff_t=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof (ptrdiff_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof ((ptrdiff_t)))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_ptrdiff_t=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5
+$as_echo "$ac_cv_type_ptrdiff_t" >&6; }
+if test "x$ac_cv_type_ptrdiff_t" = x""yes; then
+ :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define ptrdiff_t long
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+ case "$gl_cv_func_printf_infinite" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_INFINITE_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+
+ case "$gl_cv_func_printf_long_double" in
+ *yes)
+ case "$gl_cv_func_printf_infinite_long_double" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_INFINITE_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_a" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_A 1
+_ACEOF
+
+
+for ac_func in nl_langinfo
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_f" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_F 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_ls" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_LS 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_grouping" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_GROUPING 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_leftadjust" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_LEFTADJUST 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_zero" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_ZERO 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_precision" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_UNBOUNDED_PRECISION 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DOUBLE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_enomem" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_ENOMEM 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DOUBLE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+
+
+
+
+ case "$gl_cv_func_printf_infinite" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_INFINITE_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+
+ case "$gl_cv_func_printf_long_double" in
+ *yes)
+ case "$gl_cv_func_printf_infinite_long_double" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_INFINITE_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_a" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_A 1
+_ACEOF
+
+
+for ac_func in nl_langinfo
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_f" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_F 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_ls" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_LS 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_grouping" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_GROUPING 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_leftadjust" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_LEFTADJUST 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_zero" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_ZERO 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_precision" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_UNBOUNDED_PRECISION 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DOUBLE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_enomem" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_ENOMEM 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DOUBLE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for ptrdiff_t" >&5
+$as_echo_n "checking for ptrdiff_t... " >&6; }
+if test "${ac_cv_type_ptrdiff_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_type_ptrdiff_t=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof (ptrdiff_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof ((ptrdiff_t)))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_ptrdiff_t=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5
+$as_echo "$ac_cv_type_ptrdiff_t" >&6; }
+if test "x$ac_cv_type_ptrdiff_t" = x""yes; then
+ :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define ptrdiff_t long
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+ case "$gl_cv_func_printf_infinite" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_INFINITE_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+
+ case "$gl_cv_func_printf_long_double" in
+ *yes)
+ case "$gl_cv_func_printf_infinite_long_double" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_INFINITE_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_a" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_A 1
+_ACEOF
+
+
+for ac_func in nl_langinfo
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_f" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_F 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_ls" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_LS 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_grouping" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_GROUPING 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_leftadjust" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_LEFTADJUST 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_zero" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_ZERO 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_precision" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_UNBOUNDED_PRECISION 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DOUBLE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_enomem" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_ENOMEM 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DOUBLE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+
+
+
+
+ case "$gl_cv_func_printf_infinite" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_INFINITE_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+
+ case "$gl_cv_func_printf_long_double" in
+ *yes)
+ case "$gl_cv_func_printf_infinite_long_double" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_INFINITE_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_a" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_A 1
+_ACEOF
+
+
+for ac_func in nl_langinfo
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_f" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_F 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_ls" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_LS 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_grouping" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_GROUPING 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_leftadjust" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_LEFTADJUST 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_zero" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_ZERO 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_precision" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_UNBOUNDED_PRECISION 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DOUBLE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_enomem" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_ENOMEM 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DOUBLE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for ptrdiff_t" >&5
+$as_echo_n "checking for ptrdiff_t... " >&6; }
+if test "${ac_cv_type_ptrdiff_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_type_ptrdiff_t=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof (ptrdiff_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof ((ptrdiff_t)))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_ptrdiff_t=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5
+$as_echo "$ac_cv_type_ptrdiff_t" >&6; }
+if test "x$ac_cv_type_ptrdiff_t" = x""yes; then
+ :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define ptrdiff_t long
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+ case "$gl_cv_func_printf_infinite" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_INFINITE_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+
+ case "$gl_cv_func_printf_long_double" in
+ *yes)
+ case "$gl_cv_func_printf_infinite_long_double" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_INFINITE_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_a" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_A 1
+_ACEOF
+
+
+for ac_func in nl_langinfo
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_f" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_F 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_ls" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_LS 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_grouping" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_GROUPING 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_leftadjust" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_LEFTADJUST 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_zero" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_ZERO 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_precision" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_UNBOUNDED_PRECISION 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DOUBLE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_enomem" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_ENOMEM 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DOUBLE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+
+
+
+
+ case "$gl_cv_func_printf_infinite" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_INFINITE_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+
+ case "$gl_cv_func_printf_long_double" in
+ *yes)
+ case "$gl_cv_func_printf_infinite_long_double" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_INFINITE_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_a" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_A 1
+_ACEOF
+
+
+for ac_func in nl_langinfo
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_f" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_F 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_ls" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_LS 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_grouping" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_GROUPING 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_leftadjust" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_LEFTADJUST 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_zero" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_ZERO 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_precision" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_UNBOUNDED_PRECISION 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DOUBLE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_enomem" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_ENOMEM 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DOUBLE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for ptrdiff_t" >&5
+$as_echo_n "checking for ptrdiff_t... " >&6; }
+if test "${ac_cv_type_ptrdiff_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_type_ptrdiff_t=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof (ptrdiff_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof ((ptrdiff_t)))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_ptrdiff_t=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5
+$as_echo "$ac_cv_type_ptrdiff_t" >&6; }
+if test "x$ac_cv_type_ptrdiff_t" = x""yes; then
+ :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define ptrdiff_t long
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+ case "$gl_cv_func_printf_infinite" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_INFINITE_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+
+ case "$gl_cv_func_printf_long_double" in
+ *yes)
+ case "$gl_cv_func_printf_infinite_long_double" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_INFINITE_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_a" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_A 1
+_ACEOF
+
+
+for ac_func in nl_langinfo
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_f" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_F 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_directive_ls" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DIRECTIVE_LS 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_grouping" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_GROUPING 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_leftadjust" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_LEFTADJUST 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_flag_zero" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_FLAG_ZERO 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_precision" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_UNBOUNDED_PRECISION 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DOUBLE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ case "$gl_cv_func_printf_enomem" in
+ *yes)
+ ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_ENOMEM 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_DOUBLE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NEED_PRINTF_LONG_DOUBLE 1
+_ACEOF
+
+ ;;
+ esac
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_UNISTR_U16_MBTOUC 1
+_ACEOF
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_UNISTR_U16_MBTOUC_UNSAFE 1
+_ACEOF
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_UNISTR_U16_MBTOUCR 1
+_ACEOF
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_UNISTR_U16_UCTOMB 1
+_ACEOF
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_UNISTR_U32_MBTOUC 1
+_ACEOF
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_UNISTR_U32_MBTOUC_UNSAFE 1
+_ACEOF
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_UNISTR_U32_MBTOUCR 1
+_ACEOF
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_UNISTR_U32_UCTOMB 1
+_ACEOF
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_UNISTR_U8_MBTOUC 1
+_ACEOF
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_UNISTR_U8_MBTOUC_UNSAFE 1
+_ACEOF
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_UNISTR_U8_MBTOUCR 1
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_UNISTR_U8_UCTOMB 1
+_ACEOF
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether <wchar.h> is standalone" >&5
+$as_echo_n "checking whether <wchar.h> is standalone... " >&6; }
+if test "${gl_cv_header_wchar_h_standalone+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#include <wchar.h>
+wchar_t w;
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_wchar_h_standalone=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_header_wchar_h_standalone=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_wchar_h_standalone" >&5
+$as_echo "$gl_cv_header_wchar_h_standalone" >&6; }
+
+
+ if test $gt_cv_c_wint_t = yes; then
+ HAVE_WINT_T=1
+ else
+ HAVE_WINT_T=0
+ fi
+
+
+ if test $gl_cv_header_wchar_h_standalone != yes || test $gt_cv_c_wint_t != yes; then
+ WCHAR_H=wchar.h
+ fi
+
+
+
+
+
+
+
+ if test $ac_cv_header_wchar_h = yes; then
+ HAVE_WCHAR_H=1
+ else
+ HAVE_WCHAR_H=0
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_wchar_h='<'wchar.h'>'
+ else
+ { $as_echo "$as_me:$LINENO: checking absolute name of <wchar.h>" >&5
+$as_echo_n "checking absolute name of <wchar.h>... " >&6; }
+if test "${gl_cv_next_wchar_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test $ac_cv_header_wchar_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <wchar.h>
+
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+ gl_cv_next_wchar_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n '\#/wchar.h#{
+ s#.*"\(.*/wchar.h\)".*#\1#
+ s#^/[^/]#//&#
+ p
+ q
+ }'`'"'
+ else
+ gl_cv_next_wchar_h='<'wchar.h'>'
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_wchar_h" >&5
+$as_echo "$gl_cv_next_wchar_h" >&6; }
+ fi
+ NEXT_WCHAR_H=$gl_cv_next_wchar_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'wchar.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_wchar_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_WCHAR_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_func_iswcntrl = yes; then
+ HAVE_ISWCNTRL=1
+ else
+ HAVE_ISWCNTRL=0
+ fi
+
+
+
+
+
+
+
+
+
+
+ if test $gt_cv_c_wint_t = yes; then
+ HAVE_WINT_T=1
+ else
+ HAVE_WINT_T=0
+ fi
+
+
+ WCTYPE_H=wctype.h
+ if test $ac_cv_header_wctype_h = yes; then
+ if test $ac_cv_func_iswcntrl = yes; then
+ { $as_echo "$as_me:$LINENO: checking whether iswcntrl works" >&5
+$as_echo_n "checking whether iswcntrl works... " >&6; }
+if test "${gl_cv_func_iswcntrl_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+ #if __GNU_LIBRARY__ == 1
+ Linux libc5 i18n is broken.
+ #endif
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_func_iswcntrl_works=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_iswcntrl_works=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stddef.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+ #include <wctype.h>
+ int main () { return iswprint ('x') == 0; }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_iswcntrl_works=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_iswcntrl_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_iswcntrl_works" >&5
+$as_echo "$gl_cv_func_iswcntrl_works" >&6; }
+ if test $gl_cv_func_iswcntrl_works = yes; then
+ WCTYPE_H=
+ fi
+ fi
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_wctype_h='<'wctype.h'>'
+ else
+ { $as_echo "$as_me:$LINENO: checking absolute name of <wctype.h>" >&5
+$as_echo_n "checking absolute name of <wctype.h>... " >&6; }
+if test "${gl_cv_next_wctype_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test $ac_cv_header_wctype_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <wctype.h>
+
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+ gl_cv_next_wctype_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n '\#/wctype.h#{
+ s#.*"\(.*/wctype.h\)".*#\1#
+ s#^/[^/]#//&#
+ p
+ q
+ }'`'"'
+ else
+ gl_cv_next_wctype_h='<'wctype.h'>'
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_wctype_h" >&5
+$as_echo "$gl_cv_next_wctype_h" >&6; }
+ fi
+ NEXT_WCTYPE_H=$gl_cv_next_wctype_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'wctype.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_wctype_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H=$gl_next_as_first_directive
+
+
+
+ HAVE_WCTYPE_H=1
+ else
+ HAVE_WCTYPE_H=0
+ fi
+
+
+
+ if test "$gl_cv_func_iswcntrl_works" = no; then
+ REPLACE_ISWCNTRL=1
+ else
+ REPLACE_ISWCNTRL=0
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether wcwidth is declared" >&5
+$as_echo_n "checking whether wcwidth is declared... " >&6; }
+if test "${ac_cv_have_decl_wcwidth+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* AIX 3.2.5 declares wcwidth in <string.h>. */
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+
+
+int
+main ()
+{
+#ifndef wcwidth
+ (void) wcwidth;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_wcwidth=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_wcwidth=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_wcwidth" >&5
+$as_echo "$ac_cv_have_decl_wcwidth" >&6; }
+if test "x$ac_cv_have_decl_wcwidth" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_WCWIDTH 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_WCWIDTH 0
+_ACEOF
+
+
+fi
+
+
+ if test $ac_cv_have_decl_wcwidth != yes; then
+ HAVE_DECL_WCWIDTH=0
+ fi
+
+ if test $ac_cv_func_wcwidth = no; then
+ REPLACE_WCWIDTH=1
+ else
+ { $as_echo "$as_me:$LINENO: checking whether wcwidth works reasonably in UTF-8 locales" >&5
+$as_echo_n "checking whether wcwidth works reasonably in UTF-8 locales... " >&6; }
+if test "${gl_cv_func_wcwidth_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_wcwidth_works="guessing no"
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+/* AIX 3.2.5 declares wcwidth in <string.h>. */
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+#if !HAVE_DECL_WCWIDTH
+extern
+# ifdef __cplusplus
+"C"
+# endif
+int wcwidth (int);
+#endif
+int main ()
+{
+ if (setlocale (LC_ALL, "fr_FR.UTF-8") != NULL)
+ if (wcwidth (0x0301) > 0 || wcwidth (0x200B) > 0)
+ return 1;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_wcwidth_works=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_wcwidth_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_wcwidth_works" >&5
+$as_echo "$gl_cv_func_wcwidth_works" >&6; }
+ case "$gl_cv_func_wcwidth_works" in
+ *yes) ;;
+ *no) REPLACE_WCWIDTH=1 ;;
+ esac
+ fi
+ if test $REPLACE_WCWIDTH = 1; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS wcwidth.$ac_objext"
+
+ fi
+
+ if test $REPLACE_WCWIDTH = 1 || test $HAVE_DECL_WCWIDTH = 0; then
+
+
+ WCHAR_H=wchar.h
+
+ fi
+
+
+
+ GNULIB_WCWIDTH=1
+
+
+
+
+
+for ac_header in stdint.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+
+
+
+
+
+
+ gltests_libdeps=
+ gltests_ltlibdeps=
+
+
+
+
+
+
+
+
+
+ gl_source_base='tests'
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a traditional french locale" >&5
+$as_echo_n "checking for a traditional french locale... " >&6; }
+if test "${gt_cv_locale_fr+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+ one byte long. This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO-8859-1
+ else
+ # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+ if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO8859-1
+ else
+ # Test for the HP-UX locale name.
+ if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.iso88591
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr
+ else
+ # None found.
+ gt_cv_locale_fr=none
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr" >&5
+$as_echo "$gt_cv_locale_fr" >&6; }
+ LOCALE_FR=$gt_cv_locale_fr
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a turkish Unicode locale" >&5
+$as_echo_n "checking for a turkish Unicode locale... " >&6; }
+if test "${gt_cv_locale_tr_utf8+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* On BeOS, locales are not implemented in libc. Rather, libintl
+ imitates locale dependent behaviour by looking at the environment
+ variables, and all locales use the UTF-8 encoding. But BeOS does not
+ implement the Turkish upper-/lowercase mappings. Therefore, let this
+ program return 1 on BeOS. */
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the tr_TR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether in the abbreviation of the eighth month, the second
+ character (should be U+011F: LATIN SMALL LETTER G WITH BREVE) is
+ two bytes long, with UTF-8 encoding. */
+ t.tm_year = 1992 - 1900; t.tm_mon = 8 - 1; t.tm_mday = 19;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 4
+ || buf[1] != (char) 0xc4 || buf[2] != (char) 0x9f)
+ return 1;
+ /* Check whether the upper-/lowercase mappings are as expected for
+ Turkish. */
+ if (towupper ('i') != 0x0130 || towlower (0x0130) != 'i'
+ || towupper(0x0131) != 'I' || towlower ('I') != 0x0131)
+ return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=tr_TR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_tr_utf8=tr_TR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=tr_TR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_tr_utf8=tr_TR.UTF-8
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=tr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_tr_utf8=tr.UTF-8
+ else
+ # None found.
+ gt_cv_locale_tr_utf8=none
+ fi
+ fi
+ fi
+ else
+ gt_cv_locale_tr_utf8=none
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_tr_utf8" >&5
+$as_echo "$gt_cv_locale_tr_utf8" >&6; }
+ LOCALE_TR_UTF8=$gt_cv_locale_tr_utf8
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking if environ is properly declared" >&5
+$as_echo_n "checking if environ is properly declared... " >&6; }
+ if test "${gt_cv_var_environ_declaration+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <unistd.h>
+ extern struct { int foo; } environ;
+int
+main ()
+{
+environ.foo = 1;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_var_environ_declaration=no
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_var_environ_declaration=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $gt_cv_var_environ_declaration" >&5
+$as_echo "$gt_cv_var_environ_declaration" >&6; }
+ if test $gt_cv_var_environ_declaration = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ENVIRON_DECL 1
+_ACEOF
+
+ fi
+
+
+ if test $gt_cv_var_environ_declaration != yes; then
+ HAVE_DECL_ENVIRON=0
+ fi
+
+
+
+ GNULIB_ENVIRON=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for error_at_line" >&5
+$as_echo_n "checking for error_at_line... " >&6; }
+if test "${ac_cv_lib_error_at_line+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <error.h>
+int
+main ()
+{
+error_at_line (0, 0, "", 0, "an error occurred");
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ ac_cv_lib_error_at_line=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_error_at_line=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_error_at_line" >&5
+$as_echo "$ac_cv_lib_error_at_line" >&6; }
+if test $ac_cv_lib_error_at_line = no; then
+
+
+
+
+
+
+
+
+ gltests_LIBOBJS="$gltests_LIBOBJS error.$ac_objext"
+
+fi
+
+
+
+ :
+
+
+
+
+ XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error:3:c-format"
+
+
+
+ XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error_at_line:5:c-format"
+
+
+
+
+
+
+
+
+
+
+ gltests_LIBOBJS="$gltests_LIBOBJS exitfail.$ac_objext"
+
+
+ :
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking where to find the exponent in a 'double'" >&5
+$as_echo_n "checking where to find the exponent in a 'double'... " >&6; }
+if test "${gl_cv_cc_double_expbit0+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#if defined arm || defined __arm || defined __arm__
+ mixed_endianness
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "mixed_endianness" >/dev/null 2>&1; then
+ gl_cv_cc_double_expbit0="unknown"
+else
+
+
+ :
+if test "${ac_cv_c_bigendian+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_bigendian=unknown
+ # See if we're dealing with a universal compiler.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifndef __APPLE_CC__
+ not a universal capable compiler
+ #endif
+ typedef int dummy;
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+
+ # Check for potential -arch flags. It is not universal unless
+ # there are some -arch flags. Note that *ppc* also matches
+ # ppc64. This check is also rather less than ideal.
+ case "${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}" in #(
+ *-arch*ppc*|*-arch*i386*|*-arch*x86_64*) ac_cv_c_bigendian=universal;;
+ esac
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if test $ac_cv_c_bigendian = unknown; then
+ # See if sys/param.h defines the BYTE_ORDER macro.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+ && LITTLE_ENDIAN)
+ bogus endian macros
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ # It does; now see whether it defined to BIG_ENDIAN or not.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_bigendian=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_c_bigendian=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $ac_cv_c_bigendian = unknown; then
+ # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+ bogus endian macros
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ # It does; now see whether it defined to _BIG_ENDIAN or not.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+ not big endian
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_bigendian=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_c_bigendian=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $ac_cv_c_bigendian = unknown; then
+ # Compile a test program.
+ if test "$cross_compiling" = yes; then
+ # Try to guess by grepping values from an object file.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+short int ascii_mm[] =
+ { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+ short int ascii_ii[] =
+ { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+ int use_ascii (int i) {
+ return ascii_mm[i] + ascii_ii[i];
+ }
+ short int ebcdic_ii[] =
+ { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+ short int ebcdic_mm[] =
+ { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+ int use_ebcdic (int i) {
+ return ebcdic_mm[i] + ebcdic_ii[i];
+ }
+ extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+ ac_cv_c_bigendian=yes
+ fi
+ if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+ if test "$ac_cv_c_bigendian" = unknown; then
+ ac_cv_c_bigendian=no
+ else
+ # finding both strings is unlikely to happen, but who knows?
+ ac_cv_c_bigendian=unknown
+ fi
+ fi
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+ long int l;
+ char c[sizeof (long int)];
+ } u;
+ u.l = 1;
+ return u.c[sizeof (long int) - 1] == 1;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_bigendian=no
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_c_bigendian=yes
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ fi
+fi
+:
+ case $ac_cv_c_bigendian in #(
+ yes)
+ gl_cv_cc_double_expbit0="word 0 bit 20";; #(
+ no)
+ gl_cv_cc_double_expbit0="word 1 bit 20" ;; #(
+ universal)
+
+cat >>confdefs.h <<\_ACEOF
+#define AC_APPLE_UNIVERSAL_BUILD 1
+_ACEOF
+
+ ;; #(
+ *)
+ gl_cv_cc_double_expbit0="unknown" ;;
+ esac
+
+
+fi
+rm -f conftest*
+
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { double value; unsigned int word[NWORDS]; } memory_double;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (double x)
+{
+ memory_double m;
+ size_t i;
+ /* Clear it first, in case sizeof (double) < sizeof (memory_double). */
+ memset (&m, 0, sizeof (memory_double));
+ m.value = x;
+ for (i = 0; i < NWORDS; i++)
+ {
+ ored_words[i] |= m.word[i];
+ anded_words[i] &= m.word[i];
+ }
+}
+int main ()
+{
+ size_t j;
+ FILE *fp = fopen ("conftest.out", "w");
+ if (fp == NULL)
+ return 1;
+ for (j = 0; j < NWORDS; j++)
+ anded_words[j] = ~ (unsigned int) 0;
+ add_to_ored_words (0.25);
+ add_to_ored_words (0.5);
+ add_to_ored_words (1.0);
+ add_to_ored_words (2.0);
+ add_to_ored_words (4.0);
+ /* Remove bits that are common (e.g. if representation of the first mantissa
+ bit is explicit). */
+ for (j = 0; j < NWORDS; j++)
+ ored_words[j] &= ~anded_words[j];
+ /* Now find the nonzero word. */
+ for (j = 0; j < NWORDS; j++)
+ if (ored_words[j] != 0)
+ break;
+ if (j < NWORDS)
+ {
+ size_t i;
+ for (i = j + 1; i < NWORDS; i++)
+ if (ored_words[i] != 0)
+ {
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+ }
+ for (i = 0; ; i++)
+ if ((ored_words[j] >> i) & 1)
+ {
+ fprintf (fp, "word %d bit %d", (int) j, (int) i);
+ return (fclose (fp) != 0);
+ }
+ }
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_cc_double_expbit0=`cat conftest.out`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_cc_double_expbit0="unknown"
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ rm -f conftest.out
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_cc_double_expbit0" >&5
+$as_echo "$gl_cv_cc_double_expbit0" >&6; }
+ case "$gl_cv_cc_double_expbit0" in
+ word*bit*)
+ word=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
+ bit=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word.*bit //'`
+
+cat >>confdefs.h <<_ACEOF
+#define DBL_EXPBIT0_WORD $word
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define DBL_EXPBIT0_BIT $bit
+_ACEOF
+
+ ;;
+ esac
+
+
+ { $as_echo "$as_me:$LINENO: checking where to find the exponent in a 'float'" >&5
+$as_echo_n "checking where to find the exponent in a 'float'... " >&6; }
+if test "${gl_cv_cc_float_expbit0+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ gl_cv_cc_float_expbit0="word 0 bit 23"
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+ ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { float value; unsigned int word[NWORDS]; } memory_float;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (float x)
+{
+ memory_float m;
+ size_t i;
+ /* Clear it first, in case
+ sizeof (float) < sizeof (memory_float). */
+ memset (&m, 0, sizeof (memory_float));
+ m.value = x;
+ for (i = 0; i < NWORDS; i++)
+ {
+ ored_words[i] |= m.word[i];
+ anded_words[i] &= m.word[i];
+ }
+}
+int main ()
+{
+ size_t j;
+ FILE *fp = fopen ("conftest.out", "w");
+ if (fp == NULL)
+ return 1;
+ for (j = 0; j < NWORDS; j++)
+ anded_words[j] = ~ (unsigned int) 0;
+ add_to_ored_words (0.25f);
+ add_to_ored_words (0.5f);
+ add_to_ored_words (1.0f);
+ add_to_ored_words (2.0f);
+ add_to_ored_words (4.0f);
+ /* Remove bits that are common (e.g. if representation of the first mantissa
+ bit is explicit). */
+ for (j = 0; j < NWORDS; j++)
+ ored_words[j] &= ~anded_words[j];
+ /* Now find the nonzero word. */
+ for (j = 0; j < NWORDS; j++)
+ if (ored_words[j] != 0)
+ break;
+ if (j < NWORDS)
+ {
+ size_t i;
+ for (i = j + 1; i < NWORDS; i++)
+ if (ored_words[i] != 0)
+ {
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+ }
+ for (i = 0; ; i++)
+ if ((ored_words[j] >> i) & 1)
+ {
+ fprintf (fp, "word %d bit %d", (int) j, (int) i);
+ return (fclose (fp) != 0);
+ }
+ }
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_cc_float_expbit0=`cat conftest.out`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_cc_float_expbit0="unknown"
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ rm -f conftest.out
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_cc_float_expbit0" >&5
+$as_echo "$gl_cv_cc_float_expbit0" >&6; }
+ case "$gl_cv_cc_float_expbit0" in
+ word*bit*)
+ word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
+ bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'`
+
+cat >>confdefs.h <<_ACEOF
+#define FLT_EXPBIT0_WORD $word
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define FLT_EXPBIT0_BIT $bit
+_ACEOF
+
+ ;;
+ esac
+
+
+
+ { $as_echo "$as_me:$LINENO: checking where to find the exponent in a 'long double'" >&5
+$as_echo_n "checking where to find the exponent in a 'long double'... " >&6; }
+if test "${gl_cv_cc_long_double_expbit0+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+
+ gl_cv_cc_long_double_expbit0="unknown"
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+ ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { long double value; unsigned int word[NWORDS]; }
+ memory_long_double;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (long double x)
+{
+ memory_long_double m;
+ size_t i;
+ /* Clear it first, in case
+ sizeof (long double) < sizeof (memory_long_double). */
+ memset (&m, 0, sizeof (memory_long_double));
+ m.value = x;
+ for (i = 0; i < NWORDS; i++)
+ {
+ ored_words[i] |= m.word[i];
+ anded_words[i] &= m.word[i];
+ }
+}
+int main ()
+{
+ size_t j;
+ FILE *fp = fopen ("conftest.out", "w");
+ if (fp == NULL)
+ return 1;
+ for (j = 0; j < NWORDS; j++)
+ anded_words[j] = ~ (unsigned int) 0;
+ add_to_ored_words (0.25L);
+ add_to_ored_words (0.5L);
+ add_to_ored_words (1.0L);
+ add_to_ored_words (2.0L);
+ add_to_ored_words (4.0L);
+ /* Remove bits that are common (e.g. if representation of the first mantissa
+ bit is explicit). */
+ for (j = 0; j < NWORDS; j++)
+ ored_words[j] &= ~anded_words[j];
+ /* Now find the nonzero word. */
+ for (j = 0; j < NWORDS; j++)
+ if (ored_words[j] != 0)
+ break;
+ if (j < NWORDS)
+ {
+ size_t i;
+ for (i = j + 1; i < NWORDS; i++)
+ if (ored_words[i] != 0)
+ {
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+ }
+ for (i = 0; ; i++)
+ if ((ored_words[j] >> i) & 1)
+ {
+ fprintf (fp, "word %d bit %d", (int) j, (int) i);
+ return (fclose (fp) != 0);
+ }
+ }
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_cc_long_double_expbit0=`cat conftest.out`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_cc_long_double_expbit0="unknown"
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ rm -f conftest.out
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_cc_long_double_expbit0" >&5
+$as_echo "$gl_cv_cc_long_double_expbit0" >&6; }
+ case "$gl_cv_cc_long_double_expbit0" in
+ word*bit*)
+ word=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
+ bit=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word.*bit //'`
+
+cat >>confdefs.h <<_ACEOF
+#define LDBL_EXPBIT0_WORD $word
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define LDBL_EXPBIT0_BIT $bit
+_ACEOF
+
+ ;;
+ esac
+
+
+ { $as_echo "$as_me:$LINENO: checking whether locale.h conforms to POSIX" >&5
+$as_echo_n "checking whether locale.h conforms to POSIX... " >&6; }
+if test "${gl_cv_header_working_locale_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <locale.h>
+int x = LC_MESSAGES;
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_working_locale_h=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_header_working_locale_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_working_locale_h" >&5
+$as_echo "$gl_cv_header_working_locale_h" >&6; }
+ if test $gl_cv_header_working_locale_h = yes; then
+ LOCALE_H=
+ else
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_locale_h='<'locale.h'>'
+ else
+ { $as_echo "$as_me:$LINENO: checking absolute name of <locale.h>" >&5
+$as_echo_n "checking absolute name of <locale.h>... " >&6; }
+if test "${gl_cv_next_locale_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test $ac_cv_header_locale_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <locale.h>
+
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+ gl_cv_next_locale_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n '\#/locale.h#{
+ s#.*"\(.*/locale.h\)".*#\1#
+ s#^/[^/]#//&#
+ p
+ q
+ }'`'"'
+ else
+ gl_cv_next_locale_h='<'locale.h'>'
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_locale_h" >&5
+$as_echo "$gl_cv_next_locale_h" >&6; }
+ fi
+ NEXT_LOCALE_H=$gl_cv_next_locale_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'locale.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_locale_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_LOCALE_H=$gl_next_as_first_directive
+
+
+
+ LOCALE_H=locale.h
+ fi
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a traditional french locale" >&5
+$as_echo_n "checking for a traditional french locale... " >&6; }
+if test "${gt_cv_locale_fr+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+ one byte long. This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO-8859-1
+ else
+ # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+ if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO8859-1
+ else
+ # Test for the HP-UX locale name.
+ if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.iso88591
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr
+ else
+ # None found.
+ gt_cv_locale_fr=none
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr" >&5
+$as_echo "$gt_cv_locale_fr" >&6; }
+ LOCALE_FR=$gt_cv_locale_fr
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a french Unicode locale" >&5
+$as_echo_n "checking for a french Unicode locale... " >&6; }
+if test "${gt_cv_locale_fr_utf8+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
+ imitates locale dependent behaviour by looking at the environment
+ variables, and all locales use the UTF-8 encoding. */
+#if !(defined __BEOS__ || defined __HAIKU__)
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+# if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+# endif
+# ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+ two bytes long, with UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 4
+ || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+ return 1;
+#endif
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR.UTF-8
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr.UTF-8
+ else
+ # None found.
+ gt_cv_locale_fr_utf8=none
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr_utf8" >&5
+$as_echo "$gt_cv_locale_fr_utf8" >&6; }
+ LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a traditional japanese locale" >&5
+$as_echo_n "checking for a traditional japanese locale... " >&6; }
+if test "${gt_cv_locale_ja+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+ const char *p;
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether MB_CUR_MAX is > 1. This excludes the dysfunctional locales
+ on Cygwin 1.5.x. */
+ if (MB_CUR_MAX == 1)
+ return 1;
+ /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+ This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+ for (p = buf; *p != '\0'; p++)
+ if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+ return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the AIX locale name.
+ if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja_JP
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja_JP.EUC-JP
+ else
+ # Test for the HP-UX, OSF/1, NetBSD locale name.
+ if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja_JP.eucJP
+ else
+ # Test for the IRIX, FreeBSD locale name.
+ if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja_JP.EUC
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja
+ else
+ # Special test for NetBSD 1.6.
+ if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then
+ gt_cv_locale_ja=ja_JP.eucJP
+ else
+ # None found.
+ gt_cv_locale_ja=none
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_ja" >&5
+$as_echo "$gt_cv_locale_ja" >&6; }
+ LOCALE_JA=$gt_cv_locale_ja
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a transitional chinese locale" >&5
+$as_echo_n "checking for a transitional chinese locale... " >&6; }
+if test "${gt_cv_locale_zh_CN+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <stdlib.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+ const char *p;
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+ This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+ for (p = buf; *p != '\0'; p++)
+ if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+ return 1;
+ /* Check whether a typical GB18030 multibyte sequence is recognized as a
+ single wide character. This excludes the GB2312 and GBK encodings. */
+ if (mblen ("\203\062\332\066", 5) != 4)
+ return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the locale name without encoding suffix.
+ if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_zh_CN=zh_CN
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_zh_CN=zh_CN.GB18030
+ else
+ # None found.
+ gt_cv_locale_zh_CN=none
+ fi
+ fi
+ else
+ # If there was a link error, due to mblen(), the system is so old that
+ # it certainly doesn't have a chinese locale.
+ gt_cv_locale_zh_CN=none
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_zh_CN" >&5
+$as_echo "$gt_cv_locale_zh_CN" >&6; }
+ LOCALE_ZH_CN=$gt_cv_locale_zh_CN
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a french Unicode locale" >&5
+$as_echo_n "checking for a french Unicode locale... " >&6; }
+if test "${gt_cv_locale_fr_utf8+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
+ imitates locale dependent behaviour by looking at the environment
+ variables, and all locales use the UTF-8 encoding. */
+#if !(defined __BEOS__ || defined __HAIKU__)
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+# if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+# endif
+# ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+ two bytes long, with UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 4
+ || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+ return 1;
+#endif
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR.UTF-8
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr.UTF-8
+ else
+ # None found.
+ gt_cv_locale_fr_utf8=none
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr_utf8" >&5
+$as_echo "$gt_cv_locale_fr_utf8" >&6; }
+ LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_func_setenv = no; then
+ HAVE_SETENV=0
+
+
+
+
+
+
+
+
+ gltests_LIBOBJS="$gltests_LIBOBJS setenv.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+for ac_header in search.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_func in tsearch
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+ fi
+
+
+
+ GNULIB_SETENV=1
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for wchar_t" >&5
+$as_echo_n "checking for wchar_t... " >&6; }
+if test "${gt_cv_c_wchar_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stddef.h>
+ wchar_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_c_wchar_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_c_wchar_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_c_wchar_t" >&5
+$as_echo "$gt_cv_c_wchar_t" >&6; }
+ if test $gt_cv_c_wchar_t = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_WCHAR_T 1
+_ACEOF
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for wint_t" >&5
+$as_echo_n "checking for wint_t... " >&6; }
+if test "${gt_cv_c_wint_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+ wint_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_c_wint_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_c_wint_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_c_wint_t" >&5
+$as_echo "$gt_cv_c_wint_t" >&6; }
+ if test $gt_cv_c_wint_t = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_WINT_T 1
+_ACEOF
+
+ fi
+
+
+
+ if test $REPLACE_STRERROR = 1; then
+
+
+
+
+
+
+
+
+ gltests_LIBOBJS="$gltests_LIBOBJS strerror.$ac_objext"
+
+
+cat >>confdefs.h <<_ACEOF
+#define REPLACE_STRERROR $REPLACE_STRERROR
+_ACEOF
+
+ fi
+
+
+
+ GNULIB_STRERROR=1
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a traditional french locale" >&5
+$as_echo_n "checking for a traditional french locale... " >&6; }
+if test "${gt_cv_locale_fr+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+ one byte long. This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO-8859-1
+ else
+ # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+ if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO8859-1
+ else
+ # Test for the HP-UX locale name.
+ if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.iso88591
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr
+ else
+ # None found.
+ gt_cv_locale_fr=none
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr" >&5
+$as_echo "$gt_cv_locale_fr" >&6; }
+ LOCALE_FR=$gt_cv_locale_fr
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a french Unicode locale" >&5
+$as_echo_n "checking for a french Unicode locale... " >&6; }
+if test "${gt_cv_locale_fr_utf8+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
+ imitates locale dependent behaviour by looking at the environment
+ variables, and all locales use the UTF-8 encoding. */
+#if !(defined __BEOS__ || defined __HAIKU__)
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+# if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+# endif
+# ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+ two bytes long, with UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 4
+ || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+ return 1;
+#endif
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR.UTF-8
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr.UTF-8
+ else
+ # None found.
+ gt_cv_locale_fr_utf8=none
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr_utf8" >&5
+$as_echo "$gt_cv_locale_fr_utf8" >&6; }
+ LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a traditional japanese locale" >&5
+$as_echo_n "checking for a traditional japanese locale... " >&6; }
+if test "${gt_cv_locale_ja+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+ const char *p;
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether MB_CUR_MAX is > 1. This excludes the dysfunctional locales
+ on Cygwin 1.5.x. */
+ if (MB_CUR_MAX == 1)
+ return 1;
+ /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+ This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+ for (p = buf; *p != '\0'; p++)
+ if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+ return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the AIX locale name.
+ if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja_JP
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja_JP.EUC-JP
+ else
+ # Test for the HP-UX, OSF/1, NetBSD locale name.
+ if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja_JP.eucJP
+ else
+ # Test for the IRIX, FreeBSD locale name.
+ if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja_JP.EUC
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja
+ else
+ # Special test for NetBSD 1.6.
+ if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then
+ gt_cv_locale_ja=ja_JP.eucJP
+ else
+ # None found.
+ gt_cv_locale_ja=none
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_ja" >&5
+$as_echo "$gt_cv_locale_ja" >&6; }
+ LOCALE_JA=$gt_cv_locale_ja
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a turkish Unicode locale" >&5
+$as_echo_n "checking for a turkish Unicode locale... " >&6; }
+if test "${gt_cv_locale_tr_utf8+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* On BeOS, locales are not implemented in libc. Rather, libintl
+ imitates locale dependent behaviour by looking at the environment
+ variables, and all locales use the UTF-8 encoding. But BeOS does not
+ implement the Turkish upper-/lowercase mappings. Therefore, let this
+ program return 1 on BeOS. */
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the tr_TR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether in the abbreviation of the eighth month, the second
+ character (should be U+011F: LATIN SMALL LETTER G WITH BREVE) is
+ two bytes long, with UTF-8 encoding. */
+ t.tm_year = 1992 - 1900; t.tm_mon = 8 - 1; t.tm_mday = 19;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 4
+ || buf[1] != (char) 0xc4 || buf[2] != (char) 0x9f)
+ return 1;
+ /* Check whether the upper-/lowercase mappings are as expected for
+ Turkish. */
+ if (towupper ('i') != 0x0130 || towlower (0x0130) != 'i'
+ || towupper(0x0131) != 'I' || towlower ('I') != 0x0131)
+ return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=tr_TR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_tr_utf8=tr_TR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=tr_TR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_tr_utf8=tr_TR.UTF-8
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=tr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_tr_utf8=tr.UTF-8
+ else
+ # None found.
+ gt_cv_locale_tr_utf8=none
+ fi
+ fi
+ fi
+ else
+ gt_cv_locale_tr_utf8=none
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_tr_utf8" >&5
+$as_echo "$gt_cv_locale_tr_utf8" >&6; }
+ LOCALE_TR_UTF8=$gt_cv_locale_tr_utf8
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a transitional chinese locale" >&5
+$as_echo_n "checking for a transitional chinese locale... " >&6; }
+if test "${gt_cv_locale_zh_CN+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <stdlib.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+ const char *p;
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+ This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+ for (p = buf; *p != '\0'; p++)
+ if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+ return 1;
+ /* Check whether a typical GB18030 multibyte sequence is recognized as a
+ single wide character. This excludes the GB2312 and GBK encodings. */
+ if (mblen ("\203\062\332\066", 5) != 4)
+ return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the locale name without encoding suffix.
+ if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_zh_CN=zh_CN
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_zh_CN=zh_CN.GB18030
+ else
+ # None found.
+ gt_cv_locale_zh_CN=none
+ fi
+ fi
+ else
+ # If there was a link error, due to mblen(), the system is so old that
+ # it certainly doesn't have a chinese locale.
+ gt_cv_locale_zh_CN=none
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_zh_CN" >&5
+$as_echo "$gt_cv_locale_zh_CN" >&6; }
+ LOCALE_ZH_CN=$gt_cv_locale_zh_CN
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a traditional french locale" >&5
+$as_echo_n "checking for a traditional french locale... " >&6; }
+if test "${gt_cv_locale_fr+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+ one byte long. This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO-8859-1
+ else
+ # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+ if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO8859-1
+ else
+ # Test for the HP-UX locale name.
+ if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.iso88591
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr
+ else
+ # None found.
+ gt_cv_locale_fr=none
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr" >&5
+$as_echo "$gt_cv_locale_fr" >&6; }
+ LOCALE_FR=$gt_cv_locale_fr
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a french Unicode locale" >&5
+$as_echo_n "checking for a french Unicode locale... " >&6; }
+if test "${gt_cv_locale_fr_utf8+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
+ imitates locale dependent behaviour by looking at the environment
+ variables, and all locales use the UTF-8 encoding. */
+#if !(defined __BEOS__ || defined __HAIKU__)
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+# if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+# endif
+# ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+ two bytes long, with UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 4
+ || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+ return 1;
+#endif
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR.UTF-8
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr.UTF-8
+ else
+ # None found.
+ gt_cv_locale_fr_utf8=none
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr_utf8" >&5
+$as_echo "$gt_cv_locale_fr_utf8" >&6; }
+ LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a traditional french locale" >&5
+$as_echo_n "checking for a traditional french locale... " >&6; }
+if test "${gt_cv_locale_fr+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+ one byte long. This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO-8859-1
+ else
+ # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+ if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO8859-1
+ else
+ # Test for the HP-UX locale name.
+ if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.iso88591
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr
+ else
+ # None found.
+ gt_cv_locale_fr=none
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr" >&5
+$as_echo "$gt_cv_locale_fr" >&6; }
+ LOCALE_FR=$gt_cv_locale_fr
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a french Unicode locale" >&5
+$as_echo_n "checking for a french Unicode locale... " >&6; }
+if test "${gt_cv_locale_fr_utf8+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
+ imitates locale dependent behaviour by looking at the environment
+ variables, and all locales use the UTF-8 encoding. */
+#if !(defined __BEOS__ || defined __HAIKU__)
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+# if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+# endif
+# ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+ two bytes long, with UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 4
+ || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+ return 1;
+#endif
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR.UTF-8
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr.UTF-8
+ else
+ # None found.
+ gt_cv_locale_fr_utf8=none
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr_utf8" >&5
+$as_echo "$gt_cv_locale_fr_utf8" >&6; }
+ LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a traditional french locale" >&5
+$as_echo_n "checking for a traditional french locale... " >&6; }
+if test "${gt_cv_locale_fr+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+ one byte long. This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO-8859-1
+ else
+ # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+ if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO8859-1
+ else
+ # Test for the HP-UX locale name.
+ if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.iso88591
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr
+ else
+ # None found.
+ gt_cv_locale_fr=none
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr" >&5
+$as_echo "$gt_cv_locale_fr" >&6; }
+ LOCALE_FR=$gt_cv_locale_fr
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a french Unicode locale" >&5
+$as_echo_n "checking for a french Unicode locale... " >&6; }
+if test "${gt_cv_locale_fr_utf8+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
+ imitates locale dependent behaviour by looking at the environment
+ variables, and all locales use the UTF-8 encoding. */
+#if !(defined __BEOS__ || defined __HAIKU__)
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+# if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+# endif
+# ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+ two bytes long, with UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 4
+ || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+ return 1;
+#endif
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR.UTF-8
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr.UTF-8
+ else
+ # None found.
+ gt_cv_locale_fr_utf8=none
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr_utf8" >&5
+$as_echo "$gt_cv_locale_fr_utf8" >&6; }
+ LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a traditional french locale" >&5
+$as_echo_n "checking for a traditional french locale... " >&6; }
+if test "${gt_cv_locale_fr+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+ one byte long. This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO-8859-1
+ else
+ # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+ if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO8859-1
+ else
+ # Test for the HP-UX locale name.
+ if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.iso88591
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr
+ else
+ # None found.
+ gt_cv_locale_fr=none
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr" >&5
+$as_echo "$gt_cv_locale_fr" >&6; }
+ LOCALE_FR=$gt_cv_locale_fr
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a french Unicode locale" >&5
+$as_echo_n "checking for a french Unicode locale... " >&6; }
+if test "${gt_cv_locale_fr_utf8+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
+ imitates locale dependent behaviour by looking at the environment
+ variables, and all locales use the UTF-8 encoding. */
+#if !(defined __BEOS__ || defined __HAIKU__)
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+# if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+# endif
+# ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+ two bytes long, with UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 4
+ || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+ return 1;
+#endif
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR.UTF-8
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr.UTF-8
+ else
+ # None found.
+ gt_cv_locale_fr_utf8=none
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr_utf8" >&5
+$as_echo "$gt_cv_locale_fr_utf8" >&6; }
+ LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a traditional french locale" >&5
+$as_echo_n "checking for a traditional french locale... " >&6; }
+if test "${gt_cv_locale_fr+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+ one byte long. This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO-8859-1
+ else
+ # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+ if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO8859-1
+ else
+ # Test for the HP-UX locale name.
+ if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.iso88591
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr
+ else
+ # None found.
+ gt_cv_locale_fr=none
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr" >&5
+$as_echo "$gt_cv_locale_fr" >&6; }
+ LOCALE_FR=$gt_cv_locale_fr
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a french Unicode locale" >&5
+$as_echo_n "checking for a french Unicode locale... " >&6; }
+if test "${gt_cv_locale_fr_utf8+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
+ imitates locale dependent behaviour by looking at the environment
+ variables, and all locales use the UTF-8 encoding. */
+#if !(defined __BEOS__ || defined __HAIKU__)
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+# if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+# endif
+# ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+ two bytes long, with UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 4
+ || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+ return 1;
+#endif
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR.UTF-8
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr.UTF-8
+ else
+ # None found.
+ gt_cv_locale_fr_utf8=none
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr_utf8" >&5
+$as_echo "$gt_cv_locale_fr_utf8" >&6; }
+ LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a traditional french locale" >&5
+$as_echo_n "checking for a traditional french locale... " >&6; }
+if test "${gt_cv_locale_fr+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+ one byte long. This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO-8859-1
+ else
+ # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+ if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO8859-1
+ else
+ # Test for the HP-UX locale name.
+ if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.iso88591
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr
+ else
+ # None found.
+ gt_cv_locale_fr=none
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr" >&5
+$as_echo "$gt_cv_locale_fr" >&6; }
+ LOCALE_FR=$gt_cv_locale_fr
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a french Unicode locale" >&5
+$as_echo_n "checking for a french Unicode locale... " >&6; }
+if test "${gt_cv_locale_fr_utf8+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
+ imitates locale dependent behaviour by looking at the environment
+ variables, and all locales use the UTF-8 encoding. */
+#if !(defined __BEOS__ || defined __HAIKU__)
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+# if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+# endif
+# ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+ two bytes long, with UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 4
+ || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+ return 1;
+#endif
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR.UTF-8
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr.UTF-8
+ else
+ # None found.
+ gt_cv_locale_fr_utf8=none
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr_utf8" >&5
+$as_echo "$gt_cv_locale_fr_utf8" >&6; }
+ LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a traditional french locale" >&5
+$as_echo_n "checking for a traditional french locale... " >&6; }
+if test "${gt_cv_locale_fr+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+ one byte long. This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+
+_ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO-8859-1
+ else
+ # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+ if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO8859-1
+ else
+ # Test for the HP-UX locale name.
+ if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.iso88591
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr
+ else
+ # None found.
+ gt_cv_locale_fr=none
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr" >&5
+$as_echo "$gt_cv_locale_fr" >&6; }
+ LOCALE_FR=$gt_cv_locale_fr
+
+
+
+
+
+for ac_func in unsetenv
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ if test $ac_cv_func_unsetenv = no; then
+ HAVE_UNSETENV=0
+
+
+
+
+
+
+
+
+ gltests_LIBOBJS="$gltests_LIBOBJS unsetenv.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+ else
+ { $as_echo "$as_me:$LINENO: checking for unsetenv() return type" >&5
+$as_echo_n "checking for unsetenv() return type... " >&6; }
+if test "${gt_cv_func_unsetenv_ret+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+int unsetenv (const char *name);
+#else
+int unsetenv();
+#endif
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_func_unsetenv_ret='int'
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_func_unsetenv_ret='void'
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_func_unsetenv_ret" >&5
+$as_echo "$gt_cv_func_unsetenv_ret" >&6; }
+ if test $gt_cv_func_unsetenv_ret = 'void'; then
+ VOID_UNSETENV=1
+ fi
+ fi
+
+
+
+ GNULIB_UNSETENV=1
+
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_func_wctob = no; then
+ HAVE_DECL_WCTOB=0
+
+
+ WCHAR_H=wchar.h
+
+
+
+
+
+
+
+
+
+ gltests_LIBOBJS="$gltests_LIBOBJS wctob.$ac_objext"
+
+
+ :
+
+ else
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether wctob works" >&5
+$as_echo_n "checking whether wctob works... " >&6; }
+if test "${gl_cv_func_wctob_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ case "$host_os" in
+ # Guess no on Solaris <= 9.
+ solaris2.[1-9] | solaris2.[1-9].*)
+ gl_cv_func_wctob_works="guessing no" ;;
+ # Guess yes otherwise.
+ *) gl_cv_func_wctob_works="guessing yes" ;;
+ esac
+ if test $LOCALE_FR != none; then
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+ if (setlocale (LC_ALL, "$LOCALE_FR") != NULL)
+ {
+ wchar_t wc;
+
+ if (mbtowc (&wc, "\374", 1) == 1)
+ if (wctob (wc) != (unsigned char) '\374')
+ return 1;
+ }
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_wctob_works=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_wctob_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_wctob_works" >&5
+$as_echo "$gl_cv_func_wctob_works" >&6; }
+ case "$gl_cv_func_wctob_works" in
+ *yes) ;;
+ *) REPLACE_WCTOB=1 ;;
+ esac
+ if test $REPLACE_WCTOB = 1; then
+
+
+ WCHAR_H=wchar.h
+
+
+
+
+
+
+
+
+
+ gltests_LIBOBJS="$gltests_LIBOBJS wctob.$ac_objext"
+
+
+ :
+
+ else
+
+ { $as_echo "$as_me:$LINENO: checking whether wctob is declared" >&5
+$as_echo_n "checking whether wctob is declared... " >&6; }
+if test "${ac_cv_have_decl_wctob+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+
+
+int
+main ()
+{
+#ifndef wctob
+ (void) wctob;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_wctob=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_wctob=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_wctob" >&5
+$as_echo "$ac_cv_have_decl_wctob" >&6; }
+if test "x$ac_cv_have_decl_wctob" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_WCTOB 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_WCTOB 0
+_ACEOF
+
+
+fi
+
+
+ if test $ac_cv_have_decl_wctob != yes; then
+ HAVE_DECL_WCTOB=0
+
+
+ WCHAR_H=wchar.h
+
+ fi
+ fi
+ fi
+
+
+
+ GNULIB_WCTOB=1
+
+
+
+
+
+
+
+
+
+
+ gltests_LIBOBJS="$gltests_LIBOBJS xmalloc.$ac_objext"
+
+
+
+
+ :
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+ LIBTESTS_LIBDEPS="$gltests_libdeps"
+
+
+
+if test "$enable_shared" = yes; then
+ case "$host_os" in
+ mingw* | cygwin*) is_woe32dll=yes ;;
+ *) is_woe32dll=no ;;
+ esac
+else
+ is_woe32dll=no
+fi
+ if test $is_woe32dll = yes; then
+ WOE32DLL_TRUE=
+ WOE32DLL_FALSE='#'
+else
+ WOE32DLL_TRUE='#'
+ WOE32DLL_FALSE=
+fi
+
+if test $is_woe32dll = yes; then
+ DLL_VARIABLE='__declspec (dllimport)'
+else
+ DLL_VARIABLE=
+fi
+
+if test $is_woe32dll = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define WOE32DLL 1
+_ACEOF
+
+fi
+
+# Check whether --enable-namespacing was given.
+if test "${enable_namespacing+set}" = set; then
+ enableval=$enable_namespacing; :
+else
+ enable_namespacing=yes
+fi
+
+if test "$enable_namespacing" != no; then
+ NAMESPACING=yes
+else
+ NAMESPACING=
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if test "${lt_cv_path_NM+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" \
+ && { test "$build" = "$host" \
+ || { test "$build_os" = cygwin && test "$host_os" = mingw32; }; \
+ }; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+ NM="$lt_cv_path_NM"
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ if test -n "$DUMPBIN"; then :
+ # Let the user override the test.
+ else
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in dumpbin "link -dump"
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DUMPBIN+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DUMPBIN"; then
+ ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+ { $as_echo "$as_me:$LINENO: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DUMPBIN" && break
+ done
+fi
+if test -z "$DUMPBIN"; then
+ ac_ct_DUMPBIN=$DUMPBIN
+ for ac_prog in dumpbin "link -dump"
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DUMPBIN"; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_DUMPBIN" && break
+done
+
+ if test "x$ac_ct_DUMPBIN" = x; then
+ DUMPBIN=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DUMPBIN=$ac_ct_DUMPBIN
+ fi
+fi
+
+ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+ *COFF*)
+ DUMPBIN="$DUMPBIN -symbols"
+ ;;
+ *)
+ DUMPBIN=:
+ ;;
+ esac
+ fi
+
+ if test "$DUMPBIN" != ":"; then
+ NM="$DUMPBIN"
+ fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+{ $as_echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if test "${lt_cv_nm_interface+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:38857: $ac_compile\"" >&5)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:38860: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:38863: output\"" >&5)
+ cat conftest.out >&5
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+
+
+
+ GLOBAL_SYMBOL_PIPE=$lt_cv_sys_global_symbol_pipe
+
+ if test -n "$GLOBAL_SYMBOL_PIPE"; then
+ HAVE_GLOBAL_SYMBOL_PIPE=1
+ else
+ HAVE_GLOBAL_SYMBOL_PIPE=
+ fi
+
+
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:$LINENO: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+
+sed_extract_major='/^[0-9]/{s/^\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{s/^[0-9]*[.]\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+
+version_major=`echo "${VERSION}" | sed -n -e "$sed_extract_major"`
+version_minor=`echo "${VERSION}" | sed -n -e "$sed_extract_minor"`
+HEXVERSION=0x`$AWK 'BEGIN { printf("%02d%02d"',"$version_major","$version_minor"') }'`
+
+
+ac_aux_dir_abs=`cd $ac_aux_dir && pwd`
+# Extract the first word of "texi2dvi", so it can be a program name with args.
+set dummy texi2dvi; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_TEXI2DVI+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ case $TEXI2DVI in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TEXI2DVI="$TEXI2DVI" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_TEXI2DVI="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_TEXI2DVI" && ac_cv_path_TEXI2DVI="$ac_aux_dir_abs/missing texi2dvi"
+ ;;
+esac
+fi
+TEXI2DVI=$ac_cv_path_TEXI2DVI
+if test -n "$TEXI2DVI"; then
+ { $as_echo "$as_me:$LINENO: result: $TEXI2DVI" >&5
+$as_echo "$TEXI2DVI" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "dvips", so it can be a program name with args.
+set dummy dvips; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_DVIPS+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ case $DVIPS in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DVIPS="$DVIPS" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_DVIPS="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_DVIPS" && ac_cv_path_DVIPS="$ac_aux_dir_abs/missing dvips"
+ ;;
+esac
+fi
+DVIPS=$ac_cv_path_DVIPS
+if test -n "$DVIPS"; then
+ { $as_echo "$as_me:$LINENO: result: $DVIPS" >&5
+$as_echo "$DVIPS" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PERL+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ case $PERL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="$ac_aux_dir_abs/missing perl"
+ ;;
+esac
+fi
+PERL=$ac_cv_path_PERL
+if test -n "$PERL"; then
+ { $as_echo "$as_me:$LINENO: result: $PERL" >&5
+$as_echo "$PERL" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+ac_config_files="$ac_config_files Makefile"
+
+ac_config_files="$ac_config_files doc/Makefile"
+
+ac_config_files="$ac_config_files gnulib-local/Makefile"
+
+ac_config_files="$ac_config_files lib/Makefile"
+
+ac_config_files="$ac_config_files lib/exported.sh"
+
+ac_config_files="$ac_config_files lib/unistring/version.h:lib/unistring/version.in.h"
+
+ac_config_files="$ac_config_files lib/unistring/woe32dll.h:lib/unistring/woe32dll.in.h"
+
+ac_config_files="$ac_config_files tests/Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) $as_unset $ac_var ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ test "x$cache_file" != "x/dev/null" &&
+ { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+ { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+ if test -n "$EXEEXT"; then
+ am__EXEEXT_TRUE=
+ am__EXEEXT_FALSE='#'
+else
+ am__EXEEXT_TRUE='#'
+ am__EXEEXT_FALSE=
+fi
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${WOE32_TRUE}" && test -z "${WOE32_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"WOE32\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"WOE32\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"GL_COND_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"GL_COND_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+
+
+ gl_libobjs=
+ gl_ltlibobjs=
+ if test -n "$gl_LIBOBJS"; then
+ # Remove the extension.
+ sed_drop_objext='s/\.o$//;s/\.obj$//'
+ for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+ gl_libobjs="$gl_libobjs $i.$ac_objext"
+ gl_ltlibobjs="$gl_ltlibobjs $i.lo"
+ done
+ fi
+ gl_LIBOBJS=$gl_libobjs
+
+ gl_LTLIBOBJS=$gl_ltlibobjs
+
+
+
+
+ gltests_libobjs=
+ gltests_ltlibobjs=
+ if test -n "$gltests_LIBOBJS"; then
+ # Remove the extension.
+ sed_drop_objext='s/\.o$//;s/\.obj$//'
+ for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+ gltests_libobjs="$gltests_libobjs $i.$ac_objext"
+ gltests_ltlibobjs="$gltests_ltlibobjs $i.lo"
+ done
+ fi
+ gltests_LIBOBJS=$gltests_libobjs
+
+ gltests_LTLIBOBJS=$gltests_ltlibobjs
+
+
+if test -z "${WOE32DLL_TRUE}" && test -z "${WOE32DLL_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"WOE32DLL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"WOE32DLL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line after each line using $LINENO; the second 'sed'
+ # does the real work. The second script uses 'N' to pair each
+ # line-number line with the line containing $LINENO, and appends
+ # trailing '-' during substitution so that $LINENO is not a special
+ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # scripts with optimization help from Paolo Bonzini. Blame Lee
+ # E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+ case `echo 'x\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ *) ECHO_C='\c';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+
+# Save the log message, to keep $[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.63. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTION]... [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.63,
+ with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ CONFIG_FILES="$CONFIG_FILES '$ac_optarg'"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h)
+ # Conflict between --help and --header
+ { $as_echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; };;
+ --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { $as_echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`'
+AS='`$ECHO "X$AS" | $Xsed -e "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "X$DLLTOOL" | $Xsed -e "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`'
+enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`'
+host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`'
+host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`'
+host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`'
+build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`'
+build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`'
+build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`'
+SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`'
+Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`'
+GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`'
+EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`'
+FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`'
+LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`'
+NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`'
+LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`'
+exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`'
+AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`'
+STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`'
+compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`'
+GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
+objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`'
+SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`'
+ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`'
+need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`'
+LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`'
+libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`'
+fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
+need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`'
+version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`'
+striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`'
+LD_RC='`$ECHO "X$LD_RC" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_cmds_RC='`$ECHO "X$old_archive_cmds_RC" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_RC='`$ECHO "X$compiler_RC" | $Xsed -e "$delay_single_quote_subst"`'
+GCC_RC='`$ECHO "X$GCC_RC" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_RC='`$ECHO "X$lt_prog_compiler_no_builtin_flag_RC" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_RC='`$ECHO "X$lt_prog_compiler_wl_RC" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_RC='`$ECHO "X$lt_prog_compiler_pic_RC" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_static_RC='`$ECHO "X$lt_prog_compiler_static_RC" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_RC='`$ECHO "X$lt_cv_prog_compiler_c_o_RC" | $Xsed -e "$delay_single_quote_subst"`'
+archive_cmds_need_lc_RC='`$ECHO "X$archive_cmds_need_lc_RC" | $Xsed -e "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_RC='`$ECHO "X$enable_shared_with_static_runtimes_RC" | $Xsed -e "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_RC='`$ECHO "X$export_dynamic_flag_spec_RC" | $Xsed -e "$delay_single_quote_subst"`'
+whole_archive_flag_spec_RC='`$ECHO "X$whole_archive_flag_spec_RC" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_needs_object_RC='`$ECHO "X$compiler_needs_object_RC" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_RC='`$ECHO "X$old_archive_from_new_cmds_RC" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_RC='`$ECHO "X$old_archive_from_expsyms_cmds_RC" | $Xsed -e "$delay_single_quote_subst"`'
+archive_cmds_RC='`$ECHO "X$archive_cmds_RC" | $Xsed -e "$delay_single_quote_subst"`'
+archive_expsym_cmds_RC='`$ECHO "X$archive_expsym_cmds_RC" | $Xsed -e "$delay_single_quote_subst"`'
+module_cmds_RC='`$ECHO "X$module_cmds_RC" | $Xsed -e "$delay_single_quote_subst"`'
+module_expsym_cmds_RC='`$ECHO "X$module_expsym_cmds_RC" | $Xsed -e "$delay_single_quote_subst"`'
+with_gnu_ld_RC='`$ECHO "X$with_gnu_ld_RC" | $Xsed -e "$delay_single_quote_subst"`'
+allow_undefined_flag_RC='`$ECHO "X$allow_undefined_flag_RC" | $Xsed -e "$delay_single_quote_subst"`'
+no_undefined_flag_RC='`$ECHO "X$no_undefined_flag_RC" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_RC='`$ECHO "X$hardcode_libdir_flag_spec_RC" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld_RC='`$ECHO "X$hardcode_libdir_flag_spec_ld_RC" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_separator_RC='`$ECHO "X$hardcode_libdir_separator_RC" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_direct_RC='`$ECHO "X$hardcode_direct_RC" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_direct_absolute_RC='`$ECHO "X$hardcode_direct_absolute_RC" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_minus_L_RC='`$ECHO "X$hardcode_minus_L_RC" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_RC='`$ECHO "X$hardcode_shlibpath_var_RC" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_automatic_RC='`$ECHO "X$hardcode_automatic_RC" | $Xsed -e "$delay_single_quote_subst"`'
+inherit_rpath_RC='`$ECHO "X$inherit_rpath_RC" | $Xsed -e "$delay_single_quote_subst"`'
+link_all_deplibs_RC='`$ECHO "X$link_all_deplibs_RC" | $Xsed -e "$delay_single_quote_subst"`'
+fix_srcfile_path_RC='`$ECHO "X$fix_srcfile_path_RC" | $Xsed -e "$delay_single_quote_subst"`'
+always_export_symbols_RC='`$ECHO "X$always_export_symbols_RC" | $Xsed -e "$delay_single_quote_subst"`'
+export_symbols_cmds_RC='`$ECHO "X$export_symbols_cmds_RC" | $Xsed -e "$delay_single_quote_subst"`'
+exclude_expsyms_RC='`$ECHO "X$exclude_expsyms_RC" | $Xsed -e "$delay_single_quote_subst"`'
+include_expsyms_RC='`$ECHO "X$include_expsyms_RC" | $Xsed -e "$delay_single_quote_subst"`'
+prelink_cmds_RC='`$ECHO "X$prelink_cmds_RC" | $Xsed -e "$delay_single_quote_subst"`'
+file_list_spec_RC='`$ECHO "X$file_list_spec_RC" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_action_RC='`$ECHO "X$hardcode_action_RC" | $Xsed -e "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# Quote evaled strings.
+for var in SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+deplibs_check_method \
+file_magic_cmd \
+AR \
+AR_FLAGS \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+SHELL \
+ECHO \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_wl \
+lt_prog_compiler_pic \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_flag_spec_ld \
+hardcode_libdir_separator \
+fix_srcfile_path \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+finish_eval \
+old_striplib \
+striplib \
+LD_RC \
+compiler_RC \
+lt_prog_compiler_no_builtin_flag_RC \
+lt_prog_compiler_wl_RC \
+lt_prog_compiler_pic_RC \
+lt_prog_compiler_static_RC \
+lt_cv_prog_compiler_c_o_RC \
+export_dynamic_flag_spec_RC \
+whole_archive_flag_spec_RC \
+compiler_needs_object_RC \
+with_gnu_ld_RC \
+allow_undefined_flag_RC \
+no_undefined_flag_RC \
+hardcode_libdir_flag_spec_RC \
+hardcode_libdir_flag_spec_ld_RC \
+hardcode_libdir_separator_RC \
+fix_srcfile_path_RC \
+exclude_expsyms_RC \
+include_expsyms_RC \
+file_list_spec_RC; do
+ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec \
+old_archive_cmds_RC \
+old_archive_from_new_cmds_RC \
+old_archive_from_expsyms_cmds_RC \
+archive_cmds_RC \
+archive_expsym_cmds_RC \
+module_cmds_RC \
+module_expsym_cmds_RC \
+export_symbols_cmds_RC \
+prelink_cmds_RC; do
+ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Fix-up fallback echo if it was mangled by the above quoting rules.
+case \$lt_ECHO in
+*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\`
+ ;;
+esac
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+
+ PACKAGE='$PACKAGE'
+ VERSION='$VERSION'
+ TIMESTAMP='$TIMESTAMP'
+ RM='$RM'
+ ofile='$ofile'
+
+
+
+
+
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+ "gnulib-local/Makefile") CONFIG_FILES="$CONFIG_FILES gnulib-local/Makefile" ;;
+ "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
+ "lib/exported.sh") CONFIG_FILES="$CONFIG_FILES lib/exported.sh" ;;
+ "lib/unistring/version.h") CONFIG_FILES="$CONFIG_FILES lib/unistring/version.h:lib/unistring/version.in.h" ;;
+ "lib/unistring/woe32dll.h") CONFIG_FILES="$CONFIG_FILES lib/unistring/woe32dll.h:lib/unistring/woe32dll.in.h" ;;
+ "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
+
+ *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp=
+ trap 'exit_status=$?
+ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} ||
+{
+ $as_echo "$as_me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=' '
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\).*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\).*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
+$as_echo "$as_me: error: could not setup config files machinery" >&2;}
+ { (exit 1); exit 1; }; }
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[ ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+ ac_t=`sed -n "/$ac_delim/p" confdefs.h`
+ if test -z "$ac_t"; then
+ break
+ elif $ac_last_try; then
+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;}
+ { (exit 1); exit 1; }; }
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any. Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[ ]*#[ ]*define[ ][ ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ for (key in D) D_is_set[key] = 1
+ FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+ line = \$ 0
+ split(line, arg, " ")
+ if (arg[1] == "#") {
+ defundef = arg[2]
+ mac1 = arg[3]
+ } else {
+ defundef = substr(arg[1], 2)
+ mac1 = arg[2]
+ }
+ split(mac1, mac2, "(") #)
+ macro = mac2[1]
+ prefix = substr(line, 1, index(line, defundef) - 1)
+ if (D_is_set[macro]) {
+ # Preserve the white space surrounding the "#".
+ print prefix "define", macro P[macro] D[macro]
+ next
+ } else {
+ # Replace #undef with comments. This is necessary, for example,
+ # in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+ if (defundef == "undef") {
+ print "/*", prefix defundef, macro, "*/"
+ next
+ }
+ }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5
+$as_echo "$as_me: error: could not setup config headers machinery" >&2;}
+ { (exit 1); exit 1; }; }
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
+$as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
+ { (exit 1); exit 1; }; };;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ ac_file_inputs="$ac_file_inputs '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$tmp/stdin" \
+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ { as_dir="$ac_dir"
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p
+'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+ { (exit 1); exit 1; }; }
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&2;}
+
+ rm -f "$tmp/stdin"
+ case $ac_file in
+ -) cat "$tmp/out" && rm -f "$tmp/out";;
+ *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+ esac \
+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ :H)
+ #
+ # CONFIG_HEADER
+ #
+ if test x"$ac_file" != x-; then
+ {
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+ } >"$tmp/config.h" \
+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+ { (exit 1); exit 1; }; }
+ if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+ { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ rm -f "$ac_file"
+ mv "$tmp/config.h" "$ac_file" \
+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ else
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+ || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5
+$as_echo "$as_me: error: could not create -" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$_am_arg" : 'X\(//\)[^/]' \| \
+ X"$_am_arg" : 'X\(//\)$' \| \
+ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+ :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ { as_dir=$dirpart/$fdir
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+ ;;
+ "libtool":C)
+
+ # See if we are running on zsh, and set the options which allow our
+ # commands through without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+
+ cfgfile="${ofile}T"
+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+ $RM "$cfgfile"
+
+ cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is part of GNU Libtool.
+#
+# GNU Libtool 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.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags="RC "
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Assembler program.
+AS=$AS
+
+# DLL creation program.
+DLLTOOL=$DLLTOOL
+
+# Object dumper program.
+OBJDUMP=$OBJDUMP
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that does not interpret backslashes.
+ECHO=$lt_ECHO
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking. This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+ case $host_os in
+ aix3*)
+ cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+_LT_EOF
+ ;;
+ esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ case $xsi_shell in
+ yes)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+}
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result="${1##*/}"
+}
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+# dirname: Compute the dirname of FILE. If nonempty,
+# add APPEND to the result, otherwise set result
+# to NONDIR_REPLACEMENT.
+# value returned in "$func_dirname_result"
+# basename: Compute filename of FILE.
+# value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+ func_basename_result="${1##*/}"
+}
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+func_stripname ()
+{
+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+ # positional parameters, so assign one to ordinary parameter first.
+ func_stripname_result=${3}
+ func_stripname_result=${func_stripname_result#"${1}"}
+ func_stripname_result=${func_stripname_result%"${2}"}
+}
+
+# func_opt_split
+func_opt_split ()
+{
+ func_opt_split_opt=${1%%=*}
+ func_opt_split_arg=${1#*=}
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+ case ${1} in
+ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+ *) func_lo2o_result=${1} ;;
+ esac
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=${1%.*}.lo
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=$(( $* ))
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=${#1}
+}
+
+_LT_EOF
+ ;;
+ *) # Bourne compatible functions.
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ # Extract subdirectory from the argument.
+ func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
+ if test "X$func_dirname_result" = "X${1}"; then
+ func_dirname_result="${3}"
+ else
+ func_dirname_result="$func_dirname_result${2}"
+ fi
+}
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
+}
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+ case ${2} in
+ .*) func_stripname_result=`$ECHO "X${3}" \
+ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
+ *) func_stripname_result=`$ECHO "X${3}" \
+ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
+ esac
+}
+
+# sed scripts:
+my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+my_sed_long_arg='1s/^-[^=]*=//'
+
+# func_opt_split
+func_opt_split ()
+{
+ func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
+ func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+ func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'`
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=`expr "$@"`
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+}
+
+_LT_EOF
+esac
+
+case $lt_shell_append in
+ yes)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "$1+=\$2"
+}
+_LT_EOF
+ ;;
+ *)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "$1=\$$1\$2"
+}
+
+_LT_EOF
+ ;;
+ esac
+
+
+ sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+
+ cat <<_LT_EOF >> "$ofile"
+
+# ### BEGIN LIBTOOL TAG CONFIG: RC
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds_RC
+
+# A language specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object_RC
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld_RC
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking. This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute_RC
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic_RC
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath_RC
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path_RC
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds_RC
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec_RC
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# ### END LIBTOOL TAG CONFIG: RC
+_LT_EOF
+
+ ;;
+
+ esac
+done # for ac_tag
+
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || { (exit 1); exit 1; }
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 00000000..4c513457
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,153 @@
+dnl Configuration for the toplevel directory of GNU libunistring
+dnl Copyright (C) 2009 Free Software Foundation, Inc.
+dnl
+dnl This program is free software: you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 3 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+dnl Process this file with autoconf to produce a configure script.
+
+AC_PREREQ([2.63])
+AC_INIT
+AC_CONFIG_SRCDIR([lib/unistring/version.in.h])
+AC_CONFIG_AUX_DIR([build-aux])
+. $srcdir/version.sh
+gl_INIT_PACKAGE([libunistring], [$VERSION_NUMBER])
+AM_INIT_AUTOMAKE([silent-rules])
+AM_CONFIG_HEADER([config.h])
+
+dnl Override automake's tar command used for creating distributions.
+am__tar='${AMTAR} chof - --owner=root --group=root "$$tardir"'
+
+dnl Checks for basic programs.
+
+AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_INSTALL
+AC_PROG_MKDIR_P
+
+dnl Check for host type.
+
+AC_CANONICAL_HOST
+
+dnl Checks that augment the CPPFLAGS.
+
+gl_EARLY
+
+dnl Checks for compiler output filename suffixes.
+
+AC_OBJEXT
+AC_EXEEXT
+
+dnl Check for build configuration.
+
+gl_WOE32_DLL
+
+LT_INIT([win32-dll])
+
+dnl Prepares the libtool configuration for handling of Windows resources, and
+dnl sets the RC variable to a program that compiles Windows resource files.
+LT_LANG([Windows Resource])
+
+dnl On mingw and Cygwin, we can activate special Makefile rules which add
+dnl version information to the shared libraries and executables.
+case "$host_os" in
+ mingw* | cygwin*) is_woe32=yes ;;
+ *) is_woe32=no ;;
+esac
+AM_CONDITIONAL([WOE32], [test $is_woe32 = yes])
+
+dnl Checks for types, header files, functions and declarations.
+
+gl_INIT
+
+dnl Compilation on mingw and Cygwin needs special Makefile rules, because
+dnl 1. when we install a shared library, we must arrange to export
+dnl auxiliary pointer variables for every exported variable,
+dnl 2. when we install a shared library and a static library simultaneously,
+dnl the include file specifies __declspec(dllimport) and therefore we
+dnl must arrange to define the auxiliary pointer variables for the
+dnl exported variables _also_ in the static library.
+if test "$enable_shared" = yes; then
+ case "$host_os" in
+ mingw* | cygwin*) is_woe32dll=yes ;;
+ *) is_woe32dll=no ;;
+ esac
+else
+ is_woe32dll=no
+fi
+AM_CONDITIONAL([WOE32DLL], [test $is_woe32dll = yes])
+if test $is_woe32dll = yes; then
+ DLL_VARIABLE='__declspec (dllimport)'
+else
+ DLL_VARIABLE=
+fi
+AC_SUBST([DLL_VARIABLE])
+dnl Some parts of the tests have to be skipped when the tests are linked with
+dnl the shared library. This is because in this situation, the address of a
+dnl global variable in the shared library cannot be used as initializer of a
+dnl global or static variable.
+dnl gcc would say: "error: initializer element is not constant".
+if test $is_woe32dll = yes; then
+ AC_DEFINE([WOE32DLL], [1],
+ [Define when --enable-shared is used on mingw or Cygwin.])
+fi
+
+dnl Namespacing is the default: it builds a namespace clean library.
+dnl Allow the user to disable namespacing. This speeds up "make" considerably.
+AC_ARG_ENABLE([namespacing],
+ [ --disable-namespacing build a library that exports undesired symbols],
+ [:], [enable_namespacing=yes])
+if test "$enable_namespacing" != no; then
+ NAMESPACING=yes
+else
+ NAMESPACING=
+fi
+AC_SUBST([NAMESPACING])
+
+dnl Check for prerequisites of exported.sh.
+gt_GLOBAL_SYMBOL_PIPE
+
+dnl Substitutable version number.
+AC_PROG_AWK
+changequote(,)
+sed_extract_major='/^[0-9]/{s/^\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{s/^[0-9]*[.]\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+changequote([,])
+version_major=`echo "${VERSION}" | sed -n -e "$sed_extract_major"`
+version_minor=`echo "${VERSION}" | sed -n -e "$sed_extract_minor"`
+HEXVERSION=0x`$AWK 'BEGIN { printf("%02d%02d"',"$version_major","$version_minor"') }'`
+AC_SUBST([HEXVERSION])
+
+dnl Check for tools needed for formatting the documentation.
+ac_aux_dir_abs=`cd $ac_aux_dir && pwd`
+AC_PATH_PROG([TEXI2DVI], [texi2dvi], [$ac_aux_dir_abs/missing texi2dvi])
+AC_PATH_PROG([DVIPS], [dvips], [$ac_aux_dir_abs/missing dvips])
+AC_PATH_PROG([PERL], [perl], [$ac_aux_dir_abs/missing perl])
+
+AC_CONFIG_FILES([Makefile])
+AC_CONFIG_FILES([doc/Makefile])
+AC_CONFIG_FILES([gnulib-local/Makefile])
+AC_CONFIG_FILES([lib/Makefile])
+AC_CONFIG_FILES([lib/exported.sh])
+AC_CONFIG_FILES([lib/unistring/version.h:lib/unistring/version.in.h])
+AC_CONFIG_FILES([lib/unistring/woe32dll.h:lib/unistring/woe32dll.in.h])
+AC_CONFIG_FILES([tests/Makefile])
+AC_OUTPUT
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 00000000..a66c69da
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,185 @@
+## Makefile for the doc subdirectory of GNU libunistring.
+## Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+## Process this file with automake to produce Makefile.in.
+
+AUTOMAKE_OPTIONS = 1.5 gnits
+EXTRA_DIST =
+MOSTLYCLEANFILES =
+
+# List of -I options referring to directories that contain texinfo sources
+# used by this directory.
+# Should contain at least one -I option, to work around a bug in texi2dvi 1.13,
+# see <http://lists.gnu.org/archive/html/bug-automake/2009-04/msg00029.html>.
+TEXINCLUDES = -I .
+
+MAKEINFO = env LANG= LC_MESSAGES= LC_ALL= LANGUAGE= @MAKEINFO@
+MAKEINFOFLAGS = $(TEXINCLUDES) --no-split
+
+info_TEXINFOS = libunistring.texi
+# List of texinfo sources @included by libunistring.texi, excluding version.texi.
+libunistring_TEXINFOS = \
+ unitypes.texi unistr.texi uniconv.texi unistdio.texi uniname.texi \
+ unictype.texi uniwidth.texi uniwbrk.texi unilbrk.texi uninorm.texi \
+ unicase.texi uniregex.texi \
+ gpl.texi lgpl.texi fdl.texi
+
+# The dependencies of stamp-vti generated by automake are incomplete.
+# So we have to duplicate the entire rule which would otherwise be generated
+# by automake.
+$(srcdir)/stamp-vti: $(info_TEXINFOS) $(libunistring_TEXINFOS) $(top_srcdir)/version.sh
+ (dir=.; test -f ./libunistring.texi || dir=$(srcdir); \
+ set `$(SHELL) $(top_srcdir)/build-aux/mdate-sh $$dir/libunistring.texi`; \
+ echo "@set UPDATED $$1 $$2 $$3"; \
+ echo "@set UPDATED-MONTH $$2 $$3"; \
+ echo "@set EDITION $(VERSION)"; \
+ echo "@set VERSION $(VERSION)") > vti.tmp
+ cmp -s vti.tmp $(srcdir)/version.texi \
+ || (echo "Updating $(srcdir)/version.texi"; \
+ cp vti.tmp $(srcdir)/version.texi)
+ rm -f vti.tmp
+ cp $(srcdir)/version.texi $@
+
+# We distribute only the split HTML documentation.
+# The user can generate the others, via
+# make libunistring.ps
+# make libunistring.pdf
+# make libunistring.html
+
+all-local: html-local
+install-data-local: install-html
+installdirs-local: installdirs-html
+uninstall-local: uninstall-html
+dist-hook: dist-html
+
+html-local: html-split
+# Override of automake's definition. The HTML files we want to distribute are
+# not the ones that automake knows about, and we cannot define HTMLS to a value
+# containing wildcards.
+install-html: install-html-split
+ @:
+uninstall-html: uninstall-html-split
+dist-html: dist-html-split
+
+# CLEANFILES: libunistring.{dvi,ps,pdf,html} are already known to automake.
+MAINTAINERCLEANFILES = libunistring_*.html
+
+
+# Documentation in DVI format.
+
+# Override of automake's definition:
+#TEXI2DVI = @TEXI2DVI@
+TEXI2DVI = @TEXI2DVI@ $(TEXINCLUDES)
+
+# The install-dvi target is already defined by automake.
+
+installdirs-dvi:
+ $(mkdir_p) $(DESTDIR)$(dvidir)
+
+uninstall-dvi:
+ $(RM) $(DESTDIR)$(dvidir)/libunistring.dvi
+
+
+# Documentation in Postscript format.
+
+# Override of automake's definition:
+#DVIPS = @DVIPS@
+DVIPS = @DVIPS@ -D600
+
+libunistring.ps: libunistring.dvi
+ $(DVIPS) -o $@ `if test -f libunistring.dvi; then echo libunistring.dvi; else echo $(srcdir)/libunistring.dvi; fi`
+
+# The install-ps target is already defined by automake.
+
+installdirs-ps:
+ $(mkdir_p) $(DESTDIR)$(psdir)
+
+uninstall-ps:
+ $(RM) $(DESTDIR)$(psdir)/libunistring.ps
+
+
+# Documentation in Portable Document Format.
+
+# Override of automake's definition:
+#TEXI2PDF = @TEXI2DVI@ --pdf
+TEXI2PDF = @TEXI2DVI@ --pdf $(TEXINCLUDES)
+
+# The install-pdf target is already defined by automake.
+
+installdirs-pdf:
+ $(mkdir_p) $(DESTDIR)$(pdfdir)
+
+uninstall-pdf:
+ $(RM) $(DESTDIR)$(pdfdir)/libunistring.pdf
+
+
+# Documentation in HTML format.
+
+TEXI2HTML = @PERL@ $(top_srcdir)/build-aux/texi2html
+
+html-monolithic: libunistring.html
+html-split: libunistring_toc.html
+
+# Override of automake's definition.
+# We want to use texi2html, not makeinfo --html.
+libunistring.html: libunistring.texi version.texi $(libunistring_TEXINFOS)
+ $(TEXI2HTML) $(TEXINCLUDES) -no-sec-nav -no-menu -toc-links -number -monolithic `if test -f libunistring.texi; then echo libunistring.texi; else echo $(srcdir)/libunistring.texi; fi`
+
+libunistring_toc.html: libunistring.texi version.texi $(libunistring_TEXINFOS)
+ case "@PERL@" in \
+ *"/missing perl") \
+ $(TEXI2HTML) $(TEXINCLUDES) -no-sec-nav -no-menu -toc-links -number -split_chapter `if test -f libunistring.texi; then echo libunistring.texi; else echo $(srcdir)/libunistring.texi; fi` || exit 0 ;; \
+ *) $(RM) libunistring_*.html ; \
+ $(TEXI2HTML) $(TEXINCLUDES) -no-sec-nav -no-menu -toc-links -number -split_chapter `if test -f libunistring.texi; then echo libunistring.texi; else echo $(srcdir)/libunistring.texi; fi` ;; \
+ esac \
+ && { mv libunistring/libunistring.html libunistring_toc.html; \
+ mv libunistring/*.html .; \
+ rmdir libunistring; \
+ }
+
+install-html-monolithic: libunistring.html
+ $(mkdir_p) $(DESTDIR)$(htmldir)
+ $(INSTALL_DATA) `if test -f libunistring.html; then echo .; else echo $(srcdir); fi`/libunistring.html $(DESTDIR)$(htmldir)/libunistring.html
+
+install-html-split: libunistring_toc.html
+ $(mkdir_p) $(DESTDIR)$(htmldir)
+ for file in `if test -f libunistring_toc.html; then echo .; else echo $(srcdir); fi`/libunistring_*.html; do \
+ $(INSTALL_DATA) $$file $(DESTDIR)$(htmldir)/`basename $$file`; \
+ done
+
+installdirs-html:
+ $(mkdir_p) $(DESTDIR)$(htmldir)
+
+uninstall-html-monolithic:
+ $(RM) $(DESTDIR)$(htmldir)/libunistring.html
+
+uninstall-html-split:
+ $(RM) $(DESTDIR)$(htmldir)/libunistring_*.html
+
+dist-html-monolithic:
+ $(mkdir_p) $(distdir)/
+ file=libunistring.html; \
+ if test -f $$file; then d=.; else d=$(srcdir); fi; \
+ cp -p $$d/$$file $(distdir)/$$file || exit 1
+
+# We would like to put libunistring_*.html into EXTRA_DIST, but it doesn't work.
+dist-html-split:
+ $(mkdir_p) $(distdir)/
+ file=libunistring_toc.html; \
+ if test -f $$file; then d=.; else d=$(srcdir); fi; \
+ for file in `cd $$d && echo libunistring_*.html`; do \
+ cp -p $$d/$$file $(distdir)/$$file || exit 1; \
+ done
diff --git a/doc/Makefile.in b/doc/Makefile.in
new file mode 100644
index 00000000..66a4a3bc
--- /dev/null
+++ b/doc/Makefile.in
@@ -0,0 +1,1207 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc
+DIST_COMMON = $(libunistring_TEXINFOS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/stamp-vti \
+ $(srcdir)/version.texi
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
+ $(top_srcdir)/gnulib-m4/alloca.m4 \
+ $(top_srcdir)/gnulib-m4/codeset.m4 \
+ $(top_srcdir)/gnulib-m4/eealloc.m4 \
+ $(top_srcdir)/gnulib-m4/environ.m4 \
+ $(top_srcdir)/gnulib-m4/errno_h.m4 \
+ $(top_srcdir)/gnulib-m4/error.m4 \
+ $(top_srcdir)/gnulib-m4/exitfail.m4 \
+ $(top_srcdir)/gnulib-m4/exponentd.m4 \
+ $(top_srcdir)/gnulib-m4/exponentf.m4 \
+ $(top_srcdir)/gnulib-m4/exponentl.m4 \
+ $(top_srcdir)/gnulib-m4/extensions.m4 \
+ $(top_srcdir)/gnulib-m4/float_h.m4 \
+ $(top_srcdir)/gnulib-m4/fpieee.m4 \
+ $(top_srcdir)/gnulib-m4/frexp.m4 \
+ $(top_srcdir)/gnulib-m4/frexpl.m4 \
+ $(top_srcdir)/gnulib-m4/getpagesize.m4 \
+ $(top_srcdir)/gnulib-m4/glibc21.m4 \
+ $(top_srcdir)/gnulib-m4/gnulib-common.m4 \
+ $(top_srcdir)/gnulib-m4/gnulib-comp.m4 \
+ $(top_srcdir)/gnulib-m4/iconv.m4 \
+ $(top_srcdir)/gnulib-m4/iconv_h.m4 \
+ $(top_srcdir)/gnulib-m4/iconv_open.m4 \
+ $(top_srcdir)/gnulib-m4/include_next.m4 \
+ $(top_srcdir)/gnulib-m4/inline.m4 \
+ $(top_srcdir)/gnulib-m4/intlmacosx.m4 \
+ $(top_srcdir)/gnulib-m4/intmax_t.m4 \
+ $(top_srcdir)/gnulib-m4/inttypes_h.m4 \
+ $(top_srcdir)/gnulib-m4/isnand.m4 \
+ $(top_srcdir)/gnulib-m4/isnanf.m4 \
+ $(top_srcdir)/gnulib-m4/isnanl.m4 \
+ $(top_srcdir)/gnulib-m4/lcmessage.m4 \
+ $(top_srcdir)/gnulib-m4/ldexpl.m4 \
+ $(top_srcdir)/gnulib-m4/lib-ld.m4 \
+ $(top_srcdir)/gnulib-m4/lib-link.m4 \
+ $(top_srcdir)/gnulib-m4/lib-prefix.m4 \
+ $(top_srcdir)/gnulib-m4/localcharset.m4 \
+ $(top_srcdir)/gnulib-m4/locale-fr.m4 \
+ $(top_srcdir)/gnulib-m4/locale-ja.m4 \
+ $(top_srcdir)/gnulib-m4/locale-tr.m4 \
+ $(top_srcdir)/gnulib-m4/locale-zh.m4 \
+ $(top_srcdir)/gnulib-m4/locale_h.m4 \
+ $(top_srcdir)/gnulib-m4/localename.m4 \
+ $(top_srcdir)/gnulib-m4/longlong.m4 \
+ $(top_srcdir)/gnulib-m4/malloc.m4 \
+ $(top_srcdir)/gnulib-m4/malloca.m4 \
+ $(top_srcdir)/gnulib-m4/math_h.m4 \
+ $(top_srcdir)/gnulib-m4/mbchar.m4 \
+ $(top_srcdir)/gnulib-m4/mbiter.m4 \
+ $(top_srcdir)/gnulib-m4/mbrtowc.m4 \
+ $(top_srcdir)/gnulib-m4/mbsinit.m4 \
+ $(top_srcdir)/gnulib-m4/mbstate_t.m4 \
+ $(top_srcdir)/gnulib-m4/memchr.m4 \
+ $(top_srcdir)/gnulib-m4/minmax.m4 \
+ $(top_srcdir)/gnulib-m4/mmap-anon.m4 \
+ $(top_srcdir)/gnulib-m4/multiarch.m4 \
+ $(top_srcdir)/gnulib-m4/nocrash.m4 \
+ $(top_srcdir)/gnulib-m4/printf-frexp.m4 \
+ $(top_srcdir)/gnulib-m4/printf-frexpl.m4 \
+ $(top_srcdir)/gnulib-m4/printf.m4 \
+ $(top_srcdir)/gnulib-m4/relocatable-lib.m4 \
+ $(top_srcdir)/gnulib-m4/setenv.m4 \
+ $(top_srcdir)/gnulib-m4/signbit.m4 \
+ $(top_srcdir)/gnulib-m4/size_max.m4 \
+ $(top_srcdir)/gnulib-m4/stdbool.m4 \
+ $(top_srcdir)/gnulib-m4/stdint.m4 \
+ $(top_srcdir)/gnulib-m4/stdint_h.m4 \
+ $(top_srcdir)/gnulib-m4/stdlib_h.m4 \
+ $(top_srcdir)/gnulib-m4/strerror.m4 \
+ $(top_srcdir)/gnulib-m4/string_h.m4 \
+ $(top_srcdir)/gnulib-m4/unistd_h.m4 \
+ $(top_srcdir)/gnulib-m4/vasnprintf.m4 \
+ $(top_srcdir)/gnulib-m4/wchar.m4 \
+ $(top_srcdir)/gnulib-m4/wchar_t.m4 \
+ $(top_srcdir)/gnulib-m4/wctob.m4 \
+ $(top_srcdir)/gnulib-m4/wctype.m4 \
+ $(top_srcdir)/gnulib-m4/wcwidth.m4 \
+ $(top_srcdir)/gnulib-m4/wint_t.m4 \
+ $(top_srcdir)/gnulib-m4/xalloc.m4 \
+ $(top_srcdir)/gnulib-m4/xsize.m4 $(top_srcdir)/m4/exported.m4 \
+ $(top_srcdir)/m4/init-package-version.m4 \
+ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/woe32-dll.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+INFO_DEPS = $(srcdir)/libunistring.info
+TEXINFO_TEX = $(top_srcdir)/build-aux/texinfo.tex
+am__TEXINFO_TEX_DIR = $(top_srcdir)/build-aux
+DVIS = libunistring.dvi
+PDFS = libunistring.pdf
+PSS = libunistring.ps
+HTMLS = libunistring.html
+TEXINFOS = libunistring.texi
+MAKEINFOHTML = $(MAKEINFO) --html
+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
+am__installdirs = "$(DESTDIR)$(infodir)"
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VARIABLE = @DLL_VARIABLE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+
+# Documentation in Postscript format.
+
+# Override of automake's definition:
+#DVIPS = @DVIPS@
+DVIPS = @DVIPS@ -D600
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLOAT_H = @FLOAT_H@
+GLIBC21 = @GLIBC21@
+GLOBAL_SYMBOL_PIPE = @GLOBAL_SYMBOL_PIPE@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CEILF = @GNULIB_CEILF@
+GNULIB_CEILL = @GNULIB_CEILL@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FLOORF = @GNULIB_FLOORF@
+GNULIB_FLOORL = @GNULIB_FLOORL@
+GNULIB_FREXP = @GNULIB_FREXP@
+GNULIB_FREXPL = @GNULIB_FREXPL@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_ISFINITE = @GNULIB_ISFINITE@
+GNULIB_ISINF = @GNULIB_ISINF@
+GNULIB_ISNAN = @GNULIB_ISNAN@
+GNULIB_ISNAND = @GNULIB_ISNAND@
+GNULIB_ISNANF = @GNULIB_ISNANF@
+GNULIB_ISNANL = @GNULIB_ISNANL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LDEXPL = @GNULIB_LDEXPL@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MATHL = @GNULIB_MATHL@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_ROUND = @GNULIB_ROUND@
+GNULIB_ROUNDF = @GNULIB_ROUNDF@
+GNULIB_ROUNDL = @GNULIB_ROUNDL@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SIGNBIT = @GNULIB_SIGNBIT@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_TRUNC = @GNULIB_TRUNC@
+GNULIB_TRUNCF = @GNULIB_TRUNCF@
+GNULIB_TRUNCL = @GNULIB_TRUNCL@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
+HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@
+HAVE_DECL_ASINL = @HAVE_DECL_ASINL@
+HAVE_DECL_ATANL = @HAVE_DECL_ATANL@
+HAVE_DECL_COSL = @HAVE_DECL_COSL@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_EXPL = @HAVE_DECL_EXPL@
+HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@
+HAVE_DECL_LOGL = @HAVE_DECL_LOGL@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SINL = @HAVE_DECL_SINL@
+HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_TANL = @HAVE_DECL_TANL@
+HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@
+HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_GLOBAL_SYMBOL_PIPE = @HAVE_GLOBAL_SYMBOL_PIPE@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISNAND = @HAVE_ISNAND@
+HAVE_ISNANF = @HAVE_ISNANF@
+HAVE_ISNANL = @HAVE_ISNANL@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSETENV = @HAVE_UNSETENV@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HEXVERSION = @HEXVERSION@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_H = @LOCALE_H@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = env LANG= LC_MESSAGES= LC_ALL= LANGUAGE= @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NAMESPACING = @NAMESPACING@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FLOAT_H = @NEXT_FLOAT_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_MATH_H = @NEXT_MATH_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+RC = @RC@
+RELOCATABLE = @RELOCATABLE@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CEILF = @REPLACE_CEILF@
+REPLACE_CEILL = @REPLACE_CEILL@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FLOORF = @REPLACE_FLOORF@
+REPLACE_FLOORL = @REPLACE_FLOORL@
+REPLACE_FREXP = @REPLACE_FREXP@
+REPLACE_FREXPL = @REPLACE_FREXPL@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_ISFINITE = @REPLACE_ISFINITE@
+REPLACE_ISINF = @REPLACE_ISINF@
+REPLACE_ISNAN = @REPLACE_ISNAN@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LDEXPL = @REPLACE_LDEXPL@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NAN = @REPLACE_NAN@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_ROUND = @REPLACE_ROUND@
+REPLACE_ROUNDF = @REPLACE_ROUNDF@
+REPLACE_ROUNDL = @REPLACE_ROUNDL@
+REPLACE_SIGNBIT = @REPLACE_SIGNBIT@
+REPLACE_SIGNBIT_USING_GCC = @REPLACE_SIGNBIT_USING_GCC@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_TRUNCL = @REPLACE_TRUNCL@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+
+# Documentation in DVI format.
+
+# Override of automake's definition:
+#TEXI2DVI = @TEXI2DVI@
+TEXI2DVI = @TEXI2DVI@ $(TEXINCLUDES)
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+VERSION = @VERSION@
+VOID_UNSETENV = @VOID_UNSETENV@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.5 gnits
+EXTRA_DIST =
+MOSTLYCLEANFILES =
+
+# List of -I options referring to directories that contain texinfo sources
+# used by this directory.
+# Should contain at least one -I option, to work around a bug in texi2dvi 1.13,
+# see <http://lists.gnu.org/archive/html/bug-automake/2009-04/msg00029.html>.
+TEXINCLUDES = -I .
+MAKEINFOFLAGS = $(TEXINCLUDES) --no-split
+info_TEXINFOS = libunistring.texi
+# List of texinfo sources @included by libunistring.texi, excluding version.texi.
+libunistring_TEXINFOS = \
+ unitypes.texi unistr.texi uniconv.texi unistdio.texi uniname.texi \
+ unictype.texi uniwidth.texi uniwbrk.texi unilbrk.texi uninorm.texi \
+ unicase.texi uniregex.texi \
+ gpl.texi lgpl.texi fdl.texi
+
+
+# CLEANFILES: libunistring.{dvi,ps,pdf,html} are already known to automake.
+MAINTAINERCLEANFILES = libunistring_*.html
+
+# Documentation in Portable Document Format.
+
+# Override of automake's definition:
+#TEXI2PDF = @TEXI2DVI@ --pdf
+TEXI2PDF = @TEXI2DVI@ --pdf $(TEXINCLUDES)
+
+# Documentation in HTML format.
+TEXI2HTML = @PERL@ $(top_srcdir)/build-aux/texi2html
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .dvi .html .info .pdf .ps .texi
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits doc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnits doc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+.texi.info:
+ restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+ am__cwd=`pwd` && $(am__cd) $(srcdir) && \
+ rm -rf $$backupdir && mkdir $$backupdir && \
+ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+ done; \
+ else :; fi && \
+ cd "$$am__cwd"; \
+ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+ -o $@ $<; \
+ then \
+ rc=0; \
+ $(am__cd) $(srcdir); \
+ else \
+ rc=$$?; \
+ $(am__cd) $(srcdir) && \
+ $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+ fi; \
+ rm -rf $$backupdir; exit $$rc
+
+.texi.dvi:
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+ $(TEXI2DVI) $<
+
+.texi.pdf:
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+ $(TEXI2PDF) $<
+
+.texi.html:
+ rm -rf $(@:.html=.htp)
+ if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+ -o $(@:.html=.htp) $<; \
+ then \
+ rm -rf $@; \
+ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+ mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
+ else \
+ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+ rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
+ exit 1; \
+ fi
+$(srcdir)/libunistring.info: libunistring.texi $(srcdir)/version.texi $(libunistring_TEXINFOS)
+libunistring.dvi: libunistring.texi $(srcdir)/version.texi $(libunistring_TEXINFOS)
+libunistring.pdf: libunistring.texi $(srcdir)/version.texi $(libunistring_TEXINFOS)
+$(srcdir)/version.texi: $(srcdir)/stamp-vti
+
+mostlyclean-vti:
+ -rm -f vti.tmp
+
+maintainer-clean-vti:
+ -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
+.dvi.ps:
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ $(DVIPS) -o $@ $<
+
+uninstall-dvi-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
+ rm -f "$(DESTDIR)$(dvidir)/$$f"; \
+ done
+
+uninstall-html-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
+ rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
+ done
+
+uninstall-info-am:
+ @$(PRE_UNINSTALL)
+ @if test -d '$(DESTDIR)$(infodir)' && \
+ (install-info --version && \
+ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+ list='$(INFO_DEPS)'; \
+ for file in $$list; do \
+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
+ echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
+ if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
+ then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
+ done; \
+ else :; fi
+ @$(NORMAL_UNINSTALL)
+ @list='$(INFO_DEPS)'; \
+ for file in $$list; do \
+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
+ relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
+ (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
+ echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
+ rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
+ else :; fi); \
+ done
+
+uninstall-pdf-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
+ done
+
+uninstall-ps-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(PSS)'; test -n "$(psdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(psdir)/$$f"; \
+ done
+
+dist-info: $(INFO_DEPS)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ list='$(INFO_DEPS)'; \
+ for base in $$list; do \
+ case $$base in \
+ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+ esac; \
+ if test -f $$base; then d=.; else d=$(srcdir); fi; \
+ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
+ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
+ if test -f $$file; then \
+ relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+ test -f "$(distdir)/$$relfile" || \
+ cp -p $$file "$(distdir)/$$relfile"; \
+ else :; fi; \
+ done; \
+ done
+
+mostlyclean-aminfo:
+ -rm -rf libunistring.am libunistring.aux libunistring.cp libunistring.cps \
+ libunistring.fn libunistring.ky libunistring.kys \
+ libunistring.log libunistring.pg libunistring.pgs \
+ libunistring.tmp libunistring.toc libunistring.tp \
+ libunistring.vr libunistring.vrs
+
+clean-aminfo:
+ -test -z "libunistring.dvi libunistring.pdf libunistring.ps libunistring.html" \
+ || rm -rf libunistring.dvi libunistring.pdf libunistring.ps libunistring.html
+
+maintainer-clean-aminfo:
+ @list='$(INFO_DEPS)'; for i in $$list; do \
+ i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
+ echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
+ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
+ done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-info dist-hook
+check-am: all-am
+check: check-am
+all-am: Makefile $(INFO_DEPS) all-local
+installdirs: installdirs-local
+ for dir in "$(DESTDIR)$(infodir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+ -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-aminfo clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am: $(DVIS)
+
+html: html-am
+
+html-am: $(HTMLS) html-local
+
+info: info-am
+
+info-am: $(INFO_DEPS)
+
+install-data-am: install-data-local install-info-am
+
+install-dvi: install-dvi-am
+
+install-dvi-am: $(DVIS)
+ @$(NORMAL_INSTALL)
+ test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
+ @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
+ done
+install-exec-am:
+
+install-html-am: $(HTMLS)
+ @$(NORMAL_INSTALL)
+ test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
+ @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ $(am__strip_dir) \
+ if test -d "$$d$$p"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
+ $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
+ echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
+ else \
+ list2="$$list2 $$d$$p"; \
+ fi; \
+ done; \
+ test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
+ done; }
+install-info: install-info-am
+
+install-info-am: $(INFO_DEPS)
+ @$(NORMAL_INSTALL)
+ test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+ for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ esac; \
+ if test -f $$file; then d=.; else d=$(srcdir); fi; \
+ file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
+ for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
+ $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
+ if test -f $$ifile; then \
+ echo "$$ifile"; \
+ else : ; fi; \
+ done; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
+ @$(POST_INSTALL)
+ @if (install-info --version && \
+ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+ for file in $$list; do \
+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
+ echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
+ install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
+ done; \
+ else : ; fi
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am: $(PDFS)
+ @$(NORMAL_INSTALL)
+ test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
+ @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
+install-ps: install-ps-am
+
+install-ps-am: $(PSS)
+ @$(NORMAL_INSTALL)
+ test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
+ @list='$(PSS)'; test -n "$(psdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-aminfo \
+ maintainer-clean-generic maintainer-clean-vti
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \
+ mostlyclean-libtool mostlyclean-vti
+
+pdf: pdf-am
+
+pdf-am: $(PDFS)
+
+ps: ps-am
+
+ps-am: $(PSS)
+
+uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
+ uninstall-local uninstall-pdf-am uninstall-ps-am
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am all-local check check-am clean clean-aminfo \
+ clean-generic clean-libtool dist-hook dist-info distclean \
+ distclean-generic distclean-libtool distdir dvi dvi-am html \
+ html-am html-local info info-am install install-am \
+ install-data install-data-am install-data-local install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-local maintainer-clean maintainer-clean-aminfo \
+ maintainer-clean-generic maintainer-clean-vti mostlyclean \
+ mostlyclean-aminfo mostlyclean-generic mostlyclean-libtool \
+ mostlyclean-vti pdf pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-dvi-am uninstall-html-am uninstall-info-am \
+ uninstall-local uninstall-pdf-am uninstall-ps-am
+
+
+# The dependencies of stamp-vti generated by automake are incomplete.
+# So we have to duplicate the entire rule which would otherwise be generated
+# by automake.
+$(srcdir)/stamp-vti: $(info_TEXINFOS) $(libunistring_TEXINFOS) $(top_srcdir)/version.sh
+ (dir=.; test -f ./libunistring.texi || dir=$(srcdir); \
+ set `$(SHELL) $(top_srcdir)/build-aux/mdate-sh $$dir/libunistring.texi`; \
+ echo "@set UPDATED $$1 $$2 $$3"; \
+ echo "@set UPDATED-MONTH $$2 $$3"; \
+ echo "@set EDITION $(VERSION)"; \
+ echo "@set VERSION $(VERSION)") > vti.tmp
+ cmp -s vti.tmp $(srcdir)/version.texi \
+ || (echo "Updating $(srcdir)/version.texi"; \
+ cp vti.tmp $(srcdir)/version.texi)
+ rm -f vti.tmp
+ cp $(srcdir)/version.texi $@
+
+# We distribute only the split HTML documentation.
+# The user can generate the others, via
+# make libunistring.ps
+# make libunistring.pdf
+# make libunistring.html
+
+all-local: html-local
+install-data-local: install-html
+installdirs-local: installdirs-html
+uninstall-local: uninstall-html
+dist-hook: dist-html
+
+html-local: html-split
+# Override of automake's definition. The HTML files we want to distribute are
+# not the ones that automake knows about, and we cannot define HTMLS to a value
+# containing wildcards.
+install-html: install-html-split
+ @:
+uninstall-html: uninstall-html-split
+dist-html: dist-html-split
+
+# The install-dvi target is already defined by automake.
+
+installdirs-dvi:
+ $(mkdir_p) $(DESTDIR)$(dvidir)
+
+uninstall-dvi:
+ $(RM) $(DESTDIR)$(dvidir)/libunistring.dvi
+
+libunistring.ps: libunistring.dvi
+ $(DVIPS) -o $@ `if test -f libunistring.dvi; then echo libunistring.dvi; else echo $(srcdir)/libunistring.dvi; fi`
+
+# The install-ps target is already defined by automake.
+
+installdirs-ps:
+ $(mkdir_p) $(DESTDIR)$(psdir)
+
+uninstall-ps:
+ $(RM) $(DESTDIR)$(psdir)/libunistring.ps
+
+# The install-pdf target is already defined by automake.
+
+installdirs-pdf:
+ $(mkdir_p) $(DESTDIR)$(pdfdir)
+
+uninstall-pdf:
+ $(RM) $(DESTDIR)$(pdfdir)/libunistring.pdf
+
+html-monolithic: libunistring.html
+html-split: libunistring_toc.html
+
+# Override of automake's definition.
+# We want to use texi2html, not makeinfo --html.
+libunistring.html: libunistring.texi version.texi $(libunistring_TEXINFOS)
+ $(TEXI2HTML) $(TEXINCLUDES) -no-sec-nav -no-menu -toc-links -number -monolithic `if test -f libunistring.texi; then echo libunistring.texi; else echo $(srcdir)/libunistring.texi; fi`
+
+libunistring_toc.html: libunistring.texi version.texi $(libunistring_TEXINFOS)
+ case "@PERL@" in \
+ *"/missing perl") \
+ $(TEXI2HTML) $(TEXINCLUDES) -no-sec-nav -no-menu -toc-links -number -split_chapter `if test -f libunistring.texi; then echo libunistring.texi; else echo $(srcdir)/libunistring.texi; fi` || exit 0 ;; \
+ *) $(RM) libunistring_*.html ; \
+ $(TEXI2HTML) $(TEXINCLUDES) -no-sec-nav -no-menu -toc-links -number -split_chapter `if test -f libunistring.texi; then echo libunistring.texi; else echo $(srcdir)/libunistring.texi; fi` ;; \
+ esac \
+ && { mv libunistring/libunistring.html libunistring_toc.html; \
+ mv libunistring/*.html .; \
+ rmdir libunistring; \
+ }
+
+install-html-monolithic: libunistring.html
+ $(mkdir_p) $(DESTDIR)$(htmldir)
+ $(INSTALL_DATA) `if test -f libunistring.html; then echo .; else echo $(srcdir); fi`/libunistring.html $(DESTDIR)$(htmldir)/libunistring.html
+
+install-html-split: libunistring_toc.html
+ $(mkdir_p) $(DESTDIR)$(htmldir)
+ for file in `if test -f libunistring_toc.html; then echo .; else echo $(srcdir); fi`/libunistring_*.html; do \
+ $(INSTALL_DATA) $$file $(DESTDIR)$(htmldir)/`basename $$file`; \
+ done
+
+installdirs-html:
+ $(mkdir_p) $(DESTDIR)$(htmldir)
+
+uninstall-html-monolithic:
+ $(RM) $(DESTDIR)$(htmldir)/libunistring.html
+
+uninstall-html-split:
+ $(RM) $(DESTDIR)$(htmldir)/libunistring_*.html
+
+dist-html-monolithic:
+ $(mkdir_p) $(distdir)/
+ file=libunistring.html; \
+ if test -f $$file; then d=.; else d=$(srcdir); fi; \
+ cp -p $$d/$$file $(distdir)/$$file || exit 1
+
+# We would like to put libunistring_*.html into EXTRA_DIST, but it doesn't work.
+dist-html-split:
+ $(mkdir_p) $(distdir)/
+ file=libunistring_toc.html; \
+ if test -f $$file; then d=.; else d=$(srcdir); fi; \
+ for file in `cd $$d && echo libunistring_*.html`; do \
+ cp -p $$d/$$file $(distdir)/$$file || exit 1; \
+ done
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/fdl.texi b/doc/fdl.texi
new file mode 100644
index 00000000..8805f1a4
--- /dev/null
+++ b/doc/fdl.texi
@@ -0,0 +1,506 @@
+@c The GNU Free Documentation License.
+@center Version 1.3, 3 November 2008
+
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
+@display
+Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+@uref{http://fsf.org/}
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+
+@enumerate 0
+@item
+PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document @dfn{free} in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of ``copyleft'', which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+@item
+APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The ``Document'', below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as ``you''. You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A ``Modified Version'' of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A ``Secondary Section'' is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The ``Invariant Sections'' are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The ``Cover Texts'' are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A ``Transparent'' copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not ``Transparent'' is called ``Opaque''.
+
+Examples of suitable formats for Transparent copies include plain
+@sc{ascii} without markup, Texinfo input format, La@TeX{} input
+format, @acronym{SGML} or @acronym{XML} using a publicly available
+@acronym{DTD}, and standard-conforming simple @acronym{HTML},
+PostScript or @acronym{PDF} designed for human modification. Examples
+of transparent image formats include @acronym{PNG}, @acronym{XCF} and
+@acronym{JPG}. Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, @acronym{SGML} or
+@acronym{XML} for which the @acronym{DTD} and/or processing tools are
+not generally available, and the machine-generated @acronym{HTML},
+PostScript or @acronym{PDF} produced by some word processors for
+output purposes only.
+
+The ``Title Page'' means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, ``Title Page'' means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+The ``publisher'' means any person or entity that distributes copies
+of the Document to the public.
+
+A section ``Entitled XYZ'' means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as ``Acknowledgements'',
+``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title''
+of such a section when you modify the Document means that it remains a
+section ``Entitled XYZ'' according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+@item
+VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+@item
+COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+@item
+MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+@enumerate A
+@item
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document). You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+@item
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
+@item
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+@item
+Preserve all the copyright notices of the Document.
+
+@item
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+@item
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+@item
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+
+@item
+Include an unaltered copy of this License.
+
+@item
+Preserve the section Entitled ``History'', Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled ``History'' in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+@item
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on. These may be placed in the ``History'' section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+@item
+For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+@item
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles. Section numbers
+or the equivalent are not considered part of the section titles.
+
+@item
+Delete any section Entitled ``Endorsements''. Such a section
+may not be included in the Modified Version.
+
+@item
+Do not retitle any existing section to be Entitled ``Endorsements'' or
+to conflict in title with any Invariant Section.
+
+@item
+Preserve any Warranty Disclaimers.
+@end enumerate
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled ``Endorsements'', provided it contains
+nothing but endorsements of your Modified Version by various
+parties---for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+@item
+COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled ``History''
+in the various original documents, forming one section Entitled
+``History''; likewise combine any sections Entitled ``Acknowledgements'',
+and any sections Entitled ``Dedications''. You must delete all
+sections Entitled ``Endorsements.''
+
+@item
+COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+@item
+AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an ``aggregate'' if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+@item
+TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled ``Acknowledgements'',
+``Dedications'', or ``History'', the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+@item
+TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+@item
+FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+@uref{http://www.gnu.org/copyleft/}.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+@item
+RELICENSING
+
+``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works. A
+public wiki that anybody can edit is an example of such a server. A
+``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+
+``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+``Incorporate'' means to publish or republish a Document, in whole or
+in part, as part of another Document.
+
+An MMC is ``eligible for relicensing'' if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+@end enumerate
+
+@page
+@heading ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+@group
+ Copyright (C) @var{year} @var{your name}.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+@end group
+@end smallexample
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the ``with@dots{}Texts.'' line with this:
+
+@smallexample
+@group
+ with the Invariant Sections being @var{list their titles}, with
+ the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
+ being @var{list}.
+@end group
+@end smallexample
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
+
diff --git a/doc/gpl.texi b/doc/gpl.texi
new file mode 100644
index 00000000..97a17e19
--- /dev/null
+++ b/doc/gpl.texi
@@ -0,0 +1,717 @@
+@c The GNU General Public License.
+@center Version 3, 29 June 2007
+
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
+@display
+Copyright @copyright{} 2007 Free Software Foundation, Inc. @url{http://fsf.org/}
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+@end display
+
+@heading Preamble
+
+The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom
+to share and change all versions of a program---to make sure it remains
+free software for all its users. We, the Free Software Foundation,
+use the GNU General Public License for most of our software; it
+applies also to any other work released this way by its authors. You
+can apply it to your programs, too.
+
+When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you
+have certain responsibilities if you distribute copies of the
+software, or if you modify it: responsibilities to respect the freedom
+of others.
+
+For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too,
+receive or can get the source code. And you must show them these
+terms so they know their rights.
+
+Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the
+manufacturer can do so. This is fundamentally incompatible with the
+aim of protecting users' freedom to change the software. The
+systematic pattern of such abuse occurs in the area of products for
+individuals to use, which is precisely where it is most unacceptable.
+Therefore, we have designed this version of the GPL to prohibit the
+practice for those products. If such problems arise substantially in
+other domains, we stand ready to extend this provision to those
+domains in future versions of the GPL, as needed to protect the
+freedom of users.
+
+Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish
+to avoid the special danger that patents applied to a free program
+could make it effectively proprietary. To prevent this, the GPL
+assures that patents cannot be used to render the program non-free.
+
+The precise terms and conditions for copying, distribution and
+modification follow.
+
+@heading TERMS AND CONDITIONS
+
+@enumerate 0
+@item Definitions.
+
+``This License'' refers to version 3 of the GNU General Public License.
+
+``Copyright'' also means copyright-like laws that apply to other kinds
+of works, such as semiconductor masks.
+
+``The Program'' refers to any copyrightable work licensed under this
+License. Each licensee is addressed as ``you''. ``Licensees'' and
+``recipients'' may be individuals or organizations.
+
+To ``modify'' a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of
+an exact copy. The resulting work is called a ``modified version'' of
+the earlier work or a work ``based on'' the earlier work.
+
+A ``covered work'' means either the unmodified Program or a work based
+on the Program.
+
+To ``propagate'' a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+To ``convey'' a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user
+through a computer network, with no transfer of a copy, is not
+conveying.
+
+An interactive user interface displays ``Appropriate Legal Notices'' to
+the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+@item Source Code.
+
+The ``source code'' for a work means the preferred form of the work for
+making modifications to it. ``Object code'' means any non-source form
+of a work.
+
+A ``Standard Interface'' means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+The ``System Libraries'' of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+``Major Component'', in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+The ``Corresponding Source'' for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+The Corresponding Source need not include anything that users can
+regenerate automatically from other parts of the Corresponding Source.
+
+The Corresponding Source for a work in source code form is that same
+work.
+
+@item Basic Permissions.
+
+All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+You may make, run and propagate covered works that you do not convey,
+without conditions so long as your license otherwise remains in force.
+You may convey covered works to others for the sole purpose of having
+them make modifications exclusively for you, or provide you with
+facilities for running those works, provided that you comply with the
+terms of this License in conveying all material for which you do not
+control copyright. Those thus making or running the covered works for
+you must do so exclusively on your behalf, under your direction and
+control, on terms that prohibit them from making any copies of your
+copyrighted material outside their relationship with you.
+
+Conveying under any other circumstances is permitted solely under the
+conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+@item Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such
+circumvention is effected by exercising rights under this License with
+respect to the covered work, and you disclaim any intention to limit
+operation or modification of the work as a means of enforcing, against
+the work's users, your or third parties' legal rights to forbid
+circumvention of technological measures.
+
+@item Conveying Verbatim Copies.
+
+You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+@item Conveying Modified Source Versions.
+
+You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these
+conditions:
+
+@enumerate a
+@item
+The work must carry prominent notices stating that you modified it,
+and giving a relevant date.
+
+@item
+The work must carry prominent notices stating that it is released
+under this License and any conditions added under section 7. This
+requirement modifies the requirement in section 4 to ``keep intact all
+notices''.
+
+@item
+You must license the entire work, as a whole, under this License to
+anyone who comes into possession of a copy. This License will
+therefore apply, along with any applicable section 7 additional terms,
+to the whole of the work, and all its parts, regardless of how they
+are packaged. This License gives no permission to license the work in
+any other way, but it does not invalidate such permission if you have
+separately received it.
+
+@item
+If the work has interactive user interfaces, each must display
+Appropriate Legal Notices; however, if the Program has interactive
+interfaces that do not display Appropriate Legal Notices, your work
+need not make them do so.
+@end enumerate
+
+A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+``aggregate'' if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+@item Conveying Non-Source Forms.
+
+You may convey a covered work in object code form under the terms of
+sections 4 and 5, provided that you also convey the machine-readable
+Corresponding Source under the terms of this License, in one of these
+ways:
+
+@enumerate a
+@item
+Convey the object code in, or embodied in, a physical product
+(including a physical distribution medium), accompanied by the
+Corresponding Source fixed on a durable physical medium customarily
+used for software interchange.
+
+@item
+Convey the object code in, or embodied in, a physical product
+(including a physical distribution medium), accompanied by a written
+offer, valid for at least three years and valid for as long as you
+offer spare parts or customer support for that product model, to give
+anyone who possesses the object code either (1) a copy of the
+Corresponding Source for all the software in the product that is
+covered by this License, on a durable physical medium customarily used
+for software interchange, for a price no more than your reasonable
+cost of physically performing this conveying of source, or (2) access
+to copy the Corresponding Source from a network server at no charge.
+
+@item
+Convey individual copies of the object code with a copy of the written
+offer to provide the Corresponding Source. This alternative is
+allowed only occasionally and noncommercially, and only if you
+received the object code with such an offer, in accord with subsection
+6b.
+
+@item
+Convey the object code by offering access from a designated place
+(gratis or for a charge), and offer equivalent access to the
+Corresponding Source in the same way through the same place at no
+further charge. You need not require recipients to copy the
+Corresponding Source along with the object code. If the place to copy
+the object code is a network server, the Corresponding Source may be
+on a different server (operated by you or a third party) that supports
+equivalent copying facilities, provided you maintain clear directions
+next to the object code saying where to find the Corresponding Source.
+Regardless of what server hosts the Corresponding Source, you remain
+obligated to ensure that it is available for as long as needed to
+satisfy these requirements.
+
+@item
+Convey the object code using peer-to-peer transmission, provided you
+inform other peers where the object code and Corresponding Source of
+the work are being offered to the general public at no charge under
+subsection 6d.
+
+@end enumerate
+
+A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+A ``User Product'' is either (1) a ``consumer product'', which means any
+tangible personal property which is normally used for personal,
+family, or household purposes, or (2) anything designed or sold for
+incorporation into a dwelling. In determining whether a product is a
+consumer product, doubtful cases shall be resolved in favor of
+coverage. For a particular product received by a particular user,
+``normally used'' refers to a typical or common use of that class of
+product, regardless of the status of the particular user or of the way
+in which the particular user actually uses, or expects or is expected
+to use, the product. A product is a consumer product regardless of
+whether the product has substantial commercial, industrial or
+non-consumer uses, unless such uses represent the only significant
+mode of use of the product.
+
+``Installation Information'' for a User Product means any methods,
+procedures, authorization keys, or other information required to
+install and execute modified versions of a covered work in that User
+Product from a modified version of its Corresponding Source. The
+information must suffice to ensure that the continued functioning of
+the modified object code is in no case prevented or interfered with
+solely because modification has been made.
+
+If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or
+updates for a work that has been modified or installed by the
+recipient, or for the User Product in which it has been modified or
+installed. Access to a network may be denied when the modification
+itself materially and adversely affects the operation of the network
+or violates the rules and protocols for communication across the
+network.
+
+Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+@item Additional Terms.
+
+``Additional permissions'' are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders
+of that material) supplement the terms of this License with terms:
+
+@enumerate a
+@item
+Disclaiming warranty or limiting liability differently from the terms
+of sections 15 and 16 of this License; or
+
+@item
+Requiring preservation of specified reasonable legal notices or author
+attributions in that material or in the Appropriate Legal Notices
+displayed by works containing it; or
+
+@item
+Prohibiting misrepresentation of the origin of that material, or
+requiring that modified versions of such material be marked in
+reasonable ways as different from the original version; or
+
+@item
+Limiting the use for publicity purposes of names of licensors or
+authors of the material; or
+
+@item
+Declining to grant rights under trademark law for use of some trade
+names, trademarks, or service marks; or
+
+@item
+Requiring indemnification of licensors and authors of that material by
+anyone who conveys the material (or modified versions of it) with
+contractual assumptions of liability to the recipient, for any
+liability that these contractual assumptions directly impose on those
+licensors and authors.
+@end enumerate
+
+All other non-permissive additional terms are considered ``further
+restrictions'' within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions; the
+above requirements apply either way.
+
+@item Termination.
+
+You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+@item Acceptance Not Required for Having Copies.
+
+You are not required to accept this License in order to receive or run
+a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+@item Automatic Licensing of Downstream Recipients.
+
+Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+An ``entity transaction'' is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+@item Patents.
+
+A ``contributor'' is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's ``contributor version''.
+
+A contributor's ``essential patent claims'' are all patent claims owned
+or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, ``control'' includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+In the following three paragraphs, a ``patent license'' is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To ``grant'' such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. ``Knowingly relying'' means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+A patent license is ``discriminatory'' if it does not include within the
+scope of its coverage, prohibits the exercise of, or is conditioned on
+the non-exercise of one or more of the rights that are specifically
+granted under this License. You may not convey a covered work if you
+are a party to an arrangement with a third party that is in the
+business of distributing software, under which you make payment to the
+third party based on the extent of your activity of conveying the
+work, and under which the third party grants, to any of the parties
+who would receive the covered work from you, a discriminatory patent
+license (a) in connection with copies of the covered work conveyed by
+you (or copies made from those copies), or (b) primarily for and in
+connection with specific products or compilations that contain the
+covered work, unless you entered into that arrangement, or that patent
+license was granted, prior to 28 March 2007.
+
+Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+@item No Surrender of Others' Freedom.
+
+If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey
+a covered work so as to satisfy simultaneously your obligations under
+this License and any other pertinent obligations, then as a
+consequence you may not convey it at all. For example, if you agree
+to terms that obligate you to collect a royalty for further conveying
+from those to whom you convey the Program, the only way you could
+satisfy both those terms and this License would be to refrain entirely
+from conveying the Program.
+
+@item Use with the GNU Affero General Public License.
+
+Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+@item Revised Versions of this License.
+
+The Free Software Foundation may publish revised and/or new versions
+of the GNU General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies that a certain numbered version of the GNU General Public
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that numbered version or
+of any later version published by the Free Software Foundation. If
+the Program does not specify a version number of the GNU General
+Public License, you may choose any version ever published by the Free
+Software Foundation.
+
+If the Program specifies that a proxy can decide which future versions
+of the GNU General Public License can be used, that proxy's public
+statement of acceptance of a version permanently authorizes you to
+choose that version for the Program.
+
+Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+@item Disclaimer of Warranty.
+
+THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT
+WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
+DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
+CORRECTION.
+
+@item Limitation of Liability.
+
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
+CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
+NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
+LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
+TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
+PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+@item Interpretation of Sections 15 and 16.
+
+If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+@end enumerate
+
+@heading END OF TERMS AND CONDITIONS
+
+@heading How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the ``copyright'' line and a pointer to where the full notice is found.
+
+@smallexample
+@var{one line to give the program's name and a brief idea of what it does.}
+Copyright (C) @var{year} @var{name of author}
+
+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 3 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, see @url{http://www.gnu.org/licenses/}.
+@end smallexample
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+@smallexample
+@var{program} Copyright (C) @var{year} @var{name of author}
+This program comes with ABSOLUTELY NO WARRANTY; for details type @samp{show w}.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type @samp{show c} for details.
+@end smallexample
+
+The hypothetical commands @samp{show w} and @samp{show c} should show
+the appropriate parts of the General Public License. Of course, your
+program's commands might be different; for a GUI interface, you would
+use an ``about box''.
+
+You should also get your employer (if you work as a programmer) or school,
+if any, to sign a ``copyright disclaimer'' for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+@url{http://www.gnu.org/licenses/}.
+
+The GNU General Public License does not permit incorporating your
+program into proprietary programs. If your program is a subroutine
+library, you may consider it more useful to permit linking proprietary
+applications with the library. If this is what you want to do, use
+the GNU Lesser General Public License instead of this License. But
+first, please read @url{http://www.gnu.org/philosophy/why-not-lgpl.html}.
diff --git a/doc/lgpl.texi b/doc/lgpl.texi
new file mode 100644
index 00000000..c29a6fb4
--- /dev/null
+++ b/doc/lgpl.texi
@@ -0,0 +1,190 @@
+@c The GNU Lesser General Public License.
+@center Version 3, 29 June 2007
+
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
+@display
+Copyright @copyright{} 2007 Free Software Foundation, Inc. @url{http://fsf.org/}
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+@end display
+
+This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+@enumerate 0
+@item Additional Definitions.
+
+As used herein, ``this License'' refers to version 3 of the GNU Lesser
+General Public License, and the ``GNU GPL'' refers to version 3 of the GNU
+General Public License.
+
+``The Library'' refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+An ``Application'' is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+A ``Combined Work'' is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the ``Linked
+Version''.
+
+The ``Minimal Corresponding Source'' for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+The ``Corresponding Application Code'' for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+@item Exception to Section 3 of the GNU GPL.
+
+You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+@item Conveying Modified Versions.
+
+If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+@enumerate a
+@item
+under this License, provided that you make a good faith effort to
+ensure that, in the event an Application does not supply the
+function or data, the facility still operates, and performs
+whatever part of its purpose remains meaningful, or
+
+@item
+under the GNU GPL, with none of the additional permissions of
+this License applicable to that copy.
+@end enumerate
+
+@item Object Code Incorporating Material from Library Header Files.
+
+The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+@enumerate a
+@item
+Give prominent notice with each copy of the object code that the
+Library is used in it and that the Library and its use are
+covered by this License.
+@item
+Accompany the object code with a copy of the GNU GPL and this license
+document.
+@end enumerate
+
+@item Combined Works.
+
+You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+@enumerate a
+@item
+Give prominent notice with each copy of the Combined Work that
+the Library is used in it and that the Library and its use are
+covered by this License.
+@item
+Accompany the Combined Work with a copy of the GNU GPL and this license
+document.
+@item
+For a Combined Work that displays copyright notices during
+execution, include the copyright notice for the Library among
+these notices, as well as a reference directing the user to the
+copies of the GNU GPL and this license document.
+@item
+Do one of the following:
+
+@enumerate 0
+@item
+Convey the Minimal Corresponding Source under the terms of this
+License, and the Corresponding Application Code in a form
+suitable for, and under terms that permit, the user to
+recombine or relink the Application with a modified version of
+the Linked Version to produce a modified Combined Work, in the
+manner specified by section 6 of the GNU GPL for conveying
+Corresponding Source.
+@item
+Use a suitable shared library mechanism for linking with the
+Library. A suitable mechanism is one that (a) uses at run time
+a copy of the Library already present on the user's computer
+system, and (b) will operate properly with a modified version
+of the Library that is interface-compatible with the Linked
+Version.
+@end enumerate
+
+@item
+Provide Installation Information, but only if you would otherwise
+be required to provide such information under section 6 of the
+GNU GPL, and only to the extent that such information is
+necessary to install and execute a modified version of the
+Combined Work produced by recombining or relinking the
+Application with a modified version of the Linked Version. (If
+you use option 4d0, the Installation Information must accompany
+the Minimal Corresponding Source and Corresponding Application
+Code. If you use option 4d1, you must provide the Installation
+Information in the manner specified by section 6 of the GNU GPL
+for conveying Corresponding Source.)
+@end enumerate
+
+@item Combined Libraries.
+
+You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+@enumerate a
+@item
+Accompany the combined library with a copy of the same work based
+on the Library, uncombined with any other library facilities,
+conveyed under the terms of this License.
+@item
+Give prominent notice with the combined library that part of it
+is a work based on the Library, and explaining where to find the
+accompanying uncombined form of the same work.
+@end enumerate
+
+@item Revised Versions of the GNU Lesser General Public License.
+
+The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License ``or any later version''
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
+
+@end enumerate
diff --git a/doc/libunistring.info b/doc/libunistring.info
new file mode 100644
index 00000000..2fad8fec
--- /dev/null
+++ b/doc/libunistring.info
@@ -0,0 +1,6200 @@
+This is libunistring.info, produced by makeinfo version 4.13 from
+libunistring.texi.
+
+INFO-DIR-SECTION Software development
+START-INFO-DIR-ENTRY
+* GNU libunistring: (libunistring). Unicode string library.
+END-INFO-DIR-ENTRY
+
+ This manual is for GNU libunistring.
+
+
+File: libunistring.info, Node: Top, Next: Introduction, Up: (dir)
+
+GNU libunistring
+****************
+
+* Menu:
+
+* Introduction:: Who may need Unicode strings?
+* Conventions:: Conventions used in this manual
+* unitypes.h:: Elementary types
+* unistr.h:: Elementary Unicode string functions
+* uniconv.h:: Conversions between Unicode and encodings
+* unistdio.h:: Output with Unicode strings
+* uniname.h:: Names of Unicode characters
+* unictype.h:: Unicode character classification and properties
+* uniwidth.h:: Display width
+* uniwbrk.h:: Word breaks in strings
+* unilbrk.h:: Line breaking
+* uninorm.h:: Normalization forms
+* unicase.h:: Case mappings
+* uniregex.h:: Regular expressions
+* Using the library:: How to link with the library and use it?
+* More functionality:: More advanced functionality
+* Licenses:: Licenses
+
+* Index:: General Index
+
+ --- The Detailed Node Listing ---
+
+Introduction
+
+* Unicode:: What is Unicode?
+* Unicode and i18n:: Unicode and internationalization
+* Locale encodings:: What is a locale encoding?
+* In-memory representation:: How to represent strings in memory?
+* char * strings:: What to keep in mind with `char *' strings
+* The wchar_t mess:: Why `wchar_t *' strings are useless
+* Unicode strings:: How are Unicode strings represented?
+
+unistr.h
+
+* Elementary string checks::
+* Elementary string conversions::
+* Elementary string functions::
+* Elementary string functions with memory allocation::
+* Elementary string functions on NUL terminated strings::
+
+unictype.h
+
+* General category::
+* Canonical combining class::
+* Bidirectional category::
+* Decimal digit value::
+* Digit value::
+* Numeric value::
+* Mirrored character::
+* Properties::
+* Scripts::
+* Blocks::
+* ISO C and Java syntax::
+* Classifications like in ISO C::
+
+General category
+
+* Object oriented API::
+* Bit mask API::
+
+Properties
+
+* Properties as objects::
+* Properties as functions::
+
+uniwbrk.h
+
+* Word breaks in a string::
+* Word break property::
+
+uninorm.h
+
+* Decomposition of characters::
+* Composition of characters::
+* Normalization of strings::
+* Normalizing comparisons::
+* Normalization of streams::
+
+unicase,h
+
+* Case mappings of characters::
+* Case mappings of strings::
+* Case mappings of substrings::
+* Case insensitive comparison::
+* Case detection::
+
+Using the library
+
+* Installation::
+* Compiler options::
+* Include files::
+* Autoconf macro::
+* Reporting problems::
+
+Licenses
+
+* GNU GPL:: GNU General Public License
+* GNU LGPL:: GNU Lesser General Public License
+* GNU FDL:: GNU Free Documentation License
+
+
+File: libunistring.info, Node: Introduction, Next: Conventions, Prev: Top, Up: Top
+
+1 Introduction
+**************
+
+ This library provides functions for manipulating Unicode strings and
+for manipulating C strings according to the Unicode standard.
+
+ It consists of the following parts:
+
+`<unistr.h>'
+ elementary string functions
+
+`<uniconv.h>'
+ conversion from/to legacy encodings
+
+`<unistdio.h>'
+ formatted output to strings
+
+`<uniname.h>'
+ character names
+
+`<unictype.h>'
+ character classification and properties
+
+`<uniwidth.h>'
+ string width when using nonproportional fonts
+
+`<uniwbrk.h>'
+ word breaks
+
+`<unilbrk.h>'
+ line breaking algorithm
+
+`<uninorm.h>'
+ normalization (composition and decomposition)
+
+`<unicase.h>'
+ case folding
+
+`<uniregex.h>'
+ regular expressions (not yet implemented)
+
+ libunistring is for you if your application involves non-trivial text
+processing, such as upper/lower case conversions, line breaking,
+operations on words, or more advanced analysis of text. Text provided
+by the user can, in general, contain characters of all kinds of
+scripts. The text processing functions provided by this library handle
+all scripts and all languages.
+
+ libunistring is for you if your application already uses the ISO C /
+POSIX `<ctype.h>', `<wctype.h>' functions and the text it operates on is
+provided by the user and can be in any language.
+
+ libunistring is also for you if your application uses Unicode
+strings as internal in-memory representation.
+
+* Menu:
+
+* Unicode:: What is Unicode?
+* Unicode and i18n:: Unicode and internationalization
+* Locale encodings:: What is a locale encoding?
+* In-memory representation:: How to represent strings in memory?
+* char * strings:: What to keep in mind with `char *' strings
+* The wchar_t mess:: Why `wchar_t *' strings are useless
+* Unicode strings:: How are Unicode strings represented?
+
+
+File: libunistring.info, Node: Unicode, Next: Unicode and i18n, Up: Introduction
+
+1.1 Unicode
+===========
+
+ Unicode is a standardized repertoire of characters that contains
+characters from all scripts of the world, from Latin letters to Chinese
+ideographs and Babylonian cuneiform glyphs. It also specifies how
+these characters are to be rendered on a screen or on paper, and how
+common text processing (word selection, line breaking, uppercasing of
+page titles etc.) is supposed to behave on Unicode text.
+
+ Unicode also specifies three ways of storing sequences of Unicode
+characters in a computer whose basic unit of data is an 8-bit byte:
+UTF-8
+ Every character is represented as 1 to 4 bytes.
+
+UTF-16
+ Every character is represented as 1 to 2 units of 16 bits.
+
+UTF-32, a.k.a. UCS-4
+ Every character is represented as 1 unit of 32 bits.
+
+ For encoding Unicode text in a file, UTF-8 is usually used. For
+encoding Unicode strings in memory for a program, either of the three
+encoding forms can be reasonably used.
+
+ Unicode is widely used on the web. Prior to the use of Unicode, web
+pages were in many different encodings (ISO-8859-1 for English, French,
+Spanish, ISO-8859-2 for Polish, ISO-8859-7 for Greek, KOI8-R for
+Russian, GB2312 or BIG5 for Chinese, ISO-2022-JP-2 or EUC-JP or
+Shift_JIS for Japanese, and many many others). It was next to
+impossible to create a document that contained Chinese and Polish text
+in the same document. Due to the many encodings for Japanese, even the
+processing of pure Japanese text was error prone.
+
+ References:
+ * The Unicode standard: `http://www.unicode.org/'
+
+ * Definition of UTF-8: `http://www.rfc-editor.org/rfc/rfc3629.txt'
+
+ * Definition of UTF-16: `http://www.rfc-editor.org/rfc/rfc2781.txt'
+
+ * Markus Kuhn's UTF-8 and Unicode FAQ:
+ `http://www.cl.cam.ac.uk/~mgk25/unicode.html'
+
+
+File: libunistring.info, Node: Unicode and i18n, Next: Locale encodings, Prev: Unicode, Up: Introduction
+
+1.2 Unicode and Internationalization
+====================================
+
+ Internationalization is the process of changing the source code of a
+program so that it can meet the expectations of users in any culture,
+if culture specific data (translations, images etc.) are provided.
+
+ Use of Unicode is not strictly required for internationalization,
+but it makes internationalization much easier, because operations that
+need to look at specific characters (like hyphenation, spell checking,
+or the automatic conversion of double-quotes to opening and closing
+double-quote characters) don't need to consider multiple possible
+encodings of the text.
+
+ Use of Unicode also enables multilingualization: the ability of
+having text in multiple languages present in the same document or even
+in the same line of text.
+
+ But use of Unicode is not everything. Internationalization usually
+consists of three features:
+ * Use of Unicode where needed for text processing. This is what
+ this library is for.
+
+ * Use of message catalogs for messages shown to the user, This is
+ what GNU gettext is about.
+
+ * Use of locale specific conventions for date and time formats, for
+ numeric formatting, or for sorting of text. This can be done
+ adequately with the POSIX APIs and the implementation of locales
+ in the GNU C library.
+
+
+File: libunistring.info, Node: Locale encodings, Next: In-memory representation, Prev: Unicode and i18n, Up: Introduction
+
+1.3 Locale encodings
+====================
+
+ A locale is a set of cultural conventions. According to POSIX, for
+a program, at any moment, there is one locale being designated as the
+"current locale". (Actually, POSIX supports also one locale per
+thread, but this feature is not yet universally implemented and not
+widely used.) The locale is partitioned into several aspects, called
+the "categories" of the locale. The main various aspects are:
+ * The character encoding and the character properties. This is the
+ `LC_CTYPE' category.
+
+ * The sorting rules for text. This is the `LC_COLLATE' category.
+
+ * The language specific translations of messages. This is the
+ `LC_MESSAGES' category.
+
+ * The formatting rules for numbers, such as the decimal separator.
+ This is the `LC_NUMERIC' category.
+
+ * The formatting rules for amounts of money. This is the
+ `LC_MONETARY' category.
+
+ * The formatting of date and time. This is the `LC_TIME' category.
+
+ In particular, the `LC_CTYPE' category of the current locale
+determines the character encoding. This is the encoding of `char *'
+strings. We also call it the "locale encoding". GNU libunistring has
+a function, `locale_charset', that returns a standardized (platform
+independent) name for this encoding.
+
+ All locale encodings used on glibc systems are essentially ASCII
+compatible: Most graphic ASCII characters have the same representation,
+as a single byte, in that encoding as in ASCII.
+
+ Among the possible locale encodings are UTF-8 and GB18030. Both
+allow to represent any Unicode character as a sequence of bytes. UTF-8
+is used in most of the world, whereas GB18030 is used in the People's
+Republic of China, because it is backward compatible with the GB2312
+encoding that was used in this country earlier.
+
+ The legacy locale encodings, ISO-8859-15 (which supplanted
+ISO-8859-1 in most of Europe), ISO-8859-2, KOI8-R, EUC-JP, etc., are
+still in use in many places, though.
+
+ UTF-16 and UTF-32 are not used as locale encodings, because they are
+not ASCII compatible.
+
+
+File: libunistring.info, Node: In-memory representation, Next: char * strings, Prev: Locale encodings, Up: Introduction
+
+1.4 Choice of in-memory representation of strings
+=================================================
+
+ There are three ways of representing strings in memory of a running
+program.
+ * As `char *' strings. Such strings are represented in locale
+ encoding. This approach is employed when not much text processing
+ is done by the program. When some Unicode aware processing is to
+ be done, a string is converted to Unicode on the fly and back to
+ locale encoding afterwards.
+
+ * As UTF-8 or UTF-16 or UTF-32 strings. This implies that
+ conversion from locale encoding to Unicode is performed on input,
+ and in the opposite direction on output. This approach is
+ employed when the program does a significant amount of text
+ processing, or when the program has multiple threads operating on
+ the same data but in different locales.
+
+ * As `wchar_t *', a.k.a. "wide strings". This approach is misguided,
+ see *note The wchar_t mess::.
+
+
+File: libunistring.info, Node: char * strings, Next: The wchar_t mess, Prev: In-memory representation, Up: Introduction
+
+1.5 `char *' strings
+====================
+
+ The classical C strings, with its C library support standardized by
+ISO C and POSIX, can be used in internationalized programs with some
+precautions. The problem with this API is that many of the C library
+functions for strings don't work correctly on strings in locale
+encodings, leading to bugs that only people in some cultures of the
+world will experience.
+
+ The first problem with the C library API is the support of multibyte
+locales. According to the locale encoding, in general, every character
+is represented by one or more bytes (up to 4 bytes in practice -- but
+use `MB_LEN_MAX' instead of the number 4 in the code). When every
+character is represented by only 1 byte, we speak of an "unibyte
+locale", otherwise of a "multibyte locale". It is important to realize
+that the majority of Unix installations nowadays use UTF-8 or GB18030
+as locale encoding; therefore, the majority of users are using
+multibyte locales.
+
+ The important fact to remember is: _A `char' is a byte, not a
+character._
+
+ As a consequence:
+ * The `<ctype.h>' API is useless in this context; it does not work in
+ multibyte locales.
+
+ * The `strlen' function does not return the number of characters in
+ a string. Nor does it return the number of screen columns occupied
+ by a string after it is output. It merely returns the number of
+ _bytes_ occupied by a string.
+
+ * Truncating a string, for example, with `strncpy', can have the
+ effect of truncating it in the middle of a multibyte character.
+ Such a string will, when output, have a garbled character at its
+ end, often represented by a hollow box.
+
+ * `strchr' and `strrchr' do not work with multibyte strings if the
+ locale encoding is GB18030 and the character to be searched is a
+ digit.
+
+ * `strstr' does not work with multibyte strings if the locale
+ encoding is different from UTF-8.
+
+ * `strcspn', `strpbrk', `strspn' cannot work correctly in multibyte
+ locales: they assume the second argument is a list of single-byte
+ characters. Even in this simple case, they do not work with
+ multibyte strings if the locale encoding is GB18030 and one of the
+ characters to be searched is a digit.
+
+ * `strsep' and `strtok_r' do not work with multibyte strings unless
+ all of the delimiter characters are ASCII characters < 0x30.
+
+ * The `strcasecmp', `strncasecmp', and `strcasestr' functions do not
+ work with multibyte strings.
+
+ The workarounds can be found in GNU gnulib
+`http://www.gnu.org/software/gnulib/'.
+ * gnulib has modules `mbchar', `mbiter', `mbuiter' that represent
+ multibyte characters and allow to iterate across a multibyte
+ string with the same ease as through a unibyte string.
+
+ * gnulib has functions `mbslen' and `mbswidth' that can be used
+ instead of `strlen' when the number of characters or the number of
+ screen columns of a string is requested.
+
+ * gnulib has functions `mbschr' and `mbsrrchr' that are like
+ `strchr' and `strrchr', but work in multibyte locales.
+
+ * gnulib has a function `mbsstr', like `strstr', but works in
+ multibyte locales.
+
+ * gnulib has functions `mbscspn', `mbspbrk', `mbsspn' that are like
+ `strcspn', `strpbrk', `strspn', but work in multibyte locales.
+
+ * gnulib has functions `mbssep' and `mbstok_r' that are like
+ `strsep' and `strtok_r' but work in multibyte locales.
+
+ * gnulib has functions `mbscasecmp', `mbsncasecmp', `mbspcasecmp',
+ and `mbscasestr' that are like `strcasecmp', `strncasecmp', and
+ `strcasestr', but work in multibyte locales. Still, the function
+ `ulc_casecmp' is preferable to these functions; see below.
+
+ The second problem with the C library API is that it has some
+assumptions built-in that are not valid in some languages:
+ * It assumes that there are only two forms of every character:
+ uppercase and lowercase. This is not true for Croatian, where the
+ character LETTER DZ WITH CARON comes in three forms: LATIN CAPITAL
+ LETTER DZ WITH CARON (DZ), LATIN CAPITAL LETTER D WITH SMALL
+ LETTER Z WITH CARON (Dz), LATIN SMALL LETTER DZ WITH CARON (dz).
+
+ * It assumes that uppercasing of 1 character leads to 1 character.
+ This is not true for German, where the LATIN SMALL LETTER SHARP S,
+ when uppercased, becomes `SS'.
+
+ * It assumes that there is 1:1 mapping between uppercase and
+ lowercase forms. This is not true for the Greek sigma: GREEK
+ CAPITAL LETTER SIGMA is the uppercase of both GREEK SMALL LETTER
+ SIGMA and GREEK SMALL LETTER FINAL SIGMA.
+
+ * It assumes that the upper/lowercase mappings are position
+ independent. This is not true for the Greek sigma and the
+ Lithuanian i.
+
+ The correct way to deal with this problem is
+ 1. to provide functions for titlecasing, as well as for upper- and
+ lowercasing,
+
+ 2. to view case transformations as functions that operates on strings,
+ rather than on characters.
+
+ This is implemented in this library, through the functions declared
+in `<unicase.h>', see *note unicase.h::.
+
+
+File: libunistring.info, Node: The wchar_t mess, Next: Unicode strings, Prev: char * strings, Up: Introduction
+
+1.6 The `wchar_t' mess
+======================
+
+ The ISO C and POSIX standard creators made an attempt to fix the
+first problem mentioned in the previous section. They introduced
+ * a type `wchar_t', designed to encapsulate an entire character,
+
+ * a "wide string" type `wchar_t *', and
+
+ * functions declared in `<wctype.h>' that were meant to supplant the
+ ones in `<ctype.h>'.
+
+ Unfortunately, this API and its implementation has numerous problems:
+
+ * On AIX and Windows platforms, `wchar_t' is a 16-bit type. This
+ means that it can never accommodate an entire Unicode character.
+ Either the `wchar_t *' strings are limited to characters in UCS-2
+ (the "Basic Multilingual Plane" of Unicode), or -- if `wchar_t *'
+ strings are encoded in UTF-16 -- a `wchar_t' represents only half
+ of a character in the worst case, making the `<wctype.h>' functions
+ pointless.
+
+ * On Solaris and FreeBSD, the `wchar_t' encoding is locale dependent
+ and undocumented. This means, if you want to know any property of
+ a `wchar_t' character, other than the properties defined by
+ `<wctype.h>' -- such as whether it's a dash, currency symbol,
+ paragraph separator, or similar --, you have to convert it to
+ `char *' encoding first, by use of the function `wctomb'.
+
+ * When you read a stream of wide characters, through the functions
+ `fgetwc' and `fgetws', and when the input stream/file is not in
+ the expected encoding, you have no way to determine the invalid
+ byte sequence and do some corrective action. If you use these
+ functions, your program becomes "garbage in - more garbage out" or
+ "garbage in - abort".
+
+ As a consequence, it is better to use multibyte strings, as
+explained in the previous section. Such multibyte strings can bypass
+limitations of the `wchar_t' type, if you use functions defined in
+gnulib and libunistring for text processing. They can also faithfully
+transport malformed characters that were present in the input, without
+requiring the program to produce garbage or abort.
+
+
+File: libunistring.info, Node: Unicode strings, Prev: The wchar_t mess, Up: Introduction
+
+1.7 Unicode strings
+===================
+
+ libunistring supports Unicode strings in three representations:
+ * UTF-8 strings, through the type `uint8_t *'. The units are bytes
+ (`uint8_t').
+
+ * UTF-16 strings, through the type `uint16_t *', The units are
+ 16-bit memory words (`uint16_t').
+
+ * UTF-32 strings, through the type `uint32_t *'. The units are
+ 32-bit memory words (`uint32_t').
+
+ As with C strings, there are two variants:
+ * Unicode strings with a terminating NUL character are represented as
+ a pointer to the first unit of the string. There is a unit
+ containing a 0 value at the end. It is considered part of the
+ string for all memory allocation purposes, but is not considered
+ part of the string for all other logical purposes.
+
+ * Unicode strings where embedded NUL characters are allowed. These
+ are represented by a pointer to the first unit and the number of
+ units (not bytes!) of the string. In this setting, there is no
+ trailing zero-valued unit used as "end marker".
+
+
+File: libunistring.info, Node: Conventions, Next: unitypes.h, Prev: Introduction, Up: Top
+
+2 Conventions
+*************
+
+ This chapter explains conventions valid throughout the libunistring
+library.
+
+ Variables of type `char *' denote C strings in locale encoding. See
+*note Locale encodings::.
+
+ Variables of type `uint8_t *' denote UTF-8 strings. Their units are
+bytes.
+
+ Variables of type `uint16_t *' denote UTF-16 strings, without byte
+order mark. Their units are 2-byte words.
+
+ Variables of type `uint32_t *' denote UTF-32 strings, without byte
+order mark. Their units are 4-byte words.
+
+ Argument pairs `(S, N)' denote a string `S[0..N-1]' with exactly N
+units.
+
+ All functions with prefix `ulc_' operate on C strings in locale
+encoding.
+
+ All functions with prefix `u8_' operate on UTF-8 strings.
+
+ All functions with prefix `u16_' operate on UTF-16 strings.
+
+ All functions with prefix `u32_' operate on UTF-32 strings.
+
+ For every function with prefix `u8_', operating on UTF-8 strings,
+there is also a corresponding function with prefix `u16_', operating on
+UTF-16 strings, and a corresponding function with prefix `u32_',
+operating on UTF-32 strings. Their description is analogous; in this
+documentation we describe only the function that operates on UTF-8
+strings, for brevity.
+
+ A declaration with a variable N denotes the three concrete
+declarations with N = 8, N = 16, N = 32.
+
+ All parameters starting with `str' and the parameters of functions
+starting with `u8_str'/`u16_str'/`u32_str' denote a NUL terminated
+string.
+
+ Error values are always returned through the `errno' variable,
+usually with a return value that indicates the presence of an error
+(NULL for functions that return an pointer, or -1 for functions that
+return an `int').
+
+ Functions returning a string result take a `(RESULTBUF, LENGTHP)'
+argument pair. If RESULTBUF is not NULL and the result fits into
+`*LENGTHP' units, it is put in RESULTBUF, and RESULTBUF is returned.
+Otherwise, a freshly allocated string is returned. In both cases,
+`*LENGTHP' is set to the length (number of units) of the returned
+string. In case of error, NULL is returned and `errno' is set.
+
+
+File: libunistring.info, Node: unitypes.h, Next: unistr.h, Prev: Conventions, Up: Top
+
+3 Elementary types `<unitypes.h>'
+*********************************
+
+ The include file `<unitypes.h>' provides the following basic types.
+
+ -- Type: uint8_t
+ -- Type: uint16_t
+ -- Type: uint32_t
+ These are the storage units of UTF-8/16/32 strings, respectively.
+ The definitions are taken from `<stdint.h>', on platforms where
+ this include file is present.
+
+ -- Type: ucs4_t
+ This type represents a single Unicode character, outside of an
+ UTF-32 string.
+
+
+File: libunistring.info, Node: unistr.h, Next: uniconv.h, Prev: unitypes.h, Up: Top
+
+4 Elementary Unicode string functions `<unistr.h>'
+**************************************************
+
+ This include file declares elementary functions for Unicode strings.
+It is essentially the equivalent of what `<string.h>' is for C strings.
+
+* Menu:
+
+* Elementary string checks::
+* Elementary string conversions::
+* Elementary string functions::
+* Elementary string functions with memory allocation::
+* Elementary string functions on NUL terminated strings::
+
+
+File: libunistring.info, Node: Elementary string checks, Next: Elementary string conversions, Up: unistr.h
+
+4.1 Elementary string checks
+============================
+
+ The following function is available to verify the integrity of a
+Unicode string.
+
+ -- Function: const uint8_t * u8_check (const uint8_t *S, size_t N)
+ -- Function: const uint16_t * u16_check (const uint16_t *S, size_t N)
+ -- Function: const uint32_t * u32_check (const uint32_t *S, size_t N)
+ This function checks whether a Unicode string is well-formed. It
+ returns NULL if valid, or a pointer to the first invalid unit
+ otherwise.
+
+
+File: libunistring.info, Node: Elementary string conversions, Next: Elementary string functions, Prev: Elementary string checks, Up: unistr.h
+
+4.2 Elementary string conversions
+=================================
+
+ The following functions perform conversions between the different
+forms of Unicode strings.
+
+ -- Function: uint16_t * u8_to_u16 (const uint8_t *S, size_t N,
+ uint16_t *RESULTBUF, size_t *LENGTHP)
+ Converts an UTF-8 string to an UTF-16 string.
+
+ -- Function: uint32_t * u8_to_u32 (const uint8_t *S, size_t N,
+ uint32_t *RESULTBUF, size_t *LENGTHP)
+ Converts an UTF-8 string to an UTF-32 string.
+
+ -- Function: uint8_t * u16_to_u8 (const uint16_t *S, size_t N, uint8_t
+ *RESULTBUF, size_t *LENGTHP)
+ Converts an UTF-16 string to an UTF-8 string.
+
+ -- Function: uint32_t * u16_to_u32 (const uint16_t *S, size_t N,
+ uint32_t *RESULTBUF, size_t *LENGTHP)
+ Converts an UTF-16 string to an UTF-32 string.
+
+ -- Function: uint8_t * u32_to_u8 (const uint32_t *S, size_t N, uint8_t
+ *RESULTBUF, size_t *LENGTHP)
+ Converts an UTF-32 string to an UTF-8 string.
+
+ -- Function: uint16_t * u32_to_u16 (const uint32_t *S, size_t N,
+ uint16_t *RESULTBUF, size_t *LENGTHP)
+ Converts an UTF-32 string to an UTF-16 string.
+
+
+File: libunistring.info, Node: Elementary string functions, Next: Elementary string functions with memory allocation, Prev: Elementary string conversions, Up: unistr.h
+
+4.3 Elementary string functions
+===============================
+
+ The following functions inspect and return details about the first
+character in a Unicode string.
+
+ -- Function: int u8_mblen (const uint8_t *S, size_t N)
+ -- Function: int u16_mblen (const uint16_t *S, size_t N)
+ -- Function: int u32_mblen (const uint32_t *S, size_t N)
+ Returns the length (number of units) of the first character in S,
+ which is no longer than N. Returns 0 if it is the NUL character.
+ Returns -1 upon failure.
+
+ This function is similar to `mblen', except that it operates on a
+ Unicode string and that S must not be NULL.
+
+ -- Function: int u8_mbtouc_unsafe (ucs4_t *PUC, const uint8_t *S,
+ size_t N)
+ -- Function: int u16_mbtouc_unsafe (ucs4_t *PUC, const uint16_t *S,
+ size_t N)
+ -- Function: int u32_mbtouc_unsafe (ucs4_t *PUC, const uint32_t *S,
+ size_t N)
+ Returns the length (number of units) of the first character in S,
+ putting its `ucs4_t' representation in `*PUC'. Upon failure,
+ `*PUC' is set to `0xfffd', and an appropriate number of units is
+ returned.
+
+ The number of available units, N, must be > 0.
+
+ This function is similar to `mbtowc', except that it operates on a
+ Unicode string, PUC and S must not be NULL, N must be > 0, and the
+ NUL character is not treated specially.
+
+ -- Function: int u8_mbtouc (ucs4_t *PUC, const uint8_t *S, size_t N)
+ -- Function: int u16_mbtouc (ucs4_t *PUC, const uint16_t *S, size_t N)
+ -- Function: int u32_mbtouc (ucs4_t *PUC, const uint32_t *S, size_t N)
+ This function is like `u8_mbtouc_unsafe', except that it will
+ detect an invalid UTF-8 character, even if the library is compiled
+ without `--enable-safety'.
+
+ -- Function: int u8_mbtoucr (ucs4_t *PUC, const uint8_t *S, size_t N)
+ -- Function: int u16_mbtoucr (ucs4_t *PUC, const uint16_t *S, size_t N)
+ -- Function: int u32_mbtoucr (ucs4_t *PUC, const uint32_t *S, size_t N)
+ Returns the length (number of units) of the first character in S,
+ putting its `ucs4_t' representation in `*PUC'. Upon failure,
+ `*PUC' is set to `0xfffd', and -1 is returned for an invalid
+ sequence of units, -2 is returned for an incomplete sequence of
+ units.
+
+ The number of available units, N, must be > 0.
+
+ This function is similar to `u8_mbtouc', except that the return
+ value gives more details about the failure, similar to `mbrtowc'.
+
+ The following function stores a Unicode character as a Unicode
+string in memory.
+
+ -- Function: int u8_uctomb (uint8_t *S, ucs4_t UC, int N)
+ -- Function: int u16_uctomb (uint16_t *S, ucs4_t UC, int N)
+ -- Function: int u32_uctomb (uint32_t *S, ucs4_t UC, int N)
+ Puts the multibyte character represented by UC in S, returning its
+ length. Returns -1 upon failure, -2 if the number of available
+ units, N, is too small. The latter case cannot occur if N >=
+ 6/2/1, respectively.
+
+ This function is similar to `wctomb', except that it operates on a
+ Unicode strings, S must not be NULL, and the argument N must be
+ specified.
+
+ The following functions copy Unicode strings in memory.
+
+ -- Function: uint8_t * u8_cpy (uint8_t *DEST, const uint8_t *SRC,
+ size_t N)
+ -- Function: uint16_t * u16_cpy (uint16_t *DEST, const uint16_t *SRC,
+ size_t N)
+ -- Function: uint32_t * u32_cpy (uint32_t *DEST, const uint32_t *SRC,
+ size_t N)
+ Copies N units from SRC to DEST.
+
+ This function is similar to `memcpy', except that it operates on
+ Unicode strings.
+
+ -- Function: uint8_t * u8_move (uint8_t *DEST, const uint8_t *SRC,
+ size_t N)
+ -- Function: uint16_t * u16_move (uint16_t *DEST, const uint16_t *SRC,
+ size_t N)
+ -- Function: uint32_t * u32_move (uint32_t *DEST, const uint32_t *SRC,
+ size_t N)
+ Copies N units from SRC to DEST, guaranteeing correct behavior for
+ overlapping memory areas.
+
+ This function is similar to `memmove', except that it operates on
+ Unicode strings.
+
+ The following function fills a Unicode string.
+
+ -- Function: uint8_t * u8_set (uint8_t *S, ucs4_t UC, size_t N)
+ -- Function: uint16_t * u16_set (uint16_t *S, ucs4_t UC, size_t N)
+ -- Function: uint32_t * u32_set (uint32_t *S, ucs4_t UC, size_t N)
+ Sets the first N characters of S to UC. UC should be a character
+ that occupies only 1 unit.
+
+ This function is similar to `memset', except that it operates on
+ Unicode strings.
+
+ The following function compares two Unicode strings of the same
+length.
+
+ -- Function: int u8_cmp (const uint8_t *S1, const uint8_t *S2, size_t
+ N)
+ -- Function: int u16_cmp (const uint16_t *S1, const uint16_t *S2,
+ size_t N)
+ -- Function: int u32_cmp (const uint32_t *S1, const uint32_t *S2,
+ size_t N)
+ Compares S1 and S2, each of length N, lexicographically. Returns
+ a negative value if S1 compares smaller than S2, a positive value
+ if S1 compares larger than S2, or 0 if they compare equal.
+
+ This function is similar to `memcmp', except that it operates on
+ Unicode strings.
+
+ The following function compares two Unicode strings of possibly
+different lengths.
+
+ -- Function: int u8_cmp2 (const uint8_t *S1, size_t N1, const uint8_t
+ *S2, size_t N2)
+ -- Function: int u16_cmp2 (const uint16_t *S1, size_t N1, const
+ uint16_t *S2, size_t N2)
+ -- Function: int u32_cmp2 (const uint32_t *S1, size_t N1, const
+ uint32_t *S2, size_t N2)
+ Compares S1 and S2, lexicographically. Returns a negative value
+ if S1 compares smaller than S2, a positive value if S1 compares
+ larger than S2, or 0 if they compare equal.
+
+ This function is similar to the gnulib function `memcmp2', except
+ that it operates on Unicode strings.
+
+ The following function searches for a given Unicode character.
+
+ -- Function: uint8_t * u8_chr (const uint8_t *S, size_t N, ucs4_t UC)
+ -- Function: uint16_t * u16_chr (const uint16_t *S, size_t N, ucs4_t
+ UC)
+ -- Function: uint32_t * u32_chr (const uint32_t *S, size_t N, ucs4_t
+ UC)
+ Searches the string at S for UC. Returns a pointer to the first
+ occurrence of UC in S, or NULL if UC does not occur in S.
+
+ This function is similar to `memchr', except that it operates on
+ Unicode strings.
+
+ The following function counts the number of Unicode characters.
+
+ -- Function: size_t u8_mbsnlen (const uint8_t *S, size_t N)
+ -- Function: size_t u16_mbsnlen (const uint16_t *S, size_t N)
+ -- Function: size_t u32_mbsnlen (const uint32_t *S, size_t N)
+ Counts and returns the number of Unicode characters in the N units
+ from S.
+
+ This function is similar to the gnulib function `mbsnlen', except
+ that it operates on Unicode strings.
+
+
+File: libunistring.info, Node: Elementary string functions with memory allocation, Next: Elementary string functions on NUL terminated strings, Prev: Elementary string functions, Up: unistr.h
+
+4.4 Elementary string functions with memory allocation
+======================================================
+
+ The following function copies a Unicode string.
+
+ -- Function: uint8_t * u8_cpy_alloc (const uint8_t *S, size_t N)
+ -- Function: uint16_t * u16_cpy_alloc (const uint16_t *S, size_t N)
+ -- Function: uint32_t * u32_cpy_alloc (const uint32_t *S, size_t N)
+ Makes a freshly allocated copy of S, of length N.
+
+
+File: libunistring.info, Node: Elementary string functions on NUL terminated strings, Prev: Elementary string functions with memory allocation, Up: unistr.h
+
+4.5 Elementary string functions on NUL terminated strings
+=========================================================
+
+ The following functions inspect and return details about the first
+character in a Unicode string.
+
+ -- Function: int u8_strmblen (const uint8_t *S)
+ -- Function: int u16_strmblen (const uint16_t *S)
+ -- Function: int u32_strmblen (const uint32_t *S)
+ Returns the length (number of units) of the first character in S.
+ Returns 0 if it is the NUL character. Returns -1 upon failure.
+
+ -- Function: int u8_strmbtouc (ucs4_t *PUC, const uint8_t *S)
+ -- Function: int u16_strmbtouc (ucs4_t *PUC, const uint16_t *S)
+ -- Function: int u32_strmbtouc (ucs4_t *PUC, const uint32_t *S)
+ Returns the length (number of units) of the first character in S,
+ putting its `ucs4_t' representation in `*PUC'. Returns 0 if it is
+ the NUL character. Returns -1 upon failure.
+
+ -- Function: const uint8_t * u8_next (ucs4_t *PUC, const uint8_t *S)
+ -- Function: const uint16_t * u16_next (ucs4_t *PUC, const uint16_t *S)
+ -- Function: const uint32_t * u32_next (ucs4_t *PUC, const uint32_t *S)
+ Forward iteration step. Advances the pointer past the next
+ character, or returns NULL if the end of the string has been
+ reached. Puts the character's `ucs4_t' representation in `*PUC'.
+
+ The following function inspects and returns details about the
+previous character in a Unicode string.
+
+ -- Function: const uint8_t * u8_prev (ucs4_t *PUC, const uint8_t *S,
+ const uint8_t *START)
+ -- Function: const uint16_t * u16_prev (ucs4_t *PUC, const uint16_t
+ *S, const uint16_t *START)
+ -- Function: const uint32_t * u32_prev (ucs4_t *PUC, const uint32_t
+ *S, const uint32_t *START)
+ Backward iteration step. Advances the pointer to point to the
+ previous character, or returns NULL if the beginning of the string
+ had been reached. Puts the character's `ucs4_t' representation in
+ `*PUC'.
+
+ The following functions determine the length of a Unicode string.
+
+ -- Function: size_t u8_strlen (const uint8_t *S)
+ -- Function: size_t u16_strlen (const uint16_t *S)
+ -- Function: size_t u32_strlen (const uint32_t *S)
+ Returns the number of units in S.
+
+ This function is similar to `strlen' and `wcslen', except that it
+ operates on Unicode strings.
+
+ -- Function: size_t u8_strnlen (const uint8_t *S, size_t MAXLEN)
+ -- Function: size_t u16_strnlen (const uint16_t *S, size_t MAXLEN)
+ -- Function: size_t u32_strnlen (const uint32_t *S, size_t MAXLEN)
+ Returns the number of units in S, but at most MAXLEN.
+
+ This function is similar to `strnlen' and `wcsnlen', except that
+ it operates on Unicode strings.
+
+ The following functions copy portions of Unicode strings in memory.
+
+ -- Function: uint8_t * u8_strcpy (uint8_t *DEST, const uint8_t *SRC)
+ -- Function: uint16_t * u16_strcpy (uint16_t *DEST, const uint16_t
+ *SRC)
+ -- Function: uint32_t * u32_strcpy (uint32_t *DEST, const uint32_t
+ *SRC)
+ Copies SRC to DEST.
+
+ This function is similar to `strcpy' and `wcscpy', except that it
+ operates on Unicode strings.
+
+ -- Function: uint8_t * u8_stpcpy (uint8_t *DEST, const uint8_t *SRC)
+ -- Function: uint16_t * u16_stpcpy (uint16_t *DEST, const uint16_t
+ *SRC)
+ -- Function: uint32_t * u32_stpcpy (uint32_t *DEST, const uint32_t
+ *SRC)
+ Copies SRC to DEST, returning the address of the terminating NUL
+ in DEST.
+
+ This function is similar to `stpcpy', except that it operates on
+ Unicode strings.
+
+ -- Function: uint8_t * u8_strncpy (uint8_t *DEST, const uint8_t *SRC,
+ size_t N)
+ -- Function: uint16_t * u16_strncpy (uint16_t *DEST, const uint16_t
+ *SRC, size_t N)
+ -- Function: uint32_t * u32_strncpy (uint32_t *DEST, const uint32_t
+ *SRC, size_t N)
+ Copies no more than N units of SRC to DEST.
+
+ This function is similar to `strncpy' and `wcsncpy', except that
+ it operates on Unicode strings.
+
+ -- Function: uint8_t * u8_stpncpy (uint8_t *DEST, const uint8_t *SRC,
+ size_t N)
+ -- Function: uint16_t * u16_stpncpy (uint16_t *DEST, const uint16_t
+ *SRC, size_t N)
+ -- Function: uint32_t * u32_stpncpy (uint32_t *DEST, const uint32_t
+ *SRC, size_t N)
+ Copies no more than N units of SRC to DEST, returning the address
+ of the last unit written into DEST.
+
+ This function is similar to `stpncpy', except that it operates on
+ Unicode strings.
+
+ -- Function: uint8_t * u8_strcat (uint8_t *DEST, const uint8_t *SRC)
+ -- Function: uint16_t * u16_strcat (uint16_t *DEST, const uint16_t
+ *SRC)
+ -- Function: uint32_t * u32_strcat (uint32_t *DEST, const uint32_t
+ *SRC)
+ Appends SRC onto DEST.
+
+ This function is similar to `strcat' and `wcscat', except that it
+ operates on Unicode strings.
+
+ -- Function: uint8_t * u8_strncat (uint8_t *DEST, const uint8_t *SRC,
+ size_t N)
+ -- Function: uint16_t * u16_strncat (uint16_t *DEST, const uint16_t
+ *SRC, size_t N)
+ -- Function: uint32_t * u32_strncat (uint32_t *DEST, const uint32_t
+ *SRC, size_t N)
+ Appends no more than N units of SRC onto DEST.
+
+ This function is similar to `strncat' and `wcsncat', except that
+ it operates on Unicode strings.
+
+ The following functions compare two Unicode strings.
+
+ -- Function: int u8_strcmp (const uint8_t *S1, const uint8_t *S2)
+ -- Function: int u16_strcmp (const uint16_t *S1, const uint16_t *S2)
+ -- Function: int u32_strcmp (const uint32_t *S1, const uint32_t *S2)
+ Compares S1 and S2, lexicographically. Returns a negative value
+ if S1 compares smaller than S2, a positive value if S1 compares
+ larger than S2, or 0 if they compare equal.
+
+ This function is similar to `strcmp' and `wcscmp', except that it
+ operates on Unicode strings.
+
+ -- Function: int u8_strcoll (const uint8_t *S1, const uint8_t *S2)
+ -- Function: int u16_strcoll (const uint16_t *S1, const uint16_t *S2)
+ -- Function: int u32_strcoll (const uint32_t *S1, const uint32_t *S2)
+ Compares S1 and S2 using the collation rules of the current locale.
+ Returns -1 if S1 < S2, 0 if S1 = S2, 1 if S1 > S2. Upon failure,
+ sets `errno' and returns any value.
+
+ This function is similar to `strcoll' and `wcscoll', except that
+ it operates on Unicode strings.
+
+ Note that this function may consider different canonical
+ normalizations of the same string as having a large distance. It
+ is therefore better to use the function `u8_normcoll' instead of
+ this one; see *note uninorm.h::.
+
+ -- Function: int u8_strncmp (const uint8_t *S1, const uint8_t *S2,
+ size_t N)
+ -- Function: int u16_strncmp (const uint16_t *S1, const uint16_t *S2,
+ size_t N)
+ -- Function: int u32_strncmp (const uint32_t *S1, const uint32_t *S2,
+ size_t N)
+ Compares no more than N units of S1 and S2.
+
+ This function is similar to `strncmp' and `wcsncmp', except that
+ it operates on Unicode strings.
+
+ The following function allocates a duplicate of a Unicode string.
+
+ -- Function: uint8_t * u8_strdup (const uint8_t *S)
+ -- Function: uint16_t * u16_strdup (const uint16_t *S)
+ -- Function: uint32_t * u32_strdup (const uint32_t *S)
+ Duplicates S, returning an identical malloc'd string.
+
+ This function is similar to `strdup' and `wcsdup', except that it
+ operates on Unicode strings.
+
+ The following functions search for a given Unicode character.
+
+ -- Function: uint8_t * u8_strchr (const uint8_t *STR, ucs4_t UC)
+ -- Function: uint16_t * u16_strchr (const uint16_t *STR, ucs4_t UC)
+ -- Function: uint32_t * u32_strchr (const uint32_t *STR, ucs4_t UC)
+ Finds the first occurrence of UC in STR.
+
+ This function is similar to `strchr' and `wcschr', except that it
+ operates on Unicode strings.
+
+ -- Function: uint8_t * u8_strrchr (const uint8_t *STR, ucs4_t UC)
+ -- Function: uint16_t * u16_strrchr (const uint16_t *STR, ucs4_t UC)
+ -- Function: uint32_t * u32_strrchr (const uint32_t *STR, ucs4_t UC)
+ Finds the last occurrence of UC in STR.
+
+ This function is similar to `strrchr' and `wcsrchr', except that
+ it operates on Unicode strings.
+
+ The following functions search for the first occurrence of some
+Unicode character in or outside a given set of Unicode characters.
+
+ -- Function: size_t u8_strcspn (const uint8_t *STR, const uint8_t
+ *REJECT)
+ -- Function: size_t u16_strcspn (const uint16_t *STR, const uint16_t
+ *REJECT)
+ -- Function: size_t u32_strcspn (const uint32_t *STR, const uint32_t
+ *REJECT)
+ Returns the length of the initial segment of STR which consists
+ entirely of Unicode characters not in REJECT.
+
+ This function is similar to `strcspn' and `wcscspn', except that
+ it operates on Unicode strings.
+
+ -- Function: size_t u8_strspn (const uint8_t *STR, const uint8_t
+ *ACCEPT)
+ -- Function: size_t u16_strspn (const uint16_t *STR, const uint16_t
+ *ACCEPT)
+ -- Function: size_t u32_strspn (const uint32_t *STR, const uint32_t
+ *ACCEPT)
+ Returns the length of the initial segment of STR which consists
+ entirely of Unicode characters in ACCEPT.
+
+ This function is similar to `strspn' and `wcsspn', except that it
+ operates on Unicode strings.
+
+ -- Function: uint8_t * u8_strpbrk (const uint8_t *STR, const uint8_t
+ *ACCEPT)
+ -- Function: uint16_t * u16_strpbrk (const uint16_t *STR, const
+ uint16_t *ACCEPT)
+ -- Function: uint32_t * u32_strpbrk (const uint32_t *STR, const
+ uint32_t *ACCEPT)
+ Finds the first occurrence in STR of any character in ACCEPT.
+
+ This function is similar to `strpbrk' and `wcspbrk', except that
+ it operates on Unicode strings.
+
+ The following functions search whether a given Unicode string is a
+substring of another Unicode string.
+
+ -- Function: uint8_t * u8_strstr (const uint8_t *HAYSTACK, const
+ uint8_t *NEEDLE)
+ -- Function: uint16_t * u16_strstr (const uint16_t *HAYSTACK, const
+ uint16_t *NEEDLE)
+ -- Function: uint32_t * u32_strstr (const uint32_t *HAYSTACK, const
+ uint32_t *NEEDLE)
+ Finds the first occurrence of NEEDLE in HAYSTACK.
+
+ This function is similar to `strstr' and `wcsstr', except that it
+ operates on Unicode strings.
+
+ -- Function: bool u8_startswith (const uint8_t *STR, const uint8_t
+ *PREFIX)
+ -- Function: bool u16_startswith (const uint16_t *STR, const uint16_t
+ *PREFIX)
+ -- Function: bool u32_startswith (const uint32_t *STR, const uint32_t
+ *PREFIX)
+ Tests whether STR starts with PREFIX.
+
+ -- Function: bool u8_endswith (const uint8_t *STR, const uint8_t
+ *SUFFIX)
+ -- Function: bool u16_endswith (const uint16_t *STR, const uint16_t
+ *SUFFIX)
+ -- Function: bool u32_endswith (const uint32_t *STR, const uint32_t
+ *SUFFIX)
+ Tests whether STR ends with SUFFIX.
+
+ The following function does one step in tokenizing a Unicode string.
+
+ -- Function: uint8_t * u8_strtok (uint8_t *STR, const uint8_t *DELIM,
+ uint8_t **PTR)
+ -- Function: uint16_t * u16_strtok (uint16_t *STR, const uint16_t
+ *DELIM, uint16_t **PTR)
+ -- Function: uint32_t * u32_strtok (uint32_t *STR, const uint32_t
+ *DELIM, uint32_t **PTR)
+ Divides STR into tokens separated by characters in DELIM.
+
+ This function is similar to `strtok_r' and `wcstok', except that
+ it operates on Unicode strings. Its interface is actually more
+ similar to `wcstok' than to `strtok'.
+
+
+File: libunistring.info, Node: uniconv.h, Next: unistdio.h, Prev: unistr.h, Up: Top
+
+5 Conversions between Unicode and encodings `<uniconv.h>'
+*********************************************************
+
+ This include file declares functions for converting between Unicode
+strings and `char *' strings in locale encoding or in other specified
+encodings.
+
+ The following function returns the locale encoding.
+
+ -- Function: const char * locale_charset ()
+ Determines the current locale's character encoding, and
+ canonicalizes it into one of the canonical names listed in
+ `config.charset'. If the canonical name cannot be determined, the
+ result is a non-canonical name.
+
+ The result must not be freed; it is statically allocated.
+
+ The result of this function can be used as an argument to the
+ `iconv_open' function in GNU libc, in GNU libiconv, or in the
+ gnulib provided wrapper around the native `iconv_open' function.
+ It may not work as an argument to the native `iconv_open' function
+ directly.
+
+ The handling of unconvertible characters during the conversions can
+be parametrized through the following enumeration type:
+
+ -- Type: enum iconv_ilseq_handler
+ This type specifies how unconvertible characters in the input are
+ handled.
+
+ -- Constant: enum iconv_ilseq_handler iconveh_error
+ This handler causes the function to return with `errno' set to
+ `EILSEQ'.
+
+ -- Constant: enum iconv_ilseq_handler iconveh_question_mark
+ This handler produces one question mark `?' per unconvertible
+ character.
+
+ -- Constant: enum iconv_ilseq_handler iconveh_escape_sequence
+ This handler produces an escape sequence `\uXXXX' or `\UXXXXXXXX'
+ for each unconvertible character.
+
+ The following functions convert between strings in a specified
+encoding and Unicode strings.
+
+ -- Function: uint8_t * u8_conv_from_encoding (const char *FROMCODE,
+ enum iconv_ilseq_handler HANDLER, const char *SRC, size_t
+ SRCLEN, size_t *OFFSETS, uint8_t *RESULTBUF, size_t *LENGTHP)
+ -- Function: uint16_t * u16_conv_from_encoding (const char *FROMCODE,
+ enum iconv_ilseq_handler HANDLER, const char *SRC, size_t
+ SRCLEN, size_t *OFFSETS, uint16_t *RESULTBUF, size_t *LENGTHP)
+ -- Function: uint32_t * u32_conv_from_encoding (const char *FROMCODE,
+ enum iconv_ilseq_handler HANDLER, const char *SRC, size_t
+ SRCLEN, size_t *OFFSETS, uint32_t *RESULTBUF, size_t *LENGTHP)
+ Converts an entire string, possibly including NUL bytes, from one
+ encoding to UTF-8 encoding.
+
+ Converts a memory region given in encoding FROMCODE. FROMCODE is
+ as for the `iconv_open' function.
+
+ The input is in the memory region between SRC (inclusive) and `SRC
+ + SRCLEN' (exclusive).
+
+ If OFFSETS is not NULL, it should point to an array of SRCLEN
+ integers; this array is filled with offsets into the result, i.e.
+ the character starting at `SRC[i]' corresponds to the character
+ starting at `RESULT[OFFSETS[i]]', and other offsets are set to
+ `(size_t)(-1)'.
+
+ `RESULTBUF' and `*LENGTHP' should be a scratch buffer and its
+ size, or `RESULTBUF' can be NULL.
+
+ May erase the contents of the memory at `RESULTBUF'.
+
+ If successful: The resulting Unicode string (non-NULL) is returned
+ and its length stored in `*LENGTHP'. The resulting string is
+ `RESULTBUF' if no dynamic memory allocation was necessary, or a
+ freshly allocated memory block otherwise.
+
+ In case of error: NULL is returned and `errno' is set. Particular
+ `errno' values: `EINVAL', `EILSEQ', `ENOMEM'.
+
+ -- Function: char * u8_conv_to_encoding (const char *TOCODE, enum
+ iconv_ilseq_handler HANDLER, const uint8_t *SRC, size_t
+ SRCLEN, size_t *OFFSETS, char *RESULTBUF, size_t *LENGTHP)
+ -- Function: char * u16_conv_to_encoding (const char *TOCODE, enum
+ iconv_ilseq_handler HANDLER, const uint16_t *SRC, size_t
+ SRCLEN, size_t *OFFSETS, char *RESULTBUF, size_t *LENGTHP)
+ -- Function: char * u32_conv_to_encoding (const char *TOCODE, enum
+ iconv_ilseq_handler HANDLER, const uint32_t *SRC, size_t
+ SRCLEN, size_t *OFFSETS, char *RESULTBUF, size_t *LENGTHP)
+ Converts an entire Unicode string, possibly including NUL units,
+ from UTF-8 encoding to a given encoding.
+
+ Converts a memory region to encoding TOCODE. TOCODE is as for the
+ `iconv_open' function.
+
+ The input is in the memory region between SRC (inclusive) and `SRC
+ + SRCLEN' (exclusive).
+
+ If OFFSETS is not NULL, it should point to an array of SRCLEN
+ integers; this array is filled with offsets into the result, i.e.
+ the character starting at `SRC[i]' corresponds to the character
+ starting at `RESULT[OFFSETS[i]]', and other offsets are set to
+ `(size_t)(-1)'.
+
+ `RESULTBUF' and `*LENGTHP' should be a scratch buffer and its
+ size, or `RESULTBUF' can be NULL.
+
+ May erase the contents of the memory at `RESULTBUF'.
+
+ If successful: The resulting Unicode string (non-NULL) is returned
+ and its length stored in `*LENGTHP'. The resulting string is
+ `RESULTBUF' if no dynamic memory allocation was necessary, or a
+ freshly allocated memory block otherwise.
+
+ In case of error: NULL is returned and `errno' is set. Particular
+ `errno' values: `EINVAL', `EILSEQ', `ENOMEM'.
+
+ The following functions convert between NUL terminated strings in a
+specified encoding and NUL terminated Unicode strings.
+
+ -- Function: uint8_t * u8_strconv_from_encoding (const char *STRING,
+ const char *FROMCODE, enum iconv_ilseq_handler HANDLER)
+ -- Function: uint16_t * u16_strconv_from_encoding (const char *STRING,
+ const char *FROMCODE, enum iconv_ilseq_handler HANDLER)
+ -- Function: uint32_t * u32_strconv_from_encoding (const char *STRING,
+ const char *FROMCODE, enum iconv_ilseq_handler HANDLER)
+ Converts a NUL terminated string from a given encoding.
+
+ The result is `malloc' allocated, or NULL (with ERRNO set) in case
+ of error.
+
+ Particular `errno' values: `EILSEQ', `ENOMEM'.
+
+ -- Function: char * u8_strconv_to_encoding (const uint8_t *STRING,
+ const char *TOCODE, enum iconv_ilseq_handler HANDLER)
+ -- Function: char * u16_strconv_to_encoding (const uint16_t *STRING,
+ const char *TOCODE, enum iconv_ilseq_handler HANDLER)
+ -- Function: char * u32_strconv_to_encoding (const uint32_t *STRING,
+ const char *TOCODE, enum iconv_ilseq_handler HANDLER)
+ Converts a NUL terminated string to a given encoding.
+
+ The result is `malloc' allocated, or NULL (with `errno' set) in
+ case of error.
+
+ Particular `errno' values: `EILSEQ', `ENOMEM'.
+
+ The following functions are shorthands that convert between NUL
+terminated strings in locale encoding and NUL terminated Unicode
+strings.
+
+ -- Function: uint8_t * u8_strconv_from_locale (const char *STRING)
+ -- Function: uint16_t * u16_strconv_from_locale (const char *STRING)
+ -- Function: uint32_t * u32_strconv_from_locale (const char *STRING)
+ Converts a NUL terminated string from the locale encoding.
+
+ The result is `malloc' allocated, or NULL (with `errno' set) in
+ case of error.
+
+ Particular `errno' values: `ENOMEM'.
+
+ -- Function: char * u8_strconv_to_locale (const uint8_t *STRING)
+ -- Function: char * u16_strconv_to_locale (const uint16_t *STRING)
+ -- Function: char * u32_strconv_to_locale (const uint32_t *STRING)
+ Converts a NUL terminated string to the locale encoding.
+
+ The result is `malloc' allocated, or NULL (with `errno' set) in
+ case of error.
+
+ Particular `errno' values: `ENOMEM'.
+
+
+File: libunistring.info, Node: unistdio.h, Next: uniname.h, Prev: uniconv.h, Up: Top
+
+6 Output with Unicode strings `<unistdio.h>'
+********************************************
+
+ This include file declares functions for doing formatted output with
+Unicode strings. It defines a set of functions similar to `fprintf' and
+`sprintf', which are declared in `<stdio.h>'.
+
+ These functions work like the `printf' function family. In the
+format string:
+ * The format directive `U' takes an UTF-8 string (`const uint8_t *').
+
+ * The format directive `lU' takes an UTF-16 string (`const uint16_t
+ *').
+
+ * The format directive `llU' takes an UTF-32 string (`const uint32_t
+ *').
+
+ A function name with an infix `v' indicates that a `va_list' is
+passed instead of multiple arguments.
+
+ The functions `*sprintf' have a BUF argument that is assumed to be
+large enough. (_DANGEROUS! Overflowing the buffer will crash the
+program._)
+
+ The functions `*snprintf' have a BUF argument that is assumed to be
+SIZE units large. (_DANGEROUS! The resulting string might be
+truncated in the middle of a multibyte character._)
+
+ The functions `*asprintf' have a RESULTP argument. The result will
+be freshly allocated and stored in `*resultp'.
+
+ The functions `*asnprintf' have a (RESULTBUF, LENGTHP) argument
+pair. If RESULTBUF is not NULL and the result fits into `*LENGTHP'
+units, it is put in RESULTBUF, and RESULTBUF is returned. Otherwise, a
+freshly allocated string is returned. In both cases, `*LENGTHP' is set
+to the length (number of units) of the returned string. In case of
+error, NULL is returned and `errno' is set.
+
+ The following functions take an ASCII format string and return a
+result that is a `char *' string in locale encoding.
+
+ -- Function: int ulc_sprintf (char *BUF, const char *FORMAT, ...)
+
+ -- Function: int ulc_snprintf (char *BUF, size_t size, const char
+ *FORMAT, ...)
+
+ -- Function: int ulc_asprintf (char **RESULTP, const char *FORMAT, ...)
+
+ -- Function: char * ulc_asnprintf (char *RESULTBUF, size_t *LENGTHP,
+ const char *FORMAT, ...)
+
+ -- Function: int ulc_vsprintf (char *BUF, const char *FORMAT, va_list
+ AP)
+
+ -- Function: int ulc_vsnprintf (char *BUF, size_t size, const char
+ *FORMAT, va_list AP)
+
+ -- Function: int ulc_vasprintf (char **RESULTP, const char *FORMAT,
+ va_list AP)
+
+ -- Function: char * ulc_vasnprintf (char *RESULTBUF, size_t *LENGTHP,
+ const char *FORMAT, va_list AP)
+
+ The following functions take an ASCII format string and return a
+result in UTF-8 format.
+
+ -- Function: int u8_sprintf (uint8_t *BUF, const char *FORMAT, ...)
+
+ -- Function: int u8_snprintf (uint8_t *BUF, size_t SIZE, const char
+ *FORMAT, ...)
+
+ -- Function: int u8_asprintf (uint8_t **RESULTP, const char *FORMAT,
+ ...)
+
+ -- Function: uint8_t * u8_asnprintf (uint8_t *RESULTBUF, size_t
+ *LENGTHP, const char *FORMAT, ...)
+
+ -- Function: int u8_vsprintf (uint8_t *BUF, const char *FORMAT,
+ va_list ap)
+
+ -- Function: int u8_vsnprintf (uint8_t *BUF, size_t SIZE, const char
+ *FORMAT, va_list AP)
+
+ -- Function: int u8_vasprintf (uint8_t **RESULTP, const char *FORMAT,
+ va_list AP)
+
+ -- Function: uint8_t * u8_vasnprintf (uint8_t *resultbuf, size_t
+ *LENGTHP, const char *FORMAT, va_list AP)
+
+ The following functions take an UTF-8 format string and return a
+result in UTF-8 format.
+
+ -- Function: int u8_u8_sprintf (uint8_t *BUF, const uint8_t *FORMAT,
+ ...)
+
+ -- Function: int u8_u8_snprintf (uint8_t *BUF, size_t SIZE, const
+ uint8_t *FORMAT, ...)
+
+ -- Function: int u8_u8_asprintf (uint8_t **RESULTP, const uint8_t
+ *FORMAT, ...)
+
+ -- Function: uint8_t * u8_u8_asnprintf (uint8_t *resultbuf, size_t
+ *LENGTHP, const uint8_t *FORMAT, ...)
+
+ -- Function: int u8_u8_vsprintf (uint8_t *BUF, const uint8_t *FORMAT,
+ va_list AP)
+
+ -- Function: int u8_u8_vsnprintf (uint8_t *BUF, size_t SIZE, const
+ uint8_t *FORMAT, va_list AP)
+
+ -- Function: int u8_u8_vasprintf (uint8_t **RESULTP, const uint8_t
+ *FORMAT, va_list AP)
+
+ -- Function: uint8_t * u8_u8_vasnprintf (uint8_t *resultbuf, size_t
+ *LENGTHP, const uint8_t *FORMAT, va_list AP)
+
+ The following functions take an ASCII format string and return a
+result in UTF-16 format.
+
+ -- Function: int u16_sprintf (uint16_t *BUF, const char *FORMAT, ...)
+
+ -- Function: int u16_snprintf (uint16_t *BUF, size_t SIZE, const char
+ *FORMAT, ...)
+
+ -- Function: int u16_asprintf (uint16_t **RESULTP, const char *FORMAT,
+ ...)
+
+ -- Function: uint16_t * u16_asnprintf (uint16_t *RESULTBUF, size_t
+ *LENGTHP, const char *FORMAT, ...)
+
+ -- Function: int u16_vsprintf (uint16_t *BUF, const char *FORMAT,
+ va_list ap)
+
+ -- Function: int u16_vsnprintf (uint16_t *BUF, size_t SIZE, const char
+ *FORMAT, va_list AP)
+
+ -- Function: int u16_vasprintf (uint16_t **RESULTP, const char
+ *FORMAT, va_list AP)
+
+ -- Function: uint16_t * u16_vasnprintf (uint16_t *resultbuf, size_t
+ *LENGTHP, const char *FORMAT, va_list AP)
+
+ The following functions take an UTF-16 format string and return a
+result in UTF-16 format.
+
+ -- Function: int u16_u16_sprintf (uint16_t *BUF, const uint16_t
+ *FORMAT, ...)
+
+ -- Function: int u16_u16_snprintf (uint16_t *BUF, size_t SIZE, const
+ uint16_t *FORMAT, ...)
+
+ -- Function: int u16_u16_asprintf (uint16_t **RESULTP, const uint16_t
+ *FORMAT, ...)
+
+ -- Function: uint16_t * u16_u16_asnprintf (uint16_t *resultbuf, size_t
+ *LENGTHP, const uint16_t *FORMAT, ...)
+
+ -- Function: int u16_u16_vsprintf (uint16_t *BUF, const uint16_t
+ *FORMAT, va_list AP)
+
+ -- Function: int u16_u16_vsnprintf (uint16_t *BUF, size_t SIZE, const
+ uint16_t *FORMAT, va_list AP)
+
+ -- Function: int u16_u16_vasprintf (uint16_t **RESULTP, const uint16_t
+ *FORMAT, va_list AP)
+
+ -- Function: uint16_t * u16_u16_vasnprintf (uint16_t *resultbuf,
+ size_t *LENGTHP, const uint16_t *FORMAT, va_list AP)
+
+ The following functions take an ASCII format string and return a
+result in UTF-32 format.
+
+ -- Function: int u32_sprintf (uint32_t *BUF, const char *FORMAT, ...)
+
+ -- Function: int u32_snprintf (uint32_t *BUF, size_t SIZE, const char
+ *FORMAT, ...)
+
+ -- Function: int u32_asprintf (uint32_t **RESULTP, const char *FORMAT,
+ ...)
+
+ -- Function: uint32_t * u32_asnprintf (uint32_t *RESULTBUF, size_t
+ *LENGTHP, const char *FORMAT, ...)
+
+ -- Function: int u32_vsprintf (uint32_t *BUF, const char *FORMAT,
+ va_list ap)
+
+ -- Function: int u32_vsnprintf (uint32_t *BUF, size_t SIZE, const char
+ *FORMAT, va_list AP)
+
+ -- Function: int u32_vasprintf (uint32_t **RESULTP, const char
+ *FORMAT, va_list AP)
+
+ -- Function: uint32_t * u32_vasnprintf (uint32_t *resultbuf, size_t
+ *LENGTHP, const char *FORMAT, va_list AP)
+
+ The following functions take an UTF-32 format string and return a
+result in UTF-32 format.
+
+ -- Function: int u32_u32_sprintf (uint32_t *BUF, const uint32_t
+ *FORMAT, ...)
+
+ -- Function: int u32_u32_snprintf (uint32_t *BUF, size_t SIZE, const
+ uint32_t *FORMAT, ...)
+
+ -- Function: int u32_u32_asprintf (uint32_t **RESULTP, const uint32_t
+ *FORMAT, ...)
+
+ -- Function: uint32_t * u32_u32_asnprintf (uint32_t *resultbuf, size_t
+ *LENGTHP, const uint32_t *FORMAT, ...)
+
+ -- Function: int u32_u32_vsprintf (uint32_t *BUF, const uint32_t
+ *FORMAT, va_list AP)
+
+ -- Function: int u32_u32_vsnprintf (uint32_t *BUF, size_t SIZE, const
+ uint32_t *FORMAT, va_list AP)
+
+ -- Function: int u32_u32_vasprintf (uint32_t **RESULTP, const uint32_t
+ *FORMAT, va_list AP)
+
+ -- Function: uint32_t * u32_u32_vasnprintf (uint32_t *resultbuf,
+ size_t *LENGTHP, const uint32_t *FORMAT, va_list AP)
+
+ The following functions take an ASCII format string and produce
+output in locale encoding to a `FILE' stream.
+
+ -- Function: int ulc_fprintf (FILE *STREAM, const char *FORMAT, ...)
+
+ -- Function: int ulc_vfprintf (FILE *STREAM, const char *FORMAT,
+ va_list AP)
+
+
+File: libunistring.info, Node: uniname.h, Next: unictype.h, Prev: unistdio.h, Up: Top
+
+7 Names of Unicode characters `<uniname.h>'
+*******************************************
+
+ This include file implements the association between a Unicode
+character and its name.
+
+ The name of a Unicode character allows to distinguish it from other,
+similar looking characters. For example, the character `x' has the name
+`"LATIN SMALL LETTER X"' and is therefore different from the character
+named `"MULTIPLICATION SIGN"'.
+
+ -- Macro: unsigned int UNINAME_MAX
+ This macro expands to a constant that is the required size of
+ buffer for a Unicode character name.
+
+ -- Function: char * unicode_character_name (ucs4_t UC, char *BUF)
+ Looks up the name of a Unicode character, in uppercase ASCII. BUF
+ must point to a buffer, at least `UNINAME_MAX' bytes in size.
+ Returns the filled BUF, or NULL if the character does not have a
+ name.
+
+ -- Function: ucs4_t unicode_name_character (const char *NAME)
+ Looks up the Unicode character with a given name, in upper- or
+ lowercase ASCII. Returns the character if found, or
+ `UNINAME_INVALID' if not found.
+
+ -- Macro: ucs4_t UNINAME_INVALID
+ This macro expands to a constant that is a special return value of
+ the `unicode_name_character' function.
+
+
+File: libunistring.info, Node: unictype.h, Next: uniwidth.h, Prev: uniname.h, Up: Top
+
+8 Unicode character classification and properties `<unictype.h>'
+****************************************************************
+
+ This include file declares functions that classify Unicode characters
+and that test whether Unicode characters have specific properties.
+
+ The classification assigns a "general category" to every Unicode
+character. This is similar to the classification provided by ISO C in
+`<wctype.h>'.
+
+ Properties are the data that guides various text processing
+algorithms in the presence of specific Unicode characters.
+
+* Menu:
+
+* General category::
+* Canonical combining class::
+* Bidirectional category::
+* Decimal digit value::
+* Digit value::
+* Numeric value::
+* Mirrored character::
+* Properties::
+* Scripts::
+* Blocks::
+* ISO C and Java syntax::
+* Classifications like in ISO C::
+
+
+File: libunistring.info, Node: General category, Next: Canonical combining class, Up: unictype.h
+
+8.1 General category
+====================
+
+ Every Unicode character or code point has a _general category_
+assigned to it. This classification is important for most algorithms
+that work on Unicode text.
+
+ The GNU libunistring library provides two kinds of API for working
+with general categories. The object oriented API uses a variable to
+denote every predefined general category value or combinations thereof.
+The low-level API uses a bit mask instead. The advantage of the object
+oriented API is that if only a few predefined general category values
+are used, the data tables are relatively small. When you combine
+general category values (using `uc_general_category_or',
+`uc_general_category_and', or `uc_general_category_and_not'), or when
+you use the low level bit masks, a big table is used thats holds the
+complete general category information for all Unicode characters.
+
+* Menu:
+
+* Object oriented API::
+* Bit mask API::
+
+
+File: libunistring.info, Node: Object oriented API, Next: Bit mask API, Up: General category
+
+8.1.1 The object oriented API for general category
+--------------------------------------------------
+
+ -- Type: uc_general_category_t
+ This data type denotes a general category value. It is an
+ immediate type that can be copied by simple assignment, without
+ involving memory allocation. It is not an array type.
+
+ The following are the predefined general category value. Additional
+general categories may be added in the future.
+
+ -- Constant: uc_general_category_t UC_CATEGORY_L
+ -- Constant: uc_general_category_t UC_CATEGORY_Lu
+ -- Constant: uc_general_category_t UC_CATEGORY_Ll
+ -- Constant: uc_general_category_t UC_CATEGORY_Lt
+ -- Constant: uc_general_category_t UC_CATEGORY_Lm
+ -- Constant: uc_general_category_t UC_CATEGORY_Lo
+ -- Constant: uc_general_category_t UC_CATEGORY_M
+ -- Constant: uc_general_category_t UC_CATEGORY_Mn
+ -- Constant: uc_general_category_t UC_CATEGORY_Mc
+ -- Constant: uc_general_category_t UC_CATEGORY_Me
+ -- Constant: uc_general_category_t UC_CATEGORY_N
+ -- Constant: uc_general_category_t UC_CATEGORY_Nd
+ -- Constant: uc_general_category_t UC_CATEGORY_Nl
+ -- Constant: uc_general_category_t UC_CATEGORY_No
+ -- Constant: uc_general_category_t UC_CATEGORY_P
+ -- Constant: uc_general_category_t UC_CATEGORY_Pc
+ -- Constant: uc_general_category_t UC_CATEGORY_Pd
+ -- Constant: uc_general_category_t UC_CATEGORY_Ps
+ -- Constant: uc_general_category_t UC_CATEGORY_Pe
+ -- Constant: uc_general_category_t UC_CATEGORY_Pi
+ -- Constant: uc_general_category_t UC_CATEGORY_Pf
+ -- Constant: uc_general_category_t UC_CATEGORY_Po
+ -- Constant: uc_general_category_t UC_CATEGORY_S
+ -- Constant: uc_general_category_t UC_CATEGORY_Sm
+ -- Constant: uc_general_category_t UC_CATEGORY_Sc
+ -- Constant: uc_general_category_t UC_CATEGORY_Sk
+ -- Constant: uc_general_category_t UC_CATEGORY_So
+ -- Constant: uc_general_category_t UC_CATEGORY_Z
+ -- Constant: uc_general_category_t UC_CATEGORY_Zs
+ -- Constant: uc_general_category_t UC_CATEGORY_Zl
+ -- Constant: uc_general_category_t UC_CATEGORY_Zp
+ -- Constant: uc_general_category_t UC_CATEGORY_C
+ -- Constant: uc_general_category_t UC_CATEGORY_Cc
+ -- Constant: uc_general_category_t UC_CATEGORY_Cf
+ -- Constant: uc_general_category_t UC_CATEGORY_Cs
+ -- Constant: uc_general_category_t UC_CATEGORY_Co
+ -- Constant: uc_general_category_t UC_CATEGORY_Cn
+
+ The following are alias names for predefined General category values.
+
+ -- Macro: uc_general_category_t UC_LETTER
+ This is another name for `UC_CATEGORY_L'.
+
+ -- Macro: uc_general_category_t UC_UPPERCASE_LETTER
+ This is another name for `UC_CATEGORY_Lu'.
+
+ -- Macro: uc_general_category_t UC_LOWERCASE_LETTER
+ This is another name for `UC_CATEGORY_Ll'.
+
+ -- Macro: uc_general_category_t UC_TITLECASE_LETTER
+ This is another name for `UC_CATEGORY_Lt'.
+
+ -- Macro: uc_general_category_t UC_MODIFIER_LETTER
+ This is another name for `UC_CATEGORY_Lm'.
+
+ -- Macro: uc_general_category_t UC_OTHER_LETTER
+ This is another name for `UC_CATEGORY_Lo'.
+
+ -- Macro: uc_general_category_t UC_MARK
+ This is another name for `UC_CATEGORY_M'.
+
+ -- Macro: uc_general_category_t UC_NON_SPACING_MARK
+ This is another name for `UC_CATEGORY_Mn'.
+
+ -- Macro: uc_general_category_t UC_COMBINING_SPACING_MARK
+ This is another name for `UC_CATEGORY_Mc'.
+
+ -- Macro: uc_general_category_t UC_ENCLOSING_MARK
+ This is another name for `UC_CATEGORY_Me'.
+
+ -- Macro: uc_general_category_t UC_NUMBER
+ This is another name for `UC_CATEGORY_N'.
+
+ -- Macro: uc_general_category_t UC_DECIMAL_DIGIT_NUMBER
+ This is another name for `UC_CATEGORY_Nd'.
+
+ -- Macro: uc_general_category_t UC_LETTER_NUMBER
+ This is another name for `UC_CATEGORY_Nl'.
+
+ -- Macro: uc_general_category_t UC_OTHER_NUMBER
+ This is another name for `UC_CATEGORY_No'.
+
+ -- Macro: uc_general_category_t UC_PUNCTUATION
+ This is another name for `UC_CATEGORY_P'.
+
+ -- Macro: uc_general_category_t UC_CONNECTOR_PUNCTUATION
+ This is another name for `UC_CATEGORY_Pc'.
+
+ -- Macro: uc_general_category_t UC_DASH_PUNCTUATION
+ This is another name for `UC_CATEGORY_Pd'.
+
+ -- Macro: uc_general_category_t UC_OPEN_PUNCTUATION
+ This is another name for `UC_CATEGORY_Ps' ("start punctuation").
+
+ -- Macro: uc_general_category_t UC_CLOSE_PUNCTUATION
+ This is another name for `UC_CATEGORY_Pe' ("end punctuation").
+
+ -- Macro: uc_general_category_t UC_INITIAL_QUOTE_PUNCTUATION
+ This is another name for `UC_CATEGORY_Pi'.
+
+ -- Macro: uc_general_category_t UC_FINAL_QUOTE_PUNCTUATION
+ This is another name for `UC_CATEGORY_Pf'.
+
+ -- Macro: uc_general_category_t UC_OTHER_PUNCTUATION
+ This is another name for `UC_CATEGORY_Po'.
+
+ -- Macro: uc_general_category_t UC_SYMBOL
+ This is another name for `UC_CATEGORY_S'.
+
+ -- Macro: uc_general_category_t UC_MATH_SYMBOL
+ This is another name for `UC_CATEGORY_Sm'.
+
+ -- Macro: uc_general_category_t UC_CURRENCY_SYMBOL
+ This is another name for `UC_CATEGORY_Sc'.
+
+ -- Macro: uc_general_category_t UC_MODIFIER_SYMBOL
+ This is another name for `UC_CATEGORY_Sk'.
+
+ -- Macro: uc_general_category_t UC_OTHER_SYMBOL
+ This is another name for `UC_CATEGORY_So'.
+
+ -- Macro: uc_general_category_t UC_SEPARATOR
+ This is another name for `UC_CATEGORY_Z'.
+
+ -- Macro: uc_general_category_t UC_SPACE_SEPARATOR
+ This is another name for `UC_CATEGORY_Zs'.
+
+ -- Macro: uc_general_category_t UC_LINE_SEPARATOR
+ This is another name for `UC_CATEGORY_Zl'.
+
+ -- Macro: uc_general_category_t UC_PARAGRAPH_SEPARATOR
+ This is another name for `UC_CATEGORY_Zp'.
+
+ -- Macro: uc_general_category_t UC_OTHER
+ This is another name for `UC_CATEGORY_C'.
+
+ -- Macro: uc_general_category_t UC_CONTROL
+ This is another name for `UC_CATEGORY_Cc'.
+
+ -- Macro: uc_general_category_t UC_FORMAT
+ This is another name for `UC_CATEGORY_Cf'.
+
+ -- Macro: uc_general_category_t UC_SURROGATE
+ This is another name for `UC_CATEGORY_Cs'. All code points in this
+ category are invalid characters.
+
+ -- Macro: uc_general_category_t UC_PRIVATE_USE
+ This is another name for `UC_CATEGORY_Co'.
+
+ -- Macro: uc_general_category_t UC_UNASSIGNED
+ This is another name for `UC_CATEGORY_Cn'. Some code points in
+ this category are invalid characters.
+
+ The following functions combine general categories, like in a
+boolean algebra, except that there is no `not' operation.
+
+ -- Function: uc_general_category_t uc_general_category_or
+ (uc_general_category_t CATEGORY1, uc_general_category_t
+ CATEGORY2)
+ Returns the union of two general categories. This corresponds to
+ the unions of the two sets of characters.
+
+ -- Function: uc_general_category_t uc_general_category_and
+ (uc_general_category_t CATEGORY1, uc_general_category_t
+ CATEGORY2)
+ Returns the intersection of two general categories as bit masks.
+ This _does not_ correspond to the intersection of the two sets of
+ characters.
+
+ -- Function: uc_general_category_t uc_general_category_and_not
+ (uc_general_category_t CATEGORY1, uc_general_category_t
+ CATEGORY2)
+ Returns the intersection of a general category with the complement
+ of a second general category, as bit masks. This _does not_
+ correspond to the intersection with complement, when viewing the
+ categories as sets of characters.
+
+ The following functions associate general categories with their name.
+
+ -- Function: const char * uc_general_category_name
+ (uc_general_category_t CATEGORY)
+ Returns the name of a general category. Returns NULL if the
+ general category corresponds to a bit mask that does not have a
+ name.
+
+ -- Function: uc_general_category_t uc_general_category_byname (const
+ char *CATEGORY_NAME)
+ Returns the general category given by name, e.g. `"Lu"'.
+
+ The following functions view general categories as sets of Unicode
+characters.
+
+ -- Function: uc_general_category_t uc_general_category (ucs4_t UC)
+ Returns the general category of a Unicode character.
+
+ This function uses a big table.
+
+ -- Function: bool uc_is_general_category (ucs4_t UC,
+ uc_general_category_t CATEGORY)
+ Tests whether a Unicode character belongs to a given category.
+ The CATEGORY argument can be a predefined general category or the
+ combination of several predefined general categories.
+
+
+File: libunistring.info, Node: Bit mask API, Prev: Object oriented API, Up: General category
+
+8.1.2 The bit mask API for general category
+-------------------------------------------
+
+ The following are the predefined general category value as bit masks.
+Additional general categories may be added in the future.
+
+ -- Macro: uint32_t UC_CATEGORY_MASK_L
+ -- Macro: uint32_t UC_CATEGORY_MASK_Lu
+ -- Macro: uint32_t UC_CATEGORY_MASK_Ll
+ -- Macro: uint32_t UC_CATEGORY_MASK_Lt
+ -- Macro: uint32_t UC_CATEGORY_MASK_Lm
+ -- Macro: uint32_t UC_CATEGORY_MASK_Lo
+ -- Macro: uint32_t UC_CATEGORY_MASK_M
+ -- Macro: uint32_t UC_CATEGORY_MASK_Mn
+ -- Macro: uint32_t UC_CATEGORY_MASK_Mc
+ -- Macro: uint32_t UC_CATEGORY_MASK_Me
+ -- Macro: uint32_t UC_CATEGORY_MASK_N
+ -- Macro: uint32_t UC_CATEGORY_MASK_Nd
+ -- Macro: uint32_t UC_CATEGORY_MASK_Nl
+ -- Macro: uint32_t UC_CATEGORY_MASK_No
+ -- Macro: uint32_t UC_CATEGORY_MASK_P
+ -- Macro: uint32_t UC_CATEGORY_MASK_Pc
+ -- Macro: uint32_t UC_CATEGORY_MASK_Pd
+ -- Macro: uint32_t UC_CATEGORY_MASK_Ps
+ -- Macro: uint32_t UC_CATEGORY_MASK_Pe
+ -- Macro: uint32_t UC_CATEGORY_MASK_Pi
+ -- Macro: uint32_t UC_CATEGORY_MASK_Pf
+ -- Macro: uint32_t UC_CATEGORY_MASK_Po
+ -- Macro: uint32_t UC_CATEGORY_MASK_S
+ -- Macro: uint32_t UC_CATEGORY_MASK_Sm
+ -- Macro: uint32_t UC_CATEGORY_MASK_Sc
+ -- Macro: uint32_t UC_CATEGORY_MASK_Sk
+ -- Macro: uint32_t UC_CATEGORY_MASK_So
+ -- Macro: uint32_t UC_CATEGORY_MASK_Z
+ -- Macro: uint32_t UC_CATEGORY_MASK_Zs
+ -- Macro: uint32_t UC_CATEGORY_MASK_Zl
+ -- Macro: uint32_t UC_CATEGORY_MASK_Zp
+ -- Macro: uint32_t UC_CATEGORY_MASK_C
+ -- Macro: uint32_t UC_CATEGORY_MASK_Cc
+ -- Macro: uint32_t UC_CATEGORY_MASK_Cf
+ -- Macro: uint32_t UC_CATEGORY_MASK_Cs
+ -- Macro: uint32_t UC_CATEGORY_MASK_Co
+ -- Macro: uint32_t UC_CATEGORY_MASK_Cn
+
+ The following function views general categories as sets of Unicode
+characters.
+
+ -- Function: bool uc_is_general_category_withtable (ucs4_t UC,
+ uint32_t BITMASK)
+ Tests whether a Unicode character belongs to a given category.
+ The BITMASK argument can be a predefined general category bitmask
+ or the combination of several predefined general category bitmasks.
+
+ This function uses a big table comprising all general categories.
+
+
+File: libunistring.info, Node: Canonical combining class, Next: Bidirectional category, Prev: General category, Up: unictype.h
+
+8.2 Canonical combining class
+=============================
+
+ Every Unicode character or code point has a _canonical combining
+class_ assigned to it.
+
+ What is the meaning of the canonical combining class? Essentially,
+it indicates the priority with which a combining character is attached
+to its base character. The characters for which the canonical
+combining class is 0 are the base characters, and the characters for
+which it is greater than 0 are the combining characters. Combining
+characters are rendered near/attached/around their base character, and
+combining characters with small combining classes are attached "first"
+or "closer" to the base character.
+
+ The canonical combining class of a character is a number in the range
+0..255. The possible values are described in the Unicode Character
+Database `http://www.unicode.org/Public/UNIDATA/UCD.html'. The list
+here is not definitive; more values can be added in future versions.
+
+ -- Constant: int UC_CCC_NR
+ The canonical combining class value for "Not Reordered" characters.
+ The value is 0.
+
+ -- Constant: int UC_CCC_OV
+ The canonical combining class value for "Overlay" characters.
+
+ -- Constant: int UC_CCC_NK
+ The canonical combining class value for "Nukta" characters.
+
+ -- Constant: int UC_CCC_KV
+ The canonical combining class value for "Kana Voicing" characters.
+
+ -- Constant: int UC_CCC_VR
+ The canonical combining class value for "Virama" characters.
+
+ -- Constant: int UC_CCC_ATBL
+ The canonical combining class value for "Attached Below Left"
+ characters.
+
+ -- Constant: int UC_CCC_ATB
+ The canonical combining class value for "Attached Below"
+ characters.
+
+ -- Constant: int UC_CCC_ATAR
+ The canonical combining class value for "Attached Above Right"
+ characters.
+
+ -- Constant: int UC_CCC_BL
+ The canonical combining class value for "Below Left" characters.
+
+ -- Constant: int UC_CCC_B
+ The canonical combining class value for "Below" characters.
+
+ -- Constant: int UC_CCC_BR
+ The canonical combining class value for "Below Right" characters.
+
+ -- Constant: int UC_CCC_L
+ The canonical combining class value for "Left" characters.
+
+ -- Constant: int UC_CCC_R
+ The canonical combining class value for "Right" characters.
+
+ -- Constant: int UC_CCC_AL
+ The canonical combining class value for "Above Left" characters.
+
+ -- Constant: int UC_CCC_A
+ The canonical combining class value for "Above" characters.
+
+ -- Constant: int UC_CCC_AR
+ The canonical combining class value for "Above Right" characters.
+
+ -- Constant: int UC_CCC_DB
+ The canonical combining class value for "Double Below" characters.
+
+ -- Constant: int UC_CCC_DA
+ The canonical combining class value for "Double Above" characters.
+
+ -- Constant: int UC_CCC_IS
+ The canonical combining class value for "Iota Subscript"
+ characters.
+
+ The following function looks up the canonical combining class of a
+character.
+
+ -- Function: int uc_combining_class (ucs4_t UC)
+ Returns the canonical combining class of a Unicode character.
+
+
+File: libunistring.info, Node: Bidirectional category, Next: Decimal digit value, Prev: Canonical combining class, Up: unictype.h
+
+8.3 Bidirectional category
+==========================
+
+ Every Unicode character or code point has a _bidirectional category_
+assigned to it.
+
+ The bidirectional category guides the bidirectional algorithm
+(`http://www.unicode.org/reports/tr9/'). The possible values are the
+following.
+
+ -- Constant: int UC_BIDI_L
+ The bidirectional category for `Left-to-Right`" characters.
+
+ -- Constant: int UC_BIDI_LRE
+ The bidirectional category for "Left-to-Right Embedding"
+ characters.
+
+ -- Constant: int UC_BIDI_LRO
+ The bidirectional category for "Left-to-Right Override" characters.
+
+ -- Constant: int UC_BIDI_R
+ The bidirectional category for "Right-to-Left" characters.
+
+ -- Constant: int UC_BIDI_AL
+ The bidirectional category for "Right-to-Left Arabic" characters.
+
+ -- Constant: int UC_BIDI_RLE
+ The bidirectional category for "Right-to-Left Embedding"
+ characters.
+
+ -- Constant: int UC_BIDI_RLO
+ The bidirectional category for "Right-to-Left Override" characters.
+
+ -- Constant: int UC_BIDI_PDF
+ The bidirectional category for "Pop Directional Format" characters.
+
+ -- Constant: int UC_BIDI_EN
+ The bidirectional category for "European Number" characters.
+
+ -- Constant: int UC_BIDI_ES
+ The bidirectional category for "European Number Separator"
+ characters.
+
+ -- Constant: int UC_BIDI_ET
+ The bidirectional category for "European Number Terminator"
+ characters.
+
+ -- Constant: int UC_BIDI_AN
+ The bidirectional category for "Arabic Number" characters.
+
+ -- Constant: int UC_BIDI_CS
+ The bidirectional category for "Common Number Separator"
+ characters.
+
+ -- Constant: int UC_BIDI_NSM
+ The bidirectional category for "Non-Spacing Mark" characters.
+
+ -- Constant: int UC_BIDI_BN
+ The bidirectional category for "Boundary Neutral" characters.
+
+ -- Constant: int UC_BIDI_B
+ The bidirectional category for "Paragraph Separator" characters.
+
+ -- Constant: int UC_BIDI_S
+ The bidirectional category for "Segment Separator" characters.
+
+ -- Constant: int UC_BIDI_WS
+ The bidirectional category for "Whitespace" characters.
+
+ -- Constant: int UC_BIDI_ON
+ The bidirectional category for "Other Neutral" characters.
+
+ The following functions implement the association between a
+bidirectional category and its name.
+
+ -- Function: const char * uc_bidi_category_name (int CATEGORY)
+ Returns the name of a bidirectional category.
+
+ -- Function: int uc_bidi_category_byname (const char *CATEGORY_NAME)
+ Returns the bidirectional category given by name, e.g. `"LRE"'.
+
+ The following functions view bidirectional categories as sets of
+Unicode characters.
+
+ -- Function: int uc_bidi_category (ucs4_t UC)
+ Returns the bidirectional category of a Unicode character.
+
+ -- Function: bool uc_is_bidi_category (ucs4_t UC, int CATEGORY)
+ Tests whether a Unicode character belongs to a given bidirectional
+ category.
+
+
+File: libunistring.info, Node: Decimal digit value, Next: Digit value, Prev: Bidirectional category, Up: unictype.h
+
+8.4 Decimal digit value
+=======================
+
+ Decimal digits (like the digits from `0' to `9') exist in many
+scripts. The following function converts a decimal digit character to
+its numerical value.
+
+ -- Function: int uc_decimal_value (ucs4_t UC)
+ Returns the decimal digit value of a Unicode character. The
+ return value is an integer in the range 0..9, or -1 for characters
+ that do not represent a decimal digit.
+
+
+File: libunistring.info, Node: Digit value, Next: Numeric value, Prev: Decimal digit value, Up: unictype.h
+
+8.5 Digit value
+===============
+
+ Digit characters are like decimal digit characters, possibly in
+special forms, like as superscript, subscript, or circled. The
+following function converts a digit character to its numerical value.
+
+ -- Function: int uc_digit_value (ucs4_t UC)
+ Returns the digit value of a Unicode character. The return value
+ is an integer in the range 0..9, or -1 for characters that do not
+ represent a digit.
+
+
+File: libunistring.info, Node: Numeric value, Next: Mirrored character, Prev: Digit value, Up: unictype.h
+
+8.6 Numeric value
+=================
+
+ There are also characters that represent numbers without a digit
+system, like the Roman numerals, and fractional numbers, like 1/4 or
+3/4.
+
+ The following type represents the numeric value of a Unicode
+character.
+
+ -- Type: uc_fraction_t
+ This is a structure type with the following fields:
+ int numerator;
+ int denominator;
+ An integer N is represented by `numerator = N', `denominator = 1'.
+
+ The following function converts a number character to its numerical
+value.
+
+ -- Function: uc_fraction_t uc_numeric_value (ucs4_t UC)
+ Returns the numeric value of a Unicode character. The return
+ value is a fraction, or the pseudo-fraction `{ 0, 0 }' for
+ characters that do not represent a number.
+
+
+File: libunistring.info, Node: Mirrored character, Next: Properties, Prev: Numeric value, Up: unictype.h
+
+8.7 Mirrored character
+======================
+
+ Character mirroring is used to associate the closing parenthesis
+character to the opening parenthesis character, the closing brace
+character with the opening brace character, and so on.
+
+ The following function looks up the mirrored character of a Unicode
+character.
+
+ -- Function: bool uc_mirror_char (ucs4_t UC, ucs4_t *PUC)
+ Stores the mirrored character of a Unicode character UC in `*PUC'
+ and returns `true', if it exists. Otherwise it stores UC
+ unmodified in `*PUC' and returns `false'.
+
+
+File: libunistring.info, Node: Properties, Next: Scripts, Prev: Mirrored character, Up: unictype.h
+
+8.8 Properties
+==============
+
+ This section defines boolean properties of Unicode characters. This
+means, a character either has the given property or does not have it.
+In other words, the property can be viewed as a subset of the set of
+Unicode characters.
+
+ The GNU libunistring library provides two kinds of API for working
+with properties. The object oriented API uses a type `uc_property_t'
+to designate a property. In the function-based API, which is a bit more
+low level, a property is merely a function.
+
+* Menu:
+
+* Properties as objects::
+* Properties as functions::
+
+
+File: libunistring.info, Node: Properties as objects, Next: Properties as functions, Up: Properties
+
+8.8.1 Properties as objects - the object oriented API
+-----------------------------------------------------
+
+ The following type designates a property on Unicode characters.
+
+ -- Type: uc_property_t
+ This data type denotes a boolean property on Unicode characters.
+ It is an immediate type that can be copied by simple assignment,
+ without involving memory allocation. It is not an array type.
+
+ Many Unicode properties are predefined.
+
+ The following are general properties.
+
+ -- Constant: uc_property_t UC_PROPERTY_WHITE_SPACE
+ -- Constant: uc_property_t UC_PROPERTY_ALPHABETIC
+ -- Constant: uc_property_t UC_PROPERTY_OTHER_ALPHABETIC
+ -- Constant: uc_property_t UC_PROPERTY_NOT_A_CHARACTER
+ -- Constant: uc_property_t UC_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT
+ -- Constant: uc_property_t
+UC_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT
+ -- Constant: uc_property_t UC_PROPERTY_DEPRECATED
+ -- Constant: uc_property_t UC_PROPERTY_LOGICAL_ORDER_EXCEPTION
+ -- Constant: uc_property_t UC_PROPERTY_VARIATION_SELECTOR
+ -- Constant: uc_property_t UC_PROPERTY_PRIVATE_USE
+ -- Constant: uc_property_t UC_PROPERTY_UNASSIGNED_CODE_VALUE
+
+ The following properties are related to case folding.
+
+ -- Constant: uc_property_t UC_PROPERTY_UPPERCASE
+ -- Constant: uc_property_t UC_PROPERTY_OTHER_UPPERCASE
+ -- Constant: uc_property_t UC_PROPERTY_LOWERCASE
+ -- Constant: uc_property_t UC_PROPERTY_OTHER_LOWERCASE
+ -- Constant: uc_property_t UC_PROPERTY_TITLECASE
+ -- Constant: uc_property_t UC_PROPERTY_SOFT_DOTTED
+
+ The following properties are related to identifiers.
+
+ -- Constant: uc_property_t UC_PROPERTY_ID_START
+ -- Constant: uc_property_t UC_PROPERTY_OTHER_ID_START
+ -- Constant: uc_property_t UC_PROPERTY_ID_CONTINUE
+ -- Constant: uc_property_t UC_PROPERTY_OTHER_ID_CONTINUE
+ -- Constant: uc_property_t UC_PROPERTY_XID_START
+ -- Constant: uc_property_t UC_PROPERTY_XID_CONTINUE
+ -- Constant: uc_property_t UC_PROPERTY_PATTERN_WHITE_SPACE
+ -- Constant: uc_property_t UC_PROPERTY_PATTERN_SYNTAX
+
+ The following properties have an influence on shaping and rendering.
+
+ -- Constant: uc_property_t UC_PROPERTY_JOIN_CONTROL
+ -- Constant: uc_property_t UC_PROPERTY_GRAPHEME_BASE
+ -- Constant: uc_property_t UC_PROPERTY_GRAPHEME_EXTEND
+ -- Constant: uc_property_t UC_PROPERTY_OTHER_GRAPHEME_EXTEND
+ -- Constant: uc_property_t UC_PROPERTY_GRAPHEME_LINK
+
+ The following properties relate to bidirectional reordering.
+
+ -- Constant: uc_property_t UC_PROPERTY_BIDI_CONTROL
+ -- Constant: uc_property_t UC_PROPERTY_BIDI_LEFT_TO_RIGHT
+ -- Constant: uc_property_t UC_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT
+ -- Constant: uc_property_t UC_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT
+ -- Constant: uc_property_t UC_PROPERTY_BIDI_EUROPEAN_DIGIT
+ -- Constant: uc_property_t UC_PROPERTY_BIDI_EUR_NUM_SEPARATOR
+ -- Constant: uc_property_t UC_PROPERTY_BIDI_EUR_NUM_TERMINATOR
+ -- Constant: uc_property_t UC_PROPERTY_BIDI_ARABIC_DIGIT
+ -- Constant: uc_property_t UC_PROPERTY_BIDI_COMMON_SEPARATOR
+ -- Constant: uc_property_t UC_PROPERTY_BIDI_BLOCK_SEPARATOR
+ -- Constant: uc_property_t UC_PROPERTY_BIDI_SEGMENT_SEPARATOR
+ -- Constant: uc_property_t UC_PROPERTY_BIDI_WHITESPACE
+ -- Constant: uc_property_t UC_PROPERTY_BIDI_NON_SPACING_MARK
+ -- Constant: uc_property_t UC_PROPERTY_BIDI_BOUNDARY_NEUTRAL
+ -- Constant: uc_property_t UC_PROPERTY_BIDI_PDF
+ -- Constant: uc_property_t UC_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE
+ -- Constant: uc_property_t UC_PROPERTY_BIDI_OTHER_NEUTRAL
+
+ The following properties deal with number representations.
+
+ -- Constant: uc_property_t UC_PROPERTY_HEX_DIGIT
+ -- Constant: uc_property_t UC_PROPERTY_ASCII_HEX_DIGIT
+
+ The following properties deal with CJK.
+
+ -- Constant: uc_property_t UC_PROPERTY_IDEOGRAPHIC
+ -- Constant: uc_property_t UC_PROPERTY_UNIFIED_IDEOGRAPH
+ -- Constant: uc_property_t UC_PROPERTY_RADICAL
+ -- Constant: uc_property_t UC_PROPERTY_IDS_BINARY_OPERATOR
+ -- Constant: uc_property_t UC_PROPERTY_IDS_TRINARY_OPERATOR
+
+ Other miscellaneous properties are:
+
+ -- Constant: uc_property_t UC_PROPERTY_ZERO_WIDTH
+ -- Constant: uc_property_t UC_PROPERTY_SPACE
+ -- Constant: uc_property_t UC_PROPERTY_NON_BREAK
+ -- Constant: uc_property_t UC_PROPERTY_ISO_CONTROL
+ -- Constant: uc_property_t UC_PROPERTY_FORMAT_CONTROL
+ -- Constant: uc_property_t UC_PROPERTY_DASH
+ -- Constant: uc_property_t UC_PROPERTY_HYPHEN
+ -- Constant: uc_property_t UC_PROPERTY_PUNCTUATION
+ -- Constant: uc_property_t UC_PROPERTY_LINE_SEPARATOR
+ -- Constant: uc_property_t UC_PROPERTY_PARAGRAPH_SEPARATOR
+ -- Constant: uc_property_t UC_PROPERTY_QUOTATION_MARK
+ -- Constant: uc_property_t UC_PROPERTY_SENTENCE_TERMINAL
+ -- Constant: uc_property_t UC_PROPERTY_TERMINAL_PUNCTUATION
+ -- Constant: uc_property_t UC_PROPERTY_CURRENCY_SYMBOL
+ -- Constant: uc_property_t UC_PROPERTY_MATH
+ -- Constant: uc_property_t UC_PROPERTY_OTHER_MATH
+ -- Constant: uc_property_t UC_PROPERTY_PAIRED_PUNCTUATION
+ -- Constant: uc_property_t UC_PROPERTY_LEFT_OF_PAIR
+ -- Constant: uc_property_t UC_PROPERTY_COMBINING
+ -- Constant: uc_property_t UC_PROPERTY_COMPOSITE
+ -- Constant: uc_property_t UC_PROPERTY_DECIMAL_DIGIT
+ -- Constant: uc_property_t UC_PROPERTY_NUMERIC
+ -- Constant: uc_property_t UC_PROPERTY_DIACRITIC
+ -- Constant: uc_property_t UC_PROPERTY_EXTENDER
+ -- Constant: uc_property_t UC_PROPERTY_IGNORABLE_CONTROL
+
+ The following function looks up a property by its name.
+
+ -- Function: uc_property_t uc_property_byname (const char
+ *PROPERTY_NAME)
+ Returns the property given by name, e.g. `"White space"'. If a
+ property with the given name exists, the result will satisfy the
+ `uc_property_is_valid' predicate. Otherwise the result will not
+ satisfy this predicate and must not be passed to functions that
+ expect an `uc_property_t' argument.
+
+ This function references a big table of all predefined properties.
+ Its use can significantly increase the size of your application.
+
+ -- Function: bool uc_property_is_valid (uc_property_t property)
+ Returns `true' when the given property is valid, or `false'
+ otherwise.
+
+ The following function views a property as a set of Unicode
+characters.
+
+ -- Function: bool uc_is_property (ucs4_t UC, uc_property_t PROPERTY)
+ Tests whether the Unicode character UC has the given property.
+
+
+File: libunistring.info, Node: Properties as functions, Prev: Properties as objects, Up: Properties
+
+8.8.2 Properties as functions - the functional API
+--------------------------------------------------
+
+ The following are general properties.
+
+ -- Function: bool uc_is_property_white_space (ucs4_t UC)
+ -- Function: bool uc_is_property_alphabetic (ucs4_t UC)
+ -- Function: bool uc_is_property_other_alphabetic (ucs4_t UC)
+ -- Function: bool uc_is_property_not_a_character (ucs4_t UC)
+ -- Function: bool uc_is_property_default_ignorable_code_point (ucs4_t
+ UC)
+ -- Function: bool uc_is_property_other_default_ignorable_code_point
+ (ucs4_t UC)
+ -- Function: bool uc_is_property_deprecated (ucs4_t UC)
+ -- Function: bool uc_is_property_logical_order_exception (ucs4_t UC)
+ -- Function: bool uc_is_property_variation_selector (ucs4_t UC)
+ -- Function: bool uc_is_property_private_use (ucs4_t UC)
+ -- Function: bool uc_is_property_unassigned_code_value (ucs4_t UC)
+
+ The following properties are related to case folding.
+
+ -- Function: bool uc_is_property_uppercase (ucs4_t UC)
+ -- Function: bool uc_is_property_other_uppercase (ucs4_t UC)
+ -- Function: bool uc_is_property_lowercase (ucs4_t UC)
+ -- Function: bool uc_is_property_other_lowercase (ucs4_t UC)
+ -- Function: bool uc_is_property_titlecase (ucs4_t UC)
+ -- Function: bool uc_is_property_soft_dotted (ucs4_t UC)
+
+ The following properties are related to identifiers.
+
+ -- Function: bool uc_is_property_id_start (ucs4_t UC)
+ -- Function: bool uc_is_property_other_id_start (ucs4_t UC)
+ -- Function: bool uc_is_property_id_continue (ucs4_t UC)
+ -- Function: bool uc_is_property_other_id_continue (ucs4_t UC)
+ -- Function: bool uc_is_property_xid_start (ucs4_t UC)
+ -- Function: bool uc_is_property_xid_continue (ucs4_t UC)
+ -- Function: bool uc_is_property_pattern_white_space (ucs4_t UC)
+ -- Function: bool uc_is_property_pattern_syntax (ucs4_t UC)
+
+ The following properties have an influence on shaping and rendering.
+
+ -- Function: bool uc_is_property_join_control (ucs4_t UC)
+ -- Function: bool uc_is_property_grapheme_base (ucs4_t UC)
+ -- Function: bool uc_is_property_grapheme_extend (ucs4_t UC)
+ -- Function: bool uc_is_property_other_grapheme_extend (ucs4_t UC)
+ -- Function: bool uc_is_property_grapheme_link (ucs4_t UC)
+
+ The following properties relate to bidirectional reordering.
+
+ -- Function: bool uc_is_property_bidi_control (ucs4_t UC)
+ -- Function: bool uc_is_property_bidi_left_to_right (ucs4_t UC)
+ -- Function: bool uc_is_property_bidi_hebrew_right_to_left (ucs4_t UC)
+ -- Function: bool uc_is_property_bidi_arabic_right_to_left (ucs4_t UC)
+ -- Function: bool uc_is_property_bidi_european_digit (ucs4_t UC)
+ -- Function: bool uc_is_property_bidi_eur_num_separator (ucs4_t UC)
+ -- Function: bool uc_is_property_bidi_eur_num_terminator (ucs4_t UC)
+ -- Function: bool uc_is_property_bidi_arabic_digit (ucs4_t UC)
+ -- Function: bool uc_is_property_bidi_common_separator (ucs4_t UC)
+ -- Function: bool uc_is_property_bidi_block_separator (ucs4_t UC)
+ -- Function: bool uc_is_property_bidi_segment_separator (ucs4_t UC)
+ -- Function: bool uc_is_property_bidi_whitespace (ucs4_t UC)
+ -- Function: bool uc_is_property_bidi_non_spacing_mark (ucs4_t UC)
+ -- Function: bool uc_is_property_bidi_boundary_neutral (ucs4_t UC)
+ -- Function: bool uc_is_property_bidi_pdf (ucs4_t UC)
+ -- Function: bool uc_is_property_bidi_embedding_or_override (ucs4_t UC)
+ -- Function: bool uc_is_property_bidi_other_neutral (ucs4_t UC)
+
+ The following properties deal with number representations.
+
+ -- Function: bool uc_is_property_hex_digit (ucs4_t UC)
+ -- Function: bool uc_is_property_ascii_hex_digit (ucs4_t UC)
+
+ The following properties deal with CJK.
+
+ -- Function: bool uc_is_property_ideographic (ucs4_t UC)
+ -- Function: bool uc_is_property_unified_ideograph (ucs4_t UC)
+ -- Function: bool uc_is_property_radical (ucs4_t UC)
+ -- Function: bool uc_is_property_ids_binary_operator (ucs4_t UC)
+ -- Function: bool uc_is_property_ids_trinary_operator (ucs4_t UC)
+
+ Other miscellaneous properties are:
+
+ -- Function: bool uc_is_property_zero_width (ucs4_t UC)
+ -- Function: bool uc_is_property_space (ucs4_t UC)
+ -- Function: bool uc_is_property_non_break (ucs4_t UC)
+ -- Function: bool uc_is_property_iso_control (ucs4_t UC)
+ -- Function: bool uc_is_property_format_control (ucs4_t UC)
+ -- Function: bool uc_is_property_dash (ucs4_t UC)
+ -- Function: bool uc_is_property_hyphen (ucs4_t UC)
+ -- Function: bool uc_is_property_punctuation (ucs4_t UC)
+ -- Function: bool uc_is_property_line_separator (ucs4_t UC)
+ -- Function: bool uc_is_property_paragraph_separator (ucs4_t UC)
+ -- Function: bool uc_is_property_quotation_mark (ucs4_t UC)
+ -- Function: bool uc_is_property_sentence_terminal (ucs4_t UC)
+ -- Function: bool uc_is_property_terminal_punctuation (ucs4_t UC)
+ -- Function: bool uc_is_property_currency_symbol (ucs4_t UC)
+ -- Function: bool uc_is_property_math (ucs4_t UC)
+ -- Function: bool uc_is_property_other_math (ucs4_t UC)
+ -- Function: bool uc_is_property_paired_punctuation (ucs4_t UC)
+ -- Function: bool uc_is_property_left_of_pair (ucs4_t UC)
+ -- Function: bool uc_is_property_combining (ucs4_t UC)
+ -- Function: bool uc_is_property_composite (ucs4_t UC)
+ -- Function: bool uc_is_property_decimal_digit (ucs4_t UC)
+ -- Function: bool uc_is_property_numeric (ucs4_t UC)
+ -- Function: bool uc_is_property_diacritic (ucs4_t UC)
+ -- Function: bool uc_is_property_extender (ucs4_t UC)
+ -- Function: bool uc_is_property_ignorable_control (ucs4_t UC)
+
+
+File: libunistring.info, Node: Scripts, Next: Blocks, Prev: Properties, Up: unictype.h
+
+8.9 Scripts
+===========
+
+ The Unicode characters are subdivided into scripts.
+
+ The following type is used to represent a script:
+
+ -- Type: uc_script_t
+ This data type is a structure type that refers to statically
+ allocated read-only data. It contains the following fields:
+ const char *name;
+
+ The `name' field contains the name of the script.
+
+ The following functions look up a script.
+
+ -- Function: const uc_script_t * uc_script (ucs4_t UC)
+ Returns the script of a Unicode character. Returns NULL if UC
+ does not belong to any script.
+
+ -- Function: const uc_script_t * uc_script_byname (const char
+ *SCRIPT_NAME)
+ Returns the script given by its name, e.g. `"HAN"'. Returns NULL
+ if a script with the given name does not exist.
+
+ The following function views a script as a set of Unicode characters.
+
+ -- Function: bool uc_is_script (ucs4_t UC, const uc_script_t *SCRIPT)
+ Tests whether a Unicode character belongs to a given script.
+
+ The following gives a global picture of all scripts.
+
+ -- Function: void uc_all_scripts (const uc_script_t **SCRIPTS, size_t
+ *COUNT)
+ Get the list of all scripts. Stores a pointer to an array of all
+ scripts in `*SCRIPTS' and the length of this array in `*COUNT'.
+
+
+File: libunistring.info, Node: Blocks, Next: ISO C and Java syntax, Prev: Scripts, Up: unictype.h
+
+8.10 Blocks
+===========
+
+ The Unicode characters are subdivided into blocks. A block is an
+interval of Unicode code points.
+
+ The following type is used to represent a block.
+
+ -- Type: uc_block_t
+ This data type is a structure type that refers to statically
+ allocated data. It contains the following fields:
+ ucs4_t start;
+ ucs4_t end;
+ const char *name;
+
+ The `start' field is the first Unicode code point in the block.
+
+ The `end' field is the last Unicode code point in the block.
+
+ The `name' field is the name of the block.
+
+ The following function looks up a block.
+
+ -- Function: const uc_block_t * uc_block (ucs4_t UC)
+ Returns the block a character belongs to.
+
+ The following function views a block as a set of Unicode characters.
+
+ -- Function: bool uc_is_block (ucs4_t UC, const uc_block_t *BLOCK)
+ Tests whether a Unicode character belongs to a given block.
+
+ The following gives a global picture of all block.
+
+ -- Function: void uc_all_blocks (const uc_block_t **BLOCKS, size_t
+ *COUNT)
+ Get the list of all blocks. Stores a pointer to an array of all
+ blocks in `*BLOCKS' and the length of this array in `*COUNT'.
+
+
+File: libunistring.info, Node: ISO C and Java syntax, Next: Classifications like in ISO C, Prev: Blocks, Up: unictype.h
+
+8.11 ISO C and Java syntax
+==========================
+
+ The following properties are taken from language standards. The
+supported language standards are ISO C 99 and Java.
+
+ -- Function: bool uc_is_c_whitespace (ucs4_t UC)
+ Tests whether a Unicode character is considered whitespace in ISO
+ C 99.
+
+ -- Function: bool uc_is_java_whitespace (ucs4_t UC)
+ Tests whether a Unicode character is considered whitespace in Java.
+
+ The following enumerated values are the possible return values of
+the functions `uc_c_ident_category' and `uc_java_ident_category'.
+
+ -- Constant: int UC_IDENTIFIER_START
+ This return value means that the given character is valid as first
+ or subsequent character in an identifier.
+
+ -- Constant: int UC_IDENTIFIER_VALID
+ This return value means that the given character is valid as
+ subsequent character only.
+
+ -- Constant: int UC_IDENTIFIER_INVALID
+ This return value means that the given character is not valid in
+ an identifier.
+
+ -- Constant: int UC_IDENTIFIER_IGNORABLE
+ This return value (only for Java) means that the given character
+ is ignorable.
+
+ The following function determine whether a given character can be a
+constituent of an identifier in the given programming language.
+
+ -- Function: int uc_c_ident_category (ucs4_t UC)
+ Returns the categorization of a Unicode character with respect to
+ the ISO C 99 identifier syntax.
+
+ -- Function: int uc_java_ident_category (ucs4_t UC)
+ Returns the categorization of a Unicode character with respect to
+ the Java identifier syntax.
+
+
+File: libunistring.info, Node: Classifications like in ISO C, Prev: ISO C and Java syntax, Up: unictype.h
+
+8.12 Classifications like in ISO C
+==================================
+
+ The following character classifications mimic those declared in the
+ISO C header files `<ctype.h>' and `<wctype.h>'. These functions are
+deprecated, because this set of functions was designed with ASCII in
+mind and cannot reflect the more diverse reality of the Unicode
+character set. But they can be a quick-and-dirty porting aid when
+migrating from `wchar_t' APIs to Unicode strings.
+
+ -- Function: bool uc_is_alnum (ucs4_t UC)
+ Tests for any character for which `uc_is_alpha' or `uc_is_digit' is
+ true.
+
+ -- Function: bool uc_is_alpha (ucs4_t UC)
+ Tests for any character for which `uc_is_upper' or `uc_is_lower' is
+ true, or any character that is one of a locale-specific set of
+ characters for which none of `uc_is_cntrl', `uc_is_digit',
+ `uc_is_punct', or `uc_is_space' is true.
+
+ -- Function: bool uc_is_cntrl (ucs4_t UC)
+ Tests for any control character.
+
+ -- Function: bool uc_is_digit (ucs4_t UC)
+ Tests for any character that corresponds to a decimal-digit
+ character.
+
+ -- Function: bool uc_is_graph (ucs4_t UC)
+ Tests for any character for which `uc_is_print' is true and
+ `uc_is_space' is false.
+
+ -- Function: bool uc_is_lower (ucs4_t UC)
+ Tests for any character that corresponds to a lowercase letter or
+ is one of a locale-specific set of characters for which none of
+ `uc_is_cntrl', `uc_is_digit', `uc_is_punct', or `uc_is_space' is
+ true.
+
+ -- Function: bool uc_is_print (ucs4_t UC)
+ Tests for any printing character.
+
+ -- Function: bool uc_is_punct (ucs4_t UC)
+ Tests for any printing character that is one of a locale-specific
+ set of characters for which neither `uc_is_space' nor
+ `uc_is_alnum' is true.
+
+ -- Function: bool uc_is_space (ucs4_t UC)
+ Test for any character that corresponds to a locale-specific set
+ of characters for which none of `uc_is_alnum', `uc_is_graph', or
+ `uc_is_punct' is true.
+
+ -- Function: bool uc_is_upper (ucs4_t UC)
+ Tests for any character that corresponds to an uppercase letter or
+ is one of a locale-specific set of characters for which none of
+ `uc_is_cntrl', `uc_is_digit', `uc_is_punct', or `uc_is_space' is
+ true.
+
+ -- Function: bool uc_is_xdigit (ucs4_t UC)
+ Tests for any character that corresponds to a hexadecimal-digit
+ character.
+
+ -- Function: bool uc_is_blank (ucs4_t UC)
+ Tests for any character that corresponds to a standard blank
+ character or a locale-specific set of characters for which
+ `uc_is_alnum' is false.
+
+
+File: libunistring.info, Node: uniwidth.h, Next: uniwbrk.h, Prev: unictype.h, Up: Top
+
+9 Display width `<uniwidth.h>'
+******************************
+
+ This include file declares functions that return the display width,
+measured in columns, of characters or strings, when output to a device
+that uses non-proportional fonts.
+
+ Note that for some rarely used characters the actual fonts or
+terminal emulators can use a different width. There is no mechanism
+for communicating the display width of characters across a Unix
+pseudo-terminal (tty). Also, there are scripts with complex rendering,
+like the Indic scripts. For these scripts, there is no such concept as
+non-proportional fonts. Therefore the results of these functions
+usually work fine on most scripts and on most characters but can fail
+to represent the actual display width.
+
+ These functions are locale dependent. The ENCODING argument
+identifies the encoding (e.g. `"ISO-8859-2"' for Polish).
+
+ -- Function: int uc_width (ucs4_t UC, const char *ENCODING)
+ Determines and returns the number of column positions required for
+ UC. Returns -1 if UC is a control character that has an influence
+ on the column position when output.
+
+ -- Function: int u8_width (const uint8_t *S, size_t N, const char
+ *ENCODING)
+ -- Function: int u16_width (const uint16_t *S, size_t N, const char
+ *ENCODING)
+ -- Function: int u32_width (const uint32_t *S, size_t N, const char
+ *ENCODING)
+ Determines and returns the number of column positions required for
+ first N units (or fewer if S ends before this) in S. This
+ function ignores control characters in the string.
+
+ -- Function: int u8_strwidth (const uint8_t *S, const char *ENCODING)
+ -- Function: int u16_strwidth (const uint16_t *S, const char *ENCODING)
+ -- Function: int u32_strwidth (const uint32_t *S, const char *ENCODING)
+ Determines and returns the number of column positions required for
+ S. This function ignores control characters in the string.
+
+
+File: libunistring.info, Node: uniwbrk.h, Next: unilbrk.h, Prev: uniwidth.h, Up: Top
+
+10 Word breaks in strings `<uniwbrk.h>'
+***************************************
+
+ This include file declares functions for determining where in a
+string "words" start and end. Here "words" are not necessarily the
+same as entities that can be looked up in dictionaries, but rather
+groups of consecutive characters that should not be split by text
+processing operations.
+
+* Menu:
+
+* Word breaks in a string::
+* Word break property::
+
+
+File: libunistring.info, Node: Word breaks in a string, Next: Word break property, Up: uniwbrk.h
+
+10.1 Word breaks in a string
+============================
+
+ The following functions determine the word breaks in a string.
+
+ -- Function: void u8_wordbreaks (const uint8_t *S, size_t N, char *P)
+ -- Function: void u16_wordbreaks (const uint16_t *S, size_t N, char *P)
+ -- Function: void u32_wordbreaks (const uint32_t *S, size_t N, char *P)
+ -- Function: void ulc_wordbreaks (const char *S, size_t N, char *P)
+ Determines the word break points in S, an array of N units, and
+ stores the result at `P[0..N-1]'.
+ `P[i] = 1'
+ means that there is a word boundary between `S[i-1]' and
+ `S[i]'.
+
+ `P[i] = 0'
+ means that `S[i-1]' and `S[i]' must not be separated.
+ `P[0]' is always set to 0. If an application wants to consider a
+ word break to be present at the beginning of the string (before
+ `S[0]') or at the end of the string (after `S[0..N-1]'), it has to
+ treat these cases explicitly.
+
+
+File: libunistring.info, Node: Word break property, Prev: Word breaks in a string, Up: uniwbrk.h
+
+10.2 Word break property
+========================
+
+ This is a more low-level API. The word break property is a property
+defined in Unicode Standard Annex #29, section "Word Boundaries", see
+`http://www.unicode.org/reports/tr29/#Word_Boundaries'. It is used for
+determining the word breaks in a string.
+
+ The following are the possible values of the word break property.
+More values may be added in the future.
+
+ -- Constant: int WBP_OTHER
+ -- Constant: int WBP_CR
+ -- Constant: int WBP_LF
+ -- Constant: int WBP_NEWLINE
+ -- Constant: int WBP_EXTEND
+ -- Constant: int WBP_FORMAT
+ -- Constant: int WBP_KATAKANA
+ -- Constant: int WBP_ALETTER
+ -- Constant: int WBP_MIDNUMLET
+ -- Constant: int WBP_MIDLETTER
+ -- Constant: int WBP_MIDNUM
+ -- Constant: int WBP_NUMERIC
+ -- Constant: int WBP_EXTENDNUMLET
+
+ The following function looks up the word break property of a
+character.
+
+ -- Function: int uc_wordbreak_property (ucs4_t UC)
+ Returns the Word_Break property of a Unicode character.
+
+
+File: libunistring.info, Node: unilbrk.h, Next: uninorm.h, Prev: uniwbrk.h, Up: Top
+
+11 Line breaking `<unilbrk.h>'
+******************************
+
+ This include file declares functions for determining where in a
+string line breaks could or should be introduced, in order to make the
+displayed string fit into a column of given width.
+
+ These functions are locale dependent. The ENCODING argument
+identifies the encoding (e.g. `"ISO-8859-2"' for Polish).
+
+ The following enumerated values indicate whether, at a given
+position, a line break is possible or not. Given an string S as an
+array `S[0..N-1]' and a position I, the values have the following
+meanings:
+
+ -- Constant: int UC_BREAK_MANDATORY
+ This value indicates that `S[I]' is a line break character.
+
+ -- Constant: int UC_BREAK_POSSIBLE
+ This value indicates that a line break may be inserted between
+ `S[I-1]' and `S[I]'.
+
+ -- Constant: int UC_BREAK_HYPHENATION
+ This value indicates that a hyphen and a line break may be
+ inserted between `S[I-1]' and `S[I]'. But beware of language
+ dependent hyphenation rules.
+
+ -- Constant: int UC_BREAK_PROHIBITED
+ This value indicates that `S[I-1]' and `S[I]' must not be
+ separated.
+
+ -- Constant: int UC_BREAK_UNDEFINED
+ This value is not used as a return value; rather, in the
+ overriding argument of the `u*_width_linebreaks' functions, it
+ indicates the absence of an override.
+
+ The following functions determine the positions at which line breaks
+are possible.
+
+ -- Function: void u8_possible_linebreaks (const uint8_t *S, size_t N,
+ const char *ENCODING, char *P)
+ -- Function: void u16_possible_linebreaks (const uint16_t *S, size_t
+ N, const char *ENCODING, char *P)
+ -- Function: void u32_possible_linebreaks (const uint32_t *S, size_t
+ N, const char *ENCODING, char *P)
+ -- Function: void ulc_possible_linebreaks (const char *S, size_t N,
+ const char *ENCODING, char *P)
+ Determines the line break points in S, and stores the result at
+ `P[0..N-1]'. Every `P[I]' is assigned one of the values
+ `UC_BREAK_MANDATORY', `UC_BREAK_POSSIBLE', `UC_BREAK_HYPHENATION',
+ `UC_BREAK_PROHIBITED'.
+
+ The following functions determine where line breaks should be
+inserted so that each line fits in a given width, when output to a
+device that uses non-proportional fonts.
+
+ -- Function: int u8_width_linebreaks (const uint8_t *S, size_t N, int
+ WIDTH, int START_COLUMN, int AT_END_COLUMNS, const char
+ *OVERRIDE, const char *ENCODING, char *P)
+ -- Function: int u16_width_linebreaks (const uint16_t *S, size_t N,
+ int WIDTH, int START_COLUMN, int AT_END_COLUMNS, const char
+ *OVERRIDE, const char *ENCODING, char *P)
+ -- Function: int u32_width_linebreaks (const uint32_t *S, size_t N,
+ int WIDTH, int START_COLUMN, int AT_END_COLUMNS, const char
+ *OVERRIDE, const char *ENCODING, char *P)
+ -- Function: int ulc_width_linebreaks (const char *S, size_t N, int
+ WIDTH, int START_COLUMN, int AT_END_COLUMNS, const char
+ *OVERRIDE, const char *ENCODING, char *P)
+ Chooses the best line breaks, assuming that every character
+ occupies a width given by the `uc_width' function (see *note
+ uniwidth.h::).
+
+ The string is `S[0..N-1]'.
+
+ The maximum number of columns per line is given as WIDTH. The
+ starting column of the string is given as START_COLUMN. If the
+ algorithm shall keep room after the last piece, this amount of
+ room can be given as AT_END_COLUMNS.
+
+ OVERRIDE is an optional override; if `OVERRIDE[I] !=
+ UC_BREAK_UNDEFINED', `OVERRIDE[I]' takes precedence over `P[I]' as
+ returned by the `u*_possible_linebreaks' function.
+
+ The given ENCODING is used for disambiguating widths in `uc_width'.
+
+ Returns the column after the end of the string, and stores the
+ result at `P[0..N-1]'. Every `P[I]' is assigned one of the values
+ `UC_BREAK_MANDATORY', `UC_BREAK_POSSIBLE', `UC_BREAK_HYPHENATION',
+ `UC_BREAK_PROHIBITED'. Here the value `UC_BREAK_POSSIBLE'
+ indicates that a line break _should_ be inserted.
+
+
+File: libunistring.info, Node: uninorm.h, Next: unicase.h, Prev: unilbrk.h, Up: Top
+
+12 Normalization forms (composition and decomposition) `<uninorm.h>'
+********************************************************************
+
+ This include file defines functions for transforming Unicode strings
+to one of the four normal forms, known as NFC, NFD, NKFC, NFKD. These
+transformations involve decomposition and -- for NFC and NFKC --
+composition of Unicode characters.
+
+* Menu:
+
+* Decomposition of characters::
+* Composition of characters::
+* Normalization of strings::
+* Normalizing comparisons::
+* Normalization of streams::
+
+
+File: libunistring.info, Node: Decomposition of characters, Next: Composition of characters, Up: uninorm.h
+
+12.1 Decomposition of Unicode characters
+========================================
+
+ The following enumerated values are the possible types of
+decomposition of a Unicode character.
+
+ -- Constant: int UC_DECOMP_CANONICAL
+ Denotes canonical decomposition.
+
+ -- Constant: int UC_DECOMP_FONT
+ UCD marker: `<font>'. Denotes a font variant (e.g. a blackletter
+ form).
+
+ -- Constant: int UC_DECOMP_NOBREAK
+ UCD marker: `<noBreak>'. Denotes a no-break version of a space or
+ hyphen.
+
+ -- Constant: int UC_DECOMP_INITIAL
+ UCD marker: `<initial>'. Denotes an initial presentation form
+ (Arabic).
+
+ -- Constant: int UC_DECOMP_MEDIAL
+ UCD marker: `<medial>'. Denotes a medial presentation form
+ (Arabic).
+
+ -- Constant: int UC_DECOMP_FINAL
+ UCD marker: `<final>'. Denotes a final presentation form (Arabic).
+
+ -- Constant: int UC_DECOMP_ISOLATED
+ UCD marker: `<isolated>'. Denotes an isolated presentation form
+ (Arabic).
+
+ -- Constant: int UC_DECOMP_CIRCLE
+ UCD marker: `<circle>'. Denotes an encircled form.
+
+ -- Constant: int UC_DECOMP_SUPER
+ UCD marker: `<super>'. Denotes a superscript form.
+
+ -- Constant: int UC_DECOMP_SUB
+ UCD marker: `<sub>'. Denotes a subscript form.
+
+ -- Constant: int UC_DECOMP_VERTICAL
+ UCD marker: `<vertical>'. Denotes a vertical layout presentation
+ form.
+
+ -- Constant: int UC_DECOMP_WIDE
+ UCD marker: `<wide>'. Denotes a wide (or zenkaku) compatibility
+ character.
+
+ -- Constant: int UC_DECOMP_NARROW
+ UCD marker: `<narrow>'. Denotes a narrow (or hankaku)
+ compatibility character.
+
+ -- Constant: int UC_DECOMP_SMALL
+ UCD marker: `<small>'. Denotes a small variant form (CNS
+ compatibility).
+
+ -- Constant: int UC_DECOMP_SQUARE
+ UCD marker: `<square>'. Denotes a CJK squared font variant.
+
+ -- Constant: int UC_DECOMP_FRACTION
+ UCD marker: `<fraction>'. Denotes a vulgar fraction form.
+
+ -- Constant: int UC_DECOMP_COMPAT
+ UCD marker: `<compat>'. Denotes an otherwise unspecified
+ compatibility character.
+
+ The following constant denotes the maximum size of decomposition of
+a single Unicode character.
+
+ -- Macro: unsigned int UC_DECOMPOSITION_MAX_LENGTH
+ This macro expands to a constant that is the required size of
+ buffer passed to the `uc_decomposition' and
+ `uc_canonical_decomposition' functions.
+
+ The following functions decompose a Unicode character.
+
+ -- Function: int uc_decomposition (ucs4_t UC, int *DECOMP_TAG, ucs4_t
+ *DECOMPOSITION)
+ Returns the character decomposition mapping of the Unicode
+ character UC. DECOMPOSITION must point to an array of at least
+ `UC_DECOMPOSITION_MAX_LENGTH' `ucs_t' elements.
+
+ When a decomposition exists, `DECOMPOSITION[0..N-1]' and
+ `*DECOMP_TAG' are filled and N is returned. Otherwise -1 is
+ returned.
+
+ -- Function: int uc_canonical_decomposition (ucs4_t UC, ucs4_t
+ *DECOMPOSITION)
+ Returns the canonical character decomposition mapping of the
+ Unicode character UC. DECOMPOSITION must point to an array of at
+ least `UC_DECOMPOSITION_MAX_LENGTH' `ucs_t' elements.
+
+ When a decomposition exists, `DECOMPOSITION[0..N-1]' is filled and
+ N is returned. Otherwise -1 is returned.
+
+
+File: libunistring.info, Node: Composition of characters, Next: Normalization of strings, Prev: Decomposition of characters, Up: uninorm.h
+
+12.2 Composition of Unicode characters
+======================================
+
+ The following function composes a Unicode character from two Unicode
+characters.
+
+ -- Function: ucs4_t uc_composition (ucs4_t UC1, ucs4_t UC2)
+ Attempts to combine the Unicode characters UC1, UC2. UC1 is known
+ to have canonical combining class 0.
+
+ Returns the combination of UC1 and UC2, if it exists. Returns 0
+ otherwise.
+
+ Not all decompositions can be recombined using this function. See
+ the Unicode file `CompositionExclusions.txt' for details.
+
+
+File: libunistring.info, Node: Normalization of strings, Next: Normalizing comparisons, Prev: Composition of characters, Up: uninorm.h
+
+12.3 Normalization of strings
+=============================
+
+ The Unicode standard defines four normalization forms for Unicode
+strings. The following type is used to denote a normalization form.
+
+ -- Type: uninorm_t
+ An object of type `uninorm_t' denotes a Unicode normalization form.
+ This is a scalar type; its values can be compared with `=='.
+
+ The following constants denote the four normalization forms.
+
+ -- Macro: uninorm_t UNINORM_NFD
+ Denotes Normalization form D: canonical decomposition.
+
+ -- Macro: uninorm_t UNINORM_NFC
+ Normalization form C: canonical decomposition, then canonical
+ composition.
+
+ -- Macro: uninorm_t UNINORM_NFKD
+ Normalization form KD: compatibility decomposition.
+
+ -- Macro: uninorm_t UNINORM_NFKC
+ Normalization form KC: compatibility decomposition, then canonical
+ composition.
+
+ The following functions operate on `uninorm_t' objects.
+
+ -- Function: bool uninorm_is_compat_decomposing (uninorm_t NF)
+ Tests whether the normalization form NF does compatibility
+ decomposition.
+
+ -- Function: bool uninorm_is_composing (uninorm_t NF)
+ Tests whether the normalization form NF includes canonical
+ composition.
+
+ -- Function: uninorm_t uninorm_decomposing_form (uninorm_t NF)
+ Returns the decomposing variant of the normalization form NF.
+ This maps NFC,NFD -> NFD and NFKC,NFKD -> NFKD.
+
+ The following functions apply a Unicode normalization form to a
+Unicode string.
+
+ -- Function: uint8_t * u8_normalize (uninorm_t NF, const uint8_t *S,
+ size_t N, uint8_t *RESULTBUF, size_t *LENGTHP)
+ -- Function: uint16_t * u16_normalize (uninorm_t NF, const uint16_t
+ *S, size_t N, uint16_t *RESULTBUF, size_t *LENGTHP)
+ -- Function: uint32_t * u32_normalize (uninorm_t NF, const uint32_t
+ *S, size_t N, uint32_t *RESULTBUF, size_t *LENGTHP)
+ Returns the specified normalization form of a string.
+
+
+File: libunistring.info, Node: Normalizing comparisons, Next: Normalization of streams, Prev: Normalization of strings, Up: uninorm.h
+
+12.4 Normalizing comparisons
+============================
+
+ The following functions compare Unicode string, ignoring differences
+in normalization.
+
+ -- Function: int u8_normcmp (const uint8_t *S1, size_t N1, const
+ uint8_t *S2, size_t N2, uninorm_t NF, int *RESULTP)
+ -- Function: int u16_normcmp (const uint16_t *S1, size_t N1, const
+ uint16_t *S2, size_t N2, uninorm_t NF, int *RESULTP)
+ -- Function: int u32_normcmp (const uint32_t *S1, size_t N1, const
+ uint32_t *S2, size_t N2, uninorm_t NF, int *RESULTP)
+ Compares S1 and S2, ignoring differences in normalization.
+
+ NF must be either `UNINORM_NFD' or `UNINORM_NFKD'.
+
+ If successful, sets `*RESULTP' to -1 if S1 < S2, 0 if S1 = S2, 1
+ if S1 > S2, and returns 0. Upon failure, returns -1 with `errno'
+ set.
+
+ -- Function: char * u8_normxfrm (const uint8_t *S, size_t N, uninorm_t
+ NF, char *RESULTBUF, size_t *LENGTHP)
+ -- Function: char * u16_normxfrm (const uint16_t *S, size_t N,
+ uninorm_t NF, char *RESULTBUF, size_t *LENGTHP)
+ -- Function: char * u32_normxfrm (const uint32_t *S, size_t N,
+ uninorm_t NF, char *RESULTBUF, size_t *LENGTHP)
+ Converts the string S of length N to a NUL-terminated byte
+ sequence, in such a way that comparing `u8_normxfrm (S1)' and
+ `u8_normxfrm (S2)' with the `u8_cmp2' function is equivalent to
+ comparing S1 and S2 with the `u8_normcoll' function.
+
+ NF must be either `UNINORM_NFC' or `UNINORM_NFKC'.
+
+ -- Function: int u8_normcoll (const uint8_t *S1, size_t N1, const
+ uint8_t *S2, size_t N2, uninorm_t NF, int *RESULTP)
+ -- Function: int u16_normcoll (const uint16_t *S1, size_t N1, const
+ uint16_t *S2, size_t N2, uninorm_t NF, int *RESULTP)
+ -- Function: int u32_normcoll (const uint32_t *S1, size_t N1, const
+ uint32_t *S2, size_t N2, uninorm_t NF, int *RESULTP)
+ Compares S1 and S2, ignoring differences in normalization, using
+ the collation rules of the current locale.
+
+ NF must be either `UNINORM_NFC' or `UNINORM_NFKC'.
+
+ If successful, sets `*RESULTP' to -1 if S1 < S2, 0 if S1 = S2, 1
+ if S1 > S2, and returns 0. Upon failure, returns -1 with `errno'
+ set.
+
+
+File: libunistring.info, Node: Normalization of streams, Prev: Normalizing comparisons, Up: uninorm.h
+
+12.5 Normalization of streams of Unicode characters
+===================================================
+
+ A "stream of Unicode characters" is essentially a function that
+accepts an `ucs4_t' argument repeatedly, optionally combined with a
+function that "flushes" the stream.
+
+ -- Type: struct uninorm_filter
+ This is the data type of a stream of Unicode characters that
+ normalizes its input according to a given normalization form and
+ passes the normalized character sequence to the encapsulated
+ stream of Unicode characters.
+
+ -- Function: struct uninorm_filter * uninorm_filter_create (uninorm_t
+ NF, int (*STREAM_FUNC) (void *STREAM_DATA, ucs4_t UC), void
+ *STREAM_DATA)
+ Creates and returns a normalization filter for Unicode characters.
+
+ The pair (STREAM_FUNC, STREAM_DATA) is the encapsulated stream.
+ `STREAM_FUNC (STREAM_DATA, UC)' receives the Unicode character UC
+ and returns 0 if successful, or -1 with `errno' set upon failure.
+
+ Returns the new filter, or NULL with `errno' set upon failure.
+
+ -- Function: int uninorm_filter_write (struct uninorm_filter *FILTER,
+ ucs4_t UC)
+ Stuffs a Unicode character into a normalizing filter. Returns 0
+ if successful, or -1 with `errno' set upon failure.
+
+ -- Function: int uninorm_filter_flush (struct uninorm_filter *FILTER)
+ Brings data buffered in the filter to its destination, the
+ encapsulated stream.
+
+ Returns 0 if successful, or -1 with `errno' set upon failure.
+
+ Note! If after calling this function, additional characters are
+ written into the filter, the resulting character sequence in the
+ encapsulated stream will not necessarily be normalized.
+
+ -- Function: int uninorm_filter_free (struct uninorm_filter *FILTER)
+ Brings data buffered in the filter to its destination, the
+ encapsulated stream, then closes and frees the filter.
+
+ Returns 0 if successful, or -1 with `errno' set upon failure.
+
+
+File: libunistring.info, Node: unicase.h, Next: uniregex.h, Prev: uninorm.h, Up: Top
+
+13 Case mappings `<unicase.h>'
+******************************
+
+ This include file defines functions for case mapping for Unicode
+strings and case insensitive comparison of Unicode strings and C
+strings.
+
+ These string functions fix the problems that were mentioned in *note
+char * strings::, namely, they handle the Croatian LETTER DZ WITH
+CARON, the German LATIN SMALL LETTER SHARP S, the Greek sigma and the
+Lithuanian i correctly.
+
+* Menu:
+
+* Case mappings of characters::
+* Case mappings of strings::
+* Case mappings of substrings::
+* Case insensitive comparison::
+* Case detection::
+
+
+File: libunistring.info, Node: Case mappings of characters, Next: Case mappings of strings, Up: unicase.h
+
+13.1 Case mappings of characters
+================================
+
+ The following functions implement case mappings on Unicode
+characters -- for those cases only where the result of the mapping is a
+again a single Unicode character.
+
+ These mappings are locale and context independent.
+
+ *WARNING!* These functions are not sufficient for languages such as
+German, Greek and Lithuanian. Better use the functions below that
+treat an entire string at once and are language aware.
+
+ -- Function: ucs4_t uc_toupper (ucs4_t UC)
+ Returns the uppercase mapping of the Unicode character UC.
+
+ -- Function: ucs4_t uc_tolower (ucs4_t UC)
+ Returns the lowercase mapping of the Unicode character UC.
+
+ -- Function: ucs4_t uc_totitle (ucs4_t UC)
+ Returns the titlecase mapping of the Unicode character UC.
+
+ The titlecase mapping of a character is to be used when the
+ character should look like upper case and the following characters
+ are lower cased.
+
+ For most characters, this is the same as the uppercase mapping.
+ There are only few characters where the title case variant and the
+ uuper case variant are different. These characters occur in the
+ Latin writing of the Croatian, Bosnian, and Serbian languages.
+
+ Lower case Title case Upper case
+ ------------------------------------------------------------------
+ LATIN SMALL LETTER LJ LATIN CAPITAL LETTER LATIN CAPITAL LETTER
+ L WITH SMALL LETTER J LJ
+ LATIN SMALL LETTER NJ LATIN CAPITAL LETTER LATIN CAPITAL LETTER
+ N WITH SMALL LETTER J NJ
+ LATIN SMALL LETTER DZ LATIN CAPITAL LETTER LATIN CAPITAL LETTER
+ D WITH SMALL LETTER Z DZ
+ LATIN SMALL LETTER LATIN CAPITAL LETTER LATIN CAPITAL LETTER
+ DZ WITH CARON D WITH SMALL LETTER DZ WITH CARON
+ Z WITH CARON
+
+
+File: libunistring.info, Node: Case mappings of strings, Next: Case mappings of substrings, Prev: Case mappings of characters, Up: unicase.h
+
+13.2 Case mappings of strings
+=============================
+
+ Case mapping should always be performed on entire strings, not on
+individual characters. The functions in this sections do so.
+
+ These functions allow to apply a normalization after the case
+mapping. The reason is that if you want to treat `ä' and `Ä' the
+same, you most often also want to treat the composed and decomposed
+forms of such a character, U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
+and U+0041 LATIN CAPITAL LETTER A U+0308 COMBINING DIAERESIS the same.
+The NF argument designates the normalization.
+
+ These functions are locale dependent. The ISO639_LANGUAGE argument
+identifies the language (e.g. `"tr"' for Turkish). NULL means to use
+locale independent case mappings.
+
+ -- Function: const char * uc_locale_language ()
+ Returns the ISO 639 language code of the current locale. Returns
+ `""' if it is unknown, or in the "C" locale.
+
+ -- Function: uint8_t * u8_toupper (const uint8_t *S, size_t N, const
+ char *ISO639_LANGUAGE, uninorm_t NF, uint8_t *RESULTBUF,
+ size_t *LENGTHP)
+ -- Function: uint16_t * u16_toupper (const uint16_t *S, size_t N,
+ const char *ISO639_LANGUAGE, uninorm_t NF, uint16_t
+ *RESULTBUF, size_t *LENGTHP)
+ -- Function: uint32_t * u32_toupper (const uint32_t *S, size_t N,
+ const char *ISO639_LANGUAGE, uninorm_t NF, uint32_t
+ *RESULTBUF, size_t *LENGTHP)
+ Returns the uppercase mapping of a string.
+
+ The NF argument identifies the normalization form to apply after
+ the case-mapping. It can also be NULL, for no normalization.
+
+ -- Function: uint8_t * u8_tolower (const uint8_t *S, size_t N, const
+ char *ISO639_LANGUAGE, uninorm_t NF, uint8_t *RESULTBUF,
+ size_t *LENGTHP)
+ -- Function: uint16_t * u16_tolower (const uint16_t *S, size_t N,
+ const char *ISO639_LANGUAGE, uninorm_t NF, uint16_t
+ *RESULTBUF, size_t *LENGTHP)
+ -- Function: uint32_t * u32_tolower (const uint32_t *S, size_t N,
+ const char *ISO639_LANGUAGE, uninorm_t NF, uint32_t
+ *RESULTBUF, size_t *LENGTHP)
+ Returns the lowercase mapping of a string.
+
+ The NF argument identifies the normalization form to apply after
+ the case-mapping. It can also be NULL, for no normalization.
+
+ -- Function: uint8_t * u8_totitle (const uint8_t *S, size_t N, const
+ char *ISO639_LANGUAGE, uninorm_t NF, uint8_t *RESULTBUF,
+ size_t *LENGTHP)
+ -- Function: uint16_t * u16_totitle (const uint16_t *S, size_t N,
+ const char *ISO639_LANGUAGE, uninorm_t NF, uint16_t
+ *RESULTBUF, size_t *LENGTHP)
+ -- Function: uint32_t * u32_totitle (const uint32_t *S, size_t N,
+ const char *ISO639_LANGUAGE, uninorm_t NF, uint32_t
+ *RESULTBUF, size_t *LENGTHP)
+ Returns the titlecase mapping of a string.
+
+ Mapping to title case means that, in each word, the first cased
+ character is being mapped to title case and the remaining
+ characters of the word are being mapped to lower case.
+
+ The NF argument identifies the normalization form to apply after
+ the case-mapping. It can also be NULL, for no normalization.
+
+
+File: libunistring.info, Node: Case mappings of substrings, Next: Case insensitive comparison, Prev: Case mappings of strings, Up: unicase.h
+
+13.3 Case mappings of substrings
+================================
+
+ Case mapping of a substring cannot simply be performed by extracting
+the substring and then applying the case mapping function to it. This
+does not work because case mapping requires some information about the
+surrounding characters. The following functions allow to apply case
+mappings to substrings of a given string, while taking into account the
+characters that precede it (the "prefix") and the characters that
+follow it (the "suffix").
+
+ -- Type: casing_prefix_context_t
+ This data type denotes the case-mapping context that is given by a
+ prefix string. It is an immediate type that can be copied by
+ simple assignment, without involving memory allocation. It is not
+ an array type.
+
+ -- Constant: casing_prefix_context_t unicase_empty_prefix_context
+ This constant is the case-mapping context that corresponds to an
+ empty prefix string.
+
+ The following functions return `casing_prefix_context_t' objects:
+
+ -- Function: casing_prefix_context_t u8_casing_prefix_context (const
+ uint8_t *S, size_t N)
+ -- Function: casing_prefix_context_t u16_casing_prefix_context (const
+ uint16_t *S, size_t N)
+ -- Function: casing_prefix_context_t u32_casing_prefix_context (const
+ uint32_t *S, size_t N)
+ Returns the case-mapping context of a given prefix string.
+
+ -- Function: casing_prefix_context_t u8_casing_prefixes_context (const
+ uint8_t *S, size_t N, casing_prefix_context_t A_CONTEXT)
+ -- Function: casing_prefix_context_t u16_casing_prefixes_context
+ (const uint16_t *S, size_t N, casing_prefix_context_t
+ A_CONTEXT)
+ -- Function: casing_prefix_context_t u32_casing_prefixes_context
+ (const uint32_t *S, size_t N, casing_prefix_context_t
+ A_CONTEXT)
+ Returns the case-mapping context of the prefix concat(A, S), given
+ the case-mapping context of the prefix A.
+
+ -- Type: casing_suffix_context_t
+ This data type denotes the case-mapping context that is given by a
+ suffix string. It is an immediate type that can be copied by
+ simple assignment, without involving memory allocation. It is not
+ an array type.
+
+ -- Constant: casing_suffix_context_t unicase_empty_suffix_context
+ This constant is the case-mapping context that corresponds to an
+ empty suffix string.
+
+ The following functions return `casing_suffix_context_t' objects:
+
+ -- Function: casing_suffix_context_t u8_casing_suffix_context (const
+ uint8_t *S, size_t N)
+ -- Function: casing_suffix_context_t u16_casing_suffix_context (const
+ uint16_t *S, size_t N)
+ -- Function: casing_suffix_context_t u32_casing_suffix_context (const
+ uint32_t *S, size_t N)
+ Returns the case-mapping context of a given suffix string.
+
+ -- Function: casing_suffix_context_t u8_casing_suffixes_context (const
+ uint8_t *S, size_t N, casing_suffix_context_t A_CONTEXT)
+ -- Function: casing_suffix_context_t u16_casing_suffixes_context
+ (const uint16_t *S, size_t N, casing_suffix_context_t
+ A_CONTEXT)
+ -- Function: casing_suffix_context_t u32_casing_suffixes_context
+ (const uint32_t *S, size_t N, casing_suffix_context_t
+ A_CONTEXT)
+ Returns the case-mapping context of the suffix concat(S, A), given
+ the case-mapping context of the suffix A.
+
+ The following functions perform a case mapping, considering the
+prefix context and the suffix context.
+
+ -- Function: uint8_t * u8_ct_toupper (const uint8_t *S, size_t N,
+ casing_prefix_context_t PREFIX_CONTEXT,
+ casing_suffix_context_t SUFFIX_CONTEXT, const char
+ *ISO639_LANGUAGE, uninorm_t NF, uint8_t *RESULTBUF, size_t
+ *LENGTHP)
+ -- Function: uint16_t * u16_ct_toupper (const uint16_t *S, size_t N,
+ casing_prefix_context_t PREFIX_CONTEXT,
+ casing_suffix_context_t SUFFIX_CONTEXT, const char
+ *ISO639_LANGUAGE, uninorm_t NF, uint16_t *RESULTBUF, size_t
+ *LENGTHP)
+ -- Function: uint32_t * u32_ct_toupper (const uint32_t *S, size_t N,
+ casing_prefix_context_t PREFIX_CONTEXT,
+ casing_suffix_context_t SUFFIX_CONTEXT, const char
+ *ISO639_LANGUAGE, uninorm_t NF, uint32_t *RESULTBUF, size_t
+ *LENGTHP)
+ Returns the uppercase mapping of a string that is surrounded by a
+ prefix and a suffix.
+
+ -- Function: uint8_t * u8_ct_tolower (const uint8_t *S, size_t N,
+ casing_prefix_context_t PREFIX_CONTEXT,
+ casing_suffix_context_t SUFFIX_CONTEXT, const char
+ *ISO639_LANGUAGE, uninorm_t NF, uint8_t *RESULTBUF, size_t
+ *LENGTHP)
+ -- Function: uint16_t * u16_ct_tolower (const uint16_t *S, size_t N,
+ casing_prefix_context_t PREFIX_CONTEXT,
+ casing_suffix_context_t SUFFIX_CONTEXT, const char
+ *ISO639_LANGUAGE, uninorm_t NF, uint16_t *RESULTBUF, size_t
+ *LENGTHP)
+ -- Function: uint32_t * u32_ct_tolower (const uint32_t *S, size_t N,
+ casing_prefix_context_t PREFIX_CONTEXT,
+ casing_suffix_context_t SUFFIX_CONTEXT, const char
+ *ISO639_LANGUAGE, uninorm_t NF, uint32_t *RESULTBUF, size_t
+ *LENGTHP)
+ Returns the lowercase mapping of a string that is surrounded by a
+ prefix and a suffix.
+
+ -- Function: uint8_t * u8_ct_totitle (const uint8_t *S, size_t N,
+ casing_prefix_context_t PREFIX_CONTEXT,
+ casing_suffix_context_t SUFFIX_CONTEXT, const char
+ *ISO639_LANGUAGE, uninorm_t NF, uint8_t *RESULTBUF, size_t
+ *LENGTHP)
+ -- Function: uint16_t * u16_ct_totitle (const uint16_t *S, size_t N,
+ casing_prefix_context_t PREFIX_CONTEXT,
+ casing_suffix_context_t SUFFIX_CONTEXT, const char
+ *ISO639_LANGUAGE, uninorm_t NF, uint16_t *RESULTBUF, size_t
+ *LENGTHP)
+ -- Function: uint32_t * u32_ct_totitle (const uint32_t *S, size_t N,
+ casing_prefix_context_t PREFIX_CONTEXT,
+ casing_suffix_context_t SUFFIX_CONTEXT, const char
+ *ISO639_LANGUAGE, uninorm_t NF, uint32_t *RESULTBUF, size_t
+ *LENGTHP)
+ Returns the titlecase mapping of a string that is surrounded by a
+ prefix and a suffix.
+
+ For example, to uppercase the UTF-8 substring between `s +
+start_index' and `s + end_index' of a string that extends from `s' to
+`s + u8_strlen (s)', you can use the statements
+
+ size_t result_length;
+ uint8_t result =
+ u8_ct_toupper (s + start_index, end_index - start_index,
+ u8_casing_prefix_context (s, start_index),
+ u8_casing_suffix_context (s + end_index,
+ u8_strlen (s) - end_index),
+ iso639_language, NULL, NULL, &result_length);
+
+
+File: libunistring.info, Node: Case insensitive comparison, Next: Case detection, Prev: Case mappings of substrings, Up: unicase.h
+
+13.4 Case insensitive comparison
+================================
+
+ The following functions implement comparison that ignores
+differences in case and normalization.
+
+ -- Function: uint8_t * u8_casefold (const uint8_t *S, size_t N, const
+ char *ISO639_LANGUAGE, uninorm_t NF, uint8_t *RESULTBUF,
+ size_t *LENGTHP)
+ -- Function: uint16_t * u16_casefold (const uint16_t *S, size_t N,
+ const char *ISO639_LANGUAGE, uninorm_t NF, uint16_t
+ *RESULTBUF, size_t *LENGTHP)
+ -- Function: uint32_t * u32_casefold (const uint32_t *S, size_t N,
+ const char *ISO639_LANGUAGE, uninorm_t NF, uint32_t
+ *RESULTBUF, size_t *LENGTHP)
+ Returns the case folded string.
+
+ Comparing `u8_casefold (S1)' and `u8_casefold (S2)' with the
+ `u8_cmp2' function is equivalent to comparing S1 and S2 with
+ `u8_casecmp'.
+
+ The NF argument identifies the normalization form to apply after
+ the case-mapping. It can also be NULL, for no normalization.
+
+ -- Function: uint8_t * u8_ct_casefold (const uint8_t *S, size_t N,
+ casing_prefix_context_t PREFIX_CONTEXT,
+ casing_suffix_context_t SUFFIX_CONTEXT, const char
+ *ISO639_LANGUAGE, uninorm_t NF, uint8_t *RESULTBUF, size_t
+ *LENGTHP)
+ -- Function: uint16_t * u16_ct_casefold (const uint16_t *S, size_t N,
+ casing_prefix_context_t PREFIX_CONTEXT,
+ casing_suffix_context_t SUFFIX_CONTEXT, const char
+ *ISO639_LANGUAGE, uninorm_t NF, uint16_t *RESULTBUF, size_t
+ *LENGTHP)
+ -- Function: uint32_t * u32_ct_casefold (const uint32_t *S, size_t N,
+ casing_prefix_context_t PREFIX_CONTEXT,
+ casing_suffix_context_t SUFFIX_CONTEXT, const char
+ *ISO639_LANGUAGE, uninorm_t NF, uint32_t *RESULTBUF, size_t
+ *LENGTHP)
+ Returns the case folded string. The case folding takes into
+ account the case mapping contexts of the prefix and suffix strings.
+
+ -- Function: int u8_casecmp (const uint8_t *S1, size_t N1, const
+ uint8_t *S2, size_t N2, const char *ISO639_LANGUAGE,
+ uninorm_t NF, int *RESULTP)
+ -- Function: int u16_casecmp (const uint16_t *S1, size_t N1, const
+ uint16_t *S2, size_t N2, const char *ISO639_LANGUAGE,
+ uninorm_t NF, int *RESULTP)
+ -- Function: int u32_casecmp (const uint32_t *S1, size_t N1, const
+ uint32_t *S2, size_t N2, const char *ISO639_LANGUAGE,
+ uninorm_t NF, int *RESULTP)
+ -- Function: int ulc_casecmp (const char *S1, size_t N1, const char
+ *S2, size_t N2, const char *ISO639_LANGUAGE, uninorm_t NF,
+ int *RESULTP)
+ Compares S1 and S2, ignoring differences in case and normalization.
+
+ The NF argument identifies the normalization form to apply after
+ the case-mapping. It can also be NULL, for no normalization.
+
+ If successful, sets `*RESULTP' to -1 if S1 < S2, 0 if S1 = S2, 1
+ if S1 > S2, and returns 0. Upon failure, returns -1 with `errno'
+ set.
+
+ The following functions additionally take into account the sorting
+rules of the current locale.
+
+ -- Function: char * u8_casexfrm (const uint8_t *S, size_t N, const
+ char *ISO639_LANGUAGE, uninorm_t NF, char *RESULTBUF, size_t
+ *LENGTHP)
+ -- Function: char * u16_casexfrm (const uint16_t *S, size_t N, const
+ char *ISO639_LANGUAGE, uninorm_t NF, char *RESULTBUF, size_t
+ *LENGTHP)
+ -- Function: char * u32_casexfrm (const uint32_t *S, size_t N, const
+ char *ISO639_LANGUAGE, uninorm_t NF, char *RESULTBUF, size_t
+ *LENGTHP)
+ -- Function: char * ulc_casexfrm (const char *S, size_t N, const char
+ *ISO639_LANGUAGE, uninorm_t NF, char *RESULTBUF, size_t
+ *LENGTHP)
+ Converts the string S of length N to a NUL-terminated byte
+ sequence, in such a way that comparing `u8_casexfrm (S1)' and
+ `u8_casexfrm (S2)' with the gnulib function `memcmp2' is
+ equivalent to comparing S1 and S2 with `u8_casecoll'.
+
+ NF must be either `UNINORM_NFC', `UNINORM_NFKC', or NULL for no
+ normalization.
+
+ -- Function: int u8_casecoll (const uint8_t *S1, size_t N1, const
+ uint8_t *S2, size_t N2, const char *ISO639_LANGUAGE,
+ uninorm_t NF, int *RESULTP)
+ -- Function: int u16_casecoll (const uint16_t *S1, size_t N1, const
+ uint16_t *S2, size_t N2, const char *ISO639_LANGUAGE,
+ uninorm_t NF, int *RESULTP)
+ -- Function: int u32_casecoll (const uint32_t *S1, size_t N1, const
+ uint32_t *S2, size_t N2, const char *ISO639_LANGUAGE,
+ uninorm_t NF, int *RESULTP)
+ -- Function: int ulc_casecoll (const char *S1, size_t N1, const char
+ *S2, size_t N2, const char *ISO639_LANGUAGE, uninorm_t NF,
+ int *RESULTP)
+ Compares S1 and S2, ignoring differences in case and normalization,
+ using the collation rules of the current locale.
+
+ The NF argument identifies the normalization form to apply after
+ the case-mapping. It must be either `UNINORM_NFC' or
+ `UNINORM_NFKC'. It can also be NULL, for no normalization.
+
+ If successful, sets `*RESULTP' to -1 if S1 < S2, 0 if S1 = S2, 1
+ if S1 > S2, and returns 0. Upon failure, returns -1 with `errno'
+ set.
+
+
+File: libunistring.info, Node: Case detection, Prev: Case insensitive comparison, Up: unicase.h
+
+13.5 Case detection
+===================
+
+ The following functions determine whether a Unicode string is
+entirely in upper case. or entirely in lower case, or entirely in title
+case, or already case-folded.
+
+ -- Function: int u8_is_uppercase (const uint8_t *S, size_t N, const
+ char *ISO639_LANGUAGE, bool *RESULTP)
+ -- Function: int u16_is_uppercase (const uint16_t *S, size_t N, const
+ char *ISO639_LANGUAGE, bool *RESULTP)
+ -- Function: int u32_is_uppercase (const uint32_t *S, size_t N, const
+ char *ISO639_LANGUAGE, bool *RESULTP)
+ Sets `*RESULTP' to true if mapping NFD(S) to upper case is a
+ no-op, or to false otherwise, and returns 0. Upon failure,
+ returns -1 with `errno' set.
+
+ -- Function: int u8_is_lowercase (const uint8_t *S, size_t N, const
+ char *ISO639_LANGUAGE, bool *RESULTP)
+ -- Function: int u16_is_lowercase (const uint16_t *S, size_t N, const
+ char *ISO639_LANGUAGE, bool *RESULTP)
+ -- Function: int u32_is_lowercase (const uint32_t *S, size_t N, const
+ char *ISO639_LANGUAGE, bool *RESULTP)
+ Sets `*RESULTP' to true if mapping NFD(S) to lower case is a
+ no-op, or to false otherwise, and returns 0. Upon failure,
+ returns -1 with `errno' set.
+
+ -- Function: int u8_is_titlecase (const uint8_t *S, size_t N, const
+ char *ISO639_LANGUAGE, bool *RESULTP)
+ -- Function: int u16_is_titlecase (const uint16_t *S, size_t N, const
+ char *ISO639_LANGUAGE, bool *RESULTP)
+ -- Function: int u32_is_titlecase (const uint32_t *S, size_t N, const
+ char *ISO639_LANGUAGE, bool *RESULTP)
+ Sets `*RESULTP' to true if mapping NFD(S) to title case is a
+ no-op, or to false otherwise, and returns 0. Upon failure,
+ returns -1 with `errno' set.
+
+ -- Function: int u8_is_casefolded (const uint8_t *S, size_t N, const
+ char *ISO639_LANGUAGE, bool *RESULTP)
+ -- Function: int u16_is_casefolded (const uint16_t *S, size_t N, const
+ char *ISO639_LANGUAGE, bool *RESULTP)
+ -- Function: int u32_is_casefolded (const uint32_t *S, size_t N, const
+ char *ISO639_LANGUAGE, bool *RESULTP)
+ Sets `*RESULTP' to true if applying case folding to NFD(S) is a
+ no-op, or to false otherwise, and returns 0. Upon failure,
+ returns -1 with `errno' set.
+
+ The following functions determine whether case mappings have any
+effect on a Unicode string.
+
+ -- Function: int u8_is_cased (const uint8_t *S, size_t N, const char
+ *ISO639_LANGUAGE, bool *RESULTP)
+ -- Function: int u16_is_cased (const uint16_t *S, size_t N, const char
+ *ISO639_LANGUAGE, bool *RESULTP)
+ -- Function: int u32_is_cased (const uint32_t *S, size_t N, const char
+ *ISO639_LANGUAGE, bool *RESULTP)
+ Sets `*RESULTP' to true if case matters for S, that is, if mapping
+ NFD(S) to either upper case or lower case or title case is not a
+ no-op. Set `*RESULTP' to false if NFD(S) maps to itself under the
+ upper case mapping, under the lower case mapping, and under the
+ title case mapping; in other words, when NFD(S) consists entirely
+ of caseless characters. Upon failure, returns -1 with `errno' set.
+
+
+File: libunistring.info, Node: uniregex.h, Next: Using the library, Prev: unicase.h, Up: Top
+
+14 Regular expressions `<uniregex.h>'
+*************************************
+
+ This include file is not yet implemented.
+
+
+File: libunistring.info, Node: Using the library, Next: More functionality, Prev: uniregex.h, Up: Top
+
+15 Using the library
+********************
+
+ This chapter explains some practical considerations, regarding the
+installation and compiler options that are needed in order to use this
+library.
+
+* Menu:
+
+* Installation::
+* Compiler options::
+* Include files::
+* Autoconf macro::
+* Reporting problems::
+
+
+File: libunistring.info, Node: Installation, Next: Compiler options, Up: Using the library
+
+15.1 Installation
+=================
+
+ Before you can use the library, it must be installed. First, you
+have to make sure all dependencies are installed. They are listed in
+the file `DEPENDENCIES'.
+
+ Then you can proceed to build and install the library, as described
+in the file `INSTALL'. For installation on Windows systems, please
+refer to the file `README.woe32'.
+
+
+File: libunistring.info, Node: Compiler options, Next: Include files, Prev: Installation, Up: Using the library
+
+15.2 Compiler options
+=====================
+
+ Let's denote as `LIBUNISTRING_PREFIX' the value of the `--prefix'
+option that you passed to `configure' while installing this package.
+If you didn't pass any `--prefix' option, then the package is installed
+in `/usr/local'.
+
+ Let's denote as `LIBUNISTRING_INCLUDEDIR' the directory where the
+include files were installed. This is usually the same as
+`${LIBUNISTRING_PREFIX}/include'. Except that if you passed an
+`--includedir' option to `configure', it is the value of that option.
+
+ Let's further denote as `LIBUNISTRING_LIBDIR' the directory where
+the library itself was installed. This is the value that you passed
+with the `--libdir' option to `configure', or otherwise the same as
+`${LIBUNISTRING_PREFIX}/lib'. Recall that when building in 64-bit mode
+on a 64-bit GNU/Linux system that supports executables in either 64-bit
+mode or 32-bit mode, you should have used the option
+`--libdir=${LIBUNISTRING_PREFIX}/lib64'.
+
+ So that the compiler finds the include files, you have to pass it the
+option `-I${LIBUNISTRING_INCLUDEDIR}'.
+
+ So that the compiler finds the library during its linking pass, you
+have to pass it the options `-L${LIBUNISTRING_LIBDIR} -lunistring'. On
+some systems, in some configurations, you also have to pass options
+needed for linking with `libiconv'. The autoconf macro
+`gl_LIBUNISTRING' (see *note Autoconf macro::) deals with this
+particularity.
+
+
+File: libunistring.info, Node: Include files, Next: Autoconf macro, Prev: Compiler options, Up: Using the library
+
+15.3 Include files
+==================
+
+ Most of the include files have been presented in the introduction,
+see *note Introduction::, and subsequent detailed chapters.
+
+ Another include file is `<unistring/version.h>'. It contains the
+version number of the libunistring library.
+
+ -- Macro: int _LIBUNISTRING_VERSION
+ This constant contains the version of libunistring that is being
+ used at compile time. It encodes the major and minor parts of the
+ version number only. These parts are encoded in the form
+ `(major<<8) + minor'.
+
+ -- Constant: int _libunistring_version
+ This constant contains the version of libunistring that is being
+ used at run time. It encodes the major and minor parts of the
+ version number only. These parts are encoded in the form
+ `(major<<8) + minor'.
+
+ It is possible that `_libunistring_version' is greater than
+`_LIBUNISTRING_VERSION'. This can happen when you use `libunistring'
+as a shared library, and a newer, binary backward-compatible version
+has been installed after your program that uses `libunistring' was
+installed.
+
+
+File: libunistring.info, Node: Autoconf macro, Next: Reporting problems, Prev: Include files, Up: Using the library
+
+15.4 Autoconf macro
+===================
+
+ GNU Gnulib provides an autoconf macro that tests for the availability
+of `libunistring'. It is contained in the Gnulib module
+`libunistring', see
+`http://www.gnu.org/software/gnulib/MODULES.html#module=libunistring'.
+
+ The macro is called `gl_LIBUNISTRING'. It searches for an installed
+libunistring. If found, it sets and AC_SUBSTs `HAVE_LIBUNISTRING=yes'
+and the `LIBUNISTRING' and `LTLIBUNISTRING' variables and augments the
+`CPPFLAGS' variable, and defines the C macro `HAVE_LIBUNISTRING' to 1.
+Otherwise, it sets and AC_SUBSTs `HAVE_LIBUNISTRING=no' and
+`LIBUNISTRING' and `LTLIBUNISTRING' to empty.
+
+ The complexities that `gl_LIBUNISTRING' deals with are the following:
+
+ * On some operating systems, in some configurations, libunistring
+ depends on `libiconv', and the options for linking with libiconv
+ must be mentioned explicitly on the link command line.
+
+ * GNU `libunistring', if installed, is not necessarily already in the
+ search path (`CPPFLAGS' for the include file search path,
+ `LDFLAGS' for the library search path).
+
+ * GNU `libunistring', if installed, is not necessarily already in the
+ run time library search path. To avoid the need for setting an
+ environment variable like `LD_LIBRARY_PATH', the macro adds the
+ appropriate run time search path options to the `LIBUNISTRING'
+ variable. This works on most systems.
+
+
+File: libunistring.info, Node: Reporting problems, Prev: Autoconf macro, Up: Using the library
+
+15.5 Reporting problems
+=======================
+
+ If you encounter any problem, please don't hesitate to send a
+detailed bug report to the `bug-libunistring@gnu.org' mailing list.
+You can alternatively also use the bug tracker at the project page
+`https://savannah.gnu.org/projects/libunistring'.
+
+ Please always include the version number of this library, and a short
+description of your operating system and compilation environment with
+corresponding version numbers.
+
+ For problems that appear while building and installing
+`libunistring', for which you don't find the remedy in the `INSTALL'
+file, please include a description of the options that you passed to
+the `configure' script.
+
+
+File: libunistring.info, Node: More functionality, Next: Licenses, Prev: Using the library, Up: Top
+
+16 More advanced functionality
+******************************
+
+ For bidirectional reordering of strings, we recommend the GNU
+FriBidi library: `http://www.fribidi.org/'.
+
+ For the rendering of Unicode strings outside of the context of a
+given toolkit (KDE/Qt or GNOME/Gtk), we recommend the Pango library:
+`http://www.pango.org/'.
+
+
+File: libunistring.info, Node: Licenses, Next: Index, Prev: More functionality, Up: Top
+
+Appendix A Licenses
+*******************
+
+ The files of this package are covered by the licenses indicated in
+each particular file or directory. Here is a summary:
+
+ * The `libunistring' library is covered by the GNU Lesser General
+ Public License (LGPL). A copy of the license is included in *note
+ GNU LGPL::.
+
+ * This manual is free documentation. It is dually licensed under the
+ GNU FDL and the GNU GPL. This means that you can redistribute this
+ manual under either of these two licenses, at your choice.
+ This manual is covered by the GNU FDL. Permission is granted to
+ copy, distribute and/or modify this document under the terms of the
+ GNU Free Documentation License (FDL), either version 1.2 of the
+ License, or (at your option) any later version published by the
+ Free Software Foundation (FSF); with no Invariant Sections, with no
+ Front-Cover Text, and with no Back-Cover Texts. A copy of the
+ license is included in *note GNU FDL::.
+ This manual is covered by the GNU GPL. You can redistribute it
+ and/or modify it under the terms of the GNU General Public License
+ (GPL), either version 3 of the License, or (at your option) any
+ later version published by the Free Software Foundation (FSF). A
+ copy of the license is included in *note GNU GPL::.
+
+* Menu:
+
+* GNU GPL:: GNU General Public License
+* GNU LGPL:: GNU Lesser General Public License
+* GNU FDL:: GNU Free Documentation License
+
+
+File: libunistring.info, Node: GNU GPL, Next: GNU LGPL, Up: Licenses
+
+A.1 GNU GENERAL PUBLIC LICENSE
+==============================
+
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. `http://fsf.org/'
+
+ Everyone is permitted to copy and distribute verbatim copies of this
+ license document, but changing it is not allowed.
+
+Preamble
+========
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains
+free software for all its users. We, the Free Software Foundation, use
+the GNU General Public License for most of our software; it applies
+also to any other work released this way by its authors. You can apply
+it to your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you
+have certain responsibilities if you distribute copies of the software,
+or if you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the
+manufacturer can do so. This is fundamentally incompatible with the
+aim of protecting users' freedom to change the software. The
+systematic pattern of such abuse occurs in the area of products for
+individuals to use, which is precisely where it is most unacceptable.
+Therefore, we have designed this version of the GPL to prohibit the
+practice for those products. If such problems arise substantially in
+other domains, we stand ready to extend this provision to those domains
+in future versions of the GPL, as needed to protect the freedom of
+users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+TERMS AND CONDITIONS
+====================
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public
+ License.
+
+ "Copyright" also means copyright-like laws that apply to other
+ kinds of works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+ License. Each licensee is addressed as "you". "Licensees" and
+ "recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the
+ work in a fashion requiring copyright permission, other than the
+ making of an exact copy. The resulting work is called a "modified
+ version" of the earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work
+ based on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+ permission, would make you directly or secondarily liable for
+ infringement under applicable copyright law, except executing it
+ on a computer or modifying a private copy. Propagation includes
+ copying, distribution (with or without modification), making
+ available to the public, and in some countries other activities as
+ well.
+
+ To "convey" a work means any kind of propagation that enables other
+ parties to make or receive copies. Mere interaction with a user
+ through a computer network, with no transfer of a copy, is not
+ conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+ to the extent that it includes a convenient and prominently visible
+ feature that (1) displays an appropriate copyright notice, and (2)
+ tells the user that there is no warranty for the work (except to
+ the extent that warranties are provided), that licensees may
+ convey the work under this License, and how to view a copy of this
+ License. If the interface presents a list of user commands or
+ options, such as a menu, a prominent item in the list meets this
+ criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+ for making modifications to it. "Object code" means any
+ non-source form of a work.
+
+ A "Standard Interface" means an interface that either is an
+ official standard defined by a recognized standards body, or, in
+ the case of interfaces specified for a particular programming
+ language, one that is widely used among developers working in that
+ language.
+
+ The "System Libraries" of an executable work include anything,
+ other than the work as a whole, that (a) is included in the normal
+ form of packaging a Major Component, but which is not part of that
+ Major Component, and (b) serves only to enable use of the work
+ with that Major Component, or to implement a Standard Interface
+ for which an implementation is available to the public in source
+ code form. A "Major Component", in this context, means a major
+ essential component (kernel, window system, and so on) of the
+ specific operating system (if any) on which the executable work
+ runs, or a compiler used to produce the work, or an object code
+ interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+ the source code needed to generate, install, and (for an executable
+ work) run the object code and to modify the work, including
+ scripts to control those activities. However, it does not include
+ the work's System Libraries, or general-purpose tools or generally
+ available free programs which are used unmodified in performing
+ those activities but which are not part of the work. For example,
+ Corresponding Source includes interface definition files
+ associated with source files for the work, and the source code for
+ shared libraries and dynamically linked subprograms that the work
+ is specifically designed to require, such as by intimate data
+ communication or control flow between those subprograms and other
+ parts of the work.
+
+ The Corresponding Source need not include anything that users can
+ regenerate automatically from other parts of the Corresponding
+ Source.
+
+ The Corresponding Source for a work in source code form is that
+ same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+ copyright on the Program, and are irrevocable provided the stated
+ conditions are met. This License explicitly affirms your unlimited
+ permission to run the unmodified Program. The output from running
+ a covered work is covered by this License only if the output,
+ given its content, constitutes a covered work. This License
+ acknowledges your rights of fair use or other equivalent, as
+ provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+ convey, without conditions so long as your license otherwise
+ remains in force. You may convey covered works to others for the
+ sole purpose of having them make modifications exclusively for
+ you, or provide you with facilities for running those works,
+ provided that you comply with the terms of this License in
+ conveying all material for which you do not control copyright.
+ Those thus making or running the covered works for you must do so
+ exclusively on your behalf, under your direction and control, on
+ terms that prohibit them from making any copies of your
+ copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+ the conditions stated below. Sublicensing is not allowed; section
+ 10 makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+ measure under any applicable law fulfilling obligations under
+ article 11 of the WIPO copyright treaty adopted on 20 December
+ 1996, or similar laws prohibiting or restricting circumvention of
+ such measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+ circumvention of technological measures to the extent such
+ circumvention is effected by exercising rights under this License
+ with respect to the covered work, and you disclaim any intention
+ to limit operation or modification of the work as a means of
+ enforcing, against the work's users, your or third parties' legal
+ rights to forbid circumvention of technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+ receive it, in any medium, provided that you conspicuously and
+ appropriately publish on each copy an appropriate copyright notice;
+ keep intact all notices stating that this License and any
+ non-permissive terms added in accord with section 7 apply to the
+ code; keep intact all notices of the absence of any warranty; and
+ give all recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+ and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+ produce it from the Program, in the form of source code under the
+ terms of section 4, provided that you also meet all of these
+ conditions:
+
+ a. The work must carry prominent notices stating that you
+ modified it, and giving a relevant date.
+
+ b. The work must carry prominent notices stating that it is
+ released under this License and any conditions added under
+ section 7. This requirement modifies the requirement in
+ section 4 to "keep intact all notices".
+
+ c. You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable
+ section 7 additional terms, to the whole of the work, and all
+ its parts, regardless of how they are packaged. This License
+ gives no permission to license the work in any other way, but
+ it does not invalidate such permission if you have separately
+ received it.
+
+ d. If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has
+ interactive interfaces that do not display Appropriate Legal
+ Notices, your work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+ works, which are not by their nature extensions of the covered
+ work, and which are not combined with it such as to form a larger
+ program, in or on a volume of a storage or distribution medium, is
+ called an "aggregate" if the compilation and its resulting
+ copyright are not used to limit the access or legal rights of the
+ compilation's users beyond what the individual works permit.
+ Inclusion of a covered work in an aggregate does not cause this
+ License to apply to the other parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+ of sections 4 and 5, provided that you also convey the
+ machine-readable Corresponding Source under the terms of this
+ License, in one of these ways:
+
+ a. Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b. Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for
+ as long as you offer spare parts or customer support for that
+ product model, to give anyone who possesses the object code
+ either (1) a copy of the Corresponding Source for all the
+ software in the product that is covered by this License, on a
+ durable physical medium customarily used for software
+ interchange, for a price no more than your reasonable cost of
+ physically performing this conveying of source, or (2) access
+ to copy the Corresponding Source from a network server at no
+ charge.
+
+ c. Convey individual copies of the object code with a copy of
+ the written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially,
+ and only if you received the object code with such an offer,
+ in accord with subsection 6b.
+
+ d. Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access
+ to the Corresponding Source in the same way through the same
+ place at no further charge. You need not require recipients
+ to copy the Corresponding Source along with the object code.
+ If the place to copy the object code is a network server, the
+ Corresponding Source may be on a different server (operated
+ by you or a third party) that supports equivalent copying
+ facilities, provided you maintain clear directions next to
+ the object code saying where to find the Corresponding Source.
+ Regardless of what server hosts the Corresponding Source, you
+ remain obligated to ensure that it is available for as long
+ as needed to satisfy these requirements.
+
+ e. Convey the object code using peer-to-peer transmission,
+ provided you inform other peers where the object code and
+ Corresponding Source of the work are being offered to the
+ general public at no charge under subsection 6d.
+
+
+ A separable portion of the object code, whose source code is
+ excluded from the Corresponding Source as a System Library, need
+ not be included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means
+ any tangible personal property which is normally used for personal,
+ family, or household purposes, or (2) anything designed or sold for
+ incorporation into a dwelling. In determining whether a product
+ is a consumer product, doubtful cases shall be resolved in favor of
+ coverage. For a particular product received by a particular user,
+ "normally used" refers to a typical or common use of that class of
+ product, regardless of the status of the particular user or of the
+ way in which the particular user actually uses, or expects or is
+ expected to use, the product. A product is a consumer product
+ regardless of whether the product has substantial commercial,
+ industrial or non-consumer uses, unless such uses represent the
+ only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+ procedures, authorization keys, or other information required to
+ install and execute modified versions of a covered work in that
+ User Product from a modified version of its Corresponding Source.
+ The information must suffice to ensure that the continued
+ functioning of the modified object code is in no case prevented or
+ interfered with solely because modification has been made.
+
+ If you convey an object code work under this section in, or with,
+ or specifically for use in, a User Product, and the conveying
+ occurs as part of a transaction in which the right of possession
+ and use of the User Product is transferred to the recipient in
+ perpetuity or for a fixed term (regardless of how the transaction
+ is characterized), the Corresponding Source conveyed under this
+ section must be accompanied by the Installation Information. But
+ this requirement does not apply if neither you nor any third party
+ retains the ability to install modified object code on the User
+ Product (for example, the work has been installed in ROM).
+
+ The requirement to provide Installation Information does not
+ include a requirement to continue to provide support service,
+ warranty, or updates for a work that has been modified or
+ installed by the recipient, or for the User Product in which it
+ has been modified or installed. Access to a network may be denied
+ when the modification itself materially and adversely affects the
+ operation of the network or violates the rules and protocols for
+ communication across the network.
+
+ Corresponding Source conveyed, and Installation Information
+ provided, in accord with this section must be in a format that is
+ publicly documented (and with an implementation available to the
+ public in source code form), and must require no special password
+ or key for unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of
+ this License by making exceptions from one or more of its
+ conditions. Additional permissions that are applicable to the
+ entire Program shall be treated as though they were included in
+ this License, to the extent that they are valid under applicable
+ law. If additional permissions apply only to part of the Program,
+ that part may be used separately under those permissions, but the
+ entire Program remains governed by this License without regard to
+ the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+ remove any additional permissions from that copy, or from any part
+ of it. (Additional permissions may be written to require their own
+ removal in certain cases when you modify the work.) You may place
+ additional permissions on material, added by you to a covered work,
+ for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material
+ you add to a covered work, you may (if authorized by the copyright
+ holders of that material) supplement the terms of this License
+ with terms:
+
+ a. Disclaiming warranty or limiting liability differently from
+ the terms of sections 15 and 16 of this License; or
+
+ b. Requiring preservation of specified reasonable legal notices
+ or author attributions in that material or in the Appropriate
+ Legal Notices displayed by works containing it; or
+
+ c. Prohibiting misrepresentation of the origin of that material,
+ or requiring that modified versions of such material be
+ marked in reasonable ways as different from the original
+ version; or
+
+ d. Limiting the use for publicity purposes of names of licensors
+ or authors of the material; or
+
+ e. Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f. Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified
+ versions of it) with contractual assumptions of liability to
+ the recipient, for any liability that these contractual
+ assumptions directly impose on those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+ restrictions" within the meaning of section 10. If the Program as
+ you received it, or any part of it, contains a notice stating that
+ it is governed by this License along with a term that is a further
+ restriction, you may remove that term. If a license document
+ contains a further restriction but permits relicensing or
+ conveying under this License, you may add to a covered work
+ material governed by the terms of that license document, provided
+ that the further restriction does not survive such relicensing or
+ conveying.
+
+ If you add terms to a covered work in accord with this section, you
+ must place, in the relevant source files, a statement of the
+ additional terms that apply to those files, or a notice indicating
+ where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in
+ the form of a separately written license, or stated as exceptions;
+ the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+ provided under this License. Any attempt otherwise to propagate or
+ modify it is void, and will automatically terminate your rights
+ under this License (including any patent licenses granted under
+ the third paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+ license from a particular copyright holder is reinstated (a)
+ provisionally, unless and until the copyright holder explicitly
+ and finally terminates your license, and (b) permanently, if the
+ copyright holder fails to notify you of the violation by some
+ reasonable means prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+ reinstated permanently if the copyright holder notifies you of the
+ violation by some reasonable means, this is the first time you have
+ received notice of violation of this License (for any work) from
+ that copyright holder, and you cure the violation prior to 30 days
+ after your receipt of the notice.
+
+ Termination of your rights under this section does not terminate
+ the licenses of parties who have received copies or rights from
+ you under this License. If your rights have been terminated and
+ not permanently reinstated, you do not qualify to receive new
+ licenses for the same material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+ run a copy of the Program. Ancillary propagation of a covered work
+ occurring solely as a consequence of using peer-to-peer
+ transmission to receive a copy likewise does not require
+ acceptance. However, nothing other than this License grants you
+ permission to propagate or modify any covered work. These actions
+ infringe copyright if you do not accept this License. Therefore,
+ by modifying or propagating a covered work, you indicate your
+ acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+ receives a license from the original licensors, to run, modify and
+ propagate that work, subject to this License. You are not
+ responsible for enforcing compliance by third parties with this
+ License.
+
+ An "entity transaction" is a transaction transferring control of an
+ organization, or substantially all assets of one, or subdividing an
+ organization, or merging organizations. If propagation of a
+ covered work results from an entity transaction, each party to that
+ transaction who receives a copy of the work also receives whatever
+ licenses to the work the party's predecessor in interest had or
+ could give under the previous paragraph, plus a right to
+ possession of the Corresponding Source of the work from the
+ predecessor in interest, if the predecessor has it or can get it
+ with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+ rights granted or affirmed under this License. For example, you
+ may not impose a license fee, royalty, or other charge for
+ exercise of rights granted under this License, and you may not
+ initiate litigation (including a cross-claim or counterclaim in a
+ lawsuit) alleging that any patent claim is infringed by making,
+ using, selling, offering for sale, or importing the Program or any
+ portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+ License of the Program or a work on which the Program is based.
+ The work thus licensed is called the contributor's "contributor
+ version".
+
+ A contributor's "essential patent claims" are all patent claims
+ owned or controlled by the contributor, whether already acquired or
+ hereafter acquired, that would be infringed by some manner,
+ permitted by this License, of making, using, or selling its
+ contributor version, but do not include claims that would be
+ infringed only as a consequence of further modification of the
+ contributor version. For purposes of this definition, "control"
+ includes the right to grant patent sublicenses in a manner
+ consistent with the requirements of this License.
+
+ Each contributor grants you a non-exclusive, worldwide,
+ royalty-free patent license under the contributor's essential
+ patent claims, to make, use, sell, offer for sale, import and
+ otherwise run, modify and propagate the contents of its
+ contributor version.
+
+ In the following three paragraphs, a "patent license" is any
+ express agreement or commitment, however denominated, not to
+ enforce a patent (such as an express permission to practice a
+ patent or covenant not to sue for patent infringement). To
+ "grant" such a patent license to a party means to make such an
+ agreement or commitment not to enforce a patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent
+ license, and the Corresponding Source of the work is not available
+ for anyone to copy, free of charge and under the terms of this
+ License, through a publicly available network server or other
+ readily accessible means, then you must either (1) cause the
+ Corresponding Source to be so available, or (2) arrange to deprive
+ yourself of the benefit of the patent license for this particular
+ work, or (3) arrange, in a manner consistent with the requirements
+ of this License, to extend the patent license to downstream
+ recipients. "Knowingly relying" means you have actual knowledge
+ that, but for the patent license, your conveying the covered work
+ in a country, or your recipient's use of the covered work in a
+ country, would infringe one or more identifiable patents in that
+ country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+ arrangement, you convey, or propagate by procuring conveyance of, a
+ covered work, and grant a patent license to some of the parties
+ receiving the covered work authorizing them to use, propagate,
+ modify or convey a specific copy of the covered work, then the
+ patent license you grant is automatically extended to all
+ recipients of the covered work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+ the scope of its coverage, prohibits the exercise of, or is
+ conditioned on the non-exercise of one or more of the rights that
+ are specifically granted under this License. You may not convey a
+ covered work if you are a party to an arrangement with a third
+ party that is in the business of distributing software, under
+ which you make payment to the third party based on the extent of
+ your activity of conveying the work, and under which the third
+ party grants, to any of the parties who would receive the covered
+ work from you, a discriminatory patent license (a) in connection
+ with copies of the covered work conveyed by you (or copies made
+ from those copies), or (b) primarily for and in connection with
+ specific products or compilations that contain the covered work,
+ unless you entered into that arrangement, or that patent license
+ was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+ any implied license or other defenses to infringement that may
+ otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order,
+ agreement or otherwise) that contradict the conditions of this
+ License, they do not excuse you from the conditions of this
+ License. If you cannot convey a covered work so as to satisfy
+ simultaneously your obligations under this License and any other
+ pertinent obligations, then as a consequence you may not convey it
+ at all. For example, if you agree to terms that obligate you to
+ collect a royalty for further conveying from those to whom you
+ convey the Program, the only way you could satisfy both those
+ terms and this License would be to refrain entirely from conveying
+ the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+ permission to link or combine any covered work with a work licensed
+ under version 3 of the GNU Affero General Public License into a
+ single combined work, and to convey the resulting work. The terms
+ of this License will continue to apply to the part which is the
+ covered work, but the special requirements of the GNU Affero
+ General Public License, section 13, concerning interaction through
+ a network will apply to the combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new
+ versions of the GNU General Public License from time to time.
+ Such new versions will be similar in spirit to the present
+ version, but may differ in detail to address new problems or
+ concerns.
+
+ Each version is given a distinguishing version number. If the
+ Program specifies that a certain numbered version of the GNU
+ General Public License "or any later version" applies to it, you
+ have the option of following the terms and conditions either of
+ that numbered version or of any later version published by the
+ Free Software Foundation. If the Program does not specify a
+ version number of the GNU General Public License, you may choose
+ any version ever published by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+ versions of the GNU General Public License can be used, that
+ proxy's public statement of acceptance of a version permanently
+ authorizes you to choose that version for the Program.
+
+ Later license versions may give you additional or different
+ permissions. However, no additional obligations are imposed on any
+ author or copyright holder as a result of your choosing to follow a
+ later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+ APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE
+ COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS"
+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE
+ RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.
+ SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
+ NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+ WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES
+ AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU
+ FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+ CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
+ THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
+ BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+ PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+ above cannot be given local legal effect according to their terms,
+ reviewing courts shall apply local law that most closely
+ approximates an absolute waiver of all civil liability in
+ connection with the Program, unless a warranty or assumption of
+ liability accompanies a copy of the Program in return for a fee.
+
+
+END OF TERMS AND CONDITIONS
+===========================
+
+How to Apply These Terms to Your New Programs
+=============================================
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
+ Copyright (C) YEAR NAME OF AUTHOR
+
+ 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 3 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, see `http://www.gnu.org/licenses/'.
+
+ Also add information on how to contact you by electronic and paper
+mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ PROGRAM Copyright (C) YEAR NAME OF AUTHOR
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+ The hypothetical commands `show w' and `show c' should show the
+appropriate parts of the General Public License. Of course, your
+program's commands might be different; for a GUI interface, you would
+use an "about box".
+
+ You should also get your employer (if you work as a programmer) or
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. For more information on this, and how to apply and follow
+the GNU GPL, see `http://www.gnu.org/licenses/'.
+
+ The GNU General Public License does not permit incorporating your
+program into proprietary programs. If your program is a subroutine
+library, you may consider it more useful to permit linking proprietary
+applications with the library. If this is what you want to do, use the
+GNU Lesser General Public License instead of this License. But first,
+please read `http://www.gnu.org/philosophy/why-not-lgpl.html'.
+
+
+File: libunistring.info, Node: GNU LGPL, Next: GNU FDL, Prev: GNU GPL, Up: Licenses
+
+A.2 GNU LESSER GENERAL PUBLIC LICENSE
+=====================================
+
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. `http://fsf.org/'
+
+ Everyone is permitted to copy and distribute verbatim copies of this
+ license document, but changing it is not allowed.
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU
+ Lesser General Public License, and the "GNU GPL" refers to version
+ 3 of the GNU General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+ other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface
+ provided by the Library, but which is not otherwise based on the
+ Library. Defining a subclass of a class defined by the Library is
+ deemed a mode of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+ Application with the Library. The particular version of the
+ Library with which the Combined Work was made is also called the
+ "Linked Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+ Corresponding Source for the Combined Work, excluding any source
+ code for portions of the Combined Work that, considered in
+ isolation, are based on the Application, and not on the Linked
+ Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+ object code and/or source code for the Application, including any
+ data and utility programs needed for reproducing the Combined Work
+ from the Application, but excluding the System Libraries of the
+ Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this
+ License without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+ facility refers to a function or data to be supplied by an
+ Application that uses the facility (other than as an argument
+ passed when the facility is invoked), then you may convey a copy
+ of the modified version:
+
+ a. under this License, provided that you make a good faith
+ effort to ensure that, in the event an Application does not
+ supply the function or data, the facility still operates, and
+ performs whatever part of its purpose remains meaningful, or
+
+ b. under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material
+ from a header file that is part of the Library. You may convey
+ such object code under terms of your choice, provided that, if the
+ incorporated material is not limited to numerical parameters, data
+ structure layouts and accessors, or small macros, inline functions
+ and templates (ten or fewer lines in length), you do both of the
+ following:
+
+ a. Give prominent notice with each copy of the object code that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b. Accompany the object code with a copy of the GNU GPL and this
+ license document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+ taken together, effectively do not restrict modification of the
+ portions of the Library contained in the Combined Work and reverse
+ engineering for debugging such modifications, if you also do each
+ of the following:
+
+ a. Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b. Accompany the Combined Work with a copy of the GNU GPL and
+ this license document.
+
+ c. For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to
+ the copies of the GNU GPL and this license document.
+
+ d. Do one of the following:
+
+ 0. Convey the Minimal Corresponding Source under the terms
+ of this License, and the Corresponding Application Code
+ in a form suitable for, and under terms that permit, the
+ user to recombine or relink the Application with a
+ modified version of the Linked Version to produce a
+ modified Combined Work, in the manner specified by
+ section 6 of the GNU GPL for conveying Corresponding
+ Source.
+
+ 1. Use a suitable shared library mechanism for linking with
+ the Library. A suitable mechanism is one that (a) uses
+ at run time a copy of the Library already present on the
+ user's computer system, and (b) will operate properly
+ with a modified version of the Library that is
+ interface-compatible with the Linked Version.
+
+ e. Provide Installation Information, but only if you would
+ otherwise be required to provide such information under
+ section 6 of the GNU GPL, and only to the extent that such
+ information is necessary to install and execute a modified
+ version of the Combined Work produced by recombining or
+ relinking the Application with a modified version of the
+ Linked Version. (If you use option 4d0, the Installation
+ Information must accompany the Minimal Corresponding Source
+ and Corresponding Application Code. If you use option 4d1,
+ you must provide the Installation Information in the manner
+ specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+ Library side by side in a single library together with other
+ library facilities that are not Applications and are not covered
+ by this License, and convey such a combined library under terms of
+ your choice, if you do both of the following:
+
+ a. Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities, conveyed under the terms of this License.
+
+ b. Give prominent notice with the combined library that part of
+ it is a work based on the Library, and explaining where to
+ find the accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new
+ versions of the GNU Lesser General Public License from time to
+ time. Such new versions will be similar in spirit to the present
+ version, but may differ in detail to address new problems or
+ concerns.
+
+ Each version is given a distinguishing version number. If the
+ Library as you received it specifies that a certain numbered
+ version of the GNU Lesser General Public License "or any later
+ version" applies to it, you have the option of following the terms
+ and conditions either of that published version or of any later
+ version published by the Free Software Foundation. If the Library
+ as you received it does not specify a version number of the GNU
+ Lesser General Public License, you may choose any version of the
+ GNU Lesser General Public License ever published by the Free
+ Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+ whether future versions of the GNU Lesser General Public License
+ shall apply, that proxy's public statement of acceptance of any
+ version is permanent authorization for you to choose that version
+ for the Library.
+
+
+
+File: libunistring.info, Node: GNU FDL, Prev: GNU LGPL, Up: Licenses
+
+A.3 GNU Free Documentation License
+==================================
+
+ Version 1.3, 3 November 2008
+
+ Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+ `http://fsf.org/'
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ 0. PREAMBLE
+
+ The purpose of this License is to make a manual, textbook, or other
+ functional and useful document "free" in the sense of freedom: to
+ assure everyone the effective freedom to copy and redistribute it,
+ with or without modifying it, either commercially or
+ noncommercially. Secondarily, this License preserves for the
+ author and publisher a way to get credit for their work, while not
+ being considered responsible for modifications made by others.
+
+ This License is a kind of "copyleft", which means that derivative
+ works of the document must themselves be free in the same sense.
+ It complements the GNU General Public License, which is a copyleft
+ license designed for free software.
+
+ We have designed this License in order to use it for manuals for
+ free software, because free software needs free documentation: a
+ free program should come with manuals providing the same freedoms
+ that the software does. But this License is not limited to
+ software manuals; it can be used for any textual work, regardless
+ of subject matter or whether it is published as a printed book.
+ We recommend this License principally for works whose purpose is
+ instruction or reference.
+
+ 1. APPLICABILITY AND DEFINITIONS
+
+ This License applies to any manual or other work, in any medium,
+ that contains a notice placed by the copyright holder saying it
+ can be distributed under the terms of this License. Such a notice
+ grants a world-wide, royalty-free license, unlimited in duration,
+ to use that work under the conditions stated herein. The
+ "Document", below, refers to any such manual or work. Any member
+ of the public is a licensee, and is addressed as "you". You
+ accept the license if you copy, modify or distribute the work in a
+ way requiring permission under copyright law.
+
+ A "Modified Version" of the Document means any work containing the
+ Document or a portion of it, either copied verbatim, or with
+ modifications and/or translated into another language.
+
+ A "Secondary Section" is a named appendix or a front-matter section
+ of the Document that deals exclusively with the relationship of the
+ publishers or authors of the Document to the Document's overall
+ subject (or to related matters) and contains nothing that could
+ fall directly within that overall subject. (Thus, if the Document
+ is in part a textbook of mathematics, a Secondary Section may not
+ explain any mathematics.) The relationship could be a matter of
+ historical connection with the subject or with related matters, or
+ of legal, commercial, philosophical, ethical or political position
+ regarding them.
+
+ The "Invariant Sections" are certain Secondary Sections whose
+ titles are designated, as being those of Invariant Sections, in
+ the notice that says that the Document is released under this
+ License. If a section does not fit the above definition of
+ Secondary then it is not allowed to be designated as Invariant.
+ The Document may contain zero Invariant Sections. If the Document
+ does not identify any Invariant Sections then there are none.
+
+ The "Cover Texts" are certain short passages of text that are
+ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+ that says that the Document is released under this License. A
+ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+ be at most 25 words.
+
+ A "Transparent" copy of the Document means a machine-readable copy,
+ represented in a format whose specification is available to the
+ general public, that is suitable for revising the document
+ straightforwardly with generic text editors or (for images
+ composed of pixels) generic paint programs or (for drawings) some
+ widely available drawing editor, and that is suitable for input to
+ text formatters or for automatic translation to a variety of
+ formats suitable for input to text formatters. A copy made in an
+ otherwise Transparent file format whose markup, or absence of
+ markup, has been arranged to thwart or discourage subsequent
+ modification by readers is not Transparent. An image format is
+ not Transparent if used for any substantial amount of text. A
+ copy that is not "Transparent" is called "Opaque".
+
+ Examples of suitable formats for Transparent copies include plain
+ ASCII without markup, Texinfo input format, LaTeX input format,
+ SGML or XML using a publicly available DTD, and
+ standard-conforming simple HTML, PostScript or PDF designed for
+ human modification. Examples of transparent image formats include
+ PNG, XCF and JPG. Opaque formats include proprietary formats that
+ can be read and edited only by proprietary word processors, SGML or
+ XML for which the DTD and/or processing tools are not generally
+ available, and the machine-generated HTML, PostScript or PDF
+ produced by some word processors for output purposes only.
+
+ The "Title Page" means, for a printed book, the title page itself,
+ plus such following pages as are needed to hold, legibly, the
+ material this License requires to appear in the title page. For
+ works in formats which do not have any title page as such, "Title
+ Page" means the text near the most prominent appearance of the
+ work's title, preceding the beginning of the body of the text.
+
+ The "publisher" means any person or entity that distributes copies
+ of the Document to the public.
+
+ A section "Entitled XYZ" means a named subunit of the Document
+ whose title either is precisely XYZ or contains XYZ in parentheses
+ following text that translates XYZ in another language. (Here XYZ
+ stands for a specific section name mentioned below, such as
+ "Acknowledgements", "Dedications", "Endorsements", or "History".)
+ To "Preserve the Title" of such a section when you modify the
+ Document means that it remains a section "Entitled XYZ" according
+ to this definition.
+
+ The Document may include Warranty Disclaimers next to the notice
+ which states that this License applies to the Document. These
+ Warranty Disclaimers are considered to be included by reference in
+ this License, but only as regards disclaiming warranties: any other
+ implication that these Warranty Disclaimers may have is void and
+ has no effect on the meaning of this License.
+
+ 2. VERBATIM COPYING
+
+ You may copy and distribute the Document in any medium, either
+ commercially or noncommercially, provided that this License, the
+ copyright notices, and the license notice saying this License
+ applies to the Document are reproduced in all copies, and that you
+ add no other conditions whatsoever to those of this License. You
+ may not use technical measures to obstruct or control the reading
+ or further copying of the copies you make or distribute. However,
+ you may accept compensation in exchange for copies. If you
+ distribute a large enough number of copies you must also follow
+ the conditions in section 3.
+
+ You may also lend copies, under the same conditions stated above,
+ and you may publicly display copies.
+
+ 3. COPYING IN QUANTITY
+
+ If you publish printed copies (or copies in media that commonly
+ have printed covers) of the Document, numbering more than 100, and
+ the Document's license notice requires Cover Texts, you must
+ enclose the copies in covers that carry, clearly and legibly, all
+ these Cover Texts: Front-Cover Texts on the front cover, and
+ Back-Cover Texts on the back cover. Both covers must also clearly
+ and legibly identify you as the publisher of these copies. The
+ front cover must present the full title with all words of the
+ title equally prominent and visible. You may add other material
+ on the covers in addition. Copying with changes limited to the
+ covers, as long as they preserve the title of the Document and
+ satisfy these conditions, can be treated as verbatim copying in
+ other respects.
+
+ If the required texts for either cover are too voluminous to fit
+ legibly, you should put the first ones listed (as many as fit
+ reasonably) on the actual cover, and continue the rest onto
+ adjacent pages.
+
+ If you publish or distribute Opaque copies of the Document
+ numbering more than 100, you must either include a
+ machine-readable Transparent copy along with each Opaque copy, or
+ state in or with each Opaque copy a computer-network location from
+ which the general network-using public has access to download
+ using public-standard network protocols a complete Transparent
+ copy of the Document, free of added material. If you use the
+ latter option, you must take reasonably prudent steps, when you
+ begin distribution of Opaque copies in quantity, to ensure that
+ this Transparent copy will remain thus accessible at the stated
+ location until at least one year after the last time you
+ distribute an Opaque copy (directly or through your agents or
+ retailers) of that edition to the public.
+
+ It is requested, but not required, that you contact the authors of
+ the Document well before redistributing any large number of
+ copies, to give them a chance to provide you with an updated
+ version of the Document.
+
+ 4. MODIFICATIONS
+
+ You may copy and distribute a Modified Version of the Document
+ under the conditions of sections 2 and 3 above, provided that you
+ release the Modified Version under precisely this License, with
+ the Modified Version filling the role of the Document, thus
+ licensing distribution and modification of the Modified Version to
+ whoever possesses a copy of it. In addition, you must do these
+ things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title
+ distinct from that of the Document, and from those of
+ previous versions (which should, if there were any, be listed
+ in the History section of the Document). You may use the
+ same title as a previous version if the original publisher of
+ that version gives permission.
+
+ B. List on the Title Page, as authors, one or more persons or
+ entities responsible for authorship of the modifications in
+ the Modified Version, together with at least five of the
+ principal authors of the Document (all of its principal
+ authors, if it has fewer than five), unless they release you
+ from this requirement.
+
+ C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+
+ D. Preserve all the copyright notices of the Document.
+
+ E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+ F. Include, immediately after the copyright notices, a license
+ notice giving the public permission to use the Modified
+ Version under the terms of this License, in the form shown in
+ the Addendum below.
+
+ G. Preserve in that license notice the full lists of Invariant
+ Sections and required Cover Texts given in the Document's
+ license notice.
+
+ H. Include an unaltered copy of this License.
+
+ I. Preserve the section Entitled "History", Preserve its Title,
+ and add to it an item stating at least the title, year, new
+ authors, and publisher of the Modified Version as given on
+ the Title Page. If there is no section Entitled "History" in
+ the Document, create one stating the title, year, authors,
+ and publisher of the Document as given on its Title Page,
+ then add an item describing the Modified Version as stated in
+ the previous sentence.
+
+ J. Preserve the network location, if any, given in the Document
+ for public access to a Transparent copy of the Document, and
+ likewise the network locations given in the Document for
+ previous versions it was based on. These may be placed in
+ the "History" section. You may omit a network location for a
+ work that was published at least four years before the
+ Document itself, or if the original publisher of the version
+ it refers to gives permission.
+
+ K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the
+ section all the substance and tone of each of the contributor
+ acknowledgements and/or dedications given therein.
+
+ L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section
+ titles.
+
+ M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+
+ N. Do not retitle any existing section to be Entitled
+ "Endorsements" or to conflict in title with any Invariant
+ Section.
+
+ O. Preserve any Warranty Disclaimers.
+
+ If the Modified Version includes new front-matter sections or
+ appendices that qualify as Secondary Sections and contain no
+ material copied from the Document, you may at your option
+ designate some or all of these sections as invariant. To do this,
+ add their titles to the list of Invariant Sections in the Modified
+ Version's license notice. These titles must be distinct from any
+ other section titles.
+
+ You may add a section Entitled "Endorsements", provided it contains
+ nothing but endorsements of your Modified Version by various
+ parties--for example, statements of peer review or that the text
+ has been approved by an organization as the authoritative
+ definition of a standard.
+
+ You may add a passage of up to five words as a Front-Cover Text,
+ and a passage of up to 25 words as a Back-Cover Text, to the end
+ of the list of Cover Texts in the Modified Version. Only one
+ passage of Front-Cover Text and one of Back-Cover Text may be
+ added by (or through arrangements made by) any one entity. If the
+ Document already includes a cover text for the same cover,
+ previously added by you or by arrangement made by the same entity
+ you are acting on behalf of, you may not add another; but you may
+ replace the old one, on explicit permission from the previous
+ publisher that added the old one.
+
+ The author(s) and publisher(s) of the Document do not by this
+ License give permission to use their names for publicity for or to
+ assert or imply endorsement of any Modified Version.
+
+ 5. COMBINING DOCUMENTS
+
+ You may combine the Document with other documents released under
+ this License, under the terms defined in section 4 above for
+ modified versions, provided that you include in the combination
+ all of the Invariant Sections of all of the original documents,
+ unmodified, and list them all as Invariant Sections of your
+ combined work in its license notice, and that you preserve all
+ their Warranty Disclaimers.
+
+ The combined work need only contain one copy of this License, and
+ multiple identical Invariant Sections may be replaced with a single
+ copy. If there are multiple Invariant Sections with the same name
+ but different contents, make the title of each such section unique
+ by adding at the end of it, in parentheses, the name of the
+ original author or publisher of that section if known, or else a
+ unique number. Make the same adjustment to the section titles in
+ the list of Invariant Sections in the license notice of the
+ combined work.
+
+ In the combination, you must combine any sections Entitled
+ "History" in the various original documents, forming one section
+ Entitled "History"; likewise combine any sections Entitled
+ "Acknowledgements", and any sections Entitled "Dedications". You
+ must delete all sections Entitled "Endorsements."
+
+ 6. COLLECTIONS OF DOCUMENTS
+
+ You may make a collection consisting of the Document and other
+ documents released under this License, and replace the individual
+ copies of this License in the various documents with a single copy
+ that is included in the collection, provided that you follow the
+ rules of this License for verbatim copying of each of the
+ documents in all other respects.
+
+ You may extract a single document from such a collection, and
+ distribute it individually under this License, provided you insert
+ a copy of this License into the extracted document, and follow
+ this License in all other respects regarding verbatim copying of
+ that document.
+
+ 7. AGGREGATION WITH INDEPENDENT WORKS
+
+ A compilation of the Document or its derivatives with other
+ separate and independent documents or works, in or on a volume of
+ a storage or distribution medium, is called an "aggregate" if the
+ copyright resulting from the compilation is not used to limit the
+ legal rights of the compilation's users beyond what the individual
+ works permit. When the Document is included in an aggregate, this
+ License does not apply to the other works in the aggregate which
+ are not themselves derivative works of the Document.
+
+ If the Cover Text requirement of section 3 is applicable to these
+ copies of the Document, then if the Document is less than one half
+ of the entire aggregate, the Document's Cover Texts may be placed
+ on covers that bracket the Document within the aggregate, or the
+ electronic equivalent of covers if the Document is in electronic
+ form. Otherwise they must appear on printed covers that bracket
+ the whole aggregate.
+
+ 8. TRANSLATION
+
+ Translation is considered a kind of modification, so you may
+ distribute translations of the Document under the terms of section
+ 4. Replacing Invariant Sections with translations requires special
+ permission from their copyright holders, but you may include
+ translations of some or all Invariant Sections in addition to the
+ original versions of these Invariant Sections. You may include a
+ translation of this License, and all the license notices in the
+ Document, and any Warranty Disclaimers, provided that you also
+ include the original English version of this License and the
+ original versions of those notices and disclaimers. In case of a
+ disagreement between the translation and the original version of
+ this License or a notice or disclaimer, the original version will
+ prevail.
+
+ If a section in the Document is Entitled "Acknowledgements",
+ "Dedications", or "History", the requirement (section 4) to
+ Preserve its Title (section 1) will typically require changing the
+ actual title.
+
+ 9. TERMINATION
+
+ You may not copy, modify, sublicense, or distribute the Document
+ except as expressly provided under this License. Any attempt
+ otherwise to copy, modify, sublicense, or distribute it is void,
+ and will automatically terminate your rights under this License.
+
+ However, if you cease all violation of this License, then your
+ license from a particular copyright holder is reinstated (a)
+ provisionally, unless and until the copyright holder explicitly
+ and finally terminates your license, and (b) permanently, if the
+ copyright holder fails to notify you of the violation by some
+ reasonable means prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+ reinstated permanently if the copyright holder notifies you of the
+ violation by some reasonable means, this is the first time you have
+ received notice of violation of this License (for any work) from
+ that copyright holder, and you cure the violation prior to 30 days
+ after your receipt of the notice.
+
+ Termination of your rights under this section does not terminate
+ the licenses of parties who have received copies or rights from
+ you under this License. If your rights have been terminated and
+ not permanently reinstated, receipt of a copy of some or all of
+ the same material does not give you any rights to use it.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+ The Free Software Foundation may publish new, revised versions of
+ the GNU Free Documentation License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns. See
+ `http://www.gnu.org/copyleft/'.
+
+ Each version of the License is given a distinguishing version
+ number. If the Document specifies that a particular numbered
+ version of this License "or any later version" applies to it, you
+ have the option of following the terms and conditions either of
+ that specified version or of any later version that has been
+ published (not as a draft) by the Free Software Foundation. If
+ the Document does not specify a version number of this License,
+ you may choose any version ever published (not as a draft) by the
+ Free Software Foundation. If the Document specifies that a proxy
+ can decide which future versions of this License can be used, that
+ proxy's public statement of acceptance of a version permanently
+ authorizes you to choose that version for the Document.
+
+ 11. RELICENSING
+
+ "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+ World Wide Web server that publishes copyrightable works and also
+ provides prominent facilities for anybody to edit those works. A
+ public wiki that anybody can edit is an example of such a server.
+ A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+ site means any set of copyrightable works thus published on the MMC
+ site.
+
+ "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+ license published by Creative Commons Corporation, a not-for-profit
+ corporation with a principal place of business in San Francisco,
+ California, as well as future copyleft versions of that license
+ published by that same organization.
+
+ "Incorporate" means to publish or republish a Document, in whole or
+ in part, as part of another Document.
+
+ An MMC is "eligible for relicensing" if it is licensed under this
+ License, and if all works that were first published under this
+ License somewhere other than this MMC, and subsequently
+ incorporated in whole or in part into the MMC, (1) had no cover
+ texts or invariant sections, and (2) were thus incorporated prior
+ to November 1, 2008.
+
+ The operator of an MMC Site may republish an MMC contained in the
+ site under CC-BY-SA on the same site at any time before August 1,
+ 2009, provided the MMC is eligible for relicensing.
+
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+ To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+ If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+
+
+File: libunistring.info, Node: Index, Prev: Licenses, Up: Top
+
+Index
+*****
+
+
+* Menu:
+
+* ambiguous width: uniwidth.h. (line 10)
+* argument conventions: Conventions. (line 9)
+* autoconf macro: Autoconf macro. (line 6)
+* bidirectional category: Bidirectional category.
+ (line 6)
+* bidirectional reordering: More functionality. (line 6)
+* block: Blocks. (line 6)
+* breaks, line: unilbrk.h. (line 6)
+* breaks, word: uniwbrk.h. (line 6)
+* bug reports: Reporting problems. (line 6)
+* bug tracker: Reporting problems. (line 6)
+* C string functions: char * strings. (line 6)
+* C, programming language: ISO C and Java syntax.
+ (line 6)
+* C-like API: Classifications like in ISO C.
+ (line 6)
+* canonical combining class: Canonical combining class.
+ (line 6)
+* case detection: Case detection. (line 6)
+* case mappings: Case mappings of strings.
+ (line 6)
+* casing_prefix_context_t: Case mappings of substrings.
+ (line 15)
+* casing_suffix_context_t: Case mappings of substrings.
+ (line 46)
+* char, type: char * strings. (line 23)
+* combining, Unicode characters: Composition of characters.
+ (line 6)
+* comparing <1>: Elementary string functions on NUL terminated strings.
+ (line 128)
+* comparing: Elementary string functions.
+ (line 108)
+* comparing, ignoring case: Case insensitive comparison.
+ (line 6)
+* comparing, ignoring case, with collation rules: Case insensitive comparison.
+ (line 66)
+* comparing, ignoring normalization: Normalizing comparisons.
+ (line 6)
+* comparing, ignoring normalization and case: Case insensitive comparison.
+ (line 6)
+* comparing, ignoring normalization and case, with collation rules: Case insensitive comparison.
+ (line 66)
+* comparing, ignoring normalization, with collation rules: Normalizing comparisons.
+ (line 23)
+* comparing, with collation rules: Elementary string functions on NUL terminated strings.
+ (line 140)
+* comparing, with collation rules, ignoring case: Case insensitive comparison.
+ (line 66)
+* comparing, with collation rules, ignoring normalization: Normalizing comparisons.
+ (line 23)
+* comparing, with collation rules, ignoring normalization and case: Case insensitive comparison.
+ (line 66)
+* compiler options: Compiler options. (line 24)
+* composing, Unicode characters: Composition of characters.
+ (line 6)
+* converting <1>: uniconv.h. (line 45)
+* converting: Elementary string conversions.
+ (line 6)
+* copying <1>: Elementary string functions on NUL terminated strings.
+ (line 61)
+* copying: Elementary string functions.
+ (line 72)
+* counting: Elementary string functions.
+ (line 153)
+* decomposing: Decomposition of characters.
+ (line 6)
+* dependencies: Installation. (line 6)
+* detecting case: Case detection. (line 6)
+* duplicating <1>: Elementary string functions on NUL terminated strings.
+ (line 166)
+* duplicating: Elementary string functions with memory allocation.
+ (line 6)
+* enum iconv_ilseq_handler: uniconv.h. (line 30)
+* FDL, GNU Free Documentation License: GNU FDL. (line 6)
+* formatted output: unistdio.h. (line 6)
+* fullwidth: uniwidth.h. (line 22)
+* general category: General category. (line 6)
+* gl_LIBUNISTRING: Autoconf macro. (line 11)
+* GPL, GNU General Public License: GNU GPL. (line 6)
+* halfwidth: uniwidth.h. (line 22)
+* identifiers: ISO C and Java syntax.
+ (line 6)
+* installation: Installation. (line 10)
+* internationalization: Unicode and i18n. (line 6)
+* iterating <1>: Elementary string functions on NUL terminated strings.
+ (line 15)
+* iterating: Elementary string functions.
+ (line 6)
+* Java, programming language: ISO C and Java syntax.
+ (line 6)
+* LGPL, GNU Lesser General Public License: GNU LGPL. (line 6)
+* License, GNU FDL: GNU FDL. (line 6)
+* License, GNU GPL: GNU GPL. (line 6)
+* License, GNU LGPL: GNU LGPL. (line 6)
+* Licenses: Licenses. (line 6)
+* line breaks: unilbrk.h. (line 6)
+* locale: Locale encodings. (line 6)
+* locale categories: Locale encodings. (line 10)
+* locale encoding <1>: uniconv.h. (line 10)
+* locale encoding: Locale encodings. (line 28)
+* locale language: Case mappings of strings.
+ (line 16)
+* locale, multibyte: char * strings. (line 13)
+* locale_charset: uniconv.h. (line 13)
+* lowercasing: Case mappings of strings.
+ (line 6)
+* mailing list: Reporting problems. (line 6)
+* mirroring, of Unicode character: Mirrored character. (line 6)
+* normal forms: uninorm.h. (line 6)
+* normalizing: uninorm.h. (line 6)
+* output, formatted: unistdio.h. (line 6)
+* properties, of Unicode character: Properties. (line 6)
+* regular expression: uniregex.h. (line 6)
+* rendering: More functionality. (line 9)
+* return value conventions: Conventions. (line 47)
+* scripts: Scripts. (line 6)
+* searching, for a character <1>: Elementary string functions on NUL terminated strings.
+ (line 176)
+* searching, for a character: Elementary string functions.
+ (line 140)
+* searching, for a substring: Elementary string functions on NUL terminated strings.
+ (line 232)
+* stream, normalizing a: Normalization of streams.
+ (line 6)
+* struct uninorm_filter: Normalization of streams.
+ (line 11)
+* titlecasing: Case mappings of strings.
+ (line 6)
+* u16_asnprintf: unistdio.h. (line 132)
+* u16_asprintf: unistdio.h. (line 129)
+* u16_casecmp: Case insensitive comparison.
+ (line 51)
+* u16_casecoll: Case insensitive comparison.
+ (line 95)
+* u16_casefold: Case insensitive comparison.
+ (line 15)
+* u16_casexfrm: Case insensitive comparison.
+ (line 75)
+* u16_casing_prefix_context: Case mappings of substrings.
+ (line 30)
+* u16_casing_prefixes_context: Case mappings of substrings.
+ (line 39)
+* u16_casing_suffix_context: Case mappings of substrings.
+ (line 61)
+* u16_casing_suffixes_context: Case mappings of substrings.
+ (line 70)
+* u16_check: Elementary string checks.
+ (line 11)
+* u16_chr: Elementary string functions.
+ (line 145)
+* u16_cmp: Elementary string functions.
+ (line 115)
+* u16_cmp2: Elementary string functions.
+ (line 131)
+* u16_conv_from_encoding: uniconv.h. (line 54)
+* u16_conv_to_encoding: uniconv.h. (line 91)
+* u16_cpy: Elementary string functions.
+ (line 78)
+* u16_cpy_alloc: Elementary string functions with memory allocation.
+ (line 10)
+* u16_ct_casefold: Case insensitive comparison.
+ (line 37)
+* u16_ct_tolower: Case mappings of substrings.
+ (line 107)
+* u16_ct_totitle: Case mappings of substrings.
+ (line 125)
+* u16_ct_toupper: Case mappings of substrings.
+ (line 89)
+* u16_endswith: Elementary string functions on NUL terminated strings.
+ (line 258)
+* u16_is_cased: Case detection. (line 57)
+* u16_is_casefolded: Case detection. (line 44)
+* u16_is_lowercase: Case detection. (line 24)
+* u16_is_titlecase: Case detection. (line 34)
+* u16_is_uppercase: Case detection. (line 14)
+* u16_mblen: Elementary string functions.
+ (line 11)
+* u16_mbsnlen: Elementary string functions.
+ (line 157)
+* u16_mbtouc: Elementary string functions.
+ (line 38)
+* u16_mbtouc_unsafe: Elementary string functions.
+ (line 23)
+* u16_mbtoucr: Elementary string functions.
+ (line 45)
+* u16_move: Elementary string functions.
+ (line 89)
+* u16_next: Elementary string functions on NUL terminated strings.
+ (line 24)
+* u16_normalize: Normalization of strings.
+ (line 50)
+* u16_normcmp: Normalizing comparisons.
+ (line 13)
+* u16_normcoll: Normalizing comparisons.
+ (line 40)
+* u16_normxfrm: Normalizing comparisons.
+ (line 27)
+* u16_possible_linebreaks: unilbrk.h. (line 46)
+* u16_prev: Elementary string functions on NUL terminated strings.
+ (line 36)
+* u16_set: Elementary string functions.
+ (line 101)
+* u16_snprintf: unistdio.h. (line 126)
+* u16_sprintf: unistdio.h. (line 123)
+* u16_startswith: Elementary string functions on NUL terminated strings.
+ (line 250)
+* u16_stpcpy: Elementary string functions on NUL terminated strings.
+ (line 76)
+* u16_stpncpy: Elementary string functions on NUL terminated strings.
+ (line 99)
+* u16_strcat: Elementary string functions on NUL terminated strings.
+ (line 110)
+* u16_strchr: Elementary string functions on NUL terminated strings.
+ (line 180)
+* u16_strcmp: Elementary string functions on NUL terminated strings.
+ (line 132)
+* u16_strcoll: Elementary string functions on NUL terminated strings.
+ (line 142)
+* u16_strconv_from_encoding: uniconv.h. (line 129)
+* u16_strconv_from_locale: uniconv.h. (line 157)
+* u16_strconv_to_encoding: uniconv.h. (line 142)
+* u16_strconv_to_locale: uniconv.h. (line 167)
+* u16_strcpy: Elementary string functions on NUL terminated strings.
+ (line 66)
+* u16_strcspn: Elementary string functions on NUL terminated strings.
+ (line 201)
+* u16_strdup: Elementary string functions on NUL terminated strings.
+ (line 170)
+* u16_strlen: Elementary string functions on NUL terminated strings.
+ (line 47)
+* u16_strmblen: Elementary string functions on NUL terminated strings.
+ (line 11)
+* u16_strmbtouc: Elementary string functions on NUL terminated strings.
+ (line 17)
+* u16_strncat: Elementary string functions on NUL terminated strings.
+ (line 121)
+* u16_strncmp: Elementary string functions on NUL terminated strings.
+ (line 159)
+* u16_strncpy: Elementary string functions on NUL terminated strings.
+ (line 88)
+* u16_strnlen: Elementary string functions on NUL terminated strings.
+ (line 55)
+* u16_strpbrk: Elementary string functions on NUL terminated strings.
+ (line 225)
+* u16_strrchr: Elementary string functions on NUL terminated strings.
+ (line 188)
+* u16_strspn: Elementary string functions on NUL terminated strings.
+ (line 213)
+* u16_strstr: Elementary string functions on NUL terminated strings.
+ (line 239)
+* u16_strtok: Elementary string functions on NUL terminated strings.
+ (line 268)
+* u16_strwidth: uniwidth.h. (line 39)
+* u16_to_u32: Elementary string conversions.
+ (line 23)
+* u16_to_u8: Elementary string conversions.
+ (line 19)
+* u16_tolower: Case mappings of strings.
+ (line 44)
+* u16_totitle: Case mappings of strings.
+ (line 58)
+* u16_toupper: Case mappings of strings.
+ (line 30)
+* u16_u16_asnprintf: unistdio.h. (line 159)
+* u16_u16_asprintf: unistdio.h. (line 156)
+* u16_u16_snprintf: unistdio.h. (line 153)
+* u16_u16_sprintf: unistdio.h. (line 150)
+* u16_u16_vasnprintf: unistdio.h. (line 171)
+* u16_u16_vasprintf: unistdio.h. (line 168)
+* u16_u16_vsnprintf: unistdio.h. (line 165)
+* u16_u16_vsprintf: unistdio.h. (line 162)
+* u16_uctomb: Elementary string functions.
+ (line 62)
+* u16_vasnprintf: unistdio.h. (line 144)
+* u16_vasprintf: unistdio.h. (line 141)
+* u16_vsnprintf: unistdio.h. (line 138)
+* u16_vsprintf: unistdio.h. (line 135)
+* u16_width: uniwidth.h. (line 31)
+* u16_width_linebreaks: unilbrk.h. (line 65)
+* u16_wordbreaks: Word breaks in a string.
+ (line 10)
+* u32_asnprintf: unistdio.h. (line 185)
+* u32_asprintf: unistdio.h. (line 182)
+* u32_casecmp: Case insensitive comparison.
+ (line 54)
+* u32_casecoll: Case insensitive comparison.
+ (line 98)
+* u32_casefold: Case insensitive comparison.
+ (line 18)
+* u32_casexfrm: Case insensitive comparison.
+ (line 78)
+* u32_casing_prefix_context: Case mappings of substrings.
+ (line 32)
+* u32_casing_prefixes_context: Case mappings of substrings.
+ (line 42)
+* u32_casing_suffix_context: Case mappings of substrings.
+ (line 63)
+* u32_casing_suffixes_context: Case mappings of substrings.
+ (line 73)
+* u32_check: Elementary string checks.
+ (line 12)
+* u32_chr: Elementary string functions.
+ (line 147)
+* u32_cmp: Elementary string functions.
+ (line 117)
+* u32_cmp2: Elementary string functions.
+ (line 133)
+* u32_conv_from_encoding: uniconv.h. (line 57)
+* u32_conv_to_encoding: uniconv.h. (line 94)
+* u32_cpy: Elementary string functions.
+ (line 80)
+* u32_cpy_alloc: Elementary string functions with memory allocation.
+ (line 11)
+* u32_ct_casefold: Case insensitive comparison.
+ (line 42)
+* u32_ct_tolower: Case mappings of substrings.
+ (line 112)
+* u32_ct_totitle: Case mappings of substrings.
+ (line 130)
+* u32_ct_toupper: Case mappings of substrings.
+ (line 94)
+* u32_endswith: Elementary string functions on NUL terminated strings.
+ (line 260)
+* u32_is_cased: Case detection. (line 59)
+* u32_is_casefolded: Case detection. (line 46)
+* u32_is_lowercase: Case detection. (line 26)
+* u32_is_titlecase: Case detection. (line 36)
+* u32_is_uppercase: Case detection. (line 16)
+* u32_mblen: Elementary string functions.
+ (line 12)
+* u32_mbsnlen: Elementary string functions.
+ (line 158)
+* u32_mbtouc: Elementary string functions.
+ (line 39)
+* u32_mbtouc_unsafe: Elementary string functions.
+ (line 25)
+* u32_mbtoucr: Elementary string functions.
+ (line 46)
+* u32_move: Elementary string functions.
+ (line 91)
+* u32_next: Elementary string functions on NUL terminated strings.
+ (line 25)
+* u32_normalize: Normalization of strings.
+ (line 52)
+* u32_normcmp: Normalizing comparisons.
+ (line 15)
+* u32_normcoll: Normalizing comparisons.
+ (line 42)
+* u32_normxfrm: Normalizing comparisons.
+ (line 29)
+* u32_possible_linebreaks: unilbrk.h. (line 48)
+* u32_prev: Elementary string functions on NUL terminated strings.
+ (line 38)
+* u32_set: Elementary string functions.
+ (line 102)
+* u32_snprintf: unistdio.h. (line 179)
+* u32_sprintf: unistdio.h. (line 176)
+* u32_startswith: Elementary string functions on NUL terminated strings.
+ (line 252)
+* u32_stpcpy: Elementary string functions on NUL terminated strings.
+ (line 78)
+* u32_stpncpy: Elementary string functions on NUL terminated strings.
+ (line 101)
+* u32_strcat: Elementary string functions on NUL terminated strings.
+ (line 112)
+* u32_strchr: Elementary string functions on NUL terminated strings.
+ (line 181)
+* u32_strcmp: Elementary string functions on NUL terminated strings.
+ (line 133)
+* u32_strcoll: Elementary string functions on NUL terminated strings.
+ (line 143)
+* u32_strconv_from_encoding: uniconv.h. (line 131)
+* u32_strconv_from_locale: uniconv.h. (line 158)
+* u32_strconv_to_encoding: uniconv.h. (line 144)
+* u32_strconv_to_locale: uniconv.h. (line 168)
+* u32_strcpy: Elementary string functions on NUL terminated strings.
+ (line 68)
+* u32_strcspn: Elementary string functions on NUL terminated strings.
+ (line 203)
+* u32_strdup: Elementary string functions on NUL terminated strings.
+ (line 171)
+* u32_strlen: Elementary string functions on NUL terminated strings.
+ (line 48)
+* u32_strmblen: Elementary string functions on NUL terminated strings.
+ (line 12)
+* u32_strmbtouc: Elementary string functions on NUL terminated strings.
+ (line 18)
+* u32_strncat: Elementary string functions on NUL terminated strings.
+ (line 123)
+* u32_strncmp: Elementary string functions on NUL terminated strings.
+ (line 161)
+* u32_strncpy: Elementary string functions on NUL terminated strings.
+ (line 90)
+* u32_strnlen: Elementary string functions on NUL terminated strings.
+ (line 56)
+* u32_strpbrk: Elementary string functions on NUL terminated strings.
+ (line 227)
+* u32_strrchr: Elementary string functions on NUL terminated strings.
+ (line 189)
+* u32_strspn: Elementary string functions on NUL terminated strings.
+ (line 215)
+* u32_strstr: Elementary string functions on NUL terminated strings.
+ (line 241)
+* u32_strtok: Elementary string functions on NUL terminated strings.
+ (line 270)
+* u32_strwidth: uniwidth.h. (line 40)
+* u32_to_u16: Elementary string conversions.
+ (line 31)
+* u32_to_u8: Elementary string conversions.
+ (line 27)
+* u32_tolower: Case mappings of strings.
+ (line 47)
+* u32_totitle: Case mappings of strings.
+ (line 61)
+* u32_toupper: Case mappings of strings.
+ (line 33)
+* u32_u32_asnprintf: unistdio.h. (line 212)
+* u32_u32_asprintf: unistdio.h. (line 209)
+* u32_u32_snprintf: unistdio.h. (line 206)
+* u32_u32_sprintf: unistdio.h. (line 203)
+* u32_u32_vasnprintf: unistdio.h. (line 224)
+* u32_u32_vasprintf: unistdio.h. (line 221)
+* u32_u32_vsnprintf: unistdio.h. (line 218)
+* u32_u32_vsprintf: unistdio.h. (line 215)
+* u32_uctomb: Elementary string functions.
+ (line 63)
+* u32_vasnprintf: unistdio.h. (line 197)
+* u32_vasprintf: unistdio.h. (line 194)
+* u32_vsnprintf: unistdio.h. (line 191)
+* u32_vsprintf: unistdio.h. (line 188)
+* u32_width: uniwidth.h. (line 33)
+* u32_width_linebreaks: unilbrk.h. (line 68)
+* u32_wordbreaks: Word breaks in a string.
+ (line 11)
+* u8_asnprintf: unistdio.h. (line 79)
+* u8_asprintf: unistdio.h. (line 76)
+* u8_casecmp: Case insensitive comparison.
+ (line 48)
+* u8_casecoll: Case insensitive comparison.
+ (line 92)
+* u8_casefold: Case insensitive comparison.
+ (line 12)
+* u8_casexfrm: Case insensitive comparison.
+ (line 72)
+* u8_casing_prefix_context: Case mappings of substrings.
+ (line 28)
+* u8_casing_prefixes_context: Case mappings of substrings.
+ (line 36)
+* u8_casing_suffix_context: Case mappings of substrings.
+ (line 59)
+* u8_casing_suffixes_context: Case mappings of substrings.
+ (line 67)
+* u8_check: Elementary string checks.
+ (line 10)
+* u8_chr: Elementary string functions.
+ (line 143)
+* u8_cmp: Elementary string functions.
+ (line 113)
+* u8_cmp2: Elementary string functions.
+ (line 129)
+* u8_conv_from_encoding: uniconv.h. (line 51)
+* u8_conv_to_encoding: uniconv.h. (line 88)
+* u8_cpy: Elementary string functions.
+ (line 76)
+* u8_cpy_alloc: Elementary string functions with memory allocation.
+ (line 9)
+* u8_ct_casefold: Case insensitive comparison.
+ (line 32)
+* u8_ct_tolower: Case mappings of substrings.
+ (line 102)
+* u8_ct_totitle: Case mappings of substrings.
+ (line 120)
+* u8_ct_toupper: Case mappings of substrings.
+ (line 84)
+* u8_endswith: Elementary string functions on NUL terminated strings.
+ (line 256)
+* u8_is_cased: Case detection. (line 55)
+* u8_is_casefolded: Case detection. (line 42)
+* u8_is_lowercase: Case detection. (line 22)
+* u8_is_titlecase: Case detection. (line 32)
+* u8_is_uppercase: Case detection. (line 12)
+* u8_mblen: Elementary string functions.
+ (line 10)
+* u8_mbsnlen: Elementary string functions.
+ (line 156)
+* u8_mbtouc: Elementary string functions.
+ (line 37)
+* u8_mbtouc_unsafe: Elementary string functions.
+ (line 21)
+* u8_mbtoucr: Elementary string functions.
+ (line 44)
+* u8_move: Elementary string functions.
+ (line 87)
+* u8_next: Elementary string functions on NUL terminated strings.
+ (line 23)
+* u8_normalize: Normalization of strings.
+ (line 48)
+* u8_normcmp: Normalizing comparisons.
+ (line 11)
+* u8_normcoll: Normalizing comparisons.
+ (line 38)
+* u8_normxfrm: Normalizing comparisons.
+ (line 25)
+* u8_possible_linebreaks: unilbrk.h. (line 44)
+* u8_prev: Elementary string functions on NUL terminated strings.
+ (line 34)
+* u8_set: Elementary string functions.
+ (line 100)
+* u8_snprintf: unistdio.h. (line 73)
+* u8_sprintf: unistdio.h. (line 70)
+* u8_startswith: Elementary string functions on NUL terminated strings.
+ (line 248)
+* u8_stpcpy: Elementary string functions on NUL terminated strings.
+ (line 74)
+* u8_stpncpy: Elementary string functions on NUL terminated strings.
+ (line 97)
+* u8_strcat: Elementary string functions on NUL terminated strings.
+ (line 108)
+* u8_strchr: Elementary string functions on NUL terminated strings.
+ (line 179)
+* u8_strcmp: Elementary string functions on NUL terminated strings.
+ (line 131)
+* u8_strcoll: Elementary string functions on NUL terminated strings.
+ (line 141)
+* u8_strconv_from_encoding: uniconv.h. (line 127)
+* u8_strconv_from_locale: uniconv.h. (line 156)
+* u8_strconv_to_encoding: uniconv.h. (line 140)
+* u8_strconv_to_locale: uniconv.h. (line 166)
+* u8_strcpy: Elementary string functions on NUL terminated strings.
+ (line 64)
+* u8_strcspn: Elementary string functions on NUL terminated strings.
+ (line 199)
+* u8_strdup: Elementary string functions on NUL terminated strings.
+ (line 169)
+* u8_strlen: Elementary string functions on NUL terminated strings.
+ (line 46)
+* u8_strmblen: Elementary string functions on NUL terminated strings.
+ (line 10)
+* u8_strmbtouc: Elementary string functions on NUL terminated strings.
+ (line 16)
+* u8_strncat: Elementary string functions on NUL terminated strings.
+ (line 119)
+* u8_strncmp: Elementary string functions on NUL terminated strings.
+ (line 157)
+* u8_strncpy: Elementary string functions on NUL terminated strings.
+ (line 86)
+* u8_strnlen: Elementary string functions on NUL terminated strings.
+ (line 54)
+* u8_strpbrk: Elementary string functions on NUL terminated strings.
+ (line 223)
+* u8_strrchr: Elementary string functions on NUL terminated strings.
+ (line 187)
+* u8_strspn: Elementary string functions on NUL terminated strings.
+ (line 211)
+* u8_strstr: Elementary string functions on NUL terminated strings.
+ (line 237)
+* u8_strtok: Elementary string functions on NUL terminated strings.
+ (line 266)
+* u8_strwidth: uniwidth.h. (line 38)
+* u8_to_u16: Elementary string conversions.
+ (line 11)
+* u8_to_u32: Elementary string conversions.
+ (line 15)
+* u8_tolower: Case mappings of strings.
+ (line 41)
+* u8_totitle: Case mappings of strings.
+ (line 55)
+* u8_toupper: Case mappings of strings.
+ (line 27)
+* u8_u8_asnprintf: unistdio.h. (line 106)
+* u8_u8_asprintf: unistdio.h. (line 103)
+* u8_u8_snprintf: unistdio.h. (line 100)
+* u8_u8_sprintf: unistdio.h. (line 97)
+* u8_u8_vasnprintf: unistdio.h. (line 118)
+* u8_u8_vasprintf: unistdio.h. (line 115)
+* u8_u8_vsnprintf: unistdio.h. (line 112)
+* u8_u8_vsprintf: unistdio.h. (line 109)
+* u8_uctomb: Elementary string functions.
+ (line 61)
+* u8_vasnprintf: unistdio.h. (line 91)
+* u8_vasprintf: unistdio.h. (line 88)
+* u8_vsnprintf: unistdio.h. (line 85)
+* u8_vsprintf: unistdio.h. (line 82)
+* u8_width: uniwidth.h. (line 29)
+* u8_width_linebreaks: unilbrk.h. (line 62)
+* u8_wordbreaks: Word breaks in a string.
+ (line 9)
+* uc_all_blocks: Blocks. (line 38)
+* uc_all_scripts: Scripts. (line 37)
+* uc_bidi_category: Bidirectional category.
+ (line 88)
+* uc_bidi_category_byname: Bidirectional category.
+ (line 82)
+* uc_bidi_category_name: Bidirectional category.
+ (line 79)
+* uc_block: Blocks. (line 27)
+* uc_block_t: Blocks. (line 12)
+* uc_c_ident_category: ISO C and Java syntax.
+ (line 39)
+* uc_canonical_decomposition: Decomposition of characters.
+ (line 92)
+* uc_combining_class: Canonical combining class.
+ (line 89)
+* uc_composition: Composition of characters.
+ (line 10)
+* uc_decimal_value: Decimal digit value. (line 11)
+* uc_decomposition: Decomposition of characters.
+ (line 82)
+* uc_digit_value: Digit value. (line 11)
+* uc_fraction_t: Numeric value. (line 14)
+* uc_general_category: Object oriented API. (line 207)
+* uc_general_category_and: Object oriented API. (line 179)
+* uc_general_category_and_not: Object oriented API. (line 186)
+* uc_general_category_byname: Object oriented API. (line 201)
+* uc_general_category_name: Object oriented API. (line 195)
+* uc_general_category_or: Object oriented API. (line 173)
+* uc_general_category_t: Object oriented API. (line 7)
+* uc_is_alnum: Classifications like in ISO C.
+ (line 14)
+* uc_is_alpha: Classifications like in ISO C.
+ (line 18)
+* uc_is_bidi_category: Bidirectional category.
+ (line 91)
+* uc_is_blank: Classifications like in ISO C.
+ (line 64)
+* uc_is_block: Blocks. (line 32)
+* uc_is_c_whitespace: ISO C and Java syntax.
+ (line 10)
+* uc_is_cntrl: Classifications like in ISO C.
+ (line 24)
+* uc_is_digit: Classifications like in ISO C.
+ (line 27)
+* uc_is_general_category: Object oriented API. (line 213)
+* uc_is_general_category_withtable: Bit mask API. (line 52)
+* uc_is_graph: Classifications like in ISO C.
+ (line 31)
+* uc_is_java_whitespace: ISO C and Java syntax.
+ (line 14)
+* uc_is_lower: Classifications like in ISO C.
+ (line 35)
+* uc_is_print: Classifications like in ISO C.
+ (line 41)
+* uc_is_property: Properties as objects.
+ (line 140)
+* uc_is_property_alphabetic: Properties as functions.
+ (line 10)
+* uc_is_property_ascii_hex_digit: Properties as functions.
+ (line 74)
+* uc_is_property_bidi_arabic_digit: Properties as functions.
+ (line 60)
+* uc_is_property_bidi_arabic_right_to_left: Properties as functions.
+ (line 56)
+* uc_is_property_bidi_block_separator: Properties as functions.
+ (line 62)
+* uc_is_property_bidi_boundary_neutral: Properties as functions.
+ (line 66)
+* uc_is_property_bidi_common_separator: Properties as functions.
+ (line 61)
+* uc_is_property_bidi_control: Properties as functions.
+ (line 53)
+* uc_is_property_bidi_embedding_or_override: Properties as functions.
+ (line 68)
+* uc_is_property_bidi_eur_num_separator: Properties as functions.
+ (line 58)
+* uc_is_property_bidi_eur_num_terminator: Properties as functions.
+ (line 59)
+* uc_is_property_bidi_european_digit: Properties as functions.
+ (line 57)
+* uc_is_property_bidi_hebrew_right_to_left: Properties as functions.
+ (line 55)
+* uc_is_property_bidi_left_to_right: Properties as functions.
+ (line 54)
+* uc_is_property_bidi_non_spacing_mark: Properties as functions.
+ (line 65)
+* uc_is_property_bidi_other_neutral: Properties as functions.
+ (line 69)
+* uc_is_property_bidi_pdf: Properties as functions.
+ (line 67)
+* uc_is_property_bidi_segment_separator: Properties as functions.
+ (line 63)
+* uc_is_property_bidi_whitespace: Properties as functions.
+ (line 64)
+* uc_is_property_combining: Properties as functions.
+ (line 104)
+* uc_is_property_composite: Properties as functions.
+ (line 105)
+* uc_is_property_currency_symbol: Properties as functions.
+ (line 99)
+* uc_is_property_dash: Properties as functions.
+ (line 91)
+* uc_is_property_decimal_digit: Properties as functions.
+ (line 106)
+* uc_is_property_default_ignorable_code_point: Properties as functions.
+ (line 14)
+* uc_is_property_deprecated: Properties as functions.
+ (line 17)
+* uc_is_property_diacritic: Properties as functions.
+ (line 108)
+* uc_is_property_extender: Properties as functions.
+ (line 109)
+* uc_is_property_format_control: Properties as functions.
+ (line 90)
+* uc_is_property_grapheme_base: Properties as functions.
+ (line 46)
+* uc_is_property_grapheme_extend: Properties as functions.
+ (line 47)
+* uc_is_property_grapheme_link: Properties as functions.
+ (line 49)
+* uc_is_property_hex_digit: Properties as functions.
+ (line 73)
+* uc_is_property_hyphen: Properties as functions.
+ (line 92)
+* uc_is_property_id_continue: Properties as functions.
+ (line 36)
+* uc_is_property_id_start: Properties as functions.
+ (line 34)
+* uc_is_property_ideographic: Properties as functions.
+ (line 78)
+* uc_is_property_ids_binary_operator: Properties as functions.
+ (line 81)
+* uc_is_property_ids_trinary_operator: Properties as functions.
+ (line 82)
+* uc_is_property_ignorable_control: Properties as functions.
+ (line 110)
+* uc_is_property_iso_control: Properties as functions.
+ (line 89)
+* uc_is_property_join_control: Properties as functions.
+ (line 45)
+* uc_is_property_left_of_pair: Properties as functions.
+ (line 103)
+* uc_is_property_line_separator: Properties as functions.
+ (line 94)
+* uc_is_property_logical_order_exception: Properties as functions.
+ (line 18)
+* uc_is_property_lowercase: Properties as functions.
+ (line 27)
+* uc_is_property_math: Properties as functions.
+ (line 100)
+* uc_is_property_non_break: Properties as functions.
+ (line 88)
+* uc_is_property_not_a_character: Properties as functions.
+ (line 12)
+* uc_is_property_numeric: Properties as functions.
+ (line 107)
+* uc_is_property_other_alphabetic: Properties as functions.
+ (line 11)
+* uc_is_property_other_default_ignorable_code_point: Properties as functions.
+ (line 16)
+* uc_is_property_other_grapheme_extend: Properties as functions.
+ (line 48)
+* uc_is_property_other_id_continue: Properties as functions.
+ (line 37)
+* uc_is_property_other_id_start: Properties as functions.
+ (line 35)
+* uc_is_property_other_lowercase: Properties as functions.
+ (line 28)
+* uc_is_property_other_math: Properties as functions.
+ (line 101)
+* uc_is_property_other_uppercase: Properties as functions.
+ (line 26)
+* uc_is_property_paired_punctuation: Properties as functions.
+ (line 102)
+* uc_is_property_paragraph_separator: Properties as functions.
+ (line 95)
+* uc_is_property_pattern_syntax: Properties as functions.
+ (line 41)
+* uc_is_property_pattern_white_space: Properties as functions.
+ (line 40)
+* uc_is_property_private_use: Properties as functions.
+ (line 20)
+* uc_is_property_punctuation: Properties as functions.
+ (line 93)
+* uc_is_property_quotation_mark: Properties as functions.
+ (line 96)
+* uc_is_property_radical: Properties as functions.
+ (line 80)
+* uc_is_property_sentence_terminal: Properties as functions.
+ (line 97)
+* uc_is_property_soft_dotted: Properties as functions.
+ (line 30)
+* uc_is_property_space: Properties as functions.
+ (line 87)
+* uc_is_property_terminal_punctuation: Properties as functions.
+ (line 98)
+* uc_is_property_titlecase: Properties as functions.
+ (line 29)
+* uc_is_property_unassigned_code_value: Properties as functions.
+ (line 21)
+* uc_is_property_unified_ideograph: Properties as functions.
+ (line 79)
+* uc_is_property_uppercase: Properties as functions.
+ (line 25)
+* uc_is_property_variation_selector: Properties as functions.
+ (line 19)
+* uc_is_property_white_space: Properties as functions.
+ (line 9)
+* uc_is_property_xid_continue: Properties as functions.
+ (line 39)
+* uc_is_property_xid_start: Properties as functions.
+ (line 38)
+* uc_is_property_zero_width: Properties as functions.
+ (line 86)
+* uc_is_punct: Classifications like in ISO C.
+ (line 44)
+* uc_is_script: Scripts. (line 31)
+* uc_is_space: Classifications like in ISO C.
+ (line 49)
+* uc_is_upper: Classifications like in ISO C.
+ (line 54)
+* uc_is_xdigit: Classifications like in ISO C.
+ (line 60)
+* uc_java_ident_category: ISO C and Java syntax.
+ (line 43)
+* uc_locale_language: Case mappings of strings.
+ (line 21)
+* uc_mirror_char: Mirrored character. (line 14)
+* uc_numeric_value: Numeric value. (line 23)
+* uc_property_byname: Properties as objects.
+ (line 123)
+* uc_property_is_valid: Properties as objects.
+ (line 133)
+* uc_property_t: Properties as objects.
+ (line 9)
+* uc_script: Scripts. (line 20)
+* uc_script_byname: Scripts. (line 25)
+* uc_script_t: Scripts. (line 11)
+* uc_tolower: Case mappings of characters.
+ (line 20)
+* uc_totitle: Case mappings of characters.
+ (line 23)
+* uc_toupper: Case mappings of characters.
+ (line 17)
+* uc_width: uniwidth.h. (line 23)
+* uc_wordbreak_property: Word break property. (line 32)
+* UCS-4: Unicode. (line 14)
+* ucs4_t: unitypes.h. (line 16)
+* uint16_t: unitypes.h. (line 10)
+* uint32_t: unitypes.h. (line 11)
+* uint8_t: unitypes.h. (line 9)
+* ulc_asnprintf: unistdio.h. (line 53)
+* ulc_asprintf: unistdio.h. (line 50)
+* ulc_casecmp: Case insensitive comparison.
+ (line 57)
+* ulc_casecoll: Case insensitive comparison.
+ (line 101)
+* ulc_casexfrm: Case insensitive comparison.
+ (line 81)
+* ulc_fprintf: unistdio.h. (line 229)
+* ulc_possible_linebreaks: unilbrk.h. (line 50)
+* ulc_snprintf: unistdio.h. (line 48)
+* ulc_sprintf: unistdio.h. (line 45)
+* ulc_vasnprintf: unistdio.h. (line 65)
+* ulc_vasprintf: unistdio.h. (line 62)
+* ulc_vfprintf: unistdio.h. (line 232)
+* ulc_vsnprintf: unistdio.h. (line 59)
+* ulc_vsprintf: unistdio.h. (line 56)
+* ulc_width_linebreaks: unilbrk.h. (line 71)
+* ulc_wordbreaks: Word breaks in a string.
+ (line 12)
+* Unicode: Unicode. (line 6)
+* Unicode character, bidirectional category: Bidirectional category.
+ (line 6)
+* Unicode character, block: Blocks. (line 24)
+* Unicode character, canonical combining class: Canonical combining class.
+ (line 6)
+* Unicode character, case mappings: Case mappings of characters.
+ (line 6)
+* Unicode character, classification: General category. (line 6)
+* Unicode character, classification like in C: Classifications like in ISO C.
+ (line 6)
+* Unicode character, general category: General category. (line 6)
+* Unicode character, mirroring: Mirrored character. (line 6)
+* Unicode character, name: uniname.h. (line 6)
+* Unicode character, properties: Properties. (line 6)
+* Unicode character, script: Scripts. (line 17)
+* Unicode character, validity in C identifiers: ISO C and Java syntax.
+ (line 38)
+* Unicode character, validity in Java identifiers: ISO C and Java syntax.
+ (line 42)
+* Unicode character, value <1>: Numeric value. (line 6)
+* Unicode character, value <2>: Digit value. (line 6)
+* Unicode character, value: Decimal digit value. (line 6)
+* Unicode character, width: uniwidth.h. (line 22)
+* unicode_character_name: uniname.h. (line 19)
+* unicode_name_character: uniname.h. (line 25)
+* uninorm_decomposing_form: Normalization of strings.
+ (line 40)
+* uninorm_filter_create: Normalization of streams.
+ (line 19)
+* uninorm_filter_flush: Normalization of streams.
+ (line 33)
+* uninorm_filter_free: Normalization of streams.
+ (line 43)
+* uninorm_filter_write: Normalization of streams.
+ (line 29)
+* uninorm_is_compat_decomposing: Normalization of strings.
+ (line 32)
+* uninorm_is_composing: Normalization of strings.
+ (line 36)
+* uninorm_t: Normalization of strings.
+ (line 10)
+* uppercasing: Case mappings of strings.
+ (line 6)
+* use cases: Introduction. (line 44)
+* UTF-16: Unicode. (line 14)
+* UTF-16, strings: Unicode strings. (line 6)
+* UTF-32: Unicode. (line 14)
+* UTF-32, strings: Unicode strings. (line 6)
+* UTF-8: Unicode. (line 14)
+* UTF-8, strings: Unicode strings. (line 6)
+* validity: Elementary string checks.
+ (line 6)
+* value, of libunistring: Introduction. (line 44)
+* value, of Unicode character <1>: Numeric value. (line 6)
+* value, of Unicode character <2>: Digit value. (line 6)
+* value, of Unicode character: Decimal digit value. (line 6)
+* verification: Elementary string checks.
+ (line 6)
+* wchar_t, type: The wchar_t mess. (line 6)
+* width: uniwidth.h. (line 6)
+* word breaks: uniwbrk.h. (line 6)
+* wrapping: unilbrk.h. (line 6)
+
+
+
+Tag Table:
+Node: Top270
+Node: Introduction3239
+Node: Unicode5236
+Node: Unicode and i18n7116
+Node: Locale encodings8579
+Node: In-memory representation10787
+Node: char * strings11896
+Node: The wchar_t mess17153
+Node: Unicode strings19357
+Node: Conventions20508
+Node: unitypes.h22708
+Node: unistr.h23280
+Node: Elementary string checks23837
+Node: Elementary string conversions24459
+Node: Elementary string functions25761
+Node: Elementary string functions with memory allocation32732
+Node: Elementary string functions on NUL terminated strings33354
+Node: uniconv.h45090
+Node: unistdio.h52801
+Node: uniname.h61004
+Node: unictype.h62337
+Node: General category63246
+Node: Object oriented API64289
+Node: Bit mask API72751
+Node: Canonical combining class75005
+Node: Bidirectional category78219
+Node: Decimal digit value81276
+Node: Digit value81837
+Node: Numeric value82398
+Node: Mirrored character83289
+Node: Properties83962
+Node: Properties as objects84653
+Node: Properties as functions91031
+Node: Scripts96582
+Node: Blocks97968
+Node: ISO C and Java syntax99291
+Node: Classifications like in ISO C101001
+Node: uniwidth.h103705
+Node: uniwbrk.h105742
+Node: Word breaks in a string106269
+Node: Word break property107320
+Node: unilbrk.h108416
+Node: uninorm.h112587
+Node: Decomposition of characters113219
+Node: Composition of characters116595
+Node: Normalization of strings117304
+Node: Normalizing comparisons119366
+Node: Normalization of streams121722
+Node: unicase.h123810
+Node: Case mappings of characters124495
+Node: Case mappings of strings126542
+Node: Case mappings of substrings129875
+Node: Case insensitive comparison136805
+Node: Case detection142156
+Node: uniregex.h145424
+Node: Using the library145647
+Node: Installation146058
+Node: Compiler options146531
+Node: Include files148090
+Node: Autoconf macro149314
+Node: Reporting problems150872
+Node: More functionality151669
+Node: Licenses152112
+Node: GNU GPL153747
+Node: GNU LGPL191292
+Node: GNU FDL199738
+Node: Index224863
+
+End Tag Table
+
+
+Local Variables:
+coding: utf-8
+End:
diff --git a/doc/libunistring.texi b/doc/libunistring.texi
new file mode 100644
index 00000000..8eb8061f
--- /dev/null
+++ b/doc/libunistring.texi
@@ -0,0 +1,989 @@
+\input texinfo @c -*-texinfo-*-
+@comment %**start of header
+@setfilename libunistring.info
+@documentencoding UTF-8
+@settitle GNU libunistring
+@finalout
+@c Indices:
+@c am = autoconf macro @amindex
+@c cp = concept @cindex
+@c fn = function @findex
+@c tp = type @tindex
+@c Unused predefined indices:
+@c ky = keystroke @kindex
+@c pg = program @pindex
+@c vr = variable @vindex
+@defcodeindex am
+@syncodeindex am cp
+@syncodeindex fn cp
+@syncodeindex tp cp
+@ifclear texi2html
+@firstparagraphindent insert
+@end ifclear
+@c texi2html-1.76 does not support @arrow{}.
+@ifset texi2html
+@macro arrow{}
+→
+@end macro
+@end ifset
+@comment %**end of header
+
+@include version.texi
+
+@c Location of the POSIX specification on the web.
+@set POSIXURL http://www.opengroup.org/onlinepubs/9699919799
+
+@c Macro for referencing a POSIX function.
+@c We don't write it as func(), see section "GNU Manuals" of the
+@c GNU coding standards.
+@ifinfo
+@macro posixfunc{func}
+@code{\func\}
+@end macro
+@end ifinfo
+@ifnotinfo
+@macro posixfunc{func}
+@uref{@value{POSIXURL}/functions/\func\.html,,@code{\func\}}
+@end macro
+@end ifnotinfo
+
+@c Macro for referencing a normal function.
+@c We don't write it as func(), see section "GNU Manuals" of the
+@c GNU coding standards.
+@macro func{func}
+@code{\func\}
+@end macro
+
+@c Macro for an advisory ragged line break in TeX mode.
+@c Needed because there are long unbreakable pieces of text (such as URLs or
+@c formulas), TeX is too shy to move them to a new line. TeX considers only
+@c two choices: a line break in aligned mode (which it rejects due to aesthetic
+@c reasons) and writing into the margin. What we want in many cases is a line
+@c break without filling the first line. Like what @* delivers. But we want it
+@c only when needed, so that it disappears when unrelated changes in the same
+@c paragraph cause a line break in a nearby position. And we need it only in
+@c TeX mode. info and HTML modes are fine.
+@c This trick is from Karl Berry.
+@iftex
+@macro texnl
+@hfil@penalty9000@hfilneg
+@end macro
+@end iftex
+@ifnottex
+@macro texnl
+@end macro
+@end ifnottex
+
+@ifinfo
+@dircategory Software development
+@direntry
+* GNU libunistring: (libunistring). Unicode string library.
+@end direntry
+@end ifinfo
+
+@ifinfo
+This manual is for GNU libunistring.
+
+@ignore
+@c This was: @copying but it triggers a makeinfo 4.13 bug
+Copyright (C) 2001-2009 Free Software Foundation, Inc.
+
+This manual is free documentation. It is dually licensed under the
+GNU FDL and the GNU GPL. This means that you can redistribute this
+manual under either of these two licenses, at your choice.
+
+This manual is covered by the GNU FDL. Permission is granted to copy,
+distribute and/or modify this document under the terms of the
+GNU Free Documentation License (FDL), either version 1.2 of the
+License, or (at your option) any later version published by the
+Free Software Foundation (FSF); with no Invariant Sections, with no
+Front-Cover Text, and with no Back-Cover Texts.
+A copy of the license is included in @ref{GNU FDL}.
+
+This manual is covered by the GNU GPL. You can redistribute it and/or
+modify it under the terms of the GNU General Public License (GPL), either
+version 3 of the License, or (at your option) any later version published
+by the Free Software Foundation (FSF).
+A copy of the license is included in @ref{GNU GPL}.
+@end ignore
+@end ifinfo
+
+@titlepage
+@title GNU libunistring, version @value{VERSION}
+@subtitle updated @value{UPDATED}
+@subtitle Edition @value{EDITION}, @value{UPDATED}
+@author Bruno Haible
+
+@ifnothtml
+@page
+@vskip 0pt plus 1filll
+@c @insertcopying
+Copyright (C) 2001-2009 Free Software Foundation, Inc.
+
+This manual is free documentation. It is dually licensed under the
+GNU FDL and the GNU GPL. This means that you can redistribute this
+manual under either of these two licenses, at your choice.
+
+This manual is covered by the GNU FDL. Permission is granted to copy,
+distribute and/or modify this document under the terms of the
+GNU Free Documentation License (FDL), either version 1.2 of the
+License, or (at your option) any later version published by the
+Free Software Foundation (FSF); with no Invariant Sections, with no
+Front-Cover Text, and with no Back-Cover Texts.
+A copy of the license is included in @ref{GNU FDL}.
+
+This manual is covered by the GNU GPL. You can redistribute it and/or
+modify it under the terms of the GNU General Public License (GPL), either
+version 3 of the License, or (at your option) any later version published
+by the Free Software Foundation (FSF).
+A copy of the license is included in @ref{GNU GPL}.
+@end ifnothtml
+@end titlepage
+
+@c Table of Contents
+@contents
+
+@ifnottex
+@node Top
+@top GNU libunistring
+@end ifnottex
+
+@menu
+* Introduction:: Who may need Unicode strings?
+* Conventions:: Conventions used in this manual
+* unitypes.h:: Elementary types
+* unistr.h:: Elementary Unicode string functions
+* uniconv.h:: Conversions between Unicode and encodings
+* unistdio.h:: Output with Unicode strings
+* uniname.h:: Names of Unicode characters
+* unictype.h:: Unicode character classification and properties
+* uniwidth.h:: Display width
+* uniwbrk.h:: Word breaks in strings
+* unilbrk.h:: Line breaking
+* uninorm.h:: Normalization forms
+* unicase.h:: Case mappings
+* uniregex.h:: Regular expressions
+* Using the library:: How to link with the library and use it?
+* More functionality:: More advanced functionality
+* Licenses:: Licenses
+
+* Index:: General Index
+
+@detailmenu
+ --- The Detailed Node Listing ---
+
+Introduction
+
+* Unicode:: What is Unicode?
+* Unicode and i18n:: Unicode and internationalization
+* Locale encodings:: What is a locale encoding?
+* In-memory representation:: How to represent strings in memory?
+* char * strings:: What to keep in mind with @code{char *} strings
+* The wchar_t mess:: Why @code{wchar_t *} strings are useless
+* Unicode strings:: How are Unicode strings represented?
+
+unistr.h
+
+* Elementary string checks::
+* Elementary string conversions::
+* Elementary string functions::
+* Elementary string functions with memory allocation::
+* Elementary string functions on NUL terminated strings::
+
+unictype.h
+
+* General category::
+* Canonical combining class::
+* Bidirectional category::
+* Decimal digit value::
+* Digit value::
+* Numeric value::
+* Mirrored character::
+* Properties::
+* Scripts::
+* Blocks::
+* ISO C and Java syntax::
+* Classifications like in ISO C::
+
+General category
+
+* Object oriented API::
+* Bit mask API::
+
+Properties
+
+* Properties as objects::
+* Properties as functions::
+
+uniwbrk.h
+
+* Word breaks in a string::
+* Word break property::
+
+uninorm.h
+
+* Decomposition of characters::
+* Composition of characters::
+* Normalization of strings::
+* Normalizing comparisons::
+* Normalization of streams::
+
+unicase,h
+
+* Case mappings of characters::
+* Case mappings of strings::
+* Case mappings of substrings::
+* Case insensitive comparison::
+* Case detection::
+
+Using the library
+
+* Installation::
+* Compiler options::
+* Include files::
+* Autoconf macro::
+* Reporting problems::
+
+Licenses
+
+* GNU GPL:: GNU General Public License
+* GNU LGPL:: GNU Lesser General Public License
+* GNU FDL:: GNU Free Documentation License
+
+@end detailmenu
+@end menu
+
+@node Introduction
+@chapter Introduction
+
+This library provides functions for manipulating Unicode strings and
+for manipulating C strings according to the Unicode standard.
+
+It consists of the following parts:
+
+@table @code
+@item <unistr.h>
+elementary string functions
+@item <uniconv.h>
+conversion from/to legacy encodings
+@item <unistdio.h>
+formatted output to strings
+@item <uniname.h>
+character names
+@item <unictype.h>
+character classification and properties
+@item <uniwidth.h>
+string width when using nonproportional fonts
+@item <uniwbrk.h>
+word breaks
+@item <unilbrk.h>
+line breaking algorithm
+@item <uninorm.h>
+normalization (composition and decomposition)
+@item <unicase.h>
+case folding
+@item <uniregex.h>
+regular expressions (not yet implemented)
+@end table
+
+@cindex use cases
+@cindex value, of libunistring
+libunistring is for you if your application involves non-trivial text
+processing, such as upper/lower case conversions, line breaking, operations
+on words, or more advanced analysis of text. Text provided by the user can,
+in general, contain characters of all kinds of scripts. The text processing
+functions provided by this library handle all scripts and all languages.
+
+libunistring is for you if your application already uses the ISO C / POSIX
+@code{<ctype.h>}, @code{<wctype.h>} functions and the text it operates on is
+provided by the user and can be in any language.
+
+libunistring is also for you if your application uses Unicode strings as
+internal in-memory representation.
+
+@menu
+* Unicode:: What is Unicode?
+* Unicode and i18n:: Unicode and internationalization
+* Locale encodings:: What is a locale encoding?
+* In-memory representation:: How to represent strings in memory?
+* char * strings:: What to keep in mind with @code{char *} strings
+* The wchar_t mess:: Why @code{wchar_t *} strings are useless
+* Unicode strings:: How are Unicode strings represented?
+@end menu
+
+@node Unicode
+@section Unicode
+
+@cindex Unicode
+Unicode is a standardized repertoire of characters that contains characters
+from all scripts of the world, from Latin letters to Chinese ideographs
+and Babylonian cuneiform glyphs. It also specifies how these characters
+are to be rendered on a screen or on paper, and how common text processing
+(word selection, line breaking, uppercasing of page titles etc.) is supposed
+to behave on Unicode text.
+
+Unicode also specifies three ways of storing sequences of Unicode
+characters in a computer whose basic unit of data is an 8-bit byte:
+@cindex UTF-8
+@cindex UTF-16
+@cindex UTF-32
+@cindex UCS-4
+@table @asis
+@item UTF-8
+Every character is represented as 1 to 4 bytes.
+@item UTF-16
+Every character is represented as 1 to 2 units of 16 bits.
+@item UTF-32, a.k.a@. UCS-4
+Every character is represented as 1 unit of 32 bits.
+@end table
+
+For encoding Unicode text in a file, UTF-8 is usually used. For encoding
+Unicode strings in memory for a program, either of the three encoding forms
+can be reasonably used.
+
+Unicode is widely used on the web. Prior to the use of Unicode, web pages
+were in many different encodings (ISO-8859-1 for English, French, Spanish,
+ISO-8859-2 for Polish, ISO-8859-7 for Greek, KOI8-R for Russian, GB2312 or
+BIG5 for Chinese, ISO-2022-JP-2 or EUC-JP or Shift_JIS for Japanese, and many
+many others). It was next to impossible to create a document that contained
+Chinese and Polish text in the same document. Due to the many encodings for
+Japanese, even the processing of pure Japanese text was error prone.
+
+References:
+@itemize @bullet
+@item
+The Unicode standard:@texnl{} @url{http://www.unicode.org/}
+@item
+Definition of UTF-8:@texnl{} @url{http://www.rfc-editor.org/rfc/rfc3629.txt}
+@item
+Definition of UTF-16:@texnl{} @url{http://www.rfc-editor.org/rfc/rfc2781.txt}
+@item
+Markus Kuhn's UTF-8 and Unicode FAQ:@texnl{}
+@url{http://www.cl.cam.ac.uk/~mgk25/unicode.html}
+@end itemize
+
+@node Unicode and i18n
+@section Unicode and Internationalization
+
+@cindex internationalization
+Internationalization is the process of changing the source code of a program
+so that it can meet the expectations of users in any culture, if culture
+specific data (translations, images etc.) are provided.
+
+Use of Unicode is not strictly required for internationalization, but it
+makes internationalization much easier, because operations that need to
+look at specific characters (like hyphenation, spell checking, or the
+automatic conversion of double-quotes to opening and closing double-quote
+characters) don't need to consider multiple possible encodings of the text.
+
+Use of Unicode also enables multilingualization: the ability of having text
+in multiple languages present in the same document or even in the same line
+of text.
+
+But use of Unicode is not everything. Internationalization usually consists
+of three features:
+@itemize @bullet
+@item
+Use of Unicode where needed for text processing. This is what this library
+is for.
+@item
+Use of message catalogs for messages shown to the user, This is what
+GNU gettext is about.
+@item
+Use of locale specific conventions for date and time formats, for numeric
+formatting, or for sorting of text. This can be done adequately with the
+POSIX APIs and the implementation of locales in the GNU C library.
+@end itemize
+
+@node Locale encodings
+@section Locale encodings
+
+@cindex locale
+A locale is a set of cultural conventions. According to POSIX, for a program,
+at any moment, there is one locale being designated as the ``current locale''.
+(Actually, POSIX supports also one locale per thread, but this feature is not
+yet universally implemented and not widely used.)
+@cindex locale categories
+The locale is partitioned into several aspects, called the ``categories''
+of the locale. The main various aspects are:
+@itemize
+@item
+The character encoding and the character properties. This is the
+@code{LC_CTYPE} category.
+@item
+The sorting rules for text. This is the @code{LC_COLLATE} category.
+@item
+The language specific translations of messages. This is the
+@code{LC_MESSAGES} category.
+@item
+The formatting rules for numbers, such as the decimal separator. This is
+the @code{LC_NUMERIC} category.
+@item
+The formatting rules for amounts of money. This is the @code{LC_MONETARY}
+category.
+@item
+The formatting of date and time. This is the @code{LC_TIME} category.
+@end itemize
+
+@cindex locale encoding
+In particular, the @code{LC_CTYPE} category of the current locale determines
+the character encoding. This is the encoding of @samp{char *} strings.
+We also call it the ``locale encoding''. GNU libunistring has a function,
+@func{locale_charset}, that returns a standardized (platform independent)
+name for this encoding.
+
+All locale encodings used on glibc systems are essentially ASCII compatible:
+Most graphic ASCII characters have the same representation, as a single byte,
+in that encoding as in ASCII.
+
+Among the possible locale encodings are UTF-8 and GB18030. Both allow
+to represent any Unicode character as a sequence of bytes. UTF-8 is used in
+most of the world, whereas GB18030 is used in the People's Republic of China,
+because it is backward compatible with the GB2312 encoding that was used in
+this country earlier.
+
+The legacy locale encodings, ISO-8859-15 (which supplanted ISO-8859-1 in
+most of Europe), ISO-8859-2, KOI8-R, EUC-JP, etc., are still in use in
+many places, though.
+
+UTF-16 and UTF-32 are not used as locale encodings, because they are not
+ASCII compatible.
+
+@node In-memory representation
+@section Choice of in-memory representation of strings
+
+There are three ways of representing strings in memory of a running
+program.
+@itemize
+@item
+As @samp{char *} strings. Such strings are represented in locale encoding.
+This approach is employed when not much text processing is done by the
+program. When some Unicode aware processing is to be done, a string is
+converted to Unicode on the fly and back to locale encoding afterwards.
+@item
+As UTF-8 or UTF-16 or UTF-32 strings. This implies that conversion from
+locale encoding to Unicode is performed on input, and in the opposite
+direction on output. This approach is employed when the program does
+a significant amount of text processing, or when the program has multiple
+threads operating on the same data but in different locales.
+@item
+As @samp{wchar_t *}, a.k.a@. ``wide strings''. This approach is misguided,
+see @ref{The wchar_t mess}.
+@end itemize
+
+@node char * strings
+@section @samp{char *} strings
+
+@cindex C string functions
+The classical C strings, with its C library support standardized by
+ISO C and POSIX, can be used in internationalized programs with some
+precautions. The problem with this API is that many of the C library
+functions for strings don't work correctly on strings in locale
+encodings, leading to bugs that only people in some cultures of the
+world will experience.
+
+@cindex locale, multibyte
+The first problem with the C library API is the support of multibyte
+locales. According to the locale encoding, in general, every character
+is represented by one or more bytes (up to 4 bytes in practice --- but
+use @code{MB_LEN_MAX} instead of the number 4 in the code).
+When every character is represented by only 1 byte, we speak of an
+``unibyte locale'', otherwise of a ``multibyte locale''. It is important
+to realize that the majority of Unix installations nowadays use UTF-8
+or GB18030 as locale encoding; therefore, the majority of users are
+using multibyte locales.
+
+@cindex char, type
+The important fact to remember is:
+@cartouche
+@emph{A @samp{char} is a byte, not a character.}
+@end cartouche
+
+As a consequence:
+@itemize
+@item
+The @code{<ctype.h>} API is useless in this context; it does not work in
+multibyte locales.
+@item
+The @posixfunc{strlen} function does not return the number of characters
+in a string. Nor does it return the number of screen columns occupied
+by a string after it is output. It merely returns the number of
+@emph{bytes} occupied by a string.
+@item
+Truncating a string, for example, with @posixfunc{strncpy}, can have the
+effect of truncating it in the middle of a multibyte character. Such
+a string will, when output, have a garbled character at its end, often
+represented by a hollow box.
+@item
+@posixfunc{strchr} and @posixfunc{strrchr} do not work with multibyte strings
+if the locale encoding is GB18030 and the character to be searched is
+a digit.
+@item
+@posixfunc{strstr} does not work with multibyte strings if the locale encoding
+is different from UTF-8.
+@item
+@posixfunc{strcspn}, @posixfunc{strpbrk}, @posixfunc{strspn} cannot work
+correctly in multibyte locales: they assume the second argument is a list of
+single-byte characters. Even in this simple case, they do not work with
+multibyte strings if the locale encoding is GB18030 and one of the
+characters to be searched is a digit.
+@item
+@posixfunc{strsep} and @posixfunc{strtok_r} do not work with multibyte strings
+unless all of the delimiter characters are ASCII characters < 0x30.
+@item
+The @posixfunc{strcasecmp}, @posixfunc{strncasecmp}, and @posixfunc{strcasestr}
+functions do not work with multibyte strings.
+@end itemize
+
+The workarounds can be found in GNU gnulib
+@url{http://www.gnu.org/software/gnulib/}.
+@itemize
+@item
+gnulib has modules @samp{mbchar}, @samp{mbiter}, @samp{mbuiter} that
+represent multibyte characters and allow to iterate across a multibyte
+string with the same ease as through a unibyte string.
+@item
+gnulib has functions @func{mbslen} and @func{mbswidth} that can be
+used instead of @posixfunc{strlen} when the number of characters or the
+number of screen columns of a string is requested.
+@item
+gnulib has functions @func{mbschr} and @func{mbsrrchr} that are
+like @posixfunc{strchr} and @posixfunc{strrchr}, but work in multibyte locales.
+@item
+gnulib has a function @func{mbsstr}, like @posixfunc{strstr}, but works
+in multibyte locales.
+@item
+gnulib has functions @func{mbscspn}, @func{mbspbrk}, @func{mbsspn}
+that are like @posixfunc{strcspn}, @posixfunc{strpbrk}, @posixfunc{strspn}, but
+work in multibyte locales.
+@item
+gnulib has functions @func{mbssep} and @func{mbstok_r} that are
+like @posixfunc{strsep} and @posixfunc{strtok_r} but work in multibyte locales.
+@item
+gnulib has functions @func{mbscasecmp}, @func{mbsncasecmp},
+@func{mbspcasecmp}, and @func{mbscasestr} that are like @posixfunc{strcasecmp},
+@posixfunc{strncasecmp}, and @posixfunc{strcasestr}, but
+work in multibyte locales. Still, the function @code{ulc_casecmp} is
+preferable to these functions; see below.
+@end itemize
+
+The second problem with the C library API is that it has some assumptions built-in that are not valid in some languages:
+@itemize
+@item
+It assumes that there are only two forms of every character: uppercase
+and lowercase. This is not true for Croatian, where the character
+@sc{LETTER DZ WITH CARON} comes in three forms:
+@sc{LATIN CAPITAL LETTER DZ WITH CARON} (DZ),
+@sc{LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON} (Dz),
+@sc{LATIN SMALL LETTER DZ WITH CARON} (dz).
+@item
+It assumes that uppercasing of 1 character leads to 1 character. This
+is not true for German, where the @sc{LATIN SMALL LETTER SHARP S}, when
+uppercased, becomes @samp{SS}.
+@item
+It assumes that there is 1:1 mapping between uppercase and lowercase forms.
+This is not true for the Greek sigma: @sc{GREEK CAPITAL LETTER SIGMA} is
+the uppercase of both @sc{GREEK SMALL LETTER SIGMA} and
+@sc{GREEK SMALL LETTER FINAL SIGMA}.
+@item
+It assumes that the upper/lowercase mappings are position independent.
+This is not true for the Greek sigma and the Lithuanian i.
+@end itemize
+
+The correct way to deal with this problem is
+@enumerate
+@item
+to provide functions for titlecasing, as well as for upper- and
+lowercasing,
+@item
+to view case transformations as functions that operates on strings,
+rather than on characters.
+@end enumerate
+
+This is implemented in this library, through the functions declared in @code{<unicase.h>}, see @ref{unicase.h}.
+
+@node The wchar_t mess
+@section The @code{wchar_t} mess
+
+@cindex wchar_t, type
+The ISO C and POSIX standard creators made an attempt to fix the first
+problem mentioned in the previous section. They introduced
+@itemize
+@item
+a type @samp{wchar_t}, designed to encapsulate an entire character,
+@item
+a ``wide string'' type @samp{wchar_t *}, and
+@item
+functions declared in @code{<wctype.h>} that were meant to supplant the
+ones in @code{<ctype.h>}.
+@end itemize
+
+Unfortunately, this API and its implementation has numerous problems:
+
+@itemize
+@item
+On AIX and Windows platforms, @code{wchar_t} is a 16-bit type. This
+means that it can never accommodate an entire Unicode character. Either
+the @code{wchar_t *} strings are limited to characters in UCS-2 (the
+``Basic Multilingual Plane'' of Unicode), or --- if @code{wchar_t *}
+strings are encoded in UTF-16 --- a @code{wchar_t} represents only half
+of a character in the worst case, making the @code{<wctype.h>} functions
+pointless.
+
+@item
+On Solaris and FreeBSD, the @code{wchar_t} encoding is locale dependent
+and undocumented. This means, if you want to know any property of a
+@code{wchar_t} character, other than the properties defined by
+@code{<wctype.h>} --- such as whether it's a dash, currency symbol,
+paragraph separator, or similar ---, you have to convert it to
+@code{char *} encoding first, by use of the function @posixfunc{wctomb}.
+
+@item
+When you read a stream of wide characters, through the functions
+@posixfunc{fgetwc} and @posixfunc{fgetws}, and when the input stream/file is
+not in the expected encoding, you have no way to determine the invalid
+byte sequence and do some corrective action. If you use these
+functions, your program becomes ``garbage in - more garbage out'' or
+``garbage in - abort''.
+@end itemize
+
+As a consequence, it is better to use multibyte strings, as explained in
+the previous section. Such multibyte strings can bypass limitations
+of the @code{wchar_t} type, if you use functions defined in gnulib and
+libunistring for text processing. They can also faithfully transport
+malformed characters that were present in the input, without requiring
+the program to produce garbage or abort.
+
+@node Unicode strings
+@section Unicode strings
+
+libunistring supports Unicode strings in three representations:
+@cindex UTF-8, strings
+@cindex UTF-16, strings
+@cindex UTF-32, strings
+@itemize
+@item
+UTF-8 strings, through the type @samp{uint8_t *}. The units are bytes
+(@code{uint8_t}).
+@item
+UTF-16 strings, through the type @samp{uint16_t *}, The units are 16-bit
+memory words (@code{uint16_t}).
+@item
+UTF-32 strings, through the type @samp{uint32_t *}. The units are 32-bit
+memory words (@code{uint32_t}).
+@end itemize
+
+As with C strings, there are two variants:
+@itemize
+@item
+Unicode strings with a terminating NUL character are represented as
+a pointer to the first unit of the string. There is a unit containing
+a 0 value at the end. It is considered part of the string for all
+memory allocation purposes, but is not considered part of the string
+for all other logical purposes.
+@item
+Unicode strings where embedded NUL characters are allowed. These
+are represented by a pointer to the first unit and the number of units
+(not bytes!) of the string. In this setting, there is no trailing
+zero-valued unit used as ``end marker''.
+@end itemize
+
+@node Conventions
+@chapter Conventions
+
+This chapter explains conventions valid throughout the libunistring library.
+
+@cindex argument conventions
+Variables of type @code{char *} denote C strings in locale encoding.
+See @ref{Locale encodings}.
+
+Variables of type @code{uint8_t *} denote UTF-8 strings. Their units
+are bytes.
+
+Variables of type @code{uint16_t *} denote UTF-16 strings, without byte
+order mark. Their units are 2-byte words.
+
+Variables of type @code{uint32_t *} denote UTF-32 strings, without byte
+order mark. Their units are 4-byte words.
+
+Argument pairs @code{(@var{s}, @var{n})} denote a string
+@code{@var{s}[0..@var{n}-1]} with exactly @var{n} units.
+
+All functions with prefix @samp{ulc_} operate on C strings in locale
+encoding.
+
+All functions with prefix @samp{u8_} operate on UTF-8 strings.
+
+All functions with prefix @samp{u16_} operate on UTF-16 strings.
+
+All functions with prefix @samp{u32_} operate on UTF-32 strings.
+
+For every function with prefix @samp{u8_}, operating on UTF-8 strings,
+there is also a corresponding function with prefix @samp{u16_},
+operating on UTF-16 strings, and a corresponding function with prefix
+@samp{u32_}, operating on UTF-32 strings. Their description is
+analogous; in this documentation we describe only the function that
+operates on UTF-8 strings, for brevity.
+
+A declaration with a variable @var{n} denotes the three concrete
+declarations with @var{n} = 8, @var{n} = 16, @var{n} = 32.
+
+All parameters starting with @samp{str} and the parameters of
+functions starting with @code{u8_str}/@code{u16_str}/@code{u32_str}
+denote a NUL terminated string.
+
+@cindex return value conventions
+Error values are always returned through the @code{errno} variable,
+usually with a return value that indicates the presence of an error
+(NULL for functions that return an pointer, or -1 for functions that
+return an @code{int}).
+
+Functions returning a string result take a
+@code{(@var{resultbuf}, @var{lengthp})}
+argument pair. If @var{resultbuf} is not NULL and the result fits
+into @code{*@var{lengthp}} units, it is put in @var{resultbuf}, and
+@var{resultbuf} is returned. Otherwise, a freshly allocated string
+is returned. In both cases, @code{*@var{lengthp}} is set to the
+length (number of units) of the returned string. In case of error,
+NULL is returned and @code{errno} is set.
+
+@include unitypes.texi
+@include unistr.texi
+@include uniconv.texi
+@include unistdio.texi
+@include uniname.texi
+@include unictype.texi
+@include uniwidth.texi
+@include uniwbrk.texi
+@include unilbrk.texi
+@include uninorm.texi
+@include unicase.texi
+@include uniregex.texi
+
+@node Using the library
+@chapter Using the library
+
+This chapter explains some practical considerations, regarding the
+installation and compiler options that are needed in order to use this
+library.
+
+@menu
+* Installation::
+* Compiler options::
+* Include files::
+* Autoconf macro::
+* Reporting problems::
+@end menu
+
+@node Installation
+@section Installation
+
+@cindex dependencies
+Before you can use the library, it must be installed. First, you have to
+make sure all dependencies are installed. They are listed in the file
+@file{DEPENDENCIES}.
+
+@cindex installation
+Then you can proceed to build and install the library, as described in the
+file @file{INSTALL}. For installation on Windows systems, please refer to
+the file @file{README.woe32}.
+
+@node Compiler options
+@section Compiler options
+
+Let's denote as @code{LIBUNISTRING_PREFIX} the value of the @samp{--prefix}
+option that you passed to @code{configure} while installing this package.
+If you didn't pass any @samp{--prefix} option, then the package is installed
+in @file{/usr/local}.
+
+Let's denote as @code{LIBUNISTRING_INCLUDEDIR} the directory where the
+include files were installed. This is usually the same as
+@code{$@{LIBUNISTRING_PREFIX@}/include}. Except that if you passed an
+@samp{--includedir} option to @code{configure}, it is the value of that
+option.
+
+Let's further denote as @code{LIBUNISTRING_LIBDIR} the directory where
+the library itself was installed. This is the value that you passed
+with the @samp{--libdir} option to @code{configure}, or otherwise the
+same as @code{$@{LIBUNISTRING_PREFIX@}/lib}. Recall that when building
+in 64-bit mode on a 64-bit GNU/Linux system that supports executables
+in either 64-bit mode or 32-bit mode, you should have used the option
+@code{--libdir=$@{LIBUNISTRING_PREFIX@}/lib64}.
+
+@cindex compiler options
+So that the compiler finds the include files, you have to pass it the
+option @code{-I$@{LIBUNISTRING_INCLUDEDIR@}}.
+
+So that the compiler finds the library during its linking pass, you have
+to pass it the options @code{-L$@{LIBUNISTRING_LIBDIR@} -lunistring}.
+On some systems, in some configurations, you also have to pass options
+needed for linking with @code{libiconv}. The autoconf macro
+@code{gl_LIBUNISTRING} (see @ref{Autoconf macro}) deals with this
+particularity.
+
+@node Include files
+@section Include files
+
+Most of the include files have been presented in the introduction, see
+@ref{Introduction}, and subsequent detailed chapters.
+
+Another include file is @code{<unistring/version.h>}. It contains the
+version number of the libunistring library.
+
+@deftypevr Macro int _LIBUNISTRING_VERSION
+This constant contains the version of libunistring that is being used
+at compile time. It encodes the major and minor parts of the version
+number only. These parts are encoded in the form @code{(major<<8) + minor}.
+@end deftypevr
+
+@deftypevr Constant int _libunistring_version
+This constant contains the version of libunistring that is being used
+at run time. It encodes the major and minor parts of the version
+number only. These parts are encoded in the form @code{(major<<8) + minor}.
+@end deftypevr
+
+It is possible that @code{_libunistring_version} is greater than
+@code{_LIBUNISTRING_VERSION}. This can happen when you use
+@code{libunistring} as a shared library, and a newer, binary
+backward-compatible version has been installed after your program
+that uses @code{libunistring} was installed.
+
+@node Autoconf macro
+@section Autoconf macro
+
+@cindex autoconf macro
+GNU Gnulib provides an autoconf macro that tests for the availability
+of @code{libunistring}. It is contained in the Gnulib module
+@samp{libunistring}, see@texnl{}
+@url{http://www.gnu.org/software/gnulib/MODULES.html#module=libunistring}.
+
+@amindex gl_LIBUNISTRING
+The macro is called @code{gl_LIBUNISTRING}. It searches for an installed
+libunistring. If found, it sets and AC_SUBSTs @code{HAVE_LIBUNISTRING=yes}
+and the @code{LIBUNISTRING} and @code{LTLIBUNISTRING} variables and augments
+the @code{CPPFLAGS} variable, and defines the C macro
+@code{HAVE_LIBUNISTRING} to 1. Otherwise, it sets and AC_SUBSTs
+@code{HAVE_LIBUNISTRING=no} and @code{LIBUNISTRING} and @code{LTLIBUNISTRING}
+to empty.
+
+The complexities that @code{gl_LIBUNISTRING} deals with are the following:
+
+@itemize @bullet
+@item
+On some operating systems, in some configurations, libunistring depends
+on @code{libiconv}, and the options for linking with libiconv must be
+mentioned explicitly on the link command line.
+
+@item
+GNU @code{libunistring}, if installed, is not necessarily already in the
+search path (@code{CPPFLAGS} for the include file search path,
+@code{LDFLAGS} for the library search path).
+
+@item
+GNU @code{libunistring}, if installed, is not necessarily already in the
+run time library search path. To avoid the need for setting an environment
+variable like @code{LD_LIBRARY_PATH}, the macro adds the appropriate
+run time search path options to the @code{LIBUNISTRING} variable. This works
+on most systems.
+@end itemize
+
+@node Reporting problems
+@section Reporting problems
+
+@cindex bug reports
+@cindex bug tracker
+@cindex mailing list
+If you encounter any problem, please don't hesitate to send a detailed
+bug report to the @code{bug-libunistring@@gnu.org} mailing list. You can
+alternatively also use the bug tracker at the project page
+@url{https://savannah.gnu.org/projects/libunistring}.
+
+Please always include the version number of this library, and a short
+description of your operating system and compilation environment with
+corresponding version numbers.
+
+For problems that appear while building and installing @code{libunistring},
+for which you don't find the remedy in the @file{INSTALL} file, please include
+a description of the options that you passed to the @samp{configure} script.
+
+@node More functionality
+@chapter More advanced functionality
+
+@cindex bidirectional reordering
+For bidirectional reordering of strings, we recommend the GNU FriBidi library:
+@url{http://www.fribidi.org/}.
+
+@cindex rendering
+For the rendering of Unicode strings outside of the context of a given toolkit
+(KDE/Qt or GNOME/Gtk), we recommend the Pango library:
+@url{http://www.pango.org/}.
+
+@node Licenses
+@appendix Licenses
+@cindex Licenses
+
+The files of this package are covered by the licenses indicated in each
+particular file or directory. Here is a summary:
+
+@itemize @bullet
+@item
+The @code{libunistring} library is covered by the
+GNU Lesser General Public License (LGPL).
+A copy of the license is included in @ref{GNU LGPL}.
+
+@item
+This manual is free documentation. It is dually licensed under the
+GNU FDL and the GNU GPL. This means that you can redistribute this
+manual under either of these two licenses, at your choice.
+@*
+This manual is covered by the GNU FDL. Permission is granted to copy,
+distribute and/or modify this document under the terms of the
+GNU Free Documentation License (FDL), either version 1.2 of the
+License, or (at your option) any later version published by the
+Free Software Foundation (FSF); with no Invariant Sections, with no
+Front-Cover Text, and with no Back-Cover Texts.
+A copy of the license is included in @ref{GNU FDL}.
+@*
+This manual is covered by the GNU GPL. You can redistribute it and/or
+modify it under the terms of the GNU General Public License (GPL), either
+version 3 of the License, or (at your option) any later version published
+by the Free Software Foundation (FSF).
+A copy of the license is included in @ref{GNU GPL}.
+@end itemize
+
+@menu
+* GNU GPL:: GNU General Public License
+* GNU LGPL:: GNU Lesser General Public License
+* GNU FDL:: GNU Free Documentation License
+@end menu
+
+@page
+@node GNU GPL
+@appendixsec GNU GENERAL PUBLIC LICENSE
+@cindex GPL, GNU General Public License
+@cindex License, GNU GPL
+@include gpl.texi
+@page
+@node GNU LGPL
+@appendixsec GNU LESSER GENERAL PUBLIC LICENSE
+@cindex LGPL, GNU Lesser General Public License
+@cindex License, GNU LGPL
+@include lgpl.texi
+@page
+@node GNU FDL
+@appendixsec GNU Free Documentation License
+@cindex FDL, GNU Free Documentation License
+@cindex License, GNU FDL
+@include fdl.texi
+
+@node Index
+@unnumbered Index
+
+@printindex cp
+
+@bye
+
+@c Local Variables:
+@c indent-tabs-mode: nil
+@c whitespace-check-buffer-indent: nil
+@c End:
diff --git a/doc/libunistring_1.html b/doc/libunistring_1.html
new file mode 100644
index 00000000..646fdc65
--- /dev/null
+++ b/doc/libunistring_1.html
@@ -0,0 +1,531 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: 1. Introduction</title>
+
+<meta name="description" content="GNU libunistring: 1. Introduction">
+<meta name="keywords" content="GNU libunistring: 1. Introduction">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[ &lt;&lt; ]</td>
+<td valign="middle" align="left">[<a href="libunistring_2.html#SEC9" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="Introduction"></a>
+<a name="SEC1"></a>
+<h1 class="chapter"> <a href="libunistring.html#TOC1">1. Introduction</a> </h1>
+
+<p>This library provides functions for manipulating Unicode strings and
+for manipulating C strings according to the Unicode standard.
+</p>
+<p>It consists of the following parts:
+</p>
+<dl compact="compact">
+<dt> <code>&lt;unistr.h&gt;</code></dt>
+<dd><p>elementary string functions
+</p></dd>
+<dt> <code>&lt;uniconv.h&gt;</code></dt>
+<dd><p>conversion from/to legacy encodings
+</p></dd>
+<dt> <code>&lt;unistdio.h&gt;</code></dt>
+<dd><p>formatted output to strings
+</p></dd>
+<dt> <code>&lt;uniname.h&gt;</code></dt>
+<dd><p>character names
+</p></dd>
+<dt> <code>&lt;unictype.h&gt;</code></dt>
+<dd><p>character classification and properties
+</p></dd>
+<dt> <code>&lt;uniwidth.h&gt;</code></dt>
+<dd><p>string width when using nonproportional fonts
+</p></dd>
+<dt> <code>&lt;uniwbrk.h&gt;</code></dt>
+<dd><p>word breaks
+</p></dd>
+<dt> <code>&lt;unilbrk.h&gt;</code></dt>
+<dd><p>line breaking algorithm
+</p></dd>
+<dt> <code>&lt;uninorm.h&gt;</code></dt>
+<dd><p>normalization (composition and decomposition)
+</p></dd>
+<dt> <code>&lt;unicase.h&gt;</code></dt>
+<dd><p>case folding
+</p></dd>
+<dt> <code>&lt;uniregex.h&gt;</code></dt>
+<dd><p>regular expressions (not yet implemented)
+</p></dd>
+</dl>
+
+<a name="IDX1"></a>
+<a name="IDX2"></a>
+<p>libunistring is for you if your application involves non-trivial text
+processing, such as upper/lower case conversions, line breaking, operations
+on words, or more advanced analysis of text. Text provided by the user can,
+in general, contain characters of all kinds of scripts. The text processing
+functions provided by this library handle all scripts and all languages.
+</p>
+<p>libunistring is for you if your application already uses the ISO C / POSIX
+<code>&lt;ctype.h&gt;</code>, <code>&lt;wctype.h&gt;</code> functions and the text it operates on is
+provided by the user and can be in any language.
+</p>
+<p>libunistring is also for you if your application uses Unicode strings as
+internal in-memory representation.
+</p>
+
+<hr size="6">
+<a name="Unicode"></a>
+<a name="SEC2"></a>
+<h2 class="section"> <a href="libunistring.html#TOC2">1.1 Unicode</a> </h2>
+
+<p>Unicode is a standardized repertoire of characters that contains characters
+from all scripts of the world, from Latin letters to Chinese ideographs
+and Babylonian cuneiform glyphs. It also specifies how these characters
+are to be rendered on a screen or on paper, and how common text processing
+(word selection, line breaking, uppercasing of page titles etc.) is supposed
+to behave on Unicode text.
+</p>
+<p>Unicode also specifies three ways of storing sequences of Unicode
+characters in a computer whose basic unit of data is an 8-bit byte:
+<a name="IDX3"></a>
+<a name="IDX4"></a>
+<a name="IDX5"></a>
+<a name="IDX6"></a>
+</p><dl compact="compact">
+<dt> UTF-8</dt>
+<dd><p>Every character is represented as 1 to 4 bytes.
+</p></dd>
+<dt> UTF-16</dt>
+<dd><p>Every character is represented as 1 to 2 units of 16 bits.
+</p></dd>
+<dt> UTF-32, a.k.a. UCS-4</dt>
+<dd><p>Every character is represented as 1 unit of 32 bits.
+</p></dd>
+</dl>
+
+<p>For encoding Unicode text in a file, UTF-8 is usually used. For encoding
+Unicode strings in memory for a program, either of the three encoding forms
+can be reasonably used.
+</p>
+<p>Unicode is widely used on the web. Prior to the use of Unicode, web pages
+were in many different encodings (ISO-8859-1 for English, French, Spanish,
+ISO-8859-2 for Polish, ISO-8859-7 for Greek, KOI8-R for Russian, GB2312 or
+BIG5 for Chinese, ISO-2022-JP-2 or EUC-JP or Shift_JIS for Japanese, and many
+many others). It was next to impossible to create a document that contained
+Chinese and Polish text in the same document. Due to the many encodings for
+Japanese, even the processing of pure Japanese text was error prone.
+</p>
+<p>References:
+</p><ul>
+<li>
+The Unicode standard: <a href="http://www.unicode.org/">http://www.unicode.org/</a>
+</li><li>
+Definition of UTF-8: <a href="http://www.rfc-editor.org/rfc/rfc3629.txt">http://www.rfc-editor.org/rfc/rfc3629.txt</a>
+</li><li>
+Definition of UTF-16: <a href="http://www.rfc-editor.org/rfc/rfc2781.txt">http://www.rfc-editor.org/rfc/rfc2781.txt</a>
+</li><li>
+Markus Kuhn's UTF-8 and Unicode FAQ:
+<a href="http://www.cl.cam.ac.uk/~mgk25/unicode.html">http://www.cl.cam.ac.uk/~mgk25/unicode.html</a>
+</li></ul>
+
+<hr size="6">
+<a name="Unicode-and-i18n"></a>
+<a name="SEC3"></a>
+<h2 class="section"> <a href="libunistring.html#TOC3">1.2 Unicode and Internationalization</a> </h2>
+
+<p>Internationalization is the process of changing the source code of a program
+so that it can meet the expectations of users in any culture, if culture
+specific data (translations, images etc.) are provided.
+</p>
+<p>Use of Unicode is not strictly required for internationalization, but it
+makes internationalization much easier, because operations that need to
+look at specific characters (like hyphenation, spell checking, or the
+automatic conversion of double-quotes to opening and closing double-quote
+characters) don't need to consider multiple possible encodings of the text.
+</p>
+<p>Use of Unicode also enables multilingualization: the ability of having text
+in multiple languages present in the same document or even in the same line
+of text.
+</p>
+<p>But use of Unicode is not everything. Internationalization usually consists
+of three features:
+</p><ul>
+<li>
+Use of Unicode where needed for text processing. This is what this library
+is for.
+</li><li>
+Use of message catalogs for messages shown to the user, This is what
+GNU gettext is about.
+</li><li>
+Use of locale specific conventions for date and time formats, for numeric
+formatting, or for sorting of text. This can be done adequately with the
+POSIX APIs and the implementation of locales in the GNU C library.
+</li></ul>
+
+<hr size="6">
+<a name="Locale-encodings"></a>
+<a name="SEC4"></a>
+<h2 class="section"> <a href="libunistring.html#TOC4">1.3 Locale encodings</a> </h2>
+
+<p>A locale is a set of cultural conventions. According to POSIX, for a program,
+at any moment, there is one locale being designated as the &ldquo;current locale&rdquo;.
+(Actually, POSIX supports also one locale per thread, but this feature is not
+yet universally implemented and not widely used.)
+<a name="IDX7"></a>
+The locale is partitioned into several aspects, called the &ldquo;categories&rdquo;
+of the locale. The main various aspects are:
+</p><ul class="toc">
+<li>
+The character encoding and the character properties. This is the
+<code>LC_CTYPE</code> category.
+</li><li>
+The sorting rules for text. This is the <code>LC_COLLATE</code> category.
+</li><li>
+The language specific translations of messages. This is the
+<code>LC_MESSAGES</code> category.
+</li><li>
+The formatting rules for numbers, such as the decimal separator. This is
+the <code>LC_NUMERIC</code> category.
+</li><li>
+The formatting rules for amounts of money. This is the <code>LC_MONETARY</code>
+category.
+</li><li>
+The formatting of date and time. This is the <code>LC_TIME</code> category.
+</li></ul>
+
+<a name="IDX8"></a>
+<p>In particular, the <code>LC_CTYPE</code> category of the current locale determines
+the character encoding. This is the encoding of &lsquo;<samp>char *</samp>&rsquo; strings.
+We also call it the &ldquo;locale encoding&rdquo;. GNU libunistring has a function,
+<code>locale_charset</code>, that returns a standardized (platform independent)
+name for this encoding.
+</p>
+<p>All locale encodings used on glibc systems are essentially ASCII compatible:
+Most graphic ASCII characters have the same representation, as a single byte,
+in that encoding as in ASCII.
+</p>
+<p>Among the possible locale encodings are UTF-8 and GB18030. Both allow
+to represent any Unicode character as a sequence of bytes. UTF-8 is used in
+most of the world, whereas GB18030 is used in the People's Republic of China,
+because it is backward compatible with the GB2312 encoding that was used in
+this country earlier.
+</p>
+<p>The legacy locale encodings, ISO-8859-15 (which supplanted ISO-8859-1 in
+most of Europe), ISO-8859-2, KOI8-R, EUC-JP, etc., are still in use in
+many places, though.
+</p>
+<p>UTF-16 and UTF-32 are not used as locale encodings, because they are not
+ASCII compatible.
+</p>
+<hr size="6">
+<a name="In_002dmemory-representation"></a>
+<a name="SEC5"></a>
+<h2 class="section"> <a href="libunistring.html#TOC5">1.4 Choice of in-memory representation of strings</a> </h2>
+
+<p>There are three ways of representing strings in memory of a running
+program.
+</p><ul class="toc">
+<li>
+As &lsquo;<samp>char *</samp>&rsquo; strings. Such strings are represented in locale encoding.
+This approach is employed when not much text processing is done by the
+program. When some Unicode aware processing is to be done, a string is
+converted to Unicode on the fly and back to locale encoding afterwards.
+</li><li>
+As UTF-8 or UTF-16 or UTF-32 strings. This implies that conversion from
+locale encoding to Unicode is performed on input, and in the opposite
+direction on output. This approach is employed when the program does
+a significant amount of text processing, or when the program has multiple
+threads operating on the same data but in different locales.
+</li><li>
+As &lsquo;<samp>wchar_t *</samp>&rsquo;, a.k.a. &ldquo;wide strings&rdquo;. This approach is misguided,
+see <a href="#SEC7">The <code>wchar_t</code> mess</a>.
+</li></ul>
+
+<hr size="6">
+<a name="char-_002a-strings"></a>
+<a name="SEC6"></a>
+<h2 class="section"> <a href="libunistring.html#TOC6">1.5 &lsquo;<samp>char *</samp>&rsquo; strings</a> </h2>
+
+<p>The classical C strings, with its C library support standardized by
+ISO C and POSIX, can be used in internationalized programs with some
+precautions. The problem with this API is that many of the C library
+functions for strings don't work correctly on strings in locale
+encodings, leading to bugs that only people in some cultures of the
+world will experience.
+</p>
+<a name="IDX9"></a>
+<p>The first problem with the C library API is the support of multibyte
+locales. According to the locale encoding, in general, every character
+is represented by one or more bytes (up to 4 bytes in practice &mdash; but
+use <code>MB_LEN_MAX</code> instead of the number 4 in the code).
+When every character is represented by only 1 byte, we speak of an
+&ldquo;unibyte locale&rdquo;, otherwise of a &ldquo;multibyte locale&rdquo;. It is important
+to realize that the majority of Unix installations nowadays use UTF-8
+or GB18030 as locale encoding; therefore, the majority of users are
+using multibyte locales.
+</p>
+<a name="IDX10"></a>
+<p>The important fact to remember is:
+</p><table class="cartouche" border="1"><tr><td>
+<p><em>A &lsquo;<samp>char</samp>&rsquo; is a byte, not a character.</em>
+</p></td></tr></table>
+
+<p>As a consequence:
+</p><ul class="toc">
+<li>
+The <code>&lt;ctype.h&gt;</code> API is useless in this context; it does not work in
+multibyte locales.
+</li><li>
+The <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strlen.html"><code>strlen</code></a> function does not return the number of characters
+in a string. Nor does it return the number of screen columns occupied
+by a string after it is output. It merely returns the number of
+<em>bytes</em> occupied by a string.
+</li><li>
+Truncating a string, for example, with <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strncpy.html"><code>strncpy</code></a>, can have the
+effect of truncating it in the middle of a multibyte character. Such
+a string will, when output, have a garbled character at its end, often
+represented by a hollow box.
+</li><li>
+<a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strchr.html"><code>strchr</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strrchr.html"><code>strrchr</code></a> do not work with multibyte strings
+if the locale encoding is GB18030 and the character to be searched is
+a digit.
+</li><li>
+<a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strstr.html"><code>strstr</code></a> does not work with multibyte strings if the locale encoding
+is different from UTF-8.
+</li><li>
+<a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strcspn.html"><code>strcspn</code></a>, <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strpbrk.html"><code>strpbrk</code></a>, <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strspn.html"><code>strspn</code></a> cannot work
+correctly in multibyte locales: they assume the second argument is a list of
+single-byte characters. Even in this simple case, they do not work with
+multibyte strings if the locale encoding is GB18030 and one of the
+characters to be searched is a digit.
+</li><li>
+<a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strsep.html"><code>strsep</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strtok_r.html"><code>strtok_r</code></a> do not work with multibyte strings
+unless all of the delimiter characters are ASCII characters &lt; 0x30.
+</li><li>
+The <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strcasecmp.html"><code>strcasecmp</code></a>, <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strncasecmp.html"><code>strncasecmp</code></a>, and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strcasestr.html"><code>strcasestr</code></a>
+functions do not work with multibyte strings.
+</li></ul>
+
+<p>The workarounds can be found in GNU gnulib
+<a href="http://www.gnu.org/software/gnulib/">http://www.gnu.org/software/gnulib/</a>.
+</p><ul class="toc">
+<li>
+gnulib has modules &lsquo;<samp>mbchar</samp>&rsquo;, &lsquo;<samp>mbiter</samp>&rsquo;, &lsquo;<samp>mbuiter</samp>&rsquo; that
+represent multibyte characters and allow to iterate across a multibyte
+string with the same ease as through a unibyte string.
+</li><li>
+gnulib has functions <code>mbslen</code> and <code>mbswidth</code> that can be
+used instead of <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strlen.html"><code>strlen</code></a> when the number of characters or the
+number of screen columns of a string is requested.
+</li><li>
+gnulib has functions <code>mbschr</code> and <code>mbsrrchr</code> that are
+like <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strchr.html"><code>strchr</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strrchr.html"><code>strrchr</code></a>, but work in multibyte locales.
+</li><li>
+gnulib has a function <code>mbsstr</code>, like <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strstr.html"><code>strstr</code></a>, but works
+in multibyte locales.
+</li><li>
+gnulib has functions <code>mbscspn</code>, <code>mbspbrk</code>, <code>mbsspn</code>
+that are like <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strcspn.html"><code>strcspn</code></a>, <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strpbrk.html"><code>strpbrk</code></a>, <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strspn.html"><code>strspn</code></a>, but
+work in multibyte locales.
+</li><li>
+gnulib has functions <code>mbssep</code> and <code>mbstok_r</code> that are
+like <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strsep.html"><code>strsep</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strtok_r.html"><code>strtok_r</code></a> but work in multibyte locales.
+</li><li>
+gnulib has functions <code>mbscasecmp</code>, <code>mbsncasecmp</code>,
+<code>mbspcasecmp</code>, and <code>mbscasestr</code> that are like <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strcasecmp.html"><code>strcasecmp</code></a>,
+<a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strncasecmp.html"><code>strncasecmp</code></a>, and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strcasestr.html"><code>strcasestr</code></a>, but
+work in multibyte locales. Still, the function <code>ulc_casecmp</code> is
+preferable to these functions; see below.
+</li></ul>
+
+<p>The second problem with the C library API is that it has some assumptions built-in that are not valid in some languages:
+</p><ul class="toc">
+<li>
+It assumes that there are only two forms of every character: uppercase
+and lowercase. This is not true for Croatian, where the character
+<small>LETTER DZ WITH CARON</small> comes in three forms:
+<small>LATIN CAPITAL LETTER DZ WITH CARON</small> (DZ),
+<small>LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON</small> (Dz),
+<small>LATIN SMALL LETTER DZ WITH CARON</small> (dz).
+</li><li>
+It assumes that uppercasing of 1 character leads to 1 character. This
+is not true for German, where the <small>LATIN SMALL LETTER SHARP S</small>, when
+uppercased, becomes &lsquo;<samp>SS</samp>&rsquo;.
+</li><li>
+It assumes that there is 1:1 mapping between uppercase and lowercase forms.
+This is not true for the Greek sigma: <small>GREEK CAPITAL LETTER SIGMA</small> is
+the uppercase of both <small>GREEK SMALL LETTER SIGMA</small> and
+<small>GREEK SMALL LETTER FINAL SIGMA</small>.
+</li><li>
+It assumes that the upper/lowercase mappings are position independent.
+This is not true for the Greek sigma and the Lithuanian i.
+</li></ul>
+
+<p>The correct way to deal with this problem is
+</p><ol>
+<li>
+to provide functions for titlecasing, as well as for upper- and
+lowercasing,
+</li><li>
+to view case transformations as functions that operates on strings,
+rather than on characters.
+</li></ol>
+
+<p>This is implemented in this library, through the functions declared in <code>&lt;unicase.h&gt;</code>, see <a href="libunistring_13.html#SEC48">Case mappings <code>&lt;unicase.h&gt;</code></a>.
+</p>
+<hr size="6">
+<a name="The-wchar_005ft-mess"></a>
+<a name="SEC7"></a>
+<h2 class="section"> <a href="libunistring.html#TOC7">1.6 The <code>wchar_t</code> mess</a> </h2>
+
+<p>The ISO C and POSIX standard creators made an attempt to fix the first
+problem mentioned in the previous section. They introduced
+</p><ul class="toc">
+<li>
+a type &lsquo;<samp>wchar_t</samp>&rsquo;, designed to encapsulate an entire character,
+</li><li>
+a &ldquo;wide string&rdquo; type &lsquo;<samp>wchar_t *</samp>&rsquo;, and
+</li><li>
+functions declared in <code>&lt;wctype.h&gt;</code> that were meant to supplant the
+ones in <code>&lt;ctype.h&gt;</code>.
+</li></ul>
+
+<p>Unfortunately, this API and its implementation has numerous problems:
+</p>
+<ul class="toc">
+<li>
+On AIX and Windows platforms, <code>wchar_t</code> is a 16-bit type. This
+means that it can never accommodate an entire Unicode character. Either
+the <code>wchar_t *</code> strings are limited to characters in UCS-2 (the
+&ldquo;Basic Multilingual Plane&rdquo; of Unicode), or &mdash; if <code>wchar_t *</code>
+strings are encoded in UTF-16 &mdash; a <code>wchar_t</code> represents only half
+of a character in the worst case, making the <code>&lt;wctype.h&gt;</code> functions
+pointless.
+
+</li><li>
+On Solaris and FreeBSD, the <code>wchar_t</code> encoding is locale dependent
+and undocumented. This means, if you want to know any property of a
+<code>wchar_t</code> character, other than the properties defined by
+<code>&lt;wctype.h&gt;</code> &mdash; such as whether it's a dash, currency symbol,
+paragraph separator, or similar &mdash;, you have to convert it to
+<code>char *</code> encoding first, by use of the function <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wctomb.html"><code>wctomb</code></a>.
+
+</li><li>
+When you read a stream of wide characters, through the functions
+<a href="http://www.opengroup.org/onlinepubs/9699919799/functions/fgetwc.html"><code>fgetwc</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/fgetws.html"><code>fgetws</code></a>, and when the input stream/file is
+not in the expected encoding, you have no way to determine the invalid
+byte sequence and do some corrective action. If you use these
+functions, your program becomes &ldquo;garbage in - more garbage out&rdquo; or
+&ldquo;garbage in - abort&rdquo;.
+</li></ul>
+
+<p>As a consequence, it is better to use multibyte strings, as explained in
+the previous section. Such multibyte strings can bypass limitations
+of the <code>wchar_t</code> type, if you use functions defined in gnulib and
+libunistring for text processing. They can also faithfully transport
+malformed characters that were present in the input, without requiring
+the program to produce garbage or abort.
+</p>
+<hr size="6">
+<a name="Unicode-strings"></a>
+<a name="SEC8"></a>
+<h2 class="section"> <a href="libunistring.html#TOC8">1.7 Unicode strings</a> </h2>
+
+<p>libunistring supports Unicode strings in three representations:
+<a name="IDX11"></a>
+<a name="IDX12"></a>
+<a name="IDX13"></a>
+</p><ul class="toc">
+<li>
+UTF-8 strings, through the type &lsquo;<samp>uint8_t *</samp>&rsquo;. The units are bytes
+(<code>uint8_t</code>).
+</li><li>
+UTF-16 strings, through the type &lsquo;<samp>uint16_t *</samp>&rsquo;, The units are 16-bit
+memory words (<code>uint16_t</code>).
+</li><li>
+UTF-32 strings, through the type &lsquo;<samp>uint32_t *</samp>&rsquo;. The units are 32-bit
+memory words (<code>uint32_t</code>).
+</li></ul>
+
+<p>As with C strings, there are two variants:
+</p><ul class="toc">
+<li>
+Unicode strings with a terminating NUL character are represented as
+a pointer to the first unit of the string. There is a unit containing
+a 0 value at the end. It is considered part of the string for all
+memory allocation purposes, but is not considered part of the string
+for all other logical purposes.
+</li><li>
+Unicode strings where embedded NUL characters are allowed. These
+are represented by a pointer to the first unit and the number of units
+(not bytes!) of the string. In this setting, there is no trailing
+zero-valued unit used as &ldquo;end marker&rdquo;.
+</li></ul>
+
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC1" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_2.html#SEC9" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_10.html b/doc/libunistring_10.html
new file mode 100644
index 00000000..bf22ca1b
--- /dev/null
+++ b/doc/libunistring_10.html
@@ -0,0 +1,192 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: 10. Word breaks in strings &lt;uniwbrk.h&gt;</title>
+
+<meta name="description" content="GNU libunistring: 10. Word breaks in strings &lt;uniwbrk.h&gt;">
+<meta name="keywords" content="GNU libunistring: 10. Word breaks in strings &lt;uniwbrk.h&gt;">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_9.html#SEC37" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_11.html#SEC41" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="uniwbrk_002eh"></a>
+<a name="SEC38"></a>
+<h1 class="chapter"> <a href="libunistring.html#TOC38">10. Word breaks in strings <code>&lt;uniwbrk.h&gt;</code></a> </h1>
+
+<p>This include file declares functions for determining where in a string
+&ldquo;words&rdquo; start and end. Here &ldquo;words&rdquo; are not necessarily the same as
+entities that can be looked up in dictionaries, but rather groups of
+consecutive characters that should not be split by text processing
+operations.
+</p>
+
+<hr size="6">
+<a name="Word-breaks-in-a-string"></a>
+<a name="SEC39"></a>
+<h2 class="section"> <a href="libunistring.html#TOC39">10.1 Word breaks in a string</a> </h2>
+
+<p>The following functions determine the word breaks in a string.
+</p>
+<dl>
+<dt><u>Function:</u> void <b>u8_wordbreaks</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, char *<var>p</var>)</i>
+<a name="IDX615"></a>
+</dt>
+<dt><u>Function:</u> void <b>u16_wordbreaks</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, char *<var>p</var>)</i>
+<a name="IDX616"></a>
+</dt>
+<dt><u>Function:</u> void <b>u32_wordbreaks</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, char *<var>p</var>)</i>
+<a name="IDX617"></a>
+</dt>
+<dt><u>Function:</u> void <b>ulc_wordbreaks</b><i> (const char *<var>s</var>, size_t <var>n</var>, char *<var>p</var>)</i>
+<a name="IDX618"></a>
+</dt>
+<dd><p>Determines the word break points in <var>s</var>, an array of <var>n</var> units, and
+stores the result at <code><var>p</var>[0..<var>n</var>-1]</code>.
+</p><dl compact="compact">
+<dt> <code><var>p</var>[i] = 1</code></dt>
+<dd><p>means that there is a word boundary between <code><var>s</var>[i-1]</code> and
+<code><var>s</var>[i]</code>.
+</p></dd>
+<dt> <code><var>p</var>[i] = 0</code></dt>
+<dd><p>means that <code><var>s</var>[i-1]</code> and <code><var>s</var>[i]</code> must not be separated.
+</p></dd>
+</dl>
+<p><code><var>p</var>[0]</code> is always set to 0. If an application wants to consider a
+word break to be present at the beginning of the string (before
+<code><var>s</var>[0]</code>) or at the end of the string (after
+<code><var>s</var>[0..<var>n</var>-1]</code>), it has to treat these cases explicitly.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Word-break-property"></a>
+<a name="SEC40"></a>
+<h2 class="section"> <a href="libunistring.html#TOC40">10.2 Word break property</a> </h2>
+
+<p>This is a more low-level API. The word break property is a property defined
+in Unicode Standard Annex #29, section &ldquo;Word Boundaries&rdquo;, see
+<a href="http://www.unicode.org/reports/tr29/#Word_Boundaries">http://www.unicode.org/reports/tr29/#Word_Boundaries</a>. It is
+used for determining the word breaks in a string.
+</p>
+<p>The following are the possible values of the word break property. More values
+may be added in the future.
+</p>
+<dl>
+<dt><u>Constant:</u> int <b>WBP_OTHER</b>
+<a name="IDX619"></a>
+</dt>
+<dt><u>Constant:</u> int <b>WBP_CR</b>
+<a name="IDX620"></a>
+</dt>
+<dt><u>Constant:</u> int <b>WBP_LF</b>
+<a name="IDX621"></a>
+</dt>
+<dt><u>Constant:</u> int <b>WBP_NEWLINE</b>
+<a name="IDX622"></a>
+</dt>
+<dt><u>Constant:</u> int <b>WBP_EXTEND</b>
+<a name="IDX623"></a>
+</dt>
+<dt><u>Constant:</u> int <b>WBP_FORMAT</b>
+<a name="IDX624"></a>
+</dt>
+<dt><u>Constant:</u> int <b>WBP_KATAKANA</b>
+<a name="IDX625"></a>
+</dt>
+<dt><u>Constant:</u> int <b>WBP_ALETTER</b>
+<a name="IDX626"></a>
+</dt>
+<dt><u>Constant:</u> int <b>WBP_MIDNUMLET</b>
+<a name="IDX627"></a>
+</dt>
+<dt><u>Constant:</u> int <b>WBP_MIDLETTER</b>
+<a name="IDX628"></a>
+</dt>
+<dt><u>Constant:</u> int <b>WBP_MIDNUM</b>
+<a name="IDX629"></a>
+</dt>
+<dt><u>Constant:</u> int <b>WBP_NUMERIC</b>
+<a name="IDX630"></a>
+</dt>
+<dt><u>Constant:</u> int <b>WBP_EXTENDNUMLET</b>
+<a name="IDX631"></a>
+</dt>
+</dl>
+
+<p>The following function looks up the word break property of a character.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>uc_wordbreak_property</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX632"></a>
+</dt>
+<dd><p>Returns the Word_Break property of a Unicode character.
+</p></dd></dl>
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC38" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_11.html#SEC41" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_11.html b/doc/libunistring_11.html
new file mode 100644
index 00000000..b0016788
--- /dev/null
+++ b/doc/libunistring_11.html
@@ -0,0 +1,200 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: 11. Line breaking &lt;unilbrk.h&gt;</title>
+
+<meta name="description" content="GNU libunistring: 11. Line breaking &lt;unilbrk.h&gt;">
+<meta name="keywords" content="GNU libunistring: 11. Line breaking &lt;unilbrk.h&gt;">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_10.html#SEC38" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_12.html#SEC42" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="unilbrk_002eh"></a>
+<a name="SEC41"></a>
+<h1 class="chapter"> <a href="libunistring.html#TOC41">11. Line breaking <code>&lt;unilbrk.h&gt;</code></a> </h1>
+
+<p>This include file declares functions for determining where in a string
+line breaks could or should be introduced, in order to make the displayed
+string fit into a column of given width.
+</p>
+<p>These functions are locale dependent. The <var>encoding</var> argument identifies
+the encoding (e.g. <code>&quot;ISO-8859-2&quot;</code> for Polish).
+</p>
+<p>The following enumerated values indicate whether, at a given position, a line
+break is possible or not. Given an string <var>s</var> as an array
+<code><var>s</var>[0..<var>n</var>-1]</code> and a position <var>i</var>, the values have the
+following meanings:
+</p>
+<dl>
+<dt><u>Constant:</u> int <b>UC_BREAK_MANDATORY</b>
+<a name="IDX633"></a>
+</dt>
+<dd><p>This value indicates that <code><var>s</var>[<var>i</var>]</code> is a line break character.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BREAK_POSSIBLE</b>
+<a name="IDX634"></a>
+</dt>
+<dd><p>This value indicates that a line break may be inserted between
+<code><var>s</var>[<var>i</var>-1]</code> and <code><var>s</var>[<var>i</var>]</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BREAK_HYPHENATION</b>
+<a name="IDX635"></a>
+</dt>
+<dd><p>This value indicates that a hyphen and a line break may be inserted between
+<code><var>s</var>[<var>i</var>-1]</code> and <code><var>s</var>[<var>i</var>]</code>. But beware of language
+dependent hyphenation rules.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BREAK_PROHIBITED</b>
+<a name="IDX636"></a>
+</dt>
+<dd><p>This value indicates that <code><var>s</var>[<var>i</var>-1]</code> and <code><var>s</var>[<var>i</var>]</code>
+must not be separated.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BREAK_UNDEFINED</b>
+<a name="IDX637"></a>
+</dt>
+<dd><p>This value is not used as a return value; rather, in the overriding argument of
+the <code>u*_width_linebreaks</code> functions, it indicates the absence of an
+override.
+</p></dd></dl>
+
+<p>The following functions determine the positions at which line breaks are
+possible.
+</p>
+<dl>
+<dt><u>Function:</u> void <b>u8_possible_linebreaks</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, const char *<var>encoding</var>, char *<var>p</var>)</i>
+<a name="IDX638"></a>
+</dt>
+<dt><u>Function:</u> void <b>u16_possible_linebreaks</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, const char *<var>encoding</var>, char *<var>p</var>)</i>
+<a name="IDX639"></a>
+</dt>
+<dt><u>Function:</u> void <b>u32_possible_linebreaks</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, const char *<var>encoding</var>, char *<var>p</var>)</i>
+<a name="IDX640"></a>
+</dt>
+<dt><u>Function:</u> void <b>ulc_possible_linebreaks</b><i> (const char *<var>s</var>, size_t <var>n</var>, const char *<var>encoding</var>, char *<var>p</var>)</i>
+<a name="IDX641"></a>
+</dt>
+<dd><p>Determines the line break points in <var>s</var>, and stores the result at
+<code><var>p</var>[0..<var>n</var>-1]</code>. Every <code><var>p</var>[<var>i</var>]</code> is assigned one of
+the values <code>UC_BREAK_MANDATORY</code>, <code>UC_BREAK_POSSIBLE</code>,
+<code>UC_BREAK_HYPHENATION</code>, <code>UC_BREAK_PROHIBITED</code>.
+</p></dd></dl>
+
+<p>The following functions determine where line breaks should be inserted so that
+each line fits in a given width, when output to a device that uses
+non-proportional fonts.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>u8_width_linebreaks</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, int <var>width</var>, int <var>start_column</var>, int <var>at_end_columns</var>, const char *<var>override</var>, const char *<var>encoding</var>, char *<var>p</var>)</i>
+<a name="IDX642"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_width_linebreaks</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, int <var>width</var>, int <var>start_column</var>, int <var>at_end_columns</var>, const char *<var>override</var>, const char *<var>encoding</var>, char *<var>p</var>)</i>
+<a name="IDX643"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_width_linebreaks</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, int <var>width</var>, int <var>start_column</var>, int <var>at_end_columns</var>, const char *<var>override</var>, const char *<var>encoding</var>, char *<var>p</var>)</i>
+<a name="IDX644"></a>
+</dt>
+<dt><u>Function:</u> int <b>ulc_width_linebreaks</b><i> (const char *<var>s</var>, size_t <var>n</var>, int <var>width</var>, int <var>start_column</var>, int <var>at_end_columns</var>, const char *<var>override</var>, const char *<var>encoding</var>, char *<var>p</var>)</i>
+<a name="IDX645"></a>
+</dt>
+<dd><p>Chooses the best line breaks, assuming that every character occupies a width
+given by the <code>uc_width</code> function (see <a href="libunistring_9.html#SEC37">Display width <code>&lt;uniwidth.h&gt;</code></a>).
+</p>
+<p>The string is <code><var>s</var>[0..<var>n</var>-1]</code>.
+</p>
+<p>The maximum number of columns per line is given as <var>width</var>.
+The starting column of the string is given as <var>start_column</var>.
+If the algorithm shall keep room after the last piece, this amount of room can
+be given as <var>at_end_columns</var>.
+</p>
+<p><var>override</var> is an optional override; if
+<code><var>override</var>[<var>i</var>] != UC_BREAK_UNDEFINED</code>,
+<code><var>override</var>[<var>i</var>]</code> takes precedence over <code><var>p</var>[<var>i</var>]</code>
+as returned by the <code>u*_possible_linebreaks</code> function.
+</p>
+<p>The given <var>encoding</var> is used for disambiguating widths in <code>uc_width</code>.
+</p>
+<p>Returns the column after the end of the string, and stores the result at
+<code><var>p</var>[0..<var>n</var>-1]</code>. Every <code><var>p</var>[<var>i</var>]</code> is assigned one of
+the values <code>UC_BREAK_MANDATORY</code>, <code>UC_BREAK_POSSIBLE</code>,
+<code>UC_BREAK_HYPHENATION</code>, <code>UC_BREAK_PROHIBITED</code>. Here the value
+<code>UC_BREAK_POSSIBLE</code> indicates that a line break <em>should</em> be inserted.
+</p></dd></dl>
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_10.html#SEC38" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_12.html#SEC42" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_12.html b/doc/libunistring_12.html
new file mode 100644
index 00000000..0bf1e933
--- /dev/null
+++ b/doc/libunistring_12.html
@@ -0,0 +1,507 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: 12. Normalization forms (composition and decomposition) &lt;uninorm.h&gt;</title>
+
+<meta name="description" content="GNU libunistring: 12. Normalization forms (composition and decomposition) &lt;uninorm.h&gt;">
+<meta name="keywords" content="GNU libunistring: 12. Normalization forms (composition and decomposition) &lt;uninorm.h&gt;">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_11.html#SEC41" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_13.html#SEC48" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="uninorm_002eh"></a>
+<a name="SEC42"></a>
+<h1 class="chapter"> <a href="libunistring.html#TOC42">12. Normalization forms (composition and decomposition) <code>&lt;uninorm.h&gt;</code></a> </h1>
+
+<p>This include file defines functions for transforming Unicode strings to one
+of the four normal forms, known as NFC, NFD, NKFC, NFKD. These
+transformations involve decomposition and &mdash; for NFC and NFKC &mdash; composition
+of Unicode characters.
+</p>
+
+<hr size="6">
+<a name="Decomposition-of-characters"></a>
+<a name="SEC43"></a>
+<h2 class="section"> <a href="libunistring.html#TOC43">12.1 Decomposition of Unicode characters</a> </h2>
+
+<p>The following enumerated values are the possible types of decomposition of a
+Unicode character.
+</p>
+<dl>
+<dt><u>Constant:</u> int <b>UC_DECOMP_CANONICAL</b>
+<a name="IDX646"></a>
+</dt>
+<dd><p>Denotes canonical decomposition.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_DECOMP_FONT</b>
+<a name="IDX647"></a>
+</dt>
+<dd><p>UCD marker: <code>&lt;font&gt;</code>. Denotes a font variant (e.g. a blackletter form).
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_DECOMP_NOBREAK</b>
+<a name="IDX648"></a>
+</dt>
+<dd><p>UCD marker: <code>&lt;noBreak&gt;</code>.
+Denotes a no-break version of a space or hyphen.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_DECOMP_INITIAL</b>
+<a name="IDX649"></a>
+</dt>
+<dd><p>UCD marker: <code>&lt;initial&gt;</code>.
+Denotes an initial presentation form (Arabic).
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_DECOMP_MEDIAL</b>
+<a name="IDX650"></a>
+</dt>
+<dd><p>UCD marker: <code>&lt;medial&gt;</code>.
+Denotes a medial presentation form (Arabic).
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_DECOMP_FINAL</b>
+<a name="IDX651"></a>
+</dt>
+<dd><p>UCD marker: <code>&lt;final&gt;</code>.
+Denotes a final presentation form (Arabic).
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_DECOMP_ISOLATED</b>
+<a name="IDX652"></a>
+</dt>
+<dd><p>UCD marker: <code>&lt;isolated&gt;</code>.
+Denotes an isolated presentation form (Arabic).
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_DECOMP_CIRCLE</b>
+<a name="IDX653"></a>
+</dt>
+<dd><p>UCD marker: <code>&lt;circle&gt;</code>.
+Denotes an encircled form.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_DECOMP_SUPER</b>
+<a name="IDX654"></a>
+</dt>
+<dd><p>UCD marker: <code>&lt;super&gt;</code>.
+Denotes a superscript form.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_DECOMP_SUB</b>
+<a name="IDX655"></a>
+</dt>
+<dd><p>UCD marker: <code>&lt;sub&gt;</code>.
+Denotes a subscript form.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_DECOMP_VERTICAL</b>
+<a name="IDX656"></a>
+</dt>
+<dd><p>UCD marker: <code>&lt;vertical&gt;</code>.
+Denotes a vertical layout presentation form.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_DECOMP_WIDE</b>
+<a name="IDX657"></a>
+</dt>
+<dd><p>UCD marker: <code>&lt;wide&gt;</code>.
+Denotes a wide (or zenkaku) compatibility character.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_DECOMP_NARROW</b>
+<a name="IDX658"></a>
+</dt>
+<dd><p>UCD marker: <code>&lt;narrow&gt;</code>.
+Denotes a narrow (or hankaku) compatibility character.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_DECOMP_SMALL</b>
+<a name="IDX659"></a>
+</dt>
+<dd><p>UCD marker: <code>&lt;small&gt;</code>.
+Denotes a small variant form (CNS compatibility).
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_DECOMP_SQUARE</b>
+<a name="IDX660"></a>
+</dt>
+<dd><p>UCD marker: <code>&lt;square&gt;</code>.
+Denotes a CJK squared font variant.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_DECOMP_FRACTION</b>
+<a name="IDX661"></a>
+</dt>
+<dd><p>UCD marker: <code>&lt;fraction&gt;</code>.
+Denotes a vulgar fraction form.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_DECOMP_COMPAT</b>
+<a name="IDX662"></a>
+</dt>
+<dd><p>UCD marker: <code>&lt;compat&gt;</code>.
+Denotes an otherwise unspecified compatibility character.
+</p></dd></dl>
+
+<p>The following constant denotes the maximum size of decomposition of a single
+Unicode character.
+</p>
+<dl>
+<dt><u>Macro:</u> unsigned int <b>UC_DECOMPOSITION_MAX_LENGTH</b>
+<a name="IDX663"></a>
+</dt>
+<dd><p>This macro expands to a constant that is the required size of buffer passed to
+the <code>uc_decomposition</code> and <code>uc_canonical_decomposition</code> functions.
+</p></dd></dl>
+
+<p>The following functions decompose a Unicode character.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>uc_decomposition</b><i> (ucs4_t <var>uc</var>, int *<var>decomp_tag</var>, ucs4_t *<var>decomposition</var>)</i>
+<a name="IDX664"></a>
+</dt>
+<dd><p>Returns the character decomposition mapping of the Unicode character <var>uc</var>.
+<var>decomposition</var> must point to an array of at least
+<code>UC_DECOMPOSITION_MAX_LENGTH</code> <code>ucs_t</code> elements.
+</p>
+<p>When a decomposition exists, <code><var>decomposition</var>[0..<var>n</var>-1]</code> and
+<code>*<var>decomp_tag</var></code> are filled and <var>n</var> is returned. Otherwise -1 is
+returned.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> int <b>uc_canonical_decomposition</b><i> (ucs4_t <var>uc</var>, ucs4_t *<var>decomposition</var>)</i>
+<a name="IDX665"></a>
+</dt>
+<dd><p>Returns the canonical character decomposition mapping of the Unicode character
+<var>uc</var>. <var>decomposition</var> must point to an array of at least
+<code>UC_DECOMPOSITION_MAX_LENGTH</code> <code>ucs_t</code> elements.
+</p>
+<p>When a decomposition exists, <code><var>decomposition</var>[0..<var>n</var>-1]</code> is filled
+and <var>n</var> is returned. Otherwise -1 is returned.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Composition-of-characters"></a>
+<a name="SEC44"></a>
+<h2 class="section"> <a href="libunistring.html#TOC44">12.2 Composition of Unicode characters</a> </h2>
+
+<p>The following function composes a Unicode character from two Unicode
+characters.
+</p>
+<dl>
+<dt><u>Function:</u> ucs4_t <b>uc_composition</b><i> (ucs4_t <var>uc1</var>, ucs4_t <var>uc2</var>)</i>
+<a name="IDX666"></a>
+</dt>
+<dd><p>Attempts to combine the Unicode characters <var>uc1</var>, <var>uc2</var>.
+<var>uc1</var> is known to have canonical combining class 0.
+</p>
+<p>Returns the combination of <var>uc1</var> and <var>uc2</var>, if it exists.
+Returns 0 otherwise.
+</p>
+<p>Not all decompositions can be recombined using this function. See the Unicode
+file &lsquo;<tt>CompositionExclusions.txt</tt>&rsquo; for details.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Normalization-of-strings"></a>
+<a name="SEC45"></a>
+<h2 class="section"> <a href="libunistring.html#TOC45">12.3 Normalization of strings</a> </h2>
+
+<p>The Unicode standard defines four normalization forms for Unicode strings.
+The following type is used to denote a normalization form.
+</p>
+<dl>
+<dt><u>Type:</u> <b>uninorm_t</b>
+<a name="IDX667"></a>
+</dt>
+<dd><p>An object of type <code>uninorm_t</code> denotes a Unicode normalization form.
+This is a scalar type; its values can be compared with <code>==</code>.
+</p></dd></dl>
+
+<p>The following constants denote the four normalization forms.
+</p>
+<dl>
+<dt><u>Macro:</u> uninorm_t <b>UNINORM_NFD</b>
+<a name="IDX668"></a>
+</dt>
+<dd><p>Denotes Normalization form D: canonical decomposition.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uninorm_t <b>UNINORM_NFC</b>
+<a name="IDX669"></a>
+</dt>
+<dd><p>Normalization form C: canonical decomposition, then canonical composition.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uninorm_t <b>UNINORM_NFKD</b>
+<a name="IDX670"></a>
+</dt>
+<dd><p>Normalization form KD: compatibility decomposition.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uninorm_t <b>UNINORM_NFKC</b>
+<a name="IDX671"></a>
+</dt>
+<dd><p>Normalization form KC: compatibility decomposition, then canonical composition.
+</p></dd></dl>
+
+<p>The following functions operate on <code>uninorm_t</code> objects.
+</p>
+<dl>
+<dt><u>Function:</u> bool <b>uninorm_is_compat_decomposing</b><i> (uninorm_t <var>nf</var>)</i>
+<a name="IDX672"></a>
+</dt>
+<dd><p>Tests whether the normalization form <var>nf</var> does compatibility decomposition.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> bool <b>uninorm_is_composing</b><i> (uninorm_t <var>nf</var>)</i>
+<a name="IDX673"></a>
+</dt>
+<dd><p>Tests whether the normalization form <var>nf</var> includes canonical composition.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uninorm_t <b>uninorm_decomposing_form</b><i> (uninorm_t <var>nf</var>)</i>
+<a name="IDX674"></a>
+</dt>
+<dd><p>Returns the decomposing variant of the normalization form <var>nf</var>.
+This maps NFC,NFD → NFD and NFKC,NFKD → NFKD.
+</p></dd></dl>
+
+<p>The following functions apply a Unicode normalization form to a Unicode string.
+</p>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_normalize</b><i> (uninorm_t <var>nf</var>, const uint8_t *<var>s</var>, size_t <var>n</var>, uint8_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX675"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_normalize</b><i> (uninorm_t <var>nf</var>, const uint16_t *<var>s</var>, size_t <var>n</var>, uint16_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX676"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_normalize</b><i> (uninorm_t <var>nf</var>, const uint32_t *<var>s</var>, size_t <var>n</var>, uint32_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX677"></a>
+</dt>
+<dd><p>Returns the specified normalization form of a string.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Normalizing-comparisons"></a>
+<a name="SEC46"></a>
+<h2 class="section"> <a href="libunistring.html#TOC46">12.4 Normalizing comparisons</a> </h2>
+
+<p>The following functions compare Unicode string, ignoring differences in
+normalization.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>u8_normcmp</b><i> (const uint8_t *<var>s1</var>, size_t <var>n1</var>, const uint8_t *<var>s2</var>, size_t <var>n2</var>, uninorm_t <var>nf</var>, int *<var>resultp</var>)</i>
+<a name="IDX678"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_normcmp</b><i> (const uint16_t *<var>s1</var>, size_t <var>n1</var>, const uint16_t *<var>s2</var>, size_t <var>n2</var>, uninorm_t <var>nf</var>, int *<var>resultp</var>)</i>
+<a name="IDX679"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_normcmp</b><i> (const uint32_t *<var>s1</var>, size_t <var>n1</var>, const uint32_t *<var>s2</var>, size_t <var>n2</var>, uninorm_t <var>nf</var>, int *<var>resultp</var>)</i>
+<a name="IDX680"></a>
+</dt>
+<dd><p>Compares <var>s1</var> and <var>s2</var>, ignoring differences in normalization.
+</p>
+<p><var>nf</var> must be either <code>UNINORM_NFD</code> or <code>UNINORM_NFKD</code>.
+</p>
+<p>If successful, sets <code>*<var>resultp</var></code> to -1 if <var>s1</var> &lt; <var>s2</var>,
+0 if <var>s1</var> = <var>s2</var>, 1 if <var>s1</var> &gt; <var>s2</var>, and returns 0.
+Upon failure, returns -1 with <code>errno</code> set.
+</p></dd></dl>
+
+<a name="IDX681"></a>
+<a name="IDX682"></a>
+<dl>
+<dt><u>Function:</u> char * <b>u8_normxfrm</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, uninorm_t <var>nf</var>, char *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX683"></a>
+</dt>
+<dt><u>Function:</u> char * <b>u16_normxfrm</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, uninorm_t <var>nf</var>, char *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX684"></a>
+</dt>
+<dt><u>Function:</u> char * <b>u32_normxfrm</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, uninorm_t <var>nf</var>, char *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX685"></a>
+</dt>
+<dd><p>Converts the string <var>s</var> of length <var>n</var> to a NUL-terminated byte
+sequence, in such a way that comparing <code>u8_normxfrm (<var>s1</var>)</code> and
+<code>u8_normxfrm (<var>s2</var>)</code> with the <code>u8_cmp2</code> function is equivalent to
+comparing <var>s1</var> and <var>s2</var> with the <code>u8_normcoll</code> function.
+</p>
+<p><var>nf</var> must be either <code>UNINORM_NFC</code> or <code>UNINORM_NFKC</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> int <b>u8_normcoll</b><i> (const uint8_t *<var>s1</var>, size_t <var>n1</var>, const uint8_t *<var>s2</var>, size_t <var>n2</var>, uninorm_t <var>nf</var>, int *<var>resultp</var>)</i>
+<a name="IDX686"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_normcoll</b><i> (const uint16_t *<var>s1</var>, size_t <var>n1</var>, const uint16_t *<var>s2</var>, size_t <var>n2</var>, uninorm_t <var>nf</var>, int *<var>resultp</var>)</i>
+<a name="IDX687"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_normcoll</b><i> (const uint32_t *<var>s1</var>, size_t <var>n1</var>, const uint32_t *<var>s2</var>, size_t <var>n2</var>, uninorm_t <var>nf</var>, int *<var>resultp</var>)</i>
+<a name="IDX688"></a>
+</dt>
+<dd><p>Compares <var>s1</var> and <var>s2</var>, ignoring differences in normalization, using
+the collation rules of the current locale.
+</p>
+<p><var>nf</var> must be either <code>UNINORM_NFC</code> or <code>UNINORM_NFKC</code>.
+</p>
+<p>If successful, sets <code>*<var>resultp</var></code> to -1 if <var>s1</var> &lt; <var>s2</var>,
+0 if <var>s1</var> = <var>s2</var>, 1 if <var>s1</var> &gt; <var>s2</var>, and returns 0.
+Upon failure, returns -1 with <code>errno</code> set.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Normalization-of-streams"></a>
+<a name="SEC47"></a>
+<h2 class="section"> <a href="libunistring.html#TOC47">12.5 Normalization of streams of Unicode characters</a> </h2>
+
+<p>A &ldquo;stream of Unicode characters&rdquo; is essentially a function that accepts an
+<code>ucs4_t</code> argument repeatedly, optionally combined with a function that
+&ldquo;flushes&rdquo; the stream.
+</p>
+<dl>
+<dt><u>Type:</u> <b>struct uninorm_filter</b>
+<a name="IDX689"></a>
+</dt>
+<dd><p>This is the data type of a stream of Unicode characters that normalizes its
+input according to a given normalization form and passes the normalized
+character sequence to the encapsulated stream of Unicode characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> struct uninorm_filter * <b>uninorm_filter_create</b><i> (uninorm_t <var>nf</var>, int (*<var>stream_func</var>) (void *<var>stream_data</var>, ucs4_t <var>uc</var>), void *<var>stream_data</var>)</i>
+<a name="IDX690"></a>
+</dt>
+<dd><p>Creates and returns a normalization filter for Unicode characters.
+</p>
+<p>The pair (<var>stream_func</var>, <var>stream_data</var>) is the encapsulated stream.
+<code><var>stream_func</var> (<var>stream_data</var>, <var>uc</var>)</code> receives the Unicode
+character <var>uc</var> and returns 0 if successful, or -1 with <code>errno</code> set
+upon failure.
+</p>
+<p>Returns the new filter, or NULL with <code>errno</code> set upon failure.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> int <b>uninorm_filter_write</b><i> (struct uninorm_filter *<var>filter</var>, ucs4_t <var>uc</var>)</i>
+<a name="IDX691"></a>
+</dt>
+<dd><p>Stuffs a Unicode character into a normalizing filter.
+Returns 0 if successful, or -1 with <code>errno</code> set upon failure.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> int <b>uninorm_filter_flush</b><i> (struct uninorm_filter *<var>filter</var>)</i>
+<a name="IDX692"></a>
+</dt>
+<dd><p>Brings data buffered in the filter to its destination, the encapsulated stream.
+</p>
+<p>Returns 0 if successful, or -1 with <code>errno</code> set upon failure.
+</p>
+<p>Note! If after calling this function, additional characters are written
+into the filter, the resulting character sequence in the encapsulated stream
+will not necessarily be normalized.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> int <b>uninorm_filter_free</b><i> (struct uninorm_filter *<var>filter</var>)</i>
+<a name="IDX693"></a>
+</dt>
+<dd><p>Brings data buffered in the filter to its destination, the encapsulated stream,
+then closes and frees the filter.
+</p>
+<p>Returns 0 if successful, or -1 with <code>errno</code> set upon failure.
+</p></dd></dl>
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC42" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_13.html#SEC48" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_13.html b/doc/libunistring_13.html
new file mode 100644
index 00000000..1597ec11
--- /dev/null
+++ b/doc/libunistring_13.html
@@ -0,0 +1,611 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: 13. Case mappings &lt;unicase.h&gt;</title>
+
+<meta name="description" content="GNU libunistring: 13. Case mappings &lt;unicase.h&gt;">
+<meta name="keywords" content="GNU libunistring: 13. Case mappings &lt;unicase.h&gt;">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_12.html#SEC42" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_14.html#SEC54" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="unicase_002eh"></a>
+<a name="SEC48"></a>
+<h1 class="chapter"> <a href="libunistring.html#TOC48">13. Case mappings <code>&lt;unicase.h&gt;</code></a> </h1>
+
+<p>This include file defines functions for case mapping for Unicode strings and
+case insensitive comparison of Unicode strings and C strings.
+</p>
+<p>These string functions fix the problems that were mentioned in
+<a href="libunistring_1.html#SEC6">&lsquo;<samp>char *</samp>&rsquo; strings</a>, namely, they handle the Croatian
+<small>LETTER DZ WITH CARON</small>, the German <small>LATIN SMALL LETTER SHARP S</small>, the
+Greek sigma and the Lithuanian i correctly.
+</p>
+
+<hr size="6">
+<a name="Case-mappings-of-characters"></a>
+<a name="SEC49"></a>
+<h2 class="section"> <a href="libunistring.html#TOC49">13.1 Case mappings of characters</a> </h2>
+
+<p>The following functions implement case mappings on Unicode characters &mdash;
+for those cases only where the result of the mapping is a again a single
+Unicode character.
+</p>
+<p>These mappings are locale and context independent.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<p><strong>WARNING!</strong> These functions are not sufficient for languages such as
+German, Greek and Lithuanian. Better use the functions below that treat an
+entire string at once and are language aware.
+</p></td></tr></table>
+
+<dl>
+<dt><u>Function:</u> ucs4_t <b>uc_toupper</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX694"></a>
+</dt>
+<dd><p>Returns the uppercase mapping of the Unicode character <var>uc</var>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> ucs4_t <b>uc_tolower</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX695"></a>
+</dt>
+<dd><p>Returns the lowercase mapping of the Unicode character <var>uc</var>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> ucs4_t <b>uc_totitle</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX696"></a>
+</dt>
+<dd><p>Returns the titlecase mapping of the Unicode character <var>uc</var>.
+</p>
+<p>The titlecase mapping of a character is to be used when the character should
+look like upper case and the following characters are lower cased.
+</p>
+<p>For most characters, this is the same as the uppercase mapping. There are
+only few characters where the title case variant and the uuper case variant
+are different. These characters occur in the Latin writing of the Croatian,
+Bosnian, and Serbian languages.
+</p>
+<table>
+<thead><tr><th><p> Lower case </p></th><th><p> Title case </p></th><th><p> Upper case
+</p></th></tr></thead>
+<tr><td><p> LATIN SMALL LETTER LJ
+ </p></td><td><p> LATIN CAPITAL LETTER L WITH SMALL LETTER J
+ </p></td><td><p> LATIN CAPITAL LETTER LJ
+</p></td></tr>
+<tr><td><p> LATIN SMALL LETTER NJ
+ </p></td><td><p> LATIN CAPITAL LETTER N WITH SMALL LETTER J
+ </p></td><td><p> LATIN CAPITAL LETTER NJ
+</p></td></tr>
+<tr><td><p> LATIN SMALL LETTER DZ
+ </p></td><td><p> LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+ </p></td><td><p> LATIN CAPITAL LETTER DZ
+</p></td></tr>
+<tr><td><p> LATIN SMALL LETTER DZ WITH CARON
+ </p></td><td><p> LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+ </p></td><td><p> LATIN CAPITAL LETTER DZ WITH CARON
+</p></td></tr>
+</table>
+</dd></dl>
+
+<hr size="6">
+<a name="Case-mappings-of-strings"></a>
+<a name="SEC50"></a>
+<h2 class="section"> <a href="libunistring.html#TOC50">13.2 Case mappings of strings</a> </h2>
+
+<p>Case mapping should always be performed on entire strings, not on individual
+characters. The functions in this sections do so.
+</p>
+<p>These functions allow to apply a normalization after the case mapping. The
+reason is that if you want to treat &lsquo;<samp>&auml;</samp>&rsquo; and &lsquo;<samp>&Auml;</samp>&rsquo; the same,
+you most often also want to treat the composed and decomposed forms of such
+a character, U+00C4 <small>LATIN CAPITAL LETTER A WITH DIAERESIS</small> and
+U+0041 <small>LATIN CAPITAL LETTER A</small> U+0308 <small>COMBINING DIAERESIS</small> the same.
+The <var>nf</var> argument designates the normalization.
+</p>
+<a name="IDX697"></a>
+<p>These functions are locale dependent. The <var>iso639_language</var> argument
+identifies the language (e.g. <code>&quot;tr&quot;</code> for Turkish). NULL means to use
+locale independent case mappings.
+</p>
+<dl>
+<dt><u>Function:</u> const char * <b>uc_locale_language</b><i> ()</i>
+<a name="IDX698"></a>
+</dt>
+<dd><p>Returns the ISO 639 language code of the current locale.
+Returns <code>&quot;&quot;</code> if it is unknown, or in the &quot;C&quot; locale.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_toupper</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint8_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX699"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_toupper</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint16_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX700"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_toupper</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint32_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX701"></a>
+</dt>
+<dd><p>Returns the uppercase mapping of a string.
+</p>
+<p>The <var>nf</var> argument identifies the normalization form to apply after the
+case-mapping. It can also be NULL, for no normalization.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_tolower</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint8_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX702"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_tolower</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint16_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX703"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_tolower</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint32_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX704"></a>
+</dt>
+<dd><p>Returns the lowercase mapping of a string.
+</p>
+<p>The <var>nf</var> argument identifies the normalization form to apply after the
+case-mapping. It can also be NULL, for no normalization.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_totitle</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint8_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX705"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_totitle</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint16_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX706"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_totitle</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint32_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX707"></a>
+</dt>
+<dd><p>Returns the titlecase mapping of a string.
+</p>
+<p>Mapping to title case means that, in each word, the first cased character
+is being mapped to title case and the remaining characters of the word
+are being mapped to lower case.
+</p>
+<p>The <var>nf</var> argument identifies the normalization form to apply after the
+case-mapping. It can also be NULL, for no normalization.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Case-mappings-of-substrings"></a>
+<a name="SEC51"></a>
+<h2 class="section"> <a href="libunistring.html#TOC51">13.3 Case mappings of substrings</a> </h2>
+
+<p>Case mapping of a substring cannot simply be performed by extracting the
+substring and then applying the case mapping function to it. This does not
+work because case mapping requires some information about the surrounding
+characters. The following functions allow to apply case mappings to
+substrings of a given string, while taking into account the characters that
+precede it (the &ldquo;prefix&rdquo;) and the characters that follow it (the &ldquo;suffix&rdquo;).
+</p>
+<dl>
+<dt><u>Type:</u> <b>casing_prefix_context_t</b>
+<a name="IDX708"></a>
+</dt>
+<dd><p>This data type denotes the case-mapping context that is given by a prefix
+string. It is an immediate type that can be copied by simple assignment,
+without involving memory allocation. It is not an array type.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> casing_prefix_context_t <b>unicase_empty_prefix_context</b>
+<a name="IDX709"></a>
+</dt>
+<dd><p>This constant is the case-mapping context that corresponds to an empty prefix
+string.
+</p></dd></dl>
+
+<p>The following functions return <code>casing_prefix_context_t</code> objects:
+</p>
+<dl>
+<dt><u>Function:</u> casing_prefix_context_t <b>u8_casing_prefix_context</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX710"></a>
+</dt>
+<dt><u>Function:</u> casing_prefix_context_t <b>u16_casing_prefix_context</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX711"></a>
+</dt>
+<dt><u>Function:</u> casing_prefix_context_t <b>u32_casing_prefix_context</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX712"></a>
+</dt>
+<dd><p>Returns the case-mapping context of a given prefix string.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> casing_prefix_context_t <b>u8_casing_prefixes_context</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, casing_prefix_context_t <var>a_context</var>)</i>
+<a name="IDX713"></a>
+</dt>
+<dt><u>Function:</u> casing_prefix_context_t <b>u16_casing_prefixes_context</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, casing_prefix_context_t <var>a_context</var>)</i>
+<a name="IDX714"></a>
+</dt>
+<dt><u>Function:</u> casing_prefix_context_t <b>u32_casing_prefixes_context</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, casing_prefix_context_t <var>a_context</var>)</i>
+<a name="IDX715"></a>
+</dt>
+<dd><p>Returns the case-mapping context of the prefix concat(<var>a</var>, <var>s</var>),
+given the case-mapping context of the prefix <var>a</var>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Type:</u> <b>casing_suffix_context_t</b>
+<a name="IDX716"></a>
+</dt>
+<dd><p>This data type denotes the case-mapping context that is given by a suffix
+string. It is an immediate type that can be copied by simple assignment,
+without involving memory allocation. It is not an array type.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> casing_suffix_context_t <b>unicase_empty_suffix_context</b>
+<a name="IDX717"></a>
+</dt>
+<dd><p>This constant is the case-mapping context that corresponds to an empty suffix
+string.
+</p></dd></dl>
+
+<p>The following functions return <code>casing_suffix_context_t</code> objects:
+</p>
+<dl>
+<dt><u>Function:</u> casing_suffix_context_t <b>u8_casing_suffix_context</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX718"></a>
+</dt>
+<dt><u>Function:</u> casing_suffix_context_t <b>u16_casing_suffix_context</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX719"></a>
+</dt>
+<dt><u>Function:</u> casing_suffix_context_t <b>u32_casing_suffix_context</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX720"></a>
+</dt>
+<dd><p>Returns the case-mapping context of a given suffix string.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> casing_suffix_context_t <b>u8_casing_suffixes_context</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, casing_suffix_context_t <var>a_context</var>)</i>
+<a name="IDX721"></a>
+</dt>
+<dt><u>Function:</u> casing_suffix_context_t <b>u16_casing_suffixes_context</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, casing_suffix_context_t <var>a_context</var>)</i>
+<a name="IDX722"></a>
+</dt>
+<dt><u>Function:</u> casing_suffix_context_t <b>u32_casing_suffixes_context</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, casing_suffix_context_t <var>a_context</var>)</i>
+<a name="IDX723"></a>
+</dt>
+<dd><p>Returns the case-mapping context of the suffix concat(<var>s</var>, <var>a</var>),
+given the case-mapping context of the suffix <var>a</var>.
+</p></dd></dl>
+
+<p>The following functions perform a case mapping, considering the
+prefix context and the suffix context.
+</p>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_ct_toupper</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, casing_prefix_context_t <var>prefix_context</var>, casing_suffix_context_t <var>suffix_context</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint8_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX724"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_ct_toupper</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, casing_prefix_context_t <var>prefix_context</var>, casing_suffix_context_t <var>suffix_context</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint16_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX725"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_ct_toupper</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, casing_prefix_context_t <var>prefix_context</var>, casing_suffix_context_t <var>suffix_context</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint32_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX726"></a>
+</dt>
+<dd><p>Returns the uppercase mapping of a string that is surrounded by a prefix
+and a suffix.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_ct_tolower</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, casing_prefix_context_t <var>prefix_context</var>, casing_suffix_context_t <var>suffix_context</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint8_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX727"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_ct_tolower</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, casing_prefix_context_t <var>prefix_context</var>, casing_suffix_context_t <var>suffix_context</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint16_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX728"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_ct_tolower</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, casing_prefix_context_t <var>prefix_context</var>, casing_suffix_context_t <var>suffix_context</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint32_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX729"></a>
+</dt>
+<dd><p>Returns the lowercase mapping of a string that is surrounded by a prefix
+and a suffix.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_ct_totitle</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, casing_prefix_context_t <var>prefix_context</var>, casing_suffix_context_t <var>suffix_context</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint8_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX730"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_ct_totitle</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, casing_prefix_context_t <var>prefix_context</var>, casing_suffix_context_t <var>suffix_context</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint16_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX731"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_ct_totitle</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, casing_prefix_context_t <var>prefix_context</var>, casing_suffix_context_t <var>suffix_context</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint32_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX732"></a>
+</dt>
+<dd><p>Returns the titlecase mapping of a string that is surrounded by a prefix
+and a suffix.
+</p></dd></dl>
+
+<p>For example, to uppercase the UTF-8 substring between <code>s + start_index</code>
+and <code>s + end_index</code> of a string that extends from <code>s</code> to
+<code>s + u8_strlen (s)</code>, you can use the statements
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="smallexample">size_t result_length;
+uint8_t result =
+ u8_ct_toupper (s + start_index, end_index - start_index,
+ u8_casing_prefix_context (s, start_index),
+ u8_casing_suffix_context (s + end_index,
+ u8_strlen (s) - end_index),
+ iso639_language, NULL, NULL, &amp;result_length);
+</pre></td></tr></table>
+
+<hr size="6">
+<a name="Case-insensitive-comparison"></a>
+<a name="SEC52"></a>
+<h2 class="section"> <a href="libunistring.html#TOC52">13.4 Case insensitive comparison</a> </h2>
+
+<p>The following functions implement comparison that ignores differences in case
+and normalization.
+</p>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_casefold</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint8_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX733"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_casefold</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint16_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX734"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_casefold</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint32_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX735"></a>
+</dt>
+<dd><p>Returns the case folded string.
+</p>
+<p>Comparing <code>u8_casefold (<var>s1</var>)</code> and <code>u8_casefold (<var>s2</var>)</code>
+with the <code>u8_cmp2</code> function is equivalent to comparing <var>s1</var> and
+<var>s2</var> with <code>u8_casecmp</code>.
+</p>
+<p>The <var>nf</var> argument identifies the normalization form to apply after the
+case-mapping. It can also be NULL, for no normalization.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_ct_casefold</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, casing_prefix_context_t <var>prefix_context</var>, casing_suffix_context_t <var>suffix_context</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint8_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX736"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_ct_casefold</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, casing_prefix_context_t <var>prefix_context</var>, casing_suffix_context_t <var>suffix_context</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint16_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX737"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_ct_casefold</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, casing_prefix_context_t <var>prefix_context</var>, casing_suffix_context_t <var>suffix_context</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, uint32_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX738"></a>
+</dt>
+<dd><p>Returns the case folded string. The case folding takes into account the
+case mapping contexts of the prefix and suffix strings.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> int <b>u8_casecmp</b><i> (const uint8_t *<var>s1</var>, size_t <var>n1</var>, const uint8_t *<var>s2</var>, size_t <var>n2</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, int *<var>resultp</var>)</i>
+<a name="IDX739"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_casecmp</b><i> (const uint16_t *<var>s1</var>, size_t <var>n1</var>, const uint16_t *<var>s2</var>, size_t <var>n2</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, int *<var>resultp</var>)</i>
+<a name="IDX740"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_casecmp</b><i> (const uint32_t *<var>s1</var>, size_t <var>n1</var>, const uint32_t *<var>s2</var>, size_t <var>n2</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, int *<var>resultp</var>)</i>
+<a name="IDX741"></a>
+</dt>
+<dt><u>Function:</u> int <b>ulc_casecmp</b><i> (const char *<var>s1</var>, size_t <var>n1</var>, const char *<var>s2</var>, size_t <var>n2</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, int *<var>resultp</var>)</i>
+<a name="IDX742"></a>
+</dt>
+<dd><p>Compares <var>s1</var> and <var>s2</var>, ignoring differences in case and normalization.
+</p>
+<p>The <var>nf</var> argument identifies the normalization form to apply after the
+case-mapping. It can also be NULL, for no normalization.
+</p>
+<p>If successful, sets <code>*<var>resultp</var></code> to -1 if <var>s1</var> &lt; <var>s2</var>,
+0 if <var>s1</var> = <var>s2</var>, 1 if <var>s1</var> &gt; <var>s2</var>, and returns 0.
+Upon failure, returns -1 with <code>errno</code> set.
+</p></dd></dl>
+
+<a name="IDX743"></a>
+<a name="IDX744"></a>
+<a name="IDX745"></a>
+<a name="IDX746"></a>
+<p>The following functions additionally take into account the sorting rules of the
+current locale.
+</p>
+<dl>
+<dt><u>Function:</u> char * <b>u8_casexfrm</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, char *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX747"></a>
+</dt>
+<dt><u>Function:</u> char * <b>u16_casexfrm</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, char *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX748"></a>
+</dt>
+<dt><u>Function:</u> char * <b>u32_casexfrm</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, char *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX749"></a>
+</dt>
+<dt><u>Function:</u> char * <b>ulc_casexfrm</b><i> (const char *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, char *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX750"></a>
+</dt>
+<dd><p>Converts the string <var>s</var> of length <var>n</var> to a NUL-terminated byte
+sequence, in such a way that comparing <code>u8_casexfrm (<var>s1</var>)</code> and
+<code>u8_casexfrm (<var>s2</var>)</code> with the gnulib function <code>memcmp2</code> is
+equivalent to comparing <var>s1</var> and <var>s2</var> with <code>u8_casecoll</code>.
+</p>
+<p><var>nf</var> must be either <code>UNINORM_NFC</code>, <code>UNINORM_NFKC</code>, or NULL for
+no normalization.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> int <b>u8_casecoll</b><i> (const uint8_t *<var>s1</var>, size_t <var>n1</var>, const uint8_t *<var>s2</var>, size_t <var>n2</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, int *<var>resultp</var>)</i>
+<a name="IDX751"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_casecoll</b><i> (const uint16_t *<var>s1</var>, size_t <var>n1</var>, const uint16_t *<var>s2</var>, size_t <var>n2</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, int *<var>resultp</var>)</i>
+<a name="IDX752"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_casecoll</b><i> (const uint32_t *<var>s1</var>, size_t <var>n1</var>, const uint32_t *<var>s2</var>, size_t <var>n2</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, int *<var>resultp</var>)</i>
+<a name="IDX753"></a>
+</dt>
+<dt><u>Function:</u> int <b>ulc_casecoll</b><i> (const char *<var>s1</var>, size_t <var>n1</var>, const char *<var>s2</var>, size_t <var>n2</var>, const char *<var>iso639_language</var>, uninorm_t <var>nf</var>, int *<var>resultp</var>)</i>
+<a name="IDX754"></a>
+</dt>
+<dd><p>Compares <var>s1</var> and <var>s2</var>, ignoring differences in case and normalization,
+using the collation rules of the current locale.
+</p>
+<p>The <var>nf</var> argument identifies the normalization form to apply after the
+case-mapping. It must be either <code>UNINORM_NFC</code> or <code>UNINORM_NFKC</code>.
+It can also be NULL, for no normalization.
+</p>
+<p>If successful, sets <code>*<var>resultp</var></code> to -1 if <var>s1</var> &lt; <var>s2</var>,
+0 if <var>s1</var> = <var>s2</var>, 1 if <var>s1</var> &gt; <var>s2</var>, and returns 0.
+Upon failure, returns -1 with <code>errno</code> set.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Case-detection"></a>
+<a name="SEC53"></a>
+<h2 class="section"> <a href="libunistring.html#TOC53">13.5 Case detection</a> </h2>
+
+<p>The following functions determine whether a Unicode string is entirely in
+upper case. or entirely in lower case, or entirely in title case, or already
+case-folded.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>u8_is_uppercase</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, bool *<var>resultp</var>)</i>
+<a name="IDX755"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_is_uppercase</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, bool *<var>resultp</var>)</i>
+<a name="IDX756"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_is_uppercase</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, bool *<var>resultp</var>)</i>
+<a name="IDX757"></a>
+</dt>
+<dd><p>Sets <code>*<var>resultp</var></code> to true if mapping NFD(<var>s</var>) to upper case is
+a no-op, or to false otherwise, and returns 0. Upon failure, returns -1 with
+<code>errno</code> set.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> int <b>u8_is_lowercase</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, bool *<var>resultp</var>)</i>
+<a name="IDX758"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_is_lowercase</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, bool *<var>resultp</var>)</i>
+<a name="IDX759"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_is_lowercase</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, bool *<var>resultp</var>)</i>
+<a name="IDX760"></a>
+</dt>
+<dd><p>Sets <code>*<var>resultp</var></code> to true if mapping NFD(<var>s</var>) to lower case is
+a no-op, or to false otherwise, and returns 0. Upon failure, returns -1 with
+<code>errno</code> set.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> int <b>u8_is_titlecase</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, bool *<var>resultp</var>)</i>
+<a name="IDX761"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_is_titlecase</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, bool *<var>resultp</var>)</i>
+<a name="IDX762"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_is_titlecase</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, bool *<var>resultp</var>)</i>
+<a name="IDX763"></a>
+</dt>
+<dd><p>Sets <code>*<var>resultp</var></code> to true if mapping NFD(<var>s</var>) to title case is
+a no-op, or to false otherwise, and returns 0. Upon failure, returns -1 with
+<code>errno</code> set.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> int <b>u8_is_casefolded</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, bool *<var>resultp</var>)</i>
+<a name="IDX764"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_is_casefolded</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, bool *<var>resultp</var>)</i>
+<a name="IDX765"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_is_casefolded</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, bool *<var>resultp</var>)</i>
+<a name="IDX766"></a>
+</dt>
+<dd><p>Sets <code>*<var>resultp</var></code> to true if applying case folding to NFD(<var>S</var>) is
+a no-op, or to false otherwise, and returns 0. Upon failure, returns -1 with
+<code>errno</code> set.
+</p></dd></dl>
+
+<p>The following functions determine whether case mappings have any effect on a
+Unicode string.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>u8_is_cased</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, bool *<var>resultp</var>)</i>
+<a name="IDX767"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_is_cased</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, bool *<var>resultp</var>)</i>
+<a name="IDX768"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_is_cased</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, const char *<var>iso639_language</var>, bool *<var>resultp</var>)</i>
+<a name="IDX769"></a>
+</dt>
+<dd><p>Sets <code>*<var>resultp</var></code> to true if case matters for <var>s</var>, that is, if
+mapping NFD(<var>s</var>) to either upper case or lower case or title case is not
+a no-op. Set <code>*<var>resultp</var></code> to false if NFD(<var>s</var>) maps to itself
+under the upper case mapping, under the lower case mapping, and under the title
+case mapping; in other words, when NFD(<var>s</var>) consists entirely of caseless
+characters. Upon failure, returns -1 with <code>errno</code> set.
+</p></dd></dl>
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC48" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_14.html#SEC54" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_14.html b/doc/libunistring_14.html
new file mode 100644
index 00000000..f0b21257
--- /dev/null
+++ b/doc/libunistring_14.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: 14. Regular expressions &lt;uniregex.h&gt;</title>
+
+<meta name="description" content="GNU libunistring: 14. Regular expressions &lt;uniregex.h&gt;">
+<meta name="keywords" content="GNU libunistring: 14. Regular expressions &lt;uniregex.h&gt;">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_13.html#SEC48" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_15.html#SEC55" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="uniregex_002eh"></a>
+<a name="SEC54"></a>
+<h1 class="chapter"> <a href="libunistring.html#TOC54">14. Regular expressions <code>&lt;uniregex.h&gt;</code></a> </h1>
+
+<p>This include file is not yet implemented.
+</p>
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_13.html#SEC48" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_15.html#SEC55" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_15.html b/doc/libunistring_15.html
new file mode 100644
index 00000000..7c7ac329
--- /dev/null
+++ b/doc/libunistring_15.html
@@ -0,0 +1,232 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: 15. Using the library</title>
+
+<meta name="description" content="GNU libunistring: 15. Using the library">
+<meta name="keywords" content="GNU libunistring: 15. Using the library">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_14.html#SEC54" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_16.html#SEC61" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="Using-the-library"></a>
+<a name="SEC55"></a>
+<h1 class="chapter"> <a href="libunistring.html#TOC55">15. Using the library</a> </h1>
+
+<p>This chapter explains some practical considerations, regarding the
+installation and compiler options that are needed in order to use this
+library.
+</p>
+
+<hr size="6">
+<a name="Installation"></a>
+<a name="SEC56"></a>
+<h2 class="section"> <a href="libunistring.html#TOC56">15.1 Installation</a> </h2>
+
+<p>Before you can use the library, it must be installed. First, you have to
+make sure all dependencies are installed. They are listed in the file
+&lsquo;<tt>DEPENDENCIES</tt>&rsquo;.
+</p>
+<a name="IDX770"></a>
+<p>Then you can proceed to build and install the library, as described in the
+file &lsquo;<tt>INSTALL</tt>&rsquo;. For installation on Windows systems, please refer to
+the file &lsquo;<tt>README.woe32</tt>&rsquo;.
+</p>
+<hr size="6">
+<a name="Compiler-options"></a>
+<a name="SEC57"></a>
+<h2 class="section"> <a href="libunistring.html#TOC57">15.2 Compiler options</a> </h2>
+
+<p>Let's denote as <code>LIBUNISTRING_PREFIX</code> the value of the &lsquo;<samp>--prefix</samp>&rsquo;
+option that you passed to <code>configure</code> while installing this package.
+If you didn't pass any &lsquo;<samp>--prefix</samp>&rsquo; option, then the package is installed
+in &lsquo;<tt>/usr/local</tt>&rsquo;.
+</p>
+<p>Let's denote as <code>LIBUNISTRING_INCLUDEDIR</code> the directory where the
+include files were installed. This is usually the same as
+<code>${LIBUNISTRING_PREFIX}/include</code>. Except that if you passed an
+&lsquo;<samp>--includedir</samp>&rsquo; option to <code>configure</code>, it is the value of that
+option.
+</p>
+<p>Let's further denote as <code>LIBUNISTRING_LIBDIR</code> the directory where
+the library itself was installed. This is the value that you passed
+with the &lsquo;<samp>--libdir</samp>&rsquo; option to <code>configure</code>, or otherwise the
+same as <code>${LIBUNISTRING_PREFIX}/lib</code>. Recall that when building
+in 64-bit mode on a 64-bit GNU/Linux system that supports executables
+in either 64-bit mode or 32-bit mode, you should have used the option
+<code>--libdir=${LIBUNISTRING_PREFIX}/lib64</code>.
+</p>
+<a name="IDX771"></a>
+<p>So that the compiler finds the include files, you have to pass it the
+option <code>-I${LIBUNISTRING_INCLUDEDIR}</code>.
+</p>
+<p>So that the compiler finds the library during its linking pass, you have
+to pass it the options <code>-L${LIBUNISTRING_LIBDIR} -lunistring</code>.
+On some systems, in some configurations, you also have to pass options
+needed for linking with <code>libiconv</code>. The autoconf macro
+<code>gl_LIBUNISTRING</code> (see <a href="#SEC59">Autoconf macro</a>) deals with this
+particularity.
+</p>
+<hr size="6">
+<a name="Include-files"></a>
+<a name="SEC58"></a>
+<h2 class="section"> <a href="libunistring.html#TOC58">15.3 Include files</a> </h2>
+
+<p>Most of the include files have been presented in the introduction, see
+<a href="libunistring_1.html#SEC1">Introduction</a>, and subsequent detailed chapters.
+</p>
+<p>Another include file is <code>&lt;unistring/version.h&gt;</code>. It contains the
+version number of the libunistring library.
+</p>
+<dl>
+<dt><u>Macro:</u> int <b>_LIBUNISTRING_VERSION</b>
+<a name="IDX772"></a>
+</dt>
+<dd><p>This constant contains the version of libunistring that is being used
+at compile time. It encodes the major and minor parts of the version
+number only. These parts are encoded in the form <code>(major&lt;&lt;8) + minor</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>_libunistring_version</b>
+<a name="IDX773"></a>
+</dt>
+<dd><p>This constant contains the version of libunistring that is being used
+at run time. It encodes the major and minor parts of the version
+number only. These parts are encoded in the form <code>(major&lt;&lt;8) + minor</code>.
+</p></dd></dl>
+
+<p>It is possible that <code>_libunistring_version</code> is greater than
+<code>_LIBUNISTRING_VERSION</code>. This can happen when you use
+<code>libunistring</code> as a shared library, and a newer, binary
+backward-compatible version has been installed after your program
+that uses <code>libunistring</code> was installed.
+</p>
+<hr size="6">
+<a name="Autoconf-macro"></a>
+<a name="SEC59"></a>
+<h2 class="section"> <a href="libunistring.html#TOC59">15.4 Autoconf macro</a> </h2>
+
+<p>GNU Gnulib provides an autoconf macro that tests for the availability
+of <code>libunistring</code>. It is contained in the Gnulib module
+&lsquo;<samp>libunistring</samp>&rsquo;, see
+<a href="http://www.gnu.org/software/gnulib/MODULES.html#module=libunistring">http://www.gnu.org/software/gnulib/MODULES.html#module=libunistring</a>.
+</p>
+<a name="IDX774"></a>
+<p>The macro is called <code>gl_LIBUNISTRING</code>. It searches for an installed
+libunistring. If found, it sets and AC_SUBSTs <code>HAVE_LIBUNISTRING=yes</code>
+and the <code>LIBUNISTRING</code> and <code>LTLIBUNISTRING</code> variables and augments
+the <code>CPPFLAGS</code> variable, and defines the C macro
+<code>HAVE_LIBUNISTRING</code> to 1. Otherwise, it sets and AC_SUBSTs
+<code>HAVE_LIBUNISTRING=no</code> and <code>LIBUNISTRING</code> and <code>LTLIBUNISTRING</code>
+to empty.
+</p>
+<p>The complexities that <code>gl_LIBUNISTRING</code> deals with are the following:
+</p>
+<ul>
+<li>
+On some operating systems, in some configurations, libunistring depends
+on <code>libiconv</code>, and the options for linking with libiconv must be
+mentioned explicitly on the link command line.
+
+</li><li>
+GNU <code>libunistring</code>, if installed, is not necessarily already in the
+search path (<code>CPPFLAGS</code> for the include file search path,
+<code>LDFLAGS</code> for the library search path).
+
+</li><li>
+GNU <code>libunistring</code>, if installed, is not necessarily already in the
+run time library search path. To avoid the need for setting an environment
+variable like <code>LD_LIBRARY_PATH</code>, the macro adds the appropriate
+run time search path options to the <code>LIBUNISTRING</code> variable. This works
+on most systems.
+</li></ul>
+
+<hr size="6">
+<a name="Reporting-problems"></a>
+<a name="SEC60"></a>
+<h2 class="section"> <a href="libunistring.html#TOC60">15.5 Reporting problems</a> </h2>
+
+<p>If you encounter any problem, please don't hesitate to send a detailed
+bug report to the <code>bug-libunistring@gnu.org</code> mailing list. You can
+alternatively also use the bug tracker at the project page
+<a href="https://savannah.gnu.org/projects/libunistring">https://savannah.gnu.org/projects/libunistring</a>.
+</p>
+<p>Please always include the version number of this library, and a short
+description of your operating system and compilation environment with
+corresponding version numbers.
+</p>
+<p>For problems that appear while building and installing <code>libunistring</code>,
+for which you don't find the remedy in the &lsquo;<tt>INSTALL</tt>&rsquo; file, please include
+a description of the options that you passed to the &lsquo;<samp>configure</samp>&rsquo; script.
+</p>
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC55" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_16.html#SEC61" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_16.html b/doc/libunistring_16.html
new file mode 100644
index 00000000..bfe61265
--- /dev/null
+++ b/doc/libunistring_16.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: 16. More advanced functionality</title>
+
+<meta name="description" content="GNU libunistring: 16. More advanced functionality">
+<meta name="keywords" content="GNU libunistring: 16. More advanced functionality">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_15.html#SEC55" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_17.html#SEC62" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="More-functionality"></a>
+<a name="SEC61"></a>
+<h1 class="chapter"> <a href="libunistring.html#TOC61">16. More advanced functionality</a> </h1>
+
+<p>For bidirectional reordering of strings, we recommend the GNU FriBidi library:
+<a href="http://www.fribidi.org/">http://www.fribidi.org/</a>.
+</p>
+<a name="IDX775"></a>
+<p>For the rendering of Unicode strings outside of the context of a given toolkit
+(KDE/Qt or GNOME/Gtk), we recommend the Pango library:
+<a href="http://www.pango.org/">http://www.pango.org/</a>.
+</p>
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_15.html#SEC55" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_17.html#SEC62" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_17.html b/doc/libunistring_17.html
new file mode 100644
index 00000000..73ade2f2
--- /dev/null
+++ b/doc/libunistring_17.html
@@ -0,0 +1,1526 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: A. Licenses</title>
+
+<meta name="description" content="GNU libunistring: A. Licenses">
+<meta name="keywords" content="GNU libunistring: A. Licenses">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_16.html#SEC61" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="Licenses"></a>
+<a name="SEC62"></a>
+<h1 class="appendix"> <a href="libunistring.html#TOC62">A. Licenses</a> </h1>
+
+<p>The files of this package are covered by the licenses indicated in each
+particular file or directory. Here is a summary:
+</p>
+<ul>
+<li>
+The <code>libunistring</code> library is covered by the
+GNU Lesser General Public License (LGPL).
+A copy of the license is included in <a href="#SEC68">GNU LESSER GENERAL PUBLIC LICENSE</a>.
+
+</li><li>
+This manual is free documentation. It is dually licensed under the
+GNU FDL and the GNU GPL. This means that you can redistribute this
+manual under either of these two licenses, at your choice.
+<br>
+This manual is covered by the GNU FDL. Permission is granted to copy,
+distribute and/or modify this document under the terms of the
+GNU Free Documentation License (FDL), either version 1.2 of the
+License, or (at your option) any later version published by the
+Free Software Foundation (FSF); with no Invariant Sections, with no
+Front-Cover Text, and with no Back-Cover Texts.
+A copy of the license is included in <a href="#SEC69">GNU Free Documentation License</a>.
+<br>
+This manual is covered by the GNU GPL. You can redistribute it and/or
+modify it under the terms of the GNU General Public License (GPL), either
+version 3 of the License, or (at your option) any later version published
+by the Free Software Foundation (FSF).
+A copy of the license is included in <a href="#SEC63">GNU GENERAL PUBLIC LICENSE</a>.
+</li></ul>
+
+
+
+<hr size="6">
+<a name="GNU-GPL"></a>
+<a name="SEC63"></a>
+<h2 class="appendixsec"> <a href="libunistring.html#TOC63">A.1 GNU GENERAL PUBLIC LICENSE</a> </h2>
+<p align="center"> Version 3, 29 June 2007
+</p>
+
+<table><tr><td>&nbsp;</td><td><pre class="display">Copyright &copy; 2007 Free Software Foundation, Inc. <a href="http://fsf.org/">http://fsf.org/</a>
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+</pre></td></tr></table>
+
+<a name="SEC64"></a>
+<h2 class="heading"> Preamble </h2>
+
+<p>The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+</p>
+<p>The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom
+to share and change all versions of a program&mdash;to make sure it remains
+free software for all its users. We, the Free Software Foundation,
+use the GNU General Public License for most of our software; it
+applies also to any other work released this way by its authors. You
+can apply it to your programs, too.
+</p>
+<p>When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+</p>
+<p>To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you
+have certain responsibilities if you distribute copies of the
+software, or if you modify it: responsibilities to respect the freedom
+of others.
+</p>
+<p>For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too,
+receive or can get the source code. And you must show them these
+terms so they know their rights.
+</p>
+<p>Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+</p>
+<p>For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+</p>
+<p>Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the
+manufacturer can do so. This is fundamentally incompatible with the
+aim of protecting users' freedom to change the software. The
+systematic pattern of such abuse occurs in the area of products for
+individuals to use, which is precisely where it is most unacceptable.
+Therefore, we have designed this version of the GPL to prohibit the
+practice for those products. If such problems arise substantially in
+other domains, we stand ready to extend this provision to those
+domains in future versions of the GPL, as needed to protect the
+freedom of users.
+</p>
+<p>Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish
+to avoid the special danger that patents applied to a free program
+could make it effectively proprietary. To prevent this, the GPL
+assures that patents cannot be used to render the program non-free.
+</p>
+<p>The precise terms and conditions for copying, distribution and
+modification follow.
+</p>
+<a name="SEC65"></a>
+<h2 class="heading"> TERMS AND CONDITIONS </h2>
+
+<ol>
+<li> Definitions.
+
+<p>&ldquo;This License&rdquo; refers to version 3 of the GNU General Public License.
+</p>
+<p>&ldquo;Copyright&rdquo; also means copyright-like laws that apply to other kinds
+of works, such as semiconductor masks.
+</p>
+<p>&ldquo;The Program&rdquo; refers to any copyrightable work licensed under this
+License. Each licensee is addressed as &ldquo;you&rdquo;. &ldquo;Licensees&rdquo; and
+&ldquo;recipients&rdquo; may be individuals or organizations.
+</p>
+<p>To &ldquo;modify&rdquo; a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of
+an exact copy. The resulting work is called a &ldquo;modified version&rdquo; of
+the earlier work or a work &ldquo;based on&rdquo; the earlier work.
+</p>
+<p>A &ldquo;covered work&rdquo; means either the unmodified Program or a work based
+on the Program.
+</p>
+<p>To &ldquo;propagate&rdquo; a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+</p>
+<p>To &ldquo;convey&rdquo; a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user
+through a computer network, with no transfer of a copy, is not
+conveying.
+</p>
+<p>An interactive user interface displays &ldquo;Appropriate Legal Notices&rdquo; to
+the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+</p>
+</li><li> Source Code.
+
+<p>The &ldquo;source code&rdquo; for a work means the preferred form of the work for
+making modifications to it. &ldquo;Object code&rdquo; means any non-source form
+of a work.
+</p>
+<p>A &ldquo;Standard Interface&rdquo; means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+</p>
+<p>The &ldquo;System Libraries&rdquo; of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+&ldquo;Major Component&rdquo;, in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+</p>
+<p>The &ldquo;Corresponding Source&rdquo; for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+</p>
+<p>The Corresponding Source need not include anything that users can
+regenerate automatically from other parts of the Corresponding Source.
+</p>
+<p>The Corresponding Source for a work in source code form is that same
+work.
+</p>
+</li><li> Basic Permissions.
+
+<p>All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+</p>
+<p>You may make, run and propagate covered works that you do not convey,
+without conditions so long as your license otherwise remains in force.
+You may convey covered works to others for the sole purpose of having
+them make modifications exclusively for you, or provide you with
+facilities for running those works, provided that you comply with the
+terms of this License in conveying all material for which you do not
+control copyright. Those thus making or running the covered works for
+you must do so exclusively on your behalf, under your direction and
+control, on terms that prohibit them from making any copies of your
+copyrighted material outside their relationship with you.
+</p>
+<p>Conveying under any other circumstances is permitted solely under the
+conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+</p>
+</li><li> Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+<p>No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+</p>
+<p>When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such
+circumvention is effected by exercising rights under this License with
+respect to the covered work, and you disclaim any intention to limit
+operation or modification of the work as a means of enforcing, against
+the work's users, your or third parties' legal rights to forbid
+circumvention of technological measures.
+</p>
+</li><li> Conveying Verbatim Copies.
+
+<p>You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+</p>
+<p>You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+</p>
+</li><li> Conveying Modified Source Versions.
+
+<p>You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these
+conditions:
+</p>
+<ol>
+<li>
+The work must carry prominent notices stating that you modified it,
+and giving a relevant date.
+
+</li><li>
+The work must carry prominent notices stating that it is released
+under this License and any conditions added under section 7. This
+requirement modifies the requirement in section 4 to &ldquo;keep intact all
+notices&rdquo;.
+
+</li><li>
+You must license the entire work, as a whole, under this License to
+anyone who comes into possession of a copy. This License will
+therefore apply, along with any applicable section 7 additional terms,
+to the whole of the work, and all its parts, regardless of how they
+are packaged. This License gives no permission to license the work in
+any other way, but it does not invalidate such permission if you have
+separately received it.
+
+</li><li>
+If the work has interactive user interfaces, each must display
+Appropriate Legal Notices; however, if the Program has interactive
+interfaces that do not display Appropriate Legal Notices, your work
+need not make them do so.
+</li></ol>
+
+<p>A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+&ldquo;aggregate&rdquo; if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+</p>
+</li><li> Conveying Non-Source Forms.
+
+<p>You may convey a covered work in object code form under the terms of
+sections 4 and 5, provided that you also convey the machine-readable
+Corresponding Source under the terms of this License, in one of these
+ways:
+</p>
+<ol>
+<li>
+Convey the object code in, or embodied in, a physical product
+(including a physical distribution medium), accompanied by the
+Corresponding Source fixed on a durable physical medium customarily
+used for software interchange.
+
+</li><li>
+Convey the object code in, or embodied in, a physical product
+(including a physical distribution medium), accompanied by a written
+offer, valid for at least three years and valid for as long as you
+offer spare parts or customer support for that product model, to give
+anyone who possesses the object code either (1) a copy of the
+Corresponding Source for all the software in the product that is
+covered by this License, on a durable physical medium customarily used
+for software interchange, for a price no more than your reasonable
+cost of physically performing this conveying of source, or (2) access
+to copy the Corresponding Source from a network server at no charge.
+
+</li><li>
+Convey individual copies of the object code with a copy of the written
+offer to provide the Corresponding Source. This alternative is
+allowed only occasionally and noncommercially, and only if you
+received the object code with such an offer, in accord with subsection
+6b.
+
+</li><li>
+Convey the object code by offering access from a designated place
+(gratis or for a charge), and offer equivalent access to the
+Corresponding Source in the same way through the same place at no
+further charge. You need not require recipients to copy the
+Corresponding Source along with the object code. If the place to copy
+the object code is a network server, the Corresponding Source may be
+on a different server (operated by you or a third party) that supports
+equivalent copying facilities, provided you maintain clear directions
+next to the object code saying where to find the Corresponding Source.
+Regardless of what server hosts the Corresponding Source, you remain
+obligated to ensure that it is available for as long as needed to
+satisfy these requirements.
+
+</li><li>
+Convey the object code using peer-to-peer transmission, provided you
+inform other peers where the object code and Corresponding Source of
+the work are being offered to the general public at no charge under
+subsection 6d.
+
+</li></ol>
+
+<p>A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+</p>
+<p>A &ldquo;User Product&rdquo; is either (1) a &ldquo;consumer product&rdquo;, which means any
+tangible personal property which is normally used for personal,
+family, or household purposes, or (2) anything designed or sold for
+incorporation into a dwelling. In determining whether a product is a
+consumer product, doubtful cases shall be resolved in favor of
+coverage. For a particular product received by a particular user,
+&ldquo;normally used&rdquo; refers to a typical or common use of that class of
+product, regardless of the status of the particular user or of the way
+in which the particular user actually uses, or expects or is expected
+to use, the product. A product is a consumer product regardless of
+whether the product has substantial commercial, industrial or
+non-consumer uses, unless such uses represent the only significant
+mode of use of the product.
+</p>
+<p>&ldquo;Installation Information&rdquo; for a User Product means any methods,
+procedures, authorization keys, or other information required to
+install and execute modified versions of a covered work in that User
+Product from a modified version of its Corresponding Source. The
+information must suffice to ensure that the continued functioning of
+the modified object code is in no case prevented or interfered with
+solely because modification has been made.
+</p>
+<p>If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+</p>
+<p>The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or
+updates for a work that has been modified or installed by the
+recipient, or for the User Product in which it has been modified or
+installed. Access to a network may be denied when the modification
+itself materially and adversely affects the operation of the network
+or violates the rules and protocols for communication across the
+network.
+</p>
+<p>Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+</p>
+</li><li> Additional Terms.
+
+<p>&ldquo;Additional permissions&rdquo; are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+</p>
+<p>When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+</p>
+<p>Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders
+of that material) supplement the terms of this License with terms:
+</p>
+<ol>
+<li>
+Disclaiming warranty or limiting liability differently from the terms
+of sections 15 and 16 of this License; or
+
+</li><li>
+Requiring preservation of specified reasonable legal notices or author
+attributions in that material or in the Appropriate Legal Notices
+displayed by works containing it; or
+
+</li><li>
+Prohibiting misrepresentation of the origin of that material, or
+requiring that modified versions of such material be marked in
+reasonable ways as different from the original version; or
+
+</li><li>
+Limiting the use for publicity purposes of names of licensors or
+authors of the material; or
+
+</li><li>
+Declining to grant rights under trademark law for use of some trade
+names, trademarks, or service marks; or
+
+</li><li>
+Requiring indemnification of licensors and authors of that material by
+anyone who conveys the material (or modified versions of it) with
+contractual assumptions of liability to the recipient, for any
+liability that these contractual assumptions directly impose on those
+licensors and authors.
+</li></ol>
+
+<p>All other non-permissive additional terms are considered &ldquo;further
+restrictions&rdquo; within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+</p>
+<p>If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+</p>
+<p>Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions; the
+above requirements apply either way.
+</p>
+</li><li> Termination.
+
+<p>You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+</p>
+<p>However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+</p>
+<p>Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+</p>
+<p>Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+</p>
+</li><li> Acceptance Not Required for Having Copies.
+
+<p>You are not required to accept this License in order to receive or run
+a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+</p>
+</li><li> Automatic Licensing of Downstream Recipients.
+
+<p>Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+</p>
+<p>An &ldquo;entity transaction&rdquo; is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+</p>
+<p>You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+</p>
+</li><li> Patents.
+
+<p>A &ldquo;contributor&rdquo; is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's &ldquo;contributor version&rdquo;.
+</p>
+<p>A contributor's &ldquo;essential patent claims&rdquo; are all patent claims owned
+or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, &ldquo;control&rdquo; includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+</p>
+<p>Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+</p>
+<p>In the following three paragraphs, a &ldquo;patent license&rdquo; is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To &ldquo;grant&rdquo; such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+</p>
+<p>If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. &ldquo;Knowingly relying&rdquo; means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+</p>
+<p>If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+</p>
+<p>A patent license is &ldquo;discriminatory&rdquo; if it does not include within the
+scope of its coverage, prohibits the exercise of, or is conditioned on
+the non-exercise of one or more of the rights that are specifically
+granted under this License. You may not convey a covered work if you
+are a party to an arrangement with a third party that is in the
+business of distributing software, under which you make payment to the
+third party based on the extent of your activity of conveying the
+work, and under which the third party grants, to any of the parties
+who would receive the covered work from you, a discriminatory patent
+license (a) in connection with copies of the covered work conveyed by
+you (or copies made from those copies), or (b) primarily for and in
+connection with specific products or compilations that contain the
+covered work, unless you entered into that arrangement, or that patent
+license was granted, prior to 28 March 2007.
+</p>
+<p>Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+</p>
+</li><li> No Surrender of Others' Freedom.
+
+<p>If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey
+a covered work so as to satisfy simultaneously your obligations under
+this License and any other pertinent obligations, then as a
+consequence you may not convey it at all. For example, if you agree
+to terms that obligate you to collect a royalty for further conveying
+from those to whom you convey the Program, the only way you could
+satisfy both those terms and this License would be to refrain entirely
+from conveying the Program.
+</p>
+</li><li> Use with the GNU Affero General Public License.
+
+<p>Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+</p>
+</li><li> Revised Versions of this License.
+
+<p>The Free Software Foundation may publish revised and/or new versions
+of the GNU General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+</p>
+<p>Each version is given a distinguishing version number. If the Program
+specifies that a certain numbered version of the GNU General Public
+License &ldquo;or any later version&rdquo; applies to it, you have the option of
+following the terms and conditions either of that numbered version or
+of any later version published by the Free Software Foundation. If
+the Program does not specify a version number of the GNU General
+Public License, you may choose any version ever published by the Free
+Software Foundation.
+</p>
+<p>If the Program specifies that a proxy can decide which future versions
+of the GNU General Public License can be used, that proxy's public
+statement of acceptance of a version permanently authorizes you to
+choose that version for the Program.
+</p>
+<p>Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+</p>
+</li><li> Disclaimer of Warranty.
+
+<p>THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM &ldquo;AS IS&rdquo; WITHOUT
+WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
+DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
+CORRECTION.
+</p>
+</li><li> Limitation of Liability.
+
+<p>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
+CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
+NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
+LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
+TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
+PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+</p>
+</li><li> Interpretation of Sections 15 and 16.
+
+<p>If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+</p>
+</li></ol>
+
+<a name="SEC66"></a>
+<h2 class="heading"> END OF TERMS AND CONDITIONS </h2>
+
+<a name="SEC67"></a>
+<h2 class="heading"> How to Apply These Terms to Your New Programs </h2>
+
+<p>If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+</p>
+<p>To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the &ldquo;copyright&rdquo; line and a pointer to where the full notice is found.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="smallexample"><var>one line to give the program's name and a brief idea of what it does.</var>
+Copyright (C) <var>year</var> <var>name of author</var>
+
+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 3 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, see <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.
+</pre></td></tr></table>
+
+<p>Also add information on how to contact you by electronic and paper mail.
+</p>
+<p>If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="smallexample"><var>program</var> Copyright (C) <var>year</var> <var>name of author</var>
+This program comes with ABSOLUTELY NO WARRANTY; for details type &lsquo;<samp>show w</samp>&rsquo;.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type &lsquo;<samp>show c</samp>&rsquo; for details.
+</pre></td></tr></table>
+
+<p>The hypothetical commands &lsquo;<samp>show w</samp>&rsquo; and &lsquo;<samp>show c</samp>&rsquo; should show
+the appropriate parts of the General Public License. Of course, your
+program's commands might be different; for a GUI interface, you would
+use an &ldquo;about box&rdquo;.
+</p>
+<p>You should also get your employer (if you work as a programmer) or school,
+if any, to sign a &ldquo;copyright disclaimer&rdquo; for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.
+</p>
+<p>The GNU General Public License does not permit incorporating your
+program into proprietary programs. If your program is a subroutine
+library, you may consider it more useful to permit linking proprietary
+applications with the library. If this is what you want to do, use
+the GNU Lesser General Public License instead of this License. But
+first, please read <a href="http://www.gnu.org/philosophy/why-not-lgpl.html">http://www.gnu.org/philosophy/why-not-lgpl.html</a>.
+
+</p><hr size="6">
+<a name="GNU-LGPL"></a>
+<a name="SEC68"></a>
+<h2 class="appendixsec"> <a href="libunistring.html#TOC64">A.2 GNU LESSER GENERAL PUBLIC LICENSE</a> </h2>
+<p align="center"> Version 3, 29 June 2007
+</p>
+
+<table><tr><td>&nbsp;</td><td><pre class="display">Copyright &copy; 2007 Free Software Foundation, Inc. <a href="http://fsf.org/">http://fsf.org/</a>
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+</pre></td></tr></table>
+
+<p>This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+</p>
+<ol>
+<li> Additional Definitions.
+
+<p>As used herein, &ldquo;this License&rdquo; refers to version 3 of the GNU Lesser
+General Public License, and the &ldquo;GNU GPL&rdquo; refers to version 3 of the GNU
+General Public License.
+</p>
+<p>&ldquo;The Library&rdquo; refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+</p>
+<p>An &ldquo;Application&rdquo; is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+</p>
+<p>A &ldquo;Combined Work&rdquo; is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the &ldquo;Linked
+Version&rdquo;.
+</p>
+<p>The &ldquo;Minimal Corresponding Source&rdquo; for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+</p>
+<p>The &ldquo;Corresponding Application Code&rdquo; for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+</p>
+</li><li> Exception to Section 3 of the GNU GPL.
+
+<p>You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+</p>
+</li><li> Conveying Modified Versions.
+
+<p>If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+</p>
+<ol>
+<li>
+under this License, provided that you make a good faith effort to
+ensure that, in the event an Application does not supply the
+function or data, the facility still operates, and performs
+whatever part of its purpose remains meaningful, or
+
+</li><li>
+under the GNU GPL, with none of the additional permissions of
+this License applicable to that copy.
+</li></ol>
+
+</li><li> Object Code Incorporating Material from Library Header Files.
+
+<p>The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+</p>
+<ol>
+<li>
+Give prominent notice with each copy of the object code that the
+Library is used in it and that the Library and its use are
+covered by this License.
+</li><li>
+Accompany the object code with a copy of the GNU GPL and this license
+document.
+</li></ol>
+
+</li><li> Combined Works.
+
+<p>You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+</p>
+<ol>
+<li>
+Give prominent notice with each copy of the Combined Work that
+the Library is used in it and that the Library and its use are
+covered by this License.
+</li><li>
+Accompany the Combined Work with a copy of the GNU GPL and this license
+document.
+</li><li>
+For a Combined Work that displays copyright notices during
+execution, include the copyright notice for the Library among
+these notices, as well as a reference directing the user to the
+copies of the GNU GPL and this license document.
+</li><li>
+Do one of the following:
+
+<ol>
+<li>
+Convey the Minimal Corresponding Source under the terms of this
+License, and the Corresponding Application Code in a form
+suitable for, and under terms that permit, the user to
+recombine or relink the Application with a modified version of
+the Linked Version to produce a modified Combined Work, in the
+manner specified by section 6 of the GNU GPL for conveying
+Corresponding Source.
+</li><li>
+Use a suitable shared library mechanism for linking with the
+Library. A suitable mechanism is one that (a) uses at run time
+a copy of the Library already present on the user's computer
+system, and (b) will operate properly with a modified version
+of the Library that is interface-compatible with the Linked
+Version.
+</li></ol>
+
+</li><li>
+Provide Installation Information, but only if you would otherwise
+be required to provide such information under section 6 of the
+GNU GPL, and only to the extent that such information is
+necessary to install and execute a modified version of the
+Combined Work produced by recombining or relinking the
+Application with a modified version of the Linked Version. (If
+you use option 4d0, the Installation Information must accompany
+the Minimal Corresponding Source and Corresponding Application
+Code. If you use option 4d1, you must provide the Installation
+Information in the manner specified by section 6 of the GNU GPL
+for conveying Corresponding Source.)
+</li></ol>
+
+</li><li> Combined Libraries.
+
+<p>You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+</p>
+<ol>
+<li>
+Accompany the combined library with a copy of the same work based
+on the Library, uncombined with any other library facilities,
+conveyed under the terms of this License.
+</li><li>
+Give prominent notice with the combined library that part of it
+is a work based on the Library, and explaining where to find the
+accompanying uncombined form of the same work.
+</li></ol>
+
+</li><li> Revised Versions of the GNU Lesser General Public License.
+
+<p>The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+</p>
+<p>Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License &ldquo;or any later version&rdquo;
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+</p>
+<p>If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
+</p>
+</li></ol>
+
+<hr size="6">
+<a name="GNU-FDL"></a>
+<a name="SEC69"></a>
+<h2 class="appendixsec"> <a href="libunistring.html#TOC65">A.3 GNU Free Documentation License</a> </h2>
+<p align="center"> Version 1.3, 3 November 2008
+</p>
+
+<table><tr><td>&nbsp;</td><td><pre class="display">Copyright &copy; 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+<a href="http://fsf.org/">http://fsf.org/</a>
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+</pre></td></tr></table>
+
+<ol>
+<li>
+PREAMBLE
+
+<p>The purpose of this License is to make a manual, textbook, or other
+functional and useful document <em>free</em> in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+</p>
+<p>This License is a kind of &ldquo;copyleft&rdquo;, which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+</p>
+<p>We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+</p>
+</li><li>
+APPLICABILITY AND DEFINITIONS
+
+<p>This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The &ldquo;Document&rdquo;, below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as &ldquo;you&rdquo;. You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+</p>
+<p>A &ldquo;Modified Version&rdquo; of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+</p>
+<p>A &ldquo;Secondary Section&rdquo; is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+</p>
+<p>The &ldquo;Invariant Sections&rdquo; are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+</p>
+<p>The &ldquo;Cover Texts&rdquo; are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+</p>
+<p>A &ldquo;Transparent&rdquo; copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not &ldquo;Transparent&rdquo; is called &ldquo;Opaque&rdquo;.
+</p>
+<p>Examples of suitable formats for Transparent copies include plain
+<small>ASCII</small> without markup, Texinfo input format, LaTeX input
+format, <acronym>SGML</acronym> or <acronym>XML</acronym> using a publicly available
+<acronym>DTD</acronym>, and standard-conforming simple <acronym>HTML</acronym>,
+PostScript or <acronym>PDF</acronym> designed for human modification. Examples
+of transparent image formats include <acronym>PNG</acronym>, <acronym>XCF</acronym> and
+<acronym>JPG</acronym>. Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, <acronym>SGML</acronym> or
+<acronym>XML</acronym> for which the <acronym>DTD</acronym> and/or processing tools are
+not generally available, and the machine-generated <acronym>HTML</acronym>,
+PostScript or <acronym>PDF</acronym> produced by some word processors for
+output purposes only.
+</p>
+<p>The &ldquo;Title Page&rdquo; means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, &ldquo;Title Page&rdquo; means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+</p>
+<p>The &ldquo;publisher&rdquo; means any person or entity that distributes copies
+of the Document to the public.
+</p>
+<p>A section &ldquo;Entitled XYZ&rdquo; means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as &ldquo;Acknowledgements&rdquo;,
+&ldquo;Dedications&rdquo;, &ldquo;Endorsements&rdquo;, or &ldquo;History&rdquo;.) To &ldquo;Preserve the Title&rdquo;
+of such a section when you modify the Document means that it remains a
+section &ldquo;Entitled XYZ&rdquo; according to this definition.
+</p>
+<p>The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+</p>
+</li><li>
+VERBATIM COPYING
+
+<p>You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+</p>
+<p>You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+</p>
+</li><li>
+COPYING IN QUANTITY
+
+<p>If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+</p>
+<p>If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+</p>
+<p>If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+</p>
+<p>It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+</p>
+</li><li>
+MODIFICATIONS
+
+<p>You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+</p>
+<ol>
+<li>
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document). You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+</li><li>
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
+</li><li>
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+</li><li>
+Preserve all the copyright notices of the Document.
+
+</li><li>
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+</li><li>
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+</li><li>
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+
+</li><li>
+Include an unaltered copy of this License.
+
+</li><li>
+Preserve the section Entitled &ldquo;History&rdquo;, Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled &ldquo;History&rdquo; in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+</li><li>
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on. These may be placed in the &ldquo;History&rdquo; section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+</li><li>
+For any section Entitled &ldquo;Acknowledgements&rdquo; or &ldquo;Dedications&rdquo;, Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+</li><li>
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles. Section numbers
+or the equivalent are not considered part of the section titles.
+
+</li><li>
+Delete any section Entitled &ldquo;Endorsements&rdquo;. Such a section
+may not be included in the Modified Version.
+
+</li><li>
+Do not retitle any existing section to be Entitled &ldquo;Endorsements&rdquo; or
+to conflict in title with any Invariant Section.
+
+</li><li>
+Preserve any Warranty Disclaimers.
+</li></ol>
+
+<p>If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+</p>
+<p>You may add a section Entitled &ldquo;Endorsements&rdquo;, provided it contains
+nothing but endorsements of your Modified Version by various
+parties&mdash;for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+</p>
+<p>You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+</p>
+<p>The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+</p>
+</li><li>
+COMBINING DOCUMENTS
+
+<p>You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+</p>
+<p>The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+</p>
+<p>In the combination, you must combine any sections Entitled &ldquo;History&rdquo;
+in the various original documents, forming one section Entitled
+&ldquo;History&rdquo;; likewise combine any sections Entitled &ldquo;Acknowledgements&rdquo;,
+and any sections Entitled &ldquo;Dedications&rdquo;. You must delete all
+sections Entitled &ldquo;Endorsements.&rdquo;
+</p>
+</li><li>
+COLLECTIONS OF DOCUMENTS
+
+<p>You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+</p>
+<p>You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+</p>
+</li><li>
+AGGREGATION WITH INDEPENDENT WORKS
+
+<p>A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an &ldquo;aggregate&rdquo; if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+</p>
+<p>If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+</p>
+</li><li>
+TRANSLATION
+
+<p>Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+</p>
+<p>If a section in the Document is Entitled &ldquo;Acknowledgements&rdquo;,
+&ldquo;Dedications&rdquo;, or &ldquo;History&rdquo;, the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+</p>
+</li><li>
+TERMINATION
+
+<p>You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+</p>
+<p>However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+</p>
+<p>Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+</p>
+<p>Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+</p>
+</li><li>
+FUTURE REVISIONS OF THIS LICENSE
+
+<p>The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+<a href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
+</p>
+<p>Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License &ldquo;or any later version&rdquo; applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+</p>
+</li><li>
+RELICENSING
+
+<p>&ldquo;Massive Multiauthor Collaboration Site&rdquo; (or &ldquo;MMC Site&rdquo;) means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works. A
+public wiki that anybody can edit is an example of such a server. A
+&ldquo;Massive Multiauthor Collaboration&rdquo; (or &ldquo;MMC&rdquo;) contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+</p>
+<p>&ldquo;CC-BY-SA&rdquo; means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+</p>
+<p>&ldquo;Incorporate&rdquo; means to publish or republish a Document, in whole or
+in part, as part of another Document.
+</p>
+<p>An MMC is &ldquo;eligible for relicensing&rdquo; if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+</p>
+<p>The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+</p>
+</li></ol>
+
+
+<a name="SEC70"></a>
+<h2 class="heading"> ADDENDUM: How to use this License for your documents </h2>
+
+<p>To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="smallexample"> Copyright (C) <var>year</var> <var>your name</var>.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+</pre></td></tr></table>
+
+<p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the &ldquo;with&hellip;Texts.&rdquo; line with this:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="smallexample"> with the Invariant Sections being <var>list their titles</var>, with
+ the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
+ being <var>list</var>.
+</pre></td></tr></table>
+
+<p>If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+</p>
+<p>If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+</p>
+
+
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC62" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_18.html b/doc/libunistring_18.html
new file mode 100644
index 00000000..8237bf6a
--- /dev/null
+++ b/doc/libunistring_18.html
@@ -0,0 +1,770 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: Index</title>
+
+<meta name="description" content="GNU libunistring: Index">
+<meta name="keywords" content="GNU libunistring: Index">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_17.html#SEC62" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_19.html#INDEX0" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="Index"></a>
+<a name="SEC71"></a>
+<h1 class="unnumbered"> <a href="libunistring.html#TOC66">Index</a> </h1>
+
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#SEC71_0" class="summary-letter"><b>A</b></a>
+ &nbsp;
+<a href="#SEC71_1" class="summary-letter"><b>B</b></a>
+ &nbsp;
+<a href="#SEC71_2" class="summary-letter"><b>C</b></a>
+ &nbsp;
+<a href="#SEC71_3" class="summary-letter"><b>D</b></a>
+ &nbsp;
+<a href="#SEC71_4" class="summary-letter"><b>E</b></a>
+ &nbsp;
+<a href="#SEC71_5" class="summary-letter"><b>F</b></a>
+ &nbsp;
+<a href="#SEC71_6" class="summary-letter"><b>G</b></a>
+ &nbsp;
+<a href="#SEC71_7" class="summary-letter"><b>H</b></a>
+ &nbsp;
+<a href="#SEC71_8" class="summary-letter"><b>I</b></a>
+ &nbsp;
+<a href="#SEC71_9" class="summary-letter"><b>J</b></a>
+ &nbsp;
+<a href="#SEC71_10" class="summary-letter"><b>L</b></a>
+ &nbsp;
+<a href="#SEC71_11" class="summary-letter"><b>M</b></a>
+ &nbsp;
+<a href="#SEC71_12" class="summary-letter"><b>N</b></a>
+ &nbsp;
+<a href="#SEC71_13" class="summary-letter"><b>O</b></a>
+ &nbsp;
+<a href="#SEC71_14" class="summary-letter"><b>P</b></a>
+ &nbsp;
+<a href="#SEC71_15" class="summary-letter"><b>R</b></a>
+ &nbsp;
+<a href="#SEC71_16" class="summary-letter"><b>S</b></a>
+ &nbsp;
+<a href="#SEC71_17" class="summary-letter"><b>T</b></a>
+ &nbsp;
+<a href="#SEC71_18" class="summary-letter"><b>U</b></a>
+ &nbsp;
+<a href="libunistring_19.html#INDEX0_0" class="summary-letter"><b>V</b></a>
+ &nbsp;
+<a href="libunistring_19.html#INDEX0_1" class="summary-letter"><b>W</b></a>
+ &nbsp;
+</td></tr></table>
+<table border="0" class="index-cp">
+<tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_0">A</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_9.html#IDX604">ambiguous width</a></td><td valign="top"><a href="libunistring_9.html#SEC37">9. Display width <code>&lt;uniwidth.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_2.html#IDX14">argument conventions</a></td><td valign="top"><a href="libunistring_2.html#SEC9">2. Conventions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_15.html#SEC59">autoconf macro</a></td><td valign="top"><a href="libunistring_15.html#SEC59">15.4 Autoconf macro</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_1">B</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC25">bidirectional category</a></td><td valign="top"><a href="libunistring_8.html#SEC25">8.3 Bidirectional category</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_16.html#SEC61">bidirectional reordering</a></td><td valign="top"><a href="libunistring_16.html#SEC61">16. More advanced functionality</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC34">block</a></td><td valign="top"><a href="libunistring_8.html#SEC34">8.10 Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_11.html#SEC41">breaks, line</a></td><td valign="top"><a href="libunistring_11.html#SEC41">11. Line breaking <code>&lt;unilbrk.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_10.html#SEC38">breaks, word</a></td><td valign="top"><a href="libunistring_10.html#SEC38">10. Word breaks in strings <code>&lt;uniwbrk.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_15.html#SEC60">bug reports</a></td><td valign="top"><a href="libunistring_15.html#SEC60">15.5 Reporting problems</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_15.html#SEC60">bug tracker</a></td><td valign="top"><a href="libunistring_15.html#SEC60">15.5 Reporting problems</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_2">C</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_1.html#SEC6">C string functions</a></td><td valign="top"><a href="libunistring_1.html#SEC6">1.5 &lsquo;<samp>char *</samp>&rsquo; strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC35">C, programming language</a></td><td valign="top"><a href="libunistring_8.html#SEC35">8.11 ISO C and Java syntax</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC36">C-like API</a></td><td valign="top"><a href="libunistring_8.html#SEC36">8.12 Classifications like in ISO C</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC24">canonical combining class</a></td><td valign="top"><a href="libunistring_8.html#SEC24">8.2 Canonical combining class</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#SEC53">case detection</a></td><td valign="top"><a href="libunistring_13.html#SEC53">13.5 Case detection</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#SEC50">case mappings</a></td><td valign="top"><a href="libunistring_13.html#SEC50">13.2 Case mappings of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX708"><code>casing_prefix_context_t</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX716"><code>casing_suffix_context_t</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_1.html#IDX10">char, type</a></td><td valign="top"><a href="libunistring_1.html#SEC6">1.5 &lsquo;<samp>char *</samp>&rsquo; strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#SEC44">combining, Unicode characters</a></td><td valign="top"><a href="libunistring_12.html#SEC44">12.2 Composition of Unicode characters</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX54">comparing</a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX110">comparing</a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#SEC52">comparing, ignoring case</a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX743">comparing, ignoring case, with collation rules</a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#SEC46">comparing, ignoring normalization</a></td><td valign="top"><a href="libunistring_12.html#SEC46">12.4 Normalizing comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#SEC52">comparing, ignoring normalization and case</a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX745">comparing, ignoring normalization and case, with collation rules</a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX681">comparing, ignoring normalization, with collation rules</a></td><td valign="top"><a href="libunistring_12.html#SEC46">12.4 Normalizing comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX114">comparing, with collation rules</a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX744">comparing, with collation rules, ignoring case</a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX682">comparing, with collation rules, ignoring normalization</a></td><td valign="top"><a href="libunistring_12.html#SEC46">12.4 Normalizing comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX746">comparing, with collation rules, ignoring normalization and case</a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_15.html#IDX771">compiler options</a></td><td valign="top"><a href="libunistring_15.html#SEC57">15.2 Compiler options</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#SEC44">composing, Unicode characters</a></td><td valign="top"><a href="libunistring_12.html#SEC44">12.2 Composition of Unicode characters</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#SEC13">converting</a></td><td valign="top"><a href="libunistring_4.html#SEC13">4.2 Elementary string conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX160">converting</a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX44">copying</a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX91">copying</a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX65">counting</a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_3">D</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#SEC43">decomposing</a></td><td valign="top"><a href="libunistring_12.html#SEC43">12.1 Decomposition of Unicode characters</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_15.html#SEC56">dependencies</a></td><td valign="top"><a href="libunistring_15.html#SEC56">15.1 Installation</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#SEC53">detecting case</a></td><td valign="top"><a href="libunistring_13.html#SEC53">13.5 Case detection</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#SEC15">duplicating</a></td><td valign="top"><a href="libunistring_4.html#SEC15">4.4 Elementary string functions with memory allocation</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX121">duplicating</a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_4">E</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX156"><code>enum iconv_ilseq_handler</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_5">F</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_17.html#SEC69">FDL, GNU Free Documentation License</a></td><td valign="top"><a href="libunistring_17.html#SEC69">A.3 GNU Free Documentation License</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#SEC18">formatted output</a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_9.html#IDX607">fullwidth</a></td><td valign="top"><a href="libunistring_9.html#SEC37">9. Display width <code>&lt;uniwidth.h&gt;</code></a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_6">G</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC21">general category</a></td><td valign="top"><a href="libunistring_8.html#SEC21">8.1 General category</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_15.html#IDX774"><code>gl_LIBUNISTRING</code></a></td><td valign="top"><a href="libunistring_15.html#SEC59">15.4 Autoconf macro</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_17.html#SEC63">GPL, GNU General Public License</a></td><td valign="top"><a href="libunistring_17.html#SEC63">A.1 GNU GENERAL PUBLIC LICENSE</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_7">H</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_9.html#IDX606">halfwidth</a></td><td valign="top"><a href="libunistring_9.html#SEC37">9. Display width <code>&lt;uniwidth.h&gt;</code></a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_8">I</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC35">identifiers</a></td><td valign="top"><a href="libunistring_8.html#SEC35">8.11 ISO C and Java syntax</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_15.html#IDX770">installation</a></td><td valign="top"><a href="libunistring_15.html#SEC56">15.1 Installation</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_1.html#SEC3">internationalization</a></td><td valign="top"><a href="libunistring_1.html#SEC3">1.2 Unicode and Internationalization</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#SEC14">iterating</a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX75">iterating</a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_9">J</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC35">Java, programming language</a></td><td valign="top"><a href="libunistring_8.html#SEC35">8.11 ISO C and Java syntax</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_10">L</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_17.html#SEC68">LGPL, GNU Lesser General Public License</a></td><td valign="top"><a href="libunistring_17.html#SEC68">A.2 GNU LESSER GENERAL PUBLIC LICENSE</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_17.html#SEC69">License, GNU FDL</a></td><td valign="top"><a href="libunistring_17.html#SEC69">A.3 GNU Free Documentation License</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_17.html#SEC63">License, GNU GPL</a></td><td valign="top"><a href="libunistring_17.html#SEC63">A.1 GNU GENERAL PUBLIC LICENSE</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_17.html#SEC68">License, GNU LGPL</a></td><td valign="top"><a href="libunistring_17.html#SEC68">A.2 GNU LESSER GENERAL PUBLIC LICENSE</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_17.html#SEC62">Licenses</a></td><td valign="top"><a href="libunistring_17.html#SEC62">A. Licenses</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_11.html#SEC41">line breaks</a></td><td valign="top"><a href="libunistring_11.html#SEC41">11. Line breaking <code>&lt;unilbrk.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_1.html#SEC4">locale</a></td><td valign="top"><a href="libunistring_1.html#SEC4">1.3 Locale encodings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_1.html#IDX7">locale categories</a></td><td valign="top"><a href="libunistring_1.html#SEC4">1.3 Locale encodings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_1.html#IDX8">locale encoding</a></td><td valign="top"><a href="libunistring_1.html#SEC4">1.3 Locale encodings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX154">locale encoding</a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX697">locale language</a></td><td valign="top"><a href="libunistring_13.html#SEC50">13.2 Case mappings of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_1.html#IDX9">locale, multibyte</a></td><td valign="top"><a href="libunistring_1.html#SEC6">1.5 &lsquo;<samp>char *</samp>&rsquo; strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX155"><code>locale_charset</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#SEC50">lowercasing</a></td><td valign="top"><a href="libunistring_13.html#SEC50">13.2 Case mappings of strings</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_11">M</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_15.html#SEC60">mailing list</a></td><td valign="top"><a href="libunistring_15.html#SEC60">15.5 Reporting problems</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC29">mirroring, of Unicode character</a></td><td valign="top"><a href="libunistring_8.html#SEC29">8.7 Mirrored character</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_12">N</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#SEC42">normal forms</a></td><td valign="top"><a href="libunistring_12.html#SEC42">12. Normalization forms (composition and decomposition) <code>&lt;uninorm.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#SEC42">normalizing</a></td><td valign="top"><a href="libunistring_12.html#SEC42">12. Normalization forms (composition and decomposition) <code>&lt;uninorm.h&gt;</code></a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_13">O</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#SEC18">output, formatted</a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_14">P</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC30">properties, of Unicode character</a></td><td valign="top"><a href="libunistring_8.html#SEC30">8.8 Properties</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_15">R</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_14.html#SEC54">regular expression</a></td><td valign="top"><a href="libunistring_14.html#SEC54">14. Regular expressions <code>&lt;uniregex.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_16.html#IDX775">rendering</a></td><td valign="top"><a href="libunistring_16.html#SEC61">16. More advanced functionality</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_2.html#IDX15">return value conventions</a></td><td valign="top"><a href="libunistring_2.html#SEC9">2. Conventions</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_16">S</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC33">scripts</a></td><td valign="top"><a href="libunistring_8.html#SEC33">8.9 Scripts</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX61">searching, for a character</a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX125">searching, for a character</a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX141">searching, for a substring</a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#SEC47">stream, normalizing a</a></td><td valign="top"><a href="libunistring_12.html#SEC47">12.5 Normalization of streams of Unicode characters</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX689"><code>struct uninorm_filter</code></a></td><td valign="top"><a href="libunistring_12.html#SEC47">12.5 Normalization of streams of Unicode characters</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_17">T</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#SEC50">titlecasing</a></td><td valign="top"><a href="libunistring_13.html#SEC50">13.2 Case mappings of strings</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC71_18">U</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX206"><code>u16_asnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX205"><code>u16_asprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX740"><code>u16_casecmp</code></a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX752"><code>u16_casecoll</code></a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX734"><code>u16_casefold</code></a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX748"><code>u16_casexfrm</code></a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX711"><code>u16_casing_prefix_context</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX714"><code>u16_casing_prefixes_context</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX719"><code>u16_casing_suffix_context</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX722"><code>u16_casing_suffixes_context</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX21"><code>u16_check</code></a></td><td valign="top"><a href="libunistring_4.html#SEC12">4.1 Elementary string checks</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX63"><code>u16_chr</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX56"><code>u16_cmp</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX59"><code>u16_cmp2</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX162"><code>u16_conv_from_encoding</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX165"><code>u16_conv_to_encoding</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX46"><code>u16_cpy</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX70"><code>u16_cpy_alloc</code></a></td><td valign="top"><a href="libunistring_4.html#SEC15">4.4 Elementary string functions with memory allocation</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX737"><code>u16_ct_casefold</code></a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX728"><code>u16_ct_tolower</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX731"><code>u16_ct_totitle</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX725"><code>u16_ct_toupper</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX149"><code>u16_endswith</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX768"><code>u16_is_cased</code></a></td><td valign="top"><a href="libunistring_13.html#SEC53">13.5 Case detection</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX765"><code>u16_is_casefolded</code></a></td><td valign="top"><a href="libunistring_13.html#SEC53">13.5 Case detection</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX759"><code>u16_is_lowercase</code></a></td><td valign="top"><a href="libunistring_13.html#SEC53">13.5 Case detection</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX762"><code>u16_is_titlecase</code></a></td><td valign="top"><a href="libunistring_13.html#SEC53">13.5 Case detection</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX756"><code>u16_is_uppercase</code></a></td><td valign="top"><a href="libunistring_13.html#SEC53">13.5 Case detection</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX30"><code>u16_mblen</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX67"><code>u16_mbsnlen</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX36"><code>u16_mbtouc</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX33"><code>u16_mbtouc_unsafe</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX39"><code>u16_mbtoucr</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX49"><code>u16_move</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX80"><code>u16_next</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX676"><code>u16_normalize</code></a></td><td valign="top"><a href="libunistring_12.html#SEC45">12.3 Normalization of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX679"><code>u16_normcmp</code></a></td><td valign="top"><a href="libunistring_12.html#SEC46">12.4 Normalizing comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX687"><code>u16_normcoll</code></a></td><td valign="top"><a href="libunistring_12.html#SEC46">12.4 Normalizing comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX684"><code>u16_normxfrm</code></a></td><td valign="top"><a href="libunistring_12.html#SEC46">12.4 Normalizing comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_11.html#IDX639"><code>u16_possible_linebreaks</code></a></td><td valign="top"><a href="libunistring_11.html#SEC41">11. Line breaking <code>&lt;unilbrk.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX83"><code>u16_prev</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX52"><code>u16_set</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX204"><code>u16_snprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX203"><code>u16_sprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX146"><code>u16_startswith</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX96"><code>u16_stpcpy</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX102"><code>u16_stpncpy</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX105"><code>u16_strcat</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX127"><code>u16_strchr</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX112"><code>u16_strcmp</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX116"><code>u16_strcoll</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX168"><code>u16_strconv_from_encoding</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX174"><code>u16_strconv_from_locale</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX171"><code>u16_strconv_to_encoding</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX177"><code>u16_strconv_to_locale</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX93"><code>u16_strcpy</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX133"><code>u16_strcspn</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX123"><code>u16_strdup</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX86"><code>u16_strlen</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX73"><code>u16_strmblen</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX77"><code>u16_strmbtouc</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX108"><code>u16_strncat</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX119"><code>u16_strncmp</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX99"><code>u16_strncpy</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX89"><code>u16_strnlen</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX139"><code>u16_strpbrk</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX130"><code>u16_strrchr</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX136"><code>u16_strspn</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX143"><code>u16_strstr</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX152"><code>u16_strtok</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_9.html#IDX613"><code>u16_strwidth</code></a></td><td valign="top"><a href="libunistring_9.html#SEC37">9. Display width <code>&lt;uniwidth.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX26"><code>u16_to_u32</code></a></td><td valign="top"><a href="libunistring_4.html#SEC13">4.2 Elementary string conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX25"><code>u16_to_u8</code></a></td><td valign="top"><a href="libunistring_4.html#SEC13">4.2 Elementary string conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX703"><code>u16_tolower</code></a></td><td valign="top"><a href="libunistring_13.html#SEC50">13.2 Case mappings of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX706"><code>u16_totitle</code></a></td><td valign="top"><a href="libunistring_13.html#SEC50">13.2 Case mappings of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX700"><code>u16_toupper</code></a></td><td valign="top"><a href="libunistring_13.html#SEC50">13.2 Case mappings of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX214"><code>u16_u16_asnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX213"><code>u16_u16_asprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX212"><code>u16_u16_snprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX211"><code>u16_u16_sprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX218"><code>u16_u16_vasnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX217"><code>u16_u16_vasprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX216"><code>u16_u16_vsnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX215"><code>u16_u16_vsprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX42"><code>u16_uctomb</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX210"><code>u16_vasnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX209"><code>u16_vasprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX208"><code>u16_vsnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX207"><code>u16_vsprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_9.html#IDX610"><code>u16_width</code></a></td><td valign="top"><a href="libunistring_9.html#SEC37">9. Display width <code>&lt;uniwidth.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_11.html#IDX643"><code>u16_width_linebreaks</code></a></td><td valign="top"><a href="libunistring_11.html#SEC41">11. Line breaking <code>&lt;unilbrk.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_10.html#IDX616"><code>u16_wordbreaks</code></a></td><td valign="top"><a href="libunistring_10.html#SEC39">10.1 Word breaks in a string</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX222"><code>u32_asnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX221"><code>u32_asprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX741"><code>u32_casecmp</code></a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX753"><code>u32_casecoll</code></a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX735"><code>u32_casefold</code></a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX749"><code>u32_casexfrm</code></a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX712"><code>u32_casing_prefix_context</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX715"><code>u32_casing_prefixes_context</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX720"><code>u32_casing_suffix_context</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX723"><code>u32_casing_suffixes_context</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX22"><code>u32_check</code></a></td><td valign="top"><a href="libunistring_4.html#SEC12">4.1 Elementary string checks</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX64"><code>u32_chr</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX57"><code>u32_cmp</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX60"><code>u32_cmp2</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX163"><code>u32_conv_from_encoding</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX166"><code>u32_conv_to_encoding</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX47"><code>u32_cpy</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX71"><code>u32_cpy_alloc</code></a></td><td valign="top"><a href="libunistring_4.html#SEC15">4.4 Elementary string functions with memory allocation</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX738"><code>u32_ct_casefold</code></a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX729"><code>u32_ct_tolower</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX732"><code>u32_ct_totitle</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX726"><code>u32_ct_toupper</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX150"><code>u32_endswith</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX769"><code>u32_is_cased</code></a></td><td valign="top"><a href="libunistring_13.html#SEC53">13.5 Case detection</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX766"><code>u32_is_casefolded</code></a></td><td valign="top"><a href="libunistring_13.html#SEC53">13.5 Case detection</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX760"><code>u32_is_lowercase</code></a></td><td valign="top"><a href="libunistring_13.html#SEC53">13.5 Case detection</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX763"><code>u32_is_titlecase</code></a></td><td valign="top"><a href="libunistring_13.html#SEC53">13.5 Case detection</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX757"><code>u32_is_uppercase</code></a></td><td valign="top"><a href="libunistring_13.html#SEC53">13.5 Case detection</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX31"><code>u32_mblen</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX68"><code>u32_mbsnlen</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX37"><code>u32_mbtouc</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX34"><code>u32_mbtouc_unsafe</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX40"><code>u32_mbtoucr</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX50"><code>u32_move</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX81"><code>u32_next</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX677"><code>u32_normalize</code></a></td><td valign="top"><a href="libunistring_12.html#SEC45">12.3 Normalization of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX680"><code>u32_normcmp</code></a></td><td valign="top"><a href="libunistring_12.html#SEC46">12.4 Normalizing comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX688"><code>u32_normcoll</code></a></td><td valign="top"><a href="libunistring_12.html#SEC46">12.4 Normalizing comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX685"><code>u32_normxfrm</code></a></td><td valign="top"><a href="libunistring_12.html#SEC46">12.4 Normalizing comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_11.html#IDX640"><code>u32_possible_linebreaks</code></a></td><td valign="top"><a href="libunistring_11.html#SEC41">11. Line breaking <code>&lt;unilbrk.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX84"><code>u32_prev</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX53"><code>u32_set</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX220"><code>u32_snprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX219"><code>u32_sprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX147"><code>u32_startswith</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX97"><code>u32_stpcpy</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX103"><code>u32_stpncpy</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX106"><code>u32_strcat</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX128"><code>u32_strchr</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX113"><code>u32_strcmp</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX117"><code>u32_strcoll</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX169"><code>u32_strconv_from_encoding</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX175"><code>u32_strconv_from_locale</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX172"><code>u32_strconv_to_encoding</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX178"><code>u32_strconv_to_locale</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX94"><code>u32_strcpy</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX134"><code>u32_strcspn</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX124"><code>u32_strdup</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX87"><code>u32_strlen</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX74"><code>u32_strmblen</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX78"><code>u32_strmbtouc</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX109"><code>u32_strncat</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX120"><code>u32_strncmp</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX100"><code>u32_strncpy</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX90"><code>u32_strnlen</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX140"><code>u32_strpbrk</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX131"><code>u32_strrchr</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX137"><code>u32_strspn</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX144"><code>u32_strstr</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX153"><code>u32_strtok</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_9.html#IDX614"><code>u32_strwidth</code></a></td><td valign="top"><a href="libunistring_9.html#SEC37">9. Display width <code>&lt;uniwidth.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX28"><code>u32_to_u16</code></a></td><td valign="top"><a href="libunistring_4.html#SEC13">4.2 Elementary string conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX27"><code>u32_to_u8</code></a></td><td valign="top"><a href="libunistring_4.html#SEC13">4.2 Elementary string conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX704"><code>u32_tolower</code></a></td><td valign="top"><a href="libunistring_13.html#SEC50">13.2 Case mappings of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX707"><code>u32_totitle</code></a></td><td valign="top"><a href="libunistring_13.html#SEC50">13.2 Case mappings of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX701"><code>u32_toupper</code></a></td><td valign="top"><a href="libunistring_13.html#SEC50">13.2 Case mappings of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX230"><code>u32_u32_asnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX229"><code>u32_u32_asprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX228"><code>u32_u32_snprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX227"><code>u32_u32_sprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX234"><code>u32_u32_vasnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX233"><code>u32_u32_vasprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX232"><code>u32_u32_vsnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX231"><code>u32_u32_vsprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX43"><code>u32_uctomb</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX226"><code>u32_vasnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX225"><code>u32_vasprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX224"><code>u32_vsnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX223"><code>u32_vsprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_9.html#IDX611"><code>u32_width</code></a></td><td valign="top"><a href="libunistring_9.html#SEC37">9. Display width <code>&lt;uniwidth.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_11.html#IDX644"><code>u32_width_linebreaks</code></a></td><td valign="top"><a href="libunistring_11.html#SEC41">11. Line breaking <code>&lt;unilbrk.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_10.html#IDX617"><code>u32_wordbreaks</code></a></td><td valign="top"><a href="libunistring_10.html#SEC39">10.1 Word breaks in a string</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX190"><code>u8_asnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX189"><code>u8_asprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX739"><code>u8_casecmp</code></a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX751"><code>u8_casecoll</code></a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX733"><code>u8_casefold</code></a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX747"><code>u8_casexfrm</code></a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX710"><code>u8_casing_prefix_context</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX713"><code>u8_casing_prefixes_context</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX718"><code>u8_casing_suffix_context</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX721"><code>u8_casing_suffixes_context</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX20"><code>u8_check</code></a></td><td valign="top"><a href="libunistring_4.html#SEC12">4.1 Elementary string checks</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX62"><code>u8_chr</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX55"><code>u8_cmp</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX58"><code>u8_cmp2</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX161"><code>u8_conv_from_encoding</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX164"><code>u8_conv_to_encoding</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX45"><code>u8_cpy</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX69"><code>u8_cpy_alloc</code></a></td><td valign="top"><a href="libunistring_4.html#SEC15">4.4 Elementary string functions with memory allocation</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX736"><code>u8_ct_casefold</code></a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX727"><code>u8_ct_tolower</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX730"><code>u8_ct_totitle</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX724"><code>u8_ct_toupper</code></a></td><td valign="top"><a href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX148"><code>u8_endswith</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX767"><code>u8_is_cased</code></a></td><td valign="top"><a href="libunistring_13.html#SEC53">13.5 Case detection</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX764"><code>u8_is_casefolded</code></a></td><td valign="top"><a href="libunistring_13.html#SEC53">13.5 Case detection</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX758"><code>u8_is_lowercase</code></a></td><td valign="top"><a href="libunistring_13.html#SEC53">13.5 Case detection</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX761"><code>u8_is_titlecase</code></a></td><td valign="top"><a href="libunistring_13.html#SEC53">13.5 Case detection</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX755"><code>u8_is_uppercase</code></a></td><td valign="top"><a href="libunistring_13.html#SEC53">13.5 Case detection</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX29"><code>u8_mblen</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX66"><code>u8_mbsnlen</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX35"><code>u8_mbtouc</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX32"><code>u8_mbtouc_unsafe</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX38"><code>u8_mbtoucr</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX48"><code>u8_move</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX79"><code>u8_next</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX675"><code>u8_normalize</code></a></td><td valign="top"><a href="libunistring_12.html#SEC45">12.3 Normalization of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX678"><code>u8_normcmp</code></a></td><td valign="top"><a href="libunistring_12.html#SEC46">12.4 Normalizing comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX686"><code>u8_normcoll</code></a></td><td valign="top"><a href="libunistring_12.html#SEC46">12.4 Normalizing comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX683"><code>u8_normxfrm</code></a></td><td valign="top"><a href="libunistring_12.html#SEC46">12.4 Normalizing comparisons</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_11.html#IDX638"><code>u8_possible_linebreaks</code></a></td><td valign="top"><a href="libunistring_11.html#SEC41">11. Line breaking <code>&lt;unilbrk.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX82"><code>u8_prev</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX51"><code>u8_set</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX188"><code>u8_snprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX187"><code>u8_sprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX145"><code>u8_startswith</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX95"><code>u8_stpcpy</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX101"><code>u8_stpncpy</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX104"><code>u8_strcat</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX126"><code>u8_strchr</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX111"><code>u8_strcmp</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX115"><code>u8_strcoll</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX167"><code>u8_strconv_from_encoding</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX173"><code>u8_strconv_from_locale</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX170"><code>u8_strconv_to_encoding</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_5.html#IDX176"><code>u8_strconv_to_locale</code></a></td><td valign="top"><a href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX92"><code>u8_strcpy</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX132"><code>u8_strcspn</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX122"><code>u8_strdup</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX85"><code>u8_strlen</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX72"><code>u8_strmblen</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX76"><code>u8_strmbtouc</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX107"><code>u8_strncat</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX118"><code>u8_strncmp</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX98"><code>u8_strncpy</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX88"><code>u8_strnlen</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX138"><code>u8_strpbrk</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX129"><code>u8_strrchr</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX135"><code>u8_strspn</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX142"><code>u8_strstr</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX151"><code>u8_strtok</code></a></td><td valign="top"><a href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_9.html#IDX612"><code>u8_strwidth</code></a></td><td valign="top"><a href="libunistring_9.html#SEC37">9. Display width <code>&lt;uniwidth.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX23"><code>u8_to_u16</code></a></td><td valign="top"><a href="libunistring_4.html#SEC13">4.2 Elementary string conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX24"><code>u8_to_u32</code></a></td><td valign="top"><a href="libunistring_4.html#SEC13">4.2 Elementary string conversions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX702"><code>u8_tolower</code></a></td><td valign="top"><a href="libunistring_13.html#SEC50">13.2 Case mappings of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX705"><code>u8_totitle</code></a></td><td valign="top"><a href="libunistring_13.html#SEC50">13.2 Case mappings of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX699"><code>u8_toupper</code></a></td><td valign="top"><a href="libunistring_13.html#SEC50">13.2 Case mappings of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX198"><code>u8_u8_asnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX197"><code>u8_u8_asprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX196"><code>u8_u8_snprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX195"><code>u8_u8_sprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX202"><code>u8_u8_vasnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX201"><code>u8_u8_vasprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX200"><code>u8_u8_vsnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX199"><code>u8_u8_vsprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#IDX41"><code>u8_uctomb</code></a></td><td valign="top"><a href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX194"><code>u8_vasnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX193"><code>u8_vasprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX192"><code>u8_vsnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX191"><code>u8_vsprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_9.html#IDX609"><code>u8_width</code></a></td><td valign="top"><a href="libunistring_9.html#SEC37">9. Display width <code>&lt;uniwidth.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_11.html#IDX642"><code>u8_width_linebreaks</code></a></td><td valign="top"><a href="libunistring_11.html#SEC41">11. Line breaking <code>&lt;unilbrk.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_10.html#IDX615"><code>u8_wordbreaks</code></a></td><td valign="top"><a href="libunistring_10.html#SEC39">10.1 Word breaks in a string</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX581"><code>uc_all_blocks</code></a></td><td valign="top"><a href="libunistring_8.html#SEC34">8.10 Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX576"><code>uc_all_scripts</code></a></td><td valign="top"><a href="libunistring_8.html#SEC33">8.9 Scripts</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX402"><code>uc_bidi_category</code></a></td><td valign="top"><a href="libunistring_8.html#SEC25">8.3 Bidirectional category</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX401"><code>uc_bidi_category_byname</code></a></td><td valign="top"><a href="libunistring_8.html#SEC25">8.3 Bidirectional category</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX400"><code>uc_bidi_category_name</code></a></td><td valign="top"><a href="libunistring_8.html#SEC25">8.3 Bidirectional category</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX579"><code>uc_block</code></a></td><td valign="top"><a href="libunistring_8.html#SEC34">8.10 Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX577"><code>uc_block_t</code></a></td><td valign="top"><a href="libunistring_8.html#SEC34">8.10 Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX589"><code>uc_c_ident_category</code></a></td><td valign="top"><a href="libunistring_8.html#SEC35">8.11 ISO C and Java syntax</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX665"><code>uc_canonical_decomposition</code></a></td><td valign="top"><a href="libunistring_12.html#SEC43">12.1 Decomposition of Unicode characters</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX380"><code>uc_combining_class</code></a></td><td valign="top"><a href="libunistring_8.html#SEC24">8.2 Canonical combining class</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX666"><code>uc_composition</code></a></td><td valign="top"><a href="libunistring_12.html#SEC44">12.2 Composition of Unicode characters</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX404"><code>uc_decimal_value</code></a></td><td valign="top"><a href="libunistring_8.html#SEC26">8.4 Decimal digit value</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX664"><code>uc_decomposition</code></a></td><td valign="top"><a href="libunistring_12.html#SEC43">12.1 Decomposition of Unicode characters</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX405"><code>uc_digit_value</code></a></td><td valign="top"><a href="libunistring_8.html#SEC27">8.5 Digit value</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX406"><code>uc_fraction_t</code></a></td><td valign="top"><a href="libunistring_8.html#SEC28">8.6 Numeric value</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX321"><code>uc_general_category</code></a></td><td valign="top"><a href="libunistring_8.html#SEC22">8.1.1 The object oriented API for general category</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX317"><code>uc_general_category_and</code></a></td><td valign="top"><a href="libunistring_8.html#SEC22">8.1.1 The object oriented API for general category</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX318"><code>uc_general_category_and_not</code></a></td><td valign="top"><a href="libunistring_8.html#SEC22">8.1.1 The object oriented API for general category</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX320"><code>uc_general_category_byname</code></a></td><td valign="top"><a href="libunistring_8.html#SEC22">8.1.1 The object oriented API for general category</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX319"><code>uc_general_category_name</code></a></td><td valign="top"><a href="libunistring_8.html#SEC22">8.1.1 The object oriented API for general category</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX316"><code>uc_general_category_or</code></a></td><td valign="top"><a href="libunistring_8.html#SEC22">8.1.1 The object oriented API for general category</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX241"><code>uc_general_category_t</code></a></td><td valign="top"><a href="libunistring_8.html#SEC22">8.1.1 The object oriented API for general category</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX592"><code>uc_is_alnum</code></a></td><td valign="top"><a href="libunistring_8.html#SEC36">8.12 Classifications like in ISO C</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX593"><code>uc_is_alpha</code></a></td><td valign="top"><a href="libunistring_8.html#SEC36">8.12 Classifications like in ISO C</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX403"><code>uc_is_bidi_category</code></a></td><td valign="top"><a href="libunistring_8.html#SEC25">8.3 Bidirectional category</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX603"><code>uc_is_blank</code></a></td><td valign="top"><a href="libunistring_8.html#SEC36">8.12 Classifications like in ISO C</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX580"><code>uc_is_block</code></a></td><td valign="top"><a href="libunistring_8.html#SEC34">8.10 Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX582"><code>uc_is_c_whitespace</code></a></td><td valign="top"><a href="libunistring_8.html#SEC35">8.11 ISO C and Java syntax</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX594"><code>uc_is_cntrl</code></a></td><td valign="top"><a href="libunistring_8.html#SEC36">8.12 Classifications like in ISO C</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX595"><code>uc_is_digit</code></a></td><td valign="top"><a href="libunistring_8.html#SEC36">8.12 Classifications like in ISO C</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX322"><code>uc_is_general_category</code></a></td><td valign="top"><a href="libunistring_8.html#SEC22">8.1.1 The object oriented API for general category</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX360"><code>uc_is_general_category_withtable</code></a></td><td valign="top"><a href="libunistring_8.html#SEC23">8.1.2 The bit mask API for general category</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX596"><code>uc_is_graph</code></a></td><td valign="top"><a href="libunistring_8.html#SEC36">8.12 Classifications like in ISO C</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX583"><code>uc_is_java_whitespace</code></a></td><td valign="top"><a href="libunistring_8.html#SEC35">8.11 ISO C and Java syntax</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX597"><code>uc_is_lower</code></a></td><td valign="top"><a href="libunistring_8.html#SEC36">8.12 Classifications like in ISO C</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX598"><code>uc_is_print</code></a></td><td valign="top"><a href="libunistring_8.html#SEC36">8.12 Classifications like in ISO C</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX491"><code>uc_is_property</code></a></td><td valign="top"><a href="libunistring_8.html#SEC31">8.8.1 Properties as objects &ndash; the object oriented API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX493"><code>uc_is_property_alphabetic</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX540"><code>uc_is_property_ascii_hex_digit</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX529"><code>uc_is_property_bidi_arabic_digit</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX525"><code>uc_is_property_bidi_arabic_right_to_left</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX531"><code>uc_is_property_bidi_block_separator</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX535"><code>uc_is_property_bidi_boundary_neutral</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX530"><code>uc_is_property_bidi_common_separator</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX522"><code>uc_is_property_bidi_control</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX537"><code>uc_is_property_bidi_embedding_or_override</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX527"><code>uc_is_property_bidi_eur_num_separator</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX528"><code>uc_is_property_bidi_eur_num_terminator</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX526"><code>uc_is_property_bidi_european_digit</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX524"><code>uc_is_property_bidi_hebrew_right_to_left</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX523"><code>uc_is_property_bidi_left_to_right</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX534"><code>uc_is_property_bidi_non_spacing_mark</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX538"><code>uc_is_property_bidi_other_neutral</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX536"><code>uc_is_property_bidi_pdf</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX532"><code>uc_is_property_bidi_segment_separator</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX533"><code>uc_is_property_bidi_whitespace</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX564"><code>uc_is_property_combining</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX565"><code>uc_is_property_composite</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX559"><code>uc_is_property_currency_symbol</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX551"><code>uc_is_property_dash</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX566"><code>uc_is_property_decimal_digit</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX496"><code>uc_is_property_default_ignorable_code_point</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX498"><code>uc_is_property_deprecated</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX568"><code>uc_is_property_diacritic</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX569"><code>uc_is_property_extender</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX550"><code>uc_is_property_format_control</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX518"><code>uc_is_property_grapheme_base</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX519"><code>uc_is_property_grapheme_extend</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX521"><code>uc_is_property_grapheme_link</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX539"><code>uc_is_property_hex_digit</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX552"><code>uc_is_property_hyphen</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX511"><code>uc_is_property_id_continue</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX509"><code>uc_is_property_id_start</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX541"><code>uc_is_property_ideographic</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX544"><code>uc_is_property_ids_binary_operator</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX545"><code>uc_is_property_ids_trinary_operator</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX570"><code>uc_is_property_ignorable_control</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX549"><code>uc_is_property_iso_control</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX517"><code>uc_is_property_join_control</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX563"><code>uc_is_property_left_of_pair</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX554"><code>uc_is_property_line_separator</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX499"><code>uc_is_property_logical_order_exception</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX505"><code>uc_is_property_lowercase</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX560"><code>uc_is_property_math</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX548"><code>uc_is_property_non_break</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX495"><code>uc_is_property_not_a_character</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX567"><code>uc_is_property_numeric</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX494"><code>uc_is_property_other_alphabetic</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX497"><code>uc_is_property_other_default_ignorable_code_point</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX520"><code>uc_is_property_other_grapheme_extend</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX512"><code>uc_is_property_other_id_continue</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX510"><code>uc_is_property_other_id_start</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX506"><code>uc_is_property_other_lowercase</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX561"><code>uc_is_property_other_math</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX504"><code>uc_is_property_other_uppercase</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX562"><code>uc_is_property_paired_punctuation</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX555"><code>uc_is_property_paragraph_separator</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX516"><code>uc_is_property_pattern_syntax</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX515"><code>uc_is_property_pattern_white_space</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX501"><code>uc_is_property_private_use</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX553"><code>uc_is_property_punctuation</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX556"><code>uc_is_property_quotation_mark</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX543"><code>uc_is_property_radical</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX557"><code>uc_is_property_sentence_terminal</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX508"><code>uc_is_property_soft_dotted</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX547"><code>uc_is_property_space</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX558"><code>uc_is_property_terminal_punctuation</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX507"><code>uc_is_property_titlecase</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX502"><code>uc_is_property_unassigned_code_value</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX542"><code>uc_is_property_unified_ideograph</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX503"><code>uc_is_property_uppercase</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX500"><code>uc_is_property_variation_selector</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX492"><code>uc_is_property_white_space</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX514"><code>uc_is_property_xid_continue</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX513"><code>uc_is_property_xid_start</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX546"><code>uc_is_property_zero_width</code></a></td><td valign="top"><a href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX599"><code>uc_is_punct</code></a></td><td valign="top"><a href="libunistring_8.html#SEC36">8.12 Classifications like in ISO C</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX575"><code>uc_is_script</code></a></td><td valign="top"><a href="libunistring_8.html#SEC33">8.9 Scripts</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX600"><code>uc_is_space</code></a></td><td valign="top"><a href="libunistring_8.html#SEC36">8.12 Classifications like in ISO C</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX601"><code>uc_is_upper</code></a></td><td valign="top"><a href="libunistring_8.html#SEC36">8.12 Classifications like in ISO C</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX602"><code>uc_is_xdigit</code></a></td><td valign="top"><a href="libunistring_8.html#SEC36">8.12 Classifications like in ISO C</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX591"><code>uc_java_ident_category</code></a></td><td valign="top"><a href="libunistring_8.html#SEC35">8.11 ISO C and Java syntax</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX698"><code>uc_locale_language</code></a></td><td valign="top"><a href="libunistring_13.html#SEC50">13.2 Case mappings of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX408"><code>uc_mirror_char</code></a></td><td valign="top"><a href="libunistring_8.html#SEC29">8.7 Mirrored character</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX407"><code>uc_numeric_value</code></a></td><td valign="top"><a href="libunistring_8.html#SEC28">8.6 Numeric value</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX489"><code>uc_property_byname</code></a></td><td valign="top"><a href="libunistring_8.html#SEC31">8.8.1 Properties as objects &ndash; the object oriented API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX490"><code>uc_property_is_valid</code></a></td><td valign="top"><a href="libunistring_8.html#SEC31">8.8.1 Properties as objects &ndash; the object oriented API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX409"><code>uc_property_t</code></a></td><td valign="top"><a href="libunistring_8.html#SEC31">8.8.1 Properties as objects &ndash; the object oriented API</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX573"><code>uc_script</code></a></td><td valign="top"><a href="libunistring_8.html#SEC33">8.9 Scripts</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX574"><code>uc_script_byname</code></a></td><td valign="top"><a href="libunistring_8.html#SEC33">8.9 Scripts</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX571"><code>uc_script_t</code></a></td><td valign="top"><a href="libunistring_8.html#SEC33">8.9 Scripts</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX695"><code>uc_tolower</code></a></td><td valign="top"><a href="libunistring_13.html#SEC49">13.1 Case mappings of characters</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX696"><code>uc_totitle</code></a></td><td valign="top"><a href="libunistring_13.html#SEC49">13.1 Case mappings of characters</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX694"><code>uc_toupper</code></a></td><td valign="top"><a href="libunistring_13.html#SEC49">13.1 Case mappings of characters</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_9.html#IDX608"><code>uc_width</code></a></td><td valign="top"><a href="libunistring_9.html#SEC37">9. Display width <code>&lt;uniwidth.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_10.html#IDX632"><code>uc_wordbreak_property</code></a></td><td valign="top"><a href="libunistring_10.html#SEC40">10.2 Word break property</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_1.html#IDX6">UCS-4</a></td><td valign="top"><a href="libunistring_1.html#SEC2">1.1 Unicode</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_3.html#IDX19"><code>ucs4_t</code></a></td><td valign="top"><a href="libunistring_3.html#SEC10">3. Elementary types <code>&lt;unitypes.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_3.html#IDX17"><code>uint16_t</code></a></td><td valign="top"><a href="libunistring_3.html#SEC10">3. Elementary types <code>&lt;unitypes.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_3.html#IDX18"><code>uint32_t</code></a></td><td valign="top"><a href="libunistring_3.html#SEC10">3. Elementary types <code>&lt;unitypes.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_3.html#IDX16"><code>uint8_t</code></a></td><td valign="top"><a href="libunistring_3.html#SEC10">3. Elementary types <code>&lt;unitypes.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX182"><code>ulc_asnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX181"><code>ulc_asprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX742"><code>ulc_casecmp</code></a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX754"><code>ulc_casecoll</code></a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#IDX750"><code>ulc_casexfrm</code></a></td><td valign="top"><a href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX235"><code>ulc_fprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_11.html#IDX641"><code>ulc_possible_linebreaks</code></a></td><td valign="top"><a href="libunistring_11.html#SEC41">11. Line breaking <code>&lt;unilbrk.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX180"><code>ulc_snprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX179"><code>ulc_sprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX186"><code>ulc_vasnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX185"><code>ulc_vasprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX236"><code>ulc_vfprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX184"><code>ulc_vsnprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_6.html#IDX183"><code>ulc_vsprintf</code></a></td><td valign="top"><a href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_11.html#IDX645"><code>ulc_width_linebreaks</code></a></td><td valign="top"><a href="libunistring_11.html#SEC41">11. Line breaking <code>&lt;unilbrk.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_10.html#IDX618"><code>ulc_wordbreaks</code></a></td><td valign="top"><a href="libunistring_10.html#SEC39">10.1 Word breaks in a string</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_1.html#SEC2">Unicode</a></td><td valign="top"><a href="libunistring_1.html#SEC2">1.1 Unicode</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC25">Unicode character, bidirectional category</a></td><td valign="top"><a href="libunistring_8.html#SEC25">8.3 Bidirectional category</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX578">Unicode character, block</a></td><td valign="top"><a href="libunistring_8.html#SEC34">8.10 Blocks</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC24">Unicode character, canonical combining class</a></td><td valign="top"><a href="libunistring_8.html#SEC24">8.2 Canonical combining class</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#SEC49">Unicode character, case mappings</a></td><td valign="top"><a href="libunistring_13.html#SEC49">13.1 Case mappings of characters</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC21">Unicode character, classification</a></td><td valign="top"><a href="libunistring_8.html#SEC21">8.1 General category</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC36">Unicode character, classification like in C</a></td><td valign="top"><a href="libunistring_8.html#SEC36">8.12 Classifications like in ISO C</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC21">Unicode character, general category</a></td><td valign="top"><a href="libunistring_8.html#SEC21">8.1 General category</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC29">Unicode character, mirroring</a></td><td valign="top"><a href="libunistring_8.html#SEC29">8.7 Mirrored character</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_7.html#SEC19">Unicode character, name</a></td><td valign="top"><a href="libunistring_7.html#SEC19">7. Names of Unicode characters <code>&lt;uniname.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC30">Unicode character, properties</a></td><td valign="top"><a href="libunistring_8.html#SEC30">8.8 Properties</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX572">Unicode character, script</a></td><td valign="top"><a href="libunistring_8.html#SEC33">8.9 Scripts</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX588">Unicode character, validity in C identifiers</a></td><td valign="top"><a href="libunistring_8.html#SEC35">8.11 ISO C and Java syntax</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#IDX590">Unicode character, validity in Java identifiers</a></td><td valign="top"><a href="libunistring_8.html#SEC35">8.11 ISO C and Java syntax</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC26">Unicode character, value</a></td><td valign="top"><a href="libunistring_8.html#SEC26">8.4 Decimal digit value</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC27">Unicode character, value</a></td><td valign="top"><a href="libunistring_8.html#SEC27">8.5 Digit value</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC28">Unicode character, value</a></td><td valign="top"><a href="libunistring_8.html#SEC28">8.6 Numeric value</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_9.html#IDX605">Unicode character, width</a></td><td valign="top"><a href="libunistring_9.html#SEC37">9. Display width <code>&lt;uniwidth.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_7.html#IDX238"><code>unicode_character_name</code></a></td><td valign="top"><a href="libunistring_7.html#SEC19">7. Names of Unicode characters <code>&lt;uniname.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_7.html#IDX239"><code>unicode_name_character</code></a></td><td valign="top"><a href="libunistring_7.html#SEC19">7. Names of Unicode characters <code>&lt;uniname.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX674"><code>uninorm_decomposing_form</code></a></td><td valign="top"><a href="libunistring_12.html#SEC45">12.3 Normalization of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX690"><code>uninorm_filter_create</code></a></td><td valign="top"><a href="libunistring_12.html#SEC47">12.5 Normalization of streams of Unicode characters</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX692"><code>uninorm_filter_flush</code></a></td><td valign="top"><a href="libunistring_12.html#SEC47">12.5 Normalization of streams of Unicode characters</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX693"><code>uninorm_filter_free</code></a></td><td valign="top"><a href="libunistring_12.html#SEC47">12.5 Normalization of streams of Unicode characters</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX691"><code>uninorm_filter_write</code></a></td><td valign="top"><a href="libunistring_12.html#SEC47">12.5 Normalization of streams of Unicode characters</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX672"><code>uninorm_is_compat_decomposing</code></a></td><td valign="top"><a href="libunistring_12.html#SEC45">12.3 Normalization of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX673"><code>uninorm_is_composing</code></a></td><td valign="top"><a href="libunistring_12.html#SEC45">12.3 Normalization of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_12.html#IDX667"><code>uninorm_t</code></a></td><td valign="top"><a href="libunistring_12.html#SEC45">12.3 Normalization of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_13.html#SEC50">uppercasing</a></td><td valign="top"><a href="libunistring_13.html#SEC50">13.2 Case mappings of strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_1.html#IDX1">use cases</a></td><td valign="top"><a href="libunistring_1.html#SEC1">1. Introduction</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_1.html#IDX4">UTF-16</a></td><td valign="top"><a href="libunistring_1.html#SEC2">1.1 Unicode</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_1.html#IDX12">UTF-16, strings</a></td><td valign="top"><a href="libunistring_1.html#SEC8">1.7 Unicode strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_1.html#IDX5">UTF-32</a></td><td valign="top"><a href="libunistring_1.html#SEC2">1.1 Unicode</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_1.html#IDX13">UTF-32, strings</a></td><td valign="top"><a href="libunistring_1.html#SEC8">1.7 Unicode strings</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_1.html#IDX3">UTF-8</a></td><td valign="top"><a href="libunistring_1.html#SEC2">1.1 Unicode</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_1.html#IDX11">UTF-8, strings</a></td><td valign="top"><a href="libunistring_1.html#SEC8">1.7 Unicode strings</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+</table>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#SEC71_0" class="summary-letter"><b>A</b></a>
+ &nbsp;
+<a href="#SEC71_1" class="summary-letter"><b>B</b></a>
+ &nbsp;
+<a href="#SEC71_2" class="summary-letter"><b>C</b></a>
+ &nbsp;
+<a href="#SEC71_3" class="summary-letter"><b>D</b></a>
+ &nbsp;
+<a href="#SEC71_4" class="summary-letter"><b>E</b></a>
+ &nbsp;
+<a href="#SEC71_5" class="summary-letter"><b>F</b></a>
+ &nbsp;
+<a href="#SEC71_6" class="summary-letter"><b>G</b></a>
+ &nbsp;
+<a href="#SEC71_7" class="summary-letter"><b>H</b></a>
+ &nbsp;
+<a href="#SEC71_8" class="summary-letter"><b>I</b></a>
+ &nbsp;
+<a href="#SEC71_9" class="summary-letter"><b>J</b></a>
+ &nbsp;
+<a href="#SEC71_10" class="summary-letter"><b>L</b></a>
+ &nbsp;
+<a href="#SEC71_11" class="summary-letter"><b>M</b></a>
+ &nbsp;
+<a href="#SEC71_12" class="summary-letter"><b>N</b></a>
+ &nbsp;
+<a href="#SEC71_13" class="summary-letter"><b>O</b></a>
+ &nbsp;
+<a href="#SEC71_14" class="summary-letter"><b>P</b></a>
+ &nbsp;
+<a href="#SEC71_15" class="summary-letter"><b>R</b></a>
+ &nbsp;
+<a href="#SEC71_16" class="summary-letter"><b>S</b></a>
+ &nbsp;
+<a href="#SEC71_17" class="summary-letter"><b>T</b></a>
+ &nbsp;
+<a href="#SEC71_18" class="summary-letter"><b>U</b></a>
+ &nbsp;
+<a href="libunistring_19.html#INDEX0_0" class="summary-letter"><b>V</b></a>
+ &nbsp;
+<a href="libunistring_19.html#INDEX0_1" class="summary-letter"><b>W</b></a>
+ &nbsp;
+</td></tr></table>
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_17.html#SEC62" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_19.html#INDEX0" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_19.html b/doc/libunistring_19.html
new file mode 100644
index 00000000..5974e2f6
--- /dev/null
+++ b/doc/libunistring_19.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: Index: V &ndash; W</title>
+
+<meta name="description" content="GNU libunistring: Index: V &ndash; W">
+<meta name="keywords" content="GNU libunistring: Index: V &ndash; W">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[ &gt;&gt; ]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="INDEX0"></a>
+<h1 class="unnumbered"> Index: V &ndash; W </h1>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="libunistring_18.html#SEC71_0" class="summary-letter"><b>A</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_1" class="summary-letter"><b>B</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_2" class="summary-letter"><b>C</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_3" class="summary-letter"><b>D</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_4" class="summary-letter"><b>E</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_5" class="summary-letter"><b>F</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_6" class="summary-letter"><b>G</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_7" class="summary-letter"><b>H</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_8" class="summary-letter"><b>I</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_9" class="summary-letter"><b>J</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_10" class="summary-letter"><b>L</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_11" class="summary-letter"><b>M</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_12" class="summary-letter"><b>N</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_13" class="summary-letter"><b>O</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_14" class="summary-letter"><b>P</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_15" class="summary-letter"><b>R</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_16" class="summary-letter"><b>S</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_17" class="summary-letter"><b>T</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_18" class="summary-letter"><b>U</b></a>
+ &nbsp;
+<a href="#INDEX0_0" class="summary-letter"><b>V</b></a>
+ &nbsp;
+<a href="#INDEX0_1" class="summary-letter"><b>W</b></a>
+ &nbsp;
+</td></tr></table>
+<table border="0" class="index-cp">
+<tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="INDEX0_0">V</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#SEC12">validity</a></td><td valign="top"><a href="libunistring_4.html#SEC12">4.1 Elementary string checks</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_1.html#IDX2">value, of libunistring</a></td><td valign="top"><a href="libunistring_1.html#SEC1">1. Introduction</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC26">value, of Unicode character</a></td><td valign="top"><a href="libunistring_8.html#SEC26">8.4 Decimal digit value</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC27">value, of Unicode character</a></td><td valign="top"><a href="libunistring_8.html#SEC27">8.5 Digit value</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_8.html#SEC28">value, of Unicode character</a></td><td valign="top"><a href="libunistring_8.html#SEC28">8.6 Numeric value</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_4.html#SEC12">verification</a></td><td valign="top"><a href="libunistring_4.html#SEC12">4.1 Elementary string checks</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="INDEX0_1">W</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_1.html#SEC7">wchar_t, type</a></td><td valign="top"><a href="libunistring_1.html#SEC7">1.6 The <code>wchar_t</code> mess</a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_9.html#SEC37">width</a></td><td valign="top"><a href="libunistring_9.html#SEC37">9. Display width <code>&lt;uniwidth.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_10.html#SEC38">word breaks</a></td><td valign="top"><a href="libunistring_10.html#SEC38">10. Word breaks in strings <code>&lt;uniwbrk.h&gt;</code></a></td></tr>
+<tr><td></td><td valign="top"><a href="libunistring_11.html#SEC41">wrapping</a></td><td valign="top"><a href="libunistring_11.html#SEC41">11. Line breaking <code>&lt;unilbrk.h&gt;</code></a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+</table>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="libunistring_18.html#SEC71_0" class="summary-letter"><b>A</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_1" class="summary-letter"><b>B</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_2" class="summary-letter"><b>C</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_3" class="summary-letter"><b>D</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_4" class="summary-letter"><b>E</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_5" class="summary-letter"><b>F</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_6" class="summary-letter"><b>G</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_7" class="summary-letter"><b>H</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_8" class="summary-letter"><b>I</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_9" class="summary-letter"><b>J</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_10" class="summary-letter"><b>L</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_11" class="summary-letter"><b>M</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_12" class="summary-letter"><b>N</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_13" class="summary-letter"><b>O</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_14" class="summary-letter"><b>P</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_15" class="summary-letter"><b>R</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_16" class="summary-letter"><b>S</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_17" class="summary-letter"><b>T</b></a>
+ &nbsp;
+<a href="libunistring_18.html#SEC71_18" class="summary-letter"><b>U</b></a>
+ &nbsp;
+<a href="#INDEX0_0" class="summary-letter"><b>V</b></a>
+ &nbsp;
+<a href="#INDEX0_1" class="summary-letter"><b>W</b></a>
+ &nbsp;
+</td></tr></table>
+
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[ &gt;&gt; ]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_2.html b/doc/libunistring_2.html
new file mode 100644
index 00000000..6d63b632
--- /dev/null
+++ b/doc/libunistring_2.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: 2. Conventions</title>
+
+<meta name="description" content="GNU libunistring: 2. Conventions">
+<meta name="keywords" content="GNU libunistring: 2. Conventions">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_1.html#SEC1" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_3.html#SEC10" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="Conventions"></a>
+<a name="SEC9"></a>
+<h1 class="chapter"> <a href="libunistring.html#TOC9">2. Conventions</a> </h1>
+
+<p>This chapter explains conventions valid throughout the libunistring library.
+</p>
+<a name="IDX14"></a>
+<p>Variables of type <code>char *</code> denote C strings in locale encoding.
+See <a href="libunistring_1.html#SEC4">Locale encodings</a>.
+</p>
+<p>Variables of type <code>uint8_t *</code> denote UTF-8 strings. Their units
+are bytes.
+</p>
+<p>Variables of type <code>uint16_t *</code> denote UTF-16 strings, without byte
+order mark. Their units are 2-byte words.
+</p>
+<p>Variables of type <code>uint32_t *</code> denote UTF-32 strings, without byte
+order mark. Their units are 4-byte words.
+</p>
+<p>Argument pairs <code>(<var>s</var>, <var>n</var>)</code> denote a string
+<code><var>s</var>[0..<var>n</var>-1]</code> with exactly <var>n</var> units.
+</p>
+<p>All functions with prefix &lsquo;<samp>ulc_</samp>&rsquo; operate on C strings in locale
+encoding.
+</p>
+<p>All functions with prefix &lsquo;<samp>u8_</samp>&rsquo; operate on UTF-8 strings.
+</p>
+<p>All functions with prefix &lsquo;<samp>u16_</samp>&rsquo; operate on UTF-16 strings.
+</p>
+<p>All functions with prefix &lsquo;<samp>u32_</samp>&rsquo; operate on UTF-32 strings.
+</p>
+<p>For every function with prefix &lsquo;<samp>u8_</samp>&rsquo;, operating on UTF-8 strings,
+there is also a corresponding function with prefix &lsquo;<samp>u16_</samp>&rsquo;,
+operating on UTF-16 strings, and a corresponding function with prefix
+&lsquo;<samp>u32_</samp>&rsquo;, operating on UTF-32 strings. Their description is
+analogous; in this documentation we describe only the function that
+operates on UTF-8 strings, for brevity.
+</p>
+<p>A declaration with a variable <var>n</var> denotes the three concrete
+declarations with <var>n</var> = 8, <var>n</var> = 16, <var>n</var> = 32.
+</p>
+<p>All parameters starting with &lsquo;<samp>str</samp>&rsquo; and the parameters of
+functions starting with <code>u8_str</code>/<code>u16_str</code>/<code>u32_str</code>
+denote a NUL terminated string.
+</p>
+<a name="IDX15"></a>
+<p>Error values are always returned through the <code>errno</code> variable,
+usually with a return value that indicates the presence of an error
+(NULL for functions that return an pointer, or -1 for functions that
+return an <code>int</code>).
+</p>
+<p>Functions returning a string result take a
+<code>(<var>resultbuf</var>, <var>lengthp</var>)</code>
+argument pair. If <var>resultbuf</var> is not NULL and the result fits
+into <code>*<var>lengthp</var></code> units, it is put in <var>resultbuf</var>, and
+<var>resultbuf</var> is returned. Otherwise, a freshly allocated string
+is returned. In both cases, <code>*<var>lengthp</var></code> is set to the
+length (number of units) of the returned string. In case of error,
+NULL is returned and <code>errno</code> is set.
+</p>
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_1.html#SEC1" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_3.html#SEC10" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_3.html b/doc/libunistring_3.html
new file mode 100644
index 00000000..cc446970
--- /dev/null
+++ b/doc/libunistring_3.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: 3. Elementary types &lt;unitypes.h&gt;</title>
+
+<meta name="description" content="GNU libunistring: 3. Elementary types &lt;unitypes.h&gt;">
+<meta name="keywords" content="GNU libunistring: 3. Elementary types &lt;unitypes.h&gt;">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_2.html#SEC9" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_4.html#SEC11" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="unitypes_002eh"></a>
+<a name="SEC10"></a>
+<h1 class="chapter"> <a href="libunistring.html#TOC10">3. Elementary types <code>&lt;unitypes.h&gt;</code></a> </h1>
+
+<p>The include file <code>&lt;unitypes.h&gt;</code> provides the following basic types.
+</p>
+<dl>
+<dt><u>Type:</u> <b>uint8_t</b>
+<a name="IDX16"></a>
+</dt>
+<dt><u>Type:</u> <b>uint16_t</b>
+<a name="IDX17"></a>
+</dt>
+<dt><u>Type:</u> <b>uint32_t</b>
+<a name="IDX18"></a>
+</dt>
+<dd><p>These are the storage units of UTF-8/16/32 strings, respectively. The definitions are
+taken from <code>&lt;stdint.h&gt;</code>, on platforms where this include file is present.
+</p></dd></dl>
+
+<dl>
+<dt><u>Type:</u> <b>ucs4_t</b>
+<a name="IDX19"></a>
+</dt>
+<dd><p>This type represents a single Unicode character, outside of an UTF-32 string.
+</p></dd></dl>
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_2.html#SEC9" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_4.html#SEC11" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_4.html b/doc/libunistring_4.html
new file mode 100644
index 00000000..60992cd0
--- /dev/null
+++ b/doc/libunistring_4.html
@@ -0,0 +1,864 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: 4. Elementary Unicode string functions &lt;unistr.h&gt;</title>
+
+<meta name="description" content="GNU libunistring: 4. Elementary Unicode string functions &lt;unistr.h&gt;">
+<meta name="keywords" content="GNU libunistring: 4. Elementary Unicode string functions &lt;unistr.h&gt;">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_3.html#SEC10" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_5.html#SEC17" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="unistr_002eh"></a>
+<a name="SEC11"></a>
+<h1 class="chapter"> <a href="libunistring.html#TOC11">4. Elementary Unicode string functions <code>&lt;unistr.h&gt;</code></a> </h1>
+
+<p>This include file declares elementary functions for Unicode strings. It is
+essentially the equivalent of what <code>&lt;string.h&gt;</code> is for C strings.
+</p>
+
+<hr size="6">
+<a name="Elementary-string-checks"></a>
+<a name="SEC12"></a>
+<h2 class="section"> <a href="libunistring.html#TOC12">4.1 Elementary string checks</a> </h2>
+
+<p>The following function is available to verify the integrity of a Unicode string.
+</p>
+<dl>
+<dt><u>Function:</u> const uint8_t * <b>u8_check</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX20"></a>
+</dt>
+<dt><u>Function:</u> const uint16_t * <b>u16_check</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX21"></a>
+</dt>
+<dt><u>Function:</u> const uint32_t * <b>u32_check</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX22"></a>
+</dt>
+<dd><p>This function checks whether a Unicode string is well-formed.
+It returns NULL if valid, or a pointer to the first invalid unit otherwise.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Elementary-string-conversions"></a>
+<a name="SEC13"></a>
+<h2 class="section"> <a href="libunistring.html#TOC13">4.2 Elementary string conversions</a> </h2>
+
+<p>The following functions perform conversions between the different forms of Unicode strings.
+</p>
+<dl>
+<dt><u>Function:</u> uint16_t * <b>u8_to_u16</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, uint16_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX23"></a>
+</dt>
+<dd><p>Converts an UTF-8 string to an UTF-16 string.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint32_t * <b>u8_to_u32</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, uint32_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX24"></a>
+</dt>
+<dd><p>Converts an UTF-8 string to an UTF-32 string.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u16_to_u8</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, uint8_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX25"></a>
+</dt>
+<dd><p>Converts an UTF-16 string to an UTF-8 string.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint32_t * <b>u16_to_u32</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, uint32_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX26"></a>
+</dt>
+<dd><p>Converts an UTF-16 string to an UTF-32 string.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u32_to_u8</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, uint8_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX27"></a>
+</dt>
+<dd><p>Converts an UTF-32 string to an UTF-8 string.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint16_t * <b>u32_to_u16</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, uint16_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX28"></a>
+</dt>
+<dd><p>Converts an UTF-32 string to an UTF-16 string.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Elementary-string-functions"></a>
+<a name="SEC14"></a>
+<h2 class="section"> <a href="libunistring.html#TOC14">4.3 Elementary string functions</a> </h2>
+
+<p>The following functions inspect and return details about the first character
+in a Unicode string.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>u8_mblen</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX29"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_mblen</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX30"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_mblen</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX31"></a>
+</dt>
+<dd><p>Returns the length (number of units) of the first character in <var>s</var>, which
+is no longer than <var>n</var>. Returns 0 if it is the NUL character. Returns -1
+upon failure.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/mblen.html"><code>mblen</code></a>, except that it operates on a
+Unicode string and that <var>s</var> must not be NULL.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> int <b>u8_mbtouc_unsafe</b><i> (ucs4_t *<var>puc</var>, const uint8_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX32"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_mbtouc_unsafe</b><i> (ucs4_t *<var>puc</var>, const uint16_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX33"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_mbtouc_unsafe</b><i> (ucs4_t *<var>puc</var>, const uint32_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX34"></a>
+</dt>
+<dd><p>Returns the length (number of units) of the first character in <var>s</var>,
+putting its <code>ucs4_t</code> representation in <code>*<var>puc</var></code>. Upon failure,
+<code>*<var>puc</var></code> is set to <code>0xfffd</code>, and an appropriate number of units
+is returned.
+</p>
+<p>The number of available units, <var>n</var>, must be &gt; 0.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/mbtowc.html"><code>mbtowc</code></a>, except that it operates on a
+Unicode string, <var>puc</var> and <var>s</var> must not be NULL, <var>n</var> must be &gt; 0,
+and the NUL character is not treated specially.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> int <b>u8_mbtouc</b><i> (ucs4_t *<var>puc</var>, const uint8_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX35"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_mbtouc</b><i> (ucs4_t *<var>puc</var>, const uint16_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX36"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_mbtouc</b><i> (ucs4_t *<var>puc</var>, const uint32_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX37"></a>
+</dt>
+<dd><p>This function is like <code>u8_mbtouc_unsafe</code>, except that it will detect an
+invalid UTF-8 character, even if the library is compiled without
+&lsquo;<samp>--enable-safety</samp>&rsquo;.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> int <b>u8_mbtoucr</b><i> (ucs4_t *<var>puc</var>, const uint8_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX38"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_mbtoucr</b><i> (ucs4_t *<var>puc</var>, const uint16_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX39"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_mbtoucr</b><i> (ucs4_t *<var>puc</var>, const uint32_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX40"></a>
+</dt>
+<dd><p>Returns the length (number of units) of the first character in <var>s</var>,
+putting its <code>ucs4_t</code> representation in <code>*<var>puc</var></code>. Upon failure,
+<code>*<var>puc</var></code> is set to <code>0xfffd</code>, and -1 is returned for an invalid
+sequence of units, -2 is returned for an incomplete sequence of units.
+</p>
+<p>The number of available units, <var>n</var>, must be &gt; 0.
+</p>
+<p>This function is similar to <code>u8_mbtouc</code>, except that the return value
+gives more details about the failure, similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/mbrtowc.html"><code>mbrtowc</code></a>.
+</p></dd></dl>
+
+<p>The following function stores a Unicode character as a Unicode string in
+memory.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>u8_uctomb</b><i> (uint8_t *<var>s</var>, ucs4_t <var>uc</var>, int <var>n</var>)</i>
+<a name="IDX41"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_uctomb</b><i> (uint16_t *<var>s</var>, ucs4_t <var>uc</var>, int <var>n</var>)</i>
+<a name="IDX42"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_uctomb</b><i> (uint32_t *<var>s</var>, ucs4_t <var>uc</var>, int <var>n</var>)</i>
+<a name="IDX43"></a>
+</dt>
+<dd><p>Puts the multibyte character represented by <var>uc</var> in <var>s</var>, returning its
+length. Returns -1 upon failure, -2 if the number of available units, <var>n</var>,
+is too small. The latter case cannot occur if <var>n</var> &gt;= 6/2/1, respectively.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wctomb.html"><code>wctomb</code></a>, except that it operates on a
+Unicode strings, <var>s</var> must not be NULL, and the argument <var>n</var> must be
+specified.
+</p></dd></dl>
+
+<a name="IDX44"></a>
+<p>The following functions copy Unicode strings in memory.
+</p>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_cpy</b><i> (uint8_t *<var>dest</var>, const uint8_t *<var>src</var>, size_t <var>n</var>)</i>
+<a name="IDX45"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_cpy</b><i> (uint16_t *<var>dest</var>, const uint16_t *<var>src</var>, size_t <var>n</var>)</i>
+<a name="IDX46"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_cpy</b><i> (uint32_t *<var>dest</var>, const uint32_t *<var>src</var>, size_t <var>n</var>)</i>
+<a name="IDX47"></a>
+</dt>
+<dd><p>Copies <var>n</var> units from <var>src</var> to <var>dest</var>.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/memcpy.html"><code>memcpy</code></a>, except that it operates on
+Unicode strings.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_move</b><i> (uint8_t *<var>dest</var>, const uint8_t *<var>src</var>, size_t <var>n</var>)</i>
+<a name="IDX48"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_move</b><i> (uint16_t *<var>dest</var>, const uint16_t *<var>src</var>, size_t <var>n</var>)</i>
+<a name="IDX49"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_move</b><i> (uint32_t *<var>dest</var>, const uint32_t *<var>src</var>, size_t <var>n</var>)</i>
+<a name="IDX50"></a>
+</dt>
+<dd><p>Copies <var>n</var> units from <var>src</var> to <var>dest</var>, guaranteeing correct
+behavior for overlapping memory areas.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/memmove.html"><code>memmove</code></a>, except that it operates on
+Unicode strings.
+</p></dd></dl>
+
+<p>The following function fills a Unicode string.
+</p>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_set</b><i> (uint8_t *<var>s</var>, ucs4_t <var>uc</var>, size_t <var>n</var>)</i>
+<a name="IDX51"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_set</b><i> (uint16_t *<var>s</var>, ucs4_t <var>uc</var>, size_t <var>n</var>)</i>
+<a name="IDX52"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_set</b><i> (uint32_t *<var>s</var>, ucs4_t <var>uc</var>, size_t <var>n</var>)</i>
+<a name="IDX53"></a>
+</dt>
+<dd><p>Sets the first <var>n</var> characters of <var>s</var> to <var>uc</var>. <var>uc</var> should be
+a character that occupies only 1 unit.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/memset.html"><code>memset</code></a>, except that it operates on
+Unicode strings.
+</p></dd></dl>
+
+<a name="IDX54"></a>
+<p>The following function compares two Unicode strings of the same length.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>u8_cmp</b><i> (const uint8_t *<var>s1</var>, const uint8_t *<var>s2</var>, size_t <var>n</var>)</i>
+<a name="IDX55"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_cmp</b><i> (const uint16_t *<var>s1</var>, const uint16_t *<var>s2</var>, size_t <var>n</var>)</i>
+<a name="IDX56"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_cmp</b><i> (const uint32_t *<var>s1</var>, const uint32_t *<var>s2</var>, size_t <var>n</var>)</i>
+<a name="IDX57"></a>
+</dt>
+<dd><p>Compares <var>s1</var> and <var>s2</var>, each of length <var>n</var>, lexicographically.
+Returns a negative value if <var>s1</var> compares smaller than <var>s2</var>,
+a positive value if <var>s1</var> compares larger than <var>s2</var>, or 0 if
+they compare equal.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/memcmp.html"><code>memcmp</code></a>, except that it operates on
+Unicode strings.
+</p></dd></dl>
+
+<p>The following function compares two Unicode strings of possibly different
+lengths.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>u8_cmp2</b><i> (const uint8_t *<var>s1</var>, size_t <var>n1</var>, const uint8_t *<var>s2</var>, size_t <var>n2</var>)</i>
+<a name="IDX58"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_cmp2</b><i> (const uint16_t *<var>s1</var>, size_t <var>n1</var>, const uint16_t *<var>s2</var>, size_t <var>n2</var>)</i>
+<a name="IDX59"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_cmp2</b><i> (const uint32_t *<var>s1</var>, size_t <var>n1</var>, const uint32_t *<var>s2</var>, size_t <var>n2</var>)</i>
+<a name="IDX60"></a>
+</dt>
+<dd><p>Compares <var>s1</var> and <var>s2</var>, lexicographically.
+Returns a negative value if <var>s1</var> compares smaller than <var>s2</var>,
+a positive value if <var>s1</var> compares larger than <var>s2</var>, or 0 if
+they compare equal.
+</p>
+<p>This function is similar to the gnulib function <code>memcmp2</code>, except that it
+operates on Unicode strings.
+</p></dd></dl>
+
+<a name="IDX61"></a>
+<p>The following function searches for a given Unicode character.
+</p>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_chr</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, ucs4_t <var>uc</var>)</i>
+<a name="IDX62"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_chr</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, ucs4_t <var>uc</var>)</i>
+<a name="IDX63"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_chr</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, ucs4_t <var>uc</var>)</i>
+<a name="IDX64"></a>
+</dt>
+<dd><p>Searches the string at <var>s</var> for <var>uc</var>. Returns a pointer to the first
+occurrence of <var>uc</var> in <var>s</var>, or NULL if <var>uc</var> does not occur in
+<var>s</var>.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/memchr.html"><code>memchr</code></a>, except that it operates on
+Unicode strings.
+</p></dd></dl>
+
+<a name="IDX65"></a>
+<p>The following function counts the number of Unicode characters.
+</p>
+<dl>
+<dt><u>Function:</u> size_t <b>u8_mbsnlen</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX66"></a>
+</dt>
+<dt><u>Function:</u> size_t <b>u16_mbsnlen</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX67"></a>
+</dt>
+<dt><u>Function:</u> size_t <b>u32_mbsnlen</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX68"></a>
+</dt>
+<dd><p>Counts and returns the number of Unicode characters in the <var>n</var> units
+from <var>s</var>.
+</p>
+<p>This function is similar to the gnulib function <code>mbsnlen</code>, except that
+it operates on Unicode strings.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Elementary-string-functions-with-memory-allocation"></a>
+<a name="SEC15"></a>
+<h2 class="section"> <a href="libunistring.html#TOC15">4.4 Elementary string functions with memory allocation</a> </h2>
+
+<p>The following function copies a Unicode string.
+</p>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_cpy_alloc</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX69"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_cpy_alloc</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX70"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_cpy_alloc</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>)</i>
+<a name="IDX71"></a>
+</dt>
+<dd><p>Makes a freshly allocated copy of <var>s</var>, of length <var>n</var>.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Elementary-string-functions-on-NUL-terminated-strings"></a>
+<a name="SEC16"></a>
+<h2 class="section"> <a href="libunistring.html#TOC16">4.5 Elementary string functions on NUL terminated strings</a> </h2>
+
+<p>The following functions inspect and return details about the first character
+in a Unicode string.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>u8_strmblen</b><i> (const uint8_t *<var>s</var>)</i>
+<a name="IDX72"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_strmblen</b><i> (const uint16_t *<var>s</var>)</i>
+<a name="IDX73"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_strmblen</b><i> (const uint32_t *<var>s</var>)</i>
+<a name="IDX74"></a>
+</dt>
+<dd><p>Returns the length (number of units) of the first character in <var>s</var>.
+Returns 0 if it is the NUL character. Returns -1 upon failure.
+</p></dd></dl>
+
+<a name="IDX75"></a>
+<dl>
+<dt><u>Function:</u> int <b>u8_strmbtouc</b><i> (ucs4_t *<var>puc</var>, const uint8_t *<var>s</var>)</i>
+<a name="IDX76"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_strmbtouc</b><i> (ucs4_t *<var>puc</var>, const uint16_t *<var>s</var>)</i>
+<a name="IDX77"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_strmbtouc</b><i> (ucs4_t *<var>puc</var>, const uint32_t *<var>s</var>)</i>
+<a name="IDX78"></a>
+</dt>
+<dd><p>Returns the length (number of units) of the first character in <var>s</var>,
+putting its <code>ucs4_t</code> representation in <code>*<var>puc</var></code>. Returns 0
+if it is the NUL character. Returns -1 upon failure.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> const uint8_t * <b>u8_next</b><i> (ucs4_t *<var>puc</var>, const uint8_t *<var>s</var>)</i>
+<a name="IDX79"></a>
+</dt>
+<dt><u>Function:</u> const uint16_t * <b>u16_next</b><i> (ucs4_t *<var>puc</var>, const uint16_t *<var>s</var>)</i>
+<a name="IDX80"></a>
+</dt>
+<dt><u>Function:</u> const uint32_t * <b>u32_next</b><i> (ucs4_t *<var>puc</var>, const uint32_t *<var>s</var>)</i>
+<a name="IDX81"></a>
+</dt>
+<dd><p>Forward iteration step. Advances the pointer past the next character,
+or returns NULL if the end of the string has been reached. Puts the
+character's <code>ucs4_t</code> representation in <code>*<var>puc</var></code>.
+</p></dd></dl>
+
+<p>The following function inspects and returns details about the previous
+character in a Unicode string.
+</p>
+<dl>
+<dt><u>Function:</u> const uint8_t * <b>u8_prev</b><i> (ucs4_t *<var>puc</var>, const uint8_t *<var>s</var>, const uint8_t *<var>start</var>)</i>
+<a name="IDX82"></a>
+</dt>
+<dt><u>Function:</u> const uint16_t * <b>u16_prev</b><i> (ucs4_t *<var>puc</var>, const uint16_t *<var>s</var>, const uint16_t *<var>start</var>)</i>
+<a name="IDX83"></a>
+</dt>
+<dt><u>Function:</u> const uint32_t * <b>u32_prev</b><i> (ucs4_t *<var>puc</var>, const uint32_t *<var>s</var>, const uint32_t *<var>start</var>)</i>
+<a name="IDX84"></a>
+</dt>
+<dd><p>Backward iteration step. Advances the pointer to point to the previous
+character, or returns NULL if the beginning of the string had been reached.
+Puts the character's <code>ucs4_t</code> representation in <code>*<var>puc</var></code>.
+</p></dd></dl>
+
+<p>The following functions determine the length of a Unicode string.
+</p>
+<dl>
+<dt><u>Function:</u> size_t <b>u8_strlen</b><i> (const uint8_t *<var>s</var>)</i>
+<a name="IDX85"></a>
+</dt>
+<dt><u>Function:</u> size_t <b>u16_strlen</b><i> (const uint16_t *<var>s</var>)</i>
+<a name="IDX86"></a>
+</dt>
+<dt><u>Function:</u> size_t <b>u32_strlen</b><i> (const uint32_t *<var>s</var>)</i>
+<a name="IDX87"></a>
+</dt>
+<dd><p>Returns the number of units in <var>s</var>.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strlen.html"><code>strlen</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wcslen.html"><code>wcslen</code></a>, except
+that it operates on Unicode strings.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> size_t <b>u8_strnlen</b><i> (const uint8_t *<var>s</var>, size_t <var>maxlen</var>)</i>
+<a name="IDX88"></a>
+</dt>
+<dt><u>Function:</u> size_t <b>u16_strnlen</b><i> (const uint16_t *<var>s</var>, size_t <var>maxlen</var>)</i>
+<a name="IDX89"></a>
+</dt>
+<dt><u>Function:</u> size_t <b>u32_strnlen</b><i> (const uint32_t *<var>s</var>, size_t <var>maxlen</var>)</i>
+<a name="IDX90"></a>
+</dt>
+<dd><p>Returns the number of units in <var>s</var>, but at most <var>maxlen</var>.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strnlen.html"><code>strnlen</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wcsnlen.html"><code>wcsnlen</code></a>, except
+that it operates on Unicode strings.
+</p></dd></dl>
+
+<a name="IDX91"></a>
+<p>The following functions copy portions of Unicode strings in memory.
+</p>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_strcpy</b><i> (uint8_t *<var>dest</var>, const uint8_t *<var>src</var>)</i>
+<a name="IDX92"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_strcpy</b><i> (uint16_t *<var>dest</var>, const uint16_t *<var>src</var>)</i>
+<a name="IDX93"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_strcpy</b><i> (uint32_t *<var>dest</var>, const uint32_t *<var>src</var>)</i>
+<a name="IDX94"></a>
+</dt>
+<dd><p>Copies <var>src</var> to <var>dest</var>.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strcpy.html"><code>strcpy</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wcscpy.html"><code>wcscpy</code></a>, except
+that it operates on Unicode strings.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_stpcpy</b><i> (uint8_t *<var>dest</var>, const uint8_t *<var>src</var>)</i>
+<a name="IDX95"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_stpcpy</b><i> (uint16_t *<var>dest</var>, const uint16_t *<var>src</var>)</i>
+<a name="IDX96"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_stpcpy</b><i> (uint32_t *<var>dest</var>, const uint32_t *<var>src</var>)</i>
+<a name="IDX97"></a>
+</dt>
+<dd><p>Copies <var>src</var> to <var>dest</var>, returning the address of the terminating NUL
+in <var>dest</var>.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/stpcpy.html"><code>stpcpy</code></a>, except that it operates on
+Unicode strings.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_strncpy</b><i> (uint8_t *<var>dest</var>, const uint8_t *<var>src</var>, size_t <var>n</var>)</i>
+<a name="IDX98"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_strncpy</b><i> (uint16_t *<var>dest</var>, const uint16_t *<var>src</var>, size_t <var>n</var>)</i>
+<a name="IDX99"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_strncpy</b><i> (uint32_t *<var>dest</var>, const uint32_t *<var>src</var>, size_t <var>n</var>)</i>
+<a name="IDX100"></a>
+</dt>
+<dd><p>Copies no more than <var>n</var> units of <var>src</var> to <var>dest</var>.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strncpy.html"><code>strncpy</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wcsncpy.html"><code>wcsncpy</code></a>, except
+that it operates on Unicode strings.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_stpncpy</b><i> (uint8_t *<var>dest</var>, const uint8_t *<var>src</var>, size_t <var>n</var>)</i>
+<a name="IDX101"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_stpncpy</b><i> (uint16_t *<var>dest</var>, const uint16_t *<var>src</var>, size_t <var>n</var>)</i>
+<a name="IDX102"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_stpncpy</b><i> (uint32_t *<var>dest</var>, const uint32_t *<var>src</var>, size_t <var>n</var>)</i>
+<a name="IDX103"></a>
+</dt>
+<dd><p>Copies no more than <var>n</var> units of <var>src</var> to <var>dest</var>, returning the
+address of the last unit written into <var>dest</var>.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/stpncpy.html"><code>stpncpy</code></a>, except that it operates on
+Unicode strings.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_strcat</b><i> (uint8_t *<var>dest</var>, const uint8_t *<var>src</var>)</i>
+<a name="IDX104"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_strcat</b><i> (uint16_t *<var>dest</var>, const uint16_t *<var>src</var>)</i>
+<a name="IDX105"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_strcat</b><i> (uint32_t *<var>dest</var>, const uint32_t *<var>src</var>)</i>
+<a name="IDX106"></a>
+</dt>
+<dd><p>Appends <var>src</var> onto <var>dest</var>.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strcat.html"><code>strcat</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wcscat.html"><code>wcscat</code></a>, except
+that it operates on Unicode strings.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_strncat</b><i> (uint8_t *<var>dest</var>, const uint8_t *<var>src</var>, size_t <var>n</var>)</i>
+<a name="IDX107"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_strncat</b><i> (uint16_t *<var>dest</var>, const uint16_t *<var>src</var>, size_t <var>n</var>)</i>
+<a name="IDX108"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_strncat</b><i> (uint32_t *<var>dest</var>, const uint32_t *<var>src</var>, size_t <var>n</var>)</i>
+<a name="IDX109"></a>
+</dt>
+<dd><p>Appends no more than <var>n</var> units of <var>src</var> onto <var>dest</var>.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strncat.html"><code>strncat</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wcsncat.html"><code>wcsncat</code></a>, except
+that it operates on Unicode strings.
+</p></dd></dl>
+
+<a name="IDX110"></a>
+<p>The following functions compare two Unicode strings.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>u8_strcmp</b><i> (const uint8_t *<var>s1</var>, const uint8_t *<var>s2</var>)</i>
+<a name="IDX111"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_strcmp</b><i> (const uint16_t *<var>s1</var>, const uint16_t *<var>s2</var>)</i>
+<a name="IDX112"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_strcmp</b><i> (const uint32_t *<var>s1</var>, const uint32_t *<var>s2</var>)</i>
+<a name="IDX113"></a>
+</dt>
+<dd><p>Compares <var>s1</var> and <var>s2</var>, lexicographically.
+Returns a negative value if <var>s1</var> compares smaller than <var>s2</var>,
+a positive value if <var>s1</var> compares larger than <var>s2</var>, or 0 if
+they compare equal.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strcmp.html"><code>strcmp</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wcscmp.html"><code>wcscmp</code></a>, except
+that it operates on Unicode strings.
+</p></dd></dl>
+
+<a name="IDX114"></a>
+<dl>
+<dt><u>Function:</u> int <b>u8_strcoll</b><i> (const uint8_t *<var>s1</var>, const uint8_t *<var>s2</var>)</i>
+<a name="IDX115"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_strcoll</b><i> (const uint16_t *<var>s1</var>, const uint16_t *<var>s2</var>)</i>
+<a name="IDX116"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_strcoll</b><i> (const uint32_t *<var>s1</var>, const uint32_t *<var>s2</var>)</i>
+<a name="IDX117"></a>
+</dt>
+<dd><p>Compares <var>s1</var> and <var>s2</var> using the collation rules of the current
+locale.
+Returns -1 if <var>s1</var> &lt; <var>s2</var>, 0 if <var>s1</var> = <var>s2</var>, 1 if
+<var>s1</var> &gt; <var>s2</var>. Upon failure, sets <code>errno</code> and returns any value.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strcoll.html"><code>strcoll</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wcscoll.html"><code>wcscoll</code></a>, except
+that it operates on Unicode strings.
+</p>
+<p>Note that this function may consider different canonical normalizations
+of the same string as having a large distance. It is therefore better to
+use the function <code>u8_normcoll</code> instead of this one; see <a href="libunistring_12.html#SEC42">Normalization forms (composition and decomposition) <code>&lt;uninorm.h&gt;</code></a>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> int <b>u8_strncmp</b><i> (const uint8_t *<var>s1</var>, const uint8_t *<var>s2</var>, size_t <var>n</var>)</i>
+<a name="IDX118"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_strncmp</b><i> (const uint16_t *<var>s1</var>, const uint16_t *<var>s2</var>, size_t <var>n</var>)</i>
+<a name="IDX119"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_strncmp</b><i> (const uint32_t *<var>s1</var>, const uint32_t *<var>s2</var>, size_t <var>n</var>)</i>
+<a name="IDX120"></a>
+</dt>
+<dd><p>Compares no more than <var>n</var> units of <var>s1</var> and <var>s2</var>.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strncmp.html"><code>strncmp</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wcsncmp.html"><code>wcsncmp</code></a>, except
+that it operates on Unicode strings.
+</p></dd></dl>
+
+<a name="IDX121"></a>
+<p>The following function allocates a duplicate of a Unicode string.
+</p>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_strdup</b><i> (const uint8_t *<var>s</var>)</i>
+<a name="IDX122"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_strdup</b><i> (const uint16_t *<var>s</var>)</i>
+<a name="IDX123"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_strdup</b><i> (const uint32_t *<var>s</var>)</i>
+<a name="IDX124"></a>
+</dt>
+<dd><p>Duplicates <var>s</var>, returning an identical malloc'd string.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strdup.html"><code>strdup</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wcsdup.html"><code>wcsdup</code></a>, except
+that it operates on Unicode strings.
+</p></dd></dl>
+
+<a name="IDX125"></a>
+<p>The following functions search for a given Unicode character.
+</p>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_strchr</b><i> (const uint8_t *<var>str</var>, ucs4_t <var>uc</var>)</i>
+<a name="IDX126"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_strchr</b><i> (const uint16_t *<var>str</var>, ucs4_t <var>uc</var>)</i>
+<a name="IDX127"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_strchr</b><i> (const uint32_t *<var>str</var>, ucs4_t <var>uc</var>)</i>
+<a name="IDX128"></a>
+</dt>
+<dd><p>Finds the first occurrence of <var>uc</var> in <var>str</var>.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strchr.html"><code>strchr</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wcschr.html"><code>wcschr</code></a>, except
+that it operates on Unicode strings.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_strrchr</b><i> (const uint8_t *<var>str</var>, ucs4_t <var>uc</var>)</i>
+<a name="IDX129"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_strrchr</b><i> (const uint16_t *<var>str</var>, ucs4_t <var>uc</var>)</i>
+<a name="IDX130"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_strrchr</b><i> (const uint32_t *<var>str</var>, ucs4_t <var>uc</var>)</i>
+<a name="IDX131"></a>
+</dt>
+<dd><p>Finds the last occurrence of <var>uc</var> in <var>str</var>.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strrchr.html"><code>strrchr</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wcsrchr.html"><code>wcsrchr</code></a>, except
+that it operates on Unicode strings.
+</p></dd></dl>
+
+<p>The following functions search for the first occurrence of some Unicode
+character in or outside a given set of Unicode characters.
+</p>
+<dl>
+<dt><u>Function:</u> size_t <b>u8_strcspn</b><i> (const uint8_t *<var>str</var>, const uint8_t *<var>reject</var>)</i>
+<a name="IDX132"></a>
+</dt>
+<dt><u>Function:</u> size_t <b>u16_strcspn</b><i> (const uint16_t *<var>str</var>, const uint16_t *<var>reject</var>)</i>
+<a name="IDX133"></a>
+</dt>
+<dt><u>Function:</u> size_t <b>u32_strcspn</b><i> (const uint32_t *<var>str</var>, const uint32_t *<var>reject</var>)</i>
+<a name="IDX134"></a>
+</dt>
+<dd><p>Returns the length of the initial segment of <var>str</var> which consists entirely
+of Unicode characters not in <var>reject</var>.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strcspn.html"><code>strcspn</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wcscspn.html"><code>wcscspn</code></a>, except
+that it operates on Unicode strings.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> size_t <b>u8_strspn</b><i> (const uint8_t *<var>str</var>, const uint8_t *<var>accept</var>)</i>
+<a name="IDX135"></a>
+</dt>
+<dt><u>Function:</u> size_t <b>u16_strspn</b><i> (const uint16_t *<var>str</var>, const uint16_t *<var>accept</var>)</i>
+<a name="IDX136"></a>
+</dt>
+<dt><u>Function:</u> size_t <b>u32_strspn</b><i> (const uint32_t *<var>str</var>, const uint32_t *<var>accept</var>)</i>
+<a name="IDX137"></a>
+</dt>
+<dd><p>Returns the length of the initial segment of <var>str</var> which consists entirely
+of Unicode characters in <var>accept</var>.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strspn.html"><code>strspn</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wcsspn.html"><code>wcsspn</code></a>, except
+that it operates on Unicode strings.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_strpbrk</b><i> (const uint8_t *<var>str</var>, const uint8_t *<var>accept</var>)</i>
+<a name="IDX138"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_strpbrk</b><i> (const uint16_t *<var>str</var>, const uint16_t *<var>accept</var>)</i>
+<a name="IDX139"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_strpbrk</b><i> (const uint32_t *<var>str</var>, const uint32_t *<var>accept</var>)</i>
+<a name="IDX140"></a>
+</dt>
+<dd><p>Finds the first occurrence in <var>str</var> of any character in <var>accept</var>.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strpbrk.html"><code>strpbrk</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wcspbrk.html"><code>wcspbrk</code></a>, except
+that it operates on Unicode strings.
+</p></dd></dl>
+
+<a name="IDX141"></a>
+<p>The following functions search whether a given Unicode string is a substring
+of another Unicode string.
+</p>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_strstr</b><i> (const uint8_t *<var>haystack</var>, const uint8_t *<var>needle</var>)</i>
+<a name="IDX142"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_strstr</b><i> (const uint16_t *<var>haystack</var>, const uint16_t *<var>needle</var>)</i>
+<a name="IDX143"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_strstr</b><i> (const uint32_t *<var>haystack</var>, const uint32_t *<var>needle</var>)</i>
+<a name="IDX144"></a>
+</dt>
+<dd><p>Finds the first occurrence of <var>needle</var> in <var>haystack</var>.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strstr.html"><code>strstr</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wcsstr.html"><code>wcsstr</code></a>, except
+that it operates on Unicode strings.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> bool <b>u8_startswith</b><i> (const uint8_t *<var>str</var>, const uint8_t *<var>prefix</var>)</i>
+<a name="IDX145"></a>
+</dt>
+<dt><u>Function:</u> bool <b>u16_startswith</b><i> (const uint16_t *<var>str</var>, const uint16_t *<var>prefix</var>)</i>
+<a name="IDX146"></a>
+</dt>
+<dt><u>Function:</u> bool <b>u32_startswith</b><i> (const uint32_t *<var>str</var>, const uint32_t *<var>prefix</var>)</i>
+<a name="IDX147"></a>
+</dt>
+<dd><p>Tests whether <var>str</var> starts with <var>prefix</var>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> bool <b>u8_endswith</b><i> (const uint8_t *<var>str</var>, const uint8_t *<var>suffix</var>)</i>
+<a name="IDX148"></a>
+</dt>
+<dt><u>Function:</u> bool <b>u16_endswith</b><i> (const uint16_t *<var>str</var>, const uint16_t *<var>suffix</var>)</i>
+<a name="IDX149"></a>
+</dt>
+<dt><u>Function:</u> bool <b>u32_endswith</b><i> (const uint32_t *<var>str</var>, const uint32_t *<var>suffix</var>)</i>
+<a name="IDX150"></a>
+</dt>
+<dd><p>Tests whether <var>str</var> ends with <var>suffix</var>.
+</p></dd></dl>
+
+<p>The following function does one step in tokenizing a Unicode string.
+</p>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_strtok</b><i> (uint8_t *<var>str</var>, const uint8_t *<var>delim</var>, uint8_t **<var>ptr</var>)</i>
+<a name="IDX151"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_strtok</b><i> (uint16_t *<var>str</var>, const uint16_t *<var>delim</var>, uint16_t **<var>ptr</var>)</i>
+<a name="IDX152"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_strtok</b><i> (uint32_t *<var>str</var>, const uint32_t *<var>delim</var>, uint32_t **<var>ptr</var>)</i>
+<a name="IDX153"></a>
+</dt>
+<dd><p>Divides <var>str</var> into tokens separated by characters in <var>delim</var>.
+</p>
+<p>This function is similar to <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/strtok_r.html"><code>strtok_r</code></a> and <a href="http://www.opengroup.org/onlinepubs/9699919799/functions/wcstok.html"><code>wcstok</code></a>, except
+that it operates on Unicode strings. Its interface is actually more similar to
+<code>wcstok</code> than to <code>strtok</code>.
+</p></dd></dl>
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC11" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_5.html#SEC17" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_5.html b/doc/libunistring_5.html
new file mode 100644
index 00000000..92e115f9
--- /dev/null
+++ b/doc/libunistring_5.html
@@ -0,0 +1,296 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: 5. Conversions between Unicode and encodings &lt;uniconv.h&gt;</title>
+
+<meta name="description" content="GNU libunistring: 5. Conversions between Unicode and encodings &lt;uniconv.h&gt;">
+<meta name="keywords" content="GNU libunistring: 5. Conversions between Unicode and encodings &lt;uniconv.h&gt;">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_4.html#SEC11" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_6.html#SEC18" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="uniconv_002eh"></a>
+<a name="SEC17"></a>
+<h1 class="chapter"> <a href="libunistring.html#TOC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a> </h1>
+
+<p>This include file declares functions for converting between Unicode strings
+and <code>char *</code> strings in locale encoding or in other specified encodings.
+</p>
+<a name="IDX154"></a>
+<p>The following function returns the locale encoding.
+</p>
+<dl>
+<dt><u>Function:</u> const char * <b>locale_charset</b><i> ()</i>
+<a name="IDX155"></a>
+</dt>
+<dd><p>Determines the current locale's character encoding, and canonicalizes it
+into one of the canonical names listed in &lsquo;<tt>config.charset</tt>&rsquo;.
+If the canonical name cannot be determined, the result is a non-canonical
+name.
+</p>
+<p>The result must not be freed; it is statically allocated.
+</p>
+<p>The result of this function can be used as an argument to the <code>iconv_open</code>
+function in GNU libc, in GNU libiconv, or in the gnulib provided wrapper
+around the native <code>iconv_open</code> function. It may not work as an argument
+to the native <code>iconv_open</code> function directly.
+</p></dd></dl>
+
+<p>The handling of unconvertible characters during the conversions can be
+parametrized through the following enumeration type:
+</p>
+<dl>
+<dt><u>Type:</u> <b>enum iconv_ilseq_handler</b>
+<a name="IDX156"></a>
+</dt>
+<dd><p>This type specifies how unconvertible characters in the input are handled.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> enum iconv_ilseq_handler <b>iconveh_error</b>
+<a name="IDX157"></a>
+</dt>
+<dd><p>This handler causes the function to return with <code>errno</code> set to
+<code>EILSEQ</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> enum iconv_ilseq_handler <b>iconveh_question_mark</b>
+<a name="IDX158"></a>
+</dt>
+<dd><p>This handler produces one question mark &lsquo;<samp>?</samp>&rsquo; per unconvertible character.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> enum iconv_ilseq_handler <b>iconveh_escape_sequence</b>
+<a name="IDX159"></a>
+</dt>
+<dd><p>This handler produces an escape sequence <code>\u<var>xxxx</var></code> or
+<code>\U<var>xxxxxxxx</var></code> for each unconvertible character.
+</p></dd></dl>
+
+<a name="IDX160"></a>
+<p>The following functions convert between strings in a specified encoding and
+Unicode strings.
+</p>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_conv_from_encoding</b><i> (const char *<var>fromcode</var>, enum iconv_ilseq_handler <var>handler</var>, const char *<var>src</var>, size_t <var>srclen</var>, size_t *<var>offsets</var>, uint8_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX161"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_conv_from_encoding</b><i> (const char *<var>fromcode</var>, enum iconv_ilseq_handler <var>handler</var>, const char *<var>src</var>, size_t <var>srclen</var>, size_t *<var>offsets</var>, uint16_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX162"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_conv_from_encoding</b><i> (const char *<var>fromcode</var>, enum iconv_ilseq_handler <var>handler</var>, const char *<var>src</var>, size_t <var>srclen</var>, size_t *<var>offsets</var>, uint32_t *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX163"></a>
+</dt>
+<dd><p>Converts an entire string, possibly including NUL bytes, from one encoding
+to UTF-8 encoding.
+</p>
+<p>Converts a memory region given in encoding <var>fromcode</var>. <var>fromcode</var> is
+as for the <code>iconv_open</code> function.
+</p>
+<p>The input is in the memory region between <var>src</var> (inclusive) and
+<code><var>src</var> + <var>srclen</var></code> (exclusive).
+</p>
+<p>If <var>offsets</var> is not NULL, it should point to an array of <var>srclen</var>
+integers; this array is filled with offsets into the result, i.e. the
+character starting at <code><var>src</var>[i]</code> corresponds to the character starting
+at <code><var>result</var>[<var>offsets</var>[i]]</code>, and other offsets are set to
+<code>(size_t)(-1)</code>.
+</p>
+<p><code><var>resultbuf</var></code> and <code>*<var>lengthp</var></code> should be a scratch
+buffer and its size, or <code><var>resultbuf</var></code> can be NULL.
+</p>
+<p>May erase the contents of the memory at <code><var>resultbuf</var></code>.
+</p>
+<p>If successful: The resulting Unicode string (non-NULL) is returned and
+its length stored in <code>*<var>lengthp</var></code>. The resulting string is
+<code><var>resultbuf</var></code> if no dynamic memory allocation was necessary,
+or a freshly allocated memory block otherwise.
+</p>
+<p>In case of error: NULL is returned and <code>errno</code> is set.
+Particular <code>errno</code> values: <code>EINVAL</code>, <code>EILSEQ</code>, <code>ENOMEM</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> char * <b>u8_conv_to_encoding</b><i> (const char *<var>tocode</var>, enum iconv_ilseq_handler <var>handler</var>, const uint8_t *<var>src</var>, size_t <var>srclen</var>, size_t *<var>offsets</var>, char *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX164"></a>
+</dt>
+<dt><u>Function:</u> char * <b>u16_conv_to_encoding</b><i> (const char *<var>tocode</var>, enum iconv_ilseq_handler <var>handler</var>, const uint16_t *<var>src</var>, size_t <var>srclen</var>, size_t *<var>offsets</var>, char *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX165"></a>
+</dt>
+<dt><u>Function:</u> char * <b>u32_conv_to_encoding</b><i> (const char *<var>tocode</var>, enum iconv_ilseq_handler <var>handler</var>, const uint32_t *<var>src</var>, size_t <var>srclen</var>, size_t *<var>offsets</var>, char *<var>resultbuf</var>, size_t *<var>lengthp</var>)</i>
+<a name="IDX166"></a>
+</dt>
+<dd><p>Converts an entire Unicode string, possibly including NUL units, from UTF-8
+encoding to a given encoding.
+</p>
+<p>Converts a memory region to encoding <var>tocode</var>. <var>tocode</var> is as for
+the <code>iconv_open</code> function.
+</p>
+<p>The input is in the memory region between <var>src</var> (inclusive) and
+<code><var>src</var> + <var>srclen</var></code> (exclusive).
+</p>
+<p>If <var>offsets</var> is not NULL, it should point to an array of <var>srclen</var>
+integers; this array is filled with offsets into the result, i.e. the
+character starting at <code><var>src</var>[i]</code> corresponds to the character starting
+at <code><var>result</var>[<var>offsets</var>[i]]</code>, and other offsets are set to
+<code>(size_t)(-1)</code>.
+</p>
+<p><code><var>resultbuf</var></code> and <code>*<var>lengthp</var></code> should be a scratch
+buffer and its size, or <code><var>resultbuf</var></code> can be NULL.
+</p>
+<p>May erase the contents of the memory at <code><var>resultbuf</var></code>.
+</p>
+<p>If successful: The resulting Unicode string (non-NULL) is returned and
+its length stored in <code>*<var>lengthp</var></code>. The resulting string is
+<code><var>resultbuf</var></code> if no dynamic memory allocation was necessary,
+or a freshly allocated memory block otherwise.
+</p>
+<p>In case of error: NULL is returned and <code>errno</code> is set.
+Particular <code>errno</code> values: <code>EINVAL</code>, <code>EILSEQ</code>, <code>ENOMEM</code>.
+</p></dd></dl>
+
+<p>The following functions convert between NUL terminated strings in a specified
+encoding and NUL terminated Unicode strings.
+</p>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_strconv_from_encoding</b><i> (const char *<var>string</var>, const char *<var>fromcode</var>, enum iconv_ilseq_handler <var>handler</var>)</i>
+<a name="IDX167"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_strconv_from_encoding</b><i> (const char *<var>string</var>, const char *<var>fromcode</var>, enum iconv_ilseq_handler <var>handler</var>)</i>
+<a name="IDX168"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_strconv_from_encoding</b><i> (const char *<var>string</var>, const char *<var>fromcode</var>, enum iconv_ilseq_handler <var>handler</var>)</i>
+<a name="IDX169"></a>
+</dt>
+<dd><p>Converts a NUL terminated string from a given encoding.
+</p>
+<p>The result is <code>malloc</code> allocated, or NULL (with <var>errno</var> set) in case of error.
+</p>
+<p>Particular <code>errno</code> values: <code>EILSEQ</code>, <code>ENOMEM</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> char * <b>u8_strconv_to_encoding</b><i> (const uint8_t *<var>string</var>, const char *<var>tocode</var>, enum iconv_ilseq_handler <var>handler</var>)</i>
+<a name="IDX170"></a>
+</dt>
+<dt><u>Function:</u> char * <b>u16_strconv_to_encoding</b><i> (const uint16_t *<var>string</var>, const char *<var>tocode</var>, enum iconv_ilseq_handler <var>handler</var>)</i>
+<a name="IDX171"></a>
+</dt>
+<dt><u>Function:</u> char * <b>u32_strconv_to_encoding</b><i> (const uint32_t *<var>string</var>, const char *<var>tocode</var>, enum iconv_ilseq_handler <var>handler</var>)</i>
+<a name="IDX172"></a>
+</dt>
+<dd><p>Converts a NUL terminated string to a given encoding.
+</p>
+<p>The result is <code>malloc</code> allocated, or NULL (with <code>errno</code> set) in case of error.
+</p>
+<p>Particular <code>errno</code> values: <code>EILSEQ</code>, <code>ENOMEM</code>.
+</p></dd></dl>
+
+<p>The following functions are shorthands that convert between NUL terminated
+strings in locale encoding and NUL terminated Unicode strings.
+</p>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_strconv_from_locale</b><i> (const char *<var>string</var>)</i>
+<a name="IDX173"></a>
+</dt>
+<dt><u>Function:</u> uint16_t * <b>u16_strconv_from_locale</b><i> (const char *<var>string</var>)</i>
+<a name="IDX174"></a>
+</dt>
+<dt><u>Function:</u> uint32_t * <b>u32_strconv_from_locale</b><i> (const char *<var>string</var>)</i>
+<a name="IDX175"></a>
+</dt>
+<dd><p>Converts a NUL terminated string from the locale encoding.
+</p>
+<p>The result is <code>malloc</code> allocated, or NULL (with <code>errno</code> set) in case of error.
+</p>
+<p>Particular <code>errno</code> values: <code>ENOMEM</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> char * <b>u8_strconv_to_locale</b><i> (const uint8_t *<var>string</var>)</i>
+<a name="IDX176"></a>
+</dt>
+<dt><u>Function:</u> char * <b>u16_strconv_to_locale</b><i> (const uint16_t *<var>string</var>)</i>
+<a name="IDX177"></a>
+</dt>
+<dt><u>Function:</u> char * <b>u32_strconv_to_locale</b><i> (const uint32_t *<var>string</var>)</i>
+<a name="IDX178"></a>
+</dt>
+<dd><p>Converts a NUL terminated string to the locale encoding.
+</p>
+<p>The result is <code>malloc</code> allocated, or NULL (with <code>errno</code> set) in case of error.
+</p>
+<p>Particular <code>errno</code> values: <code>ENOMEM</code>.
+</p></dd></dl>
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_4.html#SEC11" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_6.html#SEC18" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_6.html b/doc/libunistring_6.html
new file mode 100644
index 00000000..33cda594
--- /dev/null
+++ b/doc/libunistring_6.html
@@ -0,0 +1,451 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: 6. Output with Unicode strings &lt;unistdio.h&gt;</title>
+
+<meta name="description" content="GNU libunistring: 6. Output with Unicode strings &lt;unistdio.h&gt;">
+<meta name="keywords" content="GNU libunistring: 6. Output with Unicode strings &lt;unistdio.h&gt;">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_5.html#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_7.html#SEC19" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="unistdio_002eh"></a>
+<a name="SEC18"></a>
+<h1 class="chapter"> <a href="libunistring.html#TOC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a> </h1>
+
+<p>This include file declares functions for doing formatted output with Unicode
+strings. It defines a set of functions similar to <code>fprintf</code> and
+<code>sprintf</code>, which are declared in <code>&lt;stdio.h&gt;</code>.
+</p>
+<p>These functions work like the <code>printf</code> function family.
+In the format string:
+</p><ul class="toc">
+<li>
+The format directive &lsquo;<samp>U</samp>&rsquo; takes an UTF-8 string (<code>const uint8_t *</code>).
+</li><li>
+The format directive &lsquo;<samp>lU</samp>&rsquo; takes an UTF-16 string
+(<code>const uint16_t *</code>).
+</li><li>
+The format directive &lsquo;<samp>llU</samp>&rsquo; takes an UTF-32 string
+(<code>const uint32_t *</code>).
+</li></ul>
+
+<p>A function name with an infix &lsquo;<samp>v</samp>&rsquo; indicates that a <code>va_list</code> is
+passed instead of multiple arguments.
+</p>
+<p>The functions <code>*sprintf</code> have a <var>buf</var> argument that is assumed to be
+large enough.
+(<em>DANGEROUS! Overflowing the buffer will crash the program.</em>)
+</p>
+<p>The functions <code>*snprintf</code> have a <var>buf</var> argument that is assumed to be
+<var>size</var> units large. (<em>DANGEROUS! The resulting string might be
+truncated in the middle of a multibyte character.</em>)
+</p>
+<p>The functions <code>*asprintf</code> have a <var>resultp</var> argument. The result will
+be freshly allocated and stored in <code>*resultp</code>.
+</p>
+<p>The functions <code>*asnprintf</code> have a (<var>resultbuf</var>, <var>lengthp</var>)
+argument pair. If <var>resultbuf</var> is not NULL and the result fits into
+<code>*<var>lengthp</var></code> units, it is put in <var>resultbuf</var>, and <var>resultbuf</var>
+is returned. Otherwise, a freshly allocated string is returned. In both
+cases, <code>*<var>lengthp</var></code> is set to the length (number of units) of the
+returned string. In case of error, NULL is returned and <code>errno</code> is set.
+</p>
+<p>The following functions take an ASCII format string and return a result that
+is a <code>char *</code> string in locale encoding.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>ulc_sprintf</b><i> (char *<var>buf</var>, const char *<var>format</var>, ...)</i>
+<a name="IDX179"></a>
+</dt>
+</dl>
+
+<dl>
+<dt><u>Function:</u> int <b>ulc_snprintf</b><i> (char *<var>buf</var>, size_t size, const char *<var>format</var>, ...)</i>
+<a name="IDX180"></a>
+</dt>
+</dl>
+
+<dl>
+<dt><u>Function:</u> int <b>ulc_asprintf</b><i> (char **<var>resultp</var>, const char *<var>format</var>, ...)</i>
+<a name="IDX181"></a>
+</dt>
+</dl>
+
+<dl>
+<dt><u>Function:</u> char * <b>ulc_asnprintf</b><i> (char *<var>resultbuf</var>, size_t *<var>lengthp</var>, const char *<var>format</var>, ...)</i>
+<a name="IDX182"></a>
+</dt>
+</dl>
+
+<dl>
+<dt><u>Function:</u> int <b>ulc_vsprintf</b><i> (char *<var>buf</var>, const char *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX183"></a>
+</dt>
+</dl>
+
+<dl>
+<dt><u>Function:</u> int <b>ulc_vsnprintf</b><i> (char *<var>buf</var>, size_t size, const char *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX184"></a>
+</dt>
+</dl>
+
+<dl>
+<dt><u>Function:</u> int <b>ulc_vasprintf</b><i> (char **<var>resultp</var>, const char *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX185"></a>
+</dt>
+</dl>
+
+<dl>
+<dt><u>Function:</u> char * <b>ulc_vasnprintf</b><i> (char *<var>resultbuf</var>, size_t *<var>lengthp</var>, const char *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX186"></a>
+</dt>
+</dl>
+
+<p>The following functions take an ASCII format string and return a result in
+UTF-8 format.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>u8_sprintf</b><i> (uint8_t *<var>buf</var>, const char *<var>format</var>, ...)</i>
+<a name="IDX187"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u8_snprintf</b><i> (uint8_t *<var>buf</var>, size_t <var>size</var>, const char *<var>format</var>, ...)</i>
+<a name="IDX188"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u8_asprintf</b><i> (uint8_t **<var>resultp</var>, const char *<var>format</var>, ...)</i>
+<a name="IDX189"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_asnprintf</b><i> (uint8_t *<var>resultbuf</var>, size_t *<var>lengthp</var>, const char *<var>format</var>, ...)</i>
+<a name="IDX190"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u8_vsprintf</b><i> (uint8_t *<var>buf</var>, const char *<var>format</var>, va_list ap)</i>
+<a name="IDX191"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u8_vsnprintf</b><i> (uint8_t *<var>buf</var>, size_t <var>size</var>, const char *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX192"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u8_vasprintf</b><i> (uint8_t **<var>resultp</var>, const char *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX193"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_vasnprintf</b><i> (uint8_t *resultbuf, size_t *<var>lengthp</var>, const char *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX194"></a>
+</dt>
+</dl>
+
+<p>The following functions take an UTF-8 format string and return a result in
+UTF-8 format.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>u8_u8_sprintf</b><i> (uint8_t *<var>buf</var>, const uint8_t *<var>format</var>, ...)</i>
+<a name="IDX195"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u8_u8_snprintf</b><i> (uint8_t *<var>buf</var>, size_t <var>size</var>, const uint8_t *<var>format</var>, ...)</i>
+<a name="IDX196"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u8_u8_asprintf</b><i> (uint8_t **<var>resultp</var>, const uint8_t *<var>format</var>, ...)</i>
+<a name="IDX197"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_u8_asnprintf</b><i> (uint8_t *resultbuf, size_t *<var>lengthp</var>, const uint8_t *<var>format</var>, ...)</i>
+<a name="IDX198"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u8_u8_vsprintf</b><i> (uint8_t *<var>buf</var>, const uint8_t *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX199"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u8_u8_vsnprintf</b><i> (uint8_t *<var>buf</var>, size_t <var>size</var>, const uint8_t *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX200"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u8_u8_vasprintf</b><i> (uint8_t **<var>resultp</var>, const uint8_t *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX201"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> uint8_t * <b>u8_u8_vasnprintf</b><i> (uint8_t *resultbuf, size_t *<var>lengthp</var>, const uint8_t *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX202"></a>
+</dt>
+</dl>
+
+<p>The following functions take an ASCII format string and return a result in
+UTF-16 format.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>u16_sprintf</b><i> (uint16_t *<var>buf</var>, const char *<var>format</var>, ...)</i>
+<a name="IDX203"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u16_snprintf</b><i> (uint16_t *<var>buf</var>, size_t <var>size</var>, const char *<var>format</var>, ...)</i>
+<a name="IDX204"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u16_asprintf</b><i> (uint16_t **<var>resultp</var>, const char *<var>format</var>, ...)</i>
+<a name="IDX205"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> uint16_t * <b>u16_asnprintf</b><i> (uint16_t *<var>resultbuf</var>, size_t *<var>lengthp</var>, const char *<var>format</var>, ...)</i>
+<a name="IDX206"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u16_vsprintf</b><i> (uint16_t *<var>buf</var>, const char *<var>format</var>, va_list ap)</i>
+<a name="IDX207"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u16_vsnprintf</b><i> (uint16_t *<var>buf</var>, size_t <var>size</var>, const char *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX208"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u16_vasprintf</b><i> (uint16_t **<var>resultp</var>, const char *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX209"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> uint16_t * <b>u16_vasnprintf</b><i> (uint16_t *resultbuf, size_t *<var>lengthp</var>, const char *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX210"></a>
+</dt>
+</dl>
+
+<p>The following functions take an UTF-16 format string and return a result in
+UTF-16 format.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>u16_u16_sprintf</b><i> (uint16_t *<var>buf</var>, const uint16_t *<var>format</var>, ...)</i>
+<a name="IDX211"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u16_u16_snprintf</b><i> (uint16_t *<var>buf</var>, size_t <var>size</var>, const uint16_t *<var>format</var>, ...)</i>
+<a name="IDX212"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u16_u16_asprintf</b><i> (uint16_t **<var>resultp</var>, const uint16_t *<var>format</var>, ...)</i>
+<a name="IDX213"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> uint16_t * <b>u16_u16_asnprintf</b><i> (uint16_t *resultbuf, size_t *<var>lengthp</var>, const uint16_t *<var>format</var>, ...)</i>
+<a name="IDX214"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u16_u16_vsprintf</b><i> (uint16_t *<var>buf</var>, const uint16_t *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX215"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u16_u16_vsnprintf</b><i> (uint16_t *<var>buf</var>, size_t <var>size</var>, const uint16_t *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX216"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u16_u16_vasprintf</b><i> (uint16_t **<var>resultp</var>, const uint16_t *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX217"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> uint16_t * <b>u16_u16_vasnprintf</b><i> (uint16_t *resultbuf, size_t *<var>lengthp</var>, const uint16_t *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX218"></a>
+</dt>
+</dl>
+
+<p>The following functions take an ASCII format string and return a result in
+UTF-32 format.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>u32_sprintf</b><i> (uint32_t *<var>buf</var>, const char *<var>format</var>, ...)</i>
+<a name="IDX219"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u32_snprintf</b><i> (uint32_t *<var>buf</var>, size_t <var>size</var>, const char *<var>format</var>, ...)</i>
+<a name="IDX220"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u32_asprintf</b><i> (uint32_t **<var>resultp</var>, const char *<var>format</var>, ...)</i>
+<a name="IDX221"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> uint32_t * <b>u32_asnprintf</b><i> (uint32_t *<var>resultbuf</var>, size_t *<var>lengthp</var>, const char *<var>format</var>, ...)</i>
+<a name="IDX222"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u32_vsprintf</b><i> (uint32_t *<var>buf</var>, const char *<var>format</var>, va_list ap)</i>
+<a name="IDX223"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u32_vsnprintf</b><i> (uint32_t *<var>buf</var>, size_t <var>size</var>, const char *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX224"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u32_vasprintf</b><i> (uint32_t **<var>resultp</var>, const char *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX225"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> uint32_t * <b>u32_vasnprintf</b><i> (uint32_t *resultbuf, size_t *<var>lengthp</var>, const char *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX226"></a>
+</dt>
+</dl>
+
+<p>The following functions take an UTF-32 format string and return a result in
+UTF-32 format.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>u32_u32_sprintf</b><i> (uint32_t *<var>buf</var>, const uint32_t *<var>format</var>, ...)</i>
+<a name="IDX227"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u32_u32_snprintf</b><i> (uint32_t *<var>buf</var>, size_t <var>size</var>, const uint32_t *<var>format</var>, ...)</i>
+<a name="IDX228"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u32_u32_asprintf</b><i> (uint32_t **<var>resultp</var>, const uint32_t *<var>format</var>, ...)</i>
+<a name="IDX229"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> uint32_t * <b>u32_u32_asnprintf</b><i> (uint32_t *resultbuf, size_t *<var>lengthp</var>, const uint32_t *<var>format</var>, ...)</i>
+<a name="IDX230"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u32_u32_vsprintf</b><i> (uint32_t *<var>buf</var>, const uint32_t *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX231"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u32_u32_vsnprintf</b><i> (uint32_t *<var>buf</var>, size_t <var>size</var>, const uint32_t *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX232"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>u32_u32_vasprintf</b><i> (uint32_t **<var>resultp</var>, const uint32_t *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX233"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> uint32_t * <b>u32_u32_vasnprintf</b><i> (uint32_t *resultbuf, size_t *<var>lengthp</var>, const uint32_t *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX234"></a>
+</dt>
+</dl>
+
+<p>The following functions take an ASCII format string and produce output in
+locale encoding to a <code>FILE</code> stream.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>ulc_fprintf</b><i> (FILE *<var>stream</var>, const char *<var>format</var>, ...)</i>
+<a name="IDX235"></a>
+</dt>
+</dl>
+<dl>
+<dt><u>Function:</u> int <b>ulc_vfprintf</b><i> (FILE *<var>stream</var>, const char *<var>format</var>, va_list <var>ap</var>)</i>
+<a name="IDX236"></a>
+</dt>
+</dl>
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_5.html#SEC17" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_7.html#SEC19" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_7.html b/doc/libunistring_7.html
new file mode 100644
index 00000000..6fe526d9
--- /dev/null
+++ b/doc/libunistring_7.html
@@ -0,0 +1,125 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: 7. Names of Unicode characters &lt;uniname.h&gt;</title>
+
+<meta name="description" content="GNU libunistring: 7. Names of Unicode characters &lt;uniname.h&gt;">
+<meta name="keywords" content="GNU libunistring: 7. Names of Unicode characters &lt;uniname.h&gt;">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_6.html#SEC18" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_8.html#SEC20" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="uniname_002eh"></a>
+<a name="SEC19"></a>
+<h1 class="chapter"> <a href="libunistring.html#TOC19">7. Names of Unicode characters <code>&lt;uniname.h&gt;</code></a> </h1>
+
+<p>This include file implements the association between a Unicode character and
+its name.
+</p>
+<p>The name of a Unicode character allows to distinguish it from other, similar
+looking characters. For example, the character &lsquo;<samp>x</samp>&rsquo; has the name
+<code>&quot;LATIN SMALL LETTER X&quot;</code> and is therefore different from the character
+named <code>&quot;MULTIPLICATION SIGN&quot;</code>.
+</p>
+<dl>
+<dt><u>Macro:</u> unsigned int <b>UNINAME_MAX</b>
+<a name="IDX237"></a>
+</dt>
+<dd><p>This macro expands to a constant that is the required size of buffer for a
+Unicode character name.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> char * <b>unicode_character_name</b><i> (ucs4_t <var>uc</var>, char *<var>buf</var>)</i>
+<a name="IDX238"></a>
+</dt>
+<dd><p>Looks up the name of a Unicode character, in uppercase ASCII.
+<var>buf</var> must point to a buffer, at least <code>UNINAME_MAX</code> bytes in size.
+Returns the filled <var>buf</var>, or NULL if the character does not have a name.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> ucs4_t <b>unicode_name_character</b><i> (const char *<var>name</var>)</i>
+<a name="IDX239"></a>
+</dt>
+<dd><p>Looks up the Unicode character with a given name, in upper- or lowercase
+ASCII. Returns the character if found, or <code>UNINAME_INVALID</code> if not found.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> ucs4_t <b>UNINAME_INVALID</b>
+<a name="IDX240"></a>
+</dt>
+<dd><p>This macro expands to a constant that is a special return value of the
+<code>unicode_name_character</code> function.
+</p></dd></dl>
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_6.html#SEC18" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_8.html#SEC20" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_8.html b/doc/libunistring_8.html
new file mode 100644
index 00000000..def5e04a
--- /dev/null
+++ b/doc/libunistring_8.html
@@ -0,0 +1,2071 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: 8. Unicode character classification and properties &lt;unictype.h&gt;</title>
+
+<meta name="description" content="GNU libunistring: 8. Unicode character classification and properties &lt;unictype.h&gt;">
+<meta name="keywords" content="GNU libunistring: 8. Unicode character classification and properties &lt;unictype.h&gt;">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_7.html#SEC19" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_9.html#SEC37" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="unictype_002eh"></a>
+<a name="SEC20"></a>
+<h1 class="chapter"> <a href="libunistring.html#TOC20">8. Unicode character classification and properties <code>&lt;unictype.h&gt;</code></a> </h1>
+
+<p>This include file declares functions that classify Unicode characters
+and that test whether Unicode characters have specific properties.
+</p>
+<p>The classification assigns a &ldquo;general category&rdquo; to every Unicode
+character. This is similar to the classification provided by ISO C in
+<code>&lt;wctype.h&gt;</code>.
+</p>
+<p>Properties are the data that guides various text processing algorithms
+in the presence of specific Unicode characters.
+</p>
+
+<hr size="6">
+<a name="General-category"></a>
+<a name="SEC21"></a>
+<h2 class="section"> <a href="libunistring.html#TOC21">8.1 General category</a> </h2>
+
+<p>Every Unicode character or code point has a <em>general category</em> assigned
+to it. This classification is important for most algorithms that work on
+Unicode text.
+</p>
+<p>The GNU libunistring library provides two kinds of API for working with
+general categories. The object oriented API uses a variable to denote
+every predefined general category value or combinations thereof. The
+low-level API uses a bit mask instead. The advantage of the object oriented
+API is that if only a few predefined general category values are used,
+the data tables are relatively small. When you combine general category
+values (using <code>uc_general_category_or</code>, <code>uc_general_category_and</code>,
+or <code>uc_general_category_and_not</code>), or when you use the low level
+bit masks, a big table is used thats holds the complete general category
+information for all Unicode characters.
+</p>
+
+<hr size="6">
+<a name="Object-oriented-API"></a>
+<a name="SEC22"></a>
+<h3 class="subsection"> <a href="libunistring.html#TOC22">8.1.1 The object oriented API for general category</a> </h3>
+
+<dl>
+<dt><u>Type:</u> <b>uc_general_category_t</b>
+<a name="IDX241"></a>
+</dt>
+<dd><p>This data type denotes a general category value. It is an immediate type that
+can be copied by simple assignment, without involving memory allocation. It is
+not an array type.
+</p></dd></dl>
+
+<p>The following are the predefined general category value. Additional general
+categories may be added in the future.
+</p>
+<dl>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_L</b>
+<a name="IDX242"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Lu</b>
+<a name="IDX243"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Ll</b>
+<a name="IDX244"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Lt</b>
+<a name="IDX245"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Lm</b>
+<a name="IDX246"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Lo</b>
+<a name="IDX247"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_M</b>
+<a name="IDX248"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Mn</b>
+<a name="IDX249"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Mc</b>
+<a name="IDX250"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Me</b>
+<a name="IDX251"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_N</b>
+<a name="IDX252"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Nd</b>
+<a name="IDX253"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Nl</b>
+<a name="IDX254"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_No</b>
+<a name="IDX255"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_P</b>
+<a name="IDX256"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Pc</b>
+<a name="IDX257"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Pd</b>
+<a name="IDX258"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Ps</b>
+<a name="IDX259"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Pe</b>
+<a name="IDX260"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Pi</b>
+<a name="IDX261"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Pf</b>
+<a name="IDX262"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Po</b>
+<a name="IDX263"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_S</b>
+<a name="IDX264"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Sm</b>
+<a name="IDX265"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Sc</b>
+<a name="IDX266"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Sk</b>
+<a name="IDX267"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_So</b>
+<a name="IDX268"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Z</b>
+<a name="IDX269"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Zs</b>
+<a name="IDX270"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Zl</b>
+<a name="IDX271"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Zp</b>
+<a name="IDX272"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_C</b>
+<a name="IDX273"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Cc</b>
+<a name="IDX274"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Cf</b>
+<a name="IDX275"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Cs</b>
+<a name="IDX276"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Co</b>
+<a name="IDX277"></a>
+</dt>
+<dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Cn</b>
+<a name="IDX278"></a>
+</dt>
+</dl>
+
+<p>The following are alias names for predefined General category values.
+</p>
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_LETTER</b>
+<a name="IDX279"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_L</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_UPPERCASE_LETTER</b>
+<a name="IDX280"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Lu</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_LOWERCASE_LETTER</b>
+<a name="IDX281"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Ll</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_TITLECASE_LETTER</b>
+<a name="IDX282"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Lt</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_MODIFIER_LETTER</b>
+<a name="IDX283"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Lm</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_OTHER_LETTER</b>
+<a name="IDX284"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Lo</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_MARK</b>
+<a name="IDX285"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_M</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_NON_SPACING_MARK</b>
+<a name="IDX286"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Mn</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_COMBINING_SPACING_MARK</b>
+<a name="IDX287"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Mc</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_ENCLOSING_MARK</b>
+<a name="IDX288"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Me</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_NUMBER</b>
+<a name="IDX289"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_N</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_DECIMAL_DIGIT_NUMBER</b>
+<a name="IDX290"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Nd</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_LETTER_NUMBER</b>
+<a name="IDX291"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Nl</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_OTHER_NUMBER</b>
+<a name="IDX292"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_No</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_PUNCTUATION</b>
+<a name="IDX293"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_P</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_CONNECTOR_PUNCTUATION</b>
+<a name="IDX294"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Pc</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_DASH_PUNCTUATION</b>
+<a name="IDX295"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Pd</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_OPEN_PUNCTUATION</b>
+<a name="IDX296"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Ps</code> (&ldquo;start punctuation&rdquo;).
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_CLOSE_PUNCTUATION</b>
+<a name="IDX297"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Pe</code> (&ldquo;end punctuation&rdquo;).
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_INITIAL_QUOTE_PUNCTUATION</b>
+<a name="IDX298"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Pi</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_FINAL_QUOTE_PUNCTUATION</b>
+<a name="IDX299"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Pf</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_OTHER_PUNCTUATION</b>
+<a name="IDX300"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Po</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_SYMBOL</b>
+<a name="IDX301"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_S</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_MATH_SYMBOL</b>
+<a name="IDX302"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Sm</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_CURRENCY_SYMBOL</b>
+<a name="IDX303"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Sc</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_MODIFIER_SYMBOL</b>
+<a name="IDX304"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Sk</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_OTHER_SYMBOL</b>
+<a name="IDX305"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_So</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_SEPARATOR</b>
+<a name="IDX306"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Z</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_SPACE_SEPARATOR</b>
+<a name="IDX307"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Zs</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_LINE_SEPARATOR</b>
+<a name="IDX308"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Zl</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_PARAGRAPH_SEPARATOR</b>
+<a name="IDX309"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Zp</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_OTHER</b>
+<a name="IDX310"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_C</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_CONTROL</b>
+<a name="IDX311"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Cc</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_FORMAT</b>
+<a name="IDX312"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Cf</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_SURROGATE</b>
+<a name="IDX313"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Cs</code>. All code points in this
+category are invalid characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_PRIVATE_USE</b>
+<a name="IDX314"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Co</code>.
+</p></dd></dl>
+
+<dl>
+<dt><u>Macro:</u> uc_general_category_t <b>UC_UNASSIGNED</b>
+<a name="IDX315"></a>
+</dt>
+<dd><p>This is another name for <code>UC_CATEGORY_Cn</code>. Some code points in this
+category are invalid characters.
+</p></dd></dl>
+
+<p>The following functions combine general categories, like in a boolean algebra,
+except that there is no &lsquo;<samp>not</samp>&rsquo; operation.
+</p>
+<dl>
+<dt><u>Function:</u> uc_general_category_t <b>uc_general_category_or</b><i> (uc_general_category_t <var>category1</var>, uc_general_category_t <var>category2</var>)</i>
+<a name="IDX316"></a>
+</dt>
+<dd><p>Returns the union of two general categories.
+This corresponds to the unions of the two sets of characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uc_general_category_t <b>uc_general_category_and</b><i> (uc_general_category_t <var>category1</var>, uc_general_category_t <var>category2</var>)</i>
+<a name="IDX317"></a>
+</dt>
+<dd><p>Returns the intersection of two general categories as bit masks.
+This <em>does not</em> correspond to the intersection of the two sets of
+characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uc_general_category_t <b>uc_general_category_and_not</b><i> (uc_general_category_t <var>category1</var>, uc_general_category_t <var>category2</var>)</i>
+<a name="IDX318"></a>
+</dt>
+<dd><p>Returns the intersection of a general category with the complement of a
+second general category, as bit masks.
+This <em>does not</em> correspond to the intersection with complement, when
+viewing the categories as sets of characters.
+</p></dd></dl>
+
+<p>The following functions associate general categories with their name.
+</p>
+<dl>
+<dt><u>Function:</u> const char * <b>uc_general_category_name</b><i> (uc_general_category_t <var>category</var>)</i>
+<a name="IDX319"></a>
+</dt>
+<dd><p>Returns the name of a general category.
+Returns NULL if the general category corresponds to a bit mask that does not
+have a name.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> uc_general_category_t <b>uc_general_category_byname</b><i> (const char *<var>category_name</var>)</i>
+<a name="IDX320"></a>
+</dt>
+<dd><p>Returns the general category given by name, e.g. <code>&quot;Lu&quot;</code>.
+</p></dd></dl>
+
+<p>The following functions view general categories as sets of Unicode characters.
+</p>
+<dl>
+<dt><u>Function:</u> uc_general_category_t <b>uc_general_category</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX321"></a>
+</dt>
+<dd><p>Returns the general category of a Unicode character.
+</p>
+<p>This function uses a big table.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_general_category</b><i> (ucs4_t <var>uc</var>, uc_general_category_t <var>category</var>)</i>
+<a name="IDX322"></a>
+</dt>
+<dd><p>Tests whether a Unicode character belongs to a given category.
+The <var>category</var> argument can be a predefined general category or the
+combination of several predefined general categories.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Bit-mask-API"></a>
+<a name="SEC23"></a>
+<h3 class="subsection"> <a href="libunistring.html#TOC23">8.1.2 The bit mask API for general category</a> </h3>
+
+<p>The following are the predefined general category value as bit masks.
+Additional general categories may be added in the future.
+</p>
+<dl>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_L</b>
+<a name="IDX323"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Lu</b>
+<a name="IDX324"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Ll</b>
+<a name="IDX325"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Lt</b>
+<a name="IDX326"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Lm</b>
+<a name="IDX327"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Lo</b>
+<a name="IDX328"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_M</b>
+<a name="IDX329"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Mn</b>
+<a name="IDX330"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Mc</b>
+<a name="IDX331"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Me</b>
+<a name="IDX332"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_N</b>
+<a name="IDX333"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Nd</b>
+<a name="IDX334"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Nl</b>
+<a name="IDX335"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_No</b>
+<a name="IDX336"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_P</b>
+<a name="IDX337"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Pc</b>
+<a name="IDX338"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Pd</b>
+<a name="IDX339"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Ps</b>
+<a name="IDX340"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Pe</b>
+<a name="IDX341"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Pi</b>
+<a name="IDX342"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Pf</b>
+<a name="IDX343"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Po</b>
+<a name="IDX344"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_S</b>
+<a name="IDX345"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Sm</b>
+<a name="IDX346"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Sc</b>
+<a name="IDX347"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Sk</b>
+<a name="IDX348"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_So</b>
+<a name="IDX349"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Z</b>
+<a name="IDX350"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Zs</b>
+<a name="IDX351"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Zl</b>
+<a name="IDX352"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Zp</b>
+<a name="IDX353"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_C</b>
+<a name="IDX354"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Cc</b>
+<a name="IDX355"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Cf</b>
+<a name="IDX356"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Cs</b>
+<a name="IDX357"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Co</b>
+<a name="IDX358"></a>
+</dt>
+<dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Cn</b>
+<a name="IDX359"></a>
+</dt>
+</dl>
+
+<p>The following function views general categories as sets of Unicode characters.
+</p>
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_general_category_withtable</b><i> (ucs4_t <var>uc</var>, uint32_t <var>bitmask</var>)</i>
+<a name="IDX360"></a>
+</dt>
+<dd><p>Tests whether a Unicode character belongs to a given category.
+The <var>bitmask</var> argument can be a predefined general category bitmask or the
+combination of several predefined general category bitmasks.
+</p>
+<p>This function uses a big table comprising all general categories.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Canonical-combining-class"></a>
+<a name="SEC24"></a>
+<h2 class="section"> <a href="libunistring.html#TOC24">8.2 Canonical combining class</a> </h2>
+
+<p>Every Unicode character or code point has a <em>canonical combining class</em>
+assigned to it.
+</p>
+<p>What is the meaning of the canonical combining class? Essentially, it
+indicates the priority with which a combining character is attached to its
+base character. The characters for which the canonical combining class is 0
+are the base characters, and the characters for which it is greater than 0 are
+the combining characters. Combining characters are rendered
+near/attached/around their base character, and combining characters with small
+combining classes are attached &quot;first&quot; or &quot;closer&quot; to the base character.
+</p>
+<p>The canonical combining class of a character is a number in the range
+0..255. The possible values are described in the Unicode Character Database
+<a href="http://www.unicode.org/Public/UNIDATA/UCD.html">http://www.unicode.org/Public/UNIDATA/UCD.html</a>. The list here is
+not definitive; more values can be added in future versions.
+</p>
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_NR</b>
+<a name="IDX361"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Not Reordered&rdquo; characters.
+The value is 0.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_OV</b>
+<a name="IDX362"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Overlay&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_NK</b>
+<a name="IDX363"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Nukta&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_KV</b>
+<a name="IDX364"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Kana Voicing&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_VR</b>
+<a name="IDX365"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Virama&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_ATBL</b>
+<a name="IDX366"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Attached Below Left&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_ATB</b>
+<a name="IDX367"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Attached Below&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_ATAR</b>
+<a name="IDX368"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Attached Above Right&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_BL</b>
+<a name="IDX369"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Below Left&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_B</b>
+<a name="IDX370"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Below&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_BR</b>
+<a name="IDX371"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Below Right&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_L</b>
+<a name="IDX372"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Left&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_R</b>
+<a name="IDX373"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Right&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_AL</b>
+<a name="IDX374"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Above Left&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_A</b>
+<a name="IDX375"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Above&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_AR</b>
+<a name="IDX376"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Above Right&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_DB</b>
+<a name="IDX377"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Double Below&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_DA</b>
+<a name="IDX378"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Double Above&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_CCC_IS</b>
+<a name="IDX379"></a>
+</dt>
+<dd><p>The canonical combining class value for &ldquo;Iota Subscript&rdquo; characters.
+</p></dd></dl>
+
+<p>The following function looks up the canonical combining class of a character.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>uc_combining_class</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX380"></a>
+</dt>
+<dd><p>Returns the canonical combining class of a Unicode character.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Bidirectional-category"></a>
+<a name="SEC25"></a>
+<h2 class="section"> <a href="libunistring.html#TOC25">8.3 Bidirectional category</a> </h2>
+
+<p>Every Unicode character or code point has a <em>bidirectional category</em>
+assigned to it.
+</p>
+<p>The bidirectional category guides the bidirectional algorithm
+(<a href="http://www.unicode.org/reports/tr9/">http://www.unicode.org/reports/tr9/</a>). The possible values are
+the following.
+</p>
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_L</b>
+<a name="IDX381"></a>
+</dt>
+<dd><p>The bidirectional category for `Left-to-Right`&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_LRE</b>
+<a name="IDX382"></a>
+</dt>
+<dd><p>The bidirectional category for &ldquo;Left-to-Right Embedding&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_LRO</b>
+<a name="IDX383"></a>
+</dt>
+<dd><p>The bidirectional category for &ldquo;Left-to-Right Override&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_R</b>
+<a name="IDX384"></a>
+</dt>
+<dd><p>The bidirectional category for &ldquo;Right-to-Left&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_AL</b>
+<a name="IDX385"></a>
+</dt>
+<dd><p>The bidirectional category for &ldquo;Right-to-Left Arabic&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_RLE</b>
+<a name="IDX386"></a>
+</dt>
+<dd><p>The bidirectional category for &ldquo;Right-to-Left Embedding&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_RLO</b>
+<a name="IDX387"></a>
+</dt>
+<dd><p>The bidirectional category for &ldquo;Right-to-Left Override&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_PDF</b>
+<a name="IDX388"></a>
+</dt>
+<dd><p>The bidirectional category for &ldquo;Pop Directional Format&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_EN</b>
+<a name="IDX389"></a>
+</dt>
+<dd><p>The bidirectional category for &ldquo;European Number&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_ES</b>
+<a name="IDX390"></a>
+</dt>
+<dd><p>The bidirectional category for &ldquo;European Number Separator&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_ET</b>
+<a name="IDX391"></a>
+</dt>
+<dd><p>The bidirectional category for &ldquo;European Number Terminator&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_AN</b>
+<a name="IDX392"></a>
+</dt>
+<dd><p>The bidirectional category for &ldquo;Arabic Number&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_CS</b>
+<a name="IDX393"></a>
+</dt>
+<dd><p>The bidirectional category for &ldquo;Common Number Separator&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_NSM</b>
+<a name="IDX394"></a>
+</dt>
+<dd><p>The bidirectional category for &ldquo;Non-Spacing Mark&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_BN</b>
+<a name="IDX395"></a>
+</dt>
+<dd><p>The bidirectional category for &ldquo;Boundary Neutral&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_B</b>
+<a name="IDX396"></a>
+</dt>
+<dd><p>The bidirectional category for &ldquo;Paragraph Separator&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_S</b>
+<a name="IDX397"></a>
+</dt>
+<dd><p>The bidirectional category for &ldquo;Segment Separator&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_WS</b>
+<a name="IDX398"></a>
+</dt>
+<dd><p>The bidirectional category for &ldquo;Whitespace&rdquo; characters.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_BIDI_ON</b>
+<a name="IDX399"></a>
+</dt>
+<dd><p>The bidirectional category for &ldquo;Other Neutral&rdquo; characters.
+</p></dd></dl>
+
+<p>The following functions implement the association between a bidirectional
+category and its name.
+</p>
+<dl>
+<dt><u>Function:</u> const char * <b>uc_bidi_category_name</b><i> (int <var>category</var>)</i>
+<a name="IDX400"></a>
+</dt>
+<dd><p>Returns the name of a bidirectional category.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> int <b>uc_bidi_category_byname</b><i> (const char *<var>category_name</var>)</i>
+<a name="IDX401"></a>
+</dt>
+<dd><p>Returns the bidirectional category given by name, e.g. <code>&quot;LRE&quot;</code>.
+</p></dd></dl>
+
+<p>The following functions view bidirectional categories as sets of Unicode
+characters.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>uc_bidi_category</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX402"></a>
+</dt>
+<dd><p>Returns the bidirectional category of a Unicode character.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_bidi_category</b><i> (ucs4_t <var>uc</var>, int <var>category</var>)</i>
+<a name="IDX403"></a>
+</dt>
+<dd><p>Tests whether a Unicode character belongs to a given bidirectional category.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Decimal-digit-value"></a>
+<a name="SEC26"></a>
+<h2 class="section"> <a href="libunistring.html#TOC26">8.4 Decimal digit value</a> </h2>
+
+<p>Decimal digits (like the digits from &lsquo;<samp>0</samp>&rsquo; to &lsquo;<samp>9</samp>&rsquo;) exist in many
+scripts. The following function converts a decimal digit character to its
+numerical value.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>uc_decimal_value</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX404"></a>
+</dt>
+<dd><p>Returns the decimal digit value of a Unicode character.
+The return value is an integer in the range 0..9, or -1 for characters that
+do not represent a decimal digit.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Digit-value"></a>
+<a name="SEC27"></a>
+<h2 class="section"> <a href="libunistring.html#TOC27">8.5 Digit value</a> </h2>
+
+<p>Digit characters are like decimal digit characters, possibly in special forms,
+like as superscript, subscript, or circled. The following function converts a
+digit character to its numerical value.
+</p>
+<dl>
+<dt><u>Function:</u> int <b>uc_digit_value</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX405"></a>
+</dt>
+<dd><p>Returns the digit value of a Unicode character.
+The return value is an integer in the range 0..9, or -1 for characters that
+do not represent a digit.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Numeric-value"></a>
+<a name="SEC28"></a>
+<h2 class="section"> <a href="libunistring.html#TOC28">8.6 Numeric value</a> </h2>
+
+<p>There are also characters that represent numbers without a digit system, like
+the Roman numerals, and fractional numbers, like 1/4 or 3/4.
+</p>
+<p>The following type represents the numeric value of a Unicode character.
+</p><dl>
+<dt><u>Type:</u> <b>uc_fraction_t</b>
+<a name="IDX406"></a>
+</dt>
+<dd><p>This is a structure type with the following fields:
+</p><table><tr><td>&nbsp;</td><td><pre class="smallexample">int numerator;
+int denominator;
+</pre></td></tr></table>
+<p>An integer <var>n</var> is represented by <code>numerator = <var>n</var></code>,
+<code>denominator = 1</code>.
+</p></dd></dl>
+
+<p>The following function converts a number character to its numerical value.
+</p>
+<dl>
+<dt><u>Function:</u> uc_fraction_t <b>uc_numeric_value</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX407"></a>
+</dt>
+<dd><p>Returns the numeric value of a Unicode character.
+The return value is a fraction, or the pseudo-fraction <code>{ 0, 0 }</code> for
+characters that do not represent a number.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Mirrored-character"></a>
+<a name="SEC29"></a>
+<h2 class="section"> <a href="libunistring.html#TOC29">8.7 Mirrored character</a> </h2>
+
+<p>Character mirroring is used to associate the closing parenthesis character
+to the opening parenthesis character, the closing brace character with the
+opening brace character, and so on.
+</p>
+<p>The following function looks up the mirrored character of a Unicode character.
+</p>
+<dl>
+<dt><u>Function:</u> bool <b>uc_mirror_char</b><i> (ucs4_t <var>uc</var>, ucs4_t *<var>puc</var>)</i>
+<a name="IDX408"></a>
+</dt>
+<dd><p>Stores the mirrored character of a Unicode character <var>uc</var> in
+<code>*<var>puc</var></code> and returns <code>true</code>, if it exists. Otherwise it
+stores <var>uc</var> unmodified in <code>*<var>puc</var></code> and returns <code>false</code>.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Properties"></a>
+<a name="SEC30"></a>
+<h2 class="section"> <a href="libunistring.html#TOC30">8.8 Properties</a> </h2>
+
+<p>This section defines boolean properties of Unicode characters. This
+means, a character either has the given property or does not have it.
+In other words, the property can be viewed as a subset of the set of
+Unicode characters.
+</p>
+<p>The GNU libunistring library provides two kinds of API for working with
+properties. The object oriented API uses a type <code>uc_property_t</code>
+to designate a property. In the function-based API, which is a bit more
+low level, a property is merely a function.
+</p>
+
+<hr size="6">
+<a name="Properties-as-objects"></a>
+<a name="SEC31"></a>
+<h3 class="subsection"> <a href="libunistring.html#TOC31">8.8.1 Properties as objects &ndash; the object oriented API</a> </h3>
+
+<p>The following type designates a property on Unicode characters.
+</p>
+<dl>
+<dt><u>Type:</u> <b>uc_property_t</b>
+<a name="IDX409"></a>
+</dt>
+<dd><p>This data type denotes a boolean property on Unicode characters. It is an
+immediate type that can be copied by simple assignment, without involving
+memory allocation. It is not an array type.
+</p></dd></dl>
+
+<p>Many Unicode properties are predefined.
+</p>
+<p>The following are general properties.
+</p>
+<dl>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_WHITE_SPACE</b>
+<a name="IDX410"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_ALPHABETIC</b>
+<a name="IDX411"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_OTHER_ALPHABETIC</b>
+<a name="IDX412"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_NOT_A_CHARACTER</b>
+<a name="IDX413"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT</b>
+<a name="IDX414"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT</b>
+<a name="IDX415"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_DEPRECATED</b>
+<a name="IDX416"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_LOGICAL_ORDER_EXCEPTION</b>
+<a name="IDX417"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_VARIATION_SELECTOR</b>
+<a name="IDX418"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_PRIVATE_USE</b>
+<a name="IDX419"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_UNASSIGNED_CODE_VALUE</b>
+<a name="IDX420"></a>
+</dt>
+</dl>
+
+<p>The following properties are related to case folding.
+</p>
+<dl>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_UPPERCASE</b>
+<a name="IDX421"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_OTHER_UPPERCASE</b>
+<a name="IDX422"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_LOWERCASE</b>
+<a name="IDX423"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_OTHER_LOWERCASE</b>
+<a name="IDX424"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_TITLECASE</b>
+<a name="IDX425"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_SOFT_DOTTED</b>
+<a name="IDX426"></a>
+</dt>
+</dl>
+
+<p>The following properties are related to identifiers.
+</p>
+<dl>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_ID_START</b>
+<a name="IDX427"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_OTHER_ID_START</b>
+<a name="IDX428"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_ID_CONTINUE</b>
+<a name="IDX429"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_OTHER_ID_CONTINUE</b>
+<a name="IDX430"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_XID_START</b>
+<a name="IDX431"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_XID_CONTINUE</b>
+<a name="IDX432"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_PATTERN_WHITE_SPACE</b>
+<a name="IDX433"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_PATTERN_SYNTAX</b>
+<a name="IDX434"></a>
+</dt>
+</dl>
+
+<p>The following properties have an influence on shaping and rendering.
+</p>
+<dl>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_JOIN_CONTROL</b>
+<a name="IDX435"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_GRAPHEME_BASE</b>
+<a name="IDX436"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_GRAPHEME_EXTEND</b>
+<a name="IDX437"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_OTHER_GRAPHEME_EXTEND</b>
+<a name="IDX438"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_GRAPHEME_LINK</b>
+<a name="IDX439"></a>
+</dt>
+</dl>
+
+<p>The following properties relate to bidirectional reordering.
+</p>
+<dl>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_CONTROL</b>
+<a name="IDX440"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_LEFT_TO_RIGHT</b>
+<a name="IDX441"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT</b>
+<a name="IDX442"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT</b>
+<a name="IDX443"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_EUROPEAN_DIGIT</b>
+<a name="IDX444"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_EUR_NUM_SEPARATOR</b>
+<a name="IDX445"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_EUR_NUM_TERMINATOR</b>
+<a name="IDX446"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_ARABIC_DIGIT</b>
+<a name="IDX447"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_COMMON_SEPARATOR</b>
+<a name="IDX448"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_BLOCK_SEPARATOR</b>
+<a name="IDX449"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_SEGMENT_SEPARATOR</b>
+<a name="IDX450"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_WHITESPACE</b>
+<a name="IDX451"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_NON_SPACING_MARK</b>
+<a name="IDX452"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_BOUNDARY_NEUTRAL</b>
+<a name="IDX453"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_PDF</b>
+<a name="IDX454"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE</b>
+<a name="IDX455"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_OTHER_NEUTRAL</b>
+<a name="IDX456"></a>
+</dt>
+</dl>
+
+<p>The following properties deal with number representations.
+</p>
+<dl>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_HEX_DIGIT</b>
+<a name="IDX457"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_ASCII_HEX_DIGIT</b>
+<a name="IDX458"></a>
+</dt>
+</dl>
+
+<p>The following properties deal with CJK.
+</p>
+<dl>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_IDEOGRAPHIC</b>
+<a name="IDX459"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_UNIFIED_IDEOGRAPH</b>
+<a name="IDX460"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_RADICAL</b>
+<a name="IDX461"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_IDS_BINARY_OPERATOR</b>
+<a name="IDX462"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_IDS_TRINARY_OPERATOR</b>
+<a name="IDX463"></a>
+</dt>
+</dl>
+
+<p>Other miscellaneous properties are:
+</p>
+<dl>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_ZERO_WIDTH</b>
+<a name="IDX464"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_SPACE</b>
+<a name="IDX465"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_NON_BREAK</b>
+<a name="IDX466"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_ISO_CONTROL</b>
+<a name="IDX467"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_FORMAT_CONTROL</b>
+<a name="IDX468"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_DASH</b>
+<a name="IDX469"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_HYPHEN</b>
+<a name="IDX470"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_PUNCTUATION</b>
+<a name="IDX471"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_LINE_SEPARATOR</b>
+<a name="IDX472"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_PARAGRAPH_SEPARATOR</b>
+<a name="IDX473"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_QUOTATION_MARK</b>
+<a name="IDX474"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_SENTENCE_TERMINAL</b>
+<a name="IDX475"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_TERMINAL_PUNCTUATION</b>
+<a name="IDX476"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_CURRENCY_SYMBOL</b>
+<a name="IDX477"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_MATH</b>
+<a name="IDX478"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_OTHER_MATH</b>
+<a name="IDX479"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_PAIRED_PUNCTUATION</b>
+<a name="IDX480"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_LEFT_OF_PAIR</b>
+<a name="IDX481"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_COMBINING</b>
+<a name="IDX482"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_COMPOSITE</b>
+<a name="IDX483"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_DECIMAL_DIGIT</b>
+<a name="IDX484"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_NUMERIC</b>
+<a name="IDX485"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_DIACRITIC</b>
+<a name="IDX486"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_EXTENDER</b>
+<a name="IDX487"></a>
+</dt>
+<dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_IGNORABLE_CONTROL</b>
+<a name="IDX488"></a>
+</dt>
+</dl>
+
+<p>The following function looks up a property by its name.
+</p>
+<dl>
+<dt><u>Function:</u> uc_property_t <b>uc_property_byname</b><i> (const char *<var>property_name</var>)</i>
+<a name="IDX489"></a>
+</dt>
+<dd><p>Returns the property given by name, e.g. <code>&quot;White space&quot;</code>. If a property
+with the given name exists, the result will satisfy the
+<code>uc_property_is_valid</code> predicate. Otherwise the result will not satisfy
+this predicate and must not be passed to functions that expect an
+<code>uc_property_t</code> argument.
+</p>
+<p>This function references a big table of all predefined properties. Its use
+can significantly increase the size of your application.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> bool <b>uc_property_is_valid</b><i> (uc_property_t property)</i>
+<a name="IDX490"></a>
+</dt>
+<dd><p>Returns <code>true</code> when the given property is valid, or <code>false</code>
+otherwise.
+</p></dd></dl>
+
+<p>The following function views a property as a set of Unicode characters.
+</p>
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_property</b><i> (ucs4_t <var>uc</var>, uc_property_t <var>property</var>)</i>
+<a name="IDX491"></a>
+</dt>
+<dd><p>Tests whether the Unicode character <var>uc</var> has the given property.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Properties-as-functions"></a>
+<a name="SEC32"></a>
+<h3 class="subsection"> <a href="libunistring.html#TOC32">8.8.2 Properties as functions &ndash; the functional API</a> </h3>
+
+<p>The following are general properties.
+</p>
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_property_white_space</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX492"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_alphabetic</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX493"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_other_alphabetic</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX494"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_not_a_character</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX495"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_default_ignorable_code_point</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX496"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_other_default_ignorable_code_point</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX497"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_deprecated</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX498"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_logical_order_exception</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX499"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_variation_selector</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX500"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_private_use</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX501"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_unassigned_code_value</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX502"></a>
+</dt>
+</dl>
+
+<p>The following properties are related to case folding.
+</p>
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_property_uppercase</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX503"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_other_uppercase</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX504"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_lowercase</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX505"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_other_lowercase</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX506"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_titlecase</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX507"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_soft_dotted</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX508"></a>
+</dt>
+</dl>
+
+<p>The following properties are related to identifiers.
+</p>
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_property_id_start</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX509"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_other_id_start</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX510"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_id_continue</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX511"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_other_id_continue</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX512"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_xid_start</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX513"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_xid_continue</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX514"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_pattern_white_space</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX515"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_pattern_syntax</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX516"></a>
+</dt>
+</dl>
+
+<p>The following properties have an influence on shaping and rendering.
+</p>
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_property_join_control</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX517"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_grapheme_base</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX518"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_grapheme_extend</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX519"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_other_grapheme_extend</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX520"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_grapheme_link</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX521"></a>
+</dt>
+</dl>
+
+<p>The following properties relate to bidirectional reordering.
+</p>
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_property_bidi_control</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX522"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_bidi_left_to_right</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX523"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_bidi_hebrew_right_to_left</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX524"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_bidi_arabic_right_to_left</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX525"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_bidi_european_digit</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX526"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_bidi_eur_num_separator</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX527"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_bidi_eur_num_terminator</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX528"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_bidi_arabic_digit</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX529"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_bidi_common_separator</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX530"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_bidi_block_separator</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX531"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_bidi_segment_separator</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX532"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_bidi_whitespace</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX533"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_bidi_non_spacing_mark</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX534"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_bidi_boundary_neutral</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX535"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_bidi_pdf</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX536"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_bidi_embedding_or_override</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX537"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_bidi_other_neutral</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX538"></a>
+</dt>
+</dl>
+
+<p>The following properties deal with number representations.
+</p>
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_property_hex_digit</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX539"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_ascii_hex_digit</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX540"></a>
+</dt>
+</dl>
+
+<p>The following properties deal with CJK.
+</p>
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_property_ideographic</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX541"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_unified_ideograph</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX542"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_radical</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX543"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_ids_binary_operator</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX544"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_ids_trinary_operator</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX545"></a>
+</dt>
+</dl>
+
+<p>Other miscellaneous properties are:
+</p>
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_property_zero_width</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX546"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_space</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX547"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_non_break</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX548"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_iso_control</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX549"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_format_control</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX550"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_dash</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX551"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_hyphen</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX552"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_punctuation</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX553"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_line_separator</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX554"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_paragraph_separator</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX555"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_quotation_mark</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX556"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_sentence_terminal</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX557"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_terminal_punctuation</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX558"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_currency_symbol</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX559"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_math</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX560"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_other_math</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX561"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_paired_punctuation</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX562"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_left_of_pair</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX563"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_combining</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX564"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_composite</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX565"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_decimal_digit</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX566"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_numeric</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX567"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_diacritic</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX568"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_extender</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX569"></a>
+</dt>
+<dt><u>Function:</u> bool <b>uc_is_property_ignorable_control</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX570"></a>
+</dt>
+</dl>
+
+<hr size="6">
+<a name="Scripts"></a>
+<a name="SEC33"></a>
+<h2 class="section"> <a href="libunistring.html#TOC33">8.9 Scripts</a> </h2>
+
+<p>The Unicode characters are subdivided into scripts.
+</p>
+<p>The following type is used to represent a script:
+</p>
+<dl>
+<dt><u>Type:</u> <b>uc_script_t</b>
+<a name="IDX571"></a>
+</dt>
+<dd><p>This data type is a structure type that refers to statically allocated
+read-only data. It contains the following fields:
+</p><table><tr><td>&nbsp;</td><td><pre class="smallexample">const char *name;
+</pre></td></tr></table>
+
+<p>The <code>name</code> field contains the name of the script.
+</p></dd></dl>
+
+<a name="IDX572"></a>
+<p>The following functions look up a script.
+</p>
+<dl>
+<dt><u>Function:</u> const uc_script_t * <b>uc_script</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX573"></a>
+</dt>
+<dd><p>Returns the script of a Unicode character. Returns NULL if <var>uc</var> does not
+belong to any script.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> const uc_script_t * <b>uc_script_byname</b><i> (const char *<var>script_name</var>)</i>
+<a name="IDX574"></a>
+</dt>
+<dd><p>Returns the script given by its name, e.g. <code>&quot;HAN&quot;</code>. Returns NULL if a
+script with the given name does not exist.
+</p></dd></dl>
+
+<p>The following function views a script as a set of Unicode characters.
+</p>
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_script</b><i> (ucs4_t <var>uc</var>, const uc_script_t *<var>script</var>)</i>
+<a name="IDX575"></a>
+</dt>
+<dd><p>Tests whether a Unicode character belongs to a given script.
+</p></dd></dl>
+
+<p>The following gives a global picture of all scripts.
+</p>
+<dl>
+<dt><u>Function:</u> void <b>uc_all_scripts</b><i> (const uc_script_t **<var>scripts</var>, size_t *<var>count</var>)</i>
+<a name="IDX576"></a>
+</dt>
+<dd><p>Get the list of all scripts. Stores a pointer to an array of all scripts in
+<code>*<var>scripts</var></code> and the length of this array in <code>*<var>count</var></code>.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Blocks"></a>
+<a name="SEC34"></a>
+<h2 class="section"> <a href="libunistring.html#TOC34">8.10 Blocks</a> </h2>
+
+<p>The Unicode characters are subdivided into blocks. A block is an interval of
+Unicode code points.
+</p>
+<p>The following type is used to represent a block.
+</p>
+<dl>
+<dt><u>Type:</u> <b>uc_block_t</b>
+<a name="IDX577"></a>
+</dt>
+<dd><p>This data type is a structure type that refers to statically allocated data.
+It contains the following fields:
+</p><table><tr><td>&nbsp;</td><td><pre class="smallexample">ucs4_t start;
+ucs4_t end;
+const char *name;
+</pre></td></tr></table>
+
+<p>The <code>start</code> field is the first Unicode code point in the block.
+</p>
+<p>The <code>end</code> field is the last Unicode code point in the block.
+</p>
+<p>The <code>name</code> field is the name of the block.
+</p></dd></dl>
+
+<a name="IDX578"></a>
+<p>The following function looks up a block.
+</p>
+<dl>
+<dt><u>Function:</u> const uc_block_t * <b>uc_block</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX579"></a>
+</dt>
+<dd><p>Returns the block a character belongs to.
+</p></dd></dl>
+
+<p>The following function views a block as a set of Unicode characters.
+</p>
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_block</b><i> (ucs4_t <var>uc</var>, const uc_block_t *<var>block</var>)</i>
+<a name="IDX580"></a>
+</dt>
+<dd><p>Tests whether a Unicode character belongs to a given block.
+</p></dd></dl>
+
+<p>The following gives a global picture of all block.
+</p>
+<dl>
+<dt><u>Function:</u> void <b>uc_all_blocks</b><i> (const uc_block_t **<var>blocks</var>, size_t *<var>count</var>)</i>
+<a name="IDX581"></a>
+</dt>
+<dd><p>Get the list of all blocks. Stores a pointer to an array of all blocks in
+<code>*<var>blocks</var></code> and the length of this array in <code>*<var>count</var></code>.
+</p></dd></dl>
+
+<hr size="6">
+<a name="ISO-C-and-Java-syntax"></a>
+<a name="SEC35"></a>
+<h2 class="section"> <a href="libunistring.html#TOC35">8.11 ISO C and Java syntax</a> </h2>
+
+<p>The following properties are taken from language standards. The supported
+language standards are ISO C 99 and Java.
+</p>
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_c_whitespace</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX582"></a>
+</dt>
+<dd><p>Tests whether a Unicode character is considered whitespace in ISO C 99.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_java_whitespace</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX583"></a>
+</dt>
+<dd><p>Tests whether a Unicode character is considered whitespace in Java.
+</p></dd></dl>
+
+<p>The following enumerated values are the possible return values of the functions
+<code>uc_c_ident_category</code> and <code>uc_java_ident_category</code>.
+</p>
+<dl>
+<dt><u>Constant:</u> int <b>UC_IDENTIFIER_START</b>
+<a name="IDX584"></a>
+</dt>
+<dd><p>This return value means that the given character is valid as first or
+subsequent character in an identifier.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_IDENTIFIER_VALID</b>
+<a name="IDX585"></a>
+</dt>
+<dd><p>This return value means that the given character is valid as subsequent
+character only.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_IDENTIFIER_INVALID</b>
+<a name="IDX586"></a>
+</dt>
+<dd><p>This return value means that the given character is not valid in an identifier.
+</p></dd></dl>
+
+<dl>
+<dt><u>Constant:</u> int <b>UC_IDENTIFIER_IGNORABLE</b>
+<a name="IDX587"></a>
+</dt>
+<dd><p>This return value (only for Java) means that the given character is ignorable.
+</p></dd></dl>
+
+<p>The following function determine whether a given character can be a constituent
+of an identifier in the given programming language.
+</p>
+<a name="IDX588"></a>
+<dl>
+<dt><u>Function:</u> int <b>uc_c_ident_category</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX589"></a>
+</dt>
+<dd><p>Returns the categorization of a Unicode character with respect to the ISO C 99
+identifier syntax.
+</p></dd></dl>
+
+<a name="IDX590"></a>
+<dl>
+<dt><u>Function:</u> int <b>uc_java_ident_category</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX591"></a>
+</dt>
+<dd><p>Returns the categorization of a Unicode character with respect to the Java
+identifier syntax.
+</p></dd></dl>
+
+<hr size="6">
+<a name="Classifications-like-in-ISO-C"></a>
+<a name="SEC36"></a>
+<h2 class="section"> <a href="libunistring.html#TOC36">8.12 Classifications like in ISO C</a> </h2>
+
+<p>The following character classifications mimic those declared in the ISO C
+header files <code>&lt;ctype.h&gt;</code> and <code>&lt;wctype.h&gt;</code>. These functions are
+deprecated, because this set of functions was designed with ASCII in mind and
+cannot reflect the more diverse reality of the Unicode character set. But
+they can be a quick-and-dirty porting aid when migrating from <code>wchar_t</code>
+APIs to Unicode strings.
+</p>
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_alnum</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX592"></a>
+</dt>
+<dd><p>Tests for any character for which <code>uc_is_alpha</code> or <code>uc_is_digit</code> is
+true.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_alpha</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX593"></a>
+</dt>
+<dd><p>Tests for any character for which <code>uc_is_upper</code> or <code>uc_is_lower</code> is
+true, or any character that is one of a locale-specific set of characters for
+which none of <code>uc_is_cntrl</code>, <code>uc_is_digit</code>, <code>uc_is_punct</code>, or
+<code>uc_is_space</code> is true.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_cntrl</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX594"></a>
+</dt>
+<dd><p>Tests for any control character.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_digit</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX595"></a>
+</dt>
+<dd><p>Tests for any character that corresponds to a decimal-digit character.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_graph</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX596"></a>
+</dt>
+<dd><p>Tests for any character for which <code>uc_is_print</code> is true and
+<code>uc_is_space</code> is false.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_lower</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX597"></a>
+</dt>
+<dd><p>Tests for any character that corresponds to a lowercase letter or is one
+of a locale-specific set of characters for which none of <code>uc_is_cntrl</code>,
+<code>uc_is_digit</code>, <code>uc_is_punct</code>, or <code>uc_is_space</code> is true.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_print</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX598"></a>
+</dt>
+<dd><p>Tests for any printing character.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_punct</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX599"></a>
+</dt>
+<dd><p>Tests for any printing character that is one of a locale-specific set of
+characters for which neither <code>uc_is_space</code> nor <code>uc_is_alnum</code> is true.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_space</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX600"></a>
+</dt>
+<dd><p>Test for any character that corresponds to a locale-specific set of characters
+for which none of <code>uc_is_alnum</code>, <code>uc_is_graph</code>, or <code>uc_is_punct</code>
+is true.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_upper</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX601"></a>
+</dt>
+<dd><p>Tests for any character that corresponds to an uppercase letter or is one
+of a locale-specific set of characters for which none of <code>uc_is_cntrl</code>,
+<code>uc_is_digit</code>, <code>uc_is_punct</code>, or <code>uc_is_space</code> is true.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_xdigit</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX602"></a>
+</dt>
+<dd><p>Tests for any character that corresponds to a hexadecimal-digit character.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> bool <b>uc_is_blank</b><i> (ucs4_t <var>uc</var>)</i>
+<a name="IDX603"></a>
+</dt>
+<dd><p>Tests for any character that corresponds to a standard blank character or
+a locale-specific set of characters for which <code>uc_is_alnum</code> is false.
+</p></dd></dl>
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC20" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_9.html#SEC37" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_9.html b/doc/libunistring_9.html
new file mode 100644
index 00000000..0586e0f2
--- /dev/null
+++ b/doc/libunistring_9.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: 9. Display width &lt;uniwidth.h&gt;</title>
+
+<meta name="description" content="GNU libunistring: 9. Display width &lt;uniwidth.h&gt;">
+<meta name="keywords" content="GNU libunistring: 9. Display width &lt;uniwidth.h&gt;">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_8.html#SEC20" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_10.html#SEC38" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+
+<hr size="2">
+<a name="uniwidth_002eh"></a>
+<a name="SEC37"></a>
+<h1 class="chapter"> <a href="libunistring.html#TOC37">9. Display width <code>&lt;uniwidth.h&gt;</code></a> </h1>
+
+<p>This include file declares functions that return the display width, measured
+in columns, of characters or strings, when output to a device that uses
+non-proportional fonts.
+</p>
+<a name="IDX604"></a>
+<p>Note that for some rarely used characters the actual fonts or terminal
+emulators can use a different width. There is no mechanism for communicating
+the display width of characters across a Unix pseudo-terminal (tty). Also,
+there are scripts with complex rendering, like the Indic scripts. For these
+scripts, there is no such concept as non-proportional fonts. Therefore
+the results of these functions usually work fine on most scripts and on
+most characters but can fail to represent the actual display width.
+</p>
+<p>These functions are locale dependent. The <var>encoding</var> argument identifies
+the encoding (e.g. <code>&quot;ISO-8859-2&quot;</code> for Polish).
+</p>
+<a name="IDX605"></a>
+<a name="IDX606"></a>
+<a name="IDX607"></a>
+<dl>
+<dt><u>Function:</u> int <b>uc_width</b><i> (ucs4_t <var>uc</var>, const char *<var>encoding</var>)</i>
+<a name="IDX608"></a>
+</dt>
+<dd><p>Determines and returns the number of column positions required for <var>uc</var>.
+Returns -1 if <var>uc</var> is a control character that has an influence on the
+column position when output.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> int <b>u8_width</b><i> (const uint8_t *<var>s</var>, size_t <var>n</var>, const char *<var>encoding</var>)</i>
+<a name="IDX609"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_width</b><i> (const uint16_t *<var>s</var>, size_t <var>n</var>, const char *<var>encoding</var>)</i>
+<a name="IDX610"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_width</b><i> (const uint32_t *<var>s</var>, size_t <var>n</var>, const char *<var>encoding</var>)</i>
+<a name="IDX611"></a>
+</dt>
+<dd><p>Determines and returns the number of column positions required for first
+<var>n</var> units (or fewer if <var>s</var> ends before this) in <var>s</var>. This
+function ignores control characters in the string.
+</p></dd></dl>
+
+<dl>
+<dt><u>Function:</u> int <b>u8_strwidth</b><i> (const uint8_t *<var>s</var>, const char *<var>encoding</var>)</i>
+<a name="IDX612"></a>
+</dt>
+<dt><u>Function:</u> int <b>u16_strwidth</b><i> (const uint16_t *<var>s</var>, const char *<var>encoding</var>)</i>
+<a name="IDX613"></a>
+</dt>
+<dt><u>Function:</u> int <b>u32_strwidth</b><i> (const uint32_t *<var>s</var>, const char *<var>encoding</var>)</i>
+<a name="IDX614"></a>
+</dt>
+<dd><p>Determines and returns the number of column positions required for <var>s</var>.
+This function ignores control characters in the string.
+</p></dd></dl>
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring_8.html#SEC20" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_10.html#SEC38" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_abt.html b/doc/libunistring_abt.html
new file mode 100644
index 00000000..47d71bac
--- /dev/null
+++ b/doc/libunistring_abt.html
@@ -0,0 +1,167 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: About This Document</title>
+
+<meta name="description" content="GNU libunistring: About This Document">
+<meta name="keywords" content="GNU libunistring: About This Document">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="SEC_About"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1>About This Document</h1>
+<p>
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+</p>
+<p>
+ The buttons in the navigation panels have the following meaning:
+</p>
+<table border="1">
+ <tr>
+ <th> Button </th>
+ <th> Name </th>
+ <th> Go to </th>
+ <th> From 1.2.3 go to</th>
+ </tr>
+ <tr>
+ <td align="center"> [ &lt; ] </td>
+ <td align="center">Back</td>
+ <td>Previous section in reading order</td>
+ <td>1.2.2</td>
+ </tr>
+ <tr>
+ <td align="center"> [ &gt; ] </td>
+ <td align="center">Forward</td>
+ <td>Next section in reading order</td>
+ <td>1.2.4</td>
+ </tr>
+ <tr>
+ <td align="center"> [ &lt;&lt; ] </td>
+ <td align="center">FastBack</td>
+ <td>Beginning of this chapter or previous chapter</td>
+ <td>1</td>
+ </tr>
+ <tr>
+ <td align="center"> [ Up ] </td>
+ <td align="center">Up</td>
+ <td>Up section</td>
+ <td>1.2</td>
+ </tr>
+ <tr>
+ <td align="center"> [ &gt;&gt; ] </td>
+ <td align="center">FastForward</td>
+ <td>Next chapter</td>
+ <td>2</td>
+ </tr>
+ <tr>
+ <td align="center"> [Top] </td>
+ <td align="center">Top</td>
+ <td>Cover (top) of document</td>
+ <td> &nbsp; </td>
+ </tr>
+ <tr>
+ <td align="center"> [Contents] </td>
+ <td align="center">Contents</td>
+ <td>Table of contents</td>
+ <td> &nbsp; </td>
+ </tr>
+ <tr>
+ <td align="center"> [Index] </td>
+ <td align="center">Index</td>
+ <td>Index</td>
+ <td> &nbsp; </td>
+ </tr>
+ <tr>
+ <td align="center"> [ ? ] </td>
+ <td align="center">About</td>
+ <td>About (help)</td>
+ <td> &nbsp; </td>
+ </tr>
+</table>
+
+<p>
+ where the <strong> Example </strong> assumes that the current position is at <strong> Subsubsection One-Two-Three </strong> of a document of the following structure:
+</p>
+
+<ul>
+ <li> 1. Section One
+ <ul>
+ <li>1.1 Subsection One-One
+ <ul>
+ <li>...</li>
+ </ul>
+ </li>
+ <li>1.2 Subsection One-Two
+ <ul>
+ <li>1.2.1 Subsubsection One-Two-One</li>
+ <li>1.2.2 Subsubsection One-Two-Two</li>
+ <li>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp;
+ <strong>&lt;== Current Position </strong></li>
+ <li>1.2.4 Subsubsection One-Two-Four</li>
+ </ul>
+ </li>
+ <li>1.3 Subsection One-Three
+ <ul>
+ <li>...</li>
+ </ul>
+ </li>
+ <li>1.4 Subsection One-Four</li>
+ </ul>
+ </li>
+</ul>
+
+<hr size="1">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/libunistring_toc.html b/doc/libunistring_toc.html
new file mode 100644
index 00000000..e7e4e51e
--- /dev/null
+++ b/doc/libunistring_toc.html
@@ -0,0 +1,164 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on July, 1 2009 by texi2html 1.78a -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>GNU libunistring: GNU libunistring</title>
+
+<meta name="description" content="GNU libunistring: GNU libunistring">
+<meta name="keywords" content="GNU libunistring: GNU libunistring">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78a">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="settitle">GNU libunistring</h1>
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+ <li><a name="TOC1" href="libunistring_1.html#SEC1">1. Introduction</a>
+ <ul class="toc">
+ <li><a name="TOC2" href="libunistring_1.html#SEC2">1.1 Unicode</a></li>
+ <li><a name="TOC3" href="libunistring_1.html#SEC3">1.2 Unicode and Internationalization</a></li>
+ <li><a name="TOC4" href="libunistring_1.html#SEC4">1.3 Locale encodings</a></li>
+ <li><a name="TOC5" href="libunistring_1.html#SEC5">1.4 Choice of in-memory representation of strings</a></li>
+ <li><a name="TOC6" href="libunistring_1.html#SEC6">1.5 &lsquo;<samp>char *</samp>&rsquo; strings</a></li>
+ <li><a name="TOC7" href="libunistring_1.html#SEC7">1.6 The <code>wchar_t</code> mess</a></li>
+ <li><a name="TOC8" href="libunistring_1.html#SEC8">1.7 Unicode strings</a></li>
+ </ul></li>
+ <li><a name="TOC9" href="libunistring_2.html#SEC9">2. Conventions</a></li>
+ <li><a name="TOC10" href="libunistring_3.html#SEC10">3. Elementary types <code>&lt;unitypes.h&gt;</code></a></li>
+ <li><a name="TOC11" href="libunistring_4.html#SEC11">4. Elementary Unicode string functions <code>&lt;unistr.h&gt;</code></a>
+ <ul class="toc">
+ <li><a name="TOC12" href="libunistring_4.html#SEC12">4.1 Elementary string checks</a></li>
+ <li><a name="TOC13" href="libunistring_4.html#SEC13">4.2 Elementary string conversions</a></li>
+ <li><a name="TOC14" href="libunistring_4.html#SEC14">4.3 Elementary string functions</a></li>
+ <li><a name="TOC15" href="libunistring_4.html#SEC15">4.4 Elementary string functions with memory allocation</a></li>
+ <li><a name="TOC16" href="libunistring_4.html#SEC16">4.5 Elementary string functions on NUL terminated strings</a></li>
+ </ul></li>
+ <li><a name="TOC17" href="libunistring_5.html#SEC17">5. Conversions between Unicode and encodings <code>&lt;uniconv.h&gt;</code></a></li>
+ <li><a name="TOC18" href="libunistring_6.html#SEC18">6. Output with Unicode strings <code>&lt;unistdio.h&gt;</code></a></li>
+ <li><a name="TOC19" href="libunistring_7.html#SEC19">7. Names of Unicode characters <code>&lt;uniname.h&gt;</code></a></li>
+ <li><a name="TOC20" href="libunistring_8.html#SEC20">8. Unicode character classification and properties <code>&lt;unictype.h&gt;</code></a>
+ <ul class="toc">
+ <li><a name="TOC21" href="libunistring_8.html#SEC21">8.1 General category</a>
+ <ul class="toc">
+ <li><a name="TOC22" href="libunistring_8.html#SEC22">8.1.1 The object oriented API for general category</a></li>
+ <li><a name="TOC23" href="libunistring_8.html#SEC23">8.1.2 The bit mask API for general category</a></li>
+ </ul></li>
+ <li><a name="TOC24" href="libunistring_8.html#SEC24">8.2 Canonical combining class</a></li>
+ <li><a name="TOC25" href="libunistring_8.html#SEC25">8.3 Bidirectional category</a></li>
+ <li><a name="TOC26" href="libunistring_8.html#SEC26">8.4 Decimal digit value</a></li>
+ <li><a name="TOC27" href="libunistring_8.html#SEC27">8.5 Digit value</a></li>
+ <li><a name="TOC28" href="libunistring_8.html#SEC28">8.6 Numeric value</a></li>
+ <li><a name="TOC29" href="libunistring_8.html#SEC29">8.7 Mirrored character</a></li>
+ <li><a name="TOC30" href="libunistring_8.html#SEC30">8.8 Properties</a>
+ <ul class="toc">
+ <li><a name="TOC31" href="libunistring_8.html#SEC31">8.8.1 Properties as objects &ndash; the object oriented API</a></li>
+ <li><a name="TOC32" href="libunistring_8.html#SEC32">8.8.2 Properties as functions &ndash; the functional API</a></li>
+ </ul></li>
+ <li><a name="TOC33" href="libunistring_8.html#SEC33">8.9 Scripts</a></li>
+ <li><a name="TOC34" href="libunistring_8.html#SEC34">8.10 Blocks</a></li>
+ <li><a name="TOC35" href="libunistring_8.html#SEC35">8.11 ISO C and Java syntax</a></li>
+ <li><a name="TOC36" href="libunistring_8.html#SEC36">8.12 Classifications like in ISO C</a></li>
+ </ul></li>
+ <li><a name="TOC37" href="libunistring_9.html#SEC37">9. Display width <code>&lt;uniwidth.h&gt;</code></a></li>
+ <li><a name="TOC38" href="libunistring_10.html#SEC38">10. Word breaks in strings <code>&lt;uniwbrk.h&gt;</code></a>
+ <ul class="toc">
+ <li><a name="TOC39" href="libunistring_10.html#SEC39">10.1 Word breaks in a string</a></li>
+ <li><a name="TOC40" href="libunistring_10.html#SEC40">10.2 Word break property</a></li>
+ </ul></li>
+ <li><a name="TOC41" href="libunistring_11.html#SEC41">11. Line breaking <code>&lt;unilbrk.h&gt;</code></a></li>
+ <li><a name="TOC42" href="libunistring_12.html#SEC42">12. Normalization forms (composition and decomposition) <code>&lt;uninorm.h&gt;</code></a>
+ <ul class="toc">
+ <li><a name="TOC43" href="libunistring_12.html#SEC43">12.1 Decomposition of Unicode characters</a></li>
+ <li><a name="TOC44" href="libunistring_12.html#SEC44">12.2 Composition of Unicode characters</a></li>
+ <li><a name="TOC45" href="libunistring_12.html#SEC45">12.3 Normalization of strings</a></li>
+ <li><a name="TOC46" href="libunistring_12.html#SEC46">12.4 Normalizing comparisons</a></li>
+ <li><a name="TOC47" href="libunistring_12.html#SEC47">12.5 Normalization of streams of Unicode characters</a></li>
+ </ul></li>
+ <li><a name="TOC48" href="libunistring_13.html#SEC48">13. Case mappings <code>&lt;unicase.h&gt;</code></a>
+ <ul class="toc">
+ <li><a name="TOC49" href="libunistring_13.html#SEC49">13.1 Case mappings of characters</a></li>
+ <li><a name="TOC50" href="libunistring_13.html#SEC50">13.2 Case mappings of strings</a></li>
+ <li><a name="TOC51" href="libunistring_13.html#SEC51">13.3 Case mappings of substrings</a></li>
+ <li><a name="TOC52" href="libunistring_13.html#SEC52">13.4 Case insensitive comparison</a></li>
+ <li><a name="TOC53" href="libunistring_13.html#SEC53">13.5 Case detection</a></li>
+ </ul></li>
+ <li><a name="TOC54" href="libunistring_14.html#SEC54">14. Regular expressions <code>&lt;uniregex.h&gt;</code></a></li>
+ <li><a name="TOC55" href="libunistring_15.html#SEC55">15. Using the library</a>
+ <ul class="toc">
+ <li><a name="TOC56" href="libunistring_15.html#SEC56">15.1 Installation</a></li>
+ <li><a name="TOC57" href="libunistring_15.html#SEC57">15.2 Compiler options</a></li>
+ <li><a name="TOC58" href="libunistring_15.html#SEC58">15.3 Include files</a></li>
+ <li><a name="TOC59" href="libunistring_15.html#SEC59">15.4 Autoconf macro</a></li>
+ <li><a name="TOC60" href="libunistring_15.html#SEC60">15.5 Reporting problems</a></li>
+ </ul></li>
+ <li><a name="TOC61" href="libunistring_16.html#SEC61">16. More advanced functionality</a></li>
+ <li><a name="TOC62" href="libunistring_17.html#SEC62">A. Licenses</a>
+ <ul class="toc">
+ <li><a name="TOC63" href="libunistring_17.html#SEC63">A.1 GNU GENERAL PUBLIC LICENSE</a></li>
+ <li><a name="TOC64" href="libunistring_17.html#SEC68">A.2 GNU LESSER GENERAL PUBLIC LICENSE</a></li>
+ <li><a name="TOC65" href="libunistring_17.html#SEC69">A.3 GNU Free Documentation License</a></li>
+ </ul></li>
+ <li><a name="TOC66" href="libunistring_18.html#SEC71">Index</a></li>
+</ul>
+</div>
+
+<a name="Top"></a>
+<a name="SEC_Top"></a>
+
+
+<hr size="1">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC_Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+ This document was generated by <em>Bruno Haible</em> on <em>July, 1 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/doc/stamp-vti b/doc/stamp-vti
new file mode 100644
index 00000000..ee4ba906
--- /dev/null
+++ b/doc/stamp-vti
@@ -0,0 +1,4 @@
+@set UPDATED 29 June 2009
+@set UPDATED-MONTH June 2009
+@set EDITION 0.9.1
+@set VERSION 0.9.1
diff --git a/doc/unicase.texi b/doc/unicase.texi
new file mode 100644
index 00000000..14b46be0
--- /dev/null
+++ b/doc/unicase.texi
@@ -0,0 +1,364 @@
+@node unicase.h
+@chapter Case mappings @code{<unicase.h>}
+
+This include file defines functions for case mapping for Unicode strings and
+case insensitive comparison of Unicode strings and C strings.
+
+These string functions fix the problems that were mentioned in
+@ref{char * strings}, namely, they handle the Croatian
+@sc{LETTER DZ WITH CARON}, the German @sc{LATIN SMALL LETTER SHARP S}, the
+Greek sigma and the Lithuanian i correctly.
+
+@menu
+* Case mappings of characters::
+* Case mappings of strings::
+* Case mappings of substrings::
+* Case insensitive comparison::
+* Case detection::
+@end menu
+
+@node Case mappings of characters
+@section Case mappings of characters
+
+@cindex Unicode character, case mappings
+The following functions implement case mappings on Unicode characters ---
+for those cases only where the result of the mapping is a again a single
+Unicode character.
+
+These mappings are locale and context independent.
+
+@cartouche
+@strong{WARNING!} These functions are not sufficient for languages such as
+German, Greek and Lithuanian. Better use the functions below that treat an
+entire string at once and are language aware.
+@end cartouche
+
+@deftypefun ucs4_t uc_toupper (ucs4_t @var{uc})
+Returns the uppercase mapping of the Unicode character @var{uc}.
+@end deftypefun
+
+@deftypefun ucs4_t uc_tolower (ucs4_t @var{uc})
+Returns the lowercase mapping of the Unicode character @var{uc}.
+@end deftypefun
+
+@deftypefun ucs4_t uc_totitle (ucs4_t @var{uc})
+Returns the titlecase mapping of the Unicode character @var{uc}.
+
+The titlecase mapping of a character is to be used when the character should
+look like upper case and the following characters are lower cased.
+
+For most characters, this is the same as the uppercase mapping. There are
+only few characters where the title case variant and the uuper case variant
+are different. These characters occur in the Latin writing of the Croatian,
+Bosnian, and Serbian languages.
+
+@c Normally we would use .33 space for each column, but this is too much in
+@c TeX mode, see
+@c <http://lists.gnu.org/archive/html/bug-texinfo/2009-05/msg00016.html>.
+@multitable @columnfractions .31 .31 .31
+@headitem Lower case @tab Title case @tab Upper case
+@item LATIN SMALL LETTER LJ
+ @tab LATIN CAPITAL LETTER L WITH SMALL LETTER J
+ @tab LATIN CAPITAL LETTER LJ
+@item LATIN SMALL LETTER NJ
+ @tab LATIN CAPITAL LETTER N WITH SMALL LETTER J
+ @tab LATIN CAPITAL LETTER NJ
+@item LATIN SMALL LETTER DZ
+ @tab LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+ @tab LATIN CAPITAL LETTER DZ
+@item LATIN SMALL LETTER DZ WITH CARON
+ @tab LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+ @tab LATIN CAPITAL LETTER DZ WITH CARON
+@end multitable
+@end deftypefun
+
+@node Case mappings of strings
+@section Case mappings of strings
+
+@cindex case mappings
+@cindex uppercasing
+@cindex lowercasing
+@cindex titlecasing
+Case mapping should always be performed on entire strings, not on individual
+characters. The functions in this sections do so.
+
+These functions allow to apply a normalization after the case mapping. The
+reason is that if you want to treat @samp{@"{a}} and @samp{@"{A}} the same,
+you most often also want to treat the composed and decomposed forms of such
+a character, U+00C4 @sc{LATIN CAPITAL LETTER A WITH DIAERESIS} and
+U+0041 @sc{LATIN CAPITAL LETTER A} U+0308 @sc{COMBINING DIAERESIS} the same.
+The @var{nf} argument designates the normalization.
+
+@cindex locale language
+These functions are locale dependent. The @var{iso639_language} argument
+identifies the language (e.g. @code{"tr"} for Turkish). NULL means to use
+locale independent case mappings.
+
+@deftypefun {const char *} uc_locale_language ()
+Returns the ISO 639 language code of the current locale.
+Returns @code{""} if it is unknown, or in the "C" locale.
+@end deftypefun
+
+@deftypefun {uint8_t *} u8_toupper (const uint8_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint8_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint16_t *} u16_toupper (const uint16_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint16_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint32_t *} u32_toupper (const uint32_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint32_t *@var{resultbuf}, size_t *@var{lengthp})
+Returns the uppercase mapping of a string.
+
+The @var{nf} argument identifies the normalization form to apply after the
+case-mapping. It can also be NULL, for no normalization.
+@end deftypefun
+
+@deftypefun {uint8_t *} u8_tolower (const uint8_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint8_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint16_t *} u16_tolower (const uint16_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint16_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint32_t *} u32_tolower (const uint32_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint32_t *@var{resultbuf}, size_t *@var{lengthp})
+Returns the lowercase mapping of a string.
+
+The @var{nf} argument identifies the normalization form to apply after the
+case-mapping. It can also be NULL, for no normalization.
+@end deftypefun
+
+@deftypefun {uint8_t *} u8_totitle (const uint8_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint8_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint16_t *} u16_totitle (const uint16_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint16_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint32_t *} u32_totitle (const uint32_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint32_t *@var{resultbuf}, size_t *@var{lengthp})
+Returns the titlecase mapping of a string.
+
+Mapping to title case means that, in each word, the first cased character
+is being mapped to title case and the remaining characters of the word
+are being mapped to lower case.
+
+The @var{nf} argument identifies the normalization form to apply after the
+case-mapping. It can also be NULL, for no normalization.
+@end deftypefun
+
+@node Case mappings of substrings
+@section Case mappings of substrings
+
+Case mapping of a substring cannot simply be performed by extracting the
+substring and then applying the case mapping function to it. This does not
+work because case mapping requires some information about the surrounding
+characters. The following functions allow to apply case mappings to
+substrings of a given string, while taking into account the characters that
+precede it (the ``prefix'') and the characters that follow it (the ``suffix'').
+
+@deftp Type casing_prefix_context_t
+This data type denotes the case-mapping context that is given by a prefix
+string. It is an immediate type that can be copied by simple assignment,
+without involving memory allocation. It is not an array type.
+@end deftp
+
+@deftypevr Constant casing_prefix_context_t unicase_empty_prefix_context
+This constant is the case-mapping context that corresponds to an empty prefix
+string.
+@end deftypevr
+
+The following functions return @code{casing_prefix_context_t} objects:
+
+@deftypefun casing_prefix_context_t u8_casing_prefix_context (const uint8_t *@var{s}, size_t @var{n})
+@deftypefunx casing_prefix_context_t u16_casing_prefix_context (const uint16_t *@var{s}, size_t @var{n})
+@deftypefunx casing_prefix_context_t u32_casing_prefix_context (const uint32_t *@var{s}, size_t @var{n})
+Returns the case-mapping context of a given prefix string.
+@end deftypefun
+
+@deftypefun casing_prefix_context_t u8_casing_prefixes_context (const uint8_t *@var{s}, size_t @var{n}, casing_prefix_context_t @var{a_context})
+@deftypefunx casing_prefix_context_t u16_casing_prefixes_context (const uint16_t *@var{s}, size_t @var{n}, casing_prefix_context_t @var{a_context})
+@deftypefunx casing_prefix_context_t u32_casing_prefixes_context (const uint32_t *@var{s}, size_t @var{n}, casing_prefix_context_t @var{a_context})
+Returns the case-mapping context of the prefix concat(@var{a}, @var{s}),
+given the case-mapping context of the prefix @var{a}.
+@end deftypefun
+
+@deftp Type casing_suffix_context_t
+This data type denotes the case-mapping context that is given by a suffix
+string. It is an immediate type that can be copied by simple assignment,
+without involving memory allocation. It is not an array type.
+@end deftp
+
+@deftypevr Constant casing_suffix_context_t unicase_empty_suffix_context
+This constant is the case-mapping context that corresponds to an empty suffix
+string.
+@end deftypevr
+
+The following functions return @code{casing_suffix_context_t} objects:
+
+@deftypefun casing_suffix_context_t u8_casing_suffix_context (const uint8_t *@var{s}, size_t @var{n})
+@deftypefunx casing_suffix_context_t u16_casing_suffix_context (const uint16_t *@var{s}, size_t @var{n})
+@deftypefunx casing_suffix_context_t u32_casing_suffix_context (const uint32_t *@var{s}, size_t @var{n})
+Returns the case-mapping context of a given suffix string.
+@end deftypefun
+
+@deftypefun casing_suffix_context_t u8_casing_suffixes_context (const uint8_t *@var{s}, size_t @var{n}, casing_suffix_context_t @var{a_context})
+@deftypefunx casing_suffix_context_t u16_casing_suffixes_context (const uint16_t *@var{s}, size_t @var{n}, casing_suffix_context_t @var{a_context})
+@deftypefunx casing_suffix_context_t u32_casing_suffixes_context (const uint32_t *@var{s}, size_t @var{n}, casing_suffix_context_t @var{a_context})
+Returns the case-mapping context of the suffix concat(@var{s}, @var{a}),
+given the case-mapping context of the suffix @var{a}.
+@end deftypefun
+
+The following functions perform a case mapping, considering the
+prefix context and the suffix context.
+
+@deftypefun {uint8_t *} u8_ct_toupper (const uint8_t *@var{s}, size_t @var{n}, casing_prefix_context_t @var{prefix_context}, casing_suffix_context_t @var{suffix_context}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint8_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint16_t *} u16_ct_toupper (const uint16_t *@var{s}, size_t @var{n}, casing_prefix_context_t @var{prefix_context}, casing_suffix_context_t @var{suffix_context}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint16_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint32_t *} u32_ct_toupper (const uint32_t *@var{s}, size_t @var{n}, casing_prefix_context_t @var{prefix_context}, casing_suffix_context_t @var{suffix_context}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint32_t *@var{resultbuf}, size_t *@var{lengthp})
+Returns the uppercase mapping of a string that is surrounded by a prefix
+and a suffix.
+@end deftypefun
+
+@deftypefun {uint8_t *} u8_ct_tolower (const uint8_t *@var{s}, size_t @var{n}, casing_prefix_context_t @var{prefix_context}, casing_suffix_context_t @var{suffix_context}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint8_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint16_t *} u16_ct_tolower (const uint16_t *@var{s}, size_t @var{n}, casing_prefix_context_t @var{prefix_context}, casing_suffix_context_t @var{suffix_context}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint16_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint32_t *} u32_ct_tolower (const uint32_t *@var{s}, size_t @var{n}, casing_prefix_context_t @var{prefix_context}, casing_suffix_context_t @var{suffix_context}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint32_t *@var{resultbuf}, size_t *@var{lengthp})
+Returns the lowercase mapping of a string that is surrounded by a prefix
+and a suffix.
+@end deftypefun
+
+@deftypefun {uint8_t *} u8_ct_totitle (const uint8_t *@var{s}, size_t @var{n}, casing_prefix_context_t @var{prefix_context}, casing_suffix_context_t @var{suffix_context}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint8_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint16_t *} u16_ct_totitle (const uint16_t *@var{s}, size_t @var{n}, casing_prefix_context_t @var{prefix_context}, casing_suffix_context_t @var{suffix_context}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint16_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint32_t *} u32_ct_totitle (const uint32_t *@var{s}, size_t @var{n}, casing_prefix_context_t @var{prefix_context}, casing_suffix_context_t @var{suffix_context}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint32_t *@var{resultbuf}, size_t *@var{lengthp})
+Returns the titlecase mapping of a string that is surrounded by a prefix
+and a suffix.
+@end deftypefun
+
+For example, to uppercase the UTF-8 substring between @code{s + start_index}
+and @code{s + end_index} of a string that extends from @code{s} to
+@code{s + u8_strlen (s)}, you can use the statements
+
+@smallexample
+size_t result_length;
+uint8_t result =
+ u8_ct_toupper (s + start_index, end_index - start_index,
+ u8_casing_prefix_context (s, start_index),
+ u8_casing_suffix_context (s + end_index,
+ u8_strlen (s) - end_index),
+ iso639_language, NULL, NULL, &result_length);
+@end smallexample
+
+@node Case insensitive comparison
+@section Case insensitive comparison
+
+@cindex comparing, ignoring case
+@cindex comparing, ignoring normalization and case
+The following functions implement comparison that ignores differences in case
+and normalization.
+
+@deftypefun {uint8_t *} u8_casefold (const uint8_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint8_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint16_t *} u16_casefold (const uint16_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint16_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint32_t *} u32_casefold (const uint32_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint32_t *@var{resultbuf}, size_t *@var{lengthp})
+Returns the case folded string.
+
+Comparing @code{u8_casefold (@var{s1})} and @code{u8_casefold (@var{s2})}
+with the @code{u8_cmp2} function is equivalent to comparing @var{s1} and
+@var{s2} with @code{u8_casecmp}.
+
+The @var{nf} argument identifies the normalization form to apply after the
+case-mapping. It can also be NULL, for no normalization.
+@end deftypefun
+
+@deftypefun {uint8_t *} u8_ct_casefold (const uint8_t *@var{s}, size_t @var{n}, casing_prefix_context_t @var{prefix_context}, casing_suffix_context_t @var{suffix_context}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint8_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint16_t *} u16_ct_casefold (const uint16_t *@var{s}, size_t @var{n}, casing_prefix_context_t @var{prefix_context}, casing_suffix_context_t @var{suffix_context}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint16_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint32_t *} u32_ct_casefold (const uint32_t *@var{s}, size_t @var{n}, casing_prefix_context_t @var{prefix_context}, casing_suffix_context_t @var{suffix_context}, const char *@var{iso639_language}, uninorm_t @var{nf}, uint32_t *@var{resultbuf}, size_t *@var{lengthp})
+Returns the case folded string. The case folding takes into account the
+case mapping contexts of the prefix and suffix strings.
+@end deftypefun
+
+@deftypefun int u8_casecmp (const uint8_t *@var{s1}, size_t @var{n1}, const uint8_t *@var{s2}, size_t @var{n2}, const char *@var{iso639_language}, uninorm_t @var{nf}, int *@var{resultp})
+@deftypefunx int u16_casecmp (const uint16_t *@var{s1}, size_t @var{n1}, const uint16_t *@var{s2}, size_t @var{n2}, const char *@var{iso639_language}, uninorm_t @var{nf}, int *@var{resultp})
+@deftypefunx int u32_casecmp (const uint32_t *@var{s1}, size_t @var{n1}, const uint32_t *@var{s2}, size_t @var{n2}, const char *@var{iso639_language}, uninorm_t @var{nf}, int *@var{resultp})
+@deftypefunx int ulc_casecmp (const char *@var{s1}, size_t @var{n1}, const char *@var{s2}, size_t @var{n2}, const char *@var{iso639_language}, uninorm_t @var{nf}, int *@var{resultp})
+Compares @var{s1} and @var{s2}, ignoring differences in case and normalization.
+
+The @var{nf} argument identifies the normalization form to apply after the
+case-mapping. It can also be NULL, for no normalization.
+
+If successful, sets @code{*@var{resultp}} to -1 if @var{s1} < @var{s2},
+0 if @var{s1} = @var{s2}, 1 if @var{s1} > @var{s2}, and returns 0.
+Upon failure, returns -1 with @code{errno} set.
+@end deftypefun
+
+@cindex comparing, ignoring case, with collation rules
+@cindex comparing, with collation rules, ignoring case
+@cindex comparing, ignoring normalization and case, with collation rules
+@cindex comparing, with collation rules, ignoring normalization and case
+The following functions additionally take into account the sorting rules of the
+current locale.
+
+@deftypefun {char *} u8_casexfrm (const uint8_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, uninorm_t @var{nf}, char *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {char *} u16_casexfrm (const uint16_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, uninorm_t @var{nf}, char *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {char *} u32_casexfrm (const uint32_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, uninorm_t @var{nf}, char *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {char *} ulc_casexfrm (const char *@var{s}, size_t @var{n}, const char *@var{iso639_language}, uninorm_t @var{nf}, char *@var{resultbuf}, size_t *@var{lengthp})
+Converts the string @var{s} of length @var{n} to a NUL-terminated byte
+sequence, in such a way that comparing @code{u8_casexfrm (@var{s1})} and
+@code{u8_casexfrm (@var{s2})} with the gnulib function @code{memcmp2} is
+equivalent to comparing @var{s1} and @var{s2} with @code{u8_casecoll}.
+
+@var{nf} must be either @code{UNINORM_NFC}, @code{UNINORM_NFKC}, or NULL for
+no normalization.
+@end deftypefun
+
+@deftypefun int u8_casecoll (const uint8_t *@var{s1}, size_t @var{n1}, const uint8_t *@var{s2}, size_t @var{n2}, const char *@var{iso639_language}, uninorm_t @var{nf}, int *@var{resultp})
+@deftypefunx int u16_casecoll (const uint16_t *@var{s1}, size_t @var{n1}, const uint16_t *@var{s2}, size_t @var{n2}, const char *@var{iso639_language}, uninorm_t @var{nf}, int *@var{resultp})
+@deftypefunx int u32_casecoll (const uint32_t *@var{s1}, size_t @var{n1}, const uint32_t *@var{s2}, size_t @var{n2}, const char *@var{iso639_language}, uninorm_t @var{nf}, int *@var{resultp})
+@deftypefunx int ulc_casecoll (const char *@var{s1}, size_t @var{n1}, const char *@var{s2}, size_t @var{n2}, const char *@var{iso639_language}, uninorm_t @var{nf}, int *@var{resultp})
+Compares @var{s1} and @var{s2}, ignoring differences in case and normalization,
+using the collation rules of the current locale.
+
+The @var{nf} argument identifies the normalization form to apply after the
+case-mapping. It must be either @code{UNINORM_NFC} or @code{UNINORM_NFKC}.
+It can also be NULL, for no normalization.
+
+If successful, sets @code{*@var{resultp}} to -1 if @var{s1} < @var{s2},
+0 if @var{s1} = @var{s2}, 1 if @var{s1} > @var{s2}, and returns 0.
+Upon failure, returns -1 with @code{errno} set.
+@end deftypefun
+
+@node Case detection
+@section Case detection
+
+@cindex case detection
+@cindex detecting case
+The following functions determine whether a Unicode string is entirely in
+upper case. or entirely in lower case, or entirely in title case, or already
+case-folded.
+
+@deftypefun int u8_is_uppercase (const uint8_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, bool *@var{resultp})
+@deftypefunx int u16_is_uppercase (const uint16_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, bool *@var{resultp})
+@deftypefunx int u32_is_uppercase (const uint32_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, bool *@var{resultp})
+Sets @code{*@var{resultp}} to true if mapping NFD(@var{s}) to upper case is
+a no-op, or to false otherwise, and returns 0. Upon failure, returns -1 with
+@code{errno} set.
+@end deftypefun
+
+@deftypefun int u8_is_lowercase (const uint8_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, bool *@var{resultp})
+@deftypefunx int u16_is_lowercase (const uint16_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, bool *@var{resultp})
+@deftypefunx int u32_is_lowercase (const uint32_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, bool *@var{resultp})
+Sets @code{*@var{resultp}} to true if mapping NFD(@var{s}) to lower case is
+a no-op, or to false otherwise, and returns 0. Upon failure, returns -1 with
+@code{errno} set.
+@end deftypefun
+
+@deftypefun int u8_is_titlecase (const uint8_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, bool *@var{resultp})
+@deftypefunx int u16_is_titlecase (const uint16_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, bool *@var{resultp})
+@deftypefunx int u32_is_titlecase (const uint32_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, bool *@var{resultp})
+Sets @code{*@var{resultp}} to true if mapping NFD(@var{s}) to title case is
+a no-op, or to false otherwise, and returns 0. Upon failure, returns -1 with
+@code{errno} set.
+@end deftypefun
+
+@deftypefun int u8_is_casefolded (const uint8_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, bool *@var{resultp})
+@deftypefunx int u16_is_casefolded (const uint16_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, bool *@var{resultp})
+@deftypefunx int u32_is_casefolded (const uint32_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, bool *@var{resultp})
+Sets @code{*@var{resultp}} to true if applying case folding to NFD(@var{S}) is
+a no-op, or to false otherwise, and returns 0. Upon failure, returns -1 with
+@code{errno} set.
+@end deftypefun
+
+The following functions determine whether case mappings have any effect on a
+Unicode string.
+
+@deftypefun int u8_is_cased (const uint8_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, bool *@var{resultp})
+@deftypefunx int u16_is_cased (const uint16_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, bool *@var{resultp})
+@deftypefunx int u32_is_cased (const uint32_t *@var{s}, size_t @var{n}, const char *@var{iso639_language}, bool *@var{resultp})
+Sets @code{*@var{resultp}} to true if case matters for @var{s}, that is, if
+mapping NFD(@var{s}) to either upper case or lower case or title case is not
+a no-op. Set @code{*@var{resultp}} to false if NFD(@var{s}) maps to itself
+under the upper case mapping, under the lower case mapping, and under the title
+case mapping; in other words, when NFD(@var{s}) consists entirely of caseless
+characters. Upon failure, returns -1 with @code{errno} set.
+@end deftypefun
diff --git a/doc/uniconv.texi b/doc/uniconv.texi
new file mode 100644
index 00000000..07cfa1be
--- /dev/null
+++ b/doc/uniconv.texi
@@ -0,0 +1,157 @@
+@node uniconv.h
+@chapter Conversions between Unicode and encodings @code{<uniconv.h>}
+
+This include file declares functions for converting between Unicode strings
+and @code{char *} strings in locale encoding or in other specified encodings.
+
+@cindex locale encoding
+The following function returns the locale encoding.
+
+@deftypefun {const char *} locale_charset ()
+Determines the current locale's character encoding, and canonicalizes it
+into one of the canonical names listed in @file{config.charset}.
+If the canonical name cannot be determined, the result is a non-canonical
+name.
+
+The result must not be freed; it is statically allocated.
+
+The result of this function can be used as an argument to the @code{iconv_open}
+function in GNU libc, in GNU libiconv, or in the gnulib provided wrapper
+around the native @code{iconv_open} function. It may not work as an argument
+to the native @code{iconv_open} function directly.
+@end deftypefun
+
+The handling of unconvertible characters during the conversions can be
+parametrized through the following enumeration type:
+
+@deftp Type {enum iconv_ilseq_handler}
+This type specifies how unconvertible characters in the input are handled.
+@end deftp
+
+@deftypevr Constant {enum iconv_ilseq_handler} iconveh_error
+This handler causes the function to return with @code{errno} set to
+@code{EILSEQ}.
+@end deftypevr
+
+@deftypevr Constant {enum iconv_ilseq_handler} iconveh_question_mark
+This handler produces one question mark @samp{?} per unconvertible character.
+@end deftypevr
+
+@deftypevr Constant {enum iconv_ilseq_handler} iconveh_escape_sequence
+This handler produces an escape sequence @code{\u@var{xxxx}} or
+@code{\U@var{xxxxxxxx}} for each unconvertible character.
+@end deftypevr
+
+@cindex converting
+The following functions convert between strings in a specified encoding and
+Unicode strings.
+
+@deftypefun {uint8_t *} u8_conv_from_encoding (const char *@var{fromcode}, enum iconv_ilseq_handler @var{handler}, const char *@var{src}, size_t @var{srclen}, size_t *@var{offsets}, uint8_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint16_t *} u16_conv_from_encoding (const char *@var{fromcode}, enum iconv_ilseq_handler @var{handler}, const char *@var{src}, size_t @var{srclen}, size_t *@var{offsets}, uint16_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint32_t *} u32_conv_from_encoding (const char *@var{fromcode}, enum iconv_ilseq_handler @var{handler}, const char *@var{src}, size_t @var{srclen}, size_t *@var{offsets}, uint32_t *@var{resultbuf}, size_t *@var{lengthp})
+Converts an entire string, possibly including NUL bytes, from one encoding
+to UTF-8 encoding.
+
+Converts a memory region given in encoding @var{fromcode}. @var{fromcode} is
+as for the @code{iconv_open} function.
+
+The input is in the memory region between @var{src} (inclusive) and
+@code{@var{src} + @var{srclen}} (exclusive).
+
+If @var{offsets} is not NULL, it should point to an array of @var{srclen}
+integers; this array is filled with offsets into the result, i.e@. the
+character starting at @code{@var{src}[i]} corresponds to the character starting
+at @code{@var{result}[@var{offsets}[i]]}, and other offsets are set to
+@code{(size_t)(-1)}.
+
+@code{@var{resultbuf}} and @code{*@var{lengthp}} should be a scratch
+buffer and its size, or @code{@var{resultbuf}} can be NULL.
+
+May erase the contents of the memory at @code{@var{resultbuf}}.
+
+If successful: The resulting Unicode string (non-NULL) is returned and
+its length stored in @code{*@var{lengthp}}. The resulting string is
+@code{@var{resultbuf}} if no dynamic memory allocation was necessary,
+or a freshly allocated memory block otherwise.
+
+In case of error: NULL is returned and @code{errno} is set.
+Particular @code{errno} values: @code{EINVAL}, @code{EILSEQ}, @code{ENOMEM}.
+@end deftypefun
+
+@deftypefun {char *} u8_conv_to_encoding (const char *@var{tocode}, enum iconv_ilseq_handler @var{handler}, const uint8_t *@var{src}, size_t @var{srclen}, size_t *@var{offsets}, char *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {char *} u16_conv_to_encoding (const char *@var{tocode}, enum iconv_ilseq_handler @var{handler}, const uint16_t *@var{src}, size_t @var{srclen}, size_t *@var{offsets}, char *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {char *} u32_conv_to_encoding (const char *@var{tocode}, enum iconv_ilseq_handler @var{handler}, const uint32_t *@var{src}, size_t @var{srclen}, size_t *@var{offsets}, char *@var{resultbuf}, size_t *@var{lengthp})
+Converts an entire Unicode string, possibly including NUL units, from UTF-8
+encoding to a given encoding.
+
+Converts a memory region to encoding @var{tocode}. @var{tocode} is as for
+the @code{iconv_open} function.
+
+The input is in the memory region between @var{src} (inclusive) and
+@code{@var{src} + @var{srclen}} (exclusive).
+
+If @var{offsets} is not NULL, it should point to an array of @var{srclen}
+integers; this array is filled with offsets into the result, i.e@. the
+character starting at @code{@var{src}[i]} corresponds to the character starting
+at @code{@var{result}[@var{offsets}[i]]}, and other offsets are set to
+@code{(size_t)(-1)}.
+
+@code{@var{resultbuf}} and @code{*@var{lengthp}} should be a scratch
+buffer and its size, or @code{@var{resultbuf}} can be NULL.
+
+May erase the contents of the memory at @code{@var{resultbuf}}.
+
+If successful: The resulting Unicode string (non-NULL) is returned and
+its length stored in @code{*@var{lengthp}}. The resulting string is
+@code{@var{resultbuf}} if no dynamic memory allocation was necessary,
+or a freshly allocated memory block otherwise.
+
+In case of error: NULL is returned and @code{errno} is set.
+Particular @code{errno} values: @code{EINVAL}, @code{EILSEQ}, @code{ENOMEM}.
+@end deftypefun
+
+The following functions convert between NUL terminated strings in a specified
+encoding and NUL terminated Unicode strings.
+
+@deftypefun {uint8_t *} u8_strconv_from_encoding (const char *@var{string}, const char *@var{fromcode}, enum iconv_ilseq_handler @var{handler})
+@deftypefunx {uint16_t *} u16_strconv_from_encoding (const char *@var{string}, const char *@var{fromcode}, enum iconv_ilseq_handler @var{handler})
+@deftypefunx {uint32_t *} u32_strconv_from_encoding (const char *@var{string}, const char *@var{fromcode}, enum iconv_ilseq_handler @var{handler})
+Converts a NUL terminated string from a given encoding.
+
+The result is @code{malloc} allocated, or NULL (with @var{errno} set) in case of error.
+
+Particular @code{errno} values: @code{EILSEQ}, @code{ENOMEM}.
+@end deftypefun
+
+@deftypefun {char *} u8_strconv_to_encoding (const uint8_t *@var{string}, const char *@var{tocode}, enum iconv_ilseq_handler @var{handler})
+@deftypefunx {char *} u16_strconv_to_encoding (const uint16_t *@var{string}, const char *@var{tocode}, enum iconv_ilseq_handler @var{handler})
+@deftypefunx {char *} u32_strconv_to_encoding (const uint32_t *@var{string}, const char *@var{tocode}, enum iconv_ilseq_handler @var{handler})
+Converts a NUL terminated string to a given encoding.
+
+The result is @code{malloc} allocated, or NULL (with @code{errno} set) in case of error.
+
+Particular @code{errno} values: @code{EILSEQ}, @code{ENOMEM}.
+@end deftypefun
+
+The following functions are shorthands that convert between NUL terminated
+strings in locale encoding and NUL terminated Unicode strings.
+
+@deftypefun {uint8_t *} u8_strconv_from_locale (const char *@var{string})
+@deftypefunx {uint16_t *} u16_strconv_from_locale (const char *@var{string})
+@deftypefunx {uint32_t *} u32_strconv_from_locale (const char *@var{string})
+Converts a NUL terminated string from the locale encoding.
+
+The result is @code{malloc} allocated, or NULL (with @code{errno} set) in case of error.
+
+Particular @code{errno} values: @code{ENOMEM}.
+@end deftypefun
+
+@deftypefun {char *} u8_strconv_to_locale (const uint8_t *@var{string})
+@deftypefunx {char *} u16_strconv_to_locale (const uint16_t *@var{string})
+@deftypefunx {char *} u32_strconv_to_locale (const uint32_t *@var{string})
+Converts a NUL terminated string to the locale encoding.
+
+The result is @code{malloc} allocated, or NULL (with @code{errno} set) in case of error.
+
+Particular @code{errno} values: @code{ENOMEM}.
+@end deftypefun
diff --git a/doc/unictype.texi b/doc/unictype.texi
new file mode 100644
index 00000000..129159c7
--- /dev/null
+++ b/doc/unictype.texi
@@ -0,0 +1,1145 @@
+@node unictype.h
+@chapter Unicode character classification and properties @code{<unictype.h>}
+
+This include file declares functions that classify Unicode characters
+and that test whether Unicode characters have specific properties.
+
+The classification assigns a ``general category'' to every Unicode
+character. This is similar to the classification provided by ISO C in
+@code{<wctype.h>}.
+
+Properties are the data that guides various text processing algorithms
+in the presence of specific Unicode characters.
+
+@menu
+* General category::
+* Canonical combining class::
+* Bidirectional category::
+* Decimal digit value::
+* Digit value::
+* Numeric value::
+* Mirrored character::
+* Properties::
+* Scripts::
+* Blocks::
+* ISO C and Java syntax::
+* Classifications like in ISO C::
+@end menu
+
+@node General category
+@section General category
+
+@cindex general category
+@cindex Unicode character, general category
+@cindex Unicode character, classification
+Every Unicode character or code point has a @emph{general category} assigned
+to it. This classification is important for most algorithms that work on
+Unicode text.
+
+The GNU libunistring library provides two kinds of API for working with
+general categories. The object oriented API uses a variable to denote
+every predefined general category value or combinations thereof. The
+low-level API uses a bit mask instead. The advantage of the object oriented
+API is that if only a few predefined general category values are used,
+the data tables are relatively small. When you combine general category
+values (using @code{uc_general_category_or}, @code{uc_general_category_and},
+or @code{uc_general_category_and_not}), or when you use the low level
+bit masks, a big table is used thats holds the complete general category
+information for all Unicode characters.
+
+@menu
+* Object oriented API::
+* Bit mask API::
+@end menu
+
+@node Object oriented API
+@subsection The object oriented API for general category
+
+@deftp Type uc_general_category_t
+This data type denotes a general category value. It is an immediate type that
+can be copied by simple assignment, without involving memory allocation. It is
+not an array type.
+@end deftp
+
+The following are the predefined general category value. Additional general
+categories may be added in the future.
+
+@deftypevr Constant uc_general_category_t UC_CATEGORY_L
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Lu
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Ll
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Lt
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Lm
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Lo
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_M
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Mn
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Mc
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Me
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_N
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Nd
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Nl
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_No
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_P
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Pc
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Pd
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Ps
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Pe
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Pi
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Pf
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Po
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_S
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Sm
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Sc
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Sk
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_So
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Z
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Zs
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Zl
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Zp
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_C
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Cc
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Cf
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Cs
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Co
+@deftypevrx Constant uc_general_category_t UC_CATEGORY_Cn
+@end deftypevr
+
+The following are alias names for predefined General category values.
+
+@deftypevr Macro uc_general_category_t UC_LETTER
+This is another name for @code{UC_CATEGORY_L}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_UPPERCASE_LETTER
+This is another name for @code{UC_CATEGORY_Lu}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_LOWERCASE_LETTER
+This is another name for @code{UC_CATEGORY_Ll}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_TITLECASE_LETTER
+This is another name for @code{UC_CATEGORY_Lt}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_MODIFIER_LETTER
+This is another name for @code{UC_CATEGORY_Lm}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_OTHER_LETTER
+This is another name for @code{UC_CATEGORY_Lo}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_MARK
+This is another name for @code{UC_CATEGORY_M}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_NON_SPACING_MARK
+This is another name for @code{UC_CATEGORY_Mn}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_COMBINING_SPACING_MARK
+This is another name for @code{UC_CATEGORY_Mc}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_ENCLOSING_MARK
+This is another name for @code{UC_CATEGORY_Me}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_NUMBER
+This is another name for @code{UC_CATEGORY_N}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_DECIMAL_DIGIT_NUMBER
+This is another name for @code{UC_CATEGORY_Nd}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_LETTER_NUMBER
+This is another name for @code{UC_CATEGORY_Nl}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_OTHER_NUMBER
+This is another name for @code{UC_CATEGORY_No}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_PUNCTUATION
+This is another name for @code{UC_CATEGORY_P}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_CONNECTOR_PUNCTUATION
+This is another name for @code{UC_CATEGORY_Pc}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_DASH_PUNCTUATION
+This is another name for @code{UC_CATEGORY_Pd}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_OPEN_PUNCTUATION
+This is another name for @code{UC_CATEGORY_Ps} (``start punctuation'').
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_CLOSE_PUNCTUATION
+This is another name for @code{UC_CATEGORY_Pe} (``end punctuation'').
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_INITIAL_QUOTE_PUNCTUATION
+This is another name for @code{UC_CATEGORY_Pi}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_FINAL_QUOTE_PUNCTUATION
+This is another name for @code{UC_CATEGORY_Pf}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_OTHER_PUNCTUATION
+This is another name for @code{UC_CATEGORY_Po}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_SYMBOL
+This is another name for @code{UC_CATEGORY_S}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_MATH_SYMBOL
+This is another name for @code{UC_CATEGORY_Sm}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_CURRENCY_SYMBOL
+This is another name for @code{UC_CATEGORY_Sc}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_MODIFIER_SYMBOL
+This is another name for @code{UC_CATEGORY_Sk}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_OTHER_SYMBOL
+This is another name for @code{UC_CATEGORY_So}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_SEPARATOR
+This is another name for @code{UC_CATEGORY_Z}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_SPACE_SEPARATOR
+This is another name for @code{UC_CATEGORY_Zs}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_LINE_SEPARATOR
+This is another name for @code{UC_CATEGORY_Zl}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_PARAGRAPH_SEPARATOR
+This is another name for @code{UC_CATEGORY_Zp}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_OTHER
+This is another name for @code{UC_CATEGORY_C}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_CONTROL
+This is another name for @code{UC_CATEGORY_Cc}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_FORMAT
+This is another name for @code{UC_CATEGORY_Cf}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_SURROGATE
+This is another name for @code{UC_CATEGORY_Cs}. All code points in this
+category are invalid characters.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_PRIVATE_USE
+This is another name for @code{UC_CATEGORY_Co}.
+@end deftypevr
+
+@deftypevr Macro uc_general_category_t UC_UNASSIGNED
+This is another name for @code{UC_CATEGORY_Cn}. Some code points in this
+category are invalid characters.
+@end deftypevr
+
+The following functions combine general categories, like in a boolean algebra,
+except that there is no @samp{not} operation.
+
+@deftypefun uc_general_category_t uc_general_category_or (uc_general_category_t @var{category1}, uc_general_category_t @var{category2})
+Returns the union of two general categories.
+This corresponds to the unions of the two sets of characters.
+@end deftypefun
+
+@deftypefun uc_general_category_t uc_general_category_and (uc_general_category_t @var{category1}, uc_general_category_t @var{category2})
+Returns the intersection of two general categories as bit masks.
+This @emph{does not} correspond to the intersection of the two sets of
+characters.
+@c Really??
+@end deftypefun
+
+@deftypefun uc_general_category_t uc_general_category_and_not (uc_general_category_t @var{category1}, uc_general_category_t @var{category2})
+Returns the intersection of a general category with the complement of a
+second general category, as bit masks.
+This @emph{does not} correspond to the intersection with complement, when
+viewing the categories as sets of characters.
+@c Really??
+@end deftypefun
+
+The following functions associate general categories with their name.
+
+@deftypefun {const char *} uc_general_category_name (uc_general_category_t @var{category})
+Returns the name of a general category.
+Returns NULL if the general category corresponds to a bit mask that does not
+have a name.
+@end deftypefun
+
+@deftypefun uc_general_category_t uc_general_category_byname (const char *@var{category_name})
+Returns the general category given by name, e.g@. @code{"Lu"}.
+@end deftypefun
+
+The following functions view general categories as sets of Unicode characters.
+
+@deftypefun uc_general_category_t uc_general_category (ucs4_t @var{uc})
+Returns the general category of a Unicode character.
+
+This function uses a big table.
+@end deftypefun
+
+@deftypefun bool uc_is_general_category (ucs4_t @var{uc}, uc_general_category_t @var{category})
+Tests whether a Unicode character belongs to a given category.
+The @var{category} argument can be a predefined general category or the
+combination of several predefined general categories.
+@end deftypefun
+
+@node Bit mask API
+@subsection The bit mask API for general category
+
+The following are the predefined general category value as bit masks.
+Additional general categories may be added in the future.
+
+@deftypevr Macro uint32_t UC_CATEGORY_MASK_L
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Lu
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Ll
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Lt
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Lm
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Lo
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_M
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Mn
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Mc
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Me
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_N
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Nd
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Nl
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_No
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_P
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Pc
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Pd
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Ps
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Pe
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Pi
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Pf
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Po
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_S
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Sm
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Sc
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Sk
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_So
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Z
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Zs
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Zl
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Zp
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_C
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Cc
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Cf
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Cs
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Co
+@deftypevrx Macro uint32_t UC_CATEGORY_MASK_Cn
+@end deftypevr
+
+The following function views general categories as sets of Unicode characters.
+
+@deftypefun bool uc_is_general_category_withtable (ucs4_t @var{uc}, uint32_t @var{bitmask})
+Tests whether a Unicode character belongs to a given category.
+The @var{bitmask} argument can be a predefined general category bitmask or the
+combination of several predefined general category bitmasks.
+
+This function uses a big table comprising all general categories.
+@end deftypefun
+
+@node Canonical combining class
+@section Canonical combining class
+
+@cindex canonical combining class
+@cindex Unicode character, canonical combining class
+Every Unicode character or code point has a @emph{canonical combining class}
+assigned to it.
+
+What is the meaning of the canonical combining class? Essentially, it
+indicates the priority with which a combining character is attached to its
+base character. The characters for which the canonical combining class is 0
+are the base characters, and the characters for which it is greater than 0 are
+the combining characters. Combining characters are rendered
+near/attached/around their base character, and combining characters with small
+combining classes are attached "first" or "closer" to the base character.
+
+The canonical combining class of a character is a number in the range
+0..255. The possible values are described in the Unicode Character Database
+@texnl{}@url{http://www.unicode.org/Public/UNIDATA/UCD.html}. The list here is
+not definitive; more values can be added in future versions.
+
+@deftypevr Constant int UC_CCC_NR
+The canonical combining class value for ``Not Reordered'' characters.
+The value is 0.
+@end deftypevr
+
+@deftypevr Constant int UC_CCC_OV
+The canonical combining class value for ``Overlay'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_CCC_NK
+The canonical combining class value for ``Nukta'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_CCC_KV
+The canonical combining class value for ``Kana Voicing'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_CCC_VR
+The canonical combining class value for ``Virama'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_CCC_ATBL
+The canonical combining class value for ``Attached Below Left'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_CCC_ATB
+The canonical combining class value for ``Attached Below'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_CCC_ATAR
+The canonical combining class value for ``Attached Above Right'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_CCC_BL
+The canonical combining class value for ``Below Left'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_CCC_B
+The canonical combining class value for ``Below'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_CCC_BR
+The canonical combining class value for ``Below Right'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_CCC_L
+The canonical combining class value for ``Left'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_CCC_R
+The canonical combining class value for ``Right'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_CCC_AL
+The canonical combining class value for ``Above Left'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_CCC_A
+The canonical combining class value for ``Above'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_CCC_AR
+The canonical combining class value for ``Above Right'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_CCC_DB
+The canonical combining class value for ``Double Below'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_CCC_DA
+The canonical combining class value for ``Double Above'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_CCC_IS
+The canonical combining class value for ``Iota Subscript'' characters.
+@end deftypevr
+
+The following function looks up the canonical combining class of a character.
+
+@deftypefun int uc_combining_class (ucs4_t @var{uc})
+Returns the canonical combining class of a Unicode character.
+@end deftypefun
+
+@node Bidirectional category
+@section Bidirectional category
+
+@cindex bidirectional category
+@cindex Unicode character, bidirectional category
+Every Unicode character or code point has a @emph{bidirectional category}
+assigned to it.
+
+The bidirectional category guides the bidirectional algorithm@texnl{}
+(@url{http://www.unicode.org/reports/tr9/}). The possible values are
+the following.
+
+@deftypevr Constant int UC_BIDI_L
+The bidirectional category for `Left-to-Right`'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_BIDI_LRE
+The bidirectional category for ``Left-to-Right Embedding'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_BIDI_LRO
+The bidirectional category for ``Left-to-Right Override'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_BIDI_R
+The bidirectional category for ``Right-to-Left'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_BIDI_AL
+The bidirectional category for ``Right-to-Left Arabic'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_BIDI_RLE
+The bidirectional category for ``Right-to-Left Embedding'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_BIDI_RLO
+The bidirectional category for ``Right-to-Left Override'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_BIDI_PDF
+The bidirectional category for ``Pop Directional Format'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_BIDI_EN
+The bidirectional category for ``European Number'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_BIDI_ES
+The bidirectional category for ``European Number Separator'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_BIDI_ET
+The bidirectional category for ``European Number Terminator'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_BIDI_AN
+The bidirectional category for ``Arabic Number'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_BIDI_CS
+The bidirectional category for ``Common Number Separator'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_BIDI_NSM
+The bidirectional category for ``Non-Spacing Mark'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_BIDI_BN
+The bidirectional category for ``Boundary Neutral'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_BIDI_B
+The bidirectional category for ``Paragraph Separator'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_BIDI_S
+The bidirectional category for ``Segment Separator'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_BIDI_WS
+The bidirectional category for ``Whitespace'' characters.
+@end deftypevr
+
+@deftypevr Constant int UC_BIDI_ON
+The bidirectional category for ``Other Neutral'' characters.
+@end deftypevr
+
+The following functions implement the association between a bidirectional
+category and its name.
+
+@deftypefun {const char *} uc_bidi_category_name (int @var{category})
+Returns the name of a bidirectional category.
+@end deftypefun
+
+@deftypefun int uc_bidi_category_byname (const char *@var{category_name})
+Returns the bidirectional category given by name, e.g@. @code{"LRE"}.
+@end deftypefun
+
+The following functions view bidirectional categories as sets of Unicode
+characters.
+
+@deftypefun int uc_bidi_category (ucs4_t @var{uc})
+Returns the bidirectional category of a Unicode character.
+@end deftypefun
+
+@deftypefun bool uc_is_bidi_category (ucs4_t @var{uc}, int @var{category})
+Tests whether a Unicode character belongs to a given bidirectional category.
+@end deftypefun
+
+@node Decimal digit value
+@section Decimal digit value
+
+@cindex value, of Unicode character
+@cindex Unicode character, value
+Decimal digits (like the digits from @samp{0} to @samp{9}) exist in many
+scripts. The following function converts a decimal digit character to its
+numerical value.
+
+@deftypefun int uc_decimal_value (ucs4_t @var{uc})
+Returns the decimal digit value of a Unicode character.
+The return value is an integer in the range 0..9, or -1 for characters that
+do not represent a decimal digit.
+@end deftypefun
+
+@node Digit value
+@section Digit value
+
+@cindex value, of Unicode character
+@cindex Unicode character, value
+Digit characters are like decimal digit characters, possibly in special forms,
+like as superscript, subscript, or circled. The following function converts a
+digit character to its numerical value.
+
+@deftypefun int uc_digit_value (ucs4_t @var{uc})
+Returns the digit value of a Unicode character.
+The return value is an integer in the range 0..9, or -1 for characters that
+do not represent a digit.
+@end deftypefun
+
+@node Numeric value
+@section Numeric value
+
+@cindex value, of Unicode character
+@cindex Unicode character, value
+There are also characters that represent numbers without a digit system, like
+the Roman numerals, and fractional numbers, like 1/4 or 3/4.
+
+The following type represents the numeric value of a Unicode character.
+@deftp Type uc_fraction_t
+This is a structure type with the following fields:
+@smallexample
+int numerator;
+int denominator;
+@end smallexample
+An integer @var{n} is represented by @code{numerator = @var{n}},
+@code{denominator = 1}.
+@end deftp
+
+The following function converts a number character to its numerical value.
+
+@deftypefun uc_fraction_t uc_numeric_value (ucs4_t @var{uc})
+Returns the numeric value of a Unicode character.
+The return value is a fraction, or the pseudo-fraction @code{@{ 0, 0 @}} for
+characters that do not represent a number.
+@end deftypefun
+
+@node Mirrored character
+@section Mirrored character
+
+@cindex mirroring, of Unicode character
+@cindex Unicode character, mirroring
+Character mirroring is used to associate the closing parenthesis character
+to the opening parenthesis character, the closing brace character with the
+opening brace character, and so on.
+
+The following function looks up the mirrored character of a Unicode character.
+
+@deftypefun bool uc_mirror_char (ucs4_t @var{uc}, ucs4_t *@var{puc})
+Stores the mirrored character of a Unicode character @var{uc} in
+@code{*@var{puc}} and returns @code{true}, if it exists. Otherwise it
+stores @var{uc} unmodified in @code{*@var{puc}} and returns @code{false}.
+@end deftypefun
+
+@node Properties
+@section Properties
+
+@cindex properties, of Unicode character
+@cindex Unicode character, properties
+This section defines boolean properties of Unicode characters. This
+means, a character either has the given property or does not have it.
+In other words, the property can be viewed as a subset of the set of
+Unicode characters.
+
+The GNU libunistring library provides two kinds of API for working with
+properties. The object oriented API uses a type @code{uc_property_t}
+to designate a property. In the function-based API, which is a bit more
+low level, a property is merely a function.
+
+@menu
+* Properties as objects::
+* Properties as functions::
+@end menu
+
+@node Properties as objects
+@subsection Properties as objects -- the object oriented API
+
+The following type designates a property on Unicode characters.
+
+@deftp Type uc_property_t
+This data type denotes a boolean property on Unicode characters. It is an
+immediate type that can be copied by simple assignment, without involving
+memory allocation. It is not an array type.
+@end deftp
+
+Many Unicode properties are predefined.
+
+The following are general properties.
+
+@deftypevr Constant uc_property_t UC_PROPERTY_WHITE_SPACE
+@deftypevrx Constant uc_property_t UC_PROPERTY_ALPHABETIC
+@deftypevrx Constant uc_property_t UC_PROPERTY_OTHER_ALPHABETIC
+@deftypevrx Constant uc_property_t UC_PROPERTY_NOT_A_CHARACTER
+@deftypevrx Constant uc_property_t UC_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT
+@deftypevrx Constant uc_property_t UC_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT
+@deftypevrx Constant uc_property_t UC_PROPERTY_DEPRECATED
+@deftypevrx Constant uc_property_t UC_PROPERTY_LOGICAL_ORDER_EXCEPTION
+@deftypevrx Constant uc_property_t UC_PROPERTY_VARIATION_SELECTOR
+@deftypevrx Constant uc_property_t UC_PROPERTY_PRIVATE_USE
+@deftypevrx Constant uc_property_t UC_PROPERTY_UNASSIGNED_CODE_VALUE
+@end deftypevr
+
+The following properties are related to case folding.
+
+@deftypevr Constant uc_property_t UC_PROPERTY_UPPERCASE
+@deftypevrx Constant uc_property_t UC_PROPERTY_OTHER_UPPERCASE
+@deftypevrx Constant uc_property_t UC_PROPERTY_LOWERCASE
+@deftypevrx Constant uc_property_t UC_PROPERTY_OTHER_LOWERCASE
+@deftypevrx Constant uc_property_t UC_PROPERTY_TITLECASE
+@deftypevrx Constant uc_property_t UC_PROPERTY_SOFT_DOTTED
+@end deftypevr
+
+The following properties are related to identifiers.
+
+@deftypevr Constant uc_property_t UC_PROPERTY_ID_START
+@deftypevrx Constant uc_property_t UC_PROPERTY_OTHER_ID_START
+@deftypevrx Constant uc_property_t UC_PROPERTY_ID_CONTINUE
+@deftypevrx Constant uc_property_t UC_PROPERTY_OTHER_ID_CONTINUE
+@deftypevrx Constant uc_property_t UC_PROPERTY_XID_START
+@deftypevrx Constant uc_property_t UC_PROPERTY_XID_CONTINUE
+@deftypevrx Constant uc_property_t UC_PROPERTY_PATTERN_WHITE_SPACE
+@deftypevrx Constant uc_property_t UC_PROPERTY_PATTERN_SYNTAX
+@end deftypevr
+
+The following properties have an influence on shaping and rendering.
+
+@deftypevr Constant uc_property_t UC_PROPERTY_JOIN_CONTROL
+@deftypevrx Constant uc_property_t UC_PROPERTY_GRAPHEME_BASE
+@deftypevrx Constant uc_property_t UC_PROPERTY_GRAPHEME_EXTEND
+@deftypevrx Constant uc_property_t UC_PROPERTY_OTHER_GRAPHEME_EXTEND
+@deftypevrx Constant uc_property_t UC_PROPERTY_GRAPHEME_LINK
+@end deftypevr
+
+The following properties relate to bidirectional reordering.
+
+@deftypevr Constant uc_property_t UC_PROPERTY_BIDI_CONTROL
+@deftypevrx Constant uc_property_t UC_PROPERTY_BIDI_LEFT_TO_RIGHT
+@deftypevrx Constant uc_property_t UC_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT
+@deftypevrx Constant uc_property_t UC_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT
+@deftypevrx Constant uc_property_t UC_PROPERTY_BIDI_EUROPEAN_DIGIT
+@deftypevrx Constant uc_property_t UC_PROPERTY_BIDI_EUR_NUM_SEPARATOR
+@deftypevrx Constant uc_property_t UC_PROPERTY_BIDI_EUR_NUM_TERMINATOR
+@deftypevrx Constant uc_property_t UC_PROPERTY_BIDI_ARABIC_DIGIT
+@deftypevrx Constant uc_property_t UC_PROPERTY_BIDI_COMMON_SEPARATOR
+@deftypevrx Constant uc_property_t UC_PROPERTY_BIDI_BLOCK_SEPARATOR
+@deftypevrx Constant uc_property_t UC_PROPERTY_BIDI_SEGMENT_SEPARATOR
+@deftypevrx Constant uc_property_t UC_PROPERTY_BIDI_WHITESPACE
+@deftypevrx Constant uc_property_t UC_PROPERTY_BIDI_NON_SPACING_MARK
+@deftypevrx Constant uc_property_t UC_PROPERTY_BIDI_BOUNDARY_NEUTRAL
+@deftypevrx Constant uc_property_t UC_PROPERTY_BIDI_PDF
+@deftypevrx Constant uc_property_t UC_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE
+@deftypevrx Constant uc_property_t UC_PROPERTY_BIDI_OTHER_NEUTRAL
+@end deftypevr
+
+The following properties deal with number representations.
+
+@deftypevr Constant uc_property_t UC_PROPERTY_HEX_DIGIT
+@deftypevrx Constant uc_property_t UC_PROPERTY_ASCII_HEX_DIGIT
+@end deftypevr
+
+The following properties deal with CJK.
+
+@deftypevr Constant uc_property_t UC_PROPERTY_IDEOGRAPHIC
+@deftypevrx Constant uc_property_t UC_PROPERTY_UNIFIED_IDEOGRAPH
+@deftypevrx Constant uc_property_t UC_PROPERTY_RADICAL
+@deftypevrx Constant uc_property_t UC_PROPERTY_IDS_BINARY_OPERATOR
+@deftypevrx Constant uc_property_t UC_PROPERTY_IDS_TRINARY_OPERATOR
+@end deftypevr
+
+Other miscellaneous properties are:
+
+@deftypevr Constant uc_property_t UC_PROPERTY_ZERO_WIDTH
+@deftypevrx Constant uc_property_t UC_PROPERTY_SPACE
+@deftypevrx Constant uc_property_t UC_PROPERTY_NON_BREAK
+@deftypevrx Constant uc_property_t UC_PROPERTY_ISO_CONTROL
+@deftypevrx Constant uc_property_t UC_PROPERTY_FORMAT_CONTROL
+@deftypevrx Constant uc_property_t UC_PROPERTY_DASH
+@deftypevrx Constant uc_property_t UC_PROPERTY_HYPHEN
+@deftypevrx Constant uc_property_t UC_PROPERTY_PUNCTUATION
+@deftypevrx Constant uc_property_t UC_PROPERTY_LINE_SEPARATOR
+@deftypevrx Constant uc_property_t UC_PROPERTY_PARAGRAPH_SEPARATOR
+@deftypevrx Constant uc_property_t UC_PROPERTY_QUOTATION_MARK
+@deftypevrx Constant uc_property_t UC_PROPERTY_SENTENCE_TERMINAL
+@deftypevrx Constant uc_property_t UC_PROPERTY_TERMINAL_PUNCTUATION
+@deftypevrx Constant uc_property_t UC_PROPERTY_CURRENCY_SYMBOL
+@deftypevrx Constant uc_property_t UC_PROPERTY_MATH
+@deftypevrx Constant uc_property_t UC_PROPERTY_OTHER_MATH
+@deftypevrx Constant uc_property_t UC_PROPERTY_PAIRED_PUNCTUATION
+@deftypevrx Constant uc_property_t UC_PROPERTY_LEFT_OF_PAIR
+@deftypevrx Constant uc_property_t UC_PROPERTY_COMBINING
+@deftypevrx Constant uc_property_t UC_PROPERTY_COMPOSITE
+@deftypevrx Constant uc_property_t UC_PROPERTY_DECIMAL_DIGIT
+@deftypevrx Constant uc_property_t UC_PROPERTY_NUMERIC
+@deftypevrx Constant uc_property_t UC_PROPERTY_DIACRITIC
+@deftypevrx Constant uc_property_t UC_PROPERTY_EXTENDER
+@deftypevrx Constant uc_property_t UC_PROPERTY_IGNORABLE_CONTROL
+@end deftypevr
+
+The following function looks up a property by its name.
+
+@deftypefun uc_property_t uc_property_byname (const char *@var{property_name})
+Returns the property given by name, e.g. @code{"White space"}. If a property
+with the given name exists, the result will satisfy the
+@code{uc_property_is_valid} predicate. Otherwise the result will not satisfy
+this predicate and must not be passed to functions that expect an
+@code{uc_property_t} argument.
+
+This function references a big table of all predefined properties. Its use
+can significantly increase the size of your application.
+@end deftypefun
+
+@deftypefun bool uc_property_is_valid (uc_property_t property)
+Returns @code{true} when the given property is valid, or @code{false}
+otherwise.
+@end deftypefun
+
+The following function views a property as a set of Unicode characters.
+
+@deftypefun bool uc_is_property (ucs4_t @var{uc}, uc_property_t @var{property})
+Tests whether the Unicode character @var{uc} has the given property.
+@end deftypefun
+
+@node Properties as functions
+@subsection Properties as functions -- the functional API
+
+The following are general properties.
+
+@deftypefun bool uc_is_property_white_space (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_alphabetic (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_other_alphabetic (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_not_a_character (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_default_ignorable_code_point (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_other_default_ignorable_code_point (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_deprecated (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_logical_order_exception (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_variation_selector (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_private_use (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_unassigned_code_value (ucs4_t @var{uc})
+@end deftypefun
+
+The following properties are related to case folding.
+
+@deftypefun bool uc_is_property_uppercase (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_other_uppercase (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_lowercase (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_other_lowercase (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_titlecase (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_soft_dotted (ucs4_t @var{uc})
+@end deftypefun
+
+The following properties are related to identifiers.
+
+@deftypefun bool uc_is_property_id_start (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_other_id_start (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_id_continue (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_other_id_continue (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_xid_start (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_xid_continue (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_pattern_white_space (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_pattern_syntax (ucs4_t @var{uc})
+@end deftypefun
+
+The following properties have an influence on shaping and rendering.
+
+@deftypefun bool uc_is_property_join_control (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_grapheme_base (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_grapheme_extend (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_other_grapheme_extend (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_grapheme_link (ucs4_t @var{uc})
+@end deftypefun
+
+The following properties relate to bidirectional reordering.
+
+@deftypefun bool uc_is_property_bidi_control (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_bidi_left_to_right (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_bidi_hebrew_right_to_left (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_bidi_arabic_right_to_left (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_bidi_european_digit (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_bidi_eur_num_separator (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_bidi_eur_num_terminator (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_bidi_arabic_digit (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_bidi_common_separator (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_bidi_block_separator (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_bidi_segment_separator (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_bidi_whitespace (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_bidi_non_spacing_mark (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_bidi_boundary_neutral (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_bidi_pdf (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_bidi_embedding_or_override (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_bidi_other_neutral (ucs4_t @var{uc})
+@end deftypefun
+
+The following properties deal with number representations.
+
+@deftypefun bool uc_is_property_hex_digit (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_ascii_hex_digit (ucs4_t @var{uc})
+@end deftypefun
+
+The following properties deal with CJK.
+
+@deftypefun bool uc_is_property_ideographic (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_unified_ideograph (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_radical (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_ids_binary_operator (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_ids_trinary_operator (ucs4_t @var{uc})
+@end deftypefun
+
+Other miscellaneous properties are:
+
+@deftypefun bool uc_is_property_zero_width (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_space (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_non_break (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_iso_control (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_format_control (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_dash (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_hyphen (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_punctuation (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_line_separator (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_paragraph_separator (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_quotation_mark (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_sentence_terminal (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_terminal_punctuation (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_currency_symbol (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_math (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_other_math (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_paired_punctuation (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_left_of_pair (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_combining (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_composite (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_decimal_digit (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_numeric (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_diacritic (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_extender (ucs4_t @var{uc})
+@deftypefunx bool uc_is_property_ignorable_control (ucs4_t @var{uc})
+@end deftypefun
+
+@node Scripts
+@section Scripts
+
+@cindex scripts
+The Unicode characters are subdivided into scripts.
+
+The following type is used to represent a script:
+
+@deftp Type uc_script_t
+This data type is a structure type that refers to statically allocated
+read-only data. It contains the following fields:
+@smallexample
+const char *name;
+@end smallexample
+
+The @code{name} field contains the name of the script.
+@end deftp
+
+@cindex Unicode character, script
+The following functions look up a script.
+
+@deftypefun {const uc_script_t *} uc_script (ucs4_t @var{uc})
+Returns the script of a Unicode character. Returns NULL if @var{uc} does not
+belong to any script.
+@end deftypefun
+
+@deftypefun {const uc_script_t *} uc_script_byname (const char *@var{script_name})
+Returns the script given by its name, e.g@. @code{"HAN"}. Returns NULL if a
+script with the given name does not exist.
+@end deftypefun
+
+The following function views a script as a set of Unicode characters.
+
+@deftypefun bool uc_is_script (ucs4_t @var{uc}, const uc_script_t *@var{script})
+Tests whether a Unicode character belongs to a given script.
+@end deftypefun
+
+The following gives a global picture of all scripts.
+
+@deftypefun void uc_all_scripts (const uc_script_t **@var{scripts}, size_t *@var{count})
+Get the list of all scripts. Stores a pointer to an array of all scripts in
+@code{*@var{scripts}} and the length of this array in @code{*@var{count}}.
+@end deftypefun
+
+@node Blocks
+@section Blocks
+
+@cindex block
+The Unicode characters are subdivided into blocks. A block is an interval of
+Unicode code points.
+
+The following type is used to represent a block.
+
+@deftp Type uc_block_t
+This data type is a structure type that refers to statically allocated data.
+It contains the following fields:
+@smallexample
+ucs4_t start;
+ucs4_t end;
+const char *name;
+@end smallexample
+
+The @code{start} field is the first Unicode code point in the block.
+
+The @code{end} field is the last Unicode code point in the block.
+
+The @code{name} field is the name of the block.
+@end deftp
+
+@cindex Unicode character, block
+The following function looks up a block.
+
+@deftypefun {const uc_block_t *} uc_block (ucs4_t @var{uc})
+Returns the block a character belongs to.
+@end deftypefun
+
+The following function views a block as a set of Unicode characters.
+
+@deftypefun bool uc_is_block (ucs4_t @var{uc}, const uc_block_t *@var{block})
+Tests whether a Unicode character belongs to a given block.
+@end deftypefun
+
+The following gives a global picture of all block.
+
+@deftypefun void uc_all_blocks (const uc_block_t **@var{blocks}, size_t *@var{count})
+Get the list of all blocks. Stores a pointer to an array of all blocks in
+@code{*@var{blocks}} and the length of this array in @code{*@var{count}}.
+@end deftypefun
+
+@node ISO C and Java syntax
+@section ISO C and Java syntax
+
+@cindex C, programming language
+@cindex Java, programming language
+@cindex identifiers
+The following properties are taken from language standards. The supported
+language standards are ISO C 99 and Java.
+
+@deftypefun bool uc_is_c_whitespace (ucs4_t @var{uc})
+Tests whether a Unicode character is considered whitespace in ISO C 99.
+@end deftypefun
+
+@deftypefun bool uc_is_java_whitespace (ucs4_t @var{uc})
+Tests whether a Unicode character is considered whitespace in Java.
+@end deftypefun
+
+The following enumerated values are the possible return values of the functions
+@code{uc_c_ident_category} and @code{uc_java_ident_category}.
+
+@deftypevr Constant int UC_IDENTIFIER_START
+This return value means that the given character is valid as first or
+subsequent character in an identifier.
+@end deftypevr
+
+@deftypevr Constant int UC_IDENTIFIER_VALID
+This return value means that the given character is valid as subsequent
+character only.
+@end deftypevr
+
+@deftypevr Constant int UC_IDENTIFIER_INVALID
+This return value means that the given character is not valid in an identifier.
+@end deftypevr
+
+@deftypevr Constant int UC_IDENTIFIER_IGNORABLE
+This return value (only for Java) means that the given character is ignorable.
+@end deftypevr
+
+The following function determine whether a given character can be a constituent
+of an identifier in the given programming language.
+
+@cindex Unicode character, validity in C identifiers
+@deftypefun int uc_c_ident_category (ucs4_t @var{uc})
+Returns the categorization of a Unicode character with respect to the ISO C 99
+identifier syntax.
+@end deftypefun
+
+@cindex Unicode character, validity in Java identifiers
+@deftypefun int uc_java_ident_category (ucs4_t @var{uc})
+Returns the categorization of a Unicode character with respect to the Java
+identifier syntax.
+@end deftypefun
+
+@node Classifications like in ISO C
+@section Classifications like in ISO C
+
+@cindex C-like API
+@cindex Unicode character, classification like in C
+The following character classifications mimic those declared in the ISO C
+header files @code{<ctype.h>} and @code{<wctype.h>}. These functions are
+deprecated, because this set of functions was designed with ASCII in mind and
+cannot reflect the more diverse reality of the Unicode character set. But
+they can be a quick-and-dirty porting aid when migrating from @code{wchar_t}
+APIs to Unicode strings.
+
+@deftypefun bool uc_is_alnum (ucs4_t @var{uc})
+Tests for any character for which @code{uc_is_alpha} or @code{uc_is_digit} is
+true.
+@end deftypefun
+
+@deftypefun bool uc_is_alpha (ucs4_t @var{uc})
+Tests for any character for which @code{uc_is_upper} or @code{uc_is_lower} is
+true, or any character that is one of a locale-specific set of characters for
+which none of @code{uc_is_cntrl}, @code{uc_is_digit}, @code{uc_is_punct}, or
+@code{uc_is_space} is true.
+@end deftypefun
+
+@deftypefun bool uc_is_cntrl (ucs4_t @var{uc})
+Tests for any control character.
+@end deftypefun
+
+@deftypefun bool uc_is_digit (ucs4_t @var{uc})
+Tests for any character that corresponds to a decimal-digit character.
+@end deftypefun
+
+@deftypefun bool uc_is_graph (ucs4_t @var{uc})
+Tests for any character for which @code{uc_is_print} is true and
+@code{uc_is_space} is false.
+@end deftypefun
+
+@deftypefun bool uc_is_lower (ucs4_t @var{uc})
+Tests for any character that corresponds to a lowercase letter or is one
+of a locale-specific set of characters for which none of @code{uc_is_cntrl},
+@code{uc_is_digit}, @code{uc_is_punct}, or @code{uc_is_space} is true.
+@end deftypefun
+
+@deftypefun bool uc_is_print (ucs4_t @var{uc})
+Tests for any printing character.
+@end deftypefun
+
+@deftypefun bool uc_is_punct (ucs4_t @var{uc})
+Tests for any printing character that is one of a locale-specific set of
+characters for which neither @code{uc_is_space} nor @code{uc_is_alnum} is true.
+@end deftypefun
+
+@deftypefun bool uc_is_space (ucs4_t @var{uc})
+Test for any character that corresponds to a locale-specific set of characters
+for which none of @code{uc_is_alnum}, @code{uc_is_graph}, or @code{uc_is_punct}
+is true.
+@end deftypefun
+
+@deftypefun bool uc_is_upper (ucs4_t @var{uc})
+Tests for any character that corresponds to an uppercase letter or is one
+of a locale-specific set of characters for which none of @code{uc_is_cntrl},
+@code{uc_is_digit}, @code{uc_is_punct}, or @code{uc_is_space} is true.
+@end deftypefun
+
+@deftypefun bool uc_is_xdigit (ucs4_t @var{uc})
+Tests for any character that corresponds to a hexadecimal-digit character.
+@end deftypefun
+
+@deftypefun bool uc_is_blank (ucs4_t @var{uc})
+Tests for any character that corresponds to a standard blank character or
+a locale-specific set of characters for which @code{uc_is_alnum} is false.
+@end deftypefun
diff --git a/doc/unilbrk.texi b/doc/unilbrk.texi
new file mode 100644
index 00000000..5441f317
--- /dev/null
+++ b/doc/unilbrk.texi
@@ -0,0 +1,88 @@
+@node unilbrk.h
+@chapter Line breaking @code{<unilbrk.h>}
+
+@cindex line breaks
+@cindex breaks, line
+@cindex wrapping
+This include file declares functions for determining where in a string
+line breaks could or should be introduced, in order to make the displayed
+string fit into a column of given width.
+
+These functions are locale dependent. The @var{encoding} argument identifies
+the encoding (e.g@. @code{"ISO-8859-2"} for Polish).
+
+The following enumerated values indicate whether, at a given position, a line
+break is possible or not. Given an string @var{s} as an array
+@code{@var{s}[0..@var{n}-1]} and a position @var{i}, the values have the
+following meanings:
+
+@deftypevr Constant int UC_BREAK_MANDATORY
+This value indicates that @code{@var{s}[@var{i}]} is a line break character.
+@end deftypevr
+
+@deftypevr Constant int UC_BREAK_POSSIBLE
+This value indicates that a line break may be inserted between
+@code{@var{s}[@var{i}-1]} and @code{@var{s}[@var{i}]}.
+@end deftypevr
+
+@deftypevr Constant int UC_BREAK_HYPHENATION
+This value indicates that a hyphen and a line break may be inserted between
+@code{@var{s}[@var{i}-1]} and @code{@var{s}[@var{i}]}. But beware of language
+dependent hyphenation rules.
+@end deftypevr
+
+@deftypevr Constant int UC_BREAK_PROHIBITED
+This value indicates that @code{@var{s}[@var{i}-1]} and @code{@var{s}[@var{i}]}
+must not be separated.
+@end deftypevr
+
+@deftypevr Constant int UC_BREAK_UNDEFINED
+This value is not used as a return value; rather, in the overriding argument of
+the @code{u*_width_linebreaks} functions, it indicates the absence of an
+override.
+@end deftypevr
+
+The following functions determine the positions at which line breaks are
+possible.
+
+@deftypefun void u8_possible_linebreaks (const uint8_t *@var{s}, size_t @var{n}, const char *@var{encoding}, char *@var{p})
+@deftypefunx void u16_possible_linebreaks (const uint16_t *@var{s}, size_t @var{n}, const char *@var{encoding}, char *@var{p})
+@deftypefunx void u32_possible_linebreaks (const uint32_t *@var{s}, size_t @var{n}, const char *@var{encoding}, char *@var{p})
+@deftypefunx void ulc_possible_linebreaks (const char *@var{s}, size_t @var{n}, const char *@var{encoding}, char *@var{p})
+Determines the line break points in @var{s}, and stores the result at
+@code{@var{p}[0..@var{n}-1]}. Every @code{@var{p}[@var{i}]} is assigned one of
+the values @code{UC_BREAK_MANDATORY}, @code{UC_BREAK_POSSIBLE},
+@code{UC_BREAK_HYPHENATION}, @code{UC_BREAK_PROHIBITED}.
+@end deftypefun
+
+The following functions determine where line breaks should be inserted so that
+each line fits in a given width, when output to a device that uses
+non-proportional fonts.
+
+@deftypefun int u8_width_linebreaks (const uint8_t *@var{s}, size_t @var{n}, int @var{width}, int @var{start_column}, int @var{at_end_columns}, const char *@var{override}, const char *@var{encoding}, char *@var{p})
+@deftypefunx int u16_width_linebreaks (const uint16_t *@var{s}, size_t @var{n}, int @var{width}, int @var{start_column}, int @var{at_end_columns}, const char *@var{override}, const char *@var{encoding}, char *@var{p})
+@deftypefunx int u32_width_linebreaks (const uint32_t *@var{s}, size_t @var{n}, int @var{width}, int @var{start_column}, int @var{at_end_columns}, const char *@var{override}, const char *@var{encoding}, char *@var{p})
+@deftypefunx int ulc_width_linebreaks (const char *@var{s}, size_t @var{n}, int @var{width}, int @var{start_column}, int @var{at_end_columns}, const char *@var{override}, const char *@var{encoding}, char *@var{p})
+Chooses the best line breaks, assuming that every character occupies a width
+given by the @code{uc_width} function (see @ref{uniwidth.h}).
+
+The string is @code{@var{s}[0..@var{n}-1]}.
+
+The maximum number of columns per line is given as @var{width}.
+The starting column of the string is given as @var{start_column}.
+If the algorithm shall keep room after the last piece, this amount of room can
+be given as @var{at_end_columns}.
+
+@var{override} is an optional override; if
+@code{@var{override}[@var{i}] != UC_BREAK_UNDEFINED},
+@code{@var{override}[@var{i}]} takes precedence over @code{@var{p}[@var{i}]}
+as returned by the @code{u*_possible_linebreaks} function.
+
+The given @var{encoding} is used for disambiguating widths in @code{uc_width}.
+
+Returns the column after the end of the string, and stores the result at
+@code{@var{p}[0..@var{n}-1]}. Every @code{@var{p}[@var{i}]} is assigned one of
+the values @code{UC_BREAK_MANDATORY}, @code{UC_BREAK_POSSIBLE},
+@code{UC_BREAK_HYPHENATION}, @code{UC_BREAK_PROHIBITED}. Here the value
+@code{UC_BREAK_POSSIBLE} indicates that a line break @emph{should} be inserted.
+@end deftypefun
diff --git a/doc/uniname.texi b/doc/uniname.texi
new file mode 100644
index 00000000..66461be5
--- /dev/null
+++ b/doc/uniname.texi
@@ -0,0 +1,32 @@
+@node uniname.h
+@chapter Names of Unicode characters @code{<uniname.h>}
+
+@cindex Unicode character, name
+This include file implements the association between a Unicode character and
+its name.
+
+The name of a Unicode character allows to distinguish it from other, similar
+looking characters. For example, the character @samp{x} has the name
+@code{"LATIN SMALL LETTER X"} and is therefore different from the character
+named @code{"MULTIPLICATION SIGN"}.
+
+@deftypevr Macro {unsigned int} UNINAME_MAX
+This macro expands to a constant that is the required size of buffer for a
+Unicode character name.
+@end deftypevr
+
+@deftypefun {char *} unicode_character_name (ucs4_t @var{uc}, char *@var{buf})
+Looks up the name of a Unicode character, in uppercase ASCII.
+@var{buf} must point to a buffer, at least @code{UNINAME_MAX} bytes in size.
+Returns the filled @var{buf}, or NULL if the character does not have a name.
+@end deftypefun
+
+@deftypefun ucs4_t unicode_name_character (const char *@var{name})
+Looks up the Unicode character with a given name, in upper- or lowercase
+ASCII. Returns the character if found, or @code{UNINAME_INVALID} if not found.
+@end deftypefun
+
+@deftypevr Macro ucs4_t UNINAME_INVALID
+This macro expands to a constant that is a special return value of the
+@code{unicode_name_character} function.
+@end deftypevr
diff --git a/doc/uninorm.texi b/doc/uninorm.texi
new file mode 100644
index 00000000..d4206d50
--- /dev/null
+++ b/doc/uninorm.texi
@@ -0,0 +1,299 @@
+@node uninorm.h
+@chapter Normalization forms (composition and decomposition) @code{<uninorm.h>}
+
+@cindex normal forms
+@cindex normalizing
+This include file defines functions for transforming Unicode strings to one
+of the four normal forms, known as NFC, NFD, NKFC, NFKD. These
+transformations involve decomposition and --- for NFC and NFKC --- composition
+of Unicode characters.
+
+@menu
+* Decomposition of characters::
+* Composition of characters::
+* Normalization of strings::
+* Normalizing comparisons::
+* Normalization of streams::
+@end menu
+
+@node Decomposition of characters
+@section Decomposition of Unicode characters
+
+@cindex decomposing
+The following enumerated values are the possible types of decomposition of a
+Unicode character.
+
+@deftypevr Constant int UC_DECOMP_CANONICAL
+Denotes canonical decomposition.
+@end deftypevr
+
+@deftypevr Constant int UC_DECOMP_FONT
+UCD marker: @code{<font>}. Denotes a font variant (e.g. a blackletter form).
+@end deftypevr
+
+@deftypevr Constant int UC_DECOMP_NOBREAK
+UCD marker: @code{<noBreak>}.
+Denotes a no-break version of a space or hyphen.
+@end deftypevr
+
+@deftypevr Constant int UC_DECOMP_INITIAL
+UCD marker: @code{<initial>}.
+Denotes an initial presentation form (Arabic).
+@end deftypevr
+
+@deftypevr Constant int UC_DECOMP_MEDIAL
+UCD marker: @code{<medial>}.
+Denotes a medial presentation form (Arabic).
+@end deftypevr
+
+@deftypevr Constant int UC_DECOMP_FINAL
+UCD marker: @code{<final>}.
+Denotes a final presentation form (Arabic).
+@end deftypevr
+
+@deftypevr Constant int UC_DECOMP_ISOLATED
+UCD marker: @code{<isolated>}.
+Denotes an isolated presentation form (Arabic).
+@end deftypevr
+
+@deftypevr Constant int UC_DECOMP_CIRCLE
+UCD marker: @code{<circle>}.
+Denotes an encircled form.
+@end deftypevr
+
+@deftypevr Constant int UC_DECOMP_SUPER
+UCD marker: @code{<super>}.
+Denotes a superscript form.
+@end deftypevr
+
+@deftypevr Constant int UC_DECOMP_SUB
+UCD marker: @code{<sub>}.
+Denotes a subscript form.
+@end deftypevr
+
+@deftypevr Constant int UC_DECOMP_VERTICAL
+UCD marker: @code{<vertical>}.
+Denotes a vertical layout presentation form.
+@end deftypevr
+
+@deftypevr Constant int UC_DECOMP_WIDE
+UCD marker: @code{<wide>}.
+Denotes a wide (or zenkaku) compatibility character.
+@end deftypevr
+
+@deftypevr Constant int UC_DECOMP_NARROW
+UCD marker: @code{<narrow>}.
+Denotes a narrow (or hankaku) compatibility character.
+@end deftypevr
+
+@deftypevr Constant int UC_DECOMP_SMALL
+UCD marker: @code{<small>}.
+Denotes a small variant form (CNS compatibility).
+@end deftypevr
+
+@deftypevr Constant int UC_DECOMP_SQUARE
+UCD marker: @code{<square>}.
+Denotes a CJK squared font variant.
+@end deftypevr
+
+@deftypevr Constant int UC_DECOMP_FRACTION
+UCD marker: @code{<fraction>}.
+Denotes a vulgar fraction form.
+@end deftypevr
+
+@deftypevr Constant int UC_DECOMP_COMPAT
+UCD marker: @code{<compat>}.
+Denotes an otherwise unspecified compatibility character.
+@end deftypevr
+
+The following constant denotes the maximum size of decomposition of a single
+Unicode character.
+
+@deftypevr Macro {unsigned int} UC_DECOMPOSITION_MAX_LENGTH
+This macro expands to a constant that is the required size of buffer passed to
+the @code{uc_decomposition} and @code{uc_canonical_decomposition} functions.
+@end deftypevr
+
+The following functions decompose a Unicode character.
+
+@deftypefun int uc_decomposition (ucs4_t @var{uc}, int *@var{decomp_tag}, ucs4_t *@var{decomposition})
+Returns the character decomposition mapping of the Unicode character @var{uc}.
+@var{decomposition} must point to an array of at least
+@code{UC_DECOMPOSITION_MAX_LENGTH} @code{ucs_t} elements.
+
+When a decomposition exists, @code{@var{decomposition}[0..@var{n}-1]} and
+@code{*@var{decomp_tag}} are filled and @var{n} is returned. Otherwise -1 is
+returned.
+@end deftypefun
+
+@deftypefun int uc_canonical_decomposition (ucs4_t @var{uc}, ucs4_t *@var{decomposition})
+Returns the canonical character decomposition mapping of the Unicode character
+@var{uc}. @var{decomposition} must point to an array of at least
+@code{UC_DECOMPOSITION_MAX_LENGTH} @code{ucs_t} elements.
+
+When a decomposition exists, @code{@var{decomposition}[0..@var{n}-1]} is filled
+and @var{n} is returned. Otherwise -1 is returned.
+@end deftypefun
+
+@node Composition of characters
+@section Composition of Unicode characters
+
+@cindex composing, Unicode characters
+@cindex combining, Unicode characters
+The following function composes a Unicode character from two Unicode
+characters.
+
+@deftypefun ucs4_t uc_composition (ucs4_t @var{uc1}, ucs4_t @var{uc2})
+Attempts to combine the Unicode characters @var{uc1}, @var{uc2}.
+@var{uc1} is known to have canonical combining class 0.
+
+Returns the combination of @var{uc1} and @var{uc2}, if it exists.
+Returns 0 otherwise.
+
+Not all decompositions can be recombined using this function. See the Unicode
+file @file{CompositionExclusions.txt} for details.
+@end deftypefun
+
+@node Normalization of strings
+@section Normalization of strings
+
+The Unicode standard defines four normalization forms for Unicode strings.
+The following type is used to denote a normalization form.
+
+@deftp Type uninorm_t
+An object of type @code{uninorm_t} denotes a Unicode normalization form.
+This is a scalar type; its values can be compared with @code{==}.
+@end deftp
+
+The following constants denote the four normalization forms.
+
+@deftypevr Macro uninorm_t UNINORM_NFD
+Denotes Normalization form D: canonical decomposition.
+@end deftypevr
+
+@deftypevr Macro uninorm_t UNINORM_NFC
+Normalization form C: canonical decomposition, then canonical composition.
+@end deftypevr
+
+@deftypevr Macro uninorm_t UNINORM_NFKD
+Normalization form KD: compatibility decomposition.
+@end deftypevr
+
+@deftypevr Macro uninorm_t UNINORM_NFKC
+Normalization form KC: compatibility decomposition, then canonical composition.
+@end deftypevr
+
+The following functions operate on @code{uninorm_t} objects.
+
+@deftypefun bool uninorm_is_compat_decomposing (uninorm_t @var{nf})
+Tests whether the normalization form @var{nf} does compatibility decomposition.
+@end deftypefun
+
+@deftypefun bool uninorm_is_composing (uninorm_t @var{nf})
+Tests whether the normalization form @var{nf} includes canonical composition.
+@end deftypefun
+
+@deftypefun uninorm_t uninorm_decomposing_form (uninorm_t @var{nf})
+Returns the decomposing variant of the normalization form @var{nf}.
+This maps NFC,NFD @arrow{} NFD and NFKC,NFKD @arrow{} NFKD.
+@end deftypefun
+
+The following functions apply a Unicode normalization form to a Unicode string.
+
+@deftypefun {uint8_t *} u8_normalize (uninorm_t @var{nf}, const uint8_t *@var{s}, size_t @var{n}, uint8_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint16_t *} u16_normalize (uninorm_t @var{nf}, const uint16_t *@var{s}, size_t @var{n}, uint16_t *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {uint32_t *} u32_normalize (uninorm_t @var{nf}, const uint32_t *@var{s}, size_t @var{n}, uint32_t *@var{resultbuf}, size_t *@var{lengthp})
+Returns the specified normalization form of a string.
+@end deftypefun
+
+@node Normalizing comparisons
+@section Normalizing comparisons
+
+@cindex comparing, ignoring normalization
+The following functions compare Unicode string, ignoring differences in
+normalization.
+
+@deftypefun int u8_normcmp (const uint8_t *@var{s1}, size_t @var{n1}, const uint8_t *@var{s2}, size_t @var{n2}, uninorm_t @var{nf}, int *@var{resultp})
+@deftypefunx int u16_normcmp (const uint16_t *@var{s1}, size_t @var{n1}, const uint16_t *@var{s2}, size_t @var{n2}, uninorm_t @var{nf}, int *@var{resultp})
+@deftypefunx int u32_normcmp (const uint32_t *@var{s1}, size_t @var{n1}, const uint32_t *@var{s2}, size_t @var{n2}, uninorm_t @var{nf}, int *@var{resultp})
+Compares @var{s1} and @var{s2}, ignoring differences in normalization.
+
+@var{nf} must be either @code{UNINORM_NFD} or @code{UNINORM_NFKD}.
+
+If successful, sets @code{*@var{resultp}} to -1 if @var{s1} < @var{s2},
+0 if @var{s1} = @var{s2}, 1 if @var{s1} > @var{s2}, and returns 0.
+Upon failure, returns -1 with @code{errno} set.
+@end deftypefun
+
+@cindex comparing, ignoring normalization, with collation rules
+@cindex comparing, with collation rules, ignoring normalization
+@deftypefun {char *} u8_normxfrm (const uint8_t *@var{s}, size_t @var{n}, uninorm_t @var{nf}, char *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {char *} u16_normxfrm (const uint16_t *@var{s}, size_t @var{n}, uninorm_t @var{nf}, char *@var{resultbuf}, size_t *@var{lengthp})
+@deftypefunx {char *} u32_normxfrm (const uint32_t *@var{s}, size_t @var{n}, uninorm_t @var{nf}, char *@var{resultbuf}, size_t *@var{lengthp})
+Converts the string @var{s} of length @var{n} to a NUL-terminated byte
+sequence, in such a way that comparing @code{u8_normxfrm (@var{s1})} and
+@code{u8_normxfrm (@var{s2})} with the @code{u8_cmp2} function is equivalent to
+comparing @var{s1} and @var{s2} with the @code{u8_normcoll} function.
+
+@var{nf} must be either @code{UNINORM_NFC} or @code{UNINORM_NFKC}.
+@end deftypefun
+
+@deftypefun int u8_normcoll (const uint8_t *@var{s1}, size_t @var{n1}, const uint8_t *@var{s2}, size_t @var{n2}, uninorm_t @var{nf}, int *@var{resultp})
+@deftypefunx int u16_normcoll (const uint16_t *@var{s1}, size_t @var{n1}, const uint16_t *@var{s2}, size_t @var{n2}, uninorm_t @var{nf}, int *@var{resultp})
+@deftypefunx int u32_normcoll (const uint32_t *@var{s1}, size_t @var{n1}, const uint32_t *@var{s2}, size_t @var{n2}, uninorm_t @var{nf}, int *@var{resultp})
+Compares @var{s1} and @var{s2}, ignoring differences in normalization, using
+the collation rules of the current locale.
+
+@var{nf} must be either @code{UNINORM_NFC} or @code{UNINORM_NFKC}.
+
+If successful, sets @code{*@var{resultp}} to -1 if @var{s1} < @var{s2},
+0 if @var{s1} = @var{s2}, 1 if @var{s1} > @var{s2}, and returns 0.
+Upon failure, returns -1 with @code{errno} set.
+@end deftypefun
+
+@node Normalization of streams
+@section Normalization of streams of Unicode characters
+
+@cindex stream, normalizing a
+A ``stream of Unicode characters'' is essentially a function that accepts an
+@code{ucs4_t} argument repeatedly, optionally combined with a function that
+``flushes'' the stream.
+
+@deftp Type {struct uninorm_filter}
+This is the data type of a stream of Unicode characters that normalizes its
+input according to a given normalization form and passes the normalized
+character sequence to the encapsulated stream of Unicode characters.
+@end deftp
+
+@deftypefun {struct uninorm_filter *} uninorm_filter_create (uninorm_t @var{nf}, int (*@var{stream_func}) (void *@var{stream_data}, ucs4_t @var{uc}), void *@var{stream_data})
+Creates and returns a normalization filter for Unicode characters.
+
+The pair (@var{stream_func}, @var{stream_data}) is the encapsulated stream.
+@code{@var{stream_func} (@var{stream_data}, @var{uc})} receives the Unicode
+character @var{uc} and returns 0 if successful, or -1 with @code{errno} set
+upon failure.
+
+Returns the new filter, or NULL with @code{errno} set upon failure.
+@end deftypefun
+
+@deftypefun int uninorm_filter_write (struct uninorm_filter *@var{filter}, ucs4_t @var{uc})
+Stuffs a Unicode character into a normalizing filter.
+Returns 0 if successful, or -1 with @code{errno} set upon failure.
+@end deftypefun
+
+@deftypefun int uninorm_filter_flush (struct uninorm_filter *@var{filter})
+Brings data buffered in the filter to its destination, the encapsulated stream.
+
+Returns 0 if successful, or -1 with @code{errno} set upon failure.
+
+Note! If after calling this function, additional characters are written
+into the filter, the resulting character sequence in the encapsulated stream
+will not necessarily be normalized.
+@end deftypefun
+
+@deftypefun int uninorm_filter_free (struct uninorm_filter *@var{filter})
+Brings data buffered in the filter to its destination, the encapsulated stream,
+then closes and frees the filter.
+
+Returns 0 if successful, or -1 with @code{errno} set upon failure.
+@end deftypefun
diff --git a/doc/uniregex.texi b/doc/uniregex.texi
new file mode 100644
index 00000000..ae290ffa
--- /dev/null
+++ b/doc/uniregex.texi
@@ -0,0 +1,5 @@
+@node uniregex.h
+@chapter Regular expressions @code{<uniregex.h>}
+
+@cindex regular expression
+This include file is not yet implemented.
diff --git a/doc/unistdio.texi b/doc/unistdio.texi
new file mode 100644
index 00000000..e1fb9cfa
--- /dev/null
+++ b/doc/unistdio.texi
@@ -0,0 +1,197 @@
+@node unistdio.h
+@chapter Output with Unicode strings @code{<unistdio.h>}
+
+@cindex formatted output
+@cindex output, formatted
+This include file declares functions for doing formatted output with Unicode
+strings. It defines a set of functions similar to @code{fprintf} and
+@code{sprintf}, which are declared in @code{<stdio.h>}.
+
+These functions work like the @code{printf} function family.
+In the format string:
+@itemize
+@item
+The format directive @samp{U} takes an UTF-8 string (@code{const uint8_t *}).
+@item
+The format directive @samp{lU} takes an UTF-16 string
+(@code{const uint16_t *}).
+@item
+The format directive @samp{llU} takes an UTF-32 string
+(@code{const uint32_t *}).
+@end itemize
+
+A function name with an infix @samp{v} indicates that a @code{va_list} is
+passed instead of multiple arguments.
+
+The functions @code{*sprintf} have a @var{buf} argument that is assumed to be
+large enough.
+(@emph{DANGEROUS! Overflowing the buffer will crash the program.})
+
+The functions @code{*snprintf} have a @var{buf} argument that is assumed to be
+@var{size} units large. (@emph{DANGEROUS! The resulting string might be
+truncated in the middle of a multibyte character.})
+
+The functions @code{*asprintf} have a @var{resultp} argument. The result will
+be freshly allocated and stored in @code{*resultp}.
+
+The functions @code{*asnprintf} have a (@var{resultbuf}, @var{lengthp})
+argument pair. If @var{resultbuf} is not NULL and the result fits into
+@code{*@var{lengthp}} units, it is put in @var{resultbuf}, and @var{resultbuf}
+is returned. Otherwise, a freshly allocated string is returned. In both
+cases, @code{*@var{lengthp}} is set to the length (number of units) of the
+returned string. In case of error, NULL is returned and @code{errno} is set.
+
+The following functions take an ASCII format string and return a result that
+is a @code{char *} string in locale encoding.
+
+@deftypefun int ulc_sprintf (char *@var{buf}, const char *@var{format}, ...)
+@end deftypefun
+
+@deftypefun int ulc_snprintf (char *@var{buf}, size_t size, const char *@var{format}, ...)
+@end deftypefun
+
+@deftypefun int ulc_asprintf (char **@var{resultp}, const char *@var{format}, ...)
+@end deftypefun
+
+@deftypefun {char *} ulc_asnprintf (char *@var{resultbuf}, size_t *@var{lengthp}, const char *@var{format}, ...)
+@end deftypefun
+
+@deftypefun int ulc_vsprintf (char *@var{buf}, const char *@var{format}, va_list @var{ap})
+@end deftypefun
+
+@deftypefun int ulc_vsnprintf (char *@var{buf}, size_t size, const char *@var{format}, va_list @var{ap})
+@end deftypefun
+
+@deftypefun int ulc_vasprintf (char **@var{resultp}, const char *@var{format}, va_list @var{ap})
+@end deftypefun
+
+@deftypefun {char *} ulc_vasnprintf (char *@var{resultbuf}, size_t *@var{lengthp}, const char *@var{format}, va_list @var{ap})
+@end deftypefun
+
+The following functions take an ASCII format string and return a result in
+UTF-8 format.
+
+@deftypefun int u8_sprintf (uint8_t *@var{buf}, const char *@var{format}, ...)
+@end deftypefun
+@deftypefun int u8_snprintf (uint8_t *@var{buf}, size_t @var{size}, const char *@var{format}, ...)
+@end deftypefun
+@deftypefun int u8_asprintf (uint8_t **@var{resultp}, const char *@var{format}, ...)
+@end deftypefun
+@deftypefun {uint8_t *} u8_asnprintf (uint8_t *@var{resultbuf}, size_t *@var{lengthp}, const char *@var{format}, ...)
+@end deftypefun
+@deftypefun int u8_vsprintf (uint8_t *@var{buf}, const char *@var{format}, va_list ap)
+@end deftypefun
+@deftypefun int u8_vsnprintf (uint8_t *@var{buf}, size_t @var{size}, const char *@var{format}, va_list @var{ap})
+@end deftypefun
+@deftypefun int u8_vasprintf (uint8_t **@var{resultp}, const char *@var{format}, va_list @var{ap})
+@end deftypefun
+@deftypefun {uint8_t *} u8_vasnprintf (uint8_t *resultbuf, size_t *@var{lengthp}, const char *@var{format}, va_list @var{ap})
+@end deftypefun
+
+The following functions take an UTF-8 format string and return a result in
+UTF-8 format.
+
+@deftypefun int u8_u8_sprintf (uint8_t *@var{buf}, const uint8_t *@var{format}, ...)
+@end deftypefun
+@deftypefun int u8_u8_snprintf (uint8_t *@var{buf}, size_t @var{size}, const uint8_t *@var{format}, ...)
+@end deftypefun
+@deftypefun int u8_u8_asprintf (uint8_t **@var{resultp}, const uint8_t *@var{format}, ...)
+@end deftypefun
+@deftypefun {uint8_t *} u8_u8_asnprintf (uint8_t *resultbuf, size_t *@var{lengthp}, const uint8_t *@var{format}, ...)
+@end deftypefun
+@deftypefun int u8_u8_vsprintf (uint8_t *@var{buf}, const uint8_t *@var{format}, va_list @var{ap})
+@end deftypefun
+@deftypefun int u8_u8_vsnprintf (uint8_t *@var{buf}, size_t @var{size}, const uint8_t *@var{format}, va_list @var{ap})
+@end deftypefun
+@deftypefun int u8_u8_vasprintf (uint8_t **@var{resultp}, const uint8_t *@var{format}, va_list @var{ap})
+@end deftypefun
+@deftypefun {uint8_t *} u8_u8_vasnprintf (uint8_t *resultbuf, size_t *@var{lengthp}, const uint8_t *@var{format}, va_list @var{ap})
+@end deftypefun
+
+The following functions take an ASCII format string and return a result in
+UTF-16 format.
+
+@deftypefun int u16_sprintf (uint16_t *@var{buf}, const char *@var{format}, ...)
+@end deftypefun
+@deftypefun int u16_snprintf (uint16_t *@var{buf}, size_t @var{size}, const char *@var{format}, ...)
+@end deftypefun
+@deftypefun int u16_asprintf (uint16_t **@var{resultp}, const char *@var{format}, ...)
+@end deftypefun
+@deftypefun {uint16_t *} u16_asnprintf (uint16_t *@var{resultbuf}, size_t *@var{lengthp}, const char *@var{format}, ...)
+@end deftypefun
+@deftypefun int u16_vsprintf (uint16_t *@var{buf}, const char *@var{format}, va_list ap)
+@end deftypefun
+@deftypefun int u16_vsnprintf (uint16_t *@var{buf}, size_t @var{size}, const char *@var{format}, va_list @var{ap})
+@end deftypefun
+@deftypefun int u16_vasprintf (uint16_t **@var{resultp}, const char *@var{format}, va_list @var{ap})
+@end deftypefun
+@deftypefun {uint16_t *} u16_vasnprintf (uint16_t *resultbuf, size_t *@var{lengthp}, const char *@var{format}, va_list @var{ap})
+@end deftypefun
+
+The following functions take an UTF-16 format string and return a result in
+UTF-16 format.
+
+@deftypefun int u16_u16_sprintf (uint16_t *@var{buf}, const uint16_t *@var{format}, ...)
+@end deftypefun
+@deftypefun int u16_u16_snprintf (uint16_t *@var{buf}, size_t @var{size}, const uint16_t *@var{format}, ...)
+@end deftypefun
+@deftypefun int u16_u16_asprintf (uint16_t **@var{resultp}, const uint16_t *@var{format}, ...)
+@end deftypefun
+@deftypefun {uint16_t *} u16_u16_asnprintf (uint16_t *resultbuf, size_t *@var{lengthp}, const uint16_t *@var{format}, ...)
+@end deftypefun
+@deftypefun int u16_u16_vsprintf (uint16_t *@var{buf}, const uint16_t *@var{format}, va_list @var{ap})
+@end deftypefun
+@deftypefun int u16_u16_vsnprintf (uint16_t *@var{buf}, size_t @var{size}, const uint16_t *@var{format}, va_list @var{ap})
+@end deftypefun
+@deftypefun int u16_u16_vasprintf (uint16_t **@var{resultp}, const uint16_t *@var{format}, va_list @var{ap})
+@end deftypefun
+@deftypefun {uint16_t *} u16_u16_vasnprintf (uint16_t *resultbuf, size_t *@var{lengthp}, const uint16_t *@var{format}, va_list @var{ap})
+@end deftypefun
+
+The following functions take an ASCII format string and return a result in
+UTF-32 format.
+
+@deftypefun int u32_sprintf (uint32_t *@var{buf}, const char *@var{format}, ...)
+@end deftypefun
+@deftypefun int u32_snprintf (uint32_t *@var{buf}, size_t @var{size}, const char *@var{format}, ...)
+@end deftypefun
+@deftypefun int u32_asprintf (uint32_t **@var{resultp}, const char *@var{format}, ...)
+@end deftypefun
+@deftypefun {uint32_t *} u32_asnprintf (uint32_t *@var{resultbuf}, size_t *@var{lengthp}, const char *@var{format}, ...)
+@end deftypefun
+@deftypefun int u32_vsprintf (uint32_t *@var{buf}, const char *@var{format}, va_list ap)
+@end deftypefun
+@deftypefun int u32_vsnprintf (uint32_t *@var{buf}, size_t @var{size}, const char *@var{format}, va_list @var{ap})
+@end deftypefun
+@deftypefun int u32_vasprintf (uint32_t **@var{resultp}, const char *@var{format}, va_list @var{ap})
+@end deftypefun
+@deftypefun {uint32_t *} u32_vasnprintf (uint32_t *resultbuf, size_t *@var{lengthp}, const char *@var{format}, va_list @var{ap})
+@end deftypefun
+
+The following functions take an UTF-32 format string and return a result in
+UTF-32 format.
+
+@deftypefun int u32_u32_sprintf (uint32_t *@var{buf}, const uint32_t *@var{format}, ...)
+@end deftypefun
+@deftypefun int u32_u32_snprintf (uint32_t *@var{buf}, size_t @var{size}, const uint32_t *@var{format}, ...)
+@end deftypefun
+@deftypefun int u32_u32_asprintf (uint32_t **@var{resultp}, const uint32_t *@var{format}, ...)
+@end deftypefun
+@deftypefun {uint32_t *} u32_u32_asnprintf (uint32_t *resultbuf, size_t *@var{lengthp}, const uint32_t *@var{format}, ...)
+@end deftypefun
+@deftypefun int u32_u32_vsprintf (uint32_t *@var{buf}, const uint32_t *@var{format}, va_list @var{ap})
+@end deftypefun
+@deftypefun int u32_u32_vsnprintf (uint32_t *@var{buf}, size_t @var{size}, const uint32_t *@var{format}, va_list @var{ap})
+@end deftypefun
+@deftypefun int u32_u32_vasprintf (uint32_t **@var{resultp}, const uint32_t *@var{format}, va_list @var{ap})
+@end deftypefun
+@deftypefun {uint32_t *} u32_u32_vasnprintf (uint32_t *resultbuf, size_t *@var{lengthp}, const uint32_t *@var{format}, va_list @var{ap})
+@end deftypefun
+
+The following functions take an ASCII format string and produce output in
+locale encoding to a @code{FILE} stream.
+
+@deftypefun int ulc_fprintf (FILE *@var{stream}, const char *@var{format}, ...)
+@end deftypefun
+@deftypefun int ulc_vfprintf (FILE *@var{stream}, const char *@var{format}, va_list @var{ap})
+@end deftypefun
diff --git a/doc/unistr.texi b/doc/unistr.texi
new file mode 100644
index 00000000..9c6261b2
--- /dev/null
+++ b/doc/unistr.texi
@@ -0,0 +1,493 @@
+@node unistr.h
+@chapter Elementary Unicode string functions @code{<unistr.h>}
+
+This include file declares elementary functions for Unicode strings. It is
+essentially the equivalent of what @code{<string.h>} is for C strings.
+
+@menu
+* Elementary string checks::
+* Elementary string conversions::
+* Elementary string functions::
+* Elementary string functions with memory allocation::
+* Elementary string functions on NUL terminated strings::
+@end menu
+
+@node Elementary string checks
+@section Elementary string checks
+
+@cindex validity
+@cindex verification
+The following function is available to verify the integrity of a Unicode string.
+
+@deftypefun {const uint8_t *} u8_check (const uint8_t *@var{s}, size_t @var{n})
+@deftypefunx {const uint16_t *} u16_check (const uint16_t *@var{s}, size_t @var{n})
+@deftypefunx {const uint32_t *} u32_check (const uint32_t *@var{s}, size_t @var{n})
+This function checks whether a Unicode string is well-formed.
+It returns NULL if valid, or a pointer to the first invalid unit otherwise.
+@end deftypefun
+
+@node Elementary string conversions
+@section Elementary string conversions
+
+@cindex converting
+The following functions perform conversions between the different forms of Unicode strings.
+
+@deftypefun {uint16_t *} u8_to_u16 (const uint8_t *@var{s}, size_t @var{n}, uint16_t *@var{resultbuf}, size_t *@var{lengthp})
+Converts an UTF-8 string to an UTF-16 string.
+@end deftypefun
+
+@deftypefun {uint32_t *} u8_to_u32 (const uint8_t *@var{s}, size_t @var{n}, uint32_t *@var{resultbuf}, size_t *@var{lengthp})
+Converts an UTF-8 string to an UTF-32 string.
+@end deftypefun
+
+@deftypefun {uint8_t *} u16_to_u8 (const uint16_t *@var{s}, size_t @var{n}, uint8_t *@var{resultbuf}, size_t *@var{lengthp})
+Converts an UTF-16 string to an UTF-8 string.
+@end deftypefun
+
+@deftypefun {uint32_t *} u16_to_u32 (const uint16_t *@var{s}, size_t @var{n}, uint32_t *@var{resultbuf}, size_t *@var{lengthp})
+Converts an UTF-16 string to an UTF-32 string.
+@end deftypefun
+
+@deftypefun {uint8_t *} u32_to_u8 (const uint32_t *@var{s}, size_t @var{n}, uint8_t *@var{resultbuf}, size_t *@var{lengthp})
+Converts an UTF-32 string to an UTF-8 string.
+@end deftypefun
+
+@deftypefun {uint16_t *} u32_to_u16 (const uint32_t *@var{s}, size_t @var{n}, uint16_t *@var{resultbuf}, size_t *@var{lengthp})
+Converts an UTF-32 string to an UTF-16 string.
+@end deftypefun
+
+@node Elementary string functions
+@section Elementary string functions
+
+@cindex iterating
+The following functions inspect and return details about the first character
+in a Unicode string.
+
+@deftypefun int u8_mblen (const uint8_t *@var{s}, size_t @var{n})
+@deftypefunx int u16_mblen (const uint16_t *@var{s}, size_t @var{n})
+@deftypefunx int u32_mblen (const uint32_t *@var{s}, size_t @var{n})
+Returns the length (number of units) of the first character in @var{s}, which
+is no longer than @var{n}. Returns 0 if it is the NUL character. Returns -1
+upon failure.
+
+This function is similar to @posixfunc{mblen}, except that it operates on a
+Unicode string and that @var{s} must not be NULL.
+@end deftypefun
+
+@deftypefun int u8_mbtouc_unsafe (ucs4_t *@var{puc}, const uint8_t *@var{s}, size_t @var{n})
+@deftypefunx int u16_mbtouc_unsafe (ucs4_t *@var{puc}, const uint16_t *@var{s}, size_t @var{n})
+@deftypefunx int u32_mbtouc_unsafe (ucs4_t *@var{puc}, const uint32_t *@var{s}, size_t @var{n})
+Returns the length (number of units) of the first character in @var{s},
+putting its @code{ucs4_t} representation in @code{*@var{puc}}. Upon failure,
+@code{*@var{puc}} is set to @code{0xfffd}, and an appropriate number of units
+is returned.
+
+The number of available units, @var{n}, must be > 0.
+
+This function is similar to @posixfunc{mbtowc}, except that it operates on a
+Unicode string, @var{puc} and @var{s} must not be NULL, @var{n} must be > 0,
+and the NUL character is not treated specially.
+@end deftypefun
+
+@deftypefun int u8_mbtouc (ucs4_t *@var{puc}, const uint8_t *@var{s}, size_t @var{n})
+@deftypefunx int u16_mbtouc (ucs4_t *@var{puc}, const uint16_t *@var{s}, size_t @var{n})
+@deftypefunx int u32_mbtouc (ucs4_t *@var{puc}, const uint32_t *@var{s}, size_t @var{n})
+This function is like @code{u8_mbtouc_unsafe}, except that it will detect an
+invalid UTF-8 character, even if the library is compiled without
+@option{--enable-safety}.
+@end deftypefun
+
+@deftypefun int u8_mbtoucr (ucs4_t *@var{puc}, const uint8_t *@var{s}, size_t @var{n})
+@deftypefunx int u16_mbtoucr (ucs4_t *@var{puc}, const uint16_t *@var{s}, size_t @var{n})
+@deftypefunx int u32_mbtoucr (ucs4_t *@var{puc}, const uint32_t *@var{s}, size_t @var{n})
+Returns the length (number of units) of the first character in @var{s},
+putting its @code{ucs4_t} representation in @code{*@var{puc}}. Upon failure,
+@code{*@var{puc}} is set to @code{0xfffd}, and -1 is returned for an invalid
+sequence of units, -2 is returned for an incomplete sequence of units.
+
+The number of available units, @var{n}, must be > 0.
+
+This function is similar to @code{u8_mbtouc}, except that the return value
+gives more details about the failure, similar to @posixfunc{mbrtowc}.
+@end deftypefun
+
+The following function stores a Unicode character as a Unicode string in
+memory.
+
+@deftypefun int u8_uctomb (uint8_t *@var{s}, ucs4_t @var{uc}, int @var{n})
+@deftypefunx int u16_uctomb (uint16_t *@var{s}, ucs4_t @var{uc}, int @var{n})
+@deftypefunx int u32_uctomb (uint32_t *@var{s}, ucs4_t @var{uc}, int @var{n})
+Puts the multibyte character represented by @var{uc} in @var{s}, returning its
+length. Returns -1 upon failure, -2 if the number of available units, @var{n},
+is too small. The latter case cannot occur if @var{n} >= 6/2/1, respectively.
+
+This function is similar to @posixfunc{wctomb}, except that it operates on a
+Unicode strings, @var{s} must not be NULL, and the argument @var{n} must be
+specified.
+@end deftypefun
+
+@cindex copying
+The following functions copy Unicode strings in memory.
+
+@deftypefun {uint8_t *} u8_cpy (uint8_t *@var{dest}, const uint8_t *@var{src}, size_t @var{n})
+@deftypefunx {uint16_t *} u16_cpy (uint16_t *@var{dest}, const uint16_t *@var{src}, size_t @var{n})
+@deftypefunx {uint32_t *} u32_cpy (uint32_t *@var{dest}, const uint32_t *@var{src}, size_t @var{n})
+Copies @var{n} units from @var{src} to @var{dest}.
+
+This function is similar to @posixfunc{memcpy}, except that it operates on
+Unicode strings.
+@end deftypefun
+
+@deftypefun {uint8_t *} u8_move (uint8_t *@var{dest}, const uint8_t *@var{src}, size_t @var{n})
+@deftypefunx {uint16_t *} u16_move (uint16_t *@var{dest}, const uint16_t *@var{src}, size_t @var{n})
+@deftypefunx {uint32_t *} u32_move (uint32_t *@var{dest}, const uint32_t *@var{src}, size_t @var{n})
+Copies @var{n} units from @var{src} to @var{dest}, guaranteeing correct
+behavior for overlapping memory areas.
+
+This function is similar to @posixfunc{memmove}, except that it operates on
+Unicode strings.
+@end deftypefun
+
+The following function fills a Unicode string.
+
+@deftypefun {uint8_t *} u8_set (uint8_t *@var{s}, ucs4_t @var{uc}, size_t @var{n})
+@deftypefunx {uint16_t *} u16_set (uint16_t *@var{s}, ucs4_t @var{uc}, size_t @var{n})
+@deftypefunx {uint32_t *} u32_set (uint32_t *@var{s}, ucs4_t @var{uc}, size_t @var{n})
+Sets the first @var{n} characters of @var{s} to @var{uc}. @var{uc} should be
+a character that occupies only 1 unit.
+
+This function is similar to @posixfunc{memset}, except that it operates on
+Unicode strings.
+@end deftypefun
+
+@cindex comparing
+The following function compares two Unicode strings of the same length.
+
+@deftypefun int u8_cmp (const uint8_t *@var{s1}, const uint8_t *@var{s2}, size_t @var{n})
+@deftypefunx int u16_cmp (const uint16_t *@var{s1}, const uint16_t *@var{s2}, size_t @var{n})
+@deftypefunx int u32_cmp (const uint32_t *@var{s1}, const uint32_t *@var{s2}, size_t @var{n})
+Compares @var{s1} and @var{s2}, each of length @var{n}, lexicographically.
+Returns a negative value if @var{s1} compares smaller than @var{s2},
+a positive value if @var{s1} compares larger than @var{s2}, or 0 if
+they compare equal.
+
+This function is similar to @posixfunc{memcmp}, except that it operates on
+Unicode strings.
+@end deftypefun
+
+The following function compares two Unicode strings of possibly different
+lengths.
+
+@deftypefun int u8_cmp2 (const uint8_t *@var{s1}, size_t @var{n1}, const uint8_t *@var{s2}, size_t @var{n2})
+@deftypefunx int u16_cmp2 (const uint16_t *@var{s1}, size_t @var{n1}, const uint16_t *@var{s2}, size_t @var{n2})
+@deftypefunx int u32_cmp2 (const uint32_t *@var{s1}, size_t @var{n1}, const uint32_t *@var{s2}, size_t @var{n2})
+Compares @var{s1} and @var{s2}, lexicographically.
+Returns a negative value if @var{s1} compares smaller than @var{s2},
+a positive value if @var{s1} compares larger than @var{s2}, or 0 if
+they compare equal.
+
+This function is similar to the gnulib function @func{memcmp2}, except that it
+operates on Unicode strings.
+@end deftypefun
+
+@cindex searching, for a character
+The following function searches for a given Unicode character.
+
+@deftypefun {uint8_t *} u8_chr (const uint8_t *@var{s}, size_t @var{n}, ucs4_t @var{uc})
+@deftypefunx {uint16_t *} u16_chr (const uint16_t *@var{s}, size_t @var{n}, ucs4_t @var{uc})
+@deftypefunx {uint32_t *} u32_chr (const uint32_t *@var{s}, size_t @var{n}, ucs4_t @var{uc})
+Searches the string at @var{s} for @var{uc}. Returns a pointer to the first
+occurrence of @var{uc} in @var{s}, or NULL if @var{uc} does not occur in
+@var{s}.
+
+This function is similar to @posixfunc{memchr}, except that it operates on
+Unicode strings.
+@end deftypefun
+
+@cindex counting
+The following function counts the number of Unicode characters.
+
+@deftypefun size_t u8_mbsnlen (const uint8_t *@var{s}, size_t @var{n})
+@deftypefunx size_t u16_mbsnlen (const uint16_t *@var{s}, size_t @var{n})
+@deftypefunx size_t u32_mbsnlen (const uint32_t *@var{s}, size_t @var{n})
+Counts and returns the number of Unicode characters in the @var{n} units
+from @var{s}.
+
+This function is similar to the gnulib function @func{mbsnlen}, except that
+it operates on Unicode strings.
+@end deftypefun
+
+@node Elementary string functions with memory allocation
+@section Elementary string functions with memory allocation
+
+@cindex duplicating
+The following function copies a Unicode string.
+
+@deftypefun {uint8_t *} u8_cpy_alloc (const uint8_t *@var{s}, size_t @var{n})
+@deftypefunx {uint16_t *} u16_cpy_alloc (const uint16_t *@var{s}, size_t @var{n})
+@deftypefunx {uint32_t *} u32_cpy_alloc (const uint32_t *@var{s}, size_t @var{n})
+Makes a freshly allocated copy of @var{s}, of length @var{n}.
+@end deftypefun
+
+@node Elementary string functions on NUL terminated strings
+@section Elementary string functions on NUL terminated strings
+
+The following functions inspect and return details about the first character
+in a Unicode string.
+
+@deftypefun int u8_strmblen (const uint8_t *@var{s})
+@deftypefunx int u16_strmblen (const uint16_t *@var{s})
+@deftypefunx int u32_strmblen (const uint32_t *@var{s})
+Returns the length (number of units) of the first character in @var{s}.
+Returns 0 if it is the NUL character. Returns -1 upon failure.
+@end deftypefun
+
+@cindex iterating
+@deftypefun int u8_strmbtouc (ucs4_t *@var{puc}, const uint8_t *@var{s})
+@deftypefunx int u16_strmbtouc (ucs4_t *@var{puc}, const uint16_t *@var{s})
+@deftypefunx int u32_strmbtouc (ucs4_t *@var{puc}, const uint32_t *@var{s})
+Returns the length (number of units) of the first character in @var{s},
+putting its @code{ucs4_t} representation in @code{*@var{puc}}. Returns 0
+if it is the NUL character. Returns -1 upon failure.
+@end deftypefun
+
+@deftypefun {const uint8_t *} u8_next (ucs4_t *@var{puc}, const uint8_t *@var{s})
+@deftypefunx {const uint16_t *} u16_next (ucs4_t *@var{puc}, const uint16_t *@var{s})
+@deftypefunx {const uint32_t *} u32_next (ucs4_t *@var{puc}, const uint32_t *@var{s})
+Forward iteration step. Advances the pointer past the next character,
+or returns NULL if the end of the string has been reached. Puts the
+character's @code{ucs4_t} representation in @code{*@var{puc}}.
+@end deftypefun
+
+The following function inspects and returns details about the previous
+character in a Unicode string.
+
+@deftypefun {const uint8_t *} u8_prev (ucs4_t *@var{puc}, const uint8_t *@var{s}, const uint8_t *@var{start})
+@deftypefunx {const uint16_t *} u16_prev (ucs4_t *@var{puc}, const uint16_t *@var{s}, const uint16_t *@var{start})
+@deftypefunx {const uint32_t *} u32_prev (ucs4_t *@var{puc}, const uint32_t *@var{s}, const uint32_t *@var{start})
+Backward iteration step. Advances the pointer to point to the previous
+character, or returns NULL if the beginning of the string had been reached.
+Puts the character's @code{ucs4_t} representation in @code{*@var{puc}}.
+@end deftypefun
+
+The following functions determine the length of a Unicode string.
+
+@deftypefun size_t u8_strlen (const uint8_t *@var{s})
+@deftypefunx size_t u16_strlen (const uint16_t *@var{s})
+@deftypefunx size_t u32_strlen (const uint32_t *@var{s})
+Returns the number of units in @var{s}.
+
+This function is similar to @posixfunc{strlen} and @posixfunc{wcslen}, except
+that it operates on Unicode strings.
+@end deftypefun
+
+@deftypefun size_t u8_strnlen (const uint8_t *@var{s}, size_t @var{maxlen})
+@deftypefunx size_t u16_strnlen (const uint16_t *@var{s}, size_t @var{maxlen})
+@deftypefunx size_t u32_strnlen (const uint32_t *@var{s}, size_t @var{maxlen})
+Returns the number of units in @var{s}, but at most @var{maxlen}.
+
+This function is similar to @posixfunc{strnlen} and @posixfunc{wcsnlen}, except
+that it operates on Unicode strings.
+@end deftypefun
+
+@cindex copying
+The following functions copy portions of Unicode strings in memory.
+
+@deftypefun {uint8_t *} u8_strcpy (uint8_t *@var{dest}, const uint8_t *@var{src})
+@deftypefunx {uint16_t *} u16_strcpy (uint16_t *@var{dest}, const uint16_t *@var{src})
+@deftypefunx {uint32_t *} u32_strcpy (uint32_t *@var{dest}, const uint32_t *@var{src})
+Copies @var{src} to @var{dest}.
+
+This function is similar to @posixfunc{strcpy} and @posixfunc{wcscpy}, except
+that it operates on Unicode strings.
+@end deftypefun
+
+@deftypefun {uint8_t *} u8_stpcpy (uint8_t *@var{dest}, const uint8_t *@var{src})
+@deftypefunx {uint16_t *} u16_stpcpy (uint16_t *@var{dest}, const uint16_t *@var{src})
+@deftypefunx {uint32_t *} u32_stpcpy (uint32_t *@var{dest}, const uint32_t *@var{src})
+Copies @var{src} to @var{dest}, returning the address of the terminating NUL
+in @var{dest}.
+
+This function is similar to @posixfunc{stpcpy}, except that it operates on
+Unicode strings.
+@end deftypefun
+
+@deftypefun {uint8_t *} u8_strncpy (uint8_t *@var{dest}, const uint8_t *@var{src}, size_t @var{n})
+@deftypefunx {uint16_t *} u16_strncpy (uint16_t *@var{dest}, const uint16_t *@var{src}, size_t @var{n})
+@deftypefunx {uint32_t *} u32_strncpy (uint32_t *@var{dest}, const uint32_t *@var{src}, size_t @var{n})
+Copies no more than @var{n} units of @var{src} to @var{dest}.
+
+This function is similar to @posixfunc{strncpy} and @posixfunc{wcsncpy}, except
+that it operates on Unicode strings.
+@end deftypefun
+
+@deftypefun {uint8_t *} u8_stpncpy (uint8_t *@var{dest}, const uint8_t *@var{src}, size_t @var{n})
+@deftypefunx {uint16_t *} u16_stpncpy (uint16_t *@var{dest}, const uint16_t *@var{src}, size_t @var{n})
+@deftypefunx {uint32_t *} u32_stpncpy (uint32_t *@var{dest}, const uint32_t *@var{src}, size_t @var{n})
+Copies no more than @var{n} units of @var{src} to @var{dest}, returning the
+address of the last unit written into @var{dest}.
+
+This function is similar to @posixfunc{stpncpy}, except that it operates on
+Unicode strings.
+@end deftypefun
+
+@deftypefun {uint8_t *} u8_strcat (uint8_t *@var{dest}, const uint8_t *@var{src})
+@deftypefunx {uint16_t *} u16_strcat (uint16_t *@var{dest}, const uint16_t *@var{src})
+@deftypefunx {uint32_t *} u32_strcat (uint32_t *@var{dest}, const uint32_t *@var{src})
+Appends @var{src} onto @var{dest}.
+
+This function is similar to @posixfunc{strcat} and @posixfunc{wcscat}, except
+that it operates on Unicode strings.
+@end deftypefun
+
+@deftypefun {uint8_t *} u8_strncat (uint8_t *@var{dest}, const uint8_t *@var{src}, size_t @var{n})
+@deftypefunx {uint16_t *} u16_strncat (uint16_t *@var{dest}, const uint16_t *@var{src}, size_t @var{n})
+@deftypefunx {uint32_t *} u32_strncat (uint32_t *@var{dest}, const uint32_t *@var{src}, size_t @var{n})
+Appends no more than @var{n} units of @var{src} onto @var{dest}.
+
+This function is similar to @posixfunc{strncat} and @posixfunc{wcsncat}, except
+that it operates on Unicode strings.
+@end deftypefun
+
+@cindex comparing
+The following functions compare two Unicode strings.
+
+@deftypefun int u8_strcmp (const uint8_t *@var{s1}, const uint8_t *@var{s2})
+@deftypefunx int u16_strcmp (const uint16_t *@var{s1}, const uint16_t *@var{s2})
+@deftypefunx int u32_strcmp (const uint32_t *@var{s1}, const uint32_t *@var{s2})
+Compares @var{s1} and @var{s2}, lexicographically.
+Returns a negative value if @var{s1} compares smaller than @var{s2},
+a positive value if @var{s1} compares larger than @var{s2}, or 0 if
+they compare equal.
+
+This function is similar to @posixfunc{strcmp} and @posixfunc{wcscmp}, except
+that it operates on Unicode strings.
+@end deftypefun
+
+@cindex comparing, with collation rules
+@deftypefun int u8_strcoll (const uint8_t *@var{s1}, const uint8_t *@var{s2})
+@deftypefunx int u16_strcoll (const uint16_t *@var{s1}, const uint16_t *@var{s2})
+@deftypefunx int u32_strcoll (const uint32_t *@var{s1}, const uint32_t *@var{s2})
+Compares @var{s1} and @var{s2} using the collation rules of the current
+locale.
+Returns -1 if @var{s1} < @var{s2}, 0 if @var{s1} = @var{s2}, 1 if
+@var{s1} > @var{s2}. Upon failure, sets @code{errno} and returns any value.
+
+This function is similar to @posixfunc{strcoll} and @posixfunc{wcscoll}, except
+that it operates on Unicode strings.
+
+Note that this function may consider different canonical normalizations
+of the same string as having a large distance. It is therefore better to
+use the function @code{u8_normcoll} instead of this one; see @ref{uninorm.h}.
+@end deftypefun
+
+@deftypefun int u8_strncmp (const uint8_t *@var{s1}, const uint8_t *@var{s2}, size_t @var{n})
+@deftypefunx int u16_strncmp (const uint16_t *@var{s1}, const uint16_t *@var{s2}, size_t @var{n})
+@deftypefunx int u32_strncmp (const uint32_t *@var{s1}, const uint32_t *@var{s2}, size_t @var{n})
+Compares no more than @var{n} units of @var{s1} and @var{s2}.
+
+This function is similar to @posixfunc{strncmp} and @posixfunc{wcsncmp}, except
+that it operates on Unicode strings.
+@end deftypefun
+
+@cindex duplicating
+The following function allocates a duplicate of a Unicode string.
+
+@deftypefun {uint8_t *} u8_strdup (const uint8_t *@var{s})
+@deftypefunx {uint16_t *} u16_strdup (const uint16_t *@var{s})
+@deftypefunx {uint32_t *} u32_strdup (const uint32_t *@var{s})
+Duplicates @var{s}, returning an identical malloc'd string.
+
+This function is similar to @posixfunc{strdup} and @posixfunc{wcsdup}, except
+that it operates on Unicode strings.
+@end deftypefun
+
+@cindex searching, for a character
+The following functions search for a given Unicode character.
+
+@deftypefun {uint8_t *} u8_strchr (const uint8_t *@var{str}, ucs4_t @var{uc})
+@deftypefunx {uint16_t *} u16_strchr (const uint16_t *@var{str}, ucs4_t @var{uc})
+@deftypefunx {uint32_t *} u32_strchr (const uint32_t *@var{str}, ucs4_t @var{uc})
+Finds the first occurrence of @var{uc} in @var{str}.
+
+This function is similar to @posixfunc{strchr} and @posixfunc{wcschr}, except
+that it operates on Unicode strings.
+@end deftypefun
+
+@deftypefun {uint8_t *} u8_strrchr (const uint8_t *@var{str}, ucs4_t @var{uc})
+@deftypefunx {uint16_t *} u16_strrchr (const uint16_t *@var{str}, ucs4_t @var{uc})
+@deftypefunx {uint32_t *} u32_strrchr (const uint32_t *@var{str}, ucs4_t @var{uc})
+Finds the last occurrence of @var{uc} in @var{str}.
+
+This function is similar to @posixfunc{strrchr} and @posixfunc{wcsrchr}, except
+that it operates on Unicode strings.
+@end deftypefun
+
+The following functions search for the first occurrence of some Unicode
+character in or outside a given set of Unicode characters.
+
+@deftypefun size_t u8_strcspn (const uint8_t *@var{str}, const uint8_t *@var{reject})
+@deftypefunx size_t u16_strcspn (const uint16_t *@var{str}, const uint16_t *@var{reject})
+@deftypefunx size_t u32_strcspn (const uint32_t *@var{str}, const uint32_t *@var{reject})
+Returns the length of the initial segment of @var{str} which consists entirely
+of Unicode characters not in @var{reject}.
+
+This function is similar to @posixfunc{strcspn} and @posixfunc{wcscspn}, except
+that it operates on Unicode strings.
+@end deftypefun
+
+@deftypefun size_t u8_strspn (const uint8_t *@var{str}, const uint8_t *@var{accept})
+@deftypefunx size_t u16_strspn (const uint16_t *@var{str}, const uint16_t *@var{accept})
+@deftypefunx size_t u32_strspn (const uint32_t *@var{str}, const uint32_t *@var{accept})
+Returns the length of the initial segment of @var{str} which consists entirely
+of Unicode characters in @var{accept}.
+
+This function is similar to @posixfunc{strspn} and @posixfunc{wcsspn}, except
+that it operates on Unicode strings.
+@end deftypefun
+
+@deftypefun {uint8_t *} u8_strpbrk (const uint8_t *@var{str}, const uint8_t *@var{accept})
+@deftypefunx {uint16_t *} u16_strpbrk (const uint16_t *@var{str}, const uint16_t *@var{accept})
+@deftypefunx {uint32_t *} u32_strpbrk (const uint32_t *@var{str}, const uint32_t *@var{accept})
+Finds the first occurrence in @var{str} of any character in @var{accept}.
+
+This function is similar to @posixfunc{strpbrk} and @posixfunc{wcspbrk}, except
+that it operates on Unicode strings.
+@end deftypefun
+
+@cindex searching, for a substring
+The following functions search whether a given Unicode string is a substring
+of another Unicode string.
+
+@deftypefun {uint8_t *} u8_strstr (const uint8_t *@var{haystack}, const uint8_t *@var{needle})
+@deftypefunx {uint16_t *} u16_strstr (const uint16_t *@var{haystack}, const uint16_t *@var{needle})
+@deftypefunx {uint32_t *} u32_strstr (const uint32_t *@var{haystack}, const uint32_t *@var{needle})
+Finds the first occurrence of @var{needle} in @var{haystack}.
+
+This function is similar to @posixfunc{strstr} and @posixfunc{wcsstr}, except
+that it operates on Unicode strings.
+@end deftypefun
+
+@deftypefun bool u8_startswith (const uint8_t *@var{str}, const uint8_t *@var{prefix})
+@deftypefunx bool u16_startswith (const uint16_t *@var{str}, const uint16_t *@var{prefix})
+@deftypefunx bool u32_startswith (const uint32_t *@var{str}, const uint32_t *@var{prefix})
+Tests whether @var{str} starts with @var{prefix}.
+@end deftypefun
+
+@deftypefun bool u8_endswith (const uint8_t *@var{str}, const uint8_t *@var{suffix})
+@deftypefunx bool u16_endswith (const uint16_t *@var{str}, const uint16_t *@var{suffix})
+@deftypefunx bool u32_endswith (const uint32_t *@var{str}, const uint32_t *@var{suffix})
+Tests whether @var{str} ends with @var{suffix}.
+@end deftypefun
+
+The following function does one step in tokenizing a Unicode string.
+
+@deftypefun {uint8_t *} u8_strtok (uint8_t *@var{str}, const uint8_t *@var{delim}, uint8_t **@var{ptr})
+@deftypefunx {uint16_t *} u16_strtok (uint16_t *@var{str}, const uint16_t *@var{delim}, uint16_t **@var{ptr})
+@deftypefunx {uint32_t *} u32_strtok (uint32_t *@var{str}, const uint32_t *@var{delim}, uint32_t **@var{ptr})
+Divides @var{str} into tokens separated by characters in @var{delim}.
+
+This function is similar to @posixfunc{strtok_r} and @posixfunc{wcstok}, except
+that it operates on Unicode strings. Its interface is actually more similar to
+@code{wcstok} than to @code{strtok}.
+@end deftypefun
diff --git a/doc/unitypes.texi b/doc/unitypes.texi
new file mode 100644
index 00000000..696ba881
--- /dev/null
+++ b/doc/unitypes.texi
@@ -0,0 +1,15 @@
+@node unitypes.h
+@chapter Elementary types @code{<unitypes.h>}
+
+The include file @code{<unitypes.h>} provides the following basic types.
+
+@deftp Type uint8_t
+@deftpx Type uint16_t
+@deftpx Type uint32_t
+These are the storage units of UTF-8/16/32 strings, respectively. The definitions are
+taken from @code{<stdint.h>}, on platforms where this include file is present.
+@end deftp
+
+@deftp Type ucs4_t
+This type represents a single Unicode character, outside of an UTF-32 string.
+@end deftp
diff --git a/doc/uniwbrk.texi b/doc/uniwbrk.texi
new file mode 100644
index 00000000..6f06b926
--- /dev/null
+++ b/doc/uniwbrk.texi
@@ -0,0 +1,71 @@
+@node uniwbrk.h
+@chapter Word breaks in strings @code{<uniwbrk.h>}
+
+@cindex word breaks
+@cindex breaks, word
+This include file declares functions for determining where in a string
+``words'' start and end. Here ``words'' are not necessarily the same as
+entities that can be looked up in dictionaries, but rather groups of
+consecutive characters that should not be split by text processing
+operations.
+
+@menu
+* Word breaks in a string::
+* Word break property::
+@end menu
+
+@node Word breaks in a string
+@section Word breaks in a string
+
+The following functions determine the word breaks in a string.
+
+@deftypefun void u8_wordbreaks (const uint8_t *@var{s}, size_t @var{n}, char *@var{p})
+@deftypefunx void u16_wordbreaks (const uint16_t *@var{s}, size_t @var{n}, char *@var{p})
+@deftypefunx void u32_wordbreaks (const uint32_t *@var{s}, size_t @var{n}, char *@var{p})
+@deftypefunx void ulc_wordbreaks (const char *@var{s}, size_t @var{n}, char *@var{p})
+Determines the word break points in @var{s}, an array of @var{n} units, and
+stores the result at @code{@var{p}[0..@var{n}-1]}.
+@table @asis
+@item @code{@var{p}[i] = 1}
+means that there is a word boundary between @code{@var{s}[i-1]} and
+@code{@var{s}[i]}.
+@item @code{@var{p}[i] = 0}
+means that @code{@var{s}[i-1]} and @code{@var{s}[i]} must not be separated.
+@end table
+@code{@var{p}[0]} is always set to 0. If an application wants to consider a
+word break to be present at the beginning of the string (before
+@code{@var{s}[0]}) or at the end of the string (after
+@code{@var{s}[0..@var{n}-1]}), it has to treat these cases explicitly.
+@end deftypefun
+
+@node Word break property
+@section Word break property
+
+This is a more low-level API. The word break property is a property defined
+in Unicode Standard Annex #29, section ``Word Boundaries'', see
+@url{http://www.unicode.org/reports/tr29/#Word_Boundaries}.@texnl{} It is
+used for determining the word breaks in a string.
+
+The following are the possible values of the word break property. More values
+may be added in the future.
+
+@deftypevr Constant int WBP_OTHER
+@deftypevrx Constant int WBP_CR
+@deftypevrx Constant int WBP_LF
+@deftypevrx Constant int WBP_NEWLINE
+@deftypevrx Constant int WBP_EXTEND
+@deftypevrx Constant int WBP_FORMAT
+@deftypevrx Constant int WBP_KATAKANA
+@deftypevrx Constant int WBP_ALETTER
+@deftypevrx Constant int WBP_MIDNUMLET
+@deftypevrx Constant int WBP_MIDLETTER
+@deftypevrx Constant int WBP_MIDNUM
+@deftypevrx Constant int WBP_NUMERIC
+@deftypevrx Constant int WBP_EXTENDNUMLET
+@end deftypevr
+
+The following function looks up the word break property of a character.
+
+@deftypefun int uc_wordbreak_property (ucs4_t @var{uc})
+Returns the Word_Break property of a Unicode character.
+@end deftypefun
diff --git a/doc/uniwidth.texi b/doc/uniwidth.texi
new file mode 100644
index 00000000..a05d101d
--- /dev/null
+++ b/doc/uniwidth.texi
@@ -0,0 +1,43 @@
+@node uniwidth.h
+@chapter Display width @code{<uniwidth.h>}
+
+@cindex width
+This include file declares functions that return the display width, measured
+in columns, of characters or strings, when output to a device that uses
+non-proportional fonts.
+
+@cindex ambiguous width
+Note that for some rarely used characters the actual fonts or terminal
+emulators can use a different width. There is no mechanism for communicating
+the display width of characters across a Unix pseudo-terminal (tty). Also,
+there are scripts with complex rendering, like the Indic scripts. For these
+scripts, there is no such concept as non-proportional fonts. Therefore
+the results of these functions usually work fine on most scripts and on
+most characters but can fail to represent the actual display width.
+
+These functions are locale dependent. The @var{encoding} argument identifies
+the encoding (e.g@. @code{"ISO-8859-2"} for Polish).
+
+@cindex Unicode character, width
+@cindex halfwidth
+@cindex fullwidth
+@deftypefun int uc_width (ucs4_t @var{uc}, const char *@var{encoding})
+Determines and returns the number of column positions required for @var{uc}.
+Returns -1 if @var{uc} is a control character that has an influence on the
+column position when output.
+@end deftypefun
+
+@deftypefun int u8_width (const uint8_t *@var{s}, size_t @var{n}, const char *@var{encoding})
+@deftypefunx int u16_width (const uint16_t *@var{s}, size_t @var{n}, const char *@var{encoding})
+@deftypefunx int u32_width (const uint32_t *@var{s}, size_t @var{n}, const char *@var{encoding})
+Determines and returns the number of column positions required for first
+@var{n} units (or fewer if @var{s} ends before this) in @var{s}. This
+function ignores control characters in the string.
+@end deftypefun
+
+@deftypefun int u8_strwidth (const uint8_t *@var{s}, const char *@var{encoding})
+@deftypefunx int u16_strwidth (const uint16_t *@var{s}, const char *@var{encoding})
+@deftypefunx int u32_strwidth (const uint32_t *@var{s}, const char *@var{encoding})
+Determines and returns the number of column positions required for @var{s}.
+This function ignores control characters in the string.
+@end deftypefun
diff --git a/doc/version.texi b/doc/version.texi
new file mode 100644
index 00000000..ee4ba906
--- /dev/null
+++ b/doc/version.texi
@@ -0,0 +1,4 @@
+@set UPDATED 29 June 2009
+@set UPDATED-MONTH June 2009
+@set EDITION 0.9.1
+@set VERSION 0.9.1
diff --git a/gnulib-local/Makefile.am b/gnulib-local/Makefile.am
new file mode 100644
index 00000000..c415913e
--- /dev/null
+++ b/gnulib-local/Makefile.am
@@ -0,0 +1,30 @@
+## Makefile for the gnulib-local directory of GNU libunistring
+## Copyright (C) 2006-2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+## Process this file with automake to produce Makefile.in.
+
+# Generate this list with
+# find . '(' -name Makefile.am ')' -prune -o -type f '!' '(' -name '*.orig' -or -name '*~' ')' -printf '%P\n' | sort | tr '\012' @ | sed 's/@$/%/;s/@/ \\@/g' | tr @% '\012\012'
+EXTRA_DIST = \
+lib/unicase.h.diff \
+lib/uniconv.h.diff \
+lib/unictype.h.diff \
+lib/unilbrk.h.diff \
+lib/uninorm.h.diff \
+lib/unistr.h.diff \
+lib/unitypes.h.diff \
+lib/uniwidth.h.diff \
+modules/unictype/category-none-tests.diff
diff --git a/gnulib-local/Makefile.in b/gnulib-local/Makefile.in
new file mode 100644
index 00000000..9c67bff5
--- /dev/null
+++ b/gnulib-local/Makefile.in
@@ -0,0 +1,783 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = gnulib-local
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
+ $(top_srcdir)/gnulib-m4/alloca.m4 \
+ $(top_srcdir)/gnulib-m4/codeset.m4 \
+ $(top_srcdir)/gnulib-m4/eealloc.m4 \
+ $(top_srcdir)/gnulib-m4/environ.m4 \
+ $(top_srcdir)/gnulib-m4/errno_h.m4 \
+ $(top_srcdir)/gnulib-m4/error.m4 \
+ $(top_srcdir)/gnulib-m4/exitfail.m4 \
+ $(top_srcdir)/gnulib-m4/exponentd.m4 \
+ $(top_srcdir)/gnulib-m4/exponentf.m4 \
+ $(top_srcdir)/gnulib-m4/exponentl.m4 \
+ $(top_srcdir)/gnulib-m4/extensions.m4 \
+ $(top_srcdir)/gnulib-m4/float_h.m4 \
+ $(top_srcdir)/gnulib-m4/fpieee.m4 \
+ $(top_srcdir)/gnulib-m4/frexp.m4 \
+ $(top_srcdir)/gnulib-m4/frexpl.m4 \
+ $(top_srcdir)/gnulib-m4/getpagesize.m4 \
+ $(top_srcdir)/gnulib-m4/glibc21.m4 \
+ $(top_srcdir)/gnulib-m4/gnulib-common.m4 \
+ $(top_srcdir)/gnulib-m4/gnulib-comp.m4 \
+ $(top_srcdir)/gnulib-m4/iconv.m4 \
+ $(top_srcdir)/gnulib-m4/iconv_h.m4 \
+ $(top_srcdir)/gnulib-m4/iconv_open.m4 \
+ $(top_srcdir)/gnulib-m4/include_next.m4 \
+ $(top_srcdir)/gnulib-m4/inline.m4 \
+ $(top_srcdir)/gnulib-m4/intlmacosx.m4 \
+ $(top_srcdir)/gnulib-m4/intmax_t.m4 \
+ $(top_srcdir)/gnulib-m4/inttypes_h.m4 \
+ $(top_srcdir)/gnulib-m4/isnand.m4 \
+ $(top_srcdir)/gnulib-m4/isnanf.m4 \
+ $(top_srcdir)/gnulib-m4/isnanl.m4 \
+ $(top_srcdir)/gnulib-m4/lcmessage.m4 \
+ $(top_srcdir)/gnulib-m4/ldexpl.m4 \
+ $(top_srcdir)/gnulib-m4/lib-ld.m4 \
+ $(top_srcdir)/gnulib-m4/lib-link.m4 \
+ $(top_srcdir)/gnulib-m4/lib-prefix.m4 \
+ $(top_srcdir)/gnulib-m4/localcharset.m4 \
+ $(top_srcdir)/gnulib-m4/locale-fr.m4 \
+ $(top_srcdir)/gnulib-m4/locale-ja.m4 \
+ $(top_srcdir)/gnulib-m4/locale-tr.m4 \
+ $(top_srcdir)/gnulib-m4/locale-zh.m4 \
+ $(top_srcdir)/gnulib-m4/locale_h.m4 \
+ $(top_srcdir)/gnulib-m4/localename.m4 \
+ $(top_srcdir)/gnulib-m4/longlong.m4 \
+ $(top_srcdir)/gnulib-m4/malloc.m4 \
+ $(top_srcdir)/gnulib-m4/malloca.m4 \
+ $(top_srcdir)/gnulib-m4/math_h.m4 \
+ $(top_srcdir)/gnulib-m4/mbchar.m4 \
+ $(top_srcdir)/gnulib-m4/mbiter.m4 \
+ $(top_srcdir)/gnulib-m4/mbrtowc.m4 \
+ $(top_srcdir)/gnulib-m4/mbsinit.m4 \
+ $(top_srcdir)/gnulib-m4/mbstate_t.m4 \
+ $(top_srcdir)/gnulib-m4/memchr.m4 \
+ $(top_srcdir)/gnulib-m4/minmax.m4 \
+ $(top_srcdir)/gnulib-m4/mmap-anon.m4 \
+ $(top_srcdir)/gnulib-m4/multiarch.m4 \
+ $(top_srcdir)/gnulib-m4/nocrash.m4 \
+ $(top_srcdir)/gnulib-m4/printf-frexp.m4 \
+ $(top_srcdir)/gnulib-m4/printf-frexpl.m4 \
+ $(top_srcdir)/gnulib-m4/printf.m4 \
+ $(top_srcdir)/gnulib-m4/relocatable-lib.m4 \
+ $(top_srcdir)/gnulib-m4/setenv.m4 \
+ $(top_srcdir)/gnulib-m4/signbit.m4 \
+ $(top_srcdir)/gnulib-m4/size_max.m4 \
+ $(top_srcdir)/gnulib-m4/stdbool.m4 \
+ $(top_srcdir)/gnulib-m4/stdint.m4 \
+ $(top_srcdir)/gnulib-m4/stdint_h.m4 \
+ $(top_srcdir)/gnulib-m4/stdlib_h.m4 \
+ $(top_srcdir)/gnulib-m4/strerror.m4 \
+ $(top_srcdir)/gnulib-m4/string_h.m4 \
+ $(top_srcdir)/gnulib-m4/unistd_h.m4 \
+ $(top_srcdir)/gnulib-m4/vasnprintf.m4 \
+ $(top_srcdir)/gnulib-m4/wchar.m4 \
+ $(top_srcdir)/gnulib-m4/wchar_t.m4 \
+ $(top_srcdir)/gnulib-m4/wctob.m4 \
+ $(top_srcdir)/gnulib-m4/wctype.m4 \
+ $(top_srcdir)/gnulib-m4/wcwidth.m4 \
+ $(top_srcdir)/gnulib-m4/wint_t.m4 \
+ $(top_srcdir)/gnulib-m4/xalloc.m4 \
+ $(top_srcdir)/gnulib-m4/xsize.m4 $(top_srcdir)/m4/exported.m4 \
+ $(top_srcdir)/m4/init-package-version.m4 \
+ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/woe32-dll.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VARIABLE = @DLL_VARIABLE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVIPS = @DVIPS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLOAT_H = @FLOAT_H@
+GLIBC21 = @GLIBC21@
+GLOBAL_SYMBOL_PIPE = @GLOBAL_SYMBOL_PIPE@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CEILF = @GNULIB_CEILF@
+GNULIB_CEILL = @GNULIB_CEILL@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FLOORF = @GNULIB_FLOORF@
+GNULIB_FLOORL = @GNULIB_FLOORL@
+GNULIB_FREXP = @GNULIB_FREXP@
+GNULIB_FREXPL = @GNULIB_FREXPL@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_ISFINITE = @GNULIB_ISFINITE@
+GNULIB_ISINF = @GNULIB_ISINF@
+GNULIB_ISNAN = @GNULIB_ISNAN@
+GNULIB_ISNAND = @GNULIB_ISNAND@
+GNULIB_ISNANF = @GNULIB_ISNANF@
+GNULIB_ISNANL = @GNULIB_ISNANL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LDEXPL = @GNULIB_LDEXPL@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MATHL = @GNULIB_MATHL@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_ROUND = @GNULIB_ROUND@
+GNULIB_ROUNDF = @GNULIB_ROUNDF@
+GNULIB_ROUNDL = @GNULIB_ROUNDL@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SIGNBIT = @GNULIB_SIGNBIT@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_TRUNC = @GNULIB_TRUNC@
+GNULIB_TRUNCF = @GNULIB_TRUNCF@
+GNULIB_TRUNCL = @GNULIB_TRUNCL@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
+HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@
+HAVE_DECL_ASINL = @HAVE_DECL_ASINL@
+HAVE_DECL_ATANL = @HAVE_DECL_ATANL@
+HAVE_DECL_COSL = @HAVE_DECL_COSL@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_EXPL = @HAVE_DECL_EXPL@
+HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@
+HAVE_DECL_LOGL = @HAVE_DECL_LOGL@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SINL = @HAVE_DECL_SINL@
+HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_TANL = @HAVE_DECL_TANL@
+HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@
+HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_GLOBAL_SYMBOL_PIPE = @HAVE_GLOBAL_SYMBOL_PIPE@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISNAND = @HAVE_ISNAND@
+HAVE_ISNANF = @HAVE_ISNANF@
+HAVE_ISNANL = @HAVE_ISNANL@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSETENV = @HAVE_UNSETENV@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HEXVERSION = @HEXVERSION@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_H = @LOCALE_H@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NAMESPACING = @NAMESPACING@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FLOAT_H = @NEXT_FLOAT_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_MATH_H = @NEXT_MATH_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+RC = @RC@
+RELOCATABLE = @RELOCATABLE@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CEILF = @REPLACE_CEILF@
+REPLACE_CEILL = @REPLACE_CEILL@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FLOORF = @REPLACE_FLOORF@
+REPLACE_FLOORL = @REPLACE_FLOORL@
+REPLACE_FREXP = @REPLACE_FREXP@
+REPLACE_FREXPL = @REPLACE_FREXPL@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_ISFINITE = @REPLACE_ISFINITE@
+REPLACE_ISINF = @REPLACE_ISINF@
+REPLACE_ISNAN = @REPLACE_ISNAN@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LDEXPL = @REPLACE_LDEXPL@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NAN = @REPLACE_NAN@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_ROUND = @REPLACE_ROUND@
+REPLACE_ROUNDF = @REPLACE_ROUNDF@
+REPLACE_ROUNDL = @REPLACE_ROUNDL@
+REPLACE_SIGNBIT = @REPLACE_SIGNBIT@
+REPLACE_SIGNBIT_USING_GCC = @REPLACE_SIGNBIT_USING_GCC@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_TRUNCL = @REPLACE_TRUNCL@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+TEXI2DVI = @TEXI2DVI@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+VERSION = @VERSION@
+VOID_UNSETENV = @VOID_UNSETENV@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# Generate this list with
+# find . '(' -name Makefile.am ')' -prune -o -type f '!' '(' -name '*.orig' -or -name '*~' ')' -printf '%P\n' | sort | tr '\012' @ | sed 's/@$/%/;s/@/ \\@/g' | tr @% '\012\012'
+EXTRA_DIST = \
+lib/unicase.h.diff \
+lib/uniconv.h.diff \
+lib/unictype.h.diff \
+lib/unilbrk.h.diff \
+lib/uninorm.h.diff \
+lib/unistr.h.diff \
+lib/unitypes.h.diff \
+lib/uniwidth.h.diff \
+modules/unictype/category-none-tests.diff
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gnulib-local/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu gnulib-local/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/gnulib-local/lib/unicase.h.diff b/gnulib-local/lib/unicase.h.diff
new file mode 100644
index 00000000..13817709
--- /dev/null
+++ b/gnulib-local/lib/unicase.h.diff
@@ -0,0 +1,19 @@
+*** unicase.h.orig 2009-04-05 19:30:26.000000000 +0200
+--- unicase.h 2009-04-10 16:21:23.000000000 +0200
+***************
+*** 20,26 ****
+ #include "unitypes.h"
+
+ /* Get bool. */
+! #include <stdbool.h>
+
+ /* Get size_t. */
+ #include <stddef.h>
+--- 20,26 ----
+ #include "unitypes.h"
+
+ /* Get bool. */
+! #include <unistring/stdbool.h>
+
+ /* Get size_t. */
+ #include <stddef.h>
diff --git a/gnulib-local/lib/uniconv.h.diff b/gnulib-local/lib/uniconv.h.diff
new file mode 100644
index 00000000..d6403230
--- /dev/null
+++ b/gnulib-local/lib/uniconv.h.diff
@@ -0,0 +1,28 @@
+*** uniconv.h.orig 2009-04-10 23:40:31.000000000 +0200
+--- uniconv.h 2009-04-10 23:41:19.000000000 +0200
+***************
+*** 23,35 ****
+ #include "unitypes.h"
+
+ /* Get enum iconv_ilseq_handler. */
+! #include "iconveh.h"
+!
+! /* Get uniconv_register_autodetect() declaration. */
+! #include "striconveha.h"
+
+ /* Get locale_charset() declaration. */
+! #include "localcharset.h"
+
+
+ #ifdef __cplusplus
+--- 23,32 ----
+ #include "unitypes.h"
+
+ /* Get enum iconv_ilseq_handler. */
+! #include <unistring/iconveh.h>
+
+ /* Get locale_charset() declaration. */
+! #include <unistring/localcharset.h>
+
+
+ #ifdef __cplusplus
diff --git a/gnulib-local/lib/unictype.h.diff b/gnulib-local/lib/unictype.h.diff
new file mode 100644
index 00000000..14347bc1
--- /dev/null
+++ b/gnulib-local/lib/unictype.h.diff
@@ -0,0 +1,24 @@
+*** unictype.h.orig 2009-04-05 12:15:57.000000000 +0200
+--- unictype.h 2009-04-12 04:31:36.000000000 +0200
+***************
+*** 19,26 ****
+
+ #include "unitypes.h"
+
+ /* Get bool. */
+! #include <stdbool.h>
+
+ /* Get size_t. */
+ #include <stddef.h>
+--- 19,29 ----
+
+ #include "unitypes.h"
+
++ /* Get LIBUNISTRING_DLL_VARIABLE. */
++ #include <unistring/woe32dll.h>
++
+ /* Get bool. */
+! #include <unistring/stdbool.h>
+
+ /* Get size_t. */
+ #include <stddef.h>
diff --git a/gnulib-local/lib/unilbrk.h.diff b/gnulib-local/lib/unilbrk.h.diff
new file mode 100644
index 00000000..a5b86c3d
--- /dev/null
+++ b/gnulib-local/lib/unilbrk.h.diff
@@ -0,0 +1,19 @@
+*** unilbrk.h.orig 2008-05-10 14:46:17.000000000 +0200
+--- unilbrk.h 2009-04-10 22:39:40.000000000 +0200
+***************
+*** 24,30 ****
+ #include "unitypes.h"
+
+ /* Get locale_charset() declaration. */
+! #include "localcharset.h"
+
+
+ #ifdef __cplusplus
+--- 24,30 ----
+ #include "unitypes.h"
+
+ /* Get locale_charset() declaration. */
+! #include <unistring/localcharset.h>
+
+
+ #ifdef __cplusplus
diff --git a/gnulib-local/lib/uninorm.h.diff b/gnulib-local/lib/uninorm.h.diff
new file mode 100644
index 00000000..89d89950
--- /dev/null
+++ b/gnulib-local/lib/uninorm.h.diff
@@ -0,0 +1,14 @@
+*** uninorm.h.orig 2009-04-05 12:38:24.000000000 +0200
+--- uninorm.h 2009-04-12 04:31:52.000000000 +0200
+***************
+*** 18,23 ****
+--- 18,26 ----
+ #ifndef _UNINORM_H
+ #define _UNINORM_H
+
++ /* Get LIBUNISTRING_DLL_VARIABLE. */
++ #include <unistring/woe32dll.h>
++
+ /* Get size_t. */
+ #include <stddef.h>
+
diff --git a/gnulib-local/lib/unistr.h.diff b/gnulib-local/lib/unistr.h.diff
new file mode 100644
index 00000000..4572049a
--- /dev/null
+++ b/gnulib-local/lib/unistr.h.diff
@@ -0,0 +1,24 @@
+*** unistr.h.orig 2009-04-05 12:22:17.000000000 +0200
+--- unistr.h 2009-04-10 18:57:37.000000000 +0200
+***************
+*** 19,26 ****
+
+ #include "unitypes.h"
+
+ /* Get bool. */
+! #include <stdbool.h>
+
+ /* Get size_t. */
+ #include <stddef.h>
+--- 19,29 ----
+
+ #include "unitypes.h"
+
++ /* Get inline if available. */
++ #include <unistring/inline.h>
++
+ /* Get bool. */
+! #include <unistring/stdbool.h>
+
+ /* Get size_t. */
+ #include <stddef.h>
diff --git a/gnulib-local/lib/unitypes.h.diff b/gnulib-local/lib/unitypes.h.diff
new file mode 100644
index 00000000..39597ffd
--- /dev/null
+++ b/gnulib-local/lib/unitypes.h.diff
@@ -0,0 +1,19 @@
+*** unitypes.h.orig 2009-04-05 19:30:36.000000000 +0200
+--- unitypes.h 2009-04-10 16:22:07.000000000 +0200
+***************
+*** 18,24 ****
+ #define _UNITYPES_H
+
+ /* Get uint8_t, uint16_t, uint32_t. */
+! #include <stdint.h>
+
+ /* Type representing a Unicode character. */
+ typedef uint32_t ucs4_t;
+--- 18,24 ----
+ #define _UNITYPES_H
+
+ /* Get uint8_t, uint16_t, uint32_t. */
+! #include <unistring/stdint.h>
+
+ /* Type representing a Unicode character. */
+ typedef uint32_t ucs4_t;
diff --git a/gnulib-local/lib/uniwidth.h.diff b/gnulib-local/lib/uniwidth.h.diff
new file mode 100644
index 00000000..7448d4c0
--- /dev/null
+++ b/gnulib-local/lib/uniwidth.h.diff
@@ -0,0 +1,19 @@
+*** uniwidth.h.orig 2007-10-07 17:24:38.000000000 +0200
+--- uniwidth.h 2009-04-10 22:39:46.000000000 +0200
+***************
+*** 23,29 ****
+ #include <stddef.h>
+
+ /* Get locale_charset() declaration. */
+! #include "localcharset.h"
+
+ #ifdef __cplusplus
+ extern "C" {
+--- 23,29 ----
+ #include <stddef.h>
+
+ /* Get locale_charset() declaration. */
+! #include <unistring/localcharset.h>
+
+ #ifdef __cplusplus
+ extern "C" {
diff --git a/gnulib-local/modules/unictype/category-none-tests.diff b/gnulib-local/modules/unictype/category-none-tests.diff
new file mode 100644
index 00000000..4e8b507a
--- /dev/null
+++ b/gnulib-local/modules/unictype/category-none-tests.diff
@@ -0,0 +1,14 @@
+*** category-none-tests.orig 2007-11-12 00:55:16.000000000 +0100
+--- category-none-tests 2009-04-20 00:09:17.000000000 +0200
+***************
+*** 7,13 ****
+--- 7,15 ----
+ configure.ac:
+
+ Makefile.am:
++ if !WOE32DLL
+ TESTS += test-categ_none
+ check_PROGRAMS += test-categ_none
+ test_categ_none_SOURCES = unictype/test-categ_none.c
++ endif
+
diff --git a/gnulib-m4/00gnulib.m4 b/gnulib-m4/00gnulib.m4
new file mode 100644
index 00000000..d4d04d15
--- /dev/null
+++ b/gnulib-m4/00gnulib.m4
@@ -0,0 +1,30 @@
+# 00gnulib.m4 serial 2
+dnl Copyright (C) 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl This file must be named something that sorts before all other
+dnl gnulib-provided .m4 files. It is needed until such time as we can
+dnl assume Autoconf 2.64, with its improved AC_DEFUN_ONCE semantics.
+
+# AC_DEFUN_ONCE([NAME], VALUE)
+# ----------------------------
+# Define NAME to expand to VALUE on the first use (whether by direct
+# expansion, or by AC_REQUIRE), and to nothing on all subsequent uses.
+# Avoid bugs in AC_REQUIRE in Autoconf 2.63 and earlier. This
+# definition is slower than the version in Autoconf 2.64, because it
+# can only use interfaces that existed since 2.59; but it achieves the
+# same effect. Quoting is necessary to avoid confusing Automake.
+m4_version_prereq([2.63.263], [],
+[m4_define([AC][_DEFUN_ONCE],
+ [AC][_DEFUN([$1],
+ [AC_REQUIRE([_gl_DEFUN_ONCE([$1])],
+ [m4_indir([_gl_DEFUN_ONCE([$1])])])])]dnl
+[AC][_DEFUN([_gl_DEFUN_ONCE([$1])], [$2])])])
+
+# gl_00GNULIB
+# -----------
+# Witness macro that this file has been included. Needed to force
+# Automake to include this file prior to all other gnulib .m4 files.
+AC_DEFUN([gl_00GNULIB])
diff --git a/gnulib-m4/alloca.m4 b/gnulib-m4/alloca.m4
new file mode 100644
index 00000000..4b978e13
--- /dev/null
+++ b/gnulib-m4/alloca.m4
@@ -0,0 +1,46 @@
+# alloca.m4 serial 9
+dnl Copyright (C) 2002-2004, 2006, 2007, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ALLOCA],
+[
+ dnl Work around a bug of AC_EGREP_CPP in autoconf-2.57.
+ AC_REQUIRE([AC_PROG_CPP])
+ AC_REQUIRE([AC_PROG_EGREP])
+
+ AC_REQUIRE([AC_FUNC_ALLOCA])
+ if test $ac_cv_func_alloca_works = no; then
+ gl_PREREQ_ALLOCA
+ fi
+
+ # Define an additional variable used in the Makefile substitution.
+ if test $ac_cv_working_alloca_h = yes; then
+ AC_CACHE_CHECK([for alloca as a compiler built-in], [gl_cv_rpl_alloca], [
+ AC_EGREP_CPP([Need own alloca], [
+#if defined __GNUC__ || defined _AIX || defined _MSC_VER
+ Need own alloca
+#endif
+ ], [gl_cv_rpl_alloca=yes], [gl_cv_rpl_alloca=no])
+ ])
+ if test $gl_cv_rpl_alloca = yes; then
+ dnl OK, alloca can be implemented through a compiler built-in.
+ AC_DEFINE([HAVE_ALLOCA], [1],
+ [Define to 1 if you have 'alloca' after including <alloca.h>,
+ a header that may be supplied by this distribution.])
+ ALLOCA_H=alloca.h
+ else
+ dnl alloca exists as a library function, i.e. it is slow and probably
+ dnl a memory leak. Don't define HAVE_ALLOCA in this case.
+ ALLOCA_H=
+ fi
+ else
+ ALLOCA_H=alloca.h
+ fi
+ AC_SUBST([ALLOCA_H])
+])
+
+# Prerequisites of lib/alloca.c.
+# STACK_DIRECTION is already handled by AC_FUNC_ALLOCA.
+AC_DEFUN([gl_PREREQ_ALLOCA], [:])
diff --git a/gnulib-m4/codeset.m4 b/gnulib-m4/codeset.m4
new file mode 100644
index 00000000..413217bd
--- /dev/null
+++ b/gnulib-m4/codeset.m4
@@ -0,0 +1,21 @@
+# codeset.m4 serial 4 (gettext-0.18)
+dnl Copyright (C) 2000-2002, 2006, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([AM_LANGINFO_CODESET],
+[
+ AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset],
+ [AC_TRY_LINK([#include <langinfo.h>],
+ [char* cs = nl_langinfo(CODESET); return !cs;],
+ [am_cv_langinfo_codeset=yes],
+ [am_cv_langinfo_codeset=no])
+ ])
+ if test $am_cv_langinfo_codeset = yes; then
+ AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
+ [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
+ fi
+])
diff --git a/gnulib-m4/eealloc.m4 b/gnulib-m4/eealloc.m4
new file mode 100644
index 00000000..3c9c0b52
--- /dev/null
+++ b/gnulib-m4/eealloc.m4
@@ -0,0 +1,32 @@
+# eealloc.m4 serial 2
+dnl Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_EEALLOC],
+[
+ AC_REQUIRE([gl_EEMALLOC])
+ AC_REQUIRE([gl_EEREALLOC])
+ AC_REQUIRE([AC_C_INLINE])
+])
+
+AC_DEFUN([gl_EEMALLOC],
+[
+ _AC_FUNC_MALLOC_IF(
+ [gl_cv_func_malloc_0_nonnull=1],
+ [gl_cv_func_malloc_0_nonnull=0])
+ AC_DEFINE_UNQUOTED([MALLOC_0_IS_NONNULL], [$gl_cv_func_malloc_0_nonnull],
+ [If malloc(0) is != NULL, define this to 1. Otherwise define this
+ to 0.])
+])
+
+AC_DEFUN([gl_EEREALLOC],
+[
+ _AC_FUNC_REALLOC_IF(
+ [gl_cv_func_realloc_0_nonnull=1],
+ [gl_cv_func_realloc_0_nonnull=0])
+ AC_DEFINE_UNQUOTED([REALLOC_0_IS_NONNULL], [$gl_cv_func_realloc_0_nonnull],
+ [If realloc(NULL,0) is != NULL, define this to 1. Otherwise define this
+ to 0.])
+])
diff --git a/gnulib-m4/environ.m4 b/gnulib-m4/environ.m4
new file mode 100644
index 00000000..b17bb60a
--- /dev/null
+++ b/gnulib-m4/environ.m4
@@ -0,0 +1,36 @@
+# environ.m4 serial 2
+dnl Copyright (C) 2001-2004, 2006-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_ENVIRON],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ dnl Persuade glibc <unistd.h> to declare environ.
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ gt_CHECK_VAR_DECL([#include <unistd.h>], environ)
+ if test $gt_cv_var_environ_declaration != yes; then
+ HAVE_DECL_ENVIRON=0
+ fi
+])
+
+# Check if a variable is properly declared.
+# gt_CHECK_VAR_DECL(includes,variable)
+AC_DEFUN([gt_CHECK_VAR_DECL],
+[
+ define([gt_cv_var], [gt_cv_var_]$2[_declaration])
+ AC_MSG_CHECKING([if $2 is properly declared])
+ AC_CACHE_VAL([gt_cv_var], [
+ AC_TRY_COMPILE([$1
+ extern struct { int foo; } $2;],
+ [$2.foo = 1;],
+ gt_cv_var=no,
+ gt_cv_var=yes)])
+ AC_MSG_RESULT([$gt_cv_var])
+ if test $gt_cv_var = yes; then
+ AC_DEFINE([HAVE_]translit($2, [a-z], [A-Z])[_DECL], 1,
+ [Define if you have the declaration of $2.])
+ fi
+ undefine([gt_cv_var])
+])
diff --git a/gnulib-m4/errno_h.m4 b/gnulib-m4/errno_h.m4
new file mode 100644
index 00000000..4ce1ccbd
--- /dev/null
+++ b/gnulib-m4/errno_h.m4
@@ -0,0 +1,115 @@
+# errno_h.m4 serial 6
+dnl Copyright (C) 2004, 2006, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN_ONCE([gl_HEADER_ERRNO_H],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_CACHE_CHECK([for complete errno.h], [gl_cv_header_errno_h_complete], [
+ AC_EGREP_CPP([booboo],[
+#include <errno.h>
+#if !defined ENOMSG
+booboo
+#endif
+#if !defined EIDRM
+booboo
+#endif
+#if !defined ENOLINK
+booboo
+#endif
+#if !defined EPROTO
+booboo
+#endif
+#if !defined EMULTIHOP
+booboo
+#endif
+#if !defined EBADMSG
+booboo
+#endif
+#if !defined EOVERFLOW
+booboo
+#endif
+#if !defined ENOTSUP
+booboo
+#endif
+#if !defined ESTALE
+booboo
+#endif
+#if !defined ECANCELED
+booboo
+#endif
+ ],
+ [gl_cv_header_errno_h_complete=no],
+ [gl_cv_header_errno_h_complete=yes])
+ ])
+ if test $gl_cv_header_errno_h_complete = yes; then
+ ERRNO_H=''
+ else
+ gl_CHECK_NEXT_HEADERS([errno.h])
+ ERRNO_H='errno.h'
+ fi
+ AC_SUBST([ERRNO_H])
+ gl_REPLACE_ERRNO_VALUE([EMULTIHOP])
+ gl_REPLACE_ERRNO_VALUE([ENOLINK])
+ gl_REPLACE_ERRNO_VALUE([EOVERFLOW])
+])
+
+# Assuming $1 = EOVERFLOW.
+# The EOVERFLOW errno value ought to be defined in <errno.h>, according to
+# POSIX. But some systems (like OpenBSD 4.0 or AIX 3) don't define it, and
+# some systems (like OSF/1) define it when _XOPEN_SOURCE_EXTENDED is defined.
+# Check for the value of EOVERFLOW.
+# Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE.
+AC_DEFUN([gl_REPLACE_ERRNO_VALUE],
+[
+ if test -n "$ERRNO_H"; then
+ AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [
+ AC_EGREP_CPP([yes],[
+#include <errno.h>
+#ifdef ]$1[
+yes
+#endif
+ ],
+ [gl_cv_header_errno_h_]$1[=yes],
+ [gl_cv_header_errno_h_]$1[=no])
+ if test $gl_cv_header_errno_h_]$1[ = no; then
+ AC_EGREP_CPP([yes],[
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef ]$1[
+yes
+#endif
+ ], [gl_cv_header_errno_h_]$1[=hidden])
+ if test $gl_cv_header_errno_h_]$1[ = hidden; then
+ dnl The macro exists but is hidden.
+ dnl Define it to the same value.
+ AC_COMPUTE_INT([gl_cv_header_errno_h_]$1, $1, [
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+])
+ fi
+ fi
+ ])
+ case $gl_cv_header_errno_h_]$1[ in
+ yes | no)
+ ]$1[_HIDDEN=0; ]$1[_VALUE=
+ ;;
+ *)
+ ]$1[_HIDDEN=1; ]$1[_VALUE="$gl_cv_header_errno_h_]$1["
+ ;;
+ esac
+ AC_SUBST($1[_HIDDEN])
+ AC_SUBST($1[_VALUE])
+ fi
+])
+
+dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
+dnl Remove this when we can assume autoconf >= 2.61.
+m4_ifdef([AC_COMPUTE_INT], [], [
+ AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
+])
diff --git a/gnulib-m4/error.m4 b/gnulib-m4/error.m4
new file mode 100644
index 00000000..7c7746e2
--- /dev/null
+++ b/gnulib-m4/error.m4
@@ -0,0 +1,22 @@
+#serial 11
+
+# Copyright (C) 1996, 1997, 1998, 2001, 2002, 2003, 2004 Free Software
+# Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_ERROR],
+[
+ AC_FUNC_ERROR_AT_LINE
+ dnl Note: AC_FUNC_ERROR_AT_LINE does AC_LIBSOURCES([error.h, error.c]).
+ gl_PREREQ_ERROR
+])
+
+# Prerequisites of lib/error.c.
+AC_DEFUN([gl_PREREQ_ERROR],
+[
+ AC_REQUIRE([AC_FUNC_STRERROR_R])
+ :
+])
diff --git a/gnulib-m4/exitfail.m4 b/gnulib-m4/exitfail.m4
new file mode 100644
index 00000000..b7a691e5
--- /dev/null
+++ b/gnulib-m4/exitfail.m4
@@ -0,0 +1,13 @@
+# exitfail.m4 serial 6
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_EXITFAIL],
+[
+ AC_LIBOBJ([exitfail])
+
+ dnl No prerequisites of lib/exitfail.c.
+ :
+])
diff --git a/gnulib-m4/exponentd.m4 b/gnulib-m4/exponentd.m4
new file mode 100644
index 00000000..140cee4a
--- /dev/null
+++ b/gnulib-m4/exponentd.m4
@@ -0,0 +1,114 @@
+# exponentd.m4 serial 1
+dnl Copyright (C) 2007-2008 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+AC_DEFUN([gl_DOUBLE_EXPONENT_LOCATION],
+[
+ AC_CACHE_CHECK([where to find the exponent in a 'double'],
+ [gl_cv_cc_double_expbit0],
+ [
+ AC_TRY_RUN([
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { double value; unsigned int word[NWORDS]; } memory_double;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (double x)
+{
+ memory_double m;
+ size_t i;
+ /* Clear it first, in case sizeof (double) < sizeof (memory_double). */
+ memset (&m, 0, sizeof (memory_double));
+ m.value = x;
+ for (i = 0; i < NWORDS; i++)
+ {
+ ored_words[i] |= m.word[i];
+ anded_words[i] &= m.word[i];
+ }
+}
+int main ()
+{
+ size_t j;
+ FILE *fp = fopen ("conftest.out", "w");
+ if (fp == NULL)
+ return 1;
+ for (j = 0; j < NWORDS; j++)
+ anded_words[j] = ~ (unsigned int) 0;
+ add_to_ored_words (0.25);
+ add_to_ored_words (0.5);
+ add_to_ored_words (1.0);
+ add_to_ored_words (2.0);
+ add_to_ored_words (4.0);
+ /* Remove bits that are common (e.g. if representation of the first mantissa
+ bit is explicit). */
+ for (j = 0; j < NWORDS; j++)
+ ored_words[j] &= ~anded_words[j];
+ /* Now find the nonzero word. */
+ for (j = 0; j < NWORDS; j++)
+ if (ored_words[j] != 0)
+ break;
+ if (j < NWORDS)
+ {
+ size_t i;
+ for (i = j + 1; i < NWORDS; i++)
+ if (ored_words[i] != 0)
+ {
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+ }
+ for (i = 0; ; i++)
+ if ((ored_words[j] >> i) & 1)
+ {
+ fprintf (fp, "word %d bit %d", (int) j, (int) i);
+ return (fclose (fp) != 0);
+ }
+ }
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+}
+ ],
+ [gl_cv_cc_double_expbit0=`cat conftest.out`],
+ [gl_cv_cc_double_expbit0="unknown"],
+ [
+ dnl On ARM, there are two 'double' floating-point formats, used by
+ dnl different sets of instructions: The older FPA instructions assume
+ dnl that they are stored in big-endian word order, while the words
+ dnl (like integer types) are stored in little-endian byte order.
+ dnl The newer VFP instructions assume little-endian order consistenly.
+ AC_EGREP_CPP([mixed_endianness], [
+#if defined arm || defined __arm || defined __arm__
+ mixed_endianness
+#endif
+ ],
+ [gl_cv_cc_double_expbit0="unknown"],
+ [
+ pushdef([AC_MSG_CHECKING],[:])dnl
+ pushdef([AC_MSG_RESULT],[:])dnl
+ pushdef([AC_MSG_RESULT_UNQUOTED],[:])dnl
+ AC_C_BIGENDIAN(
+ [gl_cv_cc_double_expbit0="word 0 bit 20"],
+ [gl_cv_cc_double_expbit0="word 1 bit 20"],
+ [gl_cv_cc_double_expbit0="unknown"])
+ popdef([AC_MSG_RESULT_UNQUOTED])dnl
+ popdef([AC_MSG_RESULT])dnl
+ popdef([AC_MSG_CHECKING])dnl
+ ])
+ ])
+ rm -f conftest.out
+ ])
+ case "$gl_cv_cc_double_expbit0" in
+ word*bit*)
+ word=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
+ bit=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word.*bit //'`
+ AC_DEFINE_UNQUOTED([DBL_EXPBIT0_WORD], [$word],
+ [Define as the word index where to find the exponent of 'double'.])
+ AC_DEFINE_UNQUOTED([DBL_EXPBIT0_BIT], [$bit],
+ [Define as the bit index in the word where to find bit 0 of the exponent of 'double'.])
+ ;;
+ esac
+])
diff --git a/gnulib-m4/exponentf.m4 b/gnulib-m4/exponentf.m4
new file mode 100644
index 00000000..7ff34131
--- /dev/null
+++ b/gnulib-m4/exponentf.m4
@@ -0,0 +1,91 @@
+# exponentf.m4 serial 1
+dnl Copyright (C) 2007-2008 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+AC_DEFUN([gl_FLOAT_EXPONENT_LOCATION],
+[
+ AC_CACHE_CHECK([where to find the exponent in a 'float'],
+ [gl_cv_cc_float_expbit0],
+ [
+ AC_TRY_RUN([
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+ ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { float value; unsigned int word[NWORDS]; } memory_float;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (float x)
+{
+ memory_float m;
+ size_t i;
+ /* Clear it first, in case
+ sizeof (float) < sizeof (memory_float). */
+ memset (&m, 0, sizeof (memory_float));
+ m.value = x;
+ for (i = 0; i < NWORDS; i++)
+ {
+ ored_words[i] |= m.word[i];
+ anded_words[i] &= m.word[i];
+ }
+}
+int main ()
+{
+ size_t j;
+ FILE *fp = fopen ("conftest.out", "w");
+ if (fp == NULL)
+ return 1;
+ for (j = 0; j < NWORDS; j++)
+ anded_words[j] = ~ (unsigned int) 0;
+ add_to_ored_words (0.25f);
+ add_to_ored_words (0.5f);
+ add_to_ored_words (1.0f);
+ add_to_ored_words (2.0f);
+ add_to_ored_words (4.0f);
+ /* Remove bits that are common (e.g. if representation of the first mantissa
+ bit is explicit). */
+ for (j = 0; j < NWORDS; j++)
+ ored_words[j] &= ~anded_words[j];
+ /* Now find the nonzero word. */
+ for (j = 0; j < NWORDS; j++)
+ if (ored_words[j] != 0)
+ break;
+ if (j < NWORDS)
+ {
+ size_t i;
+ for (i = j + 1; i < NWORDS; i++)
+ if (ored_words[i] != 0)
+ {
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+ }
+ for (i = 0; ; i++)
+ if ((ored_words[j] >> i) & 1)
+ {
+ fprintf (fp, "word %d bit %d", (int) j, (int) i);
+ return (fclose (fp) != 0);
+ }
+ }
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+}
+ ],
+ [gl_cv_cc_float_expbit0=`cat conftest.out`],
+ [gl_cv_cc_float_expbit0="unknown"],
+ [gl_cv_cc_float_expbit0="word 0 bit 23"])
+ rm -f conftest.out
+ ])
+ case "$gl_cv_cc_float_expbit0" in
+ word*bit*)
+ word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
+ bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'`
+ AC_DEFINE_UNQUOTED([FLT_EXPBIT0_WORD], [$word],
+ [Define as the word index where to find the exponent of 'float'.])
+ AC_DEFINE_UNQUOTED([FLT_EXPBIT0_BIT], [$bit],
+ [Define as the bit index in the word where to find bit 0 of the exponent of 'float'.])
+ ;;
+ esac
+])
diff --git a/gnulib-m4/exponentl.m4 b/gnulib-m4/exponentl.m4
new file mode 100644
index 00000000..98e35eb2
--- /dev/null
+++ b/gnulib-m4/exponentl.m4
@@ -0,0 +1,97 @@
+# exponentl.m4 serial 2
+dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+AC_DEFUN([gl_LONG_DOUBLE_EXPONENT_LOCATION],
+[
+ AC_REQUIRE([gl_BIGENDIAN])
+ AC_CACHE_CHECK([where to find the exponent in a 'long double'],
+ [gl_cv_cc_long_double_expbit0],
+ [
+ AC_TRY_RUN([
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+ ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { long double value; unsigned int word[NWORDS]; }
+ memory_long_double;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (long double x)
+{
+ memory_long_double m;
+ size_t i;
+ /* Clear it first, in case
+ sizeof (long double) < sizeof (memory_long_double). */
+ memset (&m, 0, sizeof (memory_long_double));
+ m.value = x;
+ for (i = 0; i < NWORDS; i++)
+ {
+ ored_words[i] |= m.word[i];
+ anded_words[i] &= m.word[i];
+ }
+}
+int main ()
+{
+ size_t j;
+ FILE *fp = fopen ("conftest.out", "w");
+ if (fp == NULL)
+ return 1;
+ for (j = 0; j < NWORDS; j++)
+ anded_words[j] = ~ (unsigned int) 0;
+ add_to_ored_words (0.25L);
+ add_to_ored_words (0.5L);
+ add_to_ored_words (1.0L);
+ add_to_ored_words (2.0L);
+ add_to_ored_words (4.0L);
+ /* Remove bits that are common (e.g. if representation of the first mantissa
+ bit is explicit). */
+ for (j = 0; j < NWORDS; j++)
+ ored_words[j] &= ~anded_words[j];
+ /* Now find the nonzero word. */
+ for (j = 0; j < NWORDS; j++)
+ if (ored_words[j] != 0)
+ break;
+ if (j < NWORDS)
+ {
+ size_t i;
+ for (i = j + 1; i < NWORDS; i++)
+ if (ored_words[i] != 0)
+ {
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+ }
+ for (i = 0; ; i++)
+ if ((ored_words[j] >> i) & 1)
+ {
+ fprintf (fp, "word %d bit %d", (int) j, (int) i);
+ return (fclose (fp) != 0);
+ }
+ }
+ fprintf (fp, "unknown");
+ return (fclose (fp) != 0);
+}
+ ],
+ [gl_cv_cc_long_double_expbit0=`cat conftest.out`],
+ [gl_cv_cc_long_double_expbit0="unknown"],
+ [
+ dnl When cross-compiling, we don't know. It depends on the
+ dnl ABI and compiler version. There are too many cases.
+ gl_cv_cc_long_double_expbit0="unknown"
+ ])
+ rm -f conftest.out
+ ])
+ case "$gl_cv_cc_long_double_expbit0" in
+ word*bit*)
+ word=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
+ bit=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word.*bit //'`
+ AC_DEFINE_UNQUOTED([LDBL_EXPBIT0_WORD], [$word],
+ [Define as the word index where to find the exponent of 'long double'.])
+ AC_DEFINE_UNQUOTED([LDBL_EXPBIT0_BIT], [$bit],
+ [Define as the bit index in the word where to find bit 0 of the exponent of 'long double'.])
+ ;;
+ esac
+])
diff --git a/gnulib-m4/extensions.m4 b/gnulib-m4/extensions.m4
new file mode 100644
index 00000000..ba6d5e19
--- /dev/null
+++ b/gnulib-m4/extensions.m4
@@ -0,0 +1,104 @@
+# serial 8 -*- Autoconf -*-
+# Enable extensions on systems that normally disable them.
+
+# Copyright (C) 2003, 2006-2009 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This definition of AC_USE_SYSTEM_EXTENSIONS is stolen from CVS
+# Autoconf. Perhaps we can remove this once we can assume Autoconf
+# 2.62 or later everywhere, but since CVS Autoconf mutates rapidly
+# enough in this area it's likely we'll need to redefine
+# AC_USE_SYSTEM_EXTENSIONS for quite some time.
+
+# AC_USE_SYSTEM_EXTENSIONS
+# ------------------------
+# Enable extensions on systems that normally disable them,
+# typically due to standards-conformance issues.
+# Remember that #undef in AH_VERBATIM gets replaced with #define by
+# AC_DEFINE. The goal here is to define all known feature-enabling
+# macros, then, if reports of conflicts are made, disable macros that
+# cause problems on some platforms (such as __EXTENSIONS__).
+AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS],
+[AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl
+AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
+
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ AC_CHECK_HEADER([minix/config.h], [MINIX=yes], [MINIX=])
+ if test "$MINIX" = yes; then
+ AC_DEFINE([_POSIX_SOURCE], [1],
+ [Define to 1 if you need to in order for `stat' and other
+ things to work.])
+ AC_DEFINE([_POSIX_1_SOURCE], [2],
+ [Define to 2 if the system does not provide POSIX.1 features
+ except with this defined.])
+ AC_DEFINE([_MINIX], [1],
+ [Define to 1 if on MINIX.])
+ fi
+
+ dnl HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to 500,
+ dnl regardless of whether the flags -Ae or _D_HPUX_SOURCE=1 are already
+ dnl provided.
+ case "$host_os" in
+ hpux*)
+ AC_DEFINE([_XOPEN_SOURCE], [500],
+ [Define to 500 only on HP-UX.])
+ ;;
+ esac
+
+ AH_VERBATIM([__EXTENSIONS__],
+[/* Enable extensions on AIX 3, Interix. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris. */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop. */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+])
+ AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__],
+ [ac_cv_safe_to_define___extensions__],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[
+# define __EXTENSIONS__ 1
+ ]AC_INCLUDES_DEFAULT])],
+ [ac_cv_safe_to_define___extensions__=yes],
+ [ac_cv_safe_to_define___extensions__=no])])
+ test $ac_cv_safe_to_define___extensions__ = yes &&
+ AC_DEFINE([__EXTENSIONS__])
+ AC_DEFINE([_ALL_SOURCE])
+ AC_DEFINE([_GNU_SOURCE])
+ AC_DEFINE([_POSIX_PTHREAD_SEMANTICS])
+ AC_DEFINE([_TANDEM_SOURCE])
+])# AC_USE_SYSTEM_EXTENSIONS
+
+# gl_USE_SYSTEM_EXTENSIONS
+# ------------------------
+# Enable extensions on systems that normally disable them,
+# typically due to standards-conformance issues.
+AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS],
+[
+ dnl Require this macro before AC_USE_SYSTEM_EXTENSIONS.
+ dnl gnulib does not need it. But if it gets required by third-party macros
+ dnl after AC_USE_SYSTEM_EXTENSIONS is required, autoconf 2.62..2.63 emit a
+ dnl warning: "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS".
+ dnl Note: We can do this only for one of the macros AC_AIX, AC_GNU_SOURCE,
+ dnl AC_MINIX. If people still use AC_AIX or AC_MINIX, they are out of luck.
+ AC_REQUIRE([AC_GNU_SOURCE])
+
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+])
diff --git a/gnulib-m4/float_h.m4 b/gnulib-m4/float_h.m4
new file mode 100644
index 00000000..d36e3a46
--- /dev/null
+++ b/gnulib-m4/float_h.m4
@@ -0,0 +1,19 @@
+# float_h.m4 serial 3
+dnl Copyright (C) 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FLOAT_H],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ FLOAT_H=
+ case "$host_os" in
+ beos* | openbsd*)
+ FLOAT_H=float.h
+ gl_CHECK_NEXT_HEADERS([float.h])
+ ;;
+ esac
+ AC_SUBST([FLOAT_H])
+])
diff --git a/gnulib-m4/fpieee.m4 b/gnulib-m4/fpieee.m4
new file mode 100644
index 00000000..9f4a92cb
--- /dev/null
+++ b/gnulib-m4/fpieee.m4
@@ -0,0 +1,52 @@
+# fpieee.m4 serial 1
+dnl Copyright (C) 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl IEEE 754 standardized three items:
+dnl - The formats of single-float and double-float - nowadays commonly
+dnl available as 'float' and 'double' in C and C++.
+dnl No autoconf test needed.
+dnl - The overflow and division by zero behaviour: The result are values
+dnl '±Inf' and 'NaN', rather than exceptions as it was before.
+dnl This file provides an autoconf macro for ensuring this behaviour of
+dnl floating-point operations.
+dnl - A set of conditions (overflow, underflow, inexact, etc.) which can
+dnl be configured to trigger an exception.
+dnl This cannot be done in a portable way: it depends on the compiler,
+dnl libc, kernel, and CPU. No autoconf macro is provided for this.
+
+dnl Ensure non-trapping behaviour of floating-point overflow and
+dnl floating-point division by zero.
+dnl (For integer overflow, see gcc's -ftrapv option; for integer division by
+dnl zero, see the autoconf macro in intdiv0.m4.)
+
+AC_DEFUN([gl_FP_IEEE],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ # IEEE behaviour is the default on all CPUs except Alpha and SH
+ # (according to the test results of Bruno Haible's ieeefp/fenv_default.m4
+ # and the GCC 4.1.2 manual).
+ case "$host_cpu" in
+ alpha*)
+ # On Alpha systems, a compiler option provides the behaviour.
+ # See the ieee(3) manual page, also available at
+ # <http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/0600____.HTM>
+ if test -n "$GCC"; then
+ # GCC has the option -mieee.
+ CPPFLAGS="$CPPFLAGS -mieee"
+ else
+ # Compaq (ex-DEC) C has the option -ieee.
+ CPPFLAGS="$CPPFLAGS -ieee"
+ fi
+ ;;
+ sh*)
+ if test -n "$GCC"; then
+ # GCC has the option -mieee.
+ CPPFLAGS="$CPPFLAGS -mieee"
+ fi
+ ;;
+ esac
+])
diff --git a/gnulib-m4/frexp.m4 b/gnulib-m4/frexp.m4
new file mode 100644
index 00000000..6c911121
--- /dev/null
+++ b/gnulib-m4/frexp.m4
@@ -0,0 +1,146 @@
+# frexp.m4 serial 7
+dnl Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FREXP],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ FREXP_LIBM=
+ AC_CACHE_CHECK([whether frexp() can be used without linking with libm],
+ [gl_cv_func_frexp_no_libm],
+ [
+ AC_TRY_LINK([#include <math.h>
+ double x;],
+ [int e; return frexp (x, &e) > 0;],
+ [gl_cv_func_frexp_no_libm=yes],
+ [gl_cv_func_frexp_no_libm=no])
+ ])
+ if test $gl_cv_func_frexp_no_libm = no; then
+ AC_CACHE_CHECK([whether frexp() can be used with libm],
+ [gl_cv_func_frexp_in_libm],
+ [
+ save_LIBS="$LIBS"
+ LIBS="$LIBS -lm"
+ AC_TRY_LINK([#include <math.h>
+ double x;],
+ [int e; return frexp (x, &e) > 0;],
+ [gl_cv_func_frexp_in_libm=yes],
+ [gl_cv_func_frexp_in_libm=no])
+ LIBS="$save_LIBS"
+ ])
+ if test $gl_cv_func_frexp_in_libm = yes; then
+ FREXP_LIBM=-lm
+ fi
+ fi
+ if test $gl_cv_func_frexp_no_libm = yes \
+ || test $gl_cv_func_frexp_in_libm = yes; then
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $FREXP_LIBM"
+ gl_FUNC_FREXP_WORKS
+ LIBS="$save_LIBS"
+ case "$gl_cv_func_frexp_works" in
+ *yes) gl_func_frexp=yes ;;
+ *) gl_func_frexp=no; REPLACE_FREXP=1; FREXP_LIBM= ;;
+ esac
+ else
+ gl_func_frexp=no
+ fi
+ if test $gl_func_frexp = yes; then
+ AC_DEFINE([HAVE_FREXP], [1],
+ [Define if the frexp() function is available and works.])
+ else
+ AC_LIBOBJ([frexp])
+ fi
+ AC_SUBST([FREXP_LIBM])
+])
+
+AC_DEFUN([gl_FUNC_FREXP_NO_LIBM],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_CACHE_CHECK([whether frexp() can be used without linking with libm],
+ [gl_cv_func_frexp_no_libm],
+ [
+ AC_TRY_LINK([#include <math.h>
+ double x;],
+ [int e; return frexp (x, &e) > 0;],
+ [gl_cv_func_frexp_no_libm=yes],
+ [gl_cv_func_frexp_no_libm=no])
+ ])
+ if test $gl_cv_func_frexp_no_libm = yes; then
+ gl_FUNC_FREXP_WORKS
+ case "$gl_cv_func_frexp_works" in
+ *yes) gl_func_frexp_no_libm=yes ;;
+ *) gl_func_frexp_no_libm=no; REPLACE_FREXP=1 ;;
+ esac
+ else
+ gl_func_frexp_no_libm=no
+ dnl Set REPLACE_FREXP here because the system may have frexp in libm.
+ REPLACE_FREXP=1
+ fi
+ if test $gl_func_frexp_no_libm = yes; then
+ AC_DEFINE([HAVE_FREXP_IN_LIBC], [1],
+ [Define if the frexp() function is available in libc.])
+ else
+ AC_LIBOBJ([frexp])
+ fi
+])
+
+dnl Test whether frexp() works also on denormalized numbers (this fails e.g. on
+dnl NetBSD 3.0), on infinite numbers (this fails e.g. on IRIX 6.5 and mingw),
+dnl and on negative zero (this fails e.g. on NetBSD 4.99).
+AC_DEFUN([gl_FUNC_FREXP_WORKS],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether frexp works], [gl_cv_func_frexp_works],
+ [
+ AC_TRY_RUN([
+#include <float.h>
+#include <math.h>
+#include <string.h>
+int main()
+{
+ int i;
+ volatile double x;
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
+ So we use -zero instead. */
+ double zero = 0.0;
+ /* Test on denormalized numbers. */
+ for (i = 1, x = 1.0; i >= DBL_MIN_EXP; i--, x *= 0.5)
+ ;
+ if (x > 0.0)
+ {
+ int exp;
+ double y = frexp (x, &exp);
+ /* On machines with IEEE754 arithmetic: x = 1.11254e-308, exp = -1022.
+ On NetBSD: y = 0.75. Correct: y = 0.5. */
+ if (y != 0.5)
+ return 1;
+ }
+ /* Test on infinite numbers. */
+ x = 1.0 / 0.0;
+ {
+ int exp;
+ double y = frexp (x, &exp);
+ if (y != x)
+ return 1;
+ }
+ /* Test on negative zero. */
+ x = -zero;
+ {
+ int exp;
+ double y = frexp (x, &exp);
+ if (memcmp (&y, &x, sizeof x))
+ return 1;
+ }
+ return 0;
+}], [gl_cv_func_frexp_works=yes], [gl_cv_func_frexp_works=no],
+ [case "$host_os" in
+ netbsd* | irix* | mingw*) gl_cv_func_frexp_works="guessing no";;
+ *) gl_cv_func_frexp_works="guessing yes";;
+ esac
+ ])
+ ])
+])
diff --git a/gnulib-m4/frexpl.m4 b/gnulib-m4/frexpl.m4
new file mode 100644
index 00000000..c5da7446
--- /dev/null
+++ b/gnulib-m4/frexpl.m4
@@ -0,0 +1,186 @@
+# frexpl.m4 serial 9
+dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FREXPL],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ FREXPL_LIBM=
+ AC_CACHE_CHECK([whether frexpl() can be used without linking with libm],
+ [gl_cv_func_frexpl_no_libm],
+ [
+ AC_TRY_LINK([#include <math.h>
+ long double x;],
+ [int e; return frexpl (x, &e) > 0;],
+ [gl_cv_func_frexpl_no_libm=yes],
+ [gl_cv_func_frexpl_no_libm=no])
+ ])
+ if test $gl_cv_func_frexpl_no_libm = no; then
+ AC_CACHE_CHECK([whether frexpl() can be used with libm],
+ [gl_cv_func_frexpl_in_libm],
+ [
+ save_LIBS="$LIBS"
+ LIBS="$LIBS -lm"
+ AC_TRY_LINK([#include <math.h>
+ long double x;],
+ [int e; return frexpl (x, &e) > 0;],
+ [gl_cv_func_frexpl_in_libm=yes],
+ [gl_cv_func_frexpl_in_libm=no])
+ LIBS="$save_LIBS"
+ ])
+ if test $gl_cv_func_frexpl_in_libm = yes; then
+ FREXPL_LIBM=-lm
+ fi
+ fi
+ if test $gl_cv_func_frexpl_no_libm = yes \
+ || test $gl_cv_func_frexpl_in_libm = yes; then
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $FREXPL_LIBM"
+ gl_FUNC_FREXPL_WORKS
+ LIBS="$save_LIBS"
+ case "$gl_cv_func_frexpl_works" in
+ *yes) gl_func_frexpl=yes ;;
+ *) gl_func_frexpl=no; REPLACE_FREXPL=1; FREXPL_LIBM= ;;
+ esac
+ else
+ gl_func_frexpl=no
+ fi
+ if test $gl_func_frexpl = yes; then
+ AC_DEFINE([HAVE_FREXPL], [1],
+ [Define if the frexpl() function is available.])
+ dnl Also check whether it's declared.
+ dnl MacOS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>.
+ AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [#include <math.h>])
+ else
+ HAVE_DECL_FREXPL=0
+ AC_LIBOBJ([frexpl])
+ fi
+ AC_SUBST([FREXPL_LIBM])
+])
+
+AC_DEFUN([gl_FUNC_FREXPL_NO_LIBM],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_CACHE_CHECK([whether frexpl() can be used without linking with libm],
+ [gl_cv_func_frexpl_no_libm],
+ [
+ AC_TRY_LINK([#include <math.h>
+ long double x;],
+ [int e; return frexpl (x, &e) > 0;],
+ [gl_cv_func_frexpl_no_libm=yes],
+ [gl_cv_func_frexpl_no_libm=no])
+ ])
+ if test $gl_cv_func_frexpl_no_libm = yes; then
+ gl_FUNC_FREXPL_WORKS
+ case "$gl_cv_func_frexpl_works" in
+ *yes) gl_func_frexpl_no_libm=yes ;;
+ *) gl_func_frexpl_no_libm=no; REPLACE_FREXPL=1 ;;
+ esac
+ else
+ gl_func_frexpl_no_libm=no
+ dnl Set REPLACE_FREXPL here because the system may have frexpl in libm.
+ REPLACE_FREXPL=1
+ fi
+ if test $gl_func_frexpl_no_libm = yes; then
+ AC_DEFINE([HAVE_FREXPL_IN_LIBC], [1],
+ [Define if the frexpl() function is available in libc.])
+ dnl Also check whether it's declared.
+ dnl MacOS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>.
+ AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [#include <math.h>])
+ else
+ HAVE_DECL_FREXPL=0
+ AC_LIBOBJ([frexpl])
+ fi
+])
+
+dnl Test whether frexpl() works on finite numbers (this fails on
+dnl MacOS X 10.4/PowerPC, on AIX 5.1, and on BeOS), on denormalized numbers
+dnl (this fails on MacOS X 10.5/i386), and also on infinite numbers (this
+dnl fails e.g. on IRIX 6.5 and mingw).
+AC_DEFUN([gl_FUNC_FREXPL_WORKS],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether frexpl works], [gl_cv_func_frexpl_works],
+ [
+ AC_TRY_RUN([
+#include <float.h>
+#include <math.h>
+/* Override the values of <float.h>, like done in float.in.h. */
+#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__)
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP (-16381)
+#endif
+extern long double frexpl (long double, int *);
+int main()
+{
+ volatile long double x;
+ /* Test on finite numbers that fails on AIX 5.1. */
+ x = 16.0L;
+ {
+ int exp = -9999;
+ frexpl (x, &exp);
+ if (exp != 5)
+ return 1;
+ }
+ /* Test on finite numbers that fails on MacOS X 10.4, because its frexpl
+ function returns an invalid (incorrectly normalized) value: it returns
+ y = { 0x3fe028f5, 0xc28f5c28, 0x3c9eb851, 0xeb851eb8 }
+ but the correct result is
+ 0.505L = { 0x3fe028f5, 0xc28f5c29, 0xbc547ae1, 0x47ae1480 } */
+ x = 1.01L;
+ {
+ int exp = -9999;
+ long double y = frexpl (x, &exp);
+ if (!(exp == 1 && y == 0.505L))
+ return 1;
+ }
+ /* Test on large finite numbers. This fails on BeOS at i = 16322, while
+ LDBL_MAX_EXP = 16384.
+ In the loop end test, we test x against Infinity, rather than comparing
+ i with LDBL_MAX_EXP, because BeOS <float.h> has a wrong LDBL_MAX_EXP. */
+ {
+ int i;
+ for (i = 1, x = 1.0L; x != x + x; i++, x *= 2.0L)
+ {
+ int exp = -9999;
+ frexpl (x, &exp);
+ if (exp != i)
+ return 1;
+ }
+ }
+ /* Test on denormalized numbers. */
+ {
+ int i;
+ for (i = 1, x = 1.0L; i >= LDBL_MIN_EXP; i--, x *= 0.5L)
+ ;
+ if (x > 0.0L)
+ {
+ int exp;
+ long double y = frexpl (x, &exp);
+ /* On machines with IEEE854 arithmetic: x = 1.68105e-4932,
+ exp = -16382, y = 0.5. On MacOS X 10.5: exp = -16384, y = 0.5. */
+ if (exp != LDBL_MIN_EXP - 1)
+ return 1;
+ }
+ }
+ /* Test on infinite numbers. */
+ x = 1.0L / 0.0L;
+ {
+ int exp;
+ long double y = frexpl (x, &exp);
+ if (y != x)
+ return 1;
+ }
+ return 0;
+}], [gl_cv_func_frexpl_works=yes], [gl_cv_func_frexpl_works=no],
+ [case "$host_os" in
+ aix* | beos* | darwin* | irix* | mingw* | pw*)
+ gl_cv_func_frexpl_works="guessing no";;
+ *) gl_cv_func_frexpl_works="guessing yes";;
+ esac
+ ])
+ ])
+])
diff --git a/gnulib-m4/getpagesize.m4 b/gnulib-m4/getpagesize.m4
new file mode 100644
index 00000000..0d07a3a5
--- /dev/null
+++ b/gnulib-m4/getpagesize.m4
@@ -0,0 +1,29 @@
+# getpagesize.m4 serial 7
+dnl Copyright (C) 2002, 2004-2005, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_GETPAGESIZE],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_CHECK_FUNCS([getpagesize])
+ if test $ac_cv_func_getpagesize = no; then
+ HAVE_GETPAGESIZE=0
+ AC_CHECK_HEADERS([OS.h])
+ if test $ac_cv_header_OS_h = yes; then
+ HAVE_OS_H=1
+ fi
+ AC_CHECK_HEADERS([sys/param.h])
+ if test $ac_cv_header_sys_param_h = yes; then
+ HAVE_SYS_PARAM_H=1
+ fi
+ fi
+ case "$host_os" in
+ mingw*)
+ REPLACE_GETPAGESIZE=1
+ AC_LIBOBJ([getpagesize])
+ ;;
+ esac
+])
diff --git a/gnulib-m4/glibc21.m4 b/gnulib-m4/glibc21.m4
new file mode 100644
index 00000000..93fbf474
--- /dev/null
+++ b/gnulib-m4/glibc21.m4
@@ -0,0 +1,30 @@
+# glibc21.m4 serial 4
+dnl Copyright (C) 2000-2002, 2004, 2008 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Test for the GNU C Library, version 2.1 or newer.
+# From Bruno Haible.
+
+AC_DEFUN([gl_GLIBC21],
+ [
+ AC_CACHE_CHECK([whether we are using the GNU C Library 2.1 or newer],
+ [ac_cv_gnu_library_2_1],
+ [AC_EGREP_CPP([Lucky GNU user],
+ [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+ Lucky GNU user
+ #endif
+#endif
+ ],
+ [ac_cv_gnu_library_2_1=yes],
+ [ac_cv_gnu_library_2_1=no])
+ ]
+ )
+ AC_SUBST([GLIBC21])
+ GLIBC21="$ac_cv_gnu_library_2_1"
+ ]
+)
diff --git a/gnulib-m4/gnulib-cache.m4 b/gnulib-m4/gnulib-cache.m4
new file mode 100644
index 00000000..b3ae1d22
--- /dev/null
+++ b/gnulib-m4/gnulib-cache.m4
@@ -0,0 +1,373 @@
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License. As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+#
+# This file represents the specification of how gnulib-tool is used.
+# It acts as a cache: It is written and read by gnulib-tool.
+# In projects using CVS, this file is meant to be stored in CVS,
+# like the configure.ac and various Makefile.am files.
+
+
+# Specification in the form of a command-line invocation:
+# gnulib-tool --import --dir=. --local-dir=gnulib-local --lib=libunistring --source-base=lib --m4-base=gnulib-m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --with-tests --lgpl --makefile-name=Makefile.gnulib --libtool --macro-prefix=gl relocatable-lib-lgpl unicase/base unicase/empty-prefix-context unicase/empty-suffix-context unicase/locale-language unicase/tolower unicase/totitle unicase/toupper unicase/u16-casecmp unicase/u16-casecoll unicase/u16-casefold unicase/u16-casexfrm unicase/u16-ct-casefold unicase/u16-ct-tolower unicase/u16-ct-totitle unicase/u16-ct-toupper unicase/u16-is-cased unicase/u16-is-casefolded unicase/u16-is-lowercase unicase/u16-is-titlecase unicase/u16-is-uppercase unicase/u16-tolower unicase/u16-totitle unicase/u16-toupper unicase/u32-casecmp unicase/u32-casecoll unicase/u32-casefold unicase/u32-casexfrm unicase/u32-ct-casefold unicase/u32-ct-tolower unicase/u32-ct-totitle unicase/u32-ct-toupper unicase/u32-is-cased unicase/u32-is-casefolded unicase/u32-is-lowercase unicase/u32-is-titlecase unicase/u32-is-uppercase unicase/u32-tolower unicase/u32-totitle unicase/u32-toupper unicase/u8-casecmp unicase/u8-casecoll unicase/u8-casefold unicase/u8-casexfrm unicase/u8-ct-casefold unicase/u8-ct-tolower unicase/u8-ct-totitle unicase/u8-ct-toupper unicase/u8-is-cased unicase/u8-is-casefolded unicase/u8-is-lowercase unicase/u8-is-titlecase unicase/u8-is-uppercase unicase/u8-tolower unicase/u8-totitle unicase/u8-toupper unicase/ulc-casecmp unicase/ulc-casecoll unicase/ulc-casexfrm uniconv/base uniconv/u16-conv-from-enc uniconv/u16-conv-to-enc uniconv/u16-strconv-from-enc uniconv/u16-strconv-from-locale uniconv/u16-strconv-to-enc uniconv/u16-strconv-to-locale uniconv/u32-conv-from-enc uniconv/u32-conv-to-enc uniconv/u32-strconv-from-enc uniconv/u32-strconv-from-locale uniconv/u32-strconv-to-enc uniconv/u32-strconv-to-locale uniconv/u8-conv-from-enc uniconv/u8-conv-to-enc uniconv/u8-strconv-from-enc uniconv/u8-strconv-from-locale uniconv/u8-strconv-to-enc uniconv/u8-strconv-to-locale unictype/base unictype/bidicategory-all unictype/block-all unictype/category-all unictype/combining-class unictype/ctype-alnum unictype/ctype-alpha unictype/ctype-blank unictype/ctype-cntrl unictype/ctype-digit unictype/ctype-graph unictype/ctype-lower unictype/ctype-print unictype/ctype-punct unictype/ctype-space unictype/ctype-upper unictype/ctype-xdigit unictype/decimal-digit unictype/digit unictype/mirror unictype/numeric unictype/property-all unictype/scripts-all unictype/syntax-c-ident unictype/syntax-c-whitespace unictype/syntax-java-ident unictype/syntax-java-whitespace unilbrk/base unilbrk/tables unilbrk/u16-possible-linebreaks unilbrk/u16-width-linebreaks unilbrk/u32-possible-linebreaks unilbrk/u32-width-linebreaks unilbrk/u8-possible-linebreaks unilbrk/u8-width-linebreaks unilbrk/ulc-possible-linebreaks unilbrk/ulc-width-linebreaks uniname/base uniname/uniname uninorm/base uninorm/canonical-decomposition uninorm/compat-decomposition uninorm/composition uninorm/decomposition uninorm/filter uninorm/nfc uninorm/nfd uninorm/nfkc uninorm/nfkd uninorm/u16-normalize uninorm/u16-normcmp uninorm/u16-normcoll uninorm/u16-normxfrm uninorm/u32-normalize uninorm/u32-normcmp uninorm/u32-normcoll uninorm/u32-normxfrm uninorm/u8-normalize uninorm/u8-normcmp uninorm/u8-normcoll uninorm/u8-normxfrm unistdio/base unistdio/u16-asnprintf unistdio/u16-asprintf unistdio/u16-snprintf unistdio/u16-sprintf unistdio/u16-u16-asnprintf unistdio/u16-u16-asprintf unistdio/u16-u16-snprintf unistdio/u16-u16-sprintf unistdio/u16-u16-vasnprintf unistdio/u16-u16-vasprintf unistdio/u16-u16-vsnprintf unistdio/u16-u16-vsprintf unistdio/u16-vasnprintf unistdio/u16-vasprintf unistdio/u16-vsnprintf unistdio/u16-vsprintf unistdio/u32-asnprintf unistdio/u32-asprintf unistdio/u32-snprintf unistdio/u32-sprintf unistdio/u32-u32-asnprintf unistdio/u32-u32-asprintf unistdio/u32-u32-snprintf unistdio/u32-u32-sprintf unistdio/u32-u32-vasnprintf unistdio/u32-u32-vasprintf unistdio/u32-u32-vsnprintf unistdio/u32-u32-vsprintf unistdio/u32-vasnprintf unistdio/u32-vasprintf unistdio/u32-vsnprintf unistdio/u32-vsprintf unistdio/u8-asnprintf unistdio/u8-asprintf unistdio/u8-snprintf unistdio/u8-sprintf unistdio/u8-u8-asnprintf unistdio/u8-u8-asprintf unistdio/u8-u8-snprintf unistdio/u8-u8-sprintf unistdio/u8-u8-vasnprintf unistdio/u8-u8-vasprintf unistdio/u8-u8-vsnprintf unistdio/u8-u8-vsprintf unistdio/u8-vasnprintf unistdio/u8-vasprintf unistdio/u8-vsnprintf unistdio/u8-vsprintf unistdio/ulc-asnprintf unistdio/ulc-asprintf unistdio/ulc-fprintf unistdio/ulc-snprintf unistdio/ulc-sprintf unistdio/ulc-vasnprintf unistdio/ulc-vasprintf unistdio/ulc-vfprintf unistdio/ulc-vsnprintf unistdio/ulc-vsprintf unistr/base unistr/u16-check unistr/u16-chr unistr/u16-cmp unistr/u16-cmp2 unistr/u16-cpy unistr/u16-cpy-alloc unistr/u16-endswith unistr/u16-mblen unistr/u16-mbsnlen unistr/u16-mbtouc unistr/u16-mbtouc-unsafe unistr/u16-mbtoucr unistr/u16-move unistr/u16-next unistr/u16-prev unistr/u16-set unistr/u16-startswith unistr/u16-stpcpy unistr/u16-stpncpy unistr/u16-strcat unistr/u16-strchr unistr/u16-strcmp unistr/u16-strcoll unistr/u16-strcpy unistr/u16-strcspn unistr/u16-strdup unistr/u16-strlen unistr/u16-strmblen unistr/u16-strmbtouc unistr/u16-strncat unistr/u16-strncmp unistr/u16-strncpy unistr/u16-strnlen unistr/u16-strpbrk unistr/u16-strrchr unistr/u16-strspn unistr/u16-strstr unistr/u16-strtok unistr/u16-to-u32 unistr/u16-to-u8 unistr/u16-uctomb unistr/u32-check unistr/u32-chr unistr/u32-cmp unistr/u32-cmp2 unistr/u32-cpy unistr/u32-cpy-alloc unistr/u32-endswith unistr/u32-mblen unistr/u32-mbsnlen unistr/u32-mbtouc unistr/u32-mbtouc-unsafe unistr/u32-mbtoucr unistr/u32-move unistr/u32-next unistr/u32-prev unistr/u32-set unistr/u32-startswith unistr/u32-stpcpy unistr/u32-stpncpy unistr/u32-strcat unistr/u32-strchr unistr/u32-strcmp unistr/u32-strcoll unistr/u32-strcpy unistr/u32-strcspn unistr/u32-strdup unistr/u32-strlen unistr/u32-strmblen unistr/u32-strmbtouc unistr/u32-strncat unistr/u32-strncmp unistr/u32-strncpy unistr/u32-strnlen unistr/u32-strpbrk unistr/u32-strrchr unistr/u32-strspn unistr/u32-strstr unistr/u32-strtok unistr/u32-to-u16 unistr/u32-to-u8 unistr/u32-uctomb unistr/u8-check unistr/u8-chr unistr/u8-cmp unistr/u8-cmp2 unistr/u8-cpy unistr/u8-cpy-alloc unistr/u8-endswith unistr/u8-mblen unistr/u8-mbsnlen unistr/u8-mbtouc unistr/u8-mbtouc-unsafe unistr/u8-mbtoucr unistr/u8-move unistr/u8-next unistr/u8-prev unistr/u8-set unistr/u8-startswith unistr/u8-stpcpy unistr/u8-stpncpy unistr/u8-strcat unistr/u8-strchr unistr/u8-strcmp unistr/u8-strcoll unistr/u8-strcpy unistr/u8-strcspn unistr/u8-strdup unistr/u8-strlen unistr/u8-strmblen unistr/u8-strmbtouc unistr/u8-strncat unistr/u8-strncmp unistr/u8-strncpy unistr/u8-strnlen unistr/u8-strpbrk unistr/u8-strrchr unistr/u8-strspn unistr/u8-strstr unistr/u8-strtok unistr/u8-to-u16 unistr/u8-to-u32 unistr/u8-uctomb unitypes uniwbrk/base uniwbrk/u16-wordbreaks uniwbrk/u32-wordbreaks uniwbrk/u8-wordbreaks uniwbrk/ulc-wordbreaks uniwbrk/wordbreak-property uniwidth/base uniwidth/u16-strwidth uniwidth/u16-width uniwidth/u32-strwidth uniwidth/u32-width uniwidth/u8-strwidth uniwidth/u8-width uniwidth/width
+
+# Specification in the form of a few gnulib-tool.m4 macro invocations:
+gl_LOCAL_DIR([gnulib-local])
+gl_MODULES([
+ relocatable-lib-lgpl
+ unicase/base
+ unicase/empty-prefix-context
+ unicase/empty-suffix-context
+ unicase/locale-language
+ unicase/tolower
+ unicase/totitle
+ unicase/toupper
+ unicase/u16-casecmp
+ unicase/u16-casecoll
+ unicase/u16-casefold
+ unicase/u16-casexfrm
+ unicase/u16-ct-casefold
+ unicase/u16-ct-tolower
+ unicase/u16-ct-totitle
+ unicase/u16-ct-toupper
+ unicase/u16-is-cased
+ unicase/u16-is-casefolded
+ unicase/u16-is-lowercase
+ unicase/u16-is-titlecase
+ unicase/u16-is-uppercase
+ unicase/u16-tolower
+ unicase/u16-totitle
+ unicase/u16-toupper
+ unicase/u32-casecmp
+ unicase/u32-casecoll
+ unicase/u32-casefold
+ unicase/u32-casexfrm
+ unicase/u32-ct-casefold
+ unicase/u32-ct-tolower
+ unicase/u32-ct-totitle
+ unicase/u32-ct-toupper
+ unicase/u32-is-cased
+ unicase/u32-is-casefolded
+ unicase/u32-is-lowercase
+ unicase/u32-is-titlecase
+ unicase/u32-is-uppercase
+ unicase/u32-tolower
+ unicase/u32-totitle
+ unicase/u32-toupper
+ unicase/u8-casecmp
+ unicase/u8-casecoll
+ unicase/u8-casefold
+ unicase/u8-casexfrm
+ unicase/u8-ct-casefold
+ unicase/u8-ct-tolower
+ unicase/u8-ct-totitle
+ unicase/u8-ct-toupper
+ unicase/u8-is-cased
+ unicase/u8-is-casefolded
+ unicase/u8-is-lowercase
+ unicase/u8-is-titlecase
+ unicase/u8-is-uppercase
+ unicase/u8-tolower
+ unicase/u8-totitle
+ unicase/u8-toupper
+ unicase/ulc-casecmp
+ unicase/ulc-casecoll
+ unicase/ulc-casexfrm
+ uniconv/base
+ uniconv/u16-conv-from-enc
+ uniconv/u16-conv-to-enc
+ uniconv/u16-strconv-from-enc
+ uniconv/u16-strconv-from-locale
+ uniconv/u16-strconv-to-enc
+ uniconv/u16-strconv-to-locale
+ uniconv/u32-conv-from-enc
+ uniconv/u32-conv-to-enc
+ uniconv/u32-strconv-from-enc
+ uniconv/u32-strconv-from-locale
+ uniconv/u32-strconv-to-enc
+ uniconv/u32-strconv-to-locale
+ uniconv/u8-conv-from-enc
+ uniconv/u8-conv-to-enc
+ uniconv/u8-strconv-from-enc
+ uniconv/u8-strconv-from-locale
+ uniconv/u8-strconv-to-enc
+ uniconv/u8-strconv-to-locale
+ unictype/base
+ unictype/bidicategory-all
+ unictype/block-all
+ unictype/category-all
+ unictype/combining-class
+ unictype/ctype-alnum
+ unictype/ctype-alpha
+ unictype/ctype-blank
+ unictype/ctype-cntrl
+ unictype/ctype-digit
+ unictype/ctype-graph
+ unictype/ctype-lower
+ unictype/ctype-print
+ unictype/ctype-punct
+ unictype/ctype-space
+ unictype/ctype-upper
+ unictype/ctype-xdigit
+ unictype/decimal-digit
+ unictype/digit
+ unictype/mirror
+ unictype/numeric
+ unictype/property-all
+ unictype/scripts-all
+ unictype/syntax-c-ident
+ unictype/syntax-c-whitespace
+ unictype/syntax-java-ident
+ unictype/syntax-java-whitespace
+ unilbrk/base
+ unilbrk/tables
+ unilbrk/u16-possible-linebreaks
+ unilbrk/u16-width-linebreaks
+ unilbrk/u32-possible-linebreaks
+ unilbrk/u32-width-linebreaks
+ unilbrk/u8-possible-linebreaks
+ unilbrk/u8-width-linebreaks
+ unilbrk/ulc-possible-linebreaks
+ unilbrk/ulc-width-linebreaks
+ uniname/base
+ uniname/uniname
+ uninorm/base
+ uninorm/canonical-decomposition
+ uninorm/compat-decomposition
+ uninorm/composition
+ uninorm/decomposition
+ uninorm/filter
+ uninorm/nfc
+ uninorm/nfd
+ uninorm/nfkc
+ uninorm/nfkd
+ uninorm/u16-normalize
+ uninorm/u16-normcmp
+ uninorm/u16-normcoll
+ uninorm/u16-normxfrm
+ uninorm/u32-normalize
+ uninorm/u32-normcmp
+ uninorm/u32-normcoll
+ uninorm/u32-normxfrm
+ uninorm/u8-normalize
+ uninorm/u8-normcmp
+ uninorm/u8-normcoll
+ uninorm/u8-normxfrm
+ unistdio/base
+ unistdio/u16-asnprintf
+ unistdio/u16-asprintf
+ unistdio/u16-snprintf
+ unistdio/u16-sprintf
+ unistdio/u16-u16-asnprintf
+ unistdio/u16-u16-asprintf
+ unistdio/u16-u16-snprintf
+ unistdio/u16-u16-sprintf
+ unistdio/u16-u16-vasnprintf
+ unistdio/u16-u16-vasprintf
+ unistdio/u16-u16-vsnprintf
+ unistdio/u16-u16-vsprintf
+ unistdio/u16-vasnprintf
+ unistdio/u16-vasprintf
+ unistdio/u16-vsnprintf
+ unistdio/u16-vsprintf
+ unistdio/u32-asnprintf
+ unistdio/u32-asprintf
+ unistdio/u32-snprintf
+ unistdio/u32-sprintf
+ unistdio/u32-u32-asnprintf
+ unistdio/u32-u32-asprintf
+ unistdio/u32-u32-snprintf
+ unistdio/u32-u32-sprintf
+ unistdio/u32-u32-vasnprintf
+ unistdio/u32-u32-vasprintf
+ unistdio/u32-u32-vsnprintf
+ unistdio/u32-u32-vsprintf
+ unistdio/u32-vasnprintf
+ unistdio/u32-vasprintf
+ unistdio/u32-vsnprintf
+ unistdio/u32-vsprintf
+ unistdio/u8-asnprintf
+ unistdio/u8-asprintf
+ unistdio/u8-snprintf
+ unistdio/u8-sprintf
+ unistdio/u8-u8-asnprintf
+ unistdio/u8-u8-asprintf
+ unistdio/u8-u8-snprintf
+ unistdio/u8-u8-sprintf
+ unistdio/u8-u8-vasnprintf
+ unistdio/u8-u8-vasprintf
+ unistdio/u8-u8-vsnprintf
+ unistdio/u8-u8-vsprintf
+ unistdio/u8-vasnprintf
+ unistdio/u8-vasprintf
+ unistdio/u8-vsnprintf
+ unistdio/u8-vsprintf
+ unistdio/ulc-asnprintf
+ unistdio/ulc-asprintf
+ unistdio/ulc-fprintf
+ unistdio/ulc-snprintf
+ unistdio/ulc-sprintf
+ unistdio/ulc-vasnprintf
+ unistdio/ulc-vasprintf
+ unistdio/ulc-vfprintf
+ unistdio/ulc-vsnprintf
+ unistdio/ulc-vsprintf
+ unistr/base
+ unistr/u16-check
+ unistr/u16-chr
+ unistr/u16-cmp
+ unistr/u16-cmp2
+ unistr/u16-cpy
+ unistr/u16-cpy-alloc
+ unistr/u16-endswith
+ unistr/u16-mblen
+ unistr/u16-mbsnlen
+ unistr/u16-mbtouc
+ unistr/u16-mbtouc-unsafe
+ unistr/u16-mbtoucr
+ unistr/u16-move
+ unistr/u16-next
+ unistr/u16-prev
+ unistr/u16-set
+ unistr/u16-startswith
+ unistr/u16-stpcpy
+ unistr/u16-stpncpy
+ unistr/u16-strcat
+ unistr/u16-strchr
+ unistr/u16-strcmp
+ unistr/u16-strcoll
+ unistr/u16-strcpy
+ unistr/u16-strcspn
+ unistr/u16-strdup
+ unistr/u16-strlen
+ unistr/u16-strmblen
+ unistr/u16-strmbtouc
+ unistr/u16-strncat
+ unistr/u16-strncmp
+ unistr/u16-strncpy
+ unistr/u16-strnlen
+ unistr/u16-strpbrk
+ unistr/u16-strrchr
+ unistr/u16-strspn
+ unistr/u16-strstr
+ unistr/u16-strtok
+ unistr/u16-to-u32
+ unistr/u16-to-u8
+ unistr/u16-uctomb
+ unistr/u32-check
+ unistr/u32-chr
+ unistr/u32-cmp
+ unistr/u32-cmp2
+ unistr/u32-cpy
+ unistr/u32-cpy-alloc
+ unistr/u32-endswith
+ unistr/u32-mblen
+ unistr/u32-mbsnlen
+ unistr/u32-mbtouc
+ unistr/u32-mbtouc-unsafe
+ unistr/u32-mbtoucr
+ unistr/u32-move
+ unistr/u32-next
+ unistr/u32-prev
+ unistr/u32-set
+ unistr/u32-startswith
+ unistr/u32-stpcpy
+ unistr/u32-stpncpy
+ unistr/u32-strcat
+ unistr/u32-strchr
+ unistr/u32-strcmp
+ unistr/u32-strcoll
+ unistr/u32-strcpy
+ unistr/u32-strcspn
+ unistr/u32-strdup
+ unistr/u32-strlen
+ unistr/u32-strmblen
+ unistr/u32-strmbtouc
+ unistr/u32-strncat
+ unistr/u32-strncmp
+ unistr/u32-strncpy
+ unistr/u32-strnlen
+ unistr/u32-strpbrk
+ unistr/u32-strrchr
+ unistr/u32-strspn
+ unistr/u32-strstr
+ unistr/u32-strtok
+ unistr/u32-to-u16
+ unistr/u32-to-u8
+ unistr/u32-uctomb
+ unistr/u8-check
+ unistr/u8-chr
+ unistr/u8-cmp
+ unistr/u8-cmp2
+ unistr/u8-cpy
+ unistr/u8-cpy-alloc
+ unistr/u8-endswith
+ unistr/u8-mblen
+ unistr/u8-mbsnlen
+ unistr/u8-mbtouc
+ unistr/u8-mbtouc-unsafe
+ unistr/u8-mbtoucr
+ unistr/u8-move
+ unistr/u8-next
+ unistr/u8-prev
+ unistr/u8-set
+ unistr/u8-startswith
+ unistr/u8-stpcpy
+ unistr/u8-stpncpy
+ unistr/u8-strcat
+ unistr/u8-strchr
+ unistr/u8-strcmp
+ unistr/u8-strcoll
+ unistr/u8-strcpy
+ unistr/u8-strcspn
+ unistr/u8-strdup
+ unistr/u8-strlen
+ unistr/u8-strmblen
+ unistr/u8-strmbtouc
+ unistr/u8-strncat
+ unistr/u8-strncmp
+ unistr/u8-strncpy
+ unistr/u8-strnlen
+ unistr/u8-strpbrk
+ unistr/u8-strrchr
+ unistr/u8-strspn
+ unistr/u8-strstr
+ unistr/u8-strtok
+ unistr/u8-to-u16
+ unistr/u8-to-u32
+ unistr/u8-uctomb
+ unitypes
+ uniwbrk/base
+ uniwbrk/u16-wordbreaks
+ uniwbrk/u32-wordbreaks
+ uniwbrk/u8-wordbreaks
+ uniwbrk/ulc-wordbreaks
+ uniwbrk/wordbreak-property
+ uniwidth/base
+ uniwidth/u16-strwidth
+ uniwidth/u16-width
+ uniwidth/u32-strwidth
+ uniwidth/u32-width
+ uniwidth/u8-strwidth
+ uniwidth/u8-width
+ uniwidth/width
+])
+gl_AVOID([])
+gl_SOURCE_BASE([lib])
+gl_M4_BASE([gnulib-m4])
+gl_PO_BASE([])
+gl_DOC_BASE([doc])
+gl_TESTS_BASE([tests])
+gl_WITH_TESTS
+gl_LIB([libunistring])
+gl_LGPL
+gl_MAKEFILE_NAME([Makefile.gnulib])
+gl_LIBTOOL
+gl_MACRO_PREFIX([gl])
+gl_PO_DOMAIN([])
diff --git a/gnulib-m4/gnulib-common.m4 b/gnulib-m4/gnulib-common.m4
new file mode 100644
index 00000000..c8fda203
--- /dev/null
+++ b/gnulib-m4/gnulib-common.m4
@@ -0,0 +1,124 @@
+# gnulib-common.m4 serial 11
+dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# gl_COMMON
+# is expanded unconditionally through gnulib-tool magic.
+AC_DEFUN([gl_COMMON], [
+ dnl Use AC_REQUIRE here, so that the code is expanded once only.
+ AC_REQUIRE([gl_00GNULIB])
+ AC_REQUIRE([gl_COMMON_BODY])
+])
+AC_DEFUN([gl_COMMON_BODY], [
+ AH_VERBATIM([isoc99_inline],
+[/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
+ the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
+ earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
+ __APPLE__ && __MACH__ test for MacOS X.
+ __APPLE_CC__ tests for the Apple compiler and its version.
+ __STDC_VERSION__ tests for the C99 mode. */
+#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
+# define __GNUC_STDC_INLINE__ 1
+#endif])
+ AH_VERBATIM([unused_parameter],
+[/* Define as a marker that can be attached to function parameter declarations
+ for parameters that are not used. This helps to reduce warnings, such as
+ from GCC -Wunused-parameter. */
+#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _UNUSED_PARAMETER_ __attribute__ ((__unused__))
+#else
+# define _UNUSED_PARAMETER_
+#endif
+])
+])
+
+# gl_MODULE_INDICATOR([modulename])
+# defines a C macro indicating the presence of the given module.
+AC_DEFUN([gl_MODULE_INDICATOR],
+[
+ AC_DEFINE([GNULIB_]translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1],
+ [Define to 1 when using the gnulib module ]$1[.])
+])
+
+# m4_foreach_w
+# is a backport of autoconf-2.59c's m4_foreach_w.
+# Remove this macro when we can assume autoconf >= 2.60.
+m4_ifndef([m4_foreach_w],
+ [m4_define([m4_foreach_w],
+ [m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])])
+
+# AC_PROG_MKDIR_P
+# is a backport of autoconf-2.60's AC_PROG_MKDIR_P.
+# Remove this macro when we can assume autoconf >= 2.60.
+m4_ifdef([AC_PROG_MKDIR_P], [], [
+ AC_DEFUN_ONCE([AC_PROG_MKDIR_P],
+ [AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+ MKDIR_P='$(mkdir_p)'
+ AC_SUBST([MKDIR_P])])])
+
+# AC_C_RESTRICT
+# This definition overrides the AC_C_RESTRICT macro from autoconf 2.60..2.61,
+# so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++
+# works.
+# This definition can be removed once autoconf >= 2.62 can be assumed.
+AC_DEFUN([AC_C_RESTRICT],
+[AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict],
+ [ac_cv_c_restrict=no
+ # The order here caters to the fact that C++ does not require restrict.
+ for ac_kw in __restrict __restrict__ _Restrict restrict; do
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+ [[typedef int * int_ptr;
+ int foo (int_ptr $ac_kw ip) {
+ return ip[0];
+ }]],
+ [[int s[1];
+ int * $ac_kw t = s;
+ t[0] = 0;
+ return foo(t)]])],
+ [ac_cv_c_restrict=$ac_kw])
+ test "$ac_cv_c_restrict" != no && break
+ done
+ ])
+ AH_VERBATIM([restrict],
+[/* Define to the equivalent of the C99 'restrict' keyword, or to
+ nothing if this is not supported. Do not define if restrict is
+ supported directly. */
+#undef restrict
+/* Work around a bug in Sun C++: it does not support _Restrict, even
+ though the corresponding Sun C compiler does, which causes
+ "#define restrict _Restrict" in the previous line. Perhaps some future
+ version of Sun C++ will work with _Restrict; if so, it'll probably
+ define __RESTRICT, just as Sun C does. */
+#if defined __SUNPRO_CC && !defined __RESTRICT
+# define _Restrict
+#endif])
+ case $ac_cv_c_restrict in
+ restrict) ;;
+ no) AC_DEFINE([restrict], []) ;;
+ *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;;
+ esac
+])
+
+# gl_BIGENDIAN
+# is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd.
+# Note that AC_REQUIRE([AC_C_BIGENDIAN]) does not work reliably because some
+# macros invoke AC_C_BIGENDIAN with arguments.
+AC_DEFUN([gl_BIGENDIAN],
+[
+ AC_C_BIGENDIAN
+])
+
+# gl_CACHE_VAL_SILENT(cache-id, command-to-set-it)
+# is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not
+# output a spurious "(cached)" mark in the midst of other configure output.
+# This macro should be used instead of AC_CACHE_VAL when it is not surrounded
+# by an AC_MSG_CHECKING/AC_MSG_RESULT pair.
+AC_DEFUN([gl_CACHE_VAL_SILENT],
+[
+ saved_as_echo_n="$as_echo_n"
+ as_echo_n=':'
+ AC_CACHE_VAL([$1], [$2])
+ as_echo_n="$saved_as_echo_n"
+])
diff --git a/gnulib-m4/gnulib-comp.m4 b/gnulib-m4/gnulib-comp.m4
new file mode 100644
index 00000000..efa88e95
--- /dev/null
+++ b/gnulib-m4/gnulib-comp.m4
@@ -0,0 +1,1602 @@
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License. As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+#
+# This file represents the compiled summary of the specification in
+# gnulib-cache.m4. It lists the computed macro invocations that need
+# to be invoked from configure.ac.
+# In projects using CVS, this file can be treated like other built files.
+
+
+# This macro should be invoked from ./configure.ac, in the section
+# "Checks for programs", right after AC_PROG_CC, and certainly before
+# any checks for libraries, header files, types and library functions.
+AC_DEFUN([gl_EARLY],
+[
+ m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace
+ m4_pattern_allow([^gl_ES$])dnl a valid locale name
+ m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
+ m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable
+ AC_REQUIRE([AC_PROG_RANLIB])
+ AC_REQUIRE([AM_PROG_CC_C_O])
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_REQUIRE([gl_FP_IEEE])
+])
+
+# This macro should be invoked from ./configure.ac, in the section
+# "Check for header files, types and library functions".
+AC_DEFUN([gl_INIT],
+[
+ AM_CONDITIONAL([GL_COND_LIBTOOL], [true])
+ gl_cond_libtool=true
+ m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ]))
+ m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS]))
+ m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES]))
+ m4_pushdef([gl_LIBSOURCES_LIST], [])
+ m4_pushdef([gl_LIBSOURCES_DIR], [])
+ gl_COMMON
+ gl_source_base='lib'
+ gl_FUNC_ALLOCA
+ gl_HEADER_ERRNO_H
+ gl_FLOAT_H
+ gl_FUNC_FREXPL_NO_LIBM
+ gl_MATH_MODULE_INDICATOR([frexpl])
+ gl_FUNC_GETPAGESIZE
+ gl_UNISTD_MODULE_INDICATOR([getpagesize])
+ AM_ICONV
+ gl_ICONV_H
+ gl_FUNC_ICONV_OPEN
+ gl_INLINE
+ gl_FUNC_ISNAND_NO_LIBM
+ gl_FUNC_ISNANF_NO_LIBM
+ gl_FUNC_ISNANL_NO_LIBM
+ gl_LOCALCHARSET
+ LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(top_builddir)/$gl_source_base\""
+ AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT])
+ gl_LOCALENAME
+ gl_FUNC_MALLOC_POSIX
+ gl_STDLIB_MODULE_INDICATOR([malloc-posix])
+ gl_MALLOCA
+ gl_MATH_H
+ gl_MBCHAR
+ gl_MBITER
+ gl_FUNC_MBRTOWC
+ gl_WCHAR_MODULE_INDICATOR([mbrtowc])
+ gl_FUNC_MBSINIT
+ gl_WCHAR_MODULE_INDICATOR([mbsinit])
+ gl_STRING_MODULE_INDICATOR([mbsnlen])
+ gl_FUNC_MEMCHR
+ gl_STRING_MODULE_INDICATOR([memchr])
+ gl_MINMAX
+ gl_MULTIARCH
+ gl_FUNC_PRINTF_FREXP
+ gl_FUNC_PRINTF_FREXPL
+ m4_divert_text([INIT_PREPARE], [gl_printf_safe=yes])
+ gl_RELOCATABLE_LIBRARY
+ gl_SIGNBIT
+ gl_MATH_MODULE_INDICATOR([signbit])
+ gl_SIZE_MAX
+ AM_STDBOOL_H
+ gl_STDINT_H
+ gl_STDLIB_H
+ if test $gl_cond_libtool = false; then
+ gl_ltlibdeps="$gl_ltlibdeps $LTLIBICONV"
+ gl_libdeps="$gl_libdeps $LIBICONV"
+ fi
+ gl_HEADER_STRING_H
+ AC_REQUIRE([gl_BIGENDIAN])
+ AC_REQUIRE([gl_BIGENDIAN])
+ AC_REQUIRE([gl_BIGENDIAN])
+ AC_REQUIRE([AC_C_INLINE])
+ AC_REQUIRE([AC_C_INLINE])
+ gl_MODULE_INDICATOR([uninorm/u16-normalize])
+ gl_MODULE_INDICATOR([uninorm/u32-normalize])
+ gl_MODULE_INDICATOR([uninorm/u8-normalize])
+ gl_UNISTD_H
+ gl_PREREQ_PRINTF_ARGS
+ gl_PREREQ_PRINTF_PARSE
+ gl_PREREQ_VASNPRINTF_WITH_EXTRAS
+ gl_PREREQ_VASNPRINTF_WITH_EXTRAS
+ gl_PREREQ_PRINTF_PARSE
+ gl_PREREQ_VASNPRINTF_WITH_EXTRAS
+ gl_PREREQ_VASNPRINTF_WITH_EXTRAS
+ gl_PREREQ_PRINTF_PARSE
+ gl_PREREQ_VASNPRINTF_WITH_EXTRAS
+ gl_PREREQ_VASNPRINTF_WITH_EXTRAS
+ gl_PREREQ_PRINTF_PARSE
+ gl_PREREQ_VASNPRINTF_WITH_EXTRAS
+ gl_MODULE_INDICATOR([unistr/u16-mbtouc])
+ gl_MODULE_INDICATOR([unistr/u16-mbtouc-unsafe])
+ gl_MODULE_INDICATOR([unistr/u16-mbtoucr])
+ gl_MODULE_INDICATOR([unistr/u16-uctomb])
+ gl_MODULE_INDICATOR([unistr/u32-mbtouc])
+ gl_MODULE_INDICATOR([unistr/u32-mbtouc-unsafe])
+ gl_MODULE_INDICATOR([unistr/u32-mbtoucr])
+ gl_MODULE_INDICATOR([unistr/u32-uctomb])
+ gl_MODULE_INDICATOR([unistr/u8-mbtouc])
+ gl_MODULE_INDICATOR([unistr/u8-mbtouc-unsafe])
+ gl_MODULE_INDICATOR([unistr/u8-mbtoucr])
+ AC_CHECK_FUNCS_ONCE([stpcpy])
+ AC_CHECK_FUNCS_ONCE([strdup])
+ gl_MODULE_INDICATOR([unistr/u8-uctomb])
+ gl_WCHAR_H
+ gl_WCTYPE_H
+ gl_FUNC_WCWIDTH
+ gl_WCHAR_MODULE_INDICATOR([wcwidth])
+ gl_XSIZE
+ m4_ifval(gl_LIBSOURCES_LIST, [
+ m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ ||
+ for gl_file in ]gl_LIBSOURCES_LIST[ ; do
+ if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then
+ echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2
+ exit 1
+ fi
+ done])dnl
+ m4_if(m4_sysval, [0], [],
+ [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
+ ])
+ m4_popdef([gl_LIBSOURCES_DIR])
+ m4_popdef([gl_LIBSOURCES_LIST])
+ m4_popdef([AC_LIBSOURCES])
+ m4_popdef([AC_REPLACE_FUNCS])
+ m4_popdef([AC_LIBOBJ])
+ AC_CONFIG_COMMANDS_PRE([
+ gl_libobjs=
+ gl_ltlibobjs=
+ if test -n "$gl_LIBOBJS"; then
+ # Remove the extension.
+ sed_drop_objext='s/\.o$//;s/\.obj$//'
+ for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+ gl_libobjs="$gl_libobjs $i.$ac_objext"
+ gl_ltlibobjs="$gl_ltlibobjs $i.lo"
+ done
+ fi
+ AC_SUBST([gl_LIBOBJS], [$gl_libobjs])
+ AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs])
+ ])
+ gltests_libdeps=
+ gltests_ltlibdeps=
+ m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ]))
+ m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS]))
+ m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES]))
+ m4_pushdef([gltests_LIBSOURCES_LIST], [])
+ m4_pushdef([gltests_LIBSOURCES_DIR], [])
+ gl_COMMON
+ gl_source_base='tests'
+ gt_LOCALE_FR
+ gt_LOCALE_TR_UTF8
+ gl_ENVIRON
+ gl_UNISTD_MODULE_INDICATOR([environ])
+ gl_ERROR
+ m4_ifdef([AM_XGETTEXT_OPTION],
+ [AM_XGETTEXT_OPTION([--flag=error:3:c-format])
+ AM_XGETTEXT_OPTION([--flag=error_at_line:5:c-format])])
+ gl_EXITFAIL
+ AC_SUBST([LIBINTL])
+ AC_SUBST([LTLIBINTL])
+ gl_DOUBLE_EXPONENT_LOCATION
+ gl_FLOAT_EXPONENT_LOCATION
+ gl_LONG_DOUBLE_EXPONENT_LOCATION
+ gl_LOCALE_H
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_JA
+ gt_LOCALE_ZH_CN
+ gt_LOCALE_FR_UTF8
+ gl_FUNC_SETENV
+ gl_STDLIB_MODULE_INDICATOR([setenv])
+ AC_REQUIRE([gl_FLOAT_EXPONENT_LOCATION])
+ AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION])
+ AC_REQUIRE([gl_LONG_DOUBLE_EXPONENT_LOCATION])
+ gt_TYPE_WCHAR_T
+ gt_TYPE_WINT_T
+ gl_FUNC_STRERROR
+ gl_STRING_MODULE_INDICATOR([strerror])
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_JA
+ gt_LOCALE_TR_UTF8
+ gt_LOCALE_ZH_CN
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ AC_CHECK_DECLS_ONCE([alarm])
+ AC_CHECK_DECLS_ONCE([alarm])
+ AC_CHECK_DECLS_ONCE([alarm])
+ AC_CHECK_DECLS_ONCE([alarm])
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_FR
+ gl_FUNC_UNSETENV
+ gl_STDLIB_MODULE_INDICATOR([unsetenv])
+ gl_FUNC_WCTOB
+ gl_WCHAR_MODULE_INDICATOR([wctob])
+ gl_XALLOC
+ m4_ifval(gltests_LIBSOURCES_LIST, [
+ m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ ||
+ for gl_file in ]gltests_LIBSOURCES_LIST[ ; do
+ if test ! -r ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file ; then
+ echo "missing file ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file" >&2
+ exit 1
+ fi
+ done])dnl
+ m4_if(m4_sysval, [0], [],
+ [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
+ ])
+ m4_popdef([gltests_LIBSOURCES_DIR])
+ m4_popdef([gltests_LIBSOURCES_LIST])
+ m4_popdef([AC_LIBSOURCES])
+ m4_popdef([AC_REPLACE_FUNCS])
+ m4_popdef([AC_LIBOBJ])
+ AC_CONFIG_COMMANDS_PRE([
+ gltests_libobjs=
+ gltests_ltlibobjs=
+ if test -n "$gltests_LIBOBJS"; then
+ # Remove the extension.
+ sed_drop_objext='s/\.o$//;s/\.obj$//'
+ for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+ gltests_libobjs="$gltests_libobjs $i.$ac_objext"
+ gltests_ltlibobjs="$gltests_ltlibobjs $i.lo"
+ done
+ fi
+ AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs])
+ AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs])
+ ])
+ LIBTESTS_LIBDEPS="$gltests_libdeps"
+ AC_SUBST([LIBTESTS_LIBDEPS])
+])
+
+# Like AC_LIBOBJ, except that the module name goes
+# into gl_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gl_LIBOBJ], [
+ AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl
+ gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext"
+])
+
+# Like AC_REPLACE_FUNCS, except that the module name goes
+# into gl_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gl_REPLACE_FUNCS], [
+ m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
+ AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)])
+])
+
+# Like AC_LIBSOURCES, except the directory where the source file is
+# expected is derived from the gnulib-tool parameterization,
+# and alloca is special cased (for the alloca-opt module).
+# We could also entirely rely on EXTRA_lib..._SOURCES.
+AC_DEFUN([gl_LIBSOURCES], [
+ m4_foreach([_gl_NAME], [$1], [
+ m4_if(_gl_NAME, [alloca.c], [], [
+ m4_define([gl_LIBSOURCES_DIR], [lib])
+ m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ])
+ ])
+ ])
+])
+
+# Like AC_LIBOBJ, except that the module name goes
+# into gltests_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gltests_LIBOBJ], [
+ AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl
+ gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext"
+])
+
+# Like AC_REPLACE_FUNCS, except that the module name goes
+# into gltests_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gltests_REPLACE_FUNCS], [
+ m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
+ AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)])
+])
+
+# Like AC_LIBSOURCES, except the directory where the source file is
+# expected is derived from the gnulib-tool parameterization,
+# and alloca is special cased (for the alloca-opt module).
+# We could also entirely rely on EXTRA_lib..._SOURCES.
+AC_DEFUN([gltests_LIBSOURCES], [
+ m4_foreach([_gl_NAME], [$1], [
+ m4_if(_gl_NAME, [alloca.c], [], [
+ m4_define([gltests_LIBSOURCES_DIR], [tests])
+ m4_append([gltests_LIBSOURCES_LIST], _gl_NAME, [ ])
+ ])
+ ])
+])
+
+# This macro records the list of files which have been installed by
+# gnulib-tool and may be removed by future gnulib-tool invocations.
+AC_DEFUN([gl_FILE_LIST], [
+ build-aux/config.rpath
+ build-aux/link-warning.h
+ doc/relocatable.texi
+ lib/alloca.in.h
+ lib/array-mergesort.h
+ lib/c-ctype.c
+ lib/c-ctype.h
+ lib/c-strcase.h
+ lib/c-strcasecmp.c
+ lib/c-strcaseeq.h
+ lib/c-strncasecmp.c
+ lib/config.charset
+ lib/errno.in.h
+ lib/float+.h
+ lib/float.in.h
+ lib/fpucw.h
+ lib/frexp.c
+ lib/frexpl.c
+ lib/fseterr.c
+ lib/fseterr.h
+ lib/getpagesize.c
+ lib/iconv.in.h
+ lib/iconv_open-aix.gperf
+ lib/iconv_open-hpux.gperf
+ lib/iconv_open-irix.gperf
+ lib/iconv_open-osf.gperf
+ lib/iconv_open.c
+ lib/iconveh.h
+ lib/isnan.c
+ lib/isnand-nolibm.h
+ lib/isnand.c
+ lib/isnanf-nolibm.h
+ lib/isnanf.c
+ lib/isnanl-nolibm.h
+ lib/isnanl.c
+ lib/localcharset.c
+ lib/localcharset.h
+ lib/localename.c
+ lib/localename.h
+ lib/malloc.c
+ lib/malloca.c
+ lib/malloca.h
+ lib/malloca.valgrind
+ lib/math.in.h
+ lib/mbchar.c
+ lib/mbchar.h
+ lib/mbiter.h
+ lib/mbrtowc.c
+ lib/mbsinit.c
+ lib/mbsnlen.c
+ lib/memchr.c
+ lib/memchr.valgrind
+ lib/memcmp2.c
+ lib/memcmp2.h
+ lib/memxfrm.c
+ lib/memxfrm.h
+ lib/minmax.h
+ lib/printf-args.c
+ lib/printf-args.h
+ lib/printf-frexp.c
+ lib/printf-frexp.h
+ lib/printf-frexpl.c
+ lib/printf-frexpl.h
+ lib/printf-parse.c
+ lib/printf-parse.h
+ lib/ref-add.sin
+ lib/ref-del.sin
+ lib/relocatable.c
+ lib/relocatable.h
+ lib/signbitd.c
+ lib/signbitf.c
+ lib/signbitl.c
+ lib/size_max.h
+ lib/stdbool.in.h
+ lib/stdint.in.h
+ lib/stdio-impl.h
+ lib/stdlib.in.h
+ lib/streq.h
+ lib/striconveh.c
+ lib/striconveh.h
+ lib/striconveha.c
+ lib/striconveha.h
+ lib/string.in.h
+ lib/unicase.h
+ lib/unicase/cased.c
+ lib/unicase/cased.h
+ lib/unicase/casefold.h
+ lib/unicase/caseprop.h
+ lib/unicase/context.h
+ lib/unicase/empty-prefix-context.c
+ lib/unicase/empty-suffix-context.c
+ lib/unicase/ignorable.c
+ lib/unicase/ignorable.h
+ lib/unicase/invariant.h
+ lib/unicase/locale-language.c
+ lib/unicase/locale-languages.gperf
+ lib/unicase/simple-mapping.h
+ lib/unicase/special-casing-table.gperf
+ lib/unicase/special-casing.c
+ lib/unicase/special-casing.h
+ lib/unicase/tocasefold.c
+ lib/unicase/tocasefold.h
+ lib/unicase/tolower.c
+ lib/unicase/tolower.h
+ lib/unicase/totitle.c
+ lib/unicase/totitle.h
+ lib/unicase/toupper.c
+ lib/unicase/toupper.h
+ lib/unicase/u-casecmp.h
+ lib/unicase/u-casecoll.h
+ lib/unicase/u-casefold.h
+ lib/unicase/u-casemap.h
+ lib/unicase/u-casexfrm.h
+ lib/unicase/u-ct-casefold.h
+ lib/unicase/u-ct-totitle.h
+ lib/unicase/u-is-cased.h
+ lib/unicase/u-is-invariant.h
+ lib/unicase/u-totitle.h
+ lib/unicase/u16-casecmp.c
+ lib/unicase/u16-casecoll.c
+ lib/unicase/u16-casefold.c
+ lib/unicase/u16-casemap.c
+ lib/unicase/u16-casexfrm.c
+ lib/unicase/u16-ct-casefold.c
+ lib/unicase/u16-ct-tolower.c
+ lib/unicase/u16-ct-totitle.c
+ lib/unicase/u16-ct-toupper.c
+ lib/unicase/u16-is-cased.c
+ lib/unicase/u16-is-casefolded.c
+ lib/unicase/u16-is-invariant.c
+ lib/unicase/u16-is-lowercase.c
+ lib/unicase/u16-is-titlecase.c
+ lib/unicase/u16-is-uppercase.c
+ lib/unicase/u16-tolower.c
+ lib/unicase/u16-totitle.c
+ lib/unicase/u16-toupper.c
+ lib/unicase/u32-casecmp.c
+ lib/unicase/u32-casecoll.c
+ lib/unicase/u32-casefold.c
+ lib/unicase/u32-casemap.c
+ lib/unicase/u32-casexfrm.c
+ lib/unicase/u32-ct-casefold.c
+ lib/unicase/u32-ct-tolower.c
+ lib/unicase/u32-ct-totitle.c
+ lib/unicase/u32-ct-toupper.c
+ lib/unicase/u32-is-cased.c
+ lib/unicase/u32-is-casefolded.c
+ lib/unicase/u32-is-invariant.c
+ lib/unicase/u32-is-lowercase.c
+ lib/unicase/u32-is-titlecase.c
+ lib/unicase/u32-is-uppercase.c
+ lib/unicase/u32-tolower.c
+ lib/unicase/u32-totitle.c
+ lib/unicase/u32-toupper.c
+ lib/unicase/u8-casecmp.c
+ lib/unicase/u8-casecoll.c
+ lib/unicase/u8-casefold.c
+ lib/unicase/u8-casemap.c
+ lib/unicase/u8-casexfrm.c
+ lib/unicase/u8-ct-casefold.c
+ lib/unicase/u8-ct-tolower.c
+ lib/unicase/u8-ct-totitle.c
+ lib/unicase/u8-ct-toupper.c
+ lib/unicase/u8-is-cased.c
+ lib/unicase/u8-is-casefolded.c
+ lib/unicase/u8-is-invariant.c
+ lib/unicase/u8-is-lowercase.c
+ lib/unicase/u8-is-titlecase.c
+ lib/unicase/u8-is-uppercase.c
+ lib/unicase/u8-tolower.c
+ lib/unicase/u8-totitle.c
+ lib/unicase/u8-toupper.c
+ lib/unicase/ulc-casecmp.c
+ lib/unicase/ulc-casecoll.c
+ lib/unicase/ulc-casexfrm.c
+ lib/unicase/unicasemap.h
+ lib/uniconv.h
+ lib/uniconv/u-conv-from-enc.h
+ lib/uniconv/u-conv-to-enc.h
+ lib/uniconv/u-strconv-from-enc.h
+ lib/uniconv/u-strconv-to-enc.h
+ lib/uniconv/u16-conv-from-enc.c
+ lib/uniconv/u16-conv-to-enc.c
+ lib/uniconv/u16-strconv-from-enc.c
+ lib/uniconv/u16-strconv-from-locale.c
+ lib/uniconv/u16-strconv-to-enc.c
+ lib/uniconv/u16-strconv-to-locale.c
+ lib/uniconv/u32-conv-from-enc.c
+ lib/uniconv/u32-conv-to-enc.c
+ lib/uniconv/u32-strconv-from-enc.c
+ lib/uniconv/u32-strconv-from-locale.c
+ lib/uniconv/u32-strconv-to-enc.c
+ lib/uniconv/u32-strconv-to-locale.c
+ lib/uniconv/u8-conv-from-enc.c
+ lib/uniconv/u8-conv-to-enc.c
+ lib/uniconv/u8-strconv-from-enc.c
+ lib/uniconv/u8-strconv-from-locale.c
+ lib/uniconv/u8-strconv-to-enc.c
+ lib/uniconv/u8-strconv-to-locale.c
+ lib/unictype.h
+ lib/unictype/bidi_byname.c
+ lib/unictype/bidi_name.c
+ lib/unictype/bidi_of.c
+ lib/unictype/bidi_of.h
+ lib/unictype/bidi_test.c
+ lib/unictype/bitmap.h
+ lib/unictype/block_test.c
+ lib/unictype/blocks.c
+ lib/unictype/blocks.h
+ lib/unictype/categ_C.c
+ lib/unictype/categ_C.h
+ lib/unictype/categ_Cc.c
+ lib/unictype/categ_Cc.h
+ lib/unictype/categ_Cf.c
+ lib/unictype/categ_Cf.h
+ lib/unictype/categ_Cn.c
+ lib/unictype/categ_Cn.h
+ lib/unictype/categ_Co.c
+ lib/unictype/categ_Co.h
+ lib/unictype/categ_Cs.c
+ lib/unictype/categ_Cs.h
+ lib/unictype/categ_L.c
+ lib/unictype/categ_L.h
+ lib/unictype/categ_Ll.c
+ lib/unictype/categ_Ll.h
+ lib/unictype/categ_Lm.c
+ lib/unictype/categ_Lm.h
+ lib/unictype/categ_Lo.c
+ lib/unictype/categ_Lo.h
+ lib/unictype/categ_Lt.c
+ lib/unictype/categ_Lt.h
+ lib/unictype/categ_Lu.c
+ lib/unictype/categ_Lu.h
+ lib/unictype/categ_M.c
+ lib/unictype/categ_M.h
+ lib/unictype/categ_Mc.c
+ lib/unictype/categ_Mc.h
+ lib/unictype/categ_Me.c
+ lib/unictype/categ_Me.h
+ lib/unictype/categ_Mn.c
+ lib/unictype/categ_Mn.h
+ lib/unictype/categ_N.c
+ lib/unictype/categ_N.h
+ lib/unictype/categ_Nd.c
+ lib/unictype/categ_Nd.h
+ lib/unictype/categ_Nl.c
+ lib/unictype/categ_Nl.h
+ lib/unictype/categ_No.c
+ lib/unictype/categ_No.h
+ lib/unictype/categ_P.c
+ lib/unictype/categ_P.h
+ lib/unictype/categ_Pc.c
+ lib/unictype/categ_Pc.h
+ lib/unictype/categ_Pd.c
+ lib/unictype/categ_Pd.h
+ lib/unictype/categ_Pe.c
+ lib/unictype/categ_Pe.h
+ lib/unictype/categ_Pf.c
+ lib/unictype/categ_Pf.h
+ lib/unictype/categ_Pi.c
+ lib/unictype/categ_Pi.h
+ lib/unictype/categ_Po.c
+ lib/unictype/categ_Po.h
+ lib/unictype/categ_Ps.c
+ lib/unictype/categ_Ps.h
+ lib/unictype/categ_S.c
+ lib/unictype/categ_S.h
+ lib/unictype/categ_Sc.c
+ lib/unictype/categ_Sc.h
+ lib/unictype/categ_Sk.c
+ lib/unictype/categ_Sk.h
+ lib/unictype/categ_Sm.c
+ lib/unictype/categ_Sm.h
+ lib/unictype/categ_So.c
+ lib/unictype/categ_So.h
+ lib/unictype/categ_Z.c
+ lib/unictype/categ_Z.h
+ lib/unictype/categ_Zl.c
+ lib/unictype/categ_Zl.h
+ lib/unictype/categ_Zp.c
+ lib/unictype/categ_Zp.h
+ lib/unictype/categ_Zs.c
+ lib/unictype/categ_Zs.h
+ lib/unictype/categ_and.c
+ lib/unictype/categ_and_not.c
+ lib/unictype/categ_byname.c
+ lib/unictype/categ_name.c
+ lib/unictype/categ_none.c
+ lib/unictype/categ_of.c
+ lib/unictype/categ_of.h
+ lib/unictype/categ_or.c
+ lib/unictype/categ_test.c
+ lib/unictype/combining.c
+ lib/unictype/combining.h
+ lib/unictype/ctype_alnum.c
+ lib/unictype/ctype_alnum.h
+ lib/unictype/ctype_alpha.c
+ lib/unictype/ctype_alpha.h
+ lib/unictype/ctype_blank.c
+ lib/unictype/ctype_blank.h
+ lib/unictype/ctype_cntrl.c
+ lib/unictype/ctype_cntrl.h
+ lib/unictype/ctype_digit.c
+ lib/unictype/ctype_digit.h
+ lib/unictype/ctype_graph.c
+ lib/unictype/ctype_graph.h
+ lib/unictype/ctype_lower.c
+ lib/unictype/ctype_lower.h
+ lib/unictype/ctype_print.c
+ lib/unictype/ctype_print.h
+ lib/unictype/ctype_punct.c
+ lib/unictype/ctype_punct.h
+ lib/unictype/ctype_space.c
+ lib/unictype/ctype_space.h
+ lib/unictype/ctype_upper.c
+ lib/unictype/ctype_upper.h
+ lib/unictype/ctype_xdigit.c
+ lib/unictype/ctype_xdigit.h
+ lib/unictype/decdigit.c
+ lib/unictype/decdigit.h
+ lib/unictype/digit.c
+ lib/unictype/digit.h
+ lib/unictype/identsyntaxmap.h
+ lib/unictype/mirror.c
+ lib/unictype/mirror.h
+ lib/unictype/numeric.c
+ lib/unictype/numeric.h
+ lib/unictype/pr_alphabetic.c
+ lib/unictype/pr_alphabetic.h
+ lib/unictype/pr_ascii_hex_digit.c
+ lib/unictype/pr_ascii_hex_digit.h
+ lib/unictype/pr_bidi_arabic_digit.c
+ lib/unictype/pr_bidi_arabic_digit.h
+ lib/unictype/pr_bidi_arabic_right_to_left.c
+ lib/unictype/pr_bidi_arabic_right_to_left.h
+ lib/unictype/pr_bidi_block_separator.c
+ lib/unictype/pr_bidi_block_separator.h
+ lib/unictype/pr_bidi_boundary_neutral.c
+ lib/unictype/pr_bidi_boundary_neutral.h
+ lib/unictype/pr_bidi_common_separator.c
+ lib/unictype/pr_bidi_common_separator.h
+ lib/unictype/pr_bidi_control.c
+ lib/unictype/pr_bidi_control.h
+ lib/unictype/pr_bidi_embedding_or_override.c
+ lib/unictype/pr_bidi_embedding_or_override.h
+ lib/unictype/pr_bidi_eur_num_separator.c
+ lib/unictype/pr_bidi_eur_num_separator.h
+ lib/unictype/pr_bidi_eur_num_terminator.c
+ lib/unictype/pr_bidi_eur_num_terminator.h
+ lib/unictype/pr_bidi_european_digit.c
+ lib/unictype/pr_bidi_european_digit.h
+ lib/unictype/pr_bidi_hebrew_right_to_left.c
+ lib/unictype/pr_bidi_hebrew_right_to_left.h
+ lib/unictype/pr_bidi_left_to_right.c
+ lib/unictype/pr_bidi_left_to_right.h
+ lib/unictype/pr_bidi_non_spacing_mark.c
+ lib/unictype/pr_bidi_non_spacing_mark.h
+ lib/unictype/pr_bidi_other_neutral.c
+ lib/unictype/pr_bidi_other_neutral.h
+ lib/unictype/pr_bidi_pdf.c
+ lib/unictype/pr_bidi_pdf.h
+ lib/unictype/pr_bidi_segment_separator.c
+ lib/unictype/pr_bidi_segment_separator.h
+ lib/unictype/pr_bidi_whitespace.c
+ lib/unictype/pr_bidi_whitespace.h
+ lib/unictype/pr_byname.c
+ lib/unictype/pr_byname.gperf
+ lib/unictype/pr_combining.c
+ lib/unictype/pr_combining.h
+ lib/unictype/pr_composite.c
+ lib/unictype/pr_composite.h
+ lib/unictype/pr_currency_symbol.c
+ lib/unictype/pr_currency_symbol.h
+ lib/unictype/pr_dash.c
+ lib/unictype/pr_dash.h
+ lib/unictype/pr_decimal_digit.c
+ lib/unictype/pr_decimal_digit.h
+ lib/unictype/pr_default_ignorable_code_point.c
+ lib/unictype/pr_default_ignorable_code_point.h
+ lib/unictype/pr_deprecated.c
+ lib/unictype/pr_deprecated.h
+ lib/unictype/pr_diacritic.c
+ lib/unictype/pr_diacritic.h
+ lib/unictype/pr_extender.c
+ lib/unictype/pr_extender.h
+ lib/unictype/pr_format_control.c
+ lib/unictype/pr_format_control.h
+ lib/unictype/pr_grapheme_base.c
+ lib/unictype/pr_grapheme_base.h
+ lib/unictype/pr_grapheme_extend.c
+ lib/unictype/pr_grapheme_extend.h
+ lib/unictype/pr_grapheme_link.c
+ lib/unictype/pr_grapheme_link.h
+ lib/unictype/pr_hex_digit.c
+ lib/unictype/pr_hex_digit.h
+ lib/unictype/pr_hyphen.c
+ lib/unictype/pr_hyphen.h
+ lib/unictype/pr_id_continue.c
+ lib/unictype/pr_id_continue.h
+ lib/unictype/pr_id_start.c
+ lib/unictype/pr_id_start.h
+ lib/unictype/pr_ideographic.c
+ lib/unictype/pr_ideographic.h
+ lib/unictype/pr_ids_binary_operator.c
+ lib/unictype/pr_ids_binary_operator.h
+ lib/unictype/pr_ids_trinary_operator.c
+ lib/unictype/pr_ids_trinary_operator.h
+ lib/unictype/pr_ignorable_control.c
+ lib/unictype/pr_ignorable_control.h
+ lib/unictype/pr_iso_control.c
+ lib/unictype/pr_iso_control.h
+ lib/unictype/pr_join_control.c
+ lib/unictype/pr_join_control.h
+ lib/unictype/pr_left_of_pair.c
+ lib/unictype/pr_left_of_pair.h
+ lib/unictype/pr_line_separator.c
+ lib/unictype/pr_line_separator.h
+ lib/unictype/pr_logical_order_exception.c
+ lib/unictype/pr_logical_order_exception.h
+ lib/unictype/pr_lowercase.c
+ lib/unictype/pr_lowercase.h
+ lib/unictype/pr_math.c
+ lib/unictype/pr_math.h
+ lib/unictype/pr_non_break.c
+ lib/unictype/pr_non_break.h
+ lib/unictype/pr_not_a_character.c
+ lib/unictype/pr_not_a_character.h
+ lib/unictype/pr_numeric.c
+ lib/unictype/pr_numeric.h
+ lib/unictype/pr_other_alphabetic.c
+ lib/unictype/pr_other_alphabetic.h
+ lib/unictype/pr_other_default_ignorable_code_point.c
+ lib/unictype/pr_other_default_ignorable_code_point.h
+ lib/unictype/pr_other_grapheme_extend.c
+ lib/unictype/pr_other_grapheme_extend.h
+ lib/unictype/pr_other_id_continue.c
+ lib/unictype/pr_other_id_continue.h
+ lib/unictype/pr_other_id_start.c
+ lib/unictype/pr_other_id_start.h
+ lib/unictype/pr_other_lowercase.c
+ lib/unictype/pr_other_lowercase.h
+ lib/unictype/pr_other_math.c
+ lib/unictype/pr_other_math.h
+ lib/unictype/pr_other_uppercase.c
+ lib/unictype/pr_other_uppercase.h
+ lib/unictype/pr_paired_punctuation.c
+ lib/unictype/pr_paired_punctuation.h
+ lib/unictype/pr_paragraph_separator.c
+ lib/unictype/pr_paragraph_separator.h
+ lib/unictype/pr_pattern_syntax.c
+ lib/unictype/pr_pattern_syntax.h
+ lib/unictype/pr_pattern_white_space.c
+ lib/unictype/pr_pattern_white_space.h
+ lib/unictype/pr_private_use.c
+ lib/unictype/pr_private_use.h
+ lib/unictype/pr_punctuation.c
+ lib/unictype/pr_punctuation.h
+ lib/unictype/pr_quotation_mark.c
+ lib/unictype/pr_quotation_mark.h
+ lib/unictype/pr_radical.c
+ lib/unictype/pr_radical.h
+ lib/unictype/pr_sentence_terminal.c
+ lib/unictype/pr_sentence_terminal.h
+ lib/unictype/pr_soft_dotted.c
+ lib/unictype/pr_soft_dotted.h
+ lib/unictype/pr_space.c
+ lib/unictype/pr_space.h
+ lib/unictype/pr_terminal_punctuation.c
+ lib/unictype/pr_terminal_punctuation.h
+ lib/unictype/pr_test.c
+ lib/unictype/pr_titlecase.c
+ lib/unictype/pr_titlecase.h
+ lib/unictype/pr_unassigned_code_value.c
+ lib/unictype/pr_unassigned_code_value.h
+ lib/unictype/pr_unified_ideograph.c
+ lib/unictype/pr_unified_ideograph.h
+ lib/unictype/pr_uppercase.c
+ lib/unictype/pr_uppercase.h
+ lib/unictype/pr_variation_selector.c
+ lib/unictype/pr_variation_selector.h
+ lib/unictype/pr_white_space.c
+ lib/unictype/pr_white_space.h
+ lib/unictype/pr_xid_continue.c
+ lib/unictype/pr_xid_continue.h
+ lib/unictype/pr_xid_start.c
+ lib/unictype/pr_xid_start.h
+ lib/unictype/pr_zero_width.c
+ lib/unictype/pr_zero_width.h
+ lib/unictype/scripts.c
+ lib/unictype/scripts.h
+ lib/unictype/scripts_byname.gperf
+ lib/unictype/sy_c_ident.c
+ lib/unictype/sy_c_ident.h
+ lib/unictype/sy_c_whitespace.c
+ lib/unictype/sy_java_ident.c
+ lib/unictype/sy_java_ident.h
+ lib/unictype/sy_java_whitespace.c
+ lib/unilbrk.h
+ lib/unilbrk/lbrkprop1.h
+ lib/unilbrk/lbrkprop2.h
+ lib/unilbrk/lbrktables.c
+ lib/unilbrk/lbrktables.h
+ lib/unilbrk/u16-possible-linebreaks.c
+ lib/unilbrk/u16-width-linebreaks.c
+ lib/unilbrk/u32-possible-linebreaks.c
+ lib/unilbrk/u32-width-linebreaks.c
+ lib/unilbrk/u8-possible-linebreaks.c
+ lib/unilbrk/u8-width-linebreaks.c
+ lib/unilbrk/ulc-common.c
+ lib/unilbrk/ulc-common.h
+ lib/unilbrk/ulc-possible-linebreaks.c
+ lib/unilbrk/ulc-width-linebreaks.c
+ lib/uniname.h
+ lib/uniname/gen-uninames.lisp
+ lib/uniname/uniname.c
+ lib/uniname/uninames.h
+ lib/uninorm.h
+ lib/uninorm/canonical-decomposition.c
+ lib/uninorm/compat-decomposition.c
+ lib/uninorm/composition-table.gperf
+ lib/uninorm/composition.c
+ lib/uninorm/decompose-internal.c
+ lib/uninorm/decompose-internal.h
+ lib/uninorm/decomposing-form.c
+ lib/uninorm/decomposition-table.c
+ lib/uninorm/decomposition-table.h
+ lib/uninorm/decomposition-table1.h
+ lib/uninorm/decomposition-table2.h
+ lib/uninorm/decomposition.c
+ lib/uninorm/nfc.c
+ lib/uninorm/nfd.c
+ lib/uninorm/nfkc.c
+ lib/uninorm/nfkd.c
+ lib/uninorm/normalize-internal.h
+ lib/uninorm/u-normalize-internal.h
+ lib/uninorm/u-normcmp.h
+ lib/uninorm/u-normcoll.h
+ lib/uninorm/u-normxfrm.h
+ lib/uninorm/u16-normalize.c
+ lib/uninorm/u16-normcmp.c
+ lib/uninorm/u16-normcoll.c
+ lib/uninorm/u16-normxfrm.c
+ lib/uninorm/u32-normalize.c
+ lib/uninorm/u32-normcmp.c
+ lib/uninorm/u32-normcoll.c
+ lib/uninorm/u32-normxfrm.c
+ lib/uninorm/u8-normalize.c
+ lib/uninorm/u8-normcmp.c
+ lib/uninorm/u8-normcoll.c
+ lib/uninorm/u8-normxfrm.c
+ lib/uninorm/uninorm-filter.c
+ lib/unistd.in.h
+ lib/unistdio.h
+ lib/unistdio/u-asnprintf.h
+ lib/unistdio/u-asprintf.h
+ lib/unistdio/u-printf-args.c
+ lib/unistdio/u-printf-args.h
+ lib/unistdio/u-printf-parse.h
+ lib/unistdio/u-snprintf.h
+ lib/unistdio/u-sprintf.h
+ lib/unistdio/u-vasprintf.h
+ lib/unistdio/u-vsnprintf.h
+ lib/unistdio/u-vsprintf.h
+ lib/unistdio/u16-asnprintf.c
+ lib/unistdio/u16-asprintf.c
+ lib/unistdio/u16-printf-parse.c
+ lib/unistdio/u16-snprintf.c
+ lib/unistdio/u16-sprintf.c
+ lib/unistdio/u16-u16-asnprintf.c
+ lib/unistdio/u16-u16-asprintf.c
+ lib/unistdio/u16-u16-snprintf.c
+ lib/unistdio/u16-u16-sprintf.c
+ lib/unistdio/u16-u16-vasnprintf.c
+ lib/unistdio/u16-u16-vasprintf.c
+ lib/unistdio/u16-u16-vsnprintf.c
+ lib/unistdio/u16-u16-vsprintf.c
+ lib/unistdio/u16-vasnprintf.c
+ lib/unistdio/u16-vasprintf.c
+ lib/unistdio/u16-vsnprintf.c
+ lib/unistdio/u16-vsprintf.c
+ lib/unistdio/u32-asnprintf.c
+ lib/unistdio/u32-asprintf.c
+ lib/unistdio/u32-printf-parse.c
+ lib/unistdio/u32-snprintf.c
+ lib/unistdio/u32-sprintf.c
+ lib/unistdio/u32-u32-asnprintf.c
+ lib/unistdio/u32-u32-asprintf.c
+ lib/unistdio/u32-u32-snprintf.c
+ lib/unistdio/u32-u32-sprintf.c
+ lib/unistdio/u32-u32-vasnprintf.c
+ lib/unistdio/u32-u32-vasprintf.c
+ lib/unistdio/u32-u32-vsnprintf.c
+ lib/unistdio/u32-u32-vsprintf.c
+ lib/unistdio/u32-vasnprintf.c
+ lib/unistdio/u32-vasprintf.c
+ lib/unistdio/u32-vsnprintf.c
+ lib/unistdio/u32-vsprintf.c
+ lib/unistdio/u8-asnprintf.c
+ lib/unistdio/u8-asprintf.c
+ lib/unistdio/u8-printf-parse.c
+ lib/unistdio/u8-snprintf.c
+ lib/unistdio/u8-sprintf.c
+ lib/unistdio/u8-u8-asnprintf.c
+ lib/unistdio/u8-u8-asprintf.c
+ lib/unistdio/u8-u8-snprintf.c
+ lib/unistdio/u8-u8-sprintf.c
+ lib/unistdio/u8-u8-vasnprintf.c
+ lib/unistdio/u8-u8-vasprintf.c
+ lib/unistdio/u8-u8-vsnprintf.c
+ lib/unistdio/u8-u8-vsprintf.c
+ lib/unistdio/u8-vasnprintf.c
+ lib/unistdio/u8-vasprintf.c
+ lib/unistdio/u8-vsnprintf.c
+ lib/unistdio/u8-vsprintf.c
+ lib/unistdio/ulc-asnprintf.c
+ lib/unistdio/ulc-asprintf.c
+ lib/unistdio/ulc-fprintf.c
+ lib/unistdio/ulc-printf-parse.c
+ lib/unistdio/ulc-snprintf.c
+ lib/unistdio/ulc-sprintf.c
+ lib/unistdio/ulc-vasnprintf.c
+ lib/unistdio/ulc-vasprintf.c
+ lib/unistdio/ulc-vfprintf.c
+ lib/unistdio/ulc-vsnprintf.c
+ lib/unistdio/ulc-vsprintf.c
+ lib/unistr.h
+ lib/unistr/u-cmp2.h
+ lib/unistr/u-cpy-alloc.h
+ lib/unistr/u-cpy.h
+ lib/unistr/u-endswith.h
+ lib/unistr/u-move.h
+ lib/unistr/u-set.h
+ lib/unistr/u-startswith.h
+ lib/unistr/u-stpcpy.h
+ lib/unistr/u-stpncpy.h
+ lib/unistr/u-strcat.h
+ lib/unistr/u-strcoll.h
+ lib/unistr/u-strcpy.h
+ lib/unistr/u-strcspn.h
+ lib/unistr/u-strdup.h
+ lib/unistr/u-strlen.h
+ lib/unistr/u-strncat.h
+ lib/unistr/u-strncpy.h
+ lib/unistr/u-strnlen.h
+ lib/unistr/u-strpbrk.h
+ lib/unistr/u-strspn.h
+ lib/unistr/u-strstr.h
+ lib/unistr/u-strtok.h
+ lib/unistr/u16-check.c
+ lib/unistr/u16-chr.c
+ lib/unistr/u16-cmp.c
+ lib/unistr/u16-cmp2.c
+ lib/unistr/u16-cpy-alloc.c
+ lib/unistr/u16-cpy.c
+ lib/unistr/u16-endswith.c
+ lib/unistr/u16-mblen.c
+ lib/unistr/u16-mbsnlen.c
+ lib/unistr/u16-mbtouc-aux.c
+ lib/unistr/u16-mbtouc-unsafe-aux.c
+ lib/unistr/u16-mbtouc-unsafe.c
+ lib/unistr/u16-mbtouc.c
+ lib/unistr/u16-mbtoucr.c
+ lib/unistr/u16-move.c
+ lib/unistr/u16-next.c
+ lib/unistr/u16-prev.c
+ lib/unistr/u16-set.c
+ lib/unistr/u16-startswith.c
+ lib/unistr/u16-stpcpy.c
+ lib/unistr/u16-stpncpy.c
+ lib/unistr/u16-strcat.c
+ lib/unistr/u16-strchr.c
+ lib/unistr/u16-strcmp.c
+ lib/unistr/u16-strcoll.c
+ lib/unistr/u16-strcpy.c
+ lib/unistr/u16-strcspn.c
+ lib/unistr/u16-strdup.c
+ lib/unistr/u16-strlen.c
+ lib/unistr/u16-strmblen.c
+ lib/unistr/u16-strmbtouc.c
+ lib/unistr/u16-strncat.c
+ lib/unistr/u16-strncmp.c
+ lib/unistr/u16-strncpy.c
+ lib/unistr/u16-strnlen.c
+ lib/unistr/u16-strpbrk.c
+ lib/unistr/u16-strrchr.c
+ lib/unistr/u16-strspn.c
+ lib/unistr/u16-strstr.c
+ lib/unistr/u16-strtok.c
+ lib/unistr/u16-to-u32.c
+ lib/unistr/u16-to-u8.c
+ lib/unistr/u16-uctomb-aux.c
+ lib/unistr/u16-uctomb.c
+ lib/unistr/u32-check.c
+ lib/unistr/u32-chr.c
+ lib/unistr/u32-cmp.c
+ lib/unistr/u32-cmp2.c
+ lib/unistr/u32-cpy-alloc.c
+ lib/unistr/u32-cpy.c
+ lib/unistr/u32-endswith.c
+ lib/unistr/u32-mblen.c
+ lib/unistr/u32-mbsnlen.c
+ lib/unistr/u32-mbtouc-unsafe.c
+ lib/unistr/u32-mbtouc.c
+ lib/unistr/u32-mbtoucr.c
+ lib/unistr/u32-move.c
+ lib/unistr/u32-next.c
+ lib/unistr/u32-prev.c
+ lib/unistr/u32-set.c
+ lib/unistr/u32-startswith.c
+ lib/unistr/u32-stpcpy.c
+ lib/unistr/u32-stpncpy.c
+ lib/unistr/u32-strcat.c
+ lib/unistr/u32-strchr.c
+ lib/unistr/u32-strcmp.c
+ lib/unistr/u32-strcoll.c
+ lib/unistr/u32-strcpy.c
+ lib/unistr/u32-strcspn.c
+ lib/unistr/u32-strdup.c
+ lib/unistr/u32-strlen.c
+ lib/unistr/u32-strmblen.c
+ lib/unistr/u32-strmbtouc.c
+ lib/unistr/u32-strncat.c
+ lib/unistr/u32-strncmp.c
+ lib/unistr/u32-strncpy.c
+ lib/unistr/u32-strnlen.c
+ lib/unistr/u32-strpbrk.c
+ lib/unistr/u32-strrchr.c
+ lib/unistr/u32-strspn.c
+ lib/unistr/u32-strstr.c
+ lib/unistr/u32-strtok.c
+ lib/unistr/u32-to-u16.c
+ lib/unistr/u32-to-u8.c
+ lib/unistr/u32-uctomb.c
+ lib/unistr/u8-check.c
+ lib/unistr/u8-chr.c
+ lib/unistr/u8-cmp.c
+ lib/unistr/u8-cmp2.c
+ lib/unistr/u8-cpy-alloc.c
+ lib/unistr/u8-cpy.c
+ lib/unistr/u8-endswith.c
+ lib/unistr/u8-mblen.c
+ lib/unistr/u8-mbsnlen.c
+ lib/unistr/u8-mbtouc-aux.c
+ lib/unistr/u8-mbtouc-unsafe-aux.c
+ lib/unistr/u8-mbtouc-unsafe.c
+ lib/unistr/u8-mbtouc.c
+ lib/unistr/u8-mbtoucr.c
+ lib/unistr/u8-move.c
+ lib/unistr/u8-next.c
+ lib/unistr/u8-prev.c
+ lib/unistr/u8-set.c
+ lib/unistr/u8-startswith.c
+ lib/unistr/u8-stpcpy.c
+ lib/unistr/u8-stpncpy.c
+ lib/unistr/u8-strcat.c
+ lib/unistr/u8-strchr.c
+ lib/unistr/u8-strcmp.c
+ lib/unistr/u8-strcoll.c
+ lib/unistr/u8-strcpy.c
+ lib/unistr/u8-strcspn.c
+ lib/unistr/u8-strdup.c
+ lib/unistr/u8-strlen.c
+ lib/unistr/u8-strmblen.c
+ lib/unistr/u8-strmbtouc.c
+ lib/unistr/u8-strncat.c
+ lib/unistr/u8-strncmp.c
+ lib/unistr/u8-strncpy.c
+ lib/unistr/u8-strnlen.c
+ lib/unistr/u8-strpbrk.c
+ lib/unistr/u8-strrchr.c
+ lib/unistr/u8-strspn.c
+ lib/unistr/u8-strstr.c
+ lib/unistr/u8-strtok.c
+ lib/unistr/u8-to-u16.c
+ lib/unistr/u8-to-u32.c
+ lib/unistr/u8-uctomb-aux.c
+ lib/unistr/u8-uctomb.c
+ lib/unitypes.h
+ lib/uniwbrk.h
+ lib/uniwbrk/u-wordbreaks.h
+ lib/uniwbrk/u16-wordbreaks.c
+ lib/uniwbrk/u32-wordbreaks.c
+ lib/uniwbrk/u8-wordbreaks.c
+ lib/uniwbrk/ulc-wordbreaks.c
+ lib/uniwbrk/wbrkprop.h
+ lib/uniwbrk/wbrktable.c
+ lib/uniwbrk/wbrktable.h
+ lib/uniwbrk/wordbreak-property.c
+ lib/uniwidth.h
+ lib/uniwidth/cjk.h
+ lib/uniwidth/u16-strwidth.c
+ lib/uniwidth/u16-width.c
+ lib/uniwidth/u32-strwidth.c
+ lib/uniwidth/u32-width.c
+ lib/uniwidth/u8-strwidth.c
+ lib/uniwidth/u8-width.c
+ lib/uniwidth/width.c
+ lib/vasnprintf.c
+ lib/verify.h
+ lib/wchar.in.h
+ lib/wctype.in.h
+ lib/wcwidth.c
+ lib/xsize.h
+ m4/00gnulib.m4
+ m4/alloca.m4
+ m4/codeset.m4
+ m4/eealloc.m4
+ m4/environ.m4
+ m4/errno_h.m4
+ m4/error.m4
+ m4/exitfail.m4
+ m4/exponentd.m4
+ m4/exponentf.m4
+ m4/exponentl.m4
+ m4/extensions.m4
+ m4/float_h.m4
+ m4/fpieee.m4
+ m4/frexp.m4
+ m4/frexpl.m4
+ m4/getpagesize.m4
+ m4/glibc21.m4
+ m4/gnulib-common.m4
+ m4/iconv.m4
+ m4/iconv_h.m4
+ m4/iconv_open.m4
+ m4/include_next.m4
+ m4/inline.m4
+ m4/intlmacosx.m4
+ m4/intmax_t.m4
+ m4/inttypes_h.m4
+ m4/isnand.m4
+ m4/isnanf.m4
+ m4/isnanl.m4
+ m4/lcmessage.m4
+ m4/ldexpl.m4
+ m4/lib-ld.m4
+ m4/lib-link.m4
+ m4/lib-prefix.m4
+ m4/localcharset.m4
+ m4/locale-fr.m4
+ m4/locale-ja.m4
+ m4/locale-tr.m4
+ m4/locale-zh.m4
+ m4/locale_h.m4
+ m4/localename.m4
+ m4/longlong.m4
+ m4/malloc.m4
+ m4/malloca.m4
+ m4/math_h.m4
+ m4/mbchar.m4
+ m4/mbiter.m4
+ m4/mbrtowc.m4
+ m4/mbsinit.m4
+ m4/mbstate_t.m4
+ m4/memchr.m4
+ m4/minmax.m4
+ m4/mmap-anon.m4
+ m4/multiarch.m4
+ m4/nocrash.m4
+ m4/printf-frexp.m4
+ m4/printf-frexpl.m4
+ m4/printf.m4
+ m4/relocatable-lib.m4
+ m4/setenv.m4
+ m4/signbit.m4
+ m4/size_max.m4
+ m4/stdbool.m4
+ m4/stdint.m4
+ m4/stdint_h.m4
+ m4/stdlib_h.m4
+ m4/strerror.m4
+ m4/string_h.m4
+ m4/unistd_h.m4
+ m4/vasnprintf.m4
+ m4/wchar.m4
+ m4/wchar_t.m4
+ m4/wctob.m4
+ m4/wctype.m4
+ m4/wcwidth.m4
+ m4/wint_t.m4
+ m4/xalloc.m4
+ m4/xsize.m4
+ tests/nan.h
+ tests/test-alloca-opt.c
+ tests/test-array-mergesort.c
+ tests/test-c-ctype.c
+ tests/test-c-strcase.sh
+ tests/test-c-strcasecmp.c
+ tests/test-c-strncasecmp.c
+ tests/test-environ.c
+ tests/test-errno.c
+ tests/test-frexpl.c
+ tests/test-fseterr.c
+ tests/test-iconv.c
+ tests/test-isnand-nolibm.c
+ tests/test-isnand.h
+ tests/test-isnanf-nolibm.c
+ tests/test-isnanf.h
+ tests/test-isnanl-nolibm.c
+ tests/test-isnanl.h
+ tests/test-locale.c
+ tests/test-localename.c
+ tests/test-malloca.c
+ tests/test-math.c
+ tests/test-mbrtowc.c
+ tests/test-mbrtowc1.sh
+ tests/test-mbrtowc2.sh
+ tests/test-mbrtowc3.sh
+ tests/test-mbrtowc4.sh
+ tests/test-mbsinit.c
+ tests/test-mbsinit.sh
+ tests/test-memchr.c
+ tests/test-printf-frexp.c
+ tests/test-printf-frexpl.c
+ tests/test-signbit.c
+ tests/test-stdbool.c
+ tests/test-stdint.c
+ tests/test-stdlib.c
+ tests/test-strerror.c
+ tests/test-striconveh.c
+ tests/test-striconveha.c
+ tests/test-string.c
+ tests/test-unistd.c
+ tests/test-wchar.c
+ tests/test-wctype.c
+ tests/test-wcwidth.c
+ tests/unicase/test-casecmp.h
+ tests/unicase/test-cased.c
+ tests/unicase/test-ignorable.c
+ tests/unicase/test-is-cased.h
+ tests/unicase/test-is-casefolded.h
+ tests/unicase/test-is-lowercase.h
+ tests/unicase/test-is-titlecase.h
+ tests/unicase/test-is-uppercase.h
+ tests/unicase/test-locale-language.c
+ tests/unicase/test-locale-language.sh
+ tests/unicase/test-mapping-part1.h
+ tests/unicase/test-mapping-part2.h
+ tests/unicase/test-predicate-part1.h
+ tests/unicase/test-predicate-part2.h
+ tests/unicase/test-u16-casecmp.c
+ tests/unicase/test-u16-casecoll.c
+ tests/unicase/test-u16-casefold.c
+ tests/unicase/test-u16-is-cased.c
+ tests/unicase/test-u16-is-casefolded.c
+ tests/unicase/test-u16-is-lowercase.c
+ tests/unicase/test-u16-is-titlecase.c
+ tests/unicase/test-u16-is-uppercase.c
+ tests/unicase/test-u16-tolower.c
+ tests/unicase/test-u16-totitle.c
+ tests/unicase/test-u16-toupper.c
+ tests/unicase/test-u32-casecmp.c
+ tests/unicase/test-u32-casecoll.c
+ tests/unicase/test-u32-casefold.c
+ tests/unicase/test-u32-is-cased.c
+ tests/unicase/test-u32-is-casefolded.c
+ tests/unicase/test-u32-is-lowercase.c
+ tests/unicase/test-u32-is-titlecase.c
+ tests/unicase/test-u32-is-uppercase.c
+ tests/unicase/test-u32-tolower.c
+ tests/unicase/test-u32-totitle.c
+ tests/unicase/test-u32-toupper.c
+ tests/unicase/test-u8-casecmp.c
+ tests/unicase/test-u8-casecoll.c
+ tests/unicase/test-u8-casefold.c
+ tests/unicase/test-u8-is-cased.c
+ tests/unicase/test-u8-is-casefolded.c
+ tests/unicase/test-u8-is-lowercase.c
+ tests/unicase/test-u8-is-titlecase.c
+ tests/unicase/test-u8-is-uppercase.c
+ tests/unicase/test-u8-tolower.c
+ tests/unicase/test-u8-totitle.c
+ tests/unicase/test-u8-toupper.c
+ tests/unicase/test-uc_tolower.c
+ tests/unicase/test-uc_totitle.c
+ tests/unicase/test-uc_toupper.c
+ tests/unicase/test-ulc-casecmp.c
+ tests/unicase/test-ulc-casecmp1.sh
+ tests/unicase/test-ulc-casecmp2.sh
+ tests/unicase/test-ulc-casecoll.c
+ tests/unicase/test-ulc-casecoll1.sh
+ tests/unicase/test-ulc-casecoll2.sh
+ tests/uniconv/test-u16-conv-from-enc.c
+ tests/uniconv/test-u16-conv-to-enc.c
+ tests/uniconv/test-u16-strconv-from-enc.c
+ tests/uniconv/test-u16-strconv-to-enc.c
+ tests/uniconv/test-u32-conv-from-enc.c
+ tests/uniconv/test-u32-conv-to-enc.c
+ tests/uniconv/test-u32-strconv-from-enc.c
+ tests/uniconv/test-u32-strconv-to-enc.c
+ tests/uniconv/test-u8-conv-from-enc.c
+ tests/uniconv/test-u8-conv-to-enc.c
+ tests/uniconv/test-u8-strconv-from-enc.c
+ tests/uniconv/test-u8-strconv-to-enc.c
+ tests/unictype/test-bidi_byname.c
+ tests/unictype/test-bidi_name.c
+ tests/unictype/test-bidi_of.c
+ tests/unictype/test-bidi_test.c
+ tests/unictype/test-block_list.c
+ tests/unictype/test-block_of.c
+ tests/unictype/test-block_test.c
+ tests/unictype/test-categ_C.c
+ tests/unictype/test-categ_Cc.c
+ tests/unictype/test-categ_Cf.c
+ tests/unictype/test-categ_Cn.c
+ tests/unictype/test-categ_Co.c
+ tests/unictype/test-categ_Cs.c
+ tests/unictype/test-categ_L.c
+ tests/unictype/test-categ_Ll.c
+ tests/unictype/test-categ_Lm.c
+ tests/unictype/test-categ_Lo.c
+ tests/unictype/test-categ_Lt.c
+ tests/unictype/test-categ_Lu.c
+ tests/unictype/test-categ_M.c
+ tests/unictype/test-categ_Mc.c
+ tests/unictype/test-categ_Me.c
+ tests/unictype/test-categ_Mn.c
+ tests/unictype/test-categ_N.c
+ tests/unictype/test-categ_Nd.c
+ tests/unictype/test-categ_Nl.c
+ tests/unictype/test-categ_No.c
+ tests/unictype/test-categ_P.c
+ tests/unictype/test-categ_Pc.c
+ tests/unictype/test-categ_Pd.c
+ tests/unictype/test-categ_Pe.c
+ tests/unictype/test-categ_Pf.c
+ tests/unictype/test-categ_Pi.c
+ tests/unictype/test-categ_Po.c
+ tests/unictype/test-categ_Ps.c
+ tests/unictype/test-categ_S.c
+ tests/unictype/test-categ_Sc.c
+ tests/unictype/test-categ_Sk.c
+ tests/unictype/test-categ_Sm.c
+ tests/unictype/test-categ_So.c
+ tests/unictype/test-categ_Z.c
+ tests/unictype/test-categ_Zl.c
+ tests/unictype/test-categ_Zp.c
+ tests/unictype/test-categ_Zs.c
+ tests/unictype/test-categ_and.c
+ tests/unictype/test-categ_and_not.c
+ tests/unictype/test-categ_byname.c
+ tests/unictype/test-categ_name.c
+ tests/unictype/test-categ_none.c
+ tests/unictype/test-categ_of.c
+ tests/unictype/test-categ_or.c
+ tests/unictype/test-categ_test_withtable.c
+ tests/unictype/test-combining.c
+ tests/unictype/test-ctype_alnum.c
+ tests/unictype/test-ctype_alpha.c
+ tests/unictype/test-ctype_blank.c
+ tests/unictype/test-ctype_cntrl.c
+ tests/unictype/test-ctype_digit.c
+ tests/unictype/test-ctype_graph.c
+ tests/unictype/test-ctype_lower.c
+ tests/unictype/test-ctype_print.c
+ tests/unictype/test-ctype_punct.c
+ tests/unictype/test-ctype_space.c
+ tests/unictype/test-ctype_upper.c
+ tests/unictype/test-ctype_xdigit.c
+ tests/unictype/test-decdigit.c
+ tests/unictype/test-decdigit.h
+ tests/unictype/test-digit.c
+ tests/unictype/test-digit.h
+ tests/unictype/test-mirror.c
+ tests/unictype/test-numeric.c
+ tests/unictype/test-numeric.h
+ tests/unictype/test-pr_alphabetic.c
+ tests/unictype/test-pr_ascii_hex_digit.c
+ tests/unictype/test-pr_bidi_arabic_digit.c
+ tests/unictype/test-pr_bidi_arabic_right_to_left.c
+ tests/unictype/test-pr_bidi_block_separator.c
+ tests/unictype/test-pr_bidi_boundary_neutral.c
+ tests/unictype/test-pr_bidi_common_separator.c
+ tests/unictype/test-pr_bidi_control.c
+ tests/unictype/test-pr_bidi_embedding_or_override.c
+ tests/unictype/test-pr_bidi_eur_num_separator.c
+ tests/unictype/test-pr_bidi_eur_num_terminator.c
+ tests/unictype/test-pr_bidi_european_digit.c
+ tests/unictype/test-pr_bidi_hebrew_right_to_left.c
+ tests/unictype/test-pr_bidi_left_to_right.c
+ tests/unictype/test-pr_bidi_non_spacing_mark.c
+ tests/unictype/test-pr_bidi_other_neutral.c
+ tests/unictype/test-pr_bidi_pdf.c
+ tests/unictype/test-pr_bidi_segment_separator.c
+ tests/unictype/test-pr_bidi_whitespace.c
+ tests/unictype/test-pr_byname.c
+ tests/unictype/test-pr_combining.c
+ tests/unictype/test-pr_composite.c
+ tests/unictype/test-pr_currency_symbol.c
+ tests/unictype/test-pr_dash.c
+ tests/unictype/test-pr_decimal_digit.c
+ tests/unictype/test-pr_default_ignorable_code_point.c
+ tests/unictype/test-pr_deprecated.c
+ tests/unictype/test-pr_diacritic.c
+ tests/unictype/test-pr_extender.c
+ tests/unictype/test-pr_format_control.c
+ tests/unictype/test-pr_grapheme_base.c
+ tests/unictype/test-pr_grapheme_extend.c
+ tests/unictype/test-pr_grapheme_link.c
+ tests/unictype/test-pr_hex_digit.c
+ tests/unictype/test-pr_hyphen.c
+ tests/unictype/test-pr_id_continue.c
+ tests/unictype/test-pr_id_start.c
+ tests/unictype/test-pr_ideographic.c
+ tests/unictype/test-pr_ids_binary_operator.c
+ tests/unictype/test-pr_ids_trinary_operator.c
+ tests/unictype/test-pr_ignorable_control.c
+ tests/unictype/test-pr_iso_control.c
+ tests/unictype/test-pr_join_control.c
+ tests/unictype/test-pr_left_of_pair.c
+ tests/unictype/test-pr_line_separator.c
+ tests/unictype/test-pr_logical_order_exception.c
+ tests/unictype/test-pr_lowercase.c
+ tests/unictype/test-pr_math.c
+ tests/unictype/test-pr_non_break.c
+ tests/unictype/test-pr_not_a_character.c
+ tests/unictype/test-pr_numeric.c
+ tests/unictype/test-pr_other_alphabetic.c
+ tests/unictype/test-pr_other_default_ignorable_code_point.c
+ tests/unictype/test-pr_other_grapheme_extend.c
+ tests/unictype/test-pr_other_id_continue.c
+ tests/unictype/test-pr_other_id_start.c
+ tests/unictype/test-pr_other_lowercase.c
+ tests/unictype/test-pr_other_math.c
+ tests/unictype/test-pr_other_uppercase.c
+ tests/unictype/test-pr_paired_punctuation.c
+ tests/unictype/test-pr_paragraph_separator.c
+ tests/unictype/test-pr_pattern_syntax.c
+ tests/unictype/test-pr_pattern_white_space.c
+ tests/unictype/test-pr_private_use.c
+ tests/unictype/test-pr_punctuation.c
+ tests/unictype/test-pr_quotation_mark.c
+ tests/unictype/test-pr_radical.c
+ tests/unictype/test-pr_sentence_terminal.c
+ tests/unictype/test-pr_soft_dotted.c
+ tests/unictype/test-pr_space.c
+ tests/unictype/test-pr_terminal_punctuation.c
+ tests/unictype/test-pr_test.c
+ tests/unictype/test-pr_titlecase.c
+ tests/unictype/test-pr_unassigned_code_value.c
+ tests/unictype/test-pr_unified_ideograph.c
+ tests/unictype/test-pr_uppercase.c
+ tests/unictype/test-pr_variation_selector.c
+ tests/unictype/test-pr_white_space.c
+ tests/unictype/test-pr_xid_continue.c
+ tests/unictype/test-pr_xid_start.c
+ tests/unictype/test-pr_zero_width.c
+ tests/unictype/test-predicate-part1.h
+ tests/unictype/test-predicate-part2.h
+ tests/unictype/test-scripts.c
+ tests/unictype/test-sy_c_ident.c
+ tests/unictype/test-sy_c_whitespace.c
+ tests/unictype/test-sy_java_ident.c
+ tests/unictype/test-sy_java_whitespace.c
+ tests/unilbrk/test-u16-possible-linebreaks.c
+ tests/unilbrk/test-u16-width-linebreaks.c
+ tests/unilbrk/test-u32-possible-linebreaks.c
+ tests/unilbrk/test-u32-width-linebreaks.c
+ tests/unilbrk/test-u8-possible-linebreaks.c
+ tests/unilbrk/test-u8-width-linebreaks.c
+ tests/unilbrk/test-ulc-possible-linebreaks.c
+ tests/unilbrk/test-ulc-width-linebreaks.c
+ tests/uniname/UnicodeDataNames.txt
+ tests/uniname/test-uninames.c
+ tests/uniname/test-uninames.sh
+ tests/uninorm/NormalizationTest.txt
+ tests/uninorm/test-canonical-decomposition.c
+ tests/uninorm/test-compat-decomposition.c
+ tests/uninorm/test-composition.c
+ tests/uninorm/test-decomposing-form.c
+ tests/uninorm/test-decomposition.c
+ tests/uninorm/test-nfc.c
+ tests/uninorm/test-nfd.c
+ tests/uninorm/test-nfkc.c
+ tests/uninorm/test-nfkd.c
+ tests/uninorm/test-u16-nfc.c
+ tests/uninorm/test-u16-nfd.c
+ tests/uninorm/test-u16-nfkc.c
+ tests/uninorm/test-u16-nfkd.c
+ tests/uninorm/test-u16-normcmp.c
+ tests/uninorm/test-u16-normcmp.h
+ tests/uninorm/test-u16-normcoll.c
+ tests/uninorm/test-u32-nfc-big.c
+ tests/uninorm/test-u32-nfc-big.sh
+ tests/uninorm/test-u32-nfc.c
+ tests/uninorm/test-u32-nfd-big.c
+ tests/uninorm/test-u32-nfd-big.sh
+ tests/uninorm/test-u32-nfd.c
+ tests/uninorm/test-u32-nfkc-big.c
+ tests/uninorm/test-u32-nfkc-big.sh
+ tests/uninorm/test-u32-nfkc.c
+ tests/uninorm/test-u32-nfkd-big.c
+ tests/uninorm/test-u32-nfkd-big.sh
+ tests/uninorm/test-u32-nfkd.c
+ tests/uninorm/test-u32-normalize-big.c
+ tests/uninorm/test-u32-normalize-big.h
+ tests/uninorm/test-u32-normcmp.c
+ tests/uninorm/test-u32-normcmp.h
+ tests/uninorm/test-u32-normcoll.c
+ tests/uninorm/test-u8-nfc.c
+ tests/uninorm/test-u8-nfd.c
+ tests/uninorm/test-u8-nfkc.c
+ tests/uninorm/test-u8-nfkd.c
+ tests/uninorm/test-u8-normcmp.c
+ tests/uninorm/test-u8-normcmp.h
+ tests/uninorm/test-u8-normcoll.c
+ tests/uninorm/test-uninorm-filter-nfc.c
+ tests/unistdio/test-u16-asnprintf1.c
+ tests/unistdio/test-u16-asnprintf1.h
+ tests/unistdio/test-u16-printf1.h
+ tests/unistdio/test-u16-vasnprintf1.c
+ tests/unistdio/test-u16-vasnprintf2.c
+ tests/unistdio/test-u16-vasnprintf2.sh
+ tests/unistdio/test-u16-vasnprintf3.c
+ tests/unistdio/test-u16-vasnprintf3.sh
+ tests/unistdio/test-u16-vasprintf1.c
+ tests/unistdio/test-u16-vsnprintf1.c
+ tests/unistdio/test-u16-vsprintf1.c
+ tests/unistdio/test-u32-asnprintf1.c
+ tests/unistdio/test-u32-asnprintf1.h
+ tests/unistdio/test-u32-printf1.h
+ tests/unistdio/test-u32-vasnprintf1.c
+ tests/unistdio/test-u32-vasnprintf2.c
+ tests/unistdio/test-u32-vasnprintf2.sh
+ tests/unistdio/test-u32-vasnprintf3.c
+ tests/unistdio/test-u32-vasnprintf3.sh
+ tests/unistdio/test-u32-vasprintf1.c
+ tests/unistdio/test-u32-vsnprintf1.c
+ tests/unistdio/test-u32-vsprintf1.c
+ tests/unistdio/test-u8-asnprintf1.c
+ tests/unistdio/test-u8-asnprintf1.h
+ tests/unistdio/test-u8-printf1.h
+ tests/unistdio/test-u8-vasnprintf1.c
+ tests/unistdio/test-u8-vasnprintf2.c
+ tests/unistdio/test-u8-vasnprintf2.sh
+ tests/unistdio/test-u8-vasnprintf3.c
+ tests/unistdio/test-u8-vasnprintf3.sh
+ tests/unistdio/test-u8-vasprintf1.c
+ tests/unistdio/test-u8-vsnprintf1.c
+ tests/unistdio/test-u8-vsprintf1.c
+ tests/unistdio/test-ulc-asnprintf1.c
+ tests/unistdio/test-ulc-asnprintf1.h
+ tests/unistdio/test-ulc-printf1.h
+ tests/unistdio/test-ulc-vasnprintf1.c
+ tests/unistdio/test-ulc-vasnprintf2.c
+ tests/unistdio/test-ulc-vasnprintf2.sh
+ tests/unistdio/test-ulc-vasnprintf3.c
+ tests/unistdio/test-ulc-vasnprintf3.sh
+ tests/unistdio/test-ulc-vasprintf1.c
+ tests/unistdio/test-ulc-vsnprintf1.c
+ tests/unistdio/test-ulc-vsprintf1.c
+ tests/uniwbrk/test-u16-wordbreaks.c
+ tests/uniwbrk/test-u32-wordbreaks.c
+ tests/uniwbrk/test-u8-wordbreaks.c
+ tests/uniwbrk/test-ulc-wordbreaks.c
+ tests/uniwbrk/test-ulc-wordbreaks.sh
+ tests/uniwidth/test-u16-strwidth.c
+ tests/uniwidth/test-u16-width.c
+ tests/uniwidth/test-u32-strwidth.c
+ tests/uniwidth/test-u32-width.c
+ tests/uniwidth/test-u8-strwidth.c
+ tests/uniwidth/test-u8-width.c
+ tests/uniwidth/test-uc_width.c
+ tests/uniwidth/test-uc_width2.c
+ tests/uniwidth/test-uc_width2.sh
+ tests/zerosize-ptr.h
+ tests=lib/error.c
+ tests=lib/error.h
+ tests=lib/exitfail.c
+ tests=lib/exitfail.h
+ tests=lib/gettext.h
+ tests=lib/intprops.h
+ tests=lib/locale.in.h
+ tests=lib/progname.c
+ tests=lib/progname.h
+ tests=lib/setenv.c
+ tests=lib/strerror.c
+ tests=lib/unsetenv.c
+ tests=lib/wctob.c
+ tests=lib/xalloc-die.c
+ tests=lib/xalloc.h
+ tests=lib/xmalloc.c
+])
diff --git a/gnulib-m4/iconv.m4 b/gnulib-m4/iconv.m4
new file mode 100644
index 00000000..3cc62682
--- /dev/null
+++ b/gnulib-m4/iconv.m4
@@ -0,0 +1,180 @@
+# iconv.m4 serial AM7 (gettext-0.18)
+dnl Copyright (C) 2000-2002, 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
+[
+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+
+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+ dnl accordingly.
+ AC_LIB_LINKFLAGS_BODY([iconv])
+])
+
+AC_DEFUN([AM_ICONV_LINK],
+[
+ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
+ dnl those with the standalone portable GNU libiconv installed).
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+ dnl accordingly.
+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+
+ dnl Add $INCICONV to CPPFLAGS before performing the following checks,
+ dnl because if the user has installed libiconv and not disabled its use
+ dnl via --without-libiconv-prefix, he wants to use it. The first
+ dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
+ am_save_CPPFLAGS="$CPPFLAGS"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
+
+ AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
+ am_cv_func_iconv="no, consider installing GNU libiconv"
+ am_cv_lib_iconv=no
+ AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+ [iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);],
+ [am_cv_func_iconv=yes])
+ if test "$am_cv_func_iconv" != yes; then
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBICONV"
+ AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+ [iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);],
+ [am_cv_lib_iconv=yes]
+ [am_cv_func_iconv=yes])
+ LIBS="$am_save_LIBS"
+ fi
+ ])
+ if test "$am_cv_func_iconv" = yes; then
+ AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
+ dnl This tests against bugs in AIX 5.1 and HP-UX 11.11.
+ am_save_LIBS="$LIBS"
+ if test $am_cv_lib_iconv = yes; then
+ LIBS="$LIBS $LIBICONV"
+ fi
+ AC_TRY_RUN([
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+ /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+ returns. */
+ {
+ iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+ if (cd_utf8_to_88591 != (iconv_t)(-1))
+ {
+ static const char input[] = "\342\202\254"; /* EURO SIGN */
+ char buf[10];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_utf8_to_88591,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res == 0)
+ return 1;
+ }
+ }
+#if 0 /* This bug could be worked around by the caller. */
+ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
+ {
+ iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+ if (cd_88591_to_utf8 != (iconv_t)(-1))
+ {
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ char buf[50];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_88591_to_utf8,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if ((int)res > 0)
+ return 1;
+ }
+ }
+#endif
+ /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+ provided. */
+ if (/* Try standardized names. */
+ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+ /* Try IRIX, OSF/1 names. */
+ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+ /* Try AIX names. */
+ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+ /* Try HP-UX names. */
+ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+ return 1;
+ return 0;
+}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
+ [case "$host_os" in
+ aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+ *) am_cv_func_iconv_works="guessing yes" ;;
+ esac])
+ LIBS="$am_save_LIBS"
+ ])
+ case "$am_cv_func_iconv_works" in
+ *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+ *) am_func_iconv=yes ;;
+ esac
+ else
+ am_func_iconv=no am_cv_lib_iconv=no
+ fi
+ if test "$am_func_iconv" = yes; then
+ AC_DEFINE([HAVE_ICONV], [1],
+ [Define if you have the iconv() function and it works.])
+ fi
+ if test "$am_cv_lib_iconv" = yes; then
+ AC_MSG_CHECKING([how to link with libiconv])
+ AC_MSG_RESULT([$LIBICONV])
+ else
+ dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
+ dnl either.
+ CPPFLAGS="$am_save_CPPFLAGS"
+ LIBICONV=
+ LTLIBICONV=
+ fi
+ AC_SUBST([LIBICONV])
+ AC_SUBST([LTLIBICONV])
+])
+
+AC_DEFUN([AM_ICONV],
+[
+ AM_ICONV_LINK
+ if test "$am_cv_func_iconv" = yes; then
+ AC_MSG_CHECKING([for iconv declaration])
+ AC_CACHE_VAL([am_cv_proto_iconv], [
+ AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"])
+ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
+ am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+ AC_MSG_RESULT([${ac_t:-
+ }$am_cv_proto_iconv])
+ AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
+ [Define as const if the declaration of iconv() needs const.])
+ fi
+])
diff --git a/gnulib-m4/iconv_h.m4 b/gnulib-m4/iconv_h.m4
new file mode 100644
index 00000000..bc05b055
--- /dev/null
+++ b/gnulib-m4/iconv_h.m4
@@ -0,0 +1,34 @@
+# iconv_h.m4 serial 4
+dnl Copyright (C) 2007-2008 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_ICONV_H],
+[
+ AC_REQUIRE([gl_ICONV_H_DEFAULTS])
+ gl_CHECK_NEXT_HEADERS([iconv.h])
+])
+
+dnl Unconditionally enables the replacement of <iconv.h>.
+AC_DEFUN([gl_REPLACE_ICONV_H],
+[
+ AC_REQUIRE([gl_ICONV_H_DEFAULTS])
+ ICONV_H='iconv.h'
+])
+
+AC_DEFUN([gl_ICONV_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_ICONV_H_DEFAULTS])
+ GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_ICONV_H_DEFAULTS],
+[
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ REPLACE_ICONV=0; AC_SUBST([REPLACE_ICONV])
+ REPLACE_ICONV_OPEN=0; AC_SUBST([REPLACE_ICONV_OPEN])
+ REPLACE_ICONV_UTF=0; AC_SUBST([REPLACE_ICONV_UTF])
+ ICONV_H=''; AC_SUBST([ICONV_H])
+])
diff --git a/gnulib-m4/iconv_open.m4 b/gnulib-m4/iconv_open.m4
new file mode 100644
index 00000000..c7b948e9
--- /dev/null
+++ b/gnulib-m4/iconv_open.m4
@@ -0,0 +1,237 @@
+# iconv_open.m4 serial 5
+dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ICONV_OPEN],
+[
+ AC_REQUIRE([AM_ICONV])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([gl_ICONV_H_DEFAULTS])
+ if test "$am_cv_func_iconv" = yes; then
+ dnl Test whether iconv_open accepts standardized encoding names.
+ dnl We know that GNU libiconv and GNU libc do.
+ AC_EGREP_CPP([gnu_iconv], [
+ #include <iconv.h>
+ #if defined _LIBICONV_VERSION || defined __GLIBC__
+ gnu_iconv
+ #endif
+ ], [gl_func_iconv_gnu=yes], [gl_func_iconv_gnu=no])
+ if test $gl_func_iconv_gnu = no; then
+ iconv_flavor=
+ case "$host_os" in
+ aix*) iconv_flavor=ICONV_FLAVOR_AIX ;;
+ irix*) iconv_flavor=ICONV_FLAVOR_IRIX ;;
+ hpux*) iconv_flavor=ICONV_FLAVOR_HPUX ;;
+ osf*) iconv_flavor=ICONV_FLAVOR_OSF ;;
+ esac
+ if test -n "$iconv_flavor"; then
+ AC_DEFINE_UNQUOTED([ICONV_FLAVOR], [$iconv_flavor],
+ [Define to a symbolic name denoting the flavor of iconv_open()
+ implementation.])
+ gl_REPLACE_ICONV_OPEN
+ fi
+ fi
+ fi
+])
+
+AC_DEFUN([gl_REPLACE_ICONV_OPEN],
+[
+ gl_REPLACE_ICONV_H
+ REPLACE_ICONV_OPEN=1
+ AC_LIBOBJ([iconv_open])
+])
+
+AC_DEFUN([gl_FUNC_ICONV_OPEN_UTF],
+[
+ AC_REQUIRE([gl_FUNC_ICONV_OPEN])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_REQUIRE([gl_ICONV_H_DEFAULTS])
+ if test "$am_cv_func_iconv" = yes; then
+ if test -n "$am_cv_proto_iconv_arg1"; then
+ ICONV_CONST="const"
+ else
+ ICONV_CONST=
+ fi
+ AC_SUBST([ICONV_CONST])
+ AC_CACHE_CHECK([whether iconv supports conversion between UTF-8 and UTF-{16,32}{BE,LE}],
+ [gl_cv_func_iconv_supports_utf],
+ [
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBICONV"
+ AC_TRY_RUN([
+#include <iconv.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define ASSERT(expr) if (!(expr)) return 1;
+int main ()
+{
+ /* Test conversion from UTF-8 to UTF-16BE with no errors. */
+ {
+ static const char input[] =
+ "Japanese (\346\227\245\346\234\254\350\252\236) [\360\235\224\215\360\235\224\236\360\235\224\255]";
+ static const char expected[] =
+ "\000J\000a\000p\000a\000n\000e\000s\000e\000 \000(\145\345\147\054\212\236\000)\000 \000[\330\065\335\015\330\065\335\036\330\065\335\055\000]";
+ iconv_t cd;
+ char buf[100];
+ const char *inptr;
+ size_t inbytesleft;
+ char *outptr;
+ size_t outbytesleft;
+ size_t res;
+ cd = iconv_open ("UTF-16BE", "UTF-8");
+ ASSERT (cd != (iconv_t)(-1));
+ inptr = input;
+ inbytesleft = sizeof (input) - 1;
+ outptr = buf;
+ outbytesleft = sizeof (buf);
+ res = iconv (cd,
+ (ICONV_CONST char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ ASSERT (res == 0 && inbytesleft == 0);
+ ASSERT (outptr == buf + (sizeof (expected) - 1));
+ ASSERT (memcmp (buf, expected, sizeof (expected) - 1) == 0);
+ ASSERT (iconv_close (cd) == 0);
+ }
+ /* Test conversion from UTF-8 to UTF-16LE with no errors. */
+ {
+ static const char input[] =
+ "Japanese (\346\227\245\346\234\254\350\252\236) [\360\235\224\215\360\235\224\236\360\235\224\255]";
+ static const char expected[] =
+ "J\000a\000p\000a\000n\000e\000s\000e\000 \000(\000\345\145\054\147\236\212)\000 \000[\000\065\330\015\335\065\330\036\335\065\330\055\335]\000";
+ iconv_t cd;
+ char buf[100];
+ const char *inptr;
+ size_t inbytesleft;
+ char *outptr;
+ size_t outbytesleft;
+ size_t res;
+ cd = iconv_open ("UTF-16LE", "UTF-8");
+ ASSERT (cd != (iconv_t)(-1));
+ inptr = input;
+ inbytesleft = sizeof (input) - 1;
+ outptr = buf;
+ outbytesleft = sizeof (buf);
+ res = iconv (cd,
+ (ICONV_CONST char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ ASSERT (res == 0 && inbytesleft == 0);
+ ASSERT (outptr == buf + (sizeof (expected) - 1));
+ ASSERT (memcmp (buf, expected, sizeof (expected) - 1) == 0);
+ ASSERT (iconv_close (cd) == 0);
+ }
+ /* Test conversion from UTF-8 to UTF-32BE with no errors. */
+ {
+ static const char input[] =
+ "Japanese (\346\227\245\346\234\254\350\252\236) [\360\235\224\215\360\235\224\236\360\235\224\255]";
+ static const char expected[] =
+ "\000\000\000J\000\000\000a\000\000\000p\000\000\000a\000\000\000n\000\000\000e\000\000\000s\000\000\000e\000\000\000 \000\000\000(\000\000\145\345\000\000\147\054\000\000\212\236\000\000\000)\000\000\000 \000\000\000[\000\001\325\015\000\001\325\036\000\001\325\055\000\000\000]";
+ iconv_t cd;
+ char buf[100];
+ const char *inptr;
+ size_t inbytesleft;
+ char *outptr;
+ size_t outbytesleft;
+ size_t res;
+ cd = iconv_open ("UTF-32BE", "UTF-8");
+ ASSERT (cd != (iconv_t)(-1));
+ inptr = input;
+ inbytesleft = sizeof (input) - 1;
+ outptr = buf;
+ outbytesleft = sizeof (buf);
+ res = iconv (cd,
+ (ICONV_CONST char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ ASSERT (res == 0 && inbytesleft == 0);
+ ASSERT (outptr == buf + (sizeof (expected) - 1));
+ ASSERT (memcmp (buf, expected, sizeof (expected) - 1) == 0);
+ ASSERT (iconv_close (cd) == 0);
+ }
+ /* Test conversion from UTF-8 to UTF-32LE with no errors. */
+ {
+ static const char input[] =
+ "Japanese (\346\227\245\346\234\254\350\252\236) [\360\235\224\215\360\235\224\236\360\235\224\255]";
+ static const char expected[] =
+ "J\000\000\000a\000\000\000p\000\000\000a\000\000\000n\000\000\000e\000\000\000s\000\000\000e\000\000\000 \000\000\000(\000\000\000\345\145\000\000\054\147\000\000\236\212\000\000)\000\000\000 \000\000\000[\000\000\000\015\325\001\000\036\325\001\000\055\325\001\000]\000\000\000";
+ iconv_t cd;
+ char buf[100];
+ const char *inptr;
+ size_t inbytesleft;
+ char *outptr;
+ size_t outbytesleft;
+ size_t res;
+ cd = iconv_open ("UTF-32LE", "UTF-8");
+ ASSERT (cd != (iconv_t)(-1));
+ inptr = input;
+ inbytesleft = sizeof (input) - 1;
+ outptr = buf;
+ outbytesleft = sizeof (buf);
+ res = iconv (cd,
+ (ICONV_CONST char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ ASSERT (res == 0 && inbytesleft == 0);
+ ASSERT (outptr == buf + (sizeof (expected) - 1));
+ ASSERT (memcmp (buf, expected, sizeof (expected) - 1) == 0);
+ ASSERT (iconv_close (cd) == 0);
+ }
+ /* Test conversion from UTF-16BE to UTF-8 with no errors.
+ This test fails on NetBSD 3.0. */
+ {
+ static const char input[] =
+ "\000J\000a\000p\000a\000n\000e\000s\000e\000 \000(\145\345\147\054\212\236\000)\000 \000[\330\065\335\015\330\065\335\036\330\065\335\055\000]";
+ static const char expected[] =
+ "Japanese (\346\227\245\346\234\254\350\252\236) [\360\235\224\215\360\235\224\236\360\235\224\255]";
+ iconv_t cd;
+ char buf[100];
+ const char *inptr;
+ size_t inbytesleft;
+ char *outptr;
+ size_t outbytesleft;
+ size_t res;
+ cd = iconv_open ("UTF-8", "UTF-16BE");
+ ASSERT (cd != (iconv_t)(-1));
+ inptr = input;
+ inbytesleft = sizeof (input) - 1;
+ outptr = buf;
+ outbytesleft = sizeof (buf);
+ res = iconv (cd,
+ (ICONV_CONST char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ ASSERT (res == 0 && inbytesleft == 0);
+ ASSERT (outptr == buf + (sizeof (expected) - 1));
+ ASSERT (memcmp (buf, expected, sizeof (expected) - 1) == 0);
+ ASSERT (iconv_close (cd) == 0);
+ }
+ return 0;
+}], [gl_cv_func_iconv_supports_utf=yes], [gl_cv_func_iconv_supports_utf=no],
+ [
+ dnl We know that GNU libiconv, GNU libc, and Solaris >= 9 do.
+ dnl OSF/1 5.1 has these encodings, but inserts a BOM in the "to"
+ dnl direction.
+ gl_cv_func_iconv_supports_utf=no
+ if test $gl_func_iconv_gnu = yes; then
+ gl_cv_func_iconv_supports_utf=yes
+ else
+changequote(,)dnl
+ case "$host_os" in
+ solaris2.9 | solaris2.1[0-9]) gl_cv_func_iconv_supports_utf=yes ;;
+ esac
+changequote([,])dnl
+ fi
+ ])
+ LIBS="$save_LIBS"
+ ])
+ if test $gl_cv_func_iconv_supports_utf = no; then
+ REPLACE_ICONV_UTF=1
+ AC_DEFINE([REPLACE_ICONV_UTF], [1],
+ [Define if the iconv() functions are enhanced to handle the UTF-{16,32}{BE,LE} encodings.])
+ REPLACE_ICONV=1
+ gl_REPLACE_ICONV_OPEN
+ AC_LIBOBJ([iconv])
+ AC_LIBOBJ([iconv_close])
+ fi
+ fi
+])
diff --git a/gnulib-m4/include_next.m4 b/gnulib-m4/include_next.m4
new file mode 100644
index 00000000..5e22ded9
--- /dev/null
+++ b/gnulib-m4/include_next.m4
@@ -0,0 +1,187 @@
+# include_next.m4 serial 14
+dnl Copyright (C) 2006-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert and Derek Price.
+
+dnl Sets INCLUDE_NEXT and PRAGMA_SYSTEM_HEADER.
+dnl
+dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to
+dnl 'include' otherwise.
+dnl
+dnl INCLUDE_NEXT_AS_FIRST_DIRECTIVE expands to 'include_next' if the compiler
+dnl supports it in the special case that it is the first include directive in
+dnl the given file, or to 'include' otherwise.
+dnl
+dnl PRAGMA_SYSTEM_HEADER can be used in files that contain #include_next,
+dnl so as to avoid GCC warnings when the gcc option -pedantic is used.
+dnl '#pragma GCC system_header' has the same effect as if the file was found
+dnl through the include search path specified with '-isystem' options (as
+dnl opposed to the search path specified with '-I' options). Namely, gcc
+dnl does not warn about some things, and on some systems (Solaris and Interix)
+dnl __STDC__ evaluates to 0 instead of to 1. The latter is an undesired side
+dnl effect; we are therefore careful to use 'defined __STDC__' or '1' instead
+dnl of plain '__STDC__'.
+
+AC_DEFUN([gl_INCLUDE_NEXT],
+[
+ AC_LANG_PREPROC_REQUIRE()
+ AC_CACHE_CHECK([whether the preprocessor supports include_next],
+ [gl_cv_have_include_next],
+ [rm -rf conftestd1a conftestd1b conftestd2
+ mkdir conftestd1a conftestd1b conftestd2
+ dnl IBM C 9.0, 10.1 (original versions, prior to the 2009-01 updates) on
+ dnl AIX 6.1 support include_next when used as first preprocessor directive
+ dnl in a file, but not when preceded by another include directive. Check
+ dnl for this bug by including <stdio.h>.
+ dnl Additionally, with this same compiler, include_next is a no-op when
+ dnl used in a header file that was included by specifying its absolute
+ dnl file name. Despite these two bugs, include_next is used in the
+ dnl compiler's <math.h>. By virtue of the second bug, we need to use
+ dnl include_next as well in this case.
+ cat <<EOF > conftestd1a/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+ cat <<EOF > conftestd1b/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include <stdio.h>
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+ cat <<EOF > conftestd2/conftest.h
+#ifndef DEFINED_IN_CONFTESTD1
+#error "include_next test doesn't work"
+#endif
+#define DEFINED_IN_CONFTESTD2
+EOF
+ gl_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2"
+ AC_COMPILE_IFELSE([#include <conftest.h>],
+ [gl_cv_have_include_next=yes],
+ [CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
+ AC_COMPILE_IFELSE([#include <conftest.h>],
+ [gl_cv_have_include_next=buggy],
+ [gl_cv_have_include_next=no])
+ ])
+ CPPFLAGS="$gl_save_CPPFLAGS"
+ rm -rf conftestd1a conftestd1b conftestd2
+ ])
+ PRAGMA_SYSTEM_HEADER=
+ if test $gl_cv_have_include_next = yes; then
+ INCLUDE_NEXT=include_next
+ INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+ if test -n "$GCC"; then
+ PRAGMA_SYSTEM_HEADER='#pragma GCC system_header'
+ fi
+ else
+ if test $gl_cv_have_include_next = buggy; then
+ INCLUDE_NEXT=include
+ INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+ else
+ INCLUDE_NEXT=include
+ INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include
+ fi
+ fi
+ AC_SUBST([INCLUDE_NEXT])
+ AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE])
+ AC_SUBST([PRAGMA_SYSTEM_HEADER])
+])
+
+# gl_CHECK_NEXT_HEADERS(HEADER1 HEADER2 ...)
+# ------------------------------------------
+# For each arg foo.h, if #include_next works, define NEXT_FOO_H to be
+# '<foo.h>'; otherwise define it to be
+# '"///usr/include/foo.h"', or whatever other absolute file name is suitable.
+# Also, if #include_next works as first preprocessing directive in a file,
+# define NEXT_AS_FIRST_DIRECTIVE_FOO_H to be '<foo.h>'; otherwise define it to
+# be
+# '"///usr/include/foo.h"', or whatever other absolute file name is suitable.
+# That way, a header file with the following line:
+# #@INCLUDE_NEXT@ @NEXT_FOO_H@
+# or
+# #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_FOO_H@
+# behaves (after sed substitution) as if it contained
+# #include_next <foo.h>
+# even if the compiler does not support include_next.
+# The three "///" are to pacify Sun C 5.8, which otherwise would say
+# "warning: #include of /usr/include/... may be non-portable".
+# Use `""', not `<>', so that the /// cannot be confused with a C99 comment.
+# Note: This macro assumes that the header file is not empty after
+# preprocessing, i.e. it does not only define preprocessor macros but also
+# provides some type/enum definitions or function/variable declarations.
+AC_DEFUN([gl_CHECK_NEXT_HEADERS],
+[
+ AC_REQUIRE([gl_INCLUDE_NEXT])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_CHECK_HEADERS_ONCE([$1])
+
+ m4_foreach_w([gl_HEADER_NAME], [$1],
+ [AS_VAR_PUSHDEF([gl_next_header],
+ [gl_cv_next_]m4_defn([gl_HEADER_NAME]))
+ if test $gl_cv_have_include_next = yes; then
+ AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>'])
+ else
+ AC_CACHE_CHECK(
+ [absolute name of <]m4_defn([gl_HEADER_NAME])[>],
+ m4_defn([gl_next_header]),
+ [AS_VAR_PUSHDEF([gl_header_exists],
+ [ac_cv_header_]m4_defn([gl_HEADER_NAME]))
+ if test AS_VAR_GET(gl_header_exists) = yes; then
+ AC_LANG_CONFTEST(
+ [AC_LANG_SOURCE(
+ [[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]]
+ )])
+ dnl AIX "xlc -E" and "cc -E" omit #line directives for header files
+ dnl that contain only a #include of other header files and no
+ dnl non-comment tokens of their own. This leads to a failure to
+ dnl detect the absolute name of <dirent.h>, <signal.h>, <poll.h>
+ dnl and others. The workaround is to force preservation of comments
+ dnl through option -C. This ensures all necessary #line directives
+ dnl are present. GCC supports option -C as well.
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+ dnl eval is necessary to expand gl_absname_cpp.
+ dnl Ultrix and Pyramid sh refuse to redirect output of eval,
+ dnl so use subshell.
+ AS_VAR_SET([gl_next_header],
+ ['"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
+ sed -n '\#/]m4_defn([gl_HEADER_NAME])[#{
+ s#.*"\(.*/]m4_defn([gl_HEADER_NAME])[\)".*#\1#
+ s#^/[^/]#//&#
+ p
+ q
+ }'`'"'])
+ else
+ AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>'])
+ fi
+ AS_VAR_POPDEF([gl_header_exists])])
+ fi
+ AC_SUBST(
+ AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])),
+ [AS_VAR_GET([gl_next_header])])
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'gl_HEADER_NAME'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=AS_VAR_GET([gl_next_header])
+ fi
+ AC_SUBST(
+ AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])),
+ [$gl_next_as_first_directive])
+ AS_VAR_POPDEF([gl_next_header])])
+])
diff --git a/gnulib-m4/inline.m4 b/gnulib-m4/inline.m4
new file mode 100644
index 00000000..cee51099
--- /dev/null
+++ b/gnulib-m4/inline.m4
@@ -0,0 +1,40 @@
+# inline.m4 serial 4
+dnl Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Test for the 'inline' keyword or equivalent.
+dnl Define 'inline' to a supported equivalent, or to nothing if not supported,
+dnl like AC_C_INLINE does. Also, define HAVE_INLINE if 'inline' or an
+dnl equivalent is effectively supported, i.e. if the compiler is likely to
+dnl drop unused 'static inline' functions.
+AC_DEFUN([gl_INLINE],
+[
+ AC_REQUIRE([AC_C_INLINE])
+ AC_CACHE_CHECK([whether the compiler generally respects inline],
+ [gl_cv_c_inline_effective],
+ [if test $ac_cv_c_inline = no; then
+ gl_cv_c_inline_effective=no
+ else
+ dnl GCC defines __NO_INLINE__ if not optimizing or if -fno-inline is
+ dnl specified.
+ dnl Use AC_COMPILE_IFELSE here, not AC_EGREP_CPP, because the result
+ dnl depends on optimization flags, which can be in CFLAGS.
+ dnl (AC_EGREP_CPP looks only at the CPPFLAGS.)
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[]],
+ [[#ifdef __NO_INLINE__
+ #error "inline is not effective"
+ #endif]])],
+ [gl_cv_c_inline_effective=yes],
+ [gl_cv_c_inline_effective=no])
+ fi
+ ])
+ if test $gl_cv_c_inline_effective = yes; then
+ AC_DEFINE([HAVE_INLINE], [1],
+ [Define to 1 if the compiler supports one of the keywords
+ 'inline', '__inline__', '__inline' and effectively inlines
+ functions marked as such.])
+ fi
+])
diff --git a/gnulib-m4/intlmacosx.m4 b/gnulib-m4/intlmacosx.m4
new file mode 100644
index 00000000..c24837c4
--- /dev/null
+++ b/gnulib-m4/intlmacosx.m4
@@ -0,0 +1,51 @@
+# intlmacosx.m4 serial 3 (gettext-0.18)
+dnl Copyright (C) 2004-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Checks for special options needed on MacOS X.
+dnl Defines INTL_MACOSX_LIBS.
+AC_DEFUN([gt_INTL_MACOSX],
+[
+ dnl Check for API introduced in MacOS X 10.2.
+ AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
+ [gt_cv_func_CFPreferencesCopyAppValue],
+ [gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
+ [CFPreferencesCopyAppValue(NULL, NULL)],
+ [gt_cv_func_CFPreferencesCopyAppValue=yes],
+ [gt_cv_func_CFPreferencesCopyAppValue=no])
+ LIBS="$gt_save_LIBS"])
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+ AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
+ [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
+ fi
+ dnl Check for API introduced in MacOS X 10.3.
+ AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
+ [gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
+ [gt_cv_func_CFLocaleCopyCurrent=yes],
+ [gt_cv_func_CFLocaleCopyCurrent=no])
+ LIBS="$gt_save_LIBS"])
+ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+ AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
+ [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
+ fi
+ INTL_MACOSX_LIBS=
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+ fi
+ AC_SUBST([INTL_MACOSX_LIBS])
+])
diff --git a/gnulib-m4/intmax_t.m4 b/gnulib-m4/intmax_t.m4
new file mode 100644
index 00000000..264cb571
--- /dev/null
+++ b/gnulib-m4/intmax_t.m4
@@ -0,0 +1,61 @@
+# intmax_t.m4 serial 7
+dnl Copyright (C) 1997-2004, 2006-2007, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+AC_PREREQ([2.13])
+
+# Define intmax_t to 'long' or 'long long'
+# if it is not already defined in <stdint.h> or <inttypes.h>.
+
+AC_DEFUN([gl_AC_TYPE_INTMAX_T],
+[
+ dnl For simplicity, we assume that a header file defines 'intmax_t' if and
+ dnl only if it defines 'uintmax_t'.
+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
+ AC_REQUIRE([gl_AC_HEADER_STDINT_H])
+ if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+ test $ac_cv_type_long_long_int = yes \
+ && ac_type='long long' \
+ || ac_type='long'
+ AC_DEFINE_UNQUOTED([intmax_t], [$ac_type],
+ [Define to long or long long if <inttypes.h> and <stdint.h> don't define.])
+ else
+ AC_DEFINE([HAVE_INTMAX_T], [1],
+ [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
+ fi
+])
+
+dnl An alternative would be to explicitly test for 'intmax_t'.
+
+AC_DEFUN([gt_AC_TYPE_INTMAX_T],
+[
+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
+ AC_REQUIRE([gl_AC_HEADER_STDINT_H])
+ AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t],
+ [AC_TRY_COMPILE([
+#include <stddef.h>
+#include <stdlib.h>
+#if HAVE_STDINT_H_WITH_UINTMAX
+#include <stdint.h>
+#endif
+#if HAVE_INTTYPES_H_WITH_UINTMAX
+#include <inttypes.h>
+#endif
+], [intmax_t x = -1; return !x;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)])
+ if test $gt_cv_c_intmax_t = yes; then
+ AC_DEFINE([HAVE_INTMAX_T], [1],
+ [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
+ else
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+ test $ac_cv_type_long_long_int = yes \
+ && ac_type='long long' \
+ || ac_type='long'
+ AC_DEFINE_UNQUOTED([intmax_t], [$ac_type],
+ [Define to long or long long if <stdint.h> and <inttypes.h> don't define.])
+ fi
+])
diff --git a/gnulib-m4/inttypes_h.m4 b/gnulib-m4/inttypes_h.m4
new file mode 100644
index 00000000..f4ca1602
--- /dev/null
+++ b/gnulib-m4/inttypes_h.m4
@@ -0,0 +1,26 @@
+# inttypes_h.m4 serial 9
+dnl Copyright (C) 1997-2004, 2006, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
+# doesn't clash with <sys/types.h>, and declares uintmax_t.
+
+AC_DEFUN([gl_AC_HEADER_INTTYPES_H],
+[
+ AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h],
+ [AC_TRY_COMPILE(
+ [#include <sys/types.h>
+#include <inttypes.h>],
+ [uintmax_t i = (uintmax_t) -1; return !i;],
+ [gl_cv_header_inttypes_h=yes],
+ [gl_cv_header_inttypes_h=no])])
+ if test $gl_cv_header_inttypes_h = yes; then
+ AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1],
+ [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
+ and declares uintmax_t. ])
+ fi
+])
diff --git a/gnulib-m4/isnand.m4 b/gnulib-m4/isnand.m4
new file mode 100644
index 00000000..c823c2ce
--- /dev/null
+++ b/gnulib-m4/isnand.m4
@@ -0,0 +1,95 @@
+# isnand.m4 serial 6
+dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Check how to get or define isnand().
+
+AC_DEFUN([gl_FUNC_ISNAND],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ ISNAND_LIBM=
+ gl_HAVE_ISNAND_NO_LIBM
+ if test $gl_cv_func_isnand_no_libm = no; then
+ gl_HAVE_ISNAND_IN_LIBM
+ if test $gl_cv_func_isnand_in_libm = yes; then
+ ISNAND_LIBM=-lm
+ fi
+ fi
+ dnl The variable gl_func_isnand set here is used by isnan.m4.
+ if test $gl_cv_func_isnand_no_libm = yes \
+ || test $gl_cv_func_isnand_in_libm = yes; then
+ gl_func_isnand=yes
+ else
+ gl_func_isnand=no
+ HAVE_ISNAND=0
+ gl_BUILD_ISNAND
+ fi
+ AC_SUBST([ISNAND_LIBM])
+])
+
+dnl Check how to get or define isnand() without linking with libm.
+
+AC_DEFUN([gl_FUNC_ISNAND_NO_LIBM],
+[
+ gl_HAVE_ISNAND_NO_LIBM
+ if test $gl_cv_func_isnand_no_libm = yes; then
+ AC_DEFINE([HAVE_ISNAND_IN_LIBC], [1],
+ [Define if the isnan(double) function is available in libc.])
+ else
+ gl_BUILD_ISNAND
+ fi
+])
+
+dnl Pull in replacement isnand definition. It does not need -lm.
+AC_DEFUN([gl_BUILD_ISNAND],
+[
+ AC_LIBOBJ([isnand])
+ gl_DOUBLE_EXPONENT_LOCATION
+])
+
+dnl Test whether isnand() can be used with libm.
+
+AC_DEFUN([gl_HAVE_ISNAND_IN_LIBM],
+[
+ AC_CACHE_CHECK([whether isnan(double) can be used with libm],
+ [gl_cv_func_isnand_in_libm],
+ [
+ save_LIBS="$LIBS"
+ LIBS="$LIBS -lm"
+ AC_TRY_LINK([#include <math.h>
+ #if __GNUC__ >= 4
+ # undef isnand
+ # define isnand(x) __builtin_isnand ((double)(x))
+ #elif defined isnan
+ # undef isnand
+ # define isnand(x) isnan ((double)(x))
+ #endif
+ double x;],
+ [return isnand (x);],
+ [gl_cv_func_isnand_in_libm=yes],
+ [gl_cv_func_isnand_in_libm=no])
+ LIBS="$save_LIBS"
+ ])
+])
+
+AC_DEFUN([gl_HAVE_ISNAND_NO_LIBM],
+[
+ AC_CACHE_CHECK([whether isnan(double) can be used without linking with libm],
+ [gl_cv_func_isnand_no_libm],
+ [
+ AC_TRY_LINK([#include <math.h>
+ #if __GNUC__ >= 4
+ # undef isnand
+ # define isnand(x) __builtin_isnan ((double)(x))
+ #else
+ # undef isnand
+ # define isnand(x) isnan ((double)(x))
+ #endif
+ double x;],
+ [return isnand (x);],
+ [gl_cv_func_isnand_no_libm=yes],
+ [gl_cv_func_isnand_no_libm=no])
+ ])
+])
diff --git a/gnulib-m4/isnanf.m4 b/gnulib-m4/isnanf.m4
new file mode 100644
index 00000000..2ad8f945
--- /dev/null
+++ b/gnulib-m4/isnanf.m4
@@ -0,0 +1,179 @@
+# isnanf.m4 serial 10
+dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Check how to get or define isnanf().
+
+AC_DEFUN([gl_FUNC_ISNANF],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ ISNANF_LIBM=
+ gl_HAVE_ISNANF_NO_LIBM
+ if test $gl_cv_func_isnanf_no_libm = no; then
+ gl_HAVE_ISNANF_IN_LIBM
+ if test $gl_cv_func_isnanf_in_libm = yes; then
+ ISNANF_LIBM=-lm
+ fi
+ fi
+ if test $gl_cv_func_isnanf_no_libm = yes \
+ || test $gl_cv_func_isnanf_in_libm = yes; then
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $ISNANF_LIBM"
+ gl_ISNANF_WORKS
+ LIBS="$save_LIBS"
+ case "$gl_cv_func_isnanf_works" in
+ *yes) gl_func_isnanf=yes ;;
+ *) gl_func_isnanf=no; ISNANF_LIBM= ;;
+ esac
+ else
+ gl_func_isnanf=no
+ fi
+ if test $gl_func_isnanf != yes; then
+ HAVE_ISNANF=0
+ gl_BUILD_ISNANF
+ fi
+ AC_SUBST([ISNANF_LIBM])
+])
+
+dnl Check how to get or define isnanf() without linking with libm.
+
+AC_DEFUN([gl_FUNC_ISNANF_NO_LIBM],
+[
+ gl_HAVE_ISNANF_NO_LIBM
+ if test $gl_cv_func_isnanf_no_libm = yes; then
+ gl_ISNANF_WORKS
+ fi
+ if test $gl_cv_func_isnanf_no_libm = yes \
+ && { case "$gl_cv_func_isnanf_works" in
+ *yes) true;;
+ *) false;;
+ esac
+ }; then
+ AC_DEFINE([HAVE_ISNANF_IN_LIBC], [1],
+ [Define if the isnan(float) function is available in libc.])
+ else
+ gl_BUILD_ISNANF
+ fi
+])
+
+dnl Pull in replacement isnanf definition. It does not need -lm.
+AC_DEFUN([gl_BUILD_ISNANF],
+[
+ AC_LIBOBJ([isnanf])
+ gl_FLOAT_EXPONENT_LOCATION
+])
+
+dnl Test whether isnanf() can be used without libm.
+AC_DEFUN([gl_HAVE_ISNANF_NO_LIBM],
+[
+ AC_CACHE_CHECK([whether isnan(float) can be used without linking with libm],
+ [gl_cv_func_isnanf_no_libm],
+ [
+ AC_TRY_LINK([#include <math.h>
+ #if __GNUC__ >= 4
+ # undef isnanf
+ # define isnanf(x) __builtin_isnanf ((float)(x))
+ #elif defined isnan
+ # undef isnanf
+ # define isnanf(x) isnan ((float)(x))
+ #endif
+ float x;],
+ [return isnanf (x);],
+ [gl_cv_func_isnanf_no_libm=yes],
+ [gl_cv_func_isnanf_no_libm=no])
+ ])
+])
+
+dnl Test whether isnanf() can be used with libm.
+AC_DEFUN([gl_HAVE_ISNANF_IN_LIBM],
+[
+ AC_CACHE_CHECK([whether isnan(float) can be used with libm],
+ [gl_cv_func_isnanf_in_libm],
+ [
+ save_LIBS="$LIBS"
+ LIBS="$LIBS -lm"
+ AC_TRY_LINK([#include <math.h>
+ #if __GNUC__ >= 4
+ # undef isnanf
+ # define isnanf(x) __builtin_isnanf ((float)(x))
+ #elif defined isnan
+ # undef isnanf
+ # define isnanf(x) isnan ((float)(x))
+ #endif
+ float x;],
+ [return isnanf (x);],
+ [gl_cv_func_isnanf_in_libm=yes],
+ [gl_cv_func_isnanf_in_libm=no])
+ LIBS="$save_LIBS"
+ ])
+])
+
+dnl Test whether isnanf() rejects Infinity (this fails on Solaris 2.5.1),
+dnl recognizes a NaN (this fails on IRIX 6.5 with cc), and recognizes a NaN
+dnl with in-memory representation 0x7fbfffff (this fails on IRIX 6.5).
+AC_DEFUN([gl_ISNANF_WORKS],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_REQUIRE([gl_FLOAT_EXPONENT_LOCATION])
+ AC_CACHE_CHECK([whether isnan(float) works], [gl_cv_func_isnanf_works],
+ [
+ AC_TRY_RUN([
+#include <math.h>
+#if __GNUC__ >= 4
+# undef isnanf
+# define isnanf(x) __builtin_isnanf ((float)(x))
+#elif defined isnan
+# undef isnanf
+# define isnanf(x) isnan ((float)(x))
+#endif
+/* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */
+#ifdef __DECC
+static float
+NaN ()
+{
+ static float zero = 0.0f;
+ return zero / zero;
+}
+#else
+# define NaN() (0.0f / 0.0f)
+#endif
+#define NWORDS \
+ ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { unsigned int word[NWORDS]; float value; } memory_float;
+int main()
+{
+ memory_float m;
+
+ if (isnanf (1.0f / 0.0f))
+ return 1;
+
+ if (!isnanf (NaN ()))
+ return 1;
+
+#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
+ /* The isnanf function should be immune against changes in the sign bit and
+ in the mantissa bits. The xor operation twiddles a bit that can only be
+ a sign bit or a mantissa bit. */
+ if (FLT_EXPBIT0_WORD == 0 && FLT_EXPBIT0_BIT > 0)
+ {
+ m.value = NaN ();
+ /* Set the bits below the exponent to 01111...111. */
+ m.word[0] &= -1U << FLT_EXPBIT0_BIT;
+ m.word[0] |= 1U << (FLT_EXPBIT0_BIT - 1) - 1;
+ if (!isnanf (m.value))
+ return 1;
+ }
+#endif
+
+ return 0;
+}], [gl_cv_func_isnanf_works=yes], [gl_cv_func_isnanf_works=no],
+ [case "$host_os" in
+ irix* | solaris*) gl_cv_func_isnanf_works="guessing no";;
+ *) gl_cv_func_isnanf_works="guessing yes";;
+ esac
+ ])
+ ])
+])
diff --git a/gnulib-m4/isnanl.m4 b/gnulib-m4/isnanl.m4
new file mode 100644
index 00000000..e3029f5c
--- /dev/null
+++ b/gnulib-m4/isnanl.m4
@@ -0,0 +1,245 @@
+# isnanl.m4 serial 12
+dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ISNANL],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ ISNANL_LIBM=
+ gl_HAVE_ISNANL_NO_LIBM
+ if test $gl_cv_func_isnanl_no_libm = no; then
+ gl_HAVE_ISNANL_IN_LIBM
+ if test $gl_cv_func_isnanl_in_libm = yes; then
+ ISNANL_LIBM=-lm
+ fi
+ fi
+ if test $gl_cv_func_isnanl_no_libm = yes \
+ || test $gl_cv_func_isnanl_in_libm = yes; then
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $ISNANL_LIBM"
+ gl_FUNC_ISNANL_WORKS
+ LIBS="$save_LIBS"
+ case "$gl_cv_func_isnanl_works" in
+ *yes) gl_func_isnanl=yes ;;
+ *) gl_func_isnanl=no; ISNANL_LIBM= ;;
+ esac
+ else
+ gl_func_isnanl=no
+ fi
+ if test $gl_func_isnanl != yes; then
+ HAVE_ISNANL=0
+ gl_BUILD_ISNANL
+ fi
+ AC_SUBST([ISNANL_LIBM])
+])
+
+AC_DEFUN([gl_FUNC_ISNANL_NO_LIBM],
+[
+ gl_HAVE_ISNANL_NO_LIBM
+ gl_func_isnanl_no_libm=$gl_cv_func_isnanl_no_libm
+ if test $gl_func_isnanl_no_libm = yes; then
+ gl_FUNC_ISNANL_WORKS
+ case "$gl_cv_func_isnanl_works" in
+ *yes) ;;
+ *) gl_func_isnanl_no_libm=no ;;
+ esac
+ fi
+ if test $gl_func_isnanl_no_libm = yes; then
+ AC_DEFINE([HAVE_ISNANL_IN_LIBC], [1],
+ [Define if the isnan(long double) function is available in libc.])
+ else
+ gl_BUILD_ISNANL
+ fi
+])
+
+dnl Pull in replacement isnanl definition. It does not need -lm.
+AC_DEFUN([gl_BUILD_ISNANL],
+[
+ AC_LIBOBJ([isnanl])
+ gl_LONG_DOUBLE_EXPONENT_LOCATION
+])
+
+dnl Test whether isnanl() can be used without libm.
+AC_DEFUN([gl_HAVE_ISNANL_NO_LIBM],
+[
+ AC_CACHE_CHECK([whether isnan(long double) can be used without linking with libm],
+ [gl_cv_func_isnanl_no_libm],
+ [
+ AC_TRY_LINK([#include <math.h>
+ #if __GNUC__ >= 4
+ # undef isnanl
+ # define isnanl(x) __builtin_isnanl ((long double)(x))
+ #elif defined isnan
+ # undef isnanl
+ # define isnanl(x) isnan ((long double)(x))
+ #endif
+ long double x;],
+ [return isnanl (x);],
+ [gl_cv_func_isnanl_no_libm=yes],
+ [gl_cv_func_isnanl_no_libm=no])
+ ])
+])
+
+dnl Test whether isnanl() can be used with libm.
+AC_DEFUN([gl_HAVE_ISNANL_IN_LIBM],
+[
+ AC_CACHE_CHECK([whether isnan(long double) can be used with libm],
+ [gl_cv_func_isnanl_in_libm],
+ [
+ save_LIBS="$LIBS"
+ LIBS="$LIBS -lm"
+ AC_TRY_LINK([#include <math.h>
+ #if __GNUC__ >= 4
+ # undef isnanl
+ # define isnanl(x) __builtin_isnanl ((long double)(x))
+ #elif defined isnan
+ # undef isnanl
+ # define isnanl(x) isnan ((long double)(x))
+ #endif
+ long double x;],
+ [return isnanl (x);],
+ [gl_cv_func_isnanl_in_libm=yes],
+ [gl_cv_func_isnanl_in_libm=no])
+ LIBS="$save_LIBS"
+ ])
+])
+
+dnl Test whether isnanl() recognizes all numbers which are neither finite nor
+dnl infinite. This test fails e.g. on NetBSD/i386 and on glibc/ia64.
+dnl Also, the GCC >= 4.0 built-in __builtin_isnanl does not pass the tests
+dnl - for pseudo-denormals on i686 and x86_64,
+dnl - for pseudo-zeroes, unnormalized numbers, and pseudo-denormals on ia64.
+AC_DEFUN([gl_FUNC_ISNANL_WORKS],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([gl_BIGENDIAN])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether isnanl works], [gl_cv_func_isnanl_works],
+ [
+ AC_TRY_RUN([
+#include <float.h>
+#include <limits.h>
+#include <math.h>
+#if __GNUC__ >= 4
+# undef isnanl
+# define isnanl(x) __builtin_isnanl ((long double)(x))
+#elif defined isnan
+# undef isnanl
+# define isnanl(x) isnan ((long double)(x))
+#endif
+#define NWORDS \
+ ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { unsigned int word[NWORDS]; long double value; }
+ memory_long_double;
+/* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the
+ runtime type conversion. */
+#ifdef __sgi
+static long double NaNl ()
+{
+ double zero = 0.0;
+ return zero / zero;
+}
+#else
+# define NaNl() (0.0L / 0.0L)
+#endif
+int main ()
+{
+ memory_long_double m;
+ unsigned int i;
+
+ if (!isnanl (NaNl ()))
+ return 1;
+
+ /* The isnanl function should be immune against changes in the sign bit and
+ in the mantissa bits. The xor operation twiddles a bit that can only be
+ a sign bit or a mantissa bit (since the exponent never extends to
+ bit 31). */
+ m.value = NaNl ();
+ m.word[NWORDS / 2] ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
+ for (i = 0; i < NWORDS; i++)
+ m.word[i] |= 1;
+ if (!isnanl (m.value))
+ return 1;
+
+#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+/* Representation of an 80-bit 'long double' as an initializer for a sequence
+ of 'unsigned int' words. */
+# ifdef WORDS_BIGENDIAN
+# define LDBL80_WORDS(exponent,manthi,mantlo) \
+ { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \
+ ((unsigned int) (manthi) << 16) | (unsigned int) (mantlo) >> 16), \
+ (unsigned int) (mantlo) << 16 \
+ }
+# else
+# define LDBL80_WORDS(exponent,manthi,mantlo) \
+ { mantlo, manthi, exponent }
+# endif
+ { /* Quiet NaN. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
+ if (!isnanl (x.value))
+ return 1;
+ }
+ {
+ /* Signalling NaN. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
+ if (!isnanl (x.value))
+ return 1;
+ }
+ /* The isnanl function should recognize Pseudo-NaNs, Pseudo-Infinities,
+ Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals, as defined in
+ Intel IA-64 Architecture Software Developer's Manual, Volume 1:
+ Application Architecture.
+ Table 5-2 "Floating-Point Register Encodings"
+ Figure 5-6 "Memory to Floating-Point Register Data Translation"
+ */
+ { /* Pseudo-NaN. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
+ if (!isnanl (x.value))
+ return 1;
+ }
+ { /* Pseudo-Infinity. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
+ if (!isnanl (x.value))
+ return 1;
+ }
+ { /* Pseudo-Zero. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
+ if (!isnanl (x.value))
+ return 1;
+ }
+ { /* Unnormalized number. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
+ if (!isnanl (x.value))
+ return 1;
+ }
+ { /* Pseudo-Denormal. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
+ if (!isnanl (x.value))
+ return 1;
+ }
+#endif
+
+ return 0;
+}], [gl_cv_func_isnanl_works=yes], [gl_cv_func_isnanl_works=no],
+ [case "$host_cpu" in
+ # Guess no on ia64, x86_64, i386.
+ ia64 | x86_64 | i*86) gl_cv_func_isnanl_works="guessing no";;
+ *)
+ case "$host_os" in
+ netbsd*) gl_cv_func_isnanl_works="guessing no";;
+ *) gl_cv_func_isnanl_works="guessing yes";;
+ esac
+ ;;
+ esac
+ ])
+ ])
+])
diff --git a/gnulib-m4/lcmessage.m4 b/gnulib-m4/lcmessage.m4
new file mode 100644
index 00000000..fa8e4167
--- /dev/null
+++ b/gnulib-m4/lcmessage.m4
@@ -0,0 +1,30 @@
+# lcmessage.m4 serial 6 (gettext-0.18)
+dnl Copyright (C) 1995-2002, 2004-2005, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995.
+
+# Check whether LC_MESSAGES is available in <locale.h>.
+
+AC_DEFUN([gt_LC_MESSAGES],
+[
+ AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES],
+ [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+ [gt_cv_val_LC_MESSAGES=yes], [gt_cv_val_LC_MESSAGES=no])])
+ if test $gt_cv_val_LC_MESSAGES = yes; then
+ AC_DEFINE([HAVE_LC_MESSAGES], [1],
+ [Define if your <locale.h> file defines LC_MESSAGES.])
+ fi
+])
diff --git a/gnulib-m4/ldexpl.m4 b/gnulib-m4/ldexpl.m4
new file mode 100644
index 00000000..8ba85c61
--- /dev/null
+++ b/gnulib-m4/ldexpl.m4
@@ -0,0 +1,88 @@
+# ldexpl.m4 serial 4
+dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_LDEXPL],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ LDEXPL_LIBM=
+ AC_CACHE_CHECK([whether ldexpl() can be used without linking with libm],
+ [gl_cv_func_ldexpl_no_libm],
+ [
+ AC_TRY_LINK([#include <math.h>
+ long double x;],
+ [return ldexpl (x, -1) > 0;],
+ [gl_cv_func_ldexpl_no_libm=yes],
+ [gl_cv_func_ldexpl_no_libm=no])
+ ])
+ if test $gl_cv_func_ldexpl_no_libm = no; then
+ AC_CACHE_CHECK([whether ldexpl() can be used with libm],
+ [gl_cv_func_ldexpl_in_libm],
+ [
+ save_LIBS="$LIBS"
+ LIBS="$LIBS -lm"
+ AC_TRY_LINK([#include <math.h>
+ long double x;],
+ [return ldexpl (x, -1) > 0;],
+ [gl_cv_func_ldexpl_in_libm=yes],
+ [gl_cv_func_ldexpl_in_libm=no])
+ LIBS="$save_LIBS"
+ ])
+ if test $gl_cv_func_ldexpl_in_libm = yes; then
+ LDEXPL_LIBM=-lm
+ fi
+ fi
+ if test $gl_cv_func_ldexpl_no_libm = yes \
+ || test $gl_cv_func_ldexpl_in_libm = yes; then
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $LDEXPL_LIBM"
+ gl_FUNC_LDEXPL_WORKS
+ LIBS="$save_LIBS"
+ case "$gl_cv_func_ldexpl_works" in
+ *yes) gl_func_ldexpl=yes ;;
+ *) gl_func_ldexpl=no; REPLACE_LDEXPL=1; LDEXPL_LIBM= ;;
+ esac
+ else
+ gl_func_ldexpl=no
+ fi
+ if test $gl_func_ldexpl = yes; then
+ AC_DEFINE([HAVE_LDEXPL], [1],
+ [Define if the ldexpl() function is available.])
+ dnl Also check whether it's declared.
+ dnl MacOS X 10.3 has ldexpl() in libc but doesn't declare it in <math.h>.
+ AC_CHECK_DECL([ldexpl], , [HAVE_DECL_LDEXPL=0], [#include <math.h>])
+ else
+ HAVE_DECL_LDEXPL=0
+ AC_LIBOBJ([ldexpl])
+ fi
+ AC_SUBST([LDEXPL_LIBM])
+])
+
+dnl Test whether ldexpl() works on finite numbers (this fails on AIX 5.1
+dnl and MacOS X 10.4/PowerPC).
+AC_DEFUN([gl_FUNC_LDEXPL_WORKS],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether ldexpl works], [gl_cv_func_ldexpl_works],
+ [
+ AC_TRY_RUN([
+#include <math.h>
+extern long double ldexpl (long double, int);
+int main()
+{
+ volatile long double x1 = 1.0;
+ volatile long double y1 = ldexpl (x1, -1);
+ volatile long double x2 = 1.73205L;
+ volatile long double y2 = ldexpl (x2, 0);
+ return (y1 != 0.5L) || (y2 != x2);
+}], [gl_cv_func_ldexpl_works=yes], [gl_cv_func_ldexpl_works=no],
+ [case "$host_os" in
+ aix*) gl_cv_func_ldexpl_works="guessing no";;
+ *) gl_cv_func_ldexpl_works="guessing yes";;
+ esac
+ ])
+ ])
+])
diff --git a/gnulib-m4/lib-ld.m4 b/gnulib-m4/lib-ld.m4
new file mode 100644
index 00000000..e4863f2c
--- /dev/null
+++ b/gnulib-m4/lib-ld.m4
@@ -0,0 +1,110 @@
+# lib-ld.m4 serial 4 (gettext-0.18)
+dnl Copyright (C) 1996-2003, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Subroutines of libtool.m4,
+dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
+dnl with libtool.m4.
+
+dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
+AC_DEFUN([AC_LIB_PROG_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ acl_cv_prog_gnu_ld=yes ;;
+*)
+ acl_cv_prog_gnu_ld=no ;;
+esac])
+with_gnu_ld=$acl_cv_prog_gnu_ld
+])
+
+dnl From libtool-1.4. Sets the variable LD.
+AC_DEFUN([AC_LIB_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by GCC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]* | [A-Za-z]:[\\/]*)]
+ [re_direlt='/[^/][^/]*/\.\./']
+ # Canonicalize the path of ld
+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL([acl_cv_path_LD],
+[if test -z "$LD"; then
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ acl_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break ;;
+ *)
+ test "$with_gnu_ld" != yes && break ;;
+ esac
+ fi
+ done
+ IFS="$ac_save_ifs"
+else
+ acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT([$LD])
+else
+ AC_MSG_RESULT([no])
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_LIB_PROG_LD_GNU
+])
diff --git a/gnulib-m4/lib-link.m4 b/gnulib-m4/lib-link.m4
new file mode 100644
index 00000000..2f8b7ff3
--- /dev/null
+++ b/gnulib-m4/lib-link.m4
@@ -0,0 +1,764 @@
+# lib-link.m4 serial 20 (gettext-0.18)
+dnl Copyright (C) 2001-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_PREREQ([2.54])
+
+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
+dnl augments the CPPFLAGS variable.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+ pushdef([Name],[translit([$1],[./-], [___])])
+ pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
+ ac_cv_lib[]Name[]_libs="$LIB[]NAME"
+ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
+ ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
+ ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
+ ])
+ LIB[]NAME="$ac_cv_lib[]Name[]_libs"
+ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
+ INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
+ LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+ AC_SUBST([LIB]NAME)
+ AC_SUBST([LTLIB]NAME)
+ AC_SUBST([LIB]NAME[_PREFIX])
+ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
+ dnl results of this search when this library appears as a dependency.
+ HAVE_LIB[]NAME=yes
+ popdef([NAME])
+ popdef([Name])
+])
+
+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message])
+dnl searches for libname and the libraries corresponding to explicit and
+dnl implicit dependencies, together with the specified include files and
+dnl the ability to compile and link the specified testcode. The missing-message
+dnl defaults to 'no' and may contain additional hints for the user.
+dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME}
+dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and
+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+ pushdef([Name],[translit([$1],[./-], [___])])
+ pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+
+ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
+ dnl accordingly.
+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
+
+ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
+ dnl because if the user has installed lib[]Name and not disabled its use
+ dnl via --without-lib[]Name-prefix, he wants to use it.
+ ac_save_CPPFLAGS="$CPPFLAGS"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+
+ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
+ ac_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIB[]NAME"
+ AC_TRY_LINK([$3], [$4],
+ [ac_cv_lib[]Name=yes],
+ [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
+ LIBS="$ac_save_LIBS"
+ ])
+ if test "$ac_cv_lib[]Name" = yes; then
+ HAVE_LIB[]NAME=yes
+ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
+ AC_MSG_CHECKING([how to link with lib[]$1])
+ AC_MSG_RESULT([$LIB[]NAME])
+ else
+ HAVE_LIB[]NAME=no
+ dnl If $LIB[]NAME didn't lead to a usable library, we don't need
+ dnl $INC[]NAME either.
+ CPPFLAGS="$ac_save_CPPFLAGS"
+ LIB[]NAME=
+ LTLIB[]NAME=
+ LIB[]NAME[]_PREFIX=
+ fi
+ AC_SUBST([HAVE_LIB]NAME)
+ AC_SUBST([LIB]NAME)
+ AC_SUBST([LTLIB]NAME)
+ AC_SUBST([LIB]NAME[_PREFIX])
+ popdef([NAME])
+ popdef([Name])
+])
+
+dnl Determine the platform dependent parameters needed to use rpath:
+dnl acl_libext,
+dnl acl_shlibext,
+dnl acl_hardcode_libdir_flag_spec,
+dnl acl_hardcode_libdir_separator,
+dnl acl_hardcode_direct,
+dnl acl_hardcode_minus_L.
+AC_DEFUN([AC_LIB_RPATH],
+[
+ dnl Tell automake >= 1.10 to complain if config.rpath is missing.
+ m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
+ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
+ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
+ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
+ AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+ . ./conftest.sh
+ rm -f ./conftest.sh
+ acl_cv_rpath=done
+ ])
+ wl="$acl_cv_wl"
+ acl_libext="$acl_cv_libext"
+ acl_shlibext="$acl_cv_shlibext"
+ acl_libname_spec="$acl_cv_libname_spec"
+ acl_library_names_spec="$acl_cv_library_names_spec"
+ acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+ acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+ acl_hardcode_direct="$acl_cv_hardcode_direct"
+ acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
+ dnl Determine whether the user wants rpath handling at all.
+ AC_ARG_ENABLE([rpath],
+ [ --disable-rpath do not hardcode runtime library paths],
+ :, enable_rpath=yes)
+])
+
+dnl AC_LIB_FROMPACKAGE(name, package)
+dnl declares that libname comes from the given package. The configure file
+dnl will then not have a --with-libname-prefix option but a
+dnl --with-package-prefix option. Several libraries can come from the same
+dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
+dnl macro call that searches for libname.
+AC_DEFUN([AC_LIB_FROMPACKAGE],
+[
+ pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ define([acl_frompackage_]NAME, [$2])
+ popdef([NAME])
+ pushdef([PACK],[$2])
+ pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ define([acl_libsinpackage_]PACKUP,
+ m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1])
+ popdef([PACKUP])
+ popdef([PACK])
+])
+
+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
+dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
+dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+ pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
+ pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
+ dnl Autoconf >= 2.61 supports dots in --with options.
+ pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
+ dnl By default, look in $includedir and $libdir.
+ use_additional=yes
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ AC_ARG_WITH(P_A_C_K[-prefix],
+[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib
+ --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]],
+[
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/$acl_libdirstem"
+ if test "$acl_libdirstem2" != "$acl_libdirstem" \
+ && ! test -d "$withval/$acl_libdirstem"; then
+ additional_libdir="$withval/$acl_libdirstem2"
+ fi
+ fi
+ fi
+])
+ dnl Search the library and its dependencies in $additional_libdir and
+ dnl $LDFLAGS. Using breadth-first-seach.
+ LIB[]NAME=
+ LTLIB[]NAME=
+ INC[]NAME=
+ LIB[]NAME[]_PREFIX=
+ dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
+ dnl computed. So it has to be reset here.
+ HAVE_LIB[]NAME=
+ rpathdirs=
+ ltrpathdirs=
+ names_already_handled=
+ names_next_round='$1 $2'
+ while test -n "$names_next_round"; do
+ names_this_round="$names_next_round"
+ names_next_round=
+ for name in $names_this_round; do
+ already_handled=
+ for n in $names_already_handled; do
+ if test "$n" = "$name"; then
+ already_handled=yes
+ break
+ fi
+ done
+ if test -z "$already_handled"; then
+ names_already_handled="$names_already_handled $name"
+ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
+ dnl or AC_LIB_HAVE_LINKFLAGS call.
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+ eval value=\"\$HAVE_LIB$uppername\"
+ if test -n "$value"; then
+ if test "$value" = yes; then
+ eval value=\"\$LIB$uppername\"
+ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
+ eval value=\"\$LTLIB$uppername\"
+ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
+ else
+ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
+ dnl that this library doesn't exist. So just drop it.
+ :
+ fi
+ else
+ dnl Search the library lib$name in $additional_libdir and $LDFLAGS
+ dnl and the already constructed $LIBNAME/$LTLIBNAME.
+ found_dir=
+ found_la=
+ found_so=
+ found_a=
+ eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
+ if test -n "$acl_shlibext"; then
+ shrext=".$acl_shlibext" # typically: shrext=.so
+ else
+ shrext=
+ fi
+ if test $use_additional = yes; then
+ dir="$additional_libdir"
+ dnl The same code as in the loop below:
+ dnl First look for a shared library.
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ dnl Then look for a static library.
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ for x in $LDFLAGS $LTLIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ case "$x" in
+ -L*)
+ dir=`echo "X$x" | sed -e 's/^X-L//'`
+ dnl First look for a shared library.
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ dnl Then look for a static library.
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
+ ;;
+ esac
+ if test "X$found_dir" != "X"; then
+ break
+ fi
+ done
+ fi
+ if test "X$found_dir" != "X"; then
+ dnl Found the library.
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
+ if test "X$found_so" != "X"; then
+ dnl Linking with a shared library. We attempt to hardcode its
+ dnl directory into the executable's runpath, unless it's the
+ dnl standard /usr/lib.
+ if test "$enable_rpath" = no \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem" \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
+ dnl No hardcoding is needed.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ dnl Use an explicit option to hardcode DIR into the resulting
+ dnl binary.
+ dnl Potentially add DIR to ltrpathdirs.
+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $found_dir"
+ fi
+ dnl The hardcoding into $LIBNAME is system dependent.
+ if test "$acl_hardcode_direct" = yes; then
+ dnl Using DIR/libNAME.so during linking hardcodes DIR into the
+ dnl resulting binary.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+ dnl Use an explicit option to hardcode DIR into the resulting
+ dnl binary.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ dnl Potentially add DIR to rpathdirs.
+ dnl The rpathdirs will be appended to $LIBNAME at the end.
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $found_dir"
+ fi
+ else
+ dnl Rely on "-L$found_dir".
+ dnl But don't add it if it's already contained in the LDFLAGS
+ dnl or the already constructed $LIBNAME
+ haveit=
+ for x in $LDFLAGS $LIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
+ fi
+ if test "$acl_hardcode_minus_L" != no; then
+ dnl FIXME: Not sure whether we should use
+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+ dnl here.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
+ dnl here, because this doesn't fit in flags passed to the
+ dnl compiler. So give up. No hardcoding. This affects only
+ dnl very old systems.
+ dnl FIXME: Not sure whether we should use
+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+ dnl here.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+ fi
+ fi
+ fi
+ fi
+ else
+ if test "X$found_a" != "X"; then
+ dnl Linking with a static library.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
+ else
+ dnl We shouldn't come here, but anyway it's good to have a
+ dnl fallback.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
+ fi
+ fi
+ dnl Assume the include files are nearby.
+ additional_includedir=
+ case "$found_dir" in
+ */$acl_libdirstem | */$acl_libdirstem/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+ if test "$name" = '$1'; then
+ LIB[]NAME[]_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
+ */$acl_libdirstem2 | */$acl_libdirstem2/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
+ if test "$name" = '$1'; then
+ LIB[]NAME[]_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
+ esac
+ if test "X$additional_includedir" != "X"; then
+ dnl Potentially add $additional_includedir to $INCNAME.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/include,
+ dnl 2. if it's /usr/local/include and we are using GCC on Linux,
+ dnl 3. if it's already present in $CPPFLAGS or the already
+ dnl constructed $INCNAME,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ for x in $CPPFLAGS $INC[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ dnl Really add $additional_includedir to $INCNAME.
+ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ fi
+ dnl Look for dependencies.
+ if test -n "$found_la"; then
+ dnl Read the .la file. It defines the variables
+ dnl dlname, library_names, old_library, dependency_libs, current,
+ dnl age, revision, installed, dlopen, dlpreopen, libdir.
+ save_libdir="$libdir"
+ case "$found_la" in
+ */* | *\\*) . "$found_la" ;;
+ *) . "./$found_la" ;;
+ esac
+ libdir="$save_libdir"
+ dnl We use only dependency_libs.
+ for dep in $dependency_libs; do
+ case "$dep" in
+ -L*)
+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/lib,
+ dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
+ dnl 3. if it's already present in $LDFLAGS or the already
+ dnl constructed $LIBNAME,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
+ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
+ haveit=
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
+ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ haveit=
+ for x in $LDFLAGS $LIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LIBNAME.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
+ fi
+ fi
+ haveit=
+ for x in $LDFLAGS $LTLIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LTLIBNAME.
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ ;;
+ -R*)
+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
+ if test "$enable_rpath" != no; then
+ dnl Potentially add DIR to rpathdirs.
+ dnl The rpathdirs will be appended to $LIBNAME at the end.
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ dnl Potentially add DIR to ltrpathdirs.
+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $dir"
+ fi
+ fi
+ ;;
+ -l*)
+ dnl Handle this in the next round.
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+ ;;
+ *.la)
+ dnl Handle this in the next round. Throw away the .la's
+ dnl directory; it is already contained in a preceding -L
+ dnl option.
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+ ;;
+ *)
+ dnl Most likely an immediate library name.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
+ ;;
+ esac
+ done
+ fi
+ else
+ dnl Didn't find the library; assume it is in the system directories
+ dnl known to the linker and runtime loader. (All the system
+ dnl directories known to the linker should also be known to the
+ dnl runtime loader, otherwise the system is severely misconfigured.)
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
+ fi
+ fi
+ fi
+ done
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n "$acl_hardcode_libdir_separator"; then
+ dnl Weird platform: only the last -rpath option counts, the user must
+ dnl pass all path elements in one option. We can arrange that for a
+ dnl single library, but not when more than one $LIBNAMEs are used.
+ alldirs=
+ for found_dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+ done
+ dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+ else
+ dnl The -rpath options are cumulative.
+ for found_dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$found_dir"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+ done
+ fi
+ fi
+ if test "X$ltrpathdirs" != "X"; then
+ dnl When using libtool, the option that works for both libraries and
+ dnl executables is -R. The -R options are cumulative.
+ for found_dir in $ltrpathdirs; do
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
+ done
+ fi
+ popdef([P_A_C_K])
+ popdef([PACKLIBS])
+ popdef([PACKUP])
+ popdef([PACK])
+ popdef([NAME])
+])
+
+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
+dnl unless already present in VAR.
+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
+dnl contains two or three consecutive elements that belong together.
+AC_DEFUN([AC_LIB_APPENDTOVAR],
+[
+ for element in [$2]; do
+ haveit=
+ for x in $[$1]; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X$element"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ [$1]="${[$1]}${[$1]:+ }$element"
+ fi
+ done
+])
+
+dnl For those cases where a variable contains several -L and -l options
+dnl referring to unknown libraries and directories, this macro determines the
+dnl necessary additional linker options for the runtime path.
+dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
+dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
+dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
+dnl otherwise linking without libtool is assumed.
+AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
+[
+ AC_REQUIRE([AC_LIB_RPATH])
+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+ $1=
+ if test "$enable_rpath" != no; then
+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+ dnl Use an explicit option to hardcode directories into the resulting
+ dnl binary.
+ rpathdirs=
+ next=
+ for opt in $2; do
+ if test -n "$next"; then
+ dir="$next"
+ dnl No need to hardcode the standard /usr/lib.
+ if test "X$dir" != "X/usr/$acl_libdirstem" \
+ && test "X$dir" != "X/usr/$acl_libdirstem2"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ next=
+ else
+ case $opt in
+ -L) next=yes ;;
+ -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
+ dnl No need to hardcode the standard /usr/lib.
+ if test "X$dir" != "X/usr/$acl_libdirstem" \
+ && test "X$dir" != "X/usr/$acl_libdirstem2"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ next= ;;
+ *) next= ;;
+ esac
+ fi
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n ""$3""; then
+ dnl libtool is used for linking. Use -R options.
+ for dir in $rpathdirs; do
+ $1="${$1}${$1:+ }-R$dir"
+ done
+ else
+ dnl The linker is used for linking directly.
+ if test -n "$acl_hardcode_libdir_separator"; then
+ dnl Weird platform: only the last -rpath option counts, the user
+ dnl must pass all path elements in one option.
+ alldirs=
+ for dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
+ done
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ $1="$flag"
+ else
+ dnl The -rpath options are cumulative.
+ for dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$dir"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ $1="${$1}${$1:+ }$flag"
+ done
+ fi
+ fi
+ fi
+ fi
+ fi
+ AC_SUBST([$1])
+])
diff --git a/gnulib-m4/lib-prefix.m4 b/gnulib-m4/lib-prefix.m4
new file mode 100644
index 00000000..4b7ee335
--- /dev/null
+++ b/gnulib-m4/lib-prefix.m4
@@ -0,0 +1,224 @@
+# lib-prefix.m4 serial 7 (gettext-0.18)
+dnl Copyright (C) 2001-2005, 2008-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
+dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
+dnl require excessive bracketing.
+ifdef([AC_HELP_STRING],
+[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
+[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
+
+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
+dnl to access previously installed libraries. The basic assumption is that
+dnl a user will want packages to use other packages he previously installed
+dnl with the same --prefix option.
+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
+dnl libraries, but is otherwise very convenient.
+AC_DEFUN([AC_LIB_PREFIX],
+[
+ AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ dnl By default, look in $includedir and $libdir.
+ use_additional=yes
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ AC_LIB_ARG_WITH([lib-prefix],
+[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
+ --without-lib-prefix don't search for libraries in includedir and libdir],
+[
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/$acl_libdirstem"
+ fi
+ fi
+])
+ if test $use_additional = yes; then
+ dnl Potentially add $additional_includedir to $CPPFLAGS.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/include,
+ dnl 2. if it's already present in $CPPFLAGS,
+ dnl 3. if it's /usr/local/include and we are using GCC on Linux,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ for x in $CPPFLAGS; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ dnl Really add $additional_includedir to $CPPFLAGS.
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ dnl Potentially add $additional_libdir to $LDFLAGS.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/lib,
+ dnl 2. if it's already present in $LDFLAGS,
+ dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+ haveit=
+ for x in $LDFLAGS; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LDFLAGS.
+ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ fi
+])
+
+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
+dnl acl_final_exec_prefix, containing the values to which $prefix and
+dnl $exec_prefix will expand at the end of the configure script.
+AC_DEFUN([AC_LIB_PREPARE_PREFIX],
+[
+ dnl Unfortunately, prefix and exec_prefix get only finally determined
+ dnl at the end of configure.
+ if test "X$prefix" = "XNONE"; then
+ acl_final_prefix="$ac_default_prefix"
+ else
+ acl_final_prefix="$prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ acl_final_exec_prefix='${prefix}'
+ else
+ acl_final_exec_prefix="$exec_prefix"
+ fi
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+ prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
+dnl variables prefix and exec_prefix bound to the values they will have
+dnl at the end of the configure script.
+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
+[
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ $1
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_PREPARE_MULTILIB creates
+dnl - a variable acl_libdirstem, containing the basename of the libdir, either
+dnl "lib" or "lib64" or "lib/64",
+dnl - a variable acl_libdirstem2, as a secondary possible value for
+dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or
+dnl "lib/amd64".
+AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
+[
+ dnl There is no formal standard regarding lib and lib64.
+ dnl On glibc systems, the current practice is that on a system supporting
+ dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
+ dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
+ dnl the compiler's default mode by looking at the compiler's library search
+ dnl path. If at least one of its elements ends in /lib64 or points to a
+ dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
+ dnl Otherwise we use the default, namely "lib".
+ dnl On Solaris systems, the current practice is that on a system supporting
+ dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
+ dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
+ dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ acl_libdirstem=lib
+ acl_libdirstem2=
+ case "$host_os" in
+ solaris*)
+ dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
+ dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>.
+ dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
+ dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
+ dnl symlink is missing, so we set acl_libdirstem2 too.
+ AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
+ [AC_EGREP_CPP([sixtyfour bits], [
+#ifdef _LP64
+sixtyfour bits
+#endif
+ ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no])
+ ])
+ if test $gl_cv_solaris_64bit = yes; then
+ acl_libdirstem=lib/64
+ case "$host_cpu" in
+ sparc*) acl_libdirstem2=lib/sparcv9 ;;
+ i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
+ esac
+ fi
+ ;;
+ *)
+ searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+ if test -n "$searchpath"; then
+ acl_save_IFS="${IFS= }"; IFS=":"
+ for searchdir in $searchpath; do
+ if test -d "$searchdir"; then
+ case "$searchdir" in
+ */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+ */../ | */.. )
+ # Better ignore directories of this form. They are misleading.
+ ;;
+ *) searchdir=`cd "$searchdir" && pwd`
+ case "$searchdir" in
+ */lib64 ) acl_libdirstem=lib64 ;;
+ esac ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_IFS"
+ fi
+ ;;
+ esac
+ test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
+])
diff --git a/gnulib-m4/localcharset.m4 b/gnulib-m4/localcharset.m4
new file mode 100644
index 00000000..e9601041
--- /dev/null
+++ b/gnulib-m4/localcharset.m4
@@ -0,0 +1,16 @@
+# localcharset.m4 serial 6
+dnl Copyright (C) 2002, 2004, 2006, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_LOCALCHARSET],
+[
+ dnl Prerequisites of lib/localcharset.c.
+ AC_REQUIRE([AM_LANGINFO_CODESET])
+ AC_CHECK_DECLS_ONCE([getc_unlocked])
+
+ dnl Prerequisites of the lib/Makefile.am snippet.
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([gl_GLIBC21])
+])
diff --git a/gnulib-m4/locale-fr.m4 b/gnulib-m4/locale-fr.m4
new file mode 100644
index 00000000..653a5bc2
--- /dev/null
+++ b/gnulib-m4/locale-fr.m4
@@ -0,0 +1,185 @@
+# locale-fr.m4 serial 11
+dnl Copyright (C) 2003, 2005-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Determine the name of a french locale with traditional encoding.
+AC_DEFUN([gt_LOCALE_FR],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([AM_LANGINFO_CODESET])
+ AC_CACHE_CHECK([for a traditional french locale], [gt_cv_locale_fr], [
+ AC_LANG_CONFTEST([AC_LANG_SOURCE([
+changequote(,)dnl
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+ one byte long. This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+changequote([,])dnl
+ ])])
+ if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO-8859-1
+ else
+ # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+ if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.ISO8859-1
+ else
+ # Test for the HP-UX locale name.
+ if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr_FR.iso88591
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr=fr
+ else
+ # None found.
+ gt_cv_locale_fr=none
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+ ])
+ LOCALE_FR=$gt_cv_locale_fr
+ AC_SUBST([LOCALE_FR])
+])
+
+dnl Determine the name of a french locale with UTF-8 encoding.
+AC_DEFUN([gt_LOCALE_FR_UTF8],
+[
+ AC_REQUIRE([AM_LANGINFO_CODESET])
+ AC_CACHE_CHECK([for a french Unicode locale], [gt_cv_locale_fr_utf8], [
+ AC_LANG_CONFTEST([AC_LANG_SOURCE([
+changequote(,)dnl
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
+ imitates locale dependent behaviour by looking at the environment
+ variables, and all locales use the UTF-8 encoding. */
+#if !(defined __BEOS__ || defined __HAIKU__)
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+# if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+# endif
+# ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+ two bytes long, with UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 4
+ || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+ return 1;
+#endif
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+ return 0;
+}
+changequote([,])dnl
+ ])])
+ if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR.UTF-8
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr.UTF-8
+ else
+ # None found.
+ gt_cv_locale_fr_utf8=none
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+ ])
+ LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+ AC_SUBST([LOCALE_FR_UTF8])
+])
diff --git a/gnulib-m4/locale-ja.m4 b/gnulib-m4/locale-ja.m4
new file mode 100644
index 00000000..93605764
--- /dev/null
+++ b/gnulib-m4/locale-ja.m4
@@ -0,0 +1,107 @@
+# locale-ja.m4 serial 7
+dnl Copyright (C) 2003, 2005-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Determine the name of a japanese locale with EUC-JP encoding.
+AC_DEFUN([gt_LOCALE_JA],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([AM_LANGINFO_CODESET])
+ AC_CACHE_CHECK([for a traditional japanese locale], [gt_cv_locale_ja], [
+ AC_LANG_CONFTEST([AC_LANG_SOURCE([
+changequote(,)dnl
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+ const char *p;
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether MB_CUR_MAX is > 1. This excludes the dysfunctional locales
+ on Cygwin 1.5.x. */
+ if (MB_CUR_MAX == 1)
+ return 1;
+ /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+ This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+ for (p = buf; *p != '\0'; p++)
+ if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+ return 1;
+ return 0;
+}
+changequote([,])dnl
+ ])])
+ if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the AIX locale name.
+ if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja_JP
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja_JP.EUC-JP
+ else
+ # Test for the HP-UX, OSF/1, NetBSD locale name.
+ if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja_JP.eucJP
+ else
+ # Test for the IRIX, FreeBSD locale name.
+ if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja_JP.EUC
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_ja=ja
+ else
+ # Special test for NetBSD 1.6.
+ if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then
+ gt_cv_locale_ja=ja_JP.eucJP
+ else
+ # None found.
+ gt_cv_locale_ja=none
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ rm -fr conftest*
+ ])
+ LOCALE_JA=$gt_cv_locale_ja
+ AC_SUBST([LOCALE_JA])
+])
diff --git a/gnulib-m4/locale-tr.m4 b/gnulib-m4/locale-tr.m4
new file mode 100644
index 00000000..6162f65c
--- /dev/null
+++ b/gnulib-m4/locale-tr.m4
@@ -0,0 +1,97 @@
+# locale-tr.m4 serial 6
+dnl Copyright (C) 2003, 2005-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Determine the name of a turkish locale with UTF-8 encoding.
+AC_DEFUN([gt_LOCALE_TR_UTF8],
+[
+ AC_REQUIRE([AM_LANGINFO_CODESET])
+ AC_CACHE_CHECK([for a turkish Unicode locale], [gt_cv_locale_tr_utf8], [
+ AC_LANG_CONFTEST([AC_LANG_SOURCE([
+changequote(,)dnl
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* On BeOS, locales are not implemented in libc. Rather, libintl
+ imitates locale dependent behaviour by looking at the environment
+ variables, and all locales use the UTF-8 encoding. But BeOS does not
+ implement the Turkish upper-/lowercase mappings. Therefore, let this
+ program return 1 on BeOS. */
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the tr_TR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether in the abbreviation of the eighth month, the second
+ character (should be U+011F: LATIN SMALL LETTER G WITH BREVE) is
+ two bytes long, with UTF-8 encoding. */
+ t.tm_year = 1992 - 1900; t.tm_mon = 8 - 1; t.tm_mday = 19;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 4
+ || buf[1] != (char) 0xc4 || buf[2] != (char) 0x9f)
+ return 1;
+ /* Check whether the upper-/lowercase mappings are as expected for
+ Turkish. */
+ if (towupper ('i') != 0x0130 || towlower (0x0130) != 'i'
+ || towupper(0x0131) != 'I' || towlower ('I') != 0x0131)
+ return 1;
+ return 0;
+}
+changequote([,])dnl
+ ])])
+ if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the usual locale name.
+ if (LC_ALL=tr_TR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_tr_utf8=tr_TR
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=tr_TR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_tr_utf8=tr_TR.UTF-8
+ else
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=tr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_tr_utf8=tr.UTF-8
+ else
+ # None found.
+ gt_cv_locale_tr_utf8=none
+ fi
+ fi
+ fi
+ else
+ gt_cv_locale_tr_utf8=none
+ fi
+ rm -fr conftest*
+ ])
+ LOCALE_TR_UTF8=$gt_cv_locale_tr_utf8
+ AC_SUBST([LOCALE_TR_UTF8])
+])
diff --git a/gnulib-m4/locale-zh.m4 b/gnulib-m4/locale-zh.m4
new file mode 100644
index 00000000..36a5f1df
--- /dev/null
+++ b/gnulib-m4/locale-zh.m4
@@ -0,0 +1,92 @@
+# locale-zh.m4 serial 6
+dnl Copyright (C) 2003, 2005-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Determine the name of a chinese locale with GB18030 encoding.
+AC_DEFUN([gt_LOCALE_ZH_CN],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([AM_LANGINFO_CODESET])
+ AC_CACHE_CHECK([for a transitional chinese locale], [gt_cv_locale_zh_CN], [
+ AC_LANG_CONFTEST([AC_LANG_SOURCE([
+changequote(,)dnl
+#include <locale.h>
+#include <stdlib.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+ const char *p;
+ /* Check whether the given locale name is recognized by the system. */
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+ /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+ On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+ is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+ On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+ some unit tests fail. */
+#if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ return 1;
+ }
+#endif
+#ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+ /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+ This excludes the UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+ for (p = buf; *p != '\0'; p++)
+ if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+ return 1;
+ /* Check whether a typical GB18030 multibyte sequence is recognized as a
+ single wide character. This excludes the GB2312 and GBK encodings. */
+ if (mblen ("\203\062\332\066", 5) != 4)
+ return 1;
+ return 0;
+}
+changequote([,])dnl
+ ])])
+ if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+ # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+ # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+ # configure script would override the LC_ALL setting. Likewise for
+ # LC_CTYPE, which is also set at the beginning of the configure script.
+ # Test for the locale name without encoding suffix.
+ if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_zh_CN=zh_CN
+ else
+ # Test for the locale name with explicit encoding suffix.
+ if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_zh_CN=zh_CN.GB18030
+ else
+ # None found.
+ gt_cv_locale_zh_CN=none
+ fi
+ fi
+ else
+ # If there was a link error, due to mblen(), the system is so old that
+ # it certainly doesn't have a chinese locale.
+ gt_cv_locale_zh_CN=none
+ fi
+ rm -fr conftest*
+ ])
+ LOCALE_ZH_CN=$gt_cv_locale_zh_CN
+ AC_SUBST([LOCALE_ZH_CN])
+])
diff --git a/gnulib-m4/locale_h.m4 b/gnulib-m4/locale_h.m4
new file mode 100644
index 00000000..2bf5abcc
--- /dev/null
+++ b/gnulib-m4/locale_h.m4
@@ -0,0 +1,22 @@
+# locale_h.m4 serial 2
+dnl Copyright (C) 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_LOCALE_H],
+[
+ AC_CACHE_CHECK([whether locale.h conforms to POSIX],
+ [gl_cv_header_working_locale_h],
+ [AC_TRY_COMPILE([#include <locale.h>
+int x = LC_MESSAGES;], [],
+ [gl_cv_header_working_locale_h=yes],
+ [gl_cv_header_working_locale_h=no])])
+ if test $gl_cv_header_working_locale_h = yes; then
+ LOCALE_H=
+ else
+ gl_CHECK_NEXT_HEADERS([locale.h])
+ LOCALE_H=locale.h
+ fi
+ AC_SUBST([LOCALE_H])
+])
diff --git a/gnulib-m4/localename.m4 b/gnulib-m4/localename.m4
new file mode 100644
index 00000000..94e9705d
--- /dev/null
+++ b/gnulib-m4/localename.m4
@@ -0,0 +1,12 @@
+# localename.m4 serial 1
+dnl Copyright (C) 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_LOCALENAME],
+[
+ AC_REQUIRE([gt_LC_MESSAGES])
+ AC_REQUIRE([gt_INTL_MACOSX])
+ AC_CHECK_FUNCS([setlocale])
+])
diff --git a/gnulib-m4/longlong.m4 b/gnulib-m4/longlong.m4
new file mode 100644
index 00000000..eedc8d56
--- /dev/null
+++ b/gnulib-m4/longlong.m4
@@ -0,0 +1,106 @@
+# longlong.m4 serial 14
+dnl Copyright (C) 1999-2007, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+# Define HAVE_LONG_LONG_INT if 'long long int' works.
+# This fixes a bug in Autoconf 2.61, but can be removed once we
+# assume 2.62 everywhere.
+
+# Note: If the type 'long long int' exists but is only 32 bits large
+# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
+# defined. In this case you can treat 'long long int' like 'long int'.
+
+AC_DEFUN([AC_TYPE_LONG_LONG_INT],
+[
+ AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
+ [AC_LINK_IFELSE(
+ [_AC_TYPE_LONG_LONG_SNIPPET],
+ [dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
+ dnl If cross compiling, assume the bug isn't important, since
+ dnl nobody cross compiles for this platform as far as we know.
+ AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[@%:@include <limits.h>
+ @%:@ifndef LLONG_MAX
+ @%:@ define HALF \
+ (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+ @%:@ define LLONG_MAX (HALF - 1 + HALF)
+ @%:@endif]],
+ [[long long int n = 1;
+ int i;
+ for (i = 0; ; i++)
+ {
+ long long int m = n << i;
+ if (m >> i != n)
+ return 1;
+ if (LLONG_MAX / 2 < m)
+ break;
+ }
+ return 0;]])],
+ [ac_cv_type_long_long_int=yes],
+ [ac_cv_type_long_long_int=no],
+ [ac_cv_type_long_long_int=yes])],
+ [ac_cv_type_long_long_int=no])])
+ if test $ac_cv_type_long_long_int = yes; then
+ AC_DEFINE([HAVE_LONG_LONG_INT], [1],
+ [Define to 1 if the system has the type `long long int'.])
+ fi
+])
+
+# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
+# This fixes a bug in Autoconf 2.61, but can be removed once we
+# assume 2.62 everywhere.
+
+# Note: If the type 'unsigned long long int' exists but is only 32 bits
+# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT
+# will not be defined. In this case you can treat 'unsigned long long int'
+# like 'unsigned long int'.
+
+AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
+[
+ AC_CACHE_CHECK([for unsigned long long int],
+ [ac_cv_type_unsigned_long_long_int],
+ [AC_LINK_IFELSE(
+ [_AC_TYPE_LONG_LONG_SNIPPET],
+ [ac_cv_type_unsigned_long_long_int=yes],
+ [ac_cv_type_unsigned_long_long_int=no])])
+ if test $ac_cv_type_unsigned_long_long_int = yes; then
+ AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
+ [Define to 1 if the system has the type `unsigned long long int'.])
+ fi
+])
+
+# Expands to a C program that can be used to test for simultaneous support
+# of 'long long' and 'unsigned long long'. We don't want to say that
+# 'long long' is available if 'unsigned long long' is not, or vice versa,
+# because too many programs rely on the symmetry between signed and unsigned
+# integer types (excluding 'bool').
+AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET],
+[
+ AC_LANG_PROGRAM(
+ [[/* For now, do not test the preprocessor; as of 2007 there are too many
+ implementations with broken preprocessors. Perhaps this can
+ be revisited in 2012. In the meantime, code should not expect
+ #if to work with literals wider than 32 bits. */
+ /* Test literals. */
+ long long int ll = 9223372036854775807ll;
+ long long int nll = -9223372036854775807LL;
+ unsigned long long int ull = 18446744073709551615ULL;
+ /* Test constant expressions. */
+ typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+ ? 1 : -1)];
+ typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+ ? 1 : -1)];
+ int i = 63;]],
+ [[/* Test availability of runtime routines for shift and division. */
+ long long int llmax = 9223372036854775807ll;
+ unsigned long long int ullmax = 18446744073709551615ull;
+ return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+ | (llmax / ll) | (llmax % ll)
+ | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+ | (ullmax / ull) | (ullmax % ull));]])
+])
diff --git a/gnulib-m4/malloc.m4 b/gnulib-m4/malloc.m4
new file mode 100644
index 00000000..80701716
--- /dev/null
+++ b/gnulib-m4/malloc.m4
@@ -0,0 +1,41 @@
+# malloc.m4 serial 9
+dnl Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# gl_FUNC_MALLOC_POSIX
+# --------------------
+# Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it
+# fails), and replace malloc if it is not.
+AC_DEFUN([gl_FUNC_MALLOC_POSIX],
+[
+ AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
+ if test $gl_cv_func_malloc_posix = yes; then
+ HAVE_MALLOC_POSIX=1
+ AC_DEFINE([HAVE_MALLOC_POSIX], [1],
+ [Define if the 'malloc' function is POSIX compliant.])
+ else
+ AC_LIBOBJ([malloc])
+ HAVE_MALLOC_POSIX=0
+ fi
+ AC_SUBST([HAVE_MALLOC_POSIX])
+])
+
+# Test whether malloc, realloc, calloc are POSIX compliant,
+# Set gl_cv_func_malloc_posix to yes or no accordingly.
+AC_DEFUN([gl_CHECK_MALLOC_POSIX],
+[
+ AC_CACHE_CHECK([whether malloc, realloc, calloc are POSIX compliant],
+ [gl_cv_func_malloc_posix],
+ [
+ dnl It is too dangerous to try to allocate a large amount of memory:
+ dnl some systems go to their knees when you do that. So assume that
+ dnl all Unix implementations of the function are POSIX compliant.
+ AC_TRY_COMPILE([],
+ [#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+ choke me
+ #endif
+ ], [gl_cv_func_malloc_posix=yes], [gl_cv_func_malloc_posix=no])
+ ])
+])
diff --git a/gnulib-m4/malloca.m4 b/gnulib-m4/malloca.m4
new file mode 100644
index 00000000..2841ae83
--- /dev/null
+++ b/gnulib-m4/malloca.m4
@@ -0,0 +1,14 @@
+# malloca.m4 serial 1
+dnl Copyright (C) 2003-2004, 2006-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_MALLOCA],
+[
+ dnl Use the autoconf tests for alloca(), but not the AC_SUBSTed variables
+ dnl @ALLOCA@ and @LTALLOCA@.
+ dnl gl_FUNC_ALLOCA dnl Already brought in by the module dependencies.
+ AC_REQUIRE([gl_EEMALLOC])
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+])
diff --git a/gnulib-m4/math_h.m4 b/gnulib-m4/math_h.m4
new file mode 100644
index 00000000..d941bc33
--- /dev/null
+++ b/gnulib-m4/math_h.m4
@@ -0,0 +1,103 @@
+# math_h.m4 serial 14
+dnl Copyright (C) 2007-2008 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_MATH_H],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ gl_CHECK_NEXT_HEADERS([math.h])
+ AC_CACHE_CHECK([whether NAN macro works], [gl_cv_header_math_nan_works],
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>]],
+ [[/* Solaris 10 has a broken definition of NAN. Other platforms
+ fail to provide NAN, or provide it only in C99 mode; this
+ test only needs to fail when NAN is provided but wrong. */
+ float f = 1.0f;
+#ifdef NAN
+ f = NAN;
+#endif
+ return f == 0;]])],
+ [gl_cv_header_math_nan_works=yes],
+ [gl_cv_header_math_nan_works=no])])
+ if test $gl_cv_header_math_nan_works = no; then
+ REPLACE_NAN=1
+ fi
+ AC_CACHE_CHECK([whether HUGE_VAL works], [gl_cv_header_math_huge_val_works],
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>]],
+ [[/* Solaris 10 has a broken definition of HUGE_VAL. */
+ double d = HUGE_VAL;
+ return d == 0;]])],
+ [gl_cv_header_math_huge_val_works=yes],
+ [gl_cv_header_math_huge_val_works=no])])
+ if test $gl_cv_header_math_huge_val_works = no; then
+ REPLACE_HUGE_VAL=1
+ fi
+])
+
+AC_DEFUN([gl_MATH_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_MATH_H_DEFAULTS],
+[
+ GNULIB_CEILF=0; AC_SUBST([GNULIB_CEILF])
+ GNULIB_CEILL=0; AC_SUBST([GNULIB_CEILL])
+ GNULIB_FLOORF=0; AC_SUBST([GNULIB_FLOORF])
+ GNULIB_FLOORL=0; AC_SUBST([GNULIB_FLOORL])
+ GNULIB_FREXP=0; AC_SUBST([GNULIB_FREXP])
+ GNULIB_FREXPL=0; AC_SUBST([GNULIB_FREXPL])
+ GNULIB_ISFINITE=0; AC_SUBST([GNULIB_ISFINITE])
+ GNULIB_ISINF=0; AC_SUBST([GNULIB_ISINF])
+ GNULIB_ISNAN=0; AC_SUBST([GNULIB_ISNAN])
+ GNULIB_ISNANF=0; AC_SUBST([GNULIB_ISNANF])
+ GNULIB_ISNAND=0; AC_SUBST([GNULIB_ISNAND])
+ GNULIB_ISNANL=0; AC_SUBST([GNULIB_ISNANL])
+ GNULIB_LDEXPL=0; AC_SUBST([GNULIB_LDEXPL])
+ GNULIB_MATHL=0; AC_SUBST([GNULIB_MATHL])
+ GNULIB_ROUND=0; AC_SUBST([GNULIB_ROUND])
+ GNULIB_ROUNDF=0; AC_SUBST([GNULIB_ROUNDF])
+ GNULIB_ROUNDL=0; AC_SUBST([GNULIB_ROUNDL])
+ GNULIB_SIGNBIT=0; AC_SUBST([GNULIB_SIGNBIT])
+ GNULIB_TRUNC=0; AC_SUBST([GNULIB_TRUNC])
+ GNULIB_TRUNCF=0; AC_SUBST([GNULIB_TRUNCF])
+ GNULIB_TRUNCL=0; AC_SUBST([GNULIB_TRUNCL])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_ISNANF=1; AC_SUBST([HAVE_ISNANF])
+ HAVE_ISNAND=1; AC_SUBST([HAVE_ISNAND])
+ HAVE_ISNANL=1; AC_SUBST([HAVE_ISNANL])
+ HAVE_DECL_ACOSL=1; AC_SUBST([HAVE_DECL_ACOSL])
+ HAVE_DECL_ASINL=1; AC_SUBST([HAVE_DECL_ASINL])
+ HAVE_DECL_ATANL=1; AC_SUBST([HAVE_DECL_ATANL])
+ HAVE_DECL_COSL=1; AC_SUBST([HAVE_DECL_COSL])
+ HAVE_DECL_EXPL=1; AC_SUBST([HAVE_DECL_EXPL])
+ HAVE_DECL_FREXPL=1; AC_SUBST([HAVE_DECL_FREXPL])
+ HAVE_DECL_LDEXPL=1; AC_SUBST([HAVE_DECL_LDEXPL])
+ HAVE_DECL_LOGL=1; AC_SUBST([HAVE_DECL_LOGL])
+ HAVE_DECL_SINL=1; AC_SUBST([HAVE_DECL_SINL])
+ HAVE_DECL_SQRTL=1; AC_SUBST([HAVE_DECL_SQRTL])
+ HAVE_DECL_TANL=1; AC_SUBST([HAVE_DECL_TANL])
+ HAVE_DECL_TRUNC=1; AC_SUBST([HAVE_DECL_TRUNC])
+ HAVE_DECL_TRUNCF=1; AC_SUBST([HAVE_DECL_TRUNCF])
+ REPLACE_CEILF=0; AC_SUBST([REPLACE_CEILF])
+ REPLACE_CEILL=0; AC_SUBST([REPLACE_CEILL])
+ REPLACE_FLOORF=0; AC_SUBST([REPLACE_FLOORF])
+ REPLACE_FLOORL=0; AC_SUBST([REPLACE_FLOORL])
+ REPLACE_FREXP=0; AC_SUBST([REPLACE_FREXP])
+ REPLACE_FREXPL=0; AC_SUBST([REPLACE_FREXPL])
+ REPLACE_HUGE_VAL=0; AC_SUBST([REPLACE_HUGE_VAL])
+ REPLACE_ISFINITE=0; AC_SUBST([REPLACE_ISFINITE])
+ REPLACE_ISINF=0; AC_SUBST([REPLACE_ISINF])
+ REPLACE_ISNAN=0; AC_SUBST([REPLACE_ISNAN])
+ REPLACE_LDEXPL=0; AC_SUBST([REPLACE_LDEXPL])
+ REPLACE_NAN=0; AC_SUBST([REPLACE_NAN])
+ REPLACE_ROUND=0; AC_SUBST([REPLACE_ROUND])
+ REPLACE_ROUNDF=0; AC_SUBST([REPLACE_ROUNDF])
+ REPLACE_ROUNDL=0; AC_SUBST([REPLACE_ROUNDL])
+ REPLACE_SIGNBIT=0; AC_SUBST([REPLACE_SIGNBIT])
+ REPLACE_SIGNBIT_USING_GCC=0; AC_SUBST([REPLACE_SIGNBIT_USING_GCC])
+ REPLACE_TRUNCL=0; AC_SUBST([REPLACE_TRUNCL])
+])
diff --git a/gnulib-m4/mbchar.m4 b/gnulib-m4/mbchar.m4
new file mode 100644
index 00000000..e73e2b4b
--- /dev/null
+++ b/gnulib-m4/mbchar.m4
@@ -0,0 +1,13 @@
+# mbchar.m4 serial 7
+dnl Copyright (C) 2005-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl autoconf tests required for use of mbchar.m4
+dnl From Bruno Haible.
+
+AC_DEFUN([gl_MBCHAR],
+[
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+])
diff --git a/gnulib-m4/mbiter.m4 b/gnulib-m4/mbiter.m4
new file mode 100644
index 00000000..88ba5694
--- /dev/null
+++ b/gnulib-m4/mbiter.m4
@@ -0,0 +1,17 @@
+# mbiter.m4 serial 4
+dnl Copyright (C) 2005, 2008 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl autoconf tests required for use of mbiter.h
+dnl From Bruno Haible.
+
+AC_DEFUN([gl_MBITER],
+[
+ AC_REQUIRE([AC_TYPE_MBSTATE_T])
+ dnl The following line is that so the user can test HAVE_MBRTOWC before
+ dnl #include "mbiter.h" or "mbuiter.h". It can be removed in 2010.
+ AC_REQUIRE([AC_FUNC_MBRTOWC])
+ :
+])
diff --git a/gnulib-m4/mbrtowc.m4 b/gnulib-m4/mbrtowc.m4
new file mode 100644
index 00000000..2fddcc8a
--- /dev/null
+++ b/gnulib-m4/mbrtowc.m4
@@ -0,0 +1,383 @@
+# mbrtowc.m4 serial 16
+dnl Copyright (C) 2001-2002, 2004-2005, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_MBRTOWC],
+[
+ AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+
+ AC_REQUIRE([AC_TYPE_MBSTATE_T])
+ gl_MBSTATE_T_BROKEN
+ if test $REPLACE_MBSTATE_T = 1; then
+ REPLACE_MBRTOWC=1
+ fi
+ AC_CHECK_FUNCS_ONCE([mbrtowc])
+ if test $ac_cv_func_mbrtowc = no; then
+ HAVE_MBRTOWC=0
+ fi
+ if test $HAVE_MBRTOWC != 0 && test $REPLACE_MBRTOWC != 1; then
+ gl_MBRTOWC_NULL_ARG
+ gl_MBRTOWC_RETVAL
+ gl_MBRTOWC_NUL_RETVAL
+ case "$gl_cv_func_mbrtowc_null_arg" in
+ *yes) ;;
+ *) AC_DEFINE([MBRTOWC_NULL_ARG_BUG], [1],
+ [Define if the mbrtowc function has the NULL string argument bug.])
+ REPLACE_MBRTOWC=1
+ ;;
+ esac
+ case "$gl_cv_func_mbrtowc_retval" in
+ *yes) ;;
+ *) AC_DEFINE([MBRTOWC_RETVAL_BUG], [1],
+ [Define if the mbrtowc function returns a wrong return value.])
+ REPLACE_MBRTOWC=1
+ ;;
+ esac
+ case "$gl_cv_func_mbrtowc_nul_retval" in
+ *yes) ;;
+ *) AC_DEFINE([MBRTOWC_NUL_RETVAL_BUG], [1],
+ [Define if the mbrtowc function does not return 0 for a NUL character.])
+ REPLACE_MBRTOWC=1
+ ;;
+ esac
+ fi
+ if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then
+ gl_REPLACE_WCHAR_H
+ AC_LIBOBJ([mbrtowc])
+ gl_PREREQ_MBRTOWC
+ fi
+])
+
+dnl Test whether mbsinit() and mbrtowc() need to be overridden in a way that
+dnl redefines the semantics of the given mbstate_t type.
+dnl Result is REPLACE_MBSTATE_T.
+dnl When this is set to 1, we replace both mbsinit() and mbrtowc(), in order to
+dnl avoid inconsistencies.
+
+AC_DEFUN([gl_MBSTATE_T_BROKEN],
+[
+ AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+
+ AC_REQUIRE([AC_TYPE_MBSTATE_T])
+ AC_CHECK_FUNCS_ONCE([mbsinit])
+ AC_CHECK_FUNCS_ONCE([mbrtowc])
+ if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then
+ gl_MBRTOWC_INCOMPLETE_STATE
+ gl_MBRTOWC_SANITYCHECK
+ REPLACE_MBSTATE_T=0
+ case "$gl_cv_func_mbrtowc_incomplete_state" in
+ *yes) ;;
+ *) REPLACE_MBSTATE_T=1 ;;
+ esac
+ case "$gl_cv_func_mbrtowc_sanitycheck" in
+ *yes) ;;
+ *) REPLACE_MBSTATE_T=1 ;;
+ esac
+ else
+ REPLACE_MBSTATE_T=1
+ fi
+ if test $REPLACE_MBSTATE_T = 1; then
+ gl_REPLACE_WCHAR_H
+ fi
+])
+
+dnl Test whether mbrtowc puts the state into non-initial state when parsing an
+dnl incomplete multibyte character.
+dnl Result is gl_cv_func_mbrtowc_incomplete_state.
+
+AC_DEFUN([gl_MBRTOWC_INCOMPLETE_STATE],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([gt_LOCALE_JA])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether mbrtowc handles incomplete characters],
+ [gl_cv_func_mbrtowc_incomplete_state],
+ [
+ dnl Initial guess, used when cross-compiling or when no suitable locale
+ dnl is present.
+changequote(,)dnl
+ case "$host_os" in
+ # Guess no on AIX and OSF/1.
+ osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
+ # Guess yes otherwise.
+ *) gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
+ esac
+changequote([,])dnl
+ if test $LOCALE_JA != none; then
+ AC_TRY_RUN([
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+ if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
+ {
+ const char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */
+ mbstate_t state;
+ wchar_t wc;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+ if (mbsinit (&state))
+ return 1;
+ }
+ return 0;
+}],
+ [gl_cv_func_mbrtowc_incomplete_state=yes],
+ [gl_cv_func_mbrtowc_incomplete_state=no],
+ [:])
+ fi
+ ])
+])
+
+dnl Test whether mbrtowc works not worse than mbtowc.
+dnl Result is gl_cv_func_mbrtowc_sanitycheck.
+
+AC_DEFUN([gl_MBRTOWC_SANITYCHECK],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([gt_LOCALE_ZH_CN])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether mbrtowc works as well as mbtowc],
+ [gl_cv_func_mbrtowc_sanitycheck],
+ [
+ dnl Initial guess, used when cross-compiling or when no suitable locale
+ dnl is present.
+changequote(,)dnl
+ case "$host_os" in
+ # Guess no on Solaris 8.
+ solaris2.8) gl_cv_func_mbrtowc_sanitycheck="guessing no" ;;
+ # Guess yes otherwise.
+ *) gl_cv_func_mbrtowc_sanitycheck="guessing yes" ;;
+ esac
+changequote([,])dnl
+ if test $LOCALE_ZH_CN != none; then
+ AC_TRY_RUN([
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+ /* This fails on Solaris 8:
+ mbrtowc returns 2, and sets wc to 0x00F0.
+ mbtowc returns 4 (correct) and sets wc to 0x5EDC. */
+ if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
+ {
+ char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
+ mbstate_t state;
+ wchar_t wc;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, input + 3, 6, &state) != 4
+ && mbtowc (&wc, input + 3, 6) == 4)
+ return 1;
+ }
+ return 0;
+}],
+ [gl_cv_func_mbrtowc_sanitycheck=yes],
+ [gl_cv_func_mbrtowc_sanitycheck=no],
+ [:])
+ fi
+ ])
+])
+
+dnl Test whether mbrtowc supports a NULL string argument correctly.
+dnl Result is gl_cv_func_mbrtowc_null_arg.
+
+AC_DEFUN([gl_MBRTOWC_NULL_ARG],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([gt_LOCALE_FR_UTF8])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether mbrtowc handles a NULL string argument],
+ [gl_cv_func_mbrtowc_null_arg],
+ [
+ dnl Initial guess, used when cross-compiling or when no suitable locale
+ dnl is present.
+changequote(,)dnl
+ case "$host_os" in
+ # Guess no on OSF/1.
+ osf*) gl_cv_func_mbrtowc_null_arg="guessing no" ;;
+ # Guess yes otherwise.
+ *) gl_cv_func_mbrtowc_null_arg="guessing yes" ;;
+ esac
+changequote([,])dnl
+ if test $LOCALE_FR_UTF8 != none; then
+ AC_TRY_RUN([
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+ if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ {
+ mbstate_t state;
+ wchar_t wc;
+ int ret;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (wchar_t) 0xBADFACE;
+ mbrtowc (&wc, NULL, 5, &state);
+ /* Check that wc was not modified. */
+ if (wc != (wchar_t) 0xBADFACE)
+ return 1;
+ }
+ return 0;
+}], [gl_cv_func_mbrtowc_null_arg=yes], [gl_cv_func_mbrtowc_null_arg=no], [:])
+ fi
+ ])
+])
+
+dnl Test whether mbrtowc, when parsing the end of a multibyte character,
+dnl correctly returns the number of bytes that were needed to complete the
+dnl character (not the total number of bytes of the multibyte character).
+dnl Result is gl_cv_func_mbrtowc_retval.
+
+AC_DEFUN([gl_MBRTOWC_RETVAL],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([gt_LOCALE_FR_UTF8])
+ AC_REQUIRE([gt_LOCALE_JA])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether mbrtowc has a correct return value],
+ [gl_cv_func_mbrtowc_retval],
+ [
+ dnl Initial guess, used when cross-compiling or when no suitable locale
+ dnl is present.
+changequote(,)dnl
+ case "$host_os" in
+ # Guess no on HP-UX and Solaris.
+ hpux* | solaris*) gl_cv_func_mbrtowc_retval="guessing no" ;;
+ # Guess yes otherwise.
+ *) gl_cv_func_mbrtowc_retval="guessing yes" ;;
+ esac
+changequote([,])dnl
+ if test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none; then
+ AC_TRY_RUN([
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+ /* This fails on Solaris. */
+ if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ {
+ char input[] = "B\303\274\303\237er"; /* "Büßer" */
+ mbstate_t state;
+ wchar_t wc;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+ {
+ input[1] = '\0';
+ if (mbrtowc (&wc, input + 2, 5, &state) != 1)
+ return 1;
+ }
+ }
+ /* This fails on HP-UX 11.11. */
+ if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
+ {
+ char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */
+ mbstate_t state;
+ wchar_t wc;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+ {
+ input[1] = '\0';
+ if (mbrtowc (&wc, input + 2, 5, &state) != 2)
+ return 1;
+ }
+ }
+ return 0;
+}],
+ [gl_cv_func_mbrtowc_retval=yes],
+ [gl_cv_func_mbrtowc_retval=no],
+ [:])
+ fi
+ ])
+])
+
+dnl Test whether mbrtowc, when parsing a NUL character, correctly returns 0.
+dnl Result is gl_cv_func_mbrtowc_nul_retval.
+
+AC_DEFUN([gl_MBRTOWC_NUL_RETVAL],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([gt_LOCALE_ZH_CN])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether mbrtowc returns 0 when parsing a NUL character],
+ [gl_cv_func_mbrtowc_nul_retval],
+ [
+ dnl Initial guess, used when cross-compiling or when no suitable locale
+ dnl is present.
+changequote(,)dnl
+ case "$host_os" in
+ # Guess no on Solaris 8 and 9.
+ solaris2.[89]) gl_cv_func_mbrtowc_nul_retval="guessing no" ;;
+ # Guess yes otherwise.
+ *) gl_cv_func_mbrtowc_nul_retval="guessing yes" ;;
+ esac
+changequote([,])dnl
+ if test $LOCALE_ZH_CN != none; then
+ AC_TRY_RUN([
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+ /* This fails on Solaris 8 and 9. */
+ if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
+ {
+ mbstate_t state;
+ wchar_t wc;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, "", 1, &state) != 0)
+ return 1;
+ }
+ return 0;
+}],
+ [gl_cv_func_mbrtowc_nul_retval=yes],
+ [gl_cv_func_mbrtowc_nul_retval=no],
+ [:])
+ fi
+ ])
+])
+
+# Prerequisites of lib/mbrtowc.c.
+AC_DEFUN([gl_PREREQ_MBRTOWC], [
+ :
+])
+
+
+dnl From Paul Eggert
+
+dnl This override of an autoconf macro can be removed when autoconf 2.60 or
+dnl newer can be assumed everywhere.
+
+m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.60]),[-1],[
+AC_DEFUN([AC_FUNC_MBRTOWC],
+[
+ dnl Same as AC_FUNC_MBRTOWC in autoconf-2.60.
+ AC_CACHE_CHECK([whether mbrtowc and mbstate_t are properly declared],
+ gl_cv_func_mbrtowc,
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <wchar.h>]],
+ [[wchar_t wc;
+ char const s[] = "";
+ size_t n = 1;
+ mbstate_t state;
+ return ! (sizeof state && (mbrtowc) (&wc, s, n, &state));]])],
+ gl_cv_func_mbrtowc=yes,
+ gl_cv_func_mbrtowc=no)])
+ if test $gl_cv_func_mbrtowc = yes; then
+ AC_DEFINE([HAVE_MBRTOWC], [1],
+ [Define to 1 if mbrtowc and mbstate_t are properly declared.])
+ fi
+])
+])
diff --git a/gnulib-m4/mbsinit.m4 b/gnulib-m4/mbsinit.m4
new file mode 100644
index 00000000..03b055cd
--- /dev/null
+++ b/gnulib-m4/mbsinit.m4
@@ -0,0 +1,30 @@
+# mbsinit.m4 serial 3
+dnl Copyright (C) 2008 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_MBSINIT],
+[
+ AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+
+ AC_REQUIRE([AC_TYPE_MBSTATE_T])
+ gl_MBSTATE_T_BROKEN
+ if test $REPLACE_MBSTATE_T = 1; then
+ REPLACE_MBSINIT=1
+ fi
+ AC_CHECK_FUNCS_ONCE([mbsinit])
+ if test $ac_cv_func_mbsinit = no; then
+ HAVE_MBSINIT=0
+ fi
+ if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then
+ gl_REPLACE_WCHAR_H
+ AC_LIBOBJ([mbsinit])
+ gl_PREREQ_MBSINIT
+ fi
+])
+
+# Prerequisites of lib/mbsinit.c.
+AC_DEFUN([gl_PREREQ_MBSINIT], [
+ :
+])
diff --git a/gnulib-m4/mbstate_t.m4 b/gnulib-m4/mbstate_t.m4
new file mode 100644
index 00000000..d4ec6f0f
--- /dev/null
+++ b/gnulib-m4/mbstate_t.m4
@@ -0,0 +1,34 @@
+# mbstate_t.m4 serial 12
+dnl Copyright (C) 2000-2002, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# From Paul Eggert.
+
+# BeOS 5 has <wchar.h> but does not define mbstate_t,
+# so you can't declare an object of that type.
+# Check for this incompatibility with Standard C.
+
+# AC_TYPE_MBSTATE_T
+# -----------------
+AC_DEFUN([AC_TYPE_MBSTATE_T],
+[
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) dnl for HP-UX 11.11
+
+ AC_CACHE_CHECK([for mbstate_t], [ac_cv_type_mbstate_t],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [AC_INCLUDES_DEFAULT[
+# include <wchar.h>]],
+ [[mbstate_t x; return sizeof x;]])],
+ [ac_cv_type_mbstate_t=yes],
+ [ac_cv_type_mbstate_t=no])])
+ if test $ac_cv_type_mbstate_t = yes; then
+ AC_DEFINE([HAVE_MBSTATE_T], [1],
+ [Define to 1 if <wchar.h> declares mbstate_t.])
+ else
+ AC_DEFINE([mbstate_t], [int],
+ [Define to a type if <wchar.h> does not define.])
+ fi
+])
diff --git a/gnulib-m4/memchr.m4 b/gnulib-m4/memchr.m4
new file mode 100644
index 00000000..1194bac2
--- /dev/null
+++ b/gnulib-m4/memchr.m4
@@ -0,0 +1,86 @@
+# memchr.m4 serial 7
+dnl Copyright (C) 2002, 2003, 2004, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN_ONCE([gl_FUNC_MEMCHR],
+[
+ dnl Check for prerequisites for memory fence checks.
+ gl_FUNC_MMAP_ANON
+ AC_CHECK_HEADERS_ONCE([sys/mman.h])
+ AC_CHECK_FUNCS_ONCE([mprotect])
+
+ dnl These days, we assume memchr is present. But just in case...
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ AC_REPLACE_FUNCS([memchr])
+ if test $ac_cv_func_memchr = no; then
+ gl_PREREQ_MEMCHR
+ REPLACE_MEMCHR=1
+ fi
+
+ if test $ac_cv_func_memchr = yes; then
+ # Detect platform-specific bugs in some versions of glibc:
+ # memchr should not dereference anything with length 0
+ # http://bugzilla.redhat.com/499689
+ # memchr should not dereference overestimated length after a match
+ # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=521737
+ # http://sourceware.org/bugzilla/show_bug.cgi?id=10162
+ # Assume that memchr works on platforms that lack mprotect.
+ AC_CACHE_CHECK([whether memchr works], [gl_cv_func_memchr_works],
+ [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#include <string.h>
+#if HAVE_SYS_MMAN_H
+# include <fcntl.h>
+# include <unistd.h>
+# include <sys/types.h>
+# include <sys/mman.h>
+# ifndef MAP_FILE
+# define MAP_FILE 0
+# endif
+#endif
+]], [[
+ char *fence = NULL;
+#if HAVE_SYS_MMAN_H && HAVE_MPROTECT
+# if HAVE_MAP_ANONYMOUS
+ const int flags = MAP_ANONYMOUS | MAP_PRIVATE;
+ const int fd = -1;
+# else /* !HAVE_MAP_ANONYMOUS */
+ const int flags = MAP_FILE | MAP_PRIVATE;
+ int fd = open ("/dev/zero", O_RDONLY, 0666);
+ if (fd >= 0)
+# endif
+ {
+ int pagesize = getpagesize ();
+ char *two_pages =
+ (char *) mmap (NULL, 2 * pagesize, PROT_READ | PROT_WRITE,
+ flags, fd, 0);
+ if (two_pages != (char *)(-1)
+ && mprotect (two_pages + pagesize, pagesize, PROT_NONE) == 0)
+ fence = two_pages + pagesize;
+ }
+#endif
+ if (fence)
+ {
+ if (memchr (fence, 0, 0))
+ return 1;
+ strcpy (fence - 9, "12345678");
+ if (memchr (fence - 9, 0, 79) != fence - 1)
+ return 2;
+ }
+ return 0;
+]])], [gl_cv_func_memchr_works=yes], [gl_cv_func_memchr_works=no],
+ [dnl Be pessimistic for now.
+ gl_cv_func_memchr_works="guessing no"])])
+ if test "$gl_cv_func_memchr_works" != yes; then
+ gl_PREREQ_MEMCHR
+ REPLACE_MEMCHR=1
+ AC_LIBOBJ([memchr])
+ fi
+ fi
+])
+
+# Prerequisites of lib/memchr.c.
+AC_DEFUN([gl_PREREQ_MEMCHR], [
+ AC_CHECK_HEADERS([bp-sym.h])
+])
diff --git a/gnulib-m4/minmax.m4 b/gnulib-m4/minmax.m4
new file mode 100644
index 00000000..d2993fba
--- /dev/null
+++ b/gnulib-m4/minmax.m4
@@ -0,0 +1,41 @@
+# minmax.m4 serial 3
+dnl Copyright (C) 2005, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_PREREQ([2.52])
+
+AC_DEFUN([gl_MINMAX],
+[
+ AC_REQUIRE([gl_PREREQ_MINMAX])
+])
+
+# Prerequisites of lib/minmax.h.
+AC_DEFUN([gl_PREREQ_MINMAX],
+[
+ gl_MINMAX_IN_HEADER([limits.h])
+ gl_MINMAX_IN_HEADER([sys/param.h])
+])
+
+dnl gl_MINMAX_IN_HEADER(HEADER)
+dnl The parameter has to be a literal header name; it cannot be macro,
+dnl nor a shell variable. (Because autoheader collects only AC_DEFINE
+dnl invocations with a literal macro name.)
+AC_DEFUN([gl_MINMAX_IN_HEADER],
+[
+ m4_pushdef([header], AS_TR_SH([$1]))
+ m4_pushdef([HEADER], AS_TR_CPP([$1]))
+ AC_CACHE_CHECK([whether <$1> defines MIN and MAX],
+ [gl_cv_minmax_in_]header,
+ [AC_TRY_COMPILE([#include <$1>
+int x = MIN (42, 17);], [],
+ [gl_cv_minmax_in_]header[=yes],
+ [gl_cv_minmax_in_]header[=no])])
+ if test $gl_cv_minmax_in_[]header = yes; then
+ AC_DEFINE([HAVE_MINMAX_IN_]HEADER, 1,
+ [Define to 1 if <$1> defines the MIN and MAX macros.])
+ fi
+ m4_popdef([HEADER])
+ m4_popdef([header])
+])
diff --git a/gnulib-m4/mmap-anon.m4 b/gnulib-m4/mmap-anon.m4
new file mode 100644
index 00000000..14b6270d
--- /dev/null
+++ b/gnulib-m4/mmap-anon.m4
@@ -0,0 +1,59 @@
+# mmap-anon.m4 serial 8
+dnl Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Detect how mmap can be used to create anonymous (not file-backed) memory
+# mappings.
+# - On Linux, AIX, OSF/1, Solaris, Cygwin, Interix, Haiku, both MAP_ANONYMOUS
+# and MAP_ANON exist and have the same value.
+# - On HP-UX, only MAP_ANONYMOUS exists.
+# - On MacOS X, FreeBSD, NetBSD, OpenBSD, only MAP_ANON exists.
+# - On IRIX, neither exists, and a file descriptor opened to /dev/zero must be
+# used.
+
+AC_DEFUN([gl_FUNC_MMAP_ANON],
+[
+ dnl Work around a bug of AC_EGREP_CPP in autoconf-2.57.
+ AC_REQUIRE([AC_PROG_CPP])
+ AC_REQUIRE([AC_PROG_EGREP])
+
+ dnl Persuade glibc <sys/mman.h> to define MAP_ANONYMOUS.
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+ # Check for mmap(). Don't use AC_FUNC_MMAP, because it checks too much: it
+ # fails on HP-UX 11, because MAP_FIXED mappings do not work. But this is
+ # irrelevant for anonymous mappings.
+ AC_CHECK_FUNC([mmap], [gl_have_mmap=yes], [gl_have_mmap=no])
+
+ # Try to allow MAP_ANONYMOUS.
+ gl_have_mmap_anonymous=no
+ if test $gl_have_mmap = yes; then
+ AC_MSG_CHECKING([for MAP_ANONYMOUS])
+ AC_EGREP_CPP([I cant identify this map.], [
+#include <sys/mman.h>
+#ifdef MAP_ANONYMOUS
+ I cant identify this map.
+#endif
+],
+ [gl_have_mmap_anonymous=yes])
+ if test $gl_have_mmap_anonymous != yes; then
+ AC_EGREP_CPP([I cant identify this map.], [
+#include <sys/mman.h>
+#ifdef MAP_ANON
+ I cant identify this map.
+#endif
+],
+ [AC_DEFINE([MAP_ANONYMOUS], [MAP_ANON],
+ [Define to a substitute value for mmap()'s MAP_ANONYMOUS flag.])
+ gl_have_mmap_anonymous=yes])
+ fi
+ AC_MSG_RESULT([$gl_have_mmap_anonymous])
+ if test $gl_have_mmap_anonymous = yes; then
+ AC_DEFINE([HAVE_MAP_ANONYMOUS], [1],
+ [Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including
+ config.h and <sys/mman.h>.])
+ fi
+ fi
+])
diff --git a/gnulib-m4/multiarch.m4 b/gnulib-m4/multiarch.m4
new file mode 100644
index 00000000..ec377bac
--- /dev/null
+++ b/gnulib-m4/multiarch.m4
@@ -0,0 +1,65 @@
+# multiarch.m4 serial 5
+dnl Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Determine whether the compiler is or may be producing universal binaries.
+#
+# On MacOS X 10.5 and later systems, the user can create libraries and
+# executables that work on multiple system types--known as "fat" or
+# "universal" binaries--by specifying multiple '-arch' options to the
+# compiler but only a single '-arch' option to the preprocessor. Like
+# this:
+#
+# ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+# CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+# CPP="gcc -E" CXXCPP="g++ -E"
+#
+# Detect this situation and set the macro AA_APPLE_UNIVERSAL_BUILD at the
+# beginning of config.h and set APPLE_UNIVERSAL_BUILD accordingly.
+
+AC_DEFUN_ONCE([gl_MULTIARCH],
+[
+ dnl Code similar to autoconf-2.63 AC_C_BIGENDIAN.
+ gl_cv_c_multiarch=no
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifndef __APPLE_CC__
+ not a universal capable compiler
+ #endif
+ typedef int dummy;
+ ]])],
+ [
+ dnl Check for potential -arch flags. It is not universal unless
+ dnl there are at least two -arch flags with different values.
+ arch=
+ prev=
+ for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
+ if test -n "$prev"; then
+ case $word in
+ i?86 | x86_64 | ppc | ppc64)
+ if test -z "$arch" || test "$arch" = "$word"; then
+ arch="$word"
+ else
+ gl_cv_c_multiarch=yes
+ fi
+ ;;
+ esac
+ prev=
+ else
+ if test "x$word" = "x-arch"; then
+ prev=arch
+ fi
+ fi
+ done
+ ])
+ if test $gl_cv_c_multiarch = yes; then
+ AC_DEFINE([AA_APPLE_UNIVERSAL_BUILD], [1],
+ [Define if the compiler is building for multiple architectures of Apple platforms at once.])
+ APPLE_UNIVERSAL_BUILD=1
+ else
+ APPLE_UNIVERSAL_BUILD=0
+ fi
+ AC_SUBST([APPLE_UNIVERSAL_BUILD])
+])
diff --git a/gnulib-m4/nocrash.m4 b/gnulib-m4/nocrash.m4
new file mode 100644
index 00000000..8626ea0b
--- /dev/null
+++ b/gnulib-m4/nocrash.m4
@@ -0,0 +1,102 @@
+# nocrash.m4 serial 2
+dnl Copyright (C) 2005, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Based on libsigsegv, from Bruno Haible and Paolo Bonzini.
+
+AC_PREREQ([2.13])
+
+dnl Expands to some code for use in .c programs that will cause the configure
+dnl test to exit instead of crashing. This is useful to avoid triggering
+dnl action from a background debugger and to avoid core dumps.
+dnl Usage: ...
+dnl ]GL_NOCRASH[
+dnl ...
+dnl int main() { nocrash_init(); ... }
+AC_DEFUN([GL_NOCRASH],[[
+#include <stdlib.h>
+#if defined __MACH__ && defined __APPLE__
+/* Avoid a crash on MacOS X. */
+#include <mach/mach.h>
+#include <mach/mach_error.h>
+#include <mach/thread_status.h>
+#include <mach/exception.h>
+#include <mach/task.h>
+#include <pthread.h>
+/* The exception port on which our thread listens. */
+static mach_port_t our_exception_port;
+/* The main function of the thread listening for exceptions of type
+ EXC_BAD_ACCESS. */
+static void *
+mach_exception_thread (void *arg)
+{
+ /* Buffer for a message to be received. */
+ struct {
+ mach_msg_header_t head;
+ mach_msg_body_t msgh_body;
+ char data[1024];
+ } msg;
+ mach_msg_return_t retval;
+ /* Wait for a message on the exception port. */
+ retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg),
+ our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
+ if (retval != MACH_MSG_SUCCESS)
+ abort ();
+ exit (1);
+}
+static void
+nocrash_init (void)
+{
+ mach_port_t self = mach_task_self ();
+ /* Allocate a port on which the thread shall listen for exceptions. */
+ if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port)
+ == KERN_SUCCESS) {
+ /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */
+ if (mach_port_insert_right (self, our_exception_port, our_exception_port,
+ MACH_MSG_TYPE_MAKE_SEND)
+ == KERN_SUCCESS) {
+ /* The exceptions we want to catch. Only EXC_BAD_ACCESS is interesting
+ for us. */
+ exception_mask_t mask = EXC_MASK_BAD_ACCESS;
+ /* Create the thread listening on the exception port. */
+ pthread_attr_t attr;
+ pthread_t thread;
+ if (pthread_attr_init (&attr) == 0
+ && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0
+ && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) {
+ pthread_attr_destroy (&attr);
+ /* Replace the exception port info for these exceptions with our own.
+ Note that we replace the exception port for the entire task, not only
+ for a particular thread. This has the effect that when our exception
+ port gets the message, the thread specific exception port has already
+ been asked, and we don't need to bother about it.
+ See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */
+ task_set_exception_ports (self, mask, our_exception_port,
+ EXCEPTION_DEFAULT, MACHINE_THREAD_STATE);
+ }
+ }
+ }
+}
+#else
+/* Avoid a crash on POSIX systems. */
+#include <signal.h>
+/* A POSIX signal handler. */
+static void
+exception_handler (int sig)
+{
+ exit (1);
+}
+static void
+nocrash_init (void)
+{
+#ifdef SIGSEGV
+ signal (SIGSEGV, exception_handler);
+#endif
+#ifdef SIGBUS
+ signal (SIGBUS, exception_handler);
+#endif
+}
+#endif
+]])
diff --git a/gnulib-m4/printf-frexp.m4 b/gnulib-m4/printf-frexp.m4
new file mode 100644
index 00000000..fa0aa158
--- /dev/null
+++ b/gnulib-m4/printf-frexp.m4
@@ -0,0 +1,45 @@
+# printf-frexp.m4 serial 3
+dnl Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Check how to define printf_frexp() without linking with libm.
+
+AC_DEFUN([gl_FUNC_PRINTF_FREXP],
+[
+ AC_CACHE_CHECK([whether frexp can be used without linking with libm],
+ [gl_cv_func_frexp_no_libm],
+ [
+ AC_TRY_LINK([#include <math.h>
+ double x;
+ int y;],
+ [return frexp (x, &y) < 1;],
+ [gl_cv_func_frexp_no_libm=yes],
+ [gl_cv_func_frexp_no_libm=no])
+ ])
+ if test $gl_cv_func_frexp_no_libm = yes; then
+ gl_FUNC_FREXP_WORKS
+ case "$gl_cv_func_frexp_works" in
+ *yes)
+ AC_DEFINE([HAVE_FREXP_IN_LIBC], [1],
+ [Define if the frexp function is available in libc.])
+ ;;
+ esac
+ fi
+
+ AC_CACHE_CHECK([whether ldexp can be used without linking with libm],
+ [gl_cv_func_ldexp_no_libm],
+ [
+ AC_TRY_LINK([#include <math.h>
+ double x;
+ int y;],
+ [return ldexp (x, y) < 1;],
+ [gl_cv_func_ldexp_no_libm=yes],
+ [gl_cv_func_ldexp_no_libm=no])
+ ])
+ if test $gl_cv_func_ldexp_no_libm = yes; then
+ AC_DEFINE([HAVE_LDEXP_IN_LIBC], [1],
+ [Define if the ldexp function is available in libc.])
+ fi
+])
diff --git a/gnulib-m4/printf-frexpl.m4 b/gnulib-m4/printf-frexpl.m4
new file mode 100644
index 00000000..f2eb2004
--- /dev/null
+++ b/gnulib-m4/printf-frexpl.m4
@@ -0,0 +1,64 @@
+# printf-frexpl.m4 serial 6
+dnl Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Check how to define printf_frexpl() without linking with libm.
+
+AC_DEFUN([gl_FUNC_PRINTF_FREXPL],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ dnl Subset of gl_FUNC_FREXPL_NO_LIBM.
+ AC_CACHE_CHECK([whether frexpl can be used without linking with libm],
+ [gl_cv_func_frexpl_no_libm],
+ [
+ AC_TRY_LINK([#include <math.h>
+ long double x;
+ int y;],
+ [return frexpl (x, &y) < 1;],
+ [gl_cv_func_frexpl_no_libm=yes],
+ [gl_cv_func_frexpl_no_libm=no])
+ ])
+ if test $gl_cv_func_frexpl_no_libm = yes; then
+ gl_FUNC_FREXPL_WORKS
+ case "$gl_cv_func_frexpl_works" in
+ *yes) gl_func_frexpl_no_libm=yes ;;
+ *) gl_func_frexpl_no_libm=no; REPLACE_FREXPL=1 ;;
+ esac
+ else
+ gl_func_frexpl_no_libm=no
+ dnl Set REPLACE_FREXPL here because the system may have frexpl in libm.
+ REPLACE_FREXPL=1
+ fi
+ if test $gl_func_frexpl_no_libm = yes; then
+ AC_DEFINE([HAVE_FREXPL_IN_LIBC], [1],
+ [Define if the frexpl function is available in libc.])
+ dnl Also check whether it's declared.
+ dnl MacOS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>.
+ AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [#include <math.h>])
+ fi
+
+ AC_CACHE_CHECK([whether ldexpl can be used without linking with libm],
+ [gl_cv_func_ldexpl_no_libm],
+ [
+ AC_TRY_LINK([#include <math.h>
+ long double x;
+ int y;],
+ [return ldexpl (x, y) < 1;],
+ [gl_cv_func_ldexpl_no_libm=yes],
+ [gl_cv_func_ldexpl_no_libm=no])
+ ])
+ if test $gl_cv_func_ldexpl_no_libm = yes; then
+ gl_FUNC_LDEXPL_WORKS
+ case "$gl_cv_func_ldexpl_works" in
+ *yes)
+ AC_DEFINE([HAVE_LDEXPL_IN_LIBC], [1],
+ [Define if the ldexpl function is available in libc.])
+ dnl Also check whether it's declared.
+ dnl MacOS X 10.3 has ldexpl() in libc but doesn't declare it in <math.h>.
+ AC_CHECK_DECL([ldexpl], , [HAVE_DECL_LDEXPL=0], [#include <math.h>])
+ ;;
+ esac
+ fi
+])
diff --git a/gnulib-m4/printf.m4 b/gnulib-m4/printf.m4
new file mode 100644
index 00000000..87aa45c5
--- /dev/null
+++ b/gnulib-m4/printf.m4
@@ -0,0 +1,1416 @@
+# printf.m4 serial 33
+dnl Copyright (C) 2003, 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Test whether the *printf family of functions supports the 'j', 'z', 't',
+dnl 'L' size specifiers. (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_printf_sizes_c99.
+
+AC_DEFUN([gl_PRINTF_SIZES_C99],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([gl_AC_HEADER_STDINT_H])
+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether printf supports size specifiers as in C99],
+ [gl_cv_func_printf_sizes_c99],
+ [
+ AC_TRY_RUN([
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#if HAVE_STDINT_H_WITH_UINTMAX
+# include <stdint.h>
+#endif
+#if HAVE_INTTYPES_H_WITH_UINTMAX
+# include <inttypes.h>
+#endif
+static char buf[100];
+int main ()
+{
+#if HAVE_STDINT_H_WITH_UINTMAX || HAVE_INTTYPES_H_WITH_UINTMAX
+ buf[0] = '\0';
+ if (sprintf (buf, "%ju %d", (uintmax_t) 12345671, 33, 44, 55) < 0
+ || strcmp (buf, "12345671 33") != 0)
+ return 1;
+#endif
+ buf[0] = '\0';
+ if (sprintf (buf, "%zu %d", (size_t) 12345672, 33, 44, 55) < 0
+ || strcmp (buf, "12345672 33") != 0)
+ return 1;
+ buf[0] = '\0';
+ if (sprintf (buf, "%tu %d", (ptrdiff_t) 12345673, 33, 44, 55) < 0
+ || strcmp (buf, "12345673 33") != 0)
+ return 1;
+ buf[0] = '\0';
+ if (sprintf (buf, "%Lg %d", (long double) 1.5, 33, 44, 55) < 0
+ || strcmp (buf, "1.5 33") != 0)
+ return 1;
+ return 0;
+}], [gl_cv_func_printf_sizes_c99=yes], [gl_cv_func_printf_sizes_c99=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_printf_sizes_c99="guessing yes";;
+ # Guess yes on FreeBSD >= 5.
+ freebsd[1-4]*) gl_cv_func_printf_sizes_c99="guessing no";;
+ freebsd* | kfreebsd*) gl_cv_func_printf_sizes_c99="guessing yes";;
+ # Guess yes on MacOS X >= 10.3.
+ darwin[1-6].*) gl_cv_func_printf_sizes_c99="guessing no";;
+ darwin*) gl_cv_func_printf_sizes_c99="guessing yes";;
+ # Guess yes on OpenBSD >= 3.9.
+ openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
+ gl_cv_func_printf_sizes_c99="guessing no";;
+ openbsd*) gl_cv_func_printf_sizes_c99="guessing yes";;
+ # Guess yes on Solaris >= 2.10.
+ solaris2.[0-9]*) gl_cv_func_printf_sizes_c99="guessing no";;
+ solaris*) gl_cv_func_printf_sizes_c99="guessing yes";;
+ # Guess yes on NetBSD >= 3.
+ netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+ gl_cv_func_printf_sizes_c99="guessing no";;
+ netbsd*) gl_cv_func_printf_sizes_c99="guessing yes";;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_printf_sizes_c99="guessing no";;
+ esac
+changequote([,])dnl
+ ])
+ ])
+])
+
+dnl Test whether the *printf family of functions supports 'long double'
+dnl arguments together with the 'L' size specifier. (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_printf_long_double.
+
+AC_DEFUN([gl_PRINTF_LONG_DOUBLE],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether printf supports 'long double' arguments],
+ [gl_cv_func_printf_long_double],
+ [
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+static char buf[10000];
+int main ()
+{
+ buf[0] = '\0';
+ if (sprintf (buf, "%Lf %d", 1.75L, 33, 44, 55) < 0
+ || strcmp (buf, "1.750000 33") != 0)
+ return 1;
+ buf[0] = '\0';
+ if (sprintf (buf, "%Le %d", 1.75L, 33, 44, 55) < 0
+ || strcmp (buf, "1.750000e+00 33") != 0)
+ return 1;
+ buf[0] = '\0';
+ if (sprintf (buf, "%Lg %d", 1.75L, 33, 44, 55) < 0
+ || strcmp (buf, "1.75 33") != 0)
+ return 1;
+ return 0;
+}], [gl_cv_func_printf_long_double=yes], [gl_cv_func_printf_long_double=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
+ beos*) gl_cv_func_printf_long_double="guessing no";;
+ mingw* | pw*) gl_cv_func_printf_long_double="guessing no";;
+ *) gl_cv_func_printf_long_double="guessing yes";;
+ esac
+changequote([,])dnl
+ ])
+ ])
+])
+
+dnl Test whether the *printf family of functions supports infinite and NaN
+dnl 'double' arguments and negative zero arguments in the %f, %e, %g
+dnl directives. (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_printf_infinite.
+
+AC_DEFUN([gl_PRINTF_INFINITE],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether printf supports infinite 'double' arguments],
+ [gl_cv_func_printf_infinite],
+ [
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+static int
+strisnan (const char *string, size_t start_index, size_t end_index)
+{
+ if (start_index < end_index)
+ {
+ if (string[start_index] == '-')
+ start_index++;
+ if (start_index + 3 <= end_index
+ && memcmp (string + start_index, "nan", 3) == 0)
+ {
+ start_index += 3;
+ if (start_index == end_index
+ || (string[start_index] == '(' && string[end_index - 1] == ')'))
+ return 1;
+ }
+ }
+ return 0;
+}
+static int
+have_minus_zero ()
+{
+ static double plus_zero = 0.0;
+ double minus_zero = - plus_zero;
+ return memcmp (&plus_zero, &minus_zero, sizeof (double)) != 0;
+}
+static char buf[10000];
+static double zero = 0.0;
+int main ()
+{
+ if (sprintf (buf, "%f", 1.0 / 0.0) < 0
+ || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%f", -1.0 / 0.0) < 0
+ || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%f", zero / zero) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%e", 1.0 / 0.0) < 0
+ || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%e", -1.0 / 0.0) < 0
+ || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%e", zero / zero) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%g", 1.0 / 0.0) < 0
+ || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%g", -1.0 / 0.0) < 0
+ || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%g", zero / zero) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ /* This test fails on HP-UX 10.20. */
+ if (have_minus_zero ())
+ if (sprintf (buf, "%g", - zero) < 0
+ || strcmp (buf, "-0") != 0)
+ return 1;
+ return 0;
+}], [gl_cv_func_printf_infinite=yes], [gl_cv_func_printf_infinite=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_printf_infinite="guessing yes";;
+ # Guess yes on FreeBSD >= 6.
+ freebsd[1-5]*) gl_cv_func_printf_infinite="guessing no";;
+ freebsd* | kfreebsd*) gl_cv_func_printf_infinite="guessing yes";;
+ # Guess yes on MacOS X >= 10.3.
+ darwin[1-6].*) gl_cv_func_printf_infinite="guessing no";;
+ darwin*) gl_cv_func_printf_infinite="guessing yes";;
+ # Guess yes on HP-UX >= 11.
+ hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite="guessing no";;
+ hpux*) gl_cv_func_printf_infinite="guessing yes";;
+ # Guess yes on NetBSD >= 3.
+ netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+ gl_cv_func_printf_infinite="guessing no";;
+ netbsd*) gl_cv_func_printf_infinite="guessing yes";;
+ # Guess yes on BeOS.
+ beos*) gl_cv_func_printf_infinite="guessing yes";;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_printf_infinite="guessing no";;
+ esac
+changequote([,])dnl
+ ])
+ ])
+])
+
+dnl Test whether the *printf family of functions supports infinite and NaN
+dnl 'long double' arguments in the %f, %e, %g directives. (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_printf_infinite_long_double.
+
+AC_DEFUN([gl_PRINTF_INFINITE_LONG_DOUBLE],
+[
+ AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([gl_BIGENDIAN])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ dnl The user can set or unset the variable gl_printf_safe to indicate
+ dnl that he wishes a safe handling of non-IEEE-754 'long double' values.
+ if test -n "$gl_printf_safe"; then
+ AC_DEFINE([CHECK_PRINTF_SAFE], [1],
+ [Define if you wish *printf() functions that have a safe handling of
+ non-IEEE-754 'long double' values.])
+ fi
+ case "$gl_cv_func_printf_long_double" in
+ *yes)
+ AC_CACHE_CHECK([whether printf supports infinite 'long double' arguments],
+ [gl_cv_func_printf_infinite_long_double],
+ [
+ AC_TRY_RUN([
+]GL_NOCRASH[
+#include <float.h>
+#include <stdio.h>
+#include <string.h>
+static int
+strisnan (const char *string, size_t start_index, size_t end_index)
+{
+ if (start_index < end_index)
+ {
+ if (string[start_index] == '-')
+ start_index++;
+ if (start_index + 3 <= end_index
+ && memcmp (string + start_index, "nan", 3) == 0)
+ {
+ start_index += 3;
+ if (start_index == end_index
+ || (string[start_index] == '(' && string[end_index - 1] == ')'))
+ return 1;
+ }
+ }
+ return 0;
+}
+static char buf[10000];
+static long double zeroL = 0.0L;
+int main ()
+{
+ nocrash_init();
+ if (sprintf (buf, "%Lf", 1.0L / 0.0L) < 0
+ || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%Lf", -1.0L / 0.0L) < 0
+ || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%Lf", zeroL / zeroL) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Le", 1.0L / 0.0L) < 0
+ || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%Le", -1.0L / 0.0L) < 0
+ || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%Le", zeroL / zeroL) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Lg", 1.0L / 0.0L) < 0
+ || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%Lg", -1.0L / 0.0L) < 0
+ || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+ return 1;
+ if (sprintf (buf, "%Lg", zeroL / zeroL) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+/* Representation of an 80-bit 'long double' as an initializer for a sequence
+ of 'unsigned int' words. */
+# ifdef WORDS_BIGENDIAN
+# define LDBL80_WORDS(exponent,manthi,mantlo) \
+ { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \
+ ((unsigned int) (manthi) << 16) | (unsigned int) (mantlo) >> 16), \
+ (unsigned int) (mantlo) << 16 \
+ }
+# else
+# define LDBL80_WORDS(exponent,manthi,mantlo) \
+ { mantlo, manthi, exponent }
+# endif
+ { /* Quiet NaN. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Le", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Lg", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ }
+ {
+ /* Signalling NaN. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Le", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Lg", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ }
+ { /* Pseudo-NaN. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Le", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Lg", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ }
+ { /* Pseudo-Infinity. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Le", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Lg", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ }
+ { /* Pseudo-Zero. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Le", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Lg", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ }
+ { /* Unnormalized number. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Le", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Lg", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ }
+ { /* Pseudo-Denormal. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Le", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ if (sprintf (buf, "%Lg", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ return 1;
+ }
+#endif
+ return 0;
+}],
+ [gl_cv_func_printf_infinite_long_double=yes],
+ [gl_cv_func_printf_infinite_long_double=no],
+ [
+changequote(,)dnl
+ case "$host_cpu" in
+ # Guess no on ia64, x86_64, i386.
+ ia64 | x86_64 | i*86) gl_cv_func_printf_infinite_long_double="guessing no";;
+ *)
+ case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_printf_infinite_long_double="guessing yes";;
+ # Guess yes on FreeBSD >= 6.
+ freebsd[1-5]*) gl_cv_func_printf_infinite_long_double="guessing no";;
+ freebsd* | kfreebsd*) gl_cv_func_printf_infinite_long_double="guessing yes";;
+ # Guess yes on MacOS X >= 10.3.
+ darwin[1-6].*) gl_cv_func_printf_infinite_long_double="guessing no";;
+ darwin*) gl_cv_func_printf_infinite_long_double="guessing yes";;
+ # Guess yes on HP-UX >= 11.
+ hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite_long_double="guessing no";;
+ hpux*) gl_cv_func_printf_infinite_long_double="guessing yes";;
+ # Guess yes on NetBSD >= 3.
+ netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+ gl_cv_func_printf_infinite_long_double="guessing no";;
+ netbsd*) gl_cv_func_printf_infinite_long_double="guessing yes";;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_printf_infinite_long_double="guessing no";;
+ esac
+ ;;
+ esac
+changequote([,])dnl
+ ])
+ ])
+ ;;
+ *)
+ gl_cv_func_printf_infinite_long_double="irrelevant"
+ ;;
+ esac
+])
+
+dnl Test whether the *printf family of functions supports the 'a' and 'A'
+dnl conversion specifier for hexadecimal output of floating-point numbers.
+dnl (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_printf_directive_a.
+
+AC_DEFUN([gl_PRINTF_DIRECTIVE_A],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether printf supports the 'a' and 'A' directives],
+ [gl_cv_func_printf_directive_a],
+ [
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+ if (sprintf (buf, "%a %d", 3.1416015625, 33, 44, 55) < 0
+ || (strcmp (buf, "0x1.922p+1 33") != 0
+ && strcmp (buf, "0x3.244p+0 33") != 0
+ && strcmp (buf, "0x6.488p-1 33") != 0
+ && strcmp (buf, "0xc.91p-2 33") != 0))
+ return 1;
+ if (sprintf (buf, "%A %d", -3.1416015625, 33, 44, 55) < 0
+ || (strcmp (buf, "-0X1.922P+1 33") != 0
+ && strcmp (buf, "-0X3.244P+0 33") != 0
+ && strcmp (buf, "-0X6.488P-1 33") != 0
+ && strcmp (buf, "-0XC.91P-2 33") != 0))
+ return 1;
+ /* This catches a FreeBSD 6.1 bug: it doesn't round. */
+ if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0
+ || (strcmp (buf, "0x1.83p+0 33") != 0
+ && strcmp (buf, "0x3.05p-1 33") != 0
+ && strcmp (buf, "0x6.0ap-2 33") != 0
+ && strcmp (buf, "0xc.14p-3 33") != 0))
+ return 1;
+ /* This catches a FreeBSD 6.1 bug. See
+ <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+ if (sprintf (buf, "%010a %d", 1.0 / 0.0, 33, 44, 55) < 0
+ || buf[0] == '0')
+ return 1;
+ /* This catches a MacOS X 10.3.9 (Darwin 7.9) bug. */
+ if (sprintf (buf, "%.1a", 1.999) < 0
+ || (strcmp (buf, "0x1.0p+1") != 0
+ && strcmp (buf, "0x2.0p+0") != 0
+ && strcmp (buf, "0x4.0p-1") != 0
+ && strcmp (buf, "0x8.0p-2") != 0))
+ return 1;
+ /* This catches the same MacOS X 10.3.9 (Darwin 7.9) bug and also a
+ glibc 2.4 bug <http://sourceware.org/bugzilla/show_bug.cgi?id=2908>. */
+ if (sprintf (buf, "%.1La", 1.999L) < 0
+ || (strcmp (buf, "0x1.0p+1") != 0
+ && strcmp (buf, "0x2.0p+0") != 0
+ && strcmp (buf, "0x4.0p-1") != 0
+ && strcmp (buf, "0x8.0p-2") != 0))
+ return 1;
+ return 0;
+}], [gl_cv_func_printf_directive_a=yes], [gl_cv_func_printf_directive_a=no],
+ [
+ case "$host_os" in
+ # Guess yes on glibc >= 2.5 systems.
+ *-gnu*)
+ AC_EGREP_CPP([BZ2908], [
+ #include <features.h>
+ #ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 5) || (__GLIBC__ > 2)
+ BZ2908
+ #endif
+ #endif
+ ],
+ [gl_cv_func_printf_directive_a="guessing yes"],
+ [gl_cv_func_printf_directive_a="guessing no"])
+ ;;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_printf_directive_a="guessing no";;
+ esac
+ ])
+ ])
+])
+
+dnl Test whether the *printf family of functions supports the %F format
+dnl directive. (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_printf_directive_f.
+
+AC_DEFUN([gl_PRINTF_DIRECTIVE_F],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether printf supports the 'F' directive],
+ [gl_cv_func_printf_directive_f],
+ [
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+ if (sprintf (buf, "%F %d", 1234567.0, 33, 44, 55) < 0
+ || strcmp (buf, "1234567.000000 33") != 0)
+ return 1;
+ if (sprintf (buf, "%F", 1.0 / 0.0) < 0
+ || (strcmp (buf, "INF") != 0 && strcmp (buf, "INFINITY") != 0))
+ return 1;
+ /* This catches a Cygwin 1.5.x bug. */
+ if (sprintf (buf, "%.F", 1234.0) < 0
+ || strcmp (buf, "1234") != 0)
+ return 1;
+ return 0;
+}], [gl_cv_func_printf_directive_f=yes], [gl_cv_func_printf_directive_f=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_printf_directive_f="guessing yes";;
+ # Guess yes on FreeBSD >= 6.
+ freebsd[1-5]*) gl_cv_func_printf_directive_f="guessing no";;
+ freebsd* | kfreebsd*) gl_cv_func_printf_directive_f="guessing yes";;
+ # Guess yes on MacOS X >= 10.3.
+ darwin[1-6].*) gl_cv_func_printf_directive_f="guessing no";;
+ darwin*) gl_cv_func_printf_directive_f="guessing yes";;
+ # Guess yes on Solaris >= 2.10.
+ solaris2.[0-9]*) gl_cv_func_printf_directive_f="guessing no";;
+ solaris*) gl_cv_func_printf_directive_f="guessing yes";;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_printf_directive_f="guessing no";;
+ esac
+changequote([,])dnl
+ ])
+ ])
+])
+
+dnl Test whether the *printf family of functions supports the %n format
+dnl directive. (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_printf_directive_n.
+
+AC_DEFUN([gl_PRINTF_DIRECTIVE_N],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether printf supports the 'n' directive],
+ [gl_cv_func_printf_directive_n],
+ [
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+static char fmtstring[10];
+static char buf[100];
+int main ()
+{
+ int count = -1;
+ /* Copy the format string. Some systems (glibc with _FORTIFY_SOURCE=2)
+ support %n in format strings in read-only memory but not in writable
+ memory. */
+ strcpy (fmtstring, "%d %n");
+ if (sprintf (buf, fmtstring, 123, &count, 33, 44, 55) < 0
+ || strcmp (buf, "123 ") != 0
+ || count != 4)
+ return 1;
+ return 0;
+}], [gl_cv_func_printf_directive_n=yes], [gl_cv_func_printf_directive_n=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
+ *) gl_cv_func_printf_directive_n="guessing yes";;
+ esac
+changequote([,])dnl
+ ])
+ ])
+])
+
+dnl Test whether the *printf family of functions supports the %ls format
+dnl directive and in particular, when a precision is specified, whether
+dnl the functions stop converting the wide string argument when the number
+dnl of bytes that have been produced by this conversion equals or exceeds
+dnl the precision.
+dnl Result is gl_cv_func_printf_directive_ls.
+
+AC_DEFUN([gl_PRINTF_DIRECTIVE_LS],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether printf supports the 'ls' directive],
+ [gl_cv_func_printf_directive_ls],
+ [
+ AC_TRY_RUN([
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+#include <string.h>
+int main ()
+{
+ char buf[100];
+ /* Test whether %ls works at all.
+ This test fails on OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Haiku, but not on
+ Cygwin 1.5. */
+ {
+ static const wchar_t wstring[] = { 'a', 'b', 'c', 0 };
+ buf[0] = '\0';
+ if (sprintf (buf, "%ls", wstring) < 0
+ || strcmp (buf, "abc") != 0)
+ return 1;
+ }
+ /* This test fails on IRIX 6.5, Solaris 2.6, Cygwin 1.5, Haiku (with an
+ assertion failure inside libc), but not on OpenBSD 4.0. */
+ {
+ static const wchar_t wstring[] = { 'a', 0 };
+ buf[0] = '\0';
+ if (sprintf (buf, "%ls", wstring) < 0
+ || strcmp (buf, "a") != 0)
+ return 1;
+ }
+ /* Test whether precisions in %ls are supported as specified in ISO C 99
+ section 7.19.6.1:
+ "If a precision is specified, no more than that many bytes are written
+ (including shift sequences, if any), and the array shall contain a
+ null wide character if, to equal the multibyte character sequence
+ length given by the precision, the function would need to access a
+ wide character one past the end of the array."
+ This test fails on Solaris 10. */
+ {
+ static const wchar_t wstring[] = { 'a', 'b', (wchar_t) 0xfdfdfdfd, 0 };
+ buf[0] = '\0';
+ if (sprintf (buf, "%.2ls", wstring) < 0
+ || strcmp (buf, "ab") != 0)
+ return 1;
+ }
+ return 0;
+}], [gl_cv_func_printf_directive_ls=yes], [gl_cv_func_printf_directive_ls=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
+ openbsd*) gl_cv_func_printf_directive_ls="guessing no";;
+ irix*) gl_cv_func_printf_directive_ls="guessing no";;
+ solaris*) gl_cv_func_printf_directive_ls="guessing no";;
+ cygwin*) gl_cv_func_printf_directive_ls="guessing no";;
+ beos* | haiku*) gl_cv_func_printf_directive_ls="guessing no";;
+ *) gl_cv_func_printf_directive_ls="guessing yes";;
+ esac
+changequote([,])dnl
+ ])
+ ])
+])
+
+dnl Test whether the *printf family of functions supports POSIX/XSI format
+dnl strings with positions. (POSIX:2001)
+dnl Result is gl_cv_func_printf_positions.
+
+AC_DEFUN([gl_PRINTF_POSITIONS],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether printf supports POSIX/XSI format strings with positions],
+ [gl_cv_func_printf_positions],
+ [
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+/* The string "%2$d %1$d", with dollar characters protected from the shell's
+ dollar expansion (possibly an autoconf bug). */
+static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
+static char buf[100];
+int main ()
+{
+ sprintf (buf, format, 33, 55);
+ return (strcmp (buf, "55 33") != 0);
+}], [gl_cv_func_printf_positions=yes], [gl_cv_func_printf_positions=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
+ netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | netbsdcoff[1-3]*)
+ gl_cv_func_printf_positions="guessing no";;
+ beos*) gl_cv_func_printf_positions="guessing no";;
+ mingw* | pw*) gl_cv_func_printf_positions="guessing no";;
+ *) gl_cv_func_printf_positions="guessing yes";;
+ esac
+changequote([,])dnl
+ ])
+ ])
+])
+
+dnl Test whether the *printf family of functions supports POSIX/XSI format
+dnl strings with the ' flag for grouping of decimal digits. (POSIX:2001)
+dnl Result is gl_cv_func_printf_flag_grouping.
+
+AC_DEFUN([gl_PRINTF_FLAG_GROUPING],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether printf supports the grouping flag],
+ [gl_cv_func_printf_flag_grouping],
+ [
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+ if (sprintf (buf, "%'d %d", 1234567, 99) < 0
+ || buf[strlen (buf) - 1] != '9')
+ return 1;
+ return 0;
+}], [gl_cv_func_printf_flag_grouping=yes], [gl_cv_func_printf_flag_grouping=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
+ cygwin*) gl_cv_func_printf_flag_grouping="guessing no";;
+ netbsd*) gl_cv_func_printf_flag_grouping="guessing no";;
+ mingw* | pw*) gl_cv_func_printf_flag_grouping="guessing no";;
+ *) gl_cv_func_printf_flag_grouping="guessing yes";;
+ esac
+changequote([,])dnl
+ ])
+ ])
+])
+
+dnl Test whether the *printf family of functions supports the - flag correctly.
+dnl (ISO C99.) See
+dnl <http://lists.gnu.org/archive/html/bug-coreutils/2008-02/msg00035.html>
+dnl Result is gl_cv_func_printf_flag_leftadjust.
+
+AC_DEFUN([gl_PRINTF_FLAG_LEFTADJUST],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether printf supports the left-adjust flag correctly],
+ [gl_cv_func_printf_flag_leftadjust],
+ [
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+ /* Check that a '-' flag is not annihilated by a negative width. */
+ if (sprintf (buf, "a%-*sc", -3, "b") < 0
+ || strcmp (buf, "ab c") != 0)
+ return 1;
+ return 0;
+}],
+ [gl_cv_func_printf_flag_leftadjust=yes],
+ [gl_cv_func_printf_flag_leftadjust=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
+ # Guess yes on HP-UX 11.
+ hpux11*) gl_cv_func_printf_flag_leftadjust="guessing yes";;
+ # Guess no on HP-UX 10 and older.
+ hpux*) gl_cv_func_printf_flag_leftadjust="guessing no";;
+ # Guess yes otherwise.
+ *) gl_cv_func_printf_flag_leftadjust="guessing yes";;
+ esac
+changequote([,])dnl
+ ])
+ ])
+])
+
+dnl Test whether the *printf family of functions supports padding of non-finite
+dnl values with the 0 flag correctly. (ISO C99 + TC1 + TC2.) See
+dnl <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html>
+dnl Result is gl_cv_func_printf_flag_zero.
+
+AC_DEFUN([gl_PRINTF_FLAG_ZERO],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether printf supports the zero flag correctly],
+ [gl_cv_func_printf_flag_zero],
+ [
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+ if (sprintf (buf, "%010f", 1.0 / 0.0, 33, 44, 55) < 0
+ || (strcmp (buf, " inf") != 0
+ && strcmp (buf, " infinity") != 0))
+ return 1;
+ return 0;
+}], [gl_cv_func_printf_flag_zero=yes], [gl_cv_func_printf_flag_zero=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_printf_flag_zero="guessing yes";;
+ # Guess yes on BeOS.
+ beos*) gl_cv_func_printf_flag_zero="guessing yes";;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_printf_flag_zero="guessing no";;
+ esac
+changequote([,])dnl
+ ])
+ ])
+])
+
+dnl Test whether the *printf family of functions supports large precisions.
+dnl On mingw, precisions larger than 512 are treated like 512, in integer,
+dnl floating-point or pointer output. On BeOS, precisions larger than 1044
+dnl crash the program.
+dnl Result is gl_cv_func_printf_precision.
+
+AC_DEFUN([gl_PRINTF_PRECISION],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether printf supports large precisions],
+ [gl_cv_func_printf_precision],
+ [
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+static char buf[5000];
+int main ()
+{
+#ifdef __BEOS__
+ /* On BeOS, this would crash and show a dialog box. Avoid the crash. */
+ return 1;
+#endif
+ if (sprintf (buf, "%.4000d %d", 1, 33, 44) < 4000 + 3)
+ return 1;
+ return 0;
+}], [gl_cv_func_printf_precision=yes], [gl_cv_func_printf_precision=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
+ # Guess no only on native Win32 and BeOS systems.
+ mingw* | pw*) gl_cv_func_printf_precision="guessing no" ;;
+ beos*) gl_cv_func_printf_precision="guessing no" ;;
+ *) gl_cv_func_printf_precision="guessing yes" ;;
+ esac
+changequote([,])dnl
+ ])
+ ])
+])
+
+dnl Test whether the *printf family of functions recovers gracefully in case
+dnl of an out-of-memory condition, or whether it crashes the entire program.
+dnl Result is gl_cv_func_printf_enomem.
+
+AC_DEFUN([gl_PRINTF_ENOMEM],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([gl_MULTIARCH])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether printf survives out-of-memory conditions],
+ [gl_cv_func_printf_enomem],
+ [
+ gl_cv_func_printf_enomem="guessing no"
+ if test "$cross_compiling" = no; then
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+ AC_LANG_CONFTEST([AC_LANG_SOURCE([
+]GL_NOCRASH[
+changequote(,)dnl
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <errno.h>
+int main()
+{
+ struct rlimit limit;
+ int ret;
+ nocrash_init ();
+ /* Some printf implementations allocate temporary space with malloc. */
+ /* On BSD systems, malloc() is limited by RLIMIT_DATA. */
+#ifdef RLIMIT_DATA
+ if (getrlimit (RLIMIT_DATA, &limit) < 0)
+ return 77;
+ if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
+ limit.rlim_max = 5000000;
+ limit.rlim_cur = limit.rlim_max;
+ if (setrlimit (RLIMIT_DATA, &limit) < 0)
+ return 77;
+#endif
+ /* On Linux systems, malloc() is limited by RLIMIT_AS. */
+#ifdef RLIMIT_AS
+ if (getrlimit (RLIMIT_AS, &limit) < 0)
+ return 77;
+ if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
+ limit.rlim_max = 5000000;
+ limit.rlim_cur = limit.rlim_max;
+ if (setrlimit (RLIMIT_AS, &limit) < 0)
+ return 77;
+#endif
+ /* Some printf implementations allocate temporary space on the stack. */
+#ifdef RLIMIT_STACK
+ if (getrlimit (RLIMIT_STACK, &limit) < 0)
+ return 77;
+ if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
+ limit.rlim_max = 5000000;
+ limit.rlim_cur = limit.rlim_max;
+ if (setrlimit (RLIMIT_STACK, &limit) < 0)
+ return 77;
+#endif
+ ret = printf ("%.5000000f", 1.0);
+ return !(ret == 5000002 || (ret < 0 && errno == ENOMEM));
+}
+changequote([,])dnl
+ ])])
+ if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+ (./conftest
+ result=$?
+ if test $result != 0 && test $result != 77; then result=1; fi
+ exit $result
+ ) >/dev/null 2>/dev/null
+ case $? in
+ 0) gl_cv_func_printf_enomem="yes" ;;
+ 77) gl_cv_func_printf_enomem="guessing no" ;;
+ *) gl_cv_func_printf_enomem="no" ;;
+ esac
+ else
+ gl_cv_func_printf_enomem="guessing no"
+ fi
+ rm -fr conftest*
+ else
+ dnl A universal build on Apple MacOS X platforms.
+ dnl The result would be 'no' in 32-bit mode and 'yes' in 64-bit mode.
+ dnl But we need a configuration result that is valid in both modes.
+ gl_cv_func_printf_enomem="guessing no"
+ fi
+ fi
+ if test "$gl_cv_func_printf_enomem" = "guessing no"; then
+changequote(,)dnl
+ case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_printf_enomem="guessing yes";;
+ # Guess yes on Solaris.
+ solaris*) gl_cv_func_printf_enomem="guessing yes";;
+ # Guess yes on AIX.
+ aix*) gl_cv_func_printf_enomem="guessing yes";;
+ # Guess yes on HP-UX/hppa.
+ hpux*) case "$host_cpu" in
+ hppa*) gl_cv_func_printf_enomem="guessing yes";;
+ *) gl_cv_func_printf_enomem="guessing no";;
+ esac
+ ;;
+ # Guess yes on IRIX.
+ irix*) gl_cv_func_printf_enomem="guessing yes";;
+ # Guess yes on OSF/1.
+ osf*) gl_cv_func_printf_enomem="guessing yes";;
+ # Guess yes on BeOS.
+ beos*) gl_cv_func_printf_enomem="guessing yes";;
+ # Guess yes on Haiku.
+ haiku*) gl_cv_func_printf_enomem="guessing yes";;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_printf_enomem="guessing no";;
+ esac
+changequote([,])dnl
+ fi
+ ])
+])
+
+dnl Test whether the snprintf function exists. (ISO C99, POSIX:2001)
+dnl Result is ac_cv_func_snprintf.
+
+AC_DEFUN([gl_SNPRINTF_PRESENCE],
+[
+ AC_CHECK_FUNCS_ONCE([snprintf])
+])
+
+dnl Test whether the string produced by the snprintf function is always NUL
+dnl terminated. (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_snprintf_truncation_c99.
+
+AC_DEFUN([gl_SNPRINTF_TRUNCATION_C99],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether snprintf truncates the result as in C99],
+ [gl_cv_func_snprintf_truncation_c99],
+ [
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+ strcpy (buf, "ABCDEF");
+ snprintf (buf, 3, "%d %d", 4567, 89);
+ if (memcmp (buf, "45\0DEF", 6) != 0)
+ return 1;
+ return 0;
+}], [gl_cv_func_snprintf_truncation_c99=yes], [gl_cv_func_snprintf_truncation_c99=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
+ # Guess yes on FreeBSD >= 5.
+ freebsd[1-4]*) gl_cv_func_snprintf_truncation_c99="guessing no";;
+ freebsd* | kfreebsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
+ # Guess yes on MacOS X >= 10.3.
+ darwin[1-6].*) gl_cv_func_snprintf_truncation_c99="guessing no";;
+ darwin*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
+ # Guess yes on OpenBSD >= 3.9.
+ openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
+ gl_cv_func_snprintf_truncation_c99="guessing no";;
+ openbsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
+ # Guess yes on Solaris >= 2.6.
+ solaris2.[0-5]*) gl_cv_func_snprintf_truncation_c99="guessing no";;
+ solaris*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
+ # Guess yes on AIX >= 4.
+ aix[1-3]*) gl_cv_func_snprintf_truncation_c99="guessing no";;
+ aix*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
+ # Guess yes on HP-UX >= 11.
+ hpux[7-9]* | hpux10*) gl_cv_func_snprintf_truncation_c99="guessing no";;
+ hpux*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
+ # Guess yes on IRIX >= 6.5.
+ irix6.5) gl_cv_func_snprintf_truncation_c99="guessing yes";;
+ # Guess yes on OSF/1 >= 5.
+ osf[3-4]*) gl_cv_func_snprintf_truncation_c99="guessing no";;
+ osf*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
+ # Guess yes on NetBSD >= 3.
+ netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+ gl_cv_func_snprintf_truncation_c99="guessing no";;
+ netbsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
+ # Guess yes on BeOS.
+ beos*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_snprintf_truncation_c99="guessing no";;
+ esac
+changequote([,])dnl
+ ])
+ ])
+])
+
+dnl Test whether the return value of the snprintf function is the number
+dnl of bytes (excluding the terminating NUL) that would have been produced
+dnl if the buffer had been large enough. (ISO C99, POSIX:2001)
+dnl For example, this test program fails on IRIX 6.5:
+dnl ---------------------------------------------------------------------
+dnl #include <stdio.h>
+dnl int main()
+dnl {
+dnl static char buf[8];
+dnl int retval = snprintf (buf, 3, "%d", 12345);
+dnl return retval >= 0 && retval < 3;
+dnl }
+dnl ---------------------------------------------------------------------
+dnl Result is gl_cv_func_snprintf_retval_c99.
+
+AC_DEFUN([gl_SNPRINTF_RETVAL_C99],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether snprintf returns a byte count as in C99],
+ [gl_cv_func_snprintf_retval_c99],
+ [
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+ strcpy (buf, "ABCDEF");
+ if (snprintf (buf, 3, "%d %d", 4567, 89) != 7)
+ return 1;
+ return 0;
+}], [gl_cv_func_snprintf_retval_c99=yes], [gl_cv_func_snprintf_retval_c99=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_snprintf_retval_c99="guessing yes";;
+ # Guess yes on FreeBSD >= 5.
+ freebsd[1-4]*) gl_cv_func_snprintf_retval_c99="guessing no";;
+ freebsd* | kfreebsd*) gl_cv_func_snprintf_retval_c99="guessing yes";;
+ # Guess yes on MacOS X >= 10.3.
+ darwin[1-6].*) gl_cv_func_snprintf_retval_c99="guessing no";;
+ darwin*) gl_cv_func_snprintf_retval_c99="guessing yes";;
+ # Guess yes on OpenBSD >= 3.9.
+ openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
+ gl_cv_func_snprintf_retval_c99="guessing no";;
+ openbsd*) gl_cv_func_snprintf_retval_c99="guessing yes";;
+ # Guess yes on Solaris >= 2.6.
+ solaris2.[0-5]*) gl_cv_func_snprintf_retval_c99="guessing no";;
+ solaris*) gl_cv_func_snprintf_retval_c99="guessing yes";;
+ # Guess yes on AIX >= 4.
+ aix[1-3]*) gl_cv_func_snprintf_retval_c99="guessing no";;
+ aix*) gl_cv_func_snprintf_retval_c99="guessing yes";;
+ # Guess yes on NetBSD >= 3.
+ netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+ gl_cv_func_snprintf_retval_c99="guessing no";;
+ netbsd*) gl_cv_func_snprintf_retval_c99="guessing yes";;
+ # Guess yes on BeOS.
+ beos*) gl_cv_func_snprintf_retval_c99="guessing yes";;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_snprintf_retval_c99="guessing no";;
+ esac
+changequote([,])dnl
+ ])
+ ])
+])
+
+dnl Test whether the snprintf function supports the %n format directive
+dnl also in truncated portions of the format string. (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_snprintf_directive_n.
+
+AC_DEFUN([gl_SNPRINTF_DIRECTIVE_N],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether snprintf fully supports the 'n' directive],
+ [gl_cv_func_snprintf_directive_n],
+ [
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+static char fmtstring[10];
+static char buf[100];
+int main ()
+{
+ int count = -1;
+ /* Copy the format string. Some systems (glibc with _FORTIFY_SOURCE=2)
+ support %n in format strings in read-only memory but not in writable
+ memory. */
+ strcpy (fmtstring, "%d %n");
+ snprintf (buf, 4, fmtstring, 12345, &count, 33, 44, 55);
+ if (count != 6)
+ return 1;
+ return 0;
+}], [gl_cv_func_snprintf_directive_n=yes], [gl_cv_func_snprintf_directive_n=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_snprintf_directive_n="guessing yes";;
+ # Guess yes on FreeBSD >= 5.
+ freebsd[1-4]*) gl_cv_func_snprintf_directive_n="guessing no";;
+ freebsd* | kfreebsd*) gl_cv_func_snprintf_directive_n="guessing yes";;
+ # Guess yes on MacOS X >= 10.3.
+ darwin[1-6].*) gl_cv_func_snprintf_directive_n="guessing no";;
+ darwin*) gl_cv_func_snprintf_directive_n="guessing yes";;
+ # Guess yes on Solaris >= 2.6.
+ solaris2.[0-5]*) gl_cv_func_snprintf_directive_n="guessing no";;
+ solaris*) gl_cv_func_snprintf_directive_n="guessing yes";;
+ # Guess yes on AIX >= 4.
+ aix[1-3]*) gl_cv_func_snprintf_directive_n="guessing no";;
+ aix*) gl_cv_func_snprintf_directive_n="guessing yes";;
+ # Guess yes on IRIX >= 6.5.
+ irix6.5) gl_cv_func_snprintf_directive_n="guessing yes";;
+ # Guess yes on OSF/1 >= 5.
+ osf[3-4]*) gl_cv_func_snprintf_directive_n="guessing no";;
+ osf*) gl_cv_func_snprintf_directive_n="guessing yes";;
+ # Guess yes on NetBSD >= 3.
+ netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+ gl_cv_func_snprintf_directive_n="guessing no";;
+ netbsd*) gl_cv_func_snprintf_directive_n="guessing yes";;
+ # Guess yes on BeOS.
+ beos*) gl_cv_func_snprintf_directive_n="guessing yes";;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_snprintf_directive_n="guessing no";;
+ esac
+changequote([,])dnl
+ ])
+ ])
+])
+
+dnl Test whether the snprintf function, when passed a size = 1, writes any
+dnl output without bounds in this case, behaving like sprintf. This is the
+dnl case on Linux libc5.
+dnl Result is gl_cv_func_snprintf_size1.
+
+AC_DEFUN([gl_SNPRINTF_SIZE1],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_CACHE_CHECK([whether snprintf respects a size of 1],
+ [gl_cv_func_snprintf_size1],
+ [
+ AC_TRY_RUN([
+#include <stdio.h>
+int main()
+{
+ static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
+ snprintf (buf, 1, "%d", 12345);
+ return buf[1] != 'E';
+}],
+ [gl_cv_func_snprintf_size1=yes],
+ [gl_cv_func_snprintf_size1=no],
+ [gl_cv_func_snprintf_size1="guessing yes"])
+ ])
+])
+
+dnl Test whether the vsnprintf function, when passed a zero size, produces no
+dnl output. (ISO C99, POSIX:2001)
+dnl For example, snprintf nevertheless writes a NUL byte in this case
+dnl on OSF/1 5.1:
+dnl ---------------------------------------------------------------------
+dnl #include <stdio.h>
+dnl int main()
+dnl {
+dnl static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
+dnl snprintf (buf, 0, "%d", 12345);
+dnl return buf[0] != 'D';
+dnl }
+dnl ---------------------------------------------------------------------
+dnl And vsnprintf writes any output without bounds in this case, behaving like
+dnl vsprintf, on HP-UX 11 and OSF/1 5.1:
+dnl ---------------------------------------------------------------------
+dnl #include <stdarg.h>
+dnl #include <stdio.h>
+dnl static int my_snprintf (char *buf, int size, const char *format, ...)
+dnl {
+dnl va_list args;
+dnl int ret;
+dnl va_start (args, format);
+dnl ret = vsnprintf (buf, size, format, args);
+dnl va_end (args);
+dnl return ret;
+dnl }
+dnl int main()
+dnl {
+dnl static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
+dnl my_snprintf (buf, 0, "%d", 12345);
+dnl return buf[0] != 'D';
+dnl }
+dnl ---------------------------------------------------------------------
+dnl Result is gl_cv_func_vsnprintf_zerosize_c99.
+
+AC_DEFUN([gl_VSNPRINTF_ZEROSIZE_C99],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether vsnprintf respects a zero size as in C99],
+ [gl_cv_func_vsnprintf_zerosize_c99],
+ [
+ AC_TRY_RUN([
+#include <stdarg.h>
+#include <stdio.h>
+static int my_snprintf (char *buf, int size, const char *format, ...)
+{
+ va_list args;
+ int ret;
+ va_start (args, format);
+ ret = vsnprintf (buf, size, format, args);
+ va_end (args);
+ return ret;
+}
+int main()
+{
+ static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
+ my_snprintf (buf, 0, "%d", 12345);
+ return buf[0] != 'D';
+}],
+ [gl_cv_func_vsnprintf_zerosize_c99=yes],
+ [gl_cv_func_vsnprintf_zerosize_c99=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+ # Guess yes on FreeBSD >= 5.
+ freebsd[1-4]*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
+ freebsd* | kfreebsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+ # Guess yes on MacOS X >= 10.3.
+ darwin[1-6].*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
+ darwin*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+ # Guess yes on Cygwin.
+ cygwin*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+ # Guess yes on Solaris >= 2.6.
+ solaris2.[0-5]*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
+ solaris*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+ # Guess yes on AIX >= 4.
+ aix[1-3]*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
+ aix*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+ # Guess yes on IRIX >= 6.5.
+ irix6.5) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+ # Guess yes on NetBSD >= 3.
+ netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+ gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
+ netbsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+ # Guess yes on BeOS.
+ beos*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+ # Guess yes on mingw.
+ mingw* | pw*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
+ esac
+changequote([,])dnl
+ ])
+ ])
+])
+
+dnl The results of these tests on various platforms are:
+dnl
+dnl 1 = gl_PRINTF_SIZES_C99
+dnl 2 = gl_PRINTF_LONG_DOUBLE
+dnl 3 = gl_PRINTF_INFINITE
+dnl 4 = gl_PRINTF_INFINITE_LONG_DOUBLE
+dnl 5 = gl_PRINTF_DIRECTIVE_A
+dnl 6 = gl_PRINTF_DIRECTIVE_F
+dnl 7 = gl_PRINTF_DIRECTIVE_N
+dnl 8 = gl_PRINTF_DIRECTIVE_LS
+dnl 9 = gl_PRINTF_POSITIONS
+dnl 10 = gl_PRINTF_FLAG_GROUPING
+dnl 11 = gl_PRINTF_FLAG_LEFTADJUST
+dnl 12 = gl_PRINTF_FLAG_ZERO
+dnl 13 = gl_PRINTF_PRECISION
+dnl 14 = gl_PRINTF_ENOMEM
+dnl 15 = gl_SNPRINTF_PRESENCE
+dnl 16 = gl_SNPRINTF_TRUNCATION_C99
+dnl 17 = gl_SNPRINTF_RETVAL_C99
+dnl 18 = gl_SNPRINTF_DIRECTIVE_N
+dnl 19 = gl_SNPRINTF_SIZE1
+dnl 20 = gl_VSNPRINTF_ZEROSIZE_C99
+dnl
+dnl 1 = checking whether printf supports size specifiers as in C99...
+dnl 2 = checking whether printf supports 'long double' arguments...
+dnl 3 = checking whether printf supports infinite 'double' arguments...
+dnl 4 = checking whether printf supports infinite 'long double' arguments...
+dnl 5 = checking whether printf supports the 'a' and 'A' directives...
+dnl 6 = checking whether printf supports the 'F' directive...
+dnl 7 = checking whether printf supports the 'n' directive...
+dnl 8 = checking whether printf supports the 'ls' directive...
+dnl 9 = checking whether printf supports POSIX/XSI format strings with positions...
+dnl 10 = checking whether printf supports the grouping flag...
+dnl 11 = checking whether printf supports the left-adjust flag correctly...
+dnl 12 = checking whether printf supports the zero flag correctly...
+dnl 13 = checking whether printf supports large precisions...
+dnl 14 = checking whether printf survives out-of-memory conditions...
+dnl 15 = checking for snprintf...
+dnl 16 = checking whether snprintf truncates the result as in C99...
+dnl 17 = checking whether snprintf returns a byte count as in C99...
+dnl 18 = checking whether snprintf fully supports the 'n' directive...
+dnl 19 = checking whether snprintf respects a size of 1...
+dnl 20 = checking whether vsnprintf respects a zero size as in C99...
+dnl
+dnl . = yes, # = no.
+dnl
+dnl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
+dnl glibc 2.5 . . . . . . . . . . . . . . . . . . . .
+dnl glibc 2.3.6 . . . . # . . . . . . . . . . . . . . .
+dnl FreeBSD 5.4, 6.1 . . . . # . . . . . . # . # . . . . . .
+dnl MacOS X 10.3.9 . . . . # . . . . . . # . # . . . . . .
+dnl OpenBSD 3.9, 4.0 . . # # # # . # . # . # . # . . . . . .
+dnl Cygwin 1.7.0 (2009) . . . # . . . ? . . . . . ? . . . . . .
+dnl Cygwin 1.5.25 (2008) . . . # # . . # . . . . . # . . . . . .
+dnl Cygwin 1.5.19 (2006) # . . # # # . # . # . # # # . . . . . .
+dnl Solaris 10 . . # # # . . # . . . # . . . . . . . .
+dnl Solaris 2.6 ... 9 # . # # # # . # . . . # . . . . . . . .
+dnl Solaris 2.5.1 # . # # # # . # . . . # . . # # # # # #
+dnl AIX 5.2 . . # # # . . . . . . # . . . . . . . .
+dnl AIX 4.3.2, 5.1 # . # # # # . . . . . # . . . . . . . .
+dnl HP-UX 11.31 . . . . # . . . . . . # . . . . # # . .
+dnl HP-UX 11.{00,11,23} # . . . # # . . . . . # . . . . # # . #
+dnl HP-UX 10.20 # . # . # # . ? . . # # . . . . # # ? #
+dnl IRIX 6.5 # . # # # # . # . . . # . . . . # . . .
+dnl OSF/1 5.1 # . # # # # . . . . . # . . . . # . . #
+dnl OSF/1 4.0d # . # # # # . . . . . # . . # # # # # #
+dnl NetBSD 4.0 . ? ? ? ? ? . ? . ? ? ? ? ? . . . ? ? ?
+dnl NetBSD 3.0 . . . . # # . ? # # ? # . # . . . . . .
+dnl Haiku . . . # # # . # . . . . . ? . . . . . .
+dnl BeOS # # . # # # . ? # . ? . # ? . . . . . .
+dnl mingw # # # # # # . . # # . # # ? . # # # . .
diff --git a/gnulib-m4/relocatable-lib.m4 b/gnulib-m4/relocatable-lib.m4
new file mode 100644
index 00000000..fd99cdae
--- /dev/null
+++ b/gnulib-m4/relocatable-lib.m4
@@ -0,0 +1,56 @@
+# relocatable-lib.m4 serial 4
+dnl Copyright (C) 2003, 2005-2007, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Support for relocatable libraries.
+AC_DEFUN([gl_RELOCATABLE_LIBRARY],
+[
+ AC_REQUIRE([gl_RELOCATABLE_LIBRARY_BODY])
+ if test $RELOCATABLE = yes; then
+ AC_LIBOBJ([relocatable])
+ fi
+])
+AC_DEFUN([gl_RELOCATABLE_LIBRARY_BODY],
+[
+ AC_REQUIRE([gl_RELOCATABLE_NOP])
+ dnl Easier to put this here once, instead of into the DEFS of each Makefile.
+ if test "X$prefix" = "XNONE"; then
+ reloc_final_prefix="$ac_default_prefix"
+ else
+ reloc_final_prefix="$prefix"
+ fi
+ AC_DEFINE_UNQUOTED([INSTALLPREFIX], ["${reloc_final_prefix}"],
+ [Define to the value of ${prefix}, as a string.])
+ if test $RELOCATABLE = yes; then
+ AC_DEFINE([ENABLE_RELOCATABLE], [1],
+ [Define to 1 if the package shall run at any location in the filesystem.])
+ fi
+])
+
+dnl Like gl_RELOCATABLE_LIBRARY, except prepare for separate compilation
+dnl (no AC_LIBOBJ).
+AC_DEFUN([gl_RELOCATABLE_LIBRARY_SEPARATE],
+[
+ AC_REQUIRE([gl_RELOCATABLE_LIBRARY_BODY])
+])
+
+dnl Support for relocatable packages for which it is a nop.
+AC_DEFUN([gl_RELOCATABLE_NOP],
+[
+ AC_MSG_CHECKING([whether to activate relocatable installation])
+ AC_ARG_ENABLE([relocatable],
+ [ --enable-relocatable install a package that can be moved in the filesystem],
+ [if test "$enableval" != no; then
+ RELOCATABLE=yes
+ else
+ RELOCATABLE=no
+ fi
+ ], RELOCATABLE=no)
+ AC_SUBST([RELOCATABLE])
+ AC_MSG_RESULT([$RELOCATABLE])
+])
+
diff --git a/gnulib-m4/setenv.m4 b/gnulib-m4/setenv.m4
new file mode 100644
index 00000000..e28407ee
--- /dev/null
+++ b/gnulib-m4/setenv.m4
@@ -0,0 +1,71 @@
+# setenv.m4 serial 11
+dnl Copyright (C) 2001-2004, 2006-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_SETENV],
+[
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+ AC_CHECK_FUNCS_ONCE([setenv])
+ if test $ac_cv_func_setenv = no; then
+ HAVE_SETENV=0
+ AC_LIBOBJ([setenv])
+ gl_PREREQ_SETENV
+ fi
+])
+
+# Like gl_FUNC_SETENV, except prepare for separate compilation (no AC_LIBOBJ).
+AC_DEFUN([gl_FUNC_SETENV_SEPARATE],
+[
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+ AC_CHECK_FUNCS_ONCE([setenv])
+ if test $ac_cv_func_setenv = no; then
+ HAVE_SETENV=0
+ fi
+ gl_PREREQ_SETENV
+])
+
+AC_DEFUN([gl_FUNC_UNSETENV],
+[
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+ AC_CHECK_FUNCS([unsetenv])
+ if test $ac_cv_func_unsetenv = no; then
+ HAVE_UNSETENV=0
+ AC_LIBOBJ([unsetenv])
+ gl_PREREQ_UNSETENV
+ else
+ AC_CACHE_CHECK([for unsetenv() return type], [gt_cv_func_unsetenv_ret],
+ [AC_TRY_COMPILE([#include <stdlib.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+int unsetenv (const char *name);
+#else
+int unsetenv();
+#endif
+], , gt_cv_func_unsetenv_ret='int', gt_cv_func_unsetenv_ret='void')])
+ if test $gt_cv_func_unsetenv_ret = 'void'; then
+ VOID_UNSETENV=1
+ fi
+ fi
+])
+
+# Prerequisites of lib/setenv.c.
+AC_DEFUN([gl_PREREQ_SETENV],
+[
+ AC_REQUIRE([AC_FUNC_ALLOCA])
+ AC_REQUIRE([gl_ENVIRON])
+ AC_CHECK_HEADERS_ONCE([unistd.h])
+ AC_CHECK_HEADERS([search.h])
+ AC_CHECK_FUNCS([tsearch])
+])
+
+# Prerequisites of lib/unsetenv.c.
+AC_DEFUN([gl_PREREQ_UNSETENV],
+[
+ AC_REQUIRE([gl_ENVIRON])
+ AC_CHECK_HEADERS_ONCE([unistd.h])
+])
diff --git a/gnulib-m4/signbit.m4 b/gnulib-m4/signbit.m4
new file mode 100644
index 00000000..233bf2a3
--- /dev/null
+++ b/gnulib-m4/signbit.m4
@@ -0,0 +1,287 @@
+# signbit.m4 serial 6
+dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_SIGNBIT],
+[
+ AC_REQUIRE([gl_MATH_H_DEFAULTS])
+ AC_CACHE_CHECK([for signbit macro], [gl_cv_func_signbit],
+ [
+ AC_TRY_RUN([
+#include <math.h>
+/* If signbit is defined as a function, don't use it, since calling it for
+ 'float' or 'long double' arguments would involve conversions.
+ If signbit is not declared at all but exists as a library function, don't
+ use it, since the prototype may not match.
+ If signbit is not declared at all but exists as a compiler built-in, don't
+ use it, since it's preferable to use __builtin_signbit* (no warnings,
+ no conversions). */
+#ifndef signbit
+# error "signbit should be a macro"
+#endif
+#include <string.h>
+]gl_SIGNBIT_TEST_PROGRAM
+, [gl_cv_func_signbit=yes], [gl_cv_func_signbit=no],
+ [gl_cv_func_signbit="guessing no"])
+ ])
+ dnl GCC 4.0 and newer provides three built-ins for signbit.
+ dnl They can be used without warnings, also in C++, regardless of <math.h>.
+ dnl But they may expand to calls to functions, which may or may not be in
+ dnl libc.
+ AC_CACHE_CHECK([for signbit compiler built-ins], [gl_cv_func_signbit_gcc],
+ [
+ AC_TRY_RUN([
+#if __GNUC__ >= 4
+# define signbit(x) \
+ (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \
+ sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \
+ __builtin_signbitf (x))
+#else
+# error "signbit should be three compiler built-ins"
+#endif
+#include <string.h>
+]gl_SIGNBIT_TEST_PROGRAM
+, [gl_cv_func_signbit_gcc=yes], [gl_cv_func_signbit_gcc=no],
+ [gl_cv_func_signbit_gcc="guessing no"])
+ ])
+ dnl Use the compiler built-ins whenever possible, because they are more
+ dnl efficient than the system library functions (if they exist).
+ if test "$gl_cv_func_signbit_gcc" = yes; then
+ REPLACE_SIGNBIT_USING_GCC=1
+ else
+ if test "$gl_cv_func_signbit" != yes; then
+ REPLACE_SIGNBIT=1
+ AC_LIBOBJ([signbitf])
+ AC_LIBOBJ([signbitd])
+ AC_LIBOBJ([signbitl])
+ gl_FLOAT_SIGN_LOCATION
+ gl_DOUBLE_SIGN_LOCATION
+ gl_LONG_DOUBLE_SIGN_LOCATION
+ if test "$gl_cv_cc_float_signbit" = unknown; then
+ dnl Test whether copysignf() is declared.
+ AC_CHECK_DECLS([copysignf], , , [#include <math.h>])
+ if test "$ac_cv_have_decl_copysignf" = yes; then
+ dnl Test whether copysignf() can be used without libm.
+ AC_CACHE_CHECK([whether copysignf can be used without linking with libm],
+ [gl_cv_func_copysignf_no_libm],
+ [
+ AC_TRY_LINK([#include <math.h>
+ float x, y;],
+ [return copysignf (x, y) < 0;],
+ [gl_cv_func_copysignf_no_libm=yes],
+ [gl_cv_func_copysignf_no_libm=no])
+ ])
+ if test $gl_cv_func_copysignf_no_libm = yes; then
+ AC_DEFINE([HAVE_COPYSIGNF_IN_LIBC], [1],
+ [Define if the copysignf function is declared in <math.h> and available in libc.])
+ fi
+ fi
+ fi
+ if test "$gl_cv_cc_double_signbit" = unknown; then
+ dnl Test whether copysign() is declared.
+ AC_CHECK_DECLS([copysign], , , [#include <math.h>])
+ if test "$ac_cv_have_decl_copysign" = yes; then
+ dnl Test whether copysign() can be used without libm.
+ AC_CACHE_CHECK([whether copysign can be used without linking with libm],
+ [gl_cv_func_copysign_no_libm],
+ [
+ AC_TRY_LINK([#include <math.h>
+ double x, y;],
+ [return copysign (x, y) < 0;],
+ [gl_cv_func_copysign_no_libm=yes],
+ [gl_cv_func_copysign_no_libm=no])
+ ])
+ if test $gl_cv_func_copysign_no_libm = yes; then
+ AC_DEFINE([HAVE_COPYSIGN_IN_LIBC], [1],
+ [Define if the copysign function is declared in <math.h> and available in libc.])
+ fi
+ fi
+ fi
+ if test "$gl_cv_cc_long_double_signbit" = unknown; then
+ dnl Test whether copysignl() is declared.
+ AC_CHECK_DECLS([copysignl], , , [#include <math.h>])
+ if test "$ac_cv_have_decl_copysignl" = yes; then
+ dnl Test whether copysignl() can be used without libm.
+ AC_CACHE_CHECK([whether copysignl can be used without linking with libm],
+ [gl_cv_func_copysignl_no_libm],
+ [
+ AC_TRY_LINK([#include <math.h>
+ long double x, y;],
+ [return copysignl (x, y) < 0;],
+ [gl_cv_func_copysignl_no_libm=yes],
+ [gl_cv_func_copysignl_no_libm=no])
+ ])
+ if test $gl_cv_func_copysignl_no_libm = yes; then
+ AC_DEFINE([HAVE_COPYSIGNL_IN_LIBC], [1],
+ [Define if the copysignl function is declared in <math.h> and available in libc.])
+ fi
+ fi
+ fi
+ fi
+ fi
+])
+
+AC_DEFUN([gl_SIGNBIT_TEST_PROGRAM], [[
+/* Global variables.
+ Needed because GCC 4 constant-folds __builtin_signbitl (literal)
+ but cannot constant-fold __builtin_signbitl (variable). */
+float vf;
+double vd;
+long double vl;
+int main ()
+{
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
+ So we use -p0f and -p0d instead. */
+float p0f = 0.0f;
+float m0f = -p0f;
+double p0d = 0.0;
+double m0d = -p0d;
+/* On HP-UX 10.20, negating 0.0L does not yield -0.0L.
+ So we use another constant expression instead.
+ But that expression does not work on other platforms, such as when
+ cross-compiling to PowerPC on MacOS X 10.5. */
+long double p0l = 0.0L;
+#if defined __hpux || defined __sgi
+long double m0l = -LDBL_MIN * LDBL_MIN;
+#else
+long double m0l = -p0l;
+#endif
+ if (signbit (vf))
+ vf++;
+ {
+ float plus_inf = 1.0f / p0f;
+ float minus_inf = -1.0f / p0f;
+ if (!(!signbit (255.0f)
+ && signbit (-255.0f)
+ && !signbit (p0f)
+ && (memcmp (&m0f, &p0f, sizeof (float)) == 0 || signbit (m0f))
+ && !signbit (plus_inf)
+ && signbit (minus_inf)))
+ return 1;
+ }
+ if (signbit (vd))
+ vd++;
+ {
+ double plus_inf = 1.0 / p0d;
+ double minus_inf = -1.0 / p0d;
+ if (!(!signbit (255.0)
+ && signbit (-255.0)
+ && !signbit (p0d)
+ && (memcmp (&m0d, &p0d, sizeof (double)) == 0 || signbit (m0d))
+ && !signbit (plus_inf)
+ && signbit (minus_inf)))
+ return 1;
+ }
+ if (signbit (vl))
+ vl++;
+ {
+ long double plus_inf = 1.0L / p0l;
+ long double minus_inf = -1.0L / p0l;
+ if (!(!signbit (255.0L)
+ && signbit (-255.0L)
+ && !signbit (p0l)
+ && (memcmp (&m0l, &p0l, sizeof (long double)) == 0 || signbit (m0l))
+ && !signbit (plus_inf)
+ && signbit (minus_inf)))
+ return 1;
+ }
+ return 0;
+}
+]])
+
+AC_DEFUN([gl_FLOAT_SIGN_LOCATION],
+[
+ gl_FLOATTYPE_SIGN_LOCATION([float], [gl_cv_cc_float_signbit], [f], [FLT])
+])
+
+AC_DEFUN([gl_DOUBLE_SIGN_LOCATION],
+[
+ gl_FLOATTYPE_SIGN_LOCATION([double], [gl_cv_cc_double_signbit], [], [DBL])
+])
+
+AC_DEFUN([gl_LONG_DOUBLE_SIGN_LOCATION],
+[
+ gl_FLOATTYPE_SIGN_LOCATION([long double], [gl_cv_cc_long_double_signbit], [L], [LDBL])
+])
+
+AC_DEFUN([gl_FLOATTYPE_SIGN_LOCATION],
+[
+ AC_CACHE_CHECK([where to find the sign bit in a '$1'],
+ [$2],
+ [
+ AC_TRY_RUN([
+#include <stddef.h>
+#include <stdio.h>
+#define NWORDS \
+ ((sizeof ($1) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { $1 value; unsigned int word[NWORDS]; }
+ memory_float;
+static memory_float plus = { 1.0$3 };
+static memory_float minus = { -1.0$3 };
+int main ()
+{
+ size_t j, k, i;
+ unsigned int m;
+ FILE *fp = fopen ("conftest.out", "w");
+ if (fp == NULL)
+ return 1;
+ /* Find the different bit. */
+ k = 0; m = 0;
+ for (j = 0; j < NWORDS; j++)
+ {
+ unsigned int x = plus.word[j] ^ minus.word[j];
+ if ((x & (x - 1)) || (x && m))
+ {
+ /* More than one bit difference. */
+ fprintf (fp, "unknown");
+ return 1;
+ }
+ if (x)
+ {
+ k = j;
+ m = x;
+ }
+ }
+ if (m == 0)
+ {
+ /* No difference. */
+ fprintf (fp, "unknown");
+ return 1;
+ }
+ /* Now m = plus.word[k] ^ ~minus.word[k]. */
+ if (plus.word[k] & ~minus.word[k])
+ {
+ /* Oh? The sign bit is set in the positive and cleared in the negative
+ numbers? */
+ fprintf (fp, "unknown");
+ return 1;
+ }
+ for (i = 0; ; i++)
+ if ((m >> i) & 1)
+ break;
+ fprintf (fp, "word %d bit %d", (int) k, (int) i);
+ return (fclose (fp) != 0);
+}
+ ],
+ [$2=`cat conftest.out`],
+ [$2="unknown"],
+ [
+ dnl When cross-compiling, we don't know. It depends on the
+ dnl ABI and compiler version. There are too many cases.
+ $2="unknown"
+ ])
+ rm -f conftest.out
+ ])
+ case "$]$2[" in
+ word*bit*)
+ word=`echo "$]$2[" | sed -e 's/word //' -e 's/ bit.*//'`
+ bit=`echo "$]$2[" | sed -e 's/word.*bit //'`
+ AC_DEFINE_UNQUOTED([$4][_SIGNBIT_WORD], [$word],
+ [Define as the word index where to find the sign of '$1'.])
+ AC_DEFINE_UNQUOTED([$4][_SIGNBIT_BIT], [$bit],
+ [Define as the bit index in the word where to find the sign of '$1'.])
+ ;;
+ esac
+])
diff --git a/gnulib-m4/size_max.m4 b/gnulib-m4/size_max.m4
new file mode 100644
index 00000000..35bd3d6a
--- /dev/null
+++ b/gnulib-m4/size_max.m4
@@ -0,0 +1,75 @@
+# size_max.m4 serial 9
+dnl Copyright (C) 2003, 2005-2006, 2008-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([gl_SIZE_MAX],
+[
+ AC_CHECK_HEADERS([stdint.h])
+ dnl First test whether the system already has SIZE_MAX.
+ AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [
+ gl_cv_size_max=
+ AC_EGREP_CPP([Found it], [
+#include <limits.h>
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#ifdef SIZE_MAX
+Found it
+#endif
+], [gl_cv_size_max=yes])
+ if test -z "$gl_cv_size_max"; then
+ dnl Define it ourselves. Here we assume that the type 'size_t' is not wider
+ dnl than the type 'unsigned long'. Try hard to find a definition that can
+ dnl be used in a preprocessor #if, i.e. doesn't contain a cast.
+ AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1],
+ [#include <stddef.h>
+#include <limits.h>], [size_t_bits_minus_1=])
+ AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)],
+ [#include <stddef.h>], [fits_in_uint=])
+ if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then
+ if test $fits_in_uint = 1; then
+ dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
+ dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'.
+ AC_TRY_COMPILE([#include <stddef.h>
+ extern size_t foo;
+ extern unsigned long foo;
+ ], [], [fits_in_uint=0])
+ fi
+ dnl We cannot use 'expr' to simplify this expression, because 'expr'
+ dnl works only with 'long' integers in the host environment, while we
+ dnl might be cross-compiling from a 32-bit platform to a 64-bit platform.
+ if test $fits_in_uint = 1; then
+ gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
+ else
+ gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
+ fi
+ else
+ dnl Shouldn't happen, but who knows...
+ gl_cv_size_max='((size_t)~(size_t)0)'
+ fi
+ fi
+ ])
+ if test "$gl_cv_size_max" != yes; then
+ AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max],
+ [Define as the maximum value of type 'size_t', if the system doesn't define it.])
+ fi
+ dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after
+ dnl <stdint.h>. Remember that the #undef in AH_VERBATIM gets replaced with
+ dnl #define by AC_DEFINE_UNQUOTED.
+ AH_VERBATIM([SIZE_MAX],
+[/* Define as the maximum value of type 'size_t', if the system doesn't define
+ it. */
+#ifndef SIZE_MAX
+# undef SIZE_MAX
+#endif])
+])
+
+dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
+dnl Remove this when we can assume autoconf >= 2.61.
+m4_ifdef([AC_COMPUTE_INT], [], [
+ AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
+])
diff --git a/gnulib-m4/stdbool.m4 b/gnulib-m4/stdbool.m4
new file mode 100644
index 00000000..57c804a8
--- /dev/null
+++ b/gnulib-m4/stdbool.m4
@@ -0,0 +1,115 @@
+# Check for stdbool.h that conforms to C99.
+
+dnl Copyright (C) 2002-2006, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Prepare for substituting <stdbool.h> if it is not supported.
+
+AC_DEFUN([AM_STDBOOL_H],
+[
+ AC_REQUIRE([AC_HEADER_STDBOOL])
+
+ # Define two additional variables used in the Makefile substitution.
+
+ if test "$ac_cv_header_stdbool_h" = yes; then
+ STDBOOL_H=''
+ else
+ STDBOOL_H='stdbool.h'
+ fi
+ AC_SUBST([STDBOOL_H])
+
+ if test "$ac_cv_type__Bool" = yes; then
+ HAVE__BOOL=1
+ else
+ HAVE__BOOL=0
+ fi
+ AC_SUBST([HAVE__BOOL])
+])
+
+# AM_STDBOOL_H will be renamed to gl_STDBOOL_H in the future.
+AC_DEFUN([gl_STDBOOL_H], [AM_STDBOOL_H])
+
+# This macro is only needed in autoconf <= 2.59. Newer versions of autoconf
+# have this macro built-in.
+
+AC_DEFUN([AC_HEADER_STDBOOL],
+ [AC_CACHE_CHECK([for stdbool.h that conforms to C99],
+ [ac_cv_header_stdbool_h],
+ [AC_TRY_COMPILE(
+ [
+ #include <stdbool.h>
+ #ifndef bool
+ "error: bool is not defined"
+ #endif
+ #ifndef false
+ "error: false is not defined"
+ #endif
+ #if false
+ "error: false is not 0"
+ #endif
+ #ifndef true
+ "error: true is not defined"
+ #endif
+ #if true != 1
+ "error: true is not 1"
+ #endif
+ #ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+ #endif
+
+ struct s { _Bool s: 1; _Bool t; } s;
+
+ char a[true == 1 ? 1 : -1];
+ char b[false == 0 ? 1 : -1];
+ char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+ char d[(bool) 0.5 == true ? 1 : -1];
+ bool e = &s;
+ char f[(_Bool) 0.0 == false ? 1 : -1];
+ char g[true];
+ char h[sizeof (_Bool)];
+ char i[sizeof s.t];
+ enum { j = false, k = true, l = false * true, m = true * 256 };
+ _Bool n[m];
+ char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+ char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+ #if defined __xlc__ || defined __GNUC__
+ /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
+ reported by James Lemley on 2005-10-05; see
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+ This test is not quite right, since xlc is allowed to
+ reject this program, as the initializer for xlcbug is
+ not one of the forms that C requires support for.
+ However, doing the test right would require a run-time
+ test, and that would make cross-compilation harder.
+ Let us hope that IBM fixes the xlc bug, and also adds
+ support for this kind of constant expression. In the
+ meantime, this test will reject xlc, which is OK, since
+ our stdbool.h substitute should suffice. We also test
+ this with GCC, where it should work, to detect more
+ quickly whether someone messes up the test in the
+ future. */
+ char digs[] = "0123456789";
+ int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
+ #endif
+ /* Catch a bug in an HP-UX C compiler. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ */
+ _Bool q = true;
+ _Bool *pq = &q;
+ ],
+ [
+ *pq |= q;
+ *pq |= ! q;
+ /* Refer to every declared value, to avoid compiler optimizations. */
+ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+ + !m + !n + !o + !p + !q + !pq);
+ ],
+ [ac_cv_header_stdbool_h=yes],
+ [ac_cv_header_stdbool_h=no])])
+ AC_CHECK_TYPES([_Bool])
+ if test $ac_cv_header_stdbool_h = yes; then
+ AC_DEFINE([HAVE_STDBOOL_H], [1], [Define to 1 if stdbool.h conforms to C99.])
+ fi])
diff --git a/gnulib-m4/stdint.m4 b/gnulib-m4/stdint.m4
new file mode 100644
index 00000000..a2e8bdd6
--- /dev/null
+++ b/gnulib-m4/stdint.m4
@@ -0,0 +1,472 @@
+# stdint.m4 serial 34
+dnl Copyright (C) 2001-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert and Bruno Haible.
+dnl Test whether <stdint.h> is supported or must be substituted.
+
+AC_DEFUN([gl_STDINT_H],
+[
+ AC_PREREQ([2.59])dnl
+
+ dnl Check for long long int and unsigned long long int.
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+ if test $ac_cv_type_long_long_int = yes; then
+ HAVE_LONG_LONG_INT=1
+ else
+ HAVE_LONG_LONG_INT=0
+ fi
+ AC_SUBST([HAVE_LONG_LONG_INT])
+ AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
+ if test $ac_cv_type_unsigned_long_long_int = yes; then
+ HAVE_UNSIGNED_LONG_LONG_INT=1
+ else
+ HAVE_UNSIGNED_LONG_LONG_INT=0
+ fi
+ AC_SUBST([HAVE_UNSIGNED_LONG_LONG_INT])
+
+ dnl Check for <inttypes.h>.
+ dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h.
+ if test $ac_cv_header_inttypes_h = yes; then
+ HAVE_INTTYPES_H=1
+ else
+ HAVE_INTTYPES_H=0
+ fi
+ AC_SUBST([HAVE_INTTYPES_H])
+
+ dnl Check for <sys/types.h>.
+ dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_sys_types_h.
+ if test $ac_cv_header_sys_types_h = yes; then
+ HAVE_SYS_TYPES_H=1
+ else
+ HAVE_SYS_TYPES_H=0
+ fi
+ AC_SUBST([HAVE_SYS_TYPES_H])
+
+ gl_CHECK_NEXT_HEADERS([stdint.h])
+ if test $ac_cv_header_stdint_h = yes; then
+ HAVE_STDINT_H=1
+ else
+ HAVE_STDINT_H=0
+ fi
+ AC_SUBST([HAVE_STDINT_H])
+
+ dnl Now see whether we need a substitute <stdint.h>.
+ if test $ac_cv_header_stdint_h = yes; then
+ AC_CACHE_CHECK([whether stdint.h conforms to C99],
+ [gl_cv_header_working_stdint_h],
+ [gl_cv_header_working_stdint_h=no
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */
+#if !(defined WCHAR_MIN && defined WCHAR_MAX)
+#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
+#endif
+]
+gl_STDINT_INCLUDES
+[
+#ifdef INT8_MAX
+int8_t a1 = INT8_MAX;
+int8_t a1min = INT8_MIN;
+#endif
+#ifdef INT16_MAX
+int16_t a2 = INT16_MAX;
+int16_t a2min = INT16_MIN;
+#endif
+#ifdef INT32_MAX
+int32_t a3 = INT32_MAX;
+int32_t a3min = INT32_MIN;
+#endif
+#ifdef INT64_MAX
+int64_t a4 = INT64_MAX;
+int64_t a4min = INT64_MIN;
+#endif
+#ifdef UINT8_MAX
+uint8_t b1 = UINT8_MAX;
+#else
+typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
+#endif
+#ifdef UINT16_MAX
+uint16_t b2 = UINT16_MAX;
+#endif
+#ifdef UINT32_MAX
+uint32_t b3 = UINT32_MAX;
+#endif
+#ifdef UINT64_MAX
+uint64_t b4 = UINT64_MAX;
+#endif
+int_least8_t c1 = INT8_C (0x7f);
+int_least8_t c1max = INT_LEAST8_MAX;
+int_least8_t c1min = INT_LEAST8_MIN;
+int_least16_t c2 = INT16_C (0x7fff);
+int_least16_t c2max = INT_LEAST16_MAX;
+int_least16_t c2min = INT_LEAST16_MIN;
+int_least32_t c3 = INT32_C (0x7fffffff);
+int_least32_t c3max = INT_LEAST32_MAX;
+int_least32_t c3min = INT_LEAST32_MIN;
+int_least64_t c4 = INT64_C (0x7fffffffffffffff);
+int_least64_t c4max = INT_LEAST64_MAX;
+int_least64_t c4min = INT_LEAST64_MIN;
+uint_least8_t d1 = UINT8_C (0xff);
+uint_least8_t d1max = UINT_LEAST8_MAX;
+uint_least16_t d2 = UINT16_C (0xffff);
+uint_least16_t d2max = UINT_LEAST16_MAX;
+uint_least32_t d3 = UINT32_C (0xffffffff);
+uint_least32_t d3max = UINT_LEAST32_MAX;
+uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
+uint_least64_t d4max = UINT_LEAST64_MAX;
+int_fast8_t e1 = INT_FAST8_MAX;
+int_fast8_t e1min = INT_FAST8_MIN;
+int_fast16_t e2 = INT_FAST16_MAX;
+int_fast16_t e2min = INT_FAST16_MIN;
+int_fast32_t e3 = INT_FAST32_MAX;
+int_fast32_t e3min = INT_FAST32_MIN;
+int_fast64_t e4 = INT_FAST64_MAX;
+int_fast64_t e4min = INT_FAST64_MIN;
+uint_fast8_t f1 = UINT_FAST8_MAX;
+uint_fast16_t f2 = UINT_FAST16_MAX;
+uint_fast32_t f3 = UINT_FAST32_MAX;
+uint_fast64_t f4 = UINT_FAST64_MAX;
+#ifdef INTPTR_MAX
+intptr_t g = INTPTR_MAX;
+intptr_t gmin = INTPTR_MIN;
+#endif
+#ifdef UINTPTR_MAX
+uintptr_t h = UINTPTR_MAX;
+#endif
+intmax_t i = INTMAX_MAX;
+uintmax_t j = UINTMAX_MAX;
+
+#include <limits.h> /* for CHAR_BIT */
+#define TYPE_MINIMUM(t) \
+ ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+#define TYPE_MAXIMUM(t) \
+ ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+struct s {
+ int check_PTRDIFF:
+ PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
+ && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
+ ? 1 : -1;
+ /* Detect bug in FreeBSD 6.0 / ia64. */
+ int check_SIG_ATOMIC:
+ SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
+ && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
+ ? 1 : -1;
+ int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
+ int check_WCHAR:
+ WCHAR_MIN == TYPE_MINIMUM (wchar_t)
+ && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
+ ? 1 : -1;
+ /* Detect bug in mingw. */
+ int check_WINT:
+ WINT_MIN == TYPE_MINIMUM (wint_t)
+ && WINT_MAX == TYPE_MAXIMUM (wint_t)
+ ? 1 : -1;
+
+ /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */
+ int check_UINT8_C:
+ (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
+ int check_UINT16_C:
+ (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
+
+ /* Detect bugs in OpenBSD 3.9 stdint.h. */
+#ifdef UINT8_MAX
+ int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
+#endif
+#ifdef UINT16_MAX
+ int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
+#endif
+#ifdef UINT32_MAX
+ int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
+#endif
+#ifdef UINT64_MAX
+ int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
+#endif
+ int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
+ int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
+ int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
+ int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
+ int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
+ int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
+ int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
+ int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
+ int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
+ int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
+ int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
+};
+ ]])],
+ [dnl Determine whether the various *_MIN, *_MAX macros are usable
+ dnl in preprocessor expression. We could do it by compiling a test
+ dnl program for each of these macros. It is faster to run a program
+ dnl that inspects the macro expansion.
+ dnl This detects a bug on HP-UX 11.23/ia64.
+ AC_RUN_IFELSE([
+ AC_LANG_PROGRAM([[
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+]
+gl_STDINT_INCLUDES
+[
+#include <stdio.h>
+#include <string.h>
+#define MVAL(macro) MVAL1(macro)
+#define MVAL1(expression) #expression
+static const char *macro_values[] =
+ {
+#ifdef INT8_MAX
+ MVAL (INT8_MAX),
+#endif
+#ifdef INT16_MAX
+ MVAL (INT16_MAX),
+#endif
+#ifdef INT32_MAX
+ MVAL (INT32_MAX),
+#endif
+#ifdef INT64_MAX
+ MVAL (INT64_MAX),
+#endif
+#ifdef UINT8_MAX
+ MVAL (UINT8_MAX),
+#endif
+#ifdef UINT16_MAX
+ MVAL (UINT16_MAX),
+#endif
+#ifdef UINT32_MAX
+ MVAL (UINT32_MAX),
+#endif
+#ifdef UINT64_MAX
+ MVAL (UINT64_MAX),
+#endif
+ NULL
+ };
+]], [[
+ const char **mv;
+ for (mv = macro_values; *mv != NULL; mv++)
+ {
+ const char *value = *mv;
+ /* Test whether it looks like a cast expression. */
+ if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
+ || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
+ || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
+ || strncmp (value, "((int)"/*)*/, 6) == 0
+ || strncmp (value, "((signed short)"/*)*/, 15) == 0
+ || strncmp (value, "((signed char)"/*)*/, 14) == 0)
+ return 1;
+ }
+ return 0;
+]])],
+ [gl_cv_header_working_stdint_h=yes],
+ [],
+ [dnl When cross-compiling, assume it works.
+ gl_cv_header_working_stdint_h=yes
+ ])
+ ])
+ ])
+ fi
+ if test "$gl_cv_header_working_stdint_h" = yes; then
+ STDINT_H=
+ else
+ dnl Check for <sys/inttypes.h>, and for
+ dnl <sys/bitypes.h> (used in Linux libc4 >= 4.6.7 and libc5).
+ AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h])
+ if test $ac_cv_header_sys_inttypes_h = yes; then
+ HAVE_SYS_INTTYPES_H=1
+ else
+ HAVE_SYS_INTTYPES_H=0
+ fi
+ AC_SUBST([HAVE_SYS_INTTYPES_H])
+ if test $ac_cv_header_sys_bitypes_h = yes; then
+ HAVE_SYS_BITYPES_H=1
+ else
+ HAVE_SYS_BITYPES_H=0
+ fi
+ AC_SUBST([HAVE_SYS_BITYPES_H])
+
+ dnl Check for <wchar.h> (missing in Linux uClibc when built without wide
+ dnl character support).
+ AC_CHECK_HEADERS_ONCE([wchar.h])
+
+ gl_STDINT_TYPE_PROPERTIES
+ STDINT_H=stdint.h
+ fi
+ AC_SUBST([STDINT_H])
+])
+
+dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES)
+dnl Determine the size of each of the given types in bits.
+AC_DEFUN([gl_STDINT_BITSIZEOF],
+[
+ dnl Use a shell loop, to avoid bloating configure, and
+ dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
+ dnl config.h.in,
+ dnl - extra AC_SUBST calls, so that the right substitutions are made.
+ m4_foreach_w([gltype], [$1],
+ [AH_TEMPLATE([BITSIZEOF_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
+ [Define to the number of bits in type ']gltype['.])])
+ for gltype in $1 ; do
+ AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}],
+ [AC_COMPUTE_INT([result], [sizeof ($gltype) * CHAR_BIT],
+ [$2
+#include <limits.h>], [result=unknown])
+ eval gl_cv_bitsizeof_${gltype}=\$result
+ ])
+ eval result=\$gl_cv_bitsizeof_${gltype}
+ if test $result = unknown; then
+ dnl Use a nonempty default, because some compilers, such as IRIX 5 cc,
+ dnl do a syntax check even on unused #if conditions and give an error
+ dnl on valid C code like this:
+ dnl #if 0
+ dnl # if > 32
+ dnl # endif
+ dnl #endif
+ result=0
+ fi
+ GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ AC_DEFINE_UNQUOTED([BITSIZEOF_${GLTYPE}], [$result])
+ eval BITSIZEOF_${GLTYPE}=\$result
+ done
+ m4_foreach_w([gltype], [$1],
+ [AC_SUBST([BITSIZEOF_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
+])
+
+dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES)
+dnl Determine the signedness of each of the given types.
+dnl Define HAVE_SIGNED_TYPE if type is signed.
+AC_DEFUN([gl_CHECK_TYPES_SIGNED],
+[
+ dnl Use a shell loop, to avoid bloating configure, and
+ dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
+ dnl config.h.in,
+ dnl - extra AC_SUBST calls, so that the right substitutions are made.
+ m4_foreach_w([gltype], [$1],
+ [AH_TEMPLATE([HAVE_SIGNED_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
+ [Define to 1 if ']gltype[' is a signed integer type.])])
+ for gltype in $1 ; do
+ AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([$2[
+ int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];]])],
+ result=yes, result=no)
+ eval gl_cv_type_${gltype}_signed=\$result
+ ])
+ eval result=\$gl_cv_type_${gltype}_signed
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ if test "$result" = yes; then
+ AC_DEFINE_UNQUOTED([HAVE_SIGNED_${GLTYPE}], [1])
+ eval HAVE_SIGNED_${GLTYPE}=1
+ else
+ eval HAVE_SIGNED_${GLTYPE}=0
+ fi
+ done
+ m4_foreach_w([gltype], [$1],
+ [AC_SUBST([HAVE_SIGNED_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
+])
+
+dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES)
+dnl Determine the suffix to use for integer constants of the given types.
+dnl Define t_SUFFIX for each such type.
+AC_DEFUN([gl_INTEGER_TYPE_SUFFIX],
+[
+ dnl Use a shell loop, to avoid bloating configure, and
+ dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
+ dnl config.h.in,
+ dnl - extra AC_SUBST calls, so that the right substitutions are made.
+ m4_foreach_w([gltype], [$1],
+ [AH_TEMPLATE(translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX],
+ [Define to l, ll, u, ul, ull, etc., as suitable for
+ constants of type ']gltype['.])])
+ for gltype in $1 ; do
+ AC_CACHE_CHECK([for $gltype integer literal suffix],
+ [gl_cv_type_${gltype}_suffix],
+ [eval gl_cv_type_${gltype}_suffix=no
+ eval result=\$gl_cv_type_${gltype}_signed
+ if test "$result" = yes; then
+ glsufu=
+ else
+ glsufu=u
+ fi
+ for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+ case $glsuf in
+ '') gltype1='int';;
+ l) gltype1='long int';;
+ ll) gltype1='long long int';;
+ i64) gltype1='__int64';;
+ u) gltype1='unsigned int';;
+ ul) gltype1='unsigned long int';;
+ ull) gltype1='unsigned long long int';;
+ ui64)gltype1='unsigned __int64';;
+ esac
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([$2[
+ extern $gltype foo;
+ extern $gltype1 foo;]])],
+ [eval gl_cv_type_${gltype}_suffix=\$glsuf])
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" != no && break
+ done])
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" = no && result=
+ eval ${GLTYPE}_SUFFIX=\$result
+ AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], [$result])
+ done
+ m4_foreach_w([gltype], [$1],
+ [AC_SUBST(translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])])
+])
+
+dnl gl_STDINT_INCLUDES
+AC_DEFUN([gl_STDINT_INCLUDES],
+[[
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+]])
+
+dnl gl_STDINT_TYPE_PROPERTIES
+dnl Compute HAVE_SIGNED_t, BITSIZEOF_t and t_SUFFIX, for all the types t
+dnl of interest to stdint.in.h.
+AC_DEFUN([gl_STDINT_TYPE_PROPERTIES],
+[
+ AC_REQUIRE([gl_MULTIARCH])
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+ gl_STDINT_BITSIZEOF([ptrdiff_t size_t],
+ [gl_STDINT_INCLUDES])
+ fi
+ gl_STDINT_BITSIZEOF([sig_atomic_t wchar_t wint_t],
+ [gl_STDINT_INCLUDES])
+ gl_CHECK_TYPES_SIGNED([sig_atomic_t wchar_t wint_t],
+ [gl_STDINT_INCLUDES])
+ gl_cv_type_ptrdiff_t_signed=yes
+ gl_cv_type_size_t_signed=no
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+ gl_INTEGER_TYPE_SUFFIX([ptrdiff_t size_t],
+ [gl_STDINT_INCLUDES])
+ fi
+ gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t],
+ [gl_STDINT_INCLUDES])
+])
+
+dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
+dnl Remove this when we can assume autoconf >= 2.61.
+m4_ifdef([AC_COMPUTE_INT], [], [
+ AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
+])
+
+# Hey Emacs!
+# Local Variables:
+# indent-tabs-mode: nil
+# End:
diff --git a/gnulib-m4/stdint_h.m4 b/gnulib-m4/stdint_h.m4
new file mode 100644
index 00000000..82f0c244
--- /dev/null
+++ b/gnulib-m4/stdint_h.m4
@@ -0,0 +1,26 @@
+# stdint_h.m4 serial 8
+dnl Copyright (C) 1997-2004, 2006, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
+# doesn't clash with <sys/types.h>, and declares uintmax_t.
+
+AC_DEFUN([gl_AC_HEADER_STDINT_H],
+[
+ AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h],
+ [AC_TRY_COMPILE(
+ [#include <sys/types.h>
+#include <stdint.h>],
+ [uintmax_t i = (uintmax_t) -1; return !i;],
+ [gl_cv_header_stdint_h=yes],
+ [gl_cv_header_stdint_h=no])])
+ if test $gl_cv_header_stdint_h = yes; then
+ AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1],
+ [Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
+ and declares uintmax_t. ])
+ fi
+])
diff --git a/gnulib-m4/stdlib_h.m4 b/gnulib-m4/stdlib_h.m4
new file mode 100644
index 00000000..b295f16b
--- /dev/null
+++ b/gnulib-m4/stdlib_h.m4
@@ -0,0 +1,73 @@
+# stdlib_h.m4 serial 15
+dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_STDLIB_H],
+[
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+ gl_CHECK_NEXT_HEADERS([stdlib.h])
+ AC_CHECK_HEADERS([random.h], [], [], [AC_INCLUDES_DEFAULT])
+ if test $ac_cv_header_random_h = yes; then
+ HAVE_RANDOM_H=1
+ else
+ HAVE_RANDOM_H=0
+ fi
+ AC_SUBST([HAVE_RANDOM_H])
+ AC_CHECK_TYPES([struct random_data],
+ [], [HAVE_STRUCT_RANDOM_DATA=0],
+ [[#include <stdlib.h>
+ #if HAVE_RANDOM_H
+ # include <random.h>
+ #endif
+ ]])
+])
+
+AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+ GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_STDLIB_H_DEFAULTS],
+[
+ GNULIB_MALLOC_POSIX=0; AC_SUBST([GNULIB_MALLOC_POSIX])
+ GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX])
+ GNULIB_CALLOC_POSIX=0; AC_SUBST([GNULIB_CALLOC_POSIX])
+ GNULIB_ATOLL=0; AC_SUBST([GNULIB_ATOLL])
+ GNULIB_GETLOADAVG=0; AC_SUBST([GNULIB_GETLOADAVG])
+ GNULIB_GETSUBOPT=0; AC_SUBST([GNULIB_GETSUBOPT])
+ GNULIB_MKDTEMP=0; AC_SUBST([GNULIB_MKDTEMP])
+ GNULIB_MKSTEMP=0; AC_SUBST([GNULIB_MKSTEMP])
+ GNULIB_PUTENV=0; AC_SUBST([GNULIB_PUTENV])
+ GNULIB_RANDOM_R=0; AC_SUBST([GNULIB_RANDOM_R])
+ GNULIB_RPMATCH=0; AC_SUBST([GNULIB_RPMATCH])
+ GNULIB_SETENV=0; AC_SUBST([GNULIB_SETENV])
+ GNULIB_STRTOD=0; AC_SUBST([GNULIB_STRTOD])
+ GNULIB_STRTOLL=0; AC_SUBST([GNULIB_STRTOLL])
+ GNULIB_STRTOULL=0; AC_SUBST([GNULIB_STRTOULL])
+ GNULIB_UNSETENV=0; AC_SUBST([GNULIB_UNSETENV])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_ATOLL=1; AC_SUBST([HAVE_ATOLL])
+ HAVE_CALLOC_POSIX=1; AC_SUBST([HAVE_CALLOC_POSIX])
+ HAVE_GETSUBOPT=1; AC_SUBST([HAVE_GETSUBOPT])
+ HAVE_MALLOC_POSIX=1; AC_SUBST([HAVE_MALLOC_POSIX])
+ HAVE_MKDTEMP=1; AC_SUBST([HAVE_MKDTEMP])
+ HAVE_REALLOC_POSIX=1; AC_SUBST([HAVE_REALLOC_POSIX])
+ HAVE_RANDOM_R=1; AC_SUBST([HAVE_RANDOM_R])
+ HAVE_RPMATCH=1; AC_SUBST([HAVE_RPMATCH])
+ HAVE_SETENV=1; AC_SUBST([HAVE_SETENV])
+ HAVE_STRTOD=1; AC_SUBST([HAVE_STRTOD])
+ HAVE_STRTOLL=1; AC_SUBST([HAVE_STRTOLL])
+ HAVE_STRTOULL=1; AC_SUBST([HAVE_STRTOULL])
+ HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA])
+ HAVE_SYS_LOADAVG_H=0; AC_SUBST([HAVE_SYS_LOADAVG_H])
+ HAVE_UNSETENV=1; AC_SUBST([HAVE_UNSETENV])
+ HAVE_DECL_GETLOADAVG=1; AC_SUBST([HAVE_DECL_GETLOADAVG])
+ REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP])
+ REPLACE_PUTENV=0; AC_SUBST([REPLACE_PUTENV])
+ REPLACE_STRTOD=0; AC_SUBST([REPLACE_STRTOD])
+ VOID_UNSETENV=0; AC_SUBST([VOID_UNSETENV])
+])
diff --git a/gnulib-m4/strerror.m4 b/gnulib-m4/strerror.m4
new file mode 100644
index 00000000..8c16ca9a
--- /dev/null
+++ b/gnulib-m4/strerror.m4
@@ -0,0 +1,68 @@
+# strerror.m4 serial 9
+dnl Copyright (C) 2002, 2007-2008 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STRERROR],
+[
+ AC_REQUIRE([gl_FUNC_STRERROR_SEPARATE])
+ if test $REPLACE_STRERROR = 1; then
+ AC_LIBOBJ([strerror])
+ AC_DEFINE_UNQUOTED([REPLACE_STRERROR], [$REPLACE_STRERROR],
+ [Define this to 1 if strerror is broken.])
+ fi
+])
+
+# Like gl_FUNC_STRERROR, except prepare for separate compilation (no AC_LIBOBJ).
+AC_DEFUN([gl_FUNC_STRERROR_SEPARATE],
+[
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ AC_REQUIRE([gl_HEADER_ERRNO_H])
+ if test -z "$ERRNO_H"; then
+ AC_CACHE_CHECK([for working strerror function],
+ [gl_cv_func_working_strerror],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <string.h>
+ ]],
+ [[return !*strerror (-2);]])],
+ [gl_cv_func_working_strerror=yes],
+ [gl_cv_func_working_strerror=no],
+ [dnl Assume crossbuild works if it compiles.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <string.h>
+ ]],
+ [[return !*strerror (-2);]])],
+ [gl_cv_func_working_strerror=yes],
+ [gl_cv_func_working_strerror=no])
+ ])
+ ])
+ if test $gl_cv_func_working_strerror = no; then
+ dnl The system's strerror() fails to return a string for out-of-range
+ dnl integers. Replace it.
+ REPLACE_STRERROR=1
+ fi
+ else
+ dnl The system's strerror() cannot know about the new errno values we add
+ dnl to <errno.h>. Replace it.
+ REPLACE_STRERROR=1
+ fi
+ if test $REPLACE_STRERROR = 1; then
+ gl_PREREQ_STRERROR
+ fi
+])
+
+# Prerequisites of lib/strerror.c.
+AC_DEFUN([gl_PREREQ_STRERROR], [
+ AC_CHECK_DECLS([strerror])
+ AC_CHECK_HEADERS_ONCE([sys/socket.h])
+ if test $ac_cv_header_sys_socket_h != yes; then
+ dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make
+ dnl the check for those headers unconditional; yet cygwin reports
+ dnl that the headers are present but cannot be compiled (since on
+ dnl cygwin, all socket information should come from sys/socket.h).
+ AC_CHECK_HEADERS([winsock2.h])
+ fi
+])
diff --git a/gnulib-m4/string_h.m4 b/gnulib-m4/string_h.m4
new file mode 100644
index 00000000..11f09c8b
--- /dev/null
+++ b/gnulib-m4/string_h.m4
@@ -0,0 +1,94 @@
+# Configure a GNU-like replacement for <string.h>.
+
+# Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 7
+
+# Written by Paul Eggert.
+
+AC_DEFUN([gl_HEADER_STRING_H],
+[
+ dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+ dnl once only, before all statements that occur in other macros.
+ AC_REQUIRE([gl_HEADER_STRING_H_BODY])
+])
+
+AC_DEFUN([gl_HEADER_STRING_H_BODY],
+[
+ AC_REQUIRE([AC_C_RESTRICT])
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ gl_CHECK_NEXT_HEADERS([string.h])
+])
+
+AC_DEFUN([gl_STRING_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
+[
+ GNULIB_MEMCHR=0; AC_SUBST([GNULIB_MEMCHR])
+ GNULIB_MEMMEM=0; AC_SUBST([GNULIB_MEMMEM])
+ GNULIB_MEMPCPY=0; AC_SUBST([GNULIB_MEMPCPY])
+ GNULIB_MEMRCHR=0; AC_SUBST([GNULIB_MEMRCHR])
+ GNULIB_RAWMEMCHR=0; AC_SUBST([GNULIB_RAWMEMCHR])
+ GNULIB_STPCPY=0; AC_SUBST([GNULIB_STPCPY])
+ GNULIB_STPNCPY=0; AC_SUBST([GNULIB_STPNCPY])
+ GNULIB_STRCHRNUL=0; AC_SUBST([GNULIB_STRCHRNUL])
+ GNULIB_STRDUP=0; AC_SUBST([GNULIB_STRDUP])
+ GNULIB_STRNDUP=0; AC_SUBST([GNULIB_STRNDUP])
+ GNULIB_STRNLEN=0; AC_SUBST([GNULIB_STRNLEN])
+ GNULIB_STRPBRK=0; AC_SUBST([GNULIB_STRPBRK])
+ GNULIB_STRSEP=0; AC_SUBST([GNULIB_STRSEP])
+ GNULIB_STRSTR=0; AC_SUBST([GNULIB_STRSTR])
+ GNULIB_STRCASESTR=0; AC_SUBST([GNULIB_STRCASESTR])
+ GNULIB_STRTOK_R=0; AC_SUBST([GNULIB_STRTOK_R])
+ GNULIB_MBSLEN=0; AC_SUBST([GNULIB_MBSLEN])
+ GNULIB_MBSNLEN=0; AC_SUBST([GNULIB_MBSNLEN])
+ GNULIB_MBSCHR=0; AC_SUBST([GNULIB_MBSCHR])
+ GNULIB_MBSRCHR=0; AC_SUBST([GNULIB_MBSRCHR])
+ GNULIB_MBSSTR=0; AC_SUBST([GNULIB_MBSSTR])
+ GNULIB_MBSCASECMP=0; AC_SUBST([GNULIB_MBSCASECMP])
+ GNULIB_MBSNCASECMP=0; AC_SUBST([GNULIB_MBSNCASECMP])
+ GNULIB_MBSPCASECMP=0; AC_SUBST([GNULIB_MBSPCASECMP])
+ GNULIB_MBSCASESTR=0; AC_SUBST([GNULIB_MBSCASESTR])
+ GNULIB_MBSCSPN=0; AC_SUBST([GNULIB_MBSCSPN])
+ GNULIB_MBSPBRK=0; AC_SUBST([GNULIB_MBSPBRK])
+ GNULIB_MBSSPN=0; AC_SUBST([GNULIB_MBSSPN])
+ GNULIB_MBSSEP=0; AC_SUBST([GNULIB_MBSSEP])
+ GNULIB_MBSTOK_R=0; AC_SUBST([GNULIB_MBSTOK_R])
+ GNULIB_STRERROR=0; AC_SUBST([GNULIB_STRERROR])
+ GNULIB_STRSIGNAL=0; AC_SUBST([GNULIB_STRSIGNAL])
+ GNULIB_STRVERSCMP=0; AC_SUBST([GNULIB_STRVERSCMP])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_DECL_MEMMEM=1; AC_SUBST([HAVE_DECL_MEMMEM])
+ HAVE_MEMPCPY=1; AC_SUBST([HAVE_MEMPCPY])
+ HAVE_DECL_MEMRCHR=1; AC_SUBST([HAVE_DECL_MEMRCHR])
+ HAVE_RAWMEMCHR=1; AC_SUBST([HAVE_RAWMEMCHR])
+ HAVE_STPCPY=1; AC_SUBST([HAVE_STPCPY])
+ HAVE_STPNCPY=1; AC_SUBST([HAVE_STPNCPY])
+ HAVE_STRCHRNUL=1; AC_SUBST([HAVE_STRCHRNUL])
+ HAVE_DECL_STRDUP=1; AC_SUBST([HAVE_DECL_STRDUP])
+ HAVE_STRNDUP=1; AC_SUBST([HAVE_STRNDUP])
+ HAVE_DECL_STRNDUP=1; AC_SUBST([HAVE_DECL_STRNDUP])
+ HAVE_DECL_STRNLEN=1; AC_SUBST([HAVE_DECL_STRNLEN])
+ HAVE_STRPBRK=1; AC_SUBST([HAVE_STRPBRK])
+ HAVE_STRSEP=1; AC_SUBST([HAVE_STRSEP])
+ HAVE_STRCASESTR=1; AC_SUBST([HAVE_STRCASESTR])
+ HAVE_DECL_STRTOK_R=1; AC_SUBST([HAVE_DECL_STRTOK_R])
+ HAVE_DECL_STRERROR=1; AC_SUBST([HAVE_DECL_STRERROR])
+ HAVE_DECL_STRSIGNAL=1; AC_SUBST([HAVE_DECL_STRSIGNAL])
+ HAVE_STRVERSCMP=1; AC_SUBST([HAVE_STRVERSCMP])
+ REPLACE_MEMCHR=0; AC_SUBST([REPLACE_MEMCHR])
+ REPLACE_MEMMEM=0; AC_SUBST([REPLACE_MEMMEM])
+ REPLACE_STRDUP=0; AC_SUBST([REPLACE_STRDUP])
+ REPLACE_STRSTR=0; AC_SUBST([REPLACE_STRSTR])
+ REPLACE_STRCASESTR=0; AC_SUBST([REPLACE_STRCASESTR])
+ REPLACE_STRERROR=0; AC_SUBST([REPLACE_STRERROR])
+ REPLACE_STRSIGNAL=0; AC_SUBST([REPLACE_STRSIGNAL])
+])
diff --git a/gnulib-m4/unistd_h.m4 b/gnulib-m4/unistd_h.m4
new file mode 100644
index 00000000..ff9a4ea0
--- /dev/null
+++ b/gnulib-m4/unistd_h.m4
@@ -0,0 +1,83 @@
+# unistd_h.m4 serial 17
+dnl Copyright (C) 2006-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Simon Josefsson, Bruno Haible.
+
+AC_DEFUN([gl_UNISTD_H],
+[
+ dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+ dnl once only, before all statements that occur in other macros.
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+
+ gl_CHECK_NEXT_HEADERS([unistd.h])
+
+ AC_CHECK_HEADERS_ONCE([unistd.h])
+ if test $ac_cv_header_unistd_h = yes; then
+ HAVE_UNISTD_H=1
+ else
+ HAVE_UNISTD_H=0
+ fi
+ AC_SUBST([HAVE_UNISTD_H])
+])
+
+AC_DEFUN([gl_UNISTD_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_UNISTD_H_DEFAULTS],
+[
+ GNULIB_CHOWN=0; AC_SUBST([GNULIB_CHOWN])
+ GNULIB_CLOSE=0; AC_SUBST([GNULIB_CLOSE])
+ GNULIB_DUP2=0; AC_SUBST([GNULIB_DUP2])
+ GNULIB_ENVIRON=0; AC_SUBST([GNULIB_ENVIRON])
+ GNULIB_EUIDACCESS=0; AC_SUBST([GNULIB_EUIDACCESS])
+ GNULIB_FCHDIR=0; AC_SUBST([GNULIB_FCHDIR])
+ GNULIB_FSYNC=0; AC_SUBST([GNULIB_FSYNC])
+ GNULIB_FTRUNCATE=0; AC_SUBST([GNULIB_FTRUNCATE])
+ GNULIB_GETCWD=0; AC_SUBST([GNULIB_GETCWD])
+ GNULIB_GETDOMAINNAME=0; AC_SUBST([GNULIB_GETDOMAINNAME])
+ GNULIB_GETDTABLESIZE=0; AC_SUBST([GNULIB_GETDTABLESIZE])
+ GNULIB_GETHOSTNAME=0; AC_SUBST([GNULIB_GETHOSTNAME])
+ GNULIB_GETLOGIN_R=0; AC_SUBST([GNULIB_GETLOGIN_R])
+ GNULIB_GETPAGESIZE=0; AC_SUBST([GNULIB_GETPAGESIZE])
+ GNULIB_GETUSERSHELL=0; AC_SUBST([GNULIB_GETUSERSHELL])
+ GNULIB_LCHOWN=0; AC_SUBST([GNULIB_LCHOWN])
+ GNULIB_LINK=0; AC_SUBST([GNULIB_LINK])
+ GNULIB_LSEEK=0; AC_SUBST([GNULIB_LSEEK])
+ GNULIB_READLINK=0; AC_SUBST([GNULIB_READLINK])
+ GNULIB_SLEEP=0; AC_SUBST([GNULIB_SLEEP])
+ GNULIB_UNISTD_H_SIGPIPE=0; AC_SUBST([GNULIB_UNISTD_H_SIGPIPE])
+ GNULIB_WRITE=0; AC_SUBST([GNULIB_WRITE])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_DUP2=1; AC_SUBST([HAVE_DUP2])
+ HAVE_EUIDACCESS=1; AC_SUBST([HAVE_EUIDACCESS])
+ HAVE_FSYNC=1; AC_SUBST([HAVE_FSYNC])
+ HAVE_FTRUNCATE=1; AC_SUBST([HAVE_FTRUNCATE])
+ HAVE_GETDOMAINNAME=1; AC_SUBST([HAVE_GETDOMAINNAME])
+ HAVE_GETDTABLESIZE=1; AC_SUBST([HAVE_GETDTABLESIZE])
+ HAVE_GETHOSTNAME=1; AC_SUBST([HAVE_GETHOSTNAME])
+ HAVE_GETPAGESIZE=1; AC_SUBST([HAVE_GETPAGESIZE])
+ HAVE_GETUSERSHELL=1; AC_SUBST([HAVE_GETUSERSHELL])
+ HAVE_LINK=1; AC_SUBST([HAVE_LINK])
+ HAVE_READLINK=1; AC_SUBST([HAVE_READLINK])
+ HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP])
+ HAVE_DECL_ENVIRON=1; AC_SUBST([HAVE_DECL_ENVIRON])
+ HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
+ HAVE_OS_H=0; AC_SUBST([HAVE_OS_H])
+ HAVE_SYS_PARAM_H=0; AC_SUBST([HAVE_SYS_PARAM_H])
+ REPLACE_CHOWN=0; AC_SUBST([REPLACE_CHOWN])
+ REPLACE_CLOSE=0; AC_SUBST([REPLACE_CLOSE])
+ REPLACE_FCHDIR=0; AC_SUBST([REPLACE_FCHDIR])
+ REPLACE_GETCWD=0; AC_SUBST([REPLACE_GETCWD])
+ REPLACE_GETPAGESIZE=0; AC_SUBST([REPLACE_GETPAGESIZE])
+ REPLACE_LCHOWN=0; AC_SUBST([REPLACE_LCHOWN])
+ REPLACE_LSEEK=0; AC_SUBST([REPLACE_LSEEK])
+ REPLACE_WRITE=0; AC_SUBST([REPLACE_WRITE])
+ UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H])
+])
diff --git a/gnulib-m4/vasnprintf.m4 b/gnulib-m4/vasnprintf.m4
new file mode 100644
index 00000000..3a1d1e01
--- /dev/null
+++ b/gnulib-m4/vasnprintf.m4
@@ -0,0 +1,276 @@
+# vasnprintf.m4 serial 29
+dnl Copyright (C) 2002-2004, 2006-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_VASNPRINTF],
+[
+ AC_CHECK_FUNCS_ONCE([vasnprintf])
+ if test $ac_cv_func_vasnprintf = no; then
+ gl_REPLACE_VASNPRINTF
+ fi
+])
+
+AC_DEFUN([gl_REPLACE_VASNPRINTF],
+[
+ AC_CHECK_FUNCS_ONCE([vasnprintf])
+ AC_LIBOBJ([vasnprintf])
+ AC_LIBOBJ([printf-args])
+ AC_LIBOBJ([printf-parse])
+ AC_LIBOBJ([asnprintf])
+ if test $ac_cv_func_vasnprintf = yes; then
+ AC_DEFINE([REPLACE_VASNPRINTF], [1],
+ [Define if vasnprintf exists but is overridden by gnulib.])
+ fi
+ gl_PREREQ_PRINTF_ARGS
+ gl_PREREQ_PRINTF_PARSE
+ gl_PREREQ_VASNPRINTF
+ gl_PREREQ_ASNPRINTF
+])
+
+# Prequisites of lib/printf-args.h, lib/printf-args.c.
+AC_DEFUN([gl_PREREQ_PRINTF_ARGS],
+[
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+ AC_REQUIRE([gt_TYPE_WCHAR_T])
+ AC_REQUIRE([gt_TYPE_WINT_T])
+])
+
+# Prequisites of lib/printf-parse.h, lib/printf-parse.c.
+AC_DEFUN([gl_PREREQ_PRINTF_PARSE],
+[
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+ AC_REQUIRE([gt_TYPE_WCHAR_T])
+ AC_REQUIRE([gt_TYPE_WINT_T])
+ AC_REQUIRE([AC_TYPE_SIZE_T])
+ AC_CHECK_TYPE([ptrdiff_t], ,
+ [AC_DEFINE([ptrdiff_t], [long],
+ [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
+ ])
+ AC_REQUIRE([gt_AC_TYPE_INTMAX_T])
+])
+
+# Prerequisites of lib/vasnprintf.c.
+AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF],
+[
+ AC_REQUIRE([AC_FUNC_ALLOCA])
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+ AC_REQUIRE([gt_TYPE_WCHAR_T])
+ AC_REQUIRE([gt_TYPE_WINT_T])
+ AC_CHECK_FUNCS([snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
+ dnl Use the _snprintf function only if it is declared (because on NetBSD it
+ dnl is defined as a weak alias of snprintf; we prefer to use the latter).
+ AC_CHECK_DECLS([_snprintf], , , [#include <stdio.h>])
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting 'long double'
+# arguments.
+AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE],
+[
+ AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
+ case "$gl_cv_func_printf_long_double" in
+ *yes)
+ ;;
+ *)
+ AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
+ [Define if the vasnprintf implementation needs special code for
+ 'long double' arguments.])
+ ;;
+ esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting infinite 'double'
+# arguments.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE],
+[
+ AC_REQUIRE([gl_PRINTF_INFINITE])
+ case "$gl_cv_func_printf_infinite" in
+ *yes)
+ ;;
+ *)
+ AC_DEFINE([NEED_PRINTF_INFINITE_DOUBLE], [1],
+ [Define if the vasnprintf implementation needs special code for
+ infinite 'double' arguments.])
+ ;;
+ esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting infinite 'long double'
+# arguments.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE],
+[
+ AC_REQUIRE([gl_PRINTF_INFINITE_LONG_DOUBLE])
+ dnl There is no need to set NEED_PRINTF_INFINITE_LONG_DOUBLE if
+ dnl NEED_PRINTF_LONG_DOUBLE is already set.
+ AC_REQUIRE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE])
+ case "$gl_cv_func_printf_long_double" in
+ *yes)
+ case "$gl_cv_func_printf_infinite_long_double" in
+ *yes)
+ ;;
+ *)
+ AC_DEFINE([NEED_PRINTF_INFINITE_LONG_DOUBLE], [1],
+ [Define if the vasnprintf implementation needs special code for
+ infinite 'long double' arguments.])
+ ;;
+ esac
+ ;;
+ esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting the 'a' directive.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_A],
+[
+ AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
+ case "$gl_cv_func_printf_directive_a" in
+ *yes)
+ ;;
+ *)
+ AC_DEFINE([NEED_PRINTF_DIRECTIVE_A], [1],
+ [Define if the vasnprintf implementation needs special code for
+ the 'a' and 'A' directives.])
+ AC_CHECK_FUNCS([nl_langinfo])
+ ;;
+ esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting the 'F' directive.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_F],
+[
+ AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
+ case "$gl_cv_func_printf_directive_f" in
+ *yes)
+ ;;
+ *)
+ AC_DEFINE([NEED_PRINTF_DIRECTIVE_F], [1],
+ [Define if the vasnprintf implementation needs special code for
+ the 'F' directive.])
+ ;;
+ esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting the 'ls' directive.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_LS],
+[
+ AC_REQUIRE([gl_PRINTF_DIRECTIVE_LS])
+ case "$gl_cv_func_printf_directive_ls" in
+ *yes)
+ ;;
+ *)
+ AC_DEFINE([NEED_PRINTF_DIRECTIVE_LS], [1],
+ [Define if the vasnprintf implementation needs special code for
+ the 'ls' directive.])
+ ;;
+ esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting the ' flag.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_GROUPING],
+[
+ AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
+ case "$gl_cv_func_printf_flag_grouping" in
+ *yes)
+ ;;
+ *)
+ AC_DEFINE([NEED_PRINTF_FLAG_GROUPING], [1],
+ [Define if the vasnprintf implementation needs special code for the
+ ' flag.])
+ ;;
+ esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting the '-' flag.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST],
+[
+ AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
+ case "$gl_cv_func_printf_flag_leftadjust" in
+ *yes)
+ ;;
+ *)
+ AC_DEFINE([NEED_PRINTF_FLAG_LEFTADJUST], [1],
+ [Define if the vasnprintf implementation needs special code for the
+ '-' flag.])
+ ;;
+ esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting the 0 flag.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_ZERO],
+[
+ AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
+ case "$gl_cv_func_printf_flag_zero" in
+ *yes)
+ ;;
+ *)
+ AC_DEFINE([NEED_PRINTF_FLAG_ZERO], [1],
+ [Define if the vasnprintf implementation needs special code for the
+ 0 flag.])
+ ;;
+ esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for supporting large precisions.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_PRECISION],
+[
+ AC_REQUIRE([gl_PRINTF_PRECISION])
+ case "$gl_cv_func_printf_precision" in
+ *yes)
+ ;;
+ *)
+ AC_DEFINE([NEED_PRINTF_UNBOUNDED_PRECISION], [1],
+ [Define if the vasnprintf implementation needs special code for
+ supporting large precisions without arbitrary bounds.])
+ AC_DEFINE([NEED_PRINTF_DOUBLE], [1],
+ [Define if the vasnprintf implementation needs special code for
+ 'double' arguments.])
+ AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
+ [Define if the vasnprintf implementation needs special code for
+ 'long double' arguments.])
+ ;;
+ esac
+])
+
+# Extra prerequisites of lib/vasnprintf.c for surviving out-of-memory
+# conditions.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_ENOMEM],
+[
+ AC_REQUIRE([gl_PRINTF_ENOMEM])
+ case "$gl_cv_func_printf_enomem" in
+ *yes)
+ ;;
+ *)
+ AC_DEFINE([NEED_PRINTF_ENOMEM], [1],
+ [Define if the vasnprintf implementation needs special code for
+ surviving out-of-memory conditions.])
+ AC_DEFINE([NEED_PRINTF_DOUBLE], [1],
+ [Define if the vasnprintf implementation needs special code for
+ 'double' arguments.])
+ AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
+ [Define if the vasnprintf implementation needs special code for
+ 'long double' arguments.])
+ ;;
+ esac
+])
+
+# Prerequisites of lib/vasnprintf.c including all extras for POSIX compliance.
+AC_DEFUN([gl_PREREQ_VASNPRINTF_WITH_EXTRAS],
+[
+ AC_REQUIRE([gl_PREREQ_VASNPRINTF])
+ gl_PREREQ_VASNPRINTF_LONG_DOUBLE
+ gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE
+ gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE
+ gl_PREREQ_VASNPRINTF_DIRECTIVE_A
+ gl_PREREQ_VASNPRINTF_DIRECTIVE_F
+ gl_PREREQ_VASNPRINTF_DIRECTIVE_LS
+ gl_PREREQ_VASNPRINTF_FLAG_GROUPING
+ gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
+ gl_PREREQ_VASNPRINTF_FLAG_ZERO
+ gl_PREREQ_VASNPRINTF_PRECISION
+ gl_PREREQ_VASNPRINTF_ENOMEM
+])
+
+# Prerequisites of lib/asnprintf.c.
+AC_DEFUN([gl_PREREQ_ASNPRINTF],
+[
+])
diff --git a/gnulib-m4/wchar.m4 b/gnulib-m4/wchar.m4
new file mode 100644
index 00000000..2e52a82a
--- /dev/null
+++ b/gnulib-m4/wchar.m4
@@ -0,0 +1,100 @@
+dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
+
+dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Eric Blake.
+
+# wchar.m4 serial 23
+
+AC_DEFUN([gl_WCHAR_H],
+[
+ AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+ AC_CACHE_CHECK([whether <wchar.h> is standalone],
+ [gl_cv_header_wchar_h_standalone],
+ [AC_COMPILE_IFELSE([[#include <wchar.h>
+wchar_t w;]],
+ [gl_cv_header_wchar_h_standalone=yes],
+ [gl_cv_header_wchar_h_standalone=no])])
+
+ AC_REQUIRE([gt_TYPE_WINT_T])
+ if test $gt_cv_c_wint_t = yes; then
+ HAVE_WINT_T=1
+ else
+ HAVE_WINT_T=0
+ fi
+ AC_SUBST([HAVE_WINT_T])
+
+ if test $gl_cv_header_wchar_h_standalone != yes || test $gt_cv_c_wint_t != yes; then
+ WCHAR_H=wchar.h
+ fi
+
+ dnl Prepare for creating substitute <wchar.h>.
+ dnl Do it always: WCHAR_H may be empty here but can be set later.
+ dnl Check for <wchar.h> (missing in Linux uClibc when built without wide
+ dnl character support).
+ AC_CHECK_HEADERS_ONCE([wchar.h])
+ if test $ac_cv_header_wchar_h = yes; then
+ HAVE_WCHAR_H=1
+ else
+ HAVE_WCHAR_H=0
+ fi
+ AC_SUBST([HAVE_WCHAR_H])
+ gl_CHECK_NEXT_HEADERS([wchar.h])
+])
+
+dnl Unconditionally enables the replacement of <wchar.h>.
+AC_DEFUN([gl_REPLACE_WCHAR_H],
+[
+ AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+ WCHAR_H=wchar.h
+])
+
+AC_DEFUN([gl_WCHAR_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+ GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_WCHAR_H_DEFAULTS],
+[
+ GNULIB_BTOWC=0; AC_SUBST([GNULIB_BTOWC])
+ GNULIB_WCTOB=0; AC_SUBST([GNULIB_WCTOB])
+ GNULIB_MBSINIT=0; AC_SUBST([GNULIB_MBSINIT])
+ GNULIB_MBRTOWC=0; AC_SUBST([GNULIB_MBRTOWC])
+ GNULIB_MBRLEN=0; AC_SUBST([GNULIB_MBRLEN])
+ GNULIB_MBSRTOWCS=0; AC_SUBST([GNULIB_MBSRTOWCS])
+ GNULIB_MBSNRTOWCS=0; AC_SUBST([GNULIB_MBSNRTOWCS])
+ GNULIB_WCRTOMB=0; AC_SUBST([GNULIB_WCRTOMB])
+ GNULIB_WCSRTOMBS=0; AC_SUBST([GNULIB_WCSRTOMBS])
+ GNULIB_WCSNRTOMBS=0; AC_SUBST([GNULIB_WCSNRTOMBS])
+ GNULIB_WCWIDTH=0; AC_SUBST([GNULIB_WCWIDTH])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_BTOWC=1; AC_SUBST([HAVE_BTOWC])
+ HAVE_MBSINIT=1; AC_SUBST([HAVE_MBSINIT])
+ HAVE_MBRTOWC=1; AC_SUBST([HAVE_MBRTOWC])
+ HAVE_MBRLEN=1; AC_SUBST([HAVE_MBRLEN])
+ HAVE_MBSRTOWCS=1; AC_SUBST([HAVE_MBSRTOWCS])
+ HAVE_MBSNRTOWCS=1; AC_SUBST([HAVE_MBSNRTOWCS])
+ HAVE_WCRTOMB=1; AC_SUBST([HAVE_WCRTOMB])
+ HAVE_WCSRTOMBS=1; AC_SUBST([HAVE_WCSRTOMBS])
+ HAVE_WCSNRTOMBS=1; AC_SUBST([HAVE_WCSNRTOMBS])
+ HAVE_DECL_WCTOB=1; AC_SUBST([HAVE_DECL_WCTOB])
+ HAVE_DECL_WCWIDTH=1; AC_SUBST([HAVE_DECL_WCWIDTH])
+ REPLACE_MBSTATE_T=0; AC_SUBST([REPLACE_MBSTATE_T])
+ REPLACE_BTOWC=0; AC_SUBST([REPLACE_BTOWC])
+ REPLACE_WCTOB=0; AC_SUBST([REPLACE_WCTOB])
+ REPLACE_MBSINIT=0; AC_SUBST([REPLACE_MBSINIT])
+ REPLACE_MBRTOWC=0; AC_SUBST([REPLACE_MBRTOWC])
+ REPLACE_MBRLEN=0; AC_SUBST([REPLACE_MBRLEN])
+ REPLACE_MBSRTOWCS=0; AC_SUBST([REPLACE_MBSRTOWCS])
+ REPLACE_MBSNRTOWCS=0; AC_SUBST([REPLACE_MBSNRTOWCS])
+ REPLACE_WCRTOMB=0; AC_SUBST([REPLACE_WCRTOMB])
+ REPLACE_WCSRTOMBS=0; AC_SUBST([REPLACE_WCSRTOMBS])
+ REPLACE_WCSNRTOMBS=0; AC_SUBST([REPLACE_WCSNRTOMBS])
+ REPLACE_WCWIDTH=0; AC_SUBST([REPLACE_WCWIDTH])
+ WCHAR_H=''; AC_SUBST([WCHAR_H])
+])
diff --git a/gnulib-m4/wchar_t.m4 b/gnulib-m4/wchar_t.m4
new file mode 100644
index 00000000..fb27a7f6
--- /dev/null
+++ b/gnulib-m4/wchar_t.m4
@@ -0,0 +1,20 @@
+# wchar_t.m4 serial 3 (gettext-0.18)
+dnl Copyright (C) 2002-2003, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether <stddef.h> has the 'wchar_t' type.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_WCHAR_T],
+[
+ AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
+ [AC_TRY_COMPILE([#include <stddef.h>
+ wchar_t foo = (wchar_t)'\0';], ,
+ [gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])])
+ if test $gt_cv_c_wchar_t = yes; then
+ AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
+ fi
+])
diff --git a/gnulib-m4/wctob.m4 b/gnulib-m4/wctob.m4
new file mode 100644
index 00000000..39270c9d
--- /dev/null
+++ b/gnulib-m4/wctob.m4
@@ -0,0 +1,91 @@
+# wctob.m4 serial 4
+dnl Copyright (C) 2008-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_WCTOB],
+[
+ AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+
+ AC_CHECK_FUNCS_ONCE([wctob])
+ if test $ac_cv_func_wctob = no; then
+ HAVE_DECL_WCTOB=0
+ gl_REPLACE_WCHAR_H
+ AC_LIBOBJ([wctob])
+ gl_PREREQ_WCTOB
+ else
+
+ dnl Solaris 9 has the wctob() function but it does not work.
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([gt_LOCALE_FR])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether wctob works],
+ [gl_cv_func_wctob_works],
+ [
+ dnl Initial guess, used when cross-compiling or when no suitable locale
+ dnl is present.
+changequote(,)dnl
+ case "$host_os" in
+ # Guess no on Solaris <= 9.
+ solaris2.[1-9] | solaris2.[1-9].*)
+ gl_cv_func_wctob_works="guessing no" ;;
+ # Guess yes otherwise.
+ *) gl_cv_func_wctob_works="guessing yes" ;;
+ esac
+changequote([,])dnl
+ if test $LOCALE_FR != none; then
+ AC_TRY_RUN([
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+ if (setlocale (LC_ALL, "$LOCALE_FR") != NULL)
+ {
+ wchar_t wc;
+
+ if (mbtowc (&wc, "\374", 1) == 1)
+ if (wctob (wc) != (unsigned char) '\374')
+ return 1;
+ }
+ return 0;
+}],
+ [gl_cv_func_wctob_works=yes],
+ [gl_cv_func_wctob_works=no],
+ [:])
+ fi
+ ])
+ case "$gl_cv_func_wctob_works" in
+ *yes) ;;
+ *) REPLACE_WCTOB=1 ;;
+ esac
+ if test $REPLACE_WCTOB = 1; then
+ gl_REPLACE_WCHAR_H
+ AC_LIBOBJ([wctob])
+ gl_PREREQ_WCTOB
+ else
+
+ dnl IRIX 6.5 has the wctob() function but does not declare it.
+ AC_CHECK_DECLS([wctob], [], [], [
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+])
+ if test $ac_cv_have_decl_wctob != yes; then
+ HAVE_DECL_WCTOB=0
+ gl_REPLACE_WCHAR_H
+ fi
+ fi
+ fi
+])
+
+# Prerequisites of lib/wctob.c.
+AC_DEFUN([gl_PREREQ_WCTOB], [
+ :
+])
diff --git a/gnulib-m4/wctype.m4 b/gnulib-m4/wctype.m4
new file mode 100644
index 00000000..6a1b6f07
--- /dev/null
+++ b/gnulib-m4/wctype.m4
@@ -0,0 +1,74 @@
+# wctype.m4 serial 2
+
+dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it.
+
+dnl Copyright (C) 2006-2008 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Paul Eggert.
+
+AC_DEFUN([gl_WCTYPE_H],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_CHECK_FUNCS_ONCE([iswcntrl])
+ if test $ac_cv_func_iswcntrl = yes; then
+ HAVE_ISWCNTRL=1
+ else
+ HAVE_ISWCNTRL=0
+ fi
+ AC_SUBST([HAVE_ISWCNTRL])
+ AC_CHECK_HEADERS_ONCE([wctype.h])
+ AC_REQUIRE([AC_C_INLINE])
+
+ AC_REQUIRE([gt_TYPE_WINT_T])
+ if test $gt_cv_c_wint_t = yes; then
+ HAVE_WINT_T=1
+ else
+ HAVE_WINT_T=0
+ fi
+ AC_SUBST([HAVE_WINT_T])
+
+ WCTYPE_H=wctype.h
+ if test $ac_cv_header_wctype_h = yes; then
+ if test $ac_cv_func_iswcntrl = yes; then
+ dnl Linux libc5 has an iswprint function that returns 0 for all arguments.
+ dnl The other functions are likely broken in the same way.
+ AC_CACHE_CHECK([whether iswcntrl works], [gl_cv_func_iswcntrl_works],
+ [
+ AC_TRY_RUN([#include <stddef.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+ #include <wctype.h>
+ int main () { return iswprint ('x') == 0; }],
+ [gl_cv_func_iswcntrl_works=yes], [gl_cv_func_iswcntrl_works=no],
+ [AC_TRY_COMPILE([#include <stdlib.h>
+ #if __GNU_LIBRARY__ == 1
+ Linux libc5 i18n is broken.
+ #endif], [],
+ [gl_cv_func_iswcntrl_works=yes], [gl_cv_func_iswcntrl_works=no])
+ ])
+ ])
+ if test $gl_cv_func_iswcntrl_works = yes; then
+ WCTYPE_H=
+ fi
+ fi
+ dnl Compute NEXT_WCTYPE_H even if WCTYPE_H is empty,
+ dnl for the benefit of builds from non-distclean directories.
+ gl_CHECK_NEXT_HEADERS([wctype.h])
+ HAVE_WCTYPE_H=1
+ else
+ HAVE_WCTYPE_H=0
+ fi
+ AC_SUBST([HAVE_WCTYPE_H])
+ AC_SUBST([WCTYPE_H])
+
+ if test "$gl_cv_func_iswcntrl_works" = no; then
+ REPLACE_ISWCNTRL=1
+ else
+ REPLACE_ISWCNTRL=0
+ fi
+ AC_SUBST([REPLACE_ISWCNTRL])
+])
diff --git a/gnulib-m4/wcwidth.m4 b/gnulib-m4/wcwidth.m4
new file mode 100644
index 00000000..4bedefae
--- /dev/null
+++ b/gnulib-m4/wcwidth.m4
@@ -0,0 +1,85 @@
+# wcwidth.m4 serial 14
+dnl Copyright (C) 2006-2008 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_WCWIDTH],
+[
+ AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+
+ dnl Persuade glibc <wchar.h> to declare wcwidth().
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+ AC_REQUIRE([gt_TYPE_WCHAR_T])
+ AC_REQUIRE([gt_TYPE_WINT_T])
+
+ AC_CHECK_HEADERS_ONCE([wchar.h])
+ AC_CHECK_FUNCS_ONCE([wcwidth])
+
+ AC_CHECK_DECLS([wcwidth], [], [], [
+/* AIX 3.2.5 declares wcwidth in <string.h>. */
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+])
+ if test $ac_cv_have_decl_wcwidth != yes; then
+ HAVE_DECL_WCWIDTH=0
+ fi
+
+ if test $ac_cv_func_wcwidth = no; then
+ REPLACE_WCWIDTH=1
+ else
+ dnl On MacOS X 10.3, wcwidth(0x0301) (COMBINING ACUTE ACCENT) returns 1.
+ dnl On OSF/1 5.1, wcwidth(0x200B) (ZERO WIDTH SPACE) returns 1.
+ dnl This leads to bugs in 'ls' (coreutils).
+ AC_CACHE_CHECK([whether wcwidth works reasonably in UTF-8 locales],
+ [gl_cv_func_wcwidth_works],
+ [
+ AC_TRY_RUN([
+#include <locale.h>
+/* AIX 3.2.5 declares wcwidth in <string.h>. */
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+#if !HAVE_DECL_WCWIDTH
+extern
+# ifdef __cplusplus
+"C"
+# endif
+int wcwidth (int);
+#endif
+int main ()
+{
+ if (setlocale (LC_ALL, "fr_FR.UTF-8") != NULL)
+ if (wcwidth (0x0301) > 0 || wcwidth (0x200B) > 0)
+ return 1;
+ return 0;
+}], [gl_cv_func_wcwidth_works=yes], [gl_cv_func_wcwidth_works=no],
+ [gl_cv_func_wcwidth_works="guessing no"])
+ ])
+ case "$gl_cv_func_wcwidth_works" in
+ *yes) ;;
+ *no) REPLACE_WCWIDTH=1 ;;
+ esac
+ fi
+ if test $REPLACE_WCWIDTH = 1; then
+ AC_LIBOBJ([wcwidth])
+ fi
+
+ if test $REPLACE_WCWIDTH = 1 || test $HAVE_DECL_WCWIDTH = 0; then
+ gl_REPLACE_WCHAR_H
+ fi
+])
diff --git a/gnulib-m4/wint_t.m4 b/gnulib-m4/wint_t.m4
new file mode 100644
index 00000000..47a4363d
--- /dev/null
+++ b/gnulib-m4/wint_t.m4
@@ -0,0 +1,28 @@
+# wint_t.m4 serial 4 (gettext-0.18)
+dnl Copyright (C) 2003, 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether <wchar.h> has the 'wint_t' type.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_WINT_T],
+[
+ AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
+ [AC_TRY_COMPILE([
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+ wint_t foo = (wchar_t)'\0';], ,
+ [gt_cv_c_wint_t=yes], [gt_cv_c_wint_t=no])])
+ if test $gt_cv_c_wint_t = yes; then
+ AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
+ fi
+])
diff --git a/gnulib-m4/xalloc.m4 b/gnulib-m4/xalloc.m4
new file mode 100644
index 00000000..837a948c
--- /dev/null
+++ b/gnulib-m4/xalloc.m4
@@ -0,0 +1,24 @@
+# xalloc.m4 serial 16
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_XALLOC],
+[
+ AC_LIBOBJ([xmalloc])
+
+ gl_PREREQ_XALLOC
+ gl_PREREQ_XMALLOC
+])
+
+# Prerequisites of lib/xalloc.h.
+AC_DEFUN([gl_PREREQ_XALLOC], [
+ AC_REQUIRE([gl_INLINE])
+ :
+])
+
+# Prerequisites of lib/xmalloc.c.
+AC_DEFUN([gl_PREREQ_XMALLOC], [
+ :
+])
diff --git a/gnulib-m4/xsize.m4 b/gnulib-m4/xsize.m4
new file mode 100644
index 00000000..631893cf
--- /dev/null
+++ b/gnulib-m4/xsize.m4
@@ -0,0 +1,13 @@
+# xsize.m4 serial 4
+dnl Copyright (C) 2003-2004, 2008 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_XSIZE],
+[
+ dnl Prerequisites of lib/xsize.h.
+ AC_REQUIRE([gl_SIZE_MAX])
+ AC_REQUIRE([AC_C_INLINE])
+ AC_CHECK_HEADERS([stdint.h])
+])
diff --git a/lib/Makefile.am b/lib/Makefile.am
new file mode 100644
index 00000000..24644e33
--- /dev/null
+++ b/lib/Makefile.am
@@ -0,0 +1,297 @@
+## Makefile for the lib subdirectory of GNU libunistring.
+## Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+## Process this file with automake to produce Makefile.in.
+
+AUTOMAKE_OPTIONS = 1.5 gnits subdir-objects no-dependencies
+EXTRA_DIST =
+BUILT_SOURCES =
+MOSTLYCLEANFILES = core *.stackdump
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+SUFFIXES =
+
+lib_LTLIBRARIES = libunistring.la
+
+nobase_include_HEADERS = \
+ unitypes.h \
+ unistr.h \
+ uniconv.h \
+ unistdio.h \
+ uniname.h \
+ unictype.h \
+ uniwidth.h \
+ uniwbrk.h \
+ unilbrk.h \
+ uninorm.h \
+ unicase.h \
+ unistring/inline.h
+
+noinst_HEADERS = \
+ unistring-notinline.h
+
+AM_CPPFLAGS = \
+ -I. -I$(srcdir) \
+ -I$(top_builddir) -I$(top_srcdir) \
+ -DIN_LIBUNISTRING
+
+# Rules generated and collected by gnulib-tool.
+include Makefile.gnulib
+
+# Additional source files.
+libunistring_la_SOURCES += version.c
+
+# The <stdbool.h> and <stdint.h> replacements that can be installed.
+nobase_nodist_include_HEADERS = \
+ unistring/stdbool.h \
+ unistring/stdint.h
+
+# Produce an unistring/stdbool.h that is not compiler dependent.
+# GCC >= 2.95 has <stdbool.h>.
+# AIX >= 5.3 has <stdbool.h>.
+# Solaris 10 and some HP-UX 11 versions have <stdbool.h> but it does not
+# necessarily work.
+unistring/stdbool.h : $(STDBOOL_H)
+ @MKDIR_P@ unistring
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ echo '#if !defined _GL_STDBOOL_H'; \
+ if test -f /usr/include/stdbool.h; then \
+ echo '#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) || defined _AIX'; \
+ else \
+ echo '#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))'; \
+ fi; \
+ echo '#include <stdbool.h>'; \
+ echo '#else'; \
+ cat $(srcdir)/stdbool.mini.h; \
+ echo '#endif'; \
+ echo '#endif'; \
+ } > $@-t
+ mv $@-t $@
+BUILT_SOURCES += unistring/stdbool.h
+MOSTLYCLEANFILES += unistring/stdbool.h-t
+CLEANFILES += unistring/stdbool.h
+
+# Produce an unistring/stdint.h that is not compiler dependent.
+# Glibc >= 2 has <stdint.h>.
+# On most other platforms that have it, it is buggy in one way or the other.
+unistring/stdint.h : $(STDINT_H) stdint.mini.h
+ @MKDIR_P@ unistring
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ echo '#include <stddef.h>'; \
+ echo '#if __GLIBC__ >= 2'; \
+ echo '#include <stdint.h>'; \
+ echo '#else'; \
+ if test -f /usr/include/stdint.h; then \
+ HAVE_STDINT_H='1'; \
+ else \
+ HAVE_STDINT_H='defined __MINGW32__ || defined __HAIKU__'; \
+ fi; \
+ if test -f /usr/include/inttypes.h; then \
+ HAVE_INTTYPES_H='1'; \
+ else \
+ HAVE_INTTYPES_H='defined __MINGW32__ || defined __HAIKU__'; \
+ fi; \
+ if test -f /usr/include/sys/inttypes.h; then \
+ HAVE_SYS_INTTYPES_H='1'; \
+ else \
+ HAVE_SYS_INTTYPES_H='0'; \
+ fi; \
+ sed -e 's/@''HAVE_STDINT_H''@/'"$$HAVE_STDINT_H"'/g' \
+ -e 's|@''INCLUDE_NEXT''@|include|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@||g' \
+ -e 's|@''NEXT_STDINT_H''@|<stdint.h>|g' \
+ -e 's/@''HAVE_SYS_TYPES_H''@/1/g' \
+ -e 's/@''HAVE_INTTYPES_H''@/'"$$HAVE_INTTYPES_H"'/g' \
+ -e 's/@''HAVE_SYS_INTTYPES_H''@/'"$$HAVE_SYS_INTTYPES_H"'/g' \
+ -e 's/@''HAVE_SYS_BITYPES_H''@/0/g' \
+ < $(srcdir)/stdint.mini.h; \
+ echo '#endif'; \
+ } > $@-t
+ mv $@-t $@
+BUILT_SOURCES += unistring/stdint.h
+MOSTLYCLEANFILES += unistring/stdint.h-t
+CLEANFILES += unistring/stdint.h
+EXTRA_DIST += stdint.mini.h
+
+# localcharset.h is not public, but its contents is documented.
+nobase_nodist_include_HEADERS += unistring/localcharset.h
+unistring/localcharset.h : localcharset.h
+ @MKDIR_P@ unistring
+ rm -f $@-t $@
+ cp $(srcdir)/localcharset.h $@-t
+ mv $@-t $@
+BUILT_SOURCES += unistring/localcharset.h
+MOSTLYCLEANFILES += unistring/localcharset.h-t
+CLEANFILES += unistring/localcharset.h
+
+# iconveh.h is not public, but its contents is documented.
+nobase_nodist_include_HEADERS += unistring/iconveh.h
+unistring/iconveh.h : iconveh.h
+ @MKDIR_P@ unistring
+ rm -f $@-t $@
+ cp $(srcdir)/iconveh.h $@-t
+ mv $@-t $@
+BUILT_SOURCES += unistring/iconveh.h
+MOSTLYCLEANFILES += unistring/iconveh.h-t
+CLEANFILES += unistring/iconveh.h
+
+# unistring/version.h is public.
+nobase_nodist_include_HEADERS += unistring/version.h
+
+# unistring/woe32dll.h is not public, but is included by other header files.
+nobase_nodist_include_HEADERS += unistring/woe32dll.h
+
+# Directories that contain some CLEANFILES.
+CLEANDIRS =
+CLEANDIRS_NOT_IN_SRCDIR = unistring
+clean-local: clean-generic
+ @for dir in '' $(CLEANDIRS); do \
+ if test -n "$$dir" && test -d $$dir; then \
+ echo "rmdir $$dir"; rmdir $$dir; \
+ fi; \
+ done; \
+ if test '$(srcdir)' != '.'; then \
+ for dir in '' $(CLEANDIRS_NOT_IN_SRCDIR); do \
+ if test -n "$$dir" && test -d $$dir; then \
+ echo "rmdir $$dir"; rmdir $$dir; \
+ fi; \
+ done; \
+ fi; \
+ :
+
+# List of header files that get installed and that declare 'extern' symbols.
+HEADERS_WITH_EXTERNS = \
+ unitypes.h \
+ unistr.h \
+ uniconv.h \
+ unistdio.h \
+ uniname.h \
+ unictype.h \
+ uniwidth.h \
+ uniwbrk.h \
+ unilbrk.h \
+ uninorm.h \
+ unicase.h \
+ localcharset.h \
+ iconveh.h \
+ unistring/version.in.h
+
+# List of exported symbols.
+# We extract it from the header files that get installed, removing symbols
+# start with "_UC".
+# This file has the same format as the one expected by the libtool option
+# '-export-symbols', but we don't use this option, because it would prevent us
+# from building some of the gnulib unit tests.
+libunistring.sym : $(HEADERS_WITH_EXTERNS)
+ for f in $(HEADERS_WITH_EXTERNS); do cat $(srcdir)/$$f; done \
+ | $(srcdir)/declared.sh | LC_ALL=C sort | LC_ALL=C uniq \
+ | grep -v '^_UC' \
+ > $@-t
+ mv $@-t $@
+# We distribute it because declared.sh relies on GNU sed.
+MOSTLYCLEANFILES += libunistring.sym-t
+MAINTAINERCLEANFILES += libunistring.sym
+EXTRA_DIST += libunistring.sym declared.sh
+
+# Tell the mingw or Cygwin linker which symbols to export.
+if WOE32DLL
+libunistring_la_SOURCES += ../woe32dll/unistring-exports.c
+libunistring_la_LDFLAGS += -Wl,--export-all-symbols
+endif
+
+# Hide undesired symbols that are defined by libunistring_la_SOURCES or
+# libunistring_la_LIBADD from the global namespace, by prefixing them with
+# "libunistring_".
+all check install: config.h
+config.h: $(BUILT_SOURCES) libunistring.sym
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ : "Avoid double inclusion, to avoid a warning about redefinitions."; \
+ echo '#ifndef UNISTRING_CONFIG_H'; \
+ echo '#define UNISTRING_CONFIG_H'; \
+ echo; \
+ echo '#include "../config.h"'; \
+ echo; \
+ echo '#endif /* UNISTRING_CONFIG_H */'; \
+ } > config.h && \
+ if test -n "$(NAMESPACING)" && test -n "$(HAVE_GLOBAL_SYMBOL_PIPE)"; then \
+ { \
+ { \
+ for f in $(libunistring_la_SOURCES) $(libunistring_la_LIBADD); do \
+ case $$f in \
+ *.res.lo ) ;; \
+ *.c | *.$(OBJEXT) | *.lo ) \
+ sf=`echo "$$f" | sed -e 's,\\.[^.]*$$,,'`.c; \
+ test -f $$sf || sf=$(srcdir)/$$sf; \
+ of=`echo "$$f" | sed -e 's,^.*/,,' -e 's,\\.[^.]*$$,,'`.$(OBJEXT); \
+ echo "$(COMPILE) -c $$sf" 1>&6; \
+ $(COMPILE) -c $$sf || { rm -f config.h; exit 1; }; \
+ sh ./exported.sh $$of 1>&5; \
+ rm -f $$of `echo "$$of" | sed -e 's,\\.$(OBJEXT)$$,.lo,'`; \
+ ;; \
+ esac; \
+ done; \
+ } 5>&1 \
+ | sed -e 's,.* ,,' | LC_ALL=C sort | LC_ALL=C uniq \
+ | { \
+ if test -f libunistring.sym; then \
+ symfile='libunistring.sym'; \
+ else \
+ symfile='$(srcdir)/libunistring.sym'; \
+ fi; \
+ LC_ALL=C join -v 1 - $$symfile; \
+ } \
+ | sed -e 's,^\(.*\)$$,#define \1 libunistring_\1,' > config.h-t; \
+ } 6>&1 && \
+ if test -f config.h; then \
+ cat config.h-t >> config.h; \
+ rm -f config.h-t; \
+ else \
+ rm -f config.h-t; \
+ exit 1; \
+ fi \
+ fi
+MOSTLYCLEANFILES += config.h config.h-t
+
+# Version information according to Woe32 conventions.
+EXTRA_DIST += libunistring.rc
+if WOE32
+WOE32_LIBADD = libunistring.res.lo
+libunistring.res.lo : $(srcdir)/libunistring.rc
+ $(LIBTOOL) --tag=RC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(RC) `$(SHELL) $(top_srcdir)/build-aux/windres-options --escape $(VERSION)` -i $(srcdir)/libunistring.rc -o libunistring.res.lo --output-format=coff
+MOSTLYCLEANFILES += libunistring.res.lo
+else
+WOE32_LIBADD =
+endif
+libunistring_la_LIBADD += $(WOE32_LIBADD)
+libunistring_la_DEPENDENCIES += $(WOE32_LIBADD)
+
+# Parametrization of the 'relocatable-lib-lgpl' module.
+AM_CPPFLAGS += -DDEPENDS_ON_LIBICONV=1
+
+# Libtool's library version information for libunistring.
+# See the libtool documentation, section "Library interface versions".
+LTV_CURRENT=1
+LTV_REVISION=0
+LTV_AGE=1
+
+# How to build libunistring.la.
+libunistring_la_LDFLAGS += \
+ -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \
+ -rpath $(libdir) \
+ @INTL_MACOSX_LIBS@ -no-undefined
diff --git a/lib/Makefile.gnulib b/lib/Makefile.gnulib
new file mode 100644
index 00000000..b7a5d319
--- /dev/null
+++ b/lib/Makefile.gnulib
@@ -0,0 +1,4655 @@
+## DO NOT EDIT! GENERATED AUTOMATICALLY!
+## Process this file with automake to produce Makefile.in.
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License. As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+
+
+MOSTLYCLEANFILES += core *.stackdump
+
+
+libunistring_la_SOURCES =
+libunistring_la_LIBADD = $(gl_LTLIBOBJS)
+libunistring_la_DEPENDENCIES = $(gl_LTLIBOBJS)
+EXTRA_libunistring_la_SOURCES =
+libunistring_la_LDFLAGS = $(AM_LDFLAGS)
+
+## begin gnulib module alloca-opt
+
+BUILT_SOURCES += $(ALLOCA_H)
+
+# We need the following in order to create <alloca.h> when the system
+# doesn't have one that works with the given compiler.
+alloca.h: alloca.in.h
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ cat $(srcdir)/alloca.in.h; \
+ } > $@-t
+ mv -f $@-t $@
+MOSTLYCLEANFILES += alloca.h alloca.h-t
+
+EXTRA_DIST += alloca.in.h
+
+## end gnulib module alloca-opt
+
+## begin gnulib module array-mergesort
+
+
+EXTRA_DIST += array-mergesort.h
+
+## end gnulib module array-mergesort
+
+## begin gnulib module c-ctype
+
+libunistring_la_SOURCES += c-ctype.h c-ctype.c
+
+## end gnulib module c-ctype
+
+## begin gnulib module c-strcase
+
+libunistring_la_SOURCES += c-strcase.h c-strcasecmp.c c-strncasecmp.c
+
+## end gnulib module c-strcase
+
+## begin gnulib module c-strcaseeq
+
+
+EXTRA_DIST += c-strcaseeq.h
+
+## end gnulib module c-strcaseeq
+
+## begin gnulib module configmake
+
+# Retrieve values of the variables through 'configure' followed by
+# 'make', not directly through 'configure', so that a user who
+# sets some of these variables consistently on the 'make' command
+# line gets correct results.
+#
+# One advantage of this approach, compared to the classical
+# approach of adding -DLIBDIR=\"$(libdir)\" etc. to AM_CPPFLAGS,
+# is that it protects against the use of undefined variables.
+# If, say, $(libdir) is not set in the Makefile, LIBDIR is not
+# defined by this module, and code using LIBDIR gives a
+# compilation error.
+#
+# Another advantage is that 'make' output is shorter.
+#
+# Listed in the same order as the GNU makefile conventions.
+# The Automake-defined pkg* macros are appended, in the order
+# listed in the Automake 1.10a+ documentation.
+configmake.h: Makefile
+ rm -f $@-t
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ echo '#define PREFIX "$(prefix)"'; \
+ echo '#define EXEC_PREFIX "$(exec_prefix)"'; \
+ echo '#define BINDIR "$(bindir)"'; \
+ echo '#define SBINDIR "$(sbindir)"'; \
+ echo '#define LIBEXECDIR "$(libexecdir)"'; \
+ echo '#define DATAROOTDIR "$(datarootdir)"'; \
+ echo '#define DATADIR "$(datadir)"'; \
+ echo '#define SYSCONFDIR "$(sysconfdir)"'; \
+ echo '#define SHAREDSTATEDIR "$(sharedstatedir)"'; \
+ echo '#define LOCALSTATEDIR "$(localstatedir)"'; \
+ echo '#define INCLUDEDIR "$(includedir)"'; \
+ echo '#define OLDINCLUDEDIR "$(oldincludedir)"'; \
+ echo '#define DOCDIR "$(docdir)"'; \
+ echo '#define INFODIR "$(infodir)"'; \
+ echo '#define HTMLDIR "$(htmldir)"'; \
+ echo '#define DVIDIR "$(dvidir)"'; \
+ echo '#define PDFDIR "$(pdfdir)"'; \
+ echo '#define PSDIR "$(psdir)"'; \
+ echo '#define LIBDIR "$(libdir)"'; \
+ echo '#define LISPDIR "$(lispdir)"'; \
+ echo '#define LOCALEDIR "$(localedir)"'; \
+ echo '#define MANDIR "$(mandir)"'; \
+ echo '#define MANEXT "$(manext)"'; \
+ echo '#define PKGDATADIR "$(pkgdatadir)"'; \
+ echo '#define PKGINCLUDEDIR "$(pkgincludedir)"'; \
+ echo '#define PKGLIBDIR "$(pkglibdir)"'; \
+ echo '#define PKGLIBEXECDIR "$(pkglibexecdir)"'; \
+ } | sed '/""/d' > $@-t
+ if test -f $@ && cmp $@-t $@ > /dev/null; then \
+ rm -f $@-t; \
+ else \
+ rm -f $@; mv $@-t $@; \
+ fi
+
+BUILT_SOURCES += configmake.h
+CLEANFILES += configmake.h configmake.h-t
+
+## end gnulib module configmake
+
+## begin gnulib module errno
+
+BUILT_SOURCES += $(ERRNO_H)
+
+# We need the following in order to create <errno.h> when the system
+# doesn't have one that is POSIX compliant.
+errno.h: errno.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \
+ -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \
+ -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \
+ -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \
+ -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \
+ -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \
+ -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \
+ < $(srcdir)/errno.in.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += errno.h errno.h-t
+
+EXTRA_DIST += errno.in.h
+
+## end gnulib module errno
+
+## begin gnulib module float
+
+BUILT_SOURCES += $(FLOAT_H)
+
+# We need the following in order to create <float.h> when the system
+# doesn't have one that works with the given compiler.
+float.h: float.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_FLOAT_H''@|$(NEXT_FLOAT_H)|g' \
+ < $(srcdir)/float.in.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += float.h float.h-t
+
+EXTRA_DIST += float.in.h
+
+## end gnulib module float
+
+## begin gnulib module fpucw
+
+
+EXTRA_DIST += fpucw.h
+
+## end gnulib module fpucw
+
+## begin gnulib module frexpl-nolibm
+
+
+EXTRA_DIST += frexp.c frexpl.c
+
+EXTRA_libunistring_la_SOURCES += frexp.c frexpl.c
+
+## end gnulib module frexpl-nolibm
+
+## begin gnulib module fseterr
+
+libunistring_la_SOURCES += fseterr.c
+
+EXTRA_DIST += fseterr.h stdio-impl.h
+
+## end gnulib module fseterr
+
+## begin gnulib module getpagesize
+
+
+EXTRA_DIST += getpagesize.c
+
+EXTRA_libunistring_la_SOURCES += getpagesize.c
+
+## end gnulib module getpagesize
+
+## begin gnulib module gperf
+
+GPERF = gperf
+
+## end gnulib module gperf
+
+## begin gnulib module havelib
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/config.rpath
+
+## end gnulib module havelib
+
+## begin gnulib module iconv_open
+
+BUILT_SOURCES += $(ICONV_H)
+
+# We need the following in order to create <iconv.h> when the system
+# doesn't have one that works with the given compiler.
+iconv.h: iconv.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_ICONV_H''@|$(NEXT_ICONV_H)|g' \
+ -e 's|@''ICONV_CONST''@|$(ICONV_CONST)|g' \
+ -e 's|@''REPLACE_ICONV''@|$(REPLACE_ICONV)|g' \
+ -e 's|@''REPLACE_ICONV_OPEN''@|$(REPLACE_ICONV_OPEN)|g' \
+ -e 's|@''REPLACE_ICONV_UTF''@|$(REPLACE_ICONV_UTF)|g' \
+ < $(srcdir)/iconv.in.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += iconv.h iconv.h-t
+
+iconv_open-aix.h: iconv_open-aix.gperf
+ $(GPERF) -m 10 $(srcdir)/iconv_open-aix.gperf > $(srcdir)/iconv_open-aix.h-t
+ mv $(srcdir)/iconv_open-aix.h-t $(srcdir)/iconv_open-aix.h
+iconv_open-hpux.h: iconv_open-hpux.gperf
+ $(GPERF) -m 10 $(srcdir)/iconv_open-hpux.gperf > $(srcdir)/iconv_open-hpux.h-t
+ mv $(srcdir)/iconv_open-hpux.h-t $(srcdir)/iconv_open-hpux.h
+iconv_open-irix.h: iconv_open-irix.gperf
+ $(GPERF) -m 10 $(srcdir)/iconv_open-irix.gperf > $(srcdir)/iconv_open-irix.h-t
+ mv $(srcdir)/iconv_open-irix.h-t $(srcdir)/iconv_open-irix.h
+iconv_open-osf.h: iconv_open-osf.gperf
+ $(GPERF) -m 10 $(srcdir)/iconv_open-osf.gperf > $(srcdir)/iconv_open-osf.h-t
+ mv $(srcdir)/iconv_open-osf.h-t $(srcdir)/iconv_open-osf.h
+BUILT_SOURCES += iconv_open-aix.h iconv_open-hpux.h iconv_open-irix.h iconv_open-osf.h
+MOSTLYCLEANFILES += iconv_open-aix.h-t iconv_open-hpux.h-t iconv_open-irix.h-t iconv_open-osf.h-t
+MAINTAINERCLEANFILES += iconv_open-aix.h iconv_open-hpux.h iconv_open-irix.h iconv_open-osf.h
+EXTRA_DIST += iconv_open-aix.h iconv_open-hpux.h iconv_open-irix.h iconv_open-osf.h
+
+EXTRA_DIST += iconv.in.h iconv_open-aix.gperf iconv_open-hpux.gperf iconv_open-irix.gperf iconv_open-osf.gperf iconv_open.c
+
+EXTRA_libunistring_la_SOURCES += iconv_open.c
+
+## end gnulib module iconv_open
+
+## begin gnulib module isnand-nolibm
+
+
+EXTRA_DIST += float+.h isnan.c isnand-nolibm.h isnand.c
+
+EXTRA_libunistring_la_SOURCES += isnan.c isnand.c
+
+## end gnulib module isnand-nolibm
+
+## begin gnulib module isnanf-nolibm
+
+
+EXTRA_DIST += float+.h isnan.c isnanf-nolibm.h isnanf.c
+
+EXTRA_libunistring_la_SOURCES += isnan.c isnanf.c
+
+## end gnulib module isnanf-nolibm
+
+## begin gnulib module isnanl-nolibm
+
+
+EXTRA_DIST += float+.h isnan.c isnanl-nolibm.h isnanl.c
+
+EXTRA_libunistring_la_SOURCES += isnan.c isnanl.c
+
+## end gnulib module isnanl-nolibm
+
+## begin gnulib module link-warning
+
+LINK_WARNING_H=$(top_srcdir)/build-aux/link-warning.h
+
+EXTRA_DIST += $(top_srcdir)/build-aux/link-warning.h
+
+## end gnulib module link-warning
+
+## begin gnulib module localcharset
+
+libunistring_la_SOURCES += localcharset.h localcharset.c
+
+# We need the following in order to install a simple file in $(libdir)
+# which is shared with other installed packages. We use a list of referencing
+# packages so that "make uninstall" will remove the file if and only if it
+# is not used by another installed package.
+# On systems with glibc-2.1 or newer, the file is redundant, therefore we
+# avoid installing it.
+
+all-local: charset.alias ref-add.sed ref-del.sed
+
+charset_alias = $(DESTDIR)$(libdir)/charset.alias
+charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
+install-exec-local: install-exec-localcharset
+install-exec-localcharset: all-local
+ if test $(GLIBC21) = no; then \
+ case '$(host_os)' in \
+ darwin[56]*) \
+ need_charset_alias=true ;; \
+ darwin* | cygwin* | mingw* | pw32* | cegcc*) \
+ need_charset_alias=false ;; \
+ *) \
+ need_charset_alias=true ;; \
+ esac ; \
+ else \
+ need_charset_alias=false ; \
+ fi ; \
+ if $$need_charset_alias; then \
+ $(mkinstalldirs) $(DESTDIR)$(libdir) ; \
+ fi ; \
+ if test -f $(charset_alias); then \
+ sed -f ref-add.sed $(charset_alias) > $(charset_tmp) ; \
+ $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
+ rm -f $(charset_tmp) ; \
+ else \
+ if $$need_charset_alias; then \
+ sed -f ref-add.sed charset.alias > $(charset_tmp) ; \
+ $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
+ rm -f $(charset_tmp) ; \
+ fi ; \
+ fi
+
+uninstall-local: uninstall-localcharset
+uninstall-localcharset: all-local
+ if test -f $(charset_alias); then \
+ sed -f ref-del.sed $(charset_alias) > $(charset_tmp); \
+ if grep '^# Packages using this file: $$' $(charset_tmp) \
+ > /dev/null; then \
+ rm -f $(charset_alias); \
+ else \
+ $(INSTALL_DATA) $(charset_tmp) $(charset_alias); \
+ fi; \
+ rm -f $(charset_tmp); \
+ fi
+
+charset.alias: config.charset
+ rm -f t-$@ $@
+ $(SHELL) $(srcdir)/config.charset '$(host)' > t-$@
+ mv t-$@ $@
+
+SUFFIXES += .sed .sin
+.sin.sed:
+ rm -f t-$@ $@
+ sed -e '/^#/d' -e 's/@''PACKAGE''@/$(PACKAGE)/g' $< > t-$@
+ mv t-$@ $@
+
+CLEANFILES += charset.alias ref-add.sed ref-del.sed
+
+EXTRA_DIST += config.charset ref-add.sin ref-del.sin
+
+## end gnulib module localcharset
+
+## begin gnulib module localename
+
+libunistring_la_SOURCES += localename.c
+
+EXTRA_DIST += localename.h
+
+## end gnulib module localename
+
+## begin gnulib module malloc-posix
+
+
+EXTRA_DIST += malloc.c
+
+EXTRA_libunistring_la_SOURCES += malloc.c
+
+## end gnulib module malloc-posix
+
+## begin gnulib module malloca
+
+libunistring_la_SOURCES += malloca.c
+
+EXTRA_DIST += malloca.h malloca.valgrind
+
+## end gnulib module malloca
+
+## begin gnulib module math
+
+BUILT_SOURCES += math.h
+
+# We need the following in order to create <math.h> when the system
+# doesn't have one that works with the given compiler.
+math.h: math.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''INCLUDE_NEXT_AS_FIRST_DIRECTIVE''@|$(INCLUDE_NEXT_AS_FIRST_DIRECTIVE)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_AS_FIRST_DIRECTIVE_MATH_H''@|$(NEXT_AS_FIRST_DIRECTIVE_MATH_H)|g' \
+ -e 's|@''GNULIB_CEILF''@|$(GNULIB_CEILF)|g' \
+ -e 's|@''GNULIB_CEILL''@|$(GNULIB_CEILL)|g' \
+ -e 's|@''GNULIB_FLOORF''@|$(GNULIB_FLOORF)|g' \
+ -e 's|@''GNULIB_FLOORL''@|$(GNULIB_FLOORL)|g' \
+ -e 's|@''GNULIB_FREXP''@|$(GNULIB_FREXP)|g' \
+ -e 's|@''GNULIB_FREXPL''@|$(GNULIB_FREXPL)|g' \
+ -e 's|@''GNULIB_ISFINITE''@|$(GNULIB_ISFINITE)|g' \
+ -e 's|@''GNULIB_ISINF''@|$(GNULIB_ISINF)|g' \
+ -e 's|@''GNULIB_ISNAN''@|$(GNULIB_ISNAN)|g' \
+ -e 's|@''GNULIB_ISNANF''@|$(GNULIB_ISNANF)|g' \
+ -e 's|@''GNULIB_ISNAND''@|$(GNULIB_ISNAND)|g' \
+ -e 's|@''GNULIB_ISNANL''@|$(GNULIB_ISNANL)|g' \
+ -e 's|@''GNULIB_LDEXPL''@|$(GNULIB_LDEXPL)|g' \
+ -e 's|@''GNULIB_MATHL''@|$(GNULIB_MATHL)|g' \
+ -e 's|@''GNULIB_ROUND''@|$(GNULIB_ROUND)|g' \
+ -e 's|@''GNULIB_ROUNDF''@|$(GNULIB_ROUNDF)|g' \
+ -e 's|@''GNULIB_ROUNDL''@|$(GNULIB_ROUNDL)|g' \
+ -e 's|@''GNULIB_SIGNBIT''@|$(GNULIB_SIGNBIT)|g' \
+ -e 's|@''GNULIB_TRUNC''@|$(GNULIB_TRUNC)|g' \
+ -e 's|@''GNULIB_TRUNCF''@|$(GNULIB_TRUNCF)|g' \
+ -e 's|@''GNULIB_TRUNCL''@|$(GNULIB_TRUNCL)|g' \
+ -e 's|@''HAVE_ISNANF''@|$(HAVE_ISNANF)|g' \
+ -e 's|@''HAVE_ISNAND''@|$(HAVE_ISNAND)|g' \
+ -e 's|@''HAVE_ISNANL''@|$(HAVE_ISNANL)|g' \
+ -e 's|@''HAVE_DECL_ACOSL''@|$(HAVE_DECL_ACOSL)|g' \
+ -e 's|@''HAVE_DECL_ASINL''@|$(HAVE_DECL_ASINL)|g' \
+ -e 's|@''HAVE_DECL_ATANL''@|$(HAVE_DECL_ATANL)|g' \
+ -e 's|@''HAVE_DECL_COSL''@|$(HAVE_DECL_COSL)|g' \
+ -e 's|@''HAVE_DECL_EXPL''@|$(HAVE_DECL_EXPL)|g' \
+ -e 's|@''HAVE_DECL_FREXPL''@|$(HAVE_DECL_FREXPL)|g' \
+ -e 's|@''HAVE_DECL_LDEXPL''@|$(HAVE_DECL_LDEXPL)|g' \
+ -e 's|@''HAVE_DECL_LOGL''@|$(HAVE_DECL_LOGL)|g' \
+ -e 's|@''HAVE_DECL_SINL''@|$(HAVE_DECL_SINL)|g' \
+ -e 's|@''HAVE_DECL_SQRTL''@|$(HAVE_DECL_SQRTL)|g' \
+ -e 's|@''HAVE_DECL_TANL''@|$(HAVE_DECL_TANL)|g' \
+ -e 's|@''HAVE_DECL_TRUNC''@|$(HAVE_DECL_TRUNC)|g' \
+ -e 's|@''HAVE_DECL_TRUNCF''@|$(HAVE_DECL_TRUNCF)|g' \
+ -e 's|@''REPLACE_CEILF''@|$(REPLACE_CEILF)|g' \
+ -e 's|@''REPLACE_CEILL''@|$(REPLACE_CEILL)|g' \
+ -e 's|@''REPLACE_FLOORF''@|$(REPLACE_FLOORF)|g' \
+ -e 's|@''REPLACE_FLOORL''@|$(REPLACE_FLOORL)|g' \
+ -e 's|@''REPLACE_FREXP''@|$(REPLACE_FREXP)|g' \
+ -e 's|@''REPLACE_FREXPL''@|$(REPLACE_FREXPL)|g' \
+ -e 's|@''REPLACE_HUGE_VAL''@|$(REPLACE_HUGE_VAL)|g' \
+ -e 's|@''REPLACE_ISFINITE''@|$(REPLACE_ISFINITE)|g' \
+ -e 's|@''REPLACE_ISINF''@|$(REPLACE_ISINF)|g' \
+ -e 's|@''REPLACE_ISNAN''@|$(REPLACE_ISNAN)|g' \
+ -e 's|@''REPLACE_LDEXPL''@|$(REPLACE_LDEXPL)|g' \
+ -e 's|@''REPLACE_NAN''@|$(REPLACE_NAN)|g' \
+ -e 's|@''REPLACE_ROUND''@|$(REPLACE_ROUND)|g' \
+ -e 's|@''REPLACE_ROUNDF''@|$(REPLACE_ROUNDF)|g' \
+ -e 's|@''REPLACE_ROUNDL''@|$(REPLACE_ROUNDL)|g' \
+ -e 's|@''REPLACE_SIGNBIT''@|$(REPLACE_SIGNBIT)|g' \
+ -e 's|@''REPLACE_SIGNBIT_USING_GCC''@|$(REPLACE_SIGNBIT_USING_GCC)|g' \
+ -e 's|@''REPLACE_TRUNCL''@|$(REPLACE_TRUNCL)|g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/math.in.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += math.h math.h-t
+
+EXTRA_DIST += math.in.h
+
+## end gnulib module math
+
+## begin gnulib module mbchar
+
+libunistring_la_SOURCES += mbchar.c
+
+EXTRA_DIST += mbchar.h
+
+## end gnulib module mbchar
+
+## begin gnulib module mbiter
+
+libunistring_la_SOURCES += mbiter.h
+
+## end gnulib module mbiter
+
+## begin gnulib module mbrtowc
+
+
+EXTRA_DIST += mbrtowc.c
+
+EXTRA_libunistring_la_SOURCES += mbrtowc.c
+
+## end gnulib module mbrtowc
+
+## begin gnulib module mbsinit
+
+
+EXTRA_DIST += mbsinit.c
+
+EXTRA_libunistring_la_SOURCES += mbsinit.c
+
+## end gnulib module mbsinit
+
+## begin gnulib module mbsnlen
+
+libunistring_la_SOURCES += mbsnlen.c
+
+## end gnulib module mbsnlen
+
+## begin gnulib module memchr
+
+
+EXTRA_DIST += memchr.c memchr.valgrind
+
+EXTRA_libunistring_la_SOURCES += memchr.c
+
+## end gnulib module memchr
+
+## begin gnulib module memcmp2
+
+libunistring_la_SOURCES += memcmp2.c
+
+EXTRA_DIST += memcmp2.h
+
+## end gnulib module memcmp2
+
+## begin gnulib module memxfrm
+
+libunistring_la_SOURCES += memxfrm.c
+
+EXTRA_DIST += memxfrm.h
+
+## end gnulib module memxfrm
+
+## begin gnulib module minmax
+
+libunistring_la_SOURCES += minmax.h
+
+## end gnulib module minmax
+
+## begin gnulib module printf-frexp
+
+libunistring_la_SOURCES += printf-frexp.c
+
+EXTRA_DIST += printf-frexp.h
+
+## end gnulib module printf-frexp
+
+## begin gnulib module printf-frexpl
+
+libunistring_la_SOURCES += printf-frexpl.c
+
+EXTRA_DIST += printf-frexp.c printf-frexpl.h
+
+EXTRA_libunistring_la_SOURCES += printf-frexp.c
+
+## end gnulib module printf-frexpl
+
+## begin gnulib module relocatable-lib-lgpl
+
+DEFS += -DNO_XMALLOC
+
+EXTRA_DIST += relocatable.c relocatable.h
+
+EXTRA_libunistring_la_SOURCES += relocatable.c
+
+## end gnulib module relocatable-lib-lgpl
+
+## begin gnulib module signbit
+
+
+EXTRA_DIST += float+.h signbitd.c signbitf.c signbitl.c
+
+EXTRA_libunistring_la_SOURCES += signbitd.c signbitf.c signbitl.c
+
+## end gnulib module signbit
+
+## begin gnulib module size_max
+
+libunistring_la_SOURCES += size_max.h
+
+## end gnulib module size_max
+
+## begin gnulib module stdbool
+
+BUILT_SOURCES += $(STDBOOL_H)
+
+# We need the following in order to create <stdbool.h> when the system
+# doesn't have one that works.
+stdbool.h: stdbool.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += stdbool.h stdbool.h-t
+
+EXTRA_DIST += stdbool.in.h
+
+## end gnulib module stdbool
+
+## begin gnulib module stdint
+
+BUILT_SOURCES += $(STDINT_H)
+
+# We need the following in order to create <stdint.h> when the system
+# doesn't have one that works with the given compiler.
+stdint.h: stdint.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
+ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
+ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
+ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
+ -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
+ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
+ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
+ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
+ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
+ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
+ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
+ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
+ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
+ < $(srcdir)/stdint.in.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += stdint.h stdint.h-t
+
+EXTRA_DIST += stdint.in.h
+
+## end gnulib module stdint
+
+## begin gnulib module stdlib
+
+BUILT_SOURCES += stdlib.h
+
+# We need the following in order to create <stdlib.h> when the system
+# doesn't have one that works with the given compiler.
+stdlib.h: stdlib.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \
+ -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \
+ -e 's|@''GNULIB_MALLOC_POSIX''@|$(GNULIB_MALLOC_POSIX)|g' \
+ -e 's|@''GNULIB_REALLOC_POSIX''@|$(GNULIB_REALLOC_POSIX)|g' \
+ -e 's|@''GNULIB_CALLOC_POSIX''@|$(GNULIB_CALLOC_POSIX)|g' \
+ -e 's|@''GNULIB_ATOLL''@|$(GNULIB_ATOLL)|g' \
+ -e 's|@''GNULIB_GETLOADAVG''@|$(GNULIB_GETLOADAVG)|g' \
+ -e 's|@''GNULIB_GETSUBOPT''@|$(GNULIB_GETSUBOPT)|g' \
+ -e 's|@''GNULIB_MKDTEMP''@|$(GNULIB_MKDTEMP)|g' \
+ -e 's|@''GNULIB_MKSTEMP''@|$(GNULIB_MKSTEMP)|g' \
+ -e 's|@''GNULIB_PUTENV''@|$(GNULIB_PUTENV)|g' \
+ -e 's|@''GNULIB_RANDOM_R''@|$(GNULIB_RANDOM_R)|g' \
+ -e 's|@''GNULIB_RPMATCH''@|$(GNULIB_RPMATCH)|g' \
+ -e 's|@''GNULIB_SETENV''@|$(GNULIB_SETENV)|g' \
+ -e 's|@''GNULIB_STRTOD''@|$(GNULIB_STRTOD)|g' \
+ -e 's|@''GNULIB_STRTOLL''@|$(GNULIB_STRTOLL)|g' \
+ -e 's|@''GNULIB_STRTOULL''@|$(GNULIB_STRTOULL)|g' \
+ -e 's|@''GNULIB_UNSETENV''@|$(GNULIB_UNSETENV)|g' \
+ -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \
+ -e 's|@''HAVE_CALLOC_POSIX''@|$(HAVE_CALLOC_POSIX)|g' \
+ -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
+ -e 's|@''HAVE_MALLOC_POSIX''@|$(HAVE_MALLOC_POSIX)|g' \
+ -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \
+ -e 's|@''HAVE_REALLOC_POSIX''@|$(HAVE_REALLOC_POSIX)|g' \
+ -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \
+ -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \
+ -e 's|@''HAVE_SETENV''@|$(HAVE_SETENV)|g' \
+ -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \
+ -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \
+ -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \
+ -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \
+ -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \
+ -e 's|@''HAVE_UNSETENV''@|$(HAVE_UNSETENV)|g' \
+ -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \
+ -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
+ -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
+ -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
+ -e 's|@''VOID_UNSETENV''@|$(VOID_UNSETENV)|g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/stdlib.in.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += stdlib.h stdlib.h-t
+
+EXTRA_DIST += stdlib.in.h
+
+## end gnulib module stdlib
+
+## begin gnulib module streq
+
+
+EXTRA_DIST += streq.h
+
+## end gnulib module streq
+
+## begin gnulib module striconveh
+
+libunistring_la_SOURCES += striconveh.h striconveh.c
+if GL_COND_LIBTOOL
+libunistring_la_LDFLAGS += $(LTLIBICONV)
+endif
+
+EXTRA_DIST += iconveh.h
+
+## end gnulib module striconveh
+
+## begin gnulib module striconveha
+
+libunistring_la_SOURCES += striconveha.h striconveha.c
+
+## end gnulib module striconveha
+
+## begin gnulib module string
+
+BUILT_SOURCES += string.h
+
+# We need the following in order to create <string.h> when the system
+# doesn't have one that works with the given compiler.
+string.h: string.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
+ -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \
+ -e 's|@''GNULIB_MBSNLEN''@|$(GNULIB_MBSNLEN)|g' \
+ -e 's|@''GNULIB_MBSCHR''@|$(GNULIB_MBSCHR)|g' \
+ -e 's|@''GNULIB_MBSRCHR''@|$(GNULIB_MBSRCHR)|g' \
+ -e 's|@''GNULIB_MBSSTR''@|$(GNULIB_MBSSTR)|g' \
+ -e 's|@''GNULIB_MBSCASECMP''@|$(GNULIB_MBSCASECMP)|g' \
+ -e 's|@''GNULIB_MBSNCASECMP''@|$(GNULIB_MBSNCASECMP)|g' \
+ -e 's|@''GNULIB_MBSPCASECMP''@|$(GNULIB_MBSPCASECMP)|g' \
+ -e 's|@''GNULIB_MBSCASESTR''@|$(GNULIB_MBSCASESTR)|g' \
+ -e 's|@''GNULIB_MBSCSPN''@|$(GNULIB_MBSCSPN)|g' \
+ -e 's|@''GNULIB_MBSPBRK''@|$(GNULIB_MBSPBRK)|g' \
+ -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \
+ -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \
+ -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \
+ -e 's|@''GNULIB_MEMCHR''@|$(GNULIB_MEMCHR)|g' \
+ -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \
+ -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \
+ -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \
+ -e 's|@''GNULIB_RAWMEMCHR''@|$(GNULIB_RAWMEMCHR)|g' \
+ -e 's|@''GNULIB_STPCPY''@|$(GNULIB_STPCPY)|g' \
+ -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \
+ -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \
+ -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \
+ -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \
+ -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \
+ -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \
+ -e 's|@''GNULIB_STRSEP''@|$(GNULIB_STRSEP)|g' \
+ -e 's|@''GNULIB_STRSTR''@|$(GNULIB_STRSTR)|g' \
+ -e 's|@''GNULIB_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \
+ -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|g' \
+ -e 's|@''GNULIB_STRERROR''@|$(GNULIB_STRERROR)|g' \
+ -e 's|@''GNULIB_STRSIGNAL''@|$(GNULIB_STRSIGNAL)|g' \
+ -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \
+ -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
+ -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
+ -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+ -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \
+ -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
+ -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+ -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+ -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+ -e 's|@''HAVE_STRNDUP''@|$(HAVE_STRNDUP)|g' \
+ -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
+ -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
+ -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
+ -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
+ -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
+ -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+ -e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \
+ -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
+ -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+ -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
+ -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
+ -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
+ -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
+ -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
+ -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+ -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/string.in.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += string.h string.h-t
+
+EXTRA_DIST += string.in.h
+
+## end gnulib module string
+
+## begin gnulib module unicase/base
+
+
+EXTRA_DIST += unicase.h
+
+## end gnulib module unicase/base
+
+## begin gnulib module unicase/cased
+
+libunistring_la_SOURCES += unicase/cased.c
+
+EXTRA_DIST += unicase/cased.h unicase/caseprop.h unictype/bitmap.h
+
+## end gnulib module unicase/cased
+
+## begin gnulib module unicase/empty-prefix-context
+
+libunistring_la_SOURCES += unicase/empty-prefix-context.c
+
+## end gnulib module unicase/empty-prefix-context
+
+## begin gnulib module unicase/empty-suffix-context
+
+libunistring_la_SOURCES += unicase/empty-suffix-context.c
+
+## end gnulib module unicase/empty-suffix-context
+
+## begin gnulib module unicase/ignorable
+
+libunistring_la_SOURCES += unicase/ignorable.c
+
+EXTRA_DIST += unicase/caseprop.h unicase/ignorable.h unictype/bitmap.h
+
+## end gnulib module unicase/ignorable
+
+## begin gnulib module unicase/locale-language
+
+libunistring_la_SOURCES += unicase/locale-language.c
+
+unicase/locale-languages.h: $(srcdir)/unicase/locale-languages.gperf
+ $(GPERF) -m 10 $(srcdir)/unicase/locale-languages.gperf > $(srcdir)/unicase/locale-languages.h-t
+ mv $(srcdir)/unicase/locale-languages.h-t $(srcdir)/unicase/locale-languages.h
+BUILT_SOURCES += unicase/locale-languages.h
+MOSTLYCLEANFILES += unicase/locale-languages.h-t
+MAINTAINERCLEANFILES += unicase/locale-languages.h
+EXTRA_DIST += unicase/locale-languages.h
+
+EXTRA_DIST += unicase/locale-languages.gperf
+
+## end gnulib module unicase/locale-language
+
+## begin gnulib module unicase/special-casing
+
+libunistring_la_SOURCES += unicase/special-casing.c
+
+unicase/special-casing-table.h: $(srcdir)/unicase/special-casing-table.gperf
+ $(GPERF) -m 10 $(srcdir)/unicase/special-casing-table.gperf > $(srcdir)/unicase/special-casing-table.h-t
+ mv $(srcdir)/unicase/special-casing-table.h-t $(srcdir)/unicase/special-casing-table.h
+BUILT_SOURCES += unicase/special-casing-table.h
+MOSTLYCLEANFILES += unicase/special-casing-table.h-t
+MAINTAINERCLEANFILES += unicase/special-casing-table.h
+EXTRA_DIST += unicase/special-casing-table.h
+
+EXTRA_DIST += unicase/special-casing-table.gperf unicase/special-casing.h
+
+## end gnulib module unicase/special-casing
+
+## begin gnulib module unicase/tocasefold
+
+libunistring_la_SOURCES += unicase/tocasefold.c
+
+EXTRA_DIST += unicase/casefold.h unicase/simple-mapping.h unicase/tocasefold.h
+
+## end gnulib module unicase/tocasefold
+
+## begin gnulib module unicase/tolower
+
+libunistring_la_SOURCES += unicase/tolower.c
+
+EXTRA_DIST += unicase/simple-mapping.h unicase/tolower.h
+
+## end gnulib module unicase/tolower
+
+## begin gnulib module unicase/totitle
+
+libunistring_la_SOURCES += unicase/totitle.c
+
+EXTRA_DIST += unicase/simple-mapping.h unicase/totitle.h
+
+## end gnulib module unicase/totitle
+
+## begin gnulib module unicase/toupper
+
+libunistring_la_SOURCES += unicase/toupper.c
+
+EXTRA_DIST += unicase/simple-mapping.h unicase/toupper.h
+
+## end gnulib module unicase/toupper
+
+## begin gnulib module unicase/u16-casecmp
+
+libunistring_la_SOURCES += unicase/u16-casecmp.c
+
+EXTRA_DIST += unicase/u-casecmp.h
+
+## end gnulib module unicase/u16-casecmp
+
+## begin gnulib module unicase/u16-casecoll
+
+libunistring_la_SOURCES += unicase/u16-casecoll.c
+
+EXTRA_DIST += unicase/u-casecoll.h
+
+## end gnulib module unicase/u16-casecoll
+
+## begin gnulib module unicase/u16-casefold
+
+libunistring_la_SOURCES += unicase/u16-casefold.c
+
+EXTRA_DIST += unicase/u-casefold.h
+
+## end gnulib module unicase/u16-casefold
+
+## begin gnulib module unicase/u16-casemap
+
+libunistring_la_SOURCES += unicase/u16-casemap.c
+
+EXTRA_DIST += unicase/context.h unicase/u-casemap.h unicase/unicasemap.h
+
+## end gnulib module unicase/u16-casemap
+
+## begin gnulib module unicase/u16-casexfrm
+
+libunistring_la_SOURCES += unicase/u16-casexfrm.c
+
+EXTRA_DIST += unicase/u-casexfrm.h
+
+## end gnulib module unicase/u16-casexfrm
+
+## begin gnulib module unicase/u16-ct-casefold
+
+libunistring_la_SOURCES += unicase/u16-ct-casefold.c
+
+EXTRA_DIST += unicase/u-ct-casefold.h
+
+## end gnulib module unicase/u16-ct-casefold
+
+## begin gnulib module unicase/u16-ct-tolower
+
+libunistring_la_SOURCES += unicase/u16-ct-tolower.c
+
+## end gnulib module unicase/u16-ct-tolower
+
+## begin gnulib module unicase/u16-ct-totitle
+
+libunistring_la_SOURCES += unicase/u16-ct-totitle.c
+
+EXTRA_DIST += unicase/context.h unicase/u-ct-totitle.h
+
+## end gnulib module unicase/u16-ct-totitle
+
+## begin gnulib module unicase/u16-ct-toupper
+
+libunistring_la_SOURCES += unicase/u16-ct-toupper.c
+
+## end gnulib module unicase/u16-ct-toupper
+
+## begin gnulib module unicase/u16-is-cased
+
+libunistring_la_SOURCES += unicase/u16-is-cased.c
+
+EXTRA_DIST += unicase/u-is-cased.h
+
+## end gnulib module unicase/u16-is-cased
+
+## begin gnulib module unicase/u16-is-casefolded
+
+libunistring_la_SOURCES += unicase/u16-is-casefolded.c
+
+## end gnulib module unicase/u16-is-casefolded
+
+## begin gnulib module unicase/u16-is-invariant
+
+libunistring_la_SOURCES += unicase/u16-is-invariant.c
+
+EXTRA_DIST += unicase/invariant.h unicase/u-is-invariant.h
+
+## end gnulib module unicase/u16-is-invariant
+
+## begin gnulib module unicase/u16-is-lowercase
+
+libunistring_la_SOURCES += unicase/u16-is-lowercase.c
+
+## end gnulib module unicase/u16-is-lowercase
+
+## begin gnulib module unicase/u16-is-titlecase
+
+libunistring_la_SOURCES += unicase/u16-is-titlecase.c
+
+## end gnulib module unicase/u16-is-titlecase
+
+## begin gnulib module unicase/u16-is-uppercase
+
+libunistring_la_SOURCES += unicase/u16-is-uppercase.c
+
+## end gnulib module unicase/u16-is-uppercase
+
+## begin gnulib module unicase/u16-tolower
+
+libunistring_la_SOURCES += unicase/u16-tolower.c
+
+## end gnulib module unicase/u16-tolower
+
+## begin gnulib module unicase/u16-totitle
+
+libunistring_la_SOURCES += unicase/u16-totitle.c
+
+EXTRA_DIST += unicase/u-totitle.h
+
+## end gnulib module unicase/u16-totitle
+
+## begin gnulib module unicase/u16-toupper
+
+libunistring_la_SOURCES += unicase/u16-toupper.c
+
+## end gnulib module unicase/u16-toupper
+
+## begin gnulib module unicase/u32-casecmp
+
+libunistring_la_SOURCES += unicase/u32-casecmp.c
+
+EXTRA_DIST += unicase/u-casecmp.h
+
+## end gnulib module unicase/u32-casecmp
+
+## begin gnulib module unicase/u32-casecoll
+
+libunistring_la_SOURCES += unicase/u32-casecoll.c
+
+EXTRA_DIST += unicase/u-casecoll.h
+
+## end gnulib module unicase/u32-casecoll
+
+## begin gnulib module unicase/u32-casefold
+
+libunistring_la_SOURCES += unicase/u32-casefold.c
+
+EXTRA_DIST += unicase/u-casefold.h
+
+## end gnulib module unicase/u32-casefold
+
+## begin gnulib module unicase/u32-casemap
+
+libunistring_la_SOURCES += unicase/u32-casemap.c
+
+EXTRA_DIST += unicase/context.h unicase/u-casemap.h unicase/unicasemap.h
+
+## end gnulib module unicase/u32-casemap
+
+## begin gnulib module unicase/u32-casexfrm
+
+libunistring_la_SOURCES += unicase/u32-casexfrm.c
+
+EXTRA_DIST += unicase/u-casexfrm.h
+
+## end gnulib module unicase/u32-casexfrm
+
+## begin gnulib module unicase/u32-ct-casefold
+
+libunistring_la_SOURCES += unicase/u32-ct-casefold.c
+
+EXTRA_DIST += unicase/u-ct-casefold.h
+
+## end gnulib module unicase/u32-ct-casefold
+
+## begin gnulib module unicase/u32-ct-tolower
+
+libunistring_la_SOURCES += unicase/u32-ct-tolower.c
+
+## end gnulib module unicase/u32-ct-tolower
+
+## begin gnulib module unicase/u32-ct-totitle
+
+libunistring_la_SOURCES += unicase/u32-ct-totitle.c
+
+EXTRA_DIST += unicase/context.h unicase/u-ct-totitle.h
+
+## end gnulib module unicase/u32-ct-totitle
+
+## begin gnulib module unicase/u32-ct-toupper
+
+libunistring_la_SOURCES += unicase/u32-ct-toupper.c
+
+## end gnulib module unicase/u32-ct-toupper
+
+## begin gnulib module unicase/u32-is-cased
+
+libunistring_la_SOURCES += unicase/u32-is-cased.c
+
+EXTRA_DIST += unicase/u-is-cased.h
+
+## end gnulib module unicase/u32-is-cased
+
+## begin gnulib module unicase/u32-is-casefolded
+
+libunistring_la_SOURCES += unicase/u32-is-casefolded.c
+
+## end gnulib module unicase/u32-is-casefolded
+
+## begin gnulib module unicase/u32-is-invariant
+
+libunistring_la_SOURCES += unicase/u32-is-invariant.c
+
+EXTRA_DIST += unicase/invariant.h unicase/u-is-invariant.h
+
+## end gnulib module unicase/u32-is-invariant
+
+## begin gnulib module unicase/u32-is-lowercase
+
+libunistring_la_SOURCES += unicase/u32-is-lowercase.c
+
+## end gnulib module unicase/u32-is-lowercase
+
+## begin gnulib module unicase/u32-is-titlecase
+
+libunistring_la_SOURCES += unicase/u32-is-titlecase.c
+
+## end gnulib module unicase/u32-is-titlecase
+
+## begin gnulib module unicase/u32-is-uppercase
+
+libunistring_la_SOURCES += unicase/u32-is-uppercase.c
+
+## end gnulib module unicase/u32-is-uppercase
+
+## begin gnulib module unicase/u32-tolower
+
+libunistring_la_SOURCES += unicase/u32-tolower.c
+
+## end gnulib module unicase/u32-tolower
+
+## begin gnulib module unicase/u32-totitle
+
+libunistring_la_SOURCES += unicase/u32-totitle.c
+
+EXTRA_DIST += unicase/u-totitle.h
+
+## end gnulib module unicase/u32-totitle
+
+## begin gnulib module unicase/u32-toupper
+
+libunistring_la_SOURCES += unicase/u32-toupper.c
+
+## end gnulib module unicase/u32-toupper
+
+## begin gnulib module unicase/u8-casecmp
+
+libunistring_la_SOURCES += unicase/u8-casecmp.c
+
+EXTRA_DIST += unicase/u-casecmp.h
+
+## end gnulib module unicase/u8-casecmp
+
+## begin gnulib module unicase/u8-casecoll
+
+libunistring_la_SOURCES += unicase/u8-casecoll.c
+
+EXTRA_DIST += unicase/u-casecoll.h
+
+## end gnulib module unicase/u8-casecoll
+
+## begin gnulib module unicase/u8-casefold
+
+libunistring_la_SOURCES += unicase/u8-casefold.c
+
+EXTRA_DIST += unicase/u-casefold.h
+
+## end gnulib module unicase/u8-casefold
+
+## begin gnulib module unicase/u8-casemap
+
+libunistring_la_SOURCES += unicase/u8-casemap.c
+
+EXTRA_DIST += unicase/context.h unicase/u-casemap.h unicase/unicasemap.h
+
+## end gnulib module unicase/u8-casemap
+
+## begin gnulib module unicase/u8-casexfrm
+
+libunistring_la_SOURCES += unicase/u8-casexfrm.c
+
+EXTRA_DIST += unicase/u-casexfrm.h
+
+## end gnulib module unicase/u8-casexfrm
+
+## begin gnulib module unicase/u8-ct-casefold
+
+libunistring_la_SOURCES += unicase/u8-ct-casefold.c
+
+EXTRA_DIST += unicase/u-ct-casefold.h
+
+## end gnulib module unicase/u8-ct-casefold
+
+## begin gnulib module unicase/u8-ct-tolower
+
+libunistring_la_SOURCES += unicase/u8-ct-tolower.c
+
+## end gnulib module unicase/u8-ct-tolower
+
+## begin gnulib module unicase/u8-ct-totitle
+
+libunistring_la_SOURCES += unicase/u8-ct-totitle.c
+
+EXTRA_DIST += unicase/context.h unicase/u-ct-totitle.h
+
+## end gnulib module unicase/u8-ct-totitle
+
+## begin gnulib module unicase/u8-ct-toupper
+
+libunistring_la_SOURCES += unicase/u8-ct-toupper.c
+
+## end gnulib module unicase/u8-ct-toupper
+
+## begin gnulib module unicase/u8-is-cased
+
+libunistring_la_SOURCES += unicase/u8-is-cased.c
+
+EXTRA_DIST += unicase/u-is-cased.h
+
+## end gnulib module unicase/u8-is-cased
+
+## begin gnulib module unicase/u8-is-casefolded
+
+libunistring_la_SOURCES += unicase/u8-is-casefolded.c
+
+## end gnulib module unicase/u8-is-casefolded
+
+## begin gnulib module unicase/u8-is-invariant
+
+libunistring_la_SOURCES += unicase/u8-is-invariant.c
+
+EXTRA_DIST += unicase/invariant.h unicase/u-is-invariant.h
+
+## end gnulib module unicase/u8-is-invariant
+
+## begin gnulib module unicase/u8-is-lowercase
+
+libunistring_la_SOURCES += unicase/u8-is-lowercase.c
+
+## end gnulib module unicase/u8-is-lowercase
+
+## begin gnulib module unicase/u8-is-titlecase
+
+libunistring_la_SOURCES += unicase/u8-is-titlecase.c
+
+## end gnulib module unicase/u8-is-titlecase
+
+## begin gnulib module unicase/u8-is-uppercase
+
+libunistring_la_SOURCES += unicase/u8-is-uppercase.c
+
+## end gnulib module unicase/u8-is-uppercase
+
+## begin gnulib module unicase/u8-tolower
+
+libunistring_la_SOURCES += unicase/u8-tolower.c
+
+## end gnulib module unicase/u8-tolower
+
+## begin gnulib module unicase/u8-totitle
+
+libunistring_la_SOURCES += unicase/u8-totitle.c
+
+EXTRA_DIST += unicase/u-totitle.h
+
+## end gnulib module unicase/u8-totitle
+
+## begin gnulib module unicase/u8-toupper
+
+libunistring_la_SOURCES += unicase/u8-toupper.c
+
+## end gnulib module unicase/u8-toupper
+
+## begin gnulib module unicase/ulc-casecmp
+
+libunistring_la_SOURCES += unicase/ulc-casecmp.c
+
+EXTRA_DIST += unicase/u-casecmp.h
+
+## end gnulib module unicase/ulc-casecmp
+
+## begin gnulib module unicase/ulc-casecoll
+
+libunistring_la_SOURCES += unicase/ulc-casecoll.c
+
+EXTRA_DIST += unicase/u-casecoll.h
+
+## end gnulib module unicase/ulc-casecoll
+
+## begin gnulib module unicase/ulc-casexfrm
+
+libunistring_la_SOURCES += unicase/ulc-casexfrm.c
+
+## end gnulib module unicase/ulc-casexfrm
+
+## begin gnulib module uniconv/base
+
+
+EXTRA_DIST += iconveh.h localcharset.h striconveha.h uniconv.h
+
+## end gnulib module uniconv/base
+
+## begin gnulib module uniconv/u16-conv-from-enc
+
+libunistring_la_SOURCES += uniconv/u16-conv-from-enc.c
+
+EXTRA_DIST += uniconv/u-conv-from-enc.h
+
+## end gnulib module uniconv/u16-conv-from-enc
+
+## begin gnulib module uniconv/u16-conv-to-enc
+
+libunistring_la_SOURCES += uniconv/u16-conv-to-enc.c
+
+EXTRA_DIST += uniconv/u-conv-to-enc.h
+
+## end gnulib module uniconv/u16-conv-to-enc
+
+## begin gnulib module uniconv/u16-strconv-from-enc
+
+libunistring_la_SOURCES += uniconv/u16-strconv-from-enc.c
+
+EXTRA_DIST += uniconv/u-strconv-from-enc.h
+
+## end gnulib module uniconv/u16-strconv-from-enc
+
+## begin gnulib module uniconv/u16-strconv-from-locale
+
+libunistring_la_SOURCES += uniconv/u16-strconv-from-locale.c
+
+## end gnulib module uniconv/u16-strconv-from-locale
+
+## begin gnulib module uniconv/u16-strconv-to-enc
+
+libunistring_la_SOURCES += uniconv/u16-strconv-to-enc.c
+
+EXTRA_DIST += uniconv/u-strconv-to-enc.h
+
+## end gnulib module uniconv/u16-strconv-to-enc
+
+## begin gnulib module uniconv/u16-strconv-to-locale
+
+libunistring_la_SOURCES += uniconv/u16-strconv-to-locale.c
+
+## end gnulib module uniconv/u16-strconv-to-locale
+
+## begin gnulib module uniconv/u32-conv-from-enc
+
+libunistring_la_SOURCES += uniconv/u32-conv-from-enc.c
+
+EXTRA_DIST += uniconv/u-conv-from-enc.h
+
+## end gnulib module uniconv/u32-conv-from-enc
+
+## begin gnulib module uniconv/u32-conv-to-enc
+
+libunistring_la_SOURCES += uniconv/u32-conv-to-enc.c
+
+EXTRA_DIST += uniconv/u-conv-to-enc.h
+
+## end gnulib module uniconv/u32-conv-to-enc
+
+## begin gnulib module uniconv/u32-strconv-from-enc
+
+libunistring_la_SOURCES += uniconv/u32-strconv-from-enc.c
+
+EXTRA_DIST += uniconv/u-strconv-from-enc.h
+
+## end gnulib module uniconv/u32-strconv-from-enc
+
+## begin gnulib module uniconv/u32-strconv-from-locale
+
+libunistring_la_SOURCES += uniconv/u32-strconv-from-locale.c
+
+## end gnulib module uniconv/u32-strconv-from-locale
+
+## begin gnulib module uniconv/u32-strconv-to-enc
+
+libunistring_la_SOURCES += uniconv/u32-strconv-to-enc.c
+
+EXTRA_DIST += uniconv/u-strconv-to-enc.h
+
+## end gnulib module uniconv/u32-strconv-to-enc
+
+## begin gnulib module uniconv/u32-strconv-to-locale
+
+libunistring_la_SOURCES += uniconv/u32-strconv-to-locale.c
+
+## end gnulib module uniconv/u32-strconv-to-locale
+
+## begin gnulib module uniconv/u8-conv-from-enc
+
+libunistring_la_SOURCES += uniconv/u8-conv-from-enc.c
+
+## end gnulib module uniconv/u8-conv-from-enc
+
+## begin gnulib module uniconv/u8-conv-to-enc
+
+libunistring_la_SOURCES += uniconv/u8-conv-to-enc.c
+
+## end gnulib module uniconv/u8-conv-to-enc
+
+## begin gnulib module uniconv/u8-strconv-from-enc
+
+libunistring_la_SOURCES += uniconv/u8-strconv-from-enc.c
+
+EXTRA_DIST += uniconv/u-strconv-from-enc.h
+
+## end gnulib module uniconv/u8-strconv-from-enc
+
+## begin gnulib module uniconv/u8-strconv-from-locale
+
+libunistring_la_SOURCES += uniconv/u8-strconv-from-locale.c
+
+## end gnulib module uniconv/u8-strconv-from-locale
+
+## begin gnulib module uniconv/u8-strconv-to-enc
+
+libunistring_la_SOURCES += uniconv/u8-strconv-to-enc.c
+
+## end gnulib module uniconv/u8-strconv-to-enc
+
+## begin gnulib module uniconv/u8-strconv-to-locale
+
+libunistring_la_SOURCES += uniconv/u8-strconv-to-locale.c
+
+## end gnulib module uniconv/u8-strconv-to-locale
+
+## begin gnulib module unictype/base
+
+
+EXTRA_DIST += unictype.h
+
+## end gnulib module unictype/base
+
+## begin gnulib module unictype/bidicategory-byname
+
+libunistring_la_SOURCES += unictype/bidi_byname.c
+
+## end gnulib module unictype/bidicategory-byname
+
+## begin gnulib module unictype/bidicategory-name
+
+libunistring_la_SOURCES += unictype/bidi_name.c
+
+## end gnulib module unictype/bidicategory-name
+
+## begin gnulib module unictype/bidicategory-of
+
+libunistring_la_SOURCES += unictype/bidi_of.c
+
+EXTRA_DIST += unictype/bidi_of.h
+
+## end gnulib module unictype/bidicategory-of
+
+## begin gnulib module unictype/bidicategory-test
+
+libunistring_la_SOURCES += unictype/bidi_test.c
+
+## end gnulib module unictype/bidicategory-test
+
+## begin gnulib module unictype/block-list
+
+libunistring_la_SOURCES += unictype/blocks.c
+
+EXTRA_DIST += unictype/blocks.h
+
+## end gnulib module unictype/block-list
+
+## begin gnulib module unictype/block-test
+
+libunistring_la_SOURCES += unictype/block_test.c
+
+## end gnulib module unictype/block-test
+
+## begin gnulib module unictype/category-C
+
+libunistring_la_SOURCES += unictype/categ_C.c
+
+EXTRA_DIST += unictype/categ_C.h
+
+## end gnulib module unictype/category-C
+
+## begin gnulib module unictype/category-Cc
+
+libunistring_la_SOURCES += unictype/categ_Cc.c
+
+EXTRA_DIST += unictype/categ_Cc.h
+
+## end gnulib module unictype/category-Cc
+
+## begin gnulib module unictype/category-Cf
+
+libunistring_la_SOURCES += unictype/categ_Cf.c
+
+EXTRA_DIST += unictype/categ_Cf.h
+
+## end gnulib module unictype/category-Cf
+
+## begin gnulib module unictype/category-Cn
+
+libunistring_la_SOURCES += unictype/categ_Cn.c
+
+EXTRA_DIST += unictype/categ_Cn.h
+
+## end gnulib module unictype/category-Cn
+
+## begin gnulib module unictype/category-Co
+
+libunistring_la_SOURCES += unictype/categ_Co.c
+
+EXTRA_DIST += unictype/categ_Co.h
+
+## end gnulib module unictype/category-Co
+
+## begin gnulib module unictype/category-Cs
+
+libunistring_la_SOURCES += unictype/categ_Cs.c
+
+EXTRA_DIST += unictype/categ_Cs.h
+
+## end gnulib module unictype/category-Cs
+
+## begin gnulib module unictype/category-L
+
+libunistring_la_SOURCES += unictype/categ_L.c
+
+EXTRA_DIST += unictype/categ_L.h
+
+## end gnulib module unictype/category-L
+
+## begin gnulib module unictype/category-Ll
+
+libunistring_la_SOURCES += unictype/categ_Ll.c
+
+EXTRA_DIST += unictype/categ_Ll.h
+
+## end gnulib module unictype/category-Ll
+
+## begin gnulib module unictype/category-Lm
+
+libunistring_la_SOURCES += unictype/categ_Lm.c
+
+EXTRA_DIST += unictype/categ_Lm.h
+
+## end gnulib module unictype/category-Lm
+
+## begin gnulib module unictype/category-Lo
+
+libunistring_la_SOURCES += unictype/categ_Lo.c
+
+EXTRA_DIST += unictype/categ_Lo.h
+
+## end gnulib module unictype/category-Lo
+
+## begin gnulib module unictype/category-Lt
+
+libunistring_la_SOURCES += unictype/categ_Lt.c
+
+EXTRA_DIST += unictype/categ_Lt.h
+
+## end gnulib module unictype/category-Lt
+
+## begin gnulib module unictype/category-Lu
+
+libunistring_la_SOURCES += unictype/categ_Lu.c
+
+EXTRA_DIST += unictype/categ_Lu.h
+
+## end gnulib module unictype/category-Lu
+
+## begin gnulib module unictype/category-M
+
+libunistring_la_SOURCES += unictype/categ_M.c
+
+EXTRA_DIST += unictype/categ_M.h
+
+## end gnulib module unictype/category-M
+
+## begin gnulib module unictype/category-Mc
+
+libunistring_la_SOURCES += unictype/categ_Mc.c
+
+EXTRA_DIST += unictype/categ_Mc.h
+
+## end gnulib module unictype/category-Mc
+
+## begin gnulib module unictype/category-Me
+
+libunistring_la_SOURCES += unictype/categ_Me.c
+
+EXTRA_DIST += unictype/categ_Me.h
+
+## end gnulib module unictype/category-Me
+
+## begin gnulib module unictype/category-Mn
+
+libunistring_la_SOURCES += unictype/categ_Mn.c
+
+EXTRA_DIST += unictype/categ_Mn.h
+
+## end gnulib module unictype/category-Mn
+
+## begin gnulib module unictype/category-N
+
+libunistring_la_SOURCES += unictype/categ_N.c
+
+EXTRA_DIST += unictype/categ_N.h
+
+## end gnulib module unictype/category-N
+
+## begin gnulib module unictype/category-Nd
+
+libunistring_la_SOURCES += unictype/categ_Nd.c
+
+EXTRA_DIST += unictype/categ_Nd.h
+
+## end gnulib module unictype/category-Nd
+
+## begin gnulib module unictype/category-Nl
+
+libunistring_la_SOURCES += unictype/categ_Nl.c
+
+EXTRA_DIST += unictype/categ_Nl.h
+
+## end gnulib module unictype/category-Nl
+
+## begin gnulib module unictype/category-No
+
+libunistring_la_SOURCES += unictype/categ_No.c
+
+EXTRA_DIST += unictype/categ_No.h
+
+## end gnulib module unictype/category-No
+
+## begin gnulib module unictype/category-P
+
+libunistring_la_SOURCES += unictype/categ_P.c
+
+EXTRA_DIST += unictype/categ_P.h
+
+## end gnulib module unictype/category-P
+
+## begin gnulib module unictype/category-Pc
+
+libunistring_la_SOURCES += unictype/categ_Pc.c
+
+EXTRA_DIST += unictype/categ_Pc.h
+
+## end gnulib module unictype/category-Pc
+
+## begin gnulib module unictype/category-Pd
+
+libunistring_la_SOURCES += unictype/categ_Pd.c
+
+EXTRA_DIST += unictype/categ_Pd.h
+
+## end gnulib module unictype/category-Pd
+
+## begin gnulib module unictype/category-Pe
+
+libunistring_la_SOURCES += unictype/categ_Pe.c
+
+EXTRA_DIST += unictype/categ_Pe.h
+
+## end gnulib module unictype/category-Pe
+
+## begin gnulib module unictype/category-Pf
+
+libunistring_la_SOURCES += unictype/categ_Pf.c
+
+EXTRA_DIST += unictype/categ_Pf.h
+
+## end gnulib module unictype/category-Pf
+
+## begin gnulib module unictype/category-Pi
+
+libunistring_la_SOURCES += unictype/categ_Pi.c
+
+EXTRA_DIST += unictype/categ_Pi.h
+
+## end gnulib module unictype/category-Pi
+
+## begin gnulib module unictype/category-Po
+
+libunistring_la_SOURCES += unictype/categ_Po.c
+
+EXTRA_DIST += unictype/categ_Po.h
+
+## end gnulib module unictype/category-Po
+
+## begin gnulib module unictype/category-Ps
+
+libunistring_la_SOURCES += unictype/categ_Ps.c
+
+EXTRA_DIST += unictype/categ_Ps.h
+
+## end gnulib module unictype/category-Ps
+
+## begin gnulib module unictype/category-S
+
+libunistring_la_SOURCES += unictype/categ_S.c
+
+EXTRA_DIST += unictype/categ_S.h
+
+## end gnulib module unictype/category-S
+
+## begin gnulib module unictype/category-Sc
+
+libunistring_la_SOURCES += unictype/categ_Sc.c
+
+EXTRA_DIST += unictype/categ_Sc.h
+
+## end gnulib module unictype/category-Sc
+
+## begin gnulib module unictype/category-Sk
+
+libunistring_la_SOURCES += unictype/categ_Sk.c
+
+EXTRA_DIST += unictype/categ_Sk.h
+
+## end gnulib module unictype/category-Sk
+
+## begin gnulib module unictype/category-Sm
+
+libunistring_la_SOURCES += unictype/categ_Sm.c
+
+EXTRA_DIST += unictype/categ_Sm.h
+
+## end gnulib module unictype/category-Sm
+
+## begin gnulib module unictype/category-So
+
+libunistring_la_SOURCES += unictype/categ_So.c
+
+EXTRA_DIST += unictype/categ_So.h
+
+## end gnulib module unictype/category-So
+
+## begin gnulib module unictype/category-Z
+
+libunistring_la_SOURCES += unictype/categ_Z.c
+
+EXTRA_DIST += unictype/categ_Z.h
+
+## end gnulib module unictype/category-Z
+
+## begin gnulib module unictype/category-Zl
+
+libunistring_la_SOURCES += unictype/categ_Zl.c
+
+EXTRA_DIST += unictype/categ_Zl.h
+
+## end gnulib module unictype/category-Zl
+
+## begin gnulib module unictype/category-Zp
+
+libunistring_la_SOURCES += unictype/categ_Zp.c
+
+EXTRA_DIST += unictype/categ_Zp.h
+
+## end gnulib module unictype/category-Zp
+
+## begin gnulib module unictype/category-Zs
+
+libunistring_la_SOURCES += unictype/categ_Zs.c
+
+EXTRA_DIST += unictype/categ_Zs.h
+
+## end gnulib module unictype/category-Zs
+
+## begin gnulib module unictype/category-and
+
+libunistring_la_SOURCES += unictype/categ_and.c
+
+## end gnulib module unictype/category-and
+
+## begin gnulib module unictype/category-and-not
+
+libunistring_la_SOURCES += unictype/categ_and_not.c
+
+## end gnulib module unictype/category-and-not
+
+## begin gnulib module unictype/category-byname
+
+libunistring_la_SOURCES += unictype/categ_byname.c
+
+## end gnulib module unictype/category-byname
+
+## begin gnulib module unictype/category-name
+
+libunistring_la_SOURCES += unictype/categ_name.c
+
+## end gnulib module unictype/category-name
+
+## begin gnulib module unictype/category-none
+
+libunistring_la_SOURCES += unictype/categ_none.c
+
+## end gnulib module unictype/category-none
+
+## begin gnulib module unictype/category-of
+
+libunistring_la_SOURCES += unictype/categ_of.c
+
+EXTRA_DIST += unictype/categ_of.h
+
+## end gnulib module unictype/category-of
+
+## begin gnulib module unictype/category-or
+
+libunistring_la_SOURCES += unictype/categ_or.c
+
+## end gnulib module unictype/category-or
+
+## begin gnulib module unictype/category-test
+
+libunistring_la_SOURCES += unictype/categ_test.c
+
+EXTRA_DIST += unictype/bitmap.h
+
+## end gnulib module unictype/category-test
+
+## begin gnulib module unictype/combining-class
+
+libunistring_la_SOURCES += unictype/combining.c
+
+EXTRA_DIST += unictype/combining.h
+
+## end gnulib module unictype/combining-class
+
+## begin gnulib module unictype/ctype-alnum
+
+libunistring_la_SOURCES += unictype/ctype_alnum.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/ctype_alnum.h
+
+## end gnulib module unictype/ctype-alnum
+
+## begin gnulib module unictype/ctype-alpha
+
+libunistring_la_SOURCES += unictype/ctype_alpha.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/ctype_alpha.h
+
+## end gnulib module unictype/ctype-alpha
+
+## begin gnulib module unictype/ctype-blank
+
+libunistring_la_SOURCES += unictype/ctype_blank.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/ctype_blank.h
+
+## end gnulib module unictype/ctype-blank
+
+## begin gnulib module unictype/ctype-cntrl
+
+libunistring_la_SOURCES += unictype/ctype_cntrl.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/ctype_cntrl.h
+
+## end gnulib module unictype/ctype-cntrl
+
+## begin gnulib module unictype/ctype-digit
+
+libunistring_la_SOURCES += unictype/ctype_digit.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/ctype_digit.h
+
+## end gnulib module unictype/ctype-digit
+
+## begin gnulib module unictype/ctype-graph
+
+libunistring_la_SOURCES += unictype/ctype_graph.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/ctype_graph.h
+
+## end gnulib module unictype/ctype-graph
+
+## begin gnulib module unictype/ctype-lower
+
+libunistring_la_SOURCES += unictype/ctype_lower.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/ctype_lower.h
+
+## end gnulib module unictype/ctype-lower
+
+## begin gnulib module unictype/ctype-print
+
+libunistring_la_SOURCES += unictype/ctype_print.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/ctype_print.h
+
+## end gnulib module unictype/ctype-print
+
+## begin gnulib module unictype/ctype-punct
+
+libunistring_la_SOURCES += unictype/ctype_punct.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/ctype_punct.h
+
+## end gnulib module unictype/ctype-punct
+
+## begin gnulib module unictype/ctype-space
+
+libunistring_la_SOURCES += unictype/ctype_space.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/ctype_space.h
+
+## end gnulib module unictype/ctype-space
+
+## begin gnulib module unictype/ctype-upper
+
+libunistring_la_SOURCES += unictype/ctype_upper.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/ctype_upper.h
+
+## end gnulib module unictype/ctype-upper
+
+## begin gnulib module unictype/ctype-xdigit
+
+libunistring_la_SOURCES += unictype/ctype_xdigit.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/ctype_xdigit.h
+
+## end gnulib module unictype/ctype-xdigit
+
+## begin gnulib module unictype/decimal-digit
+
+libunistring_la_SOURCES += unictype/decdigit.c
+
+EXTRA_DIST += unictype/decdigit.h
+
+## end gnulib module unictype/decimal-digit
+
+## begin gnulib module unictype/digit
+
+libunistring_la_SOURCES += unictype/digit.c
+
+EXTRA_DIST += unictype/digit.h
+
+## end gnulib module unictype/digit
+
+## begin gnulib module unictype/mirror
+
+libunistring_la_SOURCES += unictype/mirror.c
+
+EXTRA_DIST += unictype/mirror.h
+
+## end gnulib module unictype/mirror
+
+## begin gnulib module unictype/numeric
+
+libunistring_la_SOURCES += unictype/numeric.c
+
+EXTRA_DIST += unictype/numeric.h
+
+## end gnulib module unictype/numeric
+
+## begin gnulib module unictype/property-alphabetic
+
+libunistring_la_SOURCES += unictype/pr_alphabetic.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_alphabetic.h
+
+## end gnulib module unictype/property-alphabetic
+
+## begin gnulib module unictype/property-ascii-hex-digit
+
+libunistring_la_SOURCES += unictype/pr_ascii_hex_digit.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_ascii_hex_digit.h
+
+## end gnulib module unictype/property-ascii-hex-digit
+
+## begin gnulib module unictype/property-bidi-arabic-digit
+
+libunistring_la_SOURCES += unictype/pr_bidi_arabic_digit.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_bidi_arabic_digit.h
+
+## end gnulib module unictype/property-bidi-arabic-digit
+
+## begin gnulib module unictype/property-bidi-arabic-right-to-left
+
+libunistring_la_SOURCES += unictype/pr_bidi_arabic_right_to_left.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_bidi_arabic_right_to_left.h
+
+## end gnulib module unictype/property-bidi-arabic-right-to-left
+
+## begin gnulib module unictype/property-bidi-block-separator
+
+libunistring_la_SOURCES += unictype/pr_bidi_block_separator.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_bidi_block_separator.h
+
+## end gnulib module unictype/property-bidi-block-separator
+
+## begin gnulib module unictype/property-bidi-boundary-neutral
+
+libunistring_la_SOURCES += unictype/pr_bidi_boundary_neutral.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_bidi_boundary_neutral.h
+
+## end gnulib module unictype/property-bidi-boundary-neutral
+
+## begin gnulib module unictype/property-bidi-common-separator
+
+libunistring_la_SOURCES += unictype/pr_bidi_common_separator.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_bidi_common_separator.h
+
+## end gnulib module unictype/property-bidi-common-separator
+
+## begin gnulib module unictype/property-bidi-control
+
+libunistring_la_SOURCES += unictype/pr_bidi_control.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_bidi_control.h
+
+## end gnulib module unictype/property-bidi-control
+
+## begin gnulib module unictype/property-bidi-embedding-or-override
+
+libunistring_la_SOURCES += unictype/pr_bidi_embedding_or_override.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_bidi_embedding_or_override.h
+
+## end gnulib module unictype/property-bidi-embedding-or-override
+
+## begin gnulib module unictype/property-bidi-eur-num-separator
+
+libunistring_la_SOURCES += unictype/pr_bidi_eur_num_separator.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_bidi_eur_num_separator.h
+
+## end gnulib module unictype/property-bidi-eur-num-separator
+
+## begin gnulib module unictype/property-bidi-eur-num-terminator
+
+libunistring_la_SOURCES += unictype/pr_bidi_eur_num_terminator.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_bidi_eur_num_terminator.h
+
+## end gnulib module unictype/property-bidi-eur-num-terminator
+
+## begin gnulib module unictype/property-bidi-european-digit
+
+libunistring_la_SOURCES += unictype/pr_bidi_european_digit.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_bidi_european_digit.h
+
+## end gnulib module unictype/property-bidi-european-digit
+
+## begin gnulib module unictype/property-bidi-hebrew-right-to-left
+
+libunistring_la_SOURCES += unictype/pr_bidi_hebrew_right_to_left.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_bidi_hebrew_right_to_left.h
+
+## end gnulib module unictype/property-bidi-hebrew-right-to-left
+
+## begin gnulib module unictype/property-bidi-left-to-right
+
+libunistring_la_SOURCES += unictype/pr_bidi_left_to_right.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_bidi_left_to_right.h
+
+## end gnulib module unictype/property-bidi-left-to-right
+
+## begin gnulib module unictype/property-bidi-non-spacing-mark
+
+libunistring_la_SOURCES += unictype/pr_bidi_non_spacing_mark.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_bidi_non_spacing_mark.h
+
+## end gnulib module unictype/property-bidi-non-spacing-mark
+
+## begin gnulib module unictype/property-bidi-other-neutral
+
+libunistring_la_SOURCES += unictype/pr_bidi_other_neutral.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_bidi_other_neutral.h
+
+## end gnulib module unictype/property-bidi-other-neutral
+
+## begin gnulib module unictype/property-bidi-pdf
+
+libunistring_la_SOURCES += unictype/pr_bidi_pdf.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_bidi_pdf.h
+
+## end gnulib module unictype/property-bidi-pdf
+
+## begin gnulib module unictype/property-bidi-segment-separator
+
+libunistring_la_SOURCES += unictype/pr_bidi_segment_separator.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_bidi_segment_separator.h
+
+## end gnulib module unictype/property-bidi-segment-separator
+
+## begin gnulib module unictype/property-bidi-whitespace
+
+libunistring_la_SOURCES += unictype/pr_bidi_whitespace.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_bidi_whitespace.h
+
+## end gnulib module unictype/property-bidi-whitespace
+
+## begin gnulib module unictype/property-byname
+
+libunistring_la_SOURCES += unictype/pr_byname.c
+
+unictype/pr_byname.h: unictype/pr_byname.gperf
+ $(GPERF) -m 10 $(srcdir)/unictype/pr_byname.gperf > $(srcdir)/unictype/pr_byname.h-t
+ mv $(srcdir)/unictype/pr_byname.h-t $(srcdir)/unictype/pr_byname.h
+BUILT_SOURCES += unictype/pr_byname.h
+MOSTLYCLEANFILES += unictype/pr_byname.h-t
+MAINTAINERCLEANFILES += unictype/pr_byname.h
+EXTRA_DIST += unictype/pr_byname.h
+
+EXTRA_DIST += unictype/pr_byname.gperf
+
+## end gnulib module unictype/property-byname
+
+## begin gnulib module unictype/property-combining
+
+libunistring_la_SOURCES += unictype/pr_combining.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_combining.h
+
+## end gnulib module unictype/property-combining
+
+## begin gnulib module unictype/property-composite
+
+libunistring_la_SOURCES += unictype/pr_composite.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_composite.h
+
+## end gnulib module unictype/property-composite
+
+## begin gnulib module unictype/property-currency-symbol
+
+libunistring_la_SOURCES += unictype/pr_currency_symbol.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_currency_symbol.h
+
+## end gnulib module unictype/property-currency-symbol
+
+## begin gnulib module unictype/property-dash
+
+libunistring_la_SOURCES += unictype/pr_dash.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_dash.h
+
+## end gnulib module unictype/property-dash
+
+## begin gnulib module unictype/property-decimal-digit
+
+libunistring_la_SOURCES += unictype/pr_decimal_digit.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_decimal_digit.h
+
+## end gnulib module unictype/property-decimal-digit
+
+## begin gnulib module unictype/property-default-ignorable-code-point
+
+libunistring_la_SOURCES += unictype/pr_default_ignorable_code_point.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_default_ignorable_code_point.h
+
+## end gnulib module unictype/property-default-ignorable-code-point
+
+## begin gnulib module unictype/property-deprecated
+
+libunistring_la_SOURCES += unictype/pr_deprecated.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_deprecated.h
+
+## end gnulib module unictype/property-deprecated
+
+## begin gnulib module unictype/property-diacritic
+
+libunistring_la_SOURCES += unictype/pr_diacritic.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_diacritic.h
+
+## end gnulib module unictype/property-diacritic
+
+## begin gnulib module unictype/property-extender
+
+libunistring_la_SOURCES += unictype/pr_extender.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_extender.h
+
+## end gnulib module unictype/property-extender
+
+## begin gnulib module unictype/property-format-control
+
+libunistring_la_SOURCES += unictype/pr_format_control.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_format_control.h
+
+## end gnulib module unictype/property-format-control
+
+## begin gnulib module unictype/property-grapheme-base
+
+libunistring_la_SOURCES += unictype/pr_grapheme_base.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_grapheme_base.h
+
+## end gnulib module unictype/property-grapheme-base
+
+## begin gnulib module unictype/property-grapheme-extend
+
+libunistring_la_SOURCES += unictype/pr_grapheme_extend.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_grapheme_extend.h
+
+## end gnulib module unictype/property-grapheme-extend
+
+## begin gnulib module unictype/property-grapheme-link
+
+libunistring_la_SOURCES += unictype/pr_grapheme_link.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_grapheme_link.h
+
+## end gnulib module unictype/property-grapheme-link
+
+## begin gnulib module unictype/property-hex-digit
+
+libunistring_la_SOURCES += unictype/pr_hex_digit.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_hex_digit.h
+
+## end gnulib module unictype/property-hex-digit
+
+## begin gnulib module unictype/property-hyphen
+
+libunistring_la_SOURCES += unictype/pr_hyphen.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_hyphen.h
+
+## end gnulib module unictype/property-hyphen
+
+## begin gnulib module unictype/property-id-continue
+
+libunistring_la_SOURCES += unictype/pr_id_continue.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_id_continue.h
+
+## end gnulib module unictype/property-id-continue
+
+## begin gnulib module unictype/property-id-start
+
+libunistring_la_SOURCES += unictype/pr_id_start.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_id_start.h
+
+## end gnulib module unictype/property-id-start
+
+## begin gnulib module unictype/property-ideographic
+
+libunistring_la_SOURCES += unictype/pr_ideographic.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_ideographic.h
+
+## end gnulib module unictype/property-ideographic
+
+## begin gnulib module unictype/property-ids-binary-operator
+
+libunistring_la_SOURCES += unictype/pr_ids_binary_operator.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_ids_binary_operator.h
+
+## end gnulib module unictype/property-ids-binary-operator
+
+## begin gnulib module unictype/property-ids-trinary-operator
+
+libunistring_la_SOURCES += unictype/pr_ids_trinary_operator.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_ids_trinary_operator.h
+
+## end gnulib module unictype/property-ids-trinary-operator
+
+## begin gnulib module unictype/property-ignorable-control
+
+libunistring_la_SOURCES += unictype/pr_ignorable_control.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_ignorable_control.h
+
+## end gnulib module unictype/property-ignorable-control
+
+## begin gnulib module unictype/property-iso-control
+
+libunistring_la_SOURCES += unictype/pr_iso_control.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_iso_control.h
+
+## end gnulib module unictype/property-iso-control
+
+## begin gnulib module unictype/property-join-control
+
+libunistring_la_SOURCES += unictype/pr_join_control.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_join_control.h
+
+## end gnulib module unictype/property-join-control
+
+## begin gnulib module unictype/property-left-of-pair
+
+libunistring_la_SOURCES += unictype/pr_left_of_pair.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_left_of_pair.h
+
+## end gnulib module unictype/property-left-of-pair
+
+## begin gnulib module unictype/property-line-separator
+
+libunistring_la_SOURCES += unictype/pr_line_separator.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_line_separator.h
+
+## end gnulib module unictype/property-line-separator
+
+## begin gnulib module unictype/property-logical-order-exception
+
+libunistring_la_SOURCES += unictype/pr_logical_order_exception.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_logical_order_exception.h
+
+## end gnulib module unictype/property-logical-order-exception
+
+## begin gnulib module unictype/property-lowercase
+
+libunistring_la_SOURCES += unictype/pr_lowercase.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_lowercase.h
+
+## end gnulib module unictype/property-lowercase
+
+## begin gnulib module unictype/property-math
+
+libunistring_la_SOURCES += unictype/pr_math.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_math.h
+
+## end gnulib module unictype/property-math
+
+## begin gnulib module unictype/property-non-break
+
+libunistring_la_SOURCES += unictype/pr_non_break.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_non_break.h
+
+## end gnulib module unictype/property-non-break
+
+## begin gnulib module unictype/property-not-a-character
+
+libunistring_la_SOURCES += unictype/pr_not_a_character.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_not_a_character.h
+
+## end gnulib module unictype/property-not-a-character
+
+## begin gnulib module unictype/property-numeric
+
+libunistring_la_SOURCES += unictype/pr_numeric.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_numeric.h
+
+## end gnulib module unictype/property-numeric
+
+## begin gnulib module unictype/property-other-alphabetic
+
+libunistring_la_SOURCES += unictype/pr_other_alphabetic.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_other_alphabetic.h
+
+## end gnulib module unictype/property-other-alphabetic
+
+## begin gnulib module unictype/property-other-default-ignorable-code-point
+
+libunistring_la_SOURCES += unictype/pr_other_default_ignorable_code_point.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_other_default_ignorable_code_point.h
+
+## end gnulib module unictype/property-other-default-ignorable-code-point
+
+## begin gnulib module unictype/property-other-grapheme-extend
+
+libunistring_la_SOURCES += unictype/pr_other_grapheme_extend.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_other_grapheme_extend.h
+
+## end gnulib module unictype/property-other-grapheme-extend
+
+## begin gnulib module unictype/property-other-id-continue
+
+libunistring_la_SOURCES += unictype/pr_other_id_continue.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_other_id_continue.h
+
+## end gnulib module unictype/property-other-id-continue
+
+## begin gnulib module unictype/property-other-id-start
+
+libunistring_la_SOURCES += unictype/pr_other_id_start.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_other_id_start.h
+
+## end gnulib module unictype/property-other-id-start
+
+## begin gnulib module unictype/property-other-lowercase
+
+libunistring_la_SOURCES += unictype/pr_other_lowercase.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_other_lowercase.h
+
+## end gnulib module unictype/property-other-lowercase
+
+## begin gnulib module unictype/property-other-math
+
+libunistring_la_SOURCES += unictype/pr_other_math.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_other_math.h
+
+## end gnulib module unictype/property-other-math
+
+## begin gnulib module unictype/property-other-uppercase
+
+libunistring_la_SOURCES += unictype/pr_other_uppercase.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_other_uppercase.h
+
+## end gnulib module unictype/property-other-uppercase
+
+## begin gnulib module unictype/property-paired-punctuation
+
+libunistring_la_SOURCES += unictype/pr_paired_punctuation.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_paired_punctuation.h
+
+## end gnulib module unictype/property-paired-punctuation
+
+## begin gnulib module unictype/property-paragraph-separator
+
+libunistring_la_SOURCES += unictype/pr_paragraph_separator.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_paragraph_separator.h
+
+## end gnulib module unictype/property-paragraph-separator
+
+## begin gnulib module unictype/property-pattern-syntax
+
+libunistring_la_SOURCES += unictype/pr_pattern_syntax.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_pattern_syntax.h
+
+## end gnulib module unictype/property-pattern-syntax
+
+## begin gnulib module unictype/property-pattern-white-space
+
+libunistring_la_SOURCES += unictype/pr_pattern_white_space.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_pattern_white_space.h
+
+## end gnulib module unictype/property-pattern-white-space
+
+## begin gnulib module unictype/property-private-use
+
+libunistring_la_SOURCES += unictype/pr_private_use.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_private_use.h
+
+## end gnulib module unictype/property-private-use
+
+## begin gnulib module unictype/property-punctuation
+
+libunistring_la_SOURCES += unictype/pr_punctuation.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_punctuation.h
+
+## end gnulib module unictype/property-punctuation
+
+## begin gnulib module unictype/property-quotation-mark
+
+libunistring_la_SOURCES += unictype/pr_quotation_mark.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_quotation_mark.h
+
+## end gnulib module unictype/property-quotation-mark
+
+## begin gnulib module unictype/property-radical
+
+libunistring_la_SOURCES += unictype/pr_radical.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_radical.h
+
+## end gnulib module unictype/property-radical
+
+## begin gnulib module unictype/property-sentence-terminal
+
+libunistring_la_SOURCES += unictype/pr_sentence_terminal.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_sentence_terminal.h
+
+## end gnulib module unictype/property-sentence-terminal
+
+## begin gnulib module unictype/property-soft-dotted
+
+libunistring_la_SOURCES += unictype/pr_soft_dotted.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_soft_dotted.h
+
+## end gnulib module unictype/property-soft-dotted
+
+## begin gnulib module unictype/property-space
+
+libunistring_la_SOURCES += unictype/pr_space.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_space.h
+
+## end gnulib module unictype/property-space
+
+## begin gnulib module unictype/property-terminal-punctuation
+
+libunistring_la_SOURCES += unictype/pr_terminal_punctuation.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_terminal_punctuation.h
+
+## end gnulib module unictype/property-terminal-punctuation
+
+## begin gnulib module unictype/property-test
+
+libunistring_la_SOURCES += unictype/pr_test.c
+
+## end gnulib module unictype/property-test
+
+## begin gnulib module unictype/property-titlecase
+
+libunistring_la_SOURCES += unictype/pr_titlecase.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_titlecase.h
+
+## end gnulib module unictype/property-titlecase
+
+## begin gnulib module unictype/property-unassigned-code-value
+
+libunistring_la_SOURCES += unictype/pr_unassigned_code_value.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_unassigned_code_value.h
+
+## end gnulib module unictype/property-unassigned-code-value
+
+## begin gnulib module unictype/property-unified-ideograph
+
+libunistring_la_SOURCES += unictype/pr_unified_ideograph.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_unified_ideograph.h
+
+## end gnulib module unictype/property-unified-ideograph
+
+## begin gnulib module unictype/property-uppercase
+
+libunistring_la_SOURCES += unictype/pr_uppercase.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_uppercase.h
+
+## end gnulib module unictype/property-uppercase
+
+## begin gnulib module unictype/property-variation-selector
+
+libunistring_la_SOURCES += unictype/pr_variation_selector.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_variation_selector.h
+
+## end gnulib module unictype/property-variation-selector
+
+## begin gnulib module unictype/property-white-space
+
+libunistring_la_SOURCES += unictype/pr_white_space.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_white_space.h
+
+## end gnulib module unictype/property-white-space
+
+## begin gnulib module unictype/property-xid-continue
+
+libunistring_la_SOURCES += unictype/pr_xid_continue.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_xid_continue.h
+
+## end gnulib module unictype/property-xid-continue
+
+## begin gnulib module unictype/property-xid-start
+
+libunistring_la_SOURCES += unictype/pr_xid_start.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_xid_start.h
+
+## end gnulib module unictype/property-xid-start
+
+## begin gnulib module unictype/property-zero-width
+
+libunistring_la_SOURCES += unictype/pr_zero_width.c
+
+EXTRA_DIST += unictype/bitmap.h unictype/pr_zero_width.h
+
+## end gnulib module unictype/property-zero-width
+
+## begin gnulib module unictype/scripts
+
+libunistring_la_SOURCES += unictype/scripts.c
+
+unictype/scripts_byname.h: unictype/scripts_byname.gperf
+ $(GPERF) -m 10 $(srcdir)/unictype/scripts_byname.gperf > $(srcdir)/unictype/scripts_byname.h-t
+ mv $(srcdir)/unictype/scripts_byname.h-t $(srcdir)/unictype/scripts_byname.h
+BUILT_SOURCES += unictype/scripts_byname.h
+MOSTLYCLEANFILES += unictype/scripts_byname.h-t
+MAINTAINERCLEANFILES += unictype/scripts_byname.h
+EXTRA_DIST += unictype/scripts_byname.h
+
+EXTRA_DIST += unictype/scripts.h unictype/scripts_byname.gperf
+
+## end gnulib module unictype/scripts
+
+## begin gnulib module unictype/syntax-c-ident
+
+libunistring_la_SOURCES += unictype/sy_c_ident.c
+
+EXTRA_DIST += unictype/identsyntaxmap.h unictype/sy_c_ident.h
+
+## end gnulib module unictype/syntax-c-ident
+
+## begin gnulib module unictype/syntax-c-whitespace
+
+libunistring_la_SOURCES += unictype/sy_c_whitespace.c
+
+## end gnulib module unictype/syntax-c-whitespace
+
+## begin gnulib module unictype/syntax-java-ident
+
+libunistring_la_SOURCES += unictype/sy_java_ident.c
+
+EXTRA_DIST += unictype/identsyntaxmap.h unictype/sy_java_ident.h
+
+## end gnulib module unictype/syntax-java-ident
+
+## begin gnulib module unictype/syntax-java-whitespace
+
+libunistring_la_SOURCES += unictype/sy_java_whitespace.c
+
+## end gnulib module unictype/syntax-java-whitespace
+
+## begin gnulib module unilbrk/base
+
+
+EXTRA_DIST += unilbrk.h
+
+## end gnulib module unilbrk/base
+
+## begin gnulib module unilbrk/tables
+
+libunistring_la_SOURCES += unilbrk/lbrktables.c
+
+EXTRA_DIST += unilbrk/lbrkprop1.h unilbrk/lbrkprop2.h unilbrk/lbrktables.h
+
+## end gnulib module unilbrk/tables
+
+## begin gnulib module unilbrk/u16-possible-linebreaks
+
+libunistring_la_SOURCES += unilbrk/u16-possible-linebreaks.c
+
+EXTRA_DIST += uniwidth/cjk.h
+
+## end gnulib module unilbrk/u16-possible-linebreaks
+
+## begin gnulib module unilbrk/u16-width-linebreaks
+
+libunistring_la_SOURCES += unilbrk/u16-width-linebreaks.c
+
+## end gnulib module unilbrk/u16-width-linebreaks
+
+## begin gnulib module unilbrk/u32-possible-linebreaks
+
+libunistring_la_SOURCES += unilbrk/u32-possible-linebreaks.c
+
+EXTRA_DIST += uniwidth/cjk.h
+
+## end gnulib module unilbrk/u32-possible-linebreaks
+
+## begin gnulib module unilbrk/u32-width-linebreaks
+
+libunistring_la_SOURCES += unilbrk/u32-width-linebreaks.c
+
+## end gnulib module unilbrk/u32-width-linebreaks
+
+## begin gnulib module unilbrk/u8-possible-linebreaks
+
+libunistring_la_SOURCES += unilbrk/u8-possible-linebreaks.c
+
+EXTRA_DIST += uniwidth/cjk.h
+
+## end gnulib module unilbrk/u8-possible-linebreaks
+
+## begin gnulib module unilbrk/u8-width-linebreaks
+
+libunistring_la_SOURCES += unilbrk/u8-width-linebreaks.c
+
+## end gnulib module unilbrk/u8-width-linebreaks
+
+## begin gnulib module unilbrk/ulc-common
+
+libunistring_la_SOURCES += unilbrk/ulc-common.c
+
+EXTRA_DIST += unilbrk/ulc-common.h
+
+## end gnulib module unilbrk/ulc-common
+
+## begin gnulib module unilbrk/ulc-possible-linebreaks
+
+libunistring_la_SOURCES += unilbrk/ulc-possible-linebreaks.c
+
+## end gnulib module unilbrk/ulc-possible-linebreaks
+
+## begin gnulib module unilbrk/ulc-width-linebreaks
+
+libunistring_la_SOURCES += unilbrk/ulc-width-linebreaks.c
+
+## end gnulib module unilbrk/ulc-width-linebreaks
+
+## begin gnulib module uniname/base
+
+
+EXTRA_DIST += uniname.h
+
+## end gnulib module uniname/base
+
+## begin gnulib module uniname/uniname
+
+libunistring_la_SOURCES += uniname/uniname.c
+
+EXTRA_DIST += uniname/gen-uninames.lisp uniname/uninames.h
+
+## end gnulib module uniname/uniname
+
+## begin gnulib module uninorm/base
+
+
+EXTRA_DIST += uninorm.h
+
+## end gnulib module uninorm/base
+
+## begin gnulib module uninorm/canonical-decomposition
+
+libunistring_la_SOURCES += uninorm/canonical-decomposition.c
+
+## end gnulib module uninorm/canonical-decomposition
+
+## begin gnulib module uninorm/compat-decomposition
+
+libunistring_la_SOURCES += uninorm/compat-decomposition.c
+
+EXTRA_DIST += uninorm/decompose-internal.h
+
+## end gnulib module uninorm/compat-decomposition
+
+## begin gnulib module uninorm/composition
+
+libunistring_la_SOURCES += uninorm/composition.c
+
+uninorm/composition-table.h: $(srcdir)/uninorm/composition-table.gperf
+ $(GPERF) -m 1 $(srcdir)/uninorm/composition-table.gperf > $(srcdir)/uninorm/composition-table.h-t
+ mv $(srcdir)/uninorm/composition-table.h-t $(srcdir)/uninorm/composition-table.h
+BUILT_SOURCES += uninorm/composition-table.h
+MOSTLYCLEANFILES += uninorm/composition-table.h-t
+MAINTAINERCLEANFILES += uninorm/composition-table.h
+EXTRA_DIST += uninorm/composition-table.h
+
+EXTRA_DIST += uninorm/composition-table.gperf
+
+## end gnulib module uninorm/composition
+
+## begin gnulib module uninorm/decompose-internal
+
+libunistring_la_SOURCES += uninorm/decompose-internal.c
+
+EXTRA_DIST += uninorm/decompose-internal.h
+
+## end gnulib module uninorm/decompose-internal
+
+## begin gnulib module uninorm/decomposing-form
+
+libunistring_la_SOURCES += uninorm/decomposing-form.c
+
+EXTRA_DIST += uninorm/normalize-internal.h
+
+## end gnulib module uninorm/decomposing-form
+
+## begin gnulib module uninorm/decomposition
+
+libunistring_la_SOURCES += uninorm/decomposition.c
+
+## end gnulib module uninorm/decomposition
+
+## begin gnulib module uninorm/decomposition-table
+
+libunistring_la_SOURCES += uninorm/decomposition-table.c
+
+EXTRA_DIST += uninorm/decomposition-table.h uninorm/decomposition-table1.h uninorm/decomposition-table2.h
+
+## end gnulib module uninorm/decomposition-table
+
+## begin gnulib module uninorm/filter
+
+libunistring_la_SOURCES += uninorm/uninorm-filter.c
+
+EXTRA_DIST += uninorm/normalize-internal.h
+
+## end gnulib module uninorm/filter
+
+## begin gnulib module uninorm/nfc
+
+libunistring_la_SOURCES += uninorm/nfc.c
+
+EXTRA_DIST += uninorm/normalize-internal.h
+
+## end gnulib module uninorm/nfc
+
+## begin gnulib module uninorm/nfd
+
+libunistring_la_SOURCES += uninorm/nfd.c
+
+EXTRA_DIST += uninorm/normalize-internal.h
+
+## end gnulib module uninorm/nfd
+
+## begin gnulib module uninorm/nfkc
+
+libunistring_la_SOURCES += uninorm/nfkc.c
+
+EXTRA_DIST += uninorm/normalize-internal.h
+
+## end gnulib module uninorm/nfkc
+
+## begin gnulib module uninorm/nfkd
+
+libunistring_la_SOURCES += uninorm/nfkd.c
+
+EXTRA_DIST += uninorm/normalize-internal.h
+
+## end gnulib module uninorm/nfkd
+
+## begin gnulib module uninorm/u16-normalize
+
+libunistring_la_SOURCES += uninorm/u16-normalize.c
+
+EXTRA_DIST += uninorm/normalize-internal.h uninorm/u-normalize-internal.h
+
+## end gnulib module uninorm/u16-normalize
+
+## begin gnulib module uninorm/u16-normcmp
+
+libunistring_la_SOURCES += uninorm/u16-normcmp.c
+
+EXTRA_DIST += uninorm/u-normcmp.h
+
+## end gnulib module uninorm/u16-normcmp
+
+## begin gnulib module uninorm/u16-normcoll
+
+libunistring_la_SOURCES += uninorm/u16-normcoll.c
+
+EXTRA_DIST += uninorm/u-normcoll.h
+
+## end gnulib module uninorm/u16-normcoll
+
+## begin gnulib module uninorm/u16-normxfrm
+
+libunistring_la_SOURCES += uninorm/u16-normxfrm.c
+
+EXTRA_DIST += uninorm/u-normxfrm.h
+
+## end gnulib module uninorm/u16-normxfrm
+
+## begin gnulib module uninorm/u32-normalize
+
+libunistring_la_SOURCES += uninorm/u32-normalize.c
+
+EXTRA_DIST += uninorm/normalize-internal.h uninorm/u-normalize-internal.h
+
+## end gnulib module uninorm/u32-normalize
+
+## begin gnulib module uninorm/u32-normcmp
+
+libunistring_la_SOURCES += uninorm/u32-normcmp.c
+
+EXTRA_DIST += uninorm/u-normcmp.h
+
+## end gnulib module uninorm/u32-normcmp
+
+## begin gnulib module uninorm/u32-normcoll
+
+libunistring_la_SOURCES += uninorm/u32-normcoll.c
+
+EXTRA_DIST += uninorm/u-normcoll.h
+
+## end gnulib module uninorm/u32-normcoll
+
+## begin gnulib module uninorm/u32-normxfrm
+
+libunistring_la_SOURCES += uninorm/u32-normxfrm.c
+
+EXTRA_DIST += uninorm/u-normxfrm.h
+
+## end gnulib module uninorm/u32-normxfrm
+
+## begin gnulib module uninorm/u8-normalize
+
+libunistring_la_SOURCES += uninorm/u8-normalize.c
+
+EXTRA_DIST += uninorm/normalize-internal.h uninorm/u-normalize-internal.h
+
+## end gnulib module uninorm/u8-normalize
+
+## begin gnulib module uninorm/u8-normcmp
+
+libunistring_la_SOURCES += uninorm/u8-normcmp.c
+
+EXTRA_DIST += uninorm/u-normcmp.h
+
+## end gnulib module uninorm/u8-normcmp
+
+## begin gnulib module uninorm/u8-normcoll
+
+libunistring_la_SOURCES += uninorm/u8-normcoll.c
+
+EXTRA_DIST += uninorm/u-normcoll.h
+
+## end gnulib module uninorm/u8-normcoll
+
+## begin gnulib module uninorm/u8-normxfrm
+
+libunistring_la_SOURCES += uninorm/u8-normxfrm.c
+
+EXTRA_DIST += uninorm/u-normxfrm.h
+
+## end gnulib module uninorm/u8-normxfrm
+
+## begin gnulib module unistd
+
+BUILT_SOURCES += unistd.h
+
+# We need the following in order to create an empty placeholder for
+# <unistd.h> when the system doesn't have one.
+unistd.h: unistd.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
+ -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
+ -e 's|@''GNULIB_CLOSE''@|$(GNULIB_CLOSE)|g' \
+ -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \
+ -e 's|@''GNULIB_ENVIRON''@|$(GNULIB_ENVIRON)|g' \
+ -e 's|@''GNULIB_EUIDACCESS''@|$(GNULIB_EUIDACCESS)|g' \
+ -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \
+ -e 's|@''GNULIB_FSYNC''@|$(GNULIB_FSYNC)|g' \
+ -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
+ -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
+ -e 's|@''GNULIB_GETDOMAINNAME''@|$(GNULIB_GETDOMAINNAME)|g' \
+ -e 's|@''GNULIB_GETDTABLESIZE''@|$(GNULIB_GETDTABLESIZE)|g' \
+ -e 's|@''GNULIB_GETHOSTNAME''@|$(GNULIB_GETHOSTNAME)|g' \
+ -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \
+ -e 's|@''GNULIB_GETPAGESIZE''@|$(GNULIB_GETPAGESIZE)|g' \
+ -e 's|@''GNULIB_GETUSERSHELL''@|$(GNULIB_GETUSERSHELL)|g' \
+ -e 's|@''GNULIB_LCHOWN''@|$(GNULIB_LCHOWN)|g' \
+ -e 's|@''GNULIB_LINK''@|$(GNULIB_LINK)|g' \
+ -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \
+ -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
+ -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
+ -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \
+ -e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|g' \
+ -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
+ -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
+ -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
+ -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
+ -e 's|@''HAVE_GETDOMAINNAME''@|$(HAVE_GETDOMAINNAME)|g' \
+ -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \
+ -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \
+ -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
+ -e 's|@''HAVE_GETUSERSHELL''@|$(HAVE_GETUSERSHELL)|g' \
+ -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \
+ -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
+ -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
+ -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
+ -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+ -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
+ -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
+ -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
+ -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
+ -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \
+ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
+ -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \
+ -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \
+ -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
+ -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \
+ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/unistd.in.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += unistd.h unistd.h-t
+
+EXTRA_DIST += unistd.in.h
+
+## end gnulib module unistd
+
+## begin gnulib module unistdio/base
+
+
+EXTRA_DIST += unistdio.h
+
+## end gnulib module unistdio/base
+
+## begin gnulib module unistdio/u-printf-args
+
+libunistring_la_SOURCES += unistdio/u-printf-args.c
+
+EXTRA_DIST += printf-args.c printf-args.h unistdio/u-printf-args.h
+
+EXTRA_libunistring_la_SOURCES += printf-args.c
+
+## end gnulib module unistdio/u-printf-args
+
+## begin gnulib module unistdio/u16-asnprintf
+
+libunistring_la_SOURCES += unistdio/u16-asnprintf.c
+
+EXTRA_DIST += unistdio/u-asnprintf.h
+
+## end gnulib module unistdio/u16-asnprintf
+
+## begin gnulib module unistdio/u16-asprintf
+
+libunistring_la_SOURCES += unistdio/u16-asprintf.c
+
+EXTRA_DIST += unistdio/u-asprintf.h
+
+## end gnulib module unistdio/u16-asprintf
+
+## begin gnulib module unistdio/u16-printf-parse
+
+libunistring_la_SOURCES += unistdio/u16-printf-parse.c
+
+EXTRA_DIST += printf-parse.c printf-parse.h unistdio/u-printf-parse.h
+
+EXTRA_libunistring_la_SOURCES += printf-parse.c
+
+## end gnulib module unistdio/u16-printf-parse
+
+## begin gnulib module unistdio/u16-snprintf
+
+libunistring_la_SOURCES += unistdio/u16-snprintf.c
+
+EXTRA_DIST += unistdio/u-snprintf.h
+
+## end gnulib module unistdio/u16-snprintf
+
+## begin gnulib module unistdio/u16-sprintf
+
+libunistring_la_SOURCES += unistdio/u16-sprintf.c
+
+EXTRA_DIST += unistdio/u-sprintf.h
+
+## end gnulib module unistdio/u16-sprintf
+
+## begin gnulib module unistdio/u16-u16-asnprintf
+
+libunistring_la_SOURCES += unistdio/u16-u16-asnprintf.c
+
+EXTRA_DIST += unistdio/u-asnprintf.h
+
+## end gnulib module unistdio/u16-u16-asnprintf
+
+## begin gnulib module unistdio/u16-u16-asprintf
+
+libunistring_la_SOURCES += unistdio/u16-u16-asprintf.c
+
+EXTRA_DIST += unistdio/u-asprintf.h
+
+## end gnulib module unistdio/u16-u16-asprintf
+
+## begin gnulib module unistdio/u16-u16-snprintf
+
+libunistring_la_SOURCES += unistdio/u16-u16-snprintf.c
+
+EXTRA_DIST += unistdio/u-snprintf.h
+
+## end gnulib module unistdio/u16-u16-snprintf
+
+## begin gnulib module unistdio/u16-u16-sprintf
+
+libunistring_la_SOURCES += unistdio/u16-u16-sprintf.c
+
+EXTRA_DIST += unistdio/u-sprintf.h
+
+## end gnulib module unistdio/u16-u16-sprintf
+
+## begin gnulib module unistdio/u16-u16-vasnprintf
+
+libunistring_la_SOURCES += unistdio/u16-u16-vasnprintf.c
+
+EXTRA_DIST += vasnprintf.c
+
+EXTRA_libunistring_la_SOURCES += vasnprintf.c
+
+## end gnulib module unistdio/u16-u16-vasnprintf
+
+## begin gnulib module unistdio/u16-u16-vasprintf
+
+libunistring_la_SOURCES += unistdio/u16-u16-vasprintf.c
+
+EXTRA_DIST += unistdio/u-vasprintf.h
+
+## end gnulib module unistdio/u16-u16-vasprintf
+
+## begin gnulib module unistdio/u16-u16-vsnprintf
+
+libunistring_la_SOURCES += unistdio/u16-u16-vsnprintf.c
+
+EXTRA_DIST += unistdio/u-vsnprintf.h
+
+## end gnulib module unistdio/u16-u16-vsnprintf
+
+## begin gnulib module unistdio/u16-u16-vsprintf
+
+libunistring_la_SOURCES += unistdio/u16-u16-vsprintf.c
+
+EXTRA_DIST += unistdio/u-vsprintf.h
+
+## end gnulib module unistdio/u16-u16-vsprintf
+
+## begin gnulib module unistdio/u16-vasnprintf
+
+libunistring_la_SOURCES += unistdio/u16-vasnprintf.c
+
+EXTRA_DIST += vasnprintf.c
+
+EXTRA_libunistring_la_SOURCES += vasnprintf.c
+
+## end gnulib module unistdio/u16-vasnprintf
+
+## begin gnulib module unistdio/u16-vasprintf
+
+libunistring_la_SOURCES += unistdio/u16-vasprintf.c
+
+EXTRA_DIST += unistdio/u-vasprintf.h
+
+## end gnulib module unistdio/u16-vasprintf
+
+## begin gnulib module unistdio/u16-vsnprintf
+
+libunistring_la_SOURCES += unistdio/u16-vsnprintf.c
+
+EXTRA_DIST += unistdio/u-vsnprintf.h
+
+## end gnulib module unistdio/u16-vsnprintf
+
+## begin gnulib module unistdio/u16-vsprintf
+
+libunistring_la_SOURCES += unistdio/u16-vsprintf.c
+
+EXTRA_DIST += unistdio/u-vsprintf.h
+
+## end gnulib module unistdio/u16-vsprintf
+
+## begin gnulib module unistdio/u32-asnprintf
+
+libunistring_la_SOURCES += unistdio/u32-asnprintf.c
+
+EXTRA_DIST += unistdio/u-asnprintf.h
+
+## end gnulib module unistdio/u32-asnprintf
+
+## begin gnulib module unistdio/u32-asprintf
+
+libunistring_la_SOURCES += unistdio/u32-asprintf.c
+
+EXTRA_DIST += unistdio/u-asprintf.h
+
+## end gnulib module unistdio/u32-asprintf
+
+## begin gnulib module unistdio/u32-printf-parse
+
+libunistring_la_SOURCES += unistdio/u32-printf-parse.c
+
+EXTRA_DIST += printf-parse.c printf-parse.h unistdio/u-printf-parse.h
+
+EXTRA_libunistring_la_SOURCES += printf-parse.c
+
+## end gnulib module unistdio/u32-printf-parse
+
+## begin gnulib module unistdio/u32-snprintf
+
+libunistring_la_SOURCES += unistdio/u32-snprintf.c
+
+EXTRA_DIST += unistdio/u-snprintf.h
+
+## end gnulib module unistdio/u32-snprintf
+
+## begin gnulib module unistdio/u32-sprintf
+
+libunistring_la_SOURCES += unistdio/u32-sprintf.c
+
+EXTRA_DIST += unistdio/u-sprintf.h
+
+## end gnulib module unistdio/u32-sprintf
+
+## begin gnulib module unistdio/u32-u32-asnprintf
+
+libunistring_la_SOURCES += unistdio/u32-u32-asnprintf.c
+
+EXTRA_DIST += unistdio/u-asnprintf.h
+
+## end gnulib module unistdio/u32-u32-asnprintf
+
+## begin gnulib module unistdio/u32-u32-asprintf
+
+libunistring_la_SOURCES += unistdio/u32-u32-asprintf.c
+
+EXTRA_DIST += unistdio/u-asprintf.h
+
+## end gnulib module unistdio/u32-u32-asprintf
+
+## begin gnulib module unistdio/u32-u32-snprintf
+
+libunistring_la_SOURCES += unistdio/u32-u32-snprintf.c
+
+EXTRA_DIST += unistdio/u-snprintf.h
+
+## end gnulib module unistdio/u32-u32-snprintf
+
+## begin gnulib module unistdio/u32-u32-sprintf
+
+libunistring_la_SOURCES += unistdio/u32-u32-sprintf.c
+
+EXTRA_DIST += unistdio/u-sprintf.h
+
+## end gnulib module unistdio/u32-u32-sprintf
+
+## begin gnulib module unistdio/u32-u32-vasnprintf
+
+libunistring_la_SOURCES += unistdio/u32-u32-vasnprintf.c
+
+EXTRA_DIST += vasnprintf.c
+
+EXTRA_libunistring_la_SOURCES += vasnprintf.c
+
+## end gnulib module unistdio/u32-u32-vasnprintf
+
+## begin gnulib module unistdio/u32-u32-vasprintf
+
+libunistring_la_SOURCES += unistdio/u32-u32-vasprintf.c
+
+EXTRA_DIST += unistdio/u-vasprintf.h
+
+## end gnulib module unistdio/u32-u32-vasprintf
+
+## begin gnulib module unistdio/u32-u32-vsnprintf
+
+libunistring_la_SOURCES += unistdio/u32-u32-vsnprintf.c
+
+EXTRA_DIST += unistdio/u-vsnprintf.h
+
+## end gnulib module unistdio/u32-u32-vsnprintf
+
+## begin gnulib module unistdio/u32-u32-vsprintf
+
+libunistring_la_SOURCES += unistdio/u32-u32-vsprintf.c
+
+EXTRA_DIST += unistdio/u-vsprintf.h
+
+## end gnulib module unistdio/u32-u32-vsprintf
+
+## begin gnulib module unistdio/u32-vasnprintf
+
+libunistring_la_SOURCES += unistdio/u32-vasnprintf.c
+
+EXTRA_DIST += vasnprintf.c
+
+EXTRA_libunistring_la_SOURCES += vasnprintf.c
+
+## end gnulib module unistdio/u32-vasnprintf
+
+## begin gnulib module unistdio/u32-vasprintf
+
+libunistring_la_SOURCES += unistdio/u32-vasprintf.c
+
+EXTRA_DIST += unistdio/u-vasprintf.h
+
+## end gnulib module unistdio/u32-vasprintf
+
+## begin gnulib module unistdio/u32-vsnprintf
+
+libunistring_la_SOURCES += unistdio/u32-vsnprintf.c
+
+EXTRA_DIST += unistdio/u-vsnprintf.h
+
+## end gnulib module unistdio/u32-vsnprintf
+
+## begin gnulib module unistdio/u32-vsprintf
+
+libunistring_la_SOURCES += unistdio/u32-vsprintf.c
+
+EXTRA_DIST += unistdio/u-vsprintf.h
+
+## end gnulib module unistdio/u32-vsprintf
+
+## begin gnulib module unistdio/u8-asnprintf
+
+libunistring_la_SOURCES += unistdio/u8-asnprintf.c
+
+EXTRA_DIST += unistdio/u-asnprintf.h
+
+## end gnulib module unistdio/u8-asnprintf
+
+## begin gnulib module unistdio/u8-asprintf
+
+libunistring_la_SOURCES += unistdio/u8-asprintf.c
+
+EXTRA_DIST += unistdio/u-asprintf.h
+
+## end gnulib module unistdio/u8-asprintf
+
+## begin gnulib module unistdio/u8-printf-parse
+
+libunistring_la_SOURCES += unistdio/u8-printf-parse.c
+
+EXTRA_DIST += printf-parse.c printf-parse.h unistdio/u-printf-parse.h
+
+EXTRA_libunistring_la_SOURCES += printf-parse.c
+
+## end gnulib module unistdio/u8-printf-parse
+
+## begin gnulib module unistdio/u8-snprintf
+
+libunistring_la_SOURCES += unistdio/u8-snprintf.c
+
+EXTRA_DIST += unistdio/u-snprintf.h
+
+## end gnulib module unistdio/u8-snprintf
+
+## begin gnulib module unistdio/u8-sprintf
+
+libunistring_la_SOURCES += unistdio/u8-sprintf.c
+
+EXTRA_DIST += unistdio/u-sprintf.h
+
+## end gnulib module unistdio/u8-sprintf
+
+## begin gnulib module unistdio/u8-u8-asnprintf
+
+libunistring_la_SOURCES += unistdio/u8-u8-asnprintf.c
+
+EXTRA_DIST += unistdio/u-asnprintf.h
+
+## end gnulib module unistdio/u8-u8-asnprintf
+
+## begin gnulib module unistdio/u8-u8-asprintf
+
+libunistring_la_SOURCES += unistdio/u8-u8-asprintf.c
+
+EXTRA_DIST += unistdio/u-asprintf.h
+
+## end gnulib module unistdio/u8-u8-asprintf
+
+## begin gnulib module unistdio/u8-u8-snprintf
+
+libunistring_la_SOURCES += unistdio/u8-u8-snprintf.c
+
+EXTRA_DIST += unistdio/u-snprintf.h
+
+## end gnulib module unistdio/u8-u8-snprintf
+
+## begin gnulib module unistdio/u8-u8-sprintf
+
+libunistring_la_SOURCES += unistdio/u8-u8-sprintf.c
+
+EXTRA_DIST += unistdio/u-sprintf.h
+
+## end gnulib module unistdio/u8-u8-sprintf
+
+## begin gnulib module unistdio/u8-u8-vasnprintf
+
+libunistring_la_SOURCES += unistdio/u8-u8-vasnprintf.c
+
+EXTRA_DIST += vasnprintf.c
+
+EXTRA_libunistring_la_SOURCES += vasnprintf.c
+
+## end gnulib module unistdio/u8-u8-vasnprintf
+
+## begin gnulib module unistdio/u8-u8-vasprintf
+
+libunistring_la_SOURCES += unistdio/u8-u8-vasprintf.c
+
+EXTRA_DIST += unistdio/u-vasprintf.h
+
+## end gnulib module unistdio/u8-u8-vasprintf
+
+## begin gnulib module unistdio/u8-u8-vsnprintf
+
+libunistring_la_SOURCES += unistdio/u8-u8-vsnprintf.c
+
+EXTRA_DIST += unistdio/u-vsnprintf.h
+
+## end gnulib module unistdio/u8-u8-vsnprintf
+
+## begin gnulib module unistdio/u8-u8-vsprintf
+
+libunistring_la_SOURCES += unistdio/u8-u8-vsprintf.c
+
+EXTRA_DIST += unistdio/u-vsprintf.h
+
+## end gnulib module unistdio/u8-u8-vsprintf
+
+## begin gnulib module unistdio/u8-vasnprintf
+
+libunistring_la_SOURCES += unistdio/u8-vasnprintf.c
+
+EXTRA_DIST += vasnprintf.c
+
+EXTRA_libunistring_la_SOURCES += vasnprintf.c
+
+## end gnulib module unistdio/u8-vasnprintf
+
+## begin gnulib module unistdio/u8-vasprintf
+
+libunistring_la_SOURCES += unistdio/u8-vasprintf.c
+
+EXTRA_DIST += unistdio/u-vasprintf.h
+
+## end gnulib module unistdio/u8-vasprintf
+
+## begin gnulib module unistdio/u8-vsnprintf
+
+libunistring_la_SOURCES += unistdio/u8-vsnprintf.c
+
+EXTRA_DIST += unistdio/u-vsnprintf.h
+
+## end gnulib module unistdio/u8-vsnprintf
+
+## begin gnulib module unistdio/u8-vsprintf
+
+libunistring_la_SOURCES += unistdio/u8-vsprintf.c
+
+EXTRA_DIST += unistdio/u-vsprintf.h
+
+## end gnulib module unistdio/u8-vsprintf
+
+## begin gnulib module unistdio/ulc-asnprintf
+
+libunistring_la_SOURCES += unistdio/ulc-asnprintf.c
+
+EXTRA_DIST += unistdio/u-asnprintf.h
+
+## end gnulib module unistdio/ulc-asnprintf
+
+## begin gnulib module unistdio/ulc-asprintf
+
+libunistring_la_SOURCES += unistdio/ulc-asprintf.c
+
+EXTRA_DIST += unistdio/u-asprintf.h
+
+## end gnulib module unistdio/ulc-asprintf
+
+## begin gnulib module unistdio/ulc-fprintf
+
+libunistring_la_SOURCES += unistdio/ulc-fprintf.c
+
+## end gnulib module unistdio/ulc-fprintf
+
+## begin gnulib module unistdio/ulc-printf-parse
+
+libunistring_la_SOURCES += unistdio/ulc-printf-parse.c
+
+EXTRA_DIST += printf-parse.c printf-parse.h unistdio/u-printf-parse.h
+
+EXTRA_libunistring_la_SOURCES += printf-parse.c
+
+## end gnulib module unistdio/ulc-printf-parse
+
+## begin gnulib module unistdio/ulc-snprintf
+
+libunistring_la_SOURCES += unistdio/ulc-snprintf.c
+
+EXTRA_DIST += unistdio/u-snprintf.h
+
+## end gnulib module unistdio/ulc-snprintf
+
+## begin gnulib module unistdio/ulc-sprintf
+
+libunistring_la_SOURCES += unistdio/ulc-sprintf.c
+
+EXTRA_DIST += unistdio/u-sprintf.h
+
+## end gnulib module unistdio/ulc-sprintf
+
+## begin gnulib module unistdio/ulc-vasnprintf
+
+libunistring_la_SOURCES += unistdio/ulc-vasnprintf.c
+
+EXTRA_DIST += vasnprintf.c
+
+EXTRA_libunistring_la_SOURCES += vasnprintf.c
+
+## end gnulib module unistdio/ulc-vasnprintf
+
+## begin gnulib module unistdio/ulc-vasprintf
+
+libunistring_la_SOURCES += unistdio/ulc-vasprintf.c
+
+EXTRA_DIST += unistdio/u-vasprintf.h
+
+## end gnulib module unistdio/ulc-vasprintf
+
+## begin gnulib module unistdio/ulc-vfprintf
+
+libunistring_la_SOURCES += unistdio/ulc-vfprintf.c
+
+## end gnulib module unistdio/ulc-vfprintf
+
+## begin gnulib module unistdio/ulc-vsnprintf
+
+libunistring_la_SOURCES += unistdio/ulc-vsnprintf.c
+
+EXTRA_DIST += unistdio/u-vsnprintf.h
+
+## end gnulib module unistdio/ulc-vsnprintf
+
+## begin gnulib module unistdio/ulc-vsprintf
+
+libunistring_la_SOURCES += unistdio/ulc-vsprintf.c
+
+EXTRA_DIST += unistdio/u-vsprintf.h
+
+## end gnulib module unistdio/ulc-vsprintf
+
+## begin gnulib module unistr/base
+
+
+EXTRA_DIST += unistr.h
+
+## end gnulib module unistr/base
+
+## begin gnulib module unistr/u16-check
+
+libunistring_la_SOURCES += unistr/u16-check.c
+
+## end gnulib module unistr/u16-check
+
+## begin gnulib module unistr/u16-chr
+
+libunistring_la_SOURCES += unistr/u16-chr.c
+
+## end gnulib module unistr/u16-chr
+
+## begin gnulib module unistr/u16-cmp
+
+libunistring_la_SOURCES += unistr/u16-cmp.c
+
+## end gnulib module unistr/u16-cmp
+
+## begin gnulib module unistr/u16-cmp2
+
+libunistring_la_SOURCES += unistr/u16-cmp2.c
+
+EXTRA_DIST += unistr/u-cmp2.h
+
+## end gnulib module unistr/u16-cmp2
+
+## begin gnulib module unistr/u16-cpy
+
+libunistring_la_SOURCES += unistr/u16-cpy.c
+
+EXTRA_DIST += unistr/u-cpy.h
+
+## end gnulib module unistr/u16-cpy
+
+## begin gnulib module unistr/u16-cpy-alloc
+
+libunistring_la_SOURCES += unistr/u16-cpy-alloc.c
+
+EXTRA_DIST += unistr/u-cpy-alloc.h
+
+## end gnulib module unistr/u16-cpy-alloc
+
+## begin gnulib module unistr/u16-endswith
+
+libunistring_la_SOURCES += unistr/u16-endswith.c
+
+EXTRA_DIST += unistr/u-endswith.h
+
+## end gnulib module unistr/u16-endswith
+
+## begin gnulib module unistr/u16-mblen
+
+libunistring_la_SOURCES += unistr/u16-mblen.c
+
+## end gnulib module unistr/u16-mblen
+
+## begin gnulib module unistr/u16-mbsnlen
+
+libunistring_la_SOURCES += unistr/u16-mbsnlen.c
+
+## end gnulib module unistr/u16-mbsnlen
+
+## begin gnulib module unistr/u16-mbtouc
+
+libunistring_la_SOURCES += unistr/u16-mbtouc.c unistr/u16-mbtouc-aux.c
+
+## end gnulib module unistr/u16-mbtouc
+
+## begin gnulib module unistr/u16-mbtouc-unsafe
+
+libunistring_la_SOURCES += unistr/u16-mbtouc-unsafe.c unistr/u16-mbtouc-unsafe-aux.c
+
+## end gnulib module unistr/u16-mbtouc-unsafe
+
+## begin gnulib module unistr/u16-mbtoucr
+
+libunistring_la_SOURCES += unistr/u16-mbtoucr.c
+
+## end gnulib module unistr/u16-mbtoucr
+
+## begin gnulib module unistr/u16-move
+
+libunistring_la_SOURCES += unistr/u16-move.c
+
+EXTRA_DIST += unistr/u-move.h
+
+## end gnulib module unistr/u16-move
+
+## begin gnulib module unistr/u16-next
+
+libunistring_la_SOURCES += unistr/u16-next.c
+
+## end gnulib module unistr/u16-next
+
+## begin gnulib module unistr/u16-prev
+
+libunistring_la_SOURCES += unistr/u16-prev.c
+
+## end gnulib module unistr/u16-prev
+
+## begin gnulib module unistr/u16-set
+
+libunistring_la_SOURCES += unistr/u16-set.c
+
+EXTRA_DIST += unistr/u-set.h
+
+## end gnulib module unistr/u16-set
+
+## begin gnulib module unistr/u16-startswith
+
+libunistring_la_SOURCES += unistr/u16-startswith.c
+
+EXTRA_DIST += unistr/u-startswith.h
+
+## end gnulib module unistr/u16-startswith
+
+## begin gnulib module unistr/u16-stpcpy
+
+libunistring_la_SOURCES += unistr/u16-stpcpy.c
+
+EXTRA_DIST += unistr/u-stpcpy.h
+
+## end gnulib module unistr/u16-stpcpy
+
+## begin gnulib module unistr/u16-stpncpy
+
+libunistring_la_SOURCES += unistr/u16-stpncpy.c
+
+EXTRA_DIST += unistr/u-stpncpy.h
+
+## end gnulib module unistr/u16-stpncpy
+
+## begin gnulib module unistr/u16-strcat
+
+libunistring_la_SOURCES += unistr/u16-strcat.c
+
+EXTRA_DIST += unistr/u-strcat.h
+
+## end gnulib module unistr/u16-strcat
+
+## begin gnulib module unistr/u16-strchr
+
+libunistring_la_SOURCES += unistr/u16-strchr.c
+
+## end gnulib module unistr/u16-strchr
+
+## begin gnulib module unistr/u16-strcmp
+
+libunistring_la_SOURCES += unistr/u16-strcmp.c
+
+## end gnulib module unistr/u16-strcmp
+
+## begin gnulib module unistr/u16-strcoll
+
+libunistring_la_SOURCES += unistr/u16-strcoll.c
+
+EXTRA_DIST += unistr/u-strcoll.h
+
+## end gnulib module unistr/u16-strcoll
+
+## begin gnulib module unistr/u16-strcpy
+
+libunistring_la_SOURCES += unistr/u16-strcpy.c
+
+EXTRA_DIST += unistr/u-strcpy.h
+
+## end gnulib module unistr/u16-strcpy
+
+## begin gnulib module unistr/u16-strcspn
+
+libunistring_la_SOURCES += unistr/u16-strcspn.c
+
+EXTRA_DIST += unistr/u-strcspn.h
+
+## end gnulib module unistr/u16-strcspn
+
+## begin gnulib module unistr/u16-strdup
+
+libunistring_la_SOURCES += unistr/u16-strdup.c
+
+EXTRA_DIST += unistr/u-strdup.h
+
+## end gnulib module unistr/u16-strdup
+
+## begin gnulib module unistr/u16-strlen
+
+libunistring_la_SOURCES += unistr/u16-strlen.c
+
+EXTRA_DIST += unistr/u-strlen.h
+
+## end gnulib module unistr/u16-strlen
+
+## begin gnulib module unistr/u16-strmblen
+
+libunistring_la_SOURCES += unistr/u16-strmblen.c
+
+## end gnulib module unistr/u16-strmblen
+
+## begin gnulib module unistr/u16-strmbtouc
+
+libunistring_la_SOURCES += unistr/u16-strmbtouc.c
+
+## end gnulib module unistr/u16-strmbtouc
+
+## begin gnulib module unistr/u16-strncat
+
+libunistring_la_SOURCES += unistr/u16-strncat.c
+
+EXTRA_DIST += unistr/u-strncat.h
+
+## end gnulib module unistr/u16-strncat
+
+## begin gnulib module unistr/u16-strncmp
+
+libunistring_la_SOURCES += unistr/u16-strncmp.c
+
+## end gnulib module unistr/u16-strncmp
+
+## begin gnulib module unistr/u16-strncpy
+
+libunistring_la_SOURCES += unistr/u16-strncpy.c
+
+EXTRA_DIST += unistr/u-strncpy.h
+
+## end gnulib module unistr/u16-strncpy
+
+## begin gnulib module unistr/u16-strnlen
+
+libunistring_la_SOURCES += unistr/u16-strnlen.c
+
+EXTRA_DIST += unistr/u-strnlen.h
+
+## end gnulib module unistr/u16-strnlen
+
+## begin gnulib module unistr/u16-strpbrk
+
+libunistring_la_SOURCES += unistr/u16-strpbrk.c
+
+EXTRA_DIST += unistr/u-strpbrk.h
+
+## end gnulib module unistr/u16-strpbrk
+
+## begin gnulib module unistr/u16-strrchr
+
+libunistring_la_SOURCES += unistr/u16-strrchr.c
+
+## end gnulib module unistr/u16-strrchr
+
+## begin gnulib module unistr/u16-strspn
+
+libunistring_la_SOURCES += unistr/u16-strspn.c
+
+EXTRA_DIST += unistr/u-strspn.h
+
+## end gnulib module unistr/u16-strspn
+
+## begin gnulib module unistr/u16-strstr
+
+libunistring_la_SOURCES += unistr/u16-strstr.c
+
+EXTRA_DIST += unistr/u-strstr.h
+
+## end gnulib module unistr/u16-strstr
+
+## begin gnulib module unistr/u16-strtok
+
+libunistring_la_SOURCES += unistr/u16-strtok.c
+
+EXTRA_DIST += unistr/u-strtok.h
+
+## end gnulib module unistr/u16-strtok
+
+## begin gnulib module unistr/u16-to-u32
+
+libunistring_la_SOURCES += unistr/u16-to-u32.c
+
+## end gnulib module unistr/u16-to-u32
+
+## begin gnulib module unistr/u16-to-u8
+
+libunistring_la_SOURCES += unistr/u16-to-u8.c
+
+## end gnulib module unistr/u16-to-u8
+
+## begin gnulib module unistr/u16-uctomb
+
+libunistring_la_SOURCES += unistr/u16-uctomb.c unistr/u16-uctomb-aux.c
+
+## end gnulib module unistr/u16-uctomb
+
+## begin gnulib module unistr/u32-check
+
+libunistring_la_SOURCES += unistr/u32-check.c
+
+## end gnulib module unistr/u32-check
+
+## begin gnulib module unistr/u32-chr
+
+libunistring_la_SOURCES += unistr/u32-chr.c
+
+## end gnulib module unistr/u32-chr
+
+## begin gnulib module unistr/u32-cmp
+
+libunistring_la_SOURCES += unistr/u32-cmp.c
+
+## end gnulib module unistr/u32-cmp
+
+## begin gnulib module unistr/u32-cmp2
+
+libunistring_la_SOURCES += unistr/u32-cmp2.c
+
+EXTRA_DIST += unistr/u-cmp2.h
+
+## end gnulib module unistr/u32-cmp2
+
+## begin gnulib module unistr/u32-cpy
+
+libunistring_la_SOURCES += unistr/u32-cpy.c
+
+EXTRA_DIST += unistr/u-cpy.h
+
+## end gnulib module unistr/u32-cpy
+
+## begin gnulib module unistr/u32-cpy-alloc
+
+libunistring_la_SOURCES += unistr/u32-cpy-alloc.c
+
+EXTRA_DIST += unistr/u-cpy-alloc.h
+
+## end gnulib module unistr/u32-cpy-alloc
+
+## begin gnulib module unistr/u32-endswith
+
+libunistring_la_SOURCES += unistr/u32-endswith.c
+
+EXTRA_DIST += unistr/u-endswith.h
+
+## end gnulib module unistr/u32-endswith
+
+## begin gnulib module unistr/u32-mblen
+
+libunistring_la_SOURCES += unistr/u32-mblen.c
+
+## end gnulib module unistr/u32-mblen
+
+## begin gnulib module unistr/u32-mbsnlen
+
+libunistring_la_SOURCES += unistr/u32-mbsnlen.c
+
+## end gnulib module unistr/u32-mbsnlen
+
+## begin gnulib module unistr/u32-mbtouc
+
+libunistring_la_SOURCES += unistr/u32-mbtouc.c
+
+## end gnulib module unistr/u32-mbtouc
+
+## begin gnulib module unistr/u32-mbtouc-unsafe
+
+libunistring_la_SOURCES += unistr/u32-mbtouc-unsafe.c
+
+## end gnulib module unistr/u32-mbtouc-unsafe
+
+## begin gnulib module unistr/u32-mbtoucr
+
+libunistring_la_SOURCES += unistr/u32-mbtoucr.c
+
+## end gnulib module unistr/u32-mbtoucr
+
+## begin gnulib module unistr/u32-move
+
+libunistring_la_SOURCES += unistr/u32-move.c
+
+EXTRA_DIST += unistr/u-move.h
+
+## end gnulib module unistr/u32-move
+
+## begin gnulib module unistr/u32-next
+
+libunistring_la_SOURCES += unistr/u32-next.c
+
+## end gnulib module unistr/u32-next
+
+## begin gnulib module unistr/u32-prev
+
+libunistring_la_SOURCES += unistr/u32-prev.c
+
+## end gnulib module unistr/u32-prev
+
+## begin gnulib module unistr/u32-set
+
+libunistring_la_SOURCES += unistr/u32-set.c
+
+EXTRA_DIST += unistr/u-set.h
+
+## end gnulib module unistr/u32-set
+
+## begin gnulib module unistr/u32-startswith
+
+libunistring_la_SOURCES += unistr/u32-startswith.c
+
+EXTRA_DIST += unistr/u-startswith.h
+
+## end gnulib module unistr/u32-startswith
+
+## begin gnulib module unistr/u32-stpcpy
+
+libunistring_la_SOURCES += unistr/u32-stpcpy.c
+
+EXTRA_DIST += unistr/u-stpcpy.h
+
+## end gnulib module unistr/u32-stpcpy
+
+## begin gnulib module unistr/u32-stpncpy
+
+libunistring_la_SOURCES += unistr/u32-stpncpy.c
+
+EXTRA_DIST += unistr/u-stpncpy.h
+
+## end gnulib module unistr/u32-stpncpy
+
+## begin gnulib module unistr/u32-strcat
+
+libunistring_la_SOURCES += unistr/u32-strcat.c
+
+EXTRA_DIST += unistr/u-strcat.h
+
+## end gnulib module unistr/u32-strcat
+
+## begin gnulib module unistr/u32-strchr
+
+libunistring_la_SOURCES += unistr/u32-strchr.c
+
+## end gnulib module unistr/u32-strchr
+
+## begin gnulib module unistr/u32-strcmp
+
+libunistring_la_SOURCES += unistr/u32-strcmp.c
+
+## end gnulib module unistr/u32-strcmp
+
+## begin gnulib module unistr/u32-strcoll
+
+libunistring_la_SOURCES += unistr/u32-strcoll.c
+
+EXTRA_DIST += unistr/u-strcoll.h
+
+## end gnulib module unistr/u32-strcoll
+
+## begin gnulib module unistr/u32-strcpy
+
+libunistring_la_SOURCES += unistr/u32-strcpy.c
+
+EXTRA_DIST += unistr/u-strcpy.h
+
+## end gnulib module unistr/u32-strcpy
+
+## begin gnulib module unistr/u32-strcspn
+
+libunistring_la_SOURCES += unistr/u32-strcspn.c
+
+## end gnulib module unistr/u32-strcspn
+
+## begin gnulib module unistr/u32-strdup
+
+libunistring_la_SOURCES += unistr/u32-strdup.c
+
+EXTRA_DIST += unistr/u-strdup.h
+
+## end gnulib module unistr/u32-strdup
+
+## begin gnulib module unistr/u32-strlen
+
+libunistring_la_SOURCES += unistr/u32-strlen.c
+
+EXTRA_DIST += unistr/u-strlen.h
+
+## end gnulib module unistr/u32-strlen
+
+## begin gnulib module unistr/u32-strmblen
+
+libunistring_la_SOURCES += unistr/u32-strmblen.c
+
+## end gnulib module unistr/u32-strmblen
+
+## begin gnulib module unistr/u32-strmbtouc
+
+libunistring_la_SOURCES += unistr/u32-strmbtouc.c
+
+## end gnulib module unistr/u32-strmbtouc
+
+## begin gnulib module unistr/u32-strncat
+
+libunistring_la_SOURCES += unistr/u32-strncat.c
+
+EXTRA_DIST += unistr/u-strncat.h
+
+## end gnulib module unistr/u32-strncat
+
+## begin gnulib module unistr/u32-strncmp
+
+libunistring_la_SOURCES += unistr/u32-strncmp.c
+
+## end gnulib module unistr/u32-strncmp
+
+## begin gnulib module unistr/u32-strncpy
+
+libunistring_la_SOURCES += unistr/u32-strncpy.c
+
+EXTRA_DIST += unistr/u-strncpy.h
+
+## end gnulib module unistr/u32-strncpy
+
+## begin gnulib module unistr/u32-strnlen
+
+libunistring_la_SOURCES += unistr/u32-strnlen.c
+
+EXTRA_DIST += unistr/u-strnlen.h
+
+## end gnulib module unistr/u32-strnlen
+
+## begin gnulib module unistr/u32-strpbrk
+
+libunistring_la_SOURCES += unistr/u32-strpbrk.c
+
+## end gnulib module unistr/u32-strpbrk
+
+## begin gnulib module unistr/u32-strrchr
+
+libunistring_la_SOURCES += unistr/u32-strrchr.c
+
+## end gnulib module unistr/u32-strrchr
+
+## begin gnulib module unistr/u32-strspn
+
+libunistring_la_SOURCES += unistr/u32-strspn.c
+
+## end gnulib module unistr/u32-strspn
+
+## begin gnulib module unistr/u32-strstr
+
+libunistring_la_SOURCES += unistr/u32-strstr.c
+
+EXTRA_DIST += unistr/u-strstr.h
+
+## end gnulib module unistr/u32-strstr
+
+## begin gnulib module unistr/u32-strtok
+
+libunistring_la_SOURCES += unistr/u32-strtok.c
+
+EXTRA_DIST += unistr/u-strtok.h
+
+## end gnulib module unistr/u32-strtok
+
+## begin gnulib module unistr/u32-to-u16
+
+libunistring_la_SOURCES += unistr/u32-to-u16.c
+
+## end gnulib module unistr/u32-to-u16
+
+## begin gnulib module unistr/u32-to-u8
+
+libunistring_la_SOURCES += unistr/u32-to-u8.c
+
+## end gnulib module unistr/u32-to-u8
+
+## begin gnulib module unistr/u32-uctomb
+
+libunistring_la_SOURCES += unistr/u32-uctomb.c
+
+## end gnulib module unistr/u32-uctomb
+
+## begin gnulib module unistr/u8-check
+
+libunistring_la_SOURCES += unistr/u8-check.c
+
+## end gnulib module unistr/u8-check
+
+## begin gnulib module unistr/u8-chr
+
+libunistring_la_SOURCES += unistr/u8-chr.c
+
+## end gnulib module unistr/u8-chr
+
+## begin gnulib module unistr/u8-cmp
+
+libunistring_la_SOURCES += unistr/u8-cmp.c
+
+## end gnulib module unistr/u8-cmp
+
+## begin gnulib module unistr/u8-cmp2
+
+libunistring_la_SOURCES += unistr/u8-cmp2.c
+
+EXTRA_DIST += unistr/u-cmp2.h
+
+## end gnulib module unistr/u8-cmp2
+
+## begin gnulib module unistr/u8-cpy
+
+libunistring_la_SOURCES += unistr/u8-cpy.c
+
+EXTRA_DIST += unistr/u-cpy.h
+
+## end gnulib module unistr/u8-cpy
+
+## begin gnulib module unistr/u8-cpy-alloc
+
+libunistring_la_SOURCES += unistr/u8-cpy-alloc.c
+
+EXTRA_DIST += unistr/u-cpy-alloc.h
+
+## end gnulib module unistr/u8-cpy-alloc
+
+## begin gnulib module unistr/u8-endswith
+
+libunistring_la_SOURCES += unistr/u8-endswith.c
+
+EXTRA_DIST += unistr/u-endswith.h
+
+## end gnulib module unistr/u8-endswith
+
+## begin gnulib module unistr/u8-mblen
+
+libunistring_la_SOURCES += unistr/u8-mblen.c
+
+## end gnulib module unistr/u8-mblen
+
+## begin gnulib module unistr/u8-mbsnlen
+
+libunistring_la_SOURCES += unistr/u8-mbsnlen.c
+
+## end gnulib module unistr/u8-mbsnlen
+
+## begin gnulib module unistr/u8-mbtouc
+
+libunistring_la_SOURCES += unistr/u8-mbtouc.c unistr/u8-mbtouc-aux.c
+
+## end gnulib module unistr/u8-mbtouc
+
+## begin gnulib module unistr/u8-mbtouc-unsafe
+
+libunistring_la_SOURCES += unistr/u8-mbtouc-unsafe.c unistr/u8-mbtouc-unsafe-aux.c
+
+## end gnulib module unistr/u8-mbtouc-unsafe
+
+## begin gnulib module unistr/u8-mbtoucr
+
+libunistring_la_SOURCES += unistr/u8-mbtoucr.c
+
+## end gnulib module unistr/u8-mbtoucr
+
+## begin gnulib module unistr/u8-move
+
+libunistring_la_SOURCES += unistr/u8-move.c
+
+EXTRA_DIST += unistr/u-move.h
+
+## end gnulib module unistr/u8-move
+
+## begin gnulib module unistr/u8-next
+
+libunistring_la_SOURCES += unistr/u8-next.c
+
+## end gnulib module unistr/u8-next
+
+## begin gnulib module unistr/u8-prev
+
+libunistring_la_SOURCES += unistr/u8-prev.c
+
+## end gnulib module unistr/u8-prev
+
+## begin gnulib module unistr/u8-set
+
+libunistring_la_SOURCES += unistr/u8-set.c
+
+## end gnulib module unistr/u8-set
+
+## begin gnulib module unistr/u8-startswith
+
+libunistring_la_SOURCES += unistr/u8-startswith.c
+
+EXTRA_DIST += unistr/u-startswith.h
+
+## end gnulib module unistr/u8-startswith
+
+## begin gnulib module unistr/u8-stpcpy
+
+libunistring_la_SOURCES += unistr/u8-stpcpy.c
+
+EXTRA_DIST += unistr/u-stpcpy.h
+
+## end gnulib module unistr/u8-stpcpy
+
+## begin gnulib module unistr/u8-stpncpy
+
+libunistring_la_SOURCES += unistr/u8-stpncpy.c
+
+EXTRA_DIST += unistr/u-stpncpy.h
+
+## end gnulib module unistr/u8-stpncpy
+
+## begin gnulib module unistr/u8-strcat
+
+libunistring_la_SOURCES += unistr/u8-strcat.c
+
+## end gnulib module unistr/u8-strcat
+
+## begin gnulib module unistr/u8-strchr
+
+libunistring_la_SOURCES += unistr/u8-strchr.c
+
+## end gnulib module unistr/u8-strchr
+
+## begin gnulib module unistr/u8-strcmp
+
+libunistring_la_SOURCES += unistr/u8-strcmp.c
+
+## end gnulib module unistr/u8-strcmp
+
+## begin gnulib module unistr/u8-strcoll
+
+libunistring_la_SOURCES += unistr/u8-strcoll.c
+
+EXTRA_DIST += unistr/u-strcoll.h
+
+## end gnulib module unistr/u8-strcoll
+
+## begin gnulib module unistr/u8-strcpy
+
+libunistring_la_SOURCES += unistr/u8-strcpy.c
+
+## end gnulib module unistr/u8-strcpy
+
+## begin gnulib module unistr/u8-strcspn
+
+libunistring_la_SOURCES += unistr/u8-strcspn.c
+
+EXTRA_DIST += unistr/u-strcspn.h
+
+## end gnulib module unistr/u8-strcspn
+
+## begin gnulib module unistr/u8-strdup
+
+libunistring_la_SOURCES += unistr/u8-strdup.c
+
+EXTRA_DIST += unistr/u-strdup.h
+
+## end gnulib module unistr/u8-strdup
+
+## begin gnulib module unistr/u8-strlen
+
+libunistring_la_SOURCES += unistr/u8-strlen.c
+
+## end gnulib module unistr/u8-strlen
+
+## begin gnulib module unistr/u8-strmblen
+
+libunistring_la_SOURCES += unistr/u8-strmblen.c
+
+## end gnulib module unistr/u8-strmblen
+
+## begin gnulib module unistr/u8-strmbtouc
+
+libunistring_la_SOURCES += unistr/u8-strmbtouc.c
+
+## end gnulib module unistr/u8-strmbtouc
+
+## begin gnulib module unistr/u8-strncat
+
+libunistring_la_SOURCES += unistr/u8-strncat.c
+
+## end gnulib module unistr/u8-strncat
+
+## begin gnulib module unistr/u8-strncmp
+
+libunistring_la_SOURCES += unistr/u8-strncmp.c
+
+## end gnulib module unistr/u8-strncmp
+
+## begin gnulib module unistr/u8-strncpy
+
+libunistring_la_SOURCES += unistr/u8-strncpy.c
+
+## end gnulib module unistr/u8-strncpy
+
+## begin gnulib module unistr/u8-strnlen
+
+libunistring_la_SOURCES += unistr/u8-strnlen.c
+
+EXTRA_DIST += unistr/u-strnlen.h
+
+## end gnulib module unistr/u8-strnlen
+
+## begin gnulib module unistr/u8-strpbrk
+
+libunistring_la_SOURCES += unistr/u8-strpbrk.c
+
+EXTRA_DIST += unistr/u-strpbrk.h
+
+## end gnulib module unistr/u8-strpbrk
+
+## begin gnulib module unistr/u8-strrchr
+
+libunistring_la_SOURCES += unistr/u8-strrchr.c
+
+## end gnulib module unistr/u8-strrchr
+
+## begin gnulib module unistr/u8-strspn
+
+libunistring_la_SOURCES += unistr/u8-strspn.c
+
+EXTRA_DIST += unistr/u-strspn.h
+
+## end gnulib module unistr/u8-strspn
+
+## begin gnulib module unistr/u8-strstr
+
+libunistring_la_SOURCES += unistr/u8-strstr.c
+
+EXTRA_DIST += unistr/u-strstr.h
+
+## end gnulib module unistr/u8-strstr
+
+## begin gnulib module unistr/u8-strtok
+
+libunistring_la_SOURCES += unistr/u8-strtok.c
+
+EXTRA_DIST += unistr/u-strtok.h
+
+## end gnulib module unistr/u8-strtok
+
+## begin gnulib module unistr/u8-to-u16
+
+libunistring_la_SOURCES += unistr/u8-to-u16.c
+
+## end gnulib module unistr/u8-to-u16
+
+## begin gnulib module unistr/u8-to-u32
+
+libunistring_la_SOURCES += unistr/u8-to-u32.c
+
+## end gnulib module unistr/u8-to-u32
+
+## begin gnulib module unistr/u8-uctomb
+
+libunistring_la_SOURCES += unistr/u8-uctomb.c unistr/u8-uctomb-aux.c
+
+## end gnulib module unistr/u8-uctomb
+
+## begin gnulib module unitypes
+
+
+EXTRA_DIST += unitypes.h
+
+## end gnulib module unitypes
+
+## begin gnulib module uniwbrk/base
+
+
+EXTRA_DIST += uniwbrk.h
+
+## end gnulib module uniwbrk/base
+
+## begin gnulib module uniwbrk/table
+
+libunistring_la_SOURCES += uniwbrk/wbrktable.c
+
+EXTRA_DIST += uniwbrk/wbrktable.h
+
+## end gnulib module uniwbrk/table
+
+## begin gnulib module uniwbrk/u16-wordbreaks
+
+libunistring_la_SOURCES += uniwbrk/u16-wordbreaks.c
+
+EXTRA_DIST += uniwbrk/u-wordbreaks.h
+
+## end gnulib module uniwbrk/u16-wordbreaks
+
+## begin gnulib module uniwbrk/u32-wordbreaks
+
+libunistring_la_SOURCES += uniwbrk/u32-wordbreaks.c
+
+EXTRA_DIST += uniwbrk/u-wordbreaks.h
+
+## end gnulib module uniwbrk/u32-wordbreaks
+
+## begin gnulib module uniwbrk/u8-wordbreaks
+
+libunistring_la_SOURCES += uniwbrk/u8-wordbreaks.c
+
+EXTRA_DIST += uniwbrk/u-wordbreaks.h
+
+## end gnulib module uniwbrk/u8-wordbreaks
+
+## begin gnulib module uniwbrk/ulc-wordbreaks
+
+libunistring_la_SOURCES += uniwbrk/ulc-wordbreaks.c
+
+## end gnulib module uniwbrk/ulc-wordbreaks
+
+## begin gnulib module uniwbrk/wordbreak-property
+
+libunistring_la_SOURCES += uniwbrk/wordbreak-property.c
+
+EXTRA_DIST += uniwbrk/wbrkprop.h
+
+## end gnulib module uniwbrk/wordbreak-property
+
+## begin gnulib module uniwidth/base
+
+
+EXTRA_DIST += localcharset.h uniwidth.h
+
+## end gnulib module uniwidth/base
+
+## begin gnulib module uniwidth/u16-strwidth
+
+libunistring_la_SOURCES += uniwidth/u16-strwidth.c
+
+## end gnulib module uniwidth/u16-strwidth
+
+## begin gnulib module uniwidth/u16-width
+
+libunistring_la_SOURCES += uniwidth/u16-width.c
+
+## end gnulib module uniwidth/u16-width
+
+## begin gnulib module uniwidth/u32-strwidth
+
+libunistring_la_SOURCES += uniwidth/u32-strwidth.c
+
+## end gnulib module uniwidth/u32-strwidth
+
+## begin gnulib module uniwidth/u32-width
+
+libunistring_la_SOURCES += uniwidth/u32-width.c
+
+## end gnulib module uniwidth/u32-width
+
+## begin gnulib module uniwidth/u8-strwidth
+
+libunistring_la_SOURCES += uniwidth/u8-strwidth.c
+
+## end gnulib module uniwidth/u8-strwidth
+
+## begin gnulib module uniwidth/u8-width
+
+libunistring_la_SOURCES += uniwidth/u8-width.c
+
+## end gnulib module uniwidth/u8-width
+
+## begin gnulib module uniwidth/width
+
+libunistring_la_SOURCES += uniwidth/width.c
+
+EXTRA_DIST += uniwidth/cjk.h
+
+## end gnulib module uniwidth/width
+
+## begin gnulib module verify
+
+libunistring_la_SOURCES += verify.h
+
+## end gnulib module verify
+
+## begin gnulib module wchar
+
+BUILT_SOURCES += $(WCHAR_H)
+
+# We need the following in order to create <wchar.h> when the system
+# version does not work standalone.
+wchar.h: wchar.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
+ -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
+ -e 's|@''GNULIB_BTOWC''@|$(GNULIB_BTOWC)|g' \
+ -e 's|@''GNULIB_WCTOB''@|$(GNULIB_WCTOB)|g' \
+ -e 's|@''GNULIB_MBSINIT''@|$(GNULIB_MBSINIT)|g' \
+ -e 's|@''GNULIB_MBRTOWC''@|$(GNULIB_MBRTOWC)|g' \
+ -e 's|@''GNULIB_MBRLEN''@|$(GNULIB_MBRLEN)|g' \
+ -e 's|@''GNULIB_MBSRTOWCS''@|$(GNULIB_MBSRTOWCS)|g' \
+ -e 's|@''GNULIB_MBSNRTOWCS''@|$(GNULIB_MBSNRTOWCS)|g' \
+ -e 's|@''GNULIB_WCRTOMB''@|$(GNULIB_WCRTOMB)|g' \
+ -e 's|@''GNULIB_WCSRTOMBS''@|$(GNULIB_WCSRTOMBS)|g' \
+ -e 's|@''GNULIB_WCSNRTOMBS''@|$(GNULIB_WCSNRTOMBS)|g' \
+ -e 's|@''GNULIB_WCWIDTH''@|$(GNULIB_WCWIDTH)|g' \
+ -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
+ -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
+ -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \
+ -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \
+ -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \
+ -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \
+ -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \
+ -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \
+ -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \
+ -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \
+ -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \
+ -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
+ -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
+ -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \
+ -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \
+ -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \
+ -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \
+ -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \
+ -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \
+ -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \
+ -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \
+ -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \
+ -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \
+ -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/wchar.in.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += wchar.h wchar.h-t
+
+EXTRA_DIST += wchar.in.h
+
+## end gnulib module wchar
+
+## begin gnulib module wctype
+
+BUILT_SOURCES += $(WCTYPE_H)
+
+# We need the following in order to create <wctype.h> when the system
+# doesn't have one that works with the given compiler.
+wctype.h: wctype.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \
+ -e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
+ -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
+ -e 's/@''REPLACE_ISWCNTRL''@/$(REPLACE_ISWCNTRL)/g' \
+ < $(srcdir)/wctype.in.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += wctype.h wctype.h-t
+
+EXTRA_DIST += wctype.in.h
+
+## end gnulib module wctype
+
+## begin gnulib module wcwidth
+
+
+EXTRA_DIST += wcwidth.c
+
+EXTRA_libunistring_la_SOURCES += wcwidth.c
+
+## end gnulib module wcwidth
+
+## begin gnulib module xsize
+
+libunistring_la_SOURCES += xsize.h
+
+## end gnulib module xsize
+
+
+mostlyclean-local: mostlyclean-generic
+ @for dir in '' $(MOSTLYCLEANDIRS); do \
+ if test -n "$$dir" && test -d $$dir; then \
+ echo "rmdir $$dir"; rmdir $$dir; \
+ fi; \
+ done; \
+ :
diff --git a/lib/Makefile.in b/lib/Makefile.in
new file mode 100644
index 00000000..a8cc5680
--- /dev/null
+++ b/lib/Makefile.in
@@ -0,0 +1,4285 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License. As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(nobase_include_HEADERS) $(noinst_HEADERS) \
+ $(srcdir)/Makefile.am $(srcdir)/Makefile.gnulib \
+ $(srcdir)/Makefile.in $(srcdir)/exported.sh.in
+@GL_COND_LIBTOOL_TRUE@am__append_1 = $(LTLIBICONV)
+
+# Tell the mingw or Cygwin linker which symbols to export.
+@WOE32DLL_TRUE@am__append_2 = ../woe32dll/unistring-exports.c
+@WOE32DLL_TRUE@am__append_3 = -Wl,--export-all-symbols
+@WOE32_TRUE@am__append_4 = libunistring.res.lo
+subdir = lib
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
+ $(top_srcdir)/gnulib-m4/alloca.m4 \
+ $(top_srcdir)/gnulib-m4/codeset.m4 \
+ $(top_srcdir)/gnulib-m4/eealloc.m4 \
+ $(top_srcdir)/gnulib-m4/environ.m4 \
+ $(top_srcdir)/gnulib-m4/errno_h.m4 \
+ $(top_srcdir)/gnulib-m4/error.m4 \
+ $(top_srcdir)/gnulib-m4/exitfail.m4 \
+ $(top_srcdir)/gnulib-m4/exponentd.m4 \
+ $(top_srcdir)/gnulib-m4/exponentf.m4 \
+ $(top_srcdir)/gnulib-m4/exponentl.m4 \
+ $(top_srcdir)/gnulib-m4/extensions.m4 \
+ $(top_srcdir)/gnulib-m4/float_h.m4 \
+ $(top_srcdir)/gnulib-m4/fpieee.m4 \
+ $(top_srcdir)/gnulib-m4/frexp.m4 \
+ $(top_srcdir)/gnulib-m4/frexpl.m4 \
+ $(top_srcdir)/gnulib-m4/getpagesize.m4 \
+ $(top_srcdir)/gnulib-m4/glibc21.m4 \
+ $(top_srcdir)/gnulib-m4/gnulib-common.m4 \
+ $(top_srcdir)/gnulib-m4/gnulib-comp.m4 \
+ $(top_srcdir)/gnulib-m4/iconv.m4 \
+ $(top_srcdir)/gnulib-m4/iconv_h.m4 \
+ $(top_srcdir)/gnulib-m4/iconv_open.m4 \
+ $(top_srcdir)/gnulib-m4/include_next.m4 \
+ $(top_srcdir)/gnulib-m4/inline.m4 \
+ $(top_srcdir)/gnulib-m4/intlmacosx.m4 \
+ $(top_srcdir)/gnulib-m4/intmax_t.m4 \
+ $(top_srcdir)/gnulib-m4/inttypes_h.m4 \
+ $(top_srcdir)/gnulib-m4/isnand.m4 \
+ $(top_srcdir)/gnulib-m4/isnanf.m4 \
+ $(top_srcdir)/gnulib-m4/isnanl.m4 \
+ $(top_srcdir)/gnulib-m4/lcmessage.m4 \
+ $(top_srcdir)/gnulib-m4/ldexpl.m4 \
+ $(top_srcdir)/gnulib-m4/lib-ld.m4 \
+ $(top_srcdir)/gnulib-m4/lib-link.m4 \
+ $(top_srcdir)/gnulib-m4/lib-prefix.m4 \
+ $(top_srcdir)/gnulib-m4/localcharset.m4 \
+ $(top_srcdir)/gnulib-m4/locale-fr.m4 \
+ $(top_srcdir)/gnulib-m4/locale-ja.m4 \
+ $(top_srcdir)/gnulib-m4/locale-tr.m4 \
+ $(top_srcdir)/gnulib-m4/locale-zh.m4 \
+ $(top_srcdir)/gnulib-m4/locale_h.m4 \
+ $(top_srcdir)/gnulib-m4/localename.m4 \
+ $(top_srcdir)/gnulib-m4/longlong.m4 \
+ $(top_srcdir)/gnulib-m4/malloc.m4 \
+ $(top_srcdir)/gnulib-m4/malloca.m4 \
+ $(top_srcdir)/gnulib-m4/math_h.m4 \
+ $(top_srcdir)/gnulib-m4/mbchar.m4 \
+ $(top_srcdir)/gnulib-m4/mbiter.m4 \
+ $(top_srcdir)/gnulib-m4/mbrtowc.m4 \
+ $(top_srcdir)/gnulib-m4/mbsinit.m4 \
+ $(top_srcdir)/gnulib-m4/mbstate_t.m4 \
+ $(top_srcdir)/gnulib-m4/memchr.m4 \
+ $(top_srcdir)/gnulib-m4/minmax.m4 \
+ $(top_srcdir)/gnulib-m4/mmap-anon.m4 \
+ $(top_srcdir)/gnulib-m4/multiarch.m4 \
+ $(top_srcdir)/gnulib-m4/nocrash.m4 \
+ $(top_srcdir)/gnulib-m4/printf-frexp.m4 \
+ $(top_srcdir)/gnulib-m4/printf-frexpl.m4 \
+ $(top_srcdir)/gnulib-m4/printf.m4 \
+ $(top_srcdir)/gnulib-m4/relocatable-lib.m4 \
+ $(top_srcdir)/gnulib-m4/setenv.m4 \
+ $(top_srcdir)/gnulib-m4/signbit.m4 \
+ $(top_srcdir)/gnulib-m4/size_max.m4 \
+ $(top_srcdir)/gnulib-m4/stdbool.m4 \
+ $(top_srcdir)/gnulib-m4/stdint.m4 \
+ $(top_srcdir)/gnulib-m4/stdint_h.m4 \
+ $(top_srcdir)/gnulib-m4/stdlib_h.m4 \
+ $(top_srcdir)/gnulib-m4/strerror.m4 \
+ $(top_srcdir)/gnulib-m4/string_h.m4 \
+ $(top_srcdir)/gnulib-m4/unistd_h.m4 \
+ $(top_srcdir)/gnulib-m4/vasnprintf.m4 \
+ $(top_srcdir)/gnulib-m4/wchar.m4 \
+ $(top_srcdir)/gnulib-m4/wchar_t.m4 \
+ $(top_srcdir)/gnulib-m4/wctob.m4 \
+ $(top_srcdir)/gnulib-m4/wctype.m4 \
+ $(top_srcdir)/gnulib-m4/wcwidth.m4 \
+ $(top_srcdir)/gnulib-m4/wint_t.m4 \
+ $(top_srcdir)/gnulib-m4/xalloc.m4 \
+ $(top_srcdir)/gnulib-m4/xsize.m4 $(top_srcdir)/m4/exported.m4 \
+ $(top_srcdir)/m4/init-package-version.m4 \
+ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/woe32-dll.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = exported.sh
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" \
+ "$(DESTDIR)$(includedir)"
+LTLIBRARIES = $(lib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@WOE32_TRUE@am__DEPENDENCIES_2 = libunistring.res.lo
+am__libunistring_la_SOURCES_DIST = c-ctype.h c-ctype.c c-strcase.h \
+ c-strcasecmp.c c-strncasecmp.c fseterr.c localcharset.h \
+ localcharset.c localename.c malloca.c mbchar.c mbiter.h \
+ mbsnlen.c memcmp2.c memxfrm.c minmax.h printf-frexp.c \
+ printf-frexpl.c size_max.h striconveh.h striconveh.c \
+ striconveha.h striconveha.c unicase/cased.c \
+ unicase/empty-prefix-context.c unicase/empty-suffix-context.c \
+ unicase/ignorable.c unicase/locale-language.c \
+ unicase/special-casing.c unicase/tocasefold.c \
+ unicase/tolower.c unicase/totitle.c unicase/toupper.c \
+ unicase/u16-casecmp.c unicase/u16-casecoll.c \
+ unicase/u16-casefold.c unicase/u16-casemap.c \
+ unicase/u16-casexfrm.c unicase/u16-ct-casefold.c \
+ unicase/u16-ct-tolower.c unicase/u16-ct-totitle.c \
+ unicase/u16-ct-toupper.c unicase/u16-is-cased.c \
+ unicase/u16-is-casefolded.c unicase/u16-is-invariant.c \
+ unicase/u16-is-lowercase.c unicase/u16-is-titlecase.c \
+ unicase/u16-is-uppercase.c unicase/u16-tolower.c \
+ unicase/u16-totitle.c unicase/u16-toupper.c \
+ unicase/u32-casecmp.c unicase/u32-casecoll.c \
+ unicase/u32-casefold.c unicase/u32-casemap.c \
+ unicase/u32-casexfrm.c unicase/u32-ct-casefold.c \
+ unicase/u32-ct-tolower.c unicase/u32-ct-totitle.c \
+ unicase/u32-ct-toupper.c unicase/u32-is-cased.c \
+ unicase/u32-is-casefolded.c unicase/u32-is-invariant.c \
+ unicase/u32-is-lowercase.c unicase/u32-is-titlecase.c \
+ unicase/u32-is-uppercase.c unicase/u32-tolower.c \
+ unicase/u32-totitle.c unicase/u32-toupper.c \
+ unicase/u8-casecmp.c unicase/u8-casecoll.c \
+ unicase/u8-casefold.c unicase/u8-casemap.c \
+ unicase/u8-casexfrm.c unicase/u8-ct-casefold.c \
+ unicase/u8-ct-tolower.c unicase/u8-ct-totitle.c \
+ unicase/u8-ct-toupper.c unicase/u8-is-cased.c \
+ unicase/u8-is-casefolded.c unicase/u8-is-invariant.c \
+ unicase/u8-is-lowercase.c unicase/u8-is-titlecase.c \
+ unicase/u8-is-uppercase.c unicase/u8-tolower.c \
+ unicase/u8-totitle.c unicase/u8-toupper.c \
+ unicase/ulc-casecmp.c unicase/ulc-casecoll.c \
+ unicase/ulc-casexfrm.c uniconv/u16-conv-from-enc.c \
+ uniconv/u16-conv-to-enc.c uniconv/u16-strconv-from-enc.c \
+ uniconv/u16-strconv-from-locale.c uniconv/u16-strconv-to-enc.c \
+ uniconv/u16-strconv-to-locale.c uniconv/u32-conv-from-enc.c \
+ uniconv/u32-conv-to-enc.c uniconv/u32-strconv-from-enc.c \
+ uniconv/u32-strconv-from-locale.c uniconv/u32-strconv-to-enc.c \
+ uniconv/u32-strconv-to-locale.c uniconv/u8-conv-from-enc.c \
+ uniconv/u8-conv-to-enc.c uniconv/u8-strconv-from-enc.c \
+ uniconv/u8-strconv-from-locale.c uniconv/u8-strconv-to-enc.c \
+ uniconv/u8-strconv-to-locale.c unictype/bidi_byname.c \
+ unictype/bidi_name.c unictype/bidi_of.c unictype/bidi_test.c \
+ unictype/blocks.c unictype/block_test.c unictype/categ_C.c \
+ unictype/categ_Cc.c unictype/categ_Cf.c unictype/categ_Cn.c \
+ unictype/categ_Co.c unictype/categ_Cs.c unictype/categ_L.c \
+ unictype/categ_Ll.c unictype/categ_Lm.c unictype/categ_Lo.c \
+ unictype/categ_Lt.c unictype/categ_Lu.c unictype/categ_M.c \
+ unictype/categ_Mc.c unictype/categ_Me.c unictype/categ_Mn.c \
+ unictype/categ_N.c unictype/categ_Nd.c unictype/categ_Nl.c \
+ unictype/categ_No.c unictype/categ_P.c unictype/categ_Pc.c \
+ unictype/categ_Pd.c unictype/categ_Pe.c unictype/categ_Pf.c \
+ unictype/categ_Pi.c unictype/categ_Po.c unictype/categ_Ps.c \
+ unictype/categ_S.c unictype/categ_Sc.c unictype/categ_Sk.c \
+ unictype/categ_Sm.c unictype/categ_So.c unictype/categ_Z.c \
+ unictype/categ_Zl.c unictype/categ_Zp.c unictype/categ_Zs.c \
+ unictype/categ_and.c unictype/categ_and_not.c \
+ unictype/categ_byname.c unictype/categ_name.c \
+ unictype/categ_none.c unictype/categ_of.c unictype/categ_or.c \
+ unictype/categ_test.c unictype/combining.c \
+ unictype/ctype_alnum.c unictype/ctype_alpha.c \
+ unictype/ctype_blank.c unictype/ctype_cntrl.c \
+ unictype/ctype_digit.c unictype/ctype_graph.c \
+ unictype/ctype_lower.c unictype/ctype_print.c \
+ unictype/ctype_punct.c unictype/ctype_space.c \
+ unictype/ctype_upper.c unictype/ctype_xdigit.c \
+ unictype/decdigit.c unictype/digit.c unictype/mirror.c \
+ unictype/numeric.c unictype/pr_alphabetic.c \
+ unictype/pr_ascii_hex_digit.c unictype/pr_bidi_arabic_digit.c \
+ unictype/pr_bidi_arabic_right_to_left.c \
+ unictype/pr_bidi_block_separator.c \
+ unictype/pr_bidi_boundary_neutral.c \
+ unictype/pr_bidi_common_separator.c unictype/pr_bidi_control.c \
+ unictype/pr_bidi_embedding_or_override.c \
+ unictype/pr_bidi_eur_num_separator.c \
+ unictype/pr_bidi_eur_num_terminator.c \
+ unictype/pr_bidi_european_digit.c \
+ unictype/pr_bidi_hebrew_right_to_left.c \
+ unictype/pr_bidi_left_to_right.c \
+ unictype/pr_bidi_non_spacing_mark.c \
+ unictype/pr_bidi_other_neutral.c unictype/pr_bidi_pdf.c \
+ unictype/pr_bidi_segment_separator.c \
+ unictype/pr_bidi_whitespace.c unictype/pr_byname.c \
+ unictype/pr_combining.c unictype/pr_composite.c \
+ unictype/pr_currency_symbol.c unictype/pr_dash.c \
+ unictype/pr_decimal_digit.c \
+ unictype/pr_default_ignorable_code_point.c \
+ unictype/pr_deprecated.c unictype/pr_diacritic.c \
+ unictype/pr_extender.c unictype/pr_format_control.c \
+ unictype/pr_grapheme_base.c unictype/pr_grapheme_extend.c \
+ unictype/pr_grapheme_link.c unictype/pr_hex_digit.c \
+ unictype/pr_hyphen.c unictype/pr_id_continue.c \
+ unictype/pr_id_start.c unictype/pr_ideographic.c \
+ unictype/pr_ids_binary_operator.c \
+ unictype/pr_ids_trinary_operator.c \
+ unictype/pr_ignorable_control.c unictype/pr_iso_control.c \
+ unictype/pr_join_control.c unictype/pr_left_of_pair.c \
+ unictype/pr_line_separator.c \
+ unictype/pr_logical_order_exception.c unictype/pr_lowercase.c \
+ unictype/pr_math.c unictype/pr_non_break.c \
+ unictype/pr_not_a_character.c unictype/pr_numeric.c \
+ unictype/pr_other_alphabetic.c \
+ unictype/pr_other_default_ignorable_code_point.c \
+ unictype/pr_other_grapheme_extend.c \
+ unictype/pr_other_id_continue.c unictype/pr_other_id_start.c \
+ unictype/pr_other_lowercase.c unictype/pr_other_math.c \
+ unictype/pr_other_uppercase.c unictype/pr_paired_punctuation.c \
+ unictype/pr_paragraph_separator.c unictype/pr_pattern_syntax.c \
+ unictype/pr_pattern_white_space.c unictype/pr_private_use.c \
+ unictype/pr_punctuation.c unictype/pr_quotation_mark.c \
+ unictype/pr_radical.c unictype/pr_sentence_terminal.c \
+ unictype/pr_soft_dotted.c unictype/pr_space.c \
+ unictype/pr_terminal_punctuation.c unictype/pr_test.c \
+ unictype/pr_titlecase.c unictype/pr_unassigned_code_value.c \
+ unictype/pr_unified_ideograph.c unictype/pr_uppercase.c \
+ unictype/pr_variation_selector.c unictype/pr_white_space.c \
+ unictype/pr_xid_continue.c unictype/pr_xid_start.c \
+ unictype/pr_zero_width.c unictype/scripts.c \
+ unictype/sy_c_ident.c unictype/sy_c_whitespace.c \
+ unictype/sy_java_ident.c unictype/sy_java_whitespace.c \
+ unilbrk/lbrktables.c unilbrk/u16-possible-linebreaks.c \
+ unilbrk/u16-width-linebreaks.c \
+ unilbrk/u32-possible-linebreaks.c \
+ unilbrk/u32-width-linebreaks.c \
+ unilbrk/u8-possible-linebreaks.c unilbrk/u8-width-linebreaks.c \
+ unilbrk/ulc-common.c unilbrk/ulc-possible-linebreaks.c \
+ unilbrk/ulc-width-linebreaks.c uniname/uniname.c \
+ uninorm/canonical-decomposition.c \
+ uninorm/compat-decomposition.c uninorm/composition.c \
+ uninorm/decompose-internal.c uninorm/decomposing-form.c \
+ uninorm/decomposition.c uninorm/decomposition-table.c \
+ uninorm/uninorm-filter.c uninorm/nfc.c uninorm/nfd.c \
+ uninorm/nfkc.c uninorm/nfkd.c uninorm/u16-normalize.c \
+ uninorm/u16-normcmp.c uninorm/u16-normcoll.c \
+ uninorm/u16-normxfrm.c uninorm/u32-normalize.c \
+ uninorm/u32-normcmp.c uninorm/u32-normcoll.c \
+ uninorm/u32-normxfrm.c uninorm/u8-normalize.c \
+ uninorm/u8-normcmp.c uninorm/u8-normcoll.c \
+ uninorm/u8-normxfrm.c unistdio/u-printf-args.c \
+ unistdio/u16-asnprintf.c unistdio/u16-asprintf.c \
+ unistdio/u16-printf-parse.c unistdio/u16-snprintf.c \
+ unistdio/u16-sprintf.c unistdio/u16-u16-asnprintf.c \
+ unistdio/u16-u16-asprintf.c unistdio/u16-u16-snprintf.c \
+ unistdio/u16-u16-sprintf.c unistdio/u16-u16-vasnprintf.c \
+ unistdio/u16-u16-vasprintf.c unistdio/u16-u16-vsnprintf.c \
+ unistdio/u16-u16-vsprintf.c unistdio/u16-vasnprintf.c \
+ unistdio/u16-vasprintf.c unistdio/u16-vsnprintf.c \
+ unistdio/u16-vsprintf.c unistdio/u32-asnprintf.c \
+ unistdio/u32-asprintf.c unistdio/u32-printf-parse.c \
+ unistdio/u32-snprintf.c unistdio/u32-sprintf.c \
+ unistdio/u32-u32-asnprintf.c unistdio/u32-u32-asprintf.c \
+ unistdio/u32-u32-snprintf.c unistdio/u32-u32-sprintf.c \
+ unistdio/u32-u32-vasnprintf.c unistdio/u32-u32-vasprintf.c \
+ unistdio/u32-u32-vsnprintf.c unistdio/u32-u32-vsprintf.c \
+ unistdio/u32-vasnprintf.c unistdio/u32-vasprintf.c \
+ unistdio/u32-vsnprintf.c unistdio/u32-vsprintf.c \
+ unistdio/u8-asnprintf.c unistdio/u8-asprintf.c \
+ unistdio/u8-printf-parse.c unistdio/u8-snprintf.c \
+ unistdio/u8-sprintf.c unistdio/u8-u8-asnprintf.c \
+ unistdio/u8-u8-asprintf.c unistdio/u8-u8-snprintf.c \
+ unistdio/u8-u8-sprintf.c unistdio/u8-u8-vasnprintf.c \
+ unistdio/u8-u8-vasprintf.c unistdio/u8-u8-vsnprintf.c \
+ unistdio/u8-u8-vsprintf.c unistdio/u8-vasnprintf.c \
+ unistdio/u8-vasprintf.c unistdio/u8-vsnprintf.c \
+ unistdio/u8-vsprintf.c unistdio/ulc-asnprintf.c \
+ unistdio/ulc-asprintf.c unistdio/ulc-fprintf.c \
+ unistdio/ulc-printf-parse.c unistdio/ulc-snprintf.c \
+ unistdio/ulc-sprintf.c unistdio/ulc-vasnprintf.c \
+ unistdio/ulc-vasprintf.c unistdio/ulc-vfprintf.c \
+ unistdio/ulc-vsnprintf.c unistdio/ulc-vsprintf.c \
+ unistr/u16-check.c unistr/u16-chr.c unistr/u16-cmp.c \
+ unistr/u16-cmp2.c unistr/u16-cpy.c unistr/u16-cpy-alloc.c \
+ unistr/u16-endswith.c unistr/u16-mblen.c unistr/u16-mbsnlen.c \
+ unistr/u16-mbtouc.c unistr/u16-mbtouc-aux.c \
+ unistr/u16-mbtouc-unsafe.c unistr/u16-mbtouc-unsafe-aux.c \
+ unistr/u16-mbtoucr.c unistr/u16-move.c unistr/u16-next.c \
+ unistr/u16-prev.c unistr/u16-set.c unistr/u16-startswith.c \
+ unistr/u16-stpcpy.c unistr/u16-stpncpy.c unistr/u16-strcat.c \
+ unistr/u16-strchr.c unistr/u16-strcmp.c unistr/u16-strcoll.c \
+ unistr/u16-strcpy.c unistr/u16-strcspn.c unistr/u16-strdup.c \
+ unistr/u16-strlen.c unistr/u16-strmblen.c \
+ unistr/u16-strmbtouc.c unistr/u16-strncat.c \
+ unistr/u16-strncmp.c unistr/u16-strncpy.c unistr/u16-strnlen.c \
+ unistr/u16-strpbrk.c unistr/u16-strrchr.c unistr/u16-strspn.c \
+ unistr/u16-strstr.c unistr/u16-strtok.c unistr/u16-to-u32.c \
+ unistr/u16-to-u8.c unistr/u16-uctomb.c unistr/u16-uctomb-aux.c \
+ unistr/u32-check.c unistr/u32-chr.c unistr/u32-cmp.c \
+ unistr/u32-cmp2.c unistr/u32-cpy.c unistr/u32-cpy-alloc.c \
+ unistr/u32-endswith.c unistr/u32-mblen.c unistr/u32-mbsnlen.c \
+ unistr/u32-mbtouc.c unistr/u32-mbtouc-unsafe.c \
+ unistr/u32-mbtoucr.c unistr/u32-move.c unistr/u32-next.c \
+ unistr/u32-prev.c unistr/u32-set.c unistr/u32-startswith.c \
+ unistr/u32-stpcpy.c unistr/u32-stpncpy.c unistr/u32-strcat.c \
+ unistr/u32-strchr.c unistr/u32-strcmp.c unistr/u32-strcoll.c \
+ unistr/u32-strcpy.c unistr/u32-strcspn.c unistr/u32-strdup.c \
+ unistr/u32-strlen.c unistr/u32-strmblen.c \
+ unistr/u32-strmbtouc.c unistr/u32-strncat.c \
+ unistr/u32-strncmp.c unistr/u32-strncpy.c unistr/u32-strnlen.c \
+ unistr/u32-strpbrk.c unistr/u32-strrchr.c unistr/u32-strspn.c \
+ unistr/u32-strstr.c unistr/u32-strtok.c unistr/u32-to-u16.c \
+ unistr/u32-to-u8.c unistr/u32-uctomb.c unistr/u8-check.c \
+ unistr/u8-chr.c unistr/u8-cmp.c unistr/u8-cmp2.c \
+ unistr/u8-cpy.c unistr/u8-cpy-alloc.c unistr/u8-endswith.c \
+ unistr/u8-mblen.c unistr/u8-mbsnlen.c unistr/u8-mbtouc.c \
+ unistr/u8-mbtouc-aux.c unistr/u8-mbtouc-unsafe.c \
+ unistr/u8-mbtouc-unsafe-aux.c unistr/u8-mbtoucr.c \
+ unistr/u8-move.c unistr/u8-next.c unistr/u8-prev.c \
+ unistr/u8-set.c unistr/u8-startswith.c unistr/u8-stpcpy.c \
+ unistr/u8-stpncpy.c unistr/u8-strcat.c unistr/u8-strchr.c \
+ unistr/u8-strcmp.c unistr/u8-strcoll.c unistr/u8-strcpy.c \
+ unistr/u8-strcspn.c unistr/u8-strdup.c unistr/u8-strlen.c \
+ unistr/u8-strmblen.c unistr/u8-strmbtouc.c unistr/u8-strncat.c \
+ unistr/u8-strncmp.c unistr/u8-strncpy.c unistr/u8-strnlen.c \
+ unistr/u8-strpbrk.c unistr/u8-strrchr.c unistr/u8-strspn.c \
+ unistr/u8-strstr.c unistr/u8-strtok.c unistr/u8-to-u16.c \
+ unistr/u8-to-u32.c unistr/u8-uctomb.c unistr/u8-uctomb-aux.c \
+ uniwbrk/wbrktable.c uniwbrk/u16-wordbreaks.c \
+ uniwbrk/u32-wordbreaks.c uniwbrk/u8-wordbreaks.c \
+ uniwbrk/ulc-wordbreaks.c uniwbrk/wordbreak-property.c \
+ uniwidth/u16-strwidth.c uniwidth/u16-width.c \
+ uniwidth/u32-strwidth.c uniwidth/u32-width.c \
+ uniwidth/u8-strwidth.c uniwidth/u8-width.c uniwidth/width.c \
+ verify.h xsize.h version.c ../woe32dll/unistring-exports.c
+am__dirstamp = $(am__leading_dot)dirstamp
+@WOE32DLL_TRUE@am__objects_1 = ../woe32dll/unistring-exports.lo
+am_libunistring_la_OBJECTS = c-ctype.lo c-strcasecmp.lo \
+ c-strncasecmp.lo fseterr.lo localcharset.lo localename.lo \
+ malloca.lo mbchar.lo mbsnlen.lo memcmp2.lo memxfrm.lo \
+ printf-frexp.lo printf-frexpl.lo striconveh.lo striconveha.lo \
+ unicase/cased.lo unicase/empty-prefix-context.lo \
+ unicase/empty-suffix-context.lo unicase/ignorable.lo \
+ unicase/locale-language.lo unicase/special-casing.lo \
+ unicase/tocasefold.lo unicase/tolower.lo unicase/totitle.lo \
+ unicase/toupper.lo unicase/u16-casecmp.lo \
+ unicase/u16-casecoll.lo unicase/u16-casefold.lo \
+ unicase/u16-casemap.lo unicase/u16-casexfrm.lo \
+ unicase/u16-ct-casefold.lo unicase/u16-ct-tolower.lo \
+ unicase/u16-ct-totitle.lo unicase/u16-ct-toupper.lo \
+ unicase/u16-is-cased.lo unicase/u16-is-casefolded.lo \
+ unicase/u16-is-invariant.lo unicase/u16-is-lowercase.lo \
+ unicase/u16-is-titlecase.lo unicase/u16-is-uppercase.lo \
+ unicase/u16-tolower.lo unicase/u16-totitle.lo \
+ unicase/u16-toupper.lo unicase/u32-casecmp.lo \
+ unicase/u32-casecoll.lo unicase/u32-casefold.lo \
+ unicase/u32-casemap.lo unicase/u32-casexfrm.lo \
+ unicase/u32-ct-casefold.lo unicase/u32-ct-tolower.lo \
+ unicase/u32-ct-totitle.lo unicase/u32-ct-toupper.lo \
+ unicase/u32-is-cased.lo unicase/u32-is-casefolded.lo \
+ unicase/u32-is-invariant.lo unicase/u32-is-lowercase.lo \
+ unicase/u32-is-titlecase.lo unicase/u32-is-uppercase.lo \
+ unicase/u32-tolower.lo unicase/u32-totitle.lo \
+ unicase/u32-toupper.lo unicase/u8-casecmp.lo \
+ unicase/u8-casecoll.lo unicase/u8-casefold.lo \
+ unicase/u8-casemap.lo unicase/u8-casexfrm.lo \
+ unicase/u8-ct-casefold.lo unicase/u8-ct-tolower.lo \
+ unicase/u8-ct-totitle.lo unicase/u8-ct-toupper.lo \
+ unicase/u8-is-cased.lo unicase/u8-is-casefolded.lo \
+ unicase/u8-is-invariant.lo unicase/u8-is-lowercase.lo \
+ unicase/u8-is-titlecase.lo unicase/u8-is-uppercase.lo \
+ unicase/u8-tolower.lo unicase/u8-totitle.lo \
+ unicase/u8-toupper.lo unicase/ulc-casecmp.lo \
+ unicase/ulc-casecoll.lo unicase/ulc-casexfrm.lo \
+ uniconv/u16-conv-from-enc.lo uniconv/u16-conv-to-enc.lo \
+ uniconv/u16-strconv-from-enc.lo \
+ uniconv/u16-strconv-from-locale.lo \
+ uniconv/u16-strconv-to-enc.lo uniconv/u16-strconv-to-locale.lo \
+ uniconv/u32-conv-from-enc.lo uniconv/u32-conv-to-enc.lo \
+ uniconv/u32-strconv-from-enc.lo \
+ uniconv/u32-strconv-from-locale.lo \
+ uniconv/u32-strconv-to-enc.lo uniconv/u32-strconv-to-locale.lo \
+ uniconv/u8-conv-from-enc.lo uniconv/u8-conv-to-enc.lo \
+ uniconv/u8-strconv-from-enc.lo \
+ uniconv/u8-strconv-from-locale.lo uniconv/u8-strconv-to-enc.lo \
+ uniconv/u8-strconv-to-locale.lo unictype/bidi_byname.lo \
+ unictype/bidi_name.lo unictype/bidi_of.lo \
+ unictype/bidi_test.lo unictype/blocks.lo \
+ unictype/block_test.lo unictype/categ_C.lo \
+ unictype/categ_Cc.lo unictype/categ_Cf.lo unictype/categ_Cn.lo \
+ unictype/categ_Co.lo unictype/categ_Cs.lo unictype/categ_L.lo \
+ unictype/categ_Ll.lo unictype/categ_Lm.lo unictype/categ_Lo.lo \
+ unictype/categ_Lt.lo unictype/categ_Lu.lo unictype/categ_M.lo \
+ unictype/categ_Mc.lo unictype/categ_Me.lo unictype/categ_Mn.lo \
+ unictype/categ_N.lo unictype/categ_Nd.lo unictype/categ_Nl.lo \
+ unictype/categ_No.lo unictype/categ_P.lo unictype/categ_Pc.lo \
+ unictype/categ_Pd.lo unictype/categ_Pe.lo unictype/categ_Pf.lo \
+ unictype/categ_Pi.lo unictype/categ_Po.lo unictype/categ_Ps.lo \
+ unictype/categ_S.lo unictype/categ_Sc.lo unictype/categ_Sk.lo \
+ unictype/categ_Sm.lo unictype/categ_So.lo unictype/categ_Z.lo \
+ unictype/categ_Zl.lo unictype/categ_Zp.lo unictype/categ_Zs.lo \
+ unictype/categ_and.lo unictype/categ_and_not.lo \
+ unictype/categ_byname.lo unictype/categ_name.lo \
+ unictype/categ_none.lo unictype/categ_of.lo \
+ unictype/categ_or.lo unictype/categ_test.lo \
+ unictype/combining.lo unictype/ctype_alnum.lo \
+ unictype/ctype_alpha.lo unictype/ctype_blank.lo \
+ unictype/ctype_cntrl.lo unictype/ctype_digit.lo \
+ unictype/ctype_graph.lo unictype/ctype_lower.lo \
+ unictype/ctype_print.lo unictype/ctype_punct.lo \
+ unictype/ctype_space.lo unictype/ctype_upper.lo \
+ unictype/ctype_xdigit.lo unictype/decdigit.lo \
+ unictype/digit.lo unictype/mirror.lo unictype/numeric.lo \
+ unictype/pr_alphabetic.lo unictype/pr_ascii_hex_digit.lo \
+ unictype/pr_bidi_arabic_digit.lo \
+ unictype/pr_bidi_arabic_right_to_left.lo \
+ unictype/pr_bidi_block_separator.lo \
+ unictype/pr_bidi_boundary_neutral.lo \
+ unictype/pr_bidi_common_separator.lo \
+ unictype/pr_bidi_control.lo \
+ unictype/pr_bidi_embedding_or_override.lo \
+ unictype/pr_bidi_eur_num_separator.lo \
+ unictype/pr_bidi_eur_num_terminator.lo \
+ unictype/pr_bidi_european_digit.lo \
+ unictype/pr_bidi_hebrew_right_to_left.lo \
+ unictype/pr_bidi_left_to_right.lo \
+ unictype/pr_bidi_non_spacing_mark.lo \
+ unictype/pr_bidi_other_neutral.lo unictype/pr_bidi_pdf.lo \
+ unictype/pr_bidi_segment_separator.lo \
+ unictype/pr_bidi_whitespace.lo unictype/pr_byname.lo \
+ unictype/pr_combining.lo unictype/pr_composite.lo \
+ unictype/pr_currency_symbol.lo unictype/pr_dash.lo \
+ unictype/pr_decimal_digit.lo \
+ unictype/pr_default_ignorable_code_point.lo \
+ unictype/pr_deprecated.lo unictype/pr_diacritic.lo \
+ unictype/pr_extender.lo unictype/pr_format_control.lo \
+ unictype/pr_grapheme_base.lo unictype/pr_grapheme_extend.lo \
+ unictype/pr_grapheme_link.lo unictype/pr_hex_digit.lo \
+ unictype/pr_hyphen.lo unictype/pr_id_continue.lo \
+ unictype/pr_id_start.lo unictype/pr_ideographic.lo \
+ unictype/pr_ids_binary_operator.lo \
+ unictype/pr_ids_trinary_operator.lo \
+ unictype/pr_ignorable_control.lo unictype/pr_iso_control.lo \
+ unictype/pr_join_control.lo unictype/pr_left_of_pair.lo \
+ unictype/pr_line_separator.lo \
+ unictype/pr_logical_order_exception.lo \
+ unictype/pr_lowercase.lo unictype/pr_math.lo \
+ unictype/pr_non_break.lo unictype/pr_not_a_character.lo \
+ unictype/pr_numeric.lo unictype/pr_other_alphabetic.lo \
+ unictype/pr_other_default_ignorable_code_point.lo \
+ unictype/pr_other_grapheme_extend.lo \
+ unictype/pr_other_id_continue.lo unictype/pr_other_id_start.lo \
+ unictype/pr_other_lowercase.lo unictype/pr_other_math.lo \
+ unictype/pr_other_uppercase.lo \
+ unictype/pr_paired_punctuation.lo \
+ unictype/pr_paragraph_separator.lo \
+ unictype/pr_pattern_syntax.lo \
+ unictype/pr_pattern_white_space.lo unictype/pr_private_use.lo \
+ unictype/pr_punctuation.lo unictype/pr_quotation_mark.lo \
+ unictype/pr_radical.lo unictype/pr_sentence_terminal.lo \
+ unictype/pr_soft_dotted.lo unictype/pr_space.lo \
+ unictype/pr_terminal_punctuation.lo unictype/pr_test.lo \
+ unictype/pr_titlecase.lo unictype/pr_unassigned_code_value.lo \
+ unictype/pr_unified_ideograph.lo unictype/pr_uppercase.lo \
+ unictype/pr_variation_selector.lo unictype/pr_white_space.lo \
+ unictype/pr_xid_continue.lo unictype/pr_xid_start.lo \
+ unictype/pr_zero_width.lo unictype/scripts.lo \
+ unictype/sy_c_ident.lo unictype/sy_c_whitespace.lo \
+ unictype/sy_java_ident.lo unictype/sy_java_whitespace.lo \
+ unilbrk/lbrktables.lo unilbrk/u16-possible-linebreaks.lo \
+ unilbrk/u16-width-linebreaks.lo \
+ unilbrk/u32-possible-linebreaks.lo \
+ unilbrk/u32-width-linebreaks.lo \
+ unilbrk/u8-possible-linebreaks.lo \
+ unilbrk/u8-width-linebreaks.lo unilbrk/ulc-common.lo \
+ unilbrk/ulc-possible-linebreaks.lo \
+ unilbrk/ulc-width-linebreaks.lo uniname/uniname.lo \
+ uninorm/canonical-decomposition.lo \
+ uninorm/compat-decomposition.lo uninorm/composition.lo \
+ uninorm/decompose-internal.lo uninorm/decomposing-form.lo \
+ uninorm/decomposition.lo uninorm/decomposition-table.lo \
+ uninorm/uninorm-filter.lo uninorm/nfc.lo uninorm/nfd.lo \
+ uninorm/nfkc.lo uninorm/nfkd.lo uninorm/u16-normalize.lo \
+ uninorm/u16-normcmp.lo uninorm/u16-normcoll.lo \
+ uninorm/u16-normxfrm.lo uninorm/u32-normalize.lo \
+ uninorm/u32-normcmp.lo uninorm/u32-normcoll.lo \
+ uninorm/u32-normxfrm.lo uninorm/u8-normalize.lo \
+ uninorm/u8-normcmp.lo uninorm/u8-normcoll.lo \
+ uninorm/u8-normxfrm.lo unistdio/u-printf-args.lo \
+ unistdio/u16-asnprintf.lo unistdio/u16-asprintf.lo \
+ unistdio/u16-printf-parse.lo unistdio/u16-snprintf.lo \
+ unistdio/u16-sprintf.lo unistdio/u16-u16-asnprintf.lo \
+ unistdio/u16-u16-asprintf.lo unistdio/u16-u16-snprintf.lo \
+ unistdio/u16-u16-sprintf.lo unistdio/u16-u16-vasnprintf.lo \
+ unistdio/u16-u16-vasprintf.lo unistdio/u16-u16-vsnprintf.lo \
+ unistdio/u16-u16-vsprintf.lo unistdio/u16-vasnprintf.lo \
+ unistdio/u16-vasprintf.lo unistdio/u16-vsnprintf.lo \
+ unistdio/u16-vsprintf.lo unistdio/u32-asnprintf.lo \
+ unistdio/u32-asprintf.lo unistdio/u32-printf-parse.lo \
+ unistdio/u32-snprintf.lo unistdio/u32-sprintf.lo \
+ unistdio/u32-u32-asnprintf.lo unistdio/u32-u32-asprintf.lo \
+ unistdio/u32-u32-snprintf.lo unistdio/u32-u32-sprintf.lo \
+ unistdio/u32-u32-vasnprintf.lo unistdio/u32-u32-vasprintf.lo \
+ unistdio/u32-u32-vsnprintf.lo unistdio/u32-u32-vsprintf.lo \
+ unistdio/u32-vasnprintf.lo unistdio/u32-vasprintf.lo \
+ unistdio/u32-vsnprintf.lo unistdio/u32-vsprintf.lo \
+ unistdio/u8-asnprintf.lo unistdio/u8-asprintf.lo \
+ unistdio/u8-printf-parse.lo unistdio/u8-snprintf.lo \
+ unistdio/u8-sprintf.lo unistdio/u8-u8-asnprintf.lo \
+ unistdio/u8-u8-asprintf.lo unistdio/u8-u8-snprintf.lo \
+ unistdio/u8-u8-sprintf.lo unistdio/u8-u8-vasnprintf.lo \
+ unistdio/u8-u8-vasprintf.lo unistdio/u8-u8-vsnprintf.lo \
+ unistdio/u8-u8-vsprintf.lo unistdio/u8-vasnprintf.lo \
+ unistdio/u8-vasprintf.lo unistdio/u8-vsnprintf.lo \
+ unistdio/u8-vsprintf.lo unistdio/ulc-asnprintf.lo \
+ unistdio/ulc-asprintf.lo unistdio/ulc-fprintf.lo \
+ unistdio/ulc-printf-parse.lo unistdio/ulc-snprintf.lo \
+ unistdio/ulc-sprintf.lo unistdio/ulc-vasnprintf.lo \
+ unistdio/ulc-vasprintf.lo unistdio/ulc-vfprintf.lo \
+ unistdio/ulc-vsnprintf.lo unistdio/ulc-vsprintf.lo \
+ unistr/u16-check.lo unistr/u16-chr.lo unistr/u16-cmp.lo \
+ unistr/u16-cmp2.lo unistr/u16-cpy.lo unistr/u16-cpy-alloc.lo \
+ unistr/u16-endswith.lo unistr/u16-mblen.lo \
+ unistr/u16-mbsnlen.lo unistr/u16-mbtouc.lo \
+ unistr/u16-mbtouc-aux.lo unistr/u16-mbtouc-unsafe.lo \
+ unistr/u16-mbtouc-unsafe-aux.lo unistr/u16-mbtoucr.lo \
+ unistr/u16-move.lo unistr/u16-next.lo unistr/u16-prev.lo \
+ unistr/u16-set.lo unistr/u16-startswith.lo \
+ unistr/u16-stpcpy.lo unistr/u16-stpncpy.lo \
+ unistr/u16-strcat.lo unistr/u16-strchr.lo unistr/u16-strcmp.lo \
+ unistr/u16-strcoll.lo unistr/u16-strcpy.lo \
+ unistr/u16-strcspn.lo unistr/u16-strdup.lo \
+ unistr/u16-strlen.lo unistr/u16-strmblen.lo \
+ unistr/u16-strmbtouc.lo unistr/u16-strncat.lo \
+ unistr/u16-strncmp.lo unistr/u16-strncpy.lo \
+ unistr/u16-strnlen.lo unistr/u16-strpbrk.lo \
+ unistr/u16-strrchr.lo unistr/u16-strspn.lo \
+ unistr/u16-strstr.lo unistr/u16-strtok.lo unistr/u16-to-u32.lo \
+ unistr/u16-to-u8.lo unistr/u16-uctomb.lo \
+ unistr/u16-uctomb-aux.lo unistr/u32-check.lo unistr/u32-chr.lo \
+ unistr/u32-cmp.lo unistr/u32-cmp2.lo unistr/u32-cpy.lo \
+ unistr/u32-cpy-alloc.lo unistr/u32-endswith.lo \
+ unistr/u32-mblen.lo unistr/u32-mbsnlen.lo unistr/u32-mbtouc.lo \
+ unistr/u32-mbtouc-unsafe.lo unistr/u32-mbtoucr.lo \
+ unistr/u32-move.lo unistr/u32-next.lo unistr/u32-prev.lo \
+ unistr/u32-set.lo unistr/u32-startswith.lo \
+ unistr/u32-stpcpy.lo unistr/u32-stpncpy.lo \
+ unistr/u32-strcat.lo unistr/u32-strchr.lo unistr/u32-strcmp.lo \
+ unistr/u32-strcoll.lo unistr/u32-strcpy.lo \
+ unistr/u32-strcspn.lo unistr/u32-strdup.lo \
+ unistr/u32-strlen.lo unistr/u32-strmblen.lo \
+ unistr/u32-strmbtouc.lo unistr/u32-strncat.lo \
+ unistr/u32-strncmp.lo unistr/u32-strncpy.lo \
+ unistr/u32-strnlen.lo unistr/u32-strpbrk.lo \
+ unistr/u32-strrchr.lo unistr/u32-strspn.lo \
+ unistr/u32-strstr.lo unistr/u32-strtok.lo unistr/u32-to-u16.lo \
+ unistr/u32-to-u8.lo unistr/u32-uctomb.lo unistr/u8-check.lo \
+ unistr/u8-chr.lo unistr/u8-cmp.lo unistr/u8-cmp2.lo \
+ unistr/u8-cpy.lo unistr/u8-cpy-alloc.lo unistr/u8-endswith.lo \
+ unistr/u8-mblen.lo unistr/u8-mbsnlen.lo unistr/u8-mbtouc.lo \
+ unistr/u8-mbtouc-aux.lo unistr/u8-mbtouc-unsafe.lo \
+ unistr/u8-mbtouc-unsafe-aux.lo unistr/u8-mbtoucr.lo \
+ unistr/u8-move.lo unistr/u8-next.lo unistr/u8-prev.lo \
+ unistr/u8-set.lo unistr/u8-startswith.lo unistr/u8-stpcpy.lo \
+ unistr/u8-stpncpy.lo unistr/u8-strcat.lo unistr/u8-strchr.lo \
+ unistr/u8-strcmp.lo unistr/u8-strcoll.lo unistr/u8-strcpy.lo \
+ unistr/u8-strcspn.lo unistr/u8-strdup.lo unistr/u8-strlen.lo \
+ unistr/u8-strmblen.lo unistr/u8-strmbtouc.lo \
+ unistr/u8-strncat.lo unistr/u8-strncmp.lo unistr/u8-strncpy.lo \
+ unistr/u8-strnlen.lo unistr/u8-strpbrk.lo unistr/u8-strrchr.lo \
+ unistr/u8-strspn.lo unistr/u8-strstr.lo unistr/u8-strtok.lo \
+ unistr/u8-to-u16.lo unistr/u8-to-u32.lo unistr/u8-uctomb.lo \
+ unistr/u8-uctomb-aux.lo uniwbrk/wbrktable.lo \
+ uniwbrk/u16-wordbreaks.lo uniwbrk/u32-wordbreaks.lo \
+ uniwbrk/u8-wordbreaks.lo uniwbrk/ulc-wordbreaks.lo \
+ uniwbrk/wordbreak-property.lo uniwidth/u16-strwidth.lo \
+ uniwidth/u16-width.lo uniwidth/u32-strwidth.lo \
+ uniwidth/u32-width.lo uniwidth/u8-strwidth.lo \
+ uniwidth/u8-width.lo uniwidth/width.lo version.lo \
+ $(am__objects_1)
+libunistring_la_OBJECTS = $(am_libunistring_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libunistring_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libunistring_la_LDFLAGS) $(LDFLAGS) \
+ -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp =
+am__depfiles_maybe =
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libunistring_la_SOURCES) $(EXTRA_libunistring_la_SOURCES)
+DIST_SOURCES = $(am__libunistring_la_SOURCES_DIST) \
+ $(EXTRA_libunistring_la_SOURCES)
+HEADERS = $(nobase_include_HEADERS) $(nobase_nodist_include_HEADERS) \
+ $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@ -DNO_XMALLOC
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VARIABLE = @DLL_VARIABLE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVIPS = @DVIPS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLOAT_H = @FLOAT_H@
+GLIBC21 = @GLIBC21@
+GLOBAL_SYMBOL_PIPE = @GLOBAL_SYMBOL_PIPE@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CEILF = @GNULIB_CEILF@
+GNULIB_CEILL = @GNULIB_CEILL@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FLOORF = @GNULIB_FLOORF@
+GNULIB_FLOORL = @GNULIB_FLOORL@
+GNULIB_FREXP = @GNULIB_FREXP@
+GNULIB_FREXPL = @GNULIB_FREXPL@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_ISFINITE = @GNULIB_ISFINITE@
+GNULIB_ISINF = @GNULIB_ISINF@
+GNULIB_ISNAN = @GNULIB_ISNAN@
+GNULIB_ISNAND = @GNULIB_ISNAND@
+GNULIB_ISNANF = @GNULIB_ISNANF@
+GNULIB_ISNANL = @GNULIB_ISNANL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LDEXPL = @GNULIB_LDEXPL@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MATHL = @GNULIB_MATHL@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_ROUND = @GNULIB_ROUND@
+GNULIB_ROUNDF = @GNULIB_ROUNDF@
+GNULIB_ROUNDL = @GNULIB_ROUNDL@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SIGNBIT = @GNULIB_SIGNBIT@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_TRUNC = @GNULIB_TRUNC@
+GNULIB_TRUNCF = @GNULIB_TRUNCF@
+GNULIB_TRUNCL = @GNULIB_TRUNCL@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
+HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@
+HAVE_DECL_ASINL = @HAVE_DECL_ASINL@
+HAVE_DECL_ATANL = @HAVE_DECL_ATANL@
+HAVE_DECL_COSL = @HAVE_DECL_COSL@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_EXPL = @HAVE_DECL_EXPL@
+HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@
+HAVE_DECL_LOGL = @HAVE_DECL_LOGL@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SINL = @HAVE_DECL_SINL@
+HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_TANL = @HAVE_DECL_TANL@
+HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@
+HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_GLOBAL_SYMBOL_PIPE = @HAVE_GLOBAL_SYMBOL_PIPE@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISNAND = @HAVE_ISNAND@
+HAVE_ISNANF = @HAVE_ISNANF@
+HAVE_ISNANL = @HAVE_ISNANL@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSETENV = @HAVE_UNSETENV@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HEXVERSION = @HEXVERSION@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_H = @LOCALE_H@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NAMESPACING = @NAMESPACING@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FLOAT_H = @NEXT_FLOAT_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_MATH_H = @NEXT_MATH_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+RC = @RC@
+RELOCATABLE = @RELOCATABLE@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CEILF = @REPLACE_CEILF@
+REPLACE_CEILL = @REPLACE_CEILL@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FLOORF = @REPLACE_FLOORF@
+REPLACE_FLOORL = @REPLACE_FLOORL@
+REPLACE_FREXP = @REPLACE_FREXP@
+REPLACE_FREXPL = @REPLACE_FREXPL@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_ISFINITE = @REPLACE_ISFINITE@
+REPLACE_ISINF = @REPLACE_ISINF@
+REPLACE_ISNAN = @REPLACE_ISNAN@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LDEXPL = @REPLACE_LDEXPL@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NAN = @REPLACE_NAN@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_ROUND = @REPLACE_ROUND@
+REPLACE_ROUNDF = @REPLACE_ROUNDF@
+REPLACE_ROUNDL = @REPLACE_ROUNDL@
+REPLACE_SIGNBIT = @REPLACE_SIGNBIT@
+REPLACE_SIGNBIT_USING_GCC = @REPLACE_SIGNBIT_USING_GCC@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_TRUNCL = @REPLACE_TRUNCL@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+TEXI2DVI = @TEXI2DVI@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+VERSION = @VERSION@
+VOID_UNSETENV = @VOID_UNSETENV@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.5 gnits subdir-objects no-dependencies
+
+# Version information according to Woe32 conventions.
+EXTRA_DIST = alloca.in.h array-mergesort.h c-strcaseeq.h errno.in.h \
+ float.in.h fpucw.h frexp.c frexpl.c fseterr.h stdio-impl.h \
+ getpagesize.c $(top_srcdir)/build-aux/config.rpath \
+ iconv_open-aix.h iconv_open-hpux.h iconv_open-irix.h \
+ iconv_open-osf.h iconv.in.h iconv_open-aix.gperf \
+ iconv_open-hpux.gperf iconv_open-irix.gperf \
+ iconv_open-osf.gperf iconv_open.c float+.h isnan.c \
+ isnand-nolibm.h isnand.c float+.h isnan.c isnanf-nolibm.h \
+ isnanf.c float+.h isnan.c isnanl-nolibm.h isnanl.c \
+ $(top_srcdir)/build-aux/link-warning.h config.charset \
+ ref-add.sin ref-del.sin localename.h malloc.c malloca.h \
+ malloca.valgrind math.in.h mbchar.h mbrtowc.c mbsinit.c \
+ memchr.c memchr.valgrind memcmp2.h memxfrm.h printf-frexp.h \
+ printf-frexp.c printf-frexpl.h relocatable.c relocatable.h \
+ float+.h signbitd.c signbitf.c signbitl.c stdbool.in.h \
+ stdint.in.h stdlib.in.h streq.h iconveh.h string.in.h \
+ unicase.h unicase/cased.h unicase/caseprop.h unictype/bitmap.h \
+ unicase/caseprop.h unicase/ignorable.h unictype/bitmap.h \
+ unicase/locale-languages.h unicase/locale-languages.gperf \
+ unicase/special-casing-table.h \
+ unicase/special-casing-table.gperf unicase/special-casing.h \
+ unicase/casefold.h unicase/simple-mapping.h \
+ unicase/tocasefold.h unicase/simple-mapping.h \
+ unicase/tolower.h unicase/simple-mapping.h unicase/totitle.h \
+ unicase/simple-mapping.h unicase/toupper.h unicase/u-casecmp.h \
+ unicase/u-casecoll.h unicase/u-casefold.h unicase/context.h \
+ unicase/u-casemap.h unicase/unicasemap.h unicase/u-casexfrm.h \
+ unicase/u-ct-casefold.h unicase/context.h \
+ unicase/u-ct-totitle.h unicase/u-is-cased.h \
+ unicase/invariant.h unicase/u-is-invariant.h \
+ unicase/u-totitle.h unicase/u-casecmp.h unicase/u-casecoll.h \
+ unicase/u-casefold.h unicase/context.h unicase/u-casemap.h \
+ unicase/unicasemap.h unicase/u-casexfrm.h \
+ unicase/u-ct-casefold.h unicase/context.h \
+ unicase/u-ct-totitle.h unicase/u-is-cased.h \
+ unicase/invariant.h unicase/u-is-invariant.h \
+ unicase/u-totitle.h unicase/u-casecmp.h unicase/u-casecoll.h \
+ unicase/u-casefold.h unicase/context.h unicase/u-casemap.h \
+ unicase/unicasemap.h unicase/u-casexfrm.h \
+ unicase/u-ct-casefold.h unicase/context.h \
+ unicase/u-ct-totitle.h unicase/u-is-cased.h \
+ unicase/invariant.h unicase/u-is-invariant.h \
+ unicase/u-totitle.h unicase/u-casecmp.h unicase/u-casecoll.h \
+ iconveh.h localcharset.h striconveha.h uniconv.h \
+ uniconv/u-conv-from-enc.h uniconv/u-conv-to-enc.h \
+ uniconv/u-strconv-from-enc.h uniconv/u-strconv-to-enc.h \
+ uniconv/u-conv-from-enc.h uniconv/u-conv-to-enc.h \
+ uniconv/u-strconv-from-enc.h uniconv/u-strconv-to-enc.h \
+ uniconv/u-strconv-from-enc.h unictype.h unictype/bidi_of.h \
+ unictype/blocks.h unictype/categ_C.h unictype/categ_Cc.h \
+ unictype/categ_Cf.h unictype/categ_Cn.h unictype/categ_Co.h \
+ unictype/categ_Cs.h unictype/categ_L.h unictype/categ_Ll.h \
+ unictype/categ_Lm.h unictype/categ_Lo.h unictype/categ_Lt.h \
+ unictype/categ_Lu.h unictype/categ_M.h unictype/categ_Mc.h \
+ unictype/categ_Me.h unictype/categ_Mn.h unictype/categ_N.h \
+ unictype/categ_Nd.h unictype/categ_Nl.h unictype/categ_No.h \
+ unictype/categ_P.h unictype/categ_Pc.h unictype/categ_Pd.h \
+ unictype/categ_Pe.h unictype/categ_Pf.h unictype/categ_Pi.h \
+ unictype/categ_Po.h unictype/categ_Ps.h unictype/categ_S.h \
+ unictype/categ_Sc.h unictype/categ_Sk.h unictype/categ_Sm.h \
+ unictype/categ_So.h unictype/categ_Z.h unictype/categ_Zl.h \
+ unictype/categ_Zp.h unictype/categ_Zs.h unictype/categ_of.h \
+ unictype/bitmap.h unictype/combining.h unictype/bitmap.h \
+ unictype/ctype_alnum.h unictype/bitmap.h \
+ unictype/ctype_alpha.h unictype/bitmap.h \
+ unictype/ctype_blank.h unictype/bitmap.h \
+ unictype/ctype_cntrl.h unictype/bitmap.h \
+ unictype/ctype_digit.h unictype/bitmap.h \
+ unictype/ctype_graph.h unictype/bitmap.h \
+ unictype/ctype_lower.h unictype/bitmap.h \
+ unictype/ctype_print.h unictype/bitmap.h \
+ unictype/ctype_punct.h unictype/bitmap.h \
+ unictype/ctype_space.h unictype/bitmap.h \
+ unictype/ctype_upper.h unictype/bitmap.h \
+ unictype/ctype_xdigit.h unictype/decdigit.h unictype/digit.h \
+ unictype/mirror.h unictype/numeric.h unictype/bitmap.h \
+ unictype/pr_alphabetic.h unictype/bitmap.h \
+ unictype/pr_ascii_hex_digit.h unictype/bitmap.h \
+ unictype/pr_bidi_arabic_digit.h unictype/bitmap.h \
+ unictype/pr_bidi_arabic_right_to_left.h unictype/bitmap.h \
+ unictype/pr_bidi_block_separator.h unictype/bitmap.h \
+ unictype/pr_bidi_boundary_neutral.h unictype/bitmap.h \
+ unictype/pr_bidi_common_separator.h unictype/bitmap.h \
+ unictype/pr_bidi_control.h unictype/bitmap.h \
+ unictype/pr_bidi_embedding_or_override.h unictype/bitmap.h \
+ unictype/pr_bidi_eur_num_separator.h unictype/bitmap.h \
+ unictype/pr_bidi_eur_num_terminator.h unictype/bitmap.h \
+ unictype/pr_bidi_european_digit.h unictype/bitmap.h \
+ unictype/pr_bidi_hebrew_right_to_left.h unictype/bitmap.h \
+ unictype/pr_bidi_left_to_right.h unictype/bitmap.h \
+ unictype/pr_bidi_non_spacing_mark.h unictype/bitmap.h \
+ unictype/pr_bidi_other_neutral.h unictype/bitmap.h \
+ unictype/pr_bidi_pdf.h unictype/bitmap.h \
+ unictype/pr_bidi_segment_separator.h unictype/bitmap.h \
+ unictype/pr_bidi_whitespace.h unictype/pr_byname.h \
+ unictype/pr_byname.gperf unictype/bitmap.h \
+ unictype/pr_combining.h unictype/bitmap.h \
+ unictype/pr_composite.h unictype/bitmap.h \
+ unictype/pr_currency_symbol.h unictype/bitmap.h \
+ unictype/pr_dash.h unictype/bitmap.h \
+ unictype/pr_decimal_digit.h unictype/bitmap.h \
+ unictype/pr_default_ignorable_code_point.h unictype/bitmap.h \
+ unictype/pr_deprecated.h unictype/bitmap.h \
+ unictype/pr_diacritic.h unictype/bitmap.h \
+ unictype/pr_extender.h unictype/bitmap.h \
+ unictype/pr_format_control.h unictype/bitmap.h \
+ unictype/pr_grapheme_base.h unictype/bitmap.h \
+ unictype/pr_grapheme_extend.h unictype/bitmap.h \
+ unictype/pr_grapheme_link.h unictype/bitmap.h \
+ unictype/pr_hex_digit.h unictype/bitmap.h unictype/pr_hyphen.h \
+ unictype/bitmap.h unictype/pr_id_continue.h unictype/bitmap.h \
+ unictype/pr_id_start.h unictype/bitmap.h \
+ unictype/pr_ideographic.h unictype/bitmap.h \
+ unictype/pr_ids_binary_operator.h unictype/bitmap.h \
+ unictype/pr_ids_trinary_operator.h unictype/bitmap.h \
+ unictype/pr_ignorable_control.h unictype/bitmap.h \
+ unictype/pr_iso_control.h unictype/bitmap.h \
+ unictype/pr_join_control.h unictype/bitmap.h \
+ unictype/pr_left_of_pair.h unictype/bitmap.h \
+ unictype/pr_line_separator.h unictype/bitmap.h \
+ unictype/pr_logical_order_exception.h unictype/bitmap.h \
+ unictype/pr_lowercase.h unictype/bitmap.h unictype/pr_math.h \
+ unictype/bitmap.h unictype/pr_non_break.h unictype/bitmap.h \
+ unictype/pr_not_a_character.h unictype/bitmap.h \
+ unictype/pr_numeric.h unictype/bitmap.h \
+ unictype/pr_other_alphabetic.h unictype/bitmap.h \
+ unictype/pr_other_default_ignorable_code_point.h \
+ unictype/bitmap.h unictype/pr_other_grapheme_extend.h \
+ unictype/bitmap.h unictype/pr_other_id_continue.h \
+ unictype/bitmap.h unictype/pr_other_id_start.h \
+ unictype/bitmap.h unictype/pr_other_lowercase.h \
+ unictype/bitmap.h unictype/pr_other_math.h unictype/bitmap.h \
+ unictype/pr_other_uppercase.h unictype/bitmap.h \
+ unictype/pr_paired_punctuation.h unictype/bitmap.h \
+ unictype/pr_paragraph_separator.h unictype/bitmap.h \
+ unictype/pr_pattern_syntax.h unictype/bitmap.h \
+ unictype/pr_pattern_white_space.h unictype/bitmap.h \
+ unictype/pr_private_use.h unictype/bitmap.h \
+ unictype/pr_punctuation.h unictype/bitmap.h \
+ unictype/pr_quotation_mark.h unictype/bitmap.h \
+ unictype/pr_radical.h unictype/bitmap.h \
+ unictype/pr_sentence_terminal.h unictype/bitmap.h \
+ unictype/pr_soft_dotted.h unictype/bitmap.h \
+ unictype/pr_space.h unictype/bitmap.h \
+ unictype/pr_terminal_punctuation.h unictype/bitmap.h \
+ unictype/pr_titlecase.h unictype/bitmap.h \
+ unictype/pr_unassigned_code_value.h unictype/bitmap.h \
+ unictype/pr_unified_ideograph.h unictype/bitmap.h \
+ unictype/pr_uppercase.h unictype/bitmap.h \
+ unictype/pr_variation_selector.h unictype/bitmap.h \
+ unictype/pr_white_space.h unictype/bitmap.h \
+ unictype/pr_xid_continue.h unictype/bitmap.h \
+ unictype/pr_xid_start.h unictype/bitmap.h \
+ unictype/pr_zero_width.h unictype/scripts_byname.h \
+ unictype/scripts.h unictype/scripts_byname.gperf \
+ unictype/identsyntaxmap.h unictype/sy_c_ident.h \
+ unictype/identsyntaxmap.h unictype/sy_java_ident.h unilbrk.h \
+ unilbrk/lbrkprop1.h unilbrk/lbrkprop2.h unilbrk/lbrktables.h \
+ uniwidth/cjk.h uniwidth/cjk.h uniwidth/cjk.h \
+ unilbrk/ulc-common.h uniname.h uniname/gen-uninames.lisp \
+ uniname/uninames.h uninorm.h uninorm/decompose-internal.h \
+ uninorm/composition-table.h uninorm/composition-table.gperf \
+ uninorm/decompose-internal.h uninorm/normalize-internal.h \
+ uninorm/decomposition-table.h uninorm/decomposition-table1.h \
+ uninorm/decomposition-table2.h uninorm/normalize-internal.h \
+ uninorm/normalize-internal.h uninorm/normalize-internal.h \
+ uninorm/normalize-internal.h uninorm/normalize-internal.h \
+ uninorm/normalize-internal.h uninorm/u-normalize-internal.h \
+ uninorm/u-normcmp.h uninorm/u-normcoll.h uninorm/u-normxfrm.h \
+ uninorm/normalize-internal.h uninorm/u-normalize-internal.h \
+ uninorm/u-normcmp.h uninorm/u-normcoll.h uninorm/u-normxfrm.h \
+ uninorm/normalize-internal.h uninorm/u-normalize-internal.h \
+ uninorm/u-normcmp.h uninorm/u-normcoll.h uninorm/u-normxfrm.h \
+ unistd.in.h unistdio.h printf-args.c printf-args.h \
+ unistdio/u-printf-args.h unistdio/u-asnprintf.h \
+ unistdio/u-asprintf.h printf-parse.c printf-parse.h \
+ unistdio/u-printf-parse.h unistdio/u-snprintf.h \
+ unistdio/u-sprintf.h unistdio/u-asnprintf.h \
+ unistdio/u-asprintf.h unistdio/u-snprintf.h \
+ unistdio/u-sprintf.h vasnprintf.c unistdio/u-vasprintf.h \
+ unistdio/u-vsnprintf.h unistdio/u-vsprintf.h vasnprintf.c \
+ unistdio/u-vasprintf.h unistdio/u-vsnprintf.h \
+ unistdio/u-vsprintf.h unistdio/u-asnprintf.h \
+ unistdio/u-asprintf.h printf-parse.c printf-parse.h \
+ unistdio/u-printf-parse.h unistdio/u-snprintf.h \
+ unistdio/u-sprintf.h unistdio/u-asnprintf.h \
+ unistdio/u-asprintf.h unistdio/u-snprintf.h \
+ unistdio/u-sprintf.h vasnprintf.c unistdio/u-vasprintf.h \
+ unistdio/u-vsnprintf.h unistdio/u-vsprintf.h vasnprintf.c \
+ unistdio/u-vasprintf.h unistdio/u-vsnprintf.h \
+ unistdio/u-vsprintf.h unistdio/u-asnprintf.h \
+ unistdio/u-asprintf.h printf-parse.c printf-parse.h \
+ unistdio/u-printf-parse.h unistdio/u-snprintf.h \
+ unistdio/u-sprintf.h unistdio/u-asnprintf.h \
+ unistdio/u-asprintf.h unistdio/u-snprintf.h \
+ unistdio/u-sprintf.h vasnprintf.c unistdio/u-vasprintf.h \
+ unistdio/u-vsnprintf.h unistdio/u-vsprintf.h vasnprintf.c \
+ unistdio/u-vasprintf.h unistdio/u-vsnprintf.h \
+ unistdio/u-vsprintf.h unistdio/u-asnprintf.h \
+ unistdio/u-asprintf.h printf-parse.c printf-parse.h \
+ unistdio/u-printf-parse.h unistdio/u-snprintf.h \
+ unistdio/u-sprintf.h vasnprintf.c unistdio/u-vasprintf.h \
+ unistdio/u-vsnprintf.h unistdio/u-vsprintf.h unistr.h \
+ unistr/u-cmp2.h unistr/u-cpy.h unistr/u-cpy-alloc.h \
+ unistr/u-endswith.h unistr/u-move.h unistr/u-set.h \
+ unistr/u-startswith.h unistr/u-stpcpy.h unistr/u-stpncpy.h \
+ unistr/u-strcat.h unistr/u-strcoll.h unistr/u-strcpy.h \
+ unistr/u-strcspn.h unistr/u-strdup.h unistr/u-strlen.h \
+ unistr/u-strncat.h unistr/u-strncpy.h unistr/u-strnlen.h \
+ unistr/u-strpbrk.h unistr/u-strspn.h unistr/u-strstr.h \
+ unistr/u-strtok.h unistr/u-cmp2.h unistr/u-cpy.h \
+ unistr/u-cpy-alloc.h unistr/u-endswith.h unistr/u-move.h \
+ unistr/u-set.h unistr/u-startswith.h unistr/u-stpcpy.h \
+ unistr/u-stpncpy.h unistr/u-strcat.h unistr/u-strcoll.h \
+ unistr/u-strcpy.h unistr/u-strdup.h unistr/u-strlen.h \
+ unistr/u-strncat.h unistr/u-strncpy.h unistr/u-strnlen.h \
+ unistr/u-strstr.h unistr/u-strtok.h unistr/u-cmp2.h \
+ unistr/u-cpy.h unistr/u-cpy-alloc.h unistr/u-endswith.h \
+ unistr/u-move.h unistr/u-startswith.h unistr/u-stpcpy.h \
+ unistr/u-stpncpy.h unistr/u-strcoll.h unistr/u-strcspn.h \
+ unistr/u-strdup.h unistr/u-strnlen.h unistr/u-strpbrk.h \
+ unistr/u-strspn.h unistr/u-strstr.h unistr/u-strtok.h \
+ unitypes.h uniwbrk.h uniwbrk/wbrktable.h \
+ uniwbrk/u-wordbreaks.h uniwbrk/u-wordbreaks.h \
+ uniwbrk/u-wordbreaks.h uniwbrk/wbrkprop.h localcharset.h \
+ uniwidth.h uniwidth/cjk.h wchar.in.h wctype.in.h wcwidth.c \
+ stdint.mini.h libunistring.sym declared.sh libunistring.rc
+BUILT_SOURCES = $(ALLOCA_H) configmake.h $(ERRNO_H) $(FLOAT_H) \
+ $(ICONV_H) iconv_open-aix.h iconv_open-hpux.h \
+ iconv_open-irix.h iconv_open-osf.h math.h $(STDBOOL_H) \
+ $(STDINT_H) stdlib.h string.h unicase/locale-languages.h \
+ unicase/special-casing-table.h unictype/pr_byname.h \
+ unictype/scripts_byname.h uninorm/composition-table.h unistd.h \
+ $(WCHAR_H) $(WCTYPE_H) unistring/stdbool.h unistring/stdint.h \
+ unistring/localcharset.h unistring/iconveh.h
+# We distribute it because declared.sh relies on GNU sed.
+MOSTLYCLEANFILES = core *.stackdump core *.stackdump alloca.h \
+ alloca.h-t errno.h errno.h-t float.h float.h-t iconv.h \
+ iconv.h-t iconv_open-aix.h-t iconv_open-hpux.h-t \
+ iconv_open-irix.h-t iconv_open-osf.h-t math.h math.h-t \
+ stdbool.h stdbool.h-t stdint.h stdint.h-t stdlib.h stdlib.h-t \
+ string.h string.h-t unicase/locale-languages.h-t \
+ unicase/special-casing-table.h-t unictype/pr_byname.h-t \
+ unictype/scripts_byname.h-t uninorm/composition-table.h-t \
+ unistd.h unistd.h-t wchar.h wchar.h-t wctype.h wctype.h-t \
+ unistring/stdbool.h-t unistring/stdint.h-t \
+ unistring/localcharset.h-t unistring/iconveh.h-t \
+ libunistring.sym-t config.h config.h-t $(am__append_4)
+CLEANFILES = configmake.h configmake.h-t charset.alias ref-add.sed \
+ ref-del.sed unistring/stdbool.h unistring/stdint.h \
+ unistring/localcharset.h unistring/iconveh.h
+DISTCLEANFILES =
+MAINTAINERCLEANFILES = iconv_open-aix.h iconv_open-hpux.h \
+ iconv_open-irix.h iconv_open-osf.h unicase/locale-languages.h \
+ unicase/special-casing-table.h unictype/pr_byname.h \
+ unictype/scripts_byname.h uninorm/composition-table.h \
+ libunistring.sym
+SUFFIXES = .sed .sin
+lib_LTLIBRARIES = libunistring.la
+nobase_include_HEADERS = \
+ unitypes.h \
+ unistr.h \
+ uniconv.h \
+ unistdio.h \
+ uniname.h \
+ unictype.h \
+ uniwidth.h \
+ uniwbrk.h \
+ unilbrk.h \
+ uninorm.h \
+ unicase.h \
+ unistring/inline.h
+
+noinst_HEADERS = \
+ unistring-notinline.h
+
+
+# Parametrization of the 'relocatable-lib-lgpl' module.
+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_builddir) -I$(top_srcdir) \
+ -DIN_LIBUNISTRING -DDEPENDS_ON_LIBICONV=1
+
+# Rules generated and collected by gnulib-tool.
+
+# Additional source files.
+libunistring_la_SOURCES = c-ctype.h c-ctype.c c-strcase.h \
+ c-strcasecmp.c c-strncasecmp.c fseterr.c localcharset.h \
+ localcharset.c localename.c malloca.c mbchar.c mbiter.h \
+ mbsnlen.c memcmp2.c memxfrm.c minmax.h printf-frexp.c \
+ printf-frexpl.c size_max.h striconveh.h striconveh.c \
+ striconveha.h striconveha.c unicase/cased.c \
+ unicase/empty-prefix-context.c unicase/empty-suffix-context.c \
+ unicase/ignorable.c unicase/locale-language.c \
+ unicase/special-casing.c unicase/tocasefold.c \
+ unicase/tolower.c unicase/totitle.c unicase/toupper.c \
+ unicase/u16-casecmp.c unicase/u16-casecoll.c \
+ unicase/u16-casefold.c unicase/u16-casemap.c \
+ unicase/u16-casexfrm.c unicase/u16-ct-casefold.c \
+ unicase/u16-ct-tolower.c unicase/u16-ct-totitle.c \
+ unicase/u16-ct-toupper.c unicase/u16-is-cased.c \
+ unicase/u16-is-casefolded.c unicase/u16-is-invariant.c \
+ unicase/u16-is-lowercase.c unicase/u16-is-titlecase.c \
+ unicase/u16-is-uppercase.c unicase/u16-tolower.c \
+ unicase/u16-totitle.c unicase/u16-toupper.c \
+ unicase/u32-casecmp.c unicase/u32-casecoll.c \
+ unicase/u32-casefold.c unicase/u32-casemap.c \
+ unicase/u32-casexfrm.c unicase/u32-ct-casefold.c \
+ unicase/u32-ct-tolower.c unicase/u32-ct-totitle.c \
+ unicase/u32-ct-toupper.c unicase/u32-is-cased.c \
+ unicase/u32-is-casefolded.c unicase/u32-is-invariant.c \
+ unicase/u32-is-lowercase.c unicase/u32-is-titlecase.c \
+ unicase/u32-is-uppercase.c unicase/u32-tolower.c \
+ unicase/u32-totitle.c unicase/u32-toupper.c \
+ unicase/u8-casecmp.c unicase/u8-casecoll.c \
+ unicase/u8-casefold.c unicase/u8-casemap.c \
+ unicase/u8-casexfrm.c unicase/u8-ct-casefold.c \
+ unicase/u8-ct-tolower.c unicase/u8-ct-totitle.c \
+ unicase/u8-ct-toupper.c unicase/u8-is-cased.c \
+ unicase/u8-is-casefolded.c unicase/u8-is-invariant.c \
+ unicase/u8-is-lowercase.c unicase/u8-is-titlecase.c \
+ unicase/u8-is-uppercase.c unicase/u8-tolower.c \
+ unicase/u8-totitle.c unicase/u8-toupper.c \
+ unicase/ulc-casecmp.c unicase/ulc-casecoll.c \
+ unicase/ulc-casexfrm.c uniconv/u16-conv-from-enc.c \
+ uniconv/u16-conv-to-enc.c uniconv/u16-strconv-from-enc.c \
+ uniconv/u16-strconv-from-locale.c uniconv/u16-strconv-to-enc.c \
+ uniconv/u16-strconv-to-locale.c uniconv/u32-conv-from-enc.c \
+ uniconv/u32-conv-to-enc.c uniconv/u32-strconv-from-enc.c \
+ uniconv/u32-strconv-from-locale.c uniconv/u32-strconv-to-enc.c \
+ uniconv/u32-strconv-to-locale.c uniconv/u8-conv-from-enc.c \
+ uniconv/u8-conv-to-enc.c uniconv/u8-strconv-from-enc.c \
+ uniconv/u8-strconv-from-locale.c uniconv/u8-strconv-to-enc.c \
+ uniconv/u8-strconv-to-locale.c unictype/bidi_byname.c \
+ unictype/bidi_name.c unictype/bidi_of.c unictype/bidi_test.c \
+ unictype/blocks.c unictype/block_test.c unictype/categ_C.c \
+ unictype/categ_Cc.c unictype/categ_Cf.c unictype/categ_Cn.c \
+ unictype/categ_Co.c unictype/categ_Cs.c unictype/categ_L.c \
+ unictype/categ_Ll.c unictype/categ_Lm.c unictype/categ_Lo.c \
+ unictype/categ_Lt.c unictype/categ_Lu.c unictype/categ_M.c \
+ unictype/categ_Mc.c unictype/categ_Me.c unictype/categ_Mn.c \
+ unictype/categ_N.c unictype/categ_Nd.c unictype/categ_Nl.c \
+ unictype/categ_No.c unictype/categ_P.c unictype/categ_Pc.c \
+ unictype/categ_Pd.c unictype/categ_Pe.c unictype/categ_Pf.c \
+ unictype/categ_Pi.c unictype/categ_Po.c unictype/categ_Ps.c \
+ unictype/categ_S.c unictype/categ_Sc.c unictype/categ_Sk.c \
+ unictype/categ_Sm.c unictype/categ_So.c unictype/categ_Z.c \
+ unictype/categ_Zl.c unictype/categ_Zp.c unictype/categ_Zs.c \
+ unictype/categ_and.c unictype/categ_and_not.c \
+ unictype/categ_byname.c unictype/categ_name.c \
+ unictype/categ_none.c unictype/categ_of.c unictype/categ_or.c \
+ unictype/categ_test.c unictype/combining.c \
+ unictype/ctype_alnum.c unictype/ctype_alpha.c \
+ unictype/ctype_blank.c unictype/ctype_cntrl.c \
+ unictype/ctype_digit.c unictype/ctype_graph.c \
+ unictype/ctype_lower.c unictype/ctype_print.c \
+ unictype/ctype_punct.c unictype/ctype_space.c \
+ unictype/ctype_upper.c unictype/ctype_xdigit.c \
+ unictype/decdigit.c unictype/digit.c unictype/mirror.c \
+ unictype/numeric.c unictype/pr_alphabetic.c \
+ unictype/pr_ascii_hex_digit.c unictype/pr_bidi_arabic_digit.c \
+ unictype/pr_bidi_arabic_right_to_left.c \
+ unictype/pr_bidi_block_separator.c \
+ unictype/pr_bidi_boundary_neutral.c \
+ unictype/pr_bidi_common_separator.c unictype/pr_bidi_control.c \
+ unictype/pr_bidi_embedding_or_override.c \
+ unictype/pr_bidi_eur_num_separator.c \
+ unictype/pr_bidi_eur_num_terminator.c \
+ unictype/pr_bidi_european_digit.c \
+ unictype/pr_bidi_hebrew_right_to_left.c \
+ unictype/pr_bidi_left_to_right.c \
+ unictype/pr_bidi_non_spacing_mark.c \
+ unictype/pr_bidi_other_neutral.c unictype/pr_bidi_pdf.c \
+ unictype/pr_bidi_segment_separator.c \
+ unictype/pr_bidi_whitespace.c unictype/pr_byname.c \
+ unictype/pr_combining.c unictype/pr_composite.c \
+ unictype/pr_currency_symbol.c unictype/pr_dash.c \
+ unictype/pr_decimal_digit.c \
+ unictype/pr_default_ignorable_code_point.c \
+ unictype/pr_deprecated.c unictype/pr_diacritic.c \
+ unictype/pr_extender.c unictype/pr_format_control.c \
+ unictype/pr_grapheme_base.c unictype/pr_grapheme_extend.c \
+ unictype/pr_grapheme_link.c unictype/pr_hex_digit.c \
+ unictype/pr_hyphen.c unictype/pr_id_continue.c \
+ unictype/pr_id_start.c unictype/pr_ideographic.c \
+ unictype/pr_ids_binary_operator.c \
+ unictype/pr_ids_trinary_operator.c \
+ unictype/pr_ignorable_control.c unictype/pr_iso_control.c \
+ unictype/pr_join_control.c unictype/pr_left_of_pair.c \
+ unictype/pr_line_separator.c \
+ unictype/pr_logical_order_exception.c unictype/pr_lowercase.c \
+ unictype/pr_math.c unictype/pr_non_break.c \
+ unictype/pr_not_a_character.c unictype/pr_numeric.c \
+ unictype/pr_other_alphabetic.c \
+ unictype/pr_other_default_ignorable_code_point.c \
+ unictype/pr_other_grapheme_extend.c \
+ unictype/pr_other_id_continue.c unictype/pr_other_id_start.c \
+ unictype/pr_other_lowercase.c unictype/pr_other_math.c \
+ unictype/pr_other_uppercase.c unictype/pr_paired_punctuation.c \
+ unictype/pr_paragraph_separator.c unictype/pr_pattern_syntax.c \
+ unictype/pr_pattern_white_space.c unictype/pr_private_use.c \
+ unictype/pr_punctuation.c unictype/pr_quotation_mark.c \
+ unictype/pr_radical.c unictype/pr_sentence_terminal.c \
+ unictype/pr_soft_dotted.c unictype/pr_space.c \
+ unictype/pr_terminal_punctuation.c unictype/pr_test.c \
+ unictype/pr_titlecase.c unictype/pr_unassigned_code_value.c \
+ unictype/pr_unified_ideograph.c unictype/pr_uppercase.c \
+ unictype/pr_variation_selector.c unictype/pr_white_space.c \
+ unictype/pr_xid_continue.c unictype/pr_xid_start.c \
+ unictype/pr_zero_width.c unictype/scripts.c \
+ unictype/sy_c_ident.c unictype/sy_c_whitespace.c \
+ unictype/sy_java_ident.c unictype/sy_java_whitespace.c \
+ unilbrk/lbrktables.c unilbrk/u16-possible-linebreaks.c \
+ unilbrk/u16-width-linebreaks.c \
+ unilbrk/u32-possible-linebreaks.c \
+ unilbrk/u32-width-linebreaks.c \
+ unilbrk/u8-possible-linebreaks.c unilbrk/u8-width-linebreaks.c \
+ unilbrk/ulc-common.c unilbrk/ulc-possible-linebreaks.c \
+ unilbrk/ulc-width-linebreaks.c uniname/uniname.c \
+ uninorm/canonical-decomposition.c \
+ uninorm/compat-decomposition.c uninorm/composition.c \
+ uninorm/decompose-internal.c uninorm/decomposing-form.c \
+ uninorm/decomposition.c uninorm/decomposition-table.c \
+ uninorm/uninorm-filter.c uninorm/nfc.c uninorm/nfd.c \
+ uninorm/nfkc.c uninorm/nfkd.c uninorm/u16-normalize.c \
+ uninorm/u16-normcmp.c uninorm/u16-normcoll.c \
+ uninorm/u16-normxfrm.c uninorm/u32-normalize.c \
+ uninorm/u32-normcmp.c uninorm/u32-normcoll.c \
+ uninorm/u32-normxfrm.c uninorm/u8-normalize.c \
+ uninorm/u8-normcmp.c uninorm/u8-normcoll.c \
+ uninorm/u8-normxfrm.c unistdio/u-printf-args.c \
+ unistdio/u16-asnprintf.c unistdio/u16-asprintf.c \
+ unistdio/u16-printf-parse.c unistdio/u16-snprintf.c \
+ unistdio/u16-sprintf.c unistdio/u16-u16-asnprintf.c \
+ unistdio/u16-u16-asprintf.c unistdio/u16-u16-snprintf.c \
+ unistdio/u16-u16-sprintf.c unistdio/u16-u16-vasnprintf.c \
+ unistdio/u16-u16-vasprintf.c unistdio/u16-u16-vsnprintf.c \
+ unistdio/u16-u16-vsprintf.c unistdio/u16-vasnprintf.c \
+ unistdio/u16-vasprintf.c unistdio/u16-vsnprintf.c \
+ unistdio/u16-vsprintf.c unistdio/u32-asnprintf.c \
+ unistdio/u32-asprintf.c unistdio/u32-printf-parse.c \
+ unistdio/u32-snprintf.c unistdio/u32-sprintf.c \
+ unistdio/u32-u32-asnprintf.c unistdio/u32-u32-asprintf.c \
+ unistdio/u32-u32-snprintf.c unistdio/u32-u32-sprintf.c \
+ unistdio/u32-u32-vasnprintf.c unistdio/u32-u32-vasprintf.c \
+ unistdio/u32-u32-vsnprintf.c unistdio/u32-u32-vsprintf.c \
+ unistdio/u32-vasnprintf.c unistdio/u32-vasprintf.c \
+ unistdio/u32-vsnprintf.c unistdio/u32-vsprintf.c \
+ unistdio/u8-asnprintf.c unistdio/u8-asprintf.c \
+ unistdio/u8-printf-parse.c unistdio/u8-snprintf.c \
+ unistdio/u8-sprintf.c unistdio/u8-u8-asnprintf.c \
+ unistdio/u8-u8-asprintf.c unistdio/u8-u8-snprintf.c \
+ unistdio/u8-u8-sprintf.c unistdio/u8-u8-vasnprintf.c \
+ unistdio/u8-u8-vasprintf.c unistdio/u8-u8-vsnprintf.c \
+ unistdio/u8-u8-vsprintf.c unistdio/u8-vasnprintf.c \
+ unistdio/u8-vasprintf.c unistdio/u8-vsnprintf.c \
+ unistdio/u8-vsprintf.c unistdio/ulc-asnprintf.c \
+ unistdio/ulc-asprintf.c unistdio/ulc-fprintf.c \
+ unistdio/ulc-printf-parse.c unistdio/ulc-snprintf.c \
+ unistdio/ulc-sprintf.c unistdio/ulc-vasnprintf.c \
+ unistdio/ulc-vasprintf.c unistdio/ulc-vfprintf.c \
+ unistdio/ulc-vsnprintf.c unistdio/ulc-vsprintf.c \
+ unistr/u16-check.c unistr/u16-chr.c unistr/u16-cmp.c \
+ unistr/u16-cmp2.c unistr/u16-cpy.c unistr/u16-cpy-alloc.c \
+ unistr/u16-endswith.c unistr/u16-mblen.c unistr/u16-mbsnlen.c \
+ unistr/u16-mbtouc.c unistr/u16-mbtouc-aux.c \
+ unistr/u16-mbtouc-unsafe.c unistr/u16-mbtouc-unsafe-aux.c \
+ unistr/u16-mbtoucr.c unistr/u16-move.c unistr/u16-next.c \
+ unistr/u16-prev.c unistr/u16-set.c unistr/u16-startswith.c \
+ unistr/u16-stpcpy.c unistr/u16-stpncpy.c unistr/u16-strcat.c \
+ unistr/u16-strchr.c unistr/u16-strcmp.c unistr/u16-strcoll.c \
+ unistr/u16-strcpy.c unistr/u16-strcspn.c unistr/u16-strdup.c \
+ unistr/u16-strlen.c unistr/u16-strmblen.c \
+ unistr/u16-strmbtouc.c unistr/u16-strncat.c \
+ unistr/u16-strncmp.c unistr/u16-strncpy.c unistr/u16-strnlen.c \
+ unistr/u16-strpbrk.c unistr/u16-strrchr.c unistr/u16-strspn.c \
+ unistr/u16-strstr.c unistr/u16-strtok.c unistr/u16-to-u32.c \
+ unistr/u16-to-u8.c unistr/u16-uctomb.c unistr/u16-uctomb-aux.c \
+ unistr/u32-check.c unistr/u32-chr.c unistr/u32-cmp.c \
+ unistr/u32-cmp2.c unistr/u32-cpy.c unistr/u32-cpy-alloc.c \
+ unistr/u32-endswith.c unistr/u32-mblen.c unistr/u32-mbsnlen.c \
+ unistr/u32-mbtouc.c unistr/u32-mbtouc-unsafe.c \
+ unistr/u32-mbtoucr.c unistr/u32-move.c unistr/u32-next.c \
+ unistr/u32-prev.c unistr/u32-set.c unistr/u32-startswith.c \
+ unistr/u32-stpcpy.c unistr/u32-stpncpy.c unistr/u32-strcat.c \
+ unistr/u32-strchr.c unistr/u32-strcmp.c unistr/u32-strcoll.c \
+ unistr/u32-strcpy.c unistr/u32-strcspn.c unistr/u32-strdup.c \
+ unistr/u32-strlen.c unistr/u32-strmblen.c \
+ unistr/u32-strmbtouc.c unistr/u32-strncat.c \
+ unistr/u32-strncmp.c unistr/u32-strncpy.c unistr/u32-strnlen.c \
+ unistr/u32-strpbrk.c unistr/u32-strrchr.c unistr/u32-strspn.c \
+ unistr/u32-strstr.c unistr/u32-strtok.c unistr/u32-to-u16.c \
+ unistr/u32-to-u8.c unistr/u32-uctomb.c unistr/u8-check.c \
+ unistr/u8-chr.c unistr/u8-cmp.c unistr/u8-cmp2.c \
+ unistr/u8-cpy.c unistr/u8-cpy-alloc.c unistr/u8-endswith.c \
+ unistr/u8-mblen.c unistr/u8-mbsnlen.c unistr/u8-mbtouc.c \
+ unistr/u8-mbtouc-aux.c unistr/u8-mbtouc-unsafe.c \
+ unistr/u8-mbtouc-unsafe-aux.c unistr/u8-mbtoucr.c \
+ unistr/u8-move.c unistr/u8-next.c unistr/u8-prev.c \
+ unistr/u8-set.c unistr/u8-startswith.c unistr/u8-stpcpy.c \
+ unistr/u8-stpncpy.c unistr/u8-strcat.c unistr/u8-strchr.c \
+ unistr/u8-strcmp.c unistr/u8-strcoll.c unistr/u8-strcpy.c \
+ unistr/u8-strcspn.c unistr/u8-strdup.c unistr/u8-strlen.c \
+ unistr/u8-strmblen.c unistr/u8-strmbtouc.c unistr/u8-strncat.c \
+ unistr/u8-strncmp.c unistr/u8-strncpy.c unistr/u8-strnlen.c \
+ unistr/u8-strpbrk.c unistr/u8-strrchr.c unistr/u8-strspn.c \
+ unistr/u8-strstr.c unistr/u8-strtok.c unistr/u8-to-u16.c \
+ unistr/u8-to-u32.c unistr/u8-uctomb.c unistr/u8-uctomb-aux.c \
+ uniwbrk/wbrktable.c uniwbrk/u16-wordbreaks.c \
+ uniwbrk/u32-wordbreaks.c uniwbrk/u8-wordbreaks.c \
+ uniwbrk/ulc-wordbreaks.c uniwbrk/wordbreak-property.c \
+ uniwidth/u16-strwidth.c uniwidth/u16-width.c \
+ uniwidth/u32-strwidth.c uniwidth/u32-width.c \
+ uniwidth/u8-strwidth.c uniwidth/u8-width.c uniwidth/width.c \
+ verify.h xsize.h version.c $(am__append_2)
+libunistring_la_LIBADD = $(gl_LTLIBOBJS) $(WOE32_LIBADD)
+libunistring_la_DEPENDENCIES = $(gl_LTLIBOBJS) $(WOE32_LIBADD)
+EXTRA_libunistring_la_SOURCES = frexp.c frexpl.c getpagesize.c \
+ iconv_open.c isnan.c isnand.c isnan.c isnanf.c isnan.c \
+ isnanl.c malloc.c mbrtowc.c mbsinit.c memchr.c printf-frexp.c \
+ relocatable.c signbitd.c signbitf.c signbitl.c printf-args.c \
+ printf-parse.c vasnprintf.c vasnprintf.c printf-parse.c \
+ vasnprintf.c vasnprintf.c printf-parse.c vasnprintf.c \
+ vasnprintf.c printf-parse.c vasnprintf.c wcwidth.c
+
+# How to build libunistring.la.
+libunistring_la_LDFLAGS = $(AM_LDFLAGS) $(am__append_1) \
+ $(am__append_3) -version-info \
+ $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) -rpath $(libdir) \
+ @INTL_MACOSX_LIBS@ -no-undefined
+GPERF = gperf
+LINK_WARNING_H = $(top_srcdir)/build-aux/link-warning.h
+charset_alias = $(DESTDIR)$(libdir)/charset.alias
+charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
+
+# The <stdbool.h> and <stdint.h> replacements that can be installed.
+
+# localcharset.h is not public, but its contents is documented.
+
+# iconveh.h is not public, but its contents is documented.
+
+# unistring/version.h is public.
+
+# unistring/woe32dll.h is not public, but is included by other header files.
+nobase_nodist_include_HEADERS = unistring/stdbool.h unistring/stdint.h \
+ unistring/localcharset.h unistring/iconveh.h \
+ unistring/version.h unistring/woe32dll.h
+
+# Directories that contain some CLEANFILES.
+CLEANDIRS =
+CLEANDIRS_NOT_IN_SRCDIR = unistring
+
+# List of header files that get installed and that declare 'extern' symbols.
+HEADERS_WITH_EXTERNS = \
+ unitypes.h \
+ unistr.h \
+ uniconv.h \
+ unistdio.h \
+ uniname.h \
+ unictype.h \
+ uniwidth.h \
+ uniwbrk.h \
+ unilbrk.h \
+ uninorm.h \
+ unicase.h \
+ localcharset.h \
+ iconveh.h \
+ unistring/version.in.h
+
+@WOE32_FALSE@WOE32_LIBADD =
+@WOE32_TRUE@WOE32_LIBADD = libunistring.res.lo
+
+# Libtool's library version information for libunistring.
+# See the libtool documentation, section "Library interface versions".
+LTV_CURRENT = 1
+LTV_REVISION = 0
+LTV_AGE = 1
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .sed .sin .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Makefile.gnulib $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnits lib/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+exported.sh: $(top_builddir)/config.status $(srcdir)/exported.sh.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
+ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+ }
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+ done
+
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+unicase/$(am__dirstamp):
+ @$(MKDIR_P) unicase
+ @: > unicase/$(am__dirstamp)
+unicase/cased.lo: unicase/$(am__dirstamp)
+unicase/empty-prefix-context.lo: unicase/$(am__dirstamp)
+unicase/empty-suffix-context.lo: unicase/$(am__dirstamp)
+unicase/ignorable.lo: unicase/$(am__dirstamp)
+unicase/locale-language.lo: unicase/$(am__dirstamp)
+unicase/special-casing.lo: unicase/$(am__dirstamp)
+unicase/tocasefold.lo: unicase/$(am__dirstamp)
+unicase/tolower.lo: unicase/$(am__dirstamp)
+unicase/totitle.lo: unicase/$(am__dirstamp)
+unicase/toupper.lo: unicase/$(am__dirstamp)
+unicase/u16-casecmp.lo: unicase/$(am__dirstamp)
+unicase/u16-casecoll.lo: unicase/$(am__dirstamp)
+unicase/u16-casefold.lo: unicase/$(am__dirstamp)
+unicase/u16-casemap.lo: unicase/$(am__dirstamp)
+unicase/u16-casexfrm.lo: unicase/$(am__dirstamp)
+unicase/u16-ct-casefold.lo: unicase/$(am__dirstamp)
+unicase/u16-ct-tolower.lo: unicase/$(am__dirstamp)
+unicase/u16-ct-totitle.lo: unicase/$(am__dirstamp)
+unicase/u16-ct-toupper.lo: unicase/$(am__dirstamp)
+unicase/u16-is-cased.lo: unicase/$(am__dirstamp)
+unicase/u16-is-casefolded.lo: unicase/$(am__dirstamp)
+unicase/u16-is-invariant.lo: unicase/$(am__dirstamp)
+unicase/u16-is-lowercase.lo: unicase/$(am__dirstamp)
+unicase/u16-is-titlecase.lo: unicase/$(am__dirstamp)
+unicase/u16-is-uppercase.lo: unicase/$(am__dirstamp)
+unicase/u16-tolower.lo: unicase/$(am__dirstamp)
+unicase/u16-totitle.lo: unicase/$(am__dirstamp)
+unicase/u16-toupper.lo: unicase/$(am__dirstamp)
+unicase/u32-casecmp.lo: unicase/$(am__dirstamp)
+unicase/u32-casecoll.lo: unicase/$(am__dirstamp)
+unicase/u32-casefold.lo: unicase/$(am__dirstamp)
+unicase/u32-casemap.lo: unicase/$(am__dirstamp)
+unicase/u32-casexfrm.lo: unicase/$(am__dirstamp)
+unicase/u32-ct-casefold.lo: unicase/$(am__dirstamp)
+unicase/u32-ct-tolower.lo: unicase/$(am__dirstamp)
+unicase/u32-ct-totitle.lo: unicase/$(am__dirstamp)
+unicase/u32-ct-toupper.lo: unicase/$(am__dirstamp)
+unicase/u32-is-cased.lo: unicase/$(am__dirstamp)
+unicase/u32-is-casefolded.lo: unicase/$(am__dirstamp)
+unicase/u32-is-invariant.lo: unicase/$(am__dirstamp)
+unicase/u32-is-lowercase.lo: unicase/$(am__dirstamp)
+unicase/u32-is-titlecase.lo: unicase/$(am__dirstamp)
+unicase/u32-is-uppercase.lo: unicase/$(am__dirstamp)
+unicase/u32-tolower.lo: unicase/$(am__dirstamp)
+unicase/u32-totitle.lo: unicase/$(am__dirstamp)
+unicase/u32-toupper.lo: unicase/$(am__dirstamp)
+unicase/u8-casecmp.lo: unicase/$(am__dirstamp)
+unicase/u8-casecoll.lo: unicase/$(am__dirstamp)
+unicase/u8-casefold.lo: unicase/$(am__dirstamp)
+unicase/u8-casemap.lo: unicase/$(am__dirstamp)
+unicase/u8-casexfrm.lo: unicase/$(am__dirstamp)
+unicase/u8-ct-casefold.lo: unicase/$(am__dirstamp)
+unicase/u8-ct-tolower.lo: unicase/$(am__dirstamp)
+unicase/u8-ct-totitle.lo: unicase/$(am__dirstamp)
+unicase/u8-ct-toupper.lo: unicase/$(am__dirstamp)
+unicase/u8-is-cased.lo: unicase/$(am__dirstamp)
+unicase/u8-is-casefolded.lo: unicase/$(am__dirstamp)
+unicase/u8-is-invariant.lo: unicase/$(am__dirstamp)
+unicase/u8-is-lowercase.lo: unicase/$(am__dirstamp)
+unicase/u8-is-titlecase.lo: unicase/$(am__dirstamp)
+unicase/u8-is-uppercase.lo: unicase/$(am__dirstamp)
+unicase/u8-tolower.lo: unicase/$(am__dirstamp)
+unicase/u8-totitle.lo: unicase/$(am__dirstamp)
+unicase/u8-toupper.lo: unicase/$(am__dirstamp)
+unicase/ulc-casecmp.lo: unicase/$(am__dirstamp)
+unicase/ulc-casecoll.lo: unicase/$(am__dirstamp)
+unicase/ulc-casexfrm.lo: unicase/$(am__dirstamp)
+uniconv/$(am__dirstamp):
+ @$(MKDIR_P) uniconv
+ @: > uniconv/$(am__dirstamp)
+uniconv/u16-conv-from-enc.lo: uniconv/$(am__dirstamp)
+uniconv/u16-conv-to-enc.lo: uniconv/$(am__dirstamp)
+uniconv/u16-strconv-from-enc.lo: uniconv/$(am__dirstamp)
+uniconv/u16-strconv-from-locale.lo: uniconv/$(am__dirstamp)
+uniconv/u16-strconv-to-enc.lo: uniconv/$(am__dirstamp)
+uniconv/u16-strconv-to-locale.lo: uniconv/$(am__dirstamp)
+uniconv/u32-conv-from-enc.lo: uniconv/$(am__dirstamp)
+uniconv/u32-conv-to-enc.lo: uniconv/$(am__dirstamp)
+uniconv/u32-strconv-from-enc.lo: uniconv/$(am__dirstamp)
+uniconv/u32-strconv-from-locale.lo: uniconv/$(am__dirstamp)
+uniconv/u32-strconv-to-enc.lo: uniconv/$(am__dirstamp)
+uniconv/u32-strconv-to-locale.lo: uniconv/$(am__dirstamp)
+uniconv/u8-conv-from-enc.lo: uniconv/$(am__dirstamp)
+uniconv/u8-conv-to-enc.lo: uniconv/$(am__dirstamp)
+uniconv/u8-strconv-from-enc.lo: uniconv/$(am__dirstamp)
+uniconv/u8-strconv-from-locale.lo: uniconv/$(am__dirstamp)
+uniconv/u8-strconv-to-enc.lo: uniconv/$(am__dirstamp)
+uniconv/u8-strconv-to-locale.lo: uniconv/$(am__dirstamp)
+unictype/$(am__dirstamp):
+ @$(MKDIR_P) unictype
+ @: > unictype/$(am__dirstamp)
+unictype/bidi_byname.lo: unictype/$(am__dirstamp)
+unictype/bidi_name.lo: unictype/$(am__dirstamp)
+unictype/bidi_of.lo: unictype/$(am__dirstamp)
+unictype/bidi_test.lo: unictype/$(am__dirstamp)
+unictype/blocks.lo: unictype/$(am__dirstamp)
+unictype/block_test.lo: unictype/$(am__dirstamp)
+unictype/categ_C.lo: unictype/$(am__dirstamp)
+unictype/categ_Cc.lo: unictype/$(am__dirstamp)
+unictype/categ_Cf.lo: unictype/$(am__dirstamp)
+unictype/categ_Cn.lo: unictype/$(am__dirstamp)
+unictype/categ_Co.lo: unictype/$(am__dirstamp)
+unictype/categ_Cs.lo: unictype/$(am__dirstamp)
+unictype/categ_L.lo: unictype/$(am__dirstamp)
+unictype/categ_Ll.lo: unictype/$(am__dirstamp)
+unictype/categ_Lm.lo: unictype/$(am__dirstamp)
+unictype/categ_Lo.lo: unictype/$(am__dirstamp)
+unictype/categ_Lt.lo: unictype/$(am__dirstamp)
+unictype/categ_Lu.lo: unictype/$(am__dirstamp)
+unictype/categ_M.lo: unictype/$(am__dirstamp)
+unictype/categ_Mc.lo: unictype/$(am__dirstamp)
+unictype/categ_Me.lo: unictype/$(am__dirstamp)
+unictype/categ_Mn.lo: unictype/$(am__dirstamp)
+unictype/categ_N.lo: unictype/$(am__dirstamp)
+unictype/categ_Nd.lo: unictype/$(am__dirstamp)
+unictype/categ_Nl.lo: unictype/$(am__dirstamp)
+unictype/categ_No.lo: unictype/$(am__dirstamp)
+unictype/categ_P.lo: unictype/$(am__dirstamp)
+unictype/categ_Pc.lo: unictype/$(am__dirstamp)
+unictype/categ_Pd.lo: unictype/$(am__dirstamp)
+unictype/categ_Pe.lo: unictype/$(am__dirstamp)
+unictype/categ_Pf.lo: unictype/$(am__dirstamp)
+unictype/categ_Pi.lo: unictype/$(am__dirstamp)
+unictype/categ_Po.lo: unictype/$(am__dirstamp)
+unictype/categ_Ps.lo: unictype/$(am__dirstamp)
+unictype/categ_S.lo: unictype/$(am__dirstamp)
+unictype/categ_Sc.lo: unictype/$(am__dirstamp)
+unictype/categ_Sk.lo: unictype/$(am__dirstamp)
+unictype/categ_Sm.lo: unictype/$(am__dirstamp)
+unictype/categ_So.lo: unictype/$(am__dirstamp)
+unictype/categ_Z.lo: unictype/$(am__dirstamp)
+unictype/categ_Zl.lo: unictype/$(am__dirstamp)
+unictype/categ_Zp.lo: unictype/$(am__dirstamp)
+unictype/categ_Zs.lo: unictype/$(am__dirstamp)
+unictype/categ_and.lo: unictype/$(am__dirstamp)
+unictype/categ_and_not.lo: unictype/$(am__dirstamp)
+unictype/categ_byname.lo: unictype/$(am__dirstamp)
+unictype/categ_name.lo: unictype/$(am__dirstamp)
+unictype/categ_none.lo: unictype/$(am__dirstamp)
+unictype/categ_of.lo: unictype/$(am__dirstamp)
+unictype/categ_or.lo: unictype/$(am__dirstamp)
+unictype/categ_test.lo: unictype/$(am__dirstamp)
+unictype/combining.lo: unictype/$(am__dirstamp)
+unictype/ctype_alnum.lo: unictype/$(am__dirstamp)
+unictype/ctype_alpha.lo: unictype/$(am__dirstamp)
+unictype/ctype_blank.lo: unictype/$(am__dirstamp)
+unictype/ctype_cntrl.lo: unictype/$(am__dirstamp)
+unictype/ctype_digit.lo: unictype/$(am__dirstamp)
+unictype/ctype_graph.lo: unictype/$(am__dirstamp)
+unictype/ctype_lower.lo: unictype/$(am__dirstamp)
+unictype/ctype_print.lo: unictype/$(am__dirstamp)
+unictype/ctype_punct.lo: unictype/$(am__dirstamp)
+unictype/ctype_space.lo: unictype/$(am__dirstamp)
+unictype/ctype_upper.lo: unictype/$(am__dirstamp)
+unictype/ctype_xdigit.lo: unictype/$(am__dirstamp)
+unictype/decdigit.lo: unictype/$(am__dirstamp)
+unictype/digit.lo: unictype/$(am__dirstamp)
+unictype/mirror.lo: unictype/$(am__dirstamp)
+unictype/numeric.lo: unictype/$(am__dirstamp)
+unictype/pr_alphabetic.lo: unictype/$(am__dirstamp)
+unictype/pr_ascii_hex_digit.lo: unictype/$(am__dirstamp)
+unictype/pr_bidi_arabic_digit.lo: unictype/$(am__dirstamp)
+unictype/pr_bidi_arabic_right_to_left.lo: unictype/$(am__dirstamp)
+unictype/pr_bidi_block_separator.lo: unictype/$(am__dirstamp)
+unictype/pr_bidi_boundary_neutral.lo: unictype/$(am__dirstamp)
+unictype/pr_bidi_common_separator.lo: unictype/$(am__dirstamp)
+unictype/pr_bidi_control.lo: unictype/$(am__dirstamp)
+unictype/pr_bidi_embedding_or_override.lo: unictype/$(am__dirstamp)
+unictype/pr_bidi_eur_num_separator.lo: unictype/$(am__dirstamp)
+unictype/pr_bidi_eur_num_terminator.lo: unictype/$(am__dirstamp)
+unictype/pr_bidi_european_digit.lo: unictype/$(am__dirstamp)
+unictype/pr_bidi_hebrew_right_to_left.lo: unictype/$(am__dirstamp)
+unictype/pr_bidi_left_to_right.lo: unictype/$(am__dirstamp)
+unictype/pr_bidi_non_spacing_mark.lo: unictype/$(am__dirstamp)
+unictype/pr_bidi_other_neutral.lo: unictype/$(am__dirstamp)
+unictype/pr_bidi_pdf.lo: unictype/$(am__dirstamp)
+unictype/pr_bidi_segment_separator.lo: unictype/$(am__dirstamp)
+unictype/pr_bidi_whitespace.lo: unictype/$(am__dirstamp)
+unictype/pr_byname.lo: unictype/$(am__dirstamp)
+unictype/pr_combining.lo: unictype/$(am__dirstamp)
+unictype/pr_composite.lo: unictype/$(am__dirstamp)
+unictype/pr_currency_symbol.lo: unictype/$(am__dirstamp)
+unictype/pr_dash.lo: unictype/$(am__dirstamp)
+unictype/pr_decimal_digit.lo: unictype/$(am__dirstamp)
+unictype/pr_default_ignorable_code_point.lo: unictype/$(am__dirstamp)
+unictype/pr_deprecated.lo: unictype/$(am__dirstamp)
+unictype/pr_diacritic.lo: unictype/$(am__dirstamp)
+unictype/pr_extender.lo: unictype/$(am__dirstamp)
+unictype/pr_format_control.lo: unictype/$(am__dirstamp)
+unictype/pr_grapheme_base.lo: unictype/$(am__dirstamp)
+unictype/pr_grapheme_extend.lo: unictype/$(am__dirstamp)
+unictype/pr_grapheme_link.lo: unictype/$(am__dirstamp)
+unictype/pr_hex_digit.lo: unictype/$(am__dirstamp)
+unictype/pr_hyphen.lo: unictype/$(am__dirstamp)
+unictype/pr_id_continue.lo: unictype/$(am__dirstamp)
+unictype/pr_id_start.lo: unictype/$(am__dirstamp)
+unictype/pr_ideographic.lo: unictype/$(am__dirstamp)
+unictype/pr_ids_binary_operator.lo: unictype/$(am__dirstamp)
+unictype/pr_ids_trinary_operator.lo: unictype/$(am__dirstamp)
+unictype/pr_ignorable_control.lo: unictype/$(am__dirstamp)
+unictype/pr_iso_control.lo: unictype/$(am__dirstamp)
+unictype/pr_join_control.lo: unictype/$(am__dirstamp)
+unictype/pr_left_of_pair.lo: unictype/$(am__dirstamp)
+unictype/pr_line_separator.lo: unictype/$(am__dirstamp)
+unictype/pr_logical_order_exception.lo: unictype/$(am__dirstamp)
+unictype/pr_lowercase.lo: unictype/$(am__dirstamp)
+unictype/pr_math.lo: unictype/$(am__dirstamp)
+unictype/pr_non_break.lo: unictype/$(am__dirstamp)
+unictype/pr_not_a_character.lo: unictype/$(am__dirstamp)
+unictype/pr_numeric.lo: unictype/$(am__dirstamp)
+unictype/pr_other_alphabetic.lo: unictype/$(am__dirstamp)
+unictype/pr_other_default_ignorable_code_point.lo: \
+ unictype/$(am__dirstamp)
+unictype/pr_other_grapheme_extend.lo: unictype/$(am__dirstamp)
+unictype/pr_other_id_continue.lo: unictype/$(am__dirstamp)
+unictype/pr_other_id_start.lo: unictype/$(am__dirstamp)
+unictype/pr_other_lowercase.lo: unictype/$(am__dirstamp)
+unictype/pr_other_math.lo: unictype/$(am__dirstamp)
+unictype/pr_other_uppercase.lo: unictype/$(am__dirstamp)
+unictype/pr_paired_punctuation.lo: unictype/$(am__dirstamp)
+unictype/pr_paragraph_separator.lo: unictype/$(am__dirstamp)
+unictype/pr_pattern_syntax.lo: unictype/$(am__dirstamp)
+unictype/pr_pattern_white_space.lo: unictype/$(am__dirstamp)
+unictype/pr_private_use.lo: unictype/$(am__dirstamp)
+unictype/pr_punctuation.lo: unictype/$(am__dirstamp)
+unictype/pr_quotation_mark.lo: unictype/$(am__dirstamp)
+unictype/pr_radical.lo: unictype/$(am__dirstamp)
+unictype/pr_sentence_terminal.lo: unictype/$(am__dirstamp)
+unictype/pr_soft_dotted.lo: unictype/$(am__dirstamp)
+unictype/pr_space.lo: unictype/$(am__dirstamp)
+unictype/pr_terminal_punctuation.lo: unictype/$(am__dirstamp)
+unictype/pr_test.lo: unictype/$(am__dirstamp)
+unictype/pr_titlecase.lo: unictype/$(am__dirstamp)
+unictype/pr_unassigned_code_value.lo: unictype/$(am__dirstamp)
+unictype/pr_unified_ideograph.lo: unictype/$(am__dirstamp)
+unictype/pr_uppercase.lo: unictype/$(am__dirstamp)
+unictype/pr_variation_selector.lo: unictype/$(am__dirstamp)
+unictype/pr_white_space.lo: unictype/$(am__dirstamp)
+unictype/pr_xid_continue.lo: unictype/$(am__dirstamp)
+unictype/pr_xid_start.lo: unictype/$(am__dirstamp)
+unictype/pr_zero_width.lo: unictype/$(am__dirstamp)
+unictype/scripts.lo: unictype/$(am__dirstamp)
+unictype/sy_c_ident.lo: unictype/$(am__dirstamp)
+unictype/sy_c_whitespace.lo: unictype/$(am__dirstamp)
+unictype/sy_java_ident.lo: unictype/$(am__dirstamp)
+unictype/sy_java_whitespace.lo: unictype/$(am__dirstamp)
+unilbrk/$(am__dirstamp):
+ @$(MKDIR_P) unilbrk
+ @: > unilbrk/$(am__dirstamp)
+unilbrk/lbrktables.lo: unilbrk/$(am__dirstamp)
+unilbrk/u16-possible-linebreaks.lo: unilbrk/$(am__dirstamp)
+unilbrk/u16-width-linebreaks.lo: unilbrk/$(am__dirstamp)
+unilbrk/u32-possible-linebreaks.lo: unilbrk/$(am__dirstamp)
+unilbrk/u32-width-linebreaks.lo: unilbrk/$(am__dirstamp)
+unilbrk/u8-possible-linebreaks.lo: unilbrk/$(am__dirstamp)
+unilbrk/u8-width-linebreaks.lo: unilbrk/$(am__dirstamp)
+unilbrk/ulc-common.lo: unilbrk/$(am__dirstamp)
+unilbrk/ulc-possible-linebreaks.lo: unilbrk/$(am__dirstamp)
+unilbrk/ulc-width-linebreaks.lo: unilbrk/$(am__dirstamp)
+uniname/$(am__dirstamp):
+ @$(MKDIR_P) uniname
+ @: > uniname/$(am__dirstamp)
+uniname/uniname.lo: uniname/$(am__dirstamp)
+uninorm/$(am__dirstamp):
+ @$(MKDIR_P) uninorm
+ @: > uninorm/$(am__dirstamp)
+uninorm/canonical-decomposition.lo: uninorm/$(am__dirstamp)
+uninorm/compat-decomposition.lo: uninorm/$(am__dirstamp)
+uninorm/composition.lo: uninorm/$(am__dirstamp)
+uninorm/decompose-internal.lo: uninorm/$(am__dirstamp)
+uninorm/decomposing-form.lo: uninorm/$(am__dirstamp)
+uninorm/decomposition.lo: uninorm/$(am__dirstamp)
+uninorm/decomposition-table.lo: uninorm/$(am__dirstamp)
+uninorm/uninorm-filter.lo: uninorm/$(am__dirstamp)
+uninorm/nfc.lo: uninorm/$(am__dirstamp)
+uninorm/nfd.lo: uninorm/$(am__dirstamp)
+uninorm/nfkc.lo: uninorm/$(am__dirstamp)
+uninorm/nfkd.lo: uninorm/$(am__dirstamp)
+uninorm/u16-normalize.lo: uninorm/$(am__dirstamp)
+uninorm/u16-normcmp.lo: uninorm/$(am__dirstamp)
+uninorm/u16-normcoll.lo: uninorm/$(am__dirstamp)
+uninorm/u16-normxfrm.lo: uninorm/$(am__dirstamp)
+uninorm/u32-normalize.lo: uninorm/$(am__dirstamp)
+uninorm/u32-normcmp.lo: uninorm/$(am__dirstamp)
+uninorm/u32-normcoll.lo: uninorm/$(am__dirstamp)
+uninorm/u32-normxfrm.lo: uninorm/$(am__dirstamp)
+uninorm/u8-normalize.lo: uninorm/$(am__dirstamp)
+uninorm/u8-normcmp.lo: uninorm/$(am__dirstamp)
+uninorm/u8-normcoll.lo: uninorm/$(am__dirstamp)
+uninorm/u8-normxfrm.lo: uninorm/$(am__dirstamp)
+unistdio/$(am__dirstamp):
+ @$(MKDIR_P) unistdio
+ @: > unistdio/$(am__dirstamp)
+unistdio/u-printf-args.lo: unistdio/$(am__dirstamp)
+unistdio/u16-asnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u16-asprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u16-printf-parse.lo: unistdio/$(am__dirstamp)
+unistdio/u16-snprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u16-sprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u16-u16-asnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u16-u16-asprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u16-u16-snprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u16-u16-sprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u16-u16-vasnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u16-u16-vasprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u16-u16-vsnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u16-u16-vsprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u16-vasnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u16-vasprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u16-vsnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u16-vsprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u32-asnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u32-asprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u32-printf-parse.lo: unistdio/$(am__dirstamp)
+unistdio/u32-snprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u32-sprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u32-u32-asnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u32-u32-asprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u32-u32-snprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u32-u32-sprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u32-u32-vasnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u32-u32-vasprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u32-u32-vsnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u32-u32-vsprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u32-vasnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u32-vasprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u32-vsnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u32-vsprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u8-asnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u8-asprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u8-printf-parse.lo: unistdio/$(am__dirstamp)
+unistdio/u8-snprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u8-sprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u8-u8-asnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u8-u8-asprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u8-u8-snprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u8-u8-sprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u8-u8-vasnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u8-u8-vasprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u8-u8-vsnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u8-u8-vsprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u8-vasnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u8-vasprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u8-vsnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/u8-vsprintf.lo: unistdio/$(am__dirstamp)
+unistdio/ulc-asnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/ulc-asprintf.lo: unistdio/$(am__dirstamp)
+unistdio/ulc-fprintf.lo: unistdio/$(am__dirstamp)
+unistdio/ulc-printf-parse.lo: unistdio/$(am__dirstamp)
+unistdio/ulc-snprintf.lo: unistdio/$(am__dirstamp)
+unistdio/ulc-sprintf.lo: unistdio/$(am__dirstamp)
+unistdio/ulc-vasnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/ulc-vasprintf.lo: unistdio/$(am__dirstamp)
+unistdio/ulc-vfprintf.lo: unistdio/$(am__dirstamp)
+unistdio/ulc-vsnprintf.lo: unistdio/$(am__dirstamp)
+unistdio/ulc-vsprintf.lo: unistdio/$(am__dirstamp)
+unistr/$(am__dirstamp):
+ @$(MKDIR_P) unistr
+ @: > unistr/$(am__dirstamp)
+unistr/u16-check.lo: unistr/$(am__dirstamp)
+unistr/u16-chr.lo: unistr/$(am__dirstamp)
+unistr/u16-cmp.lo: unistr/$(am__dirstamp)
+unistr/u16-cmp2.lo: unistr/$(am__dirstamp)
+unistr/u16-cpy.lo: unistr/$(am__dirstamp)
+unistr/u16-cpy-alloc.lo: unistr/$(am__dirstamp)
+unistr/u16-endswith.lo: unistr/$(am__dirstamp)
+unistr/u16-mblen.lo: unistr/$(am__dirstamp)
+unistr/u16-mbsnlen.lo: unistr/$(am__dirstamp)
+unistr/u16-mbtouc.lo: unistr/$(am__dirstamp)
+unistr/u16-mbtouc-aux.lo: unistr/$(am__dirstamp)
+unistr/u16-mbtouc-unsafe.lo: unistr/$(am__dirstamp)
+unistr/u16-mbtouc-unsafe-aux.lo: unistr/$(am__dirstamp)
+unistr/u16-mbtoucr.lo: unistr/$(am__dirstamp)
+unistr/u16-move.lo: unistr/$(am__dirstamp)
+unistr/u16-next.lo: unistr/$(am__dirstamp)
+unistr/u16-prev.lo: unistr/$(am__dirstamp)
+unistr/u16-set.lo: unistr/$(am__dirstamp)
+unistr/u16-startswith.lo: unistr/$(am__dirstamp)
+unistr/u16-stpcpy.lo: unistr/$(am__dirstamp)
+unistr/u16-stpncpy.lo: unistr/$(am__dirstamp)
+unistr/u16-strcat.lo: unistr/$(am__dirstamp)
+unistr/u16-strchr.lo: unistr/$(am__dirstamp)
+unistr/u16-strcmp.lo: unistr/$(am__dirstamp)
+unistr/u16-strcoll.lo: unistr/$(am__dirstamp)
+unistr/u16-strcpy.lo: unistr/$(am__dirstamp)
+unistr/u16-strcspn.lo: unistr/$(am__dirstamp)
+unistr/u16-strdup.lo: unistr/$(am__dirstamp)
+unistr/u16-strlen.lo: unistr/$(am__dirstamp)
+unistr/u16-strmblen.lo: unistr/$(am__dirstamp)
+unistr/u16-strmbtouc.lo: unistr/$(am__dirstamp)
+unistr/u16-strncat.lo: unistr/$(am__dirstamp)
+unistr/u16-strncmp.lo: unistr/$(am__dirstamp)
+unistr/u16-strncpy.lo: unistr/$(am__dirstamp)
+unistr/u16-strnlen.lo: unistr/$(am__dirstamp)
+unistr/u16-strpbrk.lo: unistr/$(am__dirstamp)
+unistr/u16-strrchr.lo: unistr/$(am__dirstamp)
+unistr/u16-strspn.lo: unistr/$(am__dirstamp)
+unistr/u16-strstr.lo: unistr/$(am__dirstamp)
+unistr/u16-strtok.lo: unistr/$(am__dirstamp)
+unistr/u16-to-u32.lo: unistr/$(am__dirstamp)
+unistr/u16-to-u8.lo: unistr/$(am__dirstamp)
+unistr/u16-uctomb.lo: unistr/$(am__dirstamp)
+unistr/u16-uctomb-aux.lo: unistr/$(am__dirstamp)
+unistr/u32-check.lo: unistr/$(am__dirstamp)
+unistr/u32-chr.lo: unistr/$(am__dirstamp)
+unistr/u32-cmp.lo: unistr/$(am__dirstamp)
+unistr/u32-cmp2.lo: unistr/$(am__dirstamp)
+unistr/u32-cpy.lo: unistr/$(am__dirstamp)
+unistr/u32-cpy-alloc.lo: unistr/$(am__dirstamp)
+unistr/u32-endswith.lo: unistr/$(am__dirstamp)
+unistr/u32-mblen.lo: unistr/$(am__dirstamp)
+unistr/u32-mbsnlen.lo: unistr/$(am__dirstamp)
+unistr/u32-mbtouc.lo: unistr/$(am__dirstamp)
+unistr/u32-mbtouc-unsafe.lo: unistr/$(am__dirstamp)
+unistr/u32-mbtoucr.lo: unistr/$(am__dirstamp)
+unistr/u32-move.lo: unistr/$(am__dirstamp)
+unistr/u32-next.lo: unistr/$(am__dirstamp)
+unistr/u32-prev.lo: unistr/$(am__dirstamp)
+unistr/u32-set.lo: unistr/$(am__dirstamp)
+unistr/u32-startswith.lo: unistr/$(am__dirstamp)
+unistr/u32-stpcpy.lo: unistr/$(am__dirstamp)
+unistr/u32-stpncpy.lo: unistr/$(am__dirstamp)
+unistr/u32-strcat.lo: unistr/$(am__dirstamp)
+unistr/u32-strchr.lo: unistr/$(am__dirstamp)
+unistr/u32-strcmp.lo: unistr/$(am__dirstamp)
+unistr/u32-strcoll.lo: unistr/$(am__dirstamp)
+unistr/u32-strcpy.lo: unistr/$(am__dirstamp)
+unistr/u32-strcspn.lo: unistr/$(am__dirstamp)
+unistr/u32-strdup.lo: unistr/$(am__dirstamp)
+unistr/u32-strlen.lo: unistr/$(am__dirstamp)
+unistr/u32-strmblen.lo: unistr/$(am__dirstamp)
+unistr/u32-strmbtouc.lo: unistr/$(am__dirstamp)
+unistr/u32-strncat.lo: unistr/$(am__dirstamp)
+unistr/u32-strncmp.lo: unistr/$(am__dirstamp)
+unistr/u32-strncpy.lo: unistr/$(am__dirstamp)
+unistr/u32-strnlen.lo: unistr/$(am__dirstamp)
+unistr/u32-strpbrk.lo: unistr/$(am__dirstamp)
+unistr/u32-strrchr.lo: unistr/$(am__dirstamp)
+unistr/u32-strspn.lo: unistr/$(am__dirstamp)
+unistr/u32-strstr.lo: unistr/$(am__dirstamp)
+unistr/u32-strtok.lo: unistr/$(am__dirstamp)
+unistr/u32-to-u16.lo: unistr/$(am__dirstamp)
+unistr/u32-to-u8.lo: unistr/$(am__dirstamp)
+unistr/u32-uctomb.lo: unistr/$(am__dirstamp)
+unistr/u8-check.lo: unistr/$(am__dirstamp)
+unistr/u8-chr.lo: unistr/$(am__dirstamp)
+unistr/u8-cmp.lo: unistr/$(am__dirstamp)
+unistr/u8-cmp2.lo: unistr/$(am__dirstamp)
+unistr/u8-cpy.lo: unistr/$(am__dirstamp)
+unistr/u8-cpy-alloc.lo: unistr/$(am__dirstamp)
+unistr/u8-endswith.lo: unistr/$(am__dirstamp)
+unistr/u8-mblen.lo: unistr/$(am__dirstamp)
+unistr/u8-mbsnlen.lo: unistr/$(am__dirstamp)
+unistr/u8-mbtouc.lo: unistr/$(am__dirstamp)
+unistr/u8-mbtouc-aux.lo: unistr/$(am__dirstamp)
+unistr/u8-mbtouc-unsafe.lo: unistr/$(am__dirstamp)
+unistr/u8-mbtouc-unsafe-aux.lo: unistr/$(am__dirstamp)
+unistr/u8-mbtoucr.lo: unistr/$(am__dirstamp)
+unistr/u8-move.lo: unistr/$(am__dirstamp)
+unistr/u8-next.lo: unistr/$(am__dirstamp)
+unistr/u8-prev.lo: unistr/$(am__dirstamp)
+unistr/u8-set.lo: unistr/$(am__dirstamp)
+unistr/u8-startswith.lo: unistr/$(am__dirstamp)
+unistr/u8-stpcpy.lo: unistr/$(am__dirstamp)
+unistr/u8-stpncpy.lo: unistr/$(am__dirstamp)
+unistr/u8-strcat.lo: unistr/$(am__dirstamp)
+unistr/u8-strchr.lo: unistr/$(am__dirstamp)
+unistr/u8-strcmp.lo: unistr/$(am__dirstamp)
+unistr/u8-strcoll.lo: unistr/$(am__dirstamp)
+unistr/u8-strcpy.lo: unistr/$(am__dirstamp)
+unistr/u8-strcspn.lo: unistr/$(am__dirstamp)
+unistr/u8-strdup.lo: unistr/$(am__dirstamp)
+unistr/u8-strlen.lo: unistr/$(am__dirstamp)
+unistr/u8-strmblen.lo: unistr/$(am__dirstamp)
+unistr/u8-strmbtouc.lo: unistr/$(am__dirstamp)
+unistr/u8-strncat.lo: unistr/$(am__dirstamp)
+unistr/u8-strncmp.lo: unistr/$(am__dirstamp)
+unistr/u8-strncpy.lo: unistr/$(am__dirstamp)
+unistr/u8-strnlen.lo: unistr/$(am__dirstamp)
+unistr/u8-strpbrk.lo: unistr/$(am__dirstamp)
+unistr/u8-strrchr.lo: unistr/$(am__dirstamp)
+unistr/u8-strspn.lo: unistr/$(am__dirstamp)
+unistr/u8-strstr.lo: unistr/$(am__dirstamp)
+unistr/u8-strtok.lo: unistr/$(am__dirstamp)
+unistr/u8-to-u16.lo: unistr/$(am__dirstamp)
+unistr/u8-to-u32.lo: unistr/$(am__dirstamp)
+unistr/u8-uctomb.lo: unistr/$(am__dirstamp)
+unistr/u8-uctomb-aux.lo: unistr/$(am__dirstamp)
+uniwbrk/$(am__dirstamp):
+ @$(MKDIR_P) uniwbrk
+ @: > uniwbrk/$(am__dirstamp)
+uniwbrk/wbrktable.lo: uniwbrk/$(am__dirstamp)
+uniwbrk/u16-wordbreaks.lo: uniwbrk/$(am__dirstamp)
+uniwbrk/u32-wordbreaks.lo: uniwbrk/$(am__dirstamp)
+uniwbrk/u8-wordbreaks.lo: uniwbrk/$(am__dirstamp)
+uniwbrk/ulc-wordbreaks.lo: uniwbrk/$(am__dirstamp)
+uniwbrk/wordbreak-property.lo: uniwbrk/$(am__dirstamp)
+uniwidth/$(am__dirstamp):
+ @$(MKDIR_P) uniwidth
+ @: > uniwidth/$(am__dirstamp)
+uniwidth/u16-strwidth.lo: uniwidth/$(am__dirstamp)
+uniwidth/u16-width.lo: uniwidth/$(am__dirstamp)
+uniwidth/u32-strwidth.lo: uniwidth/$(am__dirstamp)
+uniwidth/u32-width.lo: uniwidth/$(am__dirstamp)
+uniwidth/u8-strwidth.lo: uniwidth/$(am__dirstamp)
+uniwidth/u8-width.lo: uniwidth/$(am__dirstamp)
+uniwidth/width.lo: uniwidth/$(am__dirstamp)
+../woe32dll/$(am__dirstamp):
+ @$(MKDIR_P) ../woe32dll
+ @: > ../woe32dll/$(am__dirstamp)
+../woe32dll/unistring-exports.lo: ../woe32dll/$(am__dirstamp)
+libunistring.la: $(libunistring_la_OBJECTS) $(libunistring_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libunistring_la_LINK) -rpath $(libdir) $(libunistring_la_OBJECTS) $(libunistring_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f ../woe32dll/unistring-exports.$(OBJEXT)
+ -rm -f ../woe32dll/unistring-exports.lo
+ -rm -f unicase/cased.$(OBJEXT)
+ -rm -f unicase/cased.lo
+ -rm -f unicase/empty-prefix-context.$(OBJEXT)
+ -rm -f unicase/empty-prefix-context.lo
+ -rm -f unicase/empty-suffix-context.$(OBJEXT)
+ -rm -f unicase/empty-suffix-context.lo
+ -rm -f unicase/ignorable.$(OBJEXT)
+ -rm -f unicase/ignorable.lo
+ -rm -f unicase/locale-language.$(OBJEXT)
+ -rm -f unicase/locale-language.lo
+ -rm -f unicase/special-casing.$(OBJEXT)
+ -rm -f unicase/special-casing.lo
+ -rm -f unicase/tocasefold.$(OBJEXT)
+ -rm -f unicase/tocasefold.lo
+ -rm -f unicase/tolower.$(OBJEXT)
+ -rm -f unicase/tolower.lo
+ -rm -f unicase/totitle.$(OBJEXT)
+ -rm -f unicase/totitle.lo
+ -rm -f unicase/toupper.$(OBJEXT)
+ -rm -f unicase/toupper.lo
+ -rm -f unicase/u16-casecmp.$(OBJEXT)
+ -rm -f unicase/u16-casecmp.lo
+ -rm -f unicase/u16-casecoll.$(OBJEXT)
+ -rm -f unicase/u16-casecoll.lo
+ -rm -f unicase/u16-casefold.$(OBJEXT)
+ -rm -f unicase/u16-casefold.lo
+ -rm -f unicase/u16-casemap.$(OBJEXT)
+ -rm -f unicase/u16-casemap.lo
+ -rm -f unicase/u16-casexfrm.$(OBJEXT)
+ -rm -f unicase/u16-casexfrm.lo
+ -rm -f unicase/u16-ct-casefold.$(OBJEXT)
+ -rm -f unicase/u16-ct-casefold.lo
+ -rm -f unicase/u16-ct-tolower.$(OBJEXT)
+ -rm -f unicase/u16-ct-tolower.lo
+ -rm -f unicase/u16-ct-totitle.$(OBJEXT)
+ -rm -f unicase/u16-ct-totitle.lo
+ -rm -f unicase/u16-ct-toupper.$(OBJEXT)
+ -rm -f unicase/u16-ct-toupper.lo
+ -rm -f unicase/u16-is-cased.$(OBJEXT)
+ -rm -f unicase/u16-is-cased.lo
+ -rm -f unicase/u16-is-casefolded.$(OBJEXT)
+ -rm -f unicase/u16-is-casefolded.lo
+ -rm -f unicase/u16-is-invariant.$(OBJEXT)
+ -rm -f unicase/u16-is-invariant.lo
+ -rm -f unicase/u16-is-lowercase.$(OBJEXT)
+ -rm -f unicase/u16-is-lowercase.lo
+ -rm -f unicase/u16-is-titlecase.$(OBJEXT)
+ -rm -f unicase/u16-is-titlecase.lo
+ -rm -f unicase/u16-is-uppercase.$(OBJEXT)
+ -rm -f unicase/u16-is-uppercase.lo
+ -rm -f unicase/u16-tolower.$(OBJEXT)
+ -rm -f unicase/u16-tolower.lo
+ -rm -f unicase/u16-totitle.$(OBJEXT)
+ -rm -f unicase/u16-totitle.lo
+ -rm -f unicase/u16-toupper.$(OBJEXT)
+ -rm -f unicase/u16-toupper.lo
+ -rm -f unicase/u32-casecmp.$(OBJEXT)
+ -rm -f unicase/u32-casecmp.lo
+ -rm -f unicase/u32-casecoll.$(OBJEXT)
+ -rm -f unicase/u32-casecoll.lo
+ -rm -f unicase/u32-casefold.$(OBJEXT)
+ -rm -f unicase/u32-casefold.lo
+ -rm -f unicase/u32-casemap.$(OBJEXT)
+ -rm -f unicase/u32-casemap.lo
+ -rm -f unicase/u32-casexfrm.$(OBJEXT)
+ -rm -f unicase/u32-casexfrm.lo
+ -rm -f unicase/u32-ct-casefold.$(OBJEXT)
+ -rm -f unicase/u32-ct-casefold.lo
+ -rm -f unicase/u32-ct-tolower.$(OBJEXT)
+ -rm -f unicase/u32-ct-tolower.lo
+ -rm -f unicase/u32-ct-totitle.$(OBJEXT)
+ -rm -f unicase/u32-ct-totitle.lo
+ -rm -f unicase/u32-ct-toupper.$(OBJEXT)
+ -rm -f unicase/u32-ct-toupper.lo
+ -rm -f unicase/u32-is-cased.$(OBJEXT)
+ -rm -f unicase/u32-is-cased.lo
+ -rm -f unicase/u32-is-casefolded.$(OBJEXT)
+ -rm -f unicase/u32-is-casefolded.lo
+ -rm -f unicase/u32-is-invariant.$(OBJEXT)
+ -rm -f unicase/u32-is-invariant.lo
+ -rm -f unicase/u32-is-lowercase.$(OBJEXT)
+ -rm -f unicase/u32-is-lowercase.lo
+ -rm -f unicase/u32-is-titlecase.$(OBJEXT)
+ -rm -f unicase/u32-is-titlecase.lo
+ -rm -f unicase/u32-is-uppercase.$(OBJEXT)
+ -rm -f unicase/u32-is-uppercase.lo
+ -rm -f unicase/u32-tolower.$(OBJEXT)
+ -rm -f unicase/u32-tolower.lo
+ -rm -f unicase/u32-totitle.$(OBJEXT)
+ -rm -f unicase/u32-totitle.lo
+ -rm -f unicase/u32-toupper.$(OBJEXT)
+ -rm -f unicase/u32-toupper.lo
+ -rm -f unicase/u8-casecmp.$(OBJEXT)
+ -rm -f unicase/u8-casecmp.lo
+ -rm -f unicase/u8-casecoll.$(OBJEXT)
+ -rm -f unicase/u8-casecoll.lo
+ -rm -f unicase/u8-casefold.$(OBJEXT)
+ -rm -f unicase/u8-casefold.lo
+ -rm -f unicase/u8-casemap.$(OBJEXT)
+ -rm -f unicase/u8-casemap.lo
+ -rm -f unicase/u8-casexfrm.$(OBJEXT)
+ -rm -f unicase/u8-casexfrm.lo
+ -rm -f unicase/u8-ct-casefold.$(OBJEXT)
+ -rm -f unicase/u8-ct-casefold.lo
+ -rm -f unicase/u8-ct-tolower.$(OBJEXT)
+ -rm -f unicase/u8-ct-tolower.lo
+ -rm -f unicase/u8-ct-totitle.$(OBJEXT)
+ -rm -f unicase/u8-ct-totitle.lo
+ -rm -f unicase/u8-ct-toupper.$(OBJEXT)
+ -rm -f unicase/u8-ct-toupper.lo
+ -rm -f unicase/u8-is-cased.$(OBJEXT)
+ -rm -f unicase/u8-is-cased.lo
+ -rm -f unicase/u8-is-casefolded.$(OBJEXT)
+ -rm -f unicase/u8-is-casefolded.lo
+ -rm -f unicase/u8-is-invariant.$(OBJEXT)
+ -rm -f unicase/u8-is-invariant.lo
+ -rm -f unicase/u8-is-lowercase.$(OBJEXT)
+ -rm -f unicase/u8-is-lowercase.lo
+ -rm -f unicase/u8-is-titlecase.$(OBJEXT)
+ -rm -f unicase/u8-is-titlecase.lo
+ -rm -f unicase/u8-is-uppercase.$(OBJEXT)
+ -rm -f unicase/u8-is-uppercase.lo
+ -rm -f unicase/u8-tolower.$(OBJEXT)
+ -rm -f unicase/u8-tolower.lo
+ -rm -f unicase/u8-totitle.$(OBJEXT)
+ -rm -f unicase/u8-totitle.lo
+ -rm -f unicase/u8-toupper.$(OBJEXT)
+ -rm -f unicase/u8-toupper.lo
+ -rm -f unicase/ulc-casecmp.$(OBJEXT)
+ -rm -f unicase/ulc-casecmp.lo
+ -rm -f unicase/ulc-casecoll.$(OBJEXT)
+ -rm -f unicase/ulc-casecoll.lo
+ -rm -f unicase/ulc-casexfrm.$(OBJEXT)
+ -rm -f unicase/ulc-casexfrm.lo
+ -rm -f uniconv/u16-conv-from-enc.$(OBJEXT)
+ -rm -f uniconv/u16-conv-from-enc.lo
+ -rm -f uniconv/u16-conv-to-enc.$(OBJEXT)
+ -rm -f uniconv/u16-conv-to-enc.lo
+ -rm -f uniconv/u16-strconv-from-enc.$(OBJEXT)
+ -rm -f uniconv/u16-strconv-from-enc.lo
+ -rm -f uniconv/u16-strconv-from-locale.$(OBJEXT)
+ -rm -f uniconv/u16-strconv-from-locale.lo
+ -rm -f uniconv/u16-strconv-to-enc.$(OBJEXT)
+ -rm -f uniconv/u16-strconv-to-enc.lo
+ -rm -f uniconv/u16-strconv-to-locale.$(OBJEXT)
+ -rm -f uniconv/u16-strconv-to-locale.lo
+ -rm -f uniconv/u32-conv-from-enc.$(OBJEXT)
+ -rm -f uniconv/u32-conv-from-enc.lo
+ -rm -f uniconv/u32-conv-to-enc.$(OBJEXT)
+ -rm -f uniconv/u32-conv-to-enc.lo
+ -rm -f uniconv/u32-strconv-from-enc.$(OBJEXT)
+ -rm -f uniconv/u32-strconv-from-enc.lo
+ -rm -f uniconv/u32-strconv-from-locale.$(OBJEXT)
+ -rm -f uniconv/u32-strconv-from-locale.lo
+ -rm -f uniconv/u32-strconv-to-enc.$(OBJEXT)
+ -rm -f uniconv/u32-strconv-to-enc.lo
+ -rm -f uniconv/u32-strconv-to-locale.$(OBJEXT)
+ -rm -f uniconv/u32-strconv-to-locale.lo
+ -rm -f uniconv/u8-conv-from-enc.$(OBJEXT)
+ -rm -f uniconv/u8-conv-from-enc.lo
+ -rm -f uniconv/u8-conv-to-enc.$(OBJEXT)
+ -rm -f uniconv/u8-conv-to-enc.lo
+ -rm -f uniconv/u8-strconv-from-enc.$(OBJEXT)
+ -rm -f uniconv/u8-strconv-from-enc.lo
+ -rm -f uniconv/u8-strconv-from-locale.$(OBJEXT)
+ -rm -f uniconv/u8-strconv-from-locale.lo
+ -rm -f uniconv/u8-strconv-to-enc.$(OBJEXT)
+ -rm -f uniconv/u8-strconv-to-enc.lo
+ -rm -f uniconv/u8-strconv-to-locale.$(OBJEXT)
+ -rm -f uniconv/u8-strconv-to-locale.lo
+ -rm -f unictype/bidi_byname.$(OBJEXT)
+ -rm -f unictype/bidi_byname.lo
+ -rm -f unictype/bidi_name.$(OBJEXT)
+ -rm -f unictype/bidi_name.lo
+ -rm -f unictype/bidi_of.$(OBJEXT)
+ -rm -f unictype/bidi_of.lo
+ -rm -f unictype/bidi_test.$(OBJEXT)
+ -rm -f unictype/bidi_test.lo
+ -rm -f unictype/block_test.$(OBJEXT)
+ -rm -f unictype/block_test.lo
+ -rm -f unictype/blocks.$(OBJEXT)
+ -rm -f unictype/blocks.lo
+ -rm -f unictype/categ_C.$(OBJEXT)
+ -rm -f unictype/categ_C.lo
+ -rm -f unictype/categ_Cc.$(OBJEXT)
+ -rm -f unictype/categ_Cc.lo
+ -rm -f unictype/categ_Cf.$(OBJEXT)
+ -rm -f unictype/categ_Cf.lo
+ -rm -f unictype/categ_Cn.$(OBJEXT)
+ -rm -f unictype/categ_Cn.lo
+ -rm -f unictype/categ_Co.$(OBJEXT)
+ -rm -f unictype/categ_Co.lo
+ -rm -f unictype/categ_Cs.$(OBJEXT)
+ -rm -f unictype/categ_Cs.lo
+ -rm -f unictype/categ_L.$(OBJEXT)
+ -rm -f unictype/categ_L.lo
+ -rm -f unictype/categ_Ll.$(OBJEXT)
+ -rm -f unictype/categ_Ll.lo
+ -rm -f unictype/categ_Lm.$(OBJEXT)
+ -rm -f unictype/categ_Lm.lo
+ -rm -f unictype/categ_Lo.$(OBJEXT)
+ -rm -f unictype/categ_Lo.lo
+ -rm -f unictype/categ_Lt.$(OBJEXT)
+ -rm -f unictype/categ_Lt.lo
+ -rm -f unictype/categ_Lu.$(OBJEXT)
+ -rm -f unictype/categ_Lu.lo
+ -rm -f unictype/categ_M.$(OBJEXT)
+ -rm -f unictype/categ_M.lo
+ -rm -f unictype/categ_Mc.$(OBJEXT)
+ -rm -f unictype/categ_Mc.lo
+ -rm -f unictype/categ_Me.$(OBJEXT)
+ -rm -f unictype/categ_Me.lo
+ -rm -f unictype/categ_Mn.$(OBJEXT)
+ -rm -f unictype/categ_Mn.lo
+ -rm -f unictype/categ_N.$(OBJEXT)
+ -rm -f unictype/categ_N.lo
+ -rm -f unictype/categ_Nd.$(OBJEXT)
+ -rm -f unictype/categ_Nd.lo
+ -rm -f unictype/categ_Nl.$(OBJEXT)
+ -rm -f unictype/categ_Nl.lo
+ -rm -f unictype/categ_No.$(OBJEXT)
+ -rm -f unictype/categ_No.lo
+ -rm -f unictype/categ_P.$(OBJEXT)
+ -rm -f unictype/categ_P.lo
+ -rm -f unictype/categ_Pc.$(OBJEXT)
+ -rm -f unictype/categ_Pc.lo
+ -rm -f unictype/categ_Pd.$(OBJEXT)
+ -rm -f unictype/categ_Pd.lo
+ -rm -f unictype/categ_Pe.$(OBJEXT)
+ -rm -f unictype/categ_Pe.lo
+ -rm -f unictype/categ_Pf.$(OBJEXT)
+ -rm -f unictype/categ_Pf.lo
+ -rm -f unictype/categ_Pi.$(OBJEXT)
+ -rm -f unictype/categ_Pi.lo
+ -rm -f unictype/categ_Po.$(OBJEXT)
+ -rm -f unictype/categ_Po.lo
+ -rm -f unictype/categ_Ps.$(OBJEXT)
+ -rm -f unictype/categ_Ps.lo
+ -rm -f unictype/categ_S.$(OBJEXT)
+ -rm -f unictype/categ_S.lo
+ -rm -f unictype/categ_Sc.$(OBJEXT)
+ -rm -f unictype/categ_Sc.lo
+ -rm -f unictype/categ_Sk.$(OBJEXT)
+ -rm -f unictype/categ_Sk.lo
+ -rm -f unictype/categ_Sm.$(OBJEXT)
+ -rm -f unictype/categ_Sm.lo
+ -rm -f unictype/categ_So.$(OBJEXT)
+ -rm -f unictype/categ_So.lo
+ -rm -f unictype/categ_Z.$(OBJEXT)
+ -rm -f unictype/categ_Z.lo
+ -rm -f unictype/categ_Zl.$(OBJEXT)
+ -rm -f unictype/categ_Zl.lo
+ -rm -f unictype/categ_Zp.$(OBJEXT)
+ -rm -f unictype/categ_Zp.lo
+ -rm -f unictype/categ_Zs.$(OBJEXT)
+ -rm -f unictype/categ_Zs.lo
+ -rm -f unictype/categ_and.$(OBJEXT)
+ -rm -f unictype/categ_and.lo
+ -rm -f unictype/categ_and_not.$(OBJEXT)
+ -rm -f unictype/categ_and_not.lo
+ -rm -f unictype/categ_byname.$(OBJEXT)
+ -rm -f unictype/categ_byname.lo
+ -rm -f unictype/categ_name.$(OBJEXT)
+ -rm -f unictype/categ_name.lo
+ -rm -f unictype/categ_none.$(OBJEXT)
+ -rm -f unictype/categ_none.lo
+ -rm -f unictype/categ_of.$(OBJEXT)
+ -rm -f unictype/categ_of.lo
+ -rm -f unictype/categ_or.$(OBJEXT)
+ -rm -f unictype/categ_or.lo
+ -rm -f unictype/categ_test.$(OBJEXT)
+ -rm -f unictype/categ_test.lo
+ -rm -f unictype/combining.$(OBJEXT)
+ -rm -f unictype/combining.lo
+ -rm -f unictype/ctype_alnum.$(OBJEXT)
+ -rm -f unictype/ctype_alnum.lo
+ -rm -f unictype/ctype_alpha.$(OBJEXT)
+ -rm -f unictype/ctype_alpha.lo
+ -rm -f unictype/ctype_blank.$(OBJEXT)
+ -rm -f unictype/ctype_blank.lo
+ -rm -f unictype/ctype_cntrl.$(OBJEXT)
+ -rm -f unictype/ctype_cntrl.lo
+ -rm -f unictype/ctype_digit.$(OBJEXT)
+ -rm -f unictype/ctype_digit.lo
+ -rm -f unictype/ctype_graph.$(OBJEXT)
+ -rm -f unictype/ctype_graph.lo
+ -rm -f unictype/ctype_lower.$(OBJEXT)
+ -rm -f unictype/ctype_lower.lo
+ -rm -f unictype/ctype_print.$(OBJEXT)
+ -rm -f unictype/ctype_print.lo
+ -rm -f unictype/ctype_punct.$(OBJEXT)
+ -rm -f unictype/ctype_punct.lo
+ -rm -f unictype/ctype_space.$(OBJEXT)
+ -rm -f unictype/ctype_space.lo
+ -rm -f unictype/ctype_upper.$(OBJEXT)
+ -rm -f unictype/ctype_upper.lo
+ -rm -f unictype/ctype_xdigit.$(OBJEXT)
+ -rm -f unictype/ctype_xdigit.lo
+ -rm -f unictype/decdigit.$(OBJEXT)
+ -rm -f unictype/decdigit.lo
+ -rm -f unictype/digit.$(OBJEXT)
+ -rm -f unictype/digit.lo
+ -rm -f unictype/mirror.$(OBJEXT)
+ -rm -f unictype/mirror.lo
+ -rm -f unictype/numeric.$(OBJEXT)
+ -rm -f unictype/numeric.lo
+ -rm -f unictype/pr_alphabetic.$(OBJEXT)
+ -rm -f unictype/pr_alphabetic.lo
+ -rm -f unictype/pr_ascii_hex_digit.$(OBJEXT)
+ -rm -f unictype/pr_ascii_hex_digit.lo
+ -rm -f unictype/pr_bidi_arabic_digit.$(OBJEXT)
+ -rm -f unictype/pr_bidi_arabic_digit.lo
+ -rm -f unictype/pr_bidi_arabic_right_to_left.$(OBJEXT)
+ -rm -f unictype/pr_bidi_arabic_right_to_left.lo
+ -rm -f unictype/pr_bidi_block_separator.$(OBJEXT)
+ -rm -f unictype/pr_bidi_block_separator.lo
+ -rm -f unictype/pr_bidi_boundary_neutral.$(OBJEXT)
+ -rm -f unictype/pr_bidi_boundary_neutral.lo
+ -rm -f unictype/pr_bidi_common_separator.$(OBJEXT)
+ -rm -f unictype/pr_bidi_common_separator.lo
+ -rm -f unictype/pr_bidi_control.$(OBJEXT)
+ -rm -f unictype/pr_bidi_control.lo
+ -rm -f unictype/pr_bidi_embedding_or_override.$(OBJEXT)
+ -rm -f unictype/pr_bidi_embedding_or_override.lo
+ -rm -f unictype/pr_bidi_eur_num_separator.$(OBJEXT)
+ -rm -f unictype/pr_bidi_eur_num_separator.lo
+ -rm -f unictype/pr_bidi_eur_num_terminator.$(OBJEXT)
+ -rm -f unictype/pr_bidi_eur_num_terminator.lo
+ -rm -f unictype/pr_bidi_european_digit.$(OBJEXT)
+ -rm -f unictype/pr_bidi_european_digit.lo
+ -rm -f unictype/pr_bidi_hebrew_right_to_left.$(OBJEXT)
+ -rm -f unictype/pr_bidi_hebrew_right_to_left.lo
+ -rm -f unictype/pr_bidi_left_to_right.$(OBJEXT)
+ -rm -f unictype/pr_bidi_left_to_right.lo
+ -rm -f unictype/pr_bidi_non_spacing_mark.$(OBJEXT)
+ -rm -f unictype/pr_bidi_non_spacing_mark.lo
+ -rm -f unictype/pr_bidi_other_neutral.$(OBJEXT)
+ -rm -f unictype/pr_bidi_other_neutral.lo
+ -rm -f unictype/pr_bidi_pdf.$(OBJEXT)
+ -rm -f unictype/pr_bidi_pdf.lo
+ -rm -f unictype/pr_bidi_segment_separator.$(OBJEXT)
+ -rm -f unictype/pr_bidi_segment_separator.lo
+ -rm -f unictype/pr_bidi_whitespace.$(OBJEXT)
+ -rm -f unictype/pr_bidi_whitespace.lo
+ -rm -f unictype/pr_byname.$(OBJEXT)
+ -rm -f unictype/pr_byname.lo
+ -rm -f unictype/pr_combining.$(OBJEXT)
+ -rm -f unictype/pr_combining.lo
+ -rm -f unictype/pr_composite.$(OBJEXT)
+ -rm -f unictype/pr_composite.lo
+ -rm -f unictype/pr_currency_symbol.$(OBJEXT)
+ -rm -f unictype/pr_currency_symbol.lo
+ -rm -f unictype/pr_dash.$(OBJEXT)
+ -rm -f unictype/pr_dash.lo
+ -rm -f unictype/pr_decimal_digit.$(OBJEXT)
+ -rm -f unictype/pr_decimal_digit.lo
+ -rm -f unictype/pr_default_ignorable_code_point.$(OBJEXT)
+ -rm -f unictype/pr_default_ignorable_code_point.lo
+ -rm -f unictype/pr_deprecated.$(OBJEXT)
+ -rm -f unictype/pr_deprecated.lo
+ -rm -f unictype/pr_diacritic.$(OBJEXT)
+ -rm -f unictype/pr_diacritic.lo
+ -rm -f unictype/pr_extender.$(OBJEXT)
+ -rm -f unictype/pr_extender.lo
+ -rm -f unictype/pr_format_control.$(OBJEXT)
+ -rm -f unictype/pr_format_control.lo
+ -rm -f unictype/pr_grapheme_base.$(OBJEXT)
+ -rm -f unictype/pr_grapheme_base.lo
+ -rm -f unictype/pr_grapheme_extend.$(OBJEXT)
+ -rm -f unictype/pr_grapheme_extend.lo
+ -rm -f unictype/pr_grapheme_link.$(OBJEXT)
+ -rm -f unictype/pr_grapheme_link.lo
+ -rm -f unictype/pr_hex_digit.$(OBJEXT)
+ -rm -f unictype/pr_hex_digit.lo
+ -rm -f unictype/pr_hyphen.$(OBJEXT)
+ -rm -f unictype/pr_hyphen.lo
+ -rm -f unictype/pr_id_continue.$(OBJEXT)
+ -rm -f unictype/pr_id_continue.lo
+ -rm -f unictype/pr_id_start.$(OBJEXT)
+ -rm -f unictype/pr_id_start.lo
+ -rm -f unictype/pr_ideographic.$(OBJEXT)
+ -rm -f unictype/pr_ideographic.lo
+ -rm -f unictype/pr_ids_binary_operator.$(OBJEXT)
+ -rm -f unictype/pr_ids_binary_operator.lo
+ -rm -f unictype/pr_ids_trinary_operator.$(OBJEXT)
+ -rm -f unictype/pr_ids_trinary_operator.lo
+ -rm -f unictype/pr_ignorable_control.$(OBJEXT)
+ -rm -f unictype/pr_ignorable_control.lo
+ -rm -f unictype/pr_iso_control.$(OBJEXT)
+ -rm -f unictype/pr_iso_control.lo
+ -rm -f unictype/pr_join_control.$(OBJEXT)
+ -rm -f unictype/pr_join_control.lo
+ -rm -f unictype/pr_left_of_pair.$(OBJEXT)
+ -rm -f unictype/pr_left_of_pair.lo
+ -rm -f unictype/pr_line_separator.$(OBJEXT)
+ -rm -f unictype/pr_line_separator.lo
+ -rm -f unictype/pr_logical_order_exception.$(OBJEXT)
+ -rm -f unictype/pr_logical_order_exception.lo
+ -rm -f unictype/pr_lowercase.$(OBJEXT)
+ -rm -f unictype/pr_lowercase.lo
+ -rm -f unictype/pr_math.$(OBJEXT)
+ -rm -f unictype/pr_math.lo
+ -rm -f unictype/pr_non_break.$(OBJEXT)
+ -rm -f unictype/pr_non_break.lo
+ -rm -f unictype/pr_not_a_character.$(OBJEXT)
+ -rm -f unictype/pr_not_a_character.lo
+ -rm -f unictype/pr_numeric.$(OBJEXT)
+ -rm -f unictype/pr_numeric.lo
+ -rm -f unictype/pr_other_alphabetic.$(OBJEXT)
+ -rm -f unictype/pr_other_alphabetic.lo
+ -rm -f unictype/pr_other_default_ignorable_code_point.$(OBJEXT)
+ -rm -f unictype/pr_other_default_ignorable_code_point.lo
+ -rm -f unictype/pr_other_grapheme_extend.$(OBJEXT)
+ -rm -f unictype/pr_other_grapheme_extend.lo
+ -rm -f unictype/pr_other_id_continue.$(OBJEXT)
+ -rm -f unictype/pr_other_id_continue.lo
+ -rm -f unictype/pr_other_id_start.$(OBJEXT)
+ -rm -f unictype/pr_other_id_start.lo
+ -rm -f unictype/pr_other_lowercase.$(OBJEXT)
+ -rm -f unictype/pr_other_lowercase.lo
+ -rm -f unictype/pr_other_math.$(OBJEXT)
+ -rm -f unictype/pr_other_math.lo
+ -rm -f unictype/pr_other_uppercase.$(OBJEXT)
+ -rm -f unictype/pr_other_uppercase.lo
+ -rm -f unictype/pr_paired_punctuation.$(OBJEXT)
+ -rm -f unictype/pr_paired_punctuation.lo
+ -rm -f unictype/pr_paragraph_separator.$(OBJEXT)
+ -rm -f unictype/pr_paragraph_separator.lo
+ -rm -f unictype/pr_pattern_syntax.$(OBJEXT)
+ -rm -f unictype/pr_pattern_syntax.lo
+ -rm -f unictype/pr_pattern_white_space.$(OBJEXT)
+ -rm -f unictype/pr_pattern_white_space.lo
+ -rm -f unictype/pr_private_use.$(OBJEXT)
+ -rm -f unictype/pr_private_use.lo
+ -rm -f unictype/pr_punctuation.$(OBJEXT)
+ -rm -f unictype/pr_punctuation.lo
+ -rm -f unictype/pr_quotation_mark.$(OBJEXT)
+ -rm -f unictype/pr_quotation_mark.lo
+ -rm -f unictype/pr_radical.$(OBJEXT)
+ -rm -f unictype/pr_radical.lo
+ -rm -f unictype/pr_sentence_terminal.$(OBJEXT)
+ -rm -f unictype/pr_sentence_terminal.lo
+ -rm -f unictype/pr_soft_dotted.$(OBJEXT)
+ -rm -f unictype/pr_soft_dotted.lo
+ -rm -f unictype/pr_space.$(OBJEXT)
+ -rm -f unictype/pr_space.lo
+ -rm -f unictype/pr_terminal_punctuation.$(OBJEXT)
+ -rm -f unictype/pr_terminal_punctuation.lo
+ -rm -f unictype/pr_test.$(OBJEXT)
+ -rm -f unictype/pr_test.lo
+ -rm -f unictype/pr_titlecase.$(OBJEXT)
+ -rm -f unictype/pr_titlecase.lo
+ -rm -f unictype/pr_unassigned_code_value.$(OBJEXT)
+ -rm -f unictype/pr_unassigned_code_value.lo
+ -rm -f unictype/pr_unified_ideograph.$(OBJEXT)
+ -rm -f unictype/pr_unified_ideograph.lo
+ -rm -f unictype/pr_uppercase.$(OBJEXT)
+ -rm -f unictype/pr_uppercase.lo
+ -rm -f unictype/pr_variation_selector.$(OBJEXT)
+ -rm -f unictype/pr_variation_selector.lo
+ -rm -f unictype/pr_white_space.$(OBJEXT)
+ -rm -f unictype/pr_white_space.lo
+ -rm -f unictype/pr_xid_continue.$(OBJEXT)
+ -rm -f unictype/pr_xid_continue.lo
+ -rm -f unictype/pr_xid_start.$(OBJEXT)
+ -rm -f unictype/pr_xid_start.lo
+ -rm -f unictype/pr_zero_width.$(OBJEXT)
+ -rm -f unictype/pr_zero_width.lo
+ -rm -f unictype/scripts.$(OBJEXT)
+ -rm -f unictype/scripts.lo
+ -rm -f unictype/sy_c_ident.$(OBJEXT)
+ -rm -f unictype/sy_c_ident.lo
+ -rm -f unictype/sy_c_whitespace.$(OBJEXT)
+ -rm -f unictype/sy_c_whitespace.lo
+ -rm -f unictype/sy_java_ident.$(OBJEXT)
+ -rm -f unictype/sy_java_ident.lo
+ -rm -f unictype/sy_java_whitespace.$(OBJEXT)
+ -rm -f unictype/sy_java_whitespace.lo
+ -rm -f unilbrk/lbrktables.$(OBJEXT)
+ -rm -f unilbrk/lbrktables.lo
+ -rm -f unilbrk/u16-possible-linebreaks.$(OBJEXT)
+ -rm -f unilbrk/u16-possible-linebreaks.lo
+ -rm -f unilbrk/u16-width-linebreaks.$(OBJEXT)
+ -rm -f unilbrk/u16-width-linebreaks.lo
+ -rm -f unilbrk/u32-possible-linebreaks.$(OBJEXT)
+ -rm -f unilbrk/u32-possible-linebreaks.lo
+ -rm -f unilbrk/u32-width-linebreaks.$(OBJEXT)
+ -rm -f unilbrk/u32-width-linebreaks.lo
+ -rm -f unilbrk/u8-possible-linebreaks.$(OBJEXT)
+ -rm -f unilbrk/u8-possible-linebreaks.lo
+ -rm -f unilbrk/u8-width-linebreaks.$(OBJEXT)
+ -rm -f unilbrk/u8-width-linebreaks.lo
+ -rm -f unilbrk/ulc-common.$(OBJEXT)
+ -rm -f unilbrk/ulc-common.lo
+ -rm -f unilbrk/ulc-possible-linebreaks.$(OBJEXT)
+ -rm -f unilbrk/ulc-possible-linebreaks.lo
+ -rm -f unilbrk/ulc-width-linebreaks.$(OBJEXT)
+ -rm -f unilbrk/ulc-width-linebreaks.lo
+ -rm -f uniname/uniname.$(OBJEXT)
+ -rm -f uniname/uniname.lo
+ -rm -f uninorm/canonical-decomposition.$(OBJEXT)
+ -rm -f uninorm/canonical-decomposition.lo
+ -rm -f uninorm/compat-decomposition.$(OBJEXT)
+ -rm -f uninorm/compat-decomposition.lo
+ -rm -f uninorm/composition.$(OBJEXT)
+ -rm -f uninorm/composition.lo
+ -rm -f uninorm/decompose-internal.$(OBJEXT)
+ -rm -f uninorm/decompose-internal.lo
+ -rm -f uninorm/decomposing-form.$(OBJEXT)
+ -rm -f uninorm/decomposing-form.lo
+ -rm -f uninorm/decomposition-table.$(OBJEXT)
+ -rm -f uninorm/decomposition-table.lo
+ -rm -f uninorm/decomposition.$(OBJEXT)
+ -rm -f uninorm/decomposition.lo
+ -rm -f uninorm/nfc.$(OBJEXT)
+ -rm -f uninorm/nfc.lo
+ -rm -f uninorm/nfd.$(OBJEXT)
+ -rm -f uninorm/nfd.lo
+ -rm -f uninorm/nfkc.$(OBJEXT)
+ -rm -f uninorm/nfkc.lo
+ -rm -f uninorm/nfkd.$(OBJEXT)
+ -rm -f uninorm/nfkd.lo
+ -rm -f uninorm/u16-normalize.$(OBJEXT)
+ -rm -f uninorm/u16-normalize.lo
+ -rm -f uninorm/u16-normcmp.$(OBJEXT)
+ -rm -f uninorm/u16-normcmp.lo
+ -rm -f uninorm/u16-normcoll.$(OBJEXT)
+ -rm -f uninorm/u16-normcoll.lo
+ -rm -f uninorm/u16-normxfrm.$(OBJEXT)
+ -rm -f uninorm/u16-normxfrm.lo
+ -rm -f uninorm/u32-normalize.$(OBJEXT)
+ -rm -f uninorm/u32-normalize.lo
+ -rm -f uninorm/u32-normcmp.$(OBJEXT)
+ -rm -f uninorm/u32-normcmp.lo
+ -rm -f uninorm/u32-normcoll.$(OBJEXT)
+ -rm -f uninorm/u32-normcoll.lo
+ -rm -f uninorm/u32-normxfrm.$(OBJEXT)
+ -rm -f uninorm/u32-normxfrm.lo
+ -rm -f uninorm/u8-normalize.$(OBJEXT)
+ -rm -f uninorm/u8-normalize.lo
+ -rm -f uninorm/u8-normcmp.$(OBJEXT)
+ -rm -f uninorm/u8-normcmp.lo
+ -rm -f uninorm/u8-normcoll.$(OBJEXT)
+ -rm -f uninorm/u8-normcoll.lo
+ -rm -f uninorm/u8-normxfrm.$(OBJEXT)
+ -rm -f uninorm/u8-normxfrm.lo
+ -rm -f uninorm/uninorm-filter.$(OBJEXT)
+ -rm -f uninorm/uninorm-filter.lo
+ -rm -f unistdio/u-printf-args.$(OBJEXT)
+ -rm -f unistdio/u-printf-args.lo
+ -rm -f unistdio/u16-asnprintf.$(OBJEXT)
+ -rm -f unistdio/u16-asnprintf.lo
+ -rm -f unistdio/u16-asprintf.$(OBJEXT)
+ -rm -f unistdio/u16-asprintf.lo
+ -rm -f unistdio/u16-printf-parse.$(OBJEXT)
+ -rm -f unistdio/u16-printf-parse.lo
+ -rm -f unistdio/u16-snprintf.$(OBJEXT)
+ -rm -f unistdio/u16-snprintf.lo
+ -rm -f unistdio/u16-sprintf.$(OBJEXT)
+ -rm -f unistdio/u16-sprintf.lo
+ -rm -f unistdio/u16-u16-asnprintf.$(OBJEXT)
+ -rm -f unistdio/u16-u16-asnprintf.lo
+ -rm -f unistdio/u16-u16-asprintf.$(OBJEXT)
+ -rm -f unistdio/u16-u16-asprintf.lo
+ -rm -f unistdio/u16-u16-snprintf.$(OBJEXT)
+ -rm -f unistdio/u16-u16-snprintf.lo
+ -rm -f unistdio/u16-u16-sprintf.$(OBJEXT)
+ -rm -f unistdio/u16-u16-sprintf.lo
+ -rm -f unistdio/u16-u16-vasnprintf.$(OBJEXT)
+ -rm -f unistdio/u16-u16-vasnprintf.lo
+ -rm -f unistdio/u16-u16-vasprintf.$(OBJEXT)
+ -rm -f unistdio/u16-u16-vasprintf.lo
+ -rm -f unistdio/u16-u16-vsnprintf.$(OBJEXT)
+ -rm -f unistdio/u16-u16-vsnprintf.lo
+ -rm -f unistdio/u16-u16-vsprintf.$(OBJEXT)
+ -rm -f unistdio/u16-u16-vsprintf.lo
+ -rm -f unistdio/u16-vasnprintf.$(OBJEXT)
+ -rm -f unistdio/u16-vasnprintf.lo
+ -rm -f unistdio/u16-vasprintf.$(OBJEXT)
+ -rm -f unistdio/u16-vasprintf.lo
+ -rm -f unistdio/u16-vsnprintf.$(OBJEXT)
+ -rm -f unistdio/u16-vsnprintf.lo
+ -rm -f unistdio/u16-vsprintf.$(OBJEXT)
+ -rm -f unistdio/u16-vsprintf.lo
+ -rm -f unistdio/u32-asnprintf.$(OBJEXT)
+ -rm -f unistdio/u32-asnprintf.lo
+ -rm -f unistdio/u32-asprintf.$(OBJEXT)
+ -rm -f unistdio/u32-asprintf.lo
+ -rm -f unistdio/u32-printf-parse.$(OBJEXT)
+ -rm -f unistdio/u32-printf-parse.lo
+ -rm -f unistdio/u32-snprintf.$(OBJEXT)
+ -rm -f unistdio/u32-snprintf.lo
+ -rm -f unistdio/u32-sprintf.$(OBJEXT)
+ -rm -f unistdio/u32-sprintf.lo
+ -rm -f unistdio/u32-u32-asnprintf.$(OBJEXT)
+ -rm -f unistdio/u32-u32-asnprintf.lo
+ -rm -f unistdio/u32-u32-asprintf.$(OBJEXT)
+ -rm -f unistdio/u32-u32-asprintf.lo
+ -rm -f unistdio/u32-u32-snprintf.$(OBJEXT)
+ -rm -f unistdio/u32-u32-snprintf.lo
+ -rm -f unistdio/u32-u32-sprintf.$(OBJEXT)
+ -rm -f unistdio/u32-u32-sprintf.lo
+ -rm -f unistdio/u32-u32-vasnprintf.$(OBJEXT)
+ -rm -f unistdio/u32-u32-vasnprintf.lo
+ -rm -f unistdio/u32-u32-vasprintf.$(OBJEXT)
+ -rm -f unistdio/u32-u32-vasprintf.lo
+ -rm -f unistdio/u32-u32-vsnprintf.$(OBJEXT)
+ -rm -f unistdio/u32-u32-vsnprintf.lo
+ -rm -f unistdio/u32-u32-vsprintf.$(OBJEXT)
+ -rm -f unistdio/u32-u32-vsprintf.lo
+ -rm -f unistdio/u32-vasnprintf.$(OBJEXT)
+ -rm -f unistdio/u32-vasnprintf.lo
+ -rm -f unistdio/u32-vasprintf.$(OBJEXT)
+ -rm -f unistdio/u32-vasprintf.lo
+ -rm -f unistdio/u32-vsnprintf.$(OBJEXT)
+ -rm -f unistdio/u32-vsnprintf.lo
+ -rm -f unistdio/u32-vsprintf.$(OBJEXT)
+ -rm -f unistdio/u32-vsprintf.lo
+ -rm -f unistdio/u8-asnprintf.$(OBJEXT)
+ -rm -f unistdio/u8-asnprintf.lo
+ -rm -f unistdio/u8-asprintf.$(OBJEXT)
+ -rm -f unistdio/u8-asprintf.lo
+ -rm -f unistdio/u8-printf-parse.$(OBJEXT)
+ -rm -f unistdio/u8-printf-parse.lo
+ -rm -f unistdio/u8-snprintf.$(OBJEXT)
+ -rm -f unistdio/u8-snprintf.lo
+ -rm -f unistdio/u8-sprintf.$(OBJEXT)
+ -rm -f unistdio/u8-sprintf.lo
+ -rm -f unistdio/u8-u8-asnprintf.$(OBJEXT)
+ -rm -f unistdio/u8-u8-asnprintf.lo
+ -rm -f unistdio/u8-u8-asprintf.$(OBJEXT)
+ -rm -f unistdio/u8-u8-asprintf.lo
+ -rm -f unistdio/u8-u8-snprintf.$(OBJEXT)
+ -rm -f unistdio/u8-u8-snprintf.lo
+ -rm -f unistdio/u8-u8-sprintf.$(OBJEXT)
+ -rm -f unistdio/u8-u8-sprintf.lo
+ -rm -f unistdio/u8-u8-vasnprintf.$(OBJEXT)
+ -rm -f unistdio/u8-u8-vasnprintf.lo
+ -rm -f unistdio/u8-u8-vasprintf.$(OBJEXT)
+ -rm -f unistdio/u8-u8-vasprintf.lo
+ -rm -f unistdio/u8-u8-vsnprintf.$(OBJEXT)
+ -rm -f unistdio/u8-u8-vsnprintf.lo
+ -rm -f unistdio/u8-u8-vsprintf.$(OBJEXT)
+ -rm -f unistdio/u8-u8-vsprintf.lo
+ -rm -f unistdio/u8-vasnprintf.$(OBJEXT)
+ -rm -f unistdio/u8-vasnprintf.lo
+ -rm -f unistdio/u8-vasprintf.$(OBJEXT)
+ -rm -f unistdio/u8-vasprintf.lo
+ -rm -f unistdio/u8-vsnprintf.$(OBJEXT)
+ -rm -f unistdio/u8-vsnprintf.lo
+ -rm -f unistdio/u8-vsprintf.$(OBJEXT)
+ -rm -f unistdio/u8-vsprintf.lo
+ -rm -f unistdio/ulc-asnprintf.$(OBJEXT)
+ -rm -f unistdio/ulc-asnprintf.lo
+ -rm -f unistdio/ulc-asprintf.$(OBJEXT)
+ -rm -f unistdio/ulc-asprintf.lo
+ -rm -f unistdio/ulc-fprintf.$(OBJEXT)
+ -rm -f unistdio/ulc-fprintf.lo
+ -rm -f unistdio/ulc-printf-parse.$(OBJEXT)
+ -rm -f unistdio/ulc-printf-parse.lo
+ -rm -f unistdio/ulc-snprintf.$(OBJEXT)
+ -rm -f unistdio/ulc-snprintf.lo
+ -rm -f unistdio/ulc-sprintf.$(OBJEXT)
+ -rm -f unistdio/ulc-sprintf.lo
+ -rm -f unistdio/ulc-vasnprintf.$(OBJEXT)
+ -rm -f unistdio/ulc-vasnprintf.lo
+ -rm -f unistdio/ulc-vasprintf.$(OBJEXT)
+ -rm -f unistdio/ulc-vasprintf.lo
+ -rm -f unistdio/ulc-vfprintf.$(OBJEXT)
+ -rm -f unistdio/ulc-vfprintf.lo
+ -rm -f unistdio/ulc-vsnprintf.$(OBJEXT)
+ -rm -f unistdio/ulc-vsnprintf.lo
+ -rm -f unistdio/ulc-vsprintf.$(OBJEXT)
+ -rm -f unistdio/ulc-vsprintf.lo
+ -rm -f unistr/u16-check.$(OBJEXT)
+ -rm -f unistr/u16-check.lo
+ -rm -f unistr/u16-chr.$(OBJEXT)
+ -rm -f unistr/u16-chr.lo
+ -rm -f unistr/u16-cmp.$(OBJEXT)
+ -rm -f unistr/u16-cmp.lo
+ -rm -f unistr/u16-cmp2.$(OBJEXT)
+ -rm -f unistr/u16-cmp2.lo
+ -rm -f unistr/u16-cpy-alloc.$(OBJEXT)
+ -rm -f unistr/u16-cpy-alloc.lo
+ -rm -f unistr/u16-cpy.$(OBJEXT)
+ -rm -f unistr/u16-cpy.lo
+ -rm -f unistr/u16-endswith.$(OBJEXT)
+ -rm -f unistr/u16-endswith.lo
+ -rm -f unistr/u16-mblen.$(OBJEXT)
+ -rm -f unistr/u16-mblen.lo
+ -rm -f unistr/u16-mbsnlen.$(OBJEXT)
+ -rm -f unistr/u16-mbsnlen.lo
+ -rm -f unistr/u16-mbtouc-aux.$(OBJEXT)
+ -rm -f unistr/u16-mbtouc-aux.lo
+ -rm -f unistr/u16-mbtouc-unsafe-aux.$(OBJEXT)
+ -rm -f unistr/u16-mbtouc-unsafe-aux.lo
+ -rm -f unistr/u16-mbtouc-unsafe.$(OBJEXT)
+ -rm -f unistr/u16-mbtouc-unsafe.lo
+ -rm -f unistr/u16-mbtouc.$(OBJEXT)
+ -rm -f unistr/u16-mbtouc.lo
+ -rm -f unistr/u16-mbtoucr.$(OBJEXT)
+ -rm -f unistr/u16-mbtoucr.lo
+ -rm -f unistr/u16-move.$(OBJEXT)
+ -rm -f unistr/u16-move.lo
+ -rm -f unistr/u16-next.$(OBJEXT)
+ -rm -f unistr/u16-next.lo
+ -rm -f unistr/u16-prev.$(OBJEXT)
+ -rm -f unistr/u16-prev.lo
+ -rm -f unistr/u16-set.$(OBJEXT)
+ -rm -f unistr/u16-set.lo
+ -rm -f unistr/u16-startswith.$(OBJEXT)
+ -rm -f unistr/u16-startswith.lo
+ -rm -f unistr/u16-stpcpy.$(OBJEXT)
+ -rm -f unistr/u16-stpcpy.lo
+ -rm -f unistr/u16-stpncpy.$(OBJEXT)
+ -rm -f unistr/u16-stpncpy.lo
+ -rm -f unistr/u16-strcat.$(OBJEXT)
+ -rm -f unistr/u16-strcat.lo
+ -rm -f unistr/u16-strchr.$(OBJEXT)
+ -rm -f unistr/u16-strchr.lo
+ -rm -f unistr/u16-strcmp.$(OBJEXT)
+ -rm -f unistr/u16-strcmp.lo
+ -rm -f unistr/u16-strcoll.$(OBJEXT)
+ -rm -f unistr/u16-strcoll.lo
+ -rm -f unistr/u16-strcpy.$(OBJEXT)
+ -rm -f unistr/u16-strcpy.lo
+ -rm -f unistr/u16-strcspn.$(OBJEXT)
+ -rm -f unistr/u16-strcspn.lo
+ -rm -f unistr/u16-strdup.$(OBJEXT)
+ -rm -f unistr/u16-strdup.lo
+ -rm -f unistr/u16-strlen.$(OBJEXT)
+ -rm -f unistr/u16-strlen.lo
+ -rm -f unistr/u16-strmblen.$(OBJEXT)
+ -rm -f unistr/u16-strmblen.lo
+ -rm -f unistr/u16-strmbtouc.$(OBJEXT)
+ -rm -f unistr/u16-strmbtouc.lo
+ -rm -f unistr/u16-strncat.$(OBJEXT)
+ -rm -f unistr/u16-strncat.lo
+ -rm -f unistr/u16-strncmp.$(OBJEXT)
+ -rm -f unistr/u16-strncmp.lo
+ -rm -f unistr/u16-strncpy.$(OBJEXT)
+ -rm -f unistr/u16-strncpy.lo
+ -rm -f unistr/u16-strnlen.$(OBJEXT)
+ -rm -f unistr/u16-strnlen.lo
+ -rm -f unistr/u16-strpbrk.$(OBJEXT)
+ -rm -f unistr/u16-strpbrk.lo
+ -rm -f unistr/u16-strrchr.$(OBJEXT)
+ -rm -f unistr/u16-strrchr.lo
+ -rm -f unistr/u16-strspn.$(OBJEXT)
+ -rm -f unistr/u16-strspn.lo
+ -rm -f unistr/u16-strstr.$(OBJEXT)
+ -rm -f unistr/u16-strstr.lo
+ -rm -f unistr/u16-strtok.$(OBJEXT)
+ -rm -f unistr/u16-strtok.lo
+ -rm -f unistr/u16-to-u32.$(OBJEXT)
+ -rm -f unistr/u16-to-u32.lo
+ -rm -f unistr/u16-to-u8.$(OBJEXT)
+ -rm -f unistr/u16-to-u8.lo
+ -rm -f unistr/u16-uctomb-aux.$(OBJEXT)
+ -rm -f unistr/u16-uctomb-aux.lo
+ -rm -f unistr/u16-uctomb.$(OBJEXT)
+ -rm -f unistr/u16-uctomb.lo
+ -rm -f unistr/u32-check.$(OBJEXT)
+ -rm -f unistr/u32-check.lo
+ -rm -f unistr/u32-chr.$(OBJEXT)
+ -rm -f unistr/u32-chr.lo
+ -rm -f unistr/u32-cmp.$(OBJEXT)
+ -rm -f unistr/u32-cmp.lo
+ -rm -f unistr/u32-cmp2.$(OBJEXT)
+ -rm -f unistr/u32-cmp2.lo
+ -rm -f unistr/u32-cpy-alloc.$(OBJEXT)
+ -rm -f unistr/u32-cpy-alloc.lo
+ -rm -f unistr/u32-cpy.$(OBJEXT)
+ -rm -f unistr/u32-cpy.lo
+ -rm -f unistr/u32-endswith.$(OBJEXT)
+ -rm -f unistr/u32-endswith.lo
+ -rm -f unistr/u32-mblen.$(OBJEXT)
+ -rm -f unistr/u32-mblen.lo
+ -rm -f unistr/u32-mbsnlen.$(OBJEXT)
+ -rm -f unistr/u32-mbsnlen.lo
+ -rm -f unistr/u32-mbtouc-unsafe.$(OBJEXT)
+ -rm -f unistr/u32-mbtouc-unsafe.lo
+ -rm -f unistr/u32-mbtouc.$(OBJEXT)
+ -rm -f unistr/u32-mbtouc.lo
+ -rm -f unistr/u32-mbtoucr.$(OBJEXT)
+ -rm -f unistr/u32-mbtoucr.lo
+ -rm -f unistr/u32-move.$(OBJEXT)
+ -rm -f unistr/u32-move.lo
+ -rm -f unistr/u32-next.$(OBJEXT)
+ -rm -f unistr/u32-next.lo
+ -rm -f unistr/u32-prev.$(OBJEXT)
+ -rm -f unistr/u32-prev.lo
+ -rm -f unistr/u32-set.$(OBJEXT)
+ -rm -f unistr/u32-set.lo
+ -rm -f unistr/u32-startswith.$(OBJEXT)
+ -rm -f unistr/u32-startswith.lo
+ -rm -f unistr/u32-stpcpy.$(OBJEXT)
+ -rm -f unistr/u32-stpcpy.lo
+ -rm -f unistr/u32-stpncpy.$(OBJEXT)
+ -rm -f unistr/u32-stpncpy.lo
+ -rm -f unistr/u32-strcat.$(OBJEXT)
+ -rm -f unistr/u32-strcat.lo
+ -rm -f unistr/u32-strchr.$(OBJEXT)
+ -rm -f unistr/u32-strchr.lo
+ -rm -f unistr/u32-strcmp.$(OBJEXT)
+ -rm -f unistr/u32-strcmp.lo
+ -rm -f unistr/u32-strcoll.$(OBJEXT)
+ -rm -f unistr/u32-strcoll.lo
+ -rm -f unistr/u32-strcpy.$(OBJEXT)
+ -rm -f unistr/u32-strcpy.lo
+ -rm -f unistr/u32-strcspn.$(OBJEXT)
+ -rm -f unistr/u32-strcspn.lo
+ -rm -f unistr/u32-strdup.$(OBJEXT)
+ -rm -f unistr/u32-strdup.lo
+ -rm -f unistr/u32-strlen.$(OBJEXT)
+ -rm -f unistr/u32-strlen.lo
+ -rm -f unistr/u32-strmblen.$(OBJEXT)
+ -rm -f unistr/u32-strmblen.lo
+ -rm -f unistr/u32-strmbtouc.$(OBJEXT)
+ -rm -f unistr/u32-strmbtouc.lo
+ -rm -f unistr/u32-strncat.$(OBJEXT)
+ -rm -f unistr/u32-strncat.lo
+ -rm -f unistr/u32-strncmp.$(OBJEXT)
+ -rm -f unistr/u32-strncmp.lo
+ -rm -f unistr/u32-strncpy.$(OBJEXT)
+ -rm -f unistr/u32-strncpy.lo
+ -rm -f unistr/u32-strnlen.$(OBJEXT)
+ -rm -f unistr/u32-strnlen.lo
+ -rm -f unistr/u32-strpbrk.$(OBJEXT)
+ -rm -f unistr/u32-strpbrk.lo
+ -rm -f unistr/u32-strrchr.$(OBJEXT)
+ -rm -f unistr/u32-strrchr.lo
+ -rm -f unistr/u32-strspn.$(OBJEXT)
+ -rm -f unistr/u32-strspn.lo
+ -rm -f unistr/u32-strstr.$(OBJEXT)
+ -rm -f unistr/u32-strstr.lo
+ -rm -f unistr/u32-strtok.$(OBJEXT)
+ -rm -f unistr/u32-strtok.lo
+ -rm -f unistr/u32-to-u16.$(OBJEXT)
+ -rm -f unistr/u32-to-u16.lo
+ -rm -f unistr/u32-to-u8.$(OBJEXT)
+ -rm -f unistr/u32-to-u8.lo
+ -rm -f unistr/u32-uctomb.$(OBJEXT)
+ -rm -f unistr/u32-uctomb.lo
+ -rm -f unistr/u8-check.$(OBJEXT)
+ -rm -f unistr/u8-check.lo
+ -rm -f unistr/u8-chr.$(OBJEXT)
+ -rm -f unistr/u8-chr.lo
+ -rm -f unistr/u8-cmp.$(OBJEXT)
+ -rm -f unistr/u8-cmp.lo
+ -rm -f unistr/u8-cmp2.$(OBJEXT)
+ -rm -f unistr/u8-cmp2.lo
+ -rm -f unistr/u8-cpy-alloc.$(OBJEXT)
+ -rm -f unistr/u8-cpy-alloc.lo
+ -rm -f unistr/u8-cpy.$(OBJEXT)
+ -rm -f unistr/u8-cpy.lo
+ -rm -f unistr/u8-endswith.$(OBJEXT)
+ -rm -f unistr/u8-endswith.lo
+ -rm -f unistr/u8-mblen.$(OBJEXT)
+ -rm -f unistr/u8-mblen.lo
+ -rm -f unistr/u8-mbsnlen.$(OBJEXT)
+ -rm -f unistr/u8-mbsnlen.lo
+ -rm -f unistr/u8-mbtouc-aux.$(OBJEXT)
+ -rm -f unistr/u8-mbtouc-aux.lo
+ -rm -f unistr/u8-mbtouc-unsafe-aux.$(OBJEXT)
+ -rm -f unistr/u8-mbtouc-unsafe-aux.lo
+ -rm -f unistr/u8-mbtouc-unsafe.$(OBJEXT)
+ -rm -f unistr/u8-mbtouc-unsafe.lo
+ -rm -f unistr/u8-mbtouc.$(OBJEXT)
+ -rm -f unistr/u8-mbtouc.lo
+ -rm -f unistr/u8-mbtoucr.$(OBJEXT)
+ -rm -f unistr/u8-mbtoucr.lo
+ -rm -f unistr/u8-move.$(OBJEXT)
+ -rm -f unistr/u8-move.lo
+ -rm -f unistr/u8-next.$(OBJEXT)
+ -rm -f unistr/u8-next.lo
+ -rm -f unistr/u8-prev.$(OBJEXT)
+ -rm -f unistr/u8-prev.lo
+ -rm -f unistr/u8-set.$(OBJEXT)
+ -rm -f unistr/u8-set.lo
+ -rm -f unistr/u8-startswith.$(OBJEXT)
+ -rm -f unistr/u8-startswith.lo
+ -rm -f unistr/u8-stpcpy.$(OBJEXT)
+ -rm -f unistr/u8-stpcpy.lo
+ -rm -f unistr/u8-stpncpy.$(OBJEXT)
+ -rm -f unistr/u8-stpncpy.lo
+ -rm -f unistr/u8-strcat.$(OBJEXT)
+ -rm -f unistr/u8-strcat.lo
+ -rm -f unistr/u8-strchr.$(OBJEXT)
+ -rm -f unistr/u8-strchr.lo
+ -rm -f unistr/u8-strcmp.$(OBJEXT)
+ -rm -f unistr/u8-strcmp.lo
+ -rm -f unistr/u8-strcoll.$(OBJEXT)
+ -rm -f unistr/u8-strcoll.lo
+ -rm -f unistr/u8-strcpy.$(OBJEXT)
+ -rm -f unistr/u8-strcpy.lo
+ -rm -f unistr/u8-strcspn.$(OBJEXT)
+ -rm -f unistr/u8-strcspn.lo
+ -rm -f unistr/u8-strdup.$(OBJEXT)
+ -rm -f unistr/u8-strdup.lo
+ -rm -f unistr/u8-strlen.$(OBJEXT)
+ -rm -f unistr/u8-strlen.lo
+ -rm -f unistr/u8-strmblen.$(OBJEXT)
+ -rm -f unistr/u8-strmblen.lo
+ -rm -f unistr/u8-strmbtouc.$(OBJEXT)
+ -rm -f unistr/u8-strmbtouc.lo
+ -rm -f unistr/u8-strncat.$(OBJEXT)
+ -rm -f unistr/u8-strncat.lo
+ -rm -f unistr/u8-strncmp.$(OBJEXT)
+ -rm -f unistr/u8-strncmp.lo
+ -rm -f unistr/u8-strncpy.$(OBJEXT)
+ -rm -f unistr/u8-strncpy.lo
+ -rm -f unistr/u8-strnlen.$(OBJEXT)
+ -rm -f unistr/u8-strnlen.lo
+ -rm -f unistr/u8-strpbrk.$(OBJEXT)
+ -rm -f unistr/u8-strpbrk.lo
+ -rm -f unistr/u8-strrchr.$(OBJEXT)
+ -rm -f unistr/u8-strrchr.lo
+ -rm -f unistr/u8-strspn.$(OBJEXT)
+ -rm -f unistr/u8-strspn.lo
+ -rm -f unistr/u8-strstr.$(OBJEXT)
+ -rm -f unistr/u8-strstr.lo
+ -rm -f unistr/u8-strtok.$(OBJEXT)
+ -rm -f unistr/u8-strtok.lo
+ -rm -f unistr/u8-to-u16.$(OBJEXT)
+ -rm -f unistr/u8-to-u16.lo
+ -rm -f unistr/u8-to-u32.$(OBJEXT)
+ -rm -f unistr/u8-to-u32.lo
+ -rm -f unistr/u8-uctomb-aux.$(OBJEXT)
+ -rm -f unistr/u8-uctomb-aux.lo
+ -rm -f unistr/u8-uctomb.$(OBJEXT)
+ -rm -f unistr/u8-uctomb.lo
+ -rm -f uniwbrk/u16-wordbreaks.$(OBJEXT)
+ -rm -f uniwbrk/u16-wordbreaks.lo
+ -rm -f uniwbrk/u32-wordbreaks.$(OBJEXT)
+ -rm -f uniwbrk/u32-wordbreaks.lo
+ -rm -f uniwbrk/u8-wordbreaks.$(OBJEXT)
+ -rm -f uniwbrk/u8-wordbreaks.lo
+ -rm -f uniwbrk/ulc-wordbreaks.$(OBJEXT)
+ -rm -f uniwbrk/ulc-wordbreaks.lo
+ -rm -f uniwbrk/wbrktable.$(OBJEXT)
+ -rm -f uniwbrk/wbrktable.lo
+ -rm -f uniwbrk/wordbreak-property.$(OBJEXT)
+ -rm -f uniwbrk/wordbreak-property.lo
+ -rm -f uniwidth/u16-strwidth.$(OBJEXT)
+ -rm -f uniwidth/u16-strwidth.lo
+ -rm -f uniwidth/u16-width.$(OBJEXT)
+ -rm -f uniwidth/u16-width.lo
+ -rm -f uniwidth/u32-strwidth.$(OBJEXT)
+ -rm -f uniwidth/u32-strwidth.lo
+ -rm -f uniwidth/u32-width.$(OBJEXT)
+ -rm -f uniwidth/u32-width.lo
+ -rm -f uniwidth/u8-strwidth.$(OBJEXT)
+ -rm -f uniwidth/u8-strwidth.lo
+ -rm -f uniwidth/u8-width.$(OBJEXT)
+ -rm -f uniwidth/u8-width.lo
+ -rm -f uniwidth/width.$(OBJEXT)
+ -rm -f uniwidth/width.lo
+
+distclean-compile:
+ -rm -f *.tab.c
+
+.c.o:
+ $(AM_V_CC) @AM_BACKSLASH@
+ $(COMPILE) -c -o $@ $<
+
+.c.obj:
+ $(AM_V_CC) @AM_BACKSLASH@
+ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ $(AM_V_CC) @AM_BACKSLASH@
+ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+ -rm -rf ../woe32dll/.libs ../woe32dll/_libs
+ -rm -rf unicase/.libs unicase/_libs
+ -rm -rf uniconv/.libs uniconv/_libs
+ -rm -rf unictype/.libs unictype/_libs
+ -rm -rf unilbrk/.libs unilbrk/_libs
+ -rm -rf uniname/.libs uniname/_libs
+ -rm -rf uninorm/.libs uninorm/_libs
+ -rm -rf unistdio/.libs unistdio/_libs
+ -rm -rf unistr/.libs unistr/_libs
+ -rm -rf uniwbrk/.libs uniwbrk/_libs
+ -rm -rf uniwidth/.libs uniwidth/_libs
+install-nobase_includeHEADERS: $(nobase_include_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
+ @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \
+ $(am__nobase_list) | while read dir files; do \
+ xfiles=; for file in $$files; do \
+ if test -f "$$file"; then xfiles="$$xfiles $$file"; \
+ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
+ test -z "$$xfiles" || { \
+ test "x$$dir" = x. || { \
+ echo "$(MKDIR_P) '$(DESTDIR)$(includedir)/$$dir'"; \
+ $(MKDIR_P) "$(DESTDIR)$(includedir)/$$dir"; }; \
+ echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(includedir)/$$dir'"; \
+ $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(includedir)/$$dir" || exit $$?; }; \
+ done
+
+uninstall-nobase_includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \
+ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(includedir)" && rm -f $$files
+install-nobase_nodist_includeHEADERS: $(nobase_nodist_include_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
+ @list='$(nobase_nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
+ $(am__nobase_list) | while read dir files; do \
+ xfiles=; for file in $$files; do \
+ if test -f "$$file"; then xfiles="$$xfiles $$file"; \
+ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
+ test -z "$$xfiles" || { \
+ test "x$$dir" = x. || { \
+ echo "$(MKDIR_P) '$(DESTDIR)$(includedir)/$$dir'"; \
+ $(MKDIR_P) "$(DESTDIR)$(includedir)/$$dir"; }; \
+ echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(includedir)/$$dir'"; \
+ $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(includedir)/$$dir" || exit $$?; }; \
+ done
+
+uninstall-nobase_nodist_includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(nobase_nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
+ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(includedir)" && rm -f $$files
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS) all-local
+installdirs:
+ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(includedir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+ -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f ../woe32dll/$(am__dirstamp)
+ -rm -f unicase/$(am__dirstamp)
+ -rm -f uniconv/$(am__dirstamp)
+ -rm -f unictype/$(am__dirstamp)
+ -rm -f unilbrk/$(am__dirstamp)
+ -rm -f uniname/$(am__dirstamp)
+ -rm -f uninorm/$(am__dirstamp)
+ -rm -f unistdio/$(am__dirstamp)
+ -rm -f unistr/$(am__dirstamp)
+ -rm -f uniwbrk/$(am__dirstamp)
+ -rm -f uniwidth/$(am__dirstamp)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool clean-local \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-nobase_includeHEADERS \
+ install-nobase_nodist_includeHEADERS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-exec-local install-libLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool mostlyclean-local
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libLTLIBRARIES uninstall-local \
+ uninstall-nobase_includeHEADERS \
+ uninstall-nobase_nodist_includeHEADERS
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
+ clean-generic clean-libLTLIBRARIES clean-libtool clean-local \
+ ctags distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-exec-local install-html \
+ install-html-am install-info install-info-am \
+ install-libLTLIBRARIES install-man \
+ install-nobase_includeHEADERS \
+ install-nobase_nodist_includeHEADERS install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
+ pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-libLTLIBRARIES uninstall-local \
+ uninstall-nobase_includeHEADERS \
+ uninstall-nobase_nodist_includeHEADERS
+
+
+# We need the following in order to create <alloca.h> when the system
+# doesn't have one that works with the given compiler.
+alloca.h: alloca.in.h
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ cat $(srcdir)/alloca.in.h; \
+ } > $@-t
+ mv -f $@-t $@
+
+# Retrieve values of the variables through 'configure' followed by
+# 'make', not directly through 'configure', so that a user who
+# sets some of these variables consistently on the 'make' command
+# line gets correct results.
+#
+# One advantage of this approach, compared to the classical
+# approach of adding -DLIBDIR=\"$(libdir)\" etc. to AM_CPPFLAGS,
+# is that it protects against the use of undefined variables.
+# If, say, $(libdir) is not set in the Makefile, LIBDIR is not
+# defined by this module, and code using LIBDIR gives a
+# compilation error.
+#
+# Another advantage is that 'make' output is shorter.
+#
+# Listed in the same order as the GNU makefile conventions.
+# The Automake-defined pkg* macros are appended, in the order
+# listed in the Automake 1.10a+ documentation.
+configmake.h: Makefile
+ rm -f $@-t
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ echo '#define PREFIX "$(prefix)"'; \
+ echo '#define EXEC_PREFIX "$(exec_prefix)"'; \
+ echo '#define BINDIR "$(bindir)"'; \
+ echo '#define SBINDIR "$(sbindir)"'; \
+ echo '#define LIBEXECDIR "$(libexecdir)"'; \
+ echo '#define DATAROOTDIR "$(datarootdir)"'; \
+ echo '#define DATADIR "$(datadir)"'; \
+ echo '#define SYSCONFDIR "$(sysconfdir)"'; \
+ echo '#define SHAREDSTATEDIR "$(sharedstatedir)"'; \
+ echo '#define LOCALSTATEDIR "$(localstatedir)"'; \
+ echo '#define INCLUDEDIR "$(includedir)"'; \
+ echo '#define OLDINCLUDEDIR "$(oldincludedir)"'; \
+ echo '#define DOCDIR "$(docdir)"'; \
+ echo '#define INFODIR "$(infodir)"'; \
+ echo '#define HTMLDIR "$(htmldir)"'; \
+ echo '#define DVIDIR "$(dvidir)"'; \
+ echo '#define PDFDIR "$(pdfdir)"'; \
+ echo '#define PSDIR "$(psdir)"'; \
+ echo '#define LIBDIR "$(libdir)"'; \
+ echo '#define LISPDIR "$(lispdir)"'; \
+ echo '#define LOCALEDIR "$(localedir)"'; \
+ echo '#define MANDIR "$(mandir)"'; \
+ echo '#define MANEXT "$(manext)"'; \
+ echo '#define PKGDATADIR "$(pkgdatadir)"'; \
+ echo '#define PKGINCLUDEDIR "$(pkgincludedir)"'; \
+ echo '#define PKGLIBDIR "$(pkglibdir)"'; \
+ echo '#define PKGLIBEXECDIR "$(pkglibexecdir)"'; \
+ } | sed '/""/d' > $@-t
+ if test -f $@ && cmp $@-t $@ > /dev/null; then \
+ rm -f $@-t; \
+ else \
+ rm -f $@; mv $@-t $@; \
+ fi
+
+# We need the following in order to create <errno.h> when the system
+# doesn't have one that is POSIX compliant.
+errno.h: errno.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \
+ -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \
+ -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \
+ -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \
+ -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \
+ -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \
+ -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \
+ < $(srcdir)/errno.in.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <float.h> when the system
+# doesn't have one that works with the given compiler.
+float.h: float.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_FLOAT_H''@|$(NEXT_FLOAT_H)|g' \
+ < $(srcdir)/float.in.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <iconv.h> when the system
+# doesn't have one that works with the given compiler.
+iconv.h: iconv.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_ICONV_H''@|$(NEXT_ICONV_H)|g' \
+ -e 's|@''ICONV_CONST''@|$(ICONV_CONST)|g' \
+ -e 's|@''REPLACE_ICONV''@|$(REPLACE_ICONV)|g' \
+ -e 's|@''REPLACE_ICONV_OPEN''@|$(REPLACE_ICONV_OPEN)|g' \
+ -e 's|@''REPLACE_ICONV_UTF''@|$(REPLACE_ICONV_UTF)|g' \
+ < $(srcdir)/iconv.in.h; \
+ } > $@-t
+ mv $@-t $@
+
+iconv_open-aix.h: iconv_open-aix.gperf
+ $(GPERF) -m 10 $(srcdir)/iconv_open-aix.gperf > $(srcdir)/iconv_open-aix.h-t
+ mv $(srcdir)/iconv_open-aix.h-t $(srcdir)/iconv_open-aix.h
+iconv_open-hpux.h: iconv_open-hpux.gperf
+ $(GPERF) -m 10 $(srcdir)/iconv_open-hpux.gperf > $(srcdir)/iconv_open-hpux.h-t
+ mv $(srcdir)/iconv_open-hpux.h-t $(srcdir)/iconv_open-hpux.h
+iconv_open-irix.h: iconv_open-irix.gperf
+ $(GPERF) -m 10 $(srcdir)/iconv_open-irix.gperf > $(srcdir)/iconv_open-irix.h-t
+ mv $(srcdir)/iconv_open-irix.h-t $(srcdir)/iconv_open-irix.h
+iconv_open-osf.h: iconv_open-osf.gperf
+ $(GPERF) -m 10 $(srcdir)/iconv_open-osf.gperf > $(srcdir)/iconv_open-osf.h-t
+ mv $(srcdir)/iconv_open-osf.h-t $(srcdir)/iconv_open-osf.h
+
+# We need the following in order to install a simple file in $(libdir)
+# which is shared with other installed packages. We use a list of referencing
+# packages so that "make uninstall" will remove the file if and only if it
+# is not used by another installed package.
+# On systems with glibc-2.1 or newer, the file is redundant, therefore we
+# avoid installing it.
+
+all-local: charset.alias ref-add.sed ref-del.sed
+install-exec-local: install-exec-localcharset
+install-exec-localcharset: all-local
+ if test $(GLIBC21) = no; then \
+ case '$(host_os)' in \
+ darwin[56]*) \
+ need_charset_alias=true ;; \
+ darwin* | cygwin* | mingw* | pw32* | cegcc*) \
+ need_charset_alias=false ;; \
+ *) \
+ need_charset_alias=true ;; \
+ esac ; \
+ else \
+ need_charset_alias=false ; \
+ fi ; \
+ if $$need_charset_alias; then \
+ $(mkinstalldirs) $(DESTDIR)$(libdir) ; \
+ fi ; \
+ if test -f $(charset_alias); then \
+ sed -f ref-add.sed $(charset_alias) > $(charset_tmp) ; \
+ $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
+ rm -f $(charset_tmp) ; \
+ else \
+ if $$need_charset_alias; then \
+ sed -f ref-add.sed charset.alias > $(charset_tmp) ; \
+ $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
+ rm -f $(charset_tmp) ; \
+ fi ; \
+ fi
+
+uninstall-local: uninstall-localcharset
+uninstall-localcharset: all-local
+ if test -f $(charset_alias); then \
+ sed -f ref-del.sed $(charset_alias) > $(charset_tmp); \
+ if grep '^# Packages using this file: $$' $(charset_tmp) \
+ > /dev/null; then \
+ rm -f $(charset_alias); \
+ else \
+ $(INSTALL_DATA) $(charset_tmp) $(charset_alias); \
+ fi; \
+ rm -f $(charset_tmp); \
+ fi
+
+charset.alias: config.charset
+ rm -f t-$@ $@
+ $(SHELL) $(srcdir)/config.charset '$(host)' > t-$@
+ mv t-$@ $@
+.sin.sed:
+ rm -f t-$@ $@
+ sed -e '/^#/d' -e 's/@''PACKAGE''@/$(PACKAGE)/g' $< > t-$@
+ mv t-$@ $@
+
+# We need the following in order to create <math.h> when the system
+# doesn't have one that works with the given compiler.
+math.h: math.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''INCLUDE_NEXT_AS_FIRST_DIRECTIVE''@|$(INCLUDE_NEXT_AS_FIRST_DIRECTIVE)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_AS_FIRST_DIRECTIVE_MATH_H''@|$(NEXT_AS_FIRST_DIRECTIVE_MATH_H)|g' \
+ -e 's|@''GNULIB_CEILF''@|$(GNULIB_CEILF)|g' \
+ -e 's|@''GNULIB_CEILL''@|$(GNULIB_CEILL)|g' \
+ -e 's|@''GNULIB_FLOORF''@|$(GNULIB_FLOORF)|g' \
+ -e 's|@''GNULIB_FLOORL''@|$(GNULIB_FLOORL)|g' \
+ -e 's|@''GNULIB_FREXP''@|$(GNULIB_FREXP)|g' \
+ -e 's|@''GNULIB_FREXPL''@|$(GNULIB_FREXPL)|g' \
+ -e 's|@''GNULIB_ISFINITE''@|$(GNULIB_ISFINITE)|g' \
+ -e 's|@''GNULIB_ISINF''@|$(GNULIB_ISINF)|g' \
+ -e 's|@''GNULIB_ISNAN''@|$(GNULIB_ISNAN)|g' \
+ -e 's|@''GNULIB_ISNANF''@|$(GNULIB_ISNANF)|g' \
+ -e 's|@''GNULIB_ISNAND''@|$(GNULIB_ISNAND)|g' \
+ -e 's|@''GNULIB_ISNANL''@|$(GNULIB_ISNANL)|g' \
+ -e 's|@''GNULIB_LDEXPL''@|$(GNULIB_LDEXPL)|g' \
+ -e 's|@''GNULIB_MATHL''@|$(GNULIB_MATHL)|g' \
+ -e 's|@''GNULIB_ROUND''@|$(GNULIB_ROUND)|g' \
+ -e 's|@''GNULIB_ROUNDF''@|$(GNULIB_ROUNDF)|g' \
+ -e 's|@''GNULIB_ROUNDL''@|$(GNULIB_ROUNDL)|g' \
+ -e 's|@''GNULIB_SIGNBIT''@|$(GNULIB_SIGNBIT)|g' \
+ -e 's|@''GNULIB_TRUNC''@|$(GNULIB_TRUNC)|g' \
+ -e 's|@''GNULIB_TRUNCF''@|$(GNULIB_TRUNCF)|g' \
+ -e 's|@''GNULIB_TRUNCL''@|$(GNULIB_TRUNCL)|g' \
+ -e 's|@''HAVE_ISNANF''@|$(HAVE_ISNANF)|g' \
+ -e 's|@''HAVE_ISNAND''@|$(HAVE_ISNAND)|g' \
+ -e 's|@''HAVE_ISNANL''@|$(HAVE_ISNANL)|g' \
+ -e 's|@''HAVE_DECL_ACOSL''@|$(HAVE_DECL_ACOSL)|g' \
+ -e 's|@''HAVE_DECL_ASINL''@|$(HAVE_DECL_ASINL)|g' \
+ -e 's|@''HAVE_DECL_ATANL''@|$(HAVE_DECL_ATANL)|g' \
+ -e 's|@''HAVE_DECL_COSL''@|$(HAVE_DECL_COSL)|g' \
+ -e 's|@''HAVE_DECL_EXPL''@|$(HAVE_DECL_EXPL)|g' \
+ -e 's|@''HAVE_DECL_FREXPL''@|$(HAVE_DECL_FREXPL)|g' \
+ -e 's|@''HAVE_DECL_LDEXPL''@|$(HAVE_DECL_LDEXPL)|g' \
+ -e 's|@''HAVE_DECL_LOGL''@|$(HAVE_DECL_LOGL)|g' \
+ -e 's|@''HAVE_DECL_SINL''@|$(HAVE_DECL_SINL)|g' \
+ -e 's|@''HAVE_DECL_SQRTL''@|$(HAVE_DECL_SQRTL)|g' \
+ -e 's|@''HAVE_DECL_TANL''@|$(HAVE_DECL_TANL)|g' \
+ -e 's|@''HAVE_DECL_TRUNC''@|$(HAVE_DECL_TRUNC)|g' \
+ -e 's|@''HAVE_DECL_TRUNCF''@|$(HAVE_DECL_TRUNCF)|g' \
+ -e 's|@''REPLACE_CEILF''@|$(REPLACE_CEILF)|g' \
+ -e 's|@''REPLACE_CEILL''@|$(REPLACE_CEILL)|g' \
+ -e 's|@''REPLACE_FLOORF''@|$(REPLACE_FLOORF)|g' \
+ -e 's|@''REPLACE_FLOORL''@|$(REPLACE_FLOORL)|g' \
+ -e 's|@''REPLACE_FREXP''@|$(REPLACE_FREXP)|g' \
+ -e 's|@''REPLACE_FREXPL''@|$(REPLACE_FREXPL)|g' \
+ -e 's|@''REPLACE_HUGE_VAL''@|$(REPLACE_HUGE_VAL)|g' \
+ -e 's|@''REPLACE_ISFINITE''@|$(REPLACE_ISFINITE)|g' \
+ -e 's|@''REPLACE_ISINF''@|$(REPLACE_ISINF)|g' \
+ -e 's|@''REPLACE_ISNAN''@|$(REPLACE_ISNAN)|g' \
+ -e 's|@''REPLACE_LDEXPL''@|$(REPLACE_LDEXPL)|g' \
+ -e 's|@''REPLACE_NAN''@|$(REPLACE_NAN)|g' \
+ -e 's|@''REPLACE_ROUND''@|$(REPLACE_ROUND)|g' \
+ -e 's|@''REPLACE_ROUNDF''@|$(REPLACE_ROUNDF)|g' \
+ -e 's|@''REPLACE_ROUNDL''@|$(REPLACE_ROUNDL)|g' \
+ -e 's|@''REPLACE_SIGNBIT''@|$(REPLACE_SIGNBIT)|g' \
+ -e 's|@''REPLACE_SIGNBIT_USING_GCC''@|$(REPLACE_SIGNBIT_USING_GCC)|g' \
+ -e 's|@''REPLACE_TRUNCL''@|$(REPLACE_TRUNCL)|g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/math.in.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <stdbool.h> when the system
+# doesn't have one that works.
+stdbool.h: stdbool.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <stdint.h> when the system
+# doesn't have one that works with the given compiler.
+stdint.h: stdint.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
+ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
+ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
+ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
+ -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
+ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
+ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
+ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
+ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
+ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
+ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
+ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
+ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
+ < $(srcdir)/stdint.in.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <stdlib.h> when the system
+# doesn't have one that works with the given compiler.
+stdlib.h: stdlib.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \
+ -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \
+ -e 's|@''GNULIB_MALLOC_POSIX''@|$(GNULIB_MALLOC_POSIX)|g' \
+ -e 's|@''GNULIB_REALLOC_POSIX''@|$(GNULIB_REALLOC_POSIX)|g' \
+ -e 's|@''GNULIB_CALLOC_POSIX''@|$(GNULIB_CALLOC_POSIX)|g' \
+ -e 's|@''GNULIB_ATOLL''@|$(GNULIB_ATOLL)|g' \
+ -e 's|@''GNULIB_GETLOADAVG''@|$(GNULIB_GETLOADAVG)|g' \
+ -e 's|@''GNULIB_GETSUBOPT''@|$(GNULIB_GETSUBOPT)|g' \
+ -e 's|@''GNULIB_MKDTEMP''@|$(GNULIB_MKDTEMP)|g' \
+ -e 's|@''GNULIB_MKSTEMP''@|$(GNULIB_MKSTEMP)|g' \
+ -e 's|@''GNULIB_PUTENV''@|$(GNULIB_PUTENV)|g' \
+ -e 's|@''GNULIB_RANDOM_R''@|$(GNULIB_RANDOM_R)|g' \
+ -e 's|@''GNULIB_RPMATCH''@|$(GNULIB_RPMATCH)|g' \
+ -e 's|@''GNULIB_SETENV''@|$(GNULIB_SETENV)|g' \
+ -e 's|@''GNULIB_STRTOD''@|$(GNULIB_STRTOD)|g' \
+ -e 's|@''GNULIB_STRTOLL''@|$(GNULIB_STRTOLL)|g' \
+ -e 's|@''GNULIB_STRTOULL''@|$(GNULIB_STRTOULL)|g' \
+ -e 's|@''GNULIB_UNSETENV''@|$(GNULIB_UNSETENV)|g' \
+ -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \
+ -e 's|@''HAVE_CALLOC_POSIX''@|$(HAVE_CALLOC_POSIX)|g' \
+ -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
+ -e 's|@''HAVE_MALLOC_POSIX''@|$(HAVE_MALLOC_POSIX)|g' \
+ -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \
+ -e 's|@''HAVE_REALLOC_POSIX''@|$(HAVE_REALLOC_POSIX)|g' \
+ -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \
+ -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \
+ -e 's|@''HAVE_SETENV''@|$(HAVE_SETENV)|g' \
+ -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \
+ -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \
+ -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \
+ -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \
+ -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \
+ -e 's|@''HAVE_UNSETENV''@|$(HAVE_UNSETENV)|g' \
+ -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \
+ -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
+ -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
+ -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
+ -e 's|@''VOID_UNSETENV''@|$(VOID_UNSETENV)|g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/stdlib.in.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <string.h> when the system
+# doesn't have one that works with the given compiler.
+string.h: string.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
+ -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \
+ -e 's|@''GNULIB_MBSNLEN''@|$(GNULIB_MBSNLEN)|g' \
+ -e 's|@''GNULIB_MBSCHR''@|$(GNULIB_MBSCHR)|g' \
+ -e 's|@''GNULIB_MBSRCHR''@|$(GNULIB_MBSRCHR)|g' \
+ -e 's|@''GNULIB_MBSSTR''@|$(GNULIB_MBSSTR)|g' \
+ -e 's|@''GNULIB_MBSCASECMP''@|$(GNULIB_MBSCASECMP)|g' \
+ -e 's|@''GNULIB_MBSNCASECMP''@|$(GNULIB_MBSNCASECMP)|g' \
+ -e 's|@''GNULIB_MBSPCASECMP''@|$(GNULIB_MBSPCASECMP)|g' \
+ -e 's|@''GNULIB_MBSCASESTR''@|$(GNULIB_MBSCASESTR)|g' \
+ -e 's|@''GNULIB_MBSCSPN''@|$(GNULIB_MBSCSPN)|g' \
+ -e 's|@''GNULIB_MBSPBRK''@|$(GNULIB_MBSPBRK)|g' \
+ -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \
+ -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \
+ -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \
+ -e 's|@''GNULIB_MEMCHR''@|$(GNULIB_MEMCHR)|g' \
+ -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \
+ -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \
+ -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \
+ -e 's|@''GNULIB_RAWMEMCHR''@|$(GNULIB_RAWMEMCHR)|g' \
+ -e 's|@''GNULIB_STPCPY''@|$(GNULIB_STPCPY)|g' \
+ -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \
+ -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \
+ -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \
+ -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \
+ -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \
+ -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \
+ -e 's|@''GNULIB_STRSEP''@|$(GNULIB_STRSEP)|g' \
+ -e 's|@''GNULIB_STRSTR''@|$(GNULIB_STRSTR)|g' \
+ -e 's|@''GNULIB_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \
+ -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|g' \
+ -e 's|@''GNULIB_STRERROR''@|$(GNULIB_STRERROR)|g' \
+ -e 's|@''GNULIB_STRSIGNAL''@|$(GNULIB_STRSIGNAL)|g' \
+ -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \
+ -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
+ -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
+ -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+ -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \
+ -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
+ -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+ -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+ -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+ -e 's|@''HAVE_STRNDUP''@|$(HAVE_STRNDUP)|g' \
+ -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
+ -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
+ -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
+ -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
+ -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
+ -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+ -e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \
+ -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
+ -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+ -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
+ -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
+ -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
+ -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
+ -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
+ -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+ -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/string.in.h; \
+ } > $@-t
+ mv $@-t $@
+
+unicase/locale-languages.h: $(srcdir)/unicase/locale-languages.gperf
+ $(GPERF) -m 10 $(srcdir)/unicase/locale-languages.gperf > $(srcdir)/unicase/locale-languages.h-t
+ mv $(srcdir)/unicase/locale-languages.h-t $(srcdir)/unicase/locale-languages.h
+
+unicase/special-casing-table.h: $(srcdir)/unicase/special-casing-table.gperf
+ $(GPERF) -m 10 $(srcdir)/unicase/special-casing-table.gperf > $(srcdir)/unicase/special-casing-table.h-t
+ mv $(srcdir)/unicase/special-casing-table.h-t $(srcdir)/unicase/special-casing-table.h
+
+unictype/pr_byname.h: unictype/pr_byname.gperf
+ $(GPERF) -m 10 $(srcdir)/unictype/pr_byname.gperf > $(srcdir)/unictype/pr_byname.h-t
+ mv $(srcdir)/unictype/pr_byname.h-t $(srcdir)/unictype/pr_byname.h
+
+unictype/scripts_byname.h: unictype/scripts_byname.gperf
+ $(GPERF) -m 10 $(srcdir)/unictype/scripts_byname.gperf > $(srcdir)/unictype/scripts_byname.h-t
+ mv $(srcdir)/unictype/scripts_byname.h-t $(srcdir)/unictype/scripts_byname.h
+
+uninorm/composition-table.h: $(srcdir)/uninorm/composition-table.gperf
+ $(GPERF) -m 1 $(srcdir)/uninorm/composition-table.gperf > $(srcdir)/uninorm/composition-table.h-t
+ mv $(srcdir)/uninorm/composition-table.h-t $(srcdir)/uninorm/composition-table.h
+
+# We need the following in order to create an empty placeholder for
+# <unistd.h> when the system doesn't have one.
+unistd.h: unistd.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
+ -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
+ -e 's|@''GNULIB_CLOSE''@|$(GNULIB_CLOSE)|g' \
+ -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \
+ -e 's|@''GNULIB_ENVIRON''@|$(GNULIB_ENVIRON)|g' \
+ -e 's|@''GNULIB_EUIDACCESS''@|$(GNULIB_EUIDACCESS)|g' \
+ -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \
+ -e 's|@''GNULIB_FSYNC''@|$(GNULIB_FSYNC)|g' \
+ -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
+ -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
+ -e 's|@''GNULIB_GETDOMAINNAME''@|$(GNULIB_GETDOMAINNAME)|g' \
+ -e 's|@''GNULIB_GETDTABLESIZE''@|$(GNULIB_GETDTABLESIZE)|g' \
+ -e 's|@''GNULIB_GETHOSTNAME''@|$(GNULIB_GETHOSTNAME)|g' \
+ -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \
+ -e 's|@''GNULIB_GETPAGESIZE''@|$(GNULIB_GETPAGESIZE)|g' \
+ -e 's|@''GNULIB_GETUSERSHELL''@|$(GNULIB_GETUSERSHELL)|g' \
+ -e 's|@''GNULIB_LCHOWN''@|$(GNULIB_LCHOWN)|g' \
+ -e 's|@''GNULIB_LINK''@|$(GNULIB_LINK)|g' \
+ -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \
+ -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
+ -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
+ -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \
+ -e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|g' \
+ -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
+ -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
+ -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
+ -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
+ -e 's|@''HAVE_GETDOMAINNAME''@|$(HAVE_GETDOMAINNAME)|g' \
+ -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \
+ -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \
+ -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
+ -e 's|@''HAVE_GETUSERSHELL''@|$(HAVE_GETUSERSHELL)|g' \
+ -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \
+ -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
+ -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
+ -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
+ -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+ -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
+ -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
+ -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
+ -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
+ -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \
+ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
+ -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \
+ -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \
+ -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
+ -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \
+ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/unistd.in.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <wchar.h> when the system
+# version does not work standalone.
+wchar.h: wchar.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
+ -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
+ -e 's|@''GNULIB_BTOWC''@|$(GNULIB_BTOWC)|g' \
+ -e 's|@''GNULIB_WCTOB''@|$(GNULIB_WCTOB)|g' \
+ -e 's|@''GNULIB_MBSINIT''@|$(GNULIB_MBSINIT)|g' \
+ -e 's|@''GNULIB_MBRTOWC''@|$(GNULIB_MBRTOWC)|g' \
+ -e 's|@''GNULIB_MBRLEN''@|$(GNULIB_MBRLEN)|g' \
+ -e 's|@''GNULIB_MBSRTOWCS''@|$(GNULIB_MBSRTOWCS)|g' \
+ -e 's|@''GNULIB_MBSNRTOWCS''@|$(GNULIB_MBSNRTOWCS)|g' \
+ -e 's|@''GNULIB_WCRTOMB''@|$(GNULIB_WCRTOMB)|g' \
+ -e 's|@''GNULIB_WCSRTOMBS''@|$(GNULIB_WCSRTOMBS)|g' \
+ -e 's|@''GNULIB_WCSNRTOMBS''@|$(GNULIB_WCSNRTOMBS)|g' \
+ -e 's|@''GNULIB_WCWIDTH''@|$(GNULIB_WCWIDTH)|g' \
+ -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
+ -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
+ -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \
+ -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \
+ -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \
+ -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \
+ -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \
+ -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \
+ -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \
+ -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \
+ -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \
+ -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
+ -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
+ -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \
+ -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \
+ -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \
+ -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \
+ -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \
+ -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \
+ -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \
+ -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \
+ -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \
+ -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \
+ -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/wchar.in.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <wctype.h> when the system
+# doesn't have one that works with the given compiler.
+wctype.h: wctype.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \
+ -e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
+ -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
+ -e 's/@''REPLACE_ISWCNTRL''@/$(REPLACE_ISWCNTRL)/g' \
+ < $(srcdir)/wctype.in.h; \
+ } > $@-t
+ mv $@-t $@
+
+mostlyclean-local: mostlyclean-generic
+ @for dir in '' $(MOSTLYCLEANDIRS); do \
+ if test -n "$$dir" && test -d $$dir; then \
+ echo "rmdir $$dir"; rmdir $$dir; \
+ fi; \
+ done; \
+ :
+
+# Produce an unistring/stdbool.h that is not compiler dependent.
+# GCC >= 2.95 has <stdbool.h>.
+# AIX >= 5.3 has <stdbool.h>.
+# Solaris 10 and some HP-UX 11 versions have <stdbool.h> but it does not
+# necessarily work.
+unistring/stdbool.h : $(STDBOOL_H)
+ @MKDIR_P@ unistring
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ echo '#if !defined _GL_STDBOOL_H'; \
+ if test -f /usr/include/stdbool.h; then \
+ echo '#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) || defined _AIX'; \
+ else \
+ echo '#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))'; \
+ fi; \
+ echo '#include <stdbool.h>'; \
+ echo '#else'; \
+ cat $(srcdir)/stdbool.mini.h; \
+ echo '#endif'; \
+ echo '#endif'; \
+ } > $@-t
+ mv $@-t $@
+
+# Produce an unistring/stdint.h that is not compiler dependent.
+# Glibc >= 2 has <stdint.h>.
+# On most other platforms that have it, it is buggy in one way or the other.
+unistring/stdint.h : $(STDINT_H) stdint.mini.h
+ @MKDIR_P@ unistring
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ echo '#include <stddef.h>'; \
+ echo '#if __GLIBC__ >= 2'; \
+ echo '#include <stdint.h>'; \
+ echo '#else'; \
+ if test -f /usr/include/stdint.h; then \
+ HAVE_STDINT_H='1'; \
+ else \
+ HAVE_STDINT_H='defined __MINGW32__ || defined __HAIKU__'; \
+ fi; \
+ if test -f /usr/include/inttypes.h; then \
+ HAVE_INTTYPES_H='1'; \
+ else \
+ HAVE_INTTYPES_H='defined __MINGW32__ || defined __HAIKU__'; \
+ fi; \
+ if test -f /usr/include/sys/inttypes.h; then \
+ HAVE_SYS_INTTYPES_H='1'; \
+ else \
+ HAVE_SYS_INTTYPES_H='0'; \
+ fi; \
+ sed -e 's/@''HAVE_STDINT_H''@/'"$$HAVE_STDINT_H"'/g' \
+ -e 's|@''INCLUDE_NEXT''@|include|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@||g' \
+ -e 's|@''NEXT_STDINT_H''@|<stdint.h>|g' \
+ -e 's/@''HAVE_SYS_TYPES_H''@/1/g' \
+ -e 's/@''HAVE_INTTYPES_H''@/'"$$HAVE_INTTYPES_H"'/g' \
+ -e 's/@''HAVE_SYS_INTTYPES_H''@/'"$$HAVE_SYS_INTTYPES_H"'/g' \
+ -e 's/@''HAVE_SYS_BITYPES_H''@/0/g' \
+ < $(srcdir)/stdint.mini.h; \
+ echo '#endif'; \
+ } > $@-t
+ mv $@-t $@
+unistring/localcharset.h : localcharset.h
+ @MKDIR_P@ unistring
+ rm -f $@-t $@
+ cp $(srcdir)/localcharset.h $@-t
+ mv $@-t $@
+unistring/iconveh.h : iconveh.h
+ @MKDIR_P@ unistring
+ rm -f $@-t $@
+ cp $(srcdir)/iconveh.h $@-t
+ mv $@-t $@
+clean-local: clean-generic
+ @for dir in '' $(CLEANDIRS); do \
+ if test -n "$$dir" && test -d $$dir; then \
+ echo "rmdir $$dir"; rmdir $$dir; \
+ fi; \
+ done; \
+ if test '$(srcdir)' != '.'; then \
+ for dir in '' $(CLEANDIRS_NOT_IN_SRCDIR); do \
+ if test -n "$$dir" && test -d $$dir; then \
+ echo "rmdir $$dir"; rmdir $$dir; \
+ fi; \
+ done; \
+ fi; \
+ :
+
+# List of exported symbols.
+# We extract it from the header files that get installed, removing symbols
+# start with "_UC".
+# This file has the same format as the one expected by the libtool option
+# '-export-symbols', but we don't use this option, because it would prevent us
+# from building some of the gnulib unit tests.
+libunistring.sym : $(HEADERS_WITH_EXTERNS)
+ for f in $(HEADERS_WITH_EXTERNS); do cat $(srcdir)/$$f; done \
+ | $(srcdir)/declared.sh | LC_ALL=C sort | LC_ALL=C uniq \
+ | grep -v '^_UC' \
+ > $@-t
+ mv $@-t $@
+
+# Hide undesired symbols that are defined by libunistring_la_SOURCES or
+# libunistring_la_LIBADD from the global namespace, by prefixing them with
+# "libunistring_".
+all check install: config.h
+config.h: $(BUILT_SOURCES) libunistring.sym
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ : "Avoid double inclusion, to avoid a warning about redefinitions."; \
+ echo '#ifndef UNISTRING_CONFIG_H'; \
+ echo '#define UNISTRING_CONFIG_H'; \
+ echo; \
+ echo '#include "../config.h"'; \
+ echo; \
+ echo '#endif /* UNISTRING_CONFIG_H */'; \
+ } > config.h && \
+ if test -n "$(NAMESPACING)" && test -n "$(HAVE_GLOBAL_SYMBOL_PIPE)"; then \
+ { \
+ { \
+ for f in $(libunistring_la_SOURCES) $(libunistring_la_LIBADD); do \
+ case $$f in \
+ *.res.lo ) ;; \
+ *.c | *.$(OBJEXT) | *.lo ) \
+ sf=`echo "$$f" | sed -e 's,\\.[^.]*$$,,'`.c; \
+ test -f $$sf || sf=$(srcdir)/$$sf; \
+ of=`echo "$$f" | sed -e 's,^.*/,,' -e 's,\\.[^.]*$$,,'`.$(OBJEXT); \
+ echo "$(COMPILE) -c $$sf" 1>&6; \
+ $(COMPILE) -c $$sf || { rm -f config.h; exit 1; }; \
+ sh ./exported.sh $$of 1>&5; \
+ rm -f $$of `echo "$$of" | sed -e 's,\\.$(OBJEXT)$$,.lo,'`; \
+ ;; \
+ esac; \
+ done; \
+ } 5>&1 \
+ | sed -e 's,.* ,,' | LC_ALL=C sort | LC_ALL=C uniq \
+ | { \
+ if test -f libunistring.sym; then \
+ symfile='libunistring.sym'; \
+ else \
+ symfile='$(srcdir)/libunistring.sym'; \
+ fi; \
+ LC_ALL=C join -v 1 - $$symfile; \
+ } \
+ | sed -e 's,^\(.*\)$$,#define \1 libunistring_\1,' > config.h-t; \
+ } 6>&1 && \
+ if test -f config.h; then \
+ cat config.h-t >> config.h; \
+ rm -f config.h-t; \
+ else \
+ rm -f config.h-t; \
+ exit 1; \
+ fi \
+ fi
+@WOE32_TRUE@libunistring.res.lo : $(srcdir)/libunistring.rc
+@WOE32_TRUE@ $(LIBTOOL) --tag=RC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(RC) `$(SHELL) $(top_srcdir)/build-aux/windres-options --escape $(VERSION)` -i $(srcdir)/libunistring.rc -o libunistring.res.lo --output-format=coff
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/alloca.in.h b/lib/alloca.in.h
new file mode 100644
index 00000000..3d4f88b3
--- /dev/null
+++ b/lib/alloca.in.h
@@ -0,0 +1,56 @@
+/* Memory allocation on the stack.
+
+ Copyright (C) 1995, 1999, 2001-2004, 2006-2008 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser 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 Lesser 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. */
+
+/* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H
+ means there is a real alloca function. */
+#ifndef _GL_ALLOCA_H
+#define _GL_ALLOCA_H
+
+/* alloca (N) returns a pointer to N bytes of memory
+ allocated on the stack, which will last until the function returns.
+ Use of alloca should be avoided:
+ - inside arguments of function calls - undefined behaviour,
+ - in inline functions - the allocation may actually last until the
+ calling function returns,
+ - for huge N (say, N >= 65536) - you never know how large (or small)
+ the stack is, and when the stack cannot fulfill the memory allocation
+ request, the program just crashes.
+ */
+
+#ifndef alloca
+# ifdef __GNUC__
+# define alloca __builtin_alloca
+# elif defined _AIX
+# define alloca __alloca
+# elif defined _MSC_VER
+# include <malloc.h>
+# define alloca _alloca
+# elif defined __DECC && defined __VMS
+# define alloca __ALLOCA
+# else
+# include <stddef.h>
+# ifdef __cplusplus
+extern "C"
+# endif
+void *alloca (size_t);
+# endif
+#endif
+
+#endif /* _GL_ALLOCA_H */
diff --git a/lib/array-mergesort.h b/lib/array-mergesort.h
new file mode 100644
index 00000000..3988d289
--- /dev/null
+++ b/lib/array-mergesort.h
@@ -0,0 +1,274 @@
+/* Stable-sorting of an array using mergesort.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* This file implements stable sorting of an array, using the mergesort
+ algorithm.
+ Worst-case running time for an array of length N is O(N log N).
+ Unlike the mpsort module, the algorithm here attempts to minimize not
+ only the number of comparisons, but also the number of copying operations.
+
+ Before including this file, you need to define
+ ELEMENT The type of every array element.
+ COMPARE A two-argument macro that takes two 'const ELEMENT *'
+ pointers and returns a negative, zero, or positive 'int'
+ value if the element pointed to by the first argument is,
+ respectively, less, equal, or greater than the element
+ pointed to by the second argument.
+ STATIC The storage class of the functions being defined.
+ Before including this file, you also need to include:
+ #include <stddef.h>
+ */
+
+/* Merge the sorted arrays src1[0..n1-1] and src2[0..n2-1] into
+ dst[0..n1+n2-1]. In case of ambiguity, put the elements of src1
+ before the elements of src2.
+ n1 and n2 must be > 0.
+ The arrays src1 and src2 must not overlap the dst array, except that
+ src1 may be dst[n2..n1+n2-1], or src2 may be dst[n1..n1+n2-1]. */
+static void
+merge (const ELEMENT *src1, size_t n1,
+ const ELEMENT *src2, size_t n2,
+ ELEMENT *dst)
+{
+ for (;;) /* while (n1 > 0 && n2 > 0) */
+ {
+ if (COMPARE (src1, src2) <= 0)
+ {
+ *dst++ = *src1++;
+ n1--;
+ if (n1 == 0)
+ break;
+ }
+ else
+ {
+ *dst++ = *src2++;
+ n2--;
+ if (n2 == 0)
+ break;
+ }
+ }
+ /* Here n1 == 0 || n2 == 0 but also n1 > 0 || n2 > 0. */
+ if (n1 > 0)
+ {
+ if (dst != src1)
+ do
+ {
+ *dst++ = *src1++;
+ n1--;
+ }
+ while (n1 > 0);
+ }
+ else /* n2 > 0 */
+ {
+ if (dst != src2)
+ do
+ {
+ *dst++ = *src2++;
+ n2--;
+ }
+ while (n2 > 0);
+ }
+}
+
+/* Sort src[0..n-1] into dst[0..n-1], using tmp[0..n/2-1] as temporary
+ (scratch) storage.
+ The arrays src, dst, tmp must not overlap. */
+STATIC void
+merge_sort_fromto (const ELEMENT *src, ELEMENT *dst, size_t n, ELEMENT *tmp)
+{
+ switch (n)
+ {
+ case 0:
+ return;
+ case 1:
+ /* Nothing to do. */
+ dst[0] = src[0];
+ return;
+ case 2:
+ /* Trivial case. */
+ if (COMPARE (&src[0], &src[1]) <= 0)
+ {
+ /* src[0] <= src[1] */
+ dst[0] = src[0];
+ dst[1] = src[1];
+ }
+ else
+ {
+ dst[0] = src[1];
+ dst[1] = src[0];
+ }
+ break;
+ case 3:
+ /* Simple case. */
+ if (COMPARE (&src[0], &src[1]) <= 0)
+ {
+ if (COMPARE (&src[1], &src[2]) <= 0)
+ {
+ /* src[0] <= src[1] <= src[2] */
+ dst[0] = src[0];
+ dst[1] = src[1];
+ dst[2] = src[2];
+ }
+ else if (COMPARE (&src[0], &src[2]) <= 0)
+ {
+ /* src[0] <= src[2] < src[1] */
+ dst[0] = src[0];
+ dst[1] = src[2];
+ dst[2] = src[1];
+ }
+ else
+ {
+ /* src[2] < src[0] <= src[1] */
+ dst[0] = src[2];
+ dst[1] = src[0];
+ dst[2] = src[1];
+ }
+ }
+ else
+ {
+ if (COMPARE (&src[0], &src[2]) <= 0)
+ {
+ /* src[1] < src[0] <= src[2] */
+ dst[0] = src[1];
+ dst[1] = src[0];
+ dst[2] = src[2];
+ }
+ else if (COMPARE (&src[1], &src[2]) <= 0)
+ {
+ /* src[1] <= src[2] < src[0] */
+ dst[0] = src[1];
+ dst[1] = src[2];
+ dst[2] = src[0];
+ }
+ else
+ {
+ /* src[2] < src[1] < src[0] */
+ dst[0] = src[2];
+ dst[1] = src[1];
+ dst[2] = src[0];
+ }
+ }
+ break;
+ default:
+ {
+ size_t n1 = n / 2;
+ size_t n2 = (n + 1) / 2;
+ /* Note: n1 + n2 = n, n1 <= n2. */
+ /* Sort src[n1..n-1] into dst[n1..n-1], scratching tmp[0..n2/2-1]. */
+ merge_sort_fromto (src + n1, dst + n1, n2, tmp);
+ /* Sort src[0..n1-1] into tmp[0..n1-1], scratching dst[0..n1-1]. */
+ merge_sort_fromto (src, tmp, n1, dst);
+ /* Merge the two half results. */
+ merge (tmp, n1, dst + n1, n2, dst);
+ }
+ break;
+ }
+}
+
+/* Sort src[0..n-1], using tmp[0..n-1] as temporary (scratch) storage.
+ The arrays src, tmp must not overlap. */
+STATIC void
+merge_sort_inplace (ELEMENT *src, size_t n, ELEMENT *tmp)
+{
+ switch (n)
+ {
+ case 0:
+ case 1:
+ /* Nothing to do. */
+ return;
+ case 2:
+ /* Trivial case. */
+ if (COMPARE (&src[0], &src[1]) <= 0)
+ {
+ /* src[0] <= src[1] */
+ }
+ else
+ {
+ ELEMENT t = src[0];
+ src[0] = src[1];
+ src[1] = t;
+ }
+ break;
+ case 3:
+ /* Simple case. */
+ if (COMPARE (&src[0], &src[1]) <= 0)
+ {
+ if (COMPARE (&src[1], &src[2]) <= 0)
+ {
+ /* src[0] <= src[1] <= src[2] */
+ }
+ else if (COMPARE (&src[0], &src[2]) <= 0)
+ {
+ /* src[0] <= src[2] < src[1] */
+ ELEMENT t = src[1];
+ src[1] = src[2];
+ src[2] = t;
+ }
+ else
+ {
+ /* src[2] < src[0] <= src[1] */
+ ELEMENT t = src[0];
+ src[0] = src[2];
+ src[2] = src[1];
+ src[1] = t;
+ }
+ }
+ else
+ {
+ if (COMPARE (&src[0], &src[2]) <= 0)
+ {
+ /* src[1] < src[0] <= src[2] */
+ ELEMENT t = src[0];
+ src[0] = src[1];
+ src[1] = t;
+ }
+ else if (COMPARE (&src[1], &src[2]) <= 0)
+ {
+ /* src[1] <= src[2] < src[0] */
+ ELEMENT t = src[0];
+ src[0] = src[1];
+ src[1] = src[2];
+ src[2] = t;
+ }
+ else
+ {
+ /* src[2] < src[1] < src[0] */
+ ELEMENT t = src[0];
+ src[0] = src[2];
+ src[2] = t;
+ }
+ }
+ break;
+ default:
+ {
+ size_t n1 = n / 2;
+ size_t n2 = (n + 1) / 2;
+ /* Note: n1 + n2 = n, n1 <= n2. */
+ /* Sort src[n1..n-1], scratching tmp[0..n2-1]. */
+ merge_sort_inplace (src + n1, n2, tmp);
+ /* Sort src[0..n1-1] into tmp[0..n1-1], scratching tmp[n1..2*n1-1]. */
+ merge_sort_fromto (src, tmp, n1, tmp + n1);
+ /* Merge the two half results. */
+ merge (tmp, n1, src + n1, n2, src);
+ }
+ break;
+ }
+}
+
+#undef ELEMENT
+#undef COMPARE
+#undef STATIC
diff --git a/lib/c-ctype.c b/lib/c-ctype.c
new file mode 100644
index 00000000..e36a5134
--- /dev/null
+++ b/lib/c-ctype.c
@@ -0,0 +1,396 @@
+/* Character handling in C locale.
+
+ Copyright 2000-2003, 2006 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser 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. */
+
+#include <config.h>
+
+/* Specification. */
+#define NO_C_CTYPE_MACROS
+#include "c-ctype.h"
+
+/* The function isascii is not locale dependent. Its use in EBCDIC is
+ questionable. */
+bool
+c_isascii (int c)
+{
+ return (c >= 0x00 && c <= 0x7f);
+}
+
+bool
+c_isalnum (int c)
+{
+#if C_CTYPE_CONSECUTIVE_DIGITS \
+ && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+ return ((c >= '0' && c <= '9')
+ || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z'));
+#else
+ return ((c >= '0' && c <= '9')
+ || (c >= 'A' && c <= 'Z')
+ || (c >= 'a' && c <= 'z'));
+#endif
+#else
+ switch (c)
+ {
+ case '0': case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ 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':
+ 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':
+ return 1;
+ default:
+ return 0;
+ }
+#endif
+}
+
+bool
+c_isalpha (int c)
+{
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+ return ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z');
+#else
+ return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'));
+#endif
+#else
+ switch (c)
+ {
+ 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':
+ 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':
+ return 1;
+ default:
+ return 0;
+ }
+#endif
+}
+
+bool
+c_isblank (int c)
+{
+ return (c == ' ' || c == '\t');
+}
+
+bool
+c_iscntrl (int c)
+{
+#if C_CTYPE_ASCII
+ return ((c & ~0x1f) == 0 || c == 0x7f);
+#else
+ switch (c)
+ {
+ case ' ': case '!': case '"': case '#': case '$': case '%':
+ case '&': case '\'': case '(': case ')': case '*': case '+':
+ case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>': case '?':
+ case '@':
+ 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':
+ case '[': case '\\': case ']': case '^': case '_': case '`':
+ 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':
+ case '{': case '|': case '}': case '~':
+ return 0;
+ default:
+ return 1;
+ }
+#endif
+}
+
+bool
+c_isdigit (int c)
+{
+#if C_CTYPE_CONSECUTIVE_DIGITS
+ return (c >= '0' && c <= '9');
+#else
+ switch (c)
+ {
+ case '0': case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ return 1;
+ default:
+ return 0;
+ }
+#endif
+}
+
+bool
+c_islower (int c)
+{
+#if C_CTYPE_CONSECUTIVE_LOWERCASE
+ return (c >= 'a' && c <= 'z');
+#else
+ switch (c)
+ {
+ 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':
+ return 1;
+ default:
+ return 0;
+ }
+#endif
+}
+
+bool
+c_isgraph (int c)
+{
+#if C_CTYPE_ASCII
+ return (c >= '!' && c <= '~');
+#else
+ switch (c)
+ {
+ case '!': case '"': case '#': case '$': case '%': case '&':
+ case '\'': case '(': case ')': case '*': case '+': case ',':
+ case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>': case '?':
+ case '@':
+ 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':
+ case '[': case '\\': case ']': case '^': case '_': case '`':
+ 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':
+ case '{': case '|': case '}': case '~':
+ return 1;
+ default:
+ return 0;
+ }
+#endif
+}
+
+bool
+c_isprint (int c)
+{
+#if C_CTYPE_ASCII
+ return (c >= ' ' && c <= '~');
+#else
+ switch (c)
+ {
+ case ' ': case '!': case '"': case '#': case '$': case '%':
+ case '&': case '\'': case '(': case ')': case '*': case '+':
+ case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>': case '?':
+ case '@':
+ 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':
+ case '[': case '\\': case ']': case '^': case '_': case '`':
+ 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':
+ case '{': case '|': case '}': case '~':
+ return 1;
+ default:
+ return 0;
+ }
+#endif
+}
+
+bool
+c_ispunct (int c)
+{
+#if C_CTYPE_ASCII
+ return ((c >= '!' && c <= '~')
+ && !((c >= '0' && c <= '9')
+ || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z')));
+#else
+ switch (c)
+ {
+ case '!': case '"': case '#': case '$': case '%': case '&':
+ case '\'': case '(': case ')': case '*': case '+': case ',':
+ case '-': case '.': case '/':
+ case ':': case ';': case '<': case '=': case '>': case '?':
+ case '@':
+ case '[': case '\\': case ']': case '^': case '_': case '`':
+ case '{': case '|': case '}': case '~':
+ return 1;
+ default:
+ return 0;
+ }
+#endif
+}
+
+bool
+c_isspace (int c)
+{
+ return (c == ' ' || c == '\t'
+ || c == '\n' || c == '\v' || c == '\f' || c == '\r');
+}
+
+bool
+c_isupper (int c)
+{
+#if C_CTYPE_CONSECUTIVE_UPPERCASE
+ return (c >= 'A' && c <= 'Z');
+#else
+ switch (c)
+ {
+ 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':
+ return 1;
+ default:
+ return 0;
+ }
+#endif
+}
+
+bool
+c_isxdigit (int c)
+{
+#if C_CTYPE_CONSECUTIVE_DIGITS \
+ && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+ return ((c >= '0' && c <= '9')
+ || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'F'));
+#else
+ return ((c >= '0' && c <= '9')
+ || (c >= 'A' && c <= 'F')
+ || (c >= 'a' && c <= 'f'));
+#endif
+#else
+ switch (c)
+ {
+ case '0': case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+ return 1;
+ default:
+ return 0;
+ }
+#endif
+}
+
+int
+c_tolower (int c)
+{
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+ return (c >= 'A' && c <= 'Z' ? c - 'A' + 'a' : c);
+#else
+ switch (c)
+ {
+ case 'A': return 'a';
+ case 'B': return 'b';
+ case 'C': return 'c';
+ case 'D': return 'd';
+ case 'E': return 'e';
+ case 'F': return 'f';
+ case 'G': return 'g';
+ case 'H': return 'h';
+ case 'I': return 'i';
+ case 'J': return 'j';
+ case 'K': return 'k';
+ case 'L': return 'l';
+ case 'M': return 'm';
+ case 'N': return 'n';
+ case 'O': return 'o';
+ case 'P': return 'p';
+ case 'Q': return 'q';
+ case 'R': return 'r';
+ case 'S': return 's';
+ case 'T': return 't';
+ case 'U': return 'u';
+ case 'V': return 'v';
+ case 'W': return 'w';
+ case 'X': return 'x';
+ case 'Y': return 'y';
+ case 'Z': return 'z';
+ default: return c;
+ }
+#endif
+}
+
+int
+c_toupper (int c)
+{
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+ return (c >= 'a' && c <= 'z' ? c - 'a' + 'A' : c);
+#else
+ switch (c)
+ {
+ case 'a': return 'A';
+ case 'b': return 'B';
+ case 'c': return 'C';
+ case 'd': return 'D';
+ case 'e': return 'E';
+ case 'f': return 'F';
+ case 'g': return 'G';
+ case 'h': return 'H';
+ case 'i': return 'I';
+ case 'j': return 'J';
+ case 'k': return 'K';
+ case 'l': return 'L';
+ case 'm': return 'M';
+ case 'n': return 'N';
+ case 'o': return 'O';
+ case 'p': return 'P';
+ case 'q': return 'Q';
+ case 'r': return 'R';
+ case 's': return 'S';
+ case 't': return 'T';
+ case 'u': return 'U';
+ case 'v': return 'V';
+ case 'w': return 'W';
+ case 'x': return 'X';
+ case 'y': return 'Y';
+ case 'z': return 'Z';
+ default: return c;
+ }
+#endif
+}
diff --git a/lib/c-ctype.h b/lib/c-ctype.h
new file mode 100644
index 00000000..d7b067e8
--- /dev/null
+++ b/lib/c-ctype.h
@@ -0,0 +1,295 @@
+/* Character handling in C locale.
+
+ These functions work like the corresponding functions in <ctype.h>,
+ except that they have the C (POSIX) locale hardwired, whereas the
+ <ctype.h> functions' behaviour depends on the current locale set via
+ setlocale.
+
+ Copyright (C) 2000-2003, 2006, 2008 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser 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. */
+
+#ifndef C_CTYPE_H
+#define C_CTYPE_H
+
+#include <stdbool.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* The functions defined in this file assume the "C" locale and a character
+ set without diacritics (ASCII-US or EBCDIC-US or something like that).
+ Even if the "C" locale on a particular system is an extension of the ASCII
+ character set (like on BeOS, where it is UTF-8, or on AmigaOS, where it
+ is ISO-8859-1), the functions in this file recognize only the ASCII
+ characters. */
+
+
+/* Check whether the ASCII optimizations apply. */
+
+/* ANSI C89 (and ISO C99 5.2.1.3 too) already guarantees that
+ '0', '1', ..., '9' have consecutive integer values. */
+#define C_CTYPE_CONSECUTIVE_DIGITS 1
+
+#if ('A' <= 'Z') \
+ && ('A' + 1 == 'B') && ('B' + 1 == 'C') && ('C' + 1 == 'D') \
+ && ('D' + 1 == 'E') && ('E' + 1 == 'F') && ('F' + 1 == 'G') \
+ && ('G' + 1 == 'H') && ('H' + 1 == 'I') && ('I' + 1 == 'J') \
+ && ('J' + 1 == 'K') && ('K' + 1 == 'L') && ('L' + 1 == 'M') \
+ && ('M' + 1 == 'N') && ('N' + 1 == 'O') && ('O' + 1 == 'P') \
+ && ('P' + 1 == 'Q') && ('Q' + 1 == 'R') && ('R' + 1 == 'S') \
+ && ('S' + 1 == 'T') && ('T' + 1 == 'U') && ('U' + 1 == 'V') \
+ && ('V' + 1 == 'W') && ('W' + 1 == 'X') && ('X' + 1 == 'Y') \
+ && ('Y' + 1 == 'Z')
+#define C_CTYPE_CONSECUTIVE_UPPERCASE 1
+#endif
+
+#if ('a' <= 'z') \
+ && ('a' + 1 == 'b') && ('b' + 1 == 'c') && ('c' + 1 == 'd') \
+ && ('d' + 1 == 'e') && ('e' + 1 == 'f') && ('f' + 1 == 'g') \
+ && ('g' + 1 == 'h') && ('h' + 1 == 'i') && ('i' + 1 == 'j') \
+ && ('j' + 1 == 'k') && ('k' + 1 == 'l') && ('l' + 1 == 'm') \
+ && ('m' + 1 == 'n') && ('n' + 1 == 'o') && ('o' + 1 == 'p') \
+ && ('p' + 1 == 'q') && ('q' + 1 == 'r') && ('r' + 1 == 's') \
+ && ('s' + 1 == 't') && ('t' + 1 == 'u') && ('u' + 1 == 'v') \
+ && ('v' + 1 == 'w') && ('w' + 1 == 'x') && ('x' + 1 == 'y') \
+ && ('y' + 1 == 'z')
+#define C_CTYPE_CONSECUTIVE_LOWERCASE 1
+#endif
+
+#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 ASCII or one of its variants or extensions, not EBCDIC.
+ Testing the value of '\n' and '\r' is not relevant. */
+#define C_CTYPE_ASCII 1
+#endif
+
+
+/* Function declarations. */
+
+/* Unlike the functions in <ctype.h>, which require an argument in the range
+ of the 'unsigned char' type, the functions here operate on values that are
+ in the 'unsigned char' range or in the 'char' range. In other words,
+ when you have a 'char' value, you need to cast it before using it as
+ argument to a <ctype.h> function:
+
+ const char *s = ...;
+ if (isalpha ((unsigned char) *s)) ...
+
+ but you don't need to cast it for the functions defined in this file:
+
+ const char *s = ...;
+ if (c_isalpha (*s)) ...
+ */
+
+extern bool c_isascii (int c); /* not locale dependent */
+
+extern bool c_isalnum (int c);
+extern bool c_isalpha (int c);
+extern bool c_isblank (int c);
+extern bool c_iscntrl (int c);
+extern bool c_isdigit (int c);
+extern bool c_islower (int c);
+extern bool c_isgraph (int c);
+extern bool c_isprint (int c);
+extern bool c_ispunct (int c);
+extern bool c_isspace (int c);
+extern bool c_isupper (int c);
+extern bool c_isxdigit (int c);
+
+extern int c_tolower (int c);
+extern int c_toupper (int c);
+
+
+#if defined __GNUC__ && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ && !defined NO_C_CTYPE_MACROS
+
+/* ASCII optimizations. */
+
+#undef c_isascii
+#define c_isascii(c) \
+ ({ int __c = (c); \
+ (__c >= 0x00 && __c <= 0x7f); \
+ })
+
+#if C_CTYPE_CONSECUTIVE_DIGITS \
+ && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+#undef c_isalnum
+#define c_isalnum(c) \
+ ({ int __c = (c); \
+ ((__c >= '0' && __c <= '9') \
+ || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z')); \
+ })
+#else
+#undef c_isalnum
+#define c_isalnum(c) \
+ ({ int __c = (c); \
+ ((__c >= '0' && __c <= '9') \
+ || (__c >= 'A' && __c <= 'Z') \
+ || (__c >= 'a' && __c <= 'z')); \
+ })
+#endif
+#endif
+
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+#undef c_isalpha
+#define c_isalpha(c) \
+ ({ int __c = (c); \
+ ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z'); \
+ })
+#else
+#undef c_isalpha
+#define c_isalpha(c) \
+ ({ int __c = (c); \
+ ((__c >= 'A' && __c <= 'Z') || (__c >= 'a' && __c <= 'z')); \
+ })
+#endif
+#endif
+
+#undef c_isblank
+#define c_isblank(c) \
+ ({ int __c = (c); \
+ (__c == ' ' || __c == '\t'); \
+ })
+
+#if C_CTYPE_ASCII
+#undef c_iscntrl
+#define c_iscntrl(c) \
+ ({ int __c = (c); \
+ ((__c & ~0x1f) == 0 || __c == 0x7f); \
+ })
+#endif
+
+#if C_CTYPE_CONSECUTIVE_DIGITS
+#undef c_isdigit
+#define c_isdigit(c) \
+ ({ int __c = (c); \
+ (__c >= '0' && __c <= '9'); \
+ })
+#endif
+
+#if C_CTYPE_CONSECUTIVE_LOWERCASE
+#undef c_islower
+#define c_islower(c) \
+ ({ int __c = (c); \
+ (__c >= 'a' && __c <= 'z'); \
+ })
+#endif
+
+#if C_CTYPE_ASCII
+#undef c_isgraph
+#define c_isgraph(c) \
+ ({ int __c = (c); \
+ (__c >= '!' && __c <= '~'); \
+ })
+#endif
+
+#if C_CTYPE_ASCII
+#undef c_isprint
+#define c_isprint(c) \
+ ({ int __c = (c); \
+ (__c >= ' ' && __c <= '~'); \
+ })
+#endif
+
+#if C_CTYPE_ASCII
+#undef c_ispunct
+#define c_ispunct(c) \
+ ({ int _c = (c); \
+ (c_isgraph (_c) && ! c_isalnum (_c)); \
+ })
+#endif
+
+#undef c_isspace
+#define c_isspace(c) \
+ ({ int __c = (c); \
+ (__c == ' ' || __c == '\t' \
+ || __c == '\n' || __c == '\v' || __c == '\f' || __c == '\r'); \
+ })
+
+#if C_CTYPE_CONSECUTIVE_UPPERCASE
+#undef c_isupper
+#define c_isupper(c) \
+ ({ int __c = (c); \
+ (__c >= 'A' && __c <= 'Z'); \
+ })
+#endif
+
+#if C_CTYPE_CONSECUTIVE_DIGITS \
+ && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+#undef c_isxdigit
+#define c_isxdigit(c) \
+ ({ int __c = (c); \
+ ((__c >= '0' && __c <= '9') \
+ || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'F')); \
+ })
+#else
+#undef c_isxdigit
+#define c_isxdigit(c) \
+ ({ int __c = (c); \
+ ((__c >= '0' && __c <= '9') \
+ || (__c >= 'A' && __c <= 'F') \
+ || (__c >= 'a' && __c <= 'f')); \
+ })
+#endif
+#endif
+
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#undef c_tolower
+#define c_tolower(c) \
+ ({ int __c = (c); \
+ (__c >= 'A' && __c <= 'Z' ? __c - 'A' + 'a' : __c); \
+ })
+#undef c_toupper
+#define c_toupper(c) \
+ ({ int __c = (c); \
+ (__c >= 'a' && __c <= 'z' ? __c - 'a' + 'A' : __c); \
+ })
+#endif
+
+#endif /* optimizing for speed */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* C_CTYPE_H */
diff --git a/lib/c-strcase.h b/lib/c-strcase.h
new file mode 100644
index 00000000..714a3c62
--- /dev/null
+++ b/lib/c-strcase.h
@@ -0,0 +1,55 @@
+/* Case-insensitive string comparison functions in C locale.
+ Copyright (C) 1995-1996, 2001, 2003, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+#ifndef C_STRCASE_H
+#define C_STRCASE_H
+
+#include <stddef.h>
+
+
+/* The functions defined in this file assume the "C" locale and a character
+ set without diacritics (ASCII-US or EBCDIC-US or something like that).
+ Even if the "C" locale on a particular system is an extension of the ASCII
+ character set (like on BeOS, where it is UTF-8, or on AmigaOS, where it
+ is ISO-8859-1), the functions in this file recognize only the ASCII
+ characters. More precisely, one of the string arguments must be an ASCII
+ string; the other one can also contain non-ASCII characters (but then
+ the comparison result will be nonzero). */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Compare strings S1 and S2, ignoring case, returning less than, equal to or
+ greater than zero if S1 is lexicographically less than, equal to or greater
+ than S2. */
+extern int c_strcasecmp (const char *s1, const char *s2);
+
+/* Compare no more than N characters of strings S1 and S2, ignoring case,
+ returning less than, equal to or greater than zero if S1 is
+ lexicographically less than, equal to or greater than S2. */
+extern int c_strncasecmp (const char *s1, const char *s2, size_t n);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* C_STRCASE_H */
diff --git a/lib/c-strcasecmp.c b/lib/c-strcasecmp.c
new file mode 100644
index 00000000..a5238988
--- /dev/null
+++ b/lib/c-strcasecmp.c
@@ -0,0 +1,57 @@
+/* c-strcasecmp.c -- case insensitive string comparator in C locale
+ Copyright (C) 1998-1999, 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 Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+#include <config.h>
+
+/* Specification. */
+#include "c-strcase.h"
+
+#include <limits.h>
+
+#include "c-ctype.h"
+
+int
+c_strcasecmp (const char *s1, const char *s2)
+{
+ register const unsigned char *p1 = (const unsigned char *) s1;
+ register const unsigned char *p2 = (const unsigned char *) s2;
+ unsigned char c1, c2;
+
+ if (p1 == p2)
+ return 0;
+
+ do
+ {
+ c1 = c_tolower (*p1);
+ c2 = c_tolower (*p2);
+
+ if (c1 == '\0')
+ break;
+
+ ++p1;
+ ++p2;
+ }
+ while (c1 == c2);
+
+ if (UCHAR_MAX <= INT_MAX)
+ return c1 - c2;
+ else
+ /* On machines where 'char' and 'int' are types of the same size, the
+ difference of two 'unsigned char' values - including the sign bit -
+ doesn't fit in an 'int'. */
+ return (c1 > c2 ? 1 : c1 < c2 ? -1 : 0);
+}
diff --git a/lib/c-strcaseeq.h b/lib/c-strcaseeq.h
new file mode 100644
index 00000000..cd29b66c
--- /dev/null
+++ b/lib/c-strcaseeq.h
@@ -0,0 +1,184 @@
+/* Optimized case-insensitive string comparison in C locale.
+ Copyright (C) 2001-2002, 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include "c-strcase.h"
+#include "c-ctype.h"
+
+/* STRCASEEQ allows to optimize string comparison with a small literal string.
+ STRCASEEQ (s, "UTF-8", 'U','T','F','-','8',0,0,0,0)
+ is semantically equivalent to
+ c_strcasecmp (s, "UTF-8") == 0
+ just faster. */
+
+/* Help GCC to generate good code for string comparisons with
+ immediate strings. */
+#if defined (__GNUC__) && defined (__OPTIMIZE__)
+
+/* Case insensitive comparison of ASCII characters. */
+# if C_CTYPE_ASCII
+# define CASEEQ(other,upper) \
+ (c_isupper (upper) ? ((other) & ~0x20) == (upper) : (other) == (upper))
+# elif C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+# define CASEEQ(other,upper) \
+ (c_isupper (upper) ? (other) == (upper) || (other) == (upper) - 'A' + 'a' : (other) == (upper))
+# else
+# define CASEEQ(other,upper) \
+ (c_toupper (other) == (upper))
+# endif
+
+static inline int
+strcaseeq9 (const char *s1, const char *s2)
+{
+ return c_strcasecmp (s1 + 9, s2 + 9) == 0;
+}
+
+static inline int
+strcaseeq8 (const char *s1, const char *s2, char s28)
+{
+ if (CASEEQ (s1[8], s28))
+ {
+ if (s28 == 0)
+ return 1;
+ else
+ return strcaseeq9 (s1, s2);
+ }
+ else
+ return 0;
+}
+
+static inline int
+strcaseeq7 (const char *s1, const char *s2, char s27, char s28)
+{
+ if (CASEEQ (s1[7], s27))
+ {
+ if (s27 == 0)
+ return 1;
+ else
+ return strcaseeq8 (s1, s2, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+strcaseeq6 (const char *s1, const char *s2, char s26, char s27, char s28)
+{
+ if (CASEEQ (s1[6], s26))
+ {
+ if (s26 == 0)
+ return 1;
+ else
+ return strcaseeq7 (s1, s2, s27, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+strcaseeq5 (const char *s1, const char *s2, char s25, char s26, char s27, char s28)
+{
+ if (CASEEQ (s1[5], s25))
+ {
+ if (s25 == 0)
+ return 1;
+ else
+ return strcaseeq6 (s1, s2, s26, s27, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+strcaseeq4 (const char *s1, const char *s2, char s24, char s25, char s26, char s27, char s28)
+{
+ if (CASEEQ (s1[4], s24))
+ {
+ if (s24 == 0)
+ return 1;
+ else
+ return strcaseeq5 (s1, s2, s25, s26, s27, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+strcaseeq3 (const char *s1, const char *s2, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+ if (CASEEQ (s1[3], s23))
+ {
+ if (s23 == 0)
+ return 1;
+ else
+ return strcaseeq4 (s1, s2, s24, s25, s26, s27, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+strcaseeq2 (const char *s1, const char *s2, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+ if (CASEEQ (s1[2], s22))
+ {
+ if (s22 == 0)
+ return 1;
+ else
+ return strcaseeq3 (s1, s2, s23, s24, s25, s26, s27, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+strcaseeq1 (const char *s1, const char *s2, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+ if (CASEEQ (s1[1], s21))
+ {
+ if (s21 == 0)
+ return 1;
+ else
+ return strcaseeq2 (s1, s2, s22, s23, s24, s25, s26, s27, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+strcaseeq0 (const char *s1, const char *s2, char s20, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+ if (CASEEQ (s1[0], s20))
+ {
+ if (s20 == 0)
+ return 1;
+ else
+ return strcaseeq1 (s1, s2, s21, s22, s23, s24, s25, s26, s27, s28);
+ }
+ else
+ return 0;
+}
+
+#define STRCASEEQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
+ strcaseeq0 (s1, s2, s20, s21, s22, s23, s24, s25, s26, s27, s28)
+
+#else
+
+#define STRCASEEQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
+ (c_strcasecmp (s1, s2) == 0)
+
+#endif
diff --git a/lib/c-strncasecmp.c b/lib/c-strncasecmp.c
new file mode 100644
index 00000000..c1496ca4
--- /dev/null
+++ b/lib/c-strncasecmp.c
@@ -0,0 +1,57 @@
+/* c-strncasecmp.c -- case insensitive string comparator in C locale
+ Copyright (C) 1998-1999, 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 Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+#include <config.h>
+
+/* Specification. */
+#include "c-strcase.h"
+
+#include <limits.h>
+
+#include "c-ctype.h"
+
+int
+c_strncasecmp (const char *s1, const char *s2, size_t n)
+{
+ register const unsigned char *p1 = (const unsigned char *) s1;
+ register const unsigned char *p2 = (const unsigned char *) s2;
+ unsigned char c1, c2;
+
+ if (p1 == p2 || n == 0)
+ return 0;
+
+ do
+ {
+ c1 = c_tolower (*p1);
+ c2 = c_tolower (*p2);
+
+ if (--n == 0 || c1 == '\0')
+ break;
+
+ ++p1;
+ ++p2;
+ }
+ while (c1 == c2);
+
+ if (UCHAR_MAX <= INT_MAX)
+ return c1 - c2;
+ else
+ /* On machines where 'char' and 'int' are types of the same size, the
+ difference of two 'unsigned char' values - including the sign bit -
+ doesn't fit in an 'int'. */
+ return (c1 > c2 ? 1 : c1 < c2 ? -1 : 0);
+}
diff --git a/lib/config.charset b/lib/config.charset
new file mode 100755
index 00000000..c1a7f5db
--- /dev/null
+++ b/lib/config.charset
@@ -0,0 +1,683 @@
+#! /bin/sh
+# Output a system dependent table of character encoding aliases.
+#
+# Copyright (C) 2000-2004, 2006-2009 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser 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.
+#
+# The table consists of lines of the form
+# ALIAS CANONICAL
+#
+# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)".
+# ALIAS is compared in a case sensitive way.
+#
+# CANONICAL is the GNU canonical name for this character encoding.
+# It must be an encoding supported by libiconv. Support by GNU libc is
+# also desirable. CANONICAL is case insensitive. Usually an upper case
+# MIME charset name is preferred.
+# The current list of GNU canonical charset names is as follows.
+#
+# name MIME? used by which systems
+# ASCII, ANSI_X3.4-1968 glibc solaris freebsd netbsd darwin
+# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin
+# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin
+# ISO-8859-3 Y glibc solaris
+# ISO-8859-4 Y osf solaris freebsd netbsd openbsd darwin
+# ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin
+# ISO-8859-6 Y glibc aix hpux solaris
+# ISO-8859-7 Y glibc aix hpux irix osf solaris netbsd openbsd darwin
+# ISO-8859-8 Y glibc aix hpux osf solaris
+# ISO-8859-9 Y glibc aix hpux irix osf solaris darwin
+# ISO-8859-13 glibc netbsd openbsd darwin
+# ISO-8859-14 glibc
+# ISO-8859-15 glibc aix osf solaris freebsd netbsd openbsd darwin
+# KOI8-R Y glibc solaris freebsd netbsd openbsd darwin
+# KOI8-U Y glibc freebsd netbsd openbsd darwin
+# KOI8-T glibc
+# CP437 dos
+# CP775 dos
+# CP850 aix osf dos
+# CP852 dos
+# CP855 dos
+# CP856 aix
+# CP857 dos
+# CP861 dos
+# CP862 dos
+# CP864 dos
+# CP865 dos
+# CP866 freebsd netbsd openbsd darwin dos
+# CP869 dos
+# CP874 woe32 dos
+# CP922 aix
+# CP932 aix woe32 dos
+# CP943 aix
+# CP949 osf darwin woe32 dos
+# CP950 woe32 dos
+# CP1046 aix
+# CP1124 aix
+# CP1125 dos
+# CP1129 aix
+# CP1131 darwin
+# CP1250 woe32
+# CP1251 glibc solaris netbsd openbsd darwin woe32
+# CP1252 aix woe32
+# CP1253 woe32
+# CP1254 woe32
+# CP1255 glibc woe32
+# CP1256 woe32
+# CP1257 woe32
+# GB2312 Y glibc aix hpux irix solaris freebsd netbsd darwin
+# EUC-JP Y glibc aix hpux irix osf solaris freebsd netbsd darwin
+# EUC-KR Y glibc aix hpux irix osf solaris freebsd netbsd darwin
+# EUC-TW glibc aix hpux irix osf solaris netbsd
+# BIG5 Y glibc aix hpux osf solaris freebsd netbsd darwin
+# BIG5-HKSCS glibc solaris darwin
+# GBK glibc aix osf solaris darwin woe32 dos
+# GB18030 glibc solaris netbsd darwin
+# SHIFT_JIS Y hpux osf solaris freebsd netbsd darwin
+# JOHAB glibc solaris woe32
+# TIS-620 glibc aix hpux osf solaris
+# VISCII Y glibc
+# TCVN5712-1 glibc
+# ARMSCII-8 glibc darwin
+# GEORGIAN-PS glibc
+# PT154 glibc
+# HP-ROMAN8 hpux
+# HP-ARABIC8 hpux
+# HP-GREEK8 hpux
+# HP-HEBREW8 hpux
+# HP-TURKISH8 hpux
+# HP-KANA8 hpux
+# DEC-KANJI osf
+# DEC-HANYU osf
+# UTF-8 Y glibc aix hpux osf solaris netbsd darwin
+#
+# Note: Names which are not marked as being a MIME name should not be used in
+# Internet protocols for information interchange (mail, news, etc.).
+#
+# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications
+# must understand both names and treat them as equivalent.
+#
+# The first argument passed to this file is the canonical host specification,
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+
+host="$1"
+os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'`
+echo "# This file contains a table of character encoding aliases,"
+echo "# suitable for operating system '${os}'."
+echo "# It was automatically generated from config.charset."
+# List of references, updated during installation:
+echo "# Packages using this file: "
+case "$os" in
+ linux-gnulibc1*)
+ # Linux libc5 doesn't have nl_langinfo(CODESET); therefore
+ # localcharset.c falls back to using the full locale name
+ # from the environment variables.
+ echo "C ASCII"
+ echo "POSIX ASCII"
+ for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \
+ en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \
+ en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \
+ es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \
+ et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \
+ fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \
+ it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \
+ sv_FI sv_SE; do
+ echo "$l ISO-8859-1"
+ echo "$l.iso-8859-1 ISO-8859-1"
+ echo "$l.iso-8859-15 ISO-8859-15"
+ echo "$l.iso-8859-15@euro ISO-8859-15"
+ echo "$l@euro ISO-8859-15"
+ echo "$l.cp-437 CP437"
+ echo "$l.cp-850 CP850"
+ echo "$l.cp-1252 CP1252"
+ echo "$l.cp-1252@euro CP1252"
+ #echo "$l.atari-st ATARI-ST" # not a commonly used encoding
+ echo "$l.utf-8 UTF-8"
+ echo "$l.utf-8@euro UTF-8"
+ done
+ for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \
+ sl_SI sr sr_CS sr_YU; do
+ echo "$l ISO-8859-2"
+ echo "$l.iso-8859-2 ISO-8859-2"
+ echo "$l.cp-852 CP852"
+ echo "$l.cp-1250 CP1250"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in mk mk_MK ru ru_RU; do
+ echo "$l ISO-8859-5"
+ echo "$l.iso-8859-5 ISO-8859-5"
+ echo "$l.koi8-r KOI8-R"
+ echo "$l.cp-866 CP866"
+ echo "$l.cp-1251 CP1251"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in ar ar_SA; do
+ echo "$l ISO-8859-6"
+ echo "$l.iso-8859-6 ISO-8859-6"
+ echo "$l.cp-864 CP864"
+ #echo "$l.cp-868 CP868" # not a commonly used encoding
+ echo "$l.cp-1256 CP1256"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in el el_GR gr gr_GR; do
+ echo "$l ISO-8859-7"
+ echo "$l.iso-8859-7 ISO-8859-7"
+ echo "$l.cp-869 CP869"
+ echo "$l.cp-1253 CP1253"
+ echo "$l.cp-1253@euro CP1253"
+ echo "$l.utf-8 UTF-8"
+ echo "$l.utf-8@euro UTF-8"
+ done
+ for l in he he_IL iw iw_IL; do
+ echo "$l ISO-8859-8"
+ echo "$l.iso-8859-8 ISO-8859-8"
+ echo "$l.cp-862 CP862"
+ echo "$l.cp-1255 CP1255"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in tr tr_TR; do
+ echo "$l ISO-8859-9"
+ echo "$l.iso-8859-9 ISO-8859-9"
+ echo "$l.cp-857 CP857"
+ echo "$l.cp-1254 CP1254"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in lt lt_LT lv lv_LV; do
+ #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name
+ echo "$l ISO-8859-13"
+ done
+ for l in ru_UA uk uk_UA; do
+ echo "$l KOI8-U"
+ done
+ for l in zh zh_CN; do
+ #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name
+ echo "$l GB2312"
+ done
+ for l in ja ja_JP ja_JP.EUC; do
+ echo "$l EUC-JP"
+ done
+ for l in ko ko_KR; do
+ echo "$l EUC-KR"
+ done
+ for l in th th_TH; do
+ echo "$l TIS-620"
+ done
+ for l in fa fa_IR; do
+ #echo "$l ISIRI-3342" # a broken encoding
+ echo "$l.utf-8 UTF-8"
+ done
+ ;;
+ linux* | *-gnu*)
+ # With glibc-2.1 or newer, we don't need any canonicalization,
+ # because glibc has iconv and both glibc and libiconv support all
+ # GNU canonical names directly. Therefore, the Makefile does not
+ # need to install the alias file at all.
+ # The following applies only to glibc-2.0.x and older libcs.
+ echo "ISO_646.IRV:1983 ASCII"
+ ;;
+ aix*)
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-6 ISO-8859-6"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-8 ISO-8859-8"
+ echo "ISO8859-9 ISO-8859-9"
+ echo "ISO8859-15 ISO-8859-15"
+ echo "IBM-850 CP850"
+ echo "IBM-856 CP856"
+ echo "IBM-921 ISO-8859-13"
+ echo "IBM-922 CP922"
+ echo "IBM-932 CP932"
+ echo "IBM-943 CP943"
+ echo "IBM-1046 CP1046"
+ echo "IBM-1124 CP1124"
+ echo "IBM-1129 CP1129"
+ echo "IBM-1252 CP1252"
+ echo "IBM-eucCN GB2312"
+ echo "IBM-eucJP EUC-JP"
+ echo "IBM-eucKR EUC-KR"
+ echo "IBM-eucTW EUC-TW"
+ echo "big5 BIG5"
+ echo "GBK GBK"
+ echo "TIS-620 TIS-620"
+ echo "UTF-8 UTF-8"
+ ;;
+ hpux*)
+ echo "iso88591 ISO-8859-1"
+ echo "iso88592 ISO-8859-2"
+ echo "iso88595 ISO-8859-5"
+ echo "iso88596 ISO-8859-6"
+ echo "iso88597 ISO-8859-7"
+ echo "iso88598 ISO-8859-8"
+ echo "iso88599 ISO-8859-9"
+ echo "iso885915 ISO-8859-15"
+ echo "roman8 HP-ROMAN8"
+ echo "arabic8 HP-ARABIC8"
+ echo "greek8 HP-GREEK8"
+ echo "hebrew8 HP-HEBREW8"
+ echo "turkish8 HP-TURKISH8"
+ echo "kana8 HP-KANA8"
+ echo "tis620 TIS-620"
+ echo "big5 BIG5"
+ echo "eucJP EUC-JP"
+ echo "eucKR EUC-KR"
+ echo "eucTW EUC-TW"
+ echo "hp15CN GB2312"
+ #echo "ccdc ?" # what is this?
+ echo "SJIS SHIFT_JIS"
+ echo "utf8 UTF-8"
+ ;;
+ irix*)
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-9 ISO-8859-9"
+ echo "eucCN GB2312"
+ echo "eucJP EUC-JP"
+ echo "eucKR EUC-KR"
+ echo "eucTW EUC-TW"
+ ;;
+ osf*)
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-4 ISO-8859-4"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-8 ISO-8859-8"
+ echo "ISO8859-9 ISO-8859-9"
+ echo "ISO8859-15 ISO-8859-15"
+ echo "cp850 CP850"
+ echo "big5 BIG5"
+ echo "dechanyu DEC-HANYU"
+ echo "dechanzi GB2312"
+ echo "deckanji DEC-KANJI"
+ echo "deckorean EUC-KR"
+ echo "eucJP EUC-JP"
+ echo "eucKR EUC-KR"
+ echo "eucTW EUC-TW"
+ echo "GBK GBK"
+ echo "KSC5601 CP949"
+ echo "sdeckanji EUC-JP"
+ echo "SJIS SHIFT_JIS"
+ echo "TACTIS TIS-620"
+ echo "UTF-8 UTF-8"
+ ;;
+ solaris*)
+ echo "646 ASCII"
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-3 ISO-8859-3"
+ echo "ISO8859-4 ISO-8859-4"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-6 ISO-8859-6"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-8 ISO-8859-8"
+ echo "ISO8859-9 ISO-8859-9"
+ echo "ISO8859-15 ISO-8859-15"
+ echo "koi8-r KOI8-R"
+ echo "ansi-1251 CP1251"
+ echo "BIG5 BIG5"
+ echo "Big5-HKSCS BIG5-HKSCS"
+ echo "gb2312 GB2312"
+ echo "GBK GBK"
+ echo "GB18030 GB18030"
+ echo "cns11643 EUC-TW"
+ echo "5601 EUC-KR"
+ echo "ko_KR.johap92 JOHAB"
+ echo "eucJP EUC-JP"
+ echo "PCK SHIFT_JIS"
+ echo "TIS620.2533 TIS-620"
+ #echo "sun_eu_greek ?" # what is this?
+ echo "UTF-8 UTF-8"
+ ;;
+ freebsd* | os2*)
+ # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore
+ # localcharset.c falls back to using the full locale name
+ # from the environment variables.
+ # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just
+ # reuse FreeBSD's locale data for OS/2.
+ echo "C ASCII"
+ echo "US-ASCII ASCII"
+ for l in la_LN lt_LN; do
+ echo "$l.ASCII ASCII"
+ done
+ for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
+ fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \
+ lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do
+ echo "$l.ISO_8859-1 ISO-8859-1"
+ echo "$l.DIS_8859-15 ISO-8859-15"
+ done
+ for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do
+ echo "$l.ISO_8859-2 ISO-8859-2"
+ done
+ for l in la_LN lt_LT; do
+ echo "$l.ISO_8859-4 ISO-8859-4"
+ done
+ for l in ru_RU ru_SU; do
+ echo "$l.KOI8-R KOI8-R"
+ echo "$l.ISO_8859-5 ISO-8859-5"
+ echo "$l.CP866 CP866"
+ done
+ echo "uk_UA.KOI8-U KOI8-U"
+ echo "zh_TW.BIG5 BIG5"
+ echo "zh_TW.Big5 BIG5"
+ echo "zh_CN.EUC GB2312"
+ echo "ja_JP.EUC EUC-JP"
+ echo "ja_JP.SJIS SHIFT_JIS"
+ echo "ja_JP.Shift_JIS SHIFT_JIS"
+ echo "ko_KR.EUC EUC-KR"
+ ;;
+ netbsd*)
+ echo "646 ASCII"
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-4 ISO-8859-4"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-13 ISO-8859-13"
+ echo "ISO8859-15 ISO-8859-15"
+ echo "eucCN GB2312"
+ echo "eucJP EUC-JP"
+ echo "eucKR EUC-KR"
+ echo "eucTW EUC-TW"
+ echo "BIG5 BIG5"
+ echo "SJIS SHIFT_JIS"
+ ;;
+ openbsd*)
+ echo "646 ASCII"
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-4 ISO-8859-4"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-13 ISO-8859-13"
+ echo "ISO8859-15 ISO-8859-15"
+ ;;
+ darwin[56]*)
+ # Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore
+ # localcharset.c falls back to using the full locale name
+ # from the environment variables.
+ echo "C ASCII"
+ for l in en_AU en_CA en_GB en_US la_LN; do
+ echo "$l.US-ASCII ASCII"
+ done
+ for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
+ fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \
+ nl_NL no_NO pt_PT sv_SE; do
+ echo "$l ISO-8859-1"
+ echo "$l.ISO8859-1 ISO-8859-1"
+ echo "$l.ISO8859-15 ISO-8859-15"
+ done
+ for l in la_LN; do
+ echo "$l.ISO8859-1 ISO-8859-1"
+ echo "$l.ISO8859-15 ISO-8859-15"
+ done
+ for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do
+ echo "$l.ISO8859-2 ISO-8859-2"
+ done
+ for l in la_LN lt_LT; do
+ echo "$l.ISO8859-4 ISO-8859-4"
+ done
+ for l in ru_RU; do
+ echo "$l.KOI8-R KOI8-R"
+ echo "$l.ISO8859-5 ISO-8859-5"
+ echo "$l.CP866 CP866"
+ done
+ for l in bg_BG; do
+ echo "$l.CP1251 CP1251"
+ done
+ echo "uk_UA.KOI8-U KOI8-U"
+ echo "zh_TW.BIG5 BIG5"
+ echo "zh_TW.Big5 BIG5"
+ echo "zh_CN.EUC GB2312"
+ echo "ja_JP.EUC EUC-JP"
+ echo "ja_JP.SJIS SHIFT_JIS"
+ echo "ko_KR.EUC EUC-KR"
+ ;;
+ darwin*)
+ # Darwin 7.5 has nl_langinfo(CODESET), but sometimes its value is
+ # useless:
+ # - It returns the empty string when LANG is set to a locale of the
+ # form ll_CC, although ll_CC/LC_CTYPE is a symlink to an UTF-8
+ # LC_CTYPE file.
+ # - The environment variables LANG, LC_CTYPE, LC_ALL are not set by
+ # the system; nl_langinfo(CODESET) returns "US-ASCII" in this case.
+ # - The documentation says:
+ # "... all code that calls BSD system routines should ensure
+ # that the const *char parameters of these routines are in UTF-8
+ # encoding. All BSD system functions expect their string
+ # parameters to be in UTF-8 encoding and nothing else."
+ # It also says
+ # "An additional caveat is that string parameters for files,
+ # paths, and other file-system entities must be in canonical
+ # UTF-8. In a canonical UTF-8 Unicode string, all decomposable
+ # characters are decomposed ..."
+ # but this is not true: You can pass non-decomposed UTF-8 strings
+ # to file system functions, and it is the OS which will convert
+ # them to decomposed UTF-8 before accessing the file system.
+ # - The Apple Terminal application displays UTF-8 by default.
+ # - However, other applications are free to use different encodings:
+ # - xterm uses ISO-8859-1 by default.
+ # - TextEdit uses MacRoman by default.
+ # We prefer UTF-8 over decomposed UTF-8-MAC because one should
+ # minimize the use of decomposed Unicode. Unfortunately, through the
+ # Darwin file system, decomposed UTF-8 strings are leaked into user
+ # space nevertheless.
+ # Then there are also the locales with encodings other than US-ASCII
+ # and UTF-8. These locales can be occasionally useful to users (e.g.
+ # when grepping through ISO-8859-1 encoded text files), when all their
+ # file names are in US-ASCII.
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-4 ISO-8859-4"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-9 ISO-8859-9"
+ echo "ISO8859-13 ISO-8859-13"
+ echo "ISO8859-15 ISO-8859-15"
+ echo "KOI8-R KOI8-R"
+ echo "KOI8-U KOI8-U"
+ echo "CP866 CP866"
+ echo "CP949 CP949"
+ echo "CP1131 CP1131"
+ echo "CP1251 CP1251"
+ echo "eucCN GB2312"
+ echo "GB2312 GB2312"
+ echo "eucJP EUC-JP"
+ echo "eucKR EUC-KR"
+ echo "Big5 BIG5"
+ echo "Big5HKSCS BIG5-HKSCS"
+ echo "GBK GBK"
+ echo "GB18030 GB18030"
+ echo "SJIS SHIFT_JIS"
+ echo "ARMSCII-8 ARMSCII-8"
+ echo "PT154 PT154"
+ #echo "ISCII-DEV ?"
+ echo "* UTF-8"
+ ;;
+ beos* | haiku*)
+ # BeOS and Haiku have a single locale, and it has UTF-8 encoding.
+ echo "* UTF-8"
+ ;;
+ msdosdjgpp*)
+ # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore
+ # localcharset.c falls back to using the full locale name
+ # from the environment variables.
+ echo "#"
+ echo "# The encodings given here may not all be correct."
+ echo "# If you find that the encoding given for your language and"
+ echo "# country is not the one your DOS machine actually uses, just"
+ echo "# correct it in this file, and send a mail to"
+ echo "# Juan Manuel Guerrero <juan.guerrero@gmx.de>"
+ echo "# and Bruno Haible <bruno@clisp.org>."
+ echo "#"
+ echo "C ASCII"
+ # ISO-8859-1 languages
+ echo "ca CP850"
+ echo "ca_ES CP850"
+ echo "da CP865" # not CP850 ??
+ echo "da_DK CP865" # not CP850 ??
+ echo "de CP850"
+ echo "de_AT CP850"
+ echo "de_CH CP850"
+ echo "de_DE CP850"
+ echo "en CP850"
+ echo "en_AU CP850" # not CP437 ??
+ echo "en_CA CP850"
+ echo "en_GB CP850"
+ echo "en_NZ CP437"
+ echo "en_US CP437"
+ echo "en_ZA CP850" # not CP437 ??
+ echo "es CP850"
+ echo "es_AR CP850"
+ echo "es_BO CP850"
+ echo "es_CL CP850"
+ echo "es_CO CP850"
+ echo "es_CR CP850"
+ echo "es_CU CP850"
+ echo "es_DO CP850"
+ echo "es_EC CP850"
+ echo "es_ES CP850"
+ echo "es_GT CP850"
+ echo "es_HN CP850"
+ echo "es_MX CP850"
+ echo "es_NI CP850"
+ echo "es_PA CP850"
+ echo "es_PY CP850"
+ echo "es_PE CP850"
+ echo "es_SV CP850"
+ echo "es_UY CP850"
+ echo "es_VE CP850"
+ echo "et CP850"
+ echo "et_EE CP850"
+ echo "eu CP850"
+ echo "eu_ES CP850"
+ echo "fi CP850"
+ echo "fi_FI CP850"
+ echo "fr CP850"
+ echo "fr_BE CP850"
+ echo "fr_CA CP850"
+ echo "fr_CH CP850"
+ echo "fr_FR CP850"
+ echo "ga CP850"
+ echo "ga_IE CP850"
+ echo "gd CP850"
+ echo "gd_GB CP850"
+ echo "gl CP850"
+ echo "gl_ES CP850"
+ echo "id CP850" # not CP437 ??
+ echo "id_ID CP850" # not CP437 ??
+ echo "is CP861" # not CP850 ??
+ echo "is_IS CP861" # not CP850 ??
+ echo "it CP850"
+ echo "it_CH CP850"
+ echo "it_IT CP850"
+ echo "lt CP775"
+ echo "lt_LT CP775"
+ echo "lv CP775"
+ echo "lv_LV CP775"
+ echo "nb CP865" # not CP850 ??
+ echo "nb_NO CP865" # not CP850 ??
+ echo "nl CP850"
+ echo "nl_BE CP850"
+ echo "nl_NL CP850"
+ echo "nn CP865" # not CP850 ??
+ echo "nn_NO CP865" # not CP850 ??
+ echo "no CP865" # not CP850 ??
+ echo "no_NO CP865" # not CP850 ??
+ echo "pt CP850"
+ echo "pt_BR CP850"
+ echo "pt_PT CP850"
+ echo "sv CP850"
+ echo "sv_SE CP850"
+ # ISO-8859-2 languages
+ echo "cs CP852"
+ echo "cs_CZ CP852"
+ echo "hr CP852"
+ echo "hr_HR CP852"
+ echo "hu CP852"
+ echo "hu_HU CP852"
+ echo "pl CP852"
+ echo "pl_PL CP852"
+ echo "ro CP852"
+ echo "ro_RO CP852"
+ echo "sk CP852"
+ echo "sk_SK CP852"
+ echo "sl CP852"
+ echo "sl_SI CP852"
+ echo "sq CP852"
+ echo "sq_AL CP852"
+ echo "sr CP852" # CP852 or CP866 or CP855 ??
+ echo "sr_CS CP852" # CP852 or CP866 or CP855 ??
+ echo "sr_YU CP852" # CP852 or CP866 or CP855 ??
+ # ISO-8859-3 languages
+ echo "mt CP850"
+ echo "mt_MT CP850"
+ # ISO-8859-5 languages
+ echo "be CP866"
+ echo "be_BE CP866"
+ echo "bg CP866" # not CP855 ??
+ echo "bg_BG CP866" # not CP855 ??
+ echo "mk CP866" # not CP855 ??
+ echo "mk_MK CP866" # not CP855 ??
+ echo "ru CP866"
+ echo "ru_RU CP866"
+ echo "uk CP1125"
+ echo "uk_UA CP1125"
+ # ISO-8859-6 languages
+ echo "ar CP864"
+ echo "ar_AE CP864"
+ echo "ar_DZ CP864"
+ echo "ar_EG CP864"
+ echo "ar_IQ CP864"
+ echo "ar_IR CP864"
+ echo "ar_JO CP864"
+ echo "ar_KW CP864"
+ echo "ar_MA CP864"
+ echo "ar_OM CP864"
+ echo "ar_QA CP864"
+ echo "ar_SA CP864"
+ echo "ar_SY CP864"
+ # ISO-8859-7 languages
+ echo "el CP869"
+ echo "el_GR CP869"
+ # ISO-8859-8 languages
+ echo "he CP862"
+ echo "he_IL CP862"
+ # ISO-8859-9 languages
+ echo "tr CP857"
+ echo "tr_TR CP857"
+ # Japanese
+ echo "ja CP932"
+ echo "ja_JP CP932"
+ # Chinese
+ echo "zh_CN GBK"
+ echo "zh_TW CP950" # not CP938 ??
+ # Korean
+ echo "kr CP949" # not CP934 ??
+ echo "kr_KR CP949" # not CP934 ??
+ # Thai
+ echo "th CP874"
+ echo "th_TH CP874"
+ # Other
+ echo "eo CP850"
+ echo "eo_EO CP850"
+ ;;
+esac
diff --git a/lib/declared.sh b/lib/declared.sh
new file mode 100755
index 00000000..fbd5996c
--- /dev/null
+++ b/lib/declared.sh
@@ -0,0 +1,135 @@
+#! /bin/sh
+#
+# Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+#
+
+# This script determines the declared global symbols in a C header file.
+# Assumptions:
+# - The header files are in C, with only C89 comments.
+# - No use of macros with parameters.
+# - All global declarations are marked with 'extern'.
+# - All declarations end in ';' on the same line.
+# - Not more than one symbol is declared in a declaration.
+
+# func_usage
+# outputs to stdout the --help usage message.
+func_usage ()
+{
+ echo "\
+Usage: declared.sh [OPTION]... < SOURCE.h
+
+Extracts the declared global symbols of a C header file.
+
+Options:
+ --help print this help and exit
+ --version print version information and exit
+
+Report bugs to <bruno@clisp.org>."
+}
+
+# func_version
+# outputs to stdout the --version message.
+func_version ()
+{
+ echo "declared.sh (GNU libunistring)"
+ echo "Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law."
+ echo "Written by" "Bruno Haible"
+}
+
+# func_fatal_error message
+# outputs to stderr a fatal error message, and terminates the program.
+func_fatal_error ()
+{
+ echo "declared.sh: *** $1" 1>&2
+ echo "declared.sh: *** Stop." 1>&2
+ exit 1
+}
+
+# Command-line option processing.
+while test $# -gt 0; do
+ case "$1" in
+ --help | --hel | --he | --h )
+ func_usage
+ exit 0 ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v )
+ func_version
+ exit 0 ;;
+ -- ) # Stop option prcessing
+ shift; break ;;
+ -* )
+ func_fatal_error "unrecognized option: $option"
+ ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# -gt 0; then
+ func_fatal_error "too many arguments"
+fi
+
+# A sed expression that removes ANSI C and ISO C99 comments.
+sed_remove_comments="
+/[/][/*]/{
+ ta
+ :a
+ s,^\\(\\([^\"'/]\\|\"\\([^\\\"]\\|[\\].\\)*\"\\|'\\([^\\']\\|[\\].\\)*'\\|[/][^\"'/*]\\|[/]\"\\([^\\\"]\\|[\\].\\)*\"\\|[/]'\\([^\\']\\|[\\].\\)*'\\)*\\)//.*,\\1,
+ te
+ s,^\\(\\([^\"'/]\\|\"\\([^\\\"]\\|[\\].\\)*\"\\|'\\([^\\']\\|[\\].\\)*'\\|[/][^\"'/*]\\|[/]\"\\([^\\\"]\\|[\\].\\)*\"\\|[/]'\\([^\\']\\|[\\].\\)*'\\)*\\)/[*]\\([^*]\\|[*][^/*]\\)*[*][*]*/,\\1 ,
+ ta
+ /^\\([^\"'/]\\|\"\\([^\\\"]\\|[\\].\\)*\"\\|'\\([^\\']\\|[\\].\\)*'\\|[/][^\"'/*]\\|[/]\"\\([^\\\"]\\|[\\].\\)*\"\\|[/]'\\([^\\']\\|[\\].\\)*'\\)*[/][*]/{
+ s,^\\(\\([^\"'/]\\|\"\\([^\\\"]\\|[\\].\\)*\"\\|'\\([^\\']\\|[\\].\\)*'\\|[/][^\"'/*]\\|[/]\"\\([^\\\"]\\|[\\].\\)*\"\\|[/]'\\([^\\']\\|[\\].\\)*'\\)*\\)/[*].*,\\1 ,
+ tu
+ :u
+ n
+ s,^\\([^*]\\|[*][^/*]\\)*[*][*]*/,,
+ tv
+ s,^.*\$,,
+ bu
+ :v
+ }
+ :e
+}"
+
+# Check that 'sed' supports the kind of regular expressions used in
+# sed_remove_comments. The use of \| meaning alternation of basic regular
+# expressions is a GNU extension.
+sed_test='s,^\(\(a\|X\)*\)//.*,\1,'
+sed_result=`echo 'aaa//bcd' | sed -e "$sed_test"`
+test "$sed_result" = 'aaa' \
+ || func_fatal_error "The 'sed' program is not GNU sed. Try installing GNU sed."
+
+# A sed expression that joins 'extern' declarations that are broken over
+# several lines.
+sed_join_multiline_externs='
+/^extern [^;]*$/{
+ :a
+ N
+ s/\n/ /g
+ /^extern [^;]*$/{
+ ba
+ }
+}'
+
+# A sed expression that extracts the identifier of each 'extern' declaration.
+sed_extract_extern_declared='s/^extern [^()]* \([A-Za-z_][A-Za-z0-9_]*\) *[;(].*$/\1/p'
+
+sed -e "$sed_remove_comments" \
+ | sed -e "$sed_join_multiline_externs" \
+ | sed -n -e "$sed_extract_extern_declared"
diff --git a/lib/errno.in.h b/lib/errno.in.h
new file mode 100644
index 00000000..a9b81d5d
--- /dev/null
+++ b/lib/errno.in.h
@@ -0,0 +1,160 @@
+/* A POSIX-like <errno.h>.
+
+ Copyright (C) 2008-2009 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+#ifndef _GL_ERRNO_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+/* The include_next requires a split double-inclusion guard. */
+#@INCLUDE_NEXT@ @NEXT_ERRNO_H@
+
+#ifndef _GL_ERRNO_H
+#define _GL_ERRNO_H
+
+
+/* On native Windows platforms, many macros are not defined. */
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+
+/* POSIX says that EAGAIN and EWOULDBLOCK may have the same value. */
+# define EWOULDBLOCK EAGAIN
+
+/* Values >= 100 seem safe to use. */
+# define ETXTBSY 100
+# define GNULIB_defined_ETXTBSY 1
+
+/* These are intentionally the same values as the WSA* error numbers, defined
+ in <winsock2.h>. */
+# define EINPROGRESS 10036
+# define EALREADY 10037
+# define ENOTSOCK 10038
+# define EDESTADDRREQ 10039
+# define EMSGSIZE 10040
+# define EPROTOTYPE 10041
+# define ENOPROTOOPT 10042
+# define EPROTONOSUPPORT 10043
+# define ESOCKTNOSUPPORT 10044 /* not required by POSIX */
+# define EOPNOTSUPP 10045
+# define EPFNOSUPPORT 10046 /* not required by POSIX */
+# define EAFNOSUPPORT 10047
+# define EADDRINUSE 10048
+# define EADDRNOTAVAIL 10049
+# define ENETDOWN 10050
+# define ENETUNREACH 10051
+# define ENETRESET 10052
+# define ECONNABORTED 10053
+# define ECONNRESET 10054
+# define ENOBUFS 10055
+# define EISCONN 10056
+# define ENOTCONN 10057
+# define ESHUTDOWN 10058 /* not required by POSIX */
+# define ETOOMANYREFS 10059 /* not required by POSIX */
+# define ETIMEDOUT 10060
+# define ECONNREFUSED 10061
+# define ELOOP 10062
+# define EHOSTDOWN 10064 /* not required by POSIX */
+# define EHOSTUNREACH 10065
+# define EPROCLIM 10067 /* not required by POSIX */
+# define EUSERS 10068 /* not required by POSIX */
+# define EDQUOT 10069
+# define ESTALE 10070
+# define EREMOTE 10071 /* not required by POSIX */
+# define GNULIB_defined_ESOCK 1
+
+# endif
+
+
+/* On OSF/1 5.1, when _XOPEN_SOURCE_EXTENDED is not defined, the macros
+ EMULTIHOP, ENOLINK, EOVERFLOW are not defined. */
+# if @EMULTIHOP_HIDDEN@
+# define EMULTIHOP @EMULTIHOP_VALUE@
+# define GNULIB_defined_EMULTIHOP 1
+# endif
+# if @ENOLINK_HIDDEN@
+# define ENOLINK @ENOLINK_VALUE@
+# define GNULIB_defined_ENOLINK 1
+# endif
+# if @EOVERFLOW_HIDDEN@
+# define EOVERFLOW @EOVERFLOW_VALUE@
+# define GNULIB_defined_EOVERFLOW 1
+# endif
+
+
+/* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK,
+ EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined.
+ Define them here. Values >= 2000 seem safe to use: Solaris ESTALE = 151,
+ HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133.
+
+ Note: When one of these systems defines some of these macros some day,
+ binaries will have to be recompiled so that they recognizes the new
+ errno values from the system. */
+
+# ifndef ENOMSG
+# define ENOMSG 2000
+# define GNULIB_defined_ENOMSG 1
+# endif
+
+# ifndef EIDRM
+# define EIDRM 2001
+# define GNULIB_defined_EIDRM 1
+# endif
+
+# ifndef ENOLINK
+# define ENOLINK 2002
+# define GNULIB_defined_ENOLINK 1
+# endif
+
+# ifndef EPROTO
+# define EPROTO 2003
+# define GNULIB_defined_EPROTO 1
+# endif
+
+# ifndef EMULTIHOP
+# define EMULTIHOP 2004
+# define GNULIB_defined_EMULTIHOP 1
+# endif
+
+# ifndef EBADMSG
+# define EBADMSG 2005
+# define GNULIB_defined_EBADMSG 1
+# endif
+
+# ifndef EOVERFLOW
+# define EOVERFLOW 2006
+# define GNULIB_defined_EOVERFLOW 1
+# endif
+
+# ifndef ENOTSUP
+# define ENOTSUP 2007
+# define GNULIB_defined_ENOTSUP 1
+# endif
+
+# ifndef ESTALE
+# define ESTALE 2009
+# define GNULIB_defined_ESTALE 1
+# endif
+
+# ifndef ECANCELED
+# define ECANCELED 2008
+# define GNULIB_defined_ECANCELED 1
+# endif
+
+
+#endif /* _GL_ERRNO_H */
+#endif /* _GL_ERRNO_H */
diff --git a/lib/exported.sh.in b/lib/exported.sh.in
new file mode 100644
index 00000000..7bd3b1ed
--- /dev/null
+++ b/lib/exported.sh.in
@@ -0,0 +1,24 @@
+#! /bin/sh
+#
+# Copyright (C) 2006, 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+#
+
+# This is a script that determines the exported symbols of an object file.
+# This is a separate script because $(GLOBAL_SYMBOL_PIPE) cannot be used in a
+# Makefile, since it may contain dollar signs.
+
+nm_cmd="@NM@ \"\$1\" | @GLOBAL_SYMBOL_PIPE@"
+eval $nm_cmd
diff --git a/lib/float+.h b/lib/float+.h
new file mode 100644
index 00000000..2288e3d3
--- /dev/null
+++ b/lib/float+.h
@@ -0,0 +1,148 @@
+/* Supplemental information about the floating-point formats.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+#ifndef _FLOATPLUS_H
+#define _FLOATPLUS_H
+
+#include <float.h>
+#include <limits.h>
+
+/* Number of bits in the mantissa of a floating-point number, including the
+ "hidden bit". */
+#if FLT_RADIX == 2
+# define FLT_MANT_BIT FLT_MANT_DIG
+# define DBL_MANT_BIT DBL_MANT_DIG
+# define LDBL_MANT_BIT LDBL_MANT_DIG
+#elif FLT_RADIX == 4
+# define FLT_MANT_BIT (FLT_MANT_DIG * 2)
+# define DBL_MANT_BIT (DBL_MANT_DIG * 2)
+# define LDBL_MANT_BIT (LDBL_MANT_DIG * 2)
+#elif FLT_RADIX == 16
+# define FLT_MANT_BIT (FLT_MANT_DIG * 4)
+# define DBL_MANT_BIT (DBL_MANT_DIG * 4)
+# define LDBL_MANT_BIT (LDBL_MANT_DIG * 4)
+#endif
+
+/* Bit mask that can be used to mask the exponent, as an unsigned number. */
+#define FLT_EXP_MASK ((FLT_MAX_EXP - FLT_MIN_EXP) | 7)
+#define DBL_EXP_MASK ((DBL_MAX_EXP - DBL_MIN_EXP) | 7)
+#define LDBL_EXP_MASK ((LDBL_MAX_EXP - LDBL_MIN_EXP) | 7)
+
+/* Number of bits used for the exponent of a floating-point number, including
+ the exponent's sign. */
+#define FLT_EXP_BIT \
+ (FLT_EXP_MASK < 0x100 ? 8 : \
+ FLT_EXP_MASK < 0x200 ? 9 : \
+ FLT_EXP_MASK < 0x400 ? 10 : \
+ FLT_EXP_MASK < 0x800 ? 11 : \
+ FLT_EXP_MASK < 0x1000 ? 12 : \
+ FLT_EXP_MASK < 0x2000 ? 13 : \
+ FLT_EXP_MASK < 0x4000 ? 14 : \
+ FLT_EXP_MASK < 0x8000 ? 15 : \
+ FLT_EXP_MASK < 0x10000 ? 16 : \
+ FLT_EXP_MASK < 0x20000 ? 17 : \
+ FLT_EXP_MASK < 0x40000 ? 18 : \
+ FLT_EXP_MASK < 0x80000 ? 19 : \
+ FLT_EXP_MASK < 0x100000 ? 20 : \
+ FLT_EXP_MASK < 0x200000 ? 21 : \
+ FLT_EXP_MASK < 0x400000 ? 22 : \
+ FLT_EXP_MASK < 0x800000 ? 23 : \
+ FLT_EXP_MASK < 0x1000000 ? 24 : \
+ FLT_EXP_MASK < 0x2000000 ? 25 : \
+ FLT_EXP_MASK < 0x4000000 ? 26 : \
+ FLT_EXP_MASK < 0x8000000 ? 27 : \
+ FLT_EXP_MASK < 0x10000000 ? 28 : \
+ FLT_EXP_MASK < 0x20000000 ? 29 : \
+ FLT_EXP_MASK < 0x40000000 ? 30 : \
+ FLT_EXP_MASK <= 0x7fffffff ? 31 : \
+ 32)
+#define DBL_EXP_BIT \
+ (DBL_EXP_MASK < 0x100 ? 8 : \
+ DBL_EXP_MASK < 0x200 ? 9 : \
+ DBL_EXP_MASK < 0x400 ? 10 : \
+ DBL_EXP_MASK < 0x800 ? 11 : \
+ DBL_EXP_MASK < 0x1000 ? 12 : \
+ DBL_EXP_MASK < 0x2000 ? 13 : \
+ DBL_EXP_MASK < 0x4000 ? 14 : \
+ DBL_EXP_MASK < 0x8000 ? 15 : \
+ DBL_EXP_MASK < 0x10000 ? 16 : \
+ DBL_EXP_MASK < 0x20000 ? 17 : \
+ DBL_EXP_MASK < 0x40000 ? 18 : \
+ DBL_EXP_MASK < 0x80000 ? 19 : \
+ DBL_EXP_MASK < 0x100000 ? 20 : \
+ DBL_EXP_MASK < 0x200000 ? 21 : \
+ DBL_EXP_MASK < 0x400000 ? 22 : \
+ DBL_EXP_MASK < 0x800000 ? 23 : \
+ DBL_EXP_MASK < 0x1000000 ? 24 : \
+ DBL_EXP_MASK < 0x2000000 ? 25 : \
+ DBL_EXP_MASK < 0x4000000 ? 26 : \
+ DBL_EXP_MASK < 0x8000000 ? 27 : \
+ DBL_EXP_MASK < 0x10000000 ? 28 : \
+ DBL_EXP_MASK < 0x20000000 ? 29 : \
+ DBL_EXP_MASK < 0x40000000 ? 30 : \
+ DBL_EXP_MASK <= 0x7fffffff ? 31 : \
+ 32)
+#define LDBL_EXP_BIT \
+ (LDBL_EXP_MASK < 0x100 ? 8 : \
+ LDBL_EXP_MASK < 0x200 ? 9 : \
+ LDBL_EXP_MASK < 0x400 ? 10 : \
+ LDBL_EXP_MASK < 0x800 ? 11 : \
+ LDBL_EXP_MASK < 0x1000 ? 12 : \
+ LDBL_EXP_MASK < 0x2000 ? 13 : \
+ LDBL_EXP_MASK < 0x4000 ? 14 : \
+ LDBL_EXP_MASK < 0x8000 ? 15 : \
+ LDBL_EXP_MASK < 0x10000 ? 16 : \
+ LDBL_EXP_MASK < 0x20000 ? 17 : \
+ LDBL_EXP_MASK < 0x40000 ? 18 : \
+ LDBL_EXP_MASK < 0x80000 ? 19 : \
+ LDBL_EXP_MASK < 0x100000 ? 20 : \
+ LDBL_EXP_MASK < 0x200000 ? 21 : \
+ LDBL_EXP_MASK < 0x400000 ? 22 : \
+ LDBL_EXP_MASK < 0x800000 ? 23 : \
+ LDBL_EXP_MASK < 0x1000000 ? 24 : \
+ LDBL_EXP_MASK < 0x2000000 ? 25 : \
+ LDBL_EXP_MASK < 0x4000000 ? 26 : \
+ LDBL_EXP_MASK < 0x8000000 ? 27 : \
+ LDBL_EXP_MASK < 0x10000000 ? 28 : \
+ LDBL_EXP_MASK < 0x20000000 ? 29 : \
+ LDBL_EXP_MASK < 0x40000000 ? 30 : \
+ LDBL_EXP_MASK <= 0x7fffffff ? 31 : \
+ 32)
+
+/* Number of bits used for a floating-point number: the mantissa (not
+ counting the "hidden bit", since it may or may not be explicit), the
+ exponent, and the sign. */
+#define FLT_TOTAL_BIT ((FLT_MANT_BIT - 1) + FLT_EXP_BIT + 1)
+#define DBL_TOTAL_BIT ((DBL_MANT_BIT - 1) + DBL_EXP_BIT + 1)
+#define LDBL_TOTAL_BIT ((LDBL_MANT_BIT - 1) + LDBL_EXP_BIT + 1)
+
+/* Number of bytes used for a floating-point number.
+ This can be smaller than the 'sizeof'. For example, on i386 systems,
+ 'long double' most often have LDBL_MANT_BIT = 64, LDBL_EXP_BIT = 16, hence
+ LDBL_TOTAL_BIT = 80 bits, i.e. 10 bytes of consecutive memory, but
+ sizeof (long double) = 12 or = 16. */
+#define SIZEOF_FLT ((FLT_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT)
+#define SIZEOF_DBL ((DBL_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT)
+#define SIZEOF_LDBL ((LDBL_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT)
+
+/* Verify that SIZEOF_FLT <= sizeof (float) etc. */
+typedef int verify_sizeof_flt[2 * (SIZEOF_FLT <= sizeof (float)) - 1];
+typedef int verify_sizeof_dbl[2 * (SIZEOF_DBL <= sizeof (double)) - 1];
+typedef int verify_sizeof_ldbl[2 * (SIZEOF_LDBL <= sizeof (long double)) - 1];
+
+#endif /* _FLOATPLUS_H */
diff --git a/lib/float.in.h b/lib/float.in.h
new file mode 100644
index 00000000..63d55f87
--- /dev/null
+++ b/lib/float.in.h
@@ -0,0 +1,62 @@
+/* A correct <float.h>.
+
+ Copyright (C) 2007-2008 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _GL_FLOAT_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+/* The include_next requires a split double-inclusion guard. */
+#@INCLUDE_NEXT@ @NEXT_FLOAT_H@
+
+#ifndef _GL_FLOAT_H
+#define _GL_FLOAT_H
+
+/* 'long double' properties. */
+#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__)
+/* Number of mantissa units, in base FLT_RADIX. */
+# undef LDBL_MANT_DIG
+# define LDBL_MANT_DIG 64
+/* Number of decimal digits that is sufficient for representing a number. */
+# undef LDBL_DIG
+# define LDBL_DIG 18
+/* x-1 where x is the smallest representable number > 1. */
+# undef LDBL_EPSILON
+# define LDBL_EPSILON 1.0842021724855044340E-19L
+/* Minimum e such that FLT_RADIX^(e-1) is a normalized number. */
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP (-16381)
+/* Maximum e such that FLT_RADIX^(e-1) is a representable finite number. */
+# undef LDBL_MAX_EXP
+# define LDBL_MAX_EXP 16384
+/* Minimum positive normalized number. */
+# undef LDBL_MIN
+# define LDBL_MIN 3.3621031431120935063E-4932L
+/* Maximum representable finite number. */
+# undef LDBL_MAX
+# define LDBL_MAX 1.1897314953572317650E+4932L
+/* Minimum e such that 10^e is in the range of normalized numbers. */
+# undef LDBL_MIN_10_EXP
+# define LDBL_MIN_10_EXP (-4931)
+/* Maximum e such that 10^e is in the range of representable finite numbers. */
+# undef LDBL_MAX_10_EXP
+# define LDBL_MAX_10_EXP 4932
+#endif
+
+#endif /* _GL_FLOAT_H */
+#endif /* _GL_FLOAT_H */
diff --git a/lib/fpucw.h b/lib/fpucw.h
new file mode 100644
index 00000000..4bd00811
--- /dev/null
+++ b/lib/fpucw.h
@@ -0,0 +1,107 @@
+/* Manipulating the FPU control word.
+ Copyright (C) 2007-2008 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _FPUCW_H
+#define _FPUCW_H
+
+/* The i386 floating point hardware (the 387 compatible FPU, not the modern
+ SSE/SSE2 hardware) has a controllable rounding precision. It is specified
+ through the 'PC' bits in the FPU control word ('fctrl' register). (See
+ the GNU libc i386 <fpu_control.h> header for details.)
+
+ On some platforms, such as Linux or Solaris, the default precision setting
+ is set to "extended precision". This means that 'long double' instructions
+ operate correctly, but 'double' computations often produce slightly
+ different results as on strictly IEEE 754 conforming systems.
+
+ On some platforms, such as NetBSD, the default precision is set to
+ "double precision". This means that 'long double' instructions will operate
+ only as 'double', i.e. lead wrong results.
+
+ The FPU control word is under control of the application, i.e. it is
+ not required to be set either way by the ABI. (In fact, the i386 ABI
+ http://refspecs.freestandards.org/elf/abi386-4.pdf page 3-12 = page 38
+ is not clear about it. But in any case, gcc treats the control word
+ like a "preserved" register: it emits code that assumes that the control
+ word is preserved across calls, and it restores the control word at the
+ end of functions that modify it.)
+
+ See Vincent Lefèvre's page http://www.vinc17.org/research/extended.en.html
+ for a good explanation.
+ See http://www.uwsg.iu.edu/hypermail/linux/kernel/0103.0/0453.html for
+ some argumentation which setting should be the default. */
+
+/* This header file provides the following facilities:
+ fpucw_t integral type holding the value of 'fctrl'
+ FPU_PC_MASK bit mask denoting the precision control
+ FPU_PC_DOUBLE precision control for 53 bits mantissa
+ FPU_PC_EXTENDED precision control for 64 bits mantissa
+ GET_FPUCW () yields the current FPU control word
+ SET_FPUCW (word) sets the FPU control word
+ DECL_LONG_DOUBLE_ROUNDING variable declaration for
+ BEGIN/END_LONG_DOUBLE_ROUNDING
+ BEGIN_LONG_DOUBLE_ROUNDING () starts a sequence of instructions with
+ 'long double' safe operation precision
+ END_LONG_DOUBLE_ROUNDING () ends a sequence of instructions with
+ 'long double' safe operation precision
+ */
+
+/* Inline assembler like this works only with GNU C. */
+#if (defined __i386__ || defined __x86_64__) && defined __GNUC__
+
+typedef unsigned short fpucw_t; /* glibc calls this fpu_control_t */
+
+# define FPU_PC_MASK 0x0300
+# define FPU_PC_DOUBLE 0x200 /* glibc calls this _FPU_DOUBLE */
+# define FPU_PC_EXTENDED 0x300 /* glibc calls this _FPU_EXTENDED */
+
+# define GET_FPUCW() \
+ ({ fpucw_t _cw; \
+ __asm__ __volatile__ ("fnstcw %0" : "=m" (*&_cw)); \
+ _cw; \
+ })
+# define SET_FPUCW(word) \
+ (void)({ fpucw_t _ncw = (word); \
+ __asm__ __volatile__ ("fldcw %0" : : "m" (*&_ncw)); \
+ })
+
+# define DECL_LONG_DOUBLE_ROUNDING \
+ fpucw_t oldcw;
+# define BEGIN_LONG_DOUBLE_ROUNDING() \
+ (void)(oldcw = GET_FPUCW (), \
+ SET_FPUCW ((oldcw & ~FPU_PC_MASK) | FPU_PC_EXTENDED))
+# define END_LONG_DOUBLE_ROUNDING() \
+ SET_FPUCW (oldcw)
+
+#else
+
+typedef unsigned int fpucw_t;
+
+# define FPU_PC_MASK 0
+# define FPU_PC_DOUBLE 0
+# define FPU_PC_EXTENDED 0
+
+# define GET_FPUCW() 0
+# define SET_FPUCW(word) (void)(word)
+
+# define DECL_LONG_DOUBLE_ROUNDING
+# define BEGIN_LONG_DOUBLE_ROUNDING()
+# define END_LONG_DOUBLE_ROUNDING()
+
+#endif
+
+#endif /* _FPUCW_H */
diff --git a/lib/frexp.c b/lib/frexp.c
new file mode 100644
index 00000000..8c72660e
--- /dev/null
+++ b/lib/frexp.c
@@ -0,0 +1,166 @@
+/* Split a double into fraction and mantissa.
+ Copyright (C) 2007-2008 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Paolo Bonzini <bonzini@gnu.org>, 2003, and
+ Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+#include <float.h>
+#ifdef USE_LONG_DOUBLE
+# include "isnanl-nolibm.h"
+# include "fpucw.h"
+#else
+# include "isnand-nolibm.h"
+#endif
+
+/* This file assumes FLT_RADIX = 2. If FLT_RADIX is a power of 2 greater
+ than 2, or not even a power of 2, some rounding errors can occur, so that
+ then the returned mantissa is only guaranteed to be <= 1.0, not < 1.0. */
+
+#ifdef USE_LONG_DOUBLE
+# define FUNC frexpl
+# define DOUBLE long double
+# define ISNAN isnanl
+# define DECL_ROUNDING DECL_LONG_DOUBLE_ROUNDING
+# define BEGIN_ROUNDING() BEGIN_LONG_DOUBLE_ROUNDING ()
+# define END_ROUNDING() END_LONG_DOUBLE_ROUNDING ()
+# define L_(literal) literal##L
+#else
+# define FUNC frexp
+# define DOUBLE double
+# define ISNAN isnand
+# define DECL_ROUNDING
+# define BEGIN_ROUNDING()
+# define END_ROUNDING()
+# define L_(literal) literal
+#endif
+
+DOUBLE
+FUNC (DOUBLE x, int *expptr)
+{
+ int sign;
+ int exponent;
+ DECL_ROUNDING
+
+ /* Test for NaN, infinity, and zero. */
+ if (ISNAN (x) || x + x == x)
+ {
+ *expptr = 0;
+ return x;
+ }
+
+ sign = 0;
+ if (x < 0)
+ {
+ x = - x;
+ sign = -1;
+ }
+
+ BEGIN_ROUNDING ();
+
+ {
+ /* Since the exponent is an 'int', it fits in 64 bits. Therefore the
+ loops are executed no more than 64 times. */
+ DOUBLE pow2[64]; /* pow2[i] = 2^2^i */
+ DOUBLE powh[64]; /* powh[i] = 2^-2^i */
+ int i;
+
+ exponent = 0;
+ if (x >= L_(1.0))
+ {
+ /* A positive exponent. */
+ DOUBLE pow2_i; /* = pow2[i] */
+ DOUBLE powh_i; /* = powh[i] */
+
+ /* Invariants: pow2_i = 2^2^i, powh_i = 2^-2^i,
+ x * 2^exponent = argument, x >= 1.0. */
+ for (i = 0, pow2_i = L_(2.0), powh_i = L_(0.5);
+ ;
+ i++, pow2_i = pow2_i * pow2_i, powh_i = powh_i * powh_i)
+ {
+ if (x >= pow2_i)
+ {
+ exponent += (1 << i);
+ x *= powh_i;
+ }
+ else
+ break;
+
+ pow2[i] = pow2_i;
+ powh[i] = powh_i;
+ }
+ /* Avoid making x too small, as it could become a denormalized
+ number and thus lose precision. */
+ while (i > 0 && x < pow2[i - 1])
+ {
+ i--;
+ powh_i = powh[i];
+ }
+ exponent += (1 << i);
+ x *= powh_i;
+ /* Here 2^-2^i <= x < 1.0. */
+ }
+ else
+ {
+ /* A negative or zero exponent. */
+ DOUBLE pow2_i; /* = pow2[i] */
+ DOUBLE powh_i; /* = powh[i] */
+
+ /* Invariants: pow2_i = 2^2^i, powh_i = 2^-2^i,
+ x * 2^exponent = argument, x < 1.0. */
+ for (i = 0, pow2_i = L_(2.0), powh_i = L_(0.5);
+ ;
+ i++, pow2_i = pow2_i * pow2_i, powh_i = powh_i * powh_i)
+ {
+ if (x < powh_i)
+ {
+ exponent -= (1 << i);
+ x *= pow2_i;
+ }
+ else
+ break;
+
+ pow2[i] = pow2_i;
+ powh[i] = powh_i;
+ }
+ /* Here 2^-2^i <= x < 1.0. */
+ }
+
+ /* Invariants: x * 2^exponent = argument, and 2^-2^i <= x < 1.0. */
+ while (i > 0)
+ {
+ i--;
+ if (x < powh[i])
+ {
+ exponent -= (1 << i);
+ x *= pow2[i];
+ }
+ }
+ /* Here 0.5 <= x < 1.0. */
+ }
+
+ if (sign < 0)
+ x = - x;
+
+ END_ROUNDING ();
+
+ *expptr = exponent;
+ return x;
+}
diff --git a/lib/frexpl.c b/lib/frexpl.c
new file mode 100644
index 00000000..08f489c9
--- /dev/null
+++ b/lib/frexpl.c
@@ -0,0 +1,18 @@
+/* Split a 'long double' into fraction and mantissa.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#define USE_LONG_DOUBLE
+#include "frexp.c"
diff --git a/lib/fseterr.c b/lib/fseterr.c
new file mode 100644
index 00000000..6c31eebd
--- /dev/null
+++ b/lib/fseterr.c
@@ -0,0 +1,74 @@
+/* Set the error indicator of a stream.
+ Copyright (C) 2007-2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "fseterr.h"
+
+#include <errno.h>
+
+#include "stdio-impl.h"
+
+void
+fseterr (FILE *fp)
+{
+ /* Most systems provide FILE as a struct and the necessary bitmask in
+ <stdio.h>, because they need it for implementing getc() and putc() as
+ fast macros. */
+#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
+ fp->_flags |= _IO_ERR_SEEN;
+#elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */
+ fp_->_flags |= __SERR;
+#elif defined __EMX__ /* emx+gcc */
+ fp->_flags |= _IOERR;
+#elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */
+ fp_->_flag |= _IOERR;
+#elif defined __UCLIBC__ /* uClibc */
+ fp->__modeflags |= __FLAG_ERROR;
+#elif defined __QNX__ /* QNX */
+ fp->_Mode |= 0x200 /* _MERR */;
+#elif defined __MINT__ /* Atari FreeMiNT */
+ fp->__error = 1;
+#elif 0 /* unknown */
+ /* Portable fallback, based on an idea by Rich Felker.
+ Wow! 6 system calls for something that is just a bit operation!
+ Not activated on any system, because there is no way to repair FP when
+ the sequence of system calls fails, and library code should not call
+ abort(). */
+ int saved_errno;
+ int fd;
+ int fd2;
+
+ saved_errno = errno;
+ fflush (fp);
+ fd = fileno (fp);
+ fd2 = dup (fd);
+ if (fd2 >= 0)
+ {
+ close (fd);
+ fputc ('\0', fp); /* This should set the error indicator. */
+ fflush (fp); /* Or this. */
+ if (dup2 (fd2, fd) < 0)
+ /* Whee... we botched the stream and now cannot restore it! */
+ abort ();
+ close (fd2);
+ }
+ errno = saved_errno;
+#else
+ #error "Please port gnulib fseterr.c to your platform! Look at the definitions of ferror and clearerr on your system, then report this to bug-gnulib."
+#endif
+}
diff --git a/lib/fseterr.h b/lib/fseterr.h
new file mode 100644
index 00000000..0adadc34
--- /dev/null
+++ b/lib/fseterr.h
@@ -0,0 +1,37 @@
+/* Set the error indicator of a stream.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _FSETERR_H
+#define _FSETERR_H
+
+#include <stdio.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Set the error indicator of the stream FP.
+ The "error indicator" is set when an I/O operation on the stream fails, and
+ is cleared (together with the "end-of-file" indicator) by clearerr (FP). */
+extern void fseterr (FILE *fp);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FSETERR_H */
diff --git a/lib/getpagesize.c b/lib/getpagesize.c
new file mode 100644
index 00000000..82238df1
--- /dev/null
+++ b/lib/getpagesize.c
@@ -0,0 +1,39 @@
+/* getpagesize emulation for systems where it cannot be done in a C macro.
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible and Martin Lambers. */
+
+#include <config.h>
+
+/* Specification. */
+#include <unistd.h>
+
+/* This implementation is only for native Win32 systems. */
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+
+int
+getpagesize (void)
+{
+ SYSTEM_INFO system_info;
+ GetSystemInfo (&system_info);
+ return system_info.dwPageSize;
+}
+
+#endif
diff --git a/lib/iconv.in.h b/lib/iconv.in.h
new file mode 100644
index 00000000..915dce2e
--- /dev/null
+++ b/lib/iconv.in.h
@@ -0,0 +1,71 @@
+/* A GNU-like <iconv.h>.
+
+ Copyright (C) 2007-2008 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+#ifndef _GL_ICONV_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+/* The include_next requires a split double-inclusion guard. */
+#@INCLUDE_NEXT@ @NEXT_ICONV_H@
+
+#ifndef _GL_ICONV_H
+#define _GL_ICONV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#if @REPLACE_ICONV_OPEN@
+/* An iconv_open wrapper that supports the IANA standardized encoding names
+ ("ISO-8859-1" etc.) as far as possible. */
+# define iconv_open rpl_iconv_open
+extern iconv_t iconv_open (const char *tocode, const char *fromcode);
+#endif
+
+#if @REPLACE_ICONV_UTF@
+/* Special constants for supporting UTF-{16,32}{BE,LE} encodings.
+ Not public. */
+# define _ICONV_UTF8_UTF16BE (iconv_t)(-161)
+# define _ICONV_UTF8_UTF16LE (iconv_t)(-162)
+# define _ICONV_UTF8_UTF32BE (iconv_t)(-163)
+# define _ICONV_UTF8_UTF32LE (iconv_t)(-164)
+# define _ICONV_UTF16BE_UTF8 (iconv_t)(-165)
+# define _ICONV_UTF16LE_UTF8 (iconv_t)(-166)
+# define _ICONV_UTF32BE_UTF8 (iconv_t)(-167)
+# define _ICONV_UTF32LE_UTF8 (iconv_t)(-168)
+#endif
+
+#if @REPLACE_ICONV@
+# define iconv rpl_iconv
+extern size_t iconv (iconv_t cd,
+ @ICONV_CONST@ char **inbuf, size_t *inbytesleft,
+ char **outbuf, size_t *outbytesleft);
+# define iconv_close rpl_iconv_close
+extern int iconv_close (iconv_t cd);
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_ICONV_H */
+#endif /* _GL_ICONV_H */
diff --git a/lib/iconv_open-aix.gperf b/lib/iconv_open-aix.gperf
new file mode 100644
index 00000000..6782b995
--- /dev/null
+++ b/lib/iconv_open-aix.gperf
@@ -0,0 +1,44 @@
+struct mapping { int standard_name; const char vendor_name[10 + 1]; };
+%struct-type
+%language=ANSI-C
+%define slot-name standard_name
+%define hash-function-name mapping_hash
+%define lookup-function-name mapping_lookup
+%readonly-tables
+%global-table
+%define word-array-name mappings
+%pic
+%%
+# On AIX 5.1, look in /usr/lib/nls/loc/uconvTable.
+ISO-8859-1, "ISO8859-1"
+ISO-8859-2, "ISO8859-2"
+ISO-8859-3, "ISO8859-3"
+ISO-8859-4, "ISO8859-4"
+ISO-8859-5, "ISO8859-5"
+ISO-8859-6, "ISO8859-6"
+ISO-8859-7, "ISO8859-7"
+ISO-8859-8, "ISO8859-8"
+ISO-8859-9, "ISO8859-9"
+ISO-8859-15, "ISO8859-15"
+CP437, "IBM-437"
+CP850, "IBM-850"
+CP852, "IBM-852"
+CP856, "IBM-856"
+CP857, "IBM-857"
+CP861, "IBM-861"
+CP865, "IBM-865"
+CP869, "IBM-869"
+ISO-8859-13, "IBM-921"
+CP922, "IBM-922"
+CP932, "IBM-932"
+CP943, "IBM-943"
+CP1046, "IBM-1046"
+CP1124, "IBM-1124"
+CP1125, "IBM-1125"
+CP1129, "IBM-1129"
+CP1252, "IBM-1252"
+GB2312, "IBM-eucCN"
+EUC-JP, "IBM-eucJP"
+EUC-KR, "IBM-eucKR"
+EUC-TW, "IBM-eucTW"
+BIG5, "big5"
diff --git a/lib/iconv_open-aix.h b/lib/iconv_open-aix.h
new file mode 100644
index 00000000..129e0308
--- /dev/null
+++ b/lib/iconv_open-aix.h
@@ -0,0 +1,256 @@
+/* ANSI-C code produced by gperf version 3.0.4 */
+/* Command-line: gperf -m 10 ./iconv_open-aix.gperf */
+/* Computed positions: -k'4,$' */
+
+#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
+
+#line 1 "./iconv_open-aix.gperf"
+struct mapping { int standard_name; const char vendor_name[10 + 1]; };
+
+#define TOTAL_KEYWORDS 32
+#define MIN_WORD_LENGTH 4
+#define MAX_WORD_LENGTH 11
+#define MIN_HASH_VALUE 6
+#define MAX_HASH_VALUE 44
+/* maximum key range = 39, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+mapping_hash (register const char *str, register unsigned int len)
+{
+ static const unsigned char asso_values[] =
+ {
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 0, 4, 25,
+ 0, 11, 24, 9, 17, 3, 14, 21, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 3, 45, 1, 45, 45, 45, 45, 0, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45
+ };
+ return len + asso_values[(unsigned char)str[3]+2] + asso_values[(unsigned char)str[len - 1]];
+}
+
+struct stringpool_t
+ {
+ char stringpool_str6[sizeof("EUC-TW")];
+ char stringpool_str7[sizeof("EUC-KR")];
+ char stringpool_str8[sizeof("CP852")];
+ char stringpool_str9[sizeof("EUC-JP")];
+ char stringpool_str10[sizeof("ISO-8859-2")];
+ char stringpool_str11[sizeof("CP857")];
+ char stringpool_str12[sizeof("CP850")];
+ char stringpool_str13[sizeof("ISO-8859-7")];
+ char stringpool_str14[sizeof("CP932")];
+ char stringpool_str15[sizeof("GB2312")];
+ char stringpool_str16[sizeof("BIG5")];
+ char stringpool_str17[sizeof("CP437")];
+ char stringpool_str19[sizeof("ISO-8859-5")];
+ char stringpool_str20[sizeof("ISO-8859-15")];
+ char stringpool_str21[sizeof("ISO-8859-3")];
+ char stringpool_str22[sizeof("ISO-8859-13")];
+ char stringpool_str23[sizeof("CP1046")];
+ char stringpool_str24[sizeof("ISO-8859-8")];
+ char stringpool_str25[sizeof("CP856")];
+ char stringpool_str26[sizeof("CP1125")];
+ char stringpool_str27[sizeof("ISO-8859-6")];
+ char stringpool_str28[sizeof("CP865")];
+ char stringpool_str29[sizeof("CP922")];
+ char stringpool_str30[sizeof("CP1252")];
+ char stringpool_str31[sizeof("ISO-8859-9")];
+ char stringpool_str33[sizeof("CP943")];
+ char stringpool_str34[sizeof("ISO-8859-4")];
+ char stringpool_str35[sizeof("ISO-8859-1")];
+ char stringpool_str38[sizeof("CP1129")];
+ char stringpool_str40[sizeof("CP869")];
+ char stringpool_str41[sizeof("CP1124")];
+ char stringpool_str44[sizeof("CP861")];
+ };
+static const struct stringpool_t stringpool_contents =
+ {
+ "EUC-TW",
+ "EUC-KR",
+ "CP852",
+ "EUC-JP",
+ "ISO-8859-2",
+ "CP857",
+ "CP850",
+ "ISO-8859-7",
+ "CP932",
+ "GB2312",
+ "BIG5",
+ "CP437",
+ "ISO-8859-5",
+ "ISO-8859-15",
+ "ISO-8859-3",
+ "ISO-8859-13",
+ "CP1046",
+ "ISO-8859-8",
+ "CP856",
+ "CP1125",
+ "ISO-8859-6",
+ "CP865",
+ "CP922",
+ "CP1252",
+ "ISO-8859-9",
+ "CP943",
+ "ISO-8859-4",
+ "ISO-8859-1",
+ "CP1129",
+ "CP869",
+ "CP1124",
+ "CP861"
+ };
+#define stringpool ((const char *) &stringpool_contents)
+
+static const struct mapping mappings[] =
+ {
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+#line 43 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str6, "IBM-eucTW"},
+#line 42 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str7, "IBM-eucKR"},
+#line 25 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str8, "IBM-852"},
+#line 41 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str9, "IBM-eucJP"},
+#line 14 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str10, "ISO8859-2"},
+#line 27 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str11, "IBM-857"},
+#line 24 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str12, "IBM-850"},
+#line 19 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str13, "ISO8859-7"},
+#line 33 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str14, "IBM-932"},
+#line 40 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str15, "IBM-eucCN"},
+#line 44 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str16, "big5"},
+#line 23 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str17, "IBM-437"},
+ {-1},
+#line 17 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str19, "ISO8859-5"},
+#line 22 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str20, "ISO8859-15"},
+#line 15 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str21, "ISO8859-3"},
+#line 31 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str22, "IBM-921"},
+#line 35 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str23, "IBM-1046"},
+#line 20 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str24, "ISO8859-8"},
+#line 26 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str25, "IBM-856"},
+#line 37 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str26, "IBM-1125"},
+#line 18 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str27, "ISO8859-6"},
+#line 29 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str28, "IBM-865"},
+#line 32 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str29, "IBM-922"},
+#line 39 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str30, "IBM-1252"},
+#line 21 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str31, "ISO8859-9"},
+ {-1},
+#line 34 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str33, "IBM-943"},
+#line 16 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str34, "ISO8859-4"},
+#line 13 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str35, "ISO8859-1"},
+ {-1}, {-1},
+#line 38 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str38, "IBM-1129"},
+ {-1},
+#line 30 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str40, "IBM-869"},
+#line 36 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str41, "IBM-1124"},
+ {-1}, {-1},
+#line 28 "./iconv_open-aix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str44, "IBM-861"}
+ };
+
+#ifdef __GNUC__
+__inline
+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+const struct mapping *
+mapping_lookup (register const char *str, register unsigned int len)
+{
+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+ {
+ register int key = mapping_hash (str, len);
+
+ if (key <= MAX_HASH_VALUE && key >= 0)
+ {
+ register int o = mappings[key].standard_name;
+ if (o >= 0)
+ {
+ register const char *s = o + stringpool;
+
+ if (*str == *s && !strcmp (str + 1, s + 1))
+ return &mappings[key];
+ }
+ }
+ }
+ return 0;
+}
diff --git a/lib/iconv_open-hpux.gperf b/lib/iconv_open-hpux.gperf
new file mode 100644
index 00000000..5a35c83e
--- /dev/null
+++ b/lib/iconv_open-hpux.gperf
@@ -0,0 +1,56 @@
+struct mapping { int standard_name; const char vendor_name[9 + 1]; };
+%struct-type
+%language=ANSI-C
+%define slot-name standard_name
+%define hash-function-name mapping_hash
+%define lookup-function-name mapping_lookup
+%readonly-tables
+%global-table
+%define word-array-name mappings
+%pic
+%%
+# On HP-UX 11.11, look in /usr/lib/nls/iconv.
+ISO-8859-1, "iso88591"
+ISO-8859-2, "iso88592"
+ISO-8859-5, "iso88595"
+ISO-8859-6, "iso88596"
+ISO-8859-7, "iso88597"
+ISO-8859-8, "iso88598"
+ISO-8859-9, "iso88599"
+ISO-8859-15, "iso885915"
+CP437, "cp437"
+CP775, "cp775"
+CP850, "cp850"
+CP852, "cp852"
+CP855, "cp855"
+CP857, "cp857"
+CP861, "cp861"
+CP862, "cp862"
+CP864, "cp864"
+CP865, "cp865"
+CP866, "cp866"
+CP869, "cp869"
+CP874, "cp874"
+CP1250, "cp1250"
+CP1251, "cp1251"
+CP1252, "cp1252"
+CP1253, "cp1253"
+CP1254, "cp1254"
+CP1255, "cp1255"
+CP1256, "cp1256"
+CP1257, "cp1257"
+CP1258, "cp1258"
+HP-ROMAN8, "roman8"
+HP-ARABIC8, "arabic8"
+HP-GREEK8, "greek8"
+HP-HEBREW8, "hebrew8"
+HP-TURKISH8, "turkish8"
+HP-KANA8, "kana8"
+TIS-620, "tis620"
+GB2312, "hp15CN"
+EUC-JP, "eucJP"
+EUC-KR, "eucKR"
+EUC-TW, "eucTW"
+BIG5, "big5"
+SHIFT_JIS, "sjis"
+UTF-8, "utf8"
diff --git a/lib/iconv_open-hpux.h b/lib/iconv_open-hpux.h
new file mode 100644
index 00000000..3bcff76a
--- /dev/null
+++ b/lib/iconv_open-hpux.h
@@ -0,0 +1,299 @@
+/* ANSI-C code produced by gperf version 3.0.4 */
+/* Command-line: gperf -m 10 ./iconv_open-hpux.gperf */
+/* Computed positions: -k'4,$' */
+
+#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
+
+#line 1 "./iconv_open-hpux.gperf"
+struct mapping { int standard_name; const char vendor_name[9 + 1]; };
+
+#define TOTAL_KEYWORDS 44
+#define MIN_WORD_LENGTH 4
+#define MAX_WORD_LENGTH 11
+#define MIN_HASH_VALUE 6
+#define MAX_HASH_VALUE 49
+/* maximum key range = 44, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+mapping_hash (register const char *str, register unsigned int len)
+{
+ static const unsigned char asso_values[] =
+ {
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 1, 2,
+ 24, 43, 5, 10, 0, 13, 32, 3, 19, 18,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 5,
+ 50, 50, 50, 50, 14, 5, 0, 50, 50, 0,
+ 27, 50, 12, 14, 50, 50, 0, 5, 2, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50
+ };
+ return len + asso_values[(unsigned char)str[3]+4] + asso_values[(unsigned char)str[len - 1]];
+}
+
+struct stringpool_t
+ {
+ char stringpool_str6[sizeof("CP1256")];
+ char stringpool_str7[sizeof("CP1250")];
+ char stringpool_str8[sizeof("CP1251")];
+ char stringpool_str9[sizeof("CP850")];
+ char stringpool_str10[sizeof("TIS-620")];
+ char stringpool_str11[sizeof("CP1254")];
+ char stringpool_str12[sizeof("ISO-8859-6")];
+ char stringpool_str13[sizeof("EUC-TW")];
+ char stringpool_str14[sizeof("ISO-8859-1")];
+ char stringpool_str15[sizeof("ISO-8859-9")];
+ char stringpool_str16[sizeof("CP1255")];
+ char stringpool_str17[sizeof("BIG5")];
+ char stringpool_str18[sizeof("CP855")];
+ char stringpool_str19[sizeof("CP1257")];
+ char stringpool_str20[sizeof("EUC-KR")];
+ char stringpool_str21[sizeof("CP857")];
+ char stringpool_str22[sizeof("ISO-8859-5")];
+ char stringpool_str23[sizeof("ISO-8859-15")];
+ char stringpool_str24[sizeof("CP866")];
+ char stringpool_str25[sizeof("ISO-8859-7")];
+ char stringpool_str26[sizeof("CP861")];
+ char stringpool_str27[sizeof("CP869")];
+ char stringpool_str28[sizeof("CP874")];
+ char stringpool_str29[sizeof("CP864")];
+ char stringpool_str30[sizeof("CP1252")];
+ char stringpool_str31[sizeof("CP437")];
+ char stringpool_str32[sizeof("CP852")];
+ char stringpool_str33[sizeof("CP775")];
+ char stringpool_str34[sizeof("CP865")];
+ char stringpool_str35[sizeof("EUC-JP")];
+ char stringpool_str36[sizeof("ISO-8859-2")];
+ char stringpool_str37[sizeof("SHIFT_JIS")];
+ char stringpool_str38[sizeof("CP1258")];
+ char stringpool_str39[sizeof("UTF-8")];
+ char stringpool_str40[sizeof("HP-KANA8")];
+ char stringpool_str41[sizeof("HP-ROMAN8")];
+ char stringpool_str42[sizeof("HP-HEBREW8")];
+ char stringpool_str43[sizeof("GB2312")];
+ char stringpool_str44[sizeof("ISO-8859-8")];
+ char stringpool_str45[sizeof("HP-TURKISH8")];
+ char stringpool_str46[sizeof("HP-GREEK8")];
+ char stringpool_str47[sizeof("HP-ARABIC8")];
+ char stringpool_str48[sizeof("CP862")];
+ char stringpool_str49[sizeof("CP1253")];
+ };
+static const struct stringpool_t stringpool_contents =
+ {
+ "CP1256",
+ "CP1250",
+ "CP1251",
+ "CP850",
+ "TIS-620",
+ "CP1254",
+ "ISO-8859-6",
+ "EUC-TW",
+ "ISO-8859-1",
+ "ISO-8859-9",
+ "CP1255",
+ "BIG5",
+ "CP855",
+ "CP1257",
+ "EUC-KR",
+ "CP857",
+ "ISO-8859-5",
+ "ISO-8859-15",
+ "CP866",
+ "ISO-8859-7",
+ "CP861",
+ "CP869",
+ "CP874",
+ "CP864",
+ "CP1252",
+ "CP437",
+ "CP852",
+ "CP775",
+ "CP865",
+ "EUC-JP",
+ "ISO-8859-2",
+ "SHIFT_JIS",
+ "CP1258",
+ "UTF-8",
+ "HP-KANA8",
+ "HP-ROMAN8",
+ "HP-HEBREW8",
+ "GB2312",
+ "ISO-8859-8",
+ "HP-TURKISH8",
+ "HP-GREEK8",
+ "HP-ARABIC8",
+ "CP862",
+ "CP1253"
+ };
+#define stringpool ((const char *) &stringpool_contents)
+
+static const struct mapping mappings[] =
+ {
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+#line 40 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str6, "cp1256"},
+#line 34 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str7, "cp1250"},
+#line 35 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str8, "cp1251"},
+#line 23 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str9, "cp850"},
+#line 49 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str10, "tis620"},
+#line 38 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str11, "cp1254"},
+#line 16 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str12, "iso88596"},
+#line 53 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str13, "eucTW"},
+#line 13 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str14, "iso88591"},
+#line 19 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str15, "iso88599"},
+#line 39 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str16, "cp1255"},
+#line 54 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str17, "big5"},
+#line 25 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str18, "cp855"},
+#line 41 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str19, "cp1257"},
+#line 52 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str20, "eucKR"},
+#line 26 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str21, "cp857"},
+#line 15 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str22, "iso88595"},
+#line 20 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str23, "iso885915"},
+#line 31 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str24, "cp866"},
+#line 17 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str25, "iso88597"},
+#line 27 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str26, "cp861"},
+#line 32 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str27, "cp869"},
+#line 33 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str28, "cp874"},
+#line 29 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str29, "cp864"},
+#line 36 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str30, "cp1252"},
+#line 21 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str31, "cp437"},
+#line 24 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str32, "cp852"},
+#line 22 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str33, "cp775"},
+#line 30 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str34, "cp865"},
+#line 51 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str35, "eucJP"},
+#line 14 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str36, "iso88592"},
+#line 55 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str37, "sjis"},
+#line 42 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str38, "cp1258"},
+#line 56 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str39, "utf8"},
+#line 48 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str40, "kana8"},
+#line 43 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str41, "roman8"},
+#line 46 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str42, "hebrew8"},
+#line 50 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str43, "hp15CN"},
+#line 18 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str44, "iso88598"},
+#line 47 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str45, "turkish8"},
+#line 45 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str46, "greek8"},
+#line 44 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str47, "arabic8"},
+#line 28 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str48, "cp862"},
+#line 37 "./iconv_open-hpux.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str49, "cp1253"}
+ };
+
+#ifdef __GNUC__
+__inline
+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+const struct mapping *
+mapping_lookup (register const char *str, register unsigned int len)
+{
+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+ {
+ register int key = mapping_hash (str, len);
+
+ if (key <= MAX_HASH_VALUE && key >= 0)
+ {
+ register int o = mappings[key].standard_name;
+ if (o >= 0)
+ {
+ register const char *s = o + stringpool;
+
+ if (*str == *s && !strcmp (str + 1, s + 1))
+ return &mappings[key];
+ }
+ }
+ }
+ return 0;
+}
diff --git a/lib/iconv_open-irix.gperf b/lib/iconv_open-irix.gperf
new file mode 100644
index 00000000..3672a801
--- /dev/null
+++ b/lib/iconv_open-irix.gperf
@@ -0,0 +1,31 @@
+struct mapping { int standard_name; const char vendor_name[10 + 1]; };
+%struct-type
+%language=ANSI-C
+%define slot-name standard_name
+%define hash-function-name mapping_hash
+%define lookup-function-name mapping_lookup
+%readonly-tables
+%global-table
+%define word-array-name mappings
+%pic
+%%
+# On IRIX 6.5, look in /usr/lib/iconv and /usr/lib/international/encodings.
+ISO-8859-1, "ISO8859-1"
+ISO-8859-2, "ISO8859-2"
+ISO-8859-3, "ISO8859-3"
+ISO-8859-4, "ISO8859-4"
+ISO-8859-5, "ISO8859-5"
+ISO-8859-6, "ISO8859-6"
+ISO-8859-7, "ISO8859-7"
+ISO-8859-8, "ISO8859-8"
+ISO-8859-9, "ISO8859-9"
+ISO-8859-15, "ISO8859-15"
+KOI8-R, "KOI8"
+CP855, "DOS855"
+CP1251, "WIN1251"
+GB2312, "eucCN"
+EUC-JP, "eucJP"
+EUC-KR, "eucKR"
+EUC-TW, "eucTW"
+SHIFT_JIS, "sjis"
+TIS-620, "TIS620"
diff --git a/lib/iconv_open-irix.h b/lib/iconv_open-irix.h
new file mode 100644
index 00000000..74ceb8f5
--- /dev/null
+++ b/lib/iconv_open-irix.h
@@ -0,0 +1,199 @@
+/* ANSI-C code produced by gperf version 3.0.4 */
+/* Command-line: gperf -m 10 ./iconv_open-irix.gperf */
+/* Computed positions: -k'1,$' */
+
+#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
+
+#line 1 "./iconv_open-irix.gperf"
+struct mapping { int standard_name; const char vendor_name[10 + 1]; };
+
+#define TOTAL_KEYWORDS 19
+#define MIN_WORD_LENGTH 5
+#define MAX_WORD_LENGTH 11
+#define MIN_HASH_VALUE 5
+#define MAX_HASH_VALUE 23
+/* maximum key range = 19, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+mapping_hash (register const char *str, register unsigned int len)
+{
+ static const unsigned char asso_values[] =
+ {
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 8, 2,
+ 5, 12, 11, 0, 10, 9, 8, 7, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 0, 24, 0,
+ 24, 5, 24, 0, 24, 7, 24, 24, 24, 24,
+ 7, 24, 1, 0, 8, 24, 24, 0, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24
+ };
+ return len + asso_values[(unsigned char)str[len - 1]] + asso_values[(unsigned char)str[0]];
+}
+
+struct stringpool_t
+ {
+ char stringpool_str5[sizeof("CP855")];
+ char stringpool_str6[sizeof("EUC-TW")];
+ char stringpool_str7[sizeof("EUC-KR")];
+ char stringpool_str8[sizeof("CP1251")];
+ char stringpool_str9[sizeof("SHIFT_JIS")];
+ char stringpool_str10[sizeof("ISO-8859-5")];
+ char stringpool_str11[sizeof("ISO-8859-15")];
+ char stringpool_str12[sizeof("ISO-8859-1")];
+ char stringpool_str13[sizeof("EUC-JP")];
+ char stringpool_str14[sizeof("KOI8-R")];
+ char stringpool_str15[sizeof("ISO-8859-2")];
+ char stringpool_str16[sizeof("GB2312")];
+ char stringpool_str17[sizeof("ISO-8859-9")];
+ char stringpool_str18[sizeof("ISO-8859-8")];
+ char stringpool_str19[sizeof("ISO-8859-7")];
+ char stringpool_str20[sizeof("ISO-8859-6")];
+ char stringpool_str21[sizeof("ISO-8859-4")];
+ char stringpool_str22[sizeof("ISO-8859-3")];
+ char stringpool_str23[sizeof("TIS-620")];
+ };
+static const struct stringpool_t stringpool_contents =
+ {
+ "CP855",
+ "EUC-TW",
+ "EUC-KR",
+ "CP1251",
+ "SHIFT_JIS",
+ "ISO-8859-5",
+ "ISO-8859-15",
+ "ISO-8859-1",
+ "EUC-JP",
+ "KOI8-R",
+ "ISO-8859-2",
+ "GB2312",
+ "ISO-8859-9",
+ "ISO-8859-8",
+ "ISO-8859-7",
+ "ISO-8859-6",
+ "ISO-8859-4",
+ "ISO-8859-3",
+ "TIS-620"
+ };
+#define stringpool ((const char *) &stringpool_contents)
+
+static const struct mapping mappings[] =
+ {
+ {-1}, {-1}, {-1}, {-1}, {-1},
+#line 24 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str5, "DOS855"},
+#line 29 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str6, "eucTW"},
+#line 28 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str7, "eucKR"},
+#line 25 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str8, "WIN1251"},
+#line 30 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str9, "sjis"},
+#line 17 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str10, "ISO8859-5"},
+#line 22 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str11, "ISO8859-15"},
+#line 13 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str12, "ISO8859-1"},
+#line 27 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str13, "eucJP"},
+#line 23 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str14, "KOI8"},
+#line 14 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str15, "ISO8859-2"},
+#line 26 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str16, "eucCN"},
+#line 21 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str17, "ISO8859-9"},
+#line 20 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str18, "ISO8859-8"},
+#line 19 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str19, "ISO8859-7"},
+#line 18 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str20, "ISO8859-6"},
+#line 16 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str21, "ISO8859-4"},
+#line 15 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str22, "ISO8859-3"},
+#line 31 "./iconv_open-irix.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str23, "TIS620"}
+ };
+
+#ifdef __GNUC__
+__inline
+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+const struct mapping *
+mapping_lookup (register const char *str, register unsigned int len)
+{
+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+ {
+ register int key = mapping_hash (str, len);
+
+ if (key <= MAX_HASH_VALUE && key >= 0)
+ {
+ register int o = mappings[key].standard_name;
+ if (o >= 0)
+ {
+ register const char *s = o + stringpool;
+
+ if (*str == *s && !strcmp (str + 1, s + 1))
+ return &mappings[key];
+ }
+ }
+ }
+ return 0;
+}
diff --git a/lib/iconv_open-osf.gperf b/lib/iconv_open-osf.gperf
new file mode 100644
index 00000000..f468ff60
--- /dev/null
+++ b/lib/iconv_open-osf.gperf
@@ -0,0 +1,50 @@
+struct mapping { int standard_name; const char vendor_name[10 + 1]; };
+%struct-type
+%language=ANSI-C
+%define slot-name standard_name
+%define hash-function-name mapping_hash
+%define lookup-function-name mapping_lookup
+%readonly-tables
+%global-table
+%define word-array-name mappings
+%pic
+%%
+# On OSF/1 5.1, look in /usr/lib/nls/loc/iconv.
+ISO-8859-1, "ISO8859-1"
+ISO-8859-2, "ISO8859-2"
+ISO-8859-3, "ISO8859-3"
+ISO-8859-4, "ISO8859-4"
+ISO-8859-5, "ISO8859-5"
+ISO-8859-6, "ISO8859-6"
+ISO-8859-7, "ISO8859-7"
+ISO-8859-8, "ISO8859-8"
+ISO-8859-9, "ISO8859-9"
+ISO-8859-15, "ISO8859-15"
+CP437, "cp437"
+CP775, "cp775"
+CP850, "cp850"
+CP852, "cp852"
+CP855, "cp855"
+CP857, "cp857"
+CP861, "cp861"
+CP862, "cp862"
+CP865, "cp865"
+CP866, "cp866"
+CP869, "cp869"
+CP874, "cp874"
+CP949, "KSC5601"
+CP1250, "cp1250"
+CP1251, "cp1251"
+CP1252, "cp1252"
+CP1253, "cp1253"
+CP1254, "cp1254"
+CP1255, "cp1255"
+CP1256, "cp1256"
+CP1257, "cp1257"
+CP1258, "cp1258"
+EUC-JP, "eucJP"
+EUC-KR, "eucKR"
+EUC-TW, "eucTW"
+BIG5, "big5"
+SHIFT_JIS, "SJIS"
+TIS-620, "TACTIS"
diff --git a/lib/iconv_open-osf.h b/lib/iconv_open-osf.h
new file mode 100644
index 00000000..4d357649
--- /dev/null
+++ b/lib/iconv_open-osf.h
@@ -0,0 +1,278 @@
+/* ANSI-C code produced by gperf version 3.0.4 */
+/* Command-line: gperf -m 10 ./iconv_open-osf.gperf */
+/* Computed positions: -k'4,$' */
+
+#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
+
+#line 1 "./iconv_open-osf.gperf"
+struct mapping { int standard_name; const char vendor_name[10 + 1]; };
+
+#define TOTAL_KEYWORDS 38
+#define MIN_WORD_LENGTH 4
+#define MAX_WORD_LENGTH 11
+#define MIN_HASH_VALUE 6
+#define MAX_HASH_VALUE 47
+/* maximum key range = 42, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+mapping_hash (register const char *str, register unsigned int len)
+{
+ static const unsigned char asso_values[] =
+ {
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 2, 29,
+ 24, 34, 31, 0, 15, 14, 10, 13, 2, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 7, 48, 48, 48, 48, 48, 48,
+ 11, 48, 2, 7, 48, 48, 48, 1, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48
+ };
+ return len + asso_values[(unsigned char)str[3]+3] + asso_values[(unsigned char)str[len - 1]];
+}
+
+struct stringpool_t
+ {
+ char stringpool_str6[sizeof("CP1255")];
+ char stringpool_str7[sizeof("CP775")];
+ char stringpool_str8[sizeof("CP1250")];
+ char stringpool_str9[sizeof("EUC-TW")];
+ char stringpool_str10[sizeof("EUC-KR")];
+ char stringpool_str11[sizeof("TIS-620")];
+ char stringpool_str12[sizeof("ISO-8859-5")];
+ char stringpool_str13[sizeof("ISO-8859-15")];
+ char stringpool_str14[sizeof("BIG5")];
+ char stringpool_str15[sizeof("CP855")];
+ char stringpool_str16[sizeof("CP1258")];
+ char stringpool_str17[sizeof("CP850")];
+ char stringpool_str18[sizeof("CP865")];
+ char stringpool_str19[sizeof("EUC-JP")];
+ char stringpool_str20[sizeof("CP1257")];
+ char stringpool_str21[sizeof("CP1256")];
+ char stringpool_str22[sizeof("ISO-8859-8")];
+ char stringpool_str23[sizeof("SHIFT_JIS")];
+ char stringpool_str25[sizeof("ISO-8859-9")];
+ char stringpool_str26[sizeof("ISO-8859-7")];
+ char stringpool_str27[sizeof("ISO-8859-6")];
+ char stringpool_str29[sizeof("CP857")];
+ char stringpool_str30[sizeof("CP1252")];
+ char stringpool_str31[sizeof("CP869")];
+ char stringpool_str32[sizeof("CP949")];
+ char stringpool_str33[sizeof("CP866")];
+ char stringpool_str34[sizeof("CP437")];
+ char stringpool_str35[sizeof("CP1251")];
+ char stringpool_str36[sizeof("ISO-8859-2")];
+ char stringpool_str37[sizeof("CP1254")];
+ char stringpool_str38[sizeof("CP874")];
+ char stringpool_str39[sizeof("CP852")];
+ char stringpool_str40[sizeof("CP1253")];
+ char stringpool_str41[sizeof("ISO-8859-1")];
+ char stringpool_str42[sizeof("CP862")];
+ char stringpool_str43[sizeof("ISO-8859-4")];
+ char stringpool_str46[sizeof("ISO-8859-3")];
+ char stringpool_str47[sizeof("CP861")];
+ };
+static const struct stringpool_t stringpool_contents =
+ {
+ "CP1255",
+ "CP775",
+ "CP1250",
+ "EUC-TW",
+ "EUC-KR",
+ "TIS-620",
+ "ISO-8859-5",
+ "ISO-8859-15",
+ "BIG5",
+ "CP855",
+ "CP1258",
+ "CP850",
+ "CP865",
+ "EUC-JP",
+ "CP1257",
+ "CP1256",
+ "ISO-8859-8",
+ "SHIFT_JIS",
+ "ISO-8859-9",
+ "ISO-8859-7",
+ "ISO-8859-6",
+ "CP857",
+ "CP1252",
+ "CP869",
+ "CP949",
+ "CP866",
+ "CP437",
+ "CP1251",
+ "ISO-8859-2",
+ "CP1254",
+ "CP874",
+ "CP852",
+ "CP1253",
+ "ISO-8859-1",
+ "CP862",
+ "ISO-8859-4",
+ "ISO-8859-3",
+ "CP861"
+ };
+#define stringpool ((const char *) &stringpool_contents)
+
+static const struct mapping mappings[] =
+ {
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+#line 41 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str6, "cp1255"},
+#line 24 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str7, "cp775"},
+#line 36 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str8, "cp1250"},
+#line 47 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str9, "eucTW"},
+#line 46 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str10, "eucKR"},
+#line 50 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str11, "TACTIS"},
+#line 17 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str12, "ISO8859-5"},
+#line 22 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str13, "ISO8859-15"},
+#line 48 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str14, "big5"},
+#line 27 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str15, "cp855"},
+#line 44 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str16, "cp1258"},
+#line 25 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str17, "cp850"},
+#line 31 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str18, "cp865"},
+#line 45 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str19, "eucJP"},
+#line 43 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str20, "cp1257"},
+#line 42 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str21, "cp1256"},
+#line 20 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str22, "ISO8859-8"},
+#line 49 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str23, "SJIS"},
+ {-1},
+#line 21 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str25, "ISO8859-9"},
+#line 19 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str26, "ISO8859-7"},
+#line 18 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str27, "ISO8859-6"},
+ {-1},
+#line 28 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str29, "cp857"},
+#line 38 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str30, "cp1252"},
+#line 33 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str31, "cp869"},
+#line 35 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str32, "KSC5601"},
+#line 32 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str33, "cp866"},
+#line 23 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str34, "cp437"},
+#line 37 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str35, "cp1251"},
+#line 14 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str36, "ISO8859-2"},
+#line 40 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str37, "cp1254"},
+#line 34 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str38, "cp874"},
+#line 26 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str39, "cp852"},
+#line 39 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str40, "cp1253"},
+#line 13 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str41, "ISO8859-1"},
+#line 30 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str42, "cp862"},
+#line 16 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str43, "ISO8859-4"},
+ {-1}, {-1},
+#line 15 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str46, "ISO8859-3"},
+#line 29 "./iconv_open-osf.gperf"
+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str47, "cp861"}
+ };
+
+#ifdef __GNUC__
+__inline
+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+const struct mapping *
+mapping_lookup (register const char *str, register unsigned int len)
+{
+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+ {
+ register int key = mapping_hash (str, len);
+
+ if (key <= MAX_HASH_VALUE && key >= 0)
+ {
+ register int o = mappings[key].standard_name;
+ if (o >= 0)
+ {
+ register const char *s = o + stringpool;
+
+ if (*str == *s && !strcmp (str + 1, s + 1))
+ return &mappings[key];
+ }
+ }
+ }
+ return 0;
+}
diff --git a/lib/iconv_open.c b/lib/iconv_open.c
new file mode 100644
index 00000000..3d873acd
--- /dev/null
+++ b/lib/iconv_open.c
@@ -0,0 +1,172 @@
+/* Character set conversion.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+#include <config.h>
+
+/* Specification. */
+#include <iconv.h>
+
+#include <errno.h>
+#include <string.h>
+#include "c-ctype.h"
+#include "c-strcase.h"
+
+#define SIZEOF(a) (sizeof(a) / sizeof(a[0]))
+
+/* Namespace cleanliness. */
+#define mapping_lookup rpl_iconv_open_mapping_lookup
+
+/* The macro ICONV_FLAVOR is defined to one of these or undefined. */
+
+#define ICONV_FLAVOR_AIX "iconv_open-aix.h"
+#define ICONV_FLAVOR_HPUX "iconv_open-hpux.h"
+#define ICONV_FLAVOR_IRIX "iconv_open-irix.h"
+#define ICONV_FLAVOR_OSF "iconv_open-osf.h"
+
+#ifdef ICONV_FLAVOR
+# include ICONV_FLAVOR
+#endif
+
+iconv_t
+rpl_iconv_open (const char *tocode, const char *fromcode)
+#undef iconv_open
+{
+ char fromcode_upper[32];
+ char tocode_upper[32];
+ char *fromcode_upper_end;
+ char *tocode_upper_end;
+
+#if REPLACE_ICONV_UTF
+ /* Special handling of conversion between UTF-8 and UTF-{16,32}{BE,LE}.
+ Do this here, before calling the real iconv_open(), because OSF/1 5.1
+ iconv() to these encoding inserts a BOM, which is wrong.
+ We do not need to handle conversion between arbitrary encodings and
+ UTF-{16,32}{BE,LE}, because the 'striconveh' module implements two-step
+ conversion throough UTF-8.
+ The _ICONV_* constants are chosen to be disjoint from any iconv_t
+ returned by the system's iconv_open() functions. Recall that iconv_t
+ is a scalar type. */
+ if (c_toupper (fromcode[0]) == 'U'
+ && c_toupper (fromcode[1]) == 'T'
+ && c_toupper (fromcode[2]) == 'F'
+ && fromcode[3] == '-')
+ {
+ if (c_toupper (tocode[0]) == 'U'
+ && c_toupper (tocode[1]) == 'T'
+ && c_toupper (tocode[2]) == 'F'
+ && tocode[3] == '-')
+ {
+ if (strcmp (fromcode + 4, "8") == 0)
+ {
+ if (c_strcasecmp (tocode + 4, "16BE") == 0)
+ return _ICONV_UTF8_UTF16BE;
+ if (c_strcasecmp (tocode + 4, "16LE") == 0)
+ return _ICONV_UTF8_UTF16LE;
+ if (c_strcasecmp (tocode + 4, "32BE") == 0)
+ return _ICONV_UTF8_UTF32BE;
+ if (c_strcasecmp (tocode + 4, "32LE") == 0)
+ return _ICONV_UTF8_UTF32LE;
+ }
+ else if (strcmp (tocode + 4, "8") == 0)
+ {
+ if (c_strcasecmp (fromcode + 4, "16BE") == 0)
+ return _ICONV_UTF16BE_UTF8;
+ if (c_strcasecmp (fromcode + 4, "16LE") == 0)
+ return _ICONV_UTF16LE_UTF8;
+ if (c_strcasecmp (fromcode + 4, "32BE") == 0)
+ return _ICONV_UTF32BE_UTF8;
+ if (c_strcasecmp (fromcode + 4, "32LE") == 0)
+ return _ICONV_UTF32LE_UTF8;
+ }
+ }
+ }
+#endif
+
+ /* Do *not* add special support for 8-bit encodings like ASCII or ISO-8859-1
+ here. This would lead to programs that work in some locales (such as the
+ "C" or "en_US" locales) but do not work in East Asian locales. It is
+ better if programmers make their programs depend on GNU libiconv (except
+ on glibc systems), e.g. by using the AM_ICONV macro and documenting the
+ dependency in an INSTALL or DEPENDENCIES file. */
+
+ /* Try with the original names first.
+ This covers the case when fromcode or tocode is a lowercase encoding name
+ that is understood by the system's iconv_open but not listed in our
+ mappings table. */
+ {
+ iconv_t cd = iconv_open (tocode, fromcode);
+ if (cd != (iconv_t)(-1))
+ return cd;
+ }
+
+ /* Convert the encodings to upper case, because
+ 1. in the arguments of iconv_open() on AIX, HP-UX, and OSF/1 the case
+ matters,
+ 2. it makes searching in the table faster. */
+ {
+ const char *p = fromcode;
+ char *q = fromcode_upper;
+ while ((*q = c_toupper (*p)) != '\0')
+ {
+ p++;
+ q++;
+ if (q == &fromcode_upper[SIZEOF (fromcode_upper)])
+ {
+ errno = EINVAL;
+ return (iconv_t)(-1);
+ }
+ }
+ fromcode_upper_end = q;
+ }
+
+ {
+ const char *p = tocode;
+ char *q = tocode_upper;
+ while ((*q = c_toupper (*p)) != '\0')
+ {
+ p++;
+ q++;
+ if (q == &tocode_upper[SIZEOF (tocode_upper)])
+ {
+ errno = EINVAL;
+ return (iconv_t)(-1);
+ }
+ }
+ tocode_upper_end = q;
+ }
+
+#ifdef ICONV_FLAVOR
+ /* Apply the mappings. */
+ {
+ const struct mapping *m =
+ mapping_lookup (fromcode_upper, fromcode_upper_end - fromcode_upper);
+
+ fromcode = (m != NULL ? m->vendor_name : fromcode_upper);
+ }
+ {
+ const struct mapping *m =
+ mapping_lookup (tocode_upper, tocode_upper_end - tocode_upper);
+
+ tocode = (m != NULL ? m->vendor_name : tocode_upper);
+ }
+#else
+ fromcode = fromcode_upper;
+ tocode = tocode_upper;
+#endif
+
+ return iconv_open (tocode, fromcode);
+}
diff --git a/lib/iconveh.h b/lib/iconveh.h
new file mode 100644
index 00000000..06cda52e
--- /dev/null
+++ b/lib/iconveh.h
@@ -0,0 +1,41 @@
+/* Character set conversion handler type.
+ Copyright (C) 2001-2007, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _ICONVEH_H
+#define _ICONVEH_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Handling of unconvertible characters. */
+enum iconv_ilseq_handler
+{
+ iconveh_error, /* return and set errno = EILSEQ */
+ iconveh_question_mark, /* use one '?' per unconvertible character */
+ iconveh_escape_sequence /* use escape sequence \uxxxx or \Uxxxxxxxx */
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _ICONVEH_H */
diff --git a/lib/isnan.c b/lib/isnan.c
new file mode 100644
index 00000000..f24f5761
--- /dev/null
+++ b/lib/isnan.c
@@ -0,0 +1,161 @@
+/* Test for NaN that does not need libm.
+ Copyright (C) 2007-2008 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include <float.h>
+#include <string.h>
+
+#include "float+.h"
+
+#ifdef USE_LONG_DOUBLE
+# define FUNC rpl_isnanl
+# define DOUBLE long double
+# define MAX_EXP LDBL_MAX_EXP
+# define MIN_EXP LDBL_MIN_EXP
+# if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT
+# define KNOWN_EXPBIT0_LOCATION
+# define EXPBIT0_WORD LDBL_EXPBIT0_WORD
+# define EXPBIT0_BIT LDBL_EXPBIT0_BIT
+# endif
+# define SIZE SIZEOF_LDBL
+# define L_(literal) literal##L
+#elif ! defined USE_FLOAT
+# define FUNC rpl_isnand
+# define DOUBLE double
+# define MAX_EXP DBL_MAX_EXP
+# define MIN_EXP DBL_MIN_EXP
+# if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
+# define KNOWN_EXPBIT0_LOCATION
+# define EXPBIT0_WORD DBL_EXPBIT0_WORD
+# define EXPBIT0_BIT DBL_EXPBIT0_BIT
+# endif
+# define SIZE SIZEOF_DBL
+# define L_(literal) literal
+#else /* defined USE_FLOAT */
+# define FUNC rpl_isnanf
+# define DOUBLE float
+# define MAX_EXP FLT_MAX_EXP
+# define MIN_EXP FLT_MIN_EXP
+# if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
+# define KNOWN_EXPBIT0_LOCATION
+# define EXPBIT0_WORD FLT_EXPBIT0_WORD
+# define EXPBIT0_BIT FLT_EXPBIT0_BIT
+# endif
+# define SIZE SIZEOF_FLT
+# define L_(literal) literal##f
+#endif
+
+#define EXP_MASK ((MAX_EXP - MIN_EXP) | 7)
+
+#define NWORDS \
+ ((sizeof (DOUBLE) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { DOUBLE value; unsigned int word[NWORDS]; } memory_double;
+
+int
+FUNC (DOUBLE x)
+{
+#ifdef KNOWN_EXPBIT0_LOCATION
+# if defined USE_LONG_DOUBLE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+ /* Special CPU dependent code is needed to treat bit patterns outside the
+ IEEE 754 specification (such as Pseudo-NaNs, Pseudo-Infinities,
+ Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals) as NaNs.
+ These bit patterns are:
+ - exponent = 0x0001..0x7FFF, mantissa bit 63 = 0,
+ - exponent = 0x0000, mantissa bit 63 = 1.
+ The NaN bit pattern is:
+ - exponent = 0x7FFF, mantissa >= 0x8000000000000001. */
+ memory_double m;
+ unsigned int exponent;
+
+ m.value = x;
+ exponent = (m.word[EXPBIT0_WORD] >> EXPBIT0_BIT) & EXP_MASK;
+# ifdef WORDS_BIGENDIAN
+ /* Big endian: EXPBIT0_WORD = 0, EXPBIT0_BIT = 16. */
+ if (exponent == 0)
+ return 1 & (m.word[0] >> 15);
+ else if (exponent == EXP_MASK)
+ return (((m.word[0] ^ 0x8000U) << 16) | m.word[1] | (m.word[2] >> 16)) != 0;
+ else
+ return 1 & ~(m.word[0] >> 15);
+# else
+ /* Little endian: EXPBIT0_WORD = 2, EXPBIT0_BIT = 0. */
+ if (exponent == 0)
+ return (m.word[1] >> 31);
+ else if (exponent == EXP_MASK)
+ return ((m.word[1] ^ 0x80000000U) | m.word[0]) != 0;
+ else
+ return (m.word[1] >> 31) ^ 1;
+# endif
+# else
+ /* Be careful to not do any floating-point operation on x, such as x == x,
+ because x may be a signaling NaN. */
+# if defined __SUNPRO_C || defined __DECC || (defined __sgi && !defined __GNUC__)
+ /* The Sun C 5.0 compilers and the Compaq (ex-DEC) 6.4 compilers don't
+ recognize the initializers as constant expressions. The latter compiler
+ also fails when constant-folding 0.0 / 0.0 even when constant-folding is
+ not required. The SGI MIPSpro C compiler complains about "floating-point
+ operation result is out of range". */
+ static DOUBLE zero = L_(0.0);
+ memory_double nan;
+ DOUBLE plus_inf = L_(1.0) / L_(0.0);
+ DOUBLE minus_inf = -L_(1.0) / L_(0.0);
+ nan.value = zero / zero;
+# else
+ static memory_double nan = { L_(0.0) / L_(0.0) };
+ static DOUBLE plus_inf = L_(1.0) / L_(0.0);
+ static DOUBLE minus_inf = -L_(1.0) / L_(0.0);
+# endif
+ {
+ memory_double m;
+
+ /* A NaN can be recognized through its exponent. But exclude +Infinity and
+ -Infinity, which have the same exponent. */
+ m.value = x;
+ if (((m.word[EXPBIT0_WORD] ^ nan.word[EXPBIT0_WORD])
+ & (EXP_MASK << EXPBIT0_BIT))
+ == 0)
+ return (memcmp (&m.value, &plus_inf, SIZE) != 0
+ && memcmp (&m.value, &minus_inf, SIZE) != 0);
+ else
+ return 0;
+ }
+# endif
+#else
+ /* The configuration did not find sufficient information. Give up about
+ the signaling NaNs, handle only the quiet NaNs. */
+ if (x == x)
+ {
+# if defined USE_LONG_DOUBLE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+ /* Detect any special bit patterns that pass ==; see comment above. */
+ memory_double m1;
+ memory_double m2;
+
+ memset (&m1.value, 0, SIZE);
+ memset (&m2.value, 0, SIZE);
+ m1.value = x;
+ m2.value = x + (x ? 0.0L : -0.0L);
+ if (memcmp (&m1.value, &m2.value, SIZE) != 0)
+ return 1;
+# endif
+ return 0;
+ }
+ else
+ return 1;
+#endif
+}
diff --git a/lib/isnand-nolibm.h b/lib/isnand-nolibm.h
new file mode 100644
index 00000000..0a1c6ab7
--- /dev/null
+++ b/lib/isnand-nolibm.h
@@ -0,0 +1,33 @@
+/* Test for NaN that does not need libm.
+ Copyright (C) 2007-2008 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#if HAVE_ISNAND_IN_LIBC
+/* Get declaration of isnan macro. */
+# include <math.h>
+# if __GNUC__ >= 4
+ /* GCC 4.0 and newer provides three built-ins for isnan. */
+# undef isnand
+# define isnand(x) __builtin_isnan ((double)(x))
+# else
+# undef isnand
+# define isnand(x) isnan ((double)(x))
+# endif
+#else
+/* Test whether X is a NaN. */
+# undef isnand
+# define isnand rpl_isnand
+extern int isnand (double x);
+#endif
diff --git a/lib/isnand.c b/lib/isnand.c
new file mode 100644
index 00000000..d5220cb8
--- /dev/null
+++ b/lib/isnand.c
@@ -0,0 +1,19 @@
+/* Test for NaN that does not need libm.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+
+#include "isnan.c"
diff --git a/lib/isnanf-nolibm.h b/lib/isnanf-nolibm.h
new file mode 100644
index 00000000..cb2263e6
--- /dev/null
+++ b/lib/isnanf-nolibm.h
@@ -0,0 +1,33 @@
+/* Test for NaN that does not need libm.
+ Copyright (C) 2007-2008 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#if HAVE_ISNANF_IN_LIBC
+/* Get declaration of isnan macro or (older) isnanf function. */
+# include <math.h>
+# if __GNUC__ >= 4
+ /* GCC 4.0 and newer provides three built-ins for isnan. */
+# undef isnanf
+# define isnanf(x) __builtin_isnanf ((float)(x))
+# elif defined isnan
+# undef isnanf
+# define isnanf(x) isnan ((float)(x))
+# endif
+#else
+/* Test whether X is a NaN. */
+# undef isnanf
+# define isnanf rpl_isnanf
+extern int isnanf (float x);
+#endif
diff --git a/lib/isnanf.c b/lib/isnanf.c
new file mode 100644
index 00000000..6e39706e
--- /dev/null
+++ b/lib/isnanf.c
@@ -0,0 +1,20 @@
+/* Test for NaN that does not need libm.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#define USE_FLOAT
+#include "isnan.c"
diff --git a/lib/isnanl-nolibm.h b/lib/isnanl-nolibm.h
new file mode 100644
index 00000000..7fd46f8d
--- /dev/null
+++ b/lib/isnanl-nolibm.h
@@ -0,0 +1,33 @@
+/* Test for NaN that does not need libm.
+ Copyright (C) 2007-2008 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#if HAVE_ISNANL_IN_LIBC
+/* Get declaration of isnan macro or (older) isnanl function. */
+# include <math.h>
+# if __GNUC__ >= 4
+ /* GCC 4.0 and newer provides three built-ins for isnan. */
+# undef isnanl
+# define isnanl(x) __builtin_isnanl ((long double)(x))
+# elif defined isnan
+# undef isnanl
+# define isnanl(x) isnan ((long double)(x))
+# endif
+#else
+/* Test whether X is a NaN. */
+# undef isnanl
+# define isnanl rpl_isnanl
+extern int isnanl (long double x);
+#endif
diff --git a/lib/isnanl.c b/lib/isnanl.c
new file mode 100644
index 00000000..b7d899b2
--- /dev/null
+++ b/lib/isnanl.c
@@ -0,0 +1,20 @@
+/* Test for NaN that does not need libm.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#define USE_LONG_DOUBLE
+#include "isnan.c"
diff --git a/lib/libunistring.rc b/lib/libunistring.rc
new file mode 100644
index 00000000..f1b51afa
--- /dev/null
+++ b/lib/libunistring.rc
@@ -0,0 +1,38 @@
+/* Resources for unistring.dll */
+
+#include <winver.h>
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION PACKAGE_VERSION_MAJOR,PACKAGE_VERSION_MINOR,PACKAGE_VERSION_SUBMINOR,0
+ PRODUCTVERSION PACKAGE_VERSION_MAJOR,PACKAGE_VERSION_MINOR,PACKAGE_VERSION_SUBMINOR,0
+ FILEFLAGSMASK 0x3fL /* VS_FFI_FILEFLAGSMASK */
+#ifdef _DEBUG
+ FILEFLAGS 0x1L /* VS_FF_DEBUG */
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x10004L /* VOS_DOS_WINDOWS32 */
+ FILETYPE 0x2L /* VFT_DLL */
+ FILESUBTYPE 0x0L /* VFT2_UNKNOWN */
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "04090000" /* Lang = US English, Charset = ASCII */
+ BEGIN
+ VALUE "Comments", "This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 3 or later. You should have received a copy of the GNU Lesser General Public License along with this library; if not, see <http://www.gnu.org/licenses/>\0"
+ VALUE "CompanyName", "Free Software Foundation\0"
+ VALUE "FileDescription", "LGPLed libunistring for Windows NT/2000/XP/Vista and Windows 95/98/ME\0"
+ VALUE "FileVersion", PACKAGE_VERSION_STRING "\0"
+ VALUE "InternalName", "unistring.dll\0"
+ VALUE "LegalCopyright", "Copyright (C) 2001-2009\0"
+ VALUE "LegalTrademarks", "\0"
+ VALUE "OriginalFilename", "unistring.dll\0"
+ VALUE "ProductName", "libunistring: Unicode string library\0"
+ VALUE "ProductVersion", PACKAGE_VERSION_STRING "\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0409, 0 /* US English, ASCII */
+ END
+END
diff --git a/lib/libunistring.sym b/lib/libunistring.sym
new file mode 100644
index 00000000..b7e824ff
--- /dev/null
+++ b/lib/libunistring.sym
@@ -0,0 +1,559 @@
+UC_CATEGORY_C
+UC_CATEGORY_Cc
+UC_CATEGORY_Cf
+UC_CATEGORY_Cn
+UC_CATEGORY_Co
+UC_CATEGORY_Cs
+UC_CATEGORY_L
+UC_CATEGORY_Ll
+UC_CATEGORY_Lm
+UC_CATEGORY_Lo
+UC_CATEGORY_Lt
+UC_CATEGORY_Lu
+UC_CATEGORY_M
+UC_CATEGORY_Mc
+UC_CATEGORY_Me
+UC_CATEGORY_Mn
+UC_CATEGORY_N
+UC_CATEGORY_Nd
+UC_CATEGORY_Nl
+UC_CATEGORY_No
+UC_CATEGORY_P
+UC_CATEGORY_Pc
+UC_CATEGORY_Pd
+UC_CATEGORY_Pe
+UC_CATEGORY_Pf
+UC_CATEGORY_Pi
+UC_CATEGORY_Po
+UC_CATEGORY_Ps
+UC_CATEGORY_S
+UC_CATEGORY_Sc
+UC_CATEGORY_Sk
+UC_CATEGORY_Sm
+UC_CATEGORY_So
+UC_CATEGORY_Z
+UC_CATEGORY_Zl
+UC_CATEGORY_Zp
+UC_CATEGORY_Zs
+UC_PROPERTY_ALPHABETIC
+UC_PROPERTY_ASCII_HEX_DIGIT
+UC_PROPERTY_BIDI_ARABIC_DIGIT
+UC_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT
+UC_PROPERTY_BIDI_BLOCK_SEPARATOR
+UC_PROPERTY_BIDI_BOUNDARY_NEUTRAL
+UC_PROPERTY_BIDI_COMMON_SEPARATOR
+UC_PROPERTY_BIDI_CONTROL
+UC_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE
+UC_PROPERTY_BIDI_EUROPEAN_DIGIT
+UC_PROPERTY_BIDI_EUR_NUM_SEPARATOR
+UC_PROPERTY_BIDI_EUR_NUM_TERMINATOR
+UC_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT
+UC_PROPERTY_BIDI_LEFT_TO_RIGHT
+UC_PROPERTY_BIDI_NON_SPACING_MARK
+UC_PROPERTY_BIDI_OTHER_NEUTRAL
+UC_PROPERTY_BIDI_PDF
+UC_PROPERTY_BIDI_SEGMENT_SEPARATOR
+UC_PROPERTY_BIDI_WHITESPACE
+UC_PROPERTY_COMBINING
+UC_PROPERTY_COMPOSITE
+UC_PROPERTY_CURRENCY_SYMBOL
+UC_PROPERTY_DASH
+UC_PROPERTY_DECIMAL_DIGIT
+UC_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT
+UC_PROPERTY_DEPRECATED
+UC_PROPERTY_DIACRITIC
+UC_PROPERTY_EXTENDER
+UC_PROPERTY_FORMAT_CONTROL
+UC_PROPERTY_GRAPHEME_BASE
+UC_PROPERTY_GRAPHEME_EXTEND
+UC_PROPERTY_GRAPHEME_LINK
+UC_PROPERTY_HEX_DIGIT
+UC_PROPERTY_HYPHEN
+UC_PROPERTY_IDEOGRAPHIC
+UC_PROPERTY_IDS_BINARY_OPERATOR
+UC_PROPERTY_IDS_TRINARY_OPERATOR
+UC_PROPERTY_ID_CONTINUE
+UC_PROPERTY_ID_START
+UC_PROPERTY_IGNORABLE_CONTROL
+UC_PROPERTY_ISO_CONTROL
+UC_PROPERTY_JOIN_CONTROL
+UC_PROPERTY_LEFT_OF_PAIR
+UC_PROPERTY_LINE_SEPARATOR
+UC_PROPERTY_LOGICAL_ORDER_EXCEPTION
+UC_PROPERTY_LOWERCASE
+UC_PROPERTY_MATH
+UC_PROPERTY_NON_BREAK
+UC_PROPERTY_NOT_A_CHARACTER
+UC_PROPERTY_NUMERIC
+UC_PROPERTY_OTHER_ALPHABETIC
+UC_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT
+UC_PROPERTY_OTHER_GRAPHEME_EXTEND
+UC_PROPERTY_OTHER_ID_CONTINUE
+UC_PROPERTY_OTHER_ID_START
+UC_PROPERTY_OTHER_LOWERCASE
+UC_PROPERTY_OTHER_MATH
+UC_PROPERTY_OTHER_UPPERCASE
+UC_PROPERTY_PAIRED_PUNCTUATION
+UC_PROPERTY_PARAGRAPH_SEPARATOR
+UC_PROPERTY_PATTERN_SYNTAX
+UC_PROPERTY_PATTERN_WHITE_SPACE
+UC_PROPERTY_PRIVATE_USE
+UC_PROPERTY_PUNCTUATION
+UC_PROPERTY_QUOTATION_MARK
+UC_PROPERTY_RADICAL
+UC_PROPERTY_SENTENCE_TERMINAL
+UC_PROPERTY_SOFT_DOTTED
+UC_PROPERTY_SPACE
+UC_PROPERTY_TERMINAL_PUNCTUATION
+UC_PROPERTY_TITLECASE
+UC_PROPERTY_UNASSIGNED_CODE_VALUE
+UC_PROPERTY_UNIFIED_IDEOGRAPH
+UC_PROPERTY_UPPERCASE
+UC_PROPERTY_VARIATION_SELECTOR
+UC_PROPERTY_WHITE_SPACE
+UC_PROPERTY_XID_CONTINUE
+UC_PROPERTY_XID_START
+UC_PROPERTY_ZERO_WIDTH
+_libunistring_version
+locale_charset
+u16_asnprintf
+u16_asprintf
+u16_casecmp
+u16_casecoll
+u16_casefold
+u16_casexfrm
+u16_casing_prefix_context
+u16_casing_prefixes_context
+u16_casing_suffix_context
+u16_casing_suffixes_context
+u16_check
+u16_chr
+u16_cmp
+u16_cmp2
+u16_conv_from_encoding
+u16_conv_to_encoding
+u16_cpy
+u16_cpy_alloc
+u16_ct_casefold
+u16_ct_tolower
+u16_ct_totitle
+u16_ct_toupper
+u16_endswith
+u16_is_cased
+u16_is_casefolded
+u16_is_lowercase
+u16_is_titlecase
+u16_is_uppercase
+u16_mblen
+u16_mbsnlen
+u16_mbtouc
+u16_mbtouc_aux
+u16_mbtouc_unsafe
+u16_mbtouc_unsafe_aux
+u16_mbtoucr
+u16_move
+u16_next
+u16_normalize
+u16_normcmp
+u16_normcoll
+u16_normxfrm
+u16_possible_linebreaks
+u16_prev
+u16_set
+u16_snprintf
+u16_sprintf
+u16_startswith
+u16_stpcpy
+u16_stpncpy
+u16_strcat
+u16_strchr
+u16_strcmp
+u16_strcoll
+u16_strconv_from_encoding
+u16_strconv_from_locale
+u16_strconv_to_encoding
+u16_strconv_to_locale
+u16_strcpy
+u16_strcspn
+u16_strdup
+u16_strlen
+u16_strmblen
+u16_strmbtouc
+u16_strncat
+u16_strncmp
+u16_strncpy
+u16_strnlen
+u16_strpbrk
+u16_strrchr
+u16_strspn
+u16_strstr
+u16_strtok
+u16_strwidth
+u16_to_u32
+u16_to_u8
+u16_tolower
+u16_totitle
+u16_toupper
+u16_u16_asnprintf
+u16_u16_asprintf
+u16_u16_snprintf
+u16_u16_sprintf
+u16_u16_vasnprintf
+u16_u16_vasprintf
+u16_u16_vsnprintf
+u16_u16_vsprintf
+u16_uctomb
+u16_uctomb_aux
+u16_vasnprintf
+u16_vasprintf
+u16_vsnprintf
+u16_vsprintf
+u16_width
+u16_width_linebreaks
+u16_wordbreaks
+u32_asnprintf
+u32_asprintf
+u32_casecmp
+u32_casecoll
+u32_casefold
+u32_casexfrm
+u32_casing_prefix_context
+u32_casing_prefixes_context
+u32_casing_suffix_context
+u32_casing_suffixes_context
+u32_check
+u32_chr
+u32_cmp
+u32_cmp2
+u32_conv_from_encoding
+u32_conv_to_encoding
+u32_cpy
+u32_cpy_alloc
+u32_ct_casefold
+u32_ct_tolower
+u32_ct_totitle
+u32_ct_toupper
+u32_endswith
+u32_is_cased
+u32_is_casefolded
+u32_is_lowercase
+u32_is_titlecase
+u32_is_uppercase
+u32_mblen
+u32_mbsnlen
+u32_mbtouc
+u32_mbtouc_unsafe
+u32_mbtoucr
+u32_move
+u32_next
+u32_normalize
+u32_normcmp
+u32_normcoll
+u32_normxfrm
+u32_possible_linebreaks
+u32_prev
+u32_set
+u32_snprintf
+u32_sprintf
+u32_startswith
+u32_stpcpy
+u32_stpncpy
+u32_strcat
+u32_strchr
+u32_strcmp
+u32_strcoll
+u32_strconv_from_encoding
+u32_strconv_from_locale
+u32_strconv_to_encoding
+u32_strconv_to_locale
+u32_strcpy
+u32_strcspn
+u32_strdup
+u32_strlen
+u32_strmblen
+u32_strmbtouc
+u32_strncat
+u32_strncmp
+u32_strncpy
+u32_strnlen
+u32_strpbrk
+u32_strrchr
+u32_strspn
+u32_strstr
+u32_strtok
+u32_strwidth
+u32_to_u16
+u32_to_u8
+u32_tolower
+u32_totitle
+u32_toupper
+u32_u32_asnprintf
+u32_u32_asprintf
+u32_u32_snprintf
+u32_u32_sprintf
+u32_u32_vasnprintf
+u32_u32_vasprintf
+u32_u32_vsnprintf
+u32_u32_vsprintf
+u32_uctomb
+u32_vasnprintf
+u32_vasprintf
+u32_vsnprintf
+u32_vsprintf
+u32_width
+u32_width_linebreaks
+u32_wordbreaks
+u8_asnprintf
+u8_asprintf
+u8_casecmp
+u8_casecoll
+u8_casefold
+u8_casexfrm
+u8_casing_prefix_context
+u8_casing_prefixes_context
+u8_casing_suffix_context
+u8_casing_suffixes_context
+u8_check
+u8_chr
+u8_cmp
+u8_cmp2
+u8_conv_from_encoding
+u8_conv_to_encoding
+u8_cpy
+u8_cpy_alloc
+u8_ct_casefold
+u8_ct_tolower
+u8_ct_totitle
+u8_ct_toupper
+u8_endswith
+u8_is_cased
+u8_is_casefolded
+u8_is_lowercase
+u8_is_titlecase
+u8_is_uppercase
+u8_mblen
+u8_mbsnlen
+u8_mbtouc
+u8_mbtouc_aux
+u8_mbtouc_unsafe
+u8_mbtouc_unsafe_aux
+u8_mbtoucr
+u8_move
+u8_next
+u8_normalize
+u8_normcmp
+u8_normcoll
+u8_normxfrm
+u8_possible_linebreaks
+u8_prev
+u8_set
+u8_snprintf
+u8_sprintf
+u8_startswith
+u8_stpcpy
+u8_stpncpy
+u8_strcat
+u8_strchr
+u8_strcmp
+u8_strcoll
+u8_strconv_from_encoding
+u8_strconv_from_locale
+u8_strconv_to_encoding
+u8_strconv_to_locale
+u8_strcpy
+u8_strcspn
+u8_strdup
+u8_strlen
+u8_strmblen
+u8_strmbtouc
+u8_strncat
+u8_strncmp
+u8_strncpy
+u8_strnlen
+u8_strpbrk
+u8_strrchr
+u8_strspn
+u8_strstr
+u8_strtok
+u8_strwidth
+u8_to_u16
+u8_to_u32
+u8_tolower
+u8_totitle
+u8_toupper
+u8_u8_asnprintf
+u8_u8_asprintf
+u8_u8_snprintf
+u8_u8_sprintf
+u8_u8_vasnprintf
+u8_u8_vasprintf
+u8_u8_vsnprintf
+u8_u8_vsprintf
+u8_uctomb
+u8_uctomb_aux
+u8_vasnprintf
+u8_vasprintf
+u8_vsnprintf
+u8_vsprintf
+u8_width
+u8_width_linebreaks
+u8_wordbreaks
+uc_all_blocks
+uc_all_scripts
+uc_bidi_category
+uc_bidi_category_byname
+uc_bidi_category_name
+uc_block
+uc_c_ident_category
+uc_canonical_decomposition
+uc_combining_class
+uc_composition
+uc_decimal_value
+uc_decomposition
+uc_digit_value
+uc_general_category
+uc_general_category_and
+uc_general_category_and_not
+uc_general_category_byname
+uc_general_category_name
+uc_general_category_or
+uc_is_alnum
+uc_is_alpha
+uc_is_bidi_category
+uc_is_blank
+uc_is_block
+uc_is_c_whitespace
+uc_is_cntrl
+uc_is_digit
+uc_is_general_category
+uc_is_general_category_withtable
+uc_is_graph
+uc_is_java_whitespace
+uc_is_lower
+uc_is_print
+uc_is_property
+uc_is_property_alphabetic
+uc_is_property_ascii_hex_digit
+uc_is_property_bidi_arabic_digit
+uc_is_property_bidi_arabic_right_to_left
+uc_is_property_bidi_block_separator
+uc_is_property_bidi_boundary_neutral
+uc_is_property_bidi_common_separator
+uc_is_property_bidi_control
+uc_is_property_bidi_embedding_or_override
+uc_is_property_bidi_eur_num_separator
+uc_is_property_bidi_eur_num_terminator
+uc_is_property_bidi_european_digit
+uc_is_property_bidi_hebrew_right_to_left
+uc_is_property_bidi_left_to_right
+uc_is_property_bidi_non_spacing_mark
+uc_is_property_bidi_other_neutral
+uc_is_property_bidi_pdf
+uc_is_property_bidi_segment_separator
+uc_is_property_bidi_whitespace
+uc_is_property_combining
+uc_is_property_composite
+uc_is_property_currency_symbol
+uc_is_property_dash
+uc_is_property_decimal_digit
+uc_is_property_default_ignorable_code_point
+uc_is_property_deprecated
+uc_is_property_diacritic
+uc_is_property_extender
+uc_is_property_format_control
+uc_is_property_grapheme_base
+uc_is_property_grapheme_extend
+uc_is_property_grapheme_link
+uc_is_property_hex_digit
+uc_is_property_hyphen
+uc_is_property_id_continue
+uc_is_property_id_start
+uc_is_property_ideographic
+uc_is_property_ids_binary_operator
+uc_is_property_ids_trinary_operator
+uc_is_property_ignorable_control
+uc_is_property_iso_control
+uc_is_property_join_control
+uc_is_property_left_of_pair
+uc_is_property_line_separator
+uc_is_property_logical_order_exception
+uc_is_property_lowercase
+uc_is_property_math
+uc_is_property_non_break
+uc_is_property_not_a_character
+uc_is_property_numeric
+uc_is_property_other_alphabetic
+uc_is_property_other_default_ignorable_code_point
+uc_is_property_other_grapheme_extend
+uc_is_property_other_id_continue
+uc_is_property_other_id_start
+uc_is_property_other_lowercase
+uc_is_property_other_math
+uc_is_property_other_uppercase
+uc_is_property_paired_punctuation
+uc_is_property_paragraph_separator
+uc_is_property_pattern_syntax
+uc_is_property_pattern_white_space
+uc_is_property_private_use
+uc_is_property_punctuation
+uc_is_property_quotation_mark
+uc_is_property_radical
+uc_is_property_sentence_terminal
+uc_is_property_soft_dotted
+uc_is_property_space
+uc_is_property_terminal_punctuation
+uc_is_property_titlecase
+uc_is_property_unassigned_code_value
+uc_is_property_unified_ideograph
+uc_is_property_uppercase
+uc_is_property_variation_selector
+uc_is_property_white_space
+uc_is_property_xid_continue
+uc_is_property_xid_start
+uc_is_property_zero_width
+uc_is_punct
+uc_is_script
+uc_is_space
+uc_is_upper
+uc_is_xdigit
+uc_java_ident_category
+uc_locale_language
+uc_mirror_char
+uc_numeric_value
+uc_property_byname
+uc_script
+uc_script_byname
+uc_tolower
+uc_totitle
+uc_toupper
+uc_width
+uc_wordbreak_property
+ulc_asnprintf
+ulc_asprintf
+ulc_casecmp
+ulc_casecoll
+ulc_casexfrm
+ulc_fprintf
+ulc_possible_linebreaks
+ulc_snprintf
+ulc_sprintf
+ulc_vasnprintf
+ulc_vasprintf
+ulc_vfprintf
+ulc_vsnprintf
+ulc_vsprintf
+ulc_width_linebreaks
+ulc_wordbreaks
+unicase_empty_prefix_context
+unicase_empty_suffix_context
+unicode_character_name
+unicode_name_character
+uninorm_decomposing_form
+uninorm_filter_create
+uninorm_filter_flush
+uninorm_filter_free
+uninorm_filter_write
+uninorm_nfc
+uninorm_nfd
+uninorm_nfkc
+uninorm_nfkd
diff --git a/lib/localcharset.c b/lib/localcharset.c
new file mode 100644
index 00000000..93da1707
--- /dev/null
+++ b/lib/localcharset.c
@@ -0,0 +1,499 @@
+/* Determine a canonical name for the current locale's character encoding.
+
+ Copyright (C) 2000-2006, 2008-2009 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "localcharset.h"
+
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#if defined __APPLE__ && defined __MACH__ && HAVE_LANGINFO_CODESET
+# define DARWIN7 /* Darwin 7 or newer, i.e. MacOS X 10.3 or newer */
+#endif
+
+#if defined _WIN32 || defined __WIN32__
+# define WIN32_NATIVE
+#endif
+
+#if defined __EMX__
+/* Assume EMX program runs on OS/2, even if compiled under DOS. */
+# ifndef OS2
+# define OS2
+# endif
+#endif
+
+#if !defined WIN32_NATIVE
+# if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+# else
+# if 0 /* see comment below */
+# include <locale.h>
+# endif
+# endif
+# ifdef __CYGWIN__
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+# endif
+#elif defined WIN32_NATIVE
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+#endif
+#if defined OS2
+# define INCL_DOS
+# include <os2.h>
+#endif
+
+#if ENABLE_RELOCATABLE
+# include "relocatable.h"
+#else
+# define relocate(pathname) (pathname)
+#endif
+
+/* Get LIBDIR. */
+#ifndef LIBDIR
+# include "configmake.h"
+#endif
+
+#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
+ /* Win32, Cygwin, OS/2, DOS */
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+#endif
+
+#ifndef DIRECTORY_SEPARATOR
+# define DIRECTORY_SEPARATOR '/'
+#endif
+
+#ifndef ISSLASH
+# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
+#endif
+
+#if HAVE_DECL_GETC_UNLOCKED
+# undef getc
+# define getc getc_unlocked
+#endif
+
+/* The following static variable is declared 'volatile' to avoid a
+ possible multithread problem in the function get_charset_aliases. If we
+ are running in a threaded environment, and if two threads initialize
+ 'charset_aliases' simultaneously, both will produce the same value,
+ and everything will be ok if the two assignments to 'charset_aliases'
+ are atomic. But I don't know what will happen if the two assignments mix. */
+#if __STDC__ != 1
+# define volatile /* empty */
+#endif
+/* Pointer to the contents of the charset.alias file, if it has already been
+ read, else NULL. Its format is:
+ ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */
+static const char * volatile charset_aliases;
+
+/* Return a pointer to the contents of the charset.alias file. */
+static const char *
+get_charset_aliases (void)
+{
+ const char *cp;
+
+ cp = charset_aliases;
+ if (cp == NULL)
+ {
+#if !(defined DARWIN7 || defined VMS || defined WIN32_NATIVE || defined __CYGWIN__)
+ FILE *fp;
+ const char *dir;
+ const char *base = "charset.alias";
+ char *file_name;
+
+ /* Make it possible to override the charset.alias location. This is
+ necessary for running the testsuite before "make install". */
+ dir = getenv ("CHARSETALIASDIR");
+ if (dir == NULL || dir[0] == '\0')
+ dir = relocate (LIBDIR);
+
+ /* Concatenate dir and base into freshly allocated file_name. */
+ {
+ size_t dir_len = strlen (dir);
+ size_t base_len = strlen (base);
+ int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
+ file_name = (char *) malloc (dir_len + add_slash + base_len + 1);
+ if (file_name != NULL)
+ {
+ memcpy (file_name, dir, dir_len);
+ if (add_slash)
+ file_name[dir_len] = DIRECTORY_SEPARATOR;
+ memcpy (file_name + dir_len + add_slash, base, base_len + 1);
+ }
+ }
+
+ if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL)
+ /* Out of memory or file not found, treat it as empty. */
+ cp = "";
+ else
+ {
+ /* Parse the file's contents. */
+ char *res_ptr = NULL;
+ size_t res_size = 0;
+
+ for (;;)
+ {
+ int c;
+ char buf1[50+1];
+ char buf2[50+1];
+ size_t l1, l2;
+ char *old_res_ptr;
+
+ c = getc (fp);
+ if (c == EOF)
+ break;
+ if (c == '\n' || c == ' ' || c == '\t')
+ continue;
+ if (c == '#')
+ {
+ /* Skip comment, to end of line. */
+ do
+ c = getc (fp);
+ while (!(c == EOF || c == '\n'));
+ if (c == EOF)
+ break;
+ continue;
+ }
+ ungetc (c, fp);
+ if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
+ break;
+ l1 = strlen (buf1);
+ l2 = strlen (buf2);
+ old_res_ptr = res_ptr;
+ if (res_size == 0)
+ {
+ res_size = l1 + 1 + l2 + 1;
+ res_ptr = (char *) malloc (res_size + 1);
+ }
+ else
+ {
+ res_size += l1 + 1 + l2 + 1;
+ res_ptr = (char *) realloc (res_ptr, res_size + 1);
+ }
+ if (res_ptr == NULL)
+ {
+ /* Out of memory. */
+ res_size = 0;
+ if (old_res_ptr != NULL)
+ free (old_res_ptr);
+ break;
+ }
+ strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
+ strcpy (res_ptr + res_size - (l2 + 1), buf2);
+ }
+ fclose (fp);
+ if (res_size == 0)
+ cp = "";
+ else
+ {
+ *(res_ptr + res_size) = '\0';
+ cp = res_ptr;
+ }
+ }
+
+ if (file_name != NULL)
+ free (file_name);
+
+#else
+
+# if defined DARWIN7
+ /* To avoid the trouble of installing a file that is shared by many
+ GNU packages -- many packaging systems have problems with this --,
+ simply inline the aliases here. */
+ cp = "ISO8859-1" "\0" "ISO-8859-1" "\0"
+ "ISO8859-2" "\0" "ISO-8859-2" "\0"
+ "ISO8859-4" "\0" "ISO-8859-4" "\0"
+ "ISO8859-5" "\0" "ISO-8859-5" "\0"
+ "ISO8859-7" "\0" "ISO-8859-7" "\0"
+ "ISO8859-9" "\0" "ISO-8859-9" "\0"
+ "ISO8859-13" "\0" "ISO-8859-13" "\0"
+ "ISO8859-15" "\0" "ISO-8859-15" "\0"
+ "KOI8-R" "\0" "KOI8-R" "\0"
+ "KOI8-U" "\0" "KOI8-U" "\0"
+ "CP866" "\0" "CP866" "\0"
+ "CP949" "\0" "CP949" "\0"
+ "CP1131" "\0" "CP1131" "\0"
+ "CP1251" "\0" "CP1251" "\0"
+ "eucCN" "\0" "GB2312" "\0"
+ "GB2312" "\0" "GB2312" "\0"
+ "eucJP" "\0" "EUC-JP" "\0"
+ "eucKR" "\0" "EUC-KR" "\0"
+ "Big5" "\0" "BIG5" "\0"
+ "Big5HKSCS" "\0" "BIG5-HKSCS" "\0"
+ "GBK" "\0" "GBK" "\0"
+ "GB18030" "\0" "GB18030" "\0"
+ "SJIS" "\0" "SHIFT_JIS" "\0"
+ "ARMSCII-8" "\0" "ARMSCII-8" "\0"
+ "PT154" "\0" "PT154" "\0"
+ /*"ISCII-DEV" "\0" "?" "\0"*/
+ "*" "\0" "UTF-8" "\0";
+# endif
+
+# if defined VMS
+ /* To avoid the troubles of an extra file charset.alias_vms in the
+ sources of many GNU packages, simply inline the aliases here. */
+ /* The list of encodings is taken from the OpenVMS 7.3-1 documentation
+ "Compaq C Run-Time Library Reference Manual for OpenVMS systems"
+ section 10.7 "Handling Different Character Sets". */
+ cp = "ISO8859-1" "\0" "ISO-8859-1" "\0"
+ "ISO8859-2" "\0" "ISO-8859-2" "\0"
+ "ISO8859-5" "\0" "ISO-8859-5" "\0"
+ "ISO8859-7" "\0" "ISO-8859-7" "\0"
+ "ISO8859-8" "\0" "ISO-8859-8" "\0"
+ "ISO8859-9" "\0" "ISO-8859-9" "\0"
+ /* Japanese */
+ "eucJP" "\0" "EUC-JP" "\0"
+ "SJIS" "\0" "SHIFT_JIS" "\0"
+ "DECKANJI" "\0" "DEC-KANJI" "\0"
+ "SDECKANJI" "\0" "EUC-JP" "\0"
+ /* Chinese */
+ "eucTW" "\0" "EUC-TW" "\0"
+ "DECHANYU" "\0" "DEC-HANYU" "\0"
+ "DECHANZI" "\0" "GB2312" "\0"
+ /* Korean */
+ "DECKOREAN" "\0" "EUC-KR" "\0";
+# endif
+
+# if defined WIN32_NATIVE || defined __CYGWIN__
+ /* To avoid the troubles of installing a separate file in the same
+ directory as the DLL and of retrieving the DLL's directory at
+ runtime, simply inline the aliases here. */
+
+ cp = "CP936" "\0" "GBK" "\0"
+ "CP1361" "\0" "JOHAB" "\0"
+ "CP20127" "\0" "ASCII" "\0"
+ "CP20866" "\0" "KOI8-R" "\0"
+ "CP20936" "\0" "GB2312" "\0"
+ "CP21866" "\0" "KOI8-RU" "\0"
+ "CP28591" "\0" "ISO-8859-1" "\0"
+ "CP28592" "\0" "ISO-8859-2" "\0"
+ "CP28593" "\0" "ISO-8859-3" "\0"
+ "CP28594" "\0" "ISO-8859-4" "\0"
+ "CP28595" "\0" "ISO-8859-5" "\0"
+ "CP28596" "\0" "ISO-8859-6" "\0"
+ "CP28597" "\0" "ISO-8859-7" "\0"
+ "CP28598" "\0" "ISO-8859-8" "\0"
+ "CP28599" "\0" "ISO-8859-9" "\0"
+ "CP28605" "\0" "ISO-8859-15" "\0"
+ "CP38598" "\0" "ISO-8859-8" "\0"
+ "CP51932" "\0" "EUC-JP" "\0"
+ "CP51936" "\0" "GB2312" "\0"
+ "CP51949" "\0" "EUC-KR" "\0"
+ "CP51950" "\0" "EUC-TW" "\0"
+ "CP54936" "\0" "GB18030" "\0"
+ "CP65001" "\0" "UTF-8" "\0";
+# endif
+#endif
+
+ charset_aliases = cp;
+ }
+
+ return cp;
+}
+
+/* Determine the current locale's character encoding, and canonicalize it
+ into one of the canonical names listed in config.charset.
+ The result must not be freed; it is statically allocated.
+ If the canonical name cannot be determined, the result is a non-canonical
+ name. */
+
+#ifdef STATIC
+STATIC
+#endif
+const char *
+locale_charset (void)
+{
+ const char *codeset;
+ const char *aliases;
+
+#if !(defined WIN32_NATIVE || defined OS2)
+
+# if HAVE_LANGINFO_CODESET
+
+ /* Most systems support nl_langinfo (CODESET) nowadays. */
+ codeset = nl_langinfo (CODESET);
+
+# ifdef __CYGWIN__
+ /* Cygwin 2006 does not have locales. nl_langinfo (CODESET) always
+ returns "US-ASCII". As long as this is not fixed, return the suffix
+ of the locale name from the environment variables (if present) or
+ the codepage as a number. */
+ if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0)
+ {
+ const char *locale;
+ static char buf[2 + 10 + 1];
+
+ locale = getenv ("LC_ALL");
+ if (locale == NULL || locale[0] == '\0')
+ {
+ locale = getenv ("LC_CTYPE");
+ if (locale == NULL || locale[0] == '\0')
+ locale = getenv ("LANG");
+ }
+ if (locale != NULL && locale[0] != '\0')
+ {
+ /* If the locale name contains an encoding after the dot, return
+ it. */
+ const char *dot = strchr (locale, '.');
+
+ if (dot != NULL)
+ {
+ const char *modifier;
+
+ dot++;
+ /* Look for the possible @... trailer and remove it, if any. */
+ modifier = strchr (dot, '@');
+ if (modifier == NULL)
+ return dot;
+ if (modifier - dot < sizeof (buf))
+ {
+ memcpy (buf, dot, modifier - dot);
+ buf [modifier - dot] = '\0';
+ return buf;
+ }
+ }
+ }
+
+ /* Woe32 has a function returning the locale's codepage as a number. */
+ sprintf (buf, "CP%u", GetACP ());
+ codeset = buf;
+ }
+# endif
+
+# else
+
+ /* On old systems which lack it, use setlocale or getenv. */
+ const char *locale = NULL;
+
+ /* But most old systems don't have a complete set of locales. Some
+ (like SunOS 4 or DJGPP) have only the C locale. Therefore we don't
+ use setlocale here; it would return "C" when it doesn't support the
+ locale name the user has set. */
+# if 0
+ locale = setlocale (LC_CTYPE, NULL);
+# endif
+ if (locale == NULL || locale[0] == '\0')
+ {
+ locale = getenv ("LC_ALL");
+ if (locale == NULL || locale[0] == '\0')
+ {
+ locale = getenv ("LC_CTYPE");
+ if (locale == NULL || locale[0] == '\0')
+ locale = getenv ("LANG");
+ }
+ }
+
+ /* On some old systems, one used to set locale = "iso8859_1". On others,
+ you set it to "language_COUNTRY.charset". In any case, we resolve it
+ through the charset.alias file. */
+ codeset = locale;
+
+# endif
+
+#elif defined WIN32_NATIVE
+
+ static char buf[2 + 10 + 1];
+
+ /* Woe32 has a function returning the locale's codepage as a number. */
+ sprintf (buf, "CP%u", GetACP ());
+ codeset = buf;
+
+#elif defined OS2
+
+ const char *locale;
+ static char buf[2 + 10 + 1];
+ ULONG cp[3];
+ ULONG cplen;
+
+ /* Allow user to override the codeset, as set in the operating system,
+ with standard language environment variables. */
+ locale = getenv ("LC_ALL");
+ if (locale == NULL || locale[0] == '\0')
+ {
+ locale = getenv ("LC_CTYPE");
+ if (locale == NULL || locale[0] == '\0')
+ locale = getenv ("LANG");
+ }
+ if (locale != NULL && locale[0] != '\0')
+ {
+ /* If the locale name contains an encoding after the dot, return it. */
+ const char *dot = strchr (locale, '.');
+
+ if (dot != NULL)
+ {
+ const char *modifier;
+
+ dot++;
+ /* Look for the possible @... trailer and remove it, if any. */
+ modifier = strchr (dot, '@');
+ if (modifier == NULL)
+ return dot;
+ if (modifier - dot < sizeof (buf))
+ {
+ memcpy (buf, dot, modifier - dot);
+ buf [modifier - dot] = '\0';
+ return buf;
+ }
+ }
+
+ /* Resolve through the charset.alias file. */
+ codeset = locale;
+ }
+ else
+ {
+ /* OS/2 has a function returning the locale's codepage as a number. */
+ if (DosQueryCp (sizeof (cp), cp, &cplen))
+ codeset = "";
+ else
+ {
+ sprintf (buf, "CP%u", cp[0]);
+ codeset = buf;
+ }
+ }
+
+#endif
+
+ if (codeset == NULL)
+ /* The canonical name cannot be determined. */
+ codeset = "";
+
+ /* Resolve alias. */
+ for (aliases = get_charset_aliases ();
+ *aliases != '\0';
+ aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1)
+ if (strcmp (codeset, aliases) == 0
+ || (aliases[0] == '*' && aliases[1] == '\0'))
+ {
+ codeset = aliases + strlen (aliases) + 1;
+ break;
+ }
+
+ /* Don't return an empty string. GNU libc and GNU libiconv interpret
+ the empty string as denoting "the locale's character encoding",
+ thus GNU libiconv would call this function a second time. */
+ if (codeset[0] == '\0')
+ codeset = "ASCII";
+
+ return codeset;
+}
diff --git a/lib/localcharset.h b/lib/localcharset.h
new file mode 100644
index 00000000..1772a50f
--- /dev/null
+++ b/lib/localcharset.h
@@ -0,0 +1,41 @@
+/* Determine a canonical name for the current locale's character encoding.
+ Copyright (C) 2000-2003 Free Software Foundation, Inc.
+ This file is part of the GNU CHARSET Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+#ifndef _LOCALCHARSET_H
+#define _LOCALCHARSET_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Determine the current locale's character encoding, and canonicalize it
+ into one of the canonical names listed in config.charset.
+ The result must not be freed; it is statically allocated.
+ If the canonical name cannot be determined, the result is a non-canonical
+ name. */
+extern const char * locale_charset (void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _LOCALCHARSET_H */
diff --git a/lib/localename.c b/lib/localename.c
new file mode 100644
index 00000000..9f4c1819
--- /dev/null
+++ b/lib/localename.c
@@ -0,0 +1,1692 @@
+/* Determine name of the currently selected locale.
+ Copyright (C) 1995-1999, 2000-2008 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library 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. */
+
+/* Written by Ulrich Drepper <drepper@gnu.org>, 1995. */
+/* Win32 code written by Tor Lillqvist <tml@iki.fi>. */
+/* MacOS X code written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#ifdef IN_LIBINTL
+# include "gettextP.h"
+#else
+# include "localename.h"
+#endif
+
+#include <stdlib.h>
+#include <locale.h>
+
+#if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE
+# include <string.h>
+# include <CoreFoundation/CFString.h>
+# if HAVE_CFLOCALECOPYCURRENT
+# include <CoreFoundation/CFLocale.h>
+# elif HAVE_CFPREFERENCESCOPYAPPVALUE
+# include <CoreFoundation/CFPreferences.h>
+# endif
+#endif
+
+#if defined _WIN32 || defined __WIN32__
+# define WIN32_NATIVE
+#endif
+
+#ifdef WIN32_NATIVE
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+/* List of language codes, sorted by value:
+ 0x01 LANG_ARABIC
+ 0x02 LANG_BULGARIAN
+ 0x03 LANG_CATALAN
+ 0x04 LANG_CHINESE
+ 0x05 LANG_CZECH
+ 0x06 LANG_DANISH
+ 0x07 LANG_GERMAN
+ 0x08 LANG_GREEK
+ 0x09 LANG_ENGLISH
+ 0x0a LANG_SPANISH
+ 0x0b LANG_FINNISH
+ 0x0c LANG_FRENCH
+ 0x0d LANG_HEBREW
+ 0x0e LANG_HUNGARIAN
+ 0x0f LANG_ICELANDIC
+ 0x10 LANG_ITALIAN
+ 0x11 LANG_JAPANESE
+ 0x12 LANG_KOREAN
+ 0x13 LANG_DUTCH
+ 0x14 LANG_NORWEGIAN
+ 0x15 LANG_POLISH
+ 0x16 LANG_PORTUGUESE
+ 0x17 LANG_RHAETO_ROMANCE
+ 0x18 LANG_ROMANIAN
+ 0x19 LANG_RUSSIAN
+ 0x1a LANG_CROATIAN == LANG_SERBIAN
+ 0x1b LANG_SLOVAK
+ 0x1c LANG_ALBANIAN
+ 0x1d LANG_SWEDISH
+ 0x1e LANG_THAI
+ 0x1f LANG_TURKISH
+ 0x20 LANG_URDU
+ 0x21 LANG_INDONESIAN
+ 0x22 LANG_UKRAINIAN
+ 0x23 LANG_BELARUSIAN
+ 0x24 LANG_SLOVENIAN
+ 0x25 LANG_ESTONIAN
+ 0x26 LANG_LATVIAN
+ 0x27 LANG_LITHUANIAN
+ 0x28 LANG_TAJIK
+ 0x29 LANG_FARSI
+ 0x2a LANG_VIETNAMESE
+ 0x2b LANG_ARMENIAN
+ 0x2c LANG_AZERI
+ 0x2d LANG_BASQUE
+ 0x2e LANG_SORBIAN
+ 0x2f LANG_MACEDONIAN
+ 0x30 LANG_SUTU
+ 0x31 LANG_TSONGA
+ 0x32 LANG_TSWANA
+ 0x33 LANG_VENDA
+ 0x34 LANG_XHOSA
+ 0x35 LANG_ZULU
+ 0x36 LANG_AFRIKAANS
+ 0x37 LANG_GEORGIAN
+ 0x38 LANG_FAEROESE
+ 0x39 LANG_HINDI
+ 0x3a LANG_MALTESE
+ 0x3b LANG_SAAMI
+ 0x3c LANG_GAELIC
+ 0x3d LANG_YIDDISH
+ 0x3e LANG_MALAY
+ 0x3f LANG_KAZAK
+ 0x40 LANG_KYRGYZ
+ 0x41 LANG_SWAHILI
+ 0x42 LANG_TURKMEN
+ 0x43 LANG_UZBEK
+ 0x44 LANG_TATAR
+ 0x45 LANG_BENGALI
+ 0x46 LANG_PUNJABI
+ 0x47 LANG_GUJARATI
+ 0x48 LANG_ORIYA
+ 0x49 LANG_TAMIL
+ 0x4a LANG_TELUGU
+ 0x4b LANG_KANNADA
+ 0x4c LANG_MALAYALAM
+ 0x4d LANG_ASSAMESE
+ 0x4e LANG_MARATHI
+ 0x4f LANG_SANSKRIT
+ 0x50 LANG_MONGOLIAN
+ 0x51 LANG_TIBETAN
+ 0x52 LANG_WELSH
+ 0x53 LANG_CAMBODIAN
+ 0x54 LANG_LAO
+ 0x55 LANG_BURMESE
+ 0x56 LANG_GALICIAN
+ 0x57 LANG_KONKANI
+ 0x58 LANG_MANIPURI
+ 0x59 LANG_SINDHI
+ 0x5a LANG_SYRIAC
+ 0x5b LANG_SINHALESE
+ 0x5c LANG_CHEROKEE
+ 0x5d LANG_INUKTITUT
+ 0x5e LANG_AMHARIC
+ 0x5f LANG_TAMAZIGHT
+ 0x60 LANG_KASHMIRI
+ 0x61 LANG_NEPALI
+ 0x62 LANG_FRISIAN
+ 0x63 LANG_PASHTO
+ 0x64 LANG_TAGALOG
+ 0x65 LANG_DIVEHI
+ 0x66 LANG_EDO
+ 0x67 LANG_FULFULDE
+ 0x68 LANG_HAUSA
+ 0x69 LANG_IBIBIO
+ 0x6a LANG_YORUBA
+ 0x70 LANG_IGBO
+ 0x71 LANG_KANURI
+ 0x72 LANG_OROMO
+ 0x73 LANG_TIGRINYA
+ 0x74 LANG_GUARANI
+ 0x75 LANG_HAWAIIAN
+ 0x76 LANG_LATIN
+ 0x77 LANG_SOMALI
+ 0x78 LANG_YI
+ 0x79 LANG_PAPIAMENTU
+*/
+/* Mingw headers don't have latest language and sublanguage codes. */
+# ifndef LANG_AFRIKAANS
+# define LANG_AFRIKAANS 0x36
+# endif
+# ifndef LANG_ALBANIAN
+# define LANG_ALBANIAN 0x1c
+# endif
+# ifndef LANG_AMHARIC
+# define LANG_AMHARIC 0x5e
+# endif
+# ifndef LANG_ARABIC
+# define LANG_ARABIC 0x01
+# endif
+# ifndef LANG_ARMENIAN
+# define LANG_ARMENIAN 0x2b
+# endif
+# ifndef LANG_ASSAMESE
+# define LANG_ASSAMESE 0x4d
+# endif
+# ifndef LANG_AZERI
+# define LANG_AZERI 0x2c
+# endif
+# ifndef LANG_BASQUE
+# define LANG_BASQUE 0x2d
+# endif
+# ifndef LANG_BELARUSIAN
+# define LANG_BELARUSIAN 0x23
+# endif
+# ifndef LANG_BENGALI
+# define LANG_BENGALI 0x45
+# endif
+# ifndef LANG_BURMESE
+# define LANG_BURMESE 0x55
+# endif
+# ifndef LANG_CAMBODIAN
+# define LANG_CAMBODIAN 0x53
+# endif
+# ifndef LANG_CATALAN
+# define LANG_CATALAN 0x03
+# endif
+# ifndef LANG_CHEROKEE
+# define LANG_CHEROKEE 0x5c
+# endif
+# ifndef LANG_DIVEHI
+# define LANG_DIVEHI 0x65
+# endif
+# ifndef LANG_EDO
+# define LANG_EDO 0x66
+# endif
+# ifndef LANG_ESTONIAN
+# define LANG_ESTONIAN 0x25
+# endif
+# ifndef LANG_FAEROESE
+# define LANG_FAEROESE 0x38
+# endif
+# ifndef LANG_FARSI
+# define LANG_FARSI 0x29
+# endif
+# ifndef LANG_FRISIAN
+# define LANG_FRISIAN 0x62
+# endif
+# ifndef LANG_FULFULDE
+# define LANG_FULFULDE 0x67
+# endif
+# ifndef LANG_GAELIC
+# define LANG_GAELIC 0x3c
+# endif
+# ifndef LANG_GALICIAN
+# define LANG_GALICIAN 0x56
+# endif
+# ifndef LANG_GEORGIAN
+# define LANG_GEORGIAN 0x37
+# endif
+# ifndef LANG_GUARANI
+# define LANG_GUARANI 0x74
+# endif
+# ifndef LANG_GUJARATI
+# define LANG_GUJARATI 0x47
+# endif
+# ifndef LANG_HAUSA
+# define LANG_HAUSA 0x68
+# endif
+# ifndef LANG_HAWAIIAN
+# define LANG_HAWAIIAN 0x75
+# endif
+# ifndef LANG_HEBREW
+# define LANG_HEBREW 0x0d
+# endif
+# ifndef LANG_HINDI
+# define LANG_HINDI 0x39
+# endif
+# ifndef LANG_IBIBIO
+# define LANG_IBIBIO 0x69
+# endif
+# ifndef LANG_IGBO
+# define LANG_IGBO 0x70
+# endif
+# ifndef LANG_INDONESIAN
+# define LANG_INDONESIAN 0x21
+# endif
+# ifndef LANG_INUKTITUT
+# define LANG_INUKTITUT 0x5d
+# endif
+# ifndef LANG_KANNADA
+# define LANG_KANNADA 0x4b
+# endif
+# ifndef LANG_KANURI
+# define LANG_KANURI 0x71
+# endif
+# ifndef LANG_KASHMIRI
+# define LANG_KASHMIRI 0x60
+# endif
+# ifndef LANG_KAZAK
+# define LANG_KAZAK 0x3f
+# endif
+# ifndef LANG_KONKANI
+# define LANG_KONKANI 0x57
+# endif
+# ifndef LANG_KYRGYZ
+# define LANG_KYRGYZ 0x40
+# endif
+# ifndef LANG_LAO
+# define LANG_LAO 0x54
+# endif
+# ifndef LANG_LATIN
+# define LANG_LATIN 0x76
+# endif
+# ifndef LANG_LATVIAN
+# define LANG_LATVIAN 0x26
+# endif
+# ifndef LANG_LITHUANIAN
+# define LANG_LITHUANIAN 0x27
+# endif
+# ifndef LANG_MACEDONIAN
+# define LANG_MACEDONIAN 0x2f
+# endif
+# ifndef LANG_MALAY
+# define LANG_MALAY 0x3e
+# endif
+# ifndef LANG_MALAYALAM
+# define LANG_MALAYALAM 0x4c
+# endif
+# ifndef LANG_MALTESE
+# define LANG_MALTESE 0x3a
+# endif
+# ifndef LANG_MANIPURI
+# define LANG_MANIPURI 0x58
+# endif
+# ifndef LANG_MAORI
+# define LANG_MAORI 0x81
+# endif
+# ifndef LANG_MARATHI
+# define LANG_MARATHI 0x4e
+# endif
+# ifndef LANG_MONGOLIAN
+# define LANG_MONGOLIAN 0x50
+# endif
+# ifndef LANG_NEPALI
+# define LANG_NEPALI 0x61
+# endif
+# ifndef LANG_ORIYA
+# define LANG_ORIYA 0x48
+# endif
+# ifndef LANG_OROMO
+# define LANG_OROMO 0x72
+# endif
+# ifndef LANG_PAPIAMENTU
+# define LANG_PAPIAMENTU 0x79
+# endif
+# ifndef LANG_PASHTO
+# define LANG_PASHTO 0x63
+# endif
+# ifndef LANG_PUNJABI
+# define LANG_PUNJABI 0x46
+# endif
+# ifndef LANG_QUECHUA
+# define LANG_QUECHUA 0x6b
+# endif
+# ifndef LANG_RHAETO_ROMANCE
+# define LANG_RHAETO_ROMANCE 0x17
+# endif
+# ifndef LANG_SAAMI
+# define LANG_SAAMI 0x3b
+# endif
+# ifndef LANG_SANSKRIT
+# define LANG_SANSKRIT 0x4f
+# endif
+# ifndef LANG_SERBIAN
+# define LANG_SERBIAN 0x1a
+# endif
+# ifndef LANG_SINDHI
+# define LANG_SINDHI 0x59
+# endif
+# ifndef LANG_SINHALESE
+# define LANG_SINHALESE 0x5b
+# endif
+# ifndef LANG_SLOVAK
+# define LANG_SLOVAK 0x1b
+# endif
+# ifndef LANG_SOMALI
+# define LANG_SOMALI 0x77
+# endif
+# ifndef LANG_SORBIAN
+# define LANG_SORBIAN 0x2e
+# endif
+# ifndef LANG_SOTHO
+# define LANG_SOTHO 0x6c
+# endif
+# ifndef LANG_SUTU
+# define LANG_SUTU 0x30
+# endif
+# ifndef LANG_SWAHILI
+# define LANG_SWAHILI 0x41
+# endif
+# ifndef LANG_SYRIAC
+# define LANG_SYRIAC 0x5a
+# endif
+# ifndef LANG_TAGALOG
+# define LANG_TAGALOG 0x64
+# endif
+# ifndef LANG_TAJIK
+# define LANG_TAJIK 0x28
+# endif
+# ifndef LANG_TAMAZIGHT
+# define LANG_TAMAZIGHT 0x5f
+# endif
+# ifndef LANG_TAMIL
+# define LANG_TAMIL 0x49
+# endif
+# ifndef LANG_TATAR
+# define LANG_TATAR 0x44
+# endif
+# ifndef LANG_TELUGU
+# define LANG_TELUGU 0x4a
+# endif
+# ifndef LANG_THAI
+# define LANG_THAI 0x1e
+# endif
+# ifndef LANG_TIBETAN
+# define LANG_TIBETAN 0x51
+# endif
+# ifndef LANG_TIGRINYA
+# define LANG_TIGRINYA 0x73
+# endif
+# ifndef LANG_TSONGA
+# define LANG_TSONGA 0x31
+# endif
+# ifndef LANG_TSWANA
+# define LANG_TSWANA 0x32
+# endif
+# ifndef LANG_TURKMEN
+# define LANG_TURKMEN 0x42
+# endif
+# ifndef LANG_UIGHUR
+# define LANG_UIGHUR 0x80
+# endif
+# ifndef LANG_UKRAINIAN
+# define LANG_UKRAINIAN 0x22
+# endif
+# ifndef LANG_URDU
+# define LANG_URDU 0x20
+# endif
+# ifndef LANG_UZBEK
+# define LANG_UZBEK 0x43
+# endif
+# ifndef LANG_VENDA
+# define LANG_VENDA 0x33
+# endif
+# ifndef LANG_VIETNAMESE
+# define LANG_VIETNAMESE 0x2a
+# endif
+# ifndef LANG_WELSH
+# define LANG_WELSH 0x52
+# endif
+# ifndef LANG_XHOSA
+# define LANG_XHOSA 0x34
+# endif
+# ifndef LANG_YI
+# define LANG_YI 0x78
+# endif
+# ifndef LANG_YIDDISH
+# define LANG_YIDDISH 0x3d
+# endif
+# ifndef LANG_YORUBA
+# define LANG_YORUBA 0x6a
+# endif
+# ifndef LANG_ZULU
+# define LANG_ZULU 0x35
+# endif
+# ifndef SUBLANG_ARABIC_SAUDI_ARABIA
+# define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
+# endif
+# ifndef SUBLANG_ARABIC_IRAQ
+# define SUBLANG_ARABIC_IRAQ 0x02
+# endif
+# ifndef SUBLANG_ARABIC_EGYPT
+# define SUBLANG_ARABIC_EGYPT 0x03
+# endif
+# ifndef SUBLANG_ARABIC_LIBYA
+# define SUBLANG_ARABIC_LIBYA 0x04
+# endif
+# ifndef SUBLANG_ARABIC_ALGERIA
+# define SUBLANG_ARABIC_ALGERIA 0x05
+# endif
+# ifndef SUBLANG_ARABIC_MOROCCO
+# define SUBLANG_ARABIC_MOROCCO 0x06
+# endif
+# ifndef SUBLANG_ARABIC_TUNISIA
+# define SUBLANG_ARABIC_TUNISIA 0x07
+# endif
+# ifndef SUBLANG_ARABIC_OMAN
+# define SUBLANG_ARABIC_OMAN 0x08
+# endif
+# ifndef SUBLANG_ARABIC_YEMEN
+# define SUBLANG_ARABIC_YEMEN 0x09
+# endif
+# ifndef SUBLANG_ARABIC_SYRIA
+# define SUBLANG_ARABIC_SYRIA 0x0a
+# endif
+# ifndef SUBLANG_ARABIC_JORDAN
+# define SUBLANG_ARABIC_JORDAN 0x0b
+# endif
+# ifndef SUBLANG_ARABIC_LEBANON
+# define SUBLANG_ARABIC_LEBANON 0x0c
+# endif
+# ifndef SUBLANG_ARABIC_KUWAIT
+# define SUBLANG_ARABIC_KUWAIT 0x0d
+# endif
+# ifndef SUBLANG_ARABIC_UAE
+# define SUBLANG_ARABIC_UAE 0x0e
+# endif
+# ifndef SUBLANG_ARABIC_BAHRAIN
+# define SUBLANG_ARABIC_BAHRAIN 0x0f
+# endif
+# ifndef SUBLANG_ARABIC_QATAR
+# define SUBLANG_ARABIC_QATAR 0x10
+# endif
+# ifndef SUBLANG_AZERI_LATIN
+# define SUBLANG_AZERI_LATIN 0x01
+# endif
+# ifndef SUBLANG_AZERI_CYRILLIC
+# define SUBLANG_AZERI_CYRILLIC 0x02
+# endif
+# ifndef SUBLANG_BENGALI_INDIA
+# define SUBLANG_BENGALI_INDIA 0x01
+# endif
+# ifndef SUBLANG_BENGALI_BANGLADESH
+# define SUBLANG_BENGALI_BANGLADESH 0x02
+# endif
+# ifndef SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN
+# define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN 0x05
+# endif
+# ifndef SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC
+# define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x08
+# endif
+# ifndef SUBLANG_CROATIAN_CROATIA
+# define SUBLANG_CROATIAN_CROATIA 0x01
+# endif
+# ifndef SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN
+# define SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN 0x04
+# endif
+# ifndef SUBLANG_CHINESE_MACAU
+# define SUBLANG_CHINESE_MACAU 0x05
+# endif
+# ifndef SUBLANG_ENGLISH_SOUTH_AFRICA
+# define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
+# endif
+# ifndef SUBLANG_ENGLISH_JAMAICA
+# define SUBLANG_ENGLISH_JAMAICA 0x08
+# endif
+# ifndef SUBLANG_ENGLISH_CARIBBEAN
+# define SUBLANG_ENGLISH_CARIBBEAN 0x09
+# endif
+# ifndef SUBLANG_ENGLISH_BELIZE
+# define SUBLANG_ENGLISH_BELIZE 0x0a
+# endif
+# ifndef SUBLANG_ENGLISH_TRINIDAD
+# define SUBLANG_ENGLISH_TRINIDAD 0x0b
+# endif
+# ifndef SUBLANG_ENGLISH_ZIMBABWE
+# define SUBLANG_ENGLISH_ZIMBABWE 0x0c
+# endif
+# ifndef SUBLANG_ENGLISH_PHILIPPINES
+# define SUBLANG_ENGLISH_PHILIPPINES 0x0d
+# endif
+# ifndef SUBLANG_ENGLISH_INDONESIA
+# define SUBLANG_ENGLISH_INDONESIA 0x0e
+# endif
+# ifndef SUBLANG_ENGLISH_HONGKONG
+# define SUBLANG_ENGLISH_HONGKONG 0x0f
+# endif
+# ifndef SUBLANG_ENGLISH_INDIA
+# define SUBLANG_ENGLISH_INDIA 0x10
+# endif
+# ifndef SUBLANG_ENGLISH_MALAYSIA
+# define SUBLANG_ENGLISH_MALAYSIA 0x11
+# endif
+# ifndef SUBLANG_ENGLISH_SINGAPORE
+# define SUBLANG_ENGLISH_SINGAPORE 0x12
+# endif
+# ifndef SUBLANG_FRENCH_LUXEMBOURG
+# define SUBLANG_FRENCH_LUXEMBOURG 0x05
+# endif
+# ifndef SUBLANG_FRENCH_MONACO
+# define SUBLANG_FRENCH_MONACO 0x06
+# endif
+# ifndef SUBLANG_FRENCH_WESTINDIES
+# define SUBLANG_FRENCH_WESTINDIES 0x07
+# endif
+# ifndef SUBLANG_FRENCH_REUNION
+# define SUBLANG_FRENCH_REUNION 0x08
+# endif
+# ifndef SUBLANG_FRENCH_CONGO
+# define SUBLANG_FRENCH_CONGO 0x09
+# endif
+# ifndef SUBLANG_FRENCH_SENEGAL
+# define SUBLANG_FRENCH_SENEGAL 0x0a
+# endif
+# ifndef SUBLANG_FRENCH_CAMEROON
+# define SUBLANG_FRENCH_CAMEROON 0x0b
+# endif
+# ifndef SUBLANG_FRENCH_COTEDIVOIRE
+# define SUBLANG_FRENCH_COTEDIVOIRE 0x0c
+# endif
+# ifndef SUBLANG_FRENCH_MALI
+# define SUBLANG_FRENCH_MALI 0x0d
+# endif
+# ifndef SUBLANG_FRENCH_MOROCCO
+# define SUBLANG_FRENCH_MOROCCO 0x0e
+# endif
+# ifndef SUBLANG_FRENCH_HAITI
+# define SUBLANG_FRENCH_HAITI 0x0f
+# endif
+# ifndef SUBLANG_GERMAN_LUXEMBOURG
+# define SUBLANG_GERMAN_LUXEMBOURG 0x04
+# endif
+# ifndef SUBLANG_GERMAN_LIECHTENSTEIN
+# define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
+# endif
+# ifndef SUBLANG_KASHMIRI_INDIA
+# define SUBLANG_KASHMIRI_INDIA 0x02
+# endif
+# ifndef SUBLANG_MALAY_MALAYSIA
+# define SUBLANG_MALAY_MALAYSIA 0x01
+# endif
+# ifndef SUBLANG_MALAY_BRUNEI_DARUSSALAM
+# define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
+# endif
+# ifndef SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA
+# define SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA 0x01
+# endif
+# ifndef SUBLANG_MONGOLIAN_PRC
+# define SUBLANG_MONGOLIAN_PRC 0x02
+# endif
+# ifndef SUBLANG_NEPALI_INDIA
+# define SUBLANG_NEPALI_INDIA 0x02
+# endif
+# ifndef SUBLANG_PUNJABI_INDIA
+# define SUBLANG_PUNJABI_INDIA 0x01
+# endif
+# ifndef SUBLANG_PUNJABI_PAKISTAN
+# define SUBLANG_PUNJABI_PAKISTAN 0x02
+# endif
+# ifndef SUBLANG_QUECHUA_BOLIVIA
+# define SUBLANG_QUECHUA_BOLIVIA 0x01
+# endif
+# ifndef SUBLANG_QUECHUA_ECUADOR
+# define SUBLANG_QUECHUA_ECUADOR 0x02
+# endif
+# ifndef SUBLANG_QUECHUA_PERU
+# define SUBLANG_QUECHUA_PERU 0x03
+# endif
+# ifndef SUBLANG_ROMANIAN_ROMANIA
+# define SUBLANG_ROMANIAN_ROMANIA 0x01
+# endif
+# ifndef SUBLANG_ROMANIAN_MOLDOVA
+# define SUBLANG_ROMANIAN_MOLDOVA 0x02
+# endif
+# ifndef SUBLANG_RUSSIAN_RUSSIA
+# define SUBLANG_RUSSIAN_RUSSIA 0x01
+# endif
+# ifndef SUBLANG_RUSSIAN_MOLDAVIA
+# define SUBLANG_RUSSIAN_MOLDAVIA 0x02
+# endif
+# ifndef SUBLANG_SERBIAN_LATIN
+# define SUBLANG_SERBIAN_LATIN 0x02
+# endif
+# ifndef SUBLANG_SERBIAN_CYRILLIC
+# define SUBLANG_SERBIAN_CYRILLIC 0x03
+# endif
+# ifndef SUBLANG_SINDHI_INDIA
+# define SUBLANG_SINDHI_INDIA 0x01
+# endif
+# undef SUBLANG_SINDHI_PAKISTAN
+# define SUBLANG_SINDHI_PAKISTAN 0x02
+# ifndef SUBLANG_SINDHI_AFGHANISTAN
+# define SUBLANG_SINDHI_AFGHANISTAN 0x02
+# endif
+# ifndef SUBLANG_SPANISH_GUATEMALA
+# define SUBLANG_SPANISH_GUATEMALA 0x04
+# endif
+# ifndef SUBLANG_SPANISH_COSTA_RICA
+# define SUBLANG_SPANISH_COSTA_RICA 0x05
+# endif
+# ifndef SUBLANG_SPANISH_PANAMA
+# define SUBLANG_SPANISH_PANAMA 0x06
+# endif
+# ifndef SUBLANG_SPANISH_DOMINICAN_REPUBLIC
+# define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
+# endif
+# ifndef SUBLANG_SPANISH_VENEZUELA
+# define SUBLANG_SPANISH_VENEZUELA 0x08
+# endif
+# ifndef SUBLANG_SPANISH_COLOMBIA
+# define SUBLANG_SPANISH_COLOMBIA 0x09
+# endif
+# ifndef SUBLANG_SPANISH_PERU
+# define SUBLANG_SPANISH_PERU 0x0a
+# endif
+# ifndef SUBLANG_SPANISH_ARGENTINA
+# define SUBLANG_SPANISH_ARGENTINA 0x0b
+# endif
+# ifndef SUBLANG_SPANISH_ECUADOR
+# define SUBLANG_SPANISH_ECUADOR 0x0c
+# endif
+# ifndef SUBLANG_SPANISH_CHILE
+# define SUBLANG_SPANISH_CHILE 0x0d
+# endif
+# ifndef SUBLANG_SPANISH_URUGUAY
+# define SUBLANG_SPANISH_URUGUAY 0x0e
+# endif
+# ifndef SUBLANG_SPANISH_PARAGUAY
+# define SUBLANG_SPANISH_PARAGUAY 0x0f
+# endif
+# ifndef SUBLANG_SPANISH_BOLIVIA
+# define SUBLANG_SPANISH_BOLIVIA 0x10
+# endif
+# ifndef SUBLANG_SPANISH_EL_SALVADOR
+# define SUBLANG_SPANISH_EL_SALVADOR 0x11
+# endif
+# ifndef SUBLANG_SPANISH_HONDURAS
+# define SUBLANG_SPANISH_HONDURAS 0x12
+# endif
+# ifndef SUBLANG_SPANISH_NICARAGUA
+# define SUBLANG_SPANISH_NICARAGUA 0x13
+# endif
+# ifndef SUBLANG_SPANISH_PUERTO_RICO
+# define SUBLANG_SPANISH_PUERTO_RICO 0x14
+# endif
+# ifndef SUBLANG_SPANISH_US
+# define SUBLANG_SPANISH_US 0x15
+# endif
+# ifndef SUBLANG_SWEDISH_FINLAND
+# define SUBLANG_SWEDISH_FINLAND 0x02
+# endif
+# ifndef SUBLANG_TAMAZIGHT_ARABIC
+# define SUBLANG_TAMAZIGHT_ARABIC 0x01
+# endif
+# ifndef SUBLANG_TAMAZIGHT_ALGERIA_LATIN
+# define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x02
+# endif
+# ifndef SUBLANG_TIBETAN_PRC
+# define SUBLANG_TIBETAN_PRC 0x01
+# endif
+# undef SUBLANG_TIBETAN_BHUTAN
+# define SUBLANG_TIBETAN_BHUTAN 0x02
+# ifndef SUBLANG_TIGRINYA_ETHIOPIA
+# define SUBLANG_TIGRINYA_ETHIOPIA 0x01
+# endif
+# ifndef SUBLANG_TIGRINYA_ERITREA
+# define SUBLANG_TIGRINYA_ERITREA 0x02
+# endif
+# ifndef SUBLANG_UIGHUR_PRC
+# define SUBLANG_UIGHUR_PRC 0x01
+# endif
+# ifndef SUBLANG_URDU_PAKISTAN
+# define SUBLANG_URDU_PAKISTAN 0x01
+# endif
+# ifndef SUBLANG_URDU_INDIA
+# define SUBLANG_URDU_INDIA 0x02
+# endif
+# ifndef SUBLANG_UZBEK_LATIN
+# define SUBLANG_UZBEK_LATIN 0x01
+# endif
+# ifndef SUBLANG_UZBEK_CYRILLIC
+# define SUBLANG_UZBEK_CYRILLIC 0x02
+# endif
+/* GetLocaleInfoA operations. */
+# ifndef LOCALE_SNAME
+# define LOCALE_SNAME 0x5c
+# endif
+#endif
+
+
+#if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE
+/* MacOS X 10.2 or newer */
+
+/* Canonicalize a MacOS X locale name to a Unix locale name.
+ NAME is a sufficiently large buffer.
+ On input, it contains the MacOS X locale name.
+ On output, it contains the Unix locale name. */
+# if !defined IN_LIBINTL
+static
+# endif
+void
+gl_locale_name_canonicalize (char *name)
+{
+ /* This conversion is based on a posting by
+ Deborah GoldSmith <goldsmit@apple.com> on 2005-03-08,
+ http://lists.apple.com/archives/carbon-dev/2005/Mar/msg00293.html */
+
+ /* Convert legacy (NeXTstep inherited) English names to Unix (ISO 639 and
+ ISO 3166) names. Prior to MacOS X 10.3, there is no API for doing this.
+ Therefore we do it ourselves, using a table based on the results of the
+ MacOS X 10.3.8 function
+ CFLocaleCreateCanonicalLocaleIdentifierFromString(). */
+ typedef struct { const char legacy[21+1]; const char unixy[5+1]; }
+ legacy_entry;
+ static const legacy_entry legacy_table[] = {
+ { "Afrikaans", "af" },
+ { "Albanian", "sq" },
+ { "Amharic", "am" },
+ { "Arabic", "ar" },
+ { "Armenian", "hy" },
+ { "Assamese", "as" },
+ { "Aymara", "ay" },
+ { "Azerbaijani", "az" },
+ { "Basque", "eu" },
+ { "Belarusian", "be" },
+ { "Belorussian", "be" },
+ { "Bengali", "bn" },
+ { "Brazilian Portugese", "pt_BR" },
+ { "Brazilian Portuguese", "pt_BR" },
+ { "Breton", "br" },
+ { "Bulgarian", "bg" },
+ { "Burmese", "my" },
+ { "Byelorussian", "be" },
+ { "Catalan", "ca" },
+ { "Chewa", "ny" },
+ { "Chichewa", "ny" },
+ { "Chinese", "zh" },
+ { "Chinese, Simplified", "zh_CN" },
+ { "Chinese, Traditional", "zh_TW" },
+ { "Chinese, Tradtional", "zh_TW" },
+ { "Croatian", "hr" },
+ { "Czech", "cs" },
+ { "Danish", "da" },
+ { "Dutch", "nl" },
+ { "Dzongkha", "dz" },
+ { "English", "en" },
+ { "Esperanto", "eo" },
+ { "Estonian", "et" },
+ { "Faroese", "fo" },
+ { "Farsi", "fa" },
+ { "Finnish", "fi" },
+ { "Flemish", "nl_BE" },
+ { "French", "fr" },
+ { "Galician", "gl" },
+ { "Gallegan", "gl" },
+ { "Georgian", "ka" },
+ { "German", "de" },
+ { "Greek", "el" },
+ { "Greenlandic", "kl" },
+ { "Guarani", "gn" },
+ { "Gujarati", "gu" },
+ { "Hawaiian", "haw" }, /* Yes, "haw", not "cpe". */
+ { "Hebrew", "he" },
+ { "Hindi", "hi" },
+ { "Hungarian", "hu" },
+ { "Icelandic", "is" },
+ { "Indonesian", "id" },
+ { "Inuktitut", "iu" },
+ { "Irish", "ga" },
+ { "Italian", "it" },
+ { "Japanese", "ja" },
+ { "Javanese", "jv" },
+ { "Kalaallisut", "kl" },
+ { "Kannada", "kn" },
+ { "Kashmiri", "ks" },
+ { "Kazakh", "kk" },
+ { "Khmer", "km" },
+ { "Kinyarwanda", "rw" },
+ { "Kirghiz", "ky" },
+ { "Korean", "ko" },
+ { "Kurdish", "ku" },
+ { "Latin", "la" },
+ { "Latvian", "lv" },
+ { "Lithuanian", "lt" },
+ { "Macedonian", "mk" },
+ { "Malagasy", "mg" },
+ { "Malay", "ms" },
+ { "Malayalam", "ml" },
+ { "Maltese", "mt" },
+ { "Manx", "gv" },
+ { "Marathi", "mr" },
+ { "Moldavian", "mo" },
+ { "Mongolian", "mn" },
+ { "Nepali", "ne" },
+ { "Norwegian", "nb" }, /* Yes, "nb", not the obsolete "no". */
+ { "Nyanja", "ny" },
+ { "Nynorsk", "nn" },
+ { "Oriya", "or" },
+ { "Oromo", "om" },
+ { "Panjabi", "pa" },
+ { "Pashto", "ps" },
+ { "Persian", "fa" },
+ { "Polish", "pl" },
+ { "Portuguese", "pt" },
+ { "Portuguese, Brazilian", "pt_BR" },
+ { "Punjabi", "pa" },
+ { "Pushto", "ps" },
+ { "Quechua", "qu" },
+ { "Romanian", "ro" },
+ { "Ruanda", "rw" },
+ { "Rundi", "rn" },
+ { "Russian", "ru" },
+ { "Sami", "se_NO" }, /* Not just "se". */
+ { "Sanskrit", "sa" },
+ { "Scottish", "gd" },
+ { "Serbian", "sr" },
+ { "Simplified Chinese", "zh_CN" },
+ { "Sindhi", "sd" },
+ { "Sinhalese", "si" },
+ { "Slovak", "sk" },
+ { "Slovenian", "sl" },
+ { "Somali", "so" },
+ { "Spanish", "es" },
+ { "Sundanese", "su" },
+ { "Swahili", "sw" },
+ { "Swedish", "sv" },
+ { "Tagalog", "tl" },
+ { "Tajik", "tg" },
+ { "Tajiki", "tg" },
+ { "Tamil", "ta" },
+ { "Tatar", "tt" },
+ { "Telugu", "te" },
+ { "Thai", "th" },
+ { "Tibetan", "bo" },
+ { "Tigrinya", "ti" },
+ { "Tongan", "to" },
+ { "Traditional Chinese", "zh_TW" },
+ { "Turkish", "tr" },
+ { "Turkmen", "tk" },
+ { "Uighur", "ug" },
+ { "Ukrainian", "uk" },
+ { "Urdu", "ur" },
+ { "Uzbek", "uz" },
+ { "Vietnamese", "vi" },
+ { "Welsh", "cy" },
+ { "Yiddish", "yi" }
+ };
+
+ /* Convert new-style locale names with language tags (ISO 639 and ISO 15924)
+ to Unix (ISO 639 and ISO 3166) names. */
+ typedef struct { const char langtag[7+1]; const char unixy[12+1]; }
+ langtag_entry;
+ static const langtag_entry langtag_table[] = {
+ /* MacOS X has "az-Arab", "az-Cyrl", "az-Latn".
+ The default script for az on Unix is Latin. */
+ { "az-Latn", "az" },
+ /* MacOS X has "ga-dots". Does not yet exist on Unix. */
+ { "ga-dots", "ga" },
+ /* MacOS X has "kk-Cyrl". Does not yet exist on Unix. */
+ /* MacOS X has "mn-Cyrl", "mn-Mong".
+ The default script for mn on Unix is Cyrillic. */
+ { "mn-Cyrl", "mn" },
+ /* MacOS X has "ms-Arab", "ms-Latn".
+ The default script for ms on Unix is Latin. */
+ { "ms-Latn", "ms" },
+ /* MacOS X has "tg-Cyrl".
+ The default script for tg on Unix is Cyrillic. */
+ { "tg-Cyrl", "tg" },
+ /* MacOS X has "tk-Cyrl". Does not yet exist on Unix. */
+ /* MacOS X has "tt-Cyrl".
+ The default script for tt on Unix is Cyrillic. */
+ { "tt-Cyrl", "tt" },
+ /* MacOS X has "zh-Hans", "zh-Hant".
+ Country codes are used to distinguish these on Unix. */
+ { "zh-Hans", "zh_CN" },
+ { "zh-Hant", "zh_TW" }
+ };
+
+ /* Convert script names (ISO 15924) to Unix conventions.
+ See http://www.unicode.org/iso15924/iso15924-codes.html */
+ typedef struct { const char script[4+1]; const char unixy[9+1]; }
+ script_entry;
+ static const script_entry script_table[] = {
+ { "Arab", "arabic" },
+ { "Cyrl", "cyrillic" },
+ { "Mong", "mongolian" }
+ };
+
+ /* Step 1: Convert using legacy_table. */
+ if (name[0] >= 'A' && name[0] <= 'Z')
+ {
+ unsigned int i1, i2;
+ i1 = 0;
+ i2 = sizeof (legacy_table) / sizeof (legacy_entry);
+ while (i2 - i1 > 1)
+ {
+ /* At this point we know that if name occurs in legacy_table,
+ its index must be >= i1 and < i2. */
+ unsigned int i = (i1 + i2) >> 1;
+ const legacy_entry *p = &legacy_table[i];
+ if (strcmp (name, p->legacy) < 0)
+ i2 = i;
+ else
+ i1 = i;
+ }
+ if (strcmp (name, legacy_table[i1].legacy) == 0)
+ {
+ strcpy (name, legacy_table[i1].unixy);
+ return;
+ }
+ }
+
+ /* Step 2: Convert using langtag_table and script_table. */
+ if (strlen (name) == 7 && name[2] == '-')
+ {
+ unsigned int i1, i2;
+ i1 = 0;
+ i2 = sizeof (langtag_table) / sizeof (langtag_entry);
+ while (i2 - i1 > 1)
+ {
+ /* At this point we know that if name occurs in langtag_table,
+ its index must be >= i1 and < i2. */
+ unsigned int i = (i1 + i2) >> 1;
+ const langtag_entry *p = &langtag_table[i];
+ if (strcmp (name, p->langtag) < 0)
+ i2 = i;
+ else
+ i1 = i;
+ }
+ if (strcmp (name, langtag_table[i1].langtag) == 0)
+ {
+ strcpy (name, langtag_table[i1].unixy);
+ return;
+ }
+
+ i1 = 0;
+ i2 = sizeof (script_table) / sizeof (script_entry);
+ while (i2 - i1 > 1)
+ {
+ /* At this point we know that if (name + 3) occurs in script_table,
+ its index must be >= i1 and < i2. */
+ unsigned int i = (i1 + i2) >> 1;
+ const script_entry *p = &script_table[i];
+ if (strcmp (name + 3, p->script) < 0)
+ i2 = i;
+ else
+ i1 = i;
+ }
+ if (strcmp (name + 3, script_table[i1].script) == 0)
+ {
+ name[2] = '@';
+ strcpy (name + 3, script_table[i1].unixy);
+ return;
+ }
+ }
+
+ /* Step 3: Convert new-style dash to Unix underscore. */
+ {
+ char *p;
+ for (p = name; *p != '\0'; p++)
+ if (*p == '-')
+ *p = '_';
+ }
+}
+
+#endif
+
+
+#ifdef WIN32_NATIVE
+
+/* Canonicalize a Win32 native locale name to a Unix locale name.
+ NAME is a sufficiently large buffer.
+ On input, it contains the Win32 locale name.
+ On output, it contains the Unix locale name. */
+# if !defined IN_LIBINTL
+static
+# endif
+void
+gl_locale_name_canonicalize (char *name)
+{
+ /* FIXME: This is probably incomplete: it does not handle "zh-Hans" and
+ "zh-Hant". */
+ char *p;
+
+ for (p = name; *p != '\0'; p++)
+ if (*p == '-')
+ {
+ *p = '_';
+ p++;
+ for (; *p != '\0'; p++)
+ {
+ if (*p >= 'a' && *p <= 'z')
+ *p += 'A' - 'a';
+ if (*p == '-')
+ {
+ *p = '\0';
+ return;
+ }
+ }
+ return;
+ }
+}
+
+# if !defined IN_LIBINTL
+static
+# endif
+const char *
+gl_locale_name_from_win32_LANGID (LANGID langid)
+{
+ /* Activate the new code only when the GETTEXT_MUI environment variable is
+ set, for the time being, since the new code is not well tested. */
+ if (getenv ("GETTEXT_MUI") != NULL)
+ {
+ static char namebuf[256];
+
+ /* Query the system's notion of locale name.
+ On Windows95/98/ME, GetLocaleInfoA returns some incorrect results.
+ But we don't need to support systems that are so old. */
+ if (GetLocaleInfoA (MAKELCID (langid, SORT_DEFAULT), LOCALE_SNAME,
+ namebuf, sizeof (namebuf) - 1))
+ {
+ /* Convert it to a Unix locale name. */
+ gl_locale_name_canonicalize (namebuf);
+ return namebuf;
+ }
+ }
+ /* Internet Explorer has an LCID to RFC3066 name mapping stored in
+ HKEY_CLASSES_ROOT\Mime\Database\Rfc1766. But we better don't use that
+ since IE's i18n subsystem is known to be inconsistent with the Win32 base
+ (e.g. they have different character conversion facilities that produce
+ different results). */
+ /* Use our own table. */
+ {
+ int primary, sub;
+
+ /* Split into language and territory part. */
+ primary = PRIMARYLANGID (langid);
+ sub = SUBLANGID (langid);
+
+ /* Dispatch on language.
+ See also http://www.unicode.org/unicode/onlinedat/languages.html .
+ For details about languages, see http://www.ethnologue.com/ . */
+ switch (primary)
+ {
+ case LANG_AFRIKAANS: return "af_ZA";
+ case LANG_ALBANIAN: return "sq_AL";
+ case LANG_AMHARIC: return "am_ET";
+ case LANG_ARABIC:
+ switch (sub)
+ {
+ case SUBLANG_ARABIC_SAUDI_ARABIA: return "ar_SA";
+ case SUBLANG_ARABIC_IRAQ: return "ar_IQ";
+ case SUBLANG_ARABIC_EGYPT: return "ar_EG";
+ case SUBLANG_ARABIC_LIBYA: return "ar_LY";
+ case SUBLANG_ARABIC_ALGERIA: return "ar_DZ";
+ case SUBLANG_ARABIC_MOROCCO: return "ar_MA";
+ case SUBLANG_ARABIC_TUNISIA: return "ar_TN";
+ case SUBLANG_ARABIC_OMAN: return "ar_OM";
+ case SUBLANG_ARABIC_YEMEN: return "ar_YE";
+ case SUBLANG_ARABIC_SYRIA: return "ar_SY";
+ case SUBLANG_ARABIC_JORDAN: return "ar_JO";
+ case SUBLANG_ARABIC_LEBANON: return "ar_LB";
+ case SUBLANG_ARABIC_KUWAIT: return "ar_KW";
+ case SUBLANG_ARABIC_UAE: return "ar_AE";
+ case SUBLANG_ARABIC_BAHRAIN: return "ar_BH";
+ case SUBLANG_ARABIC_QATAR: return "ar_QA";
+ }
+ return "ar";
+ case LANG_ARMENIAN: return "hy_AM";
+ case LANG_ASSAMESE: return "as_IN";
+ case LANG_AZERI:
+ switch (sub)
+ {
+ /* FIXME: Adjust this when Azerbaijani locales appear on Unix. */
+ case SUBLANG_AZERI_LATIN: return "az_AZ@latin";
+ case SUBLANG_AZERI_CYRILLIC: return "az_AZ@cyrillic";
+ }
+ return "az";
+ case LANG_BASQUE:
+ switch (sub)
+ {
+ case SUBLANG_DEFAULT: return "eu_ES";
+ }
+ return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR". */
+ case LANG_BELARUSIAN: return "be_BY";
+ case LANG_BENGALI:
+ switch (sub)
+ {
+ case SUBLANG_BENGALI_INDIA: return "bn_IN";
+ case SUBLANG_BENGALI_BANGLADESH: return "bn_BD";
+ }
+ return "bn";
+ case LANG_BULGARIAN: return "bg_BG";
+ case LANG_BURMESE: return "my_MM";
+ case LANG_CAMBODIAN: return "km_KH";
+ case LANG_CATALAN: return "ca_ES";
+ case LANG_CHEROKEE: return "chr_US";
+ case LANG_CHINESE:
+ switch (sub)
+ {
+ case SUBLANG_CHINESE_TRADITIONAL: return "zh_TW";
+ case SUBLANG_CHINESE_SIMPLIFIED: return "zh_CN";
+ case SUBLANG_CHINESE_HONGKONG: return "zh_HK";
+ case SUBLANG_CHINESE_SINGAPORE: return "zh_SG";
+ case SUBLANG_CHINESE_MACAU: return "zh_MO";
+ }
+ return "zh";
+ case LANG_CROATIAN: /* LANG_CROATIAN == LANG_SERBIAN
+ * What used to be called Serbo-Croatian
+ * should really now be two separate
+ * languages because of political reasons.
+ * (Says tml, who knows nothing about Serbian
+ * or Croatian.)
+ * (I can feel those flames coming already.)
+ */
+ switch (sub)
+ {
+ case SUBLANG_CROATIAN_CROATIA: return "hr_HR";
+ case SUBLANG_SERBIAN_LATIN: return "sr_CS";
+ case SUBLANG_SERBIAN_CYRILLIC: return "sr_CS@cyrillic";
+ case SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN: return "hr_BA";
+ case SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN: return "bs_BA";
+ case SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC: return "bs_BA@cyrillic";
+ }
+ return "hr";
+ case LANG_CZECH: return "cs_CZ";
+ case LANG_DANISH: return "da_DK";
+ case LANG_DIVEHI: return "dv_MV";
+ case LANG_DUTCH:
+ switch (sub)
+ {
+ case SUBLANG_DUTCH: return "nl_NL";
+ case SUBLANG_DUTCH_BELGIAN: /* FLEMISH, VLAAMS */ return "nl_BE";
+ }
+ return "nl";
+ case LANG_EDO: return "bin_NG";
+ case LANG_ENGLISH:
+ switch (sub)
+ {
+ /* SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. Heh. I thought
+ * English was the language spoken in England.
+ * Oh well.
+ */
+ case SUBLANG_ENGLISH_US: return "en_US";
+ case SUBLANG_ENGLISH_UK: return "en_GB";
+ case SUBLANG_ENGLISH_AUS: return "en_AU";
+ case SUBLANG_ENGLISH_CAN: return "en_CA";
+ case SUBLANG_ENGLISH_NZ: return "en_NZ";
+ case SUBLANG_ENGLISH_EIRE: return "en_IE";
+ case SUBLANG_ENGLISH_SOUTH_AFRICA: return "en_ZA";
+ case SUBLANG_ENGLISH_JAMAICA: return "en_JM";
+ case SUBLANG_ENGLISH_CARIBBEAN: return "en_GD"; /* Grenada? */
+ case SUBLANG_ENGLISH_BELIZE: return "en_BZ";
+ case SUBLANG_ENGLISH_TRINIDAD: return "en_TT";
+ case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW";
+ case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH";
+ case SUBLANG_ENGLISH_INDONESIA: return "en_ID";
+ case SUBLANG_ENGLISH_HONGKONG: return "en_HK";
+ case SUBLANG_ENGLISH_INDIA: return "en_IN";
+ case SUBLANG_ENGLISH_MALAYSIA: return "en_MY";
+ case SUBLANG_ENGLISH_SINGAPORE: return "en_SG";
+ }
+ return "en";
+ case LANG_ESTONIAN: return "et_EE";
+ case LANG_FAEROESE: return "fo_FO";
+ case LANG_FARSI: return "fa_IR";
+ case LANG_FINNISH: return "fi_FI";
+ case LANG_FRENCH:
+ switch (sub)
+ {
+ case SUBLANG_FRENCH: return "fr_FR";
+ case SUBLANG_FRENCH_BELGIAN: /* WALLOON */ return "fr_BE";
+ case SUBLANG_FRENCH_CANADIAN: return "fr_CA";
+ case SUBLANG_FRENCH_SWISS: return "fr_CH";
+ case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU";
+ case SUBLANG_FRENCH_MONACO: return "fr_MC";
+ case SUBLANG_FRENCH_WESTINDIES: return "fr"; /* Caribbean? */
+ case SUBLANG_FRENCH_REUNION: return "fr_RE";
+ case SUBLANG_FRENCH_CONGO: return "fr_CG";
+ case SUBLANG_FRENCH_SENEGAL: return "fr_SN";
+ case SUBLANG_FRENCH_CAMEROON: return "fr_CM";
+ case SUBLANG_FRENCH_COTEDIVOIRE: return "fr_CI";
+ case SUBLANG_FRENCH_MALI: return "fr_ML";
+ case SUBLANG_FRENCH_MOROCCO: return "fr_MA";
+ case SUBLANG_FRENCH_HAITI: return "fr_HT";
+ }
+ return "fr";
+ case LANG_FRISIAN: return "fy_NL";
+ case LANG_FULFULDE:
+ /* Spoken in Nigeria, Guinea, Senegal, Mali, Niger, Cameroon, Benin. */
+ return "ff_NG";
+ case LANG_GAELIC:
+ switch (sub)
+ {
+ case 0x01: /* SCOTTISH */ return "gd_GB";
+ case 0x02: /* IRISH */ return "ga_IE";
+ }
+ return "C";
+ case LANG_GALICIAN: return "gl_ES";
+ case LANG_GEORGIAN: return "ka_GE";
+ case LANG_GERMAN:
+ switch (sub)
+ {
+ case SUBLANG_GERMAN: return "de_DE";
+ case SUBLANG_GERMAN_SWISS: return "de_CH";
+ case SUBLANG_GERMAN_AUSTRIAN: return "de_AT";
+ case SUBLANG_GERMAN_LUXEMBOURG: return "de_LU";
+ case SUBLANG_GERMAN_LIECHTENSTEIN: return "de_LI";
+ }
+ return "de";
+ case LANG_GREEK: return "el_GR";
+ case LANG_GUARANI: return "gn_PY";
+ case LANG_GUJARATI: return "gu_IN";
+ case LANG_HAUSA: return "ha_NG";
+ case LANG_HAWAIIAN:
+ /* FIXME: Do they mean Hawaiian ("haw_US", 1000 speakers)
+ or Hawaii Creole English ("cpe_US", 600000 speakers)? */
+ return "cpe_US";
+ case LANG_HEBREW: return "he_IL";
+ case LANG_HINDI: return "hi_IN";
+ case LANG_HUNGARIAN: return "hu_HU";
+ case LANG_IBIBIO: return "nic_NG";
+ case LANG_ICELANDIC: return "is_IS";
+ case LANG_IGBO: return "ig_NG";
+ case LANG_INDONESIAN: return "id_ID";
+ case LANG_INUKTITUT: return "iu_CA";
+ case LANG_ITALIAN:
+ switch (sub)
+ {
+ case SUBLANG_ITALIAN: return "it_IT";
+ case SUBLANG_ITALIAN_SWISS: return "it_CH";
+ }
+ return "it";
+ case LANG_JAPANESE: return "ja_JP";
+ case LANG_KANNADA: return "kn_IN";
+ case LANG_KANURI: return "kr_NG";
+ case LANG_KASHMIRI:
+ switch (sub)
+ {
+ case SUBLANG_DEFAULT: return "ks_PK";
+ case SUBLANG_KASHMIRI_INDIA: return "ks_IN";
+ }
+ return "ks";
+ case LANG_KAZAK: return "kk_KZ";
+ case LANG_KONKANI:
+ /* FIXME: Adjust this when such locales appear on Unix. */
+ return "kok_IN";
+ case LANG_KOREAN: return "ko_KR";
+ case LANG_KYRGYZ: return "ky_KG";
+ case LANG_LAO: return "lo_LA";
+ case LANG_LATIN: return "la_VA";
+ case LANG_LATVIAN: return "lv_LV";
+ case LANG_LITHUANIAN: return "lt_LT";
+ case LANG_MACEDONIAN: return "mk_MK";
+ case LANG_MALAY:
+ switch (sub)
+ {
+ case SUBLANG_MALAY_MALAYSIA: return "ms_MY";
+ case SUBLANG_MALAY_BRUNEI_DARUSSALAM: return "ms_BN";
+ }
+ return "ms";
+ case LANG_MALAYALAM: return "ml_IN";
+ case LANG_MALTESE: return "mt_MT";
+ case LANG_MANIPURI:
+ /* FIXME: Adjust this when such locales appear on Unix. */
+ return "mni_IN";
+ case LANG_MAORI: return "mi_NZ";
+ case LANG_MARATHI: return "mr_IN";
+ case LANG_MONGOLIAN:
+ switch (sub)
+ {
+ case SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA: return "mn_MN";
+ case SUBLANG_MONGOLIAN_PRC: return "mn_CN";
+ }
+ return "mn"; /* Ambiguous: could be "mn_CN" or "mn_MN". */
+ case LANG_NEPALI:
+ switch (sub)
+ {
+ case SUBLANG_DEFAULT: return "ne_NP";
+ case SUBLANG_NEPALI_INDIA: return "ne_IN";
+ }
+ return "ne";
+ case LANG_NORWEGIAN:
+ switch (sub)
+ {
+ case SUBLANG_NORWEGIAN_BOKMAL: return "nb_NO";
+ case SUBLANG_NORWEGIAN_NYNORSK: return "nn_NO";
+ }
+ return "no";
+ case LANG_ORIYA: return "or_IN";
+ case LANG_OROMO: return "om_ET";
+ case LANG_PAPIAMENTU: return "pap_AN";
+ case LANG_PASHTO:
+ return "ps"; /* Ambiguous: could be "ps_PK" or "ps_AF". */
+ case LANG_POLISH: return "pl_PL";
+ case LANG_PORTUGUESE:
+ switch (sub)
+ {
+ case SUBLANG_PORTUGUESE: return "pt_PT";
+ /* Hmm. SUBLANG_PORTUGUESE_BRAZILIAN == SUBLANG_DEFAULT.
+ Same phenomenon as SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. */
+ case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR";
+ }
+ return "pt";
+ case LANG_PUNJABI:
+ switch (sub)
+ {
+ case SUBLANG_PUNJABI_INDIA: return "pa_IN"; /* Gurmukhi script */
+ case SUBLANG_PUNJABI_PAKISTAN: return "pa_PK"; /* Arabic script */
+ }
+ return "pa";
+ case LANG_QUECHUA:
+ switch (sub)
+ {
+ case SUBLANG_QUECHUA_BOLIVIA: return "qu_BO";
+ case SUBLANG_QUECHUA_ECUADOR: return "qu_EC";
+ case SUBLANG_QUECHUA_PERU: return "qu_PE";
+ }
+ return "qu";
+ case LANG_RHAETO_ROMANCE: return "rm_CH";
+ case LANG_ROMANIAN:
+ switch (sub)
+ {
+ case SUBLANG_ROMANIAN_ROMANIA: return "ro_RO";
+ case SUBLANG_ROMANIAN_MOLDOVA: return "ro_MD";
+ }
+ return "ro";
+ case LANG_RUSSIAN:
+ switch (sub)
+ {
+ case SUBLANG_RUSSIAN_RUSSIA: return "ru_RU";
+ case SUBLANG_RUSSIAN_MOLDAVIA: return "ru_MD";
+ }
+ return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA" or "ru_MD". */
+ case LANG_SAAMI: /* actually Northern Sami */ return "se_NO";
+ case LANG_SANSKRIT: return "sa_IN";
+ case LANG_SINDHI:
+ switch (sub)
+ {
+ case SUBLANG_SINDHI_INDIA: return "sd_IN";
+ case SUBLANG_SINDHI_PAKISTAN: return "sd_PK";
+ /*case SUBLANG_SINDHI_AFGHANISTAN: return "sd_AF";*/
+ }
+ return "sd";
+ case LANG_SINHALESE: return "si_LK";
+ case LANG_SLOVAK: return "sk_SK";
+ case LANG_SLOVENIAN: return "sl_SI";
+ case LANG_SOMALI: return "so_SO";
+ case LANG_SORBIAN:
+ /* FIXME: Adjust this when such locales appear on Unix. */
+ return "wen_DE";
+ case LANG_SOTHO:
+ /* <http://www.microsoft.com/globaldev/reference/lcid-all.mspx> calls
+ it "Sepedi"; according to
+ <http://www.ethnologue.com/show_language.asp?code=nso>
+ <http://www.ethnologue.com/show_language.asp?code=sot>
+ it's the same as Northern Sotho. */
+ return "nso_ZA";
+ case LANG_SPANISH:
+ switch (sub)
+ {
+ case SUBLANG_SPANISH: return "es_ES";
+ case SUBLANG_SPANISH_MEXICAN: return "es_MX";
+ case SUBLANG_SPANISH_MODERN:
+ return "es_ES@modern"; /* not seen on Unix */
+ case SUBLANG_SPANISH_GUATEMALA: return "es_GT";
+ case SUBLANG_SPANISH_COSTA_RICA: return "es_CR";
+ case SUBLANG_SPANISH_PANAMA: return "es_PA";
+ case SUBLANG_SPANISH_DOMINICAN_REPUBLIC: return "es_DO";
+ case SUBLANG_SPANISH_VENEZUELA: return "es_VE";
+ case SUBLANG_SPANISH_COLOMBIA: return "es_CO";
+ case SUBLANG_SPANISH_PERU: return "es_PE";
+ case SUBLANG_SPANISH_ARGENTINA: return "es_AR";
+ case SUBLANG_SPANISH_ECUADOR: return "es_EC";
+ case SUBLANG_SPANISH_CHILE: return "es_CL";
+ case SUBLANG_SPANISH_URUGUAY: return "es_UY";
+ case SUBLANG_SPANISH_PARAGUAY: return "es_PY";
+ case SUBLANG_SPANISH_BOLIVIA: return "es_BO";
+ case SUBLANG_SPANISH_EL_SALVADOR: return "es_SV";
+ case SUBLANG_SPANISH_HONDURAS: return "es_HN";
+ case SUBLANG_SPANISH_NICARAGUA: return "es_NI";
+ case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR";
+ case SUBLANG_SPANISH_US: return "es_US";
+ }
+ return "es";
+ case LANG_SUTU: return "bnt_TZ"; /* or "st_LS" or "nso_ZA"? */
+ case LANG_SWAHILI: return "sw_KE";
+ case LANG_SWEDISH:
+ switch (sub)
+ {
+ case SUBLANG_DEFAULT: return "sv_SE";
+ case SUBLANG_SWEDISH_FINLAND: return "sv_FI";
+ }
+ return "sv";
+ case LANG_SYRIAC: return "syr_TR"; /* An extinct language. */
+ case LANG_TAGALOG: return "tl_PH";
+ case LANG_TAJIK: return "tg_TJ";
+ case LANG_TAMAZIGHT:
+ switch (sub)
+ {
+ /* FIXME: Adjust this when Tamazight locales appear on Unix. */
+ case SUBLANG_TAMAZIGHT_ARABIC: return "ber_MA@arabic";
+ case SUBLANG_TAMAZIGHT_ALGERIA_LATIN: return "ber_DZ@latin";
+ }
+ return "ber_MA";
+ case LANG_TAMIL:
+ switch (sub)
+ {
+ case SUBLANG_DEFAULT: return "ta_IN";
+ }
+ return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG". */
+ case LANG_TATAR: return "tt_RU";
+ case LANG_TELUGU: return "te_IN";
+ case LANG_THAI: return "th_TH";
+ case LANG_TIBETAN:
+ switch (sub)
+ {
+ case SUBLANG_TIBETAN_PRC:
+ /* Most Tibetans would not like "bo_CN". But Tibet does not yet
+ have a country code of its own. */
+ return "bo";
+ case SUBLANG_TIBETAN_BHUTAN: return "bo_BT";
+ }
+ return "bo";
+ case LANG_TIGRINYA:
+ switch (sub)
+ {
+ case SUBLANG_TIGRINYA_ETHIOPIA: return "ti_ET";
+ case SUBLANG_TIGRINYA_ERITREA: return "ti_ER";
+ }
+ return "ti";
+ case LANG_TSONGA: return "ts_ZA";
+ case LANG_TSWANA: return "tn_BW";
+ case LANG_TURKISH: return "tr_TR";
+ case LANG_TURKMEN: return "tk_TM";
+ case LANG_UIGHUR:
+ switch (sub)
+ {
+ case SUBLANG_UIGHUR_PRC: return "ug_CN";
+ }
+ return "ug";
+ case LANG_UKRAINIAN: return "uk_UA";
+ case LANG_URDU:
+ switch (sub)
+ {
+ case SUBLANG_URDU_PAKISTAN: return "ur_PK";
+ case SUBLANG_URDU_INDIA: return "ur_IN";
+ }
+ return "ur";
+ case LANG_UZBEK:
+ switch (sub)
+ {
+ case SUBLANG_UZBEK_LATIN: return "uz_UZ";
+ case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic";
+ }
+ return "uz";
+ case LANG_VENDA: return "ve_ZA";
+ case LANG_VIETNAMESE: return "vi_VN";
+ case LANG_WELSH: return "cy_GB";
+ case LANG_XHOSA: return "xh_ZA";
+ case LANG_YI: return "sit_CN";
+ case LANG_YIDDISH: return "yi_IL";
+ case LANG_YORUBA: return "yo_NG";
+ case LANG_ZULU: return "zu_ZA";
+ default: return "C";
+ }
+ }
+}
+
+# if !defined IN_LIBINTL
+static
+# endif
+const char *
+gl_locale_name_from_win32_LCID (LCID lcid)
+{
+ LANGID langid;
+
+ /* Strip off the sorting rules, keep only the language part. */
+ langid = LANGIDFROMLCID (lcid);
+
+ return gl_locale_name_from_win32_LANGID (langid);
+}
+
+#endif
+
+
+/* XPG3 defines the result of 'setlocale (category, NULL)' as:
+ "Directs 'setlocale()' to query 'category' and return the current
+ setting of 'local'."
+ However it does not specify the exact format. Neither do SUSV2 and
+ ISO C 99. So we can use this feature only on selected systems (e.g.
+ those using GNU C Library). */
+#if defined _LIBC || (defined __GLIBC__ && __GLIBC__ >= 2)
+# define HAVE_LOCALE_NULL
+#endif
+
+/* Determine the current locale's name, and canonicalize it into XPG syntax
+ language[_territory][.codeset][@modifier]
+ The codeset part in the result is not reliable; the locale_charset()
+ should be used for codeset information instead.
+ The result must not be freed; it is statically allocated. */
+
+const char *
+gl_locale_name_posix (int category, const char *categoryname)
+{
+ /* Use the POSIX methods of looking to 'LC_ALL', 'LC_xxx', and 'LANG'.
+ On some systems this can be done by the 'setlocale' function itself. */
+#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL
+ return setlocale (category, NULL);
+#else
+ const char *retval;
+
+ /* Setting of LC_ALL overrides all other. */
+ retval = getenv ("LC_ALL");
+ if (retval != NULL && retval[0] != '\0')
+ return retval;
+ /* Next comes the name of the desired category. */
+ retval = getenv (categoryname);
+ if (retval != NULL && retval[0] != '\0')
+ return retval;
+ /* Last possibility is the LANG environment variable. */
+ retval = getenv ("LANG");
+ if (retval != NULL && retval[0] != '\0')
+ return retval;
+
+ return NULL;
+#endif
+}
+
+const char *
+gl_locale_name_default (void)
+{
+ /* POSIX:2001 says:
+ "All implementations shall define a locale as the default locale, to be
+ invoked when no environment variables are set, or set to the empty
+ string. This default locale can be the POSIX locale or any other
+ implementation-defined locale. Some implementations may provide
+ facilities for local installation administrators to set the default
+ locale, customizing it for each location. POSIX:2001 does not require
+ such a facility. */
+
+#if !(HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE || defined(WIN32_NATIVE))
+
+ /* The system does not have a way of setting the locale, other than the
+ POSIX specified environment variables. We use C as default locale. */
+ return "C";
+
+#else
+
+ /* Return an XPG style locale name language[_territory][@modifier].
+ Don't even bother determining the codeset; it's not useful in this
+ context, because message catalogs are not specific to a single
+ codeset. */
+
+# if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE
+ /* MacOS X 10.2 or newer */
+ {
+ /* Cache the locale name, since CoreFoundation calls are expensive. */
+ static const char *cached_localename;
+
+ if (cached_localename == NULL)
+ {
+ char namebuf[256];
+# if HAVE_CFLOCALECOPYCURRENT /* MacOS X 10.3 or newer */
+ CFLocaleRef locale = CFLocaleCopyCurrent ();
+ CFStringRef name = CFLocaleGetIdentifier (locale);
+
+ if (CFStringGetCString (name, namebuf, sizeof(namebuf),
+ kCFStringEncodingASCII))
+ {
+ gl_locale_name_canonicalize (namebuf);
+ cached_localename = strdup (namebuf);
+ }
+ CFRelease (locale);
+# elif HAVE_CFPREFERENCESCOPYAPPVALUE /* MacOS X 10.2 or newer */
+ CFTypeRef value =
+ CFPreferencesCopyAppValue (CFSTR ("AppleLocale"),
+ kCFPreferencesCurrentApplication);
+ if (value != NULL
+ && CFGetTypeID (value) == CFStringGetTypeID ()
+ && CFStringGetCString ((CFStringRef)value, namebuf, sizeof(namebuf),
+ kCFStringEncodingASCII))
+ {
+ gl_locale_name_canonicalize (namebuf);
+ cached_localename = strdup (namebuf);
+ }
+# endif
+ if (cached_localename == NULL)
+ cached_localename = "C";
+ }
+ return cached_localename;
+ }
+
+# endif
+
+# if defined(WIN32_NATIVE) /* WIN32, not Cygwin */
+ {
+ LCID lcid;
+
+ /* Use native Win32 API locale ID. */
+ lcid = GetThreadLocale ();
+
+ return gl_locale_name_from_win32_LCID (lcid);
+ }
+# endif
+#endif
+}
+
+const char *
+gl_locale_name (int category, const char *categoryname)
+{
+ const char *retval;
+
+ retval = gl_locale_name_posix (category, categoryname);
+ if (retval != NULL)
+ return retval;
+
+ return gl_locale_name_default ();
+}
diff --git a/lib/localename.h b/lib/localename.h
new file mode 100644
index 00000000..f633ad8b
--- /dev/null
+++ b/lib/localename.h
@@ -0,0 +1,77 @@
+/* Determine name of the currently selected locale.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library 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. */
+
+#ifndef _GL_LOCALENAME_H
+#define _GL_LOCALENAME_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Determine the current locale's name.
+ It considers both the POSIX notion of locale name (see function
+ gl_locale_name_posix) and the system notion of locale name (see function
+ gl_locale_name_default).
+ CATEGORY is a locale category abbreviation, as defined in <locale.h>,
+ but not LC_ALL. E.g. LC_MESSAGES.
+ CATEGORYNAME is the name of CATEGORY as a string, e.g. "LC_MESSAGES".
+ Return the locale category's name, canonicalized into XPG syntax
+ language[_territory][.codeset][@modifier]
+ The codeset part in the result is not reliable; the locale_charset()
+ should be used for codeset information instead.
+ The result must not be freed; it is statically allocated. */
+extern const char * gl_locale_name (int category, const char *categoryname);
+
+/* Determine the current locale's name, as specified by setlocale() calls
+ or by environment variables.
+ CATEGORY is a locale category abbreviation, as defined in <locale.h>,
+ but not LC_ALL. E.g. LC_MESSAGES.
+ CATEGORYNAME is the name of CATEGORY as a string, e.g. "LC_MESSAGES".
+ Return the locale category's name, canonicalized into XPG syntax
+ language[_territory][.codeset][@modifier]
+ or NULL if no locale has been specified to setlocale() or by environment
+ variables.
+ The codeset part in the result is not reliable; the locale_charset()
+ should be used for codeset information instead.
+ The result must not be freed; it is statically allocated. */
+extern const char * gl_locale_name_posix (int category, const char *categoryname);
+
+/* Determine the default locale's name. This is the current locale's name,
+ if not specified by setlocale() calls or by environment variables. This
+ locale name is usually determined by systems settings that the user can
+ manipulate through a GUI.
+
+ Quoting POSIX:2001:
+ "All implementations shall define a locale as the default locale,
+ to be invoked when no environment variables are set, or set to the
+ empty string. This default locale can be the C locale or any other
+ implementation-defined locale. Some implementations may provide
+ facilities for local installation administrators to set the default
+ locale, customizing it for each location. IEEE Std 1003.1-2001 does
+ not require such a facility."
+
+ The result must not be freed; it is statically allocated. */
+extern const char * gl_locale_name_default (void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_LOCALENAME_H */
diff --git a/lib/malloc.c b/lib/malloc.c
new file mode 100644
index 00000000..9111c7a1
--- /dev/null
+++ b/lib/malloc.c
@@ -0,0 +1,57 @@
+/* malloc() function that is glibc compatible.
+
+ Copyright (C) 1997, 1998, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+/* written by Jim Meyering and Bruno Haible */
+
+#include <config.h>
+/* Only the AC_FUNC_MALLOC macro defines 'malloc' already in config.h. */
+#ifdef malloc
+# define NEED_MALLOC_GNU
+# undef malloc
+#endif
+
+/* Specification. */
+#include <stdlib.h>
+
+#include <errno.h>
+
+/* Call the system's malloc below. */
+#undef malloc
+
+/* Allocate an N-byte block of memory from the heap.
+ If N is zero, allocate a 1-byte block. */
+
+void *
+rpl_malloc (size_t n)
+{
+ void *result;
+
+#ifdef NEED_MALLOC_GNU
+ if (n == 0)
+ n = 1;
+#endif
+
+ result = malloc (n);
+
+#if !HAVE_MALLOC_POSIX
+ if (result == NULL)
+ errno = ENOMEM;
+#endif
+
+ return result;
+}
diff --git a/lib/malloca.c b/lib/malloca.c
new file mode 100644
index 00000000..7905e615
--- /dev/null
+++ b/lib/malloca.c
@@ -0,0 +1,137 @@
+/* Safe automatic memory allocation.
+ Copyright (C) 2003, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2003.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+#include <config.h>
+
+/* Specification. */
+#include "malloca.h"
+
+/* The speed critical point in this file is freea() applied to an alloca()
+ result: it must be fast, to match the speed of alloca(). The speed of
+ mmalloca() and freea() in the other case are not critical, because they
+ are only invoked for big memory sizes. */
+
+#if HAVE_ALLOCA
+
+/* Store the mmalloca() results in a hash table. This is needed to reliably
+ distinguish a mmalloca() result and an alloca() result.
+
+ Although it is possible that the same pointer is returned by alloca() and
+ by mmalloca() at different times in the same application, it does not lead
+ to a bug in freea(), because:
+ - Before a pointer returned by alloca() can point into malloc()ed memory,
+ the function must return, and once this has happened the programmer must
+ not call freea() on it anyway.
+ - Before a pointer returned by mmalloca() can point into the stack, it
+ must be freed. The only function that can free it is freea(), and
+ when freea() frees it, it also removes it from the hash table. */
+
+#define MAGIC_NUMBER 0x1415fb4a
+#define MAGIC_SIZE sizeof (int)
+/* This is how the header info would look like without any alignment
+ considerations. */
+struct preliminary_header { void *next; char room[MAGIC_SIZE]; };
+/* But the header's size must be a multiple of sa_alignment_max. */
+#define HEADER_SIZE \
+ (((sizeof (struct preliminary_header) + sa_alignment_max - 1) / sa_alignment_max) * sa_alignment_max)
+struct header { void *next; char room[HEADER_SIZE - sizeof (struct preliminary_header) + MAGIC_SIZE]; };
+/* Verify that HEADER_SIZE == sizeof (struct header). */
+typedef int verify1[2 * (HEADER_SIZE == sizeof (struct header)) - 1];
+/* We make the hash table quite big, so that during lookups the probability
+ of empty hash buckets is quite high. There is no need to make the hash
+ table resizable, because when the hash table gets filled so much that the
+ lookup becomes slow, it means that the application has memory leaks. */
+#define HASH_TABLE_SIZE 257
+static void * mmalloca_results[HASH_TABLE_SIZE];
+
+#endif
+
+void *
+mmalloca (size_t n)
+{
+#if HAVE_ALLOCA
+ /* Allocate one more word, that serves as an indicator for malloc()ed
+ memory, so that freea() of an alloca() result is fast. */
+ size_t nplus = n + HEADER_SIZE;
+
+ if (nplus >= n)
+ {
+ char *p = (char *) malloc (nplus);
+
+ if (p != NULL)
+ {
+ size_t slot;
+
+ p += HEADER_SIZE;
+
+ /* Put a magic number into the indicator word. */
+ ((int *) p)[-1] = MAGIC_NUMBER;
+
+ /* Enter p into the hash table. */
+ slot = (unsigned long) p % HASH_TABLE_SIZE;
+ ((struct header *) (p - HEADER_SIZE))->next = mmalloca_results[slot];
+ mmalloca_results[slot] = p;
+
+ return p;
+ }
+ }
+ /* Out of memory. */
+ return NULL;
+#else
+# if !MALLOC_0_IS_NONNULL
+ if (n == 0)
+ n = 1;
+# endif
+ return malloc (n);
+#endif
+}
+
+#if HAVE_ALLOCA
+void
+freea (void *p)
+{
+ /* mmalloca() may have returned NULL. */
+ if (p != NULL)
+ {
+ /* Attempt to quickly distinguish the mmalloca() result - which has
+ a magic indicator word - and the alloca() result - which has an
+ uninitialized indicator word. It is for this test that sa_increment
+ additional bytes are allocated in the alloca() case. */
+ if (((int *) p)[-1] == MAGIC_NUMBER)
+ {
+ /* Looks like a mmalloca() result. To see whether it really is one,
+ perform a lookup in the hash table. */
+ size_t slot = (unsigned long) p % HASH_TABLE_SIZE;
+ void **chain = &mmalloca_results[slot];
+ for (; *chain != NULL;)
+ {
+ if (*chain == p)
+ {
+ /* Found it. Remove it from the hash table and free it. */
+ char *p_begin = (char *) p - HEADER_SIZE;
+ *chain = ((struct header *) p_begin)->next;
+ free (p_begin);
+ return;
+ }
+ chain = &((struct header *) ((char *) *chain - HEADER_SIZE))->next;
+ }
+ }
+ /* At this point, we know it was not a mmalloca() result. */
+ }
+}
+#endif
diff --git a/lib/malloca.h b/lib/malloca.h
new file mode 100644
index 00000000..7d92b0af
--- /dev/null
+++ b/lib/malloca.h
@@ -0,0 +1,134 @@
+/* Safe automatic memory allocation.
+ Copyright (C) 2003-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2003.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+#ifndef _MALLOCA_H
+#define _MALLOCA_H
+
+#include <alloca.h>
+#include <stddef.h>
+#include <stdlib.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* safe_alloca(N) is equivalent to alloca(N) when it is safe to call
+ alloca(N); otherwise it returns NULL. It either returns N bytes of
+ memory allocated on the stack, that lasts until the function returns,
+ or NULL.
+ Use of safe_alloca should be avoided:
+ - inside arguments of function calls - undefined behaviour,
+ - in inline functions - the allocation may actually last until the
+ calling function returns.
+*/
+#if HAVE_ALLOCA
+/* The OS usually guarantees 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
+ allocate anything larger than 4096 bytes. Also care for the possibility
+ of a few compiler-allocated temporary stack slots.
+ This must be a macro, not an inline function. */
+# define safe_alloca(N) ((N) < 4032 ? alloca (N) : NULL)
+#else
+# define safe_alloca(N) ((void) (N), NULL)
+#endif
+
+/* malloca(N) is a safe variant of alloca(N). It allocates N bytes of
+ memory allocated on the stack, that must be freed using freea() before
+ the function returns. Upon failure, it returns NULL. */
+#if HAVE_ALLOCA
+# define malloca(N) \
+ ((N) < 4032 - sa_increment \
+ ? (void *) ((char *) alloca ((N) + sa_increment) + sa_increment) \
+ : mmalloca (N))
+#else
+# define malloca(N) \
+ mmalloca (N)
+#endif
+extern void * mmalloca (size_t n);
+
+/* Free a block of memory allocated through malloca(). */
+#if HAVE_ALLOCA
+extern void freea (void *p);
+#else
+# define freea free
+#endif
+
+/* nmalloca(N,S) is an overflow-safe variant of malloca (N * S).
+ It allocates an array of N objects, each with S bytes of memory,
+ on the stack. S must be positive and N must be nonnegative.
+ The array must be freed using freea() before the function returns. */
+#if 1
+/* Cf. the definition of xalloc_oversized. */
+# define nmalloca(n, s) \
+ ((n) > (size_t) (sizeof (ptrdiff_t) <= sizeof (size_t) ? -1 : -2) / (s) \
+ ? NULL \
+ : malloca ((n) * (s)))
+#else
+extern void * nmalloca (size_t n, size_t s);
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/* ------------------- Auxiliary, non-public definitions ------------------- */
+
+/* Determine the alignment of a type at compile time. */
+#if defined __GNUC__
+# define sa_alignof __alignof__
+#elif defined __cplusplus
+ template <class type> struct sa_alignof_helper { char __slot1; type __slot2; };
+# define sa_alignof(type) offsetof (sa_alignof_helper<type>, __slot2)
+#elif defined __hpux
+ /* Work around a HP-UX 10.20 cc bug with enums constants defined as offsetof
+ values. */
+# define sa_alignof(type) (sizeof (type) <= 4 ? 4 : 8)
+#elif defined _AIX
+ /* Work around an AIX 3.2.5 xlc bug with enums constants defined as offsetof
+ values. */
+# define sa_alignof(type) (sizeof (type) <= 4 ? 4 : 8)
+#else
+# define sa_alignof(type) offsetof (struct { char __slot1; type __slot2; }, __slot2)
+#endif
+
+enum
+{
+/* The desired alignment of memory allocations is the maximum alignment
+ among all elementary types. */
+ sa_alignment_long = sa_alignof (long),
+ sa_alignment_double = sa_alignof (double),
+#if HAVE_LONG_LONG_INT
+ sa_alignment_longlong = sa_alignof (long long),
+#endif
+ sa_alignment_longdouble = sa_alignof (long double),
+ sa_alignment_max = ((sa_alignment_long - 1) | (sa_alignment_double - 1)
+#if HAVE_LONG_LONG_INT
+ | (sa_alignment_longlong - 1)
+#endif
+ | (sa_alignment_longdouble - 1)
+ ) + 1,
+/* The increment that guarantees room for a magic word must be >= sizeof (int)
+ and a multiple of sa_alignment_max. */
+ sa_increment = ((sizeof (int) + sa_alignment_max - 1) / sa_alignment_max) * sa_alignment_max
+};
+
+#endif /* _MALLOCA_H */
diff --git a/lib/malloca.valgrind b/lib/malloca.valgrind
new file mode 100644
index 00000000..52f0a50f
--- /dev/null
+++ b/lib/malloca.valgrind
@@ -0,0 +1,7 @@
+# Suppress a valgrind message about use of uninitialized memory in freea().
+# This use is OK because it provides only a speedup.
+{
+ freea
+ Memcheck:Cond
+ fun:freea
+}
diff --git a/lib/math.in.h b/lib/math.in.h
new file mode 100644
index 00000000..efca0f0b
--- /dev/null
+++ b/lib/math.in.h
@@ -0,0 +1,567 @@
+/* A GNU-like <math.h>.
+
+ Copyright (C) 2002-2003, 2007-2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _GL_MATH_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+/* The include_next requires a split double-inclusion guard. */
+#@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
+
+#ifndef _GL_MATH_H
+#define _GL_MATH_H
+
+
+/* The definition of GL_LINK_WARNING is copied here. */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* POSIX allows platforms that don't support NAN. But all major
+ machines in the past 15 years have supported something close to
+ IEEE NaN, so we define this unconditionally. We also must define
+ it on platforms like Solaris 10, where NAN is present but defined
+ as a function pointer rather than a floating point constant. */
+#if !defined NAN || @REPLACE_NAN@
+# undef NAN
+ /* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */
+# ifdef __DECC
+static float
+_NaN ()
+{
+ static float zero = 0.0f;
+ return zero / zero;
+}
+# define NAN (_NaN())
+# else
+# define NAN (0.0f / 0.0f)
+# endif
+#endif
+
+/* Solaris 10 defines HUGE_VAL, but as a function pointer rather
+ than a floating point constant. */
+#if @REPLACE_HUGE_VAL@
+# undef HUGE_VAL
+# define HUGE_VAL (1.0 / 0.0)
+#endif
+
+/* Write x as
+ x = mantissa * 2^exp
+ where
+ If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
+ If x is zero: mantissa = x, exp = 0.
+ If x is infinite or NaN: mantissa = x, exp unspecified.
+ Store exp in *EXPPTR and return mantissa. */
+#if @GNULIB_FREXP@
+# if @REPLACE_FREXP@
+# define frexp rpl_frexp
+extern double frexp (double x, int *expptr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef frexp
+# define frexp(x,e) \
+ (GL_LINK_WARNING ("frexp is unportable - " \
+ "use gnulib module frexp for portability"), \
+ frexp (x, e))
+#endif
+
+
+#if @GNULIB_MATHL@ || !@HAVE_DECL_ACOSL@
+extern long double acosl (long double x);
+#endif
+#if !@GNULIB_MATHL@ && defined GNULIB_POSIXCHECK
+# undef acosl
+# define acosl(x) \
+ (GL_LINK_WARNING ("acosl is unportable - " \
+ "use gnulib module mathl for portability"), \
+ acosl (x))
+#endif
+
+
+#if @GNULIB_MATHL@ || !@HAVE_DECL_ASINL@
+extern long double asinl (long double x);
+#endif
+#if !@GNULIB_MATHL@ && defined GNULIB_POSIXCHECK
+# undef asinl
+# define asinl(x) \
+ (GL_LINK_WARNING ("asinl is unportable - " \
+ "use gnulib module mathl for portability"), \
+ asinl (x))
+#endif
+
+
+#if @GNULIB_MATHL@ || !@HAVE_DECL_ATANL@
+extern long double atanl (long double x);
+#endif
+#if !@GNULIB_MATHL@ && defined GNULIB_POSIXCHECK
+# undef atanl
+# define atanl(x) \
+ (GL_LINK_WARNING ("atanl is unportable - " \
+ "use gnulib module mathl for portability"), \
+ atanl (x))
+#endif
+
+
+#if @GNULIB_CEILF@
+# if @REPLACE_CEILF@
+# define ceilf rpl_ceilf
+extern float ceilf (float x);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef ceilf
+# define ceilf(x) \
+ (GL_LINK_WARNING ("ceilf is unportable - " \
+ "use gnulib module ceilf for portability"), \
+ ceilf (x))
+#endif
+
+#if @GNULIB_CEILL@
+# if @REPLACE_CEILL@
+# define ceill rpl_ceill
+extern long double ceill (long double x);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef ceill
+# define ceill(x) \
+ (GL_LINK_WARNING ("ceill is unportable - " \
+ "use gnulib module ceill for portability"), \
+ ceill (x))
+#endif
+
+
+#if @GNULIB_MATHL@ || !@HAVE_DECL_COSL@
+extern long double cosl (long double x);
+#endif
+#if !@GNULIB_MATHL@ && defined GNULIB_POSIXCHECK
+# undef cosl
+# define cosl(x) \
+ (GL_LINK_WARNING ("cosl is unportable - " \
+ "use gnulib module mathl for portability"), \
+ cosl (x))
+#endif
+
+
+#if @GNULIB_MATHL@ || !@HAVE_DECL_EXPL@
+extern long double expl (long double x);
+#endif
+#if !@GNULIB_MATHL@ && defined GNULIB_POSIXCHECK
+# undef expl
+# define expl(x) \
+ (GL_LINK_WARNING ("expl is unportable - " \
+ "use gnulib module mathl for portability"), \
+ expl (x))
+#endif
+
+
+#if @GNULIB_FLOORF@
+# if @REPLACE_FLOORF@
+# define floorf rpl_floorf
+extern float floorf (float x);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef floorf
+# define floorf(x) \
+ (GL_LINK_WARNING ("floorf is unportable - " \
+ "use gnulib module floorf for portability"), \
+ floorf (x))
+#endif
+
+#if @GNULIB_FLOORL@
+# if @REPLACE_FLOORL@
+# define floorl rpl_floorl
+extern long double floorl (long double x);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef floorl
+# define floorl(x) \
+ (GL_LINK_WARNING ("floorl is unportable - " \
+ "use gnulib module floorl for portability"), \
+ floorl (x))
+#endif
+
+
+/* Write x as
+ x = mantissa * 2^exp
+ where
+ If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
+ If x is zero: mantissa = x, exp = 0.
+ If x is infinite or NaN: mantissa = x, exp unspecified.
+ Store exp in *EXPPTR and return mantissa. */
+#if @GNULIB_FREXPL@ && @REPLACE_FREXPL@
+# define frexpl rpl_frexpl
+#endif
+#if (@GNULIB_FREXPL@ && @REPLACE_FREXPL@) || !@HAVE_DECL_FREXPL@
+extern long double frexpl (long double x, int *expptr);
+#endif
+#if !@GNULIB_FREXPL@ && defined GNULIB_POSIXCHECK
+# undef frexpl
+# define frexpl(x,e) \
+ (GL_LINK_WARNING ("frexpl is unportable - " \
+ "use gnulib module frexpl for portability"), \
+ frexpl (x, e))
+#endif
+
+
+/* Return x * 2^exp. */
+#if @GNULIB_LDEXPL@ && @REPLACE_LDEXPL@
+# define ldexpl rpl_ldexpl
+#endif
+#if (@GNULIB_LDEXPL@ && @REPLACE_LDEXPL@) || !@HAVE_DECL_LDEXPL@
+extern long double ldexpl (long double x, int exp);
+#endif
+#if !@GNULIB_LDEXPL@ && defined GNULIB_POSIXCHECK
+# undef ldexpl
+# define ldexpl(x,e) \
+ (GL_LINK_WARNING ("ldexpl is unportable - " \
+ "use gnulib module ldexpl for portability"), \
+ ldexpl (x, e))
+#endif
+
+
+#if @GNULIB_MATHL@ || !@HAVE_DECL_LOGL@
+extern long double logl (long double x);
+#endif
+#if !@GNULIB_MATHL@ && defined GNULIB_POSIXCHECK
+# undef logl
+# define logl(x) \
+ (GL_LINK_WARNING ("logl is unportable - " \
+ "use gnulib module mathl for portability"), \
+ logl (x))
+#endif
+
+
+#if @GNULIB_ROUNDF@
+# if @REPLACE_ROUNDF@
+# undef roundf
+# define roundf rpl_roundf
+extern float roundf (float x);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef roundf
+# define roundf(x) \
+ (GL_LINK_WARNING ("roundf is unportable - " \
+ "use gnulib module roundf for portability"), \
+ roundf (x))
+#endif
+
+#if @GNULIB_ROUND@
+# if @REPLACE_ROUND@
+# undef round
+# define round rpl_round
+extern double round (double x);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef round
+# define round(x) \
+ (GL_LINK_WARNING ("round is unportable - " \
+ "use gnulib module round for portability"), \
+ round (x))
+#endif
+
+#if @GNULIB_ROUNDL@
+# if @REPLACE_ROUNDL@
+# undef roundl
+# define roundl rpl_roundl
+extern long double roundl (long double x);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef roundl
+# define roundl(x) \
+ (GL_LINK_WARNING ("roundl is unportable - " \
+ "use gnulib module roundl for portability"), \
+ roundl (x))
+#endif
+
+
+#if @GNULIB_MATHL@ || !@HAVE_DECL_SINL@
+extern long double sinl (long double x);
+#endif
+#if !@GNULIB_MATHL@ && defined GNULIB_POSIXCHECK
+# undef sinl
+# define sinl(x) \
+ (GL_LINK_WARNING ("sinl is unportable - " \
+ "use gnulib module mathl for portability"), \
+ sinl (x))
+#endif
+
+
+#if @GNULIB_MATHL@ || !@HAVE_DECL_SQRTL@
+extern long double sqrtl (long double x);
+#endif
+#if !@GNULIB_MATHL@ && defined GNULIB_POSIXCHECK
+# undef sqrtl
+# define sqrtl(x) \
+ (GL_LINK_WARNING ("sqrtl is unportable - " \
+ "use gnulib module mathl for portability"), \
+ sqrtl (x))
+#endif
+
+
+#if @GNULIB_MATHL@ || !@HAVE_DECL_TANL@
+extern long double tanl (long double x);
+#endif
+#if !@GNULIB_MATHL@ && defined GNULIB_POSIXCHECK
+# undef tanl
+# define tanl(x) \
+ (GL_LINK_WARNING ("tanl is unportable - " \
+ "use gnulib module mathl for portability"), \
+ tanl (x))
+#endif
+
+
+#if @GNULIB_TRUNCF@
+# if !@HAVE_DECL_TRUNCF@
+# define truncf rpl_truncf
+extern float truncf (float x);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef truncf
+# define truncf(x) \
+ (GL_LINK_WARNING ("truncf is unportable - " \
+ "use gnulib module truncf for portability"), \
+ truncf (x))
+#endif
+
+#if @GNULIB_TRUNC@
+# if !@HAVE_DECL_TRUNC@
+# define trunc rpl_trunc
+extern double trunc (double x);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef trunc
+# define trunc(x) \
+ (GL_LINK_WARNING ("trunc is unportable - " \
+ "use gnulib module trunc for portability"), \
+ trunc (x))
+#endif
+
+#if @GNULIB_TRUNCL@
+# if @REPLACE_TRUNCL@
+# undef truncl
+# define truncl rpl_truncl
+extern long double truncl (long double x);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef truncl
+# define truncl(x) \
+ (GL_LINK_WARNING ("truncl is unportable - " \
+ "use gnulib module truncl for portability"), \
+ truncl (x))
+#endif
+
+
+#if @GNULIB_ISFINITE@
+# if @REPLACE_ISFINITE@
+extern int gl_isfinitef (float x);
+extern int gl_isfinited (double x);
+extern int gl_isfinitel (long double x);
+# undef isfinite
+# define isfinite(x) \
+ (sizeof (x) == sizeof (long double) ? gl_isfinitel (x) : \
+ sizeof (x) == sizeof (double) ? gl_isfinited (x) : \
+ gl_isfinitef (x))
+# endif
+#elif defined GNULIB_POSIXCHECK
+ /* How to override a macro? */
+#endif
+
+
+#if @GNULIB_ISINF@
+# if @REPLACE_ISINF@
+extern int gl_isinff (float x);
+extern int gl_isinfd (double x);
+extern int gl_isinfl (long double x);
+# undef isinf
+# define isinf(x) \
+ (sizeof (x) == sizeof (long double) ? gl_isinfl (x) : \
+ sizeof (x) == sizeof (double) ? gl_isinfd (x) : \
+ gl_isinff (x))
+# endif
+#elif defined GNULIB_POSIXCHECK
+ /* How to override a macro? */
+#endif
+
+
+#if @GNULIB_ISNANF@
+/* Test for NaN for 'float' numbers. */
+# if @HAVE_ISNANF@
+/* The original <math.h> included above provides a declaration of isnan macro
+ or (older) isnanf function. */
+# include <math.h>
+# if __GNUC__ >= 4
+ /* GCC 4.0 and newer provides three built-ins for isnan. */
+# undef isnanf
+# define isnanf(x) __builtin_isnanf ((float)(x))
+# elif defined isnan
+# undef isnanf
+# define isnanf(x) isnan ((float)(x))
+# endif
+# else
+/* Test whether X is a NaN. */
+# undef isnanf
+# define isnanf rpl_isnanf
+extern int isnanf (float x);
+# endif
+#endif
+
+#if @GNULIB_ISNAND@
+/* Test for NaN for 'double' numbers.
+ This function is a gnulib extension, unlike isnan() which applied only
+ to 'double' numbers earlier but now is a type-generic macro. */
+# if @HAVE_ISNAND@
+/* The original <math.h> included above provides a declaration of isnan macro. */
+# include <math.h>
+# if __GNUC__ >= 4
+ /* GCC 4.0 and newer provides three built-ins for isnan. */
+# undef isnand
+# define isnand(x) __builtin_isnan ((double)(x))
+# else
+# undef isnand
+# define isnand(x) isnan ((double)(x))
+# endif
+# else
+/* Test whether X is a NaN. */
+# undef isnand
+# define isnand rpl_isnand
+extern int isnand (double x);
+# endif
+#endif
+
+#if @GNULIB_ISNANL@
+/* Test for NaN for 'long double' numbers. */
+# if @HAVE_ISNANL@
+/* The original <math.h> included above provides a declaration of isnan macro or (older) isnanl function. */
+# include <math.h>
+# if __GNUC__ >= 4
+ /* GCC 4.0 and newer provides three built-ins for isnan. */
+# undef isnanl
+# define isnanl(x) __builtin_isnanl ((long double)(x))
+# elif defined isnan
+# undef isnanl
+# define isnanl(x) isnan ((long double)(x))
+# endif
+# else
+/* Test whether X is a NaN. */
+# undef isnanl
+# define isnanl rpl_isnanl
+extern int isnanl (long double x);
+# endif
+#endif
+
+/* This must come *after* the snippets for GNULIB_ISNANF and GNULIB_ISNANL! */
+#if @GNULIB_ISNAN@
+# if @REPLACE_ISNAN@
+/* We can't just use the isnanf macro (e.g.) as exposed by
+ isnanf.h (e.g.) here, because those may end up being macros
+ that recursively expand back to isnan. So use the gnulib
+ replacements for them directly. */
+# if @HAVE_ISNANF@ && __GNUC__ >= 4
+# define gl_isnan_f(x) __builtin_isnan ((float)(x))
+# else
+extern int rpl_isnanf (float x);
+# define gl_isnan_f(x) rpl_isnanf (x)
+# endif
+# if @HAVE_ISNAND@ && __GNUC__ >= 4
+# define gl_isnan_d(x) __builtin_isnan ((double)(x))
+# else
+extern int rpl_isnand (double x);
+# define gl_isnan_d(x) rpl_isnand (x)
+# endif
+# if @HAVE_ISNANL@ && __GNUC__ >= 4
+# define gl_isnan_l(x) __builtin_isnan ((long double)(x))
+# else
+extern int rpl_isnanl (long double x);
+# define gl_isnan_l(x) rpl_isnanl (x)
+# endif
+# undef isnan
+# define isnan(x) \
+ (sizeof (x) == sizeof (long double) ? gl_isnan_l (x) : \
+ sizeof (x) == sizeof (double) ? gl_isnan_d (x) : \
+ gl_isnan_f (x))
+# endif
+#elif defined GNULIB_POSIXCHECK
+ /* How to override a macro? */
+#endif
+
+
+#if @GNULIB_SIGNBIT@
+# if @REPLACE_SIGNBIT_USING_GCC@
+# undef signbit
+ /* GCC 4.0 and newer provides three built-ins for signbit. */
+# define signbit(x) \
+ (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \
+ sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \
+ __builtin_signbitf (x))
+# endif
+# if @REPLACE_SIGNBIT@
+# undef signbit
+extern int gl_signbitf (float arg);
+extern int gl_signbitd (double arg);
+extern int gl_signbitl (long double arg);
+# if __GNUC__ >= 2 && !__STRICT_ANSI__
+# if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT && !defined gl_signbitf
+# define gl_signbitf_OPTIMIZED_MACRO
+# define gl_signbitf(arg) \
+ ({ union { float _value; \
+ unsigned int _word[(sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)]; \
+ } _m; \
+ _m._value = (arg); \
+ (_m._word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1; \
+ })
+# endif
+# if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT && !defined gl_signbitd
+# define gl_signbitd_OPTIMIZED_MACRO
+# define gl_signbitd(arg) \
+ ({ union { double _value; \
+ unsigned int _word[(sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)]; \
+ } _m; \
+ _m._value = (arg); \
+ (_m._word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1; \
+ })
+# endif
+# if defined LDBL_SIGNBIT_WORD && defined LDBL_SIGNBIT_BIT && !defined gl_signbitl
+# define gl_signbitl_OPTIMIZED_MACRO
+# define gl_signbitl(arg) \
+ ({ union { long double _value; \
+ unsigned int _word[(sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)]; \
+ } _m; \
+ _m._value = (arg); \
+ (_m._word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1; \
+ })
+# endif
+# endif
+# define signbit(x) \
+ (sizeof (x) == sizeof (long double) ? gl_signbitl (x) : \
+ sizeof (x) == sizeof (double) ? gl_signbitd (x) : \
+ gl_signbitf (x))
+# endif
+#elif defined GNULIB_POSIXCHECK
+ /* How to override a macro? */
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_MATH_H */
+#endif /* _GL_MATH_H */
diff --git a/lib/mbchar.c b/lib/mbchar.c
new file mode 100644
index 00000000..0851d8ad
--- /dev/null
+++ b/lib/mbchar.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2001, 2006 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+
+#include <config.h>
+
+#include <limits.h>
+
+#include "mbchar.h"
+
+#if IS_BASIC_ASCII
+
+/* Bit table of characters in the ISO C "basic character set". */
+const unsigned int is_basic_table [UCHAR_MAX / 32 + 1] =
+{
+ 0x00001a00, /* '\t' '\v' '\f' */
+ 0xffffffef, /* ' '...'#' '%'...'?' */
+ 0xfffffffe, /* 'A'...'Z' '[' '\\' ']' '^' '_' */
+ 0x7ffffffe /* 'a'...'z' '{' '|' '}' '~' */
+ /* The remaining bits are 0. */
+};
+
+#endif /* IS_BASIC_ASCII */
diff --git a/lib/mbchar.h b/lib/mbchar.h
new file mode 100644
index 00000000..e184dd02
--- /dev/null
+++ b/lib/mbchar.h
@@ -0,0 +1,350 @@
+/* Multibyte character data type.
+ Copyright (C) 2001, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+/* A multibyte character is a short subsequence of a char* string,
+ representing a single wide character.
+
+ We use multibyte characters instead of wide characters because of
+ the following goals:
+ 1) correct multibyte handling, i.e. operate according to the LC_CTYPE
+ locale,
+ 2) ease of maintenance, i.e. the maintainer needs not know all details
+ of the ISO C 99 standard,
+ 3) don't fail grossly if the input is not in the encoding set by the
+ locale, because often different encodings are in use in the same
+ countries (ISO-8859-1/UTF-8, EUC-JP/Shift_JIS, ...),
+ 4) fast in the case of ASCII characters,
+ 5) portability, i.e. don't make unportable assumptions about wchar_t.
+
+ Multibyte characters are only accessed through the mb* macros.
+
+ mb_ptr (mbc)
+ return a pointer to the beginning of the multibyte sequence.
+
+ mb_len (mbc)
+ returns the number of bytes occupied by the multibyte sequence.
+ Always > 0.
+
+ mb_iseq (mbc, sc)
+ returns true if mbc is the standard ASCII character sc.
+
+ mb_isnul (mbc)
+ returns true if mbc is the nul character.
+
+ mb_cmp (mbc1, mbc2)
+ returns a positive, zero, or negative value depending on whether mbc1
+ sorts after, same or before mbc2.
+
+ mb_casecmp (mbc1, mbc2)
+ returns a positive, zero, or negative value depending on whether mbc1
+ sorts after, same or before mbc2, modulo upper/lowercase conversion.
+
+ mb_equal (mbc1, mbc2)
+ returns true if mbc1 and mbc2 are equal.
+
+ mb_caseequal (mbc1, mbc2)
+ returns true if mbc1 and mbc2 are equal modulo upper/lowercase conversion.
+
+ mb_isalnum (mbc)
+ returns true if mbc is alphanumeric.
+
+ mb_isalpha (mbc)
+ returns true if mbc is alphabetic.
+
+ mb_isascii(mbc)
+ returns true if mbc is plain ASCII.
+
+ mb_isblank (mbc)
+ returns true if mbc is a blank.
+
+ mb_iscntrl (mbc)
+ returns true if mbc is a control character.
+
+ mb_isdigit (mbc)
+ returns true if mbc is a decimal digit.
+
+ mb_isgraph (mbc)
+ returns true if mbc is a graphic character.
+
+ mb_islower (mbc)
+ returns true if mbc is lowercase.
+
+ mb_isprint (mbc)
+ returns true if mbc is a printable character.
+
+ mb_ispunct (mbc)
+ returns true if mbc is a punctuation character.
+
+ mb_isspace (mbc)
+ returns true if mbc is a space character.
+
+ mb_isupper (mbc)
+ returns true if mbc is uppercase.
+
+ mb_isxdigit (mbc)
+ returns true if mbc is a hexadecimal digit.
+
+ mb_width (mbc)
+ returns the number of columns on the output device occupied by mbc.
+ Always >= 0.
+
+ mb_putc (mbc, stream)
+ outputs mbc on stream, a byte oriented FILE stream opened for output.
+
+ mb_setascii (&mbc, sc)
+ assigns the standard ASCII character sc to mbc.
+
+ mb_copy (&destmbc, &srcmbc)
+ copies srcmbc to destmbc.
+
+ Here are the function prototypes of the macros.
+
+ extern const char * mb_ptr (const mbchar_t mbc);
+ extern size_t mb_len (const mbchar_t mbc);
+ extern bool mb_iseq (const mbchar_t mbc, char sc);
+ extern bool mb_isnul (const mbchar_t mbc);
+ extern int mb_cmp (const mbchar_t mbc1, const mbchar_t mbc2);
+ extern int mb_casecmp (const mbchar_t mbc1, const mbchar_t mbc2);
+ extern bool mb_equal (const mbchar_t mbc1, const mbchar_t mbc2);
+ extern bool mb_caseequal (const mbchar_t mbc1, const mbchar_t mbc2);
+ extern bool mb_isalnum (const mbchar_t mbc);
+ extern bool mb_isalpha (const mbchar_t mbc);
+ extern bool mb_isascii (const mbchar_t mbc);
+ extern bool mb_isblank (const mbchar_t mbc);
+ extern bool mb_iscntrl (const mbchar_t mbc);
+ extern bool mb_isdigit (const mbchar_t mbc);
+ extern bool mb_isgraph (const mbchar_t mbc);
+ extern bool mb_islower (const mbchar_t mbc);
+ extern bool mb_isprint (const mbchar_t mbc);
+ extern bool mb_ispunct (const mbchar_t mbc);
+ extern bool mb_isspace (const mbchar_t mbc);
+ extern bool mb_isupper (const mbchar_t mbc);
+ extern bool mb_isxdigit (const mbchar_t mbc);
+ extern int mb_width (const mbchar_t mbc);
+ extern void mb_putc (const mbchar_t mbc, FILE *stream);
+ extern void mb_setascii (mbchar_t *new, char sc);
+ extern void mb_copy (mbchar_t *new, const mbchar_t *old);
+ */
+
+#ifndef _MBCHAR_H
+#define _MBCHAR_H 1
+
+#include <stdbool.h>
+#include <string.h>
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.1 has a bug: <stdio.h> and <time.h> must be included before
+ <wchar.h>. */
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+#include <wctype.h>
+
+#define MBCHAR_BUF_SIZE 24
+
+struct mbchar
+{
+ const char *ptr; /* pointer to current character */
+ size_t bytes; /* number of bytes of current character, > 0 */
+ bool wc_valid; /* true if wc is a valid wide character */
+ wchar_t wc; /* if wc_valid: the current character */
+ char buf[MBCHAR_BUF_SIZE]; /* room for the bytes, used for file input only */
+};
+
+/* EOF (not a real character) is represented with bytes = 0 and
+ wc_valid = false. */
+
+typedef struct mbchar mbchar_t;
+
+/* Access the current character. */
+#define mb_ptr(mbc) ((mbc).ptr)
+#define mb_len(mbc) ((mbc).bytes)
+
+/* Comparison of characters. */
+#define mb_iseq(mbc, sc) ((mbc).wc_valid && (mbc).wc == (sc))
+#define mb_isnul(mbc) ((mbc).wc_valid && (mbc).wc == 0)
+#define mb_cmp(mbc1, mbc2) \
+ ((mbc1).wc_valid \
+ ? ((mbc2).wc_valid \
+ ? (int) (mbc1).wc - (int) (mbc2).wc \
+ : -1) \
+ : ((mbc2).wc_valid \
+ ? 1 \
+ : (mbc1).bytes == (mbc2).bytes \
+ ? memcmp ((mbc1).ptr, (mbc2).ptr, (mbc1).bytes) \
+ : (mbc1).bytes < (mbc2).bytes \
+ ? (memcmp ((mbc1).ptr, (mbc2).ptr, (mbc1).bytes) > 0 ? 1 : -1) \
+ : (memcmp ((mbc1).ptr, (mbc2).ptr, (mbc2).bytes) >= 0 ? 1 : -1)))
+#define mb_casecmp(mbc1, mbc2) \
+ ((mbc1).wc_valid \
+ ? ((mbc2).wc_valid \
+ ? (int) towlower ((mbc1).wc) - (int) towlower ((mbc2).wc) \
+ : -1) \
+ : ((mbc2).wc_valid \
+ ? 1 \
+ : (mbc1).bytes == (mbc2).bytes \
+ ? memcmp ((mbc1).ptr, (mbc2).ptr, (mbc1).bytes) \
+ : (mbc1).bytes < (mbc2).bytes \
+ ? (memcmp ((mbc1).ptr, (mbc2).ptr, (mbc1).bytes) > 0 ? 1 : -1) \
+ : (memcmp ((mbc1).ptr, (mbc2).ptr, (mbc2).bytes) >= 0 ? 1 : -1)))
+#define mb_equal(mbc1, mbc2) \
+ ((mbc1).wc_valid && (mbc2).wc_valid \
+ ? (mbc1).wc == (mbc2).wc \
+ : (mbc1).bytes == (mbc2).bytes \
+ && memcmp ((mbc1).ptr, (mbc2).ptr, (mbc1).bytes) == 0)
+#define mb_caseequal(mbc1, mbc2) \
+ ((mbc1).wc_valid && (mbc2).wc_valid \
+ ? towlower ((mbc1).wc) == towlower ((mbc2).wc) \
+ : (mbc1).bytes == (mbc2).bytes \
+ && memcmp ((mbc1).ptr, (mbc2).ptr, (mbc1).bytes) == 0)
+
+/* <ctype.h>, <wctype.h> classification. */
+#define mb_isascii(mbc) \
+ ((mbc).wc_valid && (mbc).wc >= 0 && (mbc).wc <= 127)
+#define mb_isalnum(mbc) ((mbc).wc_valid && iswalnum ((mbc).wc))
+#define mb_isalpha(mbc) ((mbc).wc_valid && iswalpha ((mbc).wc))
+#define mb_isblank(mbc) ((mbc).wc_valid && iswblank ((mbc).wc))
+#define mb_iscntrl(mbc) ((mbc).wc_valid && iswcntrl ((mbc).wc))
+#define mb_isdigit(mbc) ((mbc).wc_valid && iswdigit ((mbc).wc))
+#define mb_isgraph(mbc) ((mbc).wc_valid && iswgraph ((mbc).wc))
+#define mb_islower(mbc) ((mbc).wc_valid && iswlower ((mbc).wc))
+#define mb_isprint(mbc) ((mbc).wc_valid && iswprint ((mbc).wc))
+#define mb_ispunct(mbc) ((mbc).wc_valid && iswpunct ((mbc).wc))
+#define mb_isspace(mbc) ((mbc).wc_valid && iswspace ((mbc).wc))
+#define mb_isupper(mbc) ((mbc).wc_valid && iswupper ((mbc).wc))
+#define mb_isxdigit(mbc) ((mbc).wc_valid && iswxdigit ((mbc).wc))
+
+/* Extra <wchar.h> function. */
+
+/* Unprintable characters appear as a small box of width 1. */
+#define MB_UNPRINTABLE_WIDTH 1
+
+static inline int
+mb_width_aux (wint_t wc)
+{
+ int w = wcwidth (wc);
+ /* For unprintable characters, arbitrarily return 0 for control characters
+ and MB_UNPRINTABLE_WIDTH otherwise. */
+ return (w >= 0 ? w : iswcntrl (wc) ? 0 : MB_UNPRINTABLE_WIDTH);
+}
+
+#define mb_width(mbc) \
+ ((mbc).wc_valid ? mb_width_aux ((mbc).wc) : MB_UNPRINTABLE_WIDTH)
+
+/* Output. */
+#define mb_putc(mbc, stream) fwrite ((mbc).ptr, 1, (mbc).bytes, (stream))
+
+/* Assignment. */
+#define mb_setascii(mbc, sc) \
+ ((mbc)->ptr = (mbc)->buf, (mbc)->bytes = 1, (mbc)->wc_valid = 1, \
+ (mbc)->wc = (mbc)->buf[0] = (sc))
+
+/* Copying a character. */
+static inline void
+mb_copy (mbchar_t *new_mbc, const mbchar_t *old_mbc)
+{
+ if (old_mbc->ptr == &old_mbc->buf[0])
+ {
+ memcpy (&new_mbc->buf[0], &old_mbc->buf[0], old_mbc->bytes);
+ new_mbc->ptr = &new_mbc->buf[0];
+ }
+ else
+ new_mbc->ptr = old_mbc->ptr;
+ new_mbc->bytes = old_mbc->bytes;
+ if ((new_mbc->wc_valid = old_mbc->wc_valid))
+ new_mbc->wc = old_mbc->wc;
+}
+
+
+/* is_basic(c) tests whether the single-byte character c is in the
+ ISO C "basic character set".
+ This is a convenience function, and is in this file only to share code
+ between mbiter_multi.h and mbfile_multi.h. */
+#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 ISO-646, not EBCDIC. */
+# define IS_BASIC_ASCII 1
+
+extern const unsigned int is_basic_table[];
+
+static inline bool
+is_basic (char c)
+{
+ return (is_basic_table [(unsigned char) c >> 5] >> ((unsigned char) c & 31))
+ & 1;
+}
+
+#else
+
+static inline bool
+is_basic (char c)
+{
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ 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':
+ case '[': case '\\': case ']': case '^': case '_':
+ 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': case '{': case '|': case '}': case '~':
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+#endif
+
+#endif /* _MBCHAR_H */
diff --git a/lib/mbiter.h b/lib/mbiter.h
new file mode 100644
index 00000000..a4782d4b
--- /dev/null
+++ b/lib/mbiter.h
@@ -0,0 +1,215 @@
+/* Iterating through multibyte strings: macros for multi-byte encodings.
+ Copyright (C) 2001, 2005, 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+/* The macros in this file implement forward iteration through a
+ multi-byte string.
+
+ With these macros, an iteration loop that looks like
+
+ char *iter;
+ for (iter = buf; iter < buf + buflen; iter++)
+ {
+ do_something (*iter);
+ }
+
+ becomes
+
+ mbi_iterator_t iter;
+ for (mbi_init (iter, buf, buflen); mbi_avail (iter); mbi_advance (iter))
+ {
+ do_something (mbi_cur_ptr (iter), mb_len (mbi_cur (iter)));
+ }
+
+ The benefit of these macros over plain use of mbrtowc is:
+ - Handling of invalid multibyte sequences is possible without
+ making the code more complicated, while still preserving the
+ invalid multibyte sequences.
+
+ mbi_iterator_t
+ is a type usable for variable declarations.
+
+ mbi_init (iter, startptr, length)
+ initializes the iterator, starting at startptr and crossing length bytes.
+
+ mbi_avail (iter)
+ returns true if there are more multibyte chracters available before
+ the end of string is reached. In this case, mbi_cur (iter) is
+ initialized to the next multibyte chracter.
+
+ mbi_advance (iter)
+ advances the iterator by one multibyte character.
+
+ mbi_cur (iter)
+ returns the current multibyte character, of type mbchar_t. All the
+ macros defined in mbchar.h can be used on it.
+
+ mbi_cur_ptr (iter)
+ return a pointer to the beginning of the current multibyte character.
+
+ mbi_reloc (iter, ptrdiff)
+ relocates iterator when the string is moved by ptrdiff bytes.
+
+ mbi_copy (&destiter, &srciter)
+ copies srciter to destiter.
+
+ Here are the function prototypes of the macros.
+
+ extern void mbi_init (mbi_iterator_t iter,
+ const char *startptr, size_t length);
+ extern bool mbi_avail (mbi_iterator_t iter);
+ extern void mbi_advance (mbi_iterator_t iter);
+ extern mbchar_t mbi_cur (mbi_iterator_t iter);
+ extern const char * mbi_cur_ptr (mbi_iterator_t iter);
+ extern void mbi_reloc (mbi_iterator_t iter, ptrdiff_t ptrdiff);
+ extern void mbi_copy (mbi_iterator_t *new, const mbi_iterator_t *old);
+ */
+
+#ifndef _MBITER_H
+#define _MBITER_H 1
+
+#include <assert.h>
+#include <stdbool.h>
+#include <stddef.h>
+#include <string.h>
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.1 has a bug: <stdio.h> and <time.h> must be included before
+ <wchar.h>. */
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+
+#include "mbchar.h"
+
+struct mbiter_multi
+{
+ const char *limit; /* pointer to end of string */
+ bool in_shift; /* true if next byte may not be interpreted as ASCII */
+ mbstate_t state; /* if in_shift: current shift state */
+ bool next_done; /* true if mbi_avail has already filled the following */
+ struct mbchar cur; /* the current character:
+ const char *cur.ptr pointer to current character
+ The following are only valid after mbi_avail.
+ size_t cur.bytes number of bytes of current character
+ bool cur.wc_valid true if wc is a valid wide character
+ wchar_t cur.wc if wc_valid: the current character
+ */
+};
+
+static inline void
+mbiter_multi_next (struct mbiter_multi *iter)
+{
+ if (iter->next_done)
+ return;
+ if (iter->in_shift)
+ goto with_shift;
+ /* Handle most ASCII characters quickly, without calling mbrtowc(). */
+ if (is_basic (*iter->cur.ptr))
+ {
+ /* These characters are part of the basic character set. ISO C 99
+ guarantees that their wide character code is identical to their
+ char code. */
+ iter->cur.bytes = 1;
+ iter->cur.wc = *iter->cur.ptr;
+ iter->cur.wc_valid = true;
+ }
+ else
+ {
+ assert (mbsinit (&iter->state));
+ iter->in_shift = true;
+ with_shift:
+ iter->cur.bytes = mbrtowc (&iter->cur.wc, iter->cur.ptr,
+ iter->limit - iter->cur.ptr, &iter->state);
+ if (iter->cur.bytes == (size_t) -1)
+ {
+ /* An invalid multibyte sequence was encountered. */
+ iter->cur.bytes = 1;
+ iter->cur.wc_valid = false;
+ /* Whether to set iter->in_shift = false and reset iter->state
+ or not is not very important; the string is bogus anyway. */
+ }
+ else if (iter->cur.bytes == (size_t) -2)
+ {
+ /* An incomplete multibyte character at the end. */
+ iter->cur.bytes = iter->limit - iter->cur.ptr;
+ iter->cur.wc_valid = false;
+ /* Whether to set iter->in_shift = false and reset iter->state
+ or not is not important; the string end is reached anyway. */
+ }
+ else
+ {
+ if (iter->cur.bytes == 0)
+ {
+ /* A null wide character was encountered. */
+ iter->cur.bytes = 1;
+ assert (*iter->cur.ptr == '\0');
+ assert (iter->cur.wc == 0);
+ }
+ iter->cur.wc_valid = true;
+
+ /* When in the initial state, we can go back treating ASCII
+ characters more quickly. */
+ if (mbsinit (&iter->state))
+ iter->in_shift = false;
+ }
+ }
+ iter->next_done = true;
+}
+
+static inline void
+mbiter_multi_reloc (struct mbiter_multi *iter, ptrdiff_t ptrdiff)
+{
+ iter->cur.ptr += ptrdiff;
+ iter->limit += ptrdiff;
+}
+
+static inline void
+mbiter_multi_copy (struct mbiter_multi *new_iter, const struct mbiter_multi *old_iter)
+{
+ new_iter->limit = old_iter->limit;
+ if ((new_iter->in_shift = old_iter->in_shift))
+ memcpy (&new_iter->state, &old_iter->state, sizeof (mbstate_t));
+ else
+ memset (&new_iter->state, 0, sizeof (mbstate_t));
+ new_iter->next_done = old_iter->next_done;
+ mb_copy (&new_iter->cur, &old_iter->cur);
+}
+
+/* Iteration macros. */
+typedef struct mbiter_multi mbi_iterator_t;
+#define mbi_init(iter, startptr, length) \
+ ((iter).cur.ptr = (startptr), (iter).limit = (iter).cur.ptr + (length), \
+ (iter).in_shift = false, memset (&(iter).state, '\0', sizeof (mbstate_t)), \
+ (iter).next_done = false)
+#define mbi_avail(iter) \
+ ((iter).cur.ptr < (iter).limit && (mbiter_multi_next (&(iter)), true))
+#define mbi_advance(iter) \
+ ((iter).cur.ptr += (iter).cur.bytes, (iter).next_done = false)
+
+/* Access to the current character. */
+#define mbi_cur(iter) (iter).cur
+#define mbi_cur_ptr(iter) (iter).cur.ptr
+
+/* Relocation. */
+#define mbi_reloc(iter, ptrdiff) mbiter_multi_reloc (&iter, ptrdiff)
+
+/* Copying an iterator. */
+#define mbi_copy mbiter_multi_copy
+
+#endif /* _MBITER_H */
diff --git a/lib/mbrtowc.c b/lib/mbrtowc.c
new file mode 100644
index 00000000..7b528e80
--- /dev/null
+++ b/lib/mbrtowc.c
@@ -0,0 +1,386 @@
+/* Convert multibyte character to wide character.
+ Copyright (C) 1999-2002, 2005-2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2008.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <wchar.h>
+
+#if GNULIB_defined_mbstate_t
+/* Implement mbrtowc() on top of mbtowc(). */
+
+# include <errno.h>
+# include <stdlib.h>
+
+# include "localcharset.h"
+# include "streq.h"
+# include "verify.h"
+
+
+verify (sizeof (mbstate_t) >= 4);
+
+static char internal_state[4];
+
+size_t
+mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
+{
+ char *pstate = (char *)ps;
+
+ if (pstate == NULL)
+ pstate = internal_state;
+
+ if (s == NULL)
+ {
+ pwc = NULL;
+ s = "";
+ n = 1;
+ }
+
+ if (n == 0)
+ return (size_t)(-2);
+
+ /* Here n > 0. */
+ {
+ size_t nstate = pstate[0];
+ char buf[4];
+ const char *p;
+ size_t m;
+
+ switch (nstate)
+ {
+ case 0:
+ p = s;
+ m = n;
+ break;
+ case 3:
+ buf[2] = pstate[3];
+ /*FALLTHROUGH*/
+ case 2:
+ buf[1] = pstate[2];
+ /*FALLTHROUGH*/
+ case 1:
+ buf[0] = pstate[1];
+ p = buf;
+ m = nstate;
+ buf[m++] = s[0];
+ if (n >= 2 && m < 4)
+ {
+ buf[m++] = s[1];
+ if (n >= 3 && m < 4)
+ buf[m++] = s[2];
+ }
+ break;
+ default:
+ errno = EINVAL;
+ return (size_t)(-1);
+ }
+
+ /* Here m > 0. */
+
+# if __GLIBC__
+ /* Work around bug <http://sourceware.org/bugzilla/show_bug.cgi?id=9674> */
+ mbtowc (NULL, NULL, 0);
+# endif
+ {
+ int res = mbtowc (pwc, p, m);
+
+ if (res >= 0)
+ {
+ if (pwc != NULL && ((*pwc == 0) != (res == 0)))
+ abort ();
+ if (nstate >= (res > 0 ? res : 1))
+ abort ();
+ res -= nstate;
+ pstate[0] = 0;
+ return res;
+ }
+
+ /* mbtowc does not distinguish between invalid and incomplete multibyte
+ sequences. But mbrtowc needs to make this distinction.
+ There are two possible approaches:
+ - Use iconv() and its return value.
+ - Use built-in knowledge about the possible encodings.
+ Given the low quality of implementation of iconv() on the systems that
+ lack mbrtowc(), we use the second approach.
+ The possible encodings are:
+ - 8-bit encodings,
+ - EUC-JP, EUC-KR, GB2312, EUC-TW, BIG5, GB18030, SJIS,
+ - UTF-8.
+ Use specialized code for each. */
+ if (m >= 4 || m >= MB_CUR_MAX)
+ goto invalid;
+ /* Here MB_CUR_MAX > 1 and 0 < m < 4. */
+ {
+ const char *encoding = locale_charset ();
+
+ if (STREQ (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0, 0))
+ {
+ /* Cf. unistr/u8-mblen.c. */
+ unsigned char c = (unsigned char) p[0];
+
+ if (c >= 0xc2)
+ {
+ if (c < 0xe0)
+ {
+ if (m == 1)
+ goto incomplete;
+ }
+ else if (c < 0xf0)
+ {
+ if (m == 1)
+ goto incomplete;
+ if (m == 2)
+ {
+ unsigned char c2 = (unsigned char) p[1];
+
+ if ((c2 ^ 0x80) < 0x40
+ && (c >= 0xe1 || c2 >= 0xa0)
+ && (c != 0xed || c2 < 0xa0))
+ goto incomplete;
+ }
+ }
+ else if (c <= 0xf4)
+ {
+ if (m == 1)
+ goto incomplete;
+ else /* m == 2 || m == 3 */
+ {
+ unsigned char c2 = (unsigned char) p[1];
+
+ if ((c2 ^ 0x80) < 0x40
+ && (c >= 0xf1 || c2 >= 0x90)
+ && (c < 0xf4 || (c == 0xf4 && c2 < 0x90)))
+ {
+ if (m == 2)
+ goto incomplete;
+ else /* m == 3 */
+ {
+ unsigned char c3 = (unsigned char) p[2];
+
+ if ((c3 ^ 0x80) < 0x40)
+ goto incomplete;
+ }
+ }
+ }
+ }
+ }
+ goto invalid;
+ }
+
+ /* As a reference for this code, you can use the GNU libiconv
+ implementation. Look for uses of the RET_TOOFEW macro. */
+
+ if (STREQ (encoding, "EUC-JP", 'E', 'U', 'C', '-', 'J', 'P', 0, 0, 0))
+ {
+ if (m == 1)
+ {
+ unsigned char c = (unsigned char) p[0];
+
+ if ((c >= 0xa1 && c < 0xff) || c == 0x8e || c == 0x8f)
+ goto incomplete;
+ }
+ if (m == 2)
+ {
+ unsigned char c = (unsigned char) p[0];
+
+ if (c == 0x8f)
+ {
+ unsigned char c2 = (unsigned char) p[1];
+
+ if (c2 >= 0xa1 && c2 < 0xff)
+ goto incomplete;
+ }
+ }
+ goto invalid;
+ }
+ if (STREQ (encoding, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
+ || STREQ (encoding, "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0)
+ || STREQ (encoding, "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0))
+ {
+ if (m == 1)
+ {
+ unsigned char c = (unsigned char) p[0];
+
+ if (c >= 0xa1 && c < 0xff)
+ goto incomplete;
+ }
+ goto invalid;
+ }
+ if (STREQ (encoding, "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0))
+ {
+ if (m == 1)
+ {
+ unsigned char c = (unsigned char) p[0];
+
+ if ((c >= 0xa1 && c < 0xff) || c == 0x8e)
+ goto incomplete;
+ }
+ else /* m == 2 || m == 3 */
+ {
+ unsigned char c = (unsigned char) p[0];
+
+ if (c == 0x8e)
+ goto incomplete;
+ }
+ goto invalid;
+ }
+ if (STREQ (encoding, "GB18030", 'G', 'B', '1', '8', '0', '3', '0', 0, 0))
+ {
+ if (m == 1)
+ {
+ unsigned char c = (unsigned char) p[0];
+
+ if ((c >= 0x90 && c <= 0xe3) || (c >= 0xf8 && c <= 0xfe))
+ goto incomplete;
+ }
+ else /* m == 2 || m == 3 */
+ {
+ unsigned char c = (unsigned char) p[0];
+
+ if (c >= 0x90 && c <= 0xe3)
+ {
+ unsigned char c2 = (unsigned char) p[1];
+
+ if (c2 >= 0x30 && c2 <= 0x39)
+ {
+ if (m == 2)
+ goto incomplete;
+ else /* m == 3 */
+ {
+ unsigned char c3 = (unsigned char) p[2];
+
+ if (c3 >= 0x81 && c3 <= 0xfe)
+ goto incomplete;
+ }
+ }
+ }
+ }
+ goto invalid;
+ }
+ if (STREQ (encoding, "SJIS", 'S', 'J', 'I', 'S', 0, 0, 0, 0, 0))
+ {
+ if (m == 1)
+ {
+ unsigned char c = (unsigned char) p[0];
+
+ if ((c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xea)
+ || (c >= 0xf0 && c <= 0xf9))
+ goto incomplete;
+ }
+ goto invalid;
+ }
+
+ /* An unknown multibyte encoding. */
+ goto incomplete;
+ }
+
+ incomplete:
+ {
+ size_t k = nstate;
+ /* Here 0 <= k < m < 4. */
+ pstate[++k] = s[0];
+ if (k < m)
+ {
+ pstate[++k] = s[1];
+ if (k < m)
+ pstate[++k] = s[2];
+ }
+ if (k != m)
+ abort ();
+ }
+ pstate[0] = m;
+ return (size_t)(-2);
+
+ invalid:
+ errno = EILSEQ;
+ /* The conversion state is undefined, says POSIX. */
+ return (size_t)(-1);
+ }
+ }
+}
+
+#else
+/* Override the system's mbrtowc() function. */
+
+# undef mbrtowc
+
+size_t
+rpl_mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
+{
+# if MBRTOWC_NULL_ARG_BUG || MBRTOWC_RETVAL_BUG
+ if (s == NULL)
+ {
+ pwc = NULL;
+ s = "";
+ n = 1;
+ }
+# endif
+
+# if MBRTOWC_RETVAL_BUG
+ {
+ static mbstate_t internal_state;
+
+ /* Override mbrtowc's internal state. We can not call mbsinit() on the
+ hidden internal state, but we can call it on our variable. */
+ if (ps == NULL)
+ ps = &internal_state;
+
+ if (!mbsinit (ps))
+ {
+ /* Parse the rest of the multibyte character byte for byte. */
+ size_t count = 0;
+ for (; n > 0; s++, n--)
+ {
+ wchar_t wc;
+ size_t ret = mbrtowc (&wc, s, 1, ps);
+
+ if (ret == (size_t)(-1))
+ return (size_t)(-1);
+ count++;
+ if (ret != (size_t)(-2))
+ {
+ /* The multibyte character has been completed. */
+ if (pwc != NULL)
+ *pwc = wc;
+ return (wc == 0 ? 0 : count);
+ }
+ }
+ return (size_t)(-2);
+ }
+ }
+# endif
+
+# if MBRTOWC_NUL_RETVAL_BUG
+ {
+ wchar_t wc;
+ size_t ret = mbrtowc (&wc, s, n, ps);
+
+ if (ret != (size_t)(-1) && ret != (size_t)(-2))
+ {
+ if (pwc != NULL)
+ *pwc = wc;
+ if (wc == 0)
+ ret = 0;
+ }
+ return ret;
+ }
+# else
+ return mbrtowc (pwc, s, n, ps);
+# endif
+}
+
+#endif
diff --git a/lib/mbsinit.c b/lib/mbsinit.c
new file mode 100644
index 00000000..74957943
--- /dev/null
+++ b/lib/mbsinit.c
@@ -0,0 +1,47 @@
+/* Test for initial conversion state.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2008.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <wchar.h>
+
+#include "verify.h"
+
+/* Platforms that lack mbsinit() also lack mbrlen(), mbrtowc(), mbsrtowcs()
+ and wcrtomb(), wcsrtombs().
+ We assume that
+ - sizeof (mbstate_t) >= 4,
+ - only stateless encodings are supported (such as UTF-8 and EUC-JP, but
+ not ISO-2022 variants),
+ - for each encoding, the number of bytes for a wide character is <= 4.
+ (This maximum is attained for UTF-8, GB18030, EUC-TW.)
+ We define the meaning of mbstate_t as follows:
+ - In mb -> wc direction, mbstate_t's first byte contains the number of
+ buffered bytes (in the range 0..3), followed by up to 3 buffered bytes.
+ - In wc -> mb direction, mbstate_t contains no information. In other
+ words, it is always in the initial state. */
+
+verify (sizeof (mbstate_t) >= 4);
+
+int
+mbsinit (const mbstate_t *ps)
+{
+ const char *pstate = (const char *)ps;
+
+ return pstate[0] == 0;
+}
diff --git a/lib/mbsnlen.c b/lib/mbsnlen.c
new file mode 100644
index 00000000..5ed55567
--- /dev/null
+++ b/lib/mbsnlen.c
@@ -0,0 +1,45 @@
+/* Counting the multibyte characters in a string.
+ Copyright (C) 2007-2008 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <string.h>
+
+#include <stdlib.h>
+
+#include "mbiter.h"
+
+/* Return the number of multibyte characters in the character string starting
+ at STRING and ending at STRING + LEN. */
+size_t
+mbsnlen (const char *string, size_t len)
+{
+ if (MB_CUR_MAX > 1)
+ {
+ size_t count;
+ mbi_iterator_t iter;
+
+ count = 0;
+ for (mbi_init (iter, string, len); mbi_avail (iter); mbi_advance (iter))
+ count++;
+
+ return count;
+ }
+ else
+ return len;
+}
diff --git a/lib/memchr.c b/lib/memchr.c
new file mode 100644
index 00000000..3ea1d5ba
--- /dev/null
+++ b/lib/memchr.c
@@ -0,0 +1,172 @@
+/* Copyright (C) 1991, 1993, 1996, 1997, 1999, 2000, 2003, 2004, 2006, 2008
+ Free Software Foundation, Inc.
+
+ Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
+ with help from Dan Sahlin (dan@sics.se) and
+ commentary by Jim Blandy (jimb@ai.mit.edu);
+ adaptation to memchr suggested by Dick Karpinski (dick@cca.ucsf.edu),
+ and implemented by Roland McGrath (roland@ai.mit.edu).
+
+NOTE: The canonical source of this file is maintained with the GNU C Library.
+Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as published by the
+Free Software Foundation; either version 3 of the License, or 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 Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+#include <string.h>
+
+#include <stddef.h>
+
+#if defined _LIBC
+# include <memcopy.h>
+#else
+# define reg_char char
+#endif
+
+#include <limits.h>
+
+#if HAVE_BP_SYM_H || defined _LIBC
+# include <bp-sym.h>
+#else
+# define BP_SYM(sym) sym
+#endif
+
+#undef __memchr
+#ifdef _LIBC
+# undef memchr
+#endif
+
+#ifndef weak_alias
+# define __memchr memchr
+#endif
+
+/* Search no more than N bytes of S for C. */
+void *
+__memchr (void const *s, int c_in, size_t n)
+{
+ /* On 32-bit hardware, choosing longword to be a 32-bit unsigned
+ long instead of a 64-bit uintmax_t tends to give better
+ performance. On 64-bit hardware, unsigned long is generally 64
+ bits already. Change this typedef to experiment with
+ performance. */
+ typedef unsigned long int longword;
+
+ const unsigned char *char_ptr;
+ const longword *longword_ptr;
+ longword repeated_one;
+ longword repeated_c;
+ unsigned reg_char c;
+
+ c = (unsigned char) c_in;
+
+ /* Handle the first few bytes by reading one byte at a time.
+ Do this until CHAR_PTR is aligned on a longword boundary. */
+ for (char_ptr = (const unsigned char *) s;
+ n > 0 && (size_t) char_ptr % sizeof (longword) != 0;
+ --n, ++char_ptr)
+ if (*char_ptr == c)
+ return (void *) char_ptr;
+
+ longword_ptr = (const longword *) char_ptr;
+
+ /* All these elucidatory comments refer to 4-byte longwords,
+ but the theory applies equally well to any size longwords. */
+
+ /* Compute auxiliary longword values:
+ repeated_one is a value which has a 1 in every byte.
+ repeated_c has c in every byte. */
+ repeated_one = 0x01010101;
+ repeated_c = c | (c << 8);
+ repeated_c |= repeated_c << 16;
+ if (0xffffffffU < (longword) -1)
+ {
+ repeated_one |= repeated_one << 31 << 1;
+ repeated_c |= repeated_c << 31 << 1;
+ if (8 < sizeof (longword))
+ {
+ size_t i;
+
+ for (i = 64; i < sizeof (longword) * 8; i *= 2)
+ {
+ repeated_one |= repeated_one << i;
+ repeated_c |= repeated_c << i;
+ }
+ }
+ }
+
+ /* Instead of the traditional loop which tests each byte, we will test a
+ longword at a time. The tricky part is testing if *any of the four*
+ bytes in the longword in question are equal to c. We first use an xor
+ with repeated_c. This reduces the task to testing whether *any of the
+ four* bytes in longword1 is zero.
+
+ We compute tmp =
+ ((longword1 - repeated_one) & ~longword1) & (repeated_one << 7).
+ That is, we perform the following operations:
+ 1. Subtract repeated_one.
+ 2. & ~longword1.
+ 3. & a mask consisting of 0x80 in every byte.
+ Consider what happens in each byte:
+ - If a byte of longword1 is zero, step 1 and 2 transform it into 0xff,
+ and step 3 transforms it into 0x80. A carry can also be propagated
+ to more significant bytes.
+ - If a byte of longword1 is nonzero, let its lowest 1 bit be at
+ position k (0 <= k <= 7); so the lowest k bits are 0. After step 1,
+ the byte ends in a single bit of value 0 and k bits of value 1.
+ After step 2, the result is just k bits of value 1: 2^k - 1. After
+ step 3, the result is 0. And no carry is produced.
+ So, if longword1 has only non-zero bytes, tmp is zero.
+ Whereas if longword1 has a zero byte, call j the position of the least
+ significant zero byte. Then the result has a zero at positions 0, ...,
+ j-1 and a 0x80 at position j. We cannot predict the result at the more
+ significant bytes (positions j+1..3), but it does not matter since we
+ already have a non-zero bit at position 8*j+7.
+
+ So, the test whether any byte in longword1 is zero is equivalent to
+ testing whether tmp is nonzero. */
+
+ while (n >= sizeof (longword))
+ {
+ longword longword1 = *longword_ptr ^ repeated_c;
+
+ if ((((longword1 - repeated_one) & ~longword1)
+ & (repeated_one << 7)) != 0)
+ break;
+ longword_ptr++;
+ n -= sizeof (longword);
+ }
+
+ char_ptr = (const unsigned char *) longword_ptr;
+
+ /* At this point, we know that either n < sizeof (longword), or one of the
+ sizeof (longword) bytes starting at char_ptr is == c. On little-endian
+ machines, we could determine the first such byte without any further
+ memory accesses, just by looking at the tmp result from the last loop
+ iteration. But this does not work on big-endian machines. Choose code
+ that works in both cases. */
+
+ for (; n > 0; --n, ++char_ptr)
+ {
+ if (*char_ptr == c)
+ return (void *) char_ptr;
+ }
+
+ return NULL;
+}
+#ifdef weak_alias
+weak_alias (__memchr, BP_SYM (memchr))
+#endif
diff --git a/lib/memchr.valgrind b/lib/memchr.valgrind
new file mode 100644
index 00000000..60f247e1
--- /dev/null
+++ b/lib/memchr.valgrind
@@ -0,0 +1,14 @@
+# Suppress a valgrind message about use of uninitialized memory in memchr().
+# POSIX states that when the character is found, memchr must not read extra
+# bytes in an overestimated length (for example, where memchr is used to
+# implement strnlen). However, we use a safe word read to provide a speedup.
+{
+ memchr-value4
+ Memcheck:Value4
+ fun:rpl_memchr
+}
+{
+ memchr-value8
+ Memcheck:Value8
+ fun:rpl_memchr
+}
diff --git a/lib/memcmp2.c b/lib/memcmp2.c
new file mode 100644
index 00000000..7f8f6049
--- /dev/null
+++ b/lib/memcmp2.c
@@ -0,0 +1,36 @@
+/* Compare two memory areas with possibly different lengths.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "memcmp2.h"
+
+#include <string.h>
+
+int
+memcmp2 (const char *s1, size_t n1, const char *s2, size_t n2)
+{
+ int cmp = memcmp (s1, s2, n1 <= n2 ? n1 : n2);
+ if (cmp == 0)
+ {
+ if (n1 < n2)
+ cmp = -1;
+ else if (n1 > n2)
+ cmp = 1;
+ }
+ return cmp;
+}
diff --git a/lib/memcmp2.h b/lib/memcmp2.h
new file mode 100644
index 00000000..f3230554
--- /dev/null
+++ b/lib/memcmp2.h
@@ -0,0 +1,39 @@
+/* Compare two memory areas with possibly different lengths.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef MEMCMP2_H
+#define MEMCMP2_H
+
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Compare the memory regions S1 = [s1..s1+N1-1], S2 = [s2..s2+n2-1],
+ lexicographically.
+ This function's result is locale independent, unlike memcoll()'s.
+ Return a negative number if S1 < S2, a positive number if S1 > S2, or
+ 0 if S1 and S2 have the same contents. */
+extern int memcmp2 (const char *s1, size_t n1, const char *s2, size_t n2);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* MEMCMP2_H */
diff --git a/lib/memxfrm.c b/lib/memxfrm.c
new file mode 100644
index 00000000..dc6eda1f
--- /dev/null
+++ b/lib/memxfrm.c
@@ -0,0 +1,137 @@
+/* Locale dependent memory area transformation for comparison.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "memxfrm.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+char *
+memxfrm (char *s, size_t n, char *resultbuf, size_t *lengthp)
+{
+ /* Result accumulator. */
+ char *result;
+ size_t length;
+ size_t allocated;
+
+ char orig_sentinel;
+
+ /* Initial memory allocation. */
+ if (resultbuf != NULL && *lengthp > 0)
+ {
+ result = resultbuf;
+ allocated = *lengthp;
+ }
+ else
+ {
+ allocated = (n > 0 ? n : 1);
+ result = (char *) malloc (allocated);
+ if (result == NULL)
+ goto out_of_memory_2;
+ }
+ length = 0;
+
+ /* Add sentinel.byte. */
+ orig_sentinel = s[n];
+ s[n] = '\0';
+
+ /* Iterate through S, transforming each NUL terminated segment.
+ Accumulate the resulting transformed segments in result, separated by
+ NULs. */
+ {
+ const char *p_end = s + n + 1;
+ const char *p;
+
+ p = s;
+ for (;;)
+ {
+ /* Search next NUL byte. */
+ const char *q = p + strlen (p);
+
+ for (;;)
+ {
+ size_t k;
+
+ errno = 0;
+ k = strxfrm (result + length, p, allocated - length);
+ if (errno != 0)
+ goto fail;
+ if (k >= allocated - length)
+ {
+ /* Grow the result buffer. */
+ char *new_result;
+
+ allocated = 2 * allocated;
+ if (allocated < 64)
+ allocated = 64;
+ if (result == resultbuf)
+ new_result = (char *) malloc (allocated);
+ else
+ new_result = (char *) realloc (result, allocated);
+ if (new_result == NULL)
+ goto out_of_memory_1;
+ result = new_result;
+ }
+ else
+ {
+ length += k;
+ break;
+ }
+ }
+
+ p = q + 1;
+ if (p == p_end)
+ break;
+ result[length] = '\0';
+ length++;
+ }
+ }
+
+ /* Shrink the allocated memory if possible. */
+ if (result != resultbuf && (length > 0 ? length : 1) < allocated)
+ {
+ char *memory = (char *) realloc (result, length > 0 ? length : 1);
+ if (memory != NULL)
+ result = memory;
+ }
+
+ s[n] = orig_sentinel;
+ *lengthp = length;
+ return result;
+
+ fail:
+ {
+ int saved_errno = errno;
+ if (result != resultbuf)
+ free (result);
+ s[n] = orig_sentinel;
+ errno = saved_errno;
+ return NULL;
+ }
+
+ out_of_memory_1:
+ if (result != resultbuf)
+ free (result);
+ s[n] = orig_sentinel;
+ out_of_memory_2:
+ errno = ENOMEM;
+ return NULL;
+}
diff --git a/lib/memxfrm.h b/lib/memxfrm.h
new file mode 100644
index 00000000..d78900a7
--- /dev/null
+++ b/lib/memxfrm.h
@@ -0,0 +1,48 @@
+/* Locale dependent memory area transformation for comparison.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef MEMXFRM_H
+#define MEMXFRM_H
+
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Generalization of strxfrm() to strings with embedded NUL bytes. */
+
+/* Transform the memory area [S..S+N-1] to a memory area, in such a way that
+ comparing (S1,N1) and (S2,N2) with memcoll() is equivalent to comparing
+ memxfrm(S1,N1) and memxfrm(S2,N2) with memcmp2().
+ The byte S[N] may be temporarily overwritten by this function, but will be
+ restored before this function returns.
+ The result of this function depends on the LC_COLLATE category of the
+ current locale.
+ If successful: If resultbuf is not NULL and the result fits into *lengthp
+ bytes, it is put in resultbuf, and resultbuf is returned. Otherwise, a
+ freshly allocated string is returned. In both cases, *lengthp is set to the
+ length of the returned string.
+ Upon failure, return NULL, with errno set. */
+extern char * memxfrm (char *s, size_t n, char *resultbuf, size_t *lengthp);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* MEMXFRM_H */
diff --git a/lib/minmax.h b/lib/minmax.h
new file mode 100644
index 00000000..4cafb2f2
--- /dev/null
+++ b/lib/minmax.h
@@ -0,0 +1,60 @@
+/* MIN, MAX macros.
+ Copyright (C) 1995, 1998, 2001, 2003, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+#ifndef _MINMAX_H
+#define _MINMAX_H
+
+/* Note: MIN, MAX are also defined in <sys/param.h> on some systems
+ (glibc, IRIX, HP-UX, OSF/1). Therefore you might get warnings about
+ MIN, MAX macro redefinitions on some systems; the workaround is to
+ #include this file as the last one among the #include list. */
+
+/* Before we define the following symbols we get the <limits.h> file
+ since otherwise we get redefinitions on some systems if <limits.h> is
+ included after this file. Likewise for <sys/param.h>.
+ If more than one of these system headers define MIN and MAX, pick just
+ one of the headers (because the definitions most likely are the same). */
+#if HAVE_MINMAX_IN_LIMITS_H
+# include <limits.h>
+#elif HAVE_MINMAX_IN_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+
+/* Note: MIN and MAX should be used with two arguments of the
+ same type. They might not return the minimum and maximum of their two
+ arguments, if the arguments have different types or have unusual
+ floating-point values. For example, on a typical host with 32-bit 'int',
+ 64-bit 'long long', and 64-bit IEEE 754 'double' types:
+
+ MAX (-1, 2147483648) returns 4294967295.
+ MAX (9007199254740992.0, 9007199254740993) returns 9007199254740992.0.
+ MAX (NaN, 0.0) returns 0.0.
+ MAX (+0.0, -0.0) returns -0.0.
+
+ and in each case the answer is in some sense bogus. */
+
+/* MAX(a,b) returns the maximum of A and B. */
+#ifndef MAX
+# define MAX(a,b) ((a) > (b) ? (a) : (b))
+#endif
+
+/* MIN(a,b) returns the minimum of A and B. */
+#ifndef MIN
+# define MIN(a,b) ((a) < (b) ? (a) : (b))
+#endif
+
+#endif /* _MINMAX_H */
diff --git a/lib/printf-args.c b/lib/printf-args.c
new file mode 100644
index 00000000..c31d2042
--- /dev/null
+++ b/lib/printf-args.c
@@ -0,0 +1,187 @@
+/* Decomposed printf argument list.
+ Copyright (C) 1999, 2002-2003, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+/* This file can be parametrized with the following macros:
+ ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions.
+ PRINTF_FETCHARGS Name of the function to be defined.
+ STATIC Set to 'static' to declare the function static. */
+
+#ifndef PRINTF_FETCHARGS
+# include <config.h>
+#endif
+
+/* Specification. */
+#ifndef PRINTF_FETCHARGS
+# include "printf-args.h"
+#endif
+
+#ifdef STATIC
+STATIC
+#endif
+int
+PRINTF_FETCHARGS (va_list args, arguments *a)
+{
+ size_t i;
+ argument *ap;
+
+ for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++)
+ switch (ap->type)
+ {
+ case TYPE_SCHAR:
+ ap->a.a_schar = va_arg (args, /*signed char*/ int);
+ break;
+ case TYPE_UCHAR:
+ ap->a.a_uchar = va_arg (args, /*unsigned char*/ int);
+ break;
+ case TYPE_SHORT:
+ ap->a.a_short = va_arg (args, /*short*/ int);
+ break;
+ case TYPE_USHORT:
+ ap->a.a_ushort = va_arg (args, /*unsigned short*/ int);
+ break;
+ case TYPE_INT:
+ ap->a.a_int = va_arg (args, int);
+ break;
+ case TYPE_UINT:
+ ap->a.a_uint = va_arg (args, unsigned int);
+ break;
+ case TYPE_LONGINT:
+ ap->a.a_longint = va_arg (args, long int);
+ break;
+ case TYPE_ULONGINT:
+ ap->a.a_ulongint = va_arg (args, unsigned long int);
+ break;
+#if HAVE_LONG_LONG_INT
+ case TYPE_LONGLONGINT:
+ ap->a.a_longlongint = va_arg (args, long long int);
+ break;
+ case TYPE_ULONGLONGINT:
+ ap->a.a_ulonglongint = va_arg (args, unsigned long long int);
+ break;
+#endif
+ case TYPE_DOUBLE:
+ ap->a.a_double = va_arg (args, double);
+ break;
+ case TYPE_LONGDOUBLE:
+ ap->a.a_longdouble = va_arg (args, long double);
+ break;
+ case TYPE_CHAR:
+ ap->a.a_char = va_arg (args, int);
+ break;
+#if HAVE_WINT_T
+ case TYPE_WIDE_CHAR:
+ /* Although ISO C 99 7.24.1.(2) says that wint_t is "unchanged by
+ default argument promotions", this is not the case in mingw32,
+ where wint_t is 'unsigned short'. */
+ ap->a.a_wide_char =
+ (sizeof (wint_t) < sizeof (int)
+ ? va_arg (args, int)
+ : va_arg (args, wint_t));
+ break;
+#endif
+ case TYPE_STRING:
+ ap->a.a_string = va_arg (args, const char *);
+ /* A null pointer is an invalid argument for "%s", but in practice
+ it occurs quite frequently in printf statements that produce
+ debug output. Use a fallback in this case. */
+ if (ap->a.a_string == NULL)
+ ap->a.a_string = "(NULL)";
+ break;
+#if HAVE_WCHAR_T
+ case TYPE_WIDE_STRING:
+ ap->a.a_wide_string = va_arg (args, const wchar_t *);
+ /* A null pointer is an invalid argument for "%ls", but in practice
+ it occurs quite frequently in printf statements that produce
+ debug output. Use a fallback in this case. */
+ if (ap->a.a_wide_string == NULL)
+ {
+ static const wchar_t wide_null_string[] =
+ {
+ (wchar_t)'(',
+ (wchar_t)'N', (wchar_t)'U', (wchar_t)'L', (wchar_t)'L',
+ (wchar_t)')',
+ (wchar_t)0
+ };
+ ap->a.a_wide_string = wide_null_string;
+ }
+ break;
+#endif
+ case TYPE_POINTER:
+ ap->a.a_pointer = va_arg (args, void *);
+ break;
+ case TYPE_COUNT_SCHAR_POINTER:
+ ap->a.a_count_schar_pointer = va_arg (args, signed char *);
+ break;
+ case TYPE_COUNT_SHORT_POINTER:
+ ap->a.a_count_short_pointer = va_arg (args, short *);
+ break;
+ case TYPE_COUNT_INT_POINTER:
+ ap->a.a_count_int_pointer = va_arg (args, int *);
+ break;
+ case TYPE_COUNT_LONGINT_POINTER:
+ ap->a.a_count_longint_pointer = va_arg (args, long int *);
+ break;
+#if HAVE_LONG_LONG_INT
+ case TYPE_COUNT_LONGLONGINT_POINTER:
+ ap->a.a_count_longlongint_pointer = va_arg (args, long long int *);
+ break;
+#endif
+#if ENABLE_UNISTDIO
+ /* The unistdio extensions. */
+ case TYPE_U8_STRING:
+ ap->a.a_u8_string = va_arg (args, const uint8_t *);
+ /* A null pointer is an invalid argument for "%U", but in practice
+ it occurs quite frequently in printf statements that produce
+ debug output. Use a fallback in this case. */
+ if (ap->a.a_u8_string == NULL)
+ {
+ static const uint8_t u8_null_string[] =
+ { '(', 'N', 'U', 'L', 'L', ')', 0 };
+ ap->a.a_u8_string = u8_null_string;
+ }
+ break;
+ case TYPE_U16_STRING:
+ ap->a.a_u16_string = va_arg (args, const uint16_t *);
+ /* A null pointer is an invalid argument for "%lU", but in practice
+ it occurs quite frequently in printf statements that produce
+ debug output. Use a fallback in this case. */
+ if (ap->a.a_u16_string == NULL)
+ {
+ static const uint16_t u16_null_string[] =
+ { '(', 'N', 'U', 'L', 'L', ')', 0 };
+ ap->a.a_u16_string = u16_null_string;
+ }
+ break;
+ case TYPE_U32_STRING:
+ ap->a.a_u32_string = va_arg (args, const uint32_t *);
+ /* A null pointer is an invalid argument for "%llU", but in practice
+ it occurs quite frequently in printf statements that produce
+ debug output. Use a fallback in this case. */
+ if (ap->a.a_u32_string == NULL)
+ {
+ static const uint32_t u32_null_string[] =
+ { '(', 'N', 'U', 'L', 'L', ')', 0 };
+ ap->a.a_u32_string = u32_null_string;
+ }
+ break;
+#endif
+ default:
+ /* Unknown type. */
+ return -1;
+ }
+ return 0;
+}
diff --git a/lib/printf-args.h b/lib/printf-args.h
new file mode 100644
index 00000000..4c68f115
--- /dev/null
+++ b/lib/printf-args.h
@@ -0,0 +1,154 @@
+/* Decomposed printf argument list.
+ Copyright (C) 1999, 2002-2003, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+#ifndef _PRINTF_ARGS_H
+#define _PRINTF_ARGS_H
+
+/* This file can be parametrized with the following macros:
+ ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions.
+ PRINTF_FETCHARGS Name of the function to be declared.
+ STATIC Set to 'static' to declare the function static. */
+
+/* Default parameters. */
+#ifndef PRINTF_FETCHARGS
+# define PRINTF_FETCHARGS printf_fetchargs
+#endif
+
+/* Get size_t. */
+#include <stddef.h>
+
+/* Get wchar_t. */
+#if HAVE_WCHAR_T
+# include <stddef.h>
+#endif
+
+/* Get wint_t. */
+#if HAVE_WINT_T
+# include <wchar.h>
+#endif
+
+/* Get va_list. */
+#include <stdarg.h>
+
+
+/* Argument types */
+typedef enum
+{
+ TYPE_NONE,
+ TYPE_SCHAR,
+ TYPE_UCHAR,
+ TYPE_SHORT,
+ TYPE_USHORT,
+ TYPE_INT,
+ TYPE_UINT,
+ TYPE_LONGINT,
+ TYPE_ULONGINT,
+#if HAVE_LONG_LONG_INT
+ TYPE_LONGLONGINT,
+ TYPE_ULONGLONGINT,
+#endif
+ TYPE_DOUBLE,
+ TYPE_LONGDOUBLE,
+ TYPE_CHAR,
+#if HAVE_WINT_T
+ TYPE_WIDE_CHAR,
+#endif
+ TYPE_STRING,
+#if HAVE_WCHAR_T
+ TYPE_WIDE_STRING,
+#endif
+ TYPE_POINTER,
+ TYPE_COUNT_SCHAR_POINTER,
+ TYPE_COUNT_SHORT_POINTER,
+ TYPE_COUNT_INT_POINTER,
+ TYPE_COUNT_LONGINT_POINTER
+#if HAVE_LONG_LONG_INT
+, TYPE_COUNT_LONGLONGINT_POINTER
+#endif
+#if ENABLE_UNISTDIO
+ /* The unistdio extensions. */
+, TYPE_U8_STRING
+, TYPE_U16_STRING
+, TYPE_U32_STRING
+#endif
+} arg_type;
+
+/* Polymorphic argument */
+typedef struct
+{
+ arg_type type;
+ union
+ {
+ signed char a_schar;
+ unsigned char a_uchar;
+ short a_short;
+ unsigned short a_ushort;
+ int a_int;
+ unsigned int a_uint;
+ long int a_longint;
+ unsigned long int a_ulongint;
+#if HAVE_LONG_LONG_INT
+ long long int a_longlongint;
+ unsigned long long int a_ulonglongint;
+#endif
+ float a_float;
+ double a_double;
+ long double a_longdouble;
+ int a_char;
+#if HAVE_WINT_T
+ wint_t a_wide_char;
+#endif
+ const char* a_string;
+#if HAVE_WCHAR_T
+ const wchar_t* a_wide_string;
+#endif
+ void* a_pointer;
+ signed char * a_count_schar_pointer;
+ short * a_count_short_pointer;
+ int * a_count_int_pointer;
+ long int * a_count_longint_pointer;
+#if HAVE_LONG_LONG_INT
+ long long int * a_count_longlongint_pointer;
+#endif
+#if ENABLE_UNISTDIO
+ /* The unistdio extensions. */
+ const uint8_t * a_u8_string;
+ const uint16_t * a_u16_string;
+ const uint32_t * a_u32_string;
+#endif
+ }
+ a;
+}
+argument;
+
+typedef struct
+{
+ size_t count;
+ argument *arg;
+}
+arguments;
+
+
+/* Fetch the arguments, putting them into a. */
+#ifdef STATIC
+STATIC
+#else
+extern
+#endif
+int PRINTF_FETCHARGS (va_list args, arguments *a);
+
+#endif /* _PRINTF_ARGS_H */
diff --git a/lib/printf-frexp.c b/lib/printf-frexp.c
new file mode 100644
index 00000000..014c8539
--- /dev/null
+++ b/lib/printf-frexp.c
@@ -0,0 +1,188 @@
+/* Split a double into fraction and mantissa, for hexadecimal printf.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#ifdef USE_LONG_DOUBLE
+# include "printf-frexpl.h"
+#else
+# include "printf-frexp.h"
+#endif
+
+#include <float.h>
+#include <math.h>
+#ifdef USE_LONG_DOUBLE
+# include "fpucw.h"
+#endif
+
+/* This file assumes FLT_RADIX = 2. If FLT_RADIX is a power of 2 greater
+ than 2, or not even a power of 2, some rounding errors can occur, so that
+ then the returned mantissa is only guaranteed to be <= 2.0, not < 2.0. */
+
+#ifdef USE_LONG_DOUBLE
+# define FUNC printf_frexpl
+# define DOUBLE long double
+# define MIN_EXP LDBL_MIN_EXP
+# if HAVE_FREXPL_IN_LIBC && HAVE_LDEXPL_IN_LIBC
+# define USE_FREXP_LDEXP
+# define FREXP frexpl
+# define LDEXP ldexpl
+# endif
+# define DECL_ROUNDING DECL_LONG_DOUBLE_ROUNDING
+# define BEGIN_ROUNDING() BEGIN_LONG_DOUBLE_ROUNDING ()
+# define END_ROUNDING() END_LONG_DOUBLE_ROUNDING ()
+# define L_(literal) literal##L
+#else
+# define FUNC printf_frexp
+# define DOUBLE double
+# define MIN_EXP DBL_MIN_EXP
+# if HAVE_FREXP_IN_LIBC && HAVE_LDEXP_IN_LIBC
+# define USE_FREXP_LDEXP
+# define FREXP frexp
+# define LDEXP ldexp
+# endif
+# define DECL_ROUNDING
+# define BEGIN_ROUNDING()
+# define END_ROUNDING()
+# define L_(literal) literal
+#endif
+
+DOUBLE
+FUNC (DOUBLE x, int *expptr)
+{
+ int exponent;
+ DECL_ROUNDING
+
+ BEGIN_ROUNDING ();
+
+#ifdef USE_FREXP_LDEXP
+ /* frexp and ldexp are usually faster than the loop below. */
+ x = FREXP (x, &exponent);
+
+ x = x + x;
+ exponent -= 1;
+
+ if (exponent < MIN_EXP - 1)
+ {
+ x = LDEXP (x, exponent - (MIN_EXP - 1));
+ exponent = MIN_EXP - 1;
+ }
+#else
+ {
+ /* Since the exponent is an 'int', it fits in 64 bits. Therefore the
+ loops are executed no more than 64 times. */
+ DOUBLE pow2[64]; /* pow2[i] = 2^2^i */
+ DOUBLE powh[64]; /* powh[i] = 2^-2^i */
+ int i;
+
+ exponent = 0;
+ if (x >= L_(1.0))
+ {
+ /* A nonnegative exponent. */
+ {
+ DOUBLE pow2_i; /* = pow2[i] */
+ DOUBLE powh_i; /* = powh[i] */
+
+ /* Invariants: pow2_i = 2^2^i, powh_i = 2^-2^i,
+ x * 2^exponent = argument, x >= 1.0. */
+ for (i = 0, pow2_i = L_(2.0), powh_i = L_(0.5);
+ ;
+ i++, pow2_i = pow2_i * pow2_i, powh_i = powh_i * powh_i)
+ {
+ if (x >= pow2_i)
+ {
+ exponent += (1 << i);
+ x *= powh_i;
+ }
+ else
+ break;
+
+ pow2[i] = pow2_i;
+ powh[i] = powh_i;
+ }
+ }
+ /* Here 1.0 <= x < 2^2^i. */
+ }
+ else
+ {
+ /* A negative exponent. */
+ {
+ DOUBLE pow2_i; /* = pow2[i] */
+ DOUBLE powh_i; /* = powh[i] */
+
+ /* Invariants: pow2_i = 2^2^i, powh_i = 2^-2^i,
+ x * 2^exponent = argument, x < 1.0, exponent >= MIN_EXP - 1. */
+ for (i = 0, pow2_i = L_(2.0), powh_i = L_(0.5);
+ ;
+ i++, pow2_i = pow2_i * pow2_i, powh_i = powh_i * powh_i)
+ {
+ if (exponent - (1 << i) < MIN_EXP - 1)
+ break;
+
+ exponent -= (1 << i);
+ x *= pow2_i;
+ if (x >= L_(1.0))
+ break;
+
+ pow2[i] = pow2_i;
+ powh[i] = powh_i;
+ }
+ }
+ /* Here either x < 1.0 and exponent - 2^i < MIN_EXP - 1 <= exponent,
+ or 1.0 <= x < 2^2^i and exponent >= MIN_EXP - 1. */
+
+ if (x < L_(1.0))
+ /* Invariants: x * 2^exponent = argument, x < 1.0 and
+ exponent - 2^i < MIN_EXP - 1 <= exponent. */
+ while (i > 0)
+ {
+ i--;
+ if (exponent - (1 << i) >= MIN_EXP - 1)
+ {
+ exponent -= (1 << i);
+ x *= pow2[i];
+ if (x >= L_(1.0))
+ break;
+ }
+ }
+
+ /* Here either x < 1.0 and exponent = MIN_EXP - 1,
+ or 1.0 <= x < 2^2^i and exponent >= MIN_EXP - 1. */
+ }
+
+ /* Invariants: x * 2^exponent = argument, and
+ either x < 1.0 and exponent = MIN_EXP - 1,
+ or 1.0 <= x < 2^2^i and exponent >= MIN_EXP - 1. */
+ while (i > 0)
+ {
+ i--;
+ if (x >= pow2[i])
+ {
+ exponent += (1 << i);
+ x *= powh[i];
+ }
+ }
+ /* Here either x < 1.0 and exponent = MIN_EXP - 1,
+ or 1.0 <= x < 2.0 and exponent >= MIN_EXP - 1. */
+ }
+#endif
+
+ END_ROUNDING ();
+
+ *expptr = exponent;
+ return x;
+}
diff --git a/lib/printf-frexp.h b/lib/printf-frexp.h
new file mode 100644
index 00000000..197898d7
--- /dev/null
+++ b/lib/printf-frexp.h
@@ -0,0 +1,23 @@
+/* Split a double into fraction and mantissa, for hexadecimal printf.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Write a finite, positive number x as
+ x = mantissa * 2^exp
+ where exp >= DBL_MIN_EXP - 1,
+ mantissa < 2.0,
+ if x is not a denormalized number then mantissa >= 1.0.
+ Store exp in *EXPPTR and return mantissa. */
+extern double printf_frexp (double x, int *expptr);
diff --git a/lib/printf-frexpl.c b/lib/printf-frexpl.c
new file mode 100644
index 00000000..864b2152
--- /dev/null
+++ b/lib/printf-frexpl.c
@@ -0,0 +1,18 @@
+/* Split a 'long double' into fraction and mantissa, for hexadecimal printf.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#define USE_LONG_DOUBLE
+#include "printf-frexp.c"
diff --git a/lib/printf-frexpl.h b/lib/printf-frexpl.h
new file mode 100644
index 00000000..718093d3
--- /dev/null
+++ b/lib/printf-frexpl.h
@@ -0,0 +1,23 @@
+/* Split a 'long double' into fraction and mantissa, for hexadecimal printf.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Write a finite, positive number x as
+ x = mantissa * 2^exp
+ where exp >= LDBL_MIN_EXP - 1,
+ mantissa < 2.0,
+ if x is not a denormalized number then mantissa >= 1.0.
+ Store exp in *EXPPTR and return mantissa. */
+extern long double printf_frexpl (long double x, int *expptr);
diff --git a/lib/printf-parse.c b/lib/printf-parse.c
new file mode 100644
index 00000000..85c454b2
--- /dev/null
+++ b/lib/printf-parse.c
@@ -0,0 +1,627 @@
+/* Formatted output to strings.
+ Copyright (C) 1999-2000, 2002-2003, 2006-2008 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+/* This file can be parametrized with the following macros:
+ CHAR_T The element type of the format string.
+ CHAR_T_ONLY_ASCII Set to 1 to enable verification that all characters
+ in the format string are ASCII.
+ DIRECTIVE Structure denoting a format directive.
+ Depends on CHAR_T.
+ DIRECTIVES Structure denoting the set of format directives of a
+ format string. Depends on CHAR_T.
+ PRINTF_PARSE Function that parses a format string.
+ Depends on CHAR_T.
+ STATIC Set to 'static' to declare the function static.
+ ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. */
+
+#ifndef PRINTF_PARSE
+# include <config.h>
+#endif
+
+/* Specification. */
+#ifndef PRINTF_PARSE
+# include "printf-parse.h"
+#endif
+
+/* Default parameters. */
+#ifndef PRINTF_PARSE
+# define PRINTF_PARSE printf_parse
+# define CHAR_T char
+# define DIRECTIVE char_directive
+# define DIRECTIVES char_directives
+#endif
+
+/* Get size_t, NULL. */
+#include <stddef.h>
+
+/* Get intmax_t. */
+#if defined IN_LIBINTL || defined IN_LIBASPRINTF
+# if HAVE_STDINT_H_WITH_UINTMAX
+# include <stdint.h>
+# endif
+# if HAVE_INTTYPES_H_WITH_UINTMAX
+# include <inttypes.h>
+# endif
+#else
+# include <stdint.h>
+#endif
+
+/* malloc(), realloc(), free(). */
+#include <stdlib.h>
+
+/* errno. */
+#include <errno.h>
+
+/* Checked size_t computations. */
+#include "xsize.h"
+
+#if CHAR_T_ONLY_ASCII
+/* c_isascii(). */
+# include "c-ctype.h"
+#endif
+
+#ifdef STATIC
+STATIC
+#endif
+int
+PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
+{
+ const CHAR_T *cp = format; /* pointer into format */
+ size_t arg_posn = 0; /* number of regular arguments consumed */
+ size_t d_allocated; /* allocated elements of d->dir */
+ size_t a_allocated; /* allocated elements of a->arg */
+ size_t max_width_length = 0;
+ size_t max_precision_length = 0;
+
+ d->count = 0;
+ d_allocated = 1;
+ d->dir = (DIRECTIVE *) malloc (d_allocated * sizeof (DIRECTIVE));
+ if (d->dir == NULL)
+ /* Out of memory. */
+ goto out_of_memory_1;
+
+ a->count = 0;
+ a_allocated = 0;
+ a->arg = NULL;
+
+#define REGISTER_ARG(_index_,_type_) \
+ { \
+ size_t n = (_index_); \
+ if (n >= a_allocated) \
+ { \
+ size_t memory_size; \
+ argument *memory; \
+ \
+ a_allocated = xtimes (a_allocated, 2); \
+ if (a_allocated <= n) \
+ a_allocated = xsum (n, 1); \
+ memory_size = xtimes (a_allocated, sizeof (argument)); \
+ if (size_overflow_p (memory_size)) \
+ /* Overflow, would lead to out of memory. */ \
+ goto out_of_memory; \
+ memory = (argument *) (a->arg \
+ ? realloc (a->arg, memory_size) \
+ : malloc (memory_size)); \
+ if (memory == NULL) \
+ /* Out of memory. */ \
+ goto out_of_memory; \
+ a->arg = memory; \
+ } \
+ while (a->count <= n) \
+ a->arg[a->count++].type = TYPE_NONE; \
+ if (a->arg[n].type == TYPE_NONE) \
+ a->arg[n].type = (_type_); \
+ else if (a->arg[n].type != (_type_)) \
+ /* Ambiguous type for positional argument. */ \
+ goto error; \
+ }
+
+ while (*cp != '\0')
+ {
+ CHAR_T c = *cp++;
+ if (c == '%')
+ {
+ size_t arg_index = ARG_NONE;
+ DIRECTIVE *dp = &d->dir[d->count]; /* pointer to next directive */
+
+ /* Initialize the next directive. */
+ dp->dir_start = cp - 1;
+ dp->flags = 0;
+ dp->width_start = NULL;
+ dp->width_end = NULL;
+ dp->width_arg_index = ARG_NONE;
+ dp->precision_start = NULL;
+ dp->precision_end = NULL;
+ dp->precision_arg_index = ARG_NONE;
+ dp->arg_index = ARG_NONE;
+
+ /* Test for positional argument. */
+ if (*cp >= '0' && *cp <= '9')
+ {
+ const CHAR_T *np;
+
+ for (np = cp; *np >= '0' && *np <= '9'; np++)
+ ;
+ if (*np == '$')
+ {
+ size_t n = 0;
+
+ for (np = cp; *np >= '0' && *np <= '9'; np++)
+ n = xsum (xtimes (n, 10), *np - '0');
+ if (n == 0)
+ /* Positional argument 0. */
+ goto error;
+ if (size_overflow_p (n))
+ /* n too large, would lead to out of memory later. */
+ goto error;
+ arg_index = n - 1;
+ cp = np + 1;
+ }
+ }
+
+ /* Read the flags. */
+ for (;;)
+ {
+ if (*cp == '\'')
+ {
+ dp->flags |= FLAG_GROUP;
+ cp++;
+ }
+ else if (*cp == '-')
+ {
+ dp->flags |= FLAG_LEFT;
+ cp++;
+ }
+ else if (*cp == '+')
+ {
+ dp->flags |= FLAG_SHOWSIGN;
+ cp++;
+ }
+ else if (*cp == ' ')
+ {
+ dp->flags |= FLAG_SPACE;
+ cp++;
+ }
+ else if (*cp == '#')
+ {
+ dp->flags |= FLAG_ALT;
+ cp++;
+ }
+ else if (*cp == '0')
+ {
+ dp->flags |= FLAG_ZERO;
+ cp++;
+ }
+ else
+ break;
+ }
+
+ /* Parse the field width. */
+ if (*cp == '*')
+ {
+ dp->width_start = cp;
+ cp++;
+ dp->width_end = cp;
+ if (max_width_length < 1)
+ max_width_length = 1;
+
+ /* Test for positional argument. */
+ if (*cp >= '0' && *cp <= '9')
+ {
+ const CHAR_T *np;
+
+ for (np = cp; *np >= '0' && *np <= '9'; np++)
+ ;
+ if (*np == '$')
+ {
+ size_t n = 0;
+
+ for (np = cp; *np >= '0' && *np <= '9'; np++)
+ n = xsum (xtimes (n, 10), *np - '0');
+ if (n == 0)
+ /* Positional argument 0. */
+ goto error;
+ if (size_overflow_p (n))
+ /* n too large, would lead to out of memory later. */
+ goto error;
+ dp->width_arg_index = n - 1;
+ cp = np + 1;
+ }
+ }
+ if (dp->width_arg_index == ARG_NONE)
+ {
+ dp->width_arg_index = arg_posn++;
+ if (dp->width_arg_index == ARG_NONE)
+ /* arg_posn wrapped around. */
+ goto error;
+ }
+ REGISTER_ARG (dp->width_arg_index, TYPE_INT);
+ }
+ else if (*cp >= '0' && *cp <= '9')
+ {
+ size_t width_length;
+
+ dp->width_start = cp;
+ for (; *cp >= '0' && *cp <= '9'; cp++)
+ ;
+ dp->width_end = cp;
+ width_length = dp->width_end - dp->width_start;
+ if (max_width_length < width_length)
+ max_width_length = width_length;
+ }
+
+ /* Parse the precision. */
+ if (*cp == '.')
+ {
+ cp++;
+ if (*cp == '*')
+ {
+ dp->precision_start = cp - 1;
+ cp++;
+ dp->precision_end = cp;
+ if (max_precision_length < 2)
+ max_precision_length = 2;
+
+ /* Test for positional argument. */
+ if (*cp >= '0' && *cp <= '9')
+ {
+ const CHAR_T *np;
+
+ for (np = cp; *np >= '0' && *np <= '9'; np++)
+ ;
+ if (*np == '$')
+ {
+ size_t n = 0;
+
+ for (np = cp; *np >= '0' && *np <= '9'; np++)
+ n = xsum (xtimes (n, 10), *np - '0');
+ if (n == 0)
+ /* Positional argument 0. */
+ goto error;
+ if (size_overflow_p (n))
+ /* n too large, would lead to out of memory
+ later. */
+ goto error;
+ dp->precision_arg_index = n - 1;
+ cp = np + 1;
+ }
+ }
+ if (dp->precision_arg_index == ARG_NONE)
+ {
+ dp->precision_arg_index = arg_posn++;
+ if (dp->precision_arg_index == ARG_NONE)
+ /* arg_posn wrapped around. */
+ goto error;
+ }
+ REGISTER_ARG (dp->precision_arg_index, TYPE_INT);
+ }
+ else
+ {
+ size_t precision_length;
+
+ dp->precision_start = cp - 1;
+ for (; *cp >= '0' && *cp <= '9'; cp++)
+ ;
+ dp->precision_end = cp;
+ precision_length = dp->precision_end - dp->precision_start;
+ if (max_precision_length < precision_length)
+ max_precision_length = precision_length;
+ }
+ }
+
+ {
+ arg_type type;
+
+ /* Parse argument type/size specifiers. */
+ {
+ int flags = 0;
+
+ for (;;)
+ {
+ if (*cp == 'h')
+ {
+ flags |= (1 << (flags & 1));
+ cp++;
+ }
+ else if (*cp == 'L')
+ {
+ flags |= 4;
+ cp++;
+ }
+ else if (*cp == 'l')
+ {
+ flags += 8;
+ cp++;
+ }
+ else if (*cp == 'j')
+ {
+ if (sizeof (intmax_t) > sizeof (long))
+ {
+ /* intmax_t = long long */
+ flags += 16;
+ }
+ else if (sizeof (intmax_t) > sizeof (int))
+ {
+ /* intmax_t = long */
+ flags += 8;
+ }
+ cp++;
+ }
+ else if (*cp == 'z' || *cp == 'Z')
+ {
+ /* 'z' is standardized in ISO C 99, but glibc uses 'Z'
+ because the warning facility in gcc-2.95.2 understands
+ only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784). */
+ if (sizeof (size_t) > sizeof (long))
+ {
+ /* size_t = long long */
+ flags += 16;
+ }
+ else if (sizeof (size_t) > sizeof (int))
+ {
+ /* size_t = long */
+ flags += 8;
+ }
+ cp++;
+ }
+ else if (*cp == 't')
+ {
+ if (sizeof (ptrdiff_t) > sizeof (long))
+ {
+ /* ptrdiff_t = long long */
+ flags += 16;
+ }
+ else if (sizeof (ptrdiff_t) > sizeof (int))
+ {
+ /* ptrdiff_t = long */
+ flags += 8;
+ }
+ cp++;
+ }
+#if defined __APPLE__ && defined __MACH__
+ /* On MacOS X 10.3, PRIdMAX is defined as "qd".
+ We cannot change it to "lld" because PRIdMAX must also
+ be understood by the system's printf routines. */
+ else if (*cp == 'q')
+ {
+ if (64 / 8 > sizeof (long))
+ {
+ /* int64_t = long long */
+ flags += 16;
+ }
+ else
+ {
+ /* int64_t = long */
+ flags += 8;
+ }
+ cp++;
+ }
+#endif
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+ /* On native Win32, PRIdMAX is defined as "I64d".
+ We cannot change it to "lld" because PRIdMAX must also
+ be understood by the system's printf routines. */
+ else if (*cp == 'I' && cp[1] == '6' && cp[2] == '4')
+ {
+ if (64 / 8 > sizeof (long))
+ {
+ /* __int64 = long long */
+ flags += 16;
+ }
+ else
+ {
+ /* __int64 = long */
+ flags += 8;
+ }
+ cp += 3;
+ }
+#endif
+ else
+ break;
+ }
+
+ /* Read the conversion character. */
+ c = *cp++;
+ switch (c)
+ {
+ case 'd': case 'i':
+#if HAVE_LONG_LONG_INT
+ /* If 'long long' exists and is larger than 'long': */
+ if (flags >= 16 || (flags & 4))
+ type = TYPE_LONGLONGINT;
+ else
+#endif
+ /* If 'long long' exists and is the same as 'long', we parse
+ "lld" into TYPE_LONGINT. */
+ if (flags >= 8)
+ type = TYPE_LONGINT;
+ else if (flags & 2)
+ type = TYPE_SCHAR;
+ else if (flags & 1)
+ type = TYPE_SHORT;
+ else
+ type = TYPE_INT;
+ break;
+ case 'o': case 'u': case 'x': case 'X':
+#if HAVE_LONG_LONG_INT
+ /* If 'long long' exists and is larger than 'long': */
+ if (flags >= 16 || (flags & 4))
+ type = TYPE_ULONGLONGINT;
+ else
+#endif
+ /* If 'unsigned long long' exists and is the same as
+ 'unsigned long', we parse "llu" into TYPE_ULONGINT. */
+ if (flags >= 8)
+ type = TYPE_ULONGINT;
+ else if (flags & 2)
+ type = TYPE_UCHAR;
+ else if (flags & 1)
+ type = TYPE_USHORT;
+ else
+ type = TYPE_UINT;
+ break;
+ case 'f': case 'F': case 'e': case 'E': case 'g': case 'G':
+ case 'a': case 'A':
+ if (flags >= 16 || (flags & 4))
+ type = TYPE_LONGDOUBLE;
+ else
+ type = TYPE_DOUBLE;
+ break;
+ case 'c':
+ if (flags >= 8)
+#if HAVE_WINT_T
+ type = TYPE_WIDE_CHAR;
+#else
+ goto error;
+#endif
+ else
+ type = TYPE_CHAR;
+ break;
+#if HAVE_WINT_T
+ case 'C':
+ type = TYPE_WIDE_CHAR;
+ c = 'c';
+ break;
+#endif
+ case 's':
+ if (flags >= 8)
+#if HAVE_WCHAR_T
+ type = TYPE_WIDE_STRING;
+#else
+ goto error;
+#endif
+ else
+ type = TYPE_STRING;
+ break;
+#if HAVE_WCHAR_T
+ case 'S':
+ type = TYPE_WIDE_STRING;
+ c = 's';
+ break;
+#endif
+ case 'p':
+ type = TYPE_POINTER;
+ break;
+ case 'n':
+#if HAVE_LONG_LONG_INT
+ /* If 'long long' exists and is larger than 'long': */
+ if (flags >= 16 || (flags & 4))
+ type = TYPE_COUNT_LONGLONGINT_POINTER;
+ else
+#endif
+ /* If 'long long' exists and is the same as 'long', we parse
+ "lln" into TYPE_COUNT_LONGINT_POINTER. */
+ if (flags >= 8)
+ type = TYPE_COUNT_LONGINT_POINTER;
+ else if (flags & 2)
+ type = TYPE_COUNT_SCHAR_POINTER;
+ else if (flags & 1)
+ type = TYPE_COUNT_SHORT_POINTER;
+ else
+ type = TYPE_COUNT_INT_POINTER;
+ break;
+#if ENABLE_UNISTDIO
+ /* The unistdio extensions. */
+ case 'U':
+ if (flags >= 16)
+ type = TYPE_U32_STRING;
+ else if (flags >= 8)
+ type = TYPE_U16_STRING;
+ else
+ type = TYPE_U8_STRING;
+ break;
+#endif
+ case '%':
+ type = TYPE_NONE;
+ break;
+ default:
+ /* Unknown conversion character. */
+ goto error;
+ }
+ }
+
+ if (type != TYPE_NONE)
+ {
+ dp->arg_index = arg_index;
+ if (dp->arg_index == ARG_NONE)
+ {
+ dp->arg_index = arg_posn++;
+ if (dp->arg_index == ARG_NONE)
+ /* arg_posn wrapped around. */
+ goto error;
+ }
+ REGISTER_ARG (dp->arg_index, type);
+ }
+ dp->conversion = c;
+ dp->dir_end = cp;
+ }
+
+ d->count++;
+ if (d->count >= d_allocated)
+ {
+ size_t memory_size;
+ DIRECTIVE *memory;
+
+ d_allocated = xtimes (d_allocated, 2);
+ memory_size = xtimes (d_allocated, sizeof (DIRECTIVE));
+ if (size_overflow_p (memory_size))
+ /* Overflow, would lead to out of memory. */
+ goto out_of_memory;
+ memory = (DIRECTIVE *) realloc (d->dir, memory_size);
+ if (memory == NULL)
+ /* Out of memory. */
+ goto out_of_memory;
+ d->dir = memory;
+ }
+ }
+#if CHAR_T_ONLY_ASCII
+ else if (!c_isascii (c))
+ {
+ /* Non-ASCII character. Not supported. */
+ goto error;
+ }
+#endif
+ }
+ d->dir[d->count].dir_start = cp;
+
+ d->max_width_length = max_width_length;
+ d->max_precision_length = max_precision_length;
+ return 0;
+
+error:
+ if (a->arg)
+ free (a->arg);
+ if (d->dir)
+ free (d->dir);
+ errno = EINVAL;
+ return -1;
+
+out_of_memory:
+ if (a->arg)
+ free (a->arg);
+ if (d->dir)
+ free (d->dir);
+out_of_memory_1:
+ errno = ENOMEM;
+ return -1;
+}
+
+#undef PRINTF_PARSE
+#undef DIRECTIVES
+#undef DIRECTIVE
+#undef CHAR_T_ONLY_ASCII
+#undef CHAR_T
diff --git a/lib/printf-parse.h b/lib/printf-parse.h
new file mode 100644
index 00000000..0a496cbd
--- /dev/null
+++ b/lib/printf-parse.h
@@ -0,0 +1,179 @@
+/* Parse printf format string.
+ Copyright (C) 1999, 2002-2003, 2005, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+#ifndef _PRINTF_PARSE_H
+#define _PRINTF_PARSE_H
+
+/* This file can be parametrized with the following macros:
+ ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions.
+ STATIC Set to 'static' to declare the function static. */
+
+#include "printf-args.h"
+
+
+/* Flags */
+#define FLAG_GROUP 1 /* ' flag */
+#define FLAG_LEFT 2 /* - flag */
+#define FLAG_SHOWSIGN 4 /* + flag */
+#define FLAG_SPACE 8 /* space flag */
+#define FLAG_ALT 16 /* # flag */
+#define FLAG_ZERO 32
+
+/* arg_index value indicating that no argument is consumed. */
+#define ARG_NONE (~(size_t)0)
+
+/* xxx_directive: A parsed directive.
+ xxx_directives: A parsed format string. */
+
+/* A parsed directive. */
+typedef struct
+{
+ const char* dir_start;
+ const char* dir_end;
+ int flags;
+ const char* width_start;
+ const char* width_end;
+ size_t width_arg_index;
+ const char* precision_start;
+ const char* precision_end;
+ size_t precision_arg_index;
+ char conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */
+ size_t arg_index;
+}
+char_directive;
+
+/* A parsed format string. */
+typedef struct
+{
+ size_t count;
+ char_directive *dir;
+ size_t max_width_length;
+ size_t max_precision_length;
+}
+char_directives;
+
+#if ENABLE_UNISTDIO
+
+/* A parsed directive. */
+typedef struct
+{
+ const uint8_t* dir_start;
+ const uint8_t* dir_end;
+ int flags;
+ const uint8_t* width_start;
+ const uint8_t* width_end;
+ size_t width_arg_index;
+ const uint8_t* precision_start;
+ const uint8_t* precision_end;
+ size_t precision_arg_index;
+ uint8_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */
+ size_t arg_index;
+}
+u8_directive;
+
+/* A parsed format string. */
+typedef struct
+{
+ size_t count;
+ u8_directive *dir;
+ size_t max_width_length;
+ size_t max_precision_length;
+}
+u8_directives;
+
+/* A parsed directive. */
+typedef struct
+{
+ const uint16_t* dir_start;
+ const uint16_t* dir_end;
+ int flags;
+ const uint16_t* width_start;
+ const uint16_t* width_end;
+ size_t width_arg_index;
+ const uint16_t* precision_start;
+ const uint16_t* precision_end;
+ size_t precision_arg_index;
+ uint16_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */
+ size_t arg_index;
+}
+u16_directive;
+
+/* A parsed format string. */
+typedef struct
+{
+ size_t count;
+ u16_directive *dir;
+ size_t max_width_length;
+ size_t max_precision_length;
+}
+u16_directives;
+
+/* A parsed directive. */
+typedef struct
+{
+ const uint32_t* dir_start;
+ const uint32_t* dir_end;
+ int flags;
+ const uint32_t* width_start;
+ const uint32_t* width_end;
+ size_t width_arg_index;
+ const uint32_t* precision_start;
+ const uint32_t* precision_end;
+ size_t precision_arg_index;
+ uint32_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */
+ size_t arg_index;
+}
+u32_directive;
+
+/* A parsed format string. */
+typedef struct
+{
+ size_t count;
+ u32_directive *dir;
+ size_t max_width_length;
+ size_t max_precision_length;
+}
+u32_directives;
+
+#endif
+
+
+/* Parses the format string. Fills in the number N of directives, and fills
+ in directives[0], ..., directives[N-1], and sets directives[N].dir_start
+ to the end of the format string. Also fills in the arg_type fields of the
+ arguments and the needed count of arguments. */
+#if ENABLE_UNISTDIO
+extern int
+ ulc_printf_parse (const char *format, char_directives *d, arguments *a);
+extern int
+ u8_printf_parse (const uint8_t *format, u8_directives *d, arguments *a);
+extern int
+ u16_printf_parse (const uint16_t *format, u16_directives *d,
+ arguments *a);
+extern int
+ u32_printf_parse (const uint32_t *format, u32_directives *d,
+ arguments *a);
+#else
+# ifdef STATIC
+STATIC
+# else
+extern
+# endif
+int printf_parse (const char *format, char_directives *d, arguments *a);
+#endif
+
+#endif /* _PRINTF_PARSE_H */
diff --git a/lib/ref-add.sin b/lib/ref-add.sin
new file mode 100644
index 00000000..3acdcc84
--- /dev/null
+++ b/lib/ref-add.sin
@@ -0,0 +1,30 @@
+# Add this package to a list of references stored in a text file.
+#
+# Copyright (C) 2000 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser 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.
+#
+# Written by Bruno Haible <haible@clisp.cons.org>.
+#
+/^# Packages using this file: / {
+ s/# Packages using this file://
+ ta
+ :a
+ s/ @PACKAGE@ / @PACKAGE@ /
+ tb
+ s/ $/ @PACKAGE@ /
+ :b
+ s/^/# Packages using this file:/
+}
diff --git a/lib/ref-del.sin b/lib/ref-del.sin
new file mode 100644
index 00000000..7923d062
--- /dev/null
+++ b/lib/ref-del.sin
@@ -0,0 +1,25 @@
+# Remove this package from a list of references stored in a text file.
+#
+# Copyright (C) 2000 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser 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.
+#
+# Written by Bruno Haible <haible@clisp.cons.org>.
+#
+/^# Packages using this file: / {
+ s/# Packages using this file://
+ s/ @PACKAGE@ / /
+ s/^/# Packages using this file:/
+}
diff --git a/lib/relocatable.c b/lib/relocatable.c
new file mode 100644
index 00000000..09ff8c9e
--- /dev/null
+++ b/lib/relocatable.c
@@ -0,0 +1,493 @@
+/* Provide relocatable packages.
+ Copyright (C) 2003-2006, 2008 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2003.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library 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. */
+
+
+/* Tell glibc's <stdio.h> to provide a prototype for getline().
+ This must come before <config.h> because <config.h> may include
+ <features.h>, and once <features.h> has been included, it's too late. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#include <config.h>
+
+/* Specification. */
+#include "relocatable.h"
+
+#if ENABLE_RELOCATABLE
+
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef NO_XMALLOC
+# define xmalloc malloc
+#else
+# include "xalloc.h"
+#endif
+
+#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+#endif
+
+#if DEPENDS_ON_LIBCHARSET
+# include <libcharset.h>
+#endif
+#if DEPENDS_ON_LIBICONV && HAVE_ICONV
+# include <iconv.h>
+#endif
+#if DEPENDS_ON_LIBINTL && ENABLE_NLS
+# include <libintl.h>
+#endif
+
+/* Faked cheap 'bool'. */
+#undef bool
+#undef false
+#undef true
+#define bool int
+#define false 0
+#define true 1
+
+/* Pathname support.
+ ISSLASH(C) tests whether C is a directory separator character.
+ IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
+ */
+#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
+ /* Win32, Cygwin, OS/2, DOS */
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+# define HAS_DEVICE(P) \
+ ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
+ && (P)[1] == ':')
+# define IS_PATH_WITH_DIR(P) \
+ (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P))
+# define FILE_SYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0)
+#else
+ /* Unix */
+# define ISSLASH(C) ((C) == '/')
+# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL)
+# define FILE_SYSTEM_PREFIX_LEN(P) 0
+#endif
+
+/* Original installation prefix. */
+static char *orig_prefix;
+static size_t orig_prefix_len;
+/* Current installation prefix. */
+static char *curr_prefix;
+static size_t curr_prefix_len;
+/* These prefixes do not end in a slash. Anything that will be concatenated
+ to them must start with a slash. */
+
+/* Sets the original and the current installation prefix of this module.
+ Relocation simply replaces a pathname starting with the original prefix
+ by the corresponding pathname with the current prefix instead. Both
+ prefixes should be directory names without trailing slash (i.e. use ""
+ instead of "/"). */
+static void
+set_this_relocation_prefix (const char *orig_prefix_arg,
+ const char *curr_prefix_arg)
+{
+ if (orig_prefix_arg != NULL && curr_prefix_arg != NULL
+ /* Optimization: if orig_prefix and curr_prefix are equal, the
+ relocation is a nop. */
+ && strcmp (orig_prefix_arg, curr_prefix_arg) != 0)
+ {
+ /* Duplicate the argument strings. */
+ char *memory;
+
+ orig_prefix_len = strlen (orig_prefix_arg);
+ curr_prefix_len = strlen (curr_prefix_arg);
+ memory = (char *) xmalloc (orig_prefix_len + 1 + curr_prefix_len + 1);
+#ifdef NO_XMALLOC
+ if (memory != NULL)
+#endif
+ {
+ memcpy (memory, orig_prefix_arg, orig_prefix_len + 1);
+ orig_prefix = memory;
+ memory += orig_prefix_len + 1;
+ memcpy (memory, curr_prefix_arg, curr_prefix_len + 1);
+ curr_prefix = memory;
+ return;
+ }
+ }
+ orig_prefix = NULL;
+ curr_prefix = NULL;
+ /* Don't worry about wasted memory here - this function is usually only
+ called once. */
+}
+
+/* Sets the original and the current installation prefix of the package.
+ Relocation simply replaces a pathname starting with the original prefix
+ by the corresponding pathname with the current prefix instead. Both
+ prefixes should be directory names without trailing slash (i.e. use ""
+ instead of "/"). */
+void
+set_relocation_prefix (const char *orig_prefix_arg, const char *curr_prefix_arg)
+{
+ set_this_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
+
+ /* Now notify all dependent libraries. */
+#if DEPENDS_ON_LIBCHARSET
+ libcharset_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
+#endif
+#if DEPENDS_ON_LIBICONV && HAVE_ICONV && _LIBICONV_VERSION >= 0x0109
+ libiconv_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
+#endif
+#if DEPENDS_ON_LIBINTL && ENABLE_NLS && defined libintl_set_relocation_prefix
+ libintl_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
+#endif
+}
+
+#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR)
+
+/* Convenience function:
+ Computes the current installation prefix, based on the original
+ installation prefix, the original installation directory of a particular
+ file, and the current pathname of this file.
+ Returns it, freshly allocated. Returns NULL upon failure. */
+#ifdef IN_LIBRARY
+#define compute_curr_prefix local_compute_curr_prefix
+static
+#endif
+char *
+compute_curr_prefix (const char *orig_installprefix,
+ const char *orig_installdir,
+ const char *curr_pathname)
+{
+ char *curr_installdir;
+ const char *rel_installdir;
+
+ if (curr_pathname == NULL)
+ return NULL;
+
+ /* Determine the relative installation directory, relative to the prefix.
+ This is simply the difference between orig_installprefix and
+ orig_installdir. */
+ if (strncmp (orig_installprefix, orig_installdir, strlen (orig_installprefix))
+ != 0)
+ /* Shouldn't happen - nothing should be installed outside $(prefix). */
+ return NULL;
+ rel_installdir = orig_installdir + strlen (orig_installprefix);
+
+ /* Determine the current installation directory. */
+ {
+ const char *p_base = curr_pathname + FILE_SYSTEM_PREFIX_LEN (curr_pathname);
+ const char *p = curr_pathname + strlen (curr_pathname);
+ char *q;
+
+ while (p > p_base)
+ {
+ p--;
+ if (ISSLASH (*p))
+ break;
+ }
+
+ q = (char *) xmalloc (p - curr_pathname + 1);
+#ifdef NO_XMALLOC
+ if (q == NULL)
+ return NULL;
+#endif
+ memcpy (q, curr_pathname, p - curr_pathname);
+ q[p - curr_pathname] = '\0';
+ curr_installdir = q;
+ }
+
+ /* Compute the current installation prefix by removing the trailing
+ rel_installdir from it. */
+ {
+ const char *rp = rel_installdir + strlen (rel_installdir);
+ const char *cp = curr_installdir + strlen (curr_installdir);
+ const char *cp_base =
+ curr_installdir + FILE_SYSTEM_PREFIX_LEN (curr_installdir);
+
+ while (rp > rel_installdir && cp > cp_base)
+ {
+ bool same = false;
+ const char *rpi = rp;
+ const char *cpi = cp;
+
+ while (rpi > rel_installdir && cpi > cp_base)
+ {
+ rpi--;
+ cpi--;
+ if (ISSLASH (*rpi) || ISSLASH (*cpi))
+ {
+ if (ISSLASH (*rpi) && ISSLASH (*cpi))
+ same = true;
+ break;
+ }
+ /* Do case-insensitive comparison if the filesystem is always or
+ often case-insensitive. It's better to accept the comparison
+ if the difference is only in case, rather than to fail. */
+#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
+ /* Win32, Cygwin, OS/2, DOS - case insignificant filesystem */
+ if ((*rpi >= 'a' && *rpi <= 'z' ? *rpi - 'a' + 'A' : *rpi)
+ != (*cpi >= 'a' && *cpi <= 'z' ? *cpi - 'a' + 'A' : *cpi))
+ break;
+#else
+ if (*rpi != *cpi)
+ break;
+#endif
+ }
+ if (!same)
+ break;
+ /* The last pathname component was the same. opi and cpi now point
+ to the slash before it. */
+ rp = rpi;
+ cp = cpi;
+ }
+
+ if (rp > rel_installdir)
+ {
+ /* Unexpected: The curr_installdir does not end with rel_installdir. */
+ free (curr_installdir);
+ return NULL;
+ }
+
+ {
+ size_t curr_prefix_len = cp - curr_installdir;
+ char *curr_prefix;
+
+ curr_prefix = (char *) xmalloc (curr_prefix_len + 1);
+#ifdef NO_XMALLOC
+ if (curr_prefix == NULL)
+ {
+ free (curr_installdir);
+ return NULL;
+ }
+#endif
+ memcpy (curr_prefix, curr_installdir, curr_prefix_len);
+ curr_prefix[curr_prefix_len] = '\0';
+
+ free (curr_installdir);
+
+ return curr_prefix;
+ }
+ }
+}
+
+#endif /* !IN_LIBRARY || PIC */
+
+#if defined PIC && defined INSTALLDIR
+
+/* Full pathname of shared library, or NULL. */
+static char *shared_library_fullname;
+
+#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
+
+/* Determine the full pathname of the shared library when it is loaded. */
+
+BOOL WINAPI
+DllMain (HINSTANCE module_handle, DWORD event, LPVOID reserved)
+{
+ (void) reserved;
+
+ if (event == DLL_PROCESS_ATTACH)
+ {
+ /* The DLL is being loaded into an application's address range. */
+ static char location[MAX_PATH];
+
+ if (!GetModuleFileName (module_handle, location, sizeof (location)))
+ /* Shouldn't happen. */
+ return FALSE;
+
+ if (!IS_PATH_WITH_DIR (location))
+ /* Shouldn't happen. */
+ return FALSE;
+
+ {
+#if defined __CYGWIN__
+ /* On Cygwin, we need to convert paths coming from Win32 system calls
+ to the Unix-like slashified notation. */
+ static char location_as_posix_path[2 * MAX_PATH];
+ /* There's no error return defined for cygwin_conv_to_posix_path.
+ See cygwin-api/func-cygwin-conv-to-posix-path.html.
+ Does it overflow the buffer of expected size MAX_PATH or does it
+ truncate the path? I don't know. Let's catch both. */
+ cygwin_conv_to_posix_path (location, location_as_posix_path);
+ location_as_posix_path[MAX_PATH - 1] = '\0';
+ if (strlen (location_as_posix_path) >= MAX_PATH - 1)
+ /* A sign of buffer overflow or path truncation. */
+ return FALSE;
+ shared_library_fullname = strdup (location_as_posix_path);
+#else
+ shared_library_fullname = strdup (location);
+#endif
+ }
+ }
+
+ return TRUE;
+}
+
+#else /* Unix except Cygwin */
+
+static void
+find_shared_library_fullname ()
+{
+#if defined __linux__ && __GLIBC__ >= 2
+ /* Linux has /proc/self/maps. glibc 2 has the getline() function. */
+ FILE *fp;
+
+ /* Open the current process' maps file. It describes one VMA per line. */
+ fp = fopen ("/proc/self/maps", "r");
+ if (fp)
+ {
+ unsigned long address = (unsigned long) &find_shared_library_fullname;
+ for (;;)
+ {
+ unsigned long start, end;
+ int c;
+
+ if (fscanf (fp, "%lx-%lx", &start, &end) != 2)
+ break;
+ if (address >= start && address <= end - 1)
+ {
+ /* Found it. Now see if this line contains a filename. */
+ while (c = getc (fp), c != EOF && c != '\n' && c != '/')
+ continue;
+ if (c == '/')
+ {
+ size_t size;
+ int len;
+
+ ungetc (c, fp);
+ shared_library_fullname = NULL; size = 0;
+ len = getline (&shared_library_fullname, &size, fp);
+ if (len >= 0)
+ {
+ /* Success: filled shared_library_fullname. */
+ if (len > 0 && shared_library_fullname[len - 1] == '\n')
+ shared_library_fullname[len - 1] = '\0';
+ }
+ }
+ break;
+ }
+ while (c = getc (fp), c != EOF && c != '\n')
+ continue;
+ }
+ fclose (fp);
+ }
+#endif
+}
+
+#endif /* (WIN32 or Cygwin) / (Unix except Cygwin) */
+
+/* Return the full pathname of the current shared library.
+ Return NULL if unknown.
+ Guaranteed to work only on Linux, Cygwin and Woe32. */
+static char *
+get_shared_library_fullname ()
+{
+#if !(defined _WIN32 || defined __WIN32__ || defined __CYGWIN__)
+ static bool tried_find_shared_library_fullname;
+ if (!tried_find_shared_library_fullname)
+ {
+ find_shared_library_fullname ();
+ tried_find_shared_library_fullname = true;
+ }
+#endif
+ return shared_library_fullname;
+}
+
+#endif /* PIC */
+
+/* Returns the pathname, relocated according to the current installation
+ directory.
+ The returned string is either PATHNAME unmodified or a freshly allocated
+ string that you can free with free() after casting it to 'char *'. */
+const char *
+relocate (const char *pathname)
+{
+#if defined PIC && defined INSTALLDIR
+ static int initialized;
+
+ /* Initialization code for a shared library. */
+ if (!initialized)
+ {
+ /* At this point, orig_prefix and curr_prefix likely have already been
+ set through the main program's set_program_name_and_installdir
+ function. This is sufficient in the case that the library has
+ initially been installed in the same orig_prefix. But we can do
+ better, to also cover the cases that 1. it has been installed
+ in a different prefix before being moved to orig_prefix and (later)
+ to curr_prefix, 2. unlike the program, it has not moved away from
+ orig_prefix. */
+ const char *orig_installprefix = INSTALLPREFIX;
+ const char *orig_installdir = INSTALLDIR;
+ char *curr_prefix_better;
+
+ curr_prefix_better =
+ compute_curr_prefix (orig_installprefix, orig_installdir,
+ get_shared_library_fullname ());
+
+ set_relocation_prefix (orig_installprefix,
+ curr_prefix_better != NULL
+ ? curr_prefix_better
+ : curr_prefix);
+
+ if (curr_prefix_better != NULL)
+ free (curr_prefix_better);
+
+ initialized = 1;
+ }
+#endif
+
+ /* Note: It is not necessary to perform case insensitive comparison here,
+ even for DOS-like filesystems, because the pathname argument was
+ typically created from the same Makefile variable as orig_prefix came
+ from. */
+ if (orig_prefix != NULL && curr_prefix != NULL
+ && strncmp (pathname, orig_prefix, orig_prefix_len) == 0)
+ {
+ if (pathname[orig_prefix_len] == '\0')
+ {
+ /* pathname equals orig_prefix. */
+ char *result = (char *) xmalloc (strlen (curr_prefix) + 1);
+
+#ifdef NO_XMALLOC
+ if (result != NULL)
+#endif
+ {
+ strcpy (result, curr_prefix);
+ return result;
+ }
+ }
+ else if (ISSLASH (pathname[orig_prefix_len]))
+ {
+ /* pathname starts with orig_prefix. */
+ const char *pathname_tail = &pathname[orig_prefix_len];
+ char *result =
+ (char *) xmalloc (curr_prefix_len + strlen (pathname_tail) + 1);
+
+#ifdef NO_XMALLOC
+ if (result != NULL)
+#endif
+ {
+ memcpy (result, curr_prefix, curr_prefix_len);
+ strcpy (result + curr_prefix_len, pathname_tail);
+ return result;
+ }
+ }
+ }
+ /* Nothing to relocate. */
+ return pathname;
+}
+
+#endif
diff --git a/lib/relocatable.h b/lib/relocatable.h
new file mode 100644
index 00000000..5dfd7108
--- /dev/null
+++ b/lib/relocatable.h
@@ -0,0 +1,83 @@
+/* Provide relocatable packages.
+ Copyright (C) 2003, 2005, 2008 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2003.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library 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. */
+
+#ifndef _RELOCATABLE_H
+#define _RELOCATABLE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* This can be enabled through the configure --enable-relocatable option. */
+#if ENABLE_RELOCATABLE
+
+/* When building a DLL, we must export some functions. Note that because
+ this is a private .h file, we don't need to use __declspec(dllimport)
+ in any case. */
+#if HAVE_VISIBILITY && BUILDING_DLL
+# define RELOCATABLE_DLL_EXPORTED __attribute__((__visibility__("default")))
+#elif defined _MSC_VER && BUILDING_DLL
+# define RELOCATABLE_DLL_EXPORTED __declspec(dllexport)
+#else
+# define RELOCATABLE_DLL_EXPORTED
+#endif
+
+/* Sets the original and the current installation prefix of the package.
+ Relocation simply replaces a pathname starting with the original prefix
+ by the corresponding pathname with the current prefix instead. Both
+ prefixes should be directory names without trailing slash (i.e. use ""
+ instead of "/"). */
+extern RELOCATABLE_DLL_EXPORTED void
+ set_relocation_prefix (const char *orig_prefix,
+ const char *curr_prefix);
+
+/* Returns the pathname, relocated according to the current installation
+ directory.
+ The returned string is either PATHNAME unmodified or a freshly allocated
+ string that you can free with free() after casting it to 'char *'. */
+extern const char * relocate (const char *pathname);
+
+/* Memory management: relocate() potentially allocates memory, because it has
+ to construct a fresh pathname. If this is a problem because your program
+ calls relocate() frequently, think about caching the result. Or free the
+ return value if it was different from the argument pathname. */
+
+/* Convenience function:
+ Computes the current installation prefix, based on the original
+ installation prefix, the original installation directory of a particular
+ file, and the current pathname of this file.
+ Returns it, freshly allocated. Returns NULL upon failure. */
+extern char * compute_curr_prefix (const char *orig_installprefix,
+ const char *orig_installdir,
+ const char *curr_pathname);
+
+#else
+
+/* By default, we use the hardwired pathnames. */
+#define relocate(pathname) (pathname)
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RELOCATABLE_H */
diff --git a/lib/signbitd.c b/lib/signbitd.c
new file mode 100644
index 00000000..8d082b6c
--- /dev/null
+++ b/lib/signbitd.c
@@ -0,0 +1,64 @@
+/* signbit() macro: Determine the sign bit of a floating-point number.
+ Copyright (C) 2007-2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+#include <string.h>
+#include "isnand-nolibm.h"
+#include "float+.h"
+
+#ifdef gl_signbitd_OPTIMIZED_MACRO
+# undef gl_signbitd
+#endif
+
+int
+gl_signbitd (double arg)
+{
+#if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT
+ /* The use of a union to extract the bits of the representation of a
+ 'long double' is safe in practice, despite of the "aliasing rules" of
+ C99, because the GCC docs say
+ "Even with '-fstrict-aliasing', type-punning is allowed, provided the
+ memory is accessed through the union type."
+ and similarly for other compilers. */
+# define NWORDS \
+ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+ union { double value; unsigned int word[NWORDS]; } m;
+ m.value = arg;
+ return (m.word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1;
+#elif HAVE_COPYSIGN_IN_LIBC
+ return copysign (1.0, arg) < 0;
+#else
+ /* This does not do the right thing for NaN, but this is irrelevant for
+ most use cases. */
+ if (isnand (arg))
+ return 0;
+ if (arg < 0.0)
+ return 1;
+ else if (arg == 0.0)
+ {
+ /* Distinguish 0.0 and -0.0. */
+ static double plus_zero = 0.0;
+ double arg_mem = arg;
+ return (memcmp (&plus_zero, &arg_mem, SIZEOF_DBL) != 0);
+ }
+ else
+ return 0;
+#endif
+}
diff --git a/lib/signbitf.c b/lib/signbitf.c
new file mode 100644
index 00000000..e75f38c7
--- /dev/null
+++ b/lib/signbitf.c
@@ -0,0 +1,64 @@
+/* signbit() macro: Determine the sign bit of a floating-point number.
+ Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+#include <string.h>
+#include "isnanf-nolibm.h"
+#include "float+.h"
+
+#ifdef gl_signbitf_OPTIMIZED_MACRO
+# undef gl_signbitf
+#endif
+
+int
+gl_signbitf (float arg)
+{
+#if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT
+ /* The use of a union to extract the bits of the representation of a
+ 'long double' is safe in practice, despite of the "aliasing rules" of
+ C99, because the GCC docs say
+ "Even with '-fstrict-aliasing', type-punning is allowed, provided the
+ memory is accessed through the union type."
+ and similarly for other compilers. */
+# define NWORDS \
+ ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+ union { float value; unsigned int word[NWORDS]; } m;
+ m.value = arg;
+ return (m.word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1;
+#elif HAVE_COPYSIGNF_IN_LIBC
+ return copysignf (1.0f, arg) < 0;
+#else
+ /* This does not do the right thing for NaN, but this is irrelevant for
+ most use cases. */
+ if (isnanf (arg))
+ return 0;
+ if (arg < 0.0f)
+ return 1;
+ else if (arg == 0.0f)
+ {
+ /* Distinguish 0.0f and -0.0f. */
+ static float plus_zero = 0.0f;
+ float arg_mem = arg;
+ return (memcmp (&plus_zero, &arg_mem, SIZEOF_FLT) != 0);
+ }
+ else
+ return 0;
+#endif
+}
diff --git a/lib/signbitl.c b/lib/signbitl.c
new file mode 100644
index 00000000..465937f9
--- /dev/null
+++ b/lib/signbitl.c
@@ -0,0 +1,64 @@
+/* signbit() macro: Determine the sign bit of a floating-point number.
+ Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <math.h>
+
+#include <string.h>
+#include "isnanl-nolibm.h"
+#include "float+.h"
+
+#ifdef gl_signbitl_OPTIMIZED_MACRO
+# undef gl_signbitl
+#endif
+
+int
+gl_signbitl (long double arg)
+{
+#if defined LDBL_SIGNBIT_WORD && defined LDBL_SIGNBIT_BIT
+ /* The use of a union to extract the bits of the representation of a
+ 'long double' is safe in practice, despite of the "aliasing rules" of
+ C99, because the GCC docs say
+ "Even with '-fstrict-aliasing', type-punning is allowed, provided the
+ memory is accessed through the union type."
+ and similarly for other compilers. */
+# define NWORDS \
+ ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+ union { long double value; unsigned int word[NWORDS]; } m;
+ m.value = arg;
+ return (m.word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1;
+#elif HAVE_COPYSIGNL_IN_LIBC
+ return copysignl (1.0L, arg) < 0;
+#else
+ /* This does not do the right thing for NaN, but this is irrelevant for
+ most use cases. */
+ if (isnanl (arg))
+ return 0;
+ if (arg < 0.0L)
+ return 1;
+ else if (arg == 0.0L)
+ {
+ /* Distinguish 0.0L and -0.0L. */
+ static long double plus_zero = 0.0L;
+ long double arg_mem = arg;
+ return (memcmp (&plus_zero, &arg_mem, SIZEOF_LDBL) != 0);
+ }
+ else
+ return 0;
+#endif
+}
diff --git a/lib/size_max.h b/lib/size_max.h
new file mode 100644
index 00000000..419d73a1
--- /dev/null
+++ b/lib/size_max.h
@@ -0,0 +1,31 @@
+/* size_max.h -- declare SIZE_MAX through system headers
+ Copyright (C) 2005-2006 Free Software Foundation, Inc.
+ Written by Simon Josefsson.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+#ifndef GNULIB_SIZE_MAX_H
+#define GNULIB_SIZE_MAX_H
+
+/* Get SIZE_MAX declaration on systems like Solaris 7/8/9. */
+# include <limits.h>
+/* Get SIZE_MAX declaration on systems like glibc 2. */
+# if HAVE_STDINT_H
+# include <stdint.h>
+# endif
+/* On systems where these include files don't define it, SIZE_MAX is defined
+ in config.h. */
+
+#endif /* GNULIB_SIZE_MAX_H */
diff --git a/lib/stdbool.in.h b/lib/stdbool.in.h
new file mode 100644
index 00000000..3390484f
--- /dev/null
+++ b/lib/stdbool.in.h
@@ -0,0 +1,119 @@
+/* Copyright (C) 2001-2003, 2006-2008 Free Software Foundation, Inc.
+ Written by Bruno Haible <haible@clisp.cons.org>, 2001.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+#ifndef _GL_STDBOOL_H
+#define _GL_STDBOOL_H
+
+/* ISO C 99 <stdbool.h> for platforms that lack it. */
+
+/* Usage suggestions:
+
+ Programs that use <stdbool.h> should be aware of some limitations
+ and standards compliance issues.
+
+ Standards compliance:
+
+ - <stdbool.h> must be #included before 'bool', 'false', 'true'
+ can be used.
+
+ - You cannot assume that sizeof (bool) == 1.
+
+ - Programs should not undefine the macros bool, true, and false,
+ as C99 lists that as an "obsolescent feature".
+
+ Limitations of this substitute, when used in a C89 environment:
+
+ - <stdbool.h> must be #included before the '_Bool' type can be used.
+
+ - You cannot assume that _Bool is a typedef; it might be a macro.
+
+ - Bit-fields of type 'bool' are not supported. Portable code
+ should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'.
+
+ - In C99, casts and automatic conversions to '_Bool' or 'bool' are
+ performed in such a way that every nonzero value gets converted
+ to 'true', and zero gets converted to 'false'. This doesn't work
+ with this substitute. With this substitute, only the values 0 and 1
+ give the expected result when converted to _Bool' or 'bool'.
+
+ Also, it is suggested that programs use 'bool' rather than '_Bool';
+ this isn't required, but 'bool' is more common. */
+
+
+/* 7.16. Boolean type and values */
+
+/* BeOS <sys/socket.h> already #defines false 0, true 1. We use the same
+ definitions below, but temporarily we have to #undef them. */
+#if defined __BEOS__ && !defined __HAIKU__
+# include <OS.h> /* defines bool but not _Bool */
+# undef false
+# undef true
+#endif
+
+/* For the sake of symbolic names in gdb, we define true and false as
+ enum constants, not only as macros.
+ It is tempting to write
+ typedef enum { false = 0, true = 1 } _Bool;
+ so that gdb prints values of type 'bool' symbolically. But if we do
+ this, values of type '_Bool' may promote to 'int' or 'unsigned int'
+ (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int'
+ (see ISO C 99 6.3.1.1.(2)). So we add a negative value to the
+ enum; this ensures that '_Bool' promotes to 'int'. */
+#if defined __cplusplus || (defined __BEOS__ && !defined __HAIKU__)
+ /* A compiler known to have 'bool'. */
+ /* If the compiler already has both 'bool' and '_Bool', we can assume they
+ are the same types. */
+# if !@HAVE__BOOL@
+typedef bool _Bool;
+# endif
+#else
+# if !defined __GNUC__
+ /* If @HAVE__BOOL@:
+ Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when
+ the built-in _Bool type is used. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+ Similar bugs are likely with other compilers as well; this file
+ wouldn't be used if <stdbool.h> was working.
+ So we override the _Bool type.
+ If !@HAVE__BOOL@:
+ Need to define _Bool ourselves. As 'signed char' or as an enum type?
+ Use of a typedef, with SunPRO C, leads to a stupid
+ "warning: _Bool is a keyword in ISO C99".
+ Use of an enum type, with IRIX cc, leads to a stupid
+ "warning(1185): enumerated type mixed with another type".
+ Even the existence of an enum type, without a typedef,
+ "Invalid enumerator. (badenum)" with HP-UX cc on Tru64.
+ The only benefit of the enum, debuggability, is not important
+ with these compilers. So use 'signed char' and no enum. */
+# define _Bool signed char
+# else
+ /* With this compiler, trust the _Bool type if the compiler has it. */
+# if !@HAVE__BOOL@
+typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool;
+# endif
+# endif
+#endif
+#define bool _Bool
+
+/* The other macros must be usable in preprocessor directives. */
+#define false 0
+#define true 1
+#define __bool_true_false_are_defined 1
+
+#endif /* _GL_STDBOOL_H */
diff --git a/lib/stdint.in.h b/lib/stdint.in.h
new file mode 100644
index 00000000..11a21176
--- /dev/null
+++ b/lib/stdint.in.h
@@ -0,0 +1,567 @@
+/* Copyright (C) 2001-2002, 2004-2009 Free Software Foundation, Inc.
+ Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
+ This file is part of gnulib.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+/*
+ * ISO C 99 <stdint.h> for platforms that lack it.
+ * <http://www.opengroup.org/susv3xbd/stdint.h.html>
+ */
+
+#ifndef _GL_STDINT_H
+
+/* When including a system file that in turn includes <inttypes.h>,
+ use the system <inttypes.h>, not our substitute. This avoids
+ problems with (for example) VMS, whose <sys/bitypes.h> includes
+ <inttypes.h>. */
+#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+
+/* Get those types that are already defined in other system include
+ files, so that we can "#define int8_t signed char" below without
+ worrying about a later system include file containing a "typedef
+ signed char int8_t;" that will get messed up by our macro. Our
+ macros should all be consistent with the system versions, except
+ for the "fast" types and macros, which we recommend against using
+ in public interfaces due to compiler differences. */
+
+#if @HAVE_STDINT_H@
+# if defined __sgi && ! defined __c99
+ /* Bypass IRIX's <stdint.h> if in C89 mode, since it merely annoys users
+ with "This header file is to be used only for c99 mode compilations"
+ diagnostics. */
+# define __STDINT_H__
+# endif
+ /* Other systems may have an incomplete or buggy <stdint.h>.
+ Include it before <inttypes.h>, since any "#include <stdint.h>"
+ in <inttypes.h> would reinclude us, skipping our contents because
+ _GL_STDINT_H is defined.
+ The include_next requires a split double-inclusion guard. */
+# if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+# endif
+# @INCLUDE_NEXT@ @NEXT_STDINT_H@
+#endif
+
+#if ! defined _GL_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+#define _GL_STDINT_H
+
+/* <sys/types.h> defines some of the stdint.h types as well, on glibc,
+ IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
+ AIX 5.2 <sys/types.h> isn't needed and causes troubles.
+ MacOS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
+ relies on the system <stdint.h> definitions, so include
+ <sys/types.h> after @NEXT_STDINT_H@. */
+#if @HAVE_SYS_TYPES_H@ && ! defined _AIX
+# include <sys/types.h>
+#endif
+
+/* Get LONG_MIN, LONG_MAX, ULONG_MAX. */
+#include <limits.h>
+
+#if @HAVE_INTTYPES_H@
+ /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines
+ int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
+ <inttypes.h> also defines intptr_t and uintptr_t. */
+# include <inttypes.h>
+#elif @HAVE_SYS_INTTYPES_H@
+ /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
+ the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */
+# include <sys/inttypes.h>
+#endif
+
+#if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__
+ /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines
+ int{8,16,32,64}_t and __BIT_TYPES_DEFINED__. In libc5 >= 5.2.2 it is
+ included by <sys/types.h>. */
+# include <sys/bitypes.h>
+#endif
+
+#undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+
+/* Minimum and maximum values for a integer type under the usual assumption.
+ Return an unspecified value if BITS == 0, adding a check to pacify
+ picky compilers. */
+
+#define _STDINT_MIN(signed, bits, zero) \
+ ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero))
+
+#define _STDINT_MAX(signed, bits, zero) \
+ ((signed) \
+ ? ~ _STDINT_MIN (signed, bits, zero) \
+ : /* The expression for the unsigned case. The subtraction of (signed) \
+ is a nop in the unsigned case and avoids "signed integer overflow" \
+ warnings in the signed case. */ \
+ ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1)
+
+/* 7.18.1.1. Exact-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. */
+
+#undef int8_t
+#undef uint8_t
+typedef signed char gl_int8_t;
+typedef unsigned char gl_uint8_t;
+#define int8_t gl_int8_t
+#define uint8_t gl_uint8_t
+
+#undef int16_t
+#undef uint16_t
+typedef short int gl_int16_t;
+typedef unsigned short int gl_uint16_t;
+#define int16_t gl_int16_t
+#define uint16_t gl_uint16_t
+
+#undef int32_t
+#undef uint32_t
+typedef int gl_int32_t;
+typedef unsigned int gl_uint32_t;
+#define int32_t gl_int32_t
+#define uint32_t gl_uint32_t
+
+/* Do not undefine int64_t if gnulib is not being used with 64-bit
+ types, since otherwise it breaks platforms like Tandem/NSK. */
+#if LONG_MAX >> 31 >> 31 == 1
+# undef int64_t
+typedef long int gl_int64_t;
+# define int64_t gl_int64_t
+# define GL_INT64_T
+#elif defined _MSC_VER
+# undef int64_t
+typedef __int64 gl_int64_t;
+# define int64_t gl_int64_t
+# define GL_INT64_T
+#elif @HAVE_LONG_LONG_INT@
+# undef int64_t
+typedef long long int gl_int64_t;
+# define int64_t gl_int64_t
+# define GL_INT64_T
+#endif
+
+#if ULONG_MAX >> 31 >> 31 >> 1 == 1
+# undef uint64_t
+typedef unsigned long int gl_uint64_t;
+# define uint64_t gl_uint64_t
+# define GL_UINT64_T
+#elif defined _MSC_VER
+# undef uint64_t
+typedef unsigned __int64 gl_uint64_t;
+# define uint64_t gl_uint64_t
+# define GL_UINT64_T
+#elif @HAVE_UNSIGNED_LONG_LONG_INT@
+# undef uint64_t
+typedef unsigned long long int gl_uint64_t;
+# define uint64_t gl_uint64_t
+# define GL_UINT64_T
+#endif
+
+/* Avoid collision with Solaris 2.5.1 <pthread.h> etc. */
+#define _UINT8_T
+#define _UINT32_T
+#define _UINT64_T
+
+
+/* 7.18.1.2. Minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
+ are the same as the corresponding N_t types. */
+
+#undef int_least8_t
+#undef uint_least8_t
+#undef int_least16_t
+#undef uint_least16_t
+#undef int_least32_t
+#undef uint_least32_t
+#undef int_least64_t
+#undef uint_least64_t
+#define int_least8_t int8_t
+#define uint_least8_t uint8_t
+#define int_least16_t int16_t
+#define uint_least16_t uint16_t
+#define int_least32_t int32_t
+#define uint_least32_t uint32_t
+#ifdef GL_INT64_T
+# define int_least64_t int64_t
+#endif
+#ifdef GL_UINT64_T
+# define uint_least64_t uint64_t
+#endif
+
+/* 7.18.1.3. Fastest minimum-width integer types */
+
+/* Note: Other <stdint.h> substitutes may define these types differently.
+ It is not recommended to use these types in public header files. */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
+ are taken from the same list of types. Assume that 'long int'
+ is fast enough for all narrower integers. */
+
+#undef int_fast8_t
+#undef uint_fast8_t
+#undef int_fast16_t
+#undef uint_fast16_t
+#undef int_fast32_t
+#undef uint_fast32_t
+#undef int_fast64_t
+#undef uint_fast64_t
+typedef long int gl_int_fast8_t;
+typedef unsigned long int gl_uint_fast8_t;
+typedef long int gl_int_fast16_t;
+typedef unsigned long int gl_uint_fast16_t;
+typedef long int gl_int_fast32_t;
+typedef unsigned long int gl_uint_fast32_t;
+#define int_fast8_t gl_int_fast8_t
+#define uint_fast8_t gl_uint_fast8_t
+#define int_fast16_t gl_int_fast16_t
+#define uint_fast16_t gl_uint_fast16_t
+#define int_fast32_t gl_int_fast32_t
+#define uint_fast32_t gl_uint_fast32_t
+#ifdef GL_INT64_T
+# define int_fast64_t int64_t
+#endif
+#ifdef GL_UINT64_T
+# define uint_fast64_t uint64_t
+#endif
+
+/* 7.18.1.4. Integer types capable of holding object pointers */
+
+#undef intptr_t
+#undef uintptr_t
+typedef long int gl_intptr_t;
+typedef unsigned long int gl_uintptr_t;
+#define intptr_t gl_intptr_t
+#define uintptr_t gl_uintptr_t
+
+/* 7.18.1.5. Greatest-width integer types */
+
+/* Note: These types are compiler dependent. It may be unwise to use them in
+ public header files. */
+
+#undef intmax_t
+#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+typedef long long int gl_intmax_t;
+# define intmax_t gl_intmax_t
+#elif defined GL_INT64_T
+# define intmax_t int64_t
+#else
+typedef long int gl_intmax_t;
+# define intmax_t gl_intmax_t
+#endif
+
+#undef uintmax_t
+#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+typedef unsigned long long int gl_uintmax_t;
+# define uintmax_t gl_uintmax_t
+#elif defined GL_UINT64_T
+# define uintmax_t uint64_t
+#else
+typedef unsigned long int gl_uintmax_t;
+# define uintmax_t gl_uintmax_t
+#endif
+
+/* Verify that intmax_t and uintmax_t have the same size. Too much code
+ breaks if this is not the case. If this check fails, the reason is likely
+ to be found in the autoconf macros. */
+typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) - 1];
+
+/* 7.18.2. Limits of specified-width integer types */
+
+#if ! defined __cplusplus || defined __STDC_LIMIT_MACROS
+
+/* 7.18.2.1. Limits of exact-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. */
+
+#undef INT8_MIN
+#undef INT8_MAX
+#undef UINT8_MAX
+#define INT8_MIN (~ INT8_MAX)
+#define INT8_MAX 127
+#define UINT8_MAX 255
+
+#undef INT16_MIN
+#undef INT16_MAX
+#undef UINT16_MAX
+#define INT16_MIN (~ INT16_MAX)
+#define INT16_MAX 32767
+#define UINT16_MAX 65535
+
+#undef INT32_MIN
+#undef INT32_MAX
+#undef UINT32_MAX
+#define INT32_MIN (~ INT32_MAX)
+#define INT32_MAX 2147483647
+#define UINT32_MAX 4294967295U
+
+#undef INT64_MIN
+#undef INT64_MAX
+#ifdef GL_INT64_T
+/* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0
+ evaluates the latter incorrectly in preprocessor expressions. */
+# define INT64_MIN (- INTMAX_C (1) << 63)
+# define INT64_MAX INTMAX_C (9223372036854775807)
+#endif
+
+#undef UINT64_MAX
+#ifdef GL_UINT64_T
+# define UINT64_MAX UINTMAX_C (18446744073709551615)
+#endif
+
+/* 7.18.2.2. Limits of minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
+ are the same as the corresponding N_t types. */
+
+#undef INT_LEAST8_MIN
+#undef INT_LEAST8_MAX
+#undef UINT_LEAST8_MAX
+#define INT_LEAST8_MIN INT8_MIN
+#define INT_LEAST8_MAX INT8_MAX
+#define UINT_LEAST8_MAX UINT8_MAX
+
+#undef INT_LEAST16_MIN
+#undef INT_LEAST16_MAX
+#undef UINT_LEAST16_MAX
+#define INT_LEAST16_MIN INT16_MIN
+#define INT_LEAST16_MAX INT16_MAX
+#define UINT_LEAST16_MAX UINT16_MAX
+
+#undef INT_LEAST32_MIN
+#undef INT_LEAST32_MAX
+#undef UINT_LEAST32_MAX
+#define INT_LEAST32_MIN INT32_MIN
+#define INT_LEAST32_MAX INT32_MAX
+#define UINT_LEAST32_MAX UINT32_MAX
+
+#undef INT_LEAST64_MIN
+#undef INT_LEAST64_MAX
+#ifdef GL_INT64_T
+# define INT_LEAST64_MIN INT64_MIN
+# define INT_LEAST64_MAX INT64_MAX
+#endif
+
+#undef UINT_LEAST64_MAX
+#ifdef GL_UINT64_T
+# define UINT_LEAST64_MAX UINT64_MAX
+#endif
+
+/* 7.18.2.3. Limits of fastest minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
+ are taken from the same list of types. */
+
+#undef INT_FAST8_MIN
+#undef INT_FAST8_MAX
+#undef UINT_FAST8_MAX
+#define INT_FAST8_MIN LONG_MIN
+#define INT_FAST8_MAX LONG_MAX
+#define UINT_FAST8_MAX ULONG_MAX
+
+#undef INT_FAST16_MIN
+#undef INT_FAST16_MAX
+#undef UINT_FAST16_MAX
+#define INT_FAST16_MIN LONG_MIN
+#define INT_FAST16_MAX LONG_MAX
+#define UINT_FAST16_MAX ULONG_MAX
+
+#undef INT_FAST32_MIN
+#undef INT_FAST32_MAX
+#undef UINT_FAST32_MAX
+#define INT_FAST32_MIN LONG_MIN
+#define INT_FAST32_MAX LONG_MAX
+#define UINT_FAST32_MAX ULONG_MAX
+
+#undef INT_FAST64_MIN
+#undef INT_FAST64_MAX
+#ifdef GL_INT64_T
+# define INT_FAST64_MIN INT64_MIN
+# define INT_FAST64_MAX INT64_MAX
+#endif
+
+#undef UINT_FAST64_MAX
+#ifdef GL_UINT64_T
+# define UINT_FAST64_MAX UINT64_MAX
+#endif
+
+/* 7.18.2.4. Limits of integer types capable of holding object pointers */
+
+#undef INTPTR_MIN
+#undef INTPTR_MAX
+#undef UINTPTR_MAX
+#define INTPTR_MIN LONG_MIN
+#define INTPTR_MAX LONG_MAX
+#define UINTPTR_MAX ULONG_MAX
+
+/* 7.18.2.5. Limits of greatest-width integer types */
+
+#undef INTMAX_MIN
+#undef INTMAX_MAX
+#ifdef INT64_MAX
+# define INTMAX_MIN INT64_MIN
+# define INTMAX_MAX INT64_MAX
+#else
+# define INTMAX_MIN INT32_MIN
+# define INTMAX_MAX INT32_MAX
+#endif
+
+#undef UINTMAX_MAX
+#ifdef UINT64_MAX
+# define UINTMAX_MAX UINT64_MAX
+#else
+# define UINTMAX_MAX UINT32_MAX
+#endif
+
+/* 7.18.3. Limits of other integer types */
+
+/* ptrdiff_t limits */
+#undef PTRDIFF_MIN
+#undef PTRDIFF_MAX
+#if @APPLE_UNIVERSAL_BUILD@
+# ifdef _LP64
+# define PTRDIFF_MIN _STDINT_MIN (1, 64, 0l)
+# define PTRDIFF_MAX _STDINT_MAX (1, 64, 0l)
+# else
+# define PTRDIFF_MIN _STDINT_MIN (1, 32, 0)
+# define PTRDIFF_MAX _STDINT_MAX (1, 32, 0)
+# endif
+#else
+# define PTRDIFF_MIN \
+ _STDINT_MIN (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
+# define PTRDIFF_MAX \
+ _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
+#endif
+
+/* sig_atomic_t limits */
+#undef SIG_ATOMIC_MIN
+#undef SIG_ATOMIC_MAX
+#define SIG_ATOMIC_MIN \
+ _STDINT_MIN (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
+ 0@SIG_ATOMIC_T_SUFFIX@)
+#define SIG_ATOMIC_MAX \
+ _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
+ 0@SIG_ATOMIC_T_SUFFIX@)
+
+
+/* size_t limit */
+#undef SIZE_MAX
+#if @APPLE_UNIVERSAL_BUILD@
+# ifdef _LP64
+# define SIZE_MAX _STDINT_MAX (0, 64, 0ul)
+# else
+# define SIZE_MAX _STDINT_MAX (0, 32, 0ul)
+# endif
+#else
+# define SIZE_MAX _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@)
+#endif
+
+/* wchar_t limits */
+/* Get WCHAR_MIN, WCHAR_MAX.
+ This include is not on the top, above, because on OSF/1 4.0 we have a sequence of nested
+ includes <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
+ <stdint.h> and assumes its types are already defined. */
+#if ! (defined WCHAR_MIN && defined WCHAR_MAX)
+# define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
+# include <wchar.h>
+# undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
+#endif
+#undef WCHAR_MIN
+#undef WCHAR_MAX
+#define WCHAR_MIN \
+ _STDINT_MIN (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
+#define WCHAR_MAX \
+ _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
+
+/* wint_t limits */
+#undef WINT_MIN
+#undef WINT_MAX
+#define WINT_MIN \
+ _STDINT_MIN (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+#define WINT_MAX \
+ _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+
+#endif /* !defined __cplusplus || defined __STDC_LIMIT_MACROS */
+
+/* 7.18.4. Macros for integer constants */
+
+#if ! defined __cplusplus || defined __STDC_CONSTANT_MACROS
+
+/* 7.18.4.1. Macros for minimum-width integer constants */
+/* According to ISO C 99 Technical Corrigendum 1 */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits, and int is 32 bits. */
+
+#undef INT8_C
+#undef UINT8_C
+#define INT8_C(x) x
+#define UINT8_C(x) x
+
+#undef INT16_C
+#undef UINT16_C
+#define INT16_C(x) x
+#define UINT16_C(x) x
+
+#undef INT32_C
+#undef UINT32_C
+#define INT32_C(x) x
+#define UINT32_C(x) x ## U
+
+#undef INT64_C
+#undef UINT64_C
+#if LONG_MAX >> 31 >> 31 == 1
+# define INT64_C(x) x##L
+#elif defined _MSC_VER
+# define INT64_C(x) x##i64
+#elif @HAVE_LONG_LONG_INT@
+# define INT64_C(x) x##LL
+#endif
+#if ULONG_MAX >> 31 >> 31 >> 1 == 1
+# define UINT64_C(x) x##UL
+#elif defined _MSC_VER
+# define UINT64_C(x) x##ui64
+#elif @HAVE_UNSIGNED_LONG_LONG_INT@
+# define UINT64_C(x) x##ULL
+#endif
+
+/* 7.18.4.2. Macros for greatest-width integer constants */
+
+#undef INTMAX_C
+#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+# define INTMAX_C(x) x##LL
+#elif defined GL_INT64_T
+# define INTMAX_C(x) INT64_C(x)
+#else
+# define INTMAX_C(x) x##L
+#endif
+
+#undef UINTMAX_C
+#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+# define UINTMAX_C(x) x##ULL
+#elif defined GL_UINT64_T
+# define UINTMAX_C(x) UINT64_C(x)
+#else
+# define UINTMAX_C(x) x##UL
+#endif
+
+#endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */
+
+#endif /* _GL_STDINT_H */
+#endif /* !defined _GL_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
diff --git a/lib/stdint.mini.h b/lib/stdint.mini.h
new file mode 100644
index 00000000..d6f2cb01
--- /dev/null
+++ b/lib/stdint.mini.h
@@ -0,0 +1,128 @@
+/* Copyright (C) 2001-2002, 2004-2009 Free Software Foundation, Inc.
+ Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
+ This file is part of gnulib.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+/*
+ * Subset of ISO C 99 <stdint.h> for platforms that lack it.
+ * <http://www.opengroup.org/susv3xbd/stdint.h.html>
+ */
+
+#ifndef _UNISTRING_STDINT_H
+
+/* When including a system file that in turn includes <inttypes.h>,
+ use the system <inttypes.h>, not our substitute. This avoids
+ problems with (for example) VMS, whose <sys/bitypes.h> includes
+ <inttypes.h>. */
+#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+
+/* Get those types that are already defined in other system include
+ files, so that we can "#define int8_t signed char" below without
+ worrying about a later system include file containing a "typedef
+ signed char int8_t;" that will get messed up by our macro. Our
+ macros should all be consistent with the system versions, except
+ for the "fast" types and macros, which we recommend against using
+ in public interfaces due to compiler differences. */
+
+#if @HAVE_STDINT_H@
+# if defined __sgi && ! defined __c99
+ /* Bypass IRIX's <stdint.h> if in C89 mode, since it merely annoys users
+ with "This header file is to be used only for c99 mode compilations"
+ diagnostics. */
+# define __STDINT_H__
+# endif
+ /* Other systems may have an incomplete or buggy <stdint.h>.
+ Include it before <inttypes.h>, since any "#include <stdint.h>"
+ in <inttypes.h> would reinclude us, skipping our contents because
+ _UNISTRING_STDINT_H is defined.
+ The include_next requires a split double-inclusion guard. */
+# if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+# endif
+# @INCLUDE_NEXT@ @NEXT_STDINT_H@
+#endif
+
+#if ! defined _UNISTRING_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+#define _UNISTRING_STDINT_H
+
+/* <sys/types.h> defines some of the stdint.h types as well, on glibc,
+ IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
+ AIX 5.2 <sys/types.h> isn't needed and causes troubles.
+ MacOS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
+ relies on the system <stdint.h> definitions, so include
+ <sys/types.h> after @NEXT_STDINT_H@. */
+#if @HAVE_SYS_TYPES_H@ && ! defined _AIX
+# include <sys/types.h>
+#endif
+
+/* Get LONG_MIN, LONG_MAX, ULONG_MAX. */
+#include <limits.h>
+
+#if @HAVE_INTTYPES_H@
+ /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines
+ int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
+ <inttypes.h> also defines intptr_t and uintptr_t. */
+# include <inttypes.h>
+#elif @HAVE_SYS_INTTYPES_H@
+ /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
+ the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */
+# include <sys/inttypes.h>
+#endif
+
+#if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__
+ /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines
+ int{8,16,32,64}_t and __BIT_TYPES_DEFINED__. In libc5 >= 5.2.2 it is
+ included by <sys/types.h>. */
+# include <sys/bitypes.h>
+#endif
+
+#undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+
+
+/* 7.18.1.1. Exact-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. */
+
+#undef int8_t
+#undef uint8_t
+typedef signed char unistring_int8_t;
+typedef unsigned char unistring_uint8_t;
+#define int8_t unistring_int8_t
+#define uint8_t unistring_uint8_t
+
+#undef int16_t
+#undef uint16_t
+typedef short int unistring_int16_t;
+typedef unsigned short int unistring_uint16_t;
+#define int16_t unistring_int16_t
+#define uint16_t unistring_uint16_t
+
+#undef int32_t
+#undef uint32_t
+typedef int unistring_int32_t;
+typedef unsigned int unistring_uint32_t;
+#define int32_t unistring_int32_t
+#define uint32_t unistring_uint32_t
+
+/* Avoid collision with Solaris 2.5.1 <pthread.h> etc. */
+#define _UINT8_T
+#define _UINT32_T
+#define _UINT64_T
+
+
+#endif /* _UNISTRING_STDINT_H */
+#endif /* !defined _UNISTRING_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
diff --git a/lib/stdio-impl.h b/lib/stdio-impl.h
new file mode 100644
index 00000000..162d90de
--- /dev/null
+++ b/lib/stdio-impl.h
@@ -0,0 +1,94 @@
+/* Implementation details of FILE streams.
+ Copyright (C) 2007-2008 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Many stdio implementations have the same logic and therefore can share
+ the same implementation of stdio extension API, except that some fields
+ have different naming conventions, or their access requires some casts. */
+
+
+/* BSD stdio derived implementations. */
+
+#if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */
+
+# if defined __DragonFly__ /* DragonFly */
+ /* See <http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/priv_stdio.h?rev=HEAD&content-type=text/x-cvsweb-markup>. */
+# define fp_ ((struct { struct __FILE_public pub; \
+ struct { unsigned char *_base; int _size; } _bf; \
+ void *cookie; \
+ void *_close; \
+ void *_read; \
+ void *_seek; \
+ void *_write; \
+ struct { unsigned char *_base; int _size; } _ub; \
+ int _ur; \
+ unsigned char _ubuf[3]; \
+ unsigned char _nbuf[1]; \
+ struct { unsigned char *_base; int _size; } _lb; \
+ int _blksize; \
+ fpos_t _offset; \
+ /* More fields, not relevant here. */ \
+ } *) fp)
+ /* See <http://www.dragonflybsd.org/cvsweb/src/include/stdio.h?rev=HEAD&content-type=text/x-cvsweb-markup>. */
+# define _p pub._p
+# define _flags pub._flags
+# define _r pub._r
+# define _w pub._w
+# else
+# define fp_ fp
+# endif
+
+# if defined __NetBSD__ || defined __OpenBSD__ /* NetBSD, OpenBSD */
+ /* See <http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup>
+ and <http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup> */
+ struct __sfileext
+ {
+ struct __sbuf _ub; /* ungetc buffer */
+ /* More fields, not relevant here. */
+ };
+# define fp_ub ((struct __sfileext *) fp->_ext._base)->_ub
+# else /* FreeBSD, DragonFly, MacOS X, Cygwin */
+# define fp_ub fp_->_ub
+# endif
+
+# define HASUB(fp) (fp_ub._base != NULL)
+
+#endif
+
+
+/* SystemV derived implementations. */
+
+#if defined _IOERR
+
+# if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */
+# define fp_ ((struct { unsigned char *_ptr; \
+ unsigned char *_base; \
+ unsigned char *_end; \
+ long _cnt; \
+ int _file; \
+ unsigned int _flag; \
+ } *) fp)
+# else
+# define fp_ fp
+# endif
+
+# if defined _SCO_DS /* OpenServer */
+# define _cnt __cnt
+# define _ptr __ptr
+# define _base __base
+# define _flag __flag
+# endif
+
+#endif
diff --git a/lib/stdlib.in.h b/lib/stdlib.in.h
new file mode 100644
index 00000000..23325b56
--- /dev/null
+++ b/lib/stdlib.in.h
@@ -0,0 +1,383 @@
+/* A GNU-like <stdlib.h>.
+
+ Copyright (C) 1995, 2001-2004, 2006-2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+#if defined __need_malloc_and_calloc
+/* Special invocation convention inside glibc header files. */
+
+#@INCLUDE_NEXT@ @NEXT_STDLIB_H@
+
+#else
+/* Normal invocation convention. */
+
+#ifndef _GL_STDLIB_H
+
+/* The include_next requires a split double-inclusion guard. */
+#@INCLUDE_NEXT@ @NEXT_STDLIB_H@
+
+#ifndef _GL_STDLIB_H
+#define _GL_STDLIB_H
+
+
+/* Solaris declares getloadavg() in <sys/loadavg.h>. */
+#if @GNULIB_GETLOADAVG@ && @HAVE_SYS_LOADAVG_H@
+# include <sys/loadavg.h>
+#endif
+
+/* OSF/1 5.1 declares 'struct random_data' in <random.h>, which is included
+ from <stdlib.h> if _REENTRANT is defined. Include it always. */
+#if @HAVE_RANDOM_H@
+# include <random.h>
+#endif
+
+#if @GNULIB_RANDOM_R@ || !@HAVE_STRUCT_RANDOM_DATA@
+# include <stdint.h>
+#endif
+
+#if !@HAVE_STRUCT_RANDOM_DATA@
+struct random_data
+{
+ int32_t *fptr; /* Front pointer. */
+ int32_t *rptr; /* Rear pointer. */
+ int32_t *state; /* Array of state values. */
+ int rand_type; /* Type of random number generator. */
+ int rand_deg; /* Degree of random number generator. */
+ int rand_sep; /* Distance between front and rear. */
+ int32_t *end_ptr; /* Pointer behind state table. */
+};
+#endif
+
+/* The definition of GL_LINK_WARNING is copied here. */
+
+
+/* Some systems do not define EXIT_*, despite otherwise supporting C89. */
+#ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+#endif
+/* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere
+ with proper operation of xargs. */
+#ifndef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#elif EXIT_FAILURE != 1
+# undef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#if @GNULIB_MALLOC_POSIX@
+# if !@HAVE_MALLOC_POSIX@
+# undef malloc
+# define malloc rpl_malloc
+extern void * malloc (size_t size);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef malloc
+# define malloc(s) \
+ (GL_LINK_WARNING ("malloc is not POSIX compliant everywhere - " \
+ "use gnulib module malloc-posix for portability"), \
+ malloc (s))
+#endif
+
+
+#if @GNULIB_REALLOC_POSIX@
+# if !@HAVE_REALLOC_POSIX@
+# undef realloc
+# define realloc rpl_realloc
+extern void * realloc (void *ptr, size_t size);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef realloc
+# define realloc(p,s) \
+ (GL_LINK_WARNING ("realloc is not POSIX compliant everywhere - " \
+ "use gnulib module realloc-posix for portability"), \
+ realloc (p, s))
+#endif
+
+
+#if @GNULIB_CALLOC_POSIX@
+# if !@HAVE_CALLOC_POSIX@
+# undef calloc
+# define calloc rpl_calloc
+extern void * calloc (size_t nmemb, size_t size);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef calloc
+# define calloc(n,s) \
+ (GL_LINK_WARNING ("calloc is not POSIX compliant everywhere - " \
+ "use gnulib module calloc-posix for portability"), \
+ calloc (n, s))
+#endif
+
+
+#if @GNULIB_ATOLL@
+# if !@HAVE_ATOLL@
+/* Parse a signed decimal integer.
+ Returns the value of the integer. Errors are not detected. */
+extern long long atoll (const char *string);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef atoll
+# define atoll(s) \
+ (GL_LINK_WARNING ("atoll is unportable - " \
+ "use gnulib module atoll for portability"), \
+ atoll (s))
+#endif
+
+
+#if @GNULIB_GETLOADAVG@
+# if !@HAVE_DECL_GETLOADAVG@
+/* Store max(NELEM,3) load average numbers in LOADAVG[].
+ The three numbers are the load average of the last 1 minute, the last 5
+ minutes, and the last 15 minutes, respectively.
+ LOADAVG is an array of NELEM numbers. */
+extern int getloadavg (double loadavg[], int nelem);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getloadavg
+# define getloadavg(l,n) \
+ (GL_LINK_WARNING ("getloadavg is not portable - " \
+ "use gnulib module getloadavg for portability"), \
+ getloadavg (l, n))
+#endif
+
+
+#if @GNULIB_GETSUBOPT@
+/* Assuming *OPTIONP is a comma separated list of elements of the form
+ "token" or "token=value", getsubopt parses the first of these elements.
+ If the first element refers to a "token" that is member of the given
+ NULL-terminated array of tokens:
+ - It replaces the comma with a NUL byte, updates *OPTIONP to point past
+ the first option and the comma, sets *VALUEP to the value of the
+ element (or NULL if it doesn't contain an "=" sign),
+ - It returns the index of the "token" in the given array of tokens.
+ Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined.
+ For more details see the POSIX:2001 specification.
+ http://www.opengroup.org/susv3xsh/getsubopt.html */
+# if !@HAVE_GETSUBOPT@
+extern int getsubopt (char **optionp, char *const *tokens, char **valuep);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getsubopt
+# define getsubopt(o,t,v) \
+ (GL_LINK_WARNING ("getsubopt is unportable - " \
+ "use gnulib module getsubopt for portability"), \
+ getsubopt (o, t, v))
+#endif
+
+
+#if @GNULIB_MKDTEMP@
+# if !@HAVE_MKDTEMP@
+/* Create a unique temporary directory from TEMPLATE.
+ The last six characters of TEMPLATE must be "XXXXXX";
+ they are replaced with a string that makes the directory name unique.
+ Returns TEMPLATE, or a null pointer if it cannot get a unique name.
+ The directory is created mode 700. */
+extern char * mkdtemp (char * /*template*/);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mkdtemp
+# define mkdtemp(t) \
+ (GL_LINK_WARNING ("mkdtemp is unportable - " \
+ "use gnulib module mkdtemp for portability"), \
+ mkdtemp (t))
+#endif
+
+
+#if @GNULIB_MKSTEMP@
+# if @REPLACE_MKSTEMP@
+/* Create a unique temporary file from TEMPLATE.
+ The last six characters of TEMPLATE must be "XXXXXX";
+ they are replaced with a string that makes the file name unique.
+ The file is then created, ensuring it didn't exist before.
+ The file is created read-write (mask at least 0600 & ~umask), but it may be
+ world-readable and world-writable (mask 0666 & ~umask), depending on the
+ implementation.
+ Returns the open file descriptor if successful, otherwise -1 and errno
+ set. */
+# define mkstemp rpl_mkstemp
+extern int mkstemp (char * /*template*/);
+# else
+/* On MacOS X 10.3, only <unistd.h> declares mkstemp. */
+# include <unistd.h>
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mkstemp
+# define mkstemp(t) \
+ (GL_LINK_WARNING ("mkstemp is unportable - " \
+ "use gnulib module mkstemp for portability"), \
+ mkstemp (t))
+#endif
+
+
+#if @GNULIB_PUTENV@
+# if @REPLACE_PUTENV@
+# undef putenv
+# define putenv rpl_putenv
+extern int putenv (char *string);
+# endif
+#endif
+
+
+#if @GNULIB_RANDOM_R@
+# if !@HAVE_RANDOM_R@
+
+# ifndef RAND_MAX
+# define RAND_MAX 2147483647
+# endif
+
+int srandom_r (unsigned int seed, struct random_data *rand_state);
+int initstate_r (unsigned int seed, char *buf, size_t buf_size,
+ struct random_data *rand_state);
+int setstate_r (char *arg_state, struct random_data *rand_state);
+int random_r (struct random_data *buf, int32_t *result);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef random_r
+# define random_r(b,r) \
+ (GL_LINK_WARNING ("random_r is unportable - " \
+ "use gnulib module random_r for portability"), \
+ random_r (b,r))
+# undef initstate_r
+# define initstate_r(s,b,sz,r) \
+ (GL_LINK_WARNING ("initstate_r is unportable - " \
+ "use gnulib module random_r for portability"), \
+ initstate_r (s,b,sz,r))
+# undef srandom_r
+# define srandom_r(s,r) \
+ (GL_LINK_WARNING ("srandom_r is unportable - " \
+ "use gnulib module random_r for portability"), \
+ srandom_r (s,r))
+# undef setstate_r
+# define setstate_r(a,r) \
+ (GL_LINK_WARNING ("setstate_r is unportable - " \
+ "use gnulib module random_r for portability"), \
+ setstate_r (a,r))
+#endif
+
+
+#if @GNULIB_RPMATCH@
+# if !@HAVE_RPMATCH@
+/* Test a user response to a question.
+ Return 1 if it is affirmative, 0 if it is negative, or -1 if not clear. */
+extern int rpmatch (const char *response);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef rpmatch
+# define rpmatch(r) \
+ (GL_LINK_WARNING ("rpmatch is unportable - " \
+ "use gnulib module rpmatch for portability"), \
+ rpmatch (r))
+#endif
+
+
+#if @GNULIB_SETENV@
+# if !@HAVE_SETENV@
+/* Set NAME to VALUE in the environment.
+ If REPLACE is nonzero, overwrite an existing value. */
+extern int setenv (const char *name, const char *value, int replace);
+# endif
+#endif
+
+
+#if @GNULIB_UNSETENV@
+# if @HAVE_UNSETENV@
+# if @VOID_UNSETENV@
+/* On some systems, unsetenv() returns void.
+ This is the case for MacOS X 10.3, FreeBSD 4.8, NetBSD 1.6, OpenBSD 3.4. */
+# define unsetenv(name) ((unsetenv)(name), 0)
+# endif
+# else
+/* Remove the variable NAME from the environment. */
+extern int unsetenv (const char *name);
+# endif
+#endif
+
+
+#if @GNULIB_STRTOD@
+# if @REPLACE_STRTOD@
+# define strtod rpl_strtod
+# endif
+# if !@HAVE_STRTOD@ || @REPLACE_STRTOD@
+ /* Parse a double from STRING, updating ENDP if appropriate. */
+extern double strtod (const char *str, char **endp);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtod
+# define strtod(s, e) \
+ (GL_LINK_WARNING ("strtod is unportable - " \
+ "use gnulib module strtod for portability"), \
+ strtod (s, e))
+#endif
+
+
+#if @GNULIB_STRTOLL@
+# if !@HAVE_STRTOLL@
+/* Parse a signed integer whose textual representation starts at STRING.
+ The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
+ it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
+ "0x").
+ If ENDPTR is not NULL, the address of the first byte after the integer is
+ stored in *ENDPTR.
+ Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set
+ to ERANGE. */
+extern long long strtoll (const char *string, char **endptr, int base);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtoll
+# define strtoll(s,e,b) \
+ (GL_LINK_WARNING ("strtoll is unportable - " \
+ "use gnulib module strtoll for portability"), \
+ strtoll (s, e, b))
+#endif
+
+
+#if @GNULIB_STRTOULL@
+# if !@HAVE_STRTOULL@
+/* Parse an unsigned integer whose textual representation starts at STRING.
+ The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
+ it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
+ "0x").
+ If ENDPTR is not NULL, the address of the first byte after the integer is
+ stored in *ENDPTR.
+ Upon overflow, the return value is ULLONG_MAX, and errno is set to
+ ERANGE. */
+extern unsigned long long strtoull (const char *string, char **endptr, int base);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtoull
+# define strtoull(s,e,b) \
+ (GL_LINK_WARNING ("strtoull is unportable - " \
+ "use gnulib module strtoull for portability"), \
+ strtoull (s, e, b))
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_STDLIB_H */
+#endif /* _GL_STDLIB_H */
+#endif
diff --git a/lib/streq.h b/lib/streq.h
new file mode 100644
index 00000000..1b4b1c58
--- /dev/null
+++ b/lib/streq.h
@@ -0,0 +1,176 @@
+/* Optimized string comparison.
+ Copyright (C) 2001-2002, 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#ifndef _GL_STREQ_H
+#define _GL_STREQ_H
+
+#include <string.h>
+
+/* STREQ allows to optimize string comparison with a small literal string.
+ STREQ (s, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
+ is semantically equivalent to
+ strcmp (s, "EUC-KR") == 0
+ just faster. */
+
+/* Help GCC to generate good code for string comparisons with
+ immediate strings. */
+#if defined (__GNUC__) && defined (__OPTIMIZE__)
+
+static inline int
+streq9 (const char *s1, const char *s2)
+{
+ return strcmp (s1 + 9, s2 + 9) == 0;
+}
+
+static inline int
+streq8 (const char *s1, const char *s2, char s28)
+{
+ if (s1[8] == s28)
+ {
+ if (s28 == 0)
+ return 1;
+ else
+ return streq9 (s1, s2);
+ }
+ else
+ return 0;
+}
+
+static inline int
+streq7 (const char *s1, const char *s2, char s27, char s28)
+{
+ if (s1[7] == s27)
+ {
+ if (s27 == 0)
+ return 1;
+ else
+ return streq8 (s1, s2, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+streq6 (const char *s1, const char *s2, char s26, char s27, char s28)
+{
+ if (s1[6] == s26)
+ {
+ if (s26 == 0)
+ return 1;
+ else
+ return streq7 (s1, s2, s27, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+streq5 (const char *s1, const char *s2, char s25, char s26, char s27, char s28)
+{
+ if (s1[5] == s25)
+ {
+ if (s25 == 0)
+ return 1;
+ else
+ return streq6 (s1, s2, s26, s27, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+streq4 (const char *s1, const char *s2, char s24, char s25, char s26, char s27, char s28)
+{
+ if (s1[4] == s24)
+ {
+ if (s24 == 0)
+ return 1;
+ else
+ return streq5 (s1, s2, s25, s26, s27, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+streq3 (const char *s1, const char *s2, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+ if (s1[3] == s23)
+ {
+ if (s23 == 0)
+ return 1;
+ else
+ return streq4 (s1, s2, s24, s25, s26, s27, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+streq2 (const char *s1, const char *s2, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+ if (s1[2] == s22)
+ {
+ if (s22 == 0)
+ return 1;
+ else
+ return streq3 (s1, s2, s23, s24, s25, s26, s27, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+streq1 (const char *s1, const char *s2, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+ if (s1[1] == s21)
+ {
+ if (s21 == 0)
+ return 1;
+ else
+ return streq2 (s1, s2, s22, s23, s24, s25, s26, s27, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+streq0 (const char *s1, const char *s2, char s20, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+ if (s1[0] == s20)
+ {
+ if (s20 == 0)
+ return 1;
+ else
+ return streq1 (s1, s2, s21, s22, s23, s24, s25, s26, s27, s28);
+ }
+ else
+ return 0;
+}
+
+#define STREQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
+ streq0 (s1, s2, s20, s21, s22, s23, s24, s25, s26, s27, s28)
+
+#else
+
+#define STREQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
+ (strcmp (s1, s2) == 0)
+
+#endif
+
+#endif /* _GL_STREQ_H */
diff --git a/lib/striconveh.c b/lib/striconveh.c
new file mode 100644
index 00000000..b39a01f1
--- /dev/null
+++ b/lib/striconveh.c
@@ -0,0 +1,1251 @@
+/* Character set conversion with error handling.
+ Copyright (C) 2001-2008 Free Software Foundation, Inc.
+ Written by Bruno Haible and Simon Josefsson.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "striconveh.h"
+
+#include <errno.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+
+#if HAVE_ICONV
+# include <iconv.h>
+# include "unistr.h"
+#endif
+
+#include "c-strcase.h"
+#include "c-strcaseeq.h"
+
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
+
+#if HAVE_ICONV
+
+/* The caller must provide CD, CD1, CD2, not just CD, because when a conversion
+ error occurs, we may have to determine the Unicode representation of the
+ inconvertible character. */
+
+/* iconv_carefully is like iconv, except that it stops as soon as it encounters
+ a conversion error, and it returns in *INCREMENTED a boolean telling whether
+ it has incremented the input pointers past the error location. */
+# if !defined _LIBICONV_VERSION && !defined __GLIBC__
+/* Irix iconv() inserts a NUL byte if it cannot convert.
+ NetBSD iconv() inserts a question mark if it cannot convert.
+ Only GNU libiconv and GNU libc are known to prefer to fail rather
+ than doing a lossy conversion. */
+static size_t
+iconv_carefully (iconv_t cd,
+ const char **inbuf, size_t *inbytesleft,
+ char **outbuf, size_t *outbytesleft,
+ bool *incremented)
+{
+ const char *inptr = *inbuf;
+ const char *inptr_end = inptr + *inbytesleft;
+ char *outptr = *outbuf;
+ size_t outsize = *outbytesleft;
+ const char *inptr_before;
+ size_t res;
+
+ do
+ {
+ size_t insize;
+
+ inptr_before = inptr;
+ res = (size_t)(-1);
+
+ for (insize = 1; inptr + insize <= inptr_end; insize++)
+ {
+ res = iconv (cd,
+ (ICONV_CONST char **) &inptr, &insize,
+ &outptr, &outsize);
+ if (!(res == (size_t)(-1) && errno == EINVAL))
+ break;
+ /* iconv can eat up a shift sequence but give EINVAL while attempting
+ to convert the first character. E.g. libiconv does this. */
+ if (inptr > inptr_before)
+ {
+ res = 0;
+ break;
+ }
+ }
+
+ if (res == 0)
+ {
+ *outbuf = outptr;
+ *outbytesleft = outsize;
+ }
+ }
+ while (res == 0 && inptr < inptr_end);
+
+ *inbuf = inptr;
+ *inbytesleft = inptr_end - inptr;
+ if (res != (size_t)(-1) && res > 0)
+ {
+ /* iconv() has already incremented INPTR. We cannot go back to a
+ previous INPTR, otherwise the state inside CD would become invalid,
+ if FROM_CODESET is a stateful encoding. So, tell the caller that
+ *INBUF has already been incremented. */
+ *incremented = (inptr > inptr_before);
+ errno = EILSEQ;
+ return (size_t)(-1);
+ }
+ else
+ {
+ *incremented = false;
+ return res;
+ }
+}
+# else
+# define iconv_carefully(cd, inbuf, inbytesleft, outbuf, outbytesleft, incremented) \
+ (*(incremented) = false, \
+ iconv (cd, (ICONV_CONST char **) (inbuf), inbytesleft, outbuf, outbytesleft))
+# endif
+
+/* iconv_carefully_1 is like iconv_carefully, except that it stops after
+ converting one character or one shift sequence. */
+static size_t
+iconv_carefully_1 (iconv_t cd,
+ const char **inbuf, size_t *inbytesleft,
+ char **outbuf, size_t *outbytesleft,
+ bool *incremented)
+{
+ const char *inptr_before = *inbuf;
+ const char *inptr = inptr_before;
+ const char *inptr_end = inptr_before + *inbytesleft;
+ char *outptr = *outbuf;
+ size_t outsize = *outbytesleft;
+ size_t res = (size_t)(-1);
+ size_t insize;
+
+ for (insize = 1; inptr_before + insize <= inptr_end; insize++)
+ {
+ inptr = inptr_before;
+ res = iconv (cd,
+ (ICONV_CONST char **) &inptr, &insize,
+ &outptr, &outsize);
+ if (!(res == (size_t)(-1) && errno == EINVAL))
+ break;
+ /* iconv can eat up a shift sequence but give EINVAL while attempting
+ to convert the first character. E.g. libiconv does this. */
+ if (inptr > inptr_before)
+ {
+ res = 0;
+ break;
+ }
+ }
+
+ *inbuf = inptr;
+ *inbytesleft = inptr_end - inptr;
+# if !defined _LIBICONV_VERSION && !defined __GLIBC__
+ /* Irix iconv() inserts a NUL byte if it cannot convert.
+ NetBSD iconv() inserts a question mark if it cannot convert.
+ Only GNU libiconv and GNU libc are known to prefer to fail rather
+ than doing a lossy conversion. */
+ if (res != (size_t)(-1) && res > 0)
+ {
+ /* iconv() has already incremented INPTR. We cannot go back to a
+ previous INPTR, otherwise the state inside CD would become invalid,
+ if FROM_CODESET is a stateful encoding. So, tell the caller that
+ *INBUF has already been incremented. */
+ *incremented = (inptr > inptr_before);
+ errno = EILSEQ;
+ return (size_t)(-1);
+ }
+# endif
+
+ if (res != (size_t)(-1))
+ {
+ *outbuf = outptr;
+ *outbytesleft = outsize;
+ }
+ *incremented = false;
+ return res;
+}
+
+/* utf8conv_carefully is like iconv, except that
+ - it converts from UTF-8 to UTF-8,
+ - it stops as soon as it encounters a conversion error, and it returns
+ in *INCREMENTED a boolean telling whether it has incremented the input
+ pointers past the error location,
+ - if one_character_only is true, it stops after converting one
+ character. */
+static size_t
+utf8conv_carefully (bool one_character_only,
+ const char **inbuf, size_t *inbytesleft,
+ char **outbuf, size_t *outbytesleft,
+ bool *incremented)
+{
+ const char *inptr = *inbuf;
+ size_t insize = *inbytesleft;
+ char *outptr = *outbuf;
+ size_t outsize = *outbytesleft;
+ size_t res;
+
+ res = 0;
+ do
+ {
+ ucs4_t uc;
+ int n;
+ int m;
+
+ n = u8_mbtoucr (&uc, (const uint8_t *) inptr, insize);
+ if (n < 0)
+ {
+ errno = (n == -2 ? EINVAL : EILSEQ);
+ n = u8_mbtouc (&uc, (const uint8_t *) inptr, insize);
+ inptr += n;
+ insize -= n;
+ res = (size_t)(-1);
+ *incremented = true;
+ break;
+ }
+ if (outsize == 0)
+ {
+ errno = E2BIG;
+ res = (size_t)(-1);
+ *incremented = false;
+ break;
+ }
+ m = u8_uctomb ((uint8_t *) outptr, uc, outsize);
+ if (m == -2)
+ {
+ errno = E2BIG;
+ res = (size_t)(-1);
+ *incremented = false;
+ break;
+ }
+ inptr += n;
+ insize -= n;
+ if (m == -1)
+ {
+ errno = EILSEQ;
+ res = (size_t)(-1);
+ *incremented = true;
+ break;
+ }
+ outptr += m;
+ outsize -= m;
+ }
+ while (!one_character_only && insize > 0);
+
+ *inbuf = inptr;
+ *inbytesleft = insize;
+ *outbuf = outptr;
+ *outbytesleft = outsize;
+ return res;
+}
+
+static int
+mem_cd_iconveh_internal (const char *src, size_t srclen,
+ iconv_t cd, iconv_t cd1, iconv_t cd2,
+ enum iconv_ilseq_handler handler,
+ size_t extra_alloc,
+ size_t *offsets,
+ char **resultp, size_t *lengthp)
+{
+ /* When a conversion error occurs, we cannot start using CD1 and CD2 at
+ this point: FROM_CODESET may be a stateful encoding like ISO-2022-KR.
+ Instead, we have to start afresh from the beginning of SRC. */
+ /* Use a temporary buffer, so that for small strings, a single malloc()
+ call will be sufficient. */
+# define tmpbufsize 4096
+ /* The alignment is needed when converting e.g. to glibc's WCHAR_T or
+ libiconv's UCS-4-INTERNAL encoding. */
+ union { unsigned int align; char buf[tmpbufsize]; } tmp;
+# define tmpbuf tmp.buf
+
+ char *initial_result;
+ char *result;
+ size_t allocated;
+ size_t length;
+ size_t last_length = (size_t)(-1); /* only needed if offsets != NULL */
+
+ if (*resultp != NULL && *lengthp >= sizeof (tmpbuf))
+ {
+ initial_result = *resultp;
+ allocated = *lengthp;
+ }
+ else
+ {
+ initial_result = tmpbuf;
+ allocated = sizeof (tmpbuf);
+ }
+ result = initial_result;
+
+ /* Test whether a direct conversion is possible at all. */
+ if (cd == (iconv_t)(-1))
+ goto indirectly;
+
+ if (offsets != NULL)
+ {
+ size_t i;
+
+ for (i = 0; i < srclen; i++)
+ offsets[i] = (size_t)(-1);
+
+ last_length = (size_t)(-1);
+ }
+ length = 0;
+
+ /* First, try a direct conversion, and see whether a conversion error
+ occurs at all. */
+ {
+ const char *inptr = src;
+ size_t insize = srclen;
+
+ /* Avoid glibc-2.1 bug and Solaris 2.7-2.9 bug. */
+# if defined _LIBICONV_VERSION \
+ || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun)
+ /* Set to the initial state. */
+ iconv (cd, NULL, NULL, NULL, NULL);
+# endif
+
+ while (insize > 0)
+ {
+ char *outptr = result + length;
+ size_t outsize = allocated - extra_alloc - length;
+ bool incremented;
+ size_t res;
+ bool grow;
+
+ if (offsets != NULL)
+ {
+ if (length != last_length) /* ensure that offset[] be increasing */
+ {
+ offsets[inptr - src] = length;
+ last_length = length;
+ }
+ res = iconv_carefully_1 (cd,
+ &inptr, &insize,
+ &outptr, &outsize,
+ &incremented);
+ }
+ else
+ /* Use iconv_carefully instead of iconv here, because:
+ - If TO_CODESET is UTF-8, we can do the error handling in this
+ loop, no need for a second loop,
+ - With iconv() implementations other than GNU libiconv and GNU
+ libc, if we use iconv() in a big swoop, checking for an E2BIG
+ return, we lose the number of irreversible conversions. */
+ res = iconv_carefully (cd,
+ &inptr, &insize,
+ &outptr, &outsize,
+ &incremented);
+
+ length = outptr - result;
+ grow = (length + extra_alloc > allocated / 2);
+ if (res == (size_t)(-1))
+ {
+ if (errno == E2BIG)
+ grow = true;
+ else if (errno == EINVAL)
+ break;
+ else if (errno == EILSEQ && handler != iconveh_error)
+ {
+ if (cd2 == (iconv_t)(-1))
+ {
+ /* TO_CODESET is UTF-8. */
+ /* Error handling can produce up to 1 byte of output. */
+ if (length + 1 + extra_alloc > allocated)
+ {
+ char *memory;
+
+ allocated = 2 * allocated;
+ if (length + 1 + extra_alloc > allocated)
+ abort ();
+ if (result == initial_result)
+ memory = (char *) malloc (allocated);
+ else
+ memory = (char *) realloc (result, allocated);
+ if (memory == NULL)
+ {
+ if (result != initial_result)
+ free (result);
+ errno = ENOMEM;
+ return -1;
+ }
+ if (result == initial_result)
+ memcpy (memory, initial_result, length);
+ result = memory;
+ grow = false;
+ }
+ /* The input is invalid in FROM_CODESET. Eat up one byte
+ and emit a question mark. */
+ if (!incremented)
+ {
+ if (insize == 0)
+ abort ();
+ inptr++;
+ insize--;
+ }
+ result[length] = '?';
+ length++;
+ }
+ else
+ goto indirectly;
+ }
+ else
+ {
+ if (result != initial_result)
+ {
+ int saved_errno = errno;
+ free (result);
+ errno = saved_errno;
+ }
+ return -1;
+ }
+ }
+ if (insize == 0)
+ break;
+ if (grow)
+ {
+ char *memory;
+
+ allocated = 2 * allocated;
+ if (result == initial_result)
+ memory = (char *) malloc (allocated);
+ else
+ memory = (char *) realloc (result, allocated);
+ if (memory == NULL)
+ {
+ if (result != initial_result)
+ free (result);
+ errno = ENOMEM;
+ return -1;
+ }
+ if (result == initial_result)
+ memcpy (memory, initial_result, length);
+ result = memory;
+ }
+ }
+ }
+
+ /* Now get the conversion state back to the initial state.
+ But avoid glibc-2.1 bug and Solaris 2.7 bug. */
+#if defined _LIBICONV_VERSION \
+ || !((__GLIBC__ == 2 && __GLIBC_MINOR__ <= 1) || defined __sun)
+ for (;;)
+ {
+ char *outptr = result + length;
+ size_t outsize = allocated - extra_alloc - length;
+ size_t res;
+
+ res = iconv (cd, NULL, NULL, &outptr, &outsize);
+ length = outptr - result;
+ if (res == (size_t)(-1))
+ {
+ if (errno == E2BIG)
+ {
+ char *memory;
+
+ allocated = 2 * allocated;
+ if (result == initial_result)
+ memory = (char *) malloc (allocated);
+ else
+ memory = (char *) realloc (result, allocated);
+ if (memory == NULL)
+ {
+ if (result != initial_result)
+ free (result);
+ errno = ENOMEM;
+ return -1;
+ }
+ if (result == initial_result)
+ memcpy (memory, initial_result, length);
+ result = memory;
+ }
+ else
+ {
+ if (result != initial_result)
+ {
+ int saved_errno = errno;
+ free (result);
+ errno = saved_errno;
+ }
+ return -1;
+ }
+ }
+ else
+ break;
+ }
+#endif
+
+ /* The direct conversion succeeded. */
+ goto done;
+
+ indirectly:
+ /* The direct conversion failed.
+ Use a conversion through UTF-8. */
+ if (offsets != NULL)
+ {
+ size_t i;
+
+ for (i = 0; i < srclen; i++)
+ offsets[i] = (size_t)(-1);
+
+ last_length = (size_t)(-1);
+ }
+ length = 0;
+ {
+ const bool slowly = (offsets != NULL || handler == iconveh_error);
+# define utf8bufsize 4096 /* may also be smaller or larger than tmpbufsize */
+ char utf8buf[utf8bufsize + 1];
+ size_t utf8len = 0;
+ const char *in1ptr = src;
+ size_t in1size = srclen;
+ bool do_final_flush1 = true;
+ bool do_final_flush2 = true;
+
+ /* Avoid glibc-2.1 bug and Solaris 2.7-2.9 bug. */
+# if defined _LIBICONV_VERSION \
+ || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun)
+ /* Set to the initial state. */
+ if (cd1 != (iconv_t)(-1))
+ iconv (cd1, NULL, NULL, NULL, NULL);
+ if (cd2 != (iconv_t)(-1))
+ iconv (cd2, NULL, NULL, NULL, NULL);
+# endif
+
+ while (in1size > 0 || do_final_flush1 || utf8len > 0 || do_final_flush2)
+ {
+ char *out1ptr = utf8buf + utf8len;
+ size_t out1size = utf8bufsize - utf8len;
+ bool incremented1;
+ size_t res1;
+ int errno1;
+
+ /* Conversion step 1: from FROM_CODESET to UTF-8. */
+ if (in1size > 0)
+ {
+ if (offsets != NULL
+ && length != last_length) /* ensure that offset[] be increasing */
+ {
+ offsets[in1ptr - src] = length;
+ last_length = length;
+ }
+ if (cd1 != (iconv_t)(-1))
+ {
+ if (slowly)
+ res1 = iconv_carefully_1 (cd1,
+ &in1ptr, &in1size,
+ &out1ptr, &out1size,
+ &incremented1);
+ else
+ res1 = iconv_carefully (cd1,
+ &in1ptr, &in1size,
+ &out1ptr, &out1size,
+ &incremented1);
+ }
+ else
+ {
+ /* FROM_CODESET is UTF-8. */
+ res1 = utf8conv_carefully (slowly,
+ &in1ptr, &in1size,
+ &out1ptr, &out1size,
+ &incremented1);
+ }
+ }
+ else if (do_final_flush1)
+ {
+ /* Now get the conversion state of CD1 back to the initial state.
+ But avoid glibc-2.1 bug and Solaris 2.7 bug. */
+# if defined _LIBICONV_VERSION \
+ || !((__GLIBC__ == 2 && __GLIBC_MINOR__ <= 1) || defined __sun)
+ if (cd1 != (iconv_t)(-1))
+ res1 = iconv (cd1, NULL, NULL, &out1ptr, &out1size);
+ else
+# endif
+ res1 = 0;
+ do_final_flush1 = false;
+ incremented1 = true;
+ }
+ else
+ {
+ res1 = 0;
+ incremented1 = true;
+ }
+ if (res1 == (size_t)(-1)
+ && !(errno == E2BIG || errno == EINVAL || errno == EILSEQ))
+ {
+ if (result != initial_result)
+ {
+ int saved_errno = errno;
+ free (result);
+ errno = saved_errno;
+ }
+ return -1;
+ }
+ if (res1 == (size_t)(-1)
+ && errno == EILSEQ && handler != iconveh_error)
+ {
+ /* The input is invalid in FROM_CODESET. Eat up one byte and
+ emit a question mark. Room for the question mark was allocated
+ at the end of utf8buf. */
+ if (!incremented1)
+ {
+ if (in1size == 0)
+ abort ();
+ in1ptr++;
+ in1size--;
+ }
+ utf8buf[utf8len++] = '?';
+ }
+ errno1 = errno;
+ utf8len = out1ptr - utf8buf;
+
+ if (offsets != NULL
+ || in1size == 0
+ || utf8len > utf8bufsize / 2
+ || (res1 == (size_t)(-1) && errno1 == E2BIG))
+ {
+ /* Conversion step 2: from UTF-8 to TO_CODESET. */
+ const char *in2ptr = utf8buf;
+ size_t in2size = utf8len;
+
+ while (in2size > 0
+ || (in1size == 0 && !do_final_flush1 && do_final_flush2))
+ {
+ char *out2ptr = result + length;
+ size_t out2size = allocated - extra_alloc - length;
+ bool incremented2;
+ size_t res2;
+ bool grow;
+
+ if (in2size > 0)
+ {
+ if (cd2 != (iconv_t)(-1))
+ res2 = iconv_carefully (cd2,
+ &in2ptr, &in2size,
+ &out2ptr, &out2size,
+ &incremented2);
+ else
+ /* TO_CODESET is UTF-8. */
+ res2 = utf8conv_carefully (false,
+ &in2ptr, &in2size,
+ &out2ptr, &out2size,
+ &incremented2);
+ }
+ else /* in1size == 0 && !do_final_flush1
+ && in2size == 0 && do_final_flush2 */
+ {
+ /* Now get the conversion state of CD1 back to the initial
+ state. But avoid glibc-2.1 bug and Solaris 2.7 bug. */
+# if defined _LIBICONV_VERSION \
+ || !((__GLIBC__ == 2 && __GLIBC_MINOR__ <= 1) || defined __sun)
+ if (cd2 != (iconv_t)(-1))
+ res2 = iconv (cd2, NULL, NULL, &out2ptr, &out2size);
+ else
+# endif
+ res2 = 0;
+ do_final_flush2 = false;
+ incremented2 = true;
+ }
+
+ length = out2ptr - result;
+ grow = (length + extra_alloc > allocated / 2);
+ if (res2 == (size_t)(-1))
+ {
+ if (errno == E2BIG)
+ grow = true;
+ else if (errno == EINVAL)
+ break;
+ else if (errno == EILSEQ && handler != iconveh_error)
+ {
+ /* Error handling can produce up to 10 bytes of ASCII
+ output. But TO_CODESET may be UCS-2, UTF-16 or
+ UCS-4, so use CD2 here as well. */
+ char scratchbuf[10];
+ size_t scratchlen;
+ ucs4_t uc;
+ const char *inptr;
+ size_t insize;
+ size_t res;
+
+ if (incremented2)
+ {
+ if (u8_prev (&uc, (const uint8_t *) in2ptr,
+ (const uint8_t *) utf8buf)
+ == NULL)
+ abort ();
+ }
+ else
+ {
+ int n;
+ if (in2size == 0)
+ abort ();
+ n = u8_mbtouc_unsafe (&uc, (const uint8_t *) in2ptr,
+ in2size);
+ in2ptr += n;
+ in2size -= n;
+ }
+
+ if (handler == iconveh_escape_sequence)
+ {
+ static char hex[16] = "0123456789ABCDEF";
+ scratchlen = 0;
+ scratchbuf[scratchlen++] = '\\';
+ if (uc < 0x10000)
+ scratchbuf[scratchlen++] = 'u';
+ else
+ {
+ scratchbuf[scratchlen++] = 'U';
+ scratchbuf[scratchlen++] = hex[(uc>>28) & 15];
+ scratchbuf[scratchlen++] = hex[(uc>>24) & 15];
+ scratchbuf[scratchlen++] = hex[(uc>>20) & 15];
+ scratchbuf[scratchlen++] = hex[(uc>>16) & 15];
+ }
+ scratchbuf[scratchlen++] = hex[(uc>>12) & 15];
+ scratchbuf[scratchlen++] = hex[(uc>>8) & 15];
+ scratchbuf[scratchlen++] = hex[(uc>>4) & 15];
+ scratchbuf[scratchlen++] = hex[uc & 15];
+ }
+ else
+ {
+ scratchbuf[0] = '?';
+ scratchlen = 1;
+ }
+
+ inptr = scratchbuf;
+ insize = scratchlen;
+ if (cd2 != (iconv_t)(-1))
+ res = iconv (cd2,
+ (ICONV_CONST char **) &inptr, &insize,
+ &out2ptr, &out2size);
+ else
+ {
+ /* TO_CODESET is UTF-8. */
+ if (out2size >= insize)
+ {
+ memcpy (out2ptr, inptr, insize);
+ out2ptr += insize;
+ out2size -= insize;
+ inptr += insize;
+ insize = 0;
+ res = 0;
+ }
+ else
+ {
+ errno = E2BIG;
+ res = (size_t)(-1);
+ }
+ }
+ length = out2ptr - result;
+ if (res == (size_t)(-1) && errno == E2BIG)
+ {
+ char *memory;
+
+ allocated = 2 * allocated;
+ if (length + 1 + extra_alloc > allocated)
+ abort ();
+ if (result == initial_result)
+ memory = (char *) malloc (allocated);
+ else
+ memory = (char *) realloc (result, allocated);
+ if (memory == NULL)
+ {
+ if (result != initial_result)
+ free (result);
+ errno = ENOMEM;
+ return -1;
+ }
+ if (result == initial_result)
+ memcpy (memory, initial_result, length);
+ result = memory;
+ grow = false;
+
+ out2ptr = result + length;
+ out2size = allocated - extra_alloc - length;
+ if (cd2 != (iconv_t)(-1))
+ res = iconv (cd2,
+ (ICONV_CONST char **) &inptr,
+ &insize,
+ &out2ptr, &out2size);
+ else
+ {
+ /* TO_CODESET is UTF-8. */
+ if (!(out2size >= insize))
+ abort ();
+ memcpy (out2ptr, inptr, insize);
+ out2ptr += insize;
+ out2size -= insize;
+ inptr += insize;
+ insize = 0;
+ res = 0;
+ }
+ length = out2ptr - result;
+ }
+# if !defined _LIBICONV_VERSION && !defined __GLIBC__
+ /* Irix iconv() inserts a NUL byte if it cannot convert.
+ NetBSD iconv() inserts a question mark if it cannot
+ convert.
+ Only GNU libiconv and GNU libc are known to prefer
+ to fail rather than doing a lossy conversion. */
+ if (res != (size_t)(-1) && res > 0)
+ {
+ errno = EILSEQ;
+ res = (size_t)(-1);
+ }
+# endif
+ if (res == (size_t)(-1))
+ {
+ /* Failure converting the ASCII replacement. */
+ if (result != initial_result)
+ {
+ int saved_errno = errno;
+ free (result);
+ errno = saved_errno;
+ }
+ return -1;
+ }
+ }
+ else
+ {
+ if (result != initial_result)
+ {
+ int saved_errno = errno;
+ free (result);
+ errno = saved_errno;
+ }
+ return -1;
+ }
+ }
+ if (!(in2size > 0
+ || (in1size == 0 && !do_final_flush1 && do_final_flush2)))
+ break;
+ if (grow)
+ {
+ char *memory;
+
+ allocated = 2 * allocated;
+ if (result == initial_result)
+ memory = (char *) malloc (allocated);
+ else
+ memory = (char *) realloc (result, allocated);
+ if (memory == NULL)
+ {
+ if (result != initial_result)
+ free (result);
+ errno = ENOMEM;
+ return -1;
+ }
+ if (result == initial_result)
+ memcpy (memory, initial_result, length);
+ result = memory;
+ }
+ }
+
+ /* Move the remaining bytes to the beginning of utf8buf. */
+ if (in2size > 0)
+ memmove (utf8buf, in2ptr, in2size);
+ utf8len = in2size;
+ }
+
+ if (res1 == (size_t)(-1))
+ {
+ if (errno1 == EINVAL)
+ in1size = 0;
+ else if (errno1 == EILSEQ)
+ {
+ if (result != initial_result)
+ free (result);
+ errno = errno1;
+ return -1;
+ }
+ }
+ }
+# undef utf8bufsize
+ }
+
+ done:
+ /* Now the final memory allocation. */
+ if (result == tmpbuf)
+ {
+ size_t memsize = length + extra_alloc;
+ char *memory;
+
+ memory = (char *) malloc (memsize > 0 ? memsize : 1);
+ if (memory != NULL)
+ {
+ memcpy (memory, tmpbuf, length);
+ result = memory;
+ }
+ else
+ {
+ errno = ENOMEM;
+ return -1;
+ }
+ }
+ else if (result != *resultp && length + extra_alloc < allocated)
+ {
+ /* Shrink the allocated memory if possible. */
+ size_t memsize = length + extra_alloc;
+ char *memory;
+
+ memory = (char *) realloc (result, memsize > 0 ? memsize : 1);
+ if (memory != NULL)
+ result = memory;
+ }
+ *resultp = result;
+ *lengthp = length;
+ return 0;
+# undef tmpbuf
+# undef tmpbufsize
+}
+
+int
+mem_cd_iconveh (const char *src, size_t srclen,
+ iconv_t cd, iconv_t cd1, iconv_t cd2,
+ enum iconv_ilseq_handler handler,
+ size_t *offsets,
+ char **resultp, size_t *lengthp)
+{
+ return mem_cd_iconveh_internal (src, srclen, cd, cd1, cd2, handler, 0,
+ offsets, resultp, lengthp);
+}
+
+char *
+str_cd_iconveh (const char *src,
+ iconv_t cd, iconv_t cd1, iconv_t cd2,
+ enum iconv_ilseq_handler handler)
+{
+ /* For most encodings, a trailing NUL byte in the input will be converted
+ to a trailing NUL byte in the output. But not for UTF-7. So that this
+ function is usable for UTF-7, we have to exclude the NUL byte from the
+ conversion and add it by hand afterwards. */
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_cd_iconveh_internal (src, strlen (src),
+ cd, cd1, cd2, handler, 1, NULL,
+ &result, &length);
+
+ if (retval < 0)
+ {
+ if (result != NULL)
+ {
+ int saved_errno = errno;
+ free (result);
+ errno = saved_errno;
+ }
+ return NULL;
+ }
+
+ /* Add the terminating NUL byte. */
+ result[length] = '\0';
+
+ return result;
+}
+
+#endif
+
+int
+mem_iconveh (const char *src, size_t srclen,
+ const char *from_codeset, const char *to_codeset,
+ enum iconv_ilseq_handler handler,
+ size_t *offsets,
+ char **resultp, size_t *lengthp)
+{
+ if (srclen == 0)
+ {
+ /* Nothing to convert. */
+ *lengthp = 0;
+ return 0;
+ }
+ else if (offsets == NULL && c_strcasecmp (from_codeset, to_codeset) == 0)
+ {
+ char *result;
+
+ if (*resultp != NULL && *lengthp >= srclen)
+ result = *resultp;
+ else
+ {
+ result = (char *) malloc (srclen);
+ if (result == NULL)
+ {
+ errno = ENOMEM;
+ return -1;
+ }
+ }
+ memcpy (result, src, srclen);
+ *resultp = result;
+ *lengthp = srclen;
+ return 0;
+ }
+ else
+ {
+#if HAVE_ICONV
+ iconv_t cd;
+ iconv_t cd1;
+ iconv_t cd2;
+ char *result;
+ size_t length;
+ int retval;
+
+ /* Avoid glibc-2.1 bug with EUC-KR. */
+# if (__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) && !defined _LIBICONV_VERSION
+ if (c_strcasecmp (from_codeset, "EUC-KR") == 0
+ || c_strcasecmp (to_codeset, "EUC-KR") == 0)
+ {
+ errno = EINVAL;
+ return -1;
+ }
+# endif
+
+ cd = iconv_open (to_codeset, from_codeset);
+
+ if (STRCASEEQ (from_codeset, "UTF-8", 'U','T','F','-','8',0,0,0,0))
+ cd1 = (iconv_t)(-1);
+ else
+ {
+ cd1 = iconv_open ("UTF-8", from_codeset);
+ if (cd1 == (iconv_t)(-1))
+ {
+ int saved_errno = errno;
+ if (cd != (iconv_t)(-1))
+ iconv_close (cd);
+ errno = saved_errno;
+ return -1;
+ }
+ }
+
+ if (STRCASEEQ (to_codeset, "UTF-8", 'U','T','F','-','8',0,0,0,0)
+# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 || _LIBICONV_VERSION >= 0x0105
+ || c_strcasecmp (to_codeset, "UTF-8//TRANSLIT") == 0
+# endif
+ )
+ cd2 = (iconv_t)(-1);
+ else
+ {
+ cd2 = iconv_open (to_codeset, "UTF-8");
+ if (cd2 == (iconv_t)(-1))
+ {
+ int saved_errno = errno;
+ if (cd1 != (iconv_t)(-1))
+ iconv_close (cd1);
+ if (cd != (iconv_t)(-1))
+ iconv_close (cd);
+ errno = saved_errno;
+ return -1;
+ }
+ }
+
+ result = *resultp;
+ length = *lengthp;
+ retval = mem_cd_iconveh (src, srclen, cd, cd1, cd2, handler, offsets,
+ &result, &length);
+
+ if (retval < 0)
+ {
+ /* Close cd, cd1, cd2, but preserve the errno from str_cd_iconv. */
+ int saved_errno = errno;
+ if (cd2 != (iconv_t)(-1))
+ iconv_close (cd2);
+ if (cd1 != (iconv_t)(-1))
+ iconv_close (cd1);
+ if (cd != (iconv_t)(-1))
+ iconv_close (cd);
+ errno = saved_errno;
+ }
+ else
+ {
+ if (cd2 != (iconv_t)(-1) && iconv_close (cd2) < 0)
+ {
+ /* Return -1, but free the allocated memory, and while doing
+ that, preserve the errno from iconv_close. */
+ int saved_errno = errno;
+ if (cd1 != (iconv_t)(-1))
+ iconv_close (cd1);
+ if (cd != (iconv_t)(-1))
+ iconv_close (cd);
+ if (result != *resultp && result != NULL)
+ free (result);
+ errno = saved_errno;
+ return -1;
+ }
+ if (cd1 != (iconv_t)(-1) && iconv_close (cd1) < 0)
+ {
+ /* Return -1, but free the allocated memory, and while doing
+ that, preserve the errno from iconv_close. */
+ int saved_errno = errno;
+ if (cd != (iconv_t)(-1))
+ iconv_close (cd);
+ if (result != *resultp && result != NULL)
+ free (result);
+ errno = saved_errno;
+ return -1;
+ }
+ if (cd != (iconv_t)(-1) && iconv_close (cd) < 0)
+ {
+ /* Return -1, but free the allocated memory, and while doing
+ that, preserve the errno from iconv_close. */
+ int saved_errno = errno;
+ if (result != *resultp && result != NULL)
+ free (result);
+ errno = saved_errno;
+ return -1;
+ }
+ *resultp = result;
+ *lengthp = length;
+ }
+ return retval;
+#else
+ /* This is a different error code than if iconv_open existed but didn't
+ support from_codeset and to_codeset, so that the caller can emit
+ an error message such as
+ "iconv() is not supported. Installing GNU libiconv and
+ then reinstalling this package would fix this." */
+ errno = ENOSYS;
+ return -1;
+#endif
+ }
+}
+
+char *
+str_iconveh (const char *src,
+ const char *from_codeset, const char *to_codeset,
+ enum iconv_ilseq_handler handler)
+{
+ if (*src == '\0' || c_strcasecmp (from_codeset, to_codeset) == 0)
+ {
+ char *result = strdup (src);
+
+ if (result == NULL)
+ errno = ENOMEM;
+ return result;
+ }
+ else
+ {
+#if HAVE_ICONV
+ iconv_t cd;
+ iconv_t cd1;
+ iconv_t cd2;
+ char *result;
+
+ /* Avoid glibc-2.1 bug with EUC-KR. */
+# if (__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) && !defined _LIBICONV_VERSION
+ if (c_strcasecmp (from_codeset, "EUC-KR") == 0
+ || c_strcasecmp (to_codeset, "EUC-KR") == 0)
+ {
+ errno = EINVAL;
+ return NULL;
+ }
+# endif
+
+ cd = iconv_open (to_codeset, from_codeset);
+
+ if (STRCASEEQ (from_codeset, "UTF-8", 'U','T','F','-','8',0,0,0,0))
+ cd1 = (iconv_t)(-1);
+ else
+ {
+ cd1 = iconv_open ("UTF-8", from_codeset);
+ if (cd1 == (iconv_t)(-1))
+ {
+ int saved_errno = errno;
+ if (cd != (iconv_t)(-1))
+ iconv_close (cd);
+ errno = saved_errno;
+ return NULL;
+ }
+ }
+
+ if (STRCASEEQ (to_codeset, "UTF-8", 'U','T','F','-','8',0,0,0,0)
+# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 || _LIBICONV_VERSION >= 0x0105
+ || c_strcasecmp (to_codeset, "UTF-8//TRANSLIT") == 0
+# endif
+ )
+ cd2 = (iconv_t)(-1);
+ else
+ {
+ cd2 = iconv_open (to_codeset, "UTF-8");
+ if (cd2 == (iconv_t)(-1))
+ {
+ int saved_errno = errno;
+ if (cd1 != (iconv_t)(-1))
+ iconv_close (cd1);
+ if (cd != (iconv_t)(-1))
+ iconv_close (cd);
+ errno = saved_errno;
+ return NULL;
+ }
+ }
+
+ result = str_cd_iconveh (src, cd, cd1, cd2, handler);
+
+ if (result == NULL)
+ {
+ /* Close cd, cd1, cd2, but preserve the errno from str_cd_iconv. */
+ int saved_errno = errno;
+ if (cd2 != (iconv_t)(-1))
+ iconv_close (cd2);
+ if (cd1 != (iconv_t)(-1))
+ iconv_close (cd1);
+ if (cd != (iconv_t)(-1))
+ iconv_close (cd);
+ errno = saved_errno;
+ }
+ else
+ {
+ if (cd2 != (iconv_t)(-1) && iconv_close (cd2) < 0)
+ {
+ /* Return NULL, but free the allocated memory, and while doing
+ that, preserve the errno from iconv_close. */
+ int saved_errno = errno;
+ if (cd1 != (iconv_t)(-1))
+ iconv_close (cd1);
+ if (cd != (iconv_t)(-1))
+ iconv_close (cd);
+ free (result);
+ errno = saved_errno;
+ return NULL;
+ }
+ if (cd1 != (iconv_t)(-1) && iconv_close (cd1) < 0)
+ {
+ /* Return NULL, but free the allocated memory, and while doing
+ that, preserve the errno from iconv_close. */
+ int saved_errno = errno;
+ if (cd != (iconv_t)(-1))
+ iconv_close (cd);
+ free (result);
+ errno = saved_errno;
+ return NULL;
+ }
+ if (cd != (iconv_t)(-1) && iconv_close (cd) < 0)
+ {
+ /* Return NULL, but free the allocated memory, and while doing
+ that, preserve the errno from iconv_close. */
+ int saved_errno = errno;
+ free (result);
+ errno = saved_errno;
+ return NULL;
+ }
+ }
+ return result;
+#else
+ /* This is a different error code than if iconv_open existed but didn't
+ support from_codeset and to_codeset, so that the caller can emit
+ an error message such as
+ "iconv() is not supported. Installing GNU libiconv and
+ then reinstalling this package would fix this." */
+ errno = ENOSYS;
+ return NULL;
+#endif
+ }
+}
diff --git a/lib/striconveh.h b/lib/striconveh.h
new file mode 100644
index 00000000..98b4d0c5
--- /dev/null
+++ b/lib/striconveh.h
@@ -0,0 +1,120 @@
+/* Character set conversion with error handling.
+ Copyright (C) 2001-2007, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible and Simon Josefsson.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _STRICONVEH_H
+#define _STRICONVEH_H
+
+#include <stddef.h>
+#if HAVE_ICONV
+#include <iconv.h>
+#endif
+
+#include "iconveh.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#if HAVE_ICONV
+
+/* Convert an entire string from one encoding to another, using iconv.
+ The original string is at [SRC,...,SRC+SRCLEN-1].
+ CD is the conversion descriptor from FROMCODE to TOCODE, or (iconv_t)(-1) if
+ the system does not support a direct conversion from FROMCODE to TOCODE.
+ CD1 is the conversion descriptor from FROM_CODESET to UTF-8 (or
+ (iconv_t)(-1) if FROM_CODESET is UTF-8).
+ CD2 is the conversion descriptor from UTF-8 to TO_CODESET (or (iconv_t)(-1)
+ if TO_CODESET is UTF-8).
+ If OFFSETS is not NULL, it should point to an array of SRCLEN integers; this
+ array is filled with offsets into the result, i.e. the character starting
+ at SRC[i] corresponds to the character starting at (*RESULTP)[OFFSETS[i]],
+ and other offsets are set to (size_t)(-1).
+ *RESULTP and *LENGTH should initially be a scratch buffer and its size,
+ or *RESULTP can initially be NULL.
+ May erase the contents of the memory at *RESULTP.
+ Return value: 0 if successful, otherwise -1 and errno set.
+ If successful: The resulting string is stored in *RESULTP and its length
+ in *LENGTHP. *RESULTP is set to a freshly allocated memory block, or is
+ unchanged if no dynamic memory allocation was necessary. */
+extern int
+ mem_cd_iconveh (const char *src, size_t srclen,
+ iconv_t cd, iconv_t cd1, iconv_t cd2,
+ enum iconv_ilseq_handler handler,
+ size_t *offsets,
+ char **resultp, size_t *lengthp);
+
+/* Convert an entire string from one encoding to another, using iconv.
+ The original string is the NUL-terminated string starting at SRC.
+ CD is the conversion descriptor from FROMCODE to TOCODE, or (iconv_t)(-1) if
+ the system does not support a direct conversion from FROMCODE to TOCODE.
+ Both the "from" and the "to" encoding must use a single NUL byte at the end
+ of the string (i.e. not UCS-2, UCS-4, UTF-16, UTF-32).
+ CD1 is the conversion descriptor from FROM_CODESET to UTF-8 (or
+ (iconv_t)(-1) if FROM_CODESET is UTF-8).
+ CD2 is the conversion descriptor from UTF-8 to TO_CODESET (or (iconv_t)(-1)
+ if TO_CODESET is UTF-8).
+ Allocate a malloced memory block for the result.
+ Return value: the freshly allocated resulting NUL-terminated string if
+ successful, otherwise NULL and errno set. */
+extern char *
+ str_cd_iconveh (const char *src,
+ iconv_t cd, iconv_t cd1, iconv_t cd2,
+ enum iconv_ilseq_handler handler);
+
+#endif
+
+/* Convert an entire string from one encoding to another, using iconv.
+ The original string is at [SRC,...,SRC+SRCLEN-1].
+ If OFFSETS is not NULL, it should point to an array of SRCLEN integers; this
+ array is filled with offsets into the result, i.e. the character starting
+ at SRC[i] corresponds to the character starting at (*RESULTP)[OFFSETS[i]],
+ and other offsets are set to (size_t)(-1).
+ *RESULTP and *LENGTH should initially be a scratch buffer and its size,
+ or *RESULTP can initially be NULL.
+ May erase the contents of the memory at *RESULTP.
+ Return value: 0 if successful, otherwise -1 and errno set.
+ If successful: The resulting string is stored in *RESULTP and its length
+ in *LENGTHP. *RESULTP is set to a freshly allocated memory block, or is
+ unchanged if no dynamic memory allocation was necessary. */
+extern int
+ mem_iconveh (const char *src, size_t srclen,
+ const char *from_codeset, const char *to_codeset,
+ enum iconv_ilseq_handler handler,
+ size_t *offsets,
+ char **resultp, size_t *lengthp);
+
+/* Convert an entire string from one encoding to another, using iconv.
+ The original string is the NUL-terminated string starting at SRC.
+ Both the "from" and the "to" encoding must use a single NUL byte at the
+ end of the string (i.e. not UCS-2, UCS-4, UTF-16, UTF-32).
+ Allocate a malloced memory block for the result.
+ Return value: the freshly allocated resulting NUL-terminated string if
+ successful, otherwise NULL and errno set. */
+extern char *
+ str_iconveh (const char *src,
+ const char *from_codeset, const char *to_codeset,
+ enum iconv_ilseq_handler handler);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _STRICONVEH_H */
diff --git a/lib/striconveha.c b/lib/striconveha.c
new file mode 100644
index 00000000..a0567b42
--- /dev/null
+++ b/lib/striconveha.c
@@ -0,0 +1,348 @@
+/* Character set conversion with error handling and autodetection.
+ Copyright (C) 2002, 2005, 2007, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "striconveha.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "malloca.h"
+#include "c-strcase.h"
+#include "striconveh.h"
+
+#define SIZEOF(a) (sizeof(a)/sizeof(a[0]))
+
+
+/* Autodetection list. */
+
+struct autodetect_alias
+{
+ struct autodetect_alias *next;
+ const char *name;
+ const char * const *encodings_to_try;
+};
+
+static const char * const autodetect_utf8_try[] =
+{
+ /* Try UTF-8 first. There are very few ISO-8859-1 inputs that would
+ be valid UTF-8, but many UTF-8 inputs are valid ISO-8859-1. */
+ "UTF-8", "ISO-8859-1",
+ NULL
+};
+static const char * const autodetect_jp_try[] =
+{
+ /* Try 7-bit encoding first. If the input contains bytes >= 0x80,
+ it will fail.
+ Try EUC-JP next. Short SHIFT_JIS inputs may come out wrong. This
+ is unavoidable. People will condemn SHIFT_JIS.
+ If we tried SHIFT_JIS first, then some short EUC-JP inputs would
+ come out wrong, and people would condemn EUC-JP and Unix, which
+ would not be good.
+ Finally try SHIFT_JIS. */
+ "ISO-2022-JP-2", "EUC-JP", "SHIFT_JIS",
+ NULL
+};
+static const char * const autodetect_kr_try[] =
+{
+ /* Try 7-bit encoding first. If the input contains bytes >= 0x80,
+ it will fail.
+ Finally try EUC-KR. */
+ "ISO-2022-KR", "EUC-KR",
+ NULL
+};
+
+static struct autodetect_alias autodetect_predefined[] =
+{
+ { &autodetect_predefined[1], "autodetect_utf8", autodetect_utf8_try },
+ { &autodetect_predefined[2], "autodetect_jp", autodetect_jp_try },
+ { NULL, "autodetect_kr", autodetect_kr_try }
+};
+
+static struct autodetect_alias *autodetect_list = &autodetect_predefined[0];
+static struct autodetect_alias **autodetect_list_end =
+ &autodetect_predefined[SIZEOF(autodetect_predefined)-1].next;
+
+int
+uniconv_register_autodetect (const char *name,
+ const char * const *try_in_order)
+{
+ size_t namelen;
+ size_t listlen;
+ size_t memneed;
+ size_t i;
+ char *memory;
+ struct autodetect_alias *new_alias;
+ char *new_name;
+ const char **new_try_in_order;
+
+ /* The TRY_IN_ORDER list must not be empty. */
+ if (try_in_order[0] == NULL)
+ {
+ errno = EINVAL;
+ return -1;
+ }
+
+ /* We must deep-copy NAME and TRY_IN_ORDER, because they may be allocated
+ with dynamic extent. */
+ namelen = strlen (name) + 1;
+ memneed = sizeof (struct autodetect_alias) + namelen + sizeof (char *);
+ for (i = 0; try_in_order[i] != NULL; i++)
+ memneed += sizeof (char *) + strlen (try_in_order[i]) + 1;
+ listlen = i;
+
+ memory = (char *) malloc (memneed);
+ if (memory != NULL)
+ {
+ new_alias = (struct autodetect_alias *) memory;
+ memory += sizeof (struct autodetect_alias);
+
+ new_try_in_order = (const char **) memory;
+ memory += (listlen + 1) * sizeof (char *);
+
+ new_name = (char *) memory;
+ memcpy (new_name, name, namelen);
+ memory += namelen;
+
+ for (i = 0; i < listlen; i++)
+ {
+ size_t len = strlen (try_in_order[i]) + 1;
+ memcpy (memory, try_in_order[i], len);
+ new_try_in_order[i] = (const char *) memory;
+ memory += len;
+ }
+ new_try_in_order[i] = NULL;
+
+ /* Now insert the new alias. */
+ new_alias->name = new_name;
+ new_alias->encodings_to_try = new_try_in_order;
+ new_alias->next = NULL;
+ /* FIXME: Not multithread-safe. */
+ *autodetect_list_end = new_alias;
+ autodetect_list_end = &new_alias->next;
+ return 0;
+ }
+ else
+ {
+ errno = ENOMEM;
+ return -1;
+ }
+}
+
+/* Like mem_iconveha, except no handling of transliteration. */
+static int
+mem_iconveha_notranslit (const char *src, size_t srclen,
+ const char *from_codeset, const char *to_codeset,
+ enum iconv_ilseq_handler handler,
+ size_t *offsets,
+ char **resultp, size_t *lengthp)
+{
+ int retval = mem_iconveh (src, srclen, from_codeset, to_codeset, handler,
+ offsets, resultp, lengthp);
+ if (retval >= 0 || errno != EINVAL)
+ return retval;
+ else
+ {
+ struct autodetect_alias *alias;
+
+ /* Unsupported from_codeset or to_codeset. Check whether the caller
+ requested autodetection. */
+ for (alias = autodetect_list; alias != NULL; alias = alias->next)
+ if (strcmp (from_codeset, alias->name) == 0)
+ {
+ const char * const *encodings;
+
+ if (handler != iconveh_error)
+ {
+ /* First try all encodings without any forgiving. */
+ encodings = alias->encodings_to_try;
+ do
+ {
+ retval = mem_iconveha_notranslit (src, srclen,
+ *encodings, to_codeset,
+ iconveh_error, offsets,
+ resultp, lengthp);
+ if (!(retval < 0 && errno == EILSEQ))
+ return retval;
+ encodings++;
+ }
+ while (*encodings != NULL);
+ }
+
+ encodings = alias->encodings_to_try;
+ do
+ {
+ retval = mem_iconveha_notranslit (src, srclen,
+ *encodings, to_codeset,
+ handler, offsets,
+ resultp, lengthp);
+ if (!(retval < 0 && errno == EILSEQ))
+ return retval;
+ encodings++;
+ }
+ while (*encodings != NULL);
+
+ /* Return the last call's result. */
+ return -1;
+ }
+
+ /* It wasn't an autodetection name. */
+ errno = EINVAL;
+ return -1;
+ }
+}
+
+int
+mem_iconveha (const char *src, size_t srclen,
+ const char *from_codeset, const char *to_codeset,
+ bool transliterate,
+ enum iconv_ilseq_handler handler,
+ size_t *offsets,
+ char **resultp, size_t *lengthp)
+{
+ if (srclen == 0)
+ {
+ /* Nothing to convert. */
+ *lengthp = 0;
+ return 0;
+ }
+
+ /* When using GNU libc >= 2.2 or GNU libiconv >= 1.5,
+ we want to use transliteration. */
+#if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 || _LIBICONV_VERSION >= 0x0105
+ if (transliterate)
+ {
+ int retval;
+ size_t len = strlen (to_codeset);
+ char *to_codeset_suffixed = (char *) malloca (len + 10 + 1);
+ memcpy (to_codeset_suffixed, to_codeset, len);
+ memcpy (to_codeset_suffixed + len, "//TRANSLIT", 10 + 1);
+
+ retval = mem_iconveha_notranslit (src, srclen,
+ from_codeset, to_codeset_suffixed,
+ handler, offsets, resultp, lengthp);
+
+ freea (to_codeset_suffixed);
+
+ return retval;
+ }
+ else
+#endif
+ return mem_iconveha_notranslit (src, srclen,
+ from_codeset, to_codeset,
+ handler, offsets, resultp, lengthp);
+}
+
+/* Like str_iconveha, except no handling of transliteration. */
+static char *
+str_iconveha_notranslit (const char *src,
+ const char *from_codeset, const char *to_codeset,
+ enum iconv_ilseq_handler handler)
+{
+ char *result = str_iconveh (src, from_codeset, to_codeset, handler);
+
+ if (result != NULL || errno != EINVAL)
+ return result;
+ else
+ {
+ struct autodetect_alias *alias;
+
+ /* Unsupported from_codeset or to_codeset. Check whether the caller
+ requested autodetection. */
+ for (alias = autodetect_list; alias != NULL; alias = alias->next)
+ if (strcmp (from_codeset, alias->name) == 0)
+ {
+ const char * const *encodings;
+
+ if (handler != iconveh_error)
+ {
+ /* First try all encodings without any forgiving. */
+ encodings = alias->encodings_to_try;
+ do
+ {
+ result = str_iconveha_notranslit (src,
+ *encodings, to_codeset,
+ iconveh_error);
+ if (!(result == NULL && errno == EILSEQ))
+ return result;
+ encodings++;
+ }
+ while (*encodings != NULL);
+ }
+
+ encodings = alias->encodings_to_try;
+ do
+ {
+ result = str_iconveha_notranslit (src,
+ *encodings, to_codeset,
+ handler);
+ if (!(result == NULL && errno == EILSEQ))
+ return result;
+ encodings++;
+ }
+ while (*encodings != NULL);
+
+ /* Return the last call's result. */
+ return NULL;
+ }
+
+ /* It wasn't an autodetection name. */
+ errno = EINVAL;
+ return NULL;
+ }
+}
+
+char *
+str_iconveha (const char *src,
+ const char *from_codeset, const char *to_codeset,
+ bool transliterate,
+ enum iconv_ilseq_handler handler)
+{
+ if (*src == '\0' || c_strcasecmp (from_codeset, to_codeset) == 0)
+ {
+ char *result = strdup (src);
+
+ if (result == NULL)
+ errno = ENOMEM;
+ return result;
+ }
+
+ /* When using GNU libc >= 2.2 or GNU libiconv >= 1.5,
+ we want to use transliteration. */
+#if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 || _LIBICONV_VERSION >= 0x0105
+ if (transliterate)
+ {
+ char *result;
+ size_t len = strlen (to_codeset);
+ char *to_codeset_suffixed = (char *) malloca (len + 10 + 1);
+ memcpy (to_codeset_suffixed, to_codeset, len);
+ memcpy (to_codeset_suffixed + len, "//TRANSLIT", 10 + 1);
+
+ result = str_iconveha_notranslit (src, from_codeset, to_codeset_suffixed,
+ handler);
+
+ freea (to_codeset_suffixed);
+
+ return result;
+ }
+ else
+#endif
+ return str_iconveha_notranslit (src, from_codeset, to_codeset, handler);
+}
diff --git a/lib/striconveha.h b/lib/striconveha.h
new file mode 100644
index 00000000..c88eb52f
--- /dev/null
+++ b/lib/striconveha.h
@@ -0,0 +1,95 @@
+/* Character set conversion with error handling and autodetection.
+ Copyright (C) 2002, 2005, 2007-2009 Free Software Foundation, Inc.
+ Written by Bruno Haible.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _STRICONVEHA_H
+#define _STRICONVEHA_H
+
+#include <stdbool.h>
+#include <stddef.h>
+
+#include "iconveh.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Convert an entire string from one encoding to another, using iconv.
+ The original string is at [SRC,...,SRC+SRCLEN-1].
+ The "from" encoding can also be a name defined for autodetection.
+ If TRANSLITERATE is true, transliteration will attempted to avoid conversion
+ errors, for iconv implementations that support this. Usually you'll choose
+ TRANSLITERATE = true if HANDLER != iconveh_error.
+ If OFFSETS is not NULL, it should point to an array of SRCLEN integers; this
+ array is filled with offsets into the result, i.e. the character starting
+ at SRC[i] corresponds to the character starting at (*RESULTP)[OFFSETS[i]],
+ and other offsets are set to (size_t)(-1).
+ *RESULTP and *LENGTH should initially be a scratch buffer and its size,
+ or *RESULTP can initially be NULL.
+ May erase the contents of the memory at *RESULTP.
+ Return value: 0 if successful, otherwise -1 and errno set.
+ If successful: The resulting string is stored in *RESULTP and its length
+ in *LENGTHP. *RESULTP is set to a freshly allocated memory block, or is
+ unchanged if no dynamic memory allocation was necessary. */
+extern int
+ mem_iconveha (const char *src, size_t srclen,
+ const char *from_codeset, const char *to_codeset,
+ bool transliterate,
+ enum iconv_ilseq_handler handler,
+ size_t *offsets,
+ char **resultp, size_t *lengthp);
+
+/* Convert an entire string from one encoding to another, using iconv.
+ The original string is the NUL-terminated string starting at SRC.
+ Both the "from" and the "to" encoding must use a single NUL byte at the
+ end of the string (i.e. not UCS-2, UCS-4, UTF-16, UTF-32).
+ The "from" encoding can also be a name defined for autodetection.
+ If TRANSLITERATE is true, transliteration will attempted to avoid conversion
+ errors, for iconv implementations that support this. Usually you'll choose
+ TRANSLITERATE = true if HANDLER != iconveh_error.
+ Allocate a malloced memory block for the result.
+ Return value: the freshly allocated resulting NUL-terminated string if
+ successful, otherwise NULL and errno set. */
+extern char *
+ str_iconveha (const char *src,
+ const char *from_codeset, const char *to_codeset,
+ bool transliterate,
+ enum iconv_ilseq_handler handler);
+
+
+/* In the above, FROM_CODESET can also be one of the following values:
+ "autodetect_utf8" supports ISO-8859-1 and UTF-8
+ "autodetect_jp" supports EUC-JP, ISO-2022-JP-2 and SHIFT_JIS
+ "autodetect_kr" supports EUC-KR and ISO-2022-KR
+ More names can be defined for autodetection. */
+
+/* Registers an encoding name for autodetection.
+ TRY_IN_ORDER is a NULL terminated list of encodings to be tried.
+ Returns 0 upon success, or -1 (with errno set) in case of error.
+ Particular errno values: ENOMEM. */
+extern int
+ uniconv_register_autodetect (const char *name,
+ const char * const *try_in_order);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _STRICONVEHA_H */
diff --git a/lib/string.in.h b/lib/string.in.h
new file mode 100644
index 00000000..fe114256
--- /dev/null
+++ b/lib/string.in.h
@@ -0,0 +1,620 @@
+/* A GNU-like <string.h>.
+
+ Copyright (C) 1995-1996, 2001-2009 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+#ifndef _GL_STRING_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+/* The include_next requires a split double-inclusion guard. */
+#@INCLUDE_NEXT@ @NEXT_STRING_H@
+
+#ifndef _GL_STRING_H
+#define _GL_STRING_H
+
+
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later. */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
+# define __attribute__(Spec) /* empty */
+# endif
+/* The attribute __pure__ was added in gcc 2.96. */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96)
+# define __pure__ /* empty */
+# endif
+#endif
+
+
+/* The definition of GL_LINK_WARNING is copied here. */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Return the first instance of C within N bytes of S, or NULL. */
+#if @GNULIB_MEMCHR@
+# if @REPLACE_MEMCHR@
+# define memchr rpl_memchr
+extern void *memchr (void const *__s, int __c, size_t __n)
+ __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memchr
+# define memchr(s,c,n) \
+ (GL_LINK_WARNING ("memchr has platform-specific bugs - " \
+ "use gnulib module memchr for portability" ), \
+ memchr (s, c, n))
+#endif
+
+/* Return the first occurrence of NEEDLE in HAYSTACK. */
+#if @GNULIB_MEMMEM@
+# if @REPLACE_MEMMEM@
+# define memmem rpl_memmem
+# endif
+# if ! @HAVE_DECL_MEMMEM@ || @REPLACE_MEMMEM@
+extern void *memmem (void const *__haystack, size_t __haystack_len,
+ void const *__needle, size_t __needle_len)
+ __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memmem
+# define memmem(a,al,b,bl) \
+ (GL_LINK_WARNING ("memmem is unportable and often quadratic - " \
+ "use gnulib module memmem-simple for portability, " \
+ "and module memmem for speed" ), \
+ memmem (a, al, b, bl))
+#endif
+
+/* Copy N bytes of SRC to DEST, return pointer to bytes after the
+ last written byte. */
+#if @GNULIB_MEMPCPY@
+# if ! @HAVE_MEMPCPY@
+extern void *mempcpy (void *restrict __dest, void const *restrict __src,
+ size_t __n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mempcpy
+# define mempcpy(a,b,n) \
+ (GL_LINK_WARNING ("mempcpy is unportable - " \
+ "use gnulib module mempcpy for portability"), \
+ mempcpy (a, b, n))
+#endif
+
+/* Search backwards through a block for a byte (specified as an int). */
+#if @GNULIB_MEMRCHR@
+# if ! @HAVE_DECL_MEMRCHR@
+extern void *memrchr (void const *, int, size_t)
+ __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memrchr
+# define memrchr(a,b,c) \
+ (GL_LINK_WARNING ("memrchr is unportable - " \
+ "use gnulib module memrchr for portability"), \
+ memrchr (a, b, c))
+#endif
+
+/* Find the first occurrence of C in S. More efficient than
+ memchr(S,C,N), at the expense of undefined behavior if C does not
+ occur within N bytes. */
+#if @GNULIB_RAWMEMCHR@
+# if ! @HAVE_RAWMEMCHR@
+extern void *rawmemchr (void const *__s, int __c_in)
+ __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef rawmemchr
+# define rawmemchr(a,b) \
+ (GL_LINK_WARNING ("rawmemchr is unportable - " \
+ "use gnulib module rawmemchr for portability"), \
+ rawmemchr (a, b))
+#endif
+
+/* Copy SRC to DST, returning the address of the terminating '\0' in DST. */
+#if @GNULIB_STPCPY@
+# if ! @HAVE_STPCPY@
+extern char *stpcpy (char *restrict __dst, char const *restrict __src);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef stpcpy
+# define stpcpy(a,b) \
+ (GL_LINK_WARNING ("stpcpy is unportable - " \
+ "use gnulib module stpcpy for portability"), \
+ stpcpy (a, b))
+#endif
+
+/* Copy no more than N bytes of SRC to DST, returning a pointer past the
+ last non-NUL byte written into DST. */
+#if @GNULIB_STPNCPY@
+# if ! @HAVE_STPNCPY@
+# define stpncpy gnu_stpncpy
+extern char *stpncpy (char *restrict __dst, char const *restrict __src,
+ size_t __n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef stpncpy
+# define stpncpy(a,b,n) \
+ (GL_LINK_WARNING ("stpncpy is unportable - " \
+ "use gnulib module stpncpy for portability"), \
+ stpncpy (a, b, n))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strchr() does not work with multibyte strings if the locale encoding is
+ GB18030 and the character to be searched is a digit. */
+# undef strchr
+# define strchr(s,c) \
+ (GL_LINK_WARNING ("strchr cannot work correctly on character strings " \
+ "in some multibyte locales - " \
+ "use mbschr if you care about internationalization"), \
+ strchr (s, c))
+#endif
+
+/* Find the first occurrence of C in S or the final NUL byte. */
+#if @GNULIB_STRCHRNUL@
+# if ! @HAVE_STRCHRNUL@
+extern char *strchrnul (char const *__s, int __c_in)
+ __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strchrnul
+# define strchrnul(a,b) \
+ (GL_LINK_WARNING ("strchrnul is unportable - " \
+ "use gnulib module strchrnul for portability"), \
+ strchrnul (a, b))
+#endif
+
+/* Duplicate S, returning an identical malloc'd string. */
+#if @GNULIB_STRDUP@
+# if @REPLACE_STRDUP@
+# undef strdup
+# define strdup rpl_strdup
+# endif
+# if !(@HAVE_DECL_STRDUP@ || defined strdup) || @REPLACE_STRDUP@
+extern char *strdup (char const *__s);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strdup
+# define strdup(a) \
+ (GL_LINK_WARNING ("strdup is unportable - " \
+ "use gnulib module strdup for portability"), \
+ strdup (a))
+#endif
+
+/* Return a newly allocated copy of at most N bytes of STRING. */
+#if @GNULIB_STRNDUP@
+# if ! @HAVE_STRNDUP@
+# undef strndup
+# define strndup rpl_strndup
+# endif
+# if ! @HAVE_STRNDUP@ || ! @HAVE_DECL_STRNDUP@
+extern char *strndup (char const *__string, size_t __n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strndup
+# define strndup(a,n) \
+ (GL_LINK_WARNING ("strndup is unportable - " \
+ "use gnulib module strndup for portability"), \
+ strndup (a, n))
+#endif
+
+/* Find the length (number of bytes) of STRING, but scan at most
+ MAXLEN bytes. If no '\0' terminator is found in that many bytes,
+ return MAXLEN. */
+#if @GNULIB_STRNLEN@
+# if ! @HAVE_DECL_STRNLEN@
+extern size_t strnlen (char const *__string, size_t __maxlen)
+ __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strnlen
+# define strnlen(a,n) \
+ (GL_LINK_WARNING ("strnlen is unportable - " \
+ "use gnulib module strnlen for portability"), \
+ strnlen (a, n))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strcspn() assumes the second argument is a list of single-byte characters.
+ Even in this simple case, it does not work with multibyte strings if the
+ locale encoding is GB18030 and one of the characters to be searched is a
+ digit. */
+# undef strcspn
+# define strcspn(s,a) \
+ (GL_LINK_WARNING ("strcspn cannot work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbscspn if you care about internationalization"), \
+ strcspn (s, a))
+#endif
+
+/* Find the first occurrence in S of any character in ACCEPT. */
+#if @GNULIB_STRPBRK@
+# if ! @HAVE_STRPBRK@
+extern char *strpbrk (char const *__s, char const *__accept)
+ __attribute__ ((__pure__));
+# endif
+# if defined GNULIB_POSIXCHECK
+/* strpbrk() assumes the second argument is a list of single-byte characters.
+ Even in this simple case, it does not work with multibyte strings if the
+ locale encoding is GB18030 and one of the characters to be searched is a
+ digit. */
+# undef strpbrk
+# define strpbrk(s,a) \
+ (GL_LINK_WARNING ("strpbrk cannot work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbspbrk if you care about internationalization"), \
+ strpbrk (s, a))
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strpbrk
+# define strpbrk(s,a) \
+ (GL_LINK_WARNING ("strpbrk is unportable - " \
+ "use gnulib module strpbrk for portability"), \
+ strpbrk (s, a))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strspn() assumes the second argument is a list of single-byte characters.
+ Even in this simple case, it cannot work with multibyte strings. */
+# undef strspn
+# define strspn(s,a) \
+ (GL_LINK_WARNING ("strspn cannot work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbsspn if you care about internationalization"), \
+ strspn (s, a))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strrchr() does not work with multibyte strings if the locale encoding is
+ GB18030 and the character to be searched is a digit. */
+# undef strrchr
+# define strrchr(s,c) \
+ (GL_LINK_WARNING ("strrchr cannot work correctly on character strings " \
+ "in some multibyte locales - " \
+ "use mbsrchr if you care about internationalization"), \
+ strrchr (s, c))
+#endif
+
+/* Search the next delimiter (char listed in DELIM) starting at *STRINGP.
+ If one is found, overwrite it with a NUL, and advance *STRINGP
+ to point to the next char after it. Otherwise, set *STRINGP to NULL.
+ If *STRINGP was already NULL, nothing happens.
+ Return the old value of *STRINGP.
+
+ This is a variant of strtok() that is multithread-safe and supports
+ empty fields.
+
+ Caveat: It modifies the original string.
+ Caveat: These functions cannot be used on constant strings.
+ Caveat: The identity of the delimiting character is lost.
+ Caveat: It doesn't work with multibyte strings unless all of the delimiter
+ characters are ASCII characters < 0x30.
+
+ See also strtok_r(). */
+#if @GNULIB_STRSEP@
+# if ! @HAVE_STRSEP@
+extern char *strsep (char **restrict __stringp, char const *restrict __delim);
+# endif
+# if defined GNULIB_POSIXCHECK
+# undef strsep
+# define strsep(s,d) \
+ (GL_LINK_WARNING ("strsep cannot work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbssep if you care about internationalization"), \
+ strsep (s, d))
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strsep
+# define strsep(s,d) \
+ (GL_LINK_WARNING ("strsep is unportable - " \
+ "use gnulib module strsep for portability"), \
+ strsep (s, d))
+#endif
+
+#if @GNULIB_STRSTR@
+# if @REPLACE_STRSTR@
+# define strstr rpl_strstr
+char *strstr (const char *haystack, const char *needle)
+ __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+/* strstr() does not work with multibyte strings if the locale encoding is
+ different from UTF-8:
+ POSIX says that it operates on "strings", and "string" in POSIX is defined
+ as a sequence of bytes, not of characters. */
+# undef strstr
+# define strstr(a,b) \
+ (GL_LINK_WARNING ("strstr is quadratic on many systems, and cannot " \
+ "work correctly on character strings in most " \
+ "multibyte locales - " \
+ "use mbsstr if you care about internationalization, " \
+ "or use strstr if you care about speed"), \
+ strstr (a, b))
+#endif
+
+/* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive
+ comparison. */
+#if @GNULIB_STRCASESTR@
+# if @REPLACE_STRCASESTR@
+# define strcasestr rpl_strcasestr
+# endif
+# if ! @HAVE_STRCASESTR@ || @REPLACE_STRCASESTR@
+extern char *strcasestr (const char *haystack, const char *needle)
+ __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+/* strcasestr() does not work with multibyte strings:
+ It is a glibc extension, and glibc implements it only for unibyte
+ locales. */
+# undef strcasestr
+# define strcasestr(a,b) \
+ (GL_LINK_WARNING ("strcasestr does work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbscasestr if you care about " \
+ "internationalization, or use c-strcasestr if you want " \
+ "a locale independent function"), \
+ strcasestr (a, b))
+#endif
+
+/* Parse S into tokens separated by characters in DELIM.
+ If S is NULL, the saved pointer in SAVE_PTR is used as
+ the next starting point. For example:
+ char s[] = "-abc-=-def";
+ char *sp;
+ x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def"
+ x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL
+ x = strtok_r(NULL, "=", &sp); // x = NULL
+ // s = "abc\0-def\0"
+
+ This is a variant of strtok() that is multithread-safe.
+
+ For the POSIX documentation for this function, see:
+ http://www.opengroup.org/susv3xsh/strtok.html
+
+ Caveat: It modifies the original string.
+ Caveat: These functions cannot be used on constant strings.
+ Caveat: The identity of the delimiting character is lost.
+ Caveat: It doesn't work with multibyte strings unless all of the delimiter
+ characters are ASCII characters < 0x30.
+
+ See also strsep(). */
+#if @GNULIB_STRTOK_R@
+# if ! @HAVE_DECL_STRTOK_R@
+extern char *strtok_r (char *restrict s, char const *restrict delim,
+ char **restrict save_ptr);
+# endif
+# if defined GNULIB_POSIXCHECK
+# undef strtok_r
+# define strtok_r(s,d,p) \
+ (GL_LINK_WARNING ("strtok_r cannot work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbstok_r if you care about internationalization"), \
+ strtok_r (s, d, p))
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtok_r
+# define strtok_r(s,d,p) \
+ (GL_LINK_WARNING ("strtok_r is unportable - " \
+ "use gnulib module strtok_r for portability"), \
+ strtok_r (s, d, p))
+#endif
+
+
+/* The following functions are not specified by POSIX. They are gnulib
+ extensions. */
+
+#if @GNULIB_MBSLEN@
+/* Return the number of multibyte characters in the character string STRING.
+ This considers multibyte characters, unlike strlen, which counts bytes. */
+extern size_t mbslen (const char *string);
+#endif
+
+#if @GNULIB_MBSNLEN@
+/* Return the number of multibyte characters in the character string starting
+ at STRING and ending at STRING + LEN. */
+extern size_t mbsnlen (const char *string, size_t len);
+#endif
+
+#if @GNULIB_MBSCHR@
+/* Locate the first single-byte character C in the character string STRING,
+ and return a pointer to it. Return NULL if C is not found in STRING.
+ Unlike strchr(), this function works correctly in multibyte locales with
+ encodings such as GB18030. */
+# define mbschr rpl_mbschr /* avoid collision with HP-UX function */
+extern char * mbschr (const char *string, int c);
+#endif
+
+#if @GNULIB_MBSRCHR@
+/* Locate the last single-byte character C in the character string STRING,
+ and return a pointer to it. Return NULL if C is not found in STRING.
+ Unlike strrchr(), this function works correctly in multibyte locales with
+ encodings such as GB18030. */
+# define mbsrchr rpl_mbsrchr /* avoid collision with HP-UX function */
+extern char * mbsrchr (const char *string, int c);
+#endif
+
+#if @GNULIB_MBSSTR@
+/* Find the first occurrence of the character string NEEDLE in the character
+ string HAYSTACK. Return NULL if NEEDLE is not found in HAYSTACK.
+ Unlike strstr(), this function works correctly in multibyte locales with
+ encodings different from UTF-8. */
+extern char * mbsstr (const char *haystack, const char *needle);
+#endif
+
+#if @GNULIB_MBSCASECMP@
+/* Compare the character strings S1 and S2, ignoring case, returning less than,
+ equal to or greater than zero if S1 is lexicographically less than, equal to
+ or greater than S2.
+ Note: This function may, in multibyte locales, return 0 for strings of
+ different lengths!
+ Unlike strcasecmp(), this function works correctly in multibyte locales. */
+extern int mbscasecmp (const char *s1, const char *s2);
+#endif
+
+#if @GNULIB_MBSNCASECMP@
+/* Compare the initial segment of the character string S1 consisting of at most
+ N characters with the initial segment of the character string S2 consisting
+ of at most N characters, ignoring case, returning less than, equal to or
+ greater than zero if the initial segment of S1 is lexicographically less
+ than, equal to or greater than the initial segment of S2.
+ Note: This function may, in multibyte locales, return 0 for initial segments
+ of different lengths!
+ Unlike strncasecmp(), this function works correctly in multibyte locales.
+ But beware that N is not a byte count but a character count! */
+extern int mbsncasecmp (const char *s1, const char *s2, size_t n);
+#endif
+
+#if @GNULIB_MBSPCASECMP@
+/* Compare the initial segment of the character string STRING consisting of
+ at most mbslen (PREFIX) characters with the character string PREFIX,
+ ignoring case, returning less than, equal to or greater than zero if this
+ initial segment is lexicographically less than, equal to or greater than
+ PREFIX.
+ Note: This function may, in multibyte locales, return 0 if STRING is of
+ smaller length than PREFIX!
+ Unlike strncasecmp(), this function works correctly in multibyte
+ locales. */
+extern char * mbspcasecmp (const char *string, const char *prefix);
+#endif
+
+#if @GNULIB_MBSCASESTR@
+/* Find the first occurrence of the character string NEEDLE in the character
+ string HAYSTACK, using case-insensitive comparison.
+ Note: This function may, in multibyte locales, return success even if
+ strlen (haystack) < strlen (needle) !
+ Unlike strcasestr(), this function works correctly in multibyte locales. */
+extern char * mbscasestr (const char *haystack, const char *needle);
+#endif
+
+#if @GNULIB_MBSCSPN@
+/* Find the first occurrence in the character string STRING of any character
+ in the character string ACCEPT. Return the number of bytes from the
+ beginning of the string to this occurrence, or to the end of the string
+ if none exists.
+ Unlike strcspn(), this function works correctly in multibyte locales. */
+extern size_t mbscspn (const char *string, const char *accept);
+#endif
+
+#if @GNULIB_MBSPBRK@
+/* Find the first occurrence in the character string STRING of any character
+ in the character string ACCEPT. Return the pointer to it, or NULL if none
+ exists.
+ Unlike strpbrk(), this function works correctly in multibyte locales. */
+# define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */
+extern char * mbspbrk (const char *string, const char *accept);
+#endif
+
+#if @GNULIB_MBSSPN@
+/* Find the first occurrence in the character string STRING of any character
+ not in the character string REJECT. Return the number of bytes from the
+ beginning of the string to this occurrence, or to the end of the string
+ if none exists.
+ Unlike strspn(), this function works correctly in multibyte locales. */
+extern size_t mbsspn (const char *string, const char *reject);
+#endif
+
+#if @GNULIB_MBSSEP@
+/* Search the next delimiter (multibyte character listed in the character
+ string DELIM) starting at the character string *STRINGP.
+ If one is found, overwrite it with a NUL, and advance *STRINGP to point
+ to the next multibyte character after it. Otherwise, set *STRINGP to NULL.
+ If *STRINGP was already NULL, nothing happens.
+ Return the old value of *STRINGP.
+
+ This is a variant of mbstok_r() that supports empty fields.
+
+ Caveat: It modifies the original string.
+ Caveat: These functions cannot be used on constant strings.
+ Caveat: The identity of the delimiting character is lost.
+
+ See also mbstok_r(). */
+extern char * mbssep (char **stringp, const char *delim);
+#endif
+
+#if @GNULIB_MBSTOK_R@
+/* Parse the character string STRING into tokens separated by characters in
+ the character string DELIM.
+ If STRING is NULL, the saved pointer in SAVE_PTR is used as
+ the next starting point. For example:
+ char s[] = "-abc-=-def";
+ char *sp;
+ x = mbstok_r(s, "-", &sp); // x = "abc", sp = "=-def"
+ x = mbstok_r(NULL, "-=", &sp); // x = "def", sp = NULL
+ x = mbstok_r(NULL, "=", &sp); // x = NULL
+ // s = "abc\0-def\0"
+
+ Caveat: It modifies the original string.
+ Caveat: These functions cannot be used on constant strings.
+ Caveat: The identity of the delimiting character is lost.
+
+ See also mbssep(). */
+extern char * mbstok_r (char *string, const char *delim, char **save_ptr);
+#endif
+
+/* Map any int, typically from errno, into an error message. */
+#if @GNULIB_STRERROR@
+# if @REPLACE_STRERROR@
+# undef strerror
+# define strerror rpl_strerror
+extern char *strerror (int);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strerror
+# define strerror(e) \
+ (GL_LINK_WARNING ("strerror is unportable - " \
+ "use gnulib module strerror to guarantee non-NULL result"), \
+ strerror (e))
+#endif
+
+#if @GNULIB_STRSIGNAL@
+# if @REPLACE_STRSIGNAL@
+# define strsignal rpl_strsignal
+# endif
+# if ! @HAVE_DECL_STRSIGNAL@ || @REPLACE_STRSIGNAL@
+extern char *strsignal (int __sig);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strsignal
+# define strsignal(a) \
+ (GL_LINK_WARNING ("strsignal is unportable - " \
+ "use gnulib module strsignal for portability"), \
+ strsignal (a))
+#endif
+
+#if @GNULIB_STRVERSCMP@
+# if !@HAVE_STRVERSCMP@
+extern int strverscmp (const char *, const char *);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strverscmp
+# define strverscmp(a, b) \
+ (GL_LINK_WARNING ("strverscmp is unportable - " \
+ "use gnulib module strverscmp for portability"), \
+ strverscmp (a, b))
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_STRING_H */
+#endif /* _GL_STRING_H */
diff --git a/lib/unicase.h b/lib/unicase.h
new file mode 100644
index 00000000..e360ef44
--- /dev/null
+++ b/lib/unicase.h
@@ -0,0 +1,457 @@
+/* Unicode character case mappings.
+ Copyright (C) 2002, 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _UNICASE_H
+#define _UNICASE_H
+
+#include "unitypes.h"
+
+/* Get bool. */
+#include <unistring/stdbool.h>
+
+/* Get size_t. */
+#include <stddef.h>
+
+/* Get uninorm_t. */
+#include "uninorm.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ========================================================================= */
+
+/* Character case mappings.
+ These mappings are locale and context independent.
+ WARNING! These functions are not sufficient for languages such as German.
+ Better use the functions below that treat an entire string at once and are
+ language aware. */
+
+/* Return the uppercase mapping of a Unicode character. */
+extern ucs4_t
+ uc_toupper (ucs4_t uc);
+
+/* Return the lowercase mapping of a Unicode character. */
+extern ucs4_t
+ uc_tolower (ucs4_t uc);
+
+/* Return the titlecase mapping of a Unicode character. */
+extern ucs4_t
+ uc_totitle (ucs4_t uc);
+
+/* ========================================================================= */
+
+/* String case mappings. */
+
+/* These functions are locale dependent. The iso639_language argument
+ identifies the language (e.g. "tr" for Turkish). NULL means to use
+ locale independent case mappings. */
+
+/* Return the ISO 639 language code of the current locale.
+ Return "" if it is unknown, or in the "C" locale. */
+extern const char *
+ uc_locale_language (void);
+
+/* Conventions:
+
+ All functions prefixed with u8_ operate on UTF-8 encoded strings.
+ Their unit is an uint8_t (1 byte).
+
+ All functions prefixed with u16_ operate on UTF-16 encoded strings.
+ Their unit is an uint16_t (a 2-byte word).
+
+ All functions prefixed with u32_ operate on UCS-4 encoded strings.
+ Their unit is an uint32_t (a 4-byte word).
+
+ All argument pairs (s, n) denote a Unicode string s[0..n-1] with exactly
+ n units.
+
+ Functions returning a string result take a (resultbuf, lengthp) argument
+ pair. If resultbuf is not NULL and the result fits into *lengthp units,
+ it is put in resultbuf, and resultbuf is returned. Otherwise, a freshly
+ allocated string is returned. In both cases, *lengthp is set to the
+ length (number of units) of the returned string. In case of error,
+ NULL is returned and errno is set. */
+
+/* Return the uppercase mapping of a string.
+ The nf argument identifies the normalization form to apply after the
+ case-mapping. It can also be NULL, for no normalization. */
+extern uint8_t *
+ u8_toupper (const uint8_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint8_t *resultbuf, size_t *lengthp);
+extern uint16_t *
+ u16_toupper (const uint16_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint16_t *resultbuf, size_t *lengthp);
+extern uint32_t *
+ u32_toupper (const uint32_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint32_t *resultbuf, size_t *lengthp);
+
+/* Return the lowercase mapping of a string.
+ The nf argument identifies the normalization form to apply after the
+ case-mapping. It can also be NULL, for no normalization. */
+extern uint8_t *
+ u8_tolower (const uint8_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint8_t *resultbuf, size_t *lengthp);
+extern uint16_t *
+ u16_tolower (const uint16_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint16_t *resultbuf, size_t *lengthp);
+extern uint32_t *
+ u32_tolower (const uint32_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint32_t *resultbuf, size_t *lengthp);
+
+/* Return the titlecase mapping of a string.
+ The nf argument identifies the normalization form to apply after the
+ case-mapping. It can also be NULL, for no normalization. */
+extern uint8_t *
+ u8_totitle (const uint8_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint8_t *resultbuf, size_t *lengthp);
+extern uint16_t *
+ u16_totitle (const uint16_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint16_t *resultbuf, size_t *lengthp);
+extern uint32_t *
+ u32_totitle (const uint32_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint32_t *resultbuf, size_t *lengthp);
+
+/* The case-mapping context given by a prefix string. */
+typedef struct casing_prefix_context
+ {
+ /* These fields are private, undocumented. */
+ uint32_t last_char_except_ignorable;
+ uint32_t last_char_normal_or_above;
+ }
+ casing_prefix_context_t;
+/* The case-mapping context of the empty prefix string. */
+extern LIBUNISTRING_DLL_VARIABLE const casing_prefix_context_t unicase_empty_prefix_context;
+/* Return the case-mapping context of a given prefix string. */
+extern casing_prefix_context_t
+ u8_casing_prefix_context (const uint8_t *s, size_t n);
+extern casing_prefix_context_t
+ u16_casing_prefix_context (const uint16_t *s, size_t n);
+extern casing_prefix_context_t
+ u32_casing_prefix_context (const uint32_t *s, size_t n);
+/* Return the case-mapping context of the prefix concat(A, S), given the
+ case-mapping context of the prefix A. */
+extern casing_prefix_context_t
+ u8_casing_prefixes_context (const uint8_t *s, size_t n,
+ casing_prefix_context_t a_context);
+extern casing_prefix_context_t
+ u16_casing_prefixes_context (const uint16_t *s, size_t n,
+ casing_prefix_context_t a_context);
+extern casing_prefix_context_t
+ u32_casing_prefixes_context (const uint32_t *s, size_t n,
+ casing_prefix_context_t a_context);
+
+/* The case-mapping context given by a suffix string. */
+typedef struct casing_suffix_context
+ {
+ /* These fields are private, undocumented. */
+ uint32_t first_char_except_ignorable;
+ uint32_t bits;
+ }
+ casing_suffix_context_t;
+/* The case-mapping context of the empty suffix string. */
+extern LIBUNISTRING_DLL_VARIABLE const casing_suffix_context_t unicase_empty_suffix_context;
+/* Return the case-mapping context of a given suffix string. */
+extern casing_suffix_context_t
+ u8_casing_suffix_context (const uint8_t *s, size_t n);
+extern casing_suffix_context_t
+ u16_casing_suffix_context (const uint16_t *s, size_t n);
+extern casing_suffix_context_t
+ u32_casing_suffix_context (const uint32_t *s, size_t n);
+/* Return the case-mapping context of the suffix concat(S, A), given the
+ case-mapping context of the suffix A. */
+extern casing_suffix_context_t
+ u8_casing_suffixes_context (const uint8_t *s, size_t n,
+ casing_suffix_context_t a_context);
+extern casing_suffix_context_t
+ u16_casing_suffixes_context (const uint16_t *s, size_t n,
+ casing_suffix_context_t a_context);
+extern casing_suffix_context_t
+ u32_casing_suffixes_context (const uint32_t *s, size_t n,
+ casing_suffix_context_t a_context);
+
+/* Return the uppercase mapping of a string that is surrounded by a prefix
+ and a suffix. */
+extern uint8_t *
+ u8_ct_toupper (const uint8_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ uint8_t *resultbuf, size_t *lengthp);
+extern uint16_t *
+ u16_ct_toupper (const uint16_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ uint16_t *resultbuf, size_t *lengthp);
+extern uint32_t *
+ u32_ct_toupper (const uint32_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ uint32_t *resultbuf, size_t *lengthp);
+
+/* Return the lowercase mapping of a string that is surrounded by a prefix
+ and a suffix. */
+extern uint8_t *
+ u8_ct_tolower (const uint8_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ uint8_t *resultbuf, size_t *lengthp);
+extern uint16_t *
+ u16_ct_tolower (const uint16_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ uint16_t *resultbuf, size_t *lengthp);
+extern uint32_t *
+ u32_ct_tolower (const uint32_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ uint32_t *resultbuf, size_t *lengthp);
+
+/* Return the titlecase mapping of a string that is surrounded by a prefix
+ and a suffix. */
+extern uint8_t *
+ u8_ct_totitle (const uint8_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ uint8_t *resultbuf, size_t *lengthp);
+extern uint16_t *
+ u16_ct_totitle (const uint16_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ uint16_t *resultbuf, size_t *lengthp);
+extern uint32_t *
+ u32_ct_totitle (const uint32_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ uint32_t *resultbuf, size_t *lengthp);
+
+/* Return the case folded string.
+ Comparing uN_casefold (S1) and uN_casefold (S2) with uN_cmp2() is equivalent
+ to comparing S1 and S2 with uN_casecmp().
+ The nf argument identifies the normalization form to apply after the
+ case-mapping. It can also be NULL, for no normalization. */
+extern uint8_t *
+ u8_casefold (const uint8_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint8_t *resultbuf, size_t *lengthp);
+extern uint16_t *
+ u16_casefold (const uint16_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint16_t *resultbuf, size_t *lengthp);
+extern uint32_t *
+ u32_casefold (const uint32_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint32_t *resultbuf, size_t *lengthp);
+/* Likewise, for a string that is surrounded by a prefix and a suffix. */
+extern uint8_t *
+ u8_ct_casefold (const uint8_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ uint8_t *resultbuf, size_t *lengthp);
+extern uint16_t *
+ u16_ct_casefold (const uint16_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ uint16_t *resultbuf, size_t *lengthp);
+extern uint32_t *
+ u32_ct_casefold (const uint32_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ uint32_t *resultbuf, size_t *lengthp);
+
+/* Compare S1 and S2, ignoring differences in case and normalization.
+ The nf argument identifies the normalization form to apply after the
+ case-mapping. It can also be NULL, for no normalization.
+ If successful, set *RESULTP to -1 if S1 < S2, 0 if S1 = S2, 1 if S1 > S2, and
+ return 0. Upon failure, return -1 with errno set. */
+extern int
+ u8_casecmp (const uint8_t *s1, size_t n1,
+ const uint8_t *s2, size_t n2,
+ const char *iso639_language, uninorm_t nf, int *resultp);
+extern int
+ u16_casecmp (const uint16_t *s1, size_t n1,
+ const uint16_t *s2, size_t n2,
+ const char *iso639_language, uninorm_t nf, int *resultp);
+extern int
+ u32_casecmp (const uint32_t *s1, size_t n1,
+ const uint32_t *s2, size_t n2,
+ const char *iso639_language, uninorm_t nf, int *resultp);
+extern int
+ ulc_casecmp (const char *s1, size_t n1,
+ const char *s2, size_t n2,
+ const char *iso639_language, uninorm_t nf, int *resultp);
+
+/* Convert the string S of length N to a NUL-terminated byte sequence, in such
+ a way that comparing uN_casexfrm (S1) and uN_casexfrm (S2) with the gnulib
+ function memcmp2() is equivalent to comparing S1 and S2 with uN_casecoll().
+ NF must be either UNINORM_NFC, UNINORM_NFKC, or NULL for no normalization. */
+extern char *
+ u8_casexfrm (const uint8_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf, char *resultbuf, size_t *lengthp);
+extern char *
+ u16_casexfrm (const uint16_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf, char *resultbuf, size_t *lengthp);
+extern char *
+ u32_casexfrm (const uint32_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf, char *resultbuf, size_t *lengthp);
+extern char *
+ ulc_casexfrm (const char *s, size_t n, const char *iso639_language,
+ uninorm_t nf, char *resultbuf, size_t *lengthp);
+
+/* Compare S1 and S2, ignoring differences in case and normalization, using the
+ collation rules of the current locale.
+ The nf argument identifies the normalization form to apply after the
+ case-mapping. It must be either UNINORM_NFC or UNINORM_NFKC. It can also
+ be NULL, for no normalization.
+ If successful, set *RESULTP to -1 if S1 < S2, 0 if S1 = S2, 1 if S1 > S2, and
+ return 0. Upon failure, return -1 with errno set. */
+extern int
+ u8_casecoll (const uint8_t *s1, size_t n1,
+ const uint8_t *s2, size_t n2,
+ const char *iso639_language, uninorm_t nf, int *resultp);
+extern int
+ u16_casecoll (const uint16_t *s1, size_t n1,
+ const uint16_t *s2, size_t n2,
+ const char *iso639_language, uninorm_t nf, int *resultp);
+extern int
+ u32_casecoll (const uint32_t *s1, size_t n1,
+ const uint32_t *s2, size_t n2,
+ const char *iso639_language, uninorm_t nf, int *resultp);
+extern int
+ ulc_casecoll (const char *s1, size_t n1,
+ const char *s2, size_t n2,
+ const char *iso639_language, uninorm_t nf, int *resultp);
+
+
+/* Set *RESULTP to true if mapping NFD(S) to upper case is a no-op, or to false
+ otherwise, and return 0. Upon failure, return -1 with errno set. */
+extern int
+ u8_is_uppercase (const uint8_t *s, size_t n,
+ const char *iso639_language,
+ bool *resultp);
+extern int
+ u16_is_uppercase (const uint16_t *s, size_t n,
+ const char *iso639_language,
+ bool *resultp);
+extern int
+ u32_is_uppercase (const uint32_t *s, size_t n,
+ const char *iso639_language,
+ bool *resultp);
+
+/* Set *RESULTP to true if mapping NFD(S) to lower case is a no-op, or to false
+ otherwise, and return 0. Upon failure, return -1 with errno set. */
+extern int
+ u8_is_lowercase (const uint8_t *s, size_t n,
+ const char *iso639_language,
+ bool *resultp);
+extern int
+ u16_is_lowercase (const uint16_t *s, size_t n,
+ const char *iso639_language,
+ bool *resultp);
+extern int
+ u32_is_lowercase (const uint32_t *s, size_t n,
+ const char *iso639_language,
+ bool *resultp);
+
+/* Set *RESULTP to true if mapping NFD(S) to title case is a no-op, or to false
+ otherwise, and return 0. Upon failure, return -1 with errno set. */
+extern int
+ u8_is_titlecase (const uint8_t *s, size_t n,
+ const char *iso639_language,
+ bool *resultp);
+extern int
+ u16_is_titlecase (const uint16_t *s, size_t n,
+ const char *iso639_language,
+ bool *resultp);
+extern int
+ u32_is_titlecase (const uint32_t *s, size_t n,
+ const char *iso639_language,
+ bool *resultp);
+
+/* Set *RESULTP to true if applying case folding to NFD(S) is a no-op, or to
+ false otherwise, and return 0. Upon failure, return -1 with errno set. */
+extern int
+ u8_is_casefolded (const uint8_t *s, size_t n,
+ const char *iso639_language,
+ bool *resultp);
+extern int
+ u16_is_casefolded (const uint16_t *s, size_t n,
+ const char *iso639_language,
+ bool *resultp);
+extern int
+ u32_is_casefolded (const uint32_t *s, size_t n,
+ const char *iso639_language,
+ bool *resultp);
+
+/* Set *RESULTP to true if case matters for S, that is, if mapping NFD(S) to
+ either upper case or lower case or title case is not a no-op.
+ Set *RESULTP to false if NFD(S) maps to itself under the upper case mapping,
+ under the lower case mapping, and under the title case mapping; in other
+ words, when NFD(S) consists entirely of caseless characters.
+ Upon failure, return -1 with errno set. */
+extern int
+ u8_is_cased (const uint8_t *s, size_t n,
+ const char *iso639_language,
+ bool *resultp);
+extern int
+ u16_is_cased (const uint16_t *s, size_t n,
+ const char *iso639_language,
+ bool *resultp);
+extern int
+ u32_is_cased (const uint32_t *s, size_t n,
+ const char *iso639_language,
+ bool *resultp);
+
+
+/* ========================================================================= */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UNICASE_H */
diff --git a/lib/unicase/cased.c b/lib/unicase/cased.c
new file mode 100644
index 00000000..5fbf4cb7
--- /dev/null
+++ b/lib/unicase/cased.c
@@ -0,0 +1,53 @@
+/* Test whether a Unicode character is cased.
+ Copyright (C) 2002, 2006-2007, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "caseprop.h"
+
+/* Quoting the Unicode standard:
+ Definition: A character is defined to be "cased" if it has the Lowercase
+ or Uppercase property or has a General_Category value of
+ Titlecase_Letter. */
+
+#if 0
+
+#include "unictype.h"
+
+bool
+uc_is_cased (ucs4_t uc)
+{
+ return (uc_is_property_lowercase (uc)
+ || uc_is_property_uppercase (uc)
+ || uc_is_general_category (uc, UC_TITLECASE_LETTER));
+}
+
+#else
+
+#include "unictype/bitmap.h"
+
+/* Define u_casing_property_cased table. */
+#include "cased.h"
+
+bool
+uc_is_cased (ucs4_t uc)
+{
+ return bitmap_lookup (&u_casing_property_cased, uc);
+}
+
+#endif
diff --git a/lib/unicase/cased.h b/lib/unicase/cased.h
new file mode 100644
index 00000000..ea2c2eaa
--- /dev/null
+++ b/lib/unicase/cased.h
@@ -0,0 +1,343 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Casing Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[15 << 4];
+ }
+u_casing_property_cased =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 208,
+ 3 + 256 * sizeof (short) / sizeof (int) + 224,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x07FFFFFE, 0x07FFFFFE,
+ 0x00000000, 0x04200400, 0xFF7FFFFF, 0xFF7FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xF7FFFFFF, 0xFFFFFFF0, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFEFFFFF, 0x01FFFFFF, 0x00000003, 0x0000001F,
+ 0x00000000, 0x00000000, 0x00000020, 0x3CCF0000,
+ 0xFFFFD740, 0xFFFFFFFB, 0xFFFFFFFF, 0xFFBFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFC03, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFE000F, 0x007FFFFF, 0xFFFFFFFE,
+ 0x000000FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFFFFFF, 0x0000003F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
+ 0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x80020000,
+ 0x001F0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3E2FFC84, 0xF21FBD50, 0x000043E0, 0xFFFFFFFF,
+ 0x00000018, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFC00000, 0xFFFFFFFF, 0x000003FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF7FFF, 0x7FFFFFFF, 0x3FFEFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000001F,
+ 0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0x00003FFC,
+ 0x00FFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFFFFFC, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000018FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00F8007F, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x07FFFFFE, 0x07FFFFFE, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFDFFFFF, 0xFFFFFFFF,
+ 0xDFFFFFFF, 0xEBFFDE64, 0xFFFFFFEF, 0xFFFFFFFF,
+ 0xDFDFE7BF, 0x7BFFFFFF, 0xFFFDFC5F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF3F, 0xF7FFFFFD, 0xF7FFFFFF,
+ 0xFFDFFFFF, 0xFFDFFFFF, 0xFFFF7FFF, 0xFFFF7FFF,
+ 0xFFFFFDFF, 0xFFFFFDFF, 0x00000FF7, 0x00000000
+ }
+};
diff --git a/lib/unicase/casefold.h b/lib/unicase/casefold.h
new file mode 100644
index 00000000..d1f434ca
--- /dev/null
+++ b/lib/unicase/casefold.h
@@ -0,0 +1,22 @@
+/* Casefolding of Unicode characters.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include "unitypes.h"
+
+/* Return the casefold mapping of a Unicode character. */
+extern ucs4_t
+ uc_tocasefold (ucs4_t uc);
diff --git a/lib/unicase/caseprop.h b/lib/unicase/caseprop.h
new file mode 100644
index 00000000..f84453ec
--- /dev/null
+++ b/lib/unicase/caseprop.h
@@ -0,0 +1,32 @@
+/* Case related properties of Unicode characters.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <stdbool.h>
+#include "unitypes.h"
+
+/* Determine whether a character is "cased" according to the Unicode Standard,
+ <http://www.unicode.org/versions/Unicode5.0.0/ch03.pdf>, section 3.13,
+ definition D120. */
+extern bool
+ uc_is_cased (ucs4_t uc);
+
+/* Determine whether a character is "case-ignorable"
+ according to the Unicode Standard,
+ <http://www.unicode.org/versions/Unicode5.0.0/ch03.pdf>, section 3.13,
+ definition D121. */
+extern bool
+ uc_is_case_ignorable (ucs4_t uc);
diff --git a/lib/unicase/context.h b/lib/unicase/context.h
new file mode 100644
index 00000000..6a35798d
--- /dev/null
+++ b/lib/unicase/context.h
@@ -0,0 +1,65 @@
+/* Case-mapping contexts of UTF-8/UTF-16/UTF-32 substring.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+
+/* The context of a prefix string combines the information of the "Before C"
+ conditions of the Unicode Standard,
+ <http://www.unicode.org/versions/Unicode5.0.0/ch03.pdf>, section 3.13,
+ table 3-14 "Context Specification for Casing".
+
+ casing_prefix_context_t contains the following fields:
+
+ // Helper for evaluating the FINAL_SIGMA condition:
+ // Last character that was not case-ignorable.
+ ucs4_t last_char_except_ignorable;
+
+ // Helper for evaluating the AFTER_SOFT_DOTTED and AFTER_I conditions:
+ // Last character that was of combining class 230 ("Above") or 0.
+ ucs4_t last_char_normal_or_above;
+
+ Three bits would be sufficient to carry the context information, but
+ that would require to invoke uc_is_cased and uc_is_property_soft_dotted
+ ahead of time, more often than actually needed. */
+
+
+/* The context of a suffix string combines the information of the "After C"
+ conditions of the Unicode Standard,
+ <http://www.unicode.org/versions/Unicode5.0.0/ch03.pdf>, section 3.13,
+ table 3-14 "Context Specification for Casing".
+
+ casing_suffix_context_t contains the following fields:
+
+ // For evaluating the FINAL_SIGMA condition:
+ // First character that was not case-ignorable.
+ ucs4_t first_char_except_ignorable;
+
+ // For evaluating the MORE_ABOVE condition:
+ // Bit 0 is set if the suffix contains a character of combining class
+ // 230 (Above) with no character of combining class 0 or 230 (Above)
+ // before it.
+ //
+ // For evaluating the BEFORE_DOT condition:
+ // Bit 1 is set if the suffix contains a COMBINING DOT ABOVE (U+0307)
+ // with no character of combining class 0 or 230 (Above) before it.
+ //
+ uint32_t bits;
+
+ Three bits would be sufficient to carry the context information, but
+ that would require to invoke uc_is_cased ahead of time, more often than
+ actually needed. */
+#define SCC_MORE_ABOVE_MASK 1
+#define SCC_BEFORE_DOT_MASK 2
diff --git a/lib/unicase/empty-prefix-context.c b/lib/unicase/empty-prefix-context.c
new file mode 100644
index 00000000..3c46e9e3
--- /dev/null
+++ b/lib/unicase/empty-prefix-context.c
@@ -0,0 +1,27 @@
+/* Case-mapping context of empty prefix string.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+const casing_prefix_context_t unicase_empty_prefix_context =
+ {
+ 0xFFFD /* last_char_except_ignorable */,
+ 0xFFFD /* last_char_normal_or_above */
+ };
diff --git a/lib/unicase/empty-suffix-context.c b/lib/unicase/empty-suffix-context.c
new file mode 100644
index 00000000..4e00bffe
--- /dev/null
+++ b/lib/unicase/empty-suffix-context.c
@@ -0,0 +1,27 @@
+/* Case-mapping context of empty suffix string.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+const casing_suffix_context_t unicase_empty_suffix_context =
+ {
+ 0xFFFD /* first_char_except_ignorable */,
+ 0 /* bits */
+ };
diff --git a/lib/unicase/ignorable.c b/lib/unicase/ignorable.c
new file mode 100644
index 00000000..84b2634c
--- /dev/null
+++ b/lib/unicase/ignorable.c
@@ -0,0 +1,71 @@
+/* Test whether a Unicode character is case-ignorable.
+ Copyright (C) 2002, 2006-2007, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "caseprop.h"
+
+/* Quoting the Unicode standard:
+ Definition: A character is defined to be "case-ignorable" if it has the
+ value MidLetter {or the value MidNumLet} for the Word_Break property or
+ its General_Category is one of Nonspacing_Mark (Mn), Enclosing_Mark (Me),
+ Format (Cf), Modifier_Letter (Lm), or Modifier_Symbol (Sk).
+ The text marked in braces was added in Unicode 5.1.0, see
+ <http://www.unicode.org/versions/Unicode5.1.0/> section "Update of
+ Definition of case-ignorable". */
+/* Since this predicate is only used for the "Before C" and "After C"
+ conditions of FINAL_SIGMA, we exclude the "cased" characters here.
+ This simplifies the evaluation of the regular expressions
+ \p{cased} (\p{case-ignorable})* C
+ and
+ C (\p{case-ignorable})* \p{cased}
+ */
+
+#if 0
+
+#include "unictype.h"
+#include "uniwbrk.h"
+
+bool
+uc_is_case_ignorable (ucs4_t uc)
+{
+ int wbp = uc_wordbreak_property (uc);
+
+ return (wbp == WBP_MIDLETTER || wbp == WBP_MIDNUMLET
+ || uc_is_general_category_withtable (uc, UC_CATEGORY_MASK_Mn
+ | UC_CATEGORY_MASK_Me
+ | UC_CATEGORY_MASK_Cf
+ | UC_CATEGORY_MASK_Lm
+ | UC_CATEGORY_MASK_Sk))
+ && !uc_is_cased (uc);
+}
+
+#else
+
+#include "unictype/bitmap.h"
+
+/* Define u_casing_property_case_ignorable table. */
+#include "ignorable.h"
+
+bool
+uc_is_case_ignorable (ucs4_t uc)
+{
+ return bitmap_lookup (&u_casing_property_case_ignorable, uc);
+}
+
+#endif
diff --git a/lib/unicase/ignorable.h b/lib/unicase/ignorable.h
new file mode 100644
index 00000000..3b29290f
--- /dev/null
+++ b/lib/unicase/ignorable.h
@@ -0,0 +1,544 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Casing Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[15];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[30 << 4];
+ }
+u_casing_property_case_ignorable =
+{
+ { 15 },
+ {
+ 16 * sizeof (int) / sizeof (short) + 0,
+ 16 * sizeof (int) / sizeof (short) + 128,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ 16 + 384 * sizeof (short) / sizeof (int) + 0,
+ 16 + 384 * sizeof (short) / sizeof (int) + 16,
+ 16 + 384 * sizeof (short) / sizeof (int) + 32,
+ 16 + 384 * sizeof (short) / sizeof (int) + 48,
+ 16 + 384 * sizeof (short) / sizeof (int) + 64,
+ 16 + 384 * sizeof (short) / sizeof (int) + 80,
+ 16 + 384 * sizeof (short) / sizeof (int) + 96,
+ 16 + 384 * sizeof (short) / sizeof (int) + 112,
+ 16 + 384 * sizeof (short) / sizeof (int) + 128,
+ 16 + 384 * sizeof (short) / sizeof (int) + 144,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 160,
+ 16 + 384 * sizeof (short) / sizeof (int) + 176,
+ 16 + 384 * sizeof (short) / sizeof (int) + 192,
+ 16 + 384 * sizeof (short) / sizeof (int) + 208,
+ 16 + 384 * sizeof (short) / sizeof (int) + 224,
+ 16 + 384 * sizeof (short) / sizeof (int) + 240,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 256,
+ 16 + 384 * sizeof (short) / sizeof (int) + 272,
+ 16 + 384 * sizeof (short) / sizeof (int) + 288,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 304,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 320,
+ 16 + 384 * sizeof (short) / sizeof (int) + 336,
+ 16 + 384 * sizeof (short) / sizeof (int) + 352,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 368,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 384,
+ 16 + 384 * sizeof (short) / sizeof (int) + 400,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 416,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 432,
+ 16 + 384 * sizeof (short) / sizeof (int) + 448,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 464,
+ -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
+ },
+ {
+ 0x00000000, 0x04004080, 0x40000000, 0x00000001,
+ 0x00000000, 0x0190A100, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFE000000, 0xFFFFFFFC, 0xFFFFFFE0,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFDF, 0x0030FFFF,
+ 0x000000B0, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x000003F8, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x02000000, 0x00000000,
+ 0xFFFE0000, 0xBFFFFFFF, 0x000000B6, 0x00100000,
+ 0x07FF000F, 0x00000000, 0x7FFFF801, 0x00010000,
+ 0x00000000, 0x00000000, 0xFFC00000, 0x00003DFF,
+ 0x00028000, 0xFFFF0000, 0x000007FF, 0x00000000,
+ 0x00000000, 0x0001FFC0, 0x00000000, 0x043FF800,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x10000000, 0x001E21FE, 0x0002000C,
+ 0x00000002, 0x10000000, 0x0000201E, 0x0000000C,
+ 0x00000006, 0x10000000, 0x00023986, 0x00230000,
+ 0x00000006, 0x10000000, 0x000021BE, 0x0000000C,
+ 0x00000002, 0x90000000, 0x0040201E, 0x0000000C,
+ 0x00000004, 0x00000000, 0x00002001, 0x00000000,
+ 0x00000000, 0xC0000000, 0x00603DC1, 0x0000000C,
+ 0x00000000, 0x90000000, 0x00003040, 0x0000000C,
+ 0x00000000, 0x00000000, 0x0000201E, 0x0000000C,
+ 0x00000000, 0x00000000, 0x005C0400, 0x00000000,
+ 0x00000000, 0x07F20000, 0x00007FC0, 0x00000000,
+ 0x00000000, 0x1BF20000, 0x00003F40, 0x00000000,
+ 0x03000000, 0x02A00000, 0x00000000, 0x7FFE0000,
+ 0xFEFF00DF, 0x1FFFFFFF, 0x00000040, 0x00000000,
+ 0x00000000, 0x66FDE000, 0xC3000000, 0x001E0001,
+ 0x00002064, 0x00000000, 0x00000000, 0x10000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x001C0000, 0x001C0000, 0x000C0000, 0x000C0000,
+ 0x00000000, 0x3FB00000, 0x208FFE40, 0x00000000,
+ 0x00003800, 0x00000000, 0x00000008, 0x00000000,
+ 0x00000000, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000000, 0x0E040187, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x01800000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000000F, 0x17D00000, 0x00000004, 0x000FF800,
+ 0x00000003, 0x0000033C, 0x00000000, 0x00000000,
+ 0x00000000, 0x00CFF000, 0x00000000, 0x3F000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0xC000007F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xA0000000, 0xE000E003, 0x6000E000,
+ 0x0300F800, 0x00007C90, 0x00000000, 0x0000FC1F,
+ 0x00000000, 0x00000000, 0xFFFF0000, 0x0001FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00008000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF,
+ 0x00000000, 0x00008000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000020, 0x083EFC00, 0x00000000, 0x00000000,
+ 0x7E000000, 0x00000000, 0x00000000, 0x70000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00001000, 0x00000000, 0x00000000, 0xB0078000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x00000003, 0x00000000, 0x00000000,
+ 0x00000700, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000844, 0x00000060, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000010, 0x00000000,
+ 0x00000000, 0x00003FC0, 0x0003FF80, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00667E00, 0x00001008, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x40000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0008FFFF, 0x0000007F, 0x00240000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x80000000,
+ 0x04004080, 0x40000000, 0x00000001, 0x00010000,
+ 0xC0000000, 0x00000000, 0x00000000, 0x0E000008,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x20000000,
+ 0x0000F06E, 0x87000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFF80380,
+ 0x00000FE7, 0x00003C00, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000001C, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000002, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF
+ }
+};
diff --git a/lib/unicase/invariant.h b/lib/unicase/invariant.h
new file mode 100644
index 00000000..20151433
--- /dev/null
+++ b/lib/unicase/invariant.h
@@ -0,0 +1,45 @@
+/* Internal functions for Unicode character case mappings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <stdbool.h>
+#include <stddef.h>
+
+#include "unitypes.h"
+#include "uninorm.h"
+
+/* Return true if mapping NFD(S) to via MAPPING is a no-op. */
+extern int
+ u8_is_invariant (const uint8_t *s, size_t n,
+ uint8_t * (*mapping) (const uint8_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint8_t *resultbuf, size_t *lengthp),
+ const char *iso639_language,
+ bool *resultp);
+extern int
+ u16_is_invariant (const uint16_t *s, size_t n,
+ uint16_t * (*mapping) (const uint16_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint16_t *resultbuf, size_t *lengthp),
+ const char *iso639_language,
+ bool *resultp);
+extern int
+ u32_is_invariant (const uint32_t *s, size_t n,
+ uint32_t * (*mapping) (const uint32_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint32_t *resultbuf, size_t *lengthp),
+ const char *iso639_language,
+ bool *resultp);
diff --git a/lib/unicase/locale-language.c b/lib/unicase/locale-language.c
new file mode 100644
index 00000000..074baa41
--- /dev/null
+++ b/lib/unicase/locale-language.c
@@ -0,0 +1,55 @@
+/* Language code of current locale.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <locale.h>
+#include <string.h>
+
+#include "localename.h"
+
+#include "unicase/locale-languages.h"
+
+const char *
+uc_locale_language (void)
+{
+ const char *locale_name = gl_locale_name (LC_CTYPE, "LC_CTYPE");
+ const char *p;
+
+ /* Find the end of the language portion. */
+ p = locale_name;
+ while (*p != '\0' && *p != '_' && *p != '.' && *p != '@')
+ p++;
+
+ /* Return a statically allocated pointer to the language portion, so that the
+ caller of this function does not need to free() the result.
+ We could use a dynamically built unification table. But given that the
+ set of possible languages is small, it is easier (and excludes ENOMEM
+ error conditions) to allocate the unification table statically. */
+ if (p != locale_name)
+ {
+ const char *language =
+ uc_locale_languages_lookup (locale_name, p - locale_name);
+ if (language != NULL)
+ return language;
+ }
+
+ return "";
+}
diff --git a/lib/unicase/locale-languages.gperf b/lib/unicase/locale-languages.gperf
new file mode 100644
index 00000000..da0d94e7
--- /dev/null
+++ b/lib/unicase/locale-languages.gperf
@@ -0,0 +1,270 @@
+%language=ANSI-C
+%define hash-function-name uc_locale_language_hash
+%define lookup-function-name uc_locale_languages_lookup
+%compare-lengths
+%compare-strncmp
+%readonly-tables
+%pic
+/* List of languages taken from gettext/gettext-tools/src/lang-table.c
+ on 2009-02-07. */
+%%
+"aa", /* Afar" */
+"ab", /* Abkhazian" */
+"ace", /* Achinese" */
+"ae", /* Avestan" */
+"af", /* Afrikaans" */
+"ak", /* Akan" */
+"am", /* Amharic" */
+"an", /* Aragonese" */
+"ang", /* Old English" */
+"ar", /* Arabic" */
+"as", /* Assamese" */
+"ast", /* Asturian" */
+"av", /* Avaric" */
+"awa", /* Awadhi" */
+"ay", /* Aymara" */
+"az", /* Azerbaijani" */
+"ba", /* Bashkir" */
+"bal", /* Baluchi" */
+"ban", /* Balinese" */
+"be", /* Belarusian" */
+"bej", /* Beja" */
+"bem", /* Bemba" */
+"bg", /* Bulgarian" */
+"bh", /* Bihari" */
+"bho", /* Bhojpuri" */
+"bi", /* Bislama" */
+"bik", /* Bikol" */
+"bin", /* Bini" */
+"bm", /* Bambara" */
+"bn", /* Bengali" */
+"bo", /* Tibetan" */
+"br", /* Breton" */
+"bs", /* Bosnian" */
+"bug", /* Buginese" */
+"ca", /* Catalan" */
+"ce", /* Chechen" */
+"ceb", /* Cebuano" */
+"ch", /* Chamorro" */
+"co", /* Corsican" */
+"cr", /* Cree" */
+"crh", /* Crimean Tatar" */
+"cs", /* Czech" */
+"csb", /* Kashubian" */
+"cu", /* Church Slavic" */
+"cv", /* Chuvash" */
+"cy", /* Welsh" */
+"da", /* Danish" */
+"de", /* German" */
+"din", /* Dinka" */
+"doi", /* Dogri" */
+"dv", /* Divehi" */
+"dz", /* Dzongkha" */
+"ee", /* Ewe" */
+"el", /* Greek" */
+"en", /* English" */
+"eo", /* Esperanto" */
+"es", /* Spanish" */
+"et", /* Estonian" */
+"eu", /* Basque" */
+"fa", /* Persian" */
+"ff", /* Fulah" */
+"fi", /* Finnish" */
+"fil", /* Filipino" */
+"fj", /* Fijian" */
+"fo", /* Faroese" */
+"fon", /* Fon" */
+"fr", /* French" */
+"fur", /* Friulian" */
+"fy", /* Western Frisian" */
+"ga", /* Irish" */
+"gd", /* Scottish Gaelic" */
+"gl", /* Galician" */
+"gn", /* Guarani" */
+"gon", /* Gondi" */
+"gsw", /* Swiss German" */
+"gu", /* Gujarati" */
+"gv", /* Manx" */
+"ha", /* Hausa" */
+"he", /* Hebrew" */
+"hi", /* Hindi" */
+"hil", /* Hiligaynon" */
+"hmn", /* Hmong" */
+"ho", /* Hiri Motu" */
+"hr", /* Croatian" */
+"ht", /* Haitian" */
+"hu", /* Hungarian" */
+"hy", /* Armenian" */
+"hz", /* Herero" */
+"ia", /* Interlingua" */
+"id", /* Indonesian" */
+"ie", /* Interlingue" */
+"ig", /* Igbo" */
+"ii", /* Sichuan Yi" */
+"ik", /* Inupiak" */
+"ilo", /* Iloko" */
+"is", /* Icelandic" */
+"it", /* Italian" */
+"iu", /* Inuktitut" */
+"ja", /* Japanese" */
+"jab", /* Hyam" */
+"jv", /* Javanese" */
+"ka", /* Georgian" */
+"kab", /* Kabyle" */
+"kaj", /* Jju" */
+"kam", /* Kamba" */
+"kbd", /* Kabardian" */
+"kcg", /* Tyap" */
+"kdm", /* Kagoma" */
+"kg", /* Kongo" */
+"ki", /* Kikuyu" */
+"kj", /* Kuanyama" */
+"kk", /* Kazakh" */
+"kl", /* Kalaallisut" */
+"km", /* Central Khmer" */
+"kmb", /* Kimbundu" */
+"kn", /* Kannada" */
+"ko", /* Korean" */
+"kr", /* Kanuri" */
+"kru", /* Kurukh" */
+"ks", /* Kashmiri" */
+"ku", /* Kurdish" */
+"kv", /* Komi" */
+"kw", /* Cornish" */
+"ky", /* Kirghiz" */
+"kok", /* Konkani" */
+"la", /* Latin" */
+"lb", /* Letzeburgesch" */
+"lg", /* Ganda" */
+"li", /* Limburgish" */
+"ln", /* Lingala" */
+"lo", /* Laotian" */
+"lt", /* Lithuanian" */
+"lu", /* Luba-Katanga" */
+"lua", /* Luba-Lulua" */
+"luo", /* Luo" */
+"lv", /* Latvian" */
+"mad", /* Madurese" */
+"mag", /* Magahi" */
+"mai", /* Maithili" */
+"mak", /* Makasar" */
+"man", /* Mandingo" */
+"men", /* Mende" */
+"mg", /* Malagasy" */
+"mh", /* Marshallese" */
+"mi", /* Maori" */
+"min", /* Minangkabau" */
+"mk", /* Macedonian" */
+"ml", /* Malayalam" */
+"mn", /* Mongolian" */
+"mni", /* Manipuri" */
+"mo", /* Moldavian" */
+"mos", /* Mossi" */
+"mr", /* Marathi" */
+"ms", /* Malay" */
+"mt", /* Maltese" */
+"mwr", /* Marwari" */
+"my", /* Burmese" */
+"myn", /* Mayan" */
+"na", /* Nauru" */
+"nap", /* Neapolitan" */
+"nah", /* Nahuatl" */
+"nb", /* Norwegian Bokmal" */
+"nd", /* North Ndebele" */
+"nds", /* Low Saxon" */
+"ne", /* Nepali" */
+"ng", /* Ndonga" */
+"nl", /* Dutch" */
+"nn", /* Norwegian Nynorsk" */
+"no", /* Norwegian" */
+"nr", /* South Ndebele" */
+"nso", /* Northern Sotho" */
+"nv", /* Navajo" */
+"ny", /* Nyanja" */
+"nym", /* Nyamwezi" */
+"nyn", /* Nyankole" */
+"oc", /* Occitan" */
+"oj", /* Ojibwa" */
+"om", /* (Afan) Oromo" */
+"or", /* Oriya" */
+"os", /* Ossetian" */
+"pa", /* Punjabi" */
+"pag", /* Pangasinan" */
+"pam", /* Pampanga" */
+"pap", /* Papiamento" */
+"pbb", /* Páez" */
+"pi", /* Pali" */
+"pl", /* Polish" */
+"ps", /* Pashto" */
+"pt", /* Portuguese" */
+"qu", /* Quechua" */
+"raj", /* Rajasthani" */
+"rm", /* Romansh" */
+"rn", /* Kirundi" */
+"ro", /* Romanian" */
+"ru", /* Russian" */
+"rw", /* Kinyarwanda" */
+"sa", /* Sanskrit" */
+"sas", /* Sasak" */
+"sat", /* Santali" */
+"sc", /* Sardinian" */
+"scn", /* Sicilian" */
+"sd", /* Sindhi" */
+"se", /* Northern Sami" */
+"sg", /* Sango" */
+"shn", /* Shan" */
+"si", /* Sinhala" */
+"sid", /* Sidamo" */
+"sk", /* Slovak" */
+"sl", /* Slovenian" */
+"sm", /* Samoan" */
+"sn", /* Shona" */
+"so", /* Somali" */
+"sq", /* Albanian" */
+"sr", /* Serbian" */
+"srr", /* Serer" */
+"ss", /* Siswati" */
+"st", /* Sesotho" */
+"su", /* Sundanese" */
+"suk", /* Sukuma" */
+"sus", /* Susu" */
+"sv", /* Swedish" */
+"sw", /* Swahili" */
+"ta", /* Tamil" */
+"te", /* Telugu" */
+"tem", /* Timne" */
+"tet", /* Tetum" */
+"tg", /* Tajik" */
+"th", /* Thai" */
+"ti", /* Tigrinya" */
+"tiv", /* Tiv" */
+"tk", /* Turkmen" */
+"tl", /* Tagalog" */
+"tn", /* Setswana" */
+"to", /* Tonga" */
+"tr", /* Turkish" */
+"ts", /* Tsonga" */
+"tt", /* Tatar" */
+"tum", /* Tumbuka" */
+"tw", /* Twi" */
+"ty", /* Tahitian" */
+"ug", /* Uighur" */
+"uk", /* Ukrainian" */
+"umb", /* Umbundu" */
+"ur", /* Urdu" */
+"uz", /* Uzbek" */
+"ve", /* Venda" */
+"vi", /* Vietnamese" */
+"vo", /* Volapuk" */
+"wal", /* Walamo" */
+"war", /* Waray" */
+"wen", /* Sorbian" */
+"wo", /* Wolof" */
+"xh", /* Xhosa" */
+"yao", /* Yao" */
+"yi", /* Yiddish" */
+"yo", /* Yoruba" */
+"za", /* Zhuang" */
+"zh", /* Chinese" */
+"zu", /* Zulu" */
+"zap", /* Zapotec" */
diff --git a/lib/unicase/locale-languages.h b/lib/unicase/locale-languages.h
new file mode 100644
index 00000000..96c241be
--- /dev/null
+++ b/lib/unicase/locale-languages.h
@@ -0,0 +1,1034 @@
+/* ANSI-C code produced by gperf version 3.0.4 */
+/* Command-line: gperf -m 10 ./unicase/locale-languages.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
+
+
+#define TOTAL_KEYWORDS 260
+#define MIN_WORD_LENGTH 2
+#define MAX_WORD_LENGTH 3
+#define MIN_HASH_VALUE 4
+#define MAX_HASH_VALUE 461
+/* maximum key range = 458, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+uc_locale_language_hash (register const char *str, register unsigned int len)
+{
+ static const unsigned short asso_values[] =
+ {
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 4,
+ 48, 12, 35, 124, 222, 107, 187, 191, 145, 241,
+ 11, 73, 0, 114, 4, 66, 213, 88, 2, 25,
+ 31, 209, 10, 160, 157, 154, 247, 175, 96, 462,
+ 0, 34, 49, 227, 52, 187, 245, 462, 207, 231,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462
+ };
+ register int hval = len;
+
+ switch (hval)
+ {
+ default:
+ hval += asso_values[(unsigned char)str[2]+2];
+ /*FALLTHROUGH*/
+ case 2:
+ hval += asso_values[(unsigned char)str[1]+17];
+ /*FALLTHROUGH*/
+ case 1:
+ hval += asso_values[(unsigned char)str[0]+3];
+ break;
+ }
+ return hval;
+}
+
+#ifdef __GNUC__
+__inline
+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+const char *
+uc_locale_languages_lookup (register const char *str, register unsigned int len)
+{
+ struct stringpool_t
+ {
+ char stringpool_str4[sizeof("sq")];
+ char stringpool_str5[sizeof("men")];
+ char stringpool_str6[sizeof("se")];
+ char stringpool_str7[sizeof("man")];
+ char stringpool_str8[sizeof("sa")];
+ char stringpool_str11[sizeof("sat")];
+ char stringpool_str12[sizeof("mi")];
+ char stringpool_str13[sizeof("min")];
+ char stringpool_str14[sizeof("si")];
+ char stringpool_str15[sizeof("wen")];
+ char stringpool_str16[sizeof("be")];
+ char stringpool_str17[sizeof("ka")];
+ char stringpool_str18[sizeof("ba")];
+ char stringpool_str19[sizeof("ban")];
+ char stringpool_str23[sizeof("ki")];
+ char stringpool_str24[sizeof("bi")];
+ char stringpool_str25[sizeof("bin")];
+ char stringpool_str28[sizeof("wal")];
+ char stringpool_str29[sizeof("te")];
+ char stringpool_str30[sizeof("bal")];
+ char stringpool_str31[sizeof("ta")];
+ char stringpool_str32[sizeof("tet")];
+ char stringpool_str33[sizeof("mg")];
+ char stringpool_str35[sizeof("sg")];
+ char stringpool_str36[sizeof("mr")];
+ char stringpool_str37[sizeof("ti")];
+ char stringpool_str38[sizeof("sr")];
+ char stringpool_str39[sizeof("ce")];
+ char stringpool_str40[sizeof("or")];
+ char stringpool_str41[sizeof("ca")];
+ char stringpool_str42[sizeof("mad")];
+ char stringpool_str44[sizeof("kg")];
+ char stringpool_str45[sizeof("bg")];
+ char stringpool_str47[sizeof("kr")];
+ char stringpool_str48[sizeof("br")];
+ char stringpool_str50[sizeof("sid")];
+ char stringpool_str51[sizeof("ms")];
+ char stringpool_str52[sizeof("ae")];
+ char stringpool_str53[sizeof("ss")];
+ char stringpool_str54[sizeof("aa")];
+ char stringpool_str55[sizeof("os")];
+ char stringpool_str56[sizeof("su")];
+ char stringpool_str58[sizeof("tg")];
+ char stringpool_str61[sizeof("tr")];
+ char stringpool_str62[sizeof("ks")];
+ char stringpool_str63[sizeof("bs")];
+ char stringpool_str64[sizeof("ug")];
+ char stringpool_str65[sizeof("ku")];
+ char stringpool_str66[sizeof("kab")];
+ char stringpool_str67[sizeof("ur")];
+ char stringpool_str69[sizeof("tiv")];
+ char stringpool_str71[sizeof("cr")];
+ char stringpool_str72[sizeof("pa")];
+ char stringpool_str73[sizeof("kru")];
+ char stringpool_str75[sizeof("af")];
+ char stringpool_str76[sizeof("ts")];
+ char stringpool_str77[sizeof("pap")];
+ char stringpool_str78[sizeof("pi")];
+ char stringpool_str79[sizeof("la")];
+ char stringpool_str84[sizeof("ar")];
+ char stringpool_str85[sizeof("li")];
+ char stringpool_str86[sizeof("cs")];
+ char stringpool_str88[sizeof("ceb")];
+ char stringpool_str89[sizeof("cu")];
+ char stringpool_str90[sizeof("bem")];
+ char stringpool_str91[sizeof("kam")];
+ char stringpool_str92[sizeof("sd")];
+ char stringpool_str97[sizeof("sas")];
+ char stringpool_str98[sizeof("mo")];
+ char stringpool_str99[sizeof("as")];
+ char stringpool_str100[sizeof("so")];
+ char stringpool_str102[sizeof("ast")];
+ char stringpool_str103[sizeof("tem")];
+ char stringpool_str106[sizeof("lg")];
+ char stringpool_str108[sizeof("wo")];
+ char stringpool_str109[sizeof("ko")];
+ char stringpool_str110[sizeof("bo")];
+ char stringpool_str113[sizeof("fa")];
+ char stringpool_str114[sizeof("mag")];
+ char stringpool_str115[sizeof("kbd")];
+ char stringpool_str116[sizeof("ab")];
+ char stringpool_str117[sizeof("ps")];
+ char stringpool_str118[sizeof("ne")];
+ char stringpool_str119[sizeof("fi")];
+ char stringpool_str120[sizeof("na")];
+ char stringpool_str123[sizeof("to")];
+ char stringpool_str125[sizeof("nap")];
+ char stringpool_str127[sizeof("lu")];
+ char stringpool_str128[sizeof("de")];
+ char stringpool_str130[sizeof("da")];
+ char stringpool_str131[sizeof("fil")];
+ char stringpool_str132[sizeof("lua")];
+ char stringpool_str133[sizeof("co")];
+ char stringpool_str134[sizeof("ff")];
+ char stringpool_str135[sizeof("csb")];
+ char stringpool_str137[sizeof("din")];
+ char stringpool_str141[sizeof("lb")];
+ char stringpool_str142[sizeof("ru")];
+ char stringpool_str143[sizeof("fr")];
+ char stringpool_str145[sizeof("sus")];
+ char stringpool_str146[sizeof("pam")];
+ char stringpool_str147[sizeof("ng")];
+ char stringpool_str149[sizeof("ie")];
+ char stringpool_str150[sizeof("nr")];
+ char stringpool_str151[sizeof("ia")];
+ char stringpool_str153[sizeof("tum")];
+ char stringpool_str156[sizeof("ml")];
+ char stringpool_str157[sizeof("ii")];
+ char stringpool_str158[sizeof("sl")];
+ char stringpool_str159[sizeof("mk")];
+ char stringpool_str160[sizeof("za")];
+ char stringpool_str161[sizeof("sk")];
+ char stringpool_str162[sizeof("bej")];
+ char stringpool_str163[sizeof("kaj")];
+ char stringpool_str165[sizeof("zap")];
+ char stringpool_str166[sizeof("oj")];
+ char stringpool_str167[sizeof("kl")];
+ char stringpool_str169[sizeof("yi")];
+ char stringpool_str170[sizeof("kk")];
+ char stringpool_str171[sizeof("lo")];
+ char stringpool_str173[sizeof("kj")];
+ char stringpool_str174[sizeof("bug")];
+ char stringpool_str175[sizeof("kdm")];
+ char stringpool_str177[sizeof("mn")];
+ char stringpool_str178[sizeof("ig")];
+ char stringpool_str179[sizeof("sn")];
+ char stringpool_str180[sizeof("pag")];
+ char stringpool_str181[sizeof("tl")];
+ char stringpool_str182[sizeof("nb")];
+ char stringpool_str183[sizeof("pbb")];
+ char stringpool_str184[sizeof("tk")];
+ char stringpool_str186[sizeof("ro")];
+ char stringpool_str187[sizeof("mos")];
+ char stringpool_str188[sizeof("kn")];
+ char stringpool_str189[sizeof("bn")];
+ char stringpool_str190[sizeof("uk")];
+ char stringpool_str191[sizeof("sv")];
+ char stringpool_str193[sizeof("ga")];
+ char stringpool_str195[sizeof("he")];
+ char stringpool_str196[sizeof("is")];
+ char stringpool_str197[sizeof("ha")];
+ char stringpool_str198[sizeof("mai")];
+ char stringpool_str199[sizeof("iu")];
+ char stringpool_str200[sizeof("kv")];
+ char stringpool_str202[sizeof("tn")];
+ char stringpool_str203[sizeof("hi")];
+ char stringpool_str204[sizeof("nd")];
+ char stringpool_str205[sizeof("fo")];
+ char stringpool_str206[sizeof("fon")];
+ char stringpool_str207[sizeof("ak")];
+ char stringpool_str208[sizeof("zu")];
+ char stringpool_str209[sizeof("my")];
+ char stringpool_str210[sizeof("myn")];
+ char stringpool_str211[sizeof("mh")];
+ char stringpool_str212[sizeof("no")];
+ char stringpool_str213[sizeof("ve")];
+ char stringpool_str214[sizeof("shn")];
+ char stringpool_str215[sizeof("hil")];
+ char stringpool_str217[sizeof("sc")];
+ char stringpool_str218[sizeof("scn")];
+ char stringpool_str219[sizeof("oc")];
+ char stringpool_str220[sizeof("ky")];
+ char stringpool_str221[sizeof("vi")];
+ char stringpool_str222[sizeof("pl")];
+ char stringpool_str223[sizeof("bh")];
+ char stringpool_str224[sizeof("cv")];
+ char stringpool_str225[sizeof("an")];
+ char stringpool_str226[sizeof("ee")];
+ char stringpool_str227[sizeof("hr")];
+ char stringpool_str229[sizeof("mt")];
+ char stringpool_str230[sizeof("war")];
+ char stringpool_str231[sizeof("st")];
+ char stringpool_str234[sizeof("ty")];
+ char stringpool_str235[sizeof("id")];
+ char stringpool_str236[sizeof("th")];
+ char stringpool_str237[sizeof("av")];
+ char stringpool_str240[sizeof("raj")];
+ char stringpool_str241[sizeof("gu")];
+ char stringpool_str242[sizeof("luo")];
+ char stringpool_str244[sizeof("cy")];
+ char stringpool_str245[sizeof("hu")];
+ char stringpool_str246[sizeof("ch")];
+ char stringpool_str247[sizeof("ja")];
+ char stringpool_str248[sizeof("mak")];
+ char stringpool_str249[sizeof("sw")];
+ char stringpool_str250[sizeof("ln")];
+ char stringpool_str251[sizeof("sm")];
+ char stringpool_str252[sizeof("srr")];
+ char stringpool_str253[sizeof("om")];
+ char stringpool_str254[sizeof("tt")];
+ char stringpool_str255[sizeof("yo")];
+ char stringpool_str257[sizeof("ay")];
+ char stringpool_str258[sizeof("kw")];
+ char stringpool_str259[sizeof("crh")];
+ char stringpool_str260[sizeof("km")];
+ char stringpool_str261[sizeof("bm")];
+ char stringpool_str262[sizeof("lv")];
+ char stringpool_str264[sizeof("uz")];
+ char stringpool_str265[sizeof("rn")];
+ char stringpool_str266[sizeof("bik")];
+ char stringpool_str267[sizeof("qu")];
+ char stringpool_str269[sizeof("fj")];
+ char stringpool_str270[sizeof("nl")];
+ char stringpool_str272[sizeof("tw")];
+ char stringpool_str273[sizeof("es")];
+ char stringpool_str276[sizeof("eu")];
+ char stringpool_str277[sizeof("gd")];
+ char stringpool_str278[sizeof("yao")];
+ char stringpool_str280[sizeof("nso")];
+ char stringpool_str281[sizeof("az")];
+ char stringpool_str286[sizeof("gon")];
+ char stringpool_str289[sizeof("ho")];
+ char stringpool_str291[sizeof("nn")];
+ char stringpool_str293[sizeof("nds")];
+ char stringpool_str295[sizeof("pt")];
+ char stringpool_str296[sizeof("jab")];
+ char stringpool_str297[sizeof("am")];
+ char stringpool_str298[sizeof("suk")];
+ char stringpool_str300[sizeof("awa")];
+ char stringpool_str302[sizeof("lt")];
+ char stringpool_str303[sizeof("nv")];
+ char stringpool_str304[sizeof("ik")];
+ char stringpool_str307[sizeof("vo")];
+ char stringpool_str308[sizeof("nah")];
+ char stringpool_str309[sizeof("kmb")];
+ char stringpool_str313[sizeof("dv")];
+ char stringpool_str316[sizeof("fy")];
+ char stringpool_str320[sizeof("eo")];
+ char stringpool_str323[sizeof("ny")];
+ char stringpool_str324[sizeof("nyn")];
+ char stringpool_str329[sizeof("umb")];
+ char stringpool_str333[sizeof("ang")];
+ char stringpool_str334[sizeof("kcg")];
+ char stringpool_str335[sizeof("rw")];
+ char stringpool_str337[sizeof("rm")];
+ char stringpool_str338[sizeof("bho")];
+ char stringpool_str343[sizeof("gl")];
+ char stringpool_str351[sizeof("kok")];
+ char stringpool_str357[sizeof("dz")];
+ char stringpool_str364[sizeof("gn")];
+ char stringpool_str365[sizeof("zh")];
+ char stringpool_str369[sizeof("mni")];
+ char stringpool_str371[sizeof("xh")];
+ char stringpool_str374[sizeof("it")];
+ char stringpool_str375[sizeof("fur")];
+ char stringpool_str376[sizeof("gv")];
+ char stringpool_str378[sizeof("el")];
+ char stringpool_str388[sizeof("ace")];
+ char stringpool_str397[sizeof("nym")];
+ char stringpool_str399[sizeof("en")];
+ char stringpool_str400[sizeof("hy")];
+ char stringpool_str414[sizeof("doi")];
+ char stringpool_str416[sizeof("ilo")];
+ char stringpool_str420[sizeof("ht")];
+ char stringpool_str424[sizeof("hz")];
+ char stringpool_str430[sizeof("jv")];
+ char stringpool_str441[sizeof("hmn")];
+ char stringpool_str448[sizeof("gsw")];
+ char stringpool_str451[sizeof("et")];
+ char stringpool_str461[sizeof("mwr")];
+ };
+ static const struct stringpool_t stringpool_contents =
+ {
+ "sq",
+ "men",
+ "se",
+ "man",
+ "sa",
+ "sat",
+ "mi",
+ "min",
+ "si",
+ "wen",
+ "be",
+ "ka",
+ "ba",
+ "ban",
+ "ki",
+ "bi",
+ "bin",
+ "wal",
+ "te",
+ "bal",
+ "ta",
+ "tet",
+ "mg",
+ "sg",
+ "mr",
+ "ti",
+ "sr",
+ "ce",
+ "or",
+ "ca",
+ "mad",
+ "kg",
+ "bg",
+ "kr",
+ "br",
+ "sid",
+ "ms",
+ "ae",
+ "ss",
+ "aa",
+ "os",
+ "su",
+ "tg",
+ "tr",
+ "ks",
+ "bs",
+ "ug",
+ "ku",
+ "kab",
+ "ur",
+ "tiv",
+ "cr",
+ "pa",
+ "kru",
+ "af",
+ "ts",
+ "pap",
+ "pi",
+ "la",
+ "ar",
+ "li",
+ "cs",
+ "ceb",
+ "cu",
+ "bem",
+ "kam",
+ "sd",
+ "sas",
+ "mo",
+ "as",
+ "so",
+ "ast",
+ "tem",
+ "lg",
+ "wo",
+ "ko",
+ "bo",
+ "fa",
+ "mag",
+ "kbd",
+ "ab",
+ "ps",
+ "ne",
+ "fi",
+ "na",
+ "to",
+ "nap",
+ "lu",
+ "de",
+ "da",
+ "fil",
+ "lua",
+ "co",
+ "ff",
+ "csb",
+ "din",
+ "lb",
+ "ru",
+ "fr",
+ "sus",
+ "pam",
+ "ng",
+ "ie",
+ "nr",
+ "ia",
+ "tum",
+ "ml",
+ "ii",
+ "sl",
+ "mk",
+ "za",
+ "sk",
+ "bej",
+ "kaj",
+ "zap",
+ "oj",
+ "kl",
+ "yi",
+ "kk",
+ "lo",
+ "kj",
+ "bug",
+ "kdm",
+ "mn",
+ "ig",
+ "sn",
+ "pag",
+ "tl",
+ "nb",
+ "pbb",
+ "tk",
+ "ro",
+ "mos",
+ "kn",
+ "bn",
+ "uk",
+ "sv",
+ "ga",
+ "he",
+ "is",
+ "ha",
+ "mai",
+ "iu",
+ "kv",
+ "tn",
+ "hi",
+ "nd",
+ "fo",
+ "fon",
+ "ak",
+ "zu",
+ "my",
+ "myn",
+ "mh",
+ "no",
+ "ve",
+ "shn",
+ "hil",
+ "sc",
+ "scn",
+ "oc",
+ "ky",
+ "vi",
+ "pl",
+ "bh",
+ "cv",
+ "an",
+ "ee",
+ "hr",
+ "mt",
+ "war",
+ "st",
+ "ty",
+ "id",
+ "th",
+ "av",
+ "raj",
+ "gu",
+ "luo",
+ "cy",
+ "hu",
+ "ch",
+ "ja",
+ "mak",
+ "sw",
+ "ln",
+ "sm",
+ "srr",
+ "om",
+ "tt",
+ "yo",
+ "ay",
+ "kw",
+ "crh",
+ "km",
+ "bm",
+ "lv",
+ "uz",
+ "rn",
+ "bik",
+ "qu",
+ "fj",
+ "nl",
+ "tw",
+ "es",
+ "eu",
+ "gd",
+ "yao",
+ "nso",
+ "az",
+ "gon",
+ "ho",
+ "nn",
+ "nds",
+ "pt",
+ "jab",
+ "am",
+ "suk",
+ "awa",
+ "lt",
+ "nv",
+ "ik",
+ "vo",
+ "nah",
+ "kmb",
+ "dv",
+ "fy",
+ "eo",
+ "ny",
+ "nyn",
+ "umb",
+ "ang",
+ "kcg",
+ "rw",
+ "rm",
+ "bho",
+ "gl",
+ "kok",
+ "dz",
+ "gn",
+ "zh",
+ "mni",
+ "xh",
+ "it",
+ "fur",
+ "gv",
+ "el",
+ "ace",
+ "nym",
+ "en",
+ "hy",
+ "doi",
+ "ilo",
+ "ht",
+ "hz",
+ "jv",
+ "hmn",
+ "gsw",
+ "et",
+ "mwr"
+ };
+ #define stringpool ((const char *) &stringpool_contents)
+ static const unsigned char lengthtable[] =
+ {
+ 0, 0, 0, 0, 2, 3, 2, 3, 2, 0, 0, 3, 2, 3,
+ 2, 3, 2, 2, 2, 3, 0, 0, 0, 2, 2, 3, 0, 0,
+ 3, 2, 3, 2, 3, 2, 0, 2, 2, 2, 2, 2, 2, 2,
+ 3, 0, 2, 2, 0, 2, 2, 0, 3, 2, 2, 2, 2, 2,
+ 2, 0, 2, 0, 0, 2, 2, 2, 2, 2, 3, 2, 0, 3,
+ 0, 2, 2, 3, 0, 2, 2, 3, 2, 2, 0, 0, 0, 0,
+ 2, 2, 2, 0, 3, 2, 3, 3, 2, 0, 0, 0, 0, 3,
+ 2, 2, 2, 0, 3, 3, 0, 0, 2, 0, 2, 2, 2, 0,
+ 0, 2, 3, 3, 2, 2, 2, 2, 2, 0, 0, 2, 0, 3,
+ 0, 2, 2, 0, 2, 3, 3, 2, 2, 3, 0, 3, 0, 0,
+ 0, 2, 2, 2, 0, 3, 3, 2, 0, 2, 2, 2, 0, 3,
+ 0, 0, 2, 2, 2, 2, 2, 2, 3, 3, 0, 3, 2, 2,
+ 0, 2, 2, 2, 0, 2, 3, 3, 0, 2, 2, 2, 3, 2,
+ 2, 3, 2, 0, 2, 3, 2, 2, 2, 2, 0, 2, 0, 2,
+ 2, 2, 3, 2, 2, 0, 2, 2, 2, 2, 3, 2, 2, 2,
+ 3, 2, 2, 2, 3, 3, 0, 2, 3, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 0, 2, 3, 2, 0, 0, 2, 2, 2, 2,
+ 0, 0, 3, 2, 3, 0, 2, 2, 2, 2, 3, 2, 2, 2,
+ 3, 2, 2, 2, 0, 2, 2, 3, 2, 2, 2, 0, 2, 2,
+ 3, 2, 0, 2, 2, 0, 2, 2, 0, 0, 2, 2, 3, 0,
+ 3, 2, 0, 0, 0, 0, 3, 0, 0, 2, 0, 2, 0, 3,
+ 0, 2, 3, 2, 3, 0, 3, 0, 2, 2, 2, 0, 0, 2,
+ 3, 3, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 2, 0,
+ 0, 2, 3, 0, 0, 0, 0, 3, 0, 0, 0, 3, 3, 2,
+ 0, 2, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
+ 2, 2, 0, 0, 0, 3, 0, 2, 0, 0, 2, 3, 2, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 0, 2, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0,
+ 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
+ 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3
+ };
+ static const int wordlist[] =
+ {
+ -1, -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str4,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str5,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str6,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str7,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str8,
+ -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str11,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str12,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str13,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str14,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str15,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str16,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str17,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str18,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str19,
+ -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str23,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str24,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str25,
+ -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str28,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str29,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str30,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str31,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str32,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str33,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str35,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str36,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str37,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str38,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str39,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str40,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str41,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str42,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str44,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str45,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str47,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str48,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str50,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str51,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str52,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str53,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str54,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str55,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str56,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str58,
+ -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str61,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str62,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str63,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str64,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str65,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str66,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str67,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str69,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str71,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str72,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str73,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str75,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str76,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str77,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str78,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str79,
+ -1, -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str84,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str85,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str86,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str88,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str89,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str90,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str91,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str92,
+ -1, -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str97,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str98,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str99,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str100,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str102,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str103,
+ -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str106,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str108,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str109,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str110,
+ -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str113,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str114,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str115,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str116,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str117,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str118,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str119,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str120,
+ -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str123,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str125,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str127,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str128,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str130,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str131,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str132,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str133,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str134,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str135,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str137,
+ -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str141,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str142,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str143,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str145,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str146,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str147,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str149,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str150,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str151,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str153,
+ -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str156,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str157,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str158,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str159,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str160,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str161,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str162,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str163,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str165,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str166,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str167,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str169,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str170,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str171,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str173,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str174,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str175,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str177,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str178,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str179,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str180,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str181,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str182,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str183,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str184,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str186,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str187,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str188,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str189,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str190,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str191,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str193,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str195,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str196,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str197,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str198,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str199,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str200,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str202,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str203,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str204,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str205,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str206,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str207,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str208,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str209,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str210,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str211,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str212,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str213,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str214,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str215,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str217,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str218,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str219,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str220,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str221,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str222,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str223,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str224,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str225,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str226,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str227,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str229,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str230,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str231,
+ -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str234,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str235,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str236,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str237,
+ -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str240,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str241,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str242,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str244,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str245,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str246,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str247,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str248,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str249,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str250,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str251,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str252,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str253,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str254,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str255,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str257,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str258,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str259,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str260,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str261,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str262,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str264,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str265,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str266,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str267,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str269,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str270,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str272,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str273,
+ -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str276,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str277,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str278,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str280,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str281,
+ -1, -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str286,
+ -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str289,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str291,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str293,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str295,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str296,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str297,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str298,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str300,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str302,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str303,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str304,
+ -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str307,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str308,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str309,
+ -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str313,
+ -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str316,
+ -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str320,
+ -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str323,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str324,
+ -1, -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str329,
+ -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str333,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str334,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str335,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str337,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str338,
+ -1, -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str343,
+ -1, -1, -1, -1, -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str351,
+ -1, -1, -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str357,
+ -1, -1, -1, -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str364,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str365,
+ -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str369,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str371,
+ -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str374,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str375,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str376,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str378,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str388,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str397,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str399,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str400,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str414,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str416,
+ -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str420,
+ -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str424,
+ -1, -1, -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str430,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str441,
+ -1, -1, -1, -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str448,
+ -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str451,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ (int)(long)&((struct stringpool_t *)0)->stringpool_str461
+ };
+
+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+ {
+ register int key = uc_locale_language_hash (str, len);
+
+ if (key <= MAX_HASH_VALUE && key >= 0)
+ if (len == lengthtable[key])
+ {
+ register const char *s = wordlist[key] + stringpool;
+
+ if (*str == *s && !memcmp (str + 1, s + 1, len - 1))
+ return s;
+ }
+ }
+ return 0;
+}
diff --git a/lib/unicase/simple-mapping.h b/lib/unicase/simple-mapping.h
new file mode 100644
index 00000000..44cecc81
--- /dev/null
+++ b/lib/unicase/simple-mapping.h
@@ -0,0 +1,39 @@
+/* Simple case mapping for Unicode characters.
+ Copyright (C) 2002, 2006, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+ucs4_t
+FUNC (ucs4_t uc)
+{
+ unsigned int index1 = uc >> mapping_header_0;
+ if (index1 < mapping_header_1)
+ {
+ int lookup1 = u_mapping.level1[index1];
+ if (lookup1 >= 0)
+ {
+ unsigned int index2 = (uc >> mapping_header_2) & mapping_header_3;
+ int lookup2 = u_mapping.level2[lookup1 + index2];
+ if (lookup2 >= 0)
+ {
+ unsigned int index3 = (uc & mapping_header_4);
+ int lookup3 = u_mapping.level3[lookup2 + index3];
+
+ return uc + lookup3;
+ }
+ }
+ }
+ return uc;
+}
diff --git a/lib/unicase/special-casing-table.gperf b/lib/unicase/special-casing-table.gperf
new file mode 100644
index 00000000..78e8fcdd
--- /dev/null
+++ b/lib/unicase/special-casing-table.gperf
@@ -0,0 +1,136 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Special casing rules of Unicode characters. */
+/* Generated automatically by gen-uni-tables.c for Unicode 5.1.0. */
+struct special_casing_rule { char code[3]; };
+%struct-type
+%language=ANSI-C
+%define slot-name code
+%define hash-function-name gl_unicase_special_hash
+%define lookup-function-name gl_unicase_special_lookup
+%compare-lengths
+%compare-strncmp
+%readonly-tables
+%omit-struct-type
+%%
+"\x00\x49\x00", 1, SCC_MORE_ABOVE , { 'l', 't' }, { 0x0049, 0, 0 }, { 0x0069, 0x0307, 0 }, { 0x0049, 0, 0 }, { 0x0069, 0, 0 }
+"\x00\x49\x01", 1, -SCC_BEFORE_DOT , { 't', 'r' }, { 0x0049, 0, 0 }, { 0x0131, 0, 0 }, { 0x0049, 0, 0 }, { 0x0131, 0, 0 }
+"\x00\x49\x02", 1, -SCC_BEFORE_DOT , { 'a', 'z' }, { 0x0049, 0, 0 }, { 0x0131, 0, 0 }, { 0x0049, 0, 0 }, { 0x0131, 0, 0 }
+"\x00\x49\x03", 1, SCC_ALWAYS , { 't', 'r' }, { 0x0049, 0, 0 }, { 0x0069, 0, 0 }, { 0x0049, 0, 0 }, { 0x0131, 0, 0 }
+"\x00\x49\x04", 0, SCC_ALWAYS , { 'a', 'z' }, { 0x0049, 0, 0 }, { 0x0069, 0, 0 }, { 0x0049, 0, 0 }, { 0x0131, 0, 0 }
+"\x00\x4a\x00", 0, SCC_MORE_ABOVE , { 'l', 't' }, { 0x004A, 0, 0 }, { 0x006A, 0x0307, 0 }, { 0x004A, 0, 0 }, { 0x006A, 0, 0 }
+"\x00\x69\x00", 1, SCC_ALWAYS , { 't', 'r' }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }
+"\x00\x69\x01", 0, SCC_ALWAYS , { 'a', 'z' }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }
+"\x00\xcc\x00", 0, SCC_ALWAYS , { 'l', 't' }, { 0x00CC, 0, 0 }, { 0x0069, 0x0307, 0x0300 }, { 0x00CC, 0, 0 }, { 0x00EC, 0, 0 }
+"\x00\xcd\x00", 0, SCC_ALWAYS , { 'l', 't' }, { 0x00CD, 0, 0 }, { 0x0069, 0x0307, 0x0301 }, { 0x00CD, 0, 0 }, { 0x00ED, 0, 0 }
+"\x00\xdf\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0053, 0x0053, 0 }, { 0x00DF, 0, 0 }, { 0x0053, 0x0073, 0 }, { 0x0073, 0x0073, 0 }
+"\x01\x28\x00", 0, SCC_ALWAYS , { 'l', 't' }, { 0x0128, 0, 0 }, { 0x0069, 0x0307, 0x0303 }, { 0x0128, 0, 0 }, { 0x0129, 0, 0 }
+"\x01\x2e\x00", 0, SCC_MORE_ABOVE , { 'l', 't' }, { 0x012E, 0, 0 }, { 0x012F, 0x0307, 0 }, { 0x012E, 0, 0 }, { 0x012F, 0, 0 }
+"\x01\x30\x00", 1, SCC_ALWAYS , { 't', 'r' }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }
+"\x01\x30\x01", 1, SCC_ALWAYS , { 'a', 'z' }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }
+"\x01\x30\x02", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0130, 0, 0 }, { 0x0069, 0x0307, 0 }, { 0x0130, 0, 0 }, { 0x0069, 0x0307, 0 }
+"\x01\x49\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x02BC, 0x004E, 0 }, { 0x0149, 0, 0 }, { 0x02BC, 0x004E, 0 }, { 0x02BC, 0x006E, 0 }
+"\x01\xf0\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x004A, 0x030C, 0 }, { 0x01F0, 0, 0 }, { 0x004A, 0x030C, 0 }, { 0x006A, 0x030C, 0 }
+"\x03\x07\x00", 1, SCC_AFTER_SOFT_DOTTED, { 'l', 't' }, { 0, 0, 0 }, { 0x0307, 0, 0 }, { 0, 0, 0 }, { 0x0307, 0, 0 }
+"\x03\x07\x01", 1, SCC_AFTER_I , { 't', 'r' }, { 0x0307, 0, 0 }, { 0, 0, 0 }, { 0x0307, 0, 0 }, { 0x0307, 0, 0 }
+"\x03\x07\x02", 0, SCC_AFTER_I , { 'a', 'z' }, { 0x0307, 0, 0 }, { 0, 0, 0 }, { 0x0307, 0, 0 }, { 0x0307, 0, 0 }
+"\x03\x90\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0399, 0x0308, 0x0301 }, { 0x0390, 0, 0 }, { 0x0399, 0x0308, 0x0301 }, { 0x03B9, 0x0308, 0x0301 }
+"\x03\xa3\x00", 0, SCC_FINAL_SIGMA , { '\0', '\0' }, { 0x03A3, 0, 0 }, { 0x03C2, 0, 0 }, { 0x03A3, 0, 0 }, { 0x03C3, 0, 0 }
+"\x03\xb0\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0308, 0x0301 }, { 0x03B0, 0, 0 }, { 0x03A5, 0x0308, 0x0301 }, { 0x03C5, 0x0308, 0x0301 }
+"\x05\x87\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0535, 0x0552, 0 }, { 0x0587, 0, 0 }, { 0x0535, 0x0582, 0 }, { 0x0565, 0x0582, 0 }
+"\x1e\x96\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0048, 0x0331, 0 }, { 0x1E96, 0, 0 }, { 0x0048, 0x0331, 0 }, { 0x0068, 0x0331, 0 }
+"\x1e\x97\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0054, 0x0308, 0 }, { 0x1E97, 0, 0 }, { 0x0054, 0x0308, 0 }, { 0x0074, 0x0308, 0 }
+"\x1e\x98\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0057, 0x030A, 0 }, { 0x1E98, 0, 0 }, { 0x0057, 0x030A, 0 }, { 0x0077, 0x030A, 0 }
+"\x1e\x99\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0059, 0x030A, 0 }, { 0x1E99, 0, 0 }, { 0x0059, 0x030A, 0 }, { 0x0079, 0x030A, 0 }
+"\x1e\x9a\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0041, 0x02BE, 0 }, { 0x1E9A, 0, 0 }, { 0x0041, 0x02BE, 0 }, { 0x0061, 0x02BE, 0 }
+"\x1e\x9e\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1E9E, 0, 0 }, { 0x00DF, 0, 0 }, { 0x1E9E, 0, 0 }, { 0x0073, 0x0073, 0 }
+"\x1f\x50\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0313, 0 }, { 0x1F50, 0, 0 }, { 0x03A5, 0x0313, 0 }, { 0x03C5, 0x0313, 0 }
+"\x1f\x52\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0313, 0x0300 }, { 0x1F52, 0, 0 }, { 0x03A5, 0x0313, 0x0300 }, { 0x03C5, 0x0313, 0x0300 }
+"\x1f\x54\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0313, 0x0301 }, { 0x1F54, 0, 0 }, { 0x03A5, 0x0313, 0x0301 }, { 0x03C5, 0x0313, 0x0301 }
+"\x1f\x56\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0313, 0x0342 }, { 0x1F56, 0, 0 }, { 0x03A5, 0x0313, 0x0342 }, { 0x03C5, 0x0313, 0x0342 }
+"\x1f\x80\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F08, 0x0399, 0 }, { 0x1F80, 0, 0 }, { 0x1F88, 0, 0 }, { 0x1F00, 0x03B9, 0 }
+"\x1f\x81\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F09, 0x0399, 0 }, { 0x1F81, 0, 0 }, { 0x1F89, 0, 0 }, { 0x1F01, 0x03B9, 0 }
+"\x1f\x82\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0A, 0x0399, 0 }, { 0x1F82, 0, 0 }, { 0x1F8A, 0, 0 }, { 0x1F02, 0x03B9, 0 }
+"\x1f\x83\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0B, 0x0399, 0 }, { 0x1F83, 0, 0 }, { 0x1F8B, 0, 0 }, { 0x1F03, 0x03B9, 0 }
+"\x1f\x84\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0C, 0x0399, 0 }, { 0x1F84, 0, 0 }, { 0x1F8C, 0, 0 }, { 0x1F04, 0x03B9, 0 }
+"\x1f\x85\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0D, 0x0399, 0 }, { 0x1F85, 0, 0 }, { 0x1F8D, 0, 0 }, { 0x1F05, 0x03B9, 0 }
+"\x1f\x86\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0E, 0x0399, 0 }, { 0x1F86, 0, 0 }, { 0x1F8E, 0, 0 }, { 0x1F06, 0x03B9, 0 }
+"\x1f\x87\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0F, 0x0399, 0 }, { 0x1F87, 0, 0 }, { 0x1F8F, 0, 0 }, { 0x1F07, 0x03B9, 0 }
+"\x1f\x88\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F08, 0x0399, 0 }, { 0x1F80, 0, 0 }, { 0x1F88, 0, 0 }, { 0x1F00, 0x03B9, 0 }
+"\x1f\x89\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F09, 0x0399, 0 }, { 0x1F81, 0, 0 }, { 0x1F89, 0, 0 }, { 0x1F01, 0x03B9, 0 }
+"\x1f\x8a\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0A, 0x0399, 0 }, { 0x1F82, 0, 0 }, { 0x1F8A, 0, 0 }, { 0x1F02, 0x03B9, 0 }
+"\x1f\x8b\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0B, 0x0399, 0 }, { 0x1F83, 0, 0 }, { 0x1F8B, 0, 0 }, { 0x1F03, 0x03B9, 0 }
+"\x1f\x8c\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0C, 0x0399, 0 }, { 0x1F84, 0, 0 }, { 0x1F8C, 0, 0 }, { 0x1F04, 0x03B9, 0 }
+"\x1f\x8d\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0D, 0x0399, 0 }, { 0x1F85, 0, 0 }, { 0x1F8D, 0, 0 }, { 0x1F05, 0x03B9, 0 }
+"\x1f\x8e\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0E, 0x0399, 0 }, { 0x1F86, 0, 0 }, { 0x1F8E, 0, 0 }, { 0x1F06, 0x03B9, 0 }
+"\x1f\x8f\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0F, 0x0399, 0 }, { 0x1F87, 0, 0 }, { 0x1F8F, 0, 0 }, { 0x1F07, 0x03B9, 0 }
+"\x1f\x90\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F28, 0x0399, 0 }, { 0x1F90, 0, 0 }, { 0x1F98, 0, 0 }, { 0x1F20, 0x03B9, 0 }
+"\x1f\x91\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F29, 0x0399, 0 }, { 0x1F91, 0, 0 }, { 0x1F99, 0, 0 }, { 0x1F21, 0x03B9, 0 }
+"\x1f\x92\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2A, 0x0399, 0 }, { 0x1F92, 0, 0 }, { 0x1F9A, 0, 0 }, { 0x1F22, 0x03B9, 0 }
+"\x1f\x93\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2B, 0x0399, 0 }, { 0x1F93, 0, 0 }, { 0x1F9B, 0, 0 }, { 0x1F23, 0x03B9, 0 }
+"\x1f\x94\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2C, 0x0399, 0 }, { 0x1F94, 0, 0 }, { 0x1F9C, 0, 0 }, { 0x1F24, 0x03B9, 0 }
+"\x1f\x95\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2D, 0x0399, 0 }, { 0x1F95, 0, 0 }, { 0x1F9D, 0, 0 }, { 0x1F25, 0x03B9, 0 }
+"\x1f\x96\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2E, 0x0399, 0 }, { 0x1F96, 0, 0 }, { 0x1F9E, 0, 0 }, { 0x1F26, 0x03B9, 0 }
+"\x1f\x97\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2F, 0x0399, 0 }, { 0x1F97, 0, 0 }, { 0x1F9F, 0, 0 }, { 0x1F27, 0x03B9, 0 }
+"\x1f\x98\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F28, 0x0399, 0 }, { 0x1F90, 0, 0 }, { 0x1F98, 0, 0 }, { 0x1F20, 0x03B9, 0 }
+"\x1f\x99\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F29, 0x0399, 0 }, { 0x1F91, 0, 0 }, { 0x1F99, 0, 0 }, { 0x1F21, 0x03B9, 0 }
+"\x1f\x9a\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2A, 0x0399, 0 }, { 0x1F92, 0, 0 }, { 0x1F9A, 0, 0 }, { 0x1F22, 0x03B9, 0 }
+"\x1f\x9b\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2B, 0x0399, 0 }, { 0x1F93, 0, 0 }, { 0x1F9B, 0, 0 }, { 0x1F23, 0x03B9, 0 }
+"\x1f\x9c\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2C, 0x0399, 0 }, { 0x1F94, 0, 0 }, { 0x1F9C, 0, 0 }, { 0x1F24, 0x03B9, 0 }
+"\x1f\x9d\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2D, 0x0399, 0 }, { 0x1F95, 0, 0 }, { 0x1F9D, 0, 0 }, { 0x1F25, 0x03B9, 0 }
+"\x1f\x9e\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2E, 0x0399, 0 }, { 0x1F96, 0, 0 }, { 0x1F9E, 0, 0 }, { 0x1F26, 0x03B9, 0 }
+"\x1f\x9f\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2F, 0x0399, 0 }, { 0x1F97, 0, 0 }, { 0x1F9F, 0, 0 }, { 0x1F27, 0x03B9, 0 }
+"\x1f\xa0\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F68, 0x0399, 0 }, { 0x1FA0, 0, 0 }, { 0x1FA8, 0, 0 }, { 0x1F60, 0x03B9, 0 }
+"\x1f\xa1\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F69, 0x0399, 0 }, { 0x1FA1, 0, 0 }, { 0x1FA9, 0, 0 }, { 0x1F61, 0x03B9, 0 }
+"\x1f\xa2\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6A, 0x0399, 0 }, { 0x1FA2, 0, 0 }, { 0x1FAA, 0, 0 }, { 0x1F62, 0x03B9, 0 }
+"\x1f\xa3\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6B, 0x0399, 0 }, { 0x1FA3, 0, 0 }, { 0x1FAB, 0, 0 }, { 0x1F63, 0x03B9, 0 }
+"\x1f\xa4\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6C, 0x0399, 0 }, { 0x1FA4, 0, 0 }, { 0x1FAC, 0, 0 }, { 0x1F64, 0x03B9, 0 }
+"\x1f\xa5\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6D, 0x0399, 0 }, { 0x1FA5, 0, 0 }, { 0x1FAD, 0, 0 }, { 0x1F65, 0x03B9, 0 }
+"\x1f\xa6\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6E, 0x0399, 0 }, { 0x1FA6, 0, 0 }, { 0x1FAE, 0, 0 }, { 0x1F66, 0x03B9, 0 }
+"\x1f\xa7\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6F, 0x0399, 0 }, { 0x1FA7, 0, 0 }, { 0x1FAF, 0, 0 }, { 0x1F67, 0x03B9, 0 }
+"\x1f\xa8\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F68, 0x0399, 0 }, { 0x1FA0, 0, 0 }, { 0x1FA8, 0, 0 }, { 0x1F60, 0x03B9, 0 }
+"\x1f\xa9\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F69, 0x0399, 0 }, { 0x1FA1, 0, 0 }, { 0x1FA9, 0, 0 }, { 0x1F61, 0x03B9, 0 }
+"\x1f\xaa\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6A, 0x0399, 0 }, { 0x1FA2, 0, 0 }, { 0x1FAA, 0, 0 }, { 0x1F62, 0x03B9, 0 }
+"\x1f\xab\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6B, 0x0399, 0 }, { 0x1FA3, 0, 0 }, { 0x1FAB, 0, 0 }, { 0x1F63, 0x03B9, 0 }
+"\x1f\xac\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6C, 0x0399, 0 }, { 0x1FA4, 0, 0 }, { 0x1FAC, 0, 0 }, { 0x1F64, 0x03B9, 0 }
+"\x1f\xad\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6D, 0x0399, 0 }, { 0x1FA5, 0, 0 }, { 0x1FAD, 0, 0 }, { 0x1F65, 0x03B9, 0 }
+"\x1f\xae\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6E, 0x0399, 0 }, { 0x1FA6, 0, 0 }, { 0x1FAE, 0, 0 }, { 0x1F66, 0x03B9, 0 }
+"\x1f\xaf\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6F, 0x0399, 0 }, { 0x1FA7, 0, 0 }, { 0x1FAF, 0, 0 }, { 0x1F67, 0x03B9, 0 }
+"\x1f\xb2\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1FBA, 0x0399, 0 }, { 0x1FB2, 0, 0 }, { 0x1FBA, 0x0345, 0 }, { 0x1F70, 0x03B9, 0 }
+"\x1f\xb3\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0391, 0x0399, 0 }, { 0x1FB3, 0, 0 }, { 0x1FBC, 0, 0 }, { 0x03B1, 0x03B9, 0 }
+"\x1f\xb4\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0386, 0x0399, 0 }, { 0x1FB4, 0, 0 }, { 0x0386, 0x0345, 0 }, { 0x03AC, 0x03B9, 0 }
+"\x1f\xb6\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0391, 0x0342, 0 }, { 0x1FB6, 0, 0 }, { 0x0391, 0x0342, 0 }, { 0x03B1, 0x0342, 0 }
+"\x1f\xb7\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0391, 0x0342, 0x0399 }, { 0x1FB7, 0, 0 }, { 0x0391, 0x0342, 0x0345 }, { 0x03B1, 0x0342, 0x03B9 }
+"\x1f\xbc\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0391, 0x0399, 0 }, { 0x1FB3, 0, 0 }, { 0x1FBC, 0, 0 }, { 0x03B1, 0x03B9, 0 }
+"\x1f\xc2\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1FCA, 0x0399, 0 }, { 0x1FC2, 0, 0 }, { 0x1FCA, 0x0345, 0 }, { 0x1F74, 0x03B9, 0 }
+"\x1f\xc3\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0397, 0x0399, 0 }, { 0x1FC3, 0, 0 }, { 0x1FCC, 0, 0 }, { 0x03B7, 0x03B9, 0 }
+"\x1f\xc4\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0389, 0x0399, 0 }, { 0x1FC4, 0, 0 }, { 0x0389, 0x0345, 0 }, { 0x03AE, 0x03B9, 0 }
+"\x1f\xc6\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0397, 0x0342, 0 }, { 0x1FC6, 0, 0 }, { 0x0397, 0x0342, 0 }, { 0x03B7, 0x0342, 0 }
+"\x1f\xc7\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0397, 0x0342, 0x0399 }, { 0x1FC7, 0, 0 }, { 0x0397, 0x0342, 0x0345 }, { 0x03B7, 0x0342, 0x03B9 }
+"\x1f\xcc\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0397, 0x0399, 0 }, { 0x1FC3, 0, 0 }, { 0x1FCC, 0, 0 }, { 0x03B7, 0x03B9, 0 }
+"\x1f\xd2\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0399, 0x0308, 0x0300 }, { 0x1FD2, 0, 0 }, { 0x0399, 0x0308, 0x0300 }, { 0x03B9, 0x0308, 0x0300 }
+"\x1f\xd3\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0399, 0x0308, 0x0301 }, { 0x1FD3, 0, 0 }, { 0x0399, 0x0308, 0x0301 }, { 0x03B9, 0x0308, 0x0301 }
+"\x1f\xd6\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0399, 0x0342, 0 }, { 0x1FD6, 0, 0 }, { 0x0399, 0x0342, 0 }, { 0x03B9, 0x0342, 0 }
+"\x1f\xd7\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0399, 0x0308, 0x0342 }, { 0x1FD7, 0, 0 }, { 0x0399, 0x0308, 0x0342 }, { 0x03B9, 0x0308, 0x0342 }
+"\x1f\xe2\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0308, 0x0300 }, { 0x1FE2, 0, 0 }, { 0x03A5, 0x0308, 0x0300 }, { 0x03C5, 0x0308, 0x0300 }
+"\x1f\xe3\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0308, 0x0301 }, { 0x1FE3, 0, 0 }, { 0x03A5, 0x0308, 0x0301 }, { 0x03C5, 0x0308, 0x0301 }
+"\x1f\xe4\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A1, 0x0313, 0 }, { 0x1FE4, 0, 0 }, { 0x03A1, 0x0313, 0 }, { 0x03C1, 0x0313, 0 }
+"\x1f\xe6\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0342, 0 }, { 0x1FE6, 0, 0 }, { 0x03A5, 0x0342, 0 }, { 0x03C5, 0x0342, 0 }
+"\x1f\xe7\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0308, 0x0342 }, { 0x1FE7, 0, 0 }, { 0x03A5, 0x0308, 0x0342 }, { 0x03C5, 0x0308, 0x0342 }
+"\x1f\xf2\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1FFA, 0x0399, 0 }, { 0x1FF2, 0, 0 }, { 0x1FFA, 0x0345, 0 }, { 0x1F7C, 0x03B9, 0 }
+"\x1f\xf3\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A9, 0x0399, 0 }, { 0x1FF3, 0, 0 }, { 0x1FFC, 0, 0 }, { 0x03C9, 0x03B9, 0 }
+"\x1f\xf4\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x038F, 0x0399, 0 }, { 0x1FF4, 0, 0 }, { 0x038F, 0x0345, 0 }, { 0x03CE, 0x03B9, 0 }
+"\x1f\xf6\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A9, 0x0342, 0 }, { 0x1FF6, 0, 0 }, { 0x03A9, 0x0342, 0 }, { 0x03C9, 0x0342, 0 }
+"\x1f\xf7\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A9, 0x0342, 0x0399 }, { 0x1FF7, 0, 0 }, { 0x03A9, 0x0342, 0x0345 }, { 0x03C9, 0x0342, 0x03B9 }
+"\x1f\xfc\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A9, 0x0399, 0 }, { 0x1FF3, 0, 0 }, { 0x1FFC, 0, 0 }, { 0x03C9, 0x03B9, 0 }
+"\xfb\x00\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0046, 0x0046, 0 }, { 0xFB00, 0, 0 }, { 0x0046, 0x0066, 0 }, { 0x0066, 0x0066, 0 }
+"\xfb\x01\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0046, 0x0049, 0 }, { 0xFB01, 0, 0 }, { 0x0046, 0x0069, 0 }, { 0x0066, 0x0069, 0 }
+"\xfb\x02\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0046, 0x004C, 0 }, { 0xFB02, 0, 0 }, { 0x0046, 0x006C, 0 }, { 0x0066, 0x006C, 0 }
+"\xfb\x03\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0046, 0x0046, 0x0049 }, { 0xFB03, 0, 0 }, { 0x0046, 0x0066, 0x0069 }, { 0x0066, 0x0066, 0x0069 }
+"\xfb\x04\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0046, 0x0046, 0x004C }, { 0xFB04, 0, 0 }, { 0x0046, 0x0066, 0x006C }, { 0x0066, 0x0066, 0x006C }
+"\xfb\x05\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0053, 0x0054, 0 }, { 0xFB05, 0, 0 }, { 0x0053, 0x0074, 0 }, { 0x0073, 0x0074, 0 }
+"\xfb\x06\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0053, 0x0054, 0 }, { 0xFB06, 0, 0 }, { 0x0053, 0x0074, 0 }, { 0x0073, 0x0074, 0 }
+"\xfb\x13\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0544, 0x0546, 0 }, { 0xFB13, 0, 0 }, { 0x0544, 0x0576, 0 }, { 0x0574, 0x0576, 0 }
+"\xfb\x14\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0544, 0x0535, 0 }, { 0xFB14, 0, 0 }, { 0x0544, 0x0565, 0 }, { 0x0574, 0x0565, 0 }
+"\xfb\x15\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0544, 0x053B, 0 }, { 0xFB15, 0, 0 }, { 0x0544, 0x056B, 0 }, { 0x0574, 0x056B, 0 }
+"\xfb\x16\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x054E, 0x0546, 0 }, { 0xFB16, 0, 0 }, { 0x054E, 0x0576, 0 }, { 0x057E, 0x0576, 0 }
+"\xfb\x17\x00", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0544, 0x053D, 0 }, { 0xFB17, 0, 0 }, { 0x0544, 0x056D, 0 }, { 0x0574, 0x056D, 0 }
diff --git a/lib/unicase/special-casing-table.h b/lib/unicase/special-casing-table.h
new file mode 100644
index 00000000..c25bb94f
--- /dev/null
+++ b/lib/unicase/special-casing-table.h
@@ -0,0 +1,339 @@
+/* ANSI-C code produced by gperf version 3.0.4 */
+/* Command-line: gperf -m 10 ./unicase/special-casing-table.gperf */
+/* Computed positions: -k'1-3' */
+
+
+#define TOTAL_KEYWORDS 122
+#define MIN_WORD_LENGTH 3
+#define MAX_WORD_LENGTH 3
+#define MIN_HASH_VALUE 0
+#define MAX_HASH_VALUE 121
+/* maximum key range = 122, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+/*ARGSUSED*/
+static unsigned int
+gl_unicase_special_hash (register const char *str, register unsigned int len)
+{
+ static const unsigned char asso_values[] =
+ {
+ 2, 0, 4, 5, 37, 12, 121, 4, 122, 122,
+ 122, 122, 122, 122, 122, 122, 122, 122, 122, 120,
+ 119, 118, 117, 116, 122, 122, 122, 122, 122, 122,
+ 5, 3, 122, 122, 122, 122, 122, 122, 122, 122,
+ 115, 122, 122, 122, 122, 122, 114, 122, 6, 122,
+ 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+ 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+ 122, 122, 122, 1, 111, 122, 122, 122, 122, 122,
+ 109, 122, 108, 122, 107, 122, 106, 122, 122, 122,
+ 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+ 122, 122, 122, 122, 122, 33, 122, 122, 122, 122,
+ 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
+ 122, 122, 122, 122, 122, 122, 122, 122, 105, 104,
+ 103, 102, 101, 100, 99, 31, 98, 97, 96, 95,
+ 94, 93, 92, 91, 28, 90, 89, 88, 87, 86,
+ 27, 24, 23, 20, 19, 85, 84, 83, 16, 82,
+ 81, 80, 79, 15, 78, 77, 76, 75, 74, 73,
+ 72, 71, 70, 69, 68, 67, 64, 122, 65, 64,
+ 63, 122, 62, 61, 122, 122, 122, 122, 60, 122,
+ 122, 122, 122, 122, 59, 58, 57, 122, 56, 55,
+ 122, 122, 122, 122, 14, 55, 122, 122, 122, 122,
+ 53, 52, 122, 122, 51, 50, 122, 122, 122, 122,
+ 122, 122, 122, 50, 122, 122, 48, 47, 46, 122,
+ 45, 44, 122, 122, 122, 122, 122, 122, 122, 122,
+ 46, 122, 42, 41, 39, 122, 38, 35, 122, 122,
+ 122, 0, 33, 122, 122, 122, 122
+ };
+ return asso_values[(unsigned char)str[2]+1] + asso_values[(unsigned char)str[1]] + asso_values[(unsigned char)str[0]];
+}
+
+#ifdef __GNUC__
+__inline
+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+const struct special_casing_rule *
+gl_unicase_special_lookup (register const char *str, register unsigned int len)
+{
+ static const unsigned char lengthtable[] =
+ {
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
+ };
+ static const struct special_casing_rule wordlist[] =
+ {
+#line 126 "./unicase/special-casing-table.gperf"
+ {"\373\001\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0046, 0x0049, 0 }, { 0xFB01, 0, 0 }, { 0x0046, 0x0069, 0 }, { 0x0066, 0x0069, 0 }},
+#line 31 "./unicase/special-casing-table.gperf"
+ {"\001I\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x02BC, 0x004E, 0 }, { 0x0149, 0, 0 }, { 0x02BC, 0x004E, 0 }, { 0x02BC, 0x006E, 0 }},
+#line 125 "./unicase/special-casing-table.gperf"
+ {"\373\000\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0046, 0x0046, 0 }, { 0xFB00, 0, 0 }, { 0x0046, 0x0066, 0 }, { 0x0066, 0x0066, 0 }},
+#line 15 "./unicase/special-casing-table.gperf"
+ {"\000I\000", 1, SCC_MORE_ABOVE , { 'l', 't' }, { 0x0049, 0, 0 }, { 0x0069, 0x0307, 0 }, { 0x0049, 0, 0 }, { 0x0069, 0, 0 }},
+#line 127 "./unicase/special-casing-table.gperf"
+ {"\373\002\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0046, 0x004C, 0 }, { 0xFB02, 0, 0 }, { 0x0046, 0x006C, 0 }, { 0x0066, 0x006C, 0 }},
+#line 128 "./unicase/special-casing-table.gperf"
+ {"\373\003\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0046, 0x0046, 0x0049 }, { 0xFB03, 0, 0 }, { 0x0046, 0x0066, 0x0069 }, { 0x0066, 0x0066, 0x0069 }},
+#line 28 "./unicase/special-casing-table.gperf"
+ {"\0010\000", 1, SCC_ALWAYS , { 't', 'r' }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }},
+#line 16 "./unicase/special-casing-table.gperf"
+ {"\000I\001", 1, -SCC_BEFORE_DOT , { 't', 'r' }, { 0x0049, 0, 0 }, { 0x0131, 0, 0 }, { 0x0049, 0, 0 }, { 0x0131, 0, 0 }},
+#line 17 "./unicase/special-casing-table.gperf"
+ {"\000I\002", 1, -SCC_BEFORE_DOT , { 'a', 'z' }, { 0x0049, 0, 0 }, { 0x0131, 0, 0 }, { 0x0049, 0, 0 }, { 0x0131, 0, 0 }},
+#line 33 "./unicase/special-casing-table.gperf"
+ {"\003\007\000", 1, SCC_AFTER_SOFT_DOTTED, { 'l', 't' }, { 0, 0, 0 }, { 0x0307, 0, 0 }, { 0, 0, 0 }, { 0x0307, 0, 0 }},
+#line 29 "./unicase/special-casing-table.gperf"
+ {"\0010\001", 1, SCC_ALWAYS , { 'a', 'z' }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }},
+#line 30 "./unicase/special-casing-table.gperf"
+ {"\0010\002", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0130, 0, 0 }, { 0x0069, 0x0307, 0 }, { 0x0130, 0, 0 }, { 0x0069, 0x0307, 0 }},
+#line 130 "./unicase/special-casing-table.gperf"
+ {"\373\005\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0053, 0x0054, 0 }, { 0xFB05, 0, 0 }, { 0x0053, 0x0074, 0 }, { 0x0073, 0x0074, 0 }},
+#line 34 "./unicase/special-casing-table.gperf"
+ {"\003\007\001", 1, SCC_AFTER_I , { 't', 'r' }, { 0x0307, 0, 0 }, { 0, 0, 0 }, { 0x0307, 0, 0 }, { 0x0307, 0, 0 }},
+#line 35 "./unicase/special-casing-table.gperf"
+ {"\003\007\002", 0, SCC_AFTER_I , { 'a', 'z' }, { 0x0307, 0, 0 }, { 0, 0, 0 }, { 0x0307, 0, 0 }, { 0x0307, 0, 0 }},
+#line 19 "./unicase/special-casing-table.gperf"
+ {"\000I\004", 0, SCC_ALWAYS , { 'a', 'z' }, { 0x0049, 0, 0 }, { 0x0069, 0, 0 }, { 0x0049, 0, 0 }, { 0x0131, 0, 0 }},
+#line 23 "./unicase/special-casing-table.gperf"
+ {"\000\314\000", 0, SCC_ALWAYS , { 'l', 't' }, { 0x00CC, 0, 0 }, { 0x0069, 0x0307, 0x0300 }, { 0x00CC, 0, 0 }, { 0x00EC, 0, 0 }},
+#line 109 "./unicase/special-casing-table.gperf"
+ {"\037\314\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0397, 0x0399, 0 }, { 0x1FC3, 0, 0 }, { 0x1FCC, 0, 0 }, { 0x03B7, 0x03B9, 0 }},
+#line 85 "./unicase/special-casing-table.gperf"
+ {"\037\243\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6B, 0x0399, 0 }, { 0x1FA3, 0, 0 }, { 0x1FAB, 0, 0 }, { 0x1F63, 0x03B9, 0 }},
+#line 80 "./unicase/special-casing-table.gperf"
+ {"\037\236\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2E, 0x0399, 0 }, { 0x1F96, 0, 0 }, { 0x1F9E, 0, 0 }, { 0x1F26, 0x03B9, 0 }},
+#line 37 "./unicase/special-casing-table.gperf"
+ {"\003\243\000", 0, SCC_FINAL_SIGMA , { '\0', '\0' }, { 0x03A3, 0, 0 }, { 0x03C2, 0, 0 }, { 0x03A3, 0, 0 }, { 0x03C3, 0, 0 }},
+#line 45 "./unicase/special-casing-table.gperf"
+ {"\036\236\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1E9E, 0, 0 }, { 0x00DF, 0, 0 }, { 0x1E9E, 0, 0 }, { 0x0073, 0x0073, 0 }},
+#line 76 "./unicase/special-casing-table.gperf"
+ {"\037\232\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2A, 0x0399, 0 }, { 0x1F92, 0, 0 }, { 0x1F9A, 0, 0 }, { 0x1F22, 0x03B9, 0 }},
+#line 75 "./unicase/special-casing-table.gperf"
+ {"\037\231\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F29, 0x0399, 0 }, { 0x1F91, 0, 0 }, { 0x1F99, 0, 0 }, { 0x1F21, 0x03B9, 0 }},
+#line 44 "./unicase/special-casing-table.gperf"
+ {"\036\232\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0041, 0x02BE, 0 }, { 0x1E9A, 0, 0 }, { 0x0041, 0x02BE, 0 }, { 0x0061, 0x02BE, 0 }},
+#line 43 "./unicase/special-casing-table.gperf"
+ {"\036\231\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0059, 0x030A, 0 }, { 0x1E99, 0, 0 }, { 0x0059, 0x030A, 0 }, { 0x0079, 0x030A, 0 }},
+#line 74 "./unicase/special-casing-table.gperf"
+ {"\037\230\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F28, 0x0399, 0 }, { 0x1F90, 0, 0 }, { 0x1F98, 0, 0 }, { 0x1F20, 0x03B9, 0 }},
+#line 73 "./unicase/special-casing-table.gperf"
+ {"\037\227\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2F, 0x0399, 0 }, { 0x1F97, 0, 0 }, { 0x1F9F, 0, 0 }, { 0x1F27, 0x03B9, 0 }},
+#line 42 "./unicase/special-casing-table.gperf"
+ {"\036\230\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0057, 0x030A, 0 }, { 0x1E98, 0, 0 }, { 0x0057, 0x030A, 0 }, { 0x0077, 0x030A, 0 }},
+#line 41 "./unicase/special-casing-table.gperf"
+ {"\036\227\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0054, 0x0308, 0 }, { 0x1E97, 0, 0 }, { 0x0054, 0x0308, 0 }, { 0x0074, 0x0308, 0 }},
+#line 72 "./unicase/special-casing-table.gperf"
+ {"\037\226\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2E, 0x0399, 0 }, { 0x1F96, 0, 0 }, { 0x1F9E, 0, 0 }, { 0x1F26, 0x03B9, 0 }},
+#line 66 "./unicase/special-casing-table.gperf"
+ {"\037\220\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F28, 0x0399, 0 }, { 0x1F90, 0, 0 }, { 0x1F98, 0, 0 }, { 0x1F20, 0x03B9, 0 }},
+#line 40 "./unicase/special-casing-table.gperf"
+ {"\036\226\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0048, 0x0331, 0 }, { 0x1E96, 0, 0 }, { 0x0048, 0x0331, 0 }, { 0x0068, 0x0331, 0 }},
+#line 36 "./unicase/special-casing-table.gperf"
+ {"\003\220\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0399, 0x0308, 0x0301 }, { 0x0390, 0, 0 }, { 0x0399, 0x0308, 0x0301 }, { 0x03B9, 0x0308, 0x0301 }},
+#line 57 "./unicase/special-casing-table.gperf"
+ {"\037\207\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0F, 0x0399, 0 }, { 0x1F87, 0, 0 }, { 0x1F8F, 0, 0 }, { 0x1F07, 0x03B9, 0 }},
+#line 21 "./unicase/special-casing-table.gperf"
+ {"\000i\000", 1, SCC_ALWAYS , { 't', 'r' }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }},
+#line 124 "./unicase/special-casing-table.gperf"
+ {"\037\374\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A9, 0x0399, 0 }, { 0x1FF3, 0, 0 }, { 0x1FFC, 0, 0 }, { 0x03C9, 0x03B9, 0 }},
+#line 129 "./unicase/special-casing-table.gperf"
+ {"\373\004\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0046, 0x0046, 0x004C }, { 0xFB04, 0, 0 }, { 0x0046, 0x0066, 0x006C }, { 0x0066, 0x0066, 0x006C }},
+#line 123 "./unicase/special-casing-table.gperf"
+ {"\037\367\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A9, 0x0342, 0x0399 }, { 0x1FF7, 0, 0 }, { 0x03A9, 0x0342, 0x0345 }, { 0x03C9, 0x0342, 0x03B9 }},
+#line 22 "./unicase/special-casing-table.gperf"
+ {"\000i\001", 0, SCC_ALWAYS , { 'a', 'z' }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }},
+#line 18 "./unicase/special-casing-table.gperf"
+ {"\000I\003", 1, SCC_ALWAYS , { 't', 'r' }, { 0x0049, 0, 0 }, { 0x0069, 0, 0 }, { 0x0049, 0, 0 }, { 0x0131, 0, 0 }},
+#line 122 "./unicase/special-casing-table.gperf"
+ {"\037\366\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A9, 0x0342, 0 }, { 0x1FF6, 0, 0 }, { 0x03A9, 0x0342, 0 }, { 0x03C9, 0x0342, 0 }},
+#line 121 "./unicase/special-casing-table.gperf"
+ {"\037\364\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x038F, 0x0399, 0 }, { 0x1FF4, 0, 0 }, { 0x038F, 0x0345, 0 }, { 0x03CE, 0x03B9, 0 }},
+#line 39 "./unicase/special-casing-table.gperf"
+ {"\005\207\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0535, 0x0552, 0 }, { 0x0587, 0, 0 }, { 0x0535, 0x0582, 0 }, { 0x0565, 0x0582, 0 }},
+#line 120 "./unicase/special-casing-table.gperf"
+ {"\037\363\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A9, 0x0399, 0 }, { 0x1FF3, 0, 0 }, { 0x1FFC, 0, 0 }, { 0x03C9, 0x03B9, 0 }},
+#line 119 "./unicase/special-casing-table.gperf"
+ {"\037\362\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1FFA, 0x0399, 0 }, { 0x1FF2, 0, 0 }, { 0x1FFA, 0x0345, 0 }, { 0x1F7C, 0x03B9, 0 }},
+#line 32 "./unicase/special-casing-table.gperf"
+ {"\001\360\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x004A, 0x030C, 0 }, { 0x01F0, 0, 0 }, { 0x004A, 0x030C, 0 }, { 0x006A, 0x030C, 0 }},
+#line 118 "./unicase/special-casing-table.gperf"
+ {"\037\347\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0308, 0x0342 }, { 0x1FE7, 0, 0 }, { 0x03A5, 0x0308, 0x0342 }, { 0x03C5, 0x0308, 0x0342 }},
+#line 117 "./unicase/special-casing-table.gperf"
+ {"\037\346\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0342, 0 }, { 0x1FE6, 0, 0 }, { 0x03A5, 0x0342, 0 }, { 0x03C5, 0x0342, 0 }},
+#line 116 "./unicase/special-casing-table.gperf"
+ {"\037\344\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A1, 0x0313, 0 }, { 0x1FE4, 0, 0 }, { 0x03A1, 0x0313, 0 }, { 0x03C1, 0x0313, 0 }},
+#line 115 "./unicase/special-casing-table.gperf"
+ {"\037\343\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0308, 0x0301 }, { 0x1FE3, 0, 0 }, { 0x03A5, 0x0308, 0x0301 }, { 0x03C5, 0x0308, 0x0301 }},
+#line 114 "./unicase/special-casing-table.gperf"
+ {"\037\342\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0308, 0x0300 }, { 0x1FE2, 0, 0 }, { 0x03A5, 0x0308, 0x0300 }, { 0x03C5, 0x0308, 0x0300 }},
+#line 25 "./unicase/special-casing-table.gperf"
+ {"\000\337\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0053, 0x0053, 0 }, { 0x00DF, 0, 0 }, { 0x0053, 0x0073, 0 }, { 0x0073, 0x0073, 0 }},
+#line 113 "./unicase/special-casing-table.gperf"
+ {"\037\327\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0399, 0x0308, 0x0342 }, { 0x1FD7, 0, 0 }, { 0x0399, 0x0308, 0x0342 }, { 0x03B9, 0x0308, 0x0342 }},
+#line 112 "./unicase/special-casing-table.gperf"
+ {"\037\326\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0399, 0x0342, 0 }, { 0x1FD6, 0, 0 }, { 0x0399, 0x0342, 0 }, { 0x03B9, 0x0342, 0 }},
+#line 111 "./unicase/special-casing-table.gperf"
+ {"\037\323\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0399, 0x0308, 0x0301 }, { 0x1FD3, 0, 0 }, { 0x0399, 0x0308, 0x0301 }, { 0x03B9, 0x0308, 0x0301 }},
+#line 110 "./unicase/special-casing-table.gperf"
+ {"\037\322\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0399, 0x0308, 0x0300 }, { 0x1FD2, 0, 0 }, { 0x0399, 0x0308, 0x0300 }, { 0x03B9, 0x0308, 0x0300 }},
+#line 24 "./unicase/special-casing-table.gperf"
+ {"\000\315\000", 0, SCC_ALWAYS , { 'l', 't' }, { 0x00CD, 0, 0 }, { 0x0069, 0x0307, 0x0301 }, { 0x00CD, 0, 0 }, { 0x00ED, 0, 0 }},
+#line 108 "./unicase/special-casing-table.gperf"
+ {"\037\307\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0397, 0x0342, 0x0399 }, { 0x1FC7, 0, 0 }, { 0x0397, 0x0342, 0x0345 }, { 0x03B7, 0x0342, 0x03B9 }},
+#line 107 "./unicase/special-casing-table.gperf"
+ {"\037\306\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0397, 0x0342, 0 }, { 0x1FC6, 0, 0 }, { 0x0397, 0x0342, 0 }, { 0x03B7, 0x0342, 0 }},
+#line 106 "./unicase/special-casing-table.gperf"
+ {"\037\304\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0389, 0x0399, 0 }, { 0x1FC4, 0, 0 }, { 0x0389, 0x0345, 0 }, { 0x03AE, 0x03B9, 0 }},
+#line 105 "./unicase/special-casing-table.gperf"
+ {"\037\303\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0397, 0x0399, 0 }, { 0x1FC3, 0, 0 }, { 0x1FCC, 0, 0 }, { 0x03B7, 0x03B9, 0 }},
+#line 104 "./unicase/special-casing-table.gperf"
+ {"\037\302\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1FCA, 0x0399, 0 }, { 0x1FC2, 0, 0 }, { 0x1FCA, 0x0345, 0 }, { 0x1F74, 0x03B9, 0 }},
+#line 103 "./unicase/special-casing-table.gperf"
+ {"\037\274\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0391, 0x0399, 0 }, { 0x1FB3, 0, 0 }, { 0x1FBC, 0, 0 }, { 0x03B1, 0x03B9, 0 }},
+#line 102 "./unicase/special-casing-table.gperf"
+ {"\037\267\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0391, 0x0342, 0x0399 }, { 0x1FB7, 0, 0 }, { 0x0391, 0x0342, 0x0345 }, { 0x03B1, 0x0342, 0x03B9 }},
+#line 101 "./unicase/special-casing-table.gperf"
+ {"\037\266\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0391, 0x0342, 0 }, { 0x1FB6, 0, 0 }, { 0x0391, 0x0342, 0 }, { 0x03B1, 0x0342, 0 }},
+#line 100 "./unicase/special-casing-table.gperf"
+ {"\037\264\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0386, 0x0399, 0 }, { 0x1FB4, 0, 0 }, { 0x0386, 0x0345, 0 }, { 0x03AC, 0x03B9, 0 }},
+#line 99 "./unicase/special-casing-table.gperf"
+ {"\037\263\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0391, 0x0399, 0 }, { 0x1FB3, 0, 0 }, { 0x1FBC, 0, 0 }, { 0x03B1, 0x03B9, 0 }},
+#line 98 "./unicase/special-casing-table.gperf"
+ {"\037\262\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1FBA, 0x0399, 0 }, { 0x1FB2, 0, 0 }, { 0x1FBA, 0x0345, 0 }, { 0x1F70, 0x03B9, 0 }},
+#line 38 "./unicase/special-casing-table.gperf"
+ {"\003\260\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0308, 0x0301 }, { 0x03B0, 0, 0 }, { 0x03A5, 0x0308, 0x0301 }, { 0x03C5, 0x0308, 0x0301 }},
+#line 97 "./unicase/special-casing-table.gperf"
+ {"\037\257\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6F, 0x0399, 0 }, { 0x1FA7, 0, 0 }, { 0x1FAF, 0, 0 }, { 0x1F67, 0x03B9, 0 }},
+#line 96 "./unicase/special-casing-table.gperf"
+ {"\037\256\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6E, 0x0399, 0 }, { 0x1FA6, 0, 0 }, { 0x1FAE, 0, 0 }, { 0x1F66, 0x03B9, 0 }},
+#line 95 "./unicase/special-casing-table.gperf"
+ {"\037\255\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6D, 0x0399, 0 }, { 0x1FA5, 0, 0 }, { 0x1FAD, 0, 0 }, { 0x1F65, 0x03B9, 0 }},
+#line 94 "./unicase/special-casing-table.gperf"
+ {"\037\254\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6C, 0x0399, 0 }, { 0x1FA4, 0, 0 }, { 0x1FAC, 0, 0 }, { 0x1F64, 0x03B9, 0 }},
+#line 93 "./unicase/special-casing-table.gperf"
+ {"\037\253\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6B, 0x0399, 0 }, { 0x1FA3, 0, 0 }, { 0x1FAB, 0, 0 }, { 0x1F63, 0x03B9, 0 }},
+#line 92 "./unicase/special-casing-table.gperf"
+ {"\037\252\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6A, 0x0399, 0 }, { 0x1FA2, 0, 0 }, { 0x1FAA, 0, 0 }, { 0x1F62, 0x03B9, 0 }},
+#line 91 "./unicase/special-casing-table.gperf"
+ {"\037\251\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F69, 0x0399, 0 }, { 0x1FA1, 0, 0 }, { 0x1FA9, 0, 0 }, { 0x1F61, 0x03B9, 0 }},
+#line 90 "./unicase/special-casing-table.gperf"
+ {"\037\250\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F68, 0x0399, 0 }, { 0x1FA0, 0, 0 }, { 0x1FA8, 0, 0 }, { 0x1F60, 0x03B9, 0 }},
+#line 89 "./unicase/special-casing-table.gperf"
+ {"\037\247\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6F, 0x0399, 0 }, { 0x1FA7, 0, 0 }, { 0x1FAF, 0, 0 }, { 0x1F67, 0x03B9, 0 }},
+#line 88 "./unicase/special-casing-table.gperf"
+ {"\037\246\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6E, 0x0399, 0 }, { 0x1FA6, 0, 0 }, { 0x1FAE, 0, 0 }, { 0x1F66, 0x03B9, 0 }},
+#line 87 "./unicase/special-casing-table.gperf"
+ {"\037\245\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6D, 0x0399, 0 }, { 0x1FA5, 0, 0 }, { 0x1FAD, 0, 0 }, { 0x1F65, 0x03B9, 0 }},
+#line 86 "./unicase/special-casing-table.gperf"
+ {"\037\244\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6C, 0x0399, 0 }, { 0x1FA4, 0, 0 }, { 0x1FAC, 0, 0 }, { 0x1F64, 0x03B9, 0 }},
+#line 84 "./unicase/special-casing-table.gperf"
+ {"\037\242\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6A, 0x0399, 0 }, { 0x1FA2, 0, 0 }, { 0x1FAA, 0, 0 }, { 0x1F62, 0x03B9, 0 }},
+#line 83 "./unicase/special-casing-table.gperf"
+ {"\037\241\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F69, 0x0399, 0 }, { 0x1FA1, 0, 0 }, { 0x1FA9, 0, 0 }, { 0x1F61, 0x03B9, 0 }},
+#line 82 "./unicase/special-casing-table.gperf"
+ {"\037\240\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F68, 0x0399, 0 }, { 0x1FA0, 0, 0 }, { 0x1FA8, 0, 0 }, { 0x1F60, 0x03B9, 0 }},
+#line 81 "./unicase/special-casing-table.gperf"
+ {"\037\237\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2F, 0x0399, 0 }, { 0x1F97, 0, 0 }, { 0x1F9F, 0, 0 }, { 0x1F27, 0x03B9, 0 }},
+#line 79 "./unicase/special-casing-table.gperf"
+ {"\037\235\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2D, 0x0399, 0 }, { 0x1F95, 0, 0 }, { 0x1F9D, 0, 0 }, { 0x1F25, 0x03B9, 0 }},
+#line 78 "./unicase/special-casing-table.gperf"
+ {"\037\234\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2C, 0x0399, 0 }, { 0x1F94, 0, 0 }, { 0x1F9C, 0, 0 }, { 0x1F24, 0x03B9, 0 }},
+#line 77 "./unicase/special-casing-table.gperf"
+ {"\037\233\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2B, 0x0399, 0 }, { 0x1F93, 0, 0 }, { 0x1F9B, 0, 0 }, { 0x1F23, 0x03B9, 0 }},
+#line 71 "./unicase/special-casing-table.gperf"
+ {"\037\225\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2D, 0x0399, 0 }, { 0x1F95, 0, 0 }, { 0x1F9D, 0, 0 }, { 0x1F25, 0x03B9, 0 }},
+#line 70 "./unicase/special-casing-table.gperf"
+ {"\037\224\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2C, 0x0399, 0 }, { 0x1F94, 0, 0 }, { 0x1F9C, 0, 0 }, { 0x1F24, 0x03B9, 0 }},
+#line 69 "./unicase/special-casing-table.gperf"
+ {"\037\223\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2B, 0x0399, 0 }, { 0x1F93, 0, 0 }, { 0x1F9B, 0, 0 }, { 0x1F23, 0x03B9, 0 }},
+#line 68 "./unicase/special-casing-table.gperf"
+ {"\037\222\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2A, 0x0399, 0 }, { 0x1F92, 0, 0 }, { 0x1F9A, 0, 0 }, { 0x1F22, 0x03B9, 0 }},
+#line 67 "./unicase/special-casing-table.gperf"
+ {"\037\221\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F29, 0x0399, 0 }, { 0x1F91, 0, 0 }, { 0x1F99, 0, 0 }, { 0x1F21, 0x03B9, 0 }},
+#line 65 "./unicase/special-casing-table.gperf"
+ {"\037\217\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0F, 0x0399, 0 }, { 0x1F87, 0, 0 }, { 0x1F8F, 0, 0 }, { 0x1F07, 0x03B9, 0 }},
+#line 64 "./unicase/special-casing-table.gperf"
+ {"\037\216\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0E, 0x0399, 0 }, { 0x1F86, 0, 0 }, { 0x1F8E, 0, 0 }, { 0x1F06, 0x03B9, 0 }},
+#line 63 "./unicase/special-casing-table.gperf"
+ {"\037\215\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0D, 0x0399, 0 }, { 0x1F85, 0, 0 }, { 0x1F8D, 0, 0 }, { 0x1F05, 0x03B9, 0 }},
+#line 62 "./unicase/special-casing-table.gperf"
+ {"\037\214\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0C, 0x0399, 0 }, { 0x1F84, 0, 0 }, { 0x1F8C, 0, 0 }, { 0x1F04, 0x03B9, 0 }},
+#line 61 "./unicase/special-casing-table.gperf"
+ {"\037\213\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0B, 0x0399, 0 }, { 0x1F83, 0, 0 }, { 0x1F8B, 0, 0 }, { 0x1F03, 0x03B9, 0 }},
+#line 60 "./unicase/special-casing-table.gperf"
+ {"\037\212\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0A, 0x0399, 0 }, { 0x1F82, 0, 0 }, { 0x1F8A, 0, 0 }, { 0x1F02, 0x03B9, 0 }},
+#line 59 "./unicase/special-casing-table.gperf"
+ {"\037\211\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F09, 0x0399, 0 }, { 0x1F81, 0, 0 }, { 0x1F89, 0, 0 }, { 0x1F01, 0x03B9, 0 }},
+#line 58 "./unicase/special-casing-table.gperf"
+ {"\037\210\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F08, 0x0399, 0 }, { 0x1F80, 0, 0 }, { 0x1F88, 0, 0 }, { 0x1F00, 0x03B9, 0 }},
+#line 56 "./unicase/special-casing-table.gperf"
+ {"\037\206\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0E, 0x0399, 0 }, { 0x1F86, 0, 0 }, { 0x1F8E, 0, 0 }, { 0x1F06, 0x03B9, 0 }},
+#line 55 "./unicase/special-casing-table.gperf"
+ {"\037\205\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0D, 0x0399, 0 }, { 0x1F85, 0, 0 }, { 0x1F8D, 0, 0 }, { 0x1F05, 0x03B9, 0 }},
+#line 54 "./unicase/special-casing-table.gperf"
+ {"\037\204\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0C, 0x0399, 0 }, { 0x1F84, 0, 0 }, { 0x1F8C, 0, 0 }, { 0x1F04, 0x03B9, 0 }},
+#line 53 "./unicase/special-casing-table.gperf"
+ {"\037\203\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0B, 0x0399, 0 }, { 0x1F83, 0, 0 }, { 0x1F8B, 0, 0 }, { 0x1F03, 0x03B9, 0 }},
+#line 52 "./unicase/special-casing-table.gperf"
+ {"\037\202\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0A, 0x0399, 0 }, { 0x1F82, 0, 0 }, { 0x1F8A, 0, 0 }, { 0x1F02, 0x03B9, 0 }},
+#line 51 "./unicase/special-casing-table.gperf"
+ {"\037\201\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F09, 0x0399, 0 }, { 0x1F81, 0, 0 }, { 0x1F89, 0, 0 }, { 0x1F01, 0x03B9, 0 }},
+#line 50 "./unicase/special-casing-table.gperf"
+ {"\037\200\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F08, 0x0399, 0 }, { 0x1F80, 0, 0 }, { 0x1F88, 0, 0 }, { 0x1F00, 0x03B9, 0 }},
+#line 49 "./unicase/special-casing-table.gperf"
+ {"\037V\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0313, 0x0342 }, { 0x1F56, 0, 0 }, { 0x03A5, 0x0313, 0x0342 }, { 0x03C5, 0x0313, 0x0342 }},
+#line 48 "./unicase/special-casing-table.gperf"
+ {"\037T\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0313, 0x0301 }, { 0x1F54, 0, 0 }, { 0x03A5, 0x0313, 0x0301 }, { 0x03C5, 0x0313, 0x0301 }},
+#line 47 "./unicase/special-casing-table.gperf"
+ {"\037R\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0313, 0x0300 }, { 0x1F52, 0, 0 }, { 0x03A5, 0x0313, 0x0300 }, { 0x03C5, 0x0313, 0x0300 }},
+#line 46 "./unicase/special-casing-table.gperf"
+ {"\037P\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0313, 0 }, { 0x1F50, 0, 0 }, { 0x03A5, 0x0313, 0 }, { 0x03C5, 0x0313, 0 }},
+#line 20 "./unicase/special-casing-table.gperf"
+ {"\000J\000", 0, SCC_MORE_ABOVE , { 'l', 't' }, { 0x004A, 0, 0 }, { 0x006A, 0x0307, 0 }, { 0x004A, 0, 0 }, { 0x006A, 0, 0 }},
+#line 27 "./unicase/special-casing-table.gperf"
+ {"\001.\000", 0, SCC_MORE_ABOVE , { 'l', 't' }, { 0x012E, 0, 0 }, { 0x012F, 0x0307, 0 }, { 0x012E, 0, 0 }, { 0x012F, 0, 0 }},
+#line 26 "./unicase/special-casing-table.gperf"
+ {"\001(\000", 0, SCC_ALWAYS , { 'l', 't' }, { 0x0128, 0, 0 }, { 0x0069, 0x0307, 0x0303 }, { 0x0128, 0, 0 }, { 0x0129, 0, 0 }},
+#line 136 "./unicase/special-casing-table.gperf"
+ {"\373\027\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0544, 0x053D, 0 }, { 0xFB17, 0, 0 }, { 0x0544, 0x056D, 0 }, { 0x0574, 0x056D, 0 }},
+#line 135 "./unicase/special-casing-table.gperf"
+ {"\373\026\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x054E, 0x0546, 0 }, { 0xFB16, 0, 0 }, { 0x054E, 0x0576, 0 }, { 0x057E, 0x0576, 0 }},
+#line 134 "./unicase/special-casing-table.gperf"
+ {"\373\025\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0544, 0x053B, 0 }, { 0xFB15, 0, 0 }, { 0x0544, 0x056B, 0 }, { 0x0574, 0x056B, 0 }},
+#line 133 "./unicase/special-casing-table.gperf"
+ {"\373\024\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0544, 0x0535, 0 }, { 0xFB14, 0, 0 }, { 0x0544, 0x0565, 0 }, { 0x0574, 0x0565, 0 }},
+#line 132 "./unicase/special-casing-table.gperf"
+ {"\373\023\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0544, 0x0546, 0 }, { 0xFB13, 0, 0 }, { 0x0544, 0x0576, 0 }, { 0x0574, 0x0576, 0 }},
+#line 131 "./unicase/special-casing-table.gperf"
+ {"\373\006\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0053, 0x0054, 0 }, { 0xFB06, 0, 0 }, { 0x0053, 0x0074, 0 }, { 0x0073, 0x0074, 0 }}
+ };
+
+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+ {
+ register int key = gl_unicase_special_hash (str, len);
+
+ if (key <= MAX_HASH_VALUE && key >= 0)
+ if (len == lengthtable[key])
+ {
+ register const char *s = wordlist[key].code;
+
+ if (*str == *s && !memcmp (str + 1, s + 1, len - 1))
+ return &wordlist[key];
+ }
+ }
+ return 0;
+}
diff --git a/lib/unicase/special-casing.c b/lib/unicase/special-casing.c
new file mode 100644
index 00000000..9cc207c6
--- /dev/null
+++ b/lib/unicase/special-casing.c
@@ -0,0 +1,25 @@
+/* Special casing table.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "special-casing.h"
+
+#include <string.h>
+
+#include "unicase/special-casing-table.h"
diff --git a/lib/unicase/special-casing.h b/lib/unicase/special-casing.h
new file mode 100644
index 00000000..ab88b84d
--- /dev/null
+++ b/lib/unicase/special-casing.h
@@ -0,0 +1,60 @@
+/* Special casing table.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+
+/* A special casing context.
+ A context is negated through x -> -x. */
+enum
+{
+ SCC_ALWAYS = 0,
+ SCC_FINAL_SIGMA = 1,
+ SCC_AFTER_SOFT_DOTTED = 2,
+ SCC_MORE_ABOVE = 3,
+ SCC_BEFORE_DOT = 4,
+ SCC_AFTER_I = 5
+};
+
+struct special_casing_rule
+{
+ /* The first two bytes are the code, in big-endian order. The third byte
+ only distinguishes different rules pertaining to the same code. */
+ /*unsigned*/ char code[3];
+
+ /* True when this rule is not the last one for the given code. */
+ /*bool*/ unsigned int has_next : 1;
+
+ /* Context. */
+ signed int context : 7;
+
+ /* Language, or an empty string. */
+ char language[2];
+
+ /* Mapping to upper case. Between 0 and 3 characters. Filled with 0s. */
+ unsigned short upper[3];
+
+ /* Mapping to lower case. Between 0 and 3 characters. Filled with 0s. */
+ unsigned short lower[3];
+
+ /* Mapping to title case. Between 0 and 3 characters. Filled with 0s. */
+ unsigned short title[3];
+
+ /* Casefolding mapping. Between 0 and 3 characters. Filled with 0s. */
+ unsigned short casefold[3];
+};
+
+extern const struct special_casing_rule *
+ gl_unicase_special_lookup (const char *str, unsigned int len);
diff --git a/lib/unicase/tocasefold.c b/lib/unicase/tocasefold.c
new file mode 100644
index 00000000..752ba60a
--- /dev/null
+++ b/lib/unicase/tocasefold.c
@@ -0,0 +1,27 @@
+/* Casefold mapping for Unicode characters (locale and context independent).
+ Copyright (C) 2002, 2006, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "casefold.h"
+
+/* Define u_mapping table. */
+#include "tocasefold.h"
+
+#define FUNC uc_tocasefold
+#include "simple-mapping.h"
diff --git a/lib/unicase/tocasefold.h b/lib/unicase/tocasefold.h
new file mode 100644
index 00000000..59f26814
--- /dev/null
+++ b/lib/unicase/tocasefold.h
@@ -0,0 +1,567 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Simple character mapping of Unicode characters. */
+/* Generated automatically by gen-case.c for Unicode 5.1.0. */
+#define mapping_header_0 16
+#define mapping_header_1 2
+#define mapping_header_2 7
+#define mapping_header_3 511
+#define mapping_header_4 127
+static const
+struct
+ {
+ int level1[2];
+ short level2[2 << 9];
+ int level3[26 << 7];
+ }
+u_mapping =
+{
+ { 0, 512 },
+ {
+ 0, 128, 256, 384, 512, -1, 640, 768,
+ 896, 1024, 1152, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 1280, -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, 1408, 1536, 1664, 1792,
+ -1, -1, 1920, 2048, -1, -1, -1, -1,
+ -1, 2176, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 2304, 2432, -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, -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, 2560, 2688, 2816, 2944,
+ -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, -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, 3072, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 3200, -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, -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, -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, -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
+ },
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 775, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 0,
+ 32, 32, 32, 32, 32, 32, 32, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 0, 0, 1, 0, 1, 0, 1, 0,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ -121, 1, 0, 1, 0, 1, 0, -268,
+ 0, 210, 1, 0, 1, 0, 206, 1,
+ 0, 205, 205, 1, 0, 0, 79, 202,
+ 203, 1, 0, 205, 207, 0, 211, 209,
+ 1, 0, 0, 0, 211, 213, 0, 214,
+ 1, 0, 1, 0, 1, 0, 218, 1,
+ 0, 218, 0, 0, 1, 0, 218, 1,
+ 0, 217, 217, 1, 0, 1, 0, 219,
+ 1, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 2, 1, 0, 2,
+ 1, 0, 2, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 0, 2, 1, 0, 1, 0, -97, -56,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ -130, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 10795, 1, 0, -163, 10792, 0,
+ 0, 1, 0, -195, 69, 71, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 116, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 38, 0,
+ 37, 37, 37, 0, 64, 0, 63, 63,
+ 0, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 0, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 8,
+ -30, -25, 0, 0, 0, -15, -22, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ -54, -48, 0, 0, -60, -64, 0, 1,
+ 0, -7, 1, 0, 0, -130, -130, -130,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 15, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 7264, 7264, 7264, 7264, 7264, 7264, 7264, 7264,
+ 7264, 7264, 7264, 7264, 7264, 7264, 7264, 7264,
+ 7264, 7264, 7264, 7264, 7264, 7264, 7264, 7264,
+ 7264, 7264, 7264, 7264, 7264, 7264, 7264, 7264,
+ 7264, 7264, 7264, 7264, 7264, 7264, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 0, 0,
+ 0, 0, 0, -58, 0, 0, 0, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -8, -8, -8, -8, -8, -8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -8, -8, -8, -8, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -8, -8, -8, -8, -8, -8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -8, -8, -8, -8, -8, -8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -8, -8, -8, -8, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -8, 0, -8, 0, -8, 0, -8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -8, -8, -8, -8, -8, -8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -74, -74, 0, 0, -7173, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -86, -86, -86, -86, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -100, -100, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -112, -112, -7, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -128, -128, -126, -126, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -7517, 0,
+ 0, 0, -8383, -8262, 0, 0, 0, 0,
+ 0, 0, 28, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, -10743, -3814, -10727, 0, 0, 1,
+ 0, 1, 0, 1, 0, -10780, -10749, -10783,
+ 0, 0, 1, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 0, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 0, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 1, 0, -35332, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0
+ }
+};
diff --git a/lib/unicase/tolower.c b/lib/unicase/tolower.c
new file mode 100644
index 00000000..5ed0c6d2
--- /dev/null
+++ b/lib/unicase/tolower.c
@@ -0,0 +1,27 @@
+/* Lowercase mapping for Unicode characters (locale and context independent).
+ Copyright (C) 2002, 2006, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+/* Define u_mapping table. */
+#include "tolower.h"
+
+#define FUNC uc_tolower
+#include "simple-mapping.h"
diff --git a/lib/unicase/tolower.h b/lib/unicase/tolower.h
new file mode 100644
index 00000000..e7b4b293
--- /dev/null
+++ b/lib/unicase/tolower.h
@@ -0,0 +1,567 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Simple character mapping of Unicode characters. */
+/* Generated automatically by gen-case.c for Unicode 5.1.0. */
+#define mapping_header_0 16
+#define mapping_header_1 2
+#define mapping_header_2 7
+#define mapping_header_3 511
+#define mapping_header_4 127
+static const
+struct
+ {
+ int level1[2];
+ short level2[2 << 9];
+ int level3[26 << 7];
+ }
+u_mapping =
+{
+ { 0, 512 },
+ {
+ 0, 128, 256, 384, 512, -1, 640, 768,
+ 896, 1024, 1152, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 1280, -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, 1408, 1536, 1664, 1792,
+ -1, -1, 1920, 2048, -1, -1, -1, -1,
+ -1, 2176, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 2304, 2432, -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, -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, 2560, 2688, 2816, 2944,
+ -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, -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, 3072, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 3200, -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, -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, -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, -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
+ },
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 0,
+ 32, 32, 32, 32, 32, 32, 32, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ -199, 0, 1, 0, 1, 0, 1, 0,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ -121, 1, 0, 1, 0, 1, 0, 0,
+ 0, 210, 1, 0, 1, 0, 206, 1,
+ 0, 205, 205, 1, 0, 0, 79, 202,
+ 203, 1, 0, 205, 207, 0, 211, 209,
+ 1, 0, 0, 0, 211, 213, 0, 214,
+ 1, 0, 1, 0, 1, 0, 218, 1,
+ 0, 218, 0, 0, 1, 0, 218, 1,
+ 0, 217, 217, 1, 0, 1, 0, 219,
+ 1, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 2, 1, 0, 2,
+ 1, 0, 2, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 0, 2, 1, 0, 1, 0, -97, -56,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ -130, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 10795, 1, 0, -163, 10792, 0,
+ 0, 1, 0, -195, 69, 71, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 38, 0,
+ 37, 37, 37, 0, 64, 0, 63, 63,
+ 0, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 0, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 0, 0, 0, 0, -60, 0, 0, 1,
+ 0, -7, 1, 0, 0, -130, -130, -130,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 15, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 7264, 7264, 7264, 7264, 7264, 7264, 7264, 7264,
+ 7264, 7264, 7264, 7264, 7264, 7264, 7264, 7264,
+ 7264, 7264, 7264, 7264, 7264, 7264, 7264, 7264,
+ 7264, 7264, 7264, 7264, 7264, 7264, 7264, 7264,
+ 7264, 7264, 7264, 7264, 7264, 7264, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -7615, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -8, -8, -8, -8, -8, -8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -8, -8, -8, -8, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -8, -8, -8, -8, -8, -8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -8, -8, -8, -8, -8, -8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -8, -8, -8, -8, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -8, 0, -8, 0, -8, 0, -8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -8, -8, -8, -8, -8, -8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -8, -8, -8, -8, -8, -8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -8, -8, -8, -8, -8, -8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -8, -8, -8, -8, -8, -8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -74, -74, -9, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -86, -86, -86, -86, -9, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -100, -100, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -8, -8, -112, -112, -7, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -128, -128, -126, -126, -9, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -7517, 0,
+ 0, 0, -8383, -8262, 0, 0, 0, 0,
+ 0, 0, 28, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, -10743, -3814, -10727, 0, 0, 1,
+ 0, 1, 0, 1, 0, -10780, -10749, -10783,
+ 0, 0, 1, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 0, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 0, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 1, 0, -35332, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0
+ }
+};
diff --git a/lib/unicase/totitle.c b/lib/unicase/totitle.c
new file mode 100644
index 00000000..0ca5a45b
--- /dev/null
+++ b/lib/unicase/totitle.c
@@ -0,0 +1,27 @@
+/* Titlecase mapping for Unicode characters (locale and context independent).
+ Copyright (C) 2002, 2006, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+/* Define u_mapping table. */
+#include "totitle.h"
+
+#define FUNC uc_totitle
+#include "simple-mapping.h"
diff --git a/lib/unicase/totitle.h b/lib/unicase/totitle.h
new file mode 100644
index 00000000..66104371
--- /dev/null
+++ b/lib/unicase/totitle.h
@@ -0,0 +1,615 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Simple character mapping of Unicode characters. */
+/* Generated automatically by gen-case.c for Unicode 5.1.0. */
+#define mapping_header_0 16
+#define mapping_header_1 2
+#define mapping_header_2 7
+#define mapping_header_3 511
+#define mapping_header_4 127
+static const
+struct
+ {
+ int level1[2];
+ short level2[2 << 9];
+ int level3[29 << 7];
+ }
+u_mapping =
+{
+ { 0, 512 },
+ {
+ 0, 128, 256, 384, 512, 640, 768, 896,
+ 1024, 1152, 1280, 1408, -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, 1536, -1, 1664, 1792, 1920, 2048,
+ -1, -1, 2176, 2304, -1, -1, -1, -1,
+ -1, 2432, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 2560, 2688, 2816, -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, -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, 2944, 3072, 3200, 3328,
+ -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, -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, 3456, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 3584, -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, -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, -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, -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
+ },
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 743, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, 0,
+ -32, -32, -32, -32, -32, -32, -32, 121,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -232, 0, -1, 0, -1, 0, -1,
+ 0, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 0, -1, 0, -1, 0, -1, -300,
+ 195, 0, 0, -1, 0, -1, 0, 0,
+ -1, 0, 0, 0, -1, 0, 0, 0,
+ 0, 0, -1, 0, 0, 97, 0, 0,
+ 0, -1, 163, 0, 0, 0, 130, 0,
+ 0, -1, 0, -1, 0, -1, 0, 0,
+ -1, 0, 0, 0, 0, -1, 0, 0,
+ -1, 0, 0, 0, -1, 0, -1, 0,
+ 0, -1, 0, 0, 0, -1, 0, 56,
+ 0, 0, 0, 0, 1, 0, -1, 1,
+ 0, -1, 1, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, -79, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 1, 0, -1, 0, -1, 0, 0,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 0, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, -1, 0, 0, 0,
+ 0, 0, -1, 0, 0, 0, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 10783, 10780, 0, -210, -206, 0, -205, -205,
+ 0, -202, 0, -203, 0, 0, 0, 0,
+ -205, 0, 0, -207, 0, 0, 0, 0,
+ -209, -211, 0, 10743, 0, 0, 0, -211,
+ 0, 10749, -213, 0, 0, -214, 0, 0,
+ 0, 0, 0, 0, 0, 10727, 0, 0,
+ -218, 0, 0, -218, 0, 0, 0, 0,
+ -218, -69, -217, -217, -71, 0, 0, 0,
+ 0, 0, -219, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 84, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -1, 0, -1, 0, 0, 0, -1,
+ 0, 0, 0, 130, 130, 130, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -38, -37, -37, -37,
+ 0, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -31, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -64, -63, -63, 0,
+ -62, -57, 0, 0, 0, -47, -54, -8,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ -86, -80, 7, 0, 0, -96, 0, 0,
+ -1, 0, 0, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, 0, -1, -15,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 35332, 0, 0, 0, 3814, 0, 0,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, 0,
+ 0, 0, 0, -59, 0, 0, 0, 0,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 8, 8, 8, 8, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 8, 8, 8, 8, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 8, 0, 8, 0, 8, 0, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 74, 74, 86, 86, 86, 86, 100, 100,
+ 128, 128, 112, 112, 126, 126, 0, 0,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -7205, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -28, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16,
+ 0, 0, 0, 0, -1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, 0,
+ 0, -1, 0, 0, 0, -10795, -10792, 0,
+ -1, 0, -1, 0, -1, 0, 0, 0,
+ 0, 0, 0, -1, 0, 0, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -7264, -7264, -7264, -7264, -7264, -7264, -7264, -7264,
+ -7264, -7264, -7264, -7264, -7264, -7264, -7264, -7264,
+ -7264, -7264, -7264, -7264, -7264, -7264, -7264, -7264,
+ -7264, -7264, -7264, -7264, -7264, -7264, -7264, -7264,
+ -7264, -7264, -7264, -7264, -7264, -7264, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 0, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 0, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -1, 0, -1, 0, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 0, 0, 0, -1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0
+ }
+};
diff --git a/lib/unicase/toupper.c b/lib/unicase/toupper.c
new file mode 100644
index 00000000..d74e45c7
--- /dev/null
+++ b/lib/unicase/toupper.c
@@ -0,0 +1,27 @@
+/* Uppercase mapping for Unicode characters (locale and context independent).
+ Copyright (C) 2002, 2006, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+/* Define u_mapping table. */
+#include "toupper.h"
+
+#define FUNC uc_toupper
+#include "simple-mapping.h"
diff --git a/lib/unicase/toupper.h b/lib/unicase/toupper.h
new file mode 100644
index 00000000..e5194f40
--- /dev/null
+++ b/lib/unicase/toupper.h
@@ -0,0 +1,615 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Simple character mapping of Unicode characters. */
+/* Generated automatically by gen-case.c for Unicode 5.1.0. */
+#define mapping_header_0 16
+#define mapping_header_1 2
+#define mapping_header_2 7
+#define mapping_header_3 511
+#define mapping_header_4 127
+static const
+struct
+ {
+ int level1[2];
+ short level2[2 << 9];
+ int level3[29 << 7];
+ }
+u_mapping =
+{
+ { 0, 512 },
+ {
+ 0, 128, 256, 384, 512, 640, 768, 896,
+ 1024, 1152, 1280, 1408, -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, 1536, -1, 1664, 1792, 1920, 2048,
+ -1, -1, 2176, 2304, -1, -1, -1, -1,
+ -1, 2432, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 2560, 2688, 2816, -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, -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, 2944, 3072, 3200, 3328,
+ -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, -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, 3456, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 3584, -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, -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, -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, -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
+ },
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 743, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, 0,
+ -32, -32, -32, -32, -32, -32, -32, 121,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -232, 0, -1, 0, -1, 0, -1,
+ 0, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 0, -1, 0, -1, 0, -1, -300,
+ 195, 0, 0, -1, 0, -1, 0, 0,
+ -1, 0, 0, 0, -1, 0, 0, 0,
+ 0, 0, -1, 0, 0, 97, 0, 0,
+ 0, -1, 163, 0, 0, 0, 130, 0,
+ 0, -1, 0, -1, 0, -1, 0, 0,
+ -1, 0, 0, 0, 0, -1, 0, 0,
+ -1, 0, 0, 0, -1, 0, -1, 0,
+ 0, -1, 0, 0, 0, -1, 0, 56,
+ 0, 0, 0, 0, 0, -1, -2, 0,
+ -1, -2, 0, -1, -2, 0, -1, 0,
+ -1, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, -79, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 0, -1, -2, 0, -1, 0, 0,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 0, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, -1, 0, 0, 0,
+ 0, 0, -1, 0, 0, 0, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 10783, 10780, 0, -210, -206, 0, -205, -205,
+ 0, -202, 0, -203, 0, 0, 0, 0,
+ -205, 0, 0, -207, 0, 0, 0, 0,
+ -209, -211, 0, 10743, 0, 0, 0, -211,
+ 0, 10749, -213, 0, 0, -214, 0, 0,
+ 0, 0, 0, 0, 0, 10727, 0, 0,
+ -218, 0, 0, -218, 0, 0, 0, 0,
+ -218, -69, -217, -217, -71, 0, 0, 0,
+ 0, 0, -219, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 84, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -1, 0, -1, 0, 0, 0, -1,
+ 0, 0, 0, 130, 130, 130, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -38, -37, -37, -37,
+ 0, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -31, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -64, -63, -63, 0,
+ -62, -57, 0, 0, 0, -47, -54, -8,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ -86, -80, 7, 0, 0, -96, 0, 0,
+ -1, 0, 0, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 0, -1, 0, -1, 0, -1, 0,
+ -1, 0, -1, 0, -1, 0, -1, -15,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 35332, 0, 0, 0, 3814, 0, 0,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, 0,
+ 0, 0, 0, -59, 0, 0, 0, 0,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 8, 8, 8, 8, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 8, 8, 8, 8, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 8, 0, 8, 0, 8, 0, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 74, 74, 86, 86, 86, 86, 100, 100,
+ 128, 128, 112, 112, 126, 126, 0, 0,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -7205, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 8, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -28, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16,
+ 0, 0, 0, 0, -1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, 0,
+ 0, -1, 0, 0, 0, -10795, -10792, 0,
+ -1, 0, -1, 0, -1, 0, 0, 0,
+ 0, 0, 0, -1, 0, 0, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -7264, -7264, -7264, -7264, -7264, -7264, -7264, -7264,
+ -7264, -7264, -7264, -7264, -7264, -7264, -7264, -7264,
+ -7264, -7264, -7264, -7264, -7264, -7264, -7264, -7264,
+ -7264, -7264, -7264, -7264, -7264, -7264, -7264, -7264,
+ -7264, -7264, -7264, -7264, -7264, -7264, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 0, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 0, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -1, 0, -1, 0, 0, -1,
+ 0, -1, 0, -1, 0, -1, 0, -1,
+ 0, 0, 0, 0, -1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0
+ }
+};
diff --git a/lib/unicase/u-casecmp.h b/lib/unicase/u-casecmp.h
new file mode 100644
index 00000000..e1cf99c4
--- /dev/null
+++ b/lib/unicase/u-casecmp.h
@@ -0,0 +1,69 @@
+/* Case and normalization insensitive comparison of Unicode strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+int
+FUNC (const SRC_UNIT *s1, size_t n1, const SRC_UNIT *s2, size_t n2,
+ const char *iso639_language, uninorm_t nf, int *resultp)
+{
+ UNIT buf1[2048 / sizeof (UNIT)];
+ UNIT buf2[2048 / sizeof (UNIT)];
+ UNIT *norms1;
+ size_t norms1_length;
+ UNIT *norms2;
+ size_t norms2_length;
+ int cmp;
+
+ /* Optimization: There is no need to do canonical composition of each string.
+ Decomposition is enough. */
+ if (nf != NULL)
+ nf = uninorm_decomposing_form (nf);
+
+ /* Case-fold and normalize S1. */
+ norms1_length = sizeof (buf1) / sizeof (UNIT);
+ norms1 = U_CASEFOLD (s1, n1, iso639_language, nf, buf1, &norms1_length);
+ if (norms1 == NULL)
+ /* errno is set here. */
+ return -1;
+
+ /* Case-fold and normalize S2. */
+ norms2_length = sizeof (buf2) / sizeof (UNIT);
+ norms2 = U_CASEFOLD (s2, n2, iso639_language, nf, buf2, &norms2_length);
+ if (norms2 == NULL)
+ {
+ if (norms1 != buf1)
+ {
+ int saved_errno = errno;
+ free (norms1);
+ errno = saved_errno;
+ }
+ return -1;
+ }
+
+ /* Compare the normalized strings. */
+ cmp = U_CMP2 (norms1, norms1_length, norms2, norms2_length);
+ if (cmp > 0)
+ cmp = 1;
+ else if (cmp < 0)
+ cmp = -1;
+
+ if (norms2 != buf2)
+ free (norms2);
+ if (norms1 != buf1)
+ free (norms1);
+ *resultp = cmp;
+ return 0;
+}
diff --git a/lib/unicase/u-casecoll.h b/lib/unicase/u-casecoll.h
new file mode 100644
index 00000000..73094abe
--- /dev/null
+++ b/lib/unicase/u-casecoll.h
@@ -0,0 +1,68 @@
+/* Locale dependent, case and normalization insensitive comparison of Unicode
+ strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+int
+FUNC (const UNIT *s1, size_t n1, const UNIT *s2, size_t n2,
+ const char *iso639_language, uninorm_t nf, int *resultp)
+{
+ char buf1[2048];
+ char buf2[2048];
+ char *transformed1;
+ size_t transformed1_length;
+ char *transformed2;
+ size_t transformed2_length;
+ int cmp;
+
+ /* Normalize and transform S1. */
+ transformed1_length = sizeof (buf1);
+ transformed1 =
+ U_CASEXFRM (s1, n1, iso639_language, nf, buf1, &transformed1_length);
+ if (transformed1 == NULL)
+ /* errno is set here. */
+ return -1;
+
+ /* Normalize and transform S2. */
+ transformed2_length = sizeof (buf2);
+ transformed2 =
+ U_CASEXFRM (s2, n2, iso639_language, nf, buf2, &transformed2_length);
+ if (transformed2 == NULL)
+ {
+ if (transformed1 != buf1)
+ {
+ int saved_errno = errno;
+ free (transformed1);
+ errno = saved_errno;
+ }
+ return -1;
+ }
+
+ /* Compare the transformed strings. */
+ cmp = memcmp2 (transformed1, transformed1_length,
+ transformed2, transformed2_length);
+ if (cmp < 0)
+ cmp = -1;
+ else if (cmp > 0)
+ cmp = 1;
+
+ if (transformed2 != buf2)
+ free (transformed2);
+ if (transformed1 != buf1)
+ free (transformed1);
+ *resultp = cmp;
+ return 0;
+}
diff --git a/lib/unicase/u-casefold.h b/lib/unicase/u-casefold.h
new file mode 100644
index 00000000..c41f4e18
--- /dev/null
+++ b/lib/unicase/u-casefold.h
@@ -0,0 +1,28 @@
+/* Casefolding mapping for Unicode strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+UNIT *
+FUNC (const UNIT *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ UNIT *resultbuf, size_t *lengthp)
+{
+ return U_CT_CASEFOLD (s, n,
+ unicase_empty_prefix_context, unicase_empty_suffix_context,
+ iso639_language,
+ nf,
+ resultbuf, lengthp);
+}
diff --git a/lib/unicase/u-casemap.h b/lib/unicase/u-casemap.h
new file mode 100644
index 00000000..ea41444a
--- /dev/null
+++ b/lib/unicase/u-casemap.h
@@ -0,0 +1,416 @@
+/* Case mapping for UTF-8/UTF-16/UTF-32 strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+UNIT *
+FUNC (const UNIT *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ ucs4_t (*single_character_map) (ucs4_t),
+ size_t offset_in_rule, /* offset in 'struct special_casing_rule' */
+ uninorm_t nf,
+ UNIT *resultbuf, size_t *lengthp)
+{
+ /* The result being accumulated. */
+ UNIT *result;
+ size_t length;
+ size_t allocated;
+
+ /* Initialize the accumulator. */
+ if (nf != NULL || resultbuf == NULL)
+ {
+ result = NULL;
+ allocated = 0;
+ }
+ else
+ {
+ result = resultbuf;
+ allocated = *lengthp;
+ }
+ length = 0;
+
+ {
+ const UNIT *s_end = s + n;
+
+ /* Helper for evaluating the FINAL_SIGMA condition:
+ Last character that was not case-ignorable. */
+ ucs4_t last_char_except_ignorable =
+ prefix_context.last_char_except_ignorable;
+
+ /* Helper for evaluating the AFTER_SOFT_DOTTED and AFTER_I conditions:
+ Last character that was of combining class 230 ("Above") or 0. */
+ ucs4_t last_char_normal_or_above =
+ prefix_context.last_char_normal_or_above;
+
+ while (s < s_end)
+ {
+ ucs4_t uc;
+ int count = U_MBTOUC_UNSAFE (&uc, s, s_end - s);
+
+ ucs4_t mapped_uc[3];
+ unsigned int mapped_count;
+
+ if (uc < 0x10000)
+ {
+ /* Look first in the special-casing table. */
+ char code[3];
+
+ code[0] = (uc >> 8) & 0xff;
+ code[1] = uc & 0xff;
+
+ for (code[2] = 0; ; code[2]++)
+ {
+ const struct special_casing_rule *rule =
+ gl_unicase_special_lookup (code, 3);
+
+ if (rule == NULL)
+ break;
+
+ /* Test if the condition applies. */
+ /* Does the language apply? */
+ if (rule->language[0] == '\0'
+ || (iso639_language != NULL
+ && iso639_language[0] == rule->language[0]
+ && iso639_language[1] == rule->language[1]))
+ {
+ /* Does the context apply? */
+ int context = rule->context;
+ bool applies;
+
+ if (context < 0)
+ context = - context;
+ switch (context)
+ {
+ case SCC_ALWAYS:
+ applies = true;
+ break;
+
+ case SCC_FINAL_SIGMA:
+ /* "Before" condition: preceded by a sequence
+ consisting of a cased letter and a case-ignorable
+ sequence.
+ "After" condition: not followed by a sequence
+ consisting of a case-ignorable sequence and then a
+ cased letter. */
+ /* Test the "before" condition. */
+ applies = uc_is_cased (last_char_except_ignorable);
+ /* Test the "after" condition. */
+ if (applies)
+ {
+ const UNIT *s2 = s + count;
+ for (;;)
+ {
+ if (s2 < s_end)
+ {
+ ucs4_t uc2;
+ int count2 = U_MBTOUC_UNSAFE (&uc2, s2, s_end - s2);
+ /* Our uc_is_case_ignorable function is
+ known to return false for all cased
+ characters. So we can call
+ uc_is_case_ignorable first. */
+ if (!uc_is_case_ignorable (uc2))
+ {
+ applies = ! uc_is_cased (uc2);
+ break;
+ }
+ s2 += count2;
+ }
+ else
+ {
+ applies = ! uc_is_cased (suffix_context.first_char_except_ignorable);
+ break;
+ }
+ }
+ }
+ break;
+
+ case SCC_AFTER_SOFT_DOTTED:
+ /* "Before" condition: There is a Soft_Dotted character
+ before it, with no intervening character of
+ combining class 0 or 230 (Above). */
+ /* Test the "before" condition. */
+ applies = uc_is_property_soft_dotted (last_char_normal_or_above);
+ break;
+
+ case SCC_MORE_ABOVE:
+ /* "After" condition: followed by a character of
+ combining class 230 (Above) with no intervening
+ character of combining class 0 or 230 (Above). */
+ /* Test the "after" condition. */
+ {
+ const UNIT *s2 = s + count;
+ applies = false;
+ for (;;)
+ {
+ if (s2 < s_end)
+ {
+ ucs4_t uc2;
+ int count2 = U_MBTOUC_UNSAFE (&uc2, s2, s_end - s2);
+ int ccc = uc_combining_class (uc2);
+ if (ccc == UC_CCC_A)
+ {
+ applies = true;
+ break;
+ }
+ if (ccc == UC_CCC_NR)
+ break;
+ s2 += count2;
+ }
+ else
+ {
+ applies = ((suffix_context.bits & SCC_MORE_ABOVE_MASK) != 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case SCC_BEFORE_DOT:
+ /* "After" condition: followed by COMBINING DOT ABOVE
+ (U+0307). Any sequence of characters with a
+ combining class that is neither 0 nor 230 may
+ intervene between the current character and the
+ combining dot above. */
+ /* Test the "after" condition. */
+ {
+ const UNIT *s2 = s + count;
+ applies = false;
+ for (;;)
+ {
+ if (s2 < s_end)
+ {
+ ucs4_t uc2;
+ int count2 = U_MBTOUC_UNSAFE (&uc2, s2, s_end - s2);
+ if (uc2 == 0x0307) /* COMBINING DOT ABOVE */
+ {
+ applies = true;
+ break;
+ }
+ {
+ int ccc = uc_combining_class (uc2);
+ if (ccc == UC_CCC_A || ccc == UC_CCC_NR)
+ break;
+ }
+ s2 += count2;
+ }
+ else
+ {
+ applies = ((suffix_context.bits & SCC_BEFORE_DOT_MASK) != 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case SCC_AFTER_I:
+ /* "Before" condition: There is an uppercase I before
+ it, and there is no intervening character of
+ combining class 0 or 230 (Above). */
+ /* Test the "before" condition. */
+ applies = (last_char_normal_or_above == 'I');
+ break;
+
+ default:
+ abort ();
+ }
+ if (rule->context < 0)
+ applies = !applies;
+
+ if (applies)
+ {
+ /* The rule applies.
+ Look up the mapping (0 to 3 characters). */
+ const unsigned short *mapped_in_rule =
+ (const unsigned short *)((const char *)rule + offset_in_rule);
+
+ if (mapped_in_rule[0] == 0)
+ mapped_count = 0;
+ else
+ {
+ mapped_uc[0] = mapped_in_rule[0];
+ if (mapped_in_rule[1] == 0)
+ mapped_count = 1;
+ else
+ {
+ mapped_uc[1] = mapped_in_rule[1];
+ if (mapped_in_rule[2] == 0)
+ mapped_count = 2;
+ else
+ {
+ mapped_uc[2] = mapped_in_rule[2];
+ mapped_count = 3;
+ }
+ }
+ }
+ goto found_mapping;
+ }
+ }
+
+ /* Optimization: Save a hash table lookup in the next round. */
+ if (!rule->has_next)
+ break;
+ }
+ }
+
+ /* No special-cased mapping. So use the locale and context independent
+ mapping. */
+ mapped_uc[0] = single_character_map (uc);
+ mapped_count = 1;
+
+ found_mapping:
+ /* Found the mapping: uc maps to mapped_uc[0..mapped_count-1]. */
+ {
+ unsigned int i;
+
+ for (i = 0; i < mapped_count; i++)
+ {
+ ucs4_t muc = mapped_uc[i];
+
+ /* Append muc to the result accumulator. */
+ if (length < allocated)
+ {
+ int ret = U_UCTOMB (result + length, muc, allocated - length);
+ if (ret == -1)
+ {
+ errno = EINVAL;
+ goto fail;
+ }
+ if (ret >= 0)
+ {
+ length += ret;
+ goto done_appending;
+ }
+ }
+ {
+ size_t old_allocated = allocated;
+ size_t new_allocated = 2 * old_allocated;
+ if (new_allocated < 64)
+ new_allocated = 64;
+ if (new_allocated < old_allocated) /* integer overflow? */
+ abort ();
+ {
+ UNIT *larger_result;
+ if (result == NULL)
+ {
+ larger_result = (UNIT *) malloc (new_allocated * sizeof (UNIT));
+ if (larger_result == NULL)
+ {
+ errno = ENOMEM;
+ goto fail;
+ }
+ }
+ else if (result == resultbuf)
+ {
+ larger_result = (UNIT *) malloc (new_allocated * sizeof (UNIT));
+ if (larger_result == NULL)
+ {
+ errno = ENOMEM;
+ goto fail;
+ }
+ U_CPY (larger_result, resultbuf, length);
+ }
+ else
+ {
+ larger_result =
+ (UNIT *) realloc (result, new_allocated * sizeof (UNIT));
+ if (larger_result == NULL)
+ {
+ errno = ENOMEM;
+ goto fail;
+ }
+ }
+ result = larger_result;
+ allocated = new_allocated;
+ {
+ int ret = U_UCTOMB (result + length, muc, allocated - length);
+ if (ret == -1)
+ {
+ errno = EINVAL;
+ goto fail;
+ }
+ if (ret < 0)
+ abort ();
+ length += ret;
+ goto done_appending;
+ }
+ }
+ }
+ done_appending: ;
+ }
+ }
+
+ if (!uc_is_case_ignorable (uc))
+ last_char_except_ignorable = uc;
+
+ {
+ int ccc = uc_combining_class (uc);
+ if (ccc == UC_CCC_A || ccc == UC_CCC_NR)
+ last_char_normal_or_above = uc;
+ }
+
+ s += count;
+ }
+ }
+
+ if (nf != NULL)
+ {
+ /* Finally, normalize the result. */
+ UNIT *normalized_result;
+
+ normalized_result = U_NORMALIZE (nf, result, length, resultbuf, lengthp);
+ if (normalized_result == NULL)
+ goto fail;
+
+ free (result);
+ return normalized_result;
+ }
+
+ if (length == 0)
+ {
+ if (result == NULL)
+ {
+ /* Return a non-NULL value. NULL means error. */
+ result = (UNIT *) malloc (1);
+ if (result == NULL)
+ {
+ errno = ENOMEM;
+ goto fail;
+ }
+ }
+ }
+ else if (result != resultbuf && length < allocated)
+ {
+ /* Shrink the allocated memory if possible. */
+ UNIT *memory;
+
+ memory = (UNIT *) realloc (result, length * sizeof (UNIT));
+ if (memory != NULL)
+ result = memory;
+ }
+
+ *lengthp = length;
+ return result;
+
+ fail:
+ if (result != resultbuf)
+ {
+ int saved_errno = errno;
+ free (result);
+ errno = saved_errno;
+ }
+ return NULL;
+}
diff --git a/lib/unicase/u-casexfrm.h b/lib/unicase/u-casexfrm.h
new file mode 100644
index 00000000..e36aff3b
--- /dev/null
+++ b/lib/unicase/u-casexfrm.h
@@ -0,0 +1,88 @@
+/* Locale dependent transformation for case insensitive comparison of Unicode
+ strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+char *
+FUNC (const UNIT *s, size_t n, const char *iso639_language, uninorm_t nf,
+ char *resultbuf, size_t *lengthp)
+{
+ UNIT foldedsbuf[2048 / sizeof (UNIT)];
+ UNIT *foldeds;
+ size_t foldeds_length;
+ char convsbuf[2048];
+ char *convs;
+ size_t convs_length;
+ char *result;
+
+ /* Casefold and normalize the Unicode string. */
+ foldeds_length = sizeof (foldedsbuf) / sizeof (UNIT);
+ foldeds = U_CASEFOLD (s, n, iso639_language, nf, foldedsbuf, &foldeds_length);
+ if (foldeds == NULL)
+ /* errno is set here. */
+ return NULL;
+
+ /* Convert it to locale encoding. */
+ convs_length = sizeof (convsbuf) - 1;
+ convs = U_CONV_TO_ENCODING (locale_charset (),
+ iconveh_error,
+ foldeds, foldeds_length,
+ NULL,
+ convsbuf, &convs_length);
+ if (convs == NULL)
+ {
+ if (foldeds != foldedsbuf)
+ {
+ int saved_errno = errno;
+ free (foldeds);
+ errno = saved_errno;
+ }
+ return NULL;
+ }
+
+ if (foldeds != foldedsbuf)
+ free (foldeds);
+
+ /* Ensure one more byte is available. */
+ if (convs != convsbuf)
+ {
+ char *memory = (char *) realloc (convs, convs_length + 1);
+ if (memory == NULL)
+ {
+ free (convs);
+ errno = ENOMEM;
+ return NULL;
+ }
+ convs = memory;
+ }
+
+ /* Apply locale dependent transformations for comparison. */
+ result = memxfrm (convs, convs_length, resultbuf, lengthp);
+ if (result == NULL)
+ {
+ if (convs != convsbuf)
+ {
+ int saved_errno = errno;
+ free (convs);
+ errno = saved_errno;
+ }
+ return NULL;
+ }
+
+ if (convs != convsbuf)
+ free (convs);
+ return result;
+}
diff --git a/lib/unicase/u-ct-casefold.h b/lib/unicase/u-ct-casefold.h
new file mode 100644
index 00000000..d97be264
--- /dev/null
+++ b/lib/unicase/u-ct-casefold.h
@@ -0,0 +1,107 @@
+/* Casefolding mapping for Unicode substrings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+UNIT *
+FUNC (const UNIT *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ UNIT *resultbuf, size_t *lengthp)
+{
+ /* Implement the three definitions of caseless matching, as described in
+ Unicode 5.0, section "Default caseless matching":
+ - If no normalization is requested, simply apply the casefolding.
+ X -> toCasefold(X).
+ - If canonical normalization is requested, apply it, and apply an NFD
+ before.
+ X -> NFD(toCasefold(NFD(X))).
+ - If compatibility normalization is requested, apply it twice, apply
+ the normalization after each, and apply an NFD before:
+ X -> NFKD(toCasefold(NFKD(toCasefold(NFD(X))))). */
+ if (nf == NULL)
+ /* X -> toCasefold(X) */
+ return U_CASEMAP (s, n, prefix_context, suffix_context, iso639_language,
+ uc_tocasefold, offsetof (struct special_casing_rule, casefold[0]),
+ NULL,
+ resultbuf, lengthp);
+ else
+ {
+ uninorm_t nfd = uninorm_decomposing_form (nf);
+ /* X -> nf(toCasefold(NFD(X))) or
+ X -> nf(toCasefold(nfd(toCasefold(NFD(X))))) */
+ int repeat = (uninorm_is_compat_decomposing (nf) ? 2 : 1);
+ UNIT tmpbuf1[2048 / sizeof (UNIT)];
+ UNIT tmpbuf2[2048 / sizeof (UNIT)];
+ UNIT *tmp1;
+ size_t tmp1_length;
+ UNIT *tmp2;
+ size_t tmp2_length;
+
+ tmp1_length = sizeof (tmpbuf1) / sizeof (UNIT);
+ tmp1 = U_NORMALIZE (UNINORM_NFD, s, n, tmpbuf1, &tmp1_length);
+ if (tmp1 == NULL)
+ /* errno is set here. */
+ return NULL;
+
+ do
+ {
+ tmp2_length = sizeof (tmpbuf2) / sizeof (UNIT);
+ tmp2 = U_CASEMAP (tmp1, tmp1_length,
+ prefix_context, suffix_context, iso639_language,
+ uc_tocasefold, offsetof (struct special_casing_rule, casefold[0]),
+ NULL,
+ tmpbuf2, &tmp2_length);
+ if (tmp2 == NULL)
+ {
+ int saved_errno = errno;
+ if (tmp1 != tmpbuf1)
+ free (tmp1);
+ errno = saved_errno;
+ return NULL;
+ }
+
+ if (tmp1 != tmpbuf1)
+ free (tmp1);
+
+ if (repeat > 1)
+ {
+ tmp1_length = sizeof (tmpbuf1) / sizeof (UNIT);
+ tmp1 = U_NORMALIZE (nfd, tmp2, tmp2_length,
+ tmpbuf1, &tmp1_length);
+ }
+ else
+ /* Last run through this loop. */
+ tmp1 = U_NORMALIZE (nf, tmp2, tmp2_length,
+ resultbuf, lengthp);
+ if (tmp1 == NULL)
+ {
+ int saved_errno = errno;
+ if (tmp2 != tmpbuf2)
+ free (tmp2);
+ errno = saved_errno;
+ return NULL;
+ }
+
+ if (tmp2 != tmpbuf2)
+ free (tmp2);
+ }
+ while (--repeat > 0);
+
+ return tmp1;
+ }
+}
diff --git a/lib/unicase/u-ct-totitle.h b/lib/unicase/u-ct-totitle.h
new file mode 100644
index 00000000..f0d4fd77
--- /dev/null
+++ b/lib/unicase/u-ct-totitle.h
@@ -0,0 +1,501 @@
+/* Titlecase mapping for UTF-8/UTF-16/UTF-32 substrings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Quoting the Unicode standard, section "Default Case Algorithms":
+ Find the word boundaries in X according to Unicode Standard Annex #29,
+ “Text Boundaries.” For each word boundary, find the first cased character
+ F following the word boundary. If F exists, map F to Titlecase_Mapping(F);
+ then map all characters C between F and the following word boundary to
+ Lowercase_Mapping(C). */
+
+UNIT *
+FUNC (const UNIT *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ UNIT *resultbuf, size_t *lengthp)
+{
+ /* The result being accumulated. */
+ UNIT *result;
+ size_t length;
+ size_t allocated;
+ /* An array containing the word break positions. */
+ char *wordbreaks;
+
+ /* Initialize the accumulator. */
+ if (nf != NULL || resultbuf == NULL)
+ {
+ result = NULL;
+ allocated = 0;
+ }
+ else
+ {
+ result = resultbuf;
+ allocated = *lengthp;
+ }
+ length = 0;
+
+ /* Initialize the word breaks array. */
+ if (n > 0)
+ {
+ wordbreaks = (char *) malloc (n);
+ if (wordbreaks == NULL)
+ {
+ errno = ENOMEM;
+ goto fail2;
+ }
+ U_WORDBREAKS (s, n, wordbreaks);
+ }
+ else
+ wordbreaks = NULL;
+
+ {
+ const UNIT *s_end = s + n;
+ const char *wp = wordbreaks;
+
+ /* When considering the string as segmented by word boundaries: For each
+ such segment:
+ - In the first part, we are searching for the first cased character.
+ In this state, in_word_first_part = true, and no conversion takes
+ place.
+ - In the second part, we are converting every character: the first
+ among these characters to title case, the other ones to lower case.
+ In this state, in_word_first_part = false. */
+ bool in_word_first_part = true;
+
+ /* Helper for evaluating the FINAL_SIGMA condition:
+ Last character that was not case-ignorable. */
+ ucs4_t last_char_except_ignorable =
+ prefix_context.last_char_except_ignorable;
+
+ /* Helper for evaluating the AFTER_SOFT_DOTTED and AFTER_I conditions:
+ Last character that was of combining class 230 ("Above") or 0. */
+ ucs4_t last_char_normal_or_above =
+ prefix_context.last_char_normal_or_above;
+
+ while (s < s_end)
+ {
+ /* Fetch the next character. */
+ ucs4_t uc;
+ int count = U_MBTOUC_UNSAFE (&uc, s, s_end - s);
+
+ ucs4_t (*single_character_map) (ucs4_t);
+ size_t offset_in_rule; /* offset in 'struct special_casing_rule' */
+
+ ucs4_t mapped_uc[3];
+ unsigned int mapped_count;
+
+ if (*wp)
+ /* Crossing a word boundary. */
+ in_word_first_part = true;
+
+ /* Determine single_character_map, offset_in_rule.
+ There are three possibilities:
+ - uc should not be converted.
+ - uc should be titlecased.
+ - uc should be lowercased. */
+ if (in_word_first_part)
+ {
+ if (uc_is_cased (uc))
+ {
+ /* uc is to be titlecased. */
+ single_character_map = uc_totitle;
+ offset_in_rule = offsetof (struct special_casing_rule, title[0]);
+ in_word_first_part = false;
+ }
+ else
+ {
+ /* uc is not converted. */
+ single_character_map = NULL;
+ offset_in_rule = 0;
+ }
+ }
+ else
+ {
+ /* uc is to be lowercased. */
+ single_character_map = uc_tolower;
+ offset_in_rule = offsetof (struct special_casing_rule, lower[0]);
+ }
+
+ /* Actually map uc. */
+ if (single_character_map == NULL)
+ {
+ mapped_uc[0] = uc;
+ mapped_count = 1;
+ goto found_mapping;
+ }
+
+ if (uc < 0x10000)
+ {
+ /* Look first in the special-casing table. */
+ char code[3];
+
+ code[0] = (uc >> 8) & 0xff;
+ code[1] = uc & 0xff;
+
+ for (code[2] = 0; ; code[2]++)
+ {
+ const struct special_casing_rule *rule =
+ gl_unicase_special_lookup (code, 3);
+
+ if (rule == NULL)
+ break;
+
+ /* Test if the condition applies. */
+ /* Does the language apply? */
+ if (rule->language[0] == '\0'
+ || (iso639_language != NULL
+ && iso639_language[0] == rule->language[0]
+ && iso639_language[1] == rule->language[1]))
+ {
+ /* Does the context apply? */
+ int context = rule->context;
+ bool applies;
+
+ if (context < 0)
+ context = - context;
+ switch (context)
+ {
+ case SCC_ALWAYS:
+ applies = true;
+ break;
+
+ case SCC_FINAL_SIGMA:
+ /* "Before" condition: preceded by a sequence
+ consisting of a cased letter and a case-ignorable
+ sequence.
+ "After" condition: not followed by a sequence
+ consisting of a case-ignorable sequence and then a
+ cased letter. */
+ /* Test the "before" condition. */
+ applies = uc_is_cased (last_char_except_ignorable);
+ /* Test the "after" condition. */
+ if (applies)
+ {
+ const UNIT *s2 = s + count;
+ for (;;)
+ {
+ if (s2 < s_end)
+ {
+ ucs4_t uc2;
+ int count2 = U_MBTOUC_UNSAFE (&uc2, s2, s_end - s2);
+ /* Our uc_is_case_ignorable function is
+ known to return false for all cased
+ characters. So we can call
+ uc_is_case_ignorable first. */
+ if (!uc_is_case_ignorable (uc2))
+ {
+ applies = ! uc_is_cased (uc2);
+ break;
+ }
+ s2 += count2;
+ }
+ else
+ {
+ applies = ! uc_is_cased (suffix_context.first_char_except_ignorable);
+ break;
+ }
+ }
+ }
+ break;
+
+ case SCC_AFTER_SOFT_DOTTED:
+ /* "Before" condition: There is a Soft_Dotted character
+ before it, with no intervening character of
+ combining class 0 or 230 (Above). */
+ /* Test the "before" condition. */
+ applies = uc_is_property_soft_dotted (last_char_normal_or_above);
+ break;
+
+ case SCC_MORE_ABOVE:
+ /* "After" condition: followed by a character of
+ combining class 230 (Above) with no intervening
+ character of combining class 0 or 230 (Above). */
+ /* Test the "after" condition. */
+ {
+ const UNIT *s2 = s + count;
+ applies = false;
+ for (;;)
+ {
+ if (s2 < s_end)
+ {
+ ucs4_t uc2;
+ int count2 = U_MBTOUC_UNSAFE (&uc2, s2, s_end - s2);
+ int ccc = uc_combining_class (uc2);
+ if (ccc == UC_CCC_A)
+ {
+ applies = true;
+ break;
+ }
+ if (ccc == UC_CCC_NR)
+ break;
+ s2 += count2;
+ }
+ else
+ {
+ applies = ((suffix_context.bits & SCC_MORE_ABOVE_MASK) != 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case SCC_BEFORE_DOT:
+ /* "After" condition: followed by COMBINING DOT ABOVE
+ (U+0307). Any sequence of characters with a
+ combining class that is neither 0 nor 230 may
+ intervene between the current character and the
+ combining dot above. */
+ /* Test the "after" condition. */
+ {
+ const UNIT *s2 = s + count;
+ applies = false;
+ for (;;)
+ {
+ if (s2 < s_end)
+ {
+ ucs4_t uc2;
+ int count2 = U_MBTOUC_UNSAFE (&uc2, s2, s_end - s2);
+ if (uc2 == 0x0307) /* COMBINING DOT ABOVE */
+ {
+ applies = true;
+ break;
+ }
+ {
+ int ccc = uc_combining_class (uc2);
+ if (ccc == UC_CCC_A || ccc == UC_CCC_NR)
+ break;
+ }
+ s2 += count2;
+ }
+ else
+ {
+ applies = ((suffix_context.bits & SCC_BEFORE_DOT_MASK) != 0);
+ break;
+ }
+ }
+ }
+ break;
+
+ case SCC_AFTER_I:
+ /* "Before" condition: There is an uppercase I before
+ it, and there is no intervening character of
+ combining class 0 or 230 (Above). */
+ /* Test the "before" condition. */
+ applies = (last_char_normal_or_above == 'I');
+ break;
+
+ default:
+ abort ();
+ }
+ if (rule->context < 0)
+ applies = !applies;
+
+ if (applies)
+ {
+ /* The rule applies.
+ Look up the mapping (0 to 3 characters). */
+ const unsigned short *mapped_in_rule =
+ (const unsigned short *)((const char *)rule + offset_in_rule);
+
+ if (mapped_in_rule[0] == 0)
+ mapped_count = 0;
+ else
+ {
+ mapped_uc[0] = mapped_in_rule[0];
+ if (mapped_in_rule[1] == 0)
+ mapped_count = 1;
+ else
+ {
+ mapped_uc[1] = mapped_in_rule[1];
+ if (mapped_in_rule[2] == 0)
+ mapped_count = 2;
+ else
+ {
+ mapped_uc[2] = mapped_in_rule[2];
+ mapped_count = 3;
+ }
+ }
+ }
+ goto found_mapping;
+ }
+ }
+
+ /* Optimization: Save a hash table lookup in the next round. */
+ if (!rule->has_next)
+ break;
+ }
+ }
+
+ /* No special-cased mapping. So use the locale and context independent
+ mapping. */
+ mapped_uc[0] = single_character_map (uc);
+ mapped_count = 1;
+
+ found_mapping:
+ /* Found the mapping: uc maps to mapped_uc[0..mapped_count-1]. */
+ {
+ unsigned int i;
+
+ for (i = 0; i < mapped_count; i++)
+ {
+ ucs4_t muc = mapped_uc[i];
+
+ /* Append muc to the result accumulator. */
+ if (length < allocated)
+ {
+ int ret = U_UCTOMB (result + length, muc, allocated - length);
+ if (ret == -1)
+ {
+ errno = EINVAL;
+ goto fail1;
+ }
+ if (ret >= 0)
+ {
+ length += ret;
+ goto done_appending;
+ }
+ }
+ {
+ size_t old_allocated = allocated;
+ size_t new_allocated = 2 * old_allocated;
+ if (new_allocated < 64)
+ new_allocated = 64;
+ if (new_allocated < old_allocated) /* integer overflow? */
+ abort ();
+ {
+ UNIT *larger_result;
+ if (result == NULL)
+ {
+ larger_result = (UNIT *) malloc (new_allocated * sizeof (UNIT));
+ if (larger_result == NULL)
+ {
+ errno = ENOMEM;
+ goto fail1;
+ }
+ }
+ else if (result == resultbuf)
+ {
+ larger_result = (UNIT *) malloc (new_allocated * sizeof (UNIT));
+ if (larger_result == NULL)
+ {
+ errno = ENOMEM;
+ goto fail1;
+ }
+ U_CPY (larger_result, resultbuf, length);
+ }
+ else
+ {
+ larger_result =
+ (UNIT *) realloc (result, new_allocated * sizeof (UNIT));
+ if (larger_result == NULL)
+ {
+ errno = ENOMEM;
+ goto fail1;
+ }
+ }
+ result = larger_result;
+ allocated = new_allocated;
+ {
+ int ret = U_UCTOMB (result + length, muc, allocated - length);
+ if (ret == -1)
+ {
+ errno = EINVAL;
+ goto fail1;
+ }
+ if (ret < 0)
+ abort ();
+ length += ret;
+ goto done_appending;
+ }
+ }
+ }
+ done_appending: ;
+ }
+ }
+
+ if (!uc_is_case_ignorable (uc))
+ last_char_except_ignorable = uc;
+
+ {
+ int ccc = uc_combining_class (uc);
+ if (ccc == UC_CCC_A || ccc == UC_CCC_NR)
+ last_char_normal_or_above = uc;
+ }
+
+ s += count;
+ wp += count;
+ }
+ }
+
+ free (wordbreaks);
+
+ if (nf != NULL)
+ {
+ /* Finally, normalize the result. */
+ UNIT *normalized_result;
+
+ normalized_result = U_NORMALIZE (nf, result, length, resultbuf, lengthp);
+ if (normalized_result == NULL)
+ goto fail2;
+
+ free (result);
+ return normalized_result;
+ }
+
+ if (length == 0)
+ {
+ if (result == NULL)
+ {
+ /* Return a non-NULL value. NULL means error. */
+ result = (UNIT *) malloc (1);
+ if (result == NULL)
+ {
+ errno = ENOMEM;
+ goto fail2;
+ }
+ }
+ }
+ else if (result != resultbuf && length < allocated)
+ {
+ /* Shrink the allocated memory if possible. */
+ UNIT *memory;
+
+ memory = (UNIT *) realloc (result, length * sizeof (UNIT));
+ if (memory != NULL)
+ result = memory;
+ }
+
+ *lengthp = length;
+ return result;
+
+ fail1:
+ {
+ int saved_errno = errno;
+ free (wordbreaks);
+ errno = saved_errno;
+ }
+ fail2:
+ if (result != resultbuf)
+ {
+ int saved_errno = errno;
+ free (result);
+ errno = saved_errno;
+ }
+ return NULL;
+}
diff --git a/lib/unicase/u-is-cased.h b/lib/unicase/u-is-cased.h
new file mode 100644
index 00000000..b96a60f0
--- /dev/null
+++ b/lib/unicase/u-is-cased.h
@@ -0,0 +1,128 @@
+/* Test whether case matters for a Unicode string.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+int
+FUNC (const UNIT *s, size_t n, const char *iso639_language,
+ bool *resultp)
+{
+ UNIT normsbuf[2048 / sizeof (UNIT)];
+ UNIT *norms;
+ size_t norms_length;
+ UNIT mappedbuf[2048 / sizeof (UNIT)];
+ UNIT *mapped_toupper;
+ UNIT *mapped_tolower;
+ UNIT *mapped_totitle;
+ size_t mapped_length;
+
+ /* Apply canonical decomposition to S. */
+ norms_length = sizeof (normsbuf) / sizeof (UNIT);
+ norms = U_NORMALIZE (UNINORM_NFD, s, n, normsbuf, &norms_length);
+ if (norms == NULL)
+ /* errno is set here. */
+ return -1;
+
+ mapped_length = sizeof (mappedbuf) / sizeof (UNIT);
+
+ /* Apply toupper mapping. */
+ mapped_toupper = U_TOUPPER (norms, norms_length, iso639_language, NULL,
+ mappedbuf, &mapped_length);
+ if (mapped_toupper == NULL)
+ goto fail;
+
+ /* Compare. */
+ if (!(mapped_length == norms_length
+ && U_CMP (mapped_toupper, norms, norms_length) == 0))
+ {
+ if (mapped_toupper != mappedbuf)
+ free (mapped_toupper);
+ goto yes;
+ }
+
+ /* Apply tolower mapping. */
+ mapped_tolower = U_TOLOWER (norms, norms_length, iso639_language, NULL,
+ mapped_toupper, &mapped_length);
+ if (mapped_tolower == NULL)
+ {
+ if (mapped_toupper != mappedbuf)
+ {
+ int saved_errno = errno;
+ free (mapped_toupper);
+ errno = saved_errno;
+ }
+ goto fail;
+ }
+
+ if (mapped_toupper != mapped_tolower && mapped_toupper != mappedbuf)
+ free (mapped_toupper);
+
+ /* Compare. */
+ if (!(mapped_length == norms_length
+ && U_CMP (mapped_tolower, norms, norms_length) == 0))
+ {
+ if (mapped_tolower != mappedbuf)
+ free (mapped_tolower);
+ goto yes;
+ }
+
+ /* Apply totitle mapping. */
+ mapped_totitle = U_TOTITLE (norms, norms_length, iso639_language, NULL,
+ mapped_tolower, &mapped_length);
+ if (mapped_totitle == NULL)
+ {
+ if (mapped_tolower != mappedbuf)
+ {
+ int saved_errno = errno;
+ free (mapped_tolower);
+ errno = saved_errno;
+ }
+ goto fail;
+ }
+
+ if (mapped_tolower != mapped_totitle && mapped_tolower != mappedbuf)
+ free (mapped_tolower);
+
+ /* Compare. */
+ if (!(mapped_length == norms_length
+ && U_CMP (mapped_totitle, norms, norms_length) == 0))
+ {
+ if (mapped_totitle != mappedbuf)
+ free (mapped_totitle);
+ goto yes;
+ }
+
+ if (mapped_totitle != mappedbuf)
+ free (mapped_totitle);
+ if (norms != normsbuf)
+ free (norms);
+ *resultp = false;
+ return 0;
+
+ yes:
+ if (norms != normsbuf)
+ free (norms);
+ *resultp = true;
+ return 0;
+
+ fail:
+ if (norms != normsbuf)
+ {
+ int saved_errno = errno;
+ free (norms);
+ errno = saved_errno;
+ }
+ return -1;
+}
diff --git a/lib/unicase/u-is-invariant.h b/lib/unicase/u-is-invariant.h
new file mode 100644
index 00000000..e6b7fbb4
--- /dev/null
+++ b/lib/unicase/u-is-invariant.h
@@ -0,0 +1,64 @@
+/* Test whether a Unicode string is invariant under a given case mapping.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+int
+FUNC (const UNIT *s, size_t n,
+ UNIT * (*mapping) (const UNIT *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ UNIT *resultbuf, size_t *lengthp),
+ const char *iso639_language,
+ bool *resultp)
+{
+ UNIT normsbuf[2048 / sizeof (UNIT)];
+ UNIT *norms;
+ size_t norms_length;
+ UNIT mappedbuf[2048 / sizeof (UNIT)];
+ UNIT *mapped;
+ size_t mapped_length;
+
+ /* Apply canonical decomposition to S. */
+ norms_length = sizeof (normsbuf) / sizeof (UNIT);
+ norms = U_NORMALIZE (UNINORM_NFD, s, n, normsbuf, &norms_length);
+ if (norms == NULL)
+ /* errno is set here. */
+ return -1;
+
+ /* Apply mapping. */
+ mapped_length = sizeof (mappedbuf) / sizeof (UNIT);
+ mapped = mapping (norms, norms_length, iso639_language, NULL,
+ mappedbuf, &mapped_length);
+ if (mapped == NULL)
+ {
+ if (norms != normsbuf)
+ {
+ int saved_errno = errno;
+ free (norms);
+ errno = saved_errno;
+ }
+ return -1;
+ }
+
+ /* Compare. */
+ *resultp = (mapped_length == norms_length
+ && U_CMP (mapped, norms, norms_length) == 0);
+
+ if (mapped != mappedbuf)
+ free (mapped);
+ if (norms != normsbuf)
+ free (norms);
+ return 0;
+}
diff --git a/lib/unicase/u-totitle.h b/lib/unicase/u-totitle.h
new file mode 100644
index 00000000..431f000a
--- /dev/null
+++ b/lib/unicase/u-totitle.h
@@ -0,0 +1,28 @@
+/* Titlecase mapping for UTF-8/UTF-16/UTF-32 strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+UNIT *
+FUNC (const UNIT *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ UNIT *resultbuf, size_t *lengthp)
+{
+ return U_CT_TOTITLE (s, n,
+ unicase_empty_prefix_context, unicase_empty_suffix_context,
+ iso639_language,
+ nf,
+ resultbuf, lengthp);
+}
diff --git a/lib/unicase/u16-casecmp.c b/lib/unicase/u16-casecmp.c
new file mode 100644
index 00000000..1110874e
--- /dev/null
+++ b/lib/unicase/u16-casecmp.c
@@ -0,0 +1,35 @@
+/* Case and normalization insensitive comparison of UTF-16 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "minmax.h"
+#include "uninorm.h"
+#include "unistr.h"
+
+#define FUNC u16_casecmp
+#define UNIT uint16_t
+#define SRC_UNIT uint16_t
+#define U_CASEFOLD u16_casefold
+#define U_CMP2 u16_cmp2
+#include "u-casecmp.h"
diff --git a/lib/unicase/u16-casecoll.c b/lib/unicase/u16-casecoll.c
new file mode 100644
index 00000000..882039cf
--- /dev/null
+++ b/lib/unicase/u16-casecoll.c
@@ -0,0 +1,32 @@
+/* Locale dependent, case and normalization insensitive comparison of UTF-16
+ strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "memcmp2.h"
+
+#define FUNC u16_casecoll
+#define UNIT uint16_t
+#define U_CASEXFRM u16_casexfrm
+#include "u-casecoll.h"
diff --git a/lib/unicase/u16-casefold.c b/lib/unicase/u16-casefold.c
new file mode 100644
index 00000000..55522753
--- /dev/null
+++ b/lib/unicase/u16-casefold.c
@@ -0,0 +1,26 @@
+/* Casefolding mapping for UTF-16 strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#define FUNC u16_casefold
+#define UNIT uint16_t
+#define U_CT_CASEFOLD u16_ct_casefold
+#include "u-casefold.h"
diff --git a/lib/unicase/u16-casemap.c b/lib/unicase/u16-casemap.c
new file mode 100644
index 00000000..0766de92
--- /dev/null
+++ b/lib/unicase/u16-casemap.c
@@ -0,0 +1,40 @@
+/* Case mapping for UTF-16 strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicasemap.h"
+
+#include <errno.h>
+#include <stdbool.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "unictype.h"
+#include "uninorm.h"
+#include "caseprop.h"
+#include "context.h"
+#include "special-casing.h"
+
+#define FUNC u16_casemap
+#define UNIT uint16_t
+#define U_MBTOUC_UNSAFE u16_mbtouc_unsafe
+#define U_UCTOMB u16_uctomb
+#define U_CPY u16_cpy
+#define U_NORMALIZE u16_normalize
+#include "u-casemap.h"
diff --git a/lib/unicase/u16-casexfrm.c b/lib/unicase/u16-casexfrm.c
new file mode 100644
index 00000000..09d08ce1
--- /dev/null
+++ b/lib/unicase/u16-casexfrm.c
@@ -0,0 +1,35 @@
+/* Locale dependent transformation for case insensitive comparison of UTF-16
+ strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "localcharset.h"
+#include "uniconv.h"
+#include "memxfrm.h"
+
+#define FUNC u16_casexfrm
+#define UNIT uint16_t
+#define U_CASEFOLD u16_casefold
+#define U_CONV_TO_ENCODING u16_conv_to_encoding
+#include "u-casexfrm.h"
diff --git a/lib/unicase/u16-ct-casefold.c b/lib/unicase/u16-ct-casefold.c
new file mode 100644
index 00000000..6dff77d7
--- /dev/null
+++ b/lib/unicase/u16-ct-casefold.c
@@ -0,0 +1,35 @@
+/* Casefolding mapping for UTF-16 substrings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stddef.h>
+#include <stdlib.h>
+
+#include "unicasemap.h"
+#include "special-casing.h"
+#include "casefold.h"
+
+#define FUNC u16_ct_casefold
+#define UNIT uint16_t
+#define U_CASEMAP u16_casemap
+#define U_NORMALIZE u16_normalize
+#include "u-ct-casefold.h"
diff --git a/lib/unicase/u16-ct-tolower.c b/lib/unicase/u16-ct-tolower.c
new file mode 100644
index 00000000..36b34e04
--- /dev/null
+++ b/lib/unicase/u16-ct-tolower.c
@@ -0,0 +1,40 @@
+/* Lowercase mapping for UTF-16 substrings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <stddef.h>
+
+#include "unicasemap.h"
+#include "special-casing.h"
+
+uint16_t *
+u16_ct_tolower (const uint16_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ uint16_t *resultbuf, size_t *lengthp)
+{
+ return u16_casemap (s, n, prefix_context, suffix_context, iso639_language,
+ uc_tolower, offsetof (struct special_casing_rule, lower[0]),
+ nf,
+ resultbuf, lengthp);
+}
diff --git a/lib/unicase/u16-ct-totitle.c b/lib/unicase/u16-ct-totitle.c
new file mode 100644
index 00000000..c01021b8
--- /dev/null
+++ b/lib/unicase/u16-ct-totitle.c
@@ -0,0 +1,43 @@
+/* Titlecase mapping for UTF-16 substrings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "unictype.h"
+#include "uniwbrk.h"
+#include "uninorm.h"
+#include "caseprop.h"
+#include "context.h"
+#include "special-casing.h"
+
+#define FUNC u16_ct_totitle
+#define UNIT uint16_t
+#define U_WORDBREAKS u16_wordbreaks
+#define U_MBTOUC_UNSAFE u16_mbtouc_unsafe
+#define U_UCTOMB u16_uctomb
+#define U_CPY u16_cpy
+#define U_NORMALIZE u16_normalize
+#include "u-ct-totitle.h"
diff --git a/lib/unicase/u16-ct-toupper.c b/lib/unicase/u16-ct-toupper.c
new file mode 100644
index 00000000..029c74b4
--- /dev/null
+++ b/lib/unicase/u16-ct-toupper.c
@@ -0,0 +1,40 @@
+/* Uppercase mapping for UTF-16 substrings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <stddef.h>
+
+#include "unicasemap.h"
+#include "special-casing.h"
+
+uint16_t *
+u16_ct_toupper (const uint16_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ uint16_t *resultbuf, size_t *lengthp)
+{
+ return u16_casemap (s, n, prefix_context, suffix_context, iso639_language,
+ uc_toupper, offsetof (struct special_casing_rule, upper[0]),
+ nf,
+ resultbuf, lengthp);
+}
diff --git a/lib/unicase/u16-is-cased.c b/lib/unicase/u16-is-cased.c
new file mode 100644
index 00000000..c2196cef
--- /dev/null
+++ b/lib/unicase/u16-is-cased.c
@@ -0,0 +1,36 @@
+/* Test whether case matters for an UTF-16 string.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "uninorm.h"
+#include "unistr.h"
+
+#define FUNC u16_is_cased
+#define UNIT uint16_t
+#define U_NORMALIZE u16_normalize
+#define U_TOUPPER u16_toupper
+#define U_TOLOWER u16_tolower
+#define U_TOTITLE u16_totitle
+#define U_CMP u16_cmp
+#include "u-is-cased.h"
diff --git a/lib/unicase/u16-is-casefolded.c b/lib/unicase/u16-is-casefolded.c
new file mode 100644
index 00000000..64a4ec18
--- /dev/null
+++ b/lib/unicase/u16-is-casefolded.c
@@ -0,0 +1,30 @@
+/* Test whether an UTF-16 string is already case-folded.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include "unicase/invariant.h"
+
+int
+u16_is_casefolded (const uint16_t *s, size_t n, const char *iso639_language,
+ bool *resultp)
+{
+ return u16_is_invariant (s, n, u16_casefold, iso639_language, resultp);
+}
diff --git a/lib/unicase/u16-is-invariant.c b/lib/unicase/u16-is-invariant.c
new file mode 100644
index 00000000..cace25a7
--- /dev/null
+++ b/lib/unicase/u16-is-invariant.c
@@ -0,0 +1,33 @@
+/* Test whether an UTF-16 string is invariant under a given case mapping.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase/invariant.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "uninorm.h"
+#include "unistr.h"
+
+#define FUNC u16_is_invariant
+#define UNIT uint16_t
+#define U_NORMALIZE u16_normalize
+#define U_CMP u16_cmp
+#include "u-is-invariant.h"
diff --git a/lib/unicase/u16-is-lowercase.c b/lib/unicase/u16-is-lowercase.c
new file mode 100644
index 00000000..36a01512
--- /dev/null
+++ b/lib/unicase/u16-is-lowercase.c
@@ -0,0 +1,30 @@
+/* Test whether an UTF-16 string is entirely lower case.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include "unicase/invariant.h"
+
+int
+u16_is_lowercase (const uint16_t *s, size_t n, const char *iso639_language,
+ bool *resultp)
+{
+ return u16_is_invariant (s, n, u16_tolower, iso639_language, resultp);
+}
diff --git a/lib/unicase/u16-is-titlecase.c b/lib/unicase/u16-is-titlecase.c
new file mode 100644
index 00000000..19aacea1
--- /dev/null
+++ b/lib/unicase/u16-is-titlecase.c
@@ -0,0 +1,30 @@
+/* Test whether an UTF-16 string is entirely title case.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include "unicase/invariant.h"
+
+int
+u16_is_titlecase (const uint16_t *s, size_t n, const char *iso639_language,
+ bool *resultp)
+{
+ return u16_is_invariant (s, n, u16_totitle, iso639_language, resultp);
+}
diff --git a/lib/unicase/u16-is-uppercase.c b/lib/unicase/u16-is-uppercase.c
new file mode 100644
index 00000000..53e697fd
--- /dev/null
+++ b/lib/unicase/u16-is-uppercase.c
@@ -0,0 +1,30 @@
+/* Test whether an UTF-16 string is entirely upper case.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include "unicase/invariant.h"
+
+int
+u16_is_uppercase (const uint16_t *s, size_t n, const char *iso639_language,
+ bool *resultp)
+{
+ return u16_is_invariant (s, n, u16_toupper, iso639_language, resultp);
+}
diff --git a/lib/unicase/u16-tolower.c b/lib/unicase/u16-tolower.c
new file mode 100644
index 00000000..0629cb4d
--- /dev/null
+++ b/lib/unicase/u16-tolower.c
@@ -0,0 +1,39 @@
+/* Lowercase mapping for UTF-16 strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <stddef.h>
+
+#include "unicasemap.h"
+#include "special-casing.h"
+
+uint16_t *
+u16_tolower (const uint16_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint16_t *resultbuf, size_t *lengthp)
+{
+ return u16_casemap (s, n,
+ unicase_empty_prefix_context, unicase_empty_suffix_context,
+ iso639_language,
+ uc_tolower, offsetof (struct special_casing_rule, lower[0]),
+ nf,
+ resultbuf, lengthp);
+}
diff --git a/lib/unicase/u16-totitle.c b/lib/unicase/u16-totitle.c
new file mode 100644
index 00000000..e0d14e83
--- /dev/null
+++ b/lib/unicase/u16-totitle.c
@@ -0,0 +1,27 @@
+/* Titlecase mapping for UTF-16 strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#define FUNC u16_totitle
+#define UNIT uint16_t
+#define U_CT_TOTITLE u16_ct_totitle
+#include "u-totitle.h"
+
diff --git a/lib/unicase/u16-toupper.c b/lib/unicase/u16-toupper.c
new file mode 100644
index 00000000..f92989aa
--- /dev/null
+++ b/lib/unicase/u16-toupper.c
@@ -0,0 +1,39 @@
+/* Uppercase mapping for UTF-16 strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <stddef.h>
+
+#include "unicasemap.h"
+#include "special-casing.h"
+
+uint16_t *
+u16_toupper (const uint16_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint16_t *resultbuf, size_t *lengthp)
+{
+ return u16_casemap (s, n,
+ unicase_empty_prefix_context, unicase_empty_suffix_context,
+ iso639_language,
+ uc_toupper, offsetof (struct special_casing_rule, upper[0]),
+ nf,
+ resultbuf, lengthp);
+}
diff --git a/lib/unicase/u32-casecmp.c b/lib/unicase/u32-casecmp.c
new file mode 100644
index 00000000..e964915f
--- /dev/null
+++ b/lib/unicase/u32-casecmp.c
@@ -0,0 +1,35 @@
+/* Case and normalization insensitive comparison of UTF-32 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "minmax.h"
+#include "uninorm.h"
+#include "unistr.h"
+
+#define FUNC u32_casecmp
+#define UNIT uint32_t
+#define SRC_UNIT uint32_t
+#define U_CASEFOLD u32_casefold
+#define U_CMP2 u32_cmp2
+#include "u-casecmp.h"
diff --git a/lib/unicase/u32-casecoll.c b/lib/unicase/u32-casecoll.c
new file mode 100644
index 00000000..88d994a0
--- /dev/null
+++ b/lib/unicase/u32-casecoll.c
@@ -0,0 +1,32 @@
+/* Locale dependent, case and normalization insensitive comparison of UTF-32
+ strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "memcmp2.h"
+
+#define FUNC u32_casecoll
+#define UNIT uint32_t
+#define U_CASEXFRM u32_casexfrm
+#include "u-casecoll.h"
diff --git a/lib/unicase/u32-casefold.c b/lib/unicase/u32-casefold.c
new file mode 100644
index 00000000..aff44f82
--- /dev/null
+++ b/lib/unicase/u32-casefold.c
@@ -0,0 +1,26 @@
+/* Casefolding mapping for UTF-32 strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#define FUNC u32_casefold
+#define UNIT uint32_t
+#define U_CT_CASEFOLD u32_ct_casefold
+#include "u-casefold.h"
diff --git a/lib/unicase/u32-casemap.c b/lib/unicase/u32-casemap.c
new file mode 100644
index 00000000..43e2641c
--- /dev/null
+++ b/lib/unicase/u32-casemap.c
@@ -0,0 +1,40 @@
+/* Case mapping for UTF-32 strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicasemap.h"
+
+#include <errno.h>
+#include <stdbool.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "unictype.h"
+#include "uninorm.h"
+#include "caseprop.h"
+#include "context.h"
+#include "special-casing.h"
+
+#define FUNC u32_casemap
+#define UNIT uint32_t
+#define U_MBTOUC_UNSAFE u32_mbtouc_unsafe
+#define U_UCTOMB u32_uctomb
+#define U_CPY u32_cpy
+#define U_NORMALIZE u32_normalize
+#include "u-casemap.h"
diff --git a/lib/unicase/u32-casexfrm.c b/lib/unicase/u32-casexfrm.c
new file mode 100644
index 00000000..cf8fee67
--- /dev/null
+++ b/lib/unicase/u32-casexfrm.c
@@ -0,0 +1,35 @@
+/* Locale dependent transformation for case insensitive comparison of UTF-32
+ strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "localcharset.h"
+#include "uniconv.h"
+#include "memxfrm.h"
+
+#define FUNC u32_casexfrm
+#define UNIT uint32_t
+#define U_CASEFOLD u32_casefold
+#define U_CONV_TO_ENCODING u32_conv_to_encoding
+#include "u-casexfrm.h"
diff --git a/lib/unicase/u32-ct-casefold.c b/lib/unicase/u32-ct-casefold.c
new file mode 100644
index 00000000..e206b677
--- /dev/null
+++ b/lib/unicase/u32-ct-casefold.c
@@ -0,0 +1,35 @@
+/* Casefolding mapping for UTF-32 substrings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stddef.h>
+#include <stdlib.h>
+
+#include "unicasemap.h"
+#include "special-casing.h"
+#include "casefold.h"
+
+#define FUNC u32_ct_casefold
+#define UNIT uint32_t
+#define U_CASEMAP u32_casemap
+#define U_NORMALIZE u32_normalize
+#include "u-ct-casefold.h"
diff --git a/lib/unicase/u32-ct-tolower.c b/lib/unicase/u32-ct-tolower.c
new file mode 100644
index 00000000..83e9fa84
--- /dev/null
+++ b/lib/unicase/u32-ct-tolower.c
@@ -0,0 +1,40 @@
+/* Lowercase mapping for UTF-32 substrings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <stddef.h>
+
+#include "unicasemap.h"
+#include "special-casing.h"
+
+uint32_t *
+u32_ct_tolower (const uint32_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ uint32_t *resultbuf, size_t *lengthp)
+{
+ return u32_casemap (s, n, prefix_context, suffix_context, iso639_language,
+ uc_tolower, offsetof (struct special_casing_rule, lower[0]),
+ nf,
+ resultbuf, lengthp);
+}
diff --git a/lib/unicase/u32-ct-totitle.c b/lib/unicase/u32-ct-totitle.c
new file mode 100644
index 00000000..f2a38782
--- /dev/null
+++ b/lib/unicase/u32-ct-totitle.c
@@ -0,0 +1,43 @@
+/* Titlecase mapping for UTF-32 substrings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "unictype.h"
+#include "uniwbrk.h"
+#include "uninorm.h"
+#include "caseprop.h"
+#include "context.h"
+#include "special-casing.h"
+
+#define FUNC u32_ct_totitle
+#define UNIT uint32_t
+#define U_WORDBREAKS u32_wordbreaks
+#define U_MBTOUC_UNSAFE u32_mbtouc_unsafe
+#define U_UCTOMB u32_uctomb
+#define U_CPY u32_cpy
+#define U_NORMALIZE u32_normalize
+#include "u-ct-totitle.h"
diff --git a/lib/unicase/u32-ct-toupper.c b/lib/unicase/u32-ct-toupper.c
new file mode 100644
index 00000000..9043ddeb
--- /dev/null
+++ b/lib/unicase/u32-ct-toupper.c
@@ -0,0 +1,40 @@
+/* Uppercase mapping for UTF-32 substrings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <stddef.h>
+
+#include "unicasemap.h"
+#include "special-casing.h"
+
+uint32_t *
+u32_ct_toupper (const uint32_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ uint32_t *resultbuf, size_t *lengthp)
+{
+ return u32_casemap (s, n, prefix_context, suffix_context, iso639_language,
+ uc_toupper, offsetof (struct special_casing_rule, upper[0]),
+ nf,
+ resultbuf, lengthp);
+}
diff --git a/lib/unicase/u32-is-cased.c b/lib/unicase/u32-is-cased.c
new file mode 100644
index 00000000..783e57e9
--- /dev/null
+++ b/lib/unicase/u32-is-cased.c
@@ -0,0 +1,36 @@
+/* Test whether case matters for an UTF-32 string.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "uninorm.h"
+#include "unistr.h"
+
+#define FUNC u32_is_cased
+#define UNIT uint32_t
+#define U_NORMALIZE u32_normalize
+#define U_TOUPPER u32_toupper
+#define U_TOLOWER u32_tolower
+#define U_TOTITLE u32_totitle
+#define U_CMP u32_cmp
+#include "u-is-cased.h"
diff --git a/lib/unicase/u32-is-casefolded.c b/lib/unicase/u32-is-casefolded.c
new file mode 100644
index 00000000..a71c767d
--- /dev/null
+++ b/lib/unicase/u32-is-casefolded.c
@@ -0,0 +1,30 @@
+/* Test whether an UTF-32 string is already case-folded.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include "unicase/invariant.h"
+
+int
+u32_is_casefolded (const uint32_t *s, size_t n, const char *iso639_language,
+ bool *resultp)
+{
+ return u32_is_invariant (s, n, u32_casefold, iso639_language, resultp);
+}
diff --git a/lib/unicase/u32-is-invariant.c b/lib/unicase/u32-is-invariant.c
new file mode 100644
index 00000000..190a30fe
--- /dev/null
+++ b/lib/unicase/u32-is-invariant.c
@@ -0,0 +1,33 @@
+/* Test whether an UTF-32 string is invariant under a given case mapping.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase/invariant.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "uninorm.h"
+#include "unistr.h"
+
+#define FUNC u32_is_invariant
+#define UNIT uint32_t
+#define U_NORMALIZE u32_normalize
+#define U_CMP u32_cmp
+#include "u-is-invariant.h"
diff --git a/lib/unicase/u32-is-lowercase.c b/lib/unicase/u32-is-lowercase.c
new file mode 100644
index 00000000..104afaae
--- /dev/null
+++ b/lib/unicase/u32-is-lowercase.c
@@ -0,0 +1,30 @@
+/* Test whether an UTF-32 string is entirely lower case.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include "unicase/invariant.h"
+
+int
+u32_is_lowercase (const uint32_t *s, size_t n, const char *iso639_language,
+ bool *resultp)
+{
+ return u32_is_invariant (s, n, u32_tolower, iso639_language, resultp);
+}
diff --git a/lib/unicase/u32-is-titlecase.c b/lib/unicase/u32-is-titlecase.c
new file mode 100644
index 00000000..5b07c8dd
--- /dev/null
+++ b/lib/unicase/u32-is-titlecase.c
@@ -0,0 +1,30 @@
+/* Test whether an UTF-32 string is entirely title case.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include "unicase/invariant.h"
+
+int
+u32_is_titlecase (const uint32_t *s, size_t n, const char *iso639_language,
+ bool *resultp)
+{
+ return u32_is_invariant (s, n, u32_totitle, iso639_language, resultp);
+}
diff --git a/lib/unicase/u32-is-uppercase.c b/lib/unicase/u32-is-uppercase.c
new file mode 100644
index 00000000..bb38fc69
--- /dev/null
+++ b/lib/unicase/u32-is-uppercase.c
@@ -0,0 +1,30 @@
+/* Test whether an UTF-32 string is entirely upper case.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include "unicase/invariant.h"
+
+int
+u32_is_uppercase (const uint32_t *s, size_t n, const char *iso639_language,
+ bool *resultp)
+{
+ return u32_is_invariant (s, n, u32_toupper, iso639_language, resultp);
+}
diff --git a/lib/unicase/u32-tolower.c b/lib/unicase/u32-tolower.c
new file mode 100644
index 00000000..daa5c4d3
--- /dev/null
+++ b/lib/unicase/u32-tolower.c
@@ -0,0 +1,39 @@
+/* Lowercase mapping for UTF-32 strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <stddef.h>
+
+#include "unicasemap.h"
+#include "special-casing.h"
+
+uint32_t *
+u32_tolower (const uint32_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint32_t *resultbuf, size_t *lengthp)
+{
+ return u32_casemap (s, n,
+ unicase_empty_prefix_context, unicase_empty_suffix_context,
+ iso639_language,
+ uc_tolower, offsetof (struct special_casing_rule, lower[0]),
+ nf,
+ resultbuf, lengthp);
+}
diff --git a/lib/unicase/u32-totitle.c b/lib/unicase/u32-totitle.c
new file mode 100644
index 00000000..21e1b0d1
--- /dev/null
+++ b/lib/unicase/u32-totitle.c
@@ -0,0 +1,26 @@
+/* Titlecase mapping for UTF-32 strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#define FUNC u32_totitle
+#define UNIT uint32_t
+#define U_CT_TOTITLE u32_ct_totitle
+#include "u-totitle.h"
diff --git a/lib/unicase/u32-toupper.c b/lib/unicase/u32-toupper.c
new file mode 100644
index 00000000..3430ad95
--- /dev/null
+++ b/lib/unicase/u32-toupper.c
@@ -0,0 +1,39 @@
+/* Uppercase mapping for UTF-32 strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <stddef.h>
+
+#include "unicasemap.h"
+#include "special-casing.h"
+
+uint32_t *
+u32_toupper (const uint32_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint32_t *resultbuf, size_t *lengthp)
+{
+ return u32_casemap (s, n,
+ unicase_empty_prefix_context, unicase_empty_suffix_context,
+ iso639_language,
+ uc_toupper, offsetof (struct special_casing_rule, upper[0]),
+ nf,
+ resultbuf, lengthp);
+}
diff --git a/lib/unicase/u8-casecmp.c b/lib/unicase/u8-casecmp.c
new file mode 100644
index 00000000..4a55de91
--- /dev/null
+++ b/lib/unicase/u8-casecmp.c
@@ -0,0 +1,35 @@
+/* Case and normalization insensitive comparison of UTF-8 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "minmax.h"
+#include "uninorm.h"
+#include "unistr.h"
+
+#define FUNC u8_casecmp
+#define UNIT uint8_t
+#define SRC_UNIT uint8_t
+#define U_CASEFOLD u8_casefold
+#define U_CMP2 u8_cmp2
+#include "u-casecmp.h"
diff --git a/lib/unicase/u8-casecoll.c b/lib/unicase/u8-casecoll.c
new file mode 100644
index 00000000..28170e54
--- /dev/null
+++ b/lib/unicase/u8-casecoll.c
@@ -0,0 +1,32 @@
+/* Locale dependent, case and normalization insensitive comparison of UTF-8
+ strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "memcmp2.h"
+
+#define FUNC u8_casecoll
+#define UNIT uint8_t
+#define U_CASEXFRM u8_casexfrm
+#include "u-casecoll.h"
diff --git a/lib/unicase/u8-casefold.c b/lib/unicase/u8-casefold.c
new file mode 100644
index 00000000..32108137
--- /dev/null
+++ b/lib/unicase/u8-casefold.c
@@ -0,0 +1,107 @@
+/* Casefolding mapping for UTF-8 strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#define FUNC u8_casefold
+#define UNIT uint8_t
+#define U_CT_CASEFOLD u8_ct_casefold
+#include "u-casefold.h"
+
+
+#ifdef TEST
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* Read the contents of an input stream, and return it, terminated with a NUL
+ byte. */
+char *
+read_file (FILE *stream)
+{
+#define BUFSIZE 4096
+ char *buf = NULL;
+ int alloc = 0;
+ int size = 0;
+ int count;
+
+ while (! feof (stream))
+ {
+ if (size + BUFSIZE > alloc)
+ {
+ alloc = alloc + alloc / 2;
+ if (alloc < size + BUFSIZE)
+ alloc = size + BUFSIZE;
+ buf = realloc (buf, alloc);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ }
+ count = fread (buf + size, 1, BUFSIZE, stream);
+ if (count == 0)
+ {
+ if (ferror (stream))
+ {
+ perror ("fread");
+ exit (1);
+ }
+ }
+ else
+ size += count;
+ }
+ buf = realloc (buf, size + 1);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ buf[size] = '\0';
+ return buf;
+#undef BUFSIZE
+}
+
+int
+main (int argc, char * argv[])
+{
+ setlocale (LC_ALL, "");
+ if (argc == 1)
+ {
+ /* Display the case folded input string. */
+ char *input = read_file (stdin);
+ int length = strlen (input);
+ size_t output_length;
+ uint8_t *output =
+ u8_casefold ((uint8_t *) input, length, uc_locale_language (),
+ NULL,
+ NULL, &output_length);
+
+ fwrite (output, 1, output_length, stdout);
+
+ return 0;
+ }
+ else
+ return 1;
+}
+
+#endif /* TEST */
diff --git a/lib/unicase/u8-casemap.c b/lib/unicase/u8-casemap.c
new file mode 100644
index 00000000..6f329155
--- /dev/null
+++ b/lib/unicase/u8-casemap.c
@@ -0,0 +1,40 @@
+/* Case mapping for UTF-8 strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicasemap.h"
+
+#include <errno.h>
+#include <stdbool.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "unictype.h"
+#include "uninorm.h"
+#include "caseprop.h"
+#include "context.h"
+#include "special-casing.h"
+
+#define FUNC u8_casemap
+#define UNIT uint8_t
+#define U_MBTOUC_UNSAFE u8_mbtouc_unsafe
+#define U_UCTOMB u8_uctomb
+#define U_CPY u8_cpy
+#define U_NORMALIZE u8_normalize
+#include "u-casemap.h"
diff --git a/lib/unicase/u8-casexfrm.c b/lib/unicase/u8-casexfrm.c
new file mode 100644
index 00000000..7e1d767c
--- /dev/null
+++ b/lib/unicase/u8-casexfrm.c
@@ -0,0 +1,35 @@
+/* Locale dependent transformation for case insensitive comparison of UTF-8
+ strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "localcharset.h"
+#include "uniconv.h"
+#include "memxfrm.h"
+
+#define FUNC u8_casexfrm
+#define UNIT uint8_t
+#define U_CASEFOLD u8_casefold
+#define U_CONV_TO_ENCODING u8_conv_to_encoding
+#include "u-casexfrm.h"
diff --git a/lib/unicase/u8-ct-casefold.c b/lib/unicase/u8-ct-casefold.c
new file mode 100644
index 00000000..4cc149c3
--- /dev/null
+++ b/lib/unicase/u8-ct-casefold.c
@@ -0,0 +1,35 @@
+/* Casefolding mapping for UTF-8 substrings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stddef.h>
+#include <stdlib.h>
+
+#include "unicasemap.h"
+#include "special-casing.h"
+#include "casefold.h"
+
+#define FUNC u8_ct_casefold
+#define UNIT uint8_t
+#define U_CASEMAP u8_casemap
+#define U_NORMALIZE u8_normalize
+#include "u-ct-casefold.h"
diff --git a/lib/unicase/u8-ct-tolower.c b/lib/unicase/u8-ct-tolower.c
new file mode 100644
index 00000000..3755821e
--- /dev/null
+++ b/lib/unicase/u8-ct-tolower.c
@@ -0,0 +1,40 @@
+/* Lowercase mapping for UTF-8 substrings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <stddef.h>
+
+#include "unicasemap.h"
+#include "special-casing.h"
+
+uint8_t *
+u8_ct_tolower (const uint8_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ uint8_t *resultbuf, size_t *lengthp)
+{
+ return u8_casemap (s, n, prefix_context, suffix_context, iso639_language,
+ uc_tolower, offsetof (struct special_casing_rule, lower[0]),
+ nf,
+ resultbuf, lengthp);
+}
diff --git a/lib/unicase/u8-ct-totitle.c b/lib/unicase/u8-ct-totitle.c
new file mode 100644
index 00000000..64891afd
--- /dev/null
+++ b/lib/unicase/u8-ct-totitle.c
@@ -0,0 +1,43 @@
+/* Titlecase mapping for UTF-8 substrings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "unictype.h"
+#include "uniwbrk.h"
+#include "uninorm.h"
+#include "caseprop.h"
+#include "context.h"
+#include "special-casing.h"
+
+#define FUNC u8_ct_totitle
+#define UNIT uint8_t
+#define U_WORDBREAKS u8_wordbreaks
+#define U_MBTOUC_UNSAFE u8_mbtouc_unsafe
+#define U_UCTOMB u8_uctomb
+#define U_CPY u8_cpy
+#define U_NORMALIZE u8_normalize
+#include "u-ct-totitle.h"
diff --git a/lib/unicase/u8-ct-toupper.c b/lib/unicase/u8-ct-toupper.c
new file mode 100644
index 00000000..9dca2fca
--- /dev/null
+++ b/lib/unicase/u8-ct-toupper.c
@@ -0,0 +1,40 @@
+/* Uppercase mapping for UTF-8 substrings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <stddef.h>
+
+#include "unicasemap.h"
+#include "special-casing.h"
+
+uint8_t *
+u8_ct_toupper (const uint8_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ uninorm_t nf,
+ uint8_t *resultbuf, size_t *lengthp)
+{
+ return u8_casemap (s, n, prefix_context, suffix_context, iso639_language,
+ uc_toupper, offsetof (struct special_casing_rule, upper[0]),
+ nf,
+ resultbuf, lengthp);
+}
diff --git a/lib/unicase/u8-is-cased.c b/lib/unicase/u8-is-cased.c
new file mode 100644
index 00000000..5cdcc33b
--- /dev/null
+++ b/lib/unicase/u8-is-cased.c
@@ -0,0 +1,36 @@
+/* Test whether case matters for an UTF-8 string.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "uninorm.h"
+#include "unistr.h"
+
+#define FUNC u8_is_cased
+#define UNIT uint8_t
+#define U_NORMALIZE u8_normalize
+#define U_TOUPPER u8_toupper
+#define U_TOLOWER u8_tolower
+#define U_TOTITLE u8_totitle
+#define U_CMP u8_cmp
+#include "u-is-cased.h"
diff --git a/lib/unicase/u8-is-casefolded.c b/lib/unicase/u8-is-casefolded.c
new file mode 100644
index 00000000..30122b78
--- /dev/null
+++ b/lib/unicase/u8-is-casefolded.c
@@ -0,0 +1,30 @@
+/* Test whether an UTF-8 string is already case-folded.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include "unicase/invariant.h"
+
+int
+u8_is_casefolded (const uint8_t *s, size_t n, const char *iso639_language,
+ bool *resultp)
+{
+ return u8_is_invariant (s, n, u8_casefold, iso639_language, resultp);
+}
diff --git a/lib/unicase/u8-is-invariant.c b/lib/unicase/u8-is-invariant.c
new file mode 100644
index 00000000..2c4913bf
--- /dev/null
+++ b/lib/unicase/u8-is-invariant.c
@@ -0,0 +1,33 @@
+/* Test whether an UTF-8 string is invariant under a given case mapping.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase/invariant.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "uninorm.h"
+#include "unistr.h"
+
+#define FUNC u8_is_invariant
+#define UNIT uint8_t
+#define U_NORMALIZE u8_normalize
+#define U_CMP u8_cmp
+#include "u-is-invariant.h"
diff --git a/lib/unicase/u8-is-lowercase.c b/lib/unicase/u8-is-lowercase.c
new file mode 100644
index 00000000..5b0df8be
--- /dev/null
+++ b/lib/unicase/u8-is-lowercase.c
@@ -0,0 +1,30 @@
+/* Test whether an UTF-8 string is entirely lower case.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include "unicase/invariant.h"
+
+int
+u8_is_lowercase (const uint8_t *s, size_t n, const char *iso639_language,
+ bool *resultp)
+{
+ return u8_is_invariant (s, n, u8_tolower, iso639_language, resultp);
+}
diff --git a/lib/unicase/u8-is-titlecase.c b/lib/unicase/u8-is-titlecase.c
new file mode 100644
index 00000000..474502a7
--- /dev/null
+++ b/lib/unicase/u8-is-titlecase.c
@@ -0,0 +1,30 @@
+/* Test whether an UTF-8 string is entirely title case.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include "unicase/invariant.h"
+
+int
+u8_is_titlecase (const uint8_t *s, size_t n, const char *iso639_language,
+ bool *resultp)
+{
+ return u8_is_invariant (s, n, u8_totitle, iso639_language, resultp);
+}
diff --git a/lib/unicase/u8-is-uppercase.c b/lib/unicase/u8-is-uppercase.c
new file mode 100644
index 00000000..7f14f924
--- /dev/null
+++ b/lib/unicase/u8-is-uppercase.c
@@ -0,0 +1,30 @@
+/* Test whether an UTF-8 string is entirely upper case.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include "unicase/invariant.h"
+
+int
+u8_is_uppercase (const uint8_t *s, size_t n, const char *iso639_language,
+ bool *resultp)
+{
+ return u8_is_invariant (s, n, u8_toupper, iso639_language, resultp);
+}
diff --git a/lib/unicase/u8-tolower.c b/lib/unicase/u8-tolower.c
new file mode 100644
index 00000000..1cd7cfa4
--- /dev/null
+++ b/lib/unicase/u8-tolower.c
@@ -0,0 +1,120 @@
+/* Lowercase mapping for UTF-8 strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <stddef.h>
+
+#include "unicasemap.h"
+#include "special-casing.h"
+
+uint8_t *
+u8_tolower (const uint8_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint8_t *resultbuf, size_t *lengthp)
+{
+ return u8_casemap (s, n,
+ unicase_empty_prefix_context, unicase_empty_suffix_context,
+ iso639_language,
+ uc_tolower, offsetof (struct special_casing_rule, lower[0]),
+ nf,
+ resultbuf, lengthp);
+}
+
+
+#ifdef TEST
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* Read the contents of an input stream, and return it, terminated with a NUL
+ byte. */
+char *
+read_file (FILE *stream)
+{
+#define BUFSIZE 4096
+ char *buf = NULL;
+ int alloc = 0;
+ int size = 0;
+ int count;
+
+ while (! feof (stream))
+ {
+ if (size + BUFSIZE > alloc)
+ {
+ alloc = alloc + alloc / 2;
+ if (alloc < size + BUFSIZE)
+ alloc = size + BUFSIZE;
+ buf = realloc (buf, alloc);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ }
+ count = fread (buf + size, 1, BUFSIZE, stream);
+ if (count == 0)
+ {
+ if (ferror (stream))
+ {
+ perror ("fread");
+ exit (1);
+ }
+ }
+ else
+ size += count;
+ }
+ buf = realloc (buf, size + 1);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ buf[size] = '\0';
+ return buf;
+#undef BUFSIZE
+}
+
+int
+main (int argc, char * argv[])
+{
+ setlocale (LC_ALL, "");
+ if (argc == 1)
+ {
+ /* Display the lower case of the input string. */
+ char *input = read_file (stdin);
+ int length = strlen (input);
+ size_t output_length;
+ uint8_t *output =
+ u8_tolower ((uint8_t *) input, length, uc_locale_language (),
+ NULL,
+ NULL, &output_length);
+
+ fwrite (output, 1, output_length, stdout);
+
+ return 0;
+ }
+ else
+ return 1;
+}
+
+#endif /* TEST */
diff --git a/lib/unicase/u8-totitle.c b/lib/unicase/u8-totitle.c
new file mode 100644
index 00000000..cf29c1ba
--- /dev/null
+++ b/lib/unicase/u8-totitle.c
@@ -0,0 +1,107 @@
+/* Titlecase mapping for UTF-8 strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#define FUNC u8_totitle
+#define UNIT uint8_t
+#define U_CT_TOTITLE u8_ct_totitle
+#include "u-totitle.h"
+
+
+#ifdef TEST
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* Read the contents of an input stream, and return it, terminated with a NUL
+ byte. */
+char *
+read_file (FILE *stream)
+{
+#define BUFSIZE 4096
+ char *buf = NULL;
+ int alloc = 0;
+ int size = 0;
+ int count;
+
+ while (! feof (stream))
+ {
+ if (size + BUFSIZE > alloc)
+ {
+ alloc = alloc + alloc / 2;
+ if (alloc < size + BUFSIZE)
+ alloc = size + BUFSIZE;
+ buf = realloc (buf, alloc);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ }
+ count = fread (buf + size, 1, BUFSIZE, stream);
+ if (count == 0)
+ {
+ if (ferror (stream))
+ {
+ perror ("fread");
+ exit (1);
+ }
+ }
+ else
+ size += count;
+ }
+ buf = realloc (buf, size + 1);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ buf[size] = '\0';
+ return buf;
+#undef BUFSIZE
+}
+
+int
+main (int argc, char * argv[])
+{
+ setlocale (LC_ALL, "");
+ if (argc == 1)
+ {
+ /* Display the upper case of the input string. */
+ char *input = read_file (stdin);
+ int length = strlen (input);
+ size_t output_length;
+ uint8_t *output =
+ u8_toupper ((uint8_t *) input, length, uc_locale_language (),
+ NULL,
+ NULL, &output_length);
+
+ fwrite (output, 1, output_length, stdout);
+
+ return 0;
+ }
+ else
+ return 1;
+}
+
+#endif /* TEST */
diff --git a/lib/unicase/u8-toupper.c b/lib/unicase/u8-toupper.c
new file mode 100644
index 00000000..a97d98ce
--- /dev/null
+++ b/lib/unicase/u8-toupper.c
@@ -0,0 +1,120 @@
+/* Uppercase mapping for UTF-8 strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <stddef.h>
+
+#include "unicasemap.h"
+#include "special-casing.h"
+
+uint8_t *
+u8_toupper (const uint8_t *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint8_t *resultbuf, size_t *lengthp)
+{
+ return u8_casemap (s, n,
+ unicase_empty_prefix_context, unicase_empty_suffix_context,
+ iso639_language,
+ uc_toupper, offsetof (struct special_casing_rule, upper[0]),
+ nf,
+ resultbuf, lengthp);
+}
+
+
+#ifdef TEST
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* Read the contents of an input stream, and return it, terminated with a NUL
+ byte. */
+char *
+read_file (FILE *stream)
+{
+#define BUFSIZE 4096
+ char *buf = NULL;
+ int alloc = 0;
+ int size = 0;
+ int count;
+
+ while (! feof (stream))
+ {
+ if (size + BUFSIZE > alloc)
+ {
+ alloc = alloc + alloc / 2;
+ if (alloc < size + BUFSIZE)
+ alloc = size + BUFSIZE;
+ buf = realloc (buf, alloc);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ }
+ count = fread (buf + size, 1, BUFSIZE, stream);
+ if (count == 0)
+ {
+ if (ferror (stream))
+ {
+ perror ("fread");
+ exit (1);
+ }
+ }
+ else
+ size += count;
+ }
+ buf = realloc (buf, size + 1);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ buf[size] = '\0';
+ return buf;
+#undef BUFSIZE
+}
+
+int
+main (int argc, char * argv[])
+{
+ setlocale (LC_ALL, "");
+ if (argc == 1)
+ {
+ /* Display the upper case of the input string. */
+ char *input = read_file (stdin);
+ int length = strlen (input);
+ size_t output_length;
+ uint8_t *output =
+ u8_toupper ((uint8_t *) input, length, uc_locale_language (),
+ NULL,
+ NULL, &output_length);
+
+ fwrite (output, 1, output_length, stdout);
+
+ return 0;
+ }
+ else
+ return 1;
+}
+
+#endif /* TEST */
diff --git a/lib/unicase/ulc-casecmp.c b/lib/unicase/ulc-casecmp.c
new file mode 100644
index 00000000..e0710219
--- /dev/null
+++ b/lib/unicase/ulc-casecmp.c
@@ -0,0 +1,74 @@
+/* Case and normalization insensitive comparison of strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "minmax.h"
+#include "uninorm.h"
+#include "uniconv.h"
+#include "unistr.h"
+
+static uint8_t *
+ulc_u8_casefold (const char *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ uint8_t *resultbuf, size_t *lengthp)
+{
+ uint8_t convbuf[2048 / sizeof (uint8_t)];
+ uint8_t *conv;
+ size_t conv_length;
+ uint8_t *result;
+
+ /* Convert the string to UTF-8. */
+ conv_length = sizeof (convbuf) / sizeof (uint8_t);
+ conv =
+ u8_conv_from_encoding (locale_charset (), iconveh_error, s, n, NULL,
+ convbuf, &conv_length);
+ if (conv == NULL)
+ /* errno is set here. */
+ return NULL;
+
+ /* Case-fold and normalize. */
+ result = u8_casefold (conv, conv_length, iso639_language, nf,
+ resultbuf, lengthp);
+ if (result == NULL)
+ {
+ if (conv != convbuf)
+ {
+ int saved_errno = errno;
+ free (conv);
+ errno = saved_errno;
+ }
+ return NULL;
+ }
+
+ if (conv != convbuf)
+ free (conv);
+ return result;
+}
+
+#define FUNC ulc_casecmp
+#define UNIT uint8_t
+#define SRC_UNIT char
+#define U_CASEFOLD ulc_u8_casefold
+#define U_CMP2 u8_cmp2
+#include "u-casecmp.h"
diff --git a/lib/unicase/ulc-casecoll.c b/lib/unicase/ulc-casecoll.c
new file mode 100644
index 00000000..9730b6dc
--- /dev/null
+++ b/lib/unicase/ulc-casecoll.c
@@ -0,0 +1,31 @@
+/* Locale dependent, case and normalization insensitive comparison of strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "memcmp2.h"
+
+#define FUNC ulc_casecoll
+#define UNIT char
+#define U_CASEXFRM ulc_casexfrm
+#include "u-casecoll.h"
diff --git a/lib/unicase/ulc-casexfrm.c b/lib/unicase/ulc-casexfrm.c
new file mode 100644
index 00000000..aded556f
--- /dev/null
+++ b/lib/unicase/ulc-casexfrm.c
@@ -0,0 +1,64 @@
+/* Locale dependent transformation for case insensitive comparison of strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicase.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "uniconv.h"
+
+char *
+ulc_casexfrm (const char *s, size_t n, const char *iso639_language,
+ uninorm_t nf,
+ char *resultbuf, size_t *lengthp)
+{
+ uint8_t convbuf[2048 / sizeof (uint8_t)];
+ uint8_t *conv;
+ size_t conv_length;
+ char *result;
+
+ /* Convert the string to UTF-8. */
+ conv_length = sizeof (convbuf) / sizeof (uint8_t);
+ conv =
+ u8_conv_from_encoding (locale_charset (), iconveh_error, s, n, NULL,
+ convbuf, &conv_length);
+ if (conv == NULL)
+ /* errno is set here. */
+ return NULL;
+
+ /* Case-fold and normalize. */
+ result = u8_casexfrm (conv, conv_length, iso639_language, nf,
+ resultbuf, lengthp);
+ if (result == NULL)
+ {
+ if (conv != convbuf)
+ {
+ int saved_errno = errno;
+ free (conv);
+ errno = saved_errno;
+ }
+ return NULL;
+ }
+
+ if (conv != convbuf)
+ free (conv);
+ return result;
+}
diff --git a/lib/unicase/unicasemap.h b/lib/unicase/unicasemap.h
new file mode 100644
index 00000000..8da8c51d
--- /dev/null
+++ b/lib/unicase/unicasemap.h
@@ -0,0 +1,52 @@
+/* Case mapping for UTF-8/UTF-16/UTF-32 strings (locale dependent).
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <stddef.h>
+
+#include "unitypes.h"
+#include "unicase.h"
+#include "uninorm.h"
+
+extern uint8_t *
+ u8_casemap (const uint8_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ ucs4_t (*single_character_map) (ucs4_t),
+ size_t offset_in_rule, /* offset in 'struct special_casing_rule' */
+ uninorm_t nf,
+ uint8_t *resultbuf, size_t *lengthp);
+
+extern uint16_t *
+ u16_casemap (const uint16_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ ucs4_t (*single_character_map) (ucs4_t),
+ size_t offset_in_rule, /* offset in 'struct special_casing_rule' */
+ uninorm_t nf,
+ uint16_t *resultbuf, size_t *lengthp);
+
+extern uint32_t *
+ u32_casemap (const uint32_t *s, size_t n,
+ casing_prefix_context_t prefix_context,
+ casing_suffix_context_t suffix_context,
+ const char *iso639_language,
+ ucs4_t (*single_character_map) (ucs4_t),
+ size_t offset_in_rule, /* offset in 'struct special_casing_rule' */
+ uninorm_t nf,
+ uint32_t *resultbuf, size_t *lengthp);
diff --git a/lib/uniconv.h b/lib/uniconv.h
new file mode 100644
index 00000000..223386fc
--- /dev/null
+++ b/lib/uniconv.h
@@ -0,0 +1,169 @@
+/* Conversions between Unicode and legacy encodings.
+ Copyright (C) 2002, 2005, 2007, 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _UNICONV_H
+#define _UNICONV_H
+
+/* Get size_t. */
+#include <stddef.h>
+
+#include "unitypes.h"
+
+/* Get enum iconv_ilseq_handler. */
+#include <unistring/iconveh.h>
+
+/* Get locale_charset() declaration. */
+#include <unistring/localcharset.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Converts an entire string, possibly including NUL bytes, from one encoding
+ to a Unicode encoding.
+ Converts a memory region given in encoding FROMCODE. FROMCODE is as for
+ iconv_open(3).
+ The input is in the memory region between SRC (inclusive) and SRC + SRCLEN
+ (exclusive).
+ If OFFSETS is not NULL, it should point to an array of SRCLEN integers; this
+ array is filled with offsets into the result, i.e. the character starting
+ at SRC[i] corresponds to the character starting at (*RESULTP)[OFFSETS[i]],
+ and other offsets are set to (size_t)(-1).
+ RESULTBUF and *LENGTHP should initially be a scratch buffer and its size,
+ or *RESULTBUF can be NULL.
+ May erase the contents of the memory at RESULTBUF.
+ If successful: The resulting Unicode string (non-NULL) is returned and its
+ length stored in *LENGTHP. The resulting string is RESULTBUF if no dynamic
+ memory allocation was necessary, or a freshly allocated memory block
+ otherwise.
+ In case of error: NULL is returned and errno is set. Particular errno
+ values: EINVAL, EILSEQ, ENOMEM. */
+extern uint8_t *
+ u8_conv_from_encoding (const char *fromcode,
+ enum iconv_ilseq_handler handler,
+ const char *src, size_t srclen,
+ size_t *offsets,
+ uint8_t *resultbuf, size_t *lengthp);
+extern uint16_t *
+ u16_conv_from_encoding (const char *fromcode,
+ enum iconv_ilseq_handler handler,
+ const char *src, size_t srclen,
+ size_t *offsets,
+ uint16_t *resultbuf, size_t *lengthp);
+extern uint32_t *
+ u32_conv_from_encoding (const char *fromcode,
+ enum iconv_ilseq_handler handler,
+ const char *src, size_t srclen,
+ size_t *offsets,
+ uint32_t *resultbuf, size_t *lengthp);
+
+/* Converts an entire Unicode string, possibly including NUL units, from a
+ Unicode encoding to a given encoding.
+ Converts a memory region to encoding TOCODE. TOCODE is as for
+ iconv_open(3).
+ The input is in the memory region between SRC (inclusive) and SRC + SRCLEN
+ (exclusive).
+ If OFFSETS is not NULL, it should point to an array of SRCLEN integers; this
+ array is filled with offsets into the result, i.e. the character starting
+ at SRC[i] corresponds to the character starting at (*RESULTP)[OFFSETS[i]],
+ and other offsets are set to (size_t)(-1).
+ RESULTBUF and *LENGTHP should initially be a scratch buffer and its size,
+ or RESULTBUF can be NULL.
+ May erase the contents of the memory at RESULTBUF.
+ If successful: The resulting string (non-NULL) is returned and its length
+ stored in *LENGTHP. The resulting string is RESULTBUF if no dynamic memory
+ allocation was necessary, or a freshly allocated memory block otherwise.
+ In case of error: NULL is returned and errno is set. Particular errno
+ values: EINVAL, EILSEQ, ENOMEM. */
+extern char *
+ u8_conv_to_encoding (const char *tocode,
+ enum iconv_ilseq_handler handler,
+ const uint8_t *src, size_t srclen,
+ size_t *offsets,
+ char *resultbuf, size_t *lengthp);
+extern char *
+ u16_conv_to_encoding (const char *tocode,
+ enum iconv_ilseq_handler handler,
+ const uint16_t *src, size_t srclen,
+ size_t *offsets,
+ char *resultbuf, size_t *lengthp);
+extern char *
+ u32_conv_to_encoding (const char *tocode,
+ enum iconv_ilseq_handler handler,
+ const uint32_t *src, size_t srclen,
+ size_t *offsets,
+ char *resultbuf, size_t *lengthp);
+
+/* Converts a NUL terminated string from a given encoding.
+ The result is malloc allocated, or NULL (with errno set) in case of error.
+ Particular errno values: EILSEQ, ENOMEM. */
+extern uint8_t *
+ u8_strconv_from_encoding (const char *string,
+ const char *fromcode,
+ enum iconv_ilseq_handler handler);
+extern uint16_t *
+ u16_strconv_from_encoding (const char *string,
+ const char *fromcode,
+ enum iconv_ilseq_handler handler);
+extern uint32_t *
+ u32_strconv_from_encoding (const char *string,
+ const char *fromcode,
+ enum iconv_ilseq_handler handler);
+
+/* Converts a NUL terminated string to a given encoding.
+ The result is malloc allocated, or NULL (with errno set) in case of error.
+ Particular errno values: EILSEQ, ENOMEM. */
+extern char *
+ u8_strconv_to_encoding (const uint8_t *string,
+ const char *tocode,
+ enum iconv_ilseq_handler handler);
+extern char *
+ u16_strconv_to_encoding (const uint16_t *string,
+ const char *tocode,
+ enum iconv_ilseq_handler handler);
+extern char *
+ u32_strconv_to_encoding (const uint32_t *string,
+ const char *tocode,
+ enum iconv_ilseq_handler handler);
+
+/* Converts a NUL terminated string from the locale encoding.
+ The result is malloc allocated, or NULL (with errno set) in case of error.
+ Particular errno values: ENOMEM. */
+extern uint8_t *
+ u8_strconv_from_locale (const char *string);
+extern uint16_t *
+ u16_strconv_from_locale (const char *string);
+extern uint32_t *
+ u32_strconv_from_locale (const char *string);
+
+/* Converts a NUL terminated string to the locale encoding.
+ The result is malloc allocated, or NULL (with errno set) in case of error.
+ Particular errno values: ENOMEM. */
+extern char *
+ u8_strconv_to_locale (const uint8_t *string);
+extern char *
+ u16_strconv_to_locale (const uint16_t *string);
+extern char *
+ u32_strconv_to_locale (const uint32_t *string);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UNICONV_H */
diff --git a/lib/uniconv/u-conv-from-enc.h b/lib/uniconv/u-conv-from-enc.h
new file mode 100644
index 00000000..fa0f0d3d
--- /dev/null
+++ b/lib/uniconv/u-conv-from-enc.h
@@ -0,0 +1,91 @@
+/* Conversion to UTF-16/UTF-32 from legacy encodings.
+ Copyright (C) 2002, 2006-2007, 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+UNIT *
+FUNC (const char *fromcode,
+ enum iconv_ilseq_handler handler,
+ const char *src, size_t srclen,
+ size_t *offsets,
+ UNIT *resultbuf, size_t *lengthp)
+{
+#if HAVE_UTF_NAME
+ char *result = (char *) resultbuf;
+ size_t length = *lengthp * sizeof (UNIT);
+
+ if (mem_iconveha (src, srclen, fromcode, UTF_NAME, true, handler,
+ offsets, &result, &length) < 0)
+ return NULL;
+ if (offsets != NULL)
+ {
+ /* Convert 'char *' offsets to 'UNIT *' offsets. */
+ size_t *offsets_end = offsets + srclen;
+ size_t *o;
+
+ for (o = offsets; o < offsets_end; o++)
+ if (*o != (size_t)(-1))
+ *o = *o / sizeof (UNIT);
+ }
+ if ((length % sizeof (UNIT)) != 0)
+ abort ();
+ *lengthp = length / sizeof (UNIT);
+ return (UNIT *) result;
+#else
+ uint8_t *utf8_string;
+ size_t utf8_length;
+ UNIT *result;
+
+ utf8_string =
+ u8_conv_from_encoding (fromcode, handler, src, srclen, offsets,
+ NULL, &utf8_length);
+ if (utf8_string == NULL)
+ return NULL;
+ result = U8_TO_U (utf8_string, utf8_length, resultbuf, lengthp);
+ if (result == NULL)
+ {
+ int saved_errno = errno;
+ free (utf8_string);
+ errno = saved_errno;
+ return NULL;
+ }
+ if (offsets != NULL)
+ {
+ size_t length = *lengthp;
+ size_t *offsets_end = offsets + srclen;
+ size_t *o;
+ size_t off8 = 0; /* offset into utf8_string */
+ size_t offunit = 0; /* offset into result */
+
+ for (o = offsets; o < offsets_end; o++)
+ if (*o != (size_t)(-1))
+ {
+ while (off8 < *o)
+ {
+ int count8 = u8_mblen (utf8_string + off8, utf8_length - off8);
+ int countunit = U_MBLEN (result + offunit, length - offunit);
+ if (count8 < 0 || countunit < 0)
+ abort ();
+ off8 += count8;
+ offunit += countunit;
+ }
+ if (*o != off8)
+ abort ();
+ *o = offunit;
+ }
+ }
+ free (utf8_string);
+ return result;
+#endif
+}
diff --git a/lib/uniconv/u-conv-to-enc.h b/lib/uniconv/u-conv-to-enc.h
new file mode 100644
index 00000000..ed715482
--- /dev/null
+++ b/lib/uniconv/u-conv-to-enc.h
@@ -0,0 +1,156 @@
+/* Conversion from UTF-16/UTF-32 to legacy encodings.
+ Copyright (C) 2002, 2006-2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+char *
+FUNC (const char *tocode,
+ enum iconv_ilseq_handler handler,
+ const UNIT *src, size_t srclen,
+ size_t *offsets,
+ char *resultbuf, size_t *lengthp)
+{
+#if HAVE_UTF_NAME
+ size_t *scaled_offsets;
+ char *result;
+ size_t length;
+
+ if (offsets != NULL && srclen > 0)
+ {
+ scaled_offsets =
+ (size_t *) malloc (srclen * sizeof (UNIT) * sizeof (size_t));
+ if (scaled_offsets == NULL)
+ {
+ errno = ENOMEM;
+ return NULL;
+ }
+ }
+ else
+ scaled_offsets = NULL;
+
+ result = resultbuf;
+ length = *lengthp;
+ if (mem_iconveha ((const char *) src, srclen * sizeof (UNIT),
+ UTF_NAME, tocode,
+ handler == iconveh_question_mark, handler,
+ scaled_offsets, &result, &length) < 0)
+ {
+ int saved_errno = errno;
+ free (scaled_offsets);
+ errno = saved_errno;
+ return NULL;
+ }
+
+ if (offsets != NULL)
+ {
+ /* Convert scaled_offsets[srclen * sizeof (UNIT)] to
+ offsets[srclen]. */
+ size_t i;
+
+ for (i = 0; i < srclen; i++)
+ offsets[i] = scaled_offsets[i * sizeof (UNIT)];
+ free (scaled_offsets);
+ }
+
+ if (result == NULL) /* when (resultbuf == NULL && length == 0) */
+ {
+ result = (char *) malloc (1);
+ if (result == NULL)
+ {
+ errno = ENOMEM;
+ return NULL;
+ }
+ }
+ *lengthp = length;
+ return result;
+#else
+ uint8_t tmpbuf[4096];
+ size_t tmpbufsize = SIZEOF (tmpbuf);
+ uint8_t *utf8_src;
+ size_t utf8_srclen;
+ size_t *scaled_offsets;
+ char *result;
+
+ utf8_src = U_TO_U8 (src, srclen, tmpbuf, &tmpbufsize);
+ if (utf8_src == NULL)
+ return NULL;
+ utf8_srclen = tmpbufsize;
+
+ if (offsets != NULL && utf8_srclen > 0)
+ {
+ scaled_offsets = (size_t *) malloc (utf8_srclen * sizeof (size_t));
+ if (scaled_offsets == NULL)
+ {
+ if (utf8_src != tmpbuf)
+ free (utf8_src);
+ errno = ENOMEM;
+ return NULL;
+ }
+ }
+ else
+ scaled_offsets = NULL;
+
+ result = u8_conv_to_encoding (tocode, handler, utf8_src, utf8_srclen,
+ scaled_offsets, resultbuf, lengthp);
+ if (result == NULL)
+ {
+ int saved_errno = errno;
+ free (scaled_offsets);
+ if (utf8_src != tmpbuf)
+ free (utf8_src);
+ errno = saved_errno;
+ return NULL;
+ }
+ if (offsets != NULL)
+ {
+ size_t iunit; /* offset into src */
+ size_t i8; /* offset into utf8_src */
+
+ for (iunit = 0; iunit < srclen; iunit++)
+ offsets[iunit] = (size_t)(-1);
+
+ iunit = 0;
+ i8 = 0;
+ while (iunit < srclen && i8 < utf8_srclen)
+ {
+ int countunit;
+ int count8;
+
+ offsets[iunit] = scaled_offsets[i8];
+
+ countunit = U_MBLEN (src + iunit, srclen - iunit);
+ count8 = u8_mblen (utf8_src + i8, utf8_srclen - i8);
+ if (countunit < 0 || count8 < 0)
+ abort ();
+ iunit += countunit;
+ i8 += count8;
+ }
+ /* Check that utf8_src has been traversed entirely. */
+ if (i8 < utf8_srclen)
+ abort ();
+ /* Check that src has been traversed entirely, except possibly for an
+ incomplete sequence of units at the end. */
+ if (iunit < srclen)
+ {
+ offsets[iunit] = *lengthp;
+ if (!(U_MBLEN (src + iunit, srclen - iunit) < 0))
+ abort ();
+ }
+ free (scaled_offsets);
+ }
+ if (utf8_src != tmpbuf)
+ free (utf8_src);
+ return result;
+#endif
+}
diff --git a/lib/uniconv/u-strconv-from-enc.h b/lib/uniconv/u-strconv-from-enc.h
new file mode 100644
index 00000000..25813c76
--- /dev/null
+++ b/lib/uniconv/u-strconv-from-enc.h
@@ -0,0 +1,40 @@
+/* Conversion to UTF-8/UTF-16/UTF-32 from legacy encodings.
+ Copyright (C) 2002, 2006-2007, 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+UNIT *
+FUNC (const char *string,
+ const char *fromcode,
+ enum iconv_ilseq_handler handler)
+{
+ UNIT *result;
+ size_t length;
+
+ result =
+ U_CONV_FROM_ENCODING (fromcode, handler,
+ string, strlen (string) + 1, NULL,
+ NULL, &length);
+ if (result == NULL)
+ return NULL;
+ /* Verify the result has exactly one NUL unit, at the end. */
+ if (!(length > 0 && result[length-1] == 0
+ && U_STRLEN (result) == length-1))
+ {
+ free (result);
+ errno = EILSEQ;
+ return NULL;
+ }
+ return result;
+}
diff --git a/lib/uniconv/u-strconv-to-enc.h b/lib/uniconv/u-strconv-to-enc.h
new file mode 100644
index 00000000..b6e6ebb5
--- /dev/null
+++ b/lib/uniconv/u-strconv-to-enc.h
@@ -0,0 +1,63 @@
+/* Conversion from UTF-16/UTF-32 to legacy encodings.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+char *
+FUNC (const UNIT *string,
+ const char *tocode,
+ enum iconv_ilseq_handler handler)
+{
+#if HAVE_UTF_NAME
+ char *result = NULL;
+ size_t length = 0;
+
+ if (mem_iconveha ((const char *) string, (U_STRLEN (string) + 1) * sizeof (UNIT),
+ UTF_NAME, tocode,
+ handler == iconveh_question_mark, handler,
+ NULL, &result, &length) < 0)
+ return NULL;
+ /* Verify the result has exactly one NUL byte, at the end. */
+ if (!(length > 0 && result[length-1] == '\0' && strlen (result) == length-1))
+ {
+ free (result);
+ errno = EILSEQ;
+ return NULL;
+ }
+ return result;
+#else
+ uint8_t tmpbuf[4096];
+ size_t tmpbufsize = SIZEOF (tmpbuf);
+ uint8_t *utf8_string;
+ char *result;
+
+ utf8_string = U_TO_U8 (string, U_STRLEN (string) + 1, tmpbuf, &tmpbufsize);
+ if (utf8_string == NULL)
+ return NULL;
+ result = u8_strconv_to_encoding (utf8_string, tocode, handler);
+ if (result == NULL)
+ {
+ if (utf8_string != tmpbuf)
+ {
+ int saved_errno = errno;
+ free (utf8_string);
+ errno = saved_errno;
+ }
+ return NULL;
+ }
+ if (utf8_string != tmpbuf)
+ free (utf8_string);
+ return result;
+#endif
+}
diff --git a/lib/uniconv/u16-conv-from-enc.c b/lib/uniconv/u16-conv-from-enc.c
new file mode 100644
index 00000000..f38add30
--- /dev/null
+++ b/lib/uniconv/u16-conv-from-enc.c
@@ -0,0 +1,47 @@
+/* Conversion to UTF-16 from legacy encodings.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniconv.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "striconveha.h"
+#include "unistr.h"
+
+/* Name of UTF-16 encoding with machine dependent endianness and alignment. */
+#if defined _LIBICONV_VERSION || (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
+# ifdef WORDS_BIGENDIAN
+# define UTF16_NAME "UTF-16BE"
+# else
+# define UTF16_NAME "UTF-16LE"
+# endif
+#endif
+
+#define FUNC u16_conv_from_encoding
+#define UNIT uint16_t
+#define U8_TO_U u8_to_u16
+#define U_MBLEN u16_mblen
+#if defined UTF16_NAME
+# define UTF_NAME UTF16_NAME
+# define HAVE_UTF_NAME 1
+#endif
+#include "u-conv-from-enc.h"
diff --git a/lib/uniconv/u16-conv-to-enc.c b/lib/uniconv/u16-conv-to-enc.c
new file mode 100644
index 00000000..ba70736c
--- /dev/null
+++ b/lib/uniconv/u16-conv-to-enc.c
@@ -0,0 +1,177 @@
+/* Conversion from UTF-16 to legacy encodings.
+ Copyright (C) 2002, 2006-2008 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniconv.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "striconveha.h"
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+
+/* Name of UTF-16 encoding with machine dependent endianness and alignment. */
+#if defined _LIBICONV_VERSION || (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
+# ifdef WORDS_BIGENDIAN
+# define UTF16_NAME "UTF-16BE"
+# else
+# define UTF16_NAME "UTF-16LE"
+# endif
+#endif
+
+
+#if !defined UTF16_NAME
+
+/* A variant of u16_to_u8 that treats an incomplete sequence of units at the
+ end as a harmless no-op, rather than reporting it as an EILSEQ error. */
+
+#define FUNC u16_to_u8_lenient
+#define SRC_UNIT uint16_t
+#define DST_UNIT uint8_t
+
+static DST_UNIT *
+FUNC (const SRC_UNIT *s, size_t n, DST_UNIT *resultbuf, size_t *lengthp)
+{
+ const SRC_UNIT *s_end = s + n;
+ /* Output string accumulator. */
+ DST_UNIT *result;
+ size_t allocated;
+ size_t length;
+
+ if (resultbuf != NULL)
+ {
+ result = resultbuf;
+ allocated = *lengthp;
+ }
+ else
+ {
+ result = NULL;
+ allocated = 0;
+ }
+ length = 0;
+ /* Invariants:
+ result is either == resultbuf or == NULL or malloc-allocated.
+ If length > 0, then result != NULL. */
+
+ while (s < s_end)
+ {
+ ucs4_t uc;
+ int count;
+
+ /* Fetch a Unicode character from the input string. */
+ count = u16_mbtoucr (&uc, s, s_end - s);
+ if (count < 0)
+ {
+ if (count == -2)
+ /* Incomplete sequence of units. */
+ break;
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ errno = EILSEQ;
+ return NULL;
+ }
+ s += count;
+
+ /* Store it in the output string. */
+ count = u8_uctomb (result + length, uc, allocated - length);
+ if (count == -1)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ errno = EILSEQ;
+ return NULL;
+ }
+ if (count == -2)
+ {
+ DST_UNIT *memory;
+
+ allocated = (allocated > 0 ? 2 * allocated : 12);
+ if (length + 6 > allocated)
+ allocated = length + 6;
+ if (result == resultbuf || result == NULL)
+ memory = (DST_UNIT *) malloc (allocated * sizeof (DST_UNIT));
+ else
+ memory =
+ (DST_UNIT *) realloc (result, allocated * sizeof (DST_UNIT));
+
+ if (memory == NULL)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ errno = ENOMEM;
+ return NULL;
+ }
+ if (result == resultbuf && length > 0)
+ memcpy ((char *) memory, (char *) result,
+ length * sizeof (DST_UNIT));
+ result = memory;
+ count = u8_uctomb (result + length, uc, allocated - length);
+ if (count < 0)
+ abort ();
+ }
+ length += count;
+ }
+
+ if (length == 0)
+ {
+ if (result == NULL)
+ {
+ /* Return a non-NULL value. NULL means error. */
+ result = (DST_UNIT *) malloc (1);
+ if (result == NULL)
+ {
+ errno = ENOMEM;
+ return NULL;
+ }
+ }
+ }
+ else if (result != resultbuf && length < allocated)
+ {
+ /* Shrink the allocated memory if possible. */
+ DST_UNIT *memory;
+
+ memory = (DST_UNIT *) realloc (result, length * sizeof (DST_UNIT));
+ if (memory != NULL)
+ result = memory;
+ }
+
+ *lengthp = length;
+ return result;
+}
+
+#undef DST_UNIT
+#undef SRC_UNIT
+#undef FUNC
+
+#endif
+
+
+#define FUNC u16_conv_to_encoding
+#define UNIT uint16_t
+#define U_TO_U8 u16_to_u8_lenient
+#define U_MBLEN u16_mblen
+#if defined UTF16_NAME
+# define UTF_NAME UTF16_NAME
+# define HAVE_UTF_NAME 1
+#endif
+#include "u-conv-to-enc.h"
diff --git a/lib/uniconv/u16-strconv-from-enc.c b/lib/uniconv/u16-strconv-from-enc.c
new file mode 100644
index 00000000..736d0c4a
--- /dev/null
+++ b/lib/uniconv/u16-strconv-from-enc.c
@@ -0,0 +1,34 @@
+/* Conversion to UTF-16 from legacy encodings.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniconv.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define FUNC u16_strconv_from_encoding
+#define UNIT uint16_t
+#define U_CONV_FROM_ENCODING u16_conv_from_encoding
+#define U_STRLEN u16_strlen
+#include "u-strconv-from-enc.h"
diff --git a/lib/uniconv/u16-strconv-from-locale.c b/lib/uniconv/u16-strconv-from-locale.c
new file mode 100644
index 00000000..63ddeb04
--- /dev/null
+++ b/lib/uniconv/u16-strconv-from-locale.c
@@ -0,0 +1,29 @@
+/* Conversion to UTF-16 from the locale encoding.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniconv.h"
+
+uint16_t *
+u16_strconv_from_locale (const char *string)
+{
+ const char *encoding = locale_charset ();
+ return u16_strconv_from_encoding (string, encoding, iconveh_question_mark);
+}
diff --git a/lib/uniconv/u16-strconv-to-enc.c b/lib/uniconv/u16-strconv-to-enc.c
new file mode 100644
index 00000000..10e895e9
--- /dev/null
+++ b/lib/uniconv/u16-strconv-to-enc.c
@@ -0,0 +1,50 @@
+/* Conversion from UTF-16 to legacy encodings.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniconv.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "striconveha.h"
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+
+/* Name of UTF-16 encoding with machine dependent endianness and alignment. */
+#if defined _LIBICONV_VERSION || (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
+# ifdef WORDS_BIGENDIAN
+# define UTF16_NAME "UTF-16BE"
+# else
+# define UTF16_NAME "UTF-16LE"
+# endif
+#endif
+
+#define FUNC u16_strconv_to_encoding
+#define UNIT uint16_t
+#define U_TO_U8 u16_to_u8
+#define U_STRLEN u16_strlen
+#if defined UTF16_NAME
+# define UTF_NAME UTF16_NAME
+# define HAVE_UTF_NAME 1
+#endif
+#include "u-strconv-to-enc.h"
diff --git a/lib/uniconv/u16-strconv-to-locale.c b/lib/uniconv/u16-strconv-to-locale.c
new file mode 100644
index 00000000..14fd7b3b
--- /dev/null
+++ b/lib/uniconv/u16-strconv-to-locale.c
@@ -0,0 +1,29 @@
+/* Conversion from UTF-16 to the locale encoding.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniconv.h"
+
+char *
+u16_strconv_to_locale (const uint16_t *string)
+{
+ const char *encoding = locale_charset ();
+ return u16_strconv_to_encoding (string, encoding, iconveh_question_mark);
+}
diff --git a/lib/uniconv/u32-conv-from-enc.c b/lib/uniconv/u32-conv-from-enc.c
new file mode 100644
index 00000000..bac6301b
--- /dev/null
+++ b/lib/uniconv/u32-conv-from-enc.c
@@ -0,0 +1,46 @@
+/* Conversion to UTF-32 from legacy encodings.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniconv.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "striconveha.h"
+#include "unistr.h"
+
+/* Name of UTF-32 or UCS-4 encoding with machine dependent endianness and
+ alignment. */
+#if defined _LIBICONV_VERSION
+# define UTF32_NAME "UCS-4-INTERNAL"
+#elif (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
+# define UTF32_NAME "WCHAR_T"
+#endif
+
+#define FUNC u32_conv_from_encoding
+#define UNIT uint32_t
+#define U8_TO_U u8_to_u32
+#define U_MBLEN u32_mblen
+#if defined UTF32_NAME
+# define UTF_NAME UTF32_NAME
+# define HAVE_UTF_NAME 1
+#endif
+#include "u-conv-from-enc.h"
diff --git a/lib/uniconv/u32-conv-to-enc.c b/lib/uniconv/u32-conv-to-enc.c
new file mode 100644
index 00000000..9155abaa
--- /dev/null
+++ b/lib/uniconv/u32-conv-to-enc.c
@@ -0,0 +1,49 @@
+/* Conversion from UTF-32 to legacy encodings.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniconv.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "striconveha.h"
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+
+/* Name of UTF-32 or UCS-4 encoding with machine dependent endianness and
+ alignment. */
+#if defined _LIBICONV_VERSION
+# define UTF32_NAME "UCS-4-INTERNAL"
+#elif (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
+# define UTF32_NAME "WCHAR_T"
+#endif
+
+#define FUNC u32_conv_to_encoding
+#define UNIT uint32_t
+#define U_TO_U8 u32_to_u8
+#define U_MBLEN u32_mblen
+#if defined UTF32_NAME
+# define UTF_NAME UTF32_NAME
+# define HAVE_UTF_NAME 1
+#endif
+#include "u-conv-to-enc.h"
diff --git a/lib/uniconv/u32-strconv-from-enc.c b/lib/uniconv/u32-strconv-from-enc.c
new file mode 100644
index 00000000..aaac74f1
--- /dev/null
+++ b/lib/uniconv/u32-strconv-from-enc.c
@@ -0,0 +1,34 @@
+/* Conversion to UTF-32 from legacy encodings.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniconv.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define FUNC u32_strconv_from_encoding
+#define UNIT uint32_t
+#define U_CONV_FROM_ENCODING u32_conv_from_encoding
+#define U_STRLEN u32_strlen
+#include "u-strconv-from-enc.h"
diff --git a/lib/uniconv/u32-strconv-from-locale.c b/lib/uniconv/u32-strconv-from-locale.c
new file mode 100644
index 00000000..2cddcb63
--- /dev/null
+++ b/lib/uniconv/u32-strconv-from-locale.c
@@ -0,0 +1,29 @@
+/* Conversion to UTF-32 from the locale encoding.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniconv.h"
+
+uint32_t *
+u32_strconv_from_locale (const char *string)
+{
+ const char *encoding = locale_charset ();
+ return u32_strconv_from_encoding (string, encoding, iconveh_question_mark);
+}
diff --git a/lib/uniconv/u32-strconv-to-enc.c b/lib/uniconv/u32-strconv-to-enc.c
new file mode 100644
index 00000000..c77e0b6e
--- /dev/null
+++ b/lib/uniconv/u32-strconv-to-enc.c
@@ -0,0 +1,49 @@
+/* Conversion from UTF-32 to legacy encodings.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniconv.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "striconveha.h"
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+
+/* Name of UTF-32 or UCS-4 encoding with machine dependent endianness and
+ alignment. */
+#if defined _LIBICONV_VERSION
+# define UTF32_NAME "UCS-4-INTERNAL"
+#elif (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
+# define UTF32_NAME "WCHAR_T"
+#endif
+
+#define FUNC u32_strconv_to_encoding
+#define UNIT uint32_t
+#define U_TO_U8 u32_to_u8
+#define U_STRLEN u32_strlen
+#if defined UTF32_NAME
+# define UTF_NAME UTF32_NAME
+# define HAVE_UTF_NAME 1
+#endif
+#include "u-strconv-to-enc.h"
diff --git a/lib/uniconv/u32-strconv-to-locale.c b/lib/uniconv/u32-strconv-to-locale.c
new file mode 100644
index 00000000..64ab59fa
--- /dev/null
+++ b/lib/uniconv/u32-strconv-to-locale.c
@@ -0,0 +1,29 @@
+/* Conversion from UTF-32 to the locale encoding.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniconv.h"
+
+char *
+u32_strconv_to_locale (const uint32_t *string)
+{
+ const char *encoding = locale_charset ();
+ return u32_strconv_to_encoding (string, encoding, iconveh_question_mark);
+}
diff --git a/lib/uniconv/u8-conv-from-enc.c b/lib/uniconv/u8-conv-from-enc.c
new file mode 100644
index 00000000..7605e63e
--- /dev/null
+++ b/lib/uniconv/u8-conv-from-enc.c
@@ -0,0 +1,105 @@
+/* Conversion to UTF-8 from legacy encodings.
+ Copyright (C) 2002, 2006-2007, 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniconv.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "c-strcaseeq.h"
+#include "striconveha.h"
+#include "unistr.h"
+
+uint8_t *
+u8_conv_from_encoding (const char *fromcode,
+ enum iconv_ilseq_handler handler,
+ const char *src, size_t srclen,
+ size_t *offsets,
+ uint8_t *resultbuf, size_t *lengthp)
+{
+ if (STRCASEEQ (fromcode, "UTF-8", 'U','T','F','-','8',0,0,0,0))
+ {
+ /* Conversion from UTF-8 to UTF-8. No need to go through iconv(). */
+ uint8_t *result;
+
+ if (u8_check ((const uint8_t *) src, srclen))
+ {
+ errno = EILSEQ;
+ return NULL;
+ }
+
+ if (offsets != NULL)
+ {
+ size_t i;
+
+ for (i = 0; i < srclen; )
+ {
+ int count = u8_mblen ((const uint8_t *) src + i, srclen - i);
+ /* We can rely on count > 0 because of the previous u8_check. */
+ if (count <= 0)
+ abort ();
+ offsets[i] = i;
+ i++;
+ while (--count > 0)
+ offsets[i++] = (size_t)(-1);
+ }
+ }
+
+ /* Memory allocation. */
+ if (resultbuf != NULL && *lengthp >= srclen)
+ result = resultbuf;
+ else
+ {
+ result = (uint8_t *) malloc (srclen > 0 ? srclen : 1);
+ if (result == NULL)
+ {
+ errno = ENOMEM;
+ return NULL;
+ }
+ }
+
+ memcpy ((char *) result, src, srclen);
+ *lengthp = srclen;
+ return result;
+ }
+ else
+ {
+ char *result = (char *) resultbuf;
+ size_t length = *lengthp;
+
+ if (mem_iconveha (src, srclen, fromcode, "UTF-8", true, handler,
+ offsets, &result, &length) < 0)
+ return NULL;
+
+ if (result == NULL) /* when (resultbuf == NULL && length == 0) */
+ {
+ result = (char *) malloc (1);
+ if (result == NULL)
+ {
+ errno = ENOMEM;
+ return NULL;
+ }
+ }
+ *lengthp = length;
+ return (uint8_t *) result;
+ }
+}
diff --git a/lib/uniconv/u8-conv-to-enc.c b/lib/uniconv/u8-conv-to-enc.c
new file mode 100644
index 00000000..90acccec
--- /dev/null
+++ b/lib/uniconv/u8-conv-to-enc.c
@@ -0,0 +1,92 @@
+/* Conversion from UTF-8 to legacy encodings.
+ Copyright (C) 2002, 2006-2007, 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniconv.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "c-strcaseeq.h"
+#include "striconveha.h"
+#include "unistr.h"
+
+char *
+u8_conv_to_encoding (const char *tocode,
+ enum iconv_ilseq_handler handler,
+ const uint8_t *src, size_t srclen,
+ size_t *offsets,
+ char *resultbuf, size_t *lengthp)
+{
+ if (STRCASEEQ (tocode, "UTF-8", 'U','T','F','-','8',0,0,0,0))
+ {
+ char *result;
+
+ /* Conversion from UTF-8 to UTF-8. No need to go through iconv(). */
+#if CONFIG_UNICODE_SAFETY
+ if (u8_check (src, srclen))
+ {
+ errno = EILSEQ;
+ return NULL;
+ }
+#endif
+
+ /* Memory allocation. */
+ if (resultbuf != NULL && *lengthp >= srclen)
+ result = resultbuf;
+ else
+ {
+ result = (char *) malloc (srclen > 0 ? srclen : 1);
+ if (result == NULL)
+ {
+ errno = ENOMEM;
+ return NULL;
+ }
+ }
+
+ memcpy (result, (const char *) src, srclen);
+ *lengthp = srclen;
+ return result;
+ }
+ else
+ {
+ char *result = resultbuf;
+ size_t length = *lengthp;
+
+ if (mem_iconveha ((const char *) src, srclen,
+ "UTF-8", tocode,
+ handler == iconveh_question_mark, handler,
+ offsets, &result, &length) < 0)
+ return NULL;
+
+ if (result == NULL) /* when (resultbuf == NULL && length == 0) */
+ {
+ result = (char *) malloc (1);
+ if (result == NULL)
+ {
+ errno = ENOMEM;
+ return NULL;
+ }
+ }
+ *lengthp = length;
+ return result;
+ }
+}
diff --git a/lib/uniconv/u8-strconv-from-enc.c b/lib/uniconv/u8-strconv-from-enc.c
new file mode 100644
index 00000000..0f5736fc
--- /dev/null
+++ b/lib/uniconv/u8-strconv-from-enc.c
@@ -0,0 +1,34 @@
+/* Conversion to UTF-8 from legacy encodings.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniconv.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define FUNC u8_strconv_from_encoding
+#define UNIT uint8_t
+#define U_CONV_FROM_ENCODING u8_conv_from_encoding
+#define U_STRLEN u8_strlen
+#include "u-strconv-from-enc.h"
diff --git a/lib/uniconv/u8-strconv-from-locale.c b/lib/uniconv/u8-strconv-from-locale.c
new file mode 100644
index 00000000..a901a3d6
--- /dev/null
+++ b/lib/uniconv/u8-strconv-from-locale.c
@@ -0,0 +1,29 @@
+/* Conversion to UTF-8 from the locale encoding.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniconv.h"
+
+uint8_t *
+u8_strconv_from_locale (const char *string)
+{
+ const char *encoding = locale_charset ();
+ return u8_strconv_from_encoding (string, encoding, iconveh_question_mark);
+}
diff --git a/lib/uniconv/u8-strconv-to-enc.c b/lib/uniconv/u8-strconv-to-enc.c
new file mode 100644
index 00000000..a3f12b6b
--- /dev/null
+++ b/lib/uniconv/u8-strconv-to-enc.c
@@ -0,0 +1,79 @@
+/* Conversion from UTF-8 to legacy encodings.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniconv.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "c-strcaseeq.h"
+#include "striconveha.h"
+#include "unistr.h"
+
+char *
+u8_strconv_to_encoding (const uint8_t *string,
+ const char *tocode,
+ enum iconv_ilseq_handler handler)
+{
+ char *result;
+ size_t length;
+
+ if (STRCASEEQ (tocode, "UTF-8", 'U','T','F','-','8',0,0,0,0))
+ {
+ /* Conversion from UTF-8 to UTF-8. No need to go through iconv(). */
+ length = u8_strlen (string) + 1;
+#if CONFIG_UNICODE_SAFETY
+ if (u8_check (string, length))
+ {
+ errno = EILSEQ;
+ return NULL;
+ }
+#endif
+ result = (char *) malloc (length);
+ if (result == NULL)
+ {
+ errno = ENOMEM;
+ return NULL;
+ }
+ memcpy (result, (const char *) string, length);
+ return result;
+ }
+ else
+ {
+ result = NULL;
+ length = 0;
+ if (mem_iconveha ((const char *) string, u8_strlen (string) + 1,
+ "UTF-8", tocode,
+ handler == iconveh_question_mark, handler,
+ NULL, &result, &length) < 0)
+ return NULL;
+ /* Verify the result has exactly one NUL byte, at the end. */
+ if (!(length > 0 && result[length-1] == '\0'
+ && strlen (result) == length-1))
+ {
+ free (result);
+ errno = EILSEQ;
+ return NULL;
+ }
+ return result;
+ }
+}
diff --git a/lib/uniconv/u8-strconv-to-locale.c b/lib/uniconv/u8-strconv-to-locale.c
new file mode 100644
index 00000000..27c45fbf
--- /dev/null
+++ b/lib/uniconv/u8-strconv-to-locale.c
@@ -0,0 +1,29 @@
+/* Conversion from UTF-8 to the locale encoding.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniconv.h"
+
+char *
+u8_strconv_to_locale (const uint8_t *string)
+{
+ const char *encoding = locale_charset ();
+ return u8_strconv_to_encoding (string, encoding, iconveh_question_mark);
+}
diff --git a/lib/unictype.h b/lib/unictype.h
new file mode 100644
index 00000000..1fc04403
--- /dev/null
+++ b/lib/unictype.h
@@ -0,0 +1,720 @@
+/* Unicode character classification and properties.
+ Copyright (C) 2002, 2005-2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _UNICTYPE_H
+#define _UNICTYPE_H
+
+#include "unitypes.h"
+
+/* Get LIBUNISTRING_DLL_VARIABLE. */
+#include <unistring/woe32dll.h>
+
+/* Get bool. */
+#include <unistring/stdbool.h>
+
+/* Get size_t. */
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ========================================================================= */
+
+/* Field 1 of Unicode Character Database: Character name.
+ See "uniname.h". */
+
+/* ========================================================================= */
+
+/* Field 2 of Unicode Character Database: General category. */
+
+/* Data type denoting a General category value. This is not just a bitmask,
+ but rather a bitmask and a pointer to the lookup table, so that programs
+ that use only the predefined bitmasks (i.e. don't combine bitmasks with &
+ and |) don't have a link-time dependency towards the big general table. */
+typedef struct
+{
+ uint32_t bitmask : 31;
+ /*bool*/ unsigned int generic : 1;
+ union
+ {
+ const void *table; /* when generic is 0 */
+ bool (*lookup_fn) (ucs4_t uc, uint32_t bitmask); /* when generic is 1 */
+ } lookup;
+}
+uc_general_category_t;
+
+/* Bits and bit masks denoting General category values. UnicodeData-3.2.0.html
+ says a 32-bit integer will always suffice to represent them.
+ These bit masks can only be used with the uc_is_general_category_withtable
+ function. */
+enum
+{
+ UC_CATEGORY_MASK_L = 0x0000001f,
+ UC_CATEGORY_MASK_Lu = 0x00000001,
+ UC_CATEGORY_MASK_Ll = 0x00000002,
+ UC_CATEGORY_MASK_Lt = 0x00000004,
+ UC_CATEGORY_MASK_Lm = 0x00000008,
+ UC_CATEGORY_MASK_Lo = 0x00000010,
+ UC_CATEGORY_MASK_M = 0x000000e0,
+ UC_CATEGORY_MASK_Mn = 0x00000020,
+ UC_CATEGORY_MASK_Mc = 0x00000040,
+ UC_CATEGORY_MASK_Me = 0x00000080,
+ UC_CATEGORY_MASK_N = 0x00000700,
+ UC_CATEGORY_MASK_Nd = 0x00000100,
+ UC_CATEGORY_MASK_Nl = 0x00000200,
+ UC_CATEGORY_MASK_No = 0x00000400,
+ UC_CATEGORY_MASK_P = 0x0003f800,
+ UC_CATEGORY_MASK_Pc = 0x00000800,
+ UC_CATEGORY_MASK_Pd = 0x00001000,
+ UC_CATEGORY_MASK_Ps = 0x00002000,
+ UC_CATEGORY_MASK_Pe = 0x00004000,
+ UC_CATEGORY_MASK_Pi = 0x00008000,
+ UC_CATEGORY_MASK_Pf = 0x00010000,
+ UC_CATEGORY_MASK_Po = 0x00020000,
+ UC_CATEGORY_MASK_S = 0x003c0000,
+ UC_CATEGORY_MASK_Sm = 0x00040000,
+ UC_CATEGORY_MASK_Sc = 0x00080000,
+ UC_CATEGORY_MASK_Sk = 0x00100000,
+ UC_CATEGORY_MASK_So = 0x00200000,
+ UC_CATEGORY_MASK_Z = 0x01c00000,
+ UC_CATEGORY_MASK_Zs = 0x00400000,
+ UC_CATEGORY_MASK_Zl = 0x00800000,
+ UC_CATEGORY_MASK_Zp = 0x01000000,
+ UC_CATEGORY_MASK_C = 0x3e000000,
+ UC_CATEGORY_MASK_Cc = 0x02000000,
+ UC_CATEGORY_MASK_Cf = 0x04000000,
+ UC_CATEGORY_MASK_Cs = 0x08000000,
+ UC_CATEGORY_MASK_Co = 0x10000000,
+ UC_CATEGORY_MASK_Cn = 0x20000000
+};
+
+/* Predefined General category values. */
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_L;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Lu;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Ll;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Lt;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Lm;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Lo;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_M;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Mn;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Mc;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Me;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_N;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Nd;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Nl;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_No;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_P;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Pc;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Pd;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Ps;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Pe;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Pi;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Pf;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Po;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_S;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Sm;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Sc;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Sk;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_So;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Z;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Zs;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Zl;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Zp;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_C;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Cc;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Cf;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Cs;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Co;
+extern LIBUNISTRING_DLL_VARIABLE const uc_general_category_t UC_CATEGORY_Cn;
+/* Non-public. */
+extern const uc_general_category_t _UC_CATEGORY_NONE;
+
+/* Alias names for predefined General category values. */
+#define UC_LETTER UC_CATEGORY_L
+#define UC_UPPERCASE_LETTER UC_CATEGORY_Lu
+#define UC_LOWERCASE_LETTER UC_CATEGORY_Ll
+#define UC_TITLECASE_LETTER UC_CATEGORY_Lt
+#define UC_MODIFIER_LETTER UC_CATEGORY_Lm
+#define UC_OTHER_LETTER UC_CATEGORY_Lo
+#define UC_MARK UC_CATEGORY_M
+#define UC_NON_SPACING_MARK UC_CATEGORY_Mn
+#define UC_COMBINING_SPACING_MARK UC_CATEGORY_Mc
+#define UC_ENCLOSING_MARK UC_CATEGORY_Me
+#define UC_NUMBER UC_CATEGORY_N
+#define UC_DECIMAL_DIGIT_NUMBER UC_CATEGORY_Nd
+#define UC_LETTER_NUMBER UC_CATEGORY_Nl
+#define UC_OTHER_NUMBER UC_CATEGORY_No
+#define UC_PUNCTUATION UC_CATEGORY_P
+#define UC_CONNECTOR_PUNCTUATION UC_CATEGORY_Pc
+#define UC_DASH_PUNCTUATION UC_CATEGORY_Pd
+#define UC_OPEN_PUNCTUATION UC_CATEGORY_Ps /* a.k.a. UC_START_PUNCTUATION */
+#define UC_CLOSE_PUNCTUATION UC_CATEGORY_Pe /* a.k.a. UC_END_PUNCTUATION */
+#define UC_INITIAL_QUOTE_PUNCTUATION UC_CATEGORY_Pi
+#define UC_FINAL_QUOTE_PUNCTUATION UC_CATEGORY_Pf
+#define UC_OTHER_PUNCTUATION UC_CATEGORY_Po
+#define UC_SYMBOL UC_CATEGORY_S
+#define UC_MATH_SYMBOL UC_CATEGORY_Sm
+#define UC_CURRENCY_SYMBOL UC_CATEGORY_Sc
+#define UC_MODIFIER_SYMBOL UC_CATEGORY_Sk
+#define UC_OTHER_SYMBOL UC_CATEGORY_So
+#define UC_SEPARATOR UC_CATEGORY_Z
+#define UC_SPACE_SEPARATOR UC_CATEGORY_Zs
+#define UC_LINE_SEPARATOR UC_CATEGORY_Zl
+#define UC_PARAGRAPH_SEPARATOR UC_CATEGORY_Zp
+#define UC_OTHER UC_CATEGORY_C
+#define UC_CONTROL UC_CATEGORY_Cc
+#define UC_FORMAT UC_CATEGORY_Cf
+#define UC_SURROGATE UC_CATEGORY_Cs /* all of them are invalid characters */
+#define UC_PRIVATE_USE UC_CATEGORY_Co
+#define UC_UNASSIGNED UC_CATEGORY_Cn /* some of them are invalid characters */
+
+/* Return the union of two general categories.
+ This corresponds to the unions of the two sets of characters. */
+extern uc_general_category_t
+ uc_general_category_or (uc_general_category_t category1,
+ uc_general_category_t category2);
+
+/* Return the intersection of two general categories as bit masks.
+ This *does*not* correspond to the intersection of the two sets of
+ characters. */
+extern uc_general_category_t
+ uc_general_category_and (uc_general_category_t category1,
+ uc_general_category_t category2);
+
+/* Return the intersection of a general category with the complement of a
+ second general category, as bit masks.
+ This *does*not* correspond to the intersection with complement, when
+ viewing the categories as sets of characters. */
+extern uc_general_category_t
+ uc_general_category_and_not (uc_general_category_t category1,
+ uc_general_category_t category2);
+
+/* Return the name of a general category. */
+extern const char *
+ uc_general_category_name (uc_general_category_t category);
+
+/* Return the general category given by name, e.g. "Lu". */
+extern uc_general_category_t
+ uc_general_category_byname (const char *category_name);
+
+/* Return the general category of a Unicode character. */
+extern uc_general_category_t
+ uc_general_category (ucs4_t uc);
+
+/* Test whether a Unicode character belongs to a given category.
+ The CATEGORY argument can be the combination of several predefined
+ general categories. */
+extern bool
+ uc_is_general_category (ucs4_t uc, uc_general_category_t category);
+/* Likewise. This function uses a big table comprising all categories. */
+extern bool
+ uc_is_general_category_withtable (ucs4_t uc, uint32_t bitmask);
+
+/* ========================================================================= */
+
+/* Field 3 of Unicode Character Database: Canonical combining class. */
+
+/* The possible results of uc_combining_class (0..255) are described in
+ UCD.html. The list here is not definitive; more values can be added
+ in future versions. */
+enum
+{
+ UC_CCC_NR = 0, /* Not Reordered */
+ UC_CCC_OV = 1, /* Overlay */
+ UC_CCC_NK = 7, /* Nukta */
+ UC_CCC_KV = 8, /* Kana Voicing */
+ UC_CCC_VR = 9, /* Virama */
+ UC_CCC_ATBL = 200, /* Attached Below Left */
+ UC_CCC_ATB = 202, /* Attached Below */
+ UC_CCC_ATAR = 216, /* Attached Above Right */
+ UC_CCC_BL = 218, /* Below Left */
+ UC_CCC_B = 220, /* Below */
+ UC_CCC_BR = 222, /* Below Right */
+ UC_CCC_L = 224, /* Left */
+ UC_CCC_R = 226, /* Right */
+ UC_CCC_AL = 228, /* Above Left */
+ UC_CCC_A = 230, /* Above */
+ UC_CCC_AR = 232, /* Above Right */
+ UC_CCC_DB = 233, /* Double Below */
+ UC_CCC_DA = 234, /* Double Above */
+ UC_CCC_IS = 240 /* Iota Subscript */
+};
+
+/* Return the canonical combining class of a Unicode character. */
+extern int
+ uc_combining_class (ucs4_t uc);
+
+/* ========================================================================= */
+
+/* Field 4 of Unicode Character Database: Bidirectional category. */
+
+enum
+{
+ UC_BIDI_L, /* Left-to-Right */
+ UC_BIDI_LRE, /* Left-to-Right Embedding */
+ UC_BIDI_LRO, /* Left-to-Right Override */
+ UC_BIDI_R, /* Right-to-Left */
+ UC_BIDI_AL, /* Right-to-Left Arabic */
+ UC_BIDI_RLE, /* Right-to-Left Embedding */
+ UC_BIDI_RLO, /* Right-to-Left Override */
+ UC_BIDI_PDF, /* Pop Directional Format */
+ UC_BIDI_EN, /* European Number */
+ UC_BIDI_ES, /* European Number Separator */
+ UC_BIDI_ET, /* European Number Terminator */
+ UC_BIDI_AN, /* Arabic Number */
+ UC_BIDI_CS, /* Common Number Separator */
+ UC_BIDI_NSM, /* Non-Spacing Mark */
+ UC_BIDI_BN, /* Boundary Neutral */
+ UC_BIDI_B, /* Paragraph Separator */
+ UC_BIDI_S, /* Segment Separator */
+ UC_BIDI_WS, /* Whitespace */
+ UC_BIDI_ON /* Other Neutral */
+};
+
+/* Return the name of a bidirectional category. */
+extern const char *
+ uc_bidi_category_name (int category);
+
+/* Return the bidirectional category given by name, e.g. "LRE". */
+extern int
+ uc_bidi_category_byname (const char *category_name);
+
+/* Return the bidirectional category of a Unicode character. */
+extern int
+ uc_bidi_category (ucs4_t uc);
+
+/* Test whether a Unicode character belongs to a given bidirectional
+ category. */
+extern bool
+ uc_is_bidi_category (ucs4_t uc, int category);
+
+/* ========================================================================= */
+
+/* Field 5 of Unicode Character Database: Character decomposition mapping.
+ See "uninorm.h". */
+
+/* ========================================================================= */
+
+/* Field 6 of Unicode Character Database: Decimal digit value. */
+
+/* Return the decimal digit value of a Unicode character. */
+extern int
+ uc_decimal_value (ucs4_t uc);
+
+/* ========================================================================= */
+
+/* Field 7 of Unicode Character Database: Digit value. */
+
+/* Return the digit value of a Unicode character. */
+extern int
+ uc_digit_value (ucs4_t uc);
+
+/* ========================================================================= */
+
+/* Field 8 of Unicode Character Database: Numeric value. */
+
+/* Return the numeric value of a Unicode character. */
+typedef struct
+{
+ int numerator;
+ int denominator;
+}
+uc_fraction_t;
+extern uc_fraction_t
+ uc_numeric_value (ucs4_t uc);
+
+/* ========================================================================= */
+
+/* Field 9 of Unicode Character Database: Mirrored. */
+
+/* Return the mirrored character of a Unicode character UC in *PUC. */
+extern bool
+ uc_mirror_char (ucs4_t uc, ucs4_t *puc);
+
+/* ========================================================================= */
+
+/* Field 10 of Unicode Character Database: Unicode 1.0 Name.
+ Not available in this library. */
+
+/* ========================================================================= */
+
+/* Field 11 of Unicode Character Database: ISO 10646 comment.
+ Not available in this library. */
+
+/* ========================================================================= */
+
+/* Field 12, 13, 14 of Unicode Character Database: Uppercase mapping,
+ lowercase mapping, titlecase mapping. See "unicase.h". */
+
+/* ========================================================================= */
+
+/* Common API for properties. */
+
+/* Data type denoting a property. This is not just a number, but rather a
+ pointer to the test functions, so that programs that use only few of the
+ properties don't have a link-time dependency towards all the tables. */
+typedef struct
+{
+ bool (*test_fn) (ucs4_t uc);
+}
+uc_property_t;
+
+/* Predefined properties. */
+/* General. */
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_WHITE_SPACE;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_ALPHABETIC;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_OTHER_ALPHABETIC;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_NOT_A_CHARACTER;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_DEPRECATED;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_LOGICAL_ORDER_EXCEPTION;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_VARIATION_SELECTOR;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_PRIVATE_USE;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_UNASSIGNED_CODE_VALUE;
+/* Case. */
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_UPPERCASE;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_OTHER_UPPERCASE;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_LOWERCASE;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_OTHER_LOWERCASE;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_TITLECASE;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_SOFT_DOTTED;
+/* Identifiers. */
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_ID_START;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_OTHER_ID_START;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_ID_CONTINUE;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_OTHER_ID_CONTINUE;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_XID_START;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_XID_CONTINUE;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_PATTERN_WHITE_SPACE;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_PATTERN_SYNTAX;
+/* Shaping and rendering. */
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_JOIN_CONTROL;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_GRAPHEME_BASE;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_GRAPHEME_EXTEND;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_OTHER_GRAPHEME_EXTEND;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_GRAPHEME_LINK;
+/* Bidi. */
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_CONTROL;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_LEFT_TO_RIGHT;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_EUROPEAN_DIGIT;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_EUR_NUM_SEPARATOR;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_EUR_NUM_TERMINATOR;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_ARABIC_DIGIT;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_COMMON_SEPARATOR;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_BLOCK_SEPARATOR;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_SEGMENT_SEPARATOR;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_WHITESPACE;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_NON_SPACING_MARK;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_BOUNDARY_NEUTRAL;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_PDF;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_BIDI_OTHER_NEUTRAL;
+/* Numeric. */
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_HEX_DIGIT;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_ASCII_HEX_DIGIT;
+/* CJK. */
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_IDEOGRAPHIC;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_UNIFIED_IDEOGRAPH;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_RADICAL;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_IDS_BINARY_OPERATOR;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_IDS_TRINARY_OPERATOR;
+/* Misc. */
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_ZERO_WIDTH;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_SPACE;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_NON_BREAK;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_ISO_CONTROL;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_FORMAT_CONTROL;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_DASH;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_HYPHEN;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_PUNCTUATION;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_LINE_SEPARATOR;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_PARAGRAPH_SEPARATOR;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_QUOTATION_MARK;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_SENTENCE_TERMINAL;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_TERMINAL_PUNCTUATION;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_CURRENCY_SYMBOL;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_MATH;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_OTHER_MATH;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_PAIRED_PUNCTUATION;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_LEFT_OF_PAIR;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_COMBINING;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_COMPOSITE;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_DECIMAL_DIGIT;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_NUMERIC;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_DIACRITIC;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_EXTENDER;
+extern LIBUNISTRING_DLL_VARIABLE const uc_property_t UC_PROPERTY_IGNORABLE_CONTROL;
+
+/* Return the property given by name, e.g. "White space". */
+extern uc_property_t
+ uc_property_byname (const char *property_name);
+
+/* Test whether a property is valid. */
+#define uc_property_is_valid(property) ((property).test_fn != NULL)
+
+/* Test whether a Unicode character has a given property. */
+extern bool
+ uc_is_property (ucs4_t uc, uc_property_t property);
+extern bool uc_is_property_white_space (ucs4_t uc);
+extern bool uc_is_property_alphabetic (ucs4_t uc);
+extern bool uc_is_property_other_alphabetic (ucs4_t uc);
+extern bool uc_is_property_not_a_character (ucs4_t uc);
+extern bool uc_is_property_default_ignorable_code_point (ucs4_t uc);
+extern bool uc_is_property_other_default_ignorable_code_point (ucs4_t uc);
+extern bool uc_is_property_deprecated (ucs4_t uc);
+extern bool uc_is_property_logical_order_exception (ucs4_t uc);
+extern bool uc_is_property_variation_selector (ucs4_t uc);
+extern bool uc_is_property_private_use (ucs4_t uc);
+extern bool uc_is_property_unassigned_code_value (ucs4_t uc);
+extern bool uc_is_property_uppercase (ucs4_t uc);
+extern bool uc_is_property_other_uppercase (ucs4_t uc);
+extern bool uc_is_property_lowercase (ucs4_t uc);
+extern bool uc_is_property_other_lowercase (ucs4_t uc);
+extern bool uc_is_property_titlecase (ucs4_t uc);
+extern bool uc_is_property_soft_dotted (ucs4_t uc);
+extern bool uc_is_property_id_start (ucs4_t uc);
+extern bool uc_is_property_other_id_start (ucs4_t uc);
+extern bool uc_is_property_id_continue (ucs4_t uc);
+extern bool uc_is_property_other_id_continue (ucs4_t uc);
+extern bool uc_is_property_xid_start (ucs4_t uc);
+extern bool uc_is_property_xid_continue (ucs4_t uc);
+extern bool uc_is_property_pattern_white_space (ucs4_t uc);
+extern bool uc_is_property_pattern_syntax (ucs4_t uc);
+extern bool uc_is_property_join_control (ucs4_t uc);
+extern bool uc_is_property_grapheme_base (ucs4_t uc);
+extern bool uc_is_property_grapheme_extend (ucs4_t uc);
+extern bool uc_is_property_other_grapheme_extend (ucs4_t uc);
+extern bool uc_is_property_grapheme_link (ucs4_t uc);
+extern bool uc_is_property_bidi_control (ucs4_t uc);
+extern bool uc_is_property_bidi_left_to_right (ucs4_t uc);
+extern bool uc_is_property_bidi_hebrew_right_to_left (ucs4_t uc);
+extern bool uc_is_property_bidi_arabic_right_to_left (ucs4_t uc);
+extern bool uc_is_property_bidi_european_digit (ucs4_t uc);
+extern bool uc_is_property_bidi_eur_num_separator (ucs4_t uc);
+extern bool uc_is_property_bidi_eur_num_terminator (ucs4_t uc);
+extern bool uc_is_property_bidi_arabic_digit (ucs4_t uc);
+extern bool uc_is_property_bidi_common_separator (ucs4_t uc);
+extern bool uc_is_property_bidi_block_separator (ucs4_t uc);
+extern bool uc_is_property_bidi_segment_separator (ucs4_t uc);
+extern bool uc_is_property_bidi_whitespace (ucs4_t uc);
+extern bool uc_is_property_bidi_non_spacing_mark (ucs4_t uc);
+extern bool uc_is_property_bidi_boundary_neutral (ucs4_t uc);
+extern bool uc_is_property_bidi_pdf (ucs4_t uc);
+extern bool uc_is_property_bidi_embedding_or_override (ucs4_t uc);
+extern bool uc_is_property_bidi_other_neutral (ucs4_t uc);
+extern bool uc_is_property_hex_digit (ucs4_t uc);
+extern bool uc_is_property_ascii_hex_digit (ucs4_t uc);
+extern bool uc_is_property_ideographic (ucs4_t uc);
+extern bool uc_is_property_unified_ideograph (ucs4_t uc);
+extern bool uc_is_property_radical (ucs4_t uc);
+extern bool uc_is_property_ids_binary_operator (ucs4_t uc);
+extern bool uc_is_property_ids_trinary_operator (ucs4_t uc);
+extern bool uc_is_property_zero_width (ucs4_t uc);
+extern bool uc_is_property_space (ucs4_t uc);
+extern bool uc_is_property_non_break (ucs4_t uc);
+extern bool uc_is_property_iso_control (ucs4_t uc);
+extern bool uc_is_property_format_control (ucs4_t uc);
+extern bool uc_is_property_dash (ucs4_t uc);
+extern bool uc_is_property_hyphen (ucs4_t uc);
+extern bool uc_is_property_punctuation (ucs4_t uc);
+extern bool uc_is_property_line_separator (ucs4_t uc);
+extern bool uc_is_property_paragraph_separator (ucs4_t uc);
+extern bool uc_is_property_quotation_mark (ucs4_t uc);
+extern bool uc_is_property_sentence_terminal (ucs4_t uc);
+extern bool uc_is_property_terminal_punctuation (ucs4_t uc);
+extern bool uc_is_property_currency_symbol (ucs4_t uc);
+extern bool uc_is_property_math (ucs4_t uc);
+extern bool uc_is_property_other_math (ucs4_t uc);
+extern bool uc_is_property_paired_punctuation (ucs4_t uc);
+extern bool uc_is_property_left_of_pair (ucs4_t uc);
+extern bool uc_is_property_combining (ucs4_t uc);
+extern bool uc_is_property_composite (ucs4_t uc);
+extern bool uc_is_property_decimal_digit (ucs4_t uc);
+extern bool uc_is_property_numeric (ucs4_t uc);
+extern bool uc_is_property_diacritic (ucs4_t uc);
+extern bool uc_is_property_extender (ucs4_t uc);
+extern bool uc_is_property_ignorable_control (ucs4_t uc);
+
+/* ========================================================================= */
+
+/* Subdivision of the Unicode characters into scripts. */
+
+typedef struct
+{
+ unsigned int code : 21;
+ unsigned int start : 1;
+ unsigned int end : 1;
+}
+uc_interval_t;
+typedef struct
+{
+ unsigned int nintervals;
+ const uc_interval_t *intervals;
+ const char *name;
+}
+uc_script_t;
+
+/* Return the script of a Unicode character. */
+extern const uc_script_t *
+ uc_script (ucs4_t uc);
+
+/* Return the script given by name, e.g. "HAN". */
+extern const uc_script_t *
+ uc_script_byname (const char *script_name);
+
+/* Test whether a Unicode character belongs to a given script. */
+extern bool
+ uc_is_script (ucs4_t uc, const uc_script_t *script);
+
+/* Get the list of all scripts. */
+extern void
+ uc_all_scripts (const uc_script_t **scripts, size_t *count);
+
+/* ========================================================================= */
+
+/* Subdivision of the Unicode character range into blocks. */
+
+typedef struct
+{
+ ucs4_t start;
+ ucs4_t end;
+ const char *name;
+}
+uc_block_t;
+
+/* Return the block a character belongs to. */
+extern const uc_block_t *
+ uc_block (ucs4_t uc);
+
+/* Test whether a Unicode character belongs to a given block. */
+extern bool
+ uc_is_block (ucs4_t uc, const uc_block_t *block);
+
+/* Get the list of all blocks. */
+extern void
+ uc_all_blocks (const uc_block_t **blocks, size_t *count);
+
+/* ========================================================================= */
+
+/* Properties taken from language standards. */
+
+/* Test whether a Unicode character is considered whitespace in ISO C 99. */
+extern bool
+ uc_is_c_whitespace (ucs4_t uc);
+
+/* Test whether a Unicode character is considered whitespace in Java. */
+extern bool
+ uc_is_java_whitespace (ucs4_t uc);
+
+enum
+{
+ UC_IDENTIFIER_START, /* valid as first or subsequent character */
+ UC_IDENTIFIER_VALID, /* valid as subsequent character only */
+ UC_IDENTIFIER_INVALID, /* not valid */
+ UC_IDENTIFIER_IGNORABLE /* ignorable (Java only) */
+};
+
+/* Return the categorization of a Unicode character w.r.t. the ISO C 99
+ identifier syntax. */
+extern int
+ uc_c_ident_category (ucs4_t uc);
+
+/* Return the categorization of a Unicode character w.r.t. the Java
+ identifier syntax. */
+extern int
+ uc_java_ident_category (ucs4_t uc);
+
+/* ========================================================================= */
+
+/* Like ISO C <ctype.h> and <wctype.h>. These functions are deprecated,
+ because this set of functions was designed with ASCII in mind and cannot
+ reflect the more diverse reality of the Unicode character set. But they
+ can be a quick-and-dirty porting aid when migrating from wchar_t APIs
+ to Unicode strings. */
+
+/* Test for any character for which 'uc_is_alpha' or 'uc_is_digit' is true. */
+extern bool
+ uc_is_alnum (ucs4_t uc);
+
+/* Test for any character for which 'uc_is_upper' or 'uc_is_lower' is true,
+ or any character that is one of a locale-specific set of characters for
+ which none of 'uc_is_cntrl', 'uc_is_digit', 'uc_is_punct', or 'uc_is_space'
+ is true. */
+extern bool
+ uc_is_alpha (ucs4_t uc);
+
+/* Test for any control character. */
+extern bool
+ uc_is_cntrl (ucs4_t uc);
+
+/* Test for any character that corresponds to a decimal-digit character. */
+extern bool
+ uc_is_digit (ucs4_t uc);
+
+/* Test for any character for which 'uc_is_print' is true and 'uc_is_space'
+ is false. */
+extern bool
+ uc_is_graph (ucs4_t uc);
+
+/* Test for any character that corresponds to a lowercase letter or is one
+ of a locale-specific set of characters for which none of 'uc_is_cntrl',
+ 'uc_is_digit', 'uc_is_punct', or 'uc_is_space' is true. */
+extern bool
+ uc_is_lower (ucs4_t uc);
+
+/* Test for any printing character. */
+extern bool
+ uc_is_print (ucs4_t uc);
+
+/* Test for any printing character that is one of a locale-specific set of
+ characters for which neither 'uc_is_space' nor 'uc_is_alnum' is true. */
+extern bool
+ uc_is_punct (ucs4_t uc);
+
+/* Test for any character that corresponds to a locale-specific set of
+ characters for which none of 'uc_is_alnum', 'uc_is_graph', or 'uc_is_punct'
+ is true. */
+extern bool
+ uc_is_space (ucs4_t uc);
+
+/* Test for any character that corresponds to an uppercase letter or is one
+ of a locale-specific set of character for which none of 'uc_is_cntrl',
+ 'uc_is_digit', 'uc_is_punct', or 'uc_is_space' is true. */
+extern bool
+ uc_is_upper (ucs4_t uc);
+
+/* Test for any character that corresponds to a hexadecimal-digit
+ character. */
+extern bool
+ uc_is_xdigit (ucs4_t uc);
+
+/* GNU extension. */
+/* Test for any character that corresponds to a standard blank character or
+ a locale-specific set of characters for which 'uc_is_alnum' is false. */
+extern bool
+ uc_is_blank (ucs4_t uc);
+
+/* ========================================================================= */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UNICTYPE_H */
diff --git a/lib/unictype/bidi_byname.c b/lib/unictype/bidi_byname.c
new file mode 100644
index 00000000..8a6cb71a
--- /dev/null
+++ b/lib/unictype/bidi_byname.c
@@ -0,0 +1,171 @@
+/* Bidi categories of Unicode characters.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+int
+uc_bidi_category_byname (const char *category_name)
+{
+ switch (category_name[0])
+ {
+ case 'A':
+ switch (category_name[1])
+ {
+ case 'L':
+ if (category_name[2] == '\0')
+ return UC_BIDI_AL;
+ break;
+ case 'N':
+ if (category_name[2] == '\0')
+ return UC_BIDI_AN;
+ break;
+ }
+ break;
+ case 'B':
+ switch (category_name[1])
+ {
+ case '\0':
+ return UC_BIDI_B;
+ case 'N':
+ if (category_name[2] == '\0')
+ return UC_BIDI_BN;
+ break;
+ }
+ break;
+ case 'C':
+ switch (category_name[1])
+ {
+ case 'S':
+ if (category_name[2] == '\0')
+ return UC_BIDI_CS;
+ break;
+ }
+ break;
+ case 'E':
+ switch (category_name[1])
+ {
+ case 'N':
+ if (category_name[2] == '\0')
+ return UC_BIDI_EN;
+ break;
+ case 'S':
+ if (category_name[2] == '\0')
+ return UC_BIDI_ES;
+ break;
+ case 'T':
+ if (category_name[2] == '\0')
+ return UC_BIDI_ET;
+ break;
+ }
+ break;
+ case 'L':
+ switch (category_name[1])
+ {
+ case '\0':
+ return UC_BIDI_L;
+ case 'R':
+ switch (category_name[2])
+ {
+ case 'E':
+ if (category_name[3] == '\0')
+ return UC_BIDI_LRE;
+ break;
+ case 'O':
+ if (category_name[3] == '\0')
+ return UC_BIDI_LRO;
+ break;
+ }
+ break;
+ }
+ break;
+ case 'N':
+ switch (category_name[1])
+ {
+ case 'S':
+ switch (category_name[2])
+ {
+ case 'M':
+ if (category_name[3] == '\0')
+ return UC_BIDI_NSM;
+ break;
+ }
+ break;
+ }
+ break;
+ case 'O':
+ switch (category_name[1])
+ {
+ case 'N':
+ if (category_name[2] == '\0')
+ return UC_BIDI_ON;
+ break;
+ }
+ break;
+ case 'P':
+ switch (category_name[1])
+ {
+ case 'D':
+ switch (category_name[2])
+ {
+ case 'F':
+ if (category_name[3] == '\0')
+ return UC_BIDI_PDF;
+ break;
+ }
+ break;
+ }
+ break;
+ case 'R':
+ switch (category_name[1])
+ {
+ case '\0':
+ return UC_BIDI_R;
+ case 'L':
+ switch (category_name[2])
+ {
+ case 'E':
+ if (category_name[3] == '\0')
+ return UC_BIDI_RLE;
+ break;
+ case 'O':
+ if (category_name[3] == '\0')
+ return UC_BIDI_RLO;
+ break;
+ }
+ break;
+ }
+ break;
+ case 'S':
+ if (category_name[1] == '\0')
+ return UC_BIDI_S;
+ break;
+ case 'W':
+ switch (category_name[1])
+ {
+ case 'S':
+ if (category_name[2] == '\0')
+ return UC_BIDI_WS;
+ break;
+ }
+ break;
+ }
+ /* Invalid category name. */
+ return -1;
+}
diff --git a/lib/unictype/bidi_name.c b/lib/unictype/bidi_name.c
new file mode 100644
index 00000000..76529768
--- /dev/null
+++ b/lib/unictype/bidi_name.c
@@ -0,0 +1,35 @@
+/* Bidi categories of Unicode characters.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+static const char u_bidi_category_name[19][4] =
+{
+ "L", "LRE", "LRO", "R", "AL", "RLE", "RLO", "PDF", "EN", "ES",
+ "ET", "AN", "CS", "NSM", "BN", "B", "S", "WS", "ON"
+};
+
+const char *
+uc_bidi_category_name (int category)
+{
+ if (category >= 0 && category < sizeof (u_bidi_category_name) / sizeof (u_bidi_category_name[0]))
+ return u_bidi_category_name[category];
+ return NULL;
+}
diff --git a/lib/unictype/bidi_of.c b/lib/unictype/bidi_of.c
new file mode 100644
index 00000000..93fc7a8b
--- /dev/null
+++ b/lib/unictype/bidi_of.c
@@ -0,0 +1,52 @@
+/* Bidi categories of Unicode characters.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_bidi_category table. */
+#include "bidi_of.h"
+
+int
+uc_bidi_category (ucs4_t uc)
+{
+ unsigned int index1 = uc >> bidi_category_header_0;
+ if (index1 < bidi_category_header_1)
+ {
+ int lookup1 = u_bidi_category.level1[index1];
+ if (lookup1 >= 0)
+ {
+ unsigned int index2 = (uc >> bidi_category_header_2) & bidi_category_header_3;
+ int lookup2 = u_bidi_category.level2[lookup1 + index2];
+ if (lookup2 >= 0)
+ {
+ unsigned int index3 = ((uc & bidi_category_header_4) + lookup2) * 5;
+ /* level3 contains 5-bit values, packed into 16-bit words. */
+ unsigned int lookup3 =
+ ((u_bidi_category.level3[index3>>4]
+ | (u_bidi_category.level3[(index3>>4)+1] << 16))
+ >> (index3 % 16))
+ & 0x1f;
+
+ return lookup3;
+ }
+ }
+ }
+ return UC_BIDI_L;
+}
diff --git a/lib/unictype/bidi_of.h b/lib/unictype/bidi_of.h
new file mode 100644
index 00000000..9f6875be
--- /dev/null
+++ b/lib/unictype/bidi_of.h
@@ -0,0 +1,789 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Bidi categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define bidi_category_header_0 16
+#define bidi_category_header_1 17
+#define bidi_category_header_2 7
+#define bidi_category_header_3 511
+#define bidi_category_header_4 127
+static const
+struct
+ {
+ int level1[17];
+ short level2[4 << 9];
+ unsigned short level3[101 * 40 + 1];
+ }
+u_bidi_category =
+{
+ {
+ 0, 512, 1024, 1024, 1024, 1024, 1024, 1024,
+ 1024, 1024, 1024, 1024, 1024, 1024, 1536, 1024,
+ 1024
+ },
+ {
+ 0, 128, -1, -1, -1, 256, 384, 512,
+ -1, 640, -1, 768, 896, 1024, 1152, 1280,
+ 1408, 1408, 1536, 1664, 1792, 1920, 2048, 2176,
+ 2304, 2432, 2560, 2688, 2816, 2944, 3072, 3200,
+ 3328, 3456, -1, -1, -1, -1, 3584, 3712,
+ -1, -1, -1, -1, -1, 3840, 3968, 4096,
+ 4224, 4352, 4480, 4608, 4736, -1, 4864, 4992,
+ 5120, -1, -1, 5248, -1, -1, -1, 5376,
+ 5504, 5632, 5760, 5888, 6016, 6144, 6272, 6400,
+ 6528, 6656, 6144, 6144, 6144, 6784, 6912, 7040,
+ -1, -1, 6144, 6144, 6144, 6144, 7168, -1,
+ -1, 7296, -1, 7424, 7552, 7680, 6144, 7808,
+ 7936, 8064, -1, 8192, 8320, 8448, 8576, 8704,
+ -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, 8832, -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, -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, 8960, -1, -1, 9088, -1, 9216, 9344,
+ 9472, 9600, 9728, -1, 9856, -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,
+ -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, 9984, 10112,
+ 10112, 10112, 10240, 10368, 10496, 10624, 10752, 10880,
+ -1, -1, 11008, 11136, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 1408, 1408, 11264, 1408, 11392, 1408, 1408, 1408,
+ 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408,
+ -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, -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, -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, 11520, 11648, 11776, -1, 11904, -1,
+ -1, -1, -1, -1, -1, -1, -1, 12032,
+ -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,
+ 12160, 12288, -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, 12416,
+ -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, -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, -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, -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, 12416,
+ 12544, 12544, 12672, 12800, 12544, 12544, 12544, 12544,
+ 12544, 12544, 12544, 12544, 12544, 12544, 12544, 12544,
+ 12544, 12544, 12544, 12544, 12544, 12544, 12544, 12544,
+ 12544, 12544, 12544, 12544, 12544, 12544, 12544, 12544,
+ -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, -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, -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, -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, 12416
+ },
+ {
+ 0x39ce, 0x9ce7, 0x0e73, 0x183e, 0x739f, 0x39ce, 0x9ce7, 0xce73,
+ 0xf739, 0x83de, 0x4a51, 0x94a5, 0x5294, 0xc4ca, 0x6312, 0x2108,
+ 0x1084, 0x0842, 0x2931, 0x94a5, 0x0012, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2900, 0x94a5, 0x0012, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2900, 0x74a5,
+ 0x39ce, 0x9ee7, 0xce73, 0xe739, 0x739c, 0x39ce, 0x9ce7, 0xce73,
+ 0xe739, 0x739c, 0x2a4c, 0x94a5, 0x5294, 0x2902, 0x949d, 0x214a,
+ 0x8124, 0x1294, 0x2901, 0x94a5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0090, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0090, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4000, 0x004a, 0x0000, 0x4800, 0xa529, 0x5294, 0x294a,
+ 0x94a5, 0x4800, 0xa529, 0x5294, 0x294a, 0x94a5, 0x0000, 0xa400,
+ 0x5294, 0x294a, 0x9025, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0x0000, 0x2520, 0x0000, 0x0000, 0x0480,
+ 0x0000, 0x2520, 0x0090, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0x0004, 0x0000, 0x0000,
+ 0x8000, 0x5ad6, 0xad6b, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0048, 0x0000, 0xb5a3, 0x5ad6, 0xad6b,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x68da, 0xb5a3, 0xdad1, 0x6368, 0x318c,
+ 0x18c6, 0x8c63, 0xc631, 0x6318, 0x318c, 0x18c6, 0x8c63, 0xc631,
+ 0x6318, 0x318c, 0x18c6, 0x8c63, 0xc631, 0x6318, 0x318c, 0x18c6,
+ 0xad6b, 0x8845, 0x4494, 0xc229, 0x9488, 0xb5ad, 0x5ad6, 0xad6b,
+ 0x4235, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0xd690,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x235a, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5a9, 0x2108, 0x108d, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x4842, 0xad6b, 0xd6b5, 0x6b56, 0xb5ad, 0x08d6,
+ 0x4d69, 0xd6b6, 0x211a, 0x2108, 0x1084, 0x0842, 0x4211, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x7108, 0x11a4, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0x4235,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x4842, 0xad6b, 0xd6b5, 0x6b5a, 0x108d,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x8c63, 0xc631, 0x6318, 0x318c,
+ 0x18c6, 0x8c63, 0xc631, 0x6318, 0x318c, 0x18c6, 0x8c63, 0xc631,
+ 0x6318, 0xd68c, 0x6b5a, 0xb5ad, 0x8636, 0x5294, 0x318e, 0x18c6,
+ 0x8c63, 0xc631, 0x6318, 0x318c, 0x18c6, 0x8c63, 0xc631, 0x6318,
+ 0x318c, 0x18c6, 0x8c63, 0xc631, 0x6318, 0x318c, 0x18c6, 0x8c63,
+ 0xc631, 0x6318, 0x318c, 0x18c6, 0x8c63, 0xc631, 0x6318, 0x318c,
+ 0x18c6, 0x8c63, 0xc631, 0x6318, 0x318c, 0x18c6, 0x8c63, 0xc631,
+ 0x6318, 0x318c, 0x18c6, 0x8c63, 0xc631, 0x6318, 0x318c, 0x18c6,
+ 0x35a0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0xd000, 0x0000, 0xb5a0, 0x5ad6, 0x0d6b, 0x0000,
+ 0x001a, 0xb5a0, 0x00d6, 0x0000, 0x0000, 0x0000, 0xb400, 0x0006,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x01a0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0xd000, 0x0000, 0xb5a0, 0x00d6, 0x0000, 0x0000,
+ 0x001a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb400, 0x0006,
+ 0x0000, 0x0000, 0x0000, 0x2800, 0x0005, 0x0000, 0x0000, 0x0000,
+ 0x35a0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0xd000, 0x0000, 0x35a0, 0x0000, 0x0d68, 0xd680,
+ 0x001a, 0x01a0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x01ad, 0x1a00, 0x0000, 0x0000, 0x0000,
+ 0x35a0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0xd000, 0x0000, 0xb5a0, 0x1ad6, 0x0d68, 0x0000,
+ 0x001a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb400, 0x0006,
+ 0x0000, 0x0000, 0x0000, 0x0140, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x01a0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0xd000, 0x6800, 0xb5a0, 0x00d6, 0x0000, 0x0000,
+ 0x001a, 0x0000, 0x4000, 0x0003, 0x0000, 0x0000, 0xb400, 0x0006,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3400, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0000, 0x0000, 0x0000,
+ 0x001a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa529, 0x5294, 0x0049, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6b40, 0x000d, 0x4000, 0x0d6b, 0xd6b4,
+ 0x001a, 0x0000, 0x5a00, 0x0003, 0x0000, 0x0000, 0xb400, 0x0006,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5200, 0x294a, 0x04a5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0xd000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd000,
+ 0x001a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb400, 0x0006,
+ 0x0000, 0x0000, 0x0000, 0x4a40, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xb5a0, 0x00d6, 0x0000, 0x0000,
+ 0x001a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb400, 0x0006,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0034,
+ 0x0000, 0xb400, 0x40d6, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01a0,
+ 0x5ad0, 0xad6b, 0x0035, 0x5000, 0x0000, 0x0000, 0xad68, 0xd6b5,
+ 0x035a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01a0,
+ 0x5ad0, 0xad6b, 0xd681, 0x0000, 0x0000, 0x0000, 0xad00, 0xd6b5,
+ 0x001a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad00,
+ 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1a00, 0xa068, 0x2949, 0x0025, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xb5a0, 0x5ad6, 0xad6b, 0xd6b5, 0x035a,
+ 0xb5ad, 0x40d6, 0x006b, 0x0000, 0x0000, 0xb5ad, 0x5ad6, 0xa06b,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x0000, 0x0000, 0x4000, 0x0003, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b5a, 0xb40d,
+ 0x5ad6, 0xa06b, 0x0035, 0x035a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xad00, 0x0001, 0x6b40, 0x000d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xb5a0, 0x00d6, 0x0000, 0x0000, 0x0000,
+ 0x3400, 0x5a00, 0x0003, 0x0000, 0x001a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6800, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a52, 0xa529, 0x5294,
+ 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0011, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2900, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb400, 0x00d6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb400,
+ 0x00d6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb400, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xb400, 0x0006, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xad68, 0xd6b5, 0x001a, 0x0000, 0x4000, 0xa003, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x0006, 0x0000, 0x0500, 0x001a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4a52, 0xa529, 0x5294, 0x0002, 0x0000,
+ 0x4a52, 0xa529, 0x5294, 0xd6ca, 0x045a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa000, 0x0001, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x35ad, 0x0000, 0x0d68, 0x0000, 0x0000, 0x3400,
+ 0x0000, 0xa000, 0x06b5, 0x0000, 0x0012, 0x2520, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9480, 0x4a52, 0xa529,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0d68,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xb5ad, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x40d0, 0xad6b, 0xd035, 0x0000, 0x3400, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xd680, 0x6b5a, 0xb5ad, 0x0006, 0x0000, 0x0000, 0x0000,
+ 0x01ad, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0xb400, 0x1ad6, 0xad00, 0x0001, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd000, 0x6b5a, 0xb5ad,
+ 0x4006, 0x006b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b40,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x9024, 0x0252, 0x0000, 0x0000, 0x0000,
+ 0x94a4, 0x0000, 0x0000, 0x0000, 0x0000, 0x94a4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x94a4, 0x0000, 0x0000, 0x0000, 0x0000, 0x04a4,
+ 0xc631, 0x6318, 0x318c, 0xe746, 0x181c, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0xf194, 0x7285, 0x6184, 0x294a,
+ 0xa4a5, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa4c9, 0x5294, 0x294a,
+ 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x8ca5, 0x39ce, 0x08e7,
+ 0x8421, 0xe738, 0x739c, 0x0008, 0x1080, 0x0842, 0x24a5, 0x04a5,
+ 0x2108, 0x1084, 0x0842, 0x24a5, 0x04a5, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x14a5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0x000d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0252, 0xa529, 0x5204, 0x0002, 0x0000, 0x0000, 0x8120, 0x1294,
+ 0x0000, 0x9480, 0x4a52, 0x2409, 0x4090, 0x0002, 0x0280, 0x0000,
+ 0x0000, 0x0000, 0x0948, 0x0000, 0x4a52, 0x0129, 0x0000, 0x2948,
+ 0x0025, 0x0000, 0xa529, 0x5294, 0x294a, 0x94a5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x2652, 0xa525, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0x2529, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2900, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0x8129, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529,
+ 0x0094, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x0004, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4a52, 0xa529, 0x5294, 0x004a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a52, 0xa529,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x0894, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x0421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2948, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x0025, 0x4a52, 0xa529, 0x5294, 0x094a, 0x94a4, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x0001, 0x4a52, 0x0009, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4a40, 0x8129, 0x5294, 0x2002, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x4094, 0x294a, 0x94a5, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x094a,
+ 0x9024, 0x4a52, 0x8000, 0x5204, 0x294a, 0x04a5, 0x4a40, 0xa529,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0x0129, 0x5200,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a40,
+ 0xa529, 0x5294, 0x294a, 0x04a5, 0x4a52, 0xa529, 0x5294, 0x204a,
+ 0x0001, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x0001, 0x4a52, 0x0129, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa400,
+ 0x5294, 0x004a, 0x0000, 0x0000, 0x0000, 0x4000, 0x294a, 0x94a5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x0012,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x2902, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0x0009, 0x0000, 0x0000, 0x0000,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x94a5, 0x4a52, 0x2529, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4a52, 0xa529, 0x5294, 0x094a, 0x0000,
+ 0x4a51, 0x0129, 0x5200, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x0012, 0x0000, 0x0000, 0xd6b4, 0x6b5a, 0x0012,
+ 0x8000, 0x0094, 0x0000, 0x94a4, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa000,
+ 0x2935, 0x0001, 0x0012, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0900, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0x0009,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x04a4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2000, 0x04a5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a40,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x0000, 0x0000, 0x0000, 0x2000,
+ 0x94a5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5290, 0x004a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9480, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x0004, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x94a4, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6800, 0x35ad, 0x0009, 0x0000, 0xd000, 0x949a,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x0252, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3400, 0x4000, 0x0003, 0x0680, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5a00, 0x5203, 0x094a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa520, 0x0094, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d0, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4000, 0xad6b, 0xd6b5, 0x001a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad68, 0xd6b5,
+ 0x6b5a, 0x01ad, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa000, 0xd6b5, 0x035a, 0x35a0,
+ 0x5a00, 0x0003, 0x0000, 0x0000, 0x8000, 0x0006, 0x0000, 0xd000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1b46, 0x8c63, 0xc631, 0x2318, 0x318d, 0x18c6, 0x8c63,
+ 0xc631, 0x6318, 0x318c, 0x18c6, 0x8c63, 0xc631, 0x6318, 0x318c,
+ 0x18c6, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x9488, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x39ce, 0x9ce7, 0xce73, 0xe739, 0x739c, 0x39ce, 0x9ce7,
+ 0xce73, 0xe739, 0x739c, 0x1084, 0x0842, 0x8421, 0x4210, 0x2124,
+ 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0x4a52, 0xa529, 0x5294,
+ 0x4212, 0x2108, 0xb5ad, 0x5ad6, 0x8423, 0x4210, 0x2108, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x94a5, 0x324c, 0x9922, 0x5294, 0x294a, 0x54a5, 0xa652, 0xa524,
+ 0x5224, 0x4929, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x7108,
+ 0x4a40, 0x94a5, 0x5294, 0xc4ca, 0x6312, 0x2108, 0x1084, 0x0842,
+ 0x2931, 0x94a5, 0x0012, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2900, 0x94a5, 0x0012, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2900, 0x94a5, 0x4a52, 0x2529,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x494a, 0x9529,
+ 0x5202, 0x294a, 0x04a5, 0x39ce, 0x9ce7, 0x4e73, 0x294a, 0x73a5,
+ 0x0240, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0x004a, 0x0000, 0x4a52, 0xa529, 0x5294,
+ 0x094a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001a,
+ 0x8c63, 0xc631, 0x6318, 0x318c, 0x18c6, 0x8c63, 0xc631, 0x6318,
+ 0x318c, 0x90c6, 0x8c63, 0xc631, 0x6318, 0x318c, 0x18c6, 0x8c63,
+ 0xc631, 0x6318, 0x318c, 0x18c6, 0x8c63, 0xc631, 0x6318, 0x318c,
+ 0x18c6, 0x8c63, 0xc631, 0x6318, 0x318c, 0x18c6, 0x8c63, 0xc631,
+ 0x6318, 0x318c, 0x18c6, 0x8c63, 0xc631, 0x6318, 0x318c, 0x18c6,
+ 0xb5a3, 0x5a36, 0x631b, 0xd18c, 0x6b5a, 0x8c63, 0xc631, 0x6318,
+ 0x318c, 0x18c6, 0x8c63, 0xc631, 0x6318, 0x318c, 0x18c6, 0x8c63,
+ 0xc631, 0xad18, 0x31b5, 0x68c6, 0x8c63, 0xc631, 0x6318, 0x318c,
+ 0x18c6, 0x8c63, 0xc631, 0x6318, 0x318c, 0x18c6, 0x8c63, 0xc631,
+ 0x6318, 0x318c, 0x18c6, 0x8c63, 0xc631, 0x6318, 0x318c, 0x18c6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xad68, 0x0001, 0x0000, 0x0000, 0x9ce7, 0xce73, 0xd6b9, 0x6b5a,
+ 0x35ad, 0x5a00, 0xad6b, 0x06b5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd6b4, 0x001a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0xb652, 0x24d6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x94a5, 0x4a52, 0xa529, 0x0004, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4200, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x094a, 0x0000, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0x0009, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7380,
+ 0x39ce, 0x9ce7, 0xce73, 0xe739, 0x739c, 0x39ce, 0x9ce7, 0xce73,
+ 0xe739, 0x739c, 0x39ce, 0x9ce7, 0xce73, 0xe739, 0x739c, 0x39ce,
+ 0x9ce7, 0xce73, 0xe739, 0x739c, 0x39ce, 0x9ce7, 0xce73, 0xe739,
+ 0x739c, 0x39ce, 0x9ce7, 0xce73, 0xe739, 0x739c, 0x39ce, 0x9ce7,
+ 0xce73, 0xe739, 0x739c, 0x39ce, 0x9ce7, 0xce73, 0xe739, 0x739c,
+ 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a,
+ 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0x39ce, 0x9ce7, 0xce73, 0xe739, 0x739c,
+ 0x0000
+ }
+};
diff --git a/lib/unictype/bidi_test.c b/lib/unictype/bidi_test.c
new file mode 100644
index 00000000..72887bbc
--- /dev/null
+++ b/lib/unictype/bidi_test.c
@@ -0,0 +1,27 @@
+/* Bidi categories of Unicode characters.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+bool
+uc_is_bidi_category (ucs4_t uc, int category)
+{
+ return (uc_bidi_category (uc) == category);
+}
diff --git a/lib/unictype/bitmap.h b/lib/unictype/bitmap.h
new file mode 100644
index 00000000..280b2985
--- /dev/null
+++ b/lib/unictype/bitmap.h
@@ -0,0 +1,47 @@
+/* Three-level bitmap lookup.
+ Copyright (C) 2000-2002, 2005-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2000-2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+static inline int bitmap_lookup (const void *table, ucs4_t uc);
+
+/* These values are currently hardcoded into gen-ctype.c. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+
+static inline int
+bitmap_lookup (const void *table, ucs4_t uc)
+{
+ unsigned int index1 = uc >> header_0;
+ if (index1 < ((const int *) table)[0])
+ {
+ int lookup1 = ((const int *) table)[1 + index1];
+ if (lookup1 >= 0)
+ {
+ unsigned int index2 = (uc >> header_2) & header_3;
+ int lookup2 = ((const short *) table)[lookup1 + index2];
+ if (lookup2 >= 0)
+ {
+ unsigned int index3 = (uc >> 5) & header_4;
+ unsigned int lookup3 = ((const int *) table)[lookup2 + index3];
+
+ return (lookup3 >> (uc & 0x1f)) & 1;
+ }
+ }
+ }
+ return 0;
+}
diff --git a/lib/unictype/block_test.c b/lib/unictype/block_test.c
new file mode 100644
index 00000000..4005ad04
--- /dev/null
+++ b/lib/unictype/block_test.c
@@ -0,0 +1,31 @@
+/* Blocks of Unicode characters.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+bool
+uc_is_block (ucs4_t uc, const uc_block_t *block)
+{
+ if (block != NULL)
+ return ((ucs4_t) (uc - block->start) <= block->end - block->start);
+ else
+ return false;
+}
+
diff --git a/lib/unictype/blocks.c b/lib/unictype/blocks.c
new file mode 100644
index 00000000..a20bbcee
--- /dev/null
+++ b/lib/unictype/blocks.c
@@ -0,0 +1,62 @@
+/* Blocks of Unicode characters.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "blocks.h"
+
+const uc_block_t *
+uc_block (ucs4_t uc)
+{
+ unsigned int first_index;
+ unsigned int last_index;
+
+ if (uc < blocks_level1_threshold)
+ {
+ unsigned int index1 = uc >> blocks_level1_shift;
+ first_index = blocks_level1[2 * index1];
+ last_index = blocks_level1[2 * index1 + 1];
+ }
+ else
+ {
+ first_index = blocks_upper_first_index;
+ last_index = blocks_upper_last_index;
+ }
+ /* We know that the relevant blocks are blocks[i] with
+ first_index <= i < last_index. Now perform a binary search. */
+ while (first_index < last_index)
+ {
+ unsigned int mid_index = (first_index + last_index) / 2;
+ if (blocks[mid_index].end < uc)
+ first_index = mid_index + 1;
+ else if (uc < blocks[mid_index].start)
+ last_index = mid_index;
+ else
+ return &blocks[mid_index];
+ }
+ return NULL;
+}
+
+void
+uc_all_blocks (const uc_block_t **blocksp, size_t *countp)
+{
+ *blocksp = blocks;
+ *countp = sizeof (blocks) / sizeof (blocks[0]);
+}
diff --git a/lib/unictype/blocks.h b/lib/unictype/blocks.h
new file mode 100644
index 00000000..2585b58c
--- /dev/null
+++ b/lib/unictype/blocks.h
@@ -0,0 +1,952 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Unicode blocks. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+static const uc_block_t blocks[] =
+{
+ { 0x0000, 0x007F, "Basic Latin" },
+ { 0x0080, 0x00FF, "Latin-1 Supplement" },
+ { 0x0100, 0x017F, "Latin Extended-A" },
+ { 0x0180, 0x024F, "Latin Extended-B" },
+ { 0x0250, 0x02AF, "IPA Extensions" },
+ { 0x02B0, 0x02FF, "Spacing Modifier Letters" },
+ { 0x0300, 0x036F, "Combining Diacritical Marks" },
+ { 0x0370, 0x03FF, "Greek and Coptic" },
+ { 0x0400, 0x04FF, "Cyrillic" },
+ { 0x0500, 0x052F, "Cyrillic Supplement" },
+ { 0x0530, 0x058F, "Armenian" },
+ { 0x0590, 0x05FF, "Hebrew" },
+ { 0x0600, 0x06FF, "Arabic" },
+ { 0x0700, 0x074F, "Syriac" },
+ { 0x0750, 0x077F, "Arabic Supplement" },
+ { 0x0780, 0x07BF, "Thaana" },
+ { 0x07C0, 0x07FF, "NKo" },
+ { 0x0900, 0x097F, "Devanagari" },
+ { 0x0980, 0x09FF, "Bengali" },
+ { 0x0A00, 0x0A7F, "Gurmukhi" },
+ { 0x0A80, 0x0AFF, "Gujarati" },
+ { 0x0B00, 0x0B7F, "Oriya" },
+ { 0x0B80, 0x0BFF, "Tamil" },
+ { 0x0C00, 0x0C7F, "Telugu" },
+ { 0x0C80, 0x0CFF, "Kannada" },
+ { 0x0D00, 0x0D7F, "Malayalam" },
+ { 0x0D80, 0x0DFF, "Sinhala" },
+ { 0x0E00, 0x0E7F, "Thai" },
+ { 0x0E80, 0x0EFF, "Lao" },
+ { 0x0F00, 0x0FFF, "Tibetan" },
+ { 0x1000, 0x109F, "Myanmar" },
+ { 0x10A0, 0x10FF, "Georgian" },
+ { 0x1100, 0x11FF, "Hangul Jamo" },
+ { 0x1200, 0x137F, "Ethiopic" },
+ { 0x1380, 0x139F, "Ethiopic Supplement" },
+ { 0x13A0, 0x13FF, "Cherokee" },
+ { 0x1400, 0x167F, "Unified Canadian Aboriginal Syllabics" },
+ { 0x1680, 0x169F, "Ogham" },
+ { 0x16A0, 0x16FF, "Runic" },
+ { 0x1700, 0x171F, "Tagalog" },
+ { 0x1720, 0x173F, "Hanunoo" },
+ { 0x1740, 0x175F, "Buhid" },
+ { 0x1760, 0x177F, "Tagbanwa" },
+ { 0x1780, 0x17FF, "Khmer" },
+ { 0x1800, 0x18AF, "Mongolian" },
+ { 0x1900, 0x194F, "Limbu" },
+ { 0x1950, 0x197F, "Tai Le" },
+ { 0x1980, 0x19DF, "New Tai Lue" },
+ { 0x19E0, 0x19FF, "Khmer Symbols" },
+ { 0x1A00, 0x1A1F, "Buginese" },
+ { 0x1B00, 0x1B7F, "Balinese" },
+ { 0x1B80, 0x1BBF, "Sundanese" },
+ { 0x1C00, 0x1C4F, "Lepcha" },
+ { 0x1C50, 0x1C7F, "Ol Chiki" },
+ { 0x1D00, 0x1D7F, "Phonetic Extensions" },
+ { 0x1D80, 0x1DBF, "Phonetic Extensions Supplement" },
+ { 0x1DC0, 0x1DFF, "Combining Diacritical Marks Supplement" },
+ { 0x1E00, 0x1EFF, "Latin Extended Additional" },
+ { 0x1F00, 0x1FFF, "Greek Extended" },
+ { 0x2000, 0x206F, "General Punctuation" },
+ { 0x2070, 0x209F, "Superscripts and Subscripts" },
+ { 0x20A0, 0x20CF, "Currency Symbols" },
+ { 0x20D0, 0x20FF, "Combining Diacritical Marks for Symbols" },
+ { 0x2100, 0x214F, "Letterlike Symbols" },
+ { 0x2150, 0x218F, "Number Forms" },
+ { 0x2190, 0x21FF, "Arrows" },
+ { 0x2200, 0x22FF, "Mathematical Operators" },
+ { 0x2300, 0x23FF, "Miscellaneous Technical" },
+ { 0x2400, 0x243F, "Control Pictures" },
+ { 0x2440, 0x245F, "Optical Character Recognition" },
+ { 0x2460, 0x24FF, "Enclosed Alphanumerics" },
+ { 0x2500, 0x257F, "Box Drawing" },
+ { 0x2580, 0x259F, "Block Elements" },
+ { 0x25A0, 0x25FF, "Geometric Shapes" },
+ { 0x2600, 0x26FF, "Miscellaneous Symbols" },
+ { 0x2700, 0x27BF, "Dingbats" },
+ { 0x27C0, 0x27EF, "Miscellaneous Mathematical Symbols-A" },
+ { 0x27F0, 0x27FF, "Supplemental Arrows-A" },
+ { 0x2800, 0x28FF, "Braille Patterns" },
+ { 0x2900, 0x297F, "Supplemental Arrows-B" },
+ { 0x2980, 0x29FF, "Miscellaneous Mathematical Symbols-B" },
+ { 0x2A00, 0x2AFF, "Supplemental Mathematical Operators" },
+ { 0x2B00, 0x2BFF, "Miscellaneous Symbols and Arrows" },
+ { 0x2C00, 0x2C5F, "Glagolitic" },
+ { 0x2C60, 0x2C7F, "Latin Extended-C" },
+ { 0x2C80, 0x2CFF, "Coptic" },
+ { 0x2D00, 0x2D2F, "Georgian Supplement" },
+ { 0x2D30, 0x2D7F, "Tifinagh" },
+ { 0x2D80, 0x2DDF, "Ethiopic Extended" },
+ { 0x2DE0, 0x2DFF, "Cyrillic Extended-A" },
+ { 0x2E00, 0x2E7F, "Supplemental Punctuation" },
+ { 0x2E80, 0x2EFF, "CJK Radicals Supplement" },
+ { 0x2F00, 0x2FDF, "Kangxi Radicals" },
+ { 0x2FF0, 0x2FFF, "Ideographic Description Characters" },
+ { 0x3000, 0x303F, "CJK Symbols and Punctuation" },
+ { 0x3040, 0x309F, "Hiragana" },
+ { 0x30A0, 0x30FF, "Katakana" },
+ { 0x3100, 0x312F, "Bopomofo" },
+ { 0x3130, 0x318F, "Hangul Compatibility Jamo" },
+ { 0x3190, 0x319F, "Kanbun" },
+ { 0x31A0, 0x31BF, "Bopomofo Extended" },
+ { 0x31C0, 0x31EF, "CJK Strokes" },
+ { 0x31F0, 0x31FF, "Katakana Phonetic Extensions" },
+ { 0x3200, 0x32FF, "Enclosed CJK Letters and Months" },
+ { 0x3300, 0x33FF, "CJK Compatibility" },
+ { 0x3400, 0x4DBF, "CJK Unified Ideographs Extension A" },
+ { 0x4DC0, 0x4DFF, "Yijing Hexagram Symbols" },
+ { 0x4E00, 0x9FFF, "CJK Unified Ideographs" },
+ { 0xA000, 0xA48F, "Yi Syllables" },
+ { 0xA490, 0xA4CF, "Yi Radicals" },
+ { 0xA500, 0xA63F, "Vai" },
+ { 0xA640, 0xA69F, "Cyrillic Extended-B" },
+ { 0xA700, 0xA71F, "Modifier Tone Letters" },
+ { 0xA720, 0xA7FF, "Latin Extended-D" },
+ { 0xA800, 0xA82F, "Syloti Nagri" },
+ { 0xA840, 0xA87F, "Phags-pa" },
+ { 0xA880, 0xA8DF, "Saurashtra" },
+ { 0xA900, 0xA92F, "Kayah Li" },
+ { 0xA930, 0xA95F, "Rejang" },
+ { 0xAA00, 0xAA5F, "Cham" },
+ { 0xAC00, 0xD7AF, "Hangul Syllables" },
+ { 0xD800, 0xDB7F, "High Surrogates" },
+ { 0xDB80, 0xDBFF, "High Private Use Surrogates" },
+ { 0xDC00, 0xDFFF, "Low Surrogates" },
+ { 0xE000, 0xF8FF, "Private Use Area" },
+ { 0xF900, 0xFAFF, "CJK Compatibility Ideographs" },
+ { 0xFB00, 0xFB4F, "Alphabetic Presentation Forms" },
+ { 0xFB50, 0xFDFF, "Arabic Presentation Forms-A" },
+ { 0xFE00, 0xFE0F, "Variation Selectors" },
+ { 0xFE10, 0xFE1F, "Vertical Forms" },
+ { 0xFE20, 0xFE2F, "Combining Half Marks" },
+ { 0xFE30, 0xFE4F, "CJK Compatibility Forms" },
+ { 0xFE50, 0xFE6F, "Small Form Variants" },
+ { 0xFE70, 0xFEFF, "Arabic Presentation Forms-B" },
+ { 0xFF00, 0xFFEF, "Halfwidth and Fullwidth Forms" },
+ { 0xFFF0, 0xFFFF, "Specials" },
+ { 0x10000, 0x1007F, "Linear B Syllabary" },
+ { 0x10080, 0x100FF, "Linear B Ideograms" },
+ { 0x10100, 0x1013F, "Aegean Numbers" },
+ { 0x10140, 0x1018F, "Ancient Greek Numbers" },
+ { 0x10190, 0x101CF, "Ancient Symbols" },
+ { 0x101D0, 0x101FF, "Phaistos Disc" },
+ { 0x10280, 0x1029F, "Lycian" },
+ { 0x102A0, 0x102DF, "Carian" },
+ { 0x10300, 0x1032F, "Old Italic" },
+ { 0x10330, 0x1034F, "Gothic" },
+ { 0x10380, 0x1039F, "Ugaritic" },
+ { 0x103A0, 0x103DF, "Old Persian" },
+ { 0x10400, 0x1044F, "Deseret" },
+ { 0x10450, 0x1047F, "Shavian" },
+ { 0x10480, 0x104AF, "Osmanya" },
+ { 0x10800, 0x1083F, "Cypriot Syllabary" },
+ { 0x10900, 0x1091F, "Phoenician" },
+ { 0x10920, 0x1093F, "Lydian" },
+ { 0x10A00, 0x10A5F, "Kharoshthi" },
+ { 0x12000, 0x123FF, "Cuneiform" },
+ { 0x12400, 0x1247F, "Cuneiform Numbers and Punctuation" },
+ { 0x1D000, 0x1D0FF, "Byzantine Musical Symbols" },
+ { 0x1D100, 0x1D1FF, "Musical Symbols" },
+ { 0x1D200, 0x1D24F, "Ancient Greek Musical Notation" },
+ { 0x1D300, 0x1D35F, "Tai Xuan Jing Symbols" },
+ { 0x1D360, 0x1D37F, "Counting Rod Numerals" },
+ { 0x1D400, 0x1D7FF, "Mathematical Alphanumeric Symbols" },
+ { 0x1F000, 0x1F02F, "Mahjong Tiles" },
+ { 0x1F030, 0x1F09F, "Domino Tiles" },
+ { 0x20000, 0x2A6DF, "CJK Unified Ideographs Extension B" },
+ { 0x2F800, 0x2FA1F, "CJK Compatibility Ideographs Supplement" },
+ { 0xE0000, 0xE007F, "Tags" },
+ { 0xE0100, 0xE01EF, "Variation Selectors Supplement" },
+ { 0xF0000, 0xFFFFF, "Supplementary Private Use Area-A" },
+ { 0x100000, 0x10FFFF, "Supplementary Private Use Area-B" }
+};
+#define blocks_level1_shift 8
+#define blocks_level1_threshold 0x30000
+static const uint8_t blocks_level1[768 * 2] =
+{
+ 0, 2,
+ 2, 4,
+ 3, 6,
+ 6, 8,
+ 8, 9,
+ 9, 12,
+ 12, 13,
+ 13, 17,
+ 17, 17,
+ 17, 19,
+ 19, 21,
+ 21, 23,
+ 23, 25,
+ 25, 27,
+ 27, 29,
+ 29, 30,
+ 30, 32,
+ 32, 33,
+ 33, 34,
+ 33, 36,
+ 36, 37,
+ 36, 37,
+ 36, 39,
+ 39, 44,
+ 44, 45,
+ 45, 49,
+ 49, 50,
+ 50, 52,
+ 52, 54,
+ 54, 57,
+ 57, 58,
+ 58, 59,
+ 59, 63,
+ 63, 66,
+ 66, 67,
+ 67, 68,
+ 68, 71,
+ 71, 74,
+ 74, 75,
+ 75, 78,
+ 78, 79,
+ 79, 81,
+ 81, 82,
+ 82, 83,
+ 83, 86,
+ 86, 90,
+ 90, 92,
+ 92, 94,
+ 94, 97,
+ 97, 103,
+ 103, 104,
+ 104, 105,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 106,
+ 105, 107,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 107, 108,
+ 108, 109,
+ 108, 109,
+ 108, 109,
+ 108, 109,
+ 108, 110,
+ 110, 111,
+ 110, 112,
+ 112, 114,
+ 114, 117,
+ 117, 119,
+ 119, 120,
+ 120, 120,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 120, 121,
+ 121, 122,
+ 121, 122,
+ 121, 122,
+ 121, 123,
+ 123, 124,
+ 123, 124,
+ 123, 124,
+ 123, 124,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 124, 125,
+ 125, 126,
+ 125, 126,
+ 126, 128,
+ 127, 128,
+ 127, 128,
+ 128, 134,
+ 134, 136,
+ 136, 138,
+ 138, 142,
+ 142, 144,
+ 144, 148,
+ 148, 151,
+ 151, 151,
+ 151, 151,
+ 151, 151,
+ 151, 152,
+ 152, 154,
+ 154, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 155,
+ 155, 156,
+ 155, 156,
+ 155, 156,
+ 155, 156,
+ 156, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 157,
+ 157, 158,
+ 158, 159,
+ 159, 160,
+ 160, 162,
+ 162, 163,
+ 162, 163,
+ 162, 163,
+ 162, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 163,
+ 163, 165,
+ 165, 165,
+ 165, 165,
+ 165, 165,
+ 165, 165,
+ 165, 165,
+ 165, 165,
+ 165, 165,
+ 165, 165,
+ 165, 165,
+ 165, 165,
+ 165, 165,
+ 165, 165,
+ 165, 165,
+ 165, 165,
+ 165, 165,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 165, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 166,
+ 166, 167,
+ 166, 167,
+ 166, 167,
+ 167, 167,
+ 167, 167,
+ 167, 167,
+ 167, 167,
+ 167, 167
+};
+#define blocks_upper_first_index 167
+#define blocks_upper_last_index 171
diff --git a/lib/unictype/categ_C.c b/lib/unictype/categ_C.c
new file mode 100644
index 00000000..d14d8c09
--- /dev/null
+++ b/lib/unictype/categ_C.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_C table. */
+#include "categ_C.h"
+
+const uc_general_category_t UC_CATEGORY_C =
+ { UC_CATEGORY_MASK_C, 0, { &u_categ_C } };
diff --git a/lib/unictype/categ_C.h b/lib/unictype/categ_C.h
new file mode 100644
index 00000000..0209db2e
--- /dev/null
+++ b/lib/unictype/categ_C.h
@@ -0,0 +1,890 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[17];
+ short level2[5 << 7];
+ /*unsigned*/ int level3[52 << 4];
+ }
+u_categ_C =
+{
+ { 17 },
+ {
+ 18 * sizeof (int) / sizeof (short) + 0,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 512,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384
+ },
+ {
+ 18 + 640 * sizeof (short) / sizeof (int) + 0,
+ 18 + 640 * sizeof (short) / sizeof (int) + 16,
+ 18 + 640 * sizeof (short) / sizeof (int) + 32,
+ 18 + 640 * sizeof (short) / sizeof (int) + 48,
+ 18 + 640 * sizeof (short) / sizeof (int) + 64,
+ 18 + 640 * sizeof (short) / sizeof (int) + 80,
+ 18 + 640 * sizeof (short) / sizeof (int) + 96,
+ 18 + 640 * sizeof (short) / sizeof (int) + 112,
+ 18 + 640 * sizeof (short) / sizeof (int) + 128,
+ 18 + 640 * sizeof (short) / sizeof (int) + 144,
+ 18 + 640 * sizeof (short) / sizeof (int) + 160,
+ 18 + 640 * sizeof (short) / sizeof (int) + 176,
+ 18 + 640 * sizeof (short) / sizeof (int) + 192,
+ 18 + 640 * sizeof (short) / sizeof (int) + 208,
+ 18 + 640 * sizeof (short) / sizeof (int) + 224,
+ 18 + 640 * sizeof (short) / sizeof (int) + 240,
+ 18 + 640 * sizeof (short) / sizeof (int) + 256,
+ 18 + 640 * sizeof (short) / sizeof (int) + 272,
+ 18 + 640 * sizeof (short) / sizeof (int) + 288,
+ 18 + 640 * sizeof (short) / sizeof (int) + 304,
+ -1,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 336,
+ 18 + 640 * sizeof (short) / sizeof (int) + 352,
+ 18 + 640 * sizeof (short) / sizeof (int) + 368,
+ 18 + 640 * sizeof (short) / sizeof (int) + 384,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 640 * sizeof (short) / sizeof (int) + 400,
+ -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,
+ 18 + 640 * sizeof (short) / sizeof (int) + 416,
+ -1,
+ -1,
+ 18 + 640 * sizeof (short) / sizeof (int) + 432,
+ 18 + 640 * sizeof (short) / sizeof (int) + 448,
+ 18 + 640 * sizeof (short) / sizeof (int) + 464,
+ 18 + 640 * sizeof (short) / sizeof (int) + 480,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 640 * sizeof (short) / sizeof (int) + 496,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 528,
+ 18 + 640 * sizeof (short) / sizeof (int) + 544,
+ 18 + 640 * sizeof (short) / sizeof (int) + 560,
+ 18 + 640 * sizeof (short) / sizeof (int) + 576,
+ 18 + 640 * sizeof (short) / sizeof (int) + 592,
+ 18 + 640 * sizeof (short) / sizeof (int) + 608,
+ 18 + 640 * sizeof (short) / sizeof (int) + 624,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 640,
+ 18 + 640 * sizeof (short) / sizeof (int) + 656,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ -1,
+ 18 + 640 * sizeof (short) / sizeof (int) + 672,
+ 18 + 640 * sizeof (short) / sizeof (int) + 688,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 704,
+ 18 + 640 * sizeof (short) / sizeof (int) + 720,
+ 18 + 640 * sizeof (short) / sizeof (int) + 736,
+ 18 + 640 * sizeof (short) / sizeof (int) + 752,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 768,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ -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,
+ 18 + 640 * sizeof (short) / sizeof (int) + 784,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ -1,
+ 18 + 640 * sizeof (short) / sizeof (int) + 800,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 816,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512
+ },
+ {
+ 0xFFFFFFFF, 0x00000000, 0x00000000, 0x80000000,
+ 0xFFFFFFFF, 0x00002000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x83000000,
+ 0x0000280F, 0x00000004, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x0001FFF0, 0x01800000, 0x00000001,
+ 0x0001F900, 0x00000000, 0x0000FF00, 0xFFE0F800,
+ 0x3000003F, 0x00000001, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x20000000, 0x00000000,
+ 0x0000C000, 0x00000000, 0x00001800, 0x00000000,
+ 0x00000000, 0xFFFC0000, 0x00000000, 0xF8000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000001, 0x0C000000, 0x00E0C000, 0x07F80000,
+ 0x00066011, 0x0C3A0200, 0x4F7F8660, 0xF8000030,
+ 0x00067811, 0x2C920200, 0xA1FDC678, 0xFFC0003F,
+ 0x00044011, 0x0C120200, 0xFFFEC440, 0xFFFD0030,
+ 0x00066011, 0x0C120200, 0x4F3FC660, 0xFFFC0030,
+ 0x29C23813, 0x3C0038E7, 0xFF7EC238, 0xF800003F,
+ 0x00022011, 0x1C100200, 0xFC9FC220, 0x00FF0030,
+ 0x00022013, 0x0C100200, 0xBF9FC220, 0xFFF90030,
+ 0x00022013, 0x1C000200, 0xFF7FC220, 0x01C00030,
+ 0x03800013, 0xD0040000, 0x00A07B80, 0xFFE3FFFF,
+ 0x00000001, 0x78000000, 0xF0000000, 0xFFFFFFFF,
+ 0x010FDA69, 0xC4001351, 0xCC00C0A0, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000100, 0x0001E000,
+ 0x0100F000, 0x20000000, 0xFFE02000, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3C000000, 0x00000000, 0x0000FFC0, 0xE0000000,
+ 0x00000000, 0x00000000, 0x7C000000, 0x00000000,
+ 0x00000000, 0x000000F8, 0x00000000, 0xFC000000,
+ 0x00000000, 0x00000000, 0xC280C200, 0x00000000,
+ 0x0000C200, 0x80C20000, 0x008000C2, 0x00000000,
+ 0x00C20000, 0x00000000, 0x78000000, 0xE0000000,
+ 0xFC000000, 0x00000000, 0x00000000, 0xFFE00000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFF800000,
+ 0xE0000000, 0x00000000, 0x00000000, 0xFFFE0000,
+ 0xFFE02000, 0xFF800000, 0xFFF00000, 0xFFF22000,
+ 0x00000000, 0x00300000, 0xC0000000, 0xFC00FC00,
+ 0xFC008000, 0x00000000, 0x00000000, 0xFF000000,
+ 0x00000000, 0xFFFFF800, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xE0000000, 0xF000F000, 0x0000000E, 0xFFE0C000,
+ 0x00000000, 0x0000FC00, 0x3C00FC00, 0x00000000,
+ 0x30000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x0000F000, 0xE0000000,
+ 0x00000000, 0xFC003800, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x07000000, 0x00001C00, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x3FFFFF80,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xC0C00000, 0x00000000, 0x5500C0C0, 0xC0000000,
+ 0x00000000, 0x00200000, 0x10300020, 0x80230000,
+ 0x0000F800, 0x00007C00, 0x00000000, 0x000CFFFF,
+ 0xFFE08000, 0xFFC00000, 0x0000FFFF, 0xFFFE0000,
+ 0x00000000, 0x00000000, 0x00070000, 0x00000000,
+ 0x0000FE00, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFFFF00,
+ 0x00000000, 0xFFFFFF80, 0xFFFFF800, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xC0000000, 0xE0000000, 0xFFFFFFF0, 0xFFFFFFFF,
+ 0x00000C21, 0x00000100, 0x80B85000, 0x00000001,
+ 0x00E00000, 0x80010000, 0x0000E800, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFE0E000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00008000, 0x80000000, 0xC0010000,
+ 0x00000000, 0x00000000, 0x00000000, 0x01FFF800,
+ 0x00000000, 0x0000FFC0, 0x00000000, 0xFFFF7FC0,
+ 0xFF800000, 0x80808080, 0x80808080, 0x00000000,
+ 0x00000000, 0xFFFE0000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x04000000, 0x00000000, 0x00000000, 0xFFF00000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFC00000, 0xF000FFFF,
+ 0x00000000, 0x00000000, 0x00000001, 0x00000000,
+ 0x01800000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000001F, 0x0001C000, 0x00000000, 0x00000000,
+ 0x00008000, 0xFF000000, 0x00000000, 0x0000FFF0,
+ 0x80000000, 0x00000000, 0x0000FFF0, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x80000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFC00000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFFFF0, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000E000, 0x00000000, 0xFFFFFF80, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFFF000, 0x00000000, 0x0FF00003,
+ 0xFF000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFE000, 0xFFFFFFFF, 0xFFFFFFFF, 0x07FFFFFF,
+ 0x00000000, 0xFFFFF000, 0x00000000, 0xFF000000,
+ 0x00000000, 0x00000000, 0xFC003FE0, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x7FF00000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0xFF800000, 0x0C00C000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFFFFF0, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x0000C000, 0x00000000, 0x0000F800,
+ 0x00000000, 0x00000000, 0xFC000000, 0xFFFFFFFF,
+ 0x1F07FF80, 0xA0800000, 0x00000024, 0x00000000,
+ 0x00000000, 0xFFFC0000, 0x0007FFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000FFFF, 0x00000000,
+ 0x00030000, 0x00000000, 0xFFFFFF00, 0xC000FFFF,
+ 0xFC000000, 0x0000FF80, 0x00080000, 0x0020F080,
+ 0x00000000, 0x00000000, 0x00000000, 0xE0000000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x80000000, 0xE3030303, 0xCFFF8080,
+ 0x00001000, 0x48000080, 0xC000C000, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0xF8000000,
+ 0x00000078, 0x00700000, 0x00000000, 0x00000000,
+ 0xF000F800, 0xFFFFFFFF, 0x0000FFFF, 0xC0000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xE0000000, 0x00000000, 0xFFFE0000, 0xFFFFFFFF,
+ 0x80000000, 0x0000FFF0, 0xFFFFF800, 0xFFFFFFFF,
+ 0x40000000, 0x00000000, 0xFFC000F0, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xC0000000, 0xFFFFFC00, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000002C0, 0x6E400000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x7C000000, 0x7C000000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x01100F90, 0x78F00000, 0xFE00FF00, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFF8000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFF0FFF8,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFC00000,
+ 0x00000000, 0x00000180, 0x00000000, 0x07F80000,
+ 0x00000000, 0x00000000, 0xC0000000, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0xFFFFFFC0, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0xFF800000, 0xFFFC0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00200000, 0x00000000,
+ 0x20000000, 0x1400219B, 0x00000010, 0x00000000,
+ 0x20201840, 0x84000000, 0x000203A0, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x000000C0, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00003000, 0x00000000,
+ 0x00000000, 0x0000F000, 0x00000000, 0x00000000,
+ 0xFFF00000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFF800000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xC0000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFF0000
+ }
+};
diff --git a/lib/unictype/categ_Cc.c b/lib/unictype/categ_Cc.c
new file mode 100644
index 00000000..572f88f7
--- /dev/null
+++ b/lib/unictype/categ_Cc.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Cc table. */
+#include "categ_Cc.h"
+
+const uc_general_category_t UC_CATEGORY_Cc =
+ { UC_CATEGORY_MASK_Cc, 0, { &u_categ_Cc } };
diff --git a/lib/unictype/categ_Cc.h b/lib/unictype/categ_Cc.h
new file mode 100644
index 00000000..17104cdd
--- /dev/null
+++ b/lib/unictype/categ_Cc.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_categ_Cc =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0xFFFFFFFF, 0x00000000, 0x00000000, 0x80000000,
+ 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Cf.c b/lib/unictype/categ_Cf.c
new file mode 100644
index 00000000..19cd842e
--- /dev/null
+++ b/lib/unictype/categ_Cf.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Cf table. */
+#include "categ_Cf.h"
+
+const uc_general_category_t UC_CATEGORY_Cf =
+ { UC_CATEGORY_MASK_Cf, 0, { &u_categ_Cf } };
diff --git a/lib/unictype/categ_Cf.h b/lib/unictype/categ_Cf.h
new file mode 100644
index 00000000..5b67fb45
--- /dev/null
+++ b/lib/unictype/categ_Cf.h
@@ -0,0 +1,452 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[15];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[7 << 4];
+ }
+u_categ_Cf =
+{
+ { 15 },
+ {
+ 16 * sizeof (int) / sizeof (short) + 0,
+ 16 * sizeof (int) / sizeof (short) + 128,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ 16 + 384 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 48,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 64,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 96,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00002000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000000F, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x20000000, 0x00000000,
+ 0x00008000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00300000, 0x00000000, 0x00000000,
+ 0x0000F800, 0x00007C00, 0x00000000, 0x0000FC1F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x80000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0E000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x07F80000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000002, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Cn.c b/lib/unictype/categ_Cn.c
new file mode 100644
index 00000000..131704ab
--- /dev/null
+++ b/lib/unictype/categ_Cn.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Cn table. */
+#include "categ_Cn.h"
+
+const uc_general_category_t UC_CATEGORY_Cn =
+ { UC_CATEGORY_MASK_Cn, 0, { &u_categ_Cn } };
diff --git a/lib/unictype/categ_Cn.h b/lib/unictype/categ_Cn.h
new file mode 100644
index 00000000..d8288041
--- /dev/null
+++ b/lib/unictype/categ_Cn.h
@@ -0,0 +1,1014 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[17];
+ short level2[6 << 7];
+ /*unsigned*/ int level3[51 << 4];
+ }
+u_categ_Cn =
+{
+ { 17 },
+ {
+ 18 * sizeof (int) / sizeof (short) + 0,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 512,
+ 18 * sizeof (int) / sizeof (short) + 640,
+ 18 * sizeof (int) / sizeof (short) + 640
+ },
+ {
+ -1,
+ 18 + 768 * sizeof (short) / sizeof (int) + 0,
+ 18 + 768 * sizeof (short) / sizeof (int) + 16,
+ 18 + 768 * sizeof (short) / sizeof (int) + 32,
+ 18 + 768 * sizeof (short) / sizeof (int) + 48,
+ 18 + 768 * sizeof (short) / sizeof (int) + 64,
+ 18 + 768 * sizeof (short) / sizeof (int) + 80,
+ 18 + 768 * sizeof (short) / sizeof (int) + 96,
+ 18 + 768 * sizeof (short) / sizeof (int) + 112,
+ 18 + 768 * sizeof (short) / sizeof (int) + 128,
+ 18 + 768 * sizeof (short) / sizeof (int) + 144,
+ 18 + 768 * sizeof (short) / sizeof (int) + 160,
+ 18 + 768 * sizeof (short) / sizeof (int) + 176,
+ 18 + 768 * sizeof (short) / sizeof (int) + 192,
+ 18 + 768 * sizeof (short) / sizeof (int) + 208,
+ 18 + 768 * sizeof (short) / sizeof (int) + 224,
+ 18 + 768 * sizeof (short) / sizeof (int) + 240,
+ 18 + 768 * sizeof (short) / sizeof (int) + 256,
+ 18 + 768 * sizeof (short) / sizeof (int) + 272,
+ 18 + 768 * sizeof (short) / sizeof (int) + 288,
+ -1,
+ 18 + 768 * sizeof (short) / sizeof (int) + 304,
+ 18 + 768 * sizeof (short) / sizeof (int) + 320,
+ 18 + 768 * sizeof (short) / sizeof (int) + 336,
+ 18 + 768 * sizeof (short) / sizeof (int) + 352,
+ 18 + 768 * sizeof (short) / sizeof (int) + 368,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 768 * sizeof (short) / sizeof (int) + 384,
+ -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,
+ 18 + 768 * sizeof (short) / sizeof (int) + 400,
+ -1,
+ -1,
+ 18 + 768 * sizeof (short) / sizeof (int) + 416,
+ 18 + 768 * sizeof (short) / sizeof (int) + 432,
+ 18 + 768 * sizeof (short) / sizeof (int) + 448,
+ 18 + 768 * sizeof (short) / sizeof (int) + 464,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 768 * sizeof (short) / sizeof (int) + 480,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 768 * sizeof (short) / sizeof (int) + 496,
+ 18 + 768 * sizeof (short) / sizeof (int) + 512,
+ 18 + 768 * sizeof (short) / sizeof (int) + 528,
+ 18 + 768 * sizeof (short) / sizeof (int) + 544,
+ 18 + 768 * sizeof (short) / sizeof (int) + 560,
+ 18 + 768 * sizeof (short) / sizeof (int) + 576,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 608,
+ 18 + 768 * sizeof (short) / sizeof (int) + 624,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ -1,
+ 18 + 768 * sizeof (short) / sizeof (int) + 640,
+ 18 + 768 * sizeof (short) / sizeof (int) + 656,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 672,
+ 18 + 768 * sizeof (short) / sizeof (int) + 688,
+ 18 + 768 * sizeof (short) / sizeof (int) + 704,
+ 18 + 768 * sizeof (short) / sizeof (int) + 720,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 736,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ -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,
+ 18 + 768 * sizeof (short) / sizeof (int) + 752,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ -1,
+ 18 + 768 * sizeof (short) / sizeof (int) + 768,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 784,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ 18 + 768 * sizeof (short) / sizeof (int) + 592,
+ -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,
+ 18 + 768 * sizeof (short) / sizeof (int) + 800
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x83000000,
+ 0x0000280F, 0x00000004, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x0001FFF0, 0x01800000, 0x00000001,
+ 0x0001F900, 0x00000000, 0x0000FF00, 0xFFE0F800,
+ 0x30000030, 0x00000001, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00004000, 0x00000000, 0x00001800, 0x00000000,
+ 0x00000000, 0xFFFC0000, 0x00000000, 0xF8000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000001, 0x0C000000, 0x00E0C000, 0x07F80000,
+ 0x00066011, 0x0C3A0200, 0x4F7F8660, 0xF8000030,
+ 0x00067811, 0x2C920200, 0xA1FDC678, 0xFFC0003F,
+ 0x00044011, 0x0C120200, 0xFFFEC440, 0xFFFD0030,
+ 0x00066011, 0x0C120200, 0x4F3FC660, 0xFFFC0030,
+ 0x29C23813, 0x3C0038E7, 0xFF7EC238, 0xF800003F,
+ 0x00022011, 0x1C100200, 0xFC9FC220, 0x00FF0030,
+ 0x00022013, 0x0C100200, 0xBF9FC220, 0xFFF90030,
+ 0x00022013, 0x1C000200, 0xFF7FC220, 0x01C00030,
+ 0x03800013, 0xD0040000, 0x00A07B80, 0xFFE3FFFF,
+ 0x00000001, 0x78000000, 0xF0000000, 0xFFFFFFFF,
+ 0x010FDA69, 0xC4001351, 0xCC00C0A0, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000100, 0x0001E000,
+ 0x0100F000, 0x20000000, 0xFFE02000, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3C000000, 0x00000000, 0x0000FFC0, 0xE0000000,
+ 0x00000000, 0x00000000, 0x7C000000, 0x00000000,
+ 0x00000000, 0x000000F8, 0x00000000, 0xFC000000,
+ 0x00000000, 0x00000000, 0xC280C200, 0x00000000,
+ 0x0000C200, 0x80C20000, 0x008000C2, 0x00000000,
+ 0x00C20000, 0x00000000, 0x78000000, 0xE0000000,
+ 0xFC000000, 0x00000000, 0x00000000, 0xFFE00000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFF800000,
+ 0xE0000000, 0x00000000, 0x00000000, 0xFFFE0000,
+ 0xFFE02000, 0xFF800000, 0xFFF00000, 0xFFF22000,
+ 0x00000000, 0x00000000, 0xC0000000, 0xFC00FC00,
+ 0xFC008000, 0x00000000, 0x00000000, 0xFF000000,
+ 0x00000000, 0xFFFFF800, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xE0000000, 0xF000F000, 0x0000000E, 0xFFE0C000,
+ 0x00000000, 0x0000FC00, 0x3C00FC00, 0x00000000,
+ 0x30000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x0000F000, 0xE0000000,
+ 0x00000000, 0xFC003800, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x07000000, 0x00001C00, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x3FFFFF80,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xC0C00000, 0x00000000, 0x5500C0C0, 0xC0000000,
+ 0x00000000, 0x00200000, 0x10300020, 0x80230000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000C03E0,
+ 0xFFE08000, 0xFFC00000, 0x0000FFFF, 0xFFFE0000,
+ 0x00000000, 0x00000000, 0x00070000, 0x00000000,
+ 0x0000FE00, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFFFF00,
+ 0x00000000, 0xFFFFFF80, 0xFFFFF800, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xC0000000, 0xE0000000, 0xFFFFFFF0, 0xFFFFFFFF,
+ 0x00000C21, 0x00000100, 0x80B85000, 0x00000001,
+ 0x00E00000, 0x80010000, 0x0000E800, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFE0E000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00008000, 0x80000000, 0xC0010000,
+ 0x00000000, 0x00000000, 0x00000000, 0x01FFF800,
+ 0x00000000, 0x0000FFC0, 0x00000000, 0xFFFF7FC0,
+ 0xFF800000, 0x80808080, 0x80808080, 0x00000000,
+ 0x00000000, 0xFFFE0000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x04000000, 0x00000000, 0x00000000, 0xFFF00000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFC00000, 0xF000FFFF,
+ 0x00000000, 0x00000000, 0x00000001, 0x00000000,
+ 0x01800000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000001F, 0x0001C000, 0x00000000, 0x00000000,
+ 0x00008000, 0xFF000000, 0x00000000, 0x0000FFF0,
+ 0x80000000, 0x00000000, 0x0000FFF0, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x80000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFC00000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFFFF0, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000E000, 0x00000000, 0xFFFFFF80, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFFF000, 0x00000000, 0x0FF00003,
+ 0xFF000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFE000, 0xFFFFFFFF, 0xFFFFFFFF, 0x07FFFFFF,
+ 0x00000000, 0xFFFFF000, 0x00000000, 0xFF000000,
+ 0x00000000, 0x00000000, 0xFC003FE0, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x7FF00000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0xFF800000, 0x0C00C000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFFFFF0, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x0000C000, 0x00000000, 0x0000F800,
+ 0x00000000, 0x00000000, 0xFC000000, 0xFFFFFFFF,
+ 0x1F07FF80, 0xA0800000, 0x00000024, 0x00000000,
+ 0x00000000, 0xFFFC0000, 0x0007FFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000FFFF, 0x00000000,
+ 0x00030000, 0x00000000, 0xFFFFFF00, 0xC000FFFF,
+ 0xFC000000, 0x0000FF80, 0x00080000, 0x0020F080,
+ 0x00000000, 0x00000000, 0x00000000, 0x60000000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x80000000, 0xE3030303, 0xC1FF8080,
+ 0x00001000, 0x48000080, 0xC000C000, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0xF8000000,
+ 0x00000078, 0x00700000, 0x00000000, 0x00000000,
+ 0xF000F800, 0xFFFFFFFF, 0x0000FFFF, 0xC0000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xE0000000, 0x00000000, 0xFFFE0000, 0xFFFFFFFF,
+ 0x80000000, 0x0000FFF0, 0xFFFFF800, 0xFFFFFFFF,
+ 0x40000000, 0x00000000, 0xFFC000F0, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xC0000000, 0xFFFFFC00, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000002C0, 0x6E400000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x7C000000, 0x7C000000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x01100F90, 0x78F00000, 0xFE00FF00, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFF8000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFF0FFF8,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFC00000,
+ 0x00000000, 0x00000180, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xC0000000, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0xFFFFFFC0, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0xFF800000, 0xFFFC0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00200000, 0x00000000,
+ 0x20000000, 0x1400219B, 0x00000010, 0x00000000,
+ 0x20201840, 0x84000000, 0x000203A0, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x000000C0, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00003000, 0x00000000,
+ 0x00000000, 0x0000F000, 0x00000000, 0x00000000,
+ 0xFFF00000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFF800000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xC0000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFD, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFF0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xC0000000
+ }
+};
diff --git a/lib/unictype/categ_Co.c b/lib/unictype/categ_Co.c
new file mode 100644
index 00000000..70b5ac72
--- /dev/null
+++ b/lib/unictype/categ_Co.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Co table. */
+#include "categ_Co.h"
+
+const uc_general_category_t UC_CATEGORY_Co =
+ { UC_CATEGORY_MASK_Co, 0, { &u_categ_Co } };
diff --git a/lib/unictype/categ_Co.h b/lib/unictype/categ_Co.h
new file mode 100644
index 00000000..a5b8ce9b
--- /dev/null
+++ b/lib/unictype/categ_Co.h
@@ -0,0 +1,310 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[17];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[3 << 4];
+ }
+u_categ_Co =
+{
+ { 17 },
+ {
+ 18 * sizeof (int) / sizeof (short) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ -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,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 32
+ },
+ {
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF
+ }
+};
diff --git a/lib/unictype/categ_Cs.c b/lib/unictype/categ_Cs.c
new file mode 100644
index 00000000..a3f5ceab
--- /dev/null
+++ b/lib/unictype/categ_Cs.c
@@ -0,0 +1,30 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+static bool
+uc_is_category_Cs (ucs4_t uc)
+{
+ return (uc >= 0xd800 && uc < 0xe000);
+}
+
+const uc_general_category_t UC_CATEGORY_Cs =
+ { UC_CATEGORY_MASK_Cs, 1, { &uc_is_category_Cs } };
diff --git a/lib/unictype/categ_Cs.h b/lib/unictype/categ_Cs.h
new file mode 100644
index 00000000..99b37d15
--- /dev/null
+++ b/lib/unictype/categ_Cs.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_categ_Cs =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
+ }
+};
diff --git a/lib/unictype/categ_L.c b/lib/unictype/categ_L.c
new file mode 100644
index 00000000..b62b2a27
--- /dev/null
+++ b/lib/unictype/categ_L.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_L table. */
+#include "categ_L.h"
+
+const uc_general_category_t UC_CATEGORY_L =
+ { UC_CATEGORY_MASK_L, 0, { &u_categ_L } };
diff --git a/lib/unictype/categ_L.h b/lib/unictype/categ_L.h
new file mode 100644
index 00000000..558b5945
--- /dev/null
+++ b/lib/unictype/categ_L.h
@@ -0,0 +1,580 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[3];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[42 << 4];
+ }
+u_categ_L =
+{
+ { 3 },
+ {
+ 4 * sizeof (int) / sizeof (short) + 0,
+ 4 * sizeof (int) / sizeof (short) + 128,
+ 4 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ 4 + 384 * sizeof (short) / sizeof (int) + 0,
+ 4 + 384 * sizeof (short) / sizeof (int) + 16,
+ 4 + 384 * sizeof (short) / sizeof (int) + 32,
+ 4 + 384 * sizeof (short) / sizeof (int) + 48,
+ 4 + 384 * sizeof (short) / sizeof (int) + 64,
+ 4 + 384 * sizeof (short) / sizeof (int) + 80,
+ 4 + 384 * sizeof (short) / sizeof (int) + 96,
+ 4 + 384 * sizeof (short) / sizeof (int) + 112,
+ 4 + 384 * sizeof (short) / sizeof (int) + 128,
+ 4 + 384 * sizeof (short) / sizeof (int) + 144,
+ 4 + 384 * sizeof (short) / sizeof (int) + 160,
+ 4 + 384 * sizeof (short) / sizeof (int) + 176,
+ 4 + 384 * sizeof (short) / sizeof (int) + 192,
+ 4 + 384 * sizeof (short) / sizeof (int) + 208,
+ 4 + 384 * sizeof (short) / sizeof (int) + 224,
+ 4 + 384 * sizeof (short) / sizeof (int) + 240,
+ 4 + 384 * sizeof (short) / sizeof (int) + 256,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 272,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 352,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 368,
+ 4 + 384 * sizeof (short) / sizeof (int) + 384,
+ 4 + 384 * sizeof (short) / sizeof (int) + 400,
+ 4 + 384 * sizeof (short) / sizeof (int) + 416,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 432,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 448,
+ 4 + 384 * sizeof (short) / sizeof (int) + 464,
+ 4 + 384 * sizeof (short) / sizeof (int) + 480,
+ 4 + 384 * sizeof (short) / sizeof (int) + 496,
+ 4 + 384 * sizeof (short) / sizeof (int) + 512,
+ 4 + 384 * sizeof (short) / sizeof (int) + 528,
+ 4 + 384 * sizeof (short) / sizeof (int) + 544,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 560,
+ 4 + 384 * sizeof (short) / sizeof (int) + 576,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 592,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 608,
+ 4 + 384 * sizeof (short) / sizeof (int) + 624,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 640,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 656,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x07FFFFFE, 0x07FFFFFE,
+ 0x00000000, 0x04200400, 0xFF7FFFFF, 0xFF7FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0003FFC3, 0x0000501F,
+ 0x00000000, 0x00000000, 0x00000000, 0x3CDF0000,
+ 0xFFFFD740, 0xFFFFFFFB, 0xFFFFFFFF, 0xFFBFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFC03, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFE000F, 0x027FFFFF, 0xFFFFFFFE,
+ 0x000000FF, 0x00000000, 0xFFFF0000, 0x000707FF,
+ 0x00000000, 0xFFFFFFFE, 0x000007FF, 0xFFFEC000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x002FFFFF, 0x9C00C060,
+ 0xFFFD0000, 0x0000FFFF, 0xFFFFE000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0002003F, 0xFFFFFC00, 0x043007FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFF0, 0x23FFFFFF, 0xFF010000, 0xF8060003,
+ 0xFFF99FE0, 0x23C5FDFF, 0xB0004000, 0x00030003,
+ 0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000,
+ 0xFFFBBFE0, 0x23EDFDFF, 0x00010000, 0x00000003,
+ 0xFFF99FE0, 0x23EDFDFF, 0xB0000000, 0x00020003,
+ 0xD63DC7E8, 0x03FFC718, 0x00010000, 0x00000000,
+ 0xFFFDDFE0, 0x23EFFDFF, 0x03000000, 0x00000003,
+ 0xFFFDDFE0, 0x23EFFDFF, 0x40000000, 0x00000003,
+ 0xFFFDDFE0, 0x23FFFDFF, 0x00000000, 0xFC000003,
+ 0xFC7FFFE0, 0x2FFBFFFF, 0x0000007F, 0x00000000,
+ 0xFFFFFFFE, 0x000DFFFF, 0x0000007F, 0x00000000,
+ 0xFEF02596, 0x200DECAE, 0x3000005F, 0x00000000,
+ 0x00000001, 0x00000000, 0xFFFFFEFF, 0x00001FFF,
+ 0x00000F00, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x800007FF, 0x3C3F0000, 0xFFE1C062,
+ 0x00004003, 0xFFFFFFFF, 0xFFFF003F, 0x17FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x83FFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF07, 0xFFFFFFFF, 0x03FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3D7F3DFF, 0xFFFFFFFF,
+ 0xFFFF3DFF, 0x7F3DFFFF, 0xFF7FFF3D, 0xFFFFFFFF,
+ 0xFF3DFFFF, 0xFFFFFFFF, 0x07FFFFFF, 0x00000000,
+ 0x0000FFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x001FFFFF,
+ 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x007F9FFF,
+ 0x07FFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0x000007FF,
+ 0x0003DFFF, 0x0003FFFF, 0x0003FFFF, 0x0001DFFF,
+ 0xFFFFFFFF, 0x000FFFFF, 0x10800000, 0x00000000,
+ 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0x00FFFFFF,
+ 0xFFFFFFFF, 0x000005FF, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0x00000000, 0xFFFF0000, 0x001F3FFF,
+ 0xFFFFFFFF, 0x000003FF, 0x000000FE, 0x00000000,
+ 0x007FFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFE0, 0x000FFFFF, 0x00000FE0, 0x00000000,
+ 0xFFFFFFF8, 0x0000C001, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x0000000F, 0xFC00E000, 0x3FFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
+ 0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x80020000,
+ 0x001F0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3E2FFC84, 0xF3FFBD50, 0x000043E0, 0x00000000,
+ 0x00000018, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF7FFF, 0x7FFFFFFF, 0x3FFEFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000001F,
+ 0xFFFFFFFF, 0xFFFF003F, 0xFFFFFFFF, 0x0000803F,
+ 0x007FFFFF, 0x7F7F7F7F, 0x7F7F7F7F, 0x00000000,
+ 0x00000000, 0x00008000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000060, 0x183E0000, 0xFFFFFFFE, 0xFFFFFFFF,
+ 0xE07FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0xF7FFFFFF,
+ 0xFFFFFFE0, 0xFFFE3FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00007FFF, 0x00FFFFFF, 0x00000000, 0xFFFF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x003FFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00001FFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFF1FFF, 0x00000C00, 0xFFFFFFFF, 0x80007FFC,
+ 0x00FFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF800000, 0xFFFFFFFC, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000019FF, 0x00000000, 0x00000000, 0xF8000000,
+ 0xFFFFF7BB, 0x00000007, 0xFFFFFFFF, 0x000FFFFF,
+ 0xFFFFFFFC, 0x000FFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFC00, 0xFFFF003F, 0x0000007F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x000001FF, 0x00000FF7, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFF3FFF, 0xFFFFFFFF, 0xFFFF07FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, 0x00000000,
+ 0xA0F8007F, 0x5F7FFDFF, 0xFFFFFFDB, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0003FFFF, 0xFFF80000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x3FFFFFFF, 0xFFFF0000, 0xFFFFFFFF,
+ 0xFFFCFFFF, 0xFFFFFFFF, 0x000000FF, 0x0FFF0000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFDF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x1FFFFFFF,
+ 0x00000000, 0x07FFFFFE, 0x07FFFFFE, 0xFFFFFFC0,
+ 0xFFFFFFFF, 0x7FFFFFFF, 0x1CFCFCFC, 0x00000000,
+ 0xFFFFEFFF, 0xB7FFFF7F, 0x3FFF3FFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x07FFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0xFFFFFFFF, 0x0001FFFF, 0x00000000,
+ 0x7FFFFFFF, 0xFFFF0000, 0x000003FD, 0x00000000,
+ 0x3FFFFFFF, 0xFFFFFFFF, 0x0000FF0F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFD3F, 0x91BFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x003FFFFF, 0x03FFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFEEF0001, 0x000FFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00007FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFDFFFFF, 0xFFFFFFFF,
+ 0xDFFFFFFF, 0xEBFFDE64, 0xFFFFFFEF, 0xFFFFFFFF,
+ 0xDFDFE7BF, 0x7BFFFFFF, 0xFFFDFC5F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF3F, 0xF7FFFFFD, 0xF7FFFFFF,
+ 0xFFDFFFFF, 0xFFDFFFFF, 0xFFFF7FFF, 0xFFFF7FFF,
+ 0xFFFFFDFF, 0xFFFFFDFF, 0x00000FF7, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Ll.c b/lib/unictype/categ_Ll.c
new file mode 100644
index 00000000..37da1a08
--- /dev/null
+++ b/lib/unictype/categ_Ll.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Ll table. */
+#include "categ_Ll.h"
+
+const uc_general_category_t UC_CATEGORY_Ll =
+ { UC_CATEGORY_MASK_Ll, 0, { &u_categ_Ll } };
diff --git a/lib/unictype/categ_Ll.h b/lib/unictype/categ_Ll.h
new file mode 100644
index 00000000..dd8194b0
--- /dev/null
+++ b/lib/unictype/categ_Ll.h
@@ -0,0 +1,335 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[13 << 4];
+ }
+u_categ_Ll =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x07FFFFFE,
+ 0x00000000, 0x04200400, 0x80000000, 0xFF7FFFFF,
+ 0xAAAAAAAA, 0x55AAAAAA, 0xAAAAAB55, 0xD4AAAAAA,
+ 0x4E243129, 0xE6512D2A, 0xB5555240, 0xAA29AAAA,
+ 0xAAAAAAAA, 0x93FAAAAA, 0xFFFFAA85, 0xFFFFFFFF,
+ 0xFFEFFFFF, 0x0000FFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x388A0000,
+ 0x00010000, 0xFFFFF000, 0xAAE37FFF, 0x192FAAAA,
+ 0x00000000, 0xFFFF0000, 0xFFFFFFFF, 0xAAAAAAAA,
+ 0xAAAAA802, 0xAAAAAAAA, 0xAAAAD554, 0xAAAAAAAA,
+ 0xAAAAAAAA, 0x0000000A, 0x00000000, 0xFFFFFFFE,
+ 0x000000FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x00000FFF, 0x00000000, 0xFEFFFFFC,
+ 0x07FFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA,
+ 0xBFEAAAAA, 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA,
+ 0x003F00FF, 0x00FF00FF, 0x00FF003F, 0x3FFF00FF,
+ 0x00FF00FF, 0x40DF00FF, 0x00CF00DC, 0x00DC00FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x80020000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0008C400, 0x32108000, 0x000043C0, 0x00000000,
+ 0x00000010, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFF0000, 0x7FFFFFFF, 0x1FDA1562,
+ 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA, 0x0000001A,
+ 0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xAAAAAAAA, 0x00002AA8,
+ 0x00AAAAAA, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xAAABAAA8, 0xAAAAAAAA, 0x95FEAAAA,
+ 0x000010AA, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00F8007F, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x07FFFFFE, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFFFF00, 0x0000FFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFC000000, 0x000FFFFF, 0xFFDFC000, 0x000000FF,
+ 0x0FFFFFFC, 0xEBC00000, 0x0000FFEF, 0xFFFFFC00,
+ 0xC000000F, 0x00FFFFFF, 0xFFFC0000, 0x00000FFF,
+ 0xFFFFFFC0, 0xFC000000, 0x000FFFFF, 0xFFFFC000,
+ 0x000000FF, 0x0FFFFFFC, 0xFFC00000, 0x0000FFFF,
+ 0xFFFFFC00, 0x0000003F, 0xF7FFFFFC, 0xF0000003,
+ 0x0FDFFFFF, 0xFFC00000, 0x003F7FFF, 0xFFFF0000,
+ 0x0000FDFF, 0xFFFFFC00, 0x00000BF7, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Lm.c b/lib/unictype/categ_Lm.c
new file mode 100644
index 00000000..296e53db
--- /dev/null
+++ b/lib/unictype/categ_Lm.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Lm table. */
+#include "categ_Lm.h"
+
+const uc_general_category_t UC_CATEGORY_Lm =
+ { UC_CATEGORY_MASK_Lm, 0, { &u_categ_Lm } };
diff --git a/lib/unictype/categ_Lm.h b/lib/unictype/categ_Lm.h
new file mode 100644
index 00000000..a781af61
--- /dev/null
+++ b/lib/unictype/categ_Lm.h
@@ -0,0 +1,216 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[16 << 4];
+ }
+u_categ_Lm =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ 2 + 128 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 96,
+ 2 + 128 * sizeof (short) / sizeof (int) + 112,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 144,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 160,
+ 2 + 128 * sizeof (short) / sizeof (int) + 176,
+ 2 + 128 * sizeof (short) / sizeof (int) + 192,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 208,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 224,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 240
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFF0000, 0x0003FFC3, 0x0000501F,
+ 0x00000000, 0x00000000, 0x00000000, 0x04100000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x02000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000001, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000060,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x04300000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00020000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000040, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000040, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x10000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00800000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000008, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x3F000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFFF000, 0xFFFFFFFF, 0x01000003,
+ 0xF8000000, 0xFFFFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x001F0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x20000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00008000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00008000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000020, 0x083E0000, 0x00000000, 0x00000000,
+ 0x60000000, 0x00000000, 0x00000000, 0x70000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00001000, 0x00000000, 0x00000000, 0x80000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF800000, 0x00000000, 0x00000000, 0x00010000,
+ 0x00000100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00010000,
+ 0xC0000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Lo.c b/lib/unictype/categ_Lo.c
new file mode 100644
index 00000000..5c7781e1
--- /dev/null
+++ b/lib/unictype/categ_Lo.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Lo table. */
+#include "categ_Lo.h"
+
+const uc_general_category_t UC_CATEGORY_Lo =
+ { UC_CATEGORY_MASK_Lo, 0, { &u_categ_Lo } };
diff --git a/lib/unictype/categ_Lo.h b/lib/unictype/categ_Lo.h
new file mode 100644
index 00000000..75bec147
--- /dev/null
+++ b/lib/unictype/categ_Lo.h
@@ -0,0 +1,568 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[3];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[39 << 4];
+ }
+u_categ_Lo =
+{
+ { 3 },
+ {
+ 4 * sizeof (int) / sizeof (short) + 0,
+ 4 * sizeof (int) / sizeof (short) + 128,
+ 4 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ 4 + 384 * sizeof (short) / sizeof (int) + 0,
+ 4 + 384 * sizeof (short) / sizeof (int) + 16,
+ 4 + 384 * sizeof (short) / sizeof (int) + 32,
+ 4 + 384 * sizeof (short) / sizeof (int) + 48,
+ 4 + 384 * sizeof (short) / sizeof (int) + 64,
+ 4 + 384 * sizeof (short) / sizeof (int) + 80,
+ 4 + 384 * sizeof (short) / sizeof (int) + 96,
+ 4 + 384 * sizeof (short) / sizeof (int) + 112,
+ 4 + 384 * sizeof (short) / sizeof (int) + 128,
+ 4 + 384 * sizeof (short) / sizeof (int) + 144,
+ 4 + 384 * sizeof (short) / sizeof (int) + 160,
+ 4 + 384 * sizeof (short) / sizeof (int) + 176,
+ 4 + 384 * sizeof (short) / sizeof (int) + 192,
+ 4 + 384 * sizeof (short) / sizeof (int) + 208,
+ 4 + 384 * sizeof (short) / sizeof (int) + 224,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 240,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 256,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 272,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 352,
+ 4 + 384 * sizeof (short) / sizeof (int) + 368,
+ 4 + 384 * sizeof (short) / sizeof (int) + 384,
+ 4 + 384 * sizeof (short) / sizeof (int) + 400,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 416,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 432,
+ 4 + 384 * sizeof (short) / sizeof (int) + 448,
+ 4 + 384 * sizeof (short) / sizeof (int) + 464,
+ 4 + 384 * sizeof (short) / sizeof (int) + 480,
+ 4 + 384 * sizeof (short) / sizeof (int) + 496,
+ 4 + 384 * sizeof (short) / sizeof (int) + 512,
+ 4 + 384 * sizeof (short) / sizeof (int) + 528,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 544,
+ 4 + 384 * sizeof (short) / sizeof (int) + 560,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 576,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 592,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 608,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x08000000, 0x0000000F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00100000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFF0000, 0x000707FF,
+ 0x00000000, 0xFFFFFFFE, 0x000007FE, 0xFFFEC000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x002FFFFF, 0x9C00C000,
+ 0xFFFD0000, 0x0000FFFF, 0xFFFFE000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0002003F, 0xFFFFFC00, 0x000007FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFF0, 0x23FFFFFF, 0xFF010000, 0xF8040003,
+ 0xFFF99FE0, 0x23C5FDFF, 0xB0004000, 0x00030003,
+ 0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000,
+ 0xFFFBBFE0, 0x23EDFDFF, 0x00010000, 0x00000003,
+ 0xFFF99FE0, 0x23EDFDFF, 0xB0000000, 0x00020003,
+ 0xD63DC7E8, 0x03FFC718, 0x00010000, 0x00000000,
+ 0xFFFDDFE0, 0x23EFFDFF, 0x03000000, 0x00000003,
+ 0xFFFDDFE0, 0x23EFFDFF, 0x40000000, 0x00000003,
+ 0xFFFDDFE0, 0x23FFFDFF, 0x00000000, 0xFC000003,
+ 0xFC7FFFE0, 0x2FFBFFFF, 0x0000007F, 0x00000000,
+ 0xFFFFFFFE, 0x000DFFFF, 0x0000003F, 0x00000000,
+ 0xFEF02596, 0x200DECAE, 0x3000001F, 0x00000000,
+ 0x00000001, 0x00000000, 0xFFFFFEFF, 0x00001FFF,
+ 0x00000F00, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x800007FF, 0x3C3F0000, 0xFFE1C062,
+ 0x00004003, 0x00000000, 0xFFFF0000, 0x07FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x83FFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF07, 0xFFFFFFFF, 0x03FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3D7F3DFF, 0xFFFFFFFF,
+ 0xFFFF3DFF, 0x7F3DFFFF, 0xFF7FFF3D, 0xFFFFFFFF,
+ 0xFF3DFFFF, 0xFFFFFFFF, 0x07FFFFFF, 0x00000000,
+ 0x0000FFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x001FFFFF,
+ 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x007F9FFF,
+ 0x07FFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0x000007FF,
+ 0x0003DFFF, 0x0003FFFF, 0x0003FFFF, 0x0001DFFF,
+ 0xFFFFFFFF, 0x000FFFFF, 0x10000000, 0x00000000,
+ 0x00000000, 0xFFFFFFFF, 0xFFFFFFF7, 0x00FFFFFF,
+ 0xFFFFFFFF, 0x000005FF, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0x00000000, 0xFFFF0000, 0x001F3FFF,
+ 0xFFFFFFFF, 0x000003FF, 0x000000FE, 0x00000000,
+ 0x007FFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFE0, 0x000FFFFF, 0x00000FE0, 0x00000000,
+ 0xFFFFFFF8, 0x0000C001, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x0000000F, 0xFC00E000, 0x00FFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x01E00000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFF0000, 0xFFFFFFFF, 0x0000003F,
+ 0x007FFFFF, 0x7F7F7F7F, 0x7F7F7F7F, 0x00000000,
+ 0x00000040, 0x10000000, 0xFFFFFFFE, 0xFFFFFFFF,
+ 0x807FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x87FFFFFF,
+ 0xFFFFFFE0, 0xFFFE3FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00007FFF, 0x00FFFFFF, 0x00000000, 0xFFFF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x003FFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFDFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00001FFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFF0FFF, 0x00000C00, 0x00000000, 0x00004000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xF8000000,
+ 0xFFFFF7BB, 0x00000007, 0xFFFFFFFF, 0x000FFFFF,
+ 0xFFFFFFFC, 0x000FFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFC00, 0xFFFF003F, 0x0000007F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x000001FF, 0x00000FF7, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFF3FFF, 0xFFFFFFFF, 0xFFFF07FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, 0x00000000,
+ 0xA0000000, 0x5F7FFDFF, 0xFFFFFFDB, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0003FFFF, 0xFFF80000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x3FFFFFFF, 0xFFFF0000, 0xFFFFFFFF,
+ 0xFFFCFFFF, 0xFFFFFFFF, 0x000000FF, 0x0FFF0000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFDF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x1FFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFEFFC0,
+ 0x3FFFFFFF, 0x7FFFFFFF, 0x1CFCFCFC, 0x00000000,
+ 0xFFFFEFFF, 0xB7FFFF7F, 0x3FFF3FFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x07FFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0xFFFFFFFF, 0x0001FFFF, 0x00000000,
+ 0x7FFFFFFF, 0xFFFF0000, 0x000003FD, 0x00000000,
+ 0x3FFFFFFF, 0xFFFFFFFF, 0x0000FF0F, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFD3F, 0x91BFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x003FFFFF, 0x03FFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFEEF0001, 0x000FFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00007FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Lt.c b/lib/unictype/categ_Lt.c
new file mode 100644
index 00000000..485acf66
--- /dev/null
+++ b/lib/unictype/categ_Lt.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Lt table. */
+#include "categ_Lt.h"
+
+const uc_general_category_t UC_CATEGORY_Lt =
+ { UC_CATEGORY_MASK_Lt, 0, { &u_categ_Lt } };
diff --git a/lib/unictype/categ_Lt.h b/lib/unictype/categ_Lt.h
new file mode 100644
index 00000000..227ff2af
--- /dev/null
+++ b/lib/unictype/categ_Lt.h
@@ -0,0 +1,160 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[2 << 4];
+ }
+u_categ_Lt =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000920, 0x00040000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF00FF00, 0x1000FF00, 0x00001000, 0x10000000
+ }
+};
diff --git a/lib/unictype/categ_Lu.c b/lib/unictype/categ_Lu.c
new file mode 100644
index 00000000..26faae27
--- /dev/null
+++ b/lib/unictype/categ_Lu.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Lu table. */
+#include "categ_Lu.h"
+
+const uc_general_category_t UC_CATEGORY_Lu =
+ { UC_CATEGORY_MASK_Lu, 0, { &u_categ_Lu } };
diff --git a/lib/unictype/categ_Lu.h b/lib/unictype/categ_Lu.h
new file mode 100644
index 00000000..9674e161
--- /dev/null
+++ b/lib/unictype/categ_Lu.h
@@ -0,0 +1,331 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[12 << 4];
+ }
+u_categ_Lu =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x07FFFFFE, 0x00000000,
+ 0x00000000, 0x00000000, 0x7F7FFFFF, 0x00000000,
+ 0x55555555, 0xAA555555, 0x555554AA, 0x2B555555,
+ 0xB1DBCED6, 0x11AED2D5, 0x4AAAA490, 0x55D25555,
+ 0x55555555, 0x6C055555, 0x0000557A, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00450000,
+ 0xFFFED740, 0x00000FFB, 0x551C8000, 0xE6905555,
+ 0xFFFFFFFF, 0x0000FFFF, 0x00000000, 0x55555555,
+ 0x55555401, 0x55555555, 0x55552AAB, 0x55555555,
+ 0x55555555, 0xFFFE0005, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFFFFFF, 0x0000003F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x55555555, 0x55555555, 0x55555555, 0x55555555,
+ 0x40155555, 0x55555555, 0x55555555, 0x55555555,
+ 0x3F00FF00, 0xFF00FF00, 0xAA003F00, 0x0000FF00,
+ 0x00000000, 0x0F000000, 0x0F000F00, 0x0F001F00,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3E273884, 0xC00F3D50, 0x00000020, 0x00000000,
+ 0x00000008, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x00007FFF, 0x00000000, 0x0024EA9D,
+ 0x55555555, 0x55555555, 0x55555555, 0x00000005,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55555555, 0x00001554,
+ 0x00555555, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x55545554, 0x55555555, 0x6A005555,
+ 0x00000855, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x07FFFFFE, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x000000FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x03FFFFFF, 0xFFF00000, 0x00003FFF, 0xFFFFFF00,
+ 0xD0000003, 0x003FDE64, 0xFFFF0000, 0x000003FF,
+ 0x1FDFE7B0, 0x7B000000, 0x0001FC5F, 0xFFFFF000,
+ 0x0000003F, 0x03FFFFFF, 0xFFF00000, 0x00003FFF,
+ 0xFFFFFF00, 0xF0000003, 0x003FFFFF, 0xFFFF0000,
+ 0x000003FF, 0xFFFFFF00, 0x00000001, 0x07FFFFFC,
+ 0xF0000000, 0x001FFFFF, 0xFFC00000, 0x00007FFF,
+ 0xFFFF0000, 0x000001FF, 0x00000400, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_M.c b/lib/unictype/categ_M.c
new file mode 100644
index 00000000..ab7f149c
--- /dev/null
+++ b/lib/unictype/categ_M.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_M table. */
+#include "categ_M.h"
+
+const uc_general_category_t UC_CATEGORY_M =
+ { UC_CATEGORY_MASK_M, 0, { &u_categ_M } };
diff --git a/lib/unictype/categ_M.h b/lib/unictype/categ_M.h
new file mode 100644
index 00000000..6e0b3772
--- /dev/null
+++ b/lib/unictype/categ_M.h
@@ -0,0 +1,528 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[15];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[26 << 4];
+ }
+u_categ_M =
+{
+ { 15 },
+ {
+ 16 * sizeof (int) / sizeof (short) + 0,
+ 16 * sizeof (int) / sizeof (short) + 128,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 0,
+ 16 + 384 * sizeof (short) / sizeof (int) + 16,
+ 16 + 384 * sizeof (short) / sizeof (int) + 32,
+ 16 + 384 * sizeof (short) / sizeof (int) + 48,
+ 16 + 384 * sizeof (short) / sizeof (int) + 64,
+ 16 + 384 * sizeof (short) / sizeof (int) + 80,
+ 16 + 384 * sizeof (short) / sizeof (int) + 96,
+ 16 + 384 * sizeof (short) / sizeof (int) + 112,
+ 16 + 384 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 144,
+ 16 + 384 * sizeof (short) / sizeof (int) + 160,
+ 16 + 384 * sizeof (short) / sizeof (int) + 176,
+ 16 + 384 * sizeof (short) / sizeof (int) + 192,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 208,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 224,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 240,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 256,
+ 16 + 384 * sizeof (short) / sizeof (int) + 272,
+ 16 + 384 * sizeof (short) / sizeof (int) + 288,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 304,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 320,
+ 16 + 384 * sizeof (short) / sizeof (int) + 336,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 352,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 368,
+ 16 + 384 * sizeof (short) / sizeof (int) + 384,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 400,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x000003F8, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFE0000, 0xBFFFFFFF, 0x000000B6, 0x00000000,
+ 0x07FF0000, 0x00000000, 0x7FFFF800, 0x00010000,
+ 0x00000000, 0x00000000, 0xDFC00000, 0x00003D9F,
+ 0x00020000, 0xFFFF0000, 0x000007FF, 0x00000000,
+ 0x00000000, 0x0001FFC0, 0x00000000, 0x000FF800,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000000E, 0xD0000000, 0x001E3FFF, 0x0000000C,
+ 0x0000000E, 0xD0000000, 0x0080399F, 0x0000000C,
+ 0x0000000E, 0xD0000000, 0x00023987, 0x00230000,
+ 0x0000000E, 0xD0000000, 0x00003BBF, 0x0000000C,
+ 0x0000000E, 0xD0000000, 0x00C0399F, 0x0000000C,
+ 0x00000004, 0xC0000000, 0x00803DC7, 0x00000000,
+ 0x0000000E, 0xC0000000, 0x00603DDF, 0x0000000C,
+ 0x0000000C, 0xD0000000, 0x00603DDF, 0x0000000C,
+ 0x0000000C, 0xC0000000, 0x00803DDF, 0x0000000C,
+ 0x0000000C, 0x00000000, 0xFF5F8400, 0x000C0000,
+ 0x00000000, 0x07F20000, 0x00007F80, 0x00000000,
+ 0x00000000, 0x1BF20000, 0x00003F00, 0x00000000,
+ 0x03000000, 0xC2A00000, 0x00000000, 0xFFFE0000,
+ 0xFEFF00DF, 0x1FFFFFFF, 0x00000040, 0x00000000,
+ 0x00000000, 0x7FFFF800, 0xC3C00000, 0x001E3F9D,
+ 0x0000BFFC, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x001C0000, 0x001C0000, 0x000C0000, 0x000C0000,
+ 0x00000000, 0xFFC00000, 0x200FFFFF, 0x00000000,
+ 0x00003800, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000000, 0x0FFF0FFF, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFF0000, 0x00000301, 0x00000000,
+ 0x0F800000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000001F, 0xFFF00000, 0x0000001F, 0x000FF800,
+ 0x00000007, 0x000007FE, 0x00000000, 0x00000000,
+ 0x00000000, 0x00FFFFF0, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0xC000007F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFF0000, 0x0001FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF,
+ 0x00000000, 0x0000FC00, 0x00000000, 0x00000000,
+ 0x06000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x30078000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000844, 0x000000F8, 0x00000000, 0x00000000,
+ 0x00000003, 0xFFF00000, 0x0000001F, 0x00000000,
+ 0x00000000, 0x00003FC0, 0x000FFF80, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x007FFE00, 0x00003008, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x40000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000FFFF, 0x0000007F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x20000000,
+ 0x0000F06E, 0x87000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xF807E3E0,
+ 0x00000FE7, 0x00003C00, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000001C, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF
+ }
+};
diff --git a/lib/unictype/categ_Mc.c b/lib/unictype/categ_Mc.c
new file mode 100644
index 00000000..c54a565c
--- /dev/null
+++ b/lib/unictype/categ_Mc.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Mc table. */
+#include "categ_Mc.h"
+
+const uc_general_category_t UC_CATEGORY_Mc =
+ { UC_CATEGORY_MASK_Mc, 0, { &u_categ_Mc } };
diff --git a/lib/unictype/categ_Mc.h b/lib/unictype/categ_Mc.h
new file mode 100644
index 00000000..dfddaa79
--- /dev/null
+++ b/lib/unictype/categ_Mc.h
@@ -0,0 +1,331 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[12 << 4];
+ }
+u_categ_Mc =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ -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,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000008, 0xC0000000, 0x00001E01, 0x00000000,
+ 0x0000000C, 0xC0000000, 0x00801981, 0x00000000,
+ 0x00000008, 0xC0000000, 0x00000001, 0x00000000,
+ 0x00000008, 0xC0000000, 0x00001A01, 0x00000000,
+ 0x0000000C, 0x40000000, 0x00801981, 0x00000000,
+ 0x00000000, 0xC0000000, 0x00801DC6, 0x00000000,
+ 0x0000000E, 0x00000000, 0x0000001E, 0x00000000,
+ 0x0000000C, 0x40000000, 0x00600D9F, 0x00000000,
+ 0x0000000C, 0xC0000000, 0x00801DC1, 0x00000000,
+ 0x0000000C, 0x00000000, 0xFF038000, 0x000C0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xC0000000, 0x00000000, 0x80000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x19021800, 0x00C00000, 0x00003F9C,
+ 0x00009F98, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xC0400000, 0x000001BF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x01FB0E78, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFF0000, 0x00000301, 0x00000000,
+ 0x0E000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000010, 0xE8200000, 0x0000001B, 0x00000000,
+ 0x00000004, 0x000004C2, 0x00000000, 0x00000000,
+ 0x00000000, 0x00300FF0, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000098, 0x00000000, 0x00000000,
+ 0x00000003, 0xFFF00000, 0x0000000F, 0x00000000,
+ 0x00000000, 0x00000000, 0x000C0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00198000, 0x00002000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0007E060,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Me.c b/lib/unictype/categ_Me.c
new file mode 100644
index 00000000..00e2a012
--- /dev/null
+++ b/lib/unictype/categ_Me.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Me table. */
+#include "categ_Me.h"
+
+const uc_general_category_t UC_CATEGORY_Me =
+ { UC_CATEGORY_MASK_Me, 0, { &u_categ_Me } };
diff --git a/lib/unictype/categ_Me.h b/lib/unictype/categ_Me.h
new file mode 100644
index 00000000..7bf325ae
--- /dev/null
+++ b/lib/unictype/categ_Me.h
@@ -0,0 +1,168 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[4 << 4];
+ }
+u_categ_Me =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000300, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x40000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xE0000000, 0x0000001D,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00070000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Mn.c b/lib/unictype/categ_Mn.c
new file mode 100644
index 00000000..5990ee50
--- /dev/null
+++ b/lib/unictype/categ_Mn.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Mn table. */
+#include "categ_Mn.h"
+
+const uc_general_category_t UC_CATEGORY_Mn =
+ { UC_CATEGORY_MASK_Mn, 0, { &u_categ_Mn } };
diff --git a/lib/unictype/categ_Mn.h b/lib/unictype/categ_Mn.h
new file mode 100644
index 00000000..576279ac
--- /dev/null
+++ b/lib/unictype/categ_Mn.h
@@ -0,0 +1,528 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[15];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[26 << 4];
+ }
+u_categ_Mn =
+{
+ { 15 },
+ {
+ 16 * sizeof (int) / sizeof (short) + 0,
+ 16 * sizeof (int) / sizeof (short) + 128,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 0,
+ 16 + 384 * sizeof (short) / sizeof (int) + 16,
+ 16 + 384 * sizeof (short) / sizeof (int) + 32,
+ 16 + 384 * sizeof (short) / sizeof (int) + 48,
+ 16 + 384 * sizeof (short) / sizeof (int) + 64,
+ 16 + 384 * sizeof (short) / sizeof (int) + 80,
+ 16 + 384 * sizeof (short) / sizeof (int) + 96,
+ 16 + 384 * sizeof (short) / sizeof (int) + 112,
+ 16 + 384 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 144,
+ 16 + 384 * sizeof (short) / sizeof (int) + 160,
+ 16 + 384 * sizeof (short) / sizeof (int) + 176,
+ 16 + 384 * sizeof (short) / sizeof (int) + 192,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 208,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 224,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 240,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 256,
+ 16 + 384 * sizeof (short) / sizeof (int) + 272,
+ 16 + 384 * sizeof (short) / sizeof (int) + 288,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 304,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 320,
+ 16 + 384 * sizeof (short) / sizeof (int) + 336,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 352,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 368,
+ 16 + 384 * sizeof (short) / sizeof (int) + 384,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 400,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x000000F8, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFE0000, 0xBFFFFFFF, 0x000000B6, 0x00000000,
+ 0x07FF0000, 0x00000000, 0x7FFFF800, 0x00010000,
+ 0x00000000, 0x00000000, 0x9FC00000, 0x00003D9F,
+ 0x00020000, 0xFFFF0000, 0x000007FF, 0x00000000,
+ 0x00000000, 0x0001FFC0, 0x00000000, 0x000FF800,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x10000000, 0x001E21FE, 0x0000000C,
+ 0x00000002, 0x10000000, 0x0000201E, 0x0000000C,
+ 0x00000006, 0x10000000, 0x00023986, 0x00230000,
+ 0x00000006, 0x10000000, 0x000021BE, 0x0000000C,
+ 0x00000002, 0x90000000, 0x0040201E, 0x0000000C,
+ 0x00000004, 0x00000000, 0x00002001, 0x00000000,
+ 0x00000000, 0xC0000000, 0x00603DC1, 0x0000000C,
+ 0x00000000, 0x90000000, 0x00003040, 0x0000000C,
+ 0x00000000, 0x00000000, 0x0000201E, 0x0000000C,
+ 0x00000000, 0x00000000, 0x005C0400, 0x00000000,
+ 0x00000000, 0x07F20000, 0x00007F80, 0x00000000,
+ 0x00000000, 0x1BF20000, 0x00003F00, 0x00000000,
+ 0x03000000, 0x02A00000, 0x00000000, 0x7FFE0000,
+ 0xFEFF00DF, 0x1FFFFFFF, 0x00000040, 0x00000000,
+ 0x00000000, 0x66FDE000, 0xC3000000, 0x001E0001,
+ 0x00002064, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x001C0000, 0x001C0000, 0x000C0000, 0x000C0000,
+ 0x00000000, 0x3F800000, 0x200FFE40, 0x00000000,
+ 0x00003800, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000000, 0x0E040187, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x01800000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000000F, 0x17D00000, 0x00000004, 0x000FF800,
+ 0x00000003, 0x0000033C, 0x00000000, 0x00000000,
+ 0x00000000, 0x00CFF000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0xC000007F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x1FFF0000, 0x0001FFE2,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF,
+ 0x00000000, 0x0000FC00, 0x00000000, 0x00000000,
+ 0x06000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x30008000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000844, 0x00000060, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000010, 0x00000000,
+ 0x00000000, 0x00003FC0, 0x0003FF80, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00667E00, 0x00001008, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x40000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000FFFF, 0x0000007F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x20000000,
+ 0x0000F06E, 0x87000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xF8000380,
+ 0x00000FE7, 0x00003C00, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000001C, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF
+ }
+};
diff --git a/lib/unictype/categ_N.c b/lib/unictype/categ_N.c
new file mode 100644
index 00000000..5aa92487
--- /dev/null
+++ b/lib/unictype/categ_N.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_N table. */
+#include "categ_N.h"
+
+const uc_general_category_t UC_CATEGORY_N =
+ { UC_CATEGORY_MASK_N, 0, { &u_categ_N } };
diff --git a/lib/unictype/categ_N.h b/lib/unictype/categ_N.h
new file mode 100644
index 00000000..9eb241d0
--- /dev/null
+++ b/lib/unictype/categ_N.h
@@ -0,0 +1,403 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[30 << 4];
+ }
+u_categ_N =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 208,
+ 3 + 256 * sizeof (short) / sizeof (int) + 224,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 240,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 256,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 288,
+ 3 + 256 * sizeof (short) / sizeof (int) + 304,
+ 3 + 256 * sizeof (short) / sizeof (int) + 320,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 336,
+ 3 + 256 * sizeof (short) / sizeof (int) + 352,
+ 3 + 256 * sizeof (short) / sizeof (int) + 368,
+ 3 + 256 * sizeof (short) / sizeof (int) + 384,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 400,
+ 3 + 256 * sizeof (short) / sizeof (int) + 416,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 432,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 448,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 464,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x03FF0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x720C0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000003FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x03FF0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x000003FF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x03F0FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0007FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x7F00FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x003FFFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x000FFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x000003FF, 0x00000000,
+ 0x03FF0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x1FFFFE00,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0001C000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x03FF03FF,
+ 0x03FF0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000FFC0, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x03FF0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF03FF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x03F10000,
+ 0x000003FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFF80000, 0xFFFFFFFF,
+ 0x000001E7, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF,
+ 0x0FFFFFFF, 0x00000000, 0x00000000, 0xFFFFFC00,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFC00000,
+ 0x000FFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x20000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000080, 0x070003FE, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x003C0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x000003FF, 0xFFFE0000, 0x00000000,
+ 0x000003FF, 0xFFFE0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x000003FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x000003FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x03FF0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFF80, 0x000FFFFF, 0xFFFFFFFF, 0x01FFFFFF,
+ 0x00000400, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x0000000F, 0x00000402, 0x00000000,
+ 0x00000000, 0x00000000, 0x003E0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x000003FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x03C00000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x000000FF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000007,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0003FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFC000, 0xFFFFFFFF
+ }
+};
diff --git a/lib/unictype/categ_Nd.c b/lib/unictype/categ_Nd.c
new file mode 100644
index 00000000..f5ad3224
--- /dev/null
+++ b/lib/unictype/categ_Nd.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Nd table. */
+#include "categ_Nd.h"
+
+const uc_general_category_t UC_CATEGORY_Nd =
+ { UC_CATEGORY_MASK_Nd, 0, { &u_categ_Nd } };
diff --git a/lib/unictype/categ_Nd.h b/lib/unictype/categ_Nd.h
new file mode 100644
index 00000000..986cec7b
--- /dev/null
+++ b/lib/unictype/categ_Nd.h
@@ -0,0 +1,351 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[17 << 4];
+ }
+u_categ_Nd =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ 3 + 256 * sizeof (short) / sizeof (int) + 208,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 224,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 240,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 256,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x03FF0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000003FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x03FF0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x000003FF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x000003FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x000003FF, 0x00000000,
+ 0x03FF0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000003FF,
+ 0x03FF0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000FFC0, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x03FF0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF03FF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x000003FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x000003FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x03FF0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x000003FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFC000, 0xFFFFFFFF
+ }
+};
diff --git a/lib/unictype/categ_Nl.c b/lib/unictype/categ_Nl.c
new file mode 100644
index 00000000..6fe93707
--- /dev/null
+++ b/lib/unictype/categ_Nl.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Nl table. */
+#include "categ_Nl.h"
+
+const uc_general_category_t UC_CATEGORY_Nl =
+ { UC_CATEGORY_MASK_Nl, 0, { &u_categ_Nl } };
diff --git a/lib/unictype/categ_Nl.h b/lib/unictype/categ_Nl.h
new file mode 100644
index 00000000..9b4ce70c
--- /dev/null
+++ b/lib/unictype/categ_Nl.h
@@ -0,0 +1,307 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[6 << 4];
+ }
+u_categ_Nl =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0001C000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF,
+ 0x000001E7, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000080, 0x070003FE, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0x001FFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000402, 0x00000000,
+ 0x00000000, 0x00000000, 0x003E0000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000007,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_No.c b/lib/unictype/categ_No.c
new file mode 100644
index 00000000..055177f6
--- /dev/null
+++ b/lib/unictype/categ_No.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_No table. */
+#include "categ_No.h"
+
+const uc_general_category_t UC_CATEGORY_No =
+ { UC_CATEGORY_MASK_No, 0, { &u_categ_No } };
diff --git a/lib/unictype/categ_No.h b/lib/unictype/categ_No.h
new file mode 100644
index 00000000..b6ae929e
--- /dev/null
+++ b/lib/unictype/categ_No.h
@@ -0,0 +1,355 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[18 << 4];
+ }
+u_categ_No =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 208,
+ 3 + 256 * sizeof (short) / sizeof (int) + 224,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 240,
+ 3 + 256 * sizeof (short) / sizeof (int) + 256,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x720C0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x03F00000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00070000,
+ 0x00000000, 0x00000000, 0x00000000, 0x7F000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x003F0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x000FFC00, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x1FFFFE00,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x03FF0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x03F10000,
+ 0x000003FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFF80000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF,
+ 0x0FFFFFFF, 0x00000000, 0x00000000, 0xFFFFFC00,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFC00000,
+ 0x000FFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x20000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x003C0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x000003FF, 0xFFFE0000, 0x00000000,
+ 0x000003FF, 0xFFFE0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFF80, 0x000FFFFF, 0x00000000, 0x01E00000,
+ 0x00000400, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x0000000F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x03C00000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x000000FF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0003FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_P.c b/lib/unictype/categ_P.c
new file mode 100644
index 00000000..e1dbbcdd
--- /dev/null
+++ b/lib/unictype/categ_P.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_P table. */
+#include "categ_P.h"
+
+const uc_general_category_t UC_CATEGORY_P =
+ { UC_CATEGORY_MASK_P, 0, { &u_categ_P } };
diff --git a/lib/unictype/categ_P.h b/lib/unictype/categ_P.h
new file mode 100644
index 00000000..474eda9d
--- /dev/null
+++ b/lib/unictype/categ_P.h
@@ -0,0 +1,403 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[30 << 4];
+ }
+u_categ_P =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 208,
+ 3 + 256 * sizeof (short) / sizeof (int) + 224,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 240,
+ 3 + 256 * sizeof (short) / sizeof (int) + 256,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 288,
+ 3 + 256 * sizeof (short) / sizeof (int) + 304,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 320,
+ 3 + 256 * sizeof (short) / sizeof (int) + 336,
+ 3 + 256 * sizeof (short) / sizeof (int) + 352,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 368,
+ 3 + 256 * sizeof (short) / sizeof (int) + 384,
+ 3 + 256 * sizeof (short) / sizeof (int) + 400,
+ 3 + 256 * sizeof (short) / sizeof (int) + 416,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 432,
+ 3 + 256 * sizeof (short) / sizeof (int) + 448,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 464,
+ -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
+ },
+ {
+ 0x00000000, 0x8C00F7EE, 0xB8000001, 0x28000000,
+ 0x00000000, 0x88800802, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x40000000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFC000000, 0x00000000,
+ 0x00000600, 0x40000000, 0x00000049, 0x00180000,
+ 0xC8003600, 0x00000000, 0x00000000, 0x00003C00,
+ 0x00000000, 0x00000000, 0x00100000, 0x00000000,
+ 0x00003FFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x03800000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00010030,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00100000,
+ 0x00000000, 0x00000000, 0x0C008000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0007FFF0, 0x3C000000, 0x00000000, 0x00000000,
+ 0x00000020, 0x00000000, 0x001F0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000FC00, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x08000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000001FE,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00006000,
+ 0x18000000, 0x00000000, 0x00000000, 0x00003800,
+ 0x00000000, 0x00600000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x07700000, 0x00000000,
+ 0x000007FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000030, 0x00000000,
+ 0x00000000, 0x00000000, 0xC0000000, 0x00000000,
+ 0xC0000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFC000000, 0x00000001,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xF8000000, 0x00000000, 0xC0000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFF0000, 0xFFFF00FF, 0x7FFBFFEF, 0x60000000,
+ 0x00006000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000600, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x003FFF00,
+ 0x00000000, 0x00000000, 0x00000060, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x01FFFFF8, 0x00000000, 0x0F000000, 0x30000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xDE000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x00017FFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFF3FF0E, 0x20010000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000001, 0x00000000, 0x08000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000E000, 0x00000000, 0x00000000, 0x40080000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00F00000,
+ 0x00000000, 0x00000000, 0x0000C000, 0x00000000,
+ 0x00000000, 0x0000C000, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xF0000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xC0000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x03FF0000, 0xFFFF0000, 0xFFF7FFFF, 0x00000D0B,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x8C00F7EE, 0xB8000001, 0xA8000000, 0x0000003F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000003, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x80000000, 0x00000000, 0x00010000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x80000000, 0x80000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x01FF0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000F0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Pc.c b/lib/unictype/categ_Pc.c
new file mode 100644
index 00000000..06558ada
--- /dev/null
+++ b/lib/unictype/categ_Pc.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Pc table. */
+#include "categ_Pc.h"
+
+const uc_general_category_t UC_CATEGORY_Pc =
+ { UC_CATEGORY_MASK_Pc, 0, { &u_categ_Pc } };
diff --git a/lib/unictype/categ_Pc.h b/lib/unictype/categ_Pc.h
new file mode 100644
index 00000000..e2e11363
--- /dev/null
+++ b/lib/unictype/categ_Pc.h
@@ -0,0 +1,164 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[3 << 4];
+ }
+u_categ_Pc =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32
+ },
+ {
+ 0x00000000, 0x00000000, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x80000000, 0x00100001, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00180000, 0x0000E000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x80000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Pd.c b/lib/unictype/categ_Pd.c
new file mode 100644
index 00000000..96516d59
--- /dev/null
+++ b/lib/unictype/categ_Pd.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Pd table. */
+#include "categ_Pd.h"
+
+const uc_general_category_t UC_CATEGORY_Pd =
+ { UC_CATEGORY_MASK_Pd, 0, { &u_categ_Pd } };
diff --git a/lib/unictype/categ_Pd.h b/lib/unictype/categ_Pd.h
new file mode 100644
index 00000000..91830943
--- /dev/null
+++ b/lib/unictype/categ_Pd.h
@@ -0,0 +1,180 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[7 << 4];
+ }
+u_categ_Pd =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ 2 + 128 * sizeof (short) / sizeof (int) + 80,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 96
+ },
+ {
+ 0x00000000, 0x00002000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000400, 0x40000000, 0x00000000, 0x00000000,
+ 0x00000040, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x003F0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x04800000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x10000000, 0x00010000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000001, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00060000, 0x01000000, 0x00000008,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00002000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Pe.c b/lib/unictype/categ_Pe.c
new file mode 100644
index 00000000..53155325
--- /dev/null
+++ b/lib/unictype/categ_Pe.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Pe table. */
+#include "categ_Pe.h"
+
+const uc_general_category_t UC_CATEGORY_Pe =
+ { UC_CATEGORY_MASK_Pe, 0, { &u_categ_Pe } };
diff --git a/lib/unictype/categ_Pe.h b/lib/unictype/categ_Pe.h
new file mode 100644
index 00000000..a85dcae5
--- /dev/null
+++ b/lib/unictype/categ_Pe.h
@@ -0,0 +1,196 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[11 << 4];
+ }
+u_categ_Pe =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 80,
+ 2 + 128 * sizeof (short) / sizeof (int) + 96,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 112,
+ 2 + 128 * sizeof (short) / sizeof (int) + 128,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 144,
+ 2 + 128 * sizeof (short) / sizeof (int) + 160
+ },
+ {
+ 0x00000000, 0x00000200, 0x20000000, 0x20000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x28000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x10000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000040, 0x40000000,
+ 0x00004000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000400, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x002AAA00,
+ 0x00000000, 0x00000000, 0x00000040, 0x0000AA80,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x01555550, 0x00000000, 0x0A000000, 0x20000000,
+ 0x00000000, 0x000002A8, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xCAA2AA00, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x80000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x01000000, 0x55400000, 0x54000115, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000200, 0x20000000, 0x20000000, 0x00000009,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Pf.c b/lib/unictype/categ_Pf.c
new file mode 100644
index 00000000..435e19f1
--- /dev/null
+++ b/lib/unictype/categ_Pf.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Pf table. */
+#include "categ_Pf.h"
+
+const uc_general_category_t UC_CATEGORY_Pf =
+ { UC_CATEGORY_MASK_Pf, 0, { &u_categ_Pf } };
diff --git a/lib/unictype/categ_Pf.h b/lib/unictype/categ_Pf.h
new file mode 100644
index 00000000..74aa60ad
--- /dev/null
+++ b/lib/unictype/categ_Pf.h
@@ -0,0 +1,164 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[3 << 4];
+ }
+u_categ_Pf =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x08000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x22000000, 0x04000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x20002428, 0x00000002, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Pi.c b/lib/unictype/categ_Pi.c
new file mode 100644
index 00000000..9ea1de1d
--- /dev/null
+++ b/lib/unictype/categ_Pi.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Pi table. */
+#include "categ_Pi.h"
+
+const uc_general_category_t UC_CATEGORY_Pi =
+ { UC_CATEGORY_MASK_Pi, 0, { &u_categ_Pi } };
diff --git a/lib/unictype/categ_Pi.h b/lib/unictype/categ_Pi.h
new file mode 100644
index 00000000..7b8caf17
--- /dev/null
+++ b/lib/unictype/categ_Pi.h
@@ -0,0 +1,164 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[3 << 4];
+ }
+u_categ_Pi =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000800, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x99000000, 0x02000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x10001214, 0x00000001, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Po.c b/lib/unictype/categ_Po.c
new file mode 100644
index 00000000..4c2e2cb1
--- /dev/null
+++ b/lib/unictype/categ_Po.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Po table. */
+#include "categ_Po.h"
+
+const uc_general_category_t UC_CATEGORY_Po =
+ { UC_CATEGORY_MASK_Po, 0, { &u_categ_Po } };
diff --git a/lib/unictype/categ_Po.h b/lib/unictype/categ_Po.h
new file mode 100644
index 00000000..37d7fb09
--- /dev/null
+++ b/lib/unictype/categ_Po.h
@@ -0,0 +1,387 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[26 << 4];
+ }
+u_categ_Po =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 208,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 224,
+ 3 + 256 * sizeof (short) / sizeof (int) + 240,
+ 3 + 256 * sizeof (short) / sizeof (int) + 256,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 288,
+ 3 + 256 * sizeof (short) / sizeof (int) + 304,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 320,
+ 3 + 256 * sizeof (short) / sizeof (int) + 336,
+ 3 + 256 * sizeof (short) / sizeof (int) + 352,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 368,
+ 3 + 256 * sizeof (short) / sizeof (int) + 384,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 400,
+ -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
+ },
+ {
+ 0x00000000, 0x8C00D4EE, 0x10000001, 0x00000000,
+ 0x00000000, 0x80800002, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x40000000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFC000000, 0x00000000,
+ 0x00000200, 0x00000000, 0x00000049, 0x00180000,
+ 0xC8003600, 0x00000000, 0x00000000, 0x00003C00,
+ 0x00000000, 0x00000000, 0x00100000, 0x00000000,
+ 0x00003FFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x03800000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00010030,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00100000,
+ 0x00000000, 0x00000000, 0x0C008000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0007FFF0, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000020, 0x00000000, 0x001F0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000FC00, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x08000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000001FE,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00006000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00003800,
+ 0x00000000, 0x00600000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x07700000, 0x00000000,
+ 0x000007BF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000030, 0x00000000,
+ 0x00000000, 0x00000000, 0xC0000000, 0x00000000,
+ 0xC0000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFC000000, 0x00000001,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xF8000000, 0x00000000, 0xC0000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00C00000, 0x79FF00FF, 0x7FEBFF8E, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xDE000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xCB7FC9C3, 0x00017C00, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000000E, 0x20000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x08000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000E000, 0x00000000, 0x00000000, 0x40080000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00F00000,
+ 0x00000000, 0x00000000, 0x0000C000, 0x00000000,
+ 0x00000000, 0x0000C000, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xF0000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x027F0000, 0x00010000, 0x80F71E60, 0x00000D03,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x8C00D4EE, 0x10000001, 0x00000000, 0x00000032,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000003, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x80000000, 0x00000000, 0x00010000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x80000000, 0x80000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x01FF0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000F0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Ps.c b/lib/unictype/categ_Ps.c
new file mode 100644
index 00000000..4e10039d
--- /dev/null
+++ b/lib/unictype/categ_Ps.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Ps table. */
+#include "categ_Ps.h"
+
+const uc_general_category_t UC_CATEGORY_Ps =
+ { UC_CATEGORY_MASK_Ps, 0, { &u_categ_Ps } };
diff --git a/lib/unictype/categ_Ps.h b/lib/unictype/categ_Ps.h
new file mode 100644
index 00000000..25d10cf0
--- /dev/null
+++ b/lib/unictype/categ_Ps.h
@@ -0,0 +1,196 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[11 << 4];
+ }
+u_categ_Ps =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 80,
+ 2 + 128 * sizeof (short) / sizeof (int) + 96,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 112,
+ 2 + 128 * sizeof (short) / sizeof (int) + 128,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 144,
+ 2 + 128 * sizeof (short) / sizeof (int) + 160
+ },
+ {
+ 0x00000000, 0x00000100, 0x08000000, 0x08000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x14000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x08000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x44000000, 0x00000000, 0x00000020, 0x20000000,
+ 0x00002000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00155500,
+ 0x00000000, 0x00000000, 0x00000020, 0x00005540,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00AAAAA8, 0x00000000, 0x05000000, 0x10000000,
+ 0x00000000, 0x00000154, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x25515500, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x40000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00800000, 0xAAA00000, 0x2A00008A, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000100, 0x08000000, 0x88000000, 0x00000004,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_S.c b/lib/unictype/categ_S.c
new file mode 100644
index 00000000..4eb51f5f
--- /dev/null
+++ b/lib/unictype/categ_S.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_S table. */
+#include "categ_S.h"
+
+const uc_general_category_t UC_CATEGORY_S =
+ { UC_CATEGORY_MASK_S, 0, { &u_categ_S } };
diff --git a/lib/unictype/categ_S.h b/lib/unictype/categ_S.h
new file mode 100644
index 00000000..e3638381
--- /dev/null
+++ b/lib/unictype/categ_S.h
@@ -0,0 +1,427 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[36 << 4];
+ }
+u_categ_S =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 208,
+ 3 + 256 * sizeof (short) / sizeof (int) + 224,
+ 3 + 256 * sizeof (short) / sizeof (int) + 240,
+ 3 + 256 * sizeof (short) / sizeof (int) + 256,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 288,
+ 3 + 256 * sizeof (short) / sizeof (int) + 304,
+ 3 + 256 * sizeof (short) / sizeof (int) + 320,
+ 3 + 256 * sizeof (short) / sizeof (int) + 336,
+ 3 + 256 * sizeof (short) / sizeof (int) + 352,
+ 3 + 256 * sizeof (short) / sizeof (int) + 368,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 384,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 400,
+ 3 + 256 * sizeof (short) / sizeof (int) + 416,
+ 3 + 256 * sizeof (short) / sizeof (int) + 432,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 448,
+ 3 + 256 * sizeof (short) / sizeof (int) + 464,
+ 3 + 256 * sizeof (short) / sizeof (int) + 480,
+ 3 + 256 * sizeof (short) / sizeof (int) + 496,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 512,
+ 3 + 256 * sizeof (short) / sizeof (int) + 528,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 544,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 560,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x70000810, 0x40000000, 0x50000001,
+ 0x00000000, 0x0153D3FC, 0x00800000, 0x00800000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFC003C, 0xFFFFAFE0,
+ 0x00000000, 0x00000000, 0x00000000, 0x00200000,
+ 0x00000030, 0x00000000, 0x00000000, 0x00400000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000004, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000C9C0, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x60000200,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00400000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x040C0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00020000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00010000,
+ 0x00000000, 0x00000000, 0x00000000, 0x07F80000,
+ 0x00000000, 0x00000000, 0x00000000, 0x80000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00060000,
+ 0x00000000, 0x00000000, 0x00000000, 0x02000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x80000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFCF8000E, 0x01500000, 0x00000000, 0x00000000,
+ 0x00000000, 0xC0000000, 0x0000DFBF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xC0000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000001,
+ 0x03FF0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x08000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000001, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x1FF007FE,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xA0000000, 0xE000E003, 0x6000E000,
+ 0x00000000, 0x00000000, 0x00040010, 0x1C000000,
+ 0x00001C00, 0x003FFFFF, 0x00000000, 0x00000000,
+ 0xC1D0037B, 0x0C0042AF, 0x0000BC1F, 0x00000000,
+ 0xFFFF0000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFF9FF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x000000FF,
+ 0xFFFFFFFF, 0x0000007F, 0x000007FF, 0x00000000,
+ 0xF0000000, 0xFFFFFFFF, 0xFFFFFFFF, 0x000003FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x1FFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFFFF3DE, 0xFFFFFEFF, 0x7F47AFFF, 0x000000FE,
+ 0xFF100000, 0x7FFEFFFF, 0xFFFF179F, 0xFFFF003F,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFE000007, 0xFFFFFFFF, 0xF0FFFFFF, 0xCFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x001F1FFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000007E0,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFBFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x000FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x003FFFFF, 0x0FFF0000,
+ 0x000C0010, 0xC0C00001, 0x00000000, 0x00000000,
+ 0x18000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFC30000, 0x00000000, 0xFFFFFFFF, 0x0000000F,
+ 0x7FFFFFFF, 0xFFFFFC00, 0x0001000F, 0xFFFFFFFF,
+ 0xFFFFFC00, 0x0001FFFF, 0xFFFFFFFF, 0x7FFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFF0000, 0xFFFFFFFF, 0x0000007F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x007FFFFF, 0x00000003, 0x00000000, 0x00000000,
+ 0x00000600, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000F00, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x30000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000274,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x70000810, 0x40000000, 0x50000001, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x30007F7F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000004, 0xFF800000, 0x00000000, 0xFE000000,
+ 0x0FFF03FF, 0x00000000, 0xFFFF0000, 0x1FFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x003FFFFF,
+ 0xFFFFFFFF, 0xFFFFFE7F, 0xFFFFFFFF, 0x00001C1F,
+ 0xFFFFF018, 0xFFFFC3FF, 0x3FFFFFFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000023, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x08000002, 0x08000000,
+ 0x00200000, 0x00200000, 0x00008000, 0x00008000,
+ 0x00000200, 0x00000200, 0x00000008, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF0FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000FFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Sc.c b/lib/unictype/categ_Sc.c
new file mode 100644
index 00000000..171d5b81
--- /dev/null
+++ b/lib/unictype/categ_Sc.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Sc table. */
+#include "categ_Sc.h"
+
+const uc_general_category_t UC_CATEGORY_Sc =
+ { UC_CATEGORY_MASK_Sc, 0, { &u_categ_Sc } };
diff --git a/lib/unictype/categ_Sc.h b/lib/unictype/categ_Sc.h
new file mode 100644
index 00000000..c6690f11
--- /dev/null
+++ b/lib/unictype/categ_Sc.h
@@ -0,0 +1,188 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[9 << 4];
+ }
+u_categ_Sc =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 96,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 112,
+ 2 + 128 * sizeof (short) / sizeof (int) + 128
+ },
+ {
+ 0x00000000, 0x00000010, 0x00000000, 0x00000000,
+ 0x00000000, 0x0000003C, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000800, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000C0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00020000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x02000000,
+ 0x00000000, 0x80000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x08000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x003FFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x10000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000200,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000010, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000063
+ }
+};
diff --git a/lib/unictype/categ_Sk.c b/lib/unictype/categ_Sk.c
new file mode 100644
index 00000000..5f4d84e6
--- /dev/null
+++ b/lib/unictype/categ_Sk.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Sk table. */
+#include "categ_Sk.h"
+
+const uc_general_category_t UC_CATEGORY_Sk =
+ { UC_CATEGORY_MASK_Sk, 0, { &u_categ_Sk } };
diff --git a/lib/unictype/categ_Sk.h b/lib/unictype/categ_Sk.h
new file mode 100644
index 00000000..dc755970
--- /dev/null
+++ b/lib/unictype/categ_Sk.h
@@ -0,0 +1,176 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[6 << 4];
+ }
+u_categ_Sk =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 80
+ },
+ {
+ 0x00000000, 0x00000000, 0x40000000, 0x00000001,
+ 0x00000000, 0x01108100, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFC003C, 0xFFFFAFE0,
+ 0x00000000, 0x00000000, 0x00000000, 0x00200000,
+ 0x00000030, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xA0000000, 0xE000E003, 0x6000E000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x18000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x007FFFFF, 0x00000003, 0x00000000, 0x00000000,
+ 0x00000600, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x40000000, 0x00000001, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000008
+ }
+};
diff --git a/lib/unictype/categ_Sm.c b/lib/unictype/categ_Sm.c
new file mode 100644
index 00000000..158823fd
--- /dev/null
+++ b/lib/unictype/categ_Sm.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Sm table. */
+#include "categ_Sm.h"
+
+const uc_general_category_t UC_CATEGORY_Sm =
+ { UC_CATEGORY_MASK_Sm, 0, { &u_categ_Sm } };
diff --git a/lib/unictype/categ_Sm.h b/lib/unictype/categ_Sm.h
new file mode 100644
index 00000000..ffb7cb3d
--- /dev/null
+++ b/lib/unictype/categ_Sm.h
@@ -0,0 +1,331 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[12 << 4];
+ }
+u_categ_Sm =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x70000800, 0x00000000, 0x50000000,
+ 0x00000000, 0x00021000, 0x00800000, 0x00800000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00400000,
+ 0x000001C0, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00040010, 0x1C000000,
+ 0x00001C00, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000081F, 0x00000000,
+ 0x0C1F0000, 0x00004049, 0x0014C000, 0xFFF00000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000F00, 0x00000003, 0x00000000, 0x10000000,
+ 0xF8000000, 0x000FFFFF, 0xF0000000, 0x00000003,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00800000, 0x00000002, 0xFF000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00008000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFF179F, 0xFFFF003F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFE000007, 0xFFFFFFFF, 0xF0FFFFFF, 0xCFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0xFFFF0000, 0x00001F9F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000074,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x70000800, 0x00000000, 0x50000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00001E04,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x08000002, 0x08000000,
+ 0x00200000, 0x00200000, 0x00008000, 0x00008000,
+ 0x00000200, 0x00000200, 0x00000008, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_So.c b/lib/unictype/categ_So.c
new file mode 100644
index 00000000..a1f688b5
--- /dev/null
+++ b/lib/unictype/categ_So.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_So table. */
+#include "categ_So.h"
+
+const uc_general_category_t UC_CATEGORY_So =
+ { UC_CATEGORY_MASK_So, 0, { &u_categ_So } };
diff --git a/lib/unictype/categ_So.h b/lib/unictype/categ_So.h
new file mode 100644
index 00000000..f0fa49f0
--- /dev/null
+++ b/lib/unictype/categ_So.h
@@ -0,0 +1,403 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[30 << 4];
+ }
+u_categ_So =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ 3 + 256 * sizeof (short) / sizeof (int) + 208,
+ 3 + 256 * sizeof (short) / sizeof (int) + 224,
+ 3 + 256 * sizeof (short) / sizeof (int) + 240,
+ 3 + 256 * sizeof (short) / sizeof (int) + 256,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 288,
+ 3 + 256 * sizeof (short) / sizeof (int) + 304,
+ 3 + 256 * sizeof (short) / sizeof (int) + 320,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 336,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 352,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 368,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 384,
+ 3 + 256 * sizeof (short) / sizeof (int) + 400,
+ 3 + 256 * sizeof (short) / sizeof (int) + 416,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 432,
+ 3 + 256 * sizeof (short) / sizeof (int) + 448,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 464,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x004142C0, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000004, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000C000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x60000200,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00400000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x04000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00010000,
+ 0x00000000, 0x00000000, 0x00000000, 0x05F80000,
+ 0x00000000, 0x00000000, 0x00000000, 0x80000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00060000,
+ 0x00000000, 0x00000000, 0x00000000, 0x02000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFCF8000E, 0x01500000, 0x00000000, 0x00000000,
+ 0x00000000, 0xC0000000, 0x0000DFBF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xC0000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000001,
+ 0x03FF0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000001, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x1FF007FE,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xC1D0037B, 0x0C0042AF, 0x0000B400, 0x00000000,
+ 0xF3E00000, 0xFFFFBFB6, 0xFFEB3FFF, 0x000FFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFF0FF, 0xFFFFF9FC, 0xFFFFFFFF, 0xEFFFFFFF,
+ 0x07FFFFFF, 0xFFF00000, 0x0FFFFFFF, 0x000000FC,
+ 0xFFFFFFFF, 0x0000007F, 0x000007FF, 0x00000000,
+ 0xF0000000, 0xFFFFFFFF, 0xFFFFFFFF, 0x000003FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFF7FFFFF, 0xFFFFFFFD, 0x00FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF7FFF,
+ 0x3FFFFFFF, 0x1FFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFFFF3DE, 0xFFFFFEFF, 0x7F47AFFF, 0x000000FE,
+ 0xFF100000, 0x7FFEFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x0000FFFF, 0x001F0060, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000007E0,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFBFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x000FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x003FFFFF, 0x0FFF0000,
+ 0x000C0010, 0xC0C00001, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFC30000, 0x00000000, 0xFFFFFFFF, 0x0000000F,
+ 0x7FFFFFFF, 0xFFFFFC00, 0x0001000F, 0xFFFFFFFF,
+ 0xFFFFFC00, 0x0001FFFF, 0xFFFFFFFF, 0x7FFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFF0000, 0xFFFFFFFF, 0x0000007F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000F00, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x20000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x30006110,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000004, 0xFF800000, 0x00000000, 0xFE000000,
+ 0x0FFF03FF, 0x00000000, 0xFFFF0000, 0x1FFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x003FFFFF,
+ 0xFFFFFFFF, 0xFFFFFE7F, 0xFFFFFFFF, 0x00001C1F,
+ 0xFFFFF018, 0xFFFFC3FF, 0x3FFFFFFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000023, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF0FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000FFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Z.c b/lib/unictype/categ_Z.c
new file mode 100644
index 00000000..eb187d63
--- /dev/null
+++ b/lib/unictype/categ_Z.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Z table. */
+#include "categ_Z.h"
+
+const uc_general_category_t UC_CATEGORY_Z =
+ { UC_CATEGORY_MASK_Z, 0, { &u_categ_Z } };
diff --git a/lib/unictype/categ_Z.h b/lib/unictype/categ_Z.h
new file mode 100644
index 00000000..fa41dd60
--- /dev/null
+++ b/lib/unictype/categ_Z.h
@@ -0,0 +1,172 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[5 << 4];
+ }
+u_categ_Z =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -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
+ },
+ {
+ 0x00000000, 0x00000001, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000001, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00004000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x000007FF, 0x00008300, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Zl.c b/lib/unictype/categ_Zl.c
new file mode 100644
index 00000000..4a6e3df3
--- /dev/null
+++ b/lib/unictype/categ_Zl.c
@@ -0,0 +1,30 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+static bool
+uc_is_category_Zl (ucs4_t uc)
+{
+ return (uc == 0x2028);
+}
+
+const uc_general_category_t UC_CATEGORY_Zl =
+ { UC_CATEGORY_MASK_Zl, 1, { &uc_is_category_Zl } };
diff --git a/lib/unictype/categ_Zl.h b/lib/unictype/categ_Zl.h
new file mode 100644
index 00000000..1ddb0077
--- /dev/null
+++ b/lib/unictype/categ_Zl.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_categ_Zl =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0x00000000, 0x00000100, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Zp.c b/lib/unictype/categ_Zp.c
new file mode 100644
index 00000000..23f682cd
--- /dev/null
+++ b/lib/unictype/categ_Zp.c
@@ -0,0 +1,30 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+static bool
+uc_is_category_Zp (ucs4_t uc)
+{
+ return (uc == 0x2029);
+}
+
+const uc_general_category_t UC_CATEGORY_Zp =
+ { UC_CATEGORY_MASK_Zp, 1, { &uc_is_category_Zp } };
diff --git a/lib/unictype/categ_Zp.h b/lib/unictype/categ_Zp.h
new file mode 100644
index 00000000..3ee4da9d
--- /dev/null
+++ b/lib/unictype/categ_Zp.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_categ_Zp =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0x00000000, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_Zs.c b/lib/unictype/categ_Zs.c
new file mode 100644
index 00000000..c9971577
--- /dev/null
+++ b/lib/unictype/categ_Zs.c
@@ -0,0 +1,27 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_categ_Zs table. */
+#include "categ_Zs.h"
+
+const uc_general_category_t UC_CATEGORY_Zs =
+ { UC_CATEGORY_MASK_Zs, 0, { &u_categ_Zs } };
diff --git a/lib/unictype/categ_Zs.h b/lib/unictype/categ_Zs.h
new file mode 100644
index 00000000..7dbf3424
--- /dev/null
+++ b/lib/unictype/categ_Zs.h
@@ -0,0 +1,172 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[5 << 4];
+ }
+u_categ_Zs =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -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
+ },
+ {
+ 0x00000000, 0x00000001, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000001, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00004000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x000007FF, 0x00008000, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/categ_and.c b/lib/unictype/categ_and.c
new file mode 100644
index 00000000..2101f94e
--- /dev/null
+++ b/lib/unictype/categ_and.c
@@ -0,0 +1,45 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+uc_general_category_t
+uc_general_category_and (uc_general_category_t category1,
+ uc_general_category_t category2)
+{
+ uint32_t bitmask;
+ uc_general_category_t result;
+
+ bitmask = category1.bitmask & category2.bitmask;
+
+ if (bitmask == category1.bitmask)
+ return category1;
+
+ if (bitmask == category2.bitmask)
+ return category2;
+
+ if (bitmask == 0)
+ return _UC_CATEGORY_NONE;
+
+ result.bitmask = bitmask;
+ result.generic = 1;
+ result.lookup.lookup_fn = &uc_is_general_category_withtable;
+ return result;
+}
diff --git a/lib/unictype/categ_and_not.c b/lib/unictype/categ_and_not.c
new file mode 100644
index 00000000..6cc27596
--- /dev/null
+++ b/lib/unictype/categ_and_not.c
@@ -0,0 +1,42 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+uc_general_category_t
+uc_general_category_and_not (uc_general_category_t category1,
+ uc_general_category_t category2)
+{
+ uint32_t bitmask;
+ uc_general_category_t result;
+
+ bitmask = category1.bitmask & ~category2.bitmask;
+
+ if (bitmask == category1.bitmask)
+ return category1;
+
+ if (bitmask == 0)
+ return _UC_CATEGORY_NONE;
+
+ result.bitmask = bitmask;
+ result.generic = 1;
+ result.lookup.lookup_fn = &uc_is_general_category_withtable;
+ return result;
+}
diff --git a/lib/unictype/categ_byname.c b/lib/unictype/categ_byname.c
new file mode 100644
index 00000000..a175dd15
--- /dev/null
+++ b/lib/unictype/categ_byname.c
@@ -0,0 +1,105 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+uc_general_category_t
+uc_general_category_byname (const char *category_name)
+{
+ if (category_name[0] != '\0'
+ && (category_name[1] == '\0' || category_name[2] == '\0'))
+ switch (category_name[0])
+ {
+ case 'L':
+ switch (category_name[1])
+ {
+ case '\0': return UC_CATEGORY_L;
+ case 'u': return UC_CATEGORY_Lu;
+ case 'l': return UC_CATEGORY_Ll;
+ case 't': return UC_CATEGORY_Lt;
+ case 'm': return UC_CATEGORY_Lm;
+ case 'o': return UC_CATEGORY_Lo;
+ }
+ break;
+ case 'M':
+ switch (category_name[1])
+ {
+ case '\0': return UC_CATEGORY_M;
+ case 'n': return UC_CATEGORY_Mn;
+ case 'c': return UC_CATEGORY_Mc;
+ case 'e': return UC_CATEGORY_Me;
+ }
+ break;
+ case 'N':
+ switch (category_name[1])
+ {
+ case '\0': return UC_CATEGORY_N;
+ case 'd': return UC_CATEGORY_Nd;
+ case 'l': return UC_CATEGORY_Nl;
+ case 'o': return UC_CATEGORY_No;
+ }
+ break;
+ case 'P':
+ switch (category_name[1])
+ {
+ case '\0': return UC_CATEGORY_P;
+ case 'c': return UC_CATEGORY_Pc;
+ case 'd': return UC_CATEGORY_Pd;
+ case 's': return UC_CATEGORY_Ps;
+ case 'e': return UC_CATEGORY_Pe;
+ case 'i': return UC_CATEGORY_Pi;
+ case 'f': return UC_CATEGORY_Pf;
+ case 'o': return UC_CATEGORY_Po;
+ }
+ break;
+ case 'S':
+ switch (category_name[1])
+ {
+ case '\0': return UC_CATEGORY_S;
+ case 'm': return UC_CATEGORY_Sm;
+ case 'c': return UC_CATEGORY_Sc;
+ case 'k': return UC_CATEGORY_Sk;
+ case 'o': return UC_CATEGORY_So;
+ }
+ break;
+ case 'Z':
+ switch (category_name[1])
+ {
+ case '\0': return UC_CATEGORY_Z;
+ case 's': return UC_CATEGORY_Zs;
+ case 'l': return UC_CATEGORY_Zl;
+ case 'p': return UC_CATEGORY_Zp;
+ }
+ break;
+ case 'C':
+ switch (category_name[1])
+ {
+ case '\0': return UC_CATEGORY_C;
+ case 'c': return UC_CATEGORY_Cc;
+ case 'f': return UC_CATEGORY_Cf;
+ case 's': return UC_CATEGORY_Cs;
+ case 'o': return UC_CATEGORY_Co;
+ case 'n': return UC_CATEGORY_Cn;
+ }
+ break;
+ }
+ /* Invalid category name. */
+ return _UC_CATEGORY_NONE;
+}
diff --git a/lib/unictype/categ_name.c b/lib/unictype/categ_name.c
new file mode 100644
index 00000000..10421efc
--- /dev/null
+++ b/lib/unictype/categ_name.c
@@ -0,0 +1,77 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+static const char u_category_name[30][3] =
+{
+ "Lu", "Ll", "Lt", "Lm", "Lo", "Mn", "Mc", "Me", "Nd", "Nl",
+ "No", "Pc", "Pd", "Ps", "Pe", "Pi", "Pf", "Po", "Sm", "Sc",
+ "Sk", "So", "Zs", "Zl", "Zp", "Cc", "Cf", "Cs", "Co", "Cn"
+};
+
+const char *
+uc_general_category_name (uc_general_category_t category)
+{
+ uint32_t bitmask = category.bitmask;
+ /* bitmask should consist of a single bit. */
+ if (bitmask != 0)
+ {
+ if ((bitmask & (bitmask - 1)) == 0)
+ {
+ int bit;
+ /* Take log2 using a variant of Robert Harley's method.
+ Found by Bruno Haible 1996. */
+ uint32_t n = bitmask;
+ static const char ord2_tab[64] =
+ {
+ -1, 0, 1, 12, 2, 6, -1, 13, 3, -1, 7, -1, -1, -1, -1, 14,
+ 10, 4, -1, -1, 8, -1, -1, 25, -1, -1, -1, -1, -1, 21, 27, 15,
+ 31, 11, 5, -1, -1, -1, -1, -1, 9, -1, -1, 24, -1, -1, 20, 26,
+ 30, -1, -1, -1, -1, 23, -1, 19, 29, -1, 22, 18, 28, 17, 16, -1
+ };
+ n += n << 4;
+ n += n << 6;
+ n = (n << 16) - n;
+ bit = ord2_tab[n >> 26];
+
+ if (bit < sizeof (u_category_name) / sizeof (u_category_name[0]))
+ return u_category_name[bit];
+ }
+ else
+ {
+ if (bitmask == UC_CATEGORY_MASK_L)
+ return "L";
+ if (bitmask == UC_CATEGORY_MASK_M)
+ return "M";
+ if (bitmask == UC_CATEGORY_MASK_N)
+ return "N";
+ if (bitmask == UC_CATEGORY_MASK_P)
+ return "P";
+ if (bitmask == UC_CATEGORY_MASK_S)
+ return "S";
+ if (bitmask == UC_CATEGORY_MASK_Z)
+ return "Z";
+ if (bitmask == UC_CATEGORY_MASK_C)
+ return "C";
+ }
+ }
+ return NULL;
+}
diff --git a/lib/unictype/categ_none.c b/lib/unictype/categ_none.c
new file mode 100644
index 00000000..9e33ab93
--- /dev/null
+++ b/lib/unictype/categ_none.c
@@ -0,0 +1,30 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+static bool
+always_false (ucs4_t uc, uint32_t bitmask)
+{
+ return false;
+}
+
+const uc_general_category_t _UC_CATEGORY_NONE =
+ { 0, 1, { &always_false } };
diff --git a/lib/unictype/categ_of.c b/lib/unictype/categ_of.c
new file mode 100644
index 00000000..85b694f4
--- /dev/null
+++ b/lib/unictype/categ_of.c
@@ -0,0 +1,81 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_category table. */
+#include "categ_of.h"
+
+static inline int
+lookup_withtable (ucs4_t uc)
+{
+ unsigned int index1 = uc >> category_header_0;
+ if (index1 < category_header_1)
+ {
+ int lookup1 = u_category.level1[index1];
+ if (lookup1 >= 0)
+ {
+ unsigned int index2 = (uc >> category_header_2) & category_header_3;
+ int lookup2 = u_category.level2[lookup1 + index2];
+ if (lookup2 >= 0)
+ {
+ unsigned int index3 = ((uc & category_header_4) + lookup2) * 5;
+ /* level3 contains 5-bit values, packed into 16-bit words. */
+ unsigned int lookup3 =
+ ((u_category.level3[index3>>4]
+ | (u_category.level3[(index3>>4)+1] << 16))
+ >> (index3 % 16))
+ & 0x1f;
+
+ return lookup3;
+ }
+ }
+ return 29; /* = log2(UC_CATEGORY_MASK_Cn) */
+ }
+ return -1;
+}
+
+bool
+uc_is_general_category_withtable (ucs4_t uc, uint32_t bitmask)
+{
+ int bit = lookup_withtable (uc);
+
+ if (bit >= 0)
+ return ((bitmask >> bit) & 1);
+ else
+ return false;
+}
+
+uc_general_category_t
+uc_general_category (ucs4_t uc)
+{
+ int bit = lookup_withtable (uc);
+ uc_general_category_t result;
+
+ if (bit >= 0)
+ {
+ result.bitmask = 1 << bit;
+ result.generic = 1;
+ result.lookup.lookup_fn = &uc_is_general_category_withtable;
+ return result;
+ }
+ else
+ return _UC_CATEGORY_NONE;
+}
diff --git a/lib/unictype/categ_of.h b/lib/unictype/categ_of.h
new file mode 100644
index 00000000..3df7e0c9
--- /dev/null
+++ b/lib/unictype/categ_of.h
@@ -0,0 +1,1088 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Categories of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define category_header_0 16
+#define category_header_1 17
+#define category_header_2 7
+#define category_header_3 511
+#define category_header_4 127
+static const
+struct
+ {
+ int level1[17];
+ short level2[5 << 9];
+ unsigned short level3[148 * 40 + 1];
+ }
+u_category =
+{
+ {
+ 0, 512, 1024, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1536, 2048,
+ 2048
+ },
+ {
+ 0, 128, 256, 384, 512, 640, 768, 896,
+ 1024, 1152, 1280, 1408, 1536, 1664, 1792, 1920,
+ -1, -1, 2048, 2176, 2304, 2432, 2560, 2688,
+ 2816, 2944, 3072, 3200, 3328, 3456, 3584, 3712,
+ 3840, 3968, 4096, 4224, 4352, 4480, 4608, 4736,
+ 4864, 4992, 4992, 4992, 5120, 5248, 5376, 5504,
+ 5632, 5760, 5888, 6016, 6144, -1, 6272, 6400,
+ 6528, -1, 6656, 6784, 6912, 7040, 7168, 7296,
+ 7424, 7552, 7680, 7808, 7936, 7936, 8064, 8192,
+ 8320, 8448, 8576, 8704, 8832, 8960, 9088, 9216,
+ 8576, 8576, 7936, 9344, 7936, 7936, 9472, -1,
+ 9600, 9728, 9856, 9984, 10112, 10240, 8576, 10368,
+ 10496, 10624, 10752, 10880, 11008, 11136, 8576, 8576,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 11264, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 11392,
+ 11520, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 11648, 4992, 4992, 11776, 11904, 12032, 12160,
+ 12288, 12416, 12544, -1, 12672, -1, -1, -1,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 12800,
+ 12928, 12928, 12928, 12928, 12928, 12928, 12928, 12928,
+ 12928, 12928, 12928, 12928, 12928, 12928, 12928, 12928,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 4992, 4992, 13184, 13312, 13440, 13568,
+ 4992, 4992, 13696, 13824, 13952, 14080, 14208, 14336,
+ 14464, 14592, 14720, 14848, -1, 14976, 15104, 15232,
+ 15360, 15488, -1, -1, -1, -1, -1, -1,
+ 15616, -1, 15744, -1, 15872, -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,
+ 4992, 4992, 4992, 4992, 4992, 4992, 16000, -1,
+ 16128, -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, -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, -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,
+ 8576, 16256, 16384, 16512, 16640, -1, 16768, -1,
+ 16896, 17024, 17152, 17280, 17408, 17536, 17664, 17792,
+ -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,
+ 17920, 18048, -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,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992,
+ 4992, 4992, 4992, 4992, 4992, 18176, -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, -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,
+ 4992, 4992, 4992, 4992, 18304, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 18432, -1, 18560, 18688, -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, -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, -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, -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,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 13056,
+ 13056, 13056, 13056, 13056, 13056, 13056, 13056, 18816
+ },
+ {
+ 0xe739, 0x739c, 0x39ce, 0x9ce7, 0xce73, 0xe739, 0x739c, 0x39ce,
+ 0x9ce7, 0xce73, 0xc636, 0x6338, 0xcd8c, 0x1945, 0x8c59, 0x2108,
+ 0x1084, 0x0842, 0x28c5, 0x8ca5, 0x0011, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1680, 0x5d1d, 0x8434, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x2684, 0xcc9d,
+ 0xe739, 0x739c, 0x39ce, 0x9ce7, 0xce73, 0xe739, 0x739c, 0x39ce,
+ 0x9ce7, 0xce73, 0xce36, 0x6739, 0xb4ad, 0x2786, 0xa575, 0x2a55,
+ 0x4345, 0x548d, 0xa805, 0x8a94, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0090, 0x0000, 0x0800, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2190, 0x1084, 0x0842,
+ 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020, 0x0200, 0x2008,
+ 0x0080, 0x0802, 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020,
+ 0x0200, 0x0108, 0x1004, 0x0040, 0x0401, 0x4010, 0x2100, 0x0080,
+ 0x0802, 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020, 0x0200,
+ 0x2008, 0x0080, 0x0802, 0x8020, 0x0200, 0x0008, 0x1004, 0x0840,
+ 0x8001, 0x0200, 0x0100, 0x1000, 0x0002, 0x0400, 0x0200, 0x2000,
+ 0x0084, 0x0040, 0x8020, 0x0200, 0x0100, 0x0084, 0x0002, 0x0001,
+ 0x4010, 0x2000, 0x0204, 0x0842, 0x1084, 0x4402, 0x2200, 0x1100,
+ 0x0040, 0x0401, 0x4010, 0x0100, 0x1004, 0x0802, 0x8020, 0x0200,
+ 0x2008, 0x0080, 0x0802, 0x8801, 0x0200, 0x2000, 0x0080, 0x0802,
+ 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020, 0x0200, 0x2008,
+ 0x0080, 0x0802, 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020,
+ 0x4210, 0x2108, 0x1000, 0x0800, 0x0401, 0x0000, 0x2008, 0x0080,
+ 0x0802, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4240, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8c63,
+ 0xc631, 0x6318, 0x318c, 0x18c6, 0x5063, 0xe94a, 0x6318, 0x318c,
+ 0x18c6, 0x5063, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x8c63, 0x2831,
+ 0x94a5, 0x3a52, 0xa0e8, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529,
+ 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x8020, 0x2830, 0xbd08, 0x108f, 0xec42,
+ 0xf7bd, 0x294e, 0x0088, 0x0e80, 0x003a, 0x0001, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7400, 0x0000, 0x0000, 0x1000, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0042, 0x0021, 0x4200, 0x2008, 0x0080, 0x0802, 0x8020, 0x0200,
+ 0x2008, 0x0080, 0x0802, 0x8421, 0x8200, 0x0104, 0x1080, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8020, 0x0200,
+ 0x2008, 0x0080, 0x0802, 0x8020, 0x0200, 0x2008, 0x0080, 0x0802,
+ 0xd420, 0x4a52, 0xe729, 0x0080, 0x0802, 0x8020, 0x0200, 0x2008,
+ 0x0080, 0x0802, 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020,
+ 0x0200, 0x2008, 0x0080, 0x0802, 0x0400, 0x4010, 0x0100, 0x1004,
+ 0x0840, 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020, 0x0200,
+ 0x2008, 0x0080, 0x0802, 0x8020, 0x0200, 0x2008, 0x0080, 0x0802,
+ 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020, 0x0200, 0x2008,
+ 0x0080, 0x0802, 0x8020, 0x7bd0, 0xbdef, 0xdef7, 0xef7b, 0x001d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7de8, 0x18c4, 0x8c63, 0x843d, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x3d08, 0xdeb2, 0xef7b, 0x94bd, 0x4a52, 0xa529,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0x2b0a, 0x94b1, 0x4a58, 0xbd2c, 0xdef7,
+ 0xef7b, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0xde90, 0xef7b, 0x9084, 0x7b18, 0xbdef, 0xdef7, 0xef7b,
+ 0x6b5a, 0xbbdd, 0x3294, 0x19c6, 0xad63, 0x94a5, 0x4a52, 0xa529,
+ 0xd894, 0x8c7b, 0x109d, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1083, 0x0842, 0x8421, 0x5290,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0xe94a, 0x2108, 0x1084,
+ 0x0842, 0x18c5, 0x2123, 0x1085, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x4912, 0xa529, 0x5294, 0x29f4, 0x94a5, 0xc652,
+ 0xa528, 0x5296, 0x210a, 0x2108, 0x1084, 0x0842, 0x4211, 0x256a,
+ 0xc631, 0x6318, 0x318c, 0x18c6, 0xd763, 0x10a4, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0xde94,
+ 0x2109, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x4842, 0xa529, 0x5294, 0x294a, 0xf485,
+ 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0x2108, 0x1084, 0x0842, 0x4211,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x5290, 0x294a, 0x94a5, 0x4632, 0x318d, 0xde8e, 0xef7b,
+ 0x14bd, 0x0843, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x5ef4, 0x3188, 0x94a6, 0x4a52, 0xc529, 0x6318,
+ 0xef4a, 0x94a4, 0x7a52, 0x84ef, 0x4210, 0x2108, 0x9484, 0x2312,
+ 0x0842, 0x8421, 0x4210, 0x9071, 0x7bde, 0xbdef, 0x4277, 0x2108,
+ 0x18bd, 0x09d3, 0x8421, 0x4210, 0x277a, 0x77a4, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0xa421, 0x4213, 0x2108, 0x93a4,
+ 0x3bde, 0x8421, 0x5ef4, 0x3188, 0x94a6, 0x7a52, 0xa637, 0x6377,
+ 0xe90a, 0xf7bd, 0x7bde, 0xbd37, 0x4ef7, 0x2748, 0x9484, 0x3bd2,
+ 0x0842, 0x8421, 0x4210, 0xcc84, 0x94a9, 0x4a52, 0xded5, 0xef7b,
+ 0x14bd, 0x09d3, 0x8421, 0xde90, 0x277b, 0x77a4, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0xa421, 0x4213, 0x2108, 0x13a4,
+ 0x09d2, 0x84e9, 0x5ef4, 0x31ba, 0x94a6, 0x7bde, 0xa52f, 0x52f7,
+ 0xef4a, 0xf4bd, 0x7bde, 0x9def, 0x4210, 0xe93a, 0xf7bd, 0x3bde,
+ 0x0842, 0x8421, 0x4210, 0x10a5, 0x4a42, 0xbdef, 0xdef7, 0xef7b,
+ 0x14bd, 0x09d3, 0x8421, 0x4210, 0x2748, 0x7484, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0xa421, 0x4213, 0x2108, 0x13a4,
+ 0x09d2, 0x8421, 0x5ef4, 0x3188, 0x94a6, 0x4a52, 0xc52f, 0x6374,
+ 0xef4a, 0xf7a4, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0x9484, 0x3bd2,
+ 0x0842, 0x8421, 0x4210, 0xf67d, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x18bd, 0x09d3, 0x8421, 0x4210, 0x277a, 0x77a4, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0xa421, 0x4213, 0x2108, 0x13a4,
+ 0x09d2, 0x8421, 0x5ef4, 0x2988, 0x94a6, 0x7a52, 0xa637, 0x6377,
+ 0xef4a, 0xf7bd, 0x7bde, 0xbd31, 0x4ef7, 0x2748, 0x9484, 0x3bd2,
+ 0x0842, 0x8421, 0x4210, 0xf495, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x17bd, 0x09d2, 0x8421, 0xde90, 0x213b, 0x13a4, 0x4842, 0x9def,
+ 0x4e90, 0x213a, 0x77bd, 0x7a42, 0x84ef, 0xde90, 0x213b, 0x1084,
+ 0x0842, 0x8421, 0xdef4, 0x31bb, 0x98c5, 0xbbde, 0xa631, 0x631b,
+ 0xef4a, 0xf7a4, 0x7bde, 0xbd37, 0xdef7, 0xef7b, 0xf7bd, 0x3bde,
+ 0x0842, 0x8421, 0x4210, 0xa94a, 0x6b5a, 0x75ad, 0xded6, 0xef7b,
+ 0x18dd, 0x09d3, 0x8421, 0x4210, 0x213a, 0x13a4, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0xa421, 0x4213, 0x2108, 0x1084,
+ 0x09d2, 0x8421, 0xdef4, 0x2949, 0x18c5, 0x7a63, 0xa529, 0x5297,
+ 0xef4a, 0xf7bd, 0x4bde, 0x84e9, 0xdef4, 0xef7b, 0x9484, 0x3bd2,
+ 0x0842, 0x8421, 0x4210, 0xf7bd, 0x7bde, 0x4aef, 0xa529, 0xaa94,
+ 0x1bbd, 0x09d3, 0x8421, 0x4210, 0x213a, 0x13a4, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0xa421, 0x4213, 0x2108, 0x1084,
+ 0x09d2, 0x8421, 0x5ef4, 0x2988, 0x18c6, 0x7a63, 0xa631, 0x531b,
+ 0xef4a, 0xf7bd, 0x8dde, 0xbde9, 0xdef7, 0xe93b, 0x9484, 0x3bd2,
+ 0x0842, 0x8421, 0x4210, 0xd6bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x1bbd, 0x09d3, 0x8421, 0x4210, 0x213a, 0x13a4, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0xa421, 0x4213, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0xdef4, 0x3189, 0x94a6, 0xba52, 0xa631, 0x631b,
+ 0xef4a, 0xf7bd, 0x7bde, 0xbd37, 0xdef7, 0xef7b, 0x9484, 0x3bd2,
+ 0x0842, 0x8421, 0x4210, 0x294a, 0x54a5, 0xbdef, 0x4212, 0x2108,
+ 0x1bbd, 0x09d3, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0xbde9,
+ 0x4213, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x7484,
+ 0x0842, 0x8421, 0xd210, 0xef49, 0x1084, 0x0842, 0xbde9, 0xde97,
+ 0x377b, 0x94c6, 0x7a52, 0xc6e9, 0x6318, 0x318c, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0x1bbd, 0x7b13, 0xbdef, 0xdef7, 0xef7b,
+ 0x109d, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x10a4,
+ 0x4a52, 0xa529, 0xde94, 0x9f7b, 0x1084, 0xc842, 0xa528, 0x5294,
+ 0x894a, 0x2108, 0x1084, 0x0842, 0xd8c5, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x909d, 0x7a4e, 0xa427, 0xde93, 0xef49, 0xf7bd, 0x084e, 0x9d21,
+ 0x4210, 0x2108, 0x109d, 0x49d2, 0xbd27, 0xd213, 0x2109, 0x10a4,
+ 0x4a52, 0xa529, 0x52f4, 0xef48, 0x1084, 0xfa42, 0xa5e8, 0x5294,
+ 0xef4a, 0x2108, 0x1084, 0x0842, 0x4ef5, 0xef48, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0xd6a4, 0x631a, 0x318c, 0x18c6, 0x8c63, 0xc631, 0x6b5a, 0xa5ad,
+ 0x5ad4, 0xad6b, 0x2108, 0x1084, 0x0842, 0xa529, 0x5294, 0x294a,
+ 0x4b55, 0xb52d, 0xd734, 0x319c, 0x1084, 0x0842, 0x9d21, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0xef7a, 0x94bd, 0x4a52, 0xa529, 0x5294, 0x314a,
+ 0x94a5, 0x6252, 0x8429, 0xd210, 0xef7b, 0x94a5, 0x4a52, 0xbd29,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0xad7a, 0xd6b5, 0x6b5a, 0xb5a9, 0x5ad6,
+ 0xad7b, 0xc631, 0x7b18, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x6310, 0x294a, 0x94c5,
+ 0x4a52, 0xa629, 0x6314, 0x214a, 0x2108, 0x1084, 0x0842, 0x18c5,
+ 0x8c63, 0x1084, 0x8842, 0xa531, 0x4210, 0x2948, 0x1885, 0x0863,
+ 0xc631, 0x6318, 0x210c, 0x94a4, 0x0852, 0x8421, 0x4210, 0x2108,
+ 0x1484, 0x4a63, 0xc631, 0x6318, 0x310a, 0x2108, 0x1084, 0x0842,
+ 0xdef5, 0xad7b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4000, 0xbdef, 0xdef7,
+ 0xef7b, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x3890, 0xef7a,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0xdef4, 0x277b, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x9084, 0x7bde, 0x84ef, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0xdef4, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0xa421, 0x4213,
+ 0xef48, 0x1084, 0x0842, 0xa4e9, 0x4213, 0xef48, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0xa421, 0x4213, 0xef48, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x13a4,
+ 0x4842, 0x84ef, 0x4210, 0xe908, 0x13a4, 0x4842, 0x84ef, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x84e9, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x13a4, 0x4842, 0x84ef,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0xde90, 0x2f7b, 0xc635, 0x6318,
+ 0x518c, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0xef7a,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0xdef6, 0xef7b, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x7a42, 0xbdef, 0xdef7, 0xef7b,
+ 0x109d, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2462, 0x1084, 0x0842, 0xbde9, 0xdef7, 0xef7b,
+ 0x1096, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0xe690, 0xef7a, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x1890, 0x4a63, 0xf7a9, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x213a, 0x9484, 0x7a52, 0xbdef,
+ 0xdef7, 0xef7b, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x9484,
+ 0x6252, 0xbdec, 0xdef7, 0xef7b, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x9484, 0x7bd2, 0xbdef, 0xdef7, 0xef7b, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x213a, 0x97a4, 0x7bd2, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0xb5a2, 0xa529, 0x5294, 0x318a, 0x18c6, 0x4c63, 0xa631, 0x5294,
+ 0x294a, 0x94a5, 0x6312, 0x311c, 0x49c6, 0xef4a, 0x2108, 0x1084,
+ 0x0842, 0xdef5, 0xef7b, 0x294a, 0x94a5, 0x4a52, 0xdef5, 0xef7b,
+ 0xc631, 0x2318, 0x318b, 0x52c6, 0xed8a, 0x2108, 0x1084, 0x0842,
+ 0xdef5, 0xef7b, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x9084, 0x0841, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0xbd21, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0xa421, 0xde90, 0xef7b, 0xf7bd,
+ 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0xef7a, 0x14a5, 0x8c63, 0xc529, 0xd318, 0xef7b, 0x14c6,
+ 0x8c63, 0xa631, 0xd294, 0xef7b, 0xf7b5, 0x231e, 0x0842, 0x8421,
+ 0x4210, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0xef48, 0x1084, 0x7a42, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0xdef4, 0xef7b, 0x18c6,
+ 0x8c63, 0xc631, 0x6318, 0x318c, 0x1086, 0x0842, 0xc621, 0xdef4,
+ 0xef7b, 0x2108, 0x1084, 0x0842, 0xdef5, 0x8c7b, 0xd6b5, 0x6b5a,
+ 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0xc529,
+ 0xd318, 0x8c7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd,
+ 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x94a5, 0x0862, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x4c52, 0xa529, 0x5314, 0x318c, 0x14c6, 0x0863, 0x8421, 0xd210,
+ 0xef7b, 0x2108, 0x1084, 0x0842, 0x18c5, 0x8c63, 0xd6b1, 0x6b5a,
+ 0xb5ad, 0x52d6, 0x294a, 0x94a5, 0x6b52, 0xb5ad, 0x5ad6, 0xef7b,
+ 0x18a5, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x94c4, 0x8a52, 0xa531, 0xde98, 0x213b, 0x2108,
+ 0x1084, 0x0842, 0xdef5, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x8c62, 0xc631, 0x5318, 0x294a, 0x94a5,
+ 0x4c62, 0xbd29, 0x18f7, 0x8c63, 0x2108, 0x1084, 0x0842, 0xdef5,
+ 0x2109, 0x2108, 0x1084, 0x0842, 0x4211, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x6321, 0x318c, 0x8c46,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x3084, 0x18c6, 0x8c63,
+ 0xc631, 0x6318, 0x318c, 0x18c6, 0x8c63, 0xc631, 0x6318, 0x318c,
+ 0x18c6, 0x8c63, 0xc631, 0x6318, 0x318c, 0x18c6, 0x8463, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2308, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x3184, 0x18c6, 0x8c63, 0xc631, 0x6318, 0x318c, 0x18c6, 0x8c63,
+ 0xc631, 0x6318, 0x318c, 0x18c6, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0xbde9, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0x297b,
+ 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020, 0x0200, 0x2008,
+ 0x0080, 0x0802, 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020,
+ 0x0200, 0x2008, 0x0080, 0x0802, 0x8020, 0x0200, 0x2008, 0x0080,
+ 0x0802, 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020, 0x0200,
+ 0x2008, 0x0080, 0x0802, 0x8020, 0x0200, 0x2008, 0x0080, 0x0802,
+ 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020, 0x4200, 0x2108,
+ 0x1084, 0x0802, 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020,
+ 0x0200, 0x2008, 0x0080, 0x0802, 0x8020, 0x0200, 0x2008, 0x0080,
+ 0x0802, 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020, 0x0200,
+ 0x2008, 0x0080, 0x0802, 0x8020, 0x0200, 0x2008, 0x0080, 0x0802,
+ 0x8421, 0x4210, 0x0008, 0x0000, 0x0000, 0x8421, 0x4210, 0x00ef,
+ 0x0000, 0xef40, 0x8421, 0x4210, 0x0008, 0x0000, 0x0000, 0x8421,
+ 0x4210, 0x0008, 0x0000, 0x0000, 0x8421, 0x4210, 0x00ef, 0x0000,
+ 0xef40, 0x8421, 0x4210, 0x1d08, 0xd074, 0x0741, 0x8421, 0x4210,
+ 0x0008, 0x0000, 0x0000, 0x8421, 0x4210, 0x2108, 0x1084, 0xef42,
+ 0x8421, 0x4210, 0x4208, 0x2108, 0x1084, 0x8421, 0x4210, 0x4208,
+ 0x2108, 0x1084, 0x8421, 0x4210, 0x4208, 0x2108, 0x1084, 0x8421,
+ 0x7a10, 0x0008, 0x2000, 0xa068, 0x8694, 0x7a10, 0x0008, 0x2000,
+ 0xa528, 0x8421, 0x7bd0, 0x0008, 0xd000, 0xa529, 0x8421, 0x4210,
+ 0x0008, 0x0000, 0xa528, 0x87bd, 0x7a10, 0x0008, 0x2000, 0xed28,
+ 0x5ad6, 0xad6b, 0xd6b5, 0xad5a, 0xd6b5, 0x318c, 0x58c6, 0x0f8c,
+ 0xf7b6, 0x7b60, 0xc631, 0x6318, 0x178c, 0xad6b, 0xb6b5, 0xc631,
+ 0x6318, 0xf18c, 0x18c1, 0x5c63, 0xc62b, 0x9b28, 0x318b, 0x18c6,
+ 0x8c63, 0xca31, 0x62b8, 0x318c, 0x18c6, 0xb463, 0x6b5a, 0x7bad,
+ 0xbdef, 0xad6b, 0xd6b5, 0xf42a, 0x94ae, 0x4a52, 0x2949, 0x0b9b,
+ 0x294a, 0x94a5, 0x4a52, 0x2949, 0xeb9b, 0x8c63, 0x7a31, 0xbdef,
+ 0xdef7, 0xef7b, 0xce73, 0xe739, 0x739c, 0x39ce, 0x9ce7, 0xce73,
+ 0x6739, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7,
+ 0xef7b, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x39ce, 0x9ca7, 0x4a73,
+ 0xa529, 0x5294, 0x294a, 0xf7a5, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x82b5, 0x6b5a, 0xb505, 0x0006, 0x0840, 0x8000, 0x4150, 0x15ad,
+ 0x0000, 0xad40, 0xd6b5, 0x2a0a, 0xa0a8, 0x0002, 0x0d40, 0x0000,
+ 0x0810, 0x2421, 0x1ad4, 0x0002, 0x4a52, 0x4129, 0x2108, 0x5954,
+ 0xa86b, 0x77bd, 0x94a5, 0x4a52, 0xa529, 0x5294, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0x2529, 0x5210, 0xa94a, 0xdef7, 0xef7b, 0x4a52, 0x6b29, 0xb5ad,
+ 0x594a, 0xad6b, 0x56b2, 0xab59, 0xb5ac, 0x5ad6, 0xacab, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0x94ab, 0xcab5, 0x6b2a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a,
+ 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0xa52a, 0x5294, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0xd6b5, 0x6b5a, 0x52ad, 0x594a, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd652, 0x6b5a, 0xb5ad, 0x5ab9, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a,
+ 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x2ad6, 0xad6b,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x2956, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0x6b59, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x2ad6, 0x94a5, 0xd652, 0x6b5a,
+ 0xbdad, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xbded, 0xdef7, 0xef7b, 0xf7bd,
+ 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xd6b5, 0x6b5a, 0xb5ad, 0xded6,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0x5529, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a,
+ 0xb5ad, 0xa52a, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a,
+ 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb595, 0x5ad6, 0xad6b, 0xd655, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a,
+ 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0x52ad, 0x294a, 0x94a5,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a,
+ 0xb5ad, 0x5ad6, 0x956b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xef6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xef7b, 0xd6b5, 0x7bda, 0xbdef, 0xdef7,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0xd6bd, 0x7b5a, 0xb5ad, 0x5ef6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xbdad, 0x5ad6, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0xdad6,
+ 0xaf6b, 0xd6b5, 0x7bde, 0xb5ed, 0x5ad6, 0xed6b, 0xd6bd, 0x6b5a,
+ 0xcdad, 0xd735, 0x735c, 0x35cd, 0x9cd7, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x7b55, 0xb5ef,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6bd,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xed6b, 0x4a52, 0x9b29, 0x5293, 0x2eca,
+ 0xef7b, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0x6529,
+ 0xcd73, 0xd735, 0x735c, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0xca52, 0x9ae6, 0xae6b, 0xe6b9, 0x6b9a, 0xb9ae, 0x9ae6, 0x4e6b,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x94a5, 0x4a52, 0xa529, 0xcd94, 0x2735, 0x94a5, 0x4a52, 0xa529,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0xd94a, 0x949c,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0x6b29, 0x5295, 0x294a,
+ 0xef7b, 0xd6b5, 0x7b5a, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe800, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0xe842, 0x0020, 0x4200,
+ 0x0100, 0x1004, 0x0000, 0x803d, 0x4010, 0x2108, 0x1084, 0xef46,
+ 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020, 0x0200, 0x2008,
+ 0x0080, 0x0802, 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020,
+ 0x0200, 0x2008, 0x0080, 0x0802, 0x8020, 0x0200, 0x2008, 0x0080,
+ 0x0802, 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020, 0x6a10,
+ 0xb5ad, 0xded6, 0xef7b, 0xf7bd, 0x7bde, 0x3def, 0x18c6, 0x8c55,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0xbdef, 0xdef7, 0xef7b, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x4842,
+ 0xbdef, 0xdef7, 0x1f7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0xbde9,
+ 0xdef7, 0xef7b, 0x1084, 0x0842, 0x84e9, 0x4210, 0xe908, 0x1084,
+ 0x0842, 0x84e9, 0x4210, 0xe908, 0x1084, 0x0842, 0x84e9, 0x4210,
+ 0xe908, 0x1084, 0x0842, 0x84e9, 0x4210, 0xe908, 0x94a5, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x3e31, 0x60f8, 0xf18c, 0xf8c1, 0x8c60, 0xc631, 0x6318, 0x3164,
+ 0xf8b2, 0x8c60, 0x360f, 0x5cd7, 0xcd73, 0x18c5, 0x1c63, 0xf7b1,
+ 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5af6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a,
+ 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x7bda, 0xbdef, 0xdef7, 0xef7b,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xd6b5, 0x6b5a, 0xb5ad, 0xdad6, 0xef7b,
+ 0xc636, 0x0758, 0xcd49, 0xd735, 0x735c, 0xd5cd, 0x5cda, 0xcd73,
+ 0xc735, 0x739a, 0xa535, 0x5294, 0x294a, 0x5295, 0x294a, 0x8c6c,
+ 0x4631, 0x29ad, 0x41a5, 0xad62, 0x109d, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0xbde9,
+ 0x4a14, 0x20c7, 0x108c, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x3890, 0x20c6,
+ 0xf7bd, 0x09de, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0xef48, 0x109d,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0xe908, 0x2ab5, 0x54a5, 0xb5ad,
+ 0x5ad6, 0xad6b, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0xbd21, 0xdef7, 0xef7b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x7bda,
+ 0xbdef, 0xdef7, 0xef7b, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xed6b, 0x294a, 0x94a5, 0x4a52, 0x5ad5, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x7bda, 0xbdef, 0xdef7,
+ 0xef7b, 0x2955, 0x94a5, 0x4a52, 0xa529, 0x5294, 0xd6b5, 0x6b5a,
+ 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b,
+ 0x294a, 0x94a5, 0x4a52, 0x5ad5, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0x2955,
+ 0x94a5, 0x4a52, 0xa529, 0x5294, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a,
+ 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xed6b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x4842, 0xbdef, 0xdef7, 0xef7b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a,
+ 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x7bd2, 0xbdef, 0xdef7,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0642, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0xef7a, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xbded, 0xdef7,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x3210, 0x8c62, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x2108, 0x1084, 0x0842, 0xd211, 0xef7b, 0xf7bd,
+ 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0x8020, 0x0200, 0x2008, 0x0080,
+ 0x0802, 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x83bd, 0x0200,
+ 0x2008, 0x0080, 0x2902, 0x9ce7, 0x7bd8, 0xbdef, 0x5ef7, 0x1c4a,
+ 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020, 0x0200, 0xbd08,
+ 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd,
+ 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x631d,
+ 0x318c, 0x18c6, 0x8294, 0x0200, 0x2008, 0x0080, 0x0802, 0x8021,
+ 0x0200, 0x2008, 0x0080, 0x0802, 0x8020, 0x0200, 0x2008, 0x0080,
+ 0x0802, 0x8020, 0x0200, 0x2008, 0x0080, 0x0802, 0x8020, 0x0200,
+ 0x2008, 0x0080, 0x0802, 0x8423, 0x4210, 0x0108, 0x1004, 0x0800,
+ 0x8020, 0x0200, 0x8308, 0x1052, 0xef7a, 0xf7bd, 0x7bde, 0xbdef,
+ 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd,
+ 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0x4277, 0x2108,
+ 0x1484, 0x4842, 0x8421, 0x4290, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x4a63, 0xb531, 0xdad6, 0xef7b, 0xf7bd,
+ 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x6312, 0xbd8c, 0xdef7, 0xef7b,
+ 0x10c6, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x8c62, 0xc631, 0x6318, 0x318c, 0x18c6, 0x7a53, 0xbdef, 0xdef7,
+ 0x8c7b, 0x2108, 0x1084, 0x0842, 0xdef5, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x2108, 0x1084, 0x0842, 0x4211, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x4842, 0xa529, 0x5294, 0x8c4a, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0xa529, 0x5294,
+ 0x294a, 0x18a5, 0x7bd3, 0xbdef, 0xdef7, 0x8f7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0xa421, 0x5294, 0x314a, 0x14a6,
+ 0x4a63, 0xbde9, 0xdef7, 0xef7b, 0x9084, 0x0842, 0x8421, 0x5210,
+ 0xef4c, 0x2108, 0x1084, 0x0842, 0x1ef5, 0x8c63, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x7bd2, 0xbdef, 0xdef7, 0xef7b, 0xf7bd,
+ 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef,
+ 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd,
+ 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7,
+ 0x739c, 0x39ce, 0x9ce7, 0xce73, 0xe739, 0x739c, 0x39ce, 0x9ce7,
+ 0xce73, 0xe739, 0x739c, 0x39ce, 0x9ce7, 0xce73, 0xe739, 0x739c,
+ 0x39ce, 0x9ce7, 0xce73, 0xe739, 0x739c, 0x39ce, 0x9ce7, 0xce73,
+ 0xe739, 0x739c, 0x39ce, 0x9ce7, 0xce73, 0xe739, 0x739c, 0x39ce,
+ 0x9ce7, 0xce73, 0xe739, 0x739c, 0x39ce, 0x9ce7, 0xce73, 0xe739,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0xef48, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0xde90, 0xef7b, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0xdef4, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x8421, 0x4210, 0xbde8, 0xdef7, 0xef7b, 0xf7bd, 0x4210, 0xbd08,
+ 0xdef7, 0x2149, 0x1084, 0x0842, 0x4421, 0x4212, 0x2108, 0x1084,
+ 0x0842, 0x84e9, 0x4210, 0xe93a, 0x7484, 0x3a42, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0xf484,
+ 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7,
+ 0xef7b, 0x77bd, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x7348, 0xf7bd, 0x7bde, 0xbdef, 0xdef7,
+ 0xef7b, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x13bd, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0xbd21, 0xdef7,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0x1084, 0x0842, 0x8421, 0x3210, 0xef6b,
+ 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0xc631, 0x6318, 0x2e6c,
+ 0xdef6, 0xef7b, 0x94a5, 0x4a52, 0xbde9, 0xdef7, 0xef7b, 0xb191,
+ 0x9ab5, 0xae6b, 0xe6b9, 0x6b9a, 0xb9ae, 0x62e6, 0x2e6c, 0x18c6,
+ 0x5ad7, 0xc631, 0x631e, 0xac8c, 0xe6b9, 0x8b9a, 0x4a31, 0xa526,
+ 0x71ec, 0xd8c6, 0xef7b, 0x1084, 0x3a42, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0xd77a,
+ 0xc63d, 0x6338, 0xcd8c, 0x1945, 0x8c59, 0x2108, 0x1084, 0x0842,
+ 0x28c5, 0x8ca5, 0x0011, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1680, 0x5d1d, 0x8434, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x2684, 0x6c9d, 0x362e, 0x2317,
+ 0x8421, 0x4210, 0x2108, 0x1083, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x18c8, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0xe908, 0x13bd, 0x0842, 0xbd21, 0x4213,
+ 0x2108, 0x13bd, 0x0842, 0xbd21, 0x4213, 0xef7a, 0x4a73, 0xe75a,
+ 0x55ec, 0x294a, 0xed6b, 0xf7bd, 0x7bde, 0x5def, 0x5d6b, 0xef6b,
+ 0x1084, 0x0842, 0x8421, 0xd210, 0x2109, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x84e9, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4e90, 0x2748, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0xef48, 0x1084, 0x0842, 0x8421, 0x4210, 0xef48, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0xde90, 0xef7b,
+ 0xd631, 0x7bde, 0x4a57, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x7bd5, 0xb5af, 0x5ad6, 0xad6b, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x9494, 0xaa52, 0x5ad6, 0xad6b,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0xdeaa, 0xef7b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0xdad6, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd,
+ 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7,
+ 0xef7b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a,
+ 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xef4b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0xef7a, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0xf7a4, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0xe908, 0x294a, 0x7bd5, 0xbdef, 0xdef7, 0xef7b, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1124, 0x0842, 0x8421, 0xdea4,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x8f48, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x7bd2, 0x84ef, 0x4210,
+ 0x2108, 0xa531, 0x5294, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2100, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0xef48, 0x2108, 0x1084, 0x0842, 0xdef5, 0xef7b, 0xf7bd,
+ 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x4842, 0xa4ef, 0x4213, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x4842, 0xa427, 0x4ef7, 0x277a, 0xf7bd, 0x7bde, 0xbdef, 0xdef7,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x8842, 0x4a52,
+ 0xdef5, 0x8f7b, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0xdef4, 0x8f7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x94a4, 0x4bd2, 0xbde9, 0x5ef7, 0x294a, 0x1084, 0x09d2, 0x9d21,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x7bd2, 0xa5ef, 0xde94, 0x2f7b, 0x294a, 0x94a5, 0xbd52, 0xdef7,
+ 0xef7b, 0xc631, 0x6318, 0xb18c, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0xe908, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xc631, 0x7bd8, 0xbdef, 0xdef7, 0xef7b,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a,
+ 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xbdef, 0xdef7, 0xef7b,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xbded, 0x5ad6, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x8d5a,
+ 0xa529, 0x5ad4, 0x318d, 0x18c6, 0xb5ad, 0x5ad6, 0x52eb, 0x294a,
+ 0x94a5, 0x4b5a, 0xa529, 0x5294, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5296, 0xad4a, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xef6b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0x96b5, 0x6a52, 0xbdef, 0xdef7,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0xbded, 0xdef7, 0xef7b, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0xf54a, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0840, 0x8421, 0x7a10, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8400, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x0084, 0x003a, 0x83bd, 0x01de, 0x1de8, 0x0000, 0x003a, 0x0000,
+ 0x4000, 0x2108, 0xd0f4, 0x0843, 0x8421, 0x43d0, 0x2108, 0x1084,
+ 0x0842, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4000, 0x0007, 0xde80, 0x0001, 0x0000, 0x3a00, 0x0000,
+ 0x0000, 0x087a, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x0008, 0x0074, 0xe800, 0x0000, 0x3a00, 0xbde8, 0x0003,
+ 0x0000, 0x87a0, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x0084, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4000, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0840, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x8400, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x0084, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4000, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x00ef, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x8640, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1904, 0x0842, 0x0021, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1900, 0x0842,
+ 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x6410, 0x2108,
+ 0x0084, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6400, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x9042, 0x8421, 0x0210, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x9000, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842,
+ 0x8421, 0x4210, 0x4108, 0x1086, 0x0842, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4000, 0x1086, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x0421, 0x4219, 0x2108, 0xd080,
+ 0x423b, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0xdad6, 0xef7b, 0xd6b5,
+ 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6,
+ 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a,
+ 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x7bda, 0xbdef,
+ 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd,
+ 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084,
+ 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421, 0x4210,
+ 0x2108, 0x1084, 0x0842, 0xbde9, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x1084, 0x0842, 0x8421, 0x4210, 0x2108, 0x1084, 0x0842, 0x8421,
+ 0x4210, 0xef48, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd,
+ 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7,
+ 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde,
+ 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0xf75d, 0x7bde, 0xbdef, 0xdef7, 0xef7b, 0xf7bd, 0x7bde, 0xbdef,
+ 0xdef7, 0xef7b, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a,
+ 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b,
+ 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad,
+ 0x5ad6, 0xad6b, 0xd6b5, 0x6b5a, 0xb5ad, 0x5ad6, 0xad6b, 0xd6b5,
+ 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a,
+ 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529,
+ 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5,
+ 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294,
+ 0x294a, 0x94a5, 0x4a52, 0xa529, 0x5294, 0x294a, 0x94a5, 0x4a52,
+ 0xa529, 0x5294, 0x294a, 0xf7bd, 0x7bde, 0xbdef, 0xdef7, 0xef7b,
+ 0x739c, 0x39ce, 0x9ce7, 0xce73, 0xe739, 0x739c, 0x39ce, 0x9ce7,
+ 0xce73, 0xe739, 0x739c, 0x39ce, 0x9ce7, 0xce73, 0xe739, 0x739c,
+ 0x39ce, 0x9ce7, 0xce73, 0xe739, 0x739c, 0x39ce, 0x9ce7, 0xce73,
+ 0xe739, 0x739c, 0x39ce, 0x9ce7, 0xce73, 0xe739, 0x739c, 0x39ce,
+ 0x9ce7, 0xce73, 0xe739, 0x739c, 0x39ce, 0x9ce7, 0xce73, 0xef79,
+ 0x0000
+ }
+};
diff --git a/lib/unictype/categ_or.c b/lib/unictype/categ_or.c
new file mode 100644
index 00000000..9864210c
--- /dev/null
+++ b/lib/unictype/categ_or.c
@@ -0,0 +1,42 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+uc_general_category_t
+uc_general_category_or (uc_general_category_t category1,
+ uc_general_category_t category2)
+{
+ uint32_t bitmask;
+ uc_general_category_t result;
+
+ bitmask = category1.bitmask | category2.bitmask;
+
+ if (bitmask == category1.bitmask)
+ return category1;
+
+ if (bitmask == category2.bitmask)
+ return category2;
+
+ result.bitmask = bitmask;
+ result.generic = 1;
+ result.lookup.lookup_fn = &uc_is_general_category_withtable;
+ return result;
+}
diff --git a/lib/unictype/categ_test.c b/lib/unictype/categ_test.c
new file mode 100644
index 00000000..e46f0f65
--- /dev/null
+++ b/lib/unictype/categ_test.c
@@ -0,0 +1,32 @@
+/* Categories of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+bool
+uc_is_general_category (ucs4_t uc, uc_general_category_t category)
+{
+ if (category.generic)
+ return category.lookup.lookup_fn (uc, category.bitmask);
+ else
+ return bitmap_lookup (category.lookup.table, uc);
+}
diff --git a/lib/unictype/combining.c b/lib/unictype/combining.c
new file mode 100644
index 00000000..d2e33e63
--- /dev/null
+++ b/lib/unictype/combining.c
@@ -0,0 +1,47 @@
+/* Combining classes of Unicode characters.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_combclass table. */
+#include "combining.h"
+
+int
+uc_combining_class (ucs4_t uc)
+{
+ unsigned int index1 = uc >> combclass_header_0;
+ if (index1 < combclass_header_1)
+ {
+ int lookup1 = u_combclass.level1[index1];
+ if (lookup1 >= 0)
+ {
+ unsigned int index2 = (uc >> combclass_header_2) & combclass_header_3;
+ int lookup2 = u_combclass.level2[lookup1 + index2];
+ if (lookup2 >= 0)
+ {
+ unsigned int index3 = (uc & combclass_header_4);
+ unsigned int lookup3 = u_combclass.level3[lookup2 + index3];
+
+ return lookup3;
+ }
+ }
+ }
+ return 0;
+}
diff --git a/lib/unictype/combining.h b/lib/unictype/combining.h
new file mode 100644
index 00000000..5f1c8be5
--- /dev/null
+++ b/lib/unictype/combining.h
@@ -0,0 +1,839 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Combining class of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define combclass_header_0 16
+#define combclass_header_1 2
+#define combclass_header_2 7
+#define combclass_header_3 511
+#define combclass_header_4 127
+static const
+struct
+ {
+ int level1[2];
+ short level2[2 << 9];
+ unsigned char level3[43 << 7];
+ }
+u_combclass =
+{
+ { 0, 512 },
+ {
+ -1, -1, -1, -1, -1, -1, 0, -1,
+ -1, 128, -1, 256, 384, 512, 640, 768,
+ -1, -1, 896, 1024, 1024, 1024, 1024, 1152,
+ 1280, 1024, 1152, 1408, 1536, 1664, 1792, 1920,
+ 2048, 2176, -1, -1, -1, -1, 2304, -1,
+ -1, -1, -1, -1, -1, -1, 2432, 2560,
+ -1, 2688, 2816, -1, 2944, -1, 3072, 3200,
+ 3328, -1, -1, 3456, -1, -1, -1, -1,
+ -1, 3584, -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, 3712, -1, -1, -1, -1,
+ 3840, 3968, -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, -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, 4096, -1, -1, -1,
+ 4224, 4352, 4480, -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, -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, 4608, -1,
+ -1, -1, -1, -1, 4736, -1, -1, -1,
+ -1, -1, -1, 4864, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 4992, -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,
+ -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, -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, -1, -1,
+ -1, -1, 5120, 5248, 5376, -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
+ },
+ {
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 232, 220, 220,
+ 220, 220, 232, 216, 220, 220, 220, 220,
+ 220, 202, 202, 220, 220, 220, 220, 202,
+ 202, 220, 220, 220, 220, 220, 220, 220,
+ 220, 220, 220, 220, 1, 1, 1, 1,
+ 1, 220, 220, 220, 220, 230, 230, 230,
+ 230, 230, 230, 230, 230, 240, 230, 220,
+ 220, 220, 230, 230, 230, 220, 220, 0,
+ 230, 230, 230, 220, 220, 220, 220, 230,
+ 232, 220, 220, 230, 233, 234, 234, 233,
+ 234, 234, 233, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 230, 230, 230, 230, 230,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 220, 230, 230, 230, 230, 220, 230,
+ 230, 230, 222, 220, 230, 230, 230, 230,
+ 230, 230, 220, 220, 220, 220, 220, 220,
+ 230, 230, 220, 230, 230, 222, 228, 230,
+ 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 19, 20, 21, 22, 0, 23,
+ 0, 24, 25, 0, 230, 220, 0, 18,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 30, 31, 32, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 27, 28, 29, 30, 31,
+ 32, 33, 34, 230, 230, 220, 220, 230,
+ 230, 230, 230, 230, 220, 230, 230, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 35, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 230, 230,
+ 230, 230, 230, 230, 230, 0, 0, 230,
+ 230, 230, 230, 220, 230, 0, 0, 230,
+ 230, 0, 220, 230, 230, 220, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 36, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 230, 220, 230, 230, 220, 230, 230, 220,
+ 220, 220, 230, 220, 220, 230, 220, 230,
+ 230, 230, 220, 230, 220, 230, 220, 230,
+ 220, 230, 230, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 230, 230, 230, 230, 230,
+ 230, 230, 220, 230, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 7, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 9, 0, 0,
+ 0, 230, 220, 230, 230, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 7, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 9, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 9, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 9, 0, 0,
+ 0, 0, 0, 0, 0, 84, 91, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 9, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 103, 103, 9, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 107, 107, 107, 107, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 118, 118, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 122, 122, 122, 122, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 220, 220, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 220, 0, 220,
+ 0, 216, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 129, 130, 0, 132, 0, 0, 0,
+ 0, 0, 130, 130, 130, 130, 0, 0,
+ 130, 0, 230, 230, 9, 0, 230, 230,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 220, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 7,
+ 0, 9, 9, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 220, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 230,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 9, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 9, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 9, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 230, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 228, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 222, 230, 220, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 230,
+ 220, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 7, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 9, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 230, 220, 230, 230, 230,
+ 230, 230, 230, 230, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 9, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 7,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 230, 230, 220, 230, 230, 230, 230, 230,
+ 230, 230, 220, 230, 230, 234, 214, 220,
+ 202, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 230, 220,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 230, 230, 1, 1, 230, 230, 230, 230,
+ 1, 1, 1, 230, 230, 0, 0, 0,
+ 0, 230, 0, 0, 0, 1, 1, 230,
+ 220, 230, 1, 1, 220, 220, 220, 220,
+ 230, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 218, 228, 232, 222, 224, 224,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 8, 8, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 230,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 230, 230, 0, 0,
+ 0, 0, 0, 0, 0, 0, 9, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 9, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 220, 220, 220, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 26, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 230, 230, 230, 230, 230, 230, 230, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 220, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 220, 0, 230,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 230, 1, 220, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 216, 216, 1,
+ 1, 1, 0, 0, 0, 226, 216, 216,
+ 216, 216, 216, 0, 0, 0, 0, 0,
+ 0, 0, 0, 220, 220, 220, 220, 220,
+ 220, 220, 220, 0, 0, 230, 230, 230,
+ 230, 230, 220, 220, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 230, 230, 230, 230, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 230, 230, 230, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0
+ }
+};
diff --git a/lib/unictype/ctype_alnum.c b/lib/unictype/ctype_alnum.c
new file mode 100644
index 00000000..464fbb0d
--- /dev/null
+++ b/lib/unictype/ctype_alnum.c
@@ -0,0 +1,32 @@
+/* ISO C <ctype.h> like properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_is_alnum table. */
+#include "ctype_alnum.h"
+
+bool
+uc_is_alnum (ucs4_t uc)
+{
+ return bitmap_lookup (&u_is_alnum, uc);
+}
diff --git a/lib/unictype/ctype_alnum.h b/lib/unictype/ctype_alnum.h
new file mode 100644
index 00000000..c27ae78b
--- /dev/null
+++ b/lib/unictype/ctype_alnum.h
@@ -0,0 +1,588 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* ISO C <ctype.h> like properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[3];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[44 << 4];
+ }
+u_is_alnum =
+{
+ { 3 },
+ {
+ 4 * sizeof (int) / sizeof (short) + 0,
+ 4 * sizeof (int) / sizeof (short) + 128,
+ 4 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ 4 + 384 * sizeof (short) / sizeof (int) + 0,
+ 4 + 384 * sizeof (short) / sizeof (int) + 16,
+ 4 + 384 * sizeof (short) / sizeof (int) + 32,
+ 4 + 384 * sizeof (short) / sizeof (int) + 48,
+ 4 + 384 * sizeof (short) / sizeof (int) + 64,
+ 4 + 384 * sizeof (short) / sizeof (int) + 80,
+ 4 + 384 * sizeof (short) / sizeof (int) + 96,
+ 4 + 384 * sizeof (short) / sizeof (int) + 112,
+ 4 + 384 * sizeof (short) / sizeof (int) + 128,
+ 4 + 384 * sizeof (short) / sizeof (int) + 144,
+ 4 + 384 * sizeof (short) / sizeof (int) + 160,
+ 4 + 384 * sizeof (short) / sizeof (int) + 176,
+ 4 + 384 * sizeof (short) / sizeof (int) + 192,
+ 4 + 384 * sizeof (short) / sizeof (int) + 208,
+ 4 + 384 * sizeof (short) / sizeof (int) + 224,
+ 4 + 384 * sizeof (short) / sizeof (int) + 240,
+ 4 + 384 * sizeof (short) / sizeof (int) + 256,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 272,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 352,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 368,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 384,
+ 4 + 384 * sizeof (short) / sizeof (int) + 400,
+ 4 + 384 * sizeof (short) / sizeof (int) + 416,
+ 4 + 384 * sizeof (short) / sizeof (int) + 432,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 448,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 464,
+ 4 + 384 * sizeof (short) / sizeof (int) + 480,
+ 4 + 384 * sizeof (short) / sizeof (int) + 496,
+ 4 + 384 * sizeof (short) / sizeof (int) + 512,
+ 4 + 384 * sizeof (short) / sizeof (int) + 528,
+ 4 + 384 * sizeof (short) / sizeof (int) + 544,
+ 4 + 384 * sizeof (short) / sizeof (int) + 560,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 576,
+ 4 + 384 * sizeof (short) / sizeof (int) + 592,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 608,
+ 4 + 384 * sizeof (short) / sizeof (int) + 624,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 640,
+ 4 + 384 * sizeof (short) / sizeof (int) + 656,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 672,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 688,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x03FF0000, 0x07FFFFFE, 0x07FFFFFE,
+ 0x00000000, 0x04200400, 0xFF7FFFFF, 0xFF7FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0003FFC3, 0x0000501F,
+ 0x00000000, 0x00000000, 0x00000020, 0x3CDF0000,
+ 0xFFFFD740, 0xFFFFFFFB, 0xFFFFFFFF, 0xFFBFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFC03, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFE000F, 0x027FFFFF, 0xFFFFFFFE,
+ 0x000000FF, 0x00000000, 0xFFFF0000, 0x000707FF,
+ 0x00000000, 0xFFFFFFFE, 0x000007FF, 0xFFFEC3FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x002FFFFF, 0x9FFFC060,
+ 0xFFFD0000, 0x0000FFFF, 0xFFFFE000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0002003F, 0xFFFFFFFF, 0x043007FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFF0, 0x23FFFFFF, 0xFF010000, 0xF806FFC3,
+ 0xFFF99FE0, 0x23C5FDFF, 0xB0004000, 0x0003FFC3,
+ 0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001CFFC0,
+ 0xFFFBBFE0, 0x23EDFDFF, 0x00010000, 0x0000FFC3,
+ 0xFFF99FE0, 0x23EDFDFF, 0xB0000000, 0x0002FFC3,
+ 0xD63DC7E8, 0x03FFC718, 0x00010000, 0x0000FFC0,
+ 0xFFFDDFE0, 0x23EFFDFF, 0x03000000, 0x0000FFC3,
+ 0xFFFDDFE0, 0x23EFFDFF, 0x40000000, 0x0000FFC3,
+ 0xFFFDDFE0, 0x23FFFDFF, 0x00000000, 0xFC00FFC3,
+ 0xFC7FFFE0, 0x2FFBFFFF, 0x0000007F, 0x00000000,
+ 0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FBF, 0x00000000,
+ 0xFEF02596, 0x200DECAE, 0x33FF005F, 0x00000000,
+ 0x00000001, 0x000003FF, 0xFFFFFEFF, 0x00001FFF,
+ 0x00000F00, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x800007FF, 0x3C3F03FF, 0xFFE1C062,
+ 0x03FF4003, 0xFFFFFFFF, 0xFFFF003F, 0x17FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x83FFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF07, 0xFFFFFFFF, 0x03FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3D7F3DFF, 0xFFFFFFFF,
+ 0xFFFF3DFF, 0x7F3DFFFF, 0xFF7FFF3D, 0xFFFFFFFF,
+ 0xFF3DFFFF, 0xFFFFFFFF, 0x07FFFFFF, 0x00000000,
+ 0x0000FFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x001FFFFF,
+ 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x007F9FFF,
+ 0x07FFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0x0001C7FF,
+ 0x0003DFFF, 0x0003FFFF, 0x0003FFFF, 0x0001DFFF,
+ 0xFFFFFFFF, 0x000FFFFF, 0x10800000, 0x000003FF,
+ 0x03FF0000, 0xFFFFFFFF, 0xFFFFFFFF, 0x00FFFFFF,
+ 0xFFFFFFFF, 0x000005FF, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0x00000000, 0xFFFFFFC0, 0x001F3FFF,
+ 0xFFFFFFFF, 0x000003FF, 0x03FF00FE, 0x00000000,
+ 0x007FFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFE0, 0x000FFFFF, 0x03FF0FE0, 0x00000000,
+ 0xFFFFFFF8, 0x03FFC001, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x0000000F, 0xFFFFE3FF, 0x3FFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
+ 0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x80020000,
+ 0x001F0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3E2FFC84, 0xF3FFBF50, 0x000043E0, 0xFFFFFFFF,
+ 0x000001FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xF0000000, 0xFFFFFFFF, 0xFFFFFFFF, 0x000003FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF7FFF, 0x7FFFFFFF, 0x3FFEFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000001F,
+ 0xFFFFFFFF, 0xFFFF003F, 0xFFFFFFFF, 0x0000803F,
+ 0x007FFFFF, 0x7F7F7F7F, 0x7F7F7F7F, 0x00000000,
+ 0x00000000, 0x00008000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x000000E0, 0x1F3E03FE, 0xFFFFFFFE, 0xFFFFFFFF,
+ 0xE07FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0xF7FFFFFF,
+ 0xFFFFFFE0, 0xFFFE3FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00007FFF, 0x00FFFFFF, 0x00000000, 0xFFFF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x003FFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00001FFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFF1FFF, 0x00000FFF, 0xFFFFFFFF, 0x80007FFC,
+ 0x00FFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF800000, 0xFFFFFFFC, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000019FF, 0x00000000, 0x00000000, 0xF8000000,
+ 0xFFFFF7BB, 0x00000007, 0xFFFFFFFF, 0x000FFFFF,
+ 0xFFFFFFFC, 0x000FFFFF, 0x03FF0000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF003F, 0x0000007F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x000001FF, 0x03FF0FF7, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFF3FFF, 0xFFFFFFFF, 0xFFFF07FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, 0x00000000,
+ 0xA0F8007F, 0x5F7FFDFF, 0xFFFFFFDB, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0003FFFF, 0xFFF80000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x3FFFFFFF, 0xFFFF0000, 0xFFFFFFFF,
+ 0xFFFCFFFF, 0xFFFFFFFF, 0x000000FF, 0x0FFF0000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFDF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x1FFFFFFF,
+ 0x03FF0000, 0x07FFFFFE, 0x07FFFFFE, 0xFFFFFFC0,
+ 0xFFFFFFFF, 0x7FFFFFFF, 0x1CFCFCFC, 0x00000000,
+ 0xFFFFEFFF, 0xB7FFFF7F, 0x3FFF3FFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x07FFFFFF,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0x001FFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0xFFFFFFFF, 0x0001FFFF, 0x00000000,
+ 0x7FFFFFFF, 0xFFFF0000, 0x000007FF, 0x00000000,
+ 0x3FFFFFFF, 0xFFFFFFFF, 0x003EFF0F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x000003FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFD3F, 0x91BFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x003FFFFF, 0x03FFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFEEF0001, 0x000FFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00007FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000007,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFDFFFFF, 0xFFFFFFFF,
+ 0xDFFFFFFF, 0xEBFFDE64, 0xFFFFFFEF, 0xFFFFFFFF,
+ 0xDFDFE7BF, 0x7BFFFFFF, 0xFFFDFC5F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF3F, 0xF7FFFFFD, 0xF7FFFFFF,
+ 0xFFDFFFFF, 0xFFDFFFFF, 0xFFFF7FFF, 0xFFFF7FFF,
+ 0xFFFFFDFF, 0xFFFFFDFF, 0xFFFFCFF7, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/ctype_alpha.c b/lib/unictype/ctype_alpha.c
new file mode 100644
index 00000000..4ca6e996
--- /dev/null
+++ b/lib/unictype/ctype_alpha.c
@@ -0,0 +1,32 @@
+/* ISO C <ctype.h> like properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_is_alpha table. */
+#include "ctype_alpha.h"
+
+bool
+uc_is_alpha (ucs4_t uc)
+{
+ return bitmap_lookup (&u_is_alpha, uc);
+}
diff --git a/lib/unictype/ctype_alpha.h b/lib/unictype/ctype_alpha.h
new file mode 100644
index 00000000..087c7d5b
--- /dev/null
+++ b/lib/unictype/ctype_alpha.h
@@ -0,0 +1,588 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* ISO C <ctype.h> like properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[3];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[44 << 4];
+ }
+u_is_alpha =
+{
+ { 3 },
+ {
+ 4 * sizeof (int) / sizeof (short) + 0,
+ 4 * sizeof (int) / sizeof (short) + 128,
+ 4 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ 4 + 384 * sizeof (short) / sizeof (int) + 0,
+ 4 + 384 * sizeof (short) / sizeof (int) + 16,
+ 4 + 384 * sizeof (short) / sizeof (int) + 32,
+ 4 + 384 * sizeof (short) / sizeof (int) + 48,
+ 4 + 384 * sizeof (short) / sizeof (int) + 64,
+ 4 + 384 * sizeof (short) / sizeof (int) + 80,
+ 4 + 384 * sizeof (short) / sizeof (int) + 96,
+ 4 + 384 * sizeof (short) / sizeof (int) + 112,
+ 4 + 384 * sizeof (short) / sizeof (int) + 128,
+ 4 + 384 * sizeof (short) / sizeof (int) + 144,
+ 4 + 384 * sizeof (short) / sizeof (int) + 160,
+ 4 + 384 * sizeof (short) / sizeof (int) + 176,
+ 4 + 384 * sizeof (short) / sizeof (int) + 192,
+ 4 + 384 * sizeof (short) / sizeof (int) + 208,
+ 4 + 384 * sizeof (short) / sizeof (int) + 224,
+ 4 + 384 * sizeof (short) / sizeof (int) + 240,
+ 4 + 384 * sizeof (short) / sizeof (int) + 256,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 272,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 352,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 368,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 384,
+ 4 + 384 * sizeof (short) / sizeof (int) + 400,
+ 4 + 384 * sizeof (short) / sizeof (int) + 416,
+ 4 + 384 * sizeof (short) / sizeof (int) + 432,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 448,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 464,
+ 4 + 384 * sizeof (short) / sizeof (int) + 480,
+ 4 + 384 * sizeof (short) / sizeof (int) + 496,
+ 4 + 384 * sizeof (short) / sizeof (int) + 512,
+ 4 + 384 * sizeof (short) / sizeof (int) + 528,
+ 4 + 384 * sizeof (short) / sizeof (int) + 544,
+ 4 + 384 * sizeof (short) / sizeof (int) + 560,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 576,
+ 4 + 384 * sizeof (short) / sizeof (int) + 592,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 608,
+ 4 + 384 * sizeof (short) / sizeof (int) + 624,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 640,
+ 4 + 384 * sizeof (short) / sizeof (int) + 656,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 672,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 688,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x07FFFFFE, 0x07FFFFFE,
+ 0x00000000, 0x04200400, 0xFF7FFFFF, 0xFF7FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0003FFC3, 0x0000501F,
+ 0x00000000, 0x00000000, 0x00000020, 0x3CDF0000,
+ 0xFFFFD740, 0xFFFFFFFB, 0xFFFFFFFF, 0xFFBFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFC03, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFE000F, 0x027FFFFF, 0xFFFFFFFE,
+ 0x000000FF, 0x00000000, 0xFFFF0000, 0x000707FF,
+ 0x00000000, 0xFFFFFFFE, 0x000007FF, 0xFFFEC3FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x002FFFFF, 0x9FFFC060,
+ 0xFFFD0000, 0x0000FFFF, 0xFFFFE000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0002003F, 0xFFFFFFFF, 0x043007FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFF0, 0x23FFFFFF, 0xFF010000, 0xF806FFC3,
+ 0xFFF99FE0, 0x23C5FDFF, 0xB0004000, 0x0003FFC3,
+ 0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001CFFC0,
+ 0xFFFBBFE0, 0x23EDFDFF, 0x00010000, 0x0000FFC3,
+ 0xFFF99FE0, 0x23EDFDFF, 0xB0000000, 0x0002FFC3,
+ 0xD63DC7E8, 0x03FFC718, 0x00010000, 0x0000FFC0,
+ 0xFFFDDFE0, 0x23EFFDFF, 0x03000000, 0x0000FFC3,
+ 0xFFFDDFE0, 0x23EFFDFF, 0x40000000, 0x0000FFC3,
+ 0xFFFDDFE0, 0x23FFFDFF, 0x00000000, 0xFC00FFC3,
+ 0xFC7FFFE0, 0x2FFBFFFF, 0x0000007F, 0x00000000,
+ 0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FBF, 0x00000000,
+ 0xFEF02596, 0x200DECAE, 0x33FF005F, 0x00000000,
+ 0x00000001, 0x000003FF, 0xFFFFFEFF, 0x00001FFF,
+ 0x00000F00, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x800007FF, 0x3C3F03FF, 0xFFE1C062,
+ 0x03FF4003, 0xFFFFFFFF, 0xFFFF003F, 0x17FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x83FFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF07, 0xFFFFFFFF, 0x03FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3D7F3DFF, 0xFFFFFFFF,
+ 0xFFFF3DFF, 0x7F3DFFFF, 0xFF7FFF3D, 0xFFFFFFFF,
+ 0xFF3DFFFF, 0xFFFFFFFF, 0x07FFFFFF, 0x00000000,
+ 0x0000FFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x001FFFFF,
+ 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x007F9FFF,
+ 0x07FFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0x0001C7FF,
+ 0x0003DFFF, 0x0003FFFF, 0x0003FFFF, 0x0001DFFF,
+ 0xFFFFFFFF, 0x000FFFFF, 0x10800000, 0x000003FF,
+ 0x03FF0000, 0xFFFFFFFF, 0xFFFFFFFF, 0x00FFFFFF,
+ 0xFFFFFFFF, 0x000005FF, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0x00000000, 0xFFFFFFC0, 0x001F3FFF,
+ 0xFFFFFFFF, 0x000003FF, 0x03FF00FE, 0x00000000,
+ 0x007FFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFE0, 0x000FFFFF, 0x03FF0FE0, 0x00000000,
+ 0xFFFFFFF8, 0x03FFC001, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x0000000F, 0xFFFFE3FF, 0x3FFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
+ 0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x80020000,
+ 0x001F0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3E2FFC84, 0xF3FFBF50, 0x000043E0, 0xFFFFFFFF,
+ 0x000001FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xF0000000, 0xFFFFFFFF, 0xFFFFFFFF, 0x000003FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF7FFF, 0x7FFFFFFF, 0x3FFEFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000001F,
+ 0xFFFFFFFF, 0xFFFF003F, 0xFFFFFFFF, 0x0000803F,
+ 0x007FFFFF, 0x7F7F7F7F, 0x7F7F7F7F, 0x00000000,
+ 0x00000000, 0x00008000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x000000E0, 0x1F3E03FE, 0xFFFFFFFE, 0xFFFFFFFF,
+ 0xE07FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0xF7FFFFFF,
+ 0xFFFFFFE0, 0xFFFE3FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00007FFF, 0x00FFFFFF, 0x00000000, 0xFFFF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x003FFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00001FFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFF1FFF, 0x00000FFF, 0xFFFFFFFF, 0x80007FFC,
+ 0x00FFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF800000, 0xFFFFFFFC, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000019FF, 0x00000000, 0x00000000, 0xF8000000,
+ 0xFFFFF7BB, 0x00000007, 0xFFFFFFFF, 0x000FFFFF,
+ 0xFFFFFFFC, 0x000FFFFF, 0x03FF0000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF003F, 0x0000007F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x000001FF, 0x03FF0FF7, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFF3FFF, 0xFFFFFFFF, 0xFFFF07FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, 0x00000000,
+ 0xA0F8007F, 0x5F7FFDFF, 0xFFFFFFDB, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0003FFFF, 0xFFF80000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x3FFFFFFF, 0xFFFF0000, 0xFFFFFFFF,
+ 0xFFFCFFFF, 0xFFFFFFFF, 0x000000FF, 0x0FFF0000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFDF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x1FFFFFFF,
+ 0x03FF0000, 0x07FFFFFE, 0x07FFFFFE, 0xFFFFFFC0,
+ 0xFFFFFFFF, 0x7FFFFFFF, 0x1CFCFCFC, 0x00000000,
+ 0xFFFFEFFF, 0xB7FFFF7F, 0x3FFF3FFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x07FFFFFF,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0x001FFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0xFFFFFFFF, 0x0001FFFF, 0x00000000,
+ 0x7FFFFFFF, 0xFFFF0000, 0x000007FF, 0x00000000,
+ 0x3FFFFFFF, 0xFFFFFFFF, 0x003EFF0F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x000003FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFD3F, 0x91BFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x003FFFFF, 0x03FFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFEEF0001, 0x000FFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00007FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000007,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFDFFFFF, 0xFFFFFFFF,
+ 0xDFFFFFFF, 0xEBFFDE64, 0xFFFFFFEF, 0xFFFFFFFF,
+ 0xDFDFE7BF, 0x7BFFFFFF, 0xFFFDFC5F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF3F, 0xF7FFFFFD, 0xF7FFFFFF,
+ 0xFFDFFFFF, 0xFFDFFFFF, 0xFFFF7FFF, 0xFFFF7FFF,
+ 0xFFFFFDFF, 0xFFFFFDFF, 0xFFFFCFF7, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/ctype_blank.c b/lib/unictype/ctype_blank.c
new file mode 100644
index 00000000..7e5e44f7
--- /dev/null
+++ b/lib/unictype/ctype_blank.c
@@ -0,0 +1,32 @@
+/* ISO C <ctype.h> like properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_is_blank table. */
+#include "ctype_blank.h"
+
+bool
+uc_is_blank (ucs4_t uc)
+{
+ return bitmap_lookup (&u_is_blank, uc);
+}
diff --git a/lib/unictype/ctype_blank.h b/lib/unictype/ctype_blank.h
new file mode 100644
index 00000000..0506e469
--- /dev/null
+++ b/lib/unictype/ctype_blank.h
@@ -0,0 +1,172 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* ISO C <ctype.h> like properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[5 << 4];
+ }
+u_is_blank =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -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
+ },
+ {
+ 0x00000200, 0x00000001, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00004000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000077F, 0x00000000, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/ctype_cntrl.c b/lib/unictype/ctype_cntrl.c
new file mode 100644
index 00000000..8d9b148c
--- /dev/null
+++ b/lib/unictype/ctype_cntrl.c
@@ -0,0 +1,32 @@
+/* ISO C <ctype.h> like properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_is_cntrl table. */
+#include "ctype_cntrl.h"
+
+bool
+uc_is_cntrl (ucs4_t uc)
+{
+ return bitmap_lookup (&u_is_cntrl, uc);
+}
diff --git a/lib/unictype/ctype_cntrl.h b/lib/unictype/ctype_cntrl.h
new file mode 100644
index 00000000..e911b0d4
--- /dev/null
+++ b/lib/unictype/ctype_cntrl.h
@@ -0,0 +1,160 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* ISO C <ctype.h> like properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[2 << 4];
+ }
+u_is_cntrl =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 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
+ },
+ {
+ 0xFFFFFFFF, 0x00000000, 0x00000000, 0x80000000,
+ 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000300, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/ctype_digit.c b/lib/unictype/ctype_digit.c
new file mode 100644
index 00000000..b18d9204
--- /dev/null
+++ b/lib/unictype/ctype_digit.c
@@ -0,0 +1,32 @@
+/* ISO C <ctype.h> like properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_is_digit table. */
+#include "ctype_digit.h"
+
+bool
+uc_is_digit (ucs4_t uc)
+{
+ return bitmap_lookup (&u_is_digit, uc);
+}
diff --git a/lib/unictype/ctype_digit.h b/lib/unictype/ctype_digit.h
new file mode 100644
index 00000000..82d7d2c4
--- /dev/null
+++ b/lib/unictype/ctype_digit.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* ISO C <ctype.h> like properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_is_digit =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0x00000000, 0x03FF0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/ctype_graph.c b/lib/unictype/ctype_graph.c
new file mode 100644
index 00000000..3c0ae118
--- /dev/null
+++ b/lib/unictype/ctype_graph.c
@@ -0,0 +1,32 @@
+/* ISO C <ctype.h> like properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_is_graph table. */
+#include "ctype_graph.h"
+
+bool
+uc_is_graph (ucs4_t uc)
+{
+ return bitmap_lookup (&u_is_graph, uc);
+}
diff --git a/lib/unictype/ctype_graph.h b/lib/unictype/ctype_graph.h
new file mode 100644
index 00000000..0a00010f
--- /dev/null
+++ b/lib/unictype/ctype_graph.h
@@ -0,0 +1,890 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* ISO C <ctype.h> like properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[17];
+ short level2[5 << 7];
+ /*unsigned*/ int level3[52 << 4];
+ }
+u_is_graph =
+{
+ { 17 },
+ {
+ 18 * sizeof (int) / sizeof (short) + 0,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 512,
+ 18 * sizeof (int) / sizeof (short) + 512
+ },
+ {
+ 18 + 640 * sizeof (short) / sizeof (int) + 0,
+ 18 + 640 * sizeof (short) / sizeof (int) + 16,
+ 18 + 640 * sizeof (short) / sizeof (int) + 32,
+ 18 + 640 * sizeof (short) / sizeof (int) + 48,
+ 18 + 640 * sizeof (short) / sizeof (int) + 64,
+ 18 + 640 * sizeof (short) / sizeof (int) + 80,
+ 18 + 640 * sizeof (short) / sizeof (int) + 96,
+ 18 + 640 * sizeof (short) / sizeof (int) + 112,
+ 18 + 640 * sizeof (short) / sizeof (int) + 128,
+ 18 + 640 * sizeof (short) / sizeof (int) + 144,
+ 18 + 640 * sizeof (short) / sizeof (int) + 160,
+ 18 + 640 * sizeof (short) / sizeof (int) + 176,
+ 18 + 640 * sizeof (short) / sizeof (int) + 192,
+ 18 + 640 * sizeof (short) / sizeof (int) + 208,
+ 18 + 640 * sizeof (short) / sizeof (int) + 224,
+ 18 + 640 * sizeof (short) / sizeof (int) + 240,
+ 18 + 640 * sizeof (short) / sizeof (int) + 256,
+ 18 + 640 * sizeof (short) / sizeof (int) + 272,
+ 18 + 640 * sizeof (short) / sizeof (int) + 288,
+ 18 + 640 * sizeof (short) / sizeof (int) + 304,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 336,
+ 18 + 640 * sizeof (short) / sizeof (int) + 352,
+ 18 + 640 * sizeof (short) / sizeof (int) + 368,
+ 18 + 640 * sizeof (short) / sizeof (int) + 384,
+ 18 + 640 * sizeof (short) / sizeof (int) + 400,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 416,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 432,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 448,
+ 18 + 640 * sizeof (short) / sizeof (int) + 464,
+ 18 + 640 * sizeof (short) / sizeof (int) + 480,
+ 18 + 640 * sizeof (short) / sizeof (int) + 496,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 528,
+ 18 + 640 * sizeof (short) / sizeof (int) + 544,
+ 18 + 640 * sizeof (short) / sizeof (int) + 560,
+ 18 + 640 * sizeof (short) / sizeof (int) + 576,
+ 18 + 640 * sizeof (short) / sizeof (int) + 592,
+ 18 + 640 * sizeof (short) / sizeof (int) + 608,
+ -1,
+ 18 + 640 * sizeof (short) / sizeof (int) + 624,
+ 18 + 640 * sizeof (short) / sizeof (int) + 640,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 656,
+ 18 + 640 * sizeof (short) / sizeof (int) + 672,
+ -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,
+ 18 + 640 * sizeof (short) / sizeof (int) + 688,
+ 18 + 640 * sizeof (short) / sizeof (int) + 704,
+ 18 + 640 * sizeof (short) / sizeof (int) + 720,
+ 18 + 640 * sizeof (short) / sizeof (int) + 736,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 640 * sizeof (short) / sizeof (int) + 752,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 768,
+ -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,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 784,
+ -1,
+ -1,
+ 18 + 640 * sizeof (short) / sizeof (int) + 800,
+ -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,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 816
+ },
+ {
+ 0x00000000, 0xFFFFFFFE, 0xFFFFFFFF, 0x7FFFFFFF,
+ 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7CFFFFFF,
+ 0xFFFFD7F0, 0xFFFFFFFB, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFE000F, 0xFE7FFFFF, 0xFFFFFFFE,
+ 0xFFFE06FF, 0xFFFFFFFF, 0xFFFF00FF, 0x001F07FF,
+ 0xCFFFFFCF, 0xFFFFFFFE, 0x7FFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFBFFF, 0xFFFFFFFF, 0xFFFFE7FF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0003FFFF, 0xFFFFFFFF, 0x07FFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFE, 0xF3FFFFFF, 0xFF1F3FFF, 0xF807FFFF,
+ 0xFFF99FEE, 0xF3C5FDFF, 0xB080799F, 0x07FFFFCF,
+ 0xFFF987EE, 0xD36DFDFF, 0x5E023987, 0x003FFFC0,
+ 0xFFFBBFEE, 0xF3EDFDFF, 0x00013BBF, 0x0002FFCF,
+ 0xFFF99FEE, 0xF3EDFDFF, 0xB0C0399F, 0x0003FFCF,
+ 0xD63DC7EC, 0xC3FFC718, 0x00813DC7, 0x07FFFFC0,
+ 0xFFFDDFEE, 0xE3EFFDFF, 0x03603DDF, 0xFF00FFCF,
+ 0xFFFDDFEC, 0xF3EFFDFF, 0x40603DDF, 0x0006FFCF,
+ 0xFFFDDFEC, 0xE3FFFDFF, 0x00803DDF, 0xFE3FFFCF,
+ 0xFC7FFFEC, 0x2FFBFFFF, 0xFF5F847F, 0x001C0000,
+ 0xFFFFFFFE, 0x87FFFFFF, 0x0FFFFFFF, 0x00000000,
+ 0xFEF02596, 0x3BFFECAE, 0x33FF3F5F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFEFF, 0xFFFE1FFF,
+ 0xFEFF0FFF, 0xDFFFFFFF, 0x001FDFFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xC3FFFFFF, 0xFFFFFFFF, 0xFFFF003F, 0x1FFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x83FFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF07, 0xFFFFFFFF, 0x03FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3D7F3DFF, 0xFFFFFFFF,
+ 0xFFFF3DFF, 0x7F3DFFFF, 0xFF7FFF3D, 0xFFFFFFFF,
+ 0xFF3DFFFF, 0xFFFFFFFF, 0x87FFFFFF, 0x1FFFFFFF,
+ 0x03FFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x001FFFFF,
+ 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF,
+ 0x1FFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0x0001FFFF,
+ 0x001FDFFF, 0x007FFFFF, 0x000FFFFF, 0x000DDFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF, 0x03FF03FF,
+ 0x03FF3FFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00FFFFFF,
+ 0xFFFFFFFF, 0x000007FF, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0x0FFF0FFF, 0xFFFFFFF1, 0x001F3FFF,
+ 0xFFFFFFFF, 0xFFFF03FF, 0xC3FF03FF, 0xFFFFFFFF,
+ 0xCFFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF0FFF, 0x1FFFFFFF,
+ 0xFFFFFFFF, 0x03FFC7FF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xF8FFFFFF, 0xFFFFE3FF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xC000007F,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
+ 0xFFFFFFFF, 0xFFDFFFFF, 0xEFCFFFDF, 0x7FDCFFFF,
+ 0xFFFFF880, 0xFFFFFCFF, 0x7FFFFFFF, 0xFFF3FC1F,
+ 0x001F7FFF, 0x003FFFFF, 0xFFFF0000, 0x0001FFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF8FFFF, 0xFFFFFFFF,
+ 0xFFFF01FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x000000FF,
+ 0xFFFFFFFF, 0x0000007F, 0x000007FF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x1FFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFFFF3DE, 0xFFFFFEFF, 0x7F47AFFF, 0xFFFFFFFE,
+ 0xFF1FFFFF, 0x7FFEFFFF, 0xFFFF17FF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x001F1FFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF7FFF, 0x7FFFFFFF, 0x3FFEFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFE0007FF,
+ 0xFFFFFFFF, 0xFFFF003F, 0xFFFFFFFF, 0x0000803F,
+ 0x007FFFFF, 0x7F7F7F7F, 0x7F7F7F7F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0001FFFF, 0x00000000, 0x00000000,
+ 0xFBFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x000FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x003FFFFF, 0x0FFF0000,
+ 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFE, 0xFFFFFFFF,
+ 0xFE7FFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFE0, 0xFFFE3FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFF7FFF, 0x00FFFFFF, 0xFFFFFFFF, 0xFFFF000F,
+ 0x7FFFFFFF, 0xFFFFFFFF, 0xFFFF000F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x003FFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFF1FFF, 0xFFFFFFFF, 0x0000007F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x00000FFF, 0xFFFFFFFF, 0xF00FFFFC,
+ 0x00FFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00001FFF, 0x00000000, 0x00000000, 0xF8000000,
+ 0xFFFFFFFF, 0x00000FFF, 0xFFFFFFFF, 0x00FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFC01F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x800FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x007FFFFF, 0xF3FF3FFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF3FFF, 0xFFFFFFFF, 0xFFFF07FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, 0x00000000,
+ 0xE0F8007F, 0x5F7FFFFF, 0xFFFFFFDB, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0003FFFF, 0xFFF80000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF0000, 0xFFFFFFFF,
+ 0xFFFCFFFF, 0xFFFFFFFF, 0x000000FF, 0x3FFF0000,
+ 0x03FFFFFF, 0xFFFF007F, 0xFFF7FFFF, 0xFFDF0F7F,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x9FFFFFFF,
+ 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x7FFFFFFF, 0x1CFCFCFC, 0x3E007F7F,
+ 0xFFFFEFFF, 0xB7FFFF7F, 0x3FFF3FFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x07FFFFFF,
+ 0xFFFFFF87, 0xFF8FFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x0FFF07FF, 0x00000000, 0xFFFF0000, 0x3FFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0xFFFFFFFF, 0x0001FFFF, 0x00000000,
+ 0x7FFFFFFF, 0xFFFF000F, 0x000007FF, 0x00000000,
+ 0xBFFFFFFF, 0xFFFFFFFF, 0x003FFF0F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x000003FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFD3F, 0x91BFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x83FFFFFF, 0x83FFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFEEFF06F, 0x870FFFFF, 0x01FF00FF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00007FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x000F0007,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x003FFFFF,
+ 0xFFFFFFFF, 0xFFFFFE7F, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x0003FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFDFFFFF, 0xFFFFFFFF,
+ 0xDFFFFFFF, 0xEBFFDE64, 0xFFFFFFEF, 0xFFFFFFFF,
+ 0xDFDFE7BF, 0x7BFFFFFF, 0xFFFDFC5F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF3F, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFCFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFF0FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000FFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000002, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF
+ }
+};
diff --git a/lib/unictype/ctype_lower.c b/lib/unictype/ctype_lower.c
new file mode 100644
index 00000000..1bc84344
--- /dev/null
+++ b/lib/unictype/ctype_lower.c
@@ -0,0 +1,32 @@
+/* ISO C <ctype.h> like properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_is_lower table. */
+#include "ctype_lower.h"
+
+bool
+uc_is_lower (ucs4_t uc)
+{
+ return bitmap_lookup (&u_is_lower, uc);
+}
diff --git a/lib/unictype/ctype_lower.h b/lib/unictype/ctype_lower.h
new file mode 100644
index 00000000..32f602c9
--- /dev/null
+++ b/lib/unictype/ctype_lower.h
@@ -0,0 +1,327 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* ISO C <ctype.h> like properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[11 << 4];
+ }
+u_is_lower =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x07FFFFFE,
+ 0x00000000, 0x00200000, 0x80000000, 0xFF7FFFFF,
+ 0xAAAAAAAA, 0x54AAAAAA, 0xAAAAA955, 0xD4AAAAAA,
+ 0x46241129, 0xA251212A, 0xB5555B60, 0xAA2CAAAA,
+ 0xAAAAAAAA, 0x100AAAA8, 0x0ADBAA84, 0x20268B09,
+ 0x00041F09, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000020, 0x388A0000,
+ 0x00000000, 0xFFFEF000, 0xAAE37FFF, 0x0927AAAA,
+ 0x00000000, 0xFFFF0000, 0xFFFFFFFF, 0xAAAAAAAA,
+ 0xAAAAA802, 0xAAAAAAAA, 0xAAAAD554, 0xAAAAAAAA,
+ 0xAAAAAAAA, 0x0000000A, 0x00000000, 0xFFFFFFFE,
+ 0x0000007F, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x22000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA,
+ 0x082AAAAA, 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA,
+ 0x003F00FF, 0x00FF00FF, 0x00AA003F, 0x3FFF00FF,
+ 0x00FF00FF, 0x400B00FF, 0x00030008, 0x00080023,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00004000, 0xFFFF0000,
+ 0x00000010, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFF0000, 0x000003FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFF0000, 0x7FFFFFFF, 0x00481562,
+ 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA, 0x0000000A,
+ 0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xAAAAAAAA, 0x00002AA8,
+ 0x00AAAAAA, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xAAA8AAA8, 0xAAAAAAAA, 0x9400AAAA,
+ 0x000010AA, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x07FFFFFE, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFFFF00, 0x0000FFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/ctype_print.c b/lib/unictype/ctype_print.c
new file mode 100644
index 00000000..14238015
--- /dev/null
+++ b/lib/unictype/ctype_print.c
@@ -0,0 +1,32 @@
+/* ISO C <ctype.h> like properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_is_print table. */
+#include "ctype_print.h"
+
+bool
+uc_is_print (ucs4_t uc)
+{
+ return bitmap_lookup (&u_is_print, uc);
+}
diff --git a/lib/unictype/ctype_print.h b/lib/unictype/ctype_print.h
new file mode 100644
index 00000000..73df0b9d
--- /dev/null
+++ b/lib/unictype/ctype_print.h
@@ -0,0 +1,890 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* ISO C <ctype.h> like properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[17];
+ short level2[5 << 7];
+ /*unsigned*/ int level3[52 << 4];
+ }
+u_is_print =
+{
+ { 17 },
+ {
+ 18 * sizeof (int) / sizeof (short) + 0,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 512,
+ 18 * sizeof (int) / sizeof (short) + 512
+ },
+ {
+ 18 + 640 * sizeof (short) / sizeof (int) + 0,
+ 18 + 640 * sizeof (short) / sizeof (int) + 16,
+ 18 + 640 * sizeof (short) / sizeof (int) + 32,
+ 18 + 640 * sizeof (short) / sizeof (int) + 48,
+ 18 + 640 * sizeof (short) / sizeof (int) + 64,
+ 18 + 640 * sizeof (short) / sizeof (int) + 80,
+ 18 + 640 * sizeof (short) / sizeof (int) + 96,
+ 18 + 640 * sizeof (short) / sizeof (int) + 112,
+ 18 + 640 * sizeof (short) / sizeof (int) + 128,
+ 18 + 640 * sizeof (short) / sizeof (int) + 144,
+ 18 + 640 * sizeof (short) / sizeof (int) + 160,
+ 18 + 640 * sizeof (short) / sizeof (int) + 176,
+ 18 + 640 * sizeof (short) / sizeof (int) + 192,
+ 18 + 640 * sizeof (short) / sizeof (int) + 208,
+ 18 + 640 * sizeof (short) / sizeof (int) + 224,
+ 18 + 640 * sizeof (short) / sizeof (int) + 240,
+ 18 + 640 * sizeof (short) / sizeof (int) + 256,
+ 18 + 640 * sizeof (short) / sizeof (int) + 272,
+ 18 + 640 * sizeof (short) / sizeof (int) + 288,
+ 18 + 640 * sizeof (short) / sizeof (int) + 304,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 336,
+ 18 + 640 * sizeof (short) / sizeof (int) + 352,
+ 18 + 640 * sizeof (short) / sizeof (int) + 368,
+ 18 + 640 * sizeof (short) / sizeof (int) + 384,
+ 18 + 640 * sizeof (short) / sizeof (int) + 400,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 416,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 432,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 448,
+ 18 + 640 * sizeof (short) / sizeof (int) + 464,
+ 18 + 640 * sizeof (short) / sizeof (int) + 480,
+ 18 + 640 * sizeof (short) / sizeof (int) + 496,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 512,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 528,
+ 18 + 640 * sizeof (short) / sizeof (int) + 544,
+ 18 + 640 * sizeof (short) / sizeof (int) + 560,
+ 18 + 640 * sizeof (short) / sizeof (int) + 576,
+ 18 + 640 * sizeof (short) / sizeof (int) + 592,
+ 18 + 640 * sizeof (short) / sizeof (int) + 608,
+ -1,
+ 18 + 640 * sizeof (short) / sizeof (int) + 624,
+ 18 + 640 * sizeof (short) / sizeof (int) + 640,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 656,
+ 18 + 640 * sizeof (short) / sizeof (int) + 672,
+ -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,
+ 18 + 640 * sizeof (short) / sizeof (int) + 688,
+ 18 + 640 * sizeof (short) / sizeof (int) + 704,
+ 18 + 640 * sizeof (short) / sizeof (int) + 720,
+ 18 + 640 * sizeof (short) / sizeof (int) + 736,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 640 * sizeof (short) / sizeof (int) + 752,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 768,
+ -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,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 784,
+ -1,
+ -1,
+ 18 + 640 * sizeof (short) / sizeof (int) + 800,
+ -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,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 320,
+ 18 + 640 * sizeof (short) / sizeof (int) + 816
+ },
+ {
+ 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF,
+ 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7CFFFFFF,
+ 0xFFFFD7F0, 0xFFFFFFFB, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFE000F, 0xFE7FFFFF, 0xFFFFFFFE,
+ 0xFFFE06FF, 0xFFFFFFFF, 0xFFFF00FF, 0x001F07FF,
+ 0xCFFFFFCF, 0xFFFFFFFE, 0x7FFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFBFFF, 0xFFFFFFFF, 0xFFFFE7FF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0003FFFF, 0xFFFFFFFF, 0x07FFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFE, 0xF3FFFFFF, 0xFF1F3FFF, 0xF807FFFF,
+ 0xFFF99FEE, 0xF3C5FDFF, 0xB080799F, 0x07FFFFCF,
+ 0xFFF987EE, 0xD36DFDFF, 0x5E023987, 0x003FFFC0,
+ 0xFFFBBFEE, 0xF3EDFDFF, 0x00013BBF, 0x0002FFCF,
+ 0xFFF99FEE, 0xF3EDFDFF, 0xB0C0399F, 0x0003FFCF,
+ 0xD63DC7EC, 0xC3FFC718, 0x00813DC7, 0x07FFFFC0,
+ 0xFFFDDFEE, 0xE3EFFDFF, 0x03603DDF, 0xFF00FFCF,
+ 0xFFFDDFEC, 0xF3EFFDFF, 0x40603DDF, 0x0006FFCF,
+ 0xFFFDDFEC, 0xE3FFFDFF, 0x00803DDF, 0xFE3FFFCF,
+ 0xFC7FFFEC, 0x2FFBFFFF, 0xFF5F847F, 0x001C0000,
+ 0xFFFFFFFE, 0x87FFFFFF, 0x0FFFFFFF, 0x00000000,
+ 0xFEF02596, 0x3BFFECAE, 0x33FF3F5F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFEFF, 0xFFFE1FFF,
+ 0xFEFF0FFF, 0xDFFFFFFF, 0x001FDFFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xC3FFFFFF, 0xFFFFFFFF, 0xFFFF003F, 0x1FFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x83FFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF07, 0xFFFFFFFF, 0x03FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3D7F3DFF, 0xFFFFFFFF,
+ 0xFFFF3DFF, 0x7F3DFFFF, 0xFF7FFF3D, 0xFFFFFFFF,
+ 0xFF3DFFFF, 0xFFFFFFFF, 0x87FFFFFF, 0x1FFFFFFF,
+ 0x03FFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x001FFFFF,
+ 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF,
+ 0x1FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0001FFFF,
+ 0x001FDFFF, 0x007FFFFF, 0x000FFFFF, 0x000DDFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF, 0x03FF03FF,
+ 0x03FF7FFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00FFFFFF,
+ 0xFFFFFFFF, 0x000007FF, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0x0FFF0FFF, 0xFFFFFFF1, 0x001F3FFF,
+ 0xFFFFFFFF, 0xFFFF03FF, 0xC3FF03FF, 0xFFFFFFFF,
+ 0xCFFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF0FFF, 0x1FFFFFFF,
+ 0xFFFFFFFF, 0x03FFC7FF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xF8FFFFFF, 0xFFFFE3FF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xC000007F,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
+ 0xFFFFFFFF, 0xFFDFFFFF, 0xEFCFFFDF, 0x7FDCFFFF,
+ 0xFFFFFFFF, 0xFFFFFCFF, 0xFFFFFFFF, 0xFFF3FC1F,
+ 0x001F7FFF, 0x003FFFFF, 0xFFFF0000, 0x0001FFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF8FFFF, 0xFFFFFFFF,
+ 0xFFFF01FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x000000FF,
+ 0xFFFFFFFF, 0x0000007F, 0x000007FF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x1FFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFFFF3DE, 0xFFFFFEFF, 0x7F47AFFF, 0xFFFFFFFE,
+ 0xFF1FFFFF, 0x7FFEFFFF, 0xFFFF17FF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x001F1FFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF7FFF, 0x7FFFFFFF, 0x3FFEFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFE0007FF,
+ 0xFFFFFFFF, 0xFFFF003F, 0xFFFFFFFF, 0x0000803F,
+ 0x007FFFFF, 0x7F7F7F7F, 0x7F7F7F7F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0001FFFF, 0x00000000, 0x00000000,
+ 0xFBFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x000FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x003FFFFF, 0x0FFF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE, 0xFFFFFFFF,
+ 0xFE7FFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFE0, 0xFFFE3FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFF7FFF, 0x00FFFFFF, 0xFFFFFFFF, 0xFFFF000F,
+ 0x7FFFFFFF, 0xFFFFFFFF, 0xFFFF000F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x003FFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFF1FFF, 0xFFFFFFFF, 0x0000007F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x00000FFF, 0xFFFFFFFF, 0xF00FFFFC,
+ 0x00FFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00001FFF, 0x00000000, 0x00000000, 0xF8000000,
+ 0xFFFFFFFF, 0x00000FFF, 0xFFFFFFFF, 0x00FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFC01F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x800FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x007FFFFF, 0xF3FF3FFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF3FFF, 0xFFFFFFFF, 0xFFFF07FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, 0x00000000,
+ 0xE0F8007F, 0x5F7FFFFF, 0xFFFFFFDB, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0003FFFF, 0xFFF80000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF0000, 0xFFFFFFFF,
+ 0xFFFCFFFF, 0xFFFFFFFF, 0x000000FF, 0x3FFF0000,
+ 0x03FFFFFF, 0xFFFF007F, 0xFFF7FFFF, 0xFFDF0F7F,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x9FFFFFFF,
+ 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x7FFFFFFF, 0x1CFCFCFC, 0x3E007F7F,
+ 0xFFFFEFFF, 0xB7FFFF7F, 0x3FFF3FFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x07FFFFFF,
+ 0xFFFFFF87, 0xFF8FFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x0FFF07FF, 0x00000000, 0xFFFF0000, 0x3FFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0xFFFFFFFF, 0x0001FFFF, 0x00000000,
+ 0x7FFFFFFF, 0xFFFF000F, 0x000007FF, 0x00000000,
+ 0xBFFFFFFF, 0xFFFFFFFF, 0x003FFF0F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x000003FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFD3F, 0x91BFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x83FFFFFF, 0x83FFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFEEFF06F, 0x870FFFFF, 0x01FF00FF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00007FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x000F0007,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x003FFFFF,
+ 0xFFFFFFFF, 0xFFFFFE7F, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x0003FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFDFFFFF, 0xFFFFFFFF,
+ 0xDFFFFFFF, 0xEBFFDE64, 0xFFFFFFEF, 0xFFFFFFFF,
+ 0xDFDFE7BF, 0x7BFFFFFF, 0xFFFDFC5F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF3F, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFCFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFF0FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000FFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000002, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF
+ }
+};
diff --git a/lib/unictype/ctype_punct.c b/lib/unictype/ctype_punct.c
new file mode 100644
index 00000000..e6b79469
--- /dev/null
+++ b/lib/unictype/ctype_punct.c
@@ -0,0 +1,32 @@
+/* ISO C <ctype.h> like properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_is_punct table. */
+#include "ctype_punct.h"
+
+bool
+uc_is_punct (ucs4_t uc)
+{
+ return bitmap_lookup (&u_is_punct, uc);
+}
diff --git a/lib/unictype/ctype_punct.h b/lib/unictype/ctype_punct.h
new file mode 100644
index 00000000..ce4a0107
--- /dev/null
+++ b/lib/unictype/ctype_punct.h
@@ -0,0 +1,734 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* ISO C <ctype.h> like properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[17];
+ short level2[4 << 7];
+ /*unsigned*/ int level3[45 << 4];
+ }
+u_is_punct =
+{
+ { 17 },
+ {
+ 18 * sizeof (int) / sizeof (short) + 0,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 384
+ },
+ {
+ 18 + 512 * sizeof (short) / sizeof (int) + 0,
+ 18 + 512 * sizeof (short) / sizeof (int) + 16,
+ 18 + 512 * sizeof (short) / sizeof (int) + 32,
+ 18 + 512 * sizeof (short) / sizeof (int) + 48,
+ 18 + 512 * sizeof (short) / sizeof (int) + 64,
+ 18 + 512 * sizeof (short) / sizeof (int) + 80,
+ 18 + 512 * sizeof (short) / sizeof (int) + 96,
+ 18 + 512 * sizeof (short) / sizeof (int) + 112,
+ 18 + 512 * sizeof (short) / sizeof (int) + 128,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ -1,
+ 18 + 512 * sizeof (short) / sizeof (int) + 160,
+ 18 + 512 * sizeof (short) / sizeof (int) + 176,
+ 18 + 512 * sizeof (short) / sizeof (int) + 192,
+ 18 + 512 * sizeof (short) / sizeof (int) + 208,
+ 18 + 512 * sizeof (short) / sizeof (int) + 224,
+ 18 + 512 * sizeof (short) / sizeof (int) + 240,
+ 18 + 512 * sizeof (short) / sizeof (int) + 256,
+ 18 + 512 * sizeof (short) / sizeof (int) + 272,
+ 18 + 512 * sizeof (short) / sizeof (int) + 288,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 320,
+ 18 + 512 * sizeof (short) / sizeof (int) + 336,
+ 18 + 512 * sizeof (short) / sizeof (int) + 352,
+ 18 + 512 * sizeof (short) / sizeof (int) + 368,
+ 18 + 512 * sizeof (short) / sizeof (int) + 384,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 512 * sizeof (short) / sizeof (int) + 400,
+ -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,
+ 18 + 512 * sizeof (short) / sizeof (int) + 416,
+ 18 + 512 * sizeof (short) / sizeof (int) + 432,
+ 18 + 512 * sizeof (short) / sizeof (int) + 448,
+ 18 + 512 * sizeof (short) / sizeof (int) + 464,
+ -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,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 480,
+ 18 + 512 * sizeof (short) / sizeof (int) + 496,
+ 18 + 512 * sizeof (short) / sizeof (int) + 512,
+ 18 + 512 * sizeof (short) / sizeof (int) + 528,
+ 18 + 512 * sizeof (short) / sizeof (int) + 544,
+ 18 + 512 * sizeof (short) / sizeof (int) + 560,
+ -1,
+ -1,
+ 18 + 512 * sizeof (short) / sizeof (int) + 576,
+ 18 + 512 * sizeof (short) / sizeof (int) + 592,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 512 * sizeof (short) / sizeof (int) + 608,
+ -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,
+ 18 + 512 * sizeof (short) / sizeof (int) + 624,
+ 18 + 512 * sizeof (short) / sizeof (int) + 640,
+ -1,
+ 18 + 512 * sizeof (short) / sizeof (int) + 656,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 512 * sizeof (short) / sizeof (int) + 672,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 512 * sizeof (short) / sizeof (int) + 688,
+ -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,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 704
+ },
+ {
+ 0x00000000, 0xFC00FFFE, 0xF8000001, 0x78000001,
+ 0x00000000, 0xFBDFFBFF, 0x00800000, 0x00800000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFC003C, 0xFFFFAFE0,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFDF, 0x4020FFFF,
+ 0x000000B0, 0x00000000, 0x00000000, 0x00400000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x000003FC, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFC000000, 0x00000000,
+ 0xFFFE0600, 0xFFFFFFFF, 0x000000FF, 0x00180000,
+ 0xCFFFFFCF, 0x00000000, 0x7FFFF800, 0x00013C00,
+ 0x00000000, 0x00000000, 0xFFD00000, 0x60003F9F,
+ 0x0002BFFF, 0xFFFF0000, 0x000007FF, 0x00000000,
+ 0x00000000, 0x0001FFC0, 0x00000000, 0x03CFF800,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000000E, 0xD0000000, 0x001E3FFF, 0x0001003C,
+ 0x0000000E, 0xD0000000, 0x0080399F, 0x07FC000C,
+ 0x0000000E, 0xD0000000, 0x00023987, 0x00230000,
+ 0x0000000E, 0xD0000000, 0x00003BBF, 0x0002000C,
+ 0x0000000E, 0xD0000000, 0x00C0399F, 0x0001000C,
+ 0x00000004, 0xC0000000, 0x00803DC7, 0x07FF0000,
+ 0x0000000E, 0xC0000000, 0x00603DDF, 0xFF00000C,
+ 0x0000000C, 0xD0000000, 0x00603DDF, 0x0006000C,
+ 0x0000000C, 0xC0000000, 0x00803DDF, 0x023F000C,
+ 0x0000000C, 0x00000000, 0xFF5F8400, 0x001C0000,
+ 0x00000000, 0x80008000, 0x0C008040, 0x00000000,
+ 0x00000000, 0x1BF20000, 0x00003F00, 0x00000000,
+ 0xFFFFFFFE, 0xFFFFFC00, 0x00000000, 0xFFFE0000,
+ 0xFEFF00FF, 0xDFFFFFFF, 0x001FDFFF, 0x00000000,
+ 0x00000000, 0x7FFFF800, 0xC3C0FC00, 0x001E3F9D,
+ 0xC000BFFC, 0x00000000, 0x00000000, 0x08000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x80000000, 0x1FFFFFFF,
+ 0x03FF0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00006000,
+ 0x18000000, 0x00000000, 0x00000000, 0x00003800,
+ 0x001C0000, 0x007C0000, 0x000C0000, 0x000C0000,
+ 0x00000000, 0xFFF00000, 0x2F7FFFFF, 0x03FF0000,
+ 0x00003FFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000000, 0x0FFF0FFF, 0x00000031, 0x00000000,
+ 0x00000000, 0xFFFF0000, 0xC0000301, 0xFFFFFFFF,
+ 0xCF800000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000001F, 0xFFF00000, 0xFC00001F, 0x1FFFFFFF,
+ 0x00000007, 0x000007FE, 0x00000000, 0x00000000,
+ 0x00000000, 0xF8FFFFF0, 0x00000000, 0xC0000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0xC000007F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xA0000000, 0xE000E003, 0x6000E000,
+ 0xFFFFF880, 0xFFFFFCFF, 0x7FFFFFFF, 0x7FF1FC1F,
+ 0x00007FFF, 0x003FFFFF, 0xFFFF0000, 0x0001FFFF,
+ 0xC1D0037B, 0x0C0040AF, 0xFFF8BC1F, 0x00000000,
+ 0xFFFF0000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x000000FF,
+ 0xFFFFFFFF, 0x0000007F, 0x000007FF, 0xFFFFFFFF,
+ 0x0FFFFFFF, 0x00000000, 0x00000000, 0xFFFFFC00,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x1FFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFFFF3DE, 0xFFFFFEFF, 0x7F47AFFF, 0xFFFFFFFE,
+ 0xFF1FFFFF, 0x7FFEFFFF, 0xFFFF17FF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x001F1FFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFE0007E0,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x00017FFF, 0x00000000, 0x00000000,
+ 0xFBFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x000FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x003FFFFF, 0x0FFF0000,
+ 0xFFFFFF1E, 0xE0C1FC01, 0x00000000, 0x00000000,
+ 0x1E000000, 0x00000001, 0x00000000, 0x08000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFF0000, 0x00000000, 0xFFFFFFFF, 0x0000000F,
+ 0x7FFFFFFF, 0xFFFFFFFF, 0xFFFF000F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFF0000, 0xFFFFFFFF, 0x0000007F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000E000, 0x00000000, 0x00000000, 0x700F8000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x007FFFFF, 0x00000003, 0x00000000, 0x00000000,
+ 0x00000600, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000844, 0x00000FF8, 0x00000000, 0x00F00000,
+ 0x00000003, 0xFFF00000, 0x0000C01F, 0x00000000,
+ 0x00000000, 0x0000FFC0, 0x800FFF80, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x007FFE00, 0xF0003008, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x40000000, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xC0000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x30000000,
+ 0x03FFFFFF, 0xFFFF007F, 0xFFF7FFFF, 0x00000F7F,
+ 0x00000000, 0x00000000, 0x00000000, 0x80000000,
+ 0xFC00FFFE, 0xF8000001, 0xF8000001, 0x0000003F,
+ 0x00000000, 0x00000000, 0x00000000, 0x3E007F7F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFF87, 0xFF8FFFFF, 0x00000000, 0xFFE00000,
+ 0x0FFF07FF, 0x00000000, 0xFFFF0000, 0x3FFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x0000000F, 0x00000000, 0x00000000,
+ 0x80000000, 0x00000000, 0x00010000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x83C00000, 0x80000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000F06E, 0x87000000, 0x01FF00FF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000F0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x003FFFFF,
+ 0xFFFFFFFF, 0xFFFFFE7F, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x0003FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x08000002, 0x08000000,
+ 0x00200000, 0x00200000, 0x00008000, 0x00008000,
+ 0x00000200, 0x00000200, 0x00000008, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF0FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000FFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000002, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF
+ }
+};
diff --git a/lib/unictype/ctype_space.c b/lib/unictype/ctype_space.c
new file mode 100644
index 00000000..09d2c112
--- /dev/null
+++ b/lib/unictype/ctype_space.c
@@ -0,0 +1,32 @@
+/* ISO C <ctype.h> like properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_is_space table. */
+#include "ctype_space.h"
+
+bool
+uc_is_space (ucs4_t uc)
+{
+ return bitmap_lookup (&u_is_space, uc);
+}
diff --git a/lib/unictype/ctype_space.h b/lib/unictype/ctype_space.h
new file mode 100644
index 00000000..90108b99
--- /dev/null
+++ b/lib/unictype/ctype_space.h
@@ -0,0 +1,172 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* ISO C <ctype.h> like properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[5 << 4];
+ }
+u_is_space =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -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
+ },
+ {
+ 0x00003E00, 0x00000001, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00004000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000077F, 0x00000300, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/ctype_upper.c b/lib/unictype/ctype_upper.c
new file mode 100644
index 00000000..7724a048
--- /dev/null
+++ b/lib/unictype/ctype_upper.c
@@ -0,0 +1,32 @@
+/* ISO C <ctype.h> like properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_is_upper table. */
+#include "ctype_upper.h"
+
+bool
+uc_is_upper (ucs4_t uc)
+{
+ return bitmap_lookup (&u_is_upper, uc);
+}
diff --git a/lib/unictype/ctype_upper.h b/lib/unictype/ctype_upper.h
new file mode 100644
index 00000000..4f3a7806
--- /dev/null
+++ b/lib/unictype/ctype_upper.h
@@ -0,0 +1,327 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* ISO C <ctype.h> like properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[11 << 4];
+ }
+u_is_upper =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x07FFFFFE, 0x00000000,
+ 0x00000000, 0x00000000, 0x7F7FFFFF, 0x00000000,
+ 0x55555555, 0xAA555555, 0x555554AA, 0x2B555555,
+ 0xB1DBCED6, 0x11AED2D5, 0x4AAAADB0, 0x55D65555,
+ 0x55555555, 0x6C055555, 0x0000557A, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00450000,
+ 0xFFFED740, 0x00000FFB, 0x55008000, 0xE6905555,
+ 0xFFFFFFFF, 0x0000FFFF, 0x00000000, 0x55555555,
+ 0x55555401, 0x55555555, 0x55552AAB, 0x55555555,
+ 0x55555555, 0xFFFE0005, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFFFFFF, 0x0000003F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x55555555, 0x55555555, 0x55555555, 0x55555555,
+ 0x40155555, 0x55555555, 0x55555555, 0x55555555,
+ 0x3F00FF00, 0xFF00FF00, 0xAA003F00, 0x0000FF00,
+ 0xFF00FF00, 0x1F00FF00, 0x0F001F00, 0x1F001F00,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00040C40, 0x00000000, 0x0000FFFF,
+ 0x00000008, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFC00000, 0x0000FFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x00007FFF, 0x00000000, 0x0024EA9D,
+ 0x55555555, 0x55555555, 0x55555555, 0x00000005,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55555555, 0x00001554,
+ 0x00555555, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x55545554, 0x55555555, 0x6A005555,
+ 0x00000855, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x07FFFFFE, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x000000FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/ctype_xdigit.c b/lib/unictype/ctype_xdigit.c
new file mode 100644
index 00000000..60c44c4f
--- /dev/null
+++ b/lib/unictype/ctype_xdigit.c
@@ -0,0 +1,32 @@
+/* ISO C <ctype.h> like properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_is_xdigit table. */
+#include "ctype_xdigit.h"
+
+bool
+uc_is_xdigit (ucs4_t uc)
+{
+ return bitmap_lookup (&u_is_xdigit, uc);
+}
diff --git a/lib/unictype/ctype_xdigit.h b/lib/unictype/ctype_xdigit.h
new file mode 100644
index 00000000..320f806b
--- /dev/null
+++ b/lib/unictype/ctype_xdigit.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* ISO C <ctype.h> like properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_is_xdigit =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0x00000000, 0x03FF0000, 0x0000007E, 0x0000007E,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/decdigit.c b/lib/unictype/decdigit.c
new file mode 100644
index 00000000..48b05925
--- /dev/null
+++ b/lib/unictype/decdigit.c
@@ -0,0 +1,49 @@
+/* Values of decimal digit Unicode characters.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_decdigit table. */
+#include "decdigit.h"
+
+int
+uc_decimal_value (ucs4_t uc)
+{
+ unsigned int index1 = uc >> decdigit_header_0;
+ if (index1 < decdigit_header_1)
+ {
+ int lookup1 = u_decdigit.level1[index1];
+ if (lookup1 >= 0)
+ {
+ unsigned int index2 = (uc >> decdigit_header_2) & decdigit_header_3;
+ int lookup2 = u_decdigit.level2[lookup1 + index2];
+ if (lookup2 >= 0)
+ {
+ unsigned int index3 = (uc & decdigit_header_4) + lookup2;
+ /* level3 contains 4-bit values. */
+ unsigned int lookup3 =
+ (u_decdigit.level3[index3>>1] >> ((index3 % 2) * 4)) & 0x0f;
+
+ return (int) lookup3 - 1;
+ }
+ }
+ }
+ return -1;
+}
diff --git a/lib/unictype/decdigit.h b/lib/unictype/decdigit.h
new file mode 100644
index 00000000..08dcc401
--- /dev/null
+++ b/lib/unictype/decdigit.h
@@ -0,0 +1,247 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Decimal digit values of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define decdigit_header_0 16
+#define decdigit_header_1 2
+#define decdigit_header_2 7
+#define decdigit_header_3 511
+#define decdigit_header_4 127
+static const
+struct
+ {
+ int level1[2];
+ short level2[2 << 9];
+ unsigned char level3[12 << 6];
+ }
+u_decdigit =
+{
+ { 0, 512 },
+ {
+ 0, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 128, 256, -1, 384,
+ -1, -1, 512, 512, 512, 512, 512, 512,
+ 512, 512, 512, -1, 640, 640, 768, -1,
+ 384, 896, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 128,
+ 896, -1, 1024, 640, -1, -1, 640, 0,
+ 1152, -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, -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, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 768, -1, -1, -1,
+ -1, 640, 1280, -1, 640, -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,
+ -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, 896, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 768, -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, -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,
+ -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, -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, 1408,
+ -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
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x21, 0x43, 0x65, 0x87, 0xa9,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x21, 0x43, 0x65, 0x87, 0xa9,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
+ 0x43, 0x65, 0x87, 0xa9, 0x21, 0x43, 0x65, 0x87,
+ 0xa9, 0x21, 0x43, 0x65, 0x87, 0xa9, 0x21, 0x43,
+ 0x65, 0x87, 0xa9, 0x21, 0x43, 0x65, 0x87, 0xa9
+ }
+};
diff --git a/lib/unictype/digit.c b/lib/unictype/digit.c
new file mode 100644
index 00000000..21545c7b
--- /dev/null
+++ b/lib/unictype/digit.c
@@ -0,0 +1,49 @@
+/* Values of digit Unicode characters.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_digit table. */
+#include "digit.h"
+
+int
+uc_digit_value (ucs4_t uc)
+{
+ unsigned int index1 = uc >> digit_header_0;
+ if (index1 < digit_header_1)
+ {
+ int lookup1 = u_digit.level1[index1];
+ if (lookup1 >= 0)
+ {
+ unsigned int index2 = (uc >> digit_header_2) & digit_header_3;
+ int lookup2 = u_digit.level2[lookup1 + index2];
+ if (lookup2 >= 0)
+ {
+ unsigned int index3 = (uc & digit_header_4) + lookup2;
+ /* level3 contains 4-bit values. */
+ unsigned int lookup3 =
+ (u_digit.level3[index3>>1] >> ((index3 % 2) * 4)) & 0x0f;
+
+ return (int) lookup3 - 1;
+ }
+ }
+ }
+ return -1;
+}
diff --git a/lib/unictype/digit.h b/lib/unictype/digit.h
new file mode 100644
index 00000000..d3f29617
--- /dev/null
+++ b/lib/unictype/digit.h
@@ -0,0 +1,311 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Digit values of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define digit_header_0 16
+#define digit_header_1 2
+#define digit_header_2 7
+#define digit_header_3 511
+#define digit_header_4 127
+static const
+struct
+ {
+ int level1[2];
+ short level2[2 << 9];
+ unsigned char level3[20 << 6];
+ }
+u_digit =
+{
+ { 0, 512 },
+ {
+ 0, 128, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 256, 384, -1, 512,
+ -1, -1, 640, 640, 640, 640, 640, 640,
+ 640, 640, 640, -1, 768, 768, 896, -1,
+ 512, 1024, -1, -1, -1, -1, 1152, -1,
+ -1, -1, -1, -1, -1, -1, -1, 256,
+ 1024, -1, 1280, 768, -1, -1, 768, 0,
+ 1408, -1, -1, -1, -1, -1, -1, -1,
+ 1536, 1664, -1, -1, -1, -1, -1, -1,
+ 1792, 1920, -1, -1, -1, -1, 2048, 2176,
+ -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, -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, 896, -1, -1, -1,
+ -1, 768, 1664, -1, 768, -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,
+ -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, 1024, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 896, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 2304, -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,
+ -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, -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, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 2432,
+ -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
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x43, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x21, 0x43, 0x65, 0x87, 0xa9,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x43, 0x65, 0x87,
+ 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x21, 0x43, 0x65, 0x87, 0xa9,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x21, 0x43, 0x65, 0x87, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x54, 0x76, 0x98, 0x0a, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x32, 0x54, 0x76, 0x98, 0x0a, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x32, 0x54, 0x76, 0x98,
+ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0x43, 0x65, 0x87, 0xa9, 0x10,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x32, 0x54, 0x76, 0x98, 0x0a,
+ 0x32, 0x54, 0x76, 0x98, 0x0a, 0x32, 0x54, 0x76,
+ 0x98, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
+ 0x43, 0x65, 0x87, 0xa9, 0x21, 0x43, 0x65, 0x87,
+ 0xa9, 0x21, 0x43, 0x65, 0x87, 0xa9, 0x21, 0x43,
+ 0x65, 0x87, 0xa9, 0x21, 0x43, 0x65, 0x87, 0xa9
+ }
+};
diff --git a/lib/unictype/identsyntaxmap.h b/lib/unictype/identsyntaxmap.h
new file mode 100644
index 00000000..5d9db395
--- /dev/null
+++ b/lib/unictype/identsyntaxmap.h
@@ -0,0 +1,42 @@
+/* Three-level bitmap lookup.
+ Copyright (C) 2000-2002, 2005-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2000-2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+static inline int identsyntax_lookup (ucs4_t uc);
+
+static inline int
+identsyntax_lookup (ucs4_t uc)
+{
+ unsigned int index1 = uc >> identsyntax_header_0;
+ if (index1 < identsyntax_header_1)
+ {
+ int lookup1 = TABLE.level1[index1];
+ if (lookup1 >= 0)
+ {
+ unsigned int index2 = (uc >> identsyntax_header_2) & identsyntax_header_3;
+ int lookup2 = TABLE.level2[lookup1 + index2];
+ if (lookup2 >= 0)
+ {
+ unsigned int index3 = (uc & identsyntax_header_4) + lookup2;
+ /* level3 contains 2-bit values. */
+ unsigned int lookup3 = TABLE.level3[index3 >> 3];
+
+ return (lookup3 >> (2 * (index3 & 7))) & 3;
+ }
+ }
+ }
+ return UC_IDENTIFIER_INVALID;
+}
diff --git a/lib/unictype/mirror.c b/lib/unictype/mirror.c
new file mode 100644
index 00000000..75775447
--- /dev/null
+++ b/lib/unictype/mirror.c
@@ -0,0 +1,49 @@
+/* Mirrored Unicode characters.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_mirror table. */
+#include "mirror.h"
+
+bool
+uc_mirror_char (ucs4_t uc, ucs4_t *puc)
+{
+ unsigned int index1 = uc >> mirror_header_0;
+ if (index1 < mirror_header_1)
+ {
+ int lookup1 = u_mirror.level1[index1];
+ if (lookup1 >= 0)
+ {
+ unsigned int index2 = (uc >> mirror_header_2) & mirror_header_3;
+ int lookup2 = u_mirror.level2[lookup1 + index2];
+ if (lookup2 >= 0)
+ {
+ unsigned int index3 = (uc & mirror_header_4);
+ int lookup3 = u_mirror.level3[lookup2 + index3];
+
+ *puc = uc + lookup3;
+ return (lookup3 != 0);
+ }
+ }
+ }
+ *puc = uc;
+ return false;
+}
diff --git a/lib/unictype/mirror.h b/lib/unictype/mirror.h
new file mode 100644
index 00000000..d55f153a
--- /dev/null
+++ b/lib/unictype/mirror.h
@@ -0,0 +1,503 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Mirrored Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define mirror_header_0 16
+#define mirror_header_1 2
+#define mirror_header_2 7
+#define mirror_header_3 511
+#define mirror_header_4 127
+static const
+struct
+ {
+ int level1[2];
+ short level2[2 << 9];
+ int level3[22 << 7];
+ }
+u_mirror =
+{
+ { 0, 512 },
+ {
+ 0, 128, -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, 256, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 384, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 512, 640, 768, -1, 896, 1024, 1152, -1,
+ -1, -1, -1, -1, -1, -1, 1280, 1408,
+ -1, -1, -1, 1536, 1664, 1792, -1, -1,
+ -1, -1, -1, -1, 1920, -1, -1, -1,
+ 2048, -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, -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, -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, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 2176, -1, 2304, -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, -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, -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,
+ -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, 2432, 2560, 2688,
+ -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
+ },
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, -1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, -2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 0, -2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 0, -2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 61635, 61634, 61633, 61632, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 59746, 59745, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, -1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, -1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 57021, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 56828, 56827, 56826, 56825, 0, 0, 0,
+ 3, 56820, 3, -3, 56817, -3, 0, 0,
+ 0, 56812, 0, 0, 0, 56808, 56807, 0,
+ 0, 0, 56803, 56802, 56801, 56800, 0, 56798,
+ 56797, 56796, 56795, 0, 56793, 0, 56791, 0,
+ 0, 0, 0, 56786, 56785, 56784, 56783, 56782,
+ 56781, 56780, 56779, 56778, 0, 0, 0, 0,
+ 0, 56772, 0, 56770, 1, -1, 56767, 56766,
+ 56765, 56764, 56763, 138, 56761, 56760, 56759, 56758,
+ 56757, 56756, 56755, 56754, 56753, 0, 0, 0,
+ 0, 0, 1, -1, 1, -1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 56734,
+ 56733, 0, 56731, 0, 1, -1, 1, -1,
+ 56725, 56724, 1, -1, 0, 0, 56719, 56718,
+ 56717, 56716, 56715, 56714, 56713, 56712, 1, -1,
+ 1, -1, 1, -1, 1, -1, 56703, 56702,
+ 56701, 56700, 1, -1, 56697, 56696, 1, -1,
+ 56693, 56692, 56691, 56690, 56689, 0, 0, 1,
+ -1, 1, -1, 0, 0, 0, 0, 0,
+ 56677, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, -1, 0, 0, 56663, 56662,
+ 56661, 56660, 56659, 56658, 56657, 56656, 56655, 56654,
+ 1, -1, 1, -1, 1, -1, 1, -1,
+ 56645, 0, 0, 0, 0, 0, 56639, 56638,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, -1, 1, -1, -138, 0, 0,
+ 1, -1, 0, 0, 0, 0, 1, -1,
+ 1, -1, 1, -1, 1, -1, 1, -1,
+ 56605, 56604, 56603, 56602, 56601, 56600, 56599, 56598,
+ 56597, 56596, 56595, 56594, 56593, 56592, 0, 0,
+ 1, -1, 56587, 56586, 56585, 56584, 56583, 56582,
+ 56581, 56580, 56579, 56578, 56577, 56576, 56575, 56574,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, -1, 1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 56541, 56540, 0, 0, 0, 0, 0, 0,
+ 0, 1, -1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 55445, 55444, 55443, 55442, 55441, 55440, 55439, 55438,
+ 55437, 55436, 55435, 55434, 55433, 55432, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 55357, 0, 0, 55354, 55353, 55352, 55351, 0,
+ 55349, 55348, 0, 0, 55345, 0, 0, 0,
+ 0, 0, 0, 55338, 55337, 55336, 55335, 0,
+ 0, 0, 0, 0, 55329, 55328, 55327, 0,
+ 0, 0, 55323, 55322, 55321, 55320, 55319, 55318,
+ 55317, 55316, 55315, 55314, 55313, 55312, 55311, 55310,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 54906, 54905, 54904, 54903, 54902,
+ 54901, 54900, 54899, 54898, 54897, 54896, 54895, 54894,
+ 54893, 54892, 54891, 54890, 54889, 54888, 54887, 54886,
+ 54885, 0, 0, 54882, 54881, 54880, 54879, 54878,
+ 54877, 54876, 54875, 54874, 54873, 54872, 54871, 54870,
+ 54869, 54868, 54867, 54866, 54865, 54864, 54863, 54862,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 54853, 0, 0, 0, 0, 0, 0, 0,
+ 54845, 54844, 54843, 54842, 54841, 54840, 0, 0,
+ 0, 54836, 0, 0, 0, 0, 54831, 54830,
+ 54829, 54828, 54827, 0, 54825, 54824, 0, 0,
+ 54821, 54820, 54819, 54818, 54817, 0, 0, 0,
+ 0, 54812, 0, 54810, 54809, 54808, 0, 0,
+ 54805, 54804, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 54793, 54792, 54791, 54790,
+ 54789, 54788, 0, 0, 54785, 54784, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 54771, 54770, 54769, 54768, 54767, 54766,
+ 54765, 54764, 54763, 54762, 54761, 54760, 54759, 54758,
+ 54757, 54756, 54755, 54754, 54753, 0, 54751, 54750,
+ 54749, 54748, 0, 0, 54745, 0, 54743, 0,
+ 0, 54740, 0, 54738, 54737, 54736, 54735, 0,
+ 0, 0, 0, 0, 54729, 54728, 0, 0,
+ 0, 0, 0, 0, 54721, 54720, 54719, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 54694,
+ 54693, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 54681, 54680, 0, 0,
+ 0, 0, 54675, 54674, 54673, 54672, 0, 54670,
+ 54669, 0, 0, 54666, 54665, 0, 0, 0,
+ 0, 54660, 54659, 54658, 54657, 54656, 54655, 54654,
+ 54653, 54652, 54651, 54650, 54649, 54648, 54647, 54646,
+ 54645, 54644, 54643, 54642, 54641, 54640, 54639, 54638,
+ 54637, 54636, 54635, 54634, 54633, 54632, 54631, 54630,
+ 54629, 54628, 54627, 54626, 54625, 54624, 54623, 54622,
+ 54621, 54620, 54619, 54618, 0, 0, 54615, 54614,
+ 54613, 54612, 54611, 54610, 54609, 54608, 0, 54606,
+ 54605, 54604, 54603, 54602, 54601, 54600, 54599, 54598,
+ 54597, 54596, 54595, 54594, 54593, 54592, 54591, 54590,
+ 54589, 54588, 54587, 54586, 54585, 54584, 54583, 54582,
+ 54581, 54580, 54579, 54578, 54577, 54576, 54575, 54574,
+ 54573, 54572, 54571, 54570, 54569, 54568, 54567, 0,
+ 0, 0, 0, 0, 54561, 0, 54559, 0,
+ 0, 0, 54555, 54554, 54553, 54552, 54551, 0,
+ 0, 0, 0, 0, 54545, 54544, 54543, 0,
+ 0, 0, 0, 54538, 0, 0, 0, 54534,
+ 54533, 54532, 54531, 54530, 0, 54528, 0, 0,
+ 0, 0, 53755, 53754, 53753, 53752, 0, 0,
+ 0, 53748, 53747, 0, 53745, 53744, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 53729, 53728, 0, 0,
+ 53725, 53724, 53723, 53722, 53721, 53720, 53719, 53718,
+ 53717, 53716, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, -1, 1, -1, 1, -1, 1, -1,
+ 1, -1, 0, 0, 1, -1, 1, -1,
+ 1, -1, 1, -1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 420, 419, 418, 417, 416, 415, 0,
+ 0, 0, 0, 0, 409, 408, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 245, 244, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 225, 0, 223, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 194, 0, 192, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 162, 0, 160, 0, 158,
+ 157, 0, 155, 154, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -55006, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -55064, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -55122,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -55180, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -55238, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0
+ }
+};
diff --git a/lib/unictype/numeric.c b/lib/unictype/numeric.c
new file mode 100644
index 00000000..fb1512eb
--- /dev/null
+++ b/lib/unictype/numeric.c
@@ -0,0 +1,55 @@
+/* Values of numeric Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+/* Define u_numeric_values and u_numeric tables. */
+#include "numeric.h"
+
+uc_fraction_t
+uc_numeric_value (ucs4_t uc)
+{
+ unsigned int index1 = uc >> numeric_header_0;
+ if (index1 < numeric_header_1)
+ {
+ int lookup1 = u_numeric.level1[index1];
+ if (lookup1 >= 0)
+ {
+ unsigned int index2 = (uc >> numeric_header_2) & numeric_header_3;
+ int lookup2 = u_numeric.level2[lookup1 + index2];
+ if (lookup2 >= 0)
+ {
+ unsigned int index3 = ((uc & numeric_header_4) + lookup2) * 7;
+ /* level3 contains 7-bit values, packed into 16-bit words. */
+ unsigned int lookup3 =
+ ((u_numeric.level3[index3>>4]
+ | (u_numeric.level3[(index3>>4)+1] << 16))
+ >> (index3 % 16))
+ & 0x7f;
+
+ return u_numeric_values[lookup3];
+ }
+ }
+ }
+ {
+ const uc_fraction_t default_value = { 0, 0 };
+ return default_value;
+ }
+}
diff --git a/lib/unictype/numeric.h b/lib/unictype/numeric.h
new file mode 100644
index 00000000..382a093c
--- /dev/null
+++ b/lib/unictype/numeric.h
@@ -0,0 +1,635 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Numeric values of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+static const uc_fraction_t u_numeric_values[108] =
+{
+ { 0, 0 },
+ { 0, 1 },
+ { 1, 1 },
+ { 2, 1 },
+ { 3, 1 },
+ { 4, 1 },
+ { 5, 1 },
+ { 6, 1 },
+ { 7, 1 },
+ { 8, 1 },
+ { 9, 1 },
+ { 10, 1 },
+ { 11, 1 },
+ { 12, 1 },
+ { 13, 1 },
+ { 14, 1 },
+ { 15, 1 },
+ { 16, 1 },
+ { 17, 1 },
+ { 18, 1 },
+ { 19, 1 },
+ { 20, 1 },
+ { 21, 1 },
+ { 22, 1 },
+ { 23, 1 },
+ { 24, 1 },
+ { 25, 1 },
+ { 26, 1 },
+ { 27, 1 },
+ { 28, 1 },
+ { 29, 1 },
+ { 30, 1 },
+ { 31, 1 },
+ { 32, 1 },
+ { 33, 1 },
+ { 34, 1 },
+ { 35, 1 },
+ { 36, 1 },
+ { 37, 1 },
+ { 38, 1 },
+ { 39, 1 },
+ { 40, 1 },
+ { 41, 1 },
+ { 42, 1 },
+ { 43, 1 },
+ { 44, 1 },
+ { 45, 1 },
+ { 46, 1 },
+ { 47, 1 },
+ { 48, 1 },
+ { 49, 1 },
+ { 50, 1 },
+ { 60, 1 },
+ { 70, 1 },
+ { 80, 1 },
+ { 90, 1 },
+ { 100, 1 },
+ { 200, 1 },
+ { 300, 1 },
+ { 400, 1 },
+ { 500, 1 },
+ { 600, 1 },
+ { 700, 1 },
+ { 800, 1 },
+ { 900, 1 },
+ { 1000, 1 },
+ { 2000, 1 },
+ { 3000, 1 },
+ { 4000, 1 },
+ { 5000, 1 },
+ { 6000, 1 },
+ { 7000, 1 },
+ { 8000, 1 },
+ { 9000, 1 },
+ { 10000, 1 },
+ { 20000, 1 },
+ { 30000, 1 },
+ { 40000, 1 },
+ { 50000, 1 },
+ { 60000, 1 },
+ { 70000, 1 },
+ { 80000, 1 },
+ { 90000, 1 },
+ { 100000, 1 },
+ { -1, 2 },
+ { 1, 2 },
+ { 3, 2 },
+ { 5, 2 },
+ { 7, 2 },
+ { 9, 2 },
+ { 11, 2 },
+ { 13, 2 },
+ { 15, 2 },
+ { 17, 2 },
+ { 1, 3 },
+ { 2, 3 },
+ { 1, 4 },
+ { 3, 4 },
+ { 1, 5 },
+ { 2, 5 },
+ { 3, 5 },
+ { 4, 5 },
+ { 1, 6 },
+ { 5, 6 },
+ { 1, 8 },
+ { 3, 8 },
+ { 5, 8 },
+ { 7, 8 }
+};
+#define numeric_header_0 16
+#define numeric_header_1 3
+#define numeric_header_2 7
+#define numeric_header_3 511
+#define numeric_header_4 127
+static const
+struct
+ {
+ int level1[3];
+ short level2[3 << 9];
+ unsigned short level3[44 * 56 + 1];
+ }
+u_numeric =
+{
+ { 0, 512, 1024 },
+ {
+ 0, 128, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 256, 384, -1, 512,
+ -1, -1, 640, 768, 640, 640, 640, 896,
+ 1024, 640, 1152, -1, 1280, 1280, 1408, -1,
+ 512, 1536, -1, -1, -1, -1, 1664, -1,
+ -1, -1, -1, -1, -1, 1792, -1, 1920,
+ 1536, -1, 2048, 1280, -1, -1, 1280, 0,
+ 2176, -1, -1, -1, -1, -1, -1, -1,
+ 2304, 2432, 2560, 2688, -1, -1, -1, -1,
+ 2816, 2944, -1, -1, -1, -1, 3072, 3200,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3328, -1, -1, -1, -1, -1, -1,
+ 3456, -1, -1, 3584, 3712, 3840, -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, -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, 3968, -1, -1, -1,
+ -1, 1280, 2432, -1, 1280, -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,
+ -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, 4096, 4224, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1536, -1,
+ -1, -1, 4352, 4480, -1, -1, 4608, 4736,
+ -1, 3968, -1, -1, -1, -1, -1, -1,
+ -1, -1, 4864, -1, 4992, -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,
+ 5120, -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, -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, -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, 5248, -1,
+ -1, -1, -1, -1, -1, -1, -1, 5376,
+ -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, -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, -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, -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, -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, 5504, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1
+ },
+ {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc101, 0x5080, 0x1c30,
+ 0x0910, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc000, 0x0080, 0x0000,
+ 0x0000, 0x0001, 0xae00, 0x0186, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0xc101, 0x5080, 0x1c30, 0x0910, 0x0005, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xc101, 0x5080, 0x1c30, 0x0910, 0x0005, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xc101, 0x5080, 0x1c30, 0x0910,
+ 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x0304, 0xc142, 0x4070,
+ 0x1424, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x0304, 0xc142, 0x4070,
+ 0x1424, 0x0000, 0x2000, 0x1018, 0x800a, 0x0008, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x0304, 0xc142, 0x4070,
+ 0x1424, 0x5c0b, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x0304, 0xc142, 0x4070,
+ 0x1424, 0x0000, 0x0000, 0x0000, 0x0100, 0x80c1, 0x1820, 0x0010,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x0304, 0xc142, 0x4070,
+ 0x1424, 0x5c0b, 0x5c10, 0x030d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xc101, 0x5080, 0x1c30, 0x0910, 0x0005,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc101, 0x5080,
+ 0x1c30, 0x0910, 0xd545, 0xc57a, 0xb566, 0x6e5b, 0x0a97, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc101,
+ 0x5080, 0x1c30, 0x0910, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x80c1, 0x3050,
+ 0x101c, 0xc509, 0xf2a2, 0xcd49, 0x3568, 0x0ddb, 0x04a7, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2648, 0x0014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0xc101, 0x5080, 0x1c30, 0x0910, 0x0005, 0x0000,
+ 0x0000, 0xc101, 0x5080, 0x1c30, 0x0910, 0x0005, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x0304,
+ 0xc142, 0x4070, 0x1424, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xc101, 0x5080, 0x1c30, 0x0910,
+ 0x0005, 0x0000, 0x0000, 0xc101, 0x5080, 0x1c30, 0x0910, 0x0005,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0001, 0x5000, 0x1c30, 0x0910, 0x0005, 0x0000, 0x0000,
+ 0xc101, 0x5080, 0x1c30, 0x0910, 0x0005, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xfbc0, 0x8f15, 0x65c9, 0x19f3,
+ 0x569d, 0x05af, 0x0182, 0x60a1, 0x2038, 0x8a12, 0xa305, 0xc331,
+ 0x82f1, 0x0182, 0x60a1, 0x2038, 0x8a12, 0xa305, 0xc331, 0x82f1,
+ 0xa2c1, 0x0012, 0xcc38, 0x539c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0182, 0x60a1, 0x2038, 0x8a12, 0xa305, 0x78e1,
+ 0x2240, 0x0992, 0x22a5, 0x1018, 0x860a, 0x2203, 0x58a1, 0x1a30,
+ 0x078e, 0x2224, 0x5099, 0x822a, 0xa101, 0x3860, 0x1220, 0x058a,
+ 0xe1a3, 0x4078, 0x9222, 0xa509, 0x0002, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8040, 0x70d1,
+ 0x203c, 0xc911, 0x5284, 0x0c11, 0x0508, 0x01c3, 0x5091, 0x022c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0800, 0x8406, 0xe182, 0x4880, 0x1628,
+ 0x0182, 0x60a1, 0x2038, 0x8a12, 0x6085, 0x2840, 0x0e18, 0x8488,
+ 0x0162, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa800, 0x0002,
+ 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc100, 0x5080,
+ 0x1c30, 0x0910, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x8b00, 0x07ca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000,
+ 0x4060, 0x0028, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0182, 0x60a1,
+ 0x2038, 0x8a12, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xcb00, 0x9305, 0x6cd1, 0x1d38, 0x07cf,
+ 0x1214, 0x488d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0182, 0x60a1, 0x2038, 0x8a12, 0x0005, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9280, 0x84e9, 0xa94a,
+ 0xac56, 0xeb96, 0x8b05, 0x66c9, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc101, 0x5080,
+ 0x1c30, 0x0910, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0x0000,
+ 0x0000, 0x0000, 0x0160, 0x0000, 0x0300, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0380, 0x00e0, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5800, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0304, 0xc142, 0x4070, 0x1424, 0xca8b,
+ 0x3527, 0xd5a3, 0x376c, 0x4e5c, 0xe3b7, 0x7cf5, 0x603f, 0x3850,
+ 0x1624, 0x478d, 0x5264, 0x64b9, 0x9d36, 0x684f, 0x0a54, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xaae0, 0x30c0, 0x15e3, 0x869d,
+ 0x0cc5, 0x0bc7, 0x0d16, 0x198b, 0x178e, 0x3a54, 0x0217, 0x6081,
+ 0x1830, 0x0c0c, 0xc58b, 0xb162, 0xccf8, 0xb366, 0x4e19, 0xe3c7,
+ 0x78f1, 0x60bc, 0x30d1, 0x56ab, 0x61bf, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0040, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc302, 0x0662,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x1b80, 0x0000, 0x0000, 0x0000,
+ 0x1000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xc100, 0x5160, 0x01c1, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0800, 0x1516, 0x001c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0182, 0xb0a1, 0xe0a8, 0x0082,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4203, 0x70c1, 0x2440, 0x8414, 0xe182, 0x4880, 0x0a28, 0x0386,
+ 0xa122, 0x0c10, 0x0508, 0x01c3, 0x5091, 0x0608, 0x8284, 0x4061,
+ 0x1420, 0x070c, 0x4244, 0x1821, 0x0810, 0x0305, 0x2000, 0x1018,
+ 0x0508, 0x8103, 0x2850, 0x0a14, 0x0407, 0x9102, 0x2848, 0x0a14,
+ 0x80c5, 0x3050, 0x041c, 0x4203, 0x60a1, 0x0030, 0x8200, 0xf781,
+ 0xf67b, 0xd17e, 0x3360, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0182, 0x60a1, 0x2038, 0x8a12, 0xe545, 0x9a93,
+ 0x6ad1, 0x1bb6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0404, 0x4203, 0x70c1, 0x2440, 0x0114, 0x80c1,
+ 0x3050, 0x101c, 0x4509, 0x3040, 0x1420, 0x070c, 0x4244, 0x1011,
+ 0x080c, 0xc305, 0x9101, 0x0450, 0x0304, 0xc142, 0x4070, 0x1424,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000
+ }
+};
diff --git a/lib/unictype/pr_alphabetic.c b/lib/unictype/pr_alphabetic.c
new file mode 100644
index 00000000..99920916
--- /dev/null
+++ b/lib/unictype/pr_alphabetic.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_alphabetic table. */
+#include "pr_alphabetic.h"
+
+bool
+uc_is_property_alphabetic (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_alphabetic, uc);
+}
+
+const uc_property_t UC_PROPERTY_ALPHABETIC =
+ { &uc_is_property_alphabetic };
diff --git a/lib/unictype/pr_alphabetic.h b/lib/unictype/pr_alphabetic.h
new file mode 100644
index 00000000..09ea6c84
--- /dev/null
+++ b/lib/unictype/pr_alphabetic.h
@@ -0,0 +1,588 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[3];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[44 << 4];
+ }
+u_property_alphabetic =
+{
+ { 3 },
+ {
+ 4 * sizeof (int) / sizeof (short) + 0,
+ 4 * sizeof (int) / sizeof (short) + 128,
+ 4 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ 4 + 384 * sizeof (short) / sizeof (int) + 0,
+ 4 + 384 * sizeof (short) / sizeof (int) + 16,
+ 4 + 384 * sizeof (short) / sizeof (int) + 32,
+ 4 + 384 * sizeof (short) / sizeof (int) + 48,
+ 4 + 384 * sizeof (short) / sizeof (int) + 64,
+ 4 + 384 * sizeof (short) / sizeof (int) + 80,
+ 4 + 384 * sizeof (short) / sizeof (int) + 96,
+ 4 + 384 * sizeof (short) / sizeof (int) + 112,
+ 4 + 384 * sizeof (short) / sizeof (int) + 128,
+ 4 + 384 * sizeof (short) / sizeof (int) + 144,
+ 4 + 384 * sizeof (short) / sizeof (int) + 160,
+ 4 + 384 * sizeof (short) / sizeof (int) + 176,
+ 4 + 384 * sizeof (short) / sizeof (int) + 192,
+ 4 + 384 * sizeof (short) / sizeof (int) + 208,
+ 4 + 384 * sizeof (short) / sizeof (int) + 224,
+ 4 + 384 * sizeof (short) / sizeof (int) + 240,
+ 4 + 384 * sizeof (short) / sizeof (int) + 256,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 272,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 352,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 368,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 384,
+ 4 + 384 * sizeof (short) / sizeof (int) + 400,
+ 4 + 384 * sizeof (short) / sizeof (int) + 416,
+ 4 + 384 * sizeof (short) / sizeof (int) + 432,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 448,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 464,
+ 4 + 384 * sizeof (short) / sizeof (int) + 480,
+ 4 + 384 * sizeof (short) / sizeof (int) + 496,
+ 4 + 384 * sizeof (short) / sizeof (int) + 512,
+ 4 + 384 * sizeof (short) / sizeof (int) + 528,
+ 4 + 384 * sizeof (short) / sizeof (int) + 544,
+ 4 + 384 * sizeof (short) / sizeof (int) + 560,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 576,
+ 4 + 384 * sizeof (short) / sizeof (int) + 592,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 608,
+ 4 + 384 * sizeof (short) / sizeof (int) + 624,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 640,
+ 4 + 384 * sizeof (short) / sizeof (int) + 656,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 672,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 688,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x07FFFFFE, 0x07FFFFFE,
+ 0x00000000, 0x04200400, 0xFF7FFFFF, 0xFF7FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0003FFC3, 0x0000501F,
+ 0x00000000, 0x00000000, 0x00000020, 0x3CDF0000,
+ 0xFFFFD740, 0xFFFFFFFB, 0xFFFFFFFF, 0xFFBFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFC03, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFE000F, 0x027FFFFF, 0xFFFFFFFE,
+ 0x000000FF, 0xBFFF0000, 0xFFFF00B6, 0x000707FF,
+ 0x07FF0000, 0xFFFFFFFE, 0x7EFFFFFF, 0xFFFFC000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x1FEFFFFF, 0x9C00E1FE,
+ 0xFFFF0000, 0xFFFFFFFF, 0xFFFFE000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0003FFFF, 0xFFFFFC00, 0x043007FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFE, 0xE3FFFFFF, 0xFF011FFF, 0xF806000F,
+ 0xFFF99FEE, 0xE3C5FDFF, 0xB080599F, 0x0003000F,
+ 0xFFF987EE, 0xC36DFDFF, 0x5E021987, 0x003F0000,
+ 0xFFFBBFEE, 0xE3EDFDFF, 0x00011BBF, 0x0000000F,
+ 0xFFF99FEE, 0xE3EDFDFF, 0xB0C0199F, 0x0002000F,
+ 0xD63DC7EC, 0xC3FFC718, 0x00811DC7, 0x00000000,
+ 0xFFFDDFEE, 0xE3EFFDFF, 0x03601DDF, 0x0000000F,
+ 0xFFFDDFEC, 0xE3EFFDFF, 0x40601DDF, 0x0000000F,
+ 0xFFFDDFEC, 0xE3FFFDFF, 0x00801DDF, 0xFC00000F,
+ 0xFC7FFFEC, 0x2FFBFFFF, 0xFF5F807F, 0x000C0000,
+ 0xFFFFFFFE, 0x07FFFFFF, 0x0000207F, 0x00000000,
+ 0xFEF02596, 0x3BFFECAE, 0x3000205F, 0x00000000,
+ 0x00000001, 0x00000000, 0xFFFFFEFF, 0xFFFE1FFF,
+ 0xFEFF0F03, 0x1FFFFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xF97FFFFF, 0xFFFF0000, 0xFFFFC1E7,
+ 0x0000407F, 0xFFFFFFFF, 0xFFFF003F, 0x17FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x83FFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF07, 0xFFFFFFFF, 0x03FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3D7F3DFF, 0xFFFFFFFF,
+ 0xFFFF3DFF, 0x7F3DFFFF, 0xFF7FFF3D, 0xFFFFFFFF,
+ 0xFF3DFFFF, 0xFFFFFFFF, 0x87FFFFFF, 0x00000000,
+ 0x0000FFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x001FFFFF,
+ 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x007F9FFF,
+ 0x07FFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0x0001C7FF,
+ 0x000FDFFF, 0x000FFFFF, 0x000FFFFF, 0x000DDFFF,
+ 0xFFFFFFFF, 0xFFCFFFFF, 0x108001FF, 0x00000000,
+ 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0x00FFFFFF,
+ 0xFFFFFFFF, 0x000007FF, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0x01FF0FFF, 0xFFFF0000, 0x001F3FFF,
+ 0xFFFFFFFF, 0xFFFF03FF, 0x000003FF, 0x00000000,
+ 0x0FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFEFFFFF, 0x00000FEF, 0x00000000,
+ 0xFFFFFFFF, 0x0000C3FF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x003FFFFF, 0xFC00E000, 0x3FFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
+ 0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x80020000,
+ 0x001F0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3E2FFC84, 0xF3FFBD50, 0x000043E0, 0xFFFFFFFF,
+ 0x000001FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFC00000, 0xFFFFFFFF, 0x000003FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF7FFF, 0x7FFFFFFF, 0x3FFEFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000001F,
+ 0xFFFFFFFF, 0xFFFF003F, 0xFFFFFFFF, 0x0000803F,
+ 0x007FFFFF, 0x7F7F7F7F, 0x7F7F7F7F, 0xFFFFFFFF,
+ 0x00000000, 0x00008000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x000000E0, 0x1F3E03FE, 0xFFFFFFFE, 0xFFFFFFFF,
+ 0xE07FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0xF7FFFFFF,
+ 0xFFFFFFE0, 0xFFFE3FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00007FFF, 0x00FFFFFF, 0x00000000, 0xFFFF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x003FFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00001FFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFF1FFF, 0x00000C00, 0xFFFFFFFF, 0x80007FFC,
+ 0x00FFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF800000, 0xFFFFFFFC, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000019FF, 0x00000000, 0x00000000, 0xF8000000,
+ 0xFFFFF7BB, 0x000000FF, 0xFFFFFFFF, 0x000FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFFFFC00, 0xFFFF07FF, 0x0007FFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x007FFFFF, 0x00003FFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFF3FFF, 0xFFFFFFFF, 0xFFFF07FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, 0x00000000,
+ 0xE0F8007F, 0x5F7FFDFF, 0xFFFFFFDB, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0003FFFF, 0xFFF80000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x3FFFFFFF, 0xFFFF0000, 0xFFFFFFFF,
+ 0xFFFCFFFF, 0xFFFFFFFF, 0x000000FF, 0x0FFF0000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFDF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x1FFFFFFF,
+ 0x00000000, 0x07FFFFFE, 0x07FFFFFE, 0xFFFFFFC0,
+ 0xFFFFFFFF, 0x7FFFFFFF, 0x1CFCFCFC, 0x00000000,
+ 0xFFFFEFFF, 0xB7FFFF7F, 0x3FFF3FFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x07FFFFFF,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0x001FFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0xFFFFFFFF, 0x0001FFFF, 0x00000000,
+ 0x7FFFFFFF, 0xFFFF0000, 0x000007FF, 0x00000000,
+ 0x3FFFFFFF, 0xFFFFFFFF, 0x003EFF0F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFD3F, 0x91BFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x003FFFFF, 0x03FFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFEEFF06F, 0x000FFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00007FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000007,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFDFFFFF, 0xFFFFFFFF,
+ 0xDFFFFFFF, 0xEBFFDE64, 0xFFFFFFEF, 0xFFFFFFFF,
+ 0xDFDFE7BF, 0x7BFFFFFF, 0xFFFDFC5F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF3F, 0xF7FFFFFD, 0xF7FFFFFF,
+ 0xFFDFFFFF, 0xFFDFFFFF, 0xFFFF7FFF, 0xFFFF7FFF,
+ 0xFFFFFDFF, 0xFFFFFDFF, 0x00000FF7, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_ascii_hex_digit.c b/lib/unictype/pr_ascii_hex_digit.c
new file mode 100644
index 00000000..90d3d3ad
--- /dev/null
+++ b/lib/unictype/pr_ascii_hex_digit.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_ascii_hex_digit table. */
+#include "pr_ascii_hex_digit.h"
+
+bool
+uc_is_property_ascii_hex_digit (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_ascii_hex_digit, uc);
+}
+
+const uc_property_t UC_PROPERTY_ASCII_HEX_DIGIT =
+ { &uc_is_property_ascii_hex_digit };
diff --git a/lib/unictype/pr_ascii_hex_digit.h b/lib/unictype/pr_ascii_hex_digit.h
new file mode 100644
index 00000000..d7884ca1
--- /dev/null
+++ b/lib/unictype/pr_ascii_hex_digit.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_property_ascii_hex_digit =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0x00000000, 0x03FF0000, 0x0000007E, 0x0000007E,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_bidi_arabic_digit.c b/lib/unictype/pr_bidi_arabic_digit.c
new file mode 100644
index 00000000..15f5f6be
--- /dev/null
+++ b/lib/unictype/pr_bidi_arabic_digit.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_bidi_arabic_digit table. */
+#include "pr_bidi_arabic_digit.h"
+
+bool
+uc_is_property_bidi_arabic_digit (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_bidi_arabic_digit, uc);
+}
+
+#else
+
+bool
+uc_is_property_bidi_arabic_digit (ucs4_t uc)
+{
+ return (uc_bidi_category (uc) == UC_BIDI_AN);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_BIDI_ARABIC_DIGIT =
+ { &uc_is_property_bidi_arabic_digit };
diff --git a/lib/unictype/pr_bidi_arabic_digit.h b/lib/unictype/pr_bidi_arabic_digit.h
new file mode 100644
index 00000000..999dda38
--- /dev/null
+++ b/lib/unictype/pr_bidi_arabic_digit.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_property_bidi_arabic_digit =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0x0000000F, 0x00000000, 0x00000000, 0x00001BFF,
+ 0x00000000, 0x00000000, 0x20000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_bidi_arabic_right_to_left.c b/lib/unictype/pr_bidi_arabic_right_to_left.c
new file mode 100644
index 00000000..81667675
--- /dev/null
+++ b/lib/unictype/pr_bidi_arabic_right_to_left.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_bidi_arabic_right_to_left table. */
+#include "pr_bidi_arabic_right_to_left.h"
+
+bool
+uc_is_property_bidi_arabic_right_to_left (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_bidi_arabic_right_to_left, uc);
+}
+
+#else
+
+bool
+uc_is_property_bidi_arabic_right_to_left (ucs4_t uc)
+{
+ return (uc_bidi_category (uc) == UC_BIDI_AL);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT =
+ { &uc_is_property_bidi_arabic_right_to_left };
diff --git a/lib/unictype/pr_bidi_arabic_right_to_left.h b/lib/unictype/pr_bidi_arabic_right_to_left.h
new file mode 100644
index 00000000..4a566d6f
--- /dev/null
+++ b/lib/unictype/pr_bidi_arabic_right_to_left.h
@@ -0,0 +1,172 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[5 << 4];
+ }
+u_property_bidi_arabic_right_to_left =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64
+ },
+ {
+ 0xF8002930, 0xFFFFFFFF, 0x800007FF, 0xFFFEE000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x003FFFFF, 0xFC00C060,
+ 0xFFFD7FFF, 0x0000FFFF, 0xFFFFF800, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFE003F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000003E0,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x3FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF, 0xDFFF0000,
+ 0xFC000000, 0x0000FF80, 0x00080000, 0xFFFFF080,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_bidi_block_separator.c b/lib/unictype/pr_bidi_block_separator.c
new file mode 100644
index 00000000..1775d365
--- /dev/null
+++ b/lib/unictype/pr_bidi_block_separator.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_bidi_block_separator table. */
+#include "pr_bidi_block_separator.h"
+
+bool
+uc_is_property_bidi_block_separator (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_bidi_block_separator, uc);
+}
+
+#else
+
+bool
+uc_is_property_bidi_block_separator (ucs4_t uc)
+{
+ return (uc_bidi_category (uc) == UC_BIDI_B);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_BIDI_BLOCK_SEPARATOR =
+ { &uc_is_property_bidi_block_separator };
diff --git a/lib/unictype/pr_bidi_block_separator.h b/lib/unictype/pr_bidi_block_separator.h
new file mode 100644
index 00000000..e82d2d45
--- /dev/null
+++ b/lib/unictype/pr_bidi_block_separator.h
@@ -0,0 +1,160 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[2 << 4];
+ }
+u_property_bidi_block_separator =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 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
+ },
+ {
+ 0x70002400, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000020, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_bidi_boundary_neutral.c b/lib/unictype/pr_bidi_boundary_neutral.c
new file mode 100644
index 00000000..923e89f7
--- /dev/null
+++ b/lib/unictype/pr_bidi_boundary_neutral.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_bidi_boundary_neutral table. */
+#include "pr_bidi_boundary_neutral.h"
+
+bool
+uc_is_property_bidi_boundary_neutral (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_bidi_boundary_neutral, uc);
+}
+
+#else
+
+bool
+uc_is_property_bidi_boundary_neutral (ucs4_t uc)
+{
+ return (uc_bidi_category (uc) == UC_BIDI_BN);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_BIDI_BOUNDARY_NEUTRAL =
+ { &uc_is_property_bidi_boundary_neutral };
diff --git a/lib/unictype/pr_bidi_boundary_neutral.h b/lib/unictype/pr_bidi_boundary_neutral.h
new file mode 100644
index 00000000..8bc59e87
--- /dev/null
+++ b/lib/unictype/pr_bidi_boundary_neutral.h
@@ -0,0 +1,590 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[17];
+ short level2[4 << 7];
+ /*unsigned*/ int level3[9 << 4];
+ }
+u_property_bidi_boundary_neutral =
+{
+ { 17 },
+ {
+ 18 * sizeof (int) / sizeof (short) + 0,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ 18 + 512 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ 18 + 512 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 512 * sizeof (short) / sizeof (int) + 32,
+ -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,
+ 18 + 512 * sizeof (short) / sizeof (int) + 48,
+ 18 + 512 * sizeof (short) / sizeof (int) + 64,
+ -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,
+ 18 + 512 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 512 * sizeof (short) / sizeof (int) + 96,
+ -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,
+ 18 + 512 * sizeof (short) / sizeof (int) + 96,
+ 18 + 512 * sizeof (short) / sizeof (int) + 112,
+ 18 + 512 * sizeof (short) / sizeof (int) + 128,
+ 18 + 512 * sizeof (short) / sizeof (int) + 128,
+ 18 + 512 * sizeof (short) / sizeof (int) + 128,
+ 18 + 512 * sizeof (short) / sizeof (int) + 128,
+ 18 + 512 * sizeof (short) / sizeof (int) + 128,
+ 18 + 512 * sizeof (short) / sizeof (int) + 128,
+ 18 + 512 * sizeof (short) / sizeof (int) + 128,
+ -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,
+ 18 + 512 * sizeof (short) / sizeof (int) + 96
+ },
+ {
+ 0x0FFFC1FF, 0x00000000, 0x00000000, 0x80000000,
+ 0xFFFFFFDF, 0x00002000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00008000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00003800, 0x00000000, 0x00000000, 0x0000FC1F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFF0000, 0x0000FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x80000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xC1FF0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x07F80000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xC0000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
+ }
+};
diff --git a/lib/unictype/pr_bidi_common_separator.c b/lib/unictype/pr_bidi_common_separator.c
new file mode 100644
index 00000000..2cc1f140
--- /dev/null
+++ b/lib/unictype/pr_bidi_common_separator.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_bidi_common_separator table. */
+#include "pr_bidi_common_separator.h"
+
+bool
+uc_is_property_bidi_common_separator (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_bidi_common_separator, uc);
+}
+
+#else
+
+bool
+uc_is_property_bidi_common_separator (ucs4_t uc)
+{
+ return (uc_bidi_category (uc) == UC_BIDI_CS);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_BIDI_COMMON_SEPARATOR =
+ { &uc_is_property_bidi_common_separator };
diff --git a/lib/unictype/pr_bidi_common_separator.h b/lib/unictype/pr_bidi_common_separator.h
new file mode 100644
index 00000000..67dedbb2
--- /dev/null
+++ b/lib/unictype/pr_bidi_common_separator.h
@@ -0,0 +1,168 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[4 << 4];
+ }
+u_property_bidi_common_separator =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48
+ },
+ {
+ 0x00000000, 0x0400D000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000001, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00001000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00008000, 0x00000010, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00250000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0400D000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_bidi_control.c b/lib/unictype/pr_bidi_control.c
new file mode 100644
index 00000000..9a4f209c
--- /dev/null
+++ b/lib/unictype/pr_bidi_control.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_bidi_control table. */
+#include "pr_bidi_control.h"
+
+bool
+uc_is_property_bidi_control (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_bidi_control, uc);
+}
+
+const uc_property_t UC_PROPERTY_BIDI_CONTROL =
+ { &uc_is_property_bidi_control };
diff --git a/lib/unictype/pr_bidi_control.h b/lib/unictype/pr_bidi_control.h
new file mode 100644
index 00000000..b676a970
--- /dev/null
+++ b/lib/unictype/pr_bidi_control.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_property_bidi_control =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0x0000C000, 0x00007C00, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_bidi_embedding_or_override.c b/lib/unictype/pr_bidi_embedding_or_override.c
new file mode 100644
index 00000000..70265223
--- /dev/null
+++ b/lib/unictype/pr_bidi_embedding_or_override.c
@@ -0,0 +1,49 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_bidi_embedding_or_override table. */
+#include "pr_bidi_embedding_or_override.h"
+
+bool
+uc_is_property_bidi_embedding_or_override (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_bidi_embedding_or_override, uc);
+}
+
+#else
+
+bool
+uc_is_property_bidi_embedding_or_override (ucs4_t uc)
+{
+ int category = uc_bidi_category (uc);
+ return (category == UC_BIDI_LRE || category == UC_BIDI_LRO
+ || category == UC_BIDI_RLE || category == UC_BIDI_RLO);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE =
+ { &uc_is_property_bidi_embedding_or_override };
diff --git a/lib/unictype/pr_bidi_embedding_or_override.h b/lib/unictype/pr_bidi_embedding_or_override.h
new file mode 100644
index 00000000..d14a500f
--- /dev/null
+++ b/lib/unictype/pr_bidi_embedding_or_override.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_property_bidi_embedding_or_override =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0x00000000, 0x00006C00, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_bidi_eur_num_separator.c b/lib/unictype/pr_bidi_eur_num_separator.c
new file mode 100644
index 00000000..53d3ea74
--- /dev/null
+++ b/lib/unictype/pr_bidi_eur_num_separator.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_bidi_eur_num_separator table. */
+#include "pr_bidi_eur_num_separator.h"
+
+bool
+uc_is_property_bidi_eur_num_separator (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_bidi_eur_num_separator, uc);
+}
+
+#else
+
+bool
+uc_is_property_bidi_eur_num_separator (ucs4_t uc)
+{
+ return (uc_bidi_category (uc) == UC_BIDI_ES);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_BIDI_EUR_NUM_SEPARATOR =
+ { &uc_is_property_bidi_eur_num_separator };
diff --git a/lib/unictype/pr_bidi_eur_num_separator.h b/lib/unictype/pr_bidi_eur_num_separator.h
new file mode 100644
index 00000000..a18c2493
--- /dev/null
+++ b/lib/unictype/pr_bidi_eur_num_separator.h
@@ -0,0 +1,172 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[5 << 4];
+ }
+u_property_bidi_eur_num_separator =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64
+ },
+ {
+ 0x00000000, 0x00002800, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0C000000,
+ 0x00000C00, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00040000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000000C,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00002800, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_bidi_eur_num_terminator.c b/lib/unictype/pr_bidi_eur_num_terminator.c
new file mode 100644
index 00000000..de1f4ab9
--- /dev/null
+++ b/lib/unictype/pr_bidi_eur_num_terminator.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_bidi_eur_num_terminator table. */
+#include "pr_bidi_eur_num_terminator.h"
+
+bool
+uc_is_property_bidi_eur_num_terminator (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_bidi_eur_num_terminator, uc);
+}
+
+#else
+
+bool
+uc_is_property_bidi_eur_num_terminator (ucs4_t uc)
+{
+ return (uc_bidi_category (uc) == UC_BIDI_ET);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_BIDI_EUR_NUM_TERMINATOR =
+ { &uc_is_property_bidi_eur_num_terminator };
diff --git a/lib/unictype/pr_bidi_eur_num_terminator.h b/lib/unictype/pr_bidi_eur_num_terminator.h
new file mode 100644
index 00000000..5228108b
--- /dev/null
+++ b/lib/unictype/pr_bidi_eur_num_terminator.h
@@ -0,0 +1,188 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[9 << 4];
+ }
+u_property_bidi_eur_num_terminator =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 96,
+ 2 + 128 * sizeof (short) / sizeof (int) + 112,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 128
+ },
+ {
+ 0x00000000, 0x00000038, 0x00000000, 0x00000000,
+ 0x00000000, 0x0003003C, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000600, 0x00000000, 0x00000000, 0x00000400,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000C0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00020000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x02000000,
+ 0x00000000, 0x80000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x08000000, 0x00000000,
+ 0x00000000, 0x001F0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x003FFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00004000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00080000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x80000000, 0x00000600,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000038, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000063
+ }
+};
diff --git a/lib/unictype/pr_bidi_european_digit.c b/lib/unictype/pr_bidi_european_digit.c
new file mode 100644
index 00000000..e27c5d3a
--- /dev/null
+++ b/lib/unictype/pr_bidi_european_digit.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_bidi_european_digit table. */
+#include "pr_bidi_european_digit.h"
+
+bool
+uc_is_property_bidi_european_digit (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_bidi_european_digit, uc);
+}
+
+#else
+
+bool
+uc_is_property_bidi_european_digit (ucs4_t uc)
+{
+ return (uc_bidi_category (uc) == UC_BIDI_EN);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_BIDI_EUROPEAN_DIGIT =
+ { &uc_is_property_bidi_european_digit };
diff --git a/lib/unictype/pr_bidi_european_digit.h b/lib/unictype/pr_bidi_european_digit.h
new file mode 100644
index 00000000..27d81bd2
--- /dev/null
+++ b/lib/unictype/pr_bidi_european_digit.h
@@ -0,0 +1,307 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[6 << 4];
+ }
+u_property_bidi_european_digit =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x03FF0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x020C0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x03FF0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x03F10000,
+ 0x000003FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0FFFFF00, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x03FF0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFC000, 0xFFFFFFFF
+ }
+};
diff --git a/lib/unictype/pr_bidi_hebrew_right_to_left.c b/lib/unictype/pr_bidi_hebrew_right_to_left.c
new file mode 100644
index 00000000..9dced034
--- /dev/null
+++ b/lib/unictype/pr_bidi_hebrew_right_to_left.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_bidi_hebrew_right_to_left table. */
+#include "pr_bidi_hebrew_right_to_left.h"
+
+bool
+uc_is_property_bidi_hebrew_right_to_left (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_bidi_hebrew_right_to_left, uc);
+}
+
+#else
+
+bool
+uc_is_property_bidi_hebrew_right_to_left (ucs4_t uc)
+{
+ return (uc_bidi_category (uc) == UC_BIDI_R);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT =
+ { &uc_is_property_bidi_hebrew_right_to_left };
diff --git a/lib/unictype/pr_bidi_hebrew_right_to_left.h b/lib/unictype/pr_bidi_hebrew_right_to_left.h
new file mode 100644
index 00000000..652f5ba2
--- /dev/null
+++ b/lib/unictype/pr_bidi_hebrew_right_to_left.h
@@ -0,0 +1,315 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[8 << 4];
+ }
+u_property_bidi_hebrew_right_to_left =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00010000, 0x40000000, 0xFFFFFF49, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFC3007FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00008000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xA0000000, 0xFFFFFDFF, 0x0000FFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x7FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFF0F91, 0x78FFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
+ }
+};
diff --git a/lib/unictype/pr_bidi_left_to_right.c b/lib/unictype/pr_bidi_left_to_right.c
new file mode 100644
index 00000000..fee8443c
--- /dev/null
+++ b/lib/unictype/pr_bidi_left_to_right.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_bidi_left_to_right table. */
+#include "pr_bidi_left_to_right.h"
+
+bool
+uc_is_property_bidi_left_to_right (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_bidi_left_to_right, uc);
+}
+
+#else
+
+bool
+uc_is_property_bidi_left_to_right (ucs4_t uc)
+{
+ return (uc_bidi_category (uc) == UC_BIDI_L);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_BIDI_LEFT_TO_RIGHT =
+ { &uc_is_property_bidi_left_to_right };
diff --git a/lib/unictype/pr_bidi_left_to_right.h b/lib/unictype/pr_bidi_left_to_right.h
new file mode 100644
index 00000000..73ee442a
--- /dev/null
+++ b/lib/unictype/pr_bidi_left_to_right.h
@@ -0,0 +1,706 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[17];
+ short level2[4 << 7];
+ /*unsigned*/ int level3[38 << 4];
+ }
+u_property_bidi_left_to_right =
+{
+ { 17 },
+ {
+ 18 * sizeof (int) / sizeof (short) + 0,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 384,
+ 18 * sizeof (int) / sizeof (short) + 256,
+ 18 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ 18 + 512 * sizeof (short) / sizeof (int) + 0,
+ 18 + 512 * sizeof (short) / sizeof (int) + 16,
+ 18 + 512 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ 18 + 512 * sizeof (short) / sizeof (int) + 48,
+ 18 + 512 * sizeof (short) / sizeof (int) + 64,
+ 18 + 512 * sizeof (short) / sizeof (int) + 80,
+ 18 + 512 * sizeof (short) / sizeof (int) + 96,
+ 18 + 512 * sizeof (short) / sizeof (int) + 112,
+ 18 + 512 * sizeof (short) / sizeof (int) + 128,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 160,
+ 18 + 512 * sizeof (short) / sizeof (int) + 176,
+ 18 + 512 * sizeof (short) / sizeof (int) + 192,
+ 18 + 512 * sizeof (short) / sizeof (int) + 208,
+ 18 + 512 * sizeof (short) / sizeof (int) + 224,
+ 18 + 512 * sizeof (short) / sizeof (int) + 240,
+ 18 + 512 * sizeof (short) / sizeof (int) + 256,
+ 18 + 512 * sizeof (short) / sizeof (int) + 272,
+ 18 + 512 * sizeof (short) / sizeof (int) + 288,
+ 18 + 512 * sizeof (short) / sizeof (int) + 304,
+ 18 + 512 * sizeof (short) / sizeof (int) + 320,
+ 18 + 512 * sizeof (short) / sizeof (int) + 336,
+ 18 + 512 * sizeof (short) / sizeof (int) + 352,
+ 18 + 512 * sizeof (short) / sizeof (int) + 368,
+ 18 + 512 * sizeof (short) / sizeof (int) + 384,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 400,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 416,
+ 18 + 512 * sizeof (short) / sizeof (int) + 432,
+ 18 + 512 * sizeof (short) / sizeof (int) + 448,
+ 18 + 512 * sizeof (short) / sizeof (int) + 464,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 480,
+ -1,
+ 18 + 512 * sizeof (short) / sizeof (int) + 496,
+ 18 + 512 * sizeof (short) / sizeof (int) + 512,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 528,
+ 18 + 512 * sizeof (short) / sizeof (int) + 544,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 560,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 576,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 592,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 592,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 144,
+ 18 + 512 * sizeof (short) / sizeof (int) + 592
+ },
+ {
+ 0x00000000, 0x00000000, 0x07FFFFFE, 0x07FFFFFE,
+ 0x00000000, 0x04200400, 0xFF7FFFFF, 0xFF7FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xF9FFFFFF, 0x00030003, 0x0000401F,
+ 0x00000000, 0x00000000, 0x00000000, 0xBFCF0000,
+ 0xFFFFFF4F, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFBFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFC07, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x0000FBFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFF9, 0xEFFFFFFF, 0xFFE1DE01, 0xFFFFFFF3,
+ 0xFFFFFFFD, 0xEFFFFFFF, 0xFFFFDFE1, 0xFFF3FFF3,
+ 0xFFFFFFF9, 0xEFFFFFFF, 0xFFFDC679, 0xFFDCFFFF,
+ 0xFFFFFFF9, 0xEFFFFFFF, 0xFFFFDE41, 0xFFFDFFF3,
+ 0xFFFFFFFD, 0x6FFFFFFF, 0xFFBFDFE1, 0xFFFFFFF3,
+ 0xFFFFFFFB, 0xFFFFFFFF, 0xFFFFDFFE, 0xF807FFFF,
+ 0xFFFFFFFF, 0x3FFFFFFF, 0xFF9FC23E, 0x80FFFFF3,
+ 0xFFFFFFFF, 0xEFFFFFFF, 0xFFFFCFFF, 0xFFF9FFF3,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFDFE1, 0xFFFFFFF3,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFA3FBFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x780DFFFF, 0xFFFF807F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xE40DFFFF, 0xFFFFC0FF, 0xFFFFFFFF,
+ 0xFCFFFFFF, 0xC15FFFFF, 0xFFFFFFFF, 0x8001FFFF,
+ 0x0100FF20, 0xE0000000, 0xFFFFFFBF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x99021FFF, 0x3CFFFFFF, 0xFFE1FFFE,
+ 0xFFFFDF9B, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF, 0xFFFFFFFF,
+ 0xFC00FFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xE7FFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFE3FFFF, 0xFFE3FFFF, 0xFFF3FFFF, 0xFFF3FFFF,
+ 0xFFFFFFFF, 0xC07FFFFF, 0xD7F001BF, 0xFC00FFFF,
+ 0xFFFF8000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFDFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xF1FBFE78, 0xFFFFFFCE, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF, 0x00000000,
+ 0xFE7FFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFF0, 0xE82FFFFF, 0xFFFFFFFB, 0xFFF007FF,
+ 0xFFFFFFFC, 0xFFFFFCC3, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFF300FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x3FFFFF80,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x5FFFFFFF, 0x1FFF1FFC, 0x9FFF1FFF,
+ 0x00004000, 0x00000000, 0x00000000, 0x800E0000,
+ 0xFFFF8000, 0xFFC00000, 0x0000FFFF, 0xFFFE0000,
+ 0x3E2FFC84, 0xF3FFBD50, 0x0007C3E0, 0xFFFFFFFF,
+ 0x0000FFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFC00000, 0xFFFFFFFF, 0x07FFFFFF,
+ 0x00200000, 0x00000000, 0x00000000, 0xFFFFFF00,
+ 0x00000000, 0xFFFFFF80, 0xFFFFF800, 0x00000000,
+ 0xF0000000, 0xFFFFFFFF, 0xFFFFFFFF, 0x000003FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xC0000000, 0xE0001000, 0xFFFFFFF0, 0xFFFFFFFF,
+ 0x00000C21, 0x00000100, 0x80B85000, 0x00000001,
+ 0x00E00000, 0x80010000, 0x0000E800, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFE0E000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x01FFF81F,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000,
+ 0x00000000, 0xFFFE0000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x04000000, 0x00000000, 0x00000000, 0xFFF00000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFC00000, 0xF000FFFF,
+ 0x000000E0, 0x1F3E03FE, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xE1FFFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0xF7FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0xFFFFFFF0,
+ 0x9FFFFFFF, 0xFFFFFFFF, 0x0000FFFF, 0x8FFFFFFF,
+ 0xFFFFFFFF, 0x0001FFFF, 0xFFFF0FFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF87FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF, 0x7FFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x0000FFFF, 0x00000000, 0xFFFFFF80, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFF1FFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0FF07FFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0xFFFFFFFC, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFEFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFF7BB, 0xFFFFF09F, 0xFFFFFFFF, 0xFF0FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFEF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFC03F, 0xFFFC007F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFF9981FF, 0xFFFFEFF7, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x1FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000001, 0x07FFFFFE, 0x07FFFFFE, 0xFFFFFFC0,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00008080,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFD, 0xFFFFFFFF, 0x00000000, 0x00000000,
+ 0xF000F800, 0xFFFFFFFF, 0xFFFFFFFF, 0xDFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0007FC7F,
+ 0xFFFFF018, 0xFFFFC3FF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0xFFFFFFC0, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0xFF800000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00003FFF, 0x00000000,
+ 0x00000000, 0x0000F000, 0x00000000, 0x00000000,
+ 0xFFF00000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF
+ }
+};
diff --git a/lib/unictype/pr_bidi_non_spacing_mark.c b/lib/unictype/pr_bidi_non_spacing_mark.c
new file mode 100644
index 00000000..660d4c13
--- /dev/null
+++ b/lib/unictype/pr_bidi_non_spacing_mark.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_bidi_non_spacing_mark table. */
+#include "pr_bidi_non_spacing_mark.h"
+
+bool
+uc_is_property_bidi_non_spacing_mark (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_bidi_non_spacing_mark, uc);
+}
+
+#else
+
+bool
+uc_is_property_bidi_non_spacing_mark (ucs4_t uc)
+{
+ return (uc_bidi_category (uc) == UC_BIDI_NSM);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_BIDI_NON_SPACING_MARK =
+ { &uc_is_property_bidi_non_spacing_mark };
diff --git a/lib/unictype/pr_bidi_non_spacing_mark.h b/lib/unictype/pr_bidi_non_spacing_mark.h
new file mode 100644
index 00000000..6d3c6c23
--- /dev/null
+++ b/lib/unictype/pr_bidi_non_spacing_mark.h
@@ -0,0 +1,528 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[15];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[26 << 4];
+ }
+u_property_bidi_non_spacing_mark =
+{
+ { 15 },
+ {
+ 16 * sizeof (int) / sizeof (short) + 0,
+ 16 * sizeof (int) / sizeof (short) + 128,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 0,
+ 16 + 384 * sizeof (short) / sizeof (int) + 16,
+ 16 + 384 * sizeof (short) / sizeof (int) + 32,
+ 16 + 384 * sizeof (short) / sizeof (int) + 48,
+ 16 + 384 * sizeof (short) / sizeof (int) + 64,
+ 16 + 384 * sizeof (short) / sizeof (int) + 80,
+ 16 + 384 * sizeof (short) / sizeof (int) + 96,
+ 16 + 384 * sizeof (short) / sizeof (int) + 112,
+ 16 + 384 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 144,
+ 16 + 384 * sizeof (short) / sizeof (int) + 160,
+ 16 + 384 * sizeof (short) / sizeof (int) + 176,
+ 16 + 384 * sizeof (short) / sizeof (int) + 192,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 208,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 224,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 240,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 256,
+ 16 + 384 * sizeof (short) / sizeof (int) + 272,
+ 16 + 384 * sizeof (short) / sizeof (int) + 288,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 304,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 320,
+ 16 + 384 * sizeof (short) / sizeof (int) + 336,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 352,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 368,
+ 16 + 384 * sizeof (short) / sizeof (int) + 384,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 400,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x000003F8, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFE0000, 0xBFFFFFFF, 0x000000B6, 0x00000000,
+ 0x07FF0000, 0x00000000, 0x7FFFF800, 0x00010000,
+ 0x00000000, 0x00000000, 0xDFC00000, 0x00003D9F,
+ 0x00020000, 0xFFFF0000, 0x000007FF, 0x00000000,
+ 0x00000000, 0x0001FFC0, 0x00000000, 0x000FF800,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x10000000, 0x001E21FE, 0x0000000C,
+ 0x00000002, 0x10000000, 0x0000201E, 0x0000000C,
+ 0x00000006, 0x10000000, 0x00023986, 0x00230000,
+ 0x00000006, 0x10000000, 0x000021BE, 0x0000000C,
+ 0x00000002, 0x90000000, 0x0040201E, 0x0000000C,
+ 0x00000004, 0x00000000, 0x00002001, 0x00000000,
+ 0x00000000, 0xC0000000, 0x00603DC1, 0x0000000C,
+ 0x00000000, 0x10000000, 0x00003000, 0x0000000C,
+ 0x00000000, 0x00000000, 0x0000201E, 0x0000000C,
+ 0x00000000, 0x00000000, 0x005C0400, 0x00000000,
+ 0x00000000, 0x07F20000, 0x00007F80, 0x00000000,
+ 0x00000000, 0x1BF20000, 0x00003F00, 0x00000000,
+ 0x03000000, 0x02A00000, 0x00000000, 0x7FFE0000,
+ 0xFEFF00DF, 0x1FFFFFFF, 0x00000040, 0x00000000,
+ 0x00000000, 0x66FDE000, 0xC3000000, 0x001E0001,
+ 0x00002064, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x001C0000, 0x001C0000, 0x000C0000, 0x000C0000,
+ 0x00000000, 0x3F800000, 0x200FFE40, 0x00000000,
+ 0x00003800, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000000, 0x0E040187, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x01800000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000000F, 0x17D00000, 0x00000004, 0x000FF800,
+ 0x00000003, 0x0000033C, 0x00000000, 0x00000000,
+ 0x00000000, 0x00CFF000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0xC000007F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFF0000, 0x0001FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF,
+ 0x00000000, 0x0000FC00, 0x00000000, 0x00000000,
+ 0x06000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x30078000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000844, 0x00000060, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000010, 0x00000000,
+ 0x00000000, 0x00003FC0, 0x0003FF80, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00667E00, 0x00001008, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x40000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000FFFF, 0x0000007F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x20000000,
+ 0x0000F06E, 0x87000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xF8000380,
+ 0x00000FE7, 0x00003C00, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000001C, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF
+ }
+};
diff --git a/lib/unictype/pr_bidi_other_neutral.c b/lib/unictype/pr_bidi_other_neutral.c
new file mode 100644
index 00000000..f87b5fbd
--- /dev/null
+++ b/lib/unictype/pr_bidi_other_neutral.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_bidi_other_neutral table. */
+#include "pr_bidi_other_neutral.h"
+
+bool
+uc_is_property_bidi_other_neutral (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_bidi_other_neutral, uc);
+}
+
+#else
+
+bool
+uc_is_property_bidi_other_neutral (ucs4_t uc)
+{
+ return (uc_bidi_category (uc) == UC_BIDI_ON);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_BIDI_OTHER_NEUTRAL =
+ { &uc_is_property_bidi_other_neutral };
diff --git a/lib/unictype/pr_bidi_other_neutral.h b/lib/unictype/pr_bidi_other_neutral.h
new file mode 100644
index 00000000..2df9ce52
--- /dev/null
+++ b/lib/unictype/pr_bidi_other_neutral.h
@@ -0,0 +1,407 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[31 << 4];
+ }
+u_property_bidi_other_neutral =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ 3 + 256 * sizeof (short) / sizeof (int) + 208,
+ 3 + 256 * sizeof (short) / sizeof (int) + 224,
+ 3 + 256 * sizeof (short) / sizeof (int) + 240,
+ 3 + 256 * sizeof (short) / sizeof (int) + 256,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 288,
+ 3 + 256 * sizeof (short) / sizeof (int) + 304,
+ 3 + 256 * sizeof (short) / sizeof (int) + 320,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 336,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 352,
+ 3 + 256 * sizeof (short) / sizeof (int) + 368,
+ 3 + 256 * sizeof (short) / sizeof (int) + 384,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 400,
+ 3 + 256 * sizeof (short) / sizeof (int) + 416,
+ 3 + 256 * sizeof (short) / sizeof (int) + 432,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 448,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 464,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 480,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0xF80007C6, 0xF8000001, 0x78000001,
+ 0x00000000, 0xF9D0DBC2, 0x00800000, 0x00800000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x06000000, 0xFFFCFFFC, 0xFFFFBFE0,
+ 0x00000000, 0x00000000, 0x00000000, 0x40300000,
+ 0x000000B0, 0x00000000, 0x00000000, 0x00400000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000400, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000C0C0, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000200,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x03C00000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x05F80000,
+ 0x00000000, 0x00000000, 0x00000000, 0x7F000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00060000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x3C000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x03FF0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x18000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x03FF0000,
+ 0x000007FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000031, 0x00000000,
+ 0x00000000, 0x00000000, 0xC0000000, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xA0000000, 0xE000E003, 0x6000E000,
+ 0xFFFF0000, 0xFFE000FF, 0x7FFFFFEF, 0x70000000,
+ 0x00007000, 0x00000000, 0x00000000, 0x00000000,
+ 0xC1D0037B, 0x0C0002AF, 0xFFF83C1F, 0x00000000,
+ 0xFFFF0000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFF3FFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x003FFFFF, 0x00000000, 0xF8000000,
+ 0xFFDFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x000000FF,
+ 0xFFFFFFFF, 0x0000007F, 0x000007FF, 0xFFFFFFFF,
+ 0x000000FF, 0x00000000, 0x00000000, 0xFFFFFC00,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x1FFFEFFF, 0x0000000F, 0x00000000,
+ 0xFFFFF3DE, 0xFFFFFEFF, 0x7F47AFFF, 0xFFFFFFFE,
+ 0xFF1FFFFF, 0x7FFEFFFF, 0xFFFF17FF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x001F1FFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFE0007E0,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x0001FFFF, 0x00000000, 0x00000000,
+ 0xFBFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x000FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x003FFFFF, 0x0FFF0000,
+ 0xFFFFFF1E, 0xE0C10001, 0x00000000, 0x00000000,
+ 0x18000000, 0x00000001, 0x00000000, 0x08000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0x0000000F,
+ 0x60000000, 0x00000000, 0xFFFF0000, 0x70000000,
+ 0x00000000, 0xFFFE0000, 0x0000F000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x07800000,
+ 0x00000000, 0x00000000, 0xC0000000, 0x80000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFF0000, 0xFFFFFFFF, 0x0000007F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000E000, 0x00000000, 0x00000000, 0xC0080000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x00000003, 0x00000000, 0x00000000,
+ 0x00000100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000F00, 0x00000000, 0x00F00000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xC0000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x20000000,
+ 0x03FF0000, 0xFFFF0000, 0x7FD2FFFF, 0x00000973,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xF80007C6, 0xF8000001, 0xF8000001, 0x0000003F,
+ 0x00000000, 0x00000000, 0x00000000, 0x3E007F1C,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000002, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x0FFF07FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x80000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000023, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF0FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000FFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_bidi_pdf.c b/lib/unictype/pr_bidi_pdf.c
new file mode 100644
index 00000000..808a1efa
--- /dev/null
+++ b/lib/unictype/pr_bidi_pdf.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_bidi_pdf table. */
+#include "pr_bidi_pdf.h"
+
+bool
+uc_is_property_bidi_pdf (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_bidi_pdf, uc);
+}
+
+#else
+
+bool
+uc_is_property_bidi_pdf (ucs4_t uc)
+{
+ return (uc_bidi_category (uc) == UC_BIDI_PDF);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_BIDI_PDF =
+ { &uc_is_property_bidi_pdf };
diff --git a/lib/unictype/pr_bidi_pdf.h b/lib/unictype/pr_bidi_pdf.h
new file mode 100644
index 00000000..cef93250
--- /dev/null
+++ b/lib/unictype/pr_bidi_pdf.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_property_bidi_pdf =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0x00000000, 0x00001000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_bidi_segment_separator.c b/lib/unictype/pr_bidi_segment_separator.c
new file mode 100644
index 00000000..0b3b08af
--- /dev/null
+++ b/lib/unictype/pr_bidi_segment_separator.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_bidi_segment_separator table. */
+#include "pr_bidi_segment_separator.h"
+
+bool
+uc_is_property_bidi_segment_separator (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_bidi_segment_separator, uc);
+}
+
+#else
+
+bool
+uc_is_property_bidi_segment_separator (ucs4_t uc)
+{
+ return (uc_bidi_category (uc) == UC_BIDI_S);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_BIDI_SEGMENT_SEPARATOR =
+ { &uc_is_property_bidi_segment_separator };
diff --git a/lib/unictype/pr_bidi_segment_separator.h b/lib/unictype/pr_bidi_segment_separator.h
new file mode 100644
index 00000000..09b018e3
--- /dev/null
+++ b/lib/unictype/pr_bidi_segment_separator.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_property_bidi_segment_separator =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0x80000A00, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_bidi_whitespace.c b/lib/unictype/pr_bidi_whitespace.c
new file mode 100644
index 00000000..d16928a1
--- /dev/null
+++ b/lib/unictype/pr_bidi_whitespace.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_bidi_whitespace table. */
+#include "pr_bidi_whitespace.h"
+
+bool
+uc_is_property_bidi_whitespace (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_bidi_whitespace, uc);
+}
+
+#else
+
+bool
+uc_is_property_bidi_whitespace (ucs4_t uc)
+{
+ return (uc_bidi_category (uc) == UC_BIDI_WS);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_BIDI_WHITESPACE =
+ { &uc_is_property_bidi_whitespace };
diff --git a/lib/unictype/pr_bidi_whitespace.h b/lib/unictype/pr_bidi_whitespace.h
new file mode 100644
index 00000000..2053057c
--- /dev/null
+++ b/lib/unictype/pr_bidi_whitespace.h
@@ -0,0 +1,172 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[5 << 4];
+ }
+u_property_bidi_whitespace =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -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
+ },
+ {
+ 0x00001000, 0x00000001, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00004000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x000007FF, 0x00000100, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_byname.c b/lib/unictype/pr_byname.c
new file mode 100644
index 00000000..cb6e553d
--- /dev/null
+++ b/lib/unictype/pr_byname.c
@@ -0,0 +1,59 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include <string.h>
+
+/* Get gperf generated lookup function. */
+#include "unictype/pr_byname.h"
+
+static const uc_property_t UC_PROPERTY_NONE = { NULL };
+
+uc_property_t
+uc_property_byname (const char *property_name)
+{
+ char buf[MAX_WORD_LENGTH + 1];
+ const char *cp;
+ char *bp;
+ unsigned int count;
+ const struct named_property *found;
+
+ for (cp = property_name, bp = buf, count = MAX_WORD_LENGTH + 1; ; cp++, bp++)
+ {
+ unsigned char c = (unsigned char) *cp;
+ if (c >= 0x80)
+ goto invalid;
+ if (c >= 'A' && c <= 'Z')
+ c += 'a' - 'A';
+ else if (c == ' ' || c == '-')
+ c = '_';
+ *bp = c;
+ if (c == '\0')
+ break;
+ if (--count == 0)
+ goto invalid;
+ }
+ found = uc_property_lookup (buf, bp - buf);
+ if (found != NULL)
+ return found->property;
+ invalid:
+ return UC_PROPERTY_NONE;
+}
diff --git a/lib/unictype/pr_byname.gperf b/lib/unictype/pr_byname.gperf
new file mode 100644
index 00000000..5d3daa0d
--- /dev/null
+++ b/lib/unictype/pr_byname.gperf
@@ -0,0 +1,89 @@
+struct named_property { const char *name; uc_property_t property; };
+%struct-type
+%language=ANSI-C
+%define hash-function-name properties_hash
+%define lookup-function-name uc_property_lookup
+%7bit
+%readonly-tables
+%global-table
+%define word-array-name properties
+%%
+white_space, { &uc_is_property_white_space }
+alphabetic, { &uc_is_property_alphabetic }
+other_alphabetic, { &uc_is_property_other_alphabetic }
+not_a_character, { &uc_is_property_not_a_character }
+default_ignorable_code_point, { &uc_is_property_default_ignorable_code_point }
+other_default_ignorable_code_point, { &uc_is_property_other_default_ignorable_code_point }
+deprecated, { &uc_is_property_deprecated }
+logical_order_exception, { &uc_is_property_logical_order_exception }
+variation_selector, { &uc_is_property_variation_selector }
+private_use, { &uc_is_property_private_use }
+unassigned_code_value, { &uc_is_property_unassigned_code_value }
+uppercase, { &uc_is_property_uppercase }
+other_uppercase, { &uc_is_property_other_uppercase }
+lowercase, { &uc_is_property_lowercase }
+other_lowercase, { &uc_is_property_other_lowercase }
+titlecase, { &uc_is_property_titlecase }
+soft_dotted, { &uc_is_property_soft_dotted }
+id_start, { &uc_is_property_id_start }
+other_id_start, { &uc_is_property_other_id_start }
+id_continue, { &uc_is_property_id_continue }
+other_id_continue, { &uc_is_property_other_id_continue }
+xid_start, { &uc_is_property_xid_start }
+xid_continue, { &uc_is_property_xid_continue }
+pattern_white_space, { &uc_is_property_pattern_white_space }
+pattern_syntax, { &uc_is_property_pattern_syntax }
+join_control, { &uc_is_property_join_control }
+grapheme_base, { &uc_is_property_grapheme_base }
+grapheme_extend, { &uc_is_property_grapheme_extend }
+other_grapheme_extend, { &uc_is_property_other_grapheme_extend }
+grapheme_link, { &uc_is_property_grapheme_link }
+bidi_control, { &uc_is_property_bidi_control }
+bidi_left_to_right, { &uc_is_property_bidi_left_to_right }
+bidi_hebrew_right_to_left, { &uc_is_property_bidi_hebrew_right_to_left }
+bidi_arabic_right_to_left, { &uc_is_property_bidi_arabic_right_to_left }
+bidi_european_digit, { &uc_is_property_bidi_european_digit }
+bidi_eur_num_separator, { &uc_is_property_bidi_eur_num_separator }
+bidi_eur_num_terminator, { &uc_is_property_bidi_eur_num_terminator }
+bidi_arabic_digit, { &uc_is_property_bidi_arabic_digit }
+bidi_common_separator, { &uc_is_property_bidi_common_separator }
+bidi_block_separator, { &uc_is_property_bidi_block_separator }
+bidi_segment_separator, { &uc_is_property_bidi_segment_separator }
+bidi_whitespace, { &uc_is_property_bidi_whitespace }
+bidi_non_spacing_mark, { &uc_is_property_bidi_non_spacing_mark }
+bidi_boundary_neutral, { &uc_is_property_bidi_boundary_neutral }
+bidi_pdf, { &uc_is_property_bidi_pdf }
+bidi_embedding_or_override, { &uc_is_property_bidi_embedding_or_override }
+bidi_other_neutral, { &uc_is_property_bidi_other_neutral }
+hex_digit, { &uc_is_property_hex_digit }
+ascii_hex_digit, { &uc_is_property_ascii_hex_digit }
+ideographic, { &uc_is_property_ideographic }
+unified_ideograph, { &uc_is_property_unified_ideograph }
+radical, { &uc_is_property_radical }
+ids_binary_operator, { &uc_is_property_ids_binary_operator }
+ids_trinary_operator, { &uc_is_property_ids_trinary_operator }
+zero_width, { &uc_is_property_zero_width }
+space, { &uc_is_property_space }
+non_break, { &uc_is_property_non_break }
+iso_control, { &uc_is_property_iso_control }
+format_control, { &uc_is_property_format_control }
+dash, { &uc_is_property_dash }
+hyphen, { &uc_is_property_hyphen }
+punctuation, { &uc_is_property_punctuation }
+line_separator, { &uc_is_property_line_separator }
+paragraph_separator, { &uc_is_property_paragraph_separator }
+quotation_mark, { &uc_is_property_quotation_mark }
+sentence_terminal, { &uc_is_property_sentence_terminal }
+terminal_punctuation, { &uc_is_property_terminal_punctuation }
+currency_symbol, { &uc_is_property_currency_symbol }
+math, { &uc_is_property_math }
+other_math, { &uc_is_property_other_math }
+paired_punctuation, { &uc_is_property_paired_punctuation }
+left_of_pair, { &uc_is_property_left_of_pair }
+combining, { &uc_is_property_combining }
+composite, { &uc_is_property_composite }
+decimal_digit, { &uc_is_property_decimal_digit }
+numeric, { &uc_is_property_numeric }
+diacritic, { &uc_is_property_diacritic }
+extender, { &uc_is_property_extender }
+ignorable_control, { &uc_is_property_ignorable_control }
diff --git a/lib/unictype/pr_byname.h b/lib/unictype/pr_byname.h
new file mode 100644
index 00000000..d5290015
--- /dev/null
+++ b/lib/unictype/pr_byname.h
@@ -0,0 +1,289 @@
+/* ANSI-C code produced by gperf version 3.0.4 */
+/* Command-line: gperf -m 10 ./unictype/pr_byname.gperf */
+/* Computed positions: -k'1,8,10' */
+
+#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
+
+#line 1 "./unictype/pr_byname.gperf"
+struct named_property { const char *name; uc_property_t property; };
+
+#define TOTAL_KEYWORDS 79
+#define MIN_WORD_LENGTH 4
+#define MAX_WORD_LENGTH 34
+#define MIN_HASH_VALUE 7
+#define MAX_HASH_VALUE 120
+/* maximum key range = 114, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+properties_hash (register const char *str, register unsigned int len)
+{
+ static const unsigned char asso_values[] =
+ {
+ 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
+ 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
+ 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
+ 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
+ 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
+ 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
+ 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
+ 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
+ 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
+ 121, 121, 121, 121, 121, 12, 121, 30, 0, 51,
+ 37, 1, 42, 43, 36, 0, 4, 50, 14, 47,
+ 1, 9, 3, 43, 0, 13, 7, 37, 30, 0,
+ 44, 27, 0, 121, 121, 121, 121, 121
+ };
+ register int hval = len;
+
+ switch (hval)
+ {
+ default:
+ hval += asso_values[(unsigned char)str[9]];
+ /*FALLTHROUGH*/
+ case 9:
+ case 8:
+ hval += asso_values[(unsigned char)str[7]];
+ /*FALLTHROUGH*/
+ case 7:
+ case 6:
+ case 5:
+ case 4:
+ case 3:
+ case 2:
+ case 1:
+ hval += asso_values[(unsigned char)str[0]];
+ break;
+ }
+ return hval;
+}
+
+static const struct named_property properties[] =
+ {
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 62 "./unictype/pr_byname.gperf"
+ {"radical", { &uc_is_property_radical }},
+#line 86 "./unictype/pr_byname.gperf"
+ {"numeric", { &uc_is_property_numeric }},
+#line 88 "./unictype/pr_byname.gperf"
+ {"extender", { &uc_is_property_extender }},
+ {""}, {""}, {""},
+#line 41 "./unictype/pr_byname.gperf"
+ {"bidi_control", { &uc_is_property_bidi_control }},
+#line 60 "./unictype/pr_byname.gperf"
+ {"ideographic", { &uc_is_property_ideographic }},
+#line 28 "./unictype/pr_byname.gperf"
+ {"id_start", { &uc_is_property_id_start }},
+#line 52 "./unictype/pr_byname.gperf"
+ {"bidi_whitespace", { &uc_is_property_bidi_whitespace }},
+#line 36 "./unictype/pr_byname.gperf"
+ {"join_control", { &uc_is_property_join_control }},
+#line 66 "./unictype/pr_byname.gperf"
+ {"space", { &uc_is_property_space }},
+ {""}, {""},
+#line 64 "./unictype/pr_byname.gperf"
+ {"ids_trinary_operator", { &uc_is_property_ids_trinary_operator }},
+#line 45 "./unictype/pr_byname.gperf"
+ {"bidi_european_digit", { &uc_is_property_bidi_european_digit }},
+#line 46 "./unictype/pr_byname.gperf"
+ {"bidi_eur_num_separator", { &uc_is_property_bidi_eur_num_separator }},
+#line 47 "./unictype/pr_byname.gperf"
+ {"bidi_eur_num_terminator", { &uc_is_property_bidi_eur_num_terminator }},
+#line 81 "./unictype/pr_byname.gperf"
+ {"paired_punctuation", { &uc_is_property_paired_punctuation }},
+#line 43 "./unictype/pr_byname.gperf"
+ {"bidi_hebrew_right_to_left", { &uc_is_property_bidi_hebrew_right_to_left }},
+#line 68 "./unictype/pr_byname.gperf"
+ {"iso_control", { &uc_is_property_iso_control }},
+#line 23 "./unictype/pr_byname.gperf"
+ {"other_uppercase", { &uc_is_property_other_uppercase }},
+#line 26 "./unictype/pr_byname.gperf"
+ {"titlecase", { &uc_is_property_titlecase }},
+#line 72 "./unictype/pr_byname.gperf"
+ {"punctuation", { &uc_is_property_punctuation }},
+#line 73 "./unictype/pr_byname.gperf"
+ {"line_separator", { &uc_is_property_line_separator }},
+#line 27 "./unictype/pr_byname.gperf"
+ {"soft_dotted", { &uc_is_property_soft_dotted }},
+#line 39 "./unictype/pr_byname.gperf"
+ {"other_grapheme_extend", { &uc_is_property_other_grapheme_extend }},
+#line 25 "./unictype/pr_byname.gperf"
+ {"other_lowercase", { &uc_is_property_other_lowercase }},
+#line 53 "./unictype/pr_byname.gperf"
+ {"bidi_non_spacing_mark", { &uc_is_property_bidi_non_spacing_mark }},
+#line 24 "./unictype/pr_byname.gperf"
+ {"lowercase", { &uc_is_property_lowercase }},
+#line 74 "./unictype/pr_byname.gperf"
+ {"paragraph_separator", { &uc_is_property_paragraph_separator }},
+#line 76 "./unictype/pr_byname.gperf"
+ {"sentence_terminal", { &uc_is_property_sentence_terminal }},
+#line 20 "./unictype/pr_byname.gperf"
+ {"private_use", { &uc_is_property_private_use }},
+#line 67 "./unictype/pr_byname.gperf"
+ {"non_break", { &uc_is_property_non_break }},
+#line 70 "./unictype/pr_byname.gperf"
+ {"dash", { &uc_is_property_dash }},
+#line 71 "./unictype/pr_byname.gperf"
+ {"hyphen", { &uc_is_property_hyphen }},
+#line 89 "./unictype/pr_byname.gperf"
+ {"ignorable_control", { &uc_is_property_ignorable_control }},
+#line 77 "./unictype/pr_byname.gperf"
+ {"terminal_punctuation", { &uc_is_property_terminal_punctuation }},
+#line 58 "./unictype/pr_byname.gperf"
+ {"hex_digit", { &uc_is_property_hex_digit }},
+#line 87 "./unictype/pr_byname.gperf"
+ {"diacritic", { &uc_is_property_diacritic }},
+#line 48 "./unictype/pr_byname.gperf"
+ {"bidi_arabic_digit", { &uc_is_property_bidi_arabic_digit }},
+#line 30 "./unictype/pr_byname.gperf"
+ {"id_continue", { &uc_is_property_id_continue }},
+#line 18 "./unictype/pr_byname.gperf"
+ {"logical_order_exception", { &uc_is_property_logical_order_exception }},
+#line 55 "./unictype/pr_byname.gperf"
+ {"bidi_pdf", { &uc_is_property_bidi_pdf }},
+#line 79 "./unictype/pr_byname.gperf"
+ {"math", { &uc_is_property_math }},
+#line 14 "./unictype/pr_byname.gperf"
+ {"not_a_character", { &uc_is_property_not_a_character }},
+#line 32 "./unictype/pr_byname.gperf"
+ {"xid_start", { &uc_is_property_xid_start }},
+#line 57 "./unictype/pr_byname.gperf"
+ {"bidi_other_neutral", { &uc_is_property_bidi_other_neutral }},
+#line 44 "./unictype/pr_byname.gperf"
+ {"bidi_arabic_right_to_left", { &uc_is_property_bidi_arabic_right_to_left }},
+#line 35 "./unictype/pr_byname.gperf"
+ {"pattern_syntax", { &uc_is_property_pattern_syntax }},
+#line 37 "./unictype/pr_byname.gperf"
+ {"grapheme_base", { &uc_is_property_grapheme_base }},
+#line 59 "./unictype/pr_byname.gperf"
+ {"ascii_hex_digit", { &uc_is_property_ascii_hex_digit }},
+#line 22 "./unictype/pr_byname.gperf"
+ {"uppercase", { &uc_is_property_uppercase }},
+#line 38 "./unictype/pr_byname.gperf"
+ {"grapheme_extend", { &uc_is_property_grapheme_extend }},
+#line 83 "./unictype/pr_byname.gperf"
+ {"combining", { &uc_is_property_combining }},
+#line 85 "./unictype/pr_byname.gperf"
+ {"decimal_digit", { &uc_is_property_decimal_digit }},
+#line 56 "./unictype/pr_byname.gperf"
+ {"bidi_embedding_or_override", { &uc_is_property_bidi_embedding_or_override }},
+#line 33 "./unictype/pr_byname.gperf"
+ {"xid_continue", { &uc_is_property_xid_continue }},
+#line 11 "./unictype/pr_byname.gperf"
+ {"white_space", { &uc_is_property_white_space }},
+#line 51 "./unictype/pr_byname.gperf"
+ {"bidi_segment_separator", { &uc_is_property_bidi_segment_separator }},
+#line 84 "./unictype/pr_byname.gperf"
+ {"composite", { &uc_is_property_composite }},
+#line 82 "./unictype/pr_byname.gperf"
+ {"left_of_pair", { &uc_is_property_left_of_pair }},
+#line 19 "./unictype/pr_byname.gperf"
+ {"variation_selector", { &uc_is_property_variation_selector }},
+#line 34 "./unictype/pr_byname.gperf"
+ {"pattern_white_space", { &uc_is_property_pattern_white_space }},
+#line 40 "./unictype/pr_byname.gperf"
+ {"grapheme_link", { &uc_is_property_grapheme_link }},
+#line 42 "./unictype/pr_byname.gperf"
+ {"bidi_left_to_right", { &uc_is_property_bidi_left_to_right }},
+#line 29 "./unictype/pr_byname.gperf"
+ {"other_id_start", { &uc_is_property_other_id_start }},
+#line 16 "./unictype/pr_byname.gperf"
+ {"other_default_ignorable_code_point", { &uc_is_property_other_default_ignorable_code_point }},
+#line 13 "./unictype/pr_byname.gperf"
+ {"other_alphabetic", { &uc_is_property_other_alphabetic }},
+#line 63 "./unictype/pr_byname.gperf"
+ {"ids_binary_operator", { &uc_is_property_ids_binary_operator }},
+#line 49 "./unictype/pr_byname.gperf"
+ {"bidi_common_separator", { &uc_is_property_bidi_common_separator }},
+#line 75 "./unictype/pr_byname.gperf"
+ {"quotation_mark", { &uc_is_property_quotation_mark }},
+#line 50 "./unictype/pr_byname.gperf"
+ {"bidi_block_separator", { &uc_is_property_bidi_block_separator }},
+ {""}, {""}, {""},
+#line 65 "./unictype/pr_byname.gperf"
+ {"zero_width", { &uc_is_property_zero_width }},
+ {""},
+#line 80 "./unictype/pr_byname.gperf"
+ {"other_math", { &uc_is_property_other_math }},
+ {""}, {""}, {""}, {""}, {""},
+#line 17 "./unictype/pr_byname.gperf"
+ {"deprecated", { &uc_is_property_deprecated }},
+ {""}, {""}, {""},
+#line 54 "./unictype/pr_byname.gperf"
+ {"bidi_boundary_neutral", { &uc_is_property_bidi_boundary_neutral }},
+#line 21 "./unictype/pr_byname.gperf"
+ {"unassigned_code_value", { &uc_is_property_unassigned_code_value }},
+ {""},
+#line 12 "./unictype/pr_byname.gperf"
+ {"alphabetic", { &uc_is_property_alphabetic }},
+ {""}, {""}, {""}, {""},
+#line 61 "./unictype/pr_byname.gperf"
+ {"unified_ideograph", { &uc_is_property_unified_ideograph }},
+ {""}, {""},
+#line 78 "./unictype/pr_byname.gperf"
+ {"currency_symbol", { &uc_is_property_currency_symbol }},
+ {""},
+#line 69 "./unictype/pr_byname.gperf"
+ {"format_control", { &uc_is_property_format_control }},
+ {""}, {""}, {""}, {""}, {""},
+#line 31 "./unictype/pr_byname.gperf"
+ {"other_id_continue", { &uc_is_property_other_id_continue }},
+ {""}, {""}, {""}, {""}, {""},
+#line 15 "./unictype/pr_byname.gperf"
+ {"default_ignorable_code_point", { &uc_is_property_default_ignorable_code_point }}
+ };
+
+#ifdef __GNUC__
+__inline
+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+const struct named_property *
+uc_property_lookup (register const char *str, register unsigned int len)
+{
+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+ {
+ register int key = properties_hash (str, len);
+
+ if (key <= MAX_HASH_VALUE && key >= 0)
+ {
+ register const char *s = properties[key].name;
+
+ if (*str == *s && !strcmp (str + 1, s + 1))
+ return &properties[key];
+ }
+ }
+ return 0;
+}
diff --git a/lib/unictype/pr_combining.c b/lib/unictype/pr_combining.c
new file mode 100644
index 00000000..5332b361
--- /dev/null
+++ b/lib/unictype/pr_combining.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_combining table. */
+#include "pr_combining.h"
+
+bool
+uc_is_property_combining (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_combining, uc);
+}
+
+const uc_property_t UC_PROPERTY_COMBINING =
+ { &uc_is_property_combining };
diff --git a/lib/unictype/pr_combining.h b/lib/unictype/pr_combining.h
new file mode 100644
index 00000000..f17c6a50
--- /dev/null
+++ b/lib/unictype/pr_combining.h
@@ -0,0 +1,528 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[15];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[26 << 4];
+ }
+u_property_combining =
+{
+ { 15 },
+ {
+ 16 * sizeof (int) / sizeof (short) + 0,
+ 16 * sizeof (int) / sizeof (short) + 128,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 0,
+ 16 + 384 * sizeof (short) / sizeof (int) + 16,
+ 16 + 384 * sizeof (short) / sizeof (int) + 32,
+ 16 + 384 * sizeof (short) / sizeof (int) + 48,
+ 16 + 384 * sizeof (short) / sizeof (int) + 64,
+ 16 + 384 * sizeof (short) / sizeof (int) + 80,
+ 16 + 384 * sizeof (short) / sizeof (int) + 96,
+ 16 + 384 * sizeof (short) / sizeof (int) + 112,
+ 16 + 384 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 144,
+ 16 + 384 * sizeof (short) / sizeof (int) + 160,
+ 16 + 384 * sizeof (short) / sizeof (int) + 176,
+ 16 + 384 * sizeof (short) / sizeof (int) + 192,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 208,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 224,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 240,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 256,
+ 16 + 384 * sizeof (short) / sizeof (int) + 272,
+ 16 + 384 * sizeof (short) / sizeof (int) + 288,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 304,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 320,
+ 16 + 384 * sizeof (short) / sizeof (int) + 336,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 352,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 368,
+ 16 + 384 * sizeof (short) / sizeof (int) + 384,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 400,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x000003F8, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFE0000, 0xBFFFFFFF, 0x000000B6, 0x00000000,
+ 0x07FF0000, 0x00000000, 0x7FFFF800, 0x00010000,
+ 0x00000000, 0x00000000, 0xDFC00000, 0x00003D9F,
+ 0x00020000, 0xFFFF0000, 0x000007FF, 0x00000000,
+ 0x00000000, 0x0001FFC0, 0x00000000, 0x000FF800,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000000E, 0xD0000000, 0x001E3FFF, 0x0000000C,
+ 0x0000000E, 0xD0000000, 0x0080399F, 0x0000000C,
+ 0x0000000E, 0xD0000000, 0x00023987, 0x00230000,
+ 0x0000000E, 0xD0000000, 0x00003BBF, 0x0000000C,
+ 0x0000000E, 0xD0000000, 0x00C0399F, 0x0000000C,
+ 0x00000004, 0xC0000000, 0x00803DC7, 0x00000000,
+ 0x0000000E, 0xC0000000, 0x00603DDF, 0x0000000C,
+ 0x0000000C, 0xD0000000, 0x00603DDF, 0x0000000C,
+ 0x0000000C, 0xC0000000, 0x00803DDF, 0x0000000C,
+ 0x0000000C, 0x00000000, 0xFF5F8400, 0x000C0000,
+ 0x00000000, 0x07F20000, 0x00007F80, 0x00000000,
+ 0x00000000, 0x1BF20000, 0x00003F00, 0x00000000,
+ 0x03000000, 0xC2A00000, 0x00000000, 0xFFFE0000,
+ 0xFEFF00DF, 0x1FFFFFFF, 0x00000040, 0x00000000,
+ 0x00000000, 0x7FFFF800, 0xC3C00000, 0x001E3F9D,
+ 0x0000BFFC, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x001C0000, 0x001C0000, 0x000C0000, 0x000C0000,
+ 0x00000000, 0xFFC00000, 0x200FFFFF, 0x00000000,
+ 0x00003800, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000000, 0x0FFF0FFF, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFF0000, 0x00000301, 0x00000000,
+ 0x0F800000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000001F, 0xFFF00000, 0x0000001F, 0x000FF800,
+ 0x00000007, 0x000007FE, 0x00000000, 0x00000000,
+ 0x00000000, 0x00FFFFF0, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0xC000007F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFF0000, 0x0001FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF,
+ 0x00000000, 0x0000FC00, 0x00000000, 0x00000000,
+ 0x06000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x30078000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000844, 0x000000F8, 0x00000000, 0x00000000,
+ 0x00000003, 0xFFF00000, 0x0000001F, 0x00000000,
+ 0x00000000, 0x00003FC0, 0x000FFF80, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x007FFE00, 0x00003008, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x40000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000FFFF, 0x0000007F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x20000000,
+ 0x0000F06E, 0x87000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xF807E3E0,
+ 0x00000FE7, 0x00003C00, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000001C, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF
+ }
+};
diff --git a/lib/unictype/pr_composite.c b/lib/unictype/pr_composite.c
new file mode 100644
index 00000000..4f01ea86
--- /dev/null
+++ b/lib/unictype/pr_composite.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_composite table. */
+#include "pr_composite.h"
+
+bool
+uc_is_property_composite (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_composite, uc);
+}
+
+const uc_property_t UC_PROPERTY_COMPOSITE =
+ { &uc_is_property_composite };
diff --git a/lib/unictype/pr_composite.h b/lib/unictype/pr_composite.h
new file mode 100644
index 00000000..43639b56
--- /dev/null
+++ b/lib/unictype/pr_composite.h
@@ -0,0 +1,375 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[23 << 4];
+ }
+u_property_composite =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ 3 + 256 * sizeof (short) / sizeof (int) + 208,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 224,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 240,
+ 3 + 256 * sizeof (short) / sizeof (int) + 256,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 288,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 304,
+ 3 + 256 * sizeof (short) / sizeof (int) + 320,
+ 3 + 256 * sizeof (short) / sizeof (int) + 336,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 352,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x70000000, 0x3E7EFFBF, 0xBE7EFFBF,
+ 0xFFFCFFFF, 0xFEFDFF3F, 0xFFF3F3F9, 0x7FFFFF3F,
+ 0x00000000, 0x00018003, 0xDFFFFFF0, 0xFF3FFFCF,
+ 0xCFFFFFFF, 0x000FFFC0, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000010, 0x00000000,
+ 0x0001D760, 0x0001FC00, 0x00187C00, 0x00000000,
+ 0x0200708B, 0x02000000, 0x708B0000, 0x00C00000,
+ 0x00000000, 0x00000000, 0xFCCF0006, 0x033FFCFC,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x0000007C, 0x00000000, 0x01E00000,
+ 0x00000000, 0x00000000, 0x00080005, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00120200, 0xFF000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xB0001800, 0x00000000,
+ 0x00000000, 0x00480000, 0x4E000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x30001900, 0x00000000,
+ 0x00100000, 0x00000000, 0x00001C00, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000100, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000D81, 0x00000000,
+ 0x00000000, 0x00000000, 0x00001C00, 0x00000000,
+ 0x00000000, 0x00000000, 0x74000000, 0x00000000,
+ 0x00000000, 0x00080000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00080000, 0x30000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x10842008, 0x03E80200,
+ 0x20080002, 0x02001084, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000040, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00045540, 0x28000000, 0x0000000B, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF,
+ 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x1555FFFF,
+ 0xFFFFFFFF, 0x17DFFFFF, 0xE7C7F5DE, 0x15DC37F7,
+ 0x00000000, 0x10D80060, 0x00800380, 0x00000000,
+ 0x00000000, 0x00000100, 0x00000000, 0x00000000,
+ 0x0040026B, 0x08000007, 0xFFF80000, 0x0DEE0DEE,
+ 0x0C000000, 0x00004000, 0x0000E000, 0x00000000,
+ 0x00001210, 0x0001B050, 0x00000292, 0x0333E005,
+ 0x00000333, 0x0000F000, 0x00000000, 0x00003C0F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFFFE00,
+ 0xFFFFFFFF, 0x003FFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00001000, 0x00000000, 0x00000000, 0x00700000,
+ 0x00000000, 0x00000000, 0x10000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55555000, 0x36DB02A5,
+ 0xC0100000, 0x55555000, 0x36DB02A5, 0xC7900000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x7FFFFFFF, 0xFFFFFFFF, 0xFFFF000F, 0x7FFFC000,
+ 0x00000000, 0xFFFE0000, 0x0000FFFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0000001F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xA0F8007F, 0x5F7FFC00, 0x0000FFDB, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0FFFFC00,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF, 0xFFFFFFF0,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x3FFFFFFF, 0xFFFF0000, 0xFFFFFFFF,
+ 0xFFFCFFFF, 0xFFFFFFFF, 0x000000FF, 0x1FFF0000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA820000,
+ 0x00000000, 0x00000000, 0x00000000, 0x1FE00000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xC0000000, 0x0000001F,
+ 0x00000000, 0xF8000000, 0x00000001, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_currency_symbol.c b/lib/unictype/pr_currency_symbol.c
new file mode 100644
index 00000000..8a8723b3
--- /dev/null
+++ b/lib/unictype/pr_currency_symbol.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_currency_symbol table. */
+#include "pr_currency_symbol.h"
+
+bool
+uc_is_property_currency_symbol (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_currency_symbol, uc);
+}
+
+#else
+
+bool
+uc_is_property_currency_symbol (ucs4_t uc)
+{
+ return uc_is_general_category (uc, UC_CATEGORY_Sc);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_CURRENCY_SYMBOL =
+ { &uc_is_property_currency_symbol };
diff --git a/lib/unictype/pr_currency_symbol.h b/lib/unictype/pr_currency_symbol.h
new file mode 100644
index 00000000..8815876d
--- /dev/null
+++ b/lib/unictype/pr_currency_symbol.h
@@ -0,0 +1,188 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[9 << 4];
+ }
+u_property_currency_symbol =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 96,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 112,
+ 2 + 128 * sizeof (short) / sizeof (int) + 128
+ },
+ {
+ 0x00000000, 0x00000010, 0x00000000, 0x00000000,
+ 0x00000000, 0x0000003C, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000800, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000C0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00020000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x02000000,
+ 0x00000000, 0x80000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x08000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x003FFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x10000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000200,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000010, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000063
+ }
+};
diff --git a/lib/unictype/pr_dash.c b/lib/unictype/pr_dash.c
new file mode 100644
index 00000000..16bccad1
--- /dev/null
+++ b/lib/unictype/pr_dash.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_dash table. */
+#include "pr_dash.h"
+
+bool
+uc_is_property_dash (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_dash, uc);
+}
+
+const uc_property_t UC_PROPERTY_DASH =
+ { &uc_is_property_dash };
diff --git a/lib/unictype/pr_dash.h b/lib/unictype/pr_dash.h
new file mode 100644
index 00000000..70e67e02
--- /dev/null
+++ b/lib/unictype/pr_dash.h
@@ -0,0 +1,184 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[8 << 4];
+ }
+u_property_dash =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 80,
+ 2 + 128 * sizeof (short) / sizeof (int) + 96,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 112
+ },
+ {
+ 0x00000000, 0x00002000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000400, 0x40000000, 0x00000000, 0x00000000,
+ 0x00000040, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x003F0000, 0x00000000, 0x00080000, 0x08000000,
+ 0x00000800, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00040000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x04800000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x10000000, 0x00010000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000001, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00060000, 0x01000000, 0x00000008,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00002000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_decimal_digit.c b/lib/unictype/pr_decimal_digit.c
new file mode 100644
index 00000000..e344158a
--- /dev/null
+++ b/lib/unictype/pr_decimal_digit.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_decimal_digit table. */
+#include "pr_decimal_digit.h"
+
+bool
+uc_is_property_decimal_digit (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_decimal_digit, uc);
+}
+
+#else
+
+bool
+uc_is_property_decimal_digit (ucs4_t uc)
+{
+ return uc_is_general_category (uc, UC_CATEGORY_Nd);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_DECIMAL_DIGIT =
+ { &uc_is_property_decimal_digit };
diff --git a/lib/unictype/pr_decimal_digit.h b/lib/unictype/pr_decimal_digit.h
new file mode 100644
index 00000000..d73e8bc5
--- /dev/null
+++ b/lib/unictype/pr_decimal_digit.h
@@ -0,0 +1,351 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[17 << 4];
+ }
+u_property_decimal_digit =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ 3 + 256 * sizeof (short) / sizeof (int) + 208,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 224,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 240,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 256,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x03FF0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000003FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x03FF0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x000003FF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x000003FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x000003FF, 0x00000000,
+ 0x03FF0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000003FF,
+ 0x03FF0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000FFC0, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x03FF0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF03FF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x000003FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x000003FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x03FF0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x000003FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFC000, 0xFFFFFFFF
+ }
+};
diff --git a/lib/unictype/pr_default_ignorable_code_point.c b/lib/unictype/pr_default_ignorable_code_point.c
new file mode 100644
index 00000000..f4b7f19e
--- /dev/null
+++ b/lib/unictype/pr_default_ignorable_code_point.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_default_ignorable_code_point table. */
+#include "pr_default_ignorable_code_point.h"
+
+bool
+uc_is_property_default_ignorable_code_point (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_default_ignorable_code_point, uc);
+}
+
+const uc_property_t UC_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT =
+ { &uc_is_property_default_ignorable_code_point };
diff --git a/lib/unictype/pr_default_ignorable_code_point.h b/lib/unictype/pr_default_ignorable_code_point.h
new file mode 100644
index 00000000..df57db55
--- /dev/null
+++ b/lib/unictype/pr_default_ignorable_code_point.h
@@ -0,0 +1,464 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[15];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[10 << 4];
+ }
+u_property_default_ignorable_code_point =
+{
+ { 15 },
+ {
+ 16 * sizeof (int) / sizeof (short) + 0,
+ 16 * sizeof (int) / sizeof (short) + 128,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ 16 + 384 * sizeof (short) / sizeof (int) + 0,
+ 16 + 384 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 48,
+ 16 + 384 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 96,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 112,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 144,
+ 16 + 384 * sizeof (short) / sizeof (int) + 144,
+ 16 + 384 * sizeof (short) / sizeof (int) + 144,
+ 16 + 384 * sizeof (short) / sizeof (int) + 144,
+ 16 + 384 * sizeof (short) / sizeof (int) + 144,
+ 16 + 384 * sizeof (short) / sizeof (int) + 144,
+ 16 + 384 * sizeof (short) / sizeof (int) + 144,
+ 16 + 384 * sizeof (short) / sizeof (int) + 144,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00002000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00008000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x80000000, 0x00000001,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00300000, 0x00000000, 0x00000000,
+ 0x00003800, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000F800, 0x00007C00, 0x00000000, 0x0000FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000010,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000FFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x80000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000001, 0x00000000, 0x01FF0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x07F80000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
+ }
+};
diff --git a/lib/unictype/pr_deprecated.c b/lib/unictype/pr_deprecated.c
new file mode 100644
index 00000000..2b3903b4
--- /dev/null
+++ b/lib/unictype/pr_deprecated.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_deprecated table. */
+#include "pr_deprecated.h"
+
+bool
+uc_is_property_deprecated (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_deprecated, uc);
+}
+
+const uc_property_t UC_PROPERTY_DEPRECATED =
+ { &uc_is_property_deprecated };
diff --git a/lib/unictype/pr_deprecated.h b/lib/unictype/pr_deprecated.h
new file mode 100644
index 00000000..ee69bbf5
--- /dev/null
+++ b/lib/unictype/pr_deprecated.h
@@ -0,0 +1,312 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[15];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[4 << 4];
+ }
+u_property_deprecated =
+{
+ { 15 },
+ {
+ 16 * sizeof (int) / sizeof (short) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ -1,
+ 16 + 256 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 256 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 256 * sizeof (short) / sizeof (int) + 32,
+ -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,
+ 16 + 256 * sizeof (short) / sizeof (int) + 48,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000003, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000008, 0x00080000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FC00,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000002, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_diacritic.c b/lib/unictype/pr_diacritic.c
new file mode 100644
index 00000000..f541cd12
--- /dev/null
+++ b/lib/unictype/pr_diacritic.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_diacritic table. */
+#include "pr_diacritic.h"
+
+bool
+uc_is_property_diacritic (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_diacritic, uc);
+}
+
+const uc_property_t UC_PROPERTY_DIACRITIC =
+ { &uc_is_property_diacritic };
diff --git a/lib/unictype/pr_diacritic.h b/lib/unictype/pr_diacritic.h
new file mode 100644
index 00000000..4a8390be
--- /dev/null
+++ b/lib/unictype/pr_diacritic.h
@@ -0,0 +1,367 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[21 << 4];
+ }
+u_property_diacritic =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ 3 + 256 * sizeof (short) / sizeof (int) + 208,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 224,
+ 3 + 256 * sizeof (short) / sizeof (int) + 240,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 256,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 288,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 304,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 320,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x40000000, 0x00000001,
+ 0x00000000, 0x01908100, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFF0000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xE0FF7FFF, 0x04300007,
+ 0x00000030, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x000000F8, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x02000000, 0x00000000,
+ 0xFFFE0000, 0xBFFFFFFB, 0x00000016, 0x00000000,
+ 0x00000000, 0x00000000, 0x0187F800, 0x00000000,
+ 0x00000000, 0x00000000, 0x80000000, 0x00001C61,
+ 0x00000000, 0xFFFF0000, 0x000007FF, 0x00000000,
+ 0x00000000, 0x0001FFC0, 0x00000000, 0x003FF800,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x10000000, 0x001E2000, 0x00020000,
+ 0x00000000, 0x10000000, 0x00002000, 0x00000000,
+ 0x00000000, 0x10000000, 0x00002000, 0x00000000,
+ 0x00000000, 0x10000000, 0x00002000, 0x00000000,
+ 0x00000000, 0x10000000, 0x00002000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00002000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00002000, 0x00000000,
+ 0x00000000, 0x10000000, 0x00002000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00002000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000400, 0x00000000,
+ 0x00000000, 0x00000000, 0x00005F80, 0x00000000,
+ 0x00000000, 0x00000000, 0x00001F00, 0x00000000,
+ 0x03000000, 0xC2A00000, 0x00000000, 0x00000000,
+ 0x000000DC, 0x00000000, 0x00000040, 0x00000000,
+ 0x00000000, 0x06800000, 0x00000000, 0x00000000,
+ 0x0000BF80, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x200FFE00, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x0E000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00100000, 0x00000010, 0x000FF800,
+ 0x00000000, 0x00000400, 0x00000000, 0x00000000,
+ 0x00000000, 0x00C00000, 0x00000000, 0x3F000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFFF000, 0xFFFFFFFF, 0x000007FF,
+ 0x00000000, 0x00000000, 0x0000FFF0, 0xC0000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xA0000000, 0xE000E003, 0x6000E000,
+ 0x00000000, 0x00008000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x0000FC00, 0x00000000, 0x00000000,
+ 0x1E000000, 0x00000000, 0x00000000, 0x10000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xB0008000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF800000, 0x00000003, 0x00000000, 0x00000000,
+ 0x00000100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000010, 0x00000000,
+ 0x00000000, 0x00007800, 0x00080000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x40000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x0000007F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x40000000, 0x00000001, 0x00010000,
+ 0xC0000000, 0x00000000, 0x00000000, 0x00000008,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xF807E380,
+ 0x00000FE7, 0x00003C00, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_extender.c b/lib/unictype/pr_extender.c
new file mode 100644
index 00000000..25f11f67
--- /dev/null
+++ b/lib/unictype/pr_extender.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_extender table. */
+#include "pr_extender.h"
+
+bool
+uc_is_property_extender (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_extender, uc);
+}
+
+const uc_property_t UC_PROPERTY_EXTENDER =
+ { &uc_is_property_extender };
diff --git a/lib/unictype/pr_extender.h b/lib/unictype/pr_extender.h
new file mode 100644
index 00000000..70d9582b
--- /dev/null
+++ b/lib/unictype/pr_extender.h
@@ -0,0 +1,192 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[10 << 4];
+ }
+u_property_extender =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 96,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 112,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 128,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 144
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00800000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00030000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000001, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x04000000,
+ 0x00000000, 0x00000000, 0x00000040, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000040, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000008, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00400000, 0x00000000, 0x08000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000020, 0x003E0000, 0x00000000, 0x00000000,
+ 0x60000000, 0x00000000, 0x00000000, 0x70000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00200000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00001000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00010000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_format_control.c b/lib/unictype/pr_format_control.c
new file mode 100644
index 00000000..f63bb299
--- /dev/null
+++ b/lib/unictype/pr_format_control.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_format_control table. */
+#include "pr_format_control.h"
+
+bool
+uc_is_property_format_control (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_format_control, uc);
+}
+
+const uc_property_t UC_PROPERTY_FORMAT_CONTROL =
+ { &uc_is_property_format_control };
diff --git a/lib/unictype/pr_format_control.h b/lib/unictype/pr_format_control.h
new file mode 100644
index 00000000..fde6b409
--- /dev/null
+++ b/lib/unictype/pr_format_control.h
@@ -0,0 +1,444 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[15];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[5 << 4];
+ }
+u_property_format_control =
+{
+ { 15 },
+ {
+ 16 * sizeof (int) / sizeof (short) + 0,
+ 16 * sizeof (int) / sizeof (short) + 128,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ 16 + 384 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 32,
+ -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,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 64,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00002000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00008000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000800, 0x00000000, 0x00000000, 0x0000FC1F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x07F80000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000002, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_grapheme_base.c b/lib/unictype/pr_grapheme_base.c
new file mode 100644
index 00000000..6b090bc2
--- /dev/null
+++ b/lib/unictype/pr_grapheme_base.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_grapheme_base table. */
+#include "pr_grapheme_base.h"
+
+bool
+uc_is_property_grapheme_base (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_grapheme_base, uc);
+}
+
+const uc_property_t UC_PROPERTY_GRAPHEME_BASE =
+ { &uc_is_property_grapheme_base };
diff --git a/lib/unictype/pr_grapheme_base.h b/lib/unictype/pr_grapheme_base.h
new file mode 100644
index 00000000..6926dfd4
--- /dev/null
+++ b/lib/unictype/pr_grapheme_base.h
@@ -0,0 +1,616 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[3];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[51 << 4];
+ }
+u_property_grapheme_base =
+{
+ { 3 },
+ {
+ 4 * sizeof (int) / sizeof (short) + 0,
+ 4 * sizeof (int) / sizeof (short) + 128,
+ 4 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ 4 + 384 * sizeof (short) / sizeof (int) + 0,
+ 4 + 384 * sizeof (short) / sizeof (int) + 16,
+ 4 + 384 * sizeof (short) / sizeof (int) + 32,
+ 4 + 384 * sizeof (short) / sizeof (int) + 48,
+ 4 + 384 * sizeof (short) / sizeof (int) + 64,
+ 4 + 384 * sizeof (short) / sizeof (int) + 80,
+ 4 + 384 * sizeof (short) / sizeof (int) + 96,
+ 4 + 384 * sizeof (short) / sizeof (int) + 112,
+ 4 + 384 * sizeof (short) / sizeof (int) + 128,
+ 4 + 384 * sizeof (short) / sizeof (int) + 144,
+ 4 + 384 * sizeof (short) / sizeof (int) + 160,
+ 4 + 384 * sizeof (short) / sizeof (int) + 176,
+ 4 + 384 * sizeof (short) / sizeof (int) + 192,
+ 4 + 384 * sizeof (short) / sizeof (int) + 208,
+ 4 + 384 * sizeof (short) / sizeof (int) + 224,
+ 4 + 384 * sizeof (short) / sizeof (int) + 240,
+ 4 + 384 * sizeof (short) / sizeof (int) + 256,
+ 4 + 384 * sizeof (short) / sizeof (int) + 272,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 352,
+ 4 + 384 * sizeof (short) / sizeof (int) + 368,
+ 4 + 384 * sizeof (short) / sizeof (int) + 384,
+ 4 + 384 * sizeof (short) / sizeof (int) + 400,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 416,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 432,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 448,
+ 4 + 384 * sizeof (short) / sizeof (int) + 464,
+ 4 + 384 * sizeof (short) / sizeof (int) + 480,
+ 4 + 384 * sizeof (short) / sizeof (int) + 496,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 512,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 528,
+ 4 + 384 * sizeof (short) / sizeof (int) + 544,
+ 4 + 384 * sizeof (short) / sizeof (int) + 560,
+ 4 + 384 * sizeof (short) / sizeof (int) + 576,
+ 4 + 384 * sizeof (short) / sizeof (int) + 592,
+ 4 + 384 * sizeof (short) / sizeof (int) + 608,
+ 4 + 384 * sizeof (short) / sizeof (int) + 624,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 640,
+ 4 + 384 * sizeof (short) / sizeof (int) + 656,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 672,
+ 4 + 384 * sizeof (short) / sizeof (int) + 688,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 704,
+ 4 + 384 * sizeof (short) / sizeof (int) + 720,
+ 4 + 384 * sizeof (short) / sizeof (int) + 736,
+ 4 + 384 * sizeof (short) / sizeof (int) + 752,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 768,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 784,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 800,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF,
+ 0x00000000, 0xFFFFDFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x7CFF0000,
+ 0xFFFFD7F0, 0xFFFFFFFB, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFC07, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFE000F, 0xFE7FFFFF, 0xFFFFFFFE,
+ 0x000006FF, 0x40000000, 0xFFFF0049, 0x001F07FF,
+ 0xC800FFC0, 0xFFFFFFFE, 0x000007FF, 0xFFFEFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x003FFFFF, 0xFFFFC260,
+ 0xFFFD3FFF, 0x0000FFFF, 0xFFFFE000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0002003F, 0xFFFFFFFF, 0x07F007FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFF8, 0xE3FFFFFF, 0xFF011E01, 0xF807FFF3,
+ 0xFFF99FEC, 0xA3C5FDFF, 0xB0005981, 0x07FFFFC3,
+ 0xFFF987E8, 0xC36DFDFF, 0x5E000001, 0x001CFFC0,
+ 0xFFFBBFE8, 0xE3EDFDFF, 0x00011A01, 0x0002FFC3,
+ 0xFFF99FEC, 0x23EDFDFF, 0xB0001981, 0x0003FFC3,
+ 0xD63DC7E8, 0x83FFC718, 0x00011DC6, 0x07FFFFC0,
+ 0xFFFDDFEE, 0x23EFFDFF, 0x0300001E, 0xFF00FFC3,
+ 0xFFFDDFEC, 0x63EFFDFF, 0x40000D9B, 0x0006FFC3,
+ 0xFFFDDFEC, 0xA3FFFDFF, 0x00001DC1, 0xFE3FFFC3,
+ 0xFC7FFFEC, 0x2FFBFFFF, 0x7F03007F, 0x001C0000,
+ 0xFFFFFFFE, 0x800DFFFF, 0x0FFF807F, 0x00000000,
+ 0xFEF02596, 0x200DECAE, 0x33FF005F, 0x00000000,
+ 0xFCFFFFFF, 0xFD5FFFFF, 0xFFFFFEFF, 0x80001FFF,
+ 0x00000F20, 0xC0000000, 0x001FDFBF, 0x00000000,
+ 0xFFFFFFFF, 0x99021FFF, 0x3CFFFFFF, 0xFFE1FFFE,
+ 0xC3FFDF9B, 0xFFFFFFFF, 0xFFFF003F, 0x1FFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x83FFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF07, 0xFFFFFFFF, 0x03FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3D7F3DFF, 0xFFFFFFFF,
+ 0xFFFF3DFF, 0x7F3DFFFF, 0xFF7FFF3D, 0xFFFFFFFF,
+ 0xFF3DFFFF, 0xFFFFFFFF, 0x07FFFFFF, 0x1FFFFFFF,
+ 0x03FFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x001FFFFF,
+ 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF,
+ 0x1FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0001FFFF,
+ 0x0003DFFF, 0x0063FFFF, 0x0003FFFF, 0x0001DFFF,
+ 0xFFFFFFFF, 0xC04FFFFF, 0x1FF001BF, 0x03FF03FF,
+ 0x03FF47FF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00FFFFFF,
+ 0xFFFFFFFF, 0x000005FF, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0x01FB0E78, 0xFFFFFFF1, 0x001F3FFF,
+ 0xFFFFFFFF, 0xFFFF03FF, 0xC3FF03FF, 0xFFFFFFFF,
+ 0xCE7FFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFF0, 0xE82FFFFF, 0xFFFF0FFB, 0x1FF007FF,
+ 0xFFFFFFFC, 0x03FFC4C3, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xF8300FFF, 0xFFFFE3FF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
+ 0xFFFFFFFF, 0xFFDFFFFF, 0xEFCFFFDF, 0x7FDCFFFF,
+ 0xFFFF07FF, 0xFFFF80FF, 0xFFFFFFFF, 0xFFF30000,
+ 0x001F7FFF, 0x003FFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF8FFFF, 0xFFFFFFFF,
+ 0xFFFF01FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x000000FF,
+ 0xFFFFFFFF, 0x0000007F, 0x000007FF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x1FFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFFFF3DE, 0xFFFFFEFF, 0x7F47AFFF, 0xFFFFFFFE,
+ 0xFF1FFFFF, 0x7FFEFFFF, 0xFFFF17FF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x001F1FFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF7FFF, 0x7FFFFFFF, 0x3FFEFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFE0007FF,
+ 0xFFFFFFFF, 0xFFFF003F, 0xFFFFFFFF, 0x0000803F,
+ 0x007FFFFF, 0x7F7F7F7F, 0x7F7F7F7F, 0x00000000,
+ 0xFFFFFFFF, 0x0001FFFF, 0x00000000, 0x00000000,
+ 0xFBFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x000FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x003FFFFF, 0x0FFF0000,
+ 0xFFFFFFFF, 0xFFFF03FF, 0xFFFFFFFE, 0xFFFFFFFF,
+ 0xF87FFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFE0, 0xFFFE3FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFF7FFF, 0x00FFFFFF, 0xFFFFFFFF, 0xFFFF000F,
+ 0x7FFFFFFF, 0xFFFFFFFF, 0xFFFF000F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x003FFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFF1FFF, 0xFFFFFFFF, 0x0000007F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x00000FFF, 0xFFFFFFFF, 0xC0087FFC,
+ 0x00FFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00001FFF, 0x00000000, 0x00000000, 0xF8000000,
+ 0xFFFFF7BB, 0x00000F9F, 0xFFFFFFFF, 0x00FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFC00F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFC03F, 0x800C007F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x001981FF, 0xF3FF2FF7, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFF3FFF, 0xFFFFFFFF, 0xFFFF07FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, 0x00000000,
+ 0xA0F8007F, 0x5F7FFFFF, 0xFFFFFFDB, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0003FFFF, 0xFFF80000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF0000, 0xFFFFFFFF,
+ 0xFFFCFFFF, 0xFFFFFFFF, 0x000000FF, 0x3FFF0000,
+ 0x03FF0000, 0xFFFF0000, 0xFFF7FFFF, 0xFFDF0F7F,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x1FFFFFFF,
+ 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x7FFFFFFF, 0x1CFCFCFC, 0x30007F7F,
+ 0xFFFFEFFF, 0xB7FFFF7F, 0x3FFF3FFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x07FFFFFF,
+ 0xFFFFFF87, 0xFF8FFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x0FFF07FF, 0x00000000, 0xFFFF0000, 0x1FFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0xFFFFFFFF, 0x0001FFFF, 0x00000000,
+ 0x7FFFFFFF, 0xFFFF000F, 0x000007FF, 0x00000000,
+ 0xBFFFFFFF, 0xFFFFFFFF, 0x003FFF0F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x000003FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFD3F, 0x91BFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x83FFFFFF, 0x83FFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFEEF0001, 0x000FFFFF, 0x01FF00FF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00007FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x000F0007,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x003FFFFF,
+ 0xFFFFFFFF, 0xFFFFFE7F, 0xFFFFFFFF, 0x00003C5F,
+ 0xFFFFF018, 0xFFFFC3FF, 0x3FFFFFFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000023, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x0003FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFDFFFFF, 0xFFFFFFFF,
+ 0xDFFFFFFF, 0xEBFFDE64, 0xFFFFFFEF, 0xFFFFFFFF,
+ 0xDFDFE7BF, 0x7BFFFFFF, 0xFFFDFC5F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF3F, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFCFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFF0FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000FFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_grapheme_extend.c b/lib/unictype/pr_grapheme_extend.c
new file mode 100644
index 00000000..c51e82eb
--- /dev/null
+++ b/lib/unictype/pr_grapheme_extend.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_grapheme_extend table. */
+#include "pr_grapheme_extend.h"
+
+bool
+uc_is_property_grapheme_extend (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_grapheme_extend, uc);
+}
+
+const uc_property_t UC_PROPERTY_GRAPHEME_EXTEND =
+ { &uc_is_property_grapheme_extend };
diff --git a/lib/unictype/pr_grapheme_extend.h b/lib/unictype/pr_grapheme_extend.h
new file mode 100644
index 00000000..2cd1ca6a
--- /dev/null
+++ b/lib/unictype/pr_grapheme_extend.h
@@ -0,0 +1,528 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[15];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[26 << 4];
+ }
+u_property_grapheme_extend =
+{
+ { 15 },
+ {
+ 16 * sizeof (int) / sizeof (short) + 0,
+ 16 * sizeof (int) / sizeof (short) + 128,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 0,
+ 16 + 384 * sizeof (short) / sizeof (int) + 16,
+ 16 + 384 * sizeof (short) / sizeof (int) + 32,
+ 16 + 384 * sizeof (short) / sizeof (int) + 48,
+ 16 + 384 * sizeof (short) / sizeof (int) + 64,
+ 16 + 384 * sizeof (short) / sizeof (int) + 80,
+ 16 + 384 * sizeof (short) / sizeof (int) + 96,
+ 16 + 384 * sizeof (short) / sizeof (int) + 112,
+ 16 + 384 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 144,
+ 16 + 384 * sizeof (short) / sizeof (int) + 160,
+ 16 + 384 * sizeof (short) / sizeof (int) + 176,
+ 16 + 384 * sizeof (short) / sizeof (int) + 192,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 208,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 224,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 240,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 256,
+ 16 + 384 * sizeof (short) / sizeof (int) + 272,
+ 16 + 384 * sizeof (short) / sizeof (int) + 288,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 304,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 320,
+ 16 + 384 * sizeof (short) / sizeof (int) + 336,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 352,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 368,
+ 16 + 384 * sizeof (short) / sizeof (int) + 384,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 400,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x000003F8, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFE0000, 0xBFFFFFFF, 0x000000B6, 0x00000000,
+ 0x07FF0000, 0x00000000, 0x7FFFF800, 0x00010000,
+ 0x00000000, 0x00000000, 0xDFC00000, 0x00003D9F,
+ 0x00020000, 0xFFFF0000, 0x000007FF, 0x00000000,
+ 0x00000000, 0x0001FFC0, 0x00000000, 0x000FF800,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x10000000, 0x001E21FE, 0x0000000C,
+ 0x00000002, 0x50000000, 0x0080201E, 0x0000000C,
+ 0x00000006, 0x10000000, 0x00023986, 0x00230000,
+ 0x00000006, 0x10000000, 0x000021BE, 0x0000000C,
+ 0x00000002, 0xD0000000, 0x00C0201E, 0x0000000C,
+ 0x00000004, 0x40000000, 0x00802001, 0x00000000,
+ 0x00000000, 0xC0000000, 0x00603DC1, 0x0000000C,
+ 0x00000000, 0x90000000, 0x00603044, 0x0000000C,
+ 0x00000000, 0x40000000, 0x0080201E, 0x0000000C,
+ 0x00000000, 0x00000000, 0x805C8400, 0x00000000,
+ 0x00000000, 0x07F20000, 0x00007F80, 0x00000000,
+ 0x00000000, 0x1BF20000, 0x00003F00, 0x00000000,
+ 0x03000000, 0x02A00000, 0x00000000, 0x7FFE0000,
+ 0xFEFF00DF, 0x1FFFFFFF, 0x00000040, 0x00000000,
+ 0x00000000, 0x66FDE000, 0xC3000000, 0x001E0001,
+ 0x00002064, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x001C0000, 0x001C0000, 0x000C0000, 0x000C0000,
+ 0x00000000, 0x3F800000, 0x200FFE40, 0x00000000,
+ 0x00003800, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000000, 0x0E040187, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x01800000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000000F, 0x17D00000, 0x00000004, 0x000FF800,
+ 0x00000003, 0x0000033C, 0x00000000, 0x00000000,
+ 0x00000000, 0x00CFF000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0xC000007F,
+ 0x00003000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFF0000, 0x0001FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF,
+ 0x00000000, 0x0000FC00, 0x00000000, 0x00000000,
+ 0x06000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x30078000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000844, 0x00000060, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000010, 0x00000000,
+ 0x00000000, 0x00003FC0, 0x0003FF80, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00667E00, 0x00001008, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x40000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000FFFF, 0x0000007F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xC0000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x20000000,
+ 0x0000F06E, 0x87000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xF807C3A0,
+ 0x00000FE7, 0x00003C00, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000001C, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF
+ }
+};
diff --git a/lib/unictype/pr_grapheme_link.c b/lib/unictype/pr_grapheme_link.c
new file mode 100644
index 00000000..e7aa1335
--- /dev/null
+++ b/lib/unictype/pr_grapheme_link.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_grapheme_link table. */
+#include "pr_grapheme_link.h"
+
+bool
+uc_is_property_grapheme_link (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_grapheme_link, uc);
+}
+
+const uc_property_t UC_PROPERTY_GRAPHEME_LINK =
+ { &uc_is_property_grapheme_link };
diff --git a/lib/unictype/pr_grapheme_link.h b/lib/unictype/pr_grapheme_link.h
new file mode 100644
index 00000000..14379753
--- /dev/null
+++ b/lib/unictype/pr_grapheme_link.h
@@ -0,0 +1,319 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[9 << 4];
+ }
+u_property_grapheme_link =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00002000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00002000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00002000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00002000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00002000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00002000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00002000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00002000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00002000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000400, 0x00000000,
+ 0x00000000, 0x04000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000010, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x06000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00100000, 0x00100000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00040000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000010, 0x00000000,
+ 0x00000000, 0x00000400, 0x00000000, 0x00000000,
+ 0x00000040, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000010, 0x00000000,
+ 0x00000000, 0x00000000, 0x00080000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x80000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_hex_digit.c b/lib/unictype/pr_hex_digit.c
new file mode 100644
index 00000000..09357b98
--- /dev/null
+++ b/lib/unictype/pr_hex_digit.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_hex_digit table. */
+#include "pr_hex_digit.h"
+
+bool
+uc_is_property_hex_digit (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_hex_digit, uc);
+}
+
+const uc_property_t UC_PROPERTY_HEX_DIGIT =
+ { &uc_is_property_hex_digit };
diff --git a/lib/unictype/pr_hex_digit.h b/lib/unictype/pr_hex_digit.h
new file mode 100644
index 00000000..8bbe5f1d
--- /dev/null
+++ b/lib/unictype/pr_hex_digit.h
@@ -0,0 +1,160 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[2 << 4];
+ }
+u_property_hex_digit =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16
+ },
+ {
+ 0x00000000, 0x03FF0000, 0x0000007E, 0x0000007E,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x03FF0000, 0x0000007E, 0x0000007E, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_hyphen.c b/lib/unictype/pr_hyphen.c
new file mode 100644
index 00000000..22a55b69
--- /dev/null
+++ b/lib/unictype/pr_hyphen.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_hyphen table. */
+#include "pr_hyphen.h"
+
+bool
+uc_is_property_hyphen (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_hyphen, uc);
+}
+
+const uc_property_t UC_PROPERTY_HYPHEN =
+ { &uc_is_property_hyphen };
diff --git a/lib/unictype/pr_hyphen.h b/lib/unictype/pr_hyphen.h
new file mode 100644
index 00000000..f52c26fc
--- /dev/null
+++ b/lib/unictype/pr_hyphen.h
@@ -0,0 +1,180 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[7 << 4];
+ }
+u_property_hyphen =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ 2 + 128 * sizeof (short) / sizeof (int) + 80,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 96
+ },
+ {
+ 0x00000000, 0x00002000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00002000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000400, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000040, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00030000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00800000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x08000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000008,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00002000, 0x00000000, 0x00000000, 0x00000020,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_id_continue.c b/lib/unictype/pr_id_continue.c
new file mode 100644
index 00000000..5903dc65
--- /dev/null
+++ b/lib/unictype/pr_id_continue.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_id_continue table. */
+#include "pr_id_continue.h"
+
+bool
+uc_is_property_id_continue (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_id_continue, uc);
+}
+
+const uc_property_t UC_PROPERTY_ID_CONTINUE =
+ { &uc_is_property_id_continue };
diff --git a/lib/unictype/pr_id_continue.h b/lib/unictype/pr_id_continue.h
new file mode 100644
index 00000000..9c55e7f3
--- /dev/null
+++ b/lib/unictype/pr_id_continue.h
@@ -0,0 +1,732 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[15];
+ short level2[4 << 7];
+ /*unsigned*/ int level3[45 << 4];
+ }
+u_property_id_continue =
+{
+ { 15 },
+ {
+ 16 * sizeof (int) / sizeof (short) + 0,
+ 16 * sizeof (int) / sizeof (short) + 128,
+ 16 * sizeof (int) / sizeof (short) + 256,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 * sizeof (int) / sizeof (short) + 384
+ },
+ {
+ 16 + 512 * sizeof (short) / sizeof (int) + 0,
+ 16 + 512 * sizeof (short) / sizeof (int) + 16,
+ 16 + 512 * sizeof (short) / sizeof (int) + 32,
+ 16 + 512 * sizeof (short) / sizeof (int) + 48,
+ 16 + 512 * sizeof (short) / sizeof (int) + 64,
+ 16 + 512 * sizeof (short) / sizeof (int) + 80,
+ 16 + 512 * sizeof (short) / sizeof (int) + 96,
+ 16 + 512 * sizeof (short) / sizeof (int) + 112,
+ 16 + 512 * sizeof (short) / sizeof (int) + 128,
+ 16 + 512 * sizeof (short) / sizeof (int) + 144,
+ 16 + 512 * sizeof (short) / sizeof (int) + 160,
+ 16 + 512 * sizeof (short) / sizeof (int) + 176,
+ 16 + 512 * sizeof (short) / sizeof (int) + 192,
+ 16 + 512 * sizeof (short) / sizeof (int) + 208,
+ 16 + 512 * sizeof (short) / sizeof (int) + 224,
+ 16 + 512 * sizeof (short) / sizeof (int) + 240,
+ 16 + 512 * sizeof (short) / sizeof (int) + 256,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 512 * sizeof (short) / sizeof (int) + 272,
+ -1,
+ 16 + 512 * sizeof (short) / sizeof (int) + 288,
+ -1,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 320,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 336,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 352,
+ 16 + 512 * sizeof (short) / sizeof (int) + 368,
+ 16 + 512 * sizeof (short) / sizeof (int) + 384,
+ 16 + 512 * sizeof (short) / sizeof (int) + 400,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 416,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 512 * sizeof (short) / sizeof (int) + 432,
+ 16 + 512 * sizeof (short) / sizeof (int) + 448,
+ 16 + 512 * sizeof (short) / sizeof (int) + 464,
+ 16 + 512 * sizeof (short) / sizeof (int) + 480,
+ 16 + 512 * sizeof (short) / sizeof (int) + 496,
+ 16 + 512 * sizeof (short) / sizeof (int) + 512,
+ 16 + 512 * sizeof (short) / sizeof (int) + 528,
+ -1,
+ 16 + 512 * sizeof (short) / sizeof (int) + 544,
+ 16 + 512 * sizeof (short) / sizeof (int) + 560,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 576,
+ 16 + 512 * sizeof (short) / sizeof (int) + 592,
+ -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,
+ 16 + 512 * sizeof (short) / sizeof (int) + 608,
+ 16 + 512 * sizeof (short) / sizeof (int) + 624,
+ 16 + 512 * sizeof (short) / sizeof (int) + 640,
+ 16 + 512 * sizeof (short) / sizeof (int) + 656,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 672,
+ -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,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 688,
+ -1,
+ -1,
+ 16 + 512 * sizeof (short) / sizeof (int) + 704,
+ -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
+ },
+ {
+ 0x00000000, 0x03FF0000, 0x87FFFFFE, 0x07FFFFFE,
+ 0x00000000, 0x04A00400, 0xFF7FFFFF, 0xFF7FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0003FFC3, 0x0000501F,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x3CDFFFFF,
+ 0xFFFFD7C0, 0xFFFFFFFB, 0xFFFFFFFF, 0xFFBFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFCFB, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFE000F, 0x027FFFFF, 0xFFFFFFFE,
+ 0xFFFE00FF, 0xBFFFFFFF, 0xFFFF00B6, 0x000707FF,
+ 0x07FF0000, 0xFFFFFFFE, 0x7FFFFFFF, 0xFFFFC3FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x9FEFFFFF, 0x9FFFFDFF,
+ 0xFFFF0000, 0xFFFFFFFF, 0xFFFFE7FF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0003FFFF, 0xFFFFFFFF, 0x043FFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFE, 0xF3FFFFFF, 0xFF1F3FFF, 0xF806FFCF,
+ 0xFFF99FEE, 0xF3C5FDFF, 0xB080799F, 0x0003FFCF,
+ 0xFFF987EE, 0xD36DFDFF, 0x5E023987, 0x003FFFC0,
+ 0xFFFBBFEE, 0xF3EDFDFF, 0x00013BBF, 0x0000FFCF,
+ 0xFFF99FEE, 0xF3EDFDFF, 0xB0C0399F, 0x0002FFCF,
+ 0xD63DC7EC, 0xC3FFC718, 0x00813DC7, 0x0000FFC0,
+ 0xFFFDDFEE, 0xE3EFFDFF, 0x03603DDF, 0x0000FFCF,
+ 0xFFFDDFEC, 0xF3EFFDFF, 0x40603DDF, 0x0000FFCF,
+ 0xFFFDDFEC, 0xE3FFFDFF, 0x00803DDF, 0xFC00FFCF,
+ 0xFC7FFFEC, 0x2FFBFFFF, 0xFF5F847F, 0x000C0000,
+ 0xFFFFFFFE, 0x07FFFFFF, 0x03FF7FFF, 0x00000000,
+ 0xFEF02596, 0x3BFFECAE, 0x33FF3F5F, 0x00000000,
+ 0x03000001, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE1FFF,
+ 0xFEFF0FDF, 0x1FFFFFFF, 0x00000040, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF03FF, 0xFFFFFFFF,
+ 0x03FFFFFF, 0xFFFFFFFF, 0xFFFF003F, 0x17FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x83FFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF07, 0xFFFFFFFF, 0x03FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3D7F3DFF, 0xFFFFFFFF,
+ 0xFFFF3DFF, 0x7F3DFFFF, 0xFF7FFF3D, 0xFFFFFFFF,
+ 0xFF3DFFFF, 0xFFFFFFFF, 0x87FFFFFF, 0x0003FE00,
+ 0x0000FFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x001FFFFF,
+ 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x007F9FFF,
+ 0x07FFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0x0001C7FF,
+ 0x001FDFFF, 0x001FFFFF, 0x000FFFFF, 0x000DDFFF,
+ 0xFFFFFFFF, 0xFFCFFFFF, 0x308FFFFF, 0x000003FF,
+ 0x03FF3800, 0xFFFFFFFF, 0xFFFFFFFF, 0x00FFFFFF,
+ 0xFFFFFFFF, 0x000007FF, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0x0FFF0FFF, 0xFFFFFFC0, 0x001F3FFF,
+ 0xFFFFFFFF, 0xFFFF03FF, 0x03FF03FF, 0x00000000,
+ 0x0FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FF0FFF, 0x000FF800,
+ 0xFFFFFFFF, 0x03FFC7FF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x00FFFFFF, 0xFFFFE3FF, 0x3FFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xC000007F,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
+ 0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
+ 0x00000000, 0x80000000, 0x00100001, 0x80020000,
+ 0x001F0000, 0x00000000, 0x1FFF0000, 0x0001FFE2,
+ 0x3F2FFC84, 0xF3FFFD50, 0x000043E0, 0xFFFFFFFF,
+ 0x000001FF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF7FFF, 0x7FFFFFFF, 0x3FFEFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000001F,
+ 0xFFFFFFFF, 0xFFFF003F, 0xFFFFFFFF, 0x0000803F,
+ 0x007FFFFF, 0x7F7F7F7F, 0x7F7F7F7F, 0xFFFFFFFF,
+ 0x000000E0, 0x1F3EFFFE, 0xFFFFFFFE, 0xFFFFFFFF,
+ 0xFE7FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0xF7FFFFFF,
+ 0xFFFFFFE0, 0xFFFE3FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00007FFF, 0x00FFFFFF, 0x00000000, 0xFFFF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x003FFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00001FFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFF1FFF, 0x00000FFF, 0xFFFFFFFF, 0xB000FFFC,
+ 0x00FFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF800000, 0xFFFFFFFC, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000019FF, 0x00000000, 0x00000000, 0xF8000000,
+ 0xFFFFFFFF, 0x000000FF, 0xFFFFFFFF, 0x000FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FF001F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF3FFF, 0x000FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x007FFFFF, 0x03FF3FFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFF3FFF, 0xFFFFFFFF, 0xFFFF07FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, 0x00000000,
+ 0xE0F8007F, 0x5F7FFDFF, 0xFFFFFFDB, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0003FFFF, 0xFFF80000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x3FFFFFFF, 0xFFFF0000, 0xFFFFFFFF,
+ 0xFFFCFFFF, 0xFFFFFFFF, 0x000000FF, 0x0FFF0000,
+ 0x0000FFFF, 0x0018007F, 0x0000E000, 0xFFDF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x1FFFFFFF,
+ 0x03FF0000, 0x87FFFFFE, 0x07FFFFFE, 0xFFFFFFC0,
+ 0xFFFFFFFF, 0x7FFFFFFF, 0x1CFCFCFC, 0x00000000,
+ 0xFFFFEFFF, 0xB7FFFF7F, 0x3FFF3FFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x07FFFFFF,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0x001FFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x20000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0xFFFFFFFF, 0x0001FFFF, 0x00000000,
+ 0x7FFFFFFF, 0xFFFF0000, 0x000007FF, 0x00000000,
+ 0x3FFFFFFF, 0xFFFFFFFF, 0x003EFF0F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x000003FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFD3F, 0x91BFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x003FFFFF, 0x03FFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFEEFF06F, 0x870FFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00007FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000007,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xF807E3E0,
+ 0x00000FE7, 0x00003C00, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000001C, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFDFFFFF, 0xFFFFFFFF,
+ 0xDFFFFFFF, 0xEBFFDE64, 0xFFFFFFEF, 0xFFFFFFFF,
+ 0xDFDFE7BF, 0x7BFFFFFF, 0xFFFDFC5F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF3F, 0xF7FFFFFD, 0xF7FFFFFF,
+ 0xFFDFFFFF, 0xFFDFFFFF, 0xFFFF7FFF, 0xFFFF7FFF,
+ 0xFFFFFDFF, 0xFFFFFDFF, 0xFFFFCFF7, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF
+ }
+};
diff --git a/lib/unictype/pr_id_start.c b/lib/unictype/pr_id_start.c
new file mode 100644
index 00000000..7d5f35fc
--- /dev/null
+++ b/lib/unictype/pr_id_start.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_id_start table. */
+#include "pr_id_start.h"
+
+bool
+uc_is_property_id_start (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_id_start, uc);
+}
+
+const uc_property_t UC_PROPERTY_ID_START =
+ { &uc_is_property_id_start };
diff --git a/lib/unictype/pr_id_start.h b/lib/unictype/pr_id_start.h
new file mode 100644
index 00000000..178d718c
--- /dev/null
+++ b/lib/unictype/pr_id_start.h
@@ -0,0 +1,580 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[3];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[42 << 4];
+ }
+u_property_id_start =
+{
+ { 3 },
+ {
+ 4 * sizeof (int) / sizeof (short) + 0,
+ 4 * sizeof (int) / sizeof (short) + 128,
+ 4 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ 4 + 384 * sizeof (short) / sizeof (int) + 0,
+ 4 + 384 * sizeof (short) / sizeof (int) + 16,
+ 4 + 384 * sizeof (short) / sizeof (int) + 32,
+ 4 + 384 * sizeof (short) / sizeof (int) + 48,
+ 4 + 384 * sizeof (short) / sizeof (int) + 64,
+ 4 + 384 * sizeof (short) / sizeof (int) + 80,
+ 4 + 384 * sizeof (short) / sizeof (int) + 96,
+ 4 + 384 * sizeof (short) / sizeof (int) + 112,
+ 4 + 384 * sizeof (short) / sizeof (int) + 128,
+ 4 + 384 * sizeof (short) / sizeof (int) + 144,
+ 4 + 384 * sizeof (short) / sizeof (int) + 160,
+ 4 + 384 * sizeof (short) / sizeof (int) + 176,
+ 4 + 384 * sizeof (short) / sizeof (int) + 192,
+ 4 + 384 * sizeof (short) / sizeof (int) + 208,
+ 4 + 384 * sizeof (short) / sizeof (int) + 224,
+ 4 + 384 * sizeof (short) / sizeof (int) + 240,
+ 4 + 384 * sizeof (short) / sizeof (int) + 256,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 272,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 352,
+ 4 + 384 * sizeof (short) / sizeof (int) + 368,
+ 4 + 384 * sizeof (short) / sizeof (int) + 384,
+ 4 + 384 * sizeof (short) / sizeof (int) + 400,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 416,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 432,
+ 4 + 384 * sizeof (short) / sizeof (int) + 448,
+ 4 + 384 * sizeof (short) / sizeof (int) + 464,
+ 4 + 384 * sizeof (short) / sizeof (int) + 480,
+ 4 + 384 * sizeof (short) / sizeof (int) + 496,
+ 4 + 384 * sizeof (short) / sizeof (int) + 512,
+ 4 + 384 * sizeof (short) / sizeof (int) + 528,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 544,
+ 4 + 384 * sizeof (short) / sizeof (int) + 560,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 576,
+ 4 + 384 * sizeof (short) / sizeof (int) + 592,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 608,
+ 4 + 384 * sizeof (short) / sizeof (int) + 624,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 640,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 656,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x07FFFFFE, 0x07FFFFFE,
+ 0x00000000, 0x04200400, 0xFF7FFFFF, 0xFF7FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0003FFC3, 0x0000501F,
+ 0x00000000, 0x00000000, 0x00000000, 0x3CDF0000,
+ 0xFFFFD740, 0xFFFFFFFB, 0xFFFFFFFF, 0xFFBFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFC03, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFE000F, 0x027FFFFF, 0xFFFFFFFE,
+ 0x000000FF, 0x00000000, 0xFFFF0000, 0x000707FF,
+ 0x00000000, 0xFFFFFFFE, 0x000007FF, 0xFFFEC000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x002FFFFF, 0x9C00C060,
+ 0xFFFD0000, 0x0000FFFF, 0xFFFFE000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0002003F, 0xFFFFFC00, 0x043007FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFF0, 0x23FFFFFF, 0xFF010000, 0xF8060003,
+ 0xFFF99FE0, 0x23C5FDFF, 0xB0004000, 0x00030003,
+ 0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000,
+ 0xFFFBBFE0, 0x23EDFDFF, 0x00010000, 0x00000003,
+ 0xFFF99FE0, 0x23EDFDFF, 0xB0000000, 0x00020003,
+ 0xD63DC7E8, 0x03FFC718, 0x00010000, 0x00000000,
+ 0xFFFDDFE0, 0x23EFFDFF, 0x03000000, 0x00000003,
+ 0xFFFDDFE0, 0x23EFFDFF, 0x40000000, 0x00000003,
+ 0xFFFDDFE0, 0x23FFFDFF, 0x00000000, 0xFC000003,
+ 0xFC7FFFE0, 0x2FFBFFFF, 0x0000007F, 0x00000000,
+ 0xFFFFFFFE, 0x000DFFFF, 0x0000007F, 0x00000000,
+ 0xFEF02596, 0x200DECAE, 0x3000005F, 0x00000000,
+ 0x00000001, 0x00000000, 0xFFFFFEFF, 0x00001FFF,
+ 0x00000F00, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x800007FF, 0x3C3F0000, 0xFFE1C062,
+ 0x00004003, 0xFFFFFFFF, 0xFFFF003F, 0x17FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x83FFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF07, 0xFFFFFFFF, 0x03FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3D7F3DFF, 0xFFFFFFFF,
+ 0xFFFF3DFF, 0x7F3DFFFF, 0xFF7FFF3D, 0xFFFFFFFF,
+ 0xFF3DFFFF, 0xFFFFFFFF, 0x07FFFFFF, 0x00000000,
+ 0x0000FFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x001FFFFF,
+ 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x007F9FFF,
+ 0x07FFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0x0001C7FF,
+ 0x0003DFFF, 0x0003FFFF, 0x0003FFFF, 0x0001DFFF,
+ 0xFFFFFFFF, 0x000FFFFF, 0x10800000, 0x00000000,
+ 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0x00FFFFFF,
+ 0xFFFFFFFF, 0x000005FF, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0x00000000, 0xFFFF0000, 0x001F3FFF,
+ 0xFFFFFFFF, 0x000003FF, 0x000000FE, 0x00000000,
+ 0x007FFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFE0, 0x000FFFFF, 0x00000FE0, 0x00000000,
+ 0xFFFFFFF8, 0x0000C001, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x0000000F, 0xFC00E000, 0x3FFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
+ 0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x80020000,
+ 0x001F0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3F2FFC84, 0xF3FFFD50, 0x000043E0, 0xFFFFFFFF,
+ 0x000001FF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF7FFF, 0x7FFFFFFF, 0x3FFEFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000001F,
+ 0xFFFFFFFF, 0xFFFF003F, 0xFFFFFFFF, 0x0000803F,
+ 0x007FFFFF, 0x7F7F7F7F, 0x7F7F7F7F, 0x00000000,
+ 0x000000E0, 0x1F3E03FE, 0xFFFFFFFE, 0xFFFFFFFF,
+ 0xF87FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0xF7FFFFFF,
+ 0xFFFFFFE0, 0xFFFE3FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00007FFF, 0x00FFFFFF, 0x00000000, 0xFFFF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x003FFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00001FFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFF1FFF, 0x00000C00, 0xFFFFFFFF, 0x80007FFC,
+ 0x00FFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF800000, 0xFFFFFFFC, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000019FF, 0x00000000, 0x00000000, 0xF8000000,
+ 0xFFFFF7BB, 0x00000007, 0xFFFFFFFF, 0x000FFFFF,
+ 0xFFFFFFFC, 0x000FFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFC00, 0xFFFF003F, 0x0000007F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x000001FF, 0x00000FF7, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFF3FFF, 0xFFFFFFFF, 0xFFFF07FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, 0x00000000,
+ 0xA0F8007F, 0x5F7FFDFF, 0xFFFFFFDB, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0003FFFF, 0xFFF80000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x3FFFFFFF, 0xFFFF0000, 0xFFFFFFFF,
+ 0xFFFCFFFF, 0xFFFFFFFF, 0x000000FF, 0x0FFF0000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFDF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x1FFFFFFF,
+ 0x00000000, 0x07FFFFFE, 0x07FFFFFE, 0xFFFFFFC0,
+ 0xFFFFFFFF, 0x7FFFFFFF, 0x1CFCFCFC, 0x00000000,
+ 0xFFFFEFFF, 0xB7FFFF7F, 0x3FFF3FFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x07FFFFFF,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0x001FFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0xFFFFFFFF, 0x0001FFFF, 0x00000000,
+ 0x7FFFFFFF, 0xFFFF0000, 0x000007FF, 0x00000000,
+ 0x3FFFFFFF, 0xFFFFFFFF, 0x003EFF0F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFD3F, 0x91BFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x003FFFFF, 0x03FFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFEEF0001, 0x000FFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00007FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000007,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFDFFFFF, 0xFFFFFFFF,
+ 0xDFFFFFFF, 0xEBFFDE64, 0xFFFFFFEF, 0xFFFFFFFF,
+ 0xDFDFE7BF, 0x7BFFFFFF, 0xFFFDFC5F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF3F, 0xF7FFFFFD, 0xF7FFFFFF,
+ 0xFFDFFFFF, 0xFFDFFFFF, 0xFFFF7FFF, 0xFFFF7FFF,
+ 0xFFFFFDFF, 0xFFFFFDFF, 0x00000FF7, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_ideographic.c b/lib/unictype/pr_ideographic.c
new file mode 100644
index 00000000..18f7d02a
--- /dev/null
+++ b/lib/unictype/pr_ideographic.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_ideographic table. */
+#include "pr_ideographic.h"
+
+bool
+uc_is_property_ideographic (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_ideographic, uc);
+}
+
+const uc_property_t UC_PROPERTY_IDEOGRAPHIC =
+ { &uc_is_property_ideographic };
diff --git a/lib/unictype/pr_ideographic.h b/lib/unictype/pr_ideographic.h
new file mode 100644
index 00000000..b0b2db2f
--- /dev/null
+++ b/lib/unictype/pr_ideographic.h
@@ -0,0 +1,316 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[3];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[8 << 4];
+ }
+u_property_ideographic =
+{
+ { 3 },
+ {
+ 4 * sizeof (int) / sizeof (short) + 0,
+ -1,
+ 4 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 32,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 48,
+ -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,
+ 4 + 256 * sizeof (short) / sizeof (int) + 64,
+ 4 + 256 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ -1,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 96,
+ -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,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 112,
+ -1,
+ -1
+ },
+ {
+ 0x000000C0, 0x070003FE, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x003FFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFF3FFF, 0xFFFFFFFF, 0xFFFF07FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_ids_binary_operator.c b/lib/unictype/pr_ids_binary_operator.c
new file mode 100644
index 00000000..74e50c1b
--- /dev/null
+++ b/lib/unictype/pr_ids_binary_operator.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_ids_binary_operator table. */
+#include "pr_ids_binary_operator.h"
+
+bool
+uc_is_property_ids_binary_operator (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_ids_binary_operator, uc);
+}
+
+const uc_property_t UC_PROPERTY_IDS_BINARY_OPERATOR =
+ { &uc_is_property_ids_binary_operator };
diff --git a/lib/unictype/pr_ids_binary_operator.h b/lib/unictype/pr_ids_binary_operator.h
new file mode 100644
index 00000000..2d7f4011
--- /dev/null
+++ b/lib/unictype/pr_ids_binary_operator.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_property_ids_binary_operator =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0FF30000
+ }
+};
diff --git a/lib/unictype/pr_ids_trinary_operator.c b/lib/unictype/pr_ids_trinary_operator.c
new file mode 100644
index 00000000..422c219e
--- /dev/null
+++ b/lib/unictype/pr_ids_trinary_operator.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_ids_trinary_operator table. */
+#include "pr_ids_trinary_operator.h"
+
+bool
+uc_is_property_ids_trinary_operator (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_ids_trinary_operator, uc);
+}
+
+const uc_property_t UC_PROPERTY_IDS_TRINARY_OPERATOR =
+ { &uc_is_property_ids_trinary_operator };
diff --git a/lib/unictype/pr_ids_trinary_operator.h b/lib/unictype/pr_ids_trinary_operator.h
new file mode 100644
index 00000000..f4e57d87
--- /dev/null
+++ b/lib/unictype/pr_ids_trinary_operator.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_property_ids_trinary_operator =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000C0000
+ }
+};
diff --git a/lib/unictype/pr_ignorable_control.c b/lib/unictype/pr_ignorable_control.c
new file mode 100644
index 00000000..00a7223c
--- /dev/null
+++ b/lib/unictype/pr_ignorable_control.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_ignorable_control table. */
+#include "pr_ignorable_control.h"
+
+bool
+uc_is_property_ignorable_control (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_ignorable_control, uc);
+}
+
+const uc_property_t UC_PROPERTY_IGNORABLE_CONTROL =
+ { &uc_is_property_ignorable_control };
diff --git a/lib/unictype/pr_ignorable_control.h b/lib/unictype/pr_ignorable_control.h
new file mode 100644
index 00000000..426c5f71
--- /dev/null
+++ b/lib/unictype/pr_ignorable_control.h
@@ -0,0 +1,452 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[15];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[7 << 4];
+ }
+u_property_ignorable_control =
+{
+ { 15 },
+ {
+ 16 * sizeof (int) / sizeof (short) + 0,
+ 16 * sizeof (int) / sizeof (short) + 128,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ 16 + 384 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 48,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 64,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 96,
+ -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
+ },
+ {
+ 0x0FFFC1FE, 0x00000000, 0x00000000, 0x80000000,
+ 0xFFFFFFDF, 0x00002000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000000F, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x20000000, 0x00000000,
+ 0x00008000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00300000, 0x00000000, 0x00000000,
+ 0x0000F800, 0x00007C00, 0x00000000, 0x0000FC1F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x80000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0E000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x07F80000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000002, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_iso_control.c b/lib/unictype/pr_iso_control.c
new file mode 100644
index 00000000..9d2f392e
--- /dev/null
+++ b/lib/unictype/pr_iso_control.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_iso_control table. */
+#include "pr_iso_control.h"
+
+bool
+uc_is_property_iso_control (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_iso_control, uc);
+}
+
+#else
+
+bool
+uc_is_property_iso_control (ucs4_t uc)
+{
+ return uc_is_general_category (uc, UC_CATEGORY_Cc);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_ISO_CONTROL =
+ { &uc_is_property_iso_control };
diff --git a/lib/unictype/pr_iso_control.h b/lib/unictype/pr_iso_control.h
new file mode 100644
index 00000000..09537917
--- /dev/null
+++ b/lib/unictype/pr_iso_control.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_property_iso_control =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0xFFFFFFFF, 0x00000000, 0x00000000, 0x80000000,
+ 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_join_control.c b/lib/unictype/pr_join_control.c
new file mode 100644
index 00000000..ad22cea9
--- /dev/null
+++ b/lib/unictype/pr_join_control.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_join_control table. */
+#include "pr_join_control.h"
+
+bool
+uc_is_property_join_control (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_join_control, uc);
+}
+
+#else
+
+bool
+uc_is_property_join_control (ucs4_t uc)
+{
+ return (uc >= 0x200C && uc <= 0x200D);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_JOIN_CONTROL =
+ { &uc_is_property_join_control };
diff --git a/lib/unictype/pr_join_control.h b/lib/unictype/pr_join_control.h
new file mode 100644
index 00000000..649a1689
--- /dev/null
+++ b/lib/unictype/pr_join_control.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_property_join_control =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0x00003000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_left_of_pair.c b/lib/unictype/pr_left_of_pair.c
new file mode 100644
index 00000000..62b45f48
--- /dev/null
+++ b/lib/unictype/pr_left_of_pair.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_left_of_pair table. */
+#include "pr_left_of_pair.h"
+
+bool
+uc_is_property_left_of_pair (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_left_of_pair, uc);
+}
+
+const uc_property_t UC_PROPERTY_LEFT_OF_PAIR =
+ { &uc_is_property_left_of_pair };
diff --git a/lib/unictype/pr_left_of_pair.h b/lib/unictype/pr_left_of_pair.h
new file mode 100644
index 00000000..af7ee2cb
--- /dev/null
+++ b/lib/unictype/pr_left_of_pair.h
@@ -0,0 +1,184 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[8 << 4];
+ }
+u_property_left_of_pair =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 80,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 96,
+ 2 + 128 * sizeof (short) / sizeof (int) + 112
+ },
+ {
+ 0x00000000, 0x00000100, 0x08000000, 0x08000000,
+ 0x00000000, 0x00000800, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x14000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x08000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xDD000000, 0x02000000, 0x00000020, 0x20000000,
+ 0x00002000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x25515500, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x40000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xAAA00000, 0x2A00000A, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000100, 0x08000000, 0x08000000, 0x00000004,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_line_separator.c b/lib/unictype/pr_line_separator.c
new file mode 100644
index 00000000..0c0b320a
--- /dev/null
+++ b/lib/unictype/pr_line_separator.c
@@ -0,0 +1,55 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_line_separator table. */
+#include "pr_line_separator.h"
+
+bool
+uc_is_property_line_separator (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_line_separator, uc);
+}
+
+#elif 0
+
+bool
+uc_is_property_line_separator (ucs4_t uc)
+{
+ return uc_is_category_Zl (uc);
+}
+
+#else
+
+bool
+uc_is_property_line_separator (ucs4_t uc)
+{
+ return (uc == 0x2028);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_LINE_SEPARATOR =
+ { &uc_is_property_line_separator };
diff --git a/lib/unictype/pr_line_separator.h b/lib/unictype/pr_line_separator.h
new file mode 100644
index 00000000..56dd92b2
--- /dev/null
+++ b/lib/unictype/pr_line_separator.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_property_line_separator =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0x00000000, 0x00000100, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_logical_order_exception.c b/lib/unictype/pr_logical_order_exception.c
new file mode 100644
index 00000000..e06f2719
--- /dev/null
+++ b/lib/unictype/pr_logical_order_exception.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_logical_order_exception table. */
+#include "pr_logical_order_exception.h"
+
+bool
+uc_is_property_logical_order_exception (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_logical_order_exception, uc);
+}
+
+const uc_property_t UC_PROPERTY_LOGICAL_ORDER_EXCEPTION =
+ { &uc_is_property_logical_order_exception };
diff --git a/lib/unictype/pr_logical_order_exception.h b/lib/unictype/pr_logical_order_exception.h
new file mode 100644
index 00000000..c8894ad0
--- /dev/null
+++ b/lib/unictype/pr_logical_order_exception.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_property_logical_order_exception =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x0000001F, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000001F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_lowercase.c b/lib/unictype/pr_lowercase.c
new file mode 100644
index 00000000..ed719da9
--- /dev/null
+++ b/lib/unictype/pr_lowercase.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_lowercase table. */
+#include "pr_lowercase.h"
+
+bool
+uc_is_property_lowercase (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_lowercase, uc);
+}
+
+const uc_property_t UC_PROPERTY_LOWERCASE =
+ { &uc_is_property_lowercase };
diff --git a/lib/unictype/pr_lowercase.h b/lib/unictype/pr_lowercase.h
new file mode 100644
index 00000000..3443aeca
--- /dev/null
+++ b/lib/unictype/pr_lowercase.h
@@ -0,0 +1,339 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[14 << 4];
+ }
+u_property_lowercase =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ 3 + 256 * sizeof (short) / sizeof (int) + 208,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x07FFFFFE,
+ 0x00000000, 0x04200400, 0x80000000, 0xFF7FFFFF,
+ 0xAAAAAAAA, 0x55AAAAAA, 0xAAAAAB55, 0xD4AAAAAA,
+ 0x4E243129, 0xE6512D2A, 0xB5555240, 0xAA29AAAA,
+ 0xAAAAAAAA, 0x93FAAAAA, 0xFFFFAA85, 0xFFFFFFFF,
+ 0xFFEFFFFF, 0x01FFFFFF, 0x00000003, 0x0000001F,
+ 0x00000000, 0x00000000, 0x00000020, 0x3C8A0000,
+ 0x00010000, 0xFFFFF000, 0xAAE37FFF, 0x192FAAAA,
+ 0x00000000, 0xFFFF0000, 0xFFFFFFFF, 0xAAAAAAAA,
+ 0xAAAAA802, 0xAAAAAAAA, 0xAAAAD554, 0xAAAAAAAA,
+ 0xAAAAAAAA, 0x0000000A, 0x00000000, 0xFFFFFFFE,
+ 0x000000FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000,
+ 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA,
+ 0xBFEAAAAA, 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA,
+ 0x003F00FF, 0x00FF00FF, 0x00FF003F, 0x3FFF00FF,
+ 0x00FF00FF, 0x40DF00FF, 0x00CF00DC, 0x00DC00FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x80020000,
+ 0x001F0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0008C400, 0x32108000, 0x000043C0, 0xFFFF0000,
+ 0x00000010, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFF0000, 0x000003FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFF0000, 0x7FFFFFFF, 0x3FDA1562,
+ 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA, 0x0000001A,
+ 0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xAAAAAAAA, 0x00002AA8,
+ 0x00AAAAAA, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xAAABAAA8, 0xAAAAAAAA, 0x95FFAAAA,
+ 0x000010AA, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00F8007F, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x07FFFFFE, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFFFF00, 0x0000FFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFC000000, 0x000FFFFF, 0xFFDFC000, 0x000000FF,
+ 0x0FFFFFFC, 0xEBC00000, 0x0000FFEF, 0xFFFFFC00,
+ 0xC000000F, 0x00FFFFFF, 0xFFFC0000, 0x00000FFF,
+ 0xFFFFFFC0, 0xFC000000, 0x000FFFFF, 0xFFFFC000,
+ 0x000000FF, 0x0FFFFFFC, 0xFFC00000, 0x0000FFFF,
+ 0xFFFFFC00, 0x0000003F, 0xF7FFFFFC, 0xF0000003,
+ 0x0FDFFFFF, 0xFFC00000, 0x003F7FFF, 0xFFFF0000,
+ 0x0000FDFF, 0xFFFFFC00, 0x00000BF7, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_math.c b/lib/unictype/pr_math.c
new file mode 100644
index 00000000..a4971d25
--- /dev/null
+++ b/lib/unictype/pr_math.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_math table. */
+#include "pr_math.h"
+
+bool
+uc_is_property_math (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_math, uc);
+}
+
+const uc_property_t UC_PROPERTY_MATH =
+ { &uc_is_property_math };
diff --git a/lib/unictype/pr_math.h b/lib/unictype/pr_math.h
new file mode 100644
index 00000000..dd3ae7e5
--- /dev/null
+++ b/lib/unictype/pr_math.h
@@ -0,0 +1,335 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[13 << 4];
+ }
+u_property_math =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x70000800, 0x40000000, 0x50000000,
+ 0x00000000, 0x00021000, 0x00800000, 0x00800000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00270000, 0x00730000,
+ 0x000001C0, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00400000, 0x001C0000, 0x00040011, 0x7C00001E,
+ 0x00007C00, 0x00000000, 0x1FFF0000, 0x0000F862,
+ 0x3E2FFC04, 0xF1FBB310, 0x00000BFF, 0x00000000,
+ 0xFFFF0000, 0xF0C37EFF, 0x2FFFFFFF, 0xFFF00030,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000F00, 0x00000003, 0x00000000, 0x10000000,
+ 0xF8000000, 0x00BFFFFF, 0xF0010000, 0x00000007,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xF0FFC003, 0x000F8CC3, 0xFF001F94,
+ 0x00000060, 0x00000000, 0x00000005, 0x0000E00F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFF17FF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0xFFFF0000, 0x00001F9F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000017E,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x70000800, 0x50000000, 0x50000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00001E04,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFDFFFFF, 0xFFFFFFFF,
+ 0xDFFFFFFF, 0xEBFFDE64, 0xFFFFFFEF, 0xFFFFFFFF,
+ 0xDFDFE7BF, 0x7BFFFFFF, 0xFFFDFC5F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF3F, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFCFFF, 0xFFFFFFFF
+ }
+};
diff --git a/lib/unictype/pr_non_break.c b/lib/unictype/pr_non_break.c
new file mode 100644
index 00000000..d1855d4f
--- /dev/null
+++ b/lib/unictype/pr_non_break.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_non_break table. */
+#include "pr_non_break.h"
+
+bool
+uc_is_property_non_break (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_non_break, uc);
+}
+
+const uc_property_t UC_PROPERTY_NON_BREAK =
+ { &uc_is_property_non_break };
diff --git a/lib/unictype/pr_non_break.h b/lib/unictype/pr_non_break.h
new file mode 100644
index 00000000..0525fb97
--- /dev/null
+++ b/lib/unictype/pr_non_break.h
@@ -0,0 +1,172 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[5 << 4];
+ }
+u_property_non_break =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000001, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xF0008000, 0x00000007,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00041100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00004000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00020080, 0x00008000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_not_a_character.c b/lib/unictype/pr_not_a_character.c
new file mode 100644
index 00000000..05910fe6
--- /dev/null
+++ b/lib/unictype/pr_not_a_character.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_not_a_character table. */
+#include "pr_not_a_character.h"
+
+bool
+uc_is_property_not_a_character (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_not_a_character, uc);
+}
+
+const uc_property_t UC_PROPERTY_NOT_A_CHARACTER =
+ { &uc_is_property_not_a_character };
diff --git a/lib/unictype/pr_not_a_character.h b/lib/unictype/pr_not_a_character.h
new file mode 100644
index 00000000..267df707
--- /dev/null
+++ b/lib/unictype/pr_not_a_character.h
@@ -0,0 +1,306 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[17];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[2 << 4];
+ }
+u_property_not_a_character =
+{
+ { 17 },
+ {
+ 18 * sizeof (int) / sizeof (short) + 0,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ -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,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 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,
+ 18 + 256 * sizeof (short) / sizeof (int) + 16
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFF0000, 0x0000FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xC0000000
+ }
+};
diff --git a/lib/unictype/pr_numeric.c b/lib/unictype/pr_numeric.c
new file mode 100644
index 00000000..dfa2250a
--- /dev/null
+++ b/lib/unictype/pr_numeric.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_numeric table. */
+#include "pr_numeric.h"
+
+bool
+uc_is_property_numeric (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_numeric, uc);
+}
+
+const uc_property_t UC_PROPERTY_NUMERIC =
+ { &uc_is_property_numeric };
diff --git a/lib/unictype/pr_numeric.h b/lib/unictype/pr_numeric.h
new file mode 100644
index 00000000..14aaa03b
--- /dev/null
+++ b/lib/unictype/pr_numeric.h
@@ -0,0 +1,540 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[3];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[32 << 4];
+ }
+u_property_numeric =
+{
+ { 3 },
+ {
+ 4 * sizeof (int) / sizeof (short) + 0,
+ 4 * sizeof (int) / sizeof (short) + 128,
+ 4 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ 4 + 384 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 16,
+ 4 + 384 * sizeof (short) / sizeof (int) + 32,
+ 4 + 384 * sizeof (short) / sizeof (int) + 48,
+ 4 + 384 * sizeof (short) / sizeof (int) + 64,
+ 4 + 384 * sizeof (short) / sizeof (int) + 80,
+ 4 + 384 * sizeof (short) / sizeof (int) + 96,
+ 4 + 384 * sizeof (short) / sizeof (int) + 112,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 128,
+ 4 + 384 * sizeof (short) / sizeof (int) + 144,
+ 4 + 384 * sizeof (short) / sizeof (int) + 160,
+ 4 + 384 * sizeof (short) / sizeof (int) + 176,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 192,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 208,
+ 4 + 384 * sizeof (short) / sizeof (int) + 224,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 240,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 256,
+ 4 + 384 * sizeof (short) / sizeof (int) + 272,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 352,
+ 4 + 384 * sizeof (short) / sizeof (int) + 368,
+ 4 + 384 * sizeof (short) / sizeof (int) + 384,
+ 4 + 384 * sizeof (short) / sizeof (int) + 400,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 416,
+ 4 + 384 * sizeof (short) / sizeof (int) + 432,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 448,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 464,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 480,
+ -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,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 496,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x03FF0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x720C0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000003FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x03FF0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x000003FF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x03F0FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0007FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x7F00FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x003FFFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x000FFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x000003FF, 0x00000000,
+ 0x03FF0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x1FFFFE00,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0001C000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x03FF03FF,
+ 0x03FF0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000FFC0, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x03FF0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF03FF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x03F10000,
+ 0x000003FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFF80000, 0xFFFFFFFF,
+ 0x000001EF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF,
+ 0x0FFFFFFF, 0x00000000, 0x00000000, 0xFFFFFC00,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFC00000,
+ 0x000FFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x20000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000080, 0x070003FE, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x003C0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x000003FF, 0xFFFE0000, 0x00000000,
+ 0x000003FF, 0xFFFE0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x000003FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x000003FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x03FF0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x01080800,
+ 0x00000000, 0x00040000, 0x000A0000, 0x20000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x03FF0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFF80, 0x000FFFFF, 0xFFFFFFFF, 0x01FFFFFF,
+ 0x00000400, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x0000000F, 0x00000402, 0x00000000,
+ 0x00000000, 0x00000000, 0x003E0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x000003FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x03C00000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x000000FF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFF3FFFF, 0xFF3FFFFF, 0x00000007,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0003FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFC000, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00010000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_other_alphabetic.c b/lib/unictype/pr_other_alphabetic.c
new file mode 100644
index 00000000..1a880f5b
--- /dev/null
+++ b/lib/unictype/pr_other_alphabetic.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_other_alphabetic table. */
+#include "pr_other_alphabetic.h"
+
+bool
+uc_is_property_other_alphabetic (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_other_alphabetic, uc);
+}
+
+const uc_property_t UC_PROPERTY_OTHER_ALPHABETIC =
+ { &uc_is_property_other_alphabetic };
diff --git a/lib/unictype/pr_other_alphabetic.h b/lib/unictype/pr_other_alphabetic.h
new file mode 100644
index 00000000..c0c42717
--- /dev/null
+++ b/lib/unictype/pr_other_alphabetic.h
@@ -0,0 +1,359 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[19 << 4];
+ }
+u_property_other_alphabetic =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 208,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 224,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 240,
+ 3 + 256 * sizeof (short) / sizeof (int) + 256,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 288,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000020, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xBFFF0000, 0x000000B6, 0x00000000,
+ 0x07FF0000, 0x00000000, 0x7EFFF800, 0x00010000,
+ 0x00000000, 0x00000000, 0x1FC00000, 0x0000219E,
+ 0x00020000, 0xFFFF0000, 0x00000000, 0x00000000,
+ 0x00000000, 0x0001FFC0, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000000E, 0xC0000000, 0x00001FFF, 0x0000000C,
+ 0x0000000E, 0xC0000000, 0x0080199F, 0x0000000C,
+ 0x0000000E, 0xC0000000, 0x00021987, 0x00230000,
+ 0x0000000E, 0xC0000000, 0x00001BBF, 0x0000000C,
+ 0x0000000E, 0xC0000000, 0x00C0199F, 0x0000000C,
+ 0x00000004, 0xC0000000, 0x00801DC7, 0x00000000,
+ 0x0000000E, 0xC0000000, 0x00601DDF, 0x0000000C,
+ 0x0000000C, 0xC0000000, 0x00601DDF, 0x0000000C,
+ 0x0000000C, 0xC0000000, 0x00801DDF, 0x0000000C,
+ 0x0000000C, 0x00000000, 0xFF5F8000, 0x000C0000,
+ 0x00000000, 0x07F20000, 0x00002000, 0x00000000,
+ 0x00000000, 0x1BF20000, 0x00002000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFE0000,
+ 0xFEFF0003, 0x1FFFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x797FF800, 0xC3C00000, 0x001E0185,
+ 0x0000007C, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x000C0000, 0x000C0000, 0x000C0000, 0x000C0000,
+ 0x00000000, 0xFFC00000, 0x000001FF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000000, 0x01FF0FFF, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFF0000, 0x00000301, 0x00000000,
+ 0x0F800000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000001F, 0xFFE00000, 0x0000000F, 0x00000000,
+ 0x00000007, 0x000003FE, 0x00000000, 0x00000000,
+ 0x00000000, 0x003FFFF0, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFC00000, 0xFFFFFFFF, 0x000003FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF,
+ 0x00000000, 0x000000F8, 0x00000000, 0x00000000,
+ 0x00000003, 0xFFF00000, 0x0000000F, 0x00000000,
+ 0x00000000, 0x000007C0, 0x0007FF80, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x007FFE00, 0x00003008, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x40000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000F06E, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_other_default_ignorable_code_point.c b/lib/unictype/pr_other_default_ignorable_code_point.c
new file mode 100644
index 00000000..434977d1
--- /dev/null
+++ b/lib/unictype/pr_other_default_ignorable_code_point.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_other_default_ignorable_code_point table. */
+#include "pr_other_default_ignorable_code_point.h"
+
+bool
+uc_is_property_other_default_ignorable_code_point (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_other_default_ignorable_code_point, uc);
+}
+
+const uc_property_t UC_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT =
+ { &uc_is_property_other_default_ignorable_code_point };
diff --git a/lib/unictype/pr_other_default_ignorable_code_point.h b/lib/unictype/pr_other_default_ignorable_code_point.h
new file mode 100644
index 00000000..621cf4ce
--- /dev/null
+++ b/lib/unictype/pr_other_default_ignorable_code_point.h
@@ -0,0 +1,324 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[15];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[7 << 4];
+ }
+u_property_other_default_ignorable_code_point =
+{
+ { 15 },
+ {
+ 16 * sizeof (int) / sizeof (short) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ -1,
+ 16 + 256 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 256 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 256 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 256 * sizeof (short) / sizeof (int) + 48,
+ -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,
+ 16 + 256 * sizeof (short) / sizeof (int) + 64,
+ 16 + 256 * sizeof (short) / sizeof (int) + 80,
+ 16 + 256 * sizeof (short) / sizeof (int) + 96,
+ 16 + 256 * sizeof (short) / sizeof (int) + 96,
+ 16 + 256 * sizeof (short) / sizeof (int) + 96,
+ 16 + 256 * sizeof (short) / sizeof (int) + 96,
+ 16 + 256 * sizeof (short) / sizeof (int) + 96,
+ 16 + 256 * sizeof (short) / sizeof (int) + 96,
+ 16 + 256 * sizeof (short) / sizeof (int) + 96,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00008000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x80000000, 0x00000001,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000003E0,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000010,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000001, 0x00000000, 0x01FF0000,
+ 0xFFFFFFFD, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
+ }
+};
diff --git a/lib/unictype/pr_other_grapheme_extend.c b/lib/unictype/pr_other_grapheme_extend.c
new file mode 100644
index 00000000..fb7af9c2
--- /dev/null
+++ b/lib/unictype/pr_other_grapheme_extend.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_other_grapheme_extend table. */
+#include "pr_other_grapheme_extend.h"
+
+bool
+uc_is_property_other_grapheme_extend (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_other_grapheme_extend, uc);
+}
+
+const uc_property_t UC_PROPERTY_OTHER_GRAPHEME_EXTEND =
+ { &uc_is_property_other_grapheme_extend };
diff --git a/lib/unictype/pr_other_grapheme_extend.h b/lib/unictype/pr_other_grapheme_extend.h
new file mode 100644
index 00000000..cbf3b98a
--- /dev/null
+++ b/lib/unictype/pr_other_grapheme_extend.h
@@ -0,0 +1,307 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[6 << 4];
+ }
+u_property_other_grapheme_extend =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x40000000, 0x00800000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x40000000, 0x00800000, 0x00000000,
+ 0x00000000, 0x40000000, 0x00800000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00600004, 0x00000000,
+ 0x00000000, 0x40000000, 0x00800000, 0x00000000,
+ 0x00000000, 0x00000000, 0x80008000, 0x00000000,
+ 0x00003000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xC0000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0007C020,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_other_id_continue.c b/lib/unictype/pr_other_id_continue.c
new file mode 100644
index 00000000..75e71c3c
--- /dev/null
+++ b/lib/unictype/pr_other_id_continue.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_other_id_continue table. */
+#include "pr_other_id_continue.h"
+
+bool
+uc_is_property_other_id_continue (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_other_id_continue, uc);
+}
+
+const uc_property_t UC_PROPERTY_OTHER_ID_CONTINUE =
+ { &uc_is_property_other_id_continue };
diff --git a/lib/unictype/pr_other_id_continue.h b/lib/unictype/pr_other_id_continue.h
new file mode 100644
index 00000000..78e2b638
--- /dev/null
+++ b/lib/unictype/pr_other_id_continue.h
@@ -0,0 +1,164 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[3 << 4];
+ }
+u_property_other_id_continue =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00800000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0003FE00,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_other_id_start.c b/lib/unictype/pr_other_id_start.c
new file mode 100644
index 00000000..1858e47f
--- /dev/null
+++ b/lib/unictype/pr_other_id_start.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_other_id_start table. */
+#include "pr_other_id_start.h"
+
+bool
+uc_is_property_other_id_start (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_other_id_start, uc);
+}
+
+const uc_property_t UC_PROPERTY_OTHER_ID_START =
+ { &uc_is_property_other_id_start };
diff --git a/lib/unictype/pr_other_id_start.h b/lib/unictype/pr_other_id_start.h
new file mode 100644
index 00000000..233f80f3
--- /dev/null
+++ b/lib/unictype/pr_other_id_start.h
@@ -0,0 +1,160 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[2 << 4];
+ }
+u_property_other_id_start =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x01000000, 0x00004000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x18000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_other_lowercase.c b/lib/unictype/pr_other_lowercase.c
new file mode 100644
index 00000000..c199b174
--- /dev/null
+++ b/lib/unictype/pr_other_lowercase.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_other_lowercase table. */
+#include "pr_other_lowercase.h"
+
+bool
+uc_is_property_other_lowercase (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_other_lowercase, uc);
+}
+
+const uc_property_t UC_PROPERTY_OTHER_LOWERCASE =
+ { &uc_is_property_other_lowercase };
diff --git a/lib/unictype/pr_other_lowercase.h b/lib/unictype/pr_other_lowercase.h
new file mode 100644
index 00000000..78119089
--- /dev/null
+++ b/lib/unictype/pr_other_lowercase.h
@@ -0,0 +1,176 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[6 << 4];
+ }
+u_property_other_lowercase =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 80,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x01FF0000, 0x00000003, 0x0000001F,
+ 0x00000000, 0x00000000, 0x00000020, 0x04000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFFF000, 0xFFFFFFFF, 0x01000003,
+ 0xF8000000, 0xFFFFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x001F0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFF0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFF0000, 0x000003FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x20000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00010000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_other_math.c b/lib/unictype/pr_other_math.c
new file mode 100644
index 00000000..7e130e7f
--- /dev/null
+++ b/lib/unictype/pr_other_math.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_other_math table. */
+#include "pr_other_math.h"
+
+bool
+uc_is_property_other_math (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_other_math, uc);
+}
+
+const uc_property_t UC_PROPERTY_OTHER_MATH =
+ { &uc_is_property_other_math };
diff --git a/lib/unictype/pr_other_math.h b/lib/unictype/pr_other_math.h
new file mode 100644
index 00000000..116311d9
--- /dev/null
+++ b/lib/unictype/pr_other_math.h
@@ -0,0 +1,323 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[10 << 4];
+ }
+u_property_other_math =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x40000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00270000, 0x00330000,
+ 0x00400000, 0x001C0000, 0x00000001, 0x6000001E,
+ 0x00006000, 0x00000000, 0x1FFF0000, 0x0000F862,
+ 0x3E2FFC04, 0xF1FBB310, 0x000003E0, 0x00000000,
+ 0xF3E00000, 0xF0C33EB6, 0x2FEB3FFF, 0x00000030,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00B00000, 0x00010000, 0x00000004,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xF07FC003, 0x000F8CC1, 0x00001F94,
+ 0x00000060, 0x00000000, 0x00000005, 0x0000600F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000060, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x01FFFFF8, 0x00000000, 0x0F000000, 0x30000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000010A,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x50000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFDFFFFF, 0xFFFFFFFF,
+ 0xDFFFFFFF, 0xEBFFDE64, 0xFFFFFFEF, 0xFFFFFFFF,
+ 0xDFDFE7BF, 0x7BFFFFFF, 0xFFFDFC5F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF3F, 0xF7FFFFFD, 0xF7FFFFFF,
+ 0xFFDFFFFF, 0xFFDFFFFF, 0xFFFF7FFF, 0xFFFF7FFF,
+ 0xFFFFFDFF, 0xFFFFFDFF, 0xFFFFCFF7, 0xFFFFFFFF
+ }
+};
diff --git a/lib/unictype/pr_other_uppercase.c b/lib/unictype/pr_other_uppercase.c
new file mode 100644
index 00000000..278ce514
--- /dev/null
+++ b/lib/unictype/pr_other_uppercase.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_other_uppercase table. */
+#include "pr_other_uppercase.h"
+
+bool
+uc_is_property_other_uppercase (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_other_uppercase, uc);
+}
+
+const uc_property_t UC_PROPERTY_OTHER_UPPERCASE =
+ { &uc_is_property_other_uppercase };
diff --git a/lib/unictype/pr_other_uppercase.h b/lib/unictype/pr_other_uppercase.h
new file mode 100644
index 00000000..be01f4d7
--- /dev/null
+++ b/lib/unictype/pr_other_uppercase.h
@@ -0,0 +1,160 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[2 << 4];
+ }
+u_property_other_uppercase =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0000FFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFC00000, 0x0000FFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_paired_punctuation.c b/lib/unictype/pr_paired_punctuation.c
new file mode 100644
index 00000000..52b0dbb4
--- /dev/null
+++ b/lib/unictype/pr_paired_punctuation.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_paired_punctuation table. */
+#include "pr_paired_punctuation.h"
+
+bool
+uc_is_property_paired_punctuation (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_paired_punctuation, uc);
+}
+
+const uc_property_t UC_PROPERTY_PAIRED_PUNCTUATION =
+ { &uc_is_property_paired_punctuation };
diff --git a/lib/unictype/pr_paired_punctuation.h b/lib/unictype/pr_paired_punctuation.h
new file mode 100644
index 00000000..7723d322
--- /dev/null
+++ b/lib/unictype/pr_paired_punctuation.h
@@ -0,0 +1,184 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[8 << 4];
+ }
+u_property_paired_punctuation =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 80,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 96,
+ 2 + 128 * sizeof (short) / sizeof (int) + 112
+ },
+ {
+ 0x00000000, 0x00000300, 0x28000000, 0x28000000,
+ 0x00000000, 0x08000800, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x3C000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x18000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF000000, 0x06000000, 0x00000060, 0x60000000,
+ 0x00006000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000600, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xEFF3FF00, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xC0000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFE00000, 0x7E00001F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000300, 0x28000000, 0x28000000, 0x0000000C,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_paragraph_separator.c b/lib/unictype/pr_paragraph_separator.c
new file mode 100644
index 00000000..c1aeff31
--- /dev/null
+++ b/lib/unictype/pr_paragraph_separator.c
@@ -0,0 +1,55 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_paragraph_separator table. */
+#include "pr_paragraph_separator.h"
+
+bool
+uc_is_property_paragraph_separator (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_paragraph_separator, uc);
+}
+
+#elif 0
+
+bool
+uc_is_property_paragraph_separator (ucs4_t uc)
+{
+ return uc_is_category_Zp (uc);
+}
+
+#else
+
+bool
+uc_is_property_paragraph_separator (ucs4_t uc)
+{
+ return (uc == 0x2029);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_PARAGRAPH_SEPARATOR =
+ { &uc_is_property_paragraph_separator };
diff --git a/lib/unictype/pr_paragraph_separator.h b/lib/unictype/pr_paragraph_separator.h
new file mode 100644
index 00000000..72c2a85e
--- /dev/null
+++ b/lib/unictype/pr_paragraph_separator.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_property_paragraph_separator =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0x00000000, 0x00000200, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_pattern_syntax.c b/lib/unictype/pr_pattern_syntax.c
new file mode 100644
index 00000000..5f5366f6
--- /dev/null
+++ b/lib/unictype/pr_pattern_syntax.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_pattern_syntax table. */
+#include "pr_pattern_syntax.h"
+
+bool
+uc_is_property_pattern_syntax (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_pattern_syntax, uc);
+}
+
+const uc_property_t UC_PROPERTY_PATTERN_SYNTAX =
+ { &uc_is_property_pattern_syntax };
diff --git a/lib/unictype/pr_pattern_syntax.h b/lib/unictype/pr_pattern_syntax.h
new file mode 100644
index 00000000..f3990657
--- /dev/null
+++ b/lib/unictype/pr_pattern_syntax.h
@@ -0,0 +1,188 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[9 << 4];
+ }
+u_property_pattern_syntax =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 80,
+ 2 + 128 * sizeof (short) / sizeof (int) + 96,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 112,
+ 2 + 128 * sizeof (short) / sizeof (int) + 128
+ },
+ {
+ 0x00000000, 0xFC00FFFE, 0x78000001, 0x78000001,
+ 0x00000000, 0x88435AFE, 0x00800000, 0x00800000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFF0000, 0x7FFF00FF, 0x7FEFFFFE, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFF0000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x003FFFFF,
+ 0xFFF00000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFF0E, 0x00010001, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xC0000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000060, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_pattern_white_space.c b/lib/unictype/pr_pattern_white_space.c
new file mode 100644
index 00000000..407cc7e5
--- /dev/null
+++ b/lib/unictype/pr_pattern_white_space.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_pattern_white_space table. */
+#include "pr_pattern_white_space.h"
+
+bool
+uc_is_property_pattern_white_space (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_pattern_white_space, uc);
+}
+
+const uc_property_t UC_PROPERTY_PATTERN_WHITE_SPACE =
+ { &uc_is_property_pattern_white_space };
diff --git a/lib/unictype/pr_pattern_white_space.h b/lib/unictype/pr_pattern_white_space.h
new file mode 100644
index 00000000..559d08f6
--- /dev/null
+++ b/lib/unictype/pr_pattern_white_space.h
@@ -0,0 +1,160 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[2 << 4];
+ }
+u_property_pattern_white_space =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 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
+ },
+ {
+ 0x00003E00, 0x00000001, 0x00000000, 0x00000000,
+ 0x00000020, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000C000, 0x00000300, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_private_use.c b/lib/unictype/pr_private_use.c
new file mode 100644
index 00000000..64a28c78
--- /dev/null
+++ b/lib/unictype/pr_private_use.c
@@ -0,0 +1,49 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_private_use table. */
+#include "pr_private_use.h"
+
+bool
+uc_is_property_private_use (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_private_use, uc);
+}
+
+#else
+
+bool
+uc_is_property_private_use (ucs4_t uc)
+{
+ return (uc >= 0xE000 && uc <= 0xF8FF)
+ || (uc >= 0xF0000 && uc <= 0xFFFFD)
+ || (uc >= 0x100000 && uc <= 0x10FFFD);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_PRIVATE_USE =
+ { &uc_is_property_private_use };
diff --git a/lib/unictype/pr_private_use.h b/lib/unictype/pr_private_use.h
new file mode 100644
index 00000000..e18b60e2
--- /dev/null
+++ b/lib/unictype/pr_private_use.h
@@ -0,0 +1,310 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[17];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[3 << 4];
+ }
+u_property_private_use =
+{
+ { 17 },
+ {
+ 18 * sizeof (int) / sizeof (short) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 18 * sizeof (int) / sizeof (short) + 128,
+ 18 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ -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,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 0,
+ 18 + 256 * sizeof (short) / sizeof (int) + 32
+ },
+ {
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF
+ }
+};
diff --git a/lib/unictype/pr_punctuation.c b/lib/unictype/pr_punctuation.c
new file mode 100644
index 00000000..00efeee3
--- /dev/null
+++ b/lib/unictype/pr_punctuation.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_punctuation table. */
+#include "pr_punctuation.h"
+
+bool
+uc_is_property_punctuation (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_punctuation, uc);
+}
+
+#else
+
+bool
+uc_is_property_punctuation (ucs4_t uc)
+{
+ return uc_is_general_category (uc, UC_CATEGORY_P);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_PUNCTUATION =
+ { &uc_is_property_punctuation };
diff --git a/lib/unictype/pr_punctuation.h b/lib/unictype/pr_punctuation.h
new file mode 100644
index 00000000..cfa6649b
--- /dev/null
+++ b/lib/unictype/pr_punctuation.h
@@ -0,0 +1,403 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[30 << 4];
+ }
+u_property_punctuation =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 208,
+ 3 + 256 * sizeof (short) / sizeof (int) + 224,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 240,
+ 3 + 256 * sizeof (short) / sizeof (int) + 256,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ 3 + 256 * sizeof (short) / sizeof (int) + 288,
+ 3 + 256 * sizeof (short) / sizeof (int) + 304,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 320,
+ 3 + 256 * sizeof (short) / sizeof (int) + 336,
+ 3 + 256 * sizeof (short) / sizeof (int) + 352,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 368,
+ 3 + 256 * sizeof (short) / sizeof (int) + 384,
+ 3 + 256 * sizeof (short) / sizeof (int) + 400,
+ 3 + 256 * sizeof (short) / sizeof (int) + 416,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 432,
+ 3 + 256 * sizeof (short) / sizeof (int) + 448,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 464,
+ -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
+ },
+ {
+ 0x00000000, 0x8C00F7EE, 0xB8000001, 0x28000000,
+ 0x00000000, 0x88800802, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x40000000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFC000000, 0x00000000,
+ 0x00000600, 0x40000000, 0x00000049, 0x00180000,
+ 0xC8003600, 0x00000000, 0x00000000, 0x00003C00,
+ 0x00000000, 0x00000000, 0x00100000, 0x00000000,
+ 0x00003FFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x03800000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00010030,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00100000,
+ 0x00000000, 0x00000000, 0x0C008000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0007FFF0, 0x3C000000, 0x00000000, 0x00000000,
+ 0x00000020, 0x00000000, 0x001F0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000FC00, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x08000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000001FE,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00006000,
+ 0x18000000, 0x00000000, 0x00000000, 0x00003800,
+ 0x00000000, 0x00600000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x07700000, 0x00000000,
+ 0x000007FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000030, 0x00000000,
+ 0x00000000, 0x00000000, 0xC0000000, 0x00000000,
+ 0xC0000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFC000000, 0x00000001,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xF8000000, 0x00000000, 0xC0000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFF0000, 0xFFFF00FF, 0x7FFBFFEF, 0x60000000,
+ 0x00006000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000600, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x003FFF00,
+ 0x00000000, 0x00000000, 0x00000060, 0x0000FFC0,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x01FFFFF8, 0x00000000, 0x0F000000, 0x30000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xDE000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x00017FFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFF3FF0E, 0x20010000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000001, 0x00000000, 0x08000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000E000, 0x00000000, 0x00000000, 0x40080000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00F00000,
+ 0x00000000, 0x00000000, 0x0000C000, 0x00000000,
+ 0x00000000, 0x0000C000, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xF0000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xC0000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x03FF0000, 0xFFFF0000, 0xFFF7FFFF, 0x00000D0B,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x8C00F7EE, 0xB8000001, 0xA8000000, 0x0000003F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000003, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x80000000, 0x00000000, 0x00010000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x80000000, 0x80000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x01FF0000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000F0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_quotation_mark.c b/lib/unictype/pr_quotation_mark.c
new file mode 100644
index 00000000..e07fef2e
--- /dev/null
+++ b/lib/unictype/pr_quotation_mark.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_quotation_mark table. */
+#include "pr_quotation_mark.h"
+
+bool
+uc_is_property_quotation_mark (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_quotation_mark, uc);
+}
+
+const uc_property_t UC_PROPERTY_QUOTATION_MARK =
+ { &uc_is_property_quotation_mark };
diff --git a/lib/unictype/pr_quotation_mark.h b/lib/unictype/pr_quotation_mark.h
new file mode 100644
index 00000000..e334761b
--- /dev/null
+++ b/lib/unictype/pr_quotation_mark.h
@@ -0,0 +1,168 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[4 << 4];
+ }
+u_property_quotation_mark =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48
+ },
+ {
+ 0x00000000, 0x00000084, 0x00000000, 0x00000000,
+ 0x00000000, 0x08000800, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF000000, 0x06000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xE000F000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000001E, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000084, 0x00000000, 0x00000000, 0x0000000C,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_radical.c b/lib/unictype/pr_radical.c
new file mode 100644
index 00000000..13431628
--- /dev/null
+++ b/lib/unictype/pr_radical.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_radical table. */
+#include "pr_radical.h"
+
+bool
+uc_is_property_radical (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_radical, uc);
+}
+
+const uc_property_t UC_PROPERTY_RADICAL =
+ { &uc_is_property_radical };
diff --git a/lib/unictype/pr_radical.h b/lib/unictype/pr_radical.h
new file mode 100644
index 00000000..e4b54c1d
--- /dev/null
+++ b/lib/unictype/pr_radical.h
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[1 << 4];
+ }
+u_property_radical =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFBFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x000FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x003FFFFF, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_sentence_terminal.c b/lib/unictype/pr_sentence_terminal.c
new file mode 100644
index 00000000..85d5e68e
--- /dev/null
+++ b/lib/unictype/pr_sentence_terminal.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_sentence_terminal table. */
+#include "pr_sentence_terminal.h"
+
+bool
+uc_is_property_sentence_terminal (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_sentence_terminal, uc);
+}
+
+const uc_property_t UC_PROPERTY_SENTENCE_TERMINAL =
+ { &uc_is_property_sentence_terminal };
diff --git a/lib/unictype/pr_sentence_terminal.h b/lib/unictype/pr_sentence_terminal.h
new file mode 100644
index 00000000..fd5bfbfa
--- /dev/null
+++ b/lib/unictype/pr_sentence_terminal.h
@@ -0,0 +1,220 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[17 << 4];
+ }
+u_property_sentence_terminal =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ 2 + 128 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 96,
+ 2 + 128 * sizeof (short) / sizeof (int) + 112,
+ 2 + 128 * sizeof (short) / sizeof (int) + 128,
+ 2 + 128 * sizeof (short) / sizeof (int) + 144,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 160,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 176,
+ 2 + 128 * sizeof (short) / sizeof (int) + 192,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 208,
+ 2 + 128 * sizeof (short) / sizeof (int) + 224,
+ 2 + 128 * sizeof (short) / sizeof (int) + 240,
+ -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,
+ 2 + 128 * sizeof (short) / sizeof (int) + 256
+ },
+ {
+ 0x00000000, 0x80004002, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x50000000, 0x00000000,
+ 0x00000200, 0x00000000, 0x00000000, 0x00000000,
+ 0x80000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00100000, 0x00000000,
+ 0x00000007, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x02000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000030,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000C00, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000184,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00004000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000208, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000030, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xCC000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x18000000, 0x00000000, 0xC0000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x30000000, 0x00000380, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00004000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000004, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000C000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00C00000,
+ 0x00000000, 0x00000000, 0x0000C000, 0x00000000,
+ 0x00000000, 0x00008000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xE0000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00C40000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x80004002, 0x00000000, 0x00000000, 0x00000002,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_soft_dotted.c b/lib/unictype/pr_soft_dotted.c
new file mode 100644
index 00000000..b261d3c1
--- /dev/null
+++ b/lib/unictype/pr_soft_dotted.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_soft_dotted table. */
+#include "pr_soft_dotted.h"
+
+bool
+uc_is_property_soft_dotted (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_soft_dotted, uc);
+}
+
+const uc_property_t UC_PROPERTY_SOFT_DOTTED =
+ { &uc_is_property_soft_dotted };
diff --git a/lib/unictype/pr_soft_dotted.h b/lib/unictype/pr_soft_dotted.h
new file mode 100644
index 00000000..63423710
--- /dev/null
+++ b/lib/unictype/pr_soft_dotted.h
@@ -0,0 +1,319 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[9 << 4];
+ }
+u_property_soft_dotted =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ -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,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000600,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00008000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000200, 0x00000100,
+ 0x20000000, 0x00040000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00080000,
+ 0x00000000, 0x00000000, 0x01400000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000004,
+ 0x00400000, 0x00000110, 0x00000000, 0x00000000,
+ 0x00000000, 0x00002000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000800, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00020000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000300, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x10000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x0000000C, 0x00C00000, 0x00000000,
+ 0x00000C00, 0xC0000000, 0x00000000, 0x000C0000,
+ 0x00000000, 0x000000C0, 0x0C000000, 0x00000000,
+ 0x0000C000, 0x00000000, 0x0000000C, 0x00C00000,
+ 0x00000000, 0x00000C00, 0xC0000000, 0x00000000,
+ 0x000C0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_space.c b/lib/unictype/pr_space.c
new file mode 100644
index 00000000..5bc3881e
--- /dev/null
+++ b/lib/unictype/pr_space.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_space table. */
+#include "pr_space.h"
+
+bool
+uc_is_property_space (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_space, uc);
+}
+
+#else
+
+bool
+uc_is_property_space (ucs4_t uc)
+{
+ return uc_is_general_category (uc, UC_CATEGORY_Zs);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_SPACE =
+ { &uc_is_property_space };
diff --git a/lib/unictype/pr_space.h b/lib/unictype/pr_space.h
new file mode 100644
index 00000000..b86a6a49
--- /dev/null
+++ b/lib/unictype/pr_space.h
@@ -0,0 +1,172 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[5 << 4];
+ }
+u_property_space =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -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
+ },
+ {
+ 0x00000000, 0x00000001, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000001, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00004000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x000007FF, 0x00008000, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_terminal_punctuation.c b/lib/unictype/pr_terminal_punctuation.c
new file mode 100644
index 00000000..30a79f92
--- /dev/null
+++ b/lib/unictype/pr_terminal_punctuation.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_terminal_punctuation table. */
+#include "pr_terminal_punctuation.h"
+
+bool
+uc_is_property_terminal_punctuation (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_terminal_punctuation, uc);
+}
+
+const uc_property_t UC_PROPERTY_TERMINAL_PUNCTUATION =
+ { &uc_is_property_terminal_punctuation };
diff --git a/lib/unictype/pr_terminal_punctuation.h b/lib/unictype/pr_terminal_punctuation.h
new file mode 100644
index 00000000..d6cd379e
--- /dev/null
+++ b/lib/unictype/pr_terminal_punctuation.h
@@ -0,0 +1,371 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[22 << 4];
+ }
+u_property_terminal_punctuation =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 208,
+ 3 + 256 * sizeof (short) / sizeof (int) + 224,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 240,
+ 3 + 256 * sizeof (short) / sizeof (int) + 256,
+ 3 + 256 * sizeof (short) / sizeof (int) + 272,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 288,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 304,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 320,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 336,
+ -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
+ },
+ {
+ 0x00000000, 0x8C005002, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x40000000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000200, 0x00000000, 0x00000008, 0x00000000,
+ 0x88001000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00100000, 0x00000000,
+ 0x000017FF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x03000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000030,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0C000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0007E100, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000C00, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000001FE,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00006000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00003800,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x04700000, 0x00000000,
+ 0x0000033C, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000030, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xEC000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xF8000000, 0x00000000, 0xC0000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x30000000, 0x00000380, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00004000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000006, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000E000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00C00000,
+ 0x00000000, 0x00000000, 0x0000C000, 0x00000000,
+ 0x00000000, 0x00008000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xE0000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00F70000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x8C005002, 0x00000000, 0x00000000, 0x00000012,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x80000000, 0x00000000, 0x00010000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x80000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000F0000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_test.c b/lib/unictype/pr_test.c
new file mode 100644
index 00000000..6d997b4c
--- /dev/null
+++ b/lib/unictype/pr_test.c
@@ -0,0 +1,27 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2005-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+bool
+uc_is_property (ucs4_t uc, uc_property_t property)
+{
+ return property.test_fn (uc);
+}
diff --git a/lib/unictype/pr_titlecase.c b/lib/unictype/pr_titlecase.c
new file mode 100644
index 00000000..eeb7dcc5
--- /dev/null
+++ b/lib/unictype/pr_titlecase.c
@@ -0,0 +1,47 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#if 0
+
+#include "bitmap.h"
+
+/* Define u_property_titlecase table. */
+#include "pr_titlecase.h"
+
+bool
+uc_is_property_titlecase (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_titlecase, uc);
+}
+
+#else
+
+bool
+uc_is_property_titlecase (ucs4_t uc)
+{
+ return uc_is_general_category (uc, UC_CATEGORY_Lt);
+}
+
+#endif
+
+const uc_property_t UC_PROPERTY_TITLECASE =
+ { &uc_is_property_titlecase };
diff --git a/lib/unictype/pr_titlecase.h b/lib/unictype/pr_titlecase.h
new file mode 100644
index 00000000..35dc74ef
--- /dev/null
+++ b/lib/unictype/pr_titlecase.h
@@ -0,0 +1,160 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[2 << 4];
+ }
+u_property_titlecase =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000920, 0x00040000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF00FF00, 0x1000FF00, 0x00001000, 0x10000000
+ }
+};
diff --git a/lib/unictype/pr_unassigned_code_value.c b/lib/unictype/pr_unassigned_code_value.c
new file mode 100644
index 00000000..328b5e7c
--- /dev/null
+++ b/lib/unictype/pr_unassigned_code_value.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_unassigned_code_value table. */
+#include "pr_unassigned_code_value.h"
+
+bool
+uc_is_property_unassigned_code_value (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_unassigned_code_value, uc);
+}
+
+const uc_property_t UC_PROPERTY_UNASSIGNED_CODE_VALUE =
+ { &uc_is_property_unassigned_code_value };
diff --git a/lib/unictype/pr_unassigned_code_value.h b/lib/unictype/pr_unassigned_code_value.h
new file mode 100644
index 00000000..5b12cf6d
--- /dev/null
+++ b/lib/unictype/pr_unassigned_code_value.h
@@ -0,0 +1,884 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[15];
+ short level2[5 << 7];
+ /*unsigned*/ int level3[51 << 4];
+ }
+u_property_unassigned_code_value =
+{
+ { 15 },
+ {
+ 16 * sizeof (int) / sizeof (short) + 0,
+ 16 * sizeof (int) / sizeof (short) + 128,
+ 16 * sizeof (int) / sizeof (short) + 256,
+ 16 * sizeof (int) / sizeof (short) + 384,
+ 16 * sizeof (int) / sizeof (short) + 384,
+ 16 * sizeof (int) / sizeof (short) + 384,
+ 16 * sizeof (int) / sizeof (short) + 384,
+ 16 * sizeof (int) / sizeof (short) + 384,
+ 16 * sizeof (int) / sizeof (short) + 384,
+ 16 * sizeof (int) / sizeof (short) + 384,
+ 16 * sizeof (int) / sizeof (short) + 384,
+ 16 * sizeof (int) / sizeof (short) + 384,
+ 16 * sizeof (int) / sizeof (short) + 384,
+ 16 * sizeof (int) / sizeof (short) + 384,
+ 16 * sizeof (int) / sizeof (short) + 512
+ },
+ {
+ -1,
+ 16 + 640 * sizeof (short) / sizeof (int) + 0,
+ 16 + 640 * sizeof (short) / sizeof (int) + 16,
+ 16 + 640 * sizeof (short) / sizeof (int) + 32,
+ 16 + 640 * sizeof (short) / sizeof (int) + 48,
+ 16 + 640 * sizeof (short) / sizeof (int) + 64,
+ 16 + 640 * sizeof (short) / sizeof (int) + 80,
+ 16 + 640 * sizeof (short) / sizeof (int) + 96,
+ 16 + 640 * sizeof (short) / sizeof (int) + 112,
+ 16 + 640 * sizeof (short) / sizeof (int) + 128,
+ 16 + 640 * sizeof (short) / sizeof (int) + 144,
+ 16 + 640 * sizeof (short) / sizeof (int) + 160,
+ 16 + 640 * sizeof (short) / sizeof (int) + 176,
+ 16 + 640 * sizeof (short) / sizeof (int) + 192,
+ 16 + 640 * sizeof (short) / sizeof (int) + 208,
+ 16 + 640 * sizeof (short) / sizeof (int) + 224,
+ 16 + 640 * sizeof (short) / sizeof (int) + 240,
+ 16 + 640 * sizeof (short) / sizeof (int) + 256,
+ 16 + 640 * sizeof (short) / sizeof (int) + 272,
+ 16 + 640 * sizeof (short) / sizeof (int) + 288,
+ -1,
+ 16 + 640 * sizeof (short) / sizeof (int) + 304,
+ 16 + 640 * sizeof (short) / sizeof (int) + 320,
+ 16 + 640 * sizeof (short) / sizeof (int) + 336,
+ 16 + 640 * sizeof (short) / sizeof (int) + 352,
+ 16 + 640 * sizeof (short) / sizeof (int) + 368,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 640 * sizeof (short) / sizeof (int) + 384,
+ -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,
+ 16 + 640 * sizeof (short) / sizeof (int) + 400,
+ -1,
+ -1,
+ 16 + 640 * sizeof (short) / sizeof (int) + 416,
+ 16 + 640 * sizeof (short) / sizeof (int) + 432,
+ 16 + 640 * sizeof (short) / sizeof (int) + 448,
+ 16 + 640 * sizeof (short) / sizeof (int) + 464,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 640 * sizeof (short) / sizeof (int) + 480,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 640 * sizeof (short) / sizeof (int) + 496,
+ 16 + 640 * sizeof (short) / sizeof (int) + 512,
+ 16 + 640 * sizeof (short) / sizeof (int) + 528,
+ 16 + 640 * sizeof (short) / sizeof (int) + 544,
+ 16 + 640 * sizeof (short) / sizeof (int) + 560,
+ 16 + 640 * sizeof (short) / sizeof (int) + 576,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 608,
+ 16 + 640 * sizeof (short) / sizeof (int) + 624,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ -1,
+ 16 + 640 * sizeof (short) / sizeof (int) + 640,
+ 16 + 640 * sizeof (short) / sizeof (int) + 656,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 672,
+ 16 + 640 * sizeof (short) / sizeof (int) + 688,
+ 16 + 640 * sizeof (short) / sizeof (int) + 704,
+ 16 + 640 * sizeof (short) / sizeof (int) + 720,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 736,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 752,
+ -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,
+ 16 + 640 * sizeof (short) / sizeof (int) + 768,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ -1,
+ 16 + 640 * sizeof (short) / sizeof (int) + 784,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 752,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 752,
+ 16 + 640 * sizeof (short) / sizeof (int) + 800,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 592,
+ 16 + 640 * sizeof (short) / sizeof (int) + 752
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x83000000,
+ 0x0000280F, 0x00000004, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x0001FFF0, 0x01800000, 0x00000001,
+ 0x0001F900, 0x00000000, 0x0000FF00, 0xFFE0F800,
+ 0x30000030, 0x00000001, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00004000, 0x00000000, 0x00001800, 0x00000000,
+ 0x00000000, 0xFFFC0000, 0x00000000, 0xF8000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000001, 0x0C000000, 0x00E0C000, 0x07F80000,
+ 0x00066011, 0x0C3A0200, 0x4F7F8660, 0xF8000030,
+ 0x00067811, 0x2C920200, 0xA1FDC678, 0xFFC0003F,
+ 0x00044011, 0x0C120200, 0xFFFEC440, 0xFFFD0030,
+ 0x00066011, 0x0C120200, 0x4F3FC660, 0xFFFC0030,
+ 0x29C23813, 0x3C0038E7, 0xFF7EC238, 0xF800003F,
+ 0x00022011, 0x1C100200, 0xFC9FC220, 0x00FF0030,
+ 0x00022013, 0x0C100200, 0xBF9FC220, 0xFFF90030,
+ 0x00022013, 0x1C000200, 0xFF7FC220, 0x01C00030,
+ 0x03800013, 0xD0040000, 0x00A07B80, 0xFFE3FFFF,
+ 0x00000001, 0x78000000, 0xF0000000, 0xFFFFFFFF,
+ 0x010FDA69, 0xC4001351, 0xCC00C0A0, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000100, 0x0001E000,
+ 0x0100F000, 0x20000000, 0xFFE02000, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3C000000, 0x00000000, 0x0000FFC0, 0xE0000000,
+ 0x00000000, 0x00000000, 0x7C000000, 0x00000000,
+ 0x00000000, 0x000000F8, 0x00000000, 0xFC000000,
+ 0x00000000, 0x00000000, 0xC280C200, 0x00000000,
+ 0x0000C200, 0x80C20000, 0x008000C2, 0x00000000,
+ 0x00C20000, 0x00000000, 0x78000000, 0xE0000000,
+ 0xFC000000, 0x00000000, 0x00000000, 0xFFE00000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFF800000,
+ 0xE0000000, 0x00000000, 0x00000000, 0xFFFE0000,
+ 0xFFE02000, 0xFF800000, 0xFFF00000, 0xFFF22000,
+ 0x00000000, 0x00000000, 0xC0000000, 0xFC00FC00,
+ 0xFC008000, 0x00000000, 0x00000000, 0xFF000000,
+ 0x00000000, 0xFFFFF800, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xE0000000, 0xF000F000, 0x0000000E, 0xFFE0C000,
+ 0x00000000, 0x0000FC00, 0x3C00FC00, 0x00000000,
+ 0x30000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x0000F000, 0xE0000000,
+ 0x00000000, 0xFC003800, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x07000000, 0x00001C00, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x3FFFFF80,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xC0C00000, 0x00000000, 0x5500C0C0, 0xC0000000,
+ 0x00000000, 0x00200000, 0x10300020, 0x80230000,
+ 0x00000000, 0x00000000, 0x00000000, 0x000C03E0,
+ 0xFFE08000, 0xFFC00000, 0x0000FFFF, 0xFFFE0000,
+ 0x00000000, 0x00000000, 0x00070000, 0x00000000,
+ 0x0000FE00, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFFFF00,
+ 0x00000000, 0xFFFFFF80, 0xFFFFF800, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xC0000000, 0xE0000000, 0xFFFFFFF0, 0xFFFFFFFF,
+ 0x00000C21, 0x00000100, 0x80B85000, 0x00000001,
+ 0x00E00000, 0x80010000, 0x0000E800, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFE0E000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00008000, 0x80000000, 0xC0010000,
+ 0x00000000, 0x00000000, 0x00000000, 0x01FFF800,
+ 0x00000000, 0x0000FFC0, 0x00000000, 0xFFFF7FC0,
+ 0xFF800000, 0x80808080, 0x80808080, 0x00000000,
+ 0x00000000, 0xFFFE0000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x04000000, 0x00000000, 0x00000000, 0xFFF00000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFC00000, 0xF000FFFF,
+ 0x00000000, 0x00000000, 0x00000001, 0x00000000,
+ 0x01800000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000001F, 0x0001C000, 0x00000000, 0x00000000,
+ 0x00008000, 0xFF000000, 0x00000000, 0x0000FFF0,
+ 0x80000000, 0x00000000, 0x0000FFF0, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x80000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFC00000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFFFFFFF0, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000E000, 0x00000000, 0xFFFFFF80, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFFF000, 0x00000000, 0x0FF00003,
+ 0xFF000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFE000, 0xFFFFFFFF, 0xFFFFFFFF, 0x07FFFFFF,
+ 0x00000000, 0xFFFFF000, 0x00000000, 0xFF000000,
+ 0x00000000, 0x00000000, 0xFC003FE0, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x7FF00000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0xFF800000, 0x0C00C000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFFFFF0, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x0000C000, 0x00000000, 0x0000F800,
+ 0x00000000, 0x00000000, 0xFC000000, 0xFFFFFFFF,
+ 0x1F07FF80, 0xA0800000, 0x00000024, 0x00000000,
+ 0x00000000, 0xFFFC0000, 0x0007FFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000FFFF, 0x00000000,
+ 0x00030000, 0x00000000, 0x0000FF00, 0xC0000000,
+ 0xFC000000, 0x0000FF80, 0x00080000, 0x0020F080,
+ 0x00000000, 0x00000000, 0x00000000, 0x60000000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x80000000, 0xE3030303, 0x01FF8080,
+ 0x00001000, 0x48000080, 0xC000C000, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0xF8000000,
+ 0x00000078, 0x00700000, 0x00000000, 0x00000000,
+ 0xF000F800, 0xFFFFFFFF, 0x0000FFFF, 0xC0000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xE0000000, 0x00000000, 0xFFFE0000, 0xFFFFFFFF,
+ 0x80000000, 0x0000FFF0, 0xFFFFF800, 0xFFFFFFFF,
+ 0x40000000, 0x00000000, 0xFFC000F0, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xC0000000, 0xFFFFFC00, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000002C0, 0x6E400000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x7C000000, 0x7C000000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x01100F90, 0x78F00000, 0xFE00FF00, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFF8000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFF0FFF8,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFC00000,
+ 0x00000000, 0x00000180, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xC0000000, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0xFFFFFFC0, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0xFF800000, 0xFFFC0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00200000, 0x00000000,
+ 0x20000000, 0x1400219B, 0x00000010, 0x00000000,
+ 0x20201840, 0x84000000, 0x000203A0, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x000000C0, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00003000, 0x00000000,
+ 0x00000000, 0x0000F000, 0x00000000, 0x00000000,
+ 0xFFF00000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0xFF800000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xC0000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFD, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xFFFF0000
+ }
+};
diff --git a/lib/unictype/pr_unified_ideograph.c b/lib/unictype/pr_unified_ideograph.c
new file mode 100644
index 00000000..99096a82
--- /dev/null
+++ b/lib/unictype/pr_unified_ideograph.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_unified_ideograph table. */
+#include "pr_unified_ideograph.h"
+
+bool
+uc_is_property_unified_ideograph (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_unified_ideograph, uc);
+}
+
+const uc_property_t UC_PROPERTY_UNIFIED_IDEOGRAPH =
+ { &uc_is_property_unified_ideograph };
diff --git a/lib/unictype/pr_unified_ideograph.h b/lib/unictype/pr_unified_ideograph.h
new file mode 100644
index 00000000..353ee4f0
--- /dev/null
+++ b/lib/unictype/pr_unified_ideograph.h
@@ -0,0 +1,304 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[3];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[5 << 4];
+ }
+u_property_unified_ideograph =
+{
+ { 3 },
+ {
+ 4 * sizeof (int) / sizeof (short) + 0,
+ -1,
+ 4 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ -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,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 16,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 32,
+ -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,
+ 4 + 256 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 0,
+ 4 + 256 * sizeof (short) / sizeof (int) + 64,
+ -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
+ },
+ {
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x003FFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F, 0x00000000,
+ 0x801AC000, 0x0000039A, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_uppercase.c b/lib/unictype/pr_uppercase.c
new file mode 100644
index 00000000..38c122a9
--- /dev/null
+++ b/lib/unictype/pr_uppercase.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_uppercase table. */
+#include "pr_uppercase.h"
+
+bool
+uc_is_property_uppercase (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_uppercase, uc);
+}
+
+const uc_property_t UC_PROPERTY_UPPERCASE =
+ { &uc_is_property_uppercase };
diff --git a/lib/unictype/pr_uppercase.h b/lib/unictype/pr_uppercase.h
new file mode 100644
index 00000000..14b2bde3
--- /dev/null
+++ b/lib/unictype/pr_uppercase.h
@@ -0,0 +1,335 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[2];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[13 << 4];
+ }
+u_property_uppercase =
+{
+ { 2 },
+ {
+ 3 * sizeof (int) / sizeof (short) + 0,
+ 3 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ 3 + 256 * sizeof (short) / sizeof (int) + 0,
+ 3 + 256 * sizeof (short) / sizeof (int) + 16,
+ 3 + 256 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 64,
+ 3 + 256 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 96,
+ -1,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 112,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 128,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 144,
+ -1,
+ -1,
+ 3 + 256 * sizeof (short) / sizeof (int) + 160,
+ -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,
+ 3 + 256 * sizeof (short) / sizeof (int) + 176,
+ 3 + 256 * sizeof (short) / sizeof (int) + 192,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x07FFFFFE, 0x00000000,
+ 0x00000000, 0x00000000, 0x7F7FFFFF, 0x00000000,
+ 0x55555555, 0xAA555555, 0x555554AA, 0x2B555555,
+ 0xB1DBCED6, 0x11AED2D5, 0x4AAAA490, 0x55D25555,
+ 0x55555555, 0x6C055555, 0x0000557A, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00450000,
+ 0xFFFED740, 0x00000FFB, 0x551C8000, 0xE6905555,
+ 0xFFFFFFFF, 0x0000FFFF, 0x00000000, 0x55555555,
+ 0x55555401, 0x55555555, 0x55552AAB, 0x55555555,
+ 0x55555555, 0xFFFE0005, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFFFFFFF, 0x0000003F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x55555555, 0x55555555, 0x55555555, 0x55555555,
+ 0x40155555, 0x55555555, 0x55555555, 0x55555555,
+ 0x3F00FF00, 0xFF00FF00, 0xAA003F00, 0x0000FF00,
+ 0x00000000, 0x0F000000, 0x0F000F00, 0x0F001F00,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3E273884, 0xC00F3D50, 0x00000020, 0x0000FFFF,
+ 0x00000008, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xFFC00000, 0x0000FFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x00007FFF, 0x00000000, 0x0024EA9D,
+ 0x55555555, 0x55555555, 0x55555555, 0x00000005,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55555555, 0x00001554,
+ 0x00555555, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x55545554, 0x55555555, 0x6A005555,
+ 0x00000855, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x07FFFFFE, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x000000FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x03FFFFFF, 0xFFF00000, 0x00003FFF, 0xFFFFFF00,
+ 0xD0000003, 0x003FDE64, 0xFFFF0000, 0x000003FF,
+ 0x1FDFE7B0, 0x7B000000, 0x0001FC5F, 0xFFFFF000,
+ 0x0000003F, 0x03FFFFFF, 0xFFF00000, 0x00003FFF,
+ 0xFFFFFF00, 0xF0000003, 0x003FFFFF, 0xFFFF0000,
+ 0x000003FF, 0xFFFFFF00, 0x00000001, 0x07FFFFFC,
+ 0xF0000000, 0x001FFFFF, 0xFFC00000, 0x00007FFF,
+ 0xFFFF0000, 0x000001FF, 0x00000400, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_variation_selector.c b/lib/unictype/pr_variation_selector.c
new file mode 100644
index 00000000..2f1d3888
--- /dev/null
+++ b/lib/unictype/pr_variation_selector.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_variation_selector table. */
+#include "pr_variation_selector.h"
+
+bool
+uc_is_property_variation_selector (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_variation_selector, uc);
+}
+
+const uc_property_t UC_PROPERTY_VARIATION_SELECTOR =
+ { &uc_is_property_variation_selector };
diff --git a/lib/unictype/pr_variation_selector.h b/lib/unictype/pr_variation_selector.h
new file mode 100644
index 00000000..ba644eb6
--- /dev/null
+++ b/lib/unictype/pr_variation_selector.h
@@ -0,0 +1,308 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[15];
+ short level2[2 << 7];
+ /*unsigned*/ int level3[3 << 4];
+ }
+u_property_variation_selector =
+{
+ { 15 },
+ {
+ 16 * sizeof (int) / sizeof (short) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 * sizeof (int) / sizeof (short) + 128
+ },
+ {
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 256 * sizeof (short) / sizeof (int) + 0,
+ -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,
+ 16 + 256 * sizeof (short) / sizeof (int) + 16,
+ 16 + 256 * sizeof (short) / sizeof (int) + 32,
+ -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
+ },
+ {
+ 0x00003800, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000FFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF
+ }
+};
diff --git a/lib/unictype/pr_white_space.c b/lib/unictype/pr_white_space.c
new file mode 100644
index 00000000..1cd9c5f4
--- /dev/null
+++ b/lib/unictype/pr_white_space.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_white_space table. */
+#include "pr_white_space.h"
+
+bool
+uc_is_property_white_space (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_white_space, uc);
+}
+
+const uc_property_t UC_PROPERTY_WHITE_SPACE =
+ { &uc_is_property_white_space };
diff --git a/lib/unictype/pr_white_space.h b/lib/unictype/pr_white_space.h
new file mode 100644
index 00000000..519b35a3
--- /dev/null
+++ b/lib/unictype/pr_white_space.h
@@ -0,0 +1,172 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[1];
+ short level2[1 << 7];
+ /*unsigned*/ int level3[5 << 4];
+ }
+u_property_white_space =
+{
+ { 1 },
+ { 2 * sizeof (int) / sizeof (short) + 0 },
+ {
+ 2 + 128 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 16,
+ 2 + 128 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 48,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 2 + 128 * sizeof (short) / sizeof (int) + 64,
+ -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
+ },
+ {
+ 0x00003E00, 0x00000001, 0x00000000, 0x00000000,
+ 0x00000020, 0x00000001, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00004000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x000007FF, 0x00008300, 0x80000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000001, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_xid_continue.c b/lib/unictype/pr_xid_continue.c
new file mode 100644
index 00000000..d7d92c3c
--- /dev/null
+++ b/lib/unictype/pr_xid_continue.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_xid_continue table. */
+#include "pr_xid_continue.h"
+
+bool
+uc_is_property_xid_continue (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_xid_continue, uc);
+}
+
+const uc_property_t UC_PROPERTY_XID_CONTINUE =
+ { &uc_is_property_xid_continue };
diff --git a/lib/unictype/pr_xid_continue.h b/lib/unictype/pr_xid_continue.h
new file mode 100644
index 00000000..79913a78
--- /dev/null
+++ b/lib/unictype/pr_xid_continue.h
@@ -0,0 +1,732 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[15];
+ short level2[4 << 7];
+ /*unsigned*/ int level3[45 << 4];
+ }
+u_property_xid_continue =
+{
+ { 15 },
+ {
+ 16 * sizeof (int) / sizeof (short) + 0,
+ 16 * sizeof (int) / sizeof (short) + 128,
+ 16 * sizeof (int) / sizeof (short) + 256,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 * sizeof (int) / sizeof (short) + 384
+ },
+ {
+ 16 + 512 * sizeof (short) / sizeof (int) + 0,
+ 16 + 512 * sizeof (short) / sizeof (int) + 16,
+ 16 + 512 * sizeof (short) / sizeof (int) + 32,
+ 16 + 512 * sizeof (short) / sizeof (int) + 48,
+ 16 + 512 * sizeof (short) / sizeof (int) + 64,
+ 16 + 512 * sizeof (short) / sizeof (int) + 80,
+ 16 + 512 * sizeof (short) / sizeof (int) + 96,
+ 16 + 512 * sizeof (short) / sizeof (int) + 112,
+ 16 + 512 * sizeof (short) / sizeof (int) + 128,
+ 16 + 512 * sizeof (short) / sizeof (int) + 144,
+ 16 + 512 * sizeof (short) / sizeof (int) + 160,
+ 16 + 512 * sizeof (short) / sizeof (int) + 176,
+ 16 + 512 * sizeof (short) / sizeof (int) + 192,
+ 16 + 512 * sizeof (short) / sizeof (int) + 208,
+ 16 + 512 * sizeof (short) / sizeof (int) + 224,
+ 16 + 512 * sizeof (short) / sizeof (int) + 240,
+ 16 + 512 * sizeof (short) / sizeof (int) + 256,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 512 * sizeof (short) / sizeof (int) + 272,
+ -1,
+ 16 + 512 * sizeof (short) / sizeof (int) + 288,
+ -1,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 320,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 336,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 352,
+ 16 + 512 * sizeof (short) / sizeof (int) + 368,
+ 16 + 512 * sizeof (short) / sizeof (int) + 384,
+ 16 + 512 * sizeof (short) / sizeof (int) + 400,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 416,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 512 * sizeof (short) / sizeof (int) + 432,
+ 16 + 512 * sizeof (short) / sizeof (int) + 448,
+ 16 + 512 * sizeof (short) / sizeof (int) + 464,
+ 16 + 512 * sizeof (short) / sizeof (int) + 480,
+ 16 + 512 * sizeof (short) / sizeof (int) + 496,
+ 16 + 512 * sizeof (short) / sizeof (int) + 512,
+ 16 + 512 * sizeof (short) / sizeof (int) + 528,
+ -1,
+ 16 + 512 * sizeof (short) / sizeof (int) + 544,
+ 16 + 512 * sizeof (short) / sizeof (int) + 560,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 576,
+ 16 + 512 * sizeof (short) / sizeof (int) + 592,
+ -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,
+ 16 + 512 * sizeof (short) / sizeof (int) + 608,
+ 16 + 512 * sizeof (short) / sizeof (int) + 624,
+ 16 + 512 * sizeof (short) / sizeof (int) + 640,
+ 16 + 512 * sizeof (short) / sizeof (int) + 656,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 672,
+ -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,
+ 16 + 512 * sizeof (short) / sizeof (int) + 304,
+ 16 + 512 * sizeof (short) / sizeof (int) + 688,
+ -1,
+ -1,
+ 16 + 512 * sizeof (short) / sizeof (int) + 704,
+ -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
+ },
+ {
+ 0x00000000, 0x03FF0000, 0x87FFFFFE, 0x07FFFFFE,
+ 0x00000000, 0x04A00400, 0xFF7FFFFF, 0xFF7FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0003FFC3, 0x0000501F,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x38DFFFFF,
+ 0xFFFFD7C0, 0xFFFFFFFB, 0xFFFFFFFF, 0xFFBFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFCFB, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFE000F, 0x027FFFFF, 0xFFFFFFFE,
+ 0xFFFE00FF, 0xBFFFFFFF, 0xFFFF00B6, 0x000707FF,
+ 0x07FF0000, 0xFFFFFFFE, 0x7FFFFFFF, 0xFFFFC3FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x9FEFFFFF, 0x9FFFFDFF,
+ 0xFFFF0000, 0xFFFFFFFF, 0xFFFFE7FF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0003FFFF, 0xFFFFFFFF, 0x043FFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFE, 0xF3FFFFFF, 0xFF1F3FFF, 0xF806FFCF,
+ 0xFFF99FEE, 0xF3C5FDFF, 0xB080799F, 0x0003FFCF,
+ 0xFFF987EE, 0xD36DFDFF, 0x5E023987, 0x003FFFC0,
+ 0xFFFBBFEE, 0xF3EDFDFF, 0x00013BBF, 0x0000FFCF,
+ 0xFFF99FEE, 0xF3EDFDFF, 0xB0C0399F, 0x0002FFCF,
+ 0xD63DC7EC, 0xC3FFC718, 0x00813DC7, 0x0000FFC0,
+ 0xFFFDDFEE, 0xE3EFFDFF, 0x03603DDF, 0x0000FFCF,
+ 0xFFFDDFEC, 0xF3EFFDFF, 0x40603DDF, 0x0000FFCF,
+ 0xFFFDDFEC, 0xE3FFFDFF, 0x00803DDF, 0xFC00FFCF,
+ 0xFC7FFFEC, 0x2FFBFFFF, 0xFF5F847F, 0x000C0000,
+ 0xFFFFFFFE, 0x07FFFFFF, 0x03FF7FFF, 0x00000000,
+ 0xFEF02596, 0x3BFFECAE, 0x33FF3F5F, 0x00000000,
+ 0x03000001, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE1FFF,
+ 0xFEFF0FDF, 0x1FFFFFFF, 0x00000040, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF03FF, 0xFFFFFFFF,
+ 0x03FFFFFF, 0xFFFFFFFF, 0xFFFF003F, 0x17FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x83FFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF07, 0xFFFFFFFF, 0x03FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3D7F3DFF, 0xFFFFFFFF,
+ 0xFFFF3DFF, 0x7F3DFFFF, 0xFF7FFF3D, 0xFFFFFFFF,
+ 0xFF3DFFFF, 0xFFFFFFFF, 0x87FFFFFF, 0x0003FE00,
+ 0x0000FFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x001FFFFF,
+ 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x007F9FFF,
+ 0x07FFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0x0001C7FF,
+ 0x001FDFFF, 0x001FFFFF, 0x000FFFFF, 0x000DDFFF,
+ 0xFFFFFFFF, 0xFFCFFFFF, 0x308FFFFF, 0x000003FF,
+ 0x03FF3800, 0xFFFFFFFF, 0xFFFFFFFF, 0x00FFFFFF,
+ 0xFFFFFFFF, 0x000007FF, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0x0FFF0FFF, 0xFFFFFFC0, 0x001F3FFF,
+ 0xFFFFFFFF, 0xFFFF03FF, 0x03FF03FF, 0x00000000,
+ 0x0FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FF0FFF, 0x000FF800,
+ 0xFFFFFFFF, 0x03FFC7FF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x00FFFFFF, 0xFFFFE3FF, 0x3FFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xC000007F,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
+ 0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
+ 0x00000000, 0x80000000, 0x00100001, 0x80020000,
+ 0x001F0000, 0x00000000, 0x1FFF0000, 0x0001FFE2,
+ 0x3F2FFC84, 0xF3FFFD50, 0x000043E0, 0xFFFFFFFF,
+ 0x000001FF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF7FFF, 0x7FFFFFFF, 0x3FFEFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000001F,
+ 0xFFFFFFFF, 0xFFFF003F, 0xFFFFFFFF, 0x0000803F,
+ 0x007FFFFF, 0x7F7F7F7F, 0x7F7F7F7F, 0xFFFFFFFF,
+ 0x000000E0, 0x1F3EFFFE, 0xFFFFFFFE, 0xFFFFFFFF,
+ 0xE67FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0xF7FFFFFF,
+ 0xFFFFFFE0, 0xFFFE3FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00007FFF, 0x00FFFFFF, 0x00000000, 0xFFFF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x003FFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00001FFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFF1FFF, 0x00000FFF, 0xFFFFFFFF, 0xB000FFFC,
+ 0x00FFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF800000, 0xFFFFFFFC, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000019FF, 0x00000000, 0x00000000, 0xF8000000,
+ 0xFFFFFFFF, 0x000000FF, 0xFFFFFFFF, 0x000FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FF001F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF3FFF, 0x000FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x007FFFFF, 0x03FF3FFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFF3FFF, 0xFFFFFFFF, 0xFFFF07FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, 0x00000000,
+ 0xE0F8007F, 0x5F7FFDFF, 0xFFFFFFDB, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0003FFFF, 0xFFF80000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF, 0xFFFFFFF0,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x3FFFFFFF, 0xFFFF0000, 0xFFFFFFFF,
+ 0xFFFCFFFF, 0xFFFFFFFF, 0x000000FF, 0x03FF0000,
+ 0x0000FFFF, 0x0018007F, 0x0000E000, 0xAA8A0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x1FFFFFFF,
+ 0x03FF0000, 0x87FFFFFE, 0x07FFFFFE, 0xFFFFFFC0,
+ 0xFFFFFFFF, 0x7FFFFFFF, 0x1CFCFCFC, 0x00000000,
+ 0xFFFFEFFF, 0xB7FFFF7F, 0x3FFF3FFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x07FFFFFF,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0x001FFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x20000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0xFFFFFFFF, 0x0001FFFF, 0x00000000,
+ 0x7FFFFFFF, 0xFFFF0000, 0x000007FF, 0x00000000,
+ 0x3FFFFFFF, 0xFFFFFFFF, 0x003EFF0F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x000003FF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFD3F, 0x91BFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x003FFFFF, 0x03FFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFEEFF06F, 0x870FFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00007FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000007,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xF807E3E0,
+ 0x00000FE7, 0x00003C00, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0000001C, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFDFFFFF, 0xFFFFFFFF,
+ 0xDFFFFFFF, 0xEBFFDE64, 0xFFFFFFEF, 0xFFFFFFFF,
+ 0xDFDFE7BF, 0x7BFFFFFF, 0xFFFDFC5F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF3F, 0xF7FFFFFD, 0xF7FFFFFF,
+ 0xFFDFFFFF, 0xFFDFFFFF, 0xFFFF7FFF, 0xFFFF7FFF,
+ 0xFFFFFDFF, 0xFFFFFDFF, 0xFFFFCFF7, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF
+ }
+};
diff --git a/lib/unictype/pr_xid_start.c b/lib/unictype/pr_xid_start.c
new file mode 100644
index 00000000..13aab1b5
--- /dev/null
+++ b/lib/unictype/pr_xid_start.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_xid_start table. */
+#include "pr_xid_start.h"
+
+bool
+uc_is_property_xid_start (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_xid_start, uc);
+}
+
+const uc_property_t UC_PROPERTY_XID_START =
+ { &uc_is_property_xid_start };
diff --git a/lib/unictype/pr_xid_start.h b/lib/unictype/pr_xid_start.h
new file mode 100644
index 00000000..97fc7107
--- /dev/null
+++ b/lib/unictype/pr_xid_start.h
@@ -0,0 +1,580 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[3];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[42 << 4];
+ }
+u_property_xid_start =
+{
+ { 3 },
+ {
+ 4 * sizeof (int) / sizeof (short) + 0,
+ 4 * sizeof (int) / sizeof (short) + 128,
+ 4 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ 4 + 384 * sizeof (short) / sizeof (int) + 0,
+ 4 + 384 * sizeof (short) / sizeof (int) + 16,
+ 4 + 384 * sizeof (short) / sizeof (int) + 32,
+ 4 + 384 * sizeof (short) / sizeof (int) + 48,
+ 4 + 384 * sizeof (short) / sizeof (int) + 64,
+ 4 + 384 * sizeof (short) / sizeof (int) + 80,
+ 4 + 384 * sizeof (short) / sizeof (int) + 96,
+ 4 + 384 * sizeof (short) / sizeof (int) + 112,
+ 4 + 384 * sizeof (short) / sizeof (int) + 128,
+ 4 + 384 * sizeof (short) / sizeof (int) + 144,
+ 4 + 384 * sizeof (short) / sizeof (int) + 160,
+ 4 + 384 * sizeof (short) / sizeof (int) + 176,
+ 4 + 384 * sizeof (short) / sizeof (int) + 192,
+ 4 + 384 * sizeof (short) / sizeof (int) + 208,
+ 4 + 384 * sizeof (short) / sizeof (int) + 224,
+ 4 + 384 * sizeof (short) / sizeof (int) + 240,
+ 4 + 384 * sizeof (short) / sizeof (int) + 256,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 272,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 288,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 320,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 336,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 352,
+ 4 + 384 * sizeof (short) / sizeof (int) + 368,
+ 4 + 384 * sizeof (short) / sizeof (int) + 384,
+ 4 + 384 * sizeof (short) / sizeof (int) + 400,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 416,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 432,
+ 4 + 384 * sizeof (short) / sizeof (int) + 448,
+ 4 + 384 * sizeof (short) / sizeof (int) + 464,
+ 4 + 384 * sizeof (short) / sizeof (int) + 480,
+ 4 + 384 * sizeof (short) / sizeof (int) + 496,
+ 4 + 384 * sizeof (short) / sizeof (int) + 512,
+ 4 + 384 * sizeof (short) / sizeof (int) + 528,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 544,
+ 4 + 384 * sizeof (short) / sizeof (int) + 560,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 576,
+ 4 + 384 * sizeof (short) / sizeof (int) + 592,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 608,
+ 4 + 384 * sizeof (short) / sizeof (int) + 624,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 640,
+ -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,
+ 4 + 384 * sizeof (short) / sizeof (int) + 304,
+ 4 + 384 * sizeof (short) / sizeof (int) + 656,
+ -1,
+ -1
+ },
+ {
+ 0x00000000, 0x00000000, 0x07FFFFFE, 0x07FFFFFE,
+ 0x00000000, 0x04200400, 0xFF7FFFFF, 0xFF7FFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0003FFC3, 0x0000501F,
+ 0x00000000, 0x00000000, 0x00000000, 0x38DF0000,
+ 0xFFFFD740, 0xFFFFFFFB, 0xFFFFFFFF, 0xFFBFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFC03, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFE000F, 0x027FFFFF, 0xFFFFFFFE,
+ 0x000000FF, 0x00000000, 0xFFFF0000, 0x000707FF,
+ 0x00000000, 0xFFFFFFFE, 0x000007FF, 0xFFFEC000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x002FFFFF, 0x9C00C060,
+ 0xFFFD0000, 0x0000FFFF, 0xFFFFE000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0002003F, 0xFFFFFC00, 0x043007FF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFF0, 0x23FFFFFF, 0xFF010000, 0xF8060003,
+ 0xFFF99FE0, 0x23C5FDFF, 0xB0004000, 0x00030003,
+ 0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000,
+ 0xFFFBBFE0, 0x23EDFDFF, 0x00010000, 0x00000003,
+ 0xFFF99FE0, 0x23EDFDFF, 0xB0000000, 0x00020003,
+ 0xD63DC7E8, 0x03FFC718, 0x00010000, 0x00000000,
+ 0xFFFDDFE0, 0x23EFFDFF, 0x03000000, 0x00000003,
+ 0xFFFDDFE0, 0x23EFFDFF, 0x40000000, 0x00000003,
+ 0xFFFDDFE0, 0x23FFFDFF, 0x00000000, 0xFC000003,
+ 0xFC7FFFE0, 0x2FFBFFFF, 0x0000007F, 0x00000000,
+ 0xFFFFFFFE, 0x0005FFFF, 0x0000007F, 0x00000000,
+ 0xFEF02596, 0x2005ECAE, 0x3000005F, 0x00000000,
+ 0x00000001, 0x00000000, 0xFFFFFEFF, 0x00001FFF,
+ 0x00000F00, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x800007FF, 0x3C3F0000, 0xFFE1C062,
+ 0x00004003, 0xFFFFFFFF, 0xFFFF003F, 0x17FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x83FFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF07, 0xFFFFFFFF, 0x03FFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3D7F3DFF, 0xFFFFFFFF,
+ 0xFFFF3DFF, 0x7F3DFFFF, 0xFF7FFF3D, 0xFFFFFFFF,
+ 0xFF3DFFFF, 0xFFFFFFFF, 0x07FFFFFF, 0x00000000,
+ 0x0000FFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x001FFFFF,
+ 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x007F9FFF,
+ 0x07FFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0x0001C7FF,
+ 0x0003DFFF, 0x0003FFFF, 0x0003FFFF, 0x0001DFFF,
+ 0xFFFFFFFF, 0x000FFFFF, 0x10800000, 0x00000000,
+ 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0x00FFFFFF,
+ 0xFFFFFFFF, 0x000005FF, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0x00000000, 0xFFFF0000, 0x001F3FFF,
+ 0xFFFFFFFF, 0x000003FF, 0x000000FE, 0x00000000,
+ 0x007FFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFE0, 0x000FFFFF, 0x00000FE0, 0x00000000,
+ 0xFFFFFFF8, 0x0000C001, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x0000000F, 0xFC00E000, 0x3FFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
+ 0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x80020000,
+ 0x001F0000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3F2FFC84, 0xF3FFFD50, 0x000043E0, 0xFFFFFFFF,
+ 0x000001FF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFF7FFF, 0x7FFFFFFF, 0x3FFEFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000001F,
+ 0xFFFFFFFF, 0xFFFF003F, 0xFFFFFFFF, 0x0000803F,
+ 0x007FFFFF, 0x7F7F7F7F, 0x7F7F7F7F, 0x00000000,
+ 0x000000E0, 0x1F3E03FE, 0xFFFFFFFE, 0xFFFFFFFF,
+ 0xE07FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0xF7FFFFFF,
+ 0xFFFFFFE0, 0xFFFE3FFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00007FFF, 0x00FFFFFF, 0x00000000, 0xFFFF0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x003FFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00001FFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFF1FFF, 0x00000C00, 0xFFFFFFFF, 0x80007FFC,
+ 0x00FFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0xFF800000, 0xFFFFFFFC, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x000019FF, 0x00000000, 0x00000000, 0xF8000000,
+ 0xFFFFF7BB, 0x00000007, 0xFFFFFFFF, 0x000FFFFF,
+ 0xFFFFFFFC, 0x000FFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFC00, 0xFFFF003F, 0x0000007F, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0x000001FF, 0x00000FF7, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFF3FFF, 0xFFFFFFFF, 0xFFFF07FF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, 0x00000000,
+ 0xA0F8007F, 0x5F7FFDFF, 0xFFFFFFDB, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x0003FFFF, 0xFFF80000, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x3FFFFFFF, 0xFFFFFFF0,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0x3FFFFFFF, 0xFFFF0000, 0xFFFFFFFF,
+ 0xFFFCFFFF, 0xFFFFFFFF, 0x000000FF, 0x03FF0000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA8A0000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x1FFFFFFF,
+ 0x00000000, 0x07FFFFFE, 0x07FFFFFE, 0xFFFFFFC0,
+ 0x3FFFFFFF, 0x7FFFFFFF, 0x1CFCFCFC, 0x00000000,
+ 0xFFFFEFFF, 0xB7FFFF7F, 0x3FFF3FFF, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x07FFFFFF,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0x001FFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x1FFFFFFF, 0xFFFFFFFF, 0x0001FFFF, 0x00000000,
+ 0x7FFFFFFF, 0xFFFF0000, 0x000007FF, 0x00000000,
+ 0x3FFFFFFF, 0xFFFFFFFF, 0x003EFF0F, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x3FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFD3F, 0x91BFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x003FFFFF, 0x03FFFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFEEF0001, 0x000FFFFF, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00007FFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000007,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFDFFFFF, 0xFFFFFFFF,
+ 0xDFFFFFFF, 0xEBFFDE64, 0xFFFFFFEF, 0xFFFFFFFF,
+ 0xDFDFE7BF, 0x7BFFFFFF, 0xFFFDFC5F, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFF3F, 0xF7FFFFFD, 0xF7FFFFFF,
+ 0xFFDFFFFF, 0xFFDFFFFF, 0xFFFF7FFF, 0xFFFF7FFF,
+ 0xFFFFFDFF, 0xFFFFFDFF, 0x00000FF7, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x007FFFFF, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3FFFFFFF, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/pr_zero_width.c b/lib/unictype/pr_zero_width.c
new file mode 100644
index 00000000..7decbdae
--- /dev/null
+++ b/lib/unictype/pr_zero_width.c
@@ -0,0 +1,35 @@
+/* Properties of Unicode characters.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "bitmap.h"
+
+/* Define u_property_zero_width table. */
+#include "pr_zero_width.h"
+
+bool
+uc_is_property_zero_width (ucs4_t uc)
+{
+ return bitmap_lookup (&u_property_zero_width, uc);
+}
+
+const uc_property_t UC_PROPERTY_ZERO_WIDTH =
+ { &uc_is_property_zero_width };
diff --git a/lib/unictype/pr_zero_width.h b/lib/unictype/pr_zero_width.h
new file mode 100644
index 00000000..96047b53
--- /dev/null
+++ b/lib/unictype/pr_zero_width.h
@@ -0,0 +1,452 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define header_0 16
+#define header_2 9
+#define header_3 127
+#define header_4 15
+static const
+struct
+ {
+ int header[1];
+ int level1[15];
+ short level2[3 << 7];
+ /*unsigned*/ int level3[7 << 4];
+ }
+u_property_zero_width =
+{
+ { 15 },
+ {
+ 16 * sizeof (int) / sizeof (short) + 0,
+ 16 * sizeof (int) / sizeof (short) + 128,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 * sizeof (int) / sizeof (short) + 256
+ },
+ {
+ 16 + 384 * sizeof (short) / sizeof (int) + 0,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 16,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 32,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 48,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 64,
+ -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,
+ 16 + 384 * sizeof (short) / sizeof (int) + 80,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 16 + 384 * sizeof (short) / sizeof (int) + 96,
+ -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
+ },
+ {
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00002000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x0000000F, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x20000000, 0x00000000,
+ 0x00008000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00300000, 0x00000000, 0x00000000,
+ 0x0000F800, 0x00007C00, 0x00000000, 0x0000FC1F,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x80000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0E000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x07F80000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000002, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
+ }
+};
diff --git a/lib/unictype/scripts.c b/lib/unictype/scripts.c
new file mode 100644
index 00000000..092009db
--- /dev/null
+++ b/lib/unictype/scripts.c
@@ -0,0 +1,75 @@
+/* Scripts of Unicode characters.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include <string.h>
+
+#include "scripts.h"
+#include "unictype/scripts_byname.h"
+
+const uc_script_t *
+uc_script (ucs4_t uc)
+{
+ unsigned int index1 = uc >> script_header_0;
+ if (index1 < script_header_1)
+ {
+ int lookup1 = u_script.level1[index1];
+ if (lookup1 >= 0)
+ {
+ unsigned int index2 = (uc >> script_header_2) & script_header_3;
+ int lookup2 = u_script.level2[lookup1 + index2];
+ if (lookup2 >= 0)
+ {
+ unsigned int index3 = (uc & script_header_4);
+ unsigned char lookup3 = u_script.level3[lookup2 + index3];
+
+ if (lookup3 != 0xff)
+ return &scripts[lookup3];
+ }
+ }
+ }
+ return NULL;
+}
+
+const uc_script_t *
+uc_script_byname (const char *script_name)
+{
+ const struct named_script *found;
+
+ found = uc_script_lookup (script_name, strlen (script_name));
+ if (found != NULL)
+ return &scripts[found->index];
+ else
+ return NULL;
+}
+
+bool
+uc_is_script (ucs4_t uc, const uc_script_t *script)
+{
+ return uc_script (uc) == script;
+}
+
+void
+uc_all_scripts (const uc_script_t **scriptsp, size_t *countp)
+{
+ *scriptsp = scripts;
+ *countp = sizeof (scripts) / sizeof (scripts[0]);
+}
diff --git a/lib/unictype/scripts.h b/lib/unictype/scripts.h
new file mode 100644
index 00000000..1d465aee
--- /dev/null
+++ b/lib/unictype/scripts.h
@@ -0,0 +1,3704 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Unicode scripts. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+static const uc_interval_t script_common_intervals[] =
+{
+ { 0x0000, 1, 0 }, { 0x0040, 0, 1 },
+ { 0x005B, 1, 0 }, { 0x0060, 0, 1 },
+ { 0x007B, 1, 0 }, { 0x00A9, 0, 1 },
+ { 0x00AB, 1, 0 }, { 0x00B9, 0, 1 },
+ { 0x00BB, 1, 0 }, { 0x00BF, 0, 1 },
+ { 0x00D7, 1, 1 },
+ { 0x00F7, 1, 1 },
+ { 0x02B9, 1, 0 }, { 0x02DF, 0, 1 },
+ { 0x02E5, 1, 0 }, { 0x02FF, 0, 1 },
+ { 0x0374, 1, 1 },
+ { 0x037E, 1, 1 },
+ { 0x0385, 1, 1 },
+ { 0x0387, 1, 1 },
+ { 0x0589, 1, 1 },
+ { 0x0600, 1, 0 }, { 0x0603, 0, 1 },
+ { 0x060C, 1, 1 },
+ { 0x061B, 1, 1 },
+ { 0x061F, 1, 1 },
+ { 0x0640, 1, 1 },
+ { 0x0660, 1, 0 }, { 0x0669, 0, 1 },
+ { 0x06DD, 1, 1 },
+ { 0x0964, 1, 0 }, { 0x0965, 0, 1 },
+ { 0x0970, 1, 1 },
+ { 0x0CF1, 1, 0 }, { 0x0CF2, 0, 1 },
+ { 0x0E3F, 1, 1 },
+ { 0x10FB, 1, 1 },
+ { 0x16EB, 1, 0 }, { 0x16ED, 0, 1 },
+ { 0x1735, 1, 0 }, { 0x1736, 0, 1 },
+ { 0x1802, 1, 0 }, { 0x1803, 0, 1 },
+ { 0x1805, 1, 1 },
+ { 0x2000, 1, 0 }, { 0x200B, 0, 1 },
+ { 0x200E, 1, 0 }, { 0x2064, 0, 1 },
+ { 0x206A, 1, 0 }, { 0x2070, 0, 1 },
+ { 0x2074, 1, 0 }, { 0x207E, 0, 1 },
+ { 0x2080, 1, 0 }, { 0x208E, 0, 1 },
+ { 0x20A0, 1, 0 }, { 0x20B5, 0, 1 },
+ { 0x2100, 1, 0 }, { 0x2125, 0, 1 },
+ { 0x2127, 1, 0 }, { 0x2129, 0, 1 },
+ { 0x212C, 1, 0 }, { 0x2131, 0, 1 },
+ { 0x2133, 1, 0 }, { 0x214D, 0, 1 },
+ { 0x214F, 1, 1 },
+ { 0x2153, 1, 0 }, { 0x215F, 0, 1 },
+ { 0x2190, 1, 0 }, { 0x23E7, 0, 1 },
+ { 0x2400, 1, 0 }, { 0x2426, 0, 1 },
+ { 0x2440, 1, 0 }, { 0x244A, 0, 1 },
+ { 0x2460, 1, 0 }, { 0x269D, 0, 1 },
+ { 0x26A0, 1, 0 }, { 0x26BC, 0, 1 },
+ { 0x26C0, 1, 0 }, { 0x26C3, 0, 1 },
+ { 0x2701, 1, 0 }, { 0x2704, 0, 1 },
+ { 0x2706, 1, 0 }, { 0x2709, 0, 1 },
+ { 0x270C, 1, 0 }, { 0x2727, 0, 1 },
+ { 0x2729, 1, 0 }, { 0x274B, 0, 1 },
+ { 0x274D, 1, 1 },
+ { 0x274F, 1, 0 }, { 0x2752, 0, 1 },
+ { 0x2756, 1, 1 },
+ { 0x2758, 1, 0 }, { 0x275E, 0, 1 },
+ { 0x2761, 1, 0 }, { 0x2794, 0, 1 },
+ { 0x2798, 1, 0 }, { 0x27AF, 0, 1 },
+ { 0x27B1, 1, 0 }, { 0x27BE, 0, 1 },
+ { 0x27C0, 1, 0 }, { 0x27CA, 0, 1 },
+ { 0x27CC, 1, 1 },
+ { 0x27D0, 1, 0 }, { 0x27FF, 0, 1 },
+ { 0x2900, 1, 0 }, { 0x2B4C, 0, 1 },
+ { 0x2B50, 1, 0 }, { 0x2B54, 0, 1 },
+ { 0x2E00, 1, 0 }, { 0x2E30, 0, 1 },
+ { 0x2FF0, 1, 0 }, { 0x2FFB, 0, 1 },
+ { 0x3000, 1, 0 }, { 0x3004, 0, 1 },
+ { 0x3006, 1, 1 },
+ { 0x3008, 1, 0 }, { 0x3020, 0, 1 },
+ { 0x3030, 1, 0 }, { 0x3037, 0, 1 },
+ { 0x303C, 1, 0 }, { 0x303F, 0, 1 },
+ { 0x309B, 1, 0 }, { 0x309C, 0, 1 },
+ { 0x30A0, 1, 1 },
+ { 0x30FB, 1, 0 }, { 0x30FC, 0, 1 },
+ { 0x3190, 1, 0 }, { 0x319F, 0, 1 },
+ { 0x31C0, 1, 0 }, { 0x31E3, 0, 1 },
+ { 0x3220, 1, 0 }, { 0x3243, 0, 1 },
+ { 0x3250, 1, 0 }, { 0x325F, 0, 1 },
+ { 0x327F, 1, 0 }, { 0x32CF, 0, 1 },
+ { 0x3358, 1, 0 }, { 0x33FF, 0, 1 },
+ { 0x4DC0, 1, 0 }, { 0x4DFF, 0, 1 },
+ { 0xA700, 1, 0 }, { 0xA721, 0, 1 },
+ { 0xA788, 1, 0 }, { 0xA78A, 0, 1 },
+ { 0xFD3E, 1, 0 }, { 0xFD3F, 0, 1 },
+ { 0xFDFD, 1, 1 },
+ { 0xFE10, 1, 0 }, { 0xFE19, 0, 1 },
+ { 0xFE30, 1, 0 }, { 0xFE52, 0, 1 },
+ { 0xFE54, 1, 0 }, { 0xFE66, 0, 1 },
+ { 0xFE68, 1, 0 }, { 0xFE6B, 0, 1 },
+ { 0xFEFF, 1, 1 },
+ { 0xFF01, 1, 0 }, { 0xFF20, 0, 1 },
+ { 0xFF3B, 1, 0 }, { 0xFF40, 0, 1 },
+ { 0xFF5B, 1, 0 }, { 0xFF65, 0, 1 },
+ { 0xFF70, 1, 1 },
+ { 0xFF9E, 1, 0 }, { 0xFF9F, 0, 1 },
+ { 0xFFE0, 1, 0 }, { 0xFFE6, 0, 1 },
+ { 0xFFE8, 1, 0 }, { 0xFFEE, 0, 1 },
+ { 0xFFF9, 1, 0 }, { 0xFFFD, 0, 1 },
+ { 0x10100, 1, 0 }, { 0x10102, 0, 1 },
+ { 0x10107, 1, 0 }, { 0x10133, 0, 1 },
+ { 0x10137, 1, 0 }, { 0x1013F, 0, 1 },
+ { 0x10190, 1, 0 }, { 0x1019B, 0, 1 },
+ { 0x101D0, 1, 0 }, { 0x101FC, 0, 1 },
+ { 0x1D000, 1, 0 }, { 0x1D0F5, 0, 1 },
+ { 0x1D100, 1, 0 }, { 0x1D126, 0, 1 },
+ { 0x1D129, 1, 0 }, { 0x1D166, 0, 1 },
+ { 0x1D16A, 1, 0 }, { 0x1D17A, 0, 1 },
+ { 0x1D183, 1, 0 }, { 0x1D184, 0, 1 },
+ { 0x1D18C, 1, 0 }, { 0x1D1A9, 0, 1 },
+ { 0x1D1AE, 1, 0 }, { 0x1D1DD, 0, 1 },
+ { 0x1D300, 1, 0 }, { 0x1D356, 0, 1 },
+ { 0x1D360, 1, 0 }, { 0x1D371, 0, 1 },
+ { 0x1D400, 1, 0 }, { 0x1D454, 0, 1 },
+ { 0x1D456, 1, 0 }, { 0x1D49C, 0, 1 },
+ { 0x1D49E, 1, 0 }, { 0x1D49F, 0, 1 },
+ { 0x1D4A2, 1, 1 },
+ { 0x1D4A5, 1, 0 }, { 0x1D4A6, 0, 1 },
+ { 0x1D4A9, 1, 0 }, { 0x1D4AC, 0, 1 },
+ { 0x1D4AE, 1, 0 }, { 0x1D4B9, 0, 1 },
+ { 0x1D4BB, 1, 1 },
+ { 0x1D4BD, 1, 0 }, { 0x1D4C3, 0, 1 },
+ { 0x1D4C5, 1, 0 }, { 0x1D505, 0, 1 },
+ { 0x1D507, 1, 0 }, { 0x1D50A, 0, 1 },
+ { 0x1D50D, 1, 0 }, { 0x1D514, 0, 1 },
+ { 0x1D516, 1, 0 }, { 0x1D51C, 0, 1 },
+ { 0x1D51E, 1, 0 }, { 0x1D539, 0, 1 },
+ { 0x1D53B, 1, 0 }, { 0x1D53E, 0, 1 },
+ { 0x1D540, 1, 0 }, { 0x1D544, 0, 1 },
+ { 0x1D546, 1, 1 },
+ { 0x1D54A, 1, 0 }, { 0x1D550, 0, 1 },
+ { 0x1D552, 1, 0 }, { 0x1D6A5, 0, 1 },
+ { 0x1D6A8, 1, 0 }, { 0x1D7CB, 0, 1 },
+ { 0x1D7CE, 1, 0 }, { 0x1D7FF, 0, 1 },
+ { 0x1F000, 1, 0 }, { 0x1F02B, 0, 1 },
+ { 0x1F030, 1, 0 }, { 0x1F093, 0, 1 },
+ { 0xE0001, 1, 1 },
+ { 0xE0020, 1, 0 }, { 0xE007F, 0, 1 }
+};
+static const uc_interval_t script_latin_intervals[] =
+{
+ { 0x0041, 1, 0 }, { 0x005A, 0, 1 },
+ { 0x0061, 1, 0 }, { 0x007A, 0, 1 },
+ { 0x00AA, 1, 1 },
+ { 0x00BA, 1, 1 },
+ { 0x00C0, 1, 0 }, { 0x00D6, 0, 1 },
+ { 0x00D8, 1, 0 }, { 0x00F6, 0, 1 },
+ { 0x00F8, 1, 0 }, { 0x02B8, 0, 1 },
+ { 0x02E0, 1, 0 }, { 0x02E4, 0, 1 },
+ { 0x1D00, 1, 0 }, { 0x1D25, 0, 1 },
+ { 0x1D2C, 1, 0 }, { 0x1D5C, 0, 1 },
+ { 0x1D62, 1, 0 }, { 0x1D65, 0, 1 },
+ { 0x1D6B, 1, 0 }, { 0x1D77, 0, 1 },
+ { 0x1D79, 1, 0 }, { 0x1DBE, 0, 1 },
+ { 0x1E00, 1, 0 }, { 0x1EFF, 0, 1 },
+ { 0x2071, 1, 1 },
+ { 0x207F, 1, 1 },
+ { 0x2090, 1, 0 }, { 0x2094, 0, 1 },
+ { 0x212A, 1, 0 }, { 0x212B, 0, 1 },
+ { 0x2132, 1, 1 },
+ { 0x214E, 1, 1 },
+ { 0x2160, 1, 0 }, { 0x2188, 0, 1 },
+ { 0x2C60, 1, 0 }, { 0x2C6F, 0, 1 },
+ { 0x2C71, 1, 0 }, { 0x2C7D, 0, 1 },
+ { 0xA722, 1, 0 }, { 0xA787, 0, 1 },
+ { 0xA78B, 1, 0 }, { 0xA78C, 0, 1 },
+ { 0xA7FB, 1, 0 }, { 0xA7FF, 0, 1 },
+ { 0xFB00, 1, 0 }, { 0xFB06, 0, 1 },
+ { 0xFF21, 1, 0 }, { 0xFF3A, 0, 1 },
+ { 0xFF41, 1, 0 }, { 0xFF5A, 0, 1 }
+};
+static const uc_interval_t script_greek_intervals[] =
+{
+ { 0x0370, 1, 0 }, { 0x0373, 0, 1 },
+ { 0x0375, 1, 0 }, { 0x0377, 0, 1 },
+ { 0x037A, 1, 0 }, { 0x037D, 0, 1 },
+ { 0x0384, 1, 1 },
+ { 0x0386, 1, 1 },
+ { 0x0388, 1, 0 }, { 0x038A, 0, 1 },
+ { 0x038C, 1, 1 },
+ { 0x038E, 1, 0 }, { 0x03A1, 0, 1 },
+ { 0x03A3, 1, 0 }, { 0x03E1, 0, 1 },
+ { 0x03F0, 1, 0 }, { 0x03FF, 0, 1 },
+ { 0x1D26, 1, 0 }, { 0x1D2A, 0, 1 },
+ { 0x1D5D, 1, 0 }, { 0x1D61, 0, 1 },
+ { 0x1D66, 1, 0 }, { 0x1D6A, 0, 1 },
+ { 0x1DBF, 1, 1 },
+ { 0x1F00, 1, 0 }, { 0x1F15, 0, 1 },
+ { 0x1F18, 1, 0 }, { 0x1F1D, 0, 1 },
+ { 0x1F20, 1, 0 }, { 0x1F45, 0, 1 },
+ { 0x1F48, 1, 0 }, { 0x1F4D, 0, 1 },
+ { 0x1F50, 1, 0 }, { 0x1F57, 0, 1 },
+ { 0x1F59, 1, 1 },
+ { 0x1F5B, 1, 1 },
+ { 0x1F5D, 1, 1 },
+ { 0x1F5F, 1, 0 }, { 0x1F7D, 0, 1 },
+ { 0x1F80, 1, 0 }, { 0x1FB4, 0, 1 },
+ { 0x1FB6, 1, 0 }, { 0x1FC4, 0, 1 },
+ { 0x1FC6, 1, 0 }, { 0x1FD3, 0, 1 },
+ { 0x1FD6, 1, 0 }, { 0x1FDB, 0, 1 },
+ { 0x1FDD, 1, 0 }, { 0x1FEF, 0, 1 },
+ { 0x1FF2, 1, 0 }, { 0x1FF4, 0, 1 },
+ { 0x1FF6, 1, 0 }, { 0x1FFE, 0, 1 },
+ { 0x2126, 1, 1 },
+ { 0x10140, 1, 0 }, { 0x1018A, 0, 1 },
+ { 0x1D200, 1, 0 }, { 0x1D245, 0, 1 }
+};
+static const uc_interval_t script_cyrillic_intervals[] =
+{
+ { 0x0400, 1, 0 }, { 0x0523, 0, 1 },
+ { 0x1D2B, 1, 1 },
+ { 0x1D78, 1, 1 },
+ { 0x2DE0, 1, 0 }, { 0x2DFF, 0, 1 },
+ { 0xA640, 1, 0 }, { 0xA65F, 0, 1 },
+ { 0xA662, 1, 0 }, { 0xA673, 0, 1 },
+ { 0xA67C, 1, 0 }, { 0xA697, 0, 1 }
+};
+static const uc_interval_t script_armenian_intervals[] =
+{
+ { 0x0531, 1, 0 }, { 0x0556, 0, 1 },
+ { 0x0559, 1, 0 }, { 0x055F, 0, 1 },
+ { 0x0561, 1, 0 }, { 0x0587, 0, 1 },
+ { 0x058A, 1, 1 },
+ { 0xFB13, 1, 0 }, { 0xFB17, 0, 1 }
+};
+static const uc_interval_t script_hebrew_intervals[] =
+{
+ { 0x0591, 1, 0 }, { 0x05C7, 0, 1 },
+ { 0x05D0, 1, 0 }, { 0x05EA, 0, 1 },
+ { 0x05F0, 1, 0 }, { 0x05F4, 0, 1 },
+ { 0xFB1D, 1, 0 }, { 0xFB36, 0, 1 },
+ { 0xFB38, 1, 0 }, { 0xFB3C, 0, 1 },
+ { 0xFB3E, 1, 1 },
+ { 0xFB40, 1, 0 }, { 0xFB41, 0, 1 },
+ { 0xFB43, 1, 0 }, { 0xFB44, 0, 1 },
+ { 0xFB46, 1, 0 }, { 0xFB4F, 0, 1 }
+};
+static const uc_interval_t script_arabic_intervals[] =
+{
+ { 0x0606, 1, 0 }, { 0x060B, 0, 1 },
+ { 0x060D, 1, 0 }, { 0x061A, 0, 1 },
+ { 0x061E, 1, 1 },
+ { 0x0621, 1, 0 }, { 0x063F, 0, 1 },
+ { 0x0641, 1, 0 }, { 0x064A, 0, 1 },
+ { 0x0656, 1, 0 }, { 0x065E, 0, 1 },
+ { 0x066A, 1, 0 }, { 0x066F, 0, 1 },
+ { 0x0671, 1, 0 }, { 0x06DC, 0, 1 },
+ { 0x06DE, 1, 0 }, { 0x06FF, 0, 1 },
+ { 0x0750, 1, 0 }, { 0x077F, 0, 1 },
+ { 0xFB50, 1, 0 }, { 0xFBB1, 0, 1 },
+ { 0xFBD3, 1, 0 }, { 0xFD3D, 0, 1 },
+ { 0xFD50, 1, 0 }, { 0xFD8F, 0, 1 },
+ { 0xFD92, 1, 0 }, { 0xFDC7, 0, 1 },
+ { 0xFDF0, 1, 0 }, { 0xFDFC, 0, 1 },
+ { 0xFE70, 1, 0 }, { 0xFE74, 0, 1 },
+ { 0xFE76, 1, 0 }, { 0xFEFC, 0, 1 }
+};
+static const uc_interval_t script_syriac_intervals[] =
+{
+ { 0x0700, 1, 0 }, { 0x070D, 0, 1 },
+ { 0x070F, 1, 0 }, { 0x074A, 0, 1 },
+ { 0x074D, 1, 0 }, { 0x074F, 0, 1 }
+};
+static const uc_interval_t script_thaana_intervals[] =
+{
+ { 0x0780, 1, 0 }, { 0x07B1, 0, 1 }
+};
+static const uc_interval_t script_devanagari_intervals[] =
+{
+ { 0x0901, 1, 0 }, { 0x0939, 0, 1 },
+ { 0x093C, 1, 0 }, { 0x094D, 0, 1 },
+ { 0x0950, 1, 1 },
+ { 0x0953, 1, 0 }, { 0x0954, 0, 1 },
+ { 0x0958, 1, 0 }, { 0x0963, 0, 1 },
+ { 0x0966, 1, 0 }, { 0x096F, 0, 1 },
+ { 0x0971, 1, 0 }, { 0x0972, 0, 1 },
+ { 0x097B, 1, 0 }, { 0x097F, 0, 1 }
+};
+static const uc_interval_t script_bengali_intervals[] =
+{
+ { 0x0981, 1, 0 }, { 0x0983, 0, 1 },
+ { 0x0985, 1, 0 }, { 0x098C, 0, 1 },
+ { 0x098F, 1, 0 }, { 0x0990, 0, 1 },
+ { 0x0993, 1, 0 }, { 0x09A8, 0, 1 },
+ { 0x09AA, 1, 0 }, { 0x09B0, 0, 1 },
+ { 0x09B2, 1, 1 },
+ { 0x09B6, 1, 0 }, { 0x09B9, 0, 1 },
+ { 0x09BC, 1, 0 }, { 0x09C4, 0, 1 },
+ { 0x09C7, 1, 0 }, { 0x09C8, 0, 1 },
+ { 0x09CB, 1, 0 }, { 0x09CE, 0, 1 },
+ { 0x09D7, 1, 1 },
+ { 0x09DC, 1, 0 }, { 0x09DD, 0, 1 },
+ { 0x09DF, 1, 0 }, { 0x09E3, 0, 1 },
+ { 0x09E6, 1, 0 }, { 0x09FA, 0, 1 }
+};
+static const uc_interval_t script_gurmukhi_intervals[] =
+{
+ { 0x0A01, 1, 0 }, { 0x0A03, 0, 1 },
+ { 0x0A05, 1, 0 }, { 0x0A0A, 0, 1 },
+ { 0x0A0F, 1, 0 }, { 0x0A10, 0, 1 },
+ { 0x0A13, 1, 0 }, { 0x0A28, 0, 1 },
+ { 0x0A2A, 1, 0 }, { 0x0A30, 0, 1 },
+ { 0x0A32, 1, 0 }, { 0x0A33, 0, 1 },
+ { 0x0A35, 1, 0 }, { 0x0A36, 0, 1 },
+ { 0x0A38, 1, 0 }, { 0x0A39, 0, 1 },
+ { 0x0A3C, 1, 1 },
+ { 0x0A3E, 1, 0 }, { 0x0A42, 0, 1 },
+ { 0x0A47, 1, 0 }, { 0x0A48, 0, 1 },
+ { 0x0A4B, 1, 0 }, { 0x0A4D, 0, 1 },
+ { 0x0A51, 1, 1 },
+ { 0x0A59, 1, 0 }, { 0x0A5C, 0, 1 },
+ { 0x0A5E, 1, 1 },
+ { 0x0A66, 1, 0 }, { 0x0A75, 0, 1 }
+};
+static const uc_interval_t script_gujarati_intervals[] =
+{
+ { 0x0A81, 1, 0 }, { 0x0A83, 0, 1 },
+ { 0x0A85, 1, 0 }, { 0x0A8D, 0, 1 },
+ { 0x0A8F, 1, 0 }, { 0x0A91, 0, 1 },
+ { 0x0A93, 1, 0 }, { 0x0AA8, 0, 1 },
+ { 0x0AAA, 1, 0 }, { 0x0AB0, 0, 1 },
+ { 0x0AB2, 1, 0 }, { 0x0AB3, 0, 1 },
+ { 0x0AB5, 1, 0 }, { 0x0AB9, 0, 1 },
+ { 0x0ABC, 1, 0 }, { 0x0AC5, 0, 1 },
+ { 0x0AC7, 1, 0 }, { 0x0AC9, 0, 1 },
+ { 0x0ACB, 1, 0 }, { 0x0ACD, 0, 1 },
+ { 0x0AD0, 1, 1 },
+ { 0x0AE0, 1, 0 }, { 0x0AE3, 0, 1 },
+ { 0x0AE6, 1, 0 }, { 0x0AEF, 0, 1 },
+ { 0x0AF1, 1, 1 }
+};
+static const uc_interval_t script_oriya_intervals[] =
+{
+ { 0x0B01, 1, 0 }, { 0x0B03, 0, 1 },
+ { 0x0B05, 1, 0 }, { 0x0B0C, 0, 1 },
+ { 0x0B0F, 1, 0 }, { 0x0B10, 0, 1 },
+ { 0x0B13, 1, 0 }, { 0x0B28, 0, 1 },
+ { 0x0B2A, 1, 0 }, { 0x0B30, 0, 1 },
+ { 0x0B32, 1, 0 }, { 0x0B33, 0, 1 },
+ { 0x0B35, 1, 0 }, { 0x0B39, 0, 1 },
+ { 0x0B3C, 1, 0 }, { 0x0B44, 0, 1 },
+ { 0x0B47, 1, 0 }, { 0x0B48, 0, 1 },
+ { 0x0B4B, 1, 0 }, { 0x0B4D, 0, 1 },
+ { 0x0B56, 1, 0 }, { 0x0B57, 0, 1 },
+ { 0x0B5C, 1, 0 }, { 0x0B5D, 0, 1 },
+ { 0x0B5F, 1, 0 }, { 0x0B63, 0, 1 },
+ { 0x0B66, 1, 0 }, { 0x0B71, 0, 1 }
+};
+static const uc_interval_t script_tamil_intervals[] =
+{
+ { 0x0B82, 1, 0 }, { 0x0B83, 0, 1 },
+ { 0x0B85, 1, 0 }, { 0x0B8A, 0, 1 },
+ { 0x0B8E, 1, 0 }, { 0x0B90, 0, 1 },
+ { 0x0B92, 1, 0 }, { 0x0B95, 0, 1 },
+ { 0x0B99, 1, 0 }, { 0x0B9A, 0, 1 },
+ { 0x0B9C, 1, 1 },
+ { 0x0B9E, 1, 0 }, { 0x0B9F, 0, 1 },
+ { 0x0BA3, 1, 0 }, { 0x0BA4, 0, 1 },
+ { 0x0BA8, 1, 0 }, { 0x0BAA, 0, 1 },
+ { 0x0BAE, 1, 0 }, { 0x0BB9, 0, 1 },
+ { 0x0BBE, 1, 0 }, { 0x0BC2, 0, 1 },
+ { 0x0BC6, 1, 0 }, { 0x0BC8, 0, 1 },
+ { 0x0BCA, 1, 0 }, { 0x0BCD, 0, 1 },
+ { 0x0BD0, 1, 1 },
+ { 0x0BD7, 1, 1 },
+ { 0x0BE6, 1, 0 }, { 0x0BFA, 0, 1 }
+};
+static const uc_interval_t script_telugu_intervals[] =
+{
+ { 0x0C01, 1, 0 }, { 0x0C03, 0, 1 },
+ { 0x0C05, 1, 0 }, { 0x0C0C, 0, 1 },
+ { 0x0C0E, 1, 0 }, { 0x0C10, 0, 1 },
+ { 0x0C12, 1, 0 }, { 0x0C28, 0, 1 },
+ { 0x0C2A, 1, 0 }, { 0x0C33, 0, 1 },
+ { 0x0C35, 1, 0 }, { 0x0C39, 0, 1 },
+ { 0x0C3D, 1, 0 }, { 0x0C44, 0, 1 },
+ { 0x0C46, 1, 0 }, { 0x0C48, 0, 1 },
+ { 0x0C4A, 1, 0 }, { 0x0C4D, 0, 1 },
+ { 0x0C55, 1, 0 }, { 0x0C56, 0, 1 },
+ { 0x0C58, 1, 0 }, { 0x0C59, 0, 1 },
+ { 0x0C60, 1, 0 }, { 0x0C63, 0, 1 },
+ { 0x0C66, 1, 0 }, { 0x0C6F, 0, 1 },
+ { 0x0C78, 1, 0 }, { 0x0C7F, 0, 1 }
+};
+static const uc_interval_t script_kannada_intervals[] =
+{
+ { 0x0C82, 1, 0 }, { 0x0C83, 0, 1 },
+ { 0x0C85, 1, 0 }, { 0x0C8C, 0, 1 },
+ { 0x0C8E, 1, 0 }, { 0x0C90, 0, 1 },
+ { 0x0C92, 1, 0 }, { 0x0CA8, 0, 1 },
+ { 0x0CAA, 1, 0 }, { 0x0CB3, 0, 1 },
+ { 0x0CB5, 1, 0 }, { 0x0CB9, 0, 1 },
+ { 0x0CBC, 1, 0 }, { 0x0CC4, 0, 1 },
+ { 0x0CC6, 1, 0 }, { 0x0CC8, 0, 1 },
+ { 0x0CCA, 1, 0 }, { 0x0CCD, 0, 1 },
+ { 0x0CD5, 1, 0 }, { 0x0CD6, 0, 1 },
+ { 0x0CDE, 1, 1 },
+ { 0x0CE0, 1, 0 }, { 0x0CE3, 0, 1 },
+ { 0x0CE6, 1, 0 }, { 0x0CEF, 0, 1 }
+};
+static const uc_interval_t script_malayalam_intervals[] =
+{
+ { 0x0D02, 1, 0 }, { 0x0D03, 0, 1 },
+ { 0x0D05, 1, 0 }, { 0x0D0C, 0, 1 },
+ { 0x0D0E, 1, 0 }, { 0x0D10, 0, 1 },
+ { 0x0D12, 1, 0 }, { 0x0D28, 0, 1 },
+ { 0x0D2A, 1, 0 }, { 0x0D39, 0, 1 },
+ { 0x0D3D, 1, 0 }, { 0x0D44, 0, 1 },
+ { 0x0D46, 1, 0 }, { 0x0D48, 0, 1 },
+ { 0x0D4A, 1, 0 }, { 0x0D4D, 0, 1 },
+ { 0x0D57, 1, 1 },
+ { 0x0D60, 1, 0 }, { 0x0D63, 0, 1 },
+ { 0x0D66, 1, 0 }, { 0x0D75, 0, 1 },
+ { 0x0D79, 1, 0 }, { 0x0D7F, 0, 1 }
+};
+static const uc_interval_t script_sinhala_intervals[] =
+{
+ { 0x0D82, 1, 0 }, { 0x0D83, 0, 1 },
+ { 0x0D85, 1, 0 }, { 0x0D96, 0, 1 },
+ { 0x0D9A, 1, 0 }, { 0x0DB1, 0, 1 },
+ { 0x0DB3, 1, 0 }, { 0x0DBB, 0, 1 },
+ { 0x0DBD, 1, 1 },
+ { 0x0DC0, 1, 0 }, { 0x0DC6, 0, 1 },
+ { 0x0DCA, 1, 1 },
+ { 0x0DCF, 1, 0 }, { 0x0DD4, 0, 1 },
+ { 0x0DD6, 1, 1 },
+ { 0x0DD8, 1, 0 }, { 0x0DDF, 0, 1 },
+ { 0x0DF2, 1, 0 }, { 0x0DF4, 0, 1 }
+};
+static const uc_interval_t script_thai_intervals[] =
+{
+ { 0x0E01, 1, 0 }, { 0x0E3A, 0, 1 },
+ { 0x0E40, 1, 0 }, { 0x0E5B, 0, 1 }
+};
+static const uc_interval_t script_lao_intervals[] =
+{
+ { 0x0E81, 1, 0 }, { 0x0E82, 0, 1 },
+ { 0x0E84, 1, 1 },
+ { 0x0E87, 1, 0 }, { 0x0E88, 0, 1 },
+ { 0x0E8A, 1, 1 },
+ { 0x0E8D, 1, 1 },
+ { 0x0E94, 1, 0 }, { 0x0E97, 0, 1 },
+ { 0x0E99, 1, 0 }, { 0x0E9F, 0, 1 },
+ { 0x0EA1, 1, 0 }, { 0x0EA3, 0, 1 },
+ { 0x0EA5, 1, 1 },
+ { 0x0EA7, 1, 1 },
+ { 0x0EAA, 1, 0 }, { 0x0EAB, 0, 1 },
+ { 0x0EAD, 1, 0 }, { 0x0EB9, 0, 1 },
+ { 0x0EBB, 1, 0 }, { 0x0EBD, 0, 1 },
+ { 0x0EC0, 1, 0 }, { 0x0EC4, 0, 1 },
+ { 0x0EC6, 1, 1 },
+ { 0x0EC8, 1, 0 }, { 0x0ECD, 0, 1 },
+ { 0x0ED0, 1, 0 }, { 0x0ED9, 0, 1 },
+ { 0x0EDC, 1, 0 }, { 0x0EDD, 0, 1 }
+};
+static const uc_interval_t script_tibetan_intervals[] =
+{
+ { 0x0F00, 1, 0 }, { 0x0F47, 0, 1 },
+ { 0x0F49, 1, 0 }, { 0x0F6C, 0, 1 },
+ { 0x0F71, 1, 0 }, { 0x0F8B, 0, 1 },
+ { 0x0F90, 1, 0 }, { 0x0F97, 0, 1 },
+ { 0x0F99, 1, 0 }, { 0x0FBC, 0, 1 },
+ { 0x0FBE, 1, 0 }, { 0x0FCC, 0, 1 },
+ { 0x0FCE, 1, 0 }, { 0x0FD4, 0, 1 }
+};
+static const uc_interval_t script_myanmar_intervals[] =
+{
+ { 0x1000, 1, 0 }, { 0x1099, 0, 1 },
+ { 0x109E, 1, 0 }, { 0x109F, 0, 1 }
+};
+static const uc_interval_t script_georgian_intervals[] =
+{
+ { 0x10A0, 1, 0 }, { 0x10C5, 0, 1 },
+ { 0x10D0, 1, 0 }, { 0x10FA, 0, 1 },
+ { 0x10FC, 1, 1 },
+ { 0x2D00, 1, 0 }, { 0x2D25, 0, 1 }
+};
+static const uc_interval_t script_hangul_intervals[] =
+{
+ { 0x1100, 1, 0 }, { 0x1159, 0, 1 },
+ { 0x115F, 1, 0 }, { 0x11A2, 0, 1 },
+ { 0x11A8, 1, 0 }, { 0x11F9, 0, 1 },
+ { 0x3131, 1, 0 }, { 0x318E, 0, 1 },
+ { 0x3200, 1, 0 }, { 0x321E, 0, 1 },
+ { 0x3260, 1, 0 }, { 0x327E, 0, 1 },
+ { 0xAC00, 1, 0 }, { 0xD7A3, 0, 1 },
+ { 0xFFA0, 1, 0 }, { 0xFFBE, 0, 1 },
+ { 0xFFC2, 1, 0 }, { 0xFFC7, 0, 1 },
+ { 0xFFCA, 1, 0 }, { 0xFFCF, 0, 1 },
+ { 0xFFD2, 1, 0 }, { 0xFFD7, 0, 1 },
+ { 0xFFDA, 1, 0 }, { 0xFFDC, 0, 1 }
+};
+static const uc_interval_t script_ethiopic_intervals[] =
+{
+ { 0x1200, 1, 0 }, { 0x1248, 0, 1 },
+ { 0x124A, 1, 0 }, { 0x124D, 0, 1 },
+ { 0x1250, 1, 0 }, { 0x1256, 0, 1 },
+ { 0x1258, 1, 1 },
+ { 0x125A, 1, 0 }, { 0x125D, 0, 1 },
+ { 0x1260, 1, 0 }, { 0x1288, 0, 1 },
+ { 0x128A, 1, 0 }, { 0x128D, 0, 1 },
+ { 0x1290, 1, 0 }, { 0x12B0, 0, 1 },
+ { 0x12B2, 1, 0 }, { 0x12B5, 0, 1 },
+ { 0x12B8, 1, 0 }, { 0x12BE, 0, 1 },
+ { 0x12C0, 1, 1 },
+ { 0x12C2, 1, 0 }, { 0x12C5, 0, 1 },
+ { 0x12C8, 1, 0 }, { 0x12D6, 0, 1 },
+ { 0x12D8, 1, 0 }, { 0x1310, 0, 1 },
+ { 0x1312, 1, 0 }, { 0x1315, 0, 1 },
+ { 0x1318, 1, 0 }, { 0x135A, 0, 1 },
+ { 0x135F, 1, 0 }, { 0x137C, 0, 1 },
+ { 0x1380, 1, 0 }, { 0x1399, 0, 1 },
+ { 0x2D80, 1, 0 }, { 0x2D96, 0, 1 },
+ { 0x2DA0, 1, 0 }, { 0x2DA6, 0, 1 },
+ { 0x2DA8, 1, 0 }, { 0x2DAE, 0, 1 },
+ { 0x2DB0, 1, 0 }, { 0x2DB6, 0, 1 },
+ { 0x2DB8, 1, 0 }, { 0x2DBE, 0, 1 },
+ { 0x2DC0, 1, 0 }, { 0x2DC6, 0, 1 },
+ { 0x2DC8, 1, 0 }, { 0x2DCE, 0, 1 },
+ { 0x2DD0, 1, 0 }, { 0x2DD6, 0, 1 },
+ { 0x2DD8, 1, 0 }, { 0x2DDE, 0, 1 }
+};
+static const uc_interval_t script_cherokee_intervals[] =
+{
+ { 0x13A0, 1, 0 }, { 0x13F4, 0, 1 }
+};
+static const uc_interval_t script_canadian_aboriginal_intervals[] =
+{
+ { 0x1401, 1, 0 }, { 0x1676, 0, 1 }
+};
+static const uc_interval_t script_ogham_intervals[] =
+{
+ { 0x1680, 1, 0 }, { 0x169C, 0, 1 }
+};
+static const uc_interval_t script_runic_intervals[] =
+{
+ { 0x16A0, 1, 0 }, { 0x16EA, 0, 1 },
+ { 0x16EE, 1, 0 }, { 0x16F0, 0, 1 }
+};
+static const uc_interval_t script_khmer_intervals[] =
+{
+ { 0x1780, 1, 0 }, { 0x17DD, 0, 1 },
+ { 0x17E0, 1, 0 }, { 0x17E9, 0, 1 },
+ { 0x17F0, 1, 0 }, { 0x17F9, 0, 1 },
+ { 0x19E0, 1, 0 }, { 0x19FF, 0, 1 }
+};
+static const uc_interval_t script_mongolian_intervals[] =
+{
+ { 0x1800, 1, 0 }, { 0x1801, 0, 1 },
+ { 0x1804, 1, 1 },
+ { 0x1806, 1, 0 }, { 0x180E, 0, 1 },
+ { 0x1810, 1, 0 }, { 0x1819, 0, 1 },
+ { 0x1820, 1, 0 }, { 0x1877, 0, 1 },
+ { 0x1880, 1, 0 }, { 0x18AA, 0, 1 }
+};
+static const uc_interval_t script_hiragana_intervals[] =
+{
+ { 0x3041, 1, 0 }, { 0x3096, 0, 1 },
+ { 0x309D, 1, 0 }, { 0x309F, 0, 1 }
+};
+static const uc_interval_t script_katakana_intervals[] =
+{
+ { 0x30A1, 1, 0 }, { 0x30FA, 0, 1 },
+ { 0x30FD, 1, 0 }, { 0x30FF, 0, 1 },
+ { 0x31F0, 1, 0 }, { 0x31FF, 0, 1 },
+ { 0x32D0, 1, 0 }, { 0x32FE, 0, 1 },
+ { 0x3300, 1, 0 }, { 0x3357, 0, 1 },
+ { 0xFF66, 1, 0 }, { 0xFF6F, 0, 1 },
+ { 0xFF71, 1, 0 }, { 0xFF9D, 0, 1 }
+};
+static const uc_interval_t script_bopomofo_intervals[] =
+{
+ { 0x3105, 1, 0 }, { 0x312D, 0, 1 },
+ { 0x31A0, 1, 0 }, { 0x31B7, 0, 1 }
+};
+static const uc_interval_t script_han_intervals[] =
+{
+ { 0x2E80, 1, 0 }, { 0x2E99, 0, 1 },
+ { 0x2E9B, 1, 0 }, { 0x2EF3, 0, 1 },
+ { 0x2F00, 1, 0 }, { 0x2FD5, 0, 1 },
+ { 0x3005, 1, 1 },
+ { 0x3007, 1, 1 },
+ { 0x3021, 1, 0 }, { 0x3029, 0, 1 },
+ { 0x3038, 1, 0 }, { 0x303B, 0, 1 },
+ { 0x3400, 1, 0 }, { 0x4DB5, 0, 1 },
+ { 0x4E00, 1, 0 }, { 0x9FC3, 0, 1 },
+ { 0xF900, 1, 0 }, { 0xFA2D, 0, 1 },
+ { 0xFA30, 1, 0 }, { 0xFA6A, 0, 1 },
+ { 0xFA70, 1, 0 }, { 0xFAD9, 0, 1 },
+ { 0x20000, 1, 0 }, { 0x2A6D6, 0, 1 },
+ { 0x2F800, 1, 0 }, { 0x2FA1D, 0, 1 }
+};
+static const uc_interval_t script_yi_intervals[] =
+{
+ { 0xA000, 1, 0 }, { 0xA48C, 0, 1 },
+ { 0xA490, 1, 0 }, { 0xA4C6, 0, 1 }
+};
+static const uc_interval_t script_old_italic_intervals[] =
+{
+ { 0x10300, 1, 0 }, { 0x1031E, 0, 1 },
+ { 0x10320, 1, 0 }, { 0x10323, 0, 1 }
+};
+static const uc_interval_t script_gothic_intervals[] =
+{
+ { 0x10330, 1, 0 }, { 0x1034A, 0, 1 }
+};
+static const uc_interval_t script_deseret_intervals[] =
+{
+ { 0x10400, 1, 0 }, { 0x1044F, 0, 1 }
+};
+static const uc_interval_t script_inherited_intervals[] =
+{
+ { 0x0300, 1, 0 }, { 0x036F, 0, 1 },
+ { 0x064B, 1, 0 }, { 0x0655, 0, 1 },
+ { 0x0670, 1, 1 },
+ { 0x0951, 1, 0 }, { 0x0952, 0, 1 },
+ { 0x1DC0, 1, 0 }, { 0x1DE6, 0, 1 },
+ { 0x1DFE, 1, 0 }, { 0x1DFF, 0, 1 },
+ { 0x200C, 1, 0 }, { 0x200D, 0, 1 },
+ { 0x20D0, 1, 0 }, { 0x20F0, 0, 1 },
+ { 0x302A, 1, 0 }, { 0x302F, 0, 1 },
+ { 0x3099, 1, 0 }, { 0x309A, 0, 1 },
+ { 0xFE00, 1, 0 }, { 0xFE0F, 0, 1 },
+ { 0xFE20, 1, 0 }, { 0xFE26, 0, 1 },
+ { 0x101FD, 1, 1 },
+ { 0x1D167, 1, 0 }, { 0x1D169, 0, 1 },
+ { 0x1D17B, 1, 0 }, { 0x1D182, 0, 1 },
+ { 0x1D185, 1, 0 }, { 0x1D18B, 0, 1 },
+ { 0x1D1AA, 1, 0 }, { 0x1D1AD, 0, 1 },
+ { 0xE0100, 1, 0 }, { 0xE01EF, 0, 1 }
+};
+static const uc_interval_t script_tagalog_intervals[] =
+{
+ { 0x1700, 1, 0 }, { 0x170C, 0, 1 },
+ { 0x170E, 1, 0 }, { 0x1714, 0, 1 }
+};
+static const uc_interval_t script_hanunoo_intervals[] =
+{
+ { 0x1720, 1, 0 }, { 0x1734, 0, 1 }
+};
+static const uc_interval_t script_buhid_intervals[] =
+{
+ { 0x1740, 1, 0 }, { 0x1753, 0, 1 }
+};
+static const uc_interval_t script_tagbanwa_intervals[] =
+{
+ { 0x1760, 1, 0 }, { 0x176C, 0, 1 },
+ { 0x176E, 1, 0 }, { 0x1770, 0, 1 },
+ { 0x1772, 1, 0 }, { 0x1773, 0, 1 }
+};
+static const uc_interval_t script_limbu_intervals[] =
+{
+ { 0x1900, 1, 0 }, { 0x191C, 0, 1 },
+ { 0x1920, 1, 0 }, { 0x192B, 0, 1 },
+ { 0x1930, 1, 0 }, { 0x193B, 0, 1 },
+ { 0x1940, 1, 1 },
+ { 0x1944, 1, 0 }, { 0x194F, 0, 1 }
+};
+static const uc_interval_t script_tai_le_intervals[] =
+{
+ { 0x1950, 1, 0 }, { 0x196D, 0, 1 },
+ { 0x1970, 1, 0 }, { 0x1974, 0, 1 }
+};
+static const uc_interval_t script_linear_b_intervals[] =
+{
+ { 0x10000, 1, 0 }, { 0x1000B, 0, 1 },
+ { 0x1000D, 1, 0 }, { 0x10026, 0, 1 },
+ { 0x10028, 1, 0 }, { 0x1003A, 0, 1 },
+ { 0x1003C, 1, 0 }, { 0x1003D, 0, 1 },
+ { 0x1003F, 1, 0 }, { 0x1004D, 0, 1 },
+ { 0x10050, 1, 0 }, { 0x1005D, 0, 1 },
+ { 0x10080, 1, 0 }, { 0x100FA, 0, 1 }
+};
+static const uc_interval_t script_ugaritic_intervals[] =
+{
+ { 0x10380, 1, 0 }, { 0x1039D, 0, 1 },
+ { 0x1039F, 1, 1 }
+};
+static const uc_interval_t script_shavian_intervals[] =
+{
+ { 0x10450, 1, 0 }, { 0x1047F, 0, 1 }
+};
+static const uc_interval_t script_osmanya_intervals[] =
+{
+ { 0x10480, 1, 0 }, { 0x1049D, 0, 1 },
+ { 0x104A0, 1, 0 }, { 0x104A9, 0, 1 }
+};
+static const uc_interval_t script_cypriot_intervals[] =
+{
+ { 0x10800, 1, 0 }, { 0x10805, 0, 1 },
+ { 0x10808, 1, 1 },
+ { 0x1080A, 1, 0 }, { 0x10835, 0, 1 },
+ { 0x10837, 1, 0 }, { 0x10838, 0, 1 },
+ { 0x1083C, 1, 1 },
+ { 0x1083F, 1, 1 }
+};
+static const uc_interval_t script_braille_intervals[] =
+{
+ { 0x2800, 1, 0 }, { 0x28FF, 0, 1 }
+};
+static const uc_interval_t script_buginese_intervals[] =
+{
+ { 0x1A00, 1, 0 }, { 0x1A1B, 0, 1 },
+ { 0x1A1E, 1, 0 }, { 0x1A1F, 0, 1 }
+};
+static const uc_interval_t script_coptic_intervals[] =
+{
+ { 0x03E2, 1, 0 }, { 0x03EF, 0, 1 },
+ { 0x2C80, 1, 0 }, { 0x2CEA, 0, 1 },
+ { 0x2CF9, 1, 0 }, { 0x2CFF, 0, 1 }
+};
+static const uc_interval_t script_new_tai_lue_intervals[] =
+{
+ { 0x1980, 1, 0 }, { 0x19A9, 0, 1 },
+ { 0x19B0, 1, 0 }, { 0x19C9, 0, 1 },
+ { 0x19D0, 1, 0 }, { 0x19D9, 0, 1 },
+ { 0x19DE, 1, 0 }, { 0x19DF, 0, 1 }
+};
+static const uc_interval_t script_glagolitic_intervals[] =
+{
+ { 0x2C00, 1, 0 }, { 0x2C2E, 0, 1 },
+ { 0x2C30, 1, 0 }, { 0x2C5E, 0, 1 }
+};
+static const uc_interval_t script_tifinagh_intervals[] =
+{
+ { 0x2D30, 1, 0 }, { 0x2D65, 0, 1 },
+ { 0x2D6F, 1, 1 }
+};
+static const uc_interval_t script_syloti_nagri_intervals[] =
+{
+ { 0xA800, 1, 0 }, { 0xA82B, 0, 1 }
+};
+static const uc_interval_t script_old_persian_intervals[] =
+{
+ { 0x103A0, 1, 0 }, { 0x103C3, 0, 1 },
+ { 0x103C8, 1, 0 }, { 0x103D5, 0, 1 }
+};
+static const uc_interval_t script_kharoshthi_intervals[] =
+{
+ { 0x10A00, 1, 0 }, { 0x10A03, 0, 1 },
+ { 0x10A05, 1, 0 }, { 0x10A06, 0, 1 },
+ { 0x10A0C, 1, 0 }, { 0x10A13, 0, 1 },
+ { 0x10A15, 1, 0 }, { 0x10A17, 0, 1 },
+ { 0x10A19, 1, 0 }, { 0x10A33, 0, 1 },
+ { 0x10A38, 1, 0 }, { 0x10A3A, 0, 1 },
+ { 0x10A3F, 1, 0 }, { 0x10A47, 0, 1 },
+ { 0x10A50, 1, 0 }, { 0x10A58, 0, 1 }
+};
+static const uc_interval_t script_balinese_intervals[] =
+{
+ { 0x1B00, 1, 0 }, { 0x1B4B, 0, 1 },
+ { 0x1B50, 1, 0 }, { 0x1B7C, 0, 1 }
+};
+static const uc_interval_t script_cuneiform_intervals[] =
+{
+ { 0x12000, 1, 0 }, { 0x1236E, 0, 1 },
+ { 0x12400, 1, 0 }, { 0x12462, 0, 1 },
+ { 0x12470, 1, 0 }, { 0x12473, 0, 1 }
+};
+static const uc_interval_t script_phoenician_intervals[] =
+{
+ { 0x10900, 1, 0 }, { 0x10919, 0, 1 },
+ { 0x1091F, 1, 1 }
+};
+static const uc_interval_t script_phags_pa_intervals[] =
+{
+ { 0xA840, 1, 0 }, { 0xA877, 0, 1 }
+};
+static const uc_interval_t script_nko_intervals[] =
+{
+ { 0x07C0, 1, 0 }, { 0x07FA, 0, 1 }
+};
+static const uc_interval_t script_sundanese_intervals[] =
+{
+ { 0x1B80, 1, 0 }, { 0x1BAA, 0, 1 },
+ { 0x1BAE, 1, 0 }, { 0x1BB9, 0, 1 }
+};
+static const uc_interval_t script_lepcha_intervals[] =
+{
+ { 0x1C00, 1, 0 }, { 0x1C37, 0, 1 },
+ { 0x1C3B, 1, 0 }, { 0x1C49, 0, 1 },
+ { 0x1C4D, 1, 0 }, { 0x1C4F, 0, 1 }
+};
+static const uc_interval_t script_ol_chiki_intervals[] =
+{
+ { 0x1C50, 1, 0 }, { 0x1C7F, 0, 1 }
+};
+static const uc_interval_t script_vai_intervals[] =
+{
+ { 0xA500, 1, 0 }, { 0xA62B, 0, 1 }
+};
+static const uc_interval_t script_saurashtra_intervals[] =
+{
+ { 0xA880, 1, 0 }, { 0xA8C4, 0, 1 },
+ { 0xA8CE, 1, 0 }, { 0xA8D9, 0, 1 }
+};
+static const uc_interval_t script_kayah_li_intervals[] =
+{
+ { 0xA900, 1, 0 }, { 0xA92F, 0, 1 }
+};
+static const uc_interval_t script_rejang_intervals[] =
+{
+ { 0xA930, 1, 0 }, { 0xA953, 0, 1 },
+ { 0xA95F, 1, 1 }
+};
+static const uc_interval_t script_lycian_intervals[] =
+{
+ { 0x10280, 1, 0 }, { 0x1029C, 0, 1 }
+};
+static const uc_interval_t script_carian_intervals[] =
+{
+ { 0x102A0, 1, 0 }, { 0x102D0, 0, 1 }
+};
+static const uc_interval_t script_lydian_intervals[] =
+{
+ { 0x10920, 1, 0 }, { 0x10939, 0, 1 },
+ { 0x1093F, 1, 1 }
+};
+static const uc_interval_t script_cham_intervals[] =
+{
+ { 0xAA00, 1, 0 }, { 0xAA36, 0, 1 },
+ { 0xAA40, 1, 0 }, { 0xAA4D, 0, 1 },
+ { 0xAA50, 1, 0 }, { 0xAA59, 0, 1 },
+ { 0xAA5C, 1, 0 }, { 0xAA5F, 0, 1 }
+};
+static const uc_script_t scripts[77] =
+{
+ {
+ sizeof (script_common_intervals) / sizeof (uc_interval_t),
+ script_common_intervals,
+ "Common"
+ },
+ {
+ sizeof (script_latin_intervals) / sizeof (uc_interval_t),
+ script_latin_intervals,
+ "Latin"
+ },
+ {
+ sizeof (script_greek_intervals) / sizeof (uc_interval_t),
+ script_greek_intervals,
+ "Greek"
+ },
+ {
+ sizeof (script_cyrillic_intervals) / sizeof (uc_interval_t),
+ script_cyrillic_intervals,
+ "Cyrillic"
+ },
+ {
+ sizeof (script_armenian_intervals) / sizeof (uc_interval_t),
+ script_armenian_intervals,
+ "Armenian"
+ },
+ {
+ sizeof (script_hebrew_intervals) / sizeof (uc_interval_t),
+ script_hebrew_intervals,
+ "Hebrew"
+ },
+ {
+ sizeof (script_arabic_intervals) / sizeof (uc_interval_t),
+ script_arabic_intervals,
+ "Arabic"
+ },
+ {
+ sizeof (script_syriac_intervals) / sizeof (uc_interval_t),
+ script_syriac_intervals,
+ "Syriac"
+ },
+ {
+ sizeof (script_thaana_intervals) / sizeof (uc_interval_t),
+ script_thaana_intervals,
+ "Thaana"
+ },
+ {
+ sizeof (script_devanagari_intervals) / sizeof (uc_interval_t),
+ script_devanagari_intervals,
+ "Devanagari"
+ },
+ {
+ sizeof (script_bengali_intervals) / sizeof (uc_interval_t),
+ script_bengali_intervals,
+ "Bengali"
+ },
+ {
+ sizeof (script_gurmukhi_intervals) / sizeof (uc_interval_t),
+ script_gurmukhi_intervals,
+ "Gurmukhi"
+ },
+ {
+ sizeof (script_gujarati_intervals) / sizeof (uc_interval_t),
+ script_gujarati_intervals,
+ "Gujarati"
+ },
+ {
+ sizeof (script_oriya_intervals) / sizeof (uc_interval_t),
+ script_oriya_intervals,
+ "Oriya"
+ },
+ {
+ sizeof (script_tamil_intervals) / sizeof (uc_interval_t),
+ script_tamil_intervals,
+ "Tamil"
+ },
+ {
+ sizeof (script_telugu_intervals) / sizeof (uc_interval_t),
+ script_telugu_intervals,
+ "Telugu"
+ },
+ {
+ sizeof (script_kannada_intervals) / sizeof (uc_interval_t),
+ script_kannada_intervals,
+ "Kannada"
+ },
+ {
+ sizeof (script_malayalam_intervals) / sizeof (uc_interval_t),
+ script_malayalam_intervals,
+ "Malayalam"
+ },
+ {
+ sizeof (script_sinhala_intervals) / sizeof (uc_interval_t),
+ script_sinhala_intervals,
+ "Sinhala"
+ },
+ {
+ sizeof (script_thai_intervals) / sizeof (uc_interval_t),
+ script_thai_intervals,
+ "Thai"
+ },
+ {
+ sizeof (script_lao_intervals) / sizeof (uc_interval_t),
+ script_lao_intervals,
+ "Lao"
+ },
+ {
+ sizeof (script_tibetan_intervals) / sizeof (uc_interval_t),
+ script_tibetan_intervals,
+ "Tibetan"
+ },
+ {
+ sizeof (script_myanmar_intervals) / sizeof (uc_interval_t),
+ script_myanmar_intervals,
+ "Myanmar"
+ },
+ {
+ sizeof (script_georgian_intervals) / sizeof (uc_interval_t),
+ script_georgian_intervals,
+ "Georgian"
+ },
+ {
+ sizeof (script_hangul_intervals) / sizeof (uc_interval_t),
+ script_hangul_intervals,
+ "Hangul"
+ },
+ {
+ sizeof (script_ethiopic_intervals) / sizeof (uc_interval_t),
+ script_ethiopic_intervals,
+ "Ethiopic"
+ },
+ {
+ sizeof (script_cherokee_intervals) / sizeof (uc_interval_t),
+ script_cherokee_intervals,
+ "Cherokee"
+ },
+ {
+ sizeof (script_canadian_aboriginal_intervals) / sizeof (uc_interval_t),
+ script_canadian_aboriginal_intervals,
+ "Canadian_Aboriginal"
+ },
+ {
+ sizeof (script_ogham_intervals) / sizeof (uc_interval_t),
+ script_ogham_intervals,
+ "Ogham"
+ },
+ {
+ sizeof (script_runic_intervals) / sizeof (uc_interval_t),
+ script_runic_intervals,
+ "Runic"
+ },
+ {
+ sizeof (script_khmer_intervals) / sizeof (uc_interval_t),
+ script_khmer_intervals,
+ "Khmer"
+ },
+ {
+ sizeof (script_mongolian_intervals) / sizeof (uc_interval_t),
+ script_mongolian_intervals,
+ "Mongolian"
+ },
+ {
+ sizeof (script_hiragana_intervals) / sizeof (uc_interval_t),
+ script_hiragana_intervals,
+ "Hiragana"
+ },
+ {
+ sizeof (script_katakana_intervals) / sizeof (uc_interval_t),
+ script_katakana_intervals,
+ "Katakana"
+ },
+ {
+ sizeof (script_bopomofo_intervals) / sizeof (uc_interval_t),
+ script_bopomofo_intervals,
+ "Bopomofo"
+ },
+ {
+ sizeof (script_han_intervals) / sizeof (uc_interval_t),
+ script_han_intervals,
+ "Han"
+ },
+ {
+ sizeof (script_yi_intervals) / sizeof (uc_interval_t),
+ script_yi_intervals,
+ "Yi"
+ },
+ {
+ sizeof (script_old_italic_intervals) / sizeof (uc_interval_t),
+ script_old_italic_intervals,
+ "Old_Italic"
+ },
+ {
+ sizeof (script_gothic_intervals) / sizeof (uc_interval_t),
+ script_gothic_intervals,
+ "Gothic"
+ },
+ {
+ sizeof (script_deseret_intervals) / sizeof (uc_interval_t),
+ script_deseret_intervals,
+ "Deseret"
+ },
+ {
+ sizeof (script_inherited_intervals) / sizeof (uc_interval_t),
+ script_inherited_intervals,
+ "Inherited"
+ },
+ {
+ sizeof (script_tagalog_intervals) / sizeof (uc_interval_t),
+ script_tagalog_intervals,
+ "Tagalog"
+ },
+ {
+ sizeof (script_hanunoo_intervals) / sizeof (uc_interval_t),
+ script_hanunoo_intervals,
+ "Hanunoo"
+ },
+ {
+ sizeof (script_buhid_intervals) / sizeof (uc_interval_t),
+ script_buhid_intervals,
+ "Buhid"
+ },
+ {
+ sizeof (script_tagbanwa_intervals) / sizeof (uc_interval_t),
+ script_tagbanwa_intervals,
+ "Tagbanwa"
+ },
+ {
+ sizeof (script_limbu_intervals) / sizeof (uc_interval_t),
+ script_limbu_intervals,
+ "Limbu"
+ },
+ {
+ sizeof (script_tai_le_intervals) / sizeof (uc_interval_t),
+ script_tai_le_intervals,
+ "Tai_Le"
+ },
+ {
+ sizeof (script_linear_b_intervals) / sizeof (uc_interval_t),
+ script_linear_b_intervals,
+ "Linear_B"
+ },
+ {
+ sizeof (script_ugaritic_intervals) / sizeof (uc_interval_t),
+ script_ugaritic_intervals,
+ "Ugaritic"
+ },
+ {
+ sizeof (script_shavian_intervals) / sizeof (uc_interval_t),
+ script_shavian_intervals,
+ "Shavian"
+ },
+ {
+ sizeof (script_osmanya_intervals) / sizeof (uc_interval_t),
+ script_osmanya_intervals,
+ "Osmanya"
+ },
+ {
+ sizeof (script_cypriot_intervals) / sizeof (uc_interval_t),
+ script_cypriot_intervals,
+ "Cypriot"
+ },
+ {
+ sizeof (script_braille_intervals) / sizeof (uc_interval_t),
+ script_braille_intervals,
+ "Braille"
+ },
+ {
+ sizeof (script_buginese_intervals) / sizeof (uc_interval_t),
+ script_buginese_intervals,
+ "Buginese"
+ },
+ {
+ sizeof (script_coptic_intervals) / sizeof (uc_interval_t),
+ script_coptic_intervals,
+ "Coptic"
+ },
+ {
+ sizeof (script_new_tai_lue_intervals) / sizeof (uc_interval_t),
+ script_new_tai_lue_intervals,
+ "New_Tai_Lue"
+ },
+ {
+ sizeof (script_glagolitic_intervals) / sizeof (uc_interval_t),
+ script_glagolitic_intervals,
+ "Glagolitic"
+ },
+ {
+ sizeof (script_tifinagh_intervals) / sizeof (uc_interval_t),
+ script_tifinagh_intervals,
+ "Tifinagh"
+ },
+ {
+ sizeof (script_syloti_nagri_intervals) / sizeof (uc_interval_t),
+ script_syloti_nagri_intervals,
+ "Syloti_Nagri"
+ },
+ {
+ sizeof (script_old_persian_intervals) / sizeof (uc_interval_t),
+ script_old_persian_intervals,
+ "Old_Persian"
+ },
+ {
+ sizeof (script_kharoshthi_intervals) / sizeof (uc_interval_t),
+ script_kharoshthi_intervals,
+ "Kharoshthi"
+ },
+ {
+ sizeof (script_balinese_intervals) / sizeof (uc_interval_t),
+ script_balinese_intervals,
+ "Balinese"
+ },
+ {
+ sizeof (script_cuneiform_intervals) / sizeof (uc_interval_t),
+ script_cuneiform_intervals,
+ "Cuneiform"
+ },
+ {
+ sizeof (script_phoenician_intervals) / sizeof (uc_interval_t),
+ script_phoenician_intervals,
+ "Phoenician"
+ },
+ {
+ sizeof (script_phags_pa_intervals) / sizeof (uc_interval_t),
+ script_phags_pa_intervals,
+ "Phags_Pa"
+ },
+ {
+ sizeof (script_nko_intervals) / sizeof (uc_interval_t),
+ script_nko_intervals,
+ "Nko"
+ },
+ {
+ sizeof (script_sundanese_intervals) / sizeof (uc_interval_t),
+ script_sundanese_intervals,
+ "Sundanese"
+ },
+ {
+ sizeof (script_lepcha_intervals) / sizeof (uc_interval_t),
+ script_lepcha_intervals,
+ "Lepcha"
+ },
+ {
+ sizeof (script_ol_chiki_intervals) / sizeof (uc_interval_t),
+ script_ol_chiki_intervals,
+ "Ol_Chiki"
+ },
+ {
+ sizeof (script_vai_intervals) / sizeof (uc_interval_t),
+ script_vai_intervals,
+ "Vai"
+ },
+ {
+ sizeof (script_saurashtra_intervals) / sizeof (uc_interval_t),
+ script_saurashtra_intervals,
+ "Saurashtra"
+ },
+ {
+ sizeof (script_kayah_li_intervals) / sizeof (uc_interval_t),
+ script_kayah_li_intervals,
+ "Kayah_Li"
+ },
+ {
+ sizeof (script_rejang_intervals) / sizeof (uc_interval_t),
+ script_rejang_intervals,
+ "Rejang"
+ },
+ {
+ sizeof (script_lycian_intervals) / sizeof (uc_interval_t),
+ script_lycian_intervals,
+ "Lycian"
+ },
+ {
+ sizeof (script_carian_intervals) / sizeof (uc_interval_t),
+ script_carian_intervals,
+ "Carian"
+ },
+ {
+ sizeof (script_lydian_intervals) / sizeof (uc_interval_t),
+ script_lydian_intervals,
+ "Lydian"
+ },
+ {
+ sizeof (script_cham_intervals) / sizeof (uc_interval_t),
+ script_cham_intervals,
+ "Cham"
+ }
+};
+#define script_header_0 16
+#define script_header_1 15
+#define script_header_2 7
+#define script_header_3 511
+#define script_header_4 127
+static const
+struct
+ {
+ int level1[15];
+ short level2[4 << 9];
+ unsigned char level3[138 << 7];
+ }
+u_script =
+{
+ {
+ 0, 512, 1024, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1536
+ },
+ {
+ 0, 128, 256, 256, 256, 384, 512, 640,
+ 768, 768, 896, 1024, 1152, 1280, 1408, 1536,
+ -1, -1, 1664, 1792, 1920, 2048, 2176, 2304,
+ 2432, 2560, 2688, 2816, 2944, 3072, 3200, 3328,
+ 3456, 3584, 3712, 3840, 3968, 4096, 4224, 4352,
+ 4480, 4608, 4608, 4608, 4736, 4864, 4992, 5120,
+ 5248, 5376, 5504, 5632, 5760, -1, 5888, 6016,
+ 6144, -1, 6272, 6400, 256, 256, 6528, 6656,
+ 6784, 6912, 7040, 7168, 7296, 7296, 7296, 7424,
+ 7552, 7296, 7296, 7296, 7296, 7680, 7808, 7936,
+ 8064, 8064, 7296, 7296, 7296, 7296, 8192, -1,
+ 8320, 8448, 8576, 8704, 8832, 8960, 9088, 9216,
+ 9344, 9472, 9600, 9728, 9856, 9984, 10112, 7296,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 10240, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 10368,
+ 10496, 10496, 10496, 10496, 10496, 10496, 10496, 10496,
+ 10496, 10624, 10752, 10752, 10880, 11008, 11136, 11264,
+ 11392, 11520, 11648, -1, 11776, -1, -1, -1,
+ 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904,
+ 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904,
+ 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904,
+ 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904,
+ 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904,
+ 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904,
+ 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904,
+ 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904,
+ 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904,
+ 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904,
+ 11904, 11904, 11904, 11904, 11904, 11904, 11904, 12032,
+ -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, 9088, 9088, 12160, 12288, 12416, 12544,
+ 12672, 12672, 12800, 12928, 13056, 13184, 13312, 13440,
+ 13568, 13696, 13824, 13952, -1, 14080, 14208, 14336,
+ 14464, 14592, -1, -1, -1, -1, -1, -1,
+ 14720, -1, 14848, -1, 14976, -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,
+ 15104, 15104, 15104, 15104, 15104, 15104, 15232, -1,
+ 15360, -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, -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, -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,
+ 7296, 15488, 15616, 15744, 15872, -1, 16000, -1,
+ 16128, 16256, 16384, 7296, 7296, 16512, 7296, 16640,
+ -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,
+ 16768, 16896, -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,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 9088, 9088, 9088,
+ 9088, 9088, 9088, 9088, 9088, 17024, -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, -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,
+ 9088, 9088, 9088, 9088, 17152, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 17280, -1, 17408, 17536, -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, -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, -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, -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
+ },
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 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, 0, 0, 0, 0, 0,
+ 0, 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, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 0,
+ 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, 0,
+ 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, 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, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 2, 2, 2, 2, 0, 2, 2, 2,
+ 255, 255, 2, 2, 2, 2, 0, 255,
+ 255, 255, 255, 255, 2, 0, 2, 0,
+ 2, 2, 2, 255, 2, 255, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 255, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 255,
+ 255, 4, 4, 4, 4, 4, 4, 4,
+ 255, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 255, 0, 4, 255, 255, 255, 255, 255,
+ 255, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 255, 255, 255, 255, 255,
+ 5, 5, 5, 5, 5, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 255, 255, 6, 6,
+ 6, 6, 6, 6, 0, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 0, 255, 255, 6, 0,
+ 255, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 0, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 6, 6, 6, 6, 6, 6,
+ 40, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 0, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 255, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 255, 255, 7, 7, 7,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 255, 255, 255, 255, 255,
+ 255, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 255, 255, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 255, 255,
+ 9, 40, 40, 9, 9, 255, 255, 255,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 0, 0, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9,
+ 0, 9, 9, 255, 255, 255, 255, 255,
+ 255, 255, 255, 9, 9, 9, 9, 9,
+ 255, 10, 10, 10, 255, 10, 10, 10,
+ 10, 10, 10, 10, 10, 255, 255, 10,
+ 10, 255, 255, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 255, 10, 10, 10, 10, 10, 10,
+ 10, 255, 10, 255, 255, 255, 10, 10,
+ 10, 10, 255, 255, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 255, 255, 10,
+ 10, 255, 255, 10, 10, 10, 10, 255,
+ 255, 255, 255, 255, 255, 255, 255, 10,
+ 255, 255, 255, 255, 10, 10, 255, 10,
+ 10, 10, 10, 10, 255, 255, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 255, 255, 255, 255, 255,
+ 255, 11, 11, 11, 255, 11, 11, 11,
+ 11, 11, 11, 255, 255, 255, 255, 11,
+ 11, 255, 255, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 255, 11, 11, 11, 11, 11, 11,
+ 11, 255, 11, 11, 255, 11, 11, 255,
+ 11, 11, 255, 255, 11, 255, 11, 11,
+ 11, 11, 11, 255, 255, 255, 255, 11,
+ 11, 255, 255, 11, 11, 11, 255, 255,
+ 255, 11, 255, 255, 255, 255, 255, 255,
+ 255, 11, 11, 11, 11, 255, 11, 255,
+ 255, 255, 255, 255, 255, 255, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 12, 12, 12, 255, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 255, 12,
+ 12, 12, 255, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 255, 12, 12, 12, 12, 12, 12,
+ 12, 255, 12, 12, 255, 12, 12, 12,
+ 12, 12, 255, 255, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 255, 12,
+ 12, 12, 255, 12, 12, 12, 255, 255,
+ 12, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 12, 12, 12, 12, 255, 255, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12,
+ 255, 12, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 13, 13, 13, 255, 13, 13, 13,
+ 13, 13, 13, 13, 13, 255, 255, 13,
+ 13, 255, 255, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 255, 13, 13, 13, 13, 13, 13,
+ 13, 255, 13, 13, 255, 13, 13, 13,
+ 13, 13, 255, 255, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 255, 255, 13,
+ 13, 255, 255, 13, 13, 13, 255, 255,
+ 255, 255, 255, 255, 255, 255, 13, 13,
+ 255, 255, 255, 255, 13, 13, 255, 13,
+ 13, 13, 13, 13, 255, 255, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 14, 14, 255, 14, 14, 14,
+ 14, 14, 14, 255, 255, 255, 14, 14,
+ 14, 255, 14, 14, 14, 14, 255, 255,
+ 255, 14, 14, 255, 14, 255, 14, 14,
+ 255, 255, 255, 14, 14, 255, 255, 255,
+ 14, 14, 14, 255, 255, 255, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 255, 255, 255, 255, 14, 14,
+ 14, 14, 14, 255, 255, 255, 14, 14,
+ 14, 255, 14, 14, 14, 14, 255, 255,
+ 14, 255, 255, 255, 255, 255, 255, 14,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 255, 255, 255, 255, 255,
+ 255, 15, 15, 15, 255, 15, 15, 15,
+ 15, 15, 15, 15, 15, 255, 15, 15,
+ 15, 255, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 255, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 255, 15, 15, 15,
+ 15, 15, 255, 255, 255, 15, 15, 15,
+ 15, 15, 15, 15, 15, 255, 15, 15,
+ 15, 255, 15, 15, 15, 15, 255, 255,
+ 255, 255, 255, 255, 255, 15, 15, 255,
+ 15, 15, 255, 255, 255, 255, 255, 255,
+ 15, 15, 15, 15, 255, 255, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 15, 15, 15, 15, 15, 15, 15, 15,
+ 255, 255, 16, 16, 255, 16, 16, 16,
+ 16, 16, 16, 16, 16, 255, 16, 16,
+ 16, 255, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 255, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 255, 16, 16, 16,
+ 16, 16, 255, 255, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 255, 16, 16,
+ 16, 255, 16, 16, 16, 16, 255, 255,
+ 255, 255, 255, 255, 255, 16, 16, 255,
+ 255, 255, 255, 255, 255, 255, 16, 255,
+ 16, 16, 16, 16, 255, 255, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 255, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 17, 17, 255, 17, 17, 17,
+ 17, 17, 17, 17, 17, 255, 17, 17,
+ 17, 255, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 255, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 255, 255, 255, 17, 17, 17,
+ 17, 17, 17, 17, 17, 255, 17, 17,
+ 17, 255, 17, 17, 17, 17, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 17,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 17, 17, 17, 17, 255, 255, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 255, 255,
+ 255, 17, 17, 17, 17, 17, 17, 17,
+ 255, 255, 18, 18, 255, 18, 18, 18,
+ 18, 18, 18, 18, 18, 18, 18, 18,
+ 18, 18, 18, 18, 18, 18, 18, 255,
+ 255, 255, 18, 18, 18, 18, 18, 18,
+ 18, 18, 18, 18, 18, 18, 18, 18,
+ 18, 18, 18, 18, 18, 18, 18, 18,
+ 18, 18, 255, 18, 18, 18, 18, 18,
+ 18, 18, 18, 18, 255, 18, 255, 255,
+ 18, 18, 18, 18, 18, 18, 18, 255,
+ 255, 255, 18, 255, 255, 255, 255, 18,
+ 18, 18, 18, 18, 18, 255, 18, 255,
+ 18, 18, 18, 18, 18, 18, 18, 18,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 18, 18, 18, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 255, 255, 255, 255, 0,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 20, 20, 255, 20, 255, 255, 20,
+ 20, 255, 20, 255, 255, 20, 255, 255,
+ 255, 255, 255, 255, 20, 20, 20, 20,
+ 255, 20, 20, 20, 20, 20, 20, 20,
+ 255, 20, 20, 20, 255, 20, 255, 20,
+ 255, 255, 20, 20, 255, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 255, 20, 20, 20, 255, 255,
+ 20, 20, 20, 20, 20, 255, 20, 255,
+ 20, 20, 20, 20, 20, 20, 255, 255,
+ 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 255, 255, 20, 20, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 255, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 255, 255, 255,
+ 255, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 255, 255, 255, 255,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 255, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 255, 21, 21,
+ 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 255, 21, 21,
+ 21, 21, 21, 21, 21, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 255, 255, 255, 255, 22, 22,
+ 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 0, 23, 255, 255, 255,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 255, 255, 255, 255, 255, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 255, 255, 255, 255, 255,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 255, 255, 255, 255, 255, 255,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 255, 25, 25, 25, 25, 255, 255,
+ 25, 25, 25, 25, 25, 25, 25, 255,
+ 25, 255, 25, 25, 25, 25, 255, 255,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 255, 25, 25, 25, 25, 255, 255,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 255, 25, 25, 25, 25, 255, 255,
+ 25, 25, 25, 25, 25, 25, 25, 255,
+ 25, 255, 25, 25, 25, 25, 255, 255,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 255,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 255, 25, 25, 25, 25, 255, 255,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 255, 255, 255, 255, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 255, 255, 255,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 255, 255, 255, 255, 255, 255,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 255, 255, 255,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 0, 0, 0, 29, 29,
+ 29, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 41, 41, 41, 41, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41, 255, 41, 41,
+ 41, 41, 41, 41, 41, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 0, 0, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 44, 44, 44, 44, 44, 44, 44, 44,
+ 44, 44, 44, 44, 44, 255, 44, 44,
+ 44, 255, 44, 44, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 255, 255,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 255, 255, 255, 255, 255, 255,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 255, 255, 255, 255, 255, 255,
+ 31, 31, 0, 0, 31, 0, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 255,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 255, 255, 255, 255, 255, 255,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 255, 255, 255,
+ 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 255, 255, 255, 255,
+ 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 255, 255, 255, 255,
+ 45, 255, 255, 255, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45,
+ 46, 46, 46, 46, 46, 46, 46, 46,
+ 46, 46, 46, 46, 46, 46, 46, 46,
+ 46, 46, 46, 46, 46, 46, 46, 46,
+ 46, 46, 46, 46, 46, 46, 255, 255,
+ 46, 46, 46, 46, 46, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 55, 55, 55, 55, 55, 55, 55, 55,
+ 55, 55, 55, 55, 55, 55, 55, 55,
+ 55, 55, 55, 55, 55, 55, 55, 55,
+ 55, 55, 55, 55, 55, 55, 55, 55,
+ 55, 55, 55, 55, 55, 55, 55, 55,
+ 55, 55, 255, 255, 255, 255, 255, 255,
+ 55, 55, 55, 55, 55, 55, 55, 55,
+ 55, 55, 55, 55, 55, 55, 55, 55,
+ 55, 55, 55, 55, 55, 55, 55, 55,
+ 55, 55, 255, 255, 255, 255, 255, 255,
+ 55, 55, 55, 55, 55, 55, 55, 55,
+ 55, 55, 255, 255, 255, 255, 55, 55,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30,
+ 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 255, 255, 53, 53,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 61, 61, 255, 255, 255, 255,
+ 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 61, 61, 61, 255, 255, 255,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 255, 255, 255, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67,
+ 255, 255, 255, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 255, 255, 255, 67, 67, 67,
+ 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68,
+ 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, 2, 2,
+ 2, 2, 2, 3, 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, 2, 2, 2,
+ 2, 2, 1, 1, 1, 1, 2, 2,
+ 2, 2, 2, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 3, 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, 2,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 40, 40,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 255, 255,
+ 2, 2, 2, 2, 2, 2, 255, 255,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 255, 255,
+ 2, 2, 2, 2, 2, 2, 255, 255,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 255, 2, 255, 2, 255, 2, 255, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 255, 255,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 255, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 255, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 255, 255, 2, 2,
+ 2, 2, 2, 2, 255, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 255, 255, 2, 2, 2, 255, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 40, 40, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 0, 0, 0, 0, 0, 0,
+ 0, 1, 255, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255,
+ 1, 1, 1, 1, 1, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 0,
+ 0, 0, 1, 1, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 0,
+ 255, 255, 255, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 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, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 255, 255, 255,
+ 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 0, 0, 0, 0, 255, 0, 0,
+ 0, 0, 255, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 255, 0, 255, 0,
+ 0, 0, 0, 255, 255, 255, 0, 255,
+ 0, 0, 0, 0, 0, 0, 0, 255,
+ 255, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 255, 0, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 255, 255, 255,
+ 0, 0, 0, 0, 0, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 255,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 255,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 255, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 255, 255,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 54, 54, 54, 54, 54, 54, 54,
+ 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 57,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 25, 25, 25, 25, 25, 25, 25, 255,
+ 25, 25, 25, 25, 25, 25, 25, 255,
+ 25, 25, 25, 25, 25, 25, 25, 255,
+ 25, 25, 25, 25, 25, 25, 25, 255,
+ 25, 25, 25, 25, 25, 25, 25, 255,
+ 25, 25, 25, 25, 25, 25, 25, 255,
+ 25, 25, 25, 25, 25, 25, 25, 255,
+ 25, 25, 25, 25, 25, 25, 25, 255,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 255, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 35, 0, 35,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 40, 40, 40, 40, 40, 40,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 35, 35, 35, 35, 0, 0, 0, 0,
+ 255, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 255,
+ 255, 40, 40, 0, 0, 32, 32, 32,
+ 0, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 0, 0, 33, 33, 33,
+ 255, 255, 255, 255, 255, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 255, 255,
+ 255, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 255,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 255, 255, 255,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 255, 255, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 255, 255, 255, 255,
+ 255, 255, 255, 255, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 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,
+ 0, 0, 0, 1, 1, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 1, 1, 1, 1, 1,
+ 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71,
+ 72, 72, 72, 72, 72, 72, 72, 72,
+ 72, 72, 72, 72, 72, 72, 72, 72,
+ 72, 72, 72, 72, 72, 72, 72, 72,
+ 72, 72, 72, 72, 72, 72, 72, 72,
+ 72, 72, 72, 72, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 72,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 255, 255,
+ 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 255, 255, 76, 76, 76, 76,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 255, 255,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 255, 255, 255, 255, 255,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 1, 1, 1, 1, 1, 1, 1, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 4, 4, 4, 4, 4,
+ 255, 255, 255, 255, 255, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 255,
+ 5, 5, 5, 5, 5, 255, 5, 255,
+ 5, 5, 255, 5, 5, 255, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 255, 255, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 0, 255, 255,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 255, 255, 255, 255, 255, 255,
+ 40, 40, 40, 40, 40, 40, 40, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 255, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255,
+ 0, 0, 0, 0, 255, 255, 255, 255,
+ 6, 6, 6, 6, 6, 255, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 255, 255, 0,
+ 255, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 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, 0, 0, 0, 0, 0,
+ 0, 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, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 0, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 0, 0,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 255,
+ 255, 255, 24, 24, 24, 24, 24, 24,
+ 255, 255, 24, 24, 24, 24, 24, 24,
+ 255, 255, 24, 24, 24, 24, 24, 24,
+ 255, 255, 24, 24, 24, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 255,
+ 0, 0, 0, 0, 0, 0, 0, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 0, 0, 0, 0, 0, 255, 255,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 255, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 255,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 255, 47, 47, 255, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 255, 255,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 47, 47, 47,
+ 47, 47, 47, 255, 255, 255, 255, 255,
+ 0, 0, 0, 255, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 255, 255, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 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, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 40, 255, 255,
+ 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 255, 255, 255,
+ 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 37, 37, 37, 37, 37, 37, 37, 37,
+ 37, 37, 37, 37, 37, 37, 37, 37,
+ 37, 37, 37, 37, 37, 37, 37, 37,
+ 37, 37, 37, 37, 37, 37, 37, 255,
+ 37, 37, 37, 37, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 38, 38, 38, 38, 38, 38, 38, 38,
+ 38, 38, 38, 38, 38, 38, 38, 38,
+ 38, 38, 38, 38, 38, 38, 38, 38,
+ 38, 38, 38, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 255, 48,
+ 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 59, 59, 255, 255, 255, 255,
+ 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 59, 59, 59, 59, 59, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39,
+ 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 255, 255,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 51, 51, 51, 51, 51, 51, 255, 255,
+ 51, 255, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 255, 51,
+ 51, 255, 255, 255, 51, 255, 255, 51,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 255, 255, 255, 255, 255, 63,
+ 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 255, 255, 255, 255, 255, 75,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 60, 60, 60, 60, 255, 60, 60, 255,
+ 255, 255, 255, 255, 60, 60, 60, 60,
+ 60, 60, 60, 60, 255, 60, 60, 60,
+ 255, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 255, 255, 255, 255,
+ 60, 60, 60, 255, 255, 255, 255, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 62, 62, 62, 62, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255,
+ 255, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 40,
+ 40, 40, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 40, 40, 40, 40, 40,
+ 40, 40, 40, 0, 0, 40, 40, 40,
+ 40, 40, 40, 40, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 40, 40, 40, 40, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 255, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 255, 0, 0,
+ 255, 255, 0, 255, 255, 0, 0, 255,
+ 255, 0, 0, 0, 0, 255, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 255, 0, 255, 0, 0, 0,
+ 0, 0, 0, 0, 255, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 255, 0,
+ 0, 0, 0, 255, 255, 0, 0, 0,
+ 0, 0, 0, 0, 0, 255, 0, 0,
+ 0, 0, 0, 0, 0, 255, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 255, 0, 0, 0, 0, 255,
+ 0, 0, 0, 0, 0, 255, 0, 255,
+ 255, 255, 0, 0, 0, 0, 0, 0,
+ 0, 255, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 255, 255, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 0, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255
+ }
+};
diff --git a/lib/unictype/scripts_byname.gperf b/lib/unictype/scripts_byname.gperf
new file mode 100644
index 00000000..c3ebfaea
--- /dev/null
+++ b/lib/unictype/scripts_byname.gperf
@@ -0,0 +1,89 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Unicode scripts. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+struct named_script { const char *name; unsigned int index; };
+%struct-type
+%language=ANSI-C
+%define hash-function-name scripts_hash
+%define lookup-function-name uc_script_lookup
+%readonly-tables
+%global-table
+%define word-array-name script_names
+%%
+Common, 0
+Latin, 1
+Greek, 2
+Cyrillic, 3
+Armenian, 4
+Hebrew, 5
+Arabic, 6
+Syriac, 7
+Thaana, 8
+Devanagari, 9
+Bengali, 10
+Gurmukhi, 11
+Gujarati, 12
+Oriya, 13
+Tamil, 14
+Telugu, 15
+Kannada, 16
+Malayalam, 17
+Sinhala, 18
+Thai, 19
+Lao, 20
+Tibetan, 21
+Myanmar, 22
+Georgian, 23
+Hangul, 24
+Ethiopic, 25
+Cherokee, 26
+Canadian_Aboriginal, 27
+Ogham, 28
+Runic, 29
+Khmer, 30
+Mongolian, 31
+Hiragana, 32
+Katakana, 33
+Bopomofo, 34
+Han, 35
+Yi, 36
+Old_Italic, 37
+Gothic, 38
+Deseret, 39
+Inherited, 40
+Tagalog, 41
+Hanunoo, 42
+Buhid, 43
+Tagbanwa, 44
+Limbu, 45
+Tai_Le, 46
+Linear_B, 47
+Ugaritic, 48
+Shavian, 49
+Osmanya, 50
+Cypriot, 51
+Braille, 52
+Buginese, 53
+Coptic, 54
+New_Tai_Lue, 55
+Glagolitic, 56
+Tifinagh, 57
+Syloti_Nagri, 58
+Old_Persian, 59
+Kharoshthi, 60
+Balinese, 61
+Cuneiform, 62
+Phoenician, 63
+Phags_Pa, 64
+Nko, 65
+Sundanese, 66
+Lepcha, 67
+Ol_Chiki, 68
+Vai, 69
+Saurashtra, 70
+Kayah_Li, 71
+Rejang, 72
+Lycian, 73
+Carian, 74
+Lydian, 75
+Cham, 76
diff --git a/lib/unictype/scripts_byname.h b/lib/unictype/scripts_byname.h
new file mode 100644
index 00000000..e7a7667e
--- /dev/null
+++ b/lib/unictype/scripts_byname.h
@@ -0,0 +1,281 @@
+/* ANSI-C code produced by gperf version 3.0.4 */
+/* Command-line: gperf -m 10 ./unictype/scripts_byname.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
+
+#line 4 "./unictype/scripts_byname.gperf"
+struct named_script { const char *name; unsigned int index; };
+
+#define TOTAL_KEYWORDS 77
+#define MIN_WORD_LENGTH 2
+#define MAX_WORD_LENGTH 19
+#define MIN_HASH_VALUE 2
+#define MAX_HASH_VALUE 92
+/* maximum key range = 91, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+scripts_hash (register const char *str, register unsigned int len)
+{
+ static const unsigned char asso_values[] =
+ {
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 53, 14, 3, 29, 27,
+ 93, 25, 0, 25, 93, 24, 7, 36, 28, 8,
+ 49, 93, 54, 7, 11, 64, 32, 93, 93, 0,
+ 93, 93, 93, 93, 93, 57, 93, 3, 52, 59,
+ 29, 39, 52, 22, 42, 39, 24, 93, 6, 20,
+ 0, 33, 17, 93, 0, 32, 22, 2, 28, 26,
+ 93, 31, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93
+ };
+ 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;
+}
+
+static const struct named_script script_names[] =
+ {
+ {""}, {""},
+#line 49 "./unictype/scripts_byname.gperf"
+ {"Yi", 36},
+#line 48 "./unictype/scripts_byname.gperf"
+ {"Han", 35},
+ {""}, {""},
+#line 37 "./unictype/scripts_byname.gperf"
+ {"Hangul", 24},
+#line 55 "./unictype/scripts_byname.gperf"
+ {"Hanunoo", 42},
+#line 45 "./unictype/scripts_byname.gperf"
+ {"Hiragana", 32},
+#line 87 "./unictype/scripts_byname.gperf"
+ {"Carian", 74},
+#line 89 "./unictype/scripts_byname.gperf"
+ {"Cham", 76},
+#line 16 "./unictype/scripts_byname.gperf"
+ {"Cyrillic", 3},
+#line 75 "./unictype/scripts_byname.gperf"
+ {"Cuneiform", 62},
+#line 20 "./unictype/scripts_byname.gperf"
+ {"Syriac", 7},
+#line 31 "./unictype/scripts_byname.gperf"
+ {"Sinhala", 18},
+#line 60 "./unictype/scripts_byname.gperf"
+ {"Linear_B", 47},
+#line 79 "./unictype/scripts_byname.gperf"
+ {"Sundanese", 66},
+#line 62 "./unictype/scripts_byname.gperf"
+ {"Shavian", 49},
+#line 32 "./unictype/scripts_byname.gperf"
+ {"Thai", 19},
+#line 83 "./unictype/scripts_byname.gperf"
+ {"Saurashtra", 70},
+#line 21 "./unictype/scripts_byname.gperf"
+ {"Thaana", 8},
+#line 23 "./unictype/scripts_byname.gperf"
+ {"Bengali", 10},
+#line 40 "./unictype/scripts_byname.gperf"
+ {"Canadian_Aboriginal", 27},
+#line 28 "./unictype/scripts_byname.gperf"
+ {"Telugu", 15},
+#line 65 "./unictype/scripts_byname.gperf"
+ {"Braille", 52},
+#line 71 "./unictype/scripts_byname.gperf"
+ {"Syloti_Nagri", 58},
+#line 67 "./unictype/scripts_byname.gperf"
+ {"Coptic", 54},
+#line 64 "./unictype/scripts_byname.gperf"
+ {"Cypriot", 51},
+#line 74 "./unictype/scripts_byname.gperf"
+ {"Balinese", 61},
+#line 13 "./unictype/scripts_byname.gperf"
+ {"Common", 0},
+#line 80 "./unictype/scripts_byname.gperf"
+ {"Lepcha", 67},
+#line 29 "./unictype/scripts_byname.gperf"
+ {"Kannada", 16},
+#line 58 "./unictype/scripts_byname.gperf"
+ {"Limbu", 45},
+#line 24 "./unictype/scripts_byname.gperf"
+ {"Gurmukhi", 11},
+#line 14 "./unictype/scripts_byname.gperf"
+ {"Latin", 1},
+#line 63 "./unictype/scripts_byname.gperf"
+ {"Osmanya", 50},
+#line 27 "./unictype/scripts_byname.gperf"
+ {"Tamil", 14},
+#line 73 "./unictype/scripts_byname.gperf"
+ {"Kharoshthi", 60},
+#line 69 "./unictype/scripts_byname.gperf"
+ {"Glagolitic", 56},
+#line 47 "./unictype/scripts_byname.gperf"
+ {"Bopomofo", 34},
+#line 54 "./unictype/scripts_byname.gperf"
+ {"Tagalog", 41},
+#line 57 "./unictype/scripts_byname.gperf"
+ {"Tagbanwa", 44},
+#line 88 "./unictype/scripts_byname.gperf"
+ {"Lydian", 75},
+#line 33 "./unictype/scripts_byname.gperf"
+ {"Lao", 20},
+#line 66 "./unictype/scripts_byname.gperf"
+ {"Buginese", 53},
+#line 44 "./unictype/scripts_byname.gperf"
+ {"Mongolian", 31},
+#line 35 "./unictype/scripts_byname.gperf"
+ {"Myanmar", 22},
+#line 50 "./unictype/scripts_byname.gperf"
+ {"Old_Italic", 37},
+#line 72 "./unictype/scripts_byname.gperf"
+ {"Old_Persian", 59},
+#line 43 "./unictype/scripts_byname.gperf"
+ {"Khmer", 30},
+#line 39 "./unictype/scripts_byname.gperf"
+ {"Cherokee", 26},
+#line 30 "./unictype/scripts_byname.gperf"
+ {"Malayalam", 17},
+#line 26 "./unictype/scripts_byname.gperf"
+ {"Oriya", 13},
+#line 51 "./unictype/scripts_byname.gperf"
+ {"Gothic", 38},
+#line 46 "./unictype/scripts_byname.gperf"
+ {"Katakana", 33},
+#line 41 "./unictype/scripts_byname.gperf"
+ {"Ogham", 28},
+#line 59 "./unictype/scripts_byname.gperf"
+ {"Tai_Le", 46},
+#line 25 "./unictype/scripts_byname.gperf"
+ {"Gujarati", 12},
+#line 18 "./unictype/scripts_byname.gperf"
+ {"Hebrew", 5},
+#line 42 "./unictype/scripts_byname.gperf"
+ {"Runic", 29},
+#line 77 "./unictype/scripts_byname.gperf"
+ {"Phags_Pa", 64},
+#line 56 "./unictype/scripts_byname.gperf"
+ {"Buhid", 43},
+#line 19 "./unictype/scripts_byname.gperf"
+ {"Arabic", 6},
+#line 84 "./unictype/scripts_byname.gperf"
+ {"Kayah_Li", 71},
+#line 78 "./unictype/scripts_byname.gperf"
+ {"Nko", 65},
+#line 68 "./unictype/scripts_byname.gperf"
+ {"New_Tai_Lue", 55},
+#line 36 "./unictype/scripts_byname.gperf"
+ {"Georgian", 23},
+#line 22 "./unictype/scripts_byname.gperf"
+ {"Devanagari", 9},
+#line 52 "./unictype/scripts_byname.gperf"
+ {"Deseret", 39},
+#line 15 "./unictype/scripts_byname.gperf"
+ {"Greek", 2},
+#line 34 "./unictype/scripts_byname.gperf"
+ {"Tibetan", 21},
+#line 70 "./unictype/scripts_byname.gperf"
+ {"Tifinagh", 57},
+#line 86 "./unictype/scripts_byname.gperf"
+ {"Lycian", 73},
+#line 81 "./unictype/scripts_byname.gperf"
+ {"Ol_Chiki", 68},
+#line 82 "./unictype/scripts_byname.gperf"
+ {"Vai", 69},
+#line 61 "./unictype/scripts_byname.gperf"
+ {"Ugaritic", 48},
+#line 53 "./unictype/scripts_byname.gperf"
+ {"Inherited", 40},
+#line 38 "./unictype/scripts_byname.gperf"
+ {"Ethiopic", 25},
+ {""}, {""}, {""},
+#line 17 "./unictype/scripts_byname.gperf"
+ {"Armenian", 4},
+ {""}, {""},
+#line 85 "./unictype/scripts_byname.gperf"
+ {"Rejang", 72},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 76 "./unictype/scripts_byname.gperf"
+ {"Phoenician", 63}
+ };
+
+#ifdef __GNUC__
+__inline
+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+const struct named_script *
+uc_script_lookup (register const char *str, register unsigned int len)
+{
+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+ {
+ register int key = scripts_hash (str, len);
+
+ if (key <= MAX_HASH_VALUE && key >= 0)
+ {
+ register const char *s = script_names[key].name;
+
+ if (*str == *s && !strcmp (str + 1, s + 1))
+ return &script_names[key];
+ }
+ }
+ return 0;
+}
diff --git a/lib/unictype/sy_c_ident.c b/lib/unictype/sy_c_ident.c
new file mode 100644
index 00000000..c6033c86
--- /dev/null
+++ b/lib/unictype/sy_c_ident.c
@@ -0,0 +1,31 @@
+/* Syntax properties of Unicode characters.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "sy_c_ident.h"
+#define TABLE u_c_ident
+#include "identsyntaxmap.h"
+
+int
+uc_c_ident_category (ucs4_t uc)
+{
+ return identsyntax_lookup (uc);
+}
diff --git a/lib/unictype/sy_c_ident.h b/lib/unictype/sy_c_ident.h
new file mode 100644
index 00000000..74d96edb
--- /dev/null
+++ b/lib/unictype/sy_c_ident.h
@@ -0,0 +1,140 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Language syntax properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define identsyntax_header_0 12
+#define identsyntax_header_1 14
+#define identsyntax_header_2 7
+#define identsyntax_header_3 31
+#define identsyntax_header_4 127
+static const
+struct
+ {
+ int level1[14];
+ short level2[9 << 5];
+ unsigned short level3[39 * 16];
+ }
+u_c_ident =
+{
+ {
+ 0, 32, 64, 96, 128, 160, 160, 160,
+ 160, 192, 224, 160, 160, 256
+ },
+ {
+ 0, 128, 256, 384, 512, 640, 768, 896,
+ 1024, 1152, 1280, 1408, 1536, 1664, -1, -1,
+ -1, -1, 1792, 1920, 2048, 2176, 2304, 2432,
+ 2560, 2688, 2816, -1, 2944, 3072, 3200, 3328,
+ -1, 3456, -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, 256, 3584, 3712, 3840,
+ 3968, -1, 4096, 4224, -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,
+ 4352, 4480, 4608, -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, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 4736,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 4864,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1
+ },
+ {
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0x5555, 0xaaa5,
+ 0x0002, 0x0000, 0x0000, 0x2a80, 0x0002, 0x0000, 0x0000, 0xaa80,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaa8a, 0x22aa, 0xaa8a,
+ 0x0000, 0x0000, 0x8000, 0x0000, 0x0000, 0x0000, 0x8000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa000, 0x000a,
+ 0x0000, 0x0000, 0x0000, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaaa8, 0x0000, 0x0228,
+ 0xaaa0, 0xaaaa, 0xaaa0, 0xaaaa, 0xa800, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaa8a,
+ 0x8aaa, 0x0880, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8000, 0x8000, 0x888a, 0x0008, 0x0000, 0xaa00, 0xaaaa,
+ 0x0002, 0x0800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0002, 0x0800, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xaaa0, 0xaaaa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2800, 0xa828, 0x0000, 0x0000, 0x0000, 0x0a00, 0xa000, 0xaaa0,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0x0002, 0x0000,
+ 0x0000, 0x0000, 0x8000, 0xaaa2, 0x0002, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0x0000, 0x2020,
+ 0xaa82, 0xaaaa, 0x0000, 0x0000, 0x0000, 0xaa80, 0xaa80, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0x0002, 0x0000, 0x0000, 0xaa80,
+ 0x0000, 0x0000, 0xaa80, 0xaaaa, 0x0000, 0xaaa0, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x800a,
+ 0x0000, 0x8000, 0x0000, 0xa800, 0x02aa, 0xa008, 0x0000, 0xaaa0,
+ 0x0202, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x02a0,
+ 0x0000, 0xa000, 0xaa80, 0x0000, 0x0a00, 0x0000, 0xaaaa, 0xaaaa,
+ 0x0202, 0x2800, 0x0028, 0x0000, 0x0000, 0x0008, 0x0a88, 0x0aa0,
+ 0x2800, 0xa028, 0xaaaa, 0x20aa, 0x0a00, 0x0000, 0xaaa0, 0xaaaa,
+ 0x028a, 0x2a80, 0x0028, 0x0000, 0x0000, 0x0008, 0x8208, 0x0aa0,
+ 0x2a80, 0xa028, 0xaaaa, 0x8802, 0x0aaa, 0x0000, 0xa8aa, 0xaaaa,
+ 0x0202, 0x2200, 0x0020, 0x0000, 0x0000, 0x0008, 0x0208, 0x02a0,
+ 0x2000, 0xa020, 0xaaa8, 0xaaaa, 0x0aa8, 0x0000, 0xaaaa, 0xaaaa,
+ 0x0202, 0x2800, 0x0028, 0x0000, 0x0000, 0x0008, 0x0a08, 0x02a0,
+ 0x2a00, 0xa028, 0xaaaa, 0x20aa, 0x0aa0, 0x0000, 0xaaaa, 0xaaaa,
+ 0x020a, 0x0a80, 0xa008, 0x0882, 0xa82a, 0x0a80, 0x2000, 0x0aa0,
+ 0x0a80, 0xa008, 0xaaaa, 0xaaaa, 0x2aaa, 0x0000, 0xaaaa, 0xaaaa,
+ 0x0202, 0x0800, 0x0008, 0x0000, 0x0000, 0x0008, 0x0200, 0x0aa0,
+ 0x0800, 0xa008, 0xaaaa, 0xaaaa, 0x0aa0, 0x0000, 0xaaaa, 0xaaaa,
+ 0x020a, 0x0800, 0x0008, 0x0000, 0x0000, 0x0008, 0x0200, 0x0aa0,
+ 0x0800, 0xa008, 0xaaaa, 0x8aaa, 0x0aa0, 0x0000, 0xaaaa, 0xaaaa,
+ 0x020a, 0x0800, 0x0008, 0x0000, 0x0000, 0x0008, 0x0000, 0x0aa0,
+ 0x0a00, 0xa008, 0xaaaa, 0xaaaa, 0x0aa0, 0x0000, 0xaaaa, 0xaaaa,
+ 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaa80,
+ 0x0000, 0x0000, 0x0000, 0xaa00, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x2882, 0xa288, 0x00aa, 0x0002, 0x2202, 0x820a, 0x0000, 0xa020,
+ 0x8800, 0xa000, 0x0000, 0xa0a0, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaa8, 0xaaaa, 0xaaaa, 0xaaa0, 0x0000, 0x0000, 0x2200, 0x0aa2,
+ 0x0000, 0x0002, 0x0000, 0x0000, 0x0000, 0xaaa0, 0x0002, 0x0000,
+ 0x0800, 0xaa00, 0x2000, 0x0002, 0x0000, 0xa000, 0x0002, 0xaaa2,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xa000, 0xaaaa, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0xaa00, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaaa0,
+ 0x0000, 0x0000, 0xa000, 0xa000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xa000, 0xa000, 0x0000, 0x2222, 0x0000, 0x0000, 0x0000, 0xa000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0800, 0x8800,
+ 0x080a, 0xa800, 0x0a00, 0xaa00, 0x0000, 0xa800, 0x080a, 0xa800,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0x2aaa,
+ 0xaaa8, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0x2aaa,
+ 0x2a8a, 0x000a, 0xa200, 0xa000, 0x88aa, 0x0008, 0x0020, 0xaaa8,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xaa80, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x02aa, 0xaaaa, 0xaaaa, 0xaaaa, 0x0002, 0xaaa0, 0xaaaa, 0xaaaa,
+ 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0xaa00, 0xa82a, 0x0002, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0xa82a,
+ 0x02aa, 0x0000, 0x0000, 0x0000, 0x0000, 0xa800, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa000, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xaa00, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa
+ }
+};
diff --git a/lib/unictype/sy_c_whitespace.c b/lib/unictype/sy_c_whitespace.c
new file mode 100644
index 00000000..6d996a6f
--- /dev/null
+++ b/lib/unictype/sy_c_whitespace.c
@@ -0,0 +1,27 @@
+/* Syntax properties of Unicode characters.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+bool
+uc_is_c_whitespace (ucs4_t uc)
+{
+ return (uc == ' ' || (uc <= 0x000D && uc >= 0x0009));
+}
diff --git a/lib/unictype/sy_java_ident.c b/lib/unictype/sy_java_ident.c
new file mode 100644
index 00000000..b0770d6e
--- /dev/null
+++ b/lib/unictype/sy_java_ident.c
@@ -0,0 +1,31 @@
+/* Syntax properties of Unicode characters.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include "sy_java_ident.h"
+#define TABLE u_java_ident
+#include "identsyntaxmap.h"
+
+int
+uc_java_ident_category (ucs4_t uc)
+{
+ return identsyntax_lookup (uc);
+}
diff --git a/lib/unictype/sy_java_ident.h b/lib/unictype/sy_java_ident.h
new file mode 100644
index 00000000..bad2b036
--- /dev/null
+++ b/lib/unictype/sy_java_ident.h
@@ -0,0 +1,343 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Language syntax properties of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+#define identsyntax_header_0 12
+#define identsyntax_header_1 225
+#define identsyntax_header_2 7
+#define identsyntax_header_3 31
+#define identsyntax_header_4 127
+static const
+struct
+ {
+ int level1[225];
+ short level2[16 << 5];
+ unsigned short level3[113 * 16];
+ }
+u_java_ident =
+{
+ {
+ 0, 32, 64, 96, 128, 160, 160, 160,
+ 160, 192, 224, 160, 160, 256, -1, 288,
+ 320, -1, 352, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 384, -1, -1,
+ 160, 160, 160, 160, 160, 160, 160, 160,
+ 160, 160, 416, -1, -1, -1, -1, 448,
+ -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, -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,
+ 480
+ },
+ {
+ 0, 128, 256, 256, 256, 384, 512, 640,
+ 256, 768, 896, 1024, 1152, 1280, 1408, 1536,
+ -1, -1, 1664, 1792, 1920, 2048, 2176, 2304,
+ 2432, 2560, 2688, 2816, 2944, 3072, 3200, 3328,
+ 3456, 3584, 3712, 3840, 3968, 4096, 4224, 4352,
+ 4480, 256, 256, 256, 4608, 4736, 4864, 4992,
+ 5120, 5248, 5376, 5504, 5632, -1, 5760, 5888,
+ 6016, -1, 256, 6144, 256, 256, 6272, 6400,
+ 6528, 6656, 6784, 6912, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 7040, 7168, 7296, 7424, 7552, -1, -1, -1,
+ 7680, 7808, 7936, 8064, -1, -1, -1, -1,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 8192, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 8320,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 8448, 256, 256, 8576, 8704, 8832, 8960,
+ 9088, 9216, 9344, -1, 9472, -1, -1, -1,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 9600,
+ -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, 256, 256, 9728, 9856, 9984, 10112,
+ 256, 256, 10240, 10368, 10496, 10624, 10752, 10880,
+ 11008, 11136, 11264, 11392, -1, 11520, 11648, 11776,
+ 256, 11904, -1, -1, -1, -1, -1, -1,
+ 12032, -1, 12160, -1, 12288, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 256, 256, 256, 256, 256, 256, 12416, -1,
+ 12544, -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, 12672, 12800, 12928, -1, -1, -1,
+ 13056, 13184, 13312, 256, 256, 13440, 13568, 13696,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 13824, -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,
+ 256, 256, 256, 256, 13952, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 14080, -1, 14208, 14336, -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
+ },
+ {
+ 0xffff, 0xfaab, 0xffff, 0xaaff, 0xa8aa, 0xaaaa, 0x5555, 0xaaa5,
+ 0x0002, 0x0000, 0x0000, 0x2a80, 0x0002, 0x0000, 0x0000, 0xea80,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xa00a, 0xae8a, 0xa2aa, 0xaa8a,
+ 0x0000, 0x0000, 0x8000, 0x0000, 0x0000, 0x0000, 0x8000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0aa0, 0x0000, 0xaaa0, 0xaaaa, 0xa800, 0x88aa, 0xaaaa, 0xaaaa,
+ 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555,
+ 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x0800, 0xa00a,
+ 0x8aaa, 0x0880, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2000, 0x0000,
+ 0x5560, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xaa00, 0xaaaa, 0x0002, 0x0000,
+ 0x0000, 0x0000, 0x8000, 0xaaa2, 0x0002, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xaaaa, 0x5556, 0x5555, 0x5555, 0x5555, 0x5555, 0x6555,
+ 0x6596, 0xaaaa, 0x0000, 0x0000, 0x0000, 0xaa80, 0xaa80, 0xaaaa,
+ 0xaaff, 0xaa2a, 0x5555, 0xaa95, 0x0002, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5540, 0x5555, 0x9555, 0x5555, 0x0aa5, 0x0001, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5200, 0x6d55, 0x4155, 0x0559, 0x5555, 0x2805,
+ 0xaaaa, 0xeaaa, 0x0004, 0x0000, 0x0000, 0x0000, 0x5555, 0x5555,
+ 0x5555, 0x0295, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5000, 0x5555, 0xaaa1, 0xaaaa,
+ 0x5555, 0x0005, 0x0000, 0x0000, 0x0000, 0x5540, 0xa055, 0xaa8a,
+ 0x0056, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x51a0,
+ 0x5555, 0xa555, 0xa954, 0x0000, 0x5a50, 0x5555, 0xaa82, 0x002a,
+ 0x0256, 0x2800, 0x0028, 0x0000, 0x0000, 0x0008, 0x0a88, 0x51a0,
+ 0x6955, 0x8569, 0x6aaa, 0x20aa, 0x5a50, 0x5555, 0xaa00, 0xaaaa,
+ 0x0256, 0x2a80, 0x0028, 0x0000, 0x0000, 0x0008, 0x8208, 0x59a0,
+ 0x6a95, 0xa569, 0xaaa6, 0x8802, 0x5aaa, 0x5555, 0xa405, 0xaaaa,
+ 0x0256, 0x2000, 0x0020, 0x0000, 0x0000, 0x0008, 0x0208, 0x51a0,
+ 0x6555, 0xa565, 0xaaa8, 0xaaaa, 0x5a50, 0x5555, 0xaaa2, 0xaaaa,
+ 0x0256, 0x2800, 0x0028, 0x0000, 0x0000, 0x0008, 0x0208, 0x51a0,
+ 0x6955, 0xa569, 0x5aaa, 0x20aa, 0x5a50, 0x5555, 0xaaa2, 0xaaaa,
+ 0x021a, 0x0a80, 0xa008, 0x0882, 0xa82a, 0x0a80, 0x0000, 0x5aa0,
+ 0x5a95, 0xa559, 0x6aa8, 0xaaaa, 0x5aaa, 0x5555, 0xaaaa, 0xaaa2,
+ 0x0256, 0x0800, 0x0008, 0x0000, 0x0000, 0x0008, 0x0200, 0x52a0,
+ 0x5955, 0xa559, 0x96aa, 0xaaa0, 0x5a50, 0x5555, 0xaaaa, 0xaaaa,
+ 0x025a, 0x0800, 0x0008, 0x0000, 0x0000, 0x0008, 0x0200, 0x51a0,
+ 0x5955, 0xa559, 0x96aa, 0x8aaa, 0x5a50, 0x5555, 0xaaaa, 0xaaaa,
+ 0x025a, 0x0800, 0x0008, 0x0000, 0x0000, 0x0008, 0x0000, 0x52a0,
+ 0x5955, 0xa559, 0x6aaa, 0xaaaa, 0x5a50, 0x5555, 0xaaaa, 0x000a,
+ 0x025a, 0x0000, 0x8000, 0x000a, 0x0000, 0x0000, 0x0020, 0xa200,
+ 0x8000, 0x6a9a, 0x9955, 0x5555, 0xaaaa, 0xaaaa, 0xaa5a, 0xaaaa,
+ 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5504, 0x2a95,
+ 0x4000, 0x9555, 0x5555, 0xaaa5, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x2882, 0xa288, 0x00aa, 0x0002, 0x2202, 0x020a, 0x5504, 0xa165,
+ 0x8800, 0xa555, 0x5555, 0xa0a5, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaa8, 0xaaaa, 0xaaaa, 0xaaa5, 0x5555, 0xaaa5, 0x66aa, 0x5aa6,
+ 0x0000, 0x0002, 0x0000, 0x0000, 0x0000, 0xa800, 0x5556, 0x5555,
+ 0x5955, 0xaa00, 0x5555, 0x5556, 0x5555, 0x5555, 0x5555, 0xa955,
+ 0x9aaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5540, 0x5555, 0x1555,
+ 0x5555, 0xaaa5, 0x5000, 0x5005, 0x4151, 0x0555, 0x0154, 0x0000,
+ 0x5550, 0x4555, 0x5555, 0xaaa5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xa000, 0xaaaa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa880,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2aa0, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xaa80, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaaa0,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xa008, 0x8000, 0xa008, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xa008, 0x0000, 0x0000, 0x0000, 0x0000, 0xa008, 0x8000,
+ 0xa008, 0x0000, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0xa008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6a80, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0xaaaa, 0xaaaa, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa800, 0xaaaa,
+ 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2800, 0x8000, 0xaaaa,
+ 0x0002, 0x0000, 0x0000, 0xaa80, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a80, 0xaaa8, 0xaaaa,
+ 0x0000, 0x0800, 0xa950, 0xaaaa, 0x0000, 0x0000, 0xa950, 0xaaaa,
+ 0x0000, 0x0000, 0xaa50, 0xaaaa, 0x0000, 0x0800, 0xaa58, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f00, 0x5555,
+ 0x5555, 0x5555, 0x2a55, 0xa42a, 0x5555, 0xaaa5, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xa56a, 0x5555, 0xaaa5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaa84, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0xa800, 0x5555, 0xaa55, 0x5555, 0xaa55,
+ 0x5aaa, 0x5555, 0x0000, 0x0000, 0x0000, 0xa000, 0xa800, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaaa0, 0x5555, 0x5555,
+ 0x0001, 0xaaa5, 0x5555, 0xaaa5, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x4000, 0xaa55, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0155, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5500, 0x5555,
+ 0x0155, 0xaa00, 0x5555, 0xaaa5, 0xaaaa, 0x556a, 0xaa55, 0xaaaa,
+ 0x0015, 0x0000, 0x0000, 0x0000, 0x5554, 0x0a95, 0x5555, 0xaaa5,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5500, 0x5555, 0x5555, 0xaaaa,
+ 0x5555, 0x02a5, 0x5555, 0x0005, 0x0000, 0x0000, 0x0000, 0xa000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5555, 0x5555, 0x5555, 0x5555, 0x9555, 0xaaaa, 0xaaaa, 0x5aaa,
+ 0x0000, 0x0000, 0xa000, 0xa000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xa000, 0xa000, 0x0000, 0x2222, 0x0000, 0x0000, 0x0000, 0xa000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0800, 0x8800,
+ 0x080a, 0xa800, 0x0a00, 0xaa00, 0x0000, 0xa800, 0x080a, 0xa800,
+ 0xaaaa, 0xffea, 0xaaaa, 0xaaaa, 0xaaaa, 0xbffa, 0xaaaa, 0x2aaa,
+ 0xaaa8, 0xaaaa, 0xa8aa, 0xaaaa, 0xabff, 0xfffa, 0xaaa2, 0x2aaa,
+ 0xaaaa, 0xaaaa, 0xa800, 0xaaaa, 0x0000, 0x0000, 0xa000, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0x5555, 0xa955, 0x56a6, 0x5555, 0xaaa9, 0xaaaa,
+ 0x2a8a, 0x000a, 0xa200, 0xa002, 0x88aa, 0x2008, 0x0000, 0x00a0,
+ 0x02aa, 0x8aa0, 0xaaaa, 0xaaaa, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xaaa8, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x8000, 0x0000, 0x0000, 0x0002, 0xa000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa800, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa000, 0xaaaa, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa000, 0x2aaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x8000, 0xaaaa, 0x8000, 0x8000, 0x8000, 0x8000,
+ 0x8000, 0x8000, 0x8000, 0x8000, 0x5555, 0x5555, 0x5555, 0x5555,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0x2aaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x02aa, 0xaaaa, 0xaaaa, 0xaaaa, 0x0002, 0x5550, 0xa002, 0xa800,
+ 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x8000, 0x0296, 0x0002, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0080,
+ 0x02aa, 0x0000, 0x0000, 0x0000, 0x0000, 0xa000, 0x0002, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x8000, 0xaaaa, 0xaaaa, 0x0000, 0x0000, 0x0000, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa000, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xaa00, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0xa800, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0xa800, 0x0000, 0x0000, 0x5555, 0xaa05, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x4000, 0xaaaa, 0x25aa,
+ 0x0000, 0x0000, 0x0000, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0x2aaa, 0x0000, 0x000a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xa828, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0x002a,
+ 0x1010, 0x0040, 0x0000, 0x0000, 0x5540, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaa00, 0xaaaa,
+ 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5500, 0x5555,
+ 0xa955, 0xaaaa, 0x5555, 0xaaa5, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x5555, 0x0005, 0x0000, 0x0000, 0x5000, 0xa555, 0x0000, 0x0000,
+ 0x4000, 0x5555, 0xaa55, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5554, 0x9555, 0xaaaa,
+ 0x0040, 0xa500, 0x5555, 0xaaa5, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xaa00, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaa80, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xaaa0, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x8000, 0xaaaa, 0x002a, 0x12aa, 0x0000, 0x0008, 0x8000, 0x8800,
+ 0x0820, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaaa0, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0x002a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa000,
+ 0xaaaa, 0xaaaa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0x0000, 0xa800,
+ 0x5555, 0x5555, 0xaaaa, 0xaaaa, 0x9555, 0xaaaa, 0xa82a, 0xaaaa,
+ 0xaaaa, 0x02aa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaa2, 0x0800, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe800,
+ 0xa8aa, 0xaaaa, 0x5555, 0xaaa5, 0x0002, 0x0000, 0x0000, 0x2a80,
+ 0x0002, 0x0000, 0x0000, 0xaa80, 0x0aaa, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000,
+ 0x000a, 0x000a, 0x000a, 0xa80a, 0x82a0, 0xaaaa, 0xaaaa, 0xaafe,
+ 0x0000, 0x0200, 0x0000, 0x0000, 0x8000, 0x0000, 0x0000, 0x2080,
+ 0x0000, 0xa000, 0x0000, 0xa000, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaa80,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa800, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xa6aa,
+ 0x0000, 0x0000, 0x0000, 0xa800, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0xaaa8, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x8000, 0xaaaa, 0xaaaa, 0x0000, 0x0000,
+ 0x0000, 0xaa80, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0xa000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xaa00, 0x0000, 0xa002, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0xa000, 0x5555, 0xaaa5, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xa000, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x2000, 0x28a8,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0xa000, 0xaaaa, 0x0000, 0x0000, 0x0000, 0xaaa0,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x9654, 0x55aa, 0x0200, 0x0002, 0x0000, 0x0000, 0xaa00, 0x6a95,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xaa80, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0x56aa, 0x56a5, 0xffd5, 0x557f,
+ 0x5695, 0xaa55, 0xaaaa, 0xaaaa, 0xaaaa, 0xa55a, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xa95a, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0800, 0x828a, 0x0802, 0x0000, 0x0220,
+ 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2000, 0x0280, 0x0800, 0x0800, 0x0000, 0x0000, 0x0000, 0x8020,
+ 0x8800, 0x000a, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa000, 0x0000, 0x0000, 0x0000,
+ 0x0008, 0x0000, 0x0000, 0x0080, 0x0000, 0x0000, 0x0000, 0x0080,
+ 0x0000, 0x0000, 0x0800, 0x0000, 0x0000, 0x0000, 0x0800, 0x0000,
+ 0x0000, 0x8000, 0x0000, 0x0000, 0x0000, 0x8000, 0x0000, 0x0000,
+ 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, 0x0008, 0x0000, 0x0000,
+ 0x0080, 0x5a00, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x8000, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x0000, 0x0000, 0x0000, 0xa000, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0xaaae, 0xaaaa, 0xaaaa, 0xaaaa, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555,
+ 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555,
+ 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555,
+ 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0xaaaa, 0xaaaa
+ }
+};
diff --git a/lib/unictype/sy_java_whitespace.c b/lib/unictype/sy_java_whitespace.c
new file mode 100644
index 00000000..4b56f3e3
--- /dev/null
+++ b/lib/unictype/sy_java_whitespace.c
@@ -0,0 +1,27 @@
+/* Syntax properties of Unicode characters.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+bool
+uc_is_java_whitespace (ucs4_t uc)
+{
+ return (uc == ' ' || (uc <= 0x000D && uc >= 0x0009 && uc != 0x000B));
+}
diff --git a/lib/unilbrk.h b/lib/unilbrk.h
new file mode 100644
index 00000000..1f5e2623
--- /dev/null
+++ b/lib/unilbrk.h
@@ -0,0 +1,110 @@
+/* Line breaking of Unicode strings.
+ Copyright (C) 2001-2003, 2005-2008 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _UNILBRK_H
+#define _UNILBRK_H
+
+/* Get size_t. */
+#include <stddef.h>
+
+#include "unitypes.h"
+
+/* Get locale_charset() declaration. */
+#include <unistring/localcharset.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* These functions are locale dependent. The encoding argument identifies
+ the encoding (e.g. "ISO-8859-2" for Polish). */
+
+
+/* Line breaking. */
+
+enum
+{
+ UC_BREAK_UNDEFINED,
+ UC_BREAK_PROHIBITED,
+ UC_BREAK_POSSIBLE,
+ UC_BREAK_MANDATORY,
+ UC_BREAK_HYPHENATION
+};
+
+/* Determine the line break points in S, and store the result at p[0..n-1].
+ p[i] = UC_BREAK_MANDATORY means that s[i] is a line break character.
+ p[i] = UC_BREAK_POSSIBLE means that a line break may be inserted between
+ s[i-1] and s[i].
+ p[i] = UC_BREAK_HYPHENATION means that a hyphen and a line break may be
+ inserted between s[i-1] and s[i]. But beware of language dependent
+ hyphenation rules.
+ p[i] = UC_BREAK_PROHIBITED means that s[i-1] and s[i] must not be separated.
+ */
+extern void
+ u8_possible_linebreaks (const uint8_t *s, size_t n,
+ const char *encoding, char *p);
+extern void
+ u16_possible_linebreaks (const uint16_t *s, size_t n,
+ const char *encoding, char *p);
+extern void
+ u32_possible_linebreaks (const uint32_t *s, size_t n,
+ const char *encoding, char *p);
+extern void
+ ulc_possible_linebreaks (const char *s, size_t n,
+ const char *encoding, char *p);
+
+/* Choose the best line breaks, assuming the uc_width function.
+ The string is s[0..n-1]. The maximum number of columns per line is given
+ as WIDTH. The starting column of the string is given as START_COLUMN.
+ If the algorithm shall keep room after the last piece, they can be given
+ as AT_END_COLUMNS.
+ o is an optional override; if o[i] != UC_BREAK_UNDEFINED, o[i] takes
+ precedence over p[i] as returned by the *_possible_linebreaks function.
+ The given ENCODING is used for disambiguating widths in uc_width.
+ Return the column after the end of the string, and store the result at
+ p[0..n-1].
+ */
+extern int
+ u8_width_linebreaks (const uint8_t *s, size_t n, int width,
+ int start_column, int at_end_columns,
+ const char *o, const char *encoding,
+ char *p);
+extern int
+ u16_width_linebreaks (const uint16_t *s, size_t n, int width,
+ int start_column, int at_end_columns,
+ const char *o, const char *encoding,
+ char *p);
+extern int
+ u32_width_linebreaks (const uint32_t *s, size_t n, int width,
+ int start_column, int at_end_columns,
+ const char *o, const char *encoding,
+ char *p);
+extern int
+ ulc_width_linebreaks (const char *s, size_t n, int width,
+ int start_column, int at_end_columns,
+ const char *o, const char *encoding,
+ char *p);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _UNILBRK_H */
diff --git a/lib/unilbrk/lbrkprop1.h b/lib/unilbrk/lbrkprop1.h
new file mode 100644
index 00000000..66fd5849
--- /dev/null
+++ b/lib/unilbrk/lbrkprop1.h
@@ -0,0 +1,33 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Line breaking properties of Unicode characters. */
+/* Generated automatically by gen-lbrk for Unicode 5.1.0. */
+
+/* Copyright (C) 2000-2002, 2004, 2008 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#define lbrkprop_header_0 16
+#define lbrkprop_header_1 15
+#define lbrkprop_header_2 7
+#define lbrkprop_header_3 511
+#define lbrkprop_header_4 127
+
+typedef struct
+ {
+ int level1[15];
+ int level2[4 << 9];
+ unsigned char level3[142 << 7];
+ }
+lbrkprop_t;
+extern const lbrkprop_t unilbrkprop;
diff --git a/lib/unilbrk/lbrkprop2.h b/lib/unilbrk/lbrkprop2.h
new file mode 100644
index 00000000..a71b4d9e
--- /dev/null
+++ b/lib/unilbrk/lbrkprop2.h
@@ -0,0 +1,2558 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Line breaking properties of Unicode characters. */
+/* Generated automatically by gen-lbrk for Unicode 5.1.0. */
+
+/* Copyright (C) 2000-2002, 2004, 2008 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+const lbrkprop_t unilbrkprop =
+{
+ {
+ 0, 512, 1024, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1536
+ },
+ {
+ 0, 128, 256, 256, 256, 384, 512, 640,
+ 256, 768, 896, 1024, 1152, 1280, 1408, 1536,
+ -1, -1, 1664, 1792, 1920, 2048, 2176, 2304,
+ 2432, 2560, 2688, 2816, 2944, 3072, 3200, 3328,
+ 3456, 3584, 3712, 3840, 3968, 4096, 4224, 4352,
+ 4480, 256, 256, 256, 4608, 4736, 4864, 4992,
+ 5120, 5248, 5376, 5504, 5632, -1, 5760, 5888,
+ 6016, -1, 256, 6144, 256, 256, 6272, 6400,
+ 6528, 6656, 6784, 6912, 7040, 7168, 7296, 7424,
+ 7552, 7680, 7808, 7936, 8064, 8192, 8320, 8448,
+ 256, 256, 256, 8576, 256, 256, 8704, -1,
+ 8832, 8960, 9088, 9216, 9344, 9472, 9600, 9728,
+ 9856, 9984, 10112, 10240, 10368, 10496, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 10624, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 10752,
+ 10880, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 11008, 256, 256, 11136, 11264, 256, 11392,
+ 11520, 11648, 11776, -1, 11904, -1, -1, -1,
+ 12032, 12160, 12288, 12416, 12544, 12672, 12800, 12032,
+ 12160, 12288, 12416, 12544, 12672, 12800, 12032, 12160,
+ 12288, 12416, 12544, 12672, 12800, 12032, 12160, 12288,
+ 12416, 12544, 12672, 12800, 12032, 12160, 12288, 12416,
+ 12544, 12672, 12800, 12032, 12160, 12288, 12416, 12544,
+ 12672, 12800, 12032, 12160, 12288, 12416, 12544, 12672,
+ 12800, 12032, 12160, 12288, 12416, 12544, 12672, 12800,
+ 12032, 12160, 12288, 12416, 12544, 12672, 12800, 12032,
+ 12160, 12288, 12416, 12544, 12672, 12800, 12032, 12160,
+ 12288, 12416, 12544, 12672, 12800, 12032, 12160, 12288,
+ 12416, 12544, 12672, 12800, 12032, 12160, 12288, 12928,
+ -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, 9600, 9600, 13056, 13184, 13312, 13440,
+ 256, 256, 13568, 13696, 13824, 13952, 14080, 14208,
+ 14336, 14464, 14592, 14720, -1, 14848, 14976, 15104,
+ 256, 15232, -1, -1, -1, -1, -1, -1,
+ 15360, -1, 15488, -1, 15616, -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,
+ 256, 256, 256, 256, 256, 256, 15744, -1,
+ 15872, -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, -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, -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,
+ 256, 16000, 16128, 16256, 16384, -1, 16512, -1,
+ 16640, 16768, 16896, 256, 256, 17024, 256, 17152,
+ -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,
+ 17280, 17408, -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,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 9600, 9600, 9600,
+ 9600, 9600, 9600, 9600, 9600, 17536, -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, -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,
+ 9600, 9600, 9600, 9600, 17664, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 17792, -1, 17920, 18048, -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, -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, -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, -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
+ },
+ {
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_BA, LBP_BK, LBP_BK, LBP_BK, LBP_BK, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_SP, LBP_EX, LBP_QU, LBP_AL, LBP_PR, LBP_PO, LBP_AL, LBP_QU,
+ LBP_OP, LBP_CL, LBP_AL, LBP_PR, LBP_IS, LBP_HY, LBP_IS, LBP_SY,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_IS, LBP_IS, LBP_AL, LBP_AL, LBP_AL, LBP_EX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_PR, LBP_CL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_BA, LBP_CL, LBP_AL, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_BK, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_GL, LBP_OP, LBP_PO, LBP_PR, LBP_PR, LBP_PR, LBP_AL, LBP_AI,
+ LBP_AI, LBP_AL, LBP_AI, LBP_QU, LBP_AL, LBP_BA, LBP_AL, LBP_AL,
+ LBP_PO, LBP_PR, LBP_AI, LBP_AI, LBP_BB, LBP_AL, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_QU, LBP_AI, LBP_AI, LBP_AI, LBP_OP,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
+ LBP_BB, LBP_AI, LBP_AI, LBP_AI, LBP_BB, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_BB,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_GL,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_GL, LBP_GL, LBP_GL, LBP_GL,
+ LBP_GL, LBP_GL, LBP_GL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_IS, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_IS, LBP_BA, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_BA, LBP_CM,
+ LBP_AL, LBP_CM, LBP_CM, LBP_AL, LBP_CM, LBP_CM, LBP_EX, LBP_CM,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_PO, LBP_PO, LBP_PO, LBP_IS, LBP_IS, LBP_AL, LBP_AL,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_EX, LBP_XX, LBP_XX, LBP_EX, LBP_EX,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_PO, LBP_NU, LBP_NU, LBP_AL, LBP_AL, LBP_AL,
+ LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_EX, LBP_AL, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_CM,
+ LBP_CM, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL,
+ LBP_AL, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_IS, LBP_EX, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_CM, LBP_AL, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_BA, LBP_BA, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL,
+ LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_CM, LBP_AL, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_CM,
+ LBP_CM, LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL,
+ LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_AL, LBP_AL, LBP_PR, LBP_PR, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL,
+ LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_CM, LBP_XX, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
+ LBP_CM, LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_CM, LBP_AL, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_CM,
+ LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_XX, LBP_PR, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL,
+ LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_CM, LBP_AL, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_CM,
+ LBP_CM, LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL,
+ LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_CM, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
+ LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_PR, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_CM,
+ LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_XX,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_CM, LBP_AL, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_CM,
+ LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_CM,
+ LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_XX, LBP_PO, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_PR,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_AL,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_BA, LBP_BA, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_SA, LBP_SA, LBP_XX, LBP_SA, LBP_XX, LBP_XX, LBP_SA,
+ LBP_SA, LBP_XX, LBP_SA, LBP_XX, LBP_XX, LBP_SA, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_XX, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_XX, LBP_SA, LBP_SA, LBP_SA, LBP_XX, LBP_SA, LBP_XX, LBP_SA,
+ LBP_XX, LBP_XX, LBP_SA, LBP_SA, LBP_XX, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_XX, LBP_SA, LBP_SA, LBP_SA, LBP_XX, LBP_XX,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_XX, LBP_SA, LBP_XX,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_XX, LBP_XX,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_XX, LBP_XX, LBP_SA, LBP_SA, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_BB, LBP_BB, LBP_BB, LBP_BB, LBP_AL, LBP_BB, LBP_BB,
+ LBP_GL, LBP_BB, LBP_BB, LBP_BA, LBP_GL, LBP_EX, LBP_EX, LBP_EX,
+ LBP_EX, LBP_EX, LBP_GL, LBP_AL, LBP_EX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_BA, LBP_CM, LBP_AL, LBP_CM,
+ LBP_AL, LBP_CM, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_CM, LBP_CM,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_BA,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_BA, LBP_CM, LBP_CM,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_BA, LBP_BA,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_BB, LBP_BB, LBP_BA, LBP_BB, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_BA, LBP_BA, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_SA, LBP_SA,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL,
+ LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL,
+ LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL,
+ LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL,
+ LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL,
+ LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL,
+ LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL,
+ LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL,
+ LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL,
+ LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL,
+ LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL, LBP_JL,
+ LBP_JL, LBP_JL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_JL,
+ LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV,
+ LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV,
+ LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV,
+ LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV,
+ LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV,
+ LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV,
+ LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV,
+ LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV, LBP_JV,
+ LBP_JV, LBP_JV, LBP_JV, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT,
+ LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT,
+ LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT,
+ LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT,
+ LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT,
+ LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT,
+ LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT,
+ LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT,
+ LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT,
+ LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT, LBP_JT,
+ LBP_JT, LBP_JT, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
+ LBP_AL, LBP_BA, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_BA, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_CL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_BA, LBP_BA, LBP_BA, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_BA, LBP_BA, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_BA, LBP_BA, LBP_NS, LBP_SA,
+ LBP_BA, LBP_AL, LBP_BA, LBP_PR, LBP_SA, LBP_SA, LBP_XX, LBP_XX,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_EX, LBP_EX, LBP_BA, LBP_BA, LBP_BB, LBP_AL,
+ LBP_EX, LBP_EX, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_GL, LBP_XX,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_CM, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_EX, LBP_EX, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_XX, LBP_XX,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_SA, LBP_SA,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_BA,
+ LBP_BA, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_XX, LBP_XX, LBP_XX, LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_BA,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_BA, LBP_BA,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_BB, LBP_AL, LBP_XX,
+ LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_GL,
+ LBP_BA, LBP_BA, LBP_BA, LBP_ZW, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_BA, LBP_GL, LBP_BA, LBP_BA, LBP_B2, LBP_AI, LBP_AI, LBP_AL,
+ LBP_QU, LBP_QU, LBP_OP, LBP_QU, LBP_QU, LBP_QU, LBP_OP, LBP_QU,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_IN, LBP_IN, LBP_IN, LBP_BA,
+ LBP_BK, LBP_BK, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_GL,
+ LBP_PO, LBP_PO, LBP_PO, LBP_PO, LBP_PO, LBP_PO, LBP_PO, LBP_PO,
+ LBP_AL, LBP_QU, LBP_QU, LBP_AI, LBP_NS, LBP_NS, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_IS, LBP_OP, LBP_CL, LBP_NS,
+ LBP_NS, LBP_NS, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_BA, LBP_AL,
+ LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_AL, LBP_BA, LBP_BA, LBP_BA,
+ LBP_WJ, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_CL, LBP_AI,
+ LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_CL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PO,
+ LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR,
+ LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_PO, LBP_AL, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AL, LBP_PO, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_PR, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
+ LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
+ LBP_AL, LBP_AI, LBP_PR, LBP_PR, LBP_AL, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_OP, LBP_CL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL,
+ LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_QU, LBP_QU, LBP_QU, LBP_QU, LBP_XX,
+ LBP_XX, LBP_AL, LBP_EX, LBP_EX, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL,
+ LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_CL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_CL,
+ LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP,
+ LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP,
+ LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP,
+ LBP_CL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_CL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_EX, LBP_BA, LBP_BA, LBP_BA, LBP_AL, LBP_EX, LBP_BA,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_QU, LBP_QU, LBP_QU, LBP_QU, LBP_QU, LBP_QU, LBP_QU, LBP_QU,
+ LBP_QU, LBP_QU, LBP_QU, LBP_QU, LBP_QU, LBP_QU, LBP_BA, LBP_BA,
+ LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_AL, LBP_BA,
+ LBP_OP, LBP_BA, LBP_AL, LBP_AL, LBP_QU, LBP_QU, LBP_AL, LBP_AL,
+ LBP_QU, LBP_QU, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL,
+ LBP_OP, LBP_CL, LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_EX, LBP_AL,
+ LBP_BA, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_XX, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_CL, LBP_CL, LBP_ID, LBP_ID, LBP_NS, LBP_ID, LBP_ID,
+ LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL,
+ LBP_OP, LBP_CL, LBP_ID, LBP_ID, LBP_OP, LBP_CL, LBP_OP, LBP_CL,
+ LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_NS, LBP_OP, LBP_CL, LBP_CL,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_NS, LBP_ID, LBP_ID, LBP_ID,
+ LBP_XX, LBP_NS, LBP_ID, LBP_NS, LBP_ID, LBP_NS, LBP_ID, LBP_NS,
+ LBP_ID, LBP_NS, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID, LBP_NS, LBP_ID, LBP_NS,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_NS, LBP_XX,
+ LBP_XX, LBP_CM, LBP_CM, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_ID,
+ LBP_NS, LBP_NS, LBP_ID, LBP_NS, LBP_ID, LBP_NS, LBP_ID, LBP_NS,
+ LBP_ID, LBP_NS, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID, LBP_NS, LBP_ID, LBP_NS,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_NS, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_ID,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX,
+ LBP_XX, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS,
+ LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_BA, LBP_EX, LBP_BA,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_BB, LBP_BB, LBP_EX, LBP_EX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_BA, LBP_BA,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_BA, LBP_BA,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_XX, LBP_XX, LBP_AL, LBP_BA, LBP_BA, LBP_BA,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_H2, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H2, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H2, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H2, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H2, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H2, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H2, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H2, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H2, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H2, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H2, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H2, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H2, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H2, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H2, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H2, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H2, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H2, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H2, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H2, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H2, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H2, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H2, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H2, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H2, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H2, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H2, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H2, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H2, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H2, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H2, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H2, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H2, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_H3,
+ LBP_H3, LBP_H3, LBP_H3, LBP_H3, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_CM, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_CL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_PO, LBP_AL, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_IS, LBP_CL, LBP_CL, LBP_IS, LBP_IS, LBP_EX, LBP_EX, LBP_OP,
+ LBP_CL, LBP_IN, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_OP, LBP_CL, LBP_OP,
+ LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP,
+ LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_ID, LBP_ID, LBP_OP,
+ LBP_CL, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_CL, LBP_ID, LBP_CL, LBP_XX, LBP_NS, LBP_NS, LBP_EX, LBP_EX,
+ LBP_ID, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX,
+ LBP_ID, LBP_PR, LBP_PO, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_WJ,
+ LBP_XX, LBP_EX, LBP_ID, LBP_ID, LBP_PR, LBP_PO, LBP_ID, LBP_ID,
+ LBP_OP, LBP_CL, LBP_ID, LBP_ID, LBP_CL, LBP_ID, LBP_CL, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_NS, LBP_NS, LBP_ID, LBP_ID, LBP_ID, LBP_EX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_OP, LBP_ID, LBP_CL, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_OP, LBP_ID, LBP_CL, LBP_ID, LBP_OP,
+ LBP_CL, LBP_CL, LBP_OP, LBP_CL, LBP_CL, LBP_NS, LBP_AL, LBP_NS,
+ LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS,
+ LBP_NS, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_NS, LBP_NS,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_PO, LBP_PR, LBP_ID, LBP_ID, LBP_ID, LBP_PR, LBP_PR, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CB, LBP_AI, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_BA, LBP_BA, LBP_BA, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_BA,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_BA, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL,
+ LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_XX, LBP_XX, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_BA,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_BA,
+ LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX
+ }
+};
diff --git a/lib/unilbrk/lbrktables.c b/lib/unilbrk/lbrktables.c
new file mode 100644
index 00000000..ae3ebf4f
--- /dev/null
+++ b/lib/unilbrk/lbrktables.c
@@ -0,0 +1,63 @@
+/* Line breaking auxiliary tables.
+ Copyright (C) 2001-2003, 2006-2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unilbrk/lbrktables.h"
+
+/* Define unilbrkprop, table of line breaking properties. */
+#include "unilbrk/lbrkprop2.h"
+
+const unsigned char unilbrk_table[24][24] =
+{
+ /* after */
+ /* WJ GL B2 BA BB HY CL EX IN NS OP QU IS NU PO PR SY AL H2 H3 ID JL JV JT */
+/* WJ */ { P, I, I, I, I, I, P, P, I, I, I, I, P, I, I, I, P, I, I, I, I, I, I, I, },
+/* GL */ { P, I, I, I, I, I, P, P, I, I, I, I, P, I, I, I, P, I, I, I, I, I, I, I, },
+/* B2 */ { P, I, P, I, D, I, P, P, D, I, D, I, P, D, D, D, P, D, D, D, D, D, D, D, },
+/* BA */ { P, D, D, I, D, I, P, P, D, I, D, I, P, D, D, D, P, D, D, D, D, D, D, D, },
+/* BB */ { P, I, I, I, I, I, P, P, I, I, I, I, P, I, I, I, P, I, I, I, I, I, I, I, },
+/* HY */ { P, D, D, I, D, I, P, P, D, I, D, I, P, I, D, D, P, D, D, D, D, D, D, D, },
+/* CL */ { P, I, D, I, D, I, P, P, D, P, D, I, P, D, I, I, P, D, D, D, D, D, D, D, },
+/* EX */ { P, I, D, I, D, I, P, P, D, I, D, I, P, D, D, D, P, D, D, D, D, D, D, D, },
+/* IN */ { P, I, D, I, D, I, P, P, I, I, D, I, P, D, D, D, P, D, D, D, D, D, D, D, },
+/* NS */ { P, I, D, I, D, I, P, P, D, I, D, I, P, D, D, D, P, D, D, D, D, D, D, D, },
+/* OP */ { P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, },
+/* QU */ { P, I, I, I, I, I, P, P, I, I, P, I, P, I, I, I, P, I, I, I, I, I, I, I, },
+/* IS */ { P, I, D, I, D, I, P, P, D, I, D, I, P, I, D, D, P, D, D, D, D, D, D, D, },
+/* NU */ { P, I, D, I, D, I, P, P, I, I, D, I, P, I, I, I, P, I, D, D, D, D, D, D, },
+/* PO */ { P, I, D, I, D, I, P, P, D, I, I, I, P, I, D, D, P, I, D, D, D, D, D, D, },
+/* PR */ { P, I, D, I, D, I, P, P, D, I, I, I, P, I, D, D, P, I, I, I, I, I, I, I, },
+/* SY */ { P, I, D, I, D, I, P, P, D, I, D, I, P, I, D, D, P, D, D, D, D, D, D, D, },
+/* AL */ { P, I, D, I, D, I, P, P, I, I, D, I, P, I, D, D, P, I, D, D, D, D, D, D, },
+/* H2 */ { P, I, D, I, D, I, P, P, I, I, D, I, P, D, I, D, P, D, D, D, D, D, I, I, },
+/* H3 */ { P, I, D, I, D, I, P, P, I, I, D, I, P, D, I, D, P, D, D, D, D, D, D, I, },
+/* ID */ { P, I, D, I, D, I, P, P, I, I, D, I, P, D, I, D, P, D, D, D, D, D, D, D, },
+/* JL */ { P, I, D, I, D, I, P, P, I, I, D, I, P, D, I, D, P, D, I, I, D, I, I, D, },
+/* JV */ { P, I, D, I, D, I, P, P, I, I, D, I, P, D, I, D, P, D, D, D, D, D, I, I, },
+/* JT */ { P, I, D, I, D, I, P, P, I, I, D, I, P, D, I, D, P, D, D, D, D, D, D, I, },
+/* "" */
+/* before */
+};
+/* Note: The (IS,AL) entry has been changed from I to D. In other words, the
+ rule "Do not break between numeric punctuation and alphabetics" is not
+ implemented here. We want to break before the HTML tag in strings like
+ "<P>Some sentence.</P>" */
+/* Note: The (B2,B2) entry should probably be D instead of P. */
+/* Note: The (PR,ID) entry should probably be D instead of I. */
+/* Note: The (WJ,*) and (GL,*) entries should probably be P instead of I. */
diff --git a/lib/unilbrk/lbrktables.h b/lib/unilbrk/lbrktables.h
new file mode 100644
index 00000000..33b525be
--- /dev/null
+++ b/lib/unilbrk/lbrktables.h
@@ -0,0 +1,94 @@
+/* Line breaking auxiliary tables.
+ Copyright (C) 2001-2003, 2006-2008 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include "unitypes.h"
+
+/* Line breaking classification. */
+
+enum
+{
+ /* Values >= 24 are resolved at run time. */
+ LBP_BK = 24, /* mandatory break */
+/*LBP_CR, carriage return - not used here because it's a DOSism */
+/*LBP_LF, line feed - not used here because it's a DOSism */
+ LBP_CM = 25, /* attached characters and combining marks */
+/*LBP_NL, next line - not used here because it's equivalent to LBP_BK */
+/*LBP_SG, surrogates - not used here because they are not characters */
+ LBP_WJ = 0, /* word joiner */
+ LBP_ZW = 26, /* zero width space */
+ LBP_GL = 1, /* non-breaking (glue) */
+ LBP_SP = 27, /* space */
+ LBP_B2 = 2, /* break opportunity before and after */
+ LBP_BA = 3, /* break opportunity after */
+ LBP_BB = 4, /* break opportunity before */
+ LBP_HY = 5, /* hyphen */
+ LBP_CB = 28, /* contingent break opportunity */
+ LBP_CL = 6, /* closing punctuation */
+ LBP_EX = 7, /* exclamation/interrogation */
+ LBP_IN = 8, /* inseparable */
+ LBP_NS = 9, /* non starter */
+ LBP_OP = 10, /* opening punctuation */
+ LBP_QU = 11, /* ambiguous quotation */
+ LBP_IS = 12, /* infix separator (numeric) */
+ LBP_NU = 13, /* numeric */
+ LBP_PO = 14, /* postfix (numeric) */
+ LBP_PR = 15, /* prefix (numeric) */
+ LBP_SY = 16, /* symbols allowing breaks */
+ LBP_AI = 29, /* ambiguous (alphabetic or ideograph) */
+ LBP_AL = 17, /* ordinary alphabetic and symbol characters */
+ LBP_H2 = 18, /* Hangul LV syllable */
+ LBP_H3 = 19, /* Hangul LVT syllable */
+ LBP_ID = 20, /* ideographic */
+ LBP_JL = 21, /* Hangul L Jamo */
+ LBP_JV = 22, /* Hangul V Jamo */
+ LBP_JT = 23, /* Hangul T Jamo */
+ LBP_SA = 30, /* complex context (South East Asian) */
+ LBP_XX = 31 /* unknown */
+};
+
+#include "lbrkprop1.h"
+
+static inline unsigned char
+unilbrkprop_lookup (ucs4_t uc)
+{
+ unsigned int index1 = uc >> lbrkprop_header_0;
+ if (index1 < lbrkprop_header_1)
+ {
+ int lookup1 = unilbrkprop.level1[index1];
+ if (lookup1 >= 0)
+ {
+ unsigned int index2 = (uc >> lbrkprop_header_2) & lbrkprop_header_3;
+ int lookup2 = unilbrkprop.level2[lookup1 + index2];
+ if (lookup2 >= 0)
+ {
+ unsigned int index3 = uc & lbrkprop_header_4;
+ return unilbrkprop.level3[lookup2 + index3];
+ }
+ }
+ }
+ return LBP_XX;
+}
+
+/* Table indexed by two line breaking classifications. */
+#define D 1 /* direct break opportunity, empty in table 7.3 of UTR #14 */
+#define I 2 /* indirect break opportunity, '%' in table 7.3 of UTR #14 */
+#define P 3 /* prohibited break, '^' in table 7.3 of UTR #14 */
+
+extern const unsigned char unilbrk_table[24][24];
+
+/* We don't support line breaking of complex-context dependent characters
+ (Thai, Lao, Myanmar, Khmer) yet, because it requires dictionary lookup. */
diff --git a/lib/unilbrk/u16-possible-linebreaks.c b/lib/unilbrk/u16-possible-linebreaks.c
new file mode 100644
index 00000000..f5b69921
--- /dev/null
+++ b/lib/unilbrk/u16-possible-linebreaks.c
@@ -0,0 +1,164 @@
+/* Line breaking of UTF-16 strings.
+ Copyright (C) 2001-2003, 2006-2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unilbrk.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "unilbrk/lbrktables.h"
+#include "uniwidth/cjk.h"
+#include "unistr.h"
+
+void
+u16_possible_linebreaks (const uint16_t *s, size_t n, const char *encoding, char *p)
+{
+ int LBP_AI_REPLACEMENT = (is_cjk_encoding (encoding) ? LBP_ID : LBP_AL);
+ const uint16_t *s_end = s + n;
+ int last_prop = LBP_BK; /* line break property of last non-space character */
+ char *seen_space = NULL; /* Was a space seen after the last non-space character? */
+ char *seen_space2 = NULL; /* At least two spaces after the last non-space? */
+
+ /* Don't break inside multibyte characters. */
+ memset (p, UC_BREAK_PROHIBITED, n);
+
+ while (s < s_end)
+ {
+ ucs4_t uc;
+ int count = u16_mbtouc_unsafe (&uc, s, s_end - s);
+ int prop = unilbrkprop_lookup (uc);
+
+ if (prop == LBP_BK)
+ {
+ /* Mandatory break. */
+ *p = UC_BREAK_MANDATORY;
+ last_prop = LBP_BK;
+ seen_space = NULL;
+ seen_space2 = NULL;
+ }
+ else
+ {
+ char *q;
+
+ /* Resolve property values whose behaviour is not fixed. */
+ switch (prop)
+ {
+ case LBP_AI:
+ /* Resolve ambiguous. */
+ prop = LBP_AI_REPLACEMENT;
+ break;
+ case LBP_CB:
+ /* This is arbitrary. */
+ prop = LBP_ID;
+ break;
+ case LBP_SA:
+ /* We don't handle complex scripts yet.
+ Treat LBP_SA like LBP_XX. */
+ case LBP_XX:
+ /* This is arbitrary. */
+ prop = LBP_AL;
+ break;
+ }
+
+ /* Deal with spaces and combining characters. */
+ q = p;
+ if (prop == LBP_SP)
+ {
+ /* Don't break just before a space. */
+ *p = UC_BREAK_PROHIBITED;
+ seen_space2 = seen_space;
+ seen_space = p;
+ }
+ else if (prop == LBP_ZW)
+ {
+ /* Don't break just before a zero-width space. */
+ *p = UC_BREAK_PROHIBITED;
+ last_prop = LBP_ZW;
+ seen_space = NULL;
+ seen_space2 = NULL;
+ }
+ else if (prop == LBP_CM)
+ {
+ /* Don't break just before a combining character, except immediately after a
+ zero-width space. */
+ if (last_prop == LBP_ZW)
+ {
+ /* Break after zero-width space. */
+ *p = UC_BREAK_POSSIBLE;
+ /* A combining character turns a preceding space into LBP_ID. */
+ last_prop = LBP_ID;
+ }
+ else
+ {
+ *p = UC_BREAK_PROHIBITED;
+ /* A combining character turns a preceding space into LBP_ID. */
+ if (seen_space != NULL)
+ {
+ q = seen_space;
+ seen_space = seen_space2;
+ prop = LBP_ID;
+ goto lookup_via_table;
+ }
+ }
+ }
+ else
+ {
+ lookup_via_table:
+ /* prop must be usable as an index for table 7.3 of UTR #14. */
+ if (!(prop >= 0 && prop < sizeof (unilbrk_table) / sizeof (unilbrk_table[0])))
+ abort ();
+
+ if (last_prop == LBP_BK)
+ {
+ /* Don't break at the beginning of a line. */
+ *q = UC_BREAK_PROHIBITED;
+ }
+ else if (last_prop == LBP_ZW)
+ {
+ /* Break after zero-width space. */
+ *q = UC_BREAK_POSSIBLE;
+ }
+ else
+ {
+ switch (unilbrk_table [last_prop] [prop])
+ {
+ case D:
+ *q = UC_BREAK_POSSIBLE;
+ break;
+ case I:
+ *q = (seen_space != NULL ? UC_BREAK_POSSIBLE : UC_BREAK_PROHIBITED);
+ break;
+ case P:
+ *q = UC_BREAK_PROHIBITED;
+ break;
+ default:
+ abort ();
+ }
+ }
+ last_prop = prop;
+ seen_space = NULL;
+ seen_space2 = NULL;
+ }
+ }
+
+ s += count;
+ p += count;
+ }
+}
diff --git a/lib/unilbrk/u16-width-linebreaks.c b/lib/unilbrk/u16-width-linebreaks.c
new file mode 100644
index 00000000..64445590
--- /dev/null
+++ b/lib/unilbrk/u16-width-linebreaks.c
@@ -0,0 +1,108 @@
+/* Line breaking of UTF-16 strings.
+ Copyright (C) 2001-2003, 2006-2008 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unilbrk.h"
+
+#include "unistr.h"
+#include "uniwidth.h"
+
+int
+u16_width_linebreaks (const uint16_t *s, size_t n,
+ int width, int start_column, int at_end_columns,
+ const char *o, const char *encoding,
+ char *p)
+{
+ const uint16_t *s_end;
+ char *last_p;
+ int last_column;
+ int piece_width;
+
+ u16_possible_linebreaks (s, n, encoding, p);
+
+ s_end = s + n;
+ last_p = NULL;
+ last_column = start_column;
+ piece_width = 0;
+ while (s < s_end)
+ {
+ ucs4_t uc;
+ int count = u16_mbtouc_unsafe (&uc, s, s_end - s);
+
+ /* Respect the override. */
+ if (o != NULL && *o != UC_BREAK_UNDEFINED)
+ *p = *o;
+
+ if (*p == UC_BREAK_POSSIBLE || *p == UC_BREAK_MANDATORY)
+ {
+ /* An atomic piece of text ends here. */
+ if (last_p != NULL && last_column + piece_width > width)
+ {
+ /* Insert a line break. */
+ *last_p = UC_BREAK_POSSIBLE;
+ last_column = 0;
+ }
+ }
+
+ if (*p == UC_BREAK_MANDATORY)
+ {
+ /* uc is a line break character. */
+ /* Start a new piece at column 0. */
+ last_p = NULL;
+ last_column = 0;
+ piece_width = 0;
+ }
+ else
+ {
+ /* uc is not a line break character. */
+ int w;
+
+ if (*p == UC_BREAK_POSSIBLE)
+ {
+ /* Start a new piece. */
+ last_p = p;
+ last_column += piece_width;
+ piece_width = 0;
+ /* No line break for the moment, may be turned into
+ UC_BREAK_POSSIBLE later, via last_p. */
+ }
+
+ *p = UC_BREAK_PROHIBITED;
+
+ w = uc_width (uc, encoding);
+ if (w >= 0) /* ignore control characters in the string */
+ piece_width += w;
+ }
+
+ s += count;
+ p += count;
+ if (o != NULL)
+ o += count;
+ }
+
+ /* The last atomic piece of text ends here. */
+ if (last_p != NULL && last_column + piece_width + at_end_columns > width)
+ {
+ /* Insert a line break. */
+ *last_p = UC_BREAK_POSSIBLE;
+ last_column = 0;
+ }
+
+ return last_column + piece_width;
+}
diff --git a/lib/unilbrk/u32-possible-linebreaks.c b/lib/unilbrk/u32-possible-linebreaks.c
new file mode 100644
index 00000000..c843e12b
--- /dev/null
+++ b/lib/unilbrk/u32-possible-linebreaks.c
@@ -0,0 +1,158 @@
+/* Line breaking of UTF-32 strings.
+ Copyright (C) 2001-2003, 2006-2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unilbrk.h"
+
+#include <stdlib.h>
+
+#include "unilbrk/lbrktables.h"
+#include "uniwidth/cjk.h"
+
+void
+u32_possible_linebreaks (const uint32_t *s, size_t n, const char *encoding, char *p)
+{
+ int LBP_AI_REPLACEMENT = (is_cjk_encoding (encoding) ? LBP_ID : LBP_AL);
+ const uint32_t *s_end = s + n;
+ int last_prop = LBP_BK; /* line break property of last non-space character */
+ char *seen_space = NULL; /* Was a space seen after the last non-space character? */
+ char *seen_space2 = NULL; /* At least two spaces after the last non-space? */
+
+ while (s < s_end)
+ {
+ ucs4_t uc = *s;
+ int prop = unilbrkprop_lookup (uc);
+
+ if (prop == LBP_BK)
+ {
+ /* Mandatory break. */
+ *p = UC_BREAK_MANDATORY;
+ last_prop = LBP_BK;
+ seen_space = NULL;
+ seen_space2 = NULL;
+ }
+ else
+ {
+ char *q;
+
+ /* Resolve property values whose behaviour is not fixed. */
+ switch (prop)
+ {
+ case LBP_AI:
+ /* Resolve ambiguous. */
+ prop = LBP_AI_REPLACEMENT;
+ break;
+ case LBP_CB:
+ /* This is arbitrary. */
+ prop = LBP_ID;
+ break;
+ case LBP_SA:
+ /* We don't handle complex scripts yet.
+ Treat LBP_SA like LBP_XX. */
+ case LBP_XX:
+ /* This is arbitrary. */
+ prop = LBP_AL;
+ break;
+ }
+
+ /* Deal with spaces and combining characters. */
+ q = p;
+ if (prop == LBP_SP)
+ {
+ /* Don't break just before a space. */
+ *p = UC_BREAK_PROHIBITED;
+ seen_space2 = seen_space;
+ seen_space = p;
+ }
+ else if (prop == LBP_ZW)
+ {
+ /* Don't break just before a zero-width space. */
+ *p = UC_BREAK_PROHIBITED;
+ last_prop = LBP_ZW;
+ seen_space = NULL;
+ seen_space2 = NULL;
+ }
+ else if (prop == LBP_CM)
+ {
+ /* Don't break just before a combining character, except immediately after a
+ zero-width space. */
+ if (last_prop == LBP_ZW)
+ {
+ /* Break after zero-width space. */
+ *p = UC_BREAK_POSSIBLE;
+ /* A combining character turns a preceding space into LBP_ID. */
+ last_prop = LBP_ID;
+ }
+ else
+ {
+ *p = UC_BREAK_PROHIBITED;
+ /* A combining character turns a preceding space into LBP_ID. */
+ if (seen_space != NULL)
+ {
+ q = seen_space;
+ seen_space = seen_space2;
+ prop = LBP_ID;
+ goto lookup_via_table;
+ }
+ }
+ }
+ else
+ {
+ lookup_via_table:
+ /* prop must be usable as an index for table 7.3 of UTR #14. */
+ if (!(prop >= 0 && prop < sizeof (unilbrk_table) / sizeof (unilbrk_table[0])))
+ abort ();
+
+ if (last_prop == LBP_BK)
+ {
+ /* Don't break at the beginning of a line. */
+ *q = UC_BREAK_PROHIBITED;
+ }
+ else if (last_prop == LBP_ZW)
+ {
+ /* Break after zero-width space. */
+ *q = UC_BREAK_POSSIBLE;
+ }
+ else
+ {
+ switch (unilbrk_table [last_prop] [prop])
+ {
+ case D:
+ *q = UC_BREAK_POSSIBLE;
+ break;
+ case I:
+ *q = (seen_space != NULL ? UC_BREAK_POSSIBLE : UC_BREAK_PROHIBITED);
+ break;
+ case P:
+ *q = UC_BREAK_PROHIBITED;
+ break;
+ default:
+ abort ();
+ }
+ }
+ last_prop = prop;
+ seen_space = NULL;
+ seen_space2 = NULL;
+ }
+ }
+
+ s++;
+ p++;
+ }
+}
diff --git a/lib/unilbrk/u32-width-linebreaks.c b/lib/unilbrk/u32-width-linebreaks.c
new file mode 100644
index 00000000..2d362560
--- /dev/null
+++ b/lib/unilbrk/u32-width-linebreaks.c
@@ -0,0 +1,106 @@
+/* Line breaking of UTF-32 strings.
+ Copyright (C) 2001-2003, 2006-2008 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unilbrk.h"
+
+#include "uniwidth.h"
+
+int
+u32_width_linebreaks (const uint32_t *s, size_t n,
+ int width, int start_column, int at_end_columns,
+ const char *o, const char *encoding,
+ char *p)
+{
+ const uint32_t *s_end;
+ char *last_p;
+ int last_column;
+ int piece_width;
+
+ u32_possible_linebreaks (s, n, encoding, p);
+
+ s_end = s + n;
+ last_p = NULL;
+ last_column = start_column;
+ piece_width = 0;
+ while (s < s_end)
+ {
+ ucs4_t uc = *s;
+
+ /* Respect the override. */
+ if (o != NULL && *o != UC_BREAK_UNDEFINED)
+ *p = *o;
+
+ if (*p == UC_BREAK_POSSIBLE || *p == UC_BREAK_MANDATORY)
+ {
+ /* An atomic piece of text ends here. */
+ if (last_p != NULL && last_column + piece_width > width)
+ {
+ /* Insert a line break. */
+ *last_p = UC_BREAK_POSSIBLE;
+ last_column = 0;
+ }
+ }
+
+ if (*p == UC_BREAK_MANDATORY)
+ {
+ /* uc is a line break character. */
+ /* Start a new piece at column 0. */
+ last_p = NULL;
+ last_column = 0;
+ piece_width = 0;
+ }
+ else
+ {
+ /* uc is not a line break character. */
+ int w;
+
+ if (*p == UC_BREAK_POSSIBLE)
+ {
+ /* Start a new piece. */
+ last_p = p;
+ last_column += piece_width;
+ piece_width = 0;
+ /* No line break for the moment, may be turned into
+ UC_BREAK_POSSIBLE later, via last_p. */
+ }
+
+ *p = UC_BREAK_PROHIBITED;
+
+ w = uc_width (uc, encoding);
+ if (w >= 0) /* ignore control characters in the string */
+ piece_width += w;
+ }
+
+ s++;
+ p++;
+ if (o != NULL)
+ o++;
+ }
+
+ /* The last atomic piece of text ends here. */
+ if (last_p != NULL && last_column + piece_width + at_end_columns > width)
+ {
+ /* Insert a line break. */
+ *last_p = UC_BREAK_POSSIBLE;
+ last_column = 0;
+ }
+
+ return last_column + piece_width;
+}
diff --git a/lib/unilbrk/u8-possible-linebreaks.c b/lib/unilbrk/u8-possible-linebreaks.c
new file mode 100644
index 00000000..94e14f40
--- /dev/null
+++ b/lib/unilbrk/u8-possible-linebreaks.c
@@ -0,0 +1,261 @@
+/* Line breaking of UTF-8 strings.
+ Copyright (C) 2001-2003, 2006-2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unilbrk.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "unilbrk/lbrktables.h"
+#include "uniwidth/cjk.h"
+#include "unistr.h"
+
+void
+u8_possible_linebreaks (const uint8_t *s, size_t n, const char *encoding, char *p)
+{
+ int LBP_AI_REPLACEMENT = (is_cjk_encoding (encoding) ? LBP_ID : LBP_AL);
+ const uint8_t *s_end = s + n;
+ int last_prop = LBP_BK; /* line break property of last non-space character */
+ char *seen_space = NULL; /* Was a space seen after the last non-space character? */
+ char *seen_space2 = NULL; /* At least two spaces after the last non-space? */
+
+ /* Don't break inside multibyte characters. */
+ memset (p, UC_BREAK_PROHIBITED, n);
+
+ while (s < s_end)
+ {
+ ucs4_t uc;
+ int count = u8_mbtouc_unsafe (&uc, s, s_end - s);
+ int prop = unilbrkprop_lookup (uc);
+
+ if (prop == LBP_BK)
+ {
+ /* Mandatory break. */
+ *p = UC_BREAK_MANDATORY;
+ last_prop = LBP_BK;
+ seen_space = NULL;
+ seen_space2 = NULL;
+ }
+ else
+ {
+ char *q;
+
+ /* Resolve property values whose behaviour is not fixed. */
+ switch (prop)
+ {
+ case LBP_AI:
+ /* Resolve ambiguous. */
+ prop = LBP_AI_REPLACEMENT;
+ break;
+ case LBP_CB:
+ /* This is arbitrary. */
+ prop = LBP_ID;
+ break;
+ case LBP_SA:
+ /* We don't handle complex scripts yet.
+ Treat LBP_SA like LBP_XX. */
+ case LBP_XX:
+ /* This is arbitrary. */
+ prop = LBP_AL;
+ break;
+ }
+
+ /* Deal with spaces and combining characters. */
+ q = p;
+ if (prop == LBP_SP)
+ {
+ /* Don't break just before a space. */
+ *p = UC_BREAK_PROHIBITED;
+ seen_space2 = seen_space;
+ seen_space = p;
+ }
+ else if (prop == LBP_ZW)
+ {
+ /* Don't break just before a zero-width space. */
+ *p = UC_BREAK_PROHIBITED;
+ last_prop = LBP_ZW;
+ seen_space = NULL;
+ seen_space2 = NULL;
+ }
+ else if (prop == LBP_CM)
+ {
+ /* Don't break just before a combining character, except immediately after a
+ zero-width space. */
+ if (last_prop == LBP_ZW)
+ {
+ /* Break after zero-width space. */
+ *p = UC_BREAK_POSSIBLE;
+ /* A combining character turns a preceding space into LBP_ID. */
+ last_prop = LBP_ID;
+ }
+ else
+ {
+ *p = UC_BREAK_PROHIBITED;
+ /* A combining character turns a preceding space into LBP_ID. */
+ if (seen_space != NULL)
+ {
+ q = seen_space;
+ seen_space = seen_space2;
+ prop = LBP_ID;
+ goto lookup_via_table;
+ }
+ }
+ }
+ else
+ {
+ lookup_via_table:
+ /* prop must be usable as an index for table 7.3 of UTR #14. */
+ if (!(prop >= 0 && prop < sizeof (unilbrk_table) / sizeof (unilbrk_table[0])))
+ abort ();
+
+ if (last_prop == LBP_BK)
+ {
+ /* Don't break at the beginning of a line. */
+ *q = UC_BREAK_PROHIBITED;
+ }
+ else if (last_prop == LBP_ZW)
+ {
+ /* Break after zero-width space. */
+ *q = UC_BREAK_POSSIBLE;
+ }
+ else
+ {
+ switch (unilbrk_table [last_prop] [prop])
+ {
+ case D:
+ *q = UC_BREAK_POSSIBLE;
+ break;
+ case I:
+ *q = (seen_space != NULL ? UC_BREAK_POSSIBLE : UC_BREAK_PROHIBITED);
+ break;
+ case P:
+ *q = UC_BREAK_PROHIBITED;
+ break;
+ default:
+ abort ();
+ }
+ }
+ last_prop = prop;
+ seen_space = NULL;
+ seen_space2 = NULL;
+ }
+ }
+
+ s += count;
+ p += count;
+ }
+}
+
+
+#ifdef TEST
+
+#include <stdio.h>
+#include <string.h>
+
+/* Read the contents of an input stream, and return it, terminated with a NUL
+ byte. */
+char *
+read_file (FILE *stream)
+{
+#define BUFSIZE 4096
+ char *buf = NULL;
+ int alloc = 0;
+ int size = 0;
+ int count;
+
+ while (! feof (stream))
+ {
+ if (size + BUFSIZE > alloc)
+ {
+ alloc = alloc + alloc / 2;
+ if (alloc < size + BUFSIZE)
+ alloc = size + BUFSIZE;
+ buf = realloc (buf, alloc);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ }
+ count = fread (buf + size, 1, BUFSIZE, stream);
+ if (count == 0)
+ {
+ if (ferror (stream))
+ {
+ perror ("fread");
+ exit (1);
+ }
+ }
+ else
+ size += count;
+ }
+ buf = realloc (buf, size + 1);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ buf[size] = '\0';
+ return buf;
+#undef BUFSIZE
+}
+
+int
+main (int argc, char * argv[])
+{
+ if (argc == 1)
+ {
+ /* Display all the break opportunities in the input string. */
+ char *input = read_file (stdin);
+ int length = strlen (input);
+ char *breaks = malloc (length);
+ int i;
+
+ u8_possible_linebreaks ((uint8_t *) input, length, "UTF-8", breaks);
+
+ for (i = 0; i < length; i++)
+ {
+ switch (breaks[i])
+ {
+ case UC_BREAK_POSSIBLE:
+ /* U+2027 in UTF-8 encoding */
+ putc (0xe2, stdout); putc (0x80, stdout); putc (0xa7, stdout);
+ break;
+ case UC_BREAK_MANDATORY:
+ /* U+21B2 (or U+21B5) in UTF-8 encoding */
+ putc (0xe2, stdout); putc (0x86, stdout); putc (0xb2, stdout);
+ break;
+ case UC_BREAK_PROHIBITED:
+ break;
+ default:
+ abort ();
+ }
+ putc (input[i], stdout);
+ }
+
+ free (breaks);
+
+ return 0;
+ }
+ else
+ return 1;
+}
+
+#endif /* TEST */
diff --git a/lib/unilbrk/u8-width-linebreaks.c b/lib/unilbrk/u8-width-linebreaks.c
new file mode 100644
index 00000000..7e7f2e97
--- /dev/null
+++ b/lib/unilbrk/u8-width-linebreaks.c
@@ -0,0 +1,204 @@
+/* Line breaking of UTF-8 strings.
+ Copyright (C) 2001-2003, 2006-2008 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unilbrk.h"
+
+#include "unistr.h"
+#include "uniwidth.h"
+
+int
+u8_width_linebreaks (const uint8_t *s, size_t n,
+ int width, int start_column, int at_end_columns,
+ const char *o, const char *encoding,
+ char *p)
+{
+ const uint8_t *s_end;
+ char *last_p;
+ int last_column;
+ int piece_width;
+
+ u8_possible_linebreaks (s, n, encoding, p);
+
+ s_end = s + n;
+ last_p = NULL;
+ last_column = start_column;
+ piece_width = 0;
+ while (s < s_end)
+ {
+ ucs4_t uc;
+ int count = u8_mbtouc_unsafe (&uc, s, s_end - s);
+
+ /* Respect the override. */
+ if (o != NULL && *o != UC_BREAK_UNDEFINED)
+ *p = *o;
+
+ if (*p == UC_BREAK_POSSIBLE || *p == UC_BREAK_MANDATORY)
+ {
+ /* An atomic piece of text ends here. */
+ if (last_p != NULL && last_column + piece_width > width)
+ {
+ /* Insert a line break. */
+ *last_p = UC_BREAK_POSSIBLE;
+ last_column = 0;
+ }
+ }
+
+ if (*p == UC_BREAK_MANDATORY)
+ {
+ /* uc is a line break character. */
+ /* Start a new piece at column 0. */
+ last_p = NULL;
+ last_column = 0;
+ piece_width = 0;
+ }
+ else
+ {
+ /* uc is not a line break character. */
+ int w;
+
+ if (*p == UC_BREAK_POSSIBLE)
+ {
+ /* Start a new piece. */
+ last_p = p;
+ last_column += piece_width;
+ piece_width = 0;
+ /* No line break for the moment, may be turned into
+ UC_BREAK_POSSIBLE later, via last_p. */
+ }
+
+ *p = UC_BREAK_PROHIBITED;
+
+ w = uc_width (uc, encoding);
+ if (w >= 0) /* ignore control characters in the string */
+ piece_width += w;
+ }
+
+ s += count;
+ p += count;
+ if (o != NULL)
+ o += count;
+ }
+
+ /* The last atomic piece of text ends here. */
+ if (last_p != NULL && last_column + piece_width + at_end_columns > width)
+ {
+ /* Insert a line break. */
+ *last_p = UC_BREAK_POSSIBLE;
+ last_column = 0;
+ }
+
+ return last_column + piece_width;
+}
+
+
+#ifdef TEST
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* Read the contents of an input stream, and return it, terminated with a NUL
+ byte. */
+char *
+read_file (FILE *stream)
+{
+#define BUFSIZE 4096
+ char *buf = NULL;
+ int alloc = 0;
+ int size = 0;
+ int count;
+
+ while (! feof (stream))
+ {
+ if (size + BUFSIZE > alloc)
+ {
+ alloc = alloc + alloc / 2;
+ if (alloc < size + BUFSIZE)
+ alloc = size + BUFSIZE;
+ buf = realloc (buf, alloc);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ }
+ count = fread (buf + size, 1, BUFSIZE, stream);
+ if (count == 0)
+ {
+ if (ferror (stream))
+ {
+ perror ("fread");
+ exit (1);
+ }
+ }
+ else
+ size += count;
+ }
+ buf = realloc (buf, size + 1);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ buf[size] = '\0';
+ return buf;
+#undef BUFSIZE
+}
+
+int
+main (int argc, char * argv[])
+{
+ if (argc == 2)
+ {
+ /* Insert line breaks for a given width. */
+ int width = atoi (argv[1]);
+ char *input = read_file (stdin);
+ int length = strlen (input);
+ char *breaks = malloc (length);
+ int i;
+
+ u8_width_linebreaks ((uint8_t *) input, length, width, 0, 0, NULL, "UTF-8", breaks);
+
+ for (i = 0; i < length; i++)
+ {
+ switch (breaks[i])
+ {
+ case UC_BREAK_POSSIBLE:
+ putc ('\n', stdout);
+ break;
+ case UC_BREAK_MANDATORY:
+ break;
+ case UC_BREAK_PROHIBITED:
+ break;
+ default:
+ abort ();
+ }
+ putc (input[i], stdout);
+ }
+
+ free (breaks);
+
+ return 0;
+ }
+ else
+ return 1;
+}
+
+#endif /* TEST */
diff --git a/lib/unilbrk/ulc-common.c b/lib/unilbrk/ulc-common.c
new file mode 100644
index 00000000..d035ded7
--- /dev/null
+++ b/lib/unilbrk/ulc-common.c
@@ -0,0 +1,51 @@
+/* Line breaking auxiliary functions.
+ Copyright (C) 2001-2003, 2006-2008 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unilbrk/ulc-common.h"
+
+#include "c-ctype.h"
+#include "c-strcaseeq.h"
+
+int
+is_utf8_encoding (const char *encoding)
+{
+ if (STRCASEEQ (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0, 0))
+ return 1;
+ return 0;
+}
+
+#if C_CTYPE_ASCII
+
+/* Tests whether a string is entirely ASCII. Returns 1 if yes.
+ Returns 0 if the string is in an 8-bit encoding or an ISO-2022 encoding. */
+int
+is_all_ascii (const char *s, size_t n)
+{
+ for (; n > 0; s++, n--)
+ {
+ unsigned char c = (unsigned char) *s;
+
+ if (!(c_isprint (c) || c_isspace (c)))
+ return 0;
+ }
+ return 1;
+}
+
+#endif /* C_CTYPE_ASCII */
diff --git a/lib/unilbrk/ulc-common.h b/lib/unilbrk/ulc-common.h
new file mode 100644
index 00000000..3b481887
--- /dev/null
+++ b/lib/unilbrk/ulc-common.h
@@ -0,0 +1,31 @@
+/* Line breaking auxiliary functions.
+ Copyright (C) 2001-2003, 2006-2008 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Get size_t. */
+#include <stddef.h>
+
+#include "c-ctype.h"
+
+#define is_utf8_encoding unilbrk_is_utf8_encoding
+extern int is_utf8_encoding (const char *encoding);
+
+#if C_CTYPE_ASCII
+
+# define is_all_ascii unilbrk_is_all_ascii
+extern int is_all_ascii (const char *s, size_t n);
+
+#endif /* C_CTYPE_ASCII */
diff --git a/lib/unilbrk/ulc-possible-linebreaks.c b/lib/unilbrk/ulc-possible-linebreaks.c
new file mode 100644
index 00000000..cb952419
--- /dev/null
+++ b/lib/unilbrk/ulc-possible-linebreaks.c
@@ -0,0 +1,212 @@
+/* Line breaking of strings.
+ Copyright (C) 2001-2003, 2006-2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unilbrk.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "c-ctype.h"
+#include "uniconv.h"
+#include "unilbrk/ulc-common.h"
+
+/* Line breaking of a string in an arbitrary encoding.
+
+ We convert the input string to Unicode.
+
+ The standardized Unicode encodings are UTF-8, UCS-2, UCS-4, UTF-16,
+ UTF-16BE, UTF-16LE, UTF-7. UCS-2 supports only characters up to
+ \U0000FFFF. UTF-16 and variants support only characters up to
+ \U0010FFFF. UTF-7 is way too complex and not supported by glibc-2.1.
+ UCS-4 specification leaves doubts about endianness and byte order mark.
+ glibc currently interprets it as big endian without byte order mark,
+ but this is not backed by an RFC. So we use UTF-8. It supports
+ characters up to \U7FFFFFFF and is unambiguously defined. */
+
+void
+ulc_possible_linebreaks (const char *s, size_t n, const char *encoding,
+ char *p)
+{
+ if (n > 0)
+ {
+ if (is_utf8_encoding (encoding))
+ u8_possible_linebreaks ((const uint8_t *) s, n, encoding, p);
+ else
+ {
+ /* Convert the string to UTF-8 and build a translation table
+ from offsets into s to offsets into the translated string. */
+ size_t *offsets = (size_t *) malloc (n * sizeof (size_t));
+
+ if (offsets != NULL)
+ {
+ uint8_t *t;
+ size_t m;
+
+ t = u8_conv_from_encoding (encoding, iconveh_question_mark,
+ s, n, offsets, NULL, &m);
+ if (t != NULL)
+ {
+ char *q = (char *) (m > 0 ? malloc (m) : NULL);
+
+ if (m == 0 || q != NULL)
+ {
+ size_t i;
+
+ /* Determine the possible line breaks of the UTF-8
+ string. */
+ u8_possible_linebreaks (t, m, encoding, q);
+
+ /* Translate the result back to the original string. */
+ memset (p, UC_BREAK_PROHIBITED, n);
+ for (i = 0; i < n; i++)
+ if (offsets[i] != (size_t)(-1))
+ p[i] = q[offsets[i]];
+
+ free (q);
+ free (t);
+ free (offsets);
+ return;
+ }
+ free (t);
+ }
+ free (offsets);
+ }
+
+ /* Impossible to convert. */
+#if C_CTYPE_ASCII
+ if (is_all_ascii (s, n))
+ {
+ /* ASCII is a subset of UTF-8. */
+ u8_possible_linebreaks ((const uint8_t *) s, n, encoding, p);
+ return;
+ }
+#endif
+ /* We have a non-ASCII string and cannot convert it.
+ Don't produce line breaks except those already present in the
+ input string. All we assume here is that the encoding is
+ minimally ASCII compatible. */
+ {
+ const char *s_end = s + n;
+ while (s < s_end)
+ {
+ *p = (*s == '\n' ? UC_BREAK_MANDATORY : UC_BREAK_PROHIBITED);
+ s++;
+ p++;
+ }
+ }
+ }
+ }
+}
+
+
+#ifdef TEST
+
+#include <stdio.h>
+#include <locale.h>
+#include <string.h>
+
+/* Read the contents of an input stream, and return it, terminated with a NUL
+ byte. */
+char *
+read_file (FILE *stream)
+{
+#define BUFSIZE 4096
+ char *buf = NULL;
+ int alloc = 0;
+ int size = 0;
+ int count;
+
+ while (! feof (stream))
+ {
+ if (size + BUFSIZE > alloc)
+ {
+ alloc = alloc + alloc / 2;
+ if (alloc < size + BUFSIZE)
+ alloc = size + BUFSIZE;
+ buf = realloc (buf, alloc);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ }
+ count = fread (buf + size, 1, BUFSIZE, stream);
+ if (count == 0)
+ {
+ if (ferror (stream))
+ {
+ perror ("fread");
+ exit (1);
+ }
+ }
+ else
+ size += count;
+ }
+ buf = realloc (buf, size + 1);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ buf[size] = '\0';
+ return buf;
+#undef BUFSIZE
+}
+
+int
+main (int argc, char * argv[])
+{
+ setlocale (LC_CTYPE, "");
+ if (argc == 1)
+ {
+ /* Display all the break opportunities in the input string. */
+ char *input = read_file (stdin);
+ int length = strlen (input);
+ char *breaks = malloc (length);
+ int i;
+
+ ulc_possible_linebreaks (input, length, locale_charset (), breaks);
+
+ for (i = 0; i < length; i++)
+ {
+ switch (breaks[i])
+ {
+ case UC_BREAK_POSSIBLE:
+ putc ('|', stdout);
+ break;
+ case UC_BREAK_MANDATORY:
+ break;
+ case UC_BREAK_PROHIBITED:
+ break;
+ default:
+ abort ();
+ }
+ putc (input[i], stdout);
+ }
+
+ free (breaks);
+
+ return 0;
+ }
+ else
+ return 1;
+}
+
+#endif /* TEST */
diff --git a/lib/unilbrk/ulc-width-linebreaks.c b/lib/unilbrk/ulc-width-linebreaks.c
new file mode 100644
index 00000000..3b091bf2
--- /dev/null
+++ b/lib/unilbrk/ulc-width-linebreaks.c
@@ -0,0 +1,231 @@
+/* Line breaking of strings.
+ Copyright (C) 2001-2003, 2006-2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unilbrk.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "c-ctype.h"
+#include "uniconv.h"
+#include "unilbrk/ulc-common.h"
+
+/* Line breaking of a string in an arbitrary encoding.
+
+ We convert the input string to Unicode.
+
+ The standardized Unicode encodings are UTF-8, UCS-2, UCS-4, UTF-16,
+ UTF-16BE, UTF-16LE, UTF-7. UCS-2 supports only characters up to
+ \U0000FFFF. UTF-16 and variants support only characters up to
+ \U0010FFFF. UTF-7 is way too complex and not supported by glibc-2.1.
+ UCS-4 specification leaves doubts about endianness and byte order mark.
+ glibc currently interprets it as big endian without byte order mark,
+ but this is not backed by an RFC. So we use UTF-8. It supports
+ characters up to \U7FFFFFFF and is unambiguously defined. */
+
+int
+ulc_width_linebreaks (const char *s, size_t n,
+ int width, int start_column, int at_end_columns,
+ const char *o, const char *encoding,
+ char *p)
+{
+ if (n > 0)
+ {
+ if (is_utf8_encoding (encoding))
+ return u8_width_linebreaks ((const uint8_t *) s, n, width, start_column, at_end_columns, o, encoding, p);
+ else
+ {
+ /* Convert the string to UTF-8 and build a translation table
+ from offsets into s to offsets into the translated string. */
+ size_t *offsets = (size_t *) malloc (n * sizeof (size_t));
+
+ if (offsets != NULL)
+ {
+ uint8_t *t;
+ size_t m;
+
+ t = u8_conv_from_encoding (encoding, iconveh_question_mark,
+ s, n, offsets, NULL, &m);
+ if (t != NULL)
+ {
+ char *memory =
+ (char *) (m > 0 ? malloc (m + (o != NULL ? m : 0)) : NULL);
+
+ if (m == 0 || memory != NULL)
+ {
+ char *q = (char *) memory;
+ char *o8 = (o != NULL ? (char *) (q + m) : NULL);
+ int res_column;
+ size_t i;
+
+ /* Translate the overrides to the UTF-8 string. */
+ if (o != NULL)
+ {
+ memset (o8, UC_BREAK_UNDEFINED, m);
+ for (i = 0; i < n; i++)
+ if (offsets[i] != (size_t)(-1))
+ o8[offsets[i]] = o[i];
+ }
+
+ /* Determine the line breaks of the UTF-8 string. */
+ res_column =
+ u8_width_linebreaks (t, m, width, start_column, at_end_columns, o8, encoding, q);
+
+ /* Translate the result back to the original string. */
+ memset (p, UC_BREAK_PROHIBITED, n);
+ for (i = 0; i < n; i++)
+ if (offsets[i] != (size_t)(-1))
+ p[i] = q[offsets[i]];
+
+ free (memory);
+ free (t);
+ free (offsets);
+ return res_column;
+ }
+ free (t);
+ }
+ free (offsets);
+ }
+ /* Impossible to convert. */
+#if C_CTYPE_ASCII
+ if (is_all_ascii (s, n))
+ {
+ /* ASCII is a subset of UTF-8. */
+ return u8_width_linebreaks ((const uint8_t *) s, n, width, start_column, at_end_columns, o, encoding, p);
+ }
+#endif
+ /* We have a non-ASCII string and cannot convert it.
+ Don't produce line breaks except those already present in the
+ input string. All we assume here is that the encoding is
+ minimally ASCII compatible. */
+ {
+ const char *s_end = s + n;
+ while (s < s_end)
+ {
+ *p = ((o != NULL && *o == UC_BREAK_MANDATORY) || *s == '\n'
+ ? UC_BREAK_MANDATORY
+ : UC_BREAK_PROHIBITED);
+ s++;
+ p++;
+ if (o != NULL)
+ o++;
+ }
+ /* We cannot compute widths in this case. */
+ }
+ }
+ }
+ return start_column;
+}
+
+
+#ifdef TEST
+
+#include <stdio.h>
+#include <locale.h>
+
+/* Read the contents of an input stream, and return it, terminated with a NUL
+ byte. */
+char *
+read_file (FILE *stream)
+{
+#define BUFSIZE 4096
+ char *buf = NULL;
+ int alloc = 0;
+ int size = 0;
+ int count;
+
+ while (! feof (stream))
+ {
+ if (size + BUFSIZE > alloc)
+ {
+ alloc = alloc + alloc / 2;
+ if (alloc < size + BUFSIZE)
+ alloc = size + BUFSIZE;
+ buf = realloc (buf, alloc);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ }
+ count = fread (buf + size, 1, BUFSIZE, stream);
+ if (count == 0)
+ {
+ if (ferror (stream))
+ {
+ perror ("fread");
+ exit (1);
+ }
+ }
+ else
+ size += count;
+ }
+ buf = realloc (buf, size + 1);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ buf[size] = '\0';
+ return buf;
+#undef BUFSIZE
+}
+
+int
+main (int argc, char * argv[])
+{
+ setlocale (LC_CTYPE, "");
+ if (argc == 2)
+ {
+ /* Insert line breaks for a given width. */
+ int width = atoi (argv[1]);
+ char *input = read_file (stdin);
+ int length = strlen (input);
+ char *breaks = malloc (length);
+ int i;
+
+ ulc_width_linebreaks (input, length, width, 0, 0, NULL, locale_charset (), breaks);
+
+ for (i = 0; i < length; i++)
+ {
+ switch (breaks[i])
+ {
+ case UC_BREAK_POSSIBLE:
+ putc ('\n', stdout);
+ break;
+ case UC_BREAK_MANDATORY:
+ break;
+ case UC_BREAK_PROHIBITED:
+ break;
+ default:
+ abort ();
+ }
+ putc (input[i], stdout);
+ }
+
+ free (breaks);
+
+ return 0;
+ }
+ else
+ return 1;
+}
+
+#endif /* TEST */
diff --git a/lib/uniname.h b/lib/uniname.h
new file mode 100644
index 00000000..7b5a367d
--- /dev/null
+++ b/lib/uniname.h
@@ -0,0 +1,44 @@
+/* Association between Unicode characters and their names.
+ Copyright (C) 2000-2002, 2005, 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _UNINAME_H
+#define _UNINAME_H
+
+#include "unitypes.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Required size of buffer for a Unicode character name. */
+#define UNINAME_MAX 256
+
+/* Looks up the name of a Unicode character, in uppercase ASCII.
+ Returns the filled buf, or NULL if the character does not have a name. */
+extern char *
+ unicode_character_name (ucs4_t uc, char *buf);
+
+/* Looks up the Unicode character with a given name, in upper- or lowercase
+ ASCII. Returns the character if found, or UNINAME_INVALID if not found. */
+extern ucs4_t
+ unicode_name_character (const char *name);
+#define UNINAME_INVALID ((ucs4_t) 0xFFFF)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UNINAME_H */
diff --git a/lib/uniname/gen-uninames.lisp b/lib/uniname/gen-uninames.lisp
new file mode 100755
index 00000000..d08e93f0
--- /dev/null
+++ b/lib/uniname/gen-uninames.lisp
@@ -0,0 +1,301 @@
+#!/usr/local/bin/clisp -C
+
+;;; Creation of gnulib's uninames.h from the UnicodeData.txt table.
+;;; Bruno Haible 2000-12-28
+
+(defparameter add-comments nil)
+
+(defstruct unicode-char
+ (code nil :type integer)
+ (name nil :type string)
+ word-indices
+ word-indices-index
+)
+
+(defstruct word-list
+ (hashed nil :type hash-table)
+ (sorted nil :type list)
+ size ; number of characters total
+ length ; number of words
+)
+
+(defun main (inputfile outputfile)
+ (declare (type string inputfile outputfile))
+ #+UNICODE (setq *default-file-encoding* charset:utf-8)
+ (let ((all-chars '()))
+ ;; Read all characters and names from the input file.
+ (with-open-file (istream inputfile :direction :input)
+ (loop
+ (let ((line (read-line istream nil nil)))
+ (unless line (return))
+ (let* ((i1 (position #\; line))
+ (i2 (position #\; line :start (1+ i1)))
+ (code-string (subseq line 0 i1))
+ (code (parse-integer code-string :radix 16))
+ (name-string (subseq line (1+ i1) i2)))
+ ; Ignore characters whose name starts with "<".
+ (unless (eql (char name-string 0) #\<)
+ ; Also ignore Hangul syllables; they are treated specially.
+ (unless (<= #xAC00 code #xD7A3)
+ ; Also ignore CJK compatibility ideographs; they are treated
+ ; specially as well.
+ (unless (or (<= #xF900 code #xFA2D) (<= #xFA30 code #xFA6A)
+ (<= #xFA70 code #xFAD9) (<= #x2F800 code #x2FA1D))
+ ; Transform the code so that it fits in 16 bits. In
+ ; Unicode 5.1 the following ranges are used.
+ ; 0x00000..0x04DFF >>12= 0x00..0x04 -> 0x0..0x4
+ ; 0x0A000..0x0AAFF >>12= 0x0A -> 0x5
+ ; 0x0F900..0x0FFFF >>12= 0x0F -> 0x6
+ ; 0x10000..0x10A58 >>12= 0x10 -> 0x7
+ ; 0x12000..0x12473 >>12= 0x12 -> 0x8
+ ; 0x1D000..0x1D7FF >>12= 0x1D -> 0x9
+ ; 0x1F000..0x1F093 >>12= 0x1F -> 0xA
+ ; 0x2F800..0x2FAFF >>12= 0x2F -> 0xB
+ ; 0xE0000..0xE00FF >>12= 0xE0 -> 0xC
+ (flet ((transform (x)
+ (dpb
+ (case (ash x -12)
+ ((#x00 #x01 #x02 #x03 #x04) (ash x -12))
+ (#x0A 5)
+ (#x0F 6)
+ (#x10 7)
+ (#x12 8)
+ (#x1D 9)
+ (#x1F #xA)
+ (#x2F #xB)
+ (#xE0 #xC)
+ (t (error "Update the transform function for 0x~5,'0X" x))
+ )
+ (byte 8 12)
+ x
+ )) )
+ (push (make-unicode-char :code (transform code)
+ :name name-string)
+ all-chars
+ ) ) ) ) )
+ ) ) ) )
+ (setq all-chars (nreverse all-chars))
+ ;; Split into words.
+ (let ((words-by-length (make-array 0 :adjustable t)))
+ (dolist (name (list* "HANGUL SYLLABLE" "CJK COMPATIBILITY" (mapcar #'unicode-char-name all-chars)))
+ (let ((i1 0))
+ (loop
+ (when (>= i1 (length name)) (return))
+ (let ((i2 (or (position #\Space name :start i1) (length name))))
+ (let* ((word (subseq name i1 i2))
+ (len (length word)))
+ (when (>= len (length words-by-length))
+ (adjust-array words-by-length (1+ len))
+ )
+ (unless (aref words-by-length len)
+ (setf (aref words-by-length len)
+ (make-word-list
+ :hashed (make-hash-table :test #'equal)
+ :sorted '()
+ ) ) )
+ (let ((word-list (aref words-by-length len)))
+ (unless (gethash word (word-list-hashed word-list))
+ (setf (gethash word (word-list-hashed word-list)) t)
+ (push word (word-list-sorted word-list))
+ ) )
+ )
+ (setq i1 (1+ i2))
+ ) ) ) )
+ ;; Sort the word lists.
+ (dotimes (len (length words-by-length))
+ (unless (aref words-by-length len)
+ (setf (aref words-by-length len)
+ (make-word-list
+ :hashed (make-hash-table :test #'equal)
+ :sorted '()
+ ) ) )
+ (let ((word-list (aref words-by-length len)))
+ (setf (word-list-sorted word-list)
+ (sort (word-list-sorted word-list) #'string<)
+ )
+ (setf (word-list-size word-list)
+ (reduce #'+ (mapcar #'length (word-list-sorted word-list)))
+ )
+ (setf (word-list-length word-list)
+ (length (word-list-sorted word-list))
+ ) ) )
+ ;; Output the tables.
+ (with-open-file (ostream outputfile :direction :output
+ #+UNICODE :external-format #+UNICODE charset:ascii)
+ (format ostream "/* DO NOT EDIT! GENERATED AUTOMATICALLY! */~%")
+ (format ostream "/*~%")
+ (format ostream " * ~A~%" (file-namestring outputfile))
+ (format ostream " *~%")
+ (format ostream " * Unicode character name table.~%")
+ (format ostream " * Generated automatically by the gen-uninames utility.~%")
+ (format ostream " */~%")
+ (format ostream "~%")
+ (format ostream "static const char unicode_name_words[~D] = {~%"
+ (let ((sum 0))
+ (dotimes (len (length words-by-length))
+ (let ((word-list (aref words-by-length len)))
+ (incf sum (word-list-size word-list))
+ ) )
+ sum
+ ) )
+ (dotimes (len (length words-by-length))
+ (let ((word-list (aref words-by-length len)))
+ (dolist (word (word-list-sorted word-list))
+ (format ostream " ~{ '~C',~}~%" (coerce word 'list))
+ ) ) )
+ (format ostream "};~%")
+ (format ostream "#define UNICODE_CHARNAME_NUM_WORDS ~D~%"
+ (let ((sum 0))
+ (dotimes (len (length words-by-length))
+ (let ((word-list (aref words-by-length len)))
+ (incf sum (word-list-length word-list))
+ ) )
+ sum
+ ) )
+ #| ; Redundant data
+ (format ostream "static const uint16_t unicode_name_word_offsets[~D] = {~%"
+ (let ((sum 0))
+ (dotimes (len (length words-by-length))
+ (let ((word-list (aref words-by-length len)))
+ (incf sum (word-list-length word-list))
+ ) )
+ sum
+ ) )
+ (dotimes (len (length words-by-length))
+ (let ((word-list (aref words-by-length len)))
+ (when (word-list-sorted word-list)
+ (format ostream " ")
+ (do ((l (word-list-sorted word-list) (cdr l))
+ (offset 0 (+ offset (length (car l)))))
+ ((endp l))
+ (format ostream "~<~% ~0,79:; ~D,~>" offset)
+ )
+ (format ostream "~%")
+ ) ) )
+ (format ostream "};~%")
+ |#
+ (format ostream "static const struct { uint16_t extra_offset; uint16_t ind_offset; } unicode_name_by_length[~D] = {~%"
+ (1+ (length words-by-length))
+ )
+ (let ((extra-offset 0)
+ (ind-offset 0))
+ (dotimes (len (length words-by-length))
+ (let ((word-list (aref words-by-length len)))
+ (format ostream " { ~D, ~D },~%" extra-offset ind-offset)
+ (incf extra-offset (word-list-size word-list))
+ (incf ind-offset (word-list-length word-list))
+ ) )
+ (format ostream " { ~D, ~D }~%" extra-offset ind-offset)
+ )
+ (format ostream "};~%")
+ (let ((ind-offset 0))
+ (dotimes (len (length words-by-length))
+ (let ((word-list (aref words-by-length len)))
+ (dolist (word (word-list-sorted word-list))
+ (setf (gethash word (word-list-hashed word-list)) ind-offset)
+ (incf ind-offset)
+ ) ) ) )
+ (dolist (word '("HANGUL" "SYLLABLE" "CJK" "COMPATIBILITY"))
+ (format ostream "#define UNICODE_CHARNAME_WORD_~A ~D~%" word
+ (gethash word (word-list-hashed (aref words-by-length (length word))))
+ ) )
+ ;; Compute the word-indices for every unicode-char.
+ (dolist (uc all-chars)
+ (let ((name (unicode-char-name uc))
+ (indices '()))
+ (let ((i1 0))
+ (loop
+ (when (>= i1 (length name)) (return))
+ (let ((i2 (or (position #\Space name :start i1) (length name))))
+ (let* ((word (subseq name i1 i2))
+ (len (length word)))
+ (push (gethash word (word-list-hashed (aref words-by-length len)))
+ indices
+ )
+ )
+ (setq i1 (1+ i2))
+ ) ) )
+ (setf (unicode-char-word-indices uc)
+ (coerce (nreverse indices) 'vector)
+ )
+ ) )
+ ;; Sort the list of unicode-chars by word-indices.
+ (setq all-chars
+ (sort all-chars
+ (lambda (vec1 vec2)
+ (let ((len1 (length vec1))
+ (len2 (length vec2)))
+ (do ((i 0 (1+ i)))
+ (nil)
+ (if (< i len2)
+ (if (< i len1)
+ (cond ((< (aref vec1 i) (aref vec2 i)) (return t))
+ ((> (aref vec1 i) (aref vec2 i)) (return nil))
+ )
+ (return t)
+ )
+ (return nil)
+ ) ) ) )
+ :key #'unicode-char-word-indices
+ ) )
+ ;; Output the word-indices.
+ (format ostream "static const uint16_t unicode_names[~D] = {~%"
+ (reduce #'+ (mapcar (lambda (uc) (length (unicode-char-word-indices uc))) all-chars))
+ )
+ (let ((i 0))
+ (dolist (uc all-chars)
+ (format ostream " ~{ ~D,~}"
+ (maplist (lambda (r) (+ (* 2 (car r)) (if (cdr r) 1 0)))
+ (coerce (unicode-char-word-indices uc) 'list)
+ )
+ )
+ (when add-comments
+ (format ostream "~40T/* ~A */" (unicode-char-name uc))
+ )
+ (format ostream "~%")
+ (setf (unicode-char-word-indices-index uc) i)
+ (incf i (length (unicode-char-word-indices uc)))
+ ) )
+ (format ostream "};~%")
+ (format ostream "static const struct { uint16_t code; uint32_t name:24; }~%")
+ (format ostream "#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)~%__attribute__((__packed__))~%#endif~%")
+ (format ostream "unicode_name_to_code[~D] = {~%"
+ (length all-chars)
+ )
+ (dolist (uc all-chars)
+ (format ostream " { 0x~4,'0X, ~D },"
+ (unicode-char-code uc)
+ (unicode-char-word-indices-index uc)
+ )
+ (when add-comments
+ (format ostream "~21T/* ~A */" (unicode-char-name uc))
+ )
+ (format ostream "~%")
+ )
+ (format ostream "};~%")
+ (format ostream "static const struct { uint16_t code; uint32_t name:24; }~%")
+ (format ostream "#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)~%__attribute__((__packed__))~%#endif~%")
+ (format ostream "unicode_code_to_name[~D] = {~%"
+ (length all-chars)
+ )
+ (dolist (uc (sort (copy-list all-chars) #'< :key #'unicode-char-code))
+ (format ostream " { 0x~4,'0X, ~D },"
+ (unicode-char-code uc)
+ (unicode-char-word-indices-index uc)
+ )
+ (when add-comments
+ (format ostream "~21T/* ~A */" (unicode-char-name uc))
+ )
+ (format ostream "~%")
+ )
+ (format ostream "};~%")
+ (format ostream "#define UNICODE_CHARNAME_MAX_LENGTH ~D~%"
+ (reduce #'max (mapcar (lambda (uc) (length (unicode-char-name uc))) all-chars))
+ )
+ (format ostream "#define UNICODE_CHARNAME_MAX_WORDS ~D~%"
+ (reduce #'max (mapcar (lambda (uc) (length (unicode-char-word-indices uc))) all-chars))
+ )
+ )
+) ) )
+
+(main (first *args*) (second *args*))
diff --git a/lib/uniname/uniname.c b/lib/uniname/uniname.c
new file mode 100644
index 00000000..bef58af3
--- /dev/null
+++ b/lib/uniname/uniname.c
@@ -0,0 +1,516 @@
+/* Association between Unicode characters and their names.
+ Copyright (C) 2000-2002, 2005-2007, 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniname.h"
+
+#include <assert.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+
+#define SIZEOF(a) (sizeof(a) / sizeof(a[0]))
+
+
+/* Table of Unicode character names, derived from UnicodeData.txt.
+ This table is generated in a way to minimize the memory footprint:
+ 1. its compiled size is small (less than 350 KB),
+ 2. it resides entirely in the text or read-only data segment of the
+ executable or shared library: the table contains only immediate
+ integers, no pointers, and the functions don't do heap allocation.
+ */
+#include "uninames.h"
+/* It contains:
+ static const char unicode_name_words[36303] = ...;
+ #define UNICODE_CHARNAME_NUM_WORDS 6260
+ static const struct { uint16_t extra_offset; uint16_t ind_offset; } unicode_name_by_length[26] = ...;
+ #define UNICODE_CHARNAME_WORD_HANGUL 3902
+ #define UNICODE_CHARNAME_WORD_SYLLABLE 4978
+ #define UNICODE_CHARNAME_WORD_CJK 417
+ #define UNICODE_CHARNAME_WORD_COMPATIBILITY 6107
+ static const uint16_t unicode_names[68940] = ...;
+ static const struct { uint16_t code; uint32_t name:24; } unicode_name_to_code[16626] = ...;
+ static const struct { uint16_t code; uint32_t name:24; } unicode_code_to_name[16626] = ...;
+ #define UNICODE_CHARNAME_MAX_LENGTH 83
+ #define UNICODE_CHARNAME_MAX_WORDS 13
+*/
+
+/* Returns the word with a given index. */
+static const char *
+unicode_name_word (unsigned int index, unsigned int *lengthp)
+{
+ unsigned int i1;
+ unsigned int i2;
+ unsigned int i;
+
+ assert (index < UNICODE_CHARNAME_NUM_WORDS);
+
+ /* Binary search for i with
+ unicode_name_by_length[i].ind_offset <= index
+ and
+ index < unicode_name_by_length[i+1].ind_offset
+ */
+
+ i1 = 0;
+ i2 = SIZEOF (unicode_name_by_length) - 1;
+ while (i2 - i1 > 1)
+ {
+ unsigned int i = (i1 + i2) >> 1;
+ if (unicode_name_by_length[i].ind_offset <= index)
+ i1 = i;
+ else
+ i2 = i;
+ }
+ i = i1;
+ assert (unicode_name_by_length[i].ind_offset <= index
+ && index < unicode_name_by_length[i+1].ind_offset);
+ *lengthp = i;
+ return &unicode_name_words[unicode_name_by_length[i].extra_offset
+ + (index-unicode_name_by_length[i].ind_offset)*i];
+}
+
+/* Looks up the index of a word. */
+static int
+unicode_name_word_lookup (const char *word, unsigned int length)
+{
+ if (length > 0 && length < SIZEOF (unicode_name_by_length) - 1)
+ {
+ /* Binary search among the words of given length. */
+ unsigned int extra_offset = unicode_name_by_length[length].extra_offset;
+ unsigned int i0 = unicode_name_by_length[length].ind_offset;
+ unsigned int i1 = i0;
+ unsigned int i2 = unicode_name_by_length[length+1].ind_offset;
+ while (i2 - i1 > 0)
+ {
+ unsigned int i = (i1 + i2) >> 1;
+ const char *p = &unicode_name_words[extra_offset + (i-i0)*length];
+ const char *w = word;
+ unsigned int n = length;
+ for (;;)
+ {
+ if (*p < *w)
+ {
+ if (i1 == i)
+ return -1;
+ /* Note here: i1 < i < i2. */
+ i1 = i;
+ break;
+ }
+ if (*p > *w)
+ {
+ /* Note here: i1 <= i < i2. */
+ i2 = i;
+ break;
+ }
+ p++; w++; n--;
+ if (n == 0)
+ return i;
+ }
+ }
+ }
+ return -1;
+}
+
+/* Auxiliary tables for Hangul syllable names, see the Unicode 3.0 book,
+ sections 3.11 and 4.4. */
+static const char jamo_initial_short_name[19][3] =
+{
+ "G", "GG", "N", "D", "DD", "R", "M", "B", "BB", "S", "SS", "", "J", "JJ",
+ "C", "K", "T", "P", "H"
+};
+static const char jamo_medial_short_name[21][4] =
+{
+ "A", "AE", "YA", "YAE", "EO", "E", "YEO", "YE", "O", "WA", "WAE", "OE", "YO",
+ "U", "WEO", "WE", "WI", "YU", "EU", "YI", "I"
+};
+static const char jamo_final_short_name[28][3] =
+{
+ "", "G", "GG", "GS", "N", "NI", "NH", "D", "L", "LG", "LM", "LB", "LS", "LT",
+ "LP", "LH", "M", "B", "BS", "S", "SS", "NG", "J", "C", "K", "T", "P", "H"
+};
+
+/* Looks up the name of a Unicode character, in uppercase ASCII.
+ Returns the filled buf, or NULL if the character does not have a name. */
+char *
+unicode_character_name (ucs4_t c, char *buf)
+{
+ if (c >= 0xAC00 && c <= 0xD7A3)
+ {
+ /* Special case for Hangul syllables. Keeps the tables small. */
+ char *ptr;
+ unsigned int tmp;
+ unsigned int index1;
+ unsigned int index2;
+ unsigned int index3;
+ const char *q;
+
+ /* buf needs to have at least 16 + 7 bytes here. */
+ memcpy (buf, "HANGUL SYLLABLE ", 16);
+ ptr = buf + 16;
+
+ tmp = c - 0xAC00;
+ index3 = tmp % 28; tmp = tmp / 28;
+ index2 = tmp % 21; tmp = tmp / 21;
+ index1 = tmp;
+
+ q = jamo_initial_short_name[index1];
+ while (*q != '\0')
+ *ptr++ = *q++;
+ q = jamo_medial_short_name[index2];
+ while (*q != '\0')
+ *ptr++ = *q++;
+ q = jamo_final_short_name[index3];
+ while (*q != '\0')
+ *ptr++ = *q++;
+ *ptr = '\0';
+ return buf;
+ }
+ else if ((c >= 0xF900 && c <= 0xFA2D) || (c >= 0xFA30 && c <= 0xFA6A)
+ || (c >= 0xFA70 && c <= 0xFAD9) || (c >= 0x2F800 && c <= 0x2FA1D))
+ {
+ /* Special case for CJK compatibility ideographs. Keeps the tables
+ small. */
+ char *ptr;
+ int i;
+
+ /* buf needs to have at least 28 + 5 bytes here. */
+ memcpy (buf, "CJK COMPATIBILITY IDEOGRAPH-", 28);
+ ptr = buf + 28;
+
+ for (i = (c < 0x10000 ? 12 : 16); i >= 0; i -= 4)
+ {
+ unsigned int x = (c >> i) & 0xf;
+ *ptr++ = (x < 10 ? '0' : 'A' - 10) + x;
+ }
+ *ptr = '\0';
+ return buf;
+ }
+ else
+ {
+ const uint16_t *words;
+
+ /* Transform the code so that it fits in 16 bits. */
+ switch (c >> 12)
+ {
+ case 0x00: case 0x01: case 0x02: case 0x03: case 0x04:
+ break;
+ case 0x0A:
+ c -= 0x05000;
+ break;
+ case 0x0F:
+ c -= 0x09000;
+ break;
+ case 0x10:
+ c -= 0x09000;
+ break;
+ case 0x12:
+ c -= 0x0A000;
+ break;
+ case 0x1D:
+ c -= 0x14000;
+ break;
+ case 0x1F:
+ c -= 0x15000;
+ break;
+ case 0x2F:
+ c -= 0x24000;
+ break;
+ case 0xE0:
+ c -= 0xD4000;
+ break;
+ default:
+ return NULL;
+ }
+
+ {
+ /* Binary search in unicode_code_to_name. */
+ unsigned int i1 = 0;
+ unsigned int i2 = SIZEOF (unicode_code_to_name);
+ for (;;)
+ {
+ unsigned int i = (i1 + i2) >> 1;
+ if (unicode_code_to_name[i].code == c)
+ {
+ words = &unicode_names[unicode_code_to_name[i].name];
+ break;
+ }
+ else if (unicode_code_to_name[i].code < c)
+ {
+ if (i1 == i)
+ {
+ words = NULL;
+ break;
+ }
+ /* Note here: i1 < i < i2. */
+ i1 = i;
+ }
+ else if (unicode_code_to_name[i].code > c)
+ {
+ if (i2 == i)
+ {
+ words = NULL;
+ break;
+ }
+ /* Note here: i1 <= i < i2. */
+ i2 = i;
+ }
+ }
+ }
+ if (words != NULL)
+ {
+ /* Found it in unicode_code_to_name. Now concatenate the words. */
+ /* buf needs to have at least UNICODE_CHARNAME_MAX_LENGTH bytes. */
+ char *ptr = buf;
+ for (;;)
+ {
+ unsigned int wordlen;
+ const char *word = unicode_name_word (*words>>1, &wordlen);
+ do
+ *ptr++ = *word++;
+ while (--wordlen > 0);
+ if ((*words & 1) == 0)
+ break;
+ *ptr++ = ' ';
+ words++;
+ }
+ *ptr = '\0';
+ return buf;
+ }
+ return NULL;
+ }
+}
+
+/* Looks up the Unicode character with a given name, in upper- or lowercase
+ ASCII. Returns the character if found, or UNINAME_INVALID if not found. */
+ucs4_t
+unicode_name_character (const char *name)
+{
+ unsigned int len = strlen (name);
+ if (len > 1 && len <= UNICODE_CHARNAME_MAX_LENGTH)
+ {
+ /* Test for "word1 word2 ..." syntax. */
+ char buf[UNICODE_CHARNAME_MAX_LENGTH];
+ char *ptr = buf;
+ for (;;)
+ {
+ char c = *name++;
+ if (!(c >= ' ' && c <= '~'))
+ break;
+ *ptr++ = (c >= 'a' && c <= 'z' ? c - 'a' + 'A' : c);
+ if (--len == 0)
+ goto filled_buf;
+ }
+ if (false)
+ filled_buf:
+ {
+ /* Convert the constituents to uint16_t words. */
+ uint16_t words[UNICODE_CHARNAME_MAX_WORDS];
+ uint16_t *wordptr = words;
+ {
+ const char *p1 = buf;
+ for (;;)
+ {
+ {
+ int word;
+ const char *p2 = p1;
+ while (p2 < ptr && *p2 != ' ')
+ p2++;
+ word = unicode_name_word_lookup (p1, p2 - p1);
+ if (word < 0)
+ break;
+ if (wordptr == &words[UNICODE_CHARNAME_MAX_WORDS])
+ break;
+ *wordptr++ = word;
+ if (p2 == ptr)
+ goto filled_words;
+ p1 = p2 + 1;
+ }
+ /* Special case for Hangul syllables. Keeps the tables small. */
+ if (wordptr == &words[2]
+ && words[0] == UNICODE_CHARNAME_WORD_HANGUL
+ && words[1] == UNICODE_CHARNAME_WORD_SYLLABLE)
+ {
+ /* Split the last word [p1..ptr) into three parts:
+ 1) [BCDGHJKMNPRST]
+ 2) [AEIOUWY]
+ 3) [BCDGHIJKLMNPST]
+ */
+ const char *p2;
+ const char *p3;
+ const char *p4;
+
+ p2 = p1;
+ while (p2 < ptr
+ && (*p2 == 'B' || *p2 == 'C' || *p2 == 'D'
+ || *p2 == 'G' || *p2 == 'H' || *p2 == 'J'
+ || *p2 == 'K' || *p2 == 'M' || *p2 == 'N'
+ || *p2 == 'P' || *p2 == 'R' || *p2 == 'S'
+ || *p2 == 'T'))
+ p2++;
+ p3 = p2;
+ while (p3 < ptr
+ && (*p3 == 'A' || *p3 == 'E' || *p3 == 'I'
+ || *p3 == 'O' || *p3 == 'U' || *p3 == 'W'
+ || *p3 == 'Y'))
+ p3++;
+ p4 = p3;
+ while (p4 < ptr
+ && (*p4 == 'B' || *p4 == 'C' || *p4 == 'D'
+ || *p4 == 'G' || *p4 == 'H' || *p4 == 'I'
+ || *p4 == 'J' || *p4 == 'K' || *p4 == 'L'
+ || *p4 == 'M' || *p4 == 'N' || *p4 == 'P'
+ || *p4 == 'S' || *p4 == 'T'))
+ p4++;
+ if (p4 == ptr)
+ {
+ unsigned int n1 = p2 - p1;
+ unsigned int n2 = p3 - p2;
+ unsigned int n3 = p4 - p3;
+
+ if (n1 <= 2 && (n2 >= 1 && n2 <= 3) && n3 <= 2)
+ {
+ unsigned int index1;
+
+ for (index1 = 0; index1 < 19; index1++)
+ if (memcmp(jamo_initial_short_name[index1], p1, n1) == 0
+ && jamo_initial_short_name[index1][n1] == '\0')
+ {
+ unsigned int index2;
+
+ for (index2 = 0; index2 < 21; index2++)
+ if (memcmp(jamo_medial_short_name[index2], p2, n2) == 0
+ && jamo_medial_short_name[index2][n2] == '\0')
+ {
+ unsigned int index3;
+
+ for (index3 = 0; index3 < 28; index3++)
+ if (memcmp(jamo_final_short_name[index3], p3, n3) == 0
+ && jamo_final_short_name[index3][n3] == '\0')
+ {
+ return 0xAC00 + (index1 * 21 + index2) * 28 + index3;
+ }
+ break;
+ }
+ break;
+ }
+ }
+ }
+ }
+ /* Special case for CJK compatibility ideographs. Keeps the
+ tables small. */
+ if (wordptr == &words[2]
+ && words[0] == UNICODE_CHARNAME_WORD_CJK
+ && words[1] == UNICODE_CHARNAME_WORD_COMPATIBILITY
+ && p1 + 14 <= ptr
+ && p1 + 15 >= ptr
+ && memcmp (p1, "IDEOGRAPH-", 10) == 0)
+ {
+ const char *p2 = p1 + 10;
+
+ if (*p2 != '0')
+ {
+ unsigned int c = 0;
+
+ for (;;)
+ {
+ if (*p2 >= '0' && *p2 <= '9')
+ c += (*p2 - '0');
+ else if (*p2 >= 'A' && *p2 <= 'F')
+ c += (*p2 - 'A' + 10);
+ else
+ break;
+ p2++;
+ if (p2 == ptr)
+ {
+ if ((c >= 0xF900 && c <= 0xFA2D)
+ || (c >= 0xFA30 && c <= 0xFA6A)
+ || (c >= 0xFA70 && c <= 0xFAD9)
+ || (c >= 0x2F800 && c <= 0x2FA1D))
+ return c;
+ else
+ break;
+ }
+ c = c << 4;
+ }
+ }
+ }
+ }
+ }
+ if (false)
+ filled_words:
+ {
+ /* Multiply by 2, to simplify later comparisons. */
+ unsigned int words_length = wordptr - words;
+ {
+ int i = words_length - 1;
+ words[i] = 2 * words[i];
+ for (; --i >= 0; )
+ words[i] = 2 * words[i] + 1;
+ }
+ /* Binary search in unicode_name_to_code. */
+ {
+ unsigned int i1 = 0;
+ unsigned int i2 = SIZEOF (unicode_name_to_code);
+ for (;;)
+ {
+ unsigned int i = (i1 + i2) >> 1;
+ const uint16_t *w = words;
+ const uint16_t *p = &unicode_names[unicode_name_to_code[i].name];
+ unsigned int n = words_length;
+ for (;;)
+ {
+ if (*p < *w)
+ {
+ if (i1 == i)
+ goto name_not_found;
+ /* Note here: i1 < i < i2. */
+ i1 = i;
+ break;
+ }
+ else if (*p > *w)
+ {
+ if (i2 == i)
+ goto name_not_found;
+ /* Note here: i1 <= i < i2. */
+ i2 = i;
+ break;
+ }
+ p++; w++; n--;
+ if (n == 0)
+ {
+ unsigned int c = unicode_name_to_code[i].code;
+
+ /* Undo the transformation to 16-bit space. */
+ static const unsigned int offset[13] =
+ {
+ 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
+ 0x05000, 0x09000, 0x09000, 0x0A000, 0x14000,
+ 0x15000, 0x24000, 0xD4000
+ };
+ return c + offset[c >> 12];
+ }
+ }
+ }
+ }
+ name_not_found: ;
+ }
+ }
+ }
+ return UNINAME_INVALID;
+}
diff --git a/lib/uniname/uninames.h b/lib/uniname/uninames.h
new file mode 100644
index 00000000..7b6db1f1
--- /dev/null
+++ b/lib/uniname/uninames.h
@@ -0,0 +1,61495 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/*
+ * uninames.h
+ *
+ * Unicode character name table.
+ * Generated automatically by the gen-uninames utility.
+ */
+
+static const char unicode_name_words[39544] = {
+ 'A',
+ 'B',
+ 'C',
+ 'D',
+ 'E',
+ 'F',
+ 'G',
+ 'H',
+ 'I',
+ 'J',
+ 'K',
+ 'L',
+ 'M',
+ 'N',
+ 'O',
+ 'P',
+ 'Q',
+ 'R',
+ 'S',
+ 'T',
+ 'U',
+ 'V',
+ 'W',
+ 'X',
+ 'Y',
+ 'Z',
+ '-', 'A',
+ 'A', '2',
+ 'A', '3',
+ 'A', 'A',
+ 'A', 'B',
+ 'A', 'C',
+ 'A', 'D',
+ 'A', 'E',
+ 'A', 'G',
+ 'A', 'H',
+ 'A', 'I',
+ 'A', 'K',
+ 'A', 'L',
+ 'A', 'M',
+ 'A', 'N',
+ 'A', 'O',
+ 'A', 'P',
+ 'A', 'Q',
+ 'A', 'S',
+ 'A', 'T',
+ 'A', 'U',
+ 'A', 'V',
+ 'A', 'X',
+ 'A', 'Y',
+ 'B', 'A',
+ 'B', 'E',
+ 'B', 'H',
+ 'B', 'I',
+ 'B', 'O',
+ 'B', 'Q',
+ 'B', 'U',
+ 'B', 'Y',
+ 'C', 'A',
+ 'C', 'C',
+ 'C', 'D',
+ 'C', 'E',
+ 'C', 'H',
+ 'C', 'I',
+ 'C', 'M',
+ 'C', 'O',
+ 'C', 'U',
+ 'C', 'Y',
+ 'D', '2',
+ 'D', 'A',
+ 'D', 'B',
+ 'D', 'E',
+ 'D', 'I',
+ 'D', 'L',
+ 'D', 'M',
+ 'D', 'O',
+ 'D', 'U',
+ 'D', 'V',
+ 'D', 'Z',
+ 'E', '2',
+ 'E', 'A',
+ 'E', 'E',
+ 'E', 'F',
+ 'E', 'H',
+ 'E', 'I',
+ 'E', 'K',
+ 'E', 'L',
+ 'E', 'M',
+ 'E', 'N',
+ 'E', 'O',
+ 'E', 'P',
+ 'E', 'R',
+ 'E', 'S',
+ 'E', 'T',
+ 'E', 'U',
+ 'E', 'V',
+ 'E', 'W',
+ 'E', 'X',
+ 'F', 'A',
+ 'F', 'E',
+ 'F', 'F',
+ 'F', 'I',
+ 'F', 'L',
+ 'F', 'M',
+ 'F', 'O',
+ 'F', 'U',
+ 'F', 'Y',
+ 'G', '2',
+ 'G', 'A',
+ 'G', 'B',
+ 'G', 'E',
+ 'G', 'G',
+ 'G', 'I',
+ 'G', 'N',
+ 'G', 'O',
+ 'G', 'U',
+ 'G', 'V',
+ 'G', 'Y',
+ 'H', 'A',
+ 'H', 'E',
+ 'H', 'G',
+ 'H', 'I',
+ 'H', 'K',
+ 'H', 'O',
+ 'H', 'P',
+ 'H', 'U',
+ 'H', 'V',
+ 'H', 'Z',
+ 'I', 'B',
+ 'I', 'E',
+ 'I', 'F',
+ 'I', 'G',
+ 'I', 'H',
+ 'I', 'I',
+ 'I', 'J',
+ 'I', 'L',
+ 'I', 'M',
+ 'I', 'N',
+ 'I', 'O',
+ 'I', 'P',
+ 'I', 'R',
+ 'I', 'S',
+ 'I', 'T',
+ 'I', 'U',
+ 'I', 'X',
+ 'I', 'Y',
+ 'J', 'A',
+ 'J', 'E',
+ 'J', 'I',
+ 'J', 'O',
+ 'J', 'U',
+ 'J', 'Y',
+ 'K', '2',
+ 'K', 'A',
+ 'K', 'B',
+ 'K', 'E',
+ 'K', 'G',
+ 'K', 'I',
+ 'K', 'K',
+ 'K', 'L',
+ 'K', 'M',
+ 'K', 'O',
+ 'K', 'T',
+ 'K', 'U',
+ 'K', 'V',
+ 'K', 'W',
+ 'L', 'A',
+ 'L', 'D',
+ 'L', 'E',
+ 'L', 'H',
+ 'L', 'I',
+ 'L', 'J',
+ 'L', 'L',
+ 'L', 'M',
+ 'L', 'N',
+ 'L', 'O',
+ 'L', 'S',
+ 'L', 'U',
+ 'L', 'V',
+ 'L', 'X',
+ 'L', 'Y',
+ 'L', 'Z',
+ 'M', 'A',
+ 'M', 'B',
+ 'M', 'E',
+ 'M', 'G',
+ 'M', 'H',
+ 'M', 'I',
+ 'M', 'L',
+ 'M', 'M',
+ 'M', 'O',
+ 'M', 'S',
+ 'M', 'U',
+ 'M', 'V',
+ 'M', 'W',
+ 'M', 'Y',
+ 'N', 'A',
+ 'N', 'D',
+ 'N', 'E',
+ 'N', 'F',
+ 'N', 'G',
+ 'N', 'H',
+ 'N', 'I',
+ 'N', 'J',
+ 'N', 'M',
+ 'N', 'N',
+ 'N', 'O',
+ 'N', 'S',
+ 'N', 'U',
+ 'N', 'V',
+ 'N', 'W',
+ 'O', 'A',
+ 'O', 'B',
+ 'O', 'E',
+ 'O', 'F',
+ 'O', 'H',
+ 'O', 'I',
+ 'O', 'L',
+ 'O', 'M',
+ 'O', 'N',
+ 'O', 'O',
+ 'O', 'P',
+ 'O', 'R',
+ 'O', 'S',
+ 'O', 'T',
+ 'O', 'U',
+ 'O', 'V',
+ 'O', 'W',
+ 'O', 'X',
+ 'O', 'Y',
+ 'P', '2',
+ 'P', 'A',
+ 'P', 'C',
+ 'P', 'D',
+ 'P', 'E',
+ 'P', 'F',
+ 'P', 'G',
+ 'P', 'H',
+ 'P', 'I',
+ 'P', 'M',
+ 'P', 'O',
+ 'P', 'R',
+ 'P', 'S',
+ 'P', 'U',
+ 'P', 'V',
+ 'P', 'W',
+ 'P', 'Y',
+ 'P', 'Z',
+ 'Q', 'A',
+ 'Q', 'E',
+ 'Q', 'I',
+ 'Q', 'O',
+ 'Q', 'P',
+ 'Q', 'U',
+ 'Q', 'Y',
+ 'R', 'A',
+ 'R', 'E',
+ 'R', 'I',
+ 'R', 'O',
+ 'R', 'R',
+ 'R', 'U',
+ 'R', 'Y',
+ 'S', 'A',
+ 'S', 'E',
+ 'S', 'G',
+ 'S', 'H',
+ 'S', 'I',
+ 'S', 'K',
+ 'S', 'O',
+ 'S', 'P',
+ 'S', 'R',
+ 'S', 'S',
+ 'S', 'T',
+ 'S', 'U',
+ 'S', 'V',
+ 'S', 'W',
+ 'S', 'Y',
+ 'S', 'Z',
+ 'T', 'A',
+ 'T', 'C',
+ 'T', 'E',
+ 'T', 'H',
+ 'T', 'I',
+ 'T', 'N',
+ 'T', 'O',
+ 'T', 'R',
+ 'T', 'S',
+ 'T', 'T',
+ 'T', 'U',
+ 'T', 'Z',
+ 'U', '2',
+ 'U', 'A',
+ 'U', 'B',
+ 'U', 'C',
+ 'U', 'D',
+ 'U', 'E',
+ 'U', 'K',
+ 'U', 'M',
+ 'U', 'N',
+ 'U', 'O',
+ 'U', 'P',
+ 'U', 'R',
+ 'U', 'S',
+ 'U', 'U',
+ 'U', 'Y',
+ 'V', 'A',
+ 'V', 'E',
+ 'V', 'I',
+ 'V', 'O',
+ 'V', 'U',
+ 'V', 'Y',
+ 'W', 'A',
+ 'W', 'B',
+ 'W', 'E',
+ 'W', 'G',
+ 'W', 'I',
+ 'W', 'O',
+ 'W', 'U',
+ 'W', 'V',
+ 'X', 'A',
+ 'X', 'E',
+ 'X', 'G',
+ 'X', 'I',
+ 'X', 'O',
+ 'X', 'U',
+ 'X', 'Y',
+ 'Y', 'A',
+ 'Y', 'E',
+ 'Y', 'I',
+ 'Y', 'N',
+ 'Y', 'O',
+ 'Y', 'R',
+ 'Y', 'U',
+ 'Y', 'V',
+ 'Y', 'Y',
+ 'Z', 'A',
+ 'Z', 'E',
+ 'Z', 'H',
+ 'Z', 'I',
+ 'Z', 'O',
+ 'Z', 'U',
+ 'Z', 'Y',
+ '-', 'U', 'M',
+ 'A', '-', 'O',
+ 'A', '-', 'U',
+ 'A', 'A', 'I',
+ 'A', 'A', 'J',
+ 'A', 'A', 'K',
+ 'A', 'A', 'M',
+ 'A', 'A', 'W',
+ 'A', 'A', 'Y',
+ 'A', 'B', '2',
+ 'A', 'D', 'I',
+ 'A', 'D', 'O',
+ 'A', 'G', 'E',
+ 'A', 'I', 'N',
+ 'A', 'I', 'R',
+ 'A', 'L', 'F',
+ 'A', 'L', 'I',
+ 'A', 'L', 'L',
+ 'A', 'N', 'D',
+ 'A', 'N', 'G',
+ 'A', 'N', 'N',
+ 'A', 'N', 'O',
+ 'A', 'P', 'L',
+ 'A', 'R', 'C',
+ 'A', 'R', 'E',
+ 'A', 'R', 'M',
+ 'A', 'S', 'H',
+ 'A', 'U', 'E',
+ 'A', 'W', 'E',
+ 'A', 'X', 'E',
+ 'A', 'Y', 'B',
+ 'A', 'Z', 'U',
+ 'B', 'A', 'A',
+ 'B', 'A', 'D',
+ 'B', 'A', 'G',
+ 'B', 'A', 'L',
+ 'B', 'A', 'N',
+ 'B', 'A', 'P',
+ 'B', 'A', 'R',
+ 'B', 'A', 'T',
+ 'B', 'A', 'X',
+ 'B', 'B', 'A',
+ 'B', 'B', 'E',
+ 'B', 'B', 'I',
+ 'B', 'B', 'O',
+ 'B', 'B', 'U',
+ 'B', 'B', 'Y',
+ 'B', 'E', 'E',
+ 'B', 'E', 'H',
+ 'B', 'E', 'I',
+ 'B', 'E', 'N',
+ 'B', 'E', 'P',
+ 'B', 'E', 'T',
+ 'B', 'E', 'X',
+ 'B', 'H', 'A',
+ 'B', 'H', 'E',
+ 'B', 'H', 'I',
+ 'B', 'H', 'O',
+ 'B', 'H', 'U',
+ 'B', 'I', 'B',
+ 'B', 'I', 'E',
+ 'B', 'I', 'G',
+ 'B', 'I', 'P',
+ 'B', 'I', 'T',
+ 'B', 'I', 'X',
+ 'B', 'L', 'A',
+ 'B', 'O', 'A',
+ 'B', 'O', 'O',
+ 'B', 'O', 'P',
+ 'B', 'O', 'T',
+ 'B', 'O', 'W',
+ 'B', 'O', 'X',
+ 'B', 'U', 'O',
+ 'B', 'U', 'P',
+ 'B', 'U', 'R',
+ 'B', 'U', 'T',
+ 'B', 'U', 'X',
+ 'B', 'W', 'A',
+ 'B', 'W', 'E',
+ 'B', 'W', 'I',
+ 'B', 'X', 'G',
+ 'B', 'Y', 'P',
+ 'B', 'Y', 'R',
+ 'B', 'Y', 'T',
+ 'B', 'Y', 'X',
+ 'C', 'A', 'A',
+ 'C', 'A', 'L',
+ 'C', 'A', 'N',
+ 'C', 'A', 'P',
+ 'C', 'A', 'T',
+ 'C', 'A', 'X',
+ 'C', 'C', 'A',
+ 'C', 'C', 'E',
+ 'C', 'C', 'I',
+ 'C', 'C', 'O',
+ 'C', 'C', 'U',
+ 'C', 'E', 'E',
+ 'C', 'E', 'N',
+ 'C', 'E', 'P',
+ 'C', 'E', 'X',
+ 'C', 'H', 'A',
+ 'C', 'H', 'E',
+ 'C', 'H', 'I',
+ 'C', 'H', 'O',
+ 'C', 'H', 'U',
+ 'C', 'H', 'Y',
+ 'C', 'I', 'E',
+ 'C', 'I', 'I',
+ 'C', 'I', 'L',
+ 'C', 'I', 'P',
+ 'C', 'I', 'T',
+ 'C', 'I', 'X',
+ 'C', 'J', 'K',
+ 'C', 'O', 'A',
+ 'C', 'O', 'N',
+ 'C', 'O', 'O',
+ 'C', 'O', 'P',
+ 'C', 'O', 'T',
+ 'C', 'O', 'W',
+ 'C', 'O', 'X',
+ 'C', 'U', 'M',
+ 'C', 'U', 'O',
+ 'C', 'U', 'P',
+ 'C', 'U', 'R',
+ 'C', 'U', 'T',
+ 'C', 'U', 'X',
+ 'C', 'W', 'A',
+ 'C', 'W', 'E',
+ 'C', 'W', 'I',
+ 'C', 'W', 'O',
+ 'C', 'Y', 'A',
+ 'C', 'Y', 'P',
+ 'C', 'Y', 'R',
+ 'C', 'Y', 'T',
+ 'C', 'Y', 'X',
+ 'D', 'A', 'A',
+ 'D', 'A', 'D',
+ 'D', 'A', 'G',
+ 'D', 'A', 'L',
+ 'D', 'A', 'M',
+ 'D', 'A', 'P',
+ 'D', 'A', 'R',
+ 'D', 'A', 'T',
+ 'D', 'A', 'X',
+ 'D', 'A', 'Y',
+ 'D', 'D', 'A',
+ 'D', 'D', 'E',
+ 'D', 'D', 'I',
+ 'D', 'D', 'O',
+ 'D', 'D', 'U',
+ 'D', 'E', 'E',
+ 'D', 'E', 'I',
+ 'D', 'E', 'K',
+ 'D', 'E', 'L',
+ 'D', 'E', 'P',
+ 'D', 'E', 'X',
+ 'D', 'H', 'A',
+ 'D', 'H', 'E',
+ 'D', 'H', 'I',
+ 'D', 'H', 'O',
+ 'D', 'H', 'U',
+ 'D', 'I', 'B',
+ 'D', 'I', 'E',
+ 'D', 'I', 'M',
+ 'D', 'I', 'N',
+ 'D', 'I', 'P',
+ 'D', 'I', 'T',
+ 'D', 'I', 'X',
+ 'D', 'J', 'A',
+ 'D', 'J', 'E',
+ 'D', 'L', 'A',
+ 'D', 'L', 'E',
+ 'D', 'L', 'I',
+ 'D', 'L', 'O',
+ 'D', 'L', 'U',
+ 'D', 'O', 'A',
+ 'D', 'O', 'G',
+ 'D', 'O', 'N',
+ 'D', 'O', 'O',
+ 'D', 'O', 'P',
+ 'D', 'O', 'T',
+ 'D', 'O', 'X',
+ 'D', 'R', 'Y',
+ 'D', 'U', 'B',
+ 'D', 'U', 'G',
+ 'D', 'U', 'H',
+ 'D', 'U', 'L',
+ 'D', 'U', 'M',
+ 'D', 'U', 'N',
+ 'D', 'U', 'O',
+ 'D', 'U', 'P',
+ 'D', 'U', 'R',
+ 'D', 'U', 'T',
+ 'D', 'U', 'X',
+ 'D', 'W', 'A',
+ 'D', 'W', 'E',
+ 'D', 'W', 'O',
+ 'D', 'Y', 'O',
+ 'D', 'Z', 'A',
+ 'D', 'Z', 'E',
+ 'D', 'Z', 'I',
+ 'D', 'Z', 'O',
+ 'D', 'Z', 'U',
+ 'E', 'A', 'R',
+ 'E', 'A', 'T',
+ 'E', 'C', 'H',
+ 'E', 'D', 'D',
+ 'E', 'E', 'N',
+ 'E', 'G', 'G',
+ 'E', 'I', 'E',
+ 'E', 'I', 'S',
+ 'E', 'K', 'S',
+ 'E', 'N', 'D',
+ 'E', 'N', 'G',
+ 'E', 'N', 'N',
+ 'E', 'O', 'H',
+ 'E', 'R', 'A',
+ 'E', 'R', 'G',
+ 'E', 'R', 'R',
+ 'E', 'R', 'S',
+ 'E', 'S', 'H',
+ 'E', 'S', 'O',
+ 'E', 'T', 'A',
+ 'E', 'T', 'H',
+ 'E', 'W', 'E',
+ 'E', 'X', 'O',
+ 'E', 'Y', 'E',
+ 'E', 'Z', 'H',
+ 'F', 'A', 'A',
+ 'F', 'A', 'N',
+ 'F', 'A', 'P',
+ 'F', 'A', 'T',
+ 'F', 'A', 'X',
+ 'F', 'E', 'E',
+ 'F', 'E', 'H',
+ 'F', 'E', 'I',
+ 'F', 'F', 'I',
+ 'F', 'F', 'L',
+ 'F', 'I', 'I',
+ 'F', 'I', 'P',
+ 'F', 'I', 'T',
+ 'F', 'I', 'X',
+ 'F', 'L', 'A',
+ 'F', 'L', 'Y',
+ 'F', 'O', 'O',
+ 'F', 'O', 'P',
+ 'F', 'O', 'R',
+ 'F', 'O', 'X',
+ 'F', 'U', 'P',
+ 'F', 'U', 'R',
+ 'F', 'U', 'T',
+ 'F', 'U', 'X',
+ 'F', 'W', 'A',
+ 'F', 'W', 'E',
+ 'F', 'W', 'I',
+ 'F', 'Y', 'A',
+ 'F', 'Y', 'P',
+ 'F', 'Y', 'T',
+ 'F', 'Y', 'X',
+ 'G', 'A', '2',
+ 'G', 'A', 'A',
+ 'G', 'A', 'D',
+ 'G', 'A', 'F',
+ 'G', 'A', 'G',
+ 'G', 'A', 'L',
+ 'G', 'A', 'M',
+ 'G', 'A', 'N',
+ 'G', 'A', 'P',
+ 'G', 'A', 'R',
+ 'G', 'A', 'T',
+ 'G', 'A', 'X',
+ 'G', 'A', 'Y',
+ 'G', 'B', 'A',
+ 'G', 'B', 'E',
+ 'G', 'B', 'I',
+ 'G', 'B', 'O',
+ 'G', 'B', 'U',
+ 'G', 'E', 'E',
+ 'G', 'E', 'N',
+ 'G', 'E', 'P',
+ 'G', 'E', 'R',
+ 'G', 'E', 'T',
+ 'G', 'E', 'X',
+ 'G', 'G', 'A',
+ 'G', 'G', 'E',
+ 'G', 'G', 'I',
+ 'G', 'G', 'O',
+ 'G', 'G', 'U',
+ 'G', 'H', 'A',
+ 'G', 'H', 'E',
+ 'G', 'H', 'I',
+ 'G', 'H', 'O',
+ 'G', 'H', 'U',
+ 'G', 'H', 'Z',
+ 'G', 'I', '4',
+ 'G', 'I', 'E',
+ 'G', 'I', 'M',
+ 'G', 'I', 'P',
+ 'G', 'I', 'T',
+ 'G', 'I', 'X',
+ 'G', 'J', 'E',
+ 'G', 'L', 'A',
+ 'G', 'O', 'A',
+ 'G', 'O', 'O',
+ 'G', 'O', 'P',
+ 'G', 'O', 'T',
+ 'G', 'O', 'X',
+ 'G', 'P', 'A',
+ 'G', 'R', 'U',
+ 'G', 'U', '2',
+ 'G', 'U', 'D',
+ 'G', 'U', 'G',
+ 'G', 'U', 'L',
+ 'G', 'U', 'M',
+ 'G', 'U', 'O',
+ 'G', 'U', 'P',
+ 'G', 'U', 'R',
+ 'G', 'U', 'T',
+ 'G', 'U', 'X',
+ 'G', 'W', 'A',
+ 'G', 'W', 'E',
+ 'G', 'W', 'I',
+ 'G', 'Y', 'A',
+ 'G', 'Y', 'E',
+ 'G', 'Y', 'I',
+ 'G', 'Y', 'O',
+ 'G', 'Y', 'U',
+ 'H', 'A', 'A',
+ 'H', 'A', 'E',
+ 'H', 'A', 'H',
+ 'H', 'A', 'L',
+ 'H', 'A', 'N',
+ 'H', 'A', 'P',
+ 'H', 'A', 'R',
+ 'H', 'A', 'T',
+ 'H', 'A', 'X',
+ 'H', 'E', 'E',
+ 'H', 'E', 'H',
+ 'H', 'E', 'I',
+ 'H', 'E', 'N',
+ 'H', 'E', 'P',
+ 'H', 'E', 'T',
+ 'H', 'E', 'X',
+ 'H', 'H', 'A',
+ 'H', 'H', 'E',
+ 'H', 'H', 'I',
+ 'H', 'H', 'O',
+ 'H', 'H', 'U',
+ 'H', 'I', 'E',
+ 'H', 'I', 'I',
+ 'H', 'I', 'N',
+ 'H', 'I', 'P',
+ 'H', 'I', 'T',
+ 'H', 'L', 'A',
+ 'H', 'L', 'E',
+ 'H', 'L', 'I',
+ 'H', 'L', 'O',
+ 'H', 'L', 'U',
+ 'H', 'L', 'Y',
+ 'H', 'M', 'A',
+ 'H', 'M', 'I',
+ 'H', 'M', 'O',
+ 'H', 'M', 'U',
+ 'H', 'M', 'Y',
+ 'H', 'N', 'A',
+ 'H', 'N', 'E',
+ 'H', 'N', 'I',
+ 'H', 'O', 'A',
+ 'H', 'O', 'E',
+ 'H', 'O', 'N',
+ 'H', 'O', 'O',
+ 'H', 'O', 'P',
+ 'H', 'O', 'T',
+ 'H', 'O', 'X',
+ 'H', 'P', 'A',
+ 'H', 'T', 'A',
+ 'H', 'U', 'N',
+ 'H', 'U', 'O',
+ 'H', 'W', 'A',
+ 'H', 'W', 'E',
+ 'H', 'W', 'I',
+ 'H', 'W', 'O',
+ 'H', 'W', 'U',
+ 'H', 'X', 'A',
+ 'H', 'X', 'E',
+ 'H', 'X', 'I',
+ 'H', 'X', 'O',
+ 'H', 'Z', 'G',
+ 'H', 'Z', 'T',
+ 'H', 'Z', 'W',
+ 'H', 'Z', 'Z',
+ 'I', '-', 'A',
+ 'I', '-', 'O',
+ 'I', '-', 'U',
+ 'I', 'A', 'N',
+ 'I', 'C', 'E',
+ 'I', 'E', 'P',
+ 'I', 'E', 'T',
+ 'I', 'E', 'X',
+ 'I', 'G', 'I',
+ 'I', 'L', '2',
+ 'I', 'N', 'G',
+ 'I', 'N', 'I',
+ 'I', 'N', 'N',
+ 'I', 'N', 'Y',
+ 'I', 'O', 'R',
+ 'I', 'R', 'I',
+ 'I', 'S', 'H',
+ 'I', 'S', 'S',
+ 'J', 'A', 'A',
+ 'J', 'A', 'R',
+ 'J', 'E', 'E',
+ 'J', 'E', 'H',
+ 'J', 'E', 'R',
+ 'J', 'H', 'A',
+ 'J', 'H', 'O',
+ 'J', 'I', 'A',
+ 'J', 'I', 'E',
+ 'J', 'I', 'L',
+ 'J', 'I', 'P',
+ 'J', 'I', 'T',
+ 'J', 'I', 'X',
+ 'J', 'J', 'A',
+ 'J', 'J', 'E',
+ 'J', 'J', 'I',
+ 'J', 'J', 'O',
+ 'J', 'J', 'U',
+ 'J', 'J', 'Y',
+ 'J', 'O', 'A',
+ 'J', 'O', 'O',
+ 'J', 'O', 'P',
+ 'J', 'O', 'T',
+ 'J', 'O', 'X',
+ 'J', 'O', 'Y',
+ 'J', 'U', 'O',
+ 'J', 'U', 'P',
+ 'J', 'U', 'R',
+ 'J', 'U', 'T',
+ 'J', 'U', 'X',
+ 'J', 'W', 'A',
+ 'J', 'Y', 'P',
+ 'J', 'Y', 'R',
+ 'J', 'Y', 'T',
+ 'J', 'Y', 'X',
+ 'K', 'A', '2',
+ 'K', 'A', 'A',
+ 'K', 'A', 'B',
+ 'K', 'A', 'F',
+ 'K', 'A', 'H',
+ 'K', 'A', 'I',
+ 'K', 'A', 'K',
+ 'K', 'A', 'L',
+ 'K', 'A', 'N',
+ 'K', 'A', 'P',
+ 'K', 'A', 'T',
+ 'K', 'A', 'X',
+ 'K', 'A', 'Y',
+ 'K', 'E', 'E',
+ 'K', 'E', 'H',
+ 'K', 'E', 'N',
+ 'K', 'E', 'P',
+ 'K', 'E', 'T',
+ 'K', 'E', 'X',
+ 'K', 'E', 'Y',
+ 'K', 'H', 'A',
+ 'K', 'H', 'E',
+ 'K', 'H', 'I',
+ 'K', 'H', 'O',
+ 'K', 'H', 'U',
+ 'K', 'H', 'Z',
+ 'K', 'I', 'D',
+ 'K', 'I', 'E',
+ 'K', 'I', 'H',
+ 'K', 'I', 'I',
+ 'K', 'I', 'N',
+ 'K', 'I', 'P',
+ 'K', 'I', 'T',
+ 'K', 'I', 'X',
+ 'K', 'J', 'E',
+ 'K', 'K', 'A',
+ 'K', 'K', 'E',
+ 'K', 'K', 'I',
+ 'K', 'K', 'O',
+ 'K', 'K', 'U',
+ 'K', 'L', 'A',
+ 'K', 'O', 'A',
+ 'K', 'O', 'H',
+ 'K', 'O', 'N',
+ 'K', 'O', 'O',
+ 'K', 'O', 'P',
+ 'K', 'O', 'T',
+ 'K', 'O', 'X',
+ 'K', 'P', 'A',
+ 'K', 'P', 'E',
+ 'K', 'P', 'I',
+ 'K', 'P', 'O',
+ 'K', 'P', 'U',
+ 'K', 'R', 'A',
+ 'K', 'S', 'I',
+ 'K', 'U', '3',
+ 'K', 'U', '4',
+ 'K', 'U', '7',
+ 'K', 'U', 'L',
+ 'K', 'U', 'N',
+ 'K', 'U', 'O',
+ 'K', 'U', 'P',
+ 'K', 'U', 'R',
+ 'K', 'U', 'T',
+ 'K', 'U', 'X',
+ 'K', 'V', 'A',
+ 'K', 'W', 'A',
+ 'K', 'W', 'E',
+ 'K', 'W', 'I',
+ 'K', 'W', 'O',
+ 'K', 'X', 'A',
+ 'K', 'X', 'E',
+ 'K', 'X', 'I',
+ 'K', 'X', 'O',
+ 'K', 'X', 'U',
+ 'K', 'Y', 'A',
+ 'K', 'Y', 'E',
+ 'K', 'Y', 'I',
+ 'K', 'Y', 'O',
+ 'K', 'Y', 'U',
+ 'L', 'A', 'A',
+ 'L', 'A', 'E',
+ 'L', 'A', 'L',
+ 'L', 'A', 'M',
+ 'L', 'A', 'O',
+ 'L', 'A', 'P',
+ 'L', 'A', 'S',
+ 'L', 'A', 'T',
+ 'L', 'A', 'W',
+ 'L', 'A', 'X',
+ 'L', 'C', 'E',
+ 'L', 'C', 'I',
+ 'L', 'D', '2',
+ 'L', 'E', 'E',
+ 'L', 'E', 'G',
+ 'L', 'E', 'K',
+ 'L', 'E', 'O',
+ 'L', 'E', 'P',
+ 'L', 'E', 'X',
+ 'L', 'H', 'A',
+ 'L', 'H', 'E',
+ 'L', 'H', 'I',
+ 'L', 'H', 'O',
+ 'L', 'H', 'U',
+ 'L', 'I', 'D',
+ 'L', 'I', 'E',
+ 'L', 'I', 'I',
+ 'L', 'I', 'L',
+ 'L', 'I', 'P',
+ 'L', 'I', 'T',
+ 'L', 'I', 'X',
+ 'L', 'J', 'E',
+ 'L', 'L', 'A',
+ 'L', 'O', 'A',
+ 'L', 'O', 'G',
+ 'L', 'O', 'O',
+ 'L', 'O', 'P',
+ 'L', 'O', 'T',
+ 'L', 'O', 'W',
+ 'L', 'O', 'X',
+ 'L', 'U', '2',
+ 'L', 'U', '3',
+ 'L', 'U', 'E',
+ 'L', 'U', 'H',
+ 'L', 'U', 'L',
+ 'L', 'U', 'M',
+ 'L', 'U', 'O',
+ 'L', 'U', 'P',
+ 'L', 'U', 'R',
+ 'L', 'U', 'T',
+ 'L', 'U', 'X',
+ 'L', 'W', 'A',
+ 'L', 'W', 'E',
+ 'L', 'W', 'I',
+ 'L', 'W', 'O',
+ 'L', 'Y', 'P',
+ 'L', 'Y', 'R',
+ 'L', 'Y', 'T',
+ 'L', 'Y', 'X',
+ 'L', 'Y', 'Y',
+ 'M', 'A', '2',
+ 'M', 'A', 'A',
+ 'M', 'A', 'H',
+ 'M', 'A', 'I',
+ 'M', 'A', 'N',
+ 'M', 'A', 'P',
+ 'M', 'A', 'R',
+ 'M', 'A', 'T',
+ 'M', 'A', 'X',
+ 'M', 'A', 'Y',
+ 'M', 'B', '2',
+ 'M', 'B', '3',
+ 'M', 'B', '4',
+ 'M', 'B', 'A',
+ 'M', 'B', 'E',
+ 'M', 'B', 'I',
+ 'M', 'B', 'O',
+ 'M', 'B', 'U',
+ 'M', 'E', 'D',
+ 'M', 'E', 'E',
+ 'M', 'E', 'M',
+ 'M', 'E', 'N',
+ 'M', 'E', 'S',
+ 'M', 'E', 'X',
+ 'M', 'G', 'A',
+ 'M', 'G', 'E',
+ 'M', 'G', 'O',
+ 'M', 'G', 'U',
+ 'M', 'H', 'Z',
+ 'M', 'I', 'D',
+ 'M', 'I', 'E',
+ 'M', 'I', 'G',
+ 'M', 'I', 'I',
+ 'M', 'I', 'L',
+ 'M', 'I', 'M',
+ 'M', 'I', 'N',
+ 'M', 'I', 'P',
+ 'M', 'I', 'T',
+ 'M', 'I', 'X',
+ 'M', 'L', 'A',
+ 'M', 'O', 'A',
+ 'M', 'O', 'L',
+ 'M', 'O', 'N',
+ 'M', 'O', 'O',
+ 'M', 'O', 'P',
+ 'M', 'O', 'T',
+ 'M', 'O', 'X',
+ 'M', 'P', 'A',
+ 'M', 'U', 'E',
+ 'M', 'U', 'G',
+ 'M', 'U', 'M',
+ 'M', 'U', 'O',
+ 'M', 'U', 'P',
+ 'M', 'U', 'R',
+ 'M', 'U', 'T',
+ 'M', 'U', 'X',
+ 'M', 'W', 'A',
+ 'M', 'W', 'E',
+ 'M', 'W', 'I',
+ 'M', 'W', 'O',
+ 'M', 'Y', 'A',
+ 'M', 'Y', 'P',
+ 'M', 'Y', 'T',
+ 'M', 'Y', 'X',
+ 'N', 'A', '2',
+ 'N', 'A', 'A',
+ 'N', 'A', 'G',
+ 'N', 'A', 'H',
+ 'N', 'A', 'M',
+ 'N', 'A', 'P',
+ 'N', 'A', 'R',
+ 'N', 'A', 'X',
+ 'N', 'B', 'A',
+ 'N', 'B', 'I',
+ 'N', 'B', 'O',
+ 'N', 'B', 'U',
+ 'N', 'B', 'Y',
+ 'N', 'D', 'A',
+ 'N', 'D', 'E',
+ 'N', 'D', 'I',
+ 'N', 'D', 'O',
+ 'N', 'D', 'U',
+ 'N', 'E', 'E',
+ 'N', 'E', 'N',
+ 'N', 'E', 'O',
+ 'N', 'E', 'P',
+ 'N', 'E', 'T',
+ 'N', 'E', 'W',
+ 'N', 'E', 'X',
+ 'N', 'G', 'A',
+ 'N', 'G', 'E',
+ 'N', 'G', 'G',
+ 'N', 'G', 'I',
+ 'N', 'G', 'O',
+ 'N', 'G', 'U',
+ 'N', 'H', 'A',
+ 'N', 'I', '2',
+ 'N', 'I', 'A',
+ 'N', 'I', 'B',
+ 'N', 'I', 'E',
+ 'N', 'I', 'I',
+ 'N', 'I', 'M',
+ 'N', 'I', 'P',
+ 'N', 'I', 'T',
+ 'N', 'I', 'X',
+ 'N', 'J', 'A',
+ 'N', 'J', 'E',
+ 'N', 'J', 'I',
+ 'N', 'J', 'O',
+ 'N', 'J', 'U',
+ 'N', 'J', 'Y',
+ 'N', 'K', 'O',
+ 'N', 'N', 'A',
+ 'N', 'N', 'G',
+ 'N', 'N', 'O',
+ 'N', 'O', 'A',
+ 'N', 'O', 'O',
+ 'N', 'O', 'P',
+ 'N', 'O', 'R',
+ 'N', 'O', 'T',
+ 'N', 'O', 'W',
+ 'N', 'O', 'X',
+ 'N', 'R', 'A',
+ 'N', 'R', 'E',
+ 'N', 'R', 'O',
+ 'N', 'R', 'U',
+ 'N', 'R', 'Y',
+ 'N', 'U', 'E',
+ 'N', 'U', 'M',
+ 'N', 'U', 'N',
+ 'N', 'U', 'O',
+ 'N', 'U', 'P',
+ 'N', 'U', 'R',
+ 'N', 'U', 'T',
+ 'N', 'U', 'X',
+ 'N', 'W', 'A',
+ 'N', 'W', 'E',
+ 'N', 'Y', 'A',
+ 'N', 'Y', 'D',
+ 'N', 'Y', 'E',
+ 'N', 'Y', 'I',
+ 'N', 'Y', 'O',
+ 'N', 'Y', 'U',
+ 'N', 'Z', 'A',
+ 'N', 'Z', 'E',
+ 'N', 'Z', 'I',
+ 'N', 'Z', 'U',
+ 'N', 'Z', 'Y',
+ 'O', '-', 'E',
+ 'O', '-', 'O',
+ 'O', '-', 'U',
+ 'O', 'A', 'K',
+ 'O', 'A', 'Y',
+ 'O', 'C', 'R',
+ 'O', 'D', 'D',
+ 'O', 'H', 'M',
+ 'O', 'I', 'L',
+ 'O', 'L', 'D',
+ 'O', 'L', 'E',
+ 'O', 'N', 'E',
+ 'O', 'N', 'G',
+ 'O', 'N', 'N',
+ 'O', 'N', 'U',
+ 'O', 'O', 'N',
+ 'O', 'O', 'U',
+ 'O', 'T', 'T',
+ 'O', 'T', 'U',
+ 'O', 'U', 'T',
+ 'P', 'A', 'A',
+ 'P', 'A', 'D',
+ 'P', 'A', 'N',
+ 'P', 'A', 'P',
+ 'P', 'A', 'R',
+ 'P', 'A', 'T',
+ 'P', 'A', 'W',
+ 'P', 'A', 'X',
+ 'P', 'E', 'E',
+ 'P', 'E', 'H',
+ 'P', 'E', 'R',
+ 'P', 'E', 'S',
+ 'P', 'H', 'A',
+ 'P', 'H', 'E',
+ 'P', 'H', 'I',
+ 'P', 'H', 'O',
+ 'P', 'H', 'U',
+ 'P', 'I', 'E',
+ 'P', 'I', 'G',
+ 'P', 'I', 'I',
+ 'P', 'I', 'P',
+ 'P', 'I', 'T',
+ 'P', 'I', 'X',
+ 'P', 'L', 'A',
+ 'P', 'O', 'A',
+ 'P', 'O', 'O',
+ 'P', 'O', 'P',
+ 'P', 'O', 'T',
+ 'P', 'O', 'X',
+ 'P', 'P', 'A',
+ 'P', 'P', 'M',
+ 'P', 'S', 'I',
+ 'P', 'T', 'E',
+ 'P', 'U', '2',
+ 'P', 'U', 'O',
+ 'P', 'U', 'P',
+ 'P', 'U', 'R',
+ 'P', 'U', 'T',
+ 'P', 'U', 'X',
+ 'P', 'W', 'A',
+ 'P', 'W', 'E',
+ 'P', 'W', 'I',
+ 'P', 'W', 'O',
+ 'P', 'Y', 'P',
+ 'P', 'Y', 'R',
+ 'P', 'Y', 'T',
+ 'P', 'Y', 'X',
+ 'Q', 'A', 'A',
+ 'Q', 'A', 'F',
+ 'Q', 'A', 'I',
+ 'Q', 'A', 'Q',
+ 'Q', 'A', 'R',
+ 'Q', 'A', 'U',
+ 'Q', 'E', 'E',
+ 'Q', 'H', 'A',
+ 'Q', 'H', 'E',
+ 'Q', 'H', 'I',
+ 'Q', 'H', 'O',
+ 'Q', 'H', 'U',
+ 'Q', 'I', 'E',
+ 'Q', 'I', 'I',
+ 'Q', 'I', 'P',
+ 'Q', 'I', 'T',
+ 'Q', 'I', 'X',
+ 'Q', 'O', 'A',
+ 'Q', 'O', 'F',
+ 'Q', 'O', 'O',
+ 'Q', 'O', 'P',
+ 'Q', 'O', 'T',
+ 'Q', 'O', 'X',
+ 'Q', 'U', 'A',
+ 'Q', 'U', 'E',
+ 'Q', 'U', 'I',
+ 'Q', 'U', 'K',
+ 'Q', 'U', 'O',
+ 'Q', 'U', 'P',
+ 'Q', 'U', 'R',
+ 'Q', 'U', 'T',
+ 'Q', 'U', 'U',
+ 'Q', 'U', 'V',
+ 'Q', 'U', 'X',
+ 'Q', 'W', 'A',
+ 'Q', 'W', 'E',
+ 'Q', 'W', 'I',
+ 'Q', 'Y', 'A',
+ 'Q', 'Y', 'E',
+ 'Q', 'Y', 'I',
+ 'Q', 'Y', 'O',
+ 'Q', 'Y', 'P',
+ 'Q', 'Y', 'R',
+ 'Q', 'Y', 'T',
+ 'Q', 'Y', 'U',
+ 'Q', 'Y', 'X',
+ 'R', 'A', '2',
+ 'R', 'A', '3',
+ 'R', 'A', 'A',
+ 'R', 'A', 'B',
+ 'R', 'A', 'D',
+ 'R', 'A', 'E',
+ 'R', 'A', 'M',
+ 'R', 'A', 'N',
+ 'R', 'A', 'P',
+ 'R', 'A', 'T',
+ 'R', 'A', 'X',
+ 'R', 'A', 'Y',
+ 'R', 'D', 'O',
+ 'R', 'E', 'D',
+ 'R', 'E', 'E',
+ 'R', 'E', 'H',
+ 'R', 'E', 'P',
+ 'R', 'E', 'X',
+ 'R', 'H', 'A',
+ 'R', 'H', 'O',
+ 'R', 'I', 'I',
+ 'R', 'I', 'N',
+ 'R', 'I', 'P',
+ 'R', 'J', 'E',
+ 'R', 'O', '2',
+ 'R', 'O', 'A',
+ 'R', 'O', 'C',
+ 'R', 'O', 'D',
+ 'R', 'O', 'O',
+ 'R', 'O', 'P',
+ 'R', 'O', 'T',
+ 'R', 'O', 'X',
+ 'R', 'R', 'A',
+ 'R', 'R', 'E',
+ 'R', 'R', 'O',
+ 'R', 'R', 'U',
+ 'R', 'R', 'Y',
+ 'R', 'U', 'A',
+ 'R', 'U', 'B',
+ 'R', 'U', 'M',
+ 'R', 'U', 'N',
+ 'R', 'U', 'O',
+ 'R', 'U', 'P',
+ 'R', 'U', 'R',
+ 'R', 'U', 'T',
+ 'R', 'U', 'X',
+ 'R', 'W', 'A',
+ 'R', 'Y', 'A',
+ 'R', 'Y', 'P',
+ 'R', 'Y', 'R',
+ 'R', 'Y', 'T',
+ 'R', 'Y', 'X',
+ 'R', 'Y', 'Y',
+ 'S', '-', 'W',
+ 'S', 'A', 'A',
+ 'S', 'A', 'D',
+ 'S', 'A', 'G',
+ 'S', 'A', 'L',
+ 'S', 'A', 'N',
+ 'S', 'A', 'P',
+ 'S', 'A', 'R',
+ 'S', 'A', 'T',
+ 'S', 'A', 'W',
+ 'S', 'A', 'X',
+ 'S', 'A', 'Y',
+ 'S', 'E', 'E',
+ 'S', 'E', 'H',
+ 'S', 'E', 'P',
+ 'S', 'E', 'T',
+ 'S', 'E', 'X',
+ 'S', 'H', '2',
+ 'S', 'H', 'A',
+ 'S', 'H', 'E',
+ 'S', 'H', 'I',
+ 'S', 'H', 'O',
+ 'S', 'H', 'U',
+ 'S', 'H', 'Y',
+ 'S', 'I', 'E',
+ 'S', 'I', 'G',
+ 'S', 'I', 'I',
+ 'S', 'I', 'N',
+ 'S', 'I', 'P',
+ 'S', 'I', 'T',
+ 'S', 'I', 'X',
+ 'S', 'J', 'E',
+ 'S', 'K', 'W',
+ 'S', 'N', 'A',
+ 'S', 'O', 'A',
+ 'S', 'O', 'F',
+ 'S', 'O', 'N',
+ 'S', 'O', 'O',
+ 'S', 'O', 'P',
+ 'S', 'O', 'T',
+ 'S', 'O', 'U',
+ 'S', 'O', 'W',
+ 'S', 'O', 'X',
+ 'S', 'S', 'A',
+ 'S', 'S', 'E',
+ 'S', 'S', 'I',
+ 'S', 'S', 'O',
+ 'S', 'S', 'U',
+ 'S', 'S', 'Y',
+ 'S', 'T', '2',
+ 'S', 'U', 'A',
+ 'S', 'U', 'D',
+ 'S', 'U', 'M',
+ 'S', 'U', 'N',
+ 'S', 'U', 'O',
+ 'S', 'U', 'P',
+ 'S', 'U', 'R',
+ 'S', 'U', 'T',
+ 'S', 'U', 'X',
+ 'S', 'W', 'A',
+ 'S', 'W', 'E',
+ 'S', 'W', 'G',
+ 'S', 'W', 'I',
+ 'S', 'W', 'O',
+ 'S', 'W', 'Z',
+ 'S', 'Y', 'A',
+ 'S', 'Y', 'P',
+ 'S', 'Y', 'R',
+ 'S', 'Y', 'T',
+ 'S', 'Y', 'X',
+ 'S', 'Z', 'A',
+ 'S', 'Z', 'E',
+ 'S', 'Z', 'I',
+ 'S', 'Z', 'O',
+ 'S', 'Z', 'U',
+ 'S', 'Z', 'Z',
+ 'T', 'A', '2',
+ 'T', 'A', 'A',
+ 'T', 'A', 'B',
+ 'T', 'A', 'G',
+ 'T', 'A', 'H',
+ 'T', 'A', 'I',
+ 'T', 'A', 'K',
+ 'T', 'A', 'M',
+ 'T', 'A', 'N',
+ 'T', 'A', 'O',
+ 'T', 'A', 'P',
+ 'T', 'A', 'R',
+ 'T', 'A', 'T',
+ 'T', 'A', 'U',
+ 'T', 'A', 'V',
+ 'T', 'A', 'W',
+ 'T', 'A', 'X',
+ 'T', 'E', 'E',
+ 'T', 'E', 'H',
+ 'T', 'E', 'N',
+ 'T', 'E', 'P',
+ 'T', 'E', 'T',
+ 'T', 'E', 'X',
+ 'T', 'H', 'A',
+ 'T', 'H', 'E',
+ 'T', 'H', 'I',
+ 'T', 'H', 'O',
+ 'T', 'H', 'U',
+ 'T', 'H', 'Z',
+ 'T', 'I', 'E',
+ 'T', 'I', 'I',
+ 'T', 'I', 'L',
+ 'T', 'I', 'P',
+ 'T', 'I', 'R',
+ 'T', 'I', 'T',
+ 'T', 'I', 'X',
+ 'T', 'J', 'E',
+ 'T', 'L', 'A',
+ 'T', 'L', 'E',
+ 'T', 'L', 'I',
+ 'T', 'L', 'O',
+ 'T', 'L', 'U',
+ 'T', 'L', 'V',
+ 'T', 'O', 'A',
+ 'T', 'O', 'N',
+ 'T', 'O', 'O',
+ 'T', 'O', 'P',
+ 'T', 'O', 'T',
+ 'T', 'O', 'X',
+ 'T', 'R', 'I',
+ 'T', 'S', 'A',
+ 'T', 'S', 'E',
+ 'T', 'S', 'I',
+ 'T', 'S', 'O',
+ 'T', 'S', 'U',
+ 'T', 'S', 'V',
+ 'T', 'T', '2',
+ 'T', 'T', 'A',
+ 'T', 'T', 'E',
+ 'T', 'T', 'H',
+ 'T', 'T', 'I',
+ 'T', 'T', 'O',
+ 'T', 'T', 'U',
+ 'T', 'U', 'K',
+ 'T', 'U', 'M',
+ 'T', 'U', 'O',
+ 'T', 'U', 'P',
+ 'T', 'U', 'R',
+ 'T', 'U', 'T',
+ 'T', 'U', 'X',
+ 'T', 'W', 'A',
+ 'T', 'W', 'E',
+ 'T', 'W', 'I',
+ 'T', 'W', 'O',
+ 'T', 'Y', 'A',
+ 'T', 'Y', 'E',
+ 'T', 'Y', 'I',
+ 'T', 'Y', 'O',
+ 'T', 'Y', 'R',
+ 'T', 'Z', 'A',
+ 'T', 'Z', 'E',
+ 'T', 'Z', 'I',
+ 'T', 'Z', 'O',
+ 'T', 'Z', 'U',
+ 'U', '-', 'A',
+ 'U', '-', 'U',
+ 'U', 'E', 'E',
+ 'U', 'E', 'Y',
+ 'U', 'K', 'U',
+ 'U', 'L', 'U',
+ 'U', 'N', 'A',
+ 'U', 'N', 'N',
+ 'U', 'O', 'N',
+ 'U', 'O', 'P',
+ 'U', 'O', 'X',
+ 'U', 'R', '2',
+ 'U', 'R', '4',
+ 'U', 'R', 'A',
+ 'U', 'R', 'I',
+ 'U', 'R', 'N',
+ 'U', 'R', 'U',
+ 'U', 'S', 'E',
+ 'U', 'S', 'H',
+ 'U', 'U', 'U',
+ 'U', 'Z', '3',
+ 'U', 'Z', 'U',
+ 'V', 'A', 'A',
+ 'V', 'A', 'I',
+ 'V', 'A', 'P',
+ 'V', 'A', 'T',
+ 'V', 'A', 'V',
+ 'V', 'A', 'X',
+ 'V', 'E', 'E',
+ 'V', 'E', 'H',
+ 'V', 'E', 'P',
+ 'V', 'E', 'W',
+ 'V', 'E', 'X',
+ 'V', 'I', 'E',
+ 'V', 'I', 'N',
+ 'V', 'I', 'P',
+ 'V', 'I', 'T',
+ 'V', 'I', 'X',
+ 'V', 'O', 'O',
+ 'V', 'O', 'P',
+ 'V', 'O', 'T',
+ 'V', 'O', 'U',
+ 'V', 'O', 'W',
+ 'V', 'O', 'X',
+ 'V', 'U', 'P',
+ 'V', 'U', 'R',
+ 'V', 'U', 'T',
+ 'V', 'U', 'X',
+ 'V', 'W', 'A',
+ 'V', 'Y', 'P',
+ 'V', 'Y', 'R',
+ 'V', 'Y', 'T',
+ 'V', 'Y', 'X',
+ 'W', 'A', 'A',
+ 'W', 'A', 'E',
+ 'W', 'A', 'N',
+ 'W', 'A', 'P',
+ 'W', 'A', 'T',
+ 'W', 'A', 'U',
+ 'W', 'A', 'W',
+ 'W', 'A', 'X',
+ 'W', 'E', 'E',
+ 'W', 'E', 'N',
+ 'W', 'E', 'O',
+ 'W', 'E', 'P',
+ 'W', 'E', 'X',
+ 'W', 'I', 'I',
+ 'W', 'I', 'N',
+ 'W', 'O', 'A',
+ 'W', 'O', 'E',
+ 'W', 'O', 'N',
+ 'W', 'O', 'O',
+ 'W', 'O', 'P',
+ 'W', 'O', 'X',
+ 'W', 'U', 'N',
+ 'W', 'U', 'O',
+ 'X', 'A', 'A',
+ 'X', 'A', 'N',
+ 'X', 'E', 'E',
+ 'X', 'E', 'H',
+ 'X', 'I', 'E',
+ 'X', 'I', 'P',
+ 'X', 'I', 'T',
+ 'X', 'I', 'X',
+ 'X', 'O', 'A',
+ 'X', 'O', 'P',
+ 'X', 'O', 'R',
+ 'X', 'O', 'T',
+ 'X', 'O', 'X',
+ 'X', 'U', 'O',
+ 'X', 'V', 'A',
+ 'X', 'W', 'A',
+ 'X', 'W', 'E',
+ 'X', 'W', 'I',
+ 'X', 'Y', 'A',
+ 'X', 'Y', 'E',
+ 'X', 'Y', 'I',
+ 'X', 'Y', 'O',
+ 'X', 'Y', 'P',
+ 'X', 'Y', 'R',
+ 'X', 'Y', 'T',
+ 'X', 'Y', 'U',
+ 'X', 'Y', 'X',
+ 'Y', 'A', 'A',
+ 'Y', 'A', 'B',
+ 'Y', 'A', 'D',
+ 'Y', 'A', 'E',
+ 'Y', 'A', 'F',
+ 'Y', 'A', 'G',
+ 'Y', 'A', 'H',
+ 'Y', 'A', 'J',
+ 'Y', 'A', 'K',
+ 'Y', 'A', 'L',
+ 'Y', 'A', 'M',
+ 'Y', 'A', 'N',
+ 'Y', 'A', 'P',
+ 'Y', 'A', 'Q',
+ 'Y', 'A', 'R',
+ 'Y', 'A', 'S',
+ 'Y', 'A', 'T',
+ 'Y', 'A', 'V',
+ 'Y', 'A', 'W',
+ 'Y', 'A', 'Y',
+ 'Y', 'A', 'Z',
+ 'Y', 'E', 'A',
+ 'Y', 'E', 'E',
+ 'Y', 'E', 'H',
+ 'Y', 'E', 'N',
+ 'Y', 'E', 'O',
+ 'Y', 'E', 'R',
+ 'Y', 'E', 'W',
+ 'Y', 'E', 'Y',
+ 'Y', 'I', 'E',
+ 'Y', 'I', 'G',
+ 'Y', 'I', 'I',
+ 'Y', 'I', 'N',
+ 'Y', 'I', 'P',
+ 'Y', 'I', 'T',
+ 'Y', 'I', 'X',
+ 'Y', 'O', 'A',
+ 'Y', 'O', 'D',
+ 'Y', 'O', 'O',
+ 'Y', 'O', 'P',
+ 'Y', 'O', 'T',
+ 'Y', 'O', 'X',
+ 'Y', 'U', 'O',
+ 'Y', 'U', 'P',
+ 'Y', 'U', 'R',
+ 'Y', 'U', 'S',
+ 'Y', 'U', 'T',
+ 'Y', 'U', 'X',
+ 'Y', 'W', 'A',
+ 'Y', 'W', 'E',
+ 'Y', 'W', 'I',
+ 'Y', 'W', 'O',
+ 'Y', 'Y', 'A',
+ 'Y', 'Y', 'P',
+ 'Y', 'Y', 'R',
+ 'Y', 'Y', 'T',
+ 'Y', 'Y', 'X',
+ 'Z', 'A', 'A',
+ 'Z', 'A', 'G',
+ 'Z', 'A', 'H',
+ 'Z', 'A', 'I',
+ 'Z', 'A', 'L',
+ 'Z', 'A', 'P',
+ 'Z', 'A', 'T',
+ 'Z', 'A', 'X',
+ 'Z', 'E', '2',
+ 'Z', 'E', 'E',
+ 'Z', 'E', 'N',
+ 'Z', 'E', 'P',
+ 'Z', 'E', 'X',
+ 'Z', 'H', 'A',
+ 'Z', 'H', 'E',
+ 'Z', 'H', 'I',
+ 'Z', 'H', 'O',
+ 'Z', 'H', 'U',
+ 'Z', 'H', 'Y',
+ 'Z', 'I', '3',
+ 'Z', 'I', 'B',
+ 'Z', 'I', 'E',
+ 'Z', 'I', 'G',
+ 'Z', 'I', 'P',
+ 'Z', 'I', 'T',
+ 'Z', 'I', 'X',
+ 'Z', 'J', 'E',
+ 'Z', 'L', 'A',
+ 'Z', 'O', 'A',
+ 'Z', 'O', 'O',
+ 'Z', 'O', 'P',
+ 'Z', 'O', 'T',
+ 'Z', 'O', 'X',
+ 'Z', 'R', 'A',
+ 'Z', 'U', '5',
+ 'Z', 'U', 'M',
+ 'Z', 'U', 'O',
+ 'Z', 'U', 'P',
+ 'Z', 'U', 'R',
+ 'Z', 'U', 'T',
+ 'Z', 'U', 'X',
+ 'Z', 'W', 'A',
+ 'Z', 'Y', 'P',
+ 'Z', 'Y', 'R',
+ 'Z', 'Y', 'T',
+ 'Z', 'Y', 'X',
+ 'Z', 'Z', 'A',
+ 'Z', 'Z', 'E',
+ 'Z', 'Z', 'I',
+ 'Z', 'Z', 'O',
+ 'Z', 'Z', 'U',
+ 'Z', 'Z', 'Y',
+ 'A', 'A', 'R', 'U',
+ 'A', 'D', 'A', 'K',
+ 'A', 'D', 'E', 'G',
+ 'A', 'E', 'S', 'C',
+ 'A', 'H', 'A', 'D',
+ 'A', 'H', 'S', 'A',
+ 'A', 'I', 'L', 'M',
+ 'A', 'I', 'N', 'N',
+ 'A', 'I', 'N', 'U',
+ 'A', 'L', 'A', 'N',
+ 'A', 'L', 'E', 'F',
+ 'A', 'L', 'F', 'A',
+ 'A', 'L', 'L', 'I',
+ 'A', 'L', 'L', 'O',
+ 'A', 'L', 'P', 'A',
+ 'A', 'L', 'T', 'A',
+ 'A', 'M', 'A', 'R',
+ 'A', 'M', 'B', 'A',
+ 'A', 'M', 'P', 'S',
+ 'A', 'N', 'H', 'U',
+ 'A', 'N', 'K', 'H',
+ 'A', 'P', 'I', 'N',
+ 'A', 'P', 'L', 'I',
+ 'A', 'R', 'A', 'D',
+ 'A', 'R', 'C', 'H',
+ 'A', 'R', 'G', 'I',
+ 'A', 'R', 'M', 'Y',
+ 'A', 'S', 'A', 'T',
+ 'A', 'S', 'H', '2',
+ 'A', 'S', 'H', '9',
+ 'A', 'T', 'O', 'M',
+ 'A', 'U', 'N', 'N',
+ 'A', 'Y', 'A', 'H',
+ 'A', 'Y', 'E', 'R',
+ 'A', 'Y', 'I', 'N',
+ 'B', '0', '0', '1',
+ 'B', '0', '0', '2',
+ 'B', '0', '0', '3',
+ 'B', '0', '0', '4',
+ 'B', '0', '0', '5',
+ 'B', '0', '0', '6',
+ 'B', '0', '0', '7',
+ 'B', '0', '0', '8',
+ 'B', '0', '0', '9',
+ 'B', '0', '1', '0',
+ 'B', '0', '1', '1',
+ 'B', '0', '1', '2',
+ 'B', '0', '1', '3',
+ 'B', '0', '1', '4',
+ 'B', '0', '1', '5',
+ 'B', '0', '1', '6',
+ 'B', '0', '1', '7',
+ 'B', '0', '1', '8',
+ 'B', '0', '1', '9',
+ 'B', '0', '2', '0',
+ 'B', '0', '2', '1',
+ 'B', '0', '2', '2',
+ 'B', '0', '2', '3',
+ 'B', '0', '2', '4',
+ 'B', '0', '2', '5',
+ 'B', '0', '2', '6',
+ 'B', '0', '2', '7',
+ 'B', '0', '2', '8',
+ 'B', '0', '2', '9',
+ 'B', '0', '3', '0',
+ 'B', '0', '3', '1',
+ 'B', '0', '3', '2',
+ 'B', '0', '3', '3',
+ 'B', '0', '3', '4',
+ 'B', '0', '3', '6',
+ 'B', '0', '3', '7',
+ 'B', '0', '3', '8',
+ 'B', '0', '3', '9',
+ 'B', '0', '4', '0',
+ 'B', '0', '4', '1',
+ 'B', '0', '4', '2',
+ 'B', '0', '4', '3',
+ 'B', '0', '4', '4',
+ 'B', '0', '4', '5',
+ 'B', '0', '4', '6',
+ 'B', '0', '4', '7',
+ 'B', '0', '4', '8',
+ 'B', '0', '4', '9',
+ 'B', '0', '5', '0',
+ 'B', '0', '5', '1',
+ 'B', '0', '5', '2',
+ 'B', '0', '5', '3',
+ 'B', '0', '5', '4',
+ 'B', '0', '5', '5',
+ 'B', '0', '5', '6',
+ 'B', '0', '5', '7',
+ 'B', '0', '5', '8',
+ 'B', '0', '5', '9',
+ 'B', '0', '6', '0',
+ 'B', '0', '6', '1',
+ 'B', '0', '6', '2',
+ 'B', '0', '6', '3',
+ 'B', '0', '6', '4',
+ 'B', '0', '6', '5',
+ 'B', '0', '6', '6',
+ 'B', '0', '6', '7',
+ 'B', '0', '6', '8',
+ 'B', '0', '6', '9',
+ 'B', '0', '7', '0',
+ 'B', '0', '7', '1',
+ 'B', '0', '7', '2',
+ 'B', '0', '7', '3',
+ 'B', '0', '7', '4',
+ 'B', '0', '7', '5',
+ 'B', '0', '7', '6',
+ 'B', '0', '7', '7',
+ 'B', '0', '7', '8',
+ 'B', '0', '7', '9',
+ 'B', '0', '8', '0',
+ 'B', '0', '8', '1',
+ 'B', '0', '8', '2',
+ 'B', '0', '8', '3',
+ 'B', '0', '8', '5',
+ 'B', '0', '8', '6',
+ 'B', '0', '8', '7',
+ 'B', '0', '8', '9',
+ 'B', '0', '9', '0',
+ 'B', '0', '9', '1',
+ 'B', '1', '0', '0',
+ 'B', '1', '0', '2',
+ 'B', '1', '0', '4',
+ 'B', '1', '0', '5',
+ 'B', '1', '2', '0',
+ 'B', '1', '2', '1',
+ 'B', '1', '2', '2',
+ 'B', '1', '2', '3',
+ 'B', '1', '2', '5',
+ 'B', '1', '2', '7',
+ 'B', '1', '2', '8',
+ 'B', '1', '3', '0',
+ 'B', '1', '3', '1',
+ 'B', '1', '3', '2',
+ 'B', '1', '3', '3',
+ 'B', '1', '3', '5',
+ 'B', '1', '4', '0',
+ 'B', '1', '4', '1',
+ 'B', '1', '4', '2',
+ 'B', '1', '4', '5',
+ 'B', '1', '4', '6',
+ 'B', '1', '5', '0',
+ 'B', '1', '5', '1',
+ 'B', '1', '5', '2',
+ 'B', '1', '5', '3',
+ 'B', '1', '5', '4',
+ 'B', '1', '5', '5',
+ 'B', '1', '5', '6',
+ 'B', '1', '5', '7',
+ 'B', '1', '5', '8',
+ 'B', '1', '5', '9',
+ 'B', '1', '6', '0',
+ 'B', '1', '6', '1',
+ 'B', '1', '6', '2',
+ 'B', '1', '6', '3',
+ 'B', '1', '6', '4',
+ 'B', '1', '6', '5',
+ 'B', '1', '6', '6',
+ 'B', '1', '6', '7',
+ 'B', '1', '6', '8',
+ 'B', '1', '6', '9',
+ 'B', '1', '7', '0',
+ 'B', '1', '7', '1',
+ 'B', '1', '7', '2',
+ 'B', '1', '7', '3',
+ 'B', '1', '7', '4',
+ 'B', '1', '7', '6',
+ 'B', '1', '7', '7',
+ 'B', '1', '7', '8',
+ 'B', '1', '7', '9',
+ 'B', '1', '8', '0',
+ 'B', '1', '8', '1',
+ 'B', '1', '8', '2',
+ 'B', '1', '8', '3',
+ 'B', '1', '8', '4',
+ 'B', '1', '8', '5',
+ 'B', '1', '8', '9',
+ 'B', '1', '9', '0',
+ 'B', '1', '9', '1',
+ 'B', '2', '0', '0',
+ 'B', '2', '0', '1',
+ 'B', '2', '0', '2',
+ 'B', '2', '0', '3',
+ 'B', '2', '0', '4',
+ 'B', '2', '0', '5',
+ 'B', '2', '0', '6',
+ 'B', '2', '0', '7',
+ 'B', '2', '0', '8',
+ 'B', '2', '0', '9',
+ 'B', '2', '1', '0',
+ 'B', '2', '1', '1',
+ 'B', '2', '1', '2',
+ 'B', '2', '1', '3',
+ 'B', '2', '1', '4',
+ 'B', '2', '1', '5',
+ 'B', '2', '1', '6',
+ 'B', '2', '1', '7',
+ 'B', '2', '1', '8',
+ 'B', '2', '1', '9',
+ 'B', '2', '2', '0',
+ 'B', '2', '2', '1',
+ 'B', '2', '2', '2',
+ 'B', '2', '2', '5',
+ 'B', '2', '2', '6',
+ 'B', '2', '2', '7',
+ 'B', '2', '2', '8',
+ 'B', '2', '2', '9',
+ 'B', '2', '3', '0',
+ 'B', '2', '3', '1',
+ 'B', '2', '3', '2',
+ 'B', '2', '3', '3',
+ 'B', '2', '3', '4',
+ 'B', '2', '3', '6',
+ 'B', '2', '4', '0',
+ 'B', '2', '4', '1',
+ 'B', '2', '4', '2',
+ 'B', '2', '4', '3',
+ 'B', '2', '4', '5',
+ 'B', '2', '4', '6',
+ 'B', '2', '4', '7',
+ 'B', '2', '4', '8',
+ 'B', '2', '4', '9',
+ 'B', '2', '5', '0',
+ 'B', '2', '5', '1',
+ 'B', '2', '5', '2',
+ 'B', '2', '5', '3',
+ 'B', '2', '5', '4',
+ 'B', '2', '5', '5',
+ 'B', '2', '5', '6',
+ 'B', '2', '5', '7',
+ 'B', '2', '5', '8',
+ 'B', '2', '5', '9',
+ 'B', '3', '0', '5',
+ 'B', 'A', 'C', 'K',
+ 'B', 'A', 'G', '3',
+ 'B', 'A', 'G', 'A',
+ 'B', 'A', 'H', 'T',
+ 'B', 'A', 'N', '2',
+ 'B', 'A', 'N', 'D',
+ 'B', 'A', 'N', 'G',
+ 'B', 'A', 'N', 'K',
+ 'B', 'A', 'R', 'B',
+ 'B', 'A', 'R', 'S',
+ 'B', 'A', 'S', 'E',
+ 'B', 'B', 'A', 'P',
+ 'B', 'B', 'A', 'T',
+ 'B', 'B', 'A', 'X',
+ 'B', 'B', 'E', 'P',
+ 'B', 'B', 'E', 'X',
+ 'B', 'B', 'I', 'E',
+ 'B', 'B', 'I', 'P',
+ 'B', 'B', 'I', 'T',
+ 'B', 'B', 'I', 'X',
+ 'B', 'B', 'O', 'P',
+ 'B', 'B', 'O', 'T',
+ 'B', 'B', 'O', 'X',
+ 'B', 'B', 'U', 'O',
+ 'B', 'B', 'U', 'P',
+ 'B', 'B', 'U', 'R',
+ 'B', 'B', 'U', 'T',
+ 'B', 'B', 'U', 'X',
+ 'B', 'B', 'Y', 'P',
+ 'B', 'B', 'Y', 'T',
+ 'B', 'B', 'Y', 'X',
+ 'B', 'C', 'A', 'D',
+ 'B', 'E', 'A', 'M',
+ 'B', 'E', 'A', 'N',
+ 'B', 'E', 'A', 'T',
+ 'B', 'E', 'E', 'H',
+ 'B', 'E', 'L', 'L',
+ 'B', 'E', 'L', 'T',
+ 'B', 'E', 'N', 'D',
+ 'B', 'E', 'T', 'A',
+ 'B', 'E', 'T', 'H',
+ 'B', 'H', 'E', 'E',
+ 'B', 'H', 'O', 'O',
+ 'B', 'I', 'E', 'P',
+ 'B', 'I', 'E', 'T',
+ 'B', 'I', 'E', 'X',
+ 'B', 'I', 'R', 'D',
+ 'B', 'I', 'R', 'U',
+ 'B', 'K', 'A', '-',
+ 'B', 'L', 'U', 'E',
+ 'B', 'O', 'A', 'R',
+ 'B', 'O', 'A', 'T',
+ 'B', 'O', 'D', 'Y',
+ 'B', 'O', 'L', 'D',
+ 'B', 'O', 'L', 'T',
+ 'B', 'O', 'N', 'E',
+ 'B', 'R', 'D', 'A',
+ 'B', 'U', 'K', 'Y',
+ 'B', 'U', 'L', 'L',
+ 'B', 'U', 'O', 'N',
+ 'B', 'U', 'O', 'P',
+ 'B', 'U', 'O', 'X',
+ 'B', 'U', 'R', '2',
+ 'B', 'U', 'R', 'U',
+ 'B', 'U', 'R', 'X',
+ 'B', 'W', 'E', 'E',
+ 'B', 'Y', 'R', 'X',
+ 'B', 'Z', 'H', 'I',
+ 'C', '-', '1', '8',
+ 'C', '-', '3', '9',
+ 'C', 'A', 'A', 'I',
+ 'C', 'A', 'D', 'A',
+ 'C', 'A', 'L', 'C',
+ 'C', 'A', 'L', 'L',
+ 'C', 'A', 'N', 'G',
+ 'C', 'A', 'P', 'O',
+ 'C', 'A', 'R', 'E',
+ 'C', 'A', 'R', 'T',
+ 'C', 'A', 'V', 'E',
+ 'C', 'A', 'Y', 'N',
+ 'C', 'C', 'A', 'A',
+ 'C', 'C', 'E', 'E',
+ 'C', 'C', 'H', 'A',
+ 'C', 'C', 'H', 'E',
+ 'C', 'C', 'H', 'I',
+ 'C', 'C', 'H', 'O',
+ 'C', 'C', 'H', 'U',
+ 'C', 'E', 'D', 'I',
+ 'C', 'E', 'N', 'T',
+ 'C', 'H', 'A', 'A',
+ 'C', 'H', 'A', 'D',
+ 'C', 'H', 'A', 'M',
+ 'C', 'H', 'A', 'N',
+ 'C', 'H', 'A', 'P',
+ 'C', 'H', 'A', 'R',
+ 'C', 'H', 'A', 'T',
+ 'C', 'H', 'A', 'X',
+ 'C', 'H', 'E', 'E',
+ 'C', 'H', 'E', 'H',
+ 'C', 'H', 'E', 'N',
+ 'C', 'H', 'E', 'P',
+ 'C', 'H', 'E', 'T',
+ 'C', 'H', 'E', 'X',
+ 'C', 'H', 'H', 'A',
+ 'C', 'H', 'I', 'N',
+ 'C', 'H', 'O', 'A',
+ 'C', 'H', 'O', 'E',
+ 'C', 'H', 'O', 'P',
+ 'C', 'H', 'O', 'T',
+ 'C', 'H', 'O', 'X',
+ 'C', 'H', 'U', 'O',
+ 'C', 'H', 'U', 'P',
+ 'C', 'H', 'U', 'R',
+ 'C', 'H', 'U', 'X',
+ 'C', 'H', 'W', 'A',
+ 'C', 'H', 'Y', 'P',
+ 'C', 'H', 'Y', 'R',
+ 'C', 'H', 'Y', 'T',
+ 'C', 'H', 'Y', 'X',
+ 'C', 'I', 'E', 'P',
+ 'C', 'I', 'E', 'T',
+ 'C', 'I', 'E', 'X',
+ 'C', 'I', 'T', 'Y',
+ 'C', 'L', 'A', 'N',
+ 'C', 'L', 'A', 'W',
+ 'C', 'L', 'E', 'F',
+ 'C', 'L', 'U', 'B',
+ 'C', 'O', 'D', 'A',
+ 'C', 'O', 'L', 'L',
+ 'C', 'O', 'M', 'B',
+ 'C', 'O', 'P', 'Y',
+ 'C', 'R', 'O', 'P',
+ 'C', 'U', 'B', 'E',
+ 'C', 'U', 'O', 'P',
+ 'C', 'U', 'O', 'X',
+ 'C', 'U', 'R', 'L',
+ 'C', 'U', 'R', 'X',
+ 'C', 'W', 'A', 'A',
+ 'C', 'W', 'I', 'I',
+ 'C', 'W', 'O', 'O',
+ 'C', 'Y', 'R', 'X',
+ 'D', 'A', 'E', 'G',
+ 'D', 'A', 'G', 'S',
+ 'D', 'A', 'I', 'R',
+ 'D', 'A', 'M', 'P',
+ 'D', 'A', 'N', 'G',
+ 'D', 'A', 'R', 'K',
+ 'D', 'A', 'R', 'T',
+ 'D', 'A', 'S', 'H',
+ 'D', 'A', 'T', 'A',
+ 'D', 'A', 'T', 'E',
+ 'D', 'D', 'A', 'A',
+ 'D', 'D', 'A', 'L',
+ 'D', 'D', 'A', 'P',
+ 'D', 'D', 'A', 'T',
+ 'D', 'D', 'A', 'X',
+ 'D', 'D', 'D', 'A',
+ 'D', 'D', 'E', 'E',
+ 'D', 'D', 'E', 'P',
+ 'D', 'D', 'E', 'X',
+ 'D', 'D', 'H', 'A',
+ 'D', 'D', 'H', 'O',
+ 'D', 'D', 'I', 'E',
+ 'D', 'D', 'I', 'P',
+ 'D', 'D', 'I', 'T',
+ 'D', 'D', 'I', 'X',
+ 'D', 'D', 'O', 'A',
+ 'D', 'D', 'O', 'P',
+ 'D', 'D', 'O', 'T',
+ 'D', 'D', 'O', 'X',
+ 'D', 'D', 'U', 'O',
+ 'D', 'D', 'U', 'P',
+ 'D', 'D', 'U', 'R',
+ 'D', 'D', 'U', 'T',
+ 'D', 'D', 'U', 'X',
+ 'D', 'D', 'W', 'A',
+ 'D', 'E', 'A', 'D',
+ 'D', 'E', 'E', 'L',
+ 'D', 'E', 'E', 'R',
+ 'D', 'E', 'H', 'I',
+ 'D', 'E', 'K', 'A',
+ 'D', 'E', 'L', 'T',
+ 'D', 'E', 'N', 'G',
+ 'D', 'E', 'S', 'I',
+ 'D', 'E', 'Z', 'H',
+ 'D', 'H', 'A', 'L',
+ 'D', 'H', 'E', 'E',
+ 'D', 'H', 'H', 'A',
+ 'D', 'H', 'H', 'E',
+ 'D', 'H', 'H', 'I',
+ 'D', 'H', 'H', 'O',
+ 'D', 'H', 'H', 'U',
+ 'D', 'H', 'O', 'O',
+ 'D', 'I', 'E', 'P',
+ 'D', 'I', 'E', 'X',
+ 'D', 'I', 'G', 'A',
+ 'D', 'I', 'M', '2',
+ 'D', 'I', 'N', 'G',
+ 'D', 'I', 'S', 'C',
+ 'D', 'I', 'S', 'H',
+ 'D', 'K', 'A', 'R',
+ 'D', 'L', 'E', 'E',
+ 'D', 'O', '-', 'O',
+ 'D', 'O', 'E', 'S',
+ 'D', 'O', 'I', 'T',
+ 'D', 'O', 'N', 'G',
+ 'D', 'O', 'O', 'R',
+ 'D', 'O', 'R', 'U',
+ 'D', 'O', 'T', 'S',
+ 'D', 'O', 'V', 'E',
+ 'D', 'O', 'W', 'N',
+ 'D', 'R', 'I', 'L',
+ 'D', 'R', 'U', 'M',
+ 'D', 'U', 'B', '2',
+ 'D', 'U', 'N', '3',
+ 'D', 'U', 'N', '4',
+ 'D', 'U', 'N', 'G',
+ 'D', 'U', 'O', 'X',
+ 'D', 'U', 'R', '2',
+ 'D', 'U', 'R', 'X',
+ 'D', 'Y', 'E', 'H',
+ 'D', 'Z', 'E', 'E',
+ 'D', 'Z', 'H', 'A',
+ 'D', 'Z', 'H', 'E',
+ 'D', 'Z', 'J', 'E',
+ 'D', 'Z', 'W', 'E',
+ 'D', 'Z', 'Z', 'E',
+ 'E', 'A', 'S', 'E',
+ 'E', 'A', 'S', 'T',
+ 'E', 'D', 'I', 'N',
+ 'E', 'G', 'I', 'R',
+ 'E', 'N', 'O', 'S',
+ 'E', 'O', '-', 'O',
+ 'E', 'O', '-', 'U',
+ 'E', 'R', 'E', 'N',
+ 'E', 'S', 'H', '2',
+ 'E', 'U', '-', 'U',
+ 'E', 'U', 'R', 'O',
+ 'E', 'V', 'E', 'N',
+ 'E', 'Z', 'E', 'N',
+ 'F', 'A', 'A', 'I',
+ 'F', 'A', 'C', 'E',
+ 'F', 'A', 'N', 'G',
+ 'F', 'E', 'E', 'D',
+ 'F', 'E', 'H', 'U',
+ 'F', 'E', 'N', 'G',
+ 'F', 'E', 'O', 'H',
+ 'F', 'I', 'L', 'E',
+ 'F', 'I', 'L', 'L',
+ 'F', 'I', 'R', 'E',
+ 'F', 'I', 'S', 'H',
+ 'F', 'I', 'T', 'A',
+ 'F', 'I', 'V', 'E',
+ 'F', 'L', 'A', 'G',
+ 'F', 'L', 'A', 'T',
+ 'F', 'L', 'I', 'P',
+ 'F', 'O', 'O', 'T',
+ 'F', 'O', 'R', 'K',
+ 'F', 'O', 'R', 'M',
+ 'F', 'O', 'U', 'R',
+ 'F', 'R', 'E', 'E',
+ 'F', 'R', 'O', 'G',
+ 'F', 'R', 'O', 'M',
+ 'F', 'U', 'L', 'L',
+ 'F', 'U', 'R', 'X',
+ 'F', 'U', 'S', 'A',
+ 'F', 'U', 'S', 'E',
+ 'F', 'W', 'A', 'A',
+ 'F', 'W', 'E', 'E',
+ 'G', 'A', 'B', 'A',
+ 'G', 'A', 'L', 'I',
+ 'G', 'A', 'M', 'L',
+ 'G', 'A', 'N', '2',
+ 'G', 'A', 'R', '3',
+ 'G', 'A', 'T', 'E',
+ 'G', 'B', 'E', 'E',
+ 'G', 'B', 'E', 'N',
+ 'G', 'B', 'O', 'N',
+ 'G', 'B', 'O', 'O',
+ 'G', 'C', 'A', 'N',
+ 'G', 'C', 'I', 'G',
+ 'G', 'D', 'A', 'N',
+ 'G', 'E', 'A', 'R',
+ 'G', 'E', 'B', 'A',
+ 'G', 'E', 'B', 'O',
+ 'G', 'E', 'D', 'E',
+ 'G', 'E', 'T', 'A',
+ 'G', 'G', 'A', 'A',
+ 'G', 'G', 'A', 'P',
+ 'G', 'G', 'A', 'T',
+ 'G', 'G', 'A', 'X',
+ 'G', 'G', 'E', 'E',
+ 'G', 'G', 'E', 'P',
+ 'G', 'G', 'E', 'T',
+ 'G', 'G', 'E', 'X',
+ 'G', 'G', 'I', 'E',
+ 'G', 'G', 'I', 'T',
+ 'G', 'G', 'I', 'X',
+ 'G', 'G', 'O', 'P',
+ 'G', 'G', 'O', 'T',
+ 'G', 'G', 'O', 'X',
+ 'G', 'G', 'U', 'O',
+ 'G', 'G', 'U', 'P',
+ 'G', 'G', 'U', 'R',
+ 'G', 'G', 'U', 'T',
+ 'G', 'G', 'U', 'X',
+ 'G', 'G', 'W', 'A',
+ 'G', 'G', 'W', 'E',
+ 'G', 'G', 'W', 'I',
+ 'G', 'H', 'A', 'D',
+ 'G', 'H', 'A', 'N',
+ 'G', 'H', 'E', 'E',
+ 'G', 'H', 'H', 'A',
+ 'G', 'H', 'W', 'A',
+ 'G', 'I', 'B', 'A',
+ 'G', 'I', 'E', 'P',
+ 'G', 'I', 'E', 'T',
+ 'G', 'I', 'E', 'X',
+ 'G', 'I', 'G', 'A',
+ 'G', 'I', 'R', '2',
+ 'G', 'I', 'R', '3',
+ 'G', 'I', 'S', 'H',
+ 'G', 'O', 'A', 'L',
+ 'G', 'O', 'L', 'D',
+ 'G', 'O', 'N', 'G',
+ 'G', 'O', 'R', 'A',
+ 'G', 'O', 'R', 'T',
+ 'G', 'R', 'A', 'M',
+ 'G', 'S', 'U', 'M',
+ 'G', 'T', 'E', 'R',
+ 'G', 'U', 'E', 'H',
+ 'G', 'U', 'N', 'U',
+ 'G', 'U', 'O', 'P',
+ 'G', 'U', 'O', 'T',
+ 'G', 'U', 'O', 'X',
+ 'G', 'U', 'R', '7',
+ 'G', 'U', 'R', 'X',
+ 'G', 'W', 'A', 'A',
+ 'G', 'W', 'E', 'E',
+ 'G', 'Y', 'A', 'A',
+ 'G', 'Y', 'A', 'S',
+ 'G', 'Y', 'E', 'E',
+ 'G', 'Y', 'F', 'U',
+ 'G', 'Y', 'O', 'N',
+ 'H', 'A', 'G', 'L',
+ 'H', 'A', 'I', 'R',
+ 'H', 'A', 'L', 'F',
+ 'H', 'A', 'N', 'D',
+ 'H', 'A', 'R', 'D',
+ 'H', 'A', 'T', 'E',
+ 'H', 'A', 'V', 'E',
+ 'H', 'E', 'A', 'D',
+ 'H', 'E', 'L', 'M',
+ 'H', 'E', 'M', 'P',
+ 'H', 'E', 'N', 'G',
+ 'H', 'E', 'R', 'U',
+ 'H', 'E', 'T', 'A',
+ 'H', 'E', 'T', 'H',
+ 'H', 'H', 'A', 'A',
+ 'H', 'H', 'E', 'E',
+ 'H', 'H', 'W', 'A',
+ 'H', 'I', 'D', 'E',
+ 'H', 'I', 'E', 'X',
+ 'H', 'I', 'G', 'H',
+ 'H', 'I', 'Z', 'B',
+ 'H', 'L', 'A', 'P',
+ 'H', 'L', 'A', 'T',
+ 'H', 'L', 'A', 'X',
+ 'H', 'L', 'E', 'P',
+ 'H', 'L', 'E', 'X',
+ 'H', 'L', 'I', 'E',
+ 'H', 'L', 'I', 'P',
+ 'H', 'L', 'I', 'T',
+ 'H', 'L', 'I', 'X',
+ 'H', 'L', 'O', 'P',
+ 'H', 'L', 'O', 'X',
+ 'H', 'L', 'U', 'O',
+ 'H', 'L', 'U', 'P',
+ 'H', 'L', 'U', 'R',
+ 'H', 'L', 'U', 'T',
+ 'H', 'L', 'U', 'X',
+ 'H', 'L', 'Y', 'P',
+ 'H', 'L', 'Y', 'R',
+ 'H', 'L', 'Y', 'T',
+ 'H', 'L', 'Y', 'X',
+ 'H', 'M', 'A', 'P',
+ 'H', 'M', 'A', 'T',
+ 'H', 'M', 'A', 'X',
+ 'H', 'M', 'I', 'E',
+ 'H', 'M', 'I', 'P',
+ 'H', 'M', 'I', 'T',
+ 'H', 'M', 'I', 'X',
+ 'H', 'M', 'O', 'P',
+ 'H', 'M', 'O', 'T',
+ 'H', 'M', 'O', 'X',
+ 'H', 'M', 'U', 'O',
+ 'H', 'M', 'U', 'P',
+ 'H', 'M', 'U', 'R',
+ 'H', 'M', 'U', 'T',
+ 'H', 'M', 'U', 'X',
+ 'H', 'M', 'Y', 'P',
+ 'H', 'M', 'Y', 'R',
+ 'H', 'M', 'Y', 'X',
+ 'H', 'N', 'A', 'P',
+ 'H', 'N', 'A', 'T',
+ 'H', 'N', 'A', 'X',
+ 'H', 'N', 'E', 'P',
+ 'H', 'N', 'E', 'X',
+ 'H', 'N', 'I', 'E',
+ 'H', 'N', 'I', 'P',
+ 'H', 'N', 'I', 'T',
+ 'H', 'N', 'I', 'X',
+ 'H', 'N', 'O', 'P',
+ 'H', 'N', 'O', 'T',
+ 'H', 'N', 'O', 'X',
+ 'H', 'N', 'U', 'O',
+ 'H', 'N', 'U', 'T',
+ 'H', 'O', 'O', 'K',
+ 'H', 'O', 'O', 'N',
+ 'H', 'O', 'R', 'I',
+ 'H', 'O', 'R', 'N',
+ 'H', 'O', 'T', 'A',
+ 'H', 'O', 'U', 'R',
+ 'H', 'P', 'W', 'G',
+ 'H', 'U', 'B', '2',
+ 'H', 'U', 'L', '2',
+ 'H', 'U', 'N', 'G',
+ 'H', 'U', 'O', 'P',
+ 'H', 'U', 'O', 'T',
+ 'H', 'U', 'O', 'X',
+ 'H', 'W', 'E', 'E',
+ 'H', 'X', 'A', 'P',
+ 'H', 'X', 'A', 'T',
+ 'H', 'X', 'A', 'X',
+ 'H', 'X', 'E', 'P',
+ 'H', 'X', 'E', 'X',
+ 'H', 'X', 'I', 'E',
+ 'H', 'X', 'I', 'P',
+ 'H', 'X', 'I', 'T',
+ 'H', 'X', 'I', 'X',
+ 'H', 'X', 'O', 'P',
+ 'H', 'X', 'O', 'T',
+ 'H', 'X', 'O', 'X',
+ 'H', 'X', 'U', 'O',
+ 'H', 'X', 'W', 'G',
+ 'H', 'Z', 'W', 'G',
+ 'H', 'Z', 'Z', 'P',
+ 'H', 'Z', 'Z', 'Z',
+ 'I', '-', 'E', 'U',
+ 'I', '-', 'Y', 'A',
+ 'I', 'D', 'I', 'M',
+ 'I', 'D', 'L', 'E',
+ 'I', 'F', 'I', 'N',
+ 'I', 'L', 'U', 'T',
+ 'I', 'L', 'U', 'Y',
+ 'I', 'M', 'I', 'N',
+ 'I', 'N', 'C', 'H',
+ 'I', 'N', 'N', 'N',
+ 'I', 'N', 'T', 'I',
+ 'I', 'O', 'T', 'A',
+ 'I', 'S', 'A', 'Z',
+ 'I', 'S', 'O', 'N',
+ 'I', 'T', 'E', 'M',
+ 'I', 'U', 'J', 'A',
+ 'I', 'W', 'A', 'Z',
+ 'I', 'Z', 'H', 'E',
+ 'J', 'A', 'D', 'E',
+ 'J', 'E', 'E', 'M',
+ 'J', 'E', 'R', 'A',
+ 'J', 'H', 'A', 'N',
+ 'J', 'H', 'E', 'H',
+ 'J', 'I', 'E', 'P',
+ 'J', 'I', 'E', 'T',
+ 'J', 'I', 'E', 'X',
+ 'J', 'J', 'E', 'E',
+ 'J', 'J', 'I', 'E',
+ 'J', 'J', 'I', 'P',
+ 'J', 'J', 'I', 'T',
+ 'J', 'J', 'I', 'X',
+ 'J', 'J', 'O', 'P',
+ 'J', 'J', 'O', 'T',
+ 'J', 'J', 'O', 'X',
+ 'J', 'J', 'U', 'O',
+ 'J', 'J', 'U', 'P',
+ 'J', 'J', 'U', 'R',
+ 'J', 'J', 'U', 'T',
+ 'J', 'J', 'U', 'X',
+ 'J', 'J', 'Y', 'P',
+ 'J', 'J', 'Y', 'T',
+ 'J', 'J', 'Y', 'X',
+ 'J', 'O', 'I', 'N',
+ 'J', 'O', 'N', 'A',
+ 'J', 'O', 'N', 'G',
+ 'J', 'U', 'L', 'Y',
+ 'J', 'U', 'N', 'E',
+ 'J', 'U', 'N', 'O',
+ 'J', 'U', 'O', 'P',
+ 'J', 'U', 'O', 'T',
+ 'J', 'U', 'O', 'X',
+ 'J', 'U', 'R', 'X',
+ 'J', 'Y', 'R', 'X',
+ 'K', 'A', 'A', 'F',
+ 'K', 'A', 'A', 'I',
+ 'K', 'A', 'B', 'A',
+ 'K', 'A', 'D', '2',
+ 'K', 'A', 'D', '3',
+ 'K', 'A', 'D', '4',
+ 'K', 'A', 'D', '5',
+ 'K', 'A', 'K', 'O',
+ 'K', 'A', 'M', '2',
+ 'K', 'A', 'M', '4',
+ 'K', 'A', 'N', 'A',
+ 'K', 'A', 'N', 'G',
+ 'K', 'A', 'P', 'A',
+ 'K', 'A', 'P', 'H',
+ 'K', 'A', 'P', 'O',
+ 'K', 'A', 'T', 'O',
+ 'K', 'A', 'U', 'N',
+ 'K', 'C', 'A', 'L',
+ 'K', 'H', 'A', 'A',
+ 'K', 'H', 'A', 'H',
+ 'K', 'H', 'A', 'I',
+ 'K', 'H', 'A', 'N',
+ 'K', 'H', 'A', 'R',
+ 'K', 'H', 'E', 'E',
+ 'K', 'H', 'E', 'I',
+ 'K', 'H', 'H', 'A',
+ 'K', 'H', 'O', 'N',
+ 'K', 'H', 'O', 'T',
+ 'K', 'I', 'C', 'K',
+ 'K', 'I', 'E', 'P',
+ 'K', 'I', 'E', 'X',
+ 'K', 'I', 'N', 'G',
+ 'K', 'I', 'R', 'O',
+ 'K', 'I', 'S', 'H',
+ 'K', 'K', 'E', 'E',
+ 'K', 'O', 'E', 'T',
+ 'K', 'O', 'M', 'I',
+ 'K', 'O', 'T', 'O',
+ 'K', 'P', 'A', 'N',
+ 'K', 'P', 'E', 'E',
+ 'K', 'P', 'E', 'N',
+ 'K', 'P', 'O', 'O',
+ 'K', 'S', 'S', 'A',
+ 'K', 'U', 'N', 'G',
+ 'K', 'U', 'O', 'P',
+ 'K', 'U', 'O', 'X',
+ 'K', 'U', 'R', 'T',
+ 'K', 'U', 'R', 'X',
+ 'K', 'U', 'U', 'H',
+ 'K', 'W', 'A', 'A',
+ 'K', 'W', 'E', 'E',
+ 'K', 'W', 'I', 'I',
+ 'K', 'W', 'O', 'O',
+ 'K', 'X', 'A', 'A',
+ 'K', 'X', 'E', 'E',
+ 'K', 'X', 'W', 'A',
+ 'K', 'X', 'W', 'E',
+ 'K', 'X', 'W', 'I',
+ 'K', 'Y', 'A', 'A',
+ 'K', 'Y', 'E', 'E',
+ 'L', 'A', 'A', 'I',
+ 'L', 'A', 'A', 'N',
+ 'L', 'A', 'C', 'A',
+ 'L', 'A', 'C', 'K',
+ 'L', 'A', 'E', 'V',
+ 'L', 'A', 'G', 'U',
+ 'L', 'A', 'K', 'E',
+ 'L', 'A', 'M', 'D',
+ 'L', 'A', 'M', 'E',
+ 'L', 'A', 'S', 'T',
+ 'L', 'A', 'T', 'E',
+ 'L', 'A', 'Z', 'Y',
+ 'L', 'D', 'A', 'N',
+ 'L', 'E', 'A', 'F',
+ 'L', 'E', 'E', 'K',
+ 'L', 'E', 'F', 'T',
+ 'L', 'E', 'G', 'S',
+ 'L', 'E', 'S', 'S',
+ 'L', 'E', 'Z', 'H',
+ 'L', 'H', 'A', 'A',
+ 'L', 'H', 'A', 'G',
+ 'L', 'H', 'E', 'E',
+ 'L', 'H', 'I', 'I',
+ 'L', 'H', 'O', 'O',
+ 'L', 'I', 'E', 'P',
+ 'L', 'I', 'E', 'T',
+ 'L', 'I', 'E', 'X',
+ 'L', 'I', 'F', 'E',
+ 'L', 'I', 'L', 'Y',
+ 'L', 'I', 'N', 'E',
+ 'L', 'I', 'N', 'G',
+ 'L', 'I', 'N', 'K',
+ 'L', 'I', 'R', 'A',
+ 'L', 'I', 'S', 'H',
+ 'L', 'I', 'W', 'N',
+ 'L', 'L', 'L', 'A',
+ 'L', 'O', 'G', 'R',
+ 'L', 'O', 'L', 'L',
+ 'L', 'O', 'N', 'G',
+ 'L', 'O', 'O', 'P',
+ 'L', 'O', 'O', 'T',
+ 'L', 'U', 'I', 'S',
+ 'L', 'U', 'O', 'P',
+ 'L', 'U', 'O', 'T',
+ 'L', 'U', 'O', 'X',
+ 'L', 'U', 'R', 'X',
+ 'L', 'W', 'A', 'A',
+ 'L', 'W', 'I', 'I',
+ 'L', 'W', 'O', 'O',
+ 'L', 'Y', 'R', 'X',
+ 'M', 'A', 'A', 'I',
+ 'M', 'A', 'D', 'U',
+ 'M', 'A', 'L', 'E',
+ 'M', 'A', 'R', 'E',
+ 'M', 'A', 'R', 'K',
+ 'M', 'A', 'S', 'H',
+ 'M', 'A', 'S', 'U',
+ 'M', 'B', 'E', 'E',
+ 'M', 'B', 'O', 'O',
+ 'M', 'C', 'H', 'U',
+ 'M', 'D', 'U', 'N',
+ 'M', 'E', 'A', 'T',
+ 'M', 'E', 'E', 'M',
+ 'M', 'E', 'E', 'T',
+ 'M', 'E', 'G', 'A',
+ 'M', 'E', 'R', 'I',
+ 'M', 'E', 'S', 'H',
+ 'M', 'E', 'S', 'I',
+ 'M', 'E', 'S', 'O',
+ 'M', 'E', 'T', 'A',
+ 'M', 'G', 'A', 'P',
+ 'M', 'G', 'A', 'T',
+ 'M', 'G', 'A', 'X',
+ 'M', 'G', 'B', 'A',
+ 'M', 'G', 'B', 'E',
+ 'M', 'G', 'B', 'I',
+ 'M', 'G', 'B', 'O',
+ 'M', 'G', 'B', 'U',
+ 'M', 'G', 'E', 'P',
+ 'M', 'G', 'E', 'X',
+ 'M', 'G', 'I', 'E',
+ 'M', 'G', 'O', 'P',
+ 'M', 'G', 'O', 'T',
+ 'M', 'G', 'O', 'X',
+ 'M', 'G', 'U', 'O',
+ 'M', 'G', 'U', 'P',
+ 'M', 'G', 'U', 'R',
+ 'M', 'G', 'U', 'T',
+ 'M', 'G', 'U', 'X',
+ 'M', 'I', 'E', 'P',
+ 'M', 'I', 'E', 'X',
+ 'M', 'I', 'I', 'N',
+ 'M', 'I', 'L', 'L',
+ 'M', 'I', 'M', 'E',
+ 'M', 'I', 'N', 'Y',
+ 'M', 'I', 'R', 'I',
+ 'M', 'N', 'A', 'S',
+ 'M', 'O', 'O', 'N',
+ 'M', 'U', 'A', 'N',
+ 'M', 'U', 'C', 'H',
+ 'M', 'U', 'I', 'N',
+ 'M', 'U', 'O', 'P',
+ 'M', 'U', 'O', 'T',
+ 'M', 'U', 'O', 'X',
+ 'M', 'U', 'O', 'Y',
+ 'M', 'U', 'R', 'X',
+ 'M', 'U', 'S', 'H',
+ 'M', 'W', 'A', 'A',
+ 'M', 'W', 'E', 'E',
+ 'M', 'W', 'I', 'I',
+ 'M', 'W', 'O', 'O',
+ 'N', 'A', 'A', 'I',
+ 'N', 'A', 'G', 'A',
+ 'N', 'A', 'M', '2',
+ 'N', 'A', 'M', 'E',
+ 'N', 'A', 'N', 'A',
+ 'N', 'A', 'N', 'D',
+ 'N', 'A', 'N', 'O',
+ 'N', 'A', 'O', 'S',
+ 'N', 'A', 'U', 'D',
+ 'N', 'B', 'A', 'P',
+ 'N', 'B', 'A', 'T',
+ 'N', 'B', 'A', 'X',
+ 'N', 'B', 'I', 'E',
+ 'N', 'B', 'I', 'P',
+ 'N', 'B', 'I', 'T',
+ 'N', 'B', 'I', 'X',
+ 'N', 'B', 'O', 'P',
+ 'N', 'B', 'O', 'T',
+ 'N', 'B', 'O', 'X',
+ 'N', 'B', 'U', 'P',
+ 'N', 'B', 'U', 'R',
+ 'N', 'B', 'U', 'T',
+ 'N', 'B', 'U', 'X',
+ 'N', 'B', 'Y', 'P',
+ 'N', 'B', 'Y', 'R',
+ 'N', 'B', 'Y', 'T',
+ 'N', 'B', 'Y', 'X',
+ 'N', 'D', 'A', 'P',
+ 'N', 'D', 'A', 'T',
+ 'N', 'D', 'A', 'X',
+ 'N', 'D', 'E', 'E',
+ 'N', 'D', 'E', 'P',
+ 'N', 'D', 'E', 'X',
+ 'N', 'D', 'I', 'E',
+ 'N', 'D', 'I', 'P',
+ 'N', 'D', 'I', 'T',
+ 'N', 'D', 'I', 'X',
+ 'N', 'D', 'O', 'O',
+ 'N', 'D', 'O', 'P',
+ 'N', 'D', 'O', 'T',
+ 'N', 'D', 'O', 'X',
+ 'N', 'D', 'U', 'P',
+ 'N', 'D', 'U', 'R',
+ 'N', 'D', 'U', 'T',
+ 'N', 'D', 'U', 'X',
+ 'N', 'E', 'X', 'T',
+ 'N', 'G', 'A', 'A',
+ 'N', 'G', 'A', 'I',
+ 'N', 'G', 'A', 'N',
+ 'N', 'G', 'A', 'P',
+ 'N', 'G', 'A', 'S',
+ 'N', 'G', 'A', 'T',
+ 'N', 'G', 'A', 'X',
+ 'N', 'G', 'E', 'N',
+ 'N', 'G', 'E', 'P',
+ 'N', 'G', 'E', 'X',
+ 'N', 'G', 'G', 'A',
+ 'N', 'G', 'G', 'E',
+ 'N', 'G', 'G', 'I',
+ 'N', 'G', 'G', 'O',
+ 'N', 'G', 'G', 'U',
+ 'N', 'G', 'I', 'E',
+ 'N', 'G', 'I', 'I',
+ 'N', 'G', 'K', 'A',
+ 'N', 'G', 'O', 'N',
+ 'N', 'G', 'O', 'O',
+ 'N', 'G', 'O', 'P',
+ 'N', 'G', 'O', 'T',
+ 'N', 'G', 'O', 'X',
+ 'N', 'G', 'U', 'E',
+ 'N', 'G', 'U', 'O',
+ 'N', 'H', 'J', 'A',
+ 'N', 'H', 'U', 'E',
+ 'N', 'I', 'E', 'P',
+ 'N', 'I', 'E', 'X',
+ 'N', 'I', 'N', 'E',
+ 'N', 'I', 'O', 'N',
+ 'N', 'J', 'E', 'E',
+ 'N', 'J', 'I', 'E',
+ 'N', 'J', 'I', 'P',
+ 'N', 'J', 'I', 'T',
+ 'N', 'J', 'I', 'X',
+ 'N', 'J', 'O', 'O',
+ 'N', 'J', 'O', 'P',
+ 'N', 'J', 'O', 'T',
+ 'N', 'J', 'O', 'X',
+ 'N', 'J', 'U', 'O',
+ 'N', 'J', 'U', 'P',
+ 'N', 'J', 'U', 'R',
+ 'N', 'J', 'U', 'X',
+ 'N', 'J', 'Y', 'P',
+ 'N', 'J', 'Y', 'R',
+ 'N', 'J', 'Y', 'T',
+ 'N', 'J', 'Y', 'X',
+ 'N', 'N', 'G', 'A',
+ 'N', 'N', 'G', 'I',
+ 'N', 'N', 'G', 'O',
+ 'N', 'N', 'N', 'A',
+ 'N', 'N', 'Y', 'A',
+ 'N', 'O', 'D', 'E',
+ 'N', 'O', 'O', 'N',
+ 'N', 'O', 'S', 'E',
+ 'N', 'O', 'T', 'E',
+ 'N', 'R', 'A', 'P',
+ 'N', 'R', 'A', 'T',
+ 'N', 'R', 'A', 'X',
+ 'N', 'R', 'E', 'P',
+ 'N', 'R', 'E', 'T',
+ 'N', 'R', 'E', 'X',
+ 'N', 'R', 'O', 'P',
+ 'N', 'R', 'O', 'X',
+ 'N', 'R', 'U', 'P',
+ 'N', 'R', 'U', 'R',
+ 'N', 'R', 'U', 'T',
+ 'N', 'R', 'U', 'X',
+ 'N', 'R', 'Y', 'P',
+ 'N', 'R', 'Y', 'R',
+ 'N', 'R', 'Y', 'T',
+ 'N', 'R', 'Y', 'X',
+ 'N', 'U', '1', '1',
+ 'N', 'U', 'L', 'L',
+ 'N', 'U', 'O', 'P',
+ 'N', 'U', 'O', 'X',
+ 'N', 'U', 'R', 'X',
+ 'N', 'U', 'U', 'N',
+ 'N', 'W', 'A', 'A',
+ 'N', 'Y', 'A', 'A',
+ 'N', 'Y', 'C', 'A',
+ 'N', 'Y', 'E', 'E',
+ 'N', 'Y', 'E', 'H',
+ 'N', 'Y', 'E', 'T',
+ 'N', 'Y', 'I', 'E',
+ 'N', 'Y', 'I', 'P',
+ 'N', 'Y', 'I', 'S',
+ 'N', 'Y', 'I', 'T',
+ 'N', 'Y', 'I', 'X',
+ 'N', 'Y', 'J', 'A',
+ 'N', 'Y', 'O', 'A',
+ 'N', 'Y', 'O', 'O',
+ 'N', 'Y', 'O', 'P',
+ 'N', 'Y', 'O', 'T',
+ 'N', 'Y', 'O', 'X',
+ 'N', 'Y', 'U', 'O',
+ 'N', 'Y', 'U', 'P',
+ 'N', 'Y', 'U', 'T',
+ 'N', 'Y', 'U', 'X',
+ 'N', 'Y', 'W', 'A',
+ 'N', 'Z', 'A', 'P',
+ 'N', 'Z', 'A', 'T',
+ 'N', 'Z', 'A', 'X',
+ 'N', 'Z', 'E', 'X',
+ 'N', 'Z', 'I', 'E',
+ 'N', 'Z', 'I', 'P',
+ 'N', 'Z', 'I', 'T',
+ 'N', 'Z', 'I', 'X',
+ 'N', 'Z', 'O', 'P',
+ 'N', 'Z', 'O', 'X',
+ 'N', 'Z', 'U', 'O',
+ 'N', 'Z', 'U', 'P',
+ 'N', 'Z', 'U', 'R',
+ 'N', 'Z', 'U', 'X',
+ 'N', 'Z', 'Y', 'P',
+ 'N', 'Z', 'Y', 'R',
+ 'N', 'Z', 'Y', 'T',
+ 'N', 'Z', 'Y', 'X',
+ 'O', '-', 'E', 'O',
+ 'O', '-', 'Y', 'E',
+ 'O', 'B', 'O', 'L',
+ 'O', 'K', 'T', 'O',
+ 'O', 'N', 'S', 'U',
+ 'O', 'O', 'M', 'U',
+ 'O', 'O', 'Z', 'E',
+ 'O', 'P', 'E', 'N',
+ 'O', 'V', 'E', 'R',
+ 'O', 'X', 'I', 'A',
+ 'P', 'A', 'A', 'I',
+ 'P', 'A', 'G', 'E',
+ 'P', 'A', 'L', 'M',
+ 'P', 'A', 'N', 'G',
+ 'P', 'A', 'R', 'A',
+ 'P', 'A', 'R', 'T',
+ 'P', 'A', 'T', 'H',
+ 'P', 'A', 'W', 'N',
+ 'P', 'E', 'E', 'P',
+ 'P', 'E', 'S', 'O',
+ 'P', 'H', 'A', 'A',
+ 'P', 'H', 'A', 'N',
+ 'P', 'H', 'A', 'R',
+ 'P', 'H', 'E', 'E',
+ 'P', 'H', 'O', 'A',
+ 'P', 'H', 'U', 'R',
+ 'P', 'H', 'W', 'A',
+ 'P', 'I', 'C', 'K',
+ 'P', 'I', 'E', 'P',
+ 'P', 'I', 'E', 'X',
+ 'P', 'I', 'K', 'O',
+ 'P', 'I', 'N', 'G',
+ 'P', 'I', 'W', 'R',
+ 'P', 'L', 'A', 'K',
+ 'P', 'L', 'O', 'W',
+ 'P', 'L', 'U', 'K',
+ 'P', 'L', 'U', 'M',
+ 'P', 'L', 'U', 'S',
+ 'P', 'O', 'L', 'E',
+ 'P', 'O', 'L', 'I',
+ 'P', 'R', 'A', 'M',
+ 'P', 'U', 'N', 'G',
+ 'P', 'U', 'O', 'P',
+ 'P', 'U', 'O', 'X',
+ 'P', 'U', 'R', 'X',
+ 'P', 'W', 'A', 'A',
+ 'P', 'W', 'E', 'E',
+ 'P', 'W', 'I', 'I',
+ 'P', 'W', 'O', 'O',
+ 'P', 'Y', 'R', 'X',
+ 'Q', 'A', 'A', 'F',
+ 'Q', 'A', 'A', 'I',
+ 'Q', 'A', 'L', 'A',
+ 'Q', 'A', 'P', 'H',
+ 'Q', 'H', 'A', 'A',
+ 'Q', 'H', 'E', 'E',
+ 'Q', 'H', 'W', 'A',
+ 'Q', 'H', 'W', 'E',
+ 'Q', 'H', 'W', 'I',
+ 'Q', 'I', 'E', 'P',
+ 'Q', 'I', 'E', 'T',
+ 'Q', 'I', 'E', 'X',
+ 'Q', 'O', 'P', 'A',
+ 'Q', 'U', 'A', 'D',
+ 'Q', 'U', 'O', 'P',
+ 'Q', 'U', 'O', 'T',
+ 'Q', 'U', 'O', 'X',
+ 'Q', 'U', 'R', 'X',
+ 'Q', 'U', 'U', 'V',
+ 'Q', 'W', 'A', 'A',
+ 'Q', 'W', 'E', 'E',
+ 'Q', 'Y', 'A', 'A',
+ 'Q', 'Y', 'E', 'E',
+ 'Q', 'Y', 'R', 'X',
+ 'R', 'A', 'A', 'I',
+ 'R', 'A', 'D', 'I',
+ 'R', 'A', 'F', 'E',
+ 'R', 'A', 'I', 'N',
+ 'R', 'A', 'M', 'S',
+ 'R', 'A', 'Y', 'S',
+ 'R', 'D', 'E', 'L',
+ 'R', 'E', 'I', 'D',
+ 'R', 'E', 'M', 'U',
+ 'R', 'E', 'P', 'A',
+ 'R', 'E', 'S', 'H',
+ 'R', 'E', 'S', 'T',
+ 'R', 'G', 'Y', 'A',
+ 'R', 'I', 'A', 'L',
+ 'R', 'I', 'C', 'E',
+ 'R', 'I', 'E', 'L',
+ 'R', 'I', 'N', 'G',
+ 'R', 'I', 'R', 'A',
+ 'R', 'I', 'S', 'H',
+ 'R', 'J', 'E', 'S',
+ 'R', 'N', 'A', 'M',
+ 'R', 'O', 'A', 'R',
+ 'R', 'O', 'O', 'F',
+ 'R', 'O', 'O', 'K',
+ 'R', 'O', 'O', 'T',
+ 'R', 'O', 'S', 'H',
+ 'R', 'R', 'A', 'X',
+ 'R', 'R', 'E', 'H',
+ 'R', 'R', 'E', 'P',
+ 'R', 'R', 'E', 'T',
+ 'R', 'R', 'E', 'X',
+ 'R', 'R', 'O', 'P',
+ 'R', 'R', 'O', 'T',
+ 'R', 'R', 'O', 'X',
+ 'R', 'R', 'U', 'O',
+ 'R', 'R', 'U', 'P',
+ 'R', 'R', 'U', 'R',
+ 'R', 'R', 'U', 'T',
+ 'R', 'R', 'U', 'X',
+ 'R', 'R', 'Y', 'P',
+ 'R', 'R', 'Y', 'R',
+ 'R', 'R', 'Y', 'T',
+ 'R', 'R', 'Y', 'X',
+ 'R', 'U', 'I', 'S',
+ 'R', 'U', 'L', 'E',
+ 'R', 'U', 'O', 'P',
+ 'R', 'U', 'O', 'X',
+ 'R', 'U', 'R', 'X',
+ 'R', 'U', 'S', 'I',
+ 'R', 'W', 'A', 'A',
+ 'R', 'Y', 'R', 'X',
+ 'S', 'A', '-', 'I',
+ 'S', 'A', 'A', 'I',
+ 'S', 'A', 'D', 'E',
+ 'S', 'A', 'G', 'A',
+ 'S', 'A', 'I', 'L',
+ 'S', 'A', 'L', 'A',
+ 'S', 'A', 'L', 'T',
+ 'S', 'A', 'P', 'A',
+ 'S', 'A', 'R', 'A',
+ 'S', 'A', 'R', 'I',
+ 'S', 'B', 'U', 'B',
+ 'S', 'C', 'A', 'N',
+ 'S', 'C', 'W', 'A',
+ 'S', 'E', 'A', 'L',
+ 'S', 'E', 'E', 'N',
+ 'S', 'E', 'L', 'F',
+ 'S', 'E', 'M', 'K',
+ 'S', 'G', 'A', 'B',
+ 'S', 'G', 'A', 'W',
+ 'S', 'G', 'O', 'R',
+ 'S', 'G', 'R', 'A',
+ 'S', 'H', 'A', '3',
+ 'S', 'H', 'A', '6',
+ 'S', 'H', 'A', 'A',
+ 'S', 'H', 'A', 'D',
+ 'S', 'H', 'A', 'N',
+ 'S', 'H', 'A', 'P',
+ 'S', 'H', 'A', 'T',
+ 'S', 'H', 'A', 'X',
+ 'S', 'H', 'E', 'E',
+ 'S', 'H', 'E', 'I',
+ 'S', 'H', 'E', 'N',
+ 'S', 'H', 'E', 'P',
+ 'S', 'H', 'E', 'T',
+ 'S', 'H', 'E', 'X',
+ 'S', 'H', 'H', 'A',
+ 'S', 'H', 'I', 'D',
+ 'S', 'H', 'I', 'I',
+ 'S', 'H', 'I', 'M',
+ 'S', 'H', 'I', 'N',
+ 'S', 'H', 'I', 'P',
+ 'S', 'H', 'I', 'R',
+ 'S', 'H', 'O', 'A',
+ 'S', 'H', 'O', 'E',
+ 'S', 'H', 'O', 'G',
+ 'S', 'H', 'O', 'O',
+ 'S', 'H', 'O', 'P',
+ 'S', 'H', 'O', 'T',
+ 'S', 'H', 'O', 'X',
+ 'S', 'H', 'T', 'A',
+ 'S', 'H', 'U', '2',
+ 'S', 'H', 'U', 'O',
+ 'S', 'H', 'U', 'P',
+ 'S', 'H', 'U', 'R',
+ 'S', 'H', 'U', 'T',
+ 'S', 'H', 'U', 'X',
+ 'S', 'H', 'W', 'A',
+ 'S', 'H', 'W', 'E',
+ 'S', 'H', 'W', 'I',
+ 'S', 'H', 'W', 'O',
+ 'S', 'H', 'Y', 'A',
+ 'S', 'H', 'Y', 'P',
+ 'S', 'H', 'Y', 'R',
+ 'S', 'H', 'Y', 'T',
+ 'S', 'H', 'Y', 'X',
+ 'S', 'I', 'B', 'E',
+ 'S', 'I', 'E', 'P',
+ 'S', 'I', 'E', 'X',
+ 'S', 'I', 'G', '4',
+ 'S', 'I', 'G', 'N',
+ 'S', 'I', 'K', '2',
+ 'S', 'I', 'K', 'I',
+ 'S', 'I', 'L', 'K',
+ 'S', 'I', 'M', 'A',
+ 'S', 'I', 'N', 'E',
+ 'S', 'I', 'O', 'S',
+ 'S', 'K', 'I', 'N',
+ 'S', 'K', 'W', 'A',
+ 'S', 'L', 'U', 'R',
+ 'S', 'N', 'A', 'P',
+ 'S', 'O', 'F', 'T',
+ 'S', 'P', 'O', 'T',
+ 'S', 'P', 'W', 'A',
+ 'S', 'S', 'A', 'A',
+ 'S', 'S', 'A', 'P',
+ 'S', 'S', 'A', 'T',
+ 'S', 'S', 'A', 'X',
+ 'S', 'S', 'E', 'E',
+ 'S', 'S', 'E', 'P',
+ 'S', 'S', 'E', 'X',
+ 'S', 'S', 'I', 'E',
+ 'S', 'S', 'I', 'P',
+ 'S', 'S', 'I', 'T',
+ 'S', 'S', 'I', 'X',
+ 'S', 'S', 'O', 'P',
+ 'S', 'S', 'O', 'T',
+ 'S', 'S', 'O', 'X',
+ 'S', 'S', 'U', 'P',
+ 'S', 'S', 'U', 'T',
+ 'S', 'S', 'U', 'X',
+ 'S', 'S', 'Y', 'P',
+ 'S', 'S', 'Y', 'R',
+ 'S', 'S', 'Y', 'T',
+ 'S', 'S', 'Y', 'X',
+ 'S', 'T', 'A', 'N',
+ 'S', 'T', 'A', 'R',
+ 'S', 'T', 'E', 'M',
+ 'S', 'T', 'E', 'P',
+ 'S', 'T', 'O', 'P',
+ 'S', 'T', 'W', 'A',
+ 'S', 'U', 'D', '2',
+ 'S', 'U', 'I', 'T',
+ 'S', 'U', 'K', 'U',
+ 'S', 'U', 'N', 'G',
+ 'S', 'U', 'O', 'P',
+ 'S', 'U', 'O', 'X',
+ 'S', 'U', 'R', '9',
+ 'S', 'U', 'R', 'E',
+ 'S', 'U', 'R', 'X',
+ 'S', 'W', 'A', 'A',
+ 'S', 'W', 'I', 'I',
+ 'S', 'W', 'O', 'O',
+ 'S', 'Y', 'R', 'X',
+ 'S', 'Z', 'A', 'A',
+ 'S', 'Z', 'E', 'E',
+ 'S', 'Z', 'W', 'A',
+ 'S', 'Z', 'W', 'G',
+ 'T', 'A', 'A', 'I',
+ 'T', 'A', 'C', 'K',
+ 'T', 'A', 'I', 'L',
+ 'T', 'A', 'K', '4',
+ 'T', 'A', 'K', 'E',
+ 'T', 'A', 'L', 'L',
+ 'T', 'A', 'P', 'E',
+ 'T', 'A', 'W', 'A',
+ 'T', 'C', 'H', 'E',
+ 'T', 'E', '-', 'U',
+ 'T', 'E', 'N', 'S',
+ 'T', 'E', 'N', 'T',
+ 'T', 'E', 'N', 'U',
+ 'T', 'E', 'S', 'H',
+ 'T', 'E', 'T', 'H',
+ 'T', 'E', 'X', 'T',
+ 'T', 'H', 'A', 'A',
+ 'T', 'H', 'A', 'I',
+ 'T', 'H', 'A', 'L',
+ 'T', 'H', 'A', 'N',
+ 'T', 'H', 'E', 'E',
+ 'T', 'H', 'E', 'H',
+ 'T', 'H', 'E', 'N',
+ 'T', 'H', 'E', 'S',
+ 'T', 'H', 'E', 'Y',
+ 'T', 'H', 'I', 'I',
+ 'T', 'H', 'I', 'N',
+ 'T', 'H', 'O', 'A',
+ 'T', 'H', 'O', 'O',
+ 'T', 'H', 'W', 'A',
+ 'T', 'I', 'C', 'K',
+ 'T', 'I', 'E', 'P',
+ 'T', 'I', 'E', 'X',
+ 'T', 'I', 'L', 'E',
+ 'T', 'I', 'M', 'E',
+ 'T', 'I', 'N', 'G',
+ 'T', 'I', 'N', 'Y',
+ 'T', 'I', 'W', 'N',
+ 'T', 'L', 'E', 'E',
+ 'T', 'L', 'H', 'A',
+ 'T', 'L', 'H', 'E',
+ 'T', 'L', 'H', 'I',
+ 'T', 'L', 'H', 'O',
+ 'T', 'L', 'H', 'U',
+ 'T', 'O', 'D', 'O',
+ 'T', 'O', 'N', 'E',
+ 'T', 'O', 'N', 'G',
+ 'T', 'R', 'E', 'E',
+ 'T', 'R', 'I', 'A',
+ 'T', 'R', 'U', 'E',
+ 'T', 'S', 'A', 'A',
+ 'T', 'S', 'E', 'E',
+ 'T', 'S', 'H', 'A',
+ 'T', 'S', 'H', 'E',
+ 'T', 'S', 'S', 'E',
+ 'T', 'S', 'W', 'A',
+ 'T', 'S', 'W', 'E',
+ 'T', 'T', 'A', 'A',
+ 'T', 'T', 'E', 'E',
+ 'T', 'T', 'E', 'H',
+ 'T', 'T', 'H', 'A',
+ 'T', 'T', 'H', 'E',
+ 'T', 'T', 'H', 'I',
+ 'T', 'T', 'H', 'O',
+ 'T', 'T', 'S', 'A',
+ 'T', 'T', 'S', 'E',
+ 'T', 'T', 'S', 'I',
+ 'T', 'T', 'S', 'O',
+ 'T', 'T', 'S', 'U',
+ 'T', 'U', 'G', '2',
+ 'T', 'U', 'O', 'P',
+ 'T', 'U', 'O', 'T',
+ 'T', 'U', 'O', 'X',
+ 'T', 'U', 'R', 'N',
+ 'T', 'U', 'R', 'X',
+ 'T', 'W', 'A', 'A',
+ 'T', 'W', 'I', 'I',
+ 'T', 'W', 'O', 'O',
+ 'T', 'Y', 'P', 'E',
+ 'T', 'Z', 'A', 'A',
+ 'T', 'Z', 'E', 'E',
+ 'T', 'Z', 'I', 'R',
+ 'T', 'Z', 'O', 'A',
+ 'U', '-', 'A', 'E',
+ 'U', '-', 'Y', 'E',
+ 'U', 'A', 'T', 'H',
+ 'U', 'D', 'U', 'G',
+ 'U', 'M', 'U', 'M',
+ 'U', 'N', 'D', 'O',
+ 'U', 'N', 'I', 'T',
+ 'U', 'R', 'I', '3',
+ 'U', 'R', 'U', 'S',
+ 'U', 'R', 'U', 'Z',
+ 'U', 'S', 'E', 'D',
+ 'U', 'S', 'H', '2',
+ 'U', 'S', 'H', 'X',
+ 'U', 'S', 'S', 'U',
+ 'U', 'U', 'U', '2',
+ 'U', 'U', 'U', '3',
+ 'U', 'U', 'U', 'U',
+ 'V', 'A', 'N', 'E',
+ 'V', 'E', 'D', 'E',
+ 'V', 'E', 'N', 'D',
+ 'V', 'E', 'R', 'Y',
+ 'V', 'I', 'D', 'A',
+ 'V', 'I', 'E', 'P',
+ 'V', 'I', 'E', 'T',
+ 'V', 'I', 'E', 'X',
+ 'V', 'I', 'N', 'E',
+ 'V', 'O', 'I', 'D',
+ 'V', 'U', 'R', 'X',
+ 'V', 'Y', 'R', 'X',
+ 'W', 'A', 'E', 'N',
+ 'W', 'A', 'L', 'K',
+ 'W', 'A', 'L', 'L',
+ 'W', 'A', 'V', 'E',
+ 'W', 'A', 'V', 'Y',
+ 'W', 'E', 'E', 'N',
+ 'W', 'E', 'L', 'L',
+ 'W', 'E', 'S', 'T',
+ 'W', 'I', 'D', 'E',
+ 'W', 'I', 'N', 'D',
+ 'W', 'I', 'N', 'E',
+ 'W', 'I', 'T', 'H',
+ 'W', 'O', 'O', 'D',
+ 'W', 'O', 'O', 'L',
+ 'W', 'O', 'O', 'N',
+ 'W', 'O', 'R', 'D',
+ 'W', 'O', 'R', 'K',
+ 'W', 'R', 'A', 'P',
+ 'W', 'U', 'O', 'P',
+ 'W', 'U', 'O', 'X',
+ 'W', 'Y', 'N', 'N',
+ 'X', 'I', 'E', 'P',
+ 'X', 'I', 'E', 'T',
+ 'X', 'I', 'E', 'X',
+ 'X', 'U', 'O', 'X',
+ 'X', 'W', 'A', 'A',
+ 'X', 'W', 'E', 'E',
+ 'X', 'Y', 'A', 'A',
+ 'X', 'Y', 'E', 'E',
+ 'X', 'Y', 'R', 'X',
+ 'Y', 'A', '-', 'O',
+ 'Y', 'A', 'A', 'I',
+ 'Y', 'A', 'B', 'H',
+ 'Y', 'A', 'C', 'H',
+ 'Y', 'A', 'D', 'D',
+ 'Y', 'A', 'D', 'H',
+ 'Y', 'A', 'G', 'H',
+ 'Y', 'A', 'G', 'N',
+ 'Y', 'A', 'H', 'H',
+ 'Y', 'A', 'K', 'H',
+ 'Y', 'A', 'N', 'G',
+ 'Y', 'A', 'R', 'R',
+ 'Y', 'A', 'S', 'H',
+ 'Y', 'A', 'S', 'S',
+ 'Y', 'A', 'T', 'H',
+ 'Y', 'A', 'T', 'I',
+ 'Y', 'A', 'T', 'T',
+ 'Y', 'A', 'Z', 'H',
+ 'Y', 'A', 'Z', 'Z',
+ 'Y', 'E', 'A', 'R',
+ 'Y', 'E', 'R', 'I',
+ 'Y', 'E', 'R', 'U',
+ 'Y', 'F', 'E', 'N',
+ 'Y', 'I', '-', 'U',
+ 'Y', 'I', 'E', 'P',
+ 'Y', 'I', 'E', 'T',
+ 'Y', 'I', 'E', 'X',
+ 'Y', 'I', 'N', 'G',
+ 'Y', 'I', 'W', 'N',
+ 'Y', 'O', '-', 'I',
+ 'Y', 'O', '-', 'O',
+ 'Y', 'O', 'G', 'H',
+ 'Y', 'O', 'M', 'O',
+ 'Y', 'O', 'R', 'I',
+ 'Y', 'U', '-', 'A',
+ 'Y', 'U', '-', 'E',
+ 'Y', 'U', '-', 'I',
+ 'Y', 'U', '-', 'U',
+ 'Y', 'U', 'A', 'N',
+ 'Y', 'U', 'D', 'H',
+ 'Y', 'U', 'O', 'P',
+ 'Y', 'U', 'O', 'T',
+ 'Y', 'U', 'O', 'X',
+ 'Y', 'U', 'R', 'X',
+ 'Y', 'W', 'A', 'A',
+ 'Y', 'W', 'I', 'I',
+ 'Y', 'W', 'O', 'O',
+ 'Y', 'Y', 'R', 'X',
+ 'Z', 'A', 'I', 'N',
+ 'Z', 'A', 'M', 'X',
+ 'Z', 'A', 'T', 'A',
+ 'Z', 'E', 'R', 'O',
+ 'Z', 'E', 'T', 'A',
+ 'Z', 'H', 'A', 'A',
+ 'Z', 'H', 'A', 'P',
+ 'Z', 'H', 'A', 'R',
+ 'Z', 'H', 'A', 'T',
+ 'Z', 'H', 'A', 'X',
+ 'Z', 'H', 'E', 'E',
+ 'Z', 'H', 'E', 'P',
+ 'Z', 'H', 'E', 'T',
+ 'Z', 'H', 'E', 'X',
+ 'Z', 'H', 'O', 'O',
+ 'Z', 'H', 'O', 'P',
+ 'Z', 'H', 'O', 'T',
+ 'Z', 'H', 'O', 'X',
+ 'Z', 'H', 'U', 'O',
+ 'Z', 'H', 'U', 'P',
+ 'Z', 'H', 'U', 'R',
+ 'Z', 'H', 'U', 'T',
+ 'Z', 'H', 'U', 'X',
+ 'Z', 'H', 'W', 'A',
+ 'Z', 'H', 'W', 'E',
+ 'Z', 'H', 'Y', 'P',
+ 'Z', 'H', 'Y', 'R',
+ 'Z', 'H', 'Y', 'T',
+ 'Z', 'H', 'Y', 'X',
+ 'Z', 'I', 'D', 'A',
+ 'Z', 'I', 'E', 'P',
+ 'Z', 'I', 'E', 'X',
+ 'Z', 'I', 'Z', '2',
+ 'Z', 'U', 'O', 'P',
+ 'Z', 'U', 'O', 'X',
+ 'Z', 'U', 'R', 'X',
+ 'Z', 'Y', 'R', 'X',
+ 'Z', 'Z', 'A', 'A',
+ 'Z', 'Z', 'A', 'P',
+ 'Z', 'Z', 'A', 'T',
+ 'Z', 'Z', 'A', 'X',
+ 'Z', 'Z', 'E', 'E',
+ 'Z', 'Z', 'E', 'P',
+ 'Z', 'Z', 'E', 'X',
+ 'Z', 'Z', 'I', 'E',
+ 'Z', 'Z', 'I', 'P',
+ 'Z', 'Z', 'I', 'T',
+ 'Z', 'Z', 'I', 'X',
+ 'Z', 'Z', 'O', 'P',
+ 'Z', 'Z', 'O', 'X',
+ 'Z', 'Z', 'U', 'P',
+ 'Z', 'Z', 'U', 'R',
+ 'Z', 'Z', 'U', 'X',
+ 'Z', 'Z', 'Y', 'P',
+ 'Z', 'Z', 'Y', 'R',
+ 'Z', 'Z', 'Y', 'T',
+ 'Z', 'Z', 'Y', 'X',
+ '-', 'C', 'H', 'A', 'L',
+ '-', 'C', 'H', 'A', 'R',
+ '-', 'D', 'Z', 'U', 'D',
+ '-', 'P', 'H', 'R', 'U',
+ 'A', 'B', 'O', 'V', 'E',
+ 'A', 'C', 'U', 'T', 'E',
+ 'A', 'D', 'D', 'A', 'K',
+ 'A', 'F', 'T', 'E', 'R',
+ 'A', 'G', 'A', 'I', 'N',
+ 'A', 'G', 'O', 'G', 'I',
+ 'A', 'H', 'S', 'D', 'A',
+ 'A', 'K', 'A', 'R', 'A',
+ 'A', 'K', 'B', 'A', 'R',
+ 'A', 'L', 'A', 'P', 'H',
+ 'A', 'L', 'E', 'P', 'H',
+ 'A', 'L', 'E', 'U', 'T',
+ 'A', 'L', 'G', 'I', 'Z',
+ 'A', 'L', 'I', 'F', 'U',
+ 'A', 'L', 'L', 'A', 'H',
+ 'A', 'L', 'P', 'H', 'A',
+ 'A', 'N', 'G', 'L', 'E',
+ 'A', 'N', 'P', 'E', 'A',
+ 'A', 'N', 'S', 'H', 'E',
+ 'A', 'N', 'S', 'U', 'Z',
+ 'A', 'P', 'A', 'R', 'T',
+ 'A', 'P', 'E', 'S', 'O',
+ 'A', 'P', 'R', 'I', 'L',
+ 'A', 'R', 'A', 'E', 'A',
+ 'A', 'R', 'E', 'P', 'A',
+ 'A', 'R', 'G', 'O', 'N',
+ 'A', 'R', 'I', 'E', 'S',
+ 'A', 'R', 'K', 'A', 'B',
+ 'A', 'R', 'R', 'A', 'Y',
+ 'A', 'R', 'R', 'O', 'W',
+ 'A', 'S', 'A', 'L', '2',
+ 'A', 'T', 'N', 'A', 'H',
+ 'A', 'T', 'T', 'A', 'K',
+ 'A', 'T', 'T', 'I', 'C',
+ 'B', '1', '0', '5', 'F',
+ 'B', '1', '0', '5', 'M',
+ 'B', '1', '0', '6', 'F',
+ 'B', '1', '0', '6', 'M',
+ 'B', '1', '0', '7', 'F',
+ 'B', '1', '0', '7', 'M',
+ 'B', '1', '0', '8', 'F',
+ 'B', '1', '0', '8', 'M',
+ 'B', '1', '0', '9', 'F',
+ 'B', '1', '0', '9', 'M',
+ 'B', 'A', 'L', 'A', 'G',
+ 'B', 'A', 'R', 'A', '2',
+ 'B', 'A', 'S', 'S', 'A',
+ 'B', 'B', 'I', 'E', 'P',
+ 'B', 'B', 'I', 'E', 'T',
+ 'B', 'B', 'I', 'E', 'X',
+ 'B', 'B', 'U', 'O', 'P',
+ 'B', 'B', 'U', 'O', 'X',
+ 'B', 'B', 'U', 'R', 'X',
+ 'B', 'E', 'E', 'T', 'A',
+ 'B', 'E', 'G', 'I', 'N',
+ 'B', 'E', 'H', 'E', 'H',
+ 'B', 'E', 'I', 'T', 'H',
+ 'B', 'E', 'L', 'O', 'W',
+ 'B', 'E', 'N', 'D', 'E',
+ 'B', 'E', 'O', 'R', 'C',
+ 'B', 'H', 'E', 'T', 'H',
+ 'B', 'I', 'N', 'D', 'I',
+ 'B', 'I', 'R', 'G', 'A',
+ 'B', 'I', 'S', 'A', 'H',
+ 'B', 'L', 'A', 'C', 'K',
+ 'B', 'L', 'A', 'D', 'E',
+ 'B', 'L', 'A', 'N', 'K',
+ 'B', 'L', 'O', 'C', 'K',
+ 'B', 'L', 'O', 'O', 'D',
+ 'B', 'R', 'A', 'C', 'E',
+ 'B', 'R', 'E', 'V', 'E',
+ 'B', 'R', 'O', 'A', 'D',
+ 'B', 'R', 'U', 'S', 'H',
+ 'B', 'S', 'D', 'U', 'S',
+ 'B', 'S', 'K', 'A', '-',
+ 'B', 'S', 'K', 'U', 'R',
+ 'B', 'S', 'T', 'A', 'R',
+ 'B', 'U', 'H', 'I', 'D',
+ 'B', 'U', 'L', 'L', 'S',
+ 'B', 'U', 'L', 'U', 'G',
+ 'B', 'U', 'M', 'P', 'Y',
+ 'B', 'Z', 'U', 'N', 'G',
+ 'C', 'A', 'L', 'Y', 'A',
+ 'C', 'A', 'R', 'E', 'T',
+ 'C', 'A', 'R', 'I', 'K',
+ 'C', 'A', 'R', 'O', 'N',
+ 'C', 'A', 'U', 'D', 'A',
+ 'C', 'C', 'H', 'A', 'A',
+ 'C', 'C', 'H', 'E', 'E',
+ 'C', 'E', 'A', 'L', 'C',
+ 'C', 'E', 'C', 'E', 'K',
+ 'C', 'E', 'I', 'R', 'T',
+ 'C', 'E', 'R', 'E', 'S',
+ 'C', 'H', 'A', 'D', 'A',
+ 'C', 'H', 'A', 'I', 'R',
+ 'C', 'H', 'A', 'N', 'G',
+ 'C', 'H', 'E', 'C', 'K',
+ 'C', 'H', 'E', 'S', 'S',
+ 'C', 'H', 'I', 'K', 'I',
+ 'C', 'H', 'I', 'L', 'D',
+ 'C', 'H', 'I', 'N', 'G',
+ 'C', 'H', 'O', 'K', 'E',
+ 'C', 'H', 'R', 'O', 'A',
+ 'C', 'H', 'U', 'L', 'A',
+ 'C', 'H', 'U', 'O', 'P',
+ 'C', 'H', 'U', 'O', 'T',
+ 'C', 'H', 'U', 'O', 'X',
+ 'C', 'H', 'U', 'R', 'X',
+ 'C', 'H', 'Y', 'R', 'X',
+ 'C', 'I', 'E', 'U', 'C',
+ 'C', 'L', 'E', 'A', 'R',
+ 'C', 'L', 'I', 'C', 'K',
+ 'C', 'L', 'I', 'F', 'F',
+ 'C', 'L', 'O', 'S', 'E',
+ 'C', 'L', 'O', 'T', 'H',
+ 'C', 'L', 'O', 'U', 'D',
+ 'C', 'O', 'E', 'N', 'G',
+ 'C', 'O', 'L', 'O', 'N',
+ 'C', 'O', 'L', 'O', 'R',
+ 'C', 'O', 'M', 'E', 'T',
+ 'C', 'O', 'M', 'M', 'A',
+ 'C', 'O', 'V', 'E', 'R',
+ 'C', 'R', 'O', 'I', 'X',
+ 'C', 'R', 'O', 'S', 'S',
+ 'C', 'U', 'B', 'E', 'D',
+ 'C', 'U', 'R', 'L', 'Y',
+ 'C', 'U', 'R', 'V', 'E',
+ 'D', 'A', 'A', 'S', 'U',
+ 'D', 'A', 'E', 'N', 'G',
+ 'D', 'A', 'G', 'A', 'Z',
+ 'D', 'A', 'H', 'A', 'L',
+ 'D', 'A', 'I', 'N', 'G',
+ 'D', 'A', 'L', 'D', 'A',
+ 'D', 'A', 'L', 'E', 'T',
+ 'D', 'A', 'M', 'M', 'A',
+ 'D', 'A', 'N', 'D', 'A',
+ 'D', 'A', 'R', 'A', '3',
+ 'D', 'A', 'R', 'A', '4',
+ 'D', 'A', 'R', 'G', 'A',
+ 'D', 'A', 'S', 'I', 'A',
+ 'D', 'A', 'V', 'I', 'D',
+ 'D', 'D', 'D', 'H', 'A',
+ 'D', 'D', 'I', 'E', 'P',
+ 'D', 'D', 'I', 'E', 'X',
+ 'D', 'D', 'U', 'O', 'P',
+ 'D', 'D', 'U', 'O', 'X',
+ 'D', 'D', 'U', 'R', 'X',
+ 'D', 'E', 'A', 'T', 'H',
+ 'D', 'E', 'B', 'I', 'T',
+ 'D', 'E', 'L', 'T', 'A',
+ 'D', 'E', 'R', 'E', 'T',
+ 'D', 'E', 'U', 'N', 'G',
+ 'D', 'E', 'X', 'I', 'A',
+ 'D', 'H', 'H', 'E', 'E',
+ 'D', 'H', 'H', 'O', 'O',
+ 'D', 'I', 'F', 'A', 'T',
+ 'D', 'I', 'G', 'I', 'T',
+ 'D', 'I', 'P', 'L', 'I',
+ 'D', 'I', 'P', 'T', 'E',
+ 'D', 'I', 'T', 'T', 'O',
+ 'D', 'J', 'E', 'R', 'V',
+ 'D', 'O', 'B', 'R', 'O',
+ 'D', 'O', 'O', 'N', 'G',
+ 'D', 'O', 'U', 'B', 'T',
+ 'D', 'R', 'I', 'V', 'E',
+ 'D', 'R', 'O', 'P', 'S',
+ 'D', 'U', 'G', 'U', 'D',
+ 'D', 'Z', 'E', 'L', 'O',
+ 'E', 'A', 'G', 'L', 'E',
+ 'E', 'A', 'R', 'L', 'Y',
+ 'E', 'A', 'R', 'T', 'H',
+ 'E', 'E', 'K', 'A', 'A',
+ 'E', 'H', 'W', 'A', 'Z',
+ 'E', 'I', 'G', 'H', 'T',
+ 'E', 'J', 'E', 'C', 'T',
+ 'E', 'K', 'A', 'R', 'A',
+ 'E', 'L', 'I', 'F', 'I',
+ 'E', 'M', 'P', 'T', 'Y',
+ 'E', 'N', 'D', 'E', 'P',
+ 'E', 'N', 'T', 'E', 'R',
+ 'E', 'O', '-', 'E', 'U',
+ 'E', 'O', 'L', 'H', 'X',
+ 'E', 'Q', 'U', 'A', 'L',
+ 'E', 'Q', 'U', 'I', 'D',
+ 'E', 'R', 'A', 'S', 'E',
+ 'E', 'R', 'I', 'N', '2',
+ 'E', 'S', '-', 'T', 'E',
+ 'E', 'S', 'A', 'S', 'A',
+ 'E', 'S', 'H', '1', '6',
+ 'E', 'S', 'H', '2', '1',
+ 'E', 'S', 'H', 'E', '3',
+ 'E', 'T', 'H', 'E', 'L',
+ 'E', 'U', '-', 'E', 'U',
+ 'E', 'U', 'L', 'E', 'R',
+ 'E', 'X', 'I', 'S', 'T',
+ 'F', 'A', 'A', 'F', 'U',
+ 'F', 'A', 'I', 'H', 'U',
+ 'F', 'A', 'R', 'S', 'I',
+ 'F', 'A', 'T', 'H', 'A',
+ 'F', 'E', 'A', 'R', 'N',
+ 'F', 'E', 'E', 'N', 'G',
+ 'F', 'E', 'N', 'C', 'E',
+ 'F', 'I', 'E', 'L', 'D',
+ 'F', 'I', 'F', 'T', 'H',
+ 'F', 'I', 'F', 'T', 'Y',
+ 'F', 'I', 'G', 'H', 'T',
+ 'F', 'I', 'N', 'A', 'L',
+ 'F', 'I', 'R', 'S', 'T',
+ 'F', 'L', 'O', 'O', 'R',
+ 'F', 'L', 'U', 'T', 'E',
+ 'F', 'O', 'L', 'L', 'Y',
+ 'F', 'O', 'R', 'C', 'E',
+ 'F', 'O', 'R', 'M', 'S',
+ 'F', 'O', 'R', 'T', 'E',
+ 'F', 'O', 'R', 'T', 'Y',
+ 'F', 'R', 'A', 'M', 'E',
+ 'F', 'R', 'A', 'N', 'C',
+ 'F', 'R', 'I', 'T', 'U',
+ 'F', 'R', 'O', 'W', 'N',
+ 'G', 'A', 'A', 'F', 'U',
+ 'G', 'A', 'D', 'O', 'L',
+ 'G', 'A', 'L', 'A', 'M',
+ 'G', 'A', 'M', 'A', 'L',
+ 'G', 'A', 'M', 'L', 'A',
+ 'G', 'A', 'M', 'M', 'A',
+ 'G', 'A', 'N', 'M', 'A',
+ 'G', 'A', 'R', 'O', 'N',
+ 'G', 'E', 'S', 'H', '2',
+ 'G', 'E', 'S', 'H', 'U',
+ 'G', 'G', 'I', 'E', 'P',
+ 'G', 'G', 'I', 'E', 'X',
+ 'G', 'G', 'U', 'O', 'P',
+ 'G', 'G', 'U', 'O', 'T',
+ 'G', 'G', 'U', 'O', 'X',
+ 'G', 'G', 'U', 'R', 'X',
+ 'G', 'G', 'W', 'A', 'A',
+ 'G', 'G', 'W', 'E', 'E',
+ 'G', 'H', 'A', 'I', 'N',
+ 'G', 'H', 'O', 'S', 'T',
+ 'G', 'I', 'D', 'I', 'M',
+ 'G', 'I', 'M', 'E', 'L',
+ 'G', 'I', 'N', 'I', 'I',
+ 'G', 'I', 'S', 'A', 'L',
+ 'G', 'N', 'Y', 'I', 'S',
+ 'G', 'O', 'I', 'N', 'G',
+ 'G', 'O', 'R', 'G', 'I',
+ 'G', 'R', 'A', 'C', 'E',
+ 'G', 'R', 'A', 'I', 'N',
+ 'G', 'R', 'A', 'S', 'S',
+ 'G', 'R', 'A', 'V', 'E',
+ 'G', 'R', 'E', 'A', 'T',
+ 'G', 'R', 'E', 'E', 'K',
+ 'G', 'R', 'E', 'E', 'N',
+ 'G', 'R', 'O', 'U', 'P',
+ 'G', 'U', 'R', 'U', 'N',
+ 'H', 'A', '-', 'H', 'A',
+ 'H', 'A', 'A', 'R', 'U',
+ 'H', 'A', 'E', 'G', 'L',
+ 'H', 'A', 'I', 'T', 'U',
+ 'H', 'A', 'M', 'Z', 'A',
+ 'H', 'A', 'N', 'D', 'S',
+ 'H', 'A', 'S', 'E', 'R',
+ 'H', 'A', 'T', 'A', 'F',
+ 'H', 'A', 'T', 'H', 'I',
+ 'H', 'B', 'A', 'S', 'A',
+ 'H', 'E', 'A', 'R', 'T',
+ 'H', 'E', 'A', 'V', 'Y',
+ 'H', 'I', 'D', 'E', 'T',
+ 'H', 'I', 'E', 'U', 'H',
+ 'H', 'I', 'R', 'I', 'Q',
+ 'H', 'L', 'I', 'E', 'P',
+ 'H', 'L', 'I', 'E', 'X',
+ 'H', 'L', 'U', 'O', 'P',
+ 'H', 'L', 'U', 'O', 'X',
+ 'H', 'L', 'U', 'R', 'X',
+ 'H', 'L', 'Y', 'R', 'X',
+ 'H', 'M', 'I', 'E', 'P',
+ 'H', 'M', 'I', 'E', 'X',
+ 'H', 'M', 'U', 'O', 'P',
+ 'H', 'M', 'U', 'O', 'X',
+ 'H', 'M', 'U', 'R', 'X',
+ 'H', 'M', 'Y', 'R', 'X',
+ 'H', 'N', 'I', 'E', 'P',
+ 'H', 'N', 'I', 'E', 'T',
+ 'H', 'N', 'I', 'E', 'X',
+ 'H', 'N', 'U', 'O', 'X',
+ 'H', 'O', 'L', 'A', 'M',
+ 'H', 'O', 'O', 'R', 'U',
+ 'H', 'O', 'R', 'S', 'E',
+ 'H', 'O', 'U', 'S', 'E',
+ 'H', 'U', 'M', 'A', 'N',
+ 'H', 'U', 'R', 'A', 'N',
+ 'H', 'W', 'A', 'I', 'R',
+ 'H', 'X', 'I', 'E', 'P',
+ 'H', 'X', 'I', 'E', 'T',
+ 'H', 'X', 'I', 'E', 'X',
+ 'H', 'X', 'U', 'O', 'P',
+ 'H', 'X', 'U', 'O', 'T',
+ 'H', 'X', 'U', 'O', 'X',
+ 'H', 'Z', 'Z', 'Z', 'G',
+ 'I', 'A', 'U', 'D', 'A',
+ 'I', 'C', 'H', 'O', 'S',
+ 'I', 'C', 'H', 'O', 'U',
+ 'I', 'E', 'U', 'N', 'G',
+ 'I', 'G', 'G', 'W', 'S',
+ 'I', 'K', 'A', 'R', 'A',
+ 'I', 'M', 'A', 'G', 'E',
+ 'I', 'M', 'I', 'N', '3',
+ 'I', 'N', 'D', 'E', 'X',
+ 'I', 'N', 'N', 'E', 'R',
+ 'J', 'E', 'R', 'A', 'N',
+ 'J', 'J', 'I', 'E', 'P',
+ 'J', 'J', 'I', 'E', 'T',
+ 'J', 'J', 'I', 'E', 'X',
+ 'J', 'J', 'U', 'O', 'P',
+ 'J', 'J', 'U', 'O', 'X',
+ 'J', 'J', 'U', 'R', 'X',
+ 'J', 'O', 'K', 'E', 'R',
+ 'J', 'U', 'D', 'G', 'E',
+ 'J', 'U', 'E', 'U', 'I',
+ 'K', 'A', 'A', 'F', 'U',
+ 'K', 'A', 'I', 'R', 'I',
+ 'K', 'A', 'P', 'A', 'L',
+ 'K', 'A', 'P', 'P', 'A',
+ 'K', 'A', 'R', 'E', 'N',
+ 'K', 'A', 'S', 'R', 'A',
+ 'K', 'A', 'U', 'N', 'A',
+ 'K', 'A', 'Y', 'A', 'H',
+ 'K', 'E', 'E', 'N', 'G',
+ 'K', 'E', 'E', 'S', 'U',
+ 'K', 'E', 'H', 'E', 'H',
+ 'K', 'E', 'N', 'A', 'T',
+ 'K', 'E', 'S', 'H', '2',
+ 'K', 'E', 'T', 'T', 'I',
+ 'K', 'H', 'A', 'N', 'G',
+ 'K', 'H', 'A', 'P', 'H',
+ 'K', 'H', 'M', 'E', 'R',
+ 'K', 'H', 'U', 'A', 'T',
+ 'K', 'H', 'W', 'A', 'I',
+ 'K', 'I', 'S', 'A', 'L',
+ 'K', 'N', 'I', 'F', 'E',
+ 'K', 'O', 'M', 'B', 'U',
+ 'K', 'O', 'O', 'P', 'O',
+ 'K', 'O', 'P', 'P', 'A',
+ 'K', 'U', 'S', 'M', 'A',
+ 'K', 'X', 'W', 'A', 'A',
+ 'K', 'X', 'W', 'E', 'E',
+ 'L', 'A', 'A', 'M', 'U',
+ 'L', 'A', 'B', 'O', 'R',
+ 'L', 'A', 'G', 'A', 'B',
+ 'L', 'A', 'G', 'A', 'R',
+ 'L', 'A', 'G', 'U', 'S',
+ 'L', 'A', 'M', 'D', 'A',
+ 'L', 'A', 'M', 'E', 'D',
+ 'L', 'A', 'R', 'G', 'E',
+ 'L', 'A', 'T', 'I', 'K',
+ 'L', 'A', 'T', 'I', 'N',
+ 'L', 'A', 'U', 'L', 'A',
+ 'L', 'E', 'M', 'O', 'I',
+ 'L', 'E', 'N', 'G', 'A',
+ 'L', 'E', 'V', 'E', 'L',
+ 'L', 'I', 'B', 'R', 'A',
+ 'L', 'I', 'G', 'H', 'T',
+ 'L', 'I', 'M', 'B', 'U',
+ 'L', 'I', 'M', 'I', 'T',
+ 'L', 'I', 'M', 'M', 'U',
+ 'L', 'I', 'N', 'E', 'S',
+ 'L', 'I', 'T', 'R', 'A',
+ 'L', 'O', 'N', 'G', 'A',
+ 'L', 'O', 'T', 'U', 'S',
+ 'L', 'O', 'U', 'R', 'E',
+ 'L', 'O', 'W', '-', '9',
+ 'L', 'O', 'W', 'E', 'R',
+ 'L', 'U', 'G', 'A', 'L',
+ 'M', 'A', 'D', 'D', 'A',
+ 'M', 'A', 'H', 'H', 'A',
+ 'M', 'A', 'I', 'R', 'U',
+ 'M', 'A', 'N', 'N', 'A',
+ 'M', 'A', 'P', 'I', 'Q',
+ 'M', 'A', 'Q', 'A', 'F',
+ 'M', 'A', 'R', 'C', 'H',
+ 'M', 'A', 'S', 'H', '2',
+ 'M', 'E', 'E', 'M', 'U',
+ 'M', 'E', 'I', 'Z', 'I',
+ 'M', 'E', 'L', 'O', 'N',
+ 'M', 'E', 'T', 'A', 'L',
+ 'M', 'E', 'T', 'E', 'G',
+ 'M', 'E', 'Z', 'Z', 'O',
+ 'M', 'G', 'B', 'E', 'E',
+ 'M', 'G', 'B', 'O', 'O',
+ 'M', 'G', 'I', 'E', 'X',
+ 'M', 'G', 'U', 'O', 'P',
+ 'M', 'G', 'U', 'O', 'X',
+ 'M', 'G', 'U', 'R', 'X',
+ 'M', 'I', 'C', 'R', 'O',
+ 'M', 'I', 'E', 'U', 'M',
+ 'M', 'I', 'K', 'R', 'I',
+ 'M', 'I', 'L', 'L', 'E',
+ 'M', 'I', 'N', 'U', 'S',
+ 'M', 'I', 'R', 'E', 'D',
+ 'M', 'I', 'S', 'R', 'A',
+ 'M', 'N', 'Y', 'A', 'M',
+ 'M', 'O', 'D', 'E', 'L',
+ 'M', 'O', 'N', 'T', 'H',
+ 'M', 'O', 'U', 'N', 'D',
+ 'M', 'O', 'U', 'T', 'H',
+ 'M', 'O', 'V', 'E', 'D',
+ 'M', 'U', 'L', 'T', 'I',
+ 'M', 'U', 'N', 'A', 'H',
+ 'M', 'U', 'R', 'D', 'A',
+ 'M', 'U', 'S', 'H', '3',
+ 'M', 'U', 'S', 'I', 'C',
+ 'N', '-', 'A', 'R', 'Y',
+ 'N', 'A', 'B', 'L', 'A',
+ 'N', 'A', 'G', 'A', 'R',
+ 'N', 'A', 'G', 'R', 'I',
+ 'N', 'A', 'I', 'R', 'A',
+ 'N', 'A', 'S', 'H', 'I',
+ 'N', 'B', 'I', 'E', 'P',
+ 'N', 'B', 'I', 'E', 'X',
+ 'N', 'B', 'U', 'R', 'X',
+ 'N', 'B', 'Y', 'R', 'X',
+ 'N', 'D', 'I', 'E', 'X',
+ 'N', 'D', 'O', 'L', 'E',
+ 'N', 'D', 'U', 'R', 'X',
+ 'N', 'G', 'A', 'A', 'I',
+ 'N', 'G', 'G', 'E', 'E',
+ 'N', 'G', 'G', 'E', 'N',
+ 'N', 'G', 'G', 'O', 'O',
+ 'N', 'G', 'I', 'E', 'P',
+ 'N', 'G', 'I', 'E', 'X',
+ 'N', 'G', 'O', 'E', 'H',
+ 'N', 'G', 'U', 'O', 'T',
+ 'N', 'G', 'U', 'O', 'X',
+ 'N', 'I', 'E', 'U', 'N',
+ 'N', 'I', 'G', 'H', 'T',
+ 'N', 'I', 'S', 'A', 'G',
+ 'N', 'J', 'I', 'E', 'P',
+ 'N', 'J', 'I', 'E', 'T',
+ 'N', 'J', 'I', 'E', 'X',
+ 'N', 'J', 'U', 'O', 'X',
+ 'N', 'J', 'U', 'R', 'X',
+ 'N', 'J', 'Y', 'R', 'X',
+ 'N', 'N', 'G', 'A', 'A',
+ 'N', 'N', 'G', 'I', 'I',
+ 'N', 'N', 'G', 'O', 'O',
+ 'N', 'O', 'O', 'N', 'U',
+ 'N', 'O', 'R', 'T', 'H',
+ 'N', 'O', 'T', 'C', 'H',
+ 'N', 'O', 'T', 'E', 'S',
+ 'N', 'O', 'T', 'T', 'O',
+ 'N', 'R', 'U', 'R', 'X',
+ 'N', 'R', 'Y', 'R', 'X',
+ 'N', 'U', 'K', 'T', 'A',
+ 'N', 'U', 'N', 'U', 'Z',
+ 'N', 'Y', 'I', 'E', 'P',
+ 'N', 'Y', 'I', 'E', 'T',
+ 'N', 'Y', 'I', 'E', 'X',
+ 'N', 'Y', 'U', 'O', 'P',
+ 'N', 'Y', 'U', 'O', 'X',
+ 'N', 'Z', 'I', 'E', 'P',
+ 'N', 'Z', 'I', 'E', 'X',
+ 'N', 'Z', 'U', 'O', 'X',
+ 'N', 'Z', 'U', 'R', 'X',
+ 'N', 'Z', 'Y', 'R', 'X',
+ 'O', 'B', 'O', 'L', 'S',
+ 'O', 'G', 'H', 'A', 'M',
+ 'O', 'J', 'E', 'O', 'N',
+ 'O', 'K', 'A', 'R', 'A',
+ 'O', 'L', 'I', 'V', 'E',
+ 'O', 'M', 'E', 'G', 'A',
+ 'O', 'N', 'K', 'A', 'R',
+ 'O', 'R', 'I', 'Y', 'A',
+ 'O', 'T', 'H', 'A', 'L',
+ 'O', 'U', 'N', 'C', 'E',
+ 'O', 'U', 'T', 'E', 'R',
+ 'O', 'X', 'E', 'I', 'A',
+ 'P', 'A', 'A', 'T', 'U',
+ 'P', 'A', 'D', 'M', 'A',
+ 'P', 'A', 'N', 'T', 'I',
+ 'P', 'A', 'P', 'E', 'R',
+ 'P', 'A', 'S', 'E', 'Q',
+ 'P', 'A', 'S', 'U', 'Q',
+ 'P', 'A', 'T', 'A', 'H',
+ 'P', 'A', 'T', 'A', 'K',
+ 'P', 'A', 'Z', 'E', 'R',
+ 'P', 'E', 'A', 'C', 'E',
+ 'P', 'E', 'D', 'A', 'L',
+ 'P', 'E', 'E', 'Z', 'I',
+ 'P', 'E', 'H', 'E', 'H',
+ 'P', 'E', 'I', 'T', 'H',
+ 'P', 'E', 'N', 'N', 'Y',
+ 'P', 'E', 'N', 'S', 'U',
+ 'P', 'E', 'P', 'E', 'T',
+ 'P', 'E', 'S', 'H', '2',
+ 'P', 'H', 'U', 'N', 'G',
+ 'P', 'I', 'A', 'N', 'O',
+ 'P', 'I', 'E', 'C', 'E',
+ 'P', 'I', 'E', 'U', 'P',
+ 'P', 'I', 'R', 'I', 'G',
+ 'P', 'L', 'A', 'C', 'E',
+ 'P', 'L', 'A', 'N', 'E',
+ 'P', 'L', 'U', 'T', 'O',
+ 'P', 'O', 'I', 'N', 'T',
+ 'P', 'O', 'N', 'D', 'O',
+ 'P', 'O', 'U', 'N', 'D',
+ 'P', 'O', 'W', 'E', 'R',
+ 'P', 'R', 'I', 'M', 'E',
+ 'P', 'R', 'I', 'N', 'T',
+ 'P', 'R', 'O', 'O', 'F',
+ 'P', 'R', 'O', 'V', 'E',
+ 'P', 'S', 'I', 'L', 'I',
+ 'Q', 'A', 'A', 'F', 'U',
+ 'Q', 'A', 'D', 'M', 'A',
+ 'Q', 'A', 'T', 'A', 'N',
+ 'Q', 'H', 'W', 'A', 'A',
+ 'Q', 'H', 'W', 'E', 'E',
+ 'Q', 'U', 'E', 'E', 'N',
+ 'Q', 'U', 'I', 'L', 'L',
+ 'Q', 'U', 'O', 'T', 'E',
+ 'R', 'A', 'I', 'D', 'A',
+ 'R', 'A', 'I', 'D', 'O',
+ 'R', 'A', 'N', 'G', 'E',
+ 'R', 'A', 'S', 'H', 'A',
+ 'R', 'A', 'T', 'I', 'O',
+ 'R', 'B', 'A', 'S', 'A',
+ 'R', 'E', 'A', 'C', 'H',
+ 'R', 'E', 'L', 'A', 'A',
+ 'R', 'E', 'V', 'I', 'A',
+ 'R', 'E', 'V', 'M', 'A',
+ 'R', 'G', 'Y', 'A', 'N',
+ 'R', 'I', 'C', 'E', 'M',
+ 'R', 'I', 'E', 'U', 'L',
+ 'R', 'I', 'G', 'H', 'T',
+ 'R', 'I', 'T', 'S', 'I',
+ 'R', 'I', 'V', 'E', 'R',
+ 'R', 'N', 'O', 'O', 'N',
+ 'R', 'O', 'B', 'A', 'T',
+ 'R', 'O', 'M', 'A', 'N',
+ 'R', 'O', 'U', 'N', 'D',
+ 'R', 'R', 'U', 'O', 'X',
+ 'R', 'R', 'U', 'R', 'X',
+ 'R', 'R', 'Y', 'R', 'X',
+ 'R', 'T', 'A', 'G', 'S',
+ 'R', 'U', 'M', 'A', 'I',
+ 'R', 'U', 'N', 'I', 'C',
+ 'R', 'U', 'P', 'E', 'E',
+ 'R', 'U', 'P', 'I', 'I',
+ 'R', 'W', 'A', 'H', 'A',
+ 'S', 'A', 'D', 'H', 'E',
+ 'S', 'A', 'F', 'H', 'A',
+ 'S', 'A', 'L', 'A', 'M',
+ 'S', 'A', 'L', 'L', 'A',
+ 'S', 'A', 'M', 'K', 'A',
+ 'S', 'A', 'M', 'P', 'I',
+ 'S', 'A', 'N', 'A', 'H',
+ 'S', 'A', 'S', 'A', 'K',
+ 'S', 'A', 'U', 'I', 'L',
+ 'S', 'B', 'R', 'U', 'L',
+ 'S', 'C', 'H', 'W', 'A',
+ 'S', 'D', 'O', 'N', 'G',
+ 'S', 'E', 'E', 'N', 'U',
+ 'S', 'E', 'G', 'N', 'O',
+ 'S', 'E', 'G', 'O', 'L',
+ 'S', 'E', 'N', 'T', 'I',
+ 'S', 'E', 'N', 'T', 'O',
+ 'S', 'E', 'V', 'E', 'N',
+ 'S', 'H', 'A', 'B', '6',
+ 'S', 'H', 'A', 'D', 'E',
+ 'S', 'H', 'A', 'N', 'G',
+ 'S', 'H', 'A', 'R', '2',
+ 'S', 'H', 'A', 'R', 'P',
+ 'S', 'H', 'A', 'R', 'U',
+ 'S', 'H', 'C', 'H', 'A',
+ 'S', 'H', 'E', 'E', 'N',
+ 'S', 'H', 'E', 'E', 'P',
+ 'S', 'H', 'E', 'G', '9',
+ 'S', 'H', 'E', 'L', 'F',
+ 'S', 'H', 'E', 'L', 'L',
+ 'S', 'H', 'E', 'S', 'H',
+ 'S', 'H', 'E', 'V', 'A',
+ 'S', 'H', 'I', 'F', 'T',
+ 'S', 'H', 'I', 'I', 'N',
+ 'S', 'H', 'I', 'M', 'A',
+ 'S', 'H', 'I', 'T', 'A',
+ 'S', 'H', 'O', 'G', 'I',
+ 'S', 'H', 'O', 'O', 'T',
+ 'S', 'H', 'O', 'R', 'T',
+ 'S', 'H', 'U', 'O', 'P',
+ 'S', 'H', 'U', 'O', 'X',
+ 'S', 'H', 'U', 'R', 'X',
+ 'S', 'H', 'W', 'A', 'A',
+ 'S', 'H', 'W', 'I', 'I',
+ 'S', 'H', 'W', 'O', 'O',
+ 'S', 'H', 'Y', 'R', 'X',
+ 'S', 'I', 'G', 'E', 'L',
+ 'S', 'I', 'G', 'M', 'A',
+ 'S', 'I', 'G', 'N', 'S',
+ 'S', 'I', 'L', 'A', '3',
+ 'S', 'I', 'X', 'T', 'H',
+ 'S', 'I', 'X', 'T', 'Y',
+ 'S', 'K', 'U', 'L', 'L',
+ 'S', 'L', 'A', 'S', 'H',
+ 'S', 'L', 'A', 'V', 'E',
+ 'S', 'L', 'I', 'C', 'E',
+ 'S', 'L', 'I', 'N', 'G',
+ 'S', 'L', 'O', 'P', 'E',
+ 'S', 'L', 'O', 'V', 'O',
+ 'S', 'M', 'A', 'L', 'L',
+ 'S', 'M', 'A', 'S', 'H',
+ 'S', 'M', 'E', 'A', 'R',
+ 'S', 'M', 'I', 'L', 'E',
+ 'S', 'N', 'A', 'K', 'E',
+ 'S', 'N', 'O', 'U', 'T',
+ 'S', 'O', 'U', 'N', 'D',
+ 'S', 'O', 'U', 'T', 'H',
+ 'S', 'P', 'A', 'C', 'E',
+ 'S', 'P', 'A', 'D', 'E',
+ 'S', 'P', 'E', 'A', 'R',
+ 'S', 'P', 'I', 'C', 'E',
+ 'S', 'P', 'O', 'O', 'N',
+ 'S', 'Q', 'U', 'A', 'T',
+ 'S', 'S', 'I', 'E', 'P',
+ 'S', 'S', 'I', 'E', 'X',
+ 'S', 'S', 'Y', 'R', 'X',
+ 'S', 'T', 'A', 'F', 'F',
+ 'S', 'T', 'A', 'N', 'D',
+ 'S', 'T', 'A', 'R', 'K',
+ 'S', 'T', 'A', 'R', 'T',
+ 'S', 'T', 'E', 'A', 'M',
+ 'S', 'T', 'I', 'L', 'E',
+ 'S', 'T', 'I', 'L', 'L',
+ 'S', 'T', 'O', 'C', 'K',
+ 'S', 'T', 'O', 'N', 'E',
+ 'S', 'T', 'O', 'V', 'E',
+ 'S', 'T', 'U', 'D', 'Y',
+ 'S', 'U', 'H', 'U', 'R',
+ 'S', 'U', 'K', 'U', 'N',
+ 'S', 'W', 'A', 'S', 'H',
+ 'S', 'W', 'E', 'E', 'T',
+ 'S', 'W', 'O', 'R', 'D',
+ 'S', 'W', 'U', 'N', 'G',
+ 'S', 'Y', 'R', 'M', 'A',
+ 'T', 'A', 'B', 'L', 'E',
+ 'T', 'A', 'M', 'I', 'L',
+ 'T', 'A', 'P', 'E', 'R',
+ 'T', 'C', 'H', 'E', 'H',
+ 'T', 'E', 'G', 'E', 'H',
+ 'T', 'E', 'H', 'E', 'H',
+ 'T', 'E', 'I', 'W', 'S',
+ 'T', 'E', 'V', 'I', 'R',
+ 'T', 'H', 'E', 'M', 'A',
+ 'T', 'H', 'E', 'R', 'E',
+ 'T', 'H', 'E', 'T', 'A',
+ 'T', 'H', 'I', 'G', 'H',
+ 'T', 'H', 'I', 'R', 'D',
+ 'T', 'H', 'I', 'T', 'A',
+ 'T', 'H', 'O', 'N', 'G',
+ 'T', 'H', 'O', 'R', 'N',
+ 'T', 'H', 'R', 'E', 'E',
+ 'T', 'H', 'U', 'N', 'G',
+ 'T', 'H', 'U', 'R', 'S',
+ 'T', 'H', 'W', 'A', 'A',
+ 'T', 'I', 'A', 'R', 'A',
+ 'T', 'I', 'G', 'E', 'R',
+ 'T', 'I', 'G', 'H', 'T',
+ 'T', 'I', 'L', 'D', 'E',
+ 'T', 'I', 'M', 'E', 'S',
+ 'T', 'I', 'N', 'N', 'E',
+ 'T', 'I', 'P', 'P', 'I',
+ 'T', 'I', 'T', 'L', 'O',
+ 'T', 'I', 'W', 'A', 'Z',
+ 'T', 'L', 'H', 'E', 'E',
+ 'T', 'O', 'N', 'A', 'L',
+ 'T', 'O', 'N', 'O', 'S',
+ 'T', 'O', 'O', 'T', 'H',
+ 'T', 'O', 'T', 'A', 'L',
+ 'T', 'R', 'A', 'C', 'K',
+ 'T', 'R', 'A', 'D', 'E',
+ 'T', 'R', 'I', 'O', 'N',
+ 'T', 'R', 'U', 'N', 'K',
+ 'T', 'R', 'U', 'T', 'H',
+ 'T', 'S', 'A', 'D', 'I',
+ 'T', 'S', 'E', 'R', 'E',
+ 'T', 'S', 'H', 'E', 'G',
+ 'T', 'S', 'H', 'E', 'S',
+ 'T', 'T', 'S', 'E', 'E',
+ 'T', 'T', 'T', 'H', 'A',
+ 'T', 'U', 'N', 'N', 'Y',
+ 'T', 'U', 'R', 'O', '2',
+ 'T', 'U', 'U', 'M', 'U',
+ 'U', 'D', 'A', 'A', 'T',
+ 'U', 'K', 'A', 'R', 'A',
+ 'U', 'M', 'B', 'I', 'N',
+ 'U', 'N', 'C', 'I', 'A',
+ 'U', 'N', 'D', 'E', 'R',
+ 'U', 'N', 'I', 'O', 'N',
+ 'U', 'N', 'I', 'T', 'Y',
+ 'U', 'P', 'P', 'E', 'R',
+ 'U', 'R', 'U', 'D', 'A',
+ 'U', 'S', 'S', 'U', '3',
+ 'U', 'T', 'U', 'K', 'I',
+ 'V', 'A', 'A', 'V', 'U',
+ 'V', 'A', 'R', 'I', 'A',
+ 'V', 'A', 'R', 'Y', 'S',
+ 'V', 'A', 'S', 'I', 'S',
+ 'V', 'A', 'T', 'H', 'Y',
+ 'V', 'E', 'R', 'G', 'E',
+ 'V', 'E', 'R', 'S', 'E',
+ 'V', 'E', 'S', 'T', 'A',
+ 'V', 'I', 'R', 'G', 'A',
+ 'V', 'I', 'R', 'G', 'O',
+ 'V', 'O', 'C', 'A', 'L',
+ 'V', 'O', 'W', 'E', 'L',
+ 'V', 'Z', 'M', 'E', 'T',
+ 'W', 'A', 'A', 'V', 'U',
+ 'W', 'A', 'S', 'L', 'A',
+ 'W', 'A', 'T', 'C', 'H',
+ 'W', 'A', 'T', 'E', 'R',
+ 'W', 'A', 'T', 'T', 'O',
+ 'W', 'H', 'E', 'A', 'T',
+ 'W', 'H', 'E', 'E', 'L',
+ 'W', 'H', 'I', 'T', 'E',
+ 'W', 'H', 'O', 'L', 'E',
+ 'W', 'I', 'D', 'T', 'H',
+ 'W', 'I', 'N', 'D', 'U',
+ 'W', 'I', 'N', 'J', 'A',
+ 'W', 'O', 'M', 'A', 'N',
+ 'W', 'R', 'O', 'N', 'G',
+ 'W', 'U', 'N', 'J', 'O',
+ 'X', 'I', 'R', 'O', 'N',
+ 'Y', 'A', '-', 'Y', 'O',
+ 'Y', 'A', 'A', 'D', 'O',
+ 'Y', 'A', 'A', 'R', 'U',
+ 'Y', 'A', 'D', 'D', 'H',
+ 'Y', 'A', 'G', 'H', 'H',
+ 'Y', 'A', 'K', 'H', 'H',
+ 'Y', 'E', 'O', '-', 'O',
+ 'Y', 'E', 'O', '-', 'U',
+ 'Y', 'E', 'R', 'A', 'H',
+ 'Y', 'E', 'S', 'T', 'U',
+ 'Y', 'E', 'T', 'I', 'V',
+ 'Y', 'I', 'Z', 'E', 'T',
+ 'Y', 'O', '-', 'Y', 'A',
+ 'Y', 'U', '-', 'E', 'O',
+ 'Y', 'U', '-', 'Y', 'E',
+ 'Z', 'A', 'Q', 'E', 'F',
+ 'Z', 'A', 'R', 'Q', 'A',
+ 'Z', 'A', 'Y', 'I', 'N',
+ 'Z', 'H', 'A', 'I', 'N',
+ 'Z', 'H', 'U', 'O', 'P',
+ 'Z', 'H', 'U', 'O', 'X',
+ 'Z', 'H', 'U', 'R', 'X',
+ 'Z', 'H', 'Y', 'R', 'X',
+ 'Z', 'I', 'L', 'D', 'E',
+ 'Z', 'I', 'N', 'O', 'R',
+ 'Z', 'L', 'A', 'M', 'A',
+ 'Z', 'U', 'B', 'U', 'R',
+ 'Z', 'Y', 'G', 'O', 'S',
+ 'Z', 'Z', 'I', 'E', 'P',
+ 'Z', 'Z', 'I', 'E', 'T',
+ 'Z', 'Z', 'I', 'E', 'X',
+ 'Z', 'Z', 'U', 'R', 'X',
+ 'Z', 'Z', 'Y', 'R', 'X',
+ '-', 'K', 'H', 'Y', 'I', 'L',
+ '-', 'K', 'H', 'Y', 'U', 'D',
+ 'A', 'C', 'C', 'E', 'N', 'T',
+ 'A', 'E', 'G', 'E', 'A', 'N',
+ 'A', 'I', 'H', 'V', 'U', 'S',
+ 'A', 'I', 'K', 'A', 'R', 'A',
+ 'A', 'L', 'A', 'Y', 'H', 'E',
+ 'A', 'L', 'M', 'O', 'S', 'T',
+ 'A', 'M', 'O', 'U', 'N', 'T',
+ 'A', 'N', 'C', 'H', 'O', 'R',
+ 'A', 'N', 'C', 'O', 'R', 'A',
+ 'A', 'P', 'A', 'A', 'T', 'O',
+ 'A', 'P', 'L', 'O', 'U', 'N',
+ 'A', 'R', 'A', 'B', 'I', 'C',
+ 'A', 'R', 'A', 'E', 'A', 'E',
+ 'A', 'R', 'L', 'A', 'U', 'G',
+ 'A', 'R', 'M', 'O', 'U', 'R',
+ 'A', 'R', 'O', 'U', 'N', 'D',
+ 'A', 'R', 'O', 'U', 'R', 'A',
+ 'A', 'R', 'R', 'I', 'V', 'E',
+ 'A', 'R', 'R', 'O', 'W', 'S',
+ 'A', 'R', 'S', 'E', 'O', 'S',
+ 'A', 'R', 'T', 'A', 'B', 'E',
+ 'A', 'R', 'U', 'H', 'U', 'A',
+ 'A', 'S', 'C', 'E', 'N', 'T',
+ 'A', 'S', 'H', 'G', 'A', 'B',
+ 'A', 'S', 'Y', 'U', 'R', 'A',
+ 'A', 'U', 'G', 'U', 'S', 'T',
+ 'A', 'U', 'T', 'U', 'M', 'N',
+ 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'B', 'A', 'D', 'G', 'E', 'R',
+ 'B', 'A', 'H', 'A', 'R', '2',
+ 'B', 'A', 'I', 'M', 'A', 'I',
+ 'B', 'A', 'L', 'L', 'O', 'T',
+ 'B', 'A', 'L', 'U', 'D', 'A',
+ 'B', 'A', 'M', 'B', 'O', 'O',
+ 'B', 'A', 'N', 'T', 'O', 'C',
+ 'B', 'A', 'R', 'L', 'E', 'Y',
+ 'B', 'A', 'R', 'R', 'E', 'D',
+ 'B', 'A', 'R', 'R', 'E', 'E',
+ 'B', 'E', 'A', 'M', 'E', 'D',
+ 'B', 'E', 'F', 'O', 'R', 'E',
+ 'B', 'E', 'R', 'B', 'E', 'R',
+ 'B', 'E', 'S', 'I', 'D', 'E',
+ 'B', 'E', 'Y', 'Y', 'A', 'L',
+ 'B', 'I', 'N', 'A', 'R', 'Y',
+ 'B', 'I', 'S', 'H', 'O', 'P',
+ 'B', 'I', 'T', 'I', 'N', 'G',
+ 'B', 'I', 'T', 'T', 'E', 'R',
+ 'B', 'O', 'R', 'U', 'T', 'O',
+ 'B', 'O', 'T', 'T', 'O', 'M',
+ 'B', 'O', 'W', 'T', 'I', 'E',
+ 'B', 'R', 'A', 'N', 'C', 'H',
+ 'B', 'R', 'E', 'A', 'T', 'H',
+ 'B', 'R', 'E', 'V', 'I', 'S',
+ 'B', 'R', 'I', 'D', 'G', 'E',
+ 'B', 'R', 'O', 'K', 'E', 'N',
+ 'B', 'R', 'O', 'N', 'Z', 'E',
+ 'B', 'U', 'C', 'K', 'L', 'E',
+ 'B', 'U', 'L', 'L', 'E', 'T',
+ 'C', 'A', 'M', 'N', 'U', 'C',
+ 'C', 'A', 'N', 'C', 'E', 'L',
+ 'C', 'A', 'N', 'C', 'E', 'R',
+ 'C', 'A', 'N', 'D', 'R', 'A',
+ 'C', 'A', 'R', 'I', 'A', 'N',
+ 'C', 'A', 'T', 'A', 'W', 'A',
+ 'C', 'E', 'N', 'T', 'R', 'E',
+ 'C', 'E', 'R', '-', 'W', 'A',
+ 'C', 'H', 'A', 'M', 'K', 'O',
+ 'C', 'H', 'A', 'N', 'G', 'E',
+ 'C', 'H', 'I', 'L', 'L', 'U',
+ 'C', 'H', 'I', 'R', 'E', 'T',
+ 'C', 'H', 'I', 'R', 'O', 'N',
+ 'C', 'H', 'R', 'I', 'V', 'I',
+ 'C', 'H', 'R', 'O', 'M', 'A',
+ 'C', 'H', 'U', 'R', 'C', 'H',
+ 'C', 'I', 'R', 'C', 'L', 'E',
+ 'C', 'L', 'E', 'F', '-', '1',
+ 'C', 'L', 'E', 'F', '-', '2',
+ 'C', 'L', 'I', 'V', 'I', 'S',
+ 'C', 'L', 'O', 'S', 'E', 'D',
+ 'C', 'O', 'F', 'F', 'I', 'N',
+ 'C', 'O', 'L', 'U', 'M', 'N',
+ 'C', 'O', 'M', 'I', 'N', 'G',
+ 'C', 'O', 'M', 'M', 'O', 'N',
+ 'C', 'O', 'P', 'T', 'I', 'C',
+ 'C', 'O', 'R', 'N', 'E', 'R',
+ 'C', 'O', 'R', 'P', 'S', 'E',
+ 'C', 'R', 'E', 'D', 'I', 'T',
+ 'C', 'U', 'R', 'V', 'E', 'D',
+ 'D', 'A', 'A', 'D', 'H', 'U',
+ 'D', 'A', 'G', 'E', 'S', 'H',
+ 'D', 'A', 'G', 'G', 'E', 'R',
+ 'D', 'A', 'L', 'A', 'T', 'H',
+ 'D', 'A', 'M', 'A', 'R', 'U',
+ 'D', 'A', 'S', 'E', 'I', 'A',
+ 'D', 'A', 'S', 'H', 'E', 'D',
+ 'D', 'D', 'A', 'H', 'A', 'L',
+ 'D', 'E', 'G', 'R', 'E', 'E',
+ 'D', 'E', 'L', 'E', 'T', 'E',
+ 'D', 'E', 'N', 'N', 'E', 'N',
+ 'D', 'E', 'N', 'T', 'A', 'L',
+ 'D', 'E', 'V', 'I', 'C', 'E',
+ 'D', 'H', 'A', 'A', 'L', 'U',
+ 'D', 'H', 'A', 'R', 'M', 'A',
+ 'D', 'I', 'E', 'S', 'I', 'S',
+ 'D', 'I', 'G', 'R', 'A', 'M',
+ 'D', 'I', 'P', 'P', 'E', 'R',
+ 'D', 'I', 'R', 'E', 'C', 'T',
+ 'D', 'I', 'V', 'I', 'D', 'E',
+ 'D', 'J', 'E', 'R', 'V', 'I',
+ 'D', 'O', 'L', 'I', 'U', 'M',
+ 'D', 'O', 'L', 'L', 'A', 'R',
+ 'D', 'O', 'M', 'A', 'I', 'N',
+ 'D', 'O', 'M', 'I', 'N', 'O',
+ 'D', 'O', 'T', 'S', '-', '1',
+ 'D', 'O', 'T', 'S', '-', '2',
+ 'D', 'O', 'T', 'S', '-', '3',
+ 'D', 'O', 'T', 'S', '-', '4',
+ 'D', 'O', 'T', 'S', '-', '5',
+ 'D', 'O', 'T', 'S', '-', '6',
+ 'D', 'O', 'T', 'S', '-', '7',
+ 'D', 'O', 'T', 'S', '-', '8',
+ 'D', 'O', 'T', 'T', 'E', 'D',
+ 'D', 'O', 'U', 'B', 'L', 'E',
+ 'D', 'R', 'A', 'G', 'O', 'N',
+ 'D', 'U', 'T', 'I', 'E', 'S',
+ 'E', 'I', 'G', 'H', 'T', 'H',
+ 'E', 'I', 'G', 'H', 'T', 'Y',
+ 'E', 'L', 'E', 'V', 'E', 'N',
+ 'E', 'N', 'D', 'I', 'N', 'G',
+ 'E', 'Q', 'U', 'A', 'L', 'S',
+ 'E', 'S', 'C', 'A', 'P', 'E',
+ 'E', 'T', 'E', 'R', 'O', 'N',
+ 'E', 'X', 'C', 'E', 'S', 'S',
+ 'E', 'X', 'I', 'S', 'T', 'S',
+ 'E', 'Y', 'A', 'N', 'N', 'A',
+ 'F', 'A', 'C', 'E', '-', '1',
+ 'F', 'A', 'C', 'E', '-', '2',
+ 'F', 'A', 'C', 'E', '-', '3',
+ 'F', 'A', 'C', 'E', '-', '4',
+ 'F', 'A', 'C', 'E', '-', '5',
+ 'F', 'A', 'C', 'E', '-', '6',
+ 'F', 'A', 'C', 'T', 'O', 'R',
+ 'F', 'A', 'M', 'I', 'L', 'Y',
+ 'F', 'A', 'T', 'H', 'E', 'R',
+ 'F', 'E', 'M', 'A', 'L', 'E',
+ 'F', 'H', 'T', 'O', 'R', 'A',
+ 'F', 'I', 'F', 'T', 'H', 'S',
+ 'F', 'I', 'G', 'U', 'R', 'E',
+ 'F', 'I', 'L', 'L', 'E', 'D',
+ 'F', 'I', 'L', 'L', 'E', 'R',
+ 'F', 'I', 'N', 'I', 'T', 'E',
+ 'F', 'L', 'A', 'G', '-', '1',
+ 'F', 'L', 'A', 'G', '-', '2',
+ 'F', 'L', 'A', 'G', '-', '3',
+ 'F', 'L', 'A', 'G', '-', '4',
+ 'F', 'L', 'A', 'G', '-', '5',
+ 'F', 'L', 'E', 'X', 'U', 'S',
+ 'F', 'L', 'I', 'G', 'H', 'T',
+ 'F', 'L', 'O', 'R', 'A', 'L',
+ 'F', 'L', 'O', 'W', 'E', 'R',
+ 'F', 'O', 'R', 'C', 'E', 'S',
+ 'F', 'O', 'R', 'K', 'E', 'D',
+ 'F', 'O', 'U', 'R', 'T', 'H',
+ 'F', 'R', 'E', 'N', 'C', 'H',
+ 'F', 'T', 'H', 'O', 'R', 'A',
+ 'G', 'A', 'N', 'G', 'I', 'A',
+ 'G', 'A', 'P', 'P', 'E', 'D',
+ 'G', 'A', 'S', 'H', 'A', 'N',
+ 'G', 'E', 'D', 'O', 'L', 'A',
+ 'G', 'E', 'M', 'I', 'N', 'I',
+ 'G', 'E', 'N', 'I', 'K', 'I',
+ 'G', 'E', 'N', 'T', 'L', 'E',
+ 'G', 'E', 'R', 'E', 'S', 'H',
+ 'G', 'E', 'R', 'M', 'A', 'N',
+ 'G', 'H', 'A', 'I', 'N', 'U',
+ 'G', 'H', 'A', 'M', 'A', 'L',
+ 'G', 'H', 'U', 'N', 'N', 'A',
+ 'G', 'L', 'E', 'I', 'C', 'H',
+ 'G', 'O', 'R', 'G', 'O', 'N',
+ 'G', 'O', 'T', 'H', 'I', 'C',
+ 'G', 'R', 'A', 'M', 'M', 'A',
+ 'G', 'R', 'A', 'T', 'E', 'R',
+ 'G', 'R', 'O', 'U', 'N', 'D',
+ 'G', 'U', 'R', 'A', 'M', 'U',
+ 'G', 'U', 'R', 'U', 'S', 'H',
+ 'H', '-', 'T', 'Y', 'P', 'E',
+ 'H', 'A', 'F', 'U', 'K', 'H',
+ 'H', 'A', 'G', 'L', 'A', 'Z',
+ 'H', 'A', 'M', 'M', 'E', 'R',
+ 'H', 'A', 'N', 'G', 'U', 'L',
+ 'H', 'E', 'A', 'D', 'E', 'D',
+ 'H', 'E', 'A', 'V', 'E', 'N',
+ 'H', 'E', 'B', 'R', 'E', 'W',
+ 'H', 'E', 'I', 'S', 'E', 'I',
+ 'H', 'E', 'L', 'M', 'E', 'T',
+ 'H', 'E', 'R', 'M', 'E', 'S',
+ 'H', 'E', 'R', 'U', 'T', 'U',
+ 'H', 'I', 'D', 'I', 'N', 'G',
+ 'H', 'U', 'I', 'I', 'T', 'O',
+ 'H', 'Y', 'P', 'H', 'E', 'N',
+ 'I', '-', 'B', 'E', 'A', 'M',
+ 'I', 'L', 'I', 'M', 'M', 'U',
+ 'I', 'N', 'G', 'W', 'A', 'Z',
+ 'I', 'N', 'I', 'N', 'G', 'U',
+ 'I', 'N', 'S', 'E', 'C', 'T',
+ 'I', 'N', 'S', 'I', 'D', 'E',
+ 'I', 'S', 'A', 'K', 'I', 'A',
+ 'I', 'S', 'S', 'H', 'A', 'R',
+ 'I', 'T', 'A', 'L', 'I', 'C',
+ 'I', 'Y', 'A', 'N', 'N', 'A',
+ 'J', 'O', 'I', 'N', 'E', 'D',
+ 'J', 'O', 'I', 'N', 'E', 'R',
+ 'J', 'O', 'Y', 'O', 'U', 'S',
+ 'K', 'A', 'N', 'A', 'K', 'O',
+ 'K', 'A', 'N', 'G', 'X', 'I',
+ 'K', 'A', 'S', 'K', 'A', 'L',
+ 'K', 'A', 'T', 'A', 'V', 'A',
+ 'K', 'A', 'V', 'Y', 'K', 'A',
+ 'K', 'A', 'Z', 'A', 'K', 'H',
+ 'K', 'E', 'F', 'U', 'L', 'A',
+ 'K', 'E', 'L', 'V', 'I', 'N',
+ 'K', 'E', 'M', 'P', 'L', 'I',
+ 'K', 'E', 'M', 'P', 'U', 'L',
+ 'K', 'E', 'Y', 'C', 'A', 'P',
+ 'K', 'H', 'A', 'N', 'D', 'A',
+ 'K', 'H', 'O', 'M', 'U', 'T',
+ 'K', 'I', 'S', 'I', 'M', '5',
+ 'K', 'I', 'Y', 'E', 'O', 'K',
+ 'K', 'L', 'A', 'S', 'M', 'A',
+ 'K', 'L', 'I', 'T', 'O', 'N',
+ 'K', 'N', 'I', 'G', 'H', 'T',
+ 'K', 'O', 'R', 'E', 'A', 'N',
+ 'K', 'O', 'R', 'U', 'N', 'A',
+ 'K', 'U', 'S', 'H', 'U', '2',
+ 'K', 'W', 'U', '3', '1', '8',
+ 'K', 'Y', 'U', 'R', 'I', 'I',
+ 'L', '-', 'T', 'Y', 'P', 'E',
+ 'L', 'A', 'H', 'S', 'H', 'U',
+ 'L', 'A', 'M', 'A', 'D', 'H',
+ 'L', 'A', 'M', 'B', 'D', 'A',
+ 'L', 'A', 'R', 'G', 'E', 'R',
+ 'L', 'A', 'U', 'K', 'A', 'Z',
+ 'L', 'E', 'A', 'D', 'E', 'R',
+ 'L', 'E', 'G', 'I', 'O', 'N',
+ 'L', 'E', 'I', 'M', 'M', 'A',
+ 'L', 'E', 'N', 'G', 'T', 'H',
+ 'L', 'E', 'P', 'C', 'H', 'A',
+ 'L', 'E', 'S', 'S', 'E', 'R',
+ 'L', 'E', 'T', 'T', 'E', 'R',
+ 'L', 'I', 'L', 'I', 'T', 'H',
+ 'L', 'I', 'M', 'M', 'U', '2',
+ 'L', 'I', 'M', 'M', 'U', '4',
+ 'L', 'I', 'N', 'E', '-', '1',
+ 'L', 'I', 'N', 'E', '-', '3',
+ 'L', 'I', 'N', 'E', '-', '7',
+ 'L', 'I', 'N', 'E', '-', '9',
+ 'L', 'I', 'N', 'E', 'A', 'R',
+ 'L', 'I', 'Q', 'U', 'I', 'D',
+ 'L', 'I', 'T', 'T', 'L', 'E',
+ 'L', 'U', 'N', 'A', 'T', 'E',
+ 'L', 'Y', 'C', 'I', 'A', 'N',
+ 'L', 'Y', 'D', 'I', 'A', 'N',
+ 'M', 'A', 'C', 'R', 'O', 'N',
+ 'M', 'A', 'D', 'D', 'A', 'H',
+ 'M', 'A', 'I', 'D', 'E', 'N',
+ 'M', 'A', 'N', 'C', 'H', 'U',
+ 'M', 'A', 'N', 'N', 'A', 'Z',
+ 'M', 'A', 'R', 'K', '-', '1',
+ 'M', 'A', 'R', 'K', '-', '2',
+ 'M', 'A', 'R', 'K', '-', '3',
+ 'M', 'A', 'R', 'K', '-', '4',
+ 'M', 'A', 'R', 'K', 'E', 'R',
+ 'M', 'A', 'R', 'U', 'K', 'U',
+ 'M', 'A', 'S', 'O', 'R', 'A',
+ 'M', 'A', 'T', 'R', 'I', 'X',
+ 'M', 'A', 'X', 'I', 'M', 'A',
+ 'M', 'E', 'D', 'I', 'A', 'L',
+ 'M', 'E', 'D', 'I', 'U', 'M',
+ 'M', 'E', 'G', 'A', 'L', 'I',
+ 'M', 'E', 'M', 'B', 'E', 'R',
+ 'M', 'E', 'R', 'K', 'H', 'A',
+ 'M', 'E', 'T', 'R', 'I', 'A',
+ 'M', 'I', 'D', 'D', 'L', 'E',
+ 'M', 'I', 'K', 'R', 'O', 'N',
+ 'M', 'I', 'L', 'L', 'E', 'T',
+ 'M', 'I', 'N', 'I', 'M', 'A',
+ 'M', 'O', 'D', 'E', 'L', 'S',
+ 'M', 'O', 'D', 'U', 'L', 'O',
+ 'M', 'O', 'R', 'T', 'A', 'R',
+ 'M', 'O', 'T', 'H', 'E', 'R',
+ 'M', 'U', 'C', 'A', 'A', 'D',
+ 'M', 'U', 'N', 'S', 'U', 'B',
+ 'M', 'U', 'Q', 'D', 'A', 'M',
+ 'M', 'U', 'R', 'G', 'U', '2',
+ 'N', '-', 'C', 'R', 'E', 'E',
+ 'N', 'A', 'R', 'R', 'O', 'W',
+ 'N', 'A', 'U', 'D', 'I', 'Z',
+ 'N', 'A', 'U', 'T', 'H', 'S',
+ 'N', 'A', 'X', 'I', 'A', 'N',
+ 'N', 'E', 'N', 'A', 'N', 'O',
+ 'N', 'E', 'S', 'T', 'E', 'D',
+ 'N', 'E', 'U', 'T', 'E', 'R',
+ 'N', 'I', 'N', 'D', 'A', '2',
+ 'N', 'I', 'N', 'E', 'T', 'Y',
+ 'N', 'I', 'R', 'U', 'G', 'U',
+ 'N', 'O', 'K', 'H', 'U', 'K',
+ 'N', 'O', 'R', 'M', 'A', 'L',
+ 'N', 'U', 'B', 'I', 'A', 'N',
+ 'N', 'U', 'M', 'B', 'E', 'R',
+ 'N', 'U', 'M', 'E', 'R', 'O',
+ 'O', 'B', 'E', 'L', 'O', 'S',
+ 'O', 'B', 'E', 'L', 'U', 'S',
+ 'O', 'B', 'J', 'E', 'C', 'T',
+ 'O', 'G', 'O', 'N', 'E', 'K',
+ 'O', 'L', 'I', 'G', 'O', 'N',
+ 'O', 'M', 'A', 'L', 'O', 'N',
+ 'O', 'P', 'E', 'N', '-', 'P',
+ 'O', 'P', 'P', 'O', 'S', 'E',
+ 'O', 'P', 'T', 'I', 'O', 'N',
+ 'O', 'R', 'C', 'H', 'I', 'D',
+ 'O', 'R', 'I', 'G', 'I', 'N',
+ 'O', 'R', 'N', 'A', 'T', 'E',
+ 'O', 'T', 'T', 'A', 'V', 'A',
+ 'O', 'U', 'N', 'K', 'I', 'A',
+ 'O', 'X', 'E', 'I', 'A', 'I',
+ 'O', 'Y', 'A', 'N', 'N', 'A',
+ 'P', 'A', 'I', 'R', 'E', 'D',
+ 'P', 'A', 'L', 'L', 'A', 'S',
+ 'P', 'A', 'L', 'U', 'T', 'A',
+ 'P', 'A', 'M', 'A', 'D', 'A',
+ 'P', 'A', 'S', 'H', 'T', 'A',
+ 'P', 'E', 'N', 'C', 'I', 'L',
+ 'P', 'E', 'N', 'I', 'H', 'I',
+ 'P', 'E', 'O', 'R', 'T', 'H',
+ 'P', 'E', 'R', 'S', 'O', 'N',
+ 'P', 'E', 'R', 'T', 'H', 'O',
+ 'P', 'E', 'S', 'E', 'T', 'A',
+ 'P', 'H', 'N', 'A', 'E', 'K',
+ 'P', 'H', 'R', 'A', 'S', 'E',
+ 'P', 'I', 'A', 'S', 'M', 'A',
+ 'P', 'I', 'K', 'U', 'R', 'U',
+ 'P', 'I', 'P', 'I', 'N', 'G',
+ 'P', 'I', 'S', 'C', 'E', 'S',
+ 'P', 'L', 'A', 'N', 'C', 'K',
+ 'P', 'L', 'O', 'P', 'H', 'U',
+ 'P', 'L', 'U', 'M', 'E', 'D',
+ 'P', 'O', 'E', 'T', 'I', 'C',
+ 'P', 'O', 'E', 'T', 'R', 'Y',
+ 'P', 'O', 'I', 'N', 'T', 'O',
+ 'P', 'O', 'K', 'O', 'J', 'I',
+ 'P', 'O', 'S', 'T', 'A', 'L',
+ 'P', 'O', 'W', 'E', 'R', 'S',
+ 'P', 'R', 'O', 'T', 'O', 'S',
+ 'P', 'S', 'I', 'L', 'O', 'N',
+ 'P', 'T', 'H', 'A', 'H', 'A',
+ 'P', 'U', 'R', 'I', 'T', 'Y',
+ 'Q', 'A', 'M', 'A', 'T', 'S',
+ 'Q', 'A', 'R', 'N', 'E', 'Y',
+ 'Q', 'E', 'T', 'A', 'N', 'A',
+ 'Q', 'U', 'B', 'U', 'T', 'S',
+ 'R', '-', 'C', 'R', 'E', 'E',
+ 'R', 'A', 'I', 'S', 'E', 'D',
+ 'R', 'A', 'M', 'B', 'A', 'T',
+ 'R', 'A', 'S', 'O', 'U', 'L',
+ 'R', 'E', 'C', 'O', 'R', 'D',
+ 'R', 'E', 'J', 'A', 'N', 'G',
+ 'R', 'E', 'P', 'E', 'A', 'T',
+ 'R', 'E', 'T', 'U', 'R', 'N',
+ 'R', 'H', 'O', 'T', 'I', 'C',
+ 'R', 'I', 'K', 'R', 'I', 'K',
+ 'R', 'I', 'S', 'I', 'N', 'G',
+ 'R', 'I', 'T', 'U', 'A', 'L',
+ 'R', 'N', 'Y', 'I', 'N', 'G',
+ 'R', 'U', 'N', 'O', 'U', 'T',
+ 'S', 'A', 'A', 'D', 'H', 'U',
+ 'S', 'A', 'J', 'D', 'A', 'H',
+ 'S', 'A', 'M', 'E', 'K', 'H',
+ 'S', 'A', 'M', 'Y', 'O', 'K',
+ 'S', 'A', 'N', 'G', 'A', '2',
+ 'S', 'A', 'N', 'N', 'Y', 'A',
+ 'S', 'A', 'T', 'U', 'R', 'N',
+ 'S', 'A', 'Y', 'I', 'S', 'I',
+ 'S', 'C', 'A', 'L', 'E', 'S',
+ 'S', 'C', 'H', 'E', 'M', 'A',
+ 'S', 'C', 'R', 'E', 'E', 'N',
+ 'S', 'C', 'R', 'I', 'P', 'T',
+ 'S', 'E', 'C', 'O', 'N', 'D',
+ 'S', 'E', 'C', 'R', 'E', 'T',
+ 'S', 'E', 'C', 'T', 'O', 'R',
+ 'S', 'E', 'I', 'S', 'M', 'A',
+ 'S', 'E', 'R', 'I', 'F', 'S',
+ 'S', 'E', 'S', 'A', 'M', 'E',
+ 'S', 'H', 'A', 'D', 'D', 'A',
+ 'S', 'H', 'A', 'K', 'T', 'I',
+ 'S', 'H', 'A', 'P', 'E', 'S',
+ 'S', 'H', 'E', 'E', 'N', 'U',
+ 'S', 'H', 'E', 'Q', 'E', 'L',
+ 'S', 'H', 'E', 'S', 'H', '2',
+ 'S', 'H', 'I', 'E', 'L', 'D',
+ 'S', 'H', 'I', 'N', 'I', 'G',
+ 'S', 'H', 'O', 'R', 'T', 'S',
+ 'S', 'H', 'U', 'B', 'U', 'R',
+ 'S', 'I', 'C', 'K', 'L', 'E',
+ 'S', 'I', 'N', 'D', 'H', 'I',
+ 'S', 'I', 'N', 'G', 'L', 'E',
+ 'S', 'I', 'X', 'T', 'H', 'S',
+ 'S', 'K', 'E', 'W', 'E', 'D',
+ 'S', 'L', 'O', 'W', 'L', 'Y',
+ 'S', 'O', 'U', 'R', 'C', 'E',
+ 'S', 'O', 'W', 'I', 'L', 'O',
+ 'S', 'P', 'A', 'T', 'H', 'I',
+ 'S', 'P', 'E', 'E', 'C', 'H',
+ 'S', 'P', 'I', 'R', 'A', 'L',
+ 'S', 'P', 'I', 'R', 'I', 'T',
+ 'S', 'P', 'O', 'K', 'E', 'D',
+ 'S', 'P', 'R', 'I', 'N', 'G',
+ 'S', 'P', 'R', 'O', 'U', 'T',
+ 'S', 'P', 'U', 'N', 'G', 'S',
+ 'S', 'Q', 'U', 'A', 'R', 'E',
+ 'S', 'Q', 'U', 'I', 'S', 'H',
+ 'S', 'T', 'I', 'G', 'M', 'A',
+ 'S', 'T', 'I', 'M', 'M', 'E',
+ 'S', 'T', 'R', 'A', 'I', 'F',
+ 'S', 'T', 'R', 'E', 'S', 'S',
+ 'S', 'T', 'R', 'I', 'D', 'E',
+ 'S', 'T', 'R', 'O', 'K', 'E',
+ 'S', 'U', 'B', 'I', 'T', 'O',
+ 'S', 'U', 'B', 'S', 'E', 'T',
+ 'S', 'U', 'M', 'A', 'S', 'H',
+ 'S', 'U', 'M', 'M', 'E', 'R',
+ 'S', 'U', 'R', 'A', 'N', 'G',
+ 'S', 'W', 'O', 'R', 'D', 'S',
+ 'S', 'Y', 'L', 'O', 'T', 'I',
+ 'S', 'Y', 'M', 'B', 'O', 'L',
+ 'S', 'Y', 'N', 'A', 'F', 'I',
+ 'S', 'Y', 'O', 'U', 'W', 'A',
+ 'S', 'Y', 'R', 'I', 'A', 'C',
+ 'T', 'A', '-', 'R', 'O', 'L',
+ 'T', 'A', 'I', 'L', 'E', 'D',
+ 'T', 'A', 'L', 'E', 'N', 'T',
+ 'T', 'A', 'L', 'I', 'N', 'G',
+ 'T', 'A', 'M', 'I', 'N', 'G',
+ 'T', 'A', 'N', 'N', 'E', 'D',
+ 'T', 'A', 'U', 'R', 'U', 'S',
+ 'T', 'E', 'D', 'U', 'N', 'G',
+ 'T', 'E', 'L', 'E', 'I', 'A',
+ 'T', 'E', 'L', 'O', 'U', 'S',
+ 'T', 'E', 'L', 'U', 'G', 'U',
+ 'T', 'E', 'M', 'P', 'U', 'S',
+ 'T', 'E', 'N', 'U', 'T', 'O',
+ 'T', 'H', 'A', 'A', 'L', 'U',
+ 'T', 'H', 'A', 'A', 'N', 'A',
+ 'T', 'H', 'A', 'H', 'A', 'N',
+ 'T', 'H', 'A', 'N', 'N', 'A',
+ 'T', 'H', 'E', 'T', 'H', 'E',
+ 'T', 'H', 'I', 'R', 'D', 'S',
+ 'T', 'H', 'I', 'R', 'T', 'Y',
+ 'T', 'H', 'I', 'U', 'T', 'H',
+ 'T', 'H', 'R', 'E', 'A', 'D',
+ 'T', 'H', 'Y', 'O', 'O', 'M',
+ 'T', 'I', 'K', 'E', 'U', 'T',
+ 'T', 'I', 'P', 'E', 'H', 'A',
+ 'T', 'O', 'N', 'E', '-', '1',
+ 'T', 'O', 'N', 'E', '-', '2',
+ 'T', 'O', 'N', 'E', '-', '3',
+ 'T', 'O', 'N', 'E', '-', '4',
+ 'T', 'O', 'N', 'E', '-', '5',
+ 'T', 'O', 'N', 'E', '-', '6',
+ 'T', 'O', 'N', 'G', 'U', 'E',
+ 'T', 'O', 'P', 'B', 'A', 'R',
+ 'T', 'R', 'I', 'P', 'L', 'E',
+ 'T', 'R', 'I', 'P', 'L', 'I',
+ 'T', 'R', 'I', 'P', 'O', 'D',
+ 'T', 'R', 'I', 'T', 'O', 'S',
+ 'T', 'S', 'H', 'O', 'O', 'K',
+ 'T', 'S', 'H', 'U', 'G', 'S',
+ 'T', 'T', 'E', 'H', 'E', 'H',
+ 'T', 'U', 'A', 'R', 'E', 'G',
+ 'T', 'U', 'G', 'R', 'I', 'K',
+ 'T', 'U', 'R', 'B', 'A', 'N',
+ 'T', 'U', 'R', 'N', 'E', 'D',
+ 'T', 'U', 'R', 'T', 'L', 'E',
+ 'T', 'V', 'R', 'I', 'D', 'O',
+ 'T', 'W', 'E', 'L', 'V', 'E',
+ 'T', 'W', 'E', 'N', 'T', 'Y',
+ 'T', 'Y', 'P', 'E', '-', '1',
+ 'T', 'Y', 'P', 'E', '-', '2',
+ 'T', 'Y', 'P', 'E', '-', '3',
+ 'T', 'Y', 'P', 'E', '-', '4',
+ 'T', 'Y', 'P', 'E', '-', '5',
+ 'T', 'Y', 'P', 'E', '-', '6',
+ 'T', 'Y', 'P', 'E', '-', '7',
+ 'U', 'D', 'A', 'T', 'T', 'A',
+ 'U', 'I', 'G', 'H', 'U', 'R',
+ 'U', 'P', 'T', 'U', 'R', 'N',
+ 'U', 'P', 'W', 'A', 'R', 'D',
+ 'U', 'R', 'A', 'N', 'U', 'S',
+ 'U', 'S', 'H', 'U', 'M', 'X',
+ 'U', 'Y', 'A', 'N', 'N', 'A',
+ 'V', 'A', 'L', 'L', 'E', 'Y',
+ 'V', 'A', 'R', 'E', 'I', 'A',
+ 'V', 'A', 'R', 'I', 'K', 'A',
+ 'V', 'E', 'C', 'T', 'O', 'R',
+ 'V', 'E', 'S', 'S', 'E', 'L',
+ 'V', 'I', 'R', 'A', 'M', 'A',
+ 'V', 'I', 'R', 'I', 'A', 'M',
+ 'V', 'O', 'I', 'C', 'E', 'D',
+ 'V', 'O', 'L', 'U', 'M', 'E',
+ 'V', 'R', 'A', 'C', 'H', 'Y',
+ 'V', 'U', 'L', 'G', 'A', 'R',
+ 'W', 'E', 'A', 'P', 'O', 'N',
+ 'W', 'E', 'I', 'G', 'H', 'T',
+ 'W', 'I', 'G', 'G', 'L', 'Y',
+ 'W', 'I', 'N', 'T', 'E', 'R',
+ 'W', 'O', 'L', 'O', 'S', 'O',
+ 'W', 'R', 'E', 'A', 'T', 'H',
+ 'X', 'E', 'S', 'T', 'E', 'S',
+ 'Y', '-', 'C', 'R', 'E', 'E',
+ 'Y', 'A', 'K', 'A', 'S', 'H',
+ 'Y', 'E', 'L', 'L', 'O', 'W',
+ 'Y', 'F', 'E', 'S', 'I', 'S',
+ 'Y', 'O', '-', 'Y', 'A', 'E',
+ 'Y', 'O', '-', 'Y', 'E', 'O',
+ 'Y', 'P', 'S', 'I', 'L', 'I',
+ 'Y', 'U', '-', 'Y', 'E', 'O',
+ 'Z', 'E', 'M', 'L', 'J', 'A',
+ 'Z', 'E', 'M', 'L', 'Y', 'A',
+ 'Z', 'I', 'G', 'Z', 'A', 'G',
+ 'Z', 'Q', 'A', 'P', 'H', 'A',
+ 'A', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'A', 'B', 'A', 'F', 'I', 'L', 'I',
+ 'A', 'B', 'Y', 'S', 'M', 'A', 'L',
+ 'A', 'C', 'A', 'D', 'E', 'M', 'Y',
+ 'A', 'C', 'C', 'O', 'U', 'N', 'T',
+ 'A', 'D', 'V', 'A', 'N', 'C', 'E',
+ 'A', 'E', 'Y', 'A', 'N', 'N', 'A',
+ 'A', 'F', 'G', 'H', 'A', 'N', 'I',
+ 'A', 'F', 'R', 'I', 'C', 'A', 'N',
+ 'A', 'H', 'A', 'G', 'G', 'A', 'R',
+ 'A', 'I', 'V', 'I', 'L', 'I', 'K',
+ 'A', 'I', 'Y', 'A', 'N', 'N', 'A',
+ 'A', 'L', 'E', 'M', 'B', 'I', 'C',
+ 'A', 'L', 'I', 'G', 'N', 'E', 'D',
+ 'A', 'L', 'L', 'A', 'H', 'O', 'U',
+ 'A', 'N', 'G', 'U', 'L', 'A', 'R',
+ 'A', 'N', 'N', 'U', 'I', 'T', 'Y',
+ 'A', 'P', 'O', 'T', 'H', 'E', 'S',
+ 'A', 'R', 'A', 'E', 'A', '-', 'I',
+ 'A', 'R', 'A', 'E', 'A', '-', 'U',
+ 'A', 'R', 'C', 'H', 'A', 'I', 'C',
+ 'A', 'R', 'K', 'T', 'I', 'K', 'O',
+ 'A', 'U', 'S', 'T', 'R', 'A', 'L',
+ 'A', 'U', 'Y', 'A', 'N', 'N', 'A',
+ 'A', 'V', 'E', 'R', 'A', 'G', 'E',
+ 'B', 'A', 'A', 'R', 'E', 'R', 'U',
+ 'B', 'A', 'I', 'R', 'K', 'A', 'N',
+ 'B', 'A', 'M', 'B', 'O', 'O', 'S',
+ 'B', 'A', 'R', 'L', 'I', 'N', 'E',
+ 'B', 'A', 'R', 'R', 'E', 'K', 'H',
+ 'B', 'A', 'R', 'R', 'I', 'E', 'R',
+ 'B', 'A', 'S', 'H', 'K', 'I', 'R',
+ 'B', 'A', 'T', 'H', 'T', 'U', 'B',
+ 'B', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'B', 'E', 'C', 'A', 'U', 'S', 'E',
+ 'B', 'E', 'E', 'H', 'I', 'V', 'E',
+ 'B', 'E', 'N', 'G', 'A', 'L', 'I',
+ 'B', 'E', 'N', 'Z', 'E', 'N', 'E',
+ 'B', 'E', 'T', 'W', 'E', 'E', 'N',
+ 'B', 'I', 'N', 'D', 'I', 'N', 'G',
+ 'B', 'J', 'A', 'R', 'K', 'A', 'N',
+ 'B', 'L', 'E', 'N', 'D', 'E', 'D',
+ 'B', 'R', 'A', 'C', 'K', 'E', 'T',
+ 'B', 'R', 'A', 'I', 'L', 'L', 'E',
+ 'B', 'R', 'A', 'K', 'C', 'E', 'T',
+ 'B', 'R', 'I', 'S', 'T', 'L', 'E',
+ 'B', 'U', 'U', 'M', 'I', 'S', 'H',
+ 'C', 'A', 'E', 'S', 'U', 'R', 'A',
+ 'C', 'A', 'P', 'I', 'T', 'A', 'L',
+ 'C', 'A', 'P', 'T', 'I', 'V', 'E',
+ 'C', 'A', 'R', 'R', 'I', 'E', 'R',
+ 'C', 'A', 'U', 'T', 'I', 'O', 'N',
+ 'C', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'C', 'E', 'D', 'I', 'L', 'L', 'A',
+ 'C', 'E', 'I', 'L', 'I', 'N', 'G',
+ 'C', 'E', 'L', 'S', 'I', 'U', 'S',
+ 'C', 'E', 'N', 'T', 'R', 'E', 'D',
+ 'C', 'H', 'A', 'M', 'I', 'L', 'I',
+ 'C', 'H', 'A', 'R', 'I', 'O', 'T',
+ 'C', 'H', 'E', 'V', 'R', 'O', 'N',
+ 'C', 'H', 'I', 'E', 'U', 'C', 'H',
+ 'C', 'H', 'I', 'N', 'E', 'S', 'E',
+ 'C', 'H', 'R', 'O', 'N', 'O', 'N',
+ 'C', 'H', 'R', 'O', 'N', 'O', 'U',
+ 'C', 'I', 'R', 'C', 'L', 'E', 'D',
+ 'C', 'I', 'R', 'C', 'L', 'E', 'S',
+ 'C', 'L', 'O', 'S', 'I', 'N', 'G',
+ 'C', 'L', 'O', 'S', 'U', 'R', 'E',
+ 'C', 'L', 'O', 'T', 'H', 'E', 'S',
+ 'C', 'L', 'U', 'S', 'T', 'E', 'R',
+ 'C', 'O', 'M', 'P', 'A', 'R', 'E',
+ 'C', 'O', 'N', 'I', 'C', 'A', 'L',
+ 'C', 'O', 'N', 'T', 'A', 'C', 'T',
+ 'C', 'O', 'N', 'T', 'A', 'I', 'N',
+ 'C', 'O', 'N', 'T', 'O', 'U', 'R',
+ 'C', 'O', 'N', 'T', 'R', 'O', 'L',
+ 'C', 'O', 'R', 'N', 'E', 'R', 'S',
+ 'C', 'O', 'R', 'O', 'N', 'I', 'S',
+ 'C', 'O', 'R', 'R', 'E', 'C', 'T',
+ 'C', 'O', 'U', 'N', 'C', 'I', 'L',
+ 'C', 'R', 'O', 'S', 'S', 'E', 'D',
+ 'C', 'U', 'R', 'R', 'E', 'N', 'T',
+ 'C', 'U', 'R', 'V', 'I', 'N', 'G',
+ 'C', 'W', 'E', 'O', 'R', 'T', 'H',
+ 'C', 'Y', 'P', 'E', 'R', 'U', 'S',
+ 'C', 'Y', 'P', 'R', 'I', 'O', 'T',
+ 'D', 'A', 'G', 'A', 'L', 'G', 'A',
+ 'D', 'A', 'N', 'T', 'A', 'J', 'A',
+ 'D', 'A', 'P', '-', 'B', 'E', 'I',
+ 'D', 'A', 'P', '-', 'P', 'I', 'I',
+ 'D', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'D', 'E', 'C', 'A', 'Y', 'E', 'D',
+ 'D', 'E', 'C', 'I', 'M', 'A', 'L',
+ 'D', 'E', 'L', 'P', 'H', 'I', 'C',
+ 'D', 'E', 'S', 'E', 'R', 'E', 'T',
+ 'D', 'H', 'A', 'L', 'A', 'T', 'H',
+ 'D', 'I', 'A', 'M', 'O', 'N', 'D',
+ 'D', 'I', 'A', 'R', 'G', 'O', 'N',
+ 'D', 'I', 'G', 'A', 'M', 'M', 'A',
+ 'D', 'I', 'G', 'R', 'A', 'P', 'H',
+ 'D', 'I', 'M', 'I', 'D', 'I', 'A',
+ 'D', 'I', 'M', 'M', 'I', 'N', 'G',
+ 'D', 'I', 'N', 'G', 'B', 'A', 'T',
+ 'D', 'I', 'P', 'L', 'O', 'U', 'N',
+ 'D', 'I', 'S', 'I', 'M', 'O', 'U',
+ 'D', 'I', 'V', 'I', 'D', 'E', 'D',
+ 'D', 'I', 'V', 'I', 'D', 'E', 'R',
+ 'D', 'I', 'V', 'I', 'D', 'E', 'S',
+ 'D', 'I', 'V', 'O', 'R', 'C', 'E',
+ 'D', 'O', 'T', 'L', 'E', 'S', 'S',
+ 'D', 'O', 'T', 'S', '-', '1', '2',
+ 'D', 'O', 'T', 'S', '-', '1', '3',
+ 'D', 'O', 'T', 'S', '-', '1', '4',
+ 'D', 'O', 'T', 'S', '-', '1', '5',
+ 'D', 'O', 'T', 'S', '-', '1', '6',
+ 'D', 'O', 'T', 'S', '-', '1', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '3',
+ 'D', 'O', 'T', 'S', '-', '2', '4',
+ 'D', 'O', 'T', 'S', '-', '2', '5',
+ 'D', 'O', 'T', 'S', '-', '2', '6',
+ 'D', 'O', 'T', 'S', '-', '2', '7',
+ 'D', 'O', 'T', 'S', '-', '2', '8',
+ 'D', 'O', 'T', 'S', '-', '3', '4',
+ 'D', 'O', 'T', 'S', '-', '3', '5',
+ 'D', 'O', 'T', 'S', '-', '3', '6',
+ 'D', 'O', 'T', 'S', '-', '3', '7',
+ 'D', 'O', 'T', 'S', '-', '3', '8',
+ 'D', 'O', 'T', 'S', '-', '4', '5',
+ 'D', 'O', 'T', 'S', '-', '4', '6',
+ 'D', 'O', 'T', 'S', '-', '4', '7',
+ 'D', 'O', 'T', 'S', '-', '4', '8',
+ 'D', 'O', 'T', 'S', '-', '5', '6',
+ 'D', 'O', 'T', 'S', '-', '5', '7',
+ 'D', 'O', 'T', 'S', '-', '5', '8',
+ 'D', 'O', 'T', 'S', '-', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '7', '8',
+ 'D', 'O', 'U', 'B', 'L', 'E', 'D',
+ 'D', 'R', 'A', 'C', 'H', 'M', 'A',
+ 'E', 'A', 'B', 'H', 'A', 'D', 'H',
+ 'E', 'A', 'D', 'H', 'A', 'D', 'H',
+ 'E', 'A', 'R', 'T', 'H', 'L', 'Y',
+ 'E', 'A', 'S', 'T', 'E', 'R', 'N',
+ 'E', 'B', 'E', 'F', 'I', 'L', 'I',
+ 'E', 'E', 'Y', 'A', 'N', 'N', 'A',
+ 'E', 'I', 'G', 'H', 'T', 'H', 'S',
+ 'E', 'L', 'A', 'F', 'R', 'O', 'N',
+ 'E', 'L', 'E', 'M', 'E', 'N', 'T',
+ 'E', 'L', 'L', 'I', 'P', 'S', 'E',
+ 'E', 'N', 'A', 'R', 'X', 'I', 'S',
+ 'E', 'N', 'Q', 'U', 'I', 'R', 'Y',
+ 'E', 'P', 'S', 'I', 'L', 'O', 'N',
+ 'E', 'T', 'N', 'A', 'H', 'T', 'A',
+ 'E', 'V', 'E', 'N', 'I', 'N', 'G',
+ 'F', 'A', 'I', 'L', 'U', 'R', 'E',
+ 'F', 'A', 'L', 'L', 'I', 'N', 'G',
+ 'F', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'F', 'E', 'A', 'T', 'H', 'E', 'R',
+ 'F', 'E', 'R', 'M', 'A', 'T', 'A',
+ 'F', 'I', 'F', 'T', 'E', 'E', 'N',
+ 'F', 'I', 'S', 'H', 'E', 'Y', 'E',
+ 'F', 'O', 'N', 'G', 'M', 'A', 'N',
+ 'F', 'O', 'R', 'K', 'I', 'N', 'G',
+ 'F', 'R', 'A', 'K', 'T', 'U', 'R',
+ 'F', 'U', 'N', 'E', 'R', 'A', 'L',
+ 'G', 'A', 'A', 'H', 'L', 'A', 'A',
+ 'G', 'A', 'R', 'M', 'E', 'N', 'T',
+ 'G', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'G', 'E', 'N', 'E', 'R', 'I', 'C',
+ 'G', 'E', 'S', 'H', 'T', 'I', 'N',
+ 'G', 'I', 'R', 'U', 'D', 'A', 'A',
+ 'G', 'L', 'A', 'G', 'O', 'L', 'I',
+ 'G', 'L', 'O', 'T', 'T', 'A', 'L',
+ 'G', 'R', 'E', 'A', 'T', 'E', 'R',
+ 'G', 'U', 'A', 'R', 'A', 'N', 'I',
+ 'H', 'A', 'F', 'U', 'K', 'H', 'A',
+ 'H', 'A', 'L', 'A', 'N', 'T', 'A',
+ 'H', 'A', 'L', 'B', 'E', 'R', 'D',
+ 'H', 'A', 'N', 'U', 'N', 'O', 'O',
+ 'H', 'A', 'R', 'P', 'O', 'O', 'N',
+ 'H', 'A', 'S', 'A', 'N', 'T', 'A',
+ 'H', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'H', 'E', '-', 'G', 'O', 'A', 'T',
+ 'H', 'E', 'A', 'D', 'I', 'N', 'G',
+ 'H', 'E', 'R', 'A', 'E', 'U', 'M',
+ 'H', 'E', 'X', 'A', 'G', 'O', 'N',
+ 'H', 'O', 'L', 'D', 'I', 'N', 'G',
+ 'H', 'R', 'Y', 'V', 'N', 'I', 'A',
+ 'H', 'U', 'N', 'D', 'R', 'E', 'D',
+ 'I', '-', 'A', 'R', 'A', 'E', 'A',
+ 'I', 'B', 'I', 'F', 'I', 'L', 'I',
+ 'I', 'C', 'H', 'A', 'D', 'I', 'N',
+ 'I', 'I', 'Y', 'A', 'N', 'N', 'A',
+ 'I', 'L', 'I', 'M', 'M', 'U', '3',
+ 'I', 'L', 'I', 'M', 'M', 'U', '4',
+ 'I', 'M', 'I', 'S', 'E', 'O', 'S',
+ 'I', 'N', 'H', 'I', 'B', 'I', 'T',
+ 'I', 'N', 'I', 'T', 'I', 'A', 'L',
+ 'I', 'N', 'S', 'U', 'L', 'A', 'R',
+ 'I', 'N', 'V', 'E', 'R', 'S', 'E',
+ 'I', 'O', 'D', 'H', 'A', 'D', 'H',
+ 'I', 'O', 'T', 'A', 'T', 'E', 'D',
+ 'I', 'Z', 'H', 'I', 'T', 'S', 'A',
+ 'J', 'A', 'N', 'U', 'A', 'R', 'Y',
+ 'J', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'J', 'E', 'G', 'O', 'G', 'A', 'N',
+ 'J', 'U', 'P', 'I', 'T', 'E', 'R',
+ 'K', 'A', 'K', 'A', 'B', 'A', 'T',
+ 'K', 'A', 'N', 'N', 'A', 'D', 'A',
+ 'K', 'A', 'N', 'T', 'A', 'J', 'A',
+ 'K', 'A', 'R', 'A', 'T', 'T', 'O',
+ 'K', 'A', 'R', 'O', 'R', 'I', 'I',
+ 'K', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'K', 'E', 'E', 'P', 'I', 'N', 'G',
+ 'K', 'E', 'M', 'B', 'A', 'N', 'G',
+ 'K', 'E', 'N', 'T', 'I', 'M', 'A',
+ 'K', 'H', 'I', 'E', 'U', 'K', 'H',
+ 'K', 'I', 'N', 'S', 'H', 'I', 'P',
+ 'K', 'I', 'R', 'G', 'H', 'I', 'Z',
+ 'K', 'O', 'M', 'B', 'U', 'V', 'A',
+ 'K', 'O', 'O', 'M', 'U', 'U', 'T',
+ 'K', 'O', 'R', 'A', 'N', 'I', 'C',
+ 'K', 'O', 'R', 'O', 'N', 'I', 'S',
+ 'K', 'R', 'A', 'T', 'I', 'M', 'A',
+ 'K', 'U', 'R', 'O', 'O', 'N', 'E',
+ 'K', 'Y', 'A', 'T', 'H', 'O', 'S',
+ 'K', 'Y', 'L', 'I', 'S', 'M', 'A',
+ 'L', 'A', 'T', 'E', 'R', 'A', 'L',
+ 'L', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'L', 'E', 'A', 'T', 'H', 'E', 'R',
+ 'L', 'E', 'G', 'E', 'T', 'O', 'S',
+ 'L', 'I', 'M', 'I', 'T', 'E', 'D',
+ 'L', 'I', 'N', 'K', 'I', 'N', 'G',
+ 'L', 'J', 'U', 'D', 'I', 'J', 'E',
+ 'L', 'O', 'G', 'I', 'C', 'A', 'L',
+ 'L', 'O', 'Z', 'E', 'N', 'G', 'E',
+ 'L', 'Y', 'G', 'I', 'S', 'M', 'A',
+ 'M', 'A', 'H', 'J', 'O', 'N', 'G',
+ 'M', 'A', 'I', 'K', 'U', 'R', 'O',
+ 'M', 'A', 'I', 'M', 'U', 'A', 'N',
+ 'M', 'A', 'K', 'S', 'U', 'R', 'A',
+ 'M', 'A', 'L', 'A', 'K', 'O', 'N',
+ 'M', 'A', 'L', 'T', 'E', 'S', 'E',
+ 'M', 'A', 'N', 'S', 'Y', 'O', 'N',
+ 'M', 'A', 'R', 'B', 'U', 'T', 'A',
+ 'M', 'A', 'R', 'C', 'A', 'T', 'O',
+ 'M', 'A', 'S', 'S', 'I', 'N', 'G',
+ 'M', 'A', 'T', 'T', 'O', 'C', 'K',
+ 'M', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'M', 'E', 'A', 'S', 'U', 'R', 'E',
+ 'M', 'E', 'E', 'T', 'O', 'R', 'U',
+ 'M', 'E', 'G', 'A', 'T', 'O', 'N',
+ 'M', 'E', 'R', 'C', 'U', 'R', 'Y',
+ 'M', 'I', 'D', 'L', 'I', 'N', 'E',
+ 'M', 'I', 'K', 'U', 'R', 'O', 'N',
+ 'M', 'O', 'D', 'E', 'S', 'T', 'Y',
+ 'M', 'O', 'R', 'N', 'I', 'N', 'G',
+ 'M', 'U', 'S', 'I', 'C', 'A', 'L',
+ 'M', 'Y', 'A', 'N', 'M', 'A', 'R',
+ 'M', 'Y', 'S', 'L', 'I', 'T', 'E',
+ 'N', 'A', 'S', 'K', 'A', 'P', 'I',
+ 'N', 'A', 'T', 'U', 'R', 'A', 'L',
+ 'N', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'N', 'E', 'G', 'A', 'T', 'E', 'D',
+ 'N', 'E', 'I', 'T', 'H', 'E', 'R',
+ 'N', 'E', 'P', 'T', 'U', 'N', 'E',
+ 'N', 'E', 'U', 'T', 'R', 'A', 'L',
+ 'N', 'E', 'W', 'L', 'I', 'N', 'E',
+ 'N', 'G', 'E', 'A', 'D', 'A', 'L',
+ 'N', 'I', 'K', 'A', 'H', 'I', 'T',
+ 'N', 'O', 'M', 'I', 'N', 'A', 'L',
+ 'N', 'O', 'T', 'C', 'H', 'E', 'D',
+ 'N', 'U', 'M', 'E', 'R', 'A', 'L',
+ 'N', 'U', 'M', 'E', 'R', 'I', 'C',
+ 'N', 'U', 'N', 'A', 'V', 'I', 'K',
+ 'N', 'U', 'N', 'A', 'V', 'U', 'T',
+ 'N', 'U', 'T', 'I', 'L', 'L', 'U',
+ 'N', 'Y', 'I', 'N', '-', 'D', 'O',
+ 'O', 'B', 'L', 'I', 'Q', 'U', 'E',
+ 'O', 'B', 'O', 'F', 'I', 'L', 'I',
+ 'O', 'C', 'T', 'O', 'B', 'E', 'R',
+ 'O', 'M', 'I', 'C', 'R', 'O', 'N',
+ 'O', 'N', 'E', 'S', 'E', 'L', 'F',
+ 'O', 'O', 'Y', 'A', 'N', 'N', 'A',
+ 'O', 'P', 'E', 'N', 'I', 'N', 'G',
+ 'O', 'R', 'D', 'I', 'N', 'A', 'L',
+ 'O', 'S', 'M', 'A', 'N', 'Y', 'A',
+ 'O', 'T', 'H', 'A', 'L', 'A', 'N',
+ 'O', 'U', 'T', 'L', 'I', 'N', 'E',
+ 'O', 'V', 'E', 'R', 'B', 'A', 'R',
+ 'O', 'V', 'E', 'R', 'L', 'A', 'Y',
+ 'P', 'A', 'C', 'K', 'I', 'N', 'G',
+ 'P', 'A', 'L', 'A', 'T', 'A', 'L',
+ 'P', 'A', 'L', 'A', 'U', 'N', 'G',
+ 'P', 'A', 'L', 'L', 'A', 'W', 'A',
+ 'P', 'A', 'M', 'A', 'A', 'E', 'H',
+ 'P', 'A', 'M', 'E', 'P', 'E', 'T',
+ 'P', 'A', 'N', 'S', 'I', 'O', 'S',
+ 'P', 'A', 'N', 'Y', 'I', 'K', 'U',
+ 'P', 'A', 'N', 'Y', 'U', 'K', 'U',
+ 'P', 'A', 'P', 'Y', 'R', 'U', 'S',
+ 'P', 'A', 'R', 'E', 'R', 'E', 'N',
+ 'P', 'A', 'R', 'T', 'I', 'A', 'L',
+ 'P', 'A', 'T', 'T', 'E', 'R', 'N',
+ 'P', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'P', 'A', 'Y', 'E', 'R', 'O', 'K',
+ 'P', 'E', 'R', 'C', 'E', 'N', 'T',
+ 'P', 'E', 'R', 'S', 'I', 'A', 'N',
+ 'P', 'E', 'T', 'A', 'S', 'M', 'A',
+ 'P', 'E', 'T', 'A', 'S', 'T', 'I',
+ 'P', 'H', 'I', 'E', 'U', 'P', 'H',
+ 'P', 'H', 'I', 'N', 'T', 'H', 'U',
+ 'P', 'H', 'U', 'T', 'H', 'A', 'O',
+ 'P', 'I', 'L', 'C', 'R', 'O', 'W',
+ 'P', 'L', 'A', 'G', 'I', 'O', 'S',
+ 'P', 'O', 'D', 'A', 'T', 'U', 'S',
+ 'P', 'O', 'I', 'N', 'T', 'E', 'D',
+ 'P', 'O', 'I', 'N', 'T', 'E', 'R',
+ 'P', 'R', 'E', 'C', 'E', 'D', 'E',
+ 'P', 'R', 'E', 'F', 'A', 'C', 'E',
+ 'P', 'R', 'I', 'V', 'A', 'T', 'E',
+ 'P', 'R', 'O', 'D', 'U', 'C', 'T',
+ 'P', 'U', 'S', 'H', 'I', 'N', 'G',
+ 'Q', 'U', 'A', 'R', 'T', 'E', 'R',
+ 'R', 'A', 'D', 'I', 'C', 'A', 'L',
+ 'R', 'A', 'K', 'H', 'A', 'N', 'G',
+ 'R', 'A', 'P', 'I', 'S', 'M', 'A',
+ 'R', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'R', 'E', 'A', 'H', 'M', 'U', 'K',
+ 'R', 'E', 'L', 'E', 'A', 'S', 'E',
+ 'R', 'E', 'R', 'E', 'K', 'A', 'N',
+ 'R', 'E', 'T', 'R', 'E', 'A', 'T',
+ 'R', 'E', 'V', 'E', 'R', 'S', 'E',
+ 'R', 'G', 'Y', 'I', 'N', 'G', 'S',
+ 'R', 'I', 'T', 'T', 'O', 'R', 'U',
+ 'R', 'O', 'S', 'E', 'T', 'T', 'E',
+ 'R', 'O', 'T', 'A', 'T', 'E', 'D',
+ 'R', 'O', 'T', 'U', 'N', 'D', 'A',
+ 'R', 'O', 'U', 'N', 'D', 'E', 'D',
+ 'R', 'U', 'U', 'B', 'U', 'R', 'U',
+ 'S', 'A', 'I', 'K', 'U', 'R', 'U',
+ 'S', 'A', 'L', 'T', 'I', 'R', 'E',
+ 'S', 'A', 'M', 'P', 'H', 'A', 'O',
+ 'S', 'A', 'N', 'Y', 'A', 'K', 'A',
+ 'S', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'S', 'C', 'H', 'O', 'L', 'A', 'R',
+ 'S', 'C', 'R', 'U', 'P', 'L', 'E',
+ 'S', 'E', 'A', 'G', 'U', 'L', 'L',
+ 'S', 'E', 'C', 'T', 'I', 'O', 'N',
+ 'S', 'E', 'G', 'M', 'E', 'N', 'T',
+ 'S', 'E', 'M', 'K', 'A', 'T', 'H',
+ 'S', 'E', 'R', 'V', 'I', 'C', 'E',
+ 'S', 'E', 'V', 'E', 'N', 'T', 'Y',
+ 'S', 'E', 'X', 'T', 'A', 'N', 'S',
+ 'S', 'E', 'X', 'T', 'I', 'L', 'E',
+ 'S', 'E', 'X', 'T', 'U', 'L', 'A',
+ 'S', 'H', 'A', 'P', 'I', 'N', 'G',
+ 'S', 'H', 'A', 'V', 'I', 'A', 'N',
+ 'S', 'H', 'E', 'S', 'H', 'I', 'G',
+ 'S', 'H', 'T', 'A', 'P', 'I', 'C',
+ 'S', 'H', 'U', 'F', 'F', 'L', 'E',
+ 'S', 'I', 'L', 'I', 'Q', 'U', 'A',
+ 'S', 'I', 'M', 'I', 'L', 'A', 'R',
+ 'S', 'I', 'N', 'H', 'A', 'L', 'A',
+ 'S', 'I', 'N', 'K', 'I', 'N', 'G',
+ 'S', 'I', 'R', 'I', 'N', 'G', 'U',
+ 'S', 'I', 'X', 'T', 'E', 'E', 'N',
+ 'S', 'K', 'L', 'I', 'R', 'O', 'N',
+ 'S', 'L', 'A', 'N', 'T', 'E', 'D',
+ 'S', 'L', 'O', 'P', 'I', 'N', 'G',
+ 'S', 'M', 'A', 'L', 'L', 'E', 'R',
+ 'S', 'M', 'I', 'L', 'I', 'N', 'G',
+ 'S', 'N', 'O', 'W', 'M', 'A', 'N',
+ 'S', 'O', 'C', 'I', 'E', 'T', 'Y',
+ 'S', 'O', 'G', 'D', 'I', 'A', 'N',
+ 'S', 'O', 'L', 'I', 'D', 'U', 'S',
+ 'S', 'P', 'A', 'C', 'I', 'N', 'G',
+ 'S', 'P', 'A', 'R', 'K', 'L', 'E',
+ 'S', 'P', 'E', 'C', 'I', 'A', 'L',
+ 'S', 'P', 'I', 'D', 'E', 'R', 'Y',
+ 'S', 'P', 'I', 'R', 'A', 'N', 'T',
+ 'S', 'P', 'R', 'I', 'N', 'G', 'S',
+ 'S', 'Q', 'U', 'A', 'R', 'E', 'D',
+ 'S', 'Q', 'U', 'A', 'R', 'E', 'S',
+ 'S', 'T', 'A', 'T', 'E', 'R', 'S',
+ 'S', 'T', 'A', 'U', 'R', 'O', 'S',
+ 'S', 'T', 'A', 'V', 'R', 'O', 'S',
+ 'S', 'T', 'A', 'V', 'R', 'O', 'U',
+ 'S', 'T', 'R', 'O', 'K', 'E', 'S',
+ 'S', 'U', 'B', 'J', 'E', 'C', 'T',
+ 'S', 'U', 'B', 'U', 'N', 'I', 'T',
+ 'S', 'U', 'C', 'C', 'E', 'E', 'D',
+ 'S', 'U', 'R', 'F', 'A', 'C', 'E',
+ 'S', 'Y', 'N', 'A', 'G', 'M', 'A',
+ 'S', 'Y', 'N', 'E', 'V', 'M', 'A',
+ 'T', 'A', 'A', 'L', 'U', 'J', 'A',
+ 'T', 'A', 'G', 'A', 'L', 'O', 'G',
+ 'T', 'A', 'I', 'S', 'Y', 'O', 'U',
+ 'T', 'A', 'L', 'E', 'N', 'T', 'S',
+ 'T', 'A', 'T', 'W', 'E', 'E', 'L',
+ 'T', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'T', 'C', 'H', 'E', 'H', 'E', 'H',
+ 'T', 'E', 'L', 'I', 'S', 'H', 'A',
+ 'T', 'E', 'S', 'S', 'E', 'R', 'A',
+ 'T', 'H', '-', 'C', 'R', 'E', 'E',
+ 'T', 'H', 'E', 'S', 'E', 'O', 'S',
+ 'T', 'H', 'I', 'E', 'U', 'T', 'H',
+ 'T', 'H', 'R', 'E', 'E', '-', 'D',
+ 'T', 'H', 'R', 'O', 'U', 'G', 'H',
+ 'T', 'H', 'U', 'N', 'D', 'E', 'R',
+ 'T', 'I', 'B', 'E', 'T', 'A', 'N',
+ 'T', 'I', 'N', 'A', 'G', 'M', 'A',
+ 'T', 'R', 'I', 'G', 'R', 'A', 'M',
+ 'T', 'R', 'I', 'I', 'S', 'A', 'P',
+ 'T', 'R', 'I', 'S', 'E', 'M', 'E',
+ 'T', 'T', 'U', 'D', 'D', 'A', 'G',
+ 'U', '-', 'E', 'O', '-', 'E', 'U',
+ 'U', 'B', 'A', 'D', 'A', 'M', 'A',
+ 'U', 'B', 'U', 'F', 'I', 'L', 'I',
+ 'U', 'P', 'R', 'I', 'G', 'H', 'T',
+ 'U', 'P', 'S', 'I', 'L', 'O', 'N',
+ 'U', 'P', 'W', 'A', 'R', 'D', 'S',
+ 'U', 'U', 'Y', 'A', 'N', 'N', 'A',
+ 'V', 'A', 'R', 'E', 'I', 'A', 'I',
+ 'V', 'A', 'R', 'I', 'A', 'N', 'T',
+ 'V', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'V', 'I', 'C', 'T', 'O', 'R', 'Y',
+ 'V', 'I', 'L', 'L', 'A', 'G', 'E',
+ 'V', 'I', 'S', 'A', 'R', 'G', 'A',
+ 'V', 'O', 'C', 'A', 'L', 'I', 'C',
+ 'V', 'O', 'I', 'C', 'I', 'N', 'G',
+ 'V', 'O', 'L', 'T', 'A', 'G', 'E',
+ 'W', 'A', 'I', 'T', 'I', 'N', 'G',
+ 'W', 'A', 'R', 'N', 'I', 'N', 'G',
+ 'W', 'A', 'S', 'T', 'I', 'N', 'G',
+ 'W', 'E', 'S', 'T', 'E', 'R', 'N',
+ 'W', 'H', 'E', 'E', 'L', 'E', 'D',
+ 'W', 'R', 'I', 'T', 'I', 'N', 'G',
+ 'Y', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'Y', 'I', 'D', 'D', 'I', 'S', 'H',
+ 'Y', 'P', 'O', 'R', 'R', 'O', 'I',
+ 'Z', 'H', 'I', 'V', 'E', 'T', 'E',
+ 'A', 'C', 'T', 'I', 'V', 'A', 'T', 'E',
+ 'A', 'C', 'T', 'U', 'A', 'L', 'L', 'Y',
+ 'A', 'E', 'E', 'Y', 'A', 'N', 'N', 'A',
+ 'A', 'I', 'R', 'P', 'L', 'A', 'N', 'E',
+ 'A', 'K', 'H', 'M', 'I', 'M', 'I', 'C',
+ 'A', 'L', 'L', 'I', 'A', 'N', 'C', 'E',
+ 'A', 'L', 'V', 'E', 'O', 'L', 'A', 'R',
+ 'A', 'N', 'G', 'S', 'T', 'R', 'O', 'M',
+ 'A', 'N', 'U', 'D', 'A', 'T', 'T', 'A',
+ 'A', 'N', 'U', 'S', 'V', 'A', 'R', 'A',
+ 'A', 'P', 'O', 'D', 'E', 'R', 'M', 'A',
+ 'A', 'P', 'O', 'D', 'E', 'X', 'I', 'A',
+ 'A', 'P', 'O', 'T', 'H', 'E', 'M', 'A',
+ 'A', 'P', 'P', 'R', 'O', 'A', 'C', 'H',
+ 'A', 'Q', 'U', 'A', 'R', 'I', 'U', 'S',
+ 'A', 'R', 'A', 'E', 'A', '-', 'E', 'O',
+ 'A', 'R', 'C', 'H', 'A', 'I', 'O', 'N',
+ 'A', 'R', 'G', 'O', 'T', 'E', 'R', 'I',
+ 'A', 'R', 'I', 'S', 'T', 'E', 'R', 'A',
+ 'A', 'R', 'M', 'E', 'N', 'I', 'A', 'N',
+ 'A', 'R', 'O', 'U', 'S', 'I', 'N', 'G',
+ 'A', 'S', 'S', 'A', 'L', 'L', 'A', 'M',
+ 'A', 'S', 'S', 'Y', 'R', 'I', 'A', 'N',
+ 'A', 'S', 'T', 'E', 'R', 'I', 'S', 'K',
+ 'A', 'S', 'T', 'E', 'R', 'I', 'S', 'M',
+ 'A', 'T', 'T', 'H', 'A', 'C', 'A', 'N',
+ 'A', 'V', 'A', 'G', 'R', 'A', 'H', 'A',
+ 'B', 'A', 'L', 'I', 'N', 'E', 'S', 'E',
+ 'B', 'E', 'L', 'G', 'T', 'H', 'O', 'R',
+ 'B', 'E', 'R', 'K', 'A', 'N', 'A', 'N',
+ 'B', 'E', 'V', 'E', 'R', 'A', 'G', 'E',
+ 'B', 'I', 'D', 'E', 'N', 'T', 'A', 'L',
+ 'B', 'I', 'L', 'A', 'B', 'I', 'A', 'L',
+ 'B', 'O', 'P', 'O', 'M', 'O', 'F', 'O',
+ 'B', 'O', 'U', 'N', 'D', 'A', 'R', 'Y',
+ 'B', 'U', 'G', 'I', 'N', 'E', 'S', 'E',
+ 'B', 'U', 'L', 'L', 'S', 'E', 'Y', 'E',
+ 'B', 'U', 'S', 'S', 'Y', 'E', 'R', 'U',
+ 'C', 'A', 'D', 'U', 'C', 'E', 'U', 'S',
+ 'C', 'A', 'N', 'A', 'D', 'I', 'A', 'N',
+ 'C', 'A', 'R', 'R', 'I', 'A', 'G', 'E',
+ 'C', 'A', 'U', 'L', 'D', 'R', 'O', 'N',
+ 'C', 'H', 'A', 'M', 'I', 'L', 'O', 'N',
+ 'C', 'H', 'A', 'T', 'T', 'A', 'W', 'A',
+ 'C', 'H', 'E', 'R', 'O', 'K', 'E', 'E',
+ 'C', 'H', 'O', 'R', 'E', 'V', 'M', 'A',
+ 'C', 'H', 'O', 'S', 'E', 'O', 'N', 'G',
+ 'C', 'I', 'R', 'C', 'U', 'L', 'A', 'R',
+ 'C', 'I', 'V', 'I', 'L', 'I', 'A', 'N',
+ 'C', 'L', 'I', 'M', 'A', 'C', 'U', 'S',
+ 'C', 'L', 'I', 'N', 'G', 'I', 'N', 'G',
+ 'C', 'O', 'N', 'F', 'L', 'I', 'C', 'T',
+ 'C', 'O', 'N', 'S', 'T', 'A', 'N', 'T',
+ 'C', 'O', 'N', 'T', 'A', 'I', 'N', 'S',
+ 'C', 'O', 'U', 'N', 'T', 'I', 'N', 'G',
+ 'C', 'R', 'E', 'A', 'T', 'I', 'V', 'E',
+ 'C', 'R', 'E', 'S', 'C', 'E', 'N', 'T',
+ 'C', 'R', 'O', 'S', 'S', 'I', 'N', 'G',
+ 'C', 'R', 'U', 'Z', 'E', 'I', 'R', 'O',
+ 'C', 'U', 'R', 'R', 'E', 'N', 'C', 'Y',
+ 'C', 'U', 'S', 'T', 'O', 'M', 'E', 'R',
+ 'C', 'Y', 'R', 'E', 'N', 'A', 'I', 'C',
+ 'C', 'Y', 'R', 'I', 'L', 'L', 'I', 'C',
+ 'D', 'A', 'M', 'M', 'A', 'T', 'A', 'N',
+ 'D', 'A', 'P', '-', 'B', 'U', 'O', 'N',
+ 'D', 'A', 'P', '-', 'M', 'U', 'O', 'Y',
+ 'D', 'A', 'P', '-', 'P', 'R', 'A', 'M',
+ 'D', 'A', 'V', 'I', 'Y', 'A', 'N', 'I',
+ 'D', 'D', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'D', 'E', 'C', 'E', 'M', 'B', 'E', 'R',
+ 'D', 'E', 'C', 'R', 'E', 'A', 'S', 'E',
+ 'D', 'E', 'N', 'A', 'R', 'I', 'U', 'S',
+ 'D', 'E', 'Y', 'T', 'E', 'R', 'O', 'S',
+ 'D', 'E', 'Y', 'T', 'E', 'R', 'O', 'U',
+ 'D', 'I', 'A', 'G', 'O', 'N', 'A', 'L',
+ 'D', 'I', 'A', 'M', 'E', 'T', 'E', 'R',
+ 'D', 'I', 'A', 'S', 'T', 'O', 'L', 'I',
+ 'D', 'I', 'A', 'T', 'O', 'N', 'O', 'N',
+ 'D', 'I', 'F', 'O', 'N', 'I', 'A', 'S',
+ 'D', 'I', 'G', 'O', 'R', 'G', 'O', 'N',
+ 'D', 'I', 'G', 'R', 'A', 'M', 'M', 'A',
+ 'D', 'I', 'R', 'E', 'C', 'T', 'L', 'Y',
+ 'D', 'I', 'V', 'I', 'S', 'I', 'O', 'N',
+ 'D', 'O', 'D', 'E', 'K', 'A', 'T', 'A',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '4',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '5',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '6',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '4',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '5',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '6',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '4', '5',
+ 'D', 'O', 'T', 'S', '-', '1', '4', '6',
+ 'D', 'O', 'T', 'S', '-', '1', '4', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '4', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '5', '6',
+ 'D', 'O', 'T', 'S', '-', '1', '5', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '5', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '4',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '5',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '6',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '7',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '4', '5',
+ 'D', 'O', 'T', 'S', '-', '2', '4', '6',
+ 'D', 'O', 'T', 'S', '-', '2', '4', '7',
+ 'D', 'O', 'T', 'S', '-', '2', '4', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '5', '6',
+ 'D', 'O', 'T', 'S', '-', '2', '5', '7',
+ 'D', 'O', 'T', 'S', '-', '2', '5', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '2', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '3', '4', '5',
+ 'D', 'O', 'T', 'S', '-', '3', '4', '6',
+ 'D', 'O', 'T', 'S', '-', '3', '4', '7',
+ 'D', 'O', 'T', 'S', '-', '3', '4', '8',
+ 'D', 'O', 'T', 'S', '-', '3', '5', '6',
+ 'D', 'O', 'T', 'S', '-', '3', '5', '7',
+ 'D', 'O', 'T', 'S', '-', '3', '5', '8',
+ 'D', 'O', 'T', 'S', '-', '3', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '3', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '3', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '4', '5', '6',
+ 'D', 'O', 'T', 'S', '-', '4', '5', '7',
+ 'D', 'O', 'T', 'S', '-', '4', '5', '8',
+ 'D', 'O', 'T', 'S', '-', '4', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '4', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '4', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '5', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '5', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '5', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '6', '7', '8',
+ 'D', 'O', 'T', 'T', 'E', 'D', '-', 'L',
+ 'D', 'O', 'T', 'T', 'E', 'D', '-', 'N',
+ 'D', 'O', 'T', 'T', 'E', 'D', '-', 'P',
+ 'D', 'R', 'A', 'C', 'H', 'M', 'A', 'S',
+ 'D', 'R', 'A', 'F', 'T', 'I', 'N', 'G',
+ 'D', 'R', 'A', 'U', 'G', 'H', 'T', 'S',
+ 'D', 'R', 'A', 'W', 'I', 'N', 'G', 'S',
+ 'D', 'U', 'R', 'A', 'T', 'I', 'O', 'N',
+ 'D', 'V', 'I', 'S', 'V', 'A', 'R', 'A',
+ 'E', 'I', 'G', 'H', 'T', 'E', 'E', 'N',
+ 'E', 'L', 'E', 'C', 'T', 'R', 'I', 'C',
+ 'E', 'L', 'L', 'I', 'P', 'S', 'I', 'S',
+ 'E', 'M', 'P', 'H', 'A', 'S', 'I', 'S',
+ 'E', 'M', 'P', 'H', 'A', 'T', 'I', 'C',
+ 'E', 'N', 'T', 'E', 'R', 'I', 'N', 'G',
+ 'E', 'N', 'V', 'E', 'L', 'O', 'P', 'E',
+ 'E', 'P', 'E', 'G', 'E', 'R', 'M', 'A',
+ 'E', 'S', 'U', 'K', 'U', 'U', 'D', 'O',
+ 'E', 'T', 'E', 'R', 'N', 'I', 'T', 'Y',
+ 'E', 'T', 'H', 'I', 'O', 'P', 'I', 'C',
+ 'E', 'X', 'T', 'E', 'N', 'D', 'E', 'D',
+ 'F', 'A', 'T', 'H', 'A', 'T', 'A', 'N',
+ 'F', 'E', 'B', 'R', 'U', 'A', 'R', 'Y',
+ 'F', 'E', 'M', 'I', 'N', 'I', 'N', 'E',
+ 'F', 'E', 'S', 'T', 'I', 'V', 'A', 'L',
+ 'F', 'I', 'G', 'U', 'R', 'E', '-', '1',
+ 'F', 'I', 'G', 'U', 'R', 'E', '-', '2',
+ 'F', 'I', 'G', 'U', 'R', 'E', '-', '3',
+ 'F', 'I', 'N', 'G', 'E', 'R', 'E', 'D',
+ 'F', 'I', 'S', 'H', 'H', 'O', 'O', 'K',
+ 'F', 'L', 'A', 'T', 'N', 'E', 'S', 'S',
+ 'F', 'L', 'O', 'R', 'E', 'T', 'T', 'E',
+ 'F', 'L', 'O', 'U', 'R', 'I', 'S', 'H',
+ 'F', 'O', 'O', 'T', 'N', 'O', 'T', 'E',
+ 'F', 'O', 'U', 'R', 'T', 'E', 'E', 'N',
+ 'F', 'R', 'A', 'C', 'T', 'I', 'O', 'N',
+ 'F', 'R', 'A', 'G', 'M', 'E', 'N', 'T',
+ 'F', 'R', 'A', 'G', 'R', 'A', 'N', 'T',
+ 'F', 'R', 'O', 'W', 'N', 'I', 'N', 'G',
+ 'F', 'U', 'L', 'L', 'N', 'E', 'S', 'S',
+ 'F', 'U', 'N', 'C', 'T', 'I', 'O', 'N',
+ 'G', 'A', 'R', 'S', 'H', 'U', 'N', 'I',
+ 'G', 'A', 'U', 'N', 'T', 'L', 'E', 'T',
+ 'G', 'E', 'N', 'I', 'T', 'I', 'V', 'E',
+ 'G', 'E', 'O', 'R', 'G', 'I', 'A', 'N',
+ 'G', 'R', 'A', 'P', 'H', 'E', 'M', 'E',
+ 'G', 'U', 'J', 'A', 'R', 'A', 'T', 'I',
+ 'G', 'U', 'R', 'M', 'U', 'K', 'H', 'I',
+ 'H', 'A', 'N', '-', 'A', 'K', 'A', 'T',
+ 'H', 'A', 'N', 'G', 'Z', 'H', 'O', 'U',
+ 'H', 'A', 'R', 'D', 'N', 'E', 'S', 'S',
+ 'H', 'A', 'R', 'K', 'L', 'E', 'A', 'N',
+ 'H', 'A', 'R', 'M', 'O', 'N', 'I', 'C',
+ 'H', 'E', 'A', 'V', 'E', 'N', 'L', 'Y',
+ 'H', 'E', 'X', 'A', 'G', 'R', 'A', 'M',
+ 'H', 'I', 'R', 'A', 'G', 'A', 'N', 'A',
+ 'H', 'U', 'A', 'R', 'A', 'D', 'D', 'O',
+ 'I', 'D', 'E', 'O', 'G', 'R', 'A', 'M',
+ 'I', 'L', 'U', 'Y', 'A', 'N', 'N', 'A',
+ 'I', 'M', 'I', 'F', 'O', 'N', 'O', 'N',
+ 'I', 'N', 'C', 'R', 'E', 'A', 'S', 'E',
+ 'I', 'N', 'D', 'I', 'R', 'E', 'C', 'T',
+ 'I', 'N', 'F', 'I', 'N', 'I', 'T', 'Y',
+ 'I', 'N', 'H', 'E', 'R', 'E', 'N', 'T',
+ 'I', 'N', 'T', 'E', 'G', 'R', 'A', 'L',
+ 'I', 'N', 'T', 'E', 'R', 'E', 'S', 'T',
+ 'I', 'N', 'T', 'E', 'R', 'I', 'O', 'R',
+ 'I', 'N', 'V', 'E', 'R', 'T', 'E', 'D',
+ 'I', 'O', 'T', 'I', 'F', 'I', 'E', 'D',
+ 'I', 'R', 'U', 'Y', 'A', 'N', 'N', 'A',
+ 'I', 'S', '-', 'P', 'I', 'L', 'L', 'A',
+ 'I', 'S', 'O', 'L', 'A', 'T', 'E', 'D',
+ 'J', 'A', 'P', 'A', 'N', 'E', 'S', 'E',
+ 'J', 'A', 'V', 'I', 'Y', 'A', 'N', 'I',
+ 'K', 'A', 'S', 'R', 'A', 'T', 'A', 'N',
+ 'K', 'A', 'T', 'A', 'K', 'A', 'N', 'A',
+ 'K', 'A', 'T', 'H', 'I', 'S', 'T', 'I',
+ 'K', 'E', 'Y', 'B', 'O', 'A', 'R', 'D',
+ 'K', 'O', 'N', 'T', 'E', 'V', 'M', 'A',
+ 'K', 'O', 'U', 'F', 'I', 'S', 'M', 'A',
+ 'K', 'R', 'E', 'M', 'A', 'S', 'T', 'I',
+ 'L', '-', 'S', 'H', 'A', 'P', 'E', 'D',
+ 'L', 'A', 'N', 'G', 'U', 'A', 'G', 'E',
+ 'L', 'A', 'T', 'I', 'N', 'A', 'T', 'E',
+ 'L', 'I', 'G', 'A', 'T', 'U', 'R', 'E',
+ 'L', 'O', 'C', 'A', 'T', 'I', 'O', 'N',
+ 'L', 'O', 'C', 'A', 'T', 'I', 'V', 'E',
+ 'L', 'O', 'G', 'O', 'T', 'Y', 'P', 'E',
+ 'L', 'O', 'R', 'R', 'A', 'I', 'N', 'E',
+ 'M', 'A', 'H', 'A', 'P', 'A', 'K', 'H',
+ 'M', 'A', 'I', 'M', 'A', 'L', 'A', 'I',
+ 'M', 'A', 'I', 'Y', 'A', 'M', 'O', 'K',
+ 'M', 'A', 'N', 'A', 'C', 'L', 'E', 'S',
+ 'M', 'A', 'N', 'G', 'A', 'L', 'A', 'M',
+ 'M', 'A', 'R', 'R', 'I', 'A', 'G', 'E',
+ 'M', 'A', 'R', 'R', 'Y', 'I', 'N', 'G',
+ 'M', 'A', 'R', 'T', 'Y', 'R', 'I', 'A',
+ 'M', 'E', 'A', 'S', 'U', 'R', 'E', 'D',
+ 'M', 'E', 'D', 'I', 'C', 'I', 'N', 'E',
+ 'M', 'E', 'T', 'R', 'E', 'T', 'E', 'S',
+ 'M', 'E', 'T', 'R', 'I', 'C', 'A', 'L',
+ 'M', 'I', 'L', 'L', 'I', 'O', 'N', 'S',
+ 'M', 'I', 'N', 'I', 'S', 'T', 'E', 'R',
+ 'M', 'O', 'D', 'I', 'F', 'I', 'E', 'R',
+ 'M', 'O', 'H', 'A', 'M', 'M', 'A', 'D',
+ 'M', 'O', 'N', 'O', 'G', 'R', 'A', 'M',
+ 'M', 'O', 'U', 'N', 'T', 'A', 'I', 'N',
+ 'M', 'U', 'L', 'T', 'I', 'M', 'A', 'P',
+ 'M', 'U', 'L', 'T', 'I', 'P', 'L', 'E',
+ 'M', 'U', 'L', 'T', 'I', 'S', 'E', 'T',
+ 'N', 'A', 'T', 'I', 'O', 'N', 'A', 'L',
+ 'N', 'E', 'G', 'A', 'T', 'I', 'O', 'N',
+ 'N', 'E', 'G', 'A', 'T', 'I', 'V', 'E',
+ 'N', 'I', 'K', 'H', 'A', 'H', 'I', 'T',
+ 'N', 'I', 'N', 'E', 'T', 'E', 'E', 'N',
+ 'N', 'O', '-', 'B', 'R', 'E', 'A', 'K',
+ 'N', 'O', 'T', 'A', 'T', 'I', 'O', 'N',
+ 'N', 'O', 'T', 'E', 'H', 'E', 'A', 'D',
+ 'N', 'O', 'V', 'E', 'M', 'B', 'E', 'R',
+ 'O', 'M', 'I', 'S', 'S', 'I', 'O', 'N',
+ 'O', 'N', 'E', '-', 'L', 'I', 'N', 'E',
+ 'O', 'P', 'E', 'R', 'A', 'T', 'O', 'R',
+ 'O', 'P', 'P', 'O', 'S', 'I', 'N', 'G',
+ 'O', 'R', 'I', 'G', 'I', 'N', 'A', 'L',
+ 'O', 'R', 'N', 'A', 'M', 'E', 'N', 'T',
+ 'O', 'R', 'T', 'H', 'O', 'D', 'O', 'X',
+ 'O', 'U', 'T', 'L', 'I', 'N', 'E', 'D',
+ 'O', 'V', 'E', 'R', 'L', 'A', 'I', 'D',
+ 'O', 'V', 'E', 'R', 'L', 'I', 'N', 'E',
+ 'O', 'V', 'E', 'R', 'R', 'I', 'D', 'E',
+ 'P', 'A', 'A', 'S', 'E', 'N', 'T', 'O',
+ 'P', 'A', 'I', 'R', 'T', 'H', 'R', 'A',
+ 'P', 'A', 'L', 'O', 'C', 'H', 'K', 'A',
+ 'P', 'A', 'M', 'E', 'N', 'E', 'N', 'G',
+ 'P', 'A', 'M', 'U', 'D', 'P', 'O', 'D',
+ 'P', 'A', 'N', 'G', 'H', 'U', 'L', 'U',
+ 'P', 'A', 'N', 'O', 'L', 'O', 'N', 'G',
+ 'P', 'A', 'N', 'Y', 'A', 'K', 'R', 'A',
+ 'P', 'A', 'N', 'Y', 'E', 'C', 'E', 'K',
+ 'P', 'A', 'R', 'A', 'L', 'L', 'E', 'L',
+ 'P', 'A', 'R', 'I', 'C', 'H', 'O', 'N',
+ 'P', 'A', 'V', 'I', 'Y', 'A', 'N', 'I',
+ 'P', 'E', 'D', 'E', 'S', 'T', 'A', 'L',
+ 'P', 'E', 'L', 'A', 'S', 'T', 'O', 'N',
+ 'P', 'E', 'N', 'T', 'A', 'G', 'O', 'N',
+ 'P', 'E', 'R', 'F', 'E', 'C', 'T', 'A',
+ 'P', 'E', 'T', 'A', 'L', 'L', 'E', 'D',
+ 'P', 'H', 'A', 'A', 'R', 'K', 'A', 'A',
+ 'P', 'H', 'A', 'G', 'S', '-', 'P', 'A',
+ 'P', 'H', 'A', 'I', 'S', 'T', 'O', 'S',
+ 'P', 'I', 'N', 'W', 'H', 'E', 'E', 'L',
+ 'P', 'L', 'A', 'S', 'T', 'I', 'C', 'S',
+ 'P', 'L', 'E', 'T', 'H', 'R', 'O', 'N',
+ 'P', 'N', 'E', 'U', 'M', 'A', 'T', 'A',
+ 'P', 'O', 'I', 'N', 'T', 'I', 'N', 'G',
+ 'P', 'O', 'K', 'R', 'Y', 'T', 'I', 'E',
+ 'P', 'O', 'S', 'I', 'T', 'I', 'O', 'N',
+ 'P', 'R', 'A', 'M', '-', 'B', 'E', 'I',
+ 'P', 'R', 'A', 'M', '-', 'P', 'I', 'I',
+ 'P', 'R', 'E', 'C', 'E', 'D', 'E', 'D',
+ 'P', 'R', 'E', 'C', 'E', 'D', 'E', 'S',
+ 'P', 'R', 'E', 'V', 'I', 'O', 'U', 'S',
+ 'P', 'R', 'O', 'F', 'O', 'U', 'N', 'D',
+ 'P', 'R', 'O', 'G', 'R', 'E', 'S', 'S',
+ 'P', 'R', 'O', 'P', 'E', 'R', 'T', 'Y',
+ 'Q', 'A', 'I', 'R', 'T', 'H', 'R', 'A',
+ 'Q', 'U', 'A', 'D', 'R', 'A', 'N', 'T',
+ 'Q', 'U', 'A', 'R', 'T', 'E', 'R', 'S',
+ 'Q', 'U', 'E', 'S', 'T', 'I', 'O', 'N',
+ 'Q', 'U', 'I', 'N', 'C', 'U', 'N', 'X',
+ 'R', 'E', 'C', 'O', 'R', 'D', 'E', 'R',
+ 'R', 'E', 'C', 'Y', 'C', 'L', 'E', 'D',
+ 'R', 'E', 'L', 'A', 'T', 'I', 'O', 'N',
+ 'R', 'E', 'L', 'I', 'G', 'I', 'O', 'N',
+ 'R', 'E', 'N', 'T', 'O', 'G', 'E', 'N',
+ 'R', 'E', 'P', 'E', 'A', 'T', 'E', 'D',
+ 'R', 'E', 'S', 'O', 'U', 'R', 'C', 'E',
+ 'R', 'E', 'S', 'P', 'O', 'N', 'S', 'E',
+ 'R', 'E', 'V', 'E', 'R', 'S', 'E', 'D',
+ 'R', 'U', 'K', 'K', 'A', 'K', 'H', 'A',
+ 'S', '-', 'S', 'H', 'A', 'P', 'E', 'D',
+ 'S', 'A', 'L', 'T', 'I', 'L', 'L', 'O',
+ 'S', 'A', 'N', 'T', 'I', 'I', 'M', 'U',
+ 'S', 'A', 'N', 'Y', 'O', 'O', 'G', 'A',
+ 'S', 'A', 'X', 'I', 'M', 'A', 'T', 'A',
+ 'S', 'C', 'I', 'S', 'S', 'O', 'R', 'S',
+ 'S', 'C', 'O', 'R', 'P', 'I', 'U', 'S',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R',
+ 'S', 'E', 'M', 'I', 'S', 'O', 'F', 'T',
+ 'S', 'E', 'M', 'U', 'N', 'C', 'I', 'A',
+ 'S', 'H', 'A', 'D', 'O', 'W', 'E', 'D',
+ 'S', 'H', 'A', 'M', 'R', 'O', 'C', 'K',
+ 'S', 'H', 'E', '-', 'G', 'O', 'A', 'T',
+ 'S', 'H', 'E', 'S', 'H', 'L', 'A', 'M',
+ 'S', 'I', 'C', 'K', 'N', 'E', 'S', 'S',
+ 'S', 'I', 'D', 'E', 'W', 'A', 'Y', 'S',
+ 'S', 'I', 'M', 'A', 'N', 'S', 'I', 'S',
+ 'S', 'I', 'X', '-', 'L', 'I', 'N', 'E',
+ 'S', 'L', 'A', 'V', 'O', 'N', 'I', 'C',
+ 'S', 'Q', 'U', 'I', 'G', 'G', 'L', 'E',
+ 'S', 'Q', 'U', 'I', 'R', 'R', 'E', 'L',
+ 'S', 'T', 'A', 'C', 'C', 'A', 'T', 'O',
+ 'S', 'T', 'A', 'L', 'L', 'I', 'O', 'N',
+ 'S', 'T', 'A', 'N', 'D', 'A', 'R', 'D',
+ 'S', 'T', 'O', 'P', 'P', 'A', 'G', 'E',
+ 'S', 'T', 'O', 'P', 'P', 'I', 'N', 'G',
+ 'S', 'T', 'R', 'A', 'I', 'G', 'H', 'T',
+ 'S', 'T', 'R', 'A', 'I', 'N', 'E', 'R',
+ 'S', 'T', 'R', 'A', 'T', 'I', 'A', 'N',
+ 'S', 'T', 'R', 'E', 'N', 'G', 'T', 'H',
+ 'S', 'T', 'R', 'I', 'C', 'T', 'L', 'Y',
+ 'S', 'T', 'R', 'O', 'K', 'E', '-', '1',
+ 'S', 'T', 'R', 'O', 'K', 'E', '-', '2',
+ 'S', 'T', 'R', 'O', 'K', 'E', '-', '3',
+ 'S', 'T', 'R', 'O', 'K', 'E', '-', '4',
+ 'S', 'T', 'R', 'O', 'K', 'E', '-', '5',
+ 'S', 'T', 'R', 'O', 'K', 'E', '-', '6',
+ 'S', 'T', 'R', 'O', 'K', 'E', '-', '7',
+ 'S', 'T', 'R', 'O', 'K', 'E', '-', '8',
+ 'S', 'T', 'R', 'O', 'K', 'E', '-', '9',
+ 'S', 'U', 'B', 'G', 'R', 'O', 'U', 'P',
+ 'S', 'U', 'C', 'C', 'E', 'E', 'D', 'S',
+ 'S', 'U', 'I', 'T', 'A', 'B', 'L', 'E',
+ 'S', 'U', 'P', 'E', 'R', 'S', 'E', 'T',
+ 'S', 'U', 'R', 'R', 'O', 'U', 'N', 'D',
+ 'S', 'W', 'A', 'P', 'P', 'I', 'N', 'G',
+ 'S', 'Y', 'L', 'L', 'A', 'B', 'L', 'E',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '1',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '2',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '3',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '4',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '5',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '6',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '7',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '8',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '9',
+ 'S', 'Y', 'M', 'M', 'E', 'T', 'R', 'Y',
+ 'T', 'A', 'G', 'B', 'A', 'N', 'W', 'A',
+ 'T', 'A', 'I', 'L', 'L', 'E', 'S', 'S',
+ 'T', 'A', 'T', 'T', 'O', 'O', 'E', 'D',
+ 'T', 'A', 'V', 'I', 'Y', 'A', 'N', 'I',
+ 'T', 'E', 'S', 'S', 'A', 'R', 'O', 'N',
+ 'T', 'E', 'T', 'A', 'R', 'T', 'O', 'S',
+ 'T', 'E', 'T', 'R', 'A', 'P', 'L', 'I',
+ 'T', 'H', 'E', 'S', 'P', 'I', 'A', 'N',
+ 'T', 'H', 'I', 'R', 'T', 'E', 'E', 'N',
+ 'T', 'H', 'O', 'U', 'S', 'A', 'N', 'D',
+ 'T', 'H', 'U', 'R', 'I', 'S', 'A', 'Z',
+ 'T', 'I', 'F', 'I', 'N', 'A', 'G', 'H',
+ 'T', 'I', 'R', 'O', 'N', 'I', 'A', 'N',
+ 'T', 'O', 'G', 'E', 'T', 'H', 'E', 'R',
+ 'T', 'O', 'R', 'C', 'U', 'L', 'U', 'S',
+ 'T', 'O', 'R', 'T', 'O', 'I', 'S', 'E',
+ 'T', 'R', 'E', 'A', 'D', 'I', 'N', 'G',
+ 'T', 'R', 'E', 'S', 'I', 'L', 'L', 'O',
+ 'T', 'R', 'I', 'A', 'N', 'G', 'L', 'E',
+ 'T', 'R', 'I', 'C', 'O', 'L', 'O', 'N',
+ 'T', 'R', 'I', 'S', 'I', 'M', 'O', 'U',
+ 'T', 'R', 'O', 'M', 'I', 'K', 'O', 'N',
+ 'T', 'R', 'Y', 'B', 'L', 'I', 'O', 'N',
+ 'T', 'T', 'A', 'Y', 'A', 'N', 'N', 'A',
+ 'T', 'T', 'U', 'D', 'D', 'A', 'A', 'G',
+ 'T', 'V', 'I', 'M', 'A', 'D', 'U', 'R',
+ 'T', 'W', 'O', '-', 'L', 'I', 'N', 'E',
+ 'U', 'G', 'A', 'R', 'I', 'T', 'I', 'C',
+ 'U', 'I', 'L', 'L', 'E', 'A', 'N', 'N',
+ 'U', 'M', 'B', 'R', 'E', 'L', 'L', 'A',
+ 'U', 'N', 'D', 'E', 'R', 'B', 'A', 'R',
+ 'U', 'N', 'D', 'E', 'R', 'D', 'O', 'T',
+ 'U', 'N', 'D', 'E', 'R', 'T', 'I', 'E',
+ 'V', 'A', 'S', 'T', 'N', 'E', 'S', 'S',
+ 'V', 'E', 'R', 'S', 'I', 'C', 'L', 'E',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L',
+ 'V', 'I', 'E', 'W', 'D', 'A', 'T', 'A',
+ 'W', 'A', 'N', 'D', 'E', 'R', 'E', 'R',
+ 'W', 'A', 'S', 'A', 'L', 'L', 'A', 'M',
+ 'Y', 'A', 'M', 'A', 'K', 'K', 'A', 'N',
+ 'Y', 'E', 'S', 'I', 'E', 'U', 'N', 'G',
+ 'Y', 'O', 'U', 'T', 'H', 'F', 'U', 'L',
+ 'Z', 'A', 'V', 'I', 'Y', 'A', 'N', 'I',
+ 'Z', 'W', 'A', 'R', 'A', 'K', 'A', 'Y',
+ 'A', 'A', 'B', 'A', 'A', 'F', 'I', 'L', 'I',
+ 'A', 'B', 'K', 'H', 'A', 'S', 'I', 'A', 'N',
+ 'A', 'B', 'U', 'N', 'D', 'A', 'N', 'C', 'E',
+ 'A', 'D', 'D', 'R', 'E', 'S', 'S', 'E', 'D',
+ 'A', 'L', '-', 'L', 'A', 'K', 'U', 'N', 'A',
+ 'A', 'L', 'P', 'A', 'P', 'R', 'A', 'N', 'A',
+ 'A', 'L', 'T', 'E', 'R', 'N', 'A', 'T', 'E',
+ 'A', 'M', 'P', 'E', 'R', 'S', 'A', 'N', 'D',
+ 'A', 'N', 'T', 'I', 'F', 'O', 'N', 'I', 'A',
+ 'A', 'R', '-', 'R', 'A', 'H', 'E', 'E', 'M',
+ 'A', 'R', '-', 'R', 'A', 'H', 'M', 'A', 'N',
+ 'A', 'R', 'R', 'O', 'W', 'H', 'E', 'A', 'D',
+ 'A', 'S', 'C', 'E', 'N', 'D', 'I', 'N', 'G',
+ 'A', 'S', 'P', 'I', 'R', 'A', 'T', 'E', 'D',
+ 'A', 'S', 'S', 'E', 'R', 'T', 'I', 'O', 'N',
+ 'A', 'S', 'T', 'E', 'R', 'I', 'S', 'K', 'S',
+ 'A', 'T', 'T', 'E', 'N', 'T', 'I', 'O', 'N',
+ 'B', 'A', 'C', 'K', 'S', 'L', 'A', 'S', 'H',
+ 'B', 'A', 'C', 'K', 'S', 'P', 'A', 'C', 'E',
+ 'B', 'E', 'G', 'I', 'N', 'N', 'I', 'N', 'G',
+ 'B', 'I', 'N', 'O', 'C', 'U', 'L', 'A', 'R',
+ 'B', 'I', 'O', 'H', 'A', 'Z', 'A', 'R', 'D',
+ 'B', 'I', 'S', 'E', 'C', 'T', 'I', 'N', 'G',
+ 'B', 'I', 'S', 'M', 'I', 'L', 'L', 'A', 'H',
+ 'B', 'L', 'A', 'C', 'K', 'F', 'O', 'O', 'T',
+ 'B', 'O', 'O', 'M', 'E', 'R', 'A', 'N', 'G',
+ 'B', 'R', 'A', 'N', 'C', 'H', 'I', 'N', 'G',
+ 'B', 'Y', 'Z', 'A', 'N', 'T', 'I', 'N', 'E',
+ 'C', 'A', 'P', 'R', 'I', 'C', 'O', 'R', 'N',
+ 'C', 'A', 'R', 'P', 'E', 'N', 'T', 'R', 'Y',
+ 'C', 'A', 'R', 'Y', 'S', 'T', 'I', 'A', 'N',
+ 'C', 'E', 'N', 'T', 'U', 'R', 'I', 'A', 'L',
+ 'C', 'H', 'A', 'R', 'A', 'C', 'T', 'E', 'R',
+ 'C', 'H', 'A', 'V', 'I', 'Y', 'A', 'N', 'I',
+ 'C', 'L', 'O', 'C', 'K', 'W', 'I', 'S', 'E',
+ 'C', 'L', 'O', 'S', 'E', 'N', 'E', 'S', 'S',
+ 'C', 'O', 'M', 'B', 'I', 'N', 'I', 'N', 'G',
+ 'C', 'O', 'M', 'P', 'L', 'E', 'T', 'E', 'D',
+ 'C', 'O', 'N', 'G', 'R', 'U', 'E', 'N', 'T',
+ 'C', 'O', 'N', 'J', 'U', 'G', 'A', 'T', 'E',
+ 'C', 'O', 'N', 'S', 'O', 'N', 'A', 'N', 'T',
+ 'C', 'O', 'N', 'S', 'T', 'A', 'N', 'C', 'Y',
+ 'C', 'O', 'N', 'T', 'O', 'U', 'R', 'E', 'D',
+ 'C', 'O', 'P', 'R', 'O', 'D', 'U', 'C', 'T',
+ 'C', 'O', 'P', 'Y', 'R', 'I', 'G', 'H', 'T',
+ 'C', 'R', 'E', 'S', 'C', 'E', 'N', 'D', 'O',
+ 'C', 'U', 'A', 'T', 'R', 'I', 'L', 'L', 'O',
+ 'C', 'U', 'N', 'E', 'I', 'F', 'O', 'R', 'M',
+ 'D', 'A', 'H', 'Y', 'A', 'A', 'U', 'S', 'H',
+ 'D', 'A', 'R', 'K', 'E', 'N', 'I', 'N', 'G',
+ 'D', 'E', 'L', 'I', 'M', 'I', 'T', 'E', 'R',
+ 'D', 'E', 'N', 'T', 'I', 'S', 'T', 'R', 'Y',
+ 'D', 'E', 'P', 'A', 'R', 'T', 'I', 'N', 'G',
+ 'D', 'E', 'P', 'A', 'R', 'T', 'U', 'R', 'E',
+ 'D', 'E', 'S', 'C', 'E', 'N', 'D', 'E', 'R',
+ 'D', 'I', 'A', 'E', 'R', 'E', 'S', 'I', 'S',
+ 'D', 'I', 'A', 'L', 'E', 'C', 'T', '-', 'P',
+ 'D', 'I', 'A', 'L', 'Y', 'T', 'I', 'K', 'A',
+ 'D', 'I', 'A', 'T', 'O', 'N', 'I', 'K', 'I',
+ 'D', 'I', 'F', 'T', 'O', 'G', 'G', 'O', 'S',
+ 'D', 'I', 'G', 'R', 'A', 'M', 'M', 'O', 'S',
+ 'D', 'I', 'M', 'E', 'N', 'S', 'I', 'O', 'N',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '4',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '5',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '6',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '4', '5',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '4', '6',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '4', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '4', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '5', '6',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '5', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '5', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '4', '5',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '4', '6',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '4', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '4', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '5', '6',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '5', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '5', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '4', '5', '6',
+ 'D', 'O', 'T', 'S', '-', '1', '4', '5', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '4', '5', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '4', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '4', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '4', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '5', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '5', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '5', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '4', '5',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '4', '6',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '4', '7',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '4', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '5', '6',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '5', '7',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '5', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '4', '5', '6',
+ 'D', 'O', 'T', 'S', '-', '2', '4', '5', '7',
+ 'D', 'O', 'T', 'S', '-', '2', '4', '5', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '4', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '2', '4', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '4', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '5', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '2', '5', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '5', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '3', '4', '5', '6',
+ 'D', 'O', 'T', 'S', '-', '3', '4', '5', '7',
+ 'D', 'O', 'T', 'S', '-', '3', '4', '5', '8',
+ 'D', 'O', 'T', 'S', '-', '3', '4', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '3', '4', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '3', '4', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '3', '5', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '3', '5', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '3', '5', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '3', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '4', '5', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '4', '5', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '4', '5', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '4', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '5', '6', '7', '8',
+ 'D', 'O', 'W', 'N', 'W', 'A', 'R', 'D', 'S',
+ 'D', 'U', 'P', 'O', 'N', 'D', 'I', 'U', 'S',
+ 'E', 'D', 'I', 'T', 'O', 'R', 'I', 'A', 'L',
+ 'E', 'E', 'B', 'E', 'E', 'F', 'I', 'L', 'I',
+ 'E', 'M', 'B', 'E', 'D', 'D', 'I', 'N', 'G',
+ 'E', 'N', 'C', 'L', 'O', 'S', 'I', 'N', 'G',
+ 'E', 'N', 'C', 'L', 'O', 'S', 'U', 'R', 'E',
+ 'E', 'N', 'D', 'E', 'A', 'V', 'O', 'U', 'R',
+ 'E', 'N', 'D', 'O', 'F', 'O', 'N', 'O', 'N',
+ 'E', 'S', 'T', 'I', 'M', 'A', 'T', 'E', 'D',
+ 'E', 'S', 'T', 'I', 'M', 'A', 'T', 'E', 'S',
+ 'E', 'X', 'C', 'E', 'L', 'L', 'E', 'N', 'T',
+ 'E', 'X', 'T', 'E', 'N', 'S', 'I', 'O', 'N',
+ 'E', 'X', 'T', 'R', 'A', '-', 'L', 'O', 'W',
+ 'E', 'Y', 'B', 'E', 'Y', 'F', 'I', 'L', 'I',
+ 'F', 'A', 'C', 'S', 'I', 'M', 'I', 'L', 'E',
+ 'F', 'A', 'N', 'E', 'R', 'O', 'S', 'I', 'S',
+ 'F', 'I', 'N', 'A', 'N', 'C', 'I', 'A', 'L',
+ 'F', 'I', 'V', 'E', '-', 'L', 'I', 'N', 'E',
+ 'F', 'L', 'A', 'T', 'T', 'E', 'N', 'E', 'D',
+ 'F', 'O', 'L', 'L', 'O', 'W', 'I', 'N', 'G',
+ 'F', 'O', 'O', 'T', 'S', 'T', 'O', 'O', 'L',
+ 'F', 'O', 'S', 'T', 'E', 'R', 'I', 'N', 'G',
+ 'F', 'O', 'U', 'R', '-', 'L', 'I', 'N', 'E',
+ 'F', 'R', 'E', 'T', 'B', 'O', 'A', 'R', 'D',
+ 'F', 'R', 'I', 'C', 'A', 'T', 'I', 'V', 'E',
+ 'F', 'U', 'L', 'L', 'W', 'I', 'D', 'T', 'H',
+ 'G', 'A', 'T', 'H', 'E', 'R', 'I', 'N', 'G',
+ 'G', 'E', 'O', 'M', 'E', 'T', 'R', 'I', 'C',
+ 'G', 'E', 'R', 'S', 'H', 'A', 'Y', 'I', 'M',
+ 'G', 'L', 'I', 'S', 'S', 'A', 'N', 'D', 'O',
+ 'G', 'N', 'A', 'V', 'I', 'Y', 'A', 'N', 'I',
+ 'G', 'O', 'R', 'G', 'O', 'T', 'E', 'R', 'I',
+ 'G', 'R', 'E', 'A', 'T', 'N', 'E', 'S', 'S',
+ 'G', 'R', 'E', 'G', 'O', 'R', 'I', 'A', 'N',
+ 'G', 'U', 'R', 'A', 'M', 'U', 'T', 'O', 'N',
+ 'H', 'A', 'L', 'F', 'W', 'I', 'D', 'T', 'H',
+ 'H', 'E', 'K', 'U', 'T', 'A', 'A', 'R', 'U',
+ 'H', 'E', 'R', 'M', 'I', 'T', 'I', 'A', 'N',
+ 'H', 'O', 'U', 'R', 'G', 'L', 'A', 'S', 'S',
+ 'I', 'C', 'H', 'I', 'M', 'A', 'T', 'O', 'S',
+ 'I', 'D', 'E', 'N', 'T', 'I', 'C', 'A', 'L',
+ 'I', 'D', 'E', 'O', 'G', 'R', 'A', 'P', 'H',
+ 'I', 'L', 'U', 'U', 'Y', 'A', 'N', 'N', 'A',
+ 'I', 'M', 'I', 'F', 'T', 'H', 'O', 'R', 'A',
+ 'I', 'N', 'C', 'L', 'U', 'D', 'I', 'N', 'G',
+ 'I', 'N', 'C', 'R', 'E', 'A', 'S', 'E', 'S',
+ 'I', 'N', 'C', 'R', 'E', 'M', 'E', 'N', 'T',
+ 'I', 'N', 'D', 'I', 'C', 'A', 'T', 'O', 'R',
+ 'I', 'N', 'F', 'L', 'U', 'E', 'N', 'C', 'E',
+ 'I', 'N', 'N', 'O', 'C', 'E', 'N', 'C', 'E',
+ 'I', 'N', 'S', 'E', 'R', 'T', 'I', 'O', 'N',
+ 'I', 'N', 'V', 'I', 'S', 'I', 'B', 'L', 'E',
+ 'I', 'R', 'U', 'U', 'Y', 'A', 'N', 'N', 'A',
+ 'I', 'T', 'E', 'R', 'A', 'T', 'I', 'O', 'N',
+ 'J', 'E', 'R', 'U', 'S', 'A', 'L', 'E', 'M',
+ 'J', 'O', 'N', 'G', 'S', 'E', 'O', 'N', 'G',
+ 'J', 'U', 'N', 'G', 'S', 'E', 'O', 'N', 'G',
+ 'K', 'A', 'T', 'A', 'V', 'A', 'S', 'M', 'A',
+ 'K', 'E', 'M', 'P', 'H', 'R', 'E', 'N', 'G',
+ 'K', 'E', 'N', 'T', 'I', 'M', 'A', 'T', 'A',
+ 'K', 'I', 'R', 'O', 'W', 'A', 'T', 'T', 'O',
+ 'K', 'R', 'A', 'T', 'I', 'M', 'A', 'T', 'A',
+ 'K', 'U', 'R', 'U', 'Z', 'E', 'I', 'R', 'O',
+ 'L', 'A', 'B', 'O', 'U', 'R', 'I', 'N', 'G',
+ 'L', 'A', 'R', 'Y', 'N', 'G', 'E', 'A', 'L',
+ 'L', 'E', 'F', 'T', '-', 'H', 'A', 'N', 'D',
+ 'L', 'E', 'F', 'T', '-', 'S', 'I', 'D', 'E',
+ 'L', 'E', 'F', 'T', '-', 'S', 'T', 'E', 'M',
+ 'L', 'E', 'F', 'T', 'W', 'A', 'R', 'D', 'S',
+ 'L', 'E', 'S', 'S', '-', 'T', 'H', 'A', 'N',
+ 'L', 'H', 'A', 'V', 'I', 'Y', 'A', 'N', 'I',
+ 'L', 'I', 'A', 'B', 'I', 'L', 'I', 'T', 'Y',
+ 'L', 'I', 'G', 'H', 'T', 'N', 'I', 'N', 'G',
+ 'M', 'A', 'H', 'A', 'P', 'R', 'A', 'N', 'A',
+ 'M', 'A', 'I', 'T', 'A', 'I', 'K', 'H', 'U',
+ 'M', 'A', 'L', 'A', 'Y', 'A', 'L', 'A', 'M',
+ 'M', 'A', 'S', 'C', 'U', 'L', 'I', 'N', 'E',
+ 'M', 'A', 'T', 'E', 'R', 'I', 'A', 'L', 'S',
+ 'M', 'E', 'S', 'S', 'E', 'N', 'I', 'A', 'N',
+ 'M', 'E', 'T', 'O', 'B', 'E', 'L', 'U', 'S',
+ 'M', 'I', 'R', 'I', 'B', 'A', 'A', 'R', 'U',
+ 'M', 'O', 'N', 'G', 'O', 'L', 'I', 'A', 'N',
+ 'M', 'O', 'N', 'O', 'C', 'U', 'L', 'A', 'R',
+ 'M', 'O', 'N', 'O', 'G', 'R', 'A', 'P', 'H',
+ 'M', 'O', 'N', 'O', 'S', 'P', 'A', 'C', 'E',
+ 'M', 'U', 'K', 'P', 'H', 'R', 'E', 'N', 'G',
+ 'M', 'U', 'U', 'R', 'D', 'H', 'A', 'J', 'A',
+ 'N', 'I', 'G', 'G', 'A', 'H', 'I', 'T', 'A',
+ 'N', 'I', 'G', 'I', 'D', 'A', 'E', 'S', 'H',
+ 'N', 'I', 'G', 'I', 'D', 'A', 'M', 'I', 'N',
+ 'N', 'O', 'R', 'T', 'H', 'W', 'E', 'S', 'T',
+ 'N', 'U', 'M', 'E', 'R', 'A', 'T', 'O', 'R',
+ 'O', 'A', 'B', 'O', 'A', 'F', 'I', 'L', 'I',
+ 'O', 'O', 'B', 'O', 'O', 'F', 'I', 'L', 'I',
+ 'O', 'Y', 'R', 'A', 'N', 'I', 'S', 'M', 'A',
+ 'P', 'A', 'A', '-', 'P', 'I', 'L', 'L', 'A',
+ 'P', 'A', 'I', 'Y', 'A', 'N', 'N', 'O', 'I',
+ 'P', 'A', 'M', 'I', 'N', 'G', 'K', 'A', 'L',
+ 'P', 'A', 'M', 'U', 'N', 'G', 'K', 'A', 'H',
+ 'P', 'A', 'N', 'G', 'L', 'A', 'Y', 'A', 'R',
+ 'P', 'A', 'N', 'G', 'W', 'I', 'S', 'A', 'D',
+ 'P', 'A', 'R', 'A', 'G', 'R', 'A', 'P', 'H',
+ 'P', 'E', 'N', 'T', 'A', 'S', 'E', 'M', 'E',
+ 'P', 'E', 'R', 'F', 'E', 'C', 'T', 'U', 'M',
+ 'P', 'E', 'R', 'M', 'A', 'N', 'E', 'N', 'T',
+ 'P', 'I', 'A', 'S', 'U', 'T', 'O', 'R', 'U',
+ 'P', 'I', 'T', 'C', 'H', 'F', 'O', 'R', 'K',
+ 'P', 'I', 'Z', 'Z', 'I', 'C', 'A', 'T', 'O',
+ 'P', 'O', 'R', 'R', 'E', 'C', 'T', 'U', 'S',
+ 'P', 'R', 'A', 'M', '-', 'B', 'U', 'O', 'N',
+ 'P', 'R', 'A', 'M', '-', 'M', 'U', 'O', 'Y',
+ 'P', 'R', 'E', 'C', 'E', 'D', 'I', 'N', 'G',
+ 'P', 'R', 'O', 'L', 'O', 'N', 'G', 'E', 'D',
+ 'P', 'R', 'O', 'P', 'E', 'L', 'L', 'E', 'R',
+ 'P', 'S', 'I', 'F', 'I', 'S', 'T', 'O', 'N',
+ 'Q', 'U', 'A', 'D', 'R', 'U', 'P', 'L', 'E',
+ 'Q', 'U', 'I', 'N', 'A', 'R', 'I', 'U', 'S',
+ 'Q', 'U', 'O', 'T', 'A', 'T', 'I', 'O', 'N',
+ 'Q', 'U', 'S', 'H', 'S', 'H', 'A', 'Y', 'A',
+ 'R', 'E', 'C', 'E', 'P', 'T', 'I', 'V', 'E',
+ 'R', 'E', 'C', 'O', 'R', 'D', 'I', 'N', 'G',
+ 'R', 'E', 'C', 'T', 'A', 'N', 'G', 'L', 'E',
+ 'R', 'E', 'C', 'Y', 'C', 'L', 'I', 'N', 'G',
+ 'R', 'E', 'F', 'E', 'R', 'E', 'N', 'C', 'E',
+ 'R', 'E', 'P', 'R', 'E', 'S', 'E', 'N', 'T',
+ 'R', 'E', 'S', 'I', 'D', 'E', 'N', 'C', 'E',
+ 'R', 'E', 'S', 'U', 'P', 'I', 'N', 'U', 'S',
+ 'R', 'E', 'T', 'R', 'O', 'F', 'L', 'E', 'X',
+ 'R', 'I', 'G', 'H', 'T', 'H', 'A', 'N', 'D',
+ 'S', 'A', 'M', 'A', 'R', 'I', 'T', 'A', 'N',
+ 'S', 'C', 'A', 'N', 'D', 'I', 'C', 'U', 'S',
+ 'S', 'E', 'B', 'A', 'T', 'B', 'E', 'I', 'T',
+ 'S', 'E', 'M', 'I', 'C', 'O', 'L', 'O', 'N',
+ 'S', 'E', 'M', 'I', 'V', 'O', 'W', 'E', 'L',
+ 'S', 'E', 'P', 'A', 'R', 'A', 'T', 'O', 'R',
+ 'S', 'E', 'P', 'T', 'E', 'M', 'B', 'E', 'R',
+ 'S', 'E', 'V', 'E', 'N', 'T', 'E', 'E', 'N',
+ 'S', 'E', 'V', 'E', 'R', 'A', 'N', 'C', 'E',
+ 'S', 'H', 'A', 'V', 'I', 'Y', 'A', 'N', 'I',
+ 'S', 'H', 'O', 'R', 'T', 'E', 'N', 'E', 'R',
+ 'S', 'I', 'X', 'T', 'E', 'E', 'N', 'T', 'H',
+ 'S', 'N', 'O', 'W', 'F', 'L', 'A', 'K', 'E',
+ 'S', 'P', 'H', 'E', 'R', 'I', 'C', 'A', 'L',
+ 'S', 'P', 'L', 'I', 'T', 'T', 'I', 'N', 'G',
+ 'S', 'S', 'A', 'N', 'G', 'S', 'I', 'O', 'S',
+ 'S', 'T', 'R', 'E', 'T', 'C', 'H', 'E', 'D',
+ 'S', 'T', 'R', 'O', 'K', 'E', '-', '1', '0',
+ 'S', 'T', 'R', 'O', 'K', 'E', '-', '1', '1',
+ 'S', 'U', 'B', 'J', 'O', 'I', 'N', 'E', 'D',
+ 'S', 'U', 'B', 'L', 'I', 'N', 'E', 'A', 'R',
+ 'S', 'U', 'B', 'S', 'C', 'R', 'I', 'P', 'T',
+ 'S', 'U', 'M', 'M', 'A', 'T', 'I', 'O', 'N',
+ 'S', 'U', 'N', 'D', 'A', 'N', 'E', 'S', 'E',
+ 'S', 'U', 'P', 'E', 'R', 'V', 'I', 'S', 'E',
+ 'S', 'Y', 'L', 'L', 'A', 'B', 'I', 'C', 'S',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '1', '0',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '1', '1',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '1', '2',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '1', '3',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '1', '4',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '1', '5',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '1', '6',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '1', '7',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '1', '8',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '1', '9',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '2', '0',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '2', '1',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '2', '2',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '2', '3',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '2', '4',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '2', '5',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '2', '6',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '2', '7',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '2', '9',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '3', '0',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '3', '2',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '3', '6',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '3', '7',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '3', '8',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '3', '9',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '4', '0',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '4', '2',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '4', '3',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '4', '5',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '4', '7',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '4', '8',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '4', '9',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '5', '0',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '5', '1',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '5', '2',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '5', '3',
+ 'S', 'Y', 'M', 'B', 'O', 'L', '-', '5', '4',
+ 'S', 'Y', 'M', 'M', 'E', 'T', 'R', 'I', 'C',
+ 'S', 'Y', 'N', 'D', 'E', 'S', 'M', 'O', 'S',
+ 'S', 'Y', 'R', 'M', 'A', 'T', 'I', 'K', 'I',
+ 'T', 'A', 'K', 'H', 'A', 'L', 'L', 'U', 'S',
+ 'T', 'E', 'L', 'E', 'G', 'R', 'A', 'P', 'H',
+ 'T', 'E', 'L', 'E', 'P', 'H', 'O', 'N', 'E',
+ 'T', 'E', 'T', 'R', 'A', 'G', 'R', 'A', 'M',
+ 'T', 'E', 'T', 'R', 'A', 'S', 'E', 'M', 'E',
+ 'T', 'H', 'E', 'R', 'E', 'F', 'O', 'R', 'E',
+ 'T', 'H', 'O', 'U', 'S', 'A', 'N', 'D', 'S',
+ 'T', 'R', 'A', 'P', 'E', 'Z', 'I', 'U', 'M',
+ 'T', 'R', 'E', 'M', 'O', 'L', 'O', '-', '1',
+ 'T', 'R', 'E', 'M', 'O', 'L', 'O', '-', '2',
+ 'T', 'R', 'E', 'M', 'O', 'L', 'O', '-', '3',
+ 'T', 'R', 'I', 'F', 'O', 'N', 'I', 'A', 'S',
+ 'T', 'R', 'I', 'G', 'O', 'R', 'G', 'O', 'N',
+ 'T', 'R', 'U', 'N', 'C', 'A', 'T', 'E', 'D',
+ 'T', 'U', 'R', 'N', 'S', 'T', 'I', 'L', 'E',
+ 'T', 'U', 'T', 'E', 'Y', 'A', 'S', 'A', 'T',
+ 'U', 'K', 'R', 'A', 'I', 'N', 'I', 'A', 'N',
+ 'U', 'N', 'D', 'E', 'R', 'L', 'I', 'N', 'E',
+ 'U', 'N', 'I', 'V', 'E', 'R', 'S', 'A', 'L',
+ 'U', 'N', 'M', 'A', 'R', 'R', 'I', 'E', 'D',
+ 'V', 'A', 'R', 'I', 'A', 'T', 'I', 'O', 'N',
+ 'V', 'I', 'S', 'A', 'R', 'G', 'A', 'Y', 'A',
+ 'V', 'O', 'I', 'C', 'E', 'L', 'E', 'S', 'S',
+ 'W', 'A', 'S', 'S', 'A', 'L', 'L', 'A', 'M',
+ 'W', 'E', 'S', 'T', '-', 'C', 'R', 'E', 'E',
+ 'W', 'O', 'R', 'D', 'S', 'P', 'A', 'C', 'E',
+ 'Y', 'P', 'O', 'K', 'R', 'I', 'S', 'I', 'S',
+ 'A', 'C', 'R', 'O', 'P', 'H', 'O', 'N', 'I', 'C',
+ 'A', 'E', 'D', 'A', '-', 'P', 'I', 'L', 'L', 'A',
+ 'A', 'E', 'L', 'A', '-', 'P', 'I', 'L', 'L', 'A',
+ 'A', 'L', 'P', 'A', 'P', 'R', 'A', 'A', 'N', 'A',
+ 'A', 'N', 'G', 'K', 'H', 'A', 'N', 'K', 'H', 'U',
+ 'A', 'N', 'N', 'O', 'T', 'A', 'T', 'I', 'O', 'N',
+ 'A', 'N', 'T', 'I', 'K', 'E', 'N', 'O', 'M', 'A',
+ 'A', 'N', 'U', 'S', 'V', 'A', 'R', 'A', 'Y', 'A',
+ 'A', 'P', 'O', 'S', 'T', 'R', 'O', 'F', 'O', 'I',
+ 'A', 'P', 'O', 'S', 'T', 'R', 'O', 'F', 'O', 'S',
+ 'A', 'P', 'O', 'S', 'T', 'R', 'O', 'P', 'H', 'E',
+ 'A', 'P', 'P', 'R', 'O', 'A', 'C', 'H', 'E', 'S',
+ 'A', 'R', 'P', 'E', 'G', 'G', 'I', 'A', 'T', 'O',
+ 'A', 'R', 'R', 'O', 'W', '-', 'T', 'A', 'I', 'L',
+ 'A', 'S', 'T', 'E', 'R', 'I', 'S', 'C', 'U', 'S',
+ 'A', 'T', 'H', 'A', 'P', 'A', 'S', 'C', 'A', 'N',
+ 'A', 'U', 'R', 'A', 'M', 'A', 'Z', 'D', 'A', 'A',
+ 'B', 'A', 'R', 'I', 'Y', 'O', 'O', 'S', 'A', 'N',
+ 'B', 'A', 'T', 'H', 'A', 'M', 'A', 'S', 'A', 'T',
+ 'B', 'I', 'B', 'L', 'E', '-', 'C', 'R', 'E', 'E',
+ 'C', 'E', 'N', 'T', 'R', 'E', 'L', 'I', 'N', 'E',
+ 'C', 'H', 'A', 'R', 'A', 'C', 'T', 'E', 'R', 'S',
+ 'C', 'I', 'R', 'C', 'U', 'M', 'F', 'L', 'E', 'X',
+ 'C', 'O', 'M', 'M', 'E', 'R', 'C', 'I', 'A', 'L',
+ 'C', 'O', 'M', 'P', 'L', 'E', 'M', 'E', 'N', 'T',
+ 'C', 'O', 'M', 'P', 'L', 'E', 'T', 'I', 'O', 'N',
+ 'C', 'O', 'M', 'P', 'L', 'I', 'A', 'N', 'C', 'E',
+ 'C', 'O', 'N', 'J', 'O', 'I', 'N', 'I', 'N', 'G',
+ 'C', 'O', 'N', 'T', 'A', 'I', 'N', 'I', 'N', 'G',
+ 'C', 'O', 'N', 'T', 'E', 'N', 'T', 'I', 'O', 'N',
+ 'C', 'O', 'N', 'T', 'I', 'N', 'U', 'O', 'U', 'S',
+ 'C', 'R', 'O', 'S', 'S', 'B', 'O', 'N', 'E', 'S',
+ 'C', 'R', 'O', 'S', 'S', 'H', 'A', 'T', 'C', 'H',
+ 'D', 'A', 'G', 'B', 'A', 'S', 'I', 'N', 'N', 'A',
+ 'D', 'E', 'F', 'I', 'N', 'I', 'T', 'I', 'O', 'N',
+ 'D', 'E', 'S', 'C', 'E', 'N', 'D', 'I', 'N', 'G',
+ 'D', 'E', 'V', 'A', 'N', 'A', 'G', 'A', 'R', 'I',
+ 'D', 'I', 'F', 'F', 'E', 'R', 'E', 'N', 'C', 'E',
+ 'D', 'I', 'F', 'F', 'I', 'C', 'U', 'L', 'T', 'Y',
+ 'D', 'I', 'S', 'P', 'E', 'R', 'S', 'I', 'O', 'N',
+ 'D', 'I', 'S', 'T', 'O', 'R', 'T', 'I', 'O', 'N',
+ 'D', 'I', 'V', 'E', 'R', 'G', 'E', 'N', 'C', 'E',
+ 'D', 'I', 'V', 'I', 'N', 'A', 'T', 'I', 'O', 'N',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '4', '5',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '4', '6',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '4', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '4', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '5', '6',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '5', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '5', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '4', '5', '6',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '4', '5', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '4', '5', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '4', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '4', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '4', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '5', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '5', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '5', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '4', '5', '6',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '4', '5', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '4', '5', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '4', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '4', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '4', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '5', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '5', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '5', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '4', '5', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '4', '5', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '4', '5', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '4', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '5', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '4', '5', '6',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '4', '5', '7',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '4', '5', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '4', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '4', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '4', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '5', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '5', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '5', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '4', '5', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '2', '4', '5', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '4', '5', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '4', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '5', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '3', '4', '5', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '3', '4', '5', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '3', '4', '5', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '3', '4', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '3', '5', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '4', '5', '6', '7', '8',
+ 'E', 'K', 'S', 'T', 'R', 'E', 'P', 'T', 'O', 'N',
+ 'E', 'L', 'E', 'C', 'T', 'R', 'I', 'C', 'A', 'L',
+ 'E', 'M', 'B', 'R', 'O', 'I', 'D', 'E', 'R', 'Y',
+ 'E', 'N', 'A', 'R', 'M', 'O', 'N', 'I', 'O', 'S',
+ 'E', 'N', 'C', 'O', 'U', 'N', 'T', 'E', 'R', 'S',
+ 'E', 'N', 'T', 'E', 'R', 'P', 'R', 'I', 'S', 'E',
+ 'E', 'N', 'T', 'H', 'U', 'S', 'I', 'A', 'S', 'M',
+ 'E', 'P', 'I', 'D', 'A', 'U', 'R', 'E', 'A', 'N',
+ 'E', 'P', 'I', 'G', 'R', 'A', 'P', 'H', 'I', 'C',
+ 'E', 'Q', 'U', 'I', 'V', 'A', 'L', 'E', 'N', 'T',
+ 'E', 'X', 'H', 'A', 'U', 'S', 'T', 'I', 'O', 'N',
+ 'E', 'X', 'T', 'R', 'A', '-', 'H', 'I', 'G', 'H',
+ 'F', 'A', 'H', 'R', 'E', 'N', 'H', 'E', 'I', 'T',
+ 'F', 'E', 'L', 'L', 'O', 'W', 'S', 'H', 'I', 'P',
+ 'F', 'I', 'X', 'E', 'D', '-', 'F', 'O', 'R', 'M',
+ 'F', 'O', 'R', 'M', 'A', 'T', 'T', 'I', 'N', 'G',
+ 'F', 'U', 'N', 'C', 'T', 'I', 'O', 'N', 'A', 'L',
+ 'G', 'B', 'A', 'K', 'U', 'R', 'U', 'N', 'E', 'N',
+ 'G', 'E', 'M', 'I', 'N', 'A', 'T', 'I', 'O', 'N',
+ 'G', 'L', 'A', 'G', 'O', 'L', 'I', 'T', 'I', 'C',
+ 'G', 'O', 'R', 'T', 'H', 'M', 'I', 'K', 'O', 'N',
+ 'H', 'E', 'R', 'M', 'I', 'O', 'N', 'I', 'A', 'N',
+ 'H', 'O', 'M', 'O', 'T', 'H', 'E', 'T', 'I', 'C',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L',
+ 'H', 'Y', 'S', 'T', 'E', 'R', 'E', 'S', 'I', 'S',
+ 'I', 'E', 'U', 'N', 'G', '-', 'S', 'I', 'O', 'S',
+ 'I', 'M', 'I', 'D', 'I', 'A', 'R', 'G', 'O', 'N',
+ 'I', 'M', 'I', 'F', 'T', 'H', 'O', 'R', 'O', 'N',
+ 'I', 'M', 'P', 'E', 'R', 'F', 'E', 'C', 'T', 'A',
+ 'I', 'N', 'C', 'O', 'M', 'P', 'L', 'E', 'T', 'E',
+ 'I', 'N', 'D', 'U', 'S', 'T', 'R', 'I', 'A', 'L',
+ 'K', 'H', 'A', 'K', 'A', 'S', 'S', 'I', 'A', 'N',
+ 'K', 'H', 'A', 'R', 'O', 'S', 'H', 'T', 'H', 'I',
+ 'K', 'I', 'R', 'O', 'G', 'U', 'R', 'A', 'M', 'U',
+ 'K', 'U', 'N', 'D', 'D', 'A', 'L', 'I', 'Y', 'A',
+ 'L', 'A', 'J', 'A', 'N', 'Y', 'A', 'L', 'A', 'N',
+ 'L', 'E', 'N', 'G', 'T', 'H', 'E', 'N', 'E', 'R',
+ 'L', 'E', 'N', 'T', 'I', 'C', 'U', 'L', 'A', 'R',
+ 'L', 'I', 'M', 'I', 'T', 'A', 'T', 'I', 'O', 'N',
+ 'M', 'E', 'M', 'B', 'E', 'R', 'S', 'H', 'I', 'P',
+ 'M', 'I', 'E', 'U', 'M', '-', 'S', 'I', 'O', 'S',
+ 'M', 'O', 'N', 'O', 'F', 'O', 'N', 'I', 'A', 'S',
+ 'M', 'O', 'N', 'O', 'S', 'T', 'A', 'B', 'L', 'E',
+ 'M', 'O', 'O', 'S', 'E', '-', 'C', 'R', 'E', 'E',
+ 'M', 'U', '-', 'G', 'A', 'A', 'H', 'L', 'A', 'A',
+ 'N', 'A', 'A', 'S', 'I', 'K', 'Y', 'A', 'Y', 'A',
+ 'N', 'A', 'N', 'G', 'M', 'O', 'N', 'T', 'H', 'O',
+ 'N', 'I', 'E', 'U', 'N', '-', 'S', 'I', 'O', 'S',
+ 'N', 'O', 'N', '-', 'J', 'O', 'I', 'N', 'E', 'R',
+ 'N', 'O', 'N', 'F', 'O', 'R', 'K', 'I', 'N', 'G',
+ 'O', 'P', 'P', 'O', 'S', 'I', 'T', 'I', 'O', 'N',
+ 'O', 'P', 'P', 'R', 'E', 'S', 'S', 'I', 'O', 'N',
+ 'O', 'R', 'T', 'H', 'O', 'G', 'O', 'N', 'A', 'L',
+ 'P', 'A', 'M', 'P', 'H', 'Y', 'L', 'I', 'A', 'N',
+ 'P', 'A', 'N', 'A', 'E', 'L', 'A', 'E', 'N', 'G',
+ 'P', 'A', 'N', 'E', 'U', 'L', 'E', 'U', 'N', 'G',
+ 'P', 'A', 'R', 'A', 'P', 'H', 'R', 'A', 'S', 'E',
+ 'P', 'A', 'T', 'H', 'A', 'M', 'A', 'S', 'A', 'T',
+ 'P', 'E', 'D', 'E', 'S', 'T', 'R', 'I', 'A', 'N',
+ 'P', 'E', 'R', 'C', 'U', 'S', 'S', 'I', 'V', 'E',
+ 'P', 'H', 'A', 'R', 'Y', 'N', 'G', 'E', 'A', 'L',
+ 'P', 'H', 'I', 'L', 'I', 'P', 'P', 'I', 'N', 'E',
+ 'P', 'H', 'O', 'E', 'N', 'I', 'C', 'I', 'A', 'N',
+ 'P', 'I', 'E', 'U', 'P', '-', 'S', 'I', 'O', 'S',
+ 'P', 'L', 'U', 'S', '-', 'M', 'I', 'N', 'U', 'S',
+ 'P', 'O', 'S', 'S', 'E', 'S', 'S', 'I', 'O', 'N',
+ 'P', 'R', 'O', 'J', 'E', 'C', 'T', 'I', 'O', 'N',
+ 'P', 'R', 'O', 'J', 'E', 'C', 'T', 'I', 'V', 'E',
+ 'P', 'R', 'O', 'L', 'A', 'T', 'I', 'O', 'N', 'E',
+ 'P', 'R', 'O', 'P', 'O', 'R', 'T', 'I', 'O', 'N',
+ 'P', 'R', 'O', 'T', 'O', 'V', 'A', 'R', 'Y', 'S',
+ 'Q', 'U', 'A', 'T', 'E', 'R', 'N', 'I', 'O', 'N',
+ 'Q', 'U', 'E', 'S', 'T', 'I', 'O', 'N', 'E', 'D',
+ 'R', 'E', 'G', 'I', 'S', 'T', 'E', 'R', 'E', 'D',
+ 'R', 'E', 'L', 'A', 'T', 'I', 'O', 'N', 'A', 'L',
+ 'R', 'E', 'S', 'I', 'S', 'T', 'A', 'N', 'C', 'E',
+ 'R', 'E', 'S', 'O', 'L', 'U', 'T', 'I', 'O', 'N',
+ 'R', 'E', 'V', 'O', 'L', 'U', 'T', 'I', 'O', 'N',
+ 'R', 'I', 'E', 'U', 'L', '-', 'S', 'I', 'O', 'S',
+ 'R', 'I', 'G', 'H', 'T', '-', 'H', 'A', 'N', 'D',
+ 'R', 'I', 'G', 'H', 'T', '-', 'S', 'I', 'D', 'E',
+ 'R', 'I', 'G', 'H', 'T', 'W', 'A', 'R', 'D', 'S',
+ 'S', 'A', 'N', 'S', '-', 'S', 'E', 'R', 'I', 'F',
+ 'S', 'A', 'U', 'R', 'A', 'S', 'H', 'T', 'R', 'A',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '9',
+ 'S', 'E', 'M', 'I', 'B', 'R', 'E', 'V', 'I', 'S',
+ 'S', 'E', 'M', 'I', 'C', 'I', 'R', 'C', 'L', 'E',
+ 'S', 'E', 'M', 'I', 'D', 'I', 'R', 'E', 'C', 'T',
+ 'S', 'E', 'M', 'I', 'M', 'I', 'N', 'I', 'M', 'A',
+ 'S', 'E', 'S', 'T', 'E', 'R', 'T', 'I', 'U', 'S',
+ 'S', 'H', 'A', 'L', 'S', 'H', 'E', 'L', 'E', 'T',
+ 'S', 'H', 'O', 'U', 'L', 'D', 'E', 'R', 'E', 'D',
+ 'S', 'I', 'M', 'P', 'L', 'I', 'F', 'I', 'E', 'D',
+ 'S', 'I', 'O', 'S', '-', 'C', 'I', 'E', 'U', 'C',
+ 'S', 'I', 'O', 'S', '-', 'H', 'I', 'E', 'U', 'H',
+ 'S', 'I', 'O', 'S', '-', 'I', 'E', 'U', 'N', 'G',
+ 'S', 'I', 'O', 'S', '-', 'M', 'I', 'E', 'U', 'M',
+ 'S', 'I', 'O', 'S', '-', 'N', 'I', 'E', 'U', 'N',
+ 'S', 'I', 'O', 'S', '-', 'P', 'I', 'E', 'U', 'P',
+ 'S', 'I', 'O', 'S', '-', 'R', 'I', 'E', 'U', 'L',
+ 'S', 'I', 'X', '-', 'P', 'E', 'R', '-', 'E', 'M',
+ 'S', 'I', 'X', '-', 'S', 'T', 'R', 'I', 'N', 'G',
+ 'S', 'S', 'A', 'N', 'G', 'A', 'R', 'A', 'E', 'A',
+ 'S', 'S', 'A', 'N', 'G', 'C', 'I', 'E', 'U', 'C',
+ 'S', 'S', 'A', 'N', 'G', 'H', 'I', 'E', 'U', 'H',
+ 'S', 'S', 'A', 'N', 'G', 'I', 'E', 'U', 'N', 'G',
+ 'S', 'S', 'A', 'N', 'G', 'N', 'I', 'E', 'U', 'N',
+ 'S', 'S', 'A', 'N', 'G', 'P', 'I', 'E', 'U', 'P',
+ 'S', 'S', 'A', 'N', 'G', 'R', 'I', 'E', 'U', 'L',
+ 'S', 'T', 'A', 'N', 'D', 'S', 'T', 'I', 'L', 'L',
+ 'S', 'U', 'B', 'P', 'U', 'N', 'C', 'T', 'I', 'S',
+ 'S', 'U', 'B', 'S', 'T', 'I', 'T', 'U', 'T', 'E',
+ 'S', 'U', 'P', 'E', 'R', 'F', 'I', 'X', 'E', 'D',
+ 'S', 'U', 'S', 'P', 'E', 'N', 'S', 'I', 'O', 'N',
+ 'T', 'A', 'B', 'U', 'L', 'A', 'T', 'I', 'O', 'N',
+ 'T', 'A', 'W', 'E', 'L', 'L', 'E', 'M', 'E', 'T',
+ 'T', 'E', 'R', 'M', 'I', 'N', 'A', 'T', 'O', 'R',
+ 'T', 'E', 'T', 'R', 'A', 'S', 'I', 'M', 'O', 'U',
+ 'T', 'H', 'I', 'R', 'T', 'Y', '-', 'O', 'N', 'E',
+ 'T', 'H', 'R', 'E', 'E', '-', 'L', 'I', 'N', 'E',
+ 'T', 'R', 'I', 'A', 'N', 'G', 'U', 'L', 'A', 'R',
+ 'T', 'R', 'I', 'F', 'O', 'L', 'I', 'A', 'T', 'E',
+ 'T', 'R', 'I', 'G', 'R', 'A', 'M', 'M', 'O', 'S',
+ 'T', 'R', 'O', 'E', 'Z', 'E', 'N', 'I', 'A', 'N',
+ 'T', 'R', 'O', 'K', 'U', 'T', 'A', 'S', 'T', 'I',
+ 'T', 'W', 'E', 'N', 'T', 'Y', '-', 'O', 'N', 'E',
+ 'T', 'W', 'E', 'N', 'T', 'Y', '-', 'S', 'I', 'X',
+ 'T', 'W', 'E', 'N', 'T', 'Y', '-', 'T', 'W', 'O',
+ 'T', 'W', 'O', '-', 'H', 'E', 'A', 'D', 'E', 'D',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', 'L', 'Y',
+ 'V', 'I', 'S', 'I', 'G', 'O', 'T', 'H', 'I', 'C',
+ 'W', 'H', 'E', 'E', 'L', 'C', 'H', 'A', 'I', 'R',
+ 'W', 'O', 'O', 'D', 'S', '-', 'C', 'R', 'E', 'E',
+ 'A', 'C', 'K', 'N', 'O', 'W', 'L', 'E', 'D', 'G', 'E',
+ 'A', 'E', 'S', 'C', 'U', 'L', 'A', 'P', 'I', 'U', 'S',
+ 'A', 'G', 'G', 'R', 'A', 'V', 'A', 'T', 'I', 'O', 'N',
+ 'A', 'L', 'T', 'E', 'R', 'N', 'A', 'T', 'I', 'O', 'N',
+ 'A', 'L', 'T', 'E', 'R', 'N', 'A', 'T', 'I', 'V', 'E',
+ 'A', 'P', 'P', 'L', 'I', 'C', 'A', 'T', 'I', 'O', 'N',
+ 'A', 'P', 'P', 'R', 'O', 'X', 'I', 'M', 'A', 'T', 'E',
+ 'B', 'A', 'C', 'K', '-', 'T', 'I', 'L', 'T', 'E', 'D',
+ 'C', 'A', 'N', 'D', 'R', 'A', 'B', 'I', 'N', 'D', 'U',
+ 'C', 'I', 'E', 'U', 'C', '-', 'I', 'E', 'U', 'N', 'G',
+ 'C', 'I', 'R', 'C', 'U', 'L', 'A', 'T', 'I', 'O', 'N',
+ 'C', 'L', 'U', 'B', '-', 'S', 'P', 'O', 'K', 'E', 'D',
+ 'C', 'O', 'M', 'P', 'O', 'S', 'I', 'T', 'I', 'O', 'N',
+ 'C', 'O', 'N', 'J', 'U', 'N', 'C', 'T', 'I', 'O', 'N',
+ 'C', 'O', 'N', 'S', 'E', 'C', 'U', 'T', 'I', 'V', 'E',
+ 'C', 'O', 'N', 'T', 'R', 'A', 'C', 'T', 'I', 'O', 'N',
+ 'C', 'O', 'N', 'T', 'R', 'A', 'R', 'I', 'E', 'T', 'Y',
+ 'C', 'O', 'R', 'P', 'O', 'R', 'A', 'T', 'I', 'O', 'N',
+ 'C', 'O', 'R', 'R', 'E', 'S', 'P', 'O', 'N', 'D', 'S',
+ 'C', 'O', 'U', 'N', 'T', 'E', 'R', 'B', 'O', 'R', 'E',
+ 'C', 'O', 'U', 'N', 'T', 'E', 'R', 'S', 'I', 'N', 'K',
+ 'D', 'A', 'H', 'Y', 'A', 'A', 'U', 'S', 'H', '-', '2',
+ 'D', 'E', 'C', 'R', 'E', 'S', 'C', 'E', 'N', 'D', 'O',
+ 'D', 'E', 'L', 'I', 'V', 'E', 'R', 'A', 'N', 'C', 'E',
+ 'D', 'E', 'N', 'O', 'M', 'I', 'N', 'A', 'T', 'O', 'R',
+ 'D', 'E', 'R', 'E', 'T', '-', 'H', 'I', 'D', 'E', 'T',
+ 'D', 'E', 'S', 'C', 'R', 'I', 'P', 'T', 'I', 'O', 'N',
+ 'D', 'E', 'V', 'E', 'L', 'O', 'P', 'M', 'E', 'N', 'T',
+ 'D', 'I', 'A', 'E', 'R', 'E', 'S', 'I', 'Z', 'E', 'D',
+ 'D', 'I', 'M', 'E', 'N', 'S', 'I', 'O', 'N', 'A', 'L',
+ 'D', 'I', 'R', 'E', 'C', 'T', 'I', 'O', 'N', 'A', 'L',
+ 'D', 'I', 'S', 'T', 'I', 'N', 'G', 'U', 'I', 'S', 'H',
+ 'D', 'O', 'A', 'C', 'H', 'A', 'S', 'H', 'M', 'E', 'E',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '4', '5', '6',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '4', '5', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '4', '5', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '4', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '4', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '4', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '5', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '5', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '5', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '4', '5', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '4', '5', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '4', '5', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '4', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '5', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '4', '5', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '4', '5', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '4', '5', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '4', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '5', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '4', '5', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '4', '5', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '4', '5', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '4', '5', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '4', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '5', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '4', '5', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '3', '4', '5', '6', '7', '8',
+ 'D', 'O', 'U', 'B', 'L', 'E', '-', 'L', 'I', 'N', 'E',
+ 'E', 'A', 'M', 'H', 'A', 'N', 'C', 'H', 'O', 'L', 'L',
+ 'E', 'K', 'F', 'O', 'N', 'I', 'T', 'I', 'K', 'O', 'N',
+ 'E', 'N', 'L', 'A', 'R', 'G', 'E', 'M', 'E', 'N', 'T',
+ 'E', 'Q', 'U', 'I', 'A', 'N', 'G', 'U', 'L', 'A', 'R',
+ 'E', 'X', 'C', 'L', 'A', 'M', 'A', 'T', 'I', 'O', 'N',
+ 'F', 'I', 'N', 'G', 'E', 'R', 'N', 'A', 'I', 'L', 'S',
+ 'F', 'O', 'U', 'R', '-', 'P', 'E', 'R', '-', 'E', 'M',
+ 'F', 'O', 'U', 'R', '-', 'S', 'T', 'R', 'I', 'N', 'G',
+ 'G', 'A', 'Y', 'A', 'N', 'U', 'K', 'I', 'T', 'T', 'A',
+ 'G', 'U', 'A', 'R', 'D', 'E', 'D', 'N', 'E', 'S', 'S',
+ 'H', 'A', 'U', 'P', 'T', 'S', 'T', 'I', 'M', 'M', 'E',
+ 'H', 'B', 'A', 'S', 'A', '-', 'E', 'S', 'A', 'S', 'A',
+ 'H', 'I', 'E', 'U', 'H', '-', 'M', 'I', 'E', 'U', 'M',
+ 'H', 'I', 'E', 'U', 'H', '-', 'N', 'I', 'E', 'U', 'N',
+ 'H', 'I', 'E', 'U', 'H', '-', 'P', 'I', 'E', 'U', 'P',
+ 'H', 'I', 'E', 'U', 'H', '-', 'R', 'I', 'E', 'U', 'L',
+ 'H', 'Y', 'P', 'H', 'E', 'N', 'A', 'T', 'I', 'O', 'N',
+ 'I', 'D', 'E', 'O', 'G', 'R', 'A', 'P', 'H', 'I', 'C',
+ 'I', 'E', 'U', 'N', 'G', '-', 'C', 'I', 'E', 'U', 'C',
+ 'I', 'E', 'U', 'N', 'G', '-', 'M', 'I', 'E', 'U', 'M',
+ 'I', 'E', 'U', 'N', 'G', '-', 'P', 'I', 'E', 'U', 'P',
+ 'I', 'M', 'P', 'E', 'R', 'F', 'E', 'C', 'T', 'U', 'M',
+ 'I', 'N', 'D', 'E', 'P', 'E', 'N', 'D', 'E', 'N', 'T',
+ 'I', 'N', 'F', 'O', 'R', 'M', 'A', 'T', 'I', 'O', 'N',
+ 'I', 'N', 'T', 'E', 'G', 'R', 'A', 'T', 'I', 'O', 'N',
+ 'I', 'N', 'T', 'E', 'R', 'C', 'A', 'L', 'A', 'T', 'E',
+ 'I', 'N', 'T', 'E', 'R', 'L', 'I', 'N', 'E', 'A', 'R',
+ 'I', 'N', 'T', 'E', 'R', 'L', 'O', 'C', 'K', 'E', 'D',
+ 'I', 'N', 'T', 'E', 'R', 'R', 'O', 'B', 'A', 'N', 'G',
+ 'J', 'I', 'H', 'V', 'A', 'M', 'U', 'L', 'I', 'Y', 'A',
+ 'K', 'I', 'R', 'O', 'M', 'E', 'E', 'T', 'O', 'R', 'U',
+ 'K', 'I', 'Y', 'E', 'O', 'K', '-', 'S', 'I', 'O', 'S',
+ 'L', 'A', 'K', 'K', 'H', 'A', 'N', 'G', 'Y', 'A', 'O',
+ 'L', 'E', 'F', 'T', '-', 'S', 'H', 'A', 'D', 'E', 'D',
+ 'M', 'A', 'H', 'A', 'A', 'P', 'R', 'A', 'A', 'N', 'A',
+ 'M', 'I', 'E', 'U', 'M', '-', 'H', 'I', 'E', 'U', 'H',
+ 'M', 'I', 'E', 'U', 'M', '-', 'P', 'I', 'E', 'U', 'P',
+ 'M', 'I', 'E', 'U', 'M', '-', 'R', 'I', 'E', 'U', 'L',
+ 'M', 'O', 'N', 'O', 'G', 'R', 'A', 'M', 'M', 'O', 'S',
+ 'M', 'U', 'L', 'T', 'I', 'O', 'C', 'U', 'L', 'A', 'R',
+ 'M', 'U', 'U', 'S', 'I', 'K', 'A', 'T', 'O', 'A', 'N',
+ 'N', 'A', 'A', 'K', 'S', 'I', 'K', 'Y', 'A', 'Y', 'A',
+ 'N', 'E', 'B', 'E', 'N', 'S', 'T', 'I', 'M', 'M', 'E',
+ 'N', 'I', 'E', 'U', 'N', '-', 'C', 'I', 'E', 'U', 'C',
+ 'N', 'I', 'E', 'U', 'N', '-', 'H', 'I', 'E', 'U', 'H',
+ 'N', 'I', 'E', 'U', 'N', '-', 'P', 'I', 'E', 'U', 'P',
+ 'O', 'B', 'S', 'T', 'R', 'U', 'C', 'T', 'I', 'O', 'N',
+ 'O', 'P', 'E', 'N', '-', 'H', 'E', 'A', 'D', 'E', 'D',
+ 'O', 'V', 'E', 'R', 'L', 'A', 'P', 'P', 'I', 'N', 'G',
+ 'P', 'A', 'L', 'A', 'T', 'A', 'L', 'I', 'Z', 'E', 'D',
+ 'P', 'A', 'R', 'A', 'G', 'R', 'A', 'P', 'H', 'O', 'S',
+ 'P', 'A', 'R', 'A', 'K', 'A', 'L', 'E', 'S', 'M', 'A',
+ 'P', 'A', 'R', 'A', 'K', 'L', 'I', 'T', 'I', 'K', 'I',
+ 'P', 'A', 'R', 'E', 'N', 'T', 'H', 'E', 'S', 'I', 'S',
+ 'P', 'A', 'R', 'T', 'N', 'E', 'R', 'S', 'H', 'I', 'P',
+ 'P', 'E', 'N', 'E', 'T', 'R', 'A', 'T', 'I', 'O', 'N',
+ 'P', 'E', 'R', 'I', 'S', 'P', 'O', 'M', 'E', 'N', 'I',
+ 'P', 'E', 'R', 'S', 'P', 'E', 'C', 'T', 'I', 'V', 'E',
+ 'P', 'I', 'E', 'U', 'P', '-', 'C', 'I', 'E', 'U', 'C',
+ 'P', 'I', 'E', 'U', 'P', '-', 'H', 'I', 'E', 'U', 'H',
+ 'P', 'I', 'E', 'U', 'P', '-', 'N', 'I', 'E', 'U', 'N',
+ 'P', 'I', 'E', 'U', 'P', '-', 'R', 'I', 'E', 'U', 'L',
+ 'P', 'U', 'N', 'C', 'T', 'U', 'A', 'T', 'I', 'O', 'N',
+ 'R', 'A', 'D', 'I', 'O', 'A', 'C', 'T', 'I', 'V', 'E',
+ 'R', 'A', 'H', 'M', 'A', 'T', 'U', 'L', 'L', 'A', 'H',
+ 'R', 'E', 'C', 'T', 'A', 'N', 'G', 'U', 'L', 'A', 'R',
+ 'R', 'E', 'C', 'T', 'I', 'L', 'I', 'N', 'E', 'A', 'R',
+ 'R', 'E', 'P', 'L', 'A', 'C', 'E', 'M', 'E', 'N', 'T',
+ 'R', 'I', 'E', 'U', 'L', '-', 'H', 'I', 'E', 'U', 'H',
+ 'R', 'I', 'E', 'U', 'L', '-', 'M', 'I', 'E', 'U', 'M',
+ 'R', 'I', 'E', 'U', 'L', '-', 'N', 'I', 'E', 'U', 'N',
+ 'R', 'I', 'E', 'U', 'L', '-', 'P', 'I', 'E', 'U', 'P',
+ 'R', 'I', 'N', 'F', 'O', 'R', 'Z', 'A', 'N', 'D', 'O',
+ 'S', 'A', 'C', 'R', 'I', 'F', 'I', 'C', 'I', 'A', 'L',
+ 'S', 'A', 'G', 'I', 'T', 'T', 'A', 'R', 'I', 'U', 'S',
+ 'S', 'A', 'L', 'L', 'A', 'L', 'L', 'A', 'H', 'O', 'U',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '3', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '3', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '3', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '3', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '3', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '3', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '3', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '3', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '3', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '3', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '4', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '4', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '4', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '4', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '4', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '4', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '4', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '4', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '4', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '4', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '5', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '5', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '5', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '5', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '5', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '5', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '5', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '5', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '5', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '5', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '6', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '6', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '6', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '6', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '6', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '6', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '6', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '6', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '6', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '6', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '7', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '7', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '7', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '7', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '7', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '7', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '7', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '7', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '7', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '7', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '8', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '8', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '8', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '8', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '8', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '8', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '8', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '8', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '8', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '8', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '9', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '9', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '9', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '9', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '9', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '9', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '9', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '9', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '9', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '9', '9',
+ 'S', 'E', 'M', 'I', '-', 'V', 'O', 'I', 'C', 'E', 'D',
+ 'S', 'E', 'M', 'I', 'S', 'E', 'X', 'T', 'I', 'L', 'E',
+ 'S', 'I', 'N', 'G', 'L', 'E', '-', 'L', 'I', 'N', 'E',
+ 'S', 'I', 'O', 'S', '-', 'K', 'I', 'Y', 'E', 'O', 'K',
+ 'S', 'I', 'O', 'S', '-', 'T', 'I', 'K', 'E', 'U', 'T',
+ 'S', 'S', 'A', 'N', 'G', 'K', 'I', 'Y', 'E', 'O', 'K',
+ 'S', 'S', 'A', 'N', 'G', 'T', 'I', 'K', 'E', 'U', 'T',
+ 'S', 'U', 'P', 'E', 'R', 'S', 'C', 'R', 'I', 'P', 'T',
+ 'S', 'U', 'P', 'R', 'A', 'L', 'I', 'N', 'E', 'A', 'R',
+ 'S', 'Y', 'N', 'C', 'H', 'R', 'O', 'N', 'O', 'U', 'S',
+ 'T', 'E', 'T', 'R', 'A', 'F', 'O', 'N', 'I', 'A', 'S',
+ 'T', 'H', 'A', 'N', 'T', 'H', 'A', 'K', 'H', 'A', 'T',
+ 'T', 'H', 'E', 'M', 'A', 'T', 'I', 'S', 'M', 'O', 'S',
+ 'T', 'O', 'A', 'N', 'D', 'A', 'K', 'H', 'I', 'A', 'T',
+ 'T', 'O', 'P', '-', 'L', 'I', 'G', 'H', 'T', 'E', 'D',
+ 'T', 'R', 'A', 'N', 'S', 'V', 'E', 'R', 'S', 'A', 'L',
+ 'T', 'R', 'I', 'T', 'I', 'M', 'O', 'R', 'I', 'O', 'N',
+ 'T', 'W', 'E', 'N', 'T', 'Y', '-', 'F', 'I', 'V', 'E',
+ 'T', 'W', 'E', 'N', 'T', 'Y', '-', 'F', 'O', 'U', 'R',
+ 'T', 'W', 'E', 'N', 'T', 'Y', '-', 'N', 'I', 'N', 'E',
+ 'U', 'N', 'A', 'S', 'P', 'I', 'R', 'A', 'T', 'E', 'D',
+ 'U', 'P', '-', 'P', 'O', 'I', 'N', 'T', 'I', 'N', 'G',
+ 'U', 'P', 'A', 'D', 'H', 'M', 'A', 'N', 'I', 'Y', 'A',
+ 'W', 'I', 'D', 'E', '-', 'H', 'E', 'A', 'D', 'E', 'D',
+ 'Y', 'E', 'O', 'R', 'I', 'N', 'H', 'I', 'E', 'U', 'H',
+ 'A', 'B', 'B', 'R', 'E', 'V', 'I', 'A', 'T', 'I', 'O', 'N',
+ 'A', 'C', 'C', 'U', 'M', 'U', 'L', 'A', 'T', 'I', 'O', 'N',
+ 'A', 'C', 'U', 'T', 'E', '-', 'M', 'A', 'C', 'R', 'O', 'N',
+ 'A', 'K', 'T', 'I', 'E', 'S', 'E', 'L', 'S', 'K', 'A', 'B',
+ 'A', 'M', 'A', 'L', 'G', 'A', 'M', 'A', 'T', 'I', 'O', 'N',
+ 'A', 'N', 'A', 'T', 'R', 'I', 'C', 'H', 'I', 'S', 'M', 'A',
+ 'A', 'R', 'A', 'B', 'I', 'C', '-', 'I', 'N', 'D', 'I', 'C',
+ 'A', 'S', 'T', 'R', 'O', 'L', 'O', 'G', 'I', 'C', 'A', 'L',
+ 'A', 'U', 'G', 'M', 'E', 'N', 'T', 'A', 'T', 'I', 'O', 'N',
+ 'A', 'U', 'R', 'A', 'M', 'A', 'Z', 'D', 'A', 'A', '-', '2',
+ 'A', 'U', 'R', 'A', 'M', 'A', 'Z', 'D', 'A', 'A', 'H', 'A',
+ 'B', 'L', 'A', 'C', 'K', '-', 'L', 'E', 'T', 'T', 'E', 'R',
+ 'B', 'R', 'E', 'A', 'K', 'T', 'H', 'R', 'O', 'U', 'G', 'H',
+ 'B', 'R', 'E', 'V', 'E', '-', 'M', 'A', 'C', 'R', 'O', 'N',
+ 'C', '-', 'S', 'I', 'M', 'P', 'L', 'I', 'F', 'I', 'E', 'D',
+ 'C', 'A', 'N', 'C', 'E', 'L', 'L', 'A', 'T', 'I', 'O', 'N',
+ 'C', 'A', 'N', 'T', 'I', 'L', 'L', 'A', 'T', 'I', 'O', 'N',
+ 'C', 'H', 'I', 'T', 'U', 'E', 'U', 'M', 'S', 'I', 'O', 'S',
+ 'C', 'R', 'O', 'S', 'S', 'E', 'D', '-', 'T', 'A', 'I', 'L',
+ 'C', 'Y', 'L', 'I', 'N', 'D', 'R', 'I', 'C', 'I', 'T', 'Y',
+ 'D', 'E', 'C', 'I', 'S', 'I', 'V', 'E', 'N', 'E', 'S', 'S',
+ 'D', 'I', 'F', 'F', 'E', 'R', 'E', 'N', 'T', 'I', 'A', 'L',
+ 'D', 'I', 'F', 'F', 'I', 'C', 'U', 'L', 'T', 'I', 'E', 'S',
+ 'D', 'I', 'M', 'I', 'N', 'I', 'S', 'H', 'M', 'E', 'N', 'T',
+ 'D', 'I', 'M', 'I', 'N', 'U', 'T', 'I', 'O', 'N', '-', '1',
+ 'D', 'I', 'M', 'I', 'N', 'U', 'T', 'I', 'O', 'N', '-', '2',
+ 'D', 'I', 'M', 'I', 'N', 'U', 'T', 'I', 'O', 'N', '-', '3',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '4', '5', '6', '7',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '4', '5', '6', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '4', '5', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '4', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '5', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '4', '5', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '1', '3', '4', '5', '6', '7', '8',
+ 'D', 'O', 'T', 'S', '-', '2', '3', '4', '5', '6', '7', '8',
+ 'D', 'O', 'U', 'B', 'L', 'E', '-', 'E', 'N', 'D', 'E', 'D',
+ 'E', 'R', 'R', 'O', 'R', '-', 'B', 'A', 'R', 'R', 'E', 'D',
+ 'F', 'L', 'E', 'U', 'R', '-', 'D', 'E', '-', 'L', 'I', 'S',
+ 'F', 'R', 'O', 'N', 'T', '-', 'T', 'I', 'L', 'T', 'E', 'D',
+ 'G', 'A', 'E', 'T', 'T', 'A', '-', 'P', 'I', 'L', 'L', 'A',
+ 'G', 'R', 'A', 'V', 'E', '-', 'M', 'A', 'C', 'R', 'O', 'N',
+ 'G', 'R', 'E', 'A', 'T', 'E', 'R', '-', 'T', 'H', 'A', 'N',
+ 'G', 'R', 'O', 'N', 'T', 'H', 'I', 'S', 'M', 'A', 'T', 'A',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', 'L', 'Y',
+ 'H', 'Y', 'P', 'H', 'E', 'N', '-', 'M', 'I', 'N', 'U', 'S',
+ 'H', 'Y', 'P', 'O', 'D', 'I', 'A', 'S', 'T', 'O', 'L', 'E',
+ 'I', 'C', 'E', 'L', 'A', 'N', 'D', 'I', 'C', '-', 'Y', 'R',
+ 'I', 'E', 'U', 'N', 'G', '-', 'K', 'I', 'Y', 'E', 'O', 'K',
+ 'I', 'E', 'U', 'N', 'G', '-', 'T', 'I', 'K', 'E', 'U', 'T',
+ 'I', 'N', 'S', 'T', 'R', 'U', 'M', 'E', 'N', 'T', 'A', 'L',
+ 'I', 'N', 'T', 'E', 'R', 'S', 'E', 'C', 'T', 'I', 'N', 'G',
+ 'I', 'N', 'T', 'E', 'R', 'S', 'E', 'C', 'T', 'I', 'O', 'N',
+ 'J', '-', 'S', 'I', 'M', 'P', 'L', 'I', 'F', 'I', 'E', 'D',
+ 'K', 'I', 'Y', 'E', 'O', 'K', '-', 'R', 'I', 'E', 'U', 'L',
+ 'M', 'A', 'C', 'R', 'O', 'N', '-', 'A', 'C', 'U', 'T', 'E',
+ 'M', 'A', 'C', 'R', 'O', 'N', '-', 'B', 'R', 'E', 'V', 'E',
+ 'M', 'A', 'C', 'R', 'O', 'N', '-', 'G', 'R', 'A', 'V', 'E',
+ 'M', 'A', 'T', 'H', 'E', 'M', 'A', 'T', 'I', 'C', 'A', 'L',
+ 'M', 'I', 'D', 'D', 'L', 'E', '-', 'W', 'E', 'L', 'S', 'H',
+ 'M', 'I', 'E', 'U', 'M', '-', 'K', 'I', 'Y', 'E', 'O', 'K',
+ 'N', 'A', 'S', 'A', 'L', 'I', 'Z', 'A', 'T', 'I', 'O', 'N',
+ 'N', 'I', 'E', 'U', 'N', '-', 'K', 'I', 'Y', 'E', 'O', 'K',
+ 'N', 'I', 'E', 'U', 'N', '-', 'T', 'I', 'K', 'E', 'U', 'T',
+ 'N', 'O', 'N', '-', 'B', 'R', 'E', 'A', 'K', 'I', 'N', 'G',
+ 'P', 'I', 'E', 'U', 'P', '-', 'K', 'I', 'Y', 'E', 'O', 'K',
+ 'P', 'I', 'E', 'U', 'P', '-', 'T', 'I', 'K', 'E', 'U', 'T',
+ 'P', 'O', 'S', 'T', 'P', 'O', 'S', 'I', 'T', 'I', 'O', 'N',
+ 'P', 'R', 'E', 'S', 'C', 'R', 'I', 'P', 'T', 'I', 'O', 'N',
+ 'P', 'R', 'E', 'S', 'E', 'N', 'T', 'A', 'T', 'I', 'O', 'N',
+ 'P', 'R', 'O', 'P', 'O', 'R', 'T', 'I', 'O', 'N', 'A', 'L',
+ 'Q', 'U', 'I', 'N', 'D', 'I', 'C', 'E', 'S', 'I', 'M', 'A',
+ 'R', 'I', 'E', 'U', 'L', '-', 'K', 'I', 'Y', 'E', 'O', 'K',
+ 'R', 'I', 'E', 'U', 'L', '-', 'T', 'I', 'K', 'E', 'U', 'T',
+ 'R', 'I', 'G', 'H', 'T', '-', 'S', 'H', 'A', 'D', 'E', 'D',
+ 'R', 'O', 'U', 'N', 'D', '-', 'T', 'I', 'P', 'P', 'E', 'D',
+ 'R', 'U', 'L', 'E', '-', 'D', 'E', 'L', 'A', 'Y', 'E', 'D',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '0', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '0', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '0', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '0', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '0', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '0', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '0', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '0', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '0', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '0', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '1', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '1', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '1', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '1', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '1', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '1', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '1', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '1', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '1', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '1', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '2', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '2', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '2', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '2', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '2', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '2', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '2', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '2', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '2', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '2', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '3', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '3', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '3', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '3', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '3', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '3', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '3', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '3', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '3', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '3', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '4', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '4', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '4', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '4', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '4', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '4', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '4', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '4', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '4', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '4', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '5', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '5', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '5', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '5', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '5', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '5', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '5', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '5', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '5', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '5', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '6', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '6', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '6', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '6', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '6', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '6', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '6', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '6', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '6', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '6', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '7', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '7', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '7', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '7', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '7', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '7', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '7', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '7', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '7', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '7', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '8', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '8', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '8', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '8', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '8', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '8', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '8', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '8', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '8', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '8', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '9', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '9', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '9', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '9', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '9', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '9', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '9', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '9', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '9', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '1', '9', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '0', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '0', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '0', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '0', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '0', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '0', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '0', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '0', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '0', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '0', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '1', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '1', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '1', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '1', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '1', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '1', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '1', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '1', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '1', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '1', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '2', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '2', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '2', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '2', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '2', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '2', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '2', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '2', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '2', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '2', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '3', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '3', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '3', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '3', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '3', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '3', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '3', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '3', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '3', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '3', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '4', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '4', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '4', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '4', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '4', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '4', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '4', '6',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '4', '7',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '4', '8',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '4', '9',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '5', '0',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '5', '1',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '5', '2',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '5', '3',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '5', '4',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '5', '5',
+ 'S', 'E', 'L', 'E', 'C', 'T', 'O', 'R', '-', '2', '5', '6',
+ 'S', 'E', 'M', 'I', 'C', 'I', 'R', 'C', 'U', 'L', 'A', 'R',
+ 'S', 'I', 'O', 'S', '-', 'C', 'H', 'I', 'E', 'U', 'C', 'H',
+ 'S', 'I', 'O', 'S', '-', 'K', 'H', 'I', 'E', 'U', 'K', 'H',
+ 'S', 'I', 'O', 'S', '-', 'P', 'H', 'I', 'E', 'U', 'P', 'H',
+ 'S', 'I', 'O', 'S', '-', 'T', 'H', 'I', 'E', 'U', 'T', 'H',
+ 'S', 'I', 'X', 'T', 'Y', '-', 'F', 'O', 'U', 'R', 'T', 'H',
+ 'S', 'O', 'U', 'T', 'H', '-', 'S', 'L', 'A', 'V', 'E', 'Y',
+ 'S', 'P', 'R', 'E', 'C', 'H', 'G', 'E', 'S', 'A', 'N', 'G',
+ 'S', 'T', 'R', 'A', 'G', 'G', 'I', 'S', 'M', 'A', 'T', 'A',
+ 'S', 'T', 'R', 'A', 'I', 'G', 'H', 'T', 'N', 'E', 'S', 'S',
+ 'S', 'U', 'B', 'S', 'T', 'I', 'T', 'U', 'T', 'I', 'O', 'N',
+ 'S', 'U', 'P', 'E', 'R', 'I', 'M', 'P', 'O', 'S', 'E', 'D',
+ 'T', 'H', 'R', 'E', 'E', '-', 'P', 'E', 'R', '-', 'E', 'M',
+ 'T', 'H', 'U', 'N', 'D', 'E', 'R', 'S', 'T', 'O', 'R', 'M',
+ 'T', 'I', 'K', 'E', 'U', 'T', '-', 'R', 'I', 'E', 'U', 'L',
+ 'T', 'R', 'A', 'N', 'S', 'M', 'I', 'S', 'S', 'I', 'O', 'N',
+ 'T', 'W', 'E', 'N', 'T', 'Y', '-', 'E', 'I', 'G', 'H', 'T',
+ 'T', 'W', 'E', 'N', 'T', 'Y', '-', 'S', 'E', 'V', 'E', 'N',
+ 'T', 'W', 'E', 'N', 'T', 'Y', '-', 'T', 'H', 'R', 'E', 'E',
+ 'W', 'E', 'D', 'G', 'E', '-', 'T', 'A', 'I', 'L', 'E', 'D',
+ 'X', 'S', 'H', 'A', 'A', 'Y', 'A', 'T', 'H', 'I', 'Y', 'A',
+ 'Y', 'O', 'U', 'T', 'H', 'F', 'U', 'L', 'N', 'E', 'S', 'S',
+ 'A', 'N', 'T', 'I', 'C', 'L', 'O', 'C', 'K', 'W', 'I', 'S', 'E',
+ 'A', 'P', 'P', 'R', 'O', 'X', 'I', 'M', 'A', 'T', 'E', 'L', 'Y',
+ 'A', 'R', 'G', 'O', 'S', 'Y', 'N', 'T', 'H', 'E', 'T', 'O', 'N',
+ 'A', 'V', 'A', 'K', 'R', 'A', 'H', 'A', 'S', 'A', 'N', 'Y', 'A',
+ 'C', 'H', 'I', 'E', 'U', 'C', 'H', '-', 'H', 'I', 'E', 'U', 'H',
+ 'C', 'H', 'I', 'T', 'U', 'E', 'U', 'M', 'C', 'I', 'E', 'U', 'C',
+ 'C', 'H', 'R', 'Y', 'S', 'A', 'N', 'T', 'H', 'E', 'M', 'U', 'M',
+ 'C', 'O', 'M', 'P', 'A', 'T', 'I', 'B', 'I', 'L', 'I', 'T', 'Y',
+ 'C', 'O', 'N', 'C', 'A', 'V', 'E', '-', 'S', 'I', 'D', 'E', 'D',
+ 'C', 'O', 'N', 'T', 'E', 'M', 'P', 'L', 'A', 'T', 'I', 'O', 'N',
+ 'C', 'R', 'Y', 'P', 'T', 'O', 'G', 'R', 'A', 'M', 'M', 'I', 'C',
+ 'D', 'E', 'F', 'E', 'C', 'T', 'I', 'V', 'E', 'N', 'E', 'S', 'S',
+ 'D', 'I', 'S', 'C', 'O', 'N', 'T', 'I', 'N', 'U', 'O', 'U', 'S',
+ 'D', 'O', 'T', 'S', '-', '1', '2', '3', '4', '5', '6', '7', '8',
+ 'D', 'O', 'U', 'B', 'L', 'E', '-', 'S', 'T', 'R', 'U', 'C', 'K',
+ 'D', 'O', 'W', 'N', '-', 'P', 'O', 'I', 'N', 'T', 'I', 'N', 'G',
+ 'D', 'R', 'O', 'P', '-', 'S', 'H', 'A', 'D', 'O', 'W', 'E', 'D',
+ 'E', 'G', 'Y', 'P', 'T', 'O', 'L', 'O', 'G', 'I', 'C', 'A', 'L',
+ 'E', 'M', 'B', 'E', 'L', 'L', 'I', 'S', 'H', 'M', 'E', 'N', 'T',
+ 'E', 'U', 'R', 'O', '-', 'C', 'U', 'R', 'R', 'E', 'N', 'C', 'Y',
+ 'G', 'E', 'O', 'M', 'E', 'T', 'R', 'I', 'C', 'A', 'L', 'L', 'Y',
+ 'I', 'E', 'U', 'N', 'G', '-', 'C', 'H', 'I', 'E', 'U', 'C', 'H',
+ 'I', 'E', 'U', 'N', 'G', '-', 'K', 'H', 'I', 'E', 'U', 'K', 'H',
+ 'I', 'E', 'U', 'N', 'G', '-', 'P', 'A', 'N', 'S', 'I', 'O', 'S',
+ 'I', 'E', 'U', 'N', 'G', '-', 'P', 'H', 'I', 'E', 'U', 'P', 'H',
+ 'I', 'E', 'U', 'N', 'G', '-', 'T', 'H', 'I', 'E', 'U', 'T', 'H',
+ 'I', 'N', 'T', 'E', 'R', 'P', 'O', 'L', 'A', 'T', 'I', 'O', 'N',
+ 'I', 'N', 'T', 'E', 'R', 'S', 'Y', 'L', 'L', 'A', 'B', 'I', 'C',
+ 'J', 'U', 'D', 'E', 'O', '-', 'S', 'P', 'A', 'N', 'I', 'S', 'H',
+ 'K', 'A', 'P', 'Y', 'E', 'O', 'U', 'N', 'M', 'I', 'E', 'U', 'M',
+ 'K', 'A', 'P', 'Y', 'E', 'O', 'U', 'N', 'P', 'I', 'E', 'U', 'P',
+ 'K', 'A', 'P', 'Y', 'E', 'O', 'U', 'N', 'R', 'I', 'E', 'U', 'L',
+ 'L', 'A', 'B', 'I', 'A', 'L', 'I', 'Z', 'A', 'T', 'I', 'O', 'N',
+ 'L', 'E', 'F', 'T', '-', 'P', 'O', 'I', 'N', 'T', 'I', 'N', 'G',
+ 'L', 'E', 'F', 'T', '-', 'T', 'O', '-', 'R', 'I', 'G', 'H', 'T',
+ 'M', 'I', 'E', 'U', 'M', '-', 'C', 'H', 'I', 'E', 'U', 'C', 'H',
+ 'M', 'I', 'E', 'U', 'M', '-', 'P', 'A', 'N', 'S', 'I', 'O', 'S',
+ 'M', 'I', 'N', 'U', 'S', '-', 'O', 'R', '-', 'P', 'L', 'U', 'S',
+ 'M', 'O', 'R', 'P', 'H', 'O', 'L', 'O', 'G', 'I', 'C', 'A', 'L',
+ 'N', 'I', 'E', 'U', 'N', '-', 'P', 'A', 'N', 'S', 'I', 'O', 'S',
+ 'N', 'I', 'E', 'U', 'N', '-', 'T', 'H', 'I', 'E', 'U', 'T', 'H',
+ 'O', 'P', 'E', 'N', '-', 'O', 'U', 'T', 'L', 'I', 'N', 'E', 'D',
+ 'P', 'A', 'R', 'A', 'L', 'L', 'E', 'L', 'O', 'G', 'R', 'A', 'M',
+ 'P', 'A', 'R', 'E', 'N', 'T', 'H', 'E', 'S', 'I', 'Z', 'E', 'D',
+ 'P', 'A', 'R', 'E', 'S', 'T', 'I', 'G', 'M', 'E', 'N', 'O', 'N',
+ 'P', 'E', 'R', 'P', 'E', 'N', 'D', 'I', 'C', 'U', 'L', 'A', 'R',
+ 'P', 'H', 'I', 'E', 'U', 'P', 'H', '-', 'P', 'I', 'E', 'U', 'P',
+ 'P', 'I', 'E', 'U', 'P', '-', 'C', 'H', 'I', 'E', 'U', 'C', 'H',
+ 'P', 'I', 'E', 'U', 'P', '-', 'P', 'H', 'I', 'E', 'U', 'P', 'H',
+ 'P', 'I', 'E', 'U', 'P', '-', 'T', 'H', 'I', 'E', 'U', 'T', 'H',
+ 'P', 'R', 'E', 'P', 'O', 'N', 'D', 'E', 'R', 'A', 'N', 'C', 'E',
+ 'R', 'I', 'E', 'U', 'L', '-', 'K', 'H', 'I', 'E', 'U', 'K', 'H',
+ 'R', 'I', 'E', 'U', 'L', '-', 'P', 'A', 'N', 'S', 'I', 'O', 'S',
+ 'R', 'I', 'E', 'U', 'L', '-', 'P', 'H', 'I', 'E', 'U', 'P', 'H',
+ 'R', 'I', 'E', 'U', 'L', '-', 'T', 'H', 'I', 'E', 'U', 'T', 'H',
+ 'R', 'I', 'G', 'H', 'T', '-', 'T', 'O', '-', 'L', 'E', 'F', 'T',
+ 'S', 'H', 'O', 'R', 'T', '-', 'T', 'W', 'I', 'G', '-', 'A', 'R',
+ 'S', 'H', 'O', 'R', 'T', '-', 'T', 'W', 'I', 'G', '-', 'Y', 'R',
+ 'S', 'T', 'A', 'C', 'C', 'A', 'T', 'I', 'S', 'S', 'I', 'M', 'O',
+ 'S', 'T', 'R', 'I', 'K', 'E', 'T', 'H', 'R', 'O', 'U', 'G', 'H',
+ 'T', 'E', 'T', 'A', 'R', 'T', 'I', 'M', 'O', 'R', 'I', 'O', 'N',
+ 'T', 'H', 'E', 'R', 'M', 'O', 'D', 'Y', 'N', 'A', 'M', 'I', 'C',
+ 'T', 'H', 'I', 'R', 'T', 'Y', '-', 'S', 'E', 'C', 'O', 'N', 'D',
+ 'T', 'I', 'K', 'E', 'U', 'T', '-', 'K', 'I', 'Y', 'E', 'O', 'K',
+ 'T', 'R', 'A', 'N', 'S', 'P', 'O', 'S', 'I', 'T', 'I', 'O', 'N',
+ 'T', 'W', 'E', 'N', 'T', 'Y', '-', 'E', 'I', 'G', 'H', 'T', 'H',
+ 'V', 'O', 'W', 'E', 'L', '-', 'C', 'A', 'R', 'R', 'I', 'E', 'R',
+ 'Y', 'E', 'S', 'I', 'E', 'U', 'N', 'G', '-', 'S', 'I', 'O', 'S',
+ 'Y', 'P', 'O', 'G', 'E', 'G', 'R', 'A', 'M', 'M', 'E', 'N', 'I',
+ 'Y', 'U', 'U', 'K', 'A', 'L', 'E', 'A', 'P', 'I', 'N', 'T', 'U',
+ 'A', 'F', 'O', 'R', 'E', 'M', 'E', 'N', 'T', 'I', 'O', 'N', 'E', 'D',
+ 'A', 'R', 'O', 'U', 'N', 'D', '-', 'P', 'R', 'O', 'F', 'I', 'L', 'E',
+ 'A', 'S', 'Y', 'M', 'P', 'T', 'O', 'T', 'I', 'C', 'A', 'L', 'L', 'Y',
+ 'B', 'A', 'L', 'L', 'O', 'O', 'N', '-', 'S', 'P', 'O', 'K', 'E', 'D',
+ 'B', 'O', 'T', 'T', 'O', 'M', '-', 'L', 'I', 'G', 'H', 'T', 'E', 'D',
+ 'C', 'O', 'N', 'G', 'R', 'A', 'T', 'U', 'L', 'A', 'T', 'I', 'O', 'N',
+ 'G', 'O', 'R', 'G', 'O', 'S', 'Y', 'N', 'T', 'H', 'E', 'T', 'O', 'N',
+ 'I', 'D', 'E', 'N', 'T', 'I', 'F', 'I', 'C', 'A', 'T', 'I', 'O', 'N',
+ 'L', 'O', 'N', 'G', '-', 'B', 'R', 'A', 'N', 'C', 'H', '-', 'A', 'R',
+ 'L', 'O', 'N', 'G', '-', 'B', 'R', 'A', 'N', 'C', 'H', '-', 'Y', 'R',
+ 'M', 'U', 'L', 'T', 'I', 'P', 'L', 'I', 'C', 'A', 'T', 'I', 'O', 'N',
+ 'P', 'A', 'L', 'A', 'T', 'A', 'L', 'I', 'Z', 'A', 'T', 'I', 'O', 'N',
+ 'P', 'R', 'O', 'S', 'G', 'E', 'G', 'R', 'A', 'M', 'M', 'E', 'N', 'I',
+ 'R', 'I', 'G', 'H', 'T', '-', 'P', 'O', 'I', 'N', 'T', 'I', 'N', 'G',
+ 'R', 'I', 'G', 'H', 'T', '-', 'S', 'H', 'A', 'D', 'O', 'W', 'E', 'D',
+ 'S', 'E', 'S', 'Q', 'U', 'I', 'Q', 'U', 'A', 'D', 'R', 'A', 'T', 'E',
+ 'S', 'H', 'O', 'R', 'T', '-', 'T', 'W', 'I', 'G', '-', 'O', 'S', 'S',
+ 'S', 'H', 'O', 'R', 'T', '-', 'T', 'W', 'I', 'G', '-', 'S', 'O', 'L',
+ 'S', 'H', 'O', 'R', 'T', '-', 'T', 'W', 'I', 'G', '-', 'T', 'Y', 'R',
+ 'S', 'I', 'O', 'S', '-', 'S', 'S', 'A', 'N', 'G', 'S', 'I', 'O', 'S',
+ 'T', 'R', 'I', 'A', 'N', 'G', 'L', 'E', '-', 'R', 'O', 'U', 'N', 'D',
+ 'T', 'R', 'O', 'M', 'I', 'K', 'O', 'L', 'Y', 'G', 'I', 'S', 'M', 'A',
+ 'T', 'R', 'O', 'M', 'I', 'K', 'O', 'S', 'Y', 'N', 'A', 'G', 'M', 'A',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '0', '-', '0', '0',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '0', '-', '0', '1',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '0', '-', '0', '2',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '0', '-', '0', '3',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '0', '-', '0', '4',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '0', '-', '0', '5',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '0', '-', '0', '6',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '1', '-', '0', '0',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '1', '-', '0', '1',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '1', '-', '0', '2',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '1', '-', '0', '3',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '1', '-', '0', '4',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '1', '-', '0', '5',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '1', '-', '0', '6',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '2', '-', '0', '0',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '2', '-', '0', '1',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '2', '-', '0', '2',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '2', '-', '0', '3',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '2', '-', '0', '4',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '2', '-', '0', '5',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '2', '-', '0', '6',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '3', '-', '0', '0',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '3', '-', '0', '1',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '3', '-', '0', '2',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '3', '-', '0', '3',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '3', '-', '0', '4',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '3', '-', '0', '5',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '3', '-', '0', '6',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '4', '-', '0', '0',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '4', '-', '0', '1',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '4', '-', '0', '2',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '4', '-', '0', '3',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '4', '-', '0', '4',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '4', '-', '0', '5',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '4', '-', '0', '6',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '5', '-', '0', '0',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '5', '-', '0', '1',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '5', '-', '0', '2',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '5', '-', '0', '3',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '5', '-', '0', '4',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '5', '-', '0', '5',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '5', '-', '0', '6',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '6', '-', '0', '0',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '6', '-', '0', '1',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '6', '-', '0', '2',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '6', '-', '0', '3',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '6', '-', '0', '4',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '6', '-', '0', '5',
+ 'V', 'E', 'R', 'T', 'I', 'C', 'A', 'L', '-', '0', '6', '-', '0', '6',
+ 'A', 'C', 'C', 'E', 'N', 'T', '-', 'S', 'T', 'A', 'C', 'C', 'A', 'T', 'O',
+ 'A', 'N', 'T', 'I', 'K', 'E', 'N', 'O', 'K', 'Y', 'L', 'I', 'S', 'M', 'A',
+ 'A', 'N', 'T', 'I', 'R', 'E', 'S', 'T', 'R', 'I', 'C', 'T', 'I', 'O', 'N',
+ 'B', 'L', 'A', 'C', 'K', '-', 'F', 'E', 'A', 'T', 'H', 'E', 'R', 'E', 'D',
+ 'C', 'E', 'O', 'N', 'G', 'C', 'H', 'I', 'E', 'U', 'M', 'S', 'I', 'O', 'S',
+ 'C', 'H', 'I', 'E', 'U', 'C', 'H', '-', 'K', 'H', 'I', 'E', 'U', 'K', 'H',
+ 'C', 'H', 'I', 'T', 'U', 'E', 'U', 'M', 'C', 'H', 'I', 'E', 'U', 'C', 'H',
+ 'C', 'O', 'N', 'C', 'A', 'V', 'E', '-', 'P', 'O', 'I', 'N', 'T', 'E', 'D',
+ 'H', 'I', 'G', 'H', '-', 'R', 'E', 'V', 'E', 'R', 'S', 'E', 'D', '-', '9',
+ 'J', 'A', 'L', 'L', 'A', 'J', 'A', 'L', 'A', 'L', 'O', 'U', 'H', 'O', 'U',
+ 'K', 'A', 'P', 'Y', 'E', 'O', 'U', 'N', 'P', 'H', 'I', 'E', 'U', 'P', 'H',
+ 'K', 'R', 'A', 'T', 'I', 'M', 'O', 'K', 'O', 'U', 'F', 'I', 'S', 'M', 'A',
+ 'K', 'R', 'A', 'T', 'I', 'M', 'O', 'Y', 'P', 'O', 'R', 'R', 'O', 'O', 'N',
+ 'L', 'O', 'N', 'G', '-', 'B', 'R', 'A', 'N', 'C', 'H', '-', 'O', 'S', 'S',
+ 'L', 'O', 'N', 'G', '-', 'B', 'R', 'A', 'N', 'C', 'H', '-', 'S', 'O', 'L',
+ 'M', 'I', 'E', 'U', 'M', '-', 'S', 'S', 'A', 'N', 'G', 'S', 'I', 'O', 'S',
+ 'P', 'E', 'T', 'A', 'S', 'T', 'O', 'K', 'O', 'U', 'F', 'I', 'S', 'M', 'A',
+ 'P', 'I', 'E', 'U', 'P', '-', 'S', 'S', 'A', 'N', 'G', 'S', 'I', 'O', 'S',
+ 'P', 'S', 'I', 'F', 'I', 'S', 'T', 'O', 'L', 'Y', 'G', 'I', 'S', 'M', 'A',
+ 'P', 'S', 'I', 'F', 'I', 'S', 'T', 'O', 'S', 'Y', 'N', 'A', 'G', 'M', 'A',
+ 'R', 'I', 'E', 'U', 'L', '-', 'S', 'S', 'A', 'N', 'G', 'S', 'I', 'O', 'S',
+ 'S', 'H', 'O', 'R', 'T', '-', 'T', 'W', 'I', 'G', '-', 'M', 'A', 'D', 'R',
+ 'S', 'H', 'O', 'R', 'T', '-', 'T', 'W', 'I', 'G', '-', 'N', 'A', 'U', 'D',
+ 'T', 'E', 'A', 'R', 'D', 'R', 'O', 'P', '-', 'B', 'A', 'R', 'B', 'E', 'D',
+ 'T', 'E', 'A', 'R', 'D', 'R', 'O', 'P', '-', 'S', 'P', 'O', 'K', 'E', 'D',
+ 'T', 'R', 'I', 'A', 'N', 'G', 'L', 'E', '-', 'H', 'E', 'A', 'D', 'E', 'D',
+ 'W', 'H', 'I', 'T', 'E', '-', 'F', 'E', 'A', 'T', 'H', 'E', 'R', 'E', 'D',
+ 'C', 'E', 'O', 'N', 'G', 'C', 'H', 'I', 'E', 'U', 'M', 'C', 'I', 'E', 'U', 'C',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '0', '-', '0', '0',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '0', '-', '0', '1',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '0', '-', '0', '2',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '0', '-', '0', '3',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '0', '-', '0', '4',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '0', '-', '0', '5',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '0', '-', '0', '6',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '1', '-', '0', '0',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '1', '-', '0', '1',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '1', '-', '0', '2',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '1', '-', '0', '3',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '1', '-', '0', '4',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '1', '-', '0', '5',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '1', '-', '0', '6',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '2', '-', '0', '0',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '2', '-', '0', '1',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '2', '-', '0', '2',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '2', '-', '0', '3',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '2', '-', '0', '4',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '2', '-', '0', '5',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '2', '-', '0', '6',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '3', '-', '0', '0',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '3', '-', '0', '1',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '3', '-', '0', '2',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '3', '-', '0', '3',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '3', '-', '0', '4',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '3', '-', '0', '5',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '3', '-', '0', '6',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '4', '-', '0', '0',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '4', '-', '0', '1',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '4', '-', '0', '2',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '4', '-', '0', '3',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '4', '-', '0', '4',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '4', '-', '0', '5',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '4', '-', '0', '6',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '5', '-', '0', '0',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '5', '-', '0', '1',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '5', '-', '0', '2',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '5', '-', '0', '3',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '5', '-', '0', '4',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '5', '-', '0', '5',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '5', '-', '0', '6',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '6', '-', '0', '0',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '6', '-', '0', '1',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '6', '-', '0', '2',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '6', '-', '0', '3',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '6', '-', '0', '4',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '6', '-', '0', '5',
+ 'H', 'O', 'R', 'I', 'Z', 'O', 'N', 'T', 'A', 'L', '-', '0', '6', '-', '0', '6',
+ 'L', 'O', 'N', 'G', '-', 'B', 'R', 'A', 'N', 'C', 'H', '-', 'M', 'A', 'D', 'R',
+ 'M', 'A', 'R', 'C', 'A', 'T', 'O', '-', 'S', 'T', 'A', 'C', 'C', 'A', 'T', 'O',
+ 'P', 'I', 'E', 'U', 'P', '-', 'S', 'I', 'O', 'S', '-', 'C', 'I', 'E', 'U', 'C',
+ 'P', 'I', 'E', 'U', 'P', '-', 'S', 'I', 'O', 'S', '-', 'P', 'I', 'E', 'U', 'P',
+ 'R', 'I', 'E', 'U', 'L', '-', 'M', 'I', 'E', 'U', 'M', '-', 'S', 'I', 'O', 'S',
+ 'R', 'I', 'E', 'U', 'L', '-', 'P', 'I', 'E', 'U', 'P', '-', 'S', 'I', 'O', 'S',
+ 'T', 'E', 'A', 'R', 'D', 'R', 'O', 'P', '-', 'S', 'H', 'A', 'N', 'K', 'E', 'D',
+ 'T', 'R', 'O', 'M', 'I', 'K', 'O', 'P', 'S', 'I', 'F', 'I', 'S', 'T', 'O', 'N',
+ 'Y', 'E', 'S', 'I', 'E', 'U', 'N', 'G', '-', 'P', 'A', 'N', 'S', 'I', 'O', 'S',
+ 'A', 'C', 'U', 'T', 'E', '-', 'G', 'R', 'A', 'V', 'E', '-', 'A', 'C', 'U', 'T', 'E',
+ 'C', 'H', 'I', 'T', 'U', 'E', 'U', 'M', 'S', 'S', 'A', 'N', 'G', 'S', 'I', 'O', 'S',
+ 'G', 'R', 'A', 'V', 'E', '-', 'A', 'C', 'U', 'T', 'E', '-', 'G', 'R', 'A', 'V', 'E',
+ 'I', 'E', 'U', 'N', 'G', '-', 'S', 'S', 'A', 'N', 'G', 'K', 'I', 'Y', 'E', 'O', 'K',
+ 'K', 'A', 'T', 'A', 'K', 'A', 'N', 'A', '-', 'H', 'I', 'R', 'A', 'G', 'A', 'N', 'A',
+ 'P', 'I', 'E', 'U', 'P', '-', 'S', 'I', 'O', 'S', '-', 'K', 'I', 'Y', 'E', 'O', 'K',
+ 'P', 'I', 'E', 'U', 'P', '-', 'S', 'I', 'O', 'S', '-', 'T', 'I', 'K', 'E', 'U', 'T',
+ 'R', 'I', 'E', 'U', 'L', '-', 'K', 'I', 'Y', 'E', 'O', 'K', '-', 'S', 'I', 'O', 'S',
+ 'R', 'I', 'E', 'U', 'L', '-', 'P', 'I', 'E', 'U', 'P', '-', 'H', 'I', 'E', 'U', 'H',
+ 'R', 'I', 'E', 'U', 'L', '-', 'Y', 'E', 'O', 'R', 'I', 'N', 'H', 'I', 'E', 'U', 'H',
+ 'S', 'H', 'O', 'R', 'T', '-', 'T', 'W', 'I', 'G', '-', 'H', 'A', 'G', 'A', 'L', 'L',
+ 'S', 'I', 'O', 'S', '-', 'P', 'I', 'E', 'U', 'P', '-', 'K', 'I', 'Y', 'E', 'O', 'K',
+ 'S', 'O', 'F', 'T', 'W', 'A', 'R', 'E', '-', 'F', 'U', 'N', 'C', 'T', 'I', 'O', 'N',
+ 'C', 'E', 'O', 'N', 'G', 'C', 'H', 'I', 'E', 'U', 'M', 'C', 'H', 'I', 'E', 'U', 'C', 'H',
+ 'C', 'H', 'I', 'T', 'U', 'E', 'U', 'M', 'S', 'S', 'A', 'N', 'G', 'C', 'I', 'E', 'U', 'C',
+ 'K', 'A', 'P', 'Y', 'E', 'O', 'U', 'N', 'S', 'S', 'A', 'N', 'G', 'P', 'I', 'E', 'U', 'P',
+ 'K', 'I', 'Y', 'E', 'O', 'K', '-', 'S', 'I', 'O', 'S', '-', 'K', 'I', 'Y', 'E', 'O', 'K',
+ 'L', 'O', 'N', 'G', '-', 'B', 'R', 'A', 'N', 'C', 'H', '-', 'H', 'A', 'G', 'A', 'L', 'L',
+ 'P', 'A', 'R', 'T', 'I', 'A', 'L', 'L', 'Y', '-', 'R', 'E', 'C', 'Y', 'C', 'L', 'E', 'D',
+ 'R', 'I', 'E', 'U', 'L', '-', 'M', 'I', 'E', 'U', 'M', '-', 'K', 'I', 'Y', 'E', 'O', 'K',
+ 'R', 'I', 'E', 'U', 'L', '-', 'T', 'I', 'K', 'E', 'U', 'T', '-', 'H', 'I', 'E', 'U', 'H',
+ 'S', 'H', 'O', 'R', 'T', '-', 'T', 'W', 'I', 'G', '-', 'B', 'J', 'A', 'R', 'K', 'A', 'N',
+ 'T', 'R', 'O', 'M', 'I', 'K', 'O', 'P', 'A', 'R', 'A', 'K', 'A', 'L', 'E', 'S', 'M', 'A',
+ 'O', 'P', 'E', 'N', '-', 'C', 'I', 'R', 'C', 'U', 'I', 'T', '-', 'O', 'U', 'T', 'P', 'U', 'T',
+ 'P', 'S', 'I', 'F', 'I', 'S', 'T', 'O', 'P', 'A', 'R', 'A', 'K', 'A', 'L', 'E', 'S', 'M', 'A',
+ 'R', 'I', 'E', 'U', 'L', '-', 'K', 'A', 'P', 'Y', 'E', 'O', 'U', 'N', 'P', 'I', 'E', 'U', 'P',
+ 'C', 'E', 'O', 'N', 'G', 'C', 'H', 'I', 'E', 'U', 'M', 'S', 'S', 'A', 'N', 'G', 'S', 'I', 'O', 'S',
+ 'A', 'N', 'T', 'I', 'C', 'L', 'O', 'C', 'K', 'W', 'I', 'S', 'E', '-', 'R', 'O', 'T', 'A', 'T', 'E', 'D',
+ 'C', 'E', 'O', 'N', 'G', 'C', 'H', 'I', 'E', 'U', 'M', 'S', 'S', 'A', 'N', 'G', 'C', 'I', 'E', 'U', 'C',
+ 'B', 'Y', 'E', 'L', 'O', 'R', 'U', 'S', 'S', 'I', 'A', 'N', '-', 'U', 'K', 'R', 'A', 'I', 'N', 'I', 'A', 'N',
+ 'P', 'A', 'S', 'S', 'I', 'V', 'E', '-', 'P', 'U', 'L', 'L', '-', 'U', 'P', '-', 'O', 'U', 'T', 'P', 'U', 'T',
+ 'P', 'A', 'S', 'S', 'I', 'V', 'E', '-', 'P', 'U', 'L', 'L', '-', 'D', 'O', 'W', 'N', '-', 'O', 'U', 'T', 'P', 'U', 'T',
+};
+#define UNICODE_CHARNAME_NUM_WORDS 6710
+static const struct { uint16_t extra_offset; uint16_t ind_offset; } unicode_name_by_length[26] = {
+ { 0, 0 },
+ { 0, 0 },
+ { 26, 26 },
+ { 658, 342 },
+ { 4468, 1612 },
+ { 10756, 3184 },
+ { 14596, 3952 },
+ { 17782, 4483 },
+ { 20883, 4926 },
+ { 24251, 5347 },
+ { 27446, 5702 },
+ { 29846, 5942 },
+ { 32629, 6195 },
+ { 35689, 6450 },
+ { 36599, 6520 },
+ { 37607, 6592 },
+ { 38012, 6619 },
+ { 38956, 6678 },
+ { 39177, 6691 },
+ { 39357, 6701 },
+ { 39414, 6704 },
+ { 39434, 6705 },
+ { 39476, 6707 },
+ { 39520, 6709 },
+ { 39520, 6709 },
+ { 39544, 6710 }
+};
+#define UNICODE_CHARNAME_WORD_HANGUL 4143
+#define UNICODE_CHARNAME_WORD_SYLLABLE 5292
+#define UNICODE_CHARNAME_WORD_CJK 454
+#define UNICODE_CHARNAME_WORD_COMPATIBILITY 6457
+static const uint16_t unicode_names[75152] = {
+ 23, 3, 761, 8774,
+ 37, 275, 10642,
+ 47, 275, 1, 11203, 826,
+ 51, 10365, 753, 11680,
+ 51, 10365, 4849, 6989, 9050,
+ 51, 10365, 4849, 9045, 9050,
+ 51, 10365, 5782,
+ 51, 10365, 6031, 6610,
+ 51, 10365, 7421, 13188,
+ 51, 10365, 7443, 6989, 9050,
+ 51, 10365, 7443, 9045, 9050,
+ 51, 10365, 8131, 13188,
+ 51, 10365, 8675, 8590,
+ 51, 10365, 8675, 11734,
+ 51, 10365, 8675, 11908,
+ 51, 10365, 11751, 11908,
+ 63, 9128,
+ 175, 3992,
+ 175, 5496,
+ 175, 7608,
+ 177, 3992,
+ 177, 5496,
+ 177, 7608,
+ 435, 6573, 385, 9798,
+ 435, 6573, 3232,
+ 435, 6573, 6689, 2170,
+ 435, 6573, 6689, 2540,
+ 435, 6573, 6689, 2778,
+ 435, 6573, 6689, 4200,
+ 435, 6573, 6689, 4214,
+ 435, 6573, 6689, 5190,
+ 435, 6573, 6689, 6260,
+ 435, 6573, 6689, 6722,
+ 435, 6573, 6689, 7508,
+ 435, 6573, 6689, 7694,
+ 435, 6573, 7430,
+ 435, 6573, 8405, 68,
+ 435, 6573, 8405, 76,
+ 435, 6573, 8405, 90,
+ 435, 6573, 8405, 176,
+ 435, 6573, 8405, 180,
+ 435, 6573, 8405, 264,
+ 435, 6573, 8405, 280,
+ 435, 6573, 8405, 282,
+ 435, 6573, 8405, 332,
+ 435, 6573, 8405, 336,
+ 435, 6573, 8405, 340,
+ 435, 6573, 8405, 350,
+ 435, 6573, 8405, 354,
+ 435, 6573, 8405, 424,
+ 435, 6573, 8405, 430,
+ 435, 6573, 8405, 452,
+ 435, 6573, 8405, 586,
+ 435, 6573, 8405, 588,
+ 435, 6573, 8405, 608,
+ 435, 6573, 8405, 692,
+ 435, 6573, 8405, 694,
+ 435, 6573, 8405, 696,
+ 435, 6573, 8405, 698,
+ 435, 6573, 8405, 722,
+ 435, 6573, 8405, 1096,
+ 435, 6573, 8405, 1120,
+ 435, 6573, 8405, 1492,
+ 435, 6573, 8405, 1732,
+ 435, 6573, 8405, 2182,
+ 435, 6573, 8405, 2814,
+ 435, 6573, 9299, 10654,
+ 435, 6573, 10426,
+ 435, 6573, 11691, 10654,
+ 435, 6573, 12133, 8153, 8488,
+ 435, 6573, 12133, 8488,
+ 445, 6121, 1045, 8318,
+ 601, 3713, 4849, 4117, 3713, 4849, 9326,
+ 601, 3713, 4849, 4117, 3713, 7443, 9326,
+ 601, 3713, 7443, 4117, 3713, 4849, 9326,
+ 601, 3713, 7443, 4117, 3713, 7443, 9326,
+ 601, 4117, 6434,
+ 601, 4117, 6435, 6121, 3716,
+ 601, 4117, 6505, 6434,
+ 601, 4117, 7821, 6434,
+ 601, 4117, 8153, 6434,
+ 601, 4197, 5878,
+ 601, 5876,
+ 601, 5877, 6121, 8057, 6376,
+ 601, 6435, 9785, 8056,
+ 601, 7443, 10001, 10154,
+ 601, 10716,
+ 601, 10717, 9043, 2779, 11649, 3714,
+ 657, 9617, 134,
+ 657, 9617, 152,
+ 657, 9617, 216,
+ 657, 9617, 298,
+ 657, 9617, 310,
+ 657, 9617, 340,
+ 657, 9617, 374,
+ 657, 9617, 442,
+ 657, 9617, 576,
+ 657, 9617, 632,
+ 657, 9617, 660,
+ 657, 9617, 670,
+ 657, 9617, 832,
+ 657, 9617, 886,
+ 657, 9617, 902,
+ 657, 9617, 946,
+ 657, 9617, 950,
+ 657, 9617, 1242,
+ 657, 9617, 1294,
+ 657, 9617, 1406,
+ 657, 9617, 1538,
+ 657, 9617, 1636,
+ 657, 9617, 1782,
+ 657, 9617, 1844,
+ 657, 9617, 1940,
+ 657, 9617, 2262,
+ 657, 9617, 2278,
+ 657, 9617, 2324,
+ 657, 9617, 2526,
+ 657, 9617, 2570,
+ 657, 9617, 2656,
+ 657, 9617, 2860,
+ 657, 9617, 2890,
+ 657, 9617, 3074,
+ 657, 9617, 3182,
+ 657, 9617, 3194,
+ 657, 9617, 3196,
+ 657, 9617, 3748,
+ 657, 9617, 3962,
+ 657, 9617, 4040,
+ 657, 9617, 4292,
+ 657, 9617, 4298,
+ 657, 9617, 4572,
+ 657, 9617, 4576,
+ 657, 9617, 4582,
+ 657, 9617, 4646,
+ 657, 9617, 4666,
+ 657, 9617, 5064,
+ 657, 9617, 5304,
+ 657, 9617, 5318,
+ 657, 9617, 5356,
+ 657, 9617, 5674,
+ 657, 9617, 5712,
+ 657, 9617, 5726,
+ 657, 9617, 7896,
+ 657, 10585, 0,
+ 657, 10585, 8,
+ 657, 10585, 16,
+ 657, 10585, 28,
+ 657, 10585, 84,
+ 657, 10585, 90,
+ 657, 10585, 96,
+ 657, 10585, 100,
+ 657, 10585, 102,
+ 657, 10585, 106,
+ 657, 10585, 108,
+ 657, 10585, 112,
+ 657, 10585, 114,
+ 657, 10585, 116,
+ 657, 10585, 122,
+ 657, 10585, 126,
+ 657, 10585, 130,
+ 657, 10585, 132,
+ 657, 10585, 134,
+ 657, 10585, 138,
+ 657, 10585, 142,
+ 657, 10585, 144,
+ 657, 10585, 150,
+ 657, 10585, 152,
+ 657, 10585, 194,
+ 657, 10585, 196,
+ 657, 10585, 202,
+ 657, 10585, 208,
+ 657, 10585, 210,
+ 657, 10585, 212,
+ 657, 10585, 216,
+ 657, 10585, 220,
+ 657, 10585, 224,
+ 657, 10585, 228,
+ 657, 10585, 230,
+ 657, 10585, 236,
+ 657, 10585, 238,
+ 657, 10585, 246,
+ 657, 10585, 258,
+ 657, 10585, 278,
+ 657, 10585, 284,
+ 657, 10585, 288,
+ 657, 10585, 296,
+ 657, 10585, 298,
+ 657, 10585, 300,
+ 657, 10585, 302,
+ 657, 10585, 306,
+ 657, 10585, 310,
+ 657, 10585, 314,
+ 657, 10585, 322,
+ 657, 10585, 326,
+ 657, 10585, 332,
+ 657, 10585, 336,
+ 657, 10585, 340,
+ 657, 10585, 350,
+ 657, 10585, 354,
+ 657, 10585, 360,
+ 657, 10585, 364,
+ 657, 10585, 368,
+ 657, 10585, 374,
+ 657, 10585, 380,
+ 657, 10585, 384,
+ 657, 10585, 390,
+ 657, 10585, 392,
+ 657, 10585, 396,
+ 657, 10585, 404,
+ 657, 10585, 412,
+ 657, 10585, 416,
+ 657, 10585, 442,
+ 657, 10585, 448,
+ 657, 10585, 456,
+ 657, 10585, 462,
+ 657, 10585, 476,
+ 657, 10585, 480,
+ 657, 10585, 486,
+ 657, 10585, 492,
+ 657, 10585, 500,
+ 657, 10585, 502,
+ 657, 10585, 506,
+ 657, 10585, 508,
+ 657, 10585, 510,
+ 657, 10585, 512,
+ 657, 10585, 516,
+ 657, 10585, 520,
+ 657, 10585, 522,
+ 657, 10585, 524,
+ 657, 10585, 526,
+ 657, 10585, 532,
+ 657, 10585, 536,
+ 657, 10585, 546,
+ 657, 10585, 552,
+ 657, 10585, 556,
+ 657, 10585, 560,
+ 657, 10585, 564,
+ 657, 10585, 568,
+ 657, 10585, 576,
+ 657, 10585, 598,
+ 657, 10585, 610,
+ 657, 10585, 614,
+ 657, 10585, 616,
+ 657, 10585, 618,
+ 657, 10585, 620,
+ 657, 10585, 622,
+ 657, 10585, 626,
+ 657, 10585, 632,
+ 657, 10585, 634,
+ 657, 10585, 644,
+ 657, 10585, 646,
+ 657, 10585, 650,
+ 657, 10585, 656,
+ 657, 10585, 660,
+ 657, 10585, 664,
+ 657, 10585, 668,
+ 657, 10585, 670,
+ 657, 10585, 672,
+ 657, 10585, 676,
+ 657, 10585, 678,
+ 657, 10585, 680,
+ 657, 10585, 682,
+ 657, 10585, 758,
+ 657, 10585, 762,
+ 657, 10585, 764,
+ 657, 10585, 766,
+ 657, 10585, 768,
+ 657, 10585, 770,
+ 657, 10585, 772,
+ 657, 10585, 774,
+ 657, 10585, 776,
+ 657, 10585, 786,
+ 657, 10585, 790,
+ 657, 10585, 804,
+ 657, 10585, 808,
+ 657, 10585, 810,
+ 657, 10585, 812,
+ 657, 10585, 820,
+ 657, 10585, 822,
+ 657, 10585, 826,
+ 657, 10585, 828,
+ 657, 10585, 830,
+ 657, 10585, 832,
+ 657, 10585, 834,
+ 657, 10585, 836,
+ 657, 10585, 846,
+ 657, 10585, 848,
+ 657, 10585, 850,
+ 657, 10585, 852,
+ 657, 10585, 860,
+ 657, 10585, 862,
+ 657, 10585, 864,
+ 657, 10585, 880,
+ 657, 10585, 882,
+ 657, 10585, 884,
+ 657, 10585, 886,
+ 657, 10585, 890,
+ 657, 10585, 892,
+ 657, 10585, 894,
+ 657, 10585, 896,
+ 657, 10585, 902,
+ 657, 10585, 904,
+ 657, 10585, 906,
+ 657, 10585, 916,
+ 657, 10585, 918,
+ 657, 10585, 922,
+ 657, 10585, 926,
+ 657, 10585, 928,
+ 657, 10585, 930,
+ 657, 10585, 932,
+ 657, 10585, 934,
+ 657, 10585, 946,
+ 657, 10585, 948,
+ 657, 10585, 950,
+ 657, 10585, 952,
+ 657, 10585, 964,
+ 657, 10585, 968,
+ 657, 10585, 970,
+ 657, 10585, 974,
+ 657, 10585, 976,
+ 657, 10585, 978,
+ 657, 10585, 980,
+ 657, 10585, 982,
+ 657, 10585, 992,
+ 657, 10585, 994,
+ 657, 10585, 1008,
+ 657, 10585, 1014,
+ 657, 10585, 1016,
+ 657, 10585, 1018,
+ 657, 10585, 1042,
+ 657, 10585, 1044,
+ 657, 10585, 1046,
+ 657, 10585, 1062,
+ 657, 10585, 1064,
+ 657, 10585, 1066,
+ 657, 10585, 1068,
+ 657, 10585, 1070,
+ 657, 10585, 1144,
+ 657, 10585, 1146,
+ 657, 10585, 1148,
+ 657, 10585, 1162,
+ 657, 10585, 1164,
+ 657, 10585, 1166,
+ 657, 10585, 1174,
+ 657, 10585, 1178,
+ 657, 10585, 1180,
+ 657, 10585, 1182,
+ 657, 10585, 1184,
+ 657, 10585, 1186,
+ 657, 10585, 1196,
+ 657, 10585, 1198,
+ 657, 10585, 1200,
+ 657, 10585, 1218,
+ 657, 10585, 1222,
+ 657, 10585, 1224,
+ 657, 10585, 1242,
+ 657, 10585, 1246,
+ 657, 10585, 1248,
+ 657, 10585, 1250,
+ 657, 10585, 1252,
+ 657, 10585, 1254,
+ 657, 10585, 1256,
+ 657, 10585, 1258,
+ 657, 10585, 1274,
+ 657, 10585, 1278,
+ 657, 10585, 1280,
+ 657, 10585, 1282,
+ 657, 10585, 1292,
+ 657, 10585, 1294,
+ 657, 10585, 1296,
+ 657, 10585, 1312,
+ 657, 10585, 1314,
+ 657, 10585, 1316,
+ 657, 10585, 1318,
+ 657, 10585, 1320,
+ 657, 10585, 1348,
+ 657, 10585, 1352,
+ 657, 10585, 1354,
+ 657, 10585, 1364,
+ 657, 10585, 1368,
+ 657, 10585, 1380,
+ 657, 10585, 1388,
+ 657, 10585, 1390,
+ 657, 10585, 1392,
+ 657, 10585, 1394,
+ 657, 10585, 1396,
+ 657, 10585, 1398,
+ 657, 10585, 1400,
+ 657, 10585, 1402,
+ 657, 10585, 1404,
+ 657, 10585, 1406,
+ 657, 10585, 1408,
+ 657, 10585, 1410,
+ 657, 10585, 1412,
+ 657, 10585, 1414,
+ 657, 10585, 1416,
+ 657, 10585, 1426,
+ 657, 10585, 1428,
+ 657, 10585, 1430,
+ 657, 10585, 1438,
+ 657, 10585, 1450,
+ 657, 10585, 1452,
+ 657, 10585, 1454,
+ 657, 10585, 1456,
+ 657, 10585, 1476,
+ 657, 10585, 1478,
+ 657, 10585, 1480,
+ 657, 10585, 1518,
+ 657, 10585, 1522,
+ 657, 10585, 1524,
+ 657, 10585, 1526,
+ 657, 10585, 1532,
+ 657, 10585, 1534,
+ 657, 10585, 1536,
+ 657, 10585, 1538,
+ 657, 10585, 1544,
+ 657, 10585, 1546,
+ 657, 10585, 1548,
+ 657, 10585, 1552,
+ 657, 10585, 1554,
+ 657, 10585, 1556,
+ 657, 10585, 1558,
+ 657, 10585, 1560,
+ 657, 10585, 1564,
+ 657, 10585, 1566,
+ 657, 10585, 1568,
+ 657, 10585, 1570,
+ 657, 10585, 1590,
+ 657, 10585, 1592,
+ 657, 10585, 1594,
+ 657, 10585, 1604,
+ 657, 10585, 1606,
+ 657, 10585, 1608,
+ 657, 10585, 1626,
+ 657, 10585, 1634,
+ 657, 10585, 1636,
+ 657, 10585, 1638,
+ 657, 10585, 1662,
+ 657, 10585, 1664,
+ 657, 10585, 1666,
+ 657, 10585, 1692,
+ 657, 10585, 1694,
+ 657, 10585, 1696,
+ 657, 10585, 1698,
+ 657, 10585, 1700,
+ 657, 10585, 1742,
+ 657, 10585, 1746,
+ 657, 10585, 1750,
+ 657, 10585, 1766,
+ 657, 10585, 1768,
+ 657, 10585, 1782,
+ 657, 10585, 1788,
+ 657, 10585, 1790,
+ 657, 10585, 1792,
+ 657, 10585, 1804,
+ 657, 10585, 1806,
+ 657, 10585, 1810,
+ 657, 10585, 1824,
+ 657, 10585, 1826,
+ 657, 10585, 1828,
+ 657, 10585, 1830,
+ 657, 10585, 1832,
+ 657, 10585, 1842,
+ 657, 10585, 1844,
+ 657, 10585, 1846,
+ 657, 10585, 1848,
+ 657, 10585, 1862,
+ 657, 10585, 1866,
+ 657, 10585, 1868,
+ 657, 10585, 1898,
+ 657, 10585, 1900,
+ 657, 10585, 1902,
+ 657, 10585, 1904,
+ 657, 10585, 1906,
+ 657, 10585, 1912,
+ 657, 10585, 1924,
+ 657, 10585, 1926,
+ 657, 10585, 1928,
+ 657, 10585, 1940,
+ 657, 10585, 1942,
+ 657, 10585, 1944,
+ 657, 10585, 1954,
+ 657, 10585, 1956,
+ 657, 10585, 1958,
+ 657, 10585, 1960,
+ 657, 10585, 1962,
+ 657, 10585, 1974,
+ 657, 10585, 1976,
+ 657, 10585, 1978,
+ 657, 10585, 1990,
+ 657, 10585, 1994,
+ 657, 10585, 1996,
+ 657, 10585, 1998,
+ 657, 10585, 2000,
+ 657, 10585, 2002,
+ 657, 10585, 2004,
+ 657, 10585, 2006,
+ 657, 10585, 2008,
+ 657, 10585, 2010,
+ 657, 10585, 2012,
+ 657, 10585, 2014,
+ 657, 10585, 2022,
+ 657, 10585, 2028,
+ 657, 10585, 2030,
+ 657, 10585, 2032,
+ 657, 10585, 2038,
+ 657, 10585, 2050,
+ 657, 10585, 2056,
+ 657, 10585, 2058,
+ 657, 10585, 2060,
+ 657, 10585, 2066,
+ 657, 10585, 2068,
+ 657, 10585, 2070,
+ 657, 10585, 2072,
+ 657, 10585, 2086,
+ 657, 10585, 2090,
+ 657, 10585, 2094,
+ 657, 10585, 2096,
+ 657, 10585, 2098,
+ 657, 10585, 2100,
+ 657, 10585, 2102,
+ 657, 10585, 2104,
+ 657, 10585, 2112,
+ 657, 10585, 2114,
+ 657, 10585, 2116,
+ 657, 10585, 2118,
+ 657, 10585, 2120,
+ 657, 10585, 2132,
+ 657, 10585, 2134,
+ 657, 10585, 2136,
+ 657, 10585, 2138,
+ 657, 10585, 2140,
+ 657, 10585, 2142,
+ 657, 10585, 2144,
+ 657, 10585, 2146,
+ 657, 10585, 2194,
+ 657, 10585, 2198,
+ 657, 10585, 2202,
+ 657, 10585, 2222,
+ 657, 10585, 2228,
+ 657, 10585, 2230,
+ 657, 10585, 2232,
+ 657, 10585, 2240,
+ 657, 10585, 2242,
+ 657, 10585, 2244,
+ 657, 10585, 2256,
+ 657, 10585, 2258,
+ 657, 10585, 2260,
+ 657, 10585, 2262,
+ 657, 10585, 2264,
+ 657, 10585, 2274,
+ 657, 10585, 2276,
+ 657, 10585, 2278,
+ 657, 10585, 2280,
+ 657, 10585, 2306,
+ 657, 10585, 2310,
+ 657, 10585, 2312,
+ 657, 10585, 2314,
+ 657, 10585, 2322,
+ 657, 10585, 2324,
+ 657, 10585, 2326,
+ 657, 10585, 2336,
+ 657, 10585, 2338,
+ 657, 10585, 2340,
+ 657, 10585, 2342,
+ 657, 10585, 2348,
+ 657, 10585, 2364,
+ 657, 10585, 2366,
+ 657, 10585, 2368,
+ 657, 10585, 2372,
+ 657, 10585, 2390,
+ 657, 10585, 2392,
+ 657, 10585, 2394,
+ 657, 10585, 2406,
+ 657, 10585, 2408,
+ 657, 10585, 2432,
+ 657, 10585, 2434,
+ 657, 10585, 2436,
+ 657, 10585, 2438,
+ 657, 10585, 2440,
+ 657, 10585, 2442,
+ 657, 10585, 2444,
+ 657, 10585, 2446,
+ 657, 10585, 2456,
+ 657, 10585, 2458,
+ 657, 10585, 2460,
+ 657, 10585, 2462,
+ 657, 10585, 2464,
+ 657, 10585, 2470,
+ 657, 10585, 2472,
+ 657, 10585, 2474,
+ 657, 10585, 2476,
+ 657, 10585, 2492,
+ 657, 10585, 2496,
+ 657, 10585, 2500,
+ 657, 10585, 2508,
+ 657, 10585, 2512,
+ 657, 10585, 2516,
+ 657, 10585, 2518,
+ 657, 10585, 2522,
+ 657, 10585, 2524,
+ 657, 10585, 2526,
+ 657, 10585, 2528,
+ 657, 10585, 2536,
+ 657, 10585, 2538,
+ 657, 10585, 2540,
+ 657, 10585, 2556,
+ 657, 10585, 2558,
+ 657, 10585, 2564,
+ 657, 10585, 2566,
+ 657, 10585, 2568,
+ 657, 10585, 2570,
+ 657, 10585, 2572,
+ 657, 10585, 2574,
+ 657, 10585, 2576,
+ 657, 10585, 2588,
+ 657, 10585, 2590,
+ 657, 10585, 2592,
+ 657, 10585, 2594,
+ 657, 10585, 2596,
+ 657, 10585, 2612,
+ 657, 10585, 2614,
+ 657, 10585, 2616,
+ 657, 10585, 2618,
+ 657, 10585, 2652,
+ 657, 10585, 2656,
+ 657, 10585, 2664,
+ 657, 10585, 2672,
+ 657, 10585, 2676,
+ 657, 10585, 2690,
+ 657, 10585, 2696,
+ 657, 10585, 2700,
+ 657, 10585, 2702,
+ 657, 10585, 2724,
+ 657, 10585, 2726,
+ 657, 10585, 2728,
+ 657, 10585, 2762,
+ 657, 10585, 2764,
+ 657, 10585, 2766,
+ 657, 10585, 2768,
+ 657, 10585, 2770,
+ 657, 10585, 2818,
+ 657, 10585, 2820,
+ 657, 10585, 2848,
+ 657, 10585, 2850,
+ 657, 10585, 2854,
+ 657, 10585, 2860,
+ 657, 10585, 2864,
+ 657, 10585, 2866,
+ 657, 10585, 2870,
+ 657, 10585, 2872,
+ 657, 10585, 2874,
+ 657, 10585, 2878,
+ 657, 10585, 2880,
+ 657, 10585, 2886,
+ 657, 10585, 2888,
+ 657, 10585, 2890,
+ 657, 10585, 2892,
+ 657, 10585, 2894,
+ 657, 10585, 2898,
+ 657, 10585, 2900,
+ 657, 10585, 2902,
+ 657, 10585, 2904,
+ 657, 10585, 2912,
+ 657, 10585, 2914,
+ 657, 10585, 2920,
+ 657, 10585, 2928,
+ 657, 10585, 2930,
+ 657, 10585, 2944,
+ 657, 10585, 2946,
+ 657, 10585, 2950,
+ 657, 10585, 2960,
+ 657, 10585, 2962,
+ 657, 10585, 2964,
+ 657, 10585, 2966,
+ 657, 10585, 2970,
+ 657, 10585, 2974,
+ 657, 10585, 2976,
+ 657, 10585, 2978,
+ 657, 10585, 2996,
+ 657, 10585, 2998,
+ 657, 10585, 3000,
+ 657, 10585, 3004,
+ 657, 10585, 3064,
+ 657, 10585, 3072,
+ 657, 10585, 3074,
+ 657, 10585, 3076,
+ 657, 10585, 3084,
+ 657, 10585, 3086,
+ 657, 10585, 3088,
+ 657, 10585, 3090,
+ 657, 10585, 3092,
+ 657, 10585, 3094,
+ 657, 10585, 3098,
+ 657, 10585, 3100,
+ 657, 10585, 3112,
+ 657, 10585, 3114,
+ 657, 10585, 3116,
+ 657, 10585, 3118,
+ 657, 10585, 3130,
+ 657, 10585, 3132,
+ 657, 10585, 3134,
+ 657, 10585, 3142,
+ 657, 10585, 3144,
+ 657, 10585, 3146,
+ 657, 10585, 3148,
+ 657, 10585, 3152,
+ 657, 10585, 3154,
+ 657, 10585, 3156,
+ 657, 10585, 3162,
+ 657, 10585, 3166,
+ 657, 10585, 3168,
+ 657, 10585, 3170,
+ 657, 10585, 3180,
+ 657, 10585, 3182,
+ 657, 10585, 3184,
+ 657, 10585, 3192,
+ 657, 10585, 3194,
+ 657, 10585, 3196,
+ 657, 10585, 3198,
+ 657, 10585, 3200,
+ 657, 10585, 3204,
+ 657, 10585, 3206,
+ 657, 10585, 3208,
+ 657, 10585, 3210,
+ 657, 10585, 3212,
+ 657, 10585, 3214,
+ 657, 10585, 3216,
+ 657, 10585, 3218,
+ 657, 10585, 3220,
+ 657, 10585, 3222,
+ 657, 10585, 3718,
+ 657, 10585, 3720,
+ 657, 10585, 3722,
+ 657, 10585, 3724,
+ 657, 10585, 3726,
+ 657, 10585, 3728,
+ 657, 10585, 3730,
+ 657, 10585, 3732,
+ 657, 10585, 3734,
+ 657, 10585, 3736,
+ 657, 10585, 3738,
+ 657, 10585, 3740,
+ 657, 10585, 3742,
+ 657, 10585, 3744,
+ 657, 10585, 3746,
+ 657, 10585, 3748,
+ 657, 10585, 3750,
+ 657, 10585, 3752,
+ 657, 10585, 3754,
+ 657, 10585, 3756,
+ 657, 10585, 3782,
+ 657, 10585, 3784,
+ 657, 10585, 3786,
+ 657, 10585, 3816,
+ 657, 10585, 3818,
+ 657, 10585, 3824,
+ 657, 10585, 3828,
+ 657, 10585, 3882,
+ 657, 10585, 3886,
+ 657, 10585, 3888,
+ 657, 10585, 3896,
+ 657, 10585, 3898,
+ 657, 10585, 3900,
+ 657, 10585, 3910,
+ 657, 10585, 3912,
+ 657, 10585, 3914,
+ 657, 10585, 3916,
+ 657, 10585, 3918,
+ 657, 10585, 3920,
+ 657, 10585, 3922,
+ 657, 10585, 3926,
+ 657, 10585, 3928,
+ 657, 10585, 3930,
+ 657, 10585, 3932,
+ 657, 10585, 3934,
+ 657, 10585, 3936,
+ 657, 10585, 3938,
+ 657, 10585, 3962,
+ 657, 10585, 3964,
+ 657, 10585, 3968,
+ 657, 10585, 3976,
+ 657, 10585, 4002,
+ 657, 10585, 4004,
+ 657, 10585, 4006,
+ 657, 10585, 4012,
+ 657, 10585, 4014,
+ 657, 10585, 4020,
+ 657, 10585, 4022,
+ 657, 10585, 4024,
+ 657, 10585, 4026,
+ 657, 10585, 4030,
+ 657, 10585, 4032,
+ 657, 10585, 4034,
+ 657, 10585, 4036,
+ 657, 10585, 4038,
+ 657, 10585, 4040,
+ 657, 10585, 4042,
+ 657, 10585, 4044,
+ 657, 10585, 4082,
+ 657, 10585, 4084,
+ 657, 10585, 4130,
+ 657, 10585, 4134,
+ 657, 10585, 4224,
+ 657, 10585, 4272,
+ 657, 10585, 4274,
+ 657, 10585, 4276,
+ 657, 10585, 4280,
+ 657, 10585, 4282,
+ 657, 10585, 4284,
+ 657, 10585, 4286,
+ 657, 10585, 4288,
+ 657, 10585, 4290,
+ 657, 10585, 4292,
+ 657, 10585, 4294,
+ 657, 10585, 4296,
+ 657, 10585, 4298,
+ 657, 10585, 4300,
+ 657, 10585, 4302,
+ 657, 10585, 4304,
+ 657, 10585, 4306,
+ 657, 10585, 4326,
+ 657, 10585, 4328,
+ 657, 10585, 4330,
+ 657, 10585, 4360,
+ 657, 10585, 4362,
+ 657, 10585, 4364,
+ 657, 10585, 4368,
+ 657, 10585, 4420,
+ 657, 10585, 4426,
+ 657, 10585, 4428,
+ 657, 10585, 4430,
+ 657, 10585, 4432,
+ 657, 10585, 4434,
+ 657, 10585, 4436,
+ 657, 10585, 4438,
+ 657, 10585, 4440,
+ 657, 10585, 4442,
+ 657, 10585, 4444,
+ 657, 10585, 4446,
+ 657, 10585, 4448,
+ 657, 10585, 4450,
+ 657, 10585, 4452,
+ 657, 10585, 4454,
+ 657, 10585, 4456,
+ 657, 10585, 4458,
+ 657, 10585, 4460,
+ 657, 10585, 4462,
+ 657, 10585, 4464,
+ 657, 10585, 4466,
+ 657, 10585, 4468,
+ 657, 10585, 4470,
+ 657, 10585, 4472,
+ 657, 10585, 4474,
+ 657, 10585, 4476,
+ 657, 10585, 4478,
+ 657, 10585, 4480,
+ 657, 10585, 4482,
+ 657, 10585, 4484,
+ 657, 10585, 4486,
+ 657, 10585, 4488,
+ 657, 10585, 4490,
+ 657, 10585, 4492,
+ 657, 10585, 4494,
+ 657, 10585, 4496,
+ 657, 10585, 4498,
+ 657, 10585, 4500,
+ 657, 10585, 4502,
+ 657, 10585, 4504,
+ 657, 10585, 4506,
+ 657, 10585, 4508,
+ 657, 10585, 4510,
+ 657, 10585, 4512,
+ 657, 10585, 4514,
+ 657, 10585, 4516,
+ 657, 10585, 4518,
+ 657, 10585, 4520,
+ 657, 10585, 4522,
+ 657, 10585, 4524,
+ 657, 10585, 4526,
+ 657, 10585, 4528,
+ 657, 10585, 4550,
+ 657, 10585, 4552,
+ 657, 10585, 4554,
+ 657, 10585, 4558,
+ 657, 10585, 4560,
+ 657, 10585, 4562,
+ 657, 10585, 4564,
+ 657, 10585, 4566,
+ 657, 10585, 4568,
+ 657, 10585, 4570,
+ 657, 10585, 4572,
+ 657, 10585, 4574,
+ 657, 10585, 4576,
+ 657, 10585, 4578,
+ 657, 10585, 4580,
+ 657, 10585, 4582,
+ 657, 10585, 4638,
+ 657, 10585, 4640,
+ 657, 10585, 4642,
+ 657, 10585, 4646,
+ 657, 10585, 4648,
+ 657, 10585, 4650,
+ 657, 10585, 4652,
+ 657, 10585, 4654,
+ 657, 10585, 4656,
+ 657, 10585, 4658,
+ 657, 10585, 4660,
+ 657, 10585, 4662,
+ 657, 10585, 4664,
+ 657, 10585, 4666,
+ 657, 10585, 4668,
+ 657, 10585, 4670,
+ 657, 10585, 4672,
+ 657, 10585, 4674,
+ 657, 10585, 4688,
+ 657, 10585, 4690,
+ 657, 10585, 4692,
+ 657, 10585, 4694,
+ 657, 10585, 4696,
+ 657, 10585, 4756,
+ 657, 10585, 4758,
+ 657, 10585, 4786,
+ 657, 10585, 4788,
+ 657, 10585, 4792,
+ 657, 10585, 4866,
+ 657, 10585, 4868,
+ 657, 10585, 4870,
+ 657, 10585, 4902,
+ 657, 10585, 4904,
+ 657, 10585, 4906,
+ 657, 10585, 4908,
+ 657, 10585, 4916,
+ 657, 10585, 4958,
+ 657, 10585, 4960,
+ 657, 10585, 4962,
+ 657, 10585, 4974,
+ 657, 10585, 4976,
+ 657, 10585, 4978,
+ 657, 10585, 4980,
+ 657, 10585, 4982,
+ 657, 10585, 4984,
+ 657, 10585, 4986,
+ 657, 10585, 4988,
+ 657, 10585, 4990,
+ 657, 10585, 4992,
+ 657, 10585, 4994,
+ 657, 10585, 4996,
+ 657, 10585, 4998,
+ 657, 10585, 5020,
+ 657, 10585, 5022,
+ 657, 10585, 5024,
+ 657, 10585, 5028,
+ 657, 10585, 5058,
+ 657, 10585, 5060,
+ 657, 10585, 5062,
+ 657, 10585, 5064,
+ 657, 10585, 5066,
+ 657, 10585, 5068,
+ 657, 10585, 5070,
+ 657, 10585, 5072,
+ 657, 10585, 5074,
+ 657, 10585, 5076,
+ 657, 10585, 5078,
+ 657, 10585, 5080,
+ 657, 10585, 5082,
+ 657, 10585, 5084,
+ 657, 10585, 5086,
+ 657, 10585, 5088,
+ 657, 10585, 5090,
+ 657, 10585, 5092,
+ 657, 10585, 5094,
+ 657, 10585, 5096,
+ 657, 10585, 5098,
+ 657, 10585, 5102,
+ 657, 10585, 5104,
+ 657, 10585, 5106,
+ 657, 10585, 5108,
+ 657, 10585, 5110,
+ 657, 10585, 5112,
+ 657, 10585, 5116,
+ 657, 10585, 5118,
+ 657, 10585, 5120,
+ 657, 10585, 5122,
+ 657, 10585, 5124,
+ 657, 10585, 5126,
+ 657, 10585, 5128,
+ 657, 10585, 5138,
+ 657, 10585, 5142,
+ 657, 10585, 5144,
+ 657, 10585, 5148,
+ 657, 10585, 5150,
+ 657, 10585, 5162,
+ 657, 10585, 5172,
+ 657, 10585, 5174,
+ 657, 10585, 5176,
+ 657, 10585, 5180,
+ 657, 10585, 5186,
+ 657, 10585, 5188,
+ 657, 10585, 5196,
+ 657, 10585, 5198,
+ 657, 10585, 5200,
+ 657, 10585, 5202,
+ 657, 10585, 5206,
+ 657, 10585, 5208,
+ 657, 10585, 5210,
+ 657, 10585, 5212,
+ 657, 10585, 5214,
+ 657, 10585, 5216,
+ 657, 10585, 5218,
+ 657, 10585, 5220,
+ 657, 10585, 5222,
+ 657, 10585, 5224,
+ 657, 10585, 5226,
+ 657, 10585, 5246,
+ 657, 10585, 5248,
+ 657, 10585, 5250,
+ 657, 10585, 5252,
+ 657, 10585, 5254,
+ 657, 10585, 5256,
+ 657, 10585, 5258,
+ 657, 10585, 5260,
+ 657, 10585, 5262,
+ 657, 10585, 5264,
+ 657, 10585, 5266,
+ 657, 10585, 5268,
+ 657, 10585, 5270,
+ 657, 10585, 5272,
+ 657, 10585, 5274,
+ 657, 10585, 5276,
+ 657, 10585, 5282,
+ 657, 10585, 5284,
+ 657, 10585, 5286,
+ 657, 10585, 5302,
+ 657, 10585, 5304,
+ 657, 10585, 5308,
+ 657, 10585, 5310,
+ 657, 10585, 5318,
+ 657, 10585, 5320,
+ 657, 10585, 5322,
+ 657, 10585, 5324,
+ 657, 10585, 5326,
+ 657, 10585, 5328,
+ 657, 10585, 5330,
+ 657, 10585, 5334,
+ 657, 10585, 5336,
+ 657, 10585, 5338,
+ 657, 10585, 5340,
+ 657, 10585, 5342,
+ 657, 10585, 5344,
+ 657, 10585, 5346,
+ 657, 10585, 5348,
+ 657, 10585, 5350,
+ 657, 10585, 5352,
+ 657, 10585, 5354,
+ 657, 10585, 5356,
+ 657, 10585, 5358,
+ 657, 10585, 5360,
+ 657, 10585, 5362,
+ 657, 10585, 5364,
+ 657, 10585, 5366,
+ 657, 10585, 5368,
+ 657, 10585, 5426,
+ 657, 10585, 5428,
+ 657, 10585, 5454,
+ 657, 10585, 5456,
+ 657, 10585, 5458,
+ 657, 10585, 5468,
+ 657, 10585, 5488,
+ 657, 10585, 5490,
+ 657, 10585, 5492,
+ 657, 10585, 5498,
+ 657, 10585, 5500,
+ 657, 10585, 5502,
+ 657, 10585, 5504,
+ 657, 10585, 5516,
+ 657, 10585, 5570,
+ 657, 10585, 5574,
+ 657, 10585, 5576,
+ 657, 10585, 5578,
+ 657, 10585, 5580,
+ 657, 10585, 5582,
+ 657, 10585, 5584,
+ 657, 10585, 5586,
+ 657, 10585, 5588,
+ 657, 10585, 5590,
+ 657, 10585, 5592,
+ 657, 10585, 5594,
+ 657, 10585, 5596,
+ 657, 10585, 5598,
+ 657, 10585, 5600,
+ 657, 10585, 5602,
+ 657, 10585, 5608,
+ 657, 10585, 5610,
+ 657, 10585, 5612,
+ 657, 10585, 5618,
+ 657, 10585, 5672,
+ 657, 10585, 5674,
+ 657, 10585, 5676,
+ 657, 10585, 5684,
+ 657, 10585, 5686,
+ 657, 10585, 5688,
+ 657, 10585, 5712,
+ 657, 10585, 5714,
+ 657, 10585, 5716,
+ 657, 10585, 5722,
+ 657, 10585, 5724,
+ 657, 10585, 5726,
+ 657, 10585, 5728,
+ 657, 10585, 5730,
+ 657, 10585, 5742,
+ 657, 10585, 5744,
+ 657, 10585, 5746,
+ 657, 10585, 5748,
+ 657, 10585, 5752,
+ 657, 10585, 5754,
+ 657, 10585, 5788,
+ 657, 10585, 5790,
+ 657, 10585, 5792,
+ 657, 10585, 5796,
+ 657, 10585, 5798,
+ 657, 10585, 5800,
+ 657, 10585, 5802,
+ 657, 10585, 5804,
+ 657, 10585, 5806,
+ 657, 10585, 5808,
+ 657, 10585, 5810,
+ 657, 10585, 5812,
+ 657, 10585, 5814,
+ 657, 10585, 5816,
+ 657, 10585, 5818,
+ 657, 10585, 5820,
+ 657, 10585, 5822,
+ 657, 10585, 5824,
+ 657, 10585, 5826,
+ 657, 10585, 5848,
+ 657, 10585, 5850,
+ 657, 10585, 5856,
+ 657, 10585, 5864,
+ 657, 10585, 5936,
+ 657, 10585, 5938,
+ 657, 10585, 6014,
+ 657, 10585, 6016,
+ 657, 10585, 6018,
+ 657, 10585, 6022,
+ 657, 10585, 6084,
+ 657, 10585, 6086,
+ 657, 10585, 6088,
+ 657, 10585, 6094,
+ 657, 10585, 6096,
+ 657, 10585, 6134,
+ 657, 10585, 6136,
+ 657, 10585, 6140,
+ 657, 10585, 6142,
+ 657, 10585, 6144,
+ 657, 10585, 6146,
+ 657, 10585, 6156,
+ 657, 10585, 6206,
+ 657, 10585, 6208,
+ 657, 10585, 6210,
+ 657, 10585, 6238,
+ 657, 10585, 6240,
+ 657, 10585, 6242,
+ 657, 10585, 6244,
+ 657, 10585, 6252,
+ 657, 10585, 6266,
+ 657, 10585, 6270,
+ 657, 10585, 6272,
+ 657, 10585, 6276,
+ 657, 10585, 6278,
+ 657, 10585, 6280,
+ 657, 10585, 6284,
+ 657, 10585, 6286,
+ 657, 10585, 6288,
+ 657, 10585, 6290,
+ 657, 10585, 6292,
+ 657, 10585, 6294,
+ 657, 10585, 6296,
+ 657, 10585, 6298,
+ 657, 10585, 6304,
+ 657, 10585, 6306,
+ 657, 10585, 6308,
+ 657, 10585, 6310,
+ 657, 10585, 6314,
+ 657, 10585, 6316,
+ 657, 10585, 6320,
+ 657, 10585, 6322,
+ 657, 10585, 6324,
+ 657, 10585, 6326,
+ 657, 10585, 6330,
+ 657, 10585, 6332,
+ 657, 10585, 6334,
+ 657, 10585, 6338,
+ 657, 10585, 6340,
+ 657, 10585, 6342,
+ 657, 10585, 6344,
+ 657, 10585, 6346,
+ 657, 10585, 6348,
+ 657, 10585, 6350,
+ 657, 10585, 6352,
+ 657, 10585, 6354,
+ 657, 10585, 6356,
+ 657, 10585, 6358,
+ 657, 10585, 6360,
+ 657, 10585, 6362,
+ 657, 10585, 6364,
+ 657, 10585, 6366,
+ 657, 10585, 6470,
+ 657, 10585, 6472,
+ 657, 10585, 6474,
+ 657, 10585, 6476,
+ 657, 10585, 6478,
+ 657, 10585, 6480,
+ 657, 10585, 6584,
+ 657, 10585, 6586,
+ 657, 10585, 6588,
+ 657, 10585, 6590,
+ 657, 10585, 6592,
+ 657, 10585, 6660,
+ 657, 10585, 6662,
+ 657, 10585, 6664,
+ 657, 10585, 6666,
+ 657, 10585, 6668,
+ 657, 10585, 6834,
+ 657, 10585, 6836,
+ 657, 10585, 6838,
+ 657, 10585, 6840,
+ 657, 10585, 6842,
+ 657, 10585, 6844,
+ 657, 10585, 6916,
+ 657, 10585, 6918,
+ 657, 10585, 6920,
+ 657, 10585, 6922,
+ 657, 10585, 6924,
+ 657, 10585, 6926,
+ 657, 10585, 6928,
+ 657, 10585, 6930,
+ 657, 10585, 6932,
+ 657, 10585, 6934,
+ 657, 10585, 6936,
+ 657, 10585, 6938,
+ 657, 10585, 6940,
+ 657, 10585, 6942,
+ 657, 10585, 6944,
+ 657, 10585, 6946,
+ 657, 10585, 6962,
+ 657, 10585, 6964,
+ 657, 10585, 6966,
+ 657, 10585, 6968,
+ 657, 10585, 6970,
+ 657, 10585, 6972,
+ 657, 10585, 6998,
+ 657, 10585, 7000,
+ 657, 10585, 7002,
+ 657, 10585, 7004,
+ 657, 10585, 7006,
+ 657, 10585, 7008,
+ 657, 10585, 7156,
+ 657, 10585, 7158,
+ 657, 10585, 7160,
+ 657, 10585, 7162,
+ 657, 10585, 7212,
+ 657, 10585, 7214,
+ 657, 10585, 7216,
+ 657, 10585, 7218,
+ 657, 10585, 7220,
+ 657, 10585, 7224,
+ 657, 10585, 7234,
+ 657, 10585, 7236,
+ 657, 10585, 7240,
+ 657, 10585, 7242,
+ 657, 10585, 7250,
+ 657, 10585, 7252,
+ 657, 10585, 7254,
+ 657, 10585, 7256,
+ 657, 10585, 7258,
+ 657, 10585, 7260,
+ 657, 10585, 7278,
+ 657, 10585, 7280,
+ 657, 10585, 7286,
+ 657, 10585, 7288,
+ 657, 10585, 7290,
+ 657, 10585, 7292,
+ 657, 10585, 7294,
+ 657, 10585, 7296,
+ 657, 10585, 7298,
+ 657, 10585, 7300,
+ 657, 10585, 7302,
+ 657, 10585, 7304,
+ 657, 10585, 7456,
+ 657, 10585, 7458,
+ 657, 10585, 7460,
+ 657, 10585, 7552,
+ 657, 10585, 7554,
+ 657, 10585, 7556,
+ 657, 10585, 7564,
+ 657, 10585, 7620,
+ 657, 10585, 7622,
+ 657, 10585, 7624,
+ 657, 10585, 7876,
+ 657, 10585, 7878,
+ 657, 10585, 7880,
+ 657, 10585, 7882,
+ 657, 10585, 7894,
+ 657, 10585, 7896,
+ 657, 10585, 7898,
+ 657, 10585, 7900,
+ 657, 10585, 7902,
+ 705, 8694,
+ 719, 6741, 568,
+ 719, 13042,
+ 721, 6121, 1044,
+ 729, 11635, 8775, 601, 5707, 1546,
+ 729, 11635, 8775, 601, 5877, 1546,
+ 729, 11635, 8775, 601, 5877, 9546,
+ 729, 11635, 8775, 601, 5877, 10804,
+ 729, 11635, 8775, 601, 6543, 7708,
+ 729, 11635, 8775, 991, 7636,
+ 729, 11635, 8775, 991, 7708,
+ 729, 11635, 8775, 991, 10804,
+ 729, 11635, 8775, 1547, 10666,
+ 729, 11635, 8775, 1547, 10804,
+ 729, 11635, 8775, 2412,
+ 729, 11635, 8775, 4117, 5707, 7636,
+ 729, 11635, 8775, 4117, 5877, 1546,
+ 729, 11635, 8775, 4117, 5877, 10666,
+ 729, 11635, 8775, 4117, 6543, 7708,
+ 729, 11635, 8775, 4614,
+ 729, 11635, 8775, 4615, 10666,
+ 729, 11635, 8775, 4849, 5707, 7636,
+ 729, 11635, 8775, 5496,
+ 729, 11635, 8775, 5497, 601, 6542,
+ 729, 11635, 8775, 5497, 990,
+ 729, 11635, 8775, 5497, 1546,
+ 729, 11635, 8775, 5497, 2091, 6740,
+ 729, 11635, 8775, 5497, 4117, 6542,
+ 729, 11635, 8775, 5497, 6610,
+ 729, 11635, 8775, 5497, 6674,
+ 729, 11635, 8775, 5497, 6740,
+ 729, 11635, 8775, 5497, 7580,
+ 729, 11635, 8775, 5497, 8056,
+ 729, 11635, 8775, 5497, 8122,
+ 729, 11635, 8775, 5497, 9158,
+ 729, 11635, 8775, 5497, 9811, 6434,
+ 729, 11635, 8775, 5497, 10468,
+ 729, 11635, 8775, 5497, 10728,
+ 729, 11635, 8775, 5497, 10959, 6434,
+ 729, 11635, 8775, 5497, 11097, 6434,
+ 729, 11635, 8775, 5497, 11098,
+ 729, 11635, 8775, 5497, 11765, 6434,
+ 729, 11635, 8775, 5497, 12472,
+ 729, 11635, 8775, 5831, 10804,
+ 729, 11635, 8775, 6406,
+ 729, 11635, 8775, 6407, 10666,
+ 729, 11635, 8775, 6617, 760,
+ 729, 11635, 8775, 6675, 7636,
+ 729, 11635, 8775, 6675, 10666,
+ 729, 11635, 8775, 7316,
+ 729, 11635, 8775, 7317, 10666,
+ 729, 11635, 8775, 7415, 5496,
+ 729, 11635, 8775, 7415, 10666,
+ 729, 11635, 8775, 7581, 760,
+ 729, 11635, 8775, 7637, 7708,
+ 729, 11635, 8775, 7709, 10804,
+ 729, 11635, 8775, 7884,
+ 729, 11635, 8775, 8057, 1546,
+ 729, 11635, 8775, 8057, 5830,
+ 729, 11635, 8775, 8057, 7636,
+ 729, 11635, 8775, 8057, 10666,
+ 729, 11635, 8775, 8057, 10728,
+ 729, 11635, 8775, 8057, 10804,
+ 729, 11635, 8775, 8308,
+ 729, 11635, 8775, 8747, 5496,
+ 729, 11635, 8775, 9159, 10666,
+ 729, 11635, 8775, 9271, 10666,
+ 729, 11635, 8775, 9811, 6074,
+ 729, 11635, 8775, 10729, 760,
+ 729, 11635, 8775, 10959, 6074,
+ 729, 11635, 8775, 11097, 6074,
+ 729, 11635, 8775, 11225, 10666,
+ 729, 11635, 8775, 11765, 6074,
+ 729, 11635, 8775, 12473, 10804,
+ 730,
+ 789, 8774,
+ 807, 9633, 9718,
+ 807, 9718,
+ 827, 10145, 601, 6909, 721, 4117, 11649, 7100,
+ 827, 10145, 601, 6909, 721, 4849, 4117, 7100,
+ 827, 10145, 601, 6909, 721, 4849, 7100,
+ 827, 10145, 601, 6909, 721, 7443, 4117, 7100,
+ 827, 10145, 601, 6909, 721, 7443, 7100,
+ 827, 10145, 601, 6909, 721, 11649, 7100,
+ 827, 10145, 601, 7101, 721, 4117, 11649, 6908,
+ 827, 10145, 601, 7101, 721, 4849, 4117, 6908,
+ 827, 10145, 601, 7101, 721, 4849, 6908,
+ 827, 10145, 601, 7101, 721, 7443, 4117, 6908,
+ 827, 10145, 601, 7101, 721, 7443, 6908,
+ 827, 10145, 601, 7101, 721, 11649, 6908,
+ 827, 10145, 601, 8153, 721, 4849, 8716,
+ 827, 10145, 601, 8153, 721, 7443, 8716,
+ 827, 10145, 601, 8153, 721, 11649, 8716,
+ 827, 10145, 601, 8717, 721, 4849, 8152,
+ 827, 10145, 601, 8717, 721, 7443, 8152,
+ 827, 10145, 601, 8717, 721, 11649, 8152,
+ 827, 10145, 4117, 6909, 721, 601, 11649, 7100,
+ 827, 10145, 4117, 6909, 721, 4849, 601, 7100,
+ 827, 10145, 4117, 6909, 721, 4849, 7100,
+ 827, 10145, 4117, 6909, 721, 7443, 601, 7100,
+ 827, 10145, 4117, 6909, 721, 7443, 7100,
+ 827, 10145, 4117, 6909, 721, 11649, 7100,
+ 827, 10145, 4117, 7101, 721, 601, 11649, 6908,
+ 827, 10145, 4117, 7101, 721, 4849, 601, 6908,
+ 827, 10145, 4117, 7101, 721, 4849, 6908,
+ 827, 10145, 4117, 7101, 721, 7443, 601, 6908,
+ 827, 10145, 4117, 7101, 721, 7443, 6908,
+ 827, 10145, 4117, 7101, 721, 11649, 6908,
+ 827, 10145, 4117, 8153, 721, 4849, 8716,
+ 827, 10145, 4117, 8153, 721, 7443, 8716,
+ 827, 10145, 4117, 8153, 721, 11649, 8716,
+ 827, 10145, 4117, 8717, 721, 4849, 8152,
+ 827, 10145, 4117, 8717, 721, 7443, 8152,
+ 827, 10145, 4117, 8717, 721, 11649, 8152,
+ 827, 10145, 4849, 601, 6909, 721, 7443, 4117, 7100,
+ 827, 10145, 4849, 4117, 6909, 721, 7443, 601, 7100,
+ 827, 10145, 4849, 6909, 721, 7443, 601, 7100,
+ 827, 10145, 4849, 6909, 721, 7443, 4117, 7100,
+ 827, 10145, 4849, 6909, 721, 7443, 10677, 7100,
+ 827, 10145, 4849, 7101, 721, 7443, 601, 6908,
+ 827, 10145, 4849, 7101, 721, 7443, 4117, 6908,
+ 827, 10145, 4849, 7101, 721, 7443, 10677, 6908,
+ 827, 10145, 6909, 600,
+ 827, 10145, 6909, 601, 721, 4848,
+ 827, 10145, 6909, 601, 721, 7101, 4116,
+ 827, 10145, 6909, 601, 721, 7442,
+ 827, 10145, 6909, 601, 721, 11648,
+ 827, 10145, 6909, 4116,
+ 827, 10145, 6909, 4117, 721, 4848,
+ 827, 10145, 6909, 4117, 721, 7442,
+ 827, 10145, 6909, 4117, 721, 11648,
+ 827, 10145, 6909, 4848,
+ 827, 10145, 6909, 4849, 721, 7101, 7442,
+ 827, 10145, 6909, 7442,
+ 827, 10145, 6909, 8153, 3993, 10676,
+ 827, 10145, 6909, 8153, 3993, 11648,
+ 827, 10145, 6909, 8849, 3993, 10676,
+ 827, 10145, 6909, 8849, 3993, 11648,
+ 827, 10145, 6909, 10676,
+ 827, 10145, 6909, 10677, 721, 4848,
+ 827, 10145, 6909, 10677, 721, 7442,
+ 827, 10145, 6909, 10677, 721, 11648,
+ 827, 10145, 6909, 11191, 3993, 10676,
+ 827, 10145, 6909, 11191, 3993, 11648,
+ 827, 10145, 6909, 11648,
+ 827, 10145, 7101, 600,
+ 827, 10145, 7101, 601, 721, 4848,
+ 827, 10145, 7101, 601, 721, 6909, 4116,
+ 827, 10145, 7101, 601, 721, 7442,
+ 827, 10145, 7101, 601, 721, 11648,
+ 827, 10145, 7101, 731, 601, 721, 4848,
+ 827, 10145, 7101, 731, 601, 721, 7442,
+ 827, 10145, 7101, 731, 4117, 721, 4848,
+ 827, 10145, 7101, 731, 4117, 721, 7442,
+ 827, 10145, 7101, 4116,
+ 827, 10145, 7101, 4117, 721, 4848,
+ 827, 10145, 7101, 4117, 721, 7442,
+ 827, 10145, 7101, 4117, 721, 11648,
+ 827, 10145, 7101, 4848,
+ 827, 10145, 7101, 4849, 721, 6909, 7442,
+ 827, 10145, 7101, 7442,
+ 827, 10145, 7101, 8153, 3993, 10676,
+ 827, 10145, 7101, 8153, 3993, 11648,
+ 827, 10145, 7101, 8849, 3993, 10676,
+ 827, 10145, 7101, 8849, 3993, 11648,
+ 827, 10145, 7101, 10001, 6622,
+ 827, 10145, 7101, 10001, 7773, 4849, 569, 7121, 7442,
+ 827, 10145, 7101, 10001, 7773, 7443, 569, 7121, 4848,
+ 827, 10145, 7101, 10676,
+ 827, 10145, 7101, 10677, 721, 4848,
+ 827, 10145, 7101, 10677, 721, 7442,
+ 827, 10145, 7101, 10677, 721, 11648,
+ 827, 10145, 7101, 11191, 3993, 10676,
+ 827, 10145, 7101, 11191, 3993, 11648,
+ 827, 10145, 7101, 11648,
+ 827, 10145, 7443, 601, 6909, 721, 4849, 4117, 7100,
+ 827, 10145, 7443, 4117, 6909, 721, 4849, 601, 7100,
+ 827, 10145, 7443, 6909, 721, 4849, 601, 7100,
+ 827, 10145, 7443, 6909, 721, 4849, 4117, 7100,
+ 827, 10145, 7443, 6909, 721, 4849, 10677, 7100,
+ 827, 10145, 7443, 7101, 721, 4849, 601, 6908,
+ 827, 10145, 7443, 7101, 721, 4849, 4117, 6908,
+ 827, 10145, 7443, 7101, 721, 4849, 10677, 6908,
+ 827, 10145, 8153, 601, 721, 4848,
+ 827, 10145, 8153, 601, 721, 7442,
+ 827, 10145, 8153, 601, 721, 11648,
+ 827, 10145, 8153, 4117, 721, 4848,
+ 827, 10145, 8153, 4117, 721, 7442,
+ 827, 10145, 8153, 4117, 721, 11648,
+ 827, 10145, 8153, 10676,
+ 827, 10145, 8153, 10677, 721, 4848,
+ 827, 10145, 8153, 10677, 721, 7442,
+ 827, 10145, 8153, 10677, 721, 11648,
+ 827, 10145, 8153, 11648,
+ 827, 10145, 10677, 6909, 721, 4849, 7100,
+ 827, 10145, 10677, 6909, 721, 7443, 7100,
+ 827, 10145, 10677, 6909, 721, 11649, 7100,
+ 827, 10145, 10677, 7101, 721, 4849, 6908,
+ 827, 10145, 10677, 7101, 721, 7443, 6908,
+ 827, 10145, 10677, 7101, 721, 11649, 6908,
+ 827, 10145, 10677, 8153, 721, 4849, 8716,
+ 827, 10145, 10677, 8153, 721, 7443, 8716,
+ 827, 10145, 10677, 8153, 721, 11649, 8716,
+ 827, 10145, 10677, 8717, 721, 4849, 8152,
+ 827, 10145, 10677, 8717, 721, 7443, 8152,
+ 827, 10145, 10677, 8717, 721, 11649, 8152,
+ 889, 2412,
+ 909, 8759, 6,
+ 909, 8759, 14,
+ 909, 8759, 26,
+ 909, 8759, 30,
+ 909, 8759, 32,
+ 909, 8759, 36,
+ 909, 8759, 38,
+ 909, 8759, 240,
+ 909, 8759, 248,
+ 909, 8759, 254,
+ 909, 8759, 466,
+ 909, 8759, 472,
+ 909, 8759, 494,
+ 909, 8759, 528,
+ 909, 8759, 538,
+ 909, 8759, 544,
+ 909, 8759, 550,
+ 909, 8759, 554,
+ 909, 8759, 566,
+ 909, 8759, 628,
+ 909, 8759, 642,
+ 909, 8759, 844,
+ 909, 8759, 1458,
+ 909, 8759, 1460,
+ 909, 8759, 1462,
+ 909, 8759, 1464,
+ 909, 8759, 2602,
+ 909, 8759, 2608,
+ 909, 8759, 2630,
+ 909, 8759, 4542,
+ 909, 8759, 4584,
+ 909, 8759, 4586,
+ 909, 8759, 4588,
+ 909, 8759, 4590,
+ 909, 8759, 5872,
+ 909, 8759, 6974,
+ 909, 9617, 826,
+ 909, 9617, 920,
+ 909, 9617, 1036,
+ 909, 9617, 1093, 2170,
+ 909, 9617, 1093, 2778,
+ 909, 9617, 1093, 7694,
+ 909, 9617, 1132,
+ 909, 9617, 1136,
+ 909, 9617, 2025, 2170,
+ 909, 9617, 2025, 2778,
+ 909, 9617, 2025, 4214,
+ 909, 9617, 2025, 7694,
+ 909, 9617, 2166,
+ 909, 9617, 2201, 2170,
+ 909, 9617, 2201, 2778,
+ 909, 9617, 2386,
+ 909, 9617, 2390,
+ 909, 9617, 2586,
+ 909, 9617, 3794,
+ 909, 9617, 3805, 429, 6604,
+ 909, 9617, 3806,
+ 909, 9617, 3940,
+ 909, 9617, 4194,
+ 909, 9617, 4208,
+ 909, 9617, 4390,
+ 909, 9617, 4398,
+ 909, 9617, 4536,
+ 909, 9617, 4628,
+ 909, 9617, 4835, 2170,
+ 909, 9617, 4835, 2778,
+ 909, 9617, 4835, 4214,
+ 909, 9617, 4835, 7694,
+ 909, 9617, 4895, 2170,
+ 909, 9617, 4895, 2778,
+ 909, 9617, 4940,
+ 909, 9617, 4950,
+ 909, 9617, 5012,
+ 909, 9617, 5524,
+ 909, 9617, 5646,
+ 909, 9617, 5764,
+ 909, 9617, 6101, 2170,
+ 909, 9617, 6101, 2778,
+ 909, 9617, 6113, 2170,
+ 909, 9617, 6113, 2778,
+ 909, 9617, 6521, 2170,
+ 909, 9617, 6521, 2778,
+ 909, 9617, 6578,
+ 909, 9617, 6600,
+ 909, 9617, 6670,
+ 909, 9617, 6852,
+ 909, 9617, 6873, 2170,
+ 909, 9617, 6873, 2778,
+ 909, 9617, 6873, 7694,
+ 909, 9617, 6907, 2170,
+ 909, 9617, 6907, 2778,
+ 909, 9617, 7057, 2170,
+ 909, 9617, 7057, 2778,
+ 909, 9617, 7185, 2170,
+ 909, 9617, 7185, 2778,
+ 909, 9617, 7526,
+ 909, 9617, 7593, 2170,
+ 909, 9617, 7593, 2778,
+ 909, 9617, 7600,
+ 909, 9617, 7603, 2170,
+ 909, 9617, 7603, 2778,
+ 909, 9617, 7662,
+ 909, 9617, 7704,
+ 909, 9617, 7813, 2170,
+ 909, 9617, 7813, 2778,
+ 909, 9617, 7974,
+ 909, 9617, 8484,
+ 909, 9617, 8486,
+ 909, 9617, 8576,
+ 909, 9617, 8640,
+ 909, 9617, 8681, 2170,
+ 909, 9617, 8681, 2778,
+ 909, 9617, 8681, 7694,
+ 909, 9617, 8735, 2170,
+ 909, 9617, 8735, 2778,
+ 909, 9617, 8824,
+ 909, 9617, 8870,
+ 909, 9617, 9102,
+ 909, 9617, 9948,
+ 909, 9617, 11488,
+ 909, 9617, 11803, 4389, 5969, 7736,
+ 909, 9617, 11803, 4536,
+ 909, 9617, 11803, 6100,
+ 909, 9617, 11803, 7816,
+ 909, 9617, 11803, 8946,
+ 909, 9617, 12419, 1092,
+ 909, 9617, 12419, 1170,
+ 909, 9617, 12419, 2504,
+ 909, 9617, 12419, 3788,
+ 909, 9617, 12419, 3850,
+ 909, 9617, 12419, 4172,
+ 909, 9617, 12419, 4196,
+ 909, 9617, 12419, 4218,
+ 909, 9617, 12419, 4244,
+ 909, 9617, 12419, 4342,
+ 909, 9617, 12419, 4844,
+ 909, 9617, 12419, 4894,
+ 909, 9617, 12419, 5632,
+ 909, 9617, 12419, 5764,
+ 909, 9617, 12419, 6116,
+ 909, 9617, 12419, 6952,
+ 909, 9617, 12419, 7532,
+ 909, 9617, 12419, 7726,
+ 909, 9617, 12419, 8154,
+ 909, 9617, 12419, 8730,
+ 909, 9617, 12419, 8793, 9426,
+ 909, 9617, 12419, 8870,
+ 909, 9617, 12495, 4172,
+ 909, 9617, 12495, 7726,
+ 909, 9617, 12495, 8154,
+ 909, 9617, 12495, 8870,
+ 1009, 8178,
+ 1009, 8180,
+ 1009, 8182,
+ 1009, 8184,
+ 1009, 8186,
+ 1009, 8188,
+ 1045, 5444,
+ 1045, 6376,
+ 1045, 7172,
+ 1045, 10374,
+ 1109, 429, 7394,
+ 1177, 718,
+ 1429, 9730,
+ 1429, 9912,
+ 1635, 5758,
+ 1741, 247, 380,
+ 1741, 247, 412,
+ 1741, 323, 332,
+ 1741, 5965, 1859, 170,
+ 1741, 5965, 1859, 564,
+ 1741, 5965, 1859, 2684,
+ 1741, 5965, 1859, 8034,
+ 1741, 6689, 2170,
+ 1741, 6689, 2540,
+ 1741, 6689, 2778,
+ 1741, 6689, 4200,
+ 1741, 6689, 4214,
+ 1741, 6689, 5190,
+ 1741, 6689, 6260,
+ 1741, 6689, 6722,
+ 1741, 6689, 7508,
+ 1741, 6689, 7694,
+ 1741, 7803, 5759, 0,
+ 1741, 7803, 5759, 8,
+ 1741, 7803, 5759, 16,
+ 1741, 7803, 5759, 28,
+ 1741, 7803, 5759, 40,
+ 1741, 7803, 5759, 48,
+ 1741, 7803, 5759, 58,
+ 1741, 7803, 5759, 72,
+ 1741, 7803, 5759, 78,
+ 1741, 7803, 5759, 98,
+ 1741, 7803, 5759, 168,
+ 1741, 7803, 5759, 266,
+ 1741, 7803, 5759, 606,
+ 1741, 7803, 5759, 668,
+ 1741, 7803, 5759, 1859, 1588,
+ 1741, 7803, 5759, 1859, 1658,
+ 1741, 8405, 28,
+ 1741, 8405, 108,
+ 1741, 8405, 130,
+ 1741, 8405, 150,
+ 1741, 8405, 209, 2646,
+ 1741, 8405, 209, 5846,
+ 1741, 8405, 247, 2646,
+ 1741, 8405, 247, 5846,
+ 1741, 8405, 322,
+ 1741, 8405, 351, 4878,
+ 1741, 8405, 351, 4898,
+ 1741, 8405, 380,
+ 1741, 8405, 412,
+ 1741, 8405, 480,
+ 1741, 8405, 537, 2646,
+ 1741, 8405, 537, 5846,
+ 1741, 8405, 568,
+ 1741, 8405, 632,
+ 1741, 8405, 660,
+ 1741, 8405, 1619, 2646,
+ 1741, 8405, 1619, 5846,
+ 1741, 8405, 2038,
+ 1741, 8405, 2134,
+ 1741, 8405, 2219, 2646,
+ 1741, 8405, 2219, 5846,
+ 1741, 8405, 2685, 2646,
+ 1741, 8405, 2685, 5846,
+ 1741, 10154,
+ 1741, 11134,
+ 1741, 11227, 5759, 350,
+ 1741, 11227, 5759, 2134,
+ 1741, 12421, 4926,
+ 1764,
+ 1809, 4876,
+ 1809, 8153, 7391, 11195, 4926,
+ 1809, 9898,
+ 2027, 2643, 1817, 5759, 1734,
+ 2027, 2643, 1817, 5759, 4826,
+ 2027, 2643, 1817, 5965, 8442,
+ 2027, 2643, 1817, 5965, 8444,
+ 2027, 2643, 1817, 6689, 2170,
+ 2027, 2643, 1817, 6689, 2540,
+ 2027, 2643, 1817, 6689, 2778,
+ 2027, 2643, 1817, 6689, 4200,
+ 2027, 2643, 1817, 6689, 4214,
+ 2027, 2643, 1817, 6689, 5190,
+ 2027, 2643, 1817, 6689, 6260,
+ 2027, 2643, 1817, 6689, 6722,
+ 2027, 2643, 1817, 6689, 7508,
+ 2027, 2643, 1817, 6689, 7694,
+ 2027, 2643, 1817, 7803, 5759, 8,
+ 2027, 2643, 1817, 7803, 5759, 28,
+ 2027, 2643, 1817, 7803, 5759, 40,
+ 2027, 2643, 1817, 7803, 5759, 58,
+ 2027, 2643, 1817, 7803, 5759, 66,
+ 2027, 2643, 1817, 7803, 5759, 98,
+ 2027, 2643, 1817, 7803, 5759, 266,
+ 2027, 2643, 1817, 7803, 5759, 290,
+ 2027, 2643, 1817, 7803, 5759, 422,
+ 2027, 2643, 1817, 7803, 5759, 458,
+ 2027, 2643, 1817, 7803, 5759, 590,
+ 2027, 2643, 1817, 7803, 5759, 606,
+ 2027, 2643, 1817, 7803, 5759, 608,
+ 2027, 2643, 1817, 7803, 5759, 700,
+ 2027, 2643, 1817, 7803, 5759, 2156,
+ 2027, 2643, 1817, 7803, 5759, 2806,
+ 2027, 2643, 1817, 7803, 5759, 7803, 11238,
+ 2027, 2643, 1817, 8405, 1809, 100,
+ 2027, 2643, 1817, 8405, 1809, 138,
+ 2027, 2643, 1817, 8405, 1809, 196,
+ 2027, 2643, 1817, 8405, 1809, 236,
+ 2027, 2643, 1817, 8405, 1809, 306,
+ 2027, 2643, 1817, 8405, 1809, 332,
+ 2027, 2643, 1817, 8405, 1809, 364,
+ 2027, 2643, 1817, 8405, 1809, 392,
+ 2027, 2643, 1817, 8405, 1809, 462,
+ 2027, 2643, 1817, 8405, 1809, 496,
+ 2027, 2643, 1817, 8405, 1809, 524,
+ 2027, 2643, 1817, 8405, 1809, 556,
+ 2027, 2643, 1817, 8405, 1809, 610,
+ 2027, 2643, 1817, 8405, 1809, 638,
+ 2027, 2643, 1817, 8405, 1809, 652,
+ 2027, 2643, 1817, 8405, 1809, 1702,
+ 2027, 2643, 1817, 8405, 1809, 2030,
+ 2027, 2643, 1817, 8405, 1809, 2212,
+ 2027, 2643, 1817, 8405, 1809, 2678,
+ 2027, 2643, 1817, 8405, 1809, 2732,
+ 2027, 2643, 1817, 8405, 1809, 2980,
+ 2027, 2643, 1817, 8405, 4423, 100,
+ 2027, 2643, 1817, 8405, 4423, 138,
+ 2027, 2643, 1817, 8405, 4423, 196,
+ 2027, 2643, 1817, 8405, 4423, 236,
+ 2027, 2643, 1817, 8405, 4423, 306,
+ 2027, 2643, 1817, 8405, 4423, 332,
+ 2027, 2643, 1817, 8405, 4423, 364,
+ 2027, 2643, 1817, 8405, 4423, 392,
+ 2027, 2643, 1817, 8405, 4423, 462,
+ 2027, 2643, 1817, 8405, 4423, 496,
+ 2027, 2643, 1817, 8405, 4423, 524,
+ 2027, 2643, 1817, 8405, 4423, 556,
+ 2027, 2643, 1817, 8405, 4423, 610,
+ 2027, 2643, 1817, 8405, 4423, 638,
+ 2027, 2643, 1817, 8405, 4423, 652,
+ 2027, 2643, 1817, 8405, 4423, 1702,
+ 2027, 2643, 1817, 8405, 4423, 2030,
+ 2027, 2643, 1817, 8405, 4423, 2212,
+ 2027, 2643, 1817, 8405, 4423, 2678,
+ 2027, 2643, 1817, 8405, 4423, 2732,
+ 2027, 2643, 1817, 8405, 4423, 2980,
+ 2027, 2643, 1817, 8405, 6789, 2,
+ 2027, 2643, 1817, 8405, 6789, 6,
+ 2027, 2643, 1817, 8405, 6789, 20,
+ 2027, 2643, 1817, 8405, 6789, 24,
+ 2027, 2643, 1817, 8405, 6789, 26,
+ 2027, 2643, 1817, 8405, 6789, 42,
+ 2027, 2643, 1817, 8405, 6789, 400,
+ 2027, 8701, 5758,
+ 2075, 1809, 5965, 11424,
+ 2075, 4423, 5965, 11424,
+ 2075, 6616,
+ 2075, 6689, 2170,
+ 2075, 6689, 2540,
+ 2075, 6689, 2778,
+ 2075, 6689, 4200,
+ 2075, 6689, 4214,
+ 2075, 6689, 5190,
+ 2075, 6689, 6260,
+ 2075, 6689, 6722,
+ 2075, 6689, 7508,
+ 2075, 6689, 7694,
+ 2075, 8405, 0,
+ 2075, 8405, 8,
+ 2075, 8405, 16,
+ 2075, 8405, 26,
+ 2075, 8405, 28,
+ 2075, 8405, 40,
+ 2075, 8405, 100,
+ 2075, 8405, 138,
+ 2075, 8405, 162,
+ 2075, 8405, 196,
+ 2075, 8405, 236,
+ 2075, 8405, 292,
+ 2075, 8405, 306,
+ 2075, 8405, 332,
+ 2075, 8405, 364,
+ 2075, 8405, 392,
+ 2075, 8405, 393, 8936,
+ 2075, 8405, 440,
+ 2075, 8405, 462,
+ 2075, 8405, 510,
+ 2075, 8405, 524,
+ 2075, 8405, 556,
+ 2075, 8405, 622,
+ 2075, 8405, 652,
+ 2075, 8405, 884,
+ 2075, 8405, 1228,
+ 2075, 8405, 2126,
+ 2075, 8405, 2127, 8936,
+ 2075, 8405, 2438,
+ 2075, 8405, 4679, 292,
+ 2075, 8405, 4679, 510,
+ 2075, 8405, 4679, 884,
+ 2075, 8405, 11470,
+ 2075, 8775, 441, 8104,
+ 2075, 8775, 11636,
+ 2075, 10767, 4895, 1809, 5964,
+ 2075, 10767, 4895, 4423, 5964,
+ 2075, 10767, 4895, 8649, 5964,
+ 2075, 10767, 4895, 11475, 5964,
+ 2075, 10767, 7551, 1809, 5964,
+ 2075, 10767, 7551, 4423, 5964,
+ 2075, 10767, 7551, 8649, 5964,
+ 2075, 10767, 8153, 1045, 6376,
+ 2075, 10767, 12511, 4926,
+ 2075, 11672,
+ 2075, 12017, 4926,
+ 2088,
+ 2091, 1, 8763, 428,
+ 2091, 1, 10579, 428,
+ 2091, 81, 9263, 428,
+ 2091, 5758,
+ 2091, 5972,
+ 2091, 6569, 4926,
+ 2091, 6741, 568,
+ 2091, 7708,
+ 2091, 7919, 6741, 568,
+ 2091, 8521, 10573, 428,
+ 2091, 8521, 10573, 429, 445, 6741, 568,
+ 2091, 8745, 6989, 429, 445, 6741, 568,
+ 2091, 8745, 10379, 429, 445, 6741, 568,
+ 2091, 10411, 568,
+ 2091, 11041, 568,
+ 2091, 11098,
+ 2091, 11621, 568,
+ 2091, 12472,
+ 2091, 13045, 6741, 568,
+ 2159, 825, 2690,
+ 2159, 3771, 8020,
+ 2159, 3992,
+ 2159, 4210,
+ 2159, 4530,
+ 2159, 6564,
+ 2159, 7921, 429, 6568,
+ 2159, 8009, 3711, 13054,
+ 2159, 8153, 10728,
+ 2159, 9973, 8975, 8524,
+ 2159, 10267, 4210,
+ 2163, 5758,
+ 2167, 8325, 8405, 0,
+ 2167, 8325, 8405, 8,
+ 2167, 8325, 8405, 16,
+ 2167, 8325, 8405, 28,
+ 2167, 8325, 8405, 40,
+ 2167, 8325, 8405, 102,
+ 2167, 8325, 8405, 142,
+ 2167, 8325, 8405, 164,
+ 2167, 8325, 8405, 172,
+ 2167, 8325, 8405, 174,
+ 2167, 8325, 8405, 176,
+ 2167, 8325, 8405, 182,
+ 2167, 8325, 8405, 184,
+ 2167, 8325, 8405, 238,
+ 2167, 8325, 8405, 266,
+ 2167, 8325, 8405, 306,
+ 2167, 8325, 8405, 310,
+ 2167, 8325, 8405, 326,
+ 2167, 8325, 8405, 468,
+ 2167, 8325, 8405, 560,
+ 2167, 8325, 8405, 606,
+ 2167, 8325, 8405, 612,
+ 2167, 8325, 8405, 672,
+ 2167, 8325, 8405, 886,
+ 2167, 8325, 8405, 1106,
+ 2167, 8325, 8405, 1122,
+ 2167, 8325, 8405, 1124,
+ 2167, 8325, 8405, 1614,
+ 2167, 8325, 8405, 2214,
+ 2167, 8325, 8405, 2518,
+ 2167, 8325, 8405, 2680,
+ 2167, 8325, 9513, 2170,
+ 2167, 8325, 9513, 2670,
+ 2167, 8325, 9513, 4200,
+ 2167, 8325, 9513, 6784,
+ 2167, 9583, 5759, 0,
+ 2167, 9583, 5759, 16,
+ 2167, 9583, 5759, 40,
+ 2167, 9583, 5759, 100,
+ 2167, 9583, 5759, 116,
+ 2167, 9583, 5759, 138,
+ 2167, 9583, 5759, 144,
+ 2167, 9583, 5759, 152,
+ 2167, 9583, 5759, 196,
+ 2167, 9583, 5759, 216,
+ 2167, 9583, 5759, 230,
+ 2167, 9583, 5759, 236,
+ 2167, 9583, 5759, 292,
+ 2167, 9583, 5759, 296,
+ 2167, 9583, 5759, 306,
+ 2167, 9583, 5759, 326,
+ 2167, 9583, 5759, 332,
+ 2167, 9583, 5759, 364,
+ 2167, 9583, 5759, 374,
+ 2167, 9583, 5759, 384,
+ 2167, 9583, 5759, 392,
+ 2167, 9583, 5759, 416,
+ 2167, 9583, 5759, 462,
+ 2167, 9583, 5759, 510,
+ 2167, 9583, 5759, 520,
+ 2167, 9583, 5759, 524,
+ 2167, 9583, 5759, 556,
+ 2167, 9583, 5759, 576,
+ 2167, 9583, 5759, 610,
+ 2167, 9583, 5759, 614,
+ 2167, 9583, 5759, 638,
+ 2167, 9583, 5759, 652,
+ 2167, 9583, 5759, 670,
+ 2167, 9583, 5759, 2516,
+ 2167, 9583, 5759, 2566,
+ 2167, 9583, 5759, 2678,
+ 2167, 9583, 5759, 3700,
+ 2167, 9583, 5759, 9058,
+ 2167, 9583, 5759, 10790,
+ 2167, 9583, 5759, 11436,
+ 2167, 9583, 5759, 11926,
+ 2167, 9583, 5759, 12408,
+ 2167, 9583, 5759, 12410,
+ 2167, 9583, 5759, 12896,
+ 2167, 9583, 6129, 9178,
+ 2167, 9583, 8525, 2170,
+ 2167, 9583, 8525, 2670,
+ 2167, 9583, 8525, 2778,
+ 2167, 9583, 8525, 8876,
+ 2167, 9583, 8525, 9344,
+ 2171, 1045, 5387, 2779, 4113, 12132,
+ 2171, 1045, 8392,
+ 2209, 2671, 10625, 5758,
+ 2209, 5758,
+ 2209, 7171, 5758,
+ 2241, 11945, 11632,
+ 2511, 7172,
+ 2541, 9601, 6505, 5830,
+ 2541, 10425, 6505, 721, 7821, 10194,
+ 2586,
+ 2639, 1809, 4876,
+ 2639, 4223, 5836,
+ 2639, 4849, 6627, 9050,
+ 2639, 4849, 8745, 9050,
+ 2639, 4849, 12114,
+ 2639, 5445, 5758,
+ 2639, 6610,
+ 2639, 6616,
+ 2639, 6689, 2170,
+ 2639, 6689, 2540,
+ 2639, 6689, 2778,
+ 2639, 6689, 4200,
+ 2639, 6689, 4214,
+ 2639, 6689, 5190,
+ 2639, 6689, 6260,
+ 2639, 6689, 6722,
+ 2639, 6689, 7508,
+ 2639, 6689, 7694,
+ 2639, 6875, 7908,
+ 2639, 7089, 7593, 8405, 0,
+ 2639, 7089, 7593, 8405, 2,
+ 2639, 7089, 7593, 8405, 4,
+ 2639, 7089, 7593, 8405, 6,
+ 2639, 7089, 7593, 8405, 8,
+ 2639, 7089, 7593, 8405, 10,
+ 2639, 7089, 7593, 8405, 12,
+ 2639, 7089, 7593, 8405, 14,
+ 2639, 7089, 7593, 8405, 16,
+ 2639, 7089, 7593, 8405, 18,
+ 2639, 7089, 7593, 8405, 20,
+ 2639, 7089, 7593, 8405, 22,
+ 2639, 7089, 7593, 8405, 24,
+ 2639, 7089, 7593, 8405, 26,
+ 2639, 7089, 7593, 8405, 28,
+ 2639, 7089, 7593, 8405, 30,
+ 2639, 7089, 7593, 8405, 32,
+ 2639, 7089, 7593, 8405, 34,
+ 2639, 7089, 7593, 8405, 36,
+ 2639, 7089, 7593, 8405, 38,
+ 2639, 7089, 7593, 8405, 40,
+ 2639, 7089, 7593, 8405, 42,
+ 2639, 7089, 7593, 8405, 44,
+ 2639, 7089, 7593, 8405, 46,
+ 2639, 7089, 7593, 8405, 48,
+ 2639, 7089, 7593, 8405, 50,
+ 2639, 7089, 9063, 8405, 0,
+ 2639, 7089, 9063, 8405, 2,
+ 2639, 7089, 9063, 8405, 4,
+ 2639, 7089, 9063, 8405, 6,
+ 2639, 7089, 9063, 8405, 8,
+ 2639, 7089, 9063, 8405, 10,
+ 2639, 7089, 9063, 8405, 12,
+ 2639, 7089, 9063, 8405, 14,
+ 2639, 7089, 9063, 8405, 16,
+ 2639, 7089, 9063, 8405, 18,
+ 2639, 7089, 9063, 8405, 20,
+ 2639, 7089, 9063, 8405, 22,
+ 2639, 7089, 9063, 8405, 24,
+ 2639, 7089, 9063, 8405, 26,
+ 2639, 7089, 9063, 8405, 28,
+ 2639, 7089, 9063, 8405, 30,
+ 2639, 7089, 9063, 8405, 32,
+ 2639, 7089, 9063, 8405, 34,
+ 2639, 7089, 9063, 8405, 36,
+ 2639, 7089, 9063, 8405, 38,
+ 2639, 7089, 9063, 8405, 40,
+ 2639, 7089, 9063, 8405, 42,
+ 2639, 7089, 9063, 8405, 44,
+ 2639, 7089, 9063, 8405, 46,
+ 2639, 7089, 9063, 8405, 48,
+ 2639, 7089, 9063, 8405, 50,
+ 2639, 7443, 6627, 9050,
+ 2639, 7443, 8745, 9050,
+ 2639, 7443, 12114,
+ 2639, 7608,
+ 2639, 7708,
+ 2639, 8129, 5758,
+ 2639, 8167, 5758,
+ 2639, 8525, 5758,
+ 2639, 9581, 5758,
+ 2639, 9633, 9718,
+ 2639, 9718,
+ 2639, 9898,
+ 2639, 10469, 4926,
+ 2639, 10677, 4876,
+ 2639, 10708,
+ 2639, 11099, 5758,
+ 2639, 11195, 4926,
+ 2639, 11224,
+ 2639, 11424,
+ 2639, 11449, 7908,
+ 2639, 11451, 90,
+ 2639, 12017, 4926,
+ 2639, 12473, 5758,
+ 2639, 12478,
+ 2643, 337, 8405, 0,
+ 2643, 337, 8405, 8,
+ 2643, 337, 8405, 16,
+ 2643, 337, 8405, 28,
+ 2643, 337, 8405, 40,
+ 2643, 337, 8405, 72,
+ 2643, 337, 8405, 162,
+ 2643, 337, 8405, 166,
+ 2643, 337, 8405, 196,
+ 2643, 337, 8405, 236,
+ 2643, 337, 8405, 306,
+ 2643, 337, 8405, 332,
+ 2643, 337, 8405, 364,
+ 2643, 337, 8405, 392,
+ 2643, 337, 8405, 440,
+ 2643, 337, 8405, 462,
+ 2643, 337, 8405, 496,
+ 2643, 337, 8405, 524,
+ 2643, 337, 8405, 556,
+ 2643, 337, 8405, 590,
+ 2643, 337, 8405, 610,
+ 2643, 337, 8405, 638,
+ 2643, 337, 8405, 652,
+ 2643, 337, 8405, 738,
+ 2643, 337, 8405, 1612,
+ 2643, 337, 8405, 2030,
+ 2643, 337, 8405, 2212,
+ 2643, 337, 8405, 2678,
+ 2643, 337, 8405, 2732,
+ 2643, 337, 8405, 5978,
+ 2643, 337, 8405, 8834,
+ 2643, 337, 8405, 8836,
+ 2643, 337, 8405, 8838,
+ 2643, 337, 8405, 8840,
+ 2643, 337, 8405, 8842,
+ 2691, 5387, 10256,
+ 2725, 731, 10763, 6435, 6121, 7172,
+ 2725, 731, 12901, 6434,
+ 2725, 731, 12901, 6435, 6121, 5444,
+ 2725, 4389, 10260,
+ 2725, 4849, 3958,
+ 2725, 4849, 4389, 9050,
+ 2725, 4849, 8076,
+ 2725, 6627, 9050,
+ 2725, 7443, 3958,
+ 2725, 7443, 4389, 9050,
+ 2725, 7443, 8076,
+ 2725, 8745, 9050,
+ 2725, 10637, 7533, 9050,
+ 2725, 12114,
+ 2779, 1045, 8392,
+ 2779, 1045, 12132,
+ 2779, 4113, 5387, 2171, 1045, 12132,
+ 2779, 8329, 9734,
+ 2779, 9437, 445, 10374,
+ 2779, 9437, 721, 10374,
+ 2779, 10725, 8993, 11876,
+ 2779, 11913, 8167, 7570,
+ 2779, 12491, 9437, 444,
+ 2779, 12491, 9437, 720,
+ 2847, 4223, 5836,
+ 2847, 6616,
+ 2847, 6689, 2170,
+ 2847, 6689, 2540,
+ 2847, 6689, 2778,
+ 2847, 6689, 4200,
+ 2847, 6689, 4214,
+ 2847, 6689, 5190,
+ 2847, 6689, 6260,
+ 2847, 6689, 6722,
+ 2847, 6689, 7508,
+ 2847, 6689, 7694,
+ 2847, 8775, 1140,
+ 2847, 8775, 2052,
+ 2847, 8775, 2634,
+ 2847, 8775, 3708,
+ 2847, 8775, 3986,
+ 2847, 8775, 4100,
+ 2847, 8775, 4680,
+ 2847, 8775, 4784,
+ 2847, 8775, 5944,
+ 2847, 8775, 5966,
+ 2847, 8775, 6700,
+ 2847, 8775, 6776,
+ 2847, 8775, 7032,
+ 2847, 10469, 4926,
+ 2847, 10585, 0,
+ 2847, 10585, 8,
+ 2847, 10585, 16,
+ 2847, 10585, 28,
+ 2847, 10585, 40,
+ 2847, 10585, 80,
+ 2847, 10585, 100,
+ 2847, 10585, 102,
+ 2847, 10585, 106,
+ 2847, 10585, 108,
+ 2847, 10585, 112,
+ 2847, 10585, 116,
+ 2847, 10585, 122,
+ 2847, 10585, 126,
+ 2847, 10585, 130,
+ 2847, 10585, 132,
+ 2847, 10585, 138,
+ 2847, 10585, 142,
+ 2847, 10585, 144,
+ 2847, 10585, 150,
+ 2847, 10585, 152,
+ 2847, 10585, 162,
+ 2847, 10585, 176,
+ 2847, 10585, 196,
+ 2847, 10585, 198,
+ 2847, 10585, 202,
+ 2847, 10585, 208,
+ 2847, 10585, 210,
+ 2847, 10585, 216,
+ 2847, 10585, 220,
+ 2847, 10585, 224,
+ 2847, 10585, 228,
+ 2847, 10585, 230,
+ 2847, 10585, 236,
+ 2847, 10585, 238,
+ 2847, 10585, 242,
+ 2847, 10585, 246,
+ 2847, 10585, 250,
+ 2847, 10585, 274,
+ 2847, 10585, 292,
+ 2847, 10585, 294,
+ 2847, 10585, 296,
+ 2847, 10585, 298,
+ 2847, 10585, 300,
+ 2847, 10585, 306,
+ 2847, 10585, 310,
+ 2847, 10585, 314,
+ 2847, 10585, 322,
+ 2847, 10585, 326,
+ 2847, 10585, 332,
+ 2847, 10585, 336,
+ 2847, 10585, 340,
+ 2847, 10585, 350,
+ 2847, 10585, 354,
+ 2847, 10585, 364,
+ 2847, 10585, 368,
+ 2847, 10585, 374,
+ 2847, 10585, 380,
+ 2847, 10585, 384,
+ 2847, 10585, 392,
+ 2847, 10585, 396,
+ 2847, 10585, 400,
+ 2847, 10585, 404,
+ 2847, 10585, 412,
+ 2847, 10585, 416,
+ 2847, 10585, 438,
+ 2847, 10585, 440,
+ 2847, 10585, 462,
+ 2847, 10585, 468,
+ 2847, 10585, 476,
+ 2847, 10585, 480,
+ 2847, 10585, 486,
+ 2847, 10585, 510,
+ 2847, 10585, 512,
+ 2847, 10585, 514,
+ 2847, 10585, 516,
+ 2847, 10585, 520,
+ 2847, 10585, 524,
+ 2847, 10585, 526,
+ 2847, 10585, 532,
+ 2847, 10585, 536,
+ 2847, 10585, 546,
+ 2847, 10585, 556,
+ 2847, 10585, 560,
+ 2847, 10585, 564,
+ 2847, 10585, 568,
+ 2847, 10585, 576,
+ 2847, 10585, 596,
+ 2847, 10585, 610,
+ 2847, 10585, 612,
+ 2847, 10585, 614,
+ 2847, 10585, 616,
+ 2847, 10585, 618,
+ 2847, 10585, 622,
+ 2847, 10585, 626,
+ 2847, 10585, 630,
+ 2847, 10585, 632,
+ 2847, 10585, 634,
+ 2847, 10585, 652,
+ 2847, 10585, 654,
+ 2847, 10585, 656,
+ 2847, 10585, 660,
+ 2847, 10585, 664,
+ 2847, 10585, 670,
+ 2847, 10585, 672,
+ 2847, 10585, 676,
+ 2847, 10585, 678,
+ 2847, 10585, 680,
+ 2847, 10585, 778,
+ 2847, 10585, 792,
+ 2847, 10585, 794,
+ 2847, 10585, 796,
+ 2847, 10585, 798,
+ 2847, 10585, 800,
+ 2847, 10585, 818,
+ 2847, 10585, 876,
+ 2847, 10585, 914,
+ 2847, 10585, 984,
+ 2847, 10585, 996,
+ 2847, 10585, 998,
+ 2847, 10585, 1000,
+ 2847, 10585, 1002,
+ 2847, 10585, 1004,
+ 2847, 10585, 1040,
+ 2847, 10585, 1098,
+ 2847, 10585, 1150,
+ 2847, 10585, 1172,
+ 2847, 10585, 1228,
+ 2847, 10585, 1230,
+ 2847, 10585, 1232,
+ 2847, 10585, 1234,
+ 2847, 10585, 1236,
+ 2847, 10585, 1238,
+ 2847, 10585, 1240,
+ 2847, 10585, 1290,
+ 2847, 10585, 1346,
+ 2847, 10585, 1356,
+ 2847, 10585, 1362,
+ 2847, 10585, 1384,
+ 2847, 10585, 1422,
+ 2847, 10585, 1424,
+ 2847, 10585, 1436,
+ 2847, 10585, 1506,
+ 2847, 10585, 1542,
+ 2847, 10585, 1588,
+ 2847, 10585, 1598,
+ 2847, 10585, 1660,
+ 2847, 10585, 1668,
+ 2847, 10585, 1670,
+ 2847, 10585, 1672,
+ 2847, 10585, 1674,
+ 2847, 10585, 1676,
+ 2847, 10585, 1758,
+ 2847, 10585, 1802,
+ 2847, 10585, 1878,
+ 2847, 10585, 1880,
+ 2847, 10585, 1882,
+ 2847, 10585, 1884,
+ 2847, 10585, 1886,
+ 2847, 10585, 1890,
+ 2847, 10585, 1938,
+ 2847, 10585, 2006,
+ 2847, 10585, 2008,
+ 2847, 10585, 2010,
+ 2847, 10585, 2012,
+ 2847, 10585, 2014,
+ 2847, 10585, 2016,
+ 2847, 10585, 2062,
+ 2847, 10585, 2064,
+ 2847, 10585, 2066,
+ 2847, 10585, 2068,
+ 2847, 10585, 2070,
+ 2847, 10585, 2084,
+ 2847, 10585, 2126,
+ 2847, 10585, 2130,
+ 2847, 10585, 2132,
+ 2847, 10585, 2134,
+ 2847, 10585, 2136,
+ 2847, 10585, 2178,
+ 2847, 10585, 2204,
+ 2847, 10585, 2238,
+ 2847, 10585, 2402,
+ 2847, 10585, 2430,
+ 2847, 10585, 2504,
+ 2847, 10585, 2516,
+ 2847, 10585, 2518,
+ 2847, 10585, 2520,
+ 2847, 10585, 2522,
+ 2847, 10585, 2524,
+ 2847, 10585, 2554,
+ 2847, 10585, 2666,
+ 2847, 10585, 2678,
+ 2847, 10585, 2680,
+ 2847, 10585, 2682,
+ 2847, 10585, 2684,
+ 2847, 10585, 2686,
+ 2847, 10585, 2722,
+ 2847, 10585, 2856,
+ 2847, 10585, 2876,
+ 2847, 10585, 2910,
+ 2847, 10585, 2922,
+ 2847, 10585, 2924,
+ 2847, 10585, 2934,
+ 2847, 10585, 2940,
+ 2847, 10585, 2942,
+ 2847, 10585, 2948,
+ 2847, 10585, 3050,
+ 2847, 10585, 3082,
+ 2847, 10585, 3138,
+ 2847, 10585, 3146,
+ 2847, 10585, 3148,
+ 2847, 10585, 3150,
+ 2847, 10585, 3152,
+ 2847, 10585, 3154,
+ 2847, 10585, 3178,
+ 2847, 10585, 3778,
+ 2847, 10585, 3780,
+ 2847, 10585, 4068,
+ 2847, 10585, 4070,
+ 2847, 10585, 4072,
+ 2847, 10585, 4074,
+ 2847, 10585, 4076,
+ 2847, 10585, 4078,
+ 2847, 10585, 4080,
+ 2847, 10585, 4246,
+ 2847, 10585, 4248,
+ 2847, 10585, 4250,
+ 2847, 10585, 4252,
+ 2847, 10585, 4774,
+ 2847, 10585, 4776,
+ 2847, 10585, 4778,
+ 2847, 10585, 4780,
+ 2847, 10585, 4932,
+ 2847, 10585, 4934,
+ 2847, 10585, 4964,
+ 2847, 10585, 4966,
+ 2847, 10585, 4968,
+ 2847, 10585, 4970,
+ 2847, 10585, 4972,
+ 2847, 10585, 5100,
+ 2847, 10585, 5114,
+ 2847, 10585, 5136,
+ 2847, 10585, 5146,
+ 2847, 10585, 5152,
+ 2847, 10585, 5154,
+ 2847, 10585, 5156,
+ 2847, 10585, 5158,
+ 2847, 10585, 5160,
+ 2847, 10585, 5168,
+ 2847, 10585, 5194,
+ 2847, 10585, 5204,
+ 2847, 10585, 5296,
+ 2847, 10585, 5316,
+ 2847, 10585, 5678,
+ 2847, 10585, 5710,
+ 2847, 10585, 5914,
+ 2847, 10585, 5930,
+ 2847, 10585, 6108,
+ 2847, 10585, 6126,
+ 2847, 10585, 6274,
+ 2847, 10585, 6282,
+ 2847, 10585, 6682,
+ 2847, 10585, 6684,
+ 2847, 10585, 7152,
+ 2847, 10585, 7154,
+ 2847, 10585, 7223, 150,
+ 2847, 10585, 7223, 196,
+ 2847, 10585, 7223, 306,
+ 2847, 10585, 7223, 364,
+ 2847, 10585, 7223, 2554,
+ 2847, 10585, 7228,
+ 2847, 10585, 7230,
+ 2847, 10585, 7232,
+ 2847, 10585, 11674,
+ 2941, 5758,
+ 2972,
+ 3055, 5758,
+ 3071, 6178,
+ 3245, 8774,
+ 3264,
+ 3285, 8774,
+ 3769, 8774,
+ 3839, 2812,
+ 3849, 428,
+ 3871, 5758,
+ 3873, 5758,
+ 3879, 6689, 2170,
+ 3879, 6689, 2540,
+ 3879, 6689, 2778,
+ 3879, 6689, 4200,
+ 3879, 6689, 4214,
+ 3879, 6689, 5190,
+ 3879, 6689, 6260,
+ 3879, 6689, 6722,
+ 3879, 6689, 7508,
+ 3879, 6689, 7694,
+ 3879, 7803, 5759, 16,
+ 3879, 7803, 5759, 28,
+ 3879, 7803, 5759, 40,
+ 3879, 7803, 5759, 58,
+ 3879, 7803, 5759, 72,
+ 3879, 7803, 5759, 92,
+ 3879, 7803, 5759, 168,
+ 3879, 7803, 5759, 266,
+ 3879, 7803, 5759, 426,
+ 3879, 7803, 5759, 590,
+ 3879, 8405, 0,
+ 3879, 8405, 8,
+ 3879, 8405, 16,
+ 3879, 8405, 28,
+ 3879, 8405, 40,
+ 3879, 8405, 72,
+ 3879, 8405, 100,
+ 3879, 8405, 138,
+ 3879, 8405, 216,
+ 3879, 8405, 236,
+ 3879, 8405, 292,
+ 3879, 8405, 306,
+ 3879, 8405, 332,
+ 3879, 8405, 364,
+ 3879, 8405, 392,
+ 3879, 8405, 462,
+ 3879, 8405, 510,
+ 3879, 8405, 524,
+ 3879, 8405, 556,
+ 3879, 8405, 610,
+ 3879, 8405, 652,
+ 3879, 8405, 766,
+ 3879, 8405, 792,
+ 3879, 8405, 884,
+ 3879, 8405, 974,
+ 3879, 8405, 996,
+ 3879, 8405, 1260,
+ 3879, 8405, 1512,
+ 3879, 8405, 1612,
+ 3879, 8405, 1948,
+ 3879, 8405, 2030,
+ 3879, 8405, 2042,
+ 3879, 8405, 2106,
+ 3879, 8405, 2212,
+ 3879, 8405, 2246,
+ 3879, 8405, 2566,
+ 3879, 8405, 2678,
+ 3879, 8405, 3902,
+ 3879, 8405, 5178,
+ 3879, 8405, 5182,
+ 3879, 8405, 5184,
+ 3879, 8405, 6789, 12,
+ 3879, 8405, 6789, 20,
+ 3879, 8405, 6789, 22,
+ 3879, 8405, 6789, 26,
+ 3879, 8405, 6789, 30,
+ 3879, 8405, 6789, 34,
+ 3879, 8405, 6789, 38,
+ 3879, 8405, 6789, 48,
+ 3879, 8405, 6789, 124,
+ 3879, 8405, 6789, 400,
+ 3879, 8405, 6789, 542,
+ 3879, 10775, 5759, 332,
+ 3879, 10775, 5759, 510,
+ 3879, 10775, 5759, 622,
+ 3879, 10775, 5759, 652,
+ 3879, 10775, 5759, 6789, 14,
+ 3879, 10775, 5759, 6789, 24,
+ 3879, 10775, 5759, 6789, 400,
+ 3879, 12133, 6646,
+ 3879, 12133, 8153, 6646,
+ 3879, 12133, 8732,
+ 3879, 12133, 8849, 6646,
+ 3961, 5566,
+ 3989, 7512,
+ 4103, 2091, 6798,
+ 4103, 2091, 7396,
+ 4103, 2091, 8122,
+ 4103, 2091, 8123, 6121, 10489, 10355, 7580,
+ 4103, 2091, 9113, 89, 8466,
+ 4103, 2091, 9113, 89, 8521, 10572,
+ 4103, 2091, 9113, 89, 8521, 10573, 445, 6740,
+ 4103, 2091, 9604,
+ 4103, 2091, 9605, 445, 6740,
+ 4103, 2091, 9750,
+ 4103, 2091, 9751, 445, 6740,
+ 4107, 5758,
+ 4117, 4197, 5878,
+ 4117, 5876,
+ 4117, 5877, 6121, 8057, 6490,
+ 4117, 7443, 10001, 10154,
+ 4117, 10716,
+ 4153, 8781, 6622,
+ 4171, 5758,
+ 4201, 1045, 4926,
+ 4201, 1045, 12132,
+ 4215, 1045, 4926,
+ 4215, 1045, 12132,
+ 4215, 11907, 9898,
+ 4215, 13047, 9898,
+ 4215, 13233, 9898,
+ 4223, 5836,
+ 4223, 6510,
+ 4223, 7327, 4676,
+ 4228,
+ 4260,
+ 4269, 4926,
+ 4387, 7608,
+ 4401, 8774,
+ 4423, 9831, 5758,
+ 4676,
+ 4686,
+ 4837, 9615, 5012,
+ 4849, 721, 7443, 5876,
+ 4849, 721, 7443, 8153, 11378,
+ 4849, 731, 11099, 9050,
+ 4849, 1809, 11715, 9050,
+ 4849, 2171, 8159, 6510,
+ 4849, 2171, 9615, 6510,
+ 4849, 3713, 601, 7443, 3713, 601, 9326,
+ 4849, 3713, 601, 7443, 3713, 4117, 9326,
+ 4849, 3713, 4117, 7443, 3713, 601, 9326,
+ 4849, 3713, 4117, 7443, 3713, 4117, 9326,
+ 4849, 4197, 5878,
+ 4849, 4201, 9259, 6510,
+ 4849, 4389, 6505, 8056,
+ 4849, 4389, 6510,
+ 4849, 5876,
+ 4849, 6409, 9050,
+ 4849, 6409, 9051, 6121, 1044,
+ 4849, 6435, 6121, 7593, 8056,
+ 4849, 6435, 6121, 9095, 5444,
+ 4849, 6505, 10637, 7533, 9050,
+ 4849, 6505, 11677, 9050,
+ 4849, 6627, 9050,
+ 4849, 6627, 9051, 7121, 4530,
+ 4849, 6627, 9051, 7773, 4530,
+ 4849, 6627, 9051, 8473, 7370,
+ 4849, 6792,
+ 4849, 7327, 4676,
+ 4849, 7443, 6105, 6434,
+ 4849, 7443, 6434,
+ 4849, 7443, 6435, 6121, 8153, 10677, 8758,
+ 4849, 7443, 6435, 6121, 8758,
+ 4849, 7443, 6435, 6121, 10677, 8758,
+ 4849, 7443, 6435, 9785, 7593, 8056,
+ 4849, 7443, 6505, 6434,
+ 4849, 7443, 7821, 6434,
+ 4849, 7443, 8153, 6434,
+ 4849, 7443, 8153, 6435, 6121, 8758,
+ 4849, 7443, 8153, 6435, 6121, 10677, 8758,
+ 4849, 7443, 12103, 6434,
+ 4849, 7509, 9259, 6510,
+ 4849, 7695, 9259, 6510,
+ 4849, 7695, 10467, 6510,
+ 4849, 7821, 6627, 9050,
+ 4849, 7821, 8077, 9050,
+ 4849, 7821, 8745, 9050,
+ 4849, 7821, 10637, 7533, 9050,
+ 4849, 7821, 11677, 9050,
+ 4849, 7821, 12114,
+ 4849, 8077, 9050,
+ 4849, 8151, 12877, 9050,
+ 4849, 8153, 6409, 9050,
+ 4849, 8153, 8933, 6778,
+ 4849, 8153, 11195, 4926,
+ 4849, 8153, 12114,
+ 4849, 8521, 8191, 11793, 9610,
+ 4849, 8631, 10371, 9050,
+ 4849, 8717, 11195, 4926,
+ 4849, 8745, 9050,
+ 4849, 8745, 9051, 6121, 5935, 275, 2725, 8076,
+ 4849, 8745, 9051, 6121, 5935, 275, 8005, 8076,
+ 4849, 8745, 9051, 6121, 7412,
+ 4849, 8745, 9051, 6121, 10666,
+ 4849, 8745, 9051, 7121, 8076,
+ 4849, 8745, 9051, 7773, 8076,
+ 4849, 8745, 9051, 10982,
+ 4849, 8933, 6778,
+ 4849, 9074,
+ 4849, 10346,
+ 4849, 10493, 753, 10794,
+ 4849, 10523, 41, 9050,
+ 4849, 10637, 7533, 9050,
+ 4849, 10643, 7991, 10677, 760,
+ 4849, 10677, 761, 6121, 7412,
+ 4849, 10677, 827, 4876,
+ 4849, 11793, 9610,
+ 4849, 12114,
+ 4849, 12115, 7121, 4530,
+ 4849, 12115, 7773, 4530,
+ 4849, 12115, 10982,
+ 4849, 12877, 9050,
+ 4849, 13029, 9050,
+ 4877, 11228,
+ 4877, 12057, 2091, 11049, 2681, 5446,
+ 4877, 12057, 6121, 12139, 5403, 7939, 5446,
+ 4877, 12057, 6121, 12857, 5403, 7939, 5446,
+ 4883, 5758,
+ 4895, 3993, 4221, 4849, 8467, 429, 8153, 10676,
+ 4895, 4849, 5876,
+ 4895, 4849, 7443, 6434,
+ 4895, 4849, 7443, 8153, 6434,
+ 4895, 7443, 5876,
+ 4895, 10016,
+ 4895, 11097, 6434,
+ 4895, 11097, 6435, 4221, 760,
+ 4895, 11097, 8153, 6434,
+ 4895, 11097, 8153, 6435, 4221, 760,
+ 4895, 11097, 10531, 6434,
+ 4895, 11765, 6434,
+ 4895, 11765, 6435, 4221, 760,
+ 4895, 11765, 8153, 6434,
+ 4895, 11765, 8153, 6435, 4221, 760,
+ 4895, 11765, 10531, 6434,
+ 4923, 721, 8197, 5758,
+ 4923, 5758,
+ 4923, 6121, 8759, 721, 4923, 721, 8197, 5758,
+ 4923, 6121, 8759, 5758,
+ 4931, 4926,
+ 5003, 5758,
+ 5006,
+ 5017, 11098,
+ 5017, 12472,
+ 5050,
+ 5131, 5392,
+ 5385, 826,
+ 5385, 8037, 6505, 5830,
+ 5385, 8037, 6622,
+ 5385, 8037, 9898,
+ 5385, 8037, 13233, 9898,
+ 5385, 8762,
+ 5385, 10578,
+ 5395, 8008,
+ 5401, 11891, 4926,
+ 5409, 5758,
+ 5445, 5758,
+ 5445, 5759, 275, 4849, 4389, 8056,
+ 5445, 5759, 275, 7443, 4389, 8056,
+ 5445, 5759, 275, 10642,
+ 5445, 5759, 6121, 1045, 6490,
+ 5445, 5759, 6121, 6505, 10642,
+ 5445, 5759, 6121, 7593, 8057, 6376,
+ 5445, 5759, 6121, 7709, 6376,
+ 5445, 5759, 6121, 7709, 6490,
+ 5445, 5759, 6121, 11261, 2778,
+ 5445, 5759, 6121, 11449, 7909, 6376,
+ 5445, 5759, 6377, 8167, 5758,
+ 5545, 5758,
+ 5551, 275, 6741, 568,
+ 5551, 6376,
+ 5551, 6741, 568,
+ 5551, 7382,
+ 5551, 10374,
+ 5769, 6104,
+ 5781, 8306,
+ 5831, 429, 6656,
+ 5831, 721, 9964,
+ 5831, 8166,
+ 5831, 10374,
+ 5887, 6704,
+ 5909, 6689, 2170,
+ 5909, 6689, 2540,
+ 5909, 6689, 2778,
+ 5909, 6689, 4200,
+ 5909, 6689, 4214,
+ 5909, 6689, 5190,
+ 5909, 6689, 6260,
+ 5909, 6689, 6722,
+ 5909, 6689, 7508,
+ 5909, 6689, 7694,
+ 5909, 9971, 8775, 3702,
+ 5909, 10759, 29, 722,
+ 5909, 10759, 109, 7968,
+ 5909, 10759, 151, 988,
+ 5909, 10759, 151, 6562,
+ 5909, 10759, 209, 196,
+ 5909, 10759, 209, 1142,
+ 5909, 10759, 247, 1386,
+ 5909, 10759, 247, 8518,
+ 5909, 10759, 323, 1582,
+ 5909, 10759, 351, 4878,
+ 5909, 10759, 351, 6582,
+ 5909, 10759, 354,
+ 5909, 10759, 381, 364,
+ 5909, 10759, 413, 416,
+ 5909, 10759, 413, 2018,
+ 5909, 10759, 481, 2234,
+ 5909, 10759, 517, 2448,
+ 5909, 10759, 520,
+ 5909, 10759, 537, 536,
+ 5909, 10759, 537, 2580,
+ 5909, 10759, 537, 5614,
+ 5909, 10759, 537, 5630,
+ 5909, 10759, 569, 2650,
+ 5909, 10759, 569, 7344,
+ 5909, 10759, 633, 6098,
+ 5909, 10759, 661, 3022,
+ 5909, 10759, 661, 6212,
+ 5909, 10759, 891, 3880,
+ 5909, 10759, 891, 3908,
+ 5909, 10759, 891, 6566,
+ 5909, 10759, 891, 6576,
+ 5909, 10759, 1619, 4738,
+ 5909, 10759, 1619, 4750,
+ 5909, 10759, 1619, 7050,
+ 5909, 10759, 1619, 7052,
+ 5909, 10759, 1619, 9618,
+ 5909, 10759, 1859, 170,
+ 5909, 10759, 1859, 2684,
+ 5909, 10759, 1859, 2730,
+ 5909, 10759, 1859, 9938,
+ 5909, 10759, 1859, 10228,
+ 5909, 10759, 2039, 2040,
+ 5909, 10759, 2219, 5412,
+ 5909, 10759, 2219, 7366,
+ 5909, 10759, 2219, 9652,
+ 5909, 10759, 2685, 5912,
+ 5909, 10759, 2685, 7690,
+ 5909, 10759, 2685, 7696,
+ 5909, 10759, 2685, 8812,
+ 5909, 10759, 2685, 9592,
+ 5909, 10759, 2685, 11694,
+ 5909, 10759, 5637, 0,
+ 5909, 10759, 5637, 8,
+ 5909, 10759, 5637, 16,
+ 5909, 10759, 5637, 28,
+ 5909, 10759, 5637, 40,
+ 5909, 10759, 5637, 58,
+ 5909, 10759, 5637, 66,
+ 5909, 10759, 5637, 73, 9446,
+ 5909, 10759, 5637, 73, 10312,
+ 5909, 10759, 5637, 78,
+ 5909, 10759, 5637, 266,
+ 5909, 10759, 5637, 590,
+ 5909, 10759, 5637, 606,
+ 5909, 10759, 5637, 2804,
+ 5909, 10759, 8358,
+ 5909, 10759, 9290,
+ 5909, 10759, 9590,
+ 5909, 10759, 10314,
+ 5909, 10759, 10358,
+ 5909, 10759, 10684,
+ 5909, 10759, 11108,
+ 5909, 10759, 11152,
+ 5909, 10759, 11412,
+ 5909, 10759, 12072,
+ 5909, 10759, 12362,
+ 5927, 7608,
+ 5946,
+ 5972,
+ 6051, 8774,
+ 6081, 5017, 11098,
+ 6081, 5017, 12472,
+ 6105, 3992,
+ 6105, 6435, 10441, 10015, 4848,
+ 6105, 6435, 10441, 10015, 7442,
+ 6107, 1809, 4876,
+ 6107, 3992,
+ 6107, 4876,
+ 6107, 10388,
+ 6113, 8781, 6622,
+ 6129, 8330,
+ 6261, 7825, 7608,
+ 6261, 7825, 8330,
+ 6261, 7825, 10363, 7608,
+ 6261, 7825, 11698,
+ 6379, 6408,
+ 6379, 7908,
+ 6408,
+ 6409, 6121, 37, 8318,
+ 6409, 6121, 10666,
+ 6428,
+ 6435, 10441, 10959, 5919, 9131, 11096,
+ 6435, 10441, 10959, 5919, 9131, 11764,
+ 6435, 10441, 11765, 5919, 9131, 9810,
+ 6435, 10441, 11765, 5919, 9131, 10958,
+ 6505, 2048,
+ 6505, 2587, 6121, 5528,
+ 6505, 3949, 5842,
+ 6505, 4202,
+ 6505, 4215, 9601, 5830,
+ 6505, 4849, 10441, 6992,
+ 6505, 5013, 8406,
+ 6505, 5830,
+ 6505, 6081, 7593, 8744,
+ 6505, 6571, 4760,
+ 6505, 6571, 5404,
+ 6505, 6571, 5564,
+ 6505, 6571, 7410,
+ 6505, 6571, 7996,
+ 6505, 6571, 8368,
+ 6505, 6907, 5842,
+ 6505, 7085, 8056,
+ 6505, 7085, 8744,
+ 6505, 7121, 4849, 10642,
+ 6505, 7121, 7443, 10642,
+ 6505, 7443, 10441, 6992,
+ 6505, 7547, 7370,
+ 6505, 7593, 5830,
+ 6505, 7593, 8744,
+ 6505, 7593, 9158,
+ 6505, 7593, 9438,
+ 6505, 7611, 5842,
+ 6505, 7773, 4849, 10642,
+ 6505, 7773, 7443, 10642,
+ 6505, 8006,
+ 6505, 8037, 7821, 5830,
+ 6505, 8056,
+ 6505, 8057, 6121, 2779, 7821, 4112,
+ 6505, 8057, 6121, 4117, 6434,
+ 6505, 8057, 6121, 7821, 1045, 7442,
+ 6505, 8463, 7593, 8744,
+ 6505, 8463, 8744,
+ 6505, 8463, 9158,
+ 6505, 8463, 9438,
+ 6505, 8744,
+ 6505, 9158,
+ 6505, 9159, 5842,
+ 6505, 9159, 6121, 4117, 6434,
+ 6505, 9159, 7173, 7821, 46,
+ 6505, 9338,
+ 6505, 9438,
+ 6505, 9711, 4178,
+ 6505, 10143, 1860,
+ 6505, 10143, 4760,
+ 6505, 10194,
+ 6505, 10420,
+ 6505, 10502,
+ 6505, 10677, 9264,
+ 6505, 10677, 11202,
+ 6505, 11036,
+ 6505, 11097, 8022,
+ 6505, 11202,
+ 6505, 11354,
+ 6505, 11387, 11205, 8774,
+ 6505, 11649, 9264,
+ 6505, 11765, 6434,
+ 6505, 11765, 8022,
+ 6505, 11765, 10716,
+ 6505, 12383, 7593, 10642,
+ 6505, 12383, 10642,
+ 6505, 12931, 7593, 10642,
+ 6505, 12931, 10642,
+ 6505, 12967, 7593, 10642,
+ 6505, 12967, 9602,
+ 6505, 12967, 10642,
+ 6505, 12984,
+ 6505, 13067, 7593, 10642,
+ 6505, 13067, 9602,
+ 6505, 13067, 10420,
+ 6505, 13067, 10642,
+ 6509, 8774,
+ 6516,
+ 6531, 7803, 5759, 16,
+ 6531, 7803, 5759, 40,
+ 6531, 8405, 0,
+ 6531, 8405, 16,
+ 6531, 8405, 40,
+ 6531, 8405, 100,
+ 6531, 8405, 138,
+ 6531, 8405, 216,
+ 6531, 8405, 236,
+ 6531, 8405, 306,
+ 6531, 8405, 332,
+ 6531, 8405, 364,
+ 6531, 8405, 392,
+ 6531, 8405, 462,
+ 6531, 8405, 510,
+ 6531, 8405, 524,
+ 6531, 8405, 556,
+ 6531, 8405, 622,
+ 6531, 8405, 652,
+ 6531, 8405, 2030,
+ 6542,
+ 6543, 11061, 7382,
+ 6546,
+ 6560,
+ 6569, 4926,
+ 6597, 8677, 8774,
+ 6603, 600,
+ 6606,
+ 6610,
+ 6611, 5758,
+ 6611, 8166,
+ 6614,
+ 6616,
+ 6623, 429, 10308,
+ 6623, 429, 11068,
+ 6627, 9051, 10982,
+ 6627, 9437, 444,
+ 6627, 9437, 720,
+ 6643, 8774,
+ 6675, 6741, 568,
+ 6689, 2170,
+ 6689, 2171, 4223, 5836,
+ 6689, 2540,
+ 6689, 2541, 4223, 5836,
+ 6689, 2778,
+ 6689, 2779, 4223, 5836,
+ 6689, 4200,
+ 6689, 4201, 4223, 5836,
+ 6689, 4214,
+ 6689, 4215, 4223, 5836,
+ 6689, 5190,
+ 6689, 5191, 4223, 5836,
+ 6689, 6260,
+ 6689, 6722,
+ 6689, 6723, 4223, 5836,
+ 6689, 7508,
+ 6689, 7509, 4223, 5836,
+ 6689, 7694,
+ 6689, 7695, 4223, 5836,
+ 6695, 4926,
+ 6716,
+ 6717, 8272,
+ 6723, 8737, 9898,
+ 6723, 9601, 6505, 5830,
+ 6723, 9601, 10433, 5830,
+ 6723, 9601, 12141, 6505, 5830,
+ 6723, 10425, 10385, 6505, 10194,
+ 6723, 13233, 11187, 9898,
+ 6725, 8774,
+ 6731, 2510,
+ 6731, 2511, 6121, 4849, 6435, 6376,
+ 6731, 2511, 6121, 7443, 6435, 6376,
+ 6731, 2511, 6121, 7593, 8057, 6376,
+ 6731, 2511, 6121, 9546,
+ 6735, 8774,
+ 6741, 569, 115, 11472,
+ 6741, 569, 445, 10452,
+ 6741, 569, 445, 10574,
+ 6741, 569, 445, 11098,
+ 6741, 569, 445, 12472,
+ 6741, 721, 10411, 568,
+ 6745, 569, 2681, 4848,
+ 6745, 569, 2681, 7442,
+ 6763, 9956,
+ 6771, 8774,
+ 6791, 9615, 5012,
+ 6812,
+ 6857, 8774,
+ 6875, 7908,
+ 6879, 477, 8774,
+ 6879, 727, 8798,
+ 6879, 1583, 8774,
+ 6879, 2171, 4389, 5758,
+ 6879, 2171, 4389, 5759, 10707, 4212,
+ 6879, 2217, 8774,
+ 6879, 2413, 6121, 8759, 8774,
+ 6879, 2413, 8774,
+ 6879, 2779, 7307, 5758,
+ 6879, 2779, 8819, 5758,
+ 6879, 3775, 8774,
+ 6879, 4201, 7307, 5758,
+ 6879, 4215, 7307, 5758,
+ 6879, 5375, 5758,
+ 6879, 5388,
+ 6879, 6197, 5758,
+ 6879, 6261, 5758,
+ 6879, 6654,
+ 6879, 6655, 721, 5388,
+ 6879, 6655, 721, 7782,
+ 6879, 6655, 721, 12120,
+ 6879, 7023, 8774,
+ 6879, 7111, 5758,
+ 6879, 7121, 9513, 5758,
+ 6879, 7398,
+ 6879, 7399, 721, 5388,
+ 6879, 7399, 721, 7782,
+ 6879, 7399, 721, 12120,
+ 6879, 7593, 8151, 8427, 7569, 8774,
+ 6879, 7593, 8405, 384,
+ 6879, 7593, 8405, 416,
+ 6879, 7593, 8405, 476,
+ 6879, 7593, 8405, 644,
+ 6879, 7593, 8405, 888,
+ 6879, 7593, 8405, 1128,
+ 6879, 7593, 8405, 1129, 6121, 5388,
+ 6879, 7593, 8405, 1129, 6121, 5389, 721, 13036,
+ 6879, 7593, 8405, 1129, 6121, 6654,
+ 6879, 7593, 8405, 1129, 6121, 6655, 721, 5388,
+ 6879, 7593, 8405, 1129, 6121, 6655, 721, 5389, 721, 13036,
+ 6879, 7593, 8405, 1129, 6121, 6655, 721, 7782,
+ 6879, 7593, 8405, 1129, 6121, 6655, 721, 7783, 721, 13036,
+ 6879, 7593, 8405, 1129, 6121, 6655, 721, 12120,
+ 6879, 7593, 8405, 1129, 6121, 6655, 721, 12121, 721, 13036,
+ 6879, 7593, 8405, 1129, 6121, 6655, 721, 13036,
+ 6879, 7593, 8405, 1129, 6121, 7398,
+ 6879, 7593, 8405, 1129, 6121, 7399, 721, 5388,
+ 6879, 7593, 8405, 1129, 6121, 7399, 721, 5389, 721, 13036,
+ 6879, 7593, 8405, 1129, 6121, 7399, 721, 7782,
+ 6879, 7593, 8405, 1129, 6121, 7399, 721, 7783, 721, 13036,
+ 6879, 7593, 8405, 1129, 6121, 7399, 721, 12120,
+ 6879, 7593, 8405, 1129, 6121, 7399, 721, 12121, 721, 13036,
+ 6879, 7593, 8405, 1129, 6121, 7399, 721, 13036,
+ 6879, 7593, 8405, 1129, 6121, 7724,
+ 6879, 7593, 8405, 1129, 6121, 7782,
+ 6879, 7593, 8405, 1129, 6121, 7783, 721, 13036,
+ 6879, 7593, 8405, 1129, 6121, 12120,
+ 6879, 7593, 8405, 1129, 6121, 12121, 721, 13036,
+ 6879, 7593, 8405, 1129, 6121, 13036,
+ 6879, 7593, 8405, 2216,
+ 6879, 7593, 8405, 2250,
+ 6879, 7593, 8405, 2412,
+ 6879, 7593, 8405, 2413, 6121, 6654,
+ 6879, 7593, 8405, 2413, 6121, 7398,
+ 6879, 7593, 8405, 2490,
+ 6879, 7593, 8405, 2522,
+ 6879, 7593, 8405, 2658,
+ 6879, 7593, 8405, 3774,
+ 6879, 7593, 8405, 4408,
+ 6879, 7593, 8405, 4614,
+ 6879, 7593, 8405, 4615, 6121, 5388,
+ 6879, 7593, 8405, 4615, 6121, 6654,
+ 6879, 7593, 8405, 4615, 6121, 6655, 721, 5388,
+ 6879, 7593, 8405, 4615, 6121, 6655, 721, 7782,
+ 6879, 7593, 8405, 4615, 6121, 6655, 721, 12120,
+ 6879, 7593, 8405, 4615, 6121, 7398,
+ 6879, 7593, 8405, 4615, 6121, 7399, 721, 5388,
+ 6879, 7593, 8405, 4615, 6121, 7399, 721, 7782,
+ 6879, 7593, 8405, 4615, 6121, 7399, 721, 12120,
+ 6879, 7593, 8405, 4615, 6121, 7724,
+ 6879, 7593, 8405, 4615, 6121, 7782,
+ 6879, 7593, 8405, 4615, 6121, 8432,
+ 6879, 7593, 8405, 4615, 6121, 8924,
+ 6879, 7593, 8405, 4615, 6121, 10808,
+ 6879, 7593, 8405, 4615, 6121, 10809, 721, 5388,
+ 6879, 7593, 8405, 4615, 6121, 10809, 721, 7724,
+ 6879, 7593, 8405, 4615, 6121, 10809, 721, 7782,
+ 6879, 7593, 8405, 4615, 6121, 10809, 721, 12120,
+ 6879, 7593, 8405, 4615, 6121, 12120,
+ 6879, 7593, 8405, 6262,
+ 6879, 7593, 8405, 6406,
+ 6879, 7593, 8405, 6407, 6121, 5388,
+ 6879, 7593, 8405, 6407, 6121, 5389, 721, 13036,
+ 6879, 7593, 8405, 6407, 6121, 6654,
+ 6879, 7593, 8405, 6407, 6121, 6655, 721, 5388,
+ 6879, 7593, 8405, 6407, 6121, 6655, 721, 5389, 721, 13036,
+ 6879, 7593, 8405, 6407, 6121, 6655, 721, 7782,
+ 6879, 7593, 8405, 6407, 6121, 6655, 721, 7783, 721, 13036,
+ 6879, 7593, 8405, 6407, 6121, 6655, 721, 12120,
+ 6879, 7593, 8405, 6407, 6121, 6655, 721, 12121, 721, 13036,
+ 6879, 7593, 8405, 6407, 6121, 6655, 721, 13036,
+ 6879, 7593, 8405, 6407, 6121, 7398,
+ 6879, 7593, 8405, 6407, 6121, 7399, 721, 5388,
+ 6879, 7593, 8405, 6407, 6121, 7399, 721, 5389, 721, 13036,
+ 6879, 7593, 8405, 6407, 6121, 7399, 721, 7782,
+ 6879, 7593, 8405, 6407, 6121, 7399, 721, 7783, 721, 13036,
+ 6879, 7593, 8405, 6407, 6121, 7399, 721, 12120,
+ 6879, 7593, 8405, 6407, 6121, 7399, 721, 12121, 721, 13036,
+ 6879, 7593, 8405, 6407, 6121, 7399, 721, 13036,
+ 6879, 7593, 8405, 6407, 6121, 7724,
+ 6879, 7593, 8405, 6407, 6121, 7782,
+ 6879, 7593, 8405, 6407, 6121, 7783, 721, 13036,
+ 6879, 7593, 8405, 6407, 6121, 8432,
+ 6879, 7593, 8405, 6407, 6121, 8924,
+ 6879, 7593, 8405, 6407, 6121, 12120,
+ 6879, 7593, 8405, 6407, 6121, 12121, 721, 13036,
+ 6879, 7593, 8405, 6407, 6121, 13036,
+ 6879, 7593, 8405, 6674,
+ 6879, 7593, 8405, 6789, 7568,
+ 6879, 7593, 8405, 6824,
+ 6879, 7593, 8405, 7022,
+ 6879, 7593, 8405, 7062,
+ 6879, 7593, 8405, 7080,
+ 6879, 7593, 8405, 7316,
+ 6879, 7593, 8405, 7317, 6121, 5388,
+ 6879, 7593, 8405, 7317, 6121, 5389, 721, 13036,
+ 6879, 7593, 8405, 7317, 6121, 6654,
+ 6879, 7593, 8405, 7317, 6121, 6655, 721, 5388,
+ 6879, 7593, 8405, 7317, 6121, 6655, 721, 5389, 721, 13036,
+ 6879, 7593, 8405, 7317, 6121, 6655, 721, 7782,
+ 6879, 7593, 8405, 7317, 6121, 6655, 721, 7783, 721, 13036,
+ 6879, 7593, 8405, 7317, 6121, 6655, 721, 12120,
+ 6879, 7593, 8405, 7317, 6121, 6655, 721, 12121, 721, 13036,
+ 6879, 7593, 8405, 7317, 6121, 6655, 721, 13036,
+ 6879, 7593, 8405, 7317, 6121, 7398,
+ 6879, 7593, 8405, 7317, 6121, 7399, 721, 5388,
+ 6879, 7593, 8405, 7317, 6121, 7399, 721, 5389, 721, 13036,
+ 6879, 7593, 8405, 7317, 6121, 7399, 721, 7782,
+ 6879, 7593, 8405, 7317, 6121, 7399, 721, 7783, 721, 13036,
+ 6879, 7593, 8405, 7317, 6121, 7399, 721, 12120,
+ 6879, 7593, 8405, 7317, 6121, 7399, 721, 12121, 721, 13036,
+ 6879, 7593, 8405, 7317, 6121, 7399, 721, 13036,
+ 6879, 7593, 8405, 7317, 6121, 7724,
+ 6879, 7593, 8405, 7317, 6121, 7782,
+ 6879, 7593, 8405, 7317, 6121, 7783, 721, 13036,
+ 6879, 7593, 8405, 7317, 6121, 12120,
+ 6879, 7593, 8405, 7317, 6121, 12121, 721, 13036,
+ 6879, 7593, 8405, 7317, 6121, 13036,
+ 6879, 7593, 8405, 7484,
+ 6879, 7593, 8405, 7568,
+ 6879, 7593, 8405, 7682,
+ 6879, 7593, 8405, 8748,
+ 6879, 7593, 8405, 9007, 7062,
+ 6879, 7593, 8405, 9007, 7484,
+ 6879, 7593, 8405, 9162,
+ 6879, 7593, 8405, 9270,
+ 6879, 7593, 8405, 9271, 6121, 5388,
+ 6879, 7593, 8405, 9271, 6121, 6654,
+ 6879, 7593, 8405, 9271, 6121, 6655, 721, 5388,
+ 6879, 7593, 8405, 9271, 6121, 6655, 721, 7782,
+ 6879, 7593, 8405, 9271, 6121, 7398,
+ 6879, 7593, 8405, 9271, 6121, 7399, 721, 5388,
+ 6879, 7593, 8405, 9271, 6121, 7399, 721, 7782,
+ 6879, 7593, 8405, 9271, 6121, 7724,
+ 6879, 7593, 8405, 9271, 6121, 7782,
+ 6879, 7593, 8405, 9530,
+ 6879, 7593, 8405, 9531, 6121, 5388,
+ 6879, 7593, 8405, 9531, 6121, 6654,
+ 6879, 7593, 8405, 9531, 6121, 6655, 721, 5388,
+ 6879, 7593, 8405, 9531, 6121, 6655, 721, 7782,
+ 6879, 7593, 8405, 9531, 6121, 7398,
+ 6879, 7593, 8405, 9531, 6121, 7399, 721, 5388,
+ 6879, 7593, 8405, 9531, 6121, 7399, 721, 7782,
+ 6879, 7593, 8405, 9531, 6121, 7724,
+ 6879, 7593, 8405, 9531, 6121, 7782,
+ 6879, 7593, 8405, 9808,
+ 6879, 7593, 8405, 9809, 6121, 5388,
+ 6879, 7593, 8405, 9809, 6121, 6654,
+ 6879, 7593, 8405, 9809, 6121, 6655, 721, 5388,
+ 6879, 7593, 8405, 9809, 6121, 6655, 721, 7782,
+ 6879, 7593, 8405, 9809, 6121, 6655, 721, 12120,
+ 6879, 7593, 8405, 9809, 6121, 7398,
+ 6879, 7593, 8405, 9809, 6121, 7399, 721, 5388,
+ 6879, 7593, 8405, 9809, 6121, 7399, 721, 7782,
+ 6879, 7593, 8405, 9809, 6121, 7399, 721, 12120,
+ 6879, 7593, 8405, 9809, 6121, 7724,
+ 6879, 7593, 8405, 9809, 6121, 7782,
+ 6879, 7593, 8405, 9809, 6121, 8432,
+ 6879, 7593, 8405, 9809, 6121, 8924,
+ 6879, 7593, 8405, 9809, 6121, 10808,
+ 6879, 7593, 8405, 9809, 6121, 10809, 721, 5388,
+ 6879, 7593, 8405, 9809, 6121, 10809, 721, 7724,
+ 6879, 7593, 8405, 9809, 6121, 10809, 721, 7782,
+ 6879, 7593, 8405, 9809, 6121, 10809, 721, 12120,
+ 6879, 7593, 8405, 9809, 6121, 12120,
+ 6879, 7593, 8405, 11709, 9162,
+ 6879, 7593, 10489, 8151, 8427, 7569, 8774,
+ 6879, 7593, 10489, 8427, 7569, 8774,
+ 6879, 7683, 8774,
+ 6879, 7695, 7307, 5758,
+ 6879, 7695, 10467, 5758,
+ 6879, 7724,
+ 6879, 7782,
+ 6879, 7801, 10365, 10586,
+ 6879, 7801, 10365, 10588,
+ 6879, 7801, 10365, 10590,
+ 6879, 7801, 10365, 10592,
+ 6879, 7801, 10365, 10594,
+ 6879, 7801, 10365, 10596,
+ 6879, 7801, 10365, 10598,
+ 6879, 7801, 10365, 10600,
+ 6879, 7801, 10365, 10602,
+ 6879, 7801, 10365, 11270,
+ 6879, 7801, 10365, 11272,
+ 6879, 7801, 10365, 11274,
+ 6879, 7801, 10365, 11276,
+ 6879, 7801, 10365, 11278,
+ 6879, 7801, 10365, 11280,
+ 6879, 7801, 10365, 11282,
+ 6879, 7801, 10365, 11284,
+ 6879, 7801, 10365, 11286,
+ 6879, 7801, 10365, 11288,
+ 6879, 7801, 10365, 11290,
+ 6879, 7801, 10365, 11292,
+ 6879, 7801, 10365, 11294,
+ 6879, 7801, 10365, 11296,
+ 6879, 7801, 10365, 11298,
+ 6879, 7801, 10365, 11334,
+ 6879, 7801, 10365, 11336,
+ 6879, 7801, 10365, 11338,
+ 6879, 7801, 10365, 11340,
+ 6879, 7801, 10365, 11342,
+ 6879, 7941, 5758,
+ 6879, 7949, 5758,
+ 6879, 8269, 5758,
+ 6879, 8405, 3086,
+ 6879, 8405, 7062,
+ 6879, 8405, 7484,
+ 6879, 8405, 7593, 9063, 476,
+ 6879, 8405, 7593, 9063, 2250,
+ 6879, 8405, 7593, 9063, 2412,
+ 6879, 8405, 7593, 9063, 6824,
+ 6879, 8405, 7593, 9063, 7080,
+ 6879, 8405, 8748,
+ 6879, 8405, 9007, 7062,
+ 6879, 8405, 9162,
+ 6879, 8427, 7569, 8774,
+ 6879, 8427, 9271, 8774,
+ 6879, 8555, 5758,
+ 6879, 8787, 5758,
+ 6879, 8941, 5758,
+ 6879, 9063, 1583, 8774,
+ 6879, 9063, 7683, 8774,
+ 6879, 9063, 8151, 8427, 7569, 8774,
+ 6879, 9063, 8405, 384,
+ 6879, 9063, 8405, 416,
+ 6879, 9063, 8405, 476,
+ 6879, 9063, 8405, 644,
+ 6879, 9063, 8405, 888,
+ 6879, 9063, 8405, 1128,
+ 6879, 9063, 8405, 1129, 6121, 5388,
+ 6879, 9063, 8405, 1129, 6121, 6654,
+ 6879, 9063, 8405, 1129, 6121, 6655, 721, 5388,
+ 6879, 9063, 8405, 1129, 6121, 6655, 721, 5389, 721, 13064,
+ 6879, 9063, 8405, 1129, 6121, 6655, 721, 7782,
+ 6879, 9063, 8405, 1129, 6121, 6655, 721, 7783, 721, 13064,
+ 6879, 9063, 8405, 1129, 6121, 6655, 721, 12120,
+ 6879, 9063, 8405, 1129, 6121, 6655, 721, 12121, 721, 13064,
+ 6879, 9063, 8405, 1129, 6121, 6655, 721, 13064,
+ 6879, 9063, 8405, 1129, 6121, 7398,
+ 6879, 9063, 8405, 1129, 6121, 7399, 721, 5388,
+ 6879, 9063, 8405, 1129, 6121, 7399, 721, 5389, 721, 13064,
+ 6879, 9063, 8405, 1129, 6121, 7399, 721, 7782,
+ 6879, 9063, 8405, 1129, 6121, 7399, 721, 7783, 721, 13064,
+ 6879, 9063, 8405, 1129, 6121, 7399, 721, 12120,
+ 6879, 9063, 8405, 1129, 6121, 7399, 721, 12121, 721, 13064,
+ 6879, 9063, 8405, 1129, 6121, 7399, 721, 13064,
+ 6879, 9063, 8405, 1129, 6121, 7724,
+ 6879, 9063, 8405, 1129, 6121, 7782,
+ 6879, 9063, 8405, 1129, 6121, 13064,
+ 6879, 9063, 8405, 2216,
+ 6879, 9063, 8405, 2250,
+ 6879, 9063, 8405, 2412,
+ 6879, 9063, 8405, 2413, 6121, 6654,
+ 6879, 9063, 8405, 2490,
+ 6879, 9063, 8405, 2522,
+ 6879, 9063, 8405, 2658,
+ 6879, 9063, 8405, 3774,
+ 6879, 9063, 8405, 4408,
+ 6879, 9063, 8405, 4614,
+ 6879, 9063, 8405, 4615, 6121, 5388,
+ 6879, 9063, 8405, 4615, 6121, 6654,
+ 6879, 9063, 8405, 4615, 6121, 6655, 721, 5388,
+ 6879, 9063, 8405, 4615, 6121, 6655, 721, 7782,
+ 6879, 9063, 8405, 4615, 6121, 6655, 721, 12120,
+ 6879, 9063, 8405, 4615, 6121, 7398,
+ 6879, 9063, 8405, 4615, 6121, 7399, 721, 5388,
+ 6879, 9063, 8405, 4615, 6121, 7399, 721, 7782,
+ 6879, 9063, 8405, 4615, 6121, 7399, 721, 12120,
+ 6879, 9063, 8405, 4615, 6121, 7724,
+ 6879, 9063, 8405, 4615, 6121, 7782,
+ 6879, 9063, 8405, 4615, 6121, 8432,
+ 6879, 9063, 8405, 4615, 6121, 8924,
+ 6879, 9063, 8405, 4615, 6121, 10808,
+ 6879, 9063, 8405, 6262,
+ 6879, 9063, 8405, 6406,
+ 6879, 9063, 8405, 6407, 6121, 5388,
+ 6879, 9063, 8405, 6407, 6121, 6654,
+ 6879, 9063, 8405, 6407, 6121, 6655, 721, 5388,
+ 6879, 9063, 8405, 6407, 6121, 6655, 721, 5389, 721, 13064,
+ 6879, 9063, 8405, 6407, 6121, 6655, 721, 7782,
+ 6879, 9063, 8405, 6407, 6121, 6655, 721, 7783, 721, 13064,
+ 6879, 9063, 8405, 6407, 6121, 6655, 721, 12120,
+ 6879, 9063, 8405, 6407, 6121, 6655, 721, 12121, 721, 13064,
+ 6879, 9063, 8405, 6407, 6121, 6655, 721, 13064,
+ 6879, 9063, 8405, 6407, 6121, 7398,
+ 6879, 9063, 8405, 6407, 6121, 7399, 721, 5388,
+ 6879, 9063, 8405, 6407, 6121, 7399, 721, 5389, 721, 13064,
+ 6879, 9063, 8405, 6407, 6121, 7399, 721, 7782,
+ 6879, 9063, 8405, 6407, 6121, 7399, 721, 7783, 721, 13064,
+ 6879, 9063, 8405, 6407, 6121, 7399, 721, 12120,
+ 6879, 9063, 8405, 6407, 6121, 7399, 721, 12121, 721, 13064,
+ 6879, 9063, 8405, 6407, 6121, 7399, 721, 13064,
+ 6879, 9063, 8405, 6407, 6121, 7724,
+ 6879, 9063, 8405, 6407, 6121, 7782,
+ 6879, 9063, 8405, 6407, 6121, 8432,
+ 6879, 9063, 8405, 6407, 6121, 8924,
+ 6879, 9063, 8405, 6407, 6121, 13064,
+ 6879, 9063, 8405, 6674,
+ 6879, 9063, 8405, 6824,
+ 6879, 9063, 8405, 7022,
+ 6879, 9063, 8405, 7080,
+ 6879, 9063, 8405, 7316,
+ 6879, 9063, 8405, 7317, 6121, 5388,
+ 6879, 9063, 8405, 7317, 6121, 6654,
+ 6879, 9063, 8405, 7317, 6121, 6655, 721, 5388,
+ 6879, 9063, 8405, 7317, 6121, 6655, 721, 5389, 721, 13064,
+ 6879, 9063, 8405, 7317, 6121, 6655, 721, 7782,
+ 6879, 9063, 8405, 7317, 6121, 6655, 721, 7783, 721, 13064,
+ 6879, 9063, 8405, 7317, 6121, 6655, 721, 12120,
+ 6879, 9063, 8405, 7317, 6121, 6655, 721, 12121, 721, 13064,
+ 6879, 9063, 8405, 7317, 6121, 6655, 721, 13064,
+ 6879, 9063, 8405, 7317, 6121, 7398,
+ 6879, 9063, 8405, 7317, 6121, 7399, 721, 5388,
+ 6879, 9063, 8405, 7317, 6121, 7399, 721, 5389, 721, 13064,
+ 6879, 9063, 8405, 7317, 6121, 7399, 721, 7782,
+ 6879, 9063, 8405, 7317, 6121, 7399, 721, 7783, 721, 13064,
+ 6879, 9063, 8405, 7317, 6121, 7399, 721, 12120,
+ 6879, 9063, 8405, 7317, 6121, 7399, 721, 12121, 721, 13064,
+ 6879, 9063, 8405, 7317, 6121, 7399, 721, 13064,
+ 6879, 9063, 8405, 7317, 6121, 7724,
+ 6879, 9063, 8405, 7317, 6121, 7782,
+ 6879, 9063, 8405, 7317, 6121, 13064,
+ 6879, 9063, 8405, 7568,
+ 6879, 9063, 8405, 7682,
+ 6879, 9063, 8405, 9007, 7484,
+ 6879, 9063, 8405, 9270,
+ 6879, 9063, 8405, 9271, 6121, 5388,
+ 6879, 9063, 8405, 9271, 6121, 6654,
+ 6879, 9063, 8405, 9271, 6121, 6655, 721, 5388,
+ 6879, 9063, 8405, 9271, 6121, 6655, 721, 7782,
+ 6879, 9063, 8405, 9271, 6121, 7398,
+ 6879, 9063, 8405, 9271, 6121, 7399, 721, 5388,
+ 6879, 9063, 8405, 9271, 6121, 7399, 721, 7782,
+ 6879, 9063, 8405, 9271, 6121, 7724,
+ 6879, 9063, 8405, 9271, 6121, 7782,
+ 6879, 9063, 8405, 9530,
+ 6879, 9063, 8405, 9531, 6121, 5388,
+ 6879, 9063, 8405, 9531, 6121, 6654,
+ 6879, 9063, 8405, 9531, 6121, 6655, 721, 5388,
+ 6879, 9063, 8405, 9531, 6121, 6655, 721, 7782,
+ 6879, 9063, 8405, 9531, 6121, 7398,
+ 6879, 9063, 8405, 9531, 6121, 7399, 721, 5388,
+ 6879, 9063, 8405, 9531, 6121, 7399, 721, 7782,
+ 6879, 9063, 8405, 9531, 6121, 7724,
+ 6879, 9063, 8405, 9531, 6121, 7782,
+ 6879, 9063, 8405, 9808,
+ 6879, 9063, 8405, 9809, 6121, 5388,
+ 6879, 9063, 8405, 9809, 6121, 6654,
+ 6879, 9063, 8405, 9809, 6121, 6655, 721, 5388,
+ 6879, 9063, 8405, 9809, 6121, 6655, 721, 7782,
+ 6879, 9063, 8405, 9809, 6121, 6655, 721, 12120,
+ 6879, 9063, 8405, 9809, 6121, 7724,
+ 6879, 9063, 8405, 9809, 6121, 7782,
+ 6879, 9063, 8405, 9809, 6121, 8432,
+ 6879, 9063, 8405, 9809, 6121, 8924,
+ 6879, 9063, 8405, 9809, 6121, 10808,
+ 6879, 9063, 8405, 11709, 9162,
+ 6879, 9063, 8427, 7569, 8774,
+ 6879, 9063, 10489, 8151, 8427, 7569, 8774,
+ 6879, 9063, 10489, 8427, 7569, 8774,
+ 6879, 9245, 5758,
+ 6879, 9412,
+ 6879, 9419, 3717, 5758,
+ 6879, 9483, 8396,
+ 6879, 9513, 5758,
+ 6879, 9809, 6121, 4531, 8774,
+ 6879, 9809, 6121, 6379, 721, 4531, 8774,
+ 6879, 9809, 6121, 10805, 721, 4531, 8774,
+ 6879, 10331, 5758,
+ 6879, 10469, 4926,
+ 6879, 10489, 8427, 9271, 8774,
+ 6879, 10651, 3717, 5758,
+ 6879, 10809, 721, 5388,
+ 6879, 10809, 721, 7782,
+ 6879, 10809, 721, 12120,
+ 6879, 10809, 7724,
+ 6879, 11261, 7593, 8405, 888,
+ 6879, 11261, 7593, 8405, 2216,
+ 6879, 11261, 7593, 8405, 2412,
+ 6879, 11261, 7593, 8405, 3774,
+ 6879, 11261, 7593, 8405, 6824,
+ 6879, 11405, 6443, 2171, 4388,
+ 6879, 11405, 6443, 2171, 9244,
+ 6879, 11405, 6443, 2171, 9345, 9736,
+ 6879, 11405, 6443, 2171, 9345, 9764,
+ 6879, 11405, 6443, 2171, 9614,
+ 6879, 11405, 6443, 2171, 10625, 9736,
+ 6879, 11405, 6443, 2171, 10625, 9764,
+ 6879, 11405, 6443, 2671, 5010,
+ 6879, 11405, 6443, 2671, 9736,
+ 6879, 11405, 6443, 2671, 9764,
+ 6879, 11405, 6443, 2671, 10625, 9736,
+ 6879, 11405, 6443, 4200,
+ 6879, 11405, 6443, 4201, 9344,
+ 6879, 11405, 6443, 4201, 9345, 9736,
+ 6879, 11405, 6443, 4201, 9345, 9764,
+ 6879, 11405, 6443, 4201, 9736,
+ 6879, 11405, 6443, 4201, 9764,
+ 6879, 11405, 6443, 4201, 10624,
+ 6879, 11405, 6443, 4201, 10625, 9764,
+ 6879, 11405, 6443, 6784,
+ 6879, 11405, 6443, 6785, 9736,
+ 6879, 11405, 6443, 6785, 9764,
+ 6879, 11405, 6443, 6785, 10624,
+ 6879, 11405, 6443, 6785, 10625, 9736,
+ 6879, 11405, 8505, 4201, 9344,
+ 6879, 11405, 9153, 4201, 5010,
+ 6879, 11405, 9337, 2171, 10436,
+ 6879, 11405, 9975, 2779, 10138,
+ 6879, 11405, 10549, 6785, 5010,
+ 6879, 11405, 10621, 2170,
+ 6879, 11405, 10621, 2171, 9344,
+ 6879, 11405, 10621, 2171, 10624,
+ 6879, 11405, 10621, 2670,
+ 6879, 11405, 10621, 2778,
+ 6879, 11405, 10621, 4201, 9344,
+ 6879, 11405, 10621, 4201, 10624,
+ 6879, 11405, 10621, 6784,
+ 6879, 11405, 10621, 7695, 9344,
+ 6879, 11405, 10621, 8820,
+ 6879, 11405, 10755, 4201, 9344,
+ 6879, 11405, 11117, 2670,
+ 6879, 11405, 11617, 2778,
+ 6879, 11405, 11617, 2779, 10138,
+ 6879, 11405, 11617, 4201, 9344,
+ 6879, 11405, 11645, 2170,
+ 6879, 11405, 11645, 2670,
+ 6879, 11405, 11645, 6784,
+ 6879, 11405, 11865, 2670,
+ 6879, 11405, 11865, 2671, 10707, 4212,
+ 6879, 11405, 11865, 4200,
+ 6879, 11405, 11865, 4201, 9344,
+ 6879, 11405, 11865, 6784,
+ 6879, 11405, 11865, 6785, 10707, 4212,
+ 6879, 12120,
+ 6879, 12489, 10365, 10586,
+ 6879, 12489, 10365, 10588,
+ 6879, 12489, 10365, 10592,
+ 6879, 12489, 10365, 10594,
+ 6879, 12489, 10365, 10598,
+ 6879, 12489, 10365, 10600,
+ 6879, 12489, 10365, 11272,
+ 6879, 12489, 10365, 11274,
+ 6879, 12489, 10365, 11276,
+ 6879, 12489, 10365, 11278,
+ 6879, 12489, 10365, 11284,
+ 6879, 12489, 10365, 11286,
+ 6879, 12489, 10365, 11288,
+ 6879, 12489, 10365, 11296,
+ 6879, 12489, 10365, 11298,
+ 6879, 12489, 10365, 11300,
+ 6879, 12489, 10365, 11302,
+ 6879, 12489, 10365, 11304,
+ 6879, 12489, 10365, 11306,
+ 6879, 12489, 10365, 11308,
+ 6879, 12489, 10365, 11310,
+ 6879, 12489, 10365, 11312,
+ 6879, 12489, 10365, 11314,
+ 6879, 12489, 10365, 11316,
+ 6879, 12489, 10365, 11318,
+ 6879, 12489, 10365, 11320,
+ 6879, 12489, 10365, 11322,
+ 6879, 12489, 10365, 11324,
+ 6879, 12489, 10365, 11326,
+ 6879, 12489, 10365, 11328,
+ 6879, 12489, 10365, 11330,
+ 6879, 12489, 10365, 11332,
+ 6879, 12489, 10365, 11334,
+ 6879, 12489, 10365, 11336,
+ 6879, 12489, 10365, 11338,
+ 6879, 12489, 10365, 11340,
+ 6879, 12489, 10365, 11342,
+ 6879, 13036,
+ 6879, 13064,
+ 6909, 4215, 13047, 9898,
+ 6909, 5385, 8037, 6622,
+ 6909, 6505, 6906,
+ 6909, 6505, 8083, 9811, 721, 11765, 6434,
+ 6909, 6505, 8083, 10959, 721, 11765, 6434,
+ 6909, 6569, 4926,
+ 6909, 6723, 9601, 12141, 6505, 5830,
+ 6909, 6723, 13233, 11187, 9898,
+ 6909, 6879, 6622,
+ 6909, 6907, 12017, 4927, 10380,
+ 6909, 7121, 13069, 7821, 11765, 6434,
+ 6909, 7271, 4153, 6434,
+ 6909, 7607, 4153, 6434,
+ 6909, 7773, 13069, 7821, 11765, 6434,
+ 6909, 7971, 46,
+ 6909, 8097, 13235, 11765, 6434,
+ 6909, 8153, 6617, 11195, 4927, 10380,
+ 6909, 8153, 8869, 6617, 11195, 4927, 10380,
+ 6909, 8717, 6617, 11195, 4927, 10380,
+ 6909, 8717, 8869, 6617, 11195, 4927, 10380,
+ 6909, 9085, 11242,
+ 6909, 9722,
+ 6909, 9898,
+ 6909, 10385, 6505, 5830,
+ 6909, 10677, 760,
+ 6909, 11765, 6434,
+ 6909, 12017, 4927, 10380,
+ 6909, 12387, 11765, 6434,
+ 6909, 12539, 11765, 6434,
+ 6909, 12895, 11765, 6434,
+ 6909, 12967, 6409, 9051, 10380,
+ 6909, 12967, 6409, 11195, 4927, 10380,
+ 6909, 13061, 46,
+ 6909, 13067, 6409, 9051, 10380,
+ 6909, 13067, 6409, 11195, 4927, 10380,
+ 6909, 13191, 7271, 4153, 6434,
+ 6909, 13191, 7607, 4153, 6434,
+ 6909, 13191, 11765, 6434,
+ 6909, 13199, 6505, 11765, 6434,
+ 6909, 13233, 9898,
+ 6909, 13233, 10433, 9898,
+ 6909, 13235, 11765, 6434,
+ 6909, 13351, 11765, 6434,
+ 6954,
+ 6989, 428,
+ 6989, 429, 445, 12903, 6741, 568,
+ 7031, 341, 5759, 940,
+ 7031, 341, 5759, 5740,
+ 7031, 341, 5965, 6540,
+ 7031, 341, 5965, 6541, 8596,
+ 7031, 341, 5965, 8596,
+ 7031, 341, 6689, 2170,
+ 7031, 341, 6689, 2540,
+ 7031, 341, 6689, 2778,
+ 7031, 341, 6689, 4200,
+ 7031, 341, 6689, 4214,
+ 7031, 341, 6689, 5190,
+ 7031, 341, 6689, 6260,
+ 7031, 341, 6689, 6722,
+ 7031, 341, 6689, 7508,
+ 7031, 341, 6689, 7694,
+ 7031, 341, 7803, 8,
+ 7031, 341, 7803, 28,
+ 7031, 341, 7803, 40,
+ 7031, 341, 7803, 162,
+ 7031, 341, 7803, 590,
+ 7031, 341, 8405, 0,
+ 7031, 341, 8405, 16,
+ 7031, 341, 8405, 100,
+ 7031, 341, 8405, 116,
+ 7031, 341, 8405, 138,
+ 7031, 341, 8405, 216,
+ 7031, 341, 8405, 236,
+ 7031, 341, 8405, 306,
+ 7031, 341, 8405, 332,
+ 7031, 341, 8405, 364,
+ 7031, 341, 8405, 392,
+ 7031, 341, 8405, 426,
+ 7031, 341, 8405, 440,
+ 7031, 341, 8405, 462,
+ 7031, 341, 8405, 510,
+ 7031, 341, 8405, 524,
+ 7031, 341, 8405, 556,
+ 7031, 341, 8405, 610,
+ 7031, 341, 8405, 622,
+ 7031, 341, 8405, 652,
+ 7031, 341, 8405, 670,
+ 7031, 341, 8405, 1434,
+ 7031, 341, 8405, 1612,
+ 7031, 341, 8405, 2030,
+ 7031, 341, 8405, 2126,
+ 7031, 341, 8405, 2212,
+ 7031, 341, 8405, 2516,
+ 7031, 341, 8405, 2678,
+ 7049, 5759, 1763, 2722,
+ 7049, 5759, 4740,
+ 7049, 5759, 6388,
+ 7049, 5759, 6608,
+ 7049, 5759, 7450,
+ 7049, 5759, 7976,
+ 7049, 5759, 7992,
+ 7049, 5759, 8025, 2227, 4794,
+ 7049, 5759, 8583, 5014,
+ 7049, 5759, 8663, 8666,
+ 7049, 5759, 8918,
+ 7049, 5759, 9382,
+ 7049, 5759, 9408,
+ 7049, 5759, 9506,
+ 7049, 5759, 9624,
+ 7049, 5759, 9794,
+ 7049, 5759, 9902,
+ 7049, 5759, 11438,
+ 7049, 5759, 11440,
+ 7049, 5759, 12088,
+ 7049, 5759, 12366,
+ 7049, 5759, 12906,
+ 7049, 5759, 13038,
+ 7049, 6689, 2170,
+ 7049, 6689, 2540,
+ 7049, 6689, 2778,
+ 7049, 6689, 4200,
+ 7049, 6689, 4214,
+ 7049, 6689, 5190,
+ 7049, 6689, 6260,
+ 7049, 6689, 6722,
+ 7049, 6689, 7508,
+ 7049, 6689, 7694,
+ 7049, 7803, 5759, 8,
+ 7049, 7803, 5759, 16,
+ 7049, 7803, 5759, 40,
+ 7049, 7803, 5759, 48,
+ 7049, 7803, 5759, 58,
+ 7049, 7803, 5759, 66,
+ 7049, 7803, 5759, 72,
+ 7049, 7803, 5759, 92,
+ 7049, 7803, 5759, 258,
+ 7049, 7803, 5759, 266,
+ 7049, 7803, 5759, 426,
+ 7049, 7803, 5759, 440,
+ 7049, 7803, 5759, 582,
+ 7049, 7803, 5759, 606,
+ 7049, 7803, 5759, 652,
+ 7049, 7803, 5759, 668,
+ 7049, 7803, 10259, 58,
+ 7049, 7803, 10259, 86,
+ 7049, 8405, 100,
+ 7049, 8405, 116,
+ 7049, 8405, 130,
+ 7049, 8405, 138,
+ 7049, 8405, 150,
+ 7049, 8405, 236,
+ 7049, 8405, 306,
+ 7049, 8405, 322,
+ 7049, 8405, 332,
+ 7049, 8405, 350,
+ 7049, 8405, 380,
+ 7049, 8405, 412,
+ 7049, 8405, 480,
+ 7049, 8405, 496,
+ 7049, 8405, 516,
+ 7049, 8405, 524,
+ 7049, 8405, 556,
+ 7049, 8405, 568,
+ 7049, 8405, 616,
+ 7049, 8405, 660,
+ 7049, 8405, 884,
+ 7049, 8405, 890,
+ 7049, 8405, 1612,
+ 7049, 8405, 1618,
+ 7049, 8405, 2038,
+ 7049, 8405, 2080,
+ 7049, 8405, 2134,
+ 7049, 8405, 2212,
+ 7049, 8405, 2218,
+ 7049, 8405, 2516,
+ 7049, 8405, 2572,
+ 7049, 8405, 2678,
+ 7049, 8405, 2684,
+ 7049, 8405, 5994,
+ 7049, 8405, 6000,
+ 7049, 8775, 783, 2426,
+ 7049, 8775, 783, 4768,
+ 7049, 8775, 965, 2426,
+ 7049, 8775, 965, 4768,
+ 7049, 8775, 1763, 6441, 782,
+ 7049, 8775, 1763, 6441, 2226,
+ 7049, 8775, 1763, 6441, 2552,
+ 7049, 8775, 1763, 6441, 3814,
+ 7049, 8775, 1763, 6441, 5026,
+ 7049, 8775, 1763, 6441, 5450,
+ 7049, 8775, 1763, 6441, 10446,
+ 7049, 8775, 1763, 6441, 10448,
+ 7049, 8775, 1763, 6441, 11178,
+ 7049, 8775, 1763, 6441, 11180,
+ 7049, 8775, 2227, 2426,
+ 7049, 8775, 2227, 4768,
+ 7049, 8775, 3815, 2426,
+ 7049, 8775, 3815, 4768,
+ 7049, 8775, 5027, 2426,
+ 7049, 8775, 5027, 4768,
+ 7049, 8775, 5451, 2426,
+ 7049, 8775, 5451, 4768,
+ 7049, 8775, 9143, 2426,
+ 7049, 8775, 9143, 4768,
+ 7049, 8775, 9145, 2426,
+ 7049, 8775, 9145, 4768,
+ 7049, 8775, 9981, 2426,
+ 7049, 8775, 9981, 4768,
+ 7049, 8775, 9983, 2426,
+ 7049, 8775, 9983, 4768,
+ 7049, 8775, 9985, 2426,
+ 7049, 8775, 9985, 4768,
+ 7049, 8775, 10447, 2426,
+ 7049, 8775, 10447, 4768,
+ 7049, 8775, 10449, 2426,
+ 7049, 8775, 10449, 4768,
+ 7049, 8775, 11179, 2426,
+ 7049, 8775, 11179, 4768,
+ 7049, 8775, 11181, 2426,
+ 7049, 8775, 11181, 4768,
+ 7049, 8775, 11380,
+ 7049, 8775, 11716,
+ 7049, 9971, 8775, 5548,
+ 7049, 12053, 7803, 360,
+ 7049, 12053, 7803, 498,
+ 7049, 12053, 7803, 500,
+ 7049, 12053, 7803, 506,
+ 7049, 12053, 7803, 522,
+ 7049, 12053, 7803, 1850,
+ 7049, 12053, 7803, 2282,
+ 7049, 12053, 7803, 2286,
+ 7049, 12053, 7803, 2288,
+ 7049, 12053, 7803, 2292,
+ 7049, 12053, 7803, 2308,
+ 7049, 12053, 7803, 2321, 6031, 2170,
+ 7049, 12053, 7803, 2321, 6031, 2778,
+ 7049, 12053, 7803, 2334,
+ 7049, 12053, 7803, 2344,
+ 7049, 12053, 7803, 2478,
+ 7049, 12053, 7803, 5506,
+ 7085, 601, 5876,
+ 7085, 4117, 5876,
+ 7085, 4849, 10643, 10374,
+ 7085, 8056,
+ 7085, 8849, 10677, 761, 10374,
+ 7089, 6622,
+ 7089, 7593, 8405, 0,
+ 7089, 7593, 8405, 1, 6121, 1045, 6376,
+ 7089, 7593, 8405, 1, 6121, 1045, 6377, 721, 8432,
+ 7089, 7593, 8405, 1, 6121, 1045, 6490,
+ 7089, 7593, 8405, 1, 6121, 4531, 6376,
+ 7089, 7593, 8405, 1, 6121, 5551, 6376,
+ 7089, 7593, 8405, 1, 6121, 5551, 6377, 721, 6378,
+ 7089, 7593, 8405, 1, 6121, 5551, 6490,
+ 7089, 7593, 8405, 1, 6121, 6378,
+ 7089, 7593, 8405, 1, 6121, 6516,
+ 7089, 7593, 8405, 1, 6121, 6517, 721, 1045, 6490,
+ 7089, 7593, 8405, 1, 6121, 6517, 721, 4531, 6376,
+ 7089, 7593, 8405, 1, 6121, 6517, 721, 6378,
+ 7089, 7593, 8405, 1, 6121, 6517, 721, 6874,
+ 7089, 7593, 8405, 1, 6121, 6517, 721, 7708,
+ 7089, 7593, 8405, 1, 6121, 6546,
+ 7089, 7593, 8405, 1, 6121, 6874,
+ 7089, 7593, 8405, 1, 6121, 7443, 4389, 5550,
+ 7089, 7593, 8405, 1, 6121, 7708,
+ 7089, 7593, 8405, 1, 6121, 8153, 6874,
+ 7089, 7593, 8405, 1, 6121, 8432,
+ 7089, 7593, 8405, 1, 6121, 8534,
+ 7089, 7593, 8405, 1, 6121, 8758,
+ 7089, 7593, 8405, 1, 6121, 10267, 6516,
+ 7089, 7593, 8405, 1, 6121, 10804,
+ 7089, 7593, 8405, 1, 6121, 10805, 721, 8432,
+ 7089, 7593, 8405, 1, 6121, 11215, 4530,
+ 7089, 7593, 8405, 1, 6121, 11448,
+ 7089, 7593, 8405, 1, 6121, 11449, 721, 1045, 6490,
+ 7089, 7593, 8405, 1, 6121, 11449, 721, 4531, 6376,
+ 7089, 7593, 8405, 1, 6121, 11449, 721, 6378,
+ 7089, 7593, 8405, 1, 6121, 11449, 721, 6874,
+ 7089, 7593, 8405, 1, 6121, 11449, 721, 7708,
+ 7089, 7593, 8405, 2,
+ 7089, 7593, 8405, 3, 6121, 1045, 6376,
+ 7089, 7593, 8405, 3, 6121, 1045, 6490,
+ 7089, 7593, 8405, 3, 6121, 4530,
+ 7089, 7593, 8405, 3, 6121, 4877, 6490,
+ 7089, 7593, 8405, 3, 6121, 8473, 7708,
+ 7089, 7593, 8405, 3, 6121, 8758,
+ 7089, 7593, 8405, 3, 6121, 8846,
+ 7089, 7593, 8405, 3, 6121, 9553, 4530,
+ 7089, 7593, 8405, 4,
+ 7089, 7593, 8405, 5, 6121, 1045, 6376,
+ 7089, 7593, 8405, 5, 6121, 3966,
+ 7089, 7593, 8405, 5, 6121, 4530,
+ 7089, 7593, 8405, 5, 6121, 6378,
+ 7089, 7593, 8405, 5, 6121, 6546,
+ 7089, 7593, 8405, 5, 6121, 8758,
+ 7089, 7593, 8405, 5, 6121, 9072,
+ 7089, 7593, 8405, 5, 6121, 9073, 721, 6378,
+ 7089, 7593, 8405, 5, 6121, 11448,
+ 7089, 7593, 8405, 6,
+ 7089, 7593, 8405, 7, 6121, 1045, 6376,
+ 7089, 7593, 8405, 7, 6121, 1045, 6490,
+ 7089, 7593, 8405, 7, 6121, 3966,
+ 7089, 7593, 8405, 7, 6121, 4530,
+ 7089, 7593, 8405, 7, 6121, 4531, 721, 5878,
+ 7089, 7593, 8405, 7, 6121, 4877, 6490,
+ 7089, 7593, 8405, 7, 6121, 5878,
+ 7089, 7593, 8405, 7, 6121, 6546,
+ 7089, 7593, 8405, 7, 6121, 8473, 7708,
+ 7089, 7593, 8405, 7, 6121, 8758,
+ 7089, 7593, 8405, 7, 6121, 8846,
+ 7089, 7593, 8405, 7, 6121, 9072,
+ 7089, 7593, 8405, 7, 6121, 9553, 4530,
+ 7089, 7593, 8405, 7, 6121, 11449, 6490,
+ 7089, 7593, 8405, 8,
+ 7089, 7593, 8405, 9, 6121, 1045, 6376,
+ 7089, 7593, 8405, 9, 6121, 1045, 6490,
+ 7089, 7593, 8405, 9, 6121, 4531, 6376,
+ 7089, 7593, 8405, 9, 6121, 6378,
+ 7089, 7593, 8405, 9, 6121, 6516,
+ 7089, 7593, 8405, 9, 6121, 6546,
+ 7089, 7593, 8405, 9, 6121, 6874,
+ 7089, 7593, 8405, 9, 6121, 7272,
+ 7089, 7593, 8405, 9, 6121, 7708,
+ 7089, 7593, 8405, 9, 6121, 7709, 6490,
+ 7089, 7593, 8405, 9, 6121, 8153, 6874,
+ 7089, 7593, 8405, 9, 6121, 8432,
+ 7089, 7593, 8405, 9, 6121, 8433, 721, 6378,
+ 7089, 7593, 8405, 9, 6121, 8433, 721, 6874,
+ 7089, 7593, 8405, 9, 6121, 8534,
+ 7089, 7593, 8405, 9, 6121, 8758,
+ 7089, 7593, 8405, 9, 6121, 9072,
+ 7089, 7593, 8405, 9, 6121, 9073, 721, 6516,
+ 7089, 7593, 8405, 9, 6121, 10267, 6516,
+ 7089, 7593, 8405, 9, 6121, 10804,
+ 7089, 7593, 8405, 9, 6121, 11215, 4530,
+ 7089, 7593, 8405, 9, 6121, 11448,
+ 7089, 7593, 8405, 9, 6121, 11449, 721, 1045, 6490,
+ 7089, 7593, 8405, 9, 6121, 11449, 721, 4531, 6376,
+ 7089, 7593, 8405, 9, 6121, 11449, 721, 6378,
+ 7089, 7593, 8405, 9, 6121, 11449, 721, 6874,
+ 7089, 7593, 8405, 9, 6121, 11449, 721, 7708,
+ 7089, 7593, 8405, 9, 6121, 11449, 6490,
+ 7089, 7593, 8405, 10,
+ 7089, 7593, 8405, 11, 6121, 1045, 6376,
+ 7089, 7593, 8405, 11, 6121, 4530,
+ 7089, 7593, 8405, 11, 6121, 8473, 7708,
+ 7089, 7593, 8405, 11, 6121, 9553, 4530,
+ 7089, 7593, 8405, 12,
+ 7089, 7593, 8405, 13, 6121, 1045, 6376,
+ 7089, 7593, 8405, 13, 6121, 4530,
+ 7089, 7593, 8405, 13, 6121, 6378,
+ 7089, 7593, 8405, 13, 6121, 6516,
+ 7089, 7593, 8405, 13, 6121, 6546,
+ 7089, 7593, 8405, 13, 6121, 8432,
+ 7089, 7593, 8405, 13, 6121, 8758,
+ 7089, 7593, 8405, 13, 6121, 9072,
+ 7089, 7593, 8405, 13, 6121, 9553, 4530,
+ 7089, 7593, 8405, 13, 6121, 11448,
+ 7089, 7593, 8405, 14,
+ 7089, 7593, 8405, 15, 6121, 1045, 6376,
+ 7089, 7593, 8405, 15, 6121, 1045, 6490,
+ 7089, 7593, 8405, 15, 6121, 4530,
+ 7089, 7593, 8405, 15, 6121, 4877, 6490,
+ 7089, 7593, 8405, 15, 6121, 6517, 6490,
+ 7089, 7593, 8405, 15, 6121, 6546,
+ 7089, 7593, 8405, 15, 6121, 8758,
+ 7089, 7593, 8405, 15, 6121, 9072,
+ 7089, 7593, 8405, 15, 6121, 10802,
+ 7089, 7593, 8405, 15, 6121, 10804,
+ 7089, 7593, 8405, 15, 6121, 11448,
+ 7089, 7593, 8405, 16,
+ 7089, 7593, 8405, 17, 6121, 1045, 6490,
+ 7089, 7593, 8405, 17, 6121, 4531, 6376,
+ 7089, 7593, 8405, 17, 6121, 6378,
+ 7089, 7593, 8405, 17, 6121, 6516,
+ 7089, 7593, 8405, 17, 6121, 6546,
+ 7089, 7593, 8405, 17, 6121, 6874,
+ 7089, 7593, 8405, 17, 6121, 7708,
+ 7089, 7593, 8405, 17, 6121, 7709, 6490,
+ 7089, 7593, 8405, 17, 6121, 8153, 6874,
+ 7089, 7593, 8405, 17, 6121, 8432,
+ 7089, 7593, 8405, 17, 6121, 8534,
+ 7089, 7593, 8405, 17, 6121, 8758,
+ 7089, 7593, 8405, 17, 6121, 10267, 6516,
+ 7089, 7593, 8405, 17, 6121, 10804,
+ 7089, 7593, 8405, 17, 6121, 10805, 721, 6378,
+ 7089, 7593, 8405, 17, 6121, 11215, 4530,
+ 7089, 7593, 8405, 17, 6121, 11448,
+ 7089, 7593, 8405, 18,
+ 7089, 7593, 8405, 19, 6121, 6546,
+ 7089, 7593, 8405, 19, 6121, 8758,
+ 7089, 7593, 8405, 19, 6121, 11448,
+ 7089, 7593, 8405, 19, 6121, 12426,
+ 7089, 7593, 8405, 20,
+ 7089, 7593, 8405, 21, 6121, 1045, 6490,
+ 7089, 7593, 8405, 21, 6121, 4530,
+ 7089, 7593, 8405, 21, 6121, 4877, 6490,
+ 7089, 7593, 8405, 21, 6121, 6378,
+ 7089, 7593, 8405, 21, 6121, 6546,
+ 7089, 7593, 8405, 21, 6121, 8758,
+ 7089, 7593, 8405, 21, 6121, 8759, 721, 10001, 8758,
+ 7089, 7593, 8405, 21, 6121, 9072,
+ 7089, 7593, 8405, 21, 6121, 9553, 4530,
+ 7089, 7593, 8405, 21, 6121, 10001, 8758,
+ 7089, 7593, 8405, 21, 6121, 10802,
+ 7089, 7593, 8405, 22,
+ 7089, 7593, 8405, 23, 6121, 760,
+ 7089, 7593, 8405, 23, 6121, 1045, 6490,
+ 7089, 7593, 8405, 23, 6121, 1045, 6491, 721, 8432,
+ 7089, 7593, 8405, 23, 6121, 3770,
+ 7089, 7593, 8405, 23, 6121, 3966,
+ 7089, 7593, 8405, 23, 6121, 4423, 8758,
+ 7089, 7593, 8405, 23, 6121, 4877, 6490,
+ 7089, 7593, 8405, 23, 6121, 6378,
+ 7089, 7593, 8405, 23, 6121, 6546,
+ 7089, 7593, 8405, 23, 6121, 8153, 760,
+ 7089, 7593, 8405, 23, 6121, 8473, 1044,
+ 7089, 7593, 8405, 23, 6121, 8473, 7708,
+ 7089, 7593, 8405, 23, 6121, 8758,
+ 7089, 7593, 8405, 23, 6121, 9072,
+ 7089, 7593, 8405, 23, 6121, 9553, 4530,
+ 7089, 7593, 8405, 23, 6121, 11215, 4530,
+ 7089, 7593, 8405, 23, 6121, 11449, 6490,
+ 7089, 7593, 8405, 24,
+ 7089, 7593, 8405, 25, 6121, 1045, 6376,
+ 7089, 7593, 8405, 25, 6121, 1045, 6490,
+ 7089, 7593, 8405, 25, 6121, 4530,
+ 7089, 7593, 8405, 25, 6121, 6378,
+ 7089, 7593, 8405, 25, 6121, 8473, 7708,
+ 7089, 7593, 8405, 25, 6121, 9553, 4530,
+ 7089, 7593, 8405, 26,
+ 7089, 7593, 8405, 27, 6121, 1045, 6376,
+ 7089, 7593, 8405, 27, 6121, 1045, 6490,
+ 7089, 7593, 8405, 27, 6121, 3966,
+ 7089, 7593, 8405, 27, 6121, 4849, 4530,
+ 7089, 7593, 8405, 27, 6121, 4877, 6490,
+ 7089, 7593, 8405, 27, 6121, 4895, 7443, 1760,
+ 7089, 7593, 8405, 27, 6121, 6378,
+ 7089, 7593, 8405, 27, 6121, 6546,
+ 7089, 7593, 8405, 27, 6121, 6874,
+ 7089, 7593, 8405, 27, 6121, 7708,
+ 7089, 7593, 8405, 27, 6121, 8473, 7708,
+ 7089, 7593, 8405, 27, 6121, 9072,
+ 7089, 7593, 8405, 27, 6121, 9553, 4530,
+ 7089, 7593, 8405, 27, 6121, 11215, 4530,
+ 7089, 7593, 8405, 27, 6121, 11449, 6490,
+ 7089, 7593, 8405, 27, 10451, 115, 11424,
+ 7089, 7593, 8405, 28,
+ 7089, 7593, 8405, 29, 6121, 1045, 6376,
+ 7089, 7593, 8405, 29, 6121, 1045, 6377, 721, 8432,
+ 7089, 7593, 8405, 29, 6121, 1045, 6490,
+ 7089, 7593, 8405, 29, 6121, 1809, 5551, 8318,
+ 7089, 7593, 8405, 29, 6121, 4531, 6376,
+ 7089, 7593, 8405, 29, 6121, 4536,
+ 7089, 7593, 8405, 29, 6121, 4537, 721, 1045, 6490,
+ 7089, 7593, 8405, 29, 6121, 4537, 721, 4531, 6376,
+ 7089, 7593, 8405, 29, 6121, 4537, 721, 6378,
+ 7089, 7593, 8405, 29, 6121, 4537, 721, 6874,
+ 7089, 7593, 8405, 29, 6121, 4537, 721, 7708,
+ 7089, 7593, 8405, 29, 6121, 4895, 8759, 9548,
+ 7089, 7593, 8405, 29, 6121, 4896,
+ 7089, 7593, 8405, 29, 6121, 6378,
+ 7089, 7593, 8405, 29, 6121, 6516,
+ 7089, 7593, 8405, 29, 6121, 6546,
+ 7089, 7593, 8405, 29, 6121, 6874,
+ 7089, 7593, 8405, 29, 6121, 7708,
+ 7089, 7593, 8405, 29, 6121, 7709, 721, 6378,
+ 7089, 7593, 8405, 29, 6121, 7709, 721, 8432,
+ 7089, 7593, 8405, 29, 6121, 7709, 721, 10804,
+ 7089, 7593, 8405, 29, 6121, 8153, 6378,
+ 7089, 7593, 8405, 29, 6121, 8153, 6874,
+ 7089, 7593, 8405, 29, 6121, 8432,
+ 7089, 7593, 8405, 29, 6121, 8433, 721, 6378,
+ 7089, 7593, 8405, 29, 6121, 8433, 721, 6874,
+ 7089, 7593, 8405, 29, 6121, 8534,
+ 7089, 7593, 8405, 29, 6121, 8535, 721, 8432,
+ 7089, 7593, 8405, 29, 6121, 8758,
+ 7089, 7593, 8405, 29, 6121, 8759, 721, 6378,
+ 7089, 7593, 8405, 29, 6121, 10267, 6516,
+ 7089, 7593, 8405, 29, 6121, 10804,
+ 7089, 7593, 8405, 29, 6121, 10805, 721, 8432,
+ 7089, 7593, 8405, 29, 6121, 11448,
+ 7089, 7593, 8405, 29, 6121, 11449, 721, 1045, 6490,
+ 7089, 7593, 8405, 29, 6121, 11449, 721, 4531, 6376,
+ 7089, 7593, 8405, 29, 6121, 11449, 721, 6378,
+ 7089, 7593, 8405, 29, 6121, 11449, 721, 6874,
+ 7089, 7593, 8405, 29, 6121, 11449, 721, 7708,
+ 7089, 7593, 8405, 30,
+ 7089, 7593, 8405, 31, 6121, 1045, 6376,
+ 7089, 7593, 8405, 31, 6121, 4530,
+ 7089, 7593, 8405, 31, 6121, 6378,
+ 7089, 7593, 8405, 31, 6121, 8473, 7708,
+ 7089, 7593, 8405, 31, 6121, 8758,
+ 7089, 7593, 8405, 31, 6121, 8759, 9785, 10802,
+ 7089, 7593, 8405, 31, 6121, 9553, 4530,
+ 7089, 7593, 8405, 31, 6121, 10196,
+ 7089, 7593, 8405, 31, 6121, 10533, 5878,
+ 7089, 7593, 8405, 32,
+ 7089, 7593, 8405, 33, 6121, 4530,
+ 7089, 7593, 8405, 33, 6121, 4531, 5878,
+ 7089, 7593, 8405, 33, 6121, 8759, 9785, 10802,
+ 7089, 7593, 8405, 33, 6121, 10001, 8758,
+ 7089, 7593, 8405, 34,
+ 7089, 7593, 8405, 35, 6121, 1045, 6376,
+ 7089, 7593, 8405, 35, 6121, 1045, 6490,
+ 7089, 7593, 8405, 35, 6121, 1045, 6491, 721, 8432,
+ 7089, 7593, 8405, 35, 6121, 4877, 6490,
+ 7089, 7593, 8405, 35, 6121, 4895, 1760,
+ 7089, 7593, 8405, 35, 6121, 5878,
+ 7089, 7593, 8405, 35, 6121, 6378,
+ 7089, 7593, 8405, 35, 6121, 6546,
+ 7089, 7593, 8405, 35, 6121, 8153, 6874,
+ 7089, 7593, 8405, 35, 6121, 8473, 7708,
+ 7089, 7593, 8405, 35, 6121, 8758,
+ 7089, 7593, 8405, 35, 6121, 9072,
+ 7089, 7593, 8405, 35, 6121, 9553, 4530,
+ 7089, 7593, 8405, 35, 6121, 10190,
+ 7089, 7593, 8405, 35, 6121, 10191, 721, 8473, 7708,
+ 7089, 7593, 8405, 35, 6121, 10267, 6516,
+ 7089, 7593, 8405, 35, 9642,
+ 7089, 7593, 8405, 36,
+ 7089, 7593, 8405, 37, 6121, 1045, 6376,
+ 7089, 7593, 8405, 37, 6121, 1045, 6490,
+ 7089, 7593, 8405, 37, 6121, 1045, 6491, 721, 1045, 6376,
+ 7089, 7593, 8405, 37, 6121, 4530,
+ 7089, 7593, 8405, 37, 6121, 6378,
+ 7089, 7593, 8405, 37, 6121, 6379, 721, 1045, 6376,
+ 7089, 7593, 8405, 37, 6121, 6546,
+ 7089, 7593, 8405, 37, 6121, 6547, 721, 1045, 6376,
+ 7089, 7593, 8405, 37, 6121, 6617, 6490,
+ 7089, 7593, 8405, 37, 6121, 7653, 5878,
+ 7089, 7593, 8405, 37, 6121, 8473, 7708,
+ 7089, 7593, 8405, 37, 6121, 9072,
+ 7089, 7593, 8405, 37, 6121, 9553, 4530,
+ 7089, 7593, 8405, 37, 6121, 11448,
+ 7089, 7593, 8405, 38,
+ 7089, 7593, 8405, 39, 6121, 1045, 6376,
+ 7089, 7593, 8405, 39, 6121, 1045, 6490,
+ 7089, 7593, 8405, 39, 6121, 3966,
+ 7089, 7593, 8405, 39, 6121, 4530,
+ 7089, 7593, 8405, 39, 6121, 4877, 6490,
+ 7089, 7593, 8405, 39, 6121, 6546,
+ 7089, 7593, 8405, 39, 6121, 6617, 6490,
+ 7089, 7593, 8405, 39, 6121, 8473, 7708,
+ 7089, 7593, 8405, 39, 6121, 8758,
+ 7089, 7593, 8405, 39, 6121, 9072,
+ 7089, 7593, 8405, 39, 6121, 9553, 4530,
+ 7089, 7593, 8405, 39, 6121, 10001, 8758,
+ 7089, 7593, 8405, 39, 6121, 10804,
+ 7089, 7593, 8405, 39, 6121, 11215, 4530,
+ 7089, 7593, 8405, 39, 6121, 11449, 6490,
+ 7089, 7593, 8405, 40,
+ 7089, 7593, 8405, 41, 760,
+ 7089, 7593, 8405, 41, 6121, 1045, 6490,
+ 7089, 7593, 8405, 41, 6121, 4531, 6376,
+ 7089, 7593, 8405, 41, 6121, 4536,
+ 7089, 7593, 8405, 41, 6121, 4537, 721, 1045, 6490,
+ 7089, 7593, 8405, 41, 6121, 4537, 721, 4531, 6376,
+ 7089, 7593, 8405, 41, 6121, 4537, 721, 6378,
+ 7089, 7593, 8405, 41, 6121, 4537, 721, 6874,
+ 7089, 7593, 8405, 41, 6121, 4537, 721, 7708,
+ 7089, 7593, 8405, 41, 6121, 5551, 6376,
+ 7089, 7593, 8405, 41, 6121, 6378,
+ 7089, 7593, 8405, 41, 6121, 6516,
+ 7089, 7593, 8405, 41, 6121, 6546,
+ 7089, 7593, 8405, 41, 6121, 6874,
+ 7089, 7593, 8405, 41, 6121, 7708,
+ 7089, 7593, 8405, 41, 6121, 7709, 721, 6378,
+ 7089, 7593, 8405, 41, 6121, 7709, 6490,
+ 7089, 7593, 8405, 41, 6121, 8153, 6378,
+ 7089, 7593, 8405, 41, 6121, 8153, 6874,
+ 7089, 7593, 8405, 41, 6121, 8432,
+ 7089, 7593, 8405, 41, 6121, 8433, 721, 10804,
+ 7089, 7593, 8405, 41, 6121, 8534,
+ 7089, 7593, 8405, 41, 6121, 10267, 6516,
+ 7089, 7593, 8405, 41, 6121, 10804,
+ 7089, 7593, 8405, 41, 6121, 10805, 721, 6378,
+ 7089, 7593, 8405, 41, 6121, 10805, 721, 6546,
+ 7089, 7593, 8405, 41, 6121, 10805, 721, 6874,
+ 7089, 7593, 8405, 41, 6121, 10805, 721, 8432,
+ 7089, 7593, 8405, 41, 6121, 10805, 6490,
+ 7089, 7593, 8405, 41, 6121, 11215, 4530,
+ 7089, 7593, 8405, 41, 6121, 11448,
+ 7089, 7593, 8405, 41, 6121, 11449, 6490,
+ 7089, 7593, 8405, 42,
+ 7089, 7593, 8405, 43, 6121, 1045, 6490,
+ 7089, 7593, 8405, 43, 6121, 3966,
+ 7089, 7593, 8405, 43, 6121, 4530,
+ 7089, 7593, 8405, 43, 6121, 7443, 4530,
+ 7089, 7593, 8405, 43, 6121, 7708,
+ 7089, 7593, 8405, 43, 6121, 9553, 4530,
+ 7089, 7593, 8405, 43, 6121, 10001, 8758,
+ 7089, 7593, 8405, 44,
+ 7089, 7593, 8405, 45, 6121, 1045, 6376,
+ 7089, 7593, 8405, 45, 6121, 1045, 6490,
+ 7089, 7593, 8405, 45, 6121, 4530,
+ 7089, 7593, 8405, 45, 6121, 5551, 6376,
+ 7089, 7593, 8405, 45, 6121, 6378,
+ 7089, 7593, 8405, 45, 6121, 6874,
+ 7089, 7593, 8405, 45, 6121, 10804,
+ 7089, 7593, 8405, 45, 6121, 11448,
+ 7089, 7593, 8405, 46,
+ 7089, 7593, 8405, 47, 6121, 1045, 6376,
+ 7089, 7593, 8405, 47, 6121, 9553, 4530,
+ 7089, 7593, 8405, 47, 6121, 10804,
+ 7089, 7593, 8405, 48,
+ 7089, 7593, 8405, 49, 6121, 1045, 6376,
+ 7089, 7593, 8405, 49, 6121, 1045, 6490,
+ 7089, 7593, 8405, 49, 6121, 4530,
+ 7089, 7593, 8405, 49, 6121, 4531, 6376,
+ 7089, 7593, 8405, 49, 6121, 4896,
+ 7089, 7593, 8405, 49, 6121, 5551, 6376,
+ 7089, 7593, 8405, 49, 6121, 6378,
+ 7089, 7593, 8405, 49, 6121, 6874,
+ 7089, 7593, 8405, 49, 6121, 7708,
+ 7089, 7593, 8405, 49, 6121, 8432,
+ 7089, 7593, 8405, 49, 6121, 8758,
+ 7089, 7593, 8405, 49, 6121, 10804,
+ 7089, 7593, 8405, 49, 6121, 11448,
+ 7089, 7593, 8405, 50,
+ 7089, 7593, 8405, 51, 6121, 1045, 6376,
+ 7089, 7593, 8405, 51, 6121, 1045, 6490,
+ 7089, 7593, 8405, 51, 6121, 3966,
+ 7089, 7593, 8405, 51, 6121, 4530,
+ 7089, 7593, 8405, 51, 6121, 4877, 6490,
+ 7089, 7593, 8405, 51, 6121, 6378,
+ 7089, 7593, 8405, 51, 6121, 6546,
+ 7089, 7593, 8405, 51, 6121, 7653, 5878,
+ 7089, 7593, 8405, 51, 6121, 8473, 7708,
+ 7089, 7593, 8405, 51, 6121, 8758,
+ 7089, 7593, 8405, 51, 6121, 9553, 4530,
+ 7089, 7593, 8405, 51, 6121, 10802,
+ 7089, 7593, 8405, 51, 6121, 11215, 4530,
+ 7089, 7593, 8405, 51, 6121, 11448,
+ 7089, 7593, 8405, 58,
+ 7089, 7593, 8405, 66,
+ 7089, 7593, 8405, 67, 6121, 6378,
+ 7089, 7593, 8405, 67, 6121, 8432,
+ 7089, 7593, 8405, 82,
+ 7089, 7593, 8405, 92,
+ 7089, 7593, 8405, 94,
+ 7089, 7593, 8405, 95, 6121, 11649, 760,
+ 7089, 7593, 8405, 98,
+ 7089, 7593, 8405, 141, 9164,
+ 7089, 7593, 8405, 156,
+ 7089, 7593, 8405, 157, 6121, 6546,
+ 7089, 7593, 8405, 157, 9164,
+ 7089, 7593, 8405, 157, 9165, 6121, 3966,
+ 7089, 7593, 8405, 186,
+ 7089, 7593, 8405, 252,
+ 7089, 7593, 8405, 282,
+ 7089, 7593, 8405, 342,
+ 7089, 7593, 8405, 353, 9164,
+ 7089, 7593, 8405, 363, 9164,
+ 7089, 7593, 8405, 406,
+ 7089, 7593, 8405, 432,
+ 7089, 7593, 8405, 440,
+ 7089, 7593, 8405, 450,
+ 7089, 7593, 8405, 505, 9164,
+ 7089, 7593, 8405, 559, 9165, 6121, 3966,
+ 7089, 7593, 8405, 563, 6121, 13018,
+ 7089, 7593, 8405, 573, 9164,
+ 7089, 7593, 8405, 578,
+ 7089, 7593, 8405, 590,
+ 7089, 7593, 8405, 594,
+ 7089, 7593, 8405, 620,
+ 7089, 7593, 8405, 912,
+ 7089, 7593, 8405, 1058,
+ 7089, 7593, 8405, 1110,
+ 7089, 7593, 8405, 1124,
+ 7089, 7593, 8405, 1125, 6121, 3966,
+ 7089, 7593, 8405, 1125, 6121, 9553, 4530,
+ 7089, 7593, 8405, 1125, 6121, 11215, 4530,
+ 7089, 7593, 8405, 1130,
+ 7089, 7593, 8405, 1138,
+ 7089, 7593, 8405, 1139, 6121, 3966,
+ 7089, 7593, 8405, 1139, 6121, 5878,
+ 7089, 7593, 8405, 1139, 6121, 6546,
+ 7089, 7593, 8405, 1139, 6121, 11215, 4530,
+ 7089, 7593, 8405, 1139, 10488,
+ 7089, 7593, 8405, 1678,
+ 7089, 7593, 8405, 1822,
+ 7089, 7593, 8405, 1952,
+ 7089, 7593, 8405, 2108,
+ 7089, 7593, 8405, 2216,
+ 7089, 7593, 8405, 2452,
+ 7089, 7593, 8405, 2453, 9642,
+ 7089, 7593, 8405, 2725, 4389, 28,
+ 7089, 7593, 8405, 2760,
+ 7089, 7593, 8405, 4065, 9164,
+ 7089, 7593, 8405, 4187, 9164,
+ 7089, 7593, 8405, 4389, 14,
+ 7089, 7593, 8405, 4404,
+ 7089, 7593, 8405, 4405, 6121, 4530,
+ 7089, 7593, 8405, 4614,
+ 7089, 7593, 8405, 4615, 6121, 8758,
+ 7089, 7593, 8405, 4854,
+ 7089, 7593, 8405, 4895, 36,
+ 7089, 7593, 8405, 4895, 37, 6121, 1045, 6376,
+ 7089, 7593, 8405, 4895, 37, 6121, 4423, 8758,
+ 7089, 7593, 8405, 4895, 37, 6121, 10001, 8758,
+ 7089, 7593, 8405, 5385, 8,
+ 7089, 7593, 8405, 5385, 9, 6121, 11215, 4530,
+ 7089, 7593, 8405, 5385, 28,
+ 7089, 7593, 8405, 5385, 29, 6121, 11215, 4530,
+ 7089, 7593, 8405, 5527, 4536,
+ 7089, 7593, 8405, 5901, 9164,
+ 7089, 7593, 8405, 5965, 2540,
+ 7089, 7593, 8405, 5965, 2778,
+ 7089, 7593, 8405, 5965, 4200,
+ 7089, 7593, 8405, 6078,
+ 7089, 7593, 8405, 6220,
+ 7089, 7593, 8405, 6406,
+ 7089, 7593, 8405, 6407, 6121, 11215, 4530,
+ 7089, 7593, 8405, 6674,
+ 7089, 7593, 8405, 6824,
+ 7089, 7593, 8405, 7494,
+ 7089, 7593, 8405, 7495, 6121, 4530,
+ 7089, 7593, 8405, 7495, 6121, 11215, 4530,
+ 7089, 7593, 8405, 7519, 36,
+ 7089, 7593, 8405, 7619, 10489, 1124,
+ 7089, 7593, 8405, 7692,
+ 7089, 7593, 8405, 7693, 6121, 8758,
+ 7089, 7593, 8405, 7693, 6121, 8759, 9785, 10802,
+ 7089, 7593, 8405, 7981, 28,
+ 7089, 7593, 8405, 8005, 4389, 28,
+ 7089, 7593, 8405, 8017, 22,
+ 7089, 7593, 8405, 8065, 5385, 8,
+ 7089, 7593, 8405, 8065, 7316,
+ 7089, 7593, 8405, 8065, 10489, 5385, 8,
+ 7089, 7593, 8405, 8387, 6121, 8758,
+ 7089, 7593, 8405, 8679, 12,
+ 7089, 7593, 8405, 8869, 0,
+ 7089, 7593, 8405, 8869, 8,
+ 7089, 7593, 8405, 8869, 12,
+ 7089, 7593, 8405, 8869, 14,
+ 7089, 7593, 8405, 8869, 15, 6121, 10190,
+ 7089, 7593, 8405, 8869, 15, 6121, 10191, 721, 5878,
+ 7089, 7593, 8405, 8869, 16,
+ 7089, 7593, 8405, 8869, 20,
+ 7089, 7593, 8405, 8869, 22,
+ 7089, 7593, 8405, 8869, 24,
+ 7089, 7593, 8405, 8869, 25, 6121, 4895, 1760,
+ 7089, 7593, 8405, 8869, 34,
+ 7089, 7593, 8405, 8869, 35, 6121, 4530,
+ 7089, 7593, 8405, 8869, 35, 6121, 4895, 1760,
+ 7089, 7593, 8405, 8869, 35, 6121, 5878,
+ 7089, 7593, 8405, 8869, 38,
+ 7089, 7593, 8405, 8869, 42,
+ 7089, 7593, 8405, 8869, 44,
+ 7089, 7593, 8405, 8869, 48,
+ 7089, 7593, 8405, 8869, 66,
+ 7089, 7593, 8405, 8869, 426,
+ 7089, 7593, 8405, 8869, 5385, 8,
+ 7089, 7593, 8405, 8869, 6406,
+ 7089, 7593, 8405, 8869, 6674,
+ 7089, 7593, 8405, 8869, 9365, 12,
+ 7089, 7593, 8405, 9185, 16,
+ 7089, 7593, 8405, 9185, 18,
+ 7089, 7593, 8405, 9185, 19, 6121, 8758,
+ 7089, 7593, 8405, 9185, 19, 6121, 8759, 721, 4530,
+ 7089, 7593, 8405, 9313, 5836,
+ 7089, 7593, 8405, 9365, 6,
+ 7089, 7593, 8405, 9365, 10,
+ 7089, 7593, 8405, 9365, 12,
+ 7089, 7593, 8405, 9365, 34,
+ 7089, 7593, 8405, 9365, 36,
+ 7089, 7593, 8405, 9365, 38,
+ 7089, 7593, 8405, 9808,
+ 7089, 7593, 8405, 9809, 6121, 8758,
+ 7089, 7593, 8405, 10489, 4,
+ 7089, 7593, 8405, 10489, 5, 6121, 1044,
+ 7089, 7593, 8405, 10489, 8,
+ 7089, 7593, 8405, 10489, 35, 6121, 10190,
+ 7089, 7593, 8405, 10489, 5385, 8,
+ 7089, 7593, 8405, 10489, 5385, 9, 6121, 4530,
+ 7089, 7593, 8405, 10489, 5385, 9, 6121, 11215, 4530,
+ 7089, 7593, 8405, 10494,
+ 7089, 7593, 8405, 10523, 28,
+ 7089, 7593, 8405, 10523, 29, 6121, 8758,
+ 7089, 7593, 8405, 10523, 40,
+ 7089, 7593, 8405, 10523, 5385, 28,
+ 7089, 7593, 8405, 10523, 8869, 24,
+ 7089, 7593, 8405, 10523, 11941, 40,
+ 7089, 7593, 8405, 10609, 2216,
+ 7089, 7593, 8405, 10640,
+ 7089, 7593, 8405, 10786,
+ 7089, 7593, 8405, 10787, 6121, 6616,
+ 7089, 7593, 8405, 11879, 50,
+ 7089, 7593, 8405, 12507, 42,
+ 7089, 7593, 8405, 12507, 344,
+ 7089, 7593, 8405, 12935, 710,
+ 7089, 7593, 8405, 12935, 3244,
+ 7089, 7593, 9063, 8405, 17, 6121, 8758,
+ 7089, 7593, 9063, 8405, 41, 6121, 8758,
+ 7089, 7593, 10301, 200,
+ 7089, 7593, 10301, 202,
+ 7089, 7593, 10301, 204,
+ 7089, 7593, 10301, 268,
+ 7089, 7593, 10301, 426,
+ 7089, 7593, 10301, 544,
+ 7089, 7593, 10301, 1156,
+ 7089, 7593, 10301, 1158,
+ 7089, 7593, 10301, 4895, 37, 38,
+ 7089, 8405, 662,
+ 7089, 8405, 710,
+ 7089, 8405, 2779, 6121, 8758,
+ 7089, 8405, 6138,
+ 7089, 8405, 7593, 9063, 0,
+ 7089, 8405, 7593, 9063, 2,
+ 7089, 8405, 7593, 9063, 4,
+ 7089, 8405, 7593, 9063, 6,
+ 7089, 8405, 7593, 9063, 8,
+ 7089, 8405, 7593, 9063, 10,
+ 7089, 8405, 7593, 9063, 12,
+ 7089, 8405, 7593, 9063, 13, 6121, 4530,
+ 7089, 8405, 7593, 9063, 14,
+ 7089, 8405, 7593, 9063, 16,
+ 7089, 8405, 7593, 9063, 18,
+ 7089, 8405, 7593, 9063, 20,
+ 7089, 8405, 7593, 9063, 22,
+ 7089, 8405, 7593, 9063, 23, 6121, 8758,
+ 7089, 8405, 7593, 9063, 24,
+ 7089, 8405, 7593, 9063, 26,
+ 7089, 8405, 7593, 9063, 28,
+ 7089, 8405, 7593, 9063, 30,
+ 7089, 8405, 7593, 9063, 34,
+ 7089, 8405, 7593, 9063, 36,
+ 7089, 8405, 7593, 9063, 38,
+ 7089, 8405, 7593, 9063, 40,
+ 7089, 8405, 7593, 9063, 42,
+ 7089, 8405, 7593, 9063, 44,
+ 7089, 8405, 7593, 9063, 48,
+ 7089, 8405, 7593, 9063, 50,
+ 7089, 8405, 7593, 9063, 66,
+ 7089, 8405, 7593, 9063, 426,
+ 7089, 8405, 7593, 9063, 450,
+ 7089, 8405, 7593, 9063, 1130,
+ 7089, 8405, 7593, 9063, 1138,
+ 7089, 8405, 7593, 9063, 2452,
+ 7089, 8405, 7593, 9063, 5385, 28,
+ 7089, 8405, 7593, 9063, 7981, 2,
+ 7089, 8405, 7593, 9063, 8869, 8,
+ 7089, 8405, 7593, 9063, 8869, 34,
+ 7089, 8405, 7593, 9063, 10267, 34,
+ 7089, 8405, 7593, 9063, 10489, 26,
+ 7089, 8405, 7593, 9063, 10489, 34,
+ 7089, 8405, 8107, 6598,
+ 7089, 8405, 8921, 11089, 9728,
+ 7089, 8405, 9313, 5836,
+ 7089, 8405, 9313, 5837, 6121, 8758,
+ 7089, 8405, 9423, 6598,
+ 7089, 8405, 9865, 6598,
+ 7089, 8405, 9915, 11720,
+ 7089, 8405, 9917, 6598,
+ 7089, 8405, 9917, 11720,
+ 7089, 8405, 10267, 9313, 5836,
+ 7089, 8405, 10267, 9313, 5837, 6121, 8758,
+ 7089, 8405, 10489, 1125, 4896,
+ 7089, 8405, 10489, 9313, 5837, 6121, 8758,
+ 7089, 8405, 11215, 6598,
+ 7089, 8405, 11251, 4,
+ 7089, 8405, 11723, 8921, 11008,
+ 7089, 9063, 8405, 0,
+ 7089, 9063, 8405, 1, 6121, 1045, 6376,
+ 7089, 9063, 8405, 1, 6121, 1045, 6377, 721, 8432,
+ 7089, 9063, 8405, 1, 6121, 1045, 6490,
+ 7089, 9063, 8405, 1, 6121, 4531, 6376,
+ 7089, 9063, 8405, 1, 6121, 5551, 6376,
+ 7089, 9063, 8405, 1, 6121, 5551, 6377, 721, 6378,
+ 7089, 9063, 8405, 1, 6121, 5551, 6490,
+ 7089, 9063, 8405, 1, 6121, 6378,
+ 7089, 9063, 8405, 1, 6121, 6516,
+ 7089, 9063, 8405, 1, 6121, 6517, 721, 1045, 6490,
+ 7089, 9063, 8405, 1, 6121, 6517, 721, 4531, 6376,
+ 7089, 9063, 8405, 1, 6121, 6517, 721, 6378,
+ 7089, 9063, 8405, 1, 6121, 6517, 721, 6874,
+ 7089, 9063, 8405, 1, 6121, 6517, 721, 7708,
+ 7089, 9063, 8405, 1, 6121, 6546,
+ 7089, 9063, 8405, 1, 6121, 6874,
+ 7089, 9063, 8405, 1, 6121, 7708,
+ 7089, 9063, 8405, 1, 6121, 8153, 6874,
+ 7089, 9063, 8405, 1, 6121, 8432,
+ 7089, 9063, 8405, 1, 6121, 8534,
+ 7089, 9063, 8405, 1, 6121, 8758,
+ 7089, 9063, 8405, 1, 6121, 10267, 6516,
+ 7089, 9063, 8405, 1, 6121, 10804,
+ 7089, 9063, 8405, 1, 6121, 10805, 721, 8432,
+ 7089, 9063, 8405, 1, 6121, 11448,
+ 7089, 9063, 8405, 1, 6121, 11449, 721, 1045, 6490,
+ 7089, 9063, 8405, 1, 6121, 11449, 721, 4531, 6376,
+ 7089, 9063, 8405, 1, 6121, 11449, 721, 6378,
+ 7089, 9063, 8405, 1, 6121, 11449, 721, 6874,
+ 7089, 9063, 8405, 1, 6121, 11449, 721, 7708,
+ 7089, 9063, 8405, 2,
+ 7089, 9063, 8405, 3, 6121, 1045, 6376,
+ 7089, 9063, 8405, 3, 6121, 1045, 6490,
+ 7089, 9063, 8405, 3, 6121, 4530,
+ 7089, 9063, 8405, 3, 6121, 4877, 6490,
+ 7089, 9063, 8405, 3, 6121, 8758,
+ 7089, 9063, 8405, 3, 6121, 8846,
+ 7089, 9063, 8405, 4,
+ 7089, 9063, 8405, 5, 6121, 1045, 6376,
+ 7089, 9063, 8405, 5, 6121, 4530,
+ 7089, 9063, 8405, 5, 6121, 6378,
+ 7089, 9063, 8405, 5, 6121, 6546,
+ 7089, 9063, 8405, 5, 6121, 8758,
+ 7089, 9063, 8405, 5, 6121, 9072,
+ 7089, 9063, 8405, 5, 6121, 9073, 721, 6378,
+ 7089, 9063, 8405, 5, 6121, 11448,
+ 7089, 9063, 8405, 6,
+ 7089, 9063, 8405, 7, 6121, 1045, 6376,
+ 7089, 9063, 8405, 7, 6121, 1045, 6490,
+ 7089, 9063, 8405, 7, 6121, 4530,
+ 7089, 9063, 8405, 7, 6121, 4877, 6490,
+ 7089, 9063, 8405, 7, 6121, 6546,
+ 7089, 9063, 8405, 7, 6121, 7593, 8405, 50,
+ 7089, 9063, 8405, 7, 6121, 7593, 8405, 51, 6121, 6546,
+ 7089, 9063, 8405, 7, 6121, 8758,
+ 7089, 9063, 8405, 7, 6121, 8846,
+ 7089, 9063, 8405, 7, 6121, 9072,
+ 7089, 9063, 8405, 7, 6121, 11449, 6490,
+ 7089, 9063, 8405, 8,
+ 7089, 9063, 8405, 9, 6121, 1045, 6376,
+ 7089, 9063, 8405, 9, 6121, 1045, 6490,
+ 7089, 9063, 8405, 9, 6121, 4531, 6376,
+ 7089, 9063, 8405, 9, 6121, 6378,
+ 7089, 9063, 8405, 9, 6121, 6516,
+ 7089, 9063, 8405, 9, 6121, 6546,
+ 7089, 9063, 8405, 9, 6121, 6874,
+ 7089, 9063, 8405, 9, 6121, 7708,
+ 7089, 9063, 8405, 9, 6121, 7709, 6490,
+ 7089, 9063, 8405, 9, 6121, 8153, 6874,
+ 7089, 9063, 8405, 9, 6121, 8432,
+ 7089, 9063, 8405, 9, 6121, 8433, 721, 6378,
+ 7089, 9063, 8405, 9, 6121, 8433, 721, 6874,
+ 7089, 9063, 8405, 9, 6121, 8534,
+ 7089, 9063, 8405, 9, 6121, 8758,
+ 7089, 9063, 8405, 9, 6121, 9072,
+ 7089, 9063, 8405, 9, 6121, 9073, 721, 6516,
+ 7089, 9063, 8405, 9, 6121, 10267, 6516,
+ 7089, 9063, 8405, 9, 6121, 10804,
+ 7089, 9063, 8405, 9, 6121, 11448,
+ 7089, 9063, 8405, 9, 6121, 11449, 721, 1045, 6490,
+ 7089, 9063, 8405, 9, 6121, 11449, 721, 4531, 6376,
+ 7089, 9063, 8405, 9, 6121, 11449, 721, 6378,
+ 7089, 9063, 8405, 9, 6121, 11449, 721, 6874,
+ 7089, 9063, 8405, 9, 6121, 11449, 721, 7708,
+ 7089, 9063, 8405, 9, 6121, 11449, 6490,
+ 7089, 9063, 8405, 10,
+ 7089, 9063, 8405, 11, 6121, 1045, 6376,
+ 7089, 9063, 8405, 11, 6121, 4530,
+ 7089, 9063, 8405, 12,
+ 7089, 9063, 8405, 13, 6121, 1045, 6376,
+ 7089, 9063, 8405, 13, 6121, 4530,
+ 7089, 9063, 8405, 13, 6121, 6378,
+ 7089, 9063, 8405, 13, 6121, 6516,
+ 7089, 9063, 8405, 13, 6121, 6546,
+ 7089, 9063, 8405, 13, 6121, 8432,
+ 7089, 9063, 8405, 13, 6121, 8758,
+ 7089, 9063, 8405, 13, 6121, 9072,
+ 7089, 9063, 8405, 13, 6121, 11448,
+ 7089, 9063, 8405, 14,
+ 7089, 9063, 8405, 15, 6121, 1045, 6376,
+ 7089, 9063, 8405, 15, 6121, 1045, 6490,
+ 7089, 9063, 8405, 15, 6121, 6517, 6490,
+ 7089, 9063, 8405, 15, 6121, 6546,
+ 7089, 9063, 8405, 15, 6121, 8758,
+ 7089, 9063, 8405, 15, 6121, 9072,
+ 7089, 9063, 8405, 15, 6121, 10802,
+ 7089, 9063, 8405, 15, 6121, 10804,
+ 7089, 9063, 8405, 15, 6121, 11448,
+ 7089, 9063, 8405, 16,
+ 7089, 9063, 8405, 17, 6121, 1045, 6376,
+ 7089, 9063, 8405, 17, 6121, 1045, 6490,
+ 7089, 9063, 8405, 17, 6121, 4531, 6376,
+ 7089, 9063, 8405, 17, 6121, 6378,
+ 7089, 9063, 8405, 17, 6121, 6516,
+ 7089, 9063, 8405, 17, 6121, 6546,
+ 7089, 9063, 8405, 17, 6121, 6874,
+ 7089, 9063, 8405, 17, 6121, 7708,
+ 7089, 9063, 8405, 17, 6121, 7709, 6490,
+ 7089, 9063, 8405, 17, 6121, 8153, 6874,
+ 7089, 9063, 8405, 17, 6121, 8432,
+ 7089, 9063, 8405, 17, 6121, 8534,
+ 7089, 9063, 8405, 17, 6121, 8758,
+ 7089, 9063, 8405, 17, 6121, 10267, 6516,
+ 7089, 9063, 8405, 17, 6121, 10804,
+ 7089, 9063, 8405, 17, 6121, 10805, 721, 6378,
+ 7089, 9063, 8405, 17, 6121, 11448,
+ 7089, 9063, 8405, 18,
+ 7089, 9063, 8405, 19, 6121, 8758,
+ 7089, 9063, 8405, 19, 6121, 11448,
+ 7089, 9063, 8405, 20,
+ 7089, 9063, 8405, 21, 6121, 1045, 6490,
+ 7089, 9063, 8405, 21, 6121, 4530,
+ 7089, 9063, 8405, 21, 6121, 4877, 6490,
+ 7089, 9063, 8405, 21, 6121, 6378,
+ 7089, 9063, 8405, 21, 6121, 6546,
+ 7089, 9063, 8405, 21, 6121, 8758,
+ 7089, 9063, 8405, 21, 6121, 8759, 721, 10001, 8758,
+ 7089, 9063, 8405, 21, 6121, 9072,
+ 7089, 9063, 8405, 21, 6121, 10001, 8758,
+ 7089, 9063, 8405, 21, 6121, 10802,
+ 7089, 9063, 8405, 22,
+ 7089, 9063, 8405, 23, 6121, 760,
+ 7089, 9063, 8405, 23, 6121, 1045, 6490,
+ 7089, 9063, 8405, 23, 6121, 1045, 6491, 721, 8432,
+ 7089, 9063, 8405, 23, 6121, 4423, 8758,
+ 7089, 9063, 8405, 23, 6121, 4877, 6490,
+ 7089, 9063, 8405, 23, 6121, 6378,
+ 7089, 9063, 8405, 23, 6121, 6546,
+ 7089, 9063, 8405, 23, 6121, 7593, 8405, 18,
+ 7089, 9063, 8405, 23, 6121, 8153, 760,
+ 7089, 9063, 8405, 23, 6121, 8473, 1044,
+ 7089, 9063, 8405, 23, 6121, 8473, 7708,
+ 7089, 9063, 8405, 23, 6121, 8758,
+ 7089, 9063, 8405, 23, 6121, 9072,
+ 7089, 9063, 8405, 23, 6121, 11449, 6490,
+ 7089, 9063, 8405, 24,
+ 7089, 9063, 8405, 25, 6121, 1045, 6376,
+ 7089, 9063, 8405, 25, 6121, 1045, 6490,
+ 7089, 9063, 8405, 25, 6121, 4530,
+ 7089, 9063, 8405, 25, 6121, 6378,
+ 7089, 9063, 8405, 26,
+ 7089, 9063, 8405, 27, 6121, 1045, 6376,
+ 7089, 9063, 8405, 27, 6121, 1045, 6490,
+ 7089, 9063, 8405, 27, 6121, 4849, 4530,
+ 7089, 9063, 8405, 27, 6121, 4877, 6490,
+ 7089, 9063, 8405, 27, 6121, 4895, 7443, 1760,
+ 7089, 9063, 8405, 27, 6121, 6378,
+ 7089, 9063, 8405, 27, 6121, 6546,
+ 7089, 9063, 8405, 27, 6121, 6874,
+ 7089, 9063, 8405, 27, 6121, 7593, 8405, 18,
+ 7089, 9063, 8405, 27, 6121, 7708,
+ 7089, 9063, 8405, 27, 6121, 9072,
+ 7089, 9063, 8405, 27, 6121, 11449, 6490,
+ 7089, 9063, 8405, 28,
+ 7089, 9063, 8405, 29, 6121, 1045, 6376,
+ 7089, 9063, 8405, 29, 6121, 1045, 6377, 721, 8432,
+ 7089, 9063, 8405, 29, 6121, 1045, 6490,
+ 7089, 9063, 8405, 29, 6121, 4531, 6376,
+ 7089, 9063, 8405, 29, 6121, 4536,
+ 7089, 9063, 8405, 29, 6121, 4537, 721, 1045, 6490,
+ 7089, 9063, 8405, 29, 6121, 4537, 721, 4531, 6376,
+ 7089, 9063, 8405, 29, 6121, 4537, 721, 6378,
+ 7089, 9063, 8405, 29, 6121, 4537, 721, 6874,
+ 7089, 9063, 8405, 29, 6121, 4537, 721, 7708,
+ 7089, 9063, 8405, 29, 6121, 4895, 8759, 9548,
+ 7089, 9063, 8405, 29, 6121, 4896,
+ 7089, 9063, 8405, 29, 6121, 6378,
+ 7089, 9063, 8405, 29, 6121, 6516,
+ 7089, 9063, 8405, 29, 6121, 6546,
+ 7089, 9063, 8405, 29, 6121, 6874,
+ 7089, 9063, 8405, 29, 6121, 7708,
+ 7089, 9063, 8405, 29, 6121, 7709, 721, 6378,
+ 7089, 9063, 8405, 29, 6121, 7709, 721, 8432,
+ 7089, 9063, 8405, 29, 6121, 7709, 721, 10804,
+ 7089, 9063, 8405, 29, 6121, 8153, 6378,
+ 7089, 9063, 8405, 29, 6121, 8153, 6874,
+ 7089, 9063, 8405, 29, 6121, 8432,
+ 7089, 9063, 8405, 29, 6121, 8433, 721, 6378,
+ 7089, 9063, 8405, 29, 6121, 8433, 721, 6874,
+ 7089, 9063, 8405, 29, 6121, 8473, 7708,
+ 7089, 9063, 8405, 29, 6121, 8534,
+ 7089, 9063, 8405, 29, 6121, 8535, 721, 8432,
+ 7089, 9063, 8405, 29, 6121, 8758,
+ 7089, 9063, 8405, 29, 6121, 8759, 721, 6378,
+ 7089, 9063, 8405, 29, 6121, 10267, 6516,
+ 7089, 9063, 8405, 29, 6121, 10804,
+ 7089, 9063, 8405, 29, 6121, 10805, 721, 8432,
+ 7089, 9063, 8405, 29, 6121, 11448,
+ 7089, 9063, 8405, 29, 6121, 11449, 721, 1045, 6490,
+ 7089, 9063, 8405, 29, 6121, 11449, 721, 4531, 6376,
+ 7089, 9063, 8405, 29, 6121, 11449, 721, 6378,
+ 7089, 9063, 8405, 29, 6121, 11449, 721, 6874,
+ 7089, 9063, 8405, 29, 6121, 11449, 721, 7708,
+ 7089, 9063, 8405, 30,
+ 7089, 9063, 8405, 31, 6121, 1045, 6376,
+ 7089, 9063, 8405, 31, 6121, 4530,
+ 7089, 9063, 8405, 31, 6121, 6378,
+ 7089, 9063, 8405, 31, 6121, 8758,
+ 7089, 9063, 8405, 31, 6121, 8759, 9785, 10802,
+ 7089, 9063, 8405, 31, 6121, 10196,
+ 7089, 9063, 8405, 31, 6121, 10533, 5878,
+ 7089, 9063, 8405, 32,
+ 7089, 9063, 8405, 33, 6121, 8759, 9785, 10802,
+ 7089, 9063, 8405, 33, 6121, 10001, 8758,
+ 7089, 9063, 8405, 34,
+ 7089, 9063, 8405, 35, 6121, 1045, 6376,
+ 7089, 9063, 8405, 35, 6121, 1045, 6490,
+ 7089, 9063, 8405, 35, 6121, 1045, 6491, 721, 8432,
+ 7089, 9063, 8405, 35, 6121, 4877, 6490,
+ 7089, 9063, 8405, 35, 6121, 5878,
+ 7089, 9063, 8405, 35, 6121, 6378,
+ 7089, 9063, 8405, 35, 6121, 6546,
+ 7089, 9063, 8405, 35, 6121, 8153, 6874,
+ 7089, 9063, 8405, 35, 6121, 8758,
+ 7089, 9063, 8405, 35, 6121, 9072,
+ 7089, 9063, 8405, 35, 6121, 10267, 6516,
+ 7089, 9063, 8405, 35, 9642,
+ 7089, 9063, 8405, 36,
+ 7089, 9063, 8405, 37, 6121, 1045, 6376,
+ 7089, 9063, 8405, 37, 6121, 1045, 6490,
+ 7089, 9063, 8405, 37, 6121, 1045, 6491, 721, 1045, 6376,
+ 7089, 9063, 8405, 37, 6121, 6378,
+ 7089, 9063, 8405, 37, 6121, 6379, 721, 1045, 6376,
+ 7089, 9063, 8405, 37, 6121, 6546,
+ 7089, 9063, 8405, 37, 6121, 6547, 721, 1045, 6376,
+ 7089, 9063, 8405, 37, 6121, 6617, 6490,
+ 7089, 9063, 8405, 37, 6121, 9072,
+ 7089, 9063, 8405, 37, 6121, 11448,
+ 7089, 9063, 8405, 38,
+ 7089, 9063, 8405, 39, 6121, 1045, 6376,
+ 7089, 9063, 8405, 39, 6121, 1045, 6490,
+ 7089, 9063, 8405, 39, 6121, 4530,
+ 7089, 9063, 8405, 39, 6121, 4877, 6490,
+ 7089, 9063, 8405, 39, 6121, 6546,
+ 7089, 9063, 8405, 39, 6121, 6617, 6490,
+ 7089, 9063, 8405, 39, 6121, 8758,
+ 7089, 9063, 8405, 39, 6121, 9072,
+ 7089, 9063, 8405, 39, 6121, 10001, 8758,
+ 7089, 9063, 8405, 39, 6121, 11215, 4530,
+ 7089, 9063, 8405, 39, 6121, 11449, 6490,
+ 7089, 9063, 8405, 40,
+ 7089, 9063, 8405, 41, 760,
+ 7089, 9063, 8405, 41, 6121, 1045, 6490,
+ 7089, 9063, 8405, 41, 6121, 4531, 6376,
+ 7089, 9063, 8405, 41, 6121, 4536,
+ 7089, 9063, 8405, 41, 6121, 4537, 721, 1045, 6490,
+ 7089, 9063, 8405, 41, 6121, 4537, 721, 4531, 6376,
+ 7089, 9063, 8405, 41, 6121, 4537, 721, 6378,
+ 7089, 9063, 8405, 41, 6121, 4537, 721, 6874,
+ 7089, 9063, 8405, 41, 6121, 4537, 721, 7708,
+ 7089, 9063, 8405, 41, 6121, 5551, 6376,
+ 7089, 9063, 8405, 41, 6121, 6378,
+ 7089, 9063, 8405, 41, 6121, 6516,
+ 7089, 9063, 8405, 41, 6121, 6546,
+ 7089, 9063, 8405, 41, 6121, 6874,
+ 7089, 9063, 8405, 41, 6121, 7708,
+ 7089, 9063, 8405, 41, 6121, 7709, 721, 6378,
+ 7089, 9063, 8405, 41, 6121, 7709, 6490,
+ 7089, 9063, 8405, 41, 6121, 8153, 6378,
+ 7089, 9063, 8405, 41, 6121, 8153, 6874,
+ 7089, 9063, 8405, 41, 6121, 8432,
+ 7089, 9063, 8405, 41, 6121, 8433, 721, 10804,
+ 7089, 9063, 8405, 41, 6121, 8534,
+ 7089, 9063, 8405, 41, 6121, 10267, 6516,
+ 7089, 9063, 8405, 41, 6121, 10804,
+ 7089, 9063, 8405, 41, 6121, 10805, 721, 6378,
+ 7089, 9063, 8405, 41, 6121, 10805, 721, 6546,
+ 7089, 9063, 8405, 41, 6121, 10805, 721, 6874,
+ 7089, 9063, 8405, 41, 6121, 10805, 721, 8432,
+ 7089, 9063, 8405, 41, 6121, 10805, 6490,
+ 7089, 9063, 8405, 41, 6121, 11448,
+ 7089, 9063, 8405, 41, 6121, 11449, 6490,
+ 7089, 9063, 8405, 42,
+ 7089, 9063, 8405, 43, 6121, 1045, 6490,
+ 7089, 9063, 8405, 43, 6121, 4530,
+ 7089, 9063, 8405, 43, 6121, 7708,
+ 7089, 9063, 8405, 43, 6121, 10001, 8758,
+ 7089, 9063, 8405, 44,
+ 7089, 9063, 8405, 45, 6121, 1045, 6376,
+ 7089, 9063, 8405, 45, 6121, 1045, 6490,
+ 7089, 9063, 8405, 45, 6121, 4530,
+ 7089, 9063, 8405, 45, 6121, 6378,
+ 7089, 9063, 8405, 45, 6121, 6874,
+ 7089, 9063, 8405, 45, 6121, 10804,
+ 7089, 9063, 8405, 45, 6121, 11448,
+ 7089, 9063, 8405, 46,
+ 7089, 9063, 8405, 47, 6121, 1045, 6376,
+ 7089, 9063, 8405, 47, 6121, 10804,
+ 7089, 9063, 8405, 48,
+ 7089, 9063, 8405, 49, 6121, 1045, 6376,
+ 7089, 9063, 8405, 49, 6121, 1045, 6490,
+ 7089, 9063, 8405, 49, 6121, 4530,
+ 7089, 9063, 8405, 49, 6121, 4531, 6376,
+ 7089, 9063, 8405, 49, 6121, 4896,
+ 7089, 9063, 8405, 49, 6121, 6378,
+ 7089, 9063, 8405, 49, 6121, 6874,
+ 7089, 9063, 8405, 49, 6121, 7708,
+ 7089, 9063, 8405, 49, 6121, 8432,
+ 7089, 9063, 8405, 49, 6121, 8758,
+ 7089, 9063, 8405, 49, 6121, 10804,
+ 7089, 9063, 8405, 49, 6121, 11448,
+ 7089, 9063, 8405, 50,
+ 7089, 9063, 8405, 51, 6121, 1045, 6376,
+ 7089, 9063, 8405, 51, 6121, 1045, 6490,
+ 7089, 9063, 8405, 51, 6121, 4530,
+ 7089, 9063, 8405, 51, 6121, 4877, 6490,
+ 7089, 9063, 8405, 51, 6121, 6378,
+ 7089, 9063, 8405, 51, 6121, 6546,
+ 7089, 9063, 8405, 51, 6121, 8758,
+ 7089, 9063, 8405, 51, 6121, 10802,
+ 7089, 9063, 8405, 51, 6121, 11448,
+ 7089, 9063, 8405, 58,
+ 7089, 9063, 8405, 66,
+ 7089, 9063, 8405, 67, 6121, 6378,
+ 7089, 9063, 8405, 67, 6121, 8432,
+ 7089, 9063, 8405, 82,
+ 7089, 9063, 8405, 92,
+ 7089, 9063, 8405, 94,
+ 7089, 9063, 8405, 95, 6121, 11649, 760,
+ 7089, 9063, 8405, 98,
+ 7089, 9063, 8405, 156,
+ 7089, 9063, 8405, 157, 6121, 6546,
+ 7089, 9063, 8405, 186,
+ 7089, 9063, 8405, 282,
+ 7089, 9063, 8405, 342,
+ 7089, 9063, 8405, 406,
+ 7089, 9063, 8405, 432,
+ 7089, 9063, 8405, 440,
+ 7089, 9063, 8405, 450,
+ 7089, 9063, 8405, 578,
+ 7089, 9063, 8405, 620,
+ 7089, 9063, 8405, 912,
+ 7089, 9063, 8405, 1110,
+ 7089, 9063, 8405, 1124,
+ 7089, 9063, 8405, 1130,
+ 7089, 9063, 8405, 1138,
+ 7089, 9063, 8405, 1139, 6121, 6546,
+ 7089, 9063, 8405, 1139, 10488,
+ 7089, 9063, 8405, 2453, 9642,
+ 7089, 9063, 8405, 4389, 14,
+ 7089, 9063, 8405, 4404,
+ 7089, 9063, 8405, 4614,
+ 7089, 9063, 8405, 5385, 8,
+ 7089, 9063, 8405, 5385, 28,
+ 7089, 9063, 8405, 5965, 2540,
+ 7089, 9063, 8405, 5965, 2778,
+ 7089, 9063, 8405, 5965, 4200,
+ 7089, 9063, 8405, 6078,
+ 7089, 9063, 8405, 6138,
+ 7089, 9063, 8405, 6220,
+ 7089, 9063, 8405, 6406,
+ 7089, 9063, 8405, 6824,
+ 7089, 9063, 8405, 6960,
+ 7089, 9063, 8405, 7494,
+ 7089, 9063, 8405, 7519, 36,
+ 7089, 9063, 8405, 7593, 33, 6121, 4531, 5878,
+ 7089, 9063, 8405, 7692,
+ 7089, 9063, 8405, 7693, 6121, 8758,
+ 7089, 9063, 8405, 7693, 6121, 8759, 9785, 10802,
+ 7089, 9063, 8405, 8017, 22,
+ 7089, 9063, 8405, 8869, 0,
+ 7089, 9063, 8405, 8869, 22,
+ 7089, 9063, 8405, 8869, 24,
+ 7089, 9063, 8405, 8869, 42,
+ 7089, 9063, 8405, 8869, 9365, 12,
+ 7089, 9063, 8405, 8983, 6,
+ 7089, 9063, 8405, 9313, 5836,
+ 7089, 9063, 8405, 9365, 6,
+ 7089, 9063, 8405, 9365, 10,
+ 7089, 9063, 8405, 9365, 12,
+ 7089, 9063, 8405, 9365, 34,
+ 7089, 9063, 8405, 9365, 36,
+ 7089, 9063, 8405, 9365, 38,
+ 7089, 9063, 8405, 9808,
+ 7089, 9063, 8405, 10489, 5, 6121, 1044,
+ 7089, 9063, 8405, 10489, 8,
+ 7089, 9063, 8405, 10494,
+ 7089, 9063, 8405, 10640,
+ 7089, 9063, 8405, 10786,
+ 7089, 9063, 8405, 10787, 6121, 6616,
+ 7089, 9063, 8405, 11879, 50,
+ 7089, 9063, 8405, 12507, 42,
+ 7089, 9063, 8405, 12507, 344,
+ 7089, 9063, 8405, 12935, 710,
+ 7089, 9063, 8405, 12935, 3244,
+ 7089, 9063, 10301, 268,
+ 7089, 9063, 10301, 426,
+ 7089, 11261, 7593, 8405, 0,
+ 7089, 11261, 7593, 8405, 8,
+ 7089, 11261, 7593, 8405, 16,
+ 7089, 11261, 7593, 8405, 18,
+ 7089, 11261, 7593, 8405, 28,
+ 7089, 11261, 7593, 8405, 34,
+ 7089, 11261, 7593, 8405, 40,
+ 7089, 11261, 7593, 8405, 42,
+ 7089, 11261, 7593, 8405, 46,
+ 7089, 11261, 7593, 8405, 7494,
+ 7089, 11619, 8405, 17, 7112,
+ 7089, 11619, 8405, 9007, 24,
+ 7089, 11619, 8405, 10267, 24,
+ 7089, 11619, 8405, 10489, 10,
+ 7089, 11619, 8405, 10489, 30,
+ 7098,
+ 7101, 4849, 10637, 7533, 9051, 10380,
+ 7101, 7443, 10637, 7533, 9051, 10380,
+ 7101, 7512,
+ 7101, 10677, 760,
+ 7103, 5759, 1802,
+ 7103, 5759, 5620,
+ 7103, 5759, 11076,
+ 7103, 5759, 11130,
+ 7103, 6689, 2170,
+ 7103, 6689, 2540,
+ 7103, 6689, 2778,
+ 7103, 6689, 4200,
+ 7103, 6689, 4214,
+ 7103, 6689, 5190,
+ 7103, 6689, 6260,
+ 7103, 6689, 6722,
+ 7103, 6689, 7508,
+ 7103, 6689, 7694,
+ 7103, 7593, 8405, 306,
+ 7103, 7593, 8405, 332,
+ 7103, 7593, 8405, 364,
+ 7103, 7593, 8405, 392,
+ 7103, 7593, 8405, 462,
+ 7103, 7593, 8405, 510,
+ 7103, 7593, 8405, 556,
+ 7103, 7593, 8405, 2030,
+ 7103, 7593, 8405, 9870,
+ 7103, 7803, 5759, 0,
+ 7103, 7803, 5759, 8,
+ 7103, 7803, 5759, 16,
+ 7103, 7803, 5759, 28,
+ 7103, 7803, 5759, 40,
+ 7103, 7803, 5759, 72,
+ 7103, 7803, 5759, 92,
+ 7103, 7803, 5759, 162,
+ 7103, 7803, 5759, 440,
+ 7103, 8405, 100,
+ 7103, 8405, 116,
+ 7103, 8405, 138,
+ 7103, 8405, 216,
+ 7103, 8405, 236,
+ 7103, 8405, 292,
+ 7103, 8405, 306,
+ 7103, 8405, 332,
+ 7103, 8405, 364,
+ 7103, 8405, 392,
+ 7103, 8405, 462,
+ 7103, 8405, 510,
+ 7103, 8405, 524,
+ 7103, 8405, 556,
+ 7103, 8405, 622,
+ 7103, 8405, 652,
+ 7103, 8405, 792,
+ 7103, 8405, 884,
+ 7103, 8405, 996,
+ 7103, 8405, 1260,
+ 7103, 8405, 1512,
+ 7103, 8405, 1612,
+ 7103, 8405, 2030,
+ 7103, 8405, 2212,
+ 7103, 8405, 2516,
+ 7103, 8405, 2566,
+ 7103, 8405, 2678,
+ 7103, 8405, 3028,
+ 7103, 10469, 4926,
+ 7103, 11257, 8405, 510,
+ 7103, 11257, 8405, 622,
+ 7103, 11257, 8405, 652,
+ 7103, 12017, 4926,
+ 7103, 13033, 8404,
+ 7121, 2171, 8159, 6510,
+ 7121, 2171, 9615, 6510,
+ 7121, 4201, 9259, 6510,
+ 7121, 4389, 6510,
+ 7121, 4389, 8056,
+ 7121, 4389, 9367, 7821, 8056,
+ 7121, 4849, 10465, 9947, 730,
+ 7121, 4849, 10642,
+ 7121, 4849, 12857, 12901, 6434,
+ 7121, 6507, 10502,
+ 7121, 7443, 8077, 6121, 1044,
+ 7121, 7443, 8570,
+ 7121, 7443, 10465, 9947, 730,
+ 7121, 7443, 10513, 7821, 8744,
+ 7121, 7443, 10642,
+ 7121, 7443, 12857, 10763, 6434,
+ 7121, 7443, 12933, 7821, 8744,
+ 7121, 7509, 9259, 6510,
+ 7121, 7695, 9259, 6510,
+ 7121, 7695, 10467, 6510,
+ 7165, 5758,
+ 7173, 5758,
+ 7173, 5759, 275, 10642,
+ 7173, 5759, 6121, 1045, 6490,
+ 7173, 5759, 6121, 6617, 6376,
+ 7173, 5759, 6121, 8649, 4112,
+ 7173, 5759, 6121, 9279, 4112,
+ 7173, 7708,
+ 7199, 4205, 5758,
+ 7199, 7519, 5758,
+ 7199, 9491, 5758,
+ 7201, 7711, 10374,
+ 7201, 7768,
+ 7201, 7769, 10375, 6121, 1044,
+ 7201, 7769, 10375, 6121, 5444,
+ 7201, 7821, 10677, 760,
+ 7201, 8745, 7769, 10374,
+ 7201, 8745, 12493, 10374,
+ 7201, 9095, 1045, 10374,
+ 7201, 9095, 5445, 10374,
+ 7201, 9095, 7711, 10374,
+ 7201, 9437, 444,
+ 7201, 9437, 720,
+ 7201, 9610,
+ 7201, 10780,
+ 7201, 11262,
+ 7201, 12492,
+ 7202,
+ 7209, 5758,
+ 7271, 4153, 721, 7607, 6113, 6434,
+ 7271, 4153, 6434,
+ 7271, 4153, 6435, 721, 7607, 4153, 6434,
+ 7271, 4153, 6435, 6121, 4530,
+ 7271, 4153, 6435, 9967, 7271, 6113, 6434,
+ 7271, 4153, 6435, 9967, 7607, 4153, 6434,
+ 7271, 4153, 6505, 6434,
+ 7271, 4153, 7821, 6434,
+ 7271, 4153, 8153, 6434,
+ 7271, 6113, 721, 7607, 4153, 6434,
+ 7271, 6113, 6434,
+ 7271, 6113, 6435, 569, 4895, 760,
+ 7271, 6113, 6435, 569, 8076,
+ 7271, 6113, 6435, 721, 7271, 4153, 6434,
+ 7271, 6113, 6435, 6121, 4530,
+ 7271, 6113, 6435, 9967, 7271, 4153, 6434,
+ 7271, 6113, 6505, 6434,
+ 7271, 6113, 7821, 6434,
+ 7271, 6113, 8153, 6434,
+ 7309, 7609, 4926,
+ 7309, 8405, 444,
+ 7309, 8405, 602,
+ 7309, 8405, 2174,
+ 7309, 8405, 3236,
+ 7309, 8405, 3952,
+ 7309, 8405, 3982,
+ 7309, 8405, 4348,
+ 7309, 8405, 4600,
+ 7309, 8405, 4900,
+ 7309, 8405, 5018,
+ 7309, 8405, 5192,
+ 7309, 8405, 5604,
+ 7309, 8405, 5628,
+ 7309, 8405, 6044,
+ 7309, 8405, 6488,
+ 7309, 8405, 6558,
+ 7309, 8405, 6774,
+ 7309, 8405, 7356,
+ 7309, 8405, 7712,
+ 7309, 8405, 8752,
+ 7309, 8405, 9246,
+ 7309, 8405, 9248,
+ 7309, 8405, 9368,
+ 7309, 8405, 9504,
+ 7309, 8405, 10662,
+ 7309, 8405, 12008,
+ 7309, 9283, 4926,
+ 7309, 10489, 9283, 4926,
+ 7321, 73, 8399, 4926,
+ 7321, 93, 8399, 4926,
+ 7321, 5759, 7282,
+ 7321, 5759, 8916,
+ 7321, 5759, 9824,
+ 7321, 5759, 9870,
+ 7321, 5759, 9904,
+ 7321, 5759, 11900,
+ 7321, 6689, 2170,
+ 7321, 6689, 2540,
+ 7321, 6689, 2778,
+ 7321, 6689, 4200,
+ 7321, 6689, 4214,
+ 7321, 6689, 5190,
+ 7321, 6689, 6260,
+ 7321, 6689, 6722,
+ 7321, 6689, 7508,
+ 7321, 6689, 7694,
+ 7321, 7803, 5759, 8,
+ 7321, 7803, 5759, 16,
+ 7321, 7803, 5759, 28,
+ 7321, 7803, 5759, 40,
+ 7321, 7803, 5759, 58,
+ 7321, 7803, 5759, 72,
+ 7321, 7803, 5759, 92,
+ 7321, 7803, 5759, 266,
+ 7321, 7803, 5759, 606,
+ 7321, 7803, 5759, 9827, 22,
+ 7321, 7803, 5759, 9827, 34,
+ 7321, 7803, 5759, 9827, 344,
+ 7321, 7803, 5759, 9827, 518,
+ 7321, 8322,
+ 7321, 8405, 0,
+ 7321, 8405, 8,
+ 7321, 8405, 16,
+ 7321, 8405, 28,
+ 7321, 8405, 40,
+ 7321, 8405, 58,
+ 7321, 8405, 72,
+ 7321, 8405, 92,
+ 7321, 8405, 100,
+ 7321, 8405, 116,
+ 7321, 8405, 138,
+ 7321, 8405, 216,
+ 7321, 8405, 236,
+ 7321, 8405, 266,
+ 7321, 8405, 292,
+ 7321, 8405, 306,
+ 7321, 8405, 332,
+ 7321, 8405, 364,
+ 7321, 8405, 392,
+ 7321, 8405, 462,
+ 7321, 8405, 510,
+ 7321, 8405, 524,
+ 7321, 8405, 556,
+ 7321, 8405, 606,
+ 7321, 8405, 610,
+ 7321, 8405, 622,
+ 7321, 8405, 652,
+ 7321, 8405, 792,
+ 7321, 8405, 884,
+ 7321, 8405, 974,
+ 7321, 8405, 996,
+ 7321, 8405, 1260,
+ 7321, 8405, 1512,
+ 7321, 8405, 1612,
+ 7321, 8405, 1796,
+ 7321, 8405, 2030,
+ 7321, 8405, 2076,
+ 7321, 8405, 2126,
+ 7321, 8405, 2212,
+ 7321, 8405, 2410,
+ 7321, 8405, 2438,
+ 7321, 8405, 2516,
+ 7321, 8405, 2566,
+ 7321, 8405, 2678,
+ 7321, 8405, 2746,
+ 7321, 8405, 3110,
+ 7321, 8405, 4016,
+ 7321, 8405, 5994,
+ 7321, 8405, 9827, 22,
+ 7321, 8405, 9827, 34,
+ 7321, 8405, 9827, 344,
+ 7321, 8405, 9827, 518,
+ 7325, 5758,
+ 7349, 8774,
+ 7377, 429, 10263, 5758,
+ 7380,
+ 7387, 5758,
+ 7390,
+ 7393, 8677, 8774,
+ 7424,
+ 7443, 731, 12473, 9050,
+ 7443, 1809, 11715, 9050,
+ 7443, 2171, 8159, 6510,
+ 7443, 4197, 5878,
+ 7443, 4389, 6505, 8056,
+ 7443, 4389, 6510,
+ 7443, 5876,
+ 7443, 6408,
+ 7443, 6409, 6121, 730,
+ 7443, 6409, 6121, 10959, 8963, 6434,
+ 7443, 6409, 8151, 12877, 8450,
+ 7443, 6409, 9050,
+ 7443, 6409, 9051, 6121, 1044,
+ 7443, 6409, 9817, 6121, 8744,
+ 7443, 6409, 12877, 8450,
+ 7443, 6435, 6121, 7593, 8056,
+ 7443, 6435, 6121, 9095, 5444,
+ 7443, 6505, 10637, 7533, 9050,
+ 7443, 6505, 11677, 9050,
+ 7443, 6627, 9050,
+ 7443, 6627, 9051, 7121, 4530,
+ 7443, 6627, 9051, 7773, 4530,
+ 7443, 6627, 9051, 8473, 7370,
+ 7443, 6792,
+ 7443, 7327, 4676,
+ 7443, 7821, 6627, 9050,
+ 7443, 7821, 8077, 9050,
+ 7443, 7821, 8745, 9050,
+ 7443, 7821, 10637, 7533, 9050,
+ 7443, 7821, 11677, 9050,
+ 7443, 7821, 12114,
+ 7443, 8077, 9050,
+ 7443, 8151, 12877, 9050,
+ 7443, 8153, 6409, 9050,
+ 7443, 8153, 6435, 6121, 9645, 4398,
+ 7443, 8153, 8933, 6778,
+ 7443, 8153, 11195, 4926,
+ 7443, 8153, 12114,
+ 7443, 8521, 8191, 11793, 9610,
+ 7443, 8631, 10371, 9050,
+ 7443, 8717, 11195, 4926,
+ 7443, 8745, 9050,
+ 7443, 8745, 9051, 6121, 5935, 275, 2725, 8076,
+ 7443, 8745, 9051, 6121, 5935, 275, 8005, 8076,
+ 7443, 8745, 9051, 6121, 7412,
+ 7443, 8745, 9051, 6121, 10666,
+ 7443, 8745, 9051, 7121, 8076,
+ 7443, 8745, 9051, 7773, 8076,
+ 7443, 8745, 9051, 10982,
+ 7443, 8933, 6778,
+ 7443, 9074,
+ 7443, 10493, 753, 10794,
+ 7443, 10523, 41, 9050,
+ 7443, 10637, 7533, 9050,
+ 7443, 10642,
+ 7443, 10643, 6377, 4849, 10642,
+ 7443, 10677, 761, 6121, 7412,
+ 7443, 10677, 827, 4876,
+ 7443, 11793, 9610,
+ 7443, 12114,
+ 7443, 12115, 7121, 4530,
+ 7443, 12115, 7773, 4530,
+ 7443, 12115, 10982,
+ 7443, 12877, 9050,
+ 7443, 13029, 9050,
+ 7453, 89, 5758,
+ 7453, 7765, 5758,
+ 7453, 9167, 9679, 5758,
+ 7453, 9513, 2170,
+ 7453, 9513, 2171, 9344,
+ 7453, 9513, 2171, 9345, 10624,
+ 7453, 9513, 2171, 10624,
+ 7453, 9513, 2171, 10625, 5, 6,
+ 7453, 9513, 2540,
+ 7453, 9513, 2541, 4839, 4212,
+ 7453, 9513, 2670,
+ 7453, 9513, 2671, 10624,
+ 7453, 9513, 2778,
+ 7453, 9513, 4200,
+ 7453, 9513, 4201, 9344,
+ 7453, 9513, 4201, 10624,
+ 7453, 9513, 4214,
+ 7453, 9513, 5190,
+ 7453, 9513, 6722,
+ 7453, 9513, 6784,
+ 7453, 9513, 6785, 6715, 4212,
+ 7453, 9513, 6785, 10624,
+ 7453, 9513, 7508,
+ 7453, 9513, 7694,
+ 7453, 9513, 8162,
+ 7453, 9513, 8874,
+ 7453, 9513, 10489, 2171, 9344,
+ 7453, 9675, 5758,
+ 7453, 9679, 5758,
+ 7453, 9691, 5758,
+ 7453, 9995, 5758,
+ 7453, 10511, 5758,
+ 7453, 10757, 5758,
+ 7453, 10961, 5758,
+ 7453, 11193, 5758,
+ 7453, 11797, 5758,
+ 7467, 6623, 12132,
+ 7467, 7935, 8774,
+ 7467, 8405, 4,
+ 7467, 8405, 6,
+ 7467, 8405, 8,
+ 7467, 8405, 12,
+ 7467, 8405, 28,
+ 7467, 8405, 32,
+ 7467, 8405, 42,
+ 7467, 8405, 44,
+ 7467, 8405, 46,
+ 7467, 8405, 48,
+ 7467, 8405, 50,
+ 7467, 8405, 63, 0,
+ 7467, 8405, 426,
+ 7467, 8405, 438,
+ 7467, 8405, 447, 28,
+ 7467, 8405, 662,
+ 7467, 8405, 878,
+ 7467, 8405, 1090,
+ 7467, 8405, 1110,
+ 7467, 8405, 1130,
+ 7467, 8405, 1220,
+ 7467, 8405, 1244,
+ 7467, 8405, 1486,
+ 7467, 8405, 1494,
+ 7467, 8405, 3230,
+ 7467, 8405, 3840,
+ 7467, 8405, 4185, 4189, 199, 10,
+ 7467, 8405, 4265, 4381, 12,
+ 7467, 8405, 4617, 283, 1501, 16,
+ 7467, 8405, 4625, 1114,
+ 7467, 8405, 4731, 20,
+ 7467, 8405, 5828,
+ 7467, 8405, 6059, 603, 40,
+ 7467, 8405, 6401, 6738,
+ 7467, 8405, 6415, 0,
+ 7467, 8405, 6554,
+ 7467, 8405, 6635, 3979, 6,
+ 7467, 8405, 6721, 167, 8,
+ 7467, 8405, 6891, 14,
+ 7467, 8405, 6997, 18,
+ 7467, 8405, 7028,
+ 7467, 8405, 7419, 2383, 5533, 34,
+ 7467, 8405, 7567, 13213, 36,
+ 7467, 8405, 7719, 2699, 2789, 38,
+ 7467, 8405, 7835, 6139, 44,
+ 7467, 8405, 8283, 14,
+ 7467, 8405, 8312,
+ 7467, 8405, 8391, 4829, 4891, 22,
+ 7467, 8405, 8441, 1861, 24,
+ 7467, 8405, 8501, 2129, 5057, 26,
+ 7467, 8405, 8540,
+ 7467, 8405, 8579, 8575, 30,
+ 7467, 8405, 8727, 36,
+ 7467, 8405, 9132,
+ 7467, 8405, 9543, 6759, 28,
+ 7467, 8405, 9911, 6495, 9047, 2,
+ 7467, 8405, 10132,
+ 7467, 8405, 10134,
+ 7467, 8405, 10136,
+ 7467, 8405, 10627, 7699, 7692,
+ 7467, 8405, 12482,
+ 7467, 8405, 13013, 0,
+ 7467, 8405, 13014,
+ 7467, 8405, 13057, 66,
+ 7467, 8405, 13058,
+ 7467, 8405, 13073, 28,
+ 7467, 8405, 13075, 36,
+ 7467, 8405, 13077, 38,
+ 7467, 8405, 13211, 28,
+ 7467, 8405, 13227, 24,
+ 7467, 8405, 13229, 26,
+ 7467, 8405, 13339, 24,
+ 7467, 8405, 13377, 14,
+ 7467, 8405, 13391, 14,
+ 7467, 8405, 13399, 2,
+ 7467, 8717, 12132,
+ 7467, 9909, 8774,
+ 7467, 10349, 12132,
+ 7467, 10657, 8774,
+ 7469, 5758,
+ 7551, 601, 5876,
+ 7551, 601, 5877, 6121, 10666,
+ 7551, 601, 5877, 6377, 7551, 4117, 5876,
+ 7551, 4117, 5876,
+ 7551, 4117, 5877, 6121, 9546,
+ 7551, 4849, 5876,
+ 7551, 11765, 6435, 6377, 11097, 6434,
+ 7579, 721, 11466,
+ 7588,
+ 7593, 175, 3992,
+ 7593, 2857, 6121, 10666,
+ 7593, 4223, 5836,
+ 7593, 4849, 6627, 9050,
+ 7593, 4849, 10637, 7533, 9050,
+ 7593, 4849, 12114,
+ 7593, 5445, 5758,
+ 7593, 6610,
+ 7593, 6616,
+ 7593, 7443, 6627, 9050,
+ 7593, 7443, 10637, 7533, 9050,
+ 7593, 7443, 12114,
+ 7593, 7453, 9513, 2170,
+ 7593, 7453, 9513, 2171, 9344,
+ 7593, 7453, 9513, 2171, 10624,
+ 7593, 7453, 9513, 2540,
+ 7593, 7453, 9513, 2670,
+ 7593, 7453, 9513, 2778,
+ 7593, 7453, 9513, 4200,
+ 7593, 7453, 9513, 4201, 9344,
+ 7593, 7453, 9513, 4214,
+ 7593, 7453, 9513, 5190,
+ 7593, 7453, 9513, 6722,
+ 7593, 7453, 9513, 6784,
+ 7593, 7453, 9513, 7508,
+ 7593, 7453, 9513, 7694,
+ 7593, 7453, 9513, 8162,
+ 7593, 7453, 9513, 8874,
+ 7593, 7708,
+ 7593, 8129, 5758,
+ 7593, 8167, 5758,
+ 7593, 8525, 5758,
+ 7593, 9263, 428,
+ 7593, 9263, 429, 6121, 9546,
+ 7593, 9263, 429, 6121, 10677, 761, 91, 1109, 429, 11649, 8758,
+ 7593, 9581, 5758,
+ 7593, 9633, 9718,
+ 7593, 9898,
+ 7593, 9959, 89, 8466,
+ 7593, 9959, 6121, 9546,
+ 7593, 9959, 6121, 10677, 761, 91, 1109, 429, 11649, 8758,
+ 7593, 10469, 4926,
+ 7593, 10708,
+ 7593, 11099, 5758,
+ 7593, 11224,
+ 7593, 11451, 90,
+ 7593, 12017, 4926,
+ 7593, 12043, 6616,
+ 7593, 12473, 5758,
+ 7593, 12478,
+ 7595, 9610,
+ 7598,
+ 7605, 11201, 10782,
+ 7607, 4153, 6434,
+ 7607, 4153, 6435, 569, 8076,
+ 7607, 4153, 6435, 721, 7607, 6113, 6434,
+ 7607, 4153, 6435, 6121, 4530,
+ 7607, 4153, 6435, 9967, 7271, 4153, 6434,
+ 7607, 4153, 6505, 6434,
+ 7607, 4153, 7821, 6434,
+ 7607, 4153, 8153, 6434,
+ 7607, 6113, 6434,
+ 7607, 6113, 6435, 721, 7271, 6113, 6434,
+ 7607, 6113, 6435, 6121, 4530,
+ 7607, 6113, 6505, 6434,
+ 7607, 6113, 7821, 6434,
+ 7607, 6113, 8153, 6434,
+ 7608,
+ 7619, 6505, 11765, 6434,
+ 7627, 429, 8298,
+ 7627, 429, 11886,
+ 7659, 3992,
+ 7665, 89, 6377, 5758,
+ 7665, 93, 8399, 4926,
+ 7665, 436,
+ 7665, 973, 5758,
+ 7665, 5759, 8916,
+ 7665, 5759, 9824,
+ 7665, 5759, 9870,
+ 7665, 6197, 5758,
+ 7665, 6673, 5758,
+ 7665, 6689, 2170,
+ 7665, 6689, 2540,
+ 7665, 6689, 2778,
+ 7665, 6689, 4200,
+ 7665, 6689, 4214,
+ 7665, 6689, 5190,
+ 7665, 6689, 6260,
+ 7665, 6689, 6722,
+ 7665, 6689, 7508,
+ 7665, 6689, 7694,
+ 7665, 7183, 5758,
+ 7665, 7469, 5758,
+ 7665, 7803, 5759, 8,
+ 7665, 7803, 5759, 16,
+ 7665, 7803, 5759, 28,
+ 7665, 7803, 5759, 40,
+ 7665, 7803, 5759, 58,
+ 7665, 7803, 5759, 72,
+ 7665, 7803, 5759, 92,
+ 7665, 7803, 5759, 162,
+ 7665, 7803, 5759, 266,
+ 7665, 7803, 5759, 440,
+ 7665, 7803, 5759, 606,
+ 7665, 8081, 5758,
+ 7665, 8405, 0,
+ 7665, 8405, 8,
+ 7665, 8405, 16,
+ 7665, 8405, 28,
+ 7665, 8405, 40,
+ 7665, 8405, 58,
+ 7665, 8405, 72,
+ 7665, 8405, 92,
+ 7665, 8405, 116,
+ 7665, 8405, 162,
+ 7665, 8405, 236,
+ 7665, 8405, 266,
+ 7665, 8405, 292,
+ 7665, 8405, 306,
+ 7665, 8405, 332,
+ 7665, 8405, 364,
+ 7665, 8405, 392,
+ 7665, 8405, 440,
+ 7665, 8405, 462,
+ 7665, 8405, 510,
+ 7665, 8405, 524,
+ 7665, 8405, 556,
+ 7665, 8405, 606,
+ 7665, 8405, 610,
+ 7665, 8405, 652,
+ 7665, 8405, 1796,
+ 7665, 8405, 2030,
+ 7665, 8405, 2076,
+ 7665, 8405, 2126,
+ 7665, 8405, 2438,
+ 7665, 8405, 2516,
+ 7665, 8405, 2566,
+ 7665, 8405, 2746,
+ 7665, 8405, 4888,
+ 7665, 8405, 5234,
+ 7665, 8525, 2171, 9344,
+ 7665, 8525, 2171, 10624,
+ 7665, 8525, 2670,
+ 7665, 8525, 5758,
+ 7681, 4103, 2091, 6764,
+ 7681, 8174,
+ 7695, 1045, 12132,
+ 7695, 11097, 7944,
+ 7695, 11765, 7944,
+ 7695, 11913, 8167, 7570,
+ 7695, 11943, 6408,
+ 7707, 11861, 11242,
+ 7708,
+ 7709, 6121, 1045, 6376,
+ 7709, 6121, 1045, 6490,
+ 7709, 6121, 5551, 6376,
+ 7709, 10374,
+ 7709, 10375, 6121, 1045, 6376,
+ 7709, 10375, 6121, 8649, 4112,
+ 7709, 10375, 6377, 11097, 6434,
+ 7709, 10375, 6377, 11765, 6434,
+ 7711, 6121, 4849, 4389, 6504,
+ 7711, 6121, 7443, 4389, 6504,
+ 7729, 8654,
+ 7733, 4927, 5758,
+ 7768,
+ 7769, 6121, 7173, 5758,
+ 7769, 6121, 9437, 444,
+ 7769, 6121, 9546,
+ 7769, 6377, 761, 6377, 12492,
+ 7769, 6377, 12492,
+ 7769, 7991, 721, 8329, 6121, 7768,
+ 7773, 2171, 8159, 6510,
+ 7773, 4389, 6510,
+ 7773, 4389, 8056,
+ 7773, 4389, 9367, 7821, 8056,
+ 7773, 4849, 445, 7121, 7443, 6627, 9051, 9664,
+ 7773, 4849, 8077, 6121, 1044,
+ 7773, 4849, 10465, 9947, 730,
+ 7773, 4849, 10642,
+ 7773, 6507, 10502,
+ 7773, 7443, 445, 7121, 4849, 6627, 9051, 9664,
+ 7773, 7443, 8570,
+ 7773, 7443, 10465, 9947, 730,
+ 7773, 7443, 10513, 7821, 8744,
+ 7773, 7443, 10642,
+ 7773, 7443, 12933, 7821, 8744,
+ 7794,
+ 7798,
+ 7810,
+ 7819, 429, 8112,
+ 7821, 601, 10441, 6992,
+ 7821, 2048,
+ 7821, 2587, 6121, 5528,
+ 7821, 3949, 5842,
+ 7821, 4117, 10441, 6992,
+ 7821, 4202,
+ 7821, 4215, 9601, 5830,
+ 7821, 4849, 10441, 6992,
+ 7821, 5830,
+ 7821, 6081, 7593, 8744,
+ 7821, 6571, 4760,
+ 7821, 6571, 5404,
+ 7821, 6571, 5564,
+ 7821, 6571, 7410,
+ 7821, 6571, 7996,
+ 7821, 6571, 8368,
+ 7821, 6907, 5842,
+ 7821, 7085, 8744,
+ 7821, 7443, 10441, 6992,
+ 7821, 7547, 7370,
+ 7821, 7593, 5830,
+ 7821, 7593, 8744,
+ 7821, 7593, 9438,
+ 7821, 7611, 5842,
+ 7821, 8022,
+ 7821, 8056,
+ 7821, 8057, 6121, 1045, 7442,
+ 7821, 8057, 6121, 2779, 4112,
+ 7821, 8057, 6121, 4117, 6434,
+ 7821, 8057, 6121, 7121, 4849, 10464,
+ 7821, 8057, 6121, 7121, 7443, 10464,
+ 7821, 8057, 6121, 7773, 4849, 10464,
+ 7821, 8057, 6121, 7773, 7443, 10464,
+ 7821, 8463, 5830,
+ 7821, 8463, 7593, 8744,
+ 7821, 8463, 8744,
+ 7821, 8463, 9158,
+ 7821, 8463, 9438,
+ 7821, 8691, 1044,
+ 7821, 8744,
+ 7821, 8745, 6121, 7121, 4849, 10464,
+ 7821, 8745, 6121, 7121, 7443, 10464,
+ 7821, 8745, 6121, 7773, 4849, 10464,
+ 7821, 8745, 6121, 7773, 7443, 10464,
+ 7821, 8745, 6121, 8037, 10677, 4876,
+ 7821, 8745, 6121, 9645, 9118,
+ 7821, 8745, 6121, 10677, 10739, 4876,
+ 7821, 8745, 6121, 11097, 5934,
+ 7821, 8745, 6121, 11765, 5934,
+ 7821, 8745, 11461, 6505, 7593, 8744,
+ 7821, 9158,
+ 7821, 9159, 5842,
+ 7821, 9159, 6121, 9079, 1044,
+ 7821, 9159, 11461, 6505, 7593, 9158,
+ 7821, 9338,
+ 7821, 9711, 4178,
+ 7821, 10143, 1860,
+ 7821, 10143, 4760,
+ 7821, 10194,
+ 7821, 10209, 4178,
+ 7821, 10420,
+ 7821, 10502,
+ 7821, 10643, 11461, 7593, 7821, 10642,
+ 7821, 10677, 760,
+ 7821, 10677, 9264,
+ 7821, 10677, 11202,
+ 7821, 11036,
+ 7821, 11202,
+ 7821, 11354,
+ 7821, 11364,
+ 7821, 11649, 9264,
+ 7821, 12383, 7593, 10642,
+ 7821, 12383, 10642,
+ 7821, 12383, 10643, 6121, 1044,
+ 7821, 12917, 9158,
+ 7821, 12917, 9159, 6121, 11097, 5934,
+ 7821, 12917, 9159, 6121, 11765, 5934,
+ 7821, 12931, 7593, 10642,
+ 7821, 12931, 10642,
+ 7821, 12967, 7593, 10642,
+ 7821, 12967, 9602,
+ 7821, 12967, 10642,
+ 7821, 12984,
+ 7821, 13067, 7593, 10642,
+ 7821, 13067, 9602,
+ 7821, 13067, 10420,
+ 7821, 13067, 10642,
+ 7911, 1049, 9467, 6791, 9748,
+ 7911, 6129, 11229, 1044,
+ 7911, 6129, 11229, 4876,
+ 7911, 6569, 4926,
+ 7911, 8423, 9467, 6791, 9748,
+ 7911, 8525, 2170,
+ 7911, 8525, 2171, 9344,
+ 7911, 8525, 2171, 10624,
+ 7911, 8525, 2540,
+ 7911, 8525, 2541, 9344,
+ 7911, 8525, 2541, 10624,
+ 7911, 8525, 2670,
+ 7911, 8525, 2671, 10624,
+ 7911, 8525, 2778,
+ 7911, 8525, 2779, 9344,
+ 7911, 8525, 2779, 10624,
+ 7911, 8525, 4200,
+ 7911, 8525, 4201, 9344,
+ 7911, 8525, 4201, 10624,
+ 7911, 8525, 4214,
+ 7911, 8525, 4215, 9344,
+ 7911, 8525, 4215, 10624,
+ 7911, 8525, 5190,
+ 7911, 8525, 5191, 9344,
+ 7911, 8525, 5191, 10624,
+ 7911, 8525, 6722,
+ 7911, 8525, 6723, 9344,
+ 7911, 8525, 6723, 10624,
+ 7911, 8525, 6784,
+ 7911, 8525, 6785, 10624,
+ 7911, 8525, 6804,
+ 7911, 8525, 6805, 10624,
+ 7911, 8525, 7508,
+ 7911, 8525, 7509, 9344,
+ 7911, 8525, 7509, 10624,
+ 7911, 8525, 7576,
+ 7911, 8525, 7577, 10624,
+ 7911, 8525, 7694,
+ 7911, 8525, 7695, 9344,
+ 7911, 8525, 7695, 10624,
+ 7911, 8525, 8160,
+ 7911, 8525, 8161, 10624,
+ 7911, 8525, 8514,
+ 7911, 8525, 8515, 10624,
+ 7911, 8525, 8820,
+ 7911, 8525, 8821, 10624,
+ 7911, 8525, 8876,
+ 7911, 8525, 8877, 10624,
+ 7911, 8525, 9672,
+ 7911, 8525, 9673, 10624,
+ 7911, 8931, 3717, 6052,
+ 7911, 8931, 6791, 9748,
+ 7911, 8931, 7687, 9748,
+ 7911, 8931, 8233, 9748,
+ 7911, 8931, 8681, 9748,
+ 7911, 9467, 7687, 9748,
+ 7911, 9467, 8681, 9748,
+ 7919, 6741, 445, 6741, 568,
+ 7919, 6741, 568,
+ 7919, 6741, 569, 6121, 11449, 7908,
+ 7922,
+ 7931, 1109, 429, 3288,
+ 7931, 2396,
+ 7931, 3997, 11228,
+ 7931, 4201, 9601, 5830,
+ 7931, 4223, 5836,
+ 7931, 4927, 5241, 8260,
+ 7931, 5759, 5521, 8995, 3262,
+ 7931, 5759, 7176,
+ 7931, 5759, 7476,
+ 7931, 5759, 7486,
+ 7931, 5759, 7917, 9894,
+ 7931, 5759, 8715, 10708,
+ 7931, 5759, 8715, 12523, 1894,
+ 7931, 5759, 11350,
+ 7931, 5759, 12137, 7916,
+ 7931, 5759, 12159, 7917, 11396,
+ 7931, 5879, 10204,
+ 7931, 6616,
+ 7931, 6644,
+ 7931, 6645, 8461, 4212,
+ 7931, 6645, 10275, 4212,
+ 7931, 6731, 8037, 1809, 5836,
+ 7931, 6731, 8037, 4423, 5836,
+ 7931, 6772,
+ 7931, 6773, 6121, 2779, 4112,
+ 7931, 6773, 8461, 4212,
+ 7931, 6773, 10275, 4212,
+ 7931, 6895, 6376,
+ 7931, 6895, 6490,
+ 7931, 7026,
+ 7931, 7027, 8461, 4212,
+ 7931, 7027, 10275, 4212,
+ 7931, 7377, 429, 8658,
+ 7931, 7593, 1809, 4942,
+ 7931, 7593, 1809, 5648,
+ 7931, 7593, 2918,
+ 7931, 7593, 3052,
+ 7931, 7593, 4423, 1739, 3244,
+ 7931, 7593, 4423, 2640,
+ 7931, 7593, 4423, 3052,
+ 7931, 7593, 4423, 4630,
+ 7931, 7593, 4423, 4943, 9363, 4212,
+ 7931, 7593, 4423, 4943, 10275, 4212,
+ 7931, 7593, 4423, 5240,
+ 7931, 7593, 4423, 5648,
+ 7931, 7593, 4423, 6254,
+ 7931, 7593, 4423, 7124,
+ 7931, 7593, 4423, 7695, 4112,
+ 7931, 7593, 4423, 9185, 4399, 429, 4736,
+ 7931, 7593, 4423, 9645, 6260,
+ 7931, 7593, 4423, 9807, 12139, 6260,
+ 7931, 7593, 4423, 10301, 2285, 6121, 1739, 6121, 3245, 9448,
+ 7931, 7593, 4423, 10301, 2485, 6121, 1739, 6121, 3245, 9448,
+ 7931, 7593, 4423, 10301, 3245, 6121, 1739, 6121, 3052,
+ 7931, 7593, 6644,
+ 7931, 7593, 6772,
+ 7931, 7593, 7026,
+ 7931, 7633, 429, 2451, 173, 4424,
+ 7931, 7650,
+ 7931, 7651, 8461, 4212,
+ 7931, 7651, 10275, 4212,
+ 7931, 7803, 5759, 1045, 6490,
+ 7931, 7803, 5759, 7593, 43, 6376,
+ 7931, 7803, 5759, 10267, 7593, 43, 6376,
+ 7931, 8405, 8,
+ 7931, 8405, 9, 6789, 4212,
+ 7931, 8405, 9, 8461, 4212,
+ 7931, 8405, 9, 9363, 4212,
+ 7931, 8405, 9, 10275, 4212,
+ 7931, 8405, 40,
+ 7931, 8405, 41, 6121, 6895, 6376,
+ 7931, 8405, 41, 6121, 6895, 6377, 10275, 4212,
+ 7931, 8405, 41, 6789, 4212,
+ 7931, 8405, 41, 10275, 4212,
+ 7931, 8405, 66,
+ 7931, 8405, 400,
+ 7931, 8405, 401, 6789, 4212,
+ 7931, 8405, 401, 8461, 4212,
+ 7931, 8405, 401, 9363, 4212,
+ 7931, 8405, 401, 10275, 4212,
+ 7931, 8405, 426,
+ 7931, 8405, 427, 6789, 4212,
+ 7931, 8405, 427, 10275, 4212,
+ 7931, 8405, 612,
+ 7931, 8405, 613, 6789, 4212,
+ 7931, 8405, 613, 10275, 4212,
+ 7931, 8405, 664,
+ 7931, 8405, 665, 6789, 4212,
+ 7931, 8405, 665, 10275, 4212,
+ 7931, 8405, 710,
+ 7931, 8405, 711, 6121, 2779, 4113, 6376,
+ 7931, 8405, 711, 6121, 2779, 4113, 11877, 6376,
+ 7931, 8405, 711, 6121, 7695, 4113, 6376,
+ 7931, 8405, 711, 6121, 7695, 4113, 10441, 10959, 6376,
+ 7931, 8405, 711, 6789, 4212,
+ 7931, 8405, 711, 8461, 4212,
+ 7931, 8405, 711, 9363, 4212,
+ 7931, 8405, 711, 10275, 4212,
+ 7931, 8405, 780,
+ 7931, 8405, 781, 6121, 1045, 6491, 721, 7695, 4113, 6376,
+ 7931, 8405, 781, 6121, 2779, 4113, 6491, 721, 1045, 6376,
+ 7931, 8405, 781, 6121, 7593, 42,
+ 7931, 8405, 781, 6121, 7695, 4113, 10441, 9811, 6490,
+ 7931, 8405, 781, 6121, 7695, 4113, 10441, 9811, 6491, 721, 2779, 4113, 6376,
+ 7931, 8405, 781, 6121, 7695, 4113, 12477, 6490,
+ 7931, 8405, 781, 6121, 10267, 7593, 43, 6490,
+ 7931, 8405, 781, 6789, 4212,
+ 7931, 8405, 781, 8461, 4212,
+ 7931, 8405, 781, 9363, 4212,
+ 7931, 8405, 781, 10275, 4212,
+ 7931, 8405, 956,
+ 7931, 8405, 957, 6121, 1045, 6490,
+ 7931, 8405, 957, 6789, 4212,
+ 7931, 8405, 957, 8461, 4212,
+ 7931, 8405, 957, 9363, 4212,
+ 7931, 8405, 957, 10275, 4212,
+ 7931, 8405, 960,
+ 7931, 8405, 961, 6121, 1045, 6490,
+ 7931, 8405, 961, 6121, 1045, 6491, 721, 7593, 2640,
+ 7931, 8405, 961, 6121, 2779, 4113, 11877, 6491, 721, 7593, 2640,
+ 7931, 8405, 961, 6121, 4215, 4113, 6376,
+ 7931, 8405, 961, 6121, 5550,
+ 7931, 8405, 961, 6121, 7695, 4113, 6377, 10958,
+ 7931, 8405, 961, 6121, 10267, 42,
+ 7931, 8405, 961, 6121, 10267, 7593, 43, 6490,
+ 7931, 8405, 961, 6789, 4212,
+ 7931, 8405, 961, 10275, 4212,
+ 7931, 8405, 1056,
+ 7931, 8405, 1057, 6789, 4212,
+ 7931, 8405, 1057, 10275, 4212,
+ 7931, 8405, 1152,
+ 7931, 8405, 1153, 6121, 1045, 6490,
+ 7931, 8405, 1153, 6121, 1045, 7189, 6490,
+ 7931, 8405, 1153, 6121, 2779, 4113, 6490,
+ 7931, 8405, 1153, 6121, 7695, 4113, 6490,
+ 7931, 8405, 1153, 6121, 7695, 4113, 10441, 9811, 6490,
+ 7931, 8405, 1153, 6789, 4212,
+ 7931, 8405, 1153, 8461, 4212,
+ 7931, 8405, 1153, 9363, 4212,
+ 7931, 8405, 1153, 10275, 4212,
+ 7931, 8405, 1208,
+ 7931, 8405, 1209, 6121, 2779, 4113, 6490,
+ 7931, 8405, 1209, 6121, 5550,
+ 7931, 8405, 1209, 6121, 7695, 4113, 6376,
+ 7931, 8405, 1209, 6789, 4212,
+ 7931, 8405, 1209, 8461, 4212,
+ 7931, 8405, 1209, 9363, 4212,
+ 7931, 8405, 1209, 10275, 4212,
+ 7931, 8405, 1342,
+ 7931, 8405, 1343, 6121, 2779, 4113, 6376,
+ 7931, 8405, 1343, 6121, 2779, 4113, 10677, 6376,
+ 7931, 8405, 1343, 6121, 6895, 6376,
+ 7931, 8405, 1343, 6121, 7593, 7931, 8405, 2641, 721, 2779, 4112,
+ 7931, 8405, 1343, 6121, 7593, 7931, 8405, 2641, 6376,
+ 7931, 8405, 1343, 6121, 7593, 7931, 8405, 2641, 6490,
+ 7931, 8405, 1343, 6121, 7695, 4113, 6376,
+ 7931, 8405, 1343, 6121, 7695, 4113, 10441, 9811, 6490,
+ 7931, 8405, 1343, 6121, 10173, 12403, 6689, 4215, 6490,
+ 7931, 8405, 1343, 6789, 4212,
+ 7931, 8405, 1343, 8461, 4212,
+ 7931, 8405, 1343, 9363, 4212,
+ 7931, 8405, 1343, 10275, 4212,
+ 7931, 8405, 1358,
+ 7931, 8405, 1359, 4340,
+ 7931, 8405, 1359, 4341, 6121, 6895, 6376,
+ 7931, 8405, 1359, 4341, 6789, 4212,
+ 7931, 8405, 1359, 4341, 8461, 4212,
+ 7931, 8405, 1359, 4341, 9363, 4212,
+ 7931, 8405, 1359, 4341, 10275, 4212,
+ 7931, 8405, 1359, 6121, 3053, 6376,
+ 7931, 8405, 1359, 6121, 3053, 6377, 6789, 4212,
+ 7931, 8405, 1359, 6121, 3053, 6377, 10275, 4212,
+ 7931, 8405, 1359, 6121, 10267, 42,
+ 7931, 8405, 1359, 6789, 4212,
+ 7931, 8405, 1359, 8461, 4212,
+ 7931, 8405, 1359, 9363, 4212,
+ 7931, 8405, 1359, 10275, 4212,
+ 7931, 8405, 1359, 11948,
+ 7931, 8405, 1359, 11949, 6789, 4212,
+ 7931, 8405, 1359, 11949, 8461, 4212,
+ 7931, 8405, 1359, 11949, 9363, 4212,
+ 7931, 8405, 1359, 11949, 10275, 4212,
+ 7931, 8405, 1508,
+ 7931, 8405, 1509, 6789, 4212,
+ 7931, 8405, 1509, 10275, 4212,
+ 7931, 8405, 1578,
+ 7931, 8405, 1579, 6121, 1045, 6376,
+ 7931, 8405, 1579, 6121, 2779, 4113, 6376,
+ 7931, 8405, 1579, 6121, 5550,
+ 7931, 8405, 1579, 6121, 7695, 4113, 6490,
+ 7931, 8405, 1579, 6789, 4212,
+ 7931, 8405, 1579, 8461, 4212,
+ 7931, 8405, 1579, 9363, 4212,
+ 7931, 8405, 1579, 10275, 4212,
+ 7931, 8405, 1738,
+ 7931, 8405, 1739, 6121, 760,
+ 7931, 8405, 1739, 6121, 1045, 6376,
+ 7931, 8405, 1739, 6121, 7593, 42,
+ 7931, 8405, 1739, 6121, 7695, 4113, 6376,
+ 7931, 8405, 1739, 6121, 7695, 4113, 6490,
+ 7931, 8405, 1739, 6789, 4212,
+ 7931, 8405, 1739, 8461, 4212,
+ 7931, 8405, 1739, 9363, 4212,
+ 7931, 8405, 1739, 10275, 4212,
+ 7931, 8405, 2206,
+ 7931, 8405, 2207, 6789, 4212,
+ 7931, 8405, 2207, 8461, 4212,
+ 7931, 8405, 2207, 9363, 4212,
+ 7931, 8405, 2207, 10275, 4212,
+ 7931, 8405, 2284,
+ 7931, 8405, 2285, 6121, 1045, 6376,
+ 7931, 8405, 2285, 6121, 7695, 4113, 6376,
+ 7931, 8405, 2285, 6789, 4212,
+ 7931, 8405, 2285, 8461, 4212,
+ 7931, 8405, 2285, 9363, 4212,
+ 7931, 8405, 2285, 10275, 4212,
+ 7931, 8405, 2404,
+ 7931, 8405, 2405, 6121, 1045, 6490,
+ 7931, 8405, 2405, 6121, 1045, 6491, 721, 1045, 6376,
+ 7931, 8405, 2405, 6121, 2779, 4113, 6376,
+ 7931, 8405, 2405, 6121, 2779, 4113, 11877, 6376,
+ 7931, 8405, 2405, 6121, 4215, 4113, 6376,
+ 7931, 8405, 2405, 6121, 5550,
+ 7931, 8405, 2405, 6121, 6895, 6376,
+ 7931, 8405, 2405, 6121, 7593, 42,
+ 7931, 8405, 2405, 6121, 7593, 43, 6490,
+ 7931, 8405, 2405, 6121, 7593, 7931, 8405, 2641, 721, 2779, 4112,
+ 7931, 8405, 2405, 6121, 8758,
+ 7931, 8405, 2405, 6121, 10267, 42,
+ 7931, 8405, 2405, 6789, 4212,
+ 7931, 8405, 2405, 10275, 4212,
+ 7931, 8405, 2484,
+ 7931, 8405, 2485, 6121, 2779, 4113, 6490,
+ 7931, 8405, 2485, 6121, 7695, 4113, 6376,
+ 7931, 8405, 2485, 6789, 4212,
+ 7931, 8405, 2485, 8461, 4212,
+ 7931, 8405, 2485, 9363, 4212,
+ 7931, 8405, 2485, 10275, 4212,
+ 7931, 8405, 2640,
+ 7931, 8405, 2641, 6121, 7695, 4113, 6376,
+ 7931, 8405, 2641, 6789, 4212,
+ 7931, 8405, 2641, 8461, 4212,
+ 7931, 8405, 2641, 9363, 4212,
+ 7931, 8405, 2641, 10275, 4212,
+ 7931, 8405, 2668,
+ 7931, 8405, 2669, 6121, 5550,
+ 7931, 8405, 2669, 6121, 7695, 4113, 6377, 10958,
+ 7931, 8405, 2669, 6789, 4212,
+ 7931, 8405, 2669, 8461, 4212,
+ 7931, 8405, 2669, 9363, 4212,
+ 7931, 8405, 2669, 9456,
+ 7931, 8405, 2669, 9457, 4340,
+ 7931, 8405, 2669, 9457, 6789, 4212,
+ 7931, 8405, 2669, 9457, 10275, 4212,
+ 7931, 8405, 2669, 10275, 4212,
+ 7931, 8405, 2858,
+ 7931, 8405, 2859, 6789, 4212,
+ 7931, 8405, 2859, 8461, 4212,
+ 7931, 8405, 2859, 9363, 4212,
+ 7931, 8405, 2859, 10275, 4212,
+ 7931, 8405, 2918,
+ 7931, 8405, 2919, 6121, 1045, 6376,
+ 7931, 8405, 2919, 6121, 2779, 4113, 6376,
+ 7931, 8405, 2919, 6121, 5550,
+ 7931, 8405, 2919, 6121, 6895, 6376,
+ 7931, 8405, 2919, 6121, 6895, 6377, 6789, 4212,
+ 7931, 8405, 2919, 6121, 6895, 6377, 10275, 4212,
+ 7931, 8405, 2919, 6121, 10173, 12403, 6689, 2779, 6376,
+ 7931, 8405, 2919, 6121, 10173, 12403, 6689, 7695, 6376,
+ 7931, 8405, 2919, 6789, 4212,
+ 7931, 8405, 2919, 10275, 4212,
+ 7931, 8405, 3052,
+ 7931, 8405, 3053, 6121, 5878,
+ 7931, 8405, 3053, 6121, 6895, 6376,
+ 7931, 8405, 3053, 6121, 6895, 6377, 6789, 4212,
+ 7931, 8405, 3053, 6121, 6895, 6377, 8461, 4212,
+ 7931, 8405, 3053, 6121, 6895, 6377, 9363, 4212,
+ 7931, 8405, 3053, 6121, 6895, 6377, 10275, 4212,
+ 7931, 8405, 3053, 6121, 7593, 42,
+ 7931, 8405, 3053, 6121, 7695, 4113, 6490,
+ 7931, 8405, 3053, 6789, 4212,
+ 7931, 8405, 3053, 7982,
+ 7931, 8405, 3053, 7983, 6121, 6895, 6376,
+ 7931, 8405, 3053, 7983, 6121, 6895, 6377, 6789, 4212,
+ 7931, 8405, 3053, 7983, 6121, 6895, 6377, 10275, 4212,
+ 7931, 8405, 3053, 7983, 6121, 10173, 12403, 6689, 2779, 6376,
+ 7931, 8405, 3053, 7983, 6121, 10173, 12403, 6689, 7695, 6376,
+ 7931, 8405, 3053, 7983, 6789, 4212,
+ 7931, 8405, 3053, 7983, 10275, 4212,
+ 7931, 8405, 3053, 8461, 4212,
+ 7931, 8405, 3053, 9363, 4212,
+ 7931, 8405, 3053, 10275, 4212,
+ 7931, 8405, 3124,
+ 7931, 8405, 3125, 6789, 4212,
+ 7931, 8405, 3125, 8461, 4212,
+ 7931, 8405, 3125, 9363, 4212,
+ 7931, 8405, 3125, 10275, 4212,
+ 7931, 8405, 3244,
+ 7931, 8405, 3245, 6121, 6107, 6895, 6376,
+ 7931, 8405, 3245, 6121, 6107, 6895, 6490,
+ 7931, 8405, 3245, 6121, 6895, 6376,
+ 7931, 8405, 3245, 6121, 6895, 6377, 6789, 4212,
+ 7931, 8405, 3245, 6121, 6895, 6377, 10275, 4212,
+ 7931, 8405, 3245, 6121, 6895, 6490,
+ 7931, 8405, 3245, 6121, 6895, 6491, 6789, 4212,
+ 7931, 8405, 3245, 6121, 6895, 6491, 10275, 4212,
+ 7931, 8405, 3245, 6121, 7125, 6376,
+ 7931, 8405, 3245, 6121, 7125, 6377, 6789, 4212,
+ 7931, 8405, 3245, 6121, 7125, 6377, 10275, 4212,
+ 7931, 8405, 3245, 6121, 10173, 12403, 6689, 2779, 6376,
+ 7931, 8405, 3245, 6121, 10173, 12403, 6689, 7695, 6376,
+ 7931, 8405, 3245, 6789, 4212,
+ 7931, 8405, 3245, 7808,
+ 7931, 8405, 3245, 7809, 6789, 4212,
+ 7931, 8405, 3245, 7809, 10275, 4212,
+ 7931, 8405, 3245, 9448,
+ 7931, 8405, 3245, 9449, 6789, 4212,
+ 7931, 8405, 3245, 9449, 10275, 4212,
+ 7931, 8405, 3245, 10275, 4212,
+ 7931, 8405, 3766,
+ 7931, 8405, 3767, 6789, 4212,
+ 7931, 8405, 3767, 8461, 4212,
+ 7931, 8405, 3767, 9363, 4212,
+ 7931, 8405, 3767, 10275, 4212,
+ 7931, 8405, 4000,
+ 7931, 8405, 4001, 6789, 4212,
+ 7931, 8405, 4001, 10275, 4212,
+ 7931, 8405, 4136,
+ 7931, 8405, 4137, 6789, 4212,
+ 7931, 8405, 4137, 8461, 4212,
+ 7931, 8405, 4137, 9363, 4212,
+ 7931, 8405, 4137, 10275, 4212,
+ 7931, 8405, 4356,
+ 7931, 8405, 4357, 6789, 4212,
+ 7931, 8405, 4357, 8461, 4212,
+ 7931, 8405, 4357, 9363, 4212,
+ 7931, 8405, 4357, 10275, 4212,
+ 7931, 8405, 4423, 6894,
+ 7931, 8405, 4423, 6895, 2918,
+ 7931, 8405, 4423, 6895, 3052,
+ 7931, 8405, 4423, 6895, 3244,
+ 7931, 8405, 4630,
+ 7931, 8405, 4631, 6789, 4212,
+ 7931, 8405, 4631, 8461, 4212,
+ 7931, 8405, 4631, 9363, 4212,
+ 7931, 8405, 4631, 10275, 4212,
+ 7931, 8405, 4736,
+ 7931, 8405, 4737, 6789, 4212,
+ 7931, 8405, 4737, 8461, 4212,
+ 7931, 8405, 4737, 9363, 4212,
+ 7931, 8405, 4737, 10275, 4212,
+ 7931, 8405, 4942,
+ 7931, 8405, 4943, 6121, 1045, 6376,
+ 7931, 8405, 4943, 6121, 1045, 6490,
+ 7931, 8405, 4943, 6789, 4212,
+ 7931, 8405, 4943, 8461, 4212,
+ 7931, 8405, 4943, 9363, 4212,
+ 7931, 8405, 4943, 10275, 4212,
+ 7931, 8405, 5240,
+ 7931, 8405, 5241, 6121, 1045, 6490,
+ 7931, 8405, 5241, 6121, 2779, 4113, 6490,
+ 7931, 8405, 5241, 6121, 5550,
+ 7931, 8405, 5241, 6121, 7593, 42,
+ 7931, 8405, 5241, 6121, 7593, 2640,
+ 7931, 8405, 5241, 6121, 7695, 4113, 6376,
+ 7931, 8405, 5241, 6789, 4212,
+ 7931, 8405, 5241, 8260,
+ 7931, 8405, 5241, 8261, 6789, 4212,
+ 7931, 8405, 5241, 8261, 10275, 4212,
+ 7931, 8405, 5241, 8461, 4212,
+ 7931, 8405, 5241, 9363, 4212,
+ 7931, 8405, 5241, 10275, 4212,
+ 7931, 8405, 5298,
+ 7931, 8405, 5299, 6789, 4212,
+ 7931, 8405, 5299, 8461, 4212,
+ 7931, 8405, 5299, 9363, 4212,
+ 7931, 8405, 5299, 10275, 4212,
+ 7931, 8405, 5572,
+ 7931, 8405, 5573, 6789, 4212,
+ 7931, 8405, 5573, 10275, 4212,
+ 7931, 8405, 5648,
+ 7931, 8405, 5649, 6121, 1045, 6491, 721, 1045, 6376,
+ 7931, 8405, 5649, 6121, 2779, 4113, 11877, 6376,
+ 7931, 8405, 5649, 6121, 4215, 4113, 6376,
+ 7931, 8405, 5649, 6121, 7593, 7931, 8405, 2641, 721, 2779, 4112,
+ 7931, 8405, 5649, 6121, 7695, 4113, 6490,
+ 7931, 8405, 5649, 6121, 7695, 4113, 6491, 721, 7695, 4113, 6376,
+ 7931, 8405, 5649, 6121, 10173, 12403, 6689, 4215, 6376,
+ 7931, 8405, 5649, 6121, 10267, 42,
+ 7931, 8405, 5649, 6789, 4212,
+ 7931, 8405, 5649, 8461, 4212,
+ 7931, 8405, 5649, 9363, 4212,
+ 7931, 8405, 5649, 10275, 4212,
+ 7931, 8405, 5910,
+ 7931, 8405, 5911, 6789, 4212,
+ 7931, 8405, 5911, 10275, 4212,
+ 7931, 8405, 5916,
+ 7931, 8405, 5917, 6789, 4212,
+ 7931, 8405, 5917, 8461, 4212,
+ 7931, 8405, 5917, 9363, 4212,
+ 7931, 8405, 5917, 10275, 4212,
+ 7931, 8405, 5992,
+ 7931, 8405, 5993, 6789, 4212,
+ 7931, 8405, 5993, 8461, 4212,
+ 7931, 8405, 5993, 9363, 4212,
+ 7931, 8405, 5993, 10275, 4212,
+ 7931, 8405, 6254,
+ 7931, 8405, 6255, 6789, 4212,
+ 7931, 8405, 6255, 10275, 4212,
+ 7931, 8405, 6486,
+ 7931, 8405, 6487, 6789, 4212,
+ 7931, 8405, 6487, 8461, 4212,
+ 7931, 8405, 6487, 9363, 4212,
+ 7931, 8405, 6487, 10275, 4212,
+ 7931, 8405, 6636,
+ 7931, 8405, 6637, 6789, 4212,
+ 7931, 8405, 6637, 10275, 4212,
+ 7931, 8405, 6771, 3052,
+ 7931, 8405, 6771, 3053, 6121, 2779, 4113, 6376,
+ 7931, 8405, 6771, 3053, 6121, 7695, 4113, 6376,
+ 7931, 8405, 6771, 3053, 6121, 10173, 12403, 6689, 2779, 6376,
+ 7931, 8405, 6771, 3053, 6121, 10173, 12403, 6689, 4215, 6490,
+ 7931, 8405, 6771, 3053, 6121, 10173, 12403, 6689, 7695, 6376,
+ 7931, 8405, 6771, 3053, 6121, 10267, 42,
+ 7931, 8405, 6771, 3053, 6789, 4212,
+ 7931, 8405, 6771, 3053, 8461, 4212,
+ 7931, 8405, 6771, 3053, 9363, 4212,
+ 7931, 8405, 6771, 3053, 10275, 4212,
+ 7931, 8405, 6850,
+ 7931, 8405, 6851, 6121, 1045, 6490,
+ 7931, 8405, 6851, 6789, 4212,
+ 7931, 8405, 6851, 8461, 4212,
+ 7931, 8405, 6851, 9363, 4212,
+ 7931, 8405, 6851, 10275, 4212,
+ 7931, 8405, 6894,
+ 7931, 8405, 6895, 10275, 4212,
+ 7931, 8405, 7036,
+ 7931, 8405, 7037, 6121, 1045, 6376,
+ 7931, 8405, 7037, 6121, 2779, 4113, 6376,
+ 7931, 8405, 7037, 6121, 7695, 4113, 6376,
+ 7931, 8405, 7037, 6121, 7695, 4113, 6490,
+ 7931, 8405, 7037, 6121, 7695, 4113, 10441, 9811, 6490,
+ 7931, 8405, 7037, 6789, 4212,
+ 7931, 8405, 7037, 8461, 4212,
+ 7931, 8405, 7037, 9363, 4212,
+ 7931, 8405, 7037, 10275, 4212,
+ 7931, 8405, 7238,
+ 7931, 8405, 7239, 6789, 4212,
+ 7931, 8405, 7239, 8461, 4212,
+ 7931, 8405, 7239, 9363, 4212,
+ 7931, 8405, 7239, 10275, 4212,
+ 7931, 8405, 7354,
+ 7931, 8405, 7355, 6789, 4212,
+ 7931, 8405, 7355, 8461, 4212,
+ 7931, 8405, 7355, 9363, 4212,
+ 7931, 8405, 7355, 10275, 4212,
+ 7931, 8405, 7448,
+ 7931, 8405, 7449, 6789, 4212,
+ 7931, 8405, 7449, 8461, 4212,
+ 7931, 8405, 7449, 9363, 4212,
+ 7931, 8405, 7449, 10275, 4212,
+ 7931, 8405, 7524,
+ 7931, 8405, 7525, 6121, 1045, 6490,
+ 7931, 8405, 7525, 6789, 4212,
+ 7931, 8405, 7525, 8461, 4212,
+ 7931, 8405, 7525, 9363, 4212,
+ 7931, 8405, 7525, 10275, 4212,
+ 7931, 8405, 7653, 1578,
+ 7931, 8405, 7668,
+ 7931, 8405, 7669, 6121, 1045, 6376,
+ 7931, 8405, 7669, 6789, 4212,
+ 7931, 8405, 7669, 8461, 4212,
+ 7931, 8405, 7669, 9363, 4212,
+ 7931, 8405, 7669, 10275, 4212,
+ 7931, 8405, 7672,
+ 7931, 8405, 7673, 6789, 4212,
+ 7931, 8405, 7673, 8461, 4212,
+ 7931, 8405, 7673, 9363, 4212,
+ 7931, 8405, 7673, 10275, 4212,
+ 7931, 8405, 8098,
+ 7931, 8405, 8099, 6789, 4212,
+ 7931, 8405, 8099, 10275, 4212,
+ 7931, 8405, 8860,
+ 7931, 8405, 8861, 6789, 4212,
+ 7931, 8405, 8861, 8461, 4212,
+ 7931, 8405, 8861, 9363, 4212,
+ 7931, 8405, 8861, 10275, 4212,
+ 7931, 8405, 8895, 8345, 9405, 3245, 9449, 8461, 4212,
+ 7931, 8405, 8895, 8345, 9405, 3245, 9449, 9363, 4212,
+ 7931, 8405, 9185, 780,
+ 7931, 8405, 9185, 1152,
+ 7931, 8405, 9185, 2284,
+ 7931, 8405, 9405, 426,
+ 7931, 8405, 9405, 427, 6789, 4212,
+ 7931, 8405, 9405, 427, 10275, 4212,
+ 7931, 8405, 9405, 664,
+ 7931, 8405, 9405, 665, 6789, 4212,
+ 7931, 8405, 9405, 665, 10275, 4212,
+ 7931, 8405, 9770,
+ 7931, 8405, 9771, 6789, 4212,
+ 7931, 8405, 9771, 8461, 4212,
+ 7931, 8405, 9771, 9363, 4212,
+ 7931, 8405, 9771, 10275, 4212,
+ 7931, 8405, 12355, 3244,
+ 7931, 8435, 6376,
+ 7931, 8525, 5758,
+ 7931, 8601, 7793, 5758,
+ 7931, 8692,
+ 7931, 8693, 8461, 4212,
+ 7931, 8693, 10275, 4212,
+ 7931, 8849, 1045, 12133, 4926,
+ 7931, 9151, 11228,
+ 7931, 9581, 5758,
+ 7931, 9645, 4423, 5837, 6121, 8205, 8036,
+ 7931, 9766,
+ 7931, 9767, 6121, 10175, 6376,
+ 7931, 9978,
+ 7931, 9979, 10275, 4212,
+ 7931, 10174,
+ 7931, 10175, 10275, 4212,
+ 7931, 10199, 8450,
+ 7931, 10267, 6644,
+ 7931, 10280,
+ 7931, 10281, 10275, 4212,
+ 7931, 10301, 711, 6121, 3053, 6789, 4212,
+ 7931, 10301, 711, 6121, 3053, 10275, 4212,
+ 7931, 10301, 711, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 711, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 711, 6121, 4631, 6121, 4943, 6789, 4212,
+ 7931, 10301, 711, 6121, 4631, 6121, 4943, 9363, 4212,
+ 7931, 10301, 711, 6121, 4631, 9363, 4212,
+ 7931, 10301, 711, 6121, 4631, 10275, 4212,
+ 7931, 10301, 711, 6121, 4943, 6121, 3053, 6789, 4212,
+ 7931, 10301, 711, 6121, 4943, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 711, 6121, 4943, 6121, 4943, 6789, 4212,
+ 7931, 10301, 711, 6121, 4943, 6121, 4943, 9363, 4212,
+ 7931, 10301, 711, 6121, 4943, 9363, 4212,
+ 7931, 10301, 711, 6121, 4943, 10275, 4212,
+ 7931, 10301, 781, 6121, 1343, 6121, 3053, 6789, 4212,
+ 7931, 10301, 781, 6121, 1343, 9363, 4212,
+ 7931, 10301, 781, 6121, 1343, 10275, 4212,
+ 7931, 10301, 781, 6121, 1359, 8461, 4212,
+ 7931, 10301, 781, 6121, 1359, 9363, 4212,
+ 7931, 10301, 781, 6121, 2405, 6789, 4212,
+ 7931, 10301, 781, 6121, 3053, 6789, 4212,
+ 7931, 10301, 781, 6121, 3053, 10275, 4212,
+ 7931, 10301, 781, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 781, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 781, 6121, 4631, 9363, 4212,
+ 7931, 10301, 781, 6121, 4631, 10275, 4212,
+ 7931, 10301, 781, 6121, 4737, 6121, 3053, 6789, 4212,
+ 7931, 10301, 781, 6121, 4737, 9363, 4212,
+ 7931, 10301, 781, 6121, 4737, 10275, 4212,
+ 7931, 10301, 781, 6121, 4943, 6789, 4212,
+ 7931, 10301, 781, 6121, 4943, 8461, 4212,
+ 7931, 10301, 781, 6121, 4943, 9363, 4212,
+ 7931, 10301, 781, 6121, 4943, 10275, 4212,
+ 7931, 10301, 781, 6121, 5241, 6789, 4212,
+ 7931, 10301, 781, 6121, 6255, 6789, 4212,
+ 7931, 10301, 957, 6121, 1343, 6121, 3053, 6789, 4212,
+ 7931, 10301, 957, 6121, 1343, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 957, 6121, 1343, 9363, 4212,
+ 7931, 10301, 957, 6121, 1343, 10275, 4212,
+ 7931, 10301, 957, 6121, 2405, 6789, 4212,
+ 7931, 10301, 957, 6121, 2405, 10275, 4212,
+ 7931, 10301, 957, 6121, 3053, 6789, 4212,
+ 7931, 10301, 957, 6121, 3053, 10275, 4212,
+ 7931, 10301, 957, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 957, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 957, 6121, 4631, 9363, 4212,
+ 7931, 10301, 957, 6121, 4631, 10275, 4212,
+ 7931, 10301, 957, 6121, 4737, 6121, 4943, 6789, 4212,
+ 7931, 10301, 957, 6121, 4737, 6121, 4943, 9363, 4212,
+ 7931, 10301, 957, 6121, 4737, 9363, 4212,
+ 7931, 10301, 957, 6121, 4737, 10275, 4212,
+ 7931, 10301, 957, 6121, 4943, 9363, 4212,
+ 7931, 10301, 957, 6121, 4943, 10275, 4212,
+ 7931, 10301, 1153, 6121, 1343, 9363, 4212,
+ 7931, 10301, 1153, 6121, 1343, 10275, 4212,
+ 7931, 10301, 1153, 6121, 3053, 6789, 4212,
+ 7931, 10301, 1153, 6121, 3053, 10275, 4212,
+ 7931, 10301, 1153, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 1153, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 1153, 6121, 4631, 9363, 4212,
+ 7931, 10301, 1153, 6121, 4631, 10275, 4212,
+ 7931, 10301, 1153, 6121, 4737, 6121, 4943, 6789, 4212,
+ 7931, 10301, 1153, 6121, 4737, 6121, 4943, 9363, 4212,
+ 7931, 10301, 1153, 6121, 4737, 9363, 4212,
+ 7931, 10301, 1153, 6121, 4737, 10275, 4212,
+ 7931, 10301, 1153, 6121, 4943, 6121, 3053, 6789, 4212,
+ 7931, 10301, 1153, 6121, 4943, 9363, 4212,
+ 7931, 10301, 1153, 6121, 4943, 10275, 4212,
+ 7931, 10301, 1343, 6121, 3053, 6789, 4212,
+ 7931, 10301, 1343, 6121, 3053, 10275, 4212,
+ 7931, 10301, 1343, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 1343, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 1343, 6121, 4631, 6121, 3053, 6789, 4212,
+ 7931, 10301, 1343, 6121, 4631, 9363, 4212,
+ 7931, 10301, 1343, 6121, 4631, 10275, 4212,
+ 7931, 10301, 1343, 6121, 4943, 6121, 3053, 6789, 4212,
+ 7931, 10301, 1343, 6121, 4943, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 1343, 6121, 4943, 9363, 4212,
+ 7931, 10301, 1343, 6121, 4943, 10275, 4212,
+ 7931, 10301, 1359, 6121, 3053, 10275, 4212,
+ 7931, 10301, 1359, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 1359, 6121, 4631, 9363, 4212,
+ 7931, 10301, 1359, 6121, 4631, 10275, 4212,
+ 7931, 10301, 1359, 6121, 4943, 6121, 4631, 9363, 4212,
+ 7931, 10301, 1359, 6121, 4943, 6121, 4943, 9363, 4212,
+ 7931, 10301, 1359, 6121, 4943, 9363, 4212,
+ 7931, 10301, 1359, 6121, 4943, 10275, 4212,
+ 7931, 10301, 1359, 6121, 12355, 3245, 9363, 4212,
+ 7931, 10301, 1579, 6121, 1343, 9363, 4212,
+ 7931, 10301, 1579, 6121, 1343, 10275, 4212,
+ 7931, 10301, 1579, 6121, 1739, 6789, 4212,
+ 7931, 10301, 1579, 6121, 1739, 8461, 4212,
+ 7931, 10301, 1579, 6121, 1739, 9363, 4212,
+ 7931, 10301, 1579, 6121, 1739, 10275, 4212,
+ 7931, 10301, 1579, 6121, 3053, 6789, 4212,
+ 7931, 10301, 1579, 6121, 3053, 10275, 4212,
+ 7931, 10301, 1579, 6121, 3245, 6789, 4212,
+ 7931, 10301, 1579, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 1579, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 1579, 6121, 3245, 10275, 4212,
+ 7931, 10301, 1579, 6121, 4631, 9363, 4212,
+ 7931, 10301, 1579, 6121, 4631, 10275, 4212,
+ 7931, 10301, 1579, 6121, 4737, 9363, 4212,
+ 7931, 10301, 1579, 6121, 4737, 10275, 4212,
+ 7931, 10301, 1579, 6121, 4943, 6121, 3053, 6789, 4212,
+ 7931, 10301, 1579, 6121, 4943, 6121, 4943, 6789, 4212,
+ 7931, 10301, 1579, 6121, 4943, 6121, 4943, 9363, 4212,
+ 7931, 10301, 1579, 6121, 4943, 6789, 4212,
+ 7931, 10301, 1579, 6121, 4943, 8461, 4212,
+ 7931, 10301, 1579, 6121, 4943, 9363, 4212,
+ 7931, 10301, 1579, 6121, 4943, 10275, 4212,
+ 7931, 10301, 1739, 6121, 1343, 6121, 3053, 6789, 4212,
+ 7931, 10301, 1739, 6121, 1343, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 1739, 6121, 1343, 6121, 4943, 6789, 4212,
+ 7931, 10301, 1739, 6121, 1343, 6121, 4943, 9363, 4212,
+ 7931, 10301, 1739, 6121, 1343, 9363, 4212,
+ 7931, 10301, 1739, 6121, 1343, 10275, 4212,
+ 7931, 10301, 1739, 6121, 1359, 9363, 4212,
+ 7931, 10301, 1739, 6121, 3053, 6789, 4212,
+ 7931, 10301, 1739, 6121, 3053, 10275, 4212,
+ 7931, 10301, 1739, 6121, 3245, 6121, 6895, 6377, 6789, 4212,
+ 7931, 10301, 1739, 6121, 3245, 6121, 6895, 6377, 10275, 4212,
+ 7931, 10301, 1739, 6121, 3245, 6121, 6895, 6491, 6789, 4212,
+ 7931, 10301, 1739, 6121, 3245, 6121, 6895, 6491, 10275, 4212,
+ 7931, 10301, 1739, 6121, 3245, 6121, 7125, 6377, 6789, 4212,
+ 7931, 10301, 1739, 6121, 3245, 6121, 7125, 6377, 10275, 4212,
+ 7931, 10301, 1739, 6121, 3245, 6789, 4212,
+ 7931, 10301, 1739, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 1739, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 1739, 6121, 3245, 10275, 4212,
+ 7931, 10301, 1739, 6121, 4631, 6121, 3053, 6789, 4212,
+ 7931, 10301, 1739, 6121, 4631, 6121, 4631, 6789, 4212,
+ 7931, 10301, 1739, 6121, 4631, 6121, 4631, 9363, 4212,
+ 7931, 10301, 1739, 6121, 4631, 6121, 4943, 6789, 4212,
+ 7931, 10301, 1739, 6121, 4631, 6121, 4943, 9363, 4212,
+ 7931, 10301, 1739, 6121, 4631, 9363, 4212,
+ 7931, 10301, 1739, 6121, 4631, 10275, 4212,
+ 7931, 10301, 1739, 6121, 4737, 6121, 4943, 6789, 4212,
+ 7931, 10301, 1739, 6121, 4737, 6121, 4943, 9363, 4212,
+ 7931, 10301, 1739, 6121, 4737, 9363, 4212,
+ 7931, 10301, 1739, 6121, 4737, 10275, 4212,
+ 7931, 10301, 1739, 6121, 4943, 6121, 1343, 6789, 4212,
+ 7931, 10301, 1739, 6121, 4943, 6121, 1343, 9363, 4212,
+ 7931, 10301, 1739, 6121, 4943, 6121, 3053, 6789, 4212,
+ 7931, 10301, 1739, 6121, 4943, 6789, 4212,
+ 7931, 10301, 1739, 6121, 4943, 8461, 4212,
+ 7931, 10301, 1739, 6121, 4943, 9363, 4212,
+ 7931, 10301, 1739, 6121, 4943, 10275, 4212,
+ 7931, 10301, 2285, 6121, 1343, 9363, 4212,
+ 7931, 10301, 2285, 6121, 1343, 10275, 4212,
+ 7931, 10301, 2285, 6121, 3053, 6789, 4212,
+ 7931, 10301, 2285, 6121, 3053, 10275, 4212,
+ 7931, 10301, 2285, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 2285, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 2285, 6121, 4943, 6121, 1343, 6789, 4212,
+ 7931, 10301, 2285, 6121, 4943, 6121, 1343, 9363, 4212,
+ 7931, 10301, 2285, 6121, 4943, 6121, 3053, 6789, 4212,
+ 7931, 10301, 2285, 6121, 4943, 6121, 4943, 6789, 4212,
+ 7931, 10301, 2285, 6121, 4943, 9363, 4212,
+ 7931, 10301, 2285, 6121, 4943, 10275, 4212,
+ 7931, 10301, 2405, 6121, 12355, 3245, 10275, 4212,
+ 7931, 10301, 2485, 6121, 1343, 6121, 1343, 6789, 4212,
+ 7931, 10301, 2485, 6121, 1343, 6121, 1343, 9363, 4212,
+ 7931, 10301, 2485, 6121, 1343, 6121, 3053, 6789, 4212,
+ 7931, 10301, 2485, 6121, 1343, 9363, 4212,
+ 7931, 10301, 2485, 6121, 1343, 10275, 4212,
+ 7931, 10301, 2485, 6121, 2405, 6789, 4212,
+ 7931, 10301, 2485, 6121, 2405, 10275, 4212,
+ 7931, 10301, 2485, 6121, 3053, 6789, 4212,
+ 7931, 10301, 2485, 6121, 3053, 10275, 4212,
+ 7931, 10301, 2485, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 2485, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 2485, 6121, 4737, 9363, 4212,
+ 7931, 10301, 2485, 6121, 4943, 6121, 4943, 6789, 4212,
+ 7931, 10301, 2485, 6121, 4943, 6121, 4943, 9363, 4212,
+ 7931, 10301, 2485, 6121, 4943, 9363, 4212,
+ 7931, 10301, 2485, 6121, 4943, 10275, 4212,
+ 7931, 10301, 2641, 6121, 1343, 9363, 4212,
+ 7931, 10301, 2641, 6121, 1343, 10275, 4212,
+ 7931, 10301, 2641, 6121, 3053, 6789, 4212,
+ 7931, 10301, 2641, 6121, 3053, 10275, 4212,
+ 7931, 10301, 2641, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 2641, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 2641, 6121, 4943, 6121, 1343, 6789, 4212,
+ 7931, 10301, 2641, 6121, 4943, 6121, 1343, 9363, 4212,
+ 7931, 10301, 2641, 6121, 4943, 6121, 3053, 6789, 4212,
+ 7931, 10301, 2641, 6121, 4943, 6121, 4943, 9363, 4212,
+ 7931, 10301, 2641, 6121, 4943, 8461, 4212,
+ 7931, 10301, 2641, 6121, 4943, 9363, 4212,
+ 7931, 10301, 2641, 6121, 4943, 10275, 4212,
+ 7931, 10301, 2669, 6121, 1343, 6121, 4631, 6789, 4212,
+ 7931, 10301, 2669, 6121, 1343, 6121, 4631, 9363, 4212,
+ 7931, 10301, 2669, 6121, 1343, 6121, 4943, 9363, 4212,
+ 7931, 10301, 2669, 6121, 1343, 9363, 4212,
+ 7931, 10301, 2669, 6121, 1343, 10275, 4212,
+ 7931, 10301, 2669, 6121, 1359, 8461, 4212,
+ 7931, 10301, 2669, 6121, 1359, 9363, 4212,
+ 7931, 10301, 2669, 6121, 2405, 6789, 4212,
+ 7931, 10301, 2669, 6121, 3053, 6789, 4212,
+ 7931, 10301, 2669, 6121, 3053, 10275, 4212,
+ 7931, 10301, 2669, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 2669, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 2669, 6121, 4631, 6121, 3053, 6789, 4212,
+ 7931, 10301, 2669, 6121, 4631, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 2669, 6121, 4631, 6121, 4943, 9363, 4212,
+ 7931, 10301, 2669, 6121, 4631, 9363, 4212,
+ 7931, 10301, 2669, 6121, 4631, 10275, 4212,
+ 7931, 10301, 2669, 6121, 4737, 6121, 3053, 6789, 4212,
+ 7931, 10301, 2669, 6121, 4737, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 2669, 6121, 4737, 6121, 4943, 9363, 4212,
+ 7931, 10301, 2669, 6121, 4737, 9363, 4212,
+ 7931, 10301, 2669, 6121, 4737, 10275, 4212,
+ 7931, 10301, 2669, 6121, 4943, 6121, 1343, 9363, 4212,
+ 7931, 10301, 2669, 6121, 4943, 6121, 3053, 6789, 4212,
+ 7931, 10301, 2669, 6121, 4943, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 2669, 6121, 4943, 6121, 4631, 9363, 4212,
+ 7931, 10301, 2669, 6121, 4943, 6121, 4737, 9363, 4212,
+ 7931, 10301, 2669, 6121, 4943, 6789, 4212,
+ 7931, 10301, 2669, 6121, 4943, 8461, 4212,
+ 7931, 10301, 2669, 6121, 4943, 9363, 4212,
+ 7931, 10301, 2669, 6121, 4943, 10275, 4212,
+ 7931, 10301, 2669, 6121, 5241, 6789, 4212,
+ 7931, 10301, 2669, 6121, 6255, 6789, 4212,
+ 7931, 10301, 3053, 6121, 1343, 6121, 3053, 6789, 4212,
+ 7931, 10301, 3053, 6121, 1343, 9363, 4212,
+ 7931, 10301, 3053, 6121, 1343, 10275, 4212,
+ 7931, 10301, 3053, 6121, 1359, 8461, 4212,
+ 7931, 10301, 3053, 6121, 1359, 9363, 4212,
+ 7931, 10301, 3053, 6121, 2405, 6789, 4212,
+ 7931, 10301, 3053, 6121, 3053, 6789, 4212,
+ 7931, 10301, 3053, 6121, 3053, 10275, 4212,
+ 7931, 10301, 3053, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 3053, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 3053, 6121, 4631, 6121, 3053, 6789, 4212,
+ 7931, 10301, 3053, 6121, 4631, 9363, 4212,
+ 7931, 10301, 3053, 6121, 4631, 10275, 4212,
+ 7931, 10301, 3053, 6121, 4737, 9363, 4212,
+ 7931, 10301, 3053, 6121, 4737, 10275, 4212,
+ 7931, 10301, 3053, 6121, 4943, 6121, 3053, 6789, 4212,
+ 7931, 10301, 3053, 6121, 4943, 6121, 4943, 6789, 4212,
+ 7931, 10301, 3053, 6121, 4943, 6121, 4943, 9363, 4212,
+ 7931, 10301, 3053, 6121, 4943, 6789, 4212,
+ 7931, 10301, 3053, 6121, 4943, 8461, 4212,
+ 7931, 10301, 3053, 6121, 4943, 9363, 4212,
+ 7931, 10301, 3053, 6121, 4943, 10275, 4212,
+ 7931, 10301, 3053, 6121, 5241, 6789, 4212,
+ 7931, 10301, 3053, 6121, 6255, 6789, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 9, 6789, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 9, 9363, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 9, 10275, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 41, 6789, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 41, 10275, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 67, 6789, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 67, 10275, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 427, 6789, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 427, 10275, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 665, 6789, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 665, 10275, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 1343, 9363, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 1343, 10275, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 1359, 8461, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 1359, 9363, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 2405, 6789, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 2919, 6789, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 2919, 10275, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 3053, 6789, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 3053, 10275, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 3245, 6789, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 3245, 10275, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 4631, 9363, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 4631, 10275, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 4737, 9363, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 4943, 6789, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 4943, 8461, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 4943, 9363, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 4943, 10275, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 5241, 6789, 4212,
+ 7931, 10301, 3053, 6121, 6895, 6377, 6121, 6255, 6789, 4212,
+ 7931, 10301, 3125, 6121, 4943, 8461, 4212,
+ 7931, 10301, 3125, 6121, 4943, 9363, 4212,
+ 7931, 10301, 3125, 6121, 4943, 10275, 4212,
+ 7931, 10301, 3245, 6121, 10175, 6789, 4212,
+ 7931, 10301, 3245, 6121, 10175, 10275, 4212,
+ 7931, 10301, 3245, 9449, 6121, 12355, 3245, 6789, 4212,
+ 7931, 10301, 3245, 9449, 6121, 12355, 3245, 10275, 4212,
+ 7931, 10301, 4631, 6121, 1343, 6121, 3053, 6789, 4212,
+ 7931, 10301, 4631, 6121, 1343, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 4631, 6121, 1343, 9363, 4212,
+ 7931, 10301, 4631, 6121, 1343, 10275, 4212,
+ 7931, 10301, 4631, 6121, 3053, 6789, 4212,
+ 7931, 10301, 4631, 6121, 3053, 10275, 4212,
+ 7931, 10301, 4631, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 4631, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 4631, 6121, 4943, 6121, 1343, 6789, 4212,
+ 7931, 10301, 4631, 6121, 4943, 6121, 1343, 9363, 4212,
+ 7931, 10301, 4631, 6121, 4943, 6121, 3053, 6789, 4212,
+ 7931, 10301, 4631, 6121, 4943, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 4631, 6121, 4943, 9363, 4212,
+ 7931, 10301, 4631, 6121, 4943, 10275, 4212,
+ 7931, 10301, 4737, 6121, 1343, 10275, 4212,
+ 7931, 10301, 4737, 6121, 3053, 6789, 4212,
+ 7931, 10301, 4737, 6121, 3053, 10275, 4212,
+ 7931, 10301, 4737, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 4737, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 4737, 6121, 4631, 9363, 4212,
+ 7931, 10301, 4737, 6121, 4631, 10275, 4212,
+ 7931, 10301, 4737, 6121, 4943, 9363, 4212,
+ 7931, 10301, 4737, 6121, 4943, 10275, 4212,
+ 7931, 10301, 4943, 6121, 1343, 6121, 3053, 6789, 4212,
+ 7931, 10301, 4943, 6121, 1343, 6121, 4631, 9363, 4212,
+ 7931, 10301, 4943, 6121, 1343, 6121, 4943, 9363, 4212,
+ 7931, 10301, 4943, 6121, 1343, 9363, 4212,
+ 7931, 10301, 4943, 6121, 1343, 10275, 4212,
+ 7931, 10301, 4943, 6121, 3053, 10275, 4212,
+ 7931, 10301, 4943, 6121, 3245, 6789, 4212,
+ 7931, 10301, 4943, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 4943, 6121, 4631, 6121, 1343, 9363, 4212,
+ 7931, 10301, 4943, 6121, 4631, 6121, 3053, 6789, 4212,
+ 7931, 10301, 4943, 6121, 4631, 6121, 4737, 9363, 4212,
+ 7931, 10301, 4943, 6121, 4631, 6121, 4943, 9363, 4212,
+ 7931, 10301, 4943, 6121, 4631, 9363, 4212,
+ 7931, 10301, 4943, 6121, 4631, 10275, 4212,
+ 7931, 10301, 4943, 6121, 4737, 6121, 3053, 6789, 4212,
+ 7931, 10301, 4943, 6121, 4737, 6121, 4631, 9363, 4212,
+ 7931, 10301, 4943, 6121, 4737, 6121, 4943, 9363, 4212,
+ 7931, 10301, 4943, 6121, 4737, 9363, 4212,
+ 7931, 10301, 4943, 6121, 4737, 10275, 4212,
+ 7931, 10301, 4943, 6121, 4943, 6121, 3053, 6789, 4212,
+ 7931, 10301, 4943, 6121, 4943, 6789, 4212,
+ 7931, 10301, 4943, 6121, 4943, 9363, 4212,
+ 7931, 10301, 4943, 6121, 4943, 10275, 4212,
+ 7931, 10301, 5241, 6121, 1343, 6121, 3053, 6789, 4212,
+ 7931, 10301, 5241, 6121, 1343, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 5241, 6121, 1343, 6121, 4943, 9363, 4212,
+ 7931, 10301, 5241, 6121, 1343, 9363, 4212,
+ 7931, 10301, 5241, 6121, 1343, 10275, 4212,
+ 7931, 10301, 5241, 6121, 1359, 8461, 4212,
+ 7931, 10301, 5241, 6121, 1359, 9363, 4212,
+ 7931, 10301, 5241, 6121, 2405, 6789, 4212,
+ 7931, 10301, 5241, 6121, 3053, 6789, 4212,
+ 7931, 10301, 5241, 6121, 3053, 10275, 4212,
+ 7931, 10301, 5241, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 5241, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 5241, 6121, 4631, 6121, 1343, 6789, 4212,
+ 7931, 10301, 5241, 6121, 4631, 6121, 1343, 9363, 4212,
+ 7931, 10301, 5241, 6121, 4631, 6121, 3053, 6789, 4212,
+ 7931, 10301, 5241, 6121, 4631, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 5241, 6121, 4631, 6121, 4943, 6789, 4212,
+ 7931, 10301, 5241, 6121, 4631, 6121, 4943, 9363, 4212,
+ 7931, 10301, 5241, 6121, 4631, 9363, 4212,
+ 7931, 10301, 5241, 6121, 4631, 10275, 4212,
+ 7931, 10301, 5241, 6121, 4737, 9363, 4212,
+ 7931, 10301, 5241, 6121, 4737, 10275, 4212,
+ 7931, 10301, 5241, 6121, 4943, 6121, 3053, 6789, 4212,
+ 7931, 10301, 5241, 6121, 4943, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 5241, 6121, 4943, 6789, 4212,
+ 7931, 10301, 5241, 6121, 4943, 8461, 4212,
+ 7931, 10301, 5241, 6121, 4943, 9363, 4212,
+ 7931, 10301, 5241, 6121, 4943, 10275, 4212,
+ 7931, 10301, 5241, 6121, 5241, 6789, 4212,
+ 7931, 10301, 5241, 6121, 6255, 6789, 4212,
+ 7931, 10301, 5475, 6061, 89, 9411, 5837, 5759, 10275, 4212,
+ 7931, 10301, 5649, 6121, 1343, 6121, 4631, 9363, 4212,
+ 7931, 10301, 5649, 6121, 1343, 8461, 4212,
+ 7931, 10301, 5649, 6121, 1343, 9363, 4212,
+ 7931, 10301, 5649, 6121, 1343, 10275, 4212,
+ 7931, 10301, 5649, 6121, 1359, 8461, 4212,
+ 7931, 10301, 5649, 6121, 1359, 9363, 4212,
+ 7931, 10301, 5649, 6121, 2405, 6789, 4212,
+ 7931, 10301, 5649, 6121, 2405, 10275, 4212,
+ 7931, 10301, 5649, 6121, 3053, 6789, 4212,
+ 7931, 10301, 5649, 6121, 3053, 10275, 4212,
+ 7931, 10301, 5649, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 5649, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 5649, 6121, 4631, 6121, 1343, 9363, 4212,
+ 7931, 10301, 5649, 6121, 4631, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 5649, 6121, 4631, 8461, 4212,
+ 7931, 10301, 5649, 6121, 4631, 9363, 4212,
+ 7931, 10301, 5649, 6121, 4631, 10275, 4212,
+ 7931, 10301, 5649, 6121, 4737, 6121, 3053, 6789, 4212,
+ 7931, 10301, 5649, 6121, 4737, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 5649, 6121, 4737, 8461, 4212,
+ 7931, 10301, 5649, 6121, 4737, 9363, 4212,
+ 7931, 10301, 5649, 6121, 4737, 10275, 4212,
+ 7931, 10301, 5649, 6121, 4943, 6121, 1343, 6789, 4212,
+ 7931, 10301, 5649, 6121, 4943, 6121, 1343, 9363, 4212,
+ 7931, 10301, 5649, 6121, 4943, 6121, 4631, 9363, 4212,
+ 7931, 10301, 5649, 6121, 4943, 6121, 4943, 6789, 4212,
+ 7931, 10301, 5649, 6121, 4943, 6121, 4943, 9363, 4212,
+ 7931, 10301, 5649, 6121, 4943, 8461, 4212,
+ 7931, 10301, 5649, 6121, 4943, 9363, 4212,
+ 7931, 10301, 5649, 6121, 4943, 10275, 4212,
+ 7931, 10301, 5911, 6121, 12355, 3245, 10275, 4212,
+ 7931, 10301, 5917, 6121, 1359, 8461, 4212,
+ 7931, 10301, 5917, 6121, 2405, 6789, 4212,
+ 7931, 10301, 5917, 6121, 3053, 6789, 4212,
+ 7931, 10301, 5917, 6121, 3053, 10275, 4212,
+ 7931, 10301, 5917, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 5917, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 5917, 6121, 4631, 10275, 4212,
+ 7931, 10301, 5917, 6121, 4943, 6789, 4212,
+ 7931, 10301, 5917, 6121, 4943, 8461, 4212,
+ 7931, 10301, 5917, 6121, 4943, 9363, 4212,
+ 7931, 10301, 5917, 6121, 4943, 10275, 4212,
+ 7931, 10301, 5917, 6121, 5241, 6789, 4212,
+ 7931, 10301, 5917, 6121, 6255, 6789, 4212,
+ 7931, 10301, 6393, 10275, 4212,
+ 7931, 10301, 6405, 10275, 4212,
+ 7931, 10301, 6851, 6121, 3053, 6789, 4212,
+ 7931, 10301, 6851, 6121, 3053, 10275, 4212,
+ 7931, 10301, 6851, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 6851, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 6851, 6121, 4631, 9363, 4212,
+ 7931, 10301, 6851, 6121, 4631, 10275, 4212,
+ 7931, 10301, 6851, 6121, 4943, 6121, 3053, 6789, 4212,
+ 7931, 10301, 6851, 6121, 4943, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 6851, 6121, 4943, 6121, 4943, 6789, 4212,
+ 7931, 10301, 6851, 6121, 4943, 9363, 4212,
+ 7931, 10301, 6851, 6121, 4943, 10275, 4212,
+ 7931, 10301, 7479, 10275, 4212,
+ 7931, 10301, 7481, 6061, 89, 9411, 5837, 5759, 10275, 4212,
+ 7931, 10301, 7481, 10275, 4212,
+ 7931, 10301, 7525, 6121, 1343, 6121, 3053, 6789, 4212,
+ 7931, 10301, 7525, 6121, 1343, 6121, 4943, 6789, 4212,
+ 7931, 10301, 7525, 6121, 1343, 6121, 4943, 9363, 4212,
+ 7931, 10301, 7525, 6121, 1343, 6789, 4212,
+ 7931, 10301, 7525, 6121, 1343, 8461, 4212,
+ 7931, 10301, 7525, 6121, 1343, 9363, 4212,
+ 7931, 10301, 7525, 6121, 1343, 10275, 4212,
+ 7931, 10301, 7525, 6121, 1359, 8461, 4212,
+ 7931, 10301, 7525, 6121, 1359, 9363, 4212,
+ 7931, 10301, 7525, 6121, 2405, 6789, 4212,
+ 7931, 10301, 7525, 6121, 2405, 10275, 4212,
+ 7931, 10301, 7525, 6121, 3053, 6789, 4212,
+ 7931, 10301, 7525, 6121, 3053, 10275, 4212,
+ 7931, 10301, 7525, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 7525, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 7525, 6121, 4631, 6121, 3053, 6789, 4212,
+ 7931, 10301, 7525, 6121, 4631, 6789, 4212,
+ 7931, 10301, 7525, 6121, 4631, 8461, 4212,
+ 7931, 10301, 7525, 6121, 4631, 9363, 4212,
+ 7931, 10301, 7525, 6121, 4631, 10275, 4212,
+ 7931, 10301, 7525, 6121, 4737, 6789, 4212,
+ 7931, 10301, 7525, 6121, 4737, 8461, 4212,
+ 7931, 10301, 7525, 6121, 4737, 9363, 4212,
+ 7931, 10301, 7525, 6121, 4737, 10275, 4212,
+ 7931, 10301, 7525, 6121, 4943, 6121, 4737, 6789, 4212,
+ 7931, 10301, 7525, 6121, 4943, 6121, 4737, 9363, 4212,
+ 7931, 10301, 7525, 6121, 4943, 6121, 4943, 6789, 4212,
+ 7931, 10301, 7525, 6121, 4943, 6121, 4943, 9363, 4212,
+ 7931, 10301, 7525, 6121, 4943, 6789, 4212,
+ 7931, 10301, 7525, 6121, 4943, 8461, 4212,
+ 7931, 10301, 7525, 6121, 4943, 9363, 4212,
+ 7931, 10301, 7525, 6121, 4943, 10275, 4212,
+ 7931, 10301, 7917, 10275, 4212,
+ 7931, 10301, 8635, 10275, 4212,
+ 7931, 10301, 8693, 6121, 6645, 8461, 4212,
+ 7931, 10301, 8693, 6121, 6645, 10275, 4212,
+ 7931, 10301, 8693, 6121, 6773, 8461, 4212,
+ 7931, 10301, 8693, 6121, 6773, 10275, 4212,
+ 7931, 10301, 8693, 6121, 7027, 8461, 4212,
+ 7931, 10301, 8693, 6121, 7027, 10275, 4212,
+ 7931, 10301, 8693, 6121, 9979, 10275, 4212,
+ 7931, 10301, 8693, 6121, 10281, 10275, 4212,
+ 7931, 10301, 8693, 6121, 12355, 3245, 10275, 4212,
+ 7931, 10301, 8895, 9405, 3053, 6121, 6895, 6377, 6121, 3245, 9449, 6789, 4212,
+ 7931, 10301, 8895, 9405, 3053, 6121, 6895, 6377, 6121, 3245, 9449, 9363, 4212,
+ 7931, 10301, 8895, 9405, 3053, 6121, 6895, 6377, 6121, 3245, 9449, 10275, 4212,
+ 7931, 10301, 10341, 10275, 4212,
+ 7931, 10301, 10683, 10275, 4212,
+ 7931, 10301, 10741, 10715, 10712,
+ 7931, 10301, 12159, 7917, 10682,
+ 7931, 10301, 13202,
+ 7931, 10469, 4926,
+ 7931, 10489, 6644,
+ 7931, 10692,
+ 7931, 11224,
+ 7931, 11261, 3244,
+ 7931, 11363, 11228,
+ 7971, 46,
+ 7971, 826,
+ 7971, 827, 6121, 46,
+ 7971, 827, 6121, 6568,
+ 7985, 8159, 7274,
+ 7985, 11241, 7274,
+ 8005, 731, 12901, 6434,
+ 8005, 4389, 10260,
+ 8005, 4849, 3958,
+ 8005, 4849, 4389, 9050,
+ 8005, 4849, 8076,
+ 8005, 6627, 9050,
+ 8005, 7443, 3958,
+ 8005, 7443, 4389, 9050,
+ 8005, 7443, 8076,
+ 8005, 8745, 9050,
+ 8005, 8745, 9051, 5387, 2725, 8745, 9050,
+ 8005, 10637, 7533, 9050,
+ 8005, 12114,
+ 8006,
+ 8007, 6121, 4849, 4389, 6504,
+ 8007, 6121, 7443, 4389, 6504,
+ 8017, 760,
+ 8017, 8057, 6121, 11141, 6434,
+ 8022,
+ 8023, 10374,
+ 8027, 2638,
+ 8028,
+ 8033, 8405, 0,
+ 8033, 8405, 2,
+ 8033, 8405, 6,
+ 8033, 8405, 8,
+ 8033, 8405, 12,
+ 8033, 8405, 16,
+ 8033, 8405, 20,
+ 8033, 8405, 22,
+ 8033, 8405, 24,
+ 8033, 8405, 26,
+ 8033, 8405, 28,
+ 8033, 8405, 30,
+ 8033, 8405, 32,
+ 8033, 8405, 34,
+ 8033, 8405, 36,
+ 8033, 8405, 38,
+ 8033, 8405, 40,
+ 8033, 8405, 46,
+ 8033, 8405, 54,
+ 8033, 8405, 136,
+ 8033, 8405, 158,
+ 8033, 8405, 214,
+ 8033, 8405, 266,
+ 8033, 8405, 304,
+ 8033, 8405, 334,
+ 8033, 8405, 366,
+ 8033, 8405, 394,
+ 8033, 8405, 400,
+ 8033, 8405, 410,
+ 8033, 8405, 460,
+ 8033, 8405, 518,
+ 8033, 8405, 530,
+ 8033, 8405, 542,
+ 8033, 8405, 544,
+ 8033, 8405, 574,
+ 8033, 8405, 606,
+ 8033, 8405, 1756,
+ 8033, 8405, 1872,
+ 8033, 8405, 1874,
+ 8033, 8405, 1876,
+ 8033, 8405, 2514,
+ 8033, 8405, 2578,
+ 8033, 8405, 2744,
+ 8033, 8405, 2838,
+ 8033, 8405, 3832,
+ 8033, 8405, 3834,
+ 8033, 8405, 6068,
+ 8033, 8405, 6070,
+ 8033, 8405, 6072,
+ 8037, 4877, 8774,
+ 8048,
+ 8057, 6121, 719, 835, 7773, 4849, 10465, 6504,
+ 8057, 6121, 2779, 11649, 9745, 569, 2681, 7442,
+ 8057, 6121, 4849, 4389, 6504,
+ 8057, 6121, 7121, 4389, 6504,
+ 8057, 6121, 7443, 4389, 6504,
+ 8057, 6121, 7593, 8057, 569, 2681, 7442,
+ 8057, 6121, 7773, 4389, 6504,
+ 8057, 6121, 7773, 7443, 10465, 6504,
+ 8057, 6121, 10677, 4192,
+ 8057, 6121, 11649, 760,
+ 8057, 6121, 12879, 46,
+ 8057, 9177, 115, 11649, 761, 721, 2725, 4389, 9177, 115, 10677, 760,
+ 8065, 7769, 6121, 8688,
+ 8065, 7769, 6121, 8689, 721, 7595, 9610,
+ 8065, 8762,
+ 8065, 8763, 445, 6741, 568,
+ 8065, 10578,
+ 8065, 10579, 445, 6741, 568,
+ 8065, 12493, 6121, 8688,
+ 8066,
+ 8075, 2167, 8523, 4223, 5836,
+ 8075, 2167, 8523, 7793, 9178,
+ 8075, 2167, 8523, 8121, 10469, 4926,
+ 8075, 2167, 8523, 10255, 10469, 4926,
+ 8075, 4223, 5836,
+ 8075, 7593, 8405, 28,
+ 8075, 7593, 8405, 202,
+ 8075, 7593, 8405, 374,
+ 8075, 7593, 8405, 404,
+ 8075, 7593, 8405, 476,
+ 8075, 7593, 8405, 516,
+ 8075, 7593, 8405, 582,
+ 8075, 7593, 8405, 986,
+ 8075, 7593, 8405, 1102,
+ 8075, 7593, 8405, 1154,
+ 8075, 7593, 8405, 1616,
+ 8075, 7593, 8405, 1680,
+ 8075, 7593, 8405, 2167, 8075, 236,
+ 8075, 7593, 8405, 2167, 8075, 710,
+ 8075, 7593, 8405, 2167, 8075, 1020,
+ 8075, 7593, 8405, 2167, 8075, 1124,
+ 8075, 7593, 8405, 2167, 8075, 1352,
+ 8075, 7593, 8405, 2167, 8075, 1360,
+ 8075, 7593, 8405, 2167, 8075, 2180,
+ 8075, 7593, 8405, 2167, 8075, 4534,
+ 8075, 7593, 8405, 2167, 8075, 5680,
+ 8075, 7593, 8405, 2167, 8075, 7542,
+ 8075, 7593, 8405, 2167, 8075, 8238,
+ 8075, 7593, 8405, 2167, 8523, 2036,
+ 8075, 7593, 8405, 2167, 8523, 2132,
+ 8075, 7593, 8405, 2167, 8523, 2916,
+ 8075, 7593, 8405, 2167, 8523, 7542,
+ 8075, 7593, 8405, 2180,
+ 8075, 7593, 8405, 2250,
+ 8075, 7593, 8405, 2560,
+ 8075, 7593, 8405, 2658,
+ 8075, 7593, 8405, 3246,
+ 8075, 7593, 8405, 4394,
+ 8075, 7593, 8405, 4534,
+ 8075, 7593, 8405, 4722,
+ 8075, 7593, 8405, 4746,
+ 8075, 7593, 8405, 5680,
+ 8075, 7593, 8405, 5766,
+ 8075, 7593, 8405, 6082,
+ 8075, 7593, 8405, 6258,
+ 8075, 7593, 8405, 6640,
+ 8075, 7593, 8405, 6824,
+ 8075, 7593, 8405, 6976,
+ 8075, 7593, 8405, 7090,
+ 8075, 7593, 8405, 7484,
+ 8075, 7593, 8405, 7542,
+ 8075, 7593, 8405, 8238,
+ 8075, 7593, 8405, 8816,
+ 8075, 7593, 8405, 9127, 5680,
+ 8075, 7593, 8405, 9861, 4746,
+ 8075, 7593, 8405, 10295, 236,
+ 8075, 7593, 8405, 10807, 404,
+ 8075, 7593, 8405, 10807, 3244,
+ 8075, 7593, 8405, 10807, 4534,
+ 8075, 7593, 8405, 10807, 4722,
+ 8075, 7593, 8405, 12921, 404,
+ 8075, 7593, 8405, 12921, 1102,
+ 8075, 8775, 375, 516,
+ 8075, 8775, 477, 516,
+ 8075, 8775, 1582,
+ 8075, 8775, 1617, 516,
+ 8075, 8775, 2659, 516,
+ 8075, 8775, 7543, 5766,
+ 8075, 8775, 9738,
+ 8075, 9063, 8405, 28,
+ 8075, 9063, 8405, 202,
+ 8075, 9063, 8405, 374,
+ 8075, 9063, 8405, 404,
+ 8075, 9063, 8405, 476,
+ 8075, 9063, 8405, 516,
+ 8075, 9063, 8405, 582,
+ 8075, 9063, 8405, 986,
+ 8075, 9063, 8405, 1102,
+ 8075, 9063, 8405, 1154,
+ 8075, 9063, 8405, 1616,
+ 8075, 9063, 8405, 1680,
+ 8075, 9063, 8405, 2167, 8075, 236,
+ 8075, 9063, 8405, 2167, 8075, 710,
+ 8075, 9063, 8405, 2167, 8075, 1020,
+ 8075, 9063, 8405, 2167, 8075, 1124,
+ 8075, 9063, 8405, 2167, 8075, 1352,
+ 8075, 9063, 8405, 2167, 8075, 1360,
+ 8075, 9063, 8405, 2167, 8075, 2180,
+ 8075, 9063, 8405, 2167, 8075, 4534,
+ 8075, 9063, 8405, 2167, 8075, 5680,
+ 8075, 9063, 8405, 2167, 8075, 7542,
+ 8075, 9063, 8405, 2167, 8075, 8238,
+ 8075, 9063, 8405, 2167, 8523, 2036,
+ 8075, 9063, 8405, 2167, 8523, 2132,
+ 8075, 9063, 8405, 2167, 8523, 2916,
+ 8075, 9063, 8405, 2167, 8523, 7542,
+ 8075, 9063, 8405, 2180,
+ 8075, 9063, 8405, 2250,
+ 8075, 9063, 8405, 2560,
+ 8075, 9063, 8405, 2658,
+ 8075, 9063, 8405, 3246,
+ 8075, 9063, 8405, 4394,
+ 8075, 9063, 8405, 4534,
+ 8075, 9063, 8405, 4722,
+ 8075, 9063, 8405, 4746,
+ 8075, 9063, 8405, 5680,
+ 8075, 9063, 8405, 5766,
+ 8075, 9063, 8405, 6082,
+ 8075, 9063, 8405, 6258,
+ 8075, 9063, 8405, 6640,
+ 8075, 9063, 8405, 6824,
+ 8075, 9063, 8405, 6976,
+ 8075, 9063, 8405, 7090,
+ 8075, 9063, 8405, 7484,
+ 8075, 9063, 8405, 7542,
+ 8075, 9063, 8405, 8238,
+ 8075, 9063, 8405, 8816,
+ 8075, 9063, 8405, 9127, 5680,
+ 8075, 9063, 8405, 9861, 4746,
+ 8075, 9063, 8405, 10295, 236,
+ 8075, 9063, 8405, 10807, 404,
+ 8075, 9063, 8405, 10807, 3244,
+ 8075, 9063, 8405, 10807, 4534,
+ 8075, 9063, 8405, 10807, 4722,
+ 8075, 9063, 8405, 12921, 404,
+ 8075, 9063, 8405, 12921, 1102,
+ 8075, 10203, 2171, 4388,
+ 8075, 12977, 9178,
+ 8083, 5833, 11163, 5759, 10380,
+ 8088,
+ 8097, 1809, 4876,
+ 8097, 10388,
+ 8097, 13235, 11765, 6434,
+ 8101, 5758,
+ 8101, 9076,
+ 8101, 11626,
+ 8117, 1177, 6716,
+ 8117, 1177, 6957, 6716,
+ 8117, 1177, 8403, 3070,
+ 8117, 1177, 8403, 6178,
+ 8117, 1177, 9251, 6956,
+ 8117, 1177, 9251, 8290,
+ 8117, 1177, 9315, 3070,
+ 8117, 1177, 9315, 6178,
+ 8117, 1177, 10239, 6716,
+ 8121, 9129, 8775, 4213, 2778,
+ 8129, 5758,
+ 8133, 5941, 10677, 3696,
+ 8133, 5941, 11649, 3696,
+ 8133, 5941, 13086,
+ 8133, 5941, 13088,
+ 8133, 5941, 13090,
+ 8133, 5941, 13092,
+ 8133, 5941, 13094,
+ 8133, 5941, 13096,
+ 8133, 5941, 13098,
+ 8133, 5941, 13100,
+ 8133, 5941, 13102,
+ 8133, 5941, 13104,
+ 8133, 5941, 13106,
+ 8133, 5941, 13108,
+ 8133, 5941, 13110,
+ 8133, 5941, 13112,
+ 8133, 5941, 13114,
+ 8133, 5941, 13116,
+ 8133, 5941, 13118,
+ 8133, 5941, 13120,
+ 8133, 5941, 13122,
+ 8133, 5941, 13124,
+ 8133, 5941, 13126,
+ 8133, 5941, 13128,
+ 8133, 5941, 13130,
+ 8133, 5941, 13132,
+ 8133, 5941, 13134,
+ 8133, 5941, 13136,
+ 8133, 5941, 13138,
+ 8133, 5941, 13140,
+ 8133, 5941, 13142,
+ 8133, 5941, 13144,
+ 8133, 5941, 13146,
+ 8133, 5941, 13148,
+ 8133, 5941, 13150,
+ 8133, 5941, 13152,
+ 8133, 5941, 13154,
+ 8133, 5941, 13156,
+ 8133, 5941, 13158,
+ 8133, 5941, 13160,
+ 8133, 5941, 13162,
+ 8133, 5941, 13164,
+ 8133, 5941, 13166,
+ 8133, 5941, 13168,
+ 8133, 5941, 13170,
+ 8133, 5941, 13172,
+ 8133, 5941, 13174,
+ 8133, 5941, 13176,
+ 8133, 5941, 13178,
+ 8133, 5941, 13180,
+ 8133, 5941, 13182,
+ 8133, 5941, 13240,
+ 8133, 5941, 13242,
+ 8133, 5941, 13244,
+ 8133, 5941, 13246,
+ 8133, 5941, 13248,
+ 8133, 5941, 13250,
+ 8133, 5941, 13252,
+ 8133, 5941, 13254,
+ 8133, 5941, 13256,
+ 8133, 5941, 13258,
+ 8133, 5941, 13260,
+ 8133, 5941, 13262,
+ 8133, 5941, 13264,
+ 8133, 5941, 13266,
+ 8133, 5941, 13268,
+ 8133, 5941, 13270,
+ 8133, 5941, 13272,
+ 8133, 5941, 13274,
+ 8133, 5941, 13276,
+ 8133, 5941, 13278,
+ 8133, 5941, 13280,
+ 8133, 5941, 13282,
+ 8133, 5941, 13284,
+ 8133, 5941, 13286,
+ 8133, 5941, 13288,
+ 8133, 5941, 13290,
+ 8133, 5941, 13292,
+ 8133, 5941, 13294,
+ 8133, 5941, 13296,
+ 8133, 5941, 13298,
+ 8133, 5941, 13300,
+ 8133, 5941, 13302,
+ 8133, 5941, 13304,
+ 8133, 5941, 13306,
+ 8133, 5941, 13308,
+ 8133, 5941, 13310,
+ 8133, 5941, 13312,
+ 8133, 5941, 13314,
+ 8133, 5941, 13316,
+ 8133, 5941, 13318,
+ 8133, 5941, 13320,
+ 8133, 5941, 13322,
+ 8133, 5941, 13324,
+ 8133, 5941, 13326,
+ 8133, 5941, 13328,
+ 8133, 5941, 13330,
+ 8133, 5941, 13332,
+ 8133, 5941, 13334,
+ 8133, 5941, 13336,
+ 8151, 6622,
+ 8151, 6778,
+ 8151, 8056,
+ 8151, 8528,
+ 8151, 8744,
+ 8151, 13029, 8450,
+ 8151, 13067, 6408,
+ 8153, 601, 5876,
+ 8153, 1809, 4876,
+ 8153, 4117, 5876,
+ 8153, 4849, 731, 12473, 9050,
+ 8153, 5444,
+ 8153, 6107, 10388,
+ 8153, 6379, 7908,
+ 8153, 6611, 6740,
+ 8153, 7119, 11195, 4926,
+ 8153, 7390,
+ 8153, 7391, 11195, 4926,
+ 8153, 7443, 731, 11099, 9050,
+ 8153, 7768,
+ 8153, 8088,
+ 8153, 8509, 11098,
+ 8153, 8509, 11099, 6121, 10666,
+ 8153, 8509, 12472,
+ 8153, 8745, 7768,
+ 8153, 8745, 12492,
+ 8153, 8759, 2091, 5758,
+ 8153, 8762,
+ 8153, 9095, 6689, 2170,
+ 8153, 9095, 6689, 2540,
+ 8153, 9095, 6689, 2778,
+ 8153, 9095, 6689, 4200,
+ 8153, 9095, 6689, 4214,
+ 8153, 9095, 6689, 5190,
+ 8153, 9095, 6689, 6722,
+ 8153, 9095, 6689, 7508,
+ 8153, 9095, 6689, 7694,
+ 8153, 9095, 8525, 2670,
+ 8153, 9437, 444,
+ 8153, 9437, 720,
+ 8153, 9525, 8306,
+ 8153, 9719, 10374,
+ 8153, 10260,
+ 8153, 10452,
+ 8153, 10469, 4926,
+ 8153, 10574,
+ 8153, 10578,
+ 8153, 10677, 761, 4849, 11378,
+ 8153, 10677, 761, 8153, 4849, 11378,
+ 8153, 10677, 761, 8153, 7443, 11378,
+ 8153, 10677, 4876,
+ 8153, 12017, 4926,
+ 8153, 12492,
+ 8153, 13201, 11195, 4926,
+ 8159, 5244,
+ 8167, 5758,
+ 8167, 5759, 721, 9705, 10410,
+ 8167, 5759, 721, 9705, 10411, 6121, 7709, 6376,
+ 8167, 5759, 6121, 1045, 6490,
+ 8167, 5759, 6121, 2779, 4113, 6377, 721, 2779, 4113, 6490,
+ 8167, 5759, 6121, 6537, 6376,
+ 8167, 5759, 6377, 5445, 5758,
+ 8167, 5759, 6377, 7709, 10374,
+ 8167, 5759, 6377, 11097, 6434,
+ 8167, 5759, 6377, 11765, 6434,
+ 8167, 6121, 9898,
+ 8167, 6610,
+ 8172,
+ 8197, 5758,
+ 8203, 3992,
+ 8203, 7608,
+ 8209, 5401, 10260,
+ 8225, 6906,
+ 8226,
+ 8227, 12133, 4926,
+ 8228,
+ 8231, 12108,
+ 8233, 5566,
+ 8235, 6809, 5758,
+ 8246,
+ 8255, 7359, 5758,
+ 8263, 7630,
+ 8267, 8405, 1104,
+ 8267, 8405, 1510,
+ 8267, 8405, 3234,
+ 8267, 8405, 3980,
+ 8267, 8405, 4324,
+ 8267, 8405, 4384,
+ 8267, 8405, 4622,
+ 8267, 8405, 5191, 9344,
+ 8267, 8405, 6056,
+ 8267, 8405, 6768,
+ 8267, 8405, 6960,
+ 8267, 8405, 6984,
+ 8267, 8405, 7064,
+ 8267, 8405, 7078,
+ 8267, 8405, 7130,
+ 8267, 8405, 7322,
+ 8267, 8405, 7416,
+ 8267, 8405, 7490,
+ 8267, 8405, 7674,
+ 8267, 8405, 7828,
+ 8267, 8405, 7912,
+ 8267, 8405, 8502,
+ 8267, 8405, 8514,
+ 8267, 8405, 8822,
+ 8267, 8405, 9018,
+ 8267, 8405, 10394,
+ 8267, 8405, 10462,
+ 8285, 721, 5424,
+ 8285, 721, 8712,
+ 8287, 8153, 1045, 5965, 4926,
+ 8287, 8206,
+ 8287, 8405, 0,
+ 8287, 8405, 8,
+ 8287, 8405, 16,
+ 8287, 8405, 28,
+ 8287, 8405, 40,
+ 8287, 8405, 66,
+ 8287, 8405, 178,
+ 8287, 8405, 188,
+ 8287, 8405, 426,
+ 8287, 8405, 622,
+ 8287, 8405, 626,
+ 8287, 8405, 630,
+ 8287, 8405, 652,
+ 8287, 8405, 654,
+ 8287, 8405, 656,
+ 8287, 8405, 660,
+ 8287, 8405, 664,
+ 8287, 8405, 2908,
+ 8287, 8405, 2926,
+ 8287, 8405, 3012,
+ 8287, 8405, 3056,
+ 8287, 8405, 5770,
+ 8287, 8405, 6216,
+ 8287, 8405, 6230,
+ 8287, 8405, 6422,
+ 8287, 8405, 6594,
+ 8287, 8405, 6912,
+ 8287, 8405, 6982,
+ 8287, 8405, 7166,
+ 8287, 8405, 7244,
+ 8287, 8405, 7372,
+ 8287, 8405, 7440,
+ 8287, 8405, 7862,
+ 8287, 8405, 7866,
+ 8287, 8405, 7932,
+ 8287, 8405, 8362,
+ 8287, 8405, 8828,
+ 8287, 8405, 8950,
+ 8287, 8405, 8956,
+ 8287, 8405, 9086,
+ 8287, 8405, 9400,
+ 8287, 8405, 9562,
+ 8287, 8405, 9588,
+ 8287, 8405, 9780,
+ 8287, 8405, 10686,
+ 8287, 8405, 11248,
+ 8287, 8405, 11682,
+ 8287, 8405, 11696,
+ 8287, 8405, 11728,
+ 8287, 8405, 11758,
+ 8287, 8405, 11804,
+ 8287, 8405, 11812,
+ 8287, 8405, 11814,
+ 8287, 8405, 11824,
+ 8287, 8405, 11826,
+ 8287, 8405, 11828,
+ 8287, 8405, 11830,
+ 8287, 8405, 11832,
+ 8287, 8405, 12070,
+ 8287, 8405, 12080,
+ 8287, 8405, 12094,
+ 8287, 8405, 12096,
+ 8287, 8405, 12124,
+ 8287, 8405, 12144,
+ 8287, 8405, 12146,
+ 8287, 8405, 12150,
+ 8287, 8405, 12346,
+ 8287, 8405, 12348,
+ 8287, 8405, 12350,
+ 8287, 8405, 12352,
+ 8287, 8405, 12388,
+ 8287, 8405, 12514,
+ 8287, 8405, 12518,
+ 8287, 8405, 12520,
+ 8287, 8405, 12532,
+ 8287, 8405, 12534,
+ 8287, 8405, 12958,
+ 8287, 8405, 12960,
+ 8287, 8405, 12972,
+ 8287, 8405, 12978,
+ 8287, 8405, 12998,
+ 8287, 8405, 13004,
+ 8287, 8405, 13006,
+ 8287, 8405, 13008,
+ 8287, 8405, 13034,
+ 8287, 8405, 13204,
+ 8287, 8405, 13348,
+ 8287, 8405, 13354,
+ 8287, 8405, 13366,
+ 8287, 8405, 13368,
+ 8287, 8405, 13370,
+ 8287, 8405, 13374,
+ 8287, 8405, 13386,
+ 8287, 8717, 1045, 5965, 4926,
+ 8287, 9945, 5770,
+ 8287, 9945, 6594,
+ 8287, 9945, 6912,
+ 8287, 9945, 6982,
+ 8287, 9945, 7166,
+ 8287, 9945, 7244,
+ 8287, 9945, 7372,
+ 8287, 9945, 7440,
+ 8287, 9945, 8206,
+ 8287, 9945, 8362,
+ 8287, 9945, 8828,
+ 8287, 9945, 9086,
+ 8287, 9945, 9400,
+ 8287, 9945, 9562,
+ 8287, 9945, 9588,
+ 8287, 9945, 9780,
+ 8287, 9945, 10686,
+ 8287, 9945, 11248,
+ 8287, 9945, 11652,
+ 8287, 9945, 11728,
+ 8287, 9945, 11804,
+ 8287, 9945, 11806,
+ 8287, 9945, 11808,
+ 8287, 9945, 11810,
+ 8287, 9945, 11812,
+ 8287, 9945, 11814,
+ 8287, 9945, 11816,
+ 8287, 9945, 11824,
+ 8287, 9945, 11826,
+ 8287, 9945, 11828,
+ 8287, 9945, 11830,
+ 8287, 9945, 11832,
+ 8287, 9945, 11834,
+ 8287, 9945, 11902,
+ 8287, 9945, 12044,
+ 8287, 9945, 12046,
+ 8287, 9945, 12048,
+ 8287, 9945, 12080,
+ 8287, 9945, 12098,
+ 8287, 9945, 12124,
+ 8287, 9945, 12128,
+ 8287, 9945, 12144,
+ 8287, 9945, 12148,
+ 8287, 9945, 12346,
+ 8287, 9945, 12348,
+ 8287, 9945, 12350,
+ 8287, 9945, 12352,
+ 8287, 9945, 12388,
+ 8287, 9945, 12424,
+ 8287, 9945, 12484,
+ 8287, 9945, 12486,
+ 8287, 9945, 12512,
+ 8287, 9945, 12514,
+ 8287, 9945, 12518,
+ 8287, 9945, 12520,
+ 8287, 9945, 12858,
+ 8287, 9945, 12860,
+ 8287, 9945, 12862,
+ 8287, 9945, 12864,
+ 8287, 9945, 12908,
+ 8287, 9945, 12910,
+ 8287, 9945, 12942,
+ 8287, 9945, 12946,
+ 8287, 9945, 12948,
+ 8287, 9945, 12950,
+ 8287, 9945, 12958,
+ 8287, 9945, 12960,
+ 8287, 9945, 12962,
+ 8287, 9945, 12992,
+ 8287, 9945, 12994,
+ 8287, 9945, 12996,
+ 8287, 9945, 12998,
+ 8287, 9945, 13026,
+ 8287, 9945, 13078,
+ 8287, 9945, 13192,
+ 8287, 9945, 13194,
+ 8287, 9945, 13196,
+ 8287, 9945, 13204,
+ 8287, 9945, 13218,
+ 8287, 9945, 13238,
+ 8287, 9945, 13342,
+ 8287, 9945, 13344,
+ 8287, 9945, 13358,
+ 8287, 9945, 13366,
+ 8287, 9945, 13368,
+ 8287, 9945, 13378,
+ 8287, 9945, 13382,
+ 8287, 9945, 13384,
+ 8287, 9945, 13386,
+ 8287, 9945, 13408,
+ 8287, 9945, 13412,
+ 8287, 11071, 5770,
+ 8287, 11071, 6594,
+ 8287, 11071, 6912,
+ 8287, 11071, 6982,
+ 8287, 11071, 7166,
+ 8287, 11071, 7244,
+ 8287, 11071, 7372,
+ 8287, 11071, 7440,
+ 8287, 11071, 8362,
+ 8287, 11071, 8828,
+ 8287, 11071, 9086,
+ 8287, 11071, 9400,
+ 8287, 11071, 9562,
+ 8287, 11071, 9588,
+ 8287, 11071, 9780,
+ 8287, 11071, 10686,
+ 8287, 11071, 11248,
+ 8287, 11071, 11682,
+ 8287, 11071, 11696,
+ 8287, 11071, 11728,
+ 8287, 11071, 11758,
+ 8287, 11071, 11814,
+ 8287, 11071, 11816,
+ 8287, 11071, 11828,
+ 8287, 11071, 11834,
+ 8287, 11071, 12032,
+ 8287, 11071, 12034,
+ 8287, 11071, 12036,
+ 8287, 11071, 12038,
+ 8287, 11071, 12070,
+ 8287, 11071, 12078,
+ 8287, 11071, 12080,
+ 8287, 11071, 12082,
+ 8287, 11071, 12094,
+ 8287, 11071, 12096,
+ 8287, 11071, 12126,
+ 8287, 11071, 12130,
+ 8287, 11071, 12144,
+ 8287, 11071, 12146,
+ 8287, 11071, 12148,
+ 8287, 11071, 12150,
+ 8287, 11071, 12346,
+ 8287, 11071, 12348,
+ 8287, 11071, 12350,
+ 8287, 11071, 12388,
+ 8287, 11071, 12484,
+ 8287, 11071, 12496,
+ 8287, 11071, 12508,
+ 8287, 11071, 12512,
+ 8287, 11071, 12514,
+ 8287, 11071, 12532,
+ 8287, 11071, 12534,
+ 8287, 11071, 12884,
+ 8287, 11071, 12944,
+ 8287, 11071, 12958,
+ 8287, 11071, 12960,
+ 8287, 11071, 12970,
+ 8287, 11071, 12972,
+ 8287, 11071, 12978,
+ 8287, 11071, 12980,
+ 8287, 11071, 12992,
+ 8287, 11071, 12996,
+ 8287, 11071, 13002,
+ 8287, 11071, 13004,
+ 8287, 11071, 13006,
+ 8287, 11071, 13008,
+ 8287, 11071, 13026,
+ 8287, 11071, 13034,
+ 8287, 11071, 13204,
+ 8287, 11071, 13214,
+ 8287, 11071, 13224,
+ 8287, 11071, 13346,
+ 8287, 11071, 13348,
+ 8287, 11071, 13354,
+ 8287, 11071, 13362,
+ 8287, 11071, 13370,
+ 8287, 11071, 13372,
+ 8287, 11071, 13374,
+ 8287, 11071, 13388,
+ 8287, 11071, 13394,
+ 8287, 11071, 13396,
+ 8287, 11071, 13406,
+ 8287, 11073, 0,
+ 8287, 11073, 8,
+ 8287, 11073, 16,
+ 8287, 11073, 28,
+ 8287, 11073, 40,
+ 8287, 11073, 66,
+ 8287, 11073, 178,
+ 8287, 11073, 188,
+ 8287, 11073, 426,
+ 8287, 11073, 622,
+ 8287, 11073, 626,
+ 8287, 11073, 630,
+ 8287, 11073, 652,
+ 8287, 11073, 654,
+ 8287, 11073, 656,
+ 8287, 11073, 660,
+ 8287, 11073, 664,
+ 8287, 11073, 686,
+ 8287, 11073, 688,
+ 8287, 11073, 1466,
+ 8287, 11073, 1468,
+ 8287, 11073, 1470,
+ 8287, 11073, 2148,
+ 8287, 11073, 2150,
+ 8287, 11073, 2152,
+ 8287, 11073, 2800,
+ 8287, 11073, 2802,
+ 8287, 11073, 2908,
+ 8287, 11073, 2926,
+ 8287, 11073, 3012,
+ 8287, 11073, 3056,
+ 8287, 11073, 4160,
+ 8287, 11073, 4162,
+ 8287, 11073, 4168,
+ 8287, 11073, 4592,
+ 8287, 11073, 4594,
+ 8287, 11073, 5370,
+ 8287, 11073, 5372,
+ 8287, 11073, 6040,
+ 8287, 11073, 6042,
+ 8287, 11073, 6158,
+ 8287, 11073, 6204,
+ 8287, 11073, 6216,
+ 8287, 11073, 6218,
+ 8287, 11073, 6226,
+ 8287, 11073, 6228,
+ 8287, 11073, 6230,
+ 8287, 11073, 6232,
+ 8287, 11073, 6422,
+ 8287, 11073, 6736,
+ 8287, 11073, 6760,
+ 8287, 11073, 7838,
+ 8287, 11073, 7850,
+ 8287, 11073, 7852,
+ 8287, 11073, 7862,
+ 8287, 11073, 7864,
+ 8287, 11073, 7866,
+ 8287, 11073, 8206,
+ 8287, 11073, 8950,
+ 8287, 11073, 8952,
+ 8287, 11073, 8956,
+ 8287, 11073, 9002,
+ 8287, 11073, 9004,
+ 8287, 11073, 9346,
+ 8287, 11073, 9800,
+ 8287, 11073, 9882,
+ 8287, 11073, 11822,
+ 8293, 4927, 7121, 1044,
+ 8293, 4927, 7773, 1044,
+ 8293, 4927, 8455, 8056,
+ 8293, 7383, 2535, 1044,
+ 8293, 7383, 5522,
+ 8293, 7383, 5699, 1044,
+ 8293, 7383, 6901, 7342,
+ 8293, 7383, 6901, 7502,
+ 8293, 7383, 6901, 8620,
+ 8293, 7383, 6914,
+ 8293, 7383, 6948,
+ 8293, 7383, 6949, 6899, 1177, 2852,
+ 8293, 7383, 7148,
+ 8293, 7383, 7342,
+ 8293, 7383, 7502,
+ 8293, 7383, 7536,
+ 8293, 7383, 7742,
+ 8293, 7383, 8087, 445, 7132,
+ 8293, 7383, 8620,
+ 8293, 7383, 8621, 7404,
+ 8293, 7383, 8626,
+ 8293, 7383, 12957, 8910,
+ 8293, 7909, 2168,
+ 8293, 7909, 4054,
+ 8293, 7909, 4604,
+ 8293, 7909, 6439, 8280,
+ 8293, 7909, 6652,
+ 8293, 7909, 7192,
+ 8293, 7909, 7346,
+ 8293, 7909, 7402,
+ 8293, 7909, 7432,
+ 8293, 7909, 7502,
+ 8293, 7909, 7676,
+ 8293, 7909, 7855, 785, 6222,
+ 8293, 7909, 7858,
+ 8293, 7909, 7869, 6816,
+ 8293, 7909, 7869, 7404,
+ 8293, 7909, 7870,
+ 8293, 7909, 7886,
+ 8293, 7909, 8252,
+ 8293, 7909, 8253, 8492,
+ 8293, 7909, 8468,
+ 8293, 7909, 8469, 8346,
+ 8293, 7909, 8568,
+ 8293, 7909, 8623, 5398,
+ 8293, 7909, 8830,
+ 8293, 7909, 9272,
+ 8293, 7909, 9773, 8244,
+ 8293, 7909, 9773, 8624,
+ 8293, 7909, 10310,
+ 8293, 7909, 11016,
+ 8293, 7909, 11798,
+ 8293, 8405, 238,
+ 8293, 8405, 239, 6121, 7132,
+ 8293, 8405, 468,
+ 8293, 8405, 469, 6121, 5522,
+ 8293, 8405, 469, 6121, 8086,
+ 8293, 8405, 788,
+ 8293, 8405, 789, 6121, 5522,
+ 8293, 8405, 789, 6121, 8086,
+ 8293, 8405, 1366,
+ 8293, 8405, 1578,
+ 8293, 8405, 1579, 6121, 5522,
+ 8293, 8405, 1579, 6121, 8086,
+ 8293, 8405, 1892,
+ 8293, 8405, 1893, 6121, 8086,
+ 8293, 8405, 2110,
+ 8293, 8405, 2111, 6121, 8086,
+ 8293, 8405, 2318,
+ 8293, 8405, 2319, 6121, 8086,
+ 8293, 8405, 2660,
+ 8293, 8405, 2661, 6121, 8086,
+ 8293, 8405, 2674,
+ 8293, 8405, 2675, 6121, 8086,
+ 8293, 8405, 2852,
+ 8293, 8405, 2853, 6121, 6948,
+ 8293, 8405, 2853, 6121, 8086,
+ 8293, 8405, 3080,
+ 8293, 8405, 3081, 6121, 6914,
+ 8293, 8405, 3081, 6121, 8086,
+ 8293, 8405, 3244,
+ 8293, 8405, 3245, 6121, 7132,
+ 8293, 8405, 3245, 6121, 7342,
+ 8293, 8405, 3245, 6121, 8620,
+ 8293, 8405, 3292,
+ 8293, 8405, 5538,
+ 8293, 8405, 5539, 6121, 8086,
+ 8293, 8405, 5698,
+ 8293, 8405, 5699, 6121, 2535, 1044,
+ 8293, 8405, 5699, 6121, 5699, 1044,
+ 8293, 8405, 5699, 6121, 8086,
+ 8293, 8405, 5699, 6121, 8087, 721, 2535, 1044,
+ 8293, 8405, 5699, 6121, 8087, 721, 5699, 1044,
+ 8293, 8405, 6115, 238,
+ 8293, 8405, 6115, 1578,
+ 8293, 8405, 6115, 2660,
+ 8293, 8405, 6115, 3244,
+ 8293, 8405, 6115, 5538,
+ 8293, 8405, 6115, 6642,
+ 8293, 8405, 6115, 6789, 1892,
+ 8293, 8405, 6115, 7082,
+ 8293, 8405, 6642,
+ 8293, 8405, 6643, 6121, 8086,
+ 8293, 8405, 6789, 468,
+ 8293, 8405, 6789, 469, 6121, 8086,
+ 8293, 8405, 6789, 1578,
+ 8293, 8405, 6789, 1579, 6121, 8086,
+ 8293, 8405, 6789, 1892,
+ 8293, 8405, 6789, 2110,
+ 8293, 8405, 6789, 7740,
+ 8293, 8405, 6856,
+ 8293, 8405, 6857, 6121, 8086,
+ 8293, 8405, 7082,
+ 8293, 8405, 7083, 6121, 8086,
+ 8293, 8405, 7740,
+ 8293, 8405, 7741, 6121, 8086,
+ 8293, 8405, 7872,
+ 8293, 8405, 7873, 6121, 8086,
+ 8293, 8405, 8660,
+ 8293, 8405, 8661, 6121, 8086,
+ 8293, 8405, 11893, 3292,
+ 8293, 8405, 11893, 5445, 5758,
+ 8293, 10301, 3245, 7082,
+ 8293, 10301, 9847, 2853, 3080,
+ 8293, 10301, 9847, 3081, 3081, 7342,
+ 8293, 10301, 9847, 8153, 2852,
+ 8293, 10301, 9847, 8153, 3080,
+ 8293, 12133, 2111, 9318,
+ 8293, 12133, 2551, 7340,
+ 8293, 12133, 7134,
+ 8293, 12133, 7338,
+ 8293, 12133, 8252,
+ 8293, 12133, 11016,
+ 8306,
+ 8307, 6121, 10804,
+ 8307, 8022,
+ 8337, 9617, 151, 2090,
+ 8337, 9617, 228,
+ 8337, 9617, 229, 8722,
+ 8337, 9617, 720,
+ 8337, 9617, 742,
+ 8337, 9617, 806,
+ 8337, 9617, 824,
+ 8337, 9617, 920,
+ 8337, 9617, 1036,
+ 8337, 9617, 1044,
+ 8337, 9617, 1048,
+ 8337, 9617, 1090,
+ 8337, 9617, 1092,
+ 8337, 9617, 1136,
+ 8337, 9617, 1170,
+ 8337, 9617, 1182,
+ 8337, 9617, 1474,
+ 8337, 9617, 1504,
+ 8337, 9617, 1780,
+ 8337, 9617, 1860,
+ 8337, 9617, 2024,
+ 8337, 9617, 2090,
+ 8337, 9617, 2166,
+ 8337, 9617, 2170,
+ 8337, 9617, 2224,
+ 8337, 9617, 2390,
+ 8337, 9617, 2392,
+ 8337, 9617, 2400,
+ 8337, 9617, 2454,
+ 8337, 9617, 2502,
+ 8337, 9617, 2504,
+ 8337, 9617, 2586,
+ 8337, 9617, 2670,
+ 8337, 9617, 2778,
+ 8337, 9617, 2779, 6896,
+ 8337, 9617, 2834,
+ 8337, 9617, 3762,
+ 8337, 9617, 3788,
+ 8337, 9617, 3794,
+ 8337, 9617, 3798,
+ 8337, 9617, 3800,
+ 8337, 9617, 3805, 429, 6604,
+ 8337, 9617, 3806,
+ 8337, 9617, 3850,
+ 8337, 9617, 3852,
+ 8337, 9617, 3940,
+ 8337, 9617, 3942,
+ 8337, 9617, 3944,
+ 8337, 9617, 4052,
+ 8337, 9617, 4094,
+ 8337, 9617, 4108,
+ 8337, 9617, 4117, 826,
+ 8337, 9617, 4120,
+ 8337, 9617, 4172,
+ 8337, 9617, 4178,
+ 8337, 9617, 4180,
+ 8337, 9617, 4194,
+ 8337, 9617, 4196,
+ 8337, 9617, 4208,
+ 8337, 9617, 4218,
+ 8337, 9617, 4244,
+ 8337, 9617, 4342,
+ 8337, 9617, 4386,
+ 8337, 9617, 4389, 5969, 7736,
+ 8337, 9617, 4390,
+ 8337, 9617, 4398,
+ 8337, 9617, 4402,
+ 8337, 9617, 4530,
+ 8337, 9617, 4536,
+ 8337, 9617, 4608,
+ 8337, 9617, 4628,
+ 8337, 9617, 4824,
+ 8337, 9617, 4834,
+ 8337, 9617, 4844,
+ 8337, 9617, 4846,
+ 8337, 9617, 4850,
+ 8337, 9617, 4872,
+ 8337, 9617, 4876,
+ 8337, 9617, 4894,
+ 8337, 9617, 4895, 8756,
+ 8337, 9617, 4940,
+ 8337, 9617, 5012,
+ 8337, 9617, 5242,
+ 8337, 9617, 5385, 826,
+ 8337, 9617, 5438,
+ 8337, 9617, 5524,
+ 8337, 9617, 5546,
+ 8337, 9617, 5562,
+ 8337, 9617, 5632,
+ 8337, 9617, 5646,
+ 8337, 9617, 5650,
+ 8337, 9617, 5764,
+ 8337, 9617, 5772,
+ 8337, 9617, 5834,
+ 8337, 9617, 5836,
+ 8337, 9617, 5884,
+ 8337, 9617, 5940,
+ 8337, 9617, 5968,
+ 8337, 9617, 6100,
+ 8337, 9617, 6101, 10970,
+ 8337, 9617, 6112,
+ 8337, 9617, 6116,
+ 8337, 9617, 6118,
+ 8337, 9617, 6130,
+ 8337, 9617, 6132,
+ 8337, 9617, 6384,
+ 8337, 9617, 6434,
+ 8337, 9617, 6504,
+ 8337, 9617, 6512,
+ 8337, 9617, 6520,
+ 8337, 9617, 6574,
+ 8337, 9617, 6600,
+ 8337, 9617, 6612,
+ 8337, 9617, 6618,
+ 8337, 9617, 6670,
+ 8337, 9617, 6716,
+ 8337, 9617, 6722,
+ 8337, 9617, 6734,
+ 8337, 9617, 6780,
+ 8337, 9617, 6786,
+ 8337, 9617, 6794,
+ 8337, 9617, 6852,
+ 8337, 9617, 6870,
+ 8337, 9617, 6872,
+ 8337, 9617, 6906,
+ 8337, 9617, 6952,
+ 8337, 9617, 7056,
+ 8337, 9617, 7144,
+ 8337, 9617, 7184,
+ 8337, 9617, 7186,
+ 8337, 9617, 7388,
+ 8337, 9617, 7443, 5385, 826,
+ 8337, 9617, 7446,
+ 8337, 9617, 7526,
+ 8337, 9617, 7532,
+ 8337, 9617, 7548,
+ 8337, 9617, 7551, 8785, 3788,
+ 8337, 9617, 7551, 8824,
+ 8337, 9617, 7580,
+ 8337, 9617, 7582,
+ 8337, 9617, 7584,
+ 8337, 9617, 7592,
+ 8337, 9617, 7602,
+ 8337, 9617, 7604,
+ 8337, 9617, 7612,
+ 8337, 9617, 7616,
+ 8337, 9617, 7628,
+ 8337, 9617, 7634,
+ 8337, 9617, 7642,
+ 8337, 9617, 7654,
+ 8337, 9617, 7662,
+ 8337, 9617, 7704,
+ 8337, 9617, 7726,
+ 8337, 9617, 7730,
+ 8337, 9617, 7812,
+ 8337, 9617, 7816,
+ 8337, 9617, 7820,
+ 8337, 9617, 7830,
+ 8337, 9617, 7832,
+ 8337, 9617, 7942,
+ 8337, 9617, 7964,
+ 8337, 9617, 7974,
+ 8337, 9617, 8000,
+ 8337, 9617, 8008,
+ 8337, 9617, 8078,
+ 8337, 9617, 8118,
+ 8337, 9617, 8151, 5896,
+ 8337, 9617, 8151, 6600,
+ 8337, 9617, 8153, 46,
+ 8337, 9617, 8154,
+ 8337, 9617, 8194,
+ 8337, 9617, 8303, 10970,
+ 8337, 9617, 8316,
+ 8337, 9617, 8476,
+ 8337, 9617, 8484,
+ 8337, 9617, 8542,
+ 8337, 9617, 8678,
+ 8337, 9617, 8680,
+ 8337, 9617, 8730,
+ 8337, 9617, 8734,
+ 8337, 9617, 8740,
+ 8337, 9617, 8744,
+ 8337, 9617, 8793, 9426,
+ 8337, 9617, 8844,
+ 8337, 9617, 8852,
+ 8337, 9617, 8866,
+ 8337, 9617, 8870,
+ 8337, 9617, 8906,
+ 8337, 9617, 8928,
+ 8337, 9617, 8946,
+ 8337, 9617, 9056,
+ 8337, 9617, 9102,
+ 8337, 9617, 9106,
+ 8337, 9617, 9274,
+ 8337, 9617, 9282,
+ 8337, 9617, 9322,
+ 8337, 9617, 9426,
+ 8337, 9617, 9480,
+ 8337, 9617, 9532,
+ 8337, 9617, 9608,
+ 8337, 9617, 9658,
+ 8337, 9617, 9822,
+ 8337, 9617, 9934,
+ 8337, 9617, 10206,
+ 8337, 9617, 10336,
+ 8337, 9617, 10344,
+ 8337, 9617, 10456,
+ 8337, 9617, 10520,
+ 8337, 9617, 10542,
+ 8337, 9617, 10970,
+ 8337, 9617, 11488,
+ 8337, 9617, 11606,
+ 8337, 9617, 11946,
+ 8337, 9617, 12155, 6118,
+ 8349, 5758,
+ 8371, 10539, 8774,
+ 8389, 5912,
+ 8389, 5913, 445, 6741, 568,
+ 8401, 5759, 2388,
+ 8401, 5759, 7282,
+ 8401, 6689, 2170,
+ 8401, 6689, 2540,
+ 8401, 6689, 2778,
+ 8401, 6689, 4200,
+ 8401, 6689, 4214,
+ 8401, 6689, 5190,
+ 8401, 6689, 6260,
+ 8401, 6689, 6722,
+ 8401, 6689, 7508,
+ 8401, 6689, 7694,
+ 8401, 7803, 5759, 8,
+ 8401, 7803, 5759, 16,
+ 8401, 7803, 5759, 28,
+ 8401, 7803, 5759, 40,
+ 8401, 7803, 5759, 58,
+ 8401, 7803, 5759, 440,
+ 8401, 7803, 5759, 606,
+ 8401, 8405, 0,
+ 8401, 8405, 100,
+ 8401, 8405, 116,
+ 8401, 8405, 138,
+ 8401, 8405, 196,
+ 8401, 8405, 216,
+ 8401, 8405, 236,
+ 8401, 8405, 292,
+ 8401, 8405, 306,
+ 8401, 8405, 332,
+ 8401, 8405, 364,
+ 8401, 8405, 392,
+ 8401, 8405, 462,
+ 8401, 8405, 510,
+ 8401, 8405, 524,
+ 8401, 8405, 556,
+ 8401, 8405, 610,
+ 8401, 8405, 622,
+ 8401, 8405, 652,
+ 8401, 8405, 814,
+ 8401, 8405, 884,
+ 8401, 8405, 974,
+ 8401, 8405, 1080,
+ 8401, 8405, 1168,
+ 8401, 8405, 1286,
+ 8401, 8405, 1390,
+ 8401, 8405, 1612,
+ 8401, 8405, 1652,
+ 8401, 8405, 1930,
+ 8401, 8405, 2030,
+ 8401, 8405, 2126,
+ 8401, 8405, 2212,
+ 8401, 8405, 2234,
+ 8401, 8405, 2516,
+ 8401, 8405, 2678,
+ 8401, 8405, 2732,
+ 8401, 8405, 2746,
+ 8401, 8405, 5978,
+ 8401, 8405, 5994,
+ 8401, 10775, 5759, 20,
+ 8401, 10775, 5759, 22,
+ 8401, 10775, 5759, 24,
+ 8401, 10775, 5759, 26,
+ 8401, 10775, 5759, 30,
+ 8401, 10775, 5759, 34,
+ 8401, 10775, 5759, 38,
+ 8401, 10775, 5759, 4720,
+ 8401, 10775, 5759, 9522,
+ 8401, 11257, 8405, 510,
+ 8401, 11257, 8405, 652,
+ 8401, 12133, 5301, 8827, 8782,
+ 8401, 12133, 8038,
+ 8401, 12133, 8782,
+ 8401, 12133, 8856,
+ 8401, 12133, 8857, 8038,
+ 8421, 3, 8775, 3328,
+ 8421, 3, 8775, 3330,
+ 8421, 3, 8775, 3336,
+ 8421, 3, 8775, 3360,
+ 8421, 3, 8775, 3384,
+ 8421, 3, 8775, 3388,
+ 8421, 3, 8775, 3402,
+ 8421, 3, 8775, 3416,
+ 8421, 3, 8775, 3418,
+ 8421, 3, 8775, 3448,
+ 8421, 3, 8775, 3454,
+ 8421, 3, 8775, 3456,
+ 8421, 3, 8775, 3460,
+ 8421, 3, 8775, 3464,
+ 8421, 3, 10247, 3471, 1860,
+ 8421, 3, 10247, 3473, 7830,
+ 8421, 3, 10247, 3475, 4052,
+ 8421, 3, 10247, 3477, 6742,
+ 8421, 3, 10247, 3479, 7816,
+ 8421, 3, 10247, 3481, 7978,
+ 8421, 3, 10247, 3483, 7314,
+ 8421, 3, 10247, 3485, 7614,
+ 8421, 3, 10247, 3487, 9134,
+ 8421, 3, 10247, 3493, 2164,
+ 8421, 3, 10247, 3495, 6118,
+ 8421, 3, 10247, 3496,
+ 8421, 3, 10247, 3503, 8018,
+ 8421, 3, 10247, 3505, 4342,
+ 8421, 3, 10247, 3506,
+ 8421, 3, 10247, 3509, 6124,
+ 8421, 3, 10247, 3510,
+ 8421, 3, 10247, 3512,
+ 8421, 3, 10247, 3515, 4536,
+ 8421, 3, 10247, 3516,
+ 8421, 3, 10247, 3518,
+ 8421, 3, 10247, 3520,
+ 8421, 3, 10247, 3526,
+ 8421, 3, 10247, 3528,
+ 8421, 3, 10247, 3531, 6604,
+ 8421, 3, 10247, 3532,
+ 8421, 3, 10247, 3534,
+ 8421, 3, 10247, 3537, 9300,
+ 8421, 3, 10247, 3539, 7936,
+ 8421, 3, 10247, 3540,
+ 8421, 3, 10247, 3542,
+ 8421, 3, 10247, 3544,
+ 8421, 3, 10247, 3546,
+ 8421, 3, 10247, 3548,
+ 8421, 3, 10247, 3550,
+ 8421, 3, 10247, 3552,
+ 8421, 3, 10247, 3554,
+ 8421, 3, 10247, 3556,
+ 8421, 3, 10247, 3559, 7182,
+ 8421, 3, 10247, 3560,
+ 8421, 3, 10247, 3563, 5968,
+ 8421, 3, 10247, 3564,
+ 8421, 3, 10247, 3566,
+ 8421, 3, 10247, 3568,
+ 8421, 3, 10247, 3570,
+ 8421, 3, 10247, 3572,
+ 8421, 3, 10247, 3574,
+ 8421, 3, 10247, 3576,
+ 8421, 3, 10247, 3578,
+ 8421, 3, 10247, 3580,
+ 8421, 3, 10247, 3582,
+ 8421, 3, 10247, 3584,
+ 8421, 3, 10247, 3587, 8296,
+ 8421, 3, 10247, 3629, 11000,
+ 8421, 3, 10247, 3635, 9030,
+ 8421, 3, 10247, 3645, 7612,
+ 8421, 3, 10247, 3647, 6434,
+ 8421, 3, 10247, 3648,
+ 8421, 3, 10247, 3651, 7656,
+ 8421, 3, 10247, 3652,
+ 8421, 3, 10247, 3654,
+ 8421, 3, 10247, 3657, 9841, 9082,
+ 8421, 3, 10247, 3659, 9082,
+ 8421, 3, 10247, 3661, 9083, 6806,
+ 8421, 3, 10247, 3663, 7818,
+ 8421, 3, 10247, 3664,
+ 8421, 3, 10247, 3666,
+ 8421, 3, 10247, 3670,
+ 8421, 3, 10247, 3672,
+ 8421, 3, 10247, 3676,
+ 8421, 3, 10247, 3678,
+ 8421, 3, 10247, 3680,
+ 8421, 3, 10247, 3683, 3990,
+ 8421, 3, 10247, 3684,
+ 8421, 3, 10247, 3686,
+ 8421, 3, 10247, 3688,
+ 8421, 3, 10247, 3690,
+ 8421, 3, 10247, 3692,
+ 8421, 3, 10247, 6445, 4924,
+ 8421, 3, 10247, 6447, 10536,
+ 8421, 3, 10247, 6449, 1132,
+ 8421, 3, 10247, 6451, 2386,
+ 8421, 3, 10247, 6453, 10516,
+ 8421, 3, 10247, 6455, 9332,
+ 8421, 3, 10247, 6457, 2562,
+ 8421, 3, 10247, 6459, 3796,
+ 8421, 3, 10247, 6461, 920,
+ 8421, 3, 10247, 6463, 3812,
+ 8421, 3, 10247, 8915, 3522,
+ 8421, 3, 10247, 8915, 3588,
+ 8421, 3, 10247, 8915, 3590,
+ 8421, 3, 10247, 8915, 3592,
+ 8421, 3, 10247, 8915, 3594,
+ 8421, 3, 10247, 8915, 3596,
+ 8421, 3, 10247, 8915, 3598,
+ 8421, 3, 10247, 8915, 3600,
+ 8421, 3, 10247, 8915, 3602,
+ 8421, 3, 10247, 8915, 3604,
+ 8421, 3, 10247, 8915, 3606,
+ 8421, 3, 10247, 8915, 3608,
+ 8421, 3, 10247, 8915, 3610,
+ 8421, 3, 10247, 8915, 3612,
+ 8421, 3, 10247, 8915, 3614,
+ 8421, 3, 10247, 8915, 3616,
+ 8421, 3, 10247, 8915, 3618,
+ 8421, 3, 10247, 8915, 3620,
+ 8421, 3, 10247, 8915, 3622,
+ 8421, 3, 10247, 8915, 3624,
+ 8421, 3, 10247, 8915, 3626,
+ 8421, 3, 10247, 8915, 3630,
+ 8421, 3, 10247, 8915, 3632,
+ 8421, 3, 10247, 8915, 3636,
+ 8421, 3, 10247, 8915, 3638,
+ 8421, 3, 10247, 8915, 3640,
+ 8421, 3, 10247, 8915, 3642,
+ 8421, 3, 10247, 8915, 3674,
+ 8421, 3, 10247, 8915, 3694,
+ 8421, 3, 10343, 3489, 4726,
+ 8421, 3, 10343, 3491, 8334,
+ 8421, 3, 10343, 3499, 6424,
+ 8421, 3, 10343, 3501, 4948,
+ 8421, 3, 10343, 3525, 7754,
+ 8421, 3, 10343, 3669, 6692,
+ 8421, 3, 10585, 3295, 138,
+ 8421, 3, 10585, 3297, 516,
+ 8421, 3, 10585, 3299, 462,
+ 8421, 3, 10585, 3301, 560,
+ 8421, 3, 10585, 3303, 568,
+ 8421, 3, 10585, 3305, 392,
+ 8421, 3, 10585, 3307, 144,
+ 8421, 3, 10585, 3309, 0,
+ 8421, 3, 10585, 3311, 526,
+ 8421, 3, 10585, 3313, 40,
+ 8421, 3, 10585, 3315, 480,
+ 8421, 3, 10585, 3317, 536,
+ 8421, 3, 10585, 3319, 368,
+ 8421, 3, 10585, 3321, 150,
+ 8421, 3, 10585, 3323, 380,
+ 8421, 3, 10585, 3325, 496,
+ 8421, 3, 10585, 3327, 670,
+ 8421, 3, 10585, 3333, 678,
+ 8421, 3, 10585, 3335, 500,
+ 8421, 3, 10585, 3339, 384,
+ 8421, 3, 10585, 3341, 396,
+ 8421, 3, 10585, 3343, 54,
+ 8421, 3, 10585, 3345, 520,
+ 8421, 3, 10585, 3347, 512,
+ 8421, 3, 10585, 3349, 16,
+ 8421, 3, 10585, 3351, 2254,
+ 8421, 3, 10585, 3353, 404,
+ 8421, 3, 10585, 3355, 524,
+ 8421, 3, 10585, 3357, 502,
+ 8421, 3, 10585, 3359, 2376,
+ 8421, 3, 10585, 3363, 298,
+ 8421, 3, 10585, 3365, 564,
+ 8421, 3, 10585, 3367, 8,
+ 8421, 3, 10585, 3369, 476,
+ 8421, 3, 10585, 3371, 630,
+ 8421, 3, 10585, 3373, 532,
+ 8421, 3, 10585, 3375, 632,
+ 8421, 3, 10585, 3377, 56,
+ 8421, 3, 10585, 3379, 310,
+ 8421, 3, 10585, 3381, 142,
+ 8421, 3, 10585, 3383, 294,
+ 8421, 3, 10585, 3387, 2122,
+ 8421, 3, 10585, 3391, 486,
+ 8421, 3, 10585, 3393, 152,
+ 8421, 3, 10585, 3395, 412,
+ 8421, 3, 10585, 3397, 514,
+ 8421, 3, 10585, 3399, 622,
+ 8421, 3, 10585, 3401, 416,
+ 8421, 3, 10585, 3405, 292,
+ 8421, 3, 10585, 3407, 546,
+ 8421, 3, 10585, 3409, 556,
+ 8421, 3, 10585, 3411, 510,
+ 8421, 3, 10585, 3413, 28,
+ 8421, 3, 10585, 3415, 2252,
+ 8421, 3, 10585, 3421, 300,
+ 8421, 3, 10585, 3423, 2632,
+ 8421, 3, 10585, 3425, 314,
+ 8421, 3, 10585, 3427, 2422,
+ 8421, 3, 10585, 3429, 576,
+ 8421, 3, 10585, 3431, 322,
+ 8421, 3, 10585, 3433, 1074,
+ 8421, 3, 10585, 3435, 468,
+ 8421, 3, 10585, 3437, 374,
+ 8421, 3, 10585, 3439, 672,
+ 8421, 3, 10585, 3441, 626,
+ 8421, 3, 10585, 3443, 2374,
+ 8421, 3, 10585, 3445, 306,
+ 8421, 3, 10585, 3447, 498,
+ 8421, 3, 10585, 3451, 364,
+ 8421, 3, 10585, 3453, 326,
+ 8421, 3, 10585, 3459, 92,
+ 8421, 3, 10585, 3463, 2774,
+ 8421, 3, 10585, 3467, 1076,
+ 8421, 3, 10585, 3469, 2778,
+ 8429, 8405, 0,
+ 8429, 8405, 2,
+ 8429, 8405, 6,
+ 8429, 8405, 8,
+ 8429, 8405, 12,
+ 8429, 8405, 14,
+ 8429, 8405, 16,
+ 8429, 8405, 18,
+ 8429, 8405, 20,
+ 8429, 8405, 22,
+ 8429, 8405, 24,
+ 8429, 8405, 26,
+ 8429, 8405, 30,
+ 8429, 8405, 32,
+ 8429, 8405, 34,
+ 8429, 8405, 36,
+ 8429, 8405, 38,
+ 8429, 8405, 40,
+ 8429, 8405, 44,
+ 8429, 8405, 46,
+ 8429, 8405, 50,
+ 8429, 8405, 80,
+ 8429, 8405, 104,
+ 8429, 8405, 176,
+ 8429, 8405, 316,
+ 8429, 8405, 378,
+ 8429, 8405, 410,
+ 8429, 8405, 562,
+ 8429, 8405, 574,
+ 8431, 8405, 0,
+ 8431, 8405, 2,
+ 8431, 8405, 4,
+ 8431, 8405, 6,
+ 8431, 8405, 8,
+ 8431, 8405, 10,
+ 8431, 8405, 12,
+ 8431, 8405, 16,
+ 8431, 8405, 20,
+ 8431, 8405, 22,
+ 8431, 8405, 24,
+ 8431, 8405, 26,
+ 8431, 8405, 28,
+ 8431, 8405, 32,
+ 8431, 8405, 34,
+ 8431, 8405, 36,
+ 8431, 8405, 38,
+ 8431, 8405, 40,
+ 8431, 8405, 42,
+ 8431, 8405, 48,
+ 8431, 8405, 80,
+ 8431, 8405, 176,
+ 8431, 8405, 360,
+ 8431, 8405, 410,
+ 8431, 8405, 542,
+ 8431, 8405, 574,
+ 8431, 11859, 4926,
+ 8432,
+ 8463, 4849, 6627, 9051, 10380,
+ 8463, 4849, 12115, 10380,
+ 8463, 6505, 8056,
+ 8463, 7443, 6627, 9051, 10380,
+ 8463, 7443, 12115, 10380,
+ 8463, 7512,
+ 8463, 7593, 7821, 8056,
+ 8463, 7821, 8056,
+ 8463, 10677, 760,
+ 8463, 10997, 4849, 12115, 10380,
+ 8463, 10997, 7443, 12115, 10380,
+ 8463, 12505, 7608,
+ 8463, 12967, 6409, 9051, 10380,
+ 8463, 13067, 6409, 9051, 10380,
+ 8473, 1044,
+ 8480,
+ 8483, 2779, 2584,
+ 8499, 10363, 7608,
+ 8510,
+ 8521, 10573, 428,
+ 8521, 10573, 429, 445, 6741, 568,
+ 8525, 2671, 4223, 5836,
+ 8525, 5758,
+ 8525, 8163, 4223, 5836,
+ 8525, 8875, 4223, 5836,
+ 8525, 8877, 4223, 5836,
+ 8525, 9287, 4223, 5836,
+ 8525, 9701, 4223, 5836,
+ 8525, 10151, 4223, 5836,
+ 8525, 10201, 4223, 5836,
+ 8525, 10361, 4223, 5836,
+ 8525, 10623, 4223, 5836,
+ 8525, 11233, 4223, 5836,
+ 8527, 5758,
+ 8533, 12143, 10758,
+ 8534,
+ 8545, 1610,
+ 8551, 4849, 12114,
+ 8551, 7443, 12114,
+ 8562,
+ 8570,
+ 8581, 5758,
+ 8592,
+ 8595, 9956,
+ 8595, 9957, 5387, 2779, 476,
+ 8609, 4926,
+ 8609, 4927, 4178,
+ 8631, 8151, 12953, 8450,
+ 8631, 8744,
+ 8631, 12953, 8450,
+ 8639, 7803, 5759, 8,
+ 8639, 7803, 5759, 16,
+ 8639, 7803, 5759, 28,
+ 8639, 7803, 5759, 40,
+ 8639, 7803, 5759, 72,
+ 8639, 7803, 5759, 92,
+ 8639, 7803, 5759, 160,
+ 8639, 7803, 5759, 188,
+ 8639, 8405, 0,
+ 8639, 8405, 100,
+ 8639, 8405, 116,
+ 8639, 8405, 138,
+ 8639, 8405, 216,
+ 8639, 8405, 236,
+ 8639, 8405, 292,
+ 8639, 8405, 306,
+ 8639, 8405, 332,
+ 8639, 8405, 364,
+ 8639, 8405, 392,
+ 8639, 8405, 462,
+ 8639, 8405, 510,
+ 8639, 8405, 524,
+ 8639, 8405, 556,
+ 8639, 8405, 622,
+ 8639, 8405, 652,
+ 8639, 8405, 1878,
+ 8639, 8405, 2006,
+ 8639, 8405, 2030,
+ 8639, 8405, 2126,
+ 8639, 8405, 5152,
+ 8639, 8405, 5312,
+ 8639, 8916,
+ 8639, 9665, 4926,
+ 8639, 10775, 5759, 14,
+ 8639, 10775, 5759, 26,
+ 8639, 10775, 5759, 34,
+ 8639, 10775, 5759, 400,
+ 8643, 8774,
+ 8649, 10001, 9967, 7607, 4153, 6434,
+ 8649, 10001, 9967, 9279, 10000,
+ 8668,
+ 8672,
+ 8679, 7593, 8,
+ 8679, 7593, 12,
+ 8679, 7593, 22,
+ 8679, 7593, 28,
+ 8679, 9063, 2,
+ 8679, 9063, 8,
+ 8679, 9063, 10,
+ 8679, 9063, 14,
+ 8679, 9063, 16,
+ 8679, 9063, 22,
+ 8679, 9063, 24,
+ 8679, 9063, 30,
+ 8679, 9063, 34,
+ 8684,
+ 8691, 1044,
+ 8717, 7119, 11195, 4926,
+ 8717, 12967, 6409, 11195, 4926,
+ 8717, 13067, 6409, 11195, 4926,
+ 8717, 13201, 11195, 4926,
+ 8745, 1, 5387, 24,
+ 8745, 5, 5387, 312,
+ 8745, 21, 2162,
+ 8745, 25, 2162,
+ 8745, 25, 5387, 36,
+ 8745, 25, 5387, 37, 9732,
+ 8745, 25, 6624,
+ 8745, 25, 9732,
+ 8745, 43, 5387, 24,
+ 8745, 78,
+ 8745, 92,
+ 8745, 110,
+ 8745, 118,
+ 8745, 120,
+ 8745, 128,
+ 8745, 129, 6624,
+ 8745, 129, 9732,
+ 8745, 130,
+ 8745, 138,
+ 8745, 140,
+ 8745, 146,
+ 8745, 148,
+ 8745, 149, 6624,
+ 8745, 149, 9732,
+ 8745, 190,
+ 8745, 206,
+ 8745, 218,
+ 8745, 234,
+ 8745, 236,
+ 8745, 240,
+ 8745, 248,
+ 8745, 254,
+ 8745, 274,
+ 8745, 286,
+ 8745, 306,
+ 8745, 308,
+ 8745, 312,
+ 8745, 316,
+ 8745, 318,
+ 8745, 320,
+ 8745, 321, 6624,
+ 8745, 321, 9062,
+ 8745, 321, 9732,
+ 8745, 324,
+ 8745, 328,
+ 8745, 330,
+ 8745, 346,
+ 8745, 348,
+ 8745, 358,
+ 8745, 364,
+ 8745, 366,
+ 8745, 367, 7592,
+ 8745, 370,
+ 8745, 376,
+ 8745, 378,
+ 8745, 379, 6624,
+ 8745, 379, 9732,
+ 8745, 382,
+ 8745, 385, 0,
+ 8745, 385, 10,
+ 8745, 385, 12,
+ 8745, 385, 22,
+ 8745, 385, 24,
+ 8745, 385, 36,
+ 8745, 385, 42,
+ 8745, 385, 44,
+ 8745, 386,
+ 8745, 387, 4946,
+ 8745, 388,
+ 8745, 389, 4946,
+ 8745, 392,
+ 8745, 398,
+ 8745, 408,
+ 8745, 414,
+ 8745, 418,
+ 8745, 420,
+ 8745, 452,
+ 8745, 462,
+ 8745, 463, 3260,
+ 8745, 464,
+ 8745, 470,
+ 8745, 474,
+ 8745, 478,
+ 8745, 482,
+ 8745, 484,
+ 8745, 488,
+ 8745, 490,
+ 8745, 540,
+ 8745, 548,
+ 8745, 624,
+ 8745, 760,
+ 8745, 856,
+ 8745, 860,
+ 8745, 928,
+ 8745, 1117, 5047, 7142,
+ 8745, 1117, 5047, 8294,
+ 8745, 1117, 5047, 8778,
+ 8745, 1117, 5047, 9762,
+ 8745, 1118,
+ 8745, 1212,
+ 8745, 1270,
+ 8745, 1298,
+ 8745, 1422,
+ 8745, 1432,
+ 8745, 1622,
+ 8745, 1668,
+ 8745, 1800,
+ 8745, 1908,
+ 8745, 1918,
+ 8745, 1934,
+ 8745, 1946,
+ 8745, 2248,
+ 8745, 2382,
+ 8745, 2383, 5387, 36,
+ 8745, 2383, 5387, 37, 9732,
+ 8745, 2688,
+ 8745, 2720,
+ 8745, 2816,
+ 8745, 3224,
+ 8745, 3790,
+ 8745, 4062,
+ 8745, 4110,
+ 8745, 4208,
+ 8745, 4332,
+ 8745, 4532,
+ 8745, 4612,
+ 8745, 4732,
+ 8745, 4762,
+ 8745, 4849, 5385, 827, 10374,
+ 8745, 4946,
+ 8745, 5008,
+ 8745, 5052,
+ 8745, 5378,
+ 8745, 5380,
+ 8745, 5408,
+ 8745, 5430,
+ 8745, 5534,
+ 8745, 5552,
+ 8745, 5566,
+ 8745, 6121, 2725, 4389, 6504,
+ 8745, 6121, 4849, 4389, 6504,
+ 8745, 6121, 7121, 4849, 10001, 4389, 6504,
+ 8745, 6121, 7121, 7443, 10001, 4389, 6504,
+ 8745, 6121, 7443, 4389, 6504,
+ 8745, 6121, 7773, 4849, 569, 7121, 7443, 4192,
+ 8745, 6121, 7773, 4849, 10001, 4389, 6504,
+ 8745, 6121, 7773, 7443, 569, 7121, 4849, 4192,
+ 8745, 6121, 7773, 7443, 10001, 4389, 6504,
+ 8745, 6121, 8005, 4389, 6504,
+ 8745, 6121, 10001, 11469, 4192,
+ 8745, 6121, 10677, 4192,
+ 8745, 6121, 10779, 9544,
+ 8745, 6121, 11649, 4192,
+ 8745, 6121, 11707, 11469, 4192,
+ 8745, 6234,
+ 8745, 6410,
+ 8745, 6482,
+ 8745, 6630,
+ 8745, 6718,
+ 8745, 6826,
+ 8745, 6828,
+ 8745, 6858,
+ 8745, 6892,
+ 8745, 6950,
+ 8745, 6958,
+ 8745, 6989, 428,
+ 8745, 6989, 429, 445, 2091, 6741, 568,
+ 8745, 6989, 429, 445, 6741, 568,
+ 8745, 7018,
+ 8745, 7034,
+ 8745, 7060,
+ 8745, 7126,
+ 8745, 7128,
+ 8745, 7276,
+ 8745, 7330,
+ 8745, 7352,
+ 8745, 7360,
+ 8745, 7384,
+ 8745, 7443, 5385, 827, 10374,
+ 8745, 7470,
+ 8745, 7504,
+ 8745, 7506,
+ 8745, 7814,
+ 8745, 7840,
+ 8745, 7842,
+ 8745, 7926,
+ 8745, 7950,
+ 8745, 8002,
+ 8745, 8274,
+ 8745, 8300,
+ 8745, 8304,
+ 8745, 8314,
+ 8745, 8372,
+ 8745, 8378,
+ 8745, 8452,
+ 8745, 8572,
+ 8745, 8588,
+ 8745, 8604,
+ 8745, 9016,
+ 8745, 9308,
+ 8745, 9388,
+ 8745, 9390,
+ 8745, 9416,
+ 8745, 9438,
+ 8745, 9444,
+ 8745, 9454,
+ 8745, 9468,
+ 8745, 9470,
+ 8745, 9476,
+ 8745, 9636,
+ 8745, 9646,
+ 8745, 9648,
+ 8745, 9698,
+ 8745, 9926,
+ 8745, 10166,
+ 8745, 10244,
+ 8745, 10379, 428,
+ 8745, 10379, 429, 445, 2091, 6741, 568,
+ 8745, 10379, 429, 445, 6741, 568,
+ 8745, 10392,
+ 8745, 10480,
+ 8745, 10496,
+ 8745, 11028,
+ 8745, 11032,
+ 8745, 11080,
+ 8745, 11084,
+ 8745, 11120,
+ 8745, 11170,
+ 8745, 11668,
+ 8745, 11918,
+ 8745, 12068,
+ 8755, 10385, 7821, 5830,
+ 8763, 428,
+ 8763, 429, 445, 6741, 568,
+ 8763, 429, 445, 6741, 569, 6121, 1045, 6376,
+ 8763, 429, 6121, 2091, 6741, 568,
+ 8763, 429, 6377, 2091, 6741, 568,
+ 8763, 429, 6377, 7709, 10374,
+ 8763, 429, 6377, 7919, 6741, 568,
+ 8763, 429, 6377, 8167, 5758,
+ 8763, 6121, 1044,
+ 8763, 6121, 5445, 5759, 6490,
+ 8763, 6121, 13061, 5759, 6490,
+ 8763, 6377, 8762,
+ 8763, 6377, 10578,
+ 8763, 6377, 11765, 6434,
+ 8773, 7207, 5759, 9328,
+ 8773, 7207, 5759, 9870,
+ 8773, 7207, 5759, 10148,
+ 8773, 7207, 7803, 5759, 0,
+ 8773, 7207, 7803, 5759, 8,
+ 8773, 7207, 7803, 5759, 16,
+ 8773, 7207, 7803, 5759, 40,
+ 8773, 7207, 7803, 5759, 440,
+ 8773, 7207, 8405, 0,
+ 8773, 7207, 8405, 8,
+ 8773, 7207, 8405, 16,
+ 8773, 7207, 8405, 28,
+ 8773, 7207, 8405, 40,
+ 8773, 7207, 8405, 108,
+ 8773, 7207, 8405, 130,
+ 8773, 7207, 8405, 150,
+ 8773, 7207, 8405, 228,
+ 8773, 7207, 8405, 246,
+ 8773, 7207, 8405, 298,
+ 8773, 7207, 8405, 322,
+ 8773, 7207, 8405, 350,
+ 8773, 7207, 8405, 380,
+ 8773, 7207, 8405, 412,
+ 8773, 7207, 8405, 480,
+ 8773, 7207, 8405, 516,
+ 8773, 7207, 8405, 536,
+ 8773, 7207, 8405, 568,
+ 8773, 7207, 8405, 798,
+ 8773, 7207, 8405, 890,
+ 8773, 7207, 8405, 980,
+ 8773, 7207, 8405, 1002,
+ 8773, 7207, 8405, 1266,
+ 8773, 7207, 8405, 1514,
+ 8773, 7207, 8405, 1618,
+ 8773, 7207, 8405, 2218,
+ 8773, 7207, 8405, 2442,
+ 8773, 7207, 8405, 2684,
+ 8773, 7207, 8405, 2754,
+ 8773, 7207, 8405, 4018,
+ 8773, 7207, 8405, 6000,
+ 8773, 7207, 8603, 8442,
+ 8773, 7207, 8603, 8444,
+ 8773, 7207, 8603, 8446,
+ 8773, 7207, 8603, 8448,
+ 8775, 1177, 1109, 429, 5904,
+ 8775, 1177, 1109, 429, 8462,
+ 8775, 1177, 1109, 429, 12886,
+ 8775, 1177, 1109, 429, 12887, 6510,
+ 8775, 1177, 3768,
+ 8775, 1177, 3995, 4881, 8168,
+ 8775, 1177, 4191, 11228,
+ 8775, 1177, 4213, 4182,
+ 8775, 1177, 4877, 4182,
+ 8775, 1177, 5280,
+ 8775, 1177, 6053, 11228,
+ 8775, 1177, 6883, 11228,
+ 8775, 1177, 7539, 274,
+ 8775, 1177, 7539, 2186,
+ 8775, 1177, 7608,
+ 8775, 1177, 7633, 429, 5904,
+ 8775, 1177, 7633, 429, 9334,
+ 8775, 1177, 8026,
+ 8775, 1177, 8102,
+ 8775, 1177, 8103, 4213, 2778,
+ 8775, 1177, 8109, 9117, 2170,
+ 8775, 1177, 8109, 9117, 2778,
+ 8775, 1177, 8109, 9117, 4214,
+ 8775, 1177, 8109, 9117, 7694,
+ 8775, 1177, 8168,
+ 8775, 1177, 8637, 11228,
+ 8775, 1177, 9268,
+ 8775, 1177, 9502,
+ 8775, 1177, 9933, 8642,
+ 8775, 1177, 10357, 11884,
+ 8775, 1177, 10677, 11846,
+ 8775, 1177, 10730,
+ 8775, 1177, 11219, 8724,
+ 8775, 1177, 11649, 11846,
+ 8775, 1177, 11840,
+ 8775, 1177, 11841, 4213, 2778,
+ 8775, 1177, 11884,
+ 8775, 1177, 12359, 4598,
+ 8781, 1109, 429, 11162,
+ 8781, 2779, 10677, 4113, 6376,
+ 8781, 2779, 10677, 4113, 6490,
+ 8781, 6611, 8721, 4848,
+ 8781, 6611, 8721, 7442,
+ 8781, 6751, 6376,
+ 8781, 6751, 6490,
+ 8781, 6905, 6376,
+ 8781, 6905, 6490,
+ 8781, 7198,
+ 8781, 7427, 6376,
+ 8781, 7427, 6490,
+ 8781, 7472,
+ 8781, 7695, 4113, 6376,
+ 8781, 7695, 4113, 6490,
+ 8781, 8151, 7889, 8996,
+ 8781, 8151, 7889, 11648,
+ 8781, 8405, 8,
+ 8781, 8405, 238,
+ 8781, 8405, 468,
+ 8781, 8405, 1920,
+ 8781, 8405, 2110,
+ 8781, 8405, 2662,
+ 8781, 8405, 2918,
+ 8781, 8405, 3776,
+ 8781, 8405, 4410,
+ 8781, 8405, 4724,
+ 8781, 8405, 5476,
+ 8781, 8405, 5554,
+ 8781, 8405, 5698,
+ 8781, 8405, 5902,
+ 8781, 8405, 5903, 10214,
+ 8781, 8405, 6236,
+ 8781, 8405, 6237, 238,
+ 8781, 8405, 6254,
+ 8781, 8405, 6394,
+ 8781, 8405, 6789, 9668,
+ 8781, 8405, 6820,
+ 8781, 8405, 6821, 10214,
+ 8781, 8405, 7474,
+ 8781, 8405, 8090,
+ 8781, 8405, 8384,
+ 8781, 8405, 9185, 8091, 5554,
+ 8781, 8405, 9583, 6496,
+ 8781, 8405, 9583, 8258,
+ 8781, 8405, 9583, 9156,
+ 8781, 8405, 9668,
+ 8781, 8405, 9717, 198,
+ 8781, 8405, 9717, 7046,
+ 8781, 8405, 9717, 7874,
+ 8781, 8405, 10489, 468,
+ 8781, 8405, 12355, 6394,
+ 8781, 8617, 6376,
+ 8781, 8617, 6490,
+ 8781, 8617, 8150,
+ 8781, 8965, 6376,
+ 8781, 8965, 6490,
+ 8781, 8965, 8150,
+ 8781, 9024,
+ 8781, 9525, 4877, 6376,
+ 8781, 9525, 4877, 6490,
+ 8781, 10179, 1044,
+ 8781, 10235, 8530,
+ 8781, 10235, 11118,
+ 8781, 10235, 11432,
+ 8781, 10490,
+ 8781, 11196,
+ 8781, 11259, 4223, 5836,
+ 8781, 11259, 6610,
+ 8781, 11259, 6611, 8721, 7442,
+ 8781, 11649, 6610,
+ 8781, 11914,
+ 8781, 12031, 8150,
+ 8781, 12357, 4223, 5836,
+ 8781, 12357, 6610,
+ 8781, 12357, 6611, 8721, 4848,
+ 8781, 12391, 4926,
+ 8794,
+ 8803, 73, 8399, 4926,
+ 8803, 5759, 7756,
+ 8803, 5759, 8916,
+ 8803, 5759, 9824,
+ 8803, 5759, 9870,
+ 8803, 5759, 9904,
+ 8803, 5759, 11900,
+ 8803, 6689, 2170,
+ 8803, 6689, 2540,
+ 8803, 6689, 2778,
+ 8803, 6689, 4200,
+ 8803, 6689, 4214,
+ 8803, 6689, 5190,
+ 8803, 6689, 6260,
+ 8803, 6689, 6722,
+ 8803, 6689, 7508,
+ 8803, 6689, 7694,
+ 8803, 7803, 5759, 8,
+ 8803, 7803, 5759, 16,
+ 8803, 7803, 5759, 28,
+ 8803, 7803, 5759, 40,
+ 8803, 7803, 5759, 58,
+ 8803, 7803, 5759, 72,
+ 8803, 7803, 5759, 92,
+ 8803, 7803, 5759, 162,
+ 8803, 7803, 5759, 266,
+ 8803, 7803, 5759, 440,
+ 8803, 7803, 5759, 606,
+ 8803, 7803, 5759, 9827, 22,
+ 8803, 7803, 5759, 9827, 34,
+ 8803, 7803, 5759, 9827, 344,
+ 8803, 7803, 5759, 9827, 518,
+ 8803, 8399, 4926,
+ 8803, 8405, 0,
+ 8803, 8405, 8,
+ 8803, 8405, 16,
+ 8803, 8405, 28,
+ 8803, 8405, 40,
+ 8803, 8405, 58,
+ 8803, 8405, 72,
+ 8803, 8405, 92,
+ 8803, 8405, 100,
+ 8803, 8405, 116,
+ 8803, 8405, 138,
+ 8803, 8405, 162,
+ 8803, 8405, 216,
+ 8803, 8405, 236,
+ 8803, 8405, 266,
+ 8803, 8405, 292,
+ 8803, 8405, 306,
+ 8803, 8405, 332,
+ 8803, 8405, 364,
+ 8803, 8405, 392,
+ 8803, 8405, 440,
+ 8803, 8405, 462,
+ 8803, 8405, 510,
+ 8803, 8405, 524,
+ 8803, 8405, 556,
+ 8803, 8405, 606,
+ 8803, 8405, 610,
+ 8803, 8405, 652,
+ 8803, 8405, 792,
+ 8803, 8405, 884,
+ 8803, 8405, 974,
+ 8803, 8405, 996,
+ 8803, 8405, 1080,
+ 8803, 8405, 1260,
+ 8803, 8405, 1512,
+ 8803, 8405, 1612,
+ 8803, 8405, 1796,
+ 8803, 8405, 2030,
+ 8803, 8405, 2076,
+ 8803, 8405, 2126,
+ 8803, 8405, 2212,
+ 8803, 8405, 2438,
+ 8803, 8405, 2516,
+ 8803, 8405, 2566,
+ 8803, 8405, 2678,
+ 8803, 8405, 2732,
+ 8803, 8405, 2746,
+ 8803, 8405, 4016,
+ 8803, 8405, 5994,
+ 8803, 8405, 9827, 22,
+ 8803, 8405, 9827, 34,
+ 8803, 8405, 9827, 344,
+ 8803, 8405, 9827, 518,
+ 8803, 10203, 6689, 2171, 1177, 2161, 8611, 429, 4214,
+ 8803, 10203, 6689, 2171, 1177, 4173, 8611, 429, 4214,
+ 8803, 10203, 6689, 2779, 1177, 2161, 8611, 429, 4214,
+ 8803, 10203, 6689, 2779, 1177, 4173, 8611, 429, 4214,
+ 8803, 10203, 6689, 6261, 1177, 2161, 8611, 429, 4214,
+ 8803, 10203, 6689, 7695, 1177, 2161, 8611, 429, 4214,
+ 8803, 10203, 6689, 7695, 1177, 4173, 8611, 429, 4214,
+ 8811, 7650,
+ 8811, 8405, 568,
+ 8811, 8405, 678,
+ 8811, 8405, 748,
+ 8811, 8405, 1338,
+ 8811, 8405, 1982,
+ 8811, 8405, 2378,
+ 8811, 8405, 3006,
+ 8811, 8405, 3120,
+ 8811, 8405, 3240,
+ 8811, 8405, 4412,
+ 8811, 8405, 4734,
+ 8811, 8405, 5906,
+ 8811, 8405, 5988,
+ 8811, 8405, 6402,
+ 8811, 8405, 6766,
+ 8811, 8405, 6814,
+ 8811, 8405, 7016,
+ 8811, 8405, 7070,
+ 8811, 8405, 7140,
+ 8811, 8405, 7268,
+ 8811, 8405, 7400,
+ 8811, 8405, 7498,
+ 8811, 8405, 7780,
+ 8811, 8405, 7806,
+ 8811, 8405, 8084,
+ 8811, 8405, 8110,
+ 8811, 8405, 8256,
+ 8811, 8405, 8656,
+ 8811, 8405, 8698,
+ 8811, 8405, 8808,
+ 8811, 8405, 9986,
+ 8811, 8405, 10278,
+ 8811, 8405, 10414,
+ 8811, 8405, 10612,
+ 8811, 8405, 10690,
+ 8811, 8405, 10760,
+ 8811, 8405, 11020,
+ 8811, 8405, 11100,
+ 8811, 8405, 11236,
+ 8811, 8968,
+ 8811, 9254,
+ 8811, 9348,
+ 8811, 9526,
+ 8811, 9804,
+ 8811, 10694,
+ 8811, 10964,
+ 8811, 10986,
+ 8811, 11144,
+ 8811, 11146,
+ 8849, 5444,
+ 8849, 6611, 10374,
+ 8849, 7390,
+ 8849, 7708,
+ 8849, 8509, 11098,
+ 8849, 8509, 12472,
+ 8849, 9719, 7995, 10476,
+ 8849, 10260,
+ 8849, 10677, 761, 6121, 11649, 8758,
+ 8849, 10677, 761, 7443, 11378,
+ 8849, 10677, 761, 7995, 10476,
+ 8849, 10677, 761, 10794,
+ 8849, 11649, 761, 6121, 8153, 10677, 8758,
+ 8849, 11649, 761, 6121, 8849, 10677, 8758,
+ 8865, 5758,
+ 8869, 2091, 5758,
+ 8869, 6408,
+ 8869, 6879, 7593, 8405, 4614,
+ 8869, 7593, 10,
+ 8869, 9063, 10,
+ 8869, 10708,
+ 8869, 11767, 9063, 12,
+ 8869, 11767, 9063, 22,
+ 8869, 11767, 9063, 48,
+ 8875, 9601, 6505, 5830,
+ 8900,
+ 8913, 445, 6623, 9610,
+ 8923, 10260,
+ 8927, 10203, 2171, 4388,
+ 8927, 10203, 2171, 6782,
+ 8927, 10203, 2171, 7574,
+ 8927, 10203, 2171, 7686,
+ 8927, 10203, 2171, 8158,
+ 8927, 10203, 2171, 9614,
+ 8927, 10203, 2779, 8200,
+ 8927, 10203, 2779, 8818,
+ 8927, 10203, 4201, 8718,
+ 8927, 10203, 4201, 9258,
+ 8927, 10203, 4215, 8200,
+ 8927, 10203, 7509, 9258,
+ 8927, 10203, 7695, 8200,
+ 8927, 10203, 7695, 9258,
+ 8927, 10203, 7695, 10466,
+ 8939, 9610,
+ 8975, 428,
+ 8981, 5758,
+ 8990,
+ 9011, 5758,
+ 9034,
+ 9039, 93, 8399, 4926,
+ 9039, 5759, 7282,
+ 9039, 5759, 8916,
+ 9039, 5759, 9824,
+ 9039, 5759, 9870,
+ 9039, 5759, 9904,
+ 9039, 5759, 11900,
+ 9039, 6689, 2170,
+ 9039, 6689, 2540,
+ 9039, 6689, 2778,
+ 9039, 6689, 4200,
+ 9039, 6689, 4214,
+ 9039, 6689, 5190,
+ 9039, 6689, 6260,
+ 9039, 6689, 6722,
+ 9039, 6689, 7508,
+ 9039, 6689, 7694,
+ 9039, 7469, 4926,
+ 9039, 7469, 5758,
+ 9039, 7803, 5759, 8,
+ 9039, 7803, 5759, 16,
+ 9039, 7803, 5759, 28,
+ 9039, 7803, 5759, 40,
+ 9039, 7803, 5759, 58,
+ 9039, 7803, 5759, 72,
+ 9039, 7803, 5759, 92,
+ 9039, 7803, 5759, 266,
+ 9039, 7803, 5759, 606,
+ 9039, 7803, 5759, 9827, 22,
+ 9039, 7803, 5759, 9827, 34,
+ 9039, 7803, 5759, 9827, 344,
+ 9039, 7803, 5759, 9827, 518,
+ 9039, 8322,
+ 9039, 8405, 0,
+ 9039, 8405, 8,
+ 9039, 8405, 16,
+ 9039, 8405, 28,
+ 9039, 8405, 40,
+ 9039, 8405, 58,
+ 9039, 8405, 72,
+ 9039, 8405, 92,
+ 9039, 8405, 100,
+ 9039, 8405, 116,
+ 9039, 8405, 138,
+ 9039, 8405, 216,
+ 9039, 8405, 236,
+ 9039, 8405, 266,
+ 9039, 8405, 292,
+ 9039, 8405, 306,
+ 9039, 8405, 332,
+ 9039, 8405, 364,
+ 9039, 8405, 392,
+ 9039, 8405, 462,
+ 9039, 8405, 510,
+ 9039, 8405, 511, 6121, 7121, 10000,
+ 9039, 8405, 511, 6121, 8473, 10000,
+ 9039, 8405, 524,
+ 9039, 8405, 556,
+ 9039, 8405, 606,
+ 9039, 8405, 652,
+ 9039, 8405, 792,
+ 9039, 8405, 884,
+ 9039, 8405, 974,
+ 9039, 8405, 996,
+ 9039, 8405, 1260,
+ 9039, 8405, 1512,
+ 9039, 8405, 1612,
+ 9039, 8405, 2030,
+ 9039, 8405, 2076,
+ 9039, 8405, 2126,
+ 9039, 8405, 2212,
+ 9039, 8405, 2410,
+ 9039, 8405, 2438,
+ 9039, 8405, 2516,
+ 9039, 8405, 2566,
+ 9039, 8405, 2678,
+ 9039, 8405, 2746,
+ 9039, 8405, 3110,
+ 9039, 8405, 4016,
+ 9039, 8405, 5994,
+ 9039, 8405, 8357, 556,
+ 9039, 8405, 9827, 22,
+ 9039, 8405, 9827, 34,
+ 9039, 8405, 9827, 344,
+ 9039, 8405, 9827, 518,
+ 9039, 9971, 11143, 2170,
+ 9039, 9971, 11143, 2171, 4853, 5913, 2681, 11932,
+ 9039, 9971, 11143, 2778,
+ 9039, 9971, 11143, 4214,
+ 9039, 9971, 11143, 7694,
+ 9039, 9971, 11933, 9700,
+ 9041, 5550,
+ 9041, 5551, 6121, 8056,
+ 9042,
+ 9053, 9575, 6508,
+ 9053, 9575, 8134,
+ 9053, 9575, 8136,
+ 9053, 9575, 8138,
+ 9053, 9575, 8140,
+ 9053, 9575, 8142,
+ 9053, 9575, 8144,
+ 9053, 9575, 8146,
+ 9053, 9575, 8148,
+ 9053, 9575, 9186,
+ 9053, 9575, 9188,
+ 9053, 9575, 9190,
+ 9053, 9575, 9192,
+ 9053, 9575, 9194,
+ 9053, 9575, 9196,
+ 9053, 9575, 9198,
+ 9053, 9575, 9200,
+ 9053, 9575, 9202,
+ 9053, 9575, 9204,
+ 9053, 9575, 9206,
+ 9053, 9575, 9208,
+ 9053, 9575, 9210,
+ 9053, 9575, 9212,
+ 9053, 9575, 9214,
+ 9053, 9575, 9216,
+ 9053, 9575, 9218,
+ 9053, 9575, 9220,
+ 9053, 9575, 9222,
+ 9053, 9575, 9224,
+ 9053, 9575, 9226,
+ 9053, 9575, 9228,
+ 9053, 9575, 9230,
+ 9053, 9575, 9232,
+ 9053, 9575, 9234,
+ 9053, 9575, 9236,
+ 9053, 9575, 9238,
+ 9053, 9575, 9240,
+ 9053, 9575, 10020,
+ 9053, 9575, 10022,
+ 9053, 9575, 10024,
+ 9053, 9575, 10026,
+ 9053, 9575, 10028,
+ 9053, 9575, 10030,
+ 9053, 9575, 10032,
+ 9053, 9575, 10034,
+ 9053, 9575, 10036,
+ 9053, 9575, 10038,
+ 9053, 9575, 10040,
+ 9053, 9575, 10042,
+ 9053, 9575, 10044,
+ 9053, 9575, 10046,
+ 9053, 9575, 10048,
+ 9053, 9575, 10050,
+ 9053, 9575, 10052,
+ 9053, 9575, 10054,
+ 9053, 9575, 10056,
+ 9053, 9575, 10058,
+ 9053, 9575, 10060,
+ 9053, 9575, 10062,
+ 9053, 9575, 10064,
+ 9053, 9575, 10066,
+ 9053, 9575, 10068,
+ 9053, 9575, 10070,
+ 9053, 9575, 10072,
+ 9053, 9575, 10074,
+ 9053, 9575, 10076,
+ 9053, 9575, 10078,
+ 9053, 9575, 10080,
+ 9053, 9575, 10082,
+ 9053, 9575, 10084,
+ 9053, 9575, 10086,
+ 9053, 9575, 10088,
+ 9053, 9575, 10090,
+ 9053, 9575, 10092,
+ 9053, 9575, 10094,
+ 9053, 9575, 10096,
+ 9053, 9575, 10098,
+ 9053, 9575, 10100,
+ 9053, 9575, 10102,
+ 9053, 9575, 10104,
+ 9053, 9575, 10106,
+ 9053, 9575, 10108,
+ 9053, 9575, 10110,
+ 9053, 9575, 10112,
+ 9053, 9575, 10114,
+ 9053, 9575, 10116,
+ 9053, 9575, 10118,
+ 9053, 9575, 10120,
+ 9053, 9575, 10122,
+ 9053, 9575, 10124,
+ 9053, 9575, 10126,
+ 9053, 9575, 10128,
+ 9053, 9575, 10130,
+ 9053, 9575, 10818,
+ 9053, 9575, 10820,
+ 9053, 9575, 10822,
+ 9053, 9575, 10824,
+ 9053, 9575, 10826,
+ 9053, 9575, 10828,
+ 9053, 9575, 10830,
+ 9053, 9575, 10832,
+ 9053, 9575, 10834,
+ 9053, 9575, 10836,
+ 9053, 9575, 10838,
+ 9053, 9575, 10840,
+ 9053, 9575, 10842,
+ 9053, 9575, 10844,
+ 9053, 9575, 10846,
+ 9053, 9575, 10848,
+ 9053, 9575, 10850,
+ 9053, 9575, 10852,
+ 9053, 9575, 10854,
+ 9053, 9575, 10856,
+ 9053, 9575, 10858,
+ 9053, 9575, 10860,
+ 9053, 9575, 10862,
+ 9053, 9575, 10864,
+ 9053, 9575, 10866,
+ 9053, 9575, 10868,
+ 9053, 9575, 10870,
+ 9053, 9575, 10872,
+ 9053, 9575, 10874,
+ 9053, 9575, 10876,
+ 9053, 9575, 10878,
+ 9053, 9575, 10880,
+ 9053, 9575, 10882,
+ 9053, 9575, 10884,
+ 9053, 9575, 10886,
+ 9053, 9575, 10888,
+ 9053, 9575, 10890,
+ 9053, 9575, 10892,
+ 9053, 9575, 10894,
+ 9053, 9575, 10896,
+ 9053, 9575, 10898,
+ 9053, 9575, 10900,
+ 9053, 9575, 10902,
+ 9053, 9575, 10904,
+ 9053, 9575, 10906,
+ 9053, 9575, 10908,
+ 9053, 9575, 10910,
+ 9053, 9575, 10912,
+ 9053, 9575, 10914,
+ 9053, 9575, 10916,
+ 9053, 9575, 10918,
+ 9053, 9575, 10920,
+ 9053, 9575, 10922,
+ 9053, 9575, 10924,
+ 9053, 9575, 10926,
+ 9053, 9575, 10928,
+ 9053, 9575, 10930,
+ 9053, 9575, 10932,
+ 9053, 9575, 10934,
+ 9053, 9575, 10936,
+ 9053, 9575, 10938,
+ 9053, 9575, 10940,
+ 9053, 9575, 10942,
+ 9053, 9575, 10944,
+ 9053, 9575, 10946,
+ 9053, 9575, 10948,
+ 9053, 9575, 10950,
+ 9053, 9575, 10952,
+ 9053, 9575, 10954,
+ 9053, 9575, 10956,
+ 9053, 9575, 11490,
+ 9053, 9575, 11492,
+ 9053, 9575, 11494,
+ 9053, 9575, 11496,
+ 9053, 9575, 11498,
+ 9053, 9575, 11500,
+ 9053, 9575, 11502,
+ 9053, 9575, 11504,
+ 9053, 9575, 11506,
+ 9053, 9575, 11508,
+ 9053, 9575, 11510,
+ 9053, 9575, 11512,
+ 9053, 9575, 11514,
+ 9053, 9575, 11516,
+ 9053, 9575, 11518,
+ 9053, 9575, 11520,
+ 9053, 9575, 11522,
+ 9053, 9575, 11524,
+ 9053, 9575, 11526,
+ 9053, 9575, 11528,
+ 9053, 9575, 11530,
+ 9053, 9575, 11532,
+ 9053, 9575, 11534,
+ 9053, 9575, 11536,
+ 9053, 9575, 11538,
+ 9053, 9575, 11540,
+ 9053, 9575, 11542,
+ 9053, 9575, 11544,
+ 9053, 9575, 11546,
+ 9053, 9575, 11548,
+ 9053, 9575, 11550,
+ 9053, 9575, 11552,
+ 9053, 9575, 11554,
+ 9053, 9575, 11556,
+ 9053, 9575, 11558,
+ 9053, 9575, 11560,
+ 9053, 9575, 11562,
+ 9053, 9575, 11564,
+ 9053, 9575, 11566,
+ 9053, 9575, 11568,
+ 9053, 9575, 11570,
+ 9053, 9575, 11572,
+ 9053, 9575, 11574,
+ 9053, 9575, 11576,
+ 9053, 9575, 11578,
+ 9053, 9575, 11580,
+ 9053, 9575, 11582,
+ 9053, 9575, 11584,
+ 9053, 9575, 11586,
+ 9053, 9575, 11588,
+ 9053, 9575, 11590,
+ 9053, 9575, 11592,
+ 9053, 9575, 11594,
+ 9053, 9575, 11596,
+ 9053, 9575, 11598,
+ 9053, 9575, 11600,
+ 9053, 9575, 11950,
+ 9053, 9575, 11952,
+ 9053, 9575, 11954,
+ 9053, 9575, 11956,
+ 9053, 9575, 11958,
+ 9053, 9575, 11960,
+ 9053, 9575, 11962,
+ 9053, 9575, 11964,
+ 9053, 9575, 11966,
+ 9053, 9575, 11968,
+ 9053, 9575, 11970,
+ 9053, 9575, 11972,
+ 9053, 9575, 11974,
+ 9053, 9575, 11976,
+ 9053, 9575, 11978,
+ 9053, 9575, 11980,
+ 9053, 9575, 11982,
+ 9053, 9575, 11984,
+ 9053, 9575, 11986,
+ 9053, 9575, 11988,
+ 9053, 9575, 11990,
+ 9053, 9575, 11992,
+ 9053, 9575, 11994,
+ 9053, 9575, 11996,
+ 9053, 9575, 11998,
+ 9053, 9575, 12000,
+ 9053, 9575, 12002,
+ 9053, 9575, 12004,
+ 9053, 9575, 12444,
+ 9053, 9575, 12446,
+ 9053, 9575, 12448,
+ 9053, 9575, 12450,
+ 9053, 9575, 12452,
+ 9053, 9575, 12454,
+ 9053, 9575, 12456,
+ 9053, 9575, 12458,
+ 9053, 9575, 12926,
+ 9069, 5758,
+ 9072,
+ 9095, 1045, 10374,
+ 9095, 3992,
+ 9095, 5385, 8037, 6723, 9601, 5830,
+ 9095, 5444,
+ 9095, 5551, 10374,
+ 9095, 6689, 2170,
+ 9095, 6689, 2540,
+ 9095, 6689, 2778,
+ 9095, 6689, 4200,
+ 9095, 6689, 4214,
+ 9095, 6689, 5190,
+ 9095, 6689, 6260,
+ 9095, 6689, 6722,
+ 9095, 6689, 7508,
+ 9095, 6689, 7694,
+ 9095, 6909, 7821, 11765, 6434,
+ 9095, 7089, 7593, 8405, 0,
+ 9095, 7089, 7593, 8405, 2,
+ 9095, 7089, 7593, 8405, 4,
+ 9095, 7089, 7593, 8405, 6,
+ 9095, 7089, 7593, 8405, 8,
+ 9095, 7089, 7593, 8405, 10,
+ 9095, 7089, 7593, 8405, 12,
+ 9095, 7089, 7593, 8405, 14,
+ 9095, 7089, 7593, 8405, 16,
+ 9095, 7089, 7593, 8405, 18,
+ 9095, 7089, 7593, 8405, 20,
+ 9095, 7089, 7593, 8405, 22,
+ 9095, 7089, 7593, 8405, 24,
+ 9095, 7089, 7593, 8405, 26,
+ 9095, 7089, 7593, 8405, 28,
+ 9095, 7089, 7593, 8405, 30,
+ 9095, 7089, 7593, 8405, 32,
+ 9095, 7089, 7593, 8405, 34,
+ 9095, 7089, 7593, 8405, 36,
+ 9095, 7089, 7593, 8405, 38,
+ 9095, 7089, 7593, 8405, 40,
+ 9095, 7089, 7593, 8405, 42,
+ 9095, 7089, 7593, 8405, 44,
+ 9095, 7089, 7593, 8405, 46,
+ 9095, 7089, 7593, 8405, 48,
+ 9095, 7089, 7593, 8405, 50,
+ 9095, 7089, 9063, 8405, 0,
+ 9095, 7089, 9063, 8405, 2,
+ 9095, 7089, 9063, 8405, 4,
+ 9095, 7089, 9063, 8405, 6,
+ 9095, 7089, 9063, 8405, 8,
+ 9095, 7089, 9063, 8405, 10,
+ 9095, 7089, 9063, 8405, 12,
+ 9095, 7089, 9063, 8405, 14,
+ 9095, 7089, 9063, 8405, 16,
+ 9095, 7089, 9063, 8405, 18,
+ 9095, 7089, 9063, 8405, 20,
+ 9095, 7089, 9063, 8405, 22,
+ 9095, 7089, 9063, 8405, 24,
+ 9095, 7089, 9063, 8405, 26,
+ 9095, 7089, 9063, 8405, 28,
+ 9095, 7089, 9063, 8405, 30,
+ 9095, 7089, 9063, 8405, 32,
+ 9095, 7089, 9063, 8405, 34,
+ 9095, 7089, 9063, 8405, 36,
+ 9095, 7089, 9063, 8405, 38,
+ 9095, 7089, 9063, 8405, 40,
+ 9095, 7089, 9063, 8405, 42,
+ 9095, 7089, 9063, 8405, 44,
+ 9095, 7089, 9063, 8405, 46,
+ 9095, 7089, 9063, 8405, 48,
+ 9095, 7089, 9063, 8405, 50,
+ 9095, 7172,
+ 9095, 7710,
+ 9095, 7821, 5830,
+ 9095, 7821, 8022,
+ 9095, 8022,
+ 9095, 8166,
+ 9095, 8287, 5770,
+ 9095, 8287, 5771, 0,
+ 9095, 8287, 6594,
+ 9095, 8287, 6595, 0,
+ 9095, 8287, 6912,
+ 9095, 8287, 6913, 0,
+ 9095, 8287, 6982,
+ 9095, 8287, 6983, 0,
+ 9095, 8287, 6983, 40,
+ 9095, 8287, 7166,
+ 9095, 8287, 7167, 0,
+ 9095, 8287, 7244,
+ 9095, 8287, 7245, 0,
+ 9095, 8287, 7372,
+ 9095, 8287, 7373, 0,
+ 9095, 8287, 7440,
+ 9095, 8287, 7441, 0,
+ 9095, 8287, 8362,
+ 9095, 8287, 8363, 0,
+ 9095, 8287, 8828,
+ 9095, 8287, 8829, 0,
+ 9095, 8287, 9086,
+ 9095, 8287, 9087, 0,
+ 9095, 8287, 9400,
+ 9095, 8287, 9401, 0,
+ 9095, 8287, 9588,
+ 9095, 8287, 9589, 0,
+ 9095, 8287, 9780,
+ 9095, 8287, 9781, 0,
+ 9095, 8371, 10759, 7014,
+ 9095, 8371, 10759, 8040,
+ 9095, 8525, 2670,
+ 9095, 8525, 6784,
+ 9095, 8525, 6804,
+ 9095, 8525, 6805, 2170,
+ 9095, 8525, 6805, 2540,
+ 9095, 8525, 6805, 2778,
+ 9095, 8525, 6805, 4200,
+ 9095, 8525, 6805, 4214,
+ 9095, 8525, 6805, 5190,
+ 9095, 8525, 6805, 6722,
+ 9095, 8525, 6805, 7508,
+ 9095, 8525, 6805, 7694,
+ 9095, 8525, 8162,
+ 9095, 8525, 8820,
+ 9095, 8525, 8821, 2170,
+ 9095, 8525, 8821, 2540,
+ 9095, 8525, 8821, 2778,
+ 9095, 8525, 8821, 4200,
+ 9095, 8525, 8821, 4214,
+ 9095, 8525, 8821, 5190,
+ 9095, 8525, 8821, 6722,
+ 9095, 8525, 8821, 7508,
+ 9095, 8525, 8821, 7694,
+ 9095, 8525, 8874,
+ 9095, 8525, 8876,
+ 9095, 8525, 8877, 2170,
+ 9095, 8525, 8877, 2540,
+ 9095, 8525, 8877, 2778,
+ 9095, 8525, 8877, 4200,
+ 9095, 8525, 8877, 4214,
+ 9095, 8525, 8877, 5190,
+ 9095, 8525, 8877, 6722,
+ 9095, 8525, 8877, 7508,
+ 9095, 8525, 8877, 7694,
+ 9095, 8525, 9286,
+ 9095, 8525, 9700,
+ 9095, 8525, 10150,
+ 9095, 8525, 10200,
+ 9095, 8525, 10360,
+ 9095, 8525, 10622,
+ 9095, 8525, 11232,
+ 9095, 8609, 4926,
+ 9095, 9633, 9718,
+ 9095, 9899, 10374,
+ 9095, 10017, 5758,
+ 9095, 10017, 7580,
+ 9095, 10283, 0,
+ 9095, 10283, 8,
+ 9095, 10283, 16,
+ 9095, 10283, 28,
+ 9095, 10283, 40,
+ 9095, 10283, 236,
+ 9095, 10283, 238,
+ 9095, 10283, 242,
+ 9095, 10283, 246,
+ 9095, 10283, 250,
+ 9095, 10283, 306,
+ 9095, 10283, 310,
+ 9095, 10283, 314,
+ 9095, 10283, 322,
+ 9095, 10283, 326,
+ 9095, 10283, 364,
+ 9095, 10283, 368,
+ 9095, 10283, 374,
+ 9095, 10283, 380,
+ 9095, 10283, 384,
+ 9095, 10283, 392,
+ 9095, 10283, 396,
+ 9095, 10283, 404,
+ 9095, 10283, 412,
+ 9095, 10283, 416,
+ 9095, 10283, 510,
+ 9095, 10283, 512,
+ 9095, 10283, 514,
+ 9095, 10283, 516,
+ 9095, 10283, 520,
+ 9095, 10283, 524,
+ 9095, 10283, 526,
+ 9095, 10283, 532,
+ 9095, 10283, 536,
+ 9095, 10283, 546,
+ 9095, 10283, 556,
+ 9095, 10283, 560,
+ 9095, 10283, 564,
+ 9095, 10283, 568,
+ 9095, 10283, 576,
+ 9095, 10283, 622,
+ 9095, 10283, 626,
+ 9095, 10283, 630,
+ 9095, 10283, 632,
+ 9095, 10283, 652,
+ 9095, 10283, 660,
+ 9095, 10283, 664,
+ 9095, 10410,
+ 9095, 10643, 4116,
+ 9095, 10677, 760,
+ 9095, 11043, 1808,
+ 9095, 11043, 2170,
+ 9095, 11043, 2540,
+ 9095, 11043, 2586,
+ 9095, 11043, 2670,
+ 9095, 11043, 2778,
+ 9095, 11043, 3956,
+ 9095, 11043, 4194,
+ 9095, 11043, 4200,
+ 9095, 11043, 4214,
+ 9095, 11043, 4396,
+ 9095, 11043, 4422,
+ 9095, 11043, 4620,
+ 9095, 11043, 4848,
+ 9095, 11043, 4922,
+ 9095, 11043, 5012,
+ 9095, 11043, 5046,
+ 9095, 11043, 5190,
+ 9095, 11043, 5540,
+ 9095, 11043, 6122,
+ 9095, 11043, 6716,
+ 9095, 11043, 6722,
+ 9095, 11043, 7072,
+ 9095, 11043, 7146,
+ 9095, 11043, 7246,
+ 9095, 11043, 7392,
+ 9095, 11043, 7442,
+ 9095, 11043, 7508,
+ 9095, 11043, 7640,
+ 9095, 11043, 7646,
+ 9095, 11043, 7694,
+ 9095, 11043, 7812,
+ 9095, 11043, 8036,
+ 9095, 11043, 8196,
+ 9095, 11043, 8682,
+ 9095, 11043, 9122,
+ 9095, 11043, 9714,
+ 9095, 11043, 9724,
+ 9095, 11043, 9862,
+ 9095, 11043, 10328,
+ 9095, 11043, 10478,
+ 9095, 11043, 10484,
+ 9095, 11043, 10576,
+ 9095, 11043, 10726,
+ 9095, 11043, 10980,
+ 9095, 11043, 10992,
+ 9095, 11043, 11266,
+ 9095, 11043, 11612,
+ 9095, 11043, 13050,
+ 9095, 11098,
+ 9095, 11649, 761, 6121, 7272,
+ 9095, 12472,
+ 9095, 12990,
+ 9095, 13061, 5759, 6121, 11449, 7908,
+ 9095, 13411, 10017, 5758,
+ 9109, 7666,
+ 9115, 10260,
+ 9127, 8770,
+ 9137, 10585, 0,
+ 9137, 10585, 8,
+ 9137, 10585, 16,
+ 9137, 10585, 28,
+ 9137, 10585, 40,
+ 9137, 10585, 292,
+ 9137, 10585, 298,
+ 9137, 10585, 306,
+ 9137, 10585, 310,
+ 9137, 10585, 314,
+ 9137, 10585, 322,
+ 9137, 10585, 326,
+ 9137, 10585, 332,
+ 9137, 10585, 336,
+ 9137, 10585, 340,
+ 9137, 10585, 350,
+ 9137, 10585, 354,
+ 9137, 10585, 364,
+ 9137, 10585, 368,
+ 9137, 10585, 374,
+ 9137, 10585, 380,
+ 9137, 10585, 384,
+ 9137, 10585, 392,
+ 9137, 10585, 396,
+ 9137, 10585, 404,
+ 9137, 10585, 412,
+ 9137, 10585, 416,
+ 9137, 10585, 462,
+ 9137, 10585, 468,
+ 9137, 10585, 476,
+ 9137, 10585, 480,
+ 9137, 10585, 486,
+ 9137, 10585, 510,
+ 9137, 10585, 512,
+ 9137, 10585, 514,
+ 9137, 10585, 516,
+ 9137, 10585, 520,
+ 9137, 10585, 524,
+ 9137, 10585, 526,
+ 9137, 10585, 532,
+ 9137, 10585, 536,
+ 9137, 10585, 546,
+ 9137, 10585, 556,
+ 9137, 10585, 560,
+ 9137, 10585, 564,
+ 9137, 10585, 568,
+ 9137, 10585, 576,
+ 9137, 10585, 622,
+ 9137, 10585, 626,
+ 9137, 10585, 630,
+ 9137, 10585, 632,
+ 9137, 10585, 638,
+ 9137, 10585, 640,
+ 9137, 10585, 670,
+ 9137, 10585, 678,
+ 9151, 11229, 1611, 8774,
+ 9155, 7593, 8405, 14,
+ 9155, 7593, 8405, 98,
+ 9155, 7593, 8405, 164,
+ 9155, 7593, 8405, 172,
+ 9155, 7593, 8405, 174,
+ 9155, 7593, 8405, 176,
+ 9155, 7593, 8405, 182,
+ 9155, 7593, 8405, 184,
+ 9155, 7593, 8405, 192,
+ 9155, 7593, 8405, 432,
+ 9155, 7593, 8405, 454,
+ 9155, 7593, 8405, 634,
+ 9155, 7593, 8405, 778,
+ 9155, 7593, 8405, 984,
+ 9155, 7593, 8405, 1110,
+ 9155, 7593, 8405, 1124,
+ 9155, 7593, 8405, 1130,
+ 9155, 7593, 8405, 1226,
+ 9155, 7593, 8405, 1506,
+ 9155, 7593, 8405, 1596,
+ 9155, 7593, 8405, 2204,
+ 9155, 7593, 8405, 2666,
+ 9155, 7593, 8405, 2856,
+ 9155, 7593, 8405, 3050,
+ 9155, 7593, 8405, 3138,
+ 9155, 7593, 8405, 3890,
+ 9155, 7593, 8405, 4895, 0,
+ 9155, 7593, 8405, 4895, 8,
+ 9155, 7593, 8405, 4895, 16,
+ 9155, 7593, 8405, 4895, 28,
+ 9155, 7593, 8405, 4895, 70,
+ 9155, 7593, 8405, 4895, 440,
+ 9155, 7593, 8405, 5914,
+ 9155, 7593, 8405, 6274,
+ 9155, 7593, 8405, 7551, 0,
+ 9155, 7593, 8405, 7551, 8,
+ 9155, 7593, 8405, 7551, 16,
+ 9155, 7593, 8405, 7551, 28,
+ 9155, 7593, 8405, 7551, 70,
+ 9155, 7593, 8405, 7551, 440,
+ 9155, 9063, 8405, 14,
+ 9155, 9063, 8405, 98,
+ 9155, 9063, 8405, 164,
+ 9155, 9063, 8405, 172,
+ 9155, 9063, 8405, 174,
+ 9155, 9063, 8405, 176,
+ 9155, 9063, 8405, 182,
+ 9155, 9063, 8405, 184,
+ 9155, 9063, 8405, 192,
+ 9155, 9063, 8405, 432,
+ 9155, 9063, 8405, 454,
+ 9155, 9063, 8405, 634,
+ 9155, 9063, 8405, 778,
+ 9155, 9063, 8405, 984,
+ 9155, 9063, 8405, 1110,
+ 9155, 9063, 8405, 1124,
+ 9155, 9063, 8405, 1130,
+ 9155, 9063, 8405, 1226,
+ 9155, 9063, 8405, 1506,
+ 9155, 9063, 8405, 1596,
+ 9155, 9063, 8405, 2204,
+ 9155, 9063, 8405, 2666,
+ 9155, 9063, 8405, 2856,
+ 9155, 9063, 8405, 3050,
+ 9155, 9063, 8405, 3138,
+ 9155, 9063, 8405, 3890,
+ 9155, 9063, 8405, 4895, 0,
+ 9155, 9063, 8405, 4895, 8,
+ 9155, 9063, 8405, 4895, 16,
+ 9155, 9063, 8405, 4895, 28,
+ 9155, 9063, 8405, 4895, 70,
+ 9155, 9063, 8405, 4895, 440,
+ 9155, 9063, 8405, 5914,
+ 9155, 9063, 8405, 6274,
+ 9155, 9063, 8405, 7551, 0,
+ 9155, 9063, 8405, 7551, 8,
+ 9155, 9063, 8405, 7551, 16,
+ 9155, 9063, 8405, 7551, 28,
+ 9155, 9063, 8405, 7551, 70,
+ 9155, 9063, 8405, 7551, 440,
+ 9159, 6121, 2725, 4389, 6504,
+ 9159, 6121, 4849, 4389, 6504,
+ 9159, 6121, 7443, 4389, 6504,
+ 9159, 6121, 8005, 4389, 6504,
+ 9159, 10374,
+ 9171, 9095, 11767, 6689, 2170,
+ 9171, 9095, 11767, 6689, 2540,
+ 9171, 9095, 11767, 6689, 2778,
+ 9171, 9095, 11767, 6689, 4200,
+ 9171, 9095, 11767, 6689, 4214,
+ 9171, 9095, 11767, 6689, 5190,
+ 9171, 9095, 11767, 6689, 6722,
+ 9171, 9095, 11767, 6689, 7508,
+ 9171, 9095, 11767, 6689, 7694,
+ 9171, 9095, 11767, 8525, 2670,
+ 9171, 10357, 9095, 6689, 2170,
+ 9171, 10357, 9095, 6689, 2540,
+ 9171, 10357, 9095, 6689, 2778,
+ 9171, 10357, 9095, 6689, 4200,
+ 9171, 10357, 9095, 6689, 4214,
+ 9171, 10357, 9095, 6689, 5190,
+ 9171, 10357, 9095, 6689, 6722,
+ 9171, 10357, 9095, 6689, 7508,
+ 9171, 10357, 9095, 6689, 7694,
+ 9171, 10357, 9095, 8525, 2670,
+ 9171, 10357, 9095, 11767, 6689, 2170,
+ 9171, 10357, 9095, 11767, 6689, 2540,
+ 9171, 10357, 9095, 11767, 6689, 2778,
+ 9171, 10357, 9095, 11767, 6689, 4200,
+ 9171, 10357, 9095, 11767, 6689, 4214,
+ 9171, 10357, 9095, 11767, 6689, 5190,
+ 9171, 10357, 9095, 11767, 6689, 6722,
+ 9171, 10357, 9095, 11767, 6689, 7508,
+ 9171, 10357, 9095, 11767, 6689, 7694,
+ 9171, 10357, 9095, 11767, 8525, 2670,
+ 9180,
+ 9183, 8774,
+ 9243, 4923, 5758,
+ 9243, 8197, 5758,
+ 9245, 5758,
+ 9263, 428,
+ 9263, 429, 6121, 1045, 6376,
+ 9263, 429, 6121, 2779, 11649, 9744,
+ 9263, 429, 6121, 4895, 11649, 8758,
+ 9263, 429, 6121, 9546,
+ 9263, 429, 6121, 10666,
+ 9263, 429, 6121, 10677, 761, 91, 1109, 429, 11649, 8758,
+ 9263, 429, 9537, 9810,
+ 9263, 429, 9537, 10958,
+ 9279, 10001, 9967, 7271, 4153, 6434,
+ 9279, 10001, 9967, 8649, 10000,
+ 9288,
+ 9292,
+ 9297, 2830,
+ 9317, 5758,
+ 9325, 5759, 10400,
+ 9325, 7803, 5759, 16,
+ 9325, 7803, 5759, 40,
+ 9325, 8405, 0,
+ 9325, 8405, 16,
+ 9325, 8405, 40,
+ 9325, 8405, 100,
+ 9325, 8405, 138,
+ 9325, 8405, 216,
+ 9325, 8405, 236,
+ 9325, 8405, 306,
+ 9325, 8405, 332,
+ 9325, 8405, 364,
+ 9325, 8405, 392,
+ 9325, 8405, 462,
+ 9325, 8405, 510,
+ 9325, 8405, 524,
+ 9325, 8405, 556,
+ 9325, 8405, 622,
+ 9325, 8405, 652,
+ 9325, 8405, 2030,
+ 9343, 5758,
+ 9361, 7931, 4213, 9680,
+ 9361, 11345, 10582,
+ 9367, 7821, 8056,
+ 9367, 8022,
+ 9380,
+ 9385, 73, 8399, 4926,
+ 9385, 5759, 7282,
+ 9385, 5759, 8916,
+ 9385, 5759, 9824,
+ 9385, 5759, 9870,
+ 9385, 5759, 9904,
+ 9385, 5759, 12066,
+ 9385, 5759, 12384,
+ 9385, 6689, 2170,
+ 9385, 6689, 2540,
+ 9385, 6689, 2778,
+ 9385, 6689, 4200,
+ 9385, 6689, 4214,
+ 9385, 6689, 5190,
+ 9385, 6689, 6260,
+ 9385, 6689, 6722,
+ 9385, 6689, 7508,
+ 9385, 6689, 7694,
+ 9385, 7803, 5759, 8,
+ 9385, 7803, 5759, 16,
+ 9385, 7803, 5759, 28,
+ 9385, 7803, 5759, 40,
+ 9385, 7803, 5759, 58,
+ 9385, 7803, 5759, 72,
+ 9385, 7803, 5759, 92,
+ 9385, 7803, 5759, 162,
+ 9385, 7803, 5759, 266,
+ 9385, 7803, 5759, 440,
+ 9385, 7803, 5759, 606,
+ 9385, 7803, 5759, 9827, 22,
+ 9385, 7803, 5759, 9827, 34,
+ 9385, 7803, 5759, 9827, 344,
+ 9385, 7803, 5759, 9827, 518,
+ 9385, 8399, 4926,
+ 9385, 8405, 0,
+ 9385, 8405, 8,
+ 9385, 8405, 16,
+ 9385, 8405, 28,
+ 9385, 8405, 40,
+ 9385, 8405, 58,
+ 9385, 8405, 72,
+ 9385, 8405, 92,
+ 9385, 8405, 100,
+ 9385, 8405, 116,
+ 9385, 8405, 138,
+ 9385, 8405, 162,
+ 9385, 8405, 196,
+ 9385, 8405, 216,
+ 9385, 8405, 236,
+ 9385, 8405, 266,
+ 9385, 8405, 292,
+ 9385, 8405, 306,
+ 9385, 8405, 332,
+ 9385, 8405, 364,
+ 9385, 8405, 392,
+ 9385, 8405, 440,
+ 9385, 8405, 462,
+ 9385, 8405, 510,
+ 9385, 8405, 524,
+ 9385, 8405, 556,
+ 9385, 8405, 606,
+ 9385, 8405, 610,
+ 9385, 8405, 652,
+ 9385, 8405, 792,
+ 9385, 8405, 884,
+ 9385, 8405, 974,
+ 9385, 8405, 996,
+ 9385, 8405, 1260,
+ 9385, 8405, 1512,
+ 9385, 8405, 1612,
+ 9385, 8405, 1796,
+ 9385, 8405, 2030,
+ 9385, 8405, 2076,
+ 9385, 8405, 2126,
+ 9385, 8405, 2212,
+ 9385, 8405, 2438,
+ 9385, 8405, 2516,
+ 9385, 8405, 2566,
+ 9385, 8405, 2678,
+ 9385, 8405, 2746,
+ 9385, 8405, 4016,
+ 9385, 8405, 5994,
+ 9385, 8405, 9827, 22,
+ 9385, 8405, 9827, 34,
+ 9385, 8405, 9827, 344,
+ 9385, 8405, 9827, 518,
+ 9431, 11103, 5758,
+ 9437, 444,
+ 9437, 445, 6121, 1045, 6376,
+ 9437, 445, 6121, 8153, 9546,
+ 9437, 445, 6121, 8153, 10666,
+ 9437, 445, 6121, 8473, 5832,
+ 9437, 445, 6121, 11649, 3992,
+ 9437, 445, 12105, 9437, 720,
+ 9437, 720,
+ 9437, 721, 6121, 1045, 6376,
+ 9437, 721, 6121, 8153, 9546,
+ 9437, 721, 6121, 8153, 10666,
+ 9437, 721, 6121, 8473, 5832,
+ 9437, 721, 6121, 10666,
+ 9437, 721, 6121, 11649, 3992,
+ 9438,
+ 9439, 9177, 115, 11649, 5606,
+ 9443, 5941, 2171, 429, 9020,
+ 9443, 5941, 2171, 429, 9096,
+ 9443, 5941, 2171, 429, 11446,
+ 9443, 5941, 2401, 8154,
+ 9443, 5941, 2541, 429, 9020,
+ 9443, 5941, 2541, 429, 9096,
+ 9443, 5941, 2541, 429, 11446,
+ 9443, 5941, 2779, 429, 9020,
+ 9443, 5941, 2779, 429, 9096,
+ 9443, 5941, 2779, 429, 11446,
+ 9443, 5941, 3696,
+ 9443, 5941, 4153, 6116,
+ 9443, 5941, 4201, 429, 9020,
+ 9443, 5941, 4201, 429, 9096,
+ 9443, 5941, 4201, 429, 11446,
+ 9443, 5941, 4215, 429, 9020,
+ 9443, 5941, 4215, 429, 9096,
+ 9443, 5941, 4215, 429, 11446,
+ 9443, 5941, 5191, 429, 9020,
+ 9443, 5941, 5191, 429, 9096,
+ 9443, 5941, 5191, 429, 11446,
+ 9443, 5941, 5442,
+ 9443, 5941, 6113, 6116,
+ 9443, 5941, 6723, 429, 9020,
+ 9443, 5941, 6723, 429, 9096,
+ 9443, 5941, 6723, 429, 11446,
+ 9443, 5941, 6881, 8154,
+ 9443, 5941, 7010,
+ 9443, 5941, 7271, 6116,
+ 9443, 5941, 7509, 429, 9020,
+ 9443, 5941, 7509, 429, 9096,
+ 9443, 5941, 7509, 429, 11446,
+ 9443, 5941, 7607, 6116,
+ 9443, 5941, 7695, 429, 9020,
+ 9443, 5941, 7695, 429, 9096,
+ 9443, 5941, 7695, 429, 11446,
+ 9443, 5941, 7821, 8154,
+ 9443, 5941, 7960,
+ 9443, 5941, 7974,
+ 9443, 5941, 8546,
+ 9443, 5941, 8738,
+ 9443, 5941, 8766,
+ 9443, 5941, 8934,
+ 9443, 5941, 12912,
+ 9453, 6622,
+ 9472,
+ 9475, 11649, 10154,
+ 9483, 8775, 5, 3946,
+ 9483, 8775, 11, 3946,
+ 9483, 8775, 11, 3947, 8553, 3254,
+ 9483, 8775, 11, 3947, 8553, 6468,
+ 9483, 8775, 13, 3946,
+ 9483, 8775, 13, 3947, 8553, 3254,
+ 9483, 8775, 13, 3947, 8553, 6468,
+ 9483, 8775, 47, 10366,
+ 9483, 8775, 50,
+ 9483, 8775, 139, 3846,
+ 9483, 8775, 570,
+ 9483, 8775, 933, 5942,
+ 9483, 8775, 961, 7500,
+ 9483, 8775, 1109, 429, 8750,
+ 9483, 8775, 1109, 2690,
+ 9483, 8775, 1109, 3760,
+ 9483, 8775, 1109, 5776,
+ 9483, 8775, 1109, 8584,
+ 9483, 8775, 2171, 9345, 13031, 5244,
+ 9483, 8775, 2171, 9345, 13031, 5540,
+ 9483, 8775, 2211, 11838,
+ 9483, 8775, 3950,
+ 9483, 8775, 3984,
+ 9483, 8775, 3985, 718,
+ 9483, 8775, 4121, 8058,
+ 9483, 8775, 4121, 8060,
+ 9483, 8775, 4205, 600,
+ 9483, 8775, 4205, 4116,
+ 9483, 8775, 4227, 6504,
+ 9483, 8775, 4227, 7820,
+ 9483, 8775, 4389, 5244,
+ 9483, 8775, 4389, 5540,
+ 9483, 8775, 4389, 7351, 4926,
+ 9483, 8775, 4849, 8641, 5758,
+ 9483, 8775, 5013, 10367, 6504,
+ 9483, 8775, 5013, 10367, 7820,
+ 9483, 8775, 5281, 10366,
+ 9483, 8775, 5445, 10366,
+ 9483, 8775, 6020,
+ 9483, 8775, 6021, 600,
+ 9483, 8775, 6021, 7580,
+ 9483, 8775, 6093, 10366,
+ 9483, 8775, 6121, 12018,
+ 9483, 8775, 6485, 2690,
+ 9483, 8775, 6485, 3760,
+ 9483, 8775, 6485, 5776,
+ 9483, 8775, 6485, 8584,
+ 9483, 8775, 6514,
+ 9483, 8775, 6516,
+ 9483, 8775, 6620,
+ 9483, 8775, 6789, 9022,
+ 9483, 8775, 6802,
+ 9483, 8775, 6869, 5245, 413, 7580,
+ 9483, 8775, 6869, 5245, 7580,
+ 9483, 8775, 7112,
+ 9483, 8775, 7113, 10423, 5540,
+ 9483, 8775, 7113, 11659, 5540,
+ 9483, 8775, 7150,
+ 9483, 8775, 7191, 5540,
+ 9483, 8775, 7351, 601, 4926,
+ 9483, 8775, 7351, 4926,
+ 9483, 8775, 7368,
+ 9483, 8775, 7443, 8641, 5758,
+ 9483, 8775, 7500,
+ 9483, 8775, 7519, 600,
+ 9483, 8775, 7519, 4116,
+ 9483, 8775, 7551, 9022,
+ 9483, 8775, 7796,
+ 9483, 8775, 7823, 5244,
+ 9483, 8775, 7823, 5540,
+ 9483, 8775, 8011, 4926,
+ 9483, 8775, 8012,
+ 9483, 8775, 8013, 5540,
+ 9483, 8775, 8057, 47, 10366,
+ 9483, 8775, 8062,
+ 9483, 8775, 8073, 5942,
+ 9483, 8775, 8097, 9022,
+ 9483, 8775, 8101, 7580,
+ 9483, 8775, 8153, 4204,
+ 9483, 8775, 8153, 7518,
+ 9483, 8775, 8153, 9022,
+ 9483, 8775, 8159, 5244,
+ 9483, 8775, 8159, 5540,
+ 9483, 8775, 8458,
+ 9483, 8775, 8478,
+ 9483, 8775, 8479, 5540,
+ 9483, 8775, 8479, 6504,
+ 9483, 8775, 8553, 3254,
+ 9483, 8775, 8553, 6468,
+ 9483, 8775, 8641, 4112,
+ 9483, 8775, 8717, 9022,
+ 9483, 8775, 8745, 2,
+ 9483, 8775, 8745, 10367, 6504,
+ 9483, 8775, 8745, 10367, 7820,
+ 9483, 8775, 8760,
+ 9483, 8775, 8805, 11167, 925, 11739, 10422,
+ 9483, 8775, 8805, 11167, 925, 11739, 10423, 12438,
+ 9483, 8775, 8805, 11167, 925, 11739, 11658,
+ 9483, 8775, 8805, 12051, 925, 11739, 10422,
+ 9483, 8775, 8805, 12051, 925, 11739, 11658,
+ 9483, 8775, 8805, 12051, 925, 11739, 11659, 12438,
+ 9483, 8775, 8805, 12051, 925, 11739, 11659, 12440,
+ 9483, 8775, 8805, 12051, 925, 11739, 11659, 12442,
+ 9483, 8775, 9050,
+ 9483, 8775, 9060,
+ 9483, 8775, 9105, 10367, 6504,
+ 9483, 8775, 9105, 10367, 7820,
+ 9483, 8775, 9284,
+ 9483, 8775, 9285, 6490,
+ 9483, 8775, 9491, 600,
+ 9483, 8775, 9491, 4116,
+ 9483, 8775, 9598,
+ 9483, 8775, 9615, 5244,
+ 9483, 8775, 9615, 5540,
+ 9483, 8775, 9615, 5965, 4204,
+ 9483, 8775, 9615, 5965, 7518,
+ 9483, 8775, 9633, 6789, 9022,
+ 9483, 8775, 9950,
+ 9483, 8775, 10189, 11366,
+ 9483, 8775, 10189, 11368,
+ 9483, 8775, 10189, 11370,
+ 9483, 8775, 10267, 6020,
+ 9483, 8775, 10349, 9467, 5540,
+ 9483, 8775, 10367, 6504,
+ 9483, 8775, 10373, 7626,
+ 9483, 8775, 10381, 10554,
+ 9483, 8775, 10381, 10556,
+ 9483, 8775, 10381, 10558,
+ 9483, 8775, 10381, 10560,
+ 9483, 8775, 10381, 10562,
+ 9483, 8775, 10381, 10564,
+ 9483, 8775, 10381, 10566,
+ 9483, 8775, 10381, 10568,
+ 9483, 8775, 10381, 10570,
+ 9483, 8775, 10381, 11252,
+ 9483, 8775, 10381, 11254,
+ 9483, 8775, 10483, 10182,
+ 9483, 8775, 10483, 10184,
+ 9483, 8775, 10483, 10186,
+ 9483, 8775, 10527, 7626,
+ 9483, 8775, 10634,
+ 9483, 8775, 10635, 11212,
+ 9483, 8775, 10643, 10367, 601, 6504,
+ 9483, 8775, 10643, 10367, 601, 7443, 6504,
+ 9483, 8775, 10643, 10367, 601, 7443, 7820,
+ 9483, 8775, 10643, 10367, 601, 7820,
+ 9483, 8775, 10643, 10367, 4117, 6504,
+ 9483, 8775, 10643, 10367, 4117, 7820,
+ 9483, 8775, 10643, 10367, 4849, 6504,
+ 9483, 8775, 10643, 10367, 4849, 7820,
+ 9483, 8775, 10643, 10367, 7443, 6504,
+ 9483, 8775, 10643, 10367, 7443, 7820,
+ 9483, 8775, 10659, 7626,
+ 9483, 8775, 10767, 601, 824,
+ 9483, 8775, 10767, 2418,
+ 9483, 8775, 10767, 3772,
+ 9483, 8775, 10767, 4104,
+ 9483, 8775, 10767, 4117, 824,
+ 9483, 8775, 10767, 4206,
+ 9483, 8775, 10767, 5779, 11174,
+ 9483, 8775, 10767, 5832,
+ 9483, 8775, 10767, 7116,
+ 9483, 8775, 10767, 7596,
+ 9483, 8775, 10767, 7908,
+ 9483, 8775, 10767, 8153, 8844,
+ 9483, 8775, 10767, 8210,
+ 9483, 8775, 10767, 8212,
+ 9483, 8775, 10767, 8214,
+ 9483, 8775, 10767, 8216,
+ 9483, 8775, 10767, 8218,
+ 9483, 8775, 10767, 8806,
+ 9483, 8775, 10767, 8849, 8844,
+ 9483, 8775, 10767, 9458,
+ 9483, 8775, 10767, 10236,
+ 9483, 8775, 10767, 10534,
+ 9483, 8775, 10767, 11366,
+ 9483, 8775, 10767, 11368,
+ 9483, 8775, 10767, 11370,
+ 9483, 8775, 10767, 12407, 1044,
+ 9483, 8775, 10767, 12871, 5832,
+ 9483, 8775, 10767, 13016,
+ 9483, 8775, 10767, 13184,
+ 9483, 8775, 10767, 13340,
+ 9483, 8775, 10784,
+ 9483, 8775, 10995, 7626,
+ 9483, 8775, 11005, 7626,
+ 9483, 8775, 11019, 600,
+ 9483, 8775, 11019, 4116,
+ 9483, 8775, 11027, 5, 3946,
+ 9483, 8775, 11027, 11, 3946,
+ 9483, 8775, 11176,
+ 9483, 8775, 11177, 8220,
+ 9483, 8775, 11220,
+ 9483, 8775, 11221, 8220,
+ 9483, 8775, 11241, 5244,
+ 9483, 8775, 11241, 5540,
+ 9483, 8775, 11429, 600,
+ 9483, 8775, 11429, 4116,
+ 9483, 8775, 11789, 5540,
+ 9483, 8775, 11789, 6504,
+ 9483, 8775, 11789, 7820,
+ 9483, 8775, 11795, 5540,
+ 9483, 8775, 11795, 6504,
+ 9483, 8775, 11795, 7820,
+ 9483, 8775, 11821, 11006,
+ 9483, 8775, 11857, 7626,
+ 9483, 8775, 11928,
+ 9483, 8775, 12023, 11006,
+ 9483, 8775, 12028,
+ 9483, 8775, 12092,
+ 9483, 8775, 12115, 10366,
+ 9483, 8775, 12152,
+ 9483, 8775, 12531, 3254,
+ 9483, 8775, 12531, 6468,
+ 9483, 8775, 12867, 5244,
+ 9483, 8775, 12867, 5540,
+ 9483, 8775, 13025, 5244,
+ 9483, 8775, 13025, 5540,
+ 9483, 8775, 13081, 10367, 4117, 6504,
+ 9483, 8775, 13081, 10367, 4117, 7820,
+ 9485, 5671, 6689, 2170,
+ 9485, 5671, 6689, 2540,
+ 9485, 5671, 6689, 2778,
+ 9485, 5671, 6689, 4200,
+ 9485, 5671, 6689, 4214,
+ 9485, 5671, 6689, 5190,
+ 9485, 5671, 6689, 6260,
+ 9485, 5671, 6689, 6722,
+ 9485, 5671, 6689, 7508,
+ 9485, 5671, 6689, 7694,
+ 9485, 5759, 1045, 6490,
+ 9485, 5759, 3278,
+ 9485, 5759, 5671, 8834,
+ 9485, 5759, 5671, 8836,
+ 9485, 5759, 5671, 8840,
+ 9485, 5759, 5671, 8842,
+ 9485, 5759, 5671, 9125, 8834,
+ 9485, 5759, 5671, 9125, 8836,
+ 9485, 5759, 5671, 9125, 10159, 5964,
+ 9485, 5759, 7465, 9555, 8840,
+ 9485, 5759, 8425, 9664,
+ 9485, 5759, 8916,
+ 9485, 5759, 9664,
+ 9485, 5759, 9824,
+ 9485, 5759, 9839, 2273, 7025, 8832,
+ 9485, 5759, 9839, 2273, 7025, 8834,
+ 9485, 5759, 9839, 2273, 7025, 8836,
+ 9485, 5759, 9839, 2273, 7025, 8838,
+ 9485, 5759, 9839, 2273, 7025, 8840,
+ 9485, 5759, 9870,
+ 9485, 5965, 4927, 5657, 7025, 311, 2218,
+ 9485, 5965, 4927, 5657, 7025, 6902,
+ 9485, 6689, 2170,
+ 9485, 6689, 2540,
+ 9485, 6689, 2778,
+ 9485, 6689, 4200,
+ 9485, 6689, 4214,
+ 9485, 6689, 5190,
+ 9485, 6689, 6260,
+ 9485, 6689, 6722,
+ 9485, 6689, 7508,
+ 9485, 6689, 7694,
+ 9485, 7803, 5759, 8,
+ 9485, 7803, 5759, 9, 6376,
+ 9485, 7803, 5759, 16,
+ 9485, 7803, 5759, 40,
+ 9485, 7803, 5759, 58,
+ 9485, 7803, 5759, 72,
+ 9485, 7803, 5759, 266,
+ 9485, 7803, 5759, 606,
+ 9485, 7803, 5759, 1937, 28,
+ 9485, 7803, 5759, 1937, 266,
+ 9485, 7803, 5759, 4263, 7025, 16,
+ 9485, 7803, 5759, 5657, 7025, 188,
+ 9485, 7803, 5759, 5671, 8,
+ 9485, 7803, 5759, 5671, 9, 6376,
+ 9485, 7803, 5759, 5671, 58,
+ 9485, 7803, 5759, 5671, 6789, 48,
+ 9485, 7803, 5759, 5885, 58,
+ 9485, 7803, 5759, 7031, 40,
+ 9485, 7803, 5759, 7031, 162,
+ 9485, 7803, 5759, 7031, 426,
+ 9485, 7803, 5759, 9827, 22,
+ 9485, 7803, 5759, 9827, 34,
+ 9485, 7803, 5759, 9827, 344,
+ 9485, 7803, 5759, 9827, 518,
+ 9485, 7803, 5759, 9839, 2273, 7025, 188,
+ 9485, 7803, 5759, 9839, 2273, 7025, 590,
+ 9485, 8405, 0,
+ 9485, 8405, 8,
+ 9485, 8405, 16,
+ 9485, 8405, 28,
+ 9485, 8405, 40,
+ 9485, 8405, 92,
+ 9485, 8405, 100,
+ 9485, 8405, 116,
+ 9485, 8405, 138,
+ 9485, 8405, 216,
+ 9485, 8405, 236,
+ 9485, 8405, 266,
+ 9485, 8405, 292,
+ 9485, 8405, 306,
+ 9485, 8405, 332,
+ 9485, 8405, 364,
+ 9485, 8405, 392,
+ 9485, 8405, 462,
+ 9485, 8405, 510,
+ 9485, 8405, 524,
+ 9485, 8405, 556,
+ 9485, 8405, 606,
+ 9485, 8405, 622,
+ 9485, 8405, 652,
+ 9485, 8405, 792,
+ 9485, 8405, 884,
+ 9485, 8405, 974,
+ 9485, 8405, 996,
+ 9485, 8405, 1260,
+ 9485, 8405, 1512,
+ 9485, 8405, 1612,
+ 9485, 8405, 1796,
+ 9485, 8405, 1937, 8,
+ 9485, 8405, 1937, 766,
+ 9485, 8405, 1937, 768,
+ 9485, 8405, 1937, 1512,
+ 9485, 8405, 1937, 2030,
+ 9485, 8405, 2030,
+ 9485, 8405, 2076,
+ 9485, 8405, 2126,
+ 9485, 8405, 2212,
+ 9485, 8405, 2516,
+ 9485, 8405, 2566,
+ 9485, 8405, 2678,
+ 9485, 8405, 2746,
+ 9485, 8405, 4016,
+ 9485, 8405, 5236,
+ 9485, 8405, 5657, 7025, 2516,
+ 9485, 8405, 5671, 0,
+ 9485, 8405, 5671, 100,
+ 9485, 8405, 5671, 116,
+ 9485, 8405, 5671, 138,
+ 9485, 8405, 5671, 196,
+ 9485, 8405, 5671, 216,
+ 9485, 8405, 5671, 236,
+ 9485, 8405, 5671, 306,
+ 9485, 8405, 5671, 392,
+ 9485, 8405, 5671, 670,
+ 9485, 8405, 5671, 1612,
+ 9485, 8405, 5671, 2126,
+ 9485, 8405, 5671, 2212,
+ 9485, 8405, 5671, 2678,
+ 9485, 8405, 5994,
+ 9485, 8405, 6877, 524,
+ 9485, 8405, 7465, 9555, 196,
+ 9485, 8405, 9253, 2273, 7025, 2076,
+ 9485, 8405, 9253, 2273, 7025, 3102,
+ 9485, 8405, 9253, 2273, 7025, 4322,
+ 9485, 8405, 9827, 22,
+ 9485, 8405, 9827, 34,
+ 9485, 8405, 9827, 344,
+ 9485, 8405, 9827, 518,
+ 9485, 8405, 9839, 2273, 7025, 2266,
+ 9485, 8405, 9839, 2273, 7025, 2678,
+ 9485, 8775, 5671, 2170,
+ 9485, 8775, 5671, 12016,
+ 9485, 8775, 10218,
+ 9485, 8775, 10304,
+ 9485, 8775, 10768,
+ 9485, 8775, 13040,
+ 9485, 10775, 5759, 1937, 8461, 332,
+ 9485, 10775, 5759, 1937, 8461, 364,
+ 9485, 10775, 5759, 1937, 8461, 392,
+ 9485, 10775, 5759, 5671, 8461, 622,
+ 9485, 10775, 5759, 8461, 236,
+ 9485, 10775, 5759, 8461, 510,
+ 9485, 10775, 5759, 8461, 622,
+ 9485, 10775, 5759, 8461, 652,
+ 9495, 8153, 10677, 761, 8153, 7443, 11378,
+ 9497, 1, 8763, 429, 2089, 6741, 568,
+ 9497, 1, 10579, 429, 2089, 6741, 568,
+ 9497, 11099, 2089, 6741, 568,
+ 9497, 11099, 2089, 11621, 568,
+ 9497, 11099, 2089, 12472,
+ 9497, 12473, 2089, 6741, 568,
+ 9497, 12473, 2089, 11098,
+ 9497, 12473, 2089, 11621, 568,
+ 9497, 12903, 2089, 9855, 6741, 568,
+ 9498,
+ 9509, 6689, 8696,
+ 9511, 7121, 13069, 7821, 11765, 6434,
+ 9511, 7773, 13069, 7821, 11765, 6434,
+ 9525, 6409, 9537, 600,
+ 9525, 6409, 9537, 4116,
+ 9541, 6689, 2170,
+ 9541, 6689, 2540,
+ 9541, 6689, 2778,
+ 9541, 6689, 4200,
+ 9541, 6689, 4214,
+ 9541, 6689, 5190,
+ 9541, 6689, 6260,
+ 9541, 6689, 6722,
+ 9541, 6689, 7508,
+ 9541, 6689, 7694,
+ 9541, 8405, 0,
+ 9541, 8405, 8,
+ 9541, 8405, 16,
+ 9541, 8405, 28,
+ 9541, 8405, 40,
+ 9541, 8405, 58,
+ 9541, 8405, 100,
+ 9541, 8405, 162,
+ 9541, 8405, 196,
+ 9541, 8405, 216,
+ 9541, 8405, 236,
+ 9541, 8405, 292,
+ 9541, 8405, 440,
+ 9541, 8405, 510,
+ 9541, 8405, 524,
+ 9541, 8405, 556,
+ 9541, 8405, 638,
+ 9541, 8405, 652,
+ 9541, 8405, 996,
+ 9541, 8405, 1612,
+ 9541, 8405, 2918,
+ 9541, 8405, 3244,
+ 9541, 8405, 3854,
+ 9541, 8405, 4050,
+ 9541, 8405, 4698,
+ 9541, 8405, 4820,
+ 9541, 8405, 5000,
+ 9541, 8405, 5288,
+ 9541, 8405, 5470,
+ 9541, 8405, 7540,
+ 9573, 12432,
+ 9581, 5758,
+ 9595, 5758,
+ 9615, 5244,
+ 9617, 8775, 8004,
+ 9633, 7709, 10375, 6377, 11097, 6434,
+ 9633, 7709, 10375, 6377, 11765, 6434,
+ 9633, 9718,
+ 9633, 9719, 6121, 11649, 8758,
+ 9633, 9719, 10374,
+ 9633, 9719, 11183, 8762,
+ 9641, 6909, 6505, 6907, 8022,
+ 9641, 8225, 6907, 8022,
+ 9641, 9063, 32,
+ 9650,
+ 9660,
+ 9665, 5758,
+ 9666,
+ 9671, 4926,
+ 9676,
+ 9683, 8405, 70,
+ 9683, 8405, 260,
+ 9683, 8405, 438,
+ 9683, 8405, 444,
+ 9683, 8405, 536,
+ 9683, 8405, 600,
+ 9683, 8405, 706,
+ 9683, 8405, 708,
+ 9683, 8405, 712,
+ 9683, 8405, 732,
+ 9683, 8405, 736,
+ 9683, 8405, 740,
+ 9683, 8405, 802,
+ 9683, 8405, 1090,
+ 9683, 8405, 1092,
+ 9683, 8405, 1100,
+ 9683, 8405, 1120,
+ 9683, 8405, 1150,
+ 9683, 8405, 1210,
+ 9683, 8405, 1472,
+ 9683, 8405, 1474,
+ 9683, 8405, 2110,
+ 9683, 8405, 2154,
+ 9683, 8405, 2164,
+ 9683, 8405, 2186,
+ 9683, 8405, 2726,
+ 9683, 8405, 2884,
+ 9683, 8405, 2938,
+ 9683, 8405, 3048,
+ 9683, 8405, 3060,
+ 9683, 8405, 3178,
+ 9683, 8405, 4048,
+ 9683, 8405, 4548,
+ 9683, 8405, 4754,
+ 9683, 8405, 4892,
+ 9683, 8405, 5004,
+ 9683, 8405, 5382,
+ 9683, 8405, 5406,
+ 9683, 8405, 5560,
+ 9683, 8405, 5854,
+ 9683, 8405, 5922,
+ 9683, 8405, 6124,
+ 9683, 8405, 6432,
+ 9683, 8405, 6886,
+ 9683, 8405, 7012,
+ 9683, 8405, 7684,
+ 9683, 8405, 8054,
+ 9683, 8405, 9466,
+ 9689, 9610,
+ 9693, 445, 11098,
+ 9693, 445, 12472,
+ 9693, 6377, 11099, 6377, 8167, 5758,
+ 9693, 6377, 12473, 6377, 8167, 5758,
+ 9693, 7173, 9692,
+ 9695, 5759, 10702,
+ 9695, 5759, 11392,
+ 9695, 5759, 11418,
+ 9695, 7803, 5759, 4087, 9406,
+ 9695, 7803, 5759, 4087, 10272,
+ 9695, 7803, 5759, 4087, 11150,
+ 9695, 7803, 5759, 4087, 11406,
+ 9695, 7803, 5759, 4087, 12024,
+ 9695, 7803, 5759, 4087, 12468,
+ 9695, 7803, 5759, 7043, 10272,
+ 9695, 7803, 5759, 7043, 11150,
+ 9695, 7803, 5759, 7043, 11406,
+ 9695, 7803, 5759, 7059, 4056,
+ 9695, 7803, 5759, 9406,
+ 9695, 7803, 5759, 9407, 1339, 4087, 11408,
+ 9695, 7803, 5759, 9407, 1339, 11408,
+ 9695, 7803, 5759, 9407, 1339, 12024,
+ 9695, 7803, 5759, 11408,
+ 9695, 7803, 5759, 12024,
+ 9695, 7803, 5759, 12468,
+ 9695, 8405, 3259, 9032,
+ 9695, 8405, 7962,
+ 9695, 8405, 8176,
+ 9695, 8405, 8326,
+ 9695, 8405, 8558,
+ 9695, 8405, 8904,
+ 9695, 8405, 8966,
+ 9695, 8405, 8978,
+ 9695, 8405, 8988,
+ 9695, 8405, 9012,
+ 9695, 8405, 9141, 9424,
+ 9695, 8405, 9141, 9492,
+ 9695, 8405, 9141, 9656,
+ 9695, 8405, 9256,
+ 9695, 8405, 9280,
+ 9695, 8405, 9330,
+ 9695, 8405, 9352,
+ 9695, 8405, 9387, 11692,
+ 9695, 8405, 9464,
+ 9695, 8405, 9534,
+ 9695, 8405, 9622,
+ 9695, 8405, 9655, 9146,
+ 9695, 8405, 9655, 9302,
+ 9695, 8405, 9655, 9376,
+ 9695, 8405, 9655, 9988,
+ 9695, 8405, 9759, 9656,
+ 9695, 8405, 9759, 10499, 12090,
+ 9695, 8405, 9759, 11692,
+ 9695, 8405, 9812,
+ 9695, 8405, 9818,
+ 9695, 8405, 9844,
+ 9695, 8405, 9856,
+ 9695, 8405, 10248,
+ 9695, 8405, 10270,
+ 9695, 8405, 11044,
+ 9695, 8405, 11064,
+ 9695, 8405, 11133, 9424,
+ 9695, 8405, 11133, 9492,
+ 9695, 8405, 11133, 9656,
+ 9695, 8405, 11411, 9032,
+ 9695, 8405, 11411, 9070,
+ 9695, 8405, 11411, 9146,
+ 9695, 8405, 11411, 9302,
+ 9695, 8405, 11411, 9376,
+ 9695, 8405, 11411, 9392,
+ 9695, 8405, 11411, 9576,
+ 9695, 8405, 11411, 9768,
+ 9695, 8405, 11411, 9988,
+ 9695, 8405, 11411, 10652,
+ 9695, 8405, 12077, 9032,
+ 9695, 8405, 12077, 9070,
+ 9695, 8405, 12077, 9146,
+ 9695, 8405, 12077, 9302,
+ 9695, 8405, 12077, 9376,
+ 9695, 8405, 12077, 9392,
+ 9695, 8405, 12077, 9576,
+ 9695, 8405, 12077, 9768,
+ 9695, 8405, 12077, 9988,
+ 9695, 8405, 12077, 10652,
+ 9695, 12133, 11670,
+ 9701, 9601, 9898,
+ 9705, 6741, 569, 445, 11098,
+ 9705, 6741, 569, 445, 11099, 6121, 1045, 8318,
+ 9705, 6741, 569, 445, 12472,
+ 9705, 6741, 569, 445, 12473, 6121, 1045, 8318,
+ 9707, 7085, 444,
+ 9707, 7085, 720,
+ 9709, 5912,
+ 9709, 5913, 445, 6741, 568,
+ 9712,
+ 9718,
+ 9719, 6121, 9546,
+ 9722,
+ 9733, 1045, 10374,
+ 9733, 4215, 1045, 12132,
+ 9733, 5444,
+ 9733, 7172,
+ 9733, 7593, 8056,
+ 9733, 7710,
+ 9733, 8649, 10001, 7580,
+ 9733, 8744,
+ 9733, 9279, 10001, 7580,
+ 9733, 9898,
+ 9753, 10260,
+ 9761, 5759, 8916,
+ 9761, 7803, 5759, 16,
+ 9761, 7803, 5759, 40,
+ 9761, 8405, 0,
+ 9761, 8405, 16,
+ 9761, 8405, 40,
+ 9761, 8405, 100,
+ 9761, 8405, 138,
+ 9761, 8405, 216,
+ 9761, 8405, 236,
+ 9761, 8405, 306,
+ 9761, 8405, 332,
+ 9761, 8405, 364,
+ 9761, 8405, 392,
+ 9761, 8405, 462,
+ 9761, 8405, 524,
+ 9761, 8405, 556,
+ 9761, 8405, 622,
+ 9761, 8405, 652,
+ 9761, 8405, 2030,
+ 9783, 12369, 11765, 10716,
+ 9783, 13049, 11765, 10716,
+ 9789, 327, 521, 1612,
+ 9789, 327, 521, 1613, 3831, 1915, 858,
+ 9789, 4927, 723, 7045, 4376,
+ 9789, 4927, 723, 7045, 4382,
+ 9789, 4927, 887, 1904,
+ 9789, 4927, 1307, 7463, 4376,
+ 9789, 4927, 1307, 7463, 4382,
+ 9789, 4927, 2417, 3895, 8743, 5668,
+ 9789, 4927, 2733, 6374,
+ 9789, 4927, 3067, 1905, 7745, 5669, 364,
+ 9789, 4927, 3793, 5709, 3067, 1904,
+ 9789, 4927, 4355, 3067, 1905, 685, 4355, 7745, 364,
+ 9789, 4927, 4355, 3067, 1905, 685, 5559, 3759, 364,
+ 9789, 4927, 4355, 3067, 1905, 11377, 0,
+ 9789, 4927, 4355, 7744,
+ 9789, 4927, 5141, 6539, 2133, 3174,
+ 9789, 4927, 5141, 6539, 5659, 7462,
+ 9789, 4927, 5307, 5668,
+ 9789, 4927, 5307, 7744,
+ 9789, 4927, 5307, 7745, 5668,
+ 9789, 4927, 5543, 4351, 5668,
+ 9789, 4927, 5668,
+ 9789, 4927, 6523, 7462,
+ 9789, 4927, 6525, 5709, 225, 1905, 7436,
+ 9789, 4927, 6527, 3067, 1904,
+ 9789, 4927, 6543, 3067, 1905, 5421, 5669, 364,
+ 9789, 4927, 6543, 6373, 7463, 369, 4895, 858,
+ 9789, 4927, 6543, 6373, 7463, 3831, 1915, 858,
+ 9789, 4927, 7179, 3067, 225, 1905, 7436,
+ 9789, 4927, 7493, 5668,
+ 9789, 4927, 7745, 5668,
+ 9789, 4927, 8564,
+ 9789, 4927, 9099, 3067, 1905, 5655, 364,
+ 9789, 4927, 9099, 3809, 8653, 3067, 1905, 5655, 364,
+ 9789, 4927, 9320,
+ 9789, 4927, 9363, 3067, 1905, 4939, 364,
+ 9789, 4927, 9363, 3809, 8653, 3067, 1905, 4939, 364,
+ 9789, 4927, 10795, 7745, 6528,
+ 9789, 4927, 12955, 7744,
+ 9789, 5759, 1301, 859, 9634,
+ 9789, 5759, 1301, 1889, 9634,
+ 9789, 5759, 1753, 2733, 858,
+ 9789, 5759, 1755, 7462,
+ 9789, 5759, 1865, 7746,
+ 9789, 5759, 2133, 3175, 1983, 138,
+ 9789, 5759, 2547, 4842,
+ 9789, 5759, 3035, 7746,
+ 9789, 5759, 4937, 858,
+ 9789, 5759, 5531, 1985, 4256,
+ 9789, 5759, 5531, 1985, 4352,
+ 9789, 5759, 5531, 1985, 5531, 4096,
+ 9789, 5759, 5531, 1985, 6862,
+ 9789, 5759, 5531, 4097, 4256,
+ 9789, 5759, 5531, 4097, 4352,
+ 9789, 5759, 5531, 4097, 5531, 1984,
+ 9789, 5759, 5531, 4097, 6862,
+ 9789, 5759, 5557, 547, 2031, 516,
+ 9789, 5759, 5559, 3758,
+ 9789, 5759, 6179, 7462,
+ 9789, 6689, 2170,
+ 9789, 6689, 2540,
+ 9789, 6689, 2778,
+ 9789, 6689, 4200,
+ 9789, 6689, 4214,
+ 9789, 6689, 4389, 2170,
+ 9789, 6689, 4389, 2540,
+ 9789, 6689, 4389, 2778,
+ 9789, 6689, 4389, 4200,
+ 9789, 6689, 4389, 4214,
+ 9789, 6689, 4389, 5190,
+ 9789, 6689, 4389, 6260,
+ 9789, 6689, 4389, 6722,
+ 9789, 6689, 4389, 7508,
+ 9789, 6689, 4389, 7694,
+ 9789, 6689, 5190,
+ 9789, 6689, 6260,
+ 9789, 6689, 6722,
+ 9789, 6689, 7508,
+ 9789, 6689, 7694,
+ 9789, 7803, 5759, 8,
+ 9789, 7803, 5759, 16,
+ 9789, 7803, 5759, 28,
+ 9789, 7803, 5759, 40,
+ 9789, 7803, 5759, 58,
+ 9789, 7803, 5759, 162,
+ 9789, 7803, 5759, 266,
+ 9789, 7803, 5759, 440,
+ 9789, 7803, 5759, 606,
+ 9789, 7803, 5759, 9827, 22,
+ 9789, 7803, 5759, 9827, 34,
+ 9789, 7803, 5759, 9827, 344,
+ 9789, 7803, 5759, 9827, 518,
+ 9789, 7803, 5759, 10489, 16,
+ 9789, 7803, 5759, 10489, 266,
+ 9789, 8405, 0,
+ 9789, 8405, 52,
+ 9789, 8405, 100,
+ 9789, 8405, 116,
+ 9789, 8405, 138,
+ 9789, 8405, 216,
+ 9789, 8405, 236,
+ 9789, 8405, 292,
+ 9789, 8405, 306,
+ 9789, 8405, 332,
+ 9789, 8405, 364,
+ 9789, 8405, 392,
+ 9789, 8405, 462,
+ 9789, 8405, 510,
+ 9789, 8405, 524,
+ 9789, 8405, 556,
+ 9789, 8405, 622,
+ 9789, 8405, 652,
+ 9789, 8405, 670,
+ 9789, 8405, 792,
+ 9789, 8405, 884,
+ 9789, 8405, 974,
+ 9789, 8405, 996,
+ 9789, 8405, 1080,
+ 9789, 8405, 1260,
+ 9789, 8405, 1612,
+ 9789, 8405, 1642,
+ 9789, 8405, 2030,
+ 9789, 8405, 2076,
+ 9789, 8405, 2126,
+ 9789, 8405, 2212,
+ 9789, 8405, 2438,
+ 9789, 8405, 2516,
+ 9789, 8405, 2566,
+ 9789, 8405, 2678,
+ 9789, 8405, 2732,
+ 9789, 8405, 2746,
+ 9789, 8405, 3146,
+ 9789, 8405, 4016,
+ 9789, 8405, 4140,
+ 9789, 8405, 4782,
+ 9789, 8405, 5978,
+ 9789, 8405, 5994,
+ 9789, 8405, 11631, 510,
+ 9789, 8775, 2089, 112,
+ 9789, 8775, 2089, 113, 3831, 7904,
+ 9789, 8775, 2089, 113, 4353, 7904,
+ 9789, 8775, 2089, 113, 5307, 7904,
+ 9789, 8775, 2399, 2420,
+ 9789, 8775, 2399, 2421, 5543, 4350,
+ 9789, 8775, 4119, 112,
+ 9789, 8775, 5421, 462,
+ 9789, 8775, 7333, 4258,
+ 9789, 10307, 5759, 3877, 7462,
+ 9789, 10307, 5759, 4859, 7462,
+ 9789, 10585, 436,
+ 9789, 11257, 8405, 0,
+ 9789, 11257, 8405, 52,
+ 9789, 11257, 8405, 100,
+ 9789, 11257, 8405, 116,
+ 9789, 11257, 8405, 138,
+ 9789, 11257, 8405, 216,
+ 9789, 11257, 8405, 236,
+ 9789, 11257, 8405, 292,
+ 9789, 11257, 8405, 306,
+ 9789, 11257, 8405, 332,
+ 9789, 11257, 8405, 364,
+ 9789, 11257, 8405, 392,
+ 9789, 11257, 8405, 462,
+ 9789, 11257, 8405, 510,
+ 9789, 11257, 8405, 524,
+ 9789, 11257, 8405, 556,
+ 9789, 11257, 8405, 622,
+ 9789, 11257, 8405, 652,
+ 9789, 11257, 8405, 670,
+ 9789, 11257, 8405, 792,
+ 9789, 11257, 8405, 884,
+ 9789, 11257, 8405, 974,
+ 9789, 11257, 8405, 996,
+ 9789, 11257, 8405, 1080,
+ 9789, 11257, 8405, 1260,
+ 9789, 11257, 8405, 1612,
+ 9789, 11257, 8405, 2030,
+ 9789, 11257, 8405, 2076,
+ 9789, 11257, 8405, 2126,
+ 9789, 11257, 8405, 2212,
+ 9789, 11257, 8405, 2516,
+ 9789, 11257, 8405, 2566,
+ 9789, 11257, 8405, 2678,
+ 9789, 11257, 8405, 2732,
+ 9789, 11257, 8405, 2746,
+ 9789, 11257, 8405, 3146,
+ 9789, 11257, 8405, 4016,
+ 9789, 11257, 8405, 4140,
+ 9789, 11257, 8405, 4782,
+ 9789, 11257, 8405, 5978,
+ 9789, 11257, 8405, 5994,
+ 9789, 11257, 8405, 11631, 510,
+ 9789, 11257, 8405, 11631, 622,
+ 9789, 11257, 8405, 11631, 652,
+ 9789, 12405, 5759, 5661, 4255, 6371, 7462,
+ 9789, 12405, 5759, 7497, 8858,
+ 9789, 12405, 5759, 7907, 462,
+ 9789, 12423, 5759, 3845, 5892,
+ 9789, 12423, 5759, 5641, 6368,
+ 9789, 12423, 5759, 6909, 3764,
+ 9789, 12423, 5759, 7101, 3764,
+ 9793, 1177, 4194,
+ 9793, 1177, 4830,
+ 9793, 1177, 6116,
+ 9793, 1177, 6716,
+ 9793, 1177, 7812,
+ 9793, 1177, 8290,
+ 9793, 1177, 9786,
+ 9793, 1177, 10344,
+ 9811, 2779, 8289, 6434,
+ 9811, 6434,
+ 9811, 6435, 569, 760,
+ 9811, 6435, 4221, 760,
+ 9811, 6435, 6121, 2697, 11096,
+ 9811, 6435, 6121, 2697, 11764,
+ 9811, 6435, 6121, 8153, 8758,
+ 9811, 6435, 6121, 11649, 8758,
+ 9811, 6435, 11097, 429, 10959, 6434,
+ 9811, 6505, 6434,
+ 9811, 7821, 6434,
+ 9811, 7821, 6435, 439, 10416,
+ 9811, 7821, 6435, 439, 10417, 6121, 10677, 760,
+ 9811, 7821, 6435, 439, 10417, 6121, 11649, 760,
+ 9811, 7821, 6435, 4221, 760,
+ 9811, 7821, 8153, 6434,
+ 9811, 7821, 8153, 6435, 439, 10416,
+ 9811, 7924,
+ 9811, 8097, 6434,
+ 9811, 8153, 6434,
+ 9811, 8561, 7944,
+ 9811, 8849, 6434,
+ 9811, 9327, 6121, 3713, 4849, 569, 760,
+ 9811, 9327, 6121, 3713, 4849, 4221, 760,
+ 9811, 9327, 6121, 3713, 4849, 7991, 9811, 9327, 6121, 3713, 7442,
+ 9811, 9327, 6121, 3713, 4849, 7991, 10959, 9327, 6121, 3713, 7442,
+ 9811, 9327, 6121, 3713, 7443, 569, 760,
+ 9811, 9327, 6121, 3713, 7443, 4221, 760,
+ 9811, 9327, 6121, 3713, 11096,
+ 9811, 9327, 6121, 3713, 11764,
+ 9811, 11191, 6434,
+ 9811, 11875, 6435, 4221, 7593, 8056,
+ 9821, 4390,
+ 9835, 5758,
+ 9843, 4390,
+ 9853, 7931, 4213, 9680,
+ 9853, 11345, 10582,
+ 9858,
+ 9867, 5758,
+ 9880,
+ 9891, 4223, 5836,
+ 9891, 6616,
+ 9891, 7593, 8405, 116,
+ 9891, 7593, 8405, 130,
+ 9891, 7593, 8405, 138,
+ 9891, 7593, 8405, 166,
+ 9891, 7593, 8405, 186,
+ 9891, 7593, 8405, 246,
+ 9891, 7593, 8405, 292,
+ 9891, 7593, 8405, 430,
+ 9891, 7593, 8405, 510,
+ 9891, 7593, 8405, 568,
+ 9891, 7593, 8405, 616,
+ 9891, 7593, 8405, 656,
+ 9891, 7593, 8405, 670,
+ 9891, 7593, 8405, 744,
+ 9891, 7593, 8405, 784,
+ 9891, 7593, 8405, 884,
+ 9891, 7593, 8405, 1094,
+ 9891, 7593, 8405, 1152,
+ 9891, 7593, 8405, 1276,
+ 9891, 7593, 8405, 1488,
+ 9891, 7593, 8405, 1600,
+ 9891, 7593, 8405, 1602,
+ 9891, 7593, 8405, 1894,
+ 9891, 7593, 8405, 2092,
+ 9891, 7593, 8405, 2206,
+ 9891, 7593, 8405, 2404,
+ 9891, 7593, 8405, 2506,
+ 9891, 7593, 8405, 2516,
+ 9891, 7593, 8405, 2862,
+ 9891, 7593, 8405, 2958,
+ 9891, 7593, 8405, 3148,
+ 9891, 7593, 8405, 3892,
+ 9891, 7593, 8405, 4314,
+ 9891, 7593, 8405, 4636,
+ 9891, 7593, 8405, 4886,
+ 9891, 7593, 8405, 5434,
+ 9891, 7593, 8405, 5948,
+ 9891, 7593, 8405, 6214,
+ 9891, 7593, 10301, 1095, 6214,
+ 9891, 7593, 10301, 1895, 1094,
+ 9891, 7593, 10301, 1895, 1488,
+ 9891, 7593, 10301, 1895, 2092,
+ 9891, 7593, 10301, 1895, 2958,
+ 9891, 7593, 10301, 2863, 2092,
+ 9891, 8306,
+ 9891, 9063, 8405, 116,
+ 9891, 9063, 8405, 130,
+ 9891, 9063, 8405, 138,
+ 9891, 9063, 8405, 166,
+ 9891, 9063, 8405, 186,
+ 9891, 9063, 8405, 246,
+ 9891, 9063, 8405, 292,
+ 9891, 9063, 8405, 430,
+ 9891, 9063, 8405, 510,
+ 9891, 9063, 8405, 568,
+ 9891, 9063, 8405, 616,
+ 9891, 9063, 8405, 656,
+ 9891, 9063, 8405, 670,
+ 9891, 9063, 8405, 744,
+ 9891, 9063, 8405, 784,
+ 9891, 9063, 8405, 884,
+ 9891, 9063, 8405, 1094,
+ 9891, 9063, 8405, 1152,
+ 9891, 9063, 8405, 1276,
+ 9891, 9063, 8405, 1488,
+ 9891, 9063, 8405, 1600,
+ 9891, 9063, 8405, 1602,
+ 9891, 9063, 8405, 1894,
+ 9891, 9063, 8405, 2092,
+ 9891, 9063, 8405, 2206,
+ 9891, 9063, 8405, 2404,
+ 9891, 9063, 8405, 2506,
+ 9891, 9063, 8405, 2516,
+ 9891, 9063, 8405, 2862,
+ 9891, 9063, 8405, 2958,
+ 9891, 9063, 8405, 3148,
+ 9891, 9063, 8405, 3892,
+ 9891, 9063, 8405, 4314,
+ 9891, 9063, 8405, 4636,
+ 9891, 9063, 8405, 4886,
+ 9891, 9063, 8405, 5434,
+ 9891, 9063, 8405, 5948,
+ 9891, 9063, 8405, 6214,
+ 9891, 10157, 4926,
+ 9891, 10339, 8405, 4849, 4389, 5550,
+ 9891, 10469, 4926,
+ 9891, 11424,
+ 9891, 12017, 4926,
+ 9891, 12391, 4926,
+ 9898,
+ 9899, 10374,
+ 9900,
+ 9907, 3229, 3228,
+ 9907, 5759, 2811, 7438,
+ 9907, 5759, 2811, 8030,
+ 9907, 5759, 6502,
+ 9907, 5759, 6556,
+ 9907, 5759, 8768,
+ 9907, 5759, 9628,
+ 9907, 6545, 5762,
+ 9907, 6545, 9570,
+ 9907, 6545, 11156,
+ 9907, 6689, 2170,
+ 9907, 6689, 2540,
+ 9907, 6689, 2778,
+ 9907, 6689, 4200,
+ 9907, 6689, 4214,
+ 9907, 6689, 5190,
+ 9907, 6689, 6260,
+ 9907, 6689, 6722,
+ 9907, 6689, 7508,
+ 9907, 6689, 7694,
+ 9907, 7334,
+ 9907, 7803, 5759, 333, 7094,
+ 9907, 7803, 5759, 333, 7095, 8796,
+ 9907, 7803, 5759, 511, 5536,
+ 9907, 7803, 5759, 511, 5537, 8796,
+ 9907, 7803, 5759, 2810,
+ 9907, 7803, 5759, 2811, 5638,
+ 9907, 7803, 5759, 5844,
+ 9907, 7803, 5759, 5845, 4602,
+ 9907, 7803, 5759, 7362,
+ 9907, 7803, 5759, 7363, 8796,
+ 9907, 7803, 5759, 8788,
+ 9907, 7803, 5759, 8789, 5536,
+ 9907, 7803, 5759, 8789, 5537, 8796,
+ 9907, 7803, 5759, 8789, 8796,
+ 9907, 7803, 5759, 8796,
+ 9907, 7826,
+ 9907, 8405, 100,
+ 9907, 8405, 101, 9396,
+ 9907, 8405, 116,
+ 9907, 8405, 117, 4822,
+ 9907, 8405, 138,
+ 9907, 8405, 139, 4920,
+ 9907, 8405, 139, 7195, 10704,
+ 9907, 8405, 139, 7195, 11106,
+ 9907, 8405, 165, 7488,
+ 9907, 8405, 216,
+ 9907, 8405, 217, 4346,
+ 9907, 8405, 236,
+ 9907, 8405, 292,
+ 9907, 8405, 293, 4632,
+ 9907, 8405, 306,
+ 9907, 8405, 307, 11106,
+ 9907, 8405, 332,
+ 9907, 8405, 333, 7094,
+ 9907, 8405, 333, 7095, 8796,
+ 9907, 8405, 364,
+ 9907, 8405, 392,
+ 9907, 8405, 393, 8632,
+ 9907, 8405, 462,
+ 9907, 8405, 463, 7020,
+ 9907, 8405, 510,
+ 9907, 8405, 511, 5536,
+ 9907, 8405, 511, 5537, 8796,
+ 9907, 8405, 524,
+ 9907, 8405, 525, 5626,
+ 9907, 8405, 525, 5634,
+ 9907, 8405, 556,
+ 9907, 8405, 557, 5888,
+ 9907, 8405, 557, 7086,
+ 9907, 8405, 557, 7195, 11106,
+ 9907, 8405, 613, 7488,
+ 9907, 8405, 622,
+ 9907, 8405, 652,
+ 9907, 8405, 1579, 7488,
+ 9907, 8405, 2030,
+ 9907, 8405, 2126,
+ 9907, 8405, 3129, 7488,
+ 9907, 8405, 4753, 7488,
+ 9907, 8405, 6037, 7488,
+ 9907, 8405, 6390,
+ 9907, 8405, 6391, 8796,
+ 9907, 8405, 6726,
+ 9907, 8405, 6986,
+ 9907, 8405, 6987, 8796,
+ 9907, 8405, 7312,
+ 9907, 8405, 7313, 8796,
+ 9907, 8405, 7760,
+ 9907, 8405, 7761, 8796,
+ 9907, 8405, 7914,
+ 9907, 8405, 7957, 7488,
+ 9907, 8566,
+ 9907, 9483, 8775, 3986,
+ 9907, 9483, 8775, 3987, 4266,
+ 9907, 9483, 8775, 3987, 8768,
+ 9907, 9483, 8775, 4060,
+ 9907, 9483, 8775, 4090,
+ 9907, 9483, 8775, 4106,
+ 9907, 9483, 8775, 4128,
+ 9907, 9483, 8775, 6632,
+ 9907, 9483, 8775, 6638,
+ 9907, 9483, 8775, 6678,
+ 9907, 9483, 8775, 10767, 4344,
+ 9907, 9483, 8775, 10767, 6492,
+ 9907, 9483, 8775, 10767, 6732,
+ 9907, 9483, 8775, 10767, 7670,
+ 9907, 9483, 8775, 10767, 8350,
+ 9907, 9483, 8775, 10767, 8351, 6121, 9378,
+ 9907, 9483, 8775, 10767, 8352,
+ 9907, 9483, 8775, 10767, 8353, 6121, 9378,
+ 9907, 9483, 8775, 10767, 9378,
+ 9907, 9483, 8775, 11091, 5385, 5396,
+ 9907, 9483, 8775, 11091, 5385, 5432,
+ 9907, 9483, 8775, 11091, 5385, 5452,
+ 9907, 9483, 8775, 11091, 8065, 5436,
+ 9907, 9483, 8775, 11091, 8065, 5440,
+ 9907, 9483, 8775, 11761, 5385, 958,
+ 9907, 9483, 8775, 11761, 5385, 1052,
+ 9907, 9483, 8775, 11761, 8065, 2644,
+ 9907, 9483, 8775, 11761, 8065, 2758,
+ 9907, 10398,
+ 9919, 6789, 8405, 14,
+ 9919, 6789, 8405, 20,
+ 9919, 6789, 8405, 30,
+ 9919, 6789, 8405, 38,
+ 9919, 8405, 0,
+ 9919, 8405, 2,
+ 9919, 8405, 4,
+ 9919, 8405, 6,
+ 9919, 8405, 8,
+ 9919, 8405, 10,
+ 9919, 8405, 12,
+ 9919, 8405, 14,
+ 9919, 8405, 16,
+ 9919, 8405, 18,
+ 9919, 8405, 20,
+ 9919, 8405, 22,
+ 9919, 8405, 24,
+ 9919, 8405, 26,
+ 9919, 8405, 28,
+ 9919, 8405, 30,
+ 9919, 8405, 32,
+ 9919, 8405, 34,
+ 9919, 8405, 36,
+ 9919, 8405, 38,
+ 9919, 8405, 40,
+ 9919, 8405, 42,
+ 9919, 8405, 46,
+ 9919, 8405, 50,
+ 9919, 8405, 72,
+ 9919, 8405, 78,
+ 9919, 8405, 80,
+ 9919, 8405, 92,
+ 9919, 8405, 112,
+ 9919, 8405, 124,
+ 9919, 8405, 162,
+ 9919, 8405, 166,
+ 9919, 8405, 168,
+ 9919, 8405, 176,
+ 9919, 8405, 182,
+ 9919, 8405, 226,
+ 9919, 8405, 230,
+ 9919, 8405, 264,
+ 9919, 8405, 272,
+ 9919, 8405, 280,
+ 9919, 8405, 286,
+ 9919, 8405, 296,
+ 9919, 8405, 400,
+ 9919, 8405, 436,
+ 9919, 8405, 440,
+ 9919, 8405, 450,
+ 9919, 8405, 530,
+ 9919, 8405, 674,
+ 9919, 8405, 676,
+ 9919, 8405, 722,
+ 9919, 8405, 724,
+ 9919, 8405, 1110,
+ 9919, 8405, 1112,
+ 9919, 8405, 1490,
+ 9919, 8405, 2034,
+ 9919, 8405, 2172,
+ 9919, 8405, 2174,
+ 9919, 8405, 2814,
+ 9919, 8405, 3238,
+ 9919, 8405, 3286,
+ 9919, 8405, 4610,
+ 9923, 1109, 429, 9664,
+ 9923, 7803, 5759, 8,
+ 9923, 7803, 5759, 16,
+ 9923, 7803, 5759, 28,
+ 9923, 7803, 5759, 40,
+ 9923, 7803, 5759, 66,
+ 9923, 8405, 0,
+ 9923, 8405, 100,
+ 9923, 8405, 116,
+ 9923, 8405, 138,
+ 9923, 8405, 216,
+ 9923, 8405, 236,
+ 9923, 8405, 292,
+ 9923, 8405, 306,
+ 9923, 8405, 332,
+ 9923, 8405, 364,
+ 9923, 8405, 392,
+ 9923, 8405, 462,
+ 9923, 8405, 510,
+ 9923, 8405, 524,
+ 9923, 8405, 556,
+ 9923, 8405, 610,
+ 9923, 8405, 652,
+ 9923, 8405, 1946,
+ 9923, 8405, 2030,
+ 9923, 8405, 2096,
+ 9923, 8405, 2126,
+ 9923, 8405, 5166,
+ 9923, 8405, 5294,
+ 9923, 9556,
+ 9924,
+ 9928,
+ 9931, 11269, 0,
+ 9931, 11269, 4,
+ 9931, 11269, 8,
+ 9931, 11269, 10,
+ 9931, 11269, 16,
+ 9931, 11269, 20,
+ 9931, 11269, 22,
+ 9931, 11269, 24,
+ 9931, 11269, 26,
+ 9931, 11269, 28,
+ 9931, 11269, 30,
+ 9931, 11269, 32,
+ 9931, 11269, 34,
+ 9931, 11269, 36,
+ 9931, 11269, 38,
+ 9931, 11269, 48,
+ 9931, 11269, 58,
+ 9931, 11269, 72,
+ 9931, 11269, 80,
+ 9931, 11269, 116,
+ 9931, 11269, 122,
+ 9931, 11269, 126,
+ 9931, 11269, 130,
+ 9931, 11269, 176,
+ 9931, 11269, 196,
+ 9931, 11269, 198,
+ 9931, 11269, 202,
+ 9931, 11269, 208,
+ 9931, 11269, 244,
+ 9931, 11269, 266,
+ 9931, 11269, 274,
+ 9931, 11269, 306,
+ 9931, 11269, 310,
+ 9931, 11269, 314,
+ 9931, 11269, 322,
+ 9931, 11269, 330,
+ 9931, 11269, 332,
+ 9931, 11269, 336,
+ 9931, 11269, 338,
+ 9931, 11269, 340,
+ 9931, 11269, 350,
+ 9931, 11269, 364,
+ 9931, 11269, 368,
+ 9931, 11269, 372,
+ 9931, 11269, 374,
+ 9931, 11269, 380,
+ 9931, 11269, 392,
+ 9931, 11269, 396,
+ 9931, 11269, 400,
+ 9931, 11269, 402,
+ 9931, 11269, 404,
+ 9931, 11269, 412,
+ 9931, 11269, 438,
+ 9931, 11269, 440,
+ 9931, 11269, 462,
+ 9931, 11269, 468,
+ 9931, 11269, 476,
+ 9931, 11269, 480,
+ 9931, 11269, 496,
+ 9931, 11269, 500,
+ 9931, 11269, 502,
+ 9931, 11269, 510,
+ 9931, 11269, 512,
+ 9931, 11269, 514,
+ 9931, 11269, 516,
+ 9931, 11269, 524,
+ 9931, 11269, 526,
+ 9931, 11269, 530,
+ 9931, 11269, 532,
+ 9931, 11269, 536,
+ 9931, 11269, 550,
+ 9931, 11269, 556,
+ 9931, 11269, 560,
+ 9931, 11269, 562,
+ 9931, 11269, 564,
+ 9931, 11269, 568,
+ 9931, 11269, 622,
+ 9931, 11269, 626,
+ 9931, 11269, 630,
+ 9931, 11269, 632,
+ 9931, 11269, 652,
+ 9931, 11269, 654,
+ 9931, 11269, 656,
+ 9931, 11269, 660,
+ 9931, 11269, 690,
+ 9931, 11269, 854,
+ 9931, 11269, 889, 5758,
+ 9931, 11269, 898,
+ 9931, 11269, 914,
+ 9931, 11269, 936,
+ 9931, 11269, 938,
+ 9931, 11269, 940,
+ 9931, 11269, 942,
+ 9931, 11269, 1140,
+ 9931, 11269, 1160,
+ 9931, 11269, 1172,
+ 9931, 11269, 1574,
+ 9931, 11269, 1630,
+ 9931, 11269, 1660,
+ 9931, 11269, 1704,
+ 9931, 11269, 1706,
+ 9931, 11269, 1708,
+ 9931, 11269, 1710,
+ 9931, 11269, 1732,
+ 9931, 11269, 1770,
+ 9931, 11269, 1774,
+ 9931, 11269, 1776,
+ 9931, 11269, 1784,
+ 9931, 11269, 1802,
+ 9931, 11269, 1834,
+ 9931, 11269, 1836,
+ 9931, 11269, 1838,
+ 9931, 11269, 1840,
+ 9931, 11269, 1854,
+ 9931, 11269, 1916,
+ 9931, 11269, 1938,
+ 9931, 11269, 1964,
+ 9931, 11269, 1966,
+ 9931, 11269, 1968,
+ 9931, 11269, 1970,
+ 9931, 11269, 1982,
+ 9931, 11269, 2030,
+ 9931, 11269, 2036,
+ 9931, 11269, 2038,
+ 9931, 11269, 2052,
+ 9931, 11269, 2078,
+ 9931, 11269, 2084,
+ 9931, 11269, 2122,
+ 9931, 11269, 2124,
+ 9931, 11269, 2188,
+ 9931, 11269, 2226,
+ 9931, 11269, 2238,
+ 9931, 11269, 2266,
+ 9931, 11269, 2268,
+ 9931, 11269, 2270,
+ 9931, 11269, 2272,
+ 9931, 11269, 2282,
+ 9931, 11269, 2286,
+ 9931, 11269, 2308,
+ 9931, 11269, 2320,
+ 9931, 11269, 2378,
+ 9931, 11269, 2414,
+ 9931, 11269, 2430,
+ 9931, 11269, 2482,
+ 9931, 11269, 2516,
+ 9931, 11269, 2518,
+ 9931, 11269, 2520,
+ 9931, 11269, 2522,
+ 9931, 11269, 2532,
+ 9931, 11269, 2554,
+ 9931, 11269, 2598,
+ 9931, 11269, 2600,
+ 9931, 11269, 2604,
+ 9931, 11269, 2606,
+ 9931, 11269, 2634,
+ 9931, 11269, 2678,
+ 9931, 11269, 2680,
+ 9931, 11269, 2682,
+ 9931, 11269, 2684,
+ 9931, 11269, 2692,
+ 9931, 11269, 2722,
+ 9931, 11269, 2746,
+ 9931, 11269, 2748,
+ 9931, 11269, 2750,
+ 9931, 11269, 2752,
+ 9931, 11269, 2754,
+ 9931, 11269, 2772,
+ 9931, 11269, 2774,
+ 9931, 11269, 2776,
+ 9931, 11269, 2778,
+ 9931, 11269, 2780,
+ 9931, 11269, 2782,
+ 9931, 11269, 2784,
+ 9931, 11269, 2786,
+ 9931, 11269, 2906,
+ 9931, 11269, 2932,
+ 9931, 11269, 2942,
+ 9931, 11269, 3006,
+ 9931, 11269, 3068,
+ 9931, 11269, 3082,
+ 9931, 11269, 3102,
+ 9931, 11269, 3104,
+ 9931, 11269, 3106,
+ 9931, 11269, 3108,
+ 9931, 11269, 3836,
+ 9931, 11269, 3970,
+ 9931, 11269, 3972,
+ 9931, 11269, 3974,
+ 9931, 11269, 4176,
+ 9931, 11269, 4223, 5836,
+ 9931, 11269, 4230,
+ 9931, 11269, 4700,
+ 9931, 11269, 4796,
+ 9931, 11269, 4800,
+ 9931, 11269, 4802,
+ 9931, 11269, 4818,
+ 9931, 11269, 4856,
+ 9931, 11269, 4862,
+ 9931, 11269, 4864,
+ 9931, 11269, 4910,
+ 9931, 11269, 4912,
+ 9931, 11269, 4914,
+ 9931, 11269, 4918,
+ 9931, 11269, 5032,
+ 9931, 11269, 5036,
+ 9931, 11269, 5038,
+ 9931, 11269, 5040,
+ 9931, 11269, 5132,
+ 9931, 11269, 5134,
+ 9931, 11269, 5164,
+ 9931, 11269, 5170,
+ 9931, 11269, 5228,
+ 9931, 11269, 5230,
+ 9931, 11269, 5232,
+ 9931, 11269, 5290,
+ 9931, 11269, 5390,
+ 9931, 11269, 5460,
+ 9931, 11269, 5464,
+ 9931, 11269, 5466,
+ 9931, 11269, 5472,
+ 9931, 11269, 5518,
+ 9931, 11269, 5616,
+ 9931, 11269, 5622,
+ 9931, 11269, 5666,
+ 9931, 11269, 5694,
+ 9931, 11269, 5710,
+ 9931, 11269, 5732,
+ 9931, 11269, 5734,
+ 9931, 11269, 5736,
+ 9931, 11269, 5738,
+ 9931, 11269, 5858,
+ 9931, 11269, 5860,
+ 9931, 11269, 5862,
+ 9931, 11269, 5874,
+ 9931, 11269, 5906,
+ 9931, 11269, 5924,
+ 9931, 11269, 5930,
+ 9931, 11269, 5952,
+ 9931, 11269, 5954,
+ 9931, 11269, 5956,
+ 9931, 11269, 5958,
+ 9931, 11269, 5994,
+ 9931, 11269, 5996,
+ 9931, 11269, 5998,
+ 9931, 11269, 6000,
+ 9931, 11269, 6024,
+ 9931, 11269, 6026,
+ 9931, 11269, 6028,
+ 9931, 11269, 6160,
+ 9931, 11269, 6246,
+ 9931, 11269, 6248,
+ 9931, 11269, 6250,
+ 9931, 11269, 6789, 2725, 4389, 5550,
+ 9931, 11269, 6789, 4117, 5876,
+ 9931, 11269, 6789, 5444,
+ 9931, 11269, 6789, 5550,
+ 9931, 11269, 6789, 6378,
+ 9931, 11269, 6789, 6874,
+ 9931, 11269, 6789, 7443, 4389, 5550,
+ 9931, 11269, 6789, 7551, 11649, 8758,
+ 9931, 11269, 6789, 8005, 4389, 5550,
+ 9931, 11269, 6789, 8153, 6378,
+ 9931, 11269, 6789, 8153, 7551, 10677, 9744,
+ 9931, 11269, 6789, 8473, 1044,
+ 9931, 11269, 7226,
+ 9931, 11269, 7262,
+ 9931, 11269, 7264,
+ 9931, 11269, 7266,
+ 9931, 11269, 7558,
+ 9931, 11269, 7560,
+ 9931, 11269, 7562,
+ 9931, 11269, 7700,
+ 9931, 11269, 8461, 22,
+ 9931, 11269, 8461, 34,
+ 9931, 11269, 8497, 2680,
+ 9931, 11269, 8497, 2682,
+ 9931, 11269, 8497, 5924,
+ 9931, 11269, 8629, 512,
+ 9931, 11269, 8671, 24,
+ 9931, 11269, 8671, 236,
+ 9931, 11269, 8671, 238,
+ 9931, 11269, 8671, 242,
+ 9931, 11269, 8671, 246,
+ 9931, 11269, 8671, 296,
+ 9931, 11269, 8671, 300,
+ 9931, 11269, 8671, 562,
+ 9931, 11269, 8671, 656,
+ 9931, 11269, 8671, 2516,
+ 9931, 11269, 8671, 2518,
+ 9931, 11269, 8671, 2520,
+ 9931, 11269, 8671, 2522,
+ 9931, 11269, 8943, 44,
+ 9931, 11269, 8943, 440,
+ 9931, 11269, 8943, 914,
+ 9931, 11269, 8943, 1660,
+ 9931, 11269, 8943, 1802,
+ 9931, 11269, 8943, 1938,
+ 9931, 11269, 8943, 2084,
+ 9931, 11269, 8943, 2238,
+ 9931, 11269, 8943, 2554,
+ 9931, 11269, 8943, 2722,
+ 9931, 11269, 8943, 3082,
+ 9931, 11269, 8943, 5460,
+ 9931, 11269, 8987, 2,
+ 9931, 11269, 9067, 14,
+ 9931, 11269, 9067, 16,
+ 9931, 11269, 9067, 30,
+ 9931, 11269, 9067, 50,
+ 9931, 11269, 9067, 144,
+ 9931, 11269, 9067, 162,
+ 9931, 11269, 9067, 216,
+ 9931, 11269, 9067, 220,
+ 9931, 11269, 9067, 224,
+ 9931, 11269, 9067, 228,
+ 9931, 11269, 9067, 230,
+ 9931, 11269, 9067, 242,
+ 9931, 11269, 9067, 292,
+ 9931, 11269, 9067, 294,
+ 9931, 11269, 9067, 296,
+ 9931, 11269, 9067, 298,
+ 9931, 11269, 9067, 300,
+ 9931, 11269, 9067, 316,
+ 9931, 11269, 9067, 332,
+ 9931, 11269, 9067, 336,
+ 9931, 11269, 9067, 340,
+ 9931, 11269, 9067, 350,
+ 9931, 11269, 9067, 354,
+ 9931, 11269, 9067, 364,
+ 9931, 11269, 9067, 368,
+ 9931, 11269, 9067, 374,
+ 9931, 11269, 9067, 380,
+ 9931, 11269, 9067, 384,
+ 9931, 11269, 9067, 392,
+ 9931, 11269, 9067, 396,
+ 9931, 11269, 9067, 400,
+ 9931, 11269, 9067, 404,
+ 9931, 11269, 9067, 412,
+ 9931, 11269, 9067, 416,
+ 9931, 11269, 9067, 462,
+ 9931, 11269, 9067, 468,
+ 9931, 11269, 9067, 476,
+ 9931, 11269, 9067, 480,
+ 9931, 11269, 9067, 486,
+ 9931, 11269, 9067, 510,
+ 9931, 11269, 9067, 512,
+ 9931, 11269, 9067, 514,
+ 9931, 11269, 9067, 516,
+ 9931, 11269, 9067, 520,
+ 9931, 11269, 9067, 524,
+ 9931, 11269, 9067, 526,
+ 9931, 11269, 9067, 530,
+ 9931, 11269, 9067, 532,
+ 9931, 11269, 9067, 536,
+ 9931, 11269, 9067, 546,
+ 9931, 11269, 9067, 622,
+ 9931, 11269, 9067, 626,
+ 9931, 11269, 9067, 630,
+ 9931, 11269, 9067, 632,
+ 9931, 11269, 9067, 634,
+ 9931, 11269, 9067, 652,
+ 9931, 11269, 9067, 654,
+ 9931, 11269, 9067, 656,
+ 9931, 11269, 9067, 660,
+ 9931, 11269, 9067, 664,
+ 9931, 11269, 9067, 670,
+ 9931, 11269, 9067, 672,
+ 9931, 11269, 9067, 676,
+ 9931, 11269, 9067, 678,
+ 9931, 11269, 9067, 680,
+ 9931, 11269, 9067, 884,
+ 9931, 11269, 9067, 886,
+ 9931, 11269, 9067, 888,
+ 9931, 11269, 9067, 890,
+ 9931, 11269, 9067, 892,
+ 9931, 11269, 9067, 984,
+ 9931, 11269, 9067, 1024,
+ 9931, 11269, 9067, 1026,
+ 9931, 11269, 9067, 1028,
+ 9931, 11269, 9067, 1030,
+ 9931, 11269, 9067, 1032,
+ 9931, 11269, 9067, 1080,
+ 9931, 11269, 9067, 1082,
+ 9931, 11269, 9067, 1084,
+ 9931, 11269, 9067, 1086,
+ 9931, 11269, 9067, 1088,
+ 9931, 11269, 9067, 1238,
+ 9931, 11269, 9067, 1260,
+ 9931, 11269, 9067, 1262,
+ 9931, 11269, 9067, 1264,
+ 9931, 11269, 9067, 1266,
+ 9931, 11269, 9067, 1268,
+ 9931, 11269, 9067, 1356,
+ 9931, 11269, 9067, 1440,
+ 9931, 11269, 9067, 1442,
+ 9931, 11269, 9067, 1444,
+ 9931, 11269, 9067, 1446,
+ 9931, 11269, 9067, 1448,
+ 9931, 11269, 9067, 1506,
+ 9931, 11269, 9067, 1528,
+ 9931, 11269, 9067, 1530,
+ 9931, 11269, 9067, 1532,
+ 9931, 11269, 9067, 1534,
+ 9931, 11269, 9067, 1536,
+ 9931, 11269, 9067, 1612,
+ 9931, 11269, 9067, 1614,
+ 9931, 11269, 9067, 1616,
+ 9931, 11269, 9067, 1618,
+ 9931, 11269, 9067, 1620,
+ 9931, 11269, 9067, 1642,
+ 9931, 11269, 9067, 1644,
+ 9931, 11269, 9067, 1646,
+ 9931, 11269, 9067, 1648,
+ 9931, 11269, 9067, 1650,
+ 9931, 11269, 9067, 1758,
+ 9931, 11269, 9067, 1770,
+ 9931, 11269, 9067, 1772,
+ 9931, 11269, 9067, 1774,
+ 9931, 11269, 9067, 1776,
+ 9931, 11269, 9067, 1778,
+ 9931, 11269, 9067, 1890,
+ 9931, 11269, 9067, 2016,
+ 9931, 11269, 9067, 2204,
+ 9931, 11269, 9067, 2402,
+ 9931, 11269, 9067, 2504,
+ 9931, 11269, 9067, 2516,
+ 9931, 11269, 9067, 2518,
+ 9931, 11269, 9067, 2520,
+ 9931, 11269, 9067, 2522,
+ 9931, 11269, 9067, 2524,
+ 9931, 11269, 9067, 2678,
+ 9931, 11269, 9067, 2680,
+ 9931, 11269, 9067, 2682,
+ 9931, 11269, 9067, 2684,
+ 9931, 11269, 9067, 2686,
+ 9931, 11269, 9067, 2706,
+ 9931, 11269, 9067, 2708,
+ 9931, 11269, 9067, 2710,
+ 9931, 11269, 9067, 2712,
+ 9931, 11269, 9067, 2714,
+ 9931, 11269, 9067, 2732,
+ 9931, 11269, 9067, 2734,
+ 9931, 11269, 9067, 2736,
+ 9931, 11269, 9067, 2738,
+ 9931, 11269, 9067, 2740,
+ 9931, 11269, 9067, 2746,
+ 9931, 11269, 9067, 2748,
+ 9931, 11269, 9067, 2752,
+ 9931, 11269, 9067, 2754,
+ 9931, 11269, 9067, 2756,
+ 9931, 11269, 9067, 2922,
+ 9931, 11269, 9067, 3050,
+ 9931, 11269, 9067, 3138,
+ 9931, 11269, 9067, 3890,
+ 9931, 11269, 9067, 4098,
+ 9931, 11269, 9067, 4138,
+ 9931, 11269, 9067, 4318,
+ 9931, 11269, 9067, 4556,
+ 9931, 11269, 9067, 4644,
+ 9931, 11269, 9067, 4744,
+ 9931, 11269, 9067, 4766,
+ 9931, 11269, 9067, 4860,
+ 9931, 11269, 9067, 5678,
+ 9931, 11269, 9067, 5914,
+ 9931, 11269, 9067, 5950,
+ 9931, 11269, 9067, 5952,
+ 9931, 11269, 9067, 5954,
+ 9931, 11269, 9067, 5956,
+ 9931, 11269, 9067, 5958,
+ 9931, 11269, 9067, 5960,
+ 9931, 11269, 9067, 5976,
+ 9931, 11269, 9067, 5990,
+ 9931, 11269, 9067, 6002,
+ 9931, 11269, 9067, 6004,
+ 9931, 11269, 9067, 6006,
+ 9931, 11269, 9067, 6008,
+ 9931, 11269, 9067, 6010,
+ 9931, 11269, 9067, 7720,
+ 9931, 11269, 9067, 7748,
+ 9931, 11269, 9067, 9363, 50,
+ 9931, 11269, 9313, 5836,
+ 9931, 11269, 9489, 2480,
+ 9931, 11269, 9489, 2544,
+ 9931, 11269, 9489, 2906,
+ 9931, 11269, 9489, 2942,
+ 9931, 11269, 9489, 3970,
+ 9931, 11269, 9489, 4796,
+ 9931, 11269, 9489, 5032,
+ 9931, 11269, 9489, 5290,
+ 9931, 11269, 9489, 5644,
+ 9931, 11269, 9489, 5774,
+ 9931, 11269, 9489, 5784,
+ 9931, 11269, 9489, 5838,
+ 9931, 11269, 9489, 5858,
+ 9931, 11269, 9489, 6024,
+ 9931, 11269, 9489, 6246,
+ 9931, 11269, 9517, 14,
+ 9931, 11269, 9517, 236,
+ 9931, 11269, 9517, 238,
+ 9931, 11269, 9517, 242,
+ 9931, 11269, 9517, 246,
+ 9931, 11269, 9517, 1338,
+ 9931, 11269, 9517, 1382,
+ 9931, 11269, 9517, 1424,
+ 9931, 11269, 9519, 14,
+ 9931, 11269, 9777, 562,
+ 9931, 11269, 9777, 2678,
+ 9931, 11269, 9777, 2680,
+ 9931, 11269, 9777, 2682,
+ 9931, 11269, 9777, 2684,
+ 9931, 11269, 9777, 5906,
+ 9931, 11269, 9777, 5924,
+ 9931, 11269, 9777, 5930,
+ 9931, 11269, 10743, 0,
+ 9931, 11269, 10743, 8,
+ 9931, 11269, 10743, 16,
+ 9931, 11269, 10743, 28,
+ 9931, 11269, 10743, 36,
+ 9931, 11269, 10743, 306,
+ 9931, 11269, 10743, 310,
+ 9931, 11269, 10743, 314,
+ 9931, 11269, 10743, 322,
+ 9931, 11269, 10743, 392,
+ 9931, 11269, 10743, 396,
+ 9931, 11269, 10743, 404,
+ 9931, 11269, 10743, 412,
+ 9931, 11269, 10743, 622,
+ 9931, 11269, 10743, 626,
+ 9931, 11269, 10743, 630,
+ 9931, 11269, 10743, 632,
+ 9931, 11269, 11399, 22,
+ 9931, 11269, 11399, 24,
+ 9931, 11269, 11399, 30,
+ 9931, 11269, 11399, 34,
+ 9931, 11269, 11399, 48,
+ 9931, 11269, 11399, 332,
+ 9931, 11269, 11399, 336,
+ 9931, 11269, 11399, 350,
+ 9931, 11269, 11399, 510,
+ 9931, 11269, 11399, 512,
+ 9931, 11269, 11399, 514,
+ 9931, 11269, 11399, 516,
+ 9931, 11269, 11399, 622,
+ 9931, 11269, 11399, 626,
+ 9931, 11269, 11399, 630,
+ 9931, 11269, 11399, 632,
+ 9931, 11269, 11399, 936,
+ 9931, 11269, 11399, 938,
+ 9931, 11269, 11399, 940,
+ 9931, 11269, 11399, 942,
+ 9931, 11269, 11399, 1704,
+ 9931, 11269, 11399, 1706,
+ 9931, 11269, 11399, 1708,
+ 9931, 11269, 11399, 1710,
+ 9931, 11269, 11399, 1834,
+ 9931, 11269, 11399, 1836,
+ 9931, 11269, 11399, 1838,
+ 9931, 11269, 11399, 1840,
+ 9931, 11269, 11399, 1964,
+ 9931, 11269, 11399, 1966,
+ 9931, 11269, 11399, 1968,
+ 9931, 11269, 11399, 1970,
+ 9931, 11269, 11399, 2122,
+ 9931, 11269, 11399, 2124,
+ 9931, 11269, 11399, 2266,
+ 9931, 11269, 11399, 2268,
+ 9931, 11269, 11399, 2270,
+ 9931, 11269, 11399, 2272,
+ 9931, 11269, 11399, 2598,
+ 9931, 11269, 11399, 2600,
+ 9931, 11269, 11399, 2604,
+ 9931, 11269, 11399, 2606,
+ 9931, 11269, 11399, 2772,
+ 9931, 11269, 11399, 2774,
+ 9931, 11269, 11399, 2776,
+ 9931, 11269, 11399, 2778,
+ 9931, 11269, 11399, 2906,
+ 9931, 11269, 11399, 2932,
+ 9931, 11269, 11399, 2942,
+ 9931, 11269, 11399, 3102,
+ 9931, 11269, 11399, 3104,
+ 9931, 11269, 11399, 3106,
+ 9931, 11269, 11399, 3108,
+ 9931, 11269, 11399, 3970,
+ 9931, 11269, 11399, 3972,
+ 9931, 11269, 11399, 3974,
+ 9931, 11269, 11399, 4230,
+ 9931, 11269, 11399, 4796,
+ 9931, 11269, 11399, 4800,
+ 9931, 11269, 11399, 4802,
+ 9931, 11269, 11399, 4910,
+ 9931, 11269, 11399, 4912,
+ 9931, 11269, 11399, 4914,
+ 9931, 11269, 11399, 5032,
+ 9931, 11269, 11399, 5036,
+ 9931, 11269, 11399, 5038,
+ 9931, 11269, 11399, 5290,
+ 9931, 11269, 11399, 5460,
+ 9931, 11269, 11399, 5464,
+ 9931, 11269, 11399, 5466,
+ 9931, 11269, 11399, 5616,
+ 9931, 11269, 11399, 5732,
+ 9931, 11269, 11399, 5734,
+ 9931, 11269, 11399, 5736,
+ 9931, 11269, 11399, 5738,
+ 9931, 11269, 11399, 5858,
+ 9931, 11269, 11399, 5860,
+ 9931, 11269, 11399, 5862,
+ 9931, 11269, 11399, 6024,
+ 9931, 11269, 11399, 6026,
+ 9931, 11269, 11399, 6028,
+ 9931, 11269, 11399, 6246,
+ 9931, 11269, 11399, 6248,
+ 9931, 11269, 11399, 6250,
+ 9931, 11269, 11399, 7558,
+ 9931, 11269, 11399, 7560,
+ 9931, 11269, 11399, 7562,
+ 9931, 11269, 11399, 7700,
+ 9931, 11269, 11435, 24,
+ 9931, 11269, 11435, 36,
+ 9931, 11269, 11443, 48,
+ 9931, 11269, 11689, 534,
+ 9931, 11269, 11883, 562,
+ 9931, 11269, 11883, 2678,
+ 9931, 11269, 11883, 2680,
+ 9931, 11269, 11883, 2682,
+ 9931, 11269, 11883, 2684,
+ 9931, 11269, 12869, 1580,
+ 9931, 11269, 12869, 1600,
+ 9931, 11269, 12869, 1628,
+ 9931, 11269, 12869, 1656,
+ 9941, 8405, 0,
+ 9941, 8405, 8,
+ 9941, 8405, 16,
+ 9941, 8405, 28,
+ 9941, 8405, 36,
+ 9941, 8405, 40,
+ 9941, 8405, 42,
+ 9941, 8405, 138,
+ 9941, 8405, 142,
+ 9941, 8405, 144,
+ 9941, 8405, 150,
+ 9941, 8405, 152,
+ 9941, 8405, 154,
+ 9941, 8405, 216,
+ 9941, 8405, 220,
+ 9941, 8405, 224,
+ 9941, 8405, 228,
+ 9941, 8405, 230,
+ 9941, 8405, 232,
+ 9941, 8405, 236,
+ 9941, 8405, 238,
+ 9941, 8405, 242,
+ 9941, 8405, 246,
+ 9941, 8405, 250,
+ 9941, 8405, 252,
+ 9941, 8405, 306,
+ 9941, 8405, 332,
+ 9941, 8405, 336,
+ 9941, 8405, 340,
+ 9941, 8405, 350,
+ 9941, 8405, 354,
+ 9941, 8405, 356,
+ 9941, 8405, 364,
+ 9941, 8405, 368,
+ 9941, 8405, 374,
+ 9941, 8405, 380,
+ 9941, 8405, 384,
+ 9941, 8405, 392,
+ 9941, 8405, 396,
+ 9941, 8405, 404,
+ 9941, 8405, 412,
+ 9941, 8405, 416,
+ 9941, 8405, 418,
+ 9941, 8405, 524,
+ 9941, 8405, 526,
+ 9941, 8405, 532,
+ 9941, 8405, 536,
+ 9941, 8405, 546,
+ 9941, 8405, 548,
+ 9941, 8405, 556,
+ 9941, 8405, 560,
+ 9941, 8405, 564,
+ 9941, 8405, 622,
+ 9941, 8405, 626,
+ 9941, 8405, 630,
+ 9941, 8405, 632,
+ 9941, 8405, 634,
+ 9941, 8405, 636,
+ 9941, 8405, 652,
+ 9941, 8405, 654,
+ 9941, 8405, 656,
+ 9941, 8405, 660,
+ 9941, 8405, 664,
+ 9941, 8405, 666,
+ 9941, 8405, 1024,
+ 9941, 8405, 1412,
+ 9941, 8405, 1986,
+ 9941, 8405, 2328,
+ 9941, 8405, 2330,
+ 9941, 8405, 2332,
+ 9941, 8405, 2336,
+ 9941, 8405, 2344,
+ 9941, 8405, 2346,
+ 9941, 8405, 2706,
+ 9941, 8405, 2708,
+ 9941, 8405, 2710,
+ 9941, 8405, 2712,
+ 9941, 8405, 2714,
+ 9941, 8405, 2716,
+ 9941, 8405, 2732,
+ 9941, 8405, 2734,
+ 9941, 8405, 2736,
+ 9941, 8405, 2738,
+ 9941, 8405, 2740,
+ 9941, 8405, 2742,
+ 9959, 89, 8466,
+ 9959, 89, 8521, 10572,
+ 9959, 89, 8521, 10573, 445, 6741, 568,
+ 9959, 6121, 4895, 11649, 8758,
+ 9959, 6121, 9546,
+ 9959, 6121, 10677, 761, 91, 1109, 429, 11649, 8758,
+ 9961, 2429, 5895, 6689, 2170,
+ 9961, 2429, 5895, 6689, 2540,
+ 9961, 2429, 5895, 6689, 2778,
+ 9961, 2429, 5895, 6689, 4200,
+ 9961, 2429, 5895, 6689, 4214,
+ 9961, 2429, 5895, 6689, 5190,
+ 9961, 2429, 5895, 6689, 6722,
+ 9961, 2429, 5895, 6689, 7508,
+ 9961, 2429, 5895, 6689, 7694,
+ 9961, 2429, 6053, 6689, 2170,
+ 9961, 2429, 6053, 6689, 2540,
+ 9961, 2429, 6053, 6689, 2778,
+ 9961, 2429, 6053, 6689, 4200,
+ 9961, 2429, 6053, 6689, 4214,
+ 9961, 2429, 6053, 6689, 5190,
+ 9961, 2429, 6053, 6689, 6722,
+ 9961, 2429, 6053, 6689, 7508,
+ 9961, 2429, 6053, 6689, 7694,
+ 9969, 5758,
+ 9971, 5758,
+ 9977, 7593, 8405, 0,
+ 9977, 7593, 8405, 1, 6121, 6516,
+ 9977, 7593, 8405, 1, 6121, 10804,
+ 9977, 7593, 8405, 8,
+ 9977, 7593, 8405, 9, 6121, 10804,
+ 9977, 7593, 8405, 16,
+ 9977, 7593, 8405, 17, 6121, 6874,
+ 9977, 7593, 8405, 17, 6121, 8432,
+ 9977, 7593, 8405, 17, 6121, 10804,
+ 9977, 7593, 8405, 28,
+ 9977, 7593, 8405, 29, 6121, 10804,
+ 9977, 7593, 8405, 40,
+ 9977, 7593, 8405, 41, 6121, 8153, 6378,
+ 9977, 7593, 8405, 41, 6121, 8432,
+ 9977, 7593, 8405, 41, 6121, 10804,
+ 9977, 7593, 8405, 102,
+ 9977, 7593, 8405, 142,
+ 9977, 7593, 8405, 164,
+ 9977, 7593, 8405, 172,
+ 9977, 7593, 8405, 173, 6121, 4530,
+ 9977, 7593, 8405, 173, 6121, 5878,
+ 9977, 7593, 8405, 173, 6121, 8473, 4530,
+ 9977, 7593, 8405, 174,
+ 9977, 7593, 8405, 175, 6121, 5878,
+ 9977, 7593, 8405, 176,
+ 9977, 7593, 8405, 177, 6121, 4530,
+ 9977, 7593, 8405, 177, 6121, 5878,
+ 9977, 7593, 8405, 177, 6121, 8473, 4530,
+ 9977, 7593, 8405, 177, 6121, 10802,
+ 9977, 7593, 8405, 182,
+ 9977, 7593, 8405, 183, 6121, 5934,
+ 9977, 7593, 8405, 184,
+ 9977, 7593, 8405, 185, 6121, 10802,
+ 9977, 7593, 8405, 236,
+ 9977, 7593, 8405, 237, 6121, 4530,
+ 9977, 7593, 8405, 237, 6121, 8758,
+ 9977, 7593, 8405, 237, 6121, 10802,
+ 9977, 7593, 8405, 258,
+ 9977, 7593, 8405, 259, 6121, 6516,
+ 9977, 7593, 8405, 259, 6121, 6874,
+ 9977, 7593, 8405, 276,
+ 9977, 7593, 8405, 294,
+ 9977, 7593, 8405, 306,
+ 9977, 7593, 8405, 307, 6121, 4530,
+ 9977, 7593, 8405, 307, 6121, 8758,
+ 9977, 7593, 8405, 307, 6121, 10677, 8758,
+ 9977, 7593, 8405, 307, 6121, 10802,
+ 9977, 7593, 8405, 448,
+ 9977, 7593, 8405, 468,
+ 9977, 7593, 8405, 469, 6121, 8473, 4530,
+ 9977, 7593, 8405, 496,
+ 9977, 7593, 8405, 560,
+ 9977, 7593, 8405, 561, 6121, 8473, 4530,
+ 9977, 7593, 8405, 561, 6121, 10802,
+ 9977, 7593, 8405, 592,
+ 9977, 7593, 8405, 612,
+ 9977, 7593, 8405, 626,
+ 9977, 7593, 8405, 652,
+ 9977, 7593, 8405, 656,
+ 9977, 7593, 8405, 658,
+ 9977, 7593, 8405, 664,
+ 9977, 7593, 8405, 672,
+ 9977, 7593, 8405, 673, 6121, 10802,
+ 9977, 7593, 8405, 673, 6121, 10804,
+ 9977, 7593, 8405, 807, 3096,
+ 9977, 7593, 8405, 886,
+ 9977, 7593, 8405, 887, 6121, 10677, 8758,
+ 9977, 7593, 8405, 887, 6121, 10802,
+ 9977, 7593, 8405, 887, 6121, 10804,
+ 9977, 7593, 8405, 1022,
+ 9977, 7593, 8405, 1074,
+ 9977, 7593, 8405, 1082,
+ 9977, 7593, 8405, 1262,
+ 9977, 7593, 8405, 1263, 6121, 8473, 4530,
+ 9977, 7593, 8405, 1263, 6121, 8758,
+ 9977, 7593, 8405, 1263, 6121, 8759, 721, 4530,
+ 9977, 7593, 8405, 1263, 6121, 8896,
+ 9977, 7593, 8405, 1263, 6121, 10802,
+ 9977, 7593, 8405, 1284,
+ 9977, 7593, 8405, 1442,
+ 9977, 7593, 8405, 1640,
+ 9977, 7593, 8405, 1680,
+ 9977, 7593, 8405, 1770,
+ 9977, 7593, 8405, 1794,
+ 9977, 7593, 8405, 2064,
+ 9977, 7593, 8405, 2250,
+ 9977, 7593, 8405, 2410,
+ 9977, 7593, 8405, 2516,
+ 9977, 7593, 8405, 2734,
+ 9977, 7593, 8405, 2774,
+ 9977, 7593, 8405, 3012,
+ 9977, 7593, 8405, 3038,
+ 9977, 7593, 8405, 3148,
+ 9977, 7593, 8405, 3149, 6121, 6516,
+ 9977, 7593, 8405, 3149, 6121, 10802,
+ 9977, 7593, 8405, 3149, 6121, 10804,
+ 9977, 7593, 8405, 3862,
+ 9977, 7593, 8405, 4142,
+ 9977, 7593, 8405, 4146,
+ 9977, 7593, 8405, 4148,
+ 9977, 7593, 8405, 4198,
+ 9977, 7593, 8405, 4393, 5758,
+ 9977, 7593, 8405, 4614,
+ 9977, 7593, 8405, 4771, 142,
+ 9977, 7593, 8405, 4771, 1022,
+ 9977, 7593, 8405, 4771, 1794,
+ 9977, 7593, 8405, 4771, 2064,
+ 9977, 7593, 8405, 4771, 2542,
+ 9977, 7593, 8405, 4771, 2704,
+ 9977, 7593, 8405, 4771, 3172,
+ 9977, 7593, 8405, 4771, 4144,
+ 9977, 7593, 8405, 5690,
+ 9977, 7593, 8405, 5734,
+ 9977, 7593, 8405, 5781, 142,
+ 9977, 7593, 8405, 5781, 172,
+ 9977, 7593, 8405, 5781, 174,
+ 9977, 7593, 8405, 5781, 5758,
+ 9977, 7593, 8405, 5890,
+ 9977, 7593, 8405, 5980,
+ 9977, 7593, 8405, 5982,
+ 9977, 7593, 8405, 5986,
+ 9977, 7593, 8405, 6200,
+ 9977, 7593, 8405, 6201, 6121, 3697, 3058,
+ 9977, 7593, 8405, 6201, 6121, 10804,
+ 9977, 7593, 8405, 6302,
+ 9977, 7593, 8405, 6399, 306,
+ 9977, 7593, 8405, 6519, 7316,
+ 9977, 7593, 8405, 6696,
+ 9977, 7593, 8405, 6710,
+ 9977, 7593, 8405, 7062,
+ 9977, 7593, 8405, 7316,
+ 9977, 7593, 8405, 7317, 6121, 7716,
+ 9977, 7593, 8405, 7455, 7316,
+ 9977, 7593, 8405, 7494,
+ 9977, 7593, 8405, 7495, 6121, 10804,
+ 9977, 7593, 8405, 7522,
+ 9977, 7593, 8405, 7551, 16,
+ 9977, 7593, 8405, 7551, 17, 6121, 5878,
+ 9977, 7593, 8405, 7551, 40,
+ 9977, 7593, 8405, 7981, 28,
+ 9977, 7593, 8405, 7981, 29, 6121, 10804,
+ 9977, 7593, 8405, 8065, 8425, 3096,
+ 9977, 7593, 8405, 8153, 11125, 28,
+ 9977, 7593, 8405, 8425, 3096,
+ 9977, 7593, 8405, 8960,
+ 9977, 7593, 8405, 9029, 306,
+ 9977, 7593, 8405, 9049, 3096,
+ 9977, 7593, 8405, 9372,
+ 9977, 7593, 8405, 9373, 6121, 8153, 6875, 7908,
+ 9977, 7593, 8405, 9501, 3058,
+ 9977, 7593, 8405, 10269, 0,
+ 9977, 7593, 8405, 10269, 8,
+ 9977, 7593, 8405, 10269, 807, 3096,
+ 9977, 7593, 8405, 10269, 3038,
+ 9977, 7593, 8405, 10269, 8065, 8425, 3096,
+ 9977, 7593, 8405, 10269, 8425, 3096,
+ 9977, 7593, 8405, 10396,
+ 9977, 7593, 8405, 10489, 664,
+ 9977, 7593, 8405, 10489, 672,
+ 9977, 7593, 8405, 10489, 1082,
+ 9977, 7593, 8405, 10509, 5758,
+ 9977, 7593, 8405, 10545, 40,
+ 9977, 7593, 8405, 10545, 41, 6121, 8758,
+ 9977, 7593, 8405, 10697, 236,
+ 9977, 7593, 8405, 10697, 886,
+ 9977, 7593, 8405, 10697, 887, 6121, 10802,
+ 9977, 7593, 8405, 10697, 1082,
+ 9977, 7593, 8405, 10735, 28,
+ 9977, 7593, 8405, 11125, 28,
+ 9977, 7593, 8405, 11127, 592,
+ 9977, 7593, 8405, 11383, 258,
+ 9977, 7593, 8405, 11665, 886,
+ 9977, 7593, 8405, 13415, 16,
+ 9977, 7593, 10301, 1, 258,
+ 9977, 7593, 10301, 177, 1262,
+ 9977, 7593, 10301, 561, 2734,
+ 9977, 8342,
+ 9977, 8405, 7593, 9063, 172,
+ 9977, 8405, 10396,
+ 9977, 8405, 12087, 28,
+ 9977, 9063, 8405, 0,
+ 9977, 9063, 8405, 1, 6121, 6516,
+ 9977, 9063, 8405, 1, 6121, 10804,
+ 9977, 9063, 8405, 8,
+ 9977, 9063, 8405, 9, 6121, 10804,
+ 9977, 9063, 8405, 16,
+ 9977, 9063, 8405, 17, 6121, 6874,
+ 9977, 9063, 8405, 17, 6121, 8432,
+ 9977, 9063, 8405, 17, 6121, 10804,
+ 9977, 9063, 8405, 28,
+ 9977, 9063, 8405, 29, 6121, 10804,
+ 9977, 9063, 8405, 40,
+ 9977, 9063, 8405, 41, 6121, 8153, 6378,
+ 9977, 9063, 8405, 41, 6121, 8432,
+ 9977, 9063, 8405, 41, 6121, 10804,
+ 9977, 9063, 8405, 102,
+ 9977, 9063, 8405, 142,
+ 9977, 9063, 8405, 164,
+ 9977, 9063, 8405, 172,
+ 9977, 9063, 8405, 173, 6121, 4530,
+ 9977, 9063, 8405, 173, 6121, 5878,
+ 9977, 9063, 8405, 173, 6121, 8473, 4530,
+ 9977, 9063, 8405, 174,
+ 9977, 9063, 8405, 175, 6121, 5878,
+ 9977, 9063, 8405, 176,
+ 9977, 9063, 8405, 177, 6121, 4530,
+ 9977, 9063, 8405, 177, 6121, 5878,
+ 9977, 9063, 8405, 177, 6121, 8473, 4530,
+ 9977, 9063, 8405, 177, 6121, 10802,
+ 9977, 9063, 8405, 182,
+ 9977, 9063, 8405, 183, 6121, 5934,
+ 9977, 9063, 8405, 184,
+ 9977, 9063, 8405, 185, 6121, 10802,
+ 9977, 9063, 8405, 236,
+ 9977, 9063, 8405, 237, 6121, 4530,
+ 9977, 9063, 8405, 237, 6121, 8758,
+ 9977, 9063, 8405, 237, 6121, 10802,
+ 9977, 9063, 8405, 258,
+ 9977, 9063, 8405, 259, 6121, 6516,
+ 9977, 9063, 8405, 259, 6121, 6874,
+ 9977, 9063, 8405, 276,
+ 9977, 9063, 8405, 294,
+ 9977, 9063, 8405, 306,
+ 9977, 9063, 8405, 307, 6121, 4530,
+ 9977, 9063, 8405, 307, 6121, 8758,
+ 9977, 9063, 8405, 307, 6121, 10677, 8758,
+ 9977, 9063, 8405, 307, 6121, 10802,
+ 9977, 9063, 8405, 448,
+ 9977, 9063, 8405, 468,
+ 9977, 9063, 8405, 469, 6121, 8473, 4530,
+ 9977, 9063, 8405, 496,
+ 9977, 9063, 8405, 560,
+ 9977, 9063, 8405, 561, 6121, 8473, 4530,
+ 9977, 9063, 8405, 561, 6121, 10802,
+ 9977, 9063, 8405, 592,
+ 9977, 9063, 8405, 612,
+ 9977, 9063, 8405, 626,
+ 9977, 9063, 8405, 652,
+ 9977, 9063, 8405, 656,
+ 9977, 9063, 8405, 658,
+ 9977, 9063, 8405, 664,
+ 9977, 9063, 8405, 672,
+ 9977, 9063, 8405, 673, 6121, 10802,
+ 9977, 9063, 8405, 673, 6121, 10804,
+ 9977, 9063, 8405, 807, 3096,
+ 9977, 9063, 8405, 886,
+ 9977, 9063, 8405, 887, 6121, 10677, 8758,
+ 9977, 9063, 8405, 887, 6121, 10802,
+ 9977, 9063, 8405, 887, 6121, 10804,
+ 9977, 9063, 8405, 1022,
+ 9977, 9063, 8405, 1074,
+ 9977, 9063, 8405, 1082,
+ 9977, 9063, 8405, 1262,
+ 9977, 9063, 8405, 1263, 6121, 8473, 4530,
+ 9977, 9063, 8405, 1263, 6121, 8758,
+ 9977, 9063, 8405, 1263, 6121, 8759, 721, 4530,
+ 9977, 9063, 8405, 1263, 6121, 8896,
+ 9977, 9063, 8405, 1263, 6121, 10802,
+ 9977, 9063, 8405, 1284,
+ 9977, 9063, 8405, 1442,
+ 9977, 9063, 8405, 1640,
+ 9977, 9063, 8405, 1680,
+ 9977, 9063, 8405, 1770,
+ 9977, 9063, 8405, 1794,
+ 9977, 9063, 8405, 2064,
+ 9977, 9063, 8405, 2250,
+ 9977, 9063, 8405, 2410,
+ 9977, 9063, 8405, 2516,
+ 9977, 9063, 8405, 2734,
+ 9977, 9063, 8405, 2774,
+ 9977, 9063, 8405, 3012,
+ 9977, 9063, 8405, 3038,
+ 9977, 9063, 8405, 3148,
+ 9977, 9063, 8405, 3149, 6121, 6516,
+ 9977, 9063, 8405, 3149, 6121, 10802,
+ 9977, 9063, 8405, 3149, 6121, 10804,
+ 9977, 9063, 8405, 3862,
+ 9977, 9063, 8405, 4142,
+ 9977, 9063, 8405, 4146,
+ 9977, 9063, 8405, 4148,
+ 9977, 9063, 8405, 4198,
+ 9977, 9063, 8405, 4393, 5758,
+ 9977, 9063, 8405, 4614,
+ 9977, 9063, 8405, 4771, 142,
+ 9977, 9063, 8405, 4771, 1022,
+ 9977, 9063, 8405, 4771, 1794,
+ 9977, 9063, 8405, 4771, 2064,
+ 9977, 9063, 8405, 4771, 2542,
+ 9977, 9063, 8405, 4771, 2704,
+ 9977, 9063, 8405, 4771, 3172,
+ 9977, 9063, 8405, 4771, 4144,
+ 9977, 9063, 8405, 5690,
+ 9977, 9063, 8405, 5734,
+ 9977, 9063, 8405, 5781, 142,
+ 9977, 9063, 8405, 5781, 172,
+ 9977, 9063, 8405, 5781, 174,
+ 9977, 9063, 8405, 5781, 5758,
+ 9977, 9063, 8405, 5890,
+ 9977, 9063, 8405, 5980,
+ 9977, 9063, 8405, 5982,
+ 9977, 9063, 8405, 5986,
+ 9977, 9063, 8405, 6200,
+ 9977, 9063, 8405, 6201, 6121, 3697, 3058,
+ 9977, 9063, 8405, 6201, 6121, 10804,
+ 9977, 9063, 8405, 6302,
+ 9977, 9063, 8405, 6399, 306,
+ 9977, 9063, 8405, 6519, 7316,
+ 9977, 9063, 8405, 6696,
+ 9977, 9063, 8405, 6710,
+ 9977, 9063, 8405, 7062,
+ 9977, 9063, 8405, 7316,
+ 9977, 9063, 8405, 7317, 6121, 7716,
+ 9977, 9063, 8405, 7455, 7316,
+ 9977, 9063, 8405, 7494,
+ 9977, 9063, 8405, 7495, 6121, 10804,
+ 9977, 9063, 8405, 7522,
+ 9977, 9063, 8405, 7551, 16,
+ 9977, 9063, 8405, 7551, 17, 6121, 5878,
+ 9977, 9063, 8405, 7551, 40,
+ 9977, 9063, 8405, 7981, 28,
+ 9977, 9063, 8405, 7981, 29, 6121, 10804,
+ 9977, 9063, 8405, 8065, 8425, 3096,
+ 9977, 9063, 8405, 8153, 11125, 28,
+ 9977, 9063, 8405, 8425, 3096,
+ 9977, 9063, 8405, 8960,
+ 9977, 9063, 8405, 9029, 306,
+ 9977, 9063, 8405, 9049, 3096,
+ 9977, 9063, 8405, 9372,
+ 9977, 9063, 8405, 9373, 6121, 8153, 6875, 7908,
+ 9977, 9063, 8405, 9501, 3058,
+ 9977, 9063, 8405, 10269, 0,
+ 9977, 9063, 8405, 10269, 8,
+ 9977, 9063, 8405, 10269, 807, 3096,
+ 9977, 9063, 8405, 10269, 3038,
+ 9977, 9063, 8405, 10269, 8065, 8425, 3096,
+ 9977, 9063, 8405, 10269, 8425, 3096,
+ 9977, 9063, 8405, 10489, 664,
+ 9977, 9063, 8405, 10489, 672,
+ 9977, 9063, 8405, 10489, 1082,
+ 9977, 9063, 8405, 10509, 5758,
+ 9977, 9063, 8405, 10545, 40,
+ 9977, 9063, 8405, 10545, 41, 6121, 8758,
+ 9977, 9063, 8405, 10697, 236,
+ 9977, 9063, 8405, 10697, 886,
+ 9977, 9063, 8405, 10697, 887, 6121, 10802,
+ 9977, 9063, 8405, 10697, 1082,
+ 9977, 9063, 8405, 10735, 28,
+ 9977, 9063, 8405, 11125, 28,
+ 9977, 9063, 8405, 11127, 592,
+ 9977, 9063, 8405, 11383, 258,
+ 9977, 9063, 8405, 11665, 886,
+ 9977, 9063, 8405, 13415, 16,
+ 9977, 9063, 10301, 1, 258,
+ 9977, 9063, 10301, 177, 1262,
+ 9977, 9063, 10301, 561, 2734,
+ 9977, 9578,
+ 9977, 11363, 5758,
+ 10003, 5758,
+ 10017, 5758,
+ 10017, 7580,
+ 10017, 7710,
+ 10141, 7383, 11765, 6434,
+ 10153, 6434,
+ 10157, 8774,
+ 10162,
+ 10171, 4223, 5836,
+ 10171, 6610,
+ 10171, 6616,
+ 10171, 6689, 2170,
+ 10171, 6689, 2540,
+ 10171, 6689, 2778,
+ 10171, 6689, 4200,
+ 10171, 6689, 4214,
+ 10171, 6689, 5190,
+ 10171, 6689, 6722,
+ 10171, 6689, 7508,
+ 10171, 6689, 7694,
+ 10171, 7723, 4927, 4790,
+ 10171, 7723, 4927, 6676,
+ 10171, 7723, 4927, 6686,
+ 10171, 7723, 4927, 6910,
+ 10171, 7723, 4927, 7038,
+ 10171, 7723, 4927, 7551, 8646,
+ 10171, 7723, 4927, 7860,
+ 10171, 7723, 4927, 8046,
+ 10171, 7723, 4927, 8646,
+ 10171, 7723, 4927, 11934,
+ 10171, 8525, 2670,
+ 10171, 8525, 2671, 10624,
+ 10171, 8525, 6784,
+ 10171, 8525, 6804,
+ 10171, 8525, 7576,
+ 10171, 8525, 8160,
+ 10171, 8525, 8514,
+ 10171, 8525, 8820,
+ 10171, 8525, 8876,
+ 10171, 8525, 9344,
+ 10171, 8525, 9672,
+ 10171, 9607, 6610,
+ 10171, 9665, 4926,
+ 10171, 10469, 4926,
+ 10171, 10585, 100,
+ 10171, 10585, 102,
+ 10171, 10585, 106,
+ 10171, 10585, 108,
+ 10171, 10585, 112,
+ 10171, 10585, 116,
+ 10171, 10585, 122,
+ 10171, 10585, 126,
+ 10171, 10585, 130,
+ 10171, 10585, 132,
+ 10171, 10585, 138,
+ 10171, 10585, 142,
+ 10171, 10585, 144,
+ 10171, 10585, 150,
+ 10171, 10585, 152,
+ 10171, 10585, 196,
+ 10171, 10585, 198,
+ 10171, 10585, 202,
+ 10171, 10585, 208,
+ 10171, 10585, 210,
+ 10171, 10585, 216,
+ 10171, 10585, 220,
+ 10171, 10585, 224,
+ 10171, 10585, 228,
+ 10171, 10585, 230,
+ 10171, 10585, 236,
+ 10171, 10585, 238,
+ 10171, 10585, 242,
+ 10171, 10585, 246,
+ 10171, 10585, 250,
+ 10171, 10585, 292,
+ 10171, 10585, 294,
+ 10171, 10585, 296,
+ 10171, 10585, 298,
+ 10171, 10585, 300,
+ 10171, 10585, 306,
+ 10171, 10585, 310,
+ 10171, 10585, 314,
+ 10171, 10585, 322,
+ 10171, 10585, 326,
+ 10171, 10585, 332,
+ 10171, 10585, 336,
+ 10171, 10585, 340,
+ 10171, 10585, 350,
+ 10171, 10585, 354,
+ 10171, 10585, 364,
+ 10171, 10585, 368,
+ 10171, 10585, 374,
+ 10171, 10585, 380,
+ 10171, 10585, 384,
+ 10171, 10585, 392,
+ 10171, 10585, 396,
+ 10171, 10585, 404,
+ 10171, 10585, 412,
+ 10171, 10585, 416,
+ 10171, 10585, 462,
+ 10171, 10585, 468,
+ 10171, 10585, 476,
+ 10171, 10585, 480,
+ 10171, 10585, 486,
+ 10171, 10585, 496,
+ 10171, 10585, 498,
+ 10171, 10585, 500,
+ 10171, 10585, 502,
+ 10171, 10585, 506,
+ 10171, 10585, 510,
+ 10171, 10585, 512,
+ 10171, 10585, 514,
+ 10171, 10585, 516,
+ 10171, 10585, 520,
+ 10171, 10585, 524,
+ 10171, 10585, 526,
+ 10171, 10585, 532,
+ 10171, 10585, 536,
+ 10171, 10585, 546,
+ 10171, 10585, 556,
+ 10171, 10585, 560,
+ 10171, 10585, 564,
+ 10171, 10585, 568,
+ 10171, 10585, 576,
+ 10171, 10585, 610,
+ 10171, 10585, 612,
+ 10171, 10585, 614,
+ 10171, 10585, 616,
+ 10171, 10585, 618,
+ 10171, 10585, 622,
+ 10171, 10585, 626,
+ 10171, 10585, 630,
+ 10171, 10585, 632,
+ 10171, 10585, 634,
+ 10171, 10585, 638,
+ 10171, 10585, 640,
+ 10171, 10585, 644,
+ 10171, 10585, 646,
+ 10171, 10585, 648,
+ 10171, 10585, 652,
+ 10171, 10585, 654,
+ 10171, 10585, 656,
+ 10171, 10585, 660,
+ 10171, 10585, 664,
+ 10171, 10585, 670,
+ 10171, 10585, 672,
+ 10171, 10585, 676,
+ 10171, 10585, 678,
+ 10171, 10585, 680,
+ 10171, 10585, 748,
+ 10171, 10585, 778,
+ 10171, 10585, 816,
+ 10171, 10585, 838,
+ 10171, 10585, 840,
+ 10171, 10585, 842,
+ 10171, 10585, 854,
+ 10171, 10585, 866,
+ 10171, 10585, 868,
+ 10171, 10585, 870,
+ 10171, 10585, 872,
+ 10171, 10585, 874,
+ 10171, 10585, 876,
+ 10171, 10585, 884,
+ 10171, 10585, 886,
+ 10171, 10585, 888,
+ 10171, 10585, 890,
+ 10171, 10585, 892,
+ 10171, 10585, 910,
+ 10171, 10585, 936,
+ 10171, 10585, 954,
+ 10171, 10585, 974,
+ 10171, 10585, 976,
+ 10171, 10585, 978,
+ 10171, 10585, 980,
+ 10171, 10585, 982,
+ 10171, 10585, 984,
+ 10171, 10585, 1034,
+ 10171, 10585, 1072,
+ 10171, 10585, 1140,
+ 10171, 10585, 1150,
+ 10171, 10585, 1188,
+ 10171, 10585, 1190,
+ 10171, 10585, 1192,
+ 10171, 10585, 1194,
+ 10171, 10585, 1204,
+ 10171, 10585, 1238,
+ 10171, 10585, 1250,
+ 10171, 10585, 1252,
+ 10171, 10585, 1254,
+ 10171, 10585, 1256,
+ 10171, 10585, 1258,
+ 10171, 10585, 1288,
+ 10171, 10585, 1322,
+ 10171, 10585, 1324,
+ 10171, 10585, 1326,
+ 10171, 10585, 1328,
+ 10171, 10585, 1330,
+ 10171, 10585, 1332,
+ 10171, 10585, 1334,
+ 10171, 10585, 1336,
+ 10171, 10585, 1338,
+ 10171, 10585, 1356,
+ 10171, 10585, 1370,
+ 10171, 10585, 1372,
+ 10171, 10585, 1374,
+ 10171, 10585, 1376,
+ 10171, 10585, 1378,
+ 10171, 10585, 1418,
+ 10171, 10585, 1502,
+ 10171, 10585, 1506,
+ 10171, 10585, 1540,
+ 10171, 10585, 1562,
+ 10171, 10585, 1574,
+ 10171, 10585, 1598,
+ 10171, 10585, 1654,
+ 10171, 10585, 1704,
+ 10171, 10585, 1706,
+ 10171, 10585, 1708,
+ 10171, 10585, 1712,
+ 10171, 10585, 1714,
+ 10171, 10585, 1716,
+ 10171, 10585, 1718,
+ 10171, 10585, 1720,
+ 10171, 10585, 1722,
+ 10171, 10585, 1724,
+ 10171, 10585, 1726,
+ 10171, 10585, 1728,
+ 10171, 10585, 1730,
+ 10171, 10585, 1732,
+ 10171, 10585, 1758,
+ 10171, 10585, 1798,
+ 10171, 10585, 1834,
+ 10171, 10585, 1854,
+ 10171, 10585, 1890,
+ 10171, 10585, 1932,
+ 10171, 10585, 1964,
+ 10171, 10585, 1966,
+ 10171, 10585, 1968,
+ 10171, 10585, 1972,
+ 10171, 10585, 1982,
+ 10171, 10585, 2016,
+ 10171, 10585, 2082,
+ 10171, 10585, 2122,
+ 10171, 10585, 2126,
+ 10171, 10585, 2130,
+ 10171, 10585, 2132,
+ 10171, 10585, 2134,
+ 10171, 10585, 2136,
+ 10171, 10585, 2188,
+ 10171, 10585, 2204,
+ 10171, 10585, 2212,
+ 10171, 10585, 2214,
+ 10171, 10585, 2216,
+ 10171, 10585, 2218,
+ 10171, 10585, 2220,
+ 10171, 10585, 2236,
+ 10171, 10585, 2266,
+ 10171, 10585, 2268,
+ 10171, 10585, 2270,
+ 10171, 10585, 2282,
+ 10171, 10585, 2294,
+ 10171, 10585, 2296,
+ 10171, 10585, 2298,
+ 10171, 10585, 2300,
+ 10171, 10585, 2302,
+ 10171, 10585, 2304,
+ 10171, 10585, 2316,
+ 10171, 10585, 2350,
+ 10171, 10585, 2352,
+ 10171, 10585, 2354,
+ 10171, 10585, 2356,
+ 10171, 10585, 2358,
+ 10171, 10585, 2360,
+ 10171, 10585, 2362,
+ 10171, 10585, 2370,
+ 10171, 10585, 2378,
+ 10171, 10585, 2402,
+ 10171, 10585, 2424,
+ 10171, 10585, 2466,
+ 10171, 10585, 2468,
+ 10171, 10585, 2482,
+ 10171, 10585, 2504,
+ 10171, 10585, 2516,
+ 10171, 10585, 2518,
+ 10171, 10585, 2520,
+ 10171, 10585, 2522,
+ 10171, 10585, 2524,
+ 10171, 10585, 2548,
+ 10171, 10585, 2566,
+ 10171, 10585, 2568,
+ 10171, 10585, 2570,
+ 10171, 10585, 2572,
+ 10171, 10585, 2574,
+ 10171, 10585, 2598,
+ 10171, 10585, 2620,
+ 10171, 10585, 2622,
+ 10171, 10585, 2624,
+ 10171, 10585, 2626,
+ 10171, 10585, 2628,
+ 10171, 10585, 2634,
+ 10171, 10585, 2666,
+ 10171, 10585, 2678,
+ 10171, 10585, 2680,
+ 10171, 10585, 2682,
+ 10171, 10585, 2684,
+ 10171, 10585, 2686,
+ 10171, 10585, 2718,
+ 10171, 10585, 2732,
+ 10171, 10585, 2734,
+ 10171, 10585, 2736,
+ 10171, 10585, 2738,
+ 10171, 10585, 2740,
+ 10171, 10585, 2772,
+ 10171, 10585, 2790,
+ 10171, 10585, 2792,
+ 10171, 10585, 2794,
+ 10171, 10585, 2796,
+ 10171, 10585, 2798,
+ 10171, 10585, 2844,
+ 10171, 10585, 2856,
+ 10171, 10585, 2896,
+ 10171, 10585, 2906,
+ 10171, 10585, 2922,
+ 10171, 10585, 2936,
+ 10171, 10585, 2952,
+ 10171, 10585, 2956,
+ 10171, 10585, 2968,
+ 10171, 10585, 2982,
+ 10171, 10585, 2984,
+ 10171, 10585, 2986,
+ 10171, 10585, 2988,
+ 10171, 10585, 2990,
+ 10171, 10585, 2992,
+ 10171, 10585, 2994,
+ 10171, 10585, 3002,
+ 10171, 10585, 3006,
+ 10171, 10585, 3050,
+ 10171, 10585, 3078,
+ 10171, 10585, 3120,
+ 10171, 10585, 3138,
+ 10171, 10585, 3146,
+ 10171, 10585, 3148,
+ 10171, 10585, 3150,
+ 10171, 10585, 3152,
+ 10171, 10585, 3154,
+ 10171, 10585, 3176,
+ 10171, 10585, 3202,
+ 10171, 10585, 3212,
+ 10171, 10585, 3214,
+ 10171, 10585, 3216,
+ 10171, 10585, 3218,
+ 10171, 10585, 3220,
+ 10171, 10585, 3826,
+ 10171, 10585, 3856,
+ 10171, 10585, 3858,
+ 10171, 10585, 3860,
+ 10171, 10585, 3862,
+ 10171, 10585, 3864,
+ 10171, 10585, 3866,
+ 10171, 10585, 3868,
+ 10171, 10585, 3874,
+ 10171, 10585, 3890,
+ 10171, 10585, 3906,
+ 10171, 10585, 3924,
+ 10171, 10585, 3998,
+ 10171, 10585, 4010,
+ 10171, 10585, 4028,
+ 10171, 10585, 4046,
+ 10171, 10585, 4232,
+ 10171, 10585, 4270,
+ 10171, 10585, 4278,
+ 10171, 10585, 4308,
+ 10171, 10585, 4310,
+ 10171, 10585, 4312,
+ 10171, 10585, 4370,
+ 10171, 10585, 4372,
+ 10171, 10585, 4374,
+ 10171, 10585, 4378,
+ 10171, 10585, 4412,
+ 10171, 10585, 4414,
+ 10171, 10585, 4416,
+ 10171, 10585, 4796,
+ 10171, 10585, 4798,
+ 10171, 10585, 4804,
+ 10171, 10585, 4806,
+ 10171, 10585, 4808,
+ 10171, 10585, 4810,
+ 10171, 10585, 4812,
+ 10171, 10585, 4814,
+ 10171, 10585, 4816,
+ 10171, 10585, 5034,
+ 10171, 10585, 5292,
+ 10171, 10585, 5296,
+ 10171, 10585, 5314,
+ 10171, 10585, 5332,
+ 10171, 10585, 5410,
+ 10171, 10585, 5416,
+ 10171, 10585, 5418,
+ 10171, 10585, 5422,
+ 10171, 10585, 5462,
+ 10171, 10585, 5478,
+ 10171, 10585, 5480,
+ 10171, 10585, 5482,
+ 10171, 10585, 5484,
+ 10171, 10585, 5486,
+ 10171, 10585, 5508,
+ 10171, 10585, 5510,
+ 10171, 10585, 5512,
+ 10171, 10585, 5514,
+ 10171, 10585, 5666,
+ 10171, 10585, 5678,
+ 10171, 10585, 5704,
+ 10171, 10585, 5732,
+ 10171, 10585, 5786,
+ 10171, 10585, 5794,
+ 10171, 10585, 5866,
+ 10171, 10585, 5868,
+ 10171, 10585, 5870,
+ 10171, 10585, 5906,
+ 10171, 10585, 5914,
+ 10171, 10585, 5928,
+ 10171, 10585, 5932,
+ 10171, 10585, 5974,
+ 10171, 10585, 5976,
+ 10171, 10585, 5984,
+ 10171, 10585, 6032,
+ 10171, 10585, 6034,
+ 10171, 10585, 6038,
+ 10171, 10585, 6148,
+ 10171, 10585, 6150,
+ 10171, 10585, 6152,
+ 10171, 10585, 6154,
+ 10171, 10585, 6264,
+ 10171, 10585, 6274,
+ 10171, 10585, 6300,
+ 10171, 10585, 6328,
+ 10171, 10585, 6336,
+ 10171, 10585, 6550,
+ 10171, 10585, 6552,
+ 10171, 10585, 6846,
+ 10171, 10585, 6848,
+ 10171, 10585, 7066,
+ 10171, 10585, 7068,
+ 10171, 10585, 7406,
+ 10171, 10585, 7408,
+ 10171, 10585, 9313, 0,
+ 10171, 10585, 9313, 8,
+ 10171, 10585, 9313, 16,
+ 10171, 10585, 9313, 28,
+ 10171, 10585, 9313, 40,
+ 10171, 10585, 9313, 58,
+ 10171, 10585, 9313, 162,
+ 10171, 10585, 9313, 422,
+ 10171, 10585, 9313, 622,
+ 10171, 10585, 11223, 838,
+ 10171, 10585, 11223, 1188,
+ 10171, 10585, 11223, 1964,
+ 10171, 10585, 11223, 2266,
+ 10171, 10585, 11723, 0,
+ 10171, 10585, 11723, 8,
+ 10171, 10585, 11723, 16,
+ 10171, 10585, 11723, 28,
+ 10171, 10585, 11723, 40,
+ 10171, 10585, 11723, 58,
+ 10171, 10585, 11723, 162,
+ 10171, 10767, 11639, 4926,
+ 10171, 11163, 11228,
+ 10171, 11224,
+ 10171, 11400,
+ 10173, 12403, 6689, 2170,
+ 10173, 12403, 6689, 2540,
+ 10173, 12403, 6689, 2778,
+ 10173, 12403, 6689, 4200,
+ 10173, 12403, 6689, 4214,
+ 10173, 12403, 6689, 5190,
+ 10173, 12403, 6689, 6260,
+ 10173, 12403, 6689, 6722,
+ 10173, 12403, 6689, 7508,
+ 10173, 12403, 6689, 7694,
+ 10179, 9539, 11054,
+ 10192,
+ 10203, 7580,
+ 10203, 11143, 2170,
+ 10213, 11894,
+ 10221, 7593, 8405, 80,
+ 10221, 7593, 8405, 176,
+ 10221, 7593, 8405, 238,
+ 10221, 7593, 8405, 274,
+ 10221, 7593, 8405, 438,
+ 10221, 7593, 8405, 596,
+ 10221, 7593, 8405, 626,
+ 10221, 7593, 8405, 756,
+ 10221, 7593, 8405, 858,
+ 10221, 7593, 8405, 900,
+ 10221, 7593, 8405, 1038,
+ 10221, 7593, 8405, 1216,
+ 10221, 7593, 8405, 1340,
+ 10221, 7593, 8405, 1350,
+ 10221, 7593, 8405, 1380,
+ 10221, 7593, 8405, 1420,
+ 10221, 7593, 8405, 1520,
+ 10221, 7593, 8405, 1588,
+ 10221, 7593, 8405, 1744,
+ 10221, 7593, 8405, 1860,
+ 10221, 7593, 8405, 1992,
+ 10221, 7593, 8405, 2196,
+ 10221, 7593, 8405, 2290,
+ 10221, 7593, 8405, 2384,
+ 10221, 7593, 8405, 2490,
+ 10221, 7593, 8405, 2648,
+ 10221, 7593, 8405, 2654,
+ 10221, 7593, 8405, 2868,
+ 10221, 7593, 8405, 2954,
+ 10221, 7593, 8405, 3140,
+ 10221, 7593, 8405, 3884,
+ 10221, 7593, 8405, 3904,
+ 10221, 7593, 8405, 4316,
+ 10221, 7593, 8405, 4634,
+ 10221, 7593, 8405, 4742,
+ 10221, 7593, 8405, 5414,
+ 10221, 7593, 8405, 5698,
+ 10221, 7593, 8405, 6268,
+ 10221, 8405, 80,
+ 10221, 8405, 176,
+ 10221, 8405, 202,
+ 10221, 8405, 238,
+ 10221, 8405, 274,
+ 10221, 8405, 438,
+ 10221, 8405, 596,
+ 10221, 8405, 626,
+ 10221, 8405, 658,
+ 10221, 8405, 710,
+ 10221, 8405, 756,
+ 10221, 8405, 858,
+ 10221, 8405, 900,
+ 10221, 8405, 1038,
+ 10221, 8405, 1216,
+ 10221, 8405, 1340,
+ 10221, 8405, 1350,
+ 10221, 8405, 1380,
+ 10221, 8405, 1420,
+ 10221, 8405, 1520,
+ 10221, 8405, 1588,
+ 10221, 8405, 1744,
+ 10221, 8405, 1860,
+ 10221, 8405, 1992,
+ 10221, 8405, 2196,
+ 10221, 8405, 2290,
+ 10221, 8405, 2384,
+ 10221, 8405, 2490,
+ 10221, 8405, 2648,
+ 10221, 8405, 2654,
+ 10221, 8405, 2868,
+ 10221, 8405, 2954,
+ 10221, 8405, 3140,
+ 10221, 8405, 3884,
+ 10221, 8405, 3904,
+ 10221, 8405, 4316,
+ 10221, 8405, 4634,
+ 10221, 8405, 4742,
+ 10221, 8405, 5414,
+ 10221, 8405, 5698,
+ 10221, 8405, 6268,
+ 10221, 8405, 6728,
+ 10221, 8405, 8869, 1216,
+ 10221, 9063, 8405, 80,
+ 10221, 9063, 8405, 176,
+ 10221, 9063, 8405, 238,
+ 10221, 9063, 8405, 274,
+ 10221, 9063, 8405, 438,
+ 10221, 9063, 8405, 596,
+ 10221, 9063, 8405, 626,
+ 10221, 9063, 8405, 756,
+ 10221, 9063, 8405, 858,
+ 10221, 9063, 8405, 900,
+ 10221, 9063, 8405, 1038,
+ 10221, 9063, 8405, 1216,
+ 10221, 9063, 8405, 1340,
+ 10221, 9063, 8405, 1350,
+ 10221, 9063, 8405, 1380,
+ 10221, 9063, 8405, 1420,
+ 10221, 9063, 8405, 1520,
+ 10221, 9063, 8405, 1588,
+ 10221, 9063, 8405, 1744,
+ 10221, 9063, 8405, 1860,
+ 10221, 9063, 8405, 1992,
+ 10221, 9063, 8405, 2196,
+ 10221, 9063, 8405, 2290,
+ 10221, 9063, 8405, 2384,
+ 10221, 9063, 8405, 2490,
+ 10221, 9063, 8405, 2648,
+ 10221, 9063, 8405, 2654,
+ 10221, 9063, 8405, 2868,
+ 10221, 9063, 8405, 2954,
+ 10221, 9063, 8405, 3140,
+ 10221, 9063, 8405, 3884,
+ 10221, 9063, 8405, 3904,
+ 10221, 9063, 8405, 4316,
+ 10221, 9063, 8405, 4634,
+ 10221, 9063, 8405, 4742,
+ 10221, 9063, 8405, 5414,
+ 10221, 9063, 8405, 5698,
+ 10221, 9063, 8405, 6268,
+ 10221, 11163, 11228,
+ 10225, 436,
+ 10225, 5759, 7282,
+ 10225, 5759, 8916,
+ 10225, 5759, 9824,
+ 10225, 5759, 9870,
+ 10225, 5759, 9904,
+ 10225, 5759, 11900,
+ 10225, 6689, 2170,
+ 10225, 6689, 2540,
+ 10225, 6689, 2778,
+ 10225, 6689, 4200,
+ 10225, 6689, 4214,
+ 10225, 6689, 5190,
+ 10225, 6689, 6260,
+ 10225, 6689, 6722,
+ 10225, 6689, 7508,
+ 10225, 6689, 7694,
+ 10225, 7469, 5758,
+ 10225, 7803, 5759, 8,
+ 10225, 7803, 5759, 16,
+ 10225, 7803, 5759, 28,
+ 10225, 7803, 5759, 40,
+ 10225, 7803, 5759, 58,
+ 10225, 7803, 5759, 72,
+ 10225, 7803, 5759, 92,
+ 10225, 7803, 5759, 266,
+ 10225, 7803, 5759, 606,
+ 10225, 7803, 5759, 8031, 8,
+ 10225, 7803, 5759, 8031, 28,
+ 10225, 7803, 5759, 9827, 22,
+ 10225, 7803, 5759, 9827, 34,
+ 10225, 7803, 5759, 9827, 344,
+ 10225, 7803, 5759, 9827, 518,
+ 10225, 7803, 8031, 8,
+ 10225, 7803, 8031, 28,
+ 10225, 8405, 0,
+ 10225, 8405, 8,
+ 10225, 8405, 16,
+ 10225, 8405, 28,
+ 10225, 8405, 40,
+ 10225, 8405, 58,
+ 10225, 8405, 72,
+ 10225, 8405, 92,
+ 10225, 8405, 100,
+ 10225, 8405, 116,
+ 10225, 8405, 138,
+ 10225, 8405, 216,
+ 10225, 8405, 236,
+ 10225, 8405, 266,
+ 10225, 8405, 292,
+ 10225, 8405, 306,
+ 10225, 8405, 332,
+ 10225, 8405, 364,
+ 10225, 8405, 392,
+ 10225, 8405, 462,
+ 10225, 8405, 510,
+ 10225, 8405, 524,
+ 10225, 8405, 556,
+ 10225, 8405, 606,
+ 10225, 8405, 610,
+ 10225, 8405, 652,
+ 10225, 8405, 792,
+ 10225, 8405, 884,
+ 10225, 8405, 974,
+ 10225, 8405, 996,
+ 10225, 8405, 1260,
+ 10225, 8405, 1512,
+ 10225, 8405, 1612,
+ 10225, 8405, 1796,
+ 10225, 8405, 2030,
+ 10225, 8405, 2076,
+ 10225, 8405, 2126,
+ 10225, 8405, 2212,
+ 10225, 8405, 2516,
+ 10225, 8405, 2566,
+ 10225, 8405, 2678,
+ 10225, 8405, 2746,
+ 10225, 8405, 4016,
+ 10225, 8405, 5994,
+ 10225, 8405, 9827, 22,
+ 10225, 8405, 9827, 34,
+ 10225, 8405, 9827, 344,
+ 10225, 8405, 9827, 518,
+ 10227, 171, 7318,
+ 10227, 1496,
+ 10227, 2826,
+ 10227, 5759, 3227, 6498,
+ 10227, 5759, 6498,
+ 10227, 5759, 7282,
+ 10227, 5759, 7758,
+ 10227, 5759, 8916,
+ 10227, 5759, 8944,
+ 10227, 5759, 9824,
+ 10227, 6380,
+ 10227, 6689, 2170,
+ 10227, 6689, 2540,
+ 10227, 6689, 2778,
+ 10227, 6689, 4200,
+ 10227, 6689, 4214,
+ 10227, 6689, 5190,
+ 10227, 6689, 6260,
+ 10227, 6689, 6722,
+ 10227, 6689, 7508,
+ 10227, 6689, 7694,
+ 10227, 7714,
+ 10227, 7803, 5759, 16,
+ 10227, 7803, 5759, 40,
+ 10227, 7803, 5759, 58,
+ 10227, 7803, 5759, 72,
+ 10227, 7803, 5759, 92,
+ 10227, 7803, 5759, 162,
+ 10227, 7803, 5759, 266,
+ 10227, 7803, 5759, 440,
+ 10227, 7803, 5759, 606,
+ 10227, 8405, 0,
+ 10227, 8405, 16,
+ 10227, 8405, 40,
+ 10227, 8405, 58,
+ 10227, 8405, 72,
+ 10227, 8405, 92,
+ 10227, 8405, 100,
+ 10227, 8405, 116,
+ 10227, 8405, 138,
+ 10227, 8405, 162,
+ 10227, 8405, 196,
+ 10227, 8405, 216,
+ 10227, 8405, 236,
+ 10227, 8405, 266,
+ 10227, 8405, 292,
+ 10227, 8405, 306,
+ 10227, 8405, 332,
+ 10227, 8405, 364,
+ 10227, 8405, 392,
+ 10227, 8405, 440,
+ 10227, 8405, 462,
+ 10227, 8405, 510,
+ 10227, 8405, 524,
+ 10227, 8405, 556,
+ 10227, 8405, 606,
+ 10227, 8405, 610,
+ 10227, 8405, 652,
+ 10227, 8405, 670,
+ 10227, 8405, 792,
+ 10227, 8405, 884,
+ 10227, 8405, 974,
+ 10227, 8405, 996,
+ 10227, 8405, 1260,
+ 10227, 8405, 1512,
+ 10227, 8405, 1612,
+ 10227, 8405, 1796,
+ 10227, 8405, 2030,
+ 10227, 8405, 2076,
+ 10227, 8405, 2126,
+ 10227, 8405, 2212,
+ 10227, 8405, 2438,
+ 10227, 8405, 2516,
+ 10227, 8405, 2678,
+ 10227, 8405, 2746,
+ 10227, 8405, 4016,
+ 10227, 8405, 4320,
+ 10227, 8405, 4748,
+ 10227, 8405, 5994,
+ 10231, 9513, 2170,
+ 10231, 9513, 2540,
+ 10231, 9513, 2670,
+ 10231, 9513, 2778,
+ 10231, 9513, 4200,
+ 10231, 9513, 4214,
+ 10231, 9513, 5190,
+ 10231, 9513, 6722,
+ 10231, 9513, 7508,
+ 10231, 9513, 7694,
+ 10231, 9513, 8820,
+ 10231, 9513, 8876,
+ 10241, 1177, 2681, 3276,
+ 10241, 1177, 2681, 6110,
+ 10241, 1177, 2681, 8192,
+ 10241, 1177, 2681, 8251, 6116,
+ 10241, 1177, 2681, 8333, 4830,
+ 10241, 1177, 2681, 8971, 7812,
+ 10241, 1177, 2681, 9395, 7639, 10344,
+ 10241, 1177, 2681, 9893, 9786,
+ 10241, 1177, 2681, 9934,
+ 10241, 1177, 2681, 9953, 4194,
+ 10241, 1177, 2681, 9963, 8290,
+ 10241, 1177, 2681, 10323, 8436,
+ 10241, 1177, 2681, 10680,
+ 10241, 1177, 2681, 11199, 6716,
+ 10241, 1177, 6131, 439, 2681, 9148,
+ 10241, 1177, 6383, 11454,
+ 10241, 1177, 6868,
+ 10241, 1177, 6877, 7388,
+ 10241, 1177, 6877, 8790,
+ 10241, 1177, 6877, 11732,
+ 10241, 1177, 6877, 13000,
+ 10241, 1177, 6995, 7738,
+ 10241, 1177, 7187, 9118,
+ 10241, 1177, 7348,
+ 10241, 1177, 7593, 8790,
+ 10241, 1177, 7593, 13000,
+ 10241, 1177, 7987, 11454,
+ 10241, 1177, 7999, 9784,
+ 10241, 1177, 8071, 569, 4944,
+ 10241, 1177, 8642,
+ 10241, 1177, 9341, 10632,
+ 10241, 1177, 9478,
+ 10241, 1177, 9613, 8898,
+ 10241, 1177, 9630,
+ 10241, 1177, 9832,
+ 10241, 1177, 9878,
+ 10241, 1177, 9954,
+ 10241, 1177, 9992,
+ 10241, 1177, 10146,
+ 10241, 1177, 10252,
+ 10241, 1177, 10458,
+ 10241, 1177, 10638,
+ 10241, 1177, 10689, 6796,
+ 10241, 1177, 10698,
+ 10241, 1177, 10793, 429, 2681, 7100,
+ 10241, 1177, 10998,
+ 10241, 1177, 11013, 10632,
+ 10241, 1177, 11056,
+ 10241, 1177, 11058,
+ 10241, 1177, 11247, 6416,
+ 10241, 1177, 11481, 91, 2681, 10732,
+ 10241, 1177, 11482,
+ 10241, 1177, 11614,
+ 10241, 1177, 11628,
+ 10241, 1177, 11678,
+ 10241, 1177, 11702,
+ 10241, 1177, 11704,
+ 10241, 1177, 11756,
+ 10241, 1177, 11836,
+ 10241, 1177, 11930,
+ 10241, 1177, 11938,
+ 10241, 1177, 12100,
+ 10241, 1177, 12414,
+ 10241, 1177, 12918,
+ 10243, 8405, 0,
+ 10243, 8405, 8,
+ 10243, 8405, 16,
+ 10243, 8405, 26,
+ 10243, 8405, 28,
+ 10243, 8405, 40,
+ 10243, 8405, 100,
+ 10243, 8405, 102,
+ 10243, 8405, 106,
+ 10243, 8405, 108,
+ 10243, 8405, 112,
+ 10243, 8405, 138,
+ 10243, 8405, 142,
+ 10243, 8405, 144,
+ 10243, 8405, 150,
+ 10243, 8405, 152,
+ 10243, 8405, 216,
+ 10243, 8405, 220,
+ 10243, 8405, 224,
+ 10243, 8405, 228,
+ 10243, 8405, 230,
+ 10243, 8405, 236,
+ 10243, 8405, 238,
+ 10243, 8405, 242,
+ 10243, 8405, 246,
+ 10243, 8405, 250,
+ 10243, 8405, 306,
+ 10243, 8405, 310,
+ 10243, 8405, 314,
+ 10243, 8405, 322,
+ 10243, 8405, 326,
+ 10243, 8405, 364,
+ 10243, 8405, 368,
+ 10243, 8405, 374,
+ 10243, 8405, 380,
+ 10243, 8405, 384,
+ 10243, 8405, 392,
+ 10243, 8405, 396,
+ 10243, 8405, 404,
+ 10243, 8405, 412,
+ 10243, 8405, 416,
+ 10243, 8405, 462,
+ 10243, 8405, 468,
+ 10243, 8405, 476,
+ 10243, 8405, 480,
+ 10243, 8405, 486,
+ 10243, 8405, 510,
+ 10243, 8405, 512,
+ 10243, 8405, 514,
+ 10243, 8405, 516,
+ 10243, 8405, 520,
+ 10243, 8405, 524,
+ 10243, 8405, 526,
+ 10243, 8405, 532,
+ 10243, 8405, 536,
+ 10243, 8405, 546,
+ 10243, 8405, 556,
+ 10243, 8405, 560,
+ 10243, 8405, 564,
+ 10243, 8405, 568,
+ 10243, 8405, 576,
+ 10243, 8405, 618,
+ 10243, 8405, 622,
+ 10243, 8405, 626,
+ 10243, 8405, 630,
+ 10243, 8405, 632,
+ 10243, 8405, 652,
+ 10243, 8405, 660,
+ 10243, 8405, 664,
+ 10243, 8405, 670,
+ 10243, 8405, 672,
+ 10243, 8405, 676,
+ 10243, 8405, 678,
+ 10243, 8405, 680,
+ 10243, 8405, 7593, 0,
+ 10243, 8405, 7593, 8,
+ 10243, 8405, 7593, 16,
+ 10243, 8405, 7593, 28,
+ 10243, 8405, 7593, 40,
+ 10243, 8405, 7593, 306,
+ 10243, 8405, 7593, 310,
+ 10243, 8405, 7593, 576,
+ 10243, 8405, 7593, 622,
+ 10243, 8405, 7593, 652,
+ 10243, 8405, 7593, 660,
+ 10243, 8405, 7593, 664,
+ 10243, 8921, 11067, 4926,
+ 10243, 9165, 6224,
+ 10243, 11067, 4926,
+ 10256,
+ 10257, 9495, 6121, 10677, 760,
+ 10260,
+ 10261, 6121, 7711, 5758,
+ 10261, 6121, 7768,
+ 10261, 6121, 8153, 8758,
+ 10261, 6121, 9546,
+ 10261, 6121, 10666,
+ 10261, 6121, 11097, 6435, 6121, 4530,
+ 10261, 6121, 12492,
+ 10261, 7939, 1, 7383, 10374,
+ 10261, 9015, 6121, 7580,
+ 10261, 10982,
+ 10265, 9610,
+ 10267, 2163, 5758,
+ 10267, 4841, 36,
+ 10267, 10469, 4926,
+ 10267, 10670,
+ 10267, 12017, 4926,
+ 10267, 12064,
+ 10277, 11663, 10539, 8774,
+ 10283, 8405, 0,
+ 10283, 8405, 8,
+ 10283, 8405, 16,
+ 10283, 8405, 26,
+ 10283, 8405, 28,
+ 10283, 8405, 40,
+ 10283, 8405, 100,
+ 10283, 8405, 102,
+ 10283, 8405, 106,
+ 10283, 8405, 108,
+ 10283, 8405, 112,
+ 10283, 8405, 138,
+ 10283, 8405, 142,
+ 10283, 8405, 144,
+ 10283, 8405, 150,
+ 10283, 8405, 152,
+ 10283, 8405, 216,
+ 10283, 8405, 220,
+ 10283, 8405, 224,
+ 10283, 8405, 228,
+ 10283, 8405, 230,
+ 10283, 8405, 236,
+ 10283, 8405, 238,
+ 10283, 8405, 242,
+ 10283, 8405, 246,
+ 10283, 8405, 250,
+ 10283, 8405, 306,
+ 10283, 8405, 310,
+ 10283, 8405, 314,
+ 10283, 8405, 322,
+ 10283, 8405, 326,
+ 10283, 8405, 364,
+ 10283, 8405, 368,
+ 10283, 8405, 374,
+ 10283, 8405, 380,
+ 10283, 8405, 384,
+ 10283, 8405, 392,
+ 10283, 8405, 396,
+ 10283, 8405, 404,
+ 10283, 8405, 412,
+ 10283, 8405, 416,
+ 10283, 8405, 462,
+ 10283, 8405, 468,
+ 10283, 8405, 476,
+ 10283, 8405, 480,
+ 10283, 8405, 486,
+ 10283, 8405, 510,
+ 10283, 8405, 512,
+ 10283, 8405, 514,
+ 10283, 8405, 516,
+ 10283, 8405, 520,
+ 10283, 8405, 524,
+ 10283, 8405, 526,
+ 10283, 8405, 532,
+ 10283, 8405, 536,
+ 10283, 8405, 546,
+ 10283, 8405, 556,
+ 10283, 8405, 560,
+ 10283, 8405, 564,
+ 10283, 8405, 568,
+ 10283, 8405, 576,
+ 10283, 8405, 610,
+ 10283, 8405, 612,
+ 10283, 8405, 614,
+ 10283, 8405, 616,
+ 10283, 8405, 618,
+ 10283, 8405, 622,
+ 10283, 8405, 626,
+ 10283, 8405, 630,
+ 10283, 8405, 632,
+ 10283, 8405, 652,
+ 10283, 8405, 660,
+ 10283, 8405, 664,
+ 10283, 8405, 670,
+ 10283, 8405, 672,
+ 10283, 8405, 676,
+ 10283, 8405, 678,
+ 10283, 8405, 680,
+ 10283, 8405, 7593, 0,
+ 10283, 8405, 7593, 8,
+ 10283, 8405, 7593, 16,
+ 10283, 8405, 7593, 28,
+ 10283, 8405, 7593, 40,
+ 10283, 8405, 7593, 236,
+ 10283, 8405, 7593, 238,
+ 10283, 8405, 7593, 242,
+ 10283, 8405, 7593, 246,
+ 10283, 8405, 7593, 250,
+ 10283, 8405, 7593, 306,
+ 10283, 8405, 7593, 310,
+ 10283, 8405, 7593, 326,
+ 10283, 8405, 7593, 384,
+ 10283, 8405, 7593, 416,
+ 10283, 8405, 7593, 510,
+ 10283, 8405, 7593, 512,
+ 10283, 8405, 7593, 514,
+ 10283, 8405, 7593, 516,
+ 10283, 8405, 7593, 520,
+ 10283, 8405, 7593, 532,
+ 10283, 8405, 7593, 546,
+ 10283, 8405, 7593, 568,
+ 10283, 8405, 7593, 576,
+ 10283, 8405, 7593, 622,
+ 10283, 8405, 7593, 652,
+ 10283, 8405, 7593, 660,
+ 10283, 8405, 7593, 664,
+ 10283, 8473, 1044,
+ 10283, 8921, 11067, 4926,
+ 10283, 9165, 4772,
+ 10283, 11067, 4926,
+ 10286,
+ 10297, 2638,
+ 10321, 8774,
+ 10327, 114,
+ 10327, 6408,
+ 10327, 6409, 6121, 5385, 735, 8165, 275, 6435, 10441, 601, 721, 4848,
+ 10327, 6409, 6121, 5385, 735, 8165, 275, 6435, 10441, 601, 721, 7442,
+ 10327, 6409, 6121, 5385, 735, 8165, 275, 6435, 10441, 4117, 721, 4848,
+ 10327, 6409, 6121, 5385, 735, 8165, 275, 6435, 10441, 4117, 721, 7442,
+ 10327, 6409, 6121, 5385, 735, 8165, 275, 6435, 10441, 4849, 721, 600,
+ 10327, 6409, 6121, 5385, 735, 8165, 275, 6435, 10441, 4849, 721, 4116,
+ 10327, 6409, 6121, 5385, 735, 8165, 275, 6435, 10441, 7443, 721, 600,
+ 10327, 6409, 6121, 5385, 735, 8165, 275, 6435, 10441, 7443, 721, 4116,
+ 10327, 6409, 9537, 4848,
+ 10327, 7443, 6409, 6121, 1044,
+ 10333, 2779, 8709, 5387, 4894,
+ 10333, 2779, 8709, 8328,
+ 10333, 4895, 5387, 2779, 8708,
+ 10333, 4895, 5387, 7550,
+ 10333, 6516,
+ 10333, 7551, 5387, 4894,
+ 10333, 9796,
+ 10333, 11164,
+ 10333, 11358,
+ 10339, 8405, 601, 5876,
+ 10339, 8405, 601, 10716,
+ 10339, 8405, 604,
+ 10339, 8405, 1045, 7580,
+ 10339, 8405, 1045, 10677, 760,
+ 10339, 8405, 1045, 11649, 760,
+ 10339, 8405, 1109, 1809, 5964,
+ 10339, 8405, 1109, 4423, 5964,
+ 10339, 8405, 1809, 601, 10716,
+ 10339, 8405, 1809, 4117, 10716,
+ 10339, 8405, 1809, 4849, 6434,
+ 10339, 8405, 1809, 4849, 10716,
+ 10339, 8405, 1809, 5550,
+ 10339, 8405, 1809, 5965, 760,
+ 10339, 8405, 1809, 6379, 7908,
+ 10339, 8405, 1809, 6875, 7908,
+ 10339, 8405, 1809, 7443, 10716,
+ 10339, 8405, 1809, 7708,
+ 10339, 8405, 1809, 8151, 5965, 760,
+ 10339, 8405, 1809, 8151, 11095, 5965, 760,
+ 10339, 8405, 1809, 8432,
+ 10339, 8405, 1809, 10267, 12017, 4926,
+ 10339, 8405, 1809, 10677, 4876,
+ 10339, 8405, 1809, 11095, 5965, 760,
+ 10339, 8405, 1809, 11449, 7908,
+ 10339, 8405, 1911, 5965, 760,
+ 10339, 8405, 1911, 8151, 5965, 760,
+ 10339, 8405, 1911, 8151, 11095, 5965, 760,
+ 10339, 8405, 1911, 11095, 5965, 760,
+ 10339, 8405, 3071, 10799, 5965, 4926,
+ 10339, 8405, 4117, 5876,
+ 10339, 8405, 4117, 10716,
+ 10339, 8405, 4389, 11859, 6610,
+ 10339, 8405, 4423, 5965, 760,
+ 10339, 8405, 4423, 8151, 5965, 760,
+ 10339, 8405, 4423, 8151, 11095, 5965, 760,
+ 10339, 8405, 4423, 11095, 5965, 760,
+ 10339, 8405, 4849, 4389, 5550,
+ 10339, 8405, 4849, 10716,
+ 10339, 8405, 5385, 7530,
+ 10339, 8405, 5445, 5758,
+ 10339, 8405, 6179, 10799, 5965, 4926,
+ 10339, 8405, 6379, 7908,
+ 10339, 8405, 6485, 1809, 5964,
+ 10339, 8405, 6485, 4423, 5964,
+ 10339, 8405, 6610,
+ 10339, 8405, 6623, 7908,
+ 10339, 8405, 6875, 7908,
+ 10339, 8405, 7121, 7443, 8077, 6408,
+ 10339, 8405, 7173, 5758,
+ 10339, 8405, 7390,
+ 10339, 8405, 7443, 4389, 5550,
+ 10339, 8405, 7443, 10716,
+ 10339, 8405, 7530,
+ 10339, 8405, 7551, 8167, 5758,
+ 10339, 8405, 7593, 0,
+ 10339, 8405, 7593, 2,
+ 10339, 8405, 7593, 4,
+ 10339, 8405, 7593, 5, 6121, 3966,
+ 10339, 8405, 7593, 6,
+ 10339, 8405, 7593, 8,
+ 10339, 8405, 7593, 10,
+ 10339, 8405, 7593, 12,
+ 10339, 8405, 7593, 14,
+ 10339, 8405, 7593, 15, 6121, 4530,
+ 10339, 8405, 7593, 17, 6121, 8758,
+ 10339, 8405, 7593, 18,
+ 10339, 8405, 7593, 19, 6121, 12426,
+ 10339, 8405, 7593, 20,
+ 10339, 8405, 7593, 22,
+ 10339, 8405, 7593, 23, 6121, 9553, 4530,
+ 10339, 8405, 7593, 23, 6121, 11215, 4530,
+ 10339, 8405, 7593, 24,
+ 10339, 8405, 7593, 25, 6121, 4530,
+ 10339, 8405, 7593, 27, 6121, 4849, 4530,
+ 10339, 8405, 7593, 27, 6121, 11215, 4530,
+ 10339, 8405, 7593, 28,
+ 10339, 8405, 7593, 30,
+ 10339, 8405, 7593, 34,
+ 10339, 8405, 7593, 36,
+ 10339, 8405, 7593, 37, 6121, 4530,
+ 10339, 8405, 7593, 38,
+ 10339, 8405, 7593, 39, 6121, 9553, 4530,
+ 10339, 8405, 7593, 40,
+ 10339, 8405, 7593, 41, 760,
+ 10339, 8405, 7593, 42,
+ 10339, 8405, 7593, 43, 6121, 4530,
+ 10339, 8405, 7593, 44,
+ 10339, 8405, 7593, 46,
+ 10339, 8405, 7593, 48,
+ 10339, 8405, 7593, 50,
+ 10339, 8405, 7593, 51, 6121, 3966,
+ 10339, 8405, 7593, 51, 6121, 11215, 4530,
+ 10339, 8405, 7593, 710,
+ 10339, 8405, 7593, 888,
+ 10339, 8405, 7593, 1110,
+ 10339, 8405, 7593, 1124,
+ 10339, 8405, 7593, 1130,
+ 10339, 8405, 7593, 1138,
+ 10339, 8405, 7593, 2216,
+ 10339, 8405, 7593, 2725, 4389, 28,
+ 10339, 8405, 7593, 3774,
+ 10339, 8405, 7593, 4614,
+ 10339, 8405, 7593, 5385, 8,
+ 10339, 8405, 7593, 5385, 28,
+ 10339, 8405, 7593, 6406,
+ 10339, 8405, 7593, 6674,
+ 10339, 8405, 7593, 6824,
+ 10339, 8405, 7593, 6879, 2216,
+ 10339, 8405, 7593, 6879, 6824,
+ 10339, 8405, 7593, 7494,
+ 10339, 8405, 7593, 7682,
+ 10339, 8405, 7593, 7981, 28,
+ 10339, 8405, 7593, 8005, 4389, 28,
+ 10339, 8405, 7593, 8679, 12,
+ 10339, 8405, 7593, 8869, 0,
+ 10339, 8405, 7593, 8869, 14,
+ 10339, 8405, 7593, 8869, 16,
+ 10339, 8405, 7593, 8869, 24,
+ 10339, 8405, 7593, 8869, 25, 6121, 4895, 1760,
+ 10339, 8405, 7593, 8869, 34,
+ 10339, 8405, 7593, 8869, 35, 6121, 4530,
+ 10339, 8405, 7593, 8869, 42,
+ 10339, 8405, 7593, 8869, 66,
+ 10339, 8405, 7593, 8869, 5385, 8,
+ 10339, 8405, 7593, 8869, 6406,
+ 10339, 8405, 7593, 9063, 16,
+ 10339, 8405, 7593, 9063, 17, 6121, 8758,
+ 10339, 8405, 7593, 9063, 22,
+ 10339, 8405, 7593, 9063, 26,
+ 10339, 8405, 7593, 9063, 40,
+ 10339, 8405, 7593, 9063, 10267, 34,
+ 10339, 8405, 7593, 9185, 19, 6121, 8758,
+ 10339, 8405, 7593, 9808,
+ 10339, 8405, 7593, 10489, 5385, 8,
+ 10339, 8405, 7593, 10489, 9313, 5836,
+ 10339, 8405, 7593, 10523, 40,
+ 10339, 8405, 8153, 7390,
+ 10339, 8405, 8153, 11424,
+ 10339, 8405, 8432,
+ 10339, 8405, 8473, 6875, 7908,
+ 10339, 8405, 8473, 8153, 6379, 7908,
+ 10339, 8405, 8473, 8153, 6875, 7908,
+ 10339, 8405, 8631, 601, 6434,
+ 10339, 8405, 8631, 4117, 6434,
+ 10339, 8405, 8631, 6610,
+ 10339, 8405, 8631, 10267, 12017, 4926,
+ 10339, 8405, 8631, 12017, 4926,
+ 10339, 8405, 8645, 4530,
+ 10339, 8405, 8755, 721, 1809, 5964,
+ 10339, 8405, 8755, 721, 4423, 5964,
+ 10339, 8405, 8869, 6616,
+ 10339, 8405, 9063, 0,
+ 10339, 8405, 9063, 2,
+ 10339, 8405, 9063, 6,
+ 10339, 8405, 9063, 8,
+ 10339, 8405, 9063, 12,
+ 10339, 8405, 9063, 14,
+ 10339, 8405, 9063, 16,
+ 10339, 8405, 9063, 18,
+ 10339, 8405, 9063, 20,
+ 10339, 8405, 9063, 22,
+ 10339, 8405, 9063, 24,
+ 10339, 8405, 9063, 26,
+ 10339, 8405, 9063, 28,
+ 10339, 8405, 9063, 30,
+ 10339, 8405, 9063, 34,
+ 10339, 8405, 9063, 38,
+ 10339, 8405, 9063, 40,
+ 10339, 8405, 9063, 42,
+ 10339, 8405, 9063, 44,
+ 10339, 8405, 9063, 66,
+ 10339, 8405, 9063, 450,
+ 10339, 8405, 9063, 7981, 2,
+ 10339, 8405, 9063, 10489, 8,
+ 10339, 8405, 9063, 10489, 26,
+ 10339, 8405, 9079, 4849, 4389, 5550,
+ 10339, 8405, 9079, 7443, 4389, 5550,
+ 10339, 8405, 9089, 5965, 3071, 506,
+ 10339, 8405, 9089, 5965, 3071, 520,
+ 10339, 8405, 9089, 5965, 3071, 5432,
+ 10339, 8405, 9089, 5965, 3071, 7514,
+ 10339, 8405, 9089, 5965, 6179, 506,
+ 10339, 8405, 9089, 5965, 6179, 520,
+ 10339, 8405, 9089, 5965, 6179, 5432,
+ 10339, 8405, 9089, 5965, 6179, 7514,
+ 10339, 8405, 9313, 5836,
+ 10339, 8405, 9828,
+ 10339, 8405, 9977, 176,
+ 10339, 8405, 10221, 1992,
+ 10339, 8405, 10489, 6616,
+ 10339, 8405, 10489, 9313, 5836,
+ 10339, 8405, 10677, 4876,
+ 10339, 8405, 10985, 5965, 760,
+ 10339, 8405, 10985, 8151, 5965, 760,
+ 10339, 8405, 10985, 8151, 11095, 5965, 760,
+ 10339, 8405, 10985, 11095, 5965, 760,
+ 10339, 8405, 11424,
+ 10339, 8405, 11449, 7908,
+ 10339, 8405, 11625, 5965, 760,
+ 10339, 8405, 11625, 8151, 5965, 760,
+ 10339, 8405, 11625, 8151, 11095, 5965, 760,
+ 10339, 8405, 11625, 11095, 5965, 760,
+ 10339, 8405, 11859, 6610,
+ 10339, 8405, 12380,
+ 10343, 1177, 3070,
+ 10343, 1177, 6178,
+ 10343, 1177, 6716,
+ 10346,
+ 10350,
+ 10351, 7768,
+ 10351, 13060,
+ 10353, 6689, 8696,
+ 10357, 9095, 6689, 6260,
+ 10357, 9095, 8525, 8162,
+ 10357, 9095, 8525, 8874,
+ 10357, 9095, 8525, 8876,
+ 10357, 9095, 8525, 9286,
+ 10357, 9095, 8525, 9700,
+ 10357, 9095, 8525, 10150,
+ 10357, 9095, 8525, 10200,
+ 10357, 9095, 8525, 10360,
+ 10357, 9095, 8525, 10622,
+ 10357, 9095, 8525, 11232,
+ 10363, 7608,
+ 10379, 428,
+ 10383, 6622,
+ 10385, 6505, 5830,
+ 10385, 6879, 6622,
+ 10385, 7089, 6622,
+ 10385, 7821, 5830,
+ 10388,
+ 10411, 568,
+ 10411, 6121, 7709, 10374,
+ 10411, 6121, 11649, 8758,
+ 10429, 4927, 5668,
+ 10429, 4927, 8153, 5668,
+ 10429, 8153, 4399, 4926,
+ 10429, 8405, 0,
+ 10429, 8405, 8,
+ 10429, 8405, 16,
+ 10429, 8405, 28,
+ 10429, 8405, 40,
+ 10429, 8405, 100,
+ 10429, 8405, 116,
+ 10429, 8405, 138,
+ 10429, 8405, 162,
+ 10429, 8405, 196,
+ 10429, 8405, 216,
+ 10429, 8405, 236,
+ 10429, 8405, 292,
+ 10429, 8405, 306,
+ 10429, 8405, 332,
+ 10429, 8405, 364,
+ 10429, 8405, 392,
+ 10429, 8405, 462,
+ 10429, 8405, 496,
+ 10429, 8405, 510,
+ 10429, 8405, 524,
+ 10429, 8405, 556,
+ 10429, 8405, 622,
+ 10429, 8405, 638,
+ 10429, 8405, 652,
+ 10429, 8405, 670,
+ 10429, 8405, 884,
+ 10429, 8405, 974,
+ 10429, 8405, 1080,
+ 10429, 8405, 1250,
+ 10429, 8405, 1612,
+ 10429, 8405, 2030,
+ 10429, 8405, 2076,
+ 10429, 8405, 2126,
+ 10429, 8405, 2212,
+ 10429, 8405, 2516,
+ 10429, 8405, 2678,
+ 10429, 8405, 2732,
+ 10429, 8405, 2746,
+ 10429, 8405, 3146,
+ 10429, 8405, 5978,
+ 10429, 8405, 5994,
+ 10429, 8405, 7593, 0,
+ 10429, 8405, 8921, 236,
+ 10429, 8405, 10707, 652,
+ 10429, 8405, 10721, 196,
+ 10429, 8405, 11395, 2516,
+ 10429, 8405, 11900,
+ 10429, 8717, 4399, 4926,
+ 10429, 11257, 8405, 510,
+ 10429, 11257, 8405, 622,
+ 10429, 11257, 8405, 652,
+ 10429, 11843, 8405, 510,
+ 10431, 4093, 5759, 457, 3696,
+ 10431, 4093, 5759, 778,
+ 10431, 4093, 5759, 824,
+ 10431, 4093, 5759, 862,
+ 10431, 4093, 5759, 1780,
+ 10431, 4093, 5759, 2386,
+ 10431, 4093, 5759, 2498,
+ 10431, 4093, 5759, 3948,
+ 10431, 4093, 5759, 3954,
+ 10431, 4093, 5759, 4114,
+ 10431, 4093, 5759, 4418,
+ 10431, 4093, 5759, 4536,
+ 10431, 4093, 5759, 4874,
+ 10431, 4093, 5759, 5700,
+ 10431, 4093, 5759, 6090,
+ 10431, 4093, 5759, 6107, 3706,
+ 10431, 4093, 5759, 6434,
+ 10431, 4093, 5759, 6533, 1760,
+ 10431, 4093, 5759, 6574,
+ 10431, 4093, 5759, 6712,
+ 10431, 4093, 5759, 6794,
+ 10431, 4093, 5759, 7379, 5968,
+ 10431, 4093, 5759, 7586,
+ 10431, 4093, 5759, 7593, 742,
+ 10431, 4093, 5759, 7702,
+ 10431, 4093, 5759, 7752,
+ 10431, 4093, 5759, 7830,
+ 10431, 4093, 5759, 8068,
+ 10431, 4093, 5759, 8126,
+ 10431, 4093, 5759, 8270,
+ 10431, 4093, 5759, 8296,
+ 10431, 4093, 5759, 8599, 4398,
+ 10431, 4093, 5759, 8704,
+ 10431, 4093, 5759, 9036,
+ 10431, 4093, 5759, 9064,
+ 10431, 4093, 5759, 9462,
+ 10431, 4093, 5759, 9568,
+ 10431, 4093, 5759, 9638,
+ 10431, 4093, 5759, 10216,
+ 10431, 4093, 5759, 10316,
+ 10431, 4093, 5759, 10546,
+ 10431, 4093, 5759, 10611, 4398,
+ 10431, 4093, 5759, 10744,
+ 10431, 4093, 5759, 10753, 7378,
+ 10431, 4093, 5759, 10767, 9525, 8758,
+ 10431, 4093, 5759, 11718,
+ 10433, 5830,
+ 10445, 11054,
+ 10452,
+ 10453, 445, 6741, 568,
+ 10453, 445, 11621, 568,
+ 10453, 835, 2091, 11621, 568,
+ 10453, 6377, 2091, 6741, 568,
+ 10453, 6377, 2091, 7919, 6741, 568,
+ 10453, 6377, 7919, 6741, 568,
+ 10453, 6377, 8167, 5758,
+ 10453, 6377, 12345, 2091, 6741, 568,
+ 10453, 6377, 12345, 8167, 5758,
+ 10453, 7767, 10476,
+ 10455, 5392,
+ 10461, 4876,
+ 10465, 7121, 4848,
+ 10465, 7121, 7442,
+ 10465, 7773, 4848,
+ 10465, 7773, 4849, 721, 7121, 4849, 721, 7121, 7442,
+ 10465, 7773, 4849, 721, 7121, 7442,
+ 10465, 7773, 4849, 721, 7773, 7443, 721, 7121, 4848,
+ 10465, 7773, 4849, 721, 7773, 7443, 721, 7121, 7442,
+ 10465, 7773, 7442,
+ 10465, 7773, 7443, 721, 7121, 4848,
+ 10465, 7773, 7443, 721, 7121, 4849, 721, 7121, 7442,
+ 10469, 4926,
+ 10469, 12017, 4926,
+ 10470,
+ 10475, 7337, 8774,
+ 10486,
+ 10489, 2091, 5758,
+ 10489, 6408,
+ 10489, 6409, 6121, 10666,
+ 10489, 6731, 2510,
+ 10489, 7390,
+ 10489, 7708,
+ 10489, 7709, 8166,
+ 10489, 8153, 7390,
+ 10489, 8153, 7391, 11195, 4926,
+ 10489, 8153, 8759, 2091, 5758,
+ 10489, 8231, 12108,
+ 10489, 8849, 7390,
+ 10489, 9595, 5758,
+ 10489, 9641, 8225, 6907, 8022,
+ 10489, 10469, 4926,
+ 10489, 11224,
+ 10489, 11767, 9063, 22,
+ 10504,
+ 10513, 7821, 5830,
+ 10513, 7821, 7089, 6622,
+ 10513, 7821, 8056,
+ 10514,
+ 10529, 9898,
+ 10553, 11621, 568,
+ 10574,
+ 10575, 445, 6741, 568,
+ 10575, 445, 11621, 568,
+ 10575, 835, 2091, 11621, 568,
+ 10575, 6377, 2091, 6741, 568,
+ 10575, 6377, 2091, 7919, 6741, 568,
+ 10575, 6377, 7919, 6741, 568,
+ 10575, 6377, 8167, 5758,
+ 10575, 6377, 12345, 2091, 6741, 568,
+ 10575, 6377, 12345, 8167, 5758,
+ 10575, 7767, 10476,
+ 10579, 428,
+ 10579, 429, 445, 6741, 568,
+ 10579, 429, 445, 6741, 569, 6121, 1045, 6376,
+ 10579, 429, 6121, 2091, 6741, 568,
+ 10579, 429, 6377, 2091, 6741, 568,
+ 10579, 429, 6377, 7709, 10374,
+ 10579, 429, 6377, 7919, 6741, 568,
+ 10579, 429, 6377, 8167, 5758,
+ 10579, 6121, 1044,
+ 10579, 6121, 5445, 5759, 6490,
+ 10579, 6121, 13061, 5759, 6490,
+ 10579, 6377, 8762,
+ 10579, 6377, 10578,
+ 10579, 6377, 11097, 6434,
+ 10579, 7991, 721, 8329, 115, 3993, 6121, 8762,
+ 10579, 7991, 8762,
+ 10579, 11183, 9718,
+ 10604,
+ 10607, 7803, 5759, 16,
+ 10607, 7803, 5759, 40,
+ 10607, 8405, 0,
+ 10607, 8405, 16,
+ 10607, 8405, 40,
+ 10607, 8405, 100,
+ 10607, 8405, 138,
+ 10607, 8405, 216,
+ 10607, 8405, 306,
+ 10607, 8405, 332,
+ 10607, 8405, 364,
+ 10607, 8405, 392,
+ 10607, 8405, 462,
+ 10607, 8405, 524,
+ 10607, 8405, 556,
+ 10607, 8405, 622,
+ 10607, 8405, 652,
+ 10607, 8405, 2030,
+ 10629, 8405, 652,
+ 10629, 8405, 656,
+ 10629, 8405, 664,
+ 10629, 8405, 3006,
+ 10629, 8405, 3008,
+ 10629, 8405, 3010,
+ 10629, 8405, 3014,
+ 10629, 8405, 3016,
+ 10629, 8405, 3018,
+ 10629, 8405, 3020,
+ 10629, 8405, 3022,
+ 10629, 8405, 3024,
+ 10629, 8405, 3026,
+ 10629, 8405, 3028,
+ 10629, 8405, 3030,
+ 10629, 8405, 3032,
+ 10629, 8405, 3034,
+ 10629, 8405, 3036,
+ 10629, 8405, 3038,
+ 10629, 8405, 3040,
+ 10629, 8405, 3042,
+ 10629, 8405, 3044,
+ 10629, 8405, 3046,
+ 10629, 8405, 3062,
+ 10629, 8405, 3291, 6170,
+ 10629, 8405, 6162,
+ 10629, 8405, 6164,
+ 10629, 8405, 6166,
+ 10629, 8405, 6168,
+ 10629, 8405, 6170,
+ 10629, 8405, 6174,
+ 10629, 8405, 6176,
+ 10629, 8405, 6180,
+ 10629, 8405, 6182,
+ 10629, 8405, 6184,
+ 10629, 8405, 6186,
+ 10629, 8405, 6190,
+ 10629, 8405, 6192,
+ 10629, 8405, 6194,
+ 10629, 8405, 7844,
+ 10629, 8405, 7846,
+ 10629, 8405, 7848,
+ 10629, 8405, 7989, 8973, 3018,
+ 10629, 8405, 7989, 8973, 3020,
+ 10629, 8405, 8863, 3018,
+ 10629, 8405, 8863, 3022,
+ 10629, 8405, 8863, 3032,
+ 10629, 8405, 8863, 6170,
+ 10629, 8405, 8863, 6172,
+ 10629, 8405, 8863, 6176,
+ 10629, 8405, 8863, 6178,
+ 10629, 8405, 8863, 6192,
+ 10629, 8405, 8985, 6192,
+ 10629, 8405, 11849, 3046,
+ 10629, 10339, 8405, 12965, 4926,
+ 10631, 5759, 186,
+ 10643, 6121, 1045, 6376,
+ 10643, 6121, 8689, 91, 8004,
+ 10643, 6121, 10666,
+ 10644,
+ 10661, 6129, 9178,
+ 10661, 8405, 16,
+ 10661, 8405, 40,
+ 10661, 8405, 246,
+ 10661, 8405, 486,
+ 10661, 8405, 568,
+ 10661, 8405, 632,
+ 10661, 8405, 680,
+ 10661, 8405, 710,
+ 10661, 8405, 1578,
+ 10661, 8405, 1612,
+ 10661, 8405, 1892,
+ 10661, 8405, 2110,
+ 10661, 8405, 2574,
+ 10661, 8405, 2674,
+ 10661, 8405, 3080,
+ 10661, 8405, 3252,
+ 10661, 8405, 3774,
+ 10661, 8405, 4066,
+ 10661, 8405, 4538,
+ 10661, 8405, 5494,
+ 10661, 8405, 5624,
+ 10661, 8405, 5698,
+ 10661, 8405, 6262,
+ 10661, 8405, 6674,
+ 10661, 8405, 6822,
+ 10661, 8405, 6850,
+ 10661, 8405, 7080,
+ 10661, 8405, 7422,
+ 10661, 8405, 7482,
+ 10661, 8405, 8814,
+ 10664,
+ 10665, 6121, 5525, 6706,
+ 10670,
+ 10674,
+ 10677, 761, 6121, 11649, 8758,
+ 10677, 761, 7991, 7443, 10642,
+ 10677, 761, 8153, 4849, 11378,
+ 10677, 761, 8849, 7443, 11378,
+ 10677, 4215, 4112,
+ 10677, 4719, 8641, 4926,
+ 10677, 4719, 8641, 4927, 7121, 4388,
+ 10677, 4719, 8641, 4927, 7773, 4388,
+ 10677, 4719, 8641, 6121, 8921, 7605, 4926,
+ 10677, 4719, 8641, 6121, 8921, 7605, 4927, 7773, 4388,
+ 10677, 4876,
+ 10677, 4877, 6121, 8057, 6376,
+ 10677, 4877, 6121, 8057, 6490,
+ 10677, 4877, 6121, 8473, 1044,
+ 10677, 4877, 10982,
+ 10677, 4923, 6121, 8759, 5758,
+ 10677, 7708,
+ 10677, 8963, 4876,
+ 10677, 10154,
+ 10677, 12043, 11067, 4926,
+ 10679, 8744,
+ 10701, 569, 2681, 9746,
+ 10708,
+ 10719, 5238,
+ 10722,
+ 10737, 5758,
+ 10749, 9483, 8775, 1078,
+ 10749, 9483, 8775, 1135, 12010,
+ 10749, 9483, 8775, 3268,
+ 10749, 9483, 8775, 4619, 2020,
+ 10749, 9483, 8775, 4619, 9884,
+ 10749, 9483, 8775, 5048,
+ 10749, 9483, 8775, 5921, 1583, 9000,
+ 10749, 9483, 8775, 5970,
+ 10749, 9483, 8775, 6203, 726,
+ 10749, 9483, 8775, 6203, 4728,
+ 10749, 9483, 8775, 6387, 3274,
+ 10749, 9483, 8775, 6387, 4952,
+ 10749, 9483, 8775, 6387, 5449, 3274,
+ 10749, 9483, 8775, 6387, 5449, 6866,
+ 10749, 9483, 8775, 6387, 6866,
+ 10749, 9483, 8775, 6387, 8470,
+ 10749, 9483, 8775, 6387, 9886,
+ 10749, 9483, 8775, 6387, 11022,
+ 10749, 9483, 8775, 6419, 1135, 2020,
+ 10749, 9483, 8775, 6419, 12010,
+ 10749, 9483, 8775, 6426,
+ 10749, 9483, 8775, 6581, 7892,
+ 10749, 9483, 8775, 6581, 8366,
+ 10749, 9483, 8775, 6581, 8728,
+ 10749, 9483, 8775, 6690,
+ 10749, 9483, 8775, 6691, 9884,
+ 10749, 9483, 8775, 7092,
+ 10749, 9483, 8775, 7329, 2020,
+ 10749, 9483, 8775, 7329, 6690,
+ 10749, 9483, 8775, 7329, 12010,
+ 10749, 9483, 8775, 7398,
+ 10749, 9483, 8775, 7434,
+ 10749, 9483, 8775, 7660,
+ 10749, 9483, 8775, 7678,
+ 10749, 9483, 8775, 7679, 7928,
+ 10749, 9483, 8775, 7688,
+ 10749, 9483, 8775, 7788,
+ 10749, 9483, 8775, 7837, 8364,
+ 10749, 9483, 8775, 8094,
+ 10749, 9483, 8775, 8115, 3269, 1079, 10018,
+ 10749, 9483, 8775, 8115, 10815, 195, 10018,
+ 10749, 9483, 8775, 8115, 11863, 5377, 10018,
+ 10749, 9483, 8775, 8115, 12085, 9775, 10018,
+ 10749, 9483, 8775, 8115, 12372,
+ 10749, 9483, 8775, 8115, 13020,
+ 10749, 9483, 8775, 8171, 12110,
+ 10749, 9483, 8775, 8171, 12904,
+ 10749, 9483, 8775, 8199, 9703, 8053, 7786,
+ 10749, 9483, 8775, 8237, 17, 8949, 13020,
+ 10749, 9483, 8775, 8237, 5055, 6978,
+ 10749, 9483, 8775, 8237, 8506,
+ 10749, 9483, 8775, 8237, 9451, 8053, 10008,
+ 10749, 9483, 8775, 8237, 9451, 8053, 11684,
+ 10749, 9483, 8775, 8237, 9703, 8053, 8776,
+ 10749, 9483, 8775, 8237, 9703, 10007, 144,
+ 10749, 9483, 8775, 8237, 9884,
+ 10749, 9483, 8775, 8237, 9885, 9999, 6980,
+ 10749, 9483, 8775, 8237, 10811, 144,
+ 10749, 9483, 8775, 8237, 10811, 310,
+ 10749, 9483, 8775, 8237, 10811, 405, 726,
+ 10749, 9483, 8775, 8237, 10811, 405, 4728,
+ 10749, 9483, 8775, 8237, 10811, 462,
+ 10749, 9483, 8775, 8237, 10811, 678,
+ 10749, 9483, 8775, 8237, 10811, 5048,
+ 10749, 9483, 8775, 8237, 11609, 10710,
+ 10749, 9483, 8775, 8249, 8114,
+ 10749, 9483, 8775, 8249, 8948,
+ 10749, 9483, 8775, 8265, 2021, 726,
+ 10749, 9483, 8775, 8265, 2021, 4728,
+ 10749, 9483, 8775, 8265, 9884,
+ 10749, 9483, 8775, 8265, 12989, 6680,
+ 10749, 9483, 8775, 8265, 12989, 9888,
+ 10749, 9483, 8775, 8321, 8801, 11038,
+ 10749, 9483, 8775, 8341, 10648,
+ 10749, 9483, 8775, 8364,
+ 10749, 9483, 8775, 8365, 726,
+ 10749, 9483, 8775, 8365, 4728,
+ 10749, 9483, 8775, 8397, 1079, 9090,
+ 10749, 9483, 8775, 8397, 4159, 9092,
+ 10749, 9483, 8775, 8397, 7735, 9090,
+ 10749, 9483, 8775, 8397, 9359, 9092,
+ 10749, 9483, 8775, 8397, 10615, 9090,
+ 10749, 9483, 8775, 8475, 4618,
+ 10749, 9483, 8775, 8537, 2020,
+ 10749, 9483, 8775, 8537, 9884,
+ 10749, 9483, 8775, 8538,
+ 10749, 9483, 8775, 8557, 9884,
+ 10749, 9483, 8775, 8587, 2020,
+ 10749, 9483, 8775, 8587, 9884,
+ 10749, 9483, 8775, 8614,
+ 10749, 9483, 8775, 8686,
+ 10749, 9483, 8775, 8687, 2020,
+ 10749, 9483, 8775, 8748,
+ 10749, 9483, 8775, 8798,
+ 10749, 9483, 8775, 8850,
+ 10749, 9483, 8775, 8909, 2020,
+ 10749, 9483, 8775, 8909, 6690,
+ 10749, 9483, 8775, 8909, 12010,
+ 10749, 9483, 8775, 8949, 3269, 1079, 10018,
+ 10749, 9483, 8775, 8949, 10815, 195, 10018,
+ 10749, 9483, 8775, 8949, 11863, 5377, 10018,
+ 10749, 9483, 8775, 8949, 12085, 9775, 10018,
+ 10749, 9483, 8775, 8949, 12372,
+ 10749, 9483, 8775, 8954,
+ 10749, 9483, 8775, 9009, 144,
+ 10749, 9483, 8775, 9009, 216,
+ 10749, 9483, 8775, 9009, 310,
+ 10749, 9483, 8775, 9009, 404,
+ 10749, 9483, 8775, 9009, 462,
+ 10749, 9483, 8775, 9009, 678,
+ 10749, 9483, 8775, 9009, 2882,
+ 10749, 9483, 8775, 9080,
+ 10749, 9483, 8775, 9160,
+ 10749, 9483, 8775, 9260,
+ 10749, 9483, 8775, 9267, 1583, 8237, 2882,
+ 10749, 9483, 8775, 9350,
+ 10749, 9483, 8775, 9399, 2021, 726,
+ 10749, 9483, 8775, 9399, 2021, 4728,
+ 10749, 9483, 8775, 9399, 2021, 4954,
+ 10749, 9483, 8775, 9399, 9884,
+ 10749, 9483, 8775, 9412,
+ 10749, 9483, 8775, 9415, 2020,
+ 10749, 9483, 8775, 9415, 3250,
+ 10749, 9483, 8775, 9415, 9884,
+ 10749, 9483, 8775, 9420,
+ 10749, 9483, 8775, 9440,
+ 10749, 9483, 8775, 9584,
+ 10749, 9483, 8775, 9586,
+ 10749, 9483, 8775, 9620,
+ 10749, 9483, 8775, 9740,
+ 10749, 9483, 8775, 9741, 9874,
+ 10749, 9483, 8775, 9755, 2020,
+ 10749, 9483, 8775, 9755, 4957, 9742,
+ 10749, 9483, 8775, 9755, 9884,
+ 10749, 9483, 8775, 9756,
+ 10749, 9483, 8775, 9774,
+ 10749, 9483, 8775, 9790,
+ 10749, 9483, 8775, 9815, 9884,
+ 10749, 9483, 8775, 9848,
+ 10749, 9483, 8775, 9873, 2020,
+ 10749, 9483, 8775, 9873, 9884,
+ 10749, 9483, 8775, 9876,
+ 10749, 9483, 8775, 9936,
+ 10749, 9483, 8775, 9943, 2020,
+ 10749, 9483, 8775, 9943, 9884,
+ 10749, 9483, 8775, 10005, 3269, 7168,
+ 10749, 9483, 8775, 10005, 3269, 8464,
+ 10749, 9483, 8775, 10005, 6690,
+ 10749, 9483, 8775, 10005, 9778,
+ 10749, 9483, 8775, 10010,
+ 10749, 9483, 8775, 10011, 12989, 6680,
+ 10749, 9483, 8775, 10011, 12989, 9889, 726,
+ 10749, 9483, 8775, 10011, 12989, 9889, 4728,
+ 10749, 9483, 8775, 10013, 222,
+ 10749, 9483, 8775, 10164,
+ 10749, 9483, 8775, 10250,
+ 10749, 9483, 8775, 10284,
+ 10749, 9483, 8775, 10288,
+ 10749, 9483, 8775, 10289, 3250,
+ 10749, 9483, 8775, 10290,
+ 10749, 9483, 8775, 10292,
+ 10749, 9483, 8775, 10325, 3249, 8613, 6978,
+ 10749, 9483, 8775, 10325, 3249, 9997, 6978,
+ 10749, 9483, 8775, 10325, 7785, 6978,
+ 10749, 9483, 8775, 10325, 8613, 6978,
+ 10749, 9483, 8775, 10325, 8855, 6978,
+ 10749, 9483, 8775, 10325, 9429, 6978,
+ 10749, 9483, 8775, 10325, 9597, 6978,
+ 10749, 9483, 8775, 10325, 9597, 10617, 6978,
+ 10749, 9483, 8775, 10325, 9997, 6978,
+ 10749, 9483, 8775, 10325, 10617, 6978,
+ 10749, 9483, 8775, 10325, 10617, 9429, 6978,
+ 10749, 9483, 8775, 10325, 11372,
+ 10749, 9483, 8775, 10325, 11743, 6978,
+ 10749, 9483, 8775, 10412,
+ 10749, 9483, 8775, 10418,
+ 10749, 9483, 8775, 10419, 2020,
+ 10749, 9483, 8775, 10500,
+ 10749, 9483, 8775, 10525, 7946,
+ 10749, 9483, 8775, 10525, 7947, 9174,
+ 10749, 9483, 8775, 10525, 7947, 10646,
+ 10749, 9483, 8775, 10525, 7947, 11852,
+ 10749, 9483, 8775, 10525, 9778,
+ 10749, 9483, 8775, 10525, 9779, 9174,
+ 10749, 9483, 8775, 10525, 9779, 10646,
+ 10749, 9483, 8775, 10525, 9779, 11852,
+ 10749, 9483, 8775, 10618,
+ 10749, 9483, 8775, 10649, 2020,
+ 10749, 9483, 8775, 10649, 3250,
+ 10749, 9483, 8775, 10649, 9884,
+ 10749, 9483, 8775, 10813, 450,
+ 10749, 9483, 8775, 10974,
+ 10749, 9483, 8775, 10991, 10008,
+ 10749, 9483, 8775, 10991, 11684,
+ 10749, 9483, 8775, 10991, 12360,
+ 10749, 9483, 8775, 11046,
+ 10749, 9483, 8775, 11074,
+ 10749, 9483, 8775, 11078,
+ 10749, 9483, 8775, 11079, 2021, 726,
+ 10749, 9483, 8775, 11079, 2021, 4728,
+ 10749, 9483, 8775, 11079, 2021, 4954,
+ 10749, 9483, 8775, 11079, 9884,
+ 10749, 9483, 8775, 11082,
+ 10749, 9483, 8775, 11149, 2020,
+ 10749, 9483, 8775, 11149, 9884,
+ 10749, 9483, 8775, 11188,
+ 10749, 9483, 8775, 11189, 2020,
+ 10749, 9483, 8775, 11348,
+ 10749, 9483, 8775, 11374,
+ 10749, 9483, 8775, 11402,
+ 10749, 9483, 8775, 11403, 6690,
+ 10749, 9483, 8775, 11416,
+ 10749, 9483, 8775, 11421, 8801, 11038,
+ 10749, 9483, 8775, 11421, 11347, 2020,
+ 10749, 9483, 8775, 11422,
+ 10749, 9483, 8775, 11423, 2020,
+ 10749, 9483, 8775, 11423, 6690,
+ 10749, 9483, 8775, 11602,
+ 10749, 9483, 8775, 11643, 27, 7928,
+ 10749, 9483, 8775, 11643, 27, 9172,
+ 10749, 9483, 8775, 11654,
+ 10749, 9483, 8775, 11656,
+ 10749, 9483, 8775, 12111, 2020,
+ 10749, 9483, 8775, 12111, 9884,
+ 10749, 9483, 8775, 12112,
+ 10749, 9483, 8775, 12113, 2020,
+ 10749, 9483, 8775, 12113, 9884,
+ 10749, 9483, 8775, 12120,
+ 10749, 9483, 8775, 12365, 1126,
+ 10749, 9483, 8775, 12365, 1134,
+ 10749, 9483, 8775, 12400,
+ 10749, 9483, 8775, 12474,
+ 10749, 9483, 8775, 12872,
+ 10749, 9483, 8775, 12904,
+ 10749, 9483, 8775, 13052,
+ 10749, 9483, 8775, 13082,
+ 10749, 9483, 8775, 13084,
+ 10749, 9483, 8775, 13186,
+ 10749, 9483, 8775, 13206,
+ 10749, 9483, 8775, 13208,
+ 10749, 9483, 8775, 13216,
+ 10749, 9483, 8775, 13220,
+ 10749, 9483, 8775, 13222,
+ 10749, 9483, 8775, 13352,
+ 10749, 9483, 8775, 13400,
+ 10749, 9483, 8775, 13404,
+ 10750,
+ 10759, 2690,
+ 10763, 2725, 11791, 6434,
+ 10763, 5385, 8057, 6434,
+ 10763, 8065, 8057, 6434,
+ 10763, 8241, 8057, 6434,
+ 10763, 9115, 10260,
+ 10763, 10260,
+ 10767, 47, 6376,
+ 10767, 47, 6490,
+ 10767, 283, 6490,
+ 10767, 601, 5877, 6490,
+ 10767, 603, 6376,
+ 10767, 605, 6376,
+ 10767, 1045, 6376,
+ 10767, 1045, 6377, 7442,
+ 10767, 1045, 6490,
+ 10767, 1809, 4876,
+ 10767, 2091, 7709, 6376,
+ 10767, 4117, 5877, 6490,
+ 10767, 4215, 4113, 6376,
+ 10767, 4531, 6376,
+ 10767, 4536,
+ 10767, 4849, 4389, 5551, 6376,
+ 10767, 4849, 4389, 5551, 6490,
+ 10767, 4849, 5877, 6490,
+ 10767, 4849, 6409, 6376,
+ 10767, 4849, 6409, 6490,
+ 10767, 4849, 6435, 6376,
+ 10767, 4849, 6435, 6490,
+ 10767, 4849, 7443, 6435, 6376,
+ 10767, 4849, 7443, 6435, 6490,
+ 10767, 4849, 9327, 6376,
+ 10767, 4849, 10717, 6376,
+ 10767, 4849, 10717, 6490,
+ 10767, 4895, 8153, 9719, 9548,
+ 10767, 4895, 8759, 9548,
+ 10767, 4895, 9719, 9548,
+ 10767, 4895, 10677, 4877, 9548,
+ 10767, 5445, 5759, 6490,
+ 10767, 5551, 6376,
+ 10767, 5551, 6490,
+ 10767, 5551, 9548,
+ 10767, 6115, 8015, 6376,
+ 10767, 6379, 5965, 4926,
+ 10767, 6379, 7908,
+ 10767, 6379, 7909, 6490,
+ 10767, 6516,
+ 10767, 6517, 6490,
+ 10767, 6546,
+ 10767, 6547, 6490,
+ 10767, 6617, 6376,
+ 10767, 6617, 6377, 7442,
+ 10767, 6617, 6490,
+ 10767, 6875, 5965, 4926,
+ 10767, 6875, 7908,
+ 10767, 6875, 7909, 6490,
+ 10767, 6879, 9412,
+ 10767, 6879, 9483, 9796,
+ 10767, 6879, 9483, 11164,
+ 10767, 6879, 9483, 11358,
+ 10767, 6879, 10809, 7724,
+ 10767, 6879, 12120,
+ 10767, 6879, 13036,
+ 10767, 7089, 7593, 8405, 0,
+ 10767, 7089, 7593, 8405, 4,
+ 10767, 7089, 7593, 8405, 5, 9072,
+ 10767, 7089, 7593, 8405, 6,
+ 10767, 7089, 7593, 8405, 8,
+ 10767, 7089, 7593, 8405, 12,
+ 10767, 7089, 7593, 8405, 14,
+ 10767, 7089, 7593, 8405, 16,
+ 10767, 7089, 7593, 8405, 20,
+ 10767, 7089, 7593, 8405, 22,
+ 10767, 7089, 7593, 8405, 24,
+ 10767, 7089, 7593, 8405, 26,
+ 10767, 7089, 7593, 8405, 28,
+ 10767, 7089, 7593, 8405, 34,
+ 10767, 7089, 7593, 8405, 35, 6490,
+ 10767, 7089, 7593, 8405, 35, 9642,
+ 10767, 7089, 7593, 8405, 36,
+ 10767, 7089, 7593, 8405, 38,
+ 10767, 7089, 7593, 8405, 40,
+ 10767, 7089, 7593, 8405, 42,
+ 10767, 7089, 7593, 8405, 46,
+ 10767, 7089, 7593, 8405, 50,
+ 10767, 7089, 7593, 8405, 66,
+ 10767, 7089, 7593, 8405, 82,
+ 10767, 7089, 7593, 8405, 94,
+ 10767, 7089, 7593, 8405, 1130,
+ 10767, 7089, 7593, 8405, 4895, 36,
+ 10767, 7089, 7593, 8405, 9365, 6,
+ 10767, 7089, 7593, 8405, 10997, 5385, 1, 6376,
+ 10767, 7089, 8405, 7593, 9063, 12,
+ 10767, 7089, 8405, 7593, 9063, 22,
+ 10767, 7089, 8405, 7593, 9063, 24,
+ 10767, 7089, 8405, 7593, 9063, 26,
+ 10767, 7089, 8405, 7593, 9063, 34,
+ 10767, 7173, 5759, 6490,
+ 10767, 7443, 4389, 5551, 6376,
+ 10767, 7443, 4389, 5551, 6490,
+ 10767, 7443, 5877, 6490,
+ 10767, 7443, 6435, 6376,
+ 10767, 7443, 6435, 6490,
+ 10767, 7443, 9327, 6376,
+ 10767, 7443, 10717, 721, 601, 10717, 6490,
+ 10767, 7443, 10717, 721, 4117, 10717, 6490,
+ 10767, 7443, 10717, 6376,
+ 10767, 7443, 10717, 6490,
+ 10767, 7551, 8759, 9548,
+ 10767, 7551, 9719, 9548,
+ 10767, 7551, 10677, 4877, 9548,
+ 10767, 7601, 6490,
+ 10767, 7695, 4113, 6376,
+ 10767, 7708,
+ 10767, 7709, 6490,
+ 10767, 7709, 9548,
+ 10767, 7919, 6741, 569, 6376,
+ 10767, 8015, 6376,
+ 10767, 8015, 6490,
+ 10767, 8151, 6379, 7908,
+ 10767, 8151, 6875, 7908,
+ 10767, 8153, 1809, 4876,
+ 10767, 8153, 5551, 6490,
+ 10767, 8153, 6379, 7908,
+ 10767, 8153, 6516,
+ 10767, 8153, 6517, 6490,
+ 10767, 8153, 6875, 7908,
+ 10767, 8153, 7708,
+ 10767, 8153, 7709, 4849, 4388,
+ 10767, 8153, 7709, 7443, 4388,
+ 10767, 8153, 8432,
+ 10767, 8153, 8433, 6490,
+ 10767, 8153, 10267, 6516,
+ 10767, 8153, 10388,
+ 10767, 8153, 10677, 4877, 6376,
+ 10767, 8153, 10677, 4877, 6490,
+ 10767, 8153, 10677, 8759, 9548,
+ 10767, 8153, 11449, 6376,
+ 10767, 8153, 11765, 6435, 6490,
+ 10767, 8167, 5759, 6490,
+ 10767, 8432,
+ 10767, 8433, 4849, 4388,
+ 10767, 8433, 6490,
+ 10767, 8433, 7443, 4388,
+ 10767, 8534,
+ 10767, 8535, 6376,
+ 10767, 8745, 6490,
+ 10767, 8849, 10668,
+ 10767, 8869, 6617, 6376,
+ 10767, 8963, 6376,
+ 10767, 8963, 6490,
+ 10767, 8999, 8774,
+ 10767, 9072,
+ 10767, 9284,
+ 10767, 9633, 9719, 9548,
+ 10767, 9663, 6490,
+ 10767, 9811, 6435, 6490,
+ 10767, 9899, 6376,
+ 10767, 9899, 6490,
+ 10767, 9977, 2671, 10335, 5758,
+ 10767, 9977, 6655, 10438,
+ 10767, 9977, 7399, 10438,
+ 10767, 9977, 7716,
+ 10767, 9977, 7804,
+ 10767, 9977, 8342,
+ 10767, 9977, 8405, 0,
+ 10767, 9977, 8405, 28,
+ 10767, 9977, 8405, 102,
+ 10767, 9977, 8405, 142,
+ 10767, 9977, 8405, 172,
+ 10767, 9977, 8405, 174,
+ 10767, 9977, 8405, 176,
+ 10767, 9977, 8405, 182,
+ 10767, 9977, 8405, 184,
+ 10767, 9977, 8405, 236,
+ 10767, 9977, 8405, 258,
+ 10767, 9977, 8405, 306,
+ 10767, 9977, 8405, 468,
+ 10767, 9977, 8405, 560,
+ 10767, 9977, 8405, 612,
+ 10767, 9977, 8405, 664,
+ 10767, 9977, 8405, 672,
+ 10767, 9977, 8405, 807, 3096,
+ 10767, 9977, 8405, 886,
+ 10767, 9977, 8405, 1262,
+ 10767, 9977, 8405, 2516,
+ 10767, 9977, 8405, 2734,
+ 10767, 9977, 8405, 3038,
+ 10767, 9977, 8405, 3148,
+ 10767, 9977, 8405, 4198,
+ 10767, 9977, 8405, 6696,
+ 10767, 9977, 8405, 6748,
+ 10767, 9977, 8405, 7522,
+ 10767, 9977, 8405, 8425, 3096,
+ 10767, 9977, 8405, 10269, 0,
+ 10767, 9977, 8405, 10269, 807, 3096,
+ 10767, 9977, 8405, 11127, 592,
+ 10767, 9977, 9345, 10335, 5758,
+ 10767, 9977, 9345, 11363, 5758,
+ 10767, 9977, 9578,
+ 10767, 9977, 10335, 5758,
+ 10767, 9977, 10442,
+ 10767, 9977, 10625, 10335, 5758,
+ 10767, 9977, 13062,
+ 10767, 10223, 8330,
+ 10767, 10267, 6516,
+ 10767, 10267, 6517, 6490,
+ 10767, 10267, 8015, 6490,
+ 10767, 10267, 8153, 3273, 6490,
+ 10767, 10301, 4849, 4388,
+ 10767, 10301, 7443, 4388,
+ 10767, 10388,
+ 10767, 10489, 6617, 6376,
+ 10767, 10677, 4877, 6376,
+ 10767, 10677, 4877, 6490,
+ 10767, 10677, 7708,
+ 10767, 10763, 5551, 9548,
+ 10767, 10763, 6435, 6376,
+ 10767, 10804,
+ 10767, 10805, 6490,
+ 10767, 10969, 8056,
+ 10767, 10969, 8057, 10728,
+ 10767, 10969, 8354,
+ 10767, 10969, 8676,
+ 10767, 10969, 8744,
+ 10767, 10969, 8899, 10441, 10642,
+ 10767, 10969, 9158,
+ 10767, 11097, 6435, 9548,
+ 10767, 11097, 9327, 6121, 3713, 10958,
+ 10767, 11215, 4531, 6490,
+ 10767, 11449, 7908,
+ 10767, 11449, 7909, 6490,
+ 10767, 11459, 8432,
+ 10767, 11647, 6376,
+ 10767, 11765, 9327, 6121, 3713, 10958,
+ 10767, 11845, 4926,
+ 10767, 11900,
+ 10767, 12107, 4531, 6490,
+ 10767, 12394,
+ 10767, 12416,
+ 10767, 12470,
+ 10767, 12498,
+ 10767, 12500,
+ 10767, 12502,
+ 10767, 12901, 5551, 9548,
+ 10767, 12901, 6435, 6376,
+ 10767, 13356,
+ 10767, 13360,
+ 10767, 13365, 8921, 7605, 4926,
+ 10767, 13365, 12341, 7605, 4926,
+ 10771, 6121, 1045, 6376,
+ 10783, 5758,
+ 10789, 5759, 0,
+ 10789, 5759, 1, 7711, 0,
+ 10789, 5759, 1, 7711, 236,
+ 10789, 5759, 1, 7711, 750,
+ 10789, 5759, 1, 7711, 1482,
+ 10789, 5759, 1, 7711, 2486,
+ 10789, 5759, 1, 7711, 4241, 5898,
+ 10789, 5759, 1, 7711, 5030,
+ 10789, 5759, 1, 7711, 7077, 4358,
+ 10789, 5759, 8,
+ 10789, 5759, 9, 5387, 9, 2111, 5387, 2110,
+ 10789, 5759, 9, 7711, 2194,
+ 10789, 5759, 16,
+ 10789, 5759, 17, 0,
+ 10789, 5759, 40,
+ 10789, 5759, 41, 41, 40,
+ 10789, 5759, 41, 1304,
+ 10789, 5759, 41, 5387, 41, 41, 10489, 5387, 41, 10488,
+ 10789, 5759, 41, 5387, 41, 463, 5387, 463, 1221, 5387, 1220,
+ 10789, 5759, 41, 5387, 41, 2593, 5387, 2592,
+ 10789, 5759, 54,
+ 10789, 5759, 60,
+ 10789, 5759, 61, 4358,
+ 10789, 5759, 61, 7711, 41, 5445, 41, 5445, 40,
+ 10789, 5759, 61, 7711, 236,
+ 10789, 5759, 61, 7711, 1212,
+ 10789, 5759, 61, 7711, 1483, 4358,
+ 10789, 5759, 61, 7711, 3280,
+ 10789, 5759, 61, 7711, 4125, 4358,
+ 10789, 5759, 61, 7711, 4241, 5898,
+ 10789, 5759, 61, 7711, 4606,
+ 10789, 5759, 61, 7711, 7074,
+ 10789, 5759, 61, 7711, 7534,
+ 10789, 5759, 64,
+ 10789, 5759, 74,
+ 10789, 5759, 75, 7711, 6746,
+ 10789, 5759, 75, 7711, 7545, 5445, 4338,
+ 10789, 5759, 76,
+ 10789, 5759, 77, 7711, 76,
+ 10789, 5759, 77, 7711, 236,
+ 10789, 5759, 77, 7711, 314,
+ 10789, 5759, 77, 7711, 2518,
+ 10789, 5759, 77, 7711, 2836,
+ 10789, 5759, 77, 7711, 4088,
+ 10789, 5759, 77, 7711, 4338,
+ 10789, 5759, 77, 7711, 4706,
+ 10789, 5759, 80,
+ 10789, 5759, 81, 5387, 80,
+ 10789, 5759, 81, 5445, 5043, 9732,
+ 10789, 5759, 81, 5445, 5043, 10377, 81, 5445, 5042,
+ 10789, 5759, 81, 7695, 7710,
+ 10789, 5759, 100,
+ 10789, 5759, 106,
+ 10789, 5759, 107, 7711, 0,
+ 10789, 5759, 107, 7711, 1220,
+ 10789, 5759, 107, 7711, 1483, 4358,
+ 10789, 5759, 112,
+ 10789, 5759, 113, 5387, 113, 60,
+ 10789, 5759, 113, 5387, 113, 596,
+ 10789, 5759, 113, 9967, 112,
+ 10789, 5759, 138,
+ 10789, 5759, 144,
+ 10789, 5759, 152,
+ 10789, 5759, 153, 4358,
+ 10789, 5759, 153, 5387, 152,
+ 10789, 5759, 153, 9684,
+ 10789, 5759, 158,
+ 10789, 5759, 159, 7711, 1, 5445, 237, 5445, 138,
+ 10789, 5759, 159, 7711, 40,
+ 10789, 5759, 159, 7711, 374,
+ 10789, 5759, 159, 7711, 1220,
+ 10789, 5759, 159, 7711, 2488,
+ 10789, 5759, 159, 7711, 2518,
+ 10789, 5759, 172,
+ 10789, 5759, 176,
+ 10789, 5759, 177, 7711, 368,
+ 10789, 5759, 177, 7711, 4240,
+ 10789, 5759, 177, 7711, 4241, 5898,
+ 10789, 5759, 177, 9732,
+ 10789, 5759, 177, 9967, 176,
+ 10789, 5759, 177, 10377, 176,
+ 10789, 5759, 216,
+ 10789, 5759, 217, 4358,
+ 10789, 5759, 224,
+ 10789, 5759, 225, 7711, 8,
+ 10789, 5759, 225, 7711, 40,
+ 10789, 5759, 225, 9967, 224,
+ 10789, 5759, 230,
+ 10789, 5759, 231, 9967, 230,
+ 10789, 5759, 236,
+ 10789, 5759, 237, 4358,
+ 10789, 5759, 237, 5898,
+ 10789, 5759, 242,
+ 10789, 5759, 243, 7711, 40,
+ 10789, 5759, 243, 7711, 736,
+ 10789, 5759, 243, 7711, 750,
+ 10789, 5759, 243, 7711, 1206,
+ 10789, 5759, 243, 7711, 1632,
+ 10789, 5759, 243, 7711, 2110,
+ 10789, 5759, 243, 7711, 2518,
+ 10789, 5759, 243, 7711, 3280,
+ 10789, 5759, 243, 7711, 4094,
+ 10789, 5759, 250,
+ 10789, 5759, 256,
+ 10789, 5759, 262,
+ 10789, 5759, 270,
+ 10789, 5759, 271, 7711, 4241, 5898,
+ 10789, 5759, 272,
+ 10789, 5759, 273, 7711, 5880,
+ 10789, 5759, 273, 9732,
+ 10789, 5759, 273, 9967, 272,
+ 10789, 5759, 273, 10377, 272,
+ 10789, 5759, 274,
+ 10789, 5759, 280,
+ 10789, 5759, 306,
+ 10789, 5759, 307, 7711, 0,
+ 10789, 5759, 307, 7711, 40,
+ 10789, 5759, 307, 7711, 64,
+ 10789, 5759, 307, 7711, 65, 5445, 1682,
+ 10789, 5759, 307, 7711, 106,
+ 10789, 5759, 307, 7711, 216,
+ 10789, 5759, 307, 7711, 224,
+ 10789, 5759, 307, 7711, 230,
+ 10789, 5759, 307, 7711, 272,
+ 10789, 5759, 307, 7711, 314,
+ 10789, 5759, 307, 7711, 340,
+ 10789, 5759, 307, 7711, 354,
+ 10789, 5759, 307, 7711, 368,
+ 10789, 5759, 307, 7711, 369, 5445, 152,
+ 10789, 5759, 307, 7711, 369, 5445, 224,
+ 10789, 5759, 307, 7711, 369, 5445, 560,
+ 10789, 5759, 307, 7711, 374,
+ 10789, 5759, 307, 7711, 375, 5445, 7284,
+ 10789, 5759, 307, 7711, 396,
+ 10789, 5759, 307, 7711, 476,
+ 10789, 5759, 307, 7711, 520,
+ 10789, 5759, 307, 7711, 524,
+ 10789, 5759, 307, 7711, 580,
+ 10789, 5759, 307, 7711, 588,
+ 10789, 5759, 307, 7711, 676,
+ 10789, 5759, 307, 7711, 750,
+ 10789, 5759, 307, 7711, 760,
+ 10789, 5759, 307, 7711, 1212,
+ 10789, 5759, 307, 7711, 1220,
+ 10789, 5759, 307, 7711, 1221, 5445, 5663, 5445, 0,
+ 10789, 5759, 307, 7711, 1482,
+ 10789, 5759, 307, 7711, 1584,
+ 10789, 5759, 307, 7711, 1624,
+ 10789, 5759, 307, 7711, 2110,
+ 10789, 5759, 307, 7711, 2494,
+ 10789, 5759, 307, 7711, 2516,
+ 10789, 5759, 307, 7711, 2518,
+ 10789, 5759, 307, 7711, 2524,
+ 10789, 5759, 307, 7711, 2530,
+ 10789, 5759, 307, 7711, 2654,
+ 10789, 5759, 307, 7711, 2836,
+ 10789, 5759, 307, 7711, 3280,
+ 10789, 5759, 307, 7711, 4166,
+ 10789, 5759, 307, 7711, 4241, 5898,
+ 10789, 5759, 307, 7711, 4334,
+ 10789, 5759, 307, 7711, 4339, 5445, 2494,
+ 10789, 5759, 307, 7711, 4339, 9967, 4338,
+ 10789, 5759, 307, 7711, 4366,
+ 10789, 5759, 307, 7711, 5692,
+ 10789, 5759, 307, 7711, 6049, 7711, 462,
+ 10789, 5759, 307, 7711, 6464,
+ 10789, 5759, 307, 7711, 6746,
+ 10789, 5759, 307, 7711, 7648,
+ 10789, 5759, 314,
+ 10789, 5759, 315, 7711, 40,
+ 10789, 5759, 315, 7711, 588,
+ 10789, 5759, 315, 7711, 750,
+ 10789, 5759, 326,
+ 10789, 5759, 327, 5387, 243, 7711, 3281, 327, 5387, 243, 7711, 3280,
+ 10789, 5759, 332,
+ 10789, 5759, 340,
+ 10789, 5759, 354,
+ 10789, 5759, 355, 7711, 750,
+ 10789, 5759, 364,
+ 10789, 5759, 365, 4358,
+ 10789, 5759, 365, 7711, 5880,
+ 10789, 5759, 368,
+ 10789, 5759, 374,
+ 10789, 5759, 384,
+ 10789, 5759, 385, 5387, 384,
+ 10789, 5759, 392,
+ 10789, 5759, 396,
+ 10789, 5759, 397, 7711, 0,
+ 10789, 5759, 397, 7711, 588,
+ 10789, 5759, 397, 9684,
+ 10789, 5759, 404,
+ 10789, 5759, 405, 7711, 8,
+ 10789, 5759, 416,
+ 10789, 5759, 462,
+ 10789, 5759, 476,
+ 10789, 5759, 477, 7711, 0,
+ 10789, 5759, 477, 7711, 8,
+ 10789, 5759, 477, 7711, 16,
+ 10789, 5759, 477, 7711, 40,
+ 10789, 5759, 477, 7711, 60,
+ 10789, 5759, 477, 7711, 106,
+ 10789, 5759, 477, 7711, 112,
+ 10789, 5759, 477, 7711, 256,
+ 10789, 5759, 477, 7711, 580,
+ 10789, 5759, 477, 9967, 476,
+ 10789, 5759, 510,
+ 10789, 5759, 514,
+ 10789, 5759, 520,
+ 10789, 5759, 524,
+ 10789, 5759, 532,
+ 10789, 5759, 533, 4358,
+ 10789, 5759, 546,
+ 10789, 5759, 547, 5387, 546,
+ 10789, 5759, 556,
+ 10789, 5759, 557, 4358,
+ 10789, 5759, 557, 7711, 242,
+ 10789, 5759, 557, 7711, 374,
+ 10789, 5759, 557, 9898,
+ 10789, 5759, 560,
+ 10789, 5759, 561, 4358,
+ 10789, 5759, 564,
+ 10789, 5759, 565, 5898,
+ 10789, 5759, 576,
+ 10789, 5759, 580,
+ 10789, 5759, 584,
+ 10789, 5759, 588,
+ 10789, 5759, 589, 4358,
+ 10789, 5759, 589, 7711, 41, 5445, 41, 5445, 40,
+ 10789, 5759, 589, 7711, 41, 5445, 41, 5445, 41, 4358,
+ 10789, 5759, 589, 7711, 374,
+ 10789, 5759, 589, 7711, 750,
+ 10789, 5759, 589, 8374,
+ 10789, 5759, 589, 9684,
+ 10789, 5759, 589, 9685, 7711, 750,
+ 10789, 5759, 594,
+ 10789, 5759, 595, 7711, 40,
+ 10789, 5759, 595, 7711, 369, 5445, 138,
+ 10789, 5759, 595, 7711, 5662,
+ 10789, 5759, 595, 7711, 7074,
+ 10789, 5759, 596,
+ 10789, 5759, 597, 4358,
+ 10789, 5759, 602,
+ 10789, 5759, 603, 9684,
+ 10789, 5759, 603, 9967, 602,
+ 10789, 5759, 670,
+ 10789, 5759, 671, 5898,
+ 10789, 5759, 671, 9733, 7711, 1696,
+ 10789, 5759, 676,
+ 10789, 5759, 677, 5387, 676,
+ 10789, 5759, 680,
+ 10789, 5759, 702,
+ 10789, 5759, 703, 7711, 369, 5445, 176,
+ 10789, 5759, 703, 7711, 4241, 5898,
+ 10789, 5759, 703, 7711, 5662,
+ 10789, 5759, 703, 7711, 5880,
+ 10789, 5759, 703, 7711, 6464,
+ 10789, 5759, 736,
+ 10789, 5759, 737, 4703, 5898,
+ 10789, 5759, 737, 5387, 737, 5387, 736,
+ 10789, 5759, 737, 5387, 737, 5387, 737, 9967, 737, 5387, 737, 5387, 736,
+ 10789, 5759, 737, 5387, 737, 6013, 5387, 6013, 6013, 5387, 6013, 2194,
+ 10789, 5759, 737, 6313, 5898,
+ 10789, 5759, 750,
+ 10789, 5759, 754,
+ 10789, 5759, 755, 5387, 754,
+ 10789, 5759, 760,
+ 10789, 5759, 832,
+ 10789, 5759, 958,
+ 10789, 5759, 959, 8361, 7711, 1, 5445, 4928,
+ 10789, 5759, 959, 8361, 7711, 106,
+ 10789, 5759, 959, 8361, 7711, 216,
+ 10789, 5759, 959, 8361, 7711, 217, 5445, 4928,
+ 10789, 5759, 959, 8361, 7711, 224,
+ 10789, 5759, 959, 8361, 7711, 236,
+ 10789, 5759, 959, 8361, 7711, 280,
+ 10789, 5759, 959, 8361, 7711, 281, 5445, 354,
+ 10789, 5759, 959, 8361, 7711, 332,
+ 10789, 5759, 959, 8361, 7711, 354,
+ 10789, 5759, 959, 8361, 7711, 355, 5445, 7138,
+ 10789, 5759, 959, 8361, 7711, 396,
+ 10789, 5759, 959, 8361, 7711, 532,
+ 10789, 5759, 959, 8361, 7711, 581, 5445, 4334,
+ 10789, 5759, 959, 8361, 7711, 1304,
+ 10789, 5759, 959, 8361, 7711, 1584,
+ 10789, 5759, 959, 8361, 7711, 1822,
+ 10789, 5759, 959, 8361, 7711, 2195, 5445, 2194,
+ 10789, 5759, 959, 8361, 7711, 2836,
+ 10789, 5759, 959, 8361, 7711, 3256,
+ 10789, 5759, 959, 8361, 7711, 4334,
+ 10789, 5759, 959, 8361, 7711, 5880,
+ 10789, 5759, 959, 8361, 7711, 6464,
+ 10789, 5759, 962,
+ 10789, 5759, 966,
+ 10789, 5759, 1006,
+ 10789, 5759, 1010,
+ 10789, 5759, 1011, 7711, 2518,
+ 10789, 5759, 1012,
+ 10789, 5759, 1013, 8339, 41, 4359, 4094,
+ 10789, 5759, 1050,
+ 10789, 5759, 1051, 7711, 4166,
+ 10789, 5759, 1052,
+ 10789, 5759, 1054,
+ 10789, 5759, 1060,
+ 10789, 5759, 1202,
+ 10789, 5759, 1203, 5387, 1202,
+ 10789, 5759, 1203, 7711, 1, 5445, 139, 5445, 236,
+ 10789, 5759, 1203, 7711, 1, 5445, 236,
+ 10789, 5759, 1203, 7711, 1, 5445, 1482,
+ 10789, 5759, 1203, 7711, 40,
+ 10789, 5759, 1203, 7711, 80,
+ 10789, 5759, 1203, 7711, 138,
+ 10789, 5759, 1203, 7711, 144,
+ 10789, 5759, 1203, 7711, 172,
+ 10789, 5759, 1203, 7711, 173, 5445, 332,
+ 10789, 5759, 1203, 7711, 176,
+ 10789, 5759, 1203, 7711, 177, 7711, 4241, 5898,
+ 10789, 5759, 1203, 7711, 224,
+ 10789, 5759, 1203, 7711, 237, 5445, 355, 5445, 4166,
+ 10789, 5759, 1203, 7711, 243, 5445, 340,
+ 10789, 5759, 1203, 7711, 332,
+ 10789, 5759, 1203, 7711, 369, 5445, 176,
+ 10789, 5759, 1203, 7711, 374,
+ 10789, 5759, 1203, 7711, 462,
+ 10789, 5759, 1203, 7711, 588,
+ 10789, 5759, 1203, 7711, 589, 5445, 152,
+ 10789, 5759, 1203, 7711, 703, 5899, 5445, 2636,
+ 10789, 5759, 1203, 7711, 736,
+ 10789, 5759, 1203, 7711, 750,
+ 10789, 5759, 1203, 7711, 761, 5445, 510,
+ 10789, 5759, 1203, 7711, 832,
+ 10789, 5759, 1203, 7711, 833, 5445, 510,
+ 10789, 5759, 1203, 7711, 1011, 7711, 2518,
+ 10789, 5759, 1203, 7711, 1050,
+ 10789, 5759, 1203, 7711, 1220,
+ 10789, 5759, 1203, 7711, 1272,
+ 10789, 5759, 1203, 7711, 1273, 5445, 0,
+ 10789, 5759, 1203, 7711, 1344,
+ 10789, 5759, 1203, 7711, 1345, 5445, 332,
+ 10789, 5759, 1203, 7711, 1483, 4358,
+ 10789, 5759, 1203, 7711, 1499, 5445, 251, 5445, 736,
+ 10789, 5759, 1203, 7711, 1584,
+ 10789, 5759, 1203, 7711, 1624,
+ 10789, 5759, 1203, 7711, 1625, 5445, 1736,
+ 10789, 5759, 1203, 7711, 1683, 5445, 80,
+ 10789, 5759, 1203, 7711, 2110,
+ 10789, 5759, 1203, 7711, 2111, 5387, 2110,
+ 10789, 5759, 1203, 7711, 2488,
+ 10789, 5759, 1203, 7711, 2494,
+ 10789, 5759, 1203, 7711, 2518,
+ 10789, 5759, 1203, 7711, 2519, 5445, 2766,
+ 10789, 5759, 1203, 7711, 2584,
+ 10789, 5759, 1203, 7711, 3281, 5445, 1212,
+ 10789, 5759, 1203, 7711, 4241, 5898,
+ 10789, 5759, 1203, 7711, 4335, 5445, 546,
+ 10789, 5759, 1203, 7711, 4544,
+ 10789, 5759, 1203, 7711, 5692,
+ 10789, 5759, 1203, 7711, 5880,
+ 10789, 5759, 1203, 7711, 8338,
+ 10789, 5759, 1206,
+ 10789, 5759, 1207, 5387, 1207, 1221, 5387, 1220,
+ 10789, 5759, 1212,
+ 10789, 5759, 1213, 1207, 5387, 1207, 1221, 5387, 1220,
+ 10789, 5759, 1214,
+ 10789, 5759, 1216,
+ 10789, 5759, 1220,
+ 10789, 5759, 1272,
+ 10789, 5759, 1273, 5387, 1272,
+ 10789, 5759, 1273, 9967, 1272,
+ 10789, 5759, 1302,
+ 10789, 5759, 1303, 4358,
+ 10789, 5759, 1303, 7711, 1584,
+ 10789, 5759, 1303, 7711, 1585, 7711, 1483, 4358,
+ 10789, 5759, 1303, 7711, 2110,
+ 10789, 5759, 1303, 7711, 2489, 5445, 6012,
+ 10789, 5759, 1304,
+ 10789, 5759, 1305, 5387, 1305, 7122,
+ 10789, 5759, 1305, 7711, 1, 5445, 1696,
+ 10789, 5759, 1305, 7711, 1696,
+ 10789, 5759, 1308,
+ 10789, 5759, 1310,
+ 10789, 5759, 1311, 7711, 2518,
+ 10789, 5759, 1316,
+ 10789, 5759, 1344,
+ 10789, 5759, 1482,
+ 10789, 5759, 1483, 514,
+ 10789, 5759, 1483, 1006,
+ 10789, 5759, 1483, 4358,
+ 10789, 5759, 1483, 5387, 1483, 5703, 5387, 5703, 589, 5387, 588,
+ 10789, 5759, 1484,
+ 10789, 5759, 1498,
+ 10789, 5759, 1572,
+ 10789, 5759, 1573, 9967, 1572,
+ 10789, 5759, 1576,
+ 10789, 5759, 1584,
+ 10789, 5759, 1585, 7711, 1483, 4358,
+ 10789, 5759, 1586,
+ 10789, 5759, 1587, 7711, 750,
+ 10789, 5759, 1587, 9967, 1586,
+ 10789, 5759, 1624,
+ 10789, 5759, 1632,
+ 10789, 5759, 1682,
+ 10789, 5759, 1684,
+ 10789, 5759, 1685, 9817, 4212,
+ 10789, 5759, 1686,
+ 10789, 5759, 1688,
+ 10789, 5759, 1689, 4358,
+ 10789, 5759, 1690,
+ 10789, 5759, 1696,
+ 10789, 5759, 1697, 10377, 1696,
+ 10789, 5759, 1736,
+ 10789, 5759, 1737, 7711, 1736,
+ 10789, 5759, 1738,
+ 10789, 5759, 1739, 7711, 1696,
+ 10789, 5759, 1739, 7711, 1697, 5445, 520,
+ 10789, 5759, 1786,
+ 10789, 5759, 1812,
+ 10789, 5759, 1813, 5898,
+ 10789, 5759, 1813, 7711, 76,
+ 10789, 5759, 1813, 7711, 243, 7711, 750,
+ 10789, 5759, 1813, 7711, 272,
+ 10789, 5759, 1813, 7711, 314,
+ 10789, 5759, 1813, 7711, 333, 5445, 736,
+ 10789, 5759, 1813, 7711, 369, 5445, 176,
+ 10789, 5759, 1813, 7711, 396,
+ 10789, 5759, 1813, 7711, 416,
+ 10789, 5759, 1813, 7711, 533, 5445, 736,
+ 10789, 5759, 1813, 7711, 750,
+ 10789, 5759, 1813, 7711, 4166,
+ 10789, 5759, 1813, 7711, 4167, 5898,
+ 10789, 5759, 1813, 7711, 4241, 5898,
+ 10789, 5759, 1813, 7711, 4704,
+ 10789, 5759, 1813, 7711, 4706,
+ 10789, 5759, 1813, 7711, 4707, 5445, 736,
+ 10789, 5759, 1813, 7711, 5761, 5445, 112,
+ 10789, 5759, 1813, 7711, 6012,
+ 10789, 5759, 1813, 7711, 7074,
+ 10789, 5759, 1813, 9684,
+ 10789, 5759, 1813, 9732,
+ 10789, 5759, 1813, 9967, 1812,
+ 10789, 5759, 1813, 10377, 1812,
+ 10789, 5759, 1814,
+ 10789, 5759, 1818,
+ 10789, 5759, 1820,
+ 10789, 5759, 1822,
+ 10789, 5759, 1823, 5387, 1822,
+ 10789, 5759, 1823, 5387, 1823, 1221, 5387, 1220,
+ 10789, 5759, 1852,
+ 10789, 5759, 1856,
+ 10789, 5759, 1864,
+ 10789, 5759, 1896,
+ 10789, 5759, 1922,
+ 10789, 5759, 1950,
+ 10789, 5759, 1951, 4358,
+ 10789, 5759, 1980,
+ 10789, 5759, 1988,
+ 10789, 5759, 1989, 9520,
+ 10789, 5759, 2044,
+ 10789, 5759, 2054,
+ 10789, 5759, 2055, 7711, 1221, 5445, 4241, 5898,
+ 10789, 5759, 2055, 7711, 4241, 5898,
+ 10789, 5759, 2110,
+ 10789, 5759, 2111, 5387, 2110,
+ 10789, 5759, 2111, 5898,
+ 10789, 5759, 2111, 7077, 7711, 1220,
+ 10789, 5759, 2111, 7077, 7711, 2488,
+ 10789, 5759, 2111, 7077, 7711, 2489, 5387, 2111, 7077, 7711, 2488,
+ 10789, 5759, 2111, 7077, 7711, 2836,
+ 10789, 5759, 2111, 7077, 7711, 4928,
+ 10789, 5759, 2111, 9967, 2110,
+ 10789, 5759, 2111, 9967, 2111, 7077, 5387, 7076,
+ 10789, 5759, 2190,
+ 10789, 5759, 2192,
+ 10789, 5759, 2194,
+ 10789, 5759, 2380,
+ 10789, 5759, 2486,
+ 10789, 5759, 2487, 4358,
+ 10789, 5759, 2487, 5387, 2486,
+ 10789, 5759, 2487, 7711, 0,
+ 10789, 5759, 2487, 7711, 152,
+ 10789, 5759, 2487, 7711, 236,
+ 10789, 5759, 2487, 7711, 374,
+ 10789, 5759, 2487, 7711, 580,
+ 10789, 5759, 2487, 7711, 584,
+ 10789, 5759, 2487, 7711, 594,
+ 10789, 5759, 2487, 7711, 602,
+ 10789, 5759, 2487, 7711, 1050,
+ 10789, 5759, 2487, 7711, 1584,
+ 10789, 5759, 2487, 7711, 1696,
+ 10789, 5759, 2487, 7711, 1822,
+ 10789, 5759, 2487, 7711, 2110,
+ 10789, 5759, 2487, 7711, 2488,
+ 10789, 5759, 2487, 7711, 2636,
+ 10789, 5759, 2487, 7711, 2836,
+ 10789, 5759, 2487, 7711, 5692,
+ 10789, 5759, 2487, 9520,
+ 10789, 5759, 2488,
+ 10789, 5759, 2489, 7075, 7711, 3280,
+ 10789, 5759, 2494,
+ 10789, 5759, 2516,
+ 10789, 5759, 2518,
+ 10789, 5759, 2519, 250,
+ 10789, 5759, 2519, 5387, 2519, 1207, 5387, 1207, 1221, 5387, 1220,
+ 10789, 5759, 2519, 5387, 2519, 2637, 5387, 2637, 1221, 5387, 1220,
+ 10789, 5759, 2524,
+ 10789, 5759, 2525, 5387, 10267, 2524,
+ 10789, 5759, 2530,
+ 10789, 5759, 2582,
+ 10789, 5759, 2584,
+ 10789, 5759, 2592,
+ 10789, 5759, 2636,
+ 10789, 5759, 2637, 5387, 2637, 405, 5387, 405, 4095, 5387, 4094,
+ 10789, 5759, 2637, 9732,
+ 10789, 5759, 2638,
+ 10789, 5759, 2639, 7711, 106,
+ 10789, 5759, 2639, 7711, 588,
+ 10789, 5759, 2639, 7711, 1304,
+ 10789, 5759, 2639, 7711, 2518,
+ 10789, 5759, 2639, 7711, 2524,
+ 10789, 5759, 2639, 7711, 6012,
+ 10789, 5759, 2654,
+ 10789, 5759, 2694,
+ 10789, 5759, 2698,
+ 10789, 5759, 2699, 5387, 2698,
+ 10789, 5759, 2699, 5387, 2699, 1207, 5387, 1207, 1221, 5387, 1220,
+ 10789, 5759, 2699, 7711, 5880,
+ 10789, 5759, 2758,
+ 10789, 5759, 2760,
+ 10789, 5759, 2766,
+ 10789, 5759, 2767, 5387, 2767, 671, 5387, 670,
+ 10789, 5759, 2822,
+ 10789, 5759, 2823, 7711, 1, 5445, 236,
+ 10789, 5759, 2823, 7711, 1, 5445, 392,
+ 10789, 5759, 2823, 7711, 76,
+ 10789, 5759, 2823, 7711, 236,
+ 10789, 5759, 2823, 7711, 580,
+ 10789, 5759, 2823, 7711, 581, 5445, 106,
+ 10789, 5759, 2823, 7711, 581, 5445, 736,
+ 10789, 5759, 2823, 7711, 2110,
+ 10789, 5759, 2824,
+ 10789, 5759, 2828,
+ 10789, 5759, 2832,
+ 10789, 5759, 2833, 7711, 0,
+ 10789, 5759, 2833, 7711, 41, 5445, 1304,
+ 10789, 5759, 2833, 7711, 216,
+ 10789, 5759, 2833, 7711, 230,
+ 10789, 5759, 2833, 7711, 236,
+ 10789, 5759, 2833, 7711, 272,
+ 10789, 5759, 2833, 7711, 314,
+ 10789, 5759, 2833, 7711, 462,
+ 10789, 5759, 2833, 7711, 576,
+ 10789, 5759, 2833, 7711, 588,
+ 10789, 5759, 2833, 7711, 760,
+ 10789, 5759, 2833, 7711, 1060,
+ 10789, 5759, 2833, 7711, 1212,
+ 10789, 5759, 2833, 7711, 1220,
+ 10789, 5759, 2833, 7711, 1482,
+ 10789, 5759, 2833, 7711, 1498,
+ 10789, 5759, 2833, 7711, 1822,
+ 10789, 5759, 2833, 7711, 1922,
+ 10789, 5759, 2833, 7711, 2518,
+ 10789, 5759, 2833, 7711, 4241, 5898,
+ 10789, 5759, 2833, 7711, 5756,
+ 10789, 5759, 2833, 7711, 7774,
+ 10789, 5759, 2833, 7711, 7954,
+ 10789, 5759, 2836,
+ 10789, 5759, 2837, 7711, 0,
+ 10789, 5759, 2837, 7711, 326,
+ 10789, 5759, 2837, 7711, 1696,
+ 10789, 5759, 2837, 7711, 5880,
+ 10789, 5759, 2840,
+ 10789, 5759, 2841, 7711, 8338,
+ 10789, 5759, 2842,
+ 10789, 5759, 3122,
+ 10789, 5759, 3136,
+ 10789, 5759, 3158,
+ 10789, 5759, 3160,
+ 10789, 5759, 3161, 4703, 5898,
+ 10789, 5759, 3164,
+ 10789, 5759, 3188,
+ 10789, 5759, 3189, 7711, 0,
+ 10789, 5759, 3190,
+ 10789, 5759, 3242,
+ 10789, 5759, 3256,
+ 10789, 5759, 3257, 7711, 2518,
+ 10789, 5759, 3266,
+ 10789, 5759, 3270,
+ 10789, 5759, 3271, 7711, 1696,
+ 10789, 5759, 3280,
+ 10789, 5759, 3698,
+ 10789, 5759, 3820,
+ 10789, 5759, 4088,
+ 10789, 5759, 4094,
+ 10789, 5759, 4122,
+ 10789, 5759, 4124,
+ 10789, 5759, 4125, 4358,
+ 10789, 5759, 4125, 4359, 4358,
+ 10789, 5759, 4126,
+ 10789, 5759, 4132,
+ 10789, 5759, 4154,
+ 10789, 5759, 4156,
+ 10789, 5759, 4164,
+ 10789, 5759, 4166,
+ 10789, 5759, 4174,
+ 10789, 5759, 4175, 7711, 0,
+ 10789, 5759, 4175, 7711, 1, 5445, 1736,
+ 10789, 5759, 4175, 7711, 1, 5445, 1737, 7711, 1736,
+ 10789, 5759, 4175, 7711, 80,
+ 10789, 5759, 4175, 7711, 236,
+ 10789, 5759, 4175, 7711, 237, 4358,
+ 10789, 5759, 4175, 7711, 332,
+ 10789, 5759, 4175, 7711, 340,
+ 10789, 5759, 4175, 7711, 354,
+ 10789, 5759, 4175, 7711, 580,
+ 10789, 5759, 4175, 7711, 588,
+ 10789, 5759, 4175, 7711, 750,
+ 10789, 5759, 4175, 7711, 1483, 4358,
+ 10789, 5759, 4175, 7711, 1682,
+ 10789, 5759, 4175, 7711, 1737, 7711, 1736,
+ 10789, 5759, 4175, 7711, 4125, 4358,
+ 10789, 5759, 4175, 7711, 4125, 4359, 4358,
+ 10789, 5759, 4175, 7711, 8338,
+ 10789, 5759, 4175, 7711, 8339, 9732,
+ 10789, 5759, 4234,
+ 10789, 5759, 4235, 9967, 4234,
+ 10789, 5759, 4240,
+ 10789, 5759, 4241, 5387, 4240,
+ 10789, 5759, 4241, 5898,
+ 10789, 5759, 4241, 9967, 4240,
+ 10789, 5759, 4242,
+ 10789, 5759, 4334,
+ 10789, 5759, 4335, 4358,
+ 10789, 5759, 4336,
+ 10789, 5759, 4337, 7711, 1, 5445, 1482,
+ 10789, 5759, 4337, 7711, 355, 5445, 1482,
+ 10789, 5759, 4337, 7711, 462,
+ 10789, 5759, 4337, 7711, 1482,
+ 10789, 5759, 4337, 7711, 4241, 5898,
+ 10789, 5759, 4338,
+ 10789, 5759, 4339, 5898,
+ 10789, 5759, 4339, 7711, 750,
+ 10789, 5759, 4339, 7711, 5880,
+ 10789, 5759, 4339, 9967, 4338,
+ 10789, 5759, 4366,
+ 10789, 5759, 4544,
+ 10789, 5759, 4545, 7711, 80,
+ 10789, 5759, 4545, 7711, 588,
+ 10789, 5759, 4545, 7711, 1344,
+ 10789, 5759, 4545, 7711, 4884,
+ 10789, 5759, 4545, 7711, 8338,
+ 10789, 5759, 4546,
+ 10789, 5759, 4596,
+ 10789, 5759, 4597, 5387, 4597, 832,
+ 10789, 5759, 4597, 5387, 4597, 9732,
+ 10789, 5759, 4606,
+ 10789, 5759, 4704,
+ 10789, 5759, 4706,
+ 10789, 5759, 4708,
+ 10789, 5759, 4710,
+ 10789, 5759, 4711, 5387, 4710,
+ 10789, 5759, 4714,
+ 10789, 5759, 4716,
+ 10789, 5759, 4764,
+ 10789, 5759, 4884,
+ 10789, 5759, 4928,
+ 10789, 5759, 5030,
+ 10789, 5759, 5031, 5387, 5030,
+ 10789, 5759, 5031, 5387, 5031, 7711, 1, 5445, 392,
+ 10789, 5759, 5031, 7711, 0,
+ 10789, 5759, 5031, 7711, 670,
+ 10789, 5759, 5031, 7711, 1696,
+ 10789, 5759, 5031, 9967, 5030,
+ 10789, 5759, 5042,
+ 10789, 5759, 5043, 7711, 2525, 5898,
+ 10789, 5759, 5043, 10266,
+ 10789, 5759, 5043, 10377, 5042,
+ 10789, 5759, 5044,
+ 10789, 5759, 5278,
+ 10789, 5759, 5662,
+ 10789, 5759, 5663, 7711, 0,
+ 10789, 5759, 5663, 7711, 40,
+ 10789, 5759, 5663, 7711, 41, 5445, 0,
+ 10789, 5759, 5663, 7711, 396,
+ 10789, 5759, 5663, 7711, 750,
+ 10789, 5759, 5663, 7711, 2766,
+ 10789, 5759, 5663, 7711, 4338,
+ 10789, 5759, 5663, 7711, 5720,
+ 10789, 5759, 5664,
+ 10789, 5759, 5682,
+ 10789, 5759, 5692,
+ 10789, 5759, 5693, 7711, 0,
+ 10789, 5759, 5693, 7711, 272,
+ 10789, 5759, 5696,
+ 10789, 5759, 5697, 7711, 0,
+ 10789, 5759, 5697, 7711, 754,
+ 10789, 5759, 5697, 7711, 1012,
+ 10789, 5759, 5697, 7711, 1220,
+ 10789, 5759, 5697, 7711, 1482,
+ 10789, 5759, 5697, 7711, 1483, 4358,
+ 10789, 5759, 5697, 7711, 1820,
+ 10789, 5759, 5697, 7711, 1950,
+ 10789, 5759, 5697, 7711, 2488,
+ 10789, 5759, 5697, 7711, 6534,
+ 10789, 5759, 5697, 7711, 8374,
+ 10789, 5759, 5702,
+ 10789, 5759, 5703, 5387, 5703, 833, 5387, 832,
+ 10789, 5759, 5703, 5898,
+ 10789, 5759, 5720,
+ 10789, 5759, 5756,
+ 10789, 5759, 5757, 5387, 5757, 5720,
+ 10789, 5759, 5760,
+ 10789, 5759, 5840,
+ 10789, 5759, 5852,
+ 10789, 5759, 5880,
+ 10789, 5759, 6012,
+ 10789, 5759, 6046,
+ 10789, 5759, 6048,
+ 10789, 5759, 6049, 7711, 462,
+ 10789, 5759, 6049, 7711, 8338,
+ 10789, 5759, 6054,
+ 10789, 5759, 6062,
+ 10789, 5759, 6064,
+ 10789, 5759, 6256,
+ 10789, 5759, 6318,
+ 10789, 5759, 6396,
+ 10789, 5759, 6412,
+ 10789, 5759, 6430,
+ 10789, 5759, 6436,
+ 10789, 5759, 6464,
+ 10789, 5759, 6466,
+ 10789, 5759, 6534,
+ 10789, 5759, 6535, 5387, 6534,
+ 10789, 5759, 6648,
+ 10789, 5759, 6650,
+ 10789, 5759, 6708,
+ 10789, 5759, 6746,
+ 10789, 5759, 6818,
+ 10789, 5759, 6854,
+ 10789, 5759, 6860,
+ 10789, 5759, 6884,
+ 10789, 5759, 7040,
+ 10789, 5759, 7054,
+ 10789, 5759, 7074,
+ 10789, 5759, 7075, 7711, 0,
+ 10789, 5759, 7075, 7711, 1, 5445, 139, 5445, 236,
+ 10789, 5759, 7075, 7711, 1, 5445, 1220,
+ 10789, 5759, 7075, 7711, 1, 5445, 1736,
+ 10789, 5759, 7075, 7711, 40,
+ 10789, 5759, 7075, 7711, 41, 5445, 0,
+ 10789, 5759, 7075, 7711, 41, 5445, 41, 5445, 40,
+ 10789, 5759, 7075, 7711, 76,
+ 10789, 5759, 7075, 7711, 80,
+ 10789, 5759, 7075, 7711, 106,
+ 10789, 5759, 7075, 7711, 176,
+ 10789, 5759, 7075, 7711, 216,
+ 10789, 5759, 7075, 7711, 236,
+ 10789, 5759, 7075, 7711, 243, 7711, 2110,
+ 10789, 5759, 7075, 7711, 272,
+ 10789, 5759, 7075, 7711, 273, 5445, 236,
+ 10789, 5759, 7075, 7711, 273, 5445, 354,
+ 10789, 5759, 7075, 7711, 314,
+ 10789, 5759, 7075, 7711, 354,
+ 10789, 5759, 7075, 7711, 368,
+ 10789, 5759, 7075, 7711, 369, 5445, 176,
+ 10789, 5759, 7075, 7711, 396,
+ 10789, 5759, 7075, 7711, 561, 5445, 1, 5445, 547, 5445, 392,
+ 10789, 5759, 7075, 7711, 581, 5445, 736,
+ 10789, 5759, 7075, 7711, 588,
+ 10789, 5759, 7075, 7711, 737, 6313, 5898,
+ 10789, 5759, 7075, 7711, 750,
+ 10789, 5759, 7075, 7711, 966,
+ 10789, 5759, 7075, 7711, 1220,
+ 10789, 5759, 7075, 7711, 1304,
+ 10789, 5759, 7075, 7711, 1305, 5445, 1304,
+ 10789, 5759, 7075, 7711, 1344,
+ 10789, 5759, 7075, 7711, 1483, 4358,
+ 10789, 5759, 7075, 7711, 1632,
+ 10789, 5759, 7075, 7711, 1682,
+ 10789, 5759, 7075, 7711, 1688,
+ 10789, 5759, 7075, 7711, 1689, 5445, 243, 5445, 0,
+ 10789, 5759, 7075, 7711, 1820,
+ 10789, 5759, 7075, 7711, 2519, 5445, 2584,
+ 10789, 5759, 7075, 7711, 2584,
+ 10789, 5759, 7075, 7711, 2638,
+ 10789, 5759, 7075, 7711, 2836,
+ 10789, 5759, 7075, 7711, 4884,
+ 10789, 5759, 7075, 7711, 5030,
+ 10789, 5759, 7075, 7711, 5720,
+ 10789, 5759, 7075, 7711, 5721, 5445, 5720,
+ 10789, 5759, 7075, 7711, 5880,
+ 10789, 5759, 7075, 7711, 7074,
+ 10789, 5759, 7075, 7711, 7545, 5445, 4339, 5445, 6746,
+ 10789, 5759, 7075, 7711, 7545, 5445, 4339, 5898,
+ 10789, 5759, 7075, 9732,
+ 10789, 5759, 7076,
+ 10789, 5759, 7077, 4358,
+ 10789, 5759, 7077, 4359, 5387, 7077, 4359, 2518,
+ 10789, 5759, 7077, 7711, 2518,
+ 10789, 5759, 7077, 7711, 2519, 5445, 2584,
+ 10789, 5759, 7122,
+ 10789, 5759, 7123, 5387, 7122,
+ 10789, 5759, 7123, 9684,
+ 10789, 5759, 7123, 10377, 7122,
+ 10789, 5759, 7138,
+ 10789, 5759, 7196,
+ 10789, 5759, 7197, 4358,
+ 10789, 5759, 7197, 7711, 0,
+ 10789, 5759, 7197, 7711, 1, 5445, 144,
+ 10789, 5759, 7197, 7711, 144,
+ 10789, 5759, 7204,
+ 10789, 5759, 7248,
+ 10789, 5759, 7284,
+ 10789, 5759, 7285, 703, 7711, 106,
+ 10789, 5759, 7285, 703, 7711, 332,
+ 10789, 5759, 7285, 703, 7711, 396,
+ 10789, 5759, 7285, 703, 7711, 580,
+ 10789, 5759, 7285, 703, 7711, 1052,
+ 10789, 5759, 7285, 703, 7711, 1304,
+ 10789, 5759, 7285, 703, 7711, 1483, 4358,
+ 10789, 5759, 7285, 703, 7711, 4706,
+ 10789, 5759, 7285, 703, 7711, 7572,
+ 10789, 5759, 7285, 703, 7711, 7954,
+ 10789, 5759, 7285, 8361, 7711, 106,
+ 10789, 5759, 7285, 8361, 7711, 107, 40,
+ 10789, 5759, 7364,
+ 10789, 5759, 7374,
+ 10789, 5759, 7375, 7711, 588,
+ 10789, 5759, 7375, 7711, 670,
+ 10789, 5759, 7375, 7711, 1586,
+ 10789, 5759, 7375, 10377, 7374,
+ 10789, 5759, 7510,
+ 10789, 5759, 7516,
+ 10789, 5759, 7528,
+ 10789, 5759, 7534,
+ 10789, 5759, 7544,
+ 10789, 5759, 7572,
+ 10789, 5759, 7648,
+ 10789, 5759, 7762,
+ 10789, 5759, 7774,
+ 10789, 5759, 7775, 7711, 40,
+ 10789, 5759, 7778,
+ 10789, 5759, 7890,
+ 10789, 5759, 7954,
+ 10789, 5759, 7966,
+ 10789, 5759, 8242,
+ 10789, 5759, 8276,
+ 10789, 5759, 8338,
+ 10789, 5759, 8339, 5387, 8339, 7075, 7711, 41, 5387, 7075, 7711, 40,
+ 10789, 5759, 8339, 7075, 7711, 41, 5387, 7075, 7711, 40,
+ 10789, 5759, 8360,
+ 10789, 5759, 8361, 5387, 8360,
+ 10789, 5759, 8374,
+ 10789, 5759, 8376,
+ 10789, 5759, 8382,
+ 10789, 5759, 8408,
+ 10789, 5759, 8490,
+ 10789, 5759, 8494,
+ 10789, 5759, 8512,
+ 10789, 5759, 8513, 7711, 80,
+ 10789, 5759, 8513, 7711, 369, 5445, 4241, 5898,
+ 10789, 5759, 8513, 7711, 396,
+ 10789, 5759, 8513, 7711, 581, 5445, 736,
+ 10789, 5759, 8513, 7711, 736,
+ 10789, 5759, 8513, 7711, 737, 5445, 736,
+ 10789, 5759, 8513, 7711, 1304,
+ 10789, 5759, 8513, 7711, 2110,
+ 10789, 5759, 8513, 7711, 2518,
+ 10789, 5759, 8513, 7711, 2519, 5445, 1, 80,
+ 10789, 5759, 8513, 7711, 2519, 5445, 736,
+ 10789, 5759, 8513, 7711, 2519, 5445, 737, 5445, 736,
+ 10789, 5759, 8513, 7711, 2836,
+ 10789, 5759, 8664,
+ 10789, 5759, 8702,
+ 10789, 5759, 8706,
+ 10789, 5759, 8710,
+ 10789, 5759, 8764,
+ 10789, 5759, 8902,
+ 10789, 5759, 9306,
+ 10789, 5759, 9307, 7711, 1696,
+ 10789, 5759, 10518,
+ 10789, 9515, 5759, 2167, 9897, 2171, 7574,
+ 10789, 9515, 5759, 2167, 9897, 2171, 9614,
+ 10789, 9515, 5759, 2171, 3704,
+ 10789, 9515, 5759, 2171, 3822,
+ 10789, 9515, 5759, 2171, 6756,
+ 10789, 9515, 5759, 2171, 6830,
+ 10789, 9515, 5759, 2171, 6832,
+ 10789, 9515, 5759, 2171, 7520,
+ 10789, 9515, 5759, 2171, 7687, 4094,
+ 10789, 9515, 5759, 2171, 7687, 9817, 4213, 0,
+ 10789, 9515, 5759, 2171, 8159, 736,
+ 10789, 9515, 5759, 2171, 9615, 736,
+ 10789, 9515, 5759, 2541, 40,
+ 10789, 9515, 5759, 2541, 736,
+ 10789, 9515, 5759, 2541, 737, 5898,
+ 10789, 9515, 5759, 2541, 4094,
+ 10789, 9515, 5759, 2541, 6830,
+ 10789, 9515, 5759, 2541, 7516,
+ 10789, 9515, 5759, 2541, 9817, 4213, 3282,
+ 10789, 9515, 5759, 2779, 736,
+ 10789, 9515, 5759, 2779, 737, 5898,
+ 10789, 9515, 5759, 2779, 3704,
+ 10789, 9515, 5759, 2779, 3822,
+ 10789, 9515, 5759, 2779, 6756,
+ 10789, 9515, 5759, 2779, 6830,
+ 10789, 9515, 5759, 2779, 6832,
+ 10789, 9515, 5759, 2779, 7516,
+ 10789, 9515, 5759, 2779, 7520,
+ 10789, 9515, 5759, 2779, 8819, 4094,
+ 10789, 9515, 5759, 2779, 8819, 9817, 4213, 0,
+ 10789, 9515, 5759, 4201, 40,
+ 10789, 9515, 5759, 4201, 736,
+ 10789, 9515, 5759, 4201, 737, 5898,
+ 10789, 9515, 5759, 4201, 3704,
+ 10789, 9515, 5759, 4201, 3705, 9817, 4212,
+ 10789, 9515, 5759, 4201, 3822,
+ 10789, 9515, 5759, 4201, 4094,
+ 10789, 9515, 5759, 4201, 6830,
+ 10789, 9515, 5759, 4201, 6832,
+ 10789, 9515, 5759, 4201, 7516,
+ 10789, 9515, 5759, 4201, 7520,
+ 10789, 9515, 5759, 4201, 8719, 4094,
+ 10789, 9515, 5759, 4215, 40,
+ 10789, 9515, 5759, 4215, 736,
+ 10789, 9515, 5759, 4215, 737, 5898,
+ 10789, 9515, 5759, 4215, 3704,
+ 10789, 9515, 5759, 4215, 3705, 9817, 4212,
+ 10789, 9515, 5759, 4215, 3822,
+ 10789, 9515, 5759, 4215, 4094,
+ 10789, 9515, 5759, 4215, 6830,
+ 10789, 9515, 5759, 4215, 6832,
+ 10789, 9515, 5759, 4215, 7516,
+ 10789, 9515, 5759, 4215, 7520,
+ 10789, 9515, 5759, 4215, 9817, 4213, 7106,
+ 10789, 9515, 5759, 4215, 9817, 4213, 7107, 0,
+ 10789, 9515, 5759, 4215, 9817, 4213, 7107, 2,
+ 10789, 9515, 5759, 4215, 9817, 4213, 8410,
+ 10789, 9515, 5759, 5191, 40,
+ 10789, 9515, 5759, 5191, 736,
+ 10789, 9515, 5759, 5191, 4094,
+ 10789, 9515, 5759, 5191, 6830,
+ 10789, 9515, 5759, 5191, 7516,
+ 10789, 9515, 5759, 5191, 9817, 4213, 8310,
+ 10789, 9515, 5759, 5191, 9817, 4213, 8311, 0,
+ 10789, 9515, 5759, 5191, 9817, 4213, 9354,
+ 10789, 9515, 5759, 5191, 9817, 4213, 9356,
+ 10789, 9515, 5759, 6723, 40,
+ 10789, 9515, 5759, 6723, 736,
+ 10789, 9515, 5759, 6723, 4094,
+ 10789, 9515, 5759, 6723, 6830,
+ 10789, 9515, 5759, 6723, 7516,
+ 10789, 9515, 5759, 6723, 9817, 4213, 6066,
+ 10789, 9515, 5759, 6723, 9817, 4213, 7776,
+ 10789, 9515, 5759, 7509, 40,
+ 10789, 9515, 5759, 7509, 736,
+ 10789, 9515, 5759, 7509, 4094,
+ 10789, 9515, 5759, 7509, 6830,
+ 10789, 9515, 5759, 7509, 7516,
+ 10789, 9515, 5759, 7509, 9817, 4213, 4607, 0,
+ 10789, 9515, 5759, 7509, 9817, 4213, 4607, 2,
+ 10789, 9515, 5759, 7509, 9817, 4213, 6990,
+ 10789, 9515, 5759, 7517, 7711, 1213, 5445, 1922,
+ 10789, 9515, 5759, 7517, 7711, 1213, 5445, 4094,
+ 10789, 9515, 5759, 7695, 736,
+ 10789, 9515, 5759, 7695, 737, 5898,
+ 10789, 9515, 5759, 7695, 3704,
+ 10789, 9515, 5759, 7695, 3822,
+ 10789, 9515, 5759, 7695, 3823, 9817, 4212,
+ 10789, 9515, 5759, 7695, 4094,
+ 10789, 9515, 5759, 7695, 6830,
+ 10789, 9515, 5759, 7695, 6832,
+ 10789, 9515, 5759, 7695, 7516,
+ 10789, 9515, 5759, 7695, 7517, 9817, 4212,
+ 10789, 9515, 5759, 7695, 7520,
+ 10789, 9515, 5759, 7695, 7521, 9817, 4212,
+ 10789, 9515, 5759, 7695, 9817, 4213, 6752,
+ 10789, 9515, 5759, 7695, 9817, 4213, 6754,
+ 10789, 9515, 5759, 11136,
+ 10789, 9515, 5759, 11138,
+ 10789, 12133, 5759, 2167, 9897, 6129, 9178,
+ 10789, 12133, 5759, 10001, 6610,
+ 10789, 12133, 5759, 10001, 10644,
+ 10789, 12133, 5759, 10677, 6610,
+ 10797, 8775, 7101, 601, 721, 11648,
+ 10797, 8775, 7101, 601, 721, 11649, 6121, 6104,
+ 10797, 8775, 7101, 601, 721, 11649, 6121, 8056,
+ 10797, 8775, 7101, 601, 721, 11649, 6121, 10642,
+ 10797, 8775, 7101, 4117, 721, 11648,
+ 10797, 8775, 7101, 4117, 721, 11649, 6121, 6104,
+ 10797, 8775, 7101, 4117, 721, 11649, 6121, 8056,
+ 10797, 8775, 7101, 4117, 721, 11649, 6121, 10642,
+ 10797, 8775, 7101, 10677, 721, 2725, 4848,
+ 10797, 8775, 7101, 10677, 721, 2725, 7442,
+ 10797, 8775, 7101, 10677, 721, 6104,
+ 10797, 8775, 7101, 10677, 721, 8005, 4848,
+ 10797, 8775, 7101, 10677, 721, 8005, 7442,
+ 10797, 8775, 7101, 10677, 6121, 8056,
+ 10797, 8775, 7101, 10677, 6121, 10642,
+ 10804,
+ 10817, 8548,
+ 10959, 2779, 8289, 6434,
+ 10959, 6434,
+ 10959, 6435, 569, 760,
+ 10959, 6435, 4221, 760,
+ 10959, 6435, 6121, 2697, 11096,
+ 10959, 6435, 6121, 2697, 11764,
+ 10959, 6435, 6121, 8077, 11096,
+ 10959, 6435, 6121, 8153, 8758,
+ 10959, 6435, 6121, 11649, 8758,
+ 10959, 6435, 11097, 429, 9811, 6434,
+ 10959, 6505, 6434,
+ 10959, 7821, 6434,
+ 10959, 7924,
+ 10959, 8097, 6434,
+ 10959, 8153, 6434,
+ 10959, 8561, 7944,
+ 10959, 8849, 6434,
+ 10959, 8963, 6434,
+ 10959, 9327, 6121, 3713, 4849, 569, 760,
+ 10959, 9327, 6121, 3713, 4849, 4221, 760,
+ 10959, 9327, 6121, 3713, 4849, 7991, 9811, 9327, 6121, 3713, 7442,
+ 10959, 9327, 6121, 3713, 4849, 7991, 10959, 9327, 6121, 3713, 7442,
+ 10959, 9327, 6121, 3713, 7443, 569, 760,
+ 10959, 9327, 6121, 3713, 7443, 4221, 760,
+ 10959, 9327, 6121, 3713, 11096,
+ 10959, 9327, 6121, 3713, 11764,
+ 10959, 11191, 6434,
+ 10963, 9120,
+ 10977, 8774,
+ 10978,
+ 10989, 5758,
+ 11011, 1809, 4876,
+ 11011, 2091, 5758,
+ 11011, 2941, 5758,
+ 11011, 3055, 5758,
+ 11011, 3873, 5758,
+ 11011, 4223, 5836,
+ 11011, 4849, 6627, 9050,
+ 11011, 4849, 7821, 12114,
+ 11011, 4849, 8745, 9050,
+ 11011, 4849, 12114,
+ 11011, 5445, 5758,
+ 11011, 6610,
+ 11011, 6616,
+ 11011, 6689, 2170,
+ 11011, 6689, 2540,
+ 11011, 6689, 2778,
+ 11011, 6689, 4200,
+ 11011, 6689, 4214,
+ 11011, 6689, 5190,
+ 11011, 6689, 6260,
+ 11011, 6689, 6722,
+ 11011, 6689, 7508,
+ 11011, 6689, 7694,
+ 11011, 6875, 7908,
+ 11011, 7089, 7593, 8405, 0,
+ 11011, 7089, 7593, 8405, 2,
+ 11011, 7089, 7593, 8405, 4,
+ 11011, 7089, 7593, 8405, 6,
+ 11011, 7089, 7593, 8405, 8,
+ 11011, 7089, 7593, 8405, 10,
+ 11011, 7089, 7593, 8405, 12,
+ 11011, 7089, 7593, 8405, 14,
+ 11011, 7089, 7593, 8405, 16,
+ 11011, 7089, 7593, 8405, 18,
+ 11011, 7089, 7593, 8405, 20,
+ 11011, 7089, 7593, 8405, 22,
+ 11011, 7089, 7593, 8405, 24,
+ 11011, 7089, 7593, 8405, 26,
+ 11011, 7089, 7593, 8405, 28,
+ 11011, 7089, 7593, 8405, 30,
+ 11011, 7089, 7593, 8405, 32,
+ 11011, 7089, 7593, 8405, 34,
+ 11011, 7089, 7593, 8405, 36,
+ 11011, 7089, 7593, 8405, 38,
+ 11011, 7089, 7593, 8405, 40,
+ 11011, 7089, 7593, 8405, 42,
+ 11011, 7089, 7593, 8405, 44,
+ 11011, 7089, 7593, 8405, 46,
+ 11011, 7089, 7593, 8405, 48,
+ 11011, 7089, 7593, 8405, 50,
+ 11011, 7089, 9063, 8405, 0,
+ 11011, 7089, 9063, 8405, 2,
+ 11011, 7089, 9063, 8405, 4,
+ 11011, 7089, 9063, 8405, 6,
+ 11011, 7089, 9063, 8405, 8,
+ 11011, 7089, 9063, 8405, 10,
+ 11011, 7089, 9063, 8405, 12,
+ 11011, 7089, 9063, 8405, 14,
+ 11011, 7089, 9063, 8405, 16,
+ 11011, 7089, 9063, 8405, 18,
+ 11011, 7089, 9063, 8405, 20,
+ 11011, 7089, 9063, 8405, 22,
+ 11011, 7089, 9063, 8405, 24,
+ 11011, 7089, 9063, 8405, 26,
+ 11011, 7089, 9063, 8405, 28,
+ 11011, 7089, 9063, 8405, 30,
+ 11011, 7089, 9063, 8405, 32,
+ 11011, 7089, 9063, 8405, 34,
+ 11011, 7089, 9063, 8405, 36,
+ 11011, 7089, 9063, 8405, 38,
+ 11011, 7089, 9063, 8405, 40,
+ 11011, 7089, 9063, 8405, 42,
+ 11011, 7089, 9063, 8405, 44,
+ 11011, 7089, 9063, 8405, 46,
+ 11011, 7089, 9063, 8405, 48,
+ 11011, 7089, 9063, 8405, 50,
+ 11011, 7387, 5758,
+ 11011, 7443, 6627, 9050,
+ 11011, 7443, 7821, 12114,
+ 11011, 7443, 8745, 9050,
+ 11011, 7443, 12114,
+ 11011, 7708,
+ 11011, 8017, 760,
+ 11011, 8129, 5758,
+ 11011, 8167, 5758,
+ 11011, 8432,
+ 11011, 8525, 5758,
+ 11011, 9581, 5758,
+ 11011, 9633, 9718,
+ 11011, 9718,
+ 11011, 9898,
+ 11011, 10469, 4926,
+ 11011, 10677, 4876,
+ 11011, 10708,
+ 11011, 11099, 5758,
+ 11011, 11195, 4926,
+ 11011, 11224,
+ 11011, 11424,
+ 11011, 11449, 7908,
+ 11011, 11451, 90,
+ 11011, 12017, 4926,
+ 11011, 12473, 5758,
+ 11011, 12478,
+ 11015, 11740,
+ 11031, 4849, 8077, 9050,
+ 11031, 6505, 8744,
+ 11031, 6801, 7101, 10676,
+ 11031, 7443, 8077, 9050,
+ 11031, 7821, 8056,
+ 11031, 8287, 8206,
+ 11031, 8287, 8405, 0,
+ 11031, 8287, 8405, 8,
+ 11031, 8287, 8405, 16,
+ 11031, 8287, 8405, 28,
+ 11031, 8287, 8405, 40,
+ 11031, 8287, 8405, 66,
+ 11031, 8287, 8405, 178,
+ 11031, 8287, 8405, 188,
+ 11031, 8287, 8405, 426,
+ 11031, 8287, 8405, 622,
+ 11031, 8287, 8405, 626,
+ 11031, 8287, 8405, 630,
+ 11031, 8287, 8405, 652,
+ 11031, 8287, 8405, 654,
+ 11031, 8287, 8405, 656,
+ 11031, 8287, 8405, 660,
+ 11031, 8287, 8405, 664,
+ 11031, 8287, 8405, 2908,
+ 11031, 8287, 8405, 2926,
+ 11031, 8287, 8405, 3012,
+ 11031, 8287, 8405, 3056,
+ 11031, 8287, 8405, 5770,
+ 11031, 8287, 8405, 6594,
+ 11031, 8287, 8405, 6912,
+ 11031, 8287, 8405, 6982,
+ 11031, 8287, 8405, 7166,
+ 11031, 8287, 8405, 7244,
+ 11031, 8287, 8405, 7372,
+ 11031, 8287, 8405, 7440,
+ 11031, 8287, 8405, 8362,
+ 11031, 8287, 8405, 8828,
+ 11031, 8287, 8405, 9086,
+ 11031, 8287, 8405, 9400,
+ 11031, 8287, 8405, 9588,
+ 11031, 8287, 8405, 9780,
+ 11031, 8287, 8405, 11248,
+ 11031, 8287, 8405, 11728,
+ 11031, 8287, 8405, 11758,
+ 11031, 8287, 8405, 11824,
+ 11031, 8287, 8405, 11832,
+ 11031, 8287, 8405, 12070,
+ 11031, 8287, 8405, 12094,
+ 11031, 8287, 8405, 12096,
+ 11031, 8287, 8405, 12144,
+ 11031, 8287, 8405, 12146,
+ 11031, 8287, 8405, 12150,
+ 11031, 8287, 8405, 12350,
+ 11031, 8287, 8405, 12352,
+ 11031, 8287, 8405, 12532,
+ 11031, 8287, 8405, 13006,
+ 11031, 8287, 8405, 13008,
+ 11031, 9811, 6434,
+ 11031, 10283, 8405, 0,
+ 11031, 10283, 8405, 8,
+ 11031, 10283, 8405, 16,
+ 11031, 10283, 8405, 26,
+ 11031, 10283, 8405, 28,
+ 11031, 10283, 8405, 40,
+ 11031, 10283, 8405, 236,
+ 11031, 10283, 8405, 238,
+ 11031, 10283, 8405, 242,
+ 11031, 10283, 8405, 246,
+ 11031, 10283, 8405, 250,
+ 11031, 10283, 8405, 306,
+ 11031, 10283, 8405, 310,
+ 11031, 10283, 8405, 314,
+ 11031, 10283, 8405, 322,
+ 11031, 10283, 8405, 326,
+ 11031, 10283, 8405, 364,
+ 11031, 10283, 8405, 368,
+ 11031, 10283, 8405, 374,
+ 11031, 10283, 8405, 380,
+ 11031, 10283, 8405, 384,
+ 11031, 10283, 8405, 392,
+ 11031, 10283, 8405, 396,
+ 11031, 10283, 8405, 404,
+ 11031, 10283, 8405, 412,
+ 11031, 10283, 8405, 416,
+ 11031, 10283, 8405, 510,
+ 11031, 10283, 8405, 512,
+ 11031, 10283, 8405, 514,
+ 11031, 10283, 8405, 516,
+ 11031, 10283, 8405, 520,
+ 11031, 10283, 8405, 524,
+ 11031, 10283, 8405, 526,
+ 11031, 10283, 8405, 532,
+ 11031, 10283, 8405, 536,
+ 11031, 10283, 8405, 546,
+ 11031, 10283, 8405, 556,
+ 11031, 10283, 8405, 560,
+ 11031, 10283, 8405, 564,
+ 11031, 10283, 8405, 568,
+ 11031, 10283, 8405, 576,
+ 11031, 10283, 8405, 622,
+ 11031, 10283, 8405, 632,
+ 11031, 10283, 8405, 652,
+ 11031, 10283, 8405, 660,
+ 11031, 10283, 8405, 664,
+ 11031, 10283, 8405, 7593, 0,
+ 11031, 10283, 8405, 7593, 8,
+ 11031, 10283, 8405, 7593, 16,
+ 11031, 10283, 8405, 7593, 28,
+ 11031, 10283, 8405, 7593, 40,
+ 11031, 10283, 8405, 7593, 576,
+ 11031, 10283, 8405, 7593, 652,
+ 11031, 10283, 8405, 7593, 660,
+ 11031, 10283, 8405, 7593, 664,
+ 11031, 10283, 8473, 1044,
+ 11031, 10283, 8921, 7605, 4926,
+ 11031, 10283, 12341, 7605, 4926,
+ 11031, 10959, 6434,
+ 11031, 11097, 6434,
+ 11031, 11765, 6434,
+ 11031, 12043, 4223, 5836,
+ 11031, 12043, 6616,
+ 11031, 13365, 11185, 7605, 4926,
+ 11035, 10773, 8456,
+ 11036,
+ 11041, 568,
+ 11041, 569, 721, 9705, 10410,
+ 11041, 6121, 1045, 6376,
+ 11051, 88,
+ 11052,
+ 11061, 8774,
+ 11063, 5444,
+ 11063, 7710,
+ 11063, 11228,
+ 11093, 731, 12901, 6434,
+ 11097, 2779, 8289, 6434,
+ 11097, 6105, 6434,
+ 11097, 6434,
+ 11097, 6435, 569, 760,
+ 11097, 6435, 569, 761, 5387, 11765, 6435, 569, 760,
+ 11097, 6435, 569, 6505, 9158,
+ 11097, 6435, 4221, 760,
+ 11097, 6435, 4221, 761, 569, 6505, 9158,
+ 11097, 6435, 5387, 11765, 6434,
+ 11097, 6435, 6121, 2697, 9810,
+ 11097, 6435, 6121, 2697, 10958,
+ 11097, 6435, 6121, 4530,
+ 11097, 6435, 6121, 4896,
+ 11097, 6435, 6121, 5445, 6490,
+ 11097, 6435, 6121, 5878,
+ 11097, 6435, 6121, 5879, 6121, 8153, 10677, 8758,
+ 11097, 6435, 6121, 5879, 6121, 10677, 8758,
+ 11097, 6435, 6121, 8151, 5832,
+ 11097, 6435, 6121, 8153, 10677, 8758,
+ 11097, 6435, 6121, 8758,
+ 11097, 6435, 6121, 10677, 8758,
+ 11097, 6435, 6377, 7551, 11765, 6434,
+ 11097, 6435, 6377, 7709, 10374,
+ 11097, 6435, 6377, 7919, 6741, 568,
+ 11097, 6435, 6377, 9633, 7709, 10374,
+ 11097, 6435, 6377, 9633, 7919, 6741, 568,
+ 11097, 6435, 9785, 46,
+ 11097, 6435, 9785, 8762,
+ 11097, 6435, 9785, 11098,
+ 11097, 6505, 6434,
+ 11097, 7821, 6434,
+ 11097, 8097, 6434,
+ 11097, 8153, 3993, 6434,
+ 11097, 8153, 6434,
+ 11097, 8153, 6435, 4221, 760,
+ 11097, 8153, 6435, 6121, 8758,
+ 11097, 8153, 6435, 6121, 10677, 8758,
+ 11097, 8153, 11430,
+ 11097, 8561, 7944,
+ 11097, 8849, 3993, 6434,
+ 11097, 8849, 6434,
+ 11097, 9327, 5387, 11765, 9326,
+ 11097, 9327, 6121, 3713, 601, 569, 760,
+ 11097, 9327, 6121, 3713, 601, 4221, 760,
+ 11097, 9327, 6121, 3713, 601, 6377, 4895, 3992,
+ 11097, 9327, 6121, 3713, 601, 6377, 11097, 9327, 6121, 3713, 4116,
+ 11097, 9327, 6121, 3713, 601, 6377, 11765, 9327, 6121, 3713, 600,
+ 11097, 9327, 6121, 3713, 4117, 569, 760,
+ 11097, 9327, 6121, 3713, 4117, 4221, 760,
+ 11097, 9327, 6121, 3713, 4117, 6377, 11765, 9327, 6121, 3713, 4116,
+ 11097, 9327, 6121, 3713, 4117, 6491, 4895, 3992,
+ 11097, 9327, 6121, 3713, 9810,
+ 11097, 9327, 6121, 3713, 10958,
+ 11097, 10531, 6434,
+ 11097, 11191, 6434,
+ 11097, 11430,
+ 11097, 11875, 6435, 4221, 760,
+ 11097, 11875, 6435, 6121, 5878,
+ 11097, 11875, 6435, 6121, 5879, 6121, 8153, 10677, 8758,
+ 11097, 11875, 6435, 6121, 5879, 6121, 10677, 8758,
+ 11097, 11875, 6435, 6121, 8153, 10677, 8758,
+ 11097, 11875, 6435, 6121, 10677, 8758,
+ 11097, 11875, 8849, 3993, 6434,
+ 11097, 12103, 6434,
+ 11099, 445, 6741, 568,
+ 11099, 445, 9705, 6741, 568,
+ 11099, 445, 9705, 6741, 569, 6121, 1045, 6376,
+ 11099, 445, 9705, 6741, 569, 6121, 1045, 6377, 7442,
+ 11099, 445, 9705, 6741, 569, 6121, 1045, 8318,
+ 11099, 445, 11621, 568,
+ 11099, 445, 11896,
+ 11099, 445, 12472,
+ 11099, 721, 2091, 11896,
+ 11099, 721, 12345, 2091, 6741, 568,
+ 11099, 835, 2091, 6741, 568,
+ 11099, 835, 2091, 11621, 568,
+ 11099, 5387, 6741, 568,
+ 11099, 5758,
+ 11099, 6121, 1044,
+ 11099, 6121, 8057, 8318,
+ 11099, 6121, 10469, 4927, 6376,
+ 11099, 6377, 9693, 445, 6740,
+ 11099, 6377, 9693, 6377, 12472,
+ 11099, 6377, 9705, 6741, 6377, 12473, 6377, 9705, 6740,
+ 11099, 6377, 11097, 6434,
+ 11099, 6377, 12007, 6741, 6377, 12472,
+ 11099, 6377, 12473, 6377, 12007, 6740,
+ 11099, 6741, 569, 445, 12472,
+ 11099, 8065, 115, 6628,
+ 11099, 8065, 115, 6629, 6377, 9705, 6740,
+ 11104,
+ 11111, 93, 8399, 4926,
+ 11111, 3997, 4926,
+ 11111, 5759, 8916,
+ 11111, 5759, 9824,
+ 11111, 5759, 9870,
+ 11111, 5759, 9904,
+ 11111, 6689, 2170,
+ 11111, 6689, 2540,
+ 11111, 6689, 2778,
+ 11111, 6689, 4200,
+ 11111, 6689, 4214,
+ 11111, 6689, 5190,
+ 11111, 6689, 6260,
+ 11111, 6689, 6722,
+ 11111, 6689, 7508,
+ 11111, 6689, 7694,
+ 11111, 7803, 5759, 8,
+ 11111, 7803, 5759, 16,
+ 11111, 7803, 5759, 28,
+ 11111, 7803, 5759, 40,
+ 11111, 7803, 5759, 58,
+ 11111, 7803, 5759, 72,
+ 11111, 7803, 5759, 92,
+ 11111, 7803, 5759, 162,
+ 11111, 7803, 5759, 266,
+ 11111, 7803, 5759, 440,
+ 11111, 7803, 5759, 606,
+ 11111, 7803, 5759, 9827, 22,
+ 11111, 7803, 5759, 9827, 34,
+ 11111, 7803, 5759, 9827, 344,
+ 11111, 7803, 5759, 9827, 518,
+ 11111, 8405, 0,
+ 11111, 8405, 8,
+ 11111, 8405, 16,
+ 11111, 8405, 28,
+ 11111, 8405, 40,
+ 11111, 8405, 58,
+ 11111, 8405, 72,
+ 11111, 8405, 92,
+ 11111, 8405, 100,
+ 11111, 8405, 116,
+ 11111, 8405, 138,
+ 11111, 8405, 162,
+ 11111, 8405, 216,
+ 11111, 8405, 236,
+ 11111, 8405, 266,
+ 11111, 8405, 292,
+ 11111, 8405, 306,
+ 11111, 8405, 332,
+ 11111, 8405, 364,
+ 11111, 8405, 392,
+ 11111, 8405, 440,
+ 11111, 8405, 462,
+ 11111, 8405, 510,
+ 11111, 8405, 524,
+ 11111, 8405, 556,
+ 11111, 8405, 606,
+ 11111, 8405, 610,
+ 11111, 8405, 652,
+ 11111, 8405, 792,
+ 11111, 8405, 884,
+ 11111, 8405, 974,
+ 11111, 8405, 996,
+ 11111, 8405, 1260,
+ 11111, 8405, 1512,
+ 11111, 8405, 1612,
+ 11111, 8405, 1796,
+ 11111, 8405, 2030,
+ 11111, 8405, 2076,
+ 11111, 8405, 2126,
+ 11111, 8405, 2212,
+ 11111, 8405, 2438,
+ 11111, 8405, 2516,
+ 11111, 8405, 2566,
+ 11111, 8405, 2678,
+ 11111, 8405, 2746,
+ 11111, 8405, 4016,
+ 11111, 8405, 4888,
+ 11111, 8405, 5994,
+ 11111, 8405, 8045, 20,
+ 11111, 8405, 8045, 22,
+ 11111, 8405, 8045, 26,
+ 11111, 8405, 8045, 344,
+ 11111, 8405, 8045, 410,
+ 11111, 8405, 8045, 518,
+ 11111, 8405, 9827, 22,
+ 11111, 8405, 9827, 34,
+ 11111, 8405, 9827, 344,
+ 11111, 8405, 9827, 518,
+ 11111, 8525, 2171, 9344,
+ 11111, 8525, 2171, 10624,
+ 11111, 8525, 2670,
+ 11111, 10203, 2171, 4388,
+ 11111, 10203, 2171, 9614,
+ 11111, 10203, 7695, 10466,
+ 11113, 9539, 11054,
+ 11123, 4215, 4112,
+ 11123, 4217, 11391, 10507, 2170,
+ 11123, 4217, 11391, 10507, 2778,
+ 11123, 4217, 11391, 10507, 7694,
+ 11123, 4223, 5836,
+ 11123, 5751, 10585, 9921, 8450,
+ 11123, 5963, 5781, 8306,
+ 11123, 6500,
+ 11123, 6610,
+ 11123, 6616,
+ 11123, 6689, 2170,
+ 11123, 6689, 2540,
+ 11123, 6689, 2778,
+ 11123, 6689, 4200,
+ 11123, 6689, 4214,
+ 11123, 6689, 5190,
+ 11123, 6689, 6260,
+ 11123, 6689, 6722,
+ 11123, 6689, 7508,
+ 11123, 6689, 7694,
+ 11123, 7803, 11228,
+ 11123, 8405, 0,
+ 11123, 8405, 8,
+ 11123, 8405, 16,
+ 11123, 8405, 28,
+ 11123, 8405, 40,
+ 11123, 8405, 100,
+ 11123, 8405, 138,
+ 11123, 8405, 162,
+ 11123, 8405, 196,
+ 11123, 8405, 216,
+ 11123, 8405, 292,
+ 11123, 8405, 306,
+ 11123, 8405, 332,
+ 11123, 8405, 364,
+ 11123, 8405, 392,
+ 11123, 8405, 426,
+ 11123, 8405, 462,
+ 11123, 8405, 496,
+ 11123, 8405, 510,
+ 11123, 8405, 524,
+ 11123, 8405, 556,
+ 11123, 8405, 590,
+ 11123, 8405, 622,
+ 11123, 8405, 652,
+ 11123, 8405, 670,
+ 11123, 8405, 717, 4237, 0,
+ 11123, 8405, 717, 4237, 16,
+ 11123, 8405, 717, 4237, 70,
+ 11123, 8405, 717, 4237, 116,
+ 11123, 8405, 717, 4237, 138,
+ 11123, 8405, 717, 4237, 306,
+ 11123, 8405, 717, 4237, 462,
+ 11123, 8405, 717, 4237, 556,
+ 11123, 8405, 717, 4237, 670,
+ 11123, 8405, 717, 4237, 974,
+ 11123, 8405, 717, 4237, 2030,
+ 11123, 8405, 717, 4237, 2076,
+ 11123, 8405, 717, 4237, 2212,
+ 11123, 8405, 717, 4237, 2566,
+ 11123, 8405, 717, 4237, 2746,
+ 11123, 8405, 717, 4237, 3146,
+ 11123, 8405, 717, 4237, 4389, 40,
+ 11123, 8405, 717, 4237, 4389, 652,
+ 11123, 8405, 717, 4237, 5994,
+ 11123, 8405, 717, 4237, 7695, 7972,
+ 11123, 8405, 717, 4237, 7972,
+ 11123, 8405, 717, 4237, 8092,
+ 11123, 8405, 717, 4237, 9138,
+ 11123, 8405, 717, 4237, 9802,
+ 11123, 8405, 717, 4237, 9825, 2170,
+ 11123, 8405, 717, 4237, 9871, 2170,
+ 11123, 8405, 717, 4237, 10267, 9802,
+ 11123, 8405, 722,
+ 11123, 8405, 884,
+ 11123, 8405, 888,
+ 11123, 8405, 1338,
+ 11123, 8405, 1612,
+ 11123, 8405, 1770,
+ 11123, 8405, 2516,
+ 11123, 8405, 2732,
+ 11123, 8405, 3150,
+ 11123, 8405, 3186,
+ 11123, 8405, 5751, 8,
+ 11123, 8405, 5751, 16,
+ 11123, 8405, 5751, 40,
+ 11123, 8405, 5751, 138,
+ 11123, 8405, 5751, 196,
+ 11123, 8405, 5751, 216,
+ 11123, 8405, 5751, 236,
+ 11123, 8405, 5751, 290,
+ 11123, 8405, 5751, 292,
+ 11123, 8405, 5751, 306,
+ 11123, 8405, 5751, 462,
+ 11123, 8405, 5751, 556,
+ 11123, 8405, 5751, 590,
+ 11123, 8405, 5751, 670,
+ 11123, 8405, 5751, 722,
+ 11123, 8405, 5751, 884,
+ 11123, 8405, 5751, 1204,
+ 11123, 8405, 5751, 1338,
+ 11123, 8405, 5751, 2378,
+ 11123, 8405, 5751, 2516,
+ 11123, 8405, 5751, 2732,
+ 11123, 8405, 5751, 3146,
+ 11123, 8405, 5963, 8,
+ 11123, 8405, 5963, 16,
+ 11123, 8405, 5963, 28,
+ 11123, 8405, 5963, 40,
+ 11123, 8405, 5963, 100,
+ 11123, 8405, 5963, 138,
+ 11123, 8405, 5963, 216,
+ 11123, 8405, 5963, 292,
+ 11123, 8405, 5963, 306,
+ 11123, 8405, 5963, 364,
+ 11123, 8405, 5963, 426,
+ 11123, 8405, 5963, 462,
+ 11123, 8405, 5963, 496,
+ 11123, 8405, 5963, 556,
+ 11123, 8405, 5963, 590,
+ 11123, 8405, 5963, 622,
+ 11123, 8405, 5963, 652,
+ 11123, 8405, 5963, 717, 4237, 556,
+ 11123, 8405, 5963, 717, 4237, 3146,
+ 11123, 8405, 5963, 722,
+ 11123, 8405, 5963, 884,
+ 11123, 8405, 5963, 1080,
+ 11123, 8405, 5963, 1204,
+ 11123, 8405, 5963, 1338,
+ 11123, 8405, 5963, 1516,
+ 11123, 8405, 5963, 2046,
+ 11123, 8405, 5963, 2732,
+ 11123, 8405, 5963, 4895, 7803, 5758,
+ 11123, 8405, 8439, 16,
+ 11123, 8405, 8439, 196,
+ 11123, 8405, 8439, 306,
+ 11123, 8405, 8439, 510,
+ 11123, 8405, 8439, 717, 4237, 116,
+ 11123, 8405, 8439, 717, 4237, 556,
+ 11123, 8405, 8439, 717, 4237, 670,
+ 11123, 8405, 8439, 717, 4237, 792,
+ 11123, 8405, 8439, 717, 4237, 944,
+ 11123, 8405, 8439, 717, 4237, 996,
+ 11123, 8405, 8439, 717, 4237, 1260,
+ 11123, 8405, 8439, 717, 4237, 1512,
+ 11123, 8405, 8439, 717, 4237, 1770,
+ 11123, 8405, 8439, 717, 4237, 2030,
+ 11123, 8405, 8439, 717, 4237, 2566,
+ 11123, 8405, 8439, 717, 4237, 2746,
+ 11123, 8405, 8439, 717, 4237, 3146,
+ 11123, 8405, 8439, 717, 4237, 4016,
+ 11123, 8405, 8439, 3146,
+ 11123, 8439, 4223, 5836,
+ 11123, 8439, 6616,
+ 11123, 8516,
+ 11123, 10154,
+ 11163, 11228,
+ 11169, 7337, 5758,
+ 11172,
+ 11173, 6121, 2667, 2724,
+ 11191, 7390,
+ 11191, 10261, 10374,
+ 11195, 4926,
+ 11205, 8775, 1177, 8879, 10434,
+ 11205, 8775, 1177, 8881, 10434,
+ 11205, 8775, 1177, 8883, 10434,
+ 11205, 8775, 1177, 8885, 10434,
+ 11205, 8775, 1177, 8887, 10434,
+ 11205, 8775, 1177, 8889, 10434,
+ 11205, 8775, 1177, 8891, 10434,
+ 11205, 8775, 1177, 9305, 11114,
+ 11207, 4926,
+ 11217, 10265, 9610,
+ 11224,
+ 11242,
+ 11245, 6408,
+ 11245, 6409, 9537, 600,
+ 11245, 6409, 9537, 4848,
+ 11261, 2170,
+ 11261, 2540,
+ 11261, 2778,
+ 11261, 4200,
+ 11261, 4214,
+ 11261, 4849, 12114,
+ 11261, 5190,
+ 11261, 5445, 5758,
+ 11261, 6260,
+ 11261, 6722,
+ 11261, 7172,
+ 11261, 7443, 12114,
+ 11261, 7508,
+ 11261, 7694,
+ 11261, 8167, 5758,
+ 11263, 2724,
+ 11263, 6121, 10260,
+ 11263, 8004,
+ 11265, 5759, 9558,
+ 11265, 5759, 10408,
+ 11265, 5759, 11158,
+ 11265, 5759, 11160,
+ 11265, 6689, 2170,
+ 11265, 6689, 2540,
+ 11265, 6689, 2778,
+ 11265, 6689, 4200,
+ 11265, 6689, 4214,
+ 11265, 6689, 5190,
+ 11265, 6689, 6260,
+ 11265, 6689, 6722,
+ 11265, 6689, 7508,
+ 11265, 6689, 7694,
+ 11265, 7803, 5759, 9560,
+ 11265, 7803, 5759, 9566,
+ 11265, 7803, 5759, 10402,
+ 11265, 7803, 5759, 10404,
+ 11265, 7803, 5759, 11710,
+ 11265, 7803, 5759, 11712,
+ 11265, 8405, 0,
+ 11265, 8405, 8,
+ 11265, 8405, 16,
+ 11265, 8405, 28,
+ 11265, 8405, 40,
+ 11265, 8405, 66,
+ 11265, 8405, 100,
+ 11265, 8405, 116,
+ 11265, 8405, 138,
+ 11265, 8405, 188,
+ 11265, 8405, 196,
+ 11265, 8405, 216,
+ 11265, 8405, 236,
+ 11265, 8405, 292,
+ 11265, 8405, 306,
+ 11265, 8405, 332,
+ 11265, 8405, 364,
+ 11265, 8405, 392,
+ 11265, 8405, 462,
+ 11265, 8405, 496,
+ 11265, 8405, 510,
+ 11265, 8405, 524,
+ 11265, 8405, 556,
+ 11265, 8405, 610,
+ 11265, 8405, 622,
+ 11265, 8405, 638,
+ 11265, 8405, 652,
+ 11265, 8405, 670,
+ 11265, 8405, 1612,
+ 11265, 8405, 2030,
+ 11265, 8405, 2126,
+ 11265, 8405, 2610,
+ 11265, 10775, 5759, 9564,
+ 11265, 10775, 5759, 10406,
+ 11265, 10775, 5759, 11154,
+ 11355, 5758,
+ 11355, 10303, 5758,
+ 11355, 10472,
+ 11357, 1177, 439, 2681, 7790,
+ 11357, 1177, 1550,
+ 11357, 1177, 1749, 445, 7180,
+ 11357, 1177, 3803, 11754,
+ 11357, 1177, 4150,
+ 11357, 1177, 4223, 8056,
+ 11357, 1177, 6702,
+ 11357, 1177, 6865, 569, 4944,
+ 11357, 1177, 6994,
+ 11357, 1177, 7174,
+ 11357, 1177, 7428,
+ 11357, 1177, 7644,
+ 11357, 1177, 7770,
+ 11357, 1177, 7810,
+ 11357, 1177, 7952,
+ 11357, 1177, 8036,
+ 11357, 1177, 8042,
+ 11357, 1177, 8065, 7186,
+ 11357, 1177, 8156,
+ 11357, 1177, 8222,
+ 11357, 1177, 8394,
+ 11357, 1177, 8618,
+ 11357, 1177, 8650,
+ 11357, 1177, 8976,
+ 11357, 1177, 9026,
+ 11357, 1177, 9100,
+ 11357, 1177, 9110,
+ 11357, 1177, 9168,
+ 11357, 1177, 9276,
+ 11357, 1177, 9341, 3696,
+ 11357, 1177, 9395, 7592,
+ 11357, 1177, 9402,
+ 11357, 1177, 9460,
+ 11357, 1177, 9466,
+ 11357, 1177, 9550,
+ 11357, 1177, 9574,
+ 11357, 1177, 9626,
+ 11357, 1177, 9696,
+ 11357, 1177, 9832,
+ 11357, 1177, 10168,
+ 11357, 1177, 10210,
+ 11357, 1177, 10232,
+ 11357, 1177, 10252,
+ 11357, 1177, 10486,
+ 11357, 1177, 10540,
+ 11357, 1177, 10550,
+ 11357, 1177, 10673, 445, 9836,
+ 11357, 1177, 10747, 2186,
+ 11357, 1177, 10764,
+ 11357, 1177, 10776,
+ 11357, 1177, 10792,
+ 11357, 1177, 10800,
+ 11357, 1177, 10972,
+ 11357, 1177, 10998,
+ 11357, 1177, 11002,
+ 11357, 1177, 11012,
+ 11357, 1177, 11013, 274,
+ 11357, 1177, 11024,
+ 11357, 1177, 11086,
+ 11357, 1177, 11210,
+ 11357, 1177, 11234,
+ 11357, 1177, 11454,
+ 11357, 1177, 11456,
+ 11357, 1177, 11462,
+ 11357, 1177, 11486,
+ 11357, 1177, 11610,
+ 11357, 1177, 11622,
+ 11357, 1177, 11702,
+ 11357, 1177, 11752,
+ 11357, 1177, 11888,
+ 11357, 1177, 11916,
+ 11357, 1177, 12012,
+ 11357, 1177, 12026,
+ 11357, 1177, 12118,
+ 11357, 1177, 12392,
+ 11357, 1177, 12430,
+ 11357, 1177, 12434,
+ 11357, 1177, 12436,
+ 11357, 1177, 12898,
+ 11357, 1177, 12923, 445, 11484,
+ 11357, 1177, 12936,
+ 11360,
+ 11387, 11205, 8774,
+ 11389, 12117, 8774,
+ 11391, 11770,
+ 11391, 11772,
+ 11391, 11774,
+ 11391, 11776,
+ 11391, 11778,
+ 11391, 11780,
+ 11391, 11782,
+ 11391, 11784,
+ 11391, 11786,
+ 11391, 12160,
+ 11391, 12162,
+ 11391, 12164,
+ 11391, 12166,
+ 11391, 12168,
+ 11391, 12170,
+ 11391, 12172,
+ 11391, 12174,
+ 11391, 12176,
+ 11391, 12178,
+ 11391, 12180,
+ 11391, 12182,
+ 11391, 12184,
+ 11391, 12186,
+ 11391, 12188,
+ 11391, 12190,
+ 11391, 12192,
+ 11391, 12194,
+ 11391, 12196,
+ 11391, 12198,
+ 11391, 12200,
+ 11391, 12202,
+ 11391, 12204,
+ 11391, 12206,
+ 11391, 12208,
+ 11391, 12210,
+ 11391, 12212,
+ 11391, 12214,
+ 11391, 12216,
+ 11391, 12218,
+ 11391, 12220,
+ 11391, 12222,
+ 11391, 12224,
+ 11391, 12226,
+ 11391, 12228,
+ 11391, 12230,
+ 11391, 12232,
+ 11391, 12234,
+ 11391, 12236,
+ 11391, 12238,
+ 11391, 12240,
+ 11391, 12242,
+ 11391, 12244,
+ 11391, 12246,
+ 11391, 12248,
+ 11391, 12250,
+ 11391, 12252,
+ 11391, 12254,
+ 11391, 12256,
+ 11391, 12258,
+ 11391, 12260,
+ 11391, 12262,
+ 11391, 12264,
+ 11391, 12266,
+ 11391, 12268,
+ 11391, 12270,
+ 11391, 12272,
+ 11391, 12274,
+ 11391, 12276,
+ 11391, 12278,
+ 11391, 12280,
+ 11391, 12282,
+ 11391, 12284,
+ 11391, 12286,
+ 11391, 12288,
+ 11391, 12290,
+ 11391, 12292,
+ 11391, 12294,
+ 11391, 12296,
+ 11391, 12298,
+ 11391, 12300,
+ 11391, 12302,
+ 11391, 12304,
+ 11391, 12306,
+ 11391, 12308,
+ 11391, 12310,
+ 11391, 12312,
+ 11391, 12314,
+ 11391, 12316,
+ 11391, 12318,
+ 11391, 12320,
+ 11391, 12322,
+ 11391, 12324,
+ 11391, 12326,
+ 11391, 12328,
+ 11391, 12330,
+ 11391, 12332,
+ 11391, 12334,
+ 11391, 12336,
+ 11391, 12338,
+ 11391, 12542,
+ 11391, 12544,
+ 11391, 12546,
+ 11391, 12548,
+ 11391, 12550,
+ 11391, 12552,
+ 11391, 12554,
+ 11391, 12556,
+ 11391, 12558,
+ 11391, 12560,
+ 11391, 12562,
+ 11391, 12564,
+ 11391, 12566,
+ 11391, 12568,
+ 11391, 12570,
+ 11391, 12572,
+ 11391, 12574,
+ 11391, 12576,
+ 11391, 12578,
+ 11391, 12580,
+ 11391, 12582,
+ 11391, 12584,
+ 11391, 12586,
+ 11391, 12588,
+ 11391, 12590,
+ 11391, 12592,
+ 11391, 12594,
+ 11391, 12596,
+ 11391, 12598,
+ 11391, 12600,
+ 11391, 12602,
+ 11391, 12604,
+ 11391, 12606,
+ 11391, 12608,
+ 11391, 12610,
+ 11391, 12612,
+ 11391, 12614,
+ 11391, 12616,
+ 11391, 12618,
+ 11391, 12620,
+ 11391, 12622,
+ 11391, 12624,
+ 11391, 12626,
+ 11391, 12628,
+ 11391, 12630,
+ 11391, 12632,
+ 11391, 12634,
+ 11391, 12636,
+ 11391, 12638,
+ 11391, 12640,
+ 11391, 12642,
+ 11391, 12644,
+ 11391, 12646,
+ 11391, 12648,
+ 11391, 12650,
+ 11391, 12652,
+ 11391, 12654,
+ 11391, 12656,
+ 11391, 12658,
+ 11391, 12660,
+ 11391, 12662,
+ 11391, 12664,
+ 11391, 12666,
+ 11391, 12668,
+ 11391, 12670,
+ 11391, 12672,
+ 11391, 12674,
+ 11391, 12676,
+ 11391, 12678,
+ 11391, 12680,
+ 11391, 12682,
+ 11391, 12684,
+ 11391, 12686,
+ 11391, 12688,
+ 11391, 12690,
+ 11391, 12692,
+ 11391, 12694,
+ 11391, 12696,
+ 11391, 12698,
+ 11391, 12700,
+ 11391, 12702,
+ 11391, 12704,
+ 11391, 12706,
+ 11391, 12708,
+ 11391, 12710,
+ 11391, 12712,
+ 11391, 12714,
+ 11391, 12716,
+ 11391, 12718,
+ 11391, 12720,
+ 11391, 12722,
+ 11391, 12724,
+ 11391, 12726,
+ 11391, 12728,
+ 11391, 12730,
+ 11391, 12732,
+ 11391, 12734,
+ 11391, 12736,
+ 11391, 12738,
+ 11391, 12740,
+ 11391, 12742,
+ 11391, 12744,
+ 11391, 12746,
+ 11391, 12748,
+ 11391, 12750,
+ 11391, 12752,
+ 11391, 12754,
+ 11391, 12756,
+ 11391, 12758,
+ 11391, 12760,
+ 11391, 12762,
+ 11391, 12764,
+ 11391, 12766,
+ 11391, 12768,
+ 11391, 12770,
+ 11391, 12772,
+ 11391, 12774,
+ 11391, 12776,
+ 11391, 12778,
+ 11391, 12780,
+ 11391, 12782,
+ 11391, 12784,
+ 11391, 12786,
+ 11391, 12788,
+ 11391, 12790,
+ 11391, 12792,
+ 11391, 12794,
+ 11391, 12796,
+ 11391, 12798,
+ 11391, 12800,
+ 11391, 12802,
+ 11391, 12804,
+ 11391, 12806,
+ 11391, 12808,
+ 11391, 12810,
+ 11391, 12812,
+ 11391, 12814,
+ 11391, 12816,
+ 11391, 12818,
+ 11391, 12820,
+ 11391, 12822,
+ 11391, 12824,
+ 11391, 12826,
+ 11391, 12828,
+ 11391, 12830,
+ 11391, 12832,
+ 11391, 12834,
+ 11391, 12836,
+ 11391, 12838,
+ 11391, 12840,
+ 11391, 12842,
+ 11391, 12844,
+ 11391, 12846,
+ 11391, 12848,
+ 11391, 12850,
+ 11391, 12852,
+ 11391, 12854,
+ 11424,
+ 11427, 2681, 7104,
+ 11445, 1809, 4876,
+ 11445, 10388,
+ 11449, 7908,
+ 11451, 90,
+ 11451, 7173, 5758,
+ 11452,
+ 11465, 11385, 8774,
+ 11475, 5238,
+ 11477, 436,
+ 11477, 5759, 4423, 9721, 1044,
+ 11477, 5759, 7282,
+ 11477, 5759, 8916,
+ 11477, 5759, 9824,
+ 11477, 5759, 9870,
+ 11477, 5759, 9904,
+ 11477, 5759, 11900,
+ 11477, 6379, 7908,
+ 11477, 6646,
+ 11477, 6689, 2170,
+ 11477, 6689, 2540,
+ 11477, 6689, 2778,
+ 11477, 6689, 4200,
+ 11477, 6689, 4214,
+ 11477, 6689, 5190,
+ 11477, 6689, 6260,
+ 11477, 6689, 6722,
+ 11477, 6689, 7508,
+ 11477, 6689, 7694,
+ 11477, 6875, 7908,
+ 11477, 7803, 5759, 8,
+ 11477, 7803, 5759, 16,
+ 11477, 7803, 5759, 28,
+ 11477, 7803, 5759, 40,
+ 11477, 7803, 5759, 58,
+ 11477, 7803, 5759, 72,
+ 11477, 7803, 5759, 92,
+ 11477, 7803, 5759, 266,
+ 11477, 7803, 5759, 606,
+ 11477, 7803, 5759, 7551, 8,
+ 11477, 7803, 5759, 7551, 28,
+ 11477, 7803, 5759, 8031, 8,
+ 11477, 7803, 5759, 8031, 28,
+ 11477, 7803, 5759, 9827, 22,
+ 11477, 7803, 5759, 9827, 34,
+ 11477, 7803, 5759, 9827, 344,
+ 11477, 7803, 5759, 9827, 518,
+ 11477, 8153, 6646,
+ 11477, 8405, 0,
+ 11477, 8405, 8,
+ 11477, 8405, 16,
+ 11477, 8405, 28,
+ 11477, 8405, 40,
+ 11477, 8405, 58,
+ 11477, 8405, 72,
+ 11477, 8405, 92,
+ 11477, 8405, 100,
+ 11477, 8405, 116,
+ 11477, 8405, 138,
+ 11477, 8405, 196,
+ 11477, 8405, 216,
+ 11477, 8405, 236,
+ 11477, 8405, 266,
+ 11477, 8405, 292,
+ 11477, 8405, 306,
+ 11477, 8405, 332,
+ 11477, 8405, 364,
+ 11477, 8405, 392,
+ 11477, 8405, 462,
+ 11477, 8405, 496,
+ 11477, 8405, 510,
+ 11477, 8405, 524,
+ 11477, 8405, 556,
+ 11477, 8405, 606,
+ 11477, 8405, 610,
+ 11477, 8405, 652,
+ 11477, 8405, 670,
+ 11477, 8405, 766,
+ 11477, 8405, 792,
+ 11477, 8405, 884,
+ 11477, 8405, 974,
+ 11477, 8405, 996,
+ 11477, 8405, 1250,
+ 11477, 8405, 1260,
+ 11477, 8405, 1512,
+ 11477, 8405, 1528,
+ 11477, 8405, 1612,
+ 11477, 8405, 1796,
+ 11477, 8405, 2030,
+ 11477, 8405, 2076,
+ 11477, 8405, 2126,
+ 11477, 8405, 2212,
+ 11477, 8405, 2410,
+ 11477, 8405, 2438,
+ 11477, 8405, 2516,
+ 11477, 8405, 2566,
+ 11477, 8405, 2678,
+ 11477, 8405, 2746,
+ 11477, 8405, 3110,
+ 11477, 8405, 4008,
+ 11477, 8405, 4016,
+ 11477, 8405, 4320,
+ 11477, 8405, 4748,
+ 11477, 8405, 4888,
+ 11477, 8405, 5234,
+ 11477, 8405, 5994,
+ 11477, 8405, 6658,
+ 11477, 8405, 7551, 0,
+ 11477, 8405, 7551, 8,
+ 11477, 8405, 7551, 28,
+ 11477, 8405, 8031, 0,
+ 11477, 8405, 8031, 8,
+ 11477, 8405, 8031, 28,
+ 11477, 8405, 9313, 5836,
+ 11477, 8405, 9827, 22,
+ 11477, 8405, 9827, 34,
+ 11477, 8405, 9827, 344,
+ 11477, 8405, 9827, 518,
+ 11477, 8755, 5759, 8892,
+ 11477, 8755, 5759, 9868,
+ 11477, 12391, 5758,
+ 11479, 9042,
+ 11605, 12492,
+ 11621, 568,
+ 11621, 6121, 4215, 4113, 6376,
+ 11641, 7593, 8405, 16,
+ 11641, 7593, 8405, 468,
+ 11641, 7593, 8405, 660,
+ 11641, 7593, 8405, 664,
+ 11641, 7593, 8405, 746,
+ 11641, 7593, 8405, 807, 3096,
+ 11641, 7593, 8405, 2176,
+ 11641, 7593, 8405, 2184,
+ 11641, 7593, 8405, 2516,
+ 11641, 7593, 8405, 2736,
+ 11641, 7593, 8405, 2808,
+ 11641, 7593, 8405, 3810,
+ 11641, 7593, 8405, 4198,
+ 11641, 7593, 8405, 4406,
+ 11641, 7593, 8405, 4626,
+ 11641, 7593, 8405, 4712,
+ 11641, 7593, 8405, 5718,
+ 11641, 7593, 8405, 6076,
+ 11641, 7593, 8405, 6188,
+ 11641, 7593, 8405, 6198,
+ 11641, 7593, 8405, 6200,
+ 11641, 7593, 8405, 6698,
+ 11641, 7593, 8405, 6710,
+ 11641, 7593, 8405, 6810,
+ 11641, 7593, 8405, 7210,
+ 11641, 7593, 8405, 7444,
+ 11641, 7593, 8405, 7590,
+ 11641, 7593, 8405, 7593, 3096,
+ 11641, 7593, 8405, 7593, 3097, 6121, 5878,
+ 11641, 7593, 8405, 7856,
+ 11641, 7593, 8405, 8050,
+ 11641, 7593, 8405, 8124,
+ 11641, 7593, 8405, 8606,
+ 11641, 7593, 8405, 8872,
+ 11641, 7593, 8405, 8958,
+ 11641, 7593, 8405, 9310,
+ 11641, 7593, 8405, 9363, 4626,
+ 11641, 7593, 8405, 9371, 807, 3096,
+ 11641, 7593, 8405, 9371, 7593, 3096,
+ 11641, 7593, 8405, 9372,
+ 11641, 7593, 8405, 9434,
+ 11641, 7593, 8405, 9486,
+ 11641, 7593, 8405, 9686,
+ 11641, 7593, 8405, 9727, 236,
+ 11641, 7593, 8405, 9850,
+ 11641, 7593, 8405, 10299, 9486,
+ 11641, 7593, 8405, 11867, 0,
+ 11641, 9063, 8405, 16,
+ 11641, 9063, 8405, 468,
+ 11641, 9063, 8405, 660,
+ 11641, 9063, 8405, 664,
+ 11641, 9063, 8405, 746,
+ 11641, 9063, 8405, 807, 3096,
+ 11641, 9063, 8405, 2176,
+ 11641, 9063, 8405, 2184,
+ 11641, 9063, 8405, 2516,
+ 11641, 9063, 8405, 2736,
+ 11641, 9063, 8405, 2808,
+ 11641, 9063, 8405, 3810,
+ 11641, 9063, 8405, 4198,
+ 11641, 9063, 8405, 4406,
+ 11641, 9063, 8405, 4626,
+ 11641, 9063, 8405, 4712,
+ 11641, 9063, 8405, 5718,
+ 11641, 9063, 8405, 6076,
+ 11641, 9063, 8405, 6188,
+ 11641, 9063, 8405, 6198,
+ 11641, 9063, 8405, 6200,
+ 11641, 9063, 8405, 6698,
+ 11641, 9063, 8405, 6710,
+ 11641, 9063, 8405, 6810,
+ 11641, 9063, 8405, 7210,
+ 11641, 9063, 8405, 7444,
+ 11641, 9063, 8405, 7590,
+ 11641, 9063, 8405, 7593, 3096,
+ 11641, 9063, 8405, 7593, 3097, 6121, 5878,
+ 11641, 9063, 8405, 7856,
+ 11641, 9063, 8405, 8050,
+ 11641, 9063, 8405, 8124,
+ 11641, 9063, 8405, 8606,
+ 11641, 9063, 8405, 8872,
+ 11641, 9063, 8405, 8958,
+ 11641, 9063, 8405, 9310,
+ 11641, 9063, 8405, 9363, 4626,
+ 11641, 9063, 8405, 9371, 807, 3096,
+ 11641, 9063, 8405, 9371, 7593, 3096,
+ 11641, 9063, 8405, 9372,
+ 11641, 9063, 8405, 9434,
+ 11641, 9063, 8405, 9486,
+ 11641, 9063, 8405, 9686,
+ 11641, 9063, 8405, 9727, 236,
+ 11641, 9063, 8405, 9850,
+ 11641, 9063, 8405, 10299, 9486,
+ 11641, 9063, 8405, 11867, 0,
+ 11646,
+ 11649, 760,
+ 11649, 4877, 10982,
+ 11649, 4923, 6121, 8759, 5758,
+ 11649, 5643, 8412,
+ 11649, 5643, 8414,
+ 11649, 5643, 8416,
+ 11649, 5643, 8418,
+ 11649, 6505, 9338,
+ 11649, 10154,
+ 11651, 8774,
+ 11661, 10256,
+ 11667, 5759, 761, 6376,
+ 11667, 5759, 1045, 6490,
+ 11667, 5759, 6548,
+ 11667, 5759, 8153, 5551, 6490,
+ 11667, 5759, 9824,
+ 11667, 5759, 9870,
+ 11667, 6689, 2170,
+ 11667, 6689, 2778,
+ 11667, 6689, 4214,
+ 11667, 6689, 7694,
+ 11667, 7803, 5759, 8,
+ 11667, 7803, 5759, 16,
+ 11667, 7803, 5759, 28,
+ 11667, 7803, 5759, 40,
+ 11667, 7803, 5759, 9827, 34,
+ 11667, 7803, 8399, 4926,
+ 11667, 8405, 0,
+ 11667, 8405, 100,
+ 11667, 8405, 116,
+ 11667, 8405, 138,
+ 11667, 8405, 216,
+ 11667, 8405, 236,
+ 11667, 8405, 292,
+ 11667, 8405, 306,
+ 11667, 8405, 332,
+ 11667, 8405, 364,
+ 11667, 8405, 392,
+ 11667, 8405, 462,
+ 11667, 8405, 510,
+ 11667, 8405, 524,
+ 11667, 8405, 556,
+ 11667, 8405, 610,
+ 11667, 8405, 652,
+ 11667, 8405, 670,
+ 11667, 8405, 792,
+ 11667, 8405, 884,
+ 11667, 8405, 974,
+ 11667, 8405, 996,
+ 11667, 8405, 1260,
+ 11667, 8405, 1612,
+ 11667, 8405, 1642,
+ 11667, 8405, 2076,
+ 11667, 8405, 2126,
+ 11667, 8405, 2212,
+ 11667, 8405, 2516,
+ 11667, 8405, 2566,
+ 11667, 8405, 2678,
+ 11667, 8405, 2746,
+ 11667, 8405, 4016,
+ 11667, 8405, 5994,
+ 11667, 8405, 7750,
+ 11667, 8525, 2171, 9344,
+ 11667, 8525, 2171, 10624,
+ 11667, 8525, 2670,
+ 11667, 8525, 8876,
+ 11667, 8916,
+ 11667, 12133, 1044,
+ 11667, 12133, 6646,
+ 11667, 12133, 7108,
+ 11667, 12133, 7114,
+ 11667, 12133, 7593, 8056,
+ 11667, 12133, 8056,
+ 11667, 12133, 8153, 6646,
+ 11667, 12133, 9965, 760,
+ 11667, 12133, 10318,
+ 11687, 8774,
+ 11700,
+ 11702,
+ 11725, 8153, 12132,
+ 11725, 8717, 12132,
+ 11727, 6129, 11228,
+ 11727, 8405, 238,
+ 11727, 8405, 468,
+ 11727, 8405, 710,
+ 11727, 8405, 714,
+ 11727, 8405, 788,
+ 11727, 8405, 1366,
+ 11727, 8405, 1578,
+ 11727, 8405, 1892,
+ 11727, 8405, 2110,
+ 11727, 8405, 2318,
+ 11727, 8405, 2658,
+ 11727, 8405, 2674,
+ 11727, 8405, 2916,
+ 11727, 8405, 3080,
+ 11727, 8405, 3126,
+ 11727, 8405, 4058,
+ 11727, 8405, 4238,
+ 11727, 8405, 4832,
+ 11727, 8405, 5568,
+ 11727, 8405, 5624,
+ 11727, 8405, 5652,
+ 11727, 8405, 5698,
+ 11727, 8525, 2170,
+ 11727, 8525, 2171, 9344,
+ 11727, 8525, 2670,
+ 11727, 8525, 8876,
+ 11731, 5758,
+ 11736,
+ 11740,
+ 11745, 10261, 10374,
+ 11747, 6741, 568,
+ 11749, 5758,
+ 11763, 731, 10763, 6434,
+ 11765, 2779, 8289, 6434,
+ 11765, 6105, 6434,
+ 11765, 6434,
+ 11765, 6435, 569, 760,
+ 11765, 6435, 569, 6505, 9158,
+ 11765, 6435, 4221, 760,
+ 11765, 6435, 4221, 761, 569, 6505, 9158,
+ 11765, 6435, 5387, 11097, 6434,
+ 11765, 6435, 6121, 2697, 9810,
+ 11765, 6435, 6121, 2697, 10958,
+ 11765, 6435, 6121, 4530,
+ 11765, 6435, 6121, 4896,
+ 11765, 6435, 6121, 5445, 6490,
+ 11765, 6435, 6121, 5878,
+ 11765, 6435, 6121, 5879, 6121, 8153, 10677, 8758,
+ 11765, 6435, 6121, 5879, 6121, 10677, 8758,
+ 11765, 6435, 6121, 8077, 10958,
+ 11765, 6435, 6121, 8151, 5832,
+ 11765, 6435, 6121, 8153, 10677, 8758,
+ 11765, 6435, 6121, 8758,
+ 11765, 6435, 6121, 10677, 8758,
+ 11765, 6435, 6377, 7551, 11097, 6434,
+ 11765, 6435, 6377, 7709, 10374,
+ 11765, 6435, 6377, 7919, 6741, 568,
+ 11765, 6435, 6377, 9633, 7709, 10374,
+ 11765, 6435, 6377, 9633, 7919, 6741, 568,
+ 11765, 6435, 9785, 46,
+ 11765, 6435, 9785, 10578,
+ 11765, 6435, 9785, 12472,
+ 11765, 7821, 6434,
+ 11765, 7821, 6435, 4221, 6102,
+ 11765, 8097, 6434,
+ 11765, 8153, 3993, 6434,
+ 11765, 8153, 6434,
+ 11765, 8153, 6435, 4221, 760,
+ 11765, 8153, 6435, 6121, 8758,
+ 11765, 8153, 6435, 6121, 10677, 8758,
+ 11765, 8153, 11430,
+ 11765, 8561, 7944,
+ 11765, 8849, 3993, 6434,
+ 11765, 8849, 6434,
+ 11765, 9327, 5387, 11097, 9326,
+ 11765, 9327, 6121, 3713, 601, 569, 760,
+ 11765, 9327, 6121, 3713, 601, 4221, 760,
+ 11765, 9327, 6121, 3713, 601, 6377, 4895, 3992,
+ 11765, 9327, 6121, 3713, 601, 6377, 11097, 9327, 6121, 3713, 600,
+ 11765, 9327, 6121, 3713, 601, 6377, 11765, 9327, 6121, 3713, 4116,
+ 11765, 9327, 6121, 3713, 4117, 569, 760,
+ 11765, 9327, 6121, 3713, 4117, 4221, 760,
+ 11765, 9327, 6121, 3713, 4117, 6377, 11097, 9327, 6121, 3713, 4116,
+ 11765, 9327, 6121, 3713, 4117, 6491, 4895, 3992,
+ 11765, 9327, 6121, 3713, 9810,
+ 11765, 9327, 6121, 3713, 10958,
+ 11765, 10531, 6434,
+ 11765, 11191, 6434,
+ 11765, 11430,
+ 11765, 11875, 6435, 4221, 760,
+ 11765, 11875, 6435, 6121, 5878,
+ 11765, 11875, 6435, 6121, 5879, 6121, 8153, 10677, 8758,
+ 11765, 11875, 6435, 6121, 5879, 6121, 10677, 8758,
+ 11765, 11875, 6435, 6121, 8153, 10677, 8758,
+ 11765, 11875, 6435, 6121, 10677, 8758,
+ 11765, 11875, 8849, 3993, 6434,
+ 11765, 12103, 6434,
+ 11769, 5759, 8916,
+ 11769, 5759, 9824,
+ 11769, 5759, 9870,
+ 11769, 6646,
+ 11769, 6689, 2170,
+ 11769, 6689, 2540,
+ 11769, 6689, 2778,
+ 11769, 6689, 4200,
+ 11769, 6689, 4214,
+ 11769, 6689, 5190,
+ 11769, 6689, 6260,
+ 11769, 6689, 6722,
+ 11769, 6689, 7508,
+ 11769, 6689, 7694,
+ 11769, 7803, 5759, 8,
+ 11769, 7803, 5759, 16,
+ 11769, 7803, 5759, 28,
+ 11769, 7803, 5759, 40,
+ 11769, 7803, 5759, 58,
+ 11769, 7803, 5759, 72,
+ 11769, 7803, 5759, 92,
+ 11769, 7803, 5759, 162,
+ 11769, 7803, 5759, 266,
+ 11769, 7803, 5759, 440,
+ 11769, 7803, 5759, 606,
+ 11769, 7803, 5759, 9827, 22,
+ 11769, 7803, 5759, 9827, 34,
+ 11769, 7803, 5759, 9827, 344,
+ 11769, 7803, 5759, 9827, 518,
+ 11769, 8153, 6646,
+ 11769, 8405, 0,
+ 11769, 8405, 8,
+ 11769, 8405, 16,
+ 11769, 8405, 28,
+ 11769, 8405, 40,
+ 11769, 8405, 58,
+ 11769, 8405, 72,
+ 11769, 8405, 92,
+ 11769, 8405, 100,
+ 11769, 8405, 116,
+ 11769, 8405, 138,
+ 11769, 8405, 162,
+ 11769, 8405, 216,
+ 11769, 8405, 236,
+ 11769, 8405, 266,
+ 11769, 8405, 292,
+ 11769, 8405, 306,
+ 11769, 8405, 332,
+ 11769, 8405, 364,
+ 11769, 8405, 392,
+ 11769, 8405, 440,
+ 11769, 8405, 462,
+ 11769, 8405, 510,
+ 11769, 8405, 524,
+ 11769, 8405, 556,
+ 11769, 8405, 606,
+ 11769, 8405, 610,
+ 11769, 8405, 652,
+ 11769, 8405, 792,
+ 11769, 8405, 884,
+ 11769, 8405, 974,
+ 11769, 8405, 996,
+ 11769, 8405, 1260,
+ 11769, 8405, 1512,
+ 11769, 8405, 1612,
+ 11769, 8405, 1796,
+ 11769, 8405, 2030,
+ 11769, 8405, 2076,
+ 11769, 8405, 2126,
+ 11769, 8405, 2212,
+ 11769, 8405, 2516,
+ 11769, 8405, 2566,
+ 11769, 8405, 2678,
+ 11769, 8405, 2746,
+ 11769, 8405, 4016,
+ 11769, 8405, 5994,
+ 11769, 8405, 9827, 22,
+ 11769, 8405, 9827, 34,
+ 11769, 8405, 9827, 344,
+ 11769, 8405, 9827, 518,
+ 11769, 10775, 5759, 6888,
+ 11793, 9611, 6121, 8005, 8064,
+ 11801, 5385, 826,
+ 11819, 7608,
+ 11859, 8022,
+ 11881, 8774,
+ 11893, 1611, 8774,
+ 11899, 10513, 7821, 11765, 6434,
+ 11905, 10212,
+ 11909, 8774,
+ 11910,
+ 11921, 568,
+ 11922,
+ 11924,
+ 12007, 6741, 569, 445, 11098,
+ 12007, 6741, 569, 445, 12472,
+ 12007, 9705, 6741, 569, 445, 11098,
+ 12007, 9705, 6741, 569, 445, 12472,
+ 12007, 9705, 11099, 445, 6741, 568,
+ 12007, 9705, 12473, 445, 6741, 568,
+ 12015, 568,
+ 12017, 4926,
+ 12017, 10469, 4926,
+ 12021, 7608,
+ 12041, 7382,
+ 12043, 4223, 5836,
+ 12043, 4389, 4193, 7608,
+ 12043, 6616,
+ 12043, 7097, 5965, 4926,
+ 12043, 7608,
+ 12043, 8525, 6260,
+ 12043, 8649, 5965, 4926,
+ 12043, 9099, 4926,
+ 12043, 10161, 5965, 4926,
+ 12043, 10799, 5965, 4926,
+ 12043, 11067, 4926,
+ 12043, 11353, 4877, 4183, 11229, 8774,
+ 12043, 11353, 8775, 1177, 973, 2170,
+ 12043, 11353, 8775, 1177, 973, 2540,
+ 12043, 11353, 8775, 1177, 973, 2670,
+ 12043, 11353, 8775, 1177, 973, 2778,
+ 12043, 11353, 8775, 1177, 973, 4200,
+ 12043, 11353, 8775, 1177, 973, 4214,
+ 12043, 11353, 8775, 1177, 973, 5190,
+ 12043, 11353, 8775, 1177, 973, 6722,
+ 12043, 11353, 8775, 1177, 973, 7508,
+ 12043, 11353, 8775, 1177, 973, 7694,
+ 12043, 11353, 8775, 1177, 973, 8162,
+ 12043, 11353, 8775, 1177, 973, 8820,
+ 12043, 11353, 8775, 1177, 973, 8874,
+ 12043, 11353, 8775, 1177, 973, 8876,
+ 12043, 11353, 8775, 1177, 973, 9286,
+ 12043, 11353, 8775, 1177, 973, 9700,
+ 12043, 11353, 8775, 1177, 973, 10150,
+ 12043, 11353, 8775, 1177, 973, 10200,
+ 12043, 11353, 8775, 1177, 973, 10360,
+ 12043, 11353, 8775, 1177, 973, 10622,
+ 12043, 11353, 8775, 1177, 973, 11232,
+ 12043, 11353, 8775, 1177, 973, 11854,
+ 12043, 11353, 8775, 1177, 973, 11868,
+ 12043, 11353, 8775, 1177, 973, 11870,
+ 12043, 11353, 8775, 1177, 973, 11872,
+ 12043, 11353, 8775, 1177, 973, 12374,
+ 12043, 11353, 8775, 1177, 973, 12376,
+ 12043, 11353, 8775, 1177, 973, 12378,
+ 12043, 11353, 8775, 1177, 973, 12888,
+ 12043, 11353, 8775, 1177, 973, 12890,
+ 12043, 11353, 8775, 1177, 973, 12892,
+ 12043, 11353, 8775, 1177, 1870,
+ 12043, 11353, 8775, 1177, 4541, 2170,
+ 12043, 11353, 8775, 1177, 4541, 2540,
+ 12043, 11353, 8775, 1177, 4541, 2670,
+ 12043, 11353, 8775, 1177, 4541, 2778,
+ 12043, 11353, 8775, 1177, 4541, 4200,
+ 12043, 11353, 8775, 1177, 4541, 4214,
+ 12043, 11353, 8775, 1177, 4541, 5190,
+ 12043, 11353, 8775, 1177, 4541, 6260,
+ 12043, 11353, 8775, 1177, 4541, 6722,
+ 12043, 11353, 8775, 1177, 4541, 7508,
+ 12043, 11353, 8775, 1177, 4541, 7694,
+ 12043, 11353, 8775, 1177, 4541, 8162,
+ 12043, 11353, 8775, 1177, 4541, 8874,
+ 12043, 11353, 8775, 1177, 4541, 8876,
+ 12043, 11353, 8775, 1177, 4541, 9286,
+ 12043, 11353, 8775, 1177, 4541, 9700,
+ 12043, 11353, 8775, 1177, 4541, 10150,
+ 12043, 11353, 8775, 1177, 4541, 10200,
+ 12043, 11353, 8775, 1177, 4541, 10360,
+ 12043, 11353, 8775, 1177, 4541, 10622,
+ 12043, 11353, 8775, 1177, 4541, 11232,
+ 12043, 11353, 8775, 1177, 4541, 11868,
+ 12043, 11353, 8775, 1177, 4541, 11872,
+ 12043, 11353, 8775, 1177, 4541, 12376,
+ 12043, 11353, 8775, 1177, 4541, 12892,
+ 12043, 11353, 8775, 1177, 4682,
+ 12043, 11353, 8775, 1177, 4684,
+ 12043, 11353, 8775, 1177, 6420,
+ 12043, 11353, 8775, 1177, 7136,
+ 12043, 11353, 8775, 1177, 7958,
+ 12043, 11353, 8775, 1177, 9374,
+ 12043, 11353, 8775, 1177, 9528,
+ 12043, 11353, 8775, 1177, 9990,
+ 12043, 11353, 8775, 1177, 10176,
+ 12043, 11353, 8775, 1177, 10368,
+ 12043, 11353, 8775, 1177, 11230,
+ 12043, 11391, 11054,
+ 12043, 11415, 1861, 4926,
+ 12043, 11415, 2171, 4926,
+ 12043, 11415, 2725, 4926,
+ 12043, 11415, 2779, 4926,
+ 12043, 11415, 4215, 4926,
+ 12043, 11415, 6717, 4926,
+ 12043, 11415, 6791, 4926,
+ 12043, 11415, 7687, 4926,
+ 12043, 11415, 7695, 4926,
+ 12043, 11415, 8005, 4926,
+ 12043, 11415, 8233, 4926,
+ 12043, 11415, 8291, 4926,
+ 12043, 11415, 8473, 4926,
+ 12043, 11415, 8681, 4926,
+ 12043, 11415, 9433, 4926,
+ 12043, 11415, 9633, 4926,
+ 12043, 11937, 10759, 4223, 10580,
+ 12043, 11937, 10759, 4849, 569, 7442,
+ 12043, 11937, 10759, 4849, 569, 8473, 721, 7442,
+ 12043, 11937, 10759, 6377, 569, 6490,
+ 12043, 11937, 10759, 6377, 569, 8473, 721, 6490,
+ 12043, 11937, 10759, 10386,
+ 12043, 11937, 10759, 10581, 4221, 4848,
+ 12043, 11937, 10759, 10581, 4221, 6376,
+ 12043, 11937, 10759, 10581, 4221, 6490,
+ 12043, 11937, 10759, 10581, 4221, 7121, 4848,
+ 12043, 11937, 10759, 10581, 4221, 7773, 4848,
+ 12043, 11937, 10759, 10581, 4221, 7773, 7442,
+ 12055, 8724,
+ 12058,
+ 12061, 11415, 7922,
+ 12061, 11415, 11228,
+ 12061, 11415, 11850,
+ 12063, 8197, 721, 4923, 5758,
+ 12064,
+ 12075, 7821, 11765, 6434,
+ 12108,
+ 12117, 5758,
+ 12122,
+ 12133, 7608,
+ 12135, 5758,
+ 12143, 10758,
+ 12156,
+ 12342,
+ 12355, 2170,
+ 12355, 2540,
+ 12355, 2778,
+ 12355, 4200,
+ 12355, 4214,
+ 12355, 4849, 12114,
+ 12355, 5190,
+ 12355, 5445, 5758,
+ 12355, 6260,
+ 12355, 6722,
+ 12355, 7089, 7593, 8405, 16,
+ 12355, 7089, 7593, 8405, 26,
+ 12355, 7172,
+ 12355, 7443, 12114,
+ 12355, 7508,
+ 12355, 7694,
+ 12355, 8167, 5758,
+ 12371, 12492,
+ 12383, 10643, 6121, 4849, 4389, 6504,
+ 12383, 10643, 6121, 7443, 4389, 6504,
+ 12396,
+ 12399, 445, 10780,
+ 12403, 2209, 2671, 10625, 5758,
+ 12403, 2209, 7171, 5758,
+ 12403, 3961, 5566,
+ 12403, 6689, 2170,
+ 12403, 6689, 2540,
+ 12403, 6689, 2778,
+ 12403, 6689, 4200,
+ 12403, 6689, 4214,
+ 12403, 6689, 5190,
+ 12403, 6689, 6260,
+ 12403, 6689, 6722,
+ 12403, 6689, 7508,
+ 12403, 6689, 7694,
+ 12403, 8233, 5566,
+ 12413, 9063, 4,
+ 12413, 9063, 14,
+ 12413, 9063, 16,
+ 12413, 9063, 34,
+ 12413, 9063, 50,
+ 12428,
+ 12461, 10346,
+ 12463, 6505, 8056,
+ 12463, 6505, 8744,
+ 12463, 6505, 9158,
+ 12463, 7821, 8056,
+ 12463, 7821, 8744,
+ 12463, 7821, 9158,
+ 12464,
+ 12467, 10513, 7821, 11765, 6434,
+ 12473, 445, 6741, 568,
+ 12473, 445, 9705, 6741, 568,
+ 12473, 445, 9705, 6741, 569, 6121, 1045, 6376,
+ 12473, 445, 9705, 6741, 569, 6121, 1045, 6377, 4848,
+ 12473, 445, 9705, 6741, 569, 6121, 1045, 8318,
+ 12473, 445, 11098,
+ 12473, 445, 11621, 568,
+ 12473, 445, 11896,
+ 12473, 721, 2091, 11896,
+ 12473, 721, 12345, 2091, 6741, 568,
+ 12473, 835, 2091, 6741, 568,
+ 12473, 835, 2091, 11621, 568,
+ 12473, 5387, 6741, 568,
+ 12473, 5758,
+ 12473, 6121, 1044,
+ 12473, 6121, 8057, 8318,
+ 12473, 6121, 10469, 4927, 6376,
+ 12473, 6377, 9693, 445, 6740,
+ 12473, 6377, 9693, 6377, 11098,
+ 12473, 6377, 9705, 6741, 6377, 11099, 6377, 9705, 6740,
+ 12473, 6377, 11099, 6377, 12007, 6740,
+ 12473, 6377, 11765, 6434,
+ 12473, 6377, 12007, 6741, 6377, 11098,
+ 12473, 6741, 569, 445, 11098,
+ 12473, 7991, 11098,
+ 12473, 8065, 115, 6628,
+ 12473, 8065, 115, 6629, 6377, 9705, 6740,
+ 12473, 12105, 11098,
+ 12478,
+ 12480,
+ 12492,
+ 12493, 6121, 1044,
+ 12493, 6121, 9437, 720,
+ 12493, 6121, 9546,
+ 12493, 6377, 761, 6377, 7768,
+ 12493, 6377, 7768,
+ 12493, 7991, 721, 8329, 6121, 12492,
+ 12505, 3803, 477, 8774,
+ 12505, 3803, 2217, 8774,
+ 12505, 3803, 2413, 8774,
+ 12505, 3803, 6689, 2170,
+ 12505, 3803, 6689, 2540,
+ 12505, 3803, 6689, 2778,
+ 12505, 3803, 6689, 4200,
+ 12505, 3803, 6689, 4214,
+ 12505, 3803, 6689, 5190,
+ 12505, 3803, 6689, 6260,
+ 12505, 3803, 6689, 6722,
+ 12505, 3803, 6689, 7508,
+ 12505, 3803, 6689, 7694,
+ 12505, 3803, 7023, 8774,
+ 12505, 3803, 7202,
+ 12505, 3803, 7593, 0,
+ 12505, 3803, 7593, 2,
+ 12505, 3803, 7593, 4,
+ 12505, 3803, 7593, 6,
+ 12505, 3803, 7593, 8,
+ 12505, 3803, 7593, 10,
+ 12505, 3803, 7593, 12,
+ 12505, 3803, 7593, 14,
+ 12505, 3803, 7593, 16,
+ 12505, 3803, 7593, 18,
+ 12505, 3803, 7593, 20,
+ 12505, 3803, 7593, 22,
+ 12505, 3803, 7593, 24,
+ 12505, 3803, 7593, 26,
+ 12505, 3803, 7593, 28,
+ 12505, 3803, 7593, 30,
+ 12505, 3803, 7593, 32,
+ 12505, 3803, 7593, 34,
+ 12505, 3803, 7593, 36,
+ 12505, 3803, 7593, 38,
+ 12505, 3803, 7593, 40,
+ 12505, 3803, 7593, 42,
+ 12505, 3803, 7593, 44,
+ 12505, 3803, 7593, 46,
+ 12505, 3803, 7593, 48,
+ 12505, 3803, 7593, 50,
+ 12505, 3803, 7593, 384,
+ 12505, 3803, 7593, 416,
+ 12505, 3803, 7593, 476,
+ 12505, 3803, 7593, 644,
+ 12505, 3803, 7593, 888,
+ 12505, 3803, 7593, 1128,
+ 12505, 3803, 7593, 2216,
+ 12505, 3803, 7593, 2250,
+ 12505, 3803, 7593, 2412,
+ 12505, 3803, 7593, 2658,
+ 12505, 3803, 7593, 3774,
+ 12505, 3803, 7593, 4614,
+ 12505, 3803, 7593, 6262,
+ 12505, 3803, 7593, 6406,
+ 12505, 3803, 7593, 6674,
+ 12505, 3803, 7593, 6789, 7568,
+ 12505, 3803, 7593, 6824,
+ 12505, 3803, 7593, 7022,
+ 12505, 3803, 7593, 7080,
+ 12505, 3803, 7593, 7316,
+ 12505, 3803, 7593, 7568,
+ 12505, 3803, 7593, 7682,
+ 12505, 3803, 7593, 9162,
+ 12505, 3803, 7593, 9270,
+ 12505, 3803, 7593, 9530,
+ 12505, 3803, 7593, 9808,
+ 12505, 3803, 7683, 8774,
+ 12505, 3803, 8325, 477, 8774,
+ 12505, 3803, 8325, 2217, 8774,
+ 12505, 3803, 8325, 2413, 8774,
+ 12505, 3803, 8325, 7023, 8774,
+ 12505, 3803, 8325, 7202,
+ 12505, 3803, 8325, 7593, 0,
+ 12505, 3803, 8325, 7593, 2,
+ 12505, 3803, 8325, 7593, 4,
+ 12505, 3803, 8325, 7593, 6,
+ 12505, 3803, 8325, 7593, 8,
+ 12505, 3803, 8325, 7593, 10,
+ 12505, 3803, 8325, 7593, 12,
+ 12505, 3803, 8325, 7593, 14,
+ 12505, 3803, 8325, 7593, 16,
+ 12505, 3803, 8325, 7593, 18,
+ 12505, 3803, 8325, 7593, 20,
+ 12505, 3803, 8325, 7593, 22,
+ 12505, 3803, 8325, 7593, 24,
+ 12505, 3803, 8325, 7593, 26,
+ 12505, 3803, 8325, 7593, 28,
+ 12505, 3803, 8325, 7593, 30,
+ 12505, 3803, 8325, 7593, 32,
+ 12505, 3803, 8325, 7593, 34,
+ 12505, 3803, 8325, 7593, 36,
+ 12505, 3803, 8325, 7593, 38,
+ 12505, 3803, 8325, 7593, 40,
+ 12505, 3803, 8325, 7593, 42,
+ 12505, 3803, 8325, 7593, 44,
+ 12505, 3803, 8325, 7593, 46,
+ 12505, 3803, 8325, 7593, 48,
+ 12505, 3803, 8325, 7593, 50,
+ 12505, 3803, 8325, 7593, 384,
+ 12505, 3803, 8325, 7593, 416,
+ 12505, 3803, 8325, 7593, 476,
+ 12505, 3803, 8325, 7593, 644,
+ 12505, 3803, 8325, 7593, 888,
+ 12505, 3803, 8325, 7593, 1128,
+ 12505, 3803, 8325, 7593, 2216,
+ 12505, 3803, 8325, 7593, 2250,
+ 12505, 3803, 8325, 7593, 2412,
+ 12505, 3803, 8325, 7593, 2658,
+ 12505, 3803, 8325, 7593, 3774,
+ 12505, 3803, 8325, 7593, 4614,
+ 12505, 3803, 8325, 7593, 6262,
+ 12505, 3803, 8325, 7593, 6406,
+ 12505, 3803, 8325, 7593, 6674,
+ 12505, 3803, 8325, 7593, 6789, 7568,
+ 12505, 3803, 8325, 7593, 6824,
+ 12505, 3803, 8325, 7593, 7022,
+ 12505, 3803, 8325, 7593, 7080,
+ 12505, 3803, 8325, 7593, 7316,
+ 12505, 3803, 8325, 7593, 7568,
+ 12505, 3803, 8325, 7593, 7682,
+ 12505, 3803, 8325, 7593, 9270,
+ 12505, 3803, 8325, 7593, 9530,
+ 12505, 3803, 8325, 7593, 9808,
+ 12505, 3803, 8325, 7683, 8774,
+ 12505, 3803, 8325, 9063, 0,
+ 12505, 3803, 8325, 9063, 2,
+ 12505, 3803, 8325, 9063, 4,
+ 12505, 3803, 8325, 9063, 6,
+ 12505, 3803, 8325, 9063, 8,
+ 12505, 3803, 8325, 9063, 10,
+ 12505, 3803, 8325, 9063, 12,
+ 12505, 3803, 8325, 9063, 14,
+ 12505, 3803, 8325, 9063, 16,
+ 12505, 3803, 8325, 9063, 18,
+ 12505, 3803, 8325, 9063, 20,
+ 12505, 3803, 8325, 9063, 22,
+ 12505, 3803, 8325, 9063, 24,
+ 12505, 3803, 8325, 9063, 26,
+ 12505, 3803, 8325, 9063, 28,
+ 12505, 3803, 8325, 9063, 30,
+ 12505, 3803, 8325, 9063, 32,
+ 12505, 3803, 8325, 9063, 34,
+ 12505, 3803, 8325, 9063, 36,
+ 12505, 3803, 8325, 9063, 38,
+ 12505, 3803, 8325, 9063, 40,
+ 12505, 3803, 8325, 9063, 42,
+ 12505, 3803, 8325, 9063, 44,
+ 12505, 3803, 8325, 9063, 46,
+ 12505, 3803, 8325, 9063, 48,
+ 12505, 3803, 8325, 9063, 50,
+ 12505, 3803, 8325, 9063, 384,
+ 12505, 3803, 8325, 9063, 416,
+ 12505, 3803, 8325, 9063, 476,
+ 12505, 3803, 8325, 9063, 644,
+ 12505, 3803, 8325, 9063, 888,
+ 12505, 3803, 8325, 9063, 1128,
+ 12505, 3803, 8325, 9063, 2216,
+ 12505, 3803, 8325, 9063, 2250,
+ 12505, 3803, 8325, 9063, 2412,
+ 12505, 3803, 8325, 9063, 2658,
+ 12505, 3803, 8325, 9063, 3774,
+ 12505, 3803, 8325, 9063, 4614,
+ 12505, 3803, 8325, 9063, 6262,
+ 12505, 3803, 8325, 9063, 6406,
+ 12505, 3803, 8325, 9063, 6674,
+ 12505, 3803, 8325, 9063, 6824,
+ 12505, 3803, 8325, 9063, 7022,
+ 12505, 3803, 8325, 9063, 7080,
+ 12505, 3803, 8325, 9063, 7316,
+ 12505, 3803, 8325, 9063, 7568,
+ 12505, 3803, 8325, 9063, 7682,
+ 12505, 3803, 8325, 9063, 7683, 8774,
+ 12505, 3803, 8325, 9063, 9270,
+ 12505, 3803, 8325, 9063, 9530,
+ 12505, 3803, 8325, 9063, 9808,
+ 12505, 3803, 8325, 9271, 8774,
+ 12505, 3803, 8325, 9573, 12432,
+ 12505, 3803, 8679, 7593, 0,
+ 12505, 3803, 8679, 7593, 2,
+ 12505, 3803, 8679, 7593, 4,
+ 12505, 3803, 8679, 7593, 6,
+ 12505, 3803, 8679, 7593, 8,
+ 12505, 3803, 8679, 7593, 10,
+ 12505, 3803, 8679, 7593, 12,
+ 12505, 3803, 8679, 7593, 14,
+ 12505, 3803, 8679, 7593, 16,
+ 12505, 3803, 8679, 7593, 18,
+ 12505, 3803, 8679, 7593, 20,
+ 12505, 3803, 8679, 7593, 22,
+ 12505, 3803, 8679, 7593, 24,
+ 12505, 3803, 8679, 7593, 26,
+ 12505, 3803, 8679, 7593, 28,
+ 12505, 3803, 8679, 7593, 30,
+ 12505, 3803, 8679, 7593, 32,
+ 12505, 3803, 8679, 7593, 34,
+ 12505, 3803, 8679, 7593, 36,
+ 12505, 3803, 8679, 7593, 38,
+ 12505, 3803, 8679, 7593, 40,
+ 12505, 3803, 8679, 7593, 42,
+ 12505, 3803, 8679, 7593, 44,
+ 12505, 3803, 8679, 7593, 46,
+ 12505, 3803, 8679, 7593, 48,
+ 12505, 3803, 8679, 7593, 50,
+ 12505, 3803, 8679, 9063, 0,
+ 12505, 3803, 8679, 9063, 2,
+ 12505, 3803, 8679, 9063, 4,
+ 12505, 3803, 8679, 9063, 6,
+ 12505, 3803, 8679, 9063, 8,
+ 12505, 3803, 8679, 9063, 10,
+ 12505, 3803, 8679, 9063, 12,
+ 12505, 3803, 8679, 9063, 14,
+ 12505, 3803, 8679, 9063, 16,
+ 12505, 3803, 8679, 9063, 18,
+ 12505, 3803, 8679, 9063, 20,
+ 12505, 3803, 8679, 9063, 22,
+ 12505, 3803, 8679, 9063, 24,
+ 12505, 3803, 8679, 9063, 26,
+ 12505, 3803, 8679, 9063, 28,
+ 12505, 3803, 8679, 9063, 30,
+ 12505, 3803, 8679, 9063, 32,
+ 12505, 3803, 8679, 9063, 34,
+ 12505, 3803, 8679, 9063, 36,
+ 12505, 3803, 8679, 9063, 38,
+ 12505, 3803, 8679, 9063, 40,
+ 12505, 3803, 8679, 9063, 42,
+ 12505, 3803, 8679, 9063, 44,
+ 12505, 3803, 8679, 9063, 46,
+ 12505, 3803, 8679, 9063, 48,
+ 12505, 3803, 8679, 9063, 50,
+ 12505, 3803, 9063, 0,
+ 12505, 3803, 9063, 2,
+ 12505, 3803, 9063, 4,
+ 12505, 3803, 9063, 6,
+ 12505, 3803, 9063, 8,
+ 12505, 3803, 9063, 10,
+ 12505, 3803, 9063, 12,
+ 12505, 3803, 9063, 14,
+ 12505, 3803, 9063, 16,
+ 12505, 3803, 9063, 18,
+ 12505, 3803, 9063, 20,
+ 12505, 3803, 9063, 22,
+ 12505, 3803, 9063, 24,
+ 12505, 3803, 9063, 26,
+ 12505, 3803, 9063, 28,
+ 12505, 3803, 9063, 30,
+ 12505, 3803, 9063, 32,
+ 12505, 3803, 9063, 34,
+ 12505, 3803, 9063, 36,
+ 12505, 3803, 9063, 38,
+ 12505, 3803, 9063, 40,
+ 12505, 3803, 9063, 42,
+ 12505, 3803, 9063, 44,
+ 12505, 3803, 9063, 46,
+ 12505, 3803, 9063, 48,
+ 12505, 3803, 9063, 50,
+ 12505, 3803, 9063, 384,
+ 12505, 3803, 9063, 416,
+ 12505, 3803, 9063, 476,
+ 12505, 3803, 9063, 644,
+ 12505, 3803, 9063, 888,
+ 12505, 3803, 9063, 1128,
+ 12505, 3803, 9063, 2216,
+ 12505, 3803, 9063, 2250,
+ 12505, 3803, 9063, 2412,
+ 12505, 3803, 9063, 2658,
+ 12505, 3803, 9063, 3774,
+ 12505, 3803, 9063, 4614,
+ 12505, 3803, 9063, 6262,
+ 12505, 3803, 9063, 6406,
+ 12505, 3803, 9063, 6674,
+ 12505, 3803, 9063, 6824,
+ 12505, 3803, 9063, 7022,
+ 12505, 3803, 9063, 7080,
+ 12505, 3803, 9063, 7316,
+ 12505, 3803, 9063, 7568,
+ 12505, 3803, 9063, 7682,
+ 12505, 3803, 9063, 7683, 8774,
+ 12505, 3803, 9063, 9162,
+ 12505, 3803, 9063, 9270,
+ 12505, 3803, 9063, 9530,
+ 12505, 3803, 9063, 9808,
+ 12505, 3803, 9271, 8774,
+ 12505, 3803, 9295, 7593, 0,
+ 12505, 3803, 9295, 7593, 2,
+ 12505, 3803, 9295, 7593, 4,
+ 12505, 3803, 9295, 7593, 6,
+ 12505, 3803, 9295, 7593, 8,
+ 12505, 3803, 9295, 7593, 10,
+ 12505, 3803, 9295, 7593, 12,
+ 12505, 3803, 9295, 7593, 14,
+ 12505, 3803, 9295, 7593, 16,
+ 12505, 3803, 9295, 7593, 18,
+ 12505, 3803, 9295, 7593, 20,
+ 12505, 3803, 9295, 7593, 22,
+ 12505, 3803, 9295, 7593, 24,
+ 12505, 3803, 9295, 7593, 26,
+ 12505, 3803, 9295, 7593, 28,
+ 12505, 3803, 9295, 7593, 30,
+ 12505, 3803, 9295, 7593, 32,
+ 12505, 3803, 9295, 7593, 34,
+ 12505, 3803, 9295, 7593, 36,
+ 12505, 3803, 9295, 7593, 38,
+ 12505, 3803, 9295, 7593, 40,
+ 12505, 3803, 9295, 7593, 42,
+ 12505, 3803, 9295, 7593, 44,
+ 12505, 3803, 9295, 7593, 46,
+ 12505, 3803, 9295, 7593, 48,
+ 12505, 3803, 9295, 7593, 50,
+ 12505, 3803, 9295, 9063, 0,
+ 12505, 3803, 9295, 9063, 2,
+ 12505, 3803, 9295, 9063, 4,
+ 12505, 3803, 9295, 9063, 6,
+ 12505, 3803, 9295, 9063, 8,
+ 12505, 3803, 9295, 9063, 10,
+ 12505, 3803, 9295, 9063, 12,
+ 12505, 3803, 9295, 9063, 14,
+ 12505, 3803, 9295, 9063, 16,
+ 12505, 3803, 9295, 9063, 18,
+ 12505, 3803, 9295, 9063, 20,
+ 12505, 3803, 9295, 9063, 22,
+ 12505, 3803, 9295, 9063, 24,
+ 12505, 3803, 9295, 9063, 26,
+ 12505, 3803, 9295, 9063, 28,
+ 12505, 3803, 9295, 9063, 30,
+ 12505, 3803, 9295, 9063, 32,
+ 12505, 3803, 9295, 9063, 34,
+ 12505, 3803, 9295, 9063, 36,
+ 12505, 3803, 9295, 9063, 38,
+ 12505, 3803, 9295, 9063, 40,
+ 12505, 3803, 9295, 9063, 42,
+ 12505, 3803, 9295, 9063, 44,
+ 12505, 3803, 9295, 9063, 46,
+ 12505, 3803, 9295, 9063, 48,
+ 12505, 3803, 9295, 9063, 50,
+ 12505, 3803, 9573, 12432,
+ 12505, 4849, 6409, 9050,
+ 12505, 4849, 7821, 8745, 9050,
+ 12505, 4849, 7821, 10637, 7533, 9050,
+ 12505, 4849, 8153, 6409, 9050,
+ 12505, 4849, 10997, 12114,
+ 12505, 7443, 6409, 9050,
+ 12505, 7443, 7821, 8745, 9050,
+ 12505, 7443, 7821, 10637, 7533, 9050,
+ 12505, 7443, 8153, 6409, 9050,
+ 12505, 7443, 10997, 12114,
+ 12505, 8325, 477, 8774,
+ 12505, 8325, 2217, 8774,
+ 12505, 8325, 2413, 8774,
+ 12505, 8325, 7023, 8774,
+ 12505, 8325, 7202,
+ 12505, 8325, 7593, 0,
+ 12505, 8325, 7593, 2,
+ 12505, 8325, 7593, 4,
+ 12505, 8325, 7593, 6,
+ 12505, 8325, 7593, 8,
+ 12505, 8325, 7593, 10,
+ 12505, 8325, 7593, 12,
+ 12505, 8325, 7593, 16,
+ 12505, 8325, 7593, 18,
+ 12505, 8325, 7593, 20,
+ 12505, 8325, 7593, 22,
+ 12505, 8325, 7593, 24,
+ 12505, 8325, 7593, 26,
+ 12505, 8325, 7593, 28,
+ 12505, 8325, 7593, 30,
+ 12505, 8325, 7593, 32,
+ 12505, 8325, 7593, 34,
+ 12505, 8325, 7593, 36,
+ 12505, 8325, 7593, 38,
+ 12505, 8325, 7593, 40,
+ 12505, 8325, 7593, 42,
+ 12505, 8325, 7593, 44,
+ 12505, 8325, 7593, 46,
+ 12505, 8325, 7593, 48,
+ 12505, 8325, 7593, 50,
+ 12505, 8325, 7593, 384,
+ 12505, 8325, 7593, 416,
+ 12505, 8325, 7593, 476,
+ 12505, 8325, 7593, 644,
+ 12505, 8325, 7593, 888,
+ 12505, 8325, 7593, 1128,
+ 12505, 8325, 7593, 2216,
+ 12505, 8325, 7593, 2250,
+ 12505, 8325, 7593, 2412,
+ 12505, 8325, 7593, 2658,
+ 12505, 8325, 7593, 3774,
+ 12505, 8325, 7593, 4614,
+ 12505, 8325, 7593, 6262,
+ 12505, 8325, 7593, 6406,
+ 12505, 8325, 7593, 6674,
+ 12505, 8325, 7593, 6789, 7568,
+ 12505, 8325, 7593, 6824,
+ 12505, 8325, 7593, 7022,
+ 12505, 8325, 7593, 7080,
+ 12505, 8325, 7593, 7316,
+ 12505, 8325, 7593, 7568,
+ 12505, 8325, 7593, 7682,
+ 12505, 8325, 7593, 9185, 16,
+ 12505, 8325, 7593, 9185, 18,
+ 12505, 8325, 7593, 9270,
+ 12505, 8325, 7593, 9530,
+ 12505, 8325, 7593, 9808,
+ 12505, 8325, 7683, 8774,
+ 12505, 8325, 9063, 0,
+ 12505, 8325, 9063, 2,
+ 12505, 8325, 9063, 4,
+ 12505, 8325, 9063, 6,
+ 12505, 8325, 9063, 8,
+ 12505, 8325, 9063, 10,
+ 12505, 8325, 9063, 12,
+ 12505, 8325, 9063, 14,
+ 12505, 8325, 9063, 16,
+ 12505, 8325, 9063, 18,
+ 12505, 8325, 9063, 20,
+ 12505, 8325, 9063, 22,
+ 12505, 8325, 9063, 24,
+ 12505, 8325, 9063, 26,
+ 12505, 8325, 9063, 28,
+ 12505, 8325, 9063, 30,
+ 12505, 8325, 9063, 32,
+ 12505, 8325, 9063, 34,
+ 12505, 8325, 9063, 36,
+ 12505, 8325, 9063, 38,
+ 12505, 8325, 9063, 40,
+ 12505, 8325, 9063, 42,
+ 12505, 8325, 9063, 44,
+ 12505, 8325, 9063, 46,
+ 12505, 8325, 9063, 48,
+ 12505, 8325, 9063, 50,
+ 12505, 8325, 9063, 384,
+ 12505, 8325, 9063, 416,
+ 12505, 8325, 9063, 476,
+ 12505, 8325, 9063, 644,
+ 12505, 8325, 9063, 888,
+ 12505, 8325, 9063, 1128,
+ 12505, 8325, 9063, 2216,
+ 12505, 8325, 9063, 2250,
+ 12505, 8325, 9063, 2412,
+ 12505, 8325, 9063, 2658,
+ 12505, 8325, 9063, 3774,
+ 12505, 8325, 9063, 4614,
+ 12505, 8325, 9063, 6262,
+ 12505, 8325, 9063, 6406,
+ 12505, 8325, 9063, 6674,
+ 12505, 8325, 9063, 6824,
+ 12505, 8325, 9063, 7022,
+ 12505, 8325, 9063, 7080,
+ 12505, 8325, 9063, 7316,
+ 12505, 8325, 9063, 7568,
+ 12505, 8325, 9063, 7682,
+ 12505, 8325, 9063, 7683, 8774,
+ 12505, 8325, 9063, 9270,
+ 12505, 8325, 9063, 9530,
+ 12505, 8325, 9063, 9808,
+ 12505, 8325, 9271, 8774,
+ 12505, 8325, 9573, 12432,
+ 12505, 8679, 7593, 0,
+ 12505, 8679, 7593, 2,
+ 12505, 8679, 7593, 4,
+ 12505, 8679, 7593, 6,
+ 12505, 8679, 7593, 10,
+ 12505, 8679, 7593, 14,
+ 12505, 8679, 7593, 16,
+ 12505, 8679, 7593, 18,
+ 12505, 8679, 7593, 20,
+ 12505, 8679, 7593, 22,
+ 12505, 8679, 7593, 24,
+ 12505, 8679, 7593, 26,
+ 12505, 8679, 7593, 30,
+ 12505, 8679, 7593, 32,
+ 12505, 8679, 7593, 34,
+ 12505, 8679, 7593, 36,
+ 12505, 8679, 7593, 38,
+ 12505, 8679, 7593, 40,
+ 12505, 8679, 7593, 42,
+ 12505, 8679, 7593, 44,
+ 12505, 8679, 7593, 46,
+ 12505, 8679, 7593, 48,
+ 12505, 8679, 7593, 50,
+ 12505, 8679, 9063, 0,
+ 12505, 8679, 9063, 4,
+ 12505, 8679, 9063, 6,
+ 12505, 8679, 9063, 12,
+ 12505, 8679, 9063, 18,
+ 12505, 8679, 9063, 20,
+ 12505, 8679, 9063, 26,
+ 12505, 8679, 9063, 28,
+ 12505, 8679, 9063, 30,
+ 12505, 8679, 9063, 32,
+ 12505, 8679, 9063, 36,
+ 12505, 8679, 9063, 38,
+ 12505, 8679, 9063, 40,
+ 12505, 8679, 9063, 42,
+ 12505, 8679, 9063, 44,
+ 12505, 8679, 9063, 46,
+ 12505, 8679, 9063, 48,
+ 12505, 8679, 9063, 50,
+ 12505, 9295, 7593, 0,
+ 12505, 9295, 7593, 2,
+ 12505, 9295, 7593, 4,
+ 12505, 9295, 7593, 6,
+ 12505, 9295, 7593, 8,
+ 12505, 9295, 7593, 10,
+ 12505, 9295, 7593, 12,
+ 12505, 9295, 7593, 14,
+ 12505, 9295, 7593, 16,
+ 12505, 9295, 7593, 18,
+ 12505, 9295, 7593, 20,
+ 12505, 9295, 7593, 22,
+ 12505, 9295, 7593, 24,
+ 12505, 9295, 7593, 26,
+ 12505, 9295, 7593, 28,
+ 12505, 9295, 7593, 30,
+ 12505, 9295, 7593, 32,
+ 12505, 9295, 7593, 34,
+ 12505, 9295, 7593, 36,
+ 12505, 9295, 7593, 38,
+ 12505, 9295, 7593, 40,
+ 12505, 9295, 7593, 42,
+ 12505, 9295, 7593, 44,
+ 12505, 9295, 7593, 46,
+ 12505, 9295, 7593, 48,
+ 12505, 9295, 7593, 50,
+ 12505, 9295, 9063, 0,
+ 12505, 9295, 9063, 2,
+ 12505, 9295, 9063, 6,
+ 12505, 9295, 9063, 8,
+ 12505, 9295, 9063, 10,
+ 12505, 9295, 9063, 12,
+ 12505, 9295, 9063, 18,
+ 12505, 9295, 9063, 20,
+ 12505, 9295, 9063, 22,
+ 12505, 9295, 9063, 24,
+ 12505, 9295, 9063, 26,
+ 12505, 9295, 9063, 28,
+ 12505, 9295, 9063, 30,
+ 12505, 9295, 9063, 32,
+ 12505, 9295, 9063, 36,
+ 12505, 9295, 9063, 38,
+ 12505, 9295, 9063, 40,
+ 12505, 9295, 9063, 42,
+ 12505, 9295, 9063, 44,
+ 12505, 9295, 9063, 46,
+ 12505, 9295, 9063, 48,
+ 12505, 11129, 6689, 2170,
+ 12505, 11129, 6689, 2540,
+ 12505, 11129, 6689, 2778,
+ 12505, 11129, 6689, 4200,
+ 12505, 11129, 6689, 4214,
+ 12505, 11129, 6689, 5190,
+ 12505, 11129, 6689, 6260,
+ 12505, 11129, 6689, 6722,
+ 12505, 11129, 6689, 7508,
+ 12505, 11129, 6689, 7694,
+ 12505, 11129, 7593, 0,
+ 12505, 11129, 7593, 2,
+ 12505, 11129, 7593, 4,
+ 12505, 11129, 7593, 6,
+ 12505, 11129, 7593, 8,
+ 12505, 11129, 7593, 10,
+ 12505, 11129, 7593, 12,
+ 12505, 11129, 7593, 14,
+ 12505, 11129, 7593, 16,
+ 12505, 11129, 7593, 18,
+ 12505, 11129, 7593, 20,
+ 12505, 11129, 7593, 22,
+ 12505, 11129, 7593, 24,
+ 12505, 11129, 7593, 26,
+ 12505, 11129, 7593, 28,
+ 12505, 11129, 7593, 30,
+ 12505, 11129, 7593, 32,
+ 12505, 11129, 7593, 34,
+ 12505, 11129, 7593, 36,
+ 12505, 11129, 7593, 38,
+ 12505, 11129, 7593, 40,
+ 12505, 11129, 7593, 42,
+ 12505, 11129, 7593, 44,
+ 12505, 11129, 7593, 46,
+ 12505, 11129, 7593, 48,
+ 12505, 11129, 7593, 50,
+ 12505, 11129, 9063, 0,
+ 12505, 11129, 9063, 2,
+ 12505, 11129, 9063, 4,
+ 12505, 11129, 9063, 6,
+ 12505, 11129, 9063, 8,
+ 12505, 11129, 9063, 10,
+ 12505, 11129, 9063, 12,
+ 12505, 11129, 9063, 14,
+ 12505, 11129, 9063, 16,
+ 12505, 11129, 9063, 18,
+ 12505, 11129, 9063, 20,
+ 12505, 11129, 9063, 22,
+ 12505, 11129, 9063, 24,
+ 12505, 11129, 9063, 26,
+ 12505, 11129, 9063, 28,
+ 12505, 11129, 9063, 30,
+ 12505, 11129, 9063, 32,
+ 12505, 11129, 9063, 34,
+ 12505, 11129, 9063, 36,
+ 12505, 11129, 9063, 38,
+ 12505, 11129, 9063, 40,
+ 12505, 11129, 9063, 42,
+ 12505, 11129, 9063, 44,
+ 12505, 11129, 9063, 46,
+ 12505, 11129, 9063, 48,
+ 12505, 11129, 9063, 50,
+ 12505, 11767, 3803, 477, 8774,
+ 12505, 11767, 3803, 2217, 8774,
+ 12505, 11767, 3803, 2413, 8774,
+ 12505, 11767, 3803, 6689, 2170,
+ 12505, 11767, 3803, 6689, 2540,
+ 12505, 11767, 3803, 6689, 2778,
+ 12505, 11767, 3803, 6689, 4200,
+ 12505, 11767, 3803, 6689, 4214,
+ 12505, 11767, 3803, 6689, 5190,
+ 12505, 11767, 3803, 6689, 6260,
+ 12505, 11767, 3803, 6689, 6722,
+ 12505, 11767, 3803, 6689, 7508,
+ 12505, 11767, 3803, 6689, 7694,
+ 12505, 11767, 3803, 7023, 8774,
+ 12505, 11767, 3803, 7202,
+ 12505, 11767, 3803, 7593, 0,
+ 12505, 11767, 3803, 7593, 2,
+ 12505, 11767, 3803, 7593, 4,
+ 12505, 11767, 3803, 7593, 6,
+ 12505, 11767, 3803, 7593, 8,
+ 12505, 11767, 3803, 7593, 10,
+ 12505, 11767, 3803, 7593, 12,
+ 12505, 11767, 3803, 7593, 14,
+ 12505, 11767, 3803, 7593, 16,
+ 12505, 11767, 3803, 7593, 18,
+ 12505, 11767, 3803, 7593, 20,
+ 12505, 11767, 3803, 7593, 22,
+ 12505, 11767, 3803, 7593, 24,
+ 12505, 11767, 3803, 7593, 26,
+ 12505, 11767, 3803, 7593, 28,
+ 12505, 11767, 3803, 7593, 30,
+ 12505, 11767, 3803, 7593, 32,
+ 12505, 11767, 3803, 7593, 34,
+ 12505, 11767, 3803, 7593, 36,
+ 12505, 11767, 3803, 7593, 38,
+ 12505, 11767, 3803, 7593, 40,
+ 12505, 11767, 3803, 7593, 42,
+ 12505, 11767, 3803, 7593, 44,
+ 12505, 11767, 3803, 7593, 46,
+ 12505, 11767, 3803, 7593, 48,
+ 12505, 11767, 3803, 7593, 50,
+ 12505, 11767, 3803, 7593, 384,
+ 12505, 11767, 3803, 7593, 416,
+ 12505, 11767, 3803, 7593, 476,
+ 12505, 11767, 3803, 7593, 644,
+ 12505, 11767, 3803, 7593, 888,
+ 12505, 11767, 3803, 7593, 1128,
+ 12505, 11767, 3803, 7593, 2216,
+ 12505, 11767, 3803, 7593, 2250,
+ 12505, 11767, 3803, 7593, 2412,
+ 12505, 11767, 3803, 7593, 2658,
+ 12505, 11767, 3803, 7593, 3774,
+ 12505, 11767, 3803, 7593, 4614,
+ 12505, 11767, 3803, 7593, 6262,
+ 12505, 11767, 3803, 7593, 6406,
+ 12505, 11767, 3803, 7593, 6674,
+ 12505, 11767, 3803, 7593, 6789, 7568,
+ 12505, 11767, 3803, 7593, 6824,
+ 12505, 11767, 3803, 7593, 7022,
+ 12505, 11767, 3803, 7593, 7080,
+ 12505, 11767, 3803, 7593, 7316,
+ 12505, 11767, 3803, 7593, 7568,
+ 12505, 11767, 3803, 7593, 7682,
+ 12505, 11767, 3803, 7593, 9270,
+ 12505, 11767, 3803, 7593, 9530,
+ 12505, 11767, 3803, 7593, 9808,
+ 12505, 11767, 3803, 7683, 8774,
+ 12505, 11767, 3803, 8325, 477, 8774,
+ 12505, 11767, 3803, 8325, 2217, 8774,
+ 12505, 11767, 3803, 8325, 2413, 8774,
+ 12505, 11767, 3803, 8325, 7023, 8774,
+ 12505, 11767, 3803, 8325, 7202,
+ 12505, 11767, 3803, 8325, 7593, 0,
+ 12505, 11767, 3803, 8325, 7593, 2,
+ 12505, 11767, 3803, 8325, 7593, 4,
+ 12505, 11767, 3803, 8325, 7593, 6,
+ 12505, 11767, 3803, 8325, 7593, 8,
+ 12505, 11767, 3803, 8325, 7593, 10,
+ 12505, 11767, 3803, 8325, 7593, 12,
+ 12505, 11767, 3803, 8325, 7593, 14,
+ 12505, 11767, 3803, 8325, 7593, 16,
+ 12505, 11767, 3803, 8325, 7593, 18,
+ 12505, 11767, 3803, 8325, 7593, 20,
+ 12505, 11767, 3803, 8325, 7593, 22,
+ 12505, 11767, 3803, 8325, 7593, 24,
+ 12505, 11767, 3803, 8325, 7593, 26,
+ 12505, 11767, 3803, 8325, 7593, 28,
+ 12505, 11767, 3803, 8325, 7593, 30,
+ 12505, 11767, 3803, 8325, 7593, 32,
+ 12505, 11767, 3803, 8325, 7593, 34,
+ 12505, 11767, 3803, 8325, 7593, 36,
+ 12505, 11767, 3803, 8325, 7593, 38,
+ 12505, 11767, 3803, 8325, 7593, 40,
+ 12505, 11767, 3803, 8325, 7593, 42,
+ 12505, 11767, 3803, 8325, 7593, 44,
+ 12505, 11767, 3803, 8325, 7593, 46,
+ 12505, 11767, 3803, 8325, 7593, 48,
+ 12505, 11767, 3803, 8325, 7593, 50,
+ 12505, 11767, 3803, 8325, 7593, 384,
+ 12505, 11767, 3803, 8325, 7593, 416,
+ 12505, 11767, 3803, 8325, 7593, 476,
+ 12505, 11767, 3803, 8325, 7593, 644,
+ 12505, 11767, 3803, 8325, 7593, 888,
+ 12505, 11767, 3803, 8325, 7593, 1128,
+ 12505, 11767, 3803, 8325, 7593, 2216,
+ 12505, 11767, 3803, 8325, 7593, 2250,
+ 12505, 11767, 3803, 8325, 7593, 2412,
+ 12505, 11767, 3803, 8325, 7593, 2658,
+ 12505, 11767, 3803, 8325, 7593, 3774,
+ 12505, 11767, 3803, 8325, 7593, 4614,
+ 12505, 11767, 3803, 8325, 7593, 6262,
+ 12505, 11767, 3803, 8325, 7593, 6406,
+ 12505, 11767, 3803, 8325, 7593, 6674,
+ 12505, 11767, 3803, 8325, 7593, 6789, 7568,
+ 12505, 11767, 3803, 8325, 7593, 6824,
+ 12505, 11767, 3803, 8325, 7593, 7022,
+ 12505, 11767, 3803, 8325, 7593, 7080,
+ 12505, 11767, 3803, 8325, 7593, 7316,
+ 12505, 11767, 3803, 8325, 7593, 7568,
+ 12505, 11767, 3803, 8325, 7593, 7682,
+ 12505, 11767, 3803, 8325, 7593, 9270,
+ 12505, 11767, 3803, 8325, 7593, 9530,
+ 12505, 11767, 3803, 8325, 7593, 9808,
+ 12505, 11767, 3803, 8325, 7683, 8774,
+ 12505, 11767, 3803, 8325, 9063, 0,
+ 12505, 11767, 3803, 8325, 9063, 2,
+ 12505, 11767, 3803, 8325, 9063, 4,
+ 12505, 11767, 3803, 8325, 9063, 6,
+ 12505, 11767, 3803, 8325, 9063, 8,
+ 12505, 11767, 3803, 8325, 9063, 10,
+ 12505, 11767, 3803, 8325, 9063, 12,
+ 12505, 11767, 3803, 8325, 9063, 14,
+ 12505, 11767, 3803, 8325, 9063, 16,
+ 12505, 11767, 3803, 8325, 9063, 18,
+ 12505, 11767, 3803, 8325, 9063, 20,
+ 12505, 11767, 3803, 8325, 9063, 22,
+ 12505, 11767, 3803, 8325, 9063, 24,
+ 12505, 11767, 3803, 8325, 9063, 26,
+ 12505, 11767, 3803, 8325, 9063, 28,
+ 12505, 11767, 3803, 8325, 9063, 30,
+ 12505, 11767, 3803, 8325, 9063, 32,
+ 12505, 11767, 3803, 8325, 9063, 34,
+ 12505, 11767, 3803, 8325, 9063, 36,
+ 12505, 11767, 3803, 8325, 9063, 38,
+ 12505, 11767, 3803, 8325, 9063, 40,
+ 12505, 11767, 3803, 8325, 9063, 42,
+ 12505, 11767, 3803, 8325, 9063, 44,
+ 12505, 11767, 3803, 8325, 9063, 46,
+ 12505, 11767, 3803, 8325, 9063, 48,
+ 12505, 11767, 3803, 8325, 9063, 50,
+ 12505, 11767, 3803, 8325, 9063, 384,
+ 12505, 11767, 3803, 8325, 9063, 416,
+ 12505, 11767, 3803, 8325, 9063, 476,
+ 12505, 11767, 3803, 8325, 9063, 644,
+ 12505, 11767, 3803, 8325, 9063, 888,
+ 12505, 11767, 3803, 8325, 9063, 1128,
+ 12505, 11767, 3803, 8325, 9063, 2216,
+ 12505, 11767, 3803, 8325, 9063, 2250,
+ 12505, 11767, 3803, 8325, 9063, 2412,
+ 12505, 11767, 3803, 8325, 9063, 2658,
+ 12505, 11767, 3803, 8325, 9063, 3774,
+ 12505, 11767, 3803, 8325, 9063, 4614,
+ 12505, 11767, 3803, 8325, 9063, 6262,
+ 12505, 11767, 3803, 8325, 9063, 6406,
+ 12505, 11767, 3803, 8325, 9063, 6674,
+ 12505, 11767, 3803, 8325, 9063, 6824,
+ 12505, 11767, 3803, 8325, 9063, 7022,
+ 12505, 11767, 3803, 8325, 9063, 7080,
+ 12505, 11767, 3803, 8325, 9063, 7316,
+ 12505, 11767, 3803, 8325, 9063, 7568,
+ 12505, 11767, 3803, 8325, 9063, 7682,
+ 12505, 11767, 3803, 8325, 9063, 7683, 8774,
+ 12505, 11767, 3803, 8325, 9063, 9270,
+ 12505, 11767, 3803, 8325, 9063, 9530,
+ 12505, 11767, 3803, 8325, 9063, 9808,
+ 12505, 11767, 3803, 8325, 9271, 8774,
+ 12505, 11767, 3803, 8325, 9573, 12432,
+ 12505, 11767, 3803, 9063, 0,
+ 12505, 11767, 3803, 9063, 2,
+ 12505, 11767, 3803, 9063, 4,
+ 12505, 11767, 3803, 9063, 6,
+ 12505, 11767, 3803, 9063, 8,
+ 12505, 11767, 3803, 9063, 10,
+ 12505, 11767, 3803, 9063, 12,
+ 12505, 11767, 3803, 9063, 14,
+ 12505, 11767, 3803, 9063, 16,
+ 12505, 11767, 3803, 9063, 18,
+ 12505, 11767, 3803, 9063, 20,
+ 12505, 11767, 3803, 9063, 22,
+ 12505, 11767, 3803, 9063, 24,
+ 12505, 11767, 3803, 9063, 26,
+ 12505, 11767, 3803, 9063, 28,
+ 12505, 11767, 3803, 9063, 30,
+ 12505, 11767, 3803, 9063, 32,
+ 12505, 11767, 3803, 9063, 34,
+ 12505, 11767, 3803, 9063, 36,
+ 12505, 11767, 3803, 9063, 38,
+ 12505, 11767, 3803, 9063, 40,
+ 12505, 11767, 3803, 9063, 42,
+ 12505, 11767, 3803, 9063, 44,
+ 12505, 11767, 3803, 9063, 46,
+ 12505, 11767, 3803, 9063, 48,
+ 12505, 11767, 3803, 9063, 50,
+ 12505, 11767, 3803, 9063, 384,
+ 12505, 11767, 3803, 9063, 416,
+ 12505, 11767, 3803, 9063, 476,
+ 12505, 11767, 3803, 9063, 644,
+ 12505, 11767, 3803, 9063, 888,
+ 12505, 11767, 3803, 9063, 1128,
+ 12505, 11767, 3803, 9063, 2216,
+ 12505, 11767, 3803, 9063, 2250,
+ 12505, 11767, 3803, 9063, 2412,
+ 12505, 11767, 3803, 9063, 2658,
+ 12505, 11767, 3803, 9063, 3774,
+ 12505, 11767, 3803, 9063, 4614,
+ 12505, 11767, 3803, 9063, 6262,
+ 12505, 11767, 3803, 9063, 6406,
+ 12505, 11767, 3803, 9063, 6674,
+ 12505, 11767, 3803, 9063, 6824,
+ 12505, 11767, 3803, 9063, 7022,
+ 12505, 11767, 3803, 9063, 7080,
+ 12505, 11767, 3803, 9063, 7316,
+ 12505, 11767, 3803, 9063, 7568,
+ 12505, 11767, 3803, 9063, 7682,
+ 12505, 11767, 3803, 9063, 7683, 8774,
+ 12505, 11767, 3803, 9063, 9270,
+ 12505, 11767, 3803, 9063, 9530,
+ 12505, 11767, 3803, 9063, 9808,
+ 12505, 11767, 3803, 9271, 8774,
+ 12505, 11767, 3803, 9573, 12432,
+ 12505, 11767, 6689, 2170,
+ 12505, 11767, 6689, 2540,
+ 12505, 11767, 6689, 2778,
+ 12505, 11767, 6689, 4200,
+ 12505, 11767, 6689, 4214,
+ 12505, 11767, 6689, 5190,
+ 12505, 11767, 6689, 6260,
+ 12505, 11767, 6689, 6722,
+ 12505, 11767, 6689, 7508,
+ 12505, 11767, 6689, 7694,
+ 12505, 11767, 7593, 0,
+ 12505, 11767, 7593, 2,
+ 12505, 11767, 7593, 4,
+ 12505, 11767, 7593, 6,
+ 12505, 11767, 7593, 8,
+ 12505, 11767, 7593, 10,
+ 12505, 11767, 7593, 12,
+ 12505, 11767, 7593, 14,
+ 12505, 11767, 7593, 16,
+ 12505, 11767, 7593, 18,
+ 12505, 11767, 7593, 20,
+ 12505, 11767, 7593, 22,
+ 12505, 11767, 7593, 24,
+ 12505, 11767, 7593, 26,
+ 12505, 11767, 7593, 28,
+ 12505, 11767, 7593, 30,
+ 12505, 11767, 7593, 32,
+ 12505, 11767, 7593, 34,
+ 12505, 11767, 7593, 36,
+ 12505, 11767, 7593, 38,
+ 12505, 11767, 7593, 40,
+ 12505, 11767, 7593, 42,
+ 12505, 11767, 7593, 44,
+ 12505, 11767, 7593, 46,
+ 12505, 11767, 7593, 48,
+ 12505, 11767, 7593, 50,
+ 12505, 11767, 8325, 7593, 0,
+ 12505, 11767, 8325, 7593, 2,
+ 12505, 11767, 8325, 7593, 4,
+ 12505, 11767, 8325, 7593, 6,
+ 12505, 11767, 8325, 7593, 8,
+ 12505, 11767, 8325, 7593, 10,
+ 12505, 11767, 8325, 7593, 12,
+ 12505, 11767, 8325, 7593, 14,
+ 12505, 11767, 8325, 7593, 16,
+ 12505, 11767, 8325, 7593, 18,
+ 12505, 11767, 8325, 7593, 20,
+ 12505, 11767, 8325, 7593, 22,
+ 12505, 11767, 8325, 7593, 24,
+ 12505, 11767, 8325, 7593, 26,
+ 12505, 11767, 8325, 7593, 28,
+ 12505, 11767, 8325, 7593, 30,
+ 12505, 11767, 8325, 7593, 32,
+ 12505, 11767, 8325, 7593, 34,
+ 12505, 11767, 8325, 7593, 36,
+ 12505, 11767, 8325, 7593, 38,
+ 12505, 11767, 8325, 7593, 40,
+ 12505, 11767, 8325, 7593, 42,
+ 12505, 11767, 8325, 7593, 44,
+ 12505, 11767, 8325, 7593, 46,
+ 12505, 11767, 8325, 7593, 48,
+ 12505, 11767, 8325, 7593, 50,
+ 12505, 11767, 8325, 9063, 0,
+ 12505, 11767, 8325, 9063, 2,
+ 12505, 11767, 8325, 9063, 4,
+ 12505, 11767, 8325, 9063, 6,
+ 12505, 11767, 8325, 9063, 8,
+ 12505, 11767, 8325, 9063, 10,
+ 12505, 11767, 8325, 9063, 12,
+ 12505, 11767, 8325, 9063, 14,
+ 12505, 11767, 8325, 9063, 16,
+ 12505, 11767, 8325, 9063, 18,
+ 12505, 11767, 8325, 9063, 20,
+ 12505, 11767, 8325, 9063, 22,
+ 12505, 11767, 8325, 9063, 24,
+ 12505, 11767, 8325, 9063, 26,
+ 12505, 11767, 8325, 9063, 28,
+ 12505, 11767, 8325, 9063, 30,
+ 12505, 11767, 8325, 9063, 32,
+ 12505, 11767, 8325, 9063, 34,
+ 12505, 11767, 8325, 9063, 36,
+ 12505, 11767, 8325, 9063, 38,
+ 12505, 11767, 8325, 9063, 40,
+ 12505, 11767, 8325, 9063, 42,
+ 12505, 11767, 8325, 9063, 44,
+ 12505, 11767, 8325, 9063, 46,
+ 12505, 11767, 8325, 9063, 48,
+ 12505, 11767, 8325, 9063, 50,
+ 12505, 11767, 9063, 0,
+ 12505, 11767, 9063, 2,
+ 12505, 11767, 9063, 4,
+ 12505, 11767, 9063, 6,
+ 12505, 11767, 9063, 8,
+ 12505, 11767, 9063, 10,
+ 12505, 11767, 9063, 12,
+ 12505, 11767, 9063, 14,
+ 12505, 11767, 9063, 16,
+ 12505, 11767, 9063, 18,
+ 12505, 11767, 9063, 20,
+ 12505, 11767, 9063, 22,
+ 12505, 11767, 9063, 24,
+ 12505, 11767, 9063, 26,
+ 12505, 11767, 9063, 28,
+ 12505, 11767, 9063, 30,
+ 12505, 11767, 9063, 32,
+ 12505, 11767, 9063, 34,
+ 12505, 11767, 9063, 36,
+ 12505, 11767, 9063, 38,
+ 12505, 11767, 9063, 40,
+ 12505, 11767, 9063, 42,
+ 12505, 11767, 9063, 44,
+ 12505, 11767, 9063, 46,
+ 12505, 11767, 9063, 48,
+ 12505, 11767, 9063, 50,
+ 12505, 12929, 6689, 2170,
+ 12505, 12929, 6689, 2540,
+ 12505, 12929, 6689, 2778,
+ 12505, 12929, 6689, 4200,
+ 12505, 12929, 6689, 4214,
+ 12505, 12929, 6689, 5190,
+ 12505, 12929, 6689, 6260,
+ 12505, 12929, 6689, 6722,
+ 12505, 12929, 6689, 7508,
+ 12505, 12929, 6689, 7694,
+ 12505, 12929, 7593, 0,
+ 12505, 12929, 7593, 2,
+ 12505, 12929, 7593, 4,
+ 12505, 12929, 7593, 6,
+ 12505, 12929, 7593, 8,
+ 12505, 12929, 7593, 10,
+ 12505, 12929, 7593, 12,
+ 12505, 12929, 7593, 14,
+ 12505, 12929, 7593, 16,
+ 12505, 12929, 7593, 18,
+ 12505, 12929, 7593, 20,
+ 12505, 12929, 7593, 22,
+ 12505, 12929, 7593, 24,
+ 12505, 12929, 7593, 26,
+ 12505, 12929, 7593, 28,
+ 12505, 12929, 7593, 30,
+ 12505, 12929, 7593, 32,
+ 12505, 12929, 7593, 34,
+ 12505, 12929, 7593, 36,
+ 12505, 12929, 7593, 38,
+ 12505, 12929, 7593, 40,
+ 12505, 12929, 7593, 42,
+ 12505, 12929, 7593, 44,
+ 12505, 12929, 7593, 46,
+ 12505, 12929, 7593, 48,
+ 12505, 12929, 7593, 50,
+ 12505, 12929, 9063, 0,
+ 12505, 12929, 9063, 2,
+ 12505, 12929, 9063, 6,
+ 12505, 12929, 9063, 8,
+ 12505, 12929, 9063, 10,
+ 12505, 12929, 9063, 12,
+ 12505, 12929, 9063, 16,
+ 12505, 12929, 9063, 18,
+ 12505, 12929, 9063, 20,
+ 12505, 12929, 9063, 22,
+ 12505, 12929, 9063, 24,
+ 12505, 12929, 9063, 28,
+ 12505, 12929, 9063, 36,
+ 12505, 12929, 9063, 38,
+ 12505, 12929, 9063, 40,
+ 12505, 12929, 9063, 42,
+ 12505, 12929, 9063, 44,
+ 12505, 12929, 9063, 46,
+ 12505, 12929, 9063, 48,
+ 12517, 8306,
+ 12525, 5882,
+ 12527, 4213, 1177, 10677, 175, 3992,
+ 12527, 4213, 1177, 10677, 177, 3992,
+ 12527, 4213, 1177, 10677, 1809, 4876,
+ 12527, 4213, 1177, 10677, 2779, 1045, 8392,
+ 12527, 4213, 1177, 10677, 4849, 6409, 9050,
+ 12527, 4213, 1177, 10677, 4849, 6505, 11677, 9050,
+ 12527, 4213, 1177, 10677, 4849, 6627, 9050,
+ 12527, 4213, 1177, 10677, 4849, 7821, 8077, 9050,
+ 12527, 4213, 1177, 10677, 4849, 7821, 11677, 9050,
+ 12527, 4213, 1177, 10677, 4849, 8077, 9050,
+ 12527, 4213, 1177, 10677, 4849, 8153, 6409, 9050,
+ 12527, 4213, 1177, 10677, 4849, 8745, 9050,
+ 12527, 4213, 1177, 10677, 4849, 10637, 7533, 9050,
+ 12527, 4213, 1177, 10677, 4849, 12114,
+ 12527, 4213, 1177, 10677, 6107, 1809, 4876,
+ 12527, 4213, 1177, 10677, 6610,
+ 12527, 4213, 1177, 10677, 6616,
+ 12527, 4213, 1177, 10677, 7443, 6409, 9050,
+ 12527, 4213, 1177, 10677, 7443, 6505, 11677, 9050,
+ 12527, 4213, 1177, 10677, 7443, 6627, 9050,
+ 12527, 4213, 1177, 10677, 7443, 7821, 8077, 9050,
+ 12527, 4213, 1177, 10677, 7443, 7821, 11677, 9054,
+ 12527, 4213, 1177, 10677, 7443, 8077, 9050,
+ 12527, 4213, 1177, 10677, 7443, 8153, 6409, 9050,
+ 12527, 4213, 1177, 10677, 7443, 8745, 9050,
+ 12527, 4213, 1177, 10677, 7443, 10637, 7533, 9050,
+ 12527, 4213, 1177, 10677, 7443, 12114,
+ 12527, 4213, 1177, 10677, 10469, 4926,
+ 12527, 4213, 1177, 10677, 11224,
+ 12527, 4213, 1177, 10677, 11649, 10154,
+ 12527, 4213, 1177, 10677, 12017, 4926,
+ 12527, 4213, 1177, 10677, 12043, 4223, 5836,
+ 12527, 4213, 1177, 10677, 12043, 6616,
+ 12529, 568,
+ 12537, 7821, 11765, 6434,
+ 12540,
+ 12874,
+ 12881, 7608,
+ 12882,
+ 12895, 11765, 6434,
+ 12901, 2725, 11791, 6434,
+ 12901, 5385, 8057, 6434,
+ 12901, 8065, 8057, 6434,
+ 12901, 8241, 8057, 6434,
+ 12901, 9115, 10260,
+ 12901, 12056,
+ 12903, 835, 2091, 9855, 6741, 568,
+ 12903, 6741, 445, 6741, 568,
+ 12903, 6741, 568,
+ 12903, 6741, 569, 445, 2681, 6989, 428,
+ 12925, 11385, 8774,
+ 12929, 7201, 11262,
+ 12929, 7593, 476,
+ 12929, 7593, 6824,
+ 12929, 8325, 7593, 6,
+ 12929, 8325, 7593, 8,
+ 12929, 8325, 7593, 16,
+ 12929, 8325, 7593, 18,
+ 12929, 8325, 9063, 6,
+ 12929, 9063, 4,
+ 12929, 9063, 14,
+ 12929, 9063, 26,
+ 12929, 9063, 30,
+ 12929, 9063, 32,
+ 12929, 9063, 34,
+ 12929, 9063, 50,
+ 12929, 9063, 476,
+ 12929, 9063, 6824,
+ 12931, 10643, 6121, 4849, 4389, 6504,
+ 12931, 10643, 6121, 7443, 4389, 6504,
+ 12939, 5758,
+ 12941, 6741, 568,
+ 12941, 11621, 568,
+ 12967, 6409, 9050,
+ 12967, 8083, 6409, 9050,
+ 12967, 8153, 6409, 11195, 4926,
+ 12969, 4926,
+ 12969, 10390,
+ 12969, 10966,
+ 12975, 5758,
+ 12983, 11765, 6434,
+ 12987, 6689, 2170,
+ 12987, 6689, 2540,
+ 12987, 6689, 2778,
+ 12987, 6689, 4200,
+ 12987, 6689, 4214,
+ 12987, 6689, 5190,
+ 12987, 6689, 6722,
+ 12987, 6689, 7508,
+ 12987, 6689, 7694,
+ 12987, 7089, 7593, 8405, 0,
+ 12987, 7089, 7593, 8405, 2,
+ 12987, 7089, 7593, 8405, 4,
+ 12987, 7089, 7593, 8405, 6,
+ 12987, 7089, 7593, 8405, 8,
+ 12987, 7089, 7593, 8405, 10,
+ 12987, 7089, 7593, 8405, 12,
+ 12987, 7089, 7593, 8405, 14,
+ 12987, 7089, 7593, 8405, 16,
+ 12987, 7089, 7593, 8405, 18,
+ 12987, 7089, 7593, 8405, 20,
+ 12987, 7089, 7593, 8405, 22,
+ 12987, 7089, 7593, 8405, 24,
+ 12987, 7089, 7593, 8405, 26,
+ 12987, 7089, 7593, 8405, 28,
+ 12987, 7089, 7593, 8405, 30,
+ 12987, 7089, 7593, 8405, 32,
+ 12987, 7089, 7593, 8405, 34,
+ 12987, 7089, 7593, 8405, 36,
+ 12987, 7089, 7593, 8405, 38,
+ 12987, 7089, 7593, 8405, 40,
+ 12987, 7089, 7593, 8405, 42,
+ 12987, 7089, 7593, 8405, 44,
+ 12987, 7089, 7593, 8405, 46,
+ 12987, 7089, 7593, 8405, 48,
+ 12987, 7089, 7593, 8405, 50,
+ 12987, 8287, 5770,
+ 12987, 8287, 5771, 0,
+ 12987, 8287, 6594,
+ 12987, 8287, 6595, 0,
+ 12987, 8287, 6595, 40,
+ 12987, 8287, 6912,
+ 12987, 8287, 6913, 0,
+ 12987, 8287, 6982,
+ 12987, 8287, 6983, 0,
+ 12987, 8287, 7166,
+ 12987, 8287, 7167, 0,
+ 12987, 8287, 7244,
+ 12987, 8287, 7245, 0,
+ 12987, 8287, 7372,
+ 12987, 8287, 7373, 0,
+ 12987, 8287, 7440,
+ 12987, 8287, 7441, 0,
+ 12987, 8287, 8362,
+ 12987, 8287, 8363, 0,
+ 12987, 8287, 8828,
+ 12987, 8287, 8829, 0,
+ 12987, 8287, 9086,
+ 12987, 8287, 9087, 0,
+ 12987, 8287, 9400,
+ 12987, 8287, 9401, 0,
+ 12987, 8287, 9588,
+ 12987, 8287, 9589, 0,
+ 12987, 8287, 9780,
+ 12987, 8287, 9781, 0,
+ 12987, 8371, 10759, 29, 250,
+ 12987, 8371, 10759, 7310,
+ 12987, 8525, 2670,
+ 12987, 8525, 8162,
+ 12987, 8525, 8874,
+ 12987, 8525, 8876,
+ 12987, 8525, 9286,
+ 12987, 8525, 9700,
+ 12987, 8525, 10150,
+ 12987, 8525, 10200,
+ 12987, 8525, 10360,
+ 12987, 8525, 10622,
+ 12987, 8525, 11232,
+ 12987, 11043, 2170,
+ 12987, 11043, 2540,
+ 12987, 11043, 2586,
+ 12987, 11043, 2670,
+ 12987, 11043, 2778,
+ 12987, 11043, 3842,
+ 12987, 11043, 4194,
+ 12987, 11043, 4200,
+ 12987, 11043, 4214,
+ 12987, 11043, 4396,
+ 12987, 11043, 5012,
+ 12987, 11043, 5046,
+ 12987, 11043, 5190,
+ 12987, 11043, 5540,
+ 12987, 11043, 5650,
+ 12987, 11043, 6122,
+ 12987, 11043, 6716,
+ 12987, 11043, 6722,
+ 12987, 11043, 7072,
+ 12987, 11043, 7146,
+ 12987, 11043, 7428,
+ 12987, 11043, 7508,
+ 12987, 11043, 7640,
+ 12987, 11043, 7646,
+ 12987, 11043, 7694,
+ 12987, 11043, 7812,
+ 12987, 11043, 9714,
+ 12987, 11043, 9724,
+ 12987, 11043, 9862,
+ 12987, 11043, 10180,
+ 12987, 11043, 10484,
+ 12987, 11043, 10992,
+ 12987, 11043, 11208,
+ 12987, 11043, 11266,
+ 12987, 11043, 11612,
+ 12987, 11043, 13050,
+ 12990,
+ 12991, 6121, 36,
+ 13011, 4926,
+ 13011, 10390,
+ 13011, 10966,
+ 13022,
+ 13045, 6741, 568,
+ 13047, 9898,
+ 13061, 46,
+ 13061, 5758,
+ 13061, 5759, 275, 4849, 4389, 8056,
+ 13061, 5759, 275, 7443, 4389, 8056,
+ 13061, 5759, 275, 8153, 8056,
+ 13061, 5759, 275, 10642,
+ 13061, 5759, 6121, 1045, 6376,
+ 13061, 5759, 6121, 10666,
+ 13067, 6409, 9050,
+ 13067, 8083, 6409, 9050,
+ 13067, 8153, 6409, 11195, 4926,
+ 13070,
+ 13191, 7271, 4153, 6434,
+ 13191, 7607, 4153, 6434,
+ 13191, 11765, 6434,
+ 13231, 11765, 6434,
+ 13233, 9898,
+ 13235, 11765, 6434,
+ 13237, 11765, 6434,
+ 13365, 8153, 8306,
+ 13365, 8921, 7605, 4926,
+ 13365, 11185, 7605, 4926,
+ 13365, 12341, 7605, 4926,
+ 13381, 8774,
+ 13393, 7337, 8774,
+ 13403, 8279, 8774,
+ 13403, 8381, 8774,
+ 13417, 8774,
+ 13419, 8774,
+};
+static const struct { uint16_t code; uint32_t name:24; }
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+__attribute__((__packed__))
+#endif
+unicode_name_to_code[18242] = {
+ { 0x2114, 0 },
+ { 0x29CC, 4 },
+ { 0x2327, 7 },
+ { 0x22FF, 12 },
+ { 0x2987, 16 },
+ { 0x2989, 21 },
+ { 0x2981, 26 },
+ { 0x2982, 29 },
+ { 0x2A65, 33 },
+ { 0x2988, 37 },
+ { 0x298A, 42 },
+ { 0x2A64, 47 },
+ { 0x2A20, 51 },
+ { 0x2A21, 55 },
+ { 0x2A1F, 59 },
+ { 0x2A3E, 63 },
+ { 0x23E6, 67 },
+ { 0x2014, 69 },
+ { 0x2001, 71 },
+ { 0x2003, 73 },
+ { 0x2013, 75 },
+ { 0x2000, 77 },
+ { 0x2002, 79 },
+ { 0x1C78, 81 },
+ { 0x1C7D, 85 },
+ { 0x1C51, 88 },
+ { 0x1C56, 92 },
+ { 0x1C52, 96 },
+ { 0x1C55, 100 },
+ { 0x1C54, 104 },
+ { 0x1C59, 108 },
+ { 0x1C50, 112 },
+ { 0x1C58, 116 },
+ { 0x1C57, 120 },
+ { 0x1C53, 124 },
+ { 0x1C7B, 128 },
+ { 0x1C5C, 131 },
+ { 0x1C5E, 135 },
+ { 0x1C5B, 139 },
+ { 0x1C71, 143 },
+ { 0x1C6F, 147 },
+ { 0x1C66, 151 },
+ { 0x1C68, 155 },
+ { 0x1C65, 159 },
+ { 0x1C5A, 163 },
+ { 0x1C6E, 167 },
+ { 0x1C64, 171 },
+ { 0x1C73, 175 },
+ { 0x1C69, 179 },
+ { 0x1C75, 183 },
+ { 0x1C77, 187 },
+ { 0x1C76, 191 },
+ { 0x1C6A, 195 },
+ { 0x1C6B, 199 },
+ { 0x1C6D, 203 },
+ { 0x1C61, 207 },
+ { 0x1C60, 211 },
+ { 0x1C62, 215 },
+ { 0x1C63, 219 },
+ { 0x1C5D, 223 },
+ { 0x1C70, 227 },
+ { 0x1C72, 231 },
+ { 0x1C67, 235 },
+ { 0x1C5F, 239 },
+ { 0x1C74, 243 },
+ { 0x1C6C, 247 },
+ { 0x1C79, 251 },
+ { 0x1C7C, 255 },
+ { 0x1C7A, 258 },
+ { 0x1C7F, 262 },
+ { 0x1C7E, 267 },
+ { 0x27C7, 271 },
+ { 0x2951, 275 },
+ { 0x294D, 282 },
+ { 0x294C, 289 },
+ { 0x294F, 296 },
+ { 0x2195, 303 },
+ { 0x21A8, 306 },
+ { 0x2B0D, 311 },
+ { 0x21F3, 315 },
+ { 0x21D5, 319 },
+ { 0x297E, 323 },
+ { 0x22A5, 326 },
+ { 0x27DF, 328 },
+ { 0x29BD, 333 },
+ { 0x22F0, 337 },
+ { 0x2303, 341 },
+ { 0x2324, 343 },
+ { 0x54BC, 349 },
+ { 0x54B9, 352 },
+ { 0x54A1, 355 },
+ { 0x54B3, 358 },
+ { 0x54C6, 361 },
+ { 0x5491, 364 },
+ { 0x5498, 367 },
+ { 0x54A9, 370 },
+ { 0x54A8, 373 },
+ { 0x54B8, 376 },
+ { 0x549D, 379 },
+ { 0x54B2, 382 },
+ { 0x54A5, 385 },
+ { 0x54C3, 388 },
+ { 0x54BE, 391 },
+ { 0x5494, 394 },
+ { 0x54A3, 397 },
+ { 0x5497, 400 },
+ { 0x54B6, 403 },
+ { 0x54AD, 406 },
+ { 0x54B5, 409 },
+ { 0x5492, 412 },
+ { 0x54BB, 415 },
+ { 0x549A, 418 },
+ { 0x549C, 421 },
+ { 0x549E, 424 },
+ { 0x54AC, 427 },
+ { 0x5490, 430 },
+ { 0x54B0, 433 },
+ { 0x5495, 436 },
+ { 0x54A0, 439 },
+ { 0x54B1, 442 },
+ { 0x54AF, 445 },
+ { 0x54AE, 448 },
+ { 0x54AB, 451 },
+ { 0x54A2, 454 },
+ { 0x54C1, 457 },
+ { 0x549B, 460 },
+ { 0x54BD, 463 },
+ { 0x54A4, 466 },
+ { 0x5496, 469 },
+ { 0x54A6, 472 },
+ { 0x5499, 475 },
+ { 0x54BF, 478 },
+ { 0x549F, 481 },
+ { 0x54B7, 484 },
+ { 0x54AA, 487 },
+ { 0x54C5, 490 },
+ { 0x5493, 493 },
+ { 0x54A7, 496 },
+ { 0x54B4, 499 },
+ { 0x54C0, 502 },
+ { 0x54C2, 505 },
+ { 0x54BA, 508 },
+ { 0x54C4, 511 },
+ { 0x500A, 514 },
+ { 0x5014, 517 },
+ { 0x5002, 520 },
+ { 0x5011, 523 },
+ { 0x500B, 526 },
+ { 0x5008, 529 },
+ { 0x5009, 532 },
+ { 0x5020, 535 },
+ { 0x502A, 538 },
+ { 0x5018, 541 },
+ { 0x5027, 544 },
+ { 0x502E, 547 },
+ { 0x5034, 550 },
+ { 0x52B8, 553 },
+ { 0x52C2, 556 },
+ { 0x52B0, 559 },
+ { 0x52BF, 562 },
+ { 0x52C6, 565 },
+ { 0x52CC, 568 },
+ { 0x5109, 571 },
+ { 0x5112, 574 },
+ { 0x5102, 577 },
+ { 0x510F, 580 },
+ { 0x5116, 583 },
+ { 0x5013, 586 },
+ { 0x50D3, 589 },
+ { 0x50CF, 592 },
+ { 0x50D6, 595 },
+ { 0x50DA, 598 },
+ { 0x50E0, 601 },
+ { 0x51E4, 604 },
+ { 0x51F0, 607 },
+ { 0x51DC, 610 },
+ { 0x51EC, 613 },
+ { 0x51F4, 616 },
+ { 0x5273, 619 },
+ { 0x527E, 622 },
+ { 0x527B, 625 },
+ { 0x5006, 628 },
+ { 0x5003, 631 },
+ { 0x5000, 634 },
+ { 0x5001, 637 },
+ { 0x53E2, 640 },
+ { 0x53EE, 643 },
+ { 0x53F2, 646 },
+ { 0x53F8, 649 },
+ { 0x5201, 652 },
+ { 0x520C, 655 },
+ { 0x51FA, 658 },
+ { 0x5208, 661 },
+ { 0x5210, 664 },
+ { 0x51C1, 667 },
+ { 0x51CC, 670 },
+ { 0x51B9, 673 },
+ { 0x51C9, 676 },
+ { 0x51D0, 679 },
+ { 0x51D6, 682 },
+ { 0x50B7, 685 },
+ { 0x50C2, 688 },
+ { 0x50B0, 691 },
+ { 0x50BF, 694 },
+ { 0x50C5, 697 },
+ { 0x50CB, 700 },
+ { 0x5185, 703 },
+ { 0x518F, 706 },
+ { 0x517F, 709 },
+ { 0x518C, 712 },
+ { 0x5193, 715 },
+ { 0x5012, 718 },
+ { 0x500F, 721 },
+ { 0x5010, 724 },
+ { 0x5041, 727 },
+ { 0x503A, 730 },
+ { 0x5048, 733 },
+ { 0x504C, 736 },
+ { 0x5052, 739 },
+ { 0x53FE, 742 },
+ { 0x540A, 745 },
+ { 0x540E, 748 },
+ { 0x5414, 751 },
+ { 0x53C8, 754 },
+ { 0x53D2, 757 },
+ { 0x53CF, 760 },
+ { 0x53D6, 763 },
+ { 0x53DC, 766 },
+ { 0x5312, 769 },
+ { 0x531C, 772 },
+ { 0x530B, 775 },
+ { 0x5319, 778 },
+ { 0x5320, 781 },
+ { 0x5326, 784 },
+ { 0x5123, 787 },
+ { 0x512E, 790 },
+ { 0x511C, 793 },
+ { 0x512B, 796 },
+ { 0x5132, 799 },
+ { 0x500D, 802 },
+ { 0x50EC, 805 },
+ { 0x50E4, 808 },
+ { 0x50F0, 811 },
+ { 0x50F6, 814 },
+ { 0x50FC, 817 },
+ { 0x5282, 820 },
+ { 0x528B, 823 },
+ { 0x5288, 826 },
+ { 0x5015, 829 },
+ { 0x545F, 832 },
+ { 0x5469, 835 },
+ { 0x546D, 838 },
+ { 0x5473, 841 },
+ { 0x547F, 844 },
+ { 0x5483, 847 },
+ { 0x5489, 850 },
+ { 0x5296, 853 },
+ { 0x52A0, 856 },
+ { 0x528F, 859 },
+ { 0x529D, 862 },
+ { 0x52A4, 865 },
+ { 0x52AA, 868 },
+ { 0x5021, 871 },
+ { 0x501E, 874 },
+ { 0x501F, 877 },
+ { 0x5060, 880 },
+ { 0x506A, 883 },
+ { 0x5058, 886 },
+ { 0x5067, 889 },
+ { 0x506E, 892 },
+ { 0x5074, 895 },
+ { 0x502B, 898 },
+ { 0x5029, 901 },
+ { 0x501C, 904 },
+ { 0x5019, 907 },
+ { 0x5016, 910 },
+ { 0x5017, 913 },
+ { 0x5028, 916 },
+ { 0x5025, 919 },
+ { 0x5026, 922 },
+ { 0x5023, 925 },
+ { 0x502F, 928 },
+ { 0x5031, 931 },
+ { 0x502C, 934 },
+ { 0x502D, 937 },
+ { 0x5035, 940 },
+ { 0x5037, 943 },
+ { 0x5032, 946 },
+ { 0x5033, 949 },
+ { 0x52B9, 952 },
+ { 0x52B6, 955 },
+ { 0x52B7, 958 },
+ { 0x52C3, 961 },
+ { 0x52C1, 964 },
+ { 0x5363, 967 },
+ { 0x536F, 970 },
+ { 0x536B, 973 },
+ { 0x5372, 976 },
+ { 0x5378, 979 },
+ { 0x52B4, 982 },
+ { 0x52B1, 985 },
+ { 0x52AE, 988 },
+ { 0x52AF, 991 },
+ { 0x52C0, 994 },
+ { 0x52BD, 997 },
+ { 0x52BE, 1000 },
+ { 0x52BB, 1003 },
+ { 0x52C7, 1006 },
+ { 0x52C9, 1009 },
+ { 0x52C4, 1012 },
+ { 0x52C5, 1015 },
+ { 0x52CD, 1018 },
+ { 0x52CF, 1021 },
+ { 0x52CA, 1024 },
+ { 0x52CB, 1027 },
+ { 0x510A, 1030 },
+ { 0x5107, 1033 },
+ { 0x5108, 1036 },
+ { 0x513F, 1039 },
+ { 0x5149, 1042 },
+ { 0x5138, 1045 },
+ { 0x5146, 1048 },
+ { 0x514D, 1051 },
+ { 0x5113, 1054 },
+ { 0x5111, 1057 },
+ { 0x5105, 1060 },
+ { 0x5103, 1063 },
+ { 0x5100, 1066 },
+ { 0x5101, 1069 },
+ { 0x5110, 1072 },
+ { 0x510D, 1075 },
+ { 0x510E, 1078 },
+ { 0x510C, 1081 },
+ { 0x5117, 1084 },
+ { 0x5119, 1087 },
+ { 0x5114, 1090 },
+ { 0x5115, 1093 },
+ { 0x50D4, 1096 },
+ { 0x50D1, 1099 },
+ { 0x50D2, 1102 },
+ { 0x50D0, 1105 },
+ { 0x50CD, 1108 },
+ { 0x50CE, 1111 },
+ { 0x50D7, 1114 },
+ { 0x50D5, 1117 },
+ { 0x50DB, 1120 },
+ { 0x50DD, 1123 },
+ { 0x50D8, 1126 },
+ { 0x50D9, 1129 },
+ { 0x50E1, 1132 },
+ { 0x50DE, 1135 },
+ { 0x50DF, 1138 },
+ { 0x51E5, 1141 },
+ { 0x51E2, 1144 },
+ { 0x51E3, 1147 },
+ { 0x51F1, 1150 },
+ { 0x51EE, 1153 },
+ { 0x51EF, 1156 },
+ { 0x521C, 1159 },
+ { 0x5228, 1162 },
+ { 0x5216, 1165 },
+ { 0x5224, 1168 },
+ { 0x522C, 1171 },
+ { 0x51E0, 1174 },
+ { 0x51DD, 1177 },
+ { 0x51DA, 1180 },
+ { 0x51DB, 1183 },
+ { 0x51ED, 1186 },
+ { 0x51EA, 1189 },
+ { 0x51EB, 1192 },
+ { 0x51E8, 1195 },
+ { 0x51F5, 1198 },
+ { 0x51F7, 1201 },
+ { 0x51F2, 1204 },
+ { 0x51F3, 1207 },
+ { 0x5274, 1210 },
+ { 0x5271, 1213 },
+ { 0x5272, 1216 },
+ { 0x527F, 1219 },
+ { 0x527D, 1222 },
+ { 0x5270, 1225 },
+ { 0x526E, 1228 },
+ { 0x51A0, 1231 },
+ { 0x51A9, 1234 },
+ { 0x5199, 1237 },
+ { 0x51A6, 1240 },
+ { 0x51AD, 1243 },
+ { 0x51B3, 1246 },
+ { 0x509A, 1249 },
+ { 0x5093, 1252 },
+ { 0x50A1, 1255 },
+ { 0x50A5, 1258 },
+ { 0x50AA, 1261 },
+ { 0x5172, 1264 },
+ { 0x517A, 1267 },
+ { 0x516A, 1270 },
+ { 0x527C, 1273 },
+ { 0x5279, 1276 },
+ { 0x527A, 1279 },
+ { 0x5277, 1282 },
+ { 0x5250, 1285 },
+ { 0x525B, 1288 },
+ { 0x5248, 1291 },
+ { 0x5258, 1294 },
+ { 0x5007, 1297 },
+ { 0x5004, 1300 },
+ { 0x5005, 1303 },
+ { 0x53E6, 1306 },
+ { 0x53E3, 1309 },
+ { 0x53E0, 1312 },
+ { 0x53E1, 1315 },
+ { 0x541A, 1318 },
+ { 0x5425, 1321 },
+ { 0x5429, 1324 },
+ { 0x542F, 1327 },
+ { 0x53EF, 1330 },
+ { 0x53EC, 1333 },
+ { 0x53ED, 1336 },
+ { 0x53EA, 1339 },
+ { 0x53F3, 1342 },
+ { 0x53F5, 1345 },
+ { 0x53F0, 1348 },
+ { 0x53F1, 1351 },
+ { 0x53F9, 1354 },
+ { 0x53FB, 1357 },
+ { 0x53F6, 1360 },
+ { 0x53F7, 1363 },
+ { 0x5202, 1366 },
+ { 0x51FF, 1369 },
+ { 0x5200, 1372 },
+ { 0x520D, 1375 },
+ { 0x520A, 1378 },
+ { 0x520B, 1381 },
+ { 0x51FD, 1384 },
+ { 0x51FB, 1387 },
+ { 0x51F8, 1390 },
+ { 0x51F9, 1393 },
+ { 0x5209, 1396 },
+ { 0x5206, 1399 },
+ { 0x5207, 1402 },
+ { 0x5204, 1405 },
+ { 0x5211, 1408 },
+ { 0x5213, 1411 },
+ { 0x520E, 1414 },
+ { 0x520F, 1417 },
+ { 0x51C2, 1420 },
+ { 0x51BF, 1423 },
+ { 0x51C0, 1426 },
+ { 0x51CD, 1429 },
+ { 0x51CB, 1432 },
+ { 0x51BD, 1435 },
+ { 0x51BA, 1438 },
+ { 0x51B7, 1441 },
+ { 0x51B8, 1444 },
+ { 0x51CA, 1447 },
+ { 0x51C7, 1450 },
+ { 0x51C8, 1453 },
+ { 0x51C5, 1456 },
+ { 0x51D1, 1459 },
+ { 0x51D3, 1462 },
+ { 0x51CE, 1465 },
+ { 0x51CF, 1468 },
+ { 0x51D7, 1471 },
+ { 0x51D9, 1474 },
+ { 0x51D4, 1477 },
+ { 0x51D5, 1480 },
+ { 0x50B8, 1483 },
+ { 0x50B5, 1486 },
+ { 0x50B6, 1489 },
+ { 0x50C1, 1492 },
+ { 0x5234, 1495 },
+ { 0x523E, 1498 },
+ { 0x523B, 1501 },
+ { 0x5242, 1504 },
+ { 0x50B3, 1507 },
+ { 0x50B1, 1510 },
+ { 0x50AE, 1513 },
+ { 0x50AF, 1516 },
+ { 0x50C0, 1519 },
+ { 0x50BD, 1522 },
+ { 0x50BE, 1525 },
+ { 0x50BB, 1528 },
+ { 0x50C6, 1531 },
+ { 0x50C8, 1534 },
+ { 0x50C3, 1537 },
+ { 0x50C4, 1540 },
+ { 0x50CC, 1543 },
+ { 0x50C9, 1546 },
+ { 0x50CA, 1549 },
+ { 0x5186, 1552 },
+ { 0x5184, 1555 },
+ { 0x507F, 1558 },
+ { 0x5078, 1561 },
+ { 0x5083, 1564 },
+ { 0x5087, 1567 },
+ { 0x508D, 1570 },
+ { 0x5159, 1573 },
+ { 0x5160, 1576 },
+ { 0x5153, 1579 },
+ { 0x515D, 1582 },
+ { 0x5164, 1585 },
+ { 0x5190, 1588 },
+ { 0x518E, 1591 },
+ { 0x5262, 1594 },
+ { 0x526C, 1597 },
+ { 0x5269, 1600 },
+ { 0x5182, 1603 },
+ { 0x5180, 1606 },
+ { 0x517D, 1609 },
+ { 0x517E, 1612 },
+ { 0x5433, 1615 },
+ { 0x543D, 1618 },
+ { 0x5440, 1621 },
+ { 0x5446, 1624 },
+ { 0x518D, 1627 },
+ { 0x518A, 1630 },
+ { 0x518B, 1633 },
+ { 0x5396, 1636 },
+ { 0x539D, 1639 },
+ { 0x5399, 1642 },
+ { 0x53A1, 1645 },
+ { 0x53A7, 1648 },
+ { 0x5188, 1651 },
+ { 0x5194, 1654 },
+ { 0x5196, 1657 },
+ { 0x5191, 1660 },
+ { 0x5192, 1663 },
+ { 0x544C, 1666 },
+ { 0x5457, 1669 },
+ { 0x545B, 1672 },
+ { 0x52F6, 1675 },
+ { 0x52FD, 1678 },
+ { 0x52EF, 1681 },
+ { 0x52FF, 1684 },
+ { 0x5305, 1687 },
+ { 0x5042, 1690 },
+ { 0x503F, 1693 },
+ { 0x5040, 1696 },
+ { 0x503D, 1699 },
+ { 0x503B, 1702 },
+ { 0x5038, 1705 },
+ { 0x5039, 1708 },
+ { 0x5049, 1711 },
+ { 0x5046, 1714 },
+ { 0x5047, 1717 },
+ { 0x5044, 1720 },
+ { 0x504D, 1723 },
+ { 0x504F, 1726 },
+ { 0x504A, 1729 },
+ { 0x504B, 1732 },
+ { 0x5053, 1735 },
+ { 0x5055, 1738 },
+ { 0x5050, 1741 },
+ { 0x5051, 1744 },
+ { 0x5402, 1747 },
+ { 0x53FF, 1750 },
+ { 0x53FC, 1753 },
+ { 0x53FD, 1756 },
+ { 0x540B, 1759 },
+ { 0x5408, 1762 },
+ { 0x5409, 1765 },
+ { 0x5406, 1768 },
+ { 0x540F, 1771 },
+ { 0x5411, 1774 },
+ { 0x540C, 1777 },
+ { 0x540D, 1780 },
+ { 0x5415, 1783 },
+ { 0x5417, 1786 },
+ { 0x5412, 1789 },
+ { 0x5413, 1792 },
+ { 0x53C9, 1795 },
+ { 0x53C6, 1798 },
+ { 0x53C7, 1801 },
+ { 0x53D3, 1804 },
+ { 0x53D1, 1807 },
+ { 0x53D0, 1810 },
+ { 0x53CD, 1813 },
+ { 0x53CE, 1816 },
+ { 0x537D, 1819 },
+ { 0x5386, 1822 },
+ { 0x5382, 1825 },
+ { 0x538A, 1828 },
+ { 0x5390, 1831 },
+ { 0x53CB, 1834 },
+ { 0x53D7, 1837 },
+ { 0x53D9, 1840 },
+ { 0x53D4, 1843 },
+ { 0x53D5, 1846 },
+ { 0x53DD, 1849 },
+ { 0x53DF, 1852 },
+ { 0x53DA, 1855 },
+ { 0x53DB, 1858 },
+ { 0x5313, 1861 },
+ { 0x5310, 1864 },
+ { 0x5311, 1867 },
+ { 0x531D, 1870 },
+ { 0x531B, 1873 },
+ { 0x53AD, 1876 },
+ { 0x53B8, 1879 },
+ { 0x53B4, 1882 },
+ { 0x53BC, 1885 },
+ { 0x53C2, 1888 },
+ { 0x530E, 1891 },
+ { 0x530C, 1894 },
+ { 0x5309, 1897 },
+ { 0x530A, 1900 },
+ { 0x531A, 1903 },
+ { 0x5317, 1906 },
+ { 0x5318, 1909 },
+ { 0x5333, 1912 },
+ { 0x533A, 1915 },
+ { 0x532C, 1918 },
+ { 0x5337, 1921 },
+ { 0x533E, 1924 },
+ { 0x5342, 1927 },
+ { 0x5315, 1930 },
+ { 0x5321, 1933 },
+ { 0x5323, 1936 },
+ { 0x531E, 1939 },
+ { 0x531F, 1942 },
+ { 0x5327, 1945 },
+ { 0x5329, 1948 },
+ { 0x5324, 1951 },
+ { 0x5325, 1954 },
+ { 0x5124, 1957 },
+ { 0x5121, 1960 },
+ { 0x5122, 1963 },
+ { 0x512F, 1966 },
+ { 0x512D, 1969 },
+ { 0x511F, 1972 },
+ { 0x511D, 1975 },
+ { 0x511A, 1978 },
+ { 0x511B, 1981 },
+ { 0x512C, 1984 },
+ { 0x5129, 1987 },
+ { 0x512A, 1990 },
+ { 0x5127, 1993 },
+ { 0x5133, 1996 },
+ { 0x5135, 1999 },
+ { 0x5130, 2002 },
+ { 0x5131, 2005 },
+ { 0x500E, 2008 },
+ { 0x500C, 2011 },
+ { 0x50ED, 2014 },
+ { 0x50EA, 2017 },
+ { 0x50EB, 2020 },
+ { 0x50F3, 2023 },
+ { 0x50F2, 2026 },
+ { 0x50E8, 2029 },
+ { 0x50E5, 2032 },
+ { 0x50E2, 2035 },
+ { 0x50E3, 2038 },
+ { 0x50F1, 2041 },
+ { 0x50EE, 2044 },
+ { 0x50EF, 2047 },
+ { 0x50F7, 2050 },
+ { 0x50F9, 2053 },
+ { 0x50F4, 2056 },
+ { 0x50F5, 2059 },
+ { 0x50FD, 2062 },
+ { 0x50FF, 2065 },
+ { 0x50FA, 2068 },
+ { 0x50FB, 2071 },
+ { 0x5283, 2074 },
+ { 0x5280, 2077 },
+ { 0x5281, 2080 },
+ { 0x528C, 2083 },
+ { 0x528A, 2086 },
+ { 0x5289, 2089 },
+ { 0x5287, 2092 },
+ { 0x5285, 2095 },
+ { 0x5463, 2098 },
+ { 0x5460, 2101 },
+ { 0x545D, 2104 },
+ { 0x545E, 2107 },
+ { 0x546A, 2110 },
+ { 0x5467, 2113 },
+ { 0x5468, 2116 },
+ { 0x5466, 2119 },
+ { 0x546E, 2122 },
+ { 0x5470, 2125 },
+ { 0x546B, 2128 },
+ { 0x546C, 2131 },
+ { 0x5477, 2134 },
+ { 0x5474, 2137 },
+ { 0x5471, 2140 },
+ { 0x5472, 2143 },
+ { 0x5480, 2146 },
+ { 0x547D, 2149 },
+ { 0x547E, 2152 },
+ { 0x547B, 2155 },
+ { 0x5484, 2158 },
+ { 0x5486, 2161 },
+ { 0x5481, 2164 },
+ { 0x5482, 2167 },
+ { 0x548A, 2170 },
+ { 0x548C, 2173 },
+ { 0x5487, 2176 },
+ { 0x5488, 2179 },
+ { 0x5297, 2182 },
+ { 0x5294, 2185 },
+ { 0x5295, 2188 },
+ { 0x52A1, 2191 },
+ { 0x529F, 2194 },
+ { 0x5348, 2197 },
+ { 0x5353, 2200 },
+ { 0x534F, 2203 },
+ { 0x5357, 2206 },
+ { 0x535D, 2209 },
+ { 0x5292, 2212 },
+ { 0x5290, 2215 },
+ { 0x528D, 2218 },
+ { 0x528E, 2221 },
+ { 0x529E, 2224 },
+ { 0x529B, 2227 },
+ { 0x529C, 2230 },
+ { 0x5299, 2233 },
+ { 0x52A5, 2236 },
+ { 0x52A7, 2239 },
+ { 0x52A2, 2242 },
+ { 0x52A3, 2245 },
+ { 0x52AB, 2248 },
+ { 0x52AD, 2251 },
+ { 0x52A8, 2254 },
+ { 0x52A9, 2257 },
+ { 0x52DA, 2260 },
+ { 0x52E0, 2263 },
+ { 0x52D2, 2266 },
+ { 0x52DD, 2269 },
+ { 0x52E3, 2272 },
+ { 0x52E9, 2275 },
+ { 0x5061, 2278 },
+ { 0x505E, 2281 },
+ { 0x505F, 2284 },
+ { 0x506B, 2287 },
+ { 0x5069, 2290 },
+ { 0x505C, 2293 },
+ { 0x5059, 2296 },
+ { 0x5056, 2299 },
+ { 0x5057, 2302 },
+ { 0x5068, 2305 },
+ { 0x5065, 2308 },
+ { 0x5066, 2311 },
+ { 0x5063, 2314 },
+ { 0x506F, 2317 },
+ { 0x5071, 2320 },
+ { 0x506C, 2323 },
+ { 0x506D, 2326 },
+ { 0x5075, 2329 },
+ { 0x5072, 2332 },
+ { 0x5073, 2335 },
+ { 0x501D, 2338 },
+ { 0x501A, 2341 },
+ { 0x501B, 2344 },
+ { 0x5024, 2347 },
+ { 0x5022, 2350 },
+ { 0x5030, 2353 },
+ { 0x5036, 2356 },
+ { 0x5364, 2359 },
+ { 0x5361, 2362 },
+ { 0x5362, 2365 },
+ { 0x5370, 2368 },
+ { 0x536D, 2371 },
+ { 0x536E, 2374 },
+ { 0x536C, 2377 },
+ { 0x5369, 2380 },
+ { 0x536A, 2383 },
+ { 0x5367, 2386 },
+ { 0x5373, 2389 },
+ { 0x5375, 2392 },
+ { 0x5371, 2395 },
+ { 0x5379, 2398 },
+ { 0x537B, 2401 },
+ { 0x5376, 2404 },
+ { 0x5377, 2407 },
+ { 0x52B5, 2410 },
+ { 0x52B2, 2413 },
+ { 0x52B3, 2416 },
+ { 0x52BC, 2419 },
+ { 0x52BA, 2422 },
+ { 0x52C8, 2425 },
+ { 0x52CE, 2428 },
+ { 0x5140, 2431 },
+ { 0x513D, 2434 },
+ { 0x513E, 2437 },
+ { 0x514A, 2440 },
+ { 0x5148, 2443 },
+ { 0x513B, 2446 },
+ { 0x5139, 2449 },
+ { 0x5136, 2452 },
+ { 0x5137, 2455 },
+ { 0x5147, 2458 },
+ { 0x5144, 2461 },
+ { 0x5145, 2464 },
+ { 0x5142, 2467 },
+ { 0x514E, 2470 },
+ { 0x5150, 2473 },
+ { 0x514B, 2476 },
+ { 0x514C, 2479 },
+ { 0x5106, 2482 },
+ { 0x5104, 2485 },
+ { 0x510B, 2488 },
+ { 0x5118, 2491 },
+ { 0x50DC, 2494 },
+ { 0x521D, 2497 },
+ { 0x521A, 2500 },
+ { 0x521B, 2503 },
+ { 0x5229, 2506 },
+ { 0x5226, 2509 },
+ { 0x5227, 2512 },
+ { 0x5218, 2515 },
+ { 0x5214, 2518 },
+ { 0x5215, 2521 },
+ { 0x5225, 2524 },
+ { 0x5222, 2527 },
+ { 0x5223, 2530 },
+ { 0x5220, 2533 },
+ { 0x522D, 2536 },
+ { 0x522F, 2539 },
+ { 0x522A, 2542 },
+ { 0x522B, 2545 },
+ { 0x51E1, 2548 },
+ { 0x51DE, 2551 },
+ { 0x51DF, 2554 },
+ { 0x51E9, 2557 },
+ { 0x51E6, 2560 },
+ { 0x51E7, 2563 },
+ { 0x51F6, 2566 },
+ { 0x526F, 2569 },
+ { 0x51A1, 2572 },
+ { 0x519E, 2575 },
+ { 0x519F, 2578 },
+ { 0x51AA, 2581 },
+ { 0x51A8, 2584 },
+ { 0x519C, 2587 },
+ { 0x519A, 2590 },
+ { 0x5197, 2593 },
+ { 0x5198, 2596 },
+ { 0x51A7, 2599 },
+ { 0x51A5, 2602 },
+ { 0x51A3, 2605 },
+ { 0x51AE, 2608 },
+ { 0x51B0, 2611 },
+ { 0x51AB, 2614 },
+ { 0x51AC, 2617 },
+ { 0x51B4, 2620 },
+ { 0x51B6, 2623 },
+ { 0x51B1, 2626 },
+ { 0x51B2, 2629 },
+ { 0x509B, 2632 },
+ { 0x5098, 2635 },
+ { 0x5099, 2638 },
+ { 0x5096, 2641 },
+ { 0x5094, 2644 },
+ { 0x5091, 2647 },
+ { 0x5092, 2650 },
+ { 0x50A2, 2653 },
+ { 0x509F, 2656 },
+ { 0x50A0, 2659 },
+ { 0x509D, 2662 },
+ { 0x50A6, 2665 },
+ { 0x50A8, 2668 },
+ { 0x50A3, 2671 },
+ { 0x50A4, 2674 },
+ { 0x50AB, 2677 },
+ { 0x50AD, 2680 },
+ { 0x50A9, 2683 },
+ { 0x5173, 2686 },
+ { 0x5170, 2689 },
+ { 0x5171, 2692 },
+ { 0x517B, 2695 },
+ { 0x5179, 2698 },
+ { 0x516E, 2701 },
+ { 0x516B, 2704 },
+ { 0x5168, 2707 },
+ { 0x5169, 2710 },
+ { 0x5178, 2713 },
+ { 0x5176, 2716 },
+ { 0x5177, 2719 },
+ { 0x5175, 2722 },
+ { 0x517C, 2725 },
+ { 0x5278, 2728 },
+ { 0x5275, 2731 },
+ { 0x5276, 2734 },
+ { 0x5251, 2737 },
+ { 0x524E, 2740 },
+ { 0x524F, 2743 },
+ { 0x525C, 2746 },
+ { 0x525A, 2749 },
+ { 0x524C, 2752 },
+ { 0x5249, 2755 },
+ { 0x5246, 2758 },
+ { 0x5247, 2761 },
+ { 0x5259, 2764 },
+ { 0x5256, 2767 },
+ { 0x5257, 2770 },
+ { 0x5254, 2773 },
+ { 0x53E7, 2776 },
+ { 0x53E4, 2779 },
+ { 0x53E5, 2782 },
+ { 0x541E, 2785 },
+ { 0x541B, 2788 },
+ { 0x5418, 2791 },
+ { 0x5419, 2794 },
+ { 0x5426, 2797 },
+ { 0x5423, 2800 },
+ { 0x5424, 2803 },
+ { 0x5421, 2806 },
+ { 0x542A, 2809 },
+ { 0x542C, 2812 },
+ { 0x5427, 2815 },
+ { 0x5428, 2818 },
+ { 0x5430, 2821 },
+ { 0x542D, 2824 },
+ { 0x542E, 2827 },
+ { 0x53EB, 2830 },
+ { 0x53E8, 2833 },
+ { 0x53E9, 2836 },
+ { 0x53F4, 2839 },
+ { 0x53FA, 2842 },
+ { 0x51FE, 2845 },
+ { 0x51FC, 2848 },
+ { 0x5205, 2851 },
+ { 0x5203, 2854 },
+ { 0x5212, 2857 },
+ { 0x51BE, 2860 },
+ { 0x51BB, 2863 },
+ { 0x51BC, 2866 },
+ { 0x51C6, 2869 },
+ { 0x51C3, 2872 },
+ { 0x51C4, 2875 },
+ { 0x51D2, 2878 },
+ { 0x51D8, 2881 },
+ { 0x5235, 2884 },
+ { 0x5232, 2887 },
+ { 0x5233, 2890 },
+ { 0x523F, 2893 },
+ { 0x523D, 2896 },
+ { 0x5231, 2899 },
+ { 0x523C, 2902 },
+ { 0x5239, 2905 },
+ { 0x523A, 2908 },
+ { 0x5237, 2911 },
+ { 0x5243, 2914 },
+ { 0x5245, 2917 },
+ { 0x5240, 2920 },
+ { 0x5241, 2923 },
+ { 0x50B4, 2926 },
+ { 0x50B2, 2929 },
+ { 0x50BC, 2932 },
+ { 0x50B9, 2935 },
+ { 0x50BA, 2938 },
+ { 0x50C7, 2941 },
+ { 0x5080, 2944 },
+ { 0x507D, 2947 },
+ { 0x507E, 2950 },
+ { 0x507B, 2953 },
+ { 0x5079, 2956 },
+ { 0x5076, 2959 },
+ { 0x5077, 2962 },
+ { 0x5084, 2965 },
+ { 0x5081, 2968 },
+ { 0x5082, 2971 },
+ { 0x5088, 2974 },
+ { 0x508A, 2977 },
+ { 0x5085, 2980 },
+ { 0x5086, 2983 },
+ { 0x508E, 2986 },
+ { 0x5090, 2989 },
+ { 0x508B, 2992 },
+ { 0x508C, 2995 },
+ { 0x515A, 2998 },
+ { 0x5157, 3001 },
+ { 0x5158, 3004 },
+ { 0x5161, 3007 },
+ { 0x515F, 3010 },
+ { 0x5156, 3013 },
+ { 0x5154, 3016 },
+ { 0x5151, 3019 },
+ { 0x5152, 3022 },
+ { 0x515E, 3025 },
+ { 0x515B, 3028 },
+ { 0x515C, 3031 },
+ { 0x5165, 3034 },
+ { 0x5167, 3037 },
+ { 0x5162, 3040 },
+ { 0x5163, 3043 },
+ { 0x5263, 3046 },
+ { 0x5260, 3049 },
+ { 0x5261, 3052 },
+ { 0x526D, 3055 },
+ { 0x526B, 3058 },
+ { 0x525E, 3061 },
+ { 0x526A, 3064 },
+ { 0x5267, 3067 },
+ { 0x5268, 3070 },
+ { 0x5266, 3073 },
+ { 0x5183, 3076 },
+ { 0x5181, 3079 },
+ { 0x5437, 3082 },
+ { 0x5434, 3085 },
+ { 0x5431, 3088 },
+ { 0x5432, 3091 },
+ { 0x543E, 3094 },
+ { 0x543B, 3097 },
+ { 0x543C, 3100 },
+ { 0x543A, 3103 },
+ { 0x5441, 3106 },
+ { 0x5443, 3109 },
+ { 0x543F, 3112 },
+ { 0x5447, 3115 },
+ { 0x5449, 3118 },
+ { 0x5444, 3121 },
+ { 0x5445, 3124 },
+ { 0x5397, 3127 },
+ { 0x5394, 3130 },
+ { 0x5395, 3133 },
+ { 0x539E, 3136 },
+ { 0x539B, 3139 },
+ { 0x539C, 3142 },
+ { 0x539A, 3145 },
+ { 0x5398, 3148 },
+ { 0x53A2, 3151 },
+ { 0x53A4, 3154 },
+ { 0x539F, 3157 },
+ { 0x53A0, 3160 },
+ { 0x53A8, 3163 },
+ { 0x53AA, 3166 },
+ { 0x53A5, 3169 },
+ { 0x53A6, 3172 },
+ { 0x5189, 3175 },
+ { 0x5187, 3178 },
+ { 0x5195, 3181 },
+ { 0x5450, 3184 },
+ { 0x544D, 3187 },
+ { 0x544A, 3190 },
+ { 0x544B, 3193 },
+ { 0x5458, 3196 },
+ { 0x5455, 3199 },
+ { 0x5456, 3202 },
+ { 0x5453, 3205 },
+ { 0x545C, 3208 },
+ { 0x5459, 3211 },
+ { 0x545A, 3214 },
+ { 0x52F7, 3217 },
+ { 0x52F4, 3220 },
+ { 0x52F5, 3223 },
+ { 0x52FC, 3226 },
+ { 0x52F2, 3229 },
+ { 0x52F0, 3232 },
+ { 0x52ED, 3235 },
+ { 0x52EE, 3238 },
+ { 0x52FB, 3241 },
+ { 0x52FA, 3244 },
+ { 0x52F9, 3247 },
+ { 0x5300, 3250 },
+ { 0x5302, 3253 },
+ { 0x52FE, 3256 },
+ { 0x5306, 3259 },
+ { 0x5308, 3262 },
+ { 0x5303, 3265 },
+ { 0x5304, 3268 },
+ { 0x503E, 3271 },
+ { 0x503C, 3274 },
+ { 0x5045, 3277 },
+ { 0x5043, 3280 },
+ { 0x504E, 3283 },
+ { 0x5054, 3286 },
+ { 0x5403, 3289 },
+ { 0x5400, 3292 },
+ { 0x5401, 3295 },
+ { 0x5407, 3298 },
+ { 0x5404, 3301 },
+ { 0x5405, 3304 },
+ { 0x5410, 3307 },
+ { 0x5416, 3310 },
+ { 0x537C, 3313 },
+ { 0x5387, 3316 },
+ { 0x5384, 3319 },
+ { 0x5385, 3322 },
+ { 0x5383, 3325 },
+ { 0x5380, 3328 },
+ { 0x5381, 3331 },
+ { 0x537F, 3334 },
+ { 0x538B, 3337 },
+ { 0x538D, 3340 },
+ { 0x5388, 3343 },
+ { 0x5389, 3346 },
+ { 0x5391, 3349 },
+ { 0x5393, 3352 },
+ { 0x538E, 3355 },
+ { 0x538F, 3358 },
+ { 0x53CC, 3361 },
+ { 0x53CA, 3364 },
+ { 0x53D8, 3367 },
+ { 0x53DE, 3370 },
+ { 0x53AE, 3373 },
+ { 0x53AB, 3376 },
+ { 0x53AC, 3379 },
+ { 0x53B9, 3382 },
+ { 0x53B6, 3385 },
+ { 0x53B7, 3388 },
+ { 0x53B5, 3391 },
+ { 0x53B2, 3394 },
+ { 0x53B3, 3397 },
+ { 0x53B0, 3400 },
+ { 0x53BD, 3403 },
+ { 0x53BF, 3406 },
+ { 0x53BA, 3409 },
+ { 0x53BB, 3412 },
+ { 0x53C3, 3415 },
+ { 0x53C5, 3418 },
+ { 0x53C0, 3421 },
+ { 0x53C1, 3424 },
+ { 0x530F, 3427 },
+ { 0x530D, 3430 },
+ { 0x5334, 3433 },
+ { 0x5331, 3436 },
+ { 0x5332, 3439 },
+ { 0x533B, 3442 },
+ { 0x5339, 3445 },
+ { 0x532F, 3448 },
+ { 0x532D, 3451 },
+ { 0x532A, 3454 },
+ { 0x532B, 3457 },
+ { 0x5338, 3460 },
+ { 0x5335, 3463 },
+ { 0x5336, 3466 },
+ { 0x533F, 3469 },
+ { 0x533C, 3472 },
+ { 0x533D, 3475 },
+ { 0x5343, 3478 },
+ { 0x5345, 3481 },
+ { 0x5340, 3484 },
+ { 0x5341, 3487 },
+ { 0x5316, 3490 },
+ { 0x5314, 3493 },
+ { 0x5322, 3496 },
+ { 0x5328, 3499 },
+ { 0x5120, 3502 },
+ { 0x511E, 3505 },
+ { 0x5128, 3508 },
+ { 0x5125, 3511 },
+ { 0x5126, 3514 },
+ { 0x5134, 3517 },
+ { 0x50E9, 3520 },
+ { 0x50E6, 3523 },
+ { 0x50E7, 3526 },
+ { 0x50F8, 3529 },
+ { 0x50FE, 3532 },
+ { 0x5286, 3535 },
+ { 0x5284, 3538 },
+ { 0x5464, 3541 },
+ { 0x5461, 3544 },
+ { 0x5462, 3547 },
+ { 0x5465, 3550 },
+ { 0x546F, 3553 },
+ { 0x5478, 3556 },
+ { 0x5475, 3559 },
+ { 0x5476, 3562 },
+ { 0x547C, 3565 },
+ { 0x5479, 3568 },
+ { 0x547A, 3571 },
+ { 0x5485, 3574 },
+ { 0x548B, 3577 },
+ { 0x5349, 3580 },
+ { 0x5346, 3583 },
+ { 0x5347, 3586 },
+ { 0x5354, 3589 },
+ { 0x5351, 3592 },
+ { 0x5352, 3595 },
+ { 0x5350, 3598 },
+ { 0x534D, 3601 },
+ { 0x534E, 3604 },
+ { 0x534B, 3607 },
+ { 0x5358, 3610 },
+ { 0x535A, 3613 },
+ { 0x5355, 3616 },
+ { 0x5356, 3619 },
+ { 0x535E, 3622 },
+ { 0x5360, 3625 },
+ { 0x535B, 3628 },
+ { 0x535C, 3631 },
+ { 0x5293, 3634 },
+ { 0x5291, 3637 },
+ { 0x529A, 3640 },
+ { 0x5298, 3643 },
+ { 0x52A6, 3646 },
+ { 0x52AC, 3649 },
+ { 0x52DB, 3652 },
+ { 0x52D8, 3655 },
+ { 0x52D9, 3658 },
+ { 0x52E1, 3661 },
+ { 0x52DF, 3664 },
+ { 0x52D6, 3667 },
+ { 0x52D3, 3670 },
+ { 0x52D0, 3673 },
+ { 0x52D1, 3676 },
+ { 0x52DE, 3679 },
+ { 0x52DC, 3682 },
+ { 0x52E4, 3685 },
+ { 0x52E6, 3688 },
+ { 0x52E2, 3691 },
+ { 0x52EA, 3694 },
+ { 0x52EC, 3697 },
+ { 0x52E7, 3700 },
+ { 0x52E8, 3703 },
+ { 0x505D, 3706 },
+ { 0x505A, 3709 },
+ { 0x505B, 3712 },
+ { 0x5064, 3715 },
+ { 0x5062, 3718 },
+ { 0x5070, 3721 },
+ { 0x5368, 3724 },
+ { 0x5365, 3727 },
+ { 0x5366, 3730 },
+ { 0x5374, 3733 },
+ { 0x537A, 3736 },
+ { 0x513C, 3739 },
+ { 0x513A, 3742 },
+ { 0x5143, 3745 },
+ { 0x5141, 3748 },
+ { 0x514F, 3751 },
+ { 0x5219, 3754 },
+ { 0x5217, 3757 },
+ { 0x5221, 3760 },
+ { 0x521E, 3763 },
+ { 0x521F, 3766 },
+ { 0x522E, 3769 },
+ { 0x519D, 3772 },
+ { 0x519B, 3775 },
+ { 0x51A4, 3778 },
+ { 0x51A2, 3781 },
+ { 0x51AF, 3784 },
+ { 0x51B5, 3787 },
+ { 0x5097, 3790 },
+ { 0x5095, 3793 },
+ { 0x509E, 3796 },
+ { 0x509C, 3799 },
+ { 0x50A7, 3802 },
+ { 0x50AC, 3805 },
+ { 0x516F, 3808 },
+ { 0x516C, 3811 },
+ { 0x516D, 3814 },
+ { 0x5174, 3817 },
+ { 0x524D, 3820 },
+ { 0x524A, 3823 },
+ { 0x524B, 3826 },
+ { 0x5255, 3829 },
+ { 0x5252, 3832 },
+ { 0x5253, 3835 },
+ { 0x541F, 3838 },
+ { 0x541C, 3841 },
+ { 0x541D, 3844 },
+ { 0x5422, 3847 },
+ { 0x5420, 3850 },
+ { 0x542B, 3853 },
+ { 0x5230, 3856 },
+ { 0x5238, 3859 },
+ { 0x5236, 3862 },
+ { 0x5244, 3865 },
+ { 0x507C, 3868 },
+ { 0x507A, 3871 },
+ { 0x5089, 3874 },
+ { 0x508F, 3877 },
+ { 0x5155, 3880 },
+ { 0x5166, 3883 },
+ { 0x525F, 3886 },
+ { 0x525D, 3889 },
+ { 0x5264, 3892 },
+ { 0x5265, 3895 },
+ { 0x5438, 3898 },
+ { 0x5435, 3901 },
+ { 0x5436, 3904 },
+ { 0x5439, 3907 },
+ { 0x5442, 3910 },
+ { 0x5448, 3913 },
+ { 0x53A3, 3916 },
+ { 0x53A9, 3919 },
+ { 0x5451, 3922 },
+ { 0x544E, 3925 },
+ { 0x544F, 3928 },
+ { 0x5454, 3931 },
+ { 0x5452, 3934 },
+ { 0x52F3, 3937 },
+ { 0x52F1, 3940 },
+ { 0x52F8, 3943 },
+ { 0x5301, 3946 },
+ { 0x5307, 3949 },
+ { 0x537E, 3952 },
+ { 0x538C, 3955 },
+ { 0x5392, 3958 },
+ { 0x53B1, 3961 },
+ { 0x53AF, 3964 },
+ { 0x53BE, 3967 },
+ { 0x53C4, 3970 },
+ { 0x5330, 3973 },
+ { 0x532E, 3976 },
+ { 0x5344, 3979 },
+ { 0x534C, 3982 },
+ { 0x534A, 3985 },
+ { 0x5359, 3988 },
+ { 0x535F, 3991 },
+ { 0x52D7, 3994 },
+ { 0x52D4, 3997 },
+ { 0x52D5, 4000 },
+ { 0x52E5, 4003 },
+ { 0x52EB, 4006 },
+ { 0x262C, 4009 },
+ { 0x224C, 4011 },
+ { 0x232E, 4014 },
+ { 0x27D1, 4016 },
+ { 0x235D, 4019 },
+ { 0x2355, 4025 },
+ { 0x2351, 4031 },
+ { 0x2361, 4037 },
+ { 0x2372, 4043 },
+ { 0x2352, 4049 },
+ { 0x236B, 4054 },
+ { 0x2362, 4059 },
+ { 0x235B, 4064 },
+ { 0x2364, 4069 },
+ { 0x2374, 4074 },
+ { 0x2366, 4078 },
+ { 0x234E, 4084 },
+ { 0x234A, 4090 },
+ { 0x2371, 4096 },
+ { 0x2373, 4102 },
+ { 0x2378, 4106 },
+ { 0x2367, 4111 },
+ { 0x2395, 4117 },
+ { 0x2353, 4121 },
+ { 0x2354, 4127 },
+ { 0x233B, 4132 },
+ { 0x236F, 4137 },
+ { 0x234C, 4143 },
+ { 0x2360, 4149 },
+ { 0x234D, 4154 },
+ { 0x2338, 4159 },
+ { 0x2341, 4164 },
+ { 0x233C, 4169 },
+ { 0x2339, 4174 },
+ { 0x233A, 4179 },
+ { 0x2350, 4184 },
+ { 0x2370, 4190 },
+ { 0x2342, 4195 },
+ { 0x2357, 4200 },
+ { 0x2347, 4206 },
+ { 0x2343, 4212 },
+ { 0x2348, 4217 },
+ { 0x2344, 4223 },
+ { 0x2363, 4228 },
+ { 0x237A, 4233 },
+ { 0x2376, 4237 },
+ { 0x236A, 4242 },
+ { 0x234B, 4247 },
+ { 0x2359, 4252 },
+ { 0x2375, 4257 },
+ { 0x2379, 4261 },
+ { 0x235E, 4266 },
+ { 0x2358, 4271 },
+ { 0x233F, 4276 },
+ { 0x236D, 4281 },
+ { 0x2368, 4286 },
+ { 0x236C, 4291 },
+ { 0x233E, 4295 },
+ { 0x235F, 4300 },
+ { 0x233D, 4305 },
+ { 0x235C, 4310 },
+ { 0x2349, 4315 },
+ { 0x2365, 4320 },
+ { 0x2336, 4325 },
+ { 0x2337, 4329 },
+ { 0x235A, 4334 },
+ { 0x2377, 4339 },
+ { 0x234F, 4344 },
+ { 0x2340, 4349 },
+ { 0x2356, 4354 },
+ { 0x2345, 4359 },
+ { 0x236E, 4364 },
+ { 0x2346, 4369 },
+ { 0x2369, 4374 },
+ { 0x2312, 4379 },
+ { 0x2136, 4380 },
+ { 0x29F9, 4382 },
+ { 0x29F8, 4385 },
+ { 0x2540, 4387 },
+ { 0x2526, 4395 },
+ { 0x251A, 4403 },
+ { 0x251E, 4410 },
+ { 0x2516, 4418 },
+ { 0x2538, 4425 },
+ { 0x2548, 4432 },
+ { 0x252A, 4440 },
+ { 0x2519, 4448 },
+ { 0x2522, 4455 },
+ { 0x2515, 4463 },
+ { 0x2537, 4470 },
+ { 0x255C, 4477 },
+ { 0x2559, 4484 },
+ { 0x2568, 4491 },
+ { 0x255B, 4498 },
+ { 0x2558, 4505 },
+ { 0x2567, 4512 },
+ { 0x2541, 4519 },
+ { 0x2527, 4527 },
+ { 0x2512, 4535 },
+ { 0x251F, 4542 },
+ { 0x250E, 4550 },
+ { 0x2530, 4557 },
+ { 0x2547, 4564 },
+ { 0x2529, 4572 },
+ { 0x2511, 4580 },
+ { 0x2521, 4587 },
+ { 0x250D, 4595 },
+ { 0x252F, 4602 },
+ { 0x2556, 4609 },
+ { 0x2553, 4616 },
+ { 0x2565, 4623 },
+ { 0x2555, 4630 },
+ { 0x2552, 4637 },
+ { 0x2564, 4644 },
+ { 0x2543, 4651 },
+ { 0x2545, 4660 },
+ { 0x2535, 4669 },
+ { 0x252D, 4677 },
+ { 0x253D, 4685 },
+ { 0x253A, 4693 },
+ { 0x2532, 4701 },
+ { 0x254A, 4709 },
+ { 0x2579, 4717 },
+ { 0x251B, 4721 },
+ { 0x257F, 4727 },
+ { 0x2517, 4734 },
+ { 0x253B, 4740 },
+ { 0x257B, 4746 },
+ { 0x2513, 4750 },
+ { 0x250F, 4756 },
+ { 0x2533, 4762 },
+ { 0x2578, 4768 },
+ { 0x257E, 4772 },
+ { 0x257A, 4779 },
+ { 0x254F, 4783 },
+ { 0x254D, 4789 },
+ { 0x2507, 4795 },
+ { 0x2505, 4801 },
+ { 0x2503, 4807 },
+ { 0x252B, 4811 },
+ { 0x2523, 4817 },
+ { 0x254B, 4823 },
+ { 0x250B, 4829 },
+ { 0x2509, 4835 },
+ { 0x2501, 4841 },
+ { 0x2575, 4845 },
+ { 0x2518, 4849 },
+ { 0x257D, 4855 },
+ { 0x2514, 4862 },
+ { 0x2534, 4868 },
+ { 0x256F, 4874 },
+ { 0x2570, 4881 },
+ { 0x256E, 4888 },
+ { 0x256D, 4895 },
+ { 0x2577, 4902 },
+ { 0x2510, 4906 },
+ { 0x250C, 4912 },
+ { 0x252C, 4918 },
+ { 0x2574, 4924 },
+ { 0x257C, 4928 },
+ { 0x2576, 4935 },
+ { 0x254E, 4939 },
+ { 0x254C, 4945 },
+ { 0x2506, 4951 },
+ { 0x2504, 4957 },
+ { 0x2573, 4963 },
+ { 0x2572, 4968 },
+ { 0x2571, 4977 },
+ { 0x2502, 4986 },
+ { 0x2524, 4990 },
+ { 0x251C, 4996 },
+ { 0x253C, 5002 },
+ { 0x250A, 5008 },
+ { 0x2508, 5014 },
+ { 0x2500, 5020 },
+ { 0x2544, 5024 },
+ { 0x2546, 5033 },
+ { 0x2536, 5042 },
+ { 0x252E, 5050 },
+ { 0x253E, 5058 },
+ { 0x2539, 5066 },
+ { 0x2531, 5074 },
+ { 0x2549, 5082 },
+ { 0x255D, 5090 },
+ { 0x255A, 5096 },
+ { 0x2569, 5102 },
+ { 0x2557, 5108 },
+ { 0x2554, 5114 },
+ { 0x2566, 5120 },
+ { 0x2551, 5126 },
+ { 0x2563, 5130 },
+ { 0x2560, 5136 },
+ { 0x256C, 5142 },
+ { 0x2550, 5148 },
+ { 0x2528, 5152 },
+ { 0x2520, 5159 },
+ { 0x2542, 5166 },
+ { 0x2525, 5173 },
+ { 0x251D, 5180 },
+ { 0x253F, 5187 },
+ { 0x2562, 5194 },
+ { 0x255F, 5201 },
+ { 0x256B, 5208 },
+ { 0x2561, 5215 },
+ { 0x255E, 5222 },
+ { 0x256A, 5229 },
+ { 0x2627, 5236 },
+ { 0x31D4, 5238 },
+ { 0x31D0, 5241 },
+ { 0x31CF, 5244 },
+ { 0x31D2, 5247 },
+ { 0x31E3, 5250 },
+ { 0x31D1, 5253 },
+ { 0x31C0, 5256 },
+ { 0x31D6, 5259 },
+ { 0x31C7, 5262 },
+ { 0x31D5, 5265 },
+ { 0x31DB, 5268 },
+ { 0x31E2, 5271 },
+ { 0x31DC, 5274 },
+ { 0x31DA, 5277 },
+ { 0x31D3, 5280 },
+ { 0x31D9, 5283 },
+ { 0x31C4, 5286 },
+ { 0x31D7, 5289 },
+ { 0x31DD, 5292 },
+ { 0x31C1, 5295 },
+ { 0x31C2, 5298 },
+ { 0x31C3, 5301 },
+ { 0x31C6, 5304 },
+ { 0x31CA, 5307 },
+ { 0x31CD, 5310 },
+ { 0x31C5, 5313 },
+ { 0x31DF, 5316 },
+ { 0x31D8, 5319 },
+ { 0x31DE, 5322 },
+ { 0x31CC, 5325 },
+ { 0x31E0, 5328 },
+ { 0x31C8, 5331 },
+ { 0x31CB, 5334 },
+ { 0x31CE, 5337 },
+ { 0x31C9, 5340 },
+ { 0x31E1, 5343 },
+ { 0x2E86, 5346 },
+ { 0x2EA7, 5349 },
+ { 0x2EA8, 5352 },
+ { 0x2EDD, 5355 },
+ { 0x2EDE, 5359 },
+ { 0x2EDF, 5363 },
+ { 0x2EB8, 5367 },
+ { 0x2EAB, 5370 },
+ { 0x2EB1, 5373 },
+ { 0x2EB2, 5377 },
+ { 0x2EB4, 5381 },
+ { 0x2EB3, 5385 },
+ { 0x2EB9, 5389 },
+ { 0x2EA4, 5392 },
+ { 0x2EA5, 5396 },
+ { 0x2EB7, 5400 },
+ { 0x2E99, 5403 },
+ { 0x2E9C, 5406 },
+ { 0x2ED8, 5409 },
+ { 0x2EAA, 5412 },
+ { 0x2EE3, 5417 },
+ { 0x2ECF, 5420 },
+ { 0x2EA3, 5423 },
+ { 0x2ECA, 5426 },
+ { 0x2E98, 5429 },
+ { 0x2EE1, 5432 },
+ { 0x2EC7, 5435 },
+ { 0x2EA9, 5438 },
+ { 0x2E8E, 5441 },
+ { 0x2E8F, 5445 },
+ { 0x2E91, 5449 },
+ { 0x2E90, 5453 },
+ { 0x2ED1, 5457 },
+ { 0x2ED2, 5461 },
+ { 0x2EBC, 5465 },
+ { 0x2EB5, 5468 },
+ { 0x2E9D, 5471 },
+ { 0x2ED7, 5474 },
+ { 0x2E8B, 5477 },
+ { 0x2EAF, 5480 },
+ { 0x2ECD, 5483 },
+ { 0x2ECE, 5487 },
+ { 0x2EC3, 5491 },
+ { 0x2EC4, 5495 },
+ { 0x2EBA, 5499 },
+ { 0x2EBB, 5503 },
+ { 0x2E9B, 5507 },
+ { 0x2E81, 5510 },
+ { 0x2E9E, 5513 },
+ { 0x2EE4, 5516 },
+ { 0x2EBE, 5519 },
+ { 0x2EBF, 5523 },
+ { 0x2EC0, 5527 },
+ { 0x2E96, 5531 },
+ { 0x2E97, 5535 },
+ { 0x2E88, 5539 },
+ { 0x2E89, 5543 },
+ { 0x2ED5, 5547 },
+ { 0x2ED6, 5551 },
+ { 0x2EB6, 5555 },
+ { 0x2E8C, 5558 },
+ { 0x2E8D, 5562 },
+ { 0x2E92, 5566 },
+ { 0x2E94, 5569 },
+ { 0x2E95, 5573 },
+ { 0x2E87, 5577 },
+ { 0x2EC1, 5580 },
+ { 0x2EA1, 5583 },
+ { 0x2EA2, 5587 },
+ { 0x2EAE, 5591 },
+ { 0x2EBD, 5594 },
+ { 0x2E9F, 5597 },
+ { 0x2E85, 5600 },
+ { 0x2E80, 5603 },
+ { 0x2E82, 5606 },
+ { 0x2E83, 5610 },
+ { 0x2E84, 5614 },
+ { 0x2EAC, 5618 },
+ { 0x2EAD, 5622 },
+ { 0x2E93, 5626 },
+ { 0x2EF1, 5629 },
+ { 0x2EC2, 5632 },
+ { 0x2EA0, 5635 },
+ { 0x2E8A, 5638 },
+ { 0x2EA6, 5641 },
+ { 0x2EC6, 5647 },
+ { 0x2ECC, 5651 },
+ { 0x2EE8, 5655 },
+ { 0x2EE9, 5659 },
+ { 0x2EE0, 5663 },
+ { 0x2EDC, 5667 },
+ { 0x2EC5, 5671 },
+ { 0x2EE6, 5675 },
+ { 0x2ECB, 5679 },
+ { 0x2EEC, 5683 },
+ { 0x2EE5, 5687 },
+ { 0x2EEA, 5691 },
+ { 0x2ED4, 5695 },
+ { 0x2ED0, 5699 },
+ { 0x2EDA, 5703 },
+ { 0x2ED3, 5707 },
+ { 0x2EE7, 5711 },
+ { 0x2EB0, 5715 },
+ { 0x2EDB, 5719 },
+ { 0x2EE2, 5723 },
+ { 0x2EC9, 5727 },
+ { 0x2EEE, 5731 },
+ { 0x2EF0, 5735 },
+ { 0x2EC8, 5739 },
+ { 0x2ED9, 5743 },
+ { 0x2EF3, 5748 },
+ { 0x2EEB, 5752 },
+ { 0x2EED, 5756 },
+ { 0x2EEF, 5760 },
+ { 0x2EF2, 5764 },
+ { 0x2680, 5768 },
+ { 0x2681, 5770 },
+ { 0x2682, 5772 },
+ { 0x2683, 5774 },
+ { 0x2684, 5776 },
+ { 0x2685, 5778 },
+ { 0x2214, 5780 },
+ { 0x02D9, 5782 },
+ { 0x2238, 5784 },
+ { 0x22C5, 5786 },
+ { 0x220E, 5788 },
+ { 0x2200, 5791 },
+ { 0x2668, 5793 },
+ { 0x2615, 5795 },
+ { 0x20AD, 5797 },
+ { 0x0EDD, 5799 },
+ { 0x0EDC, 5802 },
+ { 0x0EC6, 5805 },
+ { 0x0EC8, 5808 },
+ { 0x0ECA, 5812 },
+ { 0x0EC9, 5816 },
+ { 0x0ECB, 5820 },
+ { 0x0ED1, 5824 },
+ { 0x0ED6, 5827 },
+ { 0x0ED2, 5830 },
+ { 0x0ED5, 5833 },
+ { 0x0ED4, 5836 },
+ { 0x0ED9, 5839 },
+ { 0x0ED0, 5842 },
+ { 0x0ED8, 5845 },
+ { 0x0ED7, 5848 },
+ { 0x0ED3, 5851 },
+ { 0x0EB0, 5854 },
+ { 0x0EC0, 5858 },
+ { 0x0EB4, 5862 },
+ { 0x0EC2, 5866 },
+ { 0x0EB8, 5870 },
+ { 0x0EB6, 5874 },
+ { 0x0EB2, 5878 },
+ { 0x0EC4, 5882 },
+ { 0x0EB3, 5886 },
+ { 0x0EC3, 5890 },
+ { 0x0EC1, 5894 },
+ { 0x0EB5, 5898 },
+ { 0x0EB9, 5902 },
+ { 0x0EB7, 5906 },
+ { 0x0EB1, 5910 },
+ { 0x0EBB, 5915 },
+ { 0x0EAD, 5920 },
+ { 0x0E9A, 5923 },
+ { 0x0E88, 5926 },
+ { 0x0E94, 5929 },
+ { 0x0E9D, 5932 },
+ { 0x0E9F, 5936 },
+ { 0x0EAE, 5940 },
+ { 0x0EAB, 5944 },
+ { 0x0E81, 5948 },
+ { 0x0EA3, 5951 },
+ { 0x0EA5, 5955 },
+ { 0x0EA1, 5959 },
+ { 0x0E99, 5962 },
+ { 0x0E9B, 5965 },
+ { 0x0E8A, 5968 },
+ { 0x0EAA, 5972 },
+ { 0x0E95, 5976 },
+ { 0x0EA7, 5979 },
+ { 0x0EA2, 5982 },
+ { 0x0E84, 5985 },
+ { 0x0E82, 5989 },
+ { 0x0E87, 5993 },
+ { 0x0E8D, 5996 },
+ { 0x0E9E, 5999 },
+ { 0x0E9C, 6003 },
+ { 0x0E97, 6007 },
+ { 0x0E96, 6011 },
+ { 0x0EAF, 6015 },
+ { 0x0ECD, 6017 },
+ { 0x0EBC, 6019 },
+ { 0x0EBD, 6023 },
+ { 0x0ECC, 6027 },
+ { 0x264C, 6030 },
+ { 0x005F, 6031 },
+ { 0x301F, 6033 },
+ { 0x204E, 6038 },
+ { 0x19DE, 6040 },
+ { 0x19DF, 6045 },
+ { 0x19C8, 6050 },
+ { 0x19C9, 6055 },
+ { 0x19D1, 6060 },
+ { 0x19D6, 6065 },
+ { 0x19D2, 6070 },
+ { 0x19D5, 6075 },
+ { 0x19D4, 6080 },
+ { 0x19D9, 6085 },
+ { 0x19D0, 6090 },
+ { 0x19D8, 6095 },
+ { 0x19D7, 6100 },
+ { 0x19D3, 6105 },
+ { 0x19B5, 6110 },
+ { 0x19B7, 6116 },
+ { 0x19B3, 6122 },
+ { 0x19B1, 6128 },
+ { 0x19B6, 6134 },
+ { 0x19BA, 6140 },
+ { 0x19B2, 6146 },
+ { 0x19C0, 6152 },
+ { 0x19B8, 6158 },
+ { 0x19BD, 6164 },
+ { 0x19B9, 6170 },
+ { 0x19B4, 6176 },
+ { 0x19BC, 6182 },
+ { 0x19BB, 6188 },
+ { 0x19BE, 6194 },
+ { 0x19BF, 6200 },
+ { 0x19B0, 6206 },
+ { 0x19A5, 6213 },
+ { 0x19A4, 6219 },
+ { 0x199D, 6225 },
+ { 0x19A3, 6231 },
+ { 0x1985, 6237 },
+ { 0x199F, 6243 },
+ { 0x1999, 6249 },
+ { 0x1993, 6255 },
+ { 0x1997, 6261 },
+ { 0x1981, 6267 },
+ { 0x198C, 6273 },
+ { 0x1991, 6279 },
+ { 0x199E, 6285 },
+ { 0x1986, 6291 },
+ { 0x198D, 6297 },
+ { 0x19A8, 6303 },
+ { 0x1987, 6309 },
+ { 0x1998, 6315 },
+ { 0x1992, 6321 },
+ { 0x198B, 6327 },
+ { 0x19A9, 6333 },
+ { 0x19A2, 6339 },
+ { 0x19A1, 6345 },
+ { 0x199A, 6351 },
+ { 0x19A0, 6357 },
+ { 0x1982, 6363 },
+ { 0x199C, 6369 },
+ { 0x1996, 6375 },
+ { 0x1990, 6381 },
+ { 0x1994, 6387 },
+ { 0x1980, 6393 },
+ { 0x1989, 6399 },
+ { 0x198E, 6405 },
+ { 0x199B, 6411 },
+ { 0x1983, 6417 },
+ { 0x198A, 6423 },
+ { 0x19A6, 6429 },
+ { 0x1984, 6435 },
+ { 0x1995, 6441 },
+ { 0x198F, 6447 },
+ { 0x1988, 6453 },
+ { 0x19A7, 6459 },
+ { 0x19C7, 6465 },
+ { 0x19C6, 6471 },
+ { 0x19C5, 6477 },
+ { 0x19C4, 6483 },
+ { 0x19C3, 6489 },
+ { 0x19C1, 6495 },
+ { 0x19C2, 6501 },
+ { 0x20AA, 6507 },
+ { 0x07F5, 6510 },
+ { 0x07F4, 6514 },
+ { 0x07F8, 6518 },
+ { 0x07C1, 6520 },
+ { 0x07C6, 6523 },
+ { 0x07C2, 6526 },
+ { 0x07C5, 6529 },
+ { 0x07C4, 6532 },
+ { 0x07C9, 6535 },
+ { 0x07C0, 6538 },
+ { 0x07C8, 6541 },
+ { 0x07C7, 6544 },
+ { 0x07C3, 6547 },
+ { 0x07CA, 6550 },
+ { 0x07CD, 6553 },
+ { 0x07CC, 6556 },
+ { 0x07D2, 6559 },
+ { 0x07D0, 6562 },
+ { 0x07CE, 6565 },
+ { 0x07D3, 6568 },
+ { 0x07D8, 6571 },
+ { 0x07CB, 6574 },
+ { 0x07DD, 6577 },
+ { 0x07E4, 6580 },
+ { 0x07D6, 6583 },
+ { 0x07DE, 6586 },
+ { 0x07DF, 6589 },
+ { 0x07E1, 6592 },
+ { 0x07E3, 6595 },
+ { 0x07E0, 6598 },
+ { 0x07CF, 6602 },
+ { 0x07D4, 6605 },
+ { 0x07D9, 6608 },
+ { 0x07DB, 6611 },
+ { 0x07D5, 6614 },
+ { 0x07E5, 6617 },
+ { 0x07E6, 6620 },
+ { 0x07D7, 6623 },
+ { 0x07DC, 6626 },
+ { 0x07E2, 6629 },
+ { 0x07E7, 6632 },
+ { 0x07DA, 6636 },
+ { 0x07E8, 6639 },
+ { 0x07EA, 6643 },
+ { 0x07E9, 6647 },
+ { 0x07D1, 6651 },
+ { 0x07F6, 6654 },
+ { 0x07F7, 6658 },
+ { 0x07F0, 6661 },
+ { 0x07EF, 6666 },
+ { 0x07F1, 6671 },
+ { 0x07EE, 6676 },
+ { 0x07EC, 6681 },
+ { 0x07EB, 6686 },
+ { 0x07ED, 6691 },
+ { 0x07F3, 6696 },
+ { 0x07F2, 6701 },
+ { 0x07FA, 6705 },
+ { 0x07F9, 6707 },
+ { 0x22BD, 6710 },
+ { 0x2284, 6711 },
+ { 0x2285, 6715 },
+ { 0x2209, 6719 },
+ { 0x00AC, 6723 },
+ { 0x22AD, 6725 },
+ { 0x237B, 6727 },
+ { 0x2260, 6730 },
+ { 0x2241, 6733 },
+ { 0x2249, 6735 },
+ { 0x22EA, 6739 },
+ { 0x22EC, 6743 },
+ { 0x22E2, 6750 },
+ { 0x22E3, 6757 },
+ { 0x2226, 6764 },
+ { 0x2262, 6767 },
+ { 0x226E, 6770 },
+ { 0x226D, 6772 },
+ { 0x226F, 6775 },
+ { 0x2244, 6777 },
+ { 0x2445, 6781 },
+ { 0x2444, 6784 },
+ { 0x2448, 6787 },
+ { 0x2442, 6789 },
+ { 0x2440, 6791 },
+ { 0x2441, 6793 },
+ { 0x2447, 6795 },
+ { 0x2446, 6799 },
+ { 0x244A, 6803 },
+ { 0x2449, 6806 },
+ { 0x2443, 6810 },
+ { 0x2126, 6813 },
+ { 0x7300, 6815 },
+ { 0x7304, 6819 },
+ { 0x7309, 6823 },
+ { 0x730F, 6827 },
+ { 0x7316, 6831 },
+ { 0x7301, 6835 },
+ { 0x7303, 6839 },
+ { 0x731A, 6843 },
+ { 0x730B, 6847 },
+ { 0x730C, 6851 },
+ { 0x730D, 6855 },
+ { 0x7313, 6859 },
+ { 0x7314, 6863 },
+ { 0x7307, 6867 },
+ { 0x731D, 6871 },
+ { 0x730A, 6875 },
+ { 0x7302, 6879 },
+ { 0x7312, 6883 },
+ { 0x7310, 6887 },
+ { 0x7315, 6891 },
+ { 0x731E, 6895 },
+ { 0x7305, 6899 },
+ { 0x7306, 6903 },
+ { 0x731C, 6907 },
+ { 0x7317, 6911 },
+ { 0x731B, 6915 },
+ { 0x730E, 6919 },
+ { 0x7319, 6923 },
+ { 0x7318, 6927 },
+ { 0x7311, 6931 },
+ { 0x7308, 6935 },
+ { 0x7320, 6939 },
+ { 0x7322, 6943 },
+ { 0x7321, 6947 },
+ { 0x7323, 6951 },
+ { 0x73A0, 6955 },
+ { 0x73A1, 6959 },
+ { 0x73A2, 6963 },
+ { 0x73B2, 6967 },
+ { 0x73A8, 6971 },
+ { 0x73AD, 6975 },
+ { 0x73AE, 6979 },
+ { 0x73AF, 6983 },
+ { 0x73B3, 6987 },
+ { 0x73A5, 6991 },
+ { 0x73A6, 6995 },
+ { 0x73C3, 6999 },
+ { 0x73A9, 7003 },
+ { 0x73AA, 7007 },
+ { 0x73A3, 7011 },
+ { 0x73A4, 7015 },
+ { 0x73BE, 7019 },
+ { 0x73B6, 7023 },
+ { 0x73B7, 7027 },
+ { 0x73B8, 7031 },
+ { 0x73B4, 7035 },
+ { 0x73B5, 7039 },
+ { 0x73B1, 7043 },
+ { 0x73BC, 7047 },
+ { 0x73BD, 7051 },
+ { 0x73BF, 7055 },
+ { 0x73AB, 7059 },
+ { 0x73AC, 7063 },
+ { 0x73BA, 7067 },
+ { 0x73BB, 7071 },
+ { 0x73A7, 7075 },
+ { 0x73B9, 7079 },
+ { 0x73C0, 7083 },
+ { 0x73C1, 7087 },
+ { 0x73C2, 7091 },
+ { 0x73B0, 7095 },
+ { 0x73CE, 7099 },
+ { 0x73CF, 7103 },
+ { 0x73CC, 7107 },
+ { 0x73C8, 7111 },
+ { 0x73CD, 7115 },
+ { 0x73C9, 7119 },
+ { 0x73CA, 7123 },
+ { 0x73CB, 7127 },
+ { 0x73D0, 7131 },
+ { 0x73D1, 7135 },
+ { 0x73D3, 7139 },
+ { 0x73D2, 7143 },
+ { 0x73D4, 7147 },
+ { 0x73D5, 7151 },
+ { 0x2E2B, 7155 },
+ { 0x2024, 7161 },
+ { 0x2031, 7164 },
+ { 0x214C, 7168 },
+ { 0x2030, 7170 },
+ { 0x202C, 7173 },
+ { 0x2216, 7176 },
+ { 0x2736, 7178 },
+ { 0x273E, 7182 },
+ { 0x2609, 7188 },
+ { 0xC05F, 7189 },
+ { 0xC02E, 7192 },
+ { 0xC07B, 7195 },
+ { 0xC05B, 7199 },
+ { 0xC028, 7203 },
+ { 0xC02B, 7206 },
+ { 0xC03A, 7209 },
+ { 0xC02C, 7211 },
+ { 0xC031, 7213 },
+ { 0xC036, 7216 },
+ { 0xC032, 7219 },
+ { 0xC035, 7222 },
+ { 0xC034, 7225 },
+ { 0xC039, 7228 },
+ { 0xC030, 7231 },
+ { 0xC038, 7234 },
+ { 0xC037, 7237 },
+ { 0xC033, 7240 },
+ { 0xC060, 7243 },
+ { 0xC061, 7246 },
+ { 0xC062, 7251 },
+ { 0xC063, 7256 },
+ { 0xC064, 7261 },
+ { 0xC065, 7266 },
+ { 0xC066, 7271 },
+ { 0xC067, 7276 },
+ { 0xC068, 7281 },
+ { 0xC069, 7286 },
+ { 0xC06A, 7291 },
+ { 0xC06B, 7296 },
+ { 0xC06C, 7301 },
+ { 0xC06D, 7306 },
+ { 0xC06E, 7311 },
+ { 0xC06F, 7316 },
+ { 0xC070, 7321 },
+ { 0xC071, 7326 },
+ { 0xC072, 7331 },
+ { 0xC073, 7336 },
+ { 0xC074, 7341 },
+ { 0xC075, 7346 },
+ { 0xC076, 7351 },
+ { 0xC077, 7356 },
+ { 0xC078, 7361 },
+ { 0xC079, 7366 },
+ { 0xC07A, 7371 },
+ { 0xC041, 7376 },
+ { 0xC042, 7381 },
+ { 0xC043, 7386 },
+ { 0xC044, 7391 },
+ { 0xC045, 7396 },
+ { 0xC046, 7401 },
+ { 0xC047, 7406 },
+ { 0xC048, 7411 },
+ { 0xC049, 7416 },
+ { 0xC04A, 7421 },
+ { 0xC04B, 7426 },
+ { 0xC04C, 7431 },
+ { 0xC04D, 7436 },
+ { 0xC04E, 7441 },
+ { 0xC04F, 7446 },
+ { 0xC050, 7451 },
+ { 0xC051, 7456 },
+ { 0xC052, 7461 },
+ { 0xC053, 7466 },
+ { 0xC054, 7471 },
+ { 0xC055, 7476 },
+ { 0xC056, 7481 },
+ { 0xC057, 7486 },
+ { 0xC058, 7491 },
+ { 0xC059, 7496 },
+ { 0xC05A, 7501 },
+ { 0xC07D, 7506 },
+ { 0xC05D, 7510 },
+ { 0xC029, 7514 },
+ { 0xC020, 7517 },
+ { 0xC07E, 7519 },
+ { 0xC024, 7521 },
+ { 0xC03D, 7524 },
+ { 0xC023, 7527 },
+ { 0xC025, 7530 },
+ { 0xC05C, 7533 },
+ { 0xC02F, 7536 },
+ { 0xC02A, 7538 },
+ { 0xC03F, 7540 },
+ { 0xC07C, 7543 },
+ { 0xC026, 7546 },
+ { 0xC03C, 7548 },
+ { 0xC022, 7551 },
+ { 0xC03B, 7554 },
+ { 0xC027, 7556 },
+ { 0xC05E, 7558 },
+ { 0xC040, 7561 },
+ { 0xC021, 7564 },
+ { 0xC03E, 7567 },
+ { 0xC02D, 7570 },
+ { 0x1963, 7572 },
+ { 0x196B, 7576 },
+ { 0x1964, 7580 },
+ { 0x1969, 7584 },
+ { 0x1967, 7588 },
+ { 0x196D, 7592 },
+ { 0x1965, 7596 },
+ { 0x1966, 7600 },
+ { 0x195C, 7604 },
+ { 0x195E, 7608 },
+ { 0x1950, 7612 },
+ { 0x1958, 7616 },
+ { 0x195B, 7620 },
+ { 0x1962, 7624 },
+ { 0x1968, 7628 },
+ { 0x1959, 7632 },
+ { 0x195F, 7636 },
+ { 0x1954, 7640 },
+ { 0x1956, 7644 },
+ { 0x196A, 7648 },
+ { 0x195D, 7652 },
+ { 0x1951, 7656 },
+ { 0x1955, 7660 },
+ { 0x196C, 7664 },
+ { 0x1960, 7668 },
+ { 0x1952, 7672 },
+ { 0x195A, 7676 },
+ { 0x1957, 7680 },
+ { 0x1953, 7684 },
+ { 0x1961, 7688 },
+ { 0x1970, 7692 },
+ { 0x1971, 7696 },
+ { 0x1972, 7700 },
+ { 0x1973, 7704 },
+ { 0x1974, 7708 },
+ { 0x29DD, 7712 },
+ { 0x293C, 7715 },
+ { 0x293A, 7721 },
+ { 0x293D, 7725 },
+ { 0x2320, 7731 },
+ { 0x230F, 7734 },
+ { 0x2E22, 7737 },
+ { 0x231C, 7741 },
+ { 0x23DE, 7744 },
+ { 0x230E, 7747 },
+ { 0x2E23, 7750 },
+ { 0x231D, 7754 },
+ { 0x23B4, 7757 },
+ { 0x23E0, 7760 },
+ { 0x23DC, 7764 },
+ { 0x2025, 7766 },
+ { 0x205A, 7769 },
+ { 0x2E2A, 7772 },
+ { 0x29C9, 7778 },
+ { 0x2A08, 7781 },
+ { 0x2A07, 7785 },
+ { 0x2051, 7789 },
+ { 0x2A75, 7793 },
+ { 0x2A56, 7797 },
+ { 0x2A55, 7801 },
+ { 0x560E, 7805 },
+ { 0x560D, 7808 },
+ { 0x5621, 7810 },
+ { 0x5626, 7813 },
+ { 0x5622, 7816 },
+ { 0x5625, 7819 },
+ { 0x5624, 7822 },
+ { 0x5629, 7825 },
+ { 0x5620, 7828 },
+ { 0x5628, 7831 },
+ { 0x5627, 7834 },
+ { 0x5623, 7837 },
+ { 0x5618, 7840 },
+ { 0x5616, 7843 },
+ { 0x5619, 7846 },
+ { 0x5617, 7849 },
+ { 0x561A, 7852 },
+ { 0x561E, 7855 },
+ { 0x561F, 7858 },
+ { 0x561C, 7861 },
+ { 0x5615, 7864 },
+ { 0x561D, 7867 },
+ { 0x561B, 7870 },
+ { 0x5613, 7873 },
+ { 0x5614, 7876 },
+ { 0x560F, 7879 },
+ { 0x5549, 7882 },
+ { 0x55E1, 7885 },
+ { 0x5524, 7888 },
+ { 0x55BA, 7891 },
+ { 0x5595, 7894 },
+ { 0x554A, 7897 },
+ { 0x5552, 7900 },
+ { 0x55EA, 7903 },
+ { 0x552C, 7906 },
+ { 0x55C3, 7909 },
+ { 0x559D, 7912 },
+ { 0x5566, 7915 },
+ { 0x55FF, 7918 },
+ { 0x553F, 7921 },
+ { 0x55D7, 7924 },
+ { 0x55B0, 7927 },
+ { 0x5560, 7930 },
+ { 0x55F9, 7933 },
+ { 0x5539, 7936 },
+ { 0x55D1, 7939 },
+ { 0x55AA, 7942 },
+ { 0x5500, 7945 },
+ { 0x55E2, 7948 },
+ { 0x5558, 7951 },
+ { 0x55F1, 7954 },
+ { 0x5531, 7957 },
+ { 0x55C9, 7960 },
+ { 0x55A2, 7963 },
+ { 0x556D, 7966 },
+ { 0x5606, 7969 },
+ { 0x5545, 7972 },
+ { 0x55DD, 7975 },
+ { 0x55B6, 7978 },
+ { 0x554C, 7981 },
+ { 0x55E4, 7984 },
+ { 0x5526, 7987 },
+ { 0x55BD, 7990 },
+ { 0x5597, 7993 },
+ { 0x5525, 7996 },
+ { 0x5567, 7999 },
+ { 0x5600, 8002 },
+ { 0x5540, 8005 },
+ { 0x55D8, 8008 },
+ { 0x55B1, 8011 },
+ { 0x556A, 8014 },
+ { 0x5603, 8017 },
+ { 0x5543, 8020 },
+ { 0x55DB, 8023 },
+ { 0x55B4, 8026 },
+ { 0x555E, 8029 },
+ { 0x55F7, 8032 },
+ { 0x5537, 8035 },
+ { 0x55CF, 8038 },
+ { 0x55A8, 8041 },
+ { 0x556E, 8044 },
+ { 0x5608, 8047 },
+ { 0x5546, 8050 },
+ { 0x55DE, 8053 },
+ { 0x55B7, 8056 },
+ { 0x556F, 8059 },
+ { 0x5609, 8062 },
+ { 0x560B, 8065 },
+ { 0x5547, 8068 },
+ { 0x55DF, 8071 },
+ { 0x55B8, 8074 },
+ { 0x55BB, 8077 },
+ { 0x5571, 8080 },
+ { 0x5550, 8083 },
+ { 0x55E8, 8086 },
+ { 0x552A, 8089 },
+ { 0x55C1, 8092 },
+ { 0x559B, 8095 },
+ { 0x555F, 8098 },
+ { 0x55F8, 8101 },
+ { 0x5538, 8104 },
+ { 0x55D0, 8107 },
+ { 0x55A9, 8110 },
+ { 0x5562, 8113 },
+ { 0x55FB, 8116 },
+ { 0x553B, 8119 },
+ { 0x55D3, 8122 },
+ { 0x55AC, 8125 },
+ { 0x555A, 8128 },
+ { 0x55F3, 8131 },
+ { 0x5533, 8134 },
+ { 0x55CB, 8137 },
+ { 0x55A4, 8140 },
+ { 0x5596, 8143 },
+ { 0x5559, 8146 },
+ { 0x55F2, 8149 },
+ { 0x5532, 8152 },
+ { 0x55CA, 8155 },
+ { 0x55A3, 8158 },
+ { 0x554E, 8161 },
+ { 0x55E6, 8164 },
+ { 0x5528, 8167 },
+ { 0x55BF, 8170 },
+ { 0x5599, 8173 },
+ { 0x5569, 8176 },
+ { 0x5602, 8179 },
+ { 0x5542, 8182 },
+ { 0x55DA, 8185 },
+ { 0x55B3, 8188 },
+ { 0x5564, 8191 },
+ { 0x55FD, 8194 },
+ { 0x553D, 8197 },
+ { 0x55D5, 8200 },
+ { 0x55AE, 8203 },
+ { 0x5507, 8206 },
+ { 0x5551, 8209 },
+ { 0x55E9, 8212 },
+ { 0x552B, 8215 },
+ { 0x55C2, 8218 },
+ { 0x559C, 8221 },
+ { 0x5578, 8224 },
+ { 0x551A, 8227 },
+ { 0x558B, 8230 },
+ { 0x5514, 8233 },
+ { 0x555C, 8236 },
+ { 0x55F5, 8239 },
+ { 0x5535, 8242 },
+ { 0x55CD, 8245 },
+ { 0x55A6, 8248 },
+ { 0x5585, 8251 },
+ { 0x5501, 8254 },
+ { 0x550C, 8257 },
+ { 0x557D, 8260 },
+ { 0x5557, 8263 },
+ { 0x55EF, 8266 },
+ { 0x5530, 8269 },
+ { 0x55C7, 8272 },
+ { 0x55A1, 8275 },
+ { 0x5520, 8278 },
+ { 0x5607, 8281 },
+ { 0x5591, 8284 },
+ { 0x554D, 8287 },
+ { 0x5502, 8290 },
+ { 0x55E5, 8293 },
+ { 0x5527, 8296 },
+ { 0x55BE, 8299 },
+ { 0x5573, 8302 },
+ { 0x5598, 8305 },
+ { 0x551B, 8308 },
+ { 0x558C, 8311 },
+ { 0x556B, 8314 },
+ { 0x551E, 8317 },
+ { 0x558F, 8320 },
+ { 0x5554, 8323 },
+ { 0x55EC, 8326 },
+ { 0x552E, 8329 },
+ { 0x55C5, 8332 },
+ { 0x559F, 8335 },
+ { 0x5512, 8338 },
+ { 0x5583, 8341 },
+ { 0x5553, 8344 },
+ { 0x55EB, 8347 },
+ { 0x552D, 8350 },
+ { 0x55C4, 8353 },
+ { 0x559E, 8356 },
+ { 0x5521, 8359 },
+ { 0x5592, 8362 },
+ { 0x5561, 8365 },
+ { 0x55FA, 8368 },
+ { 0x553A, 8371 },
+ { 0x55D2, 8374 },
+ { 0x55AB, 8377 },
+ { 0x5522, 8380 },
+ { 0x5568, 8383 },
+ { 0x5601, 8386 },
+ { 0x5541, 8389 },
+ { 0x55D9, 8392 },
+ { 0x55B2, 8395 },
+ { 0x5593, 8398 },
+ { 0x5570, 8401 },
+ { 0x560A, 8404 },
+ { 0x5548, 8407 },
+ { 0x55E0, 8410 },
+ { 0x55B9, 8413 },
+ { 0x5572, 8416 },
+ { 0x5505, 8419 },
+ { 0x5576, 8422 },
+ { 0x5513, 8425 },
+ { 0x5584, 8428 },
+ { 0x5516, 8431 },
+ { 0x5563, 8434 },
+ { 0x55FC, 8437 },
+ { 0x553C, 8440 },
+ { 0x55D4, 8443 },
+ { 0x55AD, 8446 },
+ { 0x5587, 8449 },
+ { 0x550E, 8452 },
+ { 0x555B, 8455 },
+ { 0x55F4, 8458 },
+ { 0x5534, 8461 },
+ { 0x55CC, 8464 },
+ { 0x55A5, 8467 },
+ { 0x557F, 8470 },
+ { 0x550D, 8473 },
+ { 0x557E, 8476 },
+ { 0x554F, 8479 },
+ { 0x5503, 8482 },
+ { 0x55E7, 8485 },
+ { 0x5529, 8488 },
+ { 0x55C0, 8491 },
+ { 0x5574, 8494 },
+ { 0x559A, 8497 },
+ { 0x551D, 8500 },
+ { 0x558E, 8503 },
+ { 0x5518, 8506 },
+ { 0x5565, 8509 },
+ { 0x55FE, 8512 },
+ { 0x553E, 8515 },
+ { 0x55D6, 8518 },
+ { 0x55AF, 8521 },
+ { 0x5589, 8524 },
+ { 0x5506, 8527 },
+ { 0x5577, 8530 },
+ { 0x5510, 8533 },
+ { 0x555D, 8536 },
+ { 0x55F6, 8539 },
+ { 0x5536, 8542 },
+ { 0x55CE, 8545 },
+ { 0x55A7, 8548 },
+ { 0x5581, 8551 },
+ { 0x550B, 8554 },
+ { 0x55F0, 8557 },
+ { 0x55C8, 8560 },
+ { 0x557C, 8563 },
+ { 0x5555, 8566 },
+ { 0x5509, 8569 },
+ { 0x55ED, 8572 },
+ { 0x557A, 8575 },
+ { 0x5508, 8578 },
+ { 0x5579, 8581 },
+ { 0x5556, 8584 },
+ { 0x55EE, 8587 },
+ { 0x552F, 8590 },
+ { 0x55C6, 8593 },
+ { 0x55A0, 8596 },
+ { 0x5515, 8599 },
+ { 0x5586, 8602 },
+ { 0x554B, 8605 },
+ { 0x55E3, 8608 },
+ { 0x556C, 8611 },
+ { 0x5604, 8614 },
+ { 0x5544, 8617 },
+ { 0x55DC, 8620 },
+ { 0x55B5, 8623 },
+ { 0x55BC, 8626 },
+ { 0x551C, 8629 },
+ { 0x558D, 8632 },
+ { 0x5523, 8635 },
+ { 0x5594, 8638 },
+ { 0x5517, 8641 },
+ { 0x5588, 8644 },
+ { 0x550F, 8647 },
+ { 0x5580, 8650 },
+ { 0x5504, 8653 },
+ { 0x5575, 8656 },
+ { 0x5519, 8659 },
+ { 0x558A, 8662 },
+ { 0x5511, 8665 },
+ { 0x5582, 8668 },
+ { 0x550A, 8671 },
+ { 0x557B, 8674 },
+ { 0x562B, 8677 },
+ { 0x5610, 8681 },
+ { 0x5611, 8685 },
+ { 0x562A, 8689 },
+ { 0x5612, 8693 },
+ { 0x551F, 8697 },
+ { 0x5605, 8700 },
+ { 0x5590, 8703 },
+ { 0x560C, 8706 },
+ { 0x20A9, 8709 },
+ { 0x22BB, 8711 },
+ { 0x00A5, 8712 },
+ { 0x262F, 8714 },
+ { 0x2135, 8716 },
+ { 0x2625, 8718 },
+ { 0x269B, 8719 },
+ { 0x237E, 8721 },
+ { 0x2106, 8723 },
+ { 0x2105, 8725 },
+ { 0x20B5, 8727 },
+ { 0x00A2, 8729 },
+ { 0x5A51, 8731 },
+ { 0x5A56, 8734 },
+ { 0x5A52, 8737 },
+ { 0x5A55, 8740 },
+ { 0x5A54, 8743 },
+ { 0x5A59, 8746 },
+ { 0x5A50, 8749 },
+ { 0x5A58, 8752 },
+ { 0x5A57, 8755 },
+ { 0x5A53, 8758 },
+ { 0x5A2A, 8761 },
+ { 0x5A2F, 8765 },
+ { 0x5A2D, 8769 },
+ { 0x5A29, 8773 },
+ { 0x5A30, 8777 },
+ { 0x5A31, 8781 },
+ { 0x5A2C, 8785 },
+ { 0x5A2B, 8789 },
+ { 0x5A2E, 8793 },
+ { 0x5A32, 8797 },
+ { 0x5A00, 8801 },
+ { 0x5A03, 8804 },
+ { 0x5A01, 8807 },
+ { 0x5A05, 8810 },
+ { 0x5A02, 8813 },
+ { 0x5A04, 8816 },
+ { 0x5A1D, 8819 },
+ { 0x5A15, 8822 },
+ { 0x5A08, 8825 },
+ { 0x5A28, 8828 },
+ { 0x5A0E, 8831 },
+ { 0x5A06, 8834 },
+ { 0x5A24, 8837 },
+ { 0x5A20, 8840 },
+ { 0x5A18, 8843 },
+ { 0x5A1A, 8846 },
+ { 0x5A23, 8849 },
+ { 0x5A27, 8852 },
+ { 0x5A13, 8855 },
+ { 0x5A25, 8858 },
+ { 0x5A22, 8861 },
+ { 0x5A21, 8864 },
+ { 0x5A1E, 8867 },
+ { 0x5A0C, 8870 },
+ { 0x5A19, 8873 },
+ { 0x5A16, 8876 },
+ { 0x5A09, 8879 },
+ { 0x5A0F, 8882 },
+ { 0x5A07, 8885 },
+ { 0x5A1F, 8888 },
+ { 0x5A0B, 8891 },
+ { 0x5A11, 8894 },
+ { 0x5A17, 8897 },
+ { 0x5A1C, 8900 },
+ { 0x5A1B, 8903 },
+ { 0x5A26, 8906 },
+ { 0x5A14, 8909 },
+ { 0x5A0D, 8912 },
+ { 0x5A0A, 8915 },
+ { 0x5A12, 8918 },
+ { 0x5A10, 8921 },
+ { 0x5A41, 8924 },
+ { 0x5A40, 8928 },
+ { 0x5A4A, 8932 },
+ { 0x5A46, 8936 },
+ { 0x5A47, 8940 },
+ { 0x5A49, 8944 },
+ { 0x5A45, 8948 },
+ { 0x5A48, 8952 },
+ { 0x5A44, 8956 },
+ { 0x5A42, 8960 },
+ { 0x5A4B, 8964 },
+ { 0x5A35, 8968 },
+ { 0x5A34, 8972 },
+ { 0x5A36, 8976 },
+ { 0x5A33, 8980 },
+ { 0x5A4D, 8984 },
+ { 0x5A4C, 8989 },
+ { 0x5A43, 8994 },
+ { 0x5A5D, 8999 },
+ { 0x5A5E, 9002 },
+ { 0x5A5C, 9006 },
+ { 0x5A5F, 9009 },
+ { 0x221B, 9013 },
+ { 0x2593, 9015 },
+ { 0x22AE, 9017 },
+ { 0x22AC, 9020 },
+ { 0x2224, 9023 },
+ { 0x2AEE, 9026 },
+ { 0x220C, 9033 },
+ { 0x22EB, 9038 },
+ { 0x22ED, 9044 },
+ { 0x2280, 9052 },
+ { 0x22E0, 9055 },
+ { 0x2281, 9060 },
+ { 0x22E1, 9063 },
+ { 0x20AB, 9068 },
+ { 0x297F, 9070 },
+ { 0x22A4, 9073 },
+ { 0x2AF1, 9075 },
+ { 0x22F1, 9080 },
+ { 0x2304, 9084 },
+ { 0x2671, 9086 },
+ { 0x20AC, 9089 },
+ { 0x2E2D, 9091 },
+ { 0x2059, 9094 },
+ { 0x205B, 9097 },
+ { 0x2058, 9100 },
+ { 0x2725, 9103 },
+ { 0x2723, 9106 },
+ { 0x2722, 9109 },
+ { 0x002E, 9112 },
+ { 0x2588, 9114 },
+ { 0x27D7, 9116 },
+ { 0x23DB, 9119 },
+ { 0x2699, 9120 },
+ { 0x3013, 9121 },
+ { 0x200A, 9123 },
+ { 0x2388, 9125 },
+ { 0x26A1, 9127 },
+ { 0x2A1D, 9130 },
+ { 0x26B5, 9131 },
+ { 0x263E, 9132 },
+ { 0x27DB, 9135 },
+ { 0x27DA, 9139 },
+ { 0x2993, 9144 },
+ { 0x2E1C, 9148 },
+ { 0x258F, 9152 },
+ { 0x258E, 9156 },
+ { 0x294E, 9160 },
+ { 0x294A, 9167 },
+ { 0x294B, 9174 },
+ { 0x2950, 9181 },
+ { 0x297C, 9188 },
+ { 0x258B, 9191 },
+ { 0x25D6, 9195 },
+ { 0x258C, 9199 },
+ { 0x22A3, 9202 },
+ { 0x3008, 9204 },
+ { 0x2991, 9207 },
+ { 0x2B30, 9212 },
+ { 0x2B32, 9217 },
+ { 0x2997, 9222 },
+ { 0x3010, 9227 },
+ { 0x007B, 9231 },
+ { 0x23A9, 9234 },
+ { 0x23A7, 9239 },
+ { 0x23A8, 9244 },
+ { 0x230A, 9249 },
+ { 0x27D5, 9251 },
+ { 0x21AD, 9254 },
+ { 0x2194, 9258 },
+ { 0x21FC, 9261 },
+ { 0x21AE, 9268 },
+ { 0x21F9, 9273 },
+ { 0x2948, 9279 },
+ { 0x2B0C, 9285 },
+ { 0x2B04, 9289 },
+ { 0x21D4, 9293 },
+ { 0x21CE, 9297 },
+ { 0x2904, 9303 },
+ { 0x21FF, 9310 },
+ { 0x2589, 9314 },
+ { 0x258D, 9318 },
+ { 0x258A, 9322 },
+ { 0x2983, 9326 },
+ { 0x300E, 9330 },
+ { 0x301A, 9334 },
+ { 0x3018, 9338 },
+ { 0x3016, 9343 },
+ { 0x2985, 9347 },
+ { 0x300C, 9350 },
+ { 0x2E04, 9353 },
+ { 0x300A, 9357 },
+ { 0x29DA, 9361 },
+ { 0x201C, 9365 },
+ { 0x2E28, 9369 },
+ { 0x22C9, 9372 },
+ { 0x2E0C, 9377 },
+ { 0x2018, 9381 },
+ { 0x005B, 9385 },
+ { 0x298D, 9388 },
+ { 0x298F, 9396 },
+ { 0x2045, 9404 },
+ { 0x298B, 9409 },
+ { 0x23A3, 9414 },
+ { 0x23A1, 9419 },
+ { 0x23A2, 9424 },
+ { 0x29D8, 9428 },
+ { 0x2308, 9431 },
+ { 0x27DC, 9433 },
+ { 0x27C5, 9435 },
+ { 0x2E26, 9439 },
+ { 0x3014, 9443 },
+ { 0x29CF, 9447 },
+ { 0x2E20, 9452 },
+ { 0x23B8, 9457 },
+ { 0x22CB, 9461 },
+ { 0x0028, 9464 },
+ { 0x239D, 9466 },
+ { 0x239B, 9470 },
+ { 0x239C, 9474 },
+ { 0x2E02, 9477 },
+ { 0x2E09, 9480 },
+ { 0x2028, 9483 },
+ { 0x2A14, 9485 },
+ { 0x2A12, 9491 },
+ { 0x2A13, 9498 },
+ { 0x20A4, 9505 },
+ { 0x2AE6, 9507 },
+ { 0x27DE, 9515 },
+ { 0x27F7, 9518 },
+ { 0x27FA, 9522 },
+ { 0x27DD, 9527 },
+ { 0x27CC, 9530 },
+ { 0x27F5, 9532 },
+ { 0x27FB, 9535 },
+ { 0x27F8, 9540 },
+ { 0x27FD, 9544 },
+ { 0x2B33, 9550 },
+ { 0x27F6, 9554 },
+ { 0x27FC, 9557 },
+ { 0x27F9, 9562 },
+ { 0x27FE, 9566 },
+ { 0x27FF, 9572 },
+ { 0x26A5, 9576 },
+ { 0x2642, 9580 },
+ { 0x26A7, 9582 },
+ { 0x26A6, 9590 },
+ { 0x303C, 9594 },
+ { 0x20A5, 9596 },
+ { 0x29FF, 9598 },
+ { 0x226A, 9599 },
+ { 0x226B, 9601 },
+ { 0x22BC, 9603 },
+ { 0x2398, 9604 },
+ { 0x2423, 9606 },
+ { 0x272B, 9608 },
+ { 0x271B, 9612 },
+ { 0x2732, 9615 },
+ { 0x273C, 9618 },
+ { 0x27C3, 9622 },
+ { 0x27C4, 9624 },
+ { 0x2E19, 9626 },
+ { 0x303D, 9628 },
+ { 0x20B1, 9631 },
+ { 0x002B, 9633 },
+ { 0x2A2D, 9635 },
+ { 0x2A2E, 9641 },
+ { 0x2A39, 9647 },
+ { 0x2A25, 9651 },
+ { 0x2A28, 9656 },
+ { 0x2A22, 9661 },
+ { 0x2A24, 9667 },
+ { 0x2A26, 9672 },
+ { 0x2A27, 9677 },
+ { 0x2A23, 9682 },
+ { 0x2A72, 9688 },
+ { 0x6DFC, 9693 },
+ { 0x2256, 9695 },
+ { 0x02DA, 9699 },
+ { 0x2257, 9701 },
+ { 0x2E30, 9704 },
+ { 0x2218, 9706 },
+ { 0x223F, 9708 },
+ { 0x00AD, 9710 },
+ { 0x2721, 9712 },
+ { 0x262A, 9715 },
+ { 0x225B, 9718 },
+ { 0x22C6, 9720 },
+ { 0x2707, 9722 },
+ { 0x0E51, 9724 },
+ { 0x0E56, 9727 },
+ { 0x0E52, 9730 },
+ { 0x0E55, 9733 },
+ { 0x0E54, 9736 },
+ { 0x0E59, 9739 },
+ { 0x0E50, 9742 },
+ { 0x0E58, 9745 },
+ { 0x0E57, 9748 },
+ { 0x0E53, 9751 },
+ { 0x0E3F, 9754 },
+ { 0x0E2D, 9758 },
+ { 0x0E1A, 9762 },
+ { 0x0E14, 9766 },
+ { 0x0E0E, 9770 },
+ { 0x0E1D, 9774 },
+ { 0x0E1F, 9778 },
+ { 0x0E2B, 9782 },
+ { 0x0E2E, 9786 },
+ { 0x0E01, 9790 },
+ { 0x0E25, 9794 },
+ { 0x0E2C, 9798 },
+ { 0x0E26, 9802 },
+ { 0x0E21, 9805 },
+ { 0x0E19, 9809 },
+ { 0x0E13, 9813 },
+ { 0x0E1B, 9817 },
+ { 0x0E23, 9821 },
+ { 0x0E24, 9825 },
+ { 0x0E0B, 9828 },
+ { 0x0E2A, 9832 },
+ { 0x0E29, 9836 },
+ { 0x0E28, 9840 },
+ { 0x0E15, 9844 },
+ { 0x0E0F, 9848 },
+ { 0x0E27, 9852 },
+ { 0x0E22, 9856 },
+ { 0x0E0D, 9860 },
+ { 0x0E08, 9864 },
+ { 0x0E0C, 9868 },
+ { 0x0E0A, 9872 },
+ { 0x0E09, 9876 },
+ { 0x0E02, 9880 },
+ { 0x0E05, 9884 },
+ { 0x0E03, 9888 },
+ { 0x0E04, 9892 },
+ { 0x0E06, 9896 },
+ { 0x0E48, 9900 },
+ { 0x0E49, 9904 },
+ { 0x0E4A, 9908 },
+ { 0x0E4B, 9912 },
+ { 0x0E31, 9916 },
+ { 0x0E07, 9920 },
+ { 0x0E1E, 9924 },
+ { 0x0E1C, 9928 },
+ { 0x0E20, 9932 },
+ { 0x0E10, 9936 },
+ { 0x0E18, 9940 },
+ { 0x0E16, 9944 },
+ { 0x0E17, 9948 },
+ { 0x0E12, 9952 },
+ { 0x0E11, 9956 },
+ { 0x0E30, 9960 },
+ { 0x0E40, 9964 },
+ { 0x0E34, 9968 },
+ { 0x0E42, 9972 },
+ { 0x0E38, 9976 },
+ { 0x0E32, 9980 },
+ { 0x0E41, 9984 },
+ { 0x0E43, 9988 },
+ { 0x0E44, 9993 },
+ { 0x0E33, 9998 },
+ { 0x0E35, 10002 },
+ { 0x0E36, 10006 },
+ { 0x0E39, 10010 },
+ { 0x0E37, 10014 },
+ { 0x0E5B, 10018 },
+ { 0x0E4F, 10021 },
+ { 0x0E3A, 10024 },
+ { 0x0E46, 10027 },
+ { 0x0E4D, 10030 },
+ { 0x0E4E, 10033 },
+ { 0x0E47, 10036 },
+ { 0x0E2F, 10039 },
+ { 0x0E5A, 10042 },
+ { 0x0E45, 10045 },
+ { 0x0E4C, 10048 },
+ { 0x2009, 10051 },
+ { 0x29FE, 10053 },
+ { 0x22A8, 10054 },
+ { 0x238C, 10055 },
+ { 0x22D8, 10057 },
+ { 0x22D9, 10060 },
+ { 0x301C, 10063 },
+ { 0x2B3F, 10065 },
+ { 0x2933, 10070 },
+ { 0x6E4F, 10075 },
+ { 0x3030, 10078 },
+ { 0x2307, 10080 },
+ { 0x6E4B, 10082 },
+ { 0x2670, 10084 },
+ { 0x2060, 10087 },
+ { 0x200B, 10089 },
+ { 0x200D, 10092 },
+ { 0x6EFF, 10095 },
+ { 0x200C, 10099 },
+ { 0x299F, 10102 },
+ { 0x00B4, 10104 },
+ { 0x2220, 10106 },
+ { 0x299E, 10107 },
+ { 0x29A4, 10111 },
+ { 0x2648, 10114 },
+ { 0x2936, 10115 },
+ { 0x2937, 10121 },
+ { 0x2934, 10127 },
+ { 0x2935, 10133 },
+ { 0x2712, 10139 },
+ { 0x2600, 10141 },
+ { 0x2663, 10145 },
+ { 0x2691, 10148 },
+ { 0x2726, 10150 },
+ { 0x261A, 10154 },
+ { 0x26B8, 10158 },
+ { 0x2605, 10161 },
+ { 0x2B1D, 10163 },
+ { 0x265A, 10167 },
+ { 0x265F, 10170 },
+ { 0x265C, 10173 },
+ { 0x265B, 10176 },
+ { 0x265D, 10179 },
+ { 0x265E, 10182 },
+ { 0x2665, 10185 },
+ { 0x2B24, 10188 },
+ { 0x2B1B, 10191 },
+ { 0x25E3, 10194 },
+ { 0x25E2, 10198 },
+ { 0x261B, 10202 },
+ { 0x2617, 10206 },
+ { 0x2B51, 10209 },
+ { 0x25AA, 10212 },
+ { 0x2B29, 10215 },
+ { 0x2B2A, 10218 },
+ { 0x2660, 10221 },
+ { 0x25E4, 10224 },
+ { 0x25E5, 10228 },
+ { 0x29D3, 10232 },
+ { 0x272C, 10234 },
+ { 0x25CF, 10238 },
+ { 0x2689, 10240 },
+ { 0x29ED, 10246 },
+ { 0x2688, 10251 },
+ { 0x25FE, 10257 },
+ { 0x25FC, 10261 },
+ { 0x2B25, 10264 },
+ { 0x2B27, 10267 },
+ { 0x25A0, 10270 },
+ { 0x25C6, 10272 },
+ { 0x2666, 10274 },
+ { 0x29EA, 10277 },
+ { 0x2756, 10282 },
+ { 0x2B22, 10287 },
+ { 0x29EB, 10289 },
+ { 0x263B, 10291 },
+ { 0x26C2, 10294 },
+ { 0x26C3, 10297 },
+ { 0x273F, 10300 },
+ { 0x2B1F, 10302 },
+ { 0x2702, 10304 },
+ { 0x2B2E, 10306 },
+ { 0x25AE, 10309 },
+ { 0x29D7, 10312 },
+ { 0x204C, 10314 },
+ { 0x25AC, 10317 },
+ { 0x260E, 10319 },
+ { 0x267B, 10321 },
+ { 0x2B2C, 10325 },
+ { 0x27A1, 10328 },
+ { 0x204D, 10331 },
+ { 0x27A4, 10334 },
+ { 0x25B4, 10337 },
+ { 0x25B2, 10341 },
+ { 0x25BE, 10344 },
+ { 0x25BC, 10348 },
+ { 0x25C2, 10351 },
+ { 0x25C4, 10355 },
+ { 0x25C0, 10358 },
+ { 0x25B0, 10361 },
+ { 0x25B8, 10363 },
+ { 0x25BA, 10367 },
+ { 0x2B53, 10370 },
+ { 0x25B6, 10373 },
+ { 0x2422, 10376 },
+ { 0x02D8, 10378 },
+ { 0x1752, 10379 },
+ { 0x1753, 10383 },
+ { 0x1740, 10387 },
+ { 0x1741, 10390 },
+ { 0x1742, 10393 },
+ { 0x174A, 10396 },
+ { 0x1747, 10399 },
+ { 0x1744, 10402 },
+ { 0x1751, 10405 },
+ { 0x1743, 10408 },
+ { 0x174E, 10411 },
+ { 0x174B, 10414 },
+ { 0x1748, 10417 },
+ { 0x1749, 10420 },
+ { 0x174D, 10423 },
+ { 0x1750, 10426 },
+ { 0x1746, 10429 },
+ { 0x174F, 10432 },
+ { 0x174C, 10435 },
+ { 0x1745, 10438 },
+ { 0x2038, 10441 },
+ { 0x2041, 10442 },
+ { 0x02C7, 10445 },
+ { 0x26B3, 10446 },
+ { 0x2713, 10447 },
+ { 0x239A, 10449 },
+ { 0x2050, 10452 },
+ { 0x2601, 10454 },
+ { 0x003A, 10455 },
+ { 0x20A1, 10456 },
+ { 0x2254, 10458 },
+ { 0x2604, 10460 },
+ { 0x002C, 10461 },
+ { 0x2628, 10462 },
+ { 0x2629, 10465 },
+ { 0x23AA, 10468 },
+ { 0x22CE, 10471 },
+ { 0x22CF, 10474 },
+ { 0x2138, 10477 },
+ { 0x225C, 10479 },
+ { 0x0031, 10482 },
+ { 0x2488, 10484 },
+ { 0x0036, 10488 },
+ { 0x248D, 10490 },
+ { 0x0032, 10494 },
+ { 0x2489, 10496 },
+ { 0x0035, 10500 },
+ { 0x248C, 10502 },
+ { 0x0034, 10506 },
+ { 0x248B, 10508 },
+ { 0x0039, 10512 },
+ { 0x2490, 10514 },
+ { 0x0030, 10518 },
+ { 0x0038, 10520 },
+ { 0x248F, 10522 },
+ { 0x0037, 10526 },
+ { 0x248E, 10528 },
+ { 0x0033, 10532 },
+ { 0x248A, 10534 },
+ { 0x3003, 10538 },
+ { 0x2641, 10540 },
+ { 0x23DA, 10541 },
+ { 0x2733, 10543 },
+ { 0x2734, 10546 },
+ { 0x2735, 10550 },
+ { 0x2737, 10554 },
+ { 0x2741, 10559 },
+ { 0x274A, 10564 },
+ { 0x23CF, 10568 },
+ { 0x2205, 10570 },
+ { 0x29B4, 10572 },
+ { 0x29B3, 10578 },
+ { 0x29B2, 10584 },
+ { 0x29B1, 10590 },
+ { 0x2386, 10594 },
+ { 0x225D, 10596 },
+ { 0x22DE, 10600 },
+ { 0x22DF, 10604 },
+ { 0x22DC, 10608 },
+ { 0x22DD, 10612 },
+ { 0x22D5, 10616 },
+ { 0x232B, 10620 },
+ { 0x2326, 10624 },
+ { 0x2107, 10628 },
+ { 0x262B, 10630 },
+ { 0x263D, 10632 },
+ { 0x2322, 10635 },
+ { 0x2137, 10636 },
+ { 0x0060, 10638 },
+ { 0x03D6, 10640 },
+ { 0x0387, 10643 },
+ { 0x03D7, 10646 },
+ { 0x7175, 10649 },
+ { 0x7176, 10653 },
+ { 0x03D5, 10659 },
+ { 0x03FC, 10662 },
+ { 0x03F1, 10667 },
+ { 0x717D, 10670 },
+ { 0x7177, 10674 },
+ { 0x03D0, 10678 },
+ { 0x7180, 10681 },
+ { 0x717F, 10685 },
+ { 0x717C, 10689 },
+ { 0x1FFD, 10692 },
+ { 0x7179, 10694 },
+ { 0x718A, 10697 },
+ { 0x1FFE, 10700 },
+ { 0x1FDE, 10702 },
+ { 0x1FDD, 10706 },
+ { 0x1FDF, 10710 },
+ { 0x03F0, 10714 },
+ { 0x7183, 10717 },
+ { 0x0375, 10720 },
+ { 0x1FBF, 10724 },
+ { 0x1FCE, 10726 },
+ { 0x1FCD, 10730 },
+ { 0x1FCF, 10734 },
+ { 0x037C, 10738 },
+ { 0x03BC, 10744 },
+ { 0x03BD, 10748 },
+ { 0x03C0, 10752 },
+ { 0x03BE, 10756 },
+ { 0x03C7, 10760 },
+ { 0x03B7, 10764 },
+ { 0x1F75, 10768 },
+ { 0x1FC4, 10774 },
+ { 0x1F21, 10782 },
+ { 0x1F25, 10788 },
+ { 0x1F95, 10796 },
+ { 0x1F23, 10806 },
+ { 0x1F93, 10814 },
+ { 0x1F27, 10824 },
+ { 0x1F97, 10832 },
+ { 0x1F91, 10842 },
+ { 0x1F20, 10850 },
+ { 0x1F24, 10856 },
+ { 0x1F94, 10864 },
+ { 0x1F22, 10874 },
+ { 0x1F92, 10882 },
+ { 0x1F26, 10892 },
+ { 0x1F96, 10900 },
+ { 0x1F90, 10910 },
+ { 0x03AE, 10918 },
+ { 0x1F74, 10924 },
+ { 0x1FC2, 10930 },
+ { 0x1FC6, 10938 },
+ { 0x1FC7, 10944 },
+ { 0x1FC3, 10952 },
+ { 0x03C6, 10958 },
+ { 0x03C8, 10962 },
+ { 0x03C1, 10966 },
+ { 0x1FE5, 10970 },
+ { 0x1FE4, 10976 },
+ { 0x03FB, 10982 },
+ { 0x03F8, 10986 },
+ { 0x03C4, 10990 },
+ { 0x03B2, 10994 },
+ { 0x0371, 10998 },
+ { 0x03B9, 11002 },
+ { 0x1F77, 11006 },
+ { 0x1F31, 11012 },
+ { 0x1F35, 11018 },
+ { 0x1F33, 11026 },
+ { 0x1F37, 11034 },
+ { 0x1F30, 11042 },
+ { 0x1F34, 11048 },
+ { 0x1F32, 11056 },
+ { 0x1F36, 11064 },
+ { 0x03AF, 11072 },
+ { 0x1F76, 11078 },
+ { 0x1FD1, 11084 },
+ { 0x1FD0, 11090 },
+ { 0x03CA, 11096 },
+ { 0x1FD3, 11102 },
+ { 0x0390, 11110 },
+ { 0x1FD2, 11118 },
+ { 0x1FD7, 11126 },
+ { 0x1FD6, 11134 },
+ { 0x03B6, 11140 },
+ { 0x03B1, 11144 },
+ { 0x1F71, 11148 },
+ { 0x1FB4, 11154 },
+ { 0x1F01, 11162 },
+ { 0x1F05, 11168 },
+ { 0x1F85, 11176 },
+ { 0x1F03, 11186 },
+ { 0x1F83, 11194 },
+ { 0x1F07, 11204 },
+ { 0x1F87, 11212 },
+ { 0x1F81, 11222 },
+ { 0x1F00, 11230 },
+ { 0x1F04, 11236 },
+ { 0x1F84, 11244 },
+ { 0x1F02, 11254 },
+ { 0x1F82, 11262 },
+ { 0x1F06, 11272 },
+ { 0x1F86, 11280 },
+ { 0x1F80, 11290 },
+ { 0x03AC, 11298 },
+ { 0x1F70, 11304 },
+ { 0x1FB2, 11310 },
+ { 0x1FB1, 11318 },
+ { 0x1FB0, 11324 },
+ { 0x1FB6, 11330 },
+ { 0x1FB7, 11336 },
+ { 0x1FB3, 11344 },
+ { 0x03B4, 11350 },
+ { 0x03C2, 11354 },
+ { 0x03B3, 11359 },
+ { 0x03BA, 11363 },
+ { 0x03DF, 11367 },
+ { 0x03BB, 11371 },
+ { 0x03C9, 11375 },
+ { 0x1F7D, 11379 },
+ { 0x1FF4, 11385 },
+ { 0x1F61, 11393 },
+ { 0x1F65, 11399 },
+ { 0x1FA5, 11407 },
+ { 0x1F63, 11417 },
+ { 0x1FA3, 11425 },
+ { 0x1F67, 11435 },
+ { 0x1FA7, 11443 },
+ { 0x1FA1, 11453 },
+ { 0x1F60, 11461 },
+ { 0x1F64, 11467 },
+ { 0x1FA4, 11475 },
+ { 0x1F62, 11485 },
+ { 0x1FA2, 11493 },
+ { 0x1F66, 11503 },
+ { 0x1FA6, 11511 },
+ { 0x1FA0, 11521 },
+ { 0x03CE, 11529 },
+ { 0x1F7C, 11535 },
+ { 0x1FF2, 11541 },
+ { 0x1FF6, 11549 },
+ { 0x1FF7, 11555 },
+ { 0x1FF3, 11563 },
+ { 0x03E1, 11569 },
+ { 0x03C3, 11573 },
+ { 0x03B8, 11577 },
+ { 0x03DB, 11581 },
+ { 0x03D9, 11585 },
+ { 0x0373, 11590 },
+ { 0x03DD, 11595 },
+ { 0x03B5, 11599 },
+ { 0x1F73, 11603 },
+ { 0x1F11, 11609 },
+ { 0x1F15, 11615 },
+ { 0x1F13, 11623 },
+ { 0x1F10, 11631 },
+ { 0x1F14, 11637 },
+ { 0x1F12, 11645 },
+ { 0x03AD, 11653 },
+ { 0x1F72, 11659 },
+ { 0x03BF, 11665 },
+ { 0x1F79, 11669 },
+ { 0x1F41, 11675 },
+ { 0x1F45, 11681 },
+ { 0x1F43, 11689 },
+ { 0x1F40, 11697 },
+ { 0x1F44, 11703 },
+ { 0x1F42, 11711 },
+ { 0x03CC, 11719 },
+ { 0x1F78, 11725 },
+ { 0x03C5, 11731 },
+ { 0x1F7B, 11735 },
+ { 0x1F51, 11741 },
+ { 0x1F55, 11747 },
+ { 0x1F53, 11755 },
+ { 0x1F57, 11763 },
+ { 0x1F50, 11771 },
+ { 0x1F54, 11777 },
+ { 0x1F52, 11785 },
+ { 0x1F56, 11793 },
+ { 0x03CD, 11801 },
+ { 0x1F7A, 11807 },
+ { 0x1FE1, 11813 },
+ { 0x1FE0, 11819 },
+ { 0x03CB, 11825 },
+ { 0x1FE3, 11831 },
+ { 0x03B0, 11839 },
+ { 0x1FE2, 11847 },
+ { 0x1FE7, 11855 },
+ { 0x1FE6, 11863 },
+ { 0x0377, 11869 },
+ { 0x037D, 11874 },
+ { 0x037B, 11881 },
+ { 0x03D1, 11887 },
+ { 0x717E, 11890 },
+ { 0x7178, 11894 },
+ { 0x0384, 11898 },
+ { 0x1FEF, 11900 },
+ { 0x9200, 11902 },
+ { 0x9201, 11906 },
+ { 0x9202, 11910 },
+ { 0x9203, 11914 },
+ { 0x9204, 11918 },
+ { 0x9205, 11922 },
+ { 0x9206, 11926 },
+ { 0x9207, 11930 },
+ { 0x9208, 11934 },
+ { 0x9209, 11938 },
+ { 0x920A, 11942 },
+ { 0x920B, 11946 },
+ { 0x920C, 11950 },
+ { 0x920D, 11954 },
+ { 0x920E, 11958 },
+ { 0x920F, 11962 },
+ { 0x9210, 11966 },
+ { 0x9211, 11970 },
+ { 0x9212, 11974 },
+ { 0x9213, 11978 },
+ { 0x9214, 11982 },
+ { 0x9215, 11986 },
+ { 0x9216, 11990 },
+ { 0x9217, 11994 },
+ { 0x9218, 11998 },
+ { 0x9219, 12002 },
+ { 0x921A, 12006 },
+ { 0x921B, 12010 },
+ { 0x921C, 12014 },
+ { 0x7187, 12018 },
+ { 0x7186, 12021 },
+ { 0x7188, 12024 },
+ { 0x03F3, 12027 },
+ { 0x03DE, 12030 },
+ { 0x03E0, 12033 },
+ { 0x1D28, 12036 },
+ { 0x1D2A, 12041 },
+ { 0x1D29, 12046 },
+ { 0x1D26, 12051 },
+ { 0x1D27, 12056 },
+ { 0x03DA, 12061 },
+ { 0x03D8, 12064 },
+ { 0x03DC, 12068 },
+ { 0x03F2, 12071 },
+ { 0x03F5, 12075 },
+ { 0x7184, 12079 },
+ { 0x717A, 12082 },
+ { 0x7185, 12085 },
+ { 0x03CF, 12088 },
+ { 0x03F4, 12092 },
+ { 0x03FE, 12096 },
+ { 0x039C, 12102 },
+ { 0x039D, 12106 },
+ { 0x03A0, 12110 },
+ { 0x039E, 12114 },
+ { 0x03A7, 12118 },
+ { 0x0397, 12122 },
+ { 0x1FCB, 12126 },
+ { 0x1F29, 12132 },
+ { 0x1F2D, 12138 },
+ { 0x1F9D, 12146 },
+ { 0x1F2B, 12156 },
+ { 0x1F9B, 12164 },
+ { 0x1F2F, 12174 },
+ { 0x1F9F, 12182 },
+ { 0x1F99, 12192 },
+ { 0x1F28, 12200 },
+ { 0x1F2C, 12206 },
+ { 0x1F9C, 12214 },
+ { 0x1F2A, 12224 },
+ { 0x1F9A, 12232 },
+ { 0x1F2E, 12242 },
+ { 0x1F9E, 12250 },
+ { 0x1F98, 12260 },
+ { 0x0389, 12268 },
+ { 0x1FCA, 12274 },
+ { 0x1FCC, 12280 },
+ { 0x03A6, 12286 },
+ { 0x03A8, 12290 },
+ { 0x03A1, 12294 },
+ { 0x1FEC, 12298 },
+ { 0x03FA, 12304 },
+ { 0x03F7, 12308 },
+ { 0x03A4, 12312 },
+ { 0x0392, 12316 },
+ { 0x0370, 12320 },
+ { 0x0399, 12324 },
+ { 0x1FDB, 12328 },
+ { 0x1F39, 12334 },
+ { 0x1F3D, 12340 },
+ { 0x1F3B, 12348 },
+ { 0x1F3F, 12356 },
+ { 0x1F38, 12364 },
+ { 0x1F3C, 12370 },
+ { 0x1F3A, 12378 },
+ { 0x1F3E, 12386 },
+ { 0x038A, 12394 },
+ { 0x1FDA, 12400 },
+ { 0x1FD9, 12406 },
+ { 0x1FD8, 12412 },
+ { 0x03AA, 12418 },
+ { 0x0396, 12424 },
+ { 0x0391, 12428 },
+ { 0x1FBB, 12432 },
+ { 0x1F09, 12438 },
+ { 0x1F0D, 12444 },
+ { 0x1F8D, 12452 },
+ { 0x1F0B, 12462 },
+ { 0x1F8B, 12470 },
+ { 0x1F0F, 12480 },
+ { 0x1F8F, 12488 },
+ { 0x1F89, 12498 },
+ { 0x1F08, 12506 },
+ { 0x1F0C, 12512 },
+ { 0x1F8C, 12520 },
+ { 0x1F0A, 12530 },
+ { 0x1F8A, 12538 },
+ { 0x1F0E, 12548 },
+ { 0x1F8E, 12556 },
+ { 0x1F88, 12566 },
+ { 0x0386, 12574 },
+ { 0x1FBA, 12580 },
+ { 0x1FB9, 12586 },
+ { 0x1FB8, 12592 },
+ { 0x1FBC, 12598 },
+ { 0x0394, 12604 },
+ { 0x0393, 12608 },
+ { 0x039A, 12612 },
+ { 0x039B, 12616 },
+ { 0x03A9, 12620 },
+ { 0x1FFB, 12624 },
+ { 0x1F69, 12630 },
+ { 0x1F6D, 12636 },
+ { 0x1FAD, 12644 },
+ { 0x1F6B, 12654 },
+ { 0x1FAB, 12662 },
+ { 0x1F6F, 12672 },
+ { 0x1FAF, 12680 },
+ { 0x1FA9, 12690 },
+ { 0x1F68, 12698 },
+ { 0x1F6C, 12704 },
+ { 0x1FAC, 12712 },
+ { 0x1F6A, 12722 },
+ { 0x1FAA, 12730 },
+ { 0x1F6E, 12740 },
+ { 0x1FAE, 12748 },
+ { 0x1FA8, 12758 },
+ { 0x038F, 12766 },
+ { 0x1FFA, 12772 },
+ { 0x1FFC, 12778 },
+ { 0x03A3, 12784 },
+ { 0x0398, 12788 },
+ { 0x0372, 12792 },
+ { 0x0395, 12797 },
+ { 0x1FC9, 12801 },
+ { 0x1F19, 12807 },
+ { 0x1F1D, 12813 },
+ { 0x1F1B, 12821 },
+ { 0x1F18, 12829 },
+ { 0x1F1C, 12835 },
+ { 0x1F1A, 12843 },
+ { 0x0388, 12851 },
+ { 0x1FC8, 12857 },
+ { 0x039F, 12863 },
+ { 0x1FF9, 12867 },
+ { 0x1F49, 12873 },
+ { 0x1F4D, 12879 },
+ { 0x1F4B, 12887 },
+ { 0x1F48, 12895 },
+ { 0x1F4C, 12901 },
+ { 0x1F4A, 12909 },
+ { 0x038C, 12917 },
+ { 0x1FF8, 12923 },
+ { 0x03A5, 12929 },
+ { 0x1FEB, 12933 },
+ { 0x1F59, 12939 },
+ { 0x1F5D, 12945 },
+ { 0x1F5B, 12953 },
+ { 0x1F5F, 12961 },
+ { 0x038E, 12969 },
+ { 0x1FEA, 12975 },
+ { 0x1FE9, 12981 },
+ { 0x1FE8, 12987 },
+ { 0x03AB, 12993 },
+ { 0x0376, 12999 },
+ { 0x03F9, 13004 },
+ { 0x03FF, 13009 },
+ { 0x03FD, 13016 },
+ { 0x717B, 13022 },
+ { 0x1FBD, 13025 },
+ { 0x7182, 13027 },
+ { 0x9245, 13031 },
+ { 0x0374, 13034 },
+ { 0x03D2, 13037 },
+ { 0x03D3, 13042 },
+ { 0x03D4, 13049 },
+ { 0x7181, 13056 },
+ { 0x037E, 13059 },
+ { 0x03F6, 13062 },
+ { 0x7189, 13067 },
+ { 0x1FEE, 13071 },
+ { 0x1FED, 13075 },
+ { 0x1FC1, 13079 },
+ { 0x0385, 13083 },
+ { 0x1D6A, 13086 },
+ { 0x1D69, 13091 },
+ { 0x1D68, 13096 },
+ { 0x1D66, 13101 },
+ { 0x1D67, 13106 },
+ { 0x7141, 13111 },
+ { 0x7142, 13116 },
+ { 0x7152, 13121 },
+ { 0x714B, 13127 },
+ { 0x7140, 13133 },
+ { 0x7154, 13138 },
+ { 0x714D, 13144 },
+ { 0x7157, 13150 },
+ { 0x7150, 13155 },
+ { 0x7149, 13160 },
+ { 0x7155, 13165 },
+ { 0x7143, 13171 },
+ { 0x7145, 13175 },
+ { 0x7153, 13180 },
+ { 0x714C, 13186 },
+ { 0x714F, 13192 },
+ { 0x7148, 13197 },
+ { 0x7146, 13202 },
+ { 0x714E, 13207 },
+ { 0x7144, 13213 },
+ { 0x7151, 13217 },
+ { 0x714A, 13222 },
+ { 0x7147, 13227 },
+ { 0x7156, 13232 },
+ { 0x7170, 13238 },
+ { 0x7173, 13243 },
+ { 0x7158, 13248 },
+ { 0x715D, 13253 },
+ { 0x7174, 13258 },
+ { 0x7159, 13263 },
+ { 0x716A, 13267 },
+ { 0x7171, 13272 },
+ { 0x7164, 13277 },
+ { 0x715C, 13281 },
+ { 0x716E, 13285 },
+ { 0x7172, 13290 },
+ { 0x7169, 13295 },
+ { 0x716B, 13299 },
+ { 0x7165, 13304 },
+ { 0x716F, 13308 },
+ { 0x7163, 13313 },
+ { 0x715B, 13317 },
+ { 0x715E, 13321 },
+ { 0x716C, 13326 },
+ { 0x715A, 13331 },
+ { 0x7162, 13335 },
+ { 0x7168, 13339 },
+ { 0x7160, 13343 },
+ { 0x7161, 13347 },
+ { 0x715F, 13353 },
+ { 0x716D, 13357 },
+ { 0x7166, 13362 },
+ { 0x7167, 13366 },
+ { 0x1FC0, 13372 },
+ { 0x921D, 13374 },
+ { 0x921E, 13378 },
+ { 0x921F, 13382 },
+ { 0x9220, 13386 },
+ { 0x9221, 13390 },
+ { 0x9222, 13394 },
+ { 0x9223, 13398 },
+ { 0x9224, 13402 },
+ { 0x9225, 13406 },
+ { 0x9226, 13410 },
+ { 0x9227, 13414 },
+ { 0x9228, 13418 },
+ { 0x9229, 13422 },
+ { 0x922A, 13426 },
+ { 0x922B, 13430 },
+ { 0x922C, 13434 },
+ { 0x922D, 13438 },
+ { 0x922E, 13442 },
+ { 0x922F, 13446 },
+ { 0x9230, 13450 },
+ { 0x9231, 13454 },
+ { 0x9232, 13458 },
+ { 0x9233, 13462 },
+ { 0x9234, 13466 },
+ { 0x9235, 13470 },
+ { 0x9236, 13474 },
+ { 0x9237, 13478 },
+ { 0x9238, 13482 },
+ { 0x9239, 13486 },
+ { 0x923A, 13490 },
+ { 0x923B, 13494 },
+ { 0x923C, 13498 },
+ { 0x923D, 13502 },
+ { 0x923E, 13506 },
+ { 0x923F, 13510 },
+ { 0x9240, 13514 },
+ { 0x9241, 13518 },
+ { 0x037A, 13522 },
+ { 0x1FBE, 13524 },
+ { 0x2724, 13526 },
+ { 0x271C, 13530 },
+ { 0x2764, 13534 },
+ { 0x27A6, 13537 },
+ { 0x27A5, 13544 },
+ { 0x2714, 13551 },
+ { 0x2738, 13554 },
+ { 0x274B, 13560 },
+ { 0x271A, 13565 },
+ { 0x2763, 13568 },
+ { 0x27AD, 13573 },
+ { 0x279A, 13579 },
+ { 0x2798, 13583 },
+ { 0x27AE, 13587 },
+ { 0x2718, 13593 },
+ { 0x27A0, 13596 },
+ { 0x275E, 13601 },
+ { 0x275D, 13607 },
+ { 0x275C, 13614 },
+ { 0x275B, 13620 },
+ { 0x2746, 13627 },
+ { 0x2748, 13630 },
+ { 0x2731, 13632 },
+ { 0x272E, 13634 },
+ { 0x275A, 13638 },
+ { 0x2799, 13641 },
+ { 0x2762, 13644 },
+ { 0x2794, 13648 },
+ { 0x279C, 13652 },
+ { 0x27BD, 13656 },
+ { 0x2770, 13660 },
+ { 0x276E, 13665 },
+ { 0x2716, 13671 },
+ { 0x2771, 13674 },
+ { 0x276F, 13679 },
+ { 0x27B9, 13685 },
+ { 0x27B7, 13690 },
+ { 0x27B8, 13695 },
+ { 0x27A8, 13699 },
+ { 0x273D, 13704 },
+ { 0x2743, 13707 },
+ { 0x279E, 13711 },
+ { 0x27BB, 13715 },
+ { 0x2302, 13719 },
+ { 0x22B7, 13720 },
+ { 0x2253, 13722 },
+ { 0x592E, 13728 },
+ { 0x592F, 13732 },
+ { 0x592C, 13736 },
+ { 0x592D, 13740 },
+ { 0x592B, 13745 },
+ { 0x5901, 13749 },
+ { 0x5906, 13753 },
+ { 0x5902, 13757 },
+ { 0x5905, 13761 },
+ { 0x5904, 13765 },
+ { 0x5909, 13769 },
+ { 0x5900, 13773 },
+ { 0x5908, 13777 },
+ { 0x5907, 13781 },
+ { 0x5903, 13785 },
+ { 0x5927, 13789 },
+ { 0x592A, 13793 },
+ { 0x5928, 13797 },
+ { 0x5929, 13801 },
+ { 0x5926, 13805 },
+ { 0x5922, 13809 },
+ { 0x5924, 13813 },
+ { 0x5919, 13817 },
+ { 0x5921, 13821 },
+ { 0x5918, 13825 },
+ { 0x590C, 13829 },
+ { 0x591F, 13833 },
+ { 0x590A, 13837 },
+ { 0x591C, 13841 },
+ { 0x5917, 13845 },
+ { 0x5914, 13849 },
+ { 0x5923, 13853 },
+ { 0x5925, 13857 },
+ { 0x5915, 13861 },
+ { 0x591A, 13865 },
+ { 0x590E, 13869 },
+ { 0x5912, 13873 },
+ { 0x5920, 13877 },
+ { 0x591D, 13881 },
+ { 0x591B, 13885 },
+ { 0x5910, 13889 },
+ { 0x5913, 13893 },
+ { 0x590B, 13897 },
+ { 0x590D, 13901 },
+ { 0x5911, 13905 },
+ { 0x5916, 13909 },
+ { 0x590F, 13913 },
+ { 0x591E, 13917 },
+ { 0x17D7, 13921 },
+ { 0x17D4, 13925 },
+ { 0x17CF, 13928 },
+ { 0x17D2, 13931 },
+ { 0x17CC, 13934 },
+ { 0x17CB, 13937 },
+ { 0x17D8, 13940 },
+ { 0x17D6, 13943 },
+ { 0x17D9, 13948 },
+ { 0x17D0, 13952 },
+ { 0x17D1, 13956 },
+ { 0x17CE, 13959 },
+ { 0x17DA, 13962 },
+ { 0x17C6, 13965 },
+ { 0x17C7, 13968 },
+ { 0x17CA, 13971 },
+ { 0x17DD, 13974 },
+ { 0x17D5, 13977 },
+ { 0x17D3, 13980 },
+ { 0x17C9, 13983 },
+ { 0x17CD, 13986 },
+ { 0x17DC, 13989 },
+ { 0x17C8, 13992 },
+ { 0x17E1, 13995 },
+ { 0x17E6, 13998 },
+ { 0x17E2, 14001 },
+ { 0x17E5, 14004 },
+ { 0x17E4, 14007 },
+ { 0x17E9, 14010 },
+ { 0x17E0, 14013 },
+ { 0x17E8, 14016 },
+ { 0x17E7, 14019 },
+ { 0x17E3, 14022 },
+ { 0x17C1, 14025 },
+ { 0x17B7, 14029 },
+ { 0x17BB, 14033 },
+ { 0x17B9, 14037 },
+ { 0x17B6, 14041 },
+ { 0x17C2, 14045 },
+ { 0x17C3, 14049 },
+ { 0x17C5, 14053 },
+ { 0x17C0, 14057 },
+ { 0x17B8, 14061 },
+ { 0x17BE, 14065 },
+ { 0x17C4, 14069 },
+ { 0x17BD, 14073 },
+ { 0x17BC, 14077 },
+ { 0x17BF, 14081 },
+ { 0x17BA, 14085 },
+ { 0x17B5, 14089 },
+ { 0x17B4, 14093 },
+ { 0x1794, 14097 },
+ { 0x1785, 14100 },
+ { 0x1787, 14103 },
+ { 0x178A, 14106 },
+ { 0x178C, 14109 },
+ { 0x17A0, 14112 },
+ { 0x1780, 14115 },
+ { 0x1782, 14118 },
+ { 0x17A1, 14121 },
+ { 0x179B, 14124 },
+ { 0x1798, 14127 },
+ { 0x1793, 14130 },
+ { 0x1796, 14133 },
+ { 0x17A2, 14136 },
+ { 0x179A, 14139 },
+ { 0x179F, 14142 },
+ { 0x178F, 14145 },
+ { 0x1791, 14148 },
+ { 0x179C, 14151 },
+ { 0x1799, 14154 },
+ { 0x1786, 14157 },
+ { 0x1788, 14160 },
+ { 0x1781, 14163 },
+ { 0x1783, 14166 },
+ { 0x1784, 14169 },
+ { 0x178E, 14172 },
+ { 0x1789, 14175 },
+ { 0x1795, 14178 },
+ { 0x1797, 14181 },
+ { 0x179D, 14184 },
+ { 0x179E, 14187 },
+ { 0x1790, 14190 },
+ { 0x1792, 14193 },
+ { 0x178B, 14196 },
+ { 0x178D, 14199 },
+ { 0x19F3, 14202 },
+ { 0x19E3, 14206 },
+ { 0x19FA, 14210 },
+ { 0x19EA, 14214 },
+ { 0x17F3, 14218 },
+ { 0x17F2, 14223 },
+ { 0x17F0, 14228 },
+ { 0x17F4, 14233 },
+ { 0x17F1, 14238 },
+ { 0x17F5, 14243 },
+ { 0x17F8, 14248 },
+ { 0x17F7, 14253 },
+ { 0x17F9, 14258 },
+ { 0x17F6, 14263 },
+ { 0x19F2, 14268 },
+ { 0x19E2, 14272 },
+ { 0x19F4, 14276 },
+ { 0x19E4, 14280 },
+ { 0x19F1, 14284 },
+ { 0x19E1, 14288 },
+ { 0x19F5, 14292 },
+ { 0x19E5, 14296 },
+ { 0x19FD, 14300 },
+ { 0x19ED, 14304 },
+ { 0x19FC, 14308 },
+ { 0x19EC, 14312 },
+ { 0x19FE, 14316 },
+ { 0x19EE, 14320 },
+ { 0x19FB, 14324 },
+ { 0x19EB, 14328 },
+ { 0x19FF, 14332 },
+ { 0x19EF, 14336 },
+ { 0x19F8, 14340 },
+ { 0x19E8, 14344 },
+ { 0x19F7, 14348 },
+ { 0x19E7, 14352 },
+ { 0x19F9, 14356 },
+ { 0x19E9, 14360 },
+ { 0x19F6, 14364 },
+ { 0x19E6, 14368 },
+ { 0x19F0, 14372 },
+ { 0x19E0, 14375 },
+ { 0x17DB, 14378 },
+ { 0x17AD, 14382 },
+ { 0x17AF, 14386 },
+ { 0x17A5, 14390 },
+ { 0x17A7, 14394 },
+ { 0x17AB, 14398 },
+ { 0x17AE, 14402 },
+ { 0x17A4, 14406 },
+ { 0x17B0, 14410 },
+ { 0x17A3, 14414 },
+ { 0x17B3, 14418 },
+ { 0x17A6, 14422 },
+ { 0x17B1, 14426 },
+ { 0x17B2, 14432 },
+ { 0x17A8, 14438 },
+ { 0x17A9, 14442 },
+ { 0x17AC, 14446 },
+ { 0x17AA, 14450 },
+ { 0x27D8, 14454 },
+ { 0x27D9, 14457 },
+ { 0x2A1E, 14460 },
+ { 0x25EF, 14464 },
+ { 0x2AFC, 14466 },
+ { 0x271D, 14471 },
+ { 0x0061, 14473 },
+ { 0x0227, 14477 },
+ { 0x01E1, 14484 },
+ { 0x1EA1, 14493 },
+ { 0x1EA3, 14500 },
+ { 0x00E5, 14507 },
+ { 0x01FB, 14514 },
+ { 0x1E01, 14523 },
+ { 0x00E1, 14530 },
+ { 0x0103, 14536 },
+ { 0x1EB7, 14542 },
+ { 0x1EB3, 14551 },
+ { 0x1EAF, 14560 },
+ { 0x1EB1, 14568 },
+ { 0x1EB5, 14576 },
+ { 0x01CE, 14584 },
+ { 0x00E0, 14590 },
+ { 0x1E9A, 14596 },
+ { 0x00E3, 14604 },
+ { 0x0201, 14610 },
+ { 0x0101, 14617 },
+ { 0x0105, 14623 },
+ { 0x2C65, 14629 },
+ { 0x0203, 14635 },
+ { 0x00E4, 14642 },
+ { 0x01DF, 14648 },
+ { 0x1D8F, 14656 },
+ { 0x00E2, 14663 },
+ { 0x1EAD, 14669 },
+ { 0x1EA9, 14678 },
+ { 0x1EA5, 14687 },
+ { 0x1EA7, 14695 },
+ { 0x1EAB, 14703 },
+ { 0x0062, 14711 },
+ { 0x1E03, 14715 },
+ { 0x1E05, 14722 },
+ { 0x0253, 14729 },
+ { 0x1E07, 14735 },
+ { 0x1D6C, 14742 },
+ { 0x0180, 14749 },
+ { 0x0183, 14755 },
+ { 0x1D80, 14761 },
+ { 0x0063, 14768 },
+ { 0x010B, 14772 },
+ { 0x0255, 14779 },
+ { 0x0188, 14785 },
+ { 0x0107, 14791 },
+ { 0x010D, 14797 },
+ { 0x023C, 14803 },
+ { 0x00E7, 14809 },
+ { 0x1E09, 14815 },
+ { 0x0109, 14823 },
+ { 0x0064, 14829 },
+ { 0x1E0B, 14833 },
+ { 0x1E0D, 14840 },
+ { 0x0221, 14847 },
+ { 0x0257, 14853 },
+ { 0x1D91, 14859 },
+ { 0x1E0F, 14867 },
+ { 0x0256, 14874 },
+ { 0x010F, 14880 },
+ { 0x1D6D, 14886 },
+ { 0x0111, 14893 },
+ { 0x018C, 14899 },
+ { 0x1E11, 14905 },
+ { 0x1D81, 14911 },
+ { 0x1E13, 14918 },
+ { 0x0065, 14925 },
+ { 0x0117, 14929 },
+ { 0x1EB9, 14936 },
+ { 0x1EBB, 14943 },
+ { 0x00E9, 14950 },
+ { 0x0115, 14956 },
+ { 0x011B, 14962 },
+ { 0x00E8, 14968 },
+ { 0x2C78, 14974 },
+ { 0x1EBD, 14980 },
+ { 0x1E1B, 14986 },
+ { 0x0205, 14993 },
+ { 0x0113, 15000 },
+ { 0x1E17, 15006 },
+ { 0x1E15, 15014 },
+ { 0x0119, 15022 },
+ { 0x0247, 15028 },
+ { 0x0229, 15034 },
+ { 0x1E1D, 15040 },
+ { 0x0207, 15048 },
+ { 0x00EB, 15055 },
+ { 0x1D92, 15061 },
+ { 0x00EA, 15068 },
+ { 0x1EC7, 15074 },
+ { 0x1EC3, 15083 },
+ { 0x1EBF, 15092 },
+ { 0x1EC1, 15100 },
+ { 0x1EC5, 15108 },
+ { 0x1E19, 15116 },
+ { 0x0066, 15123 },
+ { 0x1E1F, 15127 },
+ { 0x0192, 15134 },
+ { 0x1D6E, 15140 },
+ { 0x1D82, 15147 },
+ { 0x0067, 15154 },
+ { 0x0121, 15158 },
+ { 0x0260, 15165 },
+ { 0x01F5, 15171 },
+ { 0x011F, 15177 },
+ { 0x01E7, 15183 },
+ { 0x1E21, 15189 },
+ { 0x01E5, 15195 },
+ { 0x0123, 15201 },
+ { 0x1D83, 15207 },
+ { 0x011D, 15214 },
+ { 0x0068, 15220 },
+ { 0x1E23, 15224 },
+ { 0x1E25, 15231 },
+ { 0x0266, 15238 },
+ { 0x1E96, 15244 },
+ { 0x1E2B, 15251 },
+ { 0x021F, 15258 },
+ { 0x0127, 15264 },
+ { 0x1E29, 15270 },
+ { 0x2C68, 15276 },
+ { 0x1E27, 15282 },
+ { 0x0125, 15288 },
+ { 0x0069, 15294 },
+ { 0x1ECB, 15298 },
+ { 0x1EC9, 15305 },
+ { 0x00ED, 15312 },
+ { 0x012D, 15318 },
+ { 0x01D0, 15324 },
+ { 0x00EC, 15330 },
+ { 0x0129, 15336 },
+ { 0x1E2D, 15342 },
+ { 0x0209, 15349 },
+ { 0x012B, 15356 },
+ { 0x012F, 15362 },
+ { 0x0268, 15368 },
+ { 0x020B, 15374 },
+ { 0x00EF, 15381 },
+ { 0x1E2F, 15387 },
+ { 0x1D96, 15395 },
+ { 0x00EE, 15402 },
+ { 0x006A, 15408 },
+ { 0x01F0, 15412 },
+ { 0x0249, 15418 },
+ { 0x0135, 15424 },
+ { 0x029D, 15430 },
+ { 0x006B, 15436 },
+ { 0x1E33, 15440 },
+ { 0x0199, 15447 },
+ { 0x1E35, 15453 },
+ { 0x1E31, 15460 },
+ { 0x01E9, 15466 },
+ { 0x5741, 15472 },
+ { 0x5745, 15478 },
+ { 0x0137, 15487 },
+ { 0x1D84, 15493 },
+ { 0x5743, 15500 },
+ { 0x2C6A, 15507 },
+ { 0x006C, 15513 },
+ { 0x019A, 15517 },
+ { 0x1E37, 15523 },
+ { 0x1E39, 15530 },
+ { 0x026C, 15539 },
+ { 0x0234, 15545 },
+ { 0x5749, 15551 },
+ { 0x1E3B, 15558 },
+ { 0x013A, 15565 },
+ { 0x013E, 15571 },
+ { 0x2C61, 15577 },
+ { 0x0140, 15584 },
+ { 0x026B, 15591 },
+ { 0x0142, 15598 },
+ { 0x013C, 15604 },
+ { 0x1D85, 15610 },
+ { 0x026D, 15617 },
+ { 0x1E3D, 15624 },
+ { 0x006D, 15631 },
+ { 0x1E41, 15635 },
+ { 0x1E43, 15642 },
+ { 0x0271, 15649 },
+ { 0x1E3F, 15655 },
+ { 0x1D6F, 15661 },
+ { 0x1D86, 15668 },
+ { 0x006E, 15675 },
+ { 0x1E45, 15679 },
+ { 0x1E47, 15686 },
+ { 0x0235, 15693 },
+ { 0x0272, 15699 },
+ { 0x1E49, 15706 },
+ { 0x019E, 15713 },
+ { 0x0144, 15721 },
+ { 0x0148, 15727 },
+ { 0x01F9, 15733 },
+ { 0x00F1, 15739 },
+ { 0x1D70, 15745 },
+ { 0x0146, 15752 },
+ { 0x1D87, 15758 },
+ { 0x0273, 15765 },
+ { 0x1E4B, 15772 },
+ { 0x0149, 15779 },
+ { 0x006F, 15786 },
+ { 0x022F, 15790 },
+ { 0x0231, 15797 },
+ { 0x1ECD, 15806 },
+ { 0x2C7A, 15813 },
+ { 0x1ECF, 15821 },
+ { 0x01A1, 15828 },
+ { 0x1EE3, 15834 },
+ { 0x1EDF, 15843 },
+ { 0x1EDB, 15852 },
+ { 0x1EDD, 15860 },
+ { 0x1EE1, 15868 },
+ { 0x574B, 15876 },
+ { 0x574D, 15884 },
+ { 0x00F3, 15890 },
+ { 0x014F, 15896 },
+ { 0x01D2, 15902 },
+ { 0x00F2, 15908 },
+ { 0x00F5, 15914 },
+ { 0x1E4D, 15920 },
+ { 0x022D, 15928 },
+ { 0x1E4F, 15936 },
+ { 0x0151, 15944 },
+ { 0x020D, 15951 },
+ { 0x014D, 15958 },
+ { 0x1E53, 15964 },
+ { 0x1E51, 15972 },
+ { 0x01EB, 15980 },
+ { 0x01ED, 15986 },
+ { 0x00F8, 15994 },
+ { 0x01FF, 16000 },
+ { 0x020F, 16008 },
+ { 0x00F6, 16015 },
+ { 0x022B, 16021 },
+ { 0x00F4, 16029 },
+ { 0x1ED9, 16035 },
+ { 0x1ED5, 16044 },
+ { 0x1ED1, 16053 },
+ { 0x1ED3, 16061 },
+ { 0x1ED7, 16069 },
+ { 0x0070, 16077 },
+ { 0x1E57, 16081 },
+ { 0x01A5, 16088 },
+ { 0x1E55, 16094 },
+ { 0x1D71, 16100 },
+ { 0x1D7D, 16107 },
+ { 0x5751, 16113 },
+ { 0x1D88, 16121 },
+ { 0x5753, 16128 },
+ { 0x5755, 16134 },
+ { 0x0071, 16141 },
+ { 0x02A0, 16145 },
+ { 0x024B, 16151 },
+ { 0x5757, 16158 },
+ { 0x5759, 16166 },
+ { 0x0072, 16173 },
+ { 0x1E59, 16177 },
+ { 0x1E5B, 16184 },
+ { 0x1E5D, 16191 },
+ { 0x1E5F, 16200 },
+ { 0x027C, 16207 },
+ { 0x027D, 16214 },
+ { 0x0155, 16220 },
+ { 0x0159, 16226 },
+ { 0x0211, 16232 },
+ { 0x1D72, 16239 },
+ { 0x024D, 16246 },
+ { 0x0157, 16252 },
+ { 0x1D89, 16258 },
+ { 0x027E, 16265 },
+ { 0x1D73, 16271 },
+ { 0x0213, 16280 },
+ { 0x575B, 16287 },
+ { 0x0073, 16292 },
+ { 0x1E61, 16296 },
+ { 0x1E63, 16303 },
+ { 0x1E69, 16310 },
+ { 0x0282, 16320 },
+ { 0x015B, 16326 },
+ { 0x1E65, 16332 },
+ { 0x0161, 16341 },
+ { 0x1E67, 16347 },
+ { 0x0219, 16356 },
+ { 0x023F, 16363 },
+ { 0x1D74, 16370 },
+ { 0x015F, 16377 },
+ { 0x1D8A, 16383 },
+ { 0x015D, 16390 },
+ { 0x0074, 16396 },
+ { 0x1E6B, 16400 },
+ { 0x1E6D, 16407 },
+ { 0x0236, 16414 },
+ { 0x01AD, 16420 },
+ { 0x1E6F, 16426 },
+ { 0x0165, 16433 },
+ { 0x021B, 16439 },
+ { 0x1D75, 16446 },
+ { 0x0167, 16453 },
+ { 0x0163, 16459 },
+ { 0x01AB, 16465 },
+ { 0x2C66, 16472 },
+ { 0x1E97, 16479 },
+ { 0x0288, 16485 },
+ { 0x1E71, 16492 },
+ { 0x0075, 16499 },
+ { 0x0289, 16503 },
+ { 0x1EE5, 16508 },
+ { 0x1EE7, 16515 },
+ { 0x01B0, 16522 },
+ { 0x1EF1, 16528 },
+ { 0x1EED, 16537 },
+ { 0x1EE9, 16546 },
+ { 0x1EEB, 16554 },
+ { 0x1EEF, 16562 },
+ { 0x016F, 16570 },
+ { 0x00FA, 16577 },
+ { 0x016D, 16583 },
+ { 0x01D4, 16589 },
+ { 0x00F9, 16595 },
+ { 0x0169, 16601 },
+ { 0x1E79, 16607 },
+ { 0x1E75, 16615 },
+ { 0x0171, 16622 },
+ { 0x0215, 16629 },
+ { 0x016B, 16636 },
+ { 0x1E7B, 16642 },
+ { 0x0173, 16650 },
+ { 0x0217, 16656 },
+ { 0x00FC, 16663 },
+ { 0x01D8, 16669 },
+ { 0x01DA, 16677 },
+ { 0x01DC, 16685 },
+ { 0x01D6, 16693 },
+ { 0x1E73, 16701 },
+ { 0x1D99, 16708 },
+ { 0x00FB, 16715 },
+ { 0x1E77, 16721 },
+ { 0x0076, 16728 },
+ { 0x1E7F, 16732 },
+ { 0x2C74, 16739 },
+ { 0x028B, 16745 },
+ { 0x2C71, 16751 },
+ { 0x1E7D, 16758 },
+ { 0x1D8C, 16764 },
+ { 0x575F, 16771 },
+ { 0x0077, 16778 },
+ { 0x1E87, 16782 },
+ { 0x1E89, 16789 },
+ { 0x2C73, 16796 },
+ { 0x1E98, 16802 },
+ { 0x1E83, 16809 },
+ { 0x1E81, 16815 },
+ { 0x1E85, 16821 },
+ { 0x0175, 16827 },
+ { 0x0078, 16833 },
+ { 0x1E8B, 16837 },
+ { 0x1D8D, 16844 },
+ { 0x1E8D, 16851 },
+ { 0x0079, 16857 },
+ { 0x1E8F, 16861 },
+ { 0x1EF5, 16868 },
+ { 0x01B4, 16875 },
+ { 0x1EF7, 16881 },
+ { 0x1EFF, 16888 },
+ { 0x1E99, 16894 },
+ { 0x00FD, 16901 },
+ { 0x1EF3, 16907 },
+ { 0x1EF9, 16913 },
+ { 0x0233, 16919 },
+ { 0x024F, 16925 },
+ { 0x00FF, 16931 },
+ { 0x0177, 16937 },
+ { 0x007A, 16943 },
+ { 0x017C, 16947 },
+ { 0x1E93, 16954 },
+ { 0x0291, 16961 },
+ { 0x0225, 16967 },
+ { 0x1E95, 16973 },
+ { 0x017A, 16980 },
+ { 0x017E, 16986 },
+ { 0x0240, 16992 },
+ { 0x1D76, 16999 },
+ { 0x01B6, 17006 },
+ { 0x1D8E, 17012 },
+ { 0x2C6C, 17019 },
+ { 0x0290, 17025 },
+ { 0x1E91, 17032 },
+ { 0x5733, 17038 },
+ { 0x00E6, 17042 },
+ { 0x01FD, 17046 },
+ { 0x01E3, 17052 },
+ { 0x5735, 17058 },
+ { 0x5737, 17062 },
+ { 0x5739, 17066 },
+ { 0x573B, 17070 },
+ { 0x573D, 17077 },
+ { 0x0238, 17081 },
+ { 0x01F3, 17086 },
+ { 0x01C6, 17090 },
+ { 0x02A3, 17096 },
+ { 0x02A5, 17101 },
+ { 0x576B, 17108 },
+ { 0x0195, 17112 },
+ { 0x576D, 17116 },
+ { 0x01C9, 17120 },
+ { 0x02AA, 17124 },
+ { 0x02AB, 17129 },
+ { 0x01CC, 17134 },
+ { 0x01A3, 17138 },
+ { 0x574F, 17142 },
+ { 0x0223, 17146 },
+ { 0x0239, 17150 },
+ { 0x02A8, 17155 },
+ { 0x1D7A, 17162 },
+ { 0x02A6, 17168 },
+ { 0x5729, 17173 },
+ { 0x1D6B, 17177 },
+ { 0x5778, 17181 },
+ { 0x5761, 17185 },
+ { 0x576F, 17189 },
+ { 0x5771, 17193 },
+ { 0x014B, 17197 },
+ { 0x0283, 17201 },
+ { 0x0286, 17205 },
+ { 0x1D8B, 17211 },
+ { 0x1D98, 17218 },
+ { 0x00F0, 17225 },
+ { 0x0292, 17229 },
+ { 0x0293, 17233 },
+ { 0x01BA, 17239 },
+ { 0x01EF, 17245 },
+ { 0x1D9A, 17251 },
+ { 0x01B9, 17258 },
+ { 0x0138, 17263 },
+ { 0x5772, 17267 },
+ { 0x5773, 17271 },
+ { 0x5774, 17275 },
+ { 0x0278, 17279 },
+ { 0x5775, 17283 },
+ { 0x575D, 17287 },
+ { 0x1D16, 17292 },
+ { 0x5777, 17298 },
+ { 0x02A4, 17302 },
+ { 0x02A9, 17307 },
+ { 0x2C76, 17312 },
+ { 0x5727, 17317 },
+ { 0x0267, 17321 },
+ { 0x0269, 17327 },
+ { 0x1D7C, 17331 },
+ { 0x026E, 17337 },
+ { 0x017F, 17341 },
+ { 0x1E9B, 17346 },
+ { 0x1E9D, 17354 },
+ { 0x1E9C, 17362 },
+ { 0x025B, 17370 },
+ { 0x1D93, 17375 },
+ { 0x0254, 17383 },
+ { 0x1D97, 17388 },
+ { 0x0264, 17396 },
+ { 0x02A7, 17401 },
+ { 0x0185, 17406 },
+ { 0x01A8, 17411 },
+ { 0x01BD, 17416 },
+ { 0x5769, 17421 },
+ { 0x021D, 17425 },
+ { 0x0251, 17429 },
+ { 0x1D90, 17433 },
+ { 0x1E9F, 17440 },
+ { 0x0263, 17444 },
+ { 0x0259, 17448 },
+ { 0x025A, 17452 },
+ { 0x1D95, 17458 },
+ { 0x00DF, 17465 },
+ { 0x0285, 17470 },
+ { 0x00FE, 17476 },
+ { 0x5765, 17480 },
+ { 0x5767, 17486 },
+ { 0x0275, 17494 },
+ { 0x1D17, 17499 },
+ { 0x5747, 17505 },
+ { 0x029A, 17510 },
+ { 0x0277, 17516 },
+ { 0x025E, 17521 },
+ { 0x019B, 17528 },
+ { 0x0261, 17534 },
+ { 0x0250, 17539 },
+ { 0x01DD, 17544 },
+ { 0x1D77, 17549 },
+ { 0x0265, 17554 },
+ { 0x02AE, 17559 },
+ { 0x02AF, 17566 },
+ { 0x1D09, 17575 },
+ { 0x029E, 17580 },
+ { 0x5781, 17585 },
+ { 0x026F, 17590 },
+ { 0x0270, 17595 },
+ { 0x0279, 17603 },
+ { 0x027B, 17608 },
+ { 0x027A, 17615 },
+ { 0x2C79, 17623 },
+ { 0x0287, 17630 },
+ { 0x028C, 17635 },
+ { 0x028D, 17640 },
+ { 0x028E, 17645 },
+ { 0x1D02, 17650 },
+ { 0x1D14, 17655 },
+ { 0x1D08, 17660 },
+ { 0x0252, 17666 },
+ { 0x018D, 17671 },
+ { 0x577F, 17676 },
+ { 0x0131, 17682 },
+ { 0x0237, 17687 },
+ { 0x025F, 17692 },
+ { 0x0284, 17699 },
+ { 0x0242, 17708 },
+ { 0x577A, 17713 },
+ { 0x577C, 17718 },
+ { 0x1D79, 17723 },
+ { 0x5783, 17728 },
+ { 0x5785, 17733 },
+ { 0x5787, 17738 },
+ { 0x028A, 17743 },
+ { 0x1D7F, 17747 },
+ { 0x2184, 17753 },
+ { 0x573F, 17758 },
+ { 0x0258, 17765 },
+ { 0x027F, 17770 },
+ { 0x025C, 17777 },
+ { 0x025D, 17783 },
+ { 0x1D94, 17791 },
+ { 0x578C, 17800 },
+ { 0x1D11, 17804 },
+ { 0x1D13, 17809 },
+ { 0x1D1D, 17816 },
+ { 0x1D12, 17821 },
+ { 0x1D1F, 17827 },
+ { 0x1D1E, 17833 },
+ { 0x2C77, 17839 },
+ { 0x572B, 17844 },
+ { 0x572D, 17848 },
+ { 0x572F, 17852 },
+ { 0x5763, 17858 },
+ { 0x1EFD, 17863 },
+ { 0x1EFB, 17868 },
+ { 0x5725, 17873 },
+ { 0x5723, 17878 },
+ { 0x1D7B, 17883 },
+ { 0x1D7E, 17890 },
+ { 0x6B00, 17897 },
+ { 0x6B01, 17901 },
+ { 0x6B02, 17905 },
+ { 0x0133, 17909 },
+ { 0x0153, 17913 },
+ { 0x6B06, 17917 },
+ { 0x6B03, 17921 },
+ { 0x6B04, 17925 },
+ { 0x6B05, 17929 },
+ { 0x01A6, 17935 },
+ { 0x1D25, 17938 },
+ { 0x01BB, 17941 },
+ { 0x01BF, 17946 },
+ { 0x1D00, 17949 },
+ { 0x0299, 17954 },
+ { 0x1D04, 17959 },
+ { 0x1D05, 17964 },
+ { 0x1D07, 17969 },
+ { 0x5730, 17974 },
+ { 0x0262, 17979 },
+ { 0x029B, 17984 },
+ { 0x029C, 17991 },
+ { 0x026A, 17996 },
+ { 0x1D0A, 18001 },
+ { 0x1D0B, 18006 },
+ { 0x029F, 18011 },
+ { 0x1D0C, 18016 },
+ { 0x1D0D, 18023 },
+ { 0x0274, 18028 },
+ { 0x1D0F, 18033 },
+ { 0x1D18, 18038 },
+ { 0x0280, 18043 },
+ { 0x5731, 18048 },
+ { 0x1D1B, 18053 },
+ { 0x1D1C, 18058 },
+ { 0x1D20, 18063 },
+ { 0x1D21, 18068 },
+ { 0x028F, 18073 },
+ { 0x1D22, 18078 },
+ { 0x1D01, 18083 },
+ { 0x0276, 18088 },
+ { 0x1D15, 18093 },
+ { 0x1D06, 18098 },
+ { 0x1D23, 18103 },
+ { 0x5776, 18108 },
+ { 0x1D10, 18113 },
+ { 0x1D03, 18119 },
+ { 0x2C7B, 18125 },
+ { 0x1D1A, 18131 },
+ { 0x0281, 18137 },
+ { 0x1D0E, 18143 },
+ { 0x1D19, 18149 },
+ { 0x01C0, 18155 },
+ { 0x1D24, 18159 },
+ { 0x0294, 18164 },
+ { 0x02A1, 18168 },
+ { 0x01C1, 18174 },
+ { 0x01C2, 18178 },
+ { 0x02AD, 18182 },
+ { 0x0298, 18186 },
+ { 0x02AC, 18190 },
+ { 0x0296, 18194 },
+ { 0x01BE, 18199 },
+ { 0x01AA, 18206 },
+ { 0x02A2, 18211 },
+ { 0x01C3, 18218 },
+ { 0x0297, 18222 },
+ { 0x0295, 18226 },
+ { 0x0041, 18231 },
+ { 0x0226, 18235 },
+ { 0x01E0, 18242 },
+ { 0x1EA0, 18251 },
+ { 0x1EA2, 18258 },
+ { 0x00C5, 18265 },
+ { 0x01FA, 18272 },
+ { 0x1E00, 18281 },
+ { 0x00C1, 18288 },
+ { 0x0102, 18294 },
+ { 0x1EB6, 18300 },
+ { 0x1EB2, 18309 },
+ { 0x1EAE, 18318 },
+ { 0x1EB0, 18326 },
+ { 0x1EB4, 18334 },
+ { 0x01CD, 18342 },
+ { 0x00C0, 18348 },
+ { 0x00C3, 18354 },
+ { 0x0200, 18360 },
+ { 0x0100, 18367 },
+ { 0x0104, 18373 },
+ { 0x023A, 18379 },
+ { 0x0202, 18385 },
+ { 0x00C4, 18392 },
+ { 0x01DE, 18398 },
+ { 0x00C2, 18406 },
+ { 0x1EAC, 18412 },
+ { 0x1EA8, 18421 },
+ { 0x1EA4, 18430 },
+ { 0x1EA6, 18438 },
+ { 0x1EAA, 18446 },
+ { 0x0042, 18454 },
+ { 0x1E02, 18458 },
+ { 0x1E04, 18465 },
+ { 0x0181, 18472 },
+ { 0x1E06, 18478 },
+ { 0x0243, 18485 },
+ { 0x0182, 18491 },
+ { 0x0043, 18497 },
+ { 0x010A, 18501 },
+ { 0x0187, 18508 },
+ { 0x0106, 18514 },
+ { 0x010C, 18520 },
+ { 0x023B, 18526 },
+ { 0x00C7, 18532 },
+ { 0x1E08, 18538 },
+ { 0x0108, 18546 },
+ { 0x0044, 18552 },
+ { 0x1E0A, 18556 },
+ { 0x1E0C, 18563 },
+ { 0x018A, 18570 },
+ { 0x1E0E, 18576 },
+ { 0x010E, 18583 },
+ { 0x01F2, 18589 },
+ { 0x01C5, 18597 },
+ { 0x0110, 18607 },
+ { 0x018B, 18613 },
+ { 0x1E10, 18619 },
+ { 0x1E12, 18625 },
+ { 0x0045, 18632 },
+ { 0x0116, 18636 },
+ { 0x1EB8, 18643 },
+ { 0x1EBA, 18650 },
+ { 0x00C9, 18657 },
+ { 0x0114, 18663 },
+ { 0x011A, 18669 },
+ { 0x00C8, 18675 },
+ { 0x1EBC, 18681 },
+ { 0x1E1A, 18687 },
+ { 0x0204, 18694 },
+ { 0x0112, 18701 },
+ { 0x1E16, 18707 },
+ { 0x1E14, 18715 },
+ { 0x0118, 18723 },
+ { 0x0246, 18729 },
+ { 0x0228, 18735 },
+ { 0x1E1C, 18741 },
+ { 0x0206, 18749 },
+ { 0x00CB, 18756 },
+ { 0x00CA, 18762 },
+ { 0x1EC6, 18768 },
+ { 0x1EC2, 18777 },
+ { 0x1EBE, 18786 },
+ { 0x1EC0, 18794 },
+ { 0x1EC4, 18802 },
+ { 0x1E18, 18810 },
+ { 0x0046, 18817 },
+ { 0x1E1E, 18821 },
+ { 0x0191, 18828 },
+ { 0x0047, 18834 },
+ { 0x0120, 18838 },
+ { 0x0193, 18845 },
+ { 0x01F4, 18851 },
+ { 0x011E, 18857 },
+ { 0x01E6, 18863 },
+ { 0x1E20, 18869 },
+ { 0x01E4, 18875 },
+ { 0x0122, 18881 },
+ { 0x011C, 18887 },
+ { 0x0048, 18893 },
+ { 0x1E22, 18897 },
+ { 0x1E24, 18904 },
+ { 0x1E2A, 18911 },
+ { 0x021E, 18918 },
+ { 0x0126, 18924 },
+ { 0x1E28, 18930 },
+ { 0x2C67, 18936 },
+ { 0x1E26, 18942 },
+ { 0x0124, 18948 },
+ { 0x0049, 18954 },
+ { 0x0130, 18958 },
+ { 0x1ECA, 18965 },
+ { 0x1EC8, 18972 },
+ { 0x00CD, 18979 },
+ { 0x012C, 18985 },
+ { 0x01CF, 18991 },
+ { 0x00CC, 18997 },
+ { 0x0128, 19003 },
+ { 0x1E2C, 19009 },
+ { 0x0208, 19016 },
+ { 0x012A, 19023 },
+ { 0x012E, 19029 },
+ { 0x0197, 19035 },
+ { 0x020A, 19041 },
+ { 0x00CF, 19048 },
+ { 0x1E2E, 19054 },
+ { 0x00CE, 19062 },
+ { 0x004A, 19068 },
+ { 0x0248, 19072 },
+ { 0x0134, 19078 },
+ { 0x004B, 19084 },
+ { 0x1E32, 19088 },
+ { 0x0198, 19095 },
+ { 0x1E34, 19101 },
+ { 0x1E30, 19108 },
+ { 0x01E8, 19114 },
+ { 0x5740, 19120 },
+ { 0x5744, 19126 },
+ { 0x0136, 19135 },
+ { 0x5742, 19141 },
+ { 0x2C69, 19148 },
+ { 0x004C, 19154 },
+ { 0x023D, 19158 },
+ { 0x1E36, 19164 },
+ { 0x1E38, 19171 },
+ { 0x5748, 19180 },
+ { 0x1E3A, 19187 },
+ { 0x0139, 19194 },
+ { 0x013D, 19200 },
+ { 0x01C8, 19206 },
+ { 0x2C60, 19214 },
+ { 0x013F, 19221 },
+ { 0x2C62, 19228 },
+ { 0x0141, 19235 },
+ { 0x013B, 19241 },
+ { 0x1E3C, 19247 },
+ { 0x004D, 19254 },
+ { 0x1E40, 19258 },
+ { 0x1E42, 19265 },
+ { 0x2C6E, 19272 },
+ { 0x1E3E, 19278 },
+ { 0x004E, 19284 },
+ { 0x1E44, 19288 },
+ { 0x1E46, 19295 },
+ { 0x019D, 19302 },
+ { 0x1E48, 19309 },
+ { 0x0220, 19316 },
+ { 0x0143, 19324 },
+ { 0x0147, 19330 },
+ { 0x01F8, 19336 },
+ { 0x01CB, 19342 },
+ { 0x00D1, 19350 },
+ { 0x0145, 19356 },
+ { 0x1E4A, 19362 },
+ { 0x004F, 19369 },
+ { 0x022E, 19373 },
+ { 0x0230, 19380 },
+ { 0x1ECC, 19389 },
+ { 0x1ECE, 19396 },
+ { 0x01A0, 19403 },
+ { 0x1EE2, 19409 },
+ { 0x1EDE, 19418 },
+ { 0x1EDA, 19427 },
+ { 0x1EDC, 19435 },
+ { 0x1EE0, 19443 },
+ { 0x574A, 19451 },
+ { 0x574C, 19459 },
+ { 0x00D3, 19465 },
+ { 0x014E, 19471 },
+ { 0x01D1, 19477 },
+ { 0x00D2, 19483 },
+ { 0x00D5, 19489 },
+ { 0x1E4C, 19495 },
+ { 0x022C, 19503 },
+ { 0x1E4E, 19511 },
+ { 0x0150, 19519 },
+ { 0x020C, 19526 },
+ { 0x014C, 19533 },
+ { 0x1E52, 19539 },
+ { 0x1E50, 19547 },
+ { 0x019F, 19555 },
+ { 0x01EA, 19562 },
+ { 0x01EC, 19568 },
+ { 0x00D8, 19576 },
+ { 0x01FE, 19582 },
+ { 0x020E, 19590 },
+ { 0x00D6, 19597 },
+ { 0x022A, 19603 },
+ { 0x00D4, 19611 },
+ { 0x1ED8, 19617 },
+ { 0x1ED4, 19626 },
+ { 0x1ED0, 19635 },
+ { 0x1ED2, 19643 },
+ { 0x1ED6, 19651 },
+ { 0x0050, 19659 },
+ { 0x1E56, 19663 },
+ { 0x01A4, 19670 },
+ { 0x1E54, 19676 },
+ { 0x2C63, 19682 },
+ { 0x5750, 19688 },
+ { 0x5752, 19696 },
+ { 0x5754, 19702 },
+ { 0x0051, 19709 },
+ { 0x5756, 19713 },
+ { 0x5758, 19721 },
+ { 0x0052, 19728 },
+ { 0x1E58, 19732 },
+ { 0x1E5A, 19739 },
+ { 0x1E5C, 19746 },
+ { 0x1E5E, 19755 },
+ { 0x2C64, 19762 },
+ { 0x0154, 19768 },
+ { 0x0158, 19774 },
+ { 0x0210, 19780 },
+ { 0x024C, 19787 },
+ { 0x0156, 19793 },
+ { 0x0212, 19799 },
+ { 0x575A, 19806 },
+ { 0x0053, 19811 },
+ { 0x1E60, 19815 },
+ { 0x1E62, 19822 },
+ { 0x1E68, 19829 },
+ { 0x015A, 19839 },
+ { 0x1E64, 19845 },
+ { 0x0160, 19854 },
+ { 0x1E66, 19860 },
+ { 0x0218, 19869 },
+ { 0x015E, 19876 },
+ { 0x015C, 19882 },
+ { 0x0054, 19888 },
+ { 0x1E6A, 19892 },
+ { 0x1E6C, 19899 },
+ { 0x01AC, 19906 },
+ { 0x1E6E, 19912 },
+ { 0x0164, 19919 },
+ { 0x021A, 19925 },
+ { 0x0166, 19932 },
+ { 0x0162, 19938 },
+ { 0x023E, 19944 },
+ { 0x01AE, 19951 },
+ { 0x1E70, 19958 },
+ { 0x0055, 19965 },
+ { 0x0244, 19969 },
+ { 0x1EE4, 19974 },
+ { 0x1EE6, 19981 },
+ { 0x01AF, 19988 },
+ { 0x1EF0, 19994 },
+ { 0x1EEC, 20003 },
+ { 0x1EE8, 20012 },
+ { 0x1EEA, 20020 },
+ { 0x1EEE, 20028 },
+ { 0x016E, 20036 },
+ { 0x00DA, 20043 },
+ { 0x016C, 20049 },
+ { 0x01D3, 20055 },
+ { 0x00D9, 20061 },
+ { 0x0168, 20067 },
+ { 0x1E78, 20073 },
+ { 0x1E74, 20081 },
+ { 0x0170, 20088 },
+ { 0x0214, 20095 },
+ { 0x016A, 20102 },
+ { 0x1E7A, 20108 },
+ { 0x0172, 20116 },
+ { 0x0216, 20122 },
+ { 0x00DC, 20129 },
+ { 0x01D7, 20135 },
+ { 0x01D9, 20143 },
+ { 0x01DB, 20151 },
+ { 0x01D5, 20159 },
+ { 0x1E72, 20167 },
+ { 0x00DB, 20174 },
+ { 0x1E76, 20180 },
+ { 0x0056, 20187 },
+ { 0x1E7E, 20191 },
+ { 0x01B2, 20198 },
+ { 0x1E7C, 20204 },
+ { 0x575E, 20210 },
+ { 0x0057, 20217 },
+ { 0x1E86, 20221 },
+ { 0x1E88, 20228 },
+ { 0x2C72, 20235 },
+ { 0x1E82, 20241 },
+ { 0x1E80, 20247 },
+ { 0x1E84, 20253 },
+ { 0x0174, 20259 },
+ { 0x0058, 20265 },
+ { 0x1E8A, 20269 },
+ { 0x1E8C, 20276 },
+ { 0x0059, 20282 },
+ { 0x1E8E, 20286 },
+ { 0x1EF4, 20293 },
+ { 0x01B3, 20300 },
+ { 0x1EF6, 20306 },
+ { 0x1EFE, 20313 },
+ { 0x00DD, 20319 },
+ { 0x1EF2, 20325 },
+ { 0x1EF8, 20331 },
+ { 0x0232, 20337 },
+ { 0x024E, 20343 },
+ { 0x0178, 20349 },
+ { 0x0176, 20355 },
+ { 0x005A, 20361 },
+ { 0x017B, 20365 },
+ { 0x1E92, 20372 },
+ { 0x0224, 20379 },
+ { 0x1E94, 20385 },
+ { 0x0179, 20392 },
+ { 0x017D, 20398 },
+ { 0x01B5, 20404 },
+ { 0x2C6B, 20410 },
+ { 0x1E90, 20416 },
+ { 0x5732, 20422 },
+ { 0x00C6, 20426 },
+ { 0x01FC, 20430 },
+ { 0x01E2, 20436 },
+ { 0x5734, 20442 },
+ { 0x5736, 20446 },
+ { 0x5738, 20450 },
+ { 0x573A, 20454 },
+ { 0x573C, 20461 },
+ { 0x01F1, 20465 },
+ { 0x01C4, 20469 },
+ { 0x576A, 20475 },
+ { 0x576C, 20479 },
+ { 0x01C7, 20483 },
+ { 0x01CA, 20487 },
+ { 0x01A2, 20491 },
+ { 0x574E, 20495 },
+ { 0x0222, 20499 },
+ { 0x5728, 20503 },
+ { 0x5760, 20507 },
+ { 0x576E, 20511 },
+ { 0x014A, 20515 },
+ { 0x01A9, 20519 },
+ { 0x00D0, 20523 },
+ { 0x01B7, 20527 },
+ { 0x01EE, 20531 },
+ { 0x01B8, 20537 },
+ { 0x575C, 20542 },
+ { 0x2C75, 20547 },
+ { 0x5726, 20552 },
+ { 0x0196, 20556 },
+ { 0x0190, 20560 },
+ { 0x0186, 20565 },
+ { 0x0184, 20570 },
+ { 0x01A7, 20575 },
+ { 0x01BC, 20580 },
+ { 0x5768, 20585 },
+ { 0x01F7, 20589 },
+ { 0x021C, 20593 },
+ { 0x2C6D, 20597 },
+ { 0x0194, 20601 },
+ { 0x01F6, 20605 },
+ { 0x018F, 20609 },
+ { 0x1E9E, 20613 },
+ { 0x024A, 20618 },
+ { 0x00DE, 20626 },
+ { 0x5764, 20630 },
+ { 0x5766, 20636 },
+ { 0x5746, 20644 },
+ { 0x2C6F, 20649 },
+ { 0x5780, 20654 },
+ { 0x019C, 20659 },
+ { 0x0245, 20664 },
+ { 0x577E, 20669 },
+ { 0x0189, 20675 },
+ { 0x0241, 20680 },
+ { 0x5779, 20685 },
+ { 0x577B, 20690 },
+ { 0x577D, 20695 },
+ { 0x5782, 20700 },
+ { 0x5784, 20705 },
+ { 0x5786, 20710 },
+ { 0x01B1, 20715 },
+ { 0x573E, 20719 },
+ { 0x018E, 20726 },
+ { 0x578B, 20731 },
+ { 0x572A, 20735 },
+ { 0x572C, 20739 },
+ { 0x572E, 20743 },
+ { 0x5762, 20749 },
+ { 0x1EFC, 20754 },
+ { 0x1EFA, 20759 },
+ { 0x5724, 20764 },
+ { 0x5722, 20769 },
+ { 0x0132, 20774 },
+ { 0x0152, 20778 },
+ { 0x2090, 20782 },
+ { 0x2091, 20787 },
+ { 0x1D62, 20792 },
+ { 0x2C7C, 20797 },
+ { 0x2092, 20802 },
+ { 0x1D63, 20807 },
+ { 0x1D64, 20812 },
+ { 0x1D65, 20817 },
+ { 0x2093, 20822 },
+ { 0x2094, 20827 },
+ { 0x57FE, 20832 },
+ { 0x57FF, 20837 },
+ { 0x57FD, 20842 },
+ { 0x57FB, 20847 },
+ { 0x57FC, 20852 },
+ { 0x264E, 20857 },
+ { 0x2772, 20858 },
+ { 0x2773, 20864 },
+ { 0x2591, 20870 },
+ { 0x2758, 20872 },
+ { 0x1940, 20875 },
+ { 0x193B, 20878 },
+ { 0x193A, 20881 },
+ { 0x1939, 20884 },
+ { 0x1947, 20887 },
+ { 0x194C, 20890 },
+ { 0x1948, 20893 },
+ { 0x194B, 20896 },
+ { 0x194A, 20899 },
+ { 0x194F, 20902 },
+ { 0x1946, 20905 },
+ { 0x194E, 20908 },
+ { 0x194D, 20911 },
+ { 0x1949, 20914 },
+ { 0x1930, 20917 },
+ { 0x1938, 20921 },
+ { 0x1936, 20925 },
+ { 0x1934, 20929 },
+ { 0x1935, 20933 },
+ { 0x1937, 20937 },
+ { 0x1933, 20941 },
+ { 0x1931, 20945 },
+ { 0x1932, 20949 },
+ { 0x1920, 20953 },
+ { 0x1927, 20957 },
+ { 0x1921, 20961 },
+ { 0x1928, 20965 },
+ { 0x1922, 20969 },
+ { 0x1924, 20973 },
+ { 0x1926, 20977 },
+ { 0x1923, 20981 },
+ { 0x1925, 20985 },
+ { 0x1912, 20989 },
+ { 0x1906, 20992 },
+ { 0x190D, 20995 },
+ { 0x1903, 20998 },
+ { 0x191C, 21001 },
+ { 0x1908, 21004 },
+ { 0x1901, 21007 },
+ { 0x1917, 21010 },
+ { 0x1914, 21013 },
+ { 0x190F, 21016 },
+ { 0x1910, 21019 },
+ { 0x1916, 21022 },
+ { 0x191B, 21025 },
+ { 0x190B, 21028 },
+ { 0x1918, 21031 },
+ { 0x1915, 21034 },
+ { 0x1913, 21037 },
+ { 0x1907, 21040 },
+ { 0x190E, 21043 },
+ { 0x1904, 21046 },
+ { 0x1909, 21049 },
+ { 0x1902, 21052 },
+ { 0x1905, 21055 },
+ { 0x1911, 21058 },
+ { 0x1919, 21061 },
+ { 0x191A, 21064 },
+ { 0x190C, 21067 },
+ { 0x190A, 21070 },
+ { 0x1945, 21073 },
+ { 0x192A, 21076 },
+ { 0x192B, 21080 },
+ { 0x1929, 21084 },
+ { 0x1944, 21088 },
+ { 0x1900, 21091 },
+ { 0x2581, 21094 },
+ { 0x2582, 21098 },
+ { 0x2585, 21102 },
+ { 0x2584, 21106 },
+ { 0x25E1, 21109 },
+ { 0x25DB, 21112 },
+ { 0x25DF, 21117 },
+ { 0x25FA, 21122 },
+ { 0x293F, 21125 },
+ { 0x2703, 21130 },
+ { 0x27D3, 21133 },
+ { 0x270E, 21138 },
+ { 0x25DE, 21141 },
+ { 0x2751, 21146 },
+ { 0x25FF, 21151 },
+ { 0x293E, 21154 },
+ { 0x274F, 21159 },
+ { 0x2587, 21164 },
+ { 0x2583, 21168 },
+ { 0x2586, 21172 },
+ { 0x00B5, 21176 },
+ { 0x2212, 21178 },
+ { 0x2A3A, 21180 },
+ { 0x2A2A, 21184 },
+ { 0x2A29, 21189 },
+ { 0x2A2C, 21194 },
+ { 0x2A2B, 21199 },
+ { 0x2242, 21204 },
+ { 0x266D, 21206 },
+ { 0x266F, 21209 },
+ { 0x266E, 21212 },
+ { 0x2A09, 21215 },
+ { 0x22C3, 21218 },
+ { 0x2A03, 21220 },
+ { 0x2A04, 21225 },
+ { 0x2AFF, 21230 },
+ { 0x2A06, 21234 },
+ { 0x2A05, 21238 },
+ { 0x2A00, 21242 },
+ { 0x2A01, 21246 },
+ { 0x2A02, 21250 },
+ { 0x22C1, 21254 },
+ { 0x22C0, 21257 },
+ { 0x220F, 21260 },
+ { 0x2210, 21262 },
+ { 0x2211, 21264 },
+ { 0x22C2, 21266 },
+ { 0x2207, 21268 },
+ { 0x20A6, 21269 },
+ { 0x2922, 21271 },
+ { 0x2197, 21277 },
+ { 0x2928, 21280 },
+ { 0x2924, 21287 },
+ { 0x2931, 21292 },
+ { 0x292E, 21299 },
+ { 0x2B08, 21306 },
+ { 0x2B00, 21310 },
+ { 0x21D7, 21314 },
+ { 0x2921, 21318 },
+ { 0x2196, 21324 },
+ { 0x21B8, 21327 },
+ { 0x21F1, 21333 },
+ { 0x2927, 21338 },
+ { 0x2923, 21345 },
+ { 0x2932, 21350 },
+ { 0x2B09, 21357 },
+ { 0x2B01, 21361 },
+ { 0x21D6, 21365 },
+ { 0x1680, 21369 },
+ { 0x1696, 21372 },
+ { 0x1692, 21375 },
+ { 0x1691, 21378 },
+ { 0x1690, 21381 },
+ { 0x1689, 21384 },
+ { 0x1687, 21387 },
+ { 0x168C, 21390 },
+ { 0x1698, 21393 },
+ { 0x1682, 21396 },
+ { 0x168B, 21399 },
+ { 0x1685, 21402 },
+ { 0x168F, 21405 },
+ { 0x1684, 21408 },
+ { 0x1686, 21411 },
+ { 0x1681, 21414 },
+ { 0x168A, 21417 },
+ { 0x1683, 21420 },
+ { 0x169A, 21423 },
+ { 0x1688, 21426 },
+ { 0x168E, 21429 },
+ { 0x1695, 21432 },
+ { 0x1693, 21435 },
+ { 0x1694, 21438 },
+ { 0x168D, 21441 },
+ { 0x1697, 21444 },
+ { 0x1699, 21447 },
+ { 0x169B, 21450 },
+ { 0x169C, 21453 },
+ { 0x0B56, 21457 },
+ { 0x0B57, 21461 },
+ { 0x0B3C, 21465 },
+ { 0x0B4D, 21468 },
+ { 0x0B03, 21471 },
+ { 0x0B02, 21474 },
+ { 0x0B3D, 21477 },
+ { 0x0B01, 21480 },
+ { 0x0B67, 21483 },
+ { 0x0B6C, 21486 },
+ { 0x0B68, 21489 },
+ { 0x0B6B, 21492 },
+ { 0x0B6A, 21495 },
+ { 0x0B6F, 21498 },
+ { 0x0B66, 21501 },
+ { 0x0B6E, 21504 },
+ { 0x0B6D, 21507 },
+ { 0x0B69, 21510 },
+ { 0x0B47, 21513 },
+ { 0x0B3F, 21517 },
+ { 0x0B4B, 21521 },
+ { 0x0B41, 21525 },
+ { 0x0B3E, 21529 },
+ { 0x0B48, 21533 },
+ { 0x0B4C, 21537 },
+ { 0x0B40, 21541 },
+ { 0x0B42, 21545 },
+ { 0x0B62, 21549 },
+ { 0x0B43, 21554 },
+ { 0x0B63, 21559 },
+ { 0x0B44, 21564 },
+ { 0x0B70, 21569 },
+ { 0x0B05, 21571 },
+ { 0x0B0F, 21574 },
+ { 0x0B07, 21577 },
+ { 0x0B13, 21580 },
+ { 0x0B09, 21583 },
+ { 0x0B06, 21586 },
+ { 0x0B10, 21589 },
+ { 0x0B14, 21592 },
+ { 0x0B2C, 21595 },
+ { 0x0B1A, 21598 },
+ { 0x0B26, 21601 },
+ { 0x0B17, 21604 },
+ { 0x0B39, 21607 },
+ { 0x0B08, 21610 },
+ { 0x0B1C, 21613 },
+ { 0x0B15, 21616 },
+ { 0x0B32, 21619 },
+ { 0x0B2E, 21622 },
+ { 0x0B28, 21625 },
+ { 0x0B2A, 21628 },
+ { 0x0B30, 21631 },
+ { 0x0B38, 21634 },
+ { 0x0B24, 21637 },
+ { 0x0B0A, 21640 },
+ { 0x0B35, 21643 },
+ { 0x0B71, 21646 },
+ { 0x0B2F, 21649 },
+ { 0x0B2D, 21652 },
+ { 0x0B1B, 21655 },
+ { 0x0B21, 21658 },
+ { 0x0B27, 21661 },
+ { 0x0B18, 21664 },
+ { 0x0B1D, 21667 },
+ { 0x0B16, 21670 },
+ { 0x0B33, 21673 },
+ { 0x0B19, 21676 },
+ { 0x0B23, 21679 },
+ { 0x0B1E, 21682 },
+ { 0x0B2B, 21685 },
+ { 0x0B5D, 21688 },
+ { 0x0B5C, 21691 },
+ { 0x0B36, 21694 },
+ { 0x0B37, 21697 },
+ { 0x0B25, 21700 },
+ { 0x0B1F, 21703 },
+ { 0x0B5F, 21706 },
+ { 0x0B22, 21709 },
+ { 0x0B20, 21712 },
+ { 0x0B0C, 21715 },
+ { 0x0B0B, 21719 },
+ { 0x0B61, 21723 },
+ { 0x0B60, 21727 },
+ { 0x2125, 21731 },
+ { 0x262E, 21733 },
+ { 0x2318, 21735 },
+ { 0x2647, 21739 },
+ { 0x00A3, 21740 },
+ { 0x2032, 21742 },
+ { 0x2399, 21743 },
+ { 0x2236, 21746 },
+ { 0x2994, 21747 },
+ { 0x2E1D, 21751 },
+ { 0x2595, 21755 },
+ { 0x297D, 21759 },
+ { 0x25D7, 21762 },
+ { 0x2590, 21766 },
+ { 0x22A2, 21769 },
+ { 0x221F, 21771 },
+ { 0x22BE, 21773 },
+ { 0x237C, 21777 },
+ { 0x2E01, 21783 },
+ { 0x3009, 21788 },
+ { 0x2992, 21791 },
+ { 0x299C, 21796 },
+ { 0x2E00, 21801 },
+ { 0x21F4, 21805 },
+ { 0x27F4, 21810 },
+ { 0x2998, 21815 },
+ { 0x3011, 21820 },
+ { 0x007D, 21824 },
+ { 0x23AD, 21827 },
+ { 0x23AB, 21832 },
+ { 0x23AC, 21837 },
+ { 0x230B, 21842 },
+ { 0x27D6, 21844 },
+ { 0x2984, 21847 },
+ { 0x300F, 21851 },
+ { 0x301B, 21855 },
+ { 0x3019, 21859 },
+ { 0x3017, 21864 },
+ { 0x2986, 21868 },
+ { 0x300D, 21871 },
+ { 0x2E05, 21874 },
+ { 0x300B, 21878 },
+ { 0x2970, 21882 },
+ { 0x29DB, 21888 },
+ { 0x201D, 21892 },
+ { 0x2E29, 21896 },
+ { 0x22CA, 21899 },
+ { 0x2E0D, 21904 },
+ { 0x2019, 21908 },
+ { 0x005D, 21912 },
+ { 0x2990, 21915 },
+ { 0x298E, 21923 },
+ { 0x2046, 21931 },
+ { 0x298C, 21936 },
+ { 0x23A6, 21941 },
+ { 0x23A4, 21946 },
+ { 0x23A5, 21951 },
+ { 0x29D9, 21955 },
+ { 0x2309, 21958 },
+ { 0x27C6, 21960 },
+ { 0x2E27, 21964 },
+ { 0x3015, 21968 },
+ { 0x22BF, 21972 },
+ { 0x29CE, 21974 },
+ { 0x2E21, 21979 },
+ { 0x23B9, 21984 },
+ { 0x22CC, 21988 },
+ { 0x0029, 21991 },
+ { 0x23A0, 21993 },
+ { 0x239E, 21997 },
+ { 0x239F, 22001 },
+ { 0x2E03, 22004 },
+ { 0x2E0A, 22007 },
+ { 0x719A, 22010 },
+ { 0x7191, 22013 },
+ { 0x7194, 22016 },
+ { 0x2160, 22020 },
+ { 0x216D, 22023 },
+ { 0x2188, 22027 },
+ { 0x216F, 22032 },
+ { 0x2180, 22036 },
+ { 0x2165, 22042 },
+ { 0x2185, 22045 },
+ { 0x2169, 22050 },
+ { 0x2182, 22053 },
+ { 0x2161, 22057 },
+ { 0x2164, 22060 },
+ { 0x216E, 22063 },
+ { 0x2181, 22067 },
+ { 0x2163, 22071 },
+ { 0x2168, 22074 },
+ { 0x2167, 22077 },
+ { 0x216C, 22080 },
+ { 0x2186, 22083 },
+ { 0x2187, 22088 },
+ { 0x2166, 22092 },
+ { 0x2162, 22095 },
+ { 0x216A, 22098 },
+ { 0x216B, 22101 },
+ { 0x2183, 22104 },
+ { 0x7190, 22109 },
+ { 0x7193, 22112 },
+ { 0x7195, 22115 },
+ { 0x7196, 22118 },
+ { 0x7192, 22121 },
+ { 0x719B, 22124 },
+ { 0x7199, 22127 },
+ { 0x7197, 22130 },
+ { 0x7198, 22133 },
+ { 0x16ED, 22136 },
+ { 0x16EE, 22139 },
+ { 0x16CD, 22142 },
+ { 0x16D1, 22145 },
+ { 0x16C2, 22148 },
+ { 0x16B5, 22151 },
+ { 0x16AE, 22154 },
+ { 0x16E9, 22157 },
+ { 0x16A1, 22160 },
+ { 0x16A5, 22163 },
+ { 0x16EA, 22166 },
+ { 0x16A4, 22169 },
+ { 0x16CE, 22172 },
+ { 0x16AA, 22175 },
+ { 0x16AF, 22179 },
+ { 0x16B0, 22182 },
+ { 0x16A9, 22185 },
+ { 0x16A3, 22189 },
+ { 0x16B3, 22192 },
+ { 0x16E0, 22195 },
+ { 0x16B6, 22198 },
+ { 0x16A7, 22201 },
+ { 0x16B8, 22204 },
+ { 0x16C4, 22207 },
+ { 0x16DD, 22210 },
+ { 0x16E1, 22213 },
+ { 0x16AB, 22216 },
+ { 0x16E3, 22219 },
+ { 0x16A0, 22222 },
+ { 0x16B7, 22228 },
+ { 0x16C1, 22233 },
+ { 0x16C7, 22239 },
+ { 0x16B4, 22243 },
+ { 0x16E5, 22247 },
+ { 0x16A2, 22250 },
+ { 0x16C9, 22255 },
+ { 0x16A8, 22259 },
+ { 0x16E4, 22263 },
+ { 0x16DE, 22266 },
+ { 0x16D6, 22271 },
+ { 0x16BB, 22276 },
+ { 0x16C3, 22280 },
+ { 0x16B2, 22284 },
+ { 0x16B1, 22287 },
+ { 0x16CB, 22293 },
+ { 0x16CF, 22298 },
+ { 0x16B9, 22304 },
+ { 0x16BA, 22309 },
+ { 0x16DC, 22313 },
+ { 0x16DA, 22316 },
+ { 0x16D7, 22322 },
+ { 0x16BE, 22327 },
+ { 0x16D5, 22333 },
+ { 0x16C8, 22336 },
+ { 0x16CA, 22341 },
+ { 0x16E2, 22345 },
+ { 0x16DF, 22348 },
+ { 0x16D2, 22353 },
+ { 0x16DB, 22359 },
+ { 0x16C0, 22362 },
+ { 0x16D4, 22365 },
+ { 0x16A6, 22368 },
+ { 0x16E8, 22373 },
+ { 0x16C6, 22376 },
+ { 0x16E7, 22380 },
+ { 0x16C5, 22383 },
+ { 0x16E6, 22387 },
+ { 0x16AD, 22390 },
+ { 0x16CC, 22394 },
+ { 0x16D0, 22398 },
+ { 0x16AC, 22402 },
+ { 0x16D9, 22406 },
+ { 0x16BF, 22410 },
+ { 0x16D8, 22414 },
+ { 0x16BD, 22418 },
+ { 0x16BC, 22422 },
+ { 0x16D3, 22426 },
+ { 0x16EB, 22430 },
+ { 0x16F0, 22433 },
+ { 0x16EC, 22436 },
+ { 0x16EF, 22439 },
+ { 0x20A8, 22442 },
+ { 0x2AE0, 22444 },
+ { 0x2AE8, 22447 },
+ { 0x2AE9, 22452 },
+ { 0x2ADF, 22459 },
+ { 0x2AE7, 22462 },
+ { 0x2ADE, 22467 },
+ { 0x2944, 22470 },
+ { 0x2620, 22476 },
+ { 0x2333, 22479 },
+ { 0x6E58, 22480 },
+ { 0x2A61, 22483 },
+ { 0x6E52, 22487 },
+ { 0x6E5B, 22490 },
+ { 0x6E5D, 22494 },
+ { 0x6E59, 22499 },
+ { 0x6E62, 22502 },
+ { 0x6E55, 22505 },
+ { 0x6E50, 22507 },
+ { 0x6E5C, 22509 },
+ { 0x6E5E, 22513 },
+ { 0x6E5A, 22518 },
+ { 0x2170, 22521 },
+ { 0x217D, 22525 },
+ { 0x217F, 22530 },
+ { 0x2175, 22535 },
+ { 0x2179, 22539 },
+ { 0x2171, 22543 },
+ { 0x2174, 22547 },
+ { 0x217E, 22551 },
+ { 0x2173, 22556 },
+ { 0x2178, 22560 },
+ { 0x2177, 22564 },
+ { 0x217C, 22568 },
+ { 0x2176, 22572 },
+ { 0x2172, 22576 },
+ { 0x217A, 22580 },
+ { 0x217B, 22584 },
+ { 0x02DC, 22588 },
+ { 0x6E69, 22590 },
+ { 0x6E66, 22593 },
+ { 0x6E5F, 22596 },
+ { 0x220A, 22599 },
+ { 0x22F7, 22602 },
+ { 0x22F4, 22607 },
+ { 0x6E6A, 22618 },
+ { 0x6E68, 22621 },
+ { 0x6E61, 22624 },
+ { 0x220D, 22626 },
+ { 0x22FE, 22630 },
+ { 0x22FC, 22634 },
+ { 0x6E56, 22644 },
+ { 0x6E60, 22647 },
+ { 0x6E64, 22649 },
+ { 0x6E54, 22652 },
+ { 0x6E6B, 22654 },
+ { 0x6E57, 22657 },
+ { 0x6E51, 22660 },
+ { 0x6E65, 22663 },
+ { 0x6E63, 22666 },
+ { 0x2A33, 22668 },
+ { 0x2323, 22670 },
+ { 0x2117, 22671 },
+ { 0x2198, 22674 },
+ { 0x21F2, 22677 },
+ { 0x2929, 22682 },
+ { 0x2925, 22689 },
+ { 0x292D, 22694 },
+ { 0x2B0A, 22701 },
+ { 0x2B02, 22705 },
+ { 0x21D8, 22709 },
+ { 0x2199, 22713 },
+ { 0x292A, 22716 },
+ { 0x2926, 22723 },
+ { 0x2B0B, 22728 },
+ { 0x2B03, 22732 },
+ { 0x21D9, 22736 },
+ { 0x0020, 22740 },
+ { 0x27A7, 22741 },
+ { 0x269A, 22745 },
+ { 0x2695, 22748 },
+ { 0x2053, 22751 },
+ { 0x0BF8, 22753 },
+ { 0x0BD7, 22757 },
+ { 0x0BD0, 22761 },
+ { 0x0BF3, 22763 },
+ { 0x0BCD, 22766 },
+ { 0x0B83, 22769 },
+ { 0x0B82, 22772 },
+ { 0x0BF5, 22775 },
+ { 0x0BF6, 22778 },
+ { 0x0BE7, 22781 },
+ { 0x0BEC, 22784 },
+ { 0x0BE8, 22787 },
+ { 0x0BEB, 22790 },
+ { 0x0BEA, 22793 },
+ { 0x0BEF, 22796 },
+ { 0x0BE6, 22799 },
+ { 0x0BEE, 22802 },
+ { 0x0BED, 22805 },
+ { 0x0BE9, 22808 },
+ { 0x0BF4, 22811 },
+ { 0x0BF9, 22814 },
+ { 0x0BC6, 22817 },
+ { 0x0BBF, 22821 },
+ { 0x0BCA, 22825 },
+ { 0x0BC1, 22829 },
+ { 0x0BBE, 22833 },
+ { 0x0BC8, 22837 },
+ { 0x0BCC, 22841 },
+ { 0x0BC7, 22845 },
+ { 0x0BC0, 22849 },
+ { 0x0BCB, 22853 },
+ { 0x0BC2, 22857 },
+ { 0x0BF7, 22861 },
+ { 0x0B85, 22864 },
+ { 0x0B8E, 22867 },
+ { 0x0B87, 22870 },
+ { 0x0B92, 22873 },
+ { 0x0B89, 22876 },
+ { 0x0B86, 22879 },
+ { 0x0B90, 22882 },
+ { 0x0B94, 22885 },
+ { 0x0B9A, 22888 },
+ { 0x0B8F, 22891 },
+ { 0x0BB9, 22894 },
+ { 0x0B88, 22897 },
+ { 0x0B9C, 22900 },
+ { 0x0B95, 22903 },
+ { 0x0BB2, 22906 },
+ { 0x0BAE, 22909 },
+ { 0x0BA8, 22912 },
+ { 0x0B93, 22915 },
+ { 0x0BAA, 22918 },
+ { 0x0BB0, 22921 },
+ { 0x0BB8, 22924 },
+ { 0x0BA4, 22927 },
+ { 0x0B8A, 22930 },
+ { 0x0BB5, 22933 },
+ { 0x0BAF, 22936 },
+ { 0x0BB3, 22939 },
+ { 0x0B99, 22942 },
+ { 0x0BA3, 22945 },
+ { 0x0B9E, 22948 },
+ { 0x0BB1, 22951 },
+ { 0x0BB6, 22954 },
+ { 0x0BB7, 22957 },
+ { 0x0B9F, 22960 },
+ { 0x0BB4, 22963 },
+ { 0x0BA9, 22966 },
+ { 0x0BF1, 22969 },
+ { 0x0BF2, 22973 },
+ { 0x0BF0, 22977 },
+ { 0x0BFA, 22980 },
+ { 0x2204, 22983 },
+ { 0x2203, 22987 },
+ { 0x2056, 22989 },
+ { 0x2B31, 22992 },
+ { 0x21F6, 22995 },
+ { 0x2A76, 22998 },
+ { 0x27C0, 23002 },
+ { 0x2745, 23005 },
+ { 0x007E, 23008 },
+ { 0x2E1E, 23009 },
+ { 0x2E1F, 23013 },
+ { 0x2E1B, 23017 },
+ { 0x223C, 23021 },
+ { 0x2A6A, 23023 },
+ { 0x2A6B, 23028 },
+ { 0x2B49, 23033 },
+ { 0x2972, 23038 },
+ { 0x29D4, 23043 },
+ { 0x29D5, 23048 },
+ { 0x2330, 23053 },
+ { 0x2122, 23055 },
+ { 0x222A, 23058 },
+ { 0x2A41, 23059 },
+ { 0x2A45, 23063 },
+ { 0x2A42, 23067 },
+ { 0x2A48, 23070 },
+ { 0x2A46, 23075 },
+ { 0x2A4A, 23078 },
+ { 0x2594, 23084 },
+ { 0x2580, 23088 },
+ { 0x25E0, 23091 },
+ { 0x25DA, 23094 },
+ { 0x23B0, 23099 },
+ { 0x27D4, 23107 },
+ { 0x25DC, 23112 },
+ { 0x25F8, 23117 },
+ { 0x2701, 23120 },
+ { 0x23B1, 23123 },
+ { 0x2710, 23131 },
+ { 0x25DD, 23134 },
+ { 0x2752, 23139 },
+ { 0x25F9, 23144 },
+ { 0x2750, 23147 },
+ { 0x26B6, 23152 },
+ { 0x264D, 23153 },
+ { 0x231A, 23154 },
+ { 0x2638, 23155 },
+ { 0x261D, 23158 },
+ { 0x2711, 23162 },
+ { 0x263C, 23164 },
+ { 0x2667, 23168 },
+ { 0x261F, 23171 },
+ { 0x2690, 23175 },
+ { 0x2727, 23177 },
+ { 0x261C, 23181 },
+ { 0x2606, 23185 },
+ { 0x2B1E, 23187 },
+ { 0x2654, 23191 },
+ { 0x2659, 23194 },
+ { 0x2656, 23197 },
+ { 0x2655, 23200 },
+ { 0x2657, 23203 },
+ { 0x2658, 23206 },
+ { 0x2661, 23209 },
+ { 0x2B1C, 23212 },
+ { 0x261E, 23215 },
+ { 0x2616, 23219 },
+ { 0x2B52, 23222 },
+ { 0x25AB, 23225 },
+ { 0x2B2B, 23228 },
+ { 0x2664, 23231 },
+ { 0x25E6, 23234 },
+ { 0x25CB, 23236 },
+ { 0x2686, 23238 },
+ { 0x2687, 23243 },
+ { 0x29EC, 23248 },
+ { 0x25F5, 23253 },
+ { 0x25F6, 23259 },
+ { 0x25F4, 23265 },
+ { 0x25F7, 23271 },
+ { 0x2B50, 23277 },
+ { 0x25FD, 23280 },
+ { 0x25FB, 23284 },
+ { 0x2B26, 23287 },
+ { 0x2B28, 23290 },
+ { 0x6E46, 23293 },
+ { 0x25A1, 23296 },
+ { 0x25F1, 23298 },
+ { 0x25F2, 23304 },
+ { 0x25F0, 23310 },
+ { 0x25F3, 23316 },
+ { 0x2385, 23322 },
+ { 0x25A2, 23328 },
+ { 0x25EB, 23333 },
+ { 0x27E4, 23339 },
+ { 0x27E5, 23344 },
+ { 0x25A3, 23349 },
+ { 0x25C7, 23355 },
+ { 0x2662, 23357 },
+ { 0x27D0, 23360 },
+ { 0x25C8, 23365 },
+ { 0x2B21, 23371 },
+ { 0x263A, 23373 },
+ { 0x26C0, 23376 },
+ { 0x26C1, 23379 },
+ { 0x2740, 23382 },
+ { 0x2639, 23384 },
+ { 0x2B20, 23387 },
+ { 0x2704, 23389 },
+ { 0x27C1, 23391 },
+ { 0x2AFE, 23397 },
+ { 0x2B2F, 23400 },
+ { 0x25AF, 23403 },
+ { 0x29D6, 23406 },
+ { 0x25AD, 23408 },
+ { 0x260F, 23410 },
+ { 0x23E2, 23412 },
+ { 0x2B2D, 23414 },
+ { 0x25B5, 23417 },
+ { 0x25B3, 23421 },
+ { 0x25EC, 23424 },
+ { 0x27E1, 23429 },
+ { 0x27E2, 23432 },
+ { 0x27E3, 23438 },
+ { 0x25BF, 23444 },
+ { 0x25BD, 23448 },
+ { 0x25C3, 23451 },
+ { 0x25C5, 23455 },
+ { 0x25C1, 23458 },
+ { 0x25B1, 23461 },
+ { 0x25B9, 23463 },
+ { 0x25BB, 23467 },
+ { 0x2B54, 23470 },
+ { 0x25B7, 23473 },
+ { 0x713C, 23476 },
+ { 0x7101, 23481 },
+ { 0x7100, 23485 },
+ { 0x7102, 23489 },
+ { 0x713D, 23492 },
+ { 0x7107, 23497 },
+ { 0x7119, 23500 },
+ { 0x7122, 23504 },
+ { 0x710C, 23508 },
+ { 0x711E, 23511 },
+ { 0x7127, 23515 },
+ { 0x7110, 23519 },
+ { 0x712B, 23522 },
+ { 0x7108, 23526 },
+ { 0x711A, 23529 },
+ { 0x7123, 23533 },
+ { 0x710B, 23537 },
+ { 0x711D, 23540 },
+ { 0x7126, 23544 },
+ { 0x710A, 23548 },
+ { 0x711C, 23551 },
+ { 0x7125, 23555 },
+ { 0x710F, 23559 },
+ { 0x7121, 23562 },
+ { 0x712A, 23566 },
+ { 0x710E, 23570 },
+ { 0x7120, 23573 },
+ { 0x7129, 23577 },
+ { 0x7114, 23581 },
+ { 0x712F, 23584 },
+ { 0x7113, 23588 },
+ { 0x712E, 23591 },
+ { 0x710D, 23595 },
+ { 0x711F, 23598 },
+ { 0x7128, 23602 },
+ { 0x7115, 23606 },
+ { 0x7130, 23609 },
+ { 0x7109, 23613 },
+ { 0x711B, 23616 },
+ { 0x7124, 23620 },
+ { 0x7117, 23624 },
+ { 0x7132, 23627 },
+ { 0x7118, 23631 },
+ { 0x7133, 23634 },
+ { 0x7112, 23638 },
+ { 0x712D, 23641 },
+ { 0x7111, 23645 },
+ { 0x712C, 23648 },
+ { 0x7116, 23652 },
+ { 0x7131, 23655 },
+ { 0x7137, 23659 },
+ { 0x7138, 23663 },
+ { 0x713A, 23667 },
+ { 0x713B, 23671 },
+ { 0x7139, 23675 },
+ { 0x713F, 23679 },
+ { 0x713E, 23683 },
+ { 0x224A, 23687 },
+ { 0x2248, 23692 },
+ { 0x2A6F, 23695 },
+ { 0x2693, 23701 },
+ { 0x06DD, 23702 },
+ { 0x0608, 23706 },
+ { 0x060D, 23708 },
+ { 0x066D, 23711 },
+ { 0x06D4, 23715 },
+ { 0x0658, 23718 },
+ { 0x0613, 23722 },
+ { 0x060F, 23727 },
+ { 0x0603, 23730 },
+ { 0x0601, 23733 },
+ { 0x0611, 23736 },
+ { 0x06FD, 23740 },
+ { 0x06FE, 23744 },
+ { 0x0614, 23749 },
+ { 0x0612, 23752 },
+ { 0x0610, 23756 },
+ { 0x6E73, 23761 },
+ { 0x060C, 23764 },
+ { 0x064F, 23766 },
+ { 0x6E79, 23768 },
+ { 0x6E78, 23772 },
+ { 0x06EA, 23776 },
+ { 0x06EB, 23781 },
+ { 0x064E, 23786 },
+ { 0x065E, 23788 },
+ { 0x6E77, 23793 },
+ { 0x6E76, 23797 },
+ { 0x0654, 23801 },
+ { 0x0655, 23804 },
+ { 0x0650, 23807 },
+ { 0x6E7B, 23809 },
+ { 0x6E7A, 23813 },
+ { 0x06E9, 23817 },
+ { 0x06ED, 23821 },
+ { 0x06E3, 23825 },
+ { 0x06E5, 23829 },
+ { 0x06E6, 23832 },
+ { 0x06D9, 23835 },
+ { 0x0615, 23840 },
+ { 0x06E7, 23844 },
+ { 0x06DA, 23848 },
+ { 0x06D8, 23852 },
+ { 0x06E2, 23858 },
+ { 0x06E8, 23864 },
+ { 0x06DC, 23868 },
+ { 0x0617, 23872 },
+ { 0x06E4, 23876 },
+ { 0x06DB, 23880 },
+ { 0x06E1, 23885 },
+ { 0x06DF, 23892 },
+ { 0x06E0, 23897 },
+ { 0x06D7, 23903 },
+ { 0x06D6, 23913 },
+ { 0x0616, 23923 },
+ { 0x0619, 23932 },
+ { 0x0618, 23935 },
+ { 0x061A, 23938 },
+ { 0x06DE, 23941 },
+ { 0x0652, 23947 },
+ { 0x6E7F, 23949 },
+ { 0x6E7E, 23953 },
+ { 0x065C, 23957 },
+ { 0x065A, 23962 },
+ { 0x065B, 23968 },
+ { 0x06D0, 23975 },
+ { 0x6BE5, 23978 },
+ { 0x6BE7, 23983 },
+ { 0x6BE6, 23988 },
+ { 0x6BE4, 23993 },
+ { 0x06C7, 23998 },
+ { 0x0677, 24001 },
+ { 0x6BDD, 24007 },
+ { 0x6BD8, 24015 },
+ { 0x6BD7, 24020 },
+ { 0x06D5, 24025 },
+ { 0x06AD, 24028 },
+ { 0x6BD4, 24031 },
+ { 0x6BD6, 24036 },
+ { 0x6BD5, 24041 },
+ { 0x6BD3, 24046 },
+ { 0x06C6, 24051 },
+ { 0x6BDA, 24054 },
+ { 0x6BD9, 24059 },
+ { 0x06CB, 24064 },
+ { 0x6BDF, 24067 },
+ { 0x6BDE, 24072 },
+ { 0x06C8, 24077 },
+ { 0x6BDC, 24080 },
+ { 0x6BDB, 24085 },
+ { 0x0639, 24090 },
+ { 0x075D, 24093 },
+ { 0x075F, 24100 },
+ { 0x06A0, 24108 },
+ { 0x075E, 24115 },
+ { 0x6ECA, 24124 },
+ { 0x6ECC, 24129 },
+ { 0x6ECB, 24134 },
+ { 0x6EC9, 24139 },
+ { 0x0628, 24144 },
+ { 0x0751, 24147 },
+ { 0x0754, 24157 },
+ { 0x0756, 24167 },
+ { 0x0752, 24173 },
+ { 0x0753, 24182 },
+ { 0x0750, 24195 },
+ { 0x0755, 24203 },
+ { 0x6E90, 24211 },
+ { 0x6E92, 24216 },
+ { 0x6E91, 24221 },
+ { 0x6E8F, 24226 },
+ { 0x0636, 24231 },
+ { 0x06FB, 24234 },
+ { 0x6EBE, 24240 },
+ { 0x6EC0, 24245 },
+ { 0x6EBF, 24250 },
+ { 0x6EBD, 24255 },
+ { 0x062F, 24260 },
+ { 0x068A, 24263 },
+ { 0x068B, 24269 },
+ { 0x0759, 24278 },
+ { 0x0690, 24289 },
+ { 0x0689, 24296 },
+ { 0x068F, 24301 },
+ { 0x06EE, 24309 },
+ { 0x075A, 24315 },
+ { 0x6EAA, 24323 },
+ { 0x6EA9, 24328 },
+ { 0x068E, 24333 },
+ { 0x6B87, 24336 },
+ { 0x6B86, 24341 },
+ { 0x0641, 24346 },
+ { 0x06A3, 24349 },
+ { 0x06A2, 24355 },
+ { 0x0760, 24362 },
+ { 0x06A5, 24369 },
+ { 0x0761, 24376 },
+ { 0x6ED2, 24385 },
+ { 0x6ED4, 24390 },
+ { 0x6ED3, 24395 },
+ { 0x6ED1, 24400 },
+ { 0x06AF, 24405 },
+ { 0x06B2, 24408 },
+ { 0x06B0, 24415 },
+ { 0x06B4, 24420 },
+ { 0x6B93, 24427 },
+ { 0x6B95, 24432 },
+ { 0x6B94, 24437 },
+ { 0x6B92, 24442 },
+ { 0x062D, 24447 },
+ { 0x0757, 24450 },
+ { 0x0682, 24457 },
+ { 0x0681, 24465 },
+ { 0x076F, 24471 },
+ { 0x0772, 24482 },
+ { 0x076E, 24491 },
+ { 0x0685, 24500 },
+ { 0x0758, 24507 },
+ { 0x077C, 24516 },
+ { 0x6EA2, 24525 },
+ { 0x6EA4, 24530 },
+ { 0x6EA3, 24535 },
+ { 0x6EA1, 24540 },
+ { 0x0647, 24545 },
+ { 0x06C1, 24548 },
+ { 0x06C2, 24552 },
+ { 0x6BA7, 24559 },
+ { 0x6BA9, 24565 },
+ { 0x6BA8, 24571 },
+ { 0x6BA6, 24577 },
+ { 0x06C0, 24583 },
+ { 0x6BA5, 24589 },
+ { 0x6BA4, 24597 },
+ { 0x06FF, 24605 },
+ { 0x6EEA, 24611 },
+ { 0x6EEC, 24616 },
+ { 0x6EEB, 24621 },
+ { 0x6EE9, 24626 },
+ { 0x06BE, 24631 },
+ { 0x6BAB, 24635 },
+ { 0x6BAD, 24641 },
+ { 0x6BAC, 24647 },
+ { 0x6BAA, 24653 },
+ { 0x0698, 24659 },
+ { 0x6B8B, 24662 },
+ { 0x6B8A, 24667 },
+ { 0x0643, 24672 },
+ { 0x06AC, 24675 },
+ { 0x077F, 24681 },
+ { 0x06AB, 24688 },
+ { 0x06AE, 24693 },
+ { 0x6EDA, 24700 },
+ { 0x6EDC, 24705 },
+ { 0x6EDB, 24710 },
+ { 0x6ED9, 24715 },
+ { 0x0644, 24720 },
+ { 0x076A, 24723 },
+ { 0x06B6, 24728 },
+ { 0x06B5, 24734 },
+ { 0x06B7, 24740 },
+ { 0x06B8, 24747 },
+ { 0x6EDE, 24754 },
+ { 0x6EE0, 24759 },
+ { 0x6EDF, 24764 },
+ { 0x6EDD, 24769 },
+ { 0x067E, 24774 },
+ { 0x6B57, 24777 },
+ { 0x6B59, 24782 },
+ { 0x6B58, 24787 },
+ { 0x6B56, 24792 },
+ { 0x0642, 24797 },
+ { 0x06A7, 24800 },
+ { 0x06A8, 24806 },
+ { 0x6ED6, 24813 },
+ { 0x6ED8, 24818 },
+ { 0x6ED7, 24823 },
+ { 0x6ED5, 24828 },
+ { 0x0631, 24833 },
+ { 0x0694, 24836 },
+ { 0x0696, 24842 },
+ { 0x0697, 24851 },
+ { 0x076B, 24858 },
+ { 0x0699, 24866 },
+ { 0x0693, 24873 },
+ { 0x076C, 24878 },
+ { 0x0692, 24884 },
+ { 0x0695, 24890 },
+ { 0x0771, 24897 },
+ { 0x075B, 24908 },
+ { 0x06EF, 24913 },
+ { 0x6EAE, 24919 },
+ { 0x6EAD, 24924 },
+ { 0x0635, 24929 },
+ { 0x069D, 24932 },
+ { 0x069E, 24939 },
+ { 0x6EBA, 24946 },
+ { 0x6EBC, 24951 },
+ { 0x6EBB, 24956 },
+ { 0x6EB9, 24961 },
+ { 0x0637, 24966 },
+ { 0x069F, 24969 },
+ { 0x6EC2, 24976 },
+ { 0x6EC4, 24981 },
+ { 0x6EC3, 24986 },
+ { 0x6EC1, 24991 },
+ { 0x062A, 24996 },
+ { 0x067C, 24999 },
+ { 0x067D, 25004 },
+ { 0x6E96, 25012 },
+ { 0x6E98, 25017 },
+ { 0x6E97, 25022 },
+ { 0x0629, 25027 },
+ { 0x06C3, 25031 },
+ { 0x6E94, 25036 },
+ { 0x6E93, 25042 },
+ { 0x6E95, 25048 },
+ { 0x06A4, 25053 },
+ { 0x6B6B, 25056 },
+ { 0x6B6D, 25061 },
+ { 0x6B6C, 25066 },
+ { 0x6B6A, 25071 },
+ { 0x0648, 25076 },
+ { 0x06CF, 25079 },
+ { 0x06CA, 25085 },
+ { 0x06C4, 25092 },
+ { 0x0624, 25097 },
+ { 0x6E86, 25103 },
+ { 0x6E85, 25111 },
+ { 0x0778, 25119 },
+ { 0x0779, 25128 },
+ { 0x6EEE, 25137 },
+ { 0x6EED, 25142 },
+ { 0x064A, 25147 },
+ { 0x06CD, 25150 },
+ { 0x0626, 25155 },
+ { 0x6E8A, 25161 },
+ { 0x6E8C, 25169 },
+ { 0x6E8B, 25177 },
+ { 0x6E89, 25185 },
+ { 0x06CE, 25193 },
+ { 0x06D1, 25199 },
+ { 0x6EF2, 25206 },
+ { 0x06D2, 25211 },
+ { 0x06D3, 25215 },
+ { 0x6BB1, 25222 },
+ { 0x6BB0, 25231 },
+ { 0x077A, 25240 },
+ { 0x077B, 25250 },
+ { 0x6BAF, 25260 },
+ { 0x6BAE, 25266 },
+ { 0x6EF4, 25272 },
+ { 0x6EF3, 25277 },
+ { 0x6EF1, 25282 },
+ { 0x0638, 25287 },
+ { 0x6EC6, 25290 },
+ { 0x6EC8, 25295 },
+ { 0x6EC7, 25300 },
+ { 0x6EC5, 25305 },
+ { 0x0627, 25310 },
+ { 0x0672, 25313 },
+ { 0x0673, 25320 },
+ { 0x0623, 25327 },
+ { 0x6E84, 25333 },
+ { 0x6E83, 25341 },
+ { 0x0625, 25349 },
+ { 0x6E88, 25355 },
+ { 0x6E87, 25363 },
+ { 0x0622, 25371 },
+ { 0x6E82, 25377 },
+ { 0x6E81, 25385 },
+ { 0x0773, 25393 },
+ { 0x0774, 25402 },
+ { 0x6E8E, 25411 },
+ { 0x0671, 25416 },
+ { 0x6B51, 25420 },
+ { 0x6B50, 25426 },
+ { 0x0649, 25432 },
+ { 0x6EF0, 25436 },
+ { 0x6EEF, 25442 },
+ { 0x6E8D, 25448 },
+ { 0x067B, 25453 },
+ { 0x6B53, 25456 },
+ { 0x6B55, 25461 },
+ { 0x6B54, 25466 },
+ { 0x6B52, 25471 },
+ { 0x0688, 25476 },
+ { 0x6B89, 25479 },
+ { 0x6B88, 25484 },
+ { 0x0684, 25489 },
+ { 0x6B73, 25492 },
+ { 0x6B75, 25497 },
+ { 0x6B74, 25502 },
+ { 0x6B72, 25507 },
+ { 0x06B3, 25512 },
+ { 0x6B97, 25515 },
+ { 0x6B99, 25520 },
+ { 0x6B98, 25525 },
+ { 0x6B96, 25530 },
+ { 0x0674, 25535 },
+ { 0x0676, 25539 },
+ { 0x0678, 25544 },
+ { 0x0675, 25549 },
+ { 0x062C, 25554 },
+ { 0x6E9E, 25557 },
+ { 0x6EA0, 25562 },
+ { 0x6E9F, 25567 },
+ { 0x6E9D, 25572 },
+ { 0x062E, 25577 },
+ { 0x6EA6, 25580 },
+ { 0x6EA8, 25585 },
+ { 0x6EA7, 25590 },
+ { 0x6EA5, 25595 },
+ { 0x0645, 25600 },
+ { 0x0765, 25603 },
+ { 0x0766, 25609 },
+ { 0x6EE2, 25615 },
+ { 0x6EE4, 25620 },
+ { 0x6EE3, 25625 },
+ { 0x6EE1, 25630 },
+ { 0x0646, 25635 },
+ { 0x06B9, 25638 },
+ { 0x0767, 25644 },
+ { 0x06BC, 25651 },
+ { 0x0769, 25656 },
+ { 0x0768, 25662 },
+ { 0x06BD, 25668 },
+ { 0x6EE6, 25675 },
+ { 0x06BA, 25680 },
+ { 0x6B9F, 25684 },
+ { 0x6B9E, 25690 },
+ { 0x6EE8, 25696 },
+ { 0x6EE7, 25701 },
+ { 0x6EE5, 25706 },
+ { 0x0683, 25711 },
+ { 0x6B77, 25714 },
+ { 0x6B79, 25719 },
+ { 0x6B78, 25724 },
+ { 0x6B76, 25729 },
+ { 0x0691, 25734 },
+ { 0x6B8D, 25737 },
+ { 0x6B8C, 25742 },
+ { 0x0633, 25747 },
+ { 0x069A, 25750 },
+ { 0x076D, 25759 },
+ { 0x075C, 25767 },
+ { 0x0770, 25774 },
+ { 0x069B, 25785 },
+ { 0x069C, 25792 },
+ { 0x077D, 25803 },
+ { 0x077E, 25812 },
+ { 0x6EB2, 25818 },
+ { 0x6EB4, 25823 },
+ { 0x6EB3, 25828 },
+ { 0x6EB1, 25833 },
+ { 0x0630, 25838 },
+ { 0x6EAC, 25841 },
+ { 0x6EAB, 25846 },
+ { 0x062B, 25851 },
+ { 0x6E9A, 25854 },
+ { 0x6E9C, 25859 },
+ { 0x6E9B, 25864 },
+ { 0x6E99, 25869 },
+ { 0x0679, 25874 },
+ { 0x6B67, 25877 },
+ { 0x6B69, 25882 },
+ { 0x6B68, 25887 },
+ { 0x6B66, 25892 },
+ { 0x0632, 25897 },
+ { 0x6EB0, 25900 },
+ { 0x6EAF, 25905 },
+ { 0x0680, 25910 },
+ { 0x6B5B, 25913 },
+ { 0x6B5D, 25918 },
+ { 0x6B5C, 25923 },
+ { 0x6B5A, 25928 },
+ { 0x068C, 25933 },
+ { 0x6B85, 25936 },
+ { 0x6B84, 25941 },
+ { 0x06CC, 25946 },
+ { 0x063E, 25950 },
+ { 0x063F, 25958 },
+ { 0x0775, 25966 },
+ { 0x0777, 25976 },
+ { 0x0776, 25986 },
+ { 0x063D, 25996 },
+ { 0x6BFD, 26003 },
+ { 0x6BFF, 26009 },
+ { 0x6BFE, 26015 },
+ { 0x6BFC, 26021 },
+ { 0x063A, 26027 },
+ { 0x06FC, 26030 },
+ { 0x6ECE, 26036 },
+ { 0x6ED0, 26041 },
+ { 0x6ECF, 26046 },
+ { 0x6ECD, 26051 },
+ { 0x0621, 26056 },
+ { 0x6E80, 26059 },
+ { 0x06A9, 26064 },
+ { 0x0762, 26067 },
+ { 0x063B, 26073 },
+ { 0x0763, 26080 },
+ { 0x063C, 26087 },
+ { 0x0764, 26094 },
+ { 0x6B8F, 26103 },
+ { 0x6B91, 26108 },
+ { 0x6B90, 26113 },
+ { 0x6B8E, 26118 },
+ { 0x06B1, 26123 },
+ { 0x6B9B, 26126 },
+ { 0x6B9D, 26131 },
+ { 0x6B9C, 26136 },
+ { 0x6B9A, 26141 },
+ { 0x06A6, 26146 },
+ { 0x6B6F, 26149 },
+ { 0x6B71, 26154 },
+ { 0x6B70, 26159 },
+ { 0x6B6E, 26164 },
+ { 0x06BB, 26169 },
+ { 0x6BA1, 26172 },
+ { 0x6BA3, 26177 },
+ { 0x6BA2, 26182 },
+ { 0x6BA0, 26187 },
+ { 0x0634, 26192 },
+ { 0x06FA, 26195 },
+ { 0x6EB6, 26201 },
+ { 0x6EB8, 26206 },
+ { 0x6EB7, 26211 },
+ { 0x6EB5, 26216 },
+ { 0x06AA, 26221 },
+ { 0x0686, 26225 },
+ { 0x06BF, 26228 },
+ { 0x6B7B, 26234 },
+ { 0x6B7D, 26239 },
+ { 0x6B7C, 26244 },
+ { 0x6B7A, 26249 },
+ { 0x067F, 26254 },
+ { 0x6B63, 26257 },
+ { 0x6B65, 26262 },
+ { 0x6B64, 26267 },
+ { 0x6B62, 26272 },
+ { 0x068D, 26277 },
+ { 0x6B83, 26280 },
+ { 0x6B82, 26285 },
+ { 0x067A, 26290 },
+ { 0x6B5F, 26293 },
+ { 0x6B61, 26298 },
+ { 0x6B60, 26303 },
+ { 0x6B5E, 26308 },
+ { 0x6BE9, 26313 },
+ { 0x6BE8, 26322 },
+ { 0x066E, 26331 },
+ { 0x06A1, 26335 },
+ { 0x066F, 26339 },
+ { 0x06C5, 26343 },
+ { 0x6BE1, 26347 },
+ { 0x6BE0, 26353 },
+ { 0x06C9, 26359 },
+ { 0x6BE3, 26363 },
+ { 0x6BE2, 26369 },
+ { 0x0687, 26375 },
+ { 0x6B7F, 26378 },
+ { 0x6B81, 26383 },
+ { 0x6B80, 26388 },
+ { 0x6B7E, 26393 },
+ { 0x0670, 26398 },
+ { 0x0653, 26402 },
+ { 0x0600, 26405 },
+ { 0x060E, 26408 },
+ { 0x0651, 26412 },
+ { 0x6E7D, 26414 },
+ { 0x6E7C, 26418 },
+ { 0x061E, 26422 },
+ { 0x066B, 26427 },
+ { 0x066A, 26430 },
+ { 0x06EC, 26433 },
+ { 0x0640, 26440 },
+ { 0x6E71, 26442 },
+ { 0x064C, 26447 },
+ { 0x6E72, 26449 },
+ { 0x064B, 26453 },
+ { 0x6E70, 26455 },
+ { 0x0602, 26459 },
+ { 0x0657, 26462 },
+ { 0x064D, 26465 },
+ { 0x6E74, 26467 },
+ { 0x6D14, 26471 },
+ { 0x6CF8, 26478 },
+ { 0x6D13, 26485 },
+ { 0x6CF7, 26493 },
+ { 0x6D75, 26501 },
+ { 0x6DC4, 26510 },
+ { 0x6CBA, 26519 },
+ { 0x6C29, 26526 },
+ { 0x6DB6, 26533 },
+ { 0x6D78, 26542 },
+ { 0x6D76, 26552 },
+ { 0x6D77, 26561 },
+ { 0x6CBB, 26570 },
+ { 0x6C2A, 26577 },
+ { 0x6DC2, 26584 },
+ { 0x6C9D, 26593 },
+ { 0x6C06, 26600 },
+ { 0x6CE2, 26607 },
+ { 0x6CA0, 26614 },
+ { 0x6C6A, 26621 },
+ { 0x6C6F, 26628 },
+ { 0x6C0A, 26635 },
+ { 0x6C6E, 26642 },
+ { 0x6C09, 26650 },
+ { 0x6C9C, 26658 },
+ { 0x6C05, 26665 },
+ { 0x6D9E, 26672 },
+ { 0x6C9E, 26681 },
+ { 0x6C07, 26688 },
+ { 0x6C6C, 26695 },
+ { 0x6CE1, 26702 },
+ { 0x6C9F, 26709 },
+ { 0x6C08, 26716 },
+ { 0x6C6D, 26723 },
+ { 0x6C6B, 26730 },
+ { 0x6DAB, 26737 },
+ { 0x6D6E, 26746 },
+ { 0x6CB5, 26756 },
+ { 0x6C23, 26763 },
+ { 0x6D2C, 26770 },
+ { 0x6D10, 26777 },
+ { 0x6D24, 26784 },
+ { 0x6D08, 26791 },
+ { 0x6D23, 26798 },
+ { 0x6D07, 26806 },
+ { 0x6CB4, 26814 },
+ { 0x6C22, 26821 },
+ { 0x6D6F, 26828 },
+ { 0x6D70, 26837 },
+ { 0x6CB6, 26846 },
+ { 0x6C24, 26853 },
+ { 0x6CB7, 26860 },
+ { 0x6C25, 26867 },
+ { 0x6CBF, 26874 },
+ { 0x6C2E, 26881 },
+ { 0x6C7D, 26888 },
+ { 0x6C32, 26895 },
+ { 0x6C7C, 26902 },
+ { 0x6C31, 26910 },
+ { 0x6CBE, 26918 },
+ { 0x6C2D, 26925 },
+ { 0x6D7C, 26932 },
+ { 0x6D7D, 26941 },
+ { 0x6CC0, 26950 },
+ { 0x6C2F, 26957 },
+ { 0x6DC1, 26964 },
+ { 0x6CC1, 26973 },
+ { 0x6C30, 26980 },
+ { 0x6D1C, 26987 },
+ { 0x6D00, 26994 },
+ { 0x6D1B, 27001 },
+ { 0x6CFF, 27009 },
+ { 0x6DBF, 27017 },
+ { 0x6CA9, 27026 },
+ { 0x6C17, 27033 },
+ { 0x6D5A, 27040 },
+ { 0x6D5B, 27049 },
+ { 0x6CAA, 27059 },
+ { 0x6C18, 27066 },
+ { 0x6C54, 27073 },
+ { 0x6C53, 27080 },
+ { 0x6CD7, 27088 },
+ { 0x6C51, 27095 },
+ { 0x6D93, 27102 },
+ { 0x6D94, 27111 },
+ { 0x6CD8, 27120 },
+ { 0x6C52, 27127 },
+ { 0x6CD9, 27134 },
+ { 0x6CC5, 27142 },
+ { 0x6C39, 27149 },
+ { 0x6C81, 27156 },
+ { 0x6CEB, 27163 },
+ { 0x6CC7, 27170 },
+ { 0x6C3B, 27177 },
+ { 0x6C84, 27184 },
+ { 0x6C3E, 27191 },
+ { 0x6C80, 27198 },
+ { 0x6C83, 27205 },
+ { 0x6C3D, 27213 },
+ { 0x6C37, 27221 },
+ { 0x6CC4, 27228 },
+ { 0x6C38, 27235 },
+ { 0x6CC6, 27242 },
+ { 0x6C3A, 27249 },
+ { 0x6DB7, 27256 },
+ { 0x6DBB, 27265 },
+ { 0x6DC3, 27274 },
+ { 0x6C82, 27283 },
+ { 0x6CEC, 27290 },
+ { 0x6CC8, 27297 },
+ { 0x6C3C, 27304 },
+ { 0x6D81, 27311 },
+ { 0x6D82, 27320 },
+ { 0x6D80, 27330 },
+ { 0x6DB5, 27339 },
+ { 0x6CCA, 27348 },
+ { 0x6C40, 27355 },
+ { 0x6CCD, 27362 },
+ { 0x6C87, 27369 },
+ { 0x6C44, 27376 },
+ { 0x6EF8, 27383 },
+ { 0x6EF7, 27393 },
+ { 0x6EFA, 27403 },
+ { 0x6EF9, 27413 },
+ { 0x6EF6, 27423 },
+ { 0x6EF5, 27433 },
+ { 0x6EFC, 27443 },
+ { 0x6C86, 27450 },
+ { 0x6C43, 27458 },
+ { 0x6EFB, 27466 },
+ { 0x6DAC, 27473 },
+ { 0x6D84, 27482 },
+ { 0x6D83, 27491 },
+ { 0x6DBC, 27500 },
+ { 0x6DBA, 27509 },
+ { 0x6CC9, 27518 },
+ { 0x6C3F, 27525 },
+ { 0x6D85, 27532 },
+ { 0x6D86, 27541 },
+ { 0x6CCB, 27550 },
+ { 0x6C41, 27557 },
+ { 0x6D87, 27564 },
+ { 0x6D88, 27573 },
+ { 0x6DAD, 27582 },
+ { 0x6C85, 27591 },
+ { 0x6CED, 27598 },
+ { 0x6CCC, 27605 },
+ { 0x6C42, 27612 },
+ { 0x6CC2, 27619 },
+ { 0x6C33, 27626 },
+ { 0x6C7F, 27633 },
+ { 0x6C36, 27640 },
+ { 0x6C7E, 27647 },
+ { 0x6C35, 27655 },
+ { 0x6D7E, 27663 },
+ { 0x6DB4, 27672 },
+ { 0x6DB2, 27681 },
+ { 0x6D7F, 27690 },
+ { 0x6CC3, 27699 },
+ { 0x6C34, 27706 },
+ { 0x6C5C, 27713 },
+ { 0x6D64, 27721 },
+ { 0x6D65, 27730 },
+ { 0x6DA9, 27739 },
+ { 0x6CB1, 27748 },
+ { 0x6C20, 27755 },
+ { 0x6D2B, 27762 },
+ { 0x6D0F, 27769 },
+ { 0x6D22, 27776 },
+ { 0x6D06, 27783 },
+ { 0x6D21, 27790 },
+ { 0x6D05, 27798 },
+ { 0x6CB2, 27806 },
+ { 0x6D66, 27813 },
+ { 0x6DC5, 27822 },
+ { 0x6CB3, 27831 },
+ { 0x6C21, 27838 },
+ { 0x6CB8, 27845 },
+ { 0x6C26, 27852 },
+ { 0x6D12, 27859 },
+ { 0x6CF6, 27866 },
+ { 0x6D11, 27873 },
+ { 0x6CF5, 27881 },
+ { 0x6D71, 27889 },
+ { 0x6D72, 27898 },
+ { 0x6D74, 27907 },
+ { 0x6D73, 27916 },
+ { 0x6D3A, 27925 },
+ { 0x6D33, 27932 },
+ { 0x6C27, 27939 },
+ { 0x6D51, 27946 },
+ { 0x6D52, 27955 },
+ { 0x6D53, 27964 },
+ { 0x6CA2, 27973 },
+ { 0x6C0C, 27980 },
+ { 0x6CE4, 27987 },
+ { 0x6CA5, 27994 },
+ { 0x6C70, 28001 },
+ { 0x6C75, 28008 },
+ { 0x6C10, 28015 },
+ { 0x6C74, 28022 },
+ { 0x6C0F, 28030 },
+ { 0x6D9F, 28038 },
+ { 0x6DA0, 28047 },
+ { 0x6D50, 28057 },
+ { 0x6CA1, 28066 },
+ { 0x6C0B, 28073 },
+ { 0x6DA1, 28080 },
+ { 0x6DA2, 28089 },
+ { 0x6D54, 28099 },
+ { 0x6CA3, 28108 },
+ { 0x6C0D, 28115 },
+ { 0x6D56, 28122 },
+ { 0x6DA3, 28131 },
+ { 0x6DA4, 28140 },
+ { 0x6D55, 28150 },
+ { 0x6D57, 28159 },
+ { 0x6C72, 28168 },
+ { 0x6CE3, 28175 },
+ { 0x6CA4, 28182 },
+ { 0x6C0E, 28189 },
+ { 0x6C73, 28196 },
+ { 0x6C71, 28203 },
+ { 0x6DAE, 28210 },
+ { 0x6CDB, 28219 },
+ { 0x6C56, 28226 },
+ { 0x6CF1, 28233 },
+ { 0x6CDE, 28240 },
+ { 0x6C91, 28247 },
+ { 0x6C96, 28254 },
+ { 0x6C5A, 28261 },
+ { 0x6C95, 28268 },
+ { 0x6C59, 28276 },
+ { 0x6DAF, 28284 },
+ { 0x6CDA, 28293 },
+ { 0x6C55, 28300 },
+ { 0x6CDC, 28307 },
+ { 0x6C57, 28314 },
+ { 0x6DB0, 28321 },
+ { 0x6D9C, 28330 },
+ { 0x6D9D, 28339 },
+ { 0x6C93, 28348 },
+ { 0x6CF0, 28355 },
+ { 0x6CDD, 28362 },
+ { 0x6C58, 28369 },
+ { 0x6C94, 28376 },
+ { 0x6C92, 28383 },
+ { 0x6BF7, 28390 },
+ { 0x6BF8, 28400 },
+ { 0x6BF6, 28410 },
+ { 0x6BF1, 28420 },
+ { 0x6BF0, 28430 },
+ { 0x6BED, 28440 },
+ { 0x6BEC, 28450 },
+ { 0x6BF3, 28460 },
+ { 0x6BF2, 28470 },
+ { 0x6BF5, 28480 },
+ { 0x6BF4, 28490 },
+ { 0x6C98, 28500 },
+ { 0x6C01, 28510 },
+ { 0x6CE0, 28520 },
+ { 0x6C9B, 28530 },
+ { 0x6C64, 28540 },
+ { 0x6BEF, 28550 },
+ { 0x6BEE, 28560 },
+ { 0x6C69, 28570 },
+ { 0x6C04, 28580 },
+ { 0x6BEB, 28590 },
+ { 0x6C68, 28600 },
+ { 0x6C03, 28611 },
+ { 0x6BEA, 28622 },
+ { 0x6C97, 28632 },
+ { 0x6C00, 28642 },
+ { 0x6C99, 28652 },
+ { 0x6C66, 28662 },
+ { 0x6CDF, 28672 },
+ { 0x6C9A, 28682 },
+ { 0x6C02, 28692 },
+ { 0x6C67, 28702 },
+ { 0x6C65, 28712 },
+ { 0x6D3B, 28722 },
+ { 0x6CB9, 28729 },
+ { 0x6C28, 28736 },
+ { 0x6D3C, 28743 },
+ { 0x6D3D, 28750 },
+ { 0x6C90, 28757 },
+ { 0x6C5D, 28766 },
+ { 0x6DBE, 28775 },
+ { 0x6DA6, 28784 },
+ { 0x6CA7, 28794 },
+ { 0x6C15, 28801 },
+ { 0x6D1E, 28808 },
+ { 0x6D02, 28815 },
+ { 0x6D1D, 28822 },
+ { 0x6D01, 28830 },
+ { 0x6D58, 28838 },
+ { 0x6D59, 28847 },
+ { 0x6DA5, 28856 },
+ { 0x6DA7, 28865 },
+ { 0x6CA8, 28875 },
+ { 0x6C16, 28882 },
+ { 0x6C1A, 28889 },
+ { 0x6D20, 28896 },
+ { 0x6D04, 28903 },
+ { 0x6D1F, 28910 },
+ { 0x6D03, 28918 },
+ { 0x6CAB, 28926 },
+ { 0x6C19, 28933 },
+ { 0x6CAC, 28940 },
+ { 0x6C1B, 28947 },
+ { 0x6D8B, 28954 },
+ { 0x6D89, 28963 },
+ { 0x6D8A, 28972 },
+ { 0x6CCF, 28981 },
+ { 0x6C46, 28988 },
+ { 0x6C4A, 28995 },
+ { 0x6C88, 29002 },
+ { 0x6C49, 29009 },
+ { 0x6D8C, 29017 },
+ { 0x6DC0, 29026 },
+ { 0x6D92, 29035 },
+ { 0x6D8D, 29044 },
+ { 0x6CCE, 29053 },
+ { 0x6C45, 29060 },
+ { 0x6DB9, 29067 },
+ { 0x6D8E, 29076 },
+ { 0x6D8F, 29085 },
+ { 0x6CD0, 29094 },
+ { 0x6C47, 29101 },
+ { 0x6DB1, 29108 },
+ { 0x6C89, 29117 },
+ { 0x6CD1, 29124 },
+ { 0x6C48, 29131 },
+ { 0x6DB3, 29138 },
+ { 0x6D96, 29147 },
+ { 0x6D95, 29157 },
+ { 0x6CD3, 29166 },
+ { 0x6C4C, 29173 },
+ { 0x6CEF, 29180 },
+ { 0x6CD6, 29187 },
+ { 0x6C8A, 29194 },
+ { 0x6C8F, 29201 },
+ { 0x6C50, 29208 },
+ { 0x6C8E, 29215 },
+ { 0x6C4F, 29223 },
+ { 0x6DBD, 29231 },
+ { 0x6DB8, 29240 },
+ { 0x6DC7, 29249 },
+ { 0x6D99, 29258 },
+ { 0x6D97, 29268 },
+ { 0x6D98, 29277 },
+ { 0x6CD2, 29286 },
+ { 0x6C4B, 29293 },
+ { 0x6CD4, 29300 },
+ { 0x6C4D, 29307 },
+ { 0x6D9A, 29314 },
+ { 0x6D9B, 29323 },
+ { 0x6C8C, 29333 },
+ { 0x6CEE, 29340 },
+ { 0x6CD5, 29347 },
+ { 0x6C4E, 29354 },
+ { 0x6C8D, 29361 },
+ { 0x6C8B, 29368 },
+ { 0x6DF1, 29375 },
+ { 0x6D5C, 29385 },
+ { 0x6D35, 29394 },
+ { 0x6CAE, 29401 },
+ { 0x6C1D, 29408 },
+ { 0x6CE8, 29415 },
+ { 0x6D31, 29422 },
+ { 0x6D2A, 29429 },
+ { 0x6D0E, 29436 },
+ { 0x6D18, 29443 },
+ { 0x6CFC, 29450 },
+ { 0x6D17, 29457 },
+ { 0x6CFB, 29465 },
+ { 0x6D5D, 29473 },
+ { 0x6D5E, 29482 },
+ { 0x6D34, 29492 },
+ { 0x6CAD, 29499 },
+ { 0x6C1C, 29506 },
+ { 0x6DC6, 29513 },
+ { 0x6DA8, 29522 },
+ { 0x6D36, 29532 },
+ { 0x6CAF, 29539 },
+ { 0x6C1E, 29546 },
+ { 0x6D5F, 29553 },
+ { 0x6D60, 29562 },
+ { 0x6D61, 29571 },
+ { 0x6D62, 29580 },
+ { 0x6D63, 29589 },
+ { 0x6CE7, 29598 },
+ { 0x6CB0, 29605 },
+ { 0x6C1F, 29612 },
+ { 0x6C5B, 29619 },
+ { 0x6CE6, 29627 },
+ { 0x6C76, 29634 },
+ { 0x6C7B, 29641 },
+ { 0x6C14, 29648 },
+ { 0x6C7A, 29655 },
+ { 0x6C13, 29663 },
+ { 0x6C11, 29671 },
+ { 0x6C78, 29678 },
+ { 0x6CE5, 29685 },
+ { 0x6CA6, 29692 },
+ { 0x6C12, 29699 },
+ { 0x6C79, 29706 },
+ { 0x6C77, 29713 },
+ { 0x6DF3, 29720 },
+ { 0x6DF2, 29725 },
+ { 0x6D16, 29730 },
+ { 0x6CFA, 29737 },
+ { 0x6D15, 29744 },
+ { 0x6CF9, 29752 },
+ { 0x6CBC, 29760 },
+ { 0x6C2B, 29767 },
+ { 0x6D7A, 29774 },
+ { 0x6D7B, 29783 },
+ { 0x6D79, 29793 },
+ { 0x6CBD, 29802 },
+ { 0x6C2C, 29809 },
+ { 0x6DF5, 29816 },
+ { 0x6DF0, 29821 },
+ { 0x6DF9, 29831 },
+ { 0x6DAA, 29836 },
+ { 0x6D67, 29845 },
+ { 0x6D68, 29854 },
+ { 0x6D26, 29863 },
+ { 0x6D38, 29870 },
+ { 0x6D2E, 29877 },
+ { 0x6D0A, 29884 },
+ { 0x6CEA, 29891 },
+ { 0x6D32, 29898 },
+ { 0x6D29, 29905 },
+ { 0x6D0D, 29912 },
+ { 0x6D1A, 29919 },
+ { 0x6CFE, 29926 },
+ { 0x6D19, 29933 },
+ { 0x6CFD, 29941 },
+ { 0x6D69, 29949 },
+ { 0x6D25, 29958 },
+ { 0x6D37, 29965 },
+ { 0x6D2D, 29972 },
+ { 0x6D09, 29979 },
+ { 0x6D27, 29986 },
+ { 0x6D39, 29993 },
+ { 0x6D2F, 30000 },
+ { 0x6D0B, 30007 },
+ { 0x6D6A, 30014 },
+ { 0x6D6B, 30023 },
+ { 0x6D6C, 30032 },
+ { 0x6D6D, 30041 },
+ { 0x6D28, 30050 },
+ { 0x6CE9, 30057 },
+ { 0x6D30, 30064 },
+ { 0x6D0C, 30071 },
+ { 0x6DF7, 30078 },
+ { 0x6DF6, 30083 },
+ { 0x6CF3, 30088 },
+ { 0x6C61, 30095 },
+ { 0x6CF2, 30102 },
+ { 0x6C60, 30109 },
+ { 0x6CF4, 30116 },
+ { 0x6C62, 30123 },
+ { 0x6C5E, 30130 },
+ { 0x6C5F, 30137 },
+ { 0x6C63, 30144 },
+ { 0x6BFA, 30152 },
+ { 0x6BFB, 30165 },
+ { 0x6BF9, 30178 },
+ { 0x6DF4, 30191 },
+ { 0x6DF8, 30196 },
+ { 0x6DFD, 30201 },
+ { 0x6DFA, 30206 },
+ { 0x6DFB, 30211 },
+ { 0x061F, 30214 },
+ { 0x065D, 30217 },
+ { 0x0659, 30220 },
+ { 0x061B, 30222 },
+ { 0x0656, 30224 },
+ { 0x066C, 30227 },
+ { 0x2717, 30230 },
+ { 0x2610, 30232 },
+ { 0x2612, 30234 },
+ { 0x2611, 30238 },
+ { 0x266B, 30242 },
+ { 0x266C, 30245 },
+ { 0x293B, 30248 },
+ { 0x2321, 30252 },
+ { 0x230D, 30255 },
+ { 0x2E24, 30258 },
+ { 0x231E, 30262 },
+ { 0x23DF, 30265 },
+ { 0x230C, 30268 },
+ { 0x2E25, 30271 },
+ { 0x231F, 30275 },
+ { 0x23B5, 30278 },
+ { 0x23B6, 30281 },
+ { 0x23E1, 30288 },
+ { 0x23DD, 30292 },
+ { 0x22C8, 30294 },
+ { 0x29D1, 30295 },
+ { 0x29D2, 30300 },
+ { 0x00A6, 30305 },
+ { 0x238B, 30307 },
+ { 0x2022, 30312 },
+ { 0x2219, 30313 },
+ { 0xC07F, 30315 },
+ { 0x264B, 30317 },
+ { 0x72A0, 30318 },
+ { 0x72A9, 30321 },
+ { 0x72A2, 30324 },
+ { 0x72BA, 30327 },
+ { 0x72C0, 30330 },
+ { 0x72B9, 30333 },
+ { 0x72BC, 30336 },
+ { 0x72A3, 30339 },
+ { 0x72AA, 30342 },
+ { 0x72B5, 30345 },
+ { 0x72AB, 30348 },
+ { 0x72B7, 30351 },
+ { 0x72A8, 30354 },
+ { 0x72A5, 30357 },
+ { 0x72B0, 30360 },
+ { 0x72AD, 30363 },
+ { 0x72B2, 30366 },
+ { 0x72B4, 30369 },
+ { 0x72A7, 30372 },
+ { 0x72AC, 30375 },
+ { 0x72CF, 30378 },
+ { 0x72C1, 30381 },
+ { 0x72C5, 30384 },
+ { 0x72BD, 30387 },
+ { 0x72A6, 30390 },
+ { 0x72CA, 30393 },
+ { 0x72BE, 30396 },
+ { 0x72C4, 30399 },
+ { 0x72B3, 30402 },
+ { 0x72A1, 30405 },
+ { 0x72C9, 30408 },
+ { 0x72AE, 30411 },
+ { 0x72B8, 30414 },
+ { 0x72C2, 30417 },
+ { 0x72C7, 30420 },
+ { 0x72BF, 30423 },
+ { 0x72CE, 30426 },
+ { 0x72CB, 30429 },
+ { 0x72CC, 30432 },
+ { 0x72CD, 30435 },
+ { 0x72AF, 30438 },
+ { 0x72C3, 30441 },
+ { 0x72B6, 30444 },
+ { 0x72A4, 30447 },
+ { 0x72B1, 30450 },
+ { 0x72C6, 30453 },
+ { 0x72C8, 30456 },
+ { 0x72D0, 30459 },
+ { 0x72BB, 30462 },
+ { 0x2104, 30465 },
+ { 0x26B7, 30468 },
+ { 0x25D5, 30469 },
+ { 0x29C3, 30477 },
+ { 0x25D0, 30485 },
+ { 0x25D2, 30490 },
+ { 0x25D1, 30495 },
+ { 0x29C2, 30500 },
+ { 0x25D3, 30507 },
+ { 0x25D4, 30512 },
+ { 0x25CD, 30518 },
+ { 0x29B5, 30522 },
+ { 0x29BB, 30526 },
+ { 0x29BA, 30530 },
+ { 0x2A4C, 30542 },
+ { 0x2A50, 30546 },
+ { 0x2ACF, 30553 },
+ { 0x2AD1, 30555 },
+ { 0x2AD0, 30560 },
+ { 0x2AD2, 30562 },
+ { 0x2A4D, 30567 },
+ { 0x26B0, 30571 },
+ { 0x2CF9, 30572 },
+ { 0x2CFC, 30577 },
+ { 0x2CFA, 30582 },
+ { 0x2CFB, 30588 },
+ { 0x2CFE, 30594 },
+ { 0x2C9F, 30597 },
+ { 0x2CAB, 30601 },
+ { 0x2C99, 30605 },
+ { 0x2C9B, 30609 },
+ { 0x2CA1, 30613 },
+ { 0x2CA3, 30617 },
+ { 0x2CA9, 30621 },
+ { 0x03EF, 30625 },
+ { 0x2C89, 30629 },
+ { 0x03E5, 30633 },
+ { 0x2CAD, 30637 },
+ { 0x2C9D, 30641 },
+ { 0x2CCF, 30645 },
+ { 0x2CB5, 30651 },
+ { 0x2CD9, 30657 },
+ { 0x2CC7, 30663 },
+ { 0x2CD5, 30669 },
+ { 0x2CD3, 30675 },
+ { 0x2CBF, 30681 },
+ { 0x2CCD, 30687 },
+ { 0x2CC5, 30693 },
+ { 0x2CDB, 30699 },
+ { 0x2CD7, 30705 },
+ { 0x2CDF, 30711 },
+ { 0x2CE1, 30717 },
+ { 0x2CE3, 30723 },
+ { 0x2CDD, 30729 },
+ { 0x2CB1, 30735 },
+ { 0x2CAF, 30739 },
+ { 0x2C8B, 30743 },
+ { 0x2CA7, 30747 },
+ { 0x2C81, 30751 },
+ { 0x2C8F, 30755 },
+ { 0x03E9, 30759 },
+ { 0x2C95, 30763 },
+ { 0x03E7, 30767 },
+ { 0x03E3, 30771 },
+ { 0x2CA5, 30775 },
+ { 0x2C83, 30779 },
+ { 0x2C8D, 30783 },
+ { 0x2C87, 30787 },
+ { 0x2C85, 30791 },
+ { 0x2C93, 30795 },
+ { 0x2C97, 30799 },
+ { 0x2CC1, 30803 },
+ { 0x03ED, 30807 },
+ { 0x03EB, 30811 },
+ { 0x2C91, 30815 },
+ { 0x2CC3, 30819 },
+ { 0x2CC9, 30824 },
+ { 0x2CD1, 30829 },
+ { 0x2CBB, 30834 },
+ { 0x2CB3, 30839 },
+ { 0x2CCB, 30844 },
+ { 0x2CB9, 30849 },
+ { 0x2CBD, 30854 },
+ { 0x2CB7, 30859 },
+ { 0x2CE5, 30864 },
+ { 0x2CE6, 30868 },
+ { 0x2CE4, 30872 },
+ { 0x2CE9, 30875 },
+ { 0x2CE8, 30879 },
+ { 0x2CEA, 30883 },
+ { 0x2CE7, 30887 },
+ { 0x2C9E, 30890 },
+ { 0x2CAA, 30894 },
+ { 0x2C98, 30898 },
+ { 0x2C9A, 30902 },
+ { 0x2CA0, 30906 },
+ { 0x2CA2, 30910 },
+ { 0x2CA8, 30914 },
+ { 0x03EE, 30918 },
+ { 0x2C88, 30922 },
+ { 0x03E4, 30926 },
+ { 0x2CAC, 30930 },
+ { 0x2C9C, 30934 },
+ { 0x2CCE, 30938 },
+ { 0x2CB4, 30944 },
+ { 0x2CD8, 30950 },
+ { 0x2CC6, 30956 },
+ { 0x2CD4, 30962 },
+ { 0x2CD2, 30968 },
+ { 0x2CBE, 30974 },
+ { 0x2CCC, 30980 },
+ { 0x2CC4, 30986 },
+ { 0x2CDA, 30992 },
+ { 0x2CD6, 30998 },
+ { 0x2CDE, 31004 },
+ { 0x2CE0, 31010 },
+ { 0x2CE2, 31016 },
+ { 0x2CDC, 31022 },
+ { 0x2CB0, 31028 },
+ { 0x2CAE, 31032 },
+ { 0x2C8A, 31036 },
+ { 0x2CA6, 31040 },
+ { 0x2C80, 31044 },
+ { 0x2C8E, 31048 },
+ { 0x03E8, 31052 },
+ { 0x2C94, 31056 },
+ { 0x03E6, 31060 },
+ { 0x03E2, 31064 },
+ { 0x2CA4, 31068 },
+ { 0x2C82, 31072 },
+ { 0x2C8C, 31076 },
+ { 0x2C86, 31080 },
+ { 0x2C84, 31084 },
+ { 0x2C92, 31088 },
+ { 0x2C96, 31092 },
+ { 0x2CC0, 31096 },
+ { 0x03EC, 31100 },
+ { 0x03EA, 31104 },
+ { 0x2C90, 31108 },
+ { 0x2CC2, 31112 },
+ { 0x2CC8, 31117 },
+ { 0x2CD0, 31122 },
+ { 0x2CBA, 31127 },
+ { 0x2CB2, 31132 },
+ { 0x2CCA, 31137 },
+ { 0x2CB8, 31142 },
+ { 0x2CBC, 31147 },
+ { 0x2CB6, 31152 },
+ { 0x2CFD, 31157 },
+ { 0x2CFF, 31161 },
+ { 0x2761, 31164 },
+ { 0x2020, 31169 },
+ { 0x6E4D, 31170 },
+ { 0x6E49, 31173 },
+ { 0x279F, 31175 },
+ { 0x00B0, 31179 },
+ { 0x2103, 31181 },
+ { 0x2109, 31183 },
+ { 0x9305, 31185 },
+ { 0x9302, 31188 },
+ { 0x268D, 31192 },
+ { 0x268E, 31196 },
+ { 0x9304, 31200 },
+ { 0x9303, 31204 },
+ { 0x268F, 31208 },
+ { 0x268C, 31212 },
+ { 0x9301, 31216 },
+ { 0x2393, 31220 },
+ { 0x0024, 31225 },
+ { 0xA062, 31227 },
+ { 0xA030, 31231 },
+ { 0xA063, 31235 },
+ { 0xA064, 31238 },
+ { 0xA065, 31241 },
+ { 0xA066, 31244 },
+ { 0xA067, 31247 },
+ { 0xA068, 31250 },
+ { 0xA069, 31253 },
+ { 0xA06A, 31256 },
+ { 0xA06B, 31259 },
+ { 0xA06C, 31262 },
+ { 0xA06D, 31265 },
+ { 0xA06E, 31268 },
+ { 0xA06F, 31271 },
+ { 0xA070, 31274 },
+ { 0xA071, 31277 },
+ { 0xA072, 31280 },
+ { 0xA073, 31283 },
+ { 0xA074, 31286 },
+ { 0xA075, 31289 },
+ { 0xA076, 31292 },
+ { 0xA077, 31295 },
+ { 0xA078, 31298 },
+ { 0xA079, 31301 },
+ { 0xA07A, 31304 },
+ { 0xA07B, 31307 },
+ { 0xA07C, 31310 },
+ { 0xA07D, 31313 },
+ { 0xA07E, 31316 },
+ { 0xA07F, 31319 },
+ { 0xA080, 31322 },
+ { 0xA081, 31325 },
+ { 0xA082, 31328 },
+ { 0xA083, 31331 },
+ { 0xA084, 31334 },
+ { 0xA085, 31337 },
+ { 0xA086, 31340 },
+ { 0xA087, 31343 },
+ { 0xA088, 31346 },
+ { 0xA089, 31349 },
+ { 0xA08A, 31352 },
+ { 0xA08B, 31355 },
+ { 0xA08C, 31358 },
+ { 0xA08D, 31361 },
+ { 0xA08E, 31364 },
+ { 0xA08F, 31367 },
+ { 0xA090, 31370 },
+ { 0xA091, 31373 },
+ { 0xA092, 31376 },
+ { 0xA093, 31379 },
+ { 0xA031, 31382 },
+ { 0xA032, 31385 },
+ { 0xA033, 31388 },
+ { 0xA034, 31391 },
+ { 0xA035, 31394 },
+ { 0xA036, 31397 },
+ { 0xA037, 31400 },
+ { 0xA038, 31403 },
+ { 0xA039, 31406 },
+ { 0xA03A, 31409 },
+ { 0xA03B, 31412 },
+ { 0xA03C, 31415 },
+ { 0xA03D, 31418 },
+ { 0xA03E, 31421 },
+ { 0xA03F, 31424 },
+ { 0xA040, 31427 },
+ { 0xA041, 31430 },
+ { 0xA042, 31433 },
+ { 0xA043, 31436 },
+ { 0xA044, 31439 },
+ { 0xA045, 31442 },
+ { 0xA046, 31445 },
+ { 0xA047, 31448 },
+ { 0xA048, 31451 },
+ { 0xA049, 31454 },
+ { 0xA04A, 31457 },
+ { 0xA04B, 31460 },
+ { 0xA04C, 31463 },
+ { 0xA04D, 31466 },
+ { 0xA04E, 31469 },
+ { 0xA04F, 31472 },
+ { 0xA050, 31475 },
+ { 0xA051, 31478 },
+ { 0xA052, 31481 },
+ { 0xA053, 31484 },
+ { 0xA054, 31487 },
+ { 0xA055, 31490 },
+ { 0xA056, 31493 },
+ { 0xA057, 31496 },
+ { 0xA058, 31499 },
+ { 0xA059, 31502 },
+ { 0xA05A, 31505 },
+ { 0xA05B, 31508 },
+ { 0xA05C, 31511 },
+ { 0xA05D, 31514 },
+ { 0xA05E, 31517 },
+ { 0xA05F, 31520 },
+ { 0xA060, 31523 },
+ { 0xA061, 31526 },
+ { 0x205C, 31529 },
+ { 0x2999, 31531 },
+ { 0x25CC, 31533 },
+ { 0x2E13, 31535 },
+ { 0x2B1A, 31537 },
+ { 0x2E08, 31539 },
+ { 0x2E16, 31542 },
+ { 0x2AEB, 31545 },
+ { 0x2017, 31548 },
+ { 0x2AEA, 31551 },
+ { 0x2995, 31554 },
+ { 0x29FA, 31559 },
+ { 0x6E4C, 31561 },
+ { 0x02DD, 31564 },
+ { 0x2A74, 31567 },
+ { 0x201E, 31570 },
+ { 0x2033, 31574 },
+ { 0x301E, 31576 },
+ { 0x2996, 31580 },
+ { 0x22D3, 31585 },
+ { 0x2021, 31587 },
+ { 0x2AA1, 31589 },
+ { 0x2AA3, 31592 },
+ { 0x2AA2, 31597 },
+ { 0x2A4F, 31600 },
+ { 0x2A4E, 31603 },
+ { 0x2AEC, 31606 },
+ { 0x22D0, 31610 },
+ { 0x24F5, 31612 },
+ { 0x24FA, 31616 },
+ { 0x24F6, 31620 },
+ { 0x24F9, 31624 },
+ { 0x24F8, 31628 },
+ { 0x24FD, 31632 },
+ { 0x24FC, 31636 },
+ { 0x24FB, 31640 },
+ { 0x24F7, 31644 },
+ { 0x24FE, 31648 },
+ { 0x2A54, 31652 },
+ { 0x2A53, 31655 },
+ { 0x2E17, 31658 },
+ { 0x2AFD, 31661 },
+ { 0x222C, 31664 },
+ { 0x2ABB, 31666 },
+ { 0x2047, 31668 },
+ { 0x2ABC, 31671 },
+ { 0x22D1, 31673 },
+ { 0x2AE3, 31675 },
+ { 0x2AE5, 31680 },
+ { 0x22AB, 31686 },
+ { 0x2016, 31692 },
+ { 0x203C, 31695 },
+ { 0x22D2, 31698 },
+ { 0x201F, 31700 },
+ { 0x266A, 31704 },
+ { 0x003D, 31706 },
+ { 0x29E3, 31708 },
+ { 0x29E4, 31713 },
+ { 0x2A66, 31721 },
+ { 0x2A77, 31726 },
+ { 0x2AAE, 31736 },
+ { 0x2A71, 31741 },
+ { 0x2A73, 31746 },
+ { 0x2B40, 31751 },
+ { 0x2971, 31756 },
+ { 0x2A6E, 31761 },
+ { 0x2255, 31764 },
+ { 0x2239, 31766 },
+ { 0x2640, 31767 },
+ { 0x2012, 31769 },
+ { 0x2007, 31771 },
+ { 0x2A0D, 31773 },
+ { 0x2766, 31776 },
+ { 0x2698, 31778 },
+ { 0x2055, 31779 },
+ { 0x22A9, 31782 },
+ { 0x2E10, 31783 },
+ { 0x221C, 31785 },
+ { 0x20A3, 31787 },
+ { 0x264A, 31790 },
+ { 0x20B0, 31791 },
+ { 0x29E6, 31794 },
+ { 0x7339, 31796 },
+ { 0x733E, 31799 },
+ { 0x7330, 31802 },
+ { 0x7333, 31805 },
+ { 0x7332, 31808 },
+ { 0x7337, 31811 },
+ { 0x7336, 31814 },
+ { 0x734A, 31817 },
+ { 0x733F, 31821 },
+ { 0x7346, 31824 },
+ { 0x7348, 31827 },
+ { 0x7347, 31830 },
+ { 0x733A, 31833 },
+ { 0x733B, 31836 },
+ { 0x733C, 31839 },
+ { 0x7349, 31842 },
+ { 0x7342, 31845 },
+ { 0x7343, 31848 },
+ { 0x7344, 31851 },
+ { 0x7345, 31854 },
+ { 0x7334, 31857 },
+ { 0x733D, 31860 },
+ { 0x7341, 31863 },
+ { 0x7338, 31866 },
+ { 0x7331, 31869 },
+ { 0x7340, 31872 },
+ { 0x7335, 31875 },
+ { 0x2692, 31878 },
+ { 0x262D, 31881 },
+ { 0x302F, 31884 },
+ { 0x3164, 31889 },
+ { 0x314F, 31891 },
+ { 0x3154, 31894 },
+ { 0x3163, 31897 },
+ { 0x3157, 31900 },
+ { 0x315C, 31903 },
+ { 0x3150, 31906 },
+ { 0x3153, 31909 },
+ { 0x3161, 31912 },
+ { 0x315A, 31915 },
+ { 0x3158, 31918 },
+ { 0x315E, 31921 },
+ { 0x315F, 31924 },
+ { 0x3151, 31927 },
+ { 0x3156, 31930 },
+ { 0x3162, 31933 },
+ { 0x315B, 31936 },
+ { 0x3160, 31939 },
+ { 0x3159, 31942 },
+ { 0x315D, 31945 },
+ { 0x3152, 31948 },
+ { 0x3155, 31951 },
+ { 0x3145, 31954 },
+ { 0x3189, 31957 },
+ { 0x318C, 31960 },
+ { 0x318D, 31963 },
+ { 0x3148, 31966 },
+ { 0x314E, 31969 },
+ { 0x3147, 31972 },
+ { 0x3141, 31975 },
+ { 0x3134, 31978 },
+ { 0x3142, 31981 },
+ { 0x3139, 31984 },
+ { 0x3187, 31987 },
+ { 0x318B, 31990 },
+ { 0x318E, 31993 },
+ { 0x3131, 31996 },
+ { 0x3137, 31999 },
+ { 0x3188, 32002 },
+ { 0x318A, 32005 },
+ { 0x314A, 32008 },
+ { 0x314B, 32011 },
+ { 0x317F, 32014 },
+ { 0x314D, 32017 },
+ { 0x314C, 32020 },
+ { 0x3181, 32023 },
+ { 0x3146, 32026 },
+ { 0x316F, 32029 },
+ { 0x3167, 32032 },
+ { 0x3144, 32035 },
+ { 0x313D, 32038 },
+ { 0x317E, 32041 },
+ { 0x317B, 32044 },
+ { 0x317D, 32047 },
+ { 0x3149, 32050 },
+ { 0x3185, 32053 },
+ { 0x3180, 32056 },
+ { 0x3165, 32059 },
+ { 0x3143, 32062 },
+ { 0x3133, 32065 },
+ { 0x316E, 32068 },
+ { 0x3135, 32071 },
+ { 0x3136, 32074 },
+ { 0x3176, 32077 },
+ { 0x3140, 32080 },
+ { 0x313B, 32083 },
+ { 0x313C, 32086 },
+ { 0x317A, 32089 },
+ { 0x317C, 32092 },
+ { 0x3132, 32095 },
+ { 0x3138, 32098 },
+ { 0x3186, 32101 },
+ { 0x3166, 32104 },
+ { 0x3172, 32107 },
+ { 0x3173, 32110 },
+ { 0x313A, 32113 },
+ { 0x316A, 32116 },
+ { 0x3171, 32119 },
+ { 0x3178, 32122 },
+ { 0x3170, 32125 },
+ { 0x3168, 32128 },
+ { 0x3177, 32131 },
+ { 0x316C, 32134 },
+ { 0x313F, 32137 },
+ { 0x313E, 32140 },
+ { 0x3182, 32143 },
+ { 0x3184, 32146 },
+ { 0x316B, 32149 },
+ { 0x3183, 32152 },
+ { 0x3174, 32155 },
+ { 0x3175, 32158 },
+ { 0x3169, 32161 },
+ { 0x316D, 32164 },
+ { 0x3179, 32167 },
+ { 0x302E, 32170 },
+ { 0x1109, 32175 },
+ { 0x110C, 32178 },
+ { 0x1112, 32181 },
+ { 0x110B, 32184 },
+ { 0x1106, 32187 },
+ { 0x1102, 32190 },
+ { 0x1107, 32193 },
+ { 0x1105, 32196 },
+ { 0x115F, 32199 },
+ { 0x1100, 32202 },
+ { 0x1103, 32205 },
+ { 0x110E, 32208 },
+ { 0x110F, 32211 },
+ { 0x1140, 32214 },
+ { 0x1111, 32217 },
+ { 0x1110, 32220 },
+ { 0x114C, 32223 },
+ { 0x110A, 32226 },
+ { 0x1145, 32229 },
+ { 0x1121, 32232 },
+ { 0x1136, 32235 },
+ { 0x113B, 32238 },
+ { 0x1135, 32241 },
+ { 0x1131, 32244 },
+ { 0x112E, 32247 },
+ { 0x1132, 32250 },
+ { 0x1130, 32253 },
+ { 0x110D, 32256 },
+ { 0x1158, 32259 },
+ { 0x1147, 32262 },
+ { 0x1114, 32265 },
+ { 0x1108, 32268 },
+ { 0x1119, 32271 },
+ { 0x114D, 32274 },
+ { 0x1148, 32277 },
+ { 0x1143, 32280 },
+ { 0x1144, 32283 },
+ { 0x111C, 32286 },
+ { 0x1116, 32289 },
+ { 0x1127, 32292 },
+ { 0x111F, 32295 },
+ { 0x111A, 32298 },
+ { 0x1118, 32301 },
+ { 0x112D, 32304 },
+ { 0x112F, 32307 },
+ { 0x1101, 32310 },
+ { 0x1104, 32313 },
+ { 0x1159, 32316 },
+ { 0x113C, 32319 },
+ { 0x1141, 32322 },
+ { 0x1142, 32325 },
+ { 0x1113, 32328 },
+ { 0x1115, 32331 },
+ { 0x111E, 32334 },
+ { 0x1120, 32337 },
+ { 0x1137, 32340 },
+ { 0x1138, 32343 },
+ { 0x113A, 32346 },
+ { 0x1139, 32349 },
+ { 0x1153, 32352 },
+ { 0x114E, 32355 },
+ { 0x1149, 32358 },
+ { 0x1146, 32361 },
+ { 0x114B, 32364 },
+ { 0x114A, 32367 },
+ { 0x111D, 32370 },
+ { 0x112B, 32373 },
+ { 0x111B, 32376 },
+ { 0x1156, 32379 },
+ { 0x1128, 32382 },
+ { 0x112A, 32385 },
+ { 0x1129, 32388 },
+ { 0x1117, 32391 },
+ { 0x1134, 32394 },
+ { 0x113E, 32397 },
+ { 0x1152, 32400 },
+ { 0x1154, 32403 },
+ { 0x1157, 32406 },
+ { 0x1125, 32409 },
+ { 0x1150, 32412 },
+ { 0x1126, 32415 },
+ { 0x1124, 32418 },
+ { 0x113D, 32421 },
+ { 0x1122, 32424 },
+ { 0x1123, 32427 },
+ { 0x1133, 32430 },
+ { 0x1155, 32433 },
+ { 0x114F, 32436 },
+ { 0x112C, 32439 },
+ { 0x113F, 32442 },
+ { 0x1151, 32445 },
+ { 0x11BA, 32448 },
+ { 0x11BD, 32451 },
+ { 0x11C2, 32454 },
+ { 0x11BC, 32457 },
+ { 0x11B7, 32460 },
+ { 0x11AB, 32463 },
+ { 0x11B8, 32466 },
+ { 0x11AF, 32469 },
+ { 0x11A8, 32472 },
+ { 0x11AE, 32475 },
+ { 0x11BE, 32478 },
+ { 0x11BF, 32481 },
+ { 0x11EB, 32484 },
+ { 0x11C1, 32487 },
+ { 0x11C0, 32490 },
+ { 0x11F0, 32493 },
+ { 0x11BB, 32496 },
+ { 0x11DD, 32499 },
+ { 0x11C7, 32502 },
+ { 0x11B9, 32505 },
+ { 0x11B3, 32508 },
+ { 0x11EA, 32511 },
+ { 0x11E9, 32514 },
+ { 0x11EE, 32517 },
+ { 0x11D0, 32520 },
+ { 0x11F7, 32523 },
+ { 0x11F5, 32526 },
+ { 0x11F8, 32529 },
+ { 0x11F6, 32532 },
+ { 0x11AA, 32535 },
+ { 0x11E1, 32538 },
+ { 0x11DC, 32541 },
+ { 0x11DB, 32544 },
+ { 0x11AC, 32547 },
+ { 0x11AD, 32550 },
+ { 0x11E5, 32553 },
+ { 0x11E3, 32556 },
+ { 0x11B6, 32559 },
+ { 0x11B1, 32562 },
+ { 0x11CD, 32565 },
+ { 0x11B2, 32568 },
+ { 0x11E7, 32571 },
+ { 0x11E8, 32574 },
+ { 0x11A9, 32577 },
+ { 0x11F9, 32580 },
+ { 0x11EC, 32583 },
+ { 0x11C3, 32586 },
+ { 0x11DA, 32589 },
+ { 0x11C5, 32592 },
+ { 0x11C6, 32595 },
+ { 0x11B0, 32598 },
+ { 0x11CE, 32601 },
+ { 0x11CB, 32604 },
+ { 0x11EF, 32607 },
+ { 0x11E2, 32610 },
+ { 0x11E6, 32613 },
+ { 0x11E0, 32616 },
+ { 0x11DF, 32619 },
+ { 0x11C8, 32622 },
+ { 0x11C9, 32625 },
+ { 0x11F3, 32628 },
+ { 0x11E4, 32631 },
+ { 0x11D8, 32634 },
+ { 0x11D7, 32637 },
+ { 0x11B5, 32640 },
+ { 0x11B4, 32643 },
+ { 0x11CA, 32646 },
+ { 0x11F1, 32649 },
+ { 0x11F4, 32652 },
+ { 0x11DE, 32655 },
+ { 0x11D6, 32658 },
+ { 0x11D2, 32661 },
+ { 0x11D3, 32664 },
+ { 0x11F2, 32667 },
+ { 0x11ED, 32670 },
+ { 0x11CC, 32673 },
+ { 0x11D4, 32676 },
+ { 0x11D9, 32679 },
+ { 0x11C4, 32682 },
+ { 0x11D1, 32685 },
+ { 0x11CF, 32688 },
+ { 0x11D5, 32691 },
+ { 0x1161, 32694 },
+ { 0x1166, 32697 },
+ { 0x1175, 32700 },
+ { 0x1169, 32703 },
+ { 0x116E, 32706 },
+ { 0x1162, 32709 },
+ { 0x1165, 32712 },
+ { 0x1173, 32715 },
+ { 0x116C, 32718 },
+ { 0x116A, 32721 },
+ { 0x1170, 32724 },
+ { 0x1171, 32727 },
+ { 0x1163, 32730 },
+ { 0x1168, 32733 },
+ { 0x1174, 32736 },
+ { 0x116D, 32739 },
+ { 0x1172, 32742 },
+ { 0x1176, 32745 },
+ { 0x1177, 32748 },
+ { 0x1198, 32751 },
+ { 0x119A, 32754 },
+ { 0x119B, 32757 },
+ { 0x1180, 32760 },
+ { 0x1182, 32763 },
+ { 0x1183, 32766 },
+ { 0x1189, 32769 },
+ { 0x118D, 32772 },
+ { 0x116B, 32775 },
+ { 0x116F, 32778 },
+ { 0x1164, 32781 },
+ { 0x1167, 32784 },
+ { 0x117A, 32787 },
+ { 0x117B, 32790 },
+ { 0x1195, 32793 },
+ { 0x119C, 32796 },
+ { 0x1199, 32799 },
+ { 0x117F, 32802 },
+ { 0x1181, 32805 },
+ { 0x118A, 32808 },
+ { 0x118C, 32811 },
+ { 0x1178, 32814 },
+ { 0x1197, 32817 },
+ { 0x1188, 32820 },
+ { 0x1187, 32823 },
+ { 0x118E, 32826 },
+ { 0x1190, 32829 },
+ { 0x1194, 32832 },
+ { 0x1193, 32835 },
+ { 0x119E, 32838 },
+ { 0x117C, 32841 },
+ { 0x1196, 32844 },
+ { 0x1179, 32847 },
+ { 0x117D, 32850 },
+ { 0x117E, 32853 },
+ { 0x1184, 32856 },
+ { 0x118F, 32859 },
+ { 0x1192, 32862 },
+ { 0x1160, 32865 },
+ { 0x1185, 32868 },
+ { 0x1186, 32871 },
+ { 0x1191, 32874 },
+ { 0x11A1, 32877 },
+ { 0x11A0, 32880 },
+ { 0x119D, 32883 },
+ { 0x118B, 32886 },
+ { 0x119F, 32889 },
+ { 0x11A2, 32892 },
+ { 0x05C5, 32895 },
+ { 0x05C4, 32899 },
+ { 0x05AF, 32903 },
+ { 0x05C2, 32907 },
+ { 0x05BF, 32911 },
+ { 0x05C1, 32914 },
+ { 0x05B2, 32918 },
+ { 0x05B1, 32922 },
+ { 0x05B3, 32926 },
+ { 0x05B4, 32930 },
+ { 0x05B9, 32933 },
+ { 0x05BA, 32936 },
+ { 0x05BD, 32942 },
+ { 0x05B7, 32945 },
+ { 0x05B6, 32948 },
+ { 0x05B0, 32951 },
+ { 0x05B5, 32954 },
+ { 0x05BC, 32957 },
+ { 0x05B8, 32962 },
+ { 0x05C7, 32965 },
+ { 0x05BB, 32969 },
+ { 0x6B1E, 32972 },
+ { 0x05AB, 32976 },
+ { 0x05AD, 32979 },
+ { 0x05AC, 32982 },
+ { 0x05A2, 32985 },
+ { 0x05A7, 32989 },
+ { 0x05A3, 32992 },
+ { 0x05A1, 32995 },
+ { 0x05A8, 32998 },
+ { 0x0597, 33001 },
+ { 0x0592, 33004 },
+ { 0x059B, 33007 },
+ { 0x05AA, 33010 },
+ { 0x059A, 33015 },
+ { 0x0595, 33018 },
+ { 0x0594, 33022 },
+ { 0x0598, 33026 },
+ { 0x05AE, 33029 },
+ { 0x059C, 33032 },
+ { 0x059D, 33035 },
+ { 0x05A5, 33039 },
+ { 0x05A6, 33042 },
+ { 0x0599, 33046 },
+ { 0x059F, 33049 },
+ { 0x0596, 33053 },
+ { 0x0591, 33056 },
+ { 0x05A0, 33059 },
+ { 0x05A9, 33063 },
+ { 0x05A4, 33067 },
+ { 0x059E, 33070 },
+ { 0x0593, 33073 },
+ { 0x05D4, 33076 },
+ { 0x6B34, 33079 },
+ { 0x05E4, 33084 },
+ { 0x6B4E, 33087 },
+ { 0x6B44, 33092 },
+ { 0x05D1, 33097 },
+ { 0x6B4C, 33100 },
+ { 0x6B31, 33105 },
+ { 0x05D7, 33110 },
+ { 0x05DB, 33113 },
+ { 0x6B4D, 33116 },
+ { 0x6B3B, 33121 },
+ { 0x05DE, 33126 },
+ { 0x6B3E, 33129 },
+ { 0x05E0, 33134 },
+ { 0x6B40, 33137 },
+ { 0x05E7, 33142 },
+ { 0x6B47, 33145 },
+ { 0x05EA, 33150 },
+ { 0x6B4A, 33153 },
+ { 0x05D8, 33158 },
+ { 0x6B38, 33161 },
+ { 0x05D5, 33166 },
+ { 0x6B4B, 33169 },
+ { 0x6B35, 33174 },
+ { 0x05D9, 33179 },
+ { 0x6B1D, 33182 },
+ { 0x6B39, 33187 },
+ { 0x05D0, 33192 },
+ { 0x6B30, 33195 },
+ { 0x6B2E, 33200 },
+ { 0x6B2F, 33205 },
+ { 0x05E2, 33210 },
+ { 0x05E8, 33213 },
+ { 0x6B48, 33216 },
+ { 0x05E9, 33221 },
+ { 0x6B2B, 33224 },
+ { 0x6B2A, 33230 },
+ { 0x6B49, 33236 },
+ { 0x6B2D, 33241 },
+ { 0x6B2C, 33249 },
+ { 0x6B23, 33257 },
+ { 0x6B24, 33261 },
+ { 0x6B28, 33265 },
+ { 0x6B21, 33269 },
+ { 0x6B27, 33273 },
+ { 0x6B22, 33277 },
+ { 0x6B26, 33281 },
+ { 0x6B25, 33286 },
+ { 0x05D3, 33290 },
+ { 0x6B33, 33293 },
+ { 0x05E3, 33298 },
+ { 0x6B43, 33302 },
+ { 0x05DA, 33308 },
+ { 0x6B3A, 33312 },
+ { 0x05DD, 33318 },
+ { 0x05DF, 33322 },
+ { 0x05E5, 33326 },
+ { 0x05D2, 33330 },
+ { 0x6B32, 33333 },
+ { 0x05DC, 33338 },
+ { 0x6B3C, 33341 },
+ { 0x05E6, 33346 },
+ { 0x6B46, 33349 },
+ { 0x05D6, 33354 },
+ { 0x6B36, 33357 },
+ { 0x05E1, 33362 },
+ { 0x6B41, 33365 },
+ { 0x6B20, 33370 },
+ { 0x6B29, 33374 },
+ { 0x6B4F, 33379 },
+ { 0x05F1, 33383 },
+ { 0x6B1F, 33388 },
+ { 0x05F0, 33394 },
+ { 0x05F2, 33399 },
+ { 0x05C6, 33404 },
+ { 0x05C3, 33408 },
+ { 0x05BE, 33412 },
+ { 0x05C0, 33415 },
+ { 0x05F3, 33418 },
+ { 0x05F4, 33421 },
+ { 0x2010, 33424 },
+ { 0x2E1A, 33425 },
+ { 0x2043, 33428 },
+ { 0x2F4F, 33430 },
+ { 0x2F21, 33434 },
+ { 0x2F22, 33437 },
+ { 0x2F7D, 33441 },
+ { 0x2F44, 33444 },
+ { 0x2F24, 33447 },
+ { 0x2F38, 33450 },
+ { 0x2F5C, 33453 },
+ { 0x2F5D, 33456 },
+ { 0x2F02, 33459 },
+ { 0x2F32, 33462 },
+ { 0x2F7F, 33465 },
+ { 0x2FB7, 33468 },
+ { 0x2F6C, 33471 },
+ { 0x2FB6, 33474 },
+ { 0x2F51, 33477 },
+ { 0x2F0E, 33480 },
+ { 0x2F78, 33483 },
+ { 0x2F07, 33486 },
+ { 0x2F08, 33489 },
+ { 0x2F79, 33492 },
+ { 0x2F46, 33495 },
+ { 0x2F7C, 33498 },
+ { 0x2F00, 33501 },
+ { 0x2F97, 33504 },
+ { 0x2F41, 33507 },
+ { 0x2FCF, 33510 },
+ { 0x2F9A, 33513 },
+ { 0x2F9B, 33516 },
+ { 0x2F48, 33519 },
+ { 0x2F92, 33522 },
+ { 0x2F47, 33525 },
+ { 0x2F17, 33528 },
+ { 0x2F06, 33531 },
+ { 0x2F36, 33534 },
+ { 0x2F64, 33538 },
+ { 0x2F96, 33541 },
+ { 0x2FC3, 33544 },
+ { 0x2FAD, 33547 },
+ { 0x2F88, 33550 },
+ { 0x2F9D, 33553 },
+ { 0x2F66, 33556 },
+ { 0x2FBB, 33561 },
+ { 0x2F9E, 33564 },
+ { 0x2F73, 33567 },
+ { 0x2FA2, 33570 },
+ { 0x2F52, 33573 },
+ { 0x2F56, 33576 },
+ { 0x2FC5, 33579 },
+ { 0x2F6B, 33582 },
+ { 0x2F3E, 33585 },
+ { 0x2F0C, 33588 },
+ { 0x2FCE, 33592 },
+ { 0x2FD1, 33595 },
+ { 0x2FAF, 33598 },
+ { 0x2F5B, 33601 },
+ { 0x2F55, 33604 },
+ { 0x2FC2, 33607 },
+ { 0x2F9C, 33610 },
+ { 0x2FCC, 33613 },
+ { 0x2FA8, 33616 },
+ { 0x2FA6, 33619 },
+ { 0x2FBD, 33622 },
+ { 0x2F59, 33625 },
+ { 0x2F3F, 33630 },
+ { 0x2FB8, 33633 },
+ { 0x2FC7, 33636 },
+ { 0x2F05, 33639 },
+ { 0x2F93, 33642 },
+ { 0x2F28, 33645 },
+ { 0x2F5F, 33648 },
+ { 0x2F4B, 33651 },
+ { 0x2F2A, 33654 },
+ { 0x2FB4, 33657 },
+ { 0x2FB2, 33660 },
+ { 0x2F09, 33663 },
+ { 0x2F63, 33666 },
+ { 0x2F01, 33669 },
+ { 0x2FA7, 33672 },
+ { 0x2F35, 33675 },
+ { 0x2F81, 33679 },
+ { 0x2F49, 33682 },
+ { 0x2FD0, 33685 },
+ { 0x2F10, 33688 },
+ { 0x2F7E, 33692 },
+ { 0x2FAC, 33695 },
+ { 0x2F76, 33698 },
+ { 0x2F27, 33701 },
+ { 0x2FC4, 33704 },
+ { 0x2F19, 33707 },
+ { 0x2F83, 33710 },
+ { 0x2F77, 33713 },
+ { 0x2F6A, 33716 },
+ { 0x2F3B, 33719 },
+ { 0x2F4C, 33722 },
+ { 0x2FBC, 33725 },
+ { 0x2F61, 33728 },
+ { 0x2F4A, 33731 },
+ { 0x2FA1, 33734 },
+ { 0x2F8F, 33737 },
+ { 0x2F91, 33741 },
+ { 0x2FB5, 33744 },
+ { 0x2FA3, 33747 },
+ { 0x2F2F, 33750 },
+ { 0x2F13, 33753 },
+ { 0x2F1C, 33756 },
+ { 0x2F6E, 33759 },
+ { 0x2FCA, 33762 },
+ { 0x2F8E, 33765 },
+ { 0x2F80, 33768 },
+ { 0x2F26, 33771 },
+ { 0x2F1A, 33774 },
+ { 0x2F8A, 33777 },
+ { 0x2F0D, 33780 },
+ { 0x2F4D, 33783 },
+ { 0x2F1F, 33786 },
+ { 0x2F0B, 33789 },
+ { 0x2F0A, 33792 },
+ { 0x2F65, 33795 },
+ { 0x2FBE, 33798 },
+ { 0x2FD5, 33801 },
+ { 0x2FC1, 33804 },
+ { 0x2F72, 33807 },
+ { 0x2F8B, 33810 },
+ { 0x2F3C, 33813 },
+ { 0x2FBA, 33816 },
+ { 0x2F11, 33819 },
+ { 0x2F60, 33822 },
+ { 0x2FA9, 33825 },
+ { 0x2F1D, 33828 },
+ { 0x2F12, 33831 },
+ { 0x2F15, 33834 },
+ { 0x2F2E, 33839 },
+ { 0x2F7A, 33842 },
+ { 0x2F99, 33845 },
+ { 0x2F37, 33848 },
+ { 0x2FAB, 33851 },
+ { 0x2F33, 33856 },
+ { 0x2F03, 33860 },
+ { 0x2FAA, 33863 },
+ { 0x2F5A, 33866 },
+ { 0x2F29, 33869 },
+ { 0x2F39, 33872 },
+ { 0x2FB3, 33875 },
+ { 0x2F6D, 33878 },
+ { 0x2F14, 33881 },
+ { 0x2F74, 33884 },
+ { 0x2F53, 33887 },
+ { 0x2F6F, 33890 },
+ { 0x2F62, 33893 },
+ { 0x2F0F, 33896 },
+ { 0x2F8C, 33899 },
+ { 0x2FD2, 33902 },
+ { 0x2F71, 33905 },
+ { 0x2F54, 33908 },
+ { 0x2FC6, 33911 },
+ { 0x2F69, 33914 },
+ { 0x2F25, 33917 },
+ { 0x2FAE, 33920 },
+ { 0x2F84, 33923 },
+ { 0x2F98, 33926 },
+ { 0x2F75, 33929 },
+ { 0x2F9F, 33932 },
+ { 0x2F40, 33935 },
+ { 0x2F2B, 33938 },
+ { 0x2F43, 33941 },
+ { 0x2F68, 33944 },
+ { 0x2F34, 33948 },
+ { 0x2F58, 33952 },
+ { 0x2FD3, 33956 },
+ { 0x2F57, 33959 },
+ { 0x2F16, 33962 },
+ { 0x2F8D, 33966 },
+ { 0x2FC9, 33969 },
+ { 0x2F85, 33972 },
+ { 0x2F87, 33975 },
+ { 0x2F42, 33978 },
+ { 0x2F04, 33981 },
+ { 0x2F94, 33984 },
+ { 0x2F70, 33987 },
+ { 0x2F2C, 33990 },
+ { 0x2F45, 33993 },
+ { 0x2FB1, 33996 },
+ { 0x2F86, 34000 },
+ { 0x2FCD, 34003 },
+ { 0x2F31, 34006 },
+ { 0x2FD4, 34009 },
+ { 0x2F95, 34012 },
+ { 0x2F4E, 34015 },
+ { 0x2FC8, 34018 },
+ { 0x2F3A, 34021 },
+ { 0x2F90, 34024 },
+ { 0x2F50, 34027 },
+ { 0x2F23, 34030 },
+ { 0x2F7B, 34033 },
+ { 0x2F3D, 34036 },
+ { 0x2FB0, 34039 },
+ { 0x2FA0, 34042 },
+ { 0x2F30, 34045 },
+ { 0x2F1B, 34048 },
+ { 0x2F20, 34051 },
+ { 0x2FA5, 34054 },
+ { 0x2FC0, 34057 },
+ { 0x2FB9, 34060 },
+ { 0x2F82, 34063 },
+ { 0x2F2D, 34066 },
+ { 0x2F5E, 34069 },
+ { 0x2F67, 34072 },
+ { 0x2F89, 34075 },
+ { 0x2F1E, 34078 },
+ { 0x2F18, 34081 },
+ { 0x2FCB, 34084 },
+ { 0x2FA4, 34087 },
+ { 0x2FBF, 34090 },
+ { 0x212A, 34094 },
+ { 0x327F, 34096 },
+ { 0x2AAB, 34099 },
+ { 0x2AAD, 34101 },
+ { 0x1C36, 34106 },
+ { 0x1C37, 34109 },
+ { 0x1C41, 34112 },
+ { 0x1C46, 34115 },
+ { 0x1C42, 34118 },
+ { 0x1C45, 34121 },
+ { 0x1C44, 34124 },
+ { 0x1C49, 34127 },
+ { 0x1C40, 34130 },
+ { 0x1C48, 34133 },
+ { 0x1C47, 34136 },
+ { 0x1C43, 34139 },
+ { 0x1C2C, 34142 },
+ { 0x1C27, 34146 },
+ { 0x1C28, 34150 },
+ { 0x1C2A, 34154 },
+ { 0x1C26, 34158 },
+ { 0x1C29, 34162 },
+ { 0x1C2B, 34166 },
+ { 0x1C23, 34170 },
+ { 0x1C13, 34173 },
+ { 0x1C06, 34176 },
+ { 0x1C0C, 34179 },
+ { 0x1C11, 34182 },
+ { 0x1C03, 34185 },
+ { 0x1C1D, 34188 },
+ { 0x1C08, 34191 },
+ { 0x1C00, 34194 },
+ { 0x1C1C, 34197 },
+ { 0x1C15, 34200 },
+ { 0x1C0D, 34203 },
+ { 0x1C0E, 34206 },
+ { 0x1C1B, 34209 },
+ { 0x1C20, 34212 },
+ { 0x1C0A, 34215 },
+ { 0x1C1F, 34218 },
+ { 0x1C22, 34221 },
+ { 0x1C1A, 34224 },
+ { 0x1C14, 34227 },
+ { 0x1C07, 34230 },
+ { 0x1C4F, 34233 },
+ { 0x1C19, 34236 },
+ { 0x1C12, 34239 },
+ { 0x1C04, 34242 },
+ { 0x1C1E, 34245 },
+ { 0x1C02, 34248 },
+ { 0x1C01, 34251 },
+ { 0x1C16, 34254 },
+ { 0x1C05, 34257 },
+ { 0x1C09, 34260 },
+ { 0x1C10, 34263 },
+ { 0x1C0F, 34266 },
+ { 0x1C21, 34269 },
+ { 0x1C0B, 34272 },
+ { 0x1C17, 34275 },
+ { 0x1C4D, 34278 },
+ { 0x1C18, 34281 },
+ { 0x1C4E, 34284 },
+ { 0x1C2D, 34287 },
+ { 0x1C2F, 34291 },
+ { 0x1C2E, 34295 },
+ { 0x1C30, 34299 },
+ { 0x1C31, 34303 },
+ { 0x1C32, 34307 },
+ { 0x1C33, 34311 },
+ { 0x1C35, 34315 },
+ { 0x1C34, 34319 },
+ { 0x1C25, 34323 },
+ { 0x1C24, 34327 },
+ { 0x1C3C, 34331 },
+ { 0x1C3D, 34336 },
+ { 0x1C3B, 34339 },
+ { 0x1C3F, 34342 },
+ { 0x1C3E, 34345 },
+ { 0x7050, 34349 },
+ { 0x7051, 34353 },
+ { 0x7052, 34357 },
+ { 0x7053, 34361 },
+ { 0x7054, 34365 },
+ { 0x7055, 34369 },
+ { 0x7056, 34373 },
+ { 0x7057, 34377 },
+ { 0x7058, 34381 },
+ { 0x7059, 34385 },
+ { 0x705A, 34389 },
+ { 0x705B, 34393 },
+ { 0x705C, 34397 },
+ { 0x705D, 34401 },
+ { 0x7080, 34405 },
+ { 0x7081, 34410 },
+ { 0x7082, 34415 },
+ { 0x7083, 34420 },
+ { 0x708E, 34425 },
+ { 0x708F, 34430 },
+ { 0x7090, 34435 },
+ { 0x7091, 34440 },
+ { 0x7092, 34445 },
+ { 0x7095, 34450 },
+ { 0x7096, 34455 },
+ { 0x7097, 34460 },
+ { 0x709A, 34464 },
+ { 0x709B, 34469 },
+ { 0x709C, 34474 },
+ { 0x709D, 34478 },
+ { 0x709E, 34483 },
+ { 0x709F, 34487 },
+ { 0x70A0, 34491 },
+ { 0x70A1, 34496 },
+ { 0x70A2, 34500 },
+ { 0x70A3, 34504 },
+ { 0x70A5, 34508 },
+ { 0x70A6, 34512 },
+ { 0x70A7, 34516 },
+ { 0x70A8, 34521 },
+ { 0x70A9, 34525 },
+ { 0x70AA, 34529 },
+ { 0x70AB, 34534 },
+ { 0x70AC, 34539 },
+ { 0x70AD, 34543 },
+ { 0x70AE, 34547 },
+ { 0x70AF, 34551 },
+ { 0x70B0, 34555 },
+ { 0x70B1, 34559 },
+ { 0x70B2, 34563 },
+ { 0x70B3, 34567 },
+ { 0x70B4, 34571 },
+ { 0x70B5, 34575 },
+ { 0x70B6, 34580 },
+ { 0x70B7, 34584 },
+ { 0x70B8, 34589 },
+ { 0x70B9, 34593 },
+ { 0x70BA, 34597 },
+ { 0x70BB, 34601 },
+ { 0x70BC, 34605 },
+ { 0x70BD, 34609 },
+ { 0x70BE, 34613 },
+ { 0x70BF, 34617 },
+ { 0x70C0, 34621 },
+ { 0x70C1, 34625 },
+ { 0x70C2, 34629 },
+ { 0x70C3, 34633 },
+ { 0x70C4, 34638 },
+ { 0x70C5, 34643 },
+ { 0x70C6, 34648 },
+ { 0x70C7, 34653 },
+ { 0x70C8, 34658 },
+ { 0x70C9, 34662 },
+ { 0x70CA, 34667 },
+ { 0x70CB, 34671 },
+ { 0x70CC, 34675 },
+ { 0x70CD, 34681 },
+ { 0x70CE, 34686 },
+ { 0x70CF, 34692 },
+ { 0x70D0, 34697 },
+ { 0x70D1, 34701 },
+ { 0x70D3, 34705 },
+ { 0x70D4, 34709 },
+ { 0x70D5, 34713 },
+ { 0x70D6, 34717 },
+ { 0x70D7, 34721 },
+ { 0x70D8, 34725 },
+ { 0x70D9, 34730 },
+ { 0x70DA, 34734 },
+ { 0x70DB, 34738 },
+ { 0x70DC, 34742 },
+ { 0x70DD, 34746 },
+ { 0x7084, 34750 },
+ { 0x7085, 34755 },
+ { 0x7086, 34760 },
+ { 0x7087, 34765 },
+ { 0x7088, 34770 },
+ { 0x7089, 34775 },
+ { 0x708A, 34780 },
+ { 0x708B, 34785 },
+ { 0x708C, 34790 },
+ { 0x708D, 34795 },
+ { 0x70DE, 34800 },
+ { 0x70DF, 34805 },
+ { 0x70E0, 34810 },
+ { 0x70E1, 34815 },
+ { 0x70E2, 34820 },
+ { 0x70E3, 34825 },
+ { 0x70E4, 34830 },
+ { 0x70E5, 34835 },
+ { 0x70E6, 34840 },
+ { 0x70E7, 34845 },
+ { 0x70E8, 34850 },
+ { 0x70E9, 34855 },
+ { 0x70EA, 34860 },
+ { 0x70EB, 34865 },
+ { 0x70EC, 34870 },
+ { 0x70ED, 34875 },
+ { 0x70EE, 34880 },
+ { 0x70EF, 34885 },
+ { 0x70F0, 34890 },
+ { 0x70F1, 34895 },
+ { 0x70F2, 34900 },
+ { 0x70F3, 34905 },
+ { 0x70F4, 34910 },
+ { 0x70F5, 34915 },
+ { 0x70F6, 34920 },
+ { 0x70F7, 34925 },
+ { 0x70F8, 34930 },
+ { 0x70F9, 34935 },
+ { 0x70FA, 34940 },
+ { 0x7093, 34945 },
+ { 0x7094, 34950 },
+ { 0x7098, 34955 },
+ { 0x7099, 34960 },
+ { 0x70A4, 34965 },
+ { 0x70D2, 34970 },
+ { 0x7005, 34975 },
+ { 0x702B, 34980 },
+ { 0x701E, 34985 },
+ { 0x7033, 34990 },
+ { 0x7035, 34995 },
+ { 0x7019, 35000 },
+ { 0x7007, 35005 },
+ { 0x7000, 35010 },
+ { 0x702E, 35015 },
+ { 0x7004, 35020 },
+ { 0x7021, 35025 },
+ { 0x7030, 35030 },
+ { 0x7015, 35035 },
+ { 0x7008, 35040 },
+ { 0x7017, 35045 },
+ { 0x7023, 35050 },
+ { 0x703C, 35055 },
+ { 0x703F, 35060 },
+ { 0x7025, 35065 },
+ { 0x7018, 35070 },
+ { 0x701A, 35075 },
+ { 0x7040, 35080 },
+ { 0x702C, 35085 },
+ { 0x7029, 35090 },
+ { 0x7002, 35095 },
+ { 0x7046, 35100 },
+ { 0x701B, 35105 },
+ { 0x702D, 35110 },
+ { 0x7026, 35115 },
+ { 0x7049, 35120 },
+ { 0x700D, 35125 },
+ { 0x7034, 35130 },
+ { 0x7001, 35135 },
+ { 0x7020, 35140 },
+ { 0x7039, 35145 },
+ { 0x702F, 35150 },
+ { 0x703A, 35155 },
+ { 0x7041, 35160 },
+ { 0x7010, 35165 },
+ { 0x7006, 35170 },
+ { 0x700B, 35175 },
+ { 0x7045, 35180 },
+ { 0x7022, 35185 },
+ { 0x7009, 35190 },
+ { 0x701C, 35195 },
+ { 0x702A, 35200 },
+ { 0x7037, 35205 },
+ { 0x701D, 35210 },
+ { 0x700A, 35215 },
+ { 0x7031, 35220 },
+ { 0x7032, 35225 },
+ { 0x7028, 35230 },
+ { 0x7003, 35235 },
+ { 0x7047, 35240 },
+ { 0x700E, 35245 },
+ { 0x704B, 35250 },
+ { 0x7011, 35255 },
+ { 0x704A, 35260 },
+ { 0x7036, 35265 },
+ { 0x7012, 35270 },
+ { 0x7043, 35275 },
+ { 0x701F, 35280 },
+ { 0x7016, 35285 },
+ { 0x703D, 35290 },
+ { 0x7038, 35295 },
+ { 0x7048, 35300 },
+ { 0x700F, 35305 },
+ { 0x7024, 35310 },
+ { 0x7014, 35315 },
+ { 0x7013, 35320 },
+ { 0x7042, 35325 },
+ { 0x704C, 35330 },
+ { 0x7044, 35335 },
+ { 0x704D, 35340 },
+ { 0x7280, 35345 },
+ { 0x7282, 35348 },
+ { 0x7285, 35351 },
+ { 0x7281, 35354 },
+ { 0x7284, 35357 },
+ { 0x729B, 35360 },
+ { 0x7286, 35363 },
+ { 0x728A, 35366 },
+ { 0x728B, 35369 },
+ { 0x728D, 35372 },
+ { 0x728E, 35375 },
+ { 0x728F, 35378 },
+ { 0x7293, 35381 },
+ { 0x728C, 35384 },
+ { 0x7295, 35387 },
+ { 0x7296, 35390 },
+ { 0x7297, 35393 },
+ { 0x7292, 35396 },
+ { 0x7287, 35399 },
+ { 0x729C, 35402 },
+ { 0x7288, 35405 },
+ { 0x7299, 35408 },
+ { 0x7283, 35411 },
+ { 0x729A, 35414 },
+ { 0x7294, 35417 },
+ { 0x7290, 35420 },
+ { 0x7291, 35423 },
+ { 0x7289, 35426 },
+ { 0x7298, 35429 },
+ { 0x7920, 35432 },
+ { 0x7921, 35435 },
+ { 0x7939, 35438 },
+ { 0x7923, 35441 },
+ { 0x7924, 35444 },
+ { 0x7931, 35447 },
+ { 0x7922, 35450 },
+ { 0x7926, 35453 },
+ { 0x7928, 35456 },
+ { 0x7929, 35459 },
+ { 0x792A, 35462 },
+ { 0x792B, 35465 },
+ { 0x792C, 35468 },
+ { 0x7932, 35471 },
+ { 0x792D, 35474 },
+ { 0x7933, 35477 },
+ { 0x792F, 35480 },
+ { 0x7930, 35483 },
+ { 0x7925, 35486 },
+ { 0x7927, 35489 },
+ { 0x7935, 35492 },
+ { 0x7936, 35495 },
+ { 0x7937, 35498 },
+ { 0x7938, 35501 },
+ { 0x792E, 35504 },
+ { 0x7934, 35507 },
+ { 0x793F, 35510 },
+ { 0x00AF, 35513 },
+ { 0x2774, 35514 },
+ { 0x2768, 35519 },
+ { 0x26AB, 35523 },
+ { 0x2775, 35526 },
+ { 0x2769, 35531 },
+ { 0x2592, 35535 },
+ { 0x26AC, 35537 },
+ { 0x26AA, 35541 },
+ { 0x2759, 35544 },
+ { 0x276A, 35547 },
+ { 0x276B, 35552 },
+ { 0x205F, 35557 },
+ { 0x276C, 35560 },
+ { 0x276D, 35565 },
+ { 0x00B7, 35570 },
+ { 0x22A7, 35572 },
+ { 0x2A0A, 35573 },
+ { 0x202F, 35576 },
+ { 0x26B2, 35579 },
+ { 0x22B2, 35580 },
+ { 0x22B4, 35583 },
+ { 0x2491, 35589 },
+ { 0x0023, 35593 },
+ { 0x2492, 35595 },
+ { 0x2493, 35599 },
+ { 0x249B, 35603 },
+ { 0x2496, 35607 },
+ { 0x2497, 35611 },
+ { 0x2499, 35615 },
+ { 0x2495, 35619 },
+ { 0x249A, 35623 },
+ { 0x2494, 35627 },
+ { 0x2498, 35631 },
+ { 0x2116, 35635 },
+ { 0x6FFC, 35637 },
+ { 0x02DB, 35640 },
+ { 0x2325, 35641 },
+ { 0x6D3E, 35643 },
+ { 0x6D3F, 35646 },
+ { 0x26B4, 35649 },
+ { 0x270F, 35650 },
+ { 0x20A7, 35651 },
+ { 0x2653, 35653 },
+ { 0x210E, 35654 },
+ { 0x210F, 35656 },
+ { 0x3012, 35661 },
+ { 0x3020, 35663 },
+ { 0x2E07, 35666 },
+ { 0x2E0B, 35670 },
+ { 0x2E06, 35672 },
+ { 0x5949, 35675 },
+ { 0x5947, 35679 },
+ { 0x594B, 35683 },
+ { 0x5948, 35687 },
+ { 0x594A, 35691 },
+ { 0x594C, 35695 },
+ { 0x594E, 35699 },
+ { 0x594D, 35703 },
+ { 0x5946, 35707 },
+ { 0x5937, 35710 },
+ { 0x5939, 35713 },
+ { 0x5934, 35716 },
+ { 0x5931, 35719 },
+ { 0x5941, 35722 },
+ { 0x593A, 35725 },
+ { 0x5930, 35728 },
+ { 0x593E, 35731 },
+ { 0x5938, 35734 },
+ { 0x5935, 35737 },
+ { 0x5936, 35740 },
+ { 0x593D, 35743 },
+ { 0x593C, 35746 },
+ { 0x5933, 35749 },
+ { 0x5940, 35752 },
+ { 0x593F, 35755 },
+ { 0x5942, 35758 },
+ { 0x5944, 35761 },
+ { 0x5932, 35764 },
+ { 0x593B, 35767 },
+ { 0x5943, 35770 },
+ { 0x5945, 35773 },
+ { 0x5953, 35776 },
+ { 0x595F, 35778 },
+ { 0x5952, 35781 },
+ { 0x5950, 35785 },
+ { 0x5951, 35789 },
+ { 0x594F, 35793 },
+ { 0x23CE, 35797 },
+ { 0x2930, 35799 },
+ { 0x292B, 35805 },
+ { 0x2644, 35810 },
+ { 0x2696, 35811 },
+ { 0x212F, 35812 },
+ { 0x210A, 35815 },
+ { 0x2113, 35818 },
+ { 0x2134, 35821 },
+ { 0x212C, 35824 },
+ { 0x2130, 35827 },
+ { 0x2131, 35830 },
+ { 0x210B, 35833 },
+ { 0x2110, 35836 },
+ { 0x2112, 35839 },
+ { 0x2133, 35842 },
+ { 0x2118, 35845 },
+ { 0x211B, 35848 },
+ { 0x2314, 35851 },
+ { 0x6E45, 35852 },
+ { 0x201A, 35854 },
+ { 0x2039, 35858 },
+ { 0x203A, 35863 },
+ { 0x201B, 35868 },
+ { 0x33DF, 35872 },
+ { 0x33C6, 35876 },
+ { 0x33C0, 35880 },
+ { 0x33C1, 35883 },
+ { 0x33A7, 35886 },
+ { 0x33A8, 35890 },
+ { 0x33A5, 35895 },
+ { 0x33A1, 35898 },
+ { 0x33DE, 35901 },
+ { 0x33C2, 35905 },
+ { 0x3373, 35907 },
+ { 0x33C3, 35909 },
+ { 0x33C4, 35911 },
+ { 0x33C5, 35913 },
+ { 0x339D, 35915 },
+ { 0x33A4, 35917 },
+ { 0x33A0, 35920 },
+ { 0x33C7, 35923 },
+ { 0x3372, 35925 },
+ { 0x33C8, 35927 },
+ { 0x3397, 35929 },
+ { 0x3377, 35931 },
+ { 0x3379, 35933 },
+ { 0x3378, 35936 },
+ { 0x32CE, 35939 },
+ { 0x3399, 35941 },
+ { 0x3387, 35943 },
+ { 0x33C9, 35945 },
+ { 0x33CA, 35947 },
+ { 0x32CC, 35949 },
+ { 0x33CB, 35951 },
+ { 0x3390, 35953 },
+ { 0x33CC, 35955 },
+ { 0x337A, 35957 },
+ { 0x3384, 35959 },
+ { 0x3385, 35961 },
+ { 0x338F, 35963 },
+ { 0x33CD, 35965 },
+ { 0x3398, 35967 },
+ { 0x339E, 35969 },
+ { 0x33A6, 35971 },
+ { 0x33CE, 35974 },
+ { 0x33A2, 35977 },
+ { 0x33CF, 35980 },
+ { 0x33B8, 35982 },
+ { 0x33BE, 35984 },
+ { 0x33D0, 35986 },
+ { 0x33D1, 35988 },
+ { 0x33D3, 35990 },
+ { 0x3383, 35992 },
+ { 0x3386, 35994 },
+ { 0x33D4, 35996 },
+ { 0x338E, 35999 },
+ { 0x3396, 36001 },
+ { 0x339C, 36003 },
+ { 0x33A3, 36005 },
+ { 0x339F, 36008 },
+ { 0x33B3, 36011 },
+ { 0x3382, 36013 },
+ { 0x338C, 36016 },
+ { 0x338D, 36019 },
+ { 0x3395, 36022 },
+ { 0x339B, 36025 },
+ { 0x33B2, 36028 },
+ { 0x33B6, 36031 },
+ { 0x33BC, 36034 },
+ { 0x33B7, 36037 },
+ { 0x33B9, 36039 },
+ { 0x33BD, 36042 },
+ { 0x33BF, 36044 },
+ { 0x3381, 36047 },
+ { 0x338B, 36049 },
+ { 0x339A, 36051 },
+ { 0x33B1, 36053 },
+ { 0x33B5, 36055 },
+ { 0x33BB, 36057 },
+ { 0x3375, 36059 },
+ { 0x33A9, 36061 },
+ { 0x3380, 36063 },
+ { 0x3376, 36066 },
+ { 0x338A, 36068 },
+ { 0x33D7, 36070 },
+ { 0x33D8, 36072 },
+ { 0x33DA, 36074 },
+ { 0x33B0, 36076 },
+ { 0x33B4, 36078 },
+ { 0x33BA, 36080 },
+ { 0x33DB, 36082 },
+ { 0x33DC, 36084 },
+ { 0x33DD, 36086 },
+ { 0x3374, 36088 },
+ { 0x3388, 36090 },
+ { 0x2293, 36092 },
+ { 0x2294, 36094 },
+ { 0x337E, 36096 },
+ { 0x337B, 36100 },
+ { 0x337C, 36104 },
+ { 0x337D, 36108 },
+ { 0x32CD, 36112 },
+ { 0x33FF, 36114 },
+ { 0x3393, 36116 },
+ { 0x33AC, 36118 },
+ { 0x333F, 36120 },
+ { 0x3371, 36122 },
+ { 0x3391, 36124 },
+ { 0x33AA, 36126 },
+ { 0x33D2, 36128 },
+ { 0x3392, 36130 },
+ { 0x33D5, 36132 },
+ { 0x33D6, 36134 },
+ { 0x33AB, 36136 },
+ { 0x33D9, 36138 },
+ { 0x33AD, 36140 },
+ { 0x33AE, 36142 },
+ { 0x33AF, 36146 },
+ { 0x3394, 36151 },
+ { 0x3327, 36153 },
+ { 0x3306, 36155 },
+ { 0x3303, 36157 },
+ { 0x3331, 36159 },
+ { 0x3325, 36161 },
+ { 0x3326, 36163 },
+ { 0x23CD, 36165 },
+ { 0x3310, 36167 },
+ { 0x3342, 36169 },
+ { 0x3305, 36171 },
+ { 0x3389, 36173 },
+ { 0x3314, 36175 },
+ { 0x2ACD, 36177 },
+ { 0x334B, 36182 },
+ { 0x3349, 36184 },
+ { 0x3328, 36186 },
+ { 0x3309, 36188 },
+ { 0x330A, 36190 },
+ { 0x3337, 36192 },
+ { 0x3330, 36194 },
+ { 0x3355, 36196 },
+ { 0x3352, 36198 },
+ { 0x221A, 36200 },
+ { 0x2B12, 36202 },
+ { 0x25E7, 36207 },
+ { 0x2B15, 36212 },
+ { 0x25EA, 36219 },
+ { 0x25E8, 36226 },
+ { 0x25A7, 36231 },
+ { 0x25E9, 36239 },
+ { 0x25A8, 36246 },
+ { 0x2B14, 36254 },
+ { 0x2B13, 36261 },
+ { 0x25A9, 36266 },
+ { 0x25A5, 36271 },
+ { 0x29E0, 36275 },
+ { 0x25A4, 36279 },
+ { 0x25A6, 36283 },
+ { 0x3350, 36288 },
+ { 0x3302, 36290 },
+ { 0x333C, 36292 },
+ { 0x3324, 36294 },
+ { 0x3308, 36296 },
+ { 0x330F, 36298 },
+ { 0x330E, 36300 },
+ { 0x3311, 36302 },
+ { 0x332A, 36304 },
+ { 0x3341, 36306 },
+ { 0x3335, 36308 },
+ { 0x228F, 36310 },
+ { 0x22E4, 36313 },
+ { 0x2291, 36320 },
+ { 0x330B, 36326 },
+ { 0x331C, 36328 },
+ { 0x331E, 36330 },
+ { 0x3345, 36332 },
+ { 0x3344, 36334 },
+ { 0x3329, 36336 },
+ { 0x332C, 36338 },
+ { 0x333B, 36340 },
+ { 0x333A, 36342 },
+ { 0x3340, 36344 },
+ { 0x2ACE, 36346 },
+ { 0x3353, 36351 },
+ { 0x3322, 36353 },
+ { 0x3323, 36355 },
+ { 0x3357, 36357 },
+ { 0x334E, 36359 },
+ { 0x334F, 36361 },
+ { 0x3300, 36363 },
+ { 0x3301, 36365 },
+ { 0x333E, 36367 },
+ { 0x3318, 36369 },
+ { 0x3339, 36371 },
+ { 0x3333, 36373 },
+ { 0x3304, 36375 },
+ { 0x331D, 36377 },
+ { 0x3312, 36379 },
+ { 0x3346, 36381 },
+ { 0x3338, 36383 },
+ { 0x332F, 36385 },
+ { 0x333D, 36387 },
+ { 0x332D, 36389 },
+ { 0x3313, 36391 },
+ { 0x330C, 36393 },
+ { 0x330D, 36395 },
+ { 0x331B, 36397 },
+ { 0x2311, 36399 },
+ { 0x3343, 36401 },
+ { 0x3347, 36403 },
+ { 0x334D, 36405 },
+ { 0x334C, 36407 },
+ { 0x3348, 36409 },
+ { 0x3351, 36411 },
+ { 0x3354, 36413 },
+ { 0x331F, 36415 },
+ { 0x3321, 36417 },
+ { 0x3334, 36419 },
+ { 0x3307, 36421 },
+ { 0x3332, 36423 },
+ { 0x2290, 36425 },
+ { 0x22E5, 36428 },
+ { 0x2292, 36435 },
+ { 0x332B, 36441 },
+ { 0x3356, 36443 },
+ { 0x3320, 36445 },
+ { 0x3319, 36447 },
+ { 0x3336, 36449 },
+ { 0x3317, 36451 },
+ { 0x331A, 36453 },
+ { 0x334A, 36455 },
+ { 0x332E, 36457 },
+ { 0x3315, 36459 },
+ { 0x337F, 36461 },
+ { 0x3316, 36463 },
+ { 0x2729, 36465 },
+ { 0x2282, 36469 },
+ { 0x2286, 36471 },
+ { 0x2AC3, 36476 },
+ { 0x228A, 36484 },
+ { 0x2ACB, 36490 },
+ { 0x2AC7, 36496 },
+ { 0x2AC9, 36501 },
+ { 0x2AC5, 36507 },
+ { 0x2ABD, 36512 },
+ { 0x2ABF, 36515 },
+ { 0x2AC1, 36520 },
+ { 0x2AD5, 36525 },
+ { 0x2AD3, 36528 },
+ { 0x2979, 36531 },
+ { 0x5806, 36535 },
+ { 0x580B, 36539 },
+ { 0x5802, 36543 },
+ { 0x5823, 36547 },
+ { 0x5826, 36552 },
+ { 0x5824, 36557 },
+ { 0x5825, 36562 },
+ { 0x5827, 36567 },
+ { 0x5800, 36572 },
+ { 0x5804, 36576 },
+ { 0x5801, 36580 },
+ { 0x5805, 36584 },
+ { 0x5803, 36588 },
+ { 0x581B, 36592 },
+ { 0x580C, 36596 },
+ { 0x5816, 36600 },
+ { 0x5809, 36604 },
+ { 0x5822, 36608 },
+ { 0x580E, 36612 },
+ { 0x5807, 36616 },
+ { 0x581F, 36620 },
+ { 0x581D, 36624 },
+ { 0x5818, 36628 },
+ { 0x5819, 36632 },
+ { 0x581E, 36636 },
+ { 0x5821, 36640 },
+ { 0x5814, 36644 },
+ { 0x581C, 36648 },
+ { 0x580D, 36652 },
+ { 0x5812, 36656 },
+ { 0x5817, 36660 },
+ { 0x580A, 36664 },
+ { 0x580F, 36668 },
+ { 0x5808, 36672 },
+ { 0x581A, 36676 },
+ { 0x5820, 36680 },
+ { 0x5815, 36684 },
+ { 0x5810, 36688 },
+ { 0x5813, 36692 },
+ { 0x5811, 36696 },
+ { 0x5828, 36700 },
+ { 0x5829, 36704 },
+ { 0x582A, 36708 },
+ { 0x582B, 36712 },
+ { 0x2403, 36716 },
+ { 0x2419, 36721 },
+ { 0x2404, 36726 },
+ { 0x2417, 36731 },
+ { 0x2407, 36737 },
+ { 0x2410, 36740 },
+ { 0x241C, 36745 },
+ { 0x240C, 36749 },
+ { 0x240A, 36753 },
+ { 0x2400, 36757 },
+ { 0x241F, 36760 },
+ { 0x241D, 36764 },
+ { 0x240F, 36768 },
+ { 0x240E, 36772 },
+ { 0x2420, 36776 },
+ { 0x2402, 36779 },
+ { 0x2401, 36784 },
+ { 0x2418, 36789 },
+ { 0x2421, 36792 },
+ { 0x2425, 36795 },
+ { 0x2411, 36800 },
+ { 0x2412, 36805 },
+ { 0x2414, 36810 },
+ { 0x2413, 36815 },
+ { 0x241B, 36820 },
+ { 0x241E, 36823 },
+ { 0x2405, 36827 },
+ { 0x2424, 36830 },
+ { 0x240D, 36833 },
+ { 0x2415, 36837 },
+ { 0x240B, 36841 },
+ { 0x2408, 36845 },
+ { 0x214F, 36848 },
+ { 0x2409, 36852 },
+ { 0x241A, 36856 },
+ { 0x2426, 36859 },
+ { 0x2406, 36864 },
+ { 0x2416, 36867 },
+ { 0x0700, 36871 },
+ { 0x0743, 36875 },
+ { 0x0744, 36880 },
+ { 0x0706, 36885 },
+ { 0x0707, 36889 },
+ { 0x073D, 36893 },
+ { 0x073E, 36896 },
+ { 0x073A, 36899 },
+ { 0x073B, 36902 },
+ { 0x0749, 36905 },
+ { 0x0736, 36907 },
+ { 0x0737, 36910 },
+ { 0x073F, 36913 },
+ { 0x0745, 36915 },
+ { 0x0746, 36919 },
+ { 0x0739, 36923 },
+ { 0x0738, 36927 },
+ { 0x0725, 36931 },
+ { 0x0717, 36934 },
+ { 0x0726, 36937 },
+ { 0x0721, 36940 },
+ { 0x0722, 36943 },
+ { 0x072C, 36946 },
+ { 0x0718, 36949 },
+ { 0x0712, 36952 },
+ { 0x071A, 36955 },
+ { 0x071F, 36958 },
+ { 0x0729, 36961 },
+ { 0x072A, 36964 },
+ { 0x072B, 36967 },
+ { 0x071B, 36970 },
+ { 0x071C, 36973 },
+ { 0x071D, 36977 },
+ { 0x071E, 36980 },
+ { 0x0719, 36984 },
+ { 0x0710, 36987 },
+ { 0x0724, 36990 },
+ { 0x0713, 36994 },
+ { 0x0714, 36997 },
+ { 0x0728, 37001 },
+ { 0x0715, 37004 },
+ { 0x0720, 37007 },
+ { 0x0716, 37010 },
+ { 0x072D, 37015 },
+ { 0x072E, 37019 },
+ { 0x072F, 37023 },
+ { 0x0723, 37027 },
+ { 0x074F, 37030 },
+ { 0x074E, 37034 },
+ { 0x074D, 37038 },
+ { 0x0727, 37042 },
+ { 0x0711, 37046 },
+ { 0x0730, 37050 },
+ { 0x0731, 37053 },
+ { 0x0732, 37056 },
+ { 0x0733, 37059 },
+ { 0x0734, 37062 },
+ { 0x0735, 37065 },
+ { 0x074A, 37068 },
+ { 0x0747, 37070 },
+ { 0x0748, 37074 },
+ { 0x0740, 37078 },
+ { 0x070B, 37081 },
+ { 0x070C, 37084 },
+ { 0x070D, 37087 },
+ { 0x0742, 37090 },
+ { 0x0741, 37092 },
+ { 0x0702, 37094 },
+ { 0x0704, 37098 },
+ { 0x0709, 37101 },
+ { 0x0705, 37106 },
+ { 0x070A, 37109 },
+ { 0x073C, 37111 },
+ { 0x0701, 37114 },
+ { 0x0703, 37118 },
+ { 0x0708, 37121 },
+ { 0x070F, 37126 },
+ { 0x2649, 37129 },
+ { 0x0C56, 37130 },
+ { 0x0C7F, 37134 },
+ { 0x0C4D, 37137 },
+ { 0x0C03, 37140 },
+ { 0x0C02, 37143 },
+ { 0x0C3D, 37146 },
+ { 0x0C01, 37149 },
+ { 0x0C67, 37152 },
+ { 0x0C6C, 37155 },
+ { 0x0C68, 37158 },
+ { 0x0C6B, 37161 },
+ { 0x0C6A, 37164 },
+ { 0x0C6F, 37167 },
+ { 0x0C66, 37170 },
+ { 0x0C6E, 37173 },
+ { 0x0C6D, 37176 },
+ { 0x0C69, 37179 },
+ { 0x0C46, 37182 },
+ { 0x0C3F, 37186 },
+ { 0x0C4A, 37190 },
+ { 0x0C41, 37194 },
+ { 0x0C3E, 37198 },
+ { 0x0C48, 37202 },
+ { 0x0C4C, 37206 },
+ { 0x0C47, 37210 },
+ { 0x0C40, 37214 },
+ { 0x0C4B, 37218 },
+ { 0x0C42, 37222 },
+ { 0x0C62, 37226 },
+ { 0x0C43, 37231 },
+ { 0x0C63, 37236 },
+ { 0x0C44, 37241 },
+ { 0x0C55, 37246 },
+ { 0x0C05, 37249 },
+ { 0x0C0E, 37252 },
+ { 0x0C07, 37255 },
+ { 0x0C12, 37258 },
+ { 0x0C09, 37261 },
+ { 0x0C06, 37264 },
+ { 0x0C10, 37267 },
+ { 0x0C14, 37270 },
+ { 0x0C2C, 37273 },
+ { 0x0C1A, 37276 },
+ { 0x0C26, 37279 },
+ { 0x0C0F, 37282 },
+ { 0x0C17, 37285 },
+ { 0x0C39, 37288 },
+ { 0x0C08, 37291 },
+ { 0x0C1C, 37294 },
+ { 0x0C15, 37297 },
+ { 0x0C32, 37300 },
+ { 0x0C2E, 37303 },
+ { 0x0C28, 37306 },
+ { 0x0C13, 37309 },
+ { 0x0C2A, 37312 },
+ { 0x0C30, 37315 },
+ { 0x0C38, 37318 },
+ { 0x0C24, 37321 },
+ { 0x0C0A, 37324 },
+ { 0x0C35, 37327 },
+ { 0x0C2F, 37330 },
+ { 0x0C2D, 37333 },
+ { 0x0C1B, 37336 },
+ { 0x0C21, 37339 },
+ { 0x0C27, 37342 },
+ { 0x0C59, 37345 },
+ { 0x0C18, 37348 },
+ { 0x0C1D, 37351 },
+ { 0x0C16, 37354 },
+ { 0x0C33, 37357 },
+ { 0x0C19, 37360 },
+ { 0x0C23, 37363 },
+ { 0x0C1E, 37366 },
+ { 0x0C2B, 37369 },
+ { 0x0C31, 37372 },
+ { 0x0C36, 37375 },
+ { 0x0C37, 37378 },
+ { 0x0C25, 37381 },
+ { 0x0C58, 37384 },
+ { 0x0C1F, 37387 },
+ { 0x0C22, 37390 },
+ { 0x0C20, 37393 },
+ { 0x0C0C, 37396 },
+ { 0x0C0B, 37400 },
+ { 0x0C61, 37404 },
+ { 0x0C60, 37408 },
+ { 0x0C79, 37412 },
+ { 0x0C7C, 37421 },
+ { 0x0C7A, 37430 },
+ { 0x0C7D, 37439 },
+ { 0x0C78, 37448 },
+ { 0x0C7B, 37457 },
+ { 0x0C7E, 37466 },
+ { 0x07B0, 37475 },
+ { 0x07A0, 37477 },
+ { 0x07A1, 37480 },
+ { 0x0784, 37483 },
+ { 0x0780, 37486 },
+ { 0x07B1, 37489 },
+ { 0x0783, 37492 },
+ { 0x0794, 37495 },
+ { 0x079C, 37498 },
+ { 0x07A2, 37501 },
+ { 0x0799, 37504 },
+ { 0x079A, 37507 },
+ { 0x078C, 37510 },
+ { 0x0798, 37513 },
+ { 0x0787, 37516 },
+ { 0x078A, 37519 },
+ { 0x078E, 37522 },
+ { 0x0786, 37525 },
+ { 0x078D, 37528 },
+ { 0x0789, 37531 },
+ { 0x0782, 37534 },
+ { 0x07A4, 37537 },
+ { 0x0790, 37540 },
+ { 0x0788, 37543 },
+ { 0x07A5, 37546 },
+ { 0x079F, 37549 },
+ { 0x078B, 37552 },
+ { 0x07A3, 37555 },
+ { 0x079E, 37558 },
+ { 0x079D, 37561 },
+ { 0x079B, 37564 },
+ { 0x0791, 37567 },
+ { 0x0796, 37570 },
+ { 0x0795, 37573 },
+ { 0x0793, 37576 },
+ { 0x0792, 37579 },
+ { 0x0797, 37582 },
+ { 0x078F, 37585 },
+ { 0x0785, 37588 },
+ { 0x0781, 37591 },
+ { 0x07A6, 37594 },
+ { 0x07AC, 37596 },
+ { 0x07A8, 37598 },
+ { 0x07AE, 37600 },
+ { 0x07AA, 37602 },
+ { 0x07A7, 37604 },
+ { 0x07A9, 37606 },
+ { 0x07AD, 37608 },
+ { 0x07AF, 37610 },
+ { 0x07AB, 37612 },
+ { 0x29FB, 37614 },
+ { 0x2AF6, 37616 },
+ { 0x2034, 37619 },
+ { 0x224B, 37621 },
+ { 0x2AF7, 37623 },
+ { 0x2AF8, 37626 },
+ { 0x2AFB, 37629 },
+ { 0x222D, 37633 },
+ { 0x2AF5, 37635 },
+ { 0x22AA, 37641 },
+ { 0x2AF4, 37646 },
+ { 0x2980, 37651 },
+ { 0x2A68, 37655 },
+ { 0x2A69, 37662 },
+ { 0x20AE, 37669 },
+ { 0x2319, 37671 },
+ { 0x29A2, 37674 },
+ { 0x2129, 37676 },
+ { 0x214E, 37681 },
+ { 0x2132, 37684 },
+ { 0x214B, 37687 },
+ { 0x2141, 37689 },
+ { 0x2142, 37693 },
+ { 0x2144, 37697 },
+ { 0x2739, 37701 },
+ { 0x2645, 37705 },
+ { 0x2A2F, 37706 },
+ { 0x2230, 37710 },
+ { 0x00BD, 37712 },
+ { 0x2155, 37716 },
+ { 0x2159, 37720 },
+ { 0x2153, 37724 },
+ { 0x215B, 37728 },
+ { 0x00BC, 37732 },
+ { 0x2156, 37736 },
+ { 0x2154, 37740 },
+ { 0x215A, 37744 },
+ { 0x215D, 37748 },
+ { 0x2158, 37752 },
+ { 0x215E, 37756 },
+ { 0x2157, 37760 },
+ { 0x215C, 37764 },
+ { 0x00BE, 37768 },
+ { 0x2240, 37772 },
+ { 0x2100, 37774 },
+ { 0x060B, 37776 },
+ { 0x2697, 37778 },
+ { 0x20B3, 37779 },
+ { 0x2235, 37781 },
+ { 0x09D7, 37782 },
+ { 0x09BC, 37786 },
+ { 0x09CD, 37789 },
+ { 0x0983, 37792 },
+ { 0x0982, 37795 },
+ { 0x09BD, 37798 },
+ { 0x0981, 37801 },
+ { 0x09E7, 37804 },
+ { 0x09EC, 37807 },
+ { 0x09E8, 37810 },
+ { 0x09EB, 37813 },
+ { 0x09EA, 37816 },
+ { 0x09EF, 37819 },
+ { 0x09E6, 37822 },
+ { 0x09EE, 37825 },
+ { 0x09ED, 37828 },
+ { 0x09E9, 37831 },
+ { 0x09F2, 37834 },
+ { 0x09F3, 37837 },
+ { 0x09C7, 37840 },
+ { 0x09BF, 37844 },
+ { 0x09CB, 37848 },
+ { 0x09C1, 37852 },
+ { 0x09BE, 37856 },
+ { 0x09C8, 37860 },
+ { 0x09CC, 37864 },
+ { 0x09C0, 37868 },
+ { 0x09C2, 37872 },
+ { 0x09E2, 37876 },
+ { 0x09C3, 37881 },
+ { 0x09E3, 37886 },
+ { 0x09C4, 37891 },
+ { 0x09FA, 37896 },
+ { 0x0985, 37898 },
+ { 0x098F, 37901 },
+ { 0x0987, 37904 },
+ { 0x0993, 37907 },
+ { 0x0989, 37910 },
+ { 0x0986, 37913 },
+ { 0x0990, 37916 },
+ { 0x0994, 37919 },
+ { 0x09AC, 37922 },
+ { 0x099A, 37925 },
+ { 0x09A6, 37928 },
+ { 0x0997, 37931 },
+ { 0x09B9, 37934 },
+ { 0x0988, 37937 },
+ { 0x099C, 37940 },
+ { 0x0995, 37943 },
+ { 0x09B2, 37946 },
+ { 0x09AE, 37949 },
+ { 0x09A8, 37952 },
+ { 0x09AA, 37955 },
+ { 0x09B0, 37958 },
+ { 0x09F1, 37961 },
+ { 0x09F0, 37967 },
+ { 0x09B8, 37973 },
+ { 0x09A4, 37976 },
+ { 0x098A, 37979 },
+ { 0x09AF, 37982 },
+ { 0x09AD, 37985 },
+ { 0x099B, 37988 },
+ { 0x09A1, 37991 },
+ { 0x09A7, 37994 },
+ { 0x0998, 37997 },
+ { 0x099D, 38000 },
+ { 0x0996, 38003 },
+ { 0x0999, 38006 },
+ { 0x09A3, 38009 },
+ { 0x099E, 38012 },
+ { 0x09AB, 38015 },
+ { 0x09DD, 38018 },
+ { 0x09DC, 38021 },
+ { 0x09B6, 38024 },
+ { 0x09B7, 38027 },
+ { 0x09A5, 38030 },
+ { 0x099F, 38033 },
+ { 0x09DF, 38036 },
+ { 0x09A2, 38039 },
+ { 0x09A0, 38042 },
+ { 0x09CE, 38045 },
+ { 0x098C, 38049 },
+ { 0x098B, 38053 },
+ { 0x09E1, 38057 },
+ { 0x09E0, 38061 },
+ { 0x09F4, 38065 },
+ { 0x09F8, 38069 },
+ { 0x09F5, 38077 },
+ { 0x09F7, 38081 },
+ { 0x09F6, 38085 },
+ { 0x09F9, 38089 },
+ { 0x232C, 38093 },
+ { 0x23E3, 38095 },
+ { 0x226C, 38099 },
+ { 0x2800, 38100 },
+ { 0x2801, 38103 },
+ { 0x2802, 38106 },
+ { 0x2804, 38109 },
+ { 0x2808, 38112 },
+ { 0x2810, 38115 },
+ { 0x2820, 38118 },
+ { 0x2840, 38121 },
+ { 0x2880, 38124 },
+ { 0x2803, 38127 },
+ { 0x2805, 38130 },
+ { 0x2809, 38133 },
+ { 0x2811, 38136 },
+ { 0x2821, 38139 },
+ { 0x2841, 38142 },
+ { 0x2881, 38145 },
+ { 0x2806, 38148 },
+ { 0x280A, 38151 },
+ { 0x2812, 38154 },
+ { 0x2822, 38157 },
+ { 0x2842, 38160 },
+ { 0x2882, 38163 },
+ { 0x280C, 38166 },
+ { 0x2814, 38169 },
+ { 0x2824, 38172 },
+ { 0x2844, 38175 },
+ { 0x2884, 38178 },
+ { 0x2818, 38181 },
+ { 0x2828, 38184 },
+ { 0x2848, 38187 },
+ { 0x2888, 38190 },
+ { 0x2830, 38193 },
+ { 0x2850, 38196 },
+ { 0x2890, 38199 },
+ { 0x2860, 38202 },
+ { 0x28A0, 38205 },
+ { 0x28C0, 38208 },
+ { 0x2807, 38211 },
+ { 0x280B, 38214 },
+ { 0x2813, 38217 },
+ { 0x2823, 38220 },
+ { 0x2843, 38223 },
+ { 0x2883, 38226 },
+ { 0x280D, 38229 },
+ { 0x2815, 38232 },
+ { 0x2825, 38235 },
+ { 0x2845, 38238 },
+ { 0x2885, 38241 },
+ { 0x2819, 38244 },
+ { 0x2829, 38247 },
+ { 0x2849, 38250 },
+ { 0x2889, 38253 },
+ { 0x2831, 38256 },
+ { 0x2851, 38259 },
+ { 0x2891, 38262 },
+ { 0x2861, 38265 },
+ { 0x28A1, 38268 },
+ { 0x28C1, 38271 },
+ { 0x280E, 38274 },
+ { 0x2816, 38277 },
+ { 0x2826, 38280 },
+ { 0x2846, 38283 },
+ { 0x2886, 38286 },
+ { 0x281A, 38289 },
+ { 0x282A, 38292 },
+ { 0x284A, 38295 },
+ { 0x288A, 38298 },
+ { 0x2832, 38301 },
+ { 0x2852, 38304 },
+ { 0x2892, 38307 },
+ { 0x2862, 38310 },
+ { 0x28A2, 38313 },
+ { 0x28C2, 38316 },
+ { 0x281C, 38319 },
+ { 0x282C, 38322 },
+ { 0x284C, 38325 },
+ { 0x288C, 38328 },
+ { 0x2834, 38331 },
+ { 0x2854, 38334 },
+ { 0x2894, 38337 },
+ { 0x2864, 38340 },
+ { 0x28A4, 38343 },
+ { 0x28C4, 38346 },
+ { 0x2838, 38349 },
+ { 0x2858, 38352 },
+ { 0x2898, 38355 },
+ { 0x2868, 38358 },
+ { 0x28A8, 38361 },
+ { 0x28C8, 38364 },
+ { 0x2870, 38367 },
+ { 0x28B0, 38370 },
+ { 0x28D0, 38373 },
+ { 0x28E0, 38376 },
+ { 0x280F, 38379 },
+ { 0x2817, 38382 },
+ { 0x2827, 38385 },
+ { 0x2847, 38388 },
+ { 0x2887, 38391 },
+ { 0x281B, 38394 },
+ { 0x282B, 38397 },
+ { 0x284B, 38400 },
+ { 0x288B, 38403 },
+ { 0x2833, 38406 },
+ { 0x2853, 38409 },
+ { 0x2893, 38412 },
+ { 0x2863, 38415 },
+ { 0x28A3, 38418 },
+ { 0x28C3, 38421 },
+ { 0x281D, 38424 },
+ { 0x282D, 38427 },
+ { 0x284D, 38430 },
+ { 0x288D, 38433 },
+ { 0x2835, 38436 },
+ { 0x2855, 38439 },
+ { 0x2895, 38442 },
+ { 0x2865, 38445 },
+ { 0x28A5, 38448 },
+ { 0x28C5, 38451 },
+ { 0x2839, 38454 },
+ { 0x2859, 38457 },
+ { 0x2899, 38460 },
+ { 0x2869, 38463 },
+ { 0x28A9, 38466 },
+ { 0x28C9, 38469 },
+ { 0x2871, 38472 },
+ { 0x28B1, 38475 },
+ { 0x28D1, 38478 },
+ { 0x28E1, 38481 },
+ { 0x281E, 38484 },
+ { 0x282E, 38487 },
+ { 0x284E, 38490 },
+ { 0x288E, 38493 },
+ { 0x2836, 38496 },
+ { 0x2856, 38499 },
+ { 0x2896, 38502 },
+ { 0x2866, 38505 },
+ { 0x28A6, 38508 },
+ { 0x28C6, 38511 },
+ { 0x283A, 38514 },
+ { 0x285A, 38517 },
+ { 0x289A, 38520 },
+ { 0x286A, 38523 },
+ { 0x28AA, 38526 },
+ { 0x28CA, 38529 },
+ { 0x2872, 38532 },
+ { 0x28B2, 38535 },
+ { 0x28D2, 38538 },
+ { 0x28E2, 38541 },
+ { 0x283C, 38544 },
+ { 0x285C, 38547 },
+ { 0x289C, 38550 },
+ { 0x286C, 38553 },
+ { 0x28AC, 38556 },
+ { 0x28CC, 38559 },
+ { 0x2874, 38562 },
+ { 0x28B4, 38565 },
+ { 0x28D4, 38568 },
+ { 0x28E4, 38571 },
+ { 0x2878, 38574 },
+ { 0x28B8, 38577 },
+ { 0x28D8, 38580 },
+ { 0x28E8, 38583 },
+ { 0x28F0, 38586 },
+ { 0x281F, 38589 },
+ { 0x282F, 38592 },
+ { 0x284F, 38595 },
+ { 0x288F, 38598 },
+ { 0x2837, 38601 },
+ { 0x2857, 38604 },
+ { 0x2897, 38607 },
+ { 0x2867, 38610 },
+ { 0x28A7, 38613 },
+ { 0x28C7, 38616 },
+ { 0x283B, 38619 },
+ { 0x285B, 38622 },
+ { 0x289B, 38625 },
+ { 0x286B, 38628 },
+ { 0x28AB, 38631 },
+ { 0x28CB, 38634 },
+ { 0x2873, 38637 },
+ { 0x28B3, 38640 },
+ { 0x28D3, 38643 },
+ { 0x28E3, 38646 },
+ { 0x283D, 38649 },
+ { 0x285D, 38652 },
+ { 0x289D, 38655 },
+ { 0x286D, 38658 },
+ { 0x28AD, 38661 },
+ { 0x28CD, 38664 },
+ { 0x2875, 38667 },
+ { 0x28B5, 38670 },
+ { 0x28D5, 38673 },
+ { 0x28E5, 38676 },
+ { 0x2879, 38679 },
+ { 0x28B9, 38682 },
+ { 0x28D9, 38685 },
+ { 0x28E9, 38688 },
+ { 0x28F1, 38691 },
+ { 0x283E, 38694 },
+ { 0x285E, 38697 },
+ { 0x289E, 38700 },
+ { 0x286E, 38703 },
+ { 0x28AE, 38706 },
+ { 0x28CE, 38709 },
+ { 0x2876, 38712 },
+ { 0x28B6, 38715 },
+ { 0x28D6, 38718 },
+ { 0x28E6, 38721 },
+ { 0x287A, 38724 },
+ { 0x28BA, 38727 },
+ { 0x28DA, 38730 },
+ { 0x28EA, 38733 },
+ { 0x28F2, 38736 },
+ { 0x287C, 38739 },
+ { 0x28BC, 38742 },
+ { 0x28DC, 38745 },
+ { 0x28EC, 38748 },
+ { 0x28F4, 38751 },
+ { 0x28F8, 38754 },
+ { 0x283F, 38757 },
+ { 0x285F, 38760 },
+ { 0x289F, 38763 },
+ { 0x286F, 38766 },
+ { 0x28AF, 38769 },
+ { 0x28CF, 38772 },
+ { 0x2877, 38775 },
+ { 0x28B7, 38778 },
+ { 0x28D7, 38781 },
+ { 0x28E7, 38784 },
+ { 0x287B, 38787 },
+ { 0x28BB, 38790 },
+ { 0x28DB, 38793 },
+ { 0x28EB, 38796 },
+ { 0x28F3, 38799 },
+ { 0x287D, 38802 },
+ { 0x28BD, 38805 },
+ { 0x28DD, 38808 },
+ { 0x28ED, 38811 },
+ { 0x28F5, 38814 },
+ { 0x28F9, 38817 },
+ { 0x287E, 38820 },
+ { 0x28BE, 38823 },
+ { 0x28DE, 38826 },
+ { 0x28EE, 38829 },
+ { 0x28F6, 38832 },
+ { 0x28FA, 38835 },
+ { 0x28FC, 38838 },
+ { 0x287F, 38841 },
+ { 0x28BF, 38844 },
+ { 0x28DF, 38847 },
+ { 0x28EF, 38850 },
+ { 0x28F7, 38853 },
+ { 0x28FB, 38856 },
+ { 0x28FD, 38859 },
+ { 0x28FE, 38862 },
+ { 0x28FF, 38865 },
+ { 0x2621, 38868 },
+ { 0x00B8, 38870 },
+ { 0x2299, 38871 },
+ { 0x229D, 38874 },
+ { 0x2742, 38876 },
+ { 0x2295, 38882 },
+ { 0x229A, 38884 },
+ { 0x2460, 38887 },
+ { 0x2465, 38890 },
+ { 0x2461, 38893 },
+ { 0x2464, 38896 },
+ { 0x2463, 38899 },
+ { 0x2468, 38902 },
+ { 0x24EA, 38905 },
+ { 0x2467, 38908 },
+ { 0x2466, 38911 },
+ { 0x2462, 38914 },
+ { 0x27B2, 38917 },
+ { 0x24D0, 38922 },
+ { 0x24D1, 38927 },
+ { 0x24D2, 38932 },
+ { 0x24D3, 38937 },
+ { 0x24D4, 38942 },
+ { 0x24D5, 38947 },
+ { 0x24D6, 38952 },
+ { 0x24D7, 38957 },
+ { 0x24D8, 38962 },
+ { 0x24D9, 38967 },
+ { 0x24DA, 38972 },
+ { 0x24DB, 38977 },
+ { 0x24DC, 38982 },
+ { 0x24DD, 38987 },
+ { 0x24DE, 38992 },
+ { 0x24DF, 38997 },
+ { 0x24E0, 39002 },
+ { 0x24E1, 39007 },
+ { 0x24E2, 39012 },
+ { 0x24E3, 39017 },
+ { 0x24E4, 39022 },
+ { 0x24E5, 39027 },
+ { 0x24E6, 39032 },
+ { 0x24E7, 39037 },
+ { 0x24E8, 39042 },
+ { 0x24E9, 39047 },
+ { 0x24B6, 39052 },
+ { 0x24B7, 39057 },
+ { 0x24B8, 39062 },
+ { 0x24B9, 39067 },
+ { 0x24BA, 39072 },
+ { 0x24BB, 39077 },
+ { 0x24BC, 39082 },
+ { 0x24BD, 39087 },
+ { 0x24BE, 39092 },
+ { 0x24BF, 39097 },
+ { 0x24C0, 39102 },
+ { 0x24C1, 39107 },
+ { 0x24C2, 39112 },
+ { 0x24C3, 39117 },
+ { 0x24C4, 39122 },
+ { 0x24C5, 39127 },
+ { 0x24C6, 39132 },
+ { 0x24C7, 39137 },
+ { 0x24C8, 39142 },
+ { 0x24C9, 39147 },
+ { 0x24CA, 39152 },
+ { 0x24CB, 39157 },
+ { 0x24CC, 39162 },
+ { 0x24CD, 39167 },
+ { 0x24CE, 39172 },
+ { 0x24CF, 39177 },
+ { 0x2296, 39182 },
+ { 0x2297, 39184 },
+ { 0x272A, 39186 },
+ { 0x29BE, 39189 },
+ { 0x29BF, 39192 },
+ { 0x229C, 39194 },
+ { 0x3266, 39196 },
+ { 0x3274, 39199 },
+ { 0x3268, 39203 },
+ { 0x3276, 39206 },
+ { 0x326D, 39210 },
+ { 0x327B, 39213 },
+ { 0x3267, 39217 },
+ { 0x3275, 39220 },
+ { 0x327E, 39224 },
+ { 0x3264, 39228 },
+ { 0x3272, 39231 },
+ { 0x3261, 39235 },
+ { 0x326F, 39238 },
+ { 0x3265, 39242 },
+ { 0x3273, 39245 },
+ { 0x3263, 39249 },
+ { 0x3271, 39252 },
+ { 0x3260, 39256 },
+ { 0x326E, 39259 },
+ { 0x3262, 39263 },
+ { 0x3270, 39266 },
+ { 0x3269, 39270 },
+ { 0x3277, 39273 },
+ { 0x326A, 39277 },
+ { 0x3278, 39280 },
+ { 0x326C, 39284 },
+ { 0x327A, 39287 },
+ { 0x326B, 39291 },
+ { 0x3279, 39294 },
+ { 0x327D, 39298 },
+ { 0x327C, 39302 },
+ { 0x2469, 39306 },
+ { 0x32BF, 39309 },
+ { 0x32B5, 39312 },
+ { 0x32B6, 39315 },
+ { 0x32BB, 39319 },
+ { 0x32B7, 39323 },
+ { 0x32BA, 39327 },
+ { 0x32B9, 39331 },
+ { 0x32BE, 39335 },
+ { 0x32BD, 39339 },
+ { 0x32BC, 39343 },
+ { 0x32B8, 39347 },
+ { 0x246A, 39351 },
+ { 0x325A, 39354 },
+ { 0x325B, 39357 },
+ { 0x32B1, 39361 },
+ { 0x325C, 39365 },
+ { 0x325F, 39369 },
+ { 0x325E, 39373 },
+ { 0x32B4, 39377 },
+ { 0x32B3, 39381 },
+ { 0x32B2, 39385 },
+ { 0x325D, 39389 },
+ { 0x246B, 39393 },
+ { 0x2473, 39396 },
+ { 0x3251, 39399 },
+ { 0x3256, 39403 },
+ { 0x3252, 39407 },
+ { 0x3255, 39411 },
+ { 0x3254, 39415 },
+ { 0x3259, 39419 },
+ { 0x3258, 39423 },
+ { 0x3257, 39427 },
+ { 0x3253, 39431 },
+ { 0x246E, 39435 },
+ { 0x246F, 39438 },
+ { 0x2471, 39441 },
+ { 0x246D, 39444 },
+ { 0x2472, 39447 },
+ { 0x246C, 39450 },
+ { 0x2470, 39453 },
+ { 0x3036, 39456 },
+ { 0x29B8, 39459 },
+ { 0x229B, 39462 },
+ { 0x2A38, 39465 },
+ { 0x2298, 39468 },
+ { 0x32D0, 39471 },
+ { 0x32D3, 39474 },
+ { 0x32D1, 39477 },
+ { 0x32D4, 39480 },
+ { 0x32D2, 39483 },
+ { 0x32E9, 39486 },
+ { 0x32EC, 39489 },
+ { 0x32EA, 39492 },
+ { 0x32ED, 39495 },
+ { 0x32EB, 39498 },
+ { 0x32D5, 39501 },
+ { 0x32D8, 39504 },
+ { 0x32D6, 39507 },
+ { 0x32D9, 39510 },
+ { 0x32D7, 39513 },
+ { 0x32EE, 39516 },
+ { 0x32F1, 39519 },
+ { 0x32EF, 39522 },
+ { 0x32F2, 39525 },
+ { 0x32F0, 39528 },
+ { 0x32E4, 39531 },
+ { 0x32E7, 39534 },
+ { 0x32E5, 39537 },
+ { 0x32E8, 39540 },
+ { 0x32E6, 39543 },
+ { 0x32F6, 39546 },
+ { 0x32F9, 39549 },
+ { 0x32F7, 39552 },
+ { 0x32FA, 39555 },
+ { 0x32F8, 39558 },
+ { 0x32DA, 39561 },
+ { 0x32DD, 39564 },
+ { 0x32DB, 39567 },
+ { 0x32DE, 39570 },
+ { 0x32DC, 39573 },
+ { 0x32DF, 39576 },
+ { 0x32E2, 39579 },
+ { 0x32E0, 39582 },
+ { 0x32E3, 39585 },
+ { 0x32E1, 39588 },
+ { 0x32FB, 39591 },
+ { 0x32FD, 39594 },
+ { 0x32FC, 39597 },
+ { 0x32FE, 39600 },
+ { 0x32F3, 39603 },
+ { 0x32F5, 39606 },
+ { 0x32F4, 39609 },
+ { 0x29B7, 39612 },
+ { 0x238A, 39614 },
+ { 0x29B6, 39617 },
+ { 0x32A6, 39620 },
+ { 0x3280, 39623 },
+ { 0x3285, 39626 },
+ { 0x3290, 39629 },
+ { 0x3289, 39632 },
+ { 0x3281, 39635 },
+ { 0x32A2, 39638 },
+ { 0x328B, 39641 },
+ { 0x3284, 39644 },
+ { 0x3283, 39647 },
+ { 0x3292, 39650 },
+ { 0x32A4, 39653 },
+ { 0x32A0, 39656 },
+ { 0x32A7, 39659 },
+ { 0x329A, 39662 },
+ { 0x328A, 39665 },
+ { 0x3294, 39668 },
+ { 0x3288, 39671 },
+ { 0x32A1, 39674 },
+ { 0x328D, 39677 },
+ { 0x328F, 39680 },
+ { 0x3287, 39683 },
+ { 0x3298, 39686 },
+ { 0x328E, 39689 },
+ { 0x32B0, 39692 },
+ { 0x329E, 39695 },
+ { 0x32A8, 39698 },
+ { 0x3286, 39701 },
+ { 0x3291, 39704 },
+ { 0x32AB, 39707 },
+ { 0x3282, 39710 },
+ { 0x328C, 39713 },
+ { 0x32A5, 39716 },
+ { 0x329B, 39719 },
+ { 0x3299, 39722 },
+ { 0x32A3, 39725 },
+ { 0x3293, 39728 },
+ { 0x3295, 39731 },
+ { 0x32AF, 39734 },
+ { 0x32A9, 39737 },
+ { 0x32AA, 39740 },
+ { 0x32AE, 39743 },
+ { 0x329C, 39746 },
+ { 0x329F, 39749 },
+ { 0x329D, 39752 },
+ { 0x3296, 39755 },
+ { 0x32AC, 39758 },
+ { 0x32AD, 39761 },
+ { 0x3297, 39764 },
+ { 0x29C0, 39767 },
+ { 0x2389, 39769 },
+ { 0x29C1, 39774 },
+ { 0x29B9, 39776 },
+ { 0x2A36, 39778 },
+ { 0x29BC, 39784 },
+ { 0x2332, 39788 },
+ { 0x222E, 39790 },
+ { 0x2694, 39792 },
+ { 0x7800, 39794 },
+ { 0x7801, 39797 },
+ { 0x7802, 39800 },
+ { 0x7803, 39803 },
+ { 0x7804, 39806 },
+ { 0x7805, 39809 },
+ { 0x7808, 39812 },
+ { 0x780A, 39815 },
+ { 0x780B, 39818 },
+ { 0x780C, 39821 },
+ { 0x780D, 39824 },
+ { 0x780E, 39827 },
+ { 0x780F, 39830 },
+ { 0x7810, 39833 },
+ { 0x7811, 39836 },
+ { 0x7812, 39839 },
+ { 0x7813, 39842 },
+ { 0x7814, 39845 },
+ { 0x7815, 39848 },
+ { 0x7816, 39851 },
+ { 0x7817, 39854 },
+ { 0x7818, 39857 },
+ { 0x7819, 39860 },
+ { 0x781A, 39863 },
+ { 0x781B, 39866 },
+ { 0x781C, 39869 },
+ { 0x781D, 39872 },
+ { 0x781E, 39875 },
+ { 0x781F, 39878 },
+ { 0x7820, 39881 },
+ { 0x7821, 39884 },
+ { 0x7822, 39887 },
+ { 0x7823, 39890 },
+ { 0x7824, 39893 },
+ { 0x7825, 39896 },
+ { 0x7826, 39899 },
+ { 0x7827, 39902 },
+ { 0x7828, 39905 },
+ { 0x7829, 39908 },
+ { 0x782A, 39911 },
+ { 0x782B, 39914 },
+ { 0x782C, 39917 },
+ { 0x782D, 39920 },
+ { 0x782E, 39923 },
+ { 0x782F, 39926 },
+ { 0x7830, 39929 },
+ { 0x7831, 39932 },
+ { 0x7832, 39935 },
+ { 0x7833, 39938 },
+ { 0x7834, 39941 },
+ { 0x7835, 39944 },
+ { 0x7837, 39947 },
+ { 0x7838, 39950 },
+ { 0x783C, 39953 },
+ { 0x783F, 39956 },
+ { 0x2396, 39959 },
+ { 0x7438, 39963 },
+ { 0x7434, 39967 },
+ { 0x7441, 39971 },
+ { 0x744A, 39975 },
+ { 0x744B, 39979 },
+ { 0x744C, 39983 },
+ { 0x7449, 39987 },
+ { 0x7445, 39991 },
+ { 0x744F, 39995 },
+ { 0x744E, 39999 },
+ { 0x7435, 40003 },
+ { 0x7436, 40007 },
+ { 0x743A, 40011 },
+ { 0x743C, 40015 },
+ { 0x744D, 40019 },
+ { 0x7447, 40023 },
+ { 0x7443, 40027 },
+ { 0x7440, 40031 },
+ { 0x743E, 40035 },
+ { 0x743F, 40039 },
+ { 0x7439, 40043 },
+ { 0x743B, 40047 },
+ { 0x7442, 40051 },
+ { 0x7437, 40055 },
+ { 0x7446, 40059 },
+ { 0x743D, 40063 },
+ { 0x742A, 40067 },
+ { 0x7429, 40072 },
+ { 0x7428, 40077 },
+ { 0x742C, 40082 },
+ { 0x742B, 40087 },
+ { 0x742D, 40092 },
+ { 0x7444, 40097 },
+ { 0x7448, 40101 },
+ { 0x7430, 40105 },
+ { 0x742F, 40110 },
+ { 0x742E, 40115 },
+ { 0x7432, 40120 },
+ { 0x7431, 40125 },
+ { 0x7433, 40130 },
+ { 0x7410, 40135 },
+ { 0x740C, 40139 },
+ { 0x7419, 40143 },
+ { 0x7422, 40147 },
+ { 0x7423, 40151 },
+ { 0x7424, 40155 },
+ { 0x7421, 40159 },
+ { 0x741D, 40163 },
+ { 0x7427, 40167 },
+ { 0x7426, 40171 },
+ { 0x740D, 40175 },
+ { 0x740E, 40179 },
+ { 0x7412, 40183 },
+ { 0x7414, 40187 },
+ { 0x7425, 40191 },
+ { 0x741F, 40195 },
+ { 0x741B, 40199 },
+ { 0x7418, 40203 },
+ { 0x7416, 40207 },
+ { 0x7417, 40211 },
+ { 0x7411, 40215 },
+ { 0x7413, 40219 },
+ { 0x741A, 40223 },
+ { 0x740F, 40227 },
+ { 0x741E, 40231 },
+ { 0x7415, 40235 },
+ { 0x7402, 40239 },
+ { 0x7401, 40244 },
+ { 0x7400, 40249 },
+ { 0x7404, 40254 },
+ { 0x7403, 40259 },
+ { 0x7405, 40264 },
+ { 0x741C, 40269 },
+ { 0x7420, 40273 },
+ { 0x7408, 40277 },
+ { 0x7407, 40282 },
+ { 0x7406, 40287 },
+ { 0x740A, 40292 },
+ { 0x7409, 40297 },
+ { 0x740B, 40302 },
+ { 0x2B18, 40307 },
+ { 0x2B16, 40312 },
+ { 0x2B17, 40317 },
+ { 0x2B19, 40322 },
+ { 0x22C4, 40327 },
+ { 0x2780, 40329 },
+ { 0x2785, 40334 },
+ { 0x2781, 40339 },
+ { 0x2784, 40344 },
+ { 0x2783, 40349 },
+ { 0x2788, 40354 },
+ { 0x2787, 40359 },
+ { 0x2786, 40364 },
+ { 0x2782, 40369 },
+ { 0x2789, 40374 },
+ { 0x2776, 40379 },
+ { 0x277B, 40384 },
+ { 0x2777, 40389 },
+ { 0x277A, 40394 },
+ { 0x2779, 40399 },
+ { 0x277E, 40404 },
+ { 0x277D, 40409 },
+ { 0x277C, 40414 },
+ { 0x2778, 40419 },
+ { 0x277F, 40424 },
+ { 0x278A, 40429 },
+ { 0x278F, 40435 },
+ { 0x278B, 40441 },
+ { 0x278E, 40447 },
+ { 0x278D, 40453 },
+ { 0x2792, 40459 },
+ { 0x2791, 40465 },
+ { 0x2790, 40471 },
+ { 0x278C, 40477 },
+ { 0x2793, 40483 },
+ { 0x2223, 40489 },
+ { 0x26AE, 40490 },
+ { 0x26A3, 40492 },
+ { 0x26A2, 40495 },
+ { 0x20AF, 40498 },
+ { 0x2208, 40500 },
+ { 0x22F5, 40502 },
+ { 0x22F9, 40507 },
+ { 0x22F2, 40513 },
+ { 0x22F6, 40519 },
+ { 0x22F8, 40523 },
+ { 0x22F3, 40527 },
+ { 0x27D2, 40537 },
+ { 0x2AD9, 40541 },
+ { 0x292F, 40545 },
+ { 0x292C, 40551 },
+ { 0x25C9, 40556 },
+ { 0x2ADC, 40557 },
+ { 0x26B1, 40558 },
+ { 0x20B2, 40560 },
+ { 0x1734, 40562 },
+ { 0x1732, 40565 },
+ { 0x1733, 40569 },
+ { 0x1720, 40573 },
+ { 0x1721, 40576 },
+ { 0x1722, 40579 },
+ { 0x172A, 40582 },
+ { 0x1727, 40585 },
+ { 0x1724, 40588 },
+ { 0x1731, 40591 },
+ { 0x1723, 40594 },
+ { 0x172E, 40597 },
+ { 0x172B, 40600 },
+ { 0x1728, 40603 },
+ { 0x1729, 40606 },
+ { 0x172D, 40609 },
+ { 0x1730, 40612 },
+ { 0x1726, 40615 },
+ { 0x172F, 40618 },
+ { 0x172C, 40621 },
+ { 0x1725, 40624 },
+ { 0x20B4, 40627 },
+ { 0x206C, 40629 },
+ { 0x206A, 40633 },
+ { 0x25D9, 40636 },
+ { 0x25D8, 40639 },
+ { 0x2643, 40641 },
+ { 0x0CD6, 40642 },
+ { 0x0CBC, 40646 },
+ { 0x0CCD, 40649 },
+ { 0x0C83, 40652 },
+ { 0x0C82, 40655 },
+ { 0x0CBD, 40658 },
+ { 0x0CF1, 40661 },
+ { 0x0CF2, 40664 },
+ { 0x0CE7, 40667 },
+ { 0x0CEC, 40670 },
+ { 0x0CE8, 40673 },
+ { 0x0CEB, 40676 },
+ { 0x0CEA, 40679 },
+ { 0x0CEF, 40682 },
+ { 0x0CE6, 40685 },
+ { 0x0CEE, 40688 },
+ { 0x0CED, 40691 },
+ { 0x0CE9, 40694 },
+ { 0x0CC6, 40697 },
+ { 0x0CBF, 40701 },
+ { 0x0CCA, 40705 },
+ { 0x0CC1, 40709 },
+ { 0x0CBE, 40713 },
+ { 0x0CC8, 40717 },
+ { 0x0CCC, 40721 },
+ { 0x0CC7, 40725 },
+ { 0x0CC0, 40729 },
+ { 0x0CCB, 40733 },
+ { 0x0CC2, 40737 },
+ { 0x0CE2, 40741 },
+ { 0x0CC3, 40746 },
+ { 0x0CE3, 40751 },
+ { 0x0CC4, 40756 },
+ { 0x0CD5, 40761 },
+ { 0x0C85, 40764 },
+ { 0x0C8E, 40767 },
+ { 0x0C87, 40770 },
+ { 0x0C92, 40773 },
+ { 0x0C89, 40776 },
+ { 0x0C86, 40779 },
+ { 0x0C90, 40782 },
+ { 0x0C94, 40785 },
+ { 0x0CAC, 40788 },
+ { 0x0C9A, 40791 },
+ { 0x0CA6, 40794 },
+ { 0x0C8F, 40797 },
+ { 0x0CDE, 40800 },
+ { 0x0C97, 40803 },
+ { 0x0CB9, 40806 },
+ { 0x0C88, 40809 },
+ { 0x0C9C, 40812 },
+ { 0x0C95, 40815 },
+ { 0x0CB2, 40818 },
+ { 0x0CAE, 40821 },
+ { 0x0CA8, 40824 },
+ { 0x0C93, 40827 },
+ { 0x0CAA, 40830 },
+ { 0x0CB0, 40833 },
+ { 0x0CB8, 40836 },
+ { 0x0CA4, 40839 },
+ { 0x0C8A, 40842 },
+ { 0x0CB5, 40845 },
+ { 0x0CAF, 40848 },
+ { 0x0CAD, 40851 },
+ { 0x0C9B, 40854 },
+ { 0x0CA1, 40857 },
+ { 0x0CA7, 40860 },
+ { 0x0C98, 40863 },
+ { 0x0C9D, 40866 },
+ { 0x0C96, 40869 },
+ { 0x0CB3, 40872 },
+ { 0x0C99, 40875 },
+ { 0x0CA3, 40878 },
+ { 0x0C9E, 40881 },
+ { 0x0CAB, 40884 },
+ { 0x0CB1, 40887 },
+ { 0x0CB6, 40890 },
+ { 0x0CB7, 40893 },
+ { 0x0CA5, 40896 },
+ { 0x0C9F, 40899 },
+ { 0x0CA2, 40902 },
+ { 0x0CA0, 40905 },
+ { 0x0C8C, 40908 },
+ { 0x0C8B, 40912 },
+ { 0x0CE1, 40916 },
+ { 0x0CE0, 40920 },
+ { 0x32CF, 40924 },
+ { 0x2228, 40927 },
+ { 0x2A52, 40929 },
+ { 0x2A62, 40934 },
+ { 0x2A63, 40939 },
+ { 0x2A5B, 40944 },
+ { 0x2A5D, 40949 },
+ { 0x2A59, 40954 },
+ { 0x2227, 40959 },
+ { 0x2A51, 40961 },
+ { 0x2A5E, 40966 },
+ { 0x2A60, 40971 },
+ { 0x2A5A, 40976 },
+ { 0x2A5F, 40981 },
+ { 0x2A5C, 40985 },
+ { 0x25CA, 40990 },
+ { 0x27E0, 40991 },
+ { 0xA010, 40996 },
+ { 0xA019, 41001 },
+ { 0xA007, 41006 },
+ { 0xA004, 41011 },
+ { 0xA015, 41015 },
+ { 0xA01E, 41020 },
+ { 0xA00C, 41025 },
+ { 0xA011, 41030 },
+ { 0xA01A, 41035 },
+ { 0xA008, 41040 },
+ { 0xA02B, 41045 },
+ { 0xA000, 41048 },
+ { 0xA014, 41052 },
+ { 0xA01D, 41057 },
+ { 0xA00B, 41062 },
+ { 0xA013, 41067 },
+ { 0xA01C, 41072 },
+ { 0xA00A, 41077 },
+ { 0xA018, 41082 },
+ { 0xA021, 41087 },
+ { 0xA00F, 41092 },
+ { 0xA022, 41097 },
+ { 0xA002, 41100 },
+ { 0xA017, 41104 },
+ { 0xA020, 41109 },
+ { 0xA00E, 41114 },
+ { 0xA005, 41119 },
+ { 0xA02A, 41123 },
+ { 0xA003, 41126 },
+ { 0xA016, 41130 },
+ { 0xA01F, 41135 },
+ { 0xA00D, 41140 },
+ { 0xA001, 41145 },
+ { 0xA012, 41149 },
+ { 0xA01B, 41154 },
+ { 0xA009, 41159 },
+ { 0xA006, 41164 },
+ { 0xA028, 41168 },
+ { 0xA024, 41171 },
+ { 0xA023, 41174 },
+ { 0xA026, 41177 },
+ { 0xA027, 41180 },
+ { 0xA029, 41183 },
+ { 0xA025, 41186 },
+ { 0x2720, 41189 },
+ { 0x263F, 41191 },
+ { 0x22EF, 41192 },
+ { 0x9121, 41195 },
+ { 0x9122, 41199 },
+ { 0x9123, 41203 },
+ { 0x9124, 41209 },
+ { 0x911E, 41215 },
+ { 0x911F, 41219 },
+ { 0x9120, 41225 },
+ { 0x9143, 41231 },
+ { 0x918E, 41235 },
+ { 0x910A, 41238 },
+ { 0x9196, 41242 },
+ { 0x9135, 41245 },
+ { 0x9109, 41249 },
+ { 0x91A8, 41253 },
+ { 0x9176, 41258 },
+ { 0x9174, 41262 },
+ { 0x9178, 41266 },
+ { 0x917A, 41270 },
+ { 0x9164, 41274 },
+ { 0x9142, 41280 },
+ { 0x91DD, 41286 },
+ { 0x910C, 41290 },
+ { 0x91B4, 41293 },
+ { 0x91B5, 41296 },
+ { 0x9125, 41300 },
+ { 0x9126, 41304 },
+ { 0x912C, 41308 },
+ { 0x912D, 41312 },
+ { 0x91C0, 41316 },
+ { 0x91BF, 41320 },
+ { 0x915E, 41324 },
+ { 0x913C, 41328 },
+ { 0x91B0, 41332 },
+ { 0x9106, 41337 },
+ { 0x9153, 41342 },
+ { 0x9152, 41347 },
+ { 0x9159, 41352 },
+ { 0x9144, 41356 },
+ { 0x9197, 41360 },
+ { 0x919A, 41363 },
+ { 0x9199, 41367 },
+ { 0x9157, 41371 },
+ { 0x91B3, 41375 },
+ { 0x9175, 41379 },
+ { 0x9173, 41383 },
+ { 0x9177, 41387 },
+ { 0x9179, 41391 },
+ { 0x9114, 41395 },
+ { 0x915C, 41398 },
+ { 0x91CF, 41401 },
+ { 0x9102, 41404 },
+ { 0x9191, 41408 },
+ { 0x9195, 41411 },
+ { 0x9194, 41417 },
+ { 0x91B7, 41422 },
+ { 0x91C1, 41425 },
+ { 0x91C2, 41430 },
+ { 0x9190, 41435 },
+ { 0x913A, 41438 },
+ { 0x91AF, 41442 },
+ { 0x91AE, 41447 },
+ { 0x918F, 41451 },
+ { 0x9107, 41454 },
+ { 0x910B, 41459 },
+ { 0x9130, 41462 },
+ { 0x9131, 41466 },
+ { 0x9105, 41470 },
+ { 0x91D3, 41474 },
+ { 0x915D, 41477 },
+ { 0x913B, 41481 },
+ { 0x9112, 41485 },
+ { 0x91B8, 41489 },
+ { 0x91C3, 41492 },
+ { 0x9145, 41496 },
+ { 0x91D5, 41501 },
+ { 0x9134, 41504 },
+ { 0x9104, 41508 },
+ { 0x91A9, 41512 },
+ { 0x912B, 41516 },
+ { 0x912A, 41520 },
+ { 0x9101, 41524 },
+ { 0x9160, 41528 },
+ { 0x913E, 41532 },
+ { 0x91B6, 41536 },
+ { 0x91BB, 41539 },
+ { 0x91C5, 41542 },
+ { 0x91BC, 41546 },
+ { 0x9136, 41550 },
+ { 0x9137, 41554 },
+ { 0x9108, 41558 },
+ { 0x9100, 41562 },
+ { 0x91D2, 41566 },
+ { 0x9147, 41570 },
+ { 0x9146, 41575 },
+ { 0x918D, 41580 },
+ { 0x91C7, 41583 },
+ { 0x91C9, 41590 },
+ { 0x91C8, 41598 },
+ { 0x91CA, 41605 },
+ { 0x91CB, 41612 },
+ { 0x91CC, 41619 },
+ { 0x91CD, 41627 },
+ { 0x91CE, 41635 },
+ { 0x9115, 41643 },
+ { 0x9113, 41646 },
+ { 0x915B, 41649 },
+ { 0x915A, 41654 },
+ { 0x9110, 41659 },
+ { 0x9111, 41662 },
+ { 0x912E, 41666 },
+ { 0x912F, 41670 },
+ { 0x91D4, 41674 },
+ { 0x915F, 41677 },
+ { 0x913D, 41681 },
+ { 0x9133, 41685 },
+ { 0x9132, 41690 },
+ { 0x9103, 41695 },
+ { 0x91D7, 41700 },
+ { 0x916A, 41703 },
+ { 0x916B, 41707 },
+ { 0x916C, 41711 },
+ { 0x9198, 41715 },
+ { 0x9129, 41719 },
+ { 0x9158, 41724 },
+ { 0x9116, 41728 },
+ { 0x919B, 41732 },
+ { 0x919C, 41736 },
+ { 0x919D, 41740 },
+ { 0x919E, 41744 },
+ { 0x919F, 41748 },
+ { 0x91A0, 41752 },
+ { 0x91A1, 41756 },
+ { 0x91A2, 41760 },
+ { 0x91A3, 41764 },
+ { 0x91A4, 41768 },
+ { 0x91A5, 41772 },
+ { 0x910D, 41776 },
+ { 0x910E, 41780 },
+ { 0x910F, 41784 },
+ { 0x911B, 41788 },
+ { 0x91D8, 41792 },
+ { 0x91DC, 41795 },
+ { 0x9149, 41799 },
+ { 0x9151, 41805 },
+ { 0x9150, 41812 },
+ { 0x9148, 41819 },
+ { 0x914F, 41825 },
+ { 0x914E, 41831 },
+ { 0x914B, 41837 },
+ { 0x914A, 41843 },
+ { 0x914D, 41849 },
+ { 0x914C, 41855 },
+ { 0x9117, 41861 },
+ { 0x91AB, 41865 },
+ { 0x9186, 41870 },
+ { 0x9189, 41874 },
+ { 0x9185, 41878 },
+ { 0x91AA, 41882 },
+ { 0x9187, 41887 },
+ { 0x91AD, 41891 },
+ { 0x9165, 41896 },
+ { 0x9182, 41900 },
+ { 0x9188, 41904 },
+ { 0x917B, 41908 },
+ { 0x918A, 41912 },
+ { 0x916E, 41917 },
+ { 0x916F, 41921 },
+ { 0x9170, 41925 },
+ { 0x9171, 41929 },
+ { 0x9172, 41933 },
+ { 0x917D, 41937 },
+ { 0x918B, 41941 },
+ { 0x917F, 41946 },
+ { 0x91AC, 41950 },
+ { 0x917C, 41954 },
+ { 0x9167, 41958 },
+ { 0x9168, 41962 },
+ { 0x9169, 41966 },
+ { 0x916D, 41970 },
+ { 0x9166, 41975 },
+ { 0x917E, 41980 },
+ { 0x9181, 41984 },
+ { 0x9180, 41988 },
+ { 0x9192, 41992 },
+ { 0x911A, 41995 },
+ { 0x9119, 41999 },
+ { 0x91B1, 42003 },
+ { 0x91B2, 42007 },
+ { 0x91D0, 42011 },
+ { 0x91D1, 42016 },
+ { 0x91D9, 42021 },
+ { 0x91DA, 42024 },
+ { 0x91D6, 42028 },
+ { 0x91DB, 42031 },
+ { 0x9161, 42035 },
+ { 0x913F, 42039 },
+ { 0x9183, 42043 },
+ { 0x9184, 42047 },
+ { 0x91C4, 42051 },
+ { 0x91BA, 42055 },
+ { 0x91B9, 42059 },
+ { 0x91C6, 42063 },
+ { 0x91BE, 42067 },
+ { 0x91BD, 42071 },
+ { 0x911C, 42075 },
+ { 0x9118, 42079 },
+ { 0x9193, 42083 },
+ { 0x911D, 42086 },
+ { 0x91A6, 42090 },
+ { 0x91A7, 42093 },
+ { 0x9156, 42096 },
+ { 0x918C, 42100 },
+ { 0x9138, 42103 },
+ { 0x9139, 42107 },
+ { 0x9163, 42111 },
+ { 0x9141, 42115 },
+ { 0x9162, 42119 },
+ { 0x9140, 42123 },
+ { 0x9155, 42127 },
+ { 0x9154, 42133 },
+ { 0x1091, 42139 },
+ { 0x1096, 42143 },
+ { 0x1092, 42147 },
+ { 0x1095, 42151 },
+ { 0x1094, 42155 },
+ { 0x1099, 42159 },
+ { 0x1090, 42163 },
+ { 0x1098, 42167 },
+ { 0x1097, 42171 },
+ { 0x1093, 42175 },
+ { 0x1037, 42179 },
+ { 0x103A, 42183 },
+ { 0x1087, 42186 },
+ { 0x1088, 42190 },
+ { 0x1089, 42194 },
+ { 0x108A, 42198 },
+ { 0x108B, 42202 },
+ { 0x108C, 42207 },
+ { 0x108D, 42212 },
+ { 0x108F, 42218 },
+ { 0x104A, 42223 },
+ { 0x1039, 42227 },
+ { 0x104B, 42230 },
+ { 0x1038, 42233 },
+ { 0x1069, 42236 },
+ { 0x106A, 42242 },
+ { 0x106B, 42248 },
+ { 0x106C, 42254 },
+ { 0x106D, 42260 },
+ { 0x1036, 42266 },
+ { 0x1064, 42269 },
+ { 0x1063, 42276 },
+ { 0x1041, 42282 },
+ { 0x1046, 42285 },
+ { 0x1042, 42288 },
+ { 0x1045, 42291 },
+ { 0x1044, 42294 },
+ { 0x1049, 42297 },
+ { 0x1040, 42300 },
+ { 0x1048, 42303 },
+ { 0x1047, 42306 },
+ { 0x1043, 42309 },
+ { 0x1031, 42312 },
+ { 0x1035, 42316 },
+ { 0x102D, 42321 },
+ { 0x102F, 42325 },
+ { 0x102C, 42329 },
+ { 0x1032, 42333 },
+ { 0x102E, 42337 },
+ { 0x1030, 42341 },
+ { 0x1034, 42345 },
+ { 0x1033, 42350 },
+ { 0x1071, 42355 },
+ { 0x1062, 42361 },
+ { 0x1084, 42367 },
+ { 0x1085, 42372 },
+ { 0x1083, 42378 },
+ { 0x1086, 42383 },
+ { 0x102B, 42389 },
+ { 0x1073, 42394 },
+ { 0x1074, 42399 },
+ { 0x1072, 42404 },
+ { 0x1058, 42409 },
+ { 0x1056, 42414 },
+ { 0x1059, 42419 },
+ { 0x1057, 42424 },
+ { 0x1067, 42429 },
+ { 0x1068, 42436 },
+ { 0x1021, 42443 },
+ { 0x1027, 42446 },
+ { 0x1023, 42449 },
+ { 0x1029, 42452 },
+ { 0x1025, 42455 },
+ { 0x102A, 42458 },
+ { 0x1017, 42461 },
+ { 0x1005, 42464 },
+ { 0x1012, 42467 },
+ { 0x1002, 42470 },
+ { 0x101F, 42473 },
+ { 0x1024, 42476 },
+ { 0x1007, 42479 },
+ { 0x1000, 42482 },
+ { 0x101C, 42485 },
+ { 0x1019, 42488 },
+ { 0x1014, 42491 },
+ { 0x1015, 42494 },
+ { 0x101B, 42497 },
+ { 0x101E, 42500 },
+ { 0x1010, 42503 },
+ { 0x1026, 42506 },
+ { 0x101D, 42509 },
+ { 0x101A, 42512 },
+ { 0x1018, 42515 },
+ { 0x1006, 42518 },
+ { 0x100D, 42521 },
+ { 0x1013, 42524 },
+ { 0x1003, 42527 },
+ { 0x1008, 42530 },
+ { 0x1001, 42533 },
+ { 0x1020, 42536 },
+ { 0x1028, 42539 },
+ { 0x105C, 42543 },
+ { 0x105D, 42547 },
+ { 0x105B, 42551 },
+ { 0x105A, 42555 },
+ { 0x1004, 42559 },
+ { 0x100F, 42562 },
+ { 0x1009, 42565 },
+ { 0x1016, 42568 },
+ { 0x1050, 42571 },
+ { 0x1051, 42574 },
+ { 0x1011, 42577 },
+ { 0x100B, 42580 },
+ { 0x100E, 42583 },
+ { 0x100A, 42586 },
+ { 0x1061, 42589 },
+ { 0x1022, 42594 },
+ { 0x107F, 42598 },
+ { 0x1078, 42602 },
+ { 0x107B, 42606 },
+ { 0x107E, 42610 },
+ { 0x1077, 42614 },
+ { 0x1081, 42618 },
+ { 0x1075, 42622 },
+ { 0x107C, 42626 },
+ { 0x1079, 42630 },
+ { 0x1076, 42634 },
+ { 0x107A, 42638 },
+ { 0x107D, 42642 },
+ { 0x1080, 42646 },
+ { 0x100C, 42650 },
+ { 0x103F, 42653 },
+ { 0x108E, 42657 },
+ { 0x106E, 42662 },
+ { 0x106F, 42668 },
+ { 0x1070, 42674 },
+ { 0x1054, 42680 },
+ { 0x1052, 42684 },
+ { 0x1055, 42688 },
+ { 0x1053, 42692 },
+ { 0x1066, 42696 },
+ { 0x1065, 42702 },
+ { 0x109E, 42708 },
+ { 0x109F, 42712 },
+ { 0x104F, 42716 },
+ { 0x104C, 42719 },
+ { 0x104D, 42722 },
+ { 0x104E, 42725 },
+ { 0x1060, 42728 },
+ { 0x105F, 42734 },
+ { 0x105E, 42740 },
+ { 0x1082, 42746 },
+ { 0x103E, 42752 },
+ { 0x103C, 42757 },
+ { 0x103D, 42762 },
+ { 0x103B, 42767 },
+ { 0x22AF, 42772 },
+ { 0x2288, 42779 },
+ { 0x2289, 42786 },
+ { 0x2270, 42793 },
+ { 0x2274, 42798 },
+ { 0x2278, 42803 },
+ { 0x2271, 42807 },
+ { 0x2279, 42812 },
+ { 0x2275, 42816 },
+ { 0x2247, 42821 },
+ { 0x2646, 42827 },
+ { 0x206F, 42828 },
+ { 0x27AF, 42831 },
+ { 0x27B1, 42837 },
+ { 0x29A6, 42843 },
+ { 0x29A7, 42847 },
+ { 0x74A1, 42851 },
+ { 0x74A6, 42854 },
+ { 0x74A2, 42857 },
+ { 0x74A5, 42860 },
+ { 0x74A4, 42863 },
+ { 0x74A9, 42866 },
+ { 0x74A0, 42869 },
+ { 0x74A8, 42872 },
+ { 0x74A7, 42875 },
+ { 0x74A3, 42878 },
+ { 0x7496, 42881 },
+ { 0x7497, 42884 },
+ { 0x7498, 42887 },
+ { 0x7499, 42890 },
+ { 0x749A, 42893 },
+ { 0x749B, 42896 },
+ { 0x7481, 42899 },
+ { 0x749C, 42902 },
+ { 0x748D, 42905 },
+ { 0x748C, 42908 },
+ { 0x7494, 42911 },
+ { 0x7483, 42914 },
+ { 0x749D, 42917 },
+ { 0x7487, 42920 },
+ { 0x7488, 42923 },
+ { 0x7482, 42926 },
+ { 0x7484, 42929 },
+ { 0x7495, 42932 },
+ { 0x748A, 42935 },
+ { 0x7485, 42938 },
+ { 0x7493, 42941 },
+ { 0x7480, 42944 },
+ { 0x748B, 42947 },
+ { 0x7486, 42950 },
+ { 0x748F, 42953 },
+ { 0x7490, 42956 },
+ { 0x7491, 42959 },
+ { 0x7492, 42962 },
+ { 0x748E, 42965 },
+ { 0x7489, 42968 },
+ { 0x2202, 42971 },
+ { 0x0025, 42973 },
+ { 0x00B6, 42975 },
+ { 0x2669, 42977 },
+ { 0x23B7, 42979 },
+ { 0x2B41, 42982 },
+ { 0x2B47, 42988 },
+ { 0x005C, 42994 },
+ { 0x29F7, 42996 },
+ { 0x29F5, 43001 },
+ { 0x27C8, 43004 },
+ { 0x2765, 43008 },
+ { 0x2767, 43013 },
+ { 0x213A, 43017 },
+ { 0x2613, 43020 },
+ { 0x2108, 43021 },
+ { 0x00A7, 43022 },
+ { 0x2313, 43024 },
+ { 0x2120, 43025 },
+ { 0x26B9, 43027 },
+ { 0x746D, 43028 },
+ { 0x7466, 43031 },
+ { 0x746A, 43034 },
+ { 0x7479, 43037 },
+ { 0x7455, 43040 },
+ { 0x7473, 43043 },
+ { 0x7469, 43046 },
+ { 0x7471, 43049 },
+ { 0x747A, 43052 },
+ { 0x7478, 43055 },
+ { 0x7468, 43058 },
+ { 0x7477, 43061 },
+ { 0x745A, 43064 },
+ { 0x747D, 43067 },
+ { 0x7470, 43070 },
+ { 0x7467, 43073 },
+ { 0x747B, 43076 },
+ { 0x7453, 43079 },
+ { 0x745C, 43082 },
+ { 0x747E, 43085 },
+ { 0x7472, 43088 },
+ { 0x746F, 43091 },
+ { 0x7474, 43094 },
+ { 0x7476, 43097 },
+ { 0x746C, 43100 },
+ { 0x7451, 43103 },
+ { 0x745D, 43106 },
+ { 0x7462, 43109 },
+ { 0x7458, 43112 },
+ { 0x747F, 43115 },
+ { 0x745F, 43118 },
+ { 0x745B, 43121 },
+ { 0x7459, 43124 },
+ { 0x7452, 43127 },
+ { 0x7464, 43130 },
+ { 0x7465, 43133 },
+ { 0x7475, 43136 },
+ { 0x7450, 43139 },
+ { 0x746E, 43142 },
+ { 0x7456, 43145 },
+ { 0x745E, 43148 },
+ { 0x746B, 43151 },
+ { 0x747C, 43154 },
+ { 0x7463, 43157 },
+ { 0x7461, 43160 },
+ { 0x7454, 43163 },
+ { 0x7457, 43166 },
+ { 0x7460, 43169 },
+ { 0x29E2, 43172 },
+ { 0x2A9D, 43174 },
+ { 0x2A9E, 43177 },
+ { 0x2A9F, 43180 },
+ { 0x2AA0, 43186 },
+ { 0x2A6C, 43192 },
+ { 0x0DCA, 43195 },
+ { 0x0D83, 43198 },
+ { 0x0D82, 43201 },
+ { 0x0DDA, 43204 },
+ { 0x0DD3, 43209 },
+ { 0x0DD6, 43214 },
+ { 0x0DD1, 43219 },
+ { 0x0DF3, 43224 },
+ { 0x0DF2, 43229 },
+ { 0x0DD2, 43234 },
+ { 0x0DD4, 43239 },
+ { 0x0DD0, 43244 },
+ { 0x0DDB, 43249 },
+ { 0x0DD9, 43254 },
+ { 0x0DDD, 43258 },
+ { 0x0DDC, 43265 },
+ { 0x0DDE, 43271 },
+ { 0x0DCF, 43277 },
+ { 0x0DDF, 43281 },
+ { 0x0DD8, 43285 },
+ { 0x0DB9, 43289 },
+ { 0x0D85, 43293 },
+ { 0x0D91, 43296 },
+ { 0x0D89, 43299 },
+ { 0x0D94, 43302 },
+ { 0x0D8B, 43305 },
+ { 0x0D86, 43308 },
+ { 0x0D87, 43311 },
+ { 0x0D93, 43314 },
+ { 0x0D96, 43317 },
+ { 0x0DBD, 43320 },
+ { 0x0DB1, 43324 },
+ { 0x0DC3, 43328 },
+ { 0x0D92, 43332 },
+ { 0x0DC6, 43335 },
+ { 0x0DC4, 43338 },
+ { 0x0D8A, 43341 },
+ { 0x0D9E, 43344 },
+ { 0x0DB8, 43348 },
+ { 0x0D95, 43351 },
+ { 0x0DBB, 43354 },
+ { 0x0DB3, 43357 },
+ { 0x0D9F, 43361 },
+ { 0x0DA6, 43365 },
+ { 0x0DAC, 43369 },
+ { 0x0DC1, 43373 },
+ { 0x0DA5, 43377 },
+ { 0x0DA4, 43382 },
+ { 0x0D8C, 43386 },
+ { 0x0DC0, 43389 },
+ { 0x0DBA, 43392 },
+ { 0x0D88, 43395 },
+ { 0x0D8F, 43398 },
+ { 0x0D8D, 43401 },
+ { 0x0D90, 43404 },
+ { 0x0D8E, 43407 },
+ { 0x0DC5, 43410 },
+ { 0x0DAB, 43414 },
+ { 0x0DC2, 43418 },
+ { 0x0DB6, 43422 },
+ { 0x0DA0, 43426 },
+ { 0x0DAF, 43430 },
+ { 0x0D9C, 43434 },
+ { 0x0DA2, 43438 },
+ { 0x0D9A, 43442 },
+ { 0x0DB4, 43446 },
+ { 0x0DAD, 43450 },
+ { 0x0DA9, 43454 },
+ { 0x0DA7, 43458 },
+ { 0x0DB7, 43462 },
+ { 0x0DA1, 43466 },
+ { 0x0DB0, 43470 },
+ { 0x0D9D, 43474 },
+ { 0x0DA3, 43478 },
+ { 0x0D9B, 43482 },
+ { 0x0DB5, 43486 },
+ { 0x0DAE, 43490 },
+ { 0x0DAA, 43494 },
+ { 0x0DA8, 43498 },
+ { 0x0DF4, 43502 },
+ { 0x273A, 43505 },
+ { 0x2A95, 43508 },
+ { 0x2A97, 43513 },
+ { 0x2A96, 43521 },
+ { 0x2A98, 43526 },
+ { 0x2A57, 43534 },
+ { 0x2A58, 43537 },
+ { 0x2AAA, 43540 },
+ { 0x2AAC, 43542 },
+ { 0x2603, 43547 },
+ { 0x002F, 43548 },
+ { 0x29F6, 43549 },
+ { 0x2747, 43552 },
+ { 0x22A1, 43553 },
+ { 0x2E2C, 43556 },
+ { 0x229E, 43560 },
+ { 0x229F, 43562 },
+ { 0x29C7, 43564 },
+ { 0x22A0, 43567 },
+ { 0x29C4, 43569 },
+ { 0x29C8, 43573 },
+ { 0x29C5, 43575 },
+ { 0x29C6, 43579 },
+ { 0x222F, 43581 },
+ { 0x1714, 43583 },
+ { 0x1712, 43586 },
+ { 0x1713, 43590 },
+ { 0x1700, 43594 },
+ { 0x1701, 43597 },
+ { 0x1702, 43600 },
+ { 0x170A, 43603 },
+ { 0x1707, 43606 },
+ { 0x1704, 43609 },
+ { 0x1711, 43612 },
+ { 0x1703, 43615 },
+ { 0x170E, 43618 },
+ { 0x170B, 43621 },
+ { 0x1708, 43624 },
+ { 0x1709, 43627 },
+ { 0x1710, 43630 },
+ { 0x1706, 43633 },
+ { 0x170F, 43636 },
+ { 0x170C, 43639 },
+ { 0x1705, 43642 },
+ { 0x27A2, 43645 },
+ { 0x27A3, 43649 },
+ { 0x0FBE, 43653 },
+ { 0x0FBF, 43657 },
+ { 0x0F3D, 43664 },
+ { 0x0F3C, 43669 },
+ { 0x0F38, 43674 },
+ { 0x0F3B, 43678 },
+ { 0x0F3A, 43683 },
+ { 0x0F11, 43688 },
+ { 0x0F39, 43694 },
+ { 0x0F07, 43698 },
+ { 0x0F0A, 43705 },
+ { 0x0F03, 43711 },
+ { 0x0F02, 43720 },
+ { 0x0F01, 43729 },
+ { 0x0F14, 43736 },
+ { 0x0F35, 43740 },
+ { 0x0F37, 43746 },
+ { 0x0F0E, 43752 },
+ { 0x0FD2, 43756 },
+ { 0x0F10, 43760 },
+ { 0x0F12, 43765 },
+ { 0x0F0D, 43770 },
+ { 0x0F34, 43773 },
+ { 0x0FD0, 43777 },
+ { 0x0F09, 43784 },
+ { 0x0F06, 43789 },
+ { 0x0F13, 43797 },
+ { 0x0F36, 43805 },
+ { 0x0FD1, 43813 },
+ { 0x0F08, 43820 },
+ { 0x0F0F, 43824 },
+ { 0x0F85, 43828 },
+ { 0x0F05, 43831 },
+ { 0x0FD4, 43838 },
+ { 0x0F84, 43847 },
+ { 0x0F04, 43850 },
+ { 0x0FD3, 43857 },
+ { 0x0F0C, 43866 },
+ { 0x0F0B, 43871 },
+ { 0x0F8A, 43875 },
+ { 0x0F8B, 43880 },
+ { 0x0F88, 43885 },
+ { 0x0F86, 43890 },
+ { 0x0F3F, 43894 },
+ { 0x0F82, 43898 },
+ { 0x0F83, 43904 },
+ { 0x0F3E, 43908 },
+ { 0x0F89, 43912 },
+ { 0x0F1D, 43916 },
+ { 0x0FCF, 43921 },
+ { 0x0FCE, 43926 },
+ { 0x0F1E, 43932 },
+ { 0x0F1A, 43937 },
+ { 0x0F1C, 43942 },
+ { 0x0F1F, 43947 },
+ { 0x0F1B, 43953 },
+ { 0x0F7E, 43958 },
+ { 0x0F7F, 43964 },
+ { 0x0F87, 43968 },
+ { 0x0F21, 43972 },
+ { 0x0F26, 43975 },
+ { 0x0F22, 43978 },
+ { 0x0F25, 43981 },
+ { 0x0F24, 43984 },
+ { 0x0F2A, 43987 },
+ { 0x0F2F, 43991 },
+ { 0x0F2B, 43995 },
+ { 0x0F2E, 43999 },
+ { 0x0F2D, 44003 },
+ { 0x0F32, 44007 },
+ { 0x0F33, 44011 },
+ { 0x0F31, 44015 },
+ { 0x0F30, 44019 },
+ { 0x0F2C, 44023 },
+ { 0x0F29, 44027 },
+ { 0x0F20, 44030 },
+ { 0x0F28, 44033 },
+ { 0x0F27, 44036 },
+ { 0x0F23, 44039 },
+ { 0x0F7A, 44042 },
+ { 0x0F72, 44046 },
+ { 0x0F7C, 44050 },
+ { 0x0F74, 44054 },
+ { 0x0F71, 44058 },
+ { 0x0F7B, 44062 },
+ { 0x0F73, 44066 },
+ { 0x0F7D, 44070 },
+ { 0x0F75, 44074 },
+ { 0x0F78, 44078 },
+ { 0x0F76, 44083 },
+ { 0x0F79, 44088 },
+ { 0x0F77, 44093 },
+ { 0x0F80, 44098 },
+ { 0x0F81, 44103 },
+ { 0x0F68, 44108 },
+ { 0x0F60, 44111 },
+ { 0x0F56, 44114 },
+ { 0x0F45, 44117 },
+ { 0x0F51, 44120 },
+ { 0x0F42, 44123 },
+ { 0x0F67, 44126 },
+ { 0x0F47, 44129 },
+ { 0x0F40, 44132 },
+ { 0x0F63, 44135 },
+ { 0x0F58, 44138 },
+ { 0x0F53, 44141 },
+ { 0x0F54, 44144 },
+ { 0x0F62, 44147 },
+ { 0x0F66, 44150 },
+ { 0x0F4F, 44153 },
+ { 0x0F5D, 44156 },
+ { 0x0F61, 44159 },
+ { 0x0F5F, 44162 },
+ { 0x0F57, 44165 },
+ { 0x0F46, 44168 },
+ { 0x0F4C, 44171 },
+ { 0x0F52, 44174 },
+ { 0x0F5B, 44177 },
+ { 0x0F43, 44180 },
+ { 0x0F41, 44183 },
+ { 0x0F6B, 44186 },
+ { 0x0F44, 44189 },
+ { 0x0F4E, 44192 },
+ { 0x0F49, 44195 },
+ { 0x0F55, 44198 },
+ { 0x0F6C, 44201 },
+ { 0x0F64, 44204 },
+ { 0x0F65, 44207 },
+ { 0x0F50, 44210 },
+ { 0x0F59, 44213 },
+ { 0x0F4A, 44216 },
+ { 0x0F5E, 44219 },
+ { 0x0F4D, 44222 },
+ { 0x0F5C, 44225 },
+ { 0x0F69, 44228 },
+ { 0x0F5A, 44231 },
+ { 0x0F4B, 44234 },
+ { 0x0F6A, 44237 },
+ { 0x0FC9, 44241 },
+ { 0x0FCC, 44245 },
+ { 0x0FCB, 44251 },
+ { 0x0FCA, 44257 },
+ { 0x0FC5, 44263 },
+ { 0x0FC7, 44267 },
+ { 0x0FC4, 44273 },
+ { 0x0FC8, 44277 },
+ { 0x0FC6, 44281 },
+ { 0x0F15, 44285 },
+ { 0x0F16, 44290 },
+ { 0x0F00, 44295 },
+ { 0x0FB8, 44298 },
+ { 0x0FB0, 44302 },
+ { 0x0FA6, 44306 },
+ { 0x0F95, 44310 },
+ { 0x0FA1, 44314 },
+ { 0x0F92, 44318 },
+ { 0x0FB7, 44322 },
+ { 0x0F97, 44326 },
+ { 0x0F90, 44330 },
+ { 0x0FB3, 44334 },
+ { 0x0FA8, 44338 },
+ { 0x0FA3, 44342 },
+ { 0x0FA4, 44346 },
+ { 0x0FB2, 44350 },
+ { 0x0FB6, 44354 },
+ { 0x0F9F, 44358 },
+ { 0x0FAD, 44362 },
+ { 0x0FB1, 44366 },
+ { 0x0FAF, 44370 },
+ { 0x0FA7, 44374 },
+ { 0x0F96, 44378 },
+ { 0x0F9C, 44382 },
+ { 0x0FA2, 44386 },
+ { 0x0FAB, 44390 },
+ { 0x0F93, 44394 },
+ { 0x0F91, 44398 },
+ { 0x0F94, 44402 },
+ { 0x0F9E, 44406 },
+ { 0x0F99, 44410 },
+ { 0x0FA5, 44414 },
+ { 0x0FB4, 44418 },
+ { 0x0FB5, 44422 },
+ { 0x0FA0, 44426 },
+ { 0x0FA9, 44430 },
+ { 0x0F9A, 44434 },
+ { 0x0FAE, 44438 },
+ { 0x0F9D, 44442 },
+ { 0x0FAC, 44446 },
+ { 0x0FB9, 44450 },
+ { 0x0FAA, 44454 },
+ { 0x0F9B, 44458 },
+ { 0x0FBC, 44462 },
+ { 0x0FBA, 44467 },
+ { 0x0FBB, 44472 },
+ { 0x0F17, 44477 },
+ { 0x0F19, 44484 },
+ { 0x0F18, 44489 },
+ { 0x0FC2, 44494 },
+ { 0x0FC3, 44499 },
+ { 0x0FC0, 44504 },
+ { 0x0FC1, 44509 },
+ { 0x2632, 44514 },
+ { 0x2631, 44517 },
+ { 0x2634, 44520 },
+ { 0x2637, 44523 },
+ { 0x2635, 44526 },
+ { 0x2630, 44529 },
+ { 0x2633, 44532 },
+ { 0x2636, 44535 },
+ { 0x219F, 44538 },
+ { 0x2191, 44542 },
+ { 0x2912, 44544 },
+ { 0x21A5, 44548 },
+ { 0x21B0, 44552 },
+ { 0x21B1, 44557 },
+ { 0x21DE, 44562 },
+ { 0x2909, 44567 },
+ { 0x21C5, 44572 },
+ { 0x2B06, 44578 },
+ { 0x21E7, 44581 },
+ { 0x21EB, 44584 },
+ { 0x21ED, 44589 },
+ { 0x21EC, 44597 },
+ { 0x21EA, 44605 },
+ { 0x21EE, 44610 },
+ { 0x21EF, 44614 },
+ { 0x2E15, 44620 },
+ { 0x21E1, 44622 },
+ { 0x21D1, 44625 },
+ { 0x21C8, 44628 },
+ { 0x290A, 44631 },
+ { 0x2958, 44634 },
+ { 0x2960, 44641 },
+ { 0x2963, 44648 },
+ { 0x296E, 44659 },
+ { 0x2954, 44670 },
+ { 0x295C, 44677 },
+ { 0x21BF, 44684 },
+ { 0x21BE, 44689 },
+ { 0x27F0, 44694 },
+ { 0x2949, 44697 },
+ { 0x270C, 44703 },
+ { 0x26A0, 44705 },
+ { 0x270D, 44707 },
+ { 0x206D, 44709 },
+ { 0x206B, 44713 },
+ { 0x2708, 44716 },
+ { 0x212B, 44717 },
+ { 0x2652, 44719 },
+ { 0x0589, 44720 },
+ { 0x055D, 44723 },
+ { 0x056E, 44725 },
+ { 0x0581, 44729 },
+ { 0x0564, 44733 },
+ { 0x0567, 44737 },
+ { 0x0568, 44741 },
+ { 0x0570, 44745 },
+ { 0x0571, 44749 },
+ { 0x0585, 44753 },
+ { 0x057C, 44757 },
+ { 0x0569, 44761 },
+ { 0x0578, 44765 },
+ { 0x0575, 44769 },
+ { 0x0566, 44773 },
+ { 0x0561, 44777 },
+ { 0x0562, 44781 },
+ { 0x0579, 44785 },
+ { 0x0565, 44789 },
+ { 0x0586, 44793 },
+ { 0x0563, 44797 },
+ { 0x056B, 44801 },
+ { 0x0584, 44805 },
+ { 0x056F, 44809 },
+ { 0x0574, 44813 },
+ { 0x0576, 44817 },
+ { 0x057A, 44821 },
+ { 0x0580, 44825 },
+ { 0x057D, 44829 },
+ { 0x0577, 44833 },
+ { 0x057E, 44837 },
+ { 0x056D, 44841 },
+ { 0x056A, 44845 },
+ { 0x0573, 44849 },
+ { 0x0572, 44853 },
+ { 0x057B, 44857 },
+ { 0x056C, 44861 },
+ { 0x0583, 44865 },
+ { 0x057F, 44869 },
+ { 0x0582, 44873 },
+ { 0x0587, 44877 },
+ { 0x6B14, 44882 },
+ { 0x6B15, 44887 },
+ { 0x6B13, 44892 },
+ { 0x6B17, 44897 },
+ { 0x6B16, 44902 },
+ { 0x058A, 44907 },
+ { 0x053E, 44909 },
+ { 0x0551, 44913 },
+ { 0x0534, 44917 },
+ { 0x0537, 44921 },
+ { 0x0538, 44925 },
+ { 0x0540, 44929 },
+ { 0x0541, 44933 },
+ { 0x0555, 44937 },
+ { 0x054C, 44941 },
+ { 0x0539, 44945 },
+ { 0x0548, 44949 },
+ { 0x0545, 44953 },
+ { 0x0536, 44957 },
+ { 0x0531, 44961 },
+ { 0x0532, 44965 },
+ { 0x0549, 44969 },
+ { 0x0535, 44973 },
+ { 0x0556, 44977 },
+ { 0x0533, 44981 },
+ { 0x053B, 44985 },
+ { 0x0554, 44989 },
+ { 0x053F, 44993 },
+ { 0x0544, 44997 },
+ { 0x0546, 45001 },
+ { 0x054A, 45005 },
+ { 0x0550, 45009 },
+ { 0x054D, 45013 },
+ { 0x0547, 45017 },
+ { 0x054E, 45021 },
+ { 0x053D, 45025 },
+ { 0x053A, 45029 },
+ { 0x0543, 45033 },
+ { 0x0542, 45037 },
+ { 0x054B, 45041 },
+ { 0x053C, 45045 },
+ { 0x0553, 45049 },
+ { 0x054F, 45053 },
+ { 0x0552, 45057 },
+ { 0x055B, 45061 },
+ { 0x0559, 45064 },
+ { 0x055E, 45070 },
+ { 0x055A, 45073 },
+ { 0x055C, 45075 },
+ { 0x055F, 45078 },
+ { 0x002A, 45081 },
+ { 0x2217, 45082 },
+ { 0x2042, 45084 },
+ { 0x1B44, 45085 },
+ { 0x1B00, 45088 },
+ { 0x1B01, 45092 },
+ { 0x1B04, 45096 },
+ { 0x1B02, 45099 },
+ { 0x1B03, 45102 },
+ { 0x1B34, 45105 },
+ { 0x1B5E, 45108 },
+ { 0x1B5F, 45111 },
+ { 0x1B5D, 45114 },
+ { 0x1B51, 45117 },
+ { 0x1B56, 45120 },
+ { 0x1B52, 45123 },
+ { 0x1B55, 45126 },
+ { 0x1B54, 45129 },
+ { 0x1B59, 45132 },
+ { 0x1B50, 45135 },
+ { 0x1B58, 45138 },
+ { 0x1B57, 45141 },
+ { 0x1B53, 45144 },
+ { 0x1B5A, 45147 },
+ { 0x1B3C, 45149 },
+ { 0x1B3D, 45154 },
+ { 0x1B3A, 45160 },
+ { 0x1B3B, 45165 },
+ { 0x1B36, 45171 },
+ { 0x1B37, 45175 },
+ { 0x1B38, 45180 },
+ { 0x1B39, 45184 },
+ { 0x1B42, 45189 },
+ { 0x1B43, 45193 },
+ { 0x1B3E, 45198 },
+ { 0x1B3F, 45202 },
+ { 0x1B41, 45207 },
+ { 0x1B40, 45213 },
+ { 0x1B35, 45218 },
+ { 0x1B5C, 45222 },
+ { 0x1B29, 45224 },
+ { 0x1B2A, 45227 },
+ { 0x1B18, 45231 },
+ { 0x1B19, 45234 },
+ { 0x1B24, 45238 },
+ { 0x1B25, 45241 },
+ { 0x1B1F, 45245 },
+ { 0x1B20, 45250 },
+ { 0x1B48, 45255 },
+ { 0x1B15, 45259 },
+ { 0x1B16, 45262 },
+ { 0x1B33, 45266 },
+ { 0x1B1A, 45269 },
+ { 0x1B1B, 45272 },
+ { 0x1B13, 45276 },
+ { 0x1B14, 45279 },
+ { 0x1B2E, 45283 },
+ { 0x1B0D, 45286 },
+ { 0x1B0E, 45290 },
+ { 0x1B2B, 45295 },
+ { 0x1B26, 45298 },
+ { 0x1B21, 45301 },
+ { 0x1B27, 45305 },
+ { 0x1B28, 45308 },
+ { 0x1B2D, 45312 },
+ { 0x1B0B, 45315 },
+ { 0x1B0C, 45319 },
+ { 0x1B32, 45324 },
+ { 0x1B30, 45327 },
+ { 0x1B31, 45331 },
+ { 0x1B22, 45335 },
+ { 0x1B23, 45338 },
+ { 0x1B1D, 45342 },
+ { 0x1B1E, 45346 },
+ { 0x1B49, 45351 },
+ { 0x1B2F, 45355 },
+ { 0x1B2C, 45358 },
+ { 0x1B45, 45361 },
+ { 0x1B17, 45365 },
+ { 0x1B1C, 45368 },
+ { 0x1B4A, 45371 },
+ { 0x1B46, 45375 },
+ { 0x1B47, 45379 },
+ { 0x1B05, 45383 },
+ { 0x1B06, 45386 },
+ { 0x1B0F, 45390 },
+ { 0x1B07, 45393 },
+ { 0x1B08, 45396 },
+ { 0x1B11, 45400 },
+ { 0x1B12, 45403 },
+ { 0x1B09, 45407 },
+ { 0x1B0A, 45410 },
+ { 0x1B10, 45414 },
+ { 0x1B4B, 45417 },
+ { 0x1B5B, 45421 },
+ { 0x1B64, 45423 },
+ { 0x1B6A, 45427 },
+ { 0x1B65, 45432 },
+ { 0x1B62, 45437 },
+ { 0x1B66, 45441 },
+ { 0x1B61, 45445 },
+ { 0x1B63, 45449 },
+ { 0x1B67, 45453 },
+ { 0x1B69, 45457 },
+ { 0x1B68, 45461 },
+ { 0x1B73, 45465 },
+ { 0x1B72, 45470 },
+ { 0x1B6C, 45475 },
+ { 0x1B6B, 45480 },
+ { 0x1B6E, 45485 },
+ { 0x1B71, 45490 },
+ { 0x1B6D, 45497 },
+ { 0x1B70, 45502 },
+ { 0x1B6F, 45509 },
+ { 0x1B78, 45514 },
+ { 0x1B7C, 45520 },
+ { 0x1B79, 45526 },
+ { 0x1B7A, 45532 },
+ { 0x1B7B, 45538 },
+ { 0x1B75, 45544 },
+ { 0x1B74, 45550 },
+ { 0x1B77, 45556 },
+ { 0x1B76, 45562 },
+ { 0x1B60, 45568 },
+ { 0x31B7, 45570 },
+ { 0x31B6, 45574 },
+ { 0x31B4, 45578 },
+ { 0x31B5, 45582 },
+ { 0x311A, 45586 },
+ { 0x3105, 45589 },
+ { 0x3118, 45592 },
+ { 0x3109, 45595 },
+ { 0x311C, 45598 },
+ { 0x3108, 45601 },
+ { 0x310D, 45604 },
+ { 0x310F, 45607 },
+ { 0x3127, 45610 },
+ { 0x3110, 45613 },
+ { 0x310E, 45616 },
+ { 0x310C, 45619 },
+ { 0x3107, 45622 },
+ { 0x310B, 45625 },
+ { 0x311B, 45628 },
+ { 0x3106, 45631 },
+ { 0x3111, 45634 },
+ { 0x3116, 45637 },
+ { 0x3119, 45640 },
+ { 0x310A, 45643 },
+ { 0x3128, 45646 },
+ { 0x312A, 45649 },
+ { 0x3112, 45652 },
+ { 0x3117, 45655 },
+ { 0x311E, 45658 },
+ { 0x31B0, 45661 },
+ { 0x3122, 45664 },
+ { 0x3120, 45667 },
+ { 0x31A0, 45670 },
+ { 0x3114, 45673 },
+ { 0x31A4, 45676 },
+ { 0x311D, 45679 },
+ { 0x311F, 45682 },
+ { 0x3123, 45685 },
+ { 0x3126, 45688 },
+ { 0x312C, 45691 },
+ { 0x31A3, 45694 },
+ { 0x312D, 45697 },
+ { 0x31AC, 45700 },
+ { 0x31A8, 45703 },
+ { 0x3129, 45706 },
+ { 0x31A2, 45709 },
+ { 0x312B, 45712 },
+ { 0x31B1, 45715 },
+ { 0x31A6, 45718 },
+ { 0x3121, 45721 },
+ { 0x3115, 45724 },
+ { 0x3113, 45727 },
+ { 0x31A1, 45730 },
+ { 0x3124, 45733 },
+ { 0x31A9, 45736 },
+ { 0x3125, 45739 },
+ { 0x31A5, 45742 },
+ { 0x31AA, 45745 },
+ { 0x31AD, 45748 },
+ { 0x31B2, 45751 },
+ { 0x31A7, 45754 },
+ { 0x31AB, 45757 },
+ { 0x31AE, 45760 },
+ { 0x31AF, 45763 },
+ { 0x31B3, 45766 },
+ { 0x1A1F, 45769 },
+ { 0x1A19, 45773 },
+ { 0x1A17, 45777 },
+ { 0x1A1A, 45781 },
+ { 0x1A18, 45785 },
+ { 0x1A1B, 45789 },
+ { 0x1A15, 45793 },
+ { 0x1A05, 45796 },
+ { 0x1A0C, 45799 },
+ { 0x1A09, 45802 },
+ { 0x1A01, 45805 },
+ { 0x1A16, 45808 },
+ { 0x1A0D, 45811 },
+ { 0x1A00, 45814 },
+ { 0x1A12, 45817 },
+ { 0x1A06, 45820 },
+ { 0x1A0A, 45823 },
+ { 0x1A04, 45826 },
+ { 0x1A11, 45829 },
+ { 0x1A14, 45832 },
+ { 0x1A08, 45835 },
+ { 0x1A13, 45838 },
+ { 0x1A10, 45841 },
+ { 0x1A07, 45844 },
+ { 0x1A02, 45847 },
+ { 0x1A0B, 45850 },
+ { 0x1A0E, 45853 },
+ { 0x1A03, 45856 },
+ { 0x1A0F, 45859 },
+ { 0x1A1E, 45862 },
+ { 0x25CE, 45864 },
+ { 0x2624, 45865 },
+ { 0x140A, 45866 },
+ { 0x14A1, 45869 },
+ { 0x1401, 45872 },
+ { 0x155D, 45875 },
+ { 0x1403, 45878 },
+ { 0x1483, 45881 },
+ { 0x14EA, 45884 },
+ { 0x14BB, 45887 },
+ { 0x14D0, 45890 },
+ { 0x1405, 45893 },
+ { 0x1449, 45896 },
+ { 0x1585, 45899 },
+ { 0x1550, 45902 },
+ { 0x1505, 45905 },
+ { 0x1466, 45908 },
+ { 0x153E, 45911 },
+ { 0x140B, 45914 },
+ { 0x141C, 45917 },
+ { 0x142E, 45920 },
+ { 0x1490, 45923 },
+ { 0x1489, 45926 },
+ { 0x148B, 45929 },
+ { 0x148D, 45932 },
+ { 0x142B, 45935 },
+ { 0x1559, 45938 },
+ { 0x1553, 45941 },
+ { 0x1555, 45944 },
+ { 0x1557, 45947 },
+ { 0x157D, 45950 },
+ { 0x1404, 45953 },
+ { 0x142C, 45956 },
+ { 0x1472, 45959 },
+ { 0x146B, 45962 },
+ { 0x146D, 45965 },
+ { 0x146F, 45968 },
+ { 0x1484, 45971 },
+ { 0x14DA, 45974 },
+ { 0x14D3, 45977 },
+ { 0x15A6, 45980 },
+ { 0x14D5, 45983 },
+ { 0x14D7, 45986 },
+ { 0x14AA, 45989 },
+ { 0x14A3, 45992 },
+ { 0x14BD, 45995 },
+ { 0x14A5, 45998 },
+ { 0x14A7, 46001 },
+ { 0x14C7, 46004 },
+ { 0x14C0, 46007 },
+ { 0x1595, 46010 },
+ { 0x14D2, 46013 },
+ { 0x14C2, 46016 },
+ { 0x14C4, 46019 },
+ { 0x142D, 46022 },
+ { 0x1406, 46025 },
+ { 0x1438, 46028 },
+ { 0x142F, 46031 },
+ { 0x1431, 46034 },
+ { 0x1433, 46037 },
+ { 0x1583, 46040 },
+ { 0x157F, 46043 },
+ { 0x1581, 46046 },
+ { 0x154B, 46049 },
+ { 0x1542, 46052 },
+ { 0x1546, 46055 },
+ { 0x1548, 46058 },
+ { 0x14F4, 46061 },
+ { 0x14ED, 46064 },
+ { 0x1525, 46067 },
+ { 0x14EF, 46070 },
+ { 0x14F1, 46073 },
+ { 0x1507, 46076 },
+ { 0x1455, 46079 },
+ { 0x144C, 46082 },
+ { 0x156A, 46085 },
+ { 0x144E, 46088 },
+ { 0x1450, 46091 },
+ { 0x1417, 46094 },
+ { 0x140C, 46097 },
+ { 0x140E, 46100 },
+ { 0x1412, 46103 },
+ { 0x152D, 46106 },
+ { 0x1526, 46109 },
+ { 0x1528, 46112 },
+ { 0x152A, 46115 },
+ { 0x1402, 46118 },
+ { 0x1491, 46121 },
+ { 0x166D, 46124 },
+ { 0x148C, 46128 },
+ { 0x148E, 46131 },
+ { 0x149C, 46134 },
+ { 0x1492, 46137 },
+ { 0x1494, 46140 },
+ { 0x1498, 46143 },
+ { 0x155A, 46146 },
+ { 0x1556, 46149 },
+ { 0x1558, 46152 },
+ { 0x1473, 46155 },
+ { 0x146E, 46158 },
+ { 0x1470, 46161 },
+ { 0x147E, 46164 },
+ { 0x1474, 46167 },
+ { 0x1476, 46170 },
+ { 0x147A, 46173 },
+ { 0x14DB, 46176 },
+ { 0x15A4, 46179 },
+ { 0x15A0, 46182 },
+ { 0x15A2, 46185 },
+ { 0x14D6, 46188 },
+ { 0x14D8, 46191 },
+ { 0x14E6, 46194 },
+ { 0x14DC, 46197 },
+ { 0x14DE, 46200 },
+ { 0x14E2, 46203 },
+ { 0x14AB, 46206 },
+ { 0x14A6, 46209 },
+ { 0x14A8, 46212 },
+ { 0x14B6, 46215 },
+ { 0x14AC, 46218 },
+ { 0x14AE, 46221 },
+ { 0x14B2, 46224 },
+ { 0x14C8, 46227 },
+ { 0x1593, 46230 },
+ { 0x158F, 46233 },
+ { 0x1591, 46236 },
+ { 0x14C3, 46239 },
+ { 0x1596, 46242 },
+ { 0x14C5, 46245 },
+ { 0x14CB, 46248 },
+ { 0x14C9, 46251 },
+ { 0x1439, 46254 },
+ { 0x1432, 46257 },
+ { 0x1434, 46260 },
+ { 0x1444, 46263 },
+ { 0x143A, 46266 },
+ { 0x143C, 46269 },
+ { 0x1440, 46272 },
+ { 0x1584, 46275 },
+ { 0x166F, 46278 },
+ { 0x1580, 46281 },
+ { 0x1582, 46284 },
+ { 0x154C, 46287 },
+ { 0x1547, 46290 },
+ { 0x1549, 46293 },
+ { 0x14F5, 46296 },
+ { 0x1515, 46299 },
+ { 0x1510, 46302 },
+ { 0x1511, 46305 },
+ { 0x1513, 46308 },
+ { 0x14F0, 46311 },
+ { 0x14F2, 46314 },
+ { 0x1500, 46317 },
+ { 0x14F6, 46320 },
+ { 0x14F8, 46323 },
+ { 0x14FC, 46326 },
+ { 0x1456, 46329 },
+ { 0x1566, 46332 },
+ { 0x155E, 46335 },
+ { 0x1560, 46338 },
+ { 0x1564, 46341 },
+ { 0x144F, 46344 },
+ { 0x1451, 46347 },
+ { 0x146A, 46350 },
+ { 0x1467, 46353 },
+ { 0x156F, 46356 },
+ { 0x1468, 46359 },
+ { 0x1469, 46362 },
+ { 0x1461, 46365 },
+ { 0x1457, 46368 },
+ { 0x1459, 46371 },
+ { 0x145D, 46374 },
+ { 0x1573, 46377 },
+ { 0x1570, 46380 },
+ { 0x1571, 46383 },
+ { 0x1572, 46386 },
+ { 0x1419, 46389 },
+ { 0x1410, 46392 },
+ { 0x1414, 46395 },
+ { 0x152E, 46398 },
+ { 0x1529, 46401 },
+ { 0x152B, 46404 },
+ { 0x1539, 46407 },
+ { 0x152F, 46410 },
+ { 0x1531, 46413 },
+ { 0x1535, 46416 },
+ { 0x148A, 46419 },
+ { 0x149E, 46422 },
+ { 0x1496, 46425 },
+ { 0x149A, 46428 },
+ { 0x1554, 46431 },
+ { 0x166E, 46434 },
+ { 0x155B, 46438 },
+ { 0x146C, 46441 },
+ { 0x1480, 46444 },
+ { 0x1478, 46447 },
+ { 0x147C, 46450 },
+ { 0x14D4, 46453 },
+ { 0x15A5, 46456 },
+ { 0x15A1, 46459 },
+ { 0x15A3, 46462 },
+ { 0x14E8, 46465 },
+ { 0x14E0, 46468 },
+ { 0x14E4, 46471 },
+ { 0x14A4, 46474 },
+ { 0x14B8, 46477 },
+ { 0x14B0, 46480 },
+ { 0x14B4, 46483 },
+ { 0x14C1, 46486 },
+ { 0x1594, 46489 },
+ { 0x1670, 46492 },
+ { 0x1590, 46495 },
+ { 0x1592, 46498 },
+ { 0x1675, 46501 },
+ { 0x1671, 46504 },
+ { 0x1673, 46507 },
+ { 0x14CD, 46510 },
+ { 0x1430, 46513 },
+ { 0x1446, 46516 },
+ { 0x143E, 46519 },
+ { 0x1442, 46522 },
+ { 0x157E, 46525 },
+ { 0x1545, 46528 },
+ { 0x154E, 46531 },
+ { 0x14EE, 46534 },
+ { 0x1516, 46537 },
+ { 0x1512, 46540 },
+ { 0x1514, 46543 },
+ { 0x1521, 46546 },
+ { 0x1517, 46549 },
+ { 0x1519, 46552 },
+ { 0x151D, 46555 },
+ { 0x1502, 46558 },
+ { 0x14FA, 46561 },
+ { 0x14FE, 46564 },
+ { 0x144D, 46567 },
+ { 0x1567, 46570 },
+ { 0x1562, 46573 },
+ { 0x1565, 46576 },
+ { 0x1589, 46579 },
+ { 0x1586, 46582 },
+ { 0x1587, 46585 },
+ { 0x1588, 46588 },
+ { 0x156E, 46591 },
+ { 0x156B, 46594 },
+ { 0x156C, 46597 },
+ { 0x156D, 46600 },
+ { 0x1463, 46603 },
+ { 0x145B, 46606 },
+ { 0x145F, 46609 },
+ { 0x1527, 46612 },
+ { 0x153B, 46615 },
+ { 0x1533, 46618 },
+ { 0x1537, 46621 },
+ { 0x1422, 46624 },
+ { 0x142A, 46630 },
+ { 0x1429, 46635 },
+ { 0x1424, 46639 },
+ { 0x141F, 46643 },
+ { 0x1420, 46647 },
+ { 0x1423, 46651 },
+ { 0x1428, 46657 },
+ { 0x1421, 46663 },
+ { 0x1425, 46669 },
+ { 0x1426, 46674 },
+ { 0x1427, 46681 },
+ { 0x158E, 46686 },
+ { 0x1676, 46689 },
+ { 0x1672, 46692 },
+ { 0x1674, 46695 },
+ { 0x1523, 46698 },
+ { 0x151B, 46701 },
+ { 0x151F, 46704 },
+ { 0x1568, 46707 },
+ { 0x14EC, 46710 },
+ { 0x1552, 46714 },
+ { 0x155F, 46718 },
+ { 0x1561, 46722 },
+ { 0x1563, 46726 },
+ { 0x1543, 46730 },
+ { 0x14BF, 46734 },
+ { 0x15C3, 46738 },
+ { 0x15C0, 46742 },
+ { 0x15C1, 46746 },
+ { 0x15C2, 46750 },
+ { 0x161A, 46754 },
+ { 0x1615, 46758 },
+ { 0x14A2, 46762 },
+ { 0x1541, 46766 },
+ { 0x159A, 46770 },
+ { 0x1597, 46774 },
+ { 0x1598, 46778 },
+ { 0x1599, 46782 },
+ { 0x141D, 46786 },
+ { 0x1407, 46790 },
+ { 0x148F, 46794 },
+ { 0x1471, 46798 },
+ { 0x14D9, 46802 },
+ { 0x14A9, 46806 },
+ { 0x14C6, 46810 },
+ { 0x1435, 46814 },
+ { 0x14F3, 46818 },
+ { 0x1452, 46822 },
+ { 0x152C, 46826 },
+ { 0x1448, 46830 },
+ { 0x15AF, 46834 },
+ { 0x144B, 46838 },
+ { 0x1409, 46842 },
+ { 0x15EE, 46846 },
+ { 0x1646, 46850 },
+ { 0x1454, 46854 },
+ { 0x1408, 46858 },
+ { 0x15F4, 46862 },
+ { 0x15F1, 46866 },
+ { 0x15F3, 46870 },
+ { 0x15F0, 46874 },
+ { 0x15EF, 46878 },
+ { 0x1437, 46882 },
+ { 0x161B, 46886 },
+ { 0x1617, 46890 },
+ { 0x1619, 46894 },
+ { 0x1616, 46898 },
+ { 0x1614, 46902 },
+ { 0x1601, 46906 },
+ { 0x1627, 46910 },
+ { 0x1624, 46914 },
+ { 0x1626, 46918 },
+ { 0x1623, 46922 },
+ { 0x1622, 46926 },
+ { 0x160D, 46930 },
+ { 0x160A, 46934 },
+ { 0x160C, 46938 },
+ { 0x1609, 46942 },
+ { 0x1608, 46946 },
+ { 0x1607, 46950 },
+ { 0x1604, 46954 },
+ { 0x14D1, 46958 },
+ { 0x1606, 46962 },
+ { 0x1603, 46966 },
+ { 0x1602, 46970 },
+ { 0x15ED, 46974 },
+ { 0x15EA, 46978 },
+ { 0x15EC, 46982 },
+ { 0x15E9, 46986 },
+ { 0x15E8, 46990 },
+ { 0x15CF, 46994 },
+ { 0x15CC, 46998 },
+ { 0x15CE, 47002 },
+ { 0x15CB, 47006 },
+ { 0x15CA, 47010 },
+ { 0x1653, 47014 },
+ { 0x1650, 47018 },
+ { 0x165A, 47022 },
+ { 0x1652, 47026 },
+ { 0x164F, 47030 },
+ { 0x164E, 47034 },
+ { 0x15D5, 47038 },
+ { 0x15D2, 47042 },
+ { 0x15D4, 47046 },
+ { 0x15D1, 47050 },
+ { 0x15D0, 47054 },
+ { 0x1613, 47058 },
+ { 0x1610, 47062 },
+ { 0x1612, 47066 },
+ { 0x160F, 47070 },
+ { 0x160E, 47074 },
+ { 0x1645, 47078 },
+ { 0x1642, 47082 },
+ { 0x1644, 47086 },
+ { 0x1641, 47090 },
+ { 0x1640, 47094 },
+ { 0x1666, 47098 },
+ { 0x1663, 47102 },
+ { 0x1665, 47106 },
+ { 0x1662, 47110 },
+ { 0x1661, 47114 },
+ { 0x1453, 47118 },
+ { 0x162D, 47122 },
+ { 0x162A, 47126 },
+ { 0x162C, 47130 },
+ { 0x1629, 47134 },
+ { 0x1628, 47138 },
+ { 0x164D, 47142 },
+ { 0x164A, 47146 },
+ { 0x164C, 47150 },
+ { 0x1649, 47154 },
+ { 0x1648, 47158 },
+ { 0x15F2, 47162 },
+ { 0x15C9, 47166 },
+ { 0x15C6, 47170 },
+ { 0x15C8, 47174 },
+ { 0x15C5, 47178 },
+ { 0x15C4, 47182 },
+ { 0x1436, 47186 },
+ { 0x15DB, 47190 },
+ { 0x15D8, 47194 },
+ { 0x15DA, 47198 },
+ { 0x15D7, 47202 },
+ { 0x15D6, 47206 },
+ { 0x1618, 47210 },
+ { 0x1621, 47214 },
+ { 0x161E, 47218 },
+ { 0x1620, 47222 },
+ { 0x161D, 47226 },
+ { 0x161C, 47230 },
+ { 0x15FA, 47234 },
+ { 0x15F7, 47238 },
+ { 0x15F9, 47242 },
+ { 0x15F6, 47246 },
+ { 0x15F5, 47250 },
+ { 0x1600, 47254 },
+ { 0x15FD, 47258 },
+ { 0x15FF, 47262 },
+ { 0x15FC, 47266 },
+ { 0x15FB, 47270 },
+ { 0x1625, 47274 },
+ { 0x1633, 47278 },
+ { 0x1630, 47282 },
+ { 0x1632, 47286 },
+ { 0x162F, 47290 },
+ { 0x162E, 47294 },
+ { 0x160B, 47298 },
+ { 0x1605, 47302 },
+ { 0x15EB, 47306 },
+ { 0x15CD, 47310 },
+ { 0x1651, 47314 },
+ { 0x1659, 47318 },
+ { 0x1656, 47322 },
+ { 0x1658, 47326 },
+ { 0x1655, 47330 },
+ { 0x1654, 47334 },
+ { 0x15E1, 47338 },
+ { 0x15DE, 47342 },
+ { 0x15E0, 47346 },
+ { 0x15DD, 47350 },
+ { 0x15DC, 47354 },
+ { 0x163F, 47358 },
+ { 0x163C, 47362 },
+ { 0x163E, 47366 },
+ { 0x163B, 47370 },
+ { 0x163A, 47374 },
+ { 0x1660, 47378 },
+ { 0x165D, 47382 },
+ { 0x165F, 47386 },
+ { 0x165C, 47390 },
+ { 0x165B, 47394 },
+ { 0x15E7, 47398 },
+ { 0x15E4, 47402 },
+ { 0x15E6, 47406 },
+ { 0x15E3, 47410 },
+ { 0x15E2, 47414 },
+ { 0x15D3, 47418 },
+ { 0x1611, 47422 },
+ { 0x1643, 47426 },
+ { 0x1664, 47430 },
+ { 0x162B, 47434 },
+ { 0x164B, 47438 },
+ { 0x15C7, 47442 },
+ { 0x15D9, 47446 },
+ { 0x161F, 47450 },
+ { 0x15F8, 47454 },
+ { 0x15FE, 47458 },
+ { 0x1631, 47462 },
+ { 0x1657, 47466 },
+ { 0x15DF, 47470 },
+ { 0x163D, 47474 },
+ { 0x1639, 47478 },
+ { 0x1636, 47482 },
+ { 0x1638, 47486 },
+ { 0x1635, 47490 },
+ { 0x1634, 47494 },
+ { 0x165E, 47498 },
+ { 0x15E5, 47502 },
+ { 0x166C, 47506 },
+ { 0x1669, 47510 },
+ { 0x166B, 47514 },
+ { 0x1668, 47518 },
+ { 0x1667, 47522 },
+ { 0x1637, 47526 },
+ { 0x166A, 47530 },
+ { 0x1647, 47534 },
+ { 0x141E, 47539 },
+ { 0x150B, 47543 },
+ { 0x150A, 47547 },
+ { 0x141B, 47551 },
+ { 0x1416, 47555 },
+ { 0x14A0, 47559 },
+ { 0x1482, 47563 },
+ { 0x14BA, 47567 },
+ { 0x14CF, 47571 },
+ { 0x150F, 47575 },
+ { 0x150E, 47579 },
+ { 0x150C, 47583 },
+ { 0x150D, 47587 },
+ { 0x1504, 47591 },
+ { 0x1465, 47595 },
+ { 0x153D, 47599 },
+ { 0x157B, 47603 },
+ { 0x1579, 47607 },
+ { 0x1574, 47611 },
+ { 0x1575, 47615 },
+ { 0x1577, 47619 },
+ { 0x157A, 47623 },
+ { 0x1576, 47627 },
+ { 0x1578, 47631 },
+ { 0x157C, 47635 },
+ { 0x15AE, 47639 },
+ { 0x15AC, 47643 },
+ { 0x15A7, 47647 },
+ { 0x15A8, 47651 },
+ { 0x15AA, 47655 },
+ { 0x15AD, 47659 },
+ { 0x15A9, 47663 },
+ { 0x15AB, 47667 },
+ { 0x15B3, 47671 },
+ { 0x15B0, 47675 },
+ { 0x15B1, 47679 },
+ { 0x15B2, 47683 },
+ { 0x1508, 47687 },
+ { 0x15BF, 47691 },
+ { 0x15BC, 47695 },
+ { 0x15BD, 47699 },
+ { 0x15BE, 47703 },
+ { 0x15BB, 47707 },
+ { 0x15B8, 47711 },
+ { 0x15B9, 47715 },
+ { 0x15BA, 47719 },
+ { 0x15B7, 47723 },
+ { 0x15B4, 47727 },
+ { 0x15B5, 47731 },
+ { 0x15B6, 47735 },
+ { 0x14EB, 47739 },
+ { 0x14BC, 47743 },
+ { 0x144A, 47747 },
+ { 0x1551, 47751 },
+ { 0x1540, 47755 },
+ { 0x154D, 47759 },
+ { 0x1544, 47763 },
+ { 0x154A, 47767 },
+ { 0x158D, 47771 },
+ { 0x158A, 47775 },
+ { 0x158B, 47779 },
+ { 0x158C, 47783 },
+ { 0x1418, 47787 },
+ { 0x140D, 47791 },
+ { 0x140F, 47795 },
+ { 0x1413, 47799 },
+ { 0x149D, 47803 },
+ { 0x1493, 47807 },
+ { 0x1495, 47811 },
+ { 0x1499, 47815 },
+ { 0x147F, 47819 },
+ { 0x1475, 47823 },
+ { 0x1477, 47827 },
+ { 0x147B, 47831 },
+ { 0x14E7, 47835 },
+ { 0x14DD, 47839 },
+ { 0x14DF, 47843 },
+ { 0x14E3, 47847 },
+ { 0x14B7, 47851 },
+ { 0x14AD, 47855 },
+ { 0x14AF, 47859 },
+ { 0x14B3, 47863 },
+ { 0x14CC, 47867 },
+ { 0x14CA, 47871 },
+ { 0x1445, 47875 },
+ { 0x143B, 47879 },
+ { 0x143D, 47883 },
+ { 0x1441, 47887 },
+ { 0x1501, 47891 },
+ { 0x14F7, 47895 },
+ { 0x14F9, 47899 },
+ { 0x14FD, 47903 },
+ { 0x1462, 47907 },
+ { 0x1458, 47911 },
+ { 0x145A, 47915 },
+ { 0x145E, 47919 },
+ { 0x141A, 47923 },
+ { 0x1411, 47927 },
+ { 0x1415, 47931 },
+ { 0x153A, 47935 },
+ { 0x1530, 47939 },
+ { 0x1532, 47943 },
+ { 0x1536, 47947 },
+ { 0x149F, 47951 },
+ { 0x1497, 47955 },
+ { 0x149B, 47959 },
+ { 0x155C, 47963 },
+ { 0x1481, 47967 },
+ { 0x1479, 47971 },
+ { 0x147D, 47975 },
+ { 0x14E9, 47979 },
+ { 0x14E1, 47983 },
+ { 0x14E5, 47987 },
+ { 0x14B9, 47991 },
+ { 0x14B1, 47995 },
+ { 0x14B5, 47999 },
+ { 0x14CE, 48003 },
+ { 0x1447, 48007 },
+ { 0x143F, 48011 },
+ { 0x1443, 48015 },
+ { 0x154F, 48019 },
+ { 0x1522, 48023 },
+ { 0x1518, 48027 },
+ { 0x151A, 48031 },
+ { 0x151E, 48035 },
+ { 0x1503, 48039 },
+ { 0x14FB, 48043 },
+ { 0x14FF, 48047 },
+ { 0x1464, 48051 },
+ { 0x145C, 48055 },
+ { 0x1460, 48059 },
+ { 0x153C, 48063 },
+ { 0x1534, 48067 },
+ { 0x1538, 48071 },
+ { 0x1524, 48075 },
+ { 0x151C, 48079 },
+ { 0x1520, 48083 },
+ { 0x1569, 48087 },
+ { 0x14BE, 48091 },
+ { 0x1506, 48095 },
+ { 0x153F, 48099 },
+ { 0x1509, 48103 },
+ { 0x159F, 48107 },
+ { 0x159E, 48111 },
+ { 0x159B, 48115 },
+ { 0x159C, 48119 },
+ { 0x159D, 48123 },
+ { 0x1488, 48127 },
+ { 0x1485, 48131 },
+ { 0x1486, 48135 },
+ { 0x1487, 48139 },
+ { 0x13A0, 48143 },
+ { 0x13A1, 48146 },
+ { 0x13A2, 48149 },
+ { 0x13A3, 48152 },
+ { 0x13CD, 48155 },
+ { 0x13A4, 48158 },
+ { 0x13A5, 48161 },
+ { 0x13D3, 48164 },
+ { 0x13D5, 48167 },
+ { 0x13D7, 48170 },
+ { 0x13D9, 48173 },
+ { 0x13DA, 48176 },
+ { 0x13DB, 48179 },
+ { 0x13A6, 48182 },
+ { 0x13A8, 48185 },
+ { 0x13A9, 48188 },
+ { 0x13AA, 48191 },
+ { 0x13AB, 48194 },
+ { 0x13AC, 48197 },
+ { 0x13AD, 48200 },
+ { 0x13AE, 48203 },
+ { 0x13AF, 48206 },
+ { 0x13B0, 48209 },
+ { 0x13B1, 48212 },
+ { 0x13B2, 48215 },
+ { 0x13A7, 48218 },
+ { 0x13B3, 48221 },
+ { 0x13B4, 48224 },
+ { 0x13B5, 48227 },
+ { 0x13B6, 48230 },
+ { 0x13B7, 48233 },
+ { 0x13B8, 48236 },
+ { 0x13B9, 48239 },
+ { 0x13BA, 48242 },
+ { 0x13BB, 48245 },
+ { 0x13BC, 48248 },
+ { 0x13BD, 48251 },
+ { 0x13BE, 48254 },
+ { 0x13C1, 48257 },
+ { 0x13C2, 48260 },
+ { 0x13C3, 48263 },
+ { 0x13C4, 48266 },
+ { 0x13C5, 48269 },
+ { 0x13CC, 48272 },
+ { 0x13CE, 48275 },
+ { 0x13CF, 48278 },
+ { 0x13D0, 48281 },
+ { 0x13D1, 48284 },
+ { 0x13D2, 48287 },
+ { 0x13D4, 48290 },
+ { 0x13D6, 48293 },
+ { 0x13D8, 48296 },
+ { 0x13E9, 48299 },
+ { 0x13EA, 48302 },
+ { 0x13EB, 48305 },
+ { 0x13EC, 48308 },
+ { 0x13ED, 48311 },
+ { 0x13EE, 48314 },
+ { 0x13EF, 48317 },
+ { 0x13F0, 48320 },
+ { 0x13F1, 48323 },
+ { 0x13F2, 48326 },
+ { 0x13F3, 48329 },
+ { 0x13F4, 48332 },
+ { 0x13DC, 48335 },
+ { 0x13BF, 48338 },
+ { 0x13C0, 48341 },
+ { 0x13C6, 48344 },
+ { 0x13C7, 48347 },
+ { 0x13C8, 48350 },
+ { 0x13C9, 48353 },
+ { 0x13CA, 48356 },
+ { 0x13CB, 48359 },
+ { 0x13DD, 48362 },
+ { 0x13DE, 48365 },
+ { 0x13DF, 48368 },
+ { 0x13E0, 48371 },
+ { 0x13E1, 48374 },
+ { 0x13E2, 48377 },
+ { 0x13E3, 48380 },
+ { 0x13E4, 48383 },
+ { 0x13E5, 48386 },
+ { 0x13E6, 48389 },
+ { 0x13E7, 48392 },
+ { 0x13E8, 48395 },
+ { 0x220B, 48398 },
+ { 0x22B3, 48401 },
+ { 0x22B5, 48405 },
+ { 0x22FA, 48412 },
+ { 0x22FD, 48417 },
+ { 0x22FB, 48420 },
+ { 0x9369, 48429 },
+ { 0x936E, 48434 },
+ { 0x936A, 48439 },
+ { 0x936D, 48444 },
+ { 0x936C, 48449 },
+ { 0x9371, 48454 },
+ { 0x9370, 48459 },
+ { 0x936F, 48464 },
+ { 0x936B, 48469 },
+ { 0x9360, 48474 },
+ { 0x9365, 48479 },
+ { 0x9361, 48484 },
+ { 0x9364, 48489 },
+ { 0x9363, 48494 },
+ { 0x9368, 48499 },
+ { 0x9367, 48504 },
+ { 0x9366, 48509 },
+ { 0x9362, 48514 },
+ { 0x20A2, 48519 },
+ { 0x00A4, 48521 },
+ { 0x0430, 48523 },
+ { 0x04D1, 48527 },
+ { 0x04D3, 48533 },
+ { 0x044D, 48539 },
+ { 0x04ED, 48543 },
+ { 0x0438, 48549 },
+ { 0x045D, 48553 },
+ { 0x04E3, 48559 },
+ { 0x04E5, 48565 },
+ { 0x043E, 48571 },
+ { 0x04E7, 48575 },
+ { 0x0443, 48581 },
+ { 0x04F3, 48585 },
+ { 0x04EF, 48592 },
+ { 0x04F1, 48598 },
+ { 0x0431, 48604 },
+ { 0x0434, 48608 },
+ { 0x0444, 48612 },
+ { 0x043B, 48616 },
+ { 0x0513, 48620 },
+ { 0x04C6, 48626 },
+ { 0x0521, 48632 },
+ { 0x043C, 48639 },
+ { 0x04CE, 48643 },
+ { 0x043D, 48649 },
+ { 0x04C8, 48653 },
+ { 0x04CA, 48659 },
+ { 0x0523, 48665 },
+ { 0x04A3, 48672 },
+ { 0x0440, 48678 },
+ { 0x048F, 48682 },
+ { 0x0441, 48688 },
+ { 0x04AB, 48692 },
+ { 0x0445, 48698 },
+ { 0x04FD, 48702 },
+ { 0x04FF, 48708 },
+ { 0x04B3, 48714 },
+ { 0x0435, 48720 },
+ { 0x04D7, 48724 },
+ { 0x0450, 48730 },
+ { 0x0451, 48736 },
+ { 0x0458, 48740 },
+ { 0x043A, 48744 },
+ { 0x04C4, 48748 },
+ { 0x049F, 48754 },
+ { 0x049D, 48760 },
+ { 0x049B, 48767 },
+ { 0x047F, 48773 },
+ { 0x043F, 48777 },
+ { 0x04A7, 48781 },
+ { 0x051B, 48788 },
+ { 0x0442, 48792 },
+ { 0x568B, 48796 },
+ { 0x04AD, 48803 },
+ { 0x0479, 48809 },
+ { 0x0432, 48813 },
+ { 0x051D, 48817 },
+ { 0x044F, 48821 },
+ { 0x0457, 48825 },
+ { 0x565F, 48829 },
+ { 0x044E, 48833 },
+ { 0x0437, 48837 },
+ { 0x0499, 48841 },
+ { 0x04DF, 48847 },
+ { 0x046B, 48853 },
+ { 0x0447, 48858 },
+ { 0x04B9, 48862 },
+ { 0x04B7, 48869 },
+ { 0x04F5, 48875 },
+ { 0x0452, 48881 },
+ { 0x5681, 48885 },
+ { 0x0455, 48889 },
+ { 0x0433, 48893 },
+ { 0x0495, 48897 },
+ { 0x0493, 48904 },
+ { 0x04FB, 48910 },
+ { 0x0491, 48918 },
+ { 0x04F7, 48924 },
+ { 0x0453, 48930 },
+ { 0x5695, 48934 },
+ { 0x045C, 48938 },
+ { 0x046F, 48942 },
+ { 0x0515, 48946 },
+ { 0x0459, 48950 },
+ { 0x045A, 48954 },
+ { 0x0471, 48958 },
+ { 0x0517, 48962 },
+ { 0x0448, 48966 },
+ { 0x0446, 48970 },
+ { 0x568D, 48974 },
+ { 0x0519, 48978 },
+ { 0x0463, 48982 },
+ { 0x0436, 48986 },
+ { 0x04C2, 48990 },
+ { 0x0497, 48996 },
+ { 0x04DD, 49002 },
+ { 0x5687, 49008 },
+ { 0x045F, 49012 },
+ { 0x5683, 49016 },
+ { 0x5689, 49020 },
+ { 0x0473, 49024 },
+ { 0x044A, 49028 },
+ { 0x5647, 49033 },
+ { 0x0501, 49037 },
+ { 0x0503, 49042 },
+ { 0x0509, 49047 },
+ { 0x050B, 49052 },
+ { 0x050D, 49057 },
+ { 0x050F, 49062 },
+ { 0x0505, 49067 },
+ { 0x0507, 49072 },
+ { 0x04BB, 49077 },
+ { 0x5697, 49081 },
+ { 0x5663, 49085 },
+ { 0x5665, 49090 },
+ { 0x5667, 49095 },
+ { 0x044C, 49100 },
+ { 0x5693, 49105 },
+ { 0x045B, 49109 },
+ { 0x5691, 49113 },
+ { 0x568F, 49117 },
+ { 0x044B, 49121 },
+ { 0x5651, 49125 },
+ { 0x04F9, 49132 },
+ { 0x5685, 49138 },
+ { 0x051F, 49142 },
+ { 0x564D, 49147 },
+ { 0x5649, 49152 },
+ { 0x5643, 49156 },
+ { 0x0481, 49160 },
+ { 0x0461, 49164 },
+ { 0x047D, 49168 },
+ { 0x047B, 49174 },
+ { 0x04D9, 49179 },
+ { 0x04DB, 49183 },
+ { 0x0449, 49189 },
+ { 0x0439, 49193 },
+ { 0x048B, 49198 },
+ { 0x045E, 49205 },
+ { 0x04E9, 49210 },
+ { 0x04EB, 49215 },
+ { 0x5659, 49222 },
+ { 0x566D, 49228 },
+ { 0x0467, 49234 },
+ { 0x5641, 49239 },
+ { 0x04A1, 49243 },
+ { 0x565B, 49248 },
+ { 0x0475, 49253 },
+ { 0x0477, 49257 },
+ { 0x564F, 49265 },
+ { 0x5657, 49270 },
+ { 0x0465, 49275 },
+ { 0x046D, 49280 },
+ { 0x5653, 49286 },
+ { 0x565D, 49291 },
+ { 0x0469, 49298 },
+ { 0x04CF, 49304 },
+ { 0x5655, 49308 },
+ { 0x0511, 49313 },
+ { 0x5645, 49318 },
+ { 0x048D, 49323 },
+ { 0x04AF, 49328 },
+ { 0x04B1, 49333 },
+ { 0x04A9, 49340 },
+ { 0x04BD, 49345 },
+ { 0x04BF, 49350 },
+ { 0x04E1, 49357 },
+ { 0x566B, 49362 },
+ { 0x5669, 49367 },
+ { 0x564B, 49372 },
+ { 0x0454, 49377 },
+ { 0x04CC, 49382 },
+ { 0x0456, 49387 },
+ { 0x04D5, 49392 },
+ { 0x04A5, 49397 },
+ { 0x04B5, 49402 },
+ { 0x567E, 49407 },
+ { 0x1D2B, 49409 },
+ { 0x04C0, 49414 },
+ { 0x566E, 49417 },
+ { 0x0410, 49421 },
+ { 0x04D0, 49425 },
+ { 0x04D2, 49431 },
+ { 0x042D, 49437 },
+ { 0x04EC, 49441 },
+ { 0x0418, 49447 },
+ { 0x040D, 49451 },
+ { 0x04E2, 49457 },
+ { 0x04E4, 49463 },
+ { 0x041E, 49469 },
+ { 0x04E6, 49473 },
+ { 0x0423, 49479 },
+ { 0x04F2, 49483 },
+ { 0x04EE, 49490 },
+ { 0x04F0, 49496 },
+ { 0x0411, 49502 },
+ { 0x0414, 49506 },
+ { 0x0424, 49510 },
+ { 0x041B, 49514 },
+ { 0x0512, 49518 },
+ { 0x04C5, 49524 },
+ { 0x0520, 49530 },
+ { 0x041C, 49537 },
+ { 0x04CD, 49541 },
+ { 0x041D, 49547 },
+ { 0x04C7, 49551 },
+ { 0x04C9, 49557 },
+ { 0x0522, 49563 },
+ { 0x04A2, 49570 },
+ { 0x0420, 49576 },
+ { 0x048E, 49580 },
+ { 0x0421, 49586 },
+ { 0x04AA, 49590 },
+ { 0x0425, 49596 },
+ { 0x04FC, 49600 },
+ { 0x04FE, 49606 },
+ { 0x04B2, 49612 },
+ { 0x0415, 49618 },
+ { 0x04D6, 49622 },
+ { 0x0400, 49628 },
+ { 0x0401, 49634 },
+ { 0x0408, 49638 },
+ { 0x041A, 49642 },
+ { 0x04C3, 49646 },
+ { 0x049E, 49652 },
+ { 0x049C, 49658 },
+ { 0x049A, 49665 },
+ { 0x047E, 49671 },
+ { 0x041F, 49675 },
+ { 0x04A6, 49679 },
+ { 0x051A, 49686 },
+ { 0x0422, 49690 },
+ { 0x568A, 49694 },
+ { 0x04AC, 49701 },
+ { 0x0478, 49707 },
+ { 0x0412, 49711 },
+ { 0x051C, 49715 },
+ { 0x042F, 49719 },
+ { 0x0407, 49723 },
+ { 0x565E, 49727 },
+ { 0x042E, 49731 },
+ { 0x0417, 49735 },
+ { 0x0498, 49739 },
+ { 0x04DE, 49745 },
+ { 0x046A, 49751 },
+ { 0x0427, 49756 },
+ { 0x04B8, 49760 },
+ { 0x04B6, 49767 },
+ { 0x04F4, 49773 },
+ { 0x0402, 49779 },
+ { 0x5680, 49783 },
+ { 0x0405, 49787 },
+ { 0x0413, 49791 },
+ { 0x0494, 49795 },
+ { 0x0492, 49802 },
+ { 0x04FA, 49808 },
+ { 0x0490, 49816 },
+ { 0x04F6, 49822 },
+ { 0x0403, 49828 },
+ { 0x5694, 49832 },
+ { 0x040C, 49836 },
+ { 0x046E, 49840 },
+ { 0x0514, 49844 },
+ { 0x0409, 49848 },
+ { 0x040A, 49852 },
+ { 0x0470, 49856 },
+ { 0x0516, 49860 },
+ { 0x0428, 49864 },
+ { 0x0426, 49868 },
+ { 0x568C, 49872 },
+ { 0x0518, 49876 },
+ { 0x0462, 49880 },
+ { 0x0416, 49884 },
+ { 0x04C1, 49888 },
+ { 0x0496, 49894 },
+ { 0x04DC, 49900 },
+ { 0x5686, 49906 },
+ { 0x040F, 49910 },
+ { 0x5682, 49914 },
+ { 0x5688, 49918 },
+ { 0x0472, 49922 },
+ { 0x042A, 49926 },
+ { 0x5646, 49931 },
+ { 0x0500, 49935 },
+ { 0x0502, 49940 },
+ { 0x0508, 49945 },
+ { 0x050A, 49950 },
+ { 0x050C, 49955 },
+ { 0x050E, 49960 },
+ { 0x0504, 49965 },
+ { 0x0506, 49970 },
+ { 0x04BA, 49975 },
+ { 0x5696, 49979 },
+ { 0x5662, 49983 },
+ { 0x5664, 49988 },
+ { 0x5666, 49993 },
+ { 0x042C, 49998 },
+ { 0x5692, 50003 },
+ { 0x040B, 50007 },
+ { 0x5690, 50011 },
+ { 0x568E, 50015 },
+ { 0x042B, 50019 },
+ { 0x5650, 50023 },
+ { 0x04F8, 50030 },
+ { 0x5684, 50036 },
+ { 0x051E, 50040 },
+ { 0x564C, 50045 },
+ { 0x5648, 50050 },
+ { 0x5642, 50054 },
+ { 0x0480, 50058 },
+ { 0x0460, 50062 },
+ { 0x047C, 50066 },
+ { 0x047A, 50072 },
+ { 0x04D8, 50077 },
+ { 0x04DA, 50081 },
+ { 0x0429, 50087 },
+ { 0x0419, 50091 },
+ { 0x048A, 50096 },
+ { 0x040E, 50103 },
+ { 0x04E8, 50108 },
+ { 0x04EA, 50113 },
+ { 0x5658, 50120 },
+ { 0x566C, 50126 },
+ { 0x0466, 50132 },
+ { 0x5640, 50137 },
+ { 0x04A0, 50141 },
+ { 0x565A, 50146 },
+ { 0x0474, 50151 },
+ { 0x0476, 50155 },
+ { 0x564E, 50163 },
+ { 0x5656, 50168 },
+ { 0x0464, 50173 },
+ { 0x046C, 50178 },
+ { 0x5652, 50184 },
+ { 0x565C, 50189 },
+ { 0x0468, 50196 },
+ { 0x5654, 50202 },
+ { 0x0510, 50207 },
+ { 0x5644, 50212 },
+ { 0x048C, 50217 },
+ { 0x04AE, 50222 },
+ { 0x04B0, 50227 },
+ { 0x04A8, 50234 },
+ { 0x04BC, 50239 },
+ { 0x04BE, 50244 },
+ { 0x04E0, 50251 },
+ { 0x566A, 50256 },
+ { 0x5668, 50261 },
+ { 0x564A, 50266 },
+ { 0x0404, 50271 },
+ { 0x04CB, 50276 },
+ { 0x0406, 50281 },
+ { 0x04D4, 50286 },
+ { 0x04A4, 50291 },
+ { 0x04B4, 50296 },
+ { 0x567F, 50301 },
+ { 0x0482, 50303 },
+ { 0x2300, 50306 },
+ { 0x00F7, 50308 },
+ { 0x2215, 50310 },
+ { 0x22C7, 50312 },
+ { 0x279B, 50314 },
+ { 0x2301, 50318 },
+ { 0x2383, 50320 },
+ { 0x2709, 50322 },
+ { 0x1362, 50323 },
+ { 0x1365, 50326 },
+ { 0x1363, 50328 },
+ { 0x1369, 50330 },
+ { 0x136E, 50333 },
+ { 0x136A, 50336 },
+ { 0x136D, 50339 },
+ { 0x136C, 50342 },
+ { 0x1371, 50345 },
+ { 0x1370, 50348 },
+ { 0x136F, 50351 },
+ { 0x136B, 50354 },
+ { 0x1399, 50357 },
+ { 0x1391, 50361 },
+ { 0x1394, 50365 },
+ { 0x1397, 50369 },
+ { 0x1395, 50373 },
+ { 0x1393, 50377 },
+ { 0x1390, 50382 },
+ { 0x1396, 50386 },
+ { 0x1392, 50390 },
+ { 0x1398, 50394 },
+ { 0x1372, 50398 },
+ { 0x137C, 50401 },
+ { 0x1376, 50405 },
+ { 0x1375, 50408 },
+ { 0x1377, 50411 },
+ { 0x1379, 50414 },
+ { 0x137A, 50417 },
+ { 0x1374, 50420 },
+ { 0x1373, 50423 },
+ { 0x137B, 50426 },
+ { 0x1378, 50429 },
+ { 0x1366, 50432 },
+ { 0x1360, 50435 },
+ { 0x1367, 50438 },
+ { 0x1260, 50441 },
+ { 0x1265, 50444 },
+ { 0x1262, 50447 },
+ { 0x1266, 50450 },
+ { 0x1261, 50453 },
+ { 0x1278, 50456 },
+ { 0x127D, 50459 },
+ { 0x127A, 50462 },
+ { 0x127E, 50465 },
+ { 0x1279, 50468 },
+ { 0x12F0, 50471 },
+ { 0x12F5, 50474 },
+ { 0x12F2, 50477 },
+ { 0x12F6, 50480 },
+ { 0x12F1, 50483 },
+ { 0x1348, 50486 },
+ { 0x134D, 50489 },
+ { 0x134A, 50492 },
+ { 0x134E, 50495 },
+ { 0x1349, 50498 },
+ { 0x1308, 50501 },
+ { 0x130D, 50504 },
+ { 0x130A, 50507 },
+ { 0x130E, 50510 },
+ { 0x1309, 50513 },
+ { 0x1200, 50516 },
+ { 0x1205, 50519 },
+ { 0x1202, 50522 },
+ { 0x1206, 50525 },
+ { 0x1201, 50528 },
+ { 0x1300, 50531 },
+ { 0x1305, 50534 },
+ { 0x1302, 50537 },
+ { 0x1306, 50540 },
+ { 0x1301, 50543 },
+ { 0x12A8, 50546 },
+ { 0x12AD, 50549 },
+ { 0x12AA, 50552 },
+ { 0x12AE, 50555 },
+ { 0x12A9, 50558 },
+ { 0x1208, 50561 },
+ { 0x120D, 50564 },
+ { 0x120A, 50567 },
+ { 0x120E, 50570 },
+ { 0x1209, 50573 },
+ { 0x1218, 50576 },
+ { 0x121D, 50579 },
+ { 0x121A, 50582 },
+ { 0x121E, 50585 },
+ { 0x1219, 50588 },
+ { 0x1290, 50591 },
+ { 0x1295, 50594 },
+ { 0x1292, 50597 },
+ { 0x1296, 50600 },
+ { 0x1291, 50603 },
+ { 0x1350, 50606 },
+ { 0x1355, 50609 },
+ { 0x1352, 50612 },
+ { 0x1356, 50615 },
+ { 0x1351, 50618 },
+ { 0x1240, 50621 },
+ { 0x1245, 50624 },
+ { 0x1242, 50627 },
+ { 0x1246, 50630 },
+ { 0x1241, 50633 },
+ { 0x1228, 50636 },
+ { 0x122D, 50639 },
+ { 0x122A, 50642 },
+ { 0x122E, 50645 },
+ { 0x1229, 50648 },
+ { 0x1230, 50651 },
+ { 0x1235, 50654 },
+ { 0x1232, 50657 },
+ { 0x1236, 50660 },
+ { 0x1231, 50663 },
+ { 0x1270, 50666 },
+ { 0x1275, 50669 },
+ { 0x1272, 50672 },
+ { 0x1276, 50675 },
+ { 0x1271, 50678 },
+ { 0x1268, 50681 },
+ { 0x126D, 50684 },
+ { 0x126A, 50687 },
+ { 0x126E, 50690 },
+ { 0x1269, 50693 },
+ { 0x12C8, 50696 },
+ { 0x12CD, 50699 },
+ { 0x12CA, 50702 },
+ { 0x12CE, 50705 },
+ { 0x12C9, 50708 },
+ { 0x1280, 50711 },
+ { 0x1285, 50714 },
+ { 0x1282, 50717 },
+ { 0x1286, 50720 },
+ { 0x1281, 50723 },
+ { 0x12E8, 50726 },
+ { 0x12ED, 50729 },
+ { 0x12EA, 50732 },
+ { 0x12EE, 50735 },
+ { 0x12E9, 50738 },
+ { 0x12D8, 50741 },
+ { 0x12DD, 50744 },
+ { 0x12DA, 50747 },
+ { 0x12DE, 50750 },
+ { 0x12D9, 50753 },
+ { 0x1263, 50756 },
+ { 0x1264, 50759 },
+ { 0x2D85, 50762 },
+ { 0x1267, 50765 },
+ { 0x1387, 50768 },
+ { 0x1385, 50771 },
+ { 0x127B, 50774 },
+ { 0x2DA8, 50777 },
+ { 0x2DAD, 50780 },
+ { 0x2DAA, 50783 },
+ { 0x2DAE, 50786 },
+ { 0x2DA9, 50789 },
+ { 0x127C, 50792 },
+ { 0x1328, 50795 },
+ { 0x132D, 50798 },
+ { 0x132A, 50801 },
+ { 0x132E, 50804 },
+ { 0x1329, 50807 },
+ { 0x2D87, 50810 },
+ { 0x127F, 50813 },
+ { 0x12F3, 50816 },
+ { 0x12F8, 50819 },
+ { 0x12FD, 50822 },
+ { 0x12FA, 50825 },
+ { 0x12FE, 50828 },
+ { 0x12F9, 50831 },
+ { 0x12F4, 50834 },
+ { 0x2D8C, 50837 },
+ { 0x12F7, 50840 },
+ { 0x134B, 50843 },
+ { 0x134C, 50846 },
+ { 0x134F, 50849 },
+ { 0x138B, 50852 },
+ { 0x1389, 50855 },
+ { 0x135A, 50858 },
+ { 0x130B, 50861 },
+ { 0x130C, 50864 },
+ { 0x1318, 50867 },
+ { 0x131D, 50870 },
+ { 0x131A, 50873 },
+ { 0x131E, 50876 },
+ { 0x1319, 50879 },
+ { 0x130F, 50882 },
+ { 0x1310, 50885 },
+ { 0x1315, 50888 },
+ { 0x1312, 50891 },
+ { 0x2DD8, 50894 },
+ { 0x2DDD, 50897 },
+ { 0x2DDA, 50900 },
+ { 0x2DDE, 50903 },
+ { 0x2DD9, 50906 },
+ { 0x1203, 50909 },
+ { 0x1204, 50912 },
+ { 0x1210, 50915 },
+ { 0x1215, 50918 },
+ { 0x1212, 50921 },
+ { 0x1216, 50924 },
+ { 0x1211, 50927 },
+ { 0x1207, 50930 },
+ { 0x1303, 50933 },
+ { 0x1304, 50936 },
+ { 0x2D8E, 50939 },
+ { 0x1307, 50942 },
+ { 0x12AB, 50945 },
+ { 0x12AC, 50948 },
+ { 0x12AF, 50951 },
+ { 0x12B0, 50954 },
+ { 0x12B5, 50957 },
+ { 0x12B2, 50960 },
+ { 0x12B8, 50963 },
+ { 0x12BD, 50966 },
+ { 0x12BA, 50969 },
+ { 0x12BE, 50972 },
+ { 0x12B9, 50975 },
+ { 0x2DC8, 50978 },
+ { 0x2DCD, 50981 },
+ { 0x2DCA, 50984 },
+ { 0x2DCE, 50987 },
+ { 0x2DC9, 50990 },
+ { 0x120B, 50993 },
+ { 0x120C, 50996 },
+ { 0x2D80, 50999 },
+ { 0x120F, 51002 },
+ { 0x121B, 51005 },
+ { 0x121C, 51008 },
+ { 0x2D81, 51011 },
+ { 0x121F, 51014 },
+ { 0x1383, 51017 },
+ { 0x1381, 51020 },
+ { 0x1359, 51023 },
+ { 0x1293, 51026 },
+ { 0x1294, 51029 },
+ { 0x2D88, 51032 },
+ { 0x1297, 51035 },
+ { 0x1298, 51038 },
+ { 0x129D, 51041 },
+ { 0x129A, 51044 },
+ { 0x129E, 51047 },
+ { 0x1299, 51050 },
+ { 0x1353, 51053 },
+ { 0x1354, 51056 },
+ { 0x1330, 51059 },
+ { 0x1335, 51062 },
+ { 0x1332, 51065 },
+ { 0x1336, 51068 },
+ { 0x1331, 51071 },
+ { 0x2D92, 51074 },
+ { 0x1357, 51077 },
+ { 0x138F, 51080 },
+ { 0x138D, 51083 },
+ { 0x1243, 51086 },
+ { 0x1244, 51089 },
+ { 0x1250, 51092 },
+ { 0x1255, 51095 },
+ { 0x1252, 51098 },
+ { 0x1256, 51101 },
+ { 0x1251, 51104 },
+ { 0x1247, 51107 },
+ { 0x1248, 51110 },
+ { 0x124D, 51113 },
+ { 0x124A, 51116 },
+ { 0x2DC0, 51119 },
+ { 0x2DC5, 51122 },
+ { 0x2DC2, 51125 },
+ { 0x2DC6, 51128 },
+ { 0x2DC1, 51131 },
+ { 0x122B, 51134 },
+ { 0x122C, 51137 },
+ { 0x2D82, 51140 },
+ { 0x122F, 51143 },
+ { 0x1358, 51146 },
+ { 0x1233, 51149 },
+ { 0x1234, 51152 },
+ { 0x1238, 51155 },
+ { 0x123D, 51158 },
+ { 0x123A, 51161 },
+ { 0x123E, 51164 },
+ { 0x1239, 51167 },
+ { 0x2D83, 51170 },
+ { 0x2DA0, 51173 },
+ { 0x2DA5, 51176 },
+ { 0x2DA2, 51179 },
+ { 0x2DA6, 51182 },
+ { 0x2DA1, 51185 },
+ { 0x1237, 51188 },
+ { 0x1220, 51191 },
+ { 0x1225, 51194 },
+ { 0x1222, 51197 },
+ { 0x1226, 51200 },
+ { 0x1221, 51203 },
+ { 0x1273, 51206 },
+ { 0x1274, 51209 },
+ { 0x1320, 51212 },
+ { 0x1325, 51215 },
+ { 0x1322, 51218 },
+ { 0x1326, 51221 },
+ { 0x1321, 51224 },
+ { 0x2D86, 51227 },
+ { 0x1338, 51230 },
+ { 0x133D, 51233 },
+ { 0x133A, 51236 },
+ { 0x133E, 51239 },
+ { 0x1339, 51242 },
+ { 0x1277, 51245 },
+ { 0x1340, 51248 },
+ { 0x1345, 51251 },
+ { 0x1342, 51254 },
+ { 0x1346, 51257 },
+ { 0x1341, 51260 },
+ { 0x126B, 51263 },
+ { 0x126C, 51266 },
+ { 0x126F, 51269 },
+ { 0x12CB, 51272 },
+ { 0x12CC, 51275 },
+ { 0x12CF, 51278 },
+ { 0x1283, 51281 },
+ { 0x1284, 51284 },
+ { 0x1287, 51287 },
+ { 0x1288, 51290 },
+ { 0x128D, 51293 },
+ { 0x128A, 51296 },
+ { 0x2DD0, 51299 },
+ { 0x2DD5, 51302 },
+ { 0x2DD2, 51305 },
+ { 0x2DD6, 51308 },
+ { 0x2DD1, 51311 },
+ { 0x12EB, 51314 },
+ { 0x12EC, 51317 },
+ { 0x12EF, 51320 },
+ { 0x12DB, 51323 },
+ { 0x12DC, 51326 },
+ { 0x12E0, 51329 },
+ { 0x12E5, 51332 },
+ { 0x12E2, 51335 },
+ { 0x12E6, 51338 },
+ { 0x12E1, 51341 },
+ { 0x2D8B, 51344 },
+ { 0x12DF, 51347 },
+ { 0x2DB0, 51350 },
+ { 0x2DB5, 51353 },
+ { 0x2DB2, 51356 },
+ { 0x2DB6, 51359 },
+ { 0x2DB1, 51362 },
+ { 0x1386, 51365 },
+ { 0x2DAB, 51368 },
+ { 0x2DAC, 51371 },
+ { 0x2DB8, 51374 },
+ { 0x2DBD, 51377 },
+ { 0x2DBA, 51380 },
+ { 0x2DBE, 51383 },
+ { 0x2DB9, 51386 },
+ { 0x132B, 51389 },
+ { 0x132C, 51392 },
+ { 0x2D90, 51395 },
+ { 0x132F, 51398 },
+ { 0x12FB, 51401 },
+ { 0x12FC, 51404 },
+ { 0x2D8D, 51407 },
+ { 0x12FF, 51410 },
+ { 0x138A, 51413 },
+ { 0x131B, 51416 },
+ { 0x131C, 51419 },
+ { 0x2D93, 51422 },
+ { 0x2D96, 51425 },
+ { 0x2D94, 51428 },
+ { 0x1313, 51431 },
+ { 0x1314, 51434 },
+ { 0x2DDB, 51437 },
+ { 0x2DDC, 51440 },
+ { 0x1213, 51443 },
+ { 0x1214, 51446 },
+ { 0x1217, 51449 },
+ { 0x12B3, 51452 },
+ { 0x12B4, 51455 },
+ { 0x12BB, 51458 },
+ { 0x12BC, 51461 },
+ { 0x12C0, 51464 },
+ { 0x12C5, 51467 },
+ { 0x12C2, 51470 },
+ { 0x2DCB, 51473 },
+ { 0x2DCC, 51476 },
+ { 0x1382, 51479 },
+ { 0x129B, 51482 },
+ { 0x129C, 51485 },
+ { 0x2D89, 51488 },
+ { 0x129F, 51491 },
+ { 0x1333, 51494 },
+ { 0x1334, 51497 },
+ { 0x2D91, 51500 },
+ { 0x1337, 51503 },
+ { 0x138E, 51506 },
+ { 0x1253, 51509 },
+ { 0x1254, 51512 },
+ { 0x1258, 51515 },
+ { 0x125D, 51518 },
+ { 0x125A, 51521 },
+ { 0x124B, 51524 },
+ { 0x124C, 51527 },
+ { 0x2DC3, 51530 },
+ { 0x2DC4, 51533 },
+ { 0x123B, 51536 },
+ { 0x123C, 51539 },
+ { 0x2D84, 51542 },
+ { 0x123F, 51545 },
+ { 0x2DA3, 51548 },
+ { 0x2DA4, 51551 },
+ { 0x1223, 51554 },
+ { 0x1224, 51557 },
+ { 0x1227, 51560 },
+ { 0x1323, 51563 },
+ { 0x1324, 51566 },
+ { 0x2D8F, 51569 },
+ { 0x1327, 51572 },
+ { 0x133B, 51575 },
+ { 0x133C, 51578 },
+ { 0x133F, 51581 },
+ { 0x1343, 51584 },
+ { 0x1344, 51587 },
+ { 0x1347, 51590 },
+ { 0x128B, 51593 },
+ { 0x128C, 51596 },
+ { 0x2DD3, 51599 },
+ { 0x2DD4, 51602 },
+ { 0x12E3, 51605 },
+ { 0x12E4, 51608 },
+ { 0x12E7, 51611 },
+ { 0x2DB3, 51614 },
+ { 0x2DB4, 51617 },
+ { 0x2DBB, 51620 },
+ { 0x2DBC, 51623 },
+ { 0x131F, 51626 },
+ { 0x2D95, 51629 },
+ { 0x12C3, 51632 },
+ { 0x12C4, 51635 },
+ { 0x125B, 51638 },
+ { 0x125C, 51641 },
+ { 0x12A0, 51644 },
+ { 0x12A5, 51648 },
+ { 0x12A2, 51652 },
+ { 0x12A6, 51656 },
+ { 0x12A1, 51660 },
+ { 0x12A3, 51664 },
+ { 0x12A4, 51668 },
+ { 0x2D8A, 51672 },
+ { 0x12A7, 51676 },
+ { 0x1384, 51680 },
+ { 0x1388, 51684 },
+ { 0x1380, 51688 },
+ { 0x138C, 51692 },
+ { 0x12D0, 51696 },
+ { 0x12D5, 51700 },
+ { 0x12D2, 51704 },
+ { 0x12D6, 51708 },
+ { 0x12D1, 51712 },
+ { 0x12D3, 51716 },
+ { 0x12D4, 51720 },
+ { 0x135F, 51724 },
+ { 0x1368, 51728 },
+ { 0x1364, 51731 },
+ { 0x1361, 51733 },
+ { 0x06F1, 51735 },
+ { 0x06F6, 51739 },
+ { 0x06F2, 51743 },
+ { 0x06F5, 51747 },
+ { 0x06F4, 51751 },
+ { 0x06F9, 51755 },
+ { 0x06F0, 51759 },
+ { 0x06F8, 51763 },
+ { 0x06F7, 51767 },
+ { 0x06F3, 51771 },
+ { 0x00AA, 51775 },
+ { 0x23E5, 51778 },
+ { 0x2044, 51779 },
+ { 0x215F, 51781 },
+ { 0x2061, 51784 },
+ { 0x2D00, 51786 },
+ { 0x2D04, 51790 },
+ { 0x2D21, 51794 },
+ { 0x2D08, 51798 },
+ { 0x2D0D, 51802 },
+ { 0x2D13, 51806 },
+ { 0x2D23, 51810 },
+ { 0x2D01, 51814 },
+ { 0x2D1A, 51818 },
+ { 0x2D1C, 51822 },
+ { 0x2D03, 51826 },
+ { 0x2D02, 51830 },
+ { 0x2D20, 51834 },
+ { 0x2D24, 51838 },
+ { 0x2D22, 51842 },
+ { 0x2D25, 51846 },
+ { 0x2D1B, 51850 },
+ { 0x2D09, 51854 },
+ { 0x2D0A, 51858 },
+ { 0x2D0B, 51862 },
+ { 0x2D0C, 51866 },
+ { 0x2D0E, 51870 },
+ { 0x2D17, 51874 },
+ { 0x2D10, 51878 },
+ { 0x2D11, 51882 },
+ { 0x2D07, 51886 },
+ { 0x2D12, 51890 },
+ { 0x2D05, 51894 },
+ { 0x2D1E, 51898 },
+ { 0x2D06, 51902 },
+ { 0x2D1D, 51906 },
+ { 0x2D19, 51910 },
+ { 0x2D16, 51914 },
+ { 0x2D1F, 51918 },
+ { 0x2D15, 51922 },
+ { 0x2D14, 51926 },
+ { 0x2D18, 51930 },
+ { 0x2D0F, 51934 },
+ { 0x10D0, 51938 },
+ { 0x10D4, 51941 },
+ { 0x10F6, 51944 },
+ { 0x10F1, 51947 },
+ { 0x10D8, 51950 },
+ { 0x10DD, 51953 },
+ { 0x10E3, 51956 },
+ { 0x10F3, 51959 },
+ { 0x10F7, 51962 },
+ { 0x10FA, 51965 },
+ { 0x10D1, 51968 },
+ { 0x10EA, 51971 },
+ { 0x10EC, 51974 },
+ { 0x10D3, 51977 },
+ { 0x10D2, 51980 },
+ { 0x10F0, 51983 },
+ { 0x10F4, 51986 },
+ { 0x10F2, 51989 },
+ { 0x10F5, 51992 },
+ { 0x10EB, 51995 },
+ { 0x10D9, 51998 },
+ { 0x10DA, 52001 },
+ { 0x10DB, 52004 },
+ { 0x10DC, 52007 },
+ { 0x10DE, 52010 },
+ { 0x10E7, 52013 },
+ { 0x10E0, 52016 },
+ { 0x10E1, 52019 },
+ { 0x10D7, 52022 },
+ { 0x10E2, 52025 },
+ { 0x10D5, 52028 },
+ { 0x10EE, 52031 },
+ { 0x10D6, 52034 },
+ { 0x10ED, 52037 },
+ { 0x10E9, 52040 },
+ { 0x10E6, 52043 },
+ { 0x10EF, 52046 },
+ { 0x10E5, 52049 },
+ { 0x10E4, 52052 },
+ { 0x10E8, 52055 },
+ { 0x10DF, 52058 },
+ { 0x10F8, 52061 },
+ { 0x10F9, 52064 },
+ { 0x10A0, 52068 },
+ { 0x10A4, 52072 },
+ { 0x10C1, 52076 },
+ { 0x10A8, 52080 },
+ { 0x10AD, 52084 },
+ { 0x10B3, 52088 },
+ { 0x10C3, 52092 },
+ { 0x10A1, 52096 },
+ { 0x10BA, 52100 },
+ { 0x10BC, 52104 },
+ { 0x10A3, 52108 },
+ { 0x10A2, 52112 },
+ { 0x10C0, 52116 },
+ { 0x10C4, 52120 },
+ { 0x10C2, 52124 },
+ { 0x10C5, 52128 },
+ { 0x10BB, 52132 },
+ { 0x10A9, 52136 },
+ { 0x10AA, 52140 },
+ { 0x10AB, 52144 },
+ { 0x10AC, 52148 },
+ { 0x10AE, 52152 },
+ { 0x10B7, 52156 },
+ { 0x10B0, 52160 },
+ { 0x10B1, 52164 },
+ { 0x10A7, 52168 },
+ { 0x10B2, 52172 },
+ { 0x10A5, 52176 },
+ { 0x10BE, 52180 },
+ { 0x10A6, 52184 },
+ { 0x10BD, 52188 },
+ { 0x10B9, 52192 },
+ { 0x10B6, 52196 },
+ { 0x10BF, 52200 },
+ { 0x10B5, 52204 },
+ { 0x10B4, 52208 },
+ { 0x10B8, 52212 },
+ { 0x10AF, 52216 },
+ { 0x10FB, 52220 },
+ { 0x0AD0, 52223 },
+ { 0x0ABC, 52225 },
+ { 0x0ACD, 52228 },
+ { 0x0A83, 52231 },
+ { 0x0A82, 52234 },
+ { 0x0ABD, 52237 },
+ { 0x0A81, 52240 },
+ { 0x0AE7, 52243 },
+ { 0x0AEC, 52246 },
+ { 0x0AE8, 52249 },
+ { 0x0AEB, 52252 },
+ { 0x0AEA, 52255 },
+ { 0x0AEF, 52258 },
+ { 0x0AE6, 52261 },
+ { 0x0AEE, 52264 },
+ { 0x0AED, 52267 },
+ { 0x0AE9, 52270 },
+ { 0x0AF1, 52273 },
+ { 0x0AC7, 52276 },
+ { 0x0ABF, 52280 },
+ { 0x0ACB, 52284 },
+ { 0x0AC1, 52288 },
+ { 0x0ABE, 52292 },
+ { 0x0AC8, 52296 },
+ { 0x0ACC, 52300 },
+ { 0x0AC0, 52304 },
+ { 0x0AC2, 52308 },
+ { 0x0AC5, 52312 },
+ { 0x0AC9, 52317 },
+ { 0x0AE2, 52322 },
+ { 0x0AC3, 52327 },
+ { 0x0AE3, 52332 },
+ { 0x0AC4, 52337 },
+ { 0x0A8D, 52342 },
+ { 0x0A91, 52346 },
+ { 0x0A85, 52350 },
+ { 0x0A8F, 52353 },
+ { 0x0A87, 52356 },
+ { 0x0A93, 52359 },
+ { 0x0A89, 52362 },
+ { 0x0A86, 52365 },
+ { 0x0A90, 52368 },
+ { 0x0A94, 52371 },
+ { 0x0AAC, 52374 },
+ { 0x0A9A, 52377 },
+ { 0x0AA6, 52380 },
+ { 0x0A97, 52383 },
+ { 0x0AB9, 52386 },
+ { 0x0A88, 52389 },
+ { 0x0A9C, 52392 },
+ { 0x0A95, 52395 },
+ { 0x0AB2, 52398 },
+ { 0x0AAE, 52401 },
+ { 0x0AA8, 52404 },
+ { 0x0AAA, 52407 },
+ { 0x0AB0, 52410 },
+ { 0x0AB8, 52413 },
+ { 0x0AA4, 52416 },
+ { 0x0A8A, 52419 },
+ { 0x0AB5, 52422 },
+ { 0x0AAF, 52425 },
+ { 0x0AAD, 52428 },
+ { 0x0A9B, 52431 },
+ { 0x0AA1, 52434 },
+ { 0x0AA7, 52437 },
+ { 0x0A98, 52440 },
+ { 0x0A9D, 52443 },
+ { 0x0A96, 52446 },
+ { 0x0AB3, 52449 },
+ { 0x0A99, 52452 },
+ { 0x0AA3, 52455 },
+ { 0x0A9E, 52458 },
+ { 0x0AAB, 52461 },
+ { 0x0AB6, 52464 },
+ { 0x0AB7, 52467 },
+ { 0x0AA5, 52470 },
+ { 0x0A9F, 52473 },
+ { 0x0AA2, 52476 },
+ { 0x0AA0, 52479 },
+ { 0x0A8C, 52482 },
+ { 0x0A8B, 52486 },
+ { 0x0AE1, 52490 },
+ { 0x0AE0, 52494 },
+ { 0x0A74, 52498 },
+ { 0x0A72, 52501 },
+ { 0x0A73, 52503 },
+ { 0x0A01, 52505 },
+ { 0x0A02, 52509 },
+ { 0x0A3C, 52512 },
+ { 0x0A51, 52515 },
+ { 0x0A4D, 52518 },
+ { 0x0A75, 52521 },
+ { 0x0A03, 52524 },
+ { 0x0A71, 52527 },
+ { 0x0A67, 52529 },
+ { 0x0A6C, 52532 },
+ { 0x0A68, 52535 },
+ { 0x0A6B, 52538 },
+ { 0x0A6A, 52541 },
+ { 0x0A6F, 52544 },
+ { 0x0A66, 52547 },
+ { 0x0A6E, 52550 },
+ { 0x0A6D, 52553 },
+ { 0x0A69, 52556 },
+ { 0x0A70, 52559 },
+ { 0x0A3F, 52561 },
+ { 0x0A41, 52565 },
+ { 0x0A3E, 52569 },
+ { 0x0A48, 52573 },
+ { 0x0A4C, 52577 },
+ { 0x0A47, 52581 },
+ { 0x0A40, 52585 },
+ { 0x0A4B, 52589 },
+ { 0x0A42, 52593 },
+ { 0x0A05, 52597 },
+ { 0x0A07, 52600 },
+ { 0x0A09, 52603 },
+ { 0x0A06, 52606 },
+ { 0x0A10, 52609 },
+ { 0x0A14, 52612 },
+ { 0x0A2C, 52615 },
+ { 0x0A1A, 52618 },
+ { 0x0A26, 52621 },
+ { 0x0A0F, 52624 },
+ { 0x0A5E, 52627 },
+ { 0x0A17, 52630 },
+ { 0x0A39, 52633 },
+ { 0x0A08, 52636 },
+ { 0x0A1C, 52639 },
+ { 0x0A15, 52642 },
+ { 0x0A32, 52645 },
+ { 0x0A2E, 52648 },
+ { 0x0A28, 52651 },
+ { 0x0A13, 52654 },
+ { 0x0A2A, 52657 },
+ { 0x0A30, 52660 },
+ { 0x0A38, 52663 },
+ { 0x0A24, 52666 },
+ { 0x0A0A, 52669 },
+ { 0x0A35, 52672 },
+ { 0x0A2F, 52675 },
+ { 0x0A5B, 52678 },
+ { 0x0A2D, 52681 },
+ { 0x0A1B, 52684 },
+ { 0x0A21, 52687 },
+ { 0x0A27, 52690 },
+ { 0x0A18, 52693 },
+ { 0x0A1D, 52696 },
+ { 0x0A16, 52699 },
+ { 0x0A33, 52702 },
+ { 0x0A19, 52705 },
+ { 0x0A23, 52708 },
+ { 0x0A1E, 52711 },
+ { 0x0A2B, 52714 },
+ { 0x0A5C, 52717 },
+ { 0x0A36, 52720 },
+ { 0x0A25, 52723 },
+ { 0x0A1F, 52726 },
+ { 0x0A22, 52729 },
+ { 0x0A5A, 52732 },
+ { 0x0A59, 52735 },
+ { 0x0A20, 52738 },
+ { 0x3021, 52741 },
+ { 0x3026, 52744 },
+ { 0x3038, 52747 },
+ { 0x3022, 52750 },
+ { 0x3025, 52753 },
+ { 0x3024, 52756 },
+ { 0x3029, 52759 },
+ { 0x3028, 52762 },
+ { 0x3027, 52765 },
+ { 0x3023, 52768 },
+ { 0x303A, 52771 },
+ { 0x3039, 52774 },
+ { 0x4DC6, 52777 },
+ { 0x4DEF, 52781 },
+ { 0x4DE4, 52785 },
+ { 0x4DF8, 52789 },
+ { 0x4DF9, 52794 },
+ { 0x4DDC, 52799 },
+ { 0x4DF3, 52804 },
+ { 0x4DF2, 52810 },
+ { 0x4DF1, 52815 },
+ { 0x4DDD, 52819 },
+ { 0x4DC0, 52824 },
+ { 0x4DF5, 52829 },
+ { 0x4DF7, 52834 },
+ { 0x4DC1, 52838 },
+ { 0x4DD1, 52843 },
+ { 0x4DFE, 52849 },
+ { 0x4DD5, 52853 },
+ { 0x4DE1, 52856 },
+ { 0x4DD9, 52860 },
+ { 0x4DCD, 52864 },
+ { 0x4DDB, 52868 },
+ { 0x4DFC, 52872 },
+ { 0x4DDA, 52876 },
+ { 0x4DCA, 52880 },
+ { 0x4DC8, 52883 },
+ { 0x4DFD, 52887 },
+ { 0x4DFF, 52891 },
+ { 0x4DD4, 52895 },
+ { 0x4DEB, 52899 },
+ { 0x4DD7, 52904 },
+ { 0x4DC7, 52907 },
+ { 0x4DCE, 52911 },
+ { 0x4DED, 52914 },
+ { 0x4DE0, 52918 },
+ { 0x4DC4, 52921 },
+ { 0x4DD2, 52924 },
+ { 0x4DC5, 52927 },
+ { 0x4DE8, 52930 },
+ { 0x4DDF, 52933 },
+ { 0x4DE9, 52936 },
+ { 0x4DE2, 52939 },
+ { 0x4DC9, 52942 },
+ { 0x4DC3, 52945 },
+ { 0x4DF6, 52949 },
+ { 0x4DE3, 52952 },
+ { 0x4DD0, 52958 },
+ { 0x4DEC, 52961 },
+ { 0x4DDE, 52965 },
+ { 0x4DD8, 52968 },
+ { 0x4DD6, 52971 },
+ { 0x4DC2, 52975 },
+ { 0x4DFA, 52981 },
+ { 0x4DCF, 52984 },
+ { 0x4DCC, 52987 },
+ { 0x4DFB, 52990 },
+ { 0x4DE5, 52993 },
+ { 0x4DEE, 52996 },
+ { 0x4DF0, 52999 },
+ { 0x4DCB, 53002 },
+ { 0x4DE7, 53005 },
+ { 0x4DF4, 53008 },
+ { 0x4DE6, 53011 },
+ { 0x4DEA, 53014 },
+ { 0x4DD3, 53017 },
+ { 0x3042, 53020 },
+ { 0x3048, 53023 },
+ { 0x3044, 53026 },
+ { 0x3093, 53029 },
+ { 0x304A, 53032 },
+ { 0x3046, 53035 },
+ { 0x3070, 53038 },
+ { 0x3079, 53041 },
+ { 0x3073, 53044 },
+ { 0x307C, 53047 },
+ { 0x3076, 53050 },
+ { 0x3060, 53053 },
+ { 0x3067, 53056 },
+ { 0x3062, 53059 },
+ { 0x3069, 53062 },
+ { 0x3065, 53065 },
+ { 0x304C, 53068 },
+ { 0x3052, 53071 },
+ { 0x304E, 53074 },
+ { 0x3054, 53077 },
+ { 0x3050, 53080 },
+ { 0x306F, 53083 },
+ { 0x3078, 53086 },
+ { 0x3072, 53089 },
+ { 0x307B, 53092 },
+ { 0x3075, 53095 },
+ { 0x304B, 53098 },
+ { 0x3051, 53101 },
+ { 0x304D, 53104 },
+ { 0x3053, 53107 },
+ { 0x304F, 53110 },
+ { 0x307E, 53113 },
+ { 0x3081, 53116 },
+ { 0x307F, 53119 },
+ { 0x3082, 53122 },
+ { 0x3080, 53125 },
+ { 0x306A, 53128 },
+ { 0x306D, 53131 },
+ { 0x306B, 53134 },
+ { 0x306E, 53137 },
+ { 0x306C, 53140 },
+ { 0x3071, 53143 },
+ { 0x307A, 53146 },
+ { 0x3074, 53149 },
+ { 0x307D, 53152 },
+ { 0x3077, 53155 },
+ { 0x3089, 53158 },
+ { 0x308C, 53161 },
+ { 0x308A, 53164 },
+ { 0x308D, 53167 },
+ { 0x308B, 53170 },
+ { 0x3055, 53173 },
+ { 0x305B, 53176 },
+ { 0x3057, 53179 },
+ { 0x305D, 53182 },
+ { 0x3059, 53185 },
+ { 0x305F, 53188 },
+ { 0x3066, 53191 },
+ { 0x3061, 53194 },
+ { 0x3068, 53197 },
+ { 0x3064, 53200 },
+ { 0x3094, 53203 },
+ { 0x308F, 53206 },
+ { 0x3091, 53209 },
+ { 0x3090, 53212 },
+ { 0x3092, 53215 },
+ { 0x3084, 53218 },
+ { 0x3088, 53221 },
+ { 0x3086, 53224 },
+ { 0x3056, 53227 },
+ { 0x305C, 53230 },
+ { 0x3058, 53233 },
+ { 0x305E, 53236 },
+ { 0x305A, 53239 },
+ { 0x3041, 53242 },
+ { 0x3047, 53246 },
+ { 0x3043, 53250 },
+ { 0x3049, 53254 },
+ { 0x3045, 53258 },
+ { 0x3095, 53262 },
+ { 0x3096, 53266 },
+ { 0x3063, 53270 },
+ { 0x308E, 53274 },
+ { 0x3083, 53278 },
+ { 0x3087, 53282 },
+ { 0x3085, 53286 },
+ { 0x309E, 53290 },
+ { 0x309F, 53294 },
+ { 0x309D, 53297 },
+ { 0x221E, 53300 },
+ { 0x29DE, 53301 },
+ { 0x222B, 53306 },
+ { 0x2A18, 53307 },
+ { 0x2A1A, 53311 },
+ { 0x2A0E, 53314 },
+ { 0x2A1B, 53318 },
+ { 0x2A1C, 53321 },
+ { 0x2A17, 53324 },
+ { 0x2A19, 53330 },
+ { 0x2A15, 53333 },
+ { 0x2A0F, 53338 },
+ { 0x23AE, 53342 },
+ { 0x2A3C, 53344 },
+ { 0x2127, 53346 },
+ { 0x223E, 53349 },
+ { 0x00BF, 53352 },
+ { 0x2054, 53355 },
+ { 0x00A1, 53357 },
+ { 0x2E18, 53360 },
+ { 0x3004, 53362 },
+ { 0x30A2, 53366 },
+ { 0x30A8, 53369 },
+ { 0x30A4, 53372 },
+ { 0x30F3, 53375 },
+ { 0x30AA, 53378 },
+ { 0x30A6, 53381 },
+ { 0x30D0, 53384 },
+ { 0x30D9, 53387 },
+ { 0x30D3, 53390 },
+ { 0x30DC, 53393 },
+ { 0x30D6, 53396 },
+ { 0x30C0, 53399 },
+ { 0x30C7, 53402 },
+ { 0x30C2, 53405 },
+ { 0x30C9, 53408 },
+ { 0x30C5, 53411 },
+ { 0x30AC, 53414 },
+ { 0x30B2, 53417 },
+ { 0x30AE, 53420 },
+ { 0x30B4, 53423 },
+ { 0x30B0, 53426 },
+ { 0x30CF, 53429 },
+ { 0x30D8, 53432 },
+ { 0x30D2, 53435 },
+ { 0x30DB, 53438 },
+ { 0x30D5, 53441 },
+ { 0x30AB, 53444 },
+ { 0x30B1, 53447 },
+ { 0x30AD, 53450 },
+ { 0x30B3, 53453 },
+ { 0x30AF, 53456 },
+ { 0x30DE, 53459 },
+ { 0x30E1, 53462 },
+ { 0x30DF, 53465 },
+ { 0x30E2, 53468 },
+ { 0x30E0, 53471 },
+ { 0x30CA, 53474 },
+ { 0x30CD, 53477 },
+ { 0x30CB, 53480 },
+ { 0x30CE, 53483 },
+ { 0x30CC, 53486 },
+ { 0x30D1, 53489 },
+ { 0x30DA, 53492 },
+ { 0x30D4, 53495 },
+ { 0x30DD, 53498 },
+ { 0x30D7, 53501 },
+ { 0x30E9, 53504 },
+ { 0x30EC, 53507 },
+ { 0x30EA, 53510 },
+ { 0x30ED, 53513 },
+ { 0x30EB, 53516 },
+ { 0x30B5, 53519 },
+ { 0x30BB, 53522 },
+ { 0x30B7, 53525 },
+ { 0x30BD, 53528 },
+ { 0x30B9, 53531 },
+ { 0x30BF, 53534 },
+ { 0x30C6, 53537 },
+ { 0x30C1, 53540 },
+ { 0x30C8, 53543 },
+ { 0x30C4, 53546 },
+ { 0x30F7, 53549 },
+ { 0x30F9, 53552 },
+ { 0x30F8, 53555 },
+ { 0x30FA, 53558 },
+ { 0x30F4, 53561 },
+ { 0x30EF, 53564 },
+ { 0x30F1, 53567 },
+ { 0x30F0, 53570 },
+ { 0x30F2, 53573 },
+ { 0x30E4, 53576 },
+ { 0x30E8, 53579 },
+ { 0x30E6, 53582 },
+ { 0x30B6, 53585 },
+ { 0x30BC, 53588 },
+ { 0x30B8, 53591 },
+ { 0x30BE, 53594 },
+ { 0x30BA, 53597 },
+ { 0x30A1, 53600 },
+ { 0x30A7, 53604 },
+ { 0x30A3, 53608 },
+ { 0x30A9, 53612 },
+ { 0x30A5, 53616 },
+ { 0x31F5, 53620 },
+ { 0x31F8, 53624 },
+ { 0x31F6, 53628 },
+ { 0x31F9, 53632 },
+ { 0x31F7, 53636 },
+ { 0x30F5, 53640 },
+ { 0x30F6, 53644 },
+ { 0x31F0, 53648 },
+ { 0x31FA, 53652 },
+ { 0x31F4, 53656 },
+ { 0x31FB, 53660 },
+ { 0x31FE, 53664 },
+ { 0x31FC, 53668 },
+ { 0x31FF, 53672 },
+ { 0x31FD, 53676 },
+ { 0x31F1, 53680 },
+ { 0x31F2, 53684 },
+ { 0x31F3, 53688 },
+ { 0x30C3, 53692 },
+ { 0x30EE, 53696 },
+ { 0x30E3, 53700 },
+ { 0x30E7, 53704 },
+ { 0x30E5, 53708 },
+ { 0x30FB, 53712 },
+ { 0x30FE, 53715 },
+ { 0x30FF, 53719 },
+ { 0x30FD, 53722 },
+ { 0x2328, 53725 },
+ { 0xC001, 53726 },
+ { 0x26AD, 53728 },
+ { 0x225E, 53730 },
+ { 0x2221, 53732 },
+ { 0x29A9, 53734 },
+ { 0x29A8, 53746 },
+ { 0x29AB, 53758 },
+ { 0x29AA, 53770 },
+ { 0x29AD, 53782 },
+ { 0x29AF, 53794 },
+ { 0x29AC, 53806 },
+ { 0x29AE, 53818 },
+ { 0x299B, 53830 },
+ { 0x299D, 53834 },
+ { 0x23D5, 53839 },
+ { 0x23D6, 53844 },
+ { 0x23D4, 53848 },
+ { 0x23D2, 53853 },
+ { 0x23D1, 53857 },
+ { 0x23D3, 53859 },
+ { 0x23D7, 53863 },
+ { 0x23D9, 53865 },
+ { 0x23D8, 53867 },
+ { 0x02D4, 53869 },
+ { 0x02C4, 53873 },
+ { 0x5770, 53877 },
+ { 0x5718, 53880 },
+ { 0x5717, 53884 },
+ { 0x5719, 53889 },
+ { 0x02FC, 53894 },
+ { 0x02FA, 53899 },
+ { 0x02F0, 53904 },
+ { 0x02EF, 53909 },
+ { 0x02FF, 53914 },
+ { 0x02F1, 53919 },
+ { 0x02F3, 53924 },
+ { 0x02E8, 53928 },
+ { 0x02CF, 53933 },
+ { 0x02CE, 53938 },
+ { 0x02F2, 53943 },
+ { 0x02F7, 53948 },
+ { 0x570B, 53952 },
+ { 0x5710, 53958 },
+ { 0x02CD, 53965 },
+ { 0x571F, 53969 },
+ { 0x02CC, 53975 },
+ { 0x5715, 53980 },
+ { 0x5788, 53986 },
+ { 0x02E7, 53991 },
+ { 0x570A, 53996 },
+ { 0x570F, 54002 },
+ { 0x5714, 54009 },
+ { 0x02EA, 54015 },
+ { 0x02D5, 54021 },
+ { 0x02C5, 54025 },
+ { 0x02D1, 54029 },
+ { 0x02E6, 54034 },
+ { 0x5709, 54039 },
+ { 0x570E, 54045 },
+ { 0x5713, 54052 },
+ { 0x02BF, 54058 },
+ { 0x02C2, 54063 },
+ { 0x02FE, 54067 },
+ { 0x02D6, 54071 },
+ { 0x02EB, 54075 },
+ { 0x02CA, 54081 },
+ { 0x02FB, 54085 },
+ { 0x02F9, 54090 },
+ { 0x5789, 54095 },
+ { 0x02DF, 54098 },
+ { 0x02CB, 54102 },
+ { 0x571A, 54106 },
+ { 0x02D7, 54112 },
+ { 0x02B9, 54116 },
+ { 0x02BE, 54119 },
+ { 0x02C3, 54124 },
+ { 0x02FD, 54128 },
+ { 0x578A, 54131 },
+ { 0x1D43, 54136 },
+ { 0x1D47, 54140 },
+ { 0x1D9C, 54144 },
+ { 0x1D9D, 54148 },
+ { 0x1D48, 54154 },
+ { 0x1D49, 54158 },
+ { 0x1DA0, 54162 },
+ { 0x1D4D, 54166 },
+ { 0x02B0, 54170 },
+ { 0x02B1, 54174 },
+ { 0x1DA4, 54180 },
+ { 0x02B2, 54186 },
+ { 0x1DA8, 54190 },
+ { 0x1D4F, 54196 },
+ { 0x02E1, 54200 },
+ { 0x1DAA, 54204 },
+ { 0x1DA9, 54211 },
+ { 0x1D50, 54218 },
+ { 0x1DAC, 54222 },
+ { 0x1DAE, 54228 },
+ { 0x1DAF, 54235 },
+ { 0x1D52, 54242 },
+ { 0x1D56, 54246 },
+ { 0x02B3, 54250 },
+ { 0x02E2, 54254 },
+ { 0x1DB3, 54258 },
+ { 0x1D57, 54264 },
+ { 0x1DB5, 54268 },
+ { 0x1D58, 54275 },
+ { 0x1DB6, 54279 },
+ { 0x1D5B, 54284 },
+ { 0x1DB9, 54288 },
+ { 0x02B7, 54294 },
+ { 0x02E3, 54298 },
+ { 0x02B8, 54302 },
+ { 0x1DBB, 54306 },
+ { 0x1DBD, 54310 },
+ { 0x1DBC, 54316 },
+ { 0x1D5C, 54323 },
+ { 0x1D61, 54327 },
+ { 0x1D51, 54331 },
+ { 0x1DB4, 54335 },
+ { 0x1D9E, 54339 },
+ { 0x1DBE, 54343 },
+ { 0x1DB2, 54347 },
+ { 0x1D54, 54351 },
+ { 0x1D5D, 54357 },
+ { 0x1DA5, 54361 },
+ { 0x1D4B, 54365 },
+ { 0x1D53, 54370 },
+ { 0x1D45, 54375 },
+ { 0x1D5F, 54379 },
+ { 0x02E0, 54383 },
+ { 0x1D60, 54387 },
+ { 0x1D5E, 54392 },
+ { 0x1D4A, 54397 },
+ { 0x1DBF, 54401 },
+ { 0x1DB1, 54405 },
+ { 0x1D55, 54410 },
+ { 0x1DA2, 54416 },
+ { 0x1D44, 54421 },
+ { 0x1DA3, 54426 },
+ { 0x1D4E, 54431 },
+ { 0x1D5A, 54436 },
+ { 0x1DAD, 54441 },
+ { 0x02B4, 54449 },
+ { 0x02B5, 54454 },
+ { 0x1DBA, 54461 },
+ { 0x1D46, 54466 },
+ { 0x1D4C, 54471 },
+ { 0x1D9B, 54477 },
+ { 0x1DA6, 54482 },
+ { 0x1DA7, 54487 },
+ { 0x1DAB, 54494 },
+ { 0x1DB0, 54499 },
+ { 0x1DB8, 54504 },
+ { 0x02B6, 54509 },
+ { 0x1DA1, 54515 },
+ { 0x1DB7, 54522 },
+ { 0x1D9F, 54526 },
+ { 0x02E4, 54532 },
+ { 0x1D59, 54538 },
+ { 0x02BA, 54543 },
+ { 0x02EE, 54547 },
+ { 0x02C9, 54551 },
+ { 0x02F4, 54554 },
+ { 0x02F6, 54559 },
+ { 0x02F5, 54565 },
+ { 0x571B, 54571 },
+ { 0x571C, 54576 },
+ { 0x02F8, 54581 },
+ { 0x571E, 54585 },
+ { 0x571D, 54591 },
+ { 0x02DE, 54596 },
+ { 0x5721, 54600 },
+ { 0x5720, 54606 },
+ { 0x02BB, 54612 },
+ { 0x1D2C, 54616 },
+ { 0x1D2E, 54620 },
+ { 0x1D30, 54624 },
+ { 0x1D31, 54628 },
+ { 0x1D33, 54632 },
+ { 0x1D34, 54636 },
+ { 0x1D35, 54640 },
+ { 0x1D36, 54644 },
+ { 0x1D37, 54648 },
+ { 0x1D38, 54652 },
+ { 0x1D39, 54656 },
+ { 0x1D3A, 54660 },
+ { 0x1D3C, 54664 },
+ { 0x1D3E, 54668 },
+ { 0x1D3F, 54672 },
+ { 0x1D40, 54676 },
+ { 0x1D41, 54680 },
+ { 0x2C7D, 54684 },
+ { 0x1D42, 54688 },
+ { 0x1D2D, 54692 },
+ { 0x1D3D, 54696 },
+ { 0x1D2F, 54700 },
+ { 0x1D32, 54705 },
+ { 0x1D3B, 54710 },
+ { 0x02D3, 54715 },
+ { 0x02D2, 54721 },
+ { 0x5704, 54727 },
+ { 0x5706, 54733 },
+ { 0x5700, 54739 },
+ { 0x5702, 54745 },
+ { 0x5705, 54751 },
+ { 0x5707, 54757 },
+ { 0x5701, 54763 },
+ { 0x5703, 54769 },
+ { 0x02C0, 54775 },
+ { 0x02EC, 54779 },
+ { 0x1D78, 54782 },
+ { 0x10FC, 54786 },
+ { 0x02BD, 54790 },
+ { 0x02C1, 54794 },
+ { 0x02C8, 54799 },
+ { 0x02E9, 54803 },
+ { 0x570C, 54808 },
+ { 0x5711, 54814 },
+ { 0x5716, 54821 },
+ { 0x02BC, 54827 },
+ { 0x02C6, 54830 },
+ { 0x02E5, 54834 },
+ { 0x5708, 54839 },
+ { 0x570D, 54845 },
+ { 0x5712, 54852 },
+ { 0x02D0, 54858 },
+ { 0x02ED, 54862 },
+ { 0x268B, 54865 },
+ { 0x268A, 54868 },
+ { 0x9300, 54871 },
+ { 0x22B8, 54874 },
+ { 0x228C, 54875 },
+ { 0x228E, 54876 },
+ { 0x228D, 54878 },
+ { 0x206E, 54880 },
+ { 0x24FF, 54883 },
+ { 0x24EB, 54887 },
+ { 0x24EC, 54891 },
+ { 0x24F4, 54895 },
+ { 0x24EF, 54899 },
+ { 0x24F0, 54903 },
+ { 0x24F2, 54907 },
+ { 0x24EE, 54911 },
+ { 0x24F3, 54915 },
+ { 0x24ED, 54919 },
+ { 0x24F1, 54923 },
+ { 0x00A0, 54927 },
+ { 0x22B6, 54929 },
+ { 0x2626, 54931 },
+ { 0x272D, 54933 },
+ { 0x2719, 54936 },
+ { 0x271F, 54939 },
+ { 0x269D, 54942 },
+ { 0x203E, 54945 },
+ { 0x2225, 54946 },
+ { 0x2AF3, 54948 },
+ { 0x2AF2, 54952 },
+ { 0x5876, 54956 },
+ { 0x5877, 54959 },
+ { 0x5875, 54963 },
+ { 0x585D, 54967 },
+ { 0x5860, 54970 },
+ { 0x585E, 54973 },
+ { 0x5861, 54976 },
+ { 0x585F, 54979 },
+ { 0x584E, 54982 },
+ { 0x5844, 54985 },
+ { 0x584A, 54988 },
+ { 0x5866, 54991 },
+ { 0x5864, 54994 },
+ { 0x5842, 54997 },
+ { 0x585C, 55000 },
+ { 0x5846, 55003 },
+ { 0x5840, 55006 },
+ { 0x5859, 55009 },
+ { 0x584F, 55012 },
+ { 0x584B, 55015 },
+ { 0x584C, 55018 },
+ { 0x5862, 55021 },
+ { 0x5858, 55024 },
+ { 0x585B, 55027 },
+ { 0x5848, 55030 },
+ { 0x5853, 55033 },
+ { 0x5863, 55036 },
+ { 0x5857, 55039 },
+ { 0x5855, 55042 },
+ { 0x5845, 55045 },
+ { 0x586B, 55048 },
+ { 0x5852, 55051 },
+ { 0x5865, 55054 },
+ { 0x5841, 55057 },
+ { 0x5843, 55060 },
+ { 0x586C, 55063 },
+ { 0x5847, 55066 },
+ { 0x584D, 55069 },
+ { 0x585A, 55072 },
+ { 0x5849, 55075 },
+ { 0x5850, 55078 },
+ { 0x5869, 55081 },
+ { 0x5854, 55084 },
+ { 0x5851, 55087 },
+ { 0x586A, 55090 },
+ { 0x5856, 55093 },
+ { 0x586F, 55097 },
+ { 0x586D, 55101 },
+ { 0x5870, 55105 },
+ { 0x586E, 55109 },
+ { 0x5873, 55113 },
+ { 0x5874, 55116 },
+ { 0x5871, 55120 },
+ { 0x5867, 55124 },
+ { 0x5868, 55128 },
+ { 0x5872, 55132 },
+ { 0x71F7, 55136 },
+ { 0x71F1, 55141 },
+ { 0x71DA, 55145 },
+ { 0x71EC, 55149 },
+ { 0x71E0, 55153 },
+ { 0x71ED, 55157 },
+ { 0x71DF, 55161 },
+ { 0x71DC, 55165 },
+ { 0x71E4, 55169 },
+ { 0x71EF, 55173 },
+ { 0x71EA, 55177 },
+ { 0x71E9, 55181 },
+ { 0x71F6, 55185 },
+ { 0x71E8, 55189 },
+ { 0x71F3, 55193 },
+ { 0x71FC, 55197 },
+ { 0x71D9, 55202 },
+ { 0x71EB, 55206 },
+ { 0x71D4, 55211 },
+ { 0x71EE, 55215 },
+ { 0x71F8, 55219 },
+ { 0x71F2, 55223 },
+ { 0x71E5, 55228 },
+ { 0x71FB, 55232 },
+ { 0x71D8, 55237 },
+ { 0x71F0, 55241 },
+ { 0x71D5, 55245 },
+ { 0x71E6, 55249 },
+ { 0x71E3, 55253 },
+ { 0x71F9, 55257 },
+ { 0x71D6, 55261 },
+ { 0x71D1, 55265 },
+ { 0x71DB, 55270 },
+ { 0x71E7, 55274 },
+ { 0x71D3, 55278 },
+ { 0x71DE, 55282 },
+ { 0x71F4, 55286 },
+ { 0x71F5, 55290 },
+ { 0x71D7, 55294 },
+ { 0x71DD, 55298 },
+ { 0x71FA, 55302 },
+ { 0x71D2, 55306 },
+ { 0x71E1, 55311 },
+ { 0x71E2, 55315 },
+ { 0x71FD, 55320 },
+ { 0x71D0, 55326 },
+ { 0x272F, 55330 },
+ { 0x2316, 55332 },
+ { 0x227A, 55334 },
+ { 0x227C, 55335 },
+ { 0x227E, 55339 },
+ { 0x22E8, 55343 },
+ { 0x2AB5, 55348 },
+ { 0x2AB9, 55353 },
+ { 0x2AB7, 55359 },
+ { 0x2AB3, 55364 },
+ { 0x2AB1, 55368 },
+ { 0x2AAF, 55374 },
+ { 0x22B0, 55379 },
+ { 0x2397, 55382 },
+ { 0x214A, 55384 },
+ { 0x2596, 55386 },
+ { 0x2597, 55389 },
+ { 0x2598, 55392 },
+ { 0x2599, 55395 },
+ { 0x259A, 55404 },
+ { 0x259B, 55410 },
+ { 0x259C, 55419 },
+ { 0x259D, 55428 },
+ { 0x259E, 55431 },
+ { 0x259F, 55437 },
+ { 0x003F, 55446 },
+ { 0x2048, 55448 },
+ { 0x26BB, 55451 },
+ { 0x267C, 55452 },
+ { 0x211F, 55455 },
+ { 0x2310, 55456 },
+ { 0x29A3, 55459 },
+ { 0x29A5, 55461 },
+ { 0x29B0, 55465 },
+ { 0x2035, 55468 },
+ { 0x223D, 55470 },
+ { 0x22CD, 55472 },
+ { 0x2036, 55475 },
+ { 0x301D, 55478 },
+ { 0x2AED, 55483 },
+ { 0x2E11, 55488 },
+ { 0x2037, 55491 },
+ { 0x204B, 55494 },
+ { 0x2619, 55497 },
+ { 0x2E2E, 55502 },
+ { 0x204F, 55505 },
+ { 0x2143, 55507 },
+ { 0x264F, 55511 },
+ { 0x2730, 55512 },
+ { 0x271E, 55515 },
+ { 0x274D, 55519 },
+ { 0x2618, 55522 },
+ { 0x5673, 55523 },
+ { 0x2263, 55525 },
+ { 0x227B, 55528 },
+ { 0x227D, 55529 },
+ { 0x227F, 55533 },
+ { 0x22E9, 55537 },
+ { 0x2AB6, 55542 },
+ { 0x2ABA, 55547 },
+ { 0x2AB8, 55553 },
+ { 0x2AB4, 55558 },
+ { 0x2AB2, 55562 },
+ { 0x2AB0, 55568 },
+ { 0x22B1, 55573 },
+ { 0x2283, 55576 },
+ { 0x2287, 55578 },
+ { 0x2AC4, 55583 },
+ { 0x228B, 55591 },
+ { 0x2ACC, 55597 },
+ { 0x2AC8, 55603 },
+ { 0x2ACA, 55608 },
+ { 0x2AC6, 55614 },
+ { 0x2ABE, 55619 },
+ { 0x2AC0, 55622 },
+ { 0x2AC2, 55627 },
+ { 0x2AD4, 55632 },
+ { 0x2AD6, 55635 },
+ { 0x297B, 55638 },
+ { 0x2AD8, 55642 },
+ { 0x2AD7, 55650 },
+ { 0x27C9, 55653 },
+ { 0x232F, 55656 },
+ { 0x1772, 55657 },
+ { 0x1773, 55661 },
+ { 0x1760, 55665 },
+ { 0x1761, 55668 },
+ { 0x1762, 55671 },
+ { 0x176A, 55674 },
+ { 0x1767, 55677 },
+ { 0x1764, 55680 },
+ { 0x1763, 55683 },
+ { 0x176E, 55686 },
+ { 0x176B, 55689 },
+ { 0x1768, 55692 },
+ { 0x1769, 55695 },
+ { 0x1770, 55698 },
+ { 0x1766, 55701 },
+ { 0x176F, 55704 },
+ { 0x176C, 55707 },
+ { 0x1765, 55710 },
+ { 0x2D30, 55713 },
+ { 0x2D49, 55716 },
+ { 0x2D53, 55719 },
+ { 0x2D44, 55722 },
+ { 0x2D31, 55725 },
+ { 0x2D37, 55728 },
+ { 0x2D3C, 55731 },
+ { 0x2D33, 55734 },
+ { 0x2D40, 55737 },
+ { 0x2D36, 55740 },
+ { 0x2D3D, 55743 },
+ { 0x2D4D, 55746 },
+ { 0x2D4E, 55749 },
+ { 0x2D4F, 55752 },
+ { 0x2D52, 55755 },
+ { 0x2D47, 55758 },
+ { 0x2D54, 55761 },
+ { 0x2D59, 55764 },
+ { 0x2D5C, 55767 },
+ { 0x2D60, 55770 },
+ { 0x2D61, 55773 },
+ { 0x2D62, 55776 },
+ { 0x2D63, 55779 },
+ { 0x2D3B, 55782 },
+ { 0x2D58, 55785 },
+ { 0x2D32, 55789 },
+ { 0x2D5E, 55792 },
+ { 0x2D39, 55795 },
+ { 0x2D38, 55798 },
+ { 0x2D56, 55801 },
+ { 0x2D43, 55804 },
+ { 0x2D45, 55807 },
+ { 0x2D55, 55810 },
+ { 0x2D5B, 55813 },
+ { 0x2D5A, 55816 },
+ { 0x2D5D, 55819 },
+ { 0x2D5F, 55822 },
+ { 0x2D4A, 55825 },
+ { 0x2D65, 55828 },
+ { 0x2D3A, 55831 },
+ { 0x2D34, 55834 },
+ { 0x2D3F, 55837 },
+ { 0x2D41, 55840 },
+ { 0x2D35, 55845 },
+ { 0x2D42, 55850 },
+ { 0x2D3E, 55854 },
+ { 0x2D48, 55858 },
+ { 0x2D57, 55862 },
+ { 0x2D50, 55866 },
+ { 0x2D46, 55870 },
+ { 0x2D51, 55874 },
+ { 0x2D4C, 55878 },
+ { 0x2D4B, 55882 },
+ { 0x2D64, 55886 },
+ { 0x2D6F, 55890 },
+ { 0x204A, 55895 },
+ { 0x29CA, 55898 },
+ { 0x29CD, 55902 },
+ { 0x29CB, 55907 },
+ { 0x205D, 55910 },
+ { 0x739F, 55911 },
+ { 0x739B, 55914 },
+ { 0x739C, 55917 },
+ { 0x7385, 55920 },
+ { 0x7394, 55923 },
+ { 0x739A, 55926 },
+ { 0x7386, 55929 },
+ { 0x7391, 55932 },
+ { 0x7393, 55935 },
+ { 0x738B, 55938 },
+ { 0x7383, 55941 },
+ { 0x738E, 55944 },
+ { 0x7390, 55947 },
+ { 0x739D, 55950 },
+ { 0x7389, 55953 },
+ { 0x738A, 55956 },
+ { 0x7380, 55959 },
+ { 0x7381, 55962 },
+ { 0x738F, 55965 },
+ { 0x7388, 55968 },
+ { 0x7396, 55971 },
+ { 0x7395, 55974 },
+ { 0x738C, 55977 },
+ { 0x7387, 55980 },
+ { 0x7384, 55983 },
+ { 0x7382, 55986 },
+ { 0x7399, 55989 },
+ { 0x738D, 55992 },
+ { 0x7397, 55995 },
+ { 0x7392, 55998 },
+ { 0x7398, 56001 },
+ { 0x2602, 56004 },
+ { 0x2614, 56005 },
+ { 0x203F, 56009 },
+ { 0x2123, 56010 },
+ { 0x27CA, 56011 },
+ { 0x29D0, 56016 },
+ { 0x2AE4, 56021 },
+ { 0x2AE2, 56026 },
+ { 0x205E, 56031 },
+ { 0x3031, 56034 },
+ { 0x3035, 56038 },
+ { 0x3033, 56044 },
+ { 0x3032, 56050 },
+ { 0x3034, 56057 },
+ { 0x007C, 56066 },
+ { 0x2AEF, 56068 },
+ { 0x2AF0, 56073 },
+ { 0x237F, 56078 },
+ { 0x23D0, 56083 },
+ { 0x26A8, 56086 },
+ { 0x2E2F, 56091 },
+ { 0x299A, 56093 },
+ { 0x22EE, 56096 },
+ { 0x303B, 56098 },
+ { 0x2317, 56102 },
+ { 0x2101, 56104 },
+ { 0x0026, 56108 },
+ { 0x260A, 56109 },
+ { 0x22A6, 56111 },
+ { 0x2623, 56112 },
+ { 0x902F, 56114 },
+ { 0x900E, 56118 },
+ { 0x9085, 56123 },
+ { 0x9046, 56127 },
+ { 0x901A, 56132 },
+ { 0x9040, 56137 },
+ { 0x9079, 56141 },
+ { 0x9030, 56147 },
+ { 0x907D, 56151 },
+ { 0x907C, 56156 },
+ { 0x909C, 56161 },
+ { 0x909E, 56166 },
+ { 0x909A, 56171 },
+ { 0x90A1, 56177 },
+ { 0x909F, 56183 },
+ { 0x909D, 56188 },
+ { 0x909B, 56193 },
+ { 0x90A0, 56198 },
+ { 0x9033, 56203 },
+ { 0x900D, 56209 },
+ { 0x9097, 56214 },
+ { 0x90C8, 56218 },
+ { 0x90C9, 56223 },
+ { 0x90CA, 56228 },
+ { 0x9086, 56233 },
+ { 0x9080, 56237 },
+ { 0x902E, 56242 },
+ { 0x9048, 56246 },
+ { 0x9004, 56251 },
+ { 0x9003, 56256 },
+ { 0x9000, 56261 },
+ { 0x9025, 56265 },
+ { 0x9066, 56269 },
+ { 0x902D, 56273 },
+ { 0x9078, 56277 },
+ { 0x9014, 56282 },
+ { 0x9019, 56286 },
+ { 0x906A, 56290 },
+ { 0x9001, 56295 },
+ { 0x90D0, 56299 },
+ { 0x90D2, 56306 },
+ { 0x90D3, 56313 },
+ { 0x90D1, 56320 },
+ { 0x90CE, 56327 },
+ { 0x90CF, 56332 },
+ { 0x9060, 56337 },
+ { 0x9074, 56342 },
+ { 0x90C5, 56347 },
+ { 0x90CB, 56354 },
+ { 0x90BC, 56361 },
+ { 0x90C7, 56367 },
+ { 0x90C3, 56372 },
+ { 0x90C4, 56379 },
+ { 0x90C6, 56386 },
+ { 0x90BE, 56393 },
+ { 0x9034, 56400 },
+ { 0x90B9, 56405 },
+ { 0x90BD, 56412 },
+ { 0x90BF, 56418 },
+ { 0x90C2, 56424 },
+ { 0x90C1, 56431 },
+ { 0x90BA, 56438 },
+ { 0x90C0, 56444 },
+ { 0x90BB, 56450 },
+ { 0x90CC, 56456 },
+ { 0x90D8, 56462 },
+ { 0x90D9, 56467 },
+ { 0x908F, 56472 },
+ { 0x90F5, 56478 },
+ { 0x9016, 56484 },
+ { 0x9091, 56489 },
+ { 0x9090, 56495 },
+ { 0x90AC, 56501 },
+ { 0x9037, 56507 },
+ { 0x9024, 56512 },
+ { 0x907F, 56516 },
+ { 0x90F4, 56521 },
+ { 0x908B, 56526 },
+ { 0x908A, 56532 },
+ { 0x908C, 56538 },
+ { 0x908E, 56544 },
+ { 0x908D, 56550 },
+ { 0x9057, 56556 },
+ { 0x9047, 56561 },
+ { 0x9015, 56566 },
+ { 0x905B, 56571 },
+ { 0x9020, 56575 },
+ { 0x9059, 56580 },
+ { 0x9026, 56585 },
+ { 0x9017, 56590 },
+ { 0x9029, 56594 },
+ { 0x9069, 56598 },
+ { 0x90E8, 56603 },
+ { 0x900F, 56607 },
+ { 0x9087, 56611 },
+ { 0x9058, 56615 },
+ { 0x9006, 56620 },
+ { 0x9005, 56625 },
+ { 0x90D4, 56630 },
+ { 0x90D6, 56637 },
+ { 0x90D7, 56644 },
+ { 0x90D5, 56651 },
+ { 0x90CD, 56658 },
+ { 0x9050, 56663 },
+ { 0x90EC, 56667 },
+ { 0x90EB, 56672 },
+ { 0x90ED, 56677 },
+ { 0x90EF, 56682 },
+ { 0x90E9, 56687 },
+ { 0x90EE, 56692 },
+ { 0x90EA, 56697 },
+ { 0x9056, 56702 },
+ { 0x9099, 56706 },
+ { 0x9055, 56710 },
+ { 0x90B6, 56714 },
+ { 0x903F, 56721 },
+ { 0x904F, 56725 },
+ { 0x90F3, 56731 },
+ { 0x90F1, 56737 },
+ { 0x901B, 56743 },
+ { 0x9089, 56748 },
+ { 0x9083, 56752 },
+ { 0x9082, 56757 },
+ { 0x9081, 56762 },
+ { 0x9061, 56767 },
+ { 0x905D, 56771 },
+ { 0x9041, 56775 },
+ { 0x9049, 56779 },
+ { 0x903C, 56783 },
+ { 0x907E, 56787 },
+ { 0x901F, 56791 },
+ { 0x9065, 56796 },
+ { 0x902B, 56801 },
+ { 0x902A, 56807 },
+ { 0x9013, 56812 },
+ { 0x9031, 56816 },
+ { 0x9027, 56820 },
+ { 0x9021, 56824 },
+ { 0x9053, 56829 },
+ { 0x9084, 56833 },
+ { 0x9022, 56838 },
+ { 0x9023, 56843 },
+ { 0x9018, 56847 },
+ { 0x9067, 56851 },
+ { 0x903B, 56856 },
+ { 0x90DA, 56861 },
+ { 0x90DB, 56867 },
+ { 0x90DC, 56873 },
+ { 0x90DD, 56878 },
+ { 0x9092, 56883 },
+ { 0x9095, 56887 },
+ { 0x9094, 56893 },
+ { 0x9093, 56900 },
+ { 0x90E6, 56907 },
+ { 0x9068, 56912 },
+ { 0x90B7, 56916 },
+ { 0x9007, 56920 },
+ { 0x903A, 56924 },
+ { 0x9042, 56928 },
+ { 0x904A, 56933 },
+ { 0x900C, 56937 },
+ { 0x90A3, 56941 },
+ { 0x90A5, 56948 },
+ { 0x90B1, 56955 },
+ { 0x90A2, 56961 },
+ { 0x90A6, 56967 },
+ { 0x90AA, 56973 },
+ { 0x90AB, 56979 },
+ { 0x90B3, 56985 },
+ { 0x90A4, 56992 },
+ { 0x90A8, 56998 },
+ { 0x90A9, 57004 },
+ { 0x90A7, 57011 },
+ { 0x90B2, 57016 },
+ { 0x901E, 57022 },
+ { 0x9038, 57026 },
+ { 0x904D, 57030 },
+ { 0x901D, 57035 },
+ { 0x90E2, 57039 },
+ { 0x90E3, 57044 },
+ { 0x90E4, 57050 },
+ { 0x90E5, 57056 },
+ { 0x90DE, 57062 },
+ { 0x90DF, 57067 },
+ { 0x90E0, 57073 },
+ { 0x90E1, 57079 },
+ { 0x9088, 57085 },
+ { 0x9063, 57089 },
+ { 0x9043, 57094 },
+ { 0x9036, 57099 },
+ { 0x90E7, 57104 },
+ { 0x907B, 57109 },
+ { 0x90B0, 57113 },
+ { 0x90AF, 57118 },
+ { 0x90AE, 57123 },
+ { 0x9035, 57128 },
+ { 0x907A, 57132 },
+ { 0x9010, 57136 },
+ { 0x904E, 57140 },
+ { 0x90F2, 57146 },
+ { 0x90F0, 57152 },
+ { 0x901C, 57158 },
+ { 0x9032, 57163 },
+ { 0x9075, 57167 },
+ { 0x902C, 57172 },
+ { 0x9039, 57177 },
+ { 0x905A, 57181 },
+ { 0x9008, 57186 },
+ { 0x9096, 57190 },
+ { 0x900A, 57194 },
+ { 0x900B, 57198 },
+ { 0x905C, 57203 },
+ { 0x90AD, 57207 },
+ { 0x9052, 57213 },
+ { 0x9011, 57219 },
+ { 0x9051, 57223 },
+ { 0x9012, 57228 },
+ { 0x9064, 57233 },
+ { 0x90B4, 57237 },
+ { 0x90B5, 57243 },
+ { 0x9098, 57249 },
+ { 0x90B8, 57253 },
+ { 0x905F, 57257 },
+ { 0x903D, 57262 },
+ { 0x9009, 57267 },
+ { 0x905E, 57271 },
+ { 0x903E, 57276 },
+ { 0x9002, 57281 },
+ { 0x9076, 57285 },
+ { 0x9077, 57290 },
+ { 0x9028, 57295 },
+ { 0x9045, 57299 },
+ { 0x9044, 57303 },
+ { 0x9073, 57307 },
+ { 0x9072, 57311 },
+ { 0x906D, 57315 },
+ { 0x9070, 57319 },
+ { 0x9062, 57323 },
+ { 0x904C, 57327 },
+ { 0x9054, 57331 },
+ { 0x904B, 57335 },
+ { 0x906C, 57339 },
+ { 0x9071, 57343 },
+ { 0x906B, 57347 },
+ { 0x906E, 57351 },
+ { 0x906F, 57355 },
+ { 0x2651, 57359 },
+ { 0x2040, 57360 },
+ { 0x21B7, 57362 },
+ { 0x21BB, 57366 },
+ { 0x2941, 57370 },
+ { 0x27F3, 57374 },
+ { 0x2232, 57378 },
+ { 0x2231, 57381 },
+ { 0x033D, 57383 },
+ { 0x0353, 57386 },
+ { 0x1DD0, 57389 },
+ { 0x031D, 57392 },
+ { 0x1DD1, 57396 },
+ { 0x1DD2, 57399 },
+ { 0x0307, 57402 },
+ { 0x0358, 57405 },
+ { 0x0323, 57409 },
+ { 0x0332, 57412 },
+ { 0x034A, 57415 },
+ { 0x031E, 57419 },
+ { 0x20DC, 57423 },
+ { 0x0309, 57427 },
+ { 0x031B, 57430 },
+ { 0x0351, 57432 },
+ { 0x031C, 57437 },
+ { 0x0318, 57442 },
+ { 0x031A, 57446 },
+ { 0x0349, 57450 },
+ { 0x20D6, 57454 },
+ { 0x20EE, 57458 },
+ { 0x20E1, 57462 },
+ { 0x034D, 57467 },
+ { 0x20D0, 57472 },
+ { 0x1DFE, 57476 },
+ { 0x0354, 57480 },
+ { 0x20EB, 57484 },
+ { 0x0336, 57489 },
+ { 0x0338, 57493 },
+ { 0x20D2, 57497 },
+ { 0x031F, 57502 },
+ { 0x030A, 57506 },
+ { 0x0325, 57509 },
+ { 0x20D8, 57512 },
+ { 0x20E9, 57515 },
+ { 0x0341, 57519 },
+ { 0x0301, 57523 },
+ { 0x0317, 57526 },
+ { 0x0306, 57530 },
+ { 0x032E, 57532 },
+ { 0x030C, 57535 },
+ { 0x032C, 57537 },
+ { 0x0313, 57540 },
+ { 0x0315, 57543 },
+ { 0x0326, 57547 },
+ { 0x0340, 57550 },
+ { 0x0300, 57554 },
+ { 0x0316, 57557 },
+ { 0x0343, 57561 },
+ { 0x9242, 57564 },
+ { 0x9244, 57568 },
+ { 0x9243, 57572 },
+ { 0x0344, 57576 },
+ { 0x0342, 57580 },
+ { 0x0345, 57583 },
+ { 0x0363, 57586 },
+ { 0x0368, 57591 },
+ { 0x1DD7, 57596 },
+ { 0x0369, 57602 },
+ { 0x0364, 57607 },
+ { 0x1DDA, 57612 },
+ { 0x036A, 57617 },
+ { 0x0365, 57622 },
+ { 0x1DDC, 57627 },
+ { 0x1DDD, 57632 },
+ { 0x036B, 57637 },
+ { 0x1DE0, 57642 },
+ { 0x0366, 57647 },
+ { 0x036C, 57652 },
+ { 0x1DCA, 57657 },
+ { 0x1DE3, 57663 },
+ { 0x1DE4, 57669 },
+ { 0x036D, 57674 },
+ { 0x0367, 57679 },
+ { 0x036E, 57684 },
+ { 0x036F, 57689 },
+ { 0x1DE6, 57694 },
+ { 0x1DD4, 57699 },
+ { 0x1DD5, 57704 },
+ { 0x1DD6, 57709 },
+ { 0x1DD9, 57714 },
+ { 0x1DE5, 57719 },
+ { 0x1DD8, 57725 },
+ { 0x1DD3, 57731 },
+ { 0x1DDB, 57739 },
+ { 0x1DDE, 57745 },
+ { 0x1DDF, 57751 },
+ { 0x1DE1, 57757 },
+ { 0x1DE2, 57763 },
+ { 0x0320, 57769 },
+ { 0x0357, 57773 },
+ { 0x0339, 57778 },
+ { 0x0319, 57783 },
+ { 0x20D7, 57787 },
+ { 0x20EF, 57791 },
+ { 0x20D1, 57795 },
+ { 0x0356, 57799 },
+ { 0x1DFF, 57806 },
+ { 0x0350, 57813 },
+ { 0x0355, 57817 },
+ { 0x0335, 57821 },
+ { 0x0337, 57825 },
+ { 0x20D3, 57829 },
+ { 0x1DC2, 57834 },
+ { 0x20DB, 57837 },
+ { 0x0303, 57841 },
+ { 0x0330, 57843 },
+ { 0x0334, 57846 },
+ { 0x034C, 57849 },
+ { 0x0346, 57854 },
+ { 0x032A, 57857 },
+ { 0x1DC1, 57860 },
+ { 0x1DC0, 57864 },
+ { 0x0333, 57868 },
+ { 0x035A, 57872 },
+ { 0x030B, 57876 },
+ { 0x035D, 57880 },
+ { 0x035C, 57883 },
+ { 0x030F, 57887 },
+ { 0x0360, 57891 },
+ { 0x6E22, 57894 },
+ { 0x6E23, 57899 },
+ { 0x035E, 57904 },
+ { 0x035F, 57907 },
+ { 0x0361, 57911 },
+ { 0x033F, 57915 },
+ { 0x030E, 57918 },
+ { 0x0348, 57923 },
+ { 0x20E6, 57928 },
+ { 0x1DCD, 57933 },
+ { 0x0362, 57937 },
+ { 0x0347, 57942 },
+ { 0x0304, 57946 },
+ { 0x6E24, 57948 },
+ { 0x0331, 57952 },
+ { 0x6E25, 57955 },
+ { 0x0328, 57959 },
+ { 0x1DCE, 57961 },
+ { 0x033B, 57964 },
+ { 0x20E8, 57967 },
+ { 0x0312, 57970 },
+ { 0x035B, 57974 },
+ { 0x1DCF, 57977 },
+ { 0x20E7, 57980 },
+ { 0x0327, 57983 },
+ { 0x0352, 57985 },
+ { 0x20E5, 57987 },
+ { 0x033C, 57991 },
+ { 0x034E, 57994 },
+ { 0x20F0, 57998 },
+ { 0x0359, 58001 },
+ { 0x5670, 58004 },
+ { 0x0485, 58009 },
+ { 0x0486, 58013 },
+ { 0x0483, 58017 },
+ { 0x566F, 58020 },
+ { 0x567C, 58023 },
+ { 0x2DF6, 58026 },
+ { 0x2DEA, 58030 },
+ { 0x2DE0, 58034 },
+ { 0x2DE3, 58038 },
+ { 0x2DE7, 58042 },
+ { 0x2DE8, 58046 },
+ { 0x2DE9, 58050 },
+ { 0x2DEC, 58054 },
+ { 0x2DED, 58058 },
+ { 0x2DEF, 58062 },
+ { 0x2DF7, 58066 },
+ { 0x2DE6, 58070 },
+ { 0x2DEB, 58074 },
+ { 0x2DEE, 58078 },
+ { 0x2DE1, 58082 },
+ { 0x2DFB, 58086 },
+ { 0x2DE5, 58090 },
+ { 0x2DFE, 58094 },
+ { 0x2DF1, 58099 },
+ { 0x2DE2, 58103 },
+ { 0x2DF2, 58107 },
+ { 0x2DF0, 58111 },
+ { 0x2DFA, 58115 },
+ { 0x2DE4, 58119 },
+ { 0x2DF4, 58123 },
+ { 0x2DF8, 58127 },
+ { 0x2DF5, 58131 },
+ { 0x2DF3, 58135 },
+ { 0x2DFD, 58139 },
+ { 0x2DFC, 58144 },
+ { 0x2DFF, 58149 },
+ { 0x2DF9, 58155 },
+ { 0x5671, 58160 },
+ { 0x0488, 58165 },
+ { 0x567D, 58170 },
+ { 0x0489, 58173 },
+ { 0x0487, 58177 },
+ { 0x5672, 58180 },
+ { 0x0484, 58185 },
+ { 0x034F, 58188 },
+ { 0x0311, 58191 },
+ { 0x032F, 58194 },
+ { 0x033A, 58198 },
+ { 0x032B, 58202 },
+ { 0x6E20, 58207 },
+ { 0x6E21, 58211 },
+ { 0x0305, 58215 },
+ { 0x0314, 58217 },
+ { 0x030D, 58221 },
+ { 0x0329, 58225 },
+ { 0x033E, 58229 },
+ { 0x20D9, 58232 },
+ { 0x20D5, 58236 },
+ { 0x0308, 58240 },
+ { 0x0324, 58242 },
+ { 0x20DD, 58245 },
+ { 0x20E0, 58248 },
+ { 0x20E3, 58252 },
+ { 0x20E2, 58255 },
+ { 0x20DE, 58258 },
+ { 0x20E4, 58261 },
+ { 0x20DF, 58266 },
+ { 0x20EA, 58269 },
+ { 0x20ED, 58273 },
+ { 0x0322, 58279 },
+ { 0x0302, 58283 },
+ { 0x032D, 58286 },
+ { 0x6E26, 58290 },
+ { 0x034B, 58293 },
+ { 0x20EC, 58296 },
+ { 0x1DC3, 58302 },
+ { 0x0310, 58305 },
+ { 0x0321, 58307 },
+ { 0x1DC7, 58311 },
+ { 0x1DCB, 58313 },
+ { 0x1DC5, 58315 },
+ { 0x1DC4, 58317 },
+ { 0x1DCC, 58319 },
+ { 0x1DC6, 58321 },
+ { 0x20DA, 58323 },
+ { 0x20D4, 58327 },
+ { 0x1DC9, 58331 },
+ { 0x1DC8, 58333 },
+ { 0x3099, 58335 },
+ { 0x309A, 58340 },
+ { 0x2A6D, 58345 },
+ { 0x00A9, 58349 },
+ { 0x8000, 58351 },
+ { 0x8001, 58354 },
+ { 0x8004, 58359 },
+ { 0x8002, 58364 },
+ { 0x8005, 58369 },
+ { 0x8008, 58374 },
+ { 0x8003, 58379 },
+ { 0x8007, 58385 },
+ { 0x8006, 58390 },
+ { 0x808A, 58396 },
+ { 0x808C, 58399 },
+ { 0x808B, 58407 },
+ { 0x813F, 58412 },
+ { 0x8140, 58415 },
+ { 0x830B, 58419 },
+ { 0x830D, 58422 },
+ { 0x830C, 58427 },
+ { 0x8310, 58431 },
+ { 0x830E, 58441 },
+ { 0x830F, 58452 },
+ { 0x8009, 58460 },
+ { 0x800A, 58463 },
+ { 0x8015, 58466 },
+ { 0x8014, 58470 },
+ { 0x800F, 58479 },
+ { 0x800D, 58484 },
+ { 0x8010, 58489 },
+ { 0x800B, 58495 },
+ { 0x800C, 58500 },
+ { 0x800E, 58506 },
+ { 0x8011, 58512 },
+ { 0x8012, 58517 },
+ { 0x8013, 58522 },
+ { 0x801C, 58527 },
+ { 0x801D, 58530 },
+ { 0x801E, 58533 },
+ { 0x801F, 58538 },
+ { 0x8020, 58545 },
+ { 0x8021, 58548 },
+ { 0x8024, 58553 },
+ { 0x8026, 58558 },
+ { 0x8027, 58563 },
+ { 0x8028, 58568 },
+ { 0x8022, 58573 },
+ { 0x8023, 58578 },
+ { 0x8025, 58583 },
+ { 0x802D, 58588 },
+ { 0x802E, 58591 },
+ { 0x8031, 58596 },
+ { 0x8030, 58602 },
+ { 0x802F, 58611 },
+ { 0x8040, 58616 },
+ { 0x8049, 58619 },
+ { 0x804A, 58622 },
+ { 0x804B, 58627 },
+ { 0x804C, 58632 },
+ { 0x804D, 58638 },
+ { 0x804E, 58641 },
+ { 0x804F, 58647 },
+ { 0x8050, 58653 },
+ { 0x8055, 58658 },
+ { 0x8072, 58661 },
+ { 0x807A, 58664 },
+ { 0x807C, 58667 },
+ { 0x807B, 58671 },
+ { 0x807D, 58676 },
+ { 0x808D, 58680 },
+ { 0x808E, 58683 },
+ { 0x8093, 58692 },
+ { 0x8090, 58697 },
+ { 0x808F, 58702 },
+ { 0x8091, 58707 },
+ { 0x8092, 58712 },
+ { 0x8096, 58717 },
+ { 0x8097, 58720 },
+ { 0x809A, 58723 },
+ { 0x8098, 58728 },
+ { 0x8099, 58733 },
+ { 0x809D, 58739 },
+ { 0x809B, 58743 },
+ { 0x809C, 58748 },
+ { 0x80B5, 58753 },
+ { 0x80B6, 58756 },
+ { 0x8100, 58760 },
+ { 0x8101, 58763 },
+ { 0x8102, 58768 },
+ { 0x8103, 58773 },
+ { 0x8116, 58778 },
+ { 0x8117, 58781 },
+ { 0x8129, 58786 },
+ { 0x812B, 58789 },
+ { 0x812A, 58793 },
+ { 0x812D, 58797 },
+ { 0x8136, 58800 },
+ { 0x812E, 58805 },
+ { 0x8130, 58810 },
+ { 0x8132, 58815 },
+ { 0x8133, 58820 },
+ { 0x8134, 58825 },
+ { 0x8135, 58830 },
+ { 0x812F, 58835 },
+ { 0x8131, 58840 },
+ { 0x8137, 58845 },
+ { 0x8141, 58848 },
+ { 0x8145, 58851 },
+ { 0x814B, 58854 },
+ { 0x814C, 58857 },
+ { 0x814E, 58863 },
+ { 0x814F, 58866 },
+ { 0x8152, 58871 },
+ { 0x8150, 58875 },
+ { 0x8151, 58880 },
+ { 0x8154, 58885 },
+ { 0x8155, 58888 },
+ { 0x8157, 58891 },
+ { 0x8158, 58894 },
+ { 0x8187, 58899 },
+ { 0x8159, 58904 },
+ { 0x815A, 58909 },
+ { 0x815F, 58916 },
+ { 0x8162, 58921 },
+ { 0x8167, 58926 },
+ { 0x816B, 58931 },
+ { 0x816E, 58936 },
+ { 0x8170, 58941 },
+ { 0x8172, 58946 },
+ { 0x8173, 58951 },
+ { 0x8174, 58956 },
+ { 0x8175, 58961 },
+ { 0x8176, 58968 },
+ { 0x8177, 58975 },
+ { 0x8178, 58982 },
+ { 0x8179, 58987 },
+ { 0x817A, 58994 },
+ { 0x817C, 58999 },
+ { 0x817D, 59004 },
+ { 0x817E, 59009 },
+ { 0x8188, 59014 },
+ { 0x8189, 59019 },
+ { 0x818C, 59024 },
+ { 0x815C, 59029 },
+ { 0x815E, 59034 },
+ { 0x8163, 59039 },
+ { 0x8165, 59044 },
+ { 0x8166, 59049 },
+ { 0x816D, 59058 },
+ { 0x816F, 59063 },
+ { 0x8171, 59068 },
+ { 0x817B, 59073 },
+ { 0x817F, 59078 },
+ { 0x8180, 59083 },
+ { 0x8181, 59088 },
+ { 0x8183, 59093 },
+ { 0x8184, 59098 },
+ { 0x8186, 59103 },
+ { 0x818B, 59108 },
+ { 0x815B, 59113 },
+ { 0x8161, 59118 },
+ { 0x8164, 59123 },
+ { 0x8168, 59129 },
+ { 0x8169, 59134 },
+ { 0x816A, 59141 },
+ { 0x816C, 59148 },
+ { 0x8182, 59153 },
+ { 0x818A, 59158 },
+ { 0x815D, 59165 },
+ { 0x8160, 59170 },
+ { 0x8185, 59175 },
+ { 0x81A0, 59180 },
+ { 0x81A2, 59183 },
+ { 0x81A3, 59188 },
+ { 0x81A1, 59193 },
+ { 0x81AA, 59198 },
+ { 0x81AB, 59201 },
+ { 0x81B7, 59213 },
+ { 0x81F7, 59216 },
+ { 0x81FB, 59219 },
+ { 0x81FC, 59222 },
+ { 0x8220, 59227 },
+ { 0x8222, 59230 },
+ { 0x8221, 59234 },
+ { 0x8228, 59239 },
+ { 0x822A, 59242 },
+ { 0x822C, 59245 },
+ { 0x822D, 59248 },
+ { 0x823E, 59253 },
+ { 0x8248, 59256 },
+ { 0x8249, 59259 },
+ { 0x824A, 59264 },
+ { 0x824B, 59269 },
+ { 0x824C, 59273 },
+ { 0x824D, 59276 },
+ { 0x8261, 59281 },
+ { 0x827A, 59284 },
+ { 0x827F, 59287 },
+ { 0x8280, 59290 },
+ { 0x8284, 59295 },
+ { 0x8285, 59300 },
+ { 0x8287, 59305 },
+ { 0x8281, 59310 },
+ { 0x8282, 59315 },
+ { 0x8283, 59320 },
+ { 0x8286, 59325 },
+ { 0x8288, 59330 },
+ { 0x8289, 59335 },
+ { 0x828F, 59340 },
+ { 0x8291, 59343 },
+ { 0x8292, 59346 },
+ { 0x8293, 59349 },
+ { 0x82DB, 59352 },
+ { 0x82DC, 59355 },
+ { 0x82E2, 59359 },
+ { 0x82E3, 59362 },
+ { 0x82EB, 59367 },
+ { 0x82EF, 59370 },
+ { 0x82ED, 59374 },
+ { 0x82EE, 59379 },
+ { 0x82EC, 59384 },
+ { 0x82FC, 59388 },
+ { 0x82FD, 59391 },
+ { 0x82FE, 59395 },
+ { 0x82FF, 59398 },
+ { 0x8305, 59402 },
+ { 0x8311, 59405 },
+ { 0x8312, 59408 },
+ { 0x8313, 59411 },
+ { 0x8319, 59414 },
+ { 0x8317, 59418 },
+ { 0x8318, 59427 },
+ { 0x8316, 59437 },
+ { 0x8315, 59442 },
+ { 0x8314, 59447 },
+ { 0x831A, 59451 },
+ { 0x831B, 59455 },
+ { 0x831D, 59461 },
+ { 0x8321, 59464 },
+ { 0x831F, 59469 },
+ { 0x8320, 59476 },
+ { 0x831E, 59481 },
+ { 0x8326, 59486 },
+ { 0x8327, 59489 },
+ { 0x8328, 59493 },
+ { 0x832A, 59496 },
+ { 0x8329, 59500 },
+ { 0x835D, 59505 },
+ { 0x835E, 59508 },
+ { 0x835F, 59512 },
+ { 0x8363, 59518 },
+ { 0x8364, 59521 },
+ { 0x836A, 59526 },
+ { 0x8016, 59529 },
+ { 0x8019, 59532 },
+ { 0x8018, 59539 },
+ { 0x801A, 59545 },
+ { 0x801B, 59550 },
+ { 0x8017, 59555 },
+ { 0x8038, 59560 },
+ { 0x803A, 59563 },
+ { 0x803C, 59568 },
+ { 0x803D, 59575 },
+ { 0x803B, 59588 },
+ { 0x8039, 59600 },
+ { 0x8041, 59605 },
+ { 0x8044, 59608 },
+ { 0x8045, 59611 },
+ { 0x8047, 59616 },
+ { 0x8053, 59619 },
+ { 0x8056, 59622 },
+ { 0x8057, 59625 },
+ { 0x805A, 59633 },
+ { 0x805B, 59639 },
+ { 0x805C, 59645 },
+ { 0x805D, 59653 },
+ { 0x8060, 59659 },
+ { 0x8061, 59665 },
+ { 0x8062, 59671 },
+ { 0x8064, 59679 },
+ { 0x8065, 59685 },
+ { 0x8066, 59691 },
+ { 0x8068, 59699 },
+ { 0x806A, 59705 },
+ { 0x806C, 59711 },
+ { 0x805F, 59719 },
+ { 0x8063, 59725 },
+ { 0x8067, 59731 },
+ { 0x8069, 59737 },
+ { 0x806D, 59745 },
+ { 0x8058, 59751 },
+ { 0x805E, 59757 },
+ { 0x806B, 59763 },
+ { 0x8059, 59769 },
+ { 0x806E, 59775 },
+ { 0x806F, 59778 },
+ { 0x8073, 59781 },
+ { 0x8074, 59784 },
+ { 0x8075, 59787 },
+ { 0x8077, 59792 },
+ { 0x8078, 59795 },
+ { 0x807E, 59802 },
+ { 0x807F, 59805 },
+ { 0x8081, 59810 },
+ { 0x8083, 59813 },
+ { 0x8084, 59816 },
+ { 0x80B7, 59819 },
+ { 0x80ED, 59822 },
+ { 0x80B8, 59827 },
+ { 0x80B9, 59836 },
+ { 0x80BA, 59843 },
+ { 0x80EA, 59850 },
+ { 0x80BC, 59855 },
+ { 0x80C3, 59860 },
+ { 0x80C4, 59865 },
+ { 0x80C7, 59870 },
+ { 0x80C8, 59875 },
+ { 0x80C9, 59882 },
+ { 0x80CA, 59887 },
+ { 0x80CD, 59895 },
+ { 0x80D1, 59900 },
+ { 0x80D4, 59909 },
+ { 0x80DD, 59916 },
+ { 0x80DE, 59921 },
+ { 0x80DF, 59928 },
+ { 0x80E2, 59933 },
+ { 0x80EB, 59938 },
+ { 0x80EC, 59943 },
+ { 0x80BB, 59950 },
+ { 0x80BD, 59958 },
+ { 0x80BF, 59963 },
+ { 0x80C0, 59968 },
+ { 0x80C1, 59975 },
+ { 0x80C2, 59980 },
+ { 0x80C5, 59987 },
+ { 0x80C6, 59994 },
+ { 0x80CC, 59999 },
+ { 0x80CE, 60004 },
+ { 0x80CF, 60009 },
+ { 0x80D2, 60016 },
+ { 0x80D3, 60021 },
+ { 0x80D6, 60028 },
+ { 0x80D7, 60034 },
+ { 0x80D8, 60043 },
+ { 0x80DA, 60048 },
+ { 0x80DB, 60053 },
+ { 0x80DC, 60060 },
+ { 0x80E0, 60067 },
+ { 0x80E1, 60072 },
+ { 0x80E3, 60079 },
+ { 0x80E4, 60084 },
+ { 0x80E5, 60089 },
+ { 0x80E6, 60094 },
+ { 0x80E8, 60101 },
+ { 0x80BE, 60106 },
+ { 0x80CB, 60113 },
+ { 0x80D0, 60119 },
+ { 0x80D5, 60126 },
+ { 0x80E7, 60131 },
+ { 0x80E9, 60136 },
+ { 0x80D9, 60141 },
+ { 0x80F0, 60146 },
+ { 0x80F1, 60149 },
+ { 0x80F2, 60157 },
+ { 0x80F3, 60160 },
+ { 0x80F5, 60169 },
+ { 0x80F6, 60172 },
+ { 0x80FB, 60175 },
+ { 0x8104, 60178 },
+ { 0x8105, 60181 },
+ { 0x8106, 60186 },
+ { 0x8118, 60191 },
+ { 0x811D, 60194 },
+ { 0x8119, 60198 },
+ { 0x811A, 60203 },
+ { 0x811B, 60211 },
+ { 0x811C, 60216 },
+ { 0x811E, 60223 },
+ { 0x8121, 60226 },
+ { 0x811F, 60232 },
+ { 0x8120, 60239 },
+ { 0x8122, 60244 },
+ { 0x8123, 60247 },
+ { 0x8124, 60250 },
+ { 0x8125, 60255 },
+ { 0x812C, 60258 },
+ { 0x8146, 60261 },
+ { 0x8148, 60264 },
+ { 0x8147, 60268 },
+ { 0x814A, 60272 },
+ { 0x8149, 60276 },
+ { 0x814D, 60287 },
+ { 0x8156, 60290 },
+ { 0x818D, 60293 },
+ { 0x818E, 60296 },
+ { 0x818F, 60301 },
+ { 0x8195, 60304 },
+ { 0x8196, 60307 },
+ { 0x8197, 60313 },
+ { 0x8198, 60316 },
+ { 0x8199, 60321 },
+ { 0x81A4, 60326 },
+ { 0x81A5, 60329 },
+ { 0x81AC, 60332 },
+ { 0x81AD, 60335 },
+ { 0x81AE, 60338 },
+ { 0x81AF, 60343 },
+ { 0x81B0, 60346 },
+ { 0x81B1, 60349 },
+ { 0x81B2, 60353 },
+ { 0x81B3, 60356 },
+ { 0x81B4, 60359 },
+ { 0x81F2, 60364 },
+ { 0x81F3, 60367 },
+ { 0x81F4, 60372 },
+ { 0x81F5, 60375 },
+ { 0x81F6, 60380 },
+ { 0x81F8, 60387 },
+ { 0x81FD, 60390 },
+ { 0x8211, 60393 },
+ { 0x81FE, 60397 },
+ { 0x8203, 60402 },
+ { 0x8204, 60409 },
+ { 0x8208, 60414 },
+ { 0x8209, 60419 },
+ { 0x820B, 60426 },
+ { 0x820C, 60433 },
+ { 0x820D, 60438 },
+ { 0x820E, 60443 },
+ { 0x81FF, 60450 },
+ { 0x8200, 60455 },
+ { 0x8201, 60460 },
+ { 0x8202, 60466 },
+ { 0x8205, 60472 },
+ { 0x8206, 60477 },
+ { 0x8207, 60482 },
+ { 0x820F, 60489 },
+ { 0x8210, 60496 },
+ { 0x820A, 60501 },
+ { 0x8215, 60506 },
+ { 0x8214, 60510 },
+ { 0x8212, 60514 },
+ { 0x8213, 60519 },
+ { 0x8216, 60524 },
+ { 0x821B, 60527 },
+ { 0x821C, 60530 },
+ { 0x821D, 60533 },
+ { 0x821E, 60536 },
+ { 0x821F, 60541 },
+ { 0x8223, 60549 },
+ { 0x8224, 60552 },
+ { 0x8225, 60555 },
+ { 0x8229, 60558 },
+ { 0x822B, 60561 },
+ { 0x822E, 60564 },
+ { 0x822F, 60567 },
+ { 0x823F, 60571 },
+ { 0x8246, 60574 },
+ { 0x8245, 60577 },
+ { 0x824E, 60581 },
+ { 0x824F, 60584 },
+ { 0x8251, 60587 },
+ { 0x8250, 60595 },
+ { 0x8263, 60601 },
+ { 0x826A, 60604 },
+ { 0x8269, 60609 },
+ { 0x8264, 60613 },
+ { 0x8266, 60619 },
+ { 0x8267, 60625 },
+ { 0x8268, 60636 },
+ { 0x8265, 60642 },
+ { 0x826B, 60648 },
+ { 0x826C, 60653 },
+ { 0x827B, 60661 },
+ { 0x827C, 60664 },
+ { 0x827D, 60667 },
+ { 0x8290, 60670 },
+ { 0x8295, 60673 },
+ { 0x82A8, 60676 },
+ { 0x82A7, 60680 },
+ { 0x8296, 60685 },
+ { 0x8297, 60690 },
+ { 0x8299, 60695 },
+ { 0x829D, 60700 },
+ { 0x82A2, 60705 },
+ { 0x82A3, 60710 },
+ { 0x82A4, 60715 },
+ { 0x82A5, 60720 },
+ { 0x8298, 60725 },
+ { 0x829A, 60730 },
+ { 0x829B, 60735 },
+ { 0x829C, 60740 },
+ { 0x829E, 60745 },
+ { 0x829F, 60750 },
+ { 0x82A1, 60755 },
+ { 0x82A6, 60760 },
+ { 0x82A0, 60765 },
+ { 0x8294, 60770 },
+ { 0x82A9, 60774 },
+ { 0x82AA, 60777 },
+ { 0x82AC, 60783 },
+ { 0x82AD, 60786 },
+ { 0x82BA, 60789 },
+ { 0x82BB, 60792 },
+ { 0x82BC, 60796 },
+ { 0x82BD, 60807 },
+ { 0x82D7, 60818 },
+ { 0x82D8, 60821 },
+ { 0x82DD, 60827 },
+ { 0x82E4, 60830 },
+ { 0x82E7, 60833 },
+ { 0x82E9, 60836 },
+ { 0x82F0, 60839 },
+ { 0x82F1, 60842 },
+ { 0x82F2, 60853 },
+ { 0x82F3, 60857 },
+ { 0x82F4, 60860 },
+ { 0x82F9, 60865 },
+ { 0x82F5, 60870 },
+ { 0x82F6, 60875 },
+ { 0x82F7, 60880 },
+ { 0x82F8, 60885 },
+ { 0x82FB, 60890 },
+ { 0x8300, 60893 },
+ { 0x8301, 60896 },
+ { 0x8303, 60899 },
+ { 0x8304, 60904 },
+ { 0x8302, 60915 },
+ { 0x8307, 60920 },
+ { 0x8308, 60923 },
+ { 0x8309, 60926 },
+ { 0x830A, 60929 },
+ { 0x832B, 60937 },
+ { 0x832C, 60940 },
+ { 0x832D, 60947 },
+ { 0x832E, 60954 },
+ { 0x832F, 60959 },
+ { 0x8331, 60964 },
+ { 0x8333, 60969 },
+ { 0x8332, 60976 },
+ { 0x8330, 60983 },
+ { 0x8334, 60988 },
+ { 0x8335, 60991 },
+ { 0x8337, 60994 },
+ { 0x8338, 60997 },
+ { 0x834C, 61002 },
+ { 0x833C, 61009 },
+ { 0x8340, 61014 },
+ { 0x8341, 61019 },
+ { 0x8343, 61024 },
+ { 0x8345, 61029 },
+ { 0x8348, 61034 },
+ { 0x834B, 61039 },
+ { 0x834D, 61044 },
+ { 0x833A, 61049 },
+ { 0x833B, 61054 },
+ { 0x833D, 61059 },
+ { 0x833F, 61064 },
+ { 0x8342, 61069 },
+ { 0x8344, 61074 },
+ { 0x8346, 61079 },
+ { 0x8347, 61084 },
+ { 0x8349, 61089 },
+ { 0x833E, 61094 },
+ { 0x834A, 61100 },
+ { 0x834E, 61105 },
+ { 0x8339, 61110 },
+ { 0x8351, 61115 },
+ { 0x8352, 61118 },
+ { 0x8353, 61123 },
+ { 0x8354, 61128 },
+ { 0x8355, 61133 },
+ { 0x835A, 61138 },
+ { 0x835B, 61141 },
+ { 0x835C, 61146 },
+ { 0x8360, 61149 },
+ { 0x8362, 61152 },
+ { 0x8365, 61155 },
+ { 0x8366, 61158 },
+ { 0x8367, 61161 },
+ { 0x8368, 61166 },
+ { 0x836B, 61169 },
+ { 0x836C, 61172 },
+ { 0x836E, 61177 },
+ { 0x8029, 61180 },
+ { 0x802B, 61183 },
+ { 0x802C, 61186 },
+ { 0x8033, 61191 },
+ { 0x8034, 61194 },
+ { 0x8035, 61197 },
+ { 0x803E, 61202 },
+ { 0x8042, 61205 },
+ { 0x8054, 61208 },
+ { 0x8076, 61211 },
+ { 0x8079, 61214 },
+ { 0x8080, 61217 },
+ { 0x8085, 61220 },
+ { 0x8086, 61223 },
+ { 0x8087, 61227 },
+ { 0x8088, 61232 },
+ { 0x8089, 61235 },
+ { 0x8094, 61238 },
+ { 0x8095, 61241 },
+ { 0x809E, 61244 },
+ { 0x80A0, 61247 },
+ { 0x80A1, 61250 },
+ { 0x80A2, 61253 },
+ { 0x80A3, 61258 },
+ { 0x80A4, 61265 },
+ { 0x80A5, 61274 },
+ { 0x80A9, 61279 },
+ { 0x80AA, 61284 },
+ { 0x80AF, 61290 },
+ { 0x80B1, 61295 },
+ { 0x80B2, 61300 },
+ { 0x80B3, 61305 },
+ { 0x80B4, 61310 },
+ { 0x80A6, 61315 },
+ { 0x80AB, 61320 },
+ { 0x80AE, 61326 },
+ { 0x80B0, 61331 },
+ { 0x80A7, 61338 },
+ { 0x80A8, 61344 },
+ { 0x80AC, 61351 },
+ { 0x80AD, 61356 },
+ { 0x80EE, 61362 },
+ { 0x80EF, 61365 },
+ { 0x80F7, 61370 },
+ { 0x80F9, 61373 },
+ { 0x80F8, 61378 },
+ { 0x80FA, 61382 },
+ { 0x80FC, 61387 },
+ { 0x8108, 61390 },
+ { 0x8109, 61393 },
+ { 0x810A, 61397 },
+ { 0x810B, 61400 },
+ { 0x810E, 61407 },
+ { 0x810F, 61414 },
+ { 0x810D, 61419 },
+ { 0x810C, 61424 },
+ { 0x8111, 61430 },
+ { 0x8115, 61433 },
+ { 0x8113, 61437 },
+ { 0x8114, 61442 },
+ { 0x8112, 61447 },
+ { 0x8126, 61452 },
+ { 0x8138, 61455 },
+ { 0x8139, 61458 },
+ { 0x813D, 61463 },
+ { 0x813A, 61468 },
+ { 0x813C, 61473 },
+ { 0x813B, 61478 },
+ { 0x813E, 61483 },
+ { 0x8142, 61486 },
+ { 0x8143, 61489 },
+ { 0x8144, 61495 },
+ { 0x8153, 61501 },
+ { 0x8190, 61504 },
+ { 0x8191, 61507 },
+ { 0x8192, 61510 },
+ { 0x8193, 61513 },
+ { 0x8194, 61516 },
+ { 0x819A, 61521 },
+ { 0x819B, 61524 },
+ { 0x81A7, 61527 },
+ { 0x81FA, 61530 },
+ { 0x8226, 61533 },
+ { 0x8232, 61536 },
+ { 0x8236, 61539 },
+ { 0x8237, 61544 },
+ { 0x8233, 61553 },
+ { 0x8235, 61558 },
+ { 0x8234, 61563 },
+ { 0x8238, 61568 },
+ { 0x8240, 61573 },
+ { 0x8242, 61576 },
+ { 0x8241, 61582 },
+ { 0x8243, 61586 },
+ { 0x8247, 61591 },
+ { 0x8262, 61594 },
+ { 0x82AE, 61597 },
+ { 0x82AF, 61600 },
+ { 0x82B5, 61605 },
+ { 0x82B6, 61610 },
+ { 0x82B2, 61617 },
+ { 0x82B0, 61622 },
+ { 0x82B4, 61627 },
+ { 0x82B1, 61632 },
+ { 0x82B3, 61637 },
+ { 0x82B7, 61642 },
+ { 0x82BF, 61645 },
+ { 0x82C3, 61648 },
+ { 0x82C4, 61651 },
+ { 0x82C5, 61656 },
+ { 0x82C6, 61661 },
+ { 0x82C7, 61664 },
+ { 0x82C8, 61669 },
+ { 0x82CA, 61674 },
+ { 0x82CB, 61679 },
+ { 0x82CC, 61684 },
+ { 0x82CD, 61689 },
+ { 0x82CF, 61695 },
+ { 0x82D0, 61700 },
+ { 0x82D1, 61705 },
+ { 0x82C9, 61710 },
+ { 0x82CE, 61715 },
+ { 0x82D3, 61720 },
+ { 0x82D5, 61723 },
+ { 0x82D4, 61731 },
+ { 0x82D9, 61735 },
+ { 0x82DE, 61738 },
+ { 0x82DF, 61741 },
+ { 0x82E0, 61747 },
+ { 0x82E5, 61750 },
+ { 0x82EA, 61753 },
+ { 0x82FA, 61756 },
+ { 0x8306, 61759 },
+ { 0x831C, 61762 },
+ { 0x8323, 61765 },
+ { 0x8325, 61768 },
+ { 0x8324, 61773 },
+ { 0x8336, 61778 },
+ { 0x8357, 61781 },
+ { 0x8356, 61784 },
+ { 0x8361, 61787 },
+ { 0x8369, 61790 },
+ { 0x802A, 61793 },
+ { 0x8032, 61796 },
+ { 0x8036, 61799 },
+ { 0x8037, 61802 },
+ { 0x8046, 61805 },
+ { 0x8048, 61808 },
+ { 0x8051, 61811 },
+ { 0x8052, 61814 },
+ { 0x8070, 61819 },
+ { 0x8071, 61822 },
+ { 0x8082, 61825 },
+ { 0x809F, 61828 },
+ { 0x80F4, 61831 },
+ { 0x8107, 61834 },
+ { 0x8110, 61837 },
+ { 0x8127, 61840 },
+ { 0x819F, 61843 },
+ { 0x81A6, 61846 },
+ { 0x81B8, 61849 },
+ { 0x81B9, 61852 },
+ { 0x81BA, 61857 },
+ { 0x81BB, 61866 },
+ { 0x81BC, 61873 },
+ { 0x81E5, 61880 },
+ { 0x81E6, 61885 },
+ { 0x81E7, 61892 },
+ { 0x81BD, 61901 },
+ { 0x81BE, 61906 },
+ { 0x81C1, 61911 },
+ { 0x81C3, 61916 },
+ { 0x81C4, 61921 },
+ { 0x81C8, 61926 },
+ { 0x81CA, 61931 },
+ { 0x81CC, 61938 },
+ { 0x81CD, 61943 },
+ { 0x81CE, 61950 },
+ { 0x81CF, 61957 },
+ { 0x81D6, 61962 },
+ { 0x81D8, 61967 },
+ { 0x81D9, 61972 },
+ { 0x81DB, 61979 },
+ { 0x81E4, 61984 },
+ { 0x81E8, 61995 },
+ { 0x81E9, 62002 },
+ { 0x81BF, 62007 },
+ { 0x81C0, 62014 },
+ { 0x81C2, 62019 },
+ { 0x81C5, 62024 },
+ { 0x81C6, 62029 },
+ { 0x81C7, 62034 },
+ { 0x81C9, 62041 },
+ { 0x81CB, 62046 },
+ { 0x81D0, 62052 },
+ { 0x81D1, 62057 },
+ { 0x81D2, 62062 },
+ { 0x81D3, 62067 },
+ { 0x81D7, 62076 },
+ { 0x81DC, 62081 },
+ { 0x81E1, 62088 },
+ { 0x81E2, 62093 },
+ { 0x81EA, 62098 },
+ { 0x81D5, 62103 },
+ { 0x81DA, 62108 },
+ { 0x81DF, 62113 },
+ { 0x81E0, 62118 },
+ { 0x81E3, 62125 },
+ { 0x81D4, 62130 },
+ { 0x81DD, 62135 },
+ { 0x81DE, 62144 },
+ { 0x81EB, 62152 },
+ { 0x81EC, 62156 },
+ { 0x81EF, 62159 },
+ { 0x81F0, 62163 },
+ { 0x81ED, 62171 },
+ { 0x81EE, 62176 },
+ { 0x8217, 62183 },
+ { 0x8218, 62186 },
+ { 0x821A, 62191 },
+ { 0x8219, 62195 },
+ { 0x8227, 62200 },
+ { 0x8239, 62203 },
+ { 0x823D, 62206 },
+ { 0x823A, 62210 },
+ { 0x823B, 62215 },
+ { 0x823C, 62222 },
+ { 0x8244, 62227 },
+ { 0x8260, 62230 },
+ { 0x826D, 62233 },
+ { 0x826F, 62236 },
+ { 0x8274, 62242 },
+ { 0x8275, 62248 },
+ { 0x8277, 62254 },
+ { 0x8270, 62260 },
+ { 0x8271, 62266 },
+ { 0x8272, 62272 },
+ { 0x8273, 62279 },
+ { 0x8276, 62285 },
+ { 0x826E, 62291 },
+ { 0x8278, 62297 },
+ { 0x8279, 62303 },
+ { 0x827E, 62310 },
+ { 0x828A, 62313 },
+ { 0x828C, 62316 },
+ { 0x828D, 62321 },
+ { 0x828B, 62326 },
+ { 0x828E, 62331 },
+ { 0x82B8, 62336 },
+ { 0x82B9, 62339 },
+ { 0x82BE, 62342 },
+ { 0x82C0, 62345 },
+ { 0x82D6, 62348 },
+ { 0x82E1, 62351 },
+ { 0x82E6, 62354 },
+ { 0x8322, 62357 },
+ { 0x834F, 62360 },
+ { 0x8350, 62363 },
+ { 0x8359, 62368 },
+ { 0x836D, 62371 },
+ { 0x803F, 62374 },
+ { 0x8043, 62377 },
+ { 0x80FD, 62380 },
+ { 0x8128, 62383 },
+ { 0x819C, 62386 },
+ { 0x819E, 62389 },
+ { 0x819D, 62401 },
+ { 0x81A8, 62411 },
+ { 0x81A9, 62414 },
+ { 0x81B5, 62419 },
+ { 0x81B6, 62422 },
+ { 0x81F1, 62425 },
+ { 0x81F9, 62428 },
+ { 0x8230, 62431 },
+ { 0x8231, 62434 },
+ { 0x8252, 62437 },
+ { 0x8253, 62440 },
+ { 0x8257, 62445 },
+ { 0x8258, 62453 },
+ { 0x825E, 62458 },
+ { 0x8254, 62465 },
+ { 0x8255, 62470 },
+ { 0x8256, 62477 },
+ { 0x8259, 62482 },
+ { 0x825A, 62487 },
+ { 0x825B, 62492 },
+ { 0x825C, 62500 },
+ { 0x825D, 62507 },
+ { 0x825F, 62516 },
+ { 0x82AB, 62521 },
+ { 0x82C1, 62524 },
+ { 0x82D2, 62527 },
+ { 0x82DA, 62530 },
+ { 0x82E8, 62533 },
+ { 0x8358, 62536 },
+ { 0x80FE, 62539 },
+ { 0x80FF, 62542 },
+ { 0x82C2, 62547 },
+ { 0x8461, 62550 },
+ { 0x8462, 62557 },
+ { 0x844F, 62564 },
+ { 0x8434, 62569 },
+ { 0x8458, 62574 },
+ { 0x8415, 62579 },
+ { 0x841E, 62584 },
+ { 0x842C, 62589 },
+ { 0x845A, 62594 },
+ { 0x845D, 62600 },
+ { 0x845F, 62608 },
+ { 0x8460, 62614 },
+ { 0x8411, 62620 },
+ { 0x8404, 62625 },
+ { 0x844E, 62630 },
+ { 0x840B, 62636 },
+ { 0x841A, 62641 },
+ { 0x8428, 62646 },
+ { 0x8440, 62651 },
+ { 0x8400, 62658 },
+ { 0x844A, 62663 },
+ { 0x8450, 62669 },
+ { 0x8435, 62674 },
+ { 0x8459, 62679 },
+ { 0x8416, 62684 },
+ { 0x841F, 62689 },
+ { 0x8423, 62694 },
+ { 0x842D, 62699 },
+ { 0x845B, 62704 },
+ { 0x845E, 62710 },
+ { 0x8410, 62718 },
+ { 0x8403, 62723 },
+ { 0x844D, 62728 },
+ { 0x8454, 62734 },
+ { 0x8455, 62739 },
+ { 0x8439, 62746 },
+ { 0x840A, 62751 },
+ { 0x8419, 62756 },
+ { 0x8422, 62761 },
+ { 0x8427, 62766 },
+ { 0x8431, 62771 },
+ { 0x845C, 62776 },
+ { 0x840F, 62782 },
+ { 0x8402, 62787 },
+ { 0x844C, 62792 },
+ { 0x8452, 62798 },
+ { 0x8453, 62803 },
+ { 0x8438, 62810 },
+ { 0x8409, 62815 },
+ { 0x8418, 62820 },
+ { 0x8421, 62825 },
+ { 0x8426, 62830 },
+ { 0x8430, 62835 },
+ { 0x843C, 62840 },
+ { 0x843E, 62847 },
+ { 0x843F, 62855 },
+ { 0x843D, 62863 },
+ { 0x8414, 62870 },
+ { 0x8407, 62875 },
+ { 0x840E, 62880 },
+ { 0x841D, 62885 },
+ { 0x842B, 62890 },
+ { 0x8446, 62895 },
+ { 0x8449, 62902 },
+ { 0x8447, 62910 },
+ { 0x8448, 62917 },
+ { 0x8413, 62924 },
+ { 0x8406, 62929 },
+ { 0x840D, 62934 },
+ { 0x841C, 62939 },
+ { 0x842A, 62944 },
+ { 0x8444, 62949 },
+ { 0x8445, 62956 },
+ { 0x8412, 62963 },
+ { 0x8405, 62968 },
+ { 0x840C, 62973 },
+ { 0x841B, 62978 },
+ { 0x8429, 62983 },
+ { 0x8442, 62988 },
+ { 0x8443, 62996 },
+ { 0x8441, 63004 },
+ { 0x8433, 63011 },
+ { 0x8432, 63019 },
+ { 0x8401, 63027 },
+ { 0x844B, 63032 },
+ { 0x8451, 63038 },
+ { 0x8436, 63043 },
+ { 0x8437, 63048 },
+ { 0x8408, 63055 },
+ { 0x8417, 63060 },
+ { 0x8420, 63065 },
+ { 0x8424, 63070 },
+ { 0x8425, 63075 },
+ { 0x842E, 63082 },
+ { 0x842F, 63087 },
+ { 0x843A, 63094 },
+ { 0x843B, 63101 },
+ { 0x8457, 63108 },
+ { 0x8456, 63112 },
+ { 0x8470, 63116 },
+ { 0x8472, 63123 },
+ { 0x8473, 63128 },
+ { 0x8471, 63133 },
+ { 0x23CA, 63138 },
+ { 0x23C8, 63144 },
+ { 0x23C2, 63152 },
+ { 0x23C5, 63160 },
+ { 0x23C9, 63168 },
+ { 0x23C7, 63174 },
+ { 0x23C1, 63182 },
+ { 0x23C4, 63190 },
+ { 0x23CB, 63198 },
+ { 0x23BE, 63205 },
+ { 0x23C6, 63212 },
+ { 0x23CC, 63218 },
+ { 0x23BF, 63225 },
+ { 0x23C0, 63232 },
+ { 0x23C3, 63238 },
+ { 0x00A8, 63244 },
+ { 0x2331, 63245 },
+ { 0x21A1, 63247 },
+ { 0x2193, 63251 },
+ { 0x2913, 63253 },
+ { 0x21A7, 63257 },
+ { 0x21B2, 63261 },
+ { 0x21B3, 63266 },
+ { 0x21B5, 63271 },
+ { 0x21DF, 63276 },
+ { 0x2908, 63281 },
+ { 0x21F5, 63286 },
+ { 0x2B07, 63292 },
+ { 0x21E9, 63295 },
+ { 0x2E14, 63298 },
+ { 0x21E3, 63300 },
+ { 0x21D3, 63303 },
+ { 0x21CA, 63306 },
+ { 0x290B, 63309 },
+ { 0x21AF, 63312 },
+ { 0x2959, 63315 },
+ { 0x2961, 63322 },
+ { 0x296F, 63329 },
+ { 0x2965, 63340 },
+ { 0x2955, 63351 },
+ { 0x295D, 63358 },
+ { 0x21C3, 63365 },
+ { 0x21C2, 63370 },
+ { 0x27F1, 63375 },
+ { 0x2E0E, 63378 },
+ { 0x212E, 63380 },
+ { 0x2259, 63382 },
+ { 0x213B, 63383 },
+ { 0x6F3F, 63385 },
+ { 0x6FE2, 63388 },
+ { 0x6FE6, 63391 },
+ { 0x6FE5, 63394 },
+ { 0x6FE0, 63397 },
+ { 0x6F0E, 63400 },
+ { 0x6F5B, 63403 },
+ { 0x6F5F, 63407 },
+ { 0x6F3B, 63411 },
+ { 0x6F08, 63415 },
+ { 0x6F0B, 63418 },
+ { 0x6F1A, 63421 },
+ { 0x6F0C, 63423 },
+ { 0x6F11, 63425 },
+ { 0x6F16, 63428 },
+ { 0x6F12, 63431 },
+ { 0x6F15, 63434 },
+ { 0x6F14, 63437 },
+ { 0x6F19, 63440 },
+ { 0x6F10, 63443 },
+ { 0x6F18, 63446 },
+ { 0x6F17, 63449 },
+ { 0x6F13, 63452 },
+ { 0x6F40, 63455 },
+ { 0x6F41, 63458 },
+ { 0x6F42, 63463 },
+ { 0x6F43, 63468 },
+ { 0x6F44, 63473 },
+ { 0x6F45, 63478 },
+ { 0x6F46, 63483 },
+ { 0x6F47, 63488 },
+ { 0x6F48, 63493 },
+ { 0x6F49, 63498 },
+ { 0x6F4A, 63503 },
+ { 0x6F4B, 63508 },
+ { 0x6F4C, 63513 },
+ { 0x6F4D, 63518 },
+ { 0x6F4E, 63523 },
+ { 0x6F4F, 63528 },
+ { 0x6F50, 63533 },
+ { 0x6F51, 63538 },
+ { 0x6F52, 63543 },
+ { 0x6F53, 63548 },
+ { 0x6F54, 63553 },
+ { 0x6F55, 63558 },
+ { 0x6F56, 63563 },
+ { 0x6F57, 63568 },
+ { 0x6F58, 63573 },
+ { 0x6F59, 63578 },
+ { 0x6F5A, 63583 },
+ { 0x6F21, 63588 },
+ { 0x6F22, 63593 },
+ { 0x6F23, 63598 },
+ { 0x6F24, 63603 },
+ { 0x6F25, 63608 },
+ { 0x6F26, 63613 },
+ { 0x6F27, 63618 },
+ { 0x6F28, 63623 },
+ { 0x6F29, 63628 },
+ { 0x6F2A, 63633 },
+ { 0x6F2B, 63638 },
+ { 0x6F2C, 63643 },
+ { 0x6F2D, 63648 },
+ { 0x6F2E, 63653 },
+ { 0x6F2F, 63658 },
+ { 0x6F30, 63663 },
+ { 0x6F31, 63668 },
+ { 0x6F32, 63673 },
+ { 0x6F33, 63678 },
+ { 0x6F34, 63683 },
+ { 0x6F35, 63688 },
+ { 0x6F36, 63693 },
+ { 0x6F37, 63698 },
+ { 0x6F38, 63703 },
+ { 0x6F39, 63708 },
+ { 0x6F3A, 63713 },
+ { 0x6FE1, 63718 },
+ { 0x6F5D, 63721 },
+ { 0x6F60, 63725 },
+ { 0x6F3D, 63729 },
+ { 0x6F09, 63733 },
+ { 0x6F5E, 63736 },
+ { 0x6FE4, 63738 },
+ { 0x6F04, 63741 },
+ { 0x6F1D, 63744 },
+ { 0x6FE3, 63747 },
+ { 0x6F03, 63749 },
+ { 0x6F05, 63752 },
+ { 0x6F3C, 63755 },
+ { 0x6F0F, 63758 },
+ { 0x6F0A, 63760 },
+ { 0x6F1F, 63762 },
+ { 0x6F5C, 63765 },
+ { 0x6F06, 63768 },
+ { 0x6F1C, 63770 },
+ { 0x6F02, 63773 },
+ { 0x6F1B, 63776 },
+ { 0x6F07, 63778 },
+ { 0x6F3E, 63780 },
+ { 0x6F20, 63783 },
+ { 0x6F01, 63786 },
+ { 0x6F1E, 63789 },
+ { 0x6F0D, 63792 },
+ { 0x223A, 63794 },
+ { 0x6F62, 63796 },
+ { 0x6FED, 63800 },
+ { 0x6FE8, 63803 },
+ { 0x6F63, 63807 },
+ { 0x6FEE, 63811 },
+ { 0x6FA0, 63814 },
+ { 0x6FC2, 63817 },
+ { 0x6FC7, 63821 },
+ { 0x6FDC, 63825 },
+ { 0x6FCC, 63829 },
+ { 0x6FD3, 63833 },
+ { 0x6FC3, 63837 },
+ { 0x6FC6, 63841 },
+ { 0x6FDA, 63845 },
+ { 0x6FCF, 63849 },
+ { 0x6FCD, 63853 },
+ { 0x6FD5, 63857 },
+ { 0x6FD6, 63861 },
+ { 0x6FC4, 63865 },
+ { 0x6FCB, 63869 },
+ { 0x6FDB, 63873 },
+ { 0x6FD2, 63877 },
+ { 0x6FD7, 63881 },
+ { 0x6FCE, 63885 },
+ { 0x6FD4, 63889 },
+ { 0x6FC5, 63893 },
+ { 0x6FCA, 63897 },
+ { 0x6FB5, 63901 },
+ { 0x6FB8, 63905 },
+ { 0x6FBE, 63909 },
+ { 0x6FB7, 63913 },
+ { 0x6FB1, 63917 },
+ { 0x6FA4, 63921 },
+ { 0x6FB2, 63925 },
+ { 0x6FA9, 63929 },
+ { 0x6FA1, 63933 },
+ { 0x6FA7, 63937 },
+ { 0x6FBA, 63941 },
+ { 0x6FBB, 63945 },
+ { 0x6FBD, 63949 },
+ { 0x6FBC, 63953 },
+ { 0x6FB6, 63957 },
+ { 0x6FB4, 63961 },
+ { 0x6FAD, 63965 },
+ { 0x6FB9, 63969 },
+ { 0x6FB3, 63973 },
+ { 0x6FA3, 63977 },
+ { 0x6FA5, 63981 },
+ { 0x6FA6, 63985 },
+ { 0x6FB0, 63989 },
+ { 0x6FAB, 63993 },
+ { 0x6FAC, 63997 },
+ { 0x6FA2, 64001 },
+ { 0x6FA8, 64005 },
+ { 0x6FAA, 64009 },
+ { 0x6FAF, 64013 },
+ { 0x6FAE, 64017 },
+ { 0x6FEA, 64021 },
+ { 0x6F71, 64024 },
+ { 0x6F74, 64028 },
+ { 0x6F72, 64032 },
+ { 0x6F9D, 64036 },
+ { 0x6F75, 64040 },
+ { 0x6F73, 64044 },
+ { 0x6F8A, 64048 },
+ { 0x6F8D, 64052 },
+ { 0x6F8B, 64056 },
+ { 0x6F8E, 64060 },
+ { 0x6F8C, 64064 },
+ { 0x6F76, 64068 },
+ { 0x6F79, 64072 },
+ { 0x6F77, 64076 },
+ { 0x6F7A, 64080 },
+ { 0x6F78, 64084 },
+ { 0x6F8F, 64088 },
+ { 0x6F92, 64092 },
+ { 0x6F90, 64096 },
+ { 0x6F93, 64100 },
+ { 0x6F91, 64104 },
+ { 0x6F85, 64108 },
+ { 0x6F88, 64112 },
+ { 0x6F86, 64116 },
+ { 0x6F89, 64120 },
+ { 0x6F87, 64124 },
+ { 0x6F97, 64128 },
+ { 0x6F9A, 64132 },
+ { 0x6F98, 64136 },
+ { 0x6F9B, 64140 },
+ { 0x6F99, 64144 },
+ { 0x6F7B, 64148 },
+ { 0x6F7E, 64152 },
+ { 0x6F7C, 64156 },
+ { 0x6F7F, 64160 },
+ { 0x6F7D, 64164 },
+ { 0x6F80, 64168 },
+ { 0x6F83, 64172 },
+ { 0x6F81, 64176 },
+ { 0x6F84, 64180 },
+ { 0x6F82, 64184 },
+ { 0x6F9C, 64188 },
+ { 0x6F66, 64192 },
+ { 0x6F94, 64196 },
+ { 0x6F96, 64200 },
+ { 0x6F95, 64204 },
+ { 0x6F67, 64208 },
+ { 0x6F6A, 64213 },
+ { 0x6F68, 64218 },
+ { 0x6F6B, 64223 },
+ { 0x6F69, 64228 },
+ { 0x6F6F, 64233 },
+ { 0x6F6C, 64238 },
+ { 0x6F6E, 64243 },
+ { 0x6F6D, 64248 },
+ { 0x6F65, 64253 },
+ { 0x6F9E, 64257 },
+ { 0x6F9F, 64262 },
+ { 0x6FEC, 64267 },
+ { 0x6FE9, 64270 },
+ { 0x6FEB, 64273 },
+ { 0x6F61, 64276 },
+ { 0x6F64, 64280 },
+ { 0x6F70, 64283 },
+ { 0x22B9, 64288 },
+ { 0x231B, 64291 },
+ { 0x2261, 64292 },
+ { 0x29E5, 64294 },
+ { 0x2A67, 64299 },
+ { 0x29E1, 64303 },
+ { 0x2206, 64305 },
+ { 0x2380, 64306 },
+ { 0x2064, 64308 },
+ { 0x2062, 64310 },
+ { 0x2063, 64312 },
+ { 0x2939, 64314 },
+ { 0x219E, 64318 },
+ { 0x219C, 64322 },
+ { 0x2190, 64325 },
+ { 0x21E4, 64327 },
+ { 0x21B9, 64331 },
+ { 0x291D, 64340 },
+ { 0x21A4, 64345 },
+ { 0x291F, 64349 },
+ { 0x21C6, 64356 },
+ { 0x2B11, 64361 },
+ { 0x2B10, 64366 },
+ { 0x21A9, 64371 },
+ { 0x21AB, 64375 },
+ { 0x2946, 64379 },
+ { 0x21A2, 64384 },
+ { 0x2B3A, 64388 },
+ { 0x2B39, 64396 },
+ { 0x2B38, 64403 },
+ { 0x21FA, 64408 },
+ { 0x219A, 64414 },
+ { 0x21F7, 64418 },
+ { 0x2943, 64423 },
+ { 0x2973, 64429 },
+ { 0x2B4A, 64434 },
+ { 0x2B4B, 64440 },
+ { 0x2B42, 64446 },
+ { 0x2B3E, 64453 },
+ { 0x297A, 64457 },
+ { 0x2977, 64461 },
+ { 0x2B05, 64465 },
+ { 0x21E6, 64468 },
+ { 0x21E0, 64471 },
+ { 0x290C, 64474 },
+ { 0x21D0, 64478 },
+ { 0x2906, 64481 },
+ { 0x21CD, 64486 },
+ { 0x2902, 64491 },
+ { 0x291B, 64497 },
+ { 0x21C7, 64500 },
+ { 0x290E, 64503 },
+ { 0x21DA, 64507 },
+ { 0x21CB, 64510 },
+ { 0x2952, 64515 },
+ { 0x295A, 64522 },
+ { 0x296A, 64529 },
+ { 0x2962, 64537 },
+ { 0x2966, 64548 },
+ { 0x2956, 64559 },
+ { 0x295E, 64566 },
+ { 0x2967, 64573 },
+ { 0x296B, 64584 },
+ { 0x21BC, 64592 },
+ { 0x21BD, 64597 },
+ { 0x21DC, 64602 },
+ { 0x2B45, 64605 },
+ { 0x2919, 64608 },
+ { 0x2B36, 64610 },
+ { 0x2B3B, 64615 },
+ { 0x2B3D, 64620 },
+ { 0x2B3C, 64629 },
+ { 0x2B35, 64637 },
+ { 0x2B34, 64644 },
+ { 0x2B37, 64650 },
+ { 0x21FD, 64655 },
+ { 0x2264, 64658 },
+ { 0x2A7D, 64662 },
+ { 0x2A81, 64667 },
+ { 0x2A83, 64675 },
+ { 0x2A7F, 64684 },
+ { 0x2272, 64692 },
+ { 0x2A85, 64696 },
+ { 0x2276, 64699 },
+ { 0x2A89, 64702 },
+ { 0x2A87, 64706 },
+ { 0x2268, 64712 },
+ { 0x22E6, 64717 },
+ { 0x2266, 64722 },
+ { 0x003C, 64726 },
+ { 0x22D6, 64728 },
+ { 0x2A79, 64731 },
+ { 0x2A7B, 64735 },
+ { 0x2A8D, 64740 },
+ { 0x2A8F, 64745 },
+ { 0x2A93, 64750 },
+ { 0x2976, 64759 },
+ { 0x2A8B, 64763 },
+ { 0x2A91, 64769 },
+ { 0x22DA, 64775 },
+ { 0x2AA6, 64780 },
+ { 0x2AA8, 64784 },
+ { 0x2607, 64791 },
+ { 0x0D57, 64792 },
+ { 0x0D79, 64796 },
+ { 0x0D4D, 64799 },
+ { 0x0D03, 64802 },
+ { 0x0D02, 64805 },
+ { 0x0D3D, 64808 },
+ { 0x0D67, 64811 },
+ { 0x0D6C, 64814 },
+ { 0x0D68, 64817 },
+ { 0x0D6B, 64820 },
+ { 0x0D6A, 64823 },
+ { 0x0D6F, 64826 },
+ { 0x0D66, 64829 },
+ { 0x0D6E, 64832 },
+ { 0x0D6D, 64835 },
+ { 0x0D69, 64838 },
+ { 0x0D46, 64841 },
+ { 0x0D3F, 64845 },
+ { 0x0D4A, 64849 },
+ { 0x0D41, 64853 },
+ { 0x0D3E, 64857 },
+ { 0x0D48, 64861 },
+ { 0x0D4C, 64865 },
+ { 0x0D47, 64869 },
+ { 0x0D40, 64873 },
+ { 0x0D4B, 64877 },
+ { 0x0D42, 64881 },
+ { 0x0D62, 64885 },
+ { 0x0D43, 64890 },
+ { 0x0D63, 64895 },
+ { 0x0D44, 64900 },
+ { 0x0D05, 64905 },
+ { 0x0D0E, 64908 },
+ { 0x0D07, 64911 },
+ { 0x0D12, 64914 },
+ { 0x0D09, 64917 },
+ { 0x0D06, 64920 },
+ { 0x0D10, 64923 },
+ { 0x0D14, 64926 },
+ { 0x0D2C, 64929 },
+ { 0x0D1A, 64932 },
+ { 0x0D26, 64935 },
+ { 0x0D0F, 64938 },
+ { 0x0D17, 64941 },
+ { 0x0D39, 64944 },
+ { 0x0D08, 64947 },
+ { 0x0D1C, 64950 },
+ { 0x0D15, 64953 },
+ { 0x0D32, 64956 },
+ { 0x0D2E, 64959 },
+ { 0x0D28, 64962 },
+ { 0x0D13, 64965 },
+ { 0x0D2A, 64968 },
+ { 0x0D30, 64971 },
+ { 0x0D38, 64974 },
+ { 0x0D24, 64977 },
+ { 0x0D0A, 64980 },
+ { 0x0D35, 64983 },
+ { 0x0D2F, 64986 },
+ { 0x0D2D, 64989 },
+ { 0x0D1B, 64992 },
+ { 0x0D21, 64995 },
+ { 0x0D27, 64998 },
+ { 0x0D18, 65001 },
+ { 0x0D1D, 65004 },
+ { 0x0D16, 65007 },
+ { 0x0D33, 65010 },
+ { 0x0D19, 65013 },
+ { 0x0D23, 65016 },
+ { 0x0D1E, 65019 },
+ { 0x0D2B, 65022 },
+ { 0x0D31, 65025 },
+ { 0x0D36, 65028 },
+ { 0x0D37, 65031 },
+ { 0x0D25, 65034 },
+ { 0x0D1F, 65037 },
+ { 0x0D22, 65040 },
+ { 0x0D34, 65043 },
+ { 0x0D20, 65046 },
+ { 0x0D7F, 65049 },
+ { 0x0D7D, 65053 },
+ { 0x0D7B, 65057 },
+ { 0x0D7E, 65061 },
+ { 0x0D7A, 65065 },
+ { 0x0D7C, 65069 },
+ { 0x0D0C, 65073 },
+ { 0x0D0B, 65077 },
+ { 0x0D61, 65081 },
+ { 0x0D60, 65085 },
+ { 0x0D71, 65089 },
+ { 0x0D72, 65093 },
+ { 0x0D70, 65097 },
+ { 0x0D74, 65100 },
+ { 0x0D73, 65104 },
+ { 0x0D75, 65108 },
+ { 0x00BA, 65112 },
+ { 0x1805, 65115 },
+ { 0x180B, 65118 },
+ { 0x180C, 65123 },
+ { 0x180D, 65128 },
+ { 0x1803, 65133 },
+ { 0x1807, 65136 },
+ { 0x1806, 65141 },
+ { 0x1800, 65145 },
+ { 0x1804, 65147 },
+ { 0x1802, 65149 },
+ { 0x1811, 65151 },
+ { 0x1816, 65154 },
+ { 0x1812, 65157 },
+ { 0x1815, 65160 },
+ { 0x1814, 65163 },
+ { 0x1819, 65166 },
+ { 0x1810, 65169 },
+ { 0x1818, 65172 },
+ { 0x1817, 65175 },
+ { 0x1813, 65178 },
+ { 0x180E, 65181 },
+ { 0x1820, 65184 },
+ { 0x1821, 65187 },
+ { 0x1822, 65190 },
+ { 0x1823, 65193 },
+ { 0x1824, 65196 },
+ { 0x182A, 65199 },
+ { 0x1833, 65202 },
+ { 0x1827, 65205 },
+ { 0x1839, 65208 },
+ { 0x182D, 65211 },
+ { 0x1835, 65214 },
+ { 0x183A, 65217 },
+ { 0x182F, 65220 },
+ { 0x182E, 65223 },
+ { 0x1828, 65226 },
+ { 0x1825, 65229 },
+ { 0x182B, 65232 },
+ { 0x182C, 65235 },
+ { 0x1837, 65238 },
+ { 0x1830, 65241 },
+ { 0x1832, 65244 },
+ { 0x1826, 65247 },
+ { 0x1838, 65250 },
+ { 0x1836, 65253 },
+ { 0x183D, 65256 },
+ { 0x1887, 65259 },
+ { 0x1888, 65264 },
+ { 0x1897, 65269 },
+ { 0x188B, 65274 },
+ { 0x1891, 65279 },
+ { 0x1889, 65284 },
+ { 0x1892, 65289 },
+ { 0x1890, 65294 },
+ { 0x1896, 65299 },
+ { 0x188E, 65304 },
+ { 0x188A, 65309 },
+ { 0x188F, 65314 },
+ { 0x1893, 65319 },
+ { 0x1894, 65324 },
+ { 0x188C, 65329 },
+ { 0x1895, 65334 },
+ { 0x18A6, 65339 },
+ { 0x18A7, 65345 },
+ { 0x188D, 65351 },
+ { 0x1886, 65356 },
+ { 0x1885, 65362 },
+ { 0x1882, 65367 },
+ { 0x18A9, 65372 },
+ { 0x1883, 65377 },
+ { 0x1881, 65382 },
+ { 0x1880, 65388 },
+ { 0x1884, 65394 },
+ { 0x1829, 65400 },
+ { 0x1834, 65403 },
+ { 0x1842, 65406 },
+ { 0x183E, 65409 },
+ { 0x183B, 65412 },
+ { 0x1840, 65415 },
+ { 0x1831, 65418 },
+ { 0x183C, 65421 },
+ { 0x1841, 65424 },
+ { 0x183F, 65427 },
+ { 0x185D, 65430 },
+ { 0x185E, 65434 },
+ { 0x1861, 65438 },
+ { 0x1869, 65442 },
+ { 0x186B, 65446 },
+ { 0x1864, 65450 },
+ { 0x1865, 65454 },
+ { 0x185F, 65458 },
+ { 0x186A, 65462 },
+ { 0x1863, 65466 },
+ { 0x1866, 65470 },
+ { 0x1868, 65474 },
+ { 0x1860, 65478 },
+ { 0x186F, 65482 },
+ { 0x1862, 65486 },
+ { 0x1871, 65490 },
+ { 0x186C, 65494 },
+ { 0x186D, 65498 },
+ { 0x1870, 65502 },
+ { 0x1867, 65506 },
+ { 0x186E, 65510 },
+ { 0x1872, 65514 },
+ { 0x1844, 65518 },
+ { 0x1845, 65522 },
+ { 0x1846, 65526 },
+ { 0x1847, 65530 },
+ { 0x184B, 65534 },
+ { 0x1851, 65538 },
+ { 0x184E, 65542 },
+ { 0x1853, 65546 },
+ { 0x1857, 65550 },
+ { 0x184F, 65554 },
+ { 0x1848, 65558 },
+ { 0x184C, 65562 },
+ { 0x184D, 65566 },
+ { 0x1850, 65570 },
+ { 0x1849, 65574 },
+ { 0x1856, 65578 },
+ { 0x1855, 65582 },
+ { 0x1898, 65586 },
+ { 0x1899, 65592 },
+ { 0x184A, 65598 },
+ { 0x1852, 65602 },
+ { 0x185C, 65606 },
+ { 0x1858, 65610 },
+ { 0x1859, 65614 },
+ { 0x185A, 65618 },
+ { 0x185B, 65622 },
+ { 0x1854, 65626 },
+ { 0x1843, 65630 },
+ { 0x1873, 65636 },
+ { 0x1876, 65640 },
+ { 0x1874, 65644 },
+ { 0x1875, 65648 },
+ { 0x189C, 65652 },
+ { 0x18A0, 65658 },
+ { 0x18A5, 65664 },
+ { 0x18A8, 65670 },
+ { 0x18A3, 65676 },
+ { 0x18A1, 65682 },
+ { 0x189A, 65688 },
+ { 0x189D, 65694 },
+ { 0x18AA, 65700 },
+ { 0x189B, 65706 },
+ { 0x18A2, 65712 },
+ { 0x189E, 65718 },
+ { 0x18A4, 65724 },
+ { 0x189F, 65730 },
+ { 0x1877, 65736 },
+ { 0x1809, 65740 },
+ { 0x1808, 65744 },
+ { 0x180A, 65747 },
+ { 0x1801, 65749 },
+ { 0x2029, 65751 },
+ { 0x267E, 65753 },
+ { 0x22D4, 65756 },
+ { 0x2ADA, 65757 },
+ { 0x2057, 65761 },
+ { 0x2A0C, 65763 },
+ { 0x0022, 65766 },
+ { 0x2673, 65768 },
+ { 0x2674, 65773 },
+ { 0x2675, 65778 },
+ { 0x2676, 65783 },
+ { 0x2677, 65788 },
+ { 0x2678, 65793 },
+ { 0x2679, 65798 },
+ { 0x267A, 65803 },
+ { 0x203B, 65808 },
+ { 0x2A3D, 65810 },
+ { 0x003B, 65813 },
+ { 0x2744, 65814 },
+ { 0x2222, 65815 },
+ { 0x29A1, 65817 },
+ { 0x29A0, 65821 },
+ { 0x2081, 65825 },
+ { 0x2086, 65827 },
+ { 0x2082, 65829 },
+ { 0x2085, 65831 },
+ { 0x2084, 65833 },
+ { 0x208D, 65835 },
+ { 0x2089, 65838 },
+ { 0x208A, 65840 },
+ { 0x2080, 65843 },
+ { 0x2088, 65845 },
+ { 0x208B, 65847 },
+ { 0x208E, 65849 },
+ { 0x2087, 65852 },
+ { 0x2083, 65854 },
+ { 0x208C, 65856 },
+ { 0x23B2, 65859 },
+ { 0x2A0B, 65861 },
+ { 0x23B3, 65864 },
+ { 0x1BAA, 65866 },
+ { 0x1B80, 65869 },
+ { 0x1B81, 65872 },
+ { 0x1B82, 65875 },
+ { 0x1BB1, 65878 },
+ { 0x1BB6, 65881 },
+ { 0x1BB2, 65884 },
+ { 0x1BB5, 65887 },
+ { 0x1BB4, 65890 },
+ { 0x1BB9, 65893 },
+ { 0x1BB0, 65896 },
+ { 0x1BB8, 65899 },
+ { 0x1BB7, 65902 },
+ { 0x1BB3, 65905 },
+ { 0x1BA8, 65908 },
+ { 0x1BA5, 65912 },
+ { 0x1BA4, 65916 },
+ { 0x1BA7, 65920 },
+ { 0x1BA6, 65924 },
+ { 0x1BA9, 65928 },
+ { 0x1B83, 65932 },
+ { 0x1B88, 65935 },
+ { 0x1B84, 65938 },
+ { 0x1B87, 65941 },
+ { 0x1B85, 65944 },
+ { 0x1B86, 65947 },
+ { 0x1B98, 65950 },
+ { 0x1B8E, 65953 },
+ { 0x1B93, 65956 },
+ { 0x1B89, 65959 },
+ { 0x1B96, 65962 },
+ { 0x1B8C, 65965 },
+ { 0x1BA0, 65968 },
+ { 0x1B8F, 65971 },
+ { 0x1B8A, 65974 },
+ { 0x1B9C, 65977 },
+ { 0x1B99, 65980 },
+ { 0x1B94, 65983 },
+ { 0x1B95, 65986 },
+ { 0x1B8B, 65989 },
+ { 0x1B9B, 65992 },
+ { 0x1B9E, 65995 },
+ { 0x1B92, 65998 },
+ { 0x1B97, 66001 },
+ { 0x1B9D, 66004 },
+ { 0x1B9F, 66007 },
+ { 0x1B9A, 66010 },
+ { 0x1B90, 66013 },
+ { 0x1BAE, 66016 },
+ { 0x1B8D, 66019 },
+ { 0x1B91, 66022 },
+ { 0x1BAF, 66025 },
+ { 0x1BA3, 66028 },
+ { 0x1BA2, 66032 },
+ { 0x1BA1, 66036 },
+ { 0x2121, 66040 },
+ { 0x2706, 66042 },
+ { 0x2315, 66045 },
+ { 0x9353, 66047 },
+ { 0x931D, 66052 },
+ { 0x932D, 66055 },
+ { 0x9323, 66060 },
+ { 0x931C, 66064 },
+ { 0x9307, 66067 },
+ { 0x9343, 66071 },
+ { 0x932F, 66074 },
+ { 0x9346, 66079 },
+ { 0x9308, 66082 },
+ { 0x9314, 66085 },
+ { 0x9331, 66088 },
+ { 0x933B, 66091 },
+ { 0x9344, 66094 },
+ { 0x930C, 66097 },
+ { 0x9306, 66100 },
+ { 0x9321, 66103 },
+ { 0x933D, 66106 },
+ { 0x9320, 66110 },
+ { 0x9336, 66113 },
+ { 0x9325, 66116 },
+ { 0x932A, 66119 },
+ { 0x9335, 66122 },
+ { 0x9319, 66125 },
+ { 0x9309, 66128 },
+ { 0x934F, 66131 },
+ { 0x9315, 66134 },
+ { 0x9349, 66137 },
+ { 0x9350, 66140 },
+ { 0x9316, 66143 },
+ { 0x930A, 66147 },
+ { 0x9327, 66151 },
+ { 0x9340, 66154 },
+ { 0x9339, 66157 },
+ { 0x9324, 66160 },
+ { 0x9334, 66163 },
+ { 0x931A, 66166 },
+ { 0x9345, 66169 },
+ { 0x9317, 66172 },
+ { 0x933A, 66175 },
+ { 0x932B, 66178 },
+ { 0x934D, 66181 },
+ { 0x9312, 66184 },
+ { 0x932E, 66187 },
+ { 0x934C, 66190 },
+ { 0x9329, 66193 },
+ { 0x9337, 66196 },
+ { 0x930E, 66201 },
+ { 0x9326, 66205 },
+ { 0x9338, 66208 },
+ { 0x9348, 66211 },
+ { 0x9347, 66214 },
+ { 0x931F, 66217 },
+ { 0x9318, 66220 },
+ { 0x9356, 66223 },
+ { 0x9328, 66226 },
+ { 0x933F, 66229 },
+ { 0x9332, 66233 },
+ { 0x9355, 66236 },
+ { 0x932C, 66239 },
+ { 0x934B, 66242 },
+ { 0x934E, 66245 },
+ { 0x9352, 66248 },
+ { 0x931E, 66251 },
+ { 0x9310, 66254 },
+ { 0x9330, 66257 },
+ { 0x934A, 66260 },
+ { 0x930D, 66263 },
+ { 0x931B, 66266 },
+ { 0x9351, 66269 },
+ { 0x930B, 66272 },
+ { 0x9333, 66275 },
+ { 0x933E, 66278 },
+ { 0x9313, 66281 },
+ { 0x9341, 66284 },
+ { 0x9322, 66287 },
+ { 0x9354, 66290 },
+ { 0x933C, 66293 },
+ { 0x9311, 66296 },
+ { 0x930F, 66299 },
+ { 0x9342, 66304 },
+ { 0x2234, 66307 },
+ { 0x2672, 66308 },
+ { 0x26AF, 66311 },
+ { 0x6E00, 66314 },
+ { 0x6E01, 66316 },
+ { 0x6E02, 66318 },
+ { 0x6E03, 66320 },
+ { 0x6E04, 66322 },
+ { 0x6E05, 66324 },
+ { 0x6E06, 66326 },
+ { 0x6E07, 66328 },
+ { 0x6E08, 66330 },
+ { 0x6E09, 66332 },
+ { 0x6E0A, 66334 },
+ { 0x6E0B, 66336 },
+ { 0x6E0C, 66338 },
+ { 0x6E0D, 66340 },
+ { 0x6E0E, 66342 },
+ { 0x6E0F, 66344 },
+ { 0xC100, 66346 },
+ { 0xC101, 66348 },
+ { 0xC102, 66350 },
+ { 0xC103, 66352 },
+ { 0xC104, 66354 },
+ { 0xC105, 66356 },
+ { 0xC106, 66358 },
+ { 0xC107, 66360 },
+ { 0xC108, 66362 },
+ { 0xC109, 66364 },
+ { 0xC10A, 66366 },
+ { 0xC10B, 66368 },
+ { 0xC10C, 66370 },
+ { 0xC10D, 66372 },
+ { 0xC10E, 66374 },
+ { 0xC10F, 66376 },
+ { 0xC110, 66378 },
+ { 0xC111, 66380 },
+ { 0xC112, 66382 },
+ { 0xC113, 66384 },
+ { 0xC114, 66386 },
+ { 0xC115, 66388 },
+ { 0xC116, 66390 },
+ { 0xC117, 66392 },
+ { 0xC118, 66394 },
+ { 0xC119, 66396 },
+ { 0xC11A, 66398 },
+ { 0xC11B, 66400 },
+ { 0xC11C, 66402 },
+ { 0xC11D, 66404 },
+ { 0xC11E, 66406 },
+ { 0xC11F, 66408 },
+ { 0xC120, 66410 },
+ { 0xC121, 66412 },
+ { 0xC122, 66414 },
+ { 0xC123, 66416 },
+ { 0xC124, 66418 },
+ { 0xC125, 66420 },
+ { 0xC126, 66422 },
+ { 0xC127, 66424 },
+ { 0xC128, 66426 },
+ { 0xC129, 66428 },
+ { 0xC12A, 66430 },
+ { 0xC12B, 66432 },
+ { 0xC12C, 66434 },
+ { 0xC12D, 66436 },
+ { 0xC12E, 66438 },
+ { 0xC12F, 66440 },
+ { 0xC130, 66442 },
+ { 0xC131, 66444 },
+ { 0xC132, 66446 },
+ { 0xC133, 66448 },
+ { 0xC134, 66450 },
+ { 0xC135, 66452 },
+ { 0xC136, 66454 },
+ { 0xC137, 66456 },
+ { 0xC138, 66458 },
+ { 0xC139, 66460 },
+ { 0xC13A, 66462 },
+ { 0xC13B, 66464 },
+ { 0xC13C, 66466 },
+ { 0xC13D, 66468 },
+ { 0xC13E, 66470 },
+ { 0xC13F, 66472 },
+ { 0xC140, 66474 },
+ { 0xC141, 66476 },
+ { 0xC142, 66478 },
+ { 0xC143, 66480 },
+ { 0xC144, 66482 },
+ { 0xC145, 66484 },
+ { 0xC146, 66486 },
+ { 0xC147, 66488 },
+ { 0xC148, 66490 },
+ { 0xC149, 66492 },
+ { 0xC14A, 66494 },
+ { 0xC14B, 66496 },
+ { 0xC14C, 66498 },
+ { 0xC14D, 66500 },
+ { 0xC14E, 66502 },
+ { 0xC14F, 66504 },
+ { 0xC150, 66506 },
+ { 0xC151, 66508 },
+ { 0xC152, 66510 },
+ { 0xC153, 66512 },
+ { 0xC154, 66514 },
+ { 0xC155, 66516 },
+ { 0xC156, 66518 },
+ { 0xC157, 66520 },
+ { 0xC158, 66522 },
+ { 0xC159, 66524 },
+ { 0xC15A, 66526 },
+ { 0xC15B, 66528 },
+ { 0xC15C, 66530 },
+ { 0xC15D, 66532 },
+ { 0xC15E, 66534 },
+ { 0xC15F, 66536 },
+ { 0xC160, 66538 },
+ { 0xC161, 66540 },
+ { 0xC162, 66542 },
+ { 0xC163, 66544 },
+ { 0xC164, 66546 },
+ { 0xC165, 66548 },
+ { 0xC166, 66550 },
+ { 0xC167, 66552 },
+ { 0xC168, 66554 },
+ { 0xC169, 66556 },
+ { 0xC16A, 66558 },
+ { 0xC16B, 66560 },
+ { 0xC16C, 66562 },
+ { 0xC16D, 66564 },
+ { 0xC16E, 66566 },
+ { 0xC16F, 66568 },
+ { 0xC170, 66570 },
+ { 0xC171, 66572 },
+ { 0xC172, 66574 },
+ { 0xC173, 66576 },
+ { 0xC174, 66578 },
+ { 0xC175, 66580 },
+ { 0xC176, 66582 },
+ { 0xC177, 66584 },
+ { 0xC178, 66586 },
+ { 0xC179, 66588 },
+ { 0xC17A, 66590 },
+ { 0xC17B, 66592 },
+ { 0xC17C, 66594 },
+ { 0xC17D, 66596 },
+ { 0xC17E, 66598 },
+ { 0xC17F, 66600 },
+ { 0xC180, 66602 },
+ { 0xC181, 66604 },
+ { 0xC182, 66606 },
+ { 0xC183, 66608 },
+ { 0xC184, 66610 },
+ { 0xC185, 66612 },
+ { 0xC186, 66614 },
+ { 0xC187, 66616 },
+ { 0xC188, 66618 },
+ { 0xC189, 66620 },
+ { 0xC18A, 66622 },
+ { 0xC18B, 66624 },
+ { 0xC18C, 66626 },
+ { 0xC18D, 66628 },
+ { 0xC18E, 66630 },
+ { 0xC18F, 66632 },
+ { 0xC190, 66634 },
+ { 0xC191, 66636 },
+ { 0xC192, 66638 },
+ { 0xC193, 66640 },
+ { 0xC194, 66642 },
+ { 0xC195, 66644 },
+ { 0xC196, 66646 },
+ { 0xC197, 66648 },
+ { 0xC198, 66650 },
+ { 0xC199, 66652 },
+ { 0xC19A, 66654 },
+ { 0xC19B, 66656 },
+ { 0xC19C, 66658 },
+ { 0xC19D, 66660 },
+ { 0xC19E, 66662 },
+ { 0xC19F, 66664 },
+ { 0xC1A0, 66666 },
+ { 0xC1A1, 66668 },
+ { 0xC1A2, 66670 },
+ { 0xC1A3, 66672 },
+ { 0xC1A4, 66674 },
+ { 0xC1A5, 66676 },
+ { 0xC1A6, 66678 },
+ { 0xC1A7, 66680 },
+ { 0xC1A8, 66682 },
+ { 0xC1A9, 66684 },
+ { 0xC1AA, 66686 },
+ { 0xC1AB, 66688 },
+ { 0xC1AC, 66690 },
+ { 0xC1AD, 66692 },
+ { 0xC1AE, 66694 },
+ { 0xC1AF, 66696 },
+ { 0xC1B0, 66698 },
+ { 0xC1B1, 66700 },
+ { 0xC1B2, 66702 },
+ { 0xC1B3, 66704 },
+ { 0xC1B4, 66706 },
+ { 0xC1B5, 66708 },
+ { 0xC1B6, 66710 },
+ { 0xC1B7, 66712 },
+ { 0xC1B8, 66714 },
+ { 0xC1B9, 66716 },
+ { 0xC1BA, 66718 },
+ { 0xC1BB, 66720 },
+ { 0xC1BC, 66722 },
+ { 0xC1BD, 66724 },
+ { 0xC1BE, 66726 },
+ { 0xC1BF, 66728 },
+ { 0xC1C0, 66730 },
+ { 0xC1C1, 66732 },
+ { 0xC1C2, 66734 },
+ { 0xC1C3, 66736 },
+ { 0xC1C4, 66738 },
+ { 0xC1C5, 66740 },
+ { 0xC1C6, 66742 },
+ { 0xC1C7, 66744 },
+ { 0xC1C8, 66746 },
+ { 0xC1C9, 66748 },
+ { 0xC1CA, 66750 },
+ { 0xC1CB, 66752 },
+ { 0xC1CC, 66754 },
+ { 0xC1CD, 66756 },
+ { 0xC1CE, 66758 },
+ { 0xC1CF, 66760 },
+ { 0xC1D0, 66762 },
+ { 0xC1D1, 66764 },
+ { 0xC1D2, 66766 },
+ { 0xC1D3, 66768 },
+ { 0xC1D4, 66770 },
+ { 0xC1D5, 66772 },
+ { 0xC1D6, 66774 },
+ { 0xC1D7, 66776 },
+ { 0xC1D8, 66778 },
+ { 0xC1D9, 66780 },
+ { 0xC1DA, 66782 },
+ { 0xC1DB, 66784 },
+ { 0xC1DC, 66786 },
+ { 0xC1DD, 66788 },
+ { 0xC1DE, 66790 },
+ { 0xC1DF, 66792 },
+ { 0xC1E0, 66794 },
+ { 0xC1E1, 66796 },
+ { 0xC1E2, 66798 },
+ { 0xC1E3, 66800 },
+ { 0xC1E4, 66802 },
+ { 0xC1E5, 66804 },
+ { 0xC1E6, 66806 },
+ { 0xC1E7, 66808 },
+ { 0xC1E8, 66810 },
+ { 0xC1E9, 66812 },
+ { 0xC1EA, 66814 },
+ { 0xC1EB, 66816 },
+ { 0xC1EC, 66818 },
+ { 0xC1ED, 66820 },
+ { 0xC1EE, 66822 },
+ { 0xC1EF, 66824 },
+ { 0x0027, 66826 },
+ { 0x2250, 66827 },
+ { 0x6E4E, 66830 },
+ { 0x6E4A, 66833 },
+ { 0x005E, 66835 },
+ { 0x0040, 66837 },
+ { 0x2052, 66839 },
+ { 0x2201, 66842 },
+ { 0x2381, 66843 },
+ { 0x260B, 66846 },
+ { 0x0950, 66848 },
+ { 0x0971, 66850 },
+ { 0x093C, 66855 },
+ { 0x094D, 66858 },
+ { 0x0903, 66861 },
+ { 0x0902, 66864 },
+ { 0x093D, 66867 },
+ { 0x0901, 66870 },
+ { 0x0954, 66873 },
+ { 0x0964, 66876 },
+ { 0x0967, 66878 },
+ { 0x096C, 66881 },
+ { 0x0968, 66884 },
+ { 0x096B, 66887 },
+ { 0x096A, 66890 },
+ { 0x096F, 66893 },
+ { 0x0966, 66896 },
+ { 0x096E, 66899 },
+ { 0x096D, 66902 },
+ { 0x0969, 66905 },
+ { 0x0953, 66908 },
+ { 0x0947, 66911 },
+ { 0x093F, 66915 },
+ { 0x094B, 66919 },
+ { 0x0941, 66923 },
+ { 0x093E, 66927 },
+ { 0x0948, 66931 },
+ { 0x094C, 66935 },
+ { 0x0940, 66939 },
+ { 0x0942, 66943 },
+ { 0x0946, 66947 },
+ { 0x094A, 66952 },
+ { 0x0945, 66957 },
+ { 0x0949, 66962 },
+ { 0x0962, 66967 },
+ { 0x0943, 66972 },
+ { 0x0963, 66977 },
+ { 0x0944, 66982 },
+ { 0x0965, 66987 },
+ { 0x0905, 66990 },
+ { 0x090F, 66993 },
+ { 0x0907, 66996 },
+ { 0x0913, 66999 },
+ { 0x0909, 67002 },
+ { 0x0906, 67005 },
+ { 0x0910, 67008 },
+ { 0x0914, 67011 },
+ { 0x092C, 67014 },
+ { 0x091A, 67017 },
+ { 0x0926, 67020 },
+ { 0x095E, 67023 },
+ { 0x0917, 67026 },
+ { 0x0939, 67029 },
+ { 0x0908, 67032 },
+ { 0x091C, 67035 },
+ { 0x0915, 67038 },
+ { 0x0932, 67041 },
+ { 0x092E, 67044 },
+ { 0x0928, 67047 },
+ { 0x092A, 67050 },
+ { 0x0958, 67053 },
+ { 0x0930, 67056 },
+ { 0x0938, 67059 },
+ { 0x0924, 67062 },
+ { 0x090A, 67065 },
+ { 0x0935, 67068 },
+ { 0x092F, 67071 },
+ { 0x095B, 67074 },
+ { 0x097F, 67077 },
+ { 0x092D, 67080 },
+ { 0x091B, 67083 },
+ { 0x0921, 67086 },
+ { 0x0927, 67089 },
+ { 0x097B, 67092 },
+ { 0x0918, 67095 },
+ { 0x091D, 67098 },
+ { 0x097C, 67101 },
+ { 0x0916, 67104 },
+ { 0x0933, 67107 },
+ { 0x0919, 67110 },
+ { 0x0923, 67113 },
+ { 0x091E, 67116 },
+ { 0x092B, 67119 },
+ { 0x095D, 67122 },
+ { 0x0931, 67125 },
+ { 0x0936, 67128 },
+ { 0x0937, 67131 },
+ { 0x0925, 67134 },
+ { 0x091F, 67137 },
+ { 0x095F, 67140 },
+ { 0x097E, 67143 },
+ { 0x0922, 67146 },
+ { 0x095A, 67149 },
+ { 0x0959, 67152 },
+ { 0x0934, 67155 },
+ { 0x0929, 67158 },
+ { 0x0920, 67161 },
+ { 0x095C, 67164 },
+ { 0x0904, 67167 },
+ { 0x090E, 67171 },
+ { 0x0912, 67175 },
+ { 0x0972, 67179 },
+ { 0x090D, 67183 },
+ { 0x0911, 67187 },
+ { 0x097D, 67191 },
+ { 0x090C, 67195 },
+ { 0x090B, 67199 },
+ { 0x0961, 67203 },
+ { 0x0960, 67207 },
+ { 0x0951, 67211 },
+ { 0x0952, 67215 },
+ { 0x0970, 67219 },
+ { 0x224F, 67222 },
+ { 0x23E7, 67224 },
+ { 0x224D, 67226 },
+ { 0x2A78, 67228 },
+ { 0x2C3B, 67233 },
+ { 0x2C4A, 67237 },
+ { 0x2C56, 67241 },
+ { 0x2C53, 67245 },
+ { 0x2C30, 67249 },
+ { 0x2C58, 67253 },
+ { 0x2C41, 67258 },
+ { 0x2C49, 67262 },
+ { 0x2C4E, 67266 },
+ { 0x2C4C, 67270 },
+ { 0x2C46, 67274 },
+ { 0x2C31, 67278 },
+ { 0x2C5A, 67282 },
+ { 0x2C48, 67286 },
+ { 0x2C39, 67290 },
+ { 0x2C3D, 67294 },
+ { 0x2C4B, 67298 },
+ { 0x2C32, 67302 },
+ { 0x2C51, 67306 },
+ { 0x2C50, 67310 },
+ { 0x2C4F, 67314 },
+ { 0x2C34, 67318 },
+ { 0x2C37, 67322 },
+ { 0x2C47, 67326 },
+ { 0x2C40, 67330 },
+ { 0x2C43, 67334 },
+ { 0x2C44, 67338 },
+ { 0x2C54, 67342 },
+ { 0x2C55, 67347 },
+ { 0x2C35, 67354 },
+ { 0x2C4D, 67358 },
+ { 0x2C3C, 67362 },
+ { 0x2C42, 67366 },
+ { 0x2C45, 67370 },
+ { 0x2C38, 67374 },
+ { 0x2C33, 67378 },
+ { 0x2C3A, 67382 },
+ { 0x2C59, 67387 },
+ { 0x2C57, 67393 },
+ { 0x2C5B, 67399 },
+ { 0x2C3E, 67403 },
+ { 0x2C3F, 67407 },
+ { 0x2C5C, 67411 },
+ { 0x2C52, 67415 },
+ { 0x2C36, 67420 },
+ { 0x2C5E, 67424 },
+ { 0x2C5D, 67429 },
+ { 0x2C0B, 67434 },
+ { 0x2C1A, 67438 },
+ { 0x2C26, 67442 },
+ { 0x2C23, 67446 },
+ { 0x2C00, 67450 },
+ { 0x2C28, 67454 },
+ { 0x2C11, 67459 },
+ { 0x2C19, 67463 },
+ { 0x2C1E, 67467 },
+ { 0x2C1C, 67471 },
+ { 0x2C16, 67475 },
+ { 0x2C01, 67479 },
+ { 0x2C2A, 67483 },
+ { 0x2C18, 67487 },
+ { 0x2C09, 67491 },
+ { 0x2C0D, 67495 },
+ { 0x2C1B, 67499 },
+ { 0x2C02, 67503 },
+ { 0x2C21, 67507 },
+ { 0x2C20, 67511 },
+ { 0x2C1F, 67515 },
+ { 0x2C04, 67519 },
+ { 0x2C07, 67523 },
+ { 0x2C17, 67527 },
+ { 0x2C10, 67531 },
+ { 0x2C13, 67535 },
+ { 0x2C14, 67539 },
+ { 0x2C24, 67543 },
+ { 0x2C25, 67548 },
+ { 0x2C05, 67555 },
+ { 0x2C1D, 67559 },
+ { 0x2C0C, 67563 },
+ { 0x2C12, 67567 },
+ { 0x2C15, 67571 },
+ { 0x2C08, 67575 },
+ { 0x2C03, 67579 },
+ { 0x2C0A, 67583 },
+ { 0x2C29, 67588 },
+ { 0x2C27, 67594 },
+ { 0x2C2B, 67600 },
+ { 0x2C0E, 67604 },
+ { 0x2C0F, 67608 },
+ { 0x2C2C, 67612 },
+ { 0x2C22, 67616 },
+ { 0x2C06, 67621 },
+ { 0x2C2E, 67625 },
+ { 0x2C2D, 67630 },
+ { 0x223B, 67635 },
+ { 0x2015, 67636 },
+ { 0x23AF, 67638 },
+ { 0x26A9, 67641 },
+ { 0x23BA, 67646 },
+ { 0x23BB, 67649 },
+ { 0x23BC, 67652 },
+ { 0x23BD, 67655 },
+ { 0x2B23, 67658 },
+ { 0x2026, 67661 },
+ { 0x238E, 67663 },
+ { 0x29DC, 67665 },
+ { 0x7A38, 67667 },
+ { 0x7A3A, 67671 },
+ { 0x7A39, 67675 },
+ { 0x7A0D, 67678 },
+ { 0x7A0F, 67683 },
+ { 0x7A0E, 67686 },
+ { 0x7A40, 67689 },
+ { 0x7A41, 67692 },
+ { 0x7A43, 67695 },
+ { 0x7A42, 67698 },
+ { 0x7A05, 67701 },
+ { 0x7A01, 67705 },
+ { 0x7A06, 67709 },
+ { 0x7A02, 67713 },
+ { 0x7A03, 67717 },
+ { 0x7A0C, 67722 },
+ { 0x7A00, 67726 },
+ { 0x7A26, 67729 },
+ { 0x7A15, 67732 },
+ { 0x7A21, 67735 },
+ { 0x7A12, 67738 },
+ { 0x7A31, 67741 },
+ { 0x7A17, 67744 },
+ { 0x7A10, 67747 },
+ { 0x7A2B, 67750 },
+ { 0x7A28, 67753 },
+ { 0x7A23, 67756 },
+ { 0x7A24, 67759 },
+ { 0x7A2A, 67762 },
+ { 0x7A2F, 67765 },
+ { 0x7A1F, 67768 },
+ { 0x7A2C, 67771 },
+ { 0x7A29, 67774 },
+ { 0x7A30, 67777 },
+ { 0x7A27, 67780 },
+ { 0x7A16, 67783 },
+ { 0x7A1C, 67786 },
+ { 0x7A22, 67789 },
+ { 0x7A13, 67792 },
+ { 0x7A11, 67795 },
+ { 0x7A32, 67798 },
+ { 0x7A1E, 67801 },
+ { 0x7A19, 67804 },
+ { 0x7A25, 67807 },
+ { 0x7A2D, 67810 },
+ { 0x7A2E, 67813 },
+ { 0x7A20, 67816 },
+ { 0x7A1A, 67819 },
+ { 0x7A1D, 67822 },
+ { 0x7A1B, 67825 },
+ { 0x7A33, 67828 },
+ { 0x7A46, 67831 },
+ { 0x7A47, 67835 },
+ { 0x7A44, 67839 },
+ { 0x7A45, 67842 },
+ { 0x7A3F, 67845 },
+ { 0x7A50, 67847 },
+ { 0x7A56, 67850 },
+ { 0x7A58, 67853 },
+ { 0x7A55, 67856 },
+ { 0x7A51, 67859 },
+ { 0x7A52, 67863 },
+ { 0x7A57, 67866 },
+ { 0x7A53, 67870 },
+ { 0x7A54, 67874 },
+ { 0x238D, 67877 },
+ { 0x2ADD, 67879 },
+ { 0x260D, 67880 },
+ { 0x1736, 67881 },
+ { 0x1735, 67884 },
+ { 0x791F, 67887 },
+ { 0x7904, 67890 },
+ { 0x7910, 67893 },
+ { 0x790F, 67896 },
+ { 0x7900, 67899 },
+ { 0x7901, 67902 },
+ { 0x7907, 67905 },
+ { 0x790A, 67908 },
+ { 0x790C, 67911 },
+ { 0x790D, 67914 },
+ { 0x7912, 67917 },
+ { 0x7915, 67920 },
+ { 0x7908, 67923 },
+ { 0x7905, 67926 },
+ { 0x7909, 67929 },
+ { 0x7906, 67932 },
+ { 0x7903, 67935 },
+ { 0x7902, 67938 },
+ { 0x790B, 67941 },
+ { 0x7913, 67944 },
+ { 0x7911, 67947 },
+ { 0x790E, 67950 },
+ { 0x7914, 67953 },
+ { 0x7916, 67956 },
+ { 0x7919, 67959 },
+ { 0x7917, 67963 },
+ { 0x7918, 67966 },
+ { 0x00B1, 67969 },
+ { 0x2305, 67971 },
+ { 0x2237, 67972 },
+ { 0x2A16, 67973 },
+ { 0x225F, 67976 },
+ { 0x00AE, 67979 },
+ { 0x2938, 67981 },
+ { 0x21A0, 67985 },
+ { 0x219D, 67989 },
+ { 0x2192, 67992 },
+ { 0x21E5, 67994 },
+ { 0x291E, 67998 },
+ { 0x21A6, 68003 },
+ { 0x2920, 68007 },
+ { 0x21C4, 68014 },
+ { 0x2B0F, 68019 },
+ { 0x2B0E, 68024 },
+ { 0x21AA, 68029 },
+ { 0x21AC, 68033 },
+ { 0x2945, 68037 },
+ { 0x21A3, 68042 },
+ { 0x2915, 68046 },
+ { 0x2914, 68054 },
+ { 0x21B4, 68061 },
+ { 0x2911, 68066 },
+ { 0x21FB, 68071 },
+ { 0x219B, 68077 },
+ { 0x21F8, 68081 },
+ { 0x2942, 68086 },
+ { 0x2974, 68092 },
+ { 0x2975, 68097 },
+ { 0x2B4C, 68103 },
+ { 0x2B48, 68109 },
+ { 0x2947, 68116 },
+ { 0x2B44, 68120 },
+ { 0x2B43, 68124 },
+ { 0x21E8, 68128 },
+ { 0x21F0, 68131 },
+ { 0x21E2, 68136 },
+ { 0x290D, 68139 },
+ { 0x21D2, 68143 },
+ { 0x2907, 68146 },
+ { 0x21CF, 68151 },
+ { 0x2903, 68156 },
+ { 0x291C, 68162 },
+ { 0x21C9, 68165 },
+ { 0x290F, 68168 },
+ { 0x21DB, 68172 },
+ { 0x21CC, 68175 },
+ { 0x2953, 68180 },
+ { 0x295B, 68187 },
+ { 0x296C, 68194 },
+ { 0x2968, 68202 },
+ { 0x2964, 68213 },
+ { 0x2957, 68224 },
+ { 0x295F, 68231 },
+ { 0x2969, 68238 },
+ { 0x296D, 68249 },
+ { 0x21C0, 68257 },
+ { 0x21C1, 68262 },
+ { 0x21DD, 68267 },
+ { 0x2B46, 68270 },
+ { 0x291A, 68273 },
+ { 0x2905, 68275 },
+ { 0x2916, 68280 },
+ { 0x2918, 68285 },
+ { 0x2917, 68294 },
+ { 0x2901, 68302 },
+ { 0x2900, 68309 },
+ { 0x2910, 68315 },
+ { 0x21FE, 68320 },
+ { 0x58C4, 68323 },
+ { 0x5881, 68326 },
+ { 0x5880, 68329 },
+ { 0x58CE, 68332 },
+ { 0x58D1, 68334 },
+ { 0x58D6, 68337 },
+ { 0x58D2, 68340 },
+ { 0x58D5, 68343 },
+ { 0x58D4, 68346 },
+ { 0x58D9, 68349 },
+ { 0x58D0, 68352 },
+ { 0x58D8, 68355 },
+ { 0x58D7, 68358 },
+ { 0x58D3, 68361 },
+ { 0x58BE, 68364 },
+ { 0x58B6, 68368 },
+ { 0x58C1, 68372 },
+ { 0x58B8, 68376 },
+ { 0x58B5, 68380 },
+ { 0x58C0, 68384 },
+ { 0x58C3, 68388 },
+ { 0x58BF, 68392 },
+ { 0x58B7, 68396 },
+ { 0x58C2, 68400 },
+ { 0x58B9, 68404 },
+ { 0x58BC, 68408 },
+ { 0x58BA, 68413 },
+ { 0x58BD, 68418 },
+ { 0x58BB, 68423 },
+ { 0x58CF, 68428 },
+ { 0x5882, 68431 },
+ { 0x588C, 68434 },
+ { 0x5884, 68437 },
+ { 0x588F, 68440 },
+ { 0x5886, 68443 },
+ { 0x5883, 68446 },
+ { 0x588E, 68449 },
+ { 0x5891, 68452 },
+ { 0x58A8, 68455 },
+ { 0x5897, 68458 },
+ { 0x58A3, 68461 },
+ { 0x588D, 68464 },
+ { 0x5894, 68467 },
+ { 0x58B2, 68470 },
+ { 0x5885, 68473 },
+ { 0x5899, 68476 },
+ { 0x5892, 68479 },
+ { 0x58AD, 68482 },
+ { 0x58AA, 68485 },
+ { 0x58A5, 68488 },
+ { 0x5890, 68491 },
+ { 0x58A6, 68494 },
+ { 0x58AC, 68497 },
+ { 0x58B1, 68500 },
+ { 0x58A1, 68503 },
+ { 0x5887, 68506 },
+ { 0x58AE, 68509 },
+ { 0x58AB, 68512 },
+ { 0x58A9, 68515 },
+ { 0x5898, 68518 },
+ { 0x589E, 68521 },
+ { 0x58A4, 68524 },
+ { 0x5895, 68527 },
+ { 0x589A, 68530 },
+ { 0x5893, 68533 },
+ { 0x58B3, 68536 },
+ { 0x5896, 68539 },
+ { 0x58A0, 68542 },
+ { 0x589B, 68545 },
+ { 0x58A7, 68548 },
+ { 0x58AF, 68551 },
+ { 0x58B0, 68554 },
+ { 0x58A2, 68557 },
+ { 0x589C, 68560 },
+ { 0x589F, 68563 },
+ { 0x589D, 68566 },
+ { 0x588A, 68569 },
+ { 0x5888, 68573 },
+ { 0x588B, 68577 },
+ { 0x5889, 68581 },
+ { 0x58B4, 68585 },
+ { 0x2A32, 68589 },
+ { 0x237D, 68594 },
+ { 0x2006, 68597 },
+ { 0x2023, 68599 },
+ { 0x267F, 68601 },
+ { 0x2387, 68603 },
+ { 0x27AB, 68606 },
+ { 0x2A10, 68611 },
+ { 0x2384, 68613 },
+ { 0x260C, 68615 },
+ { 0x2258, 68616 },
+ { 0x2334, 68618 },
+ { 0x2335, 68619 },
+ { 0x2A99, 68620 },
+ { 0x2A9A, 68625 },
+ { 0x2A9B, 68630 },
+ { 0x2A9C, 68636 },
+ { 0x2AF9, 68642 },
+ { 0x2AFA, 68648 },
+ { 0x225A, 68654 },
+ { 0x0021, 68656 },
+ { 0x2049, 68658 },
+ { 0x2005, 68661 },
+ { 0x2027, 68663 },
+ { 0x3002, 68665 },
+ { 0x303F, 68668 },
+ { 0x3001, 68672 },
+ { 0x302A, 68674 },
+ { 0x3000, 68678 },
+ { 0x3007, 68680 },
+ { 0x302B, 68683 },
+ { 0x3006, 68687 },
+ { 0x302D, 68690 },
+ { 0x302C, 68694 },
+ { 0x3005, 68698 },
+ { 0x3037, 68701 },
+ { 0x33E0, 68707 },
+ { 0x33E5, 68713 },
+ { 0x33E9, 68719 },
+ { 0x33E1, 68725 },
+ { 0x33E4, 68731 },
+ { 0x33E3, 68737 },
+ { 0x33E8, 68743 },
+ { 0x33E7, 68749 },
+ { 0x33E6, 68755 },
+ { 0x33E2, 68761 },
+ { 0x33EA, 68767 },
+ { 0x33FD, 68773 },
+ { 0x33EB, 68779 },
+ { 0x33F3, 68785 },
+ { 0x33EE, 68791 },
+ { 0x33EF, 68797 },
+ { 0x33F1, 68803 },
+ { 0x33ED, 68809 },
+ { 0x33F2, 68815 },
+ { 0x33EC, 68821 },
+ { 0x33F0, 68827 },
+ { 0x33FE, 68833 },
+ { 0x33F4, 68839 },
+ { 0x33F9, 68845 },
+ { 0x33F5, 68851 },
+ { 0x33F8, 68857 },
+ { 0x33F7, 68863 },
+ { 0x33FC, 68869 },
+ { 0x33FB, 68875 },
+ { 0x33FA, 68881 },
+ { 0x33F6, 68887 },
+ { 0x32C4, 68893 },
+ { 0x3359, 68898 },
+ { 0x335E, 68904 },
+ { 0x3362, 68910 },
+ { 0x335A, 68916 },
+ { 0x335D, 68922 },
+ { 0x335C, 68928 },
+ { 0x3361, 68934 },
+ { 0x3358, 68940 },
+ { 0x3360, 68946 },
+ { 0x335F, 68952 },
+ { 0x335B, 68958 },
+ { 0x3363, 68964 },
+ { 0x3364, 68970 },
+ { 0x336C, 68976 },
+ { 0x3367, 68982 },
+ { 0x3368, 68988 },
+ { 0x336A, 68994 },
+ { 0x3366, 69000 },
+ { 0x336B, 69006 },
+ { 0x3365, 69012 },
+ { 0x3369, 69018 },
+ { 0x336D, 69024 },
+ { 0x336E, 69030 },
+ { 0x3370, 69036 },
+ { 0x336F, 69042 },
+ { 0x32C6, 69048 },
+ { 0x32C5, 69053 },
+ { 0x32C3, 69058 },
+ { 0x32C2, 69063 },
+ { 0x32C7, 69068 },
+ { 0x32C0, 69073 },
+ { 0x32C9, 69078 },
+ { 0x32CB, 69083 },
+ { 0x32C1, 69088 },
+ { 0x32CA, 69093 },
+ { 0x32C8, 69098 },
+ { 0x303E, 69103 },
+ { 0x319F, 69106 },
+ { 0x3192, 69110 },
+ { 0x3196, 69114 },
+ { 0x3193, 69118 },
+ { 0x3195, 69122 },
+ { 0x319E, 69126 },
+ { 0x3199, 69130 },
+ { 0x319B, 69134 },
+ { 0x3194, 69138 },
+ { 0x3198, 69142 },
+ { 0x319C, 69146 },
+ { 0x319D, 69150 },
+ { 0x3197, 69154 },
+ { 0x319A, 69158 },
+ { 0x3190, 69162 },
+ { 0x3191, 69166 },
+ { 0x2FF4, 69170 },
+ { 0x2FF0, 69175 },
+ { 0x2FF2, 69181 },
+ { 0x2FF1, 69189 },
+ { 0x2FF3, 69195 },
+ { 0x2FFB, 69203 },
+ { 0x2FF7, 69207 },
+ { 0x2FF5, 69213 },
+ { 0x2FF6, 69219 },
+ { 0x2FFA, 69225 },
+ { 0x2FF8, 69232 },
+ { 0x2FF9, 69239 },
+ { 0x2139, 69246 },
+ { 0x22BA, 69248 },
+ { 0x6FF9, 69249 },
+ { 0x6FFA, 69252 },
+ { 0x6FFB, 69255 },
+ { 0x26A4, 69258 },
+ { 0x203D, 69263 },
+ { 0x27AA, 69264 },
+ { 0x2E0F, 69268 },
+ { 0x3250, 69269 },
+ { 0x2306, 69271 },
+ { 0x2008, 69272 },
+ { 0x2622, 69274 },
+ { 0x6FFD, 69276 },
+ { 0x2650, 69278 },
+ { 0x26BA, 69279 },
+ { 0x00B9, 69280 },
+ { 0x2076, 69282 },
+ { 0x00B2, 69284 },
+ { 0x2075, 69286 },
+ { 0x2074, 69288 },
+ { 0x207D, 69290 },
+ { 0x2079, 69293 },
+ { 0x207A, 69295 },
+ { 0x2070, 69298 },
+ { 0x2078, 69300 },
+ { 0x2071, 69302 },
+ { 0x207F, 69307 },
+ { 0x207B, 69312 },
+ { 0x207E, 69314 },
+ { 0x2077, 69317 },
+ { 0x00B3, 69319 },
+ { 0x207C, 69321 },
+ { 0x2ADB, 69324 },
+ { 0x25ED, 69326 },
+ { 0x25EE, 69332 },
+ { 0x214D, 69338 },
+ { 0x2A3F, 69339 },
+ { 0x060A, 69342 },
+ { 0x0609, 69347 },
+ { 0x0606, 69351 },
+ { 0x0661, 69354 },
+ { 0x0666, 69357 },
+ { 0x0662, 69360 },
+ { 0x0665, 69363 },
+ { 0x0664, 69366 },
+ { 0x0669, 69369 },
+ { 0x0660, 69372 },
+ { 0x0668, 69375 },
+ { 0x0667, 69378 },
+ { 0x0663, 69381 },
+ { 0x0607, 69384 },
+ { 0x212D, 69387 },
+ { 0x210C, 69390 },
+ { 0x2111, 69393 },
+ { 0x211C, 69396 },
+ { 0x2128, 69399 },
+ { 0x232D, 69402 },
+ { 0x29DF, 69403 },
+ { 0x29F3, 69405 },
+ { 0x29EF, 69408 },
+ { 0x29F1, 69411 },
+ { 0x29F2, 69414 },
+ { 0x29EE, 69417 },
+ { 0x29F0, 69420 },
+ { 0x269C, 69423 },
+ { 0x27AC, 69424 },
+ { 0x2265, 69429 },
+ { 0x2A7E, 69433 },
+ { 0x2A82, 69438 },
+ { 0x2A84, 69446 },
+ { 0x2A80, 69455 },
+ { 0x2277, 69463 },
+ { 0x2273, 69466 },
+ { 0x2A86, 69470 },
+ { 0x2A8A, 69473 },
+ { 0x2A88, 69477 },
+ { 0x2269, 69483 },
+ { 0x22E7, 69488 },
+ { 0x2267, 69493 },
+ { 0x003E, 69497 },
+ { 0x22D7, 69499 },
+ { 0x2A7A, 69502 },
+ { 0x2A7C, 69506 },
+ { 0x2A8E, 69511 },
+ { 0x2A90, 69516 },
+ { 0x2A94, 69521 },
+ { 0x2A92, 69530 },
+ { 0x2978, 69536 },
+ { 0x2A8C, 69540 },
+ { 0x22DB, 69546 },
+ { 0x2AA5, 69551 },
+ { 0x2AA7, 69554 },
+ { 0x2AA9, 69558 },
+ { 0x2AA4, 69565 },
+ { 0x002D, 69568 },
+ { 0x2E12, 69569 },
+ { 0x2229, 69570 },
+ { 0x2A40, 69571 },
+ { 0x2A44, 69574 },
+ { 0x2A43, 69578 },
+ { 0x2A49, 69581 },
+ { 0x2A47, 69586 },
+ { 0x2A4B, 69589 },
+ { 0x96E1, 69595 },
+ { 0x96DF, 69599 },
+ { 0x96E0, 69603 },
+ { 0x97CF, 69607 },
+ { 0x97D4, 69611 },
+ { 0x97D0, 69615 },
+ { 0x97D3, 69619 },
+ { 0x97D2, 69623 },
+ { 0x97D7, 69627 },
+ { 0x97CE, 69631 },
+ { 0x97D6, 69635 },
+ { 0x97D5, 69639 },
+ { 0x97D1, 69643 },
+ { 0x96DE, 69647 },
+ { 0x96C1, 69651 },
+ { 0x941A, 69654 },
+ { 0x941B, 69658 },
+ { 0x941C, 69662 },
+ { 0x941D, 69666 },
+ { 0x941E, 69670 },
+ { 0x941F, 69674 },
+ { 0x9420, 69678 },
+ { 0x9421, 69682 },
+ { 0x9422, 69686 },
+ { 0x9423, 69690 },
+ { 0x9424, 69694 },
+ { 0x9425, 69698 },
+ { 0x9426, 69702 },
+ { 0x9427, 69706 },
+ { 0x9428, 69710 },
+ { 0x9429, 69714 },
+ { 0x942A, 69718 },
+ { 0x942B, 69722 },
+ { 0x942C, 69726 },
+ { 0x942D, 69730 },
+ { 0x942E, 69734 },
+ { 0x942F, 69738 },
+ { 0x9430, 69742 },
+ { 0x9431, 69746 },
+ { 0x9432, 69750 },
+ { 0x9433, 69754 },
+ { 0x96CD, 69758 },
+ { 0x96CE, 69762 },
+ { 0x96D1, 69766 },
+ { 0x96CF, 69770 },
+ { 0x96D8, 69774 },
+ { 0x96C8, 69778 },
+ { 0x96D7, 69782 },
+ { 0x96D9, 69786 },
+ { 0x96D2, 69790 },
+ { 0x96D5, 69794 },
+ { 0x96C3, 69798 },
+ { 0x96CA, 69802 },
+ { 0x96C7, 69806 },
+ { 0x96C2, 69810 },
+ { 0x96C5, 69814 },
+ { 0x96D3, 69818 },
+ { 0x96C4, 69823 },
+ { 0x96CB, 69827 },
+ { 0x96CC, 69831 },
+ { 0x96DA, 69835 },
+ { 0x96D4, 69839 },
+ { 0x96C9, 69843 },
+ { 0x97CB, 69847 },
+ { 0x96C6, 69851 },
+ { 0x96D0, 69855 },
+ { 0x96D6, 69859 },
+ { 0x96DD, 69863 },
+ { 0x9755, 69867 },
+ { 0x9753, 69872 },
+ { 0x9754, 69877 },
+ { 0x9752, 69882 },
+ { 0x9735, 69887 },
+ { 0x9482, 69891 },
+ { 0x9483, 69896 },
+ { 0x9484, 69901 },
+ { 0x9485, 69906 },
+ { 0x9486, 69911 },
+ { 0x9487, 69916 },
+ { 0x9488, 69921 },
+ { 0x9489, 69926 },
+ { 0x948A, 69931 },
+ { 0x948B, 69936 },
+ { 0x948C, 69941 },
+ { 0x948D, 69946 },
+ { 0x948E, 69951 },
+ { 0x948F, 69956 },
+ { 0x9490, 69961 },
+ { 0x9491, 69966 },
+ { 0x9492, 69971 },
+ { 0x9493, 69976 },
+ { 0x9494, 69981 },
+ { 0x9495, 69986 },
+ { 0x9496, 69991 },
+ { 0x9497, 69996 },
+ { 0x9498, 70001 },
+ { 0x9499, 70006 },
+ { 0x949A, 70011 },
+ { 0x949B, 70016 },
+ { 0x9741, 70021 },
+ { 0x9742, 70026 },
+ { 0x9745, 70031 },
+ { 0x9743, 70036 },
+ { 0x974C, 70041 },
+ { 0x973C, 70046 },
+ { 0x974B, 70051 },
+ { 0x974D, 70056 },
+ { 0x9746, 70061 },
+ { 0x9749, 70066 },
+ { 0x9737, 70071 },
+ { 0x973E, 70076 },
+ { 0x973B, 70081 },
+ { 0x9736, 70086 },
+ { 0x9739, 70091 },
+ { 0x9747, 70096 },
+ { 0x9738, 70102 },
+ { 0x973F, 70107 },
+ { 0x9740, 70112 },
+ { 0x974E, 70117 },
+ { 0x9748, 70122 },
+ { 0x973D, 70127 },
+ { 0x973A, 70132 },
+ { 0x9744, 70137 },
+ { 0x974A, 70142 },
+ { 0x9751, 70147 },
+ { 0x9468, 70152 },
+ { 0x9469, 70157 },
+ { 0x946A, 70162 },
+ { 0x946B, 70167 },
+ { 0x946C, 70172 },
+ { 0x946D, 70177 },
+ { 0x946E, 70182 },
+ { 0x946F, 70187 },
+ { 0x9470, 70192 },
+ { 0x9471, 70197 },
+ { 0x9472, 70202 },
+ { 0x9473, 70207 },
+ { 0x9474, 70212 },
+ { 0x9475, 70217 },
+ { 0x9476, 70222 },
+ { 0x9477, 70227 },
+ { 0x9478, 70232 },
+ { 0x9479, 70237 },
+ { 0x947A, 70242 },
+ { 0x947B, 70247 },
+ { 0x947C, 70252 },
+ { 0x947D, 70257 },
+ { 0x947E, 70262 },
+ { 0x947F, 70267 },
+ { 0x9480, 70272 },
+ { 0x9481, 70277 },
+ { 0x9727, 70282 },
+ { 0x9728, 70287 },
+ { 0x972B, 70292 },
+ { 0x9729, 70297 },
+ { 0x9732, 70302 },
+ { 0x9722, 70307 },
+ { 0x9731, 70312 },
+ { 0x9733, 70317 },
+ { 0x972C, 70322 },
+ { 0x972F, 70327 },
+ { 0x971D, 70332 },
+ { 0x9724, 70337 },
+ { 0x9721, 70342 },
+ { 0x971C, 70347 },
+ { 0x971F, 70352 },
+ { 0x971E, 70357 },
+ { 0x9725, 70362 },
+ { 0x9726, 70367 },
+ { 0x9734, 70372 },
+ { 0x972E, 70377 },
+ { 0x9723, 70382 },
+ { 0x972D, 70387 },
+ { 0x9720, 70393 },
+ { 0x972A, 70398 },
+ { 0x9730, 70403 },
+ { 0x9750, 70408 },
+ { 0x974F, 70413 },
+ { 0x94EA, 70418 },
+ { 0x94EB, 70423 },
+ { 0x94EC, 70428 },
+ { 0x94ED, 70433 },
+ { 0x94EE, 70438 },
+ { 0x94EF, 70443 },
+ { 0x94F0, 70448 },
+ { 0x94F1, 70453 },
+ { 0x94F2, 70458 },
+ { 0x94F3, 70463 },
+ { 0x94F4, 70468 },
+ { 0x94F5, 70473 },
+ { 0x94F6, 70478 },
+ { 0x94F7, 70483 },
+ { 0x94F8, 70488 },
+ { 0x94F9, 70493 },
+ { 0x94FA, 70498 },
+ { 0x94FB, 70503 },
+ { 0x94FC, 70508 },
+ { 0x94FD, 70513 },
+ { 0x94FE, 70518 },
+ { 0x94FF, 70523 },
+ { 0x9500, 70528 },
+ { 0x9501, 70533 },
+ { 0x9502, 70538 },
+ { 0x9503, 70543 },
+ { 0x94D0, 70548 },
+ { 0x94D1, 70553 },
+ { 0x94D2, 70558 },
+ { 0x94D3, 70563 },
+ { 0x94D4, 70568 },
+ { 0x94D5, 70573 },
+ { 0x94D6, 70578 },
+ { 0x94D7, 70583 },
+ { 0x94D8, 70588 },
+ { 0x94D9, 70593 },
+ { 0x94DA, 70598 },
+ { 0x94DB, 70603 },
+ { 0x94DC, 70608 },
+ { 0x94DD, 70613 },
+ { 0x94DE, 70618 },
+ { 0x94DF, 70623 },
+ { 0x94E0, 70628 },
+ { 0x94E1, 70633 },
+ { 0x94E2, 70638 },
+ { 0x94E3, 70643 },
+ { 0x94E4, 70648 },
+ { 0x94E5, 70653 },
+ { 0x94E6, 70658 },
+ { 0x94E7, 70663 },
+ { 0x94E8, 70668 },
+ { 0x94E9, 70673 },
+ { 0x9400, 70678 },
+ { 0x9401, 70682 },
+ { 0x9402, 70686 },
+ { 0x9403, 70690 },
+ { 0x9404, 70694 },
+ { 0x9405, 70698 },
+ { 0x9406, 70702 },
+ { 0x9407, 70706 },
+ { 0x9408, 70710 },
+ { 0x9409, 70714 },
+ { 0x940A, 70718 },
+ { 0x940B, 70722 },
+ { 0x940C, 70726 },
+ { 0x940D, 70730 },
+ { 0x940E, 70734 },
+ { 0x940F, 70738 },
+ { 0x9410, 70742 },
+ { 0x9411, 70746 },
+ { 0x9412, 70750 },
+ { 0x9413, 70754 },
+ { 0x9414, 70758 },
+ { 0x9415, 70762 },
+ { 0x9416, 70766 },
+ { 0x9417, 70770 },
+ { 0x9418, 70774 },
+ { 0x9419, 70778 },
+ { 0x96B3, 70782 },
+ { 0x96B4, 70786 },
+ { 0x96B7, 70790 },
+ { 0x96B5, 70794 },
+ { 0x96BE, 70798 },
+ { 0x96AE, 70802 },
+ { 0x96BD, 70806 },
+ { 0x96BF, 70810 },
+ { 0x96B8, 70814 },
+ { 0x96BB, 70818 },
+ { 0x96A9, 70822 },
+ { 0x96B0, 70826 },
+ { 0x96AD, 70830 },
+ { 0x96A8, 70834 },
+ { 0x96AB, 70838 },
+ { 0x96AA, 70842 },
+ { 0x96B1, 70846 },
+ { 0x96B2, 70850 },
+ { 0x96C0, 70854 },
+ { 0x96BA, 70858 },
+ { 0x96AF, 70862 },
+ { 0x96B9, 70866 },
+ { 0x97CA, 70871 },
+ { 0x96AC, 70875 },
+ { 0x96B6, 70879 },
+ { 0x96BC, 70883 },
+ { 0x96DC, 70887 },
+ { 0x9586, 70891 },
+ { 0x9587, 70896 },
+ { 0x9588, 70901 },
+ { 0x9589, 70906 },
+ { 0x958A, 70911 },
+ { 0x958B, 70916 },
+ { 0x958C, 70921 },
+ { 0x958D, 70926 },
+ { 0x958E, 70931 },
+ { 0x958F, 70936 },
+ { 0x9590, 70941 },
+ { 0x9591, 70946 },
+ { 0x9592, 70951 },
+ { 0x9593, 70956 },
+ { 0x9594, 70961 },
+ { 0x9595, 70966 },
+ { 0x9596, 70971 },
+ { 0x9597, 70976 },
+ { 0x9598, 70981 },
+ { 0x9599, 70986 },
+ { 0x959A, 70991 },
+ { 0x959B, 70996 },
+ { 0x959C, 71001 },
+ { 0x959D, 71006 },
+ { 0x959E, 71011 },
+ { 0x959F, 71016 },
+ { 0x956C, 71021 },
+ { 0x956D, 71026 },
+ { 0x956E, 71031 },
+ { 0x956F, 71036 },
+ { 0x9570, 71041 },
+ { 0x9571, 71046 },
+ { 0x9572, 71051 },
+ { 0x9573, 71056 },
+ { 0x9574, 71061 },
+ { 0x9575, 71066 },
+ { 0x9576, 71071 },
+ { 0x9577, 71076 },
+ { 0x9578, 71081 },
+ { 0x9579, 71086 },
+ { 0x957A, 71091 },
+ { 0x957B, 71096 },
+ { 0x957C, 71101 },
+ { 0x957D, 71106 },
+ { 0x957E, 71111 },
+ { 0x957F, 71116 },
+ { 0x9580, 71121 },
+ { 0x9581, 71126 },
+ { 0x9582, 71131 },
+ { 0x9583, 71136 },
+ { 0x9584, 71141 },
+ { 0x9585, 71146 },
+ { 0x96DB, 71151 },
+ { 0x27E8, 71155 },
+ { 0x27E6, 71159 },
+ { 0x27EC, 71164 },
+ { 0x27EA, 71170 },
+ { 0x27EE, 71175 },
+ { 0x27E9, 71179 },
+ { 0x27E7, 71183 },
+ { 0x27ED, 71188 },
+ { 0x27EB, 71194 },
+ { 0x27EF, 71199 },
+ { 0x971B, 71203 },
+ { 0x9719, 71207 },
+ { 0x971A, 71211 },
+ { 0x9718, 71215 },
+ { 0x96FB, 71219 },
+ { 0x944E, 71222 },
+ { 0x944F, 71226 },
+ { 0x9450, 71230 },
+ { 0x9451, 71234 },
+ { 0x9452, 71238 },
+ { 0x9453, 71242 },
+ { 0x9454, 71246 },
+ { 0x9456, 71250 },
+ { 0x9457, 71254 },
+ { 0x9458, 71258 },
+ { 0x9459, 71262 },
+ { 0x945A, 71266 },
+ { 0x945B, 71270 },
+ { 0x945C, 71274 },
+ { 0x945D, 71278 },
+ { 0x945E, 71282 },
+ { 0x945F, 71286 },
+ { 0x9460, 71290 },
+ { 0x9461, 71294 },
+ { 0x9462, 71298 },
+ { 0x9463, 71302 },
+ { 0x9464, 71306 },
+ { 0x9465, 71310 },
+ { 0x9466, 71314 },
+ { 0x9467, 71318 },
+ { 0x9707, 71322 },
+ { 0x9708, 71326 },
+ { 0x970B, 71330 },
+ { 0x9709, 71334 },
+ { 0x9712, 71338 },
+ { 0x9702, 71342 },
+ { 0x9711, 71346 },
+ { 0x9713, 71350 },
+ { 0x970C, 71354 },
+ { 0x970F, 71358 },
+ { 0x96FD, 71362 },
+ { 0x9704, 71366 },
+ { 0x9701, 71370 },
+ { 0x96FC, 71374 },
+ { 0x96FF, 71378 },
+ { 0x970D, 71382 },
+ { 0x96FE, 71387 },
+ { 0x9705, 71391 },
+ { 0x9706, 71395 },
+ { 0x9714, 71399 },
+ { 0x970E, 71403 },
+ { 0x9703, 71407 },
+ { 0x96A4, 71411 },
+ { 0x96A5, 71416 },
+ { 0x9700, 71421 },
+ { 0x970A, 71425 },
+ { 0x9710, 71429 },
+ { 0x9717, 71433 },
+ { 0x9434, 71437 },
+ { 0x9435, 71441 },
+ { 0x9436, 71445 },
+ { 0x9437, 71449 },
+ { 0x9438, 71453 },
+ { 0x9439, 71457 },
+ { 0x943A, 71461 },
+ { 0x943B, 71465 },
+ { 0x943C, 71469 },
+ { 0x943D, 71473 },
+ { 0x943E, 71477 },
+ { 0x943F, 71481 },
+ { 0x9440, 71485 },
+ { 0x9441, 71489 },
+ { 0x9442, 71493 },
+ { 0x9443, 71497 },
+ { 0x9444, 71501 },
+ { 0x9445, 71505 },
+ { 0x9446, 71509 },
+ { 0x9447, 71513 },
+ { 0x9448, 71517 },
+ { 0x9449, 71521 },
+ { 0x944A, 71525 },
+ { 0x944B, 71529 },
+ { 0x944C, 71533 },
+ { 0x944D, 71537 },
+ { 0x96ED, 71541 },
+ { 0x96EE, 71545 },
+ { 0x96F1, 71549 },
+ { 0x96EF, 71553 },
+ { 0x96F8, 71557 },
+ { 0x96E8, 71561 },
+ { 0x96F7, 71565 },
+ { 0x96F9, 71569 },
+ { 0x96F2, 71573 },
+ { 0x96F5, 71577 },
+ { 0x96E3, 71581 },
+ { 0x96EA, 71585 },
+ { 0x96E7, 71589 },
+ { 0x96E2, 71593 },
+ { 0x96E5, 71597 },
+ { 0x96E4, 71601 },
+ { 0x96EB, 71605 },
+ { 0x96EC, 71609 },
+ { 0x96FA, 71613 },
+ { 0x96F4, 71617 },
+ { 0x96E9, 71621 },
+ { 0x96F3, 71625 },
+ { 0x96E6, 71630 },
+ { 0x96F0, 71634 },
+ { 0x96F6, 71638 },
+ { 0x9716, 71642 },
+ { 0x9715, 71646 },
+ { 0x94B6, 71650 },
+ { 0x94B7, 71654 },
+ { 0x94B8, 71658 },
+ { 0x94B9, 71662 },
+ { 0x94BB, 71666 },
+ { 0x94BD, 71670 },
+ { 0x94BE, 71674 },
+ { 0x94BF, 71678 },
+ { 0x94C0, 71682 },
+ { 0x94C1, 71686 },
+ { 0x94C2, 71690 },
+ { 0x94C3, 71694 },
+ { 0x94C5, 71698 },
+ { 0x94C6, 71702 },
+ { 0x94C7, 71706 },
+ { 0x94C8, 71710 },
+ { 0x94C9, 71714 },
+ { 0x94CA, 71718 },
+ { 0x94CB, 71722 },
+ { 0x94CC, 71726 },
+ { 0x94CD, 71730 },
+ { 0x94CE, 71734 },
+ { 0x94CF, 71738 },
+ { 0x949C, 71742 },
+ { 0x949E, 71746 },
+ { 0x949F, 71750 },
+ { 0x94A2, 71754 },
+ { 0x94A5, 71758 },
+ { 0x94A6, 71762 },
+ { 0x94A9, 71766 },
+ { 0x94AA, 71770 },
+ { 0x94AB, 71774 },
+ { 0x94AC, 71778 },
+ { 0x94AE, 71782 },
+ { 0x94AF, 71786 },
+ { 0x94B0, 71790 },
+ { 0x94B1, 71794 },
+ { 0x94B2, 71798 },
+ { 0x94B3, 71802 },
+ { 0x94B4, 71806 },
+ { 0x94B5, 71810 },
+ { 0x951E, 71814 },
+ { 0x951F, 71818 },
+ { 0x9520, 71822 },
+ { 0x9521, 71826 },
+ { 0x9522, 71830 },
+ { 0x9523, 71834 },
+ { 0x9524, 71838 },
+ { 0x9525, 71842 },
+ { 0x9526, 71846 },
+ { 0x9527, 71850 },
+ { 0x9528, 71854 },
+ { 0x9529, 71858 },
+ { 0x952A, 71862 },
+ { 0x952B, 71866 },
+ { 0x952C, 71870 },
+ { 0x952D, 71874 },
+ { 0x952E, 71878 },
+ { 0x952F, 71882 },
+ { 0x9530, 71886 },
+ { 0x9531, 71890 },
+ { 0x9532, 71894 },
+ { 0x9533, 71898 },
+ { 0x9534, 71902 },
+ { 0x9535, 71906 },
+ { 0x9536, 71910 },
+ { 0x9537, 71914 },
+ { 0x9504, 71918 },
+ { 0x9505, 71922 },
+ { 0x9507, 71926 },
+ { 0x9508, 71930 },
+ { 0x9509, 71934 },
+ { 0x950A, 71938 },
+ { 0x950D, 71942 },
+ { 0x950E, 71946 },
+ { 0x950F, 71950 },
+ { 0x9510, 71954 },
+ { 0x9511, 71958 },
+ { 0x9512, 71962 },
+ { 0x9513, 71966 },
+ { 0x9514, 71970 },
+ { 0x9516, 71974 },
+ { 0x9517, 71978 },
+ { 0x9518, 71982 },
+ { 0x9519, 71986 },
+ { 0x951A, 71990 },
+ { 0x951B, 71994 },
+ { 0x951C, 71998 },
+ { 0x97F7, 72002 },
+ { 0x97FC, 72006 },
+ { 0x97F8, 72010 },
+ { 0x97FB, 72014 },
+ { 0x97FA, 72018 },
+ { 0x97FF, 72022 },
+ { 0x97F6, 72026 },
+ { 0x97FE, 72030 },
+ { 0x97FD, 72034 },
+ { 0x97F9, 72038 },
+ { 0x968A, 72042 },
+ { 0x968B, 72046 },
+ { 0x968C, 72050 },
+ { 0x968D, 72054 },
+ { 0x968E, 72058 },
+ { 0x968F, 72062 },
+ { 0x9690, 72066 },
+ { 0x9691, 72070 },
+ { 0x9692, 72074 },
+ { 0x9693, 72078 },
+ { 0x9694, 72082 },
+ { 0x9695, 72086 },
+ { 0x9696, 72090 },
+ { 0x9697, 72094 },
+ { 0x9698, 72098 },
+ { 0x9699, 72102 },
+ { 0x969A, 72106 },
+ { 0x969B, 72110 },
+ { 0x969C, 72114 },
+ { 0x969D, 72118 },
+ { 0x969E, 72122 },
+ { 0x969F, 72126 },
+ { 0x96A0, 72130 },
+ { 0x96A1, 72134 },
+ { 0x96A2, 72138 },
+ { 0x96A3, 72142 },
+ { 0x9670, 72146 },
+ { 0x9671, 72150 },
+ { 0x9672, 72154 },
+ { 0x9673, 72158 },
+ { 0x9674, 72162 },
+ { 0x9675, 72166 },
+ { 0x9676, 72170 },
+ { 0x9677, 72174 },
+ { 0x9678, 72178 },
+ { 0x9679, 72182 },
+ { 0x967A, 72186 },
+ { 0x967B, 72190 },
+ { 0x967C, 72194 },
+ { 0x967D, 72198 },
+ { 0x967E, 72202 },
+ { 0x967F, 72206 },
+ { 0x9680, 72210 },
+ { 0x9681, 72214 },
+ { 0x9682, 72218 },
+ { 0x9683, 72222 },
+ { 0x9684, 72226 },
+ { 0x9685, 72230 },
+ { 0x9686, 72234 },
+ { 0x9687, 72238 },
+ { 0x9688, 72242 },
+ { 0x9689, 72246 },
+ { 0x978F, 72250 },
+ { 0x978D, 72255 },
+ { 0x978E, 72260 },
+ { 0x97ED, 72265 },
+ { 0x97F2, 72270 },
+ { 0x97EE, 72275 },
+ { 0x97F1, 72280 },
+ { 0x97F0, 72285 },
+ { 0x97F5, 72290 },
+ { 0x97EC, 72295 },
+ { 0x97F4, 72300 },
+ { 0x97F3, 72305 },
+ { 0x97EF, 72310 },
+ { 0x978C, 72315 },
+ { 0x976F, 72320 },
+ { 0x95EE, 72324 },
+ { 0x95EF, 72329 },
+ { 0x95F0, 72334 },
+ { 0x95F1, 72339 },
+ { 0x95F2, 72344 },
+ { 0x95F3, 72349 },
+ { 0x95F4, 72354 },
+ { 0x95F5, 72359 },
+ { 0x95F6, 72364 },
+ { 0x95F7, 72369 },
+ { 0x95F8, 72374 },
+ { 0x95F9, 72379 },
+ { 0x95FA, 72384 },
+ { 0x95FB, 72389 },
+ { 0x95FC, 72394 },
+ { 0x95FD, 72399 },
+ { 0x95FE, 72404 },
+ { 0x95FF, 72409 },
+ { 0x9600, 72414 },
+ { 0x9601, 72419 },
+ { 0x9602, 72424 },
+ { 0x9603, 72429 },
+ { 0x9604, 72434 },
+ { 0x9605, 72439 },
+ { 0x9606, 72444 },
+ { 0x9607, 72449 },
+ { 0x977B, 72454 },
+ { 0x977C, 72459 },
+ { 0x977F, 72464 },
+ { 0x977D, 72469 },
+ { 0x9786, 72474 },
+ { 0x9776, 72479 },
+ { 0x9785, 72484 },
+ { 0x9787, 72489 },
+ { 0x9780, 72494 },
+ { 0x9783, 72499 },
+ { 0x9771, 72504 },
+ { 0x9778, 72509 },
+ { 0x9775, 72514 },
+ { 0x9770, 72519 },
+ { 0x9773, 72524 },
+ { 0x9781, 72529 },
+ { 0x9772, 72535 },
+ { 0x9779, 72540 },
+ { 0x977A, 72545 },
+ { 0x9788, 72550 },
+ { 0x9782, 72555 },
+ { 0x9777, 72560 },
+ { 0x9774, 72565 },
+ { 0x977E, 72570 },
+ { 0x9784, 72575 },
+ { 0x978B, 72580 },
+ { 0x97C9, 72585 },
+ { 0x97C7, 72591 },
+ { 0x97C8, 72597 },
+ { 0x97C6, 72603 },
+ { 0x97A9, 72609 },
+ { 0x9656, 72614 },
+ { 0x9657, 72620 },
+ { 0x9658, 72626 },
+ { 0x9659, 72632 },
+ { 0x965A, 72638 },
+ { 0x965B, 72644 },
+ { 0x965C, 72650 },
+ { 0x965D, 72656 },
+ { 0x965E, 72662 },
+ { 0x965F, 72668 },
+ { 0x9660, 72674 },
+ { 0x9661, 72680 },
+ { 0x9662, 72686 },
+ { 0x9663, 72692 },
+ { 0x9664, 72698 },
+ { 0x9665, 72704 },
+ { 0x9666, 72710 },
+ { 0x9667, 72716 },
+ { 0x9668, 72722 },
+ { 0x9669, 72728 },
+ { 0x966A, 72734 },
+ { 0x966B, 72740 },
+ { 0x966C, 72746 },
+ { 0x966D, 72752 },
+ { 0x966E, 72758 },
+ { 0x966F, 72764 },
+ { 0x97B5, 72770 },
+ { 0x97B6, 72776 },
+ { 0x97B9, 72782 },
+ { 0x97B7, 72788 },
+ { 0x97C0, 72794 },
+ { 0x97B0, 72800 },
+ { 0x97BF, 72806 },
+ { 0x97C1, 72812 },
+ { 0x97BA, 72818 },
+ { 0x97BD, 72824 },
+ { 0x97AB, 72830 },
+ { 0x97B2, 72836 },
+ { 0x97AF, 72842 },
+ { 0x97AA, 72848 },
+ { 0x97AD, 72854 },
+ { 0x97BB, 72860 },
+ { 0x97AC, 72867 },
+ { 0x97B3, 72873 },
+ { 0x97B4, 72879 },
+ { 0x97C2, 72885 },
+ { 0x97BC, 72891 },
+ { 0x97B1, 72897 },
+ { 0x97AE, 72903 },
+ { 0x97B8, 72909 },
+ { 0x97BE, 72915 },
+ { 0x97C5, 72921 },
+ { 0x963C, 72927 },
+ { 0x963D, 72933 },
+ { 0x963E, 72939 },
+ { 0x963F, 72945 },
+ { 0x9640, 72951 },
+ { 0x9641, 72957 },
+ { 0x9642, 72963 },
+ { 0x9643, 72969 },
+ { 0x9644, 72975 },
+ { 0x9645, 72981 },
+ { 0x9646, 72987 },
+ { 0x9647, 72993 },
+ { 0x9648, 72999 },
+ { 0x9649, 73005 },
+ { 0x964A, 73011 },
+ { 0x964B, 73017 },
+ { 0x964C, 73023 },
+ { 0x964D, 73029 },
+ { 0x964E, 73035 },
+ { 0x964F, 73041 },
+ { 0x9650, 73047 },
+ { 0x9651, 73053 },
+ { 0x9652, 73059 },
+ { 0x9653, 73065 },
+ { 0x9654, 73071 },
+ { 0x9655, 73077 },
+ { 0x979B, 73083 },
+ { 0x979C, 73089 },
+ { 0x979F, 73095 },
+ { 0x979D, 73101 },
+ { 0x97A6, 73107 },
+ { 0x9796, 73113 },
+ { 0x97A5, 73119 },
+ { 0x97A7, 73125 },
+ { 0x97A0, 73131 },
+ { 0x97A3, 73137 },
+ { 0x9791, 73143 },
+ { 0x9798, 73149 },
+ { 0x9795, 73155 },
+ { 0x9790, 73161 },
+ { 0x9793, 73167 },
+ { 0x9792, 73173 },
+ { 0x9799, 73179 },
+ { 0x979A, 73185 },
+ { 0x97A8, 73191 },
+ { 0x97A2, 73197 },
+ { 0x9797, 73203 },
+ { 0x97A1, 73209 },
+ { 0x9794, 73216 },
+ { 0x979E, 73222 },
+ { 0x97A4, 73228 },
+ { 0x97C4, 73234 },
+ { 0x97C3, 73240 },
+ { 0x95D4, 73246 },
+ { 0x95D5, 73251 },
+ { 0x95D6, 73256 },
+ { 0x95D7, 73261 },
+ { 0x95D8, 73266 },
+ { 0x95D9, 73271 },
+ { 0x95DA, 73276 },
+ { 0x95DB, 73281 },
+ { 0x95DC, 73286 },
+ { 0x95DD, 73291 },
+ { 0x95DE, 73296 },
+ { 0x95DF, 73301 },
+ { 0x95E0, 73306 },
+ { 0x95E1, 73311 },
+ { 0x95E2, 73316 },
+ { 0x95E3, 73321 },
+ { 0x95E4, 73326 },
+ { 0x95E5, 73331 },
+ { 0x95E6, 73336 },
+ { 0x95E7, 73341 },
+ { 0x95E8, 73346 },
+ { 0x95E9, 73351 },
+ { 0x95EA, 73356 },
+ { 0x95EB, 73361 },
+ { 0x95EC, 73366 },
+ { 0x95ED, 73371 },
+ { 0x9761, 73376 },
+ { 0x9762, 73381 },
+ { 0x9765, 73386 },
+ { 0x9763, 73391 },
+ { 0x976C, 73396 },
+ { 0x975C, 73401 },
+ { 0x976B, 73406 },
+ { 0x976D, 73411 },
+ { 0x9766, 73416 },
+ { 0x9769, 73421 },
+ { 0x9757, 73426 },
+ { 0x975E, 73431 },
+ { 0x975B, 73436 },
+ { 0x9756, 73441 },
+ { 0x9759, 73446 },
+ { 0x9758, 73451 },
+ { 0x975F, 73456 },
+ { 0x9760, 73461 },
+ { 0x976E, 73466 },
+ { 0x9768, 73471 },
+ { 0x975D, 73476 },
+ { 0x9767, 73481 },
+ { 0x975A, 73487 },
+ { 0x9764, 73492 },
+ { 0x976A, 73497 },
+ { 0x978A, 73502 },
+ { 0x9789, 73507 },
+ { 0x97E3, 73512 },
+ { 0x97E8, 73516 },
+ { 0x97E4, 73520 },
+ { 0x97E7, 73524 },
+ { 0x97E6, 73528 },
+ { 0x97EB, 73532 },
+ { 0x97E2, 73536 },
+ { 0x97EA, 73540 },
+ { 0x97E9, 73544 },
+ { 0x97E5, 73548 },
+ { 0x95BA, 73552 },
+ { 0x95BB, 73556 },
+ { 0x95BC, 73560 },
+ { 0x95BD, 73564 },
+ { 0x95BE, 73568 },
+ { 0x95BF, 73572 },
+ { 0x95C0, 73576 },
+ { 0x95C1, 73580 },
+ { 0x95C2, 73584 },
+ { 0x95C3, 73588 },
+ { 0x95C4, 73592 },
+ { 0x95C5, 73596 },
+ { 0x95C6, 73600 },
+ { 0x95C7, 73604 },
+ { 0x95C8, 73608 },
+ { 0x95C9, 73612 },
+ { 0x95CA, 73616 },
+ { 0x95CB, 73620 },
+ { 0x95CC, 73624 },
+ { 0x95CD, 73628 },
+ { 0x95CE, 73632 },
+ { 0x95CF, 73636 },
+ { 0x95D0, 73640 },
+ { 0x95D1, 73644 },
+ { 0x95D2, 73648 },
+ { 0x95D3, 73652 },
+ { 0x9622, 73656 },
+ { 0x9623, 73661 },
+ { 0x9624, 73666 },
+ { 0x9625, 73671 },
+ { 0x9626, 73676 },
+ { 0x9627, 73681 },
+ { 0x9628, 73686 },
+ { 0x9629, 73691 },
+ { 0x962A, 73696 },
+ { 0x962B, 73701 },
+ { 0x962C, 73706 },
+ { 0x962D, 73711 },
+ { 0x962E, 73716 },
+ { 0x962F, 73721 },
+ { 0x9630, 73726 },
+ { 0x9631, 73731 },
+ { 0x9632, 73736 },
+ { 0x9633, 73741 },
+ { 0x9634, 73746 },
+ { 0x9635, 73751 },
+ { 0x9636, 73756 },
+ { 0x9637, 73761 },
+ { 0x9638, 73766 },
+ { 0x9639, 73771 },
+ { 0x963A, 73776 },
+ { 0x963B, 73781 },
+ { 0x9608, 73786 },
+ { 0x9609, 73791 },
+ { 0x960A, 73796 },
+ { 0x960B, 73801 },
+ { 0x960C, 73806 },
+ { 0x960D, 73811 },
+ { 0x960E, 73816 },
+ { 0x960F, 73821 },
+ { 0x9610, 73826 },
+ { 0x9611, 73831 },
+ { 0x9612, 73836 },
+ { 0x9613, 73841 },
+ { 0x9614, 73846 },
+ { 0x9615, 73851 },
+ { 0x9616, 73856 },
+ { 0x9617, 73861 },
+ { 0x9618, 73866 },
+ { 0x9619, 73871 },
+ { 0x961A, 73876 },
+ { 0x961B, 73881 },
+ { 0x961C, 73886 },
+ { 0x961D, 73891 },
+ { 0x961E, 73896 },
+ { 0x961F, 73901 },
+ { 0x9620, 73906 },
+ { 0x9621, 73911 },
+ { 0x95A0, 73916 },
+ { 0x95A1, 73920 },
+ { 0x95A2, 73924 },
+ { 0x95A3, 73928 },
+ { 0x95A4, 73932 },
+ { 0x95A5, 73936 },
+ { 0x95A6, 73940 },
+ { 0x95A7, 73944 },
+ { 0x95A8, 73948 },
+ { 0x95A9, 73952 },
+ { 0x95AA, 73956 },
+ { 0x95AB, 73960 },
+ { 0x95AC, 73964 },
+ { 0x95AD, 73968 },
+ { 0x95AE, 73972 },
+ { 0x95AF, 73976 },
+ { 0x95B0, 73980 },
+ { 0x95B1, 73984 },
+ { 0x95B2, 73988 },
+ { 0x95B3, 73992 },
+ { 0x95B4, 73996 },
+ { 0x95B5, 74000 },
+ { 0x95B6, 74004 },
+ { 0x95B7, 74008 },
+ { 0x95B8, 74012 },
+ { 0x95B9, 74016 },
+ { 0x97D9, 74020 },
+ { 0x97DE, 74024 },
+ { 0x97DA, 74028 },
+ { 0x97DD, 74032 },
+ { 0x97DC, 74036 },
+ { 0x97E1, 74040 },
+ { 0x97D8, 74044 },
+ { 0x97E0, 74048 },
+ { 0x97DF, 74052 },
+ { 0x97DB, 74056 },
+ { 0x9552, 74060 },
+ { 0x9553, 74064 },
+ { 0x9554, 74068 },
+ { 0x9555, 74072 },
+ { 0x9556, 74076 },
+ { 0x9557, 74080 },
+ { 0x9558, 74084 },
+ { 0x9559, 74088 },
+ { 0x955A, 74092 },
+ { 0x955B, 74096 },
+ { 0x955C, 74100 },
+ { 0x955D, 74104 },
+ { 0x955E, 74108 },
+ { 0x955F, 74112 },
+ { 0x9560, 74116 },
+ { 0x9561, 74120 },
+ { 0x9562, 74124 },
+ { 0x9563, 74128 },
+ { 0x9564, 74132 },
+ { 0x9565, 74136 },
+ { 0x9566, 74140 },
+ { 0x9567, 74144 },
+ { 0x9568, 74148 },
+ { 0x9569, 74152 },
+ { 0x956A, 74156 },
+ { 0x956B, 74160 },
+ { 0x9538, 74164 },
+ { 0x9539, 74168 },
+ { 0x953B, 74172 },
+ { 0x953C, 74176 },
+ { 0x953D, 74180 },
+ { 0x953E, 74184 },
+ { 0x9540, 74188 },
+ { 0x9541, 74192 },
+ { 0x9542, 74196 },
+ { 0x9543, 74200 },
+ { 0x9544, 74204 },
+ { 0x9546, 74208 },
+ { 0x954A, 74212 },
+ { 0x954B, 74216 },
+ { 0x954C, 74220 },
+ { 0x954D, 74224 },
+ { 0x954E, 74228 },
+ { 0x954F, 74232 },
+ { 0x9550, 74236 },
+ { 0x2011, 74240 },
+ { 0x211E, 74242 },
+ { 0x6E31, 74244 },
+ { 0x6E32, 74250 },
+ { 0x6E33, 74256 },
+ { 0x6E30, 74262 },
+ { 0x6E3F, 74269 },
+ { 0x6E3B, 74276 },
+ { 0x6E37, 74284 },
+ { 0x6E43, 74291 },
+ { 0x6E17, 74299 },
+ { 0x6E41, 74307 },
+ { 0x6E3D, 74314 },
+ { 0x6E47, 74322 },
+ { 0x6E39, 74329 },
+ { 0x6E35, 74337 },
+ { 0x6E34, 74343 },
+ { 0x6E13, 74350 },
+ { 0x6E10, 74355 },
+ { 0x6E40, 74360 },
+ { 0x6E3C, 74367 },
+ { 0x6E38, 74375 },
+ { 0x6E44, 74382 },
+ { 0x6E18, 74390 },
+ { 0x6E42, 74398 },
+ { 0x6E3E, 74405 },
+ { 0x6E48, 74413 },
+ { 0x6E3A, 74420 },
+ { 0x6E36, 74428 },
+ { 0x6E16, 74434 },
+ { 0x6E14, 74440 },
+ { 0x6E19, 74445 },
+ { 0x6E15, 74451 },
+ { 0x6E12, 74457 },
+ { 0x6E11, 74464 },
+ { 0x221D, 74470 },
+ { 0x27A9, 74472 },
+ { 0x29F4, 74476 },
+ { 0x23E4, 74477 },
+ { 0x2004, 74478 },
+ { 0x2608, 74480 },
+ { 0x27BC, 74481 },
+ { 0x21B6, 74484 },
+ { 0x21BA, 74488 },
+ { 0x2940, 74492 },
+ { 0x27F2, 74496 },
+ { 0x2233, 74500 },
+ { 0x2A11, 74503 },
+ { 0x2246, 74505 },
+ { 0x2A70, 74511 },
+ { 0x2245, 74516 },
+ { 0x2252, 74519 },
+ { 0x2382, 74526 },
+ { 0x2140, 74529 },
+ { 0x213C, 74532 },
+ { 0x213D, 74535 },
+ { 0x2146, 74538 },
+ { 0x2147, 74542 },
+ { 0x2148, 74546 },
+ { 0x2149, 74550 },
+ { 0x2145, 74554 },
+ { 0x2102, 74558 },
+ { 0x210D, 74561 },
+ { 0x2115, 74564 },
+ { 0x2119, 74567 },
+ { 0x211A, 74570 },
+ { 0x211D, 74573 },
+ { 0x2124, 74576 },
+ { 0x213F, 74579 },
+ { 0x213E, 74582 },
+ { 0x29E8, 74585 },
+ { 0x29E9, 74591 },
+ { 0x20A0, 74597 },
+ { 0x2251, 74599 },
+ { 0x224E, 74602 },
+ { 0x2329, 74605 },
+ { 0x29FC, 74608 },
+ { 0x00AB, 74612 },
+ { 0x200E, 74617 },
+ { 0x202D, 74619 },
+ { 0x202A, 74621 },
+ { 0x2213, 74623 },
+ { 0x27BE, 74625 },
+ { 0x2474, 74628 },
+ { 0x2479, 74631 },
+ { 0x2475, 74634 },
+ { 0x2478, 74637 },
+ { 0x2477, 74640 },
+ { 0x247C, 74643 },
+ { 0x247B, 74646 },
+ { 0x247A, 74649 },
+ { 0x2476, 74652 },
+ { 0x249C, 74655 },
+ { 0x249D, 74660 },
+ { 0x249E, 74665 },
+ { 0x249F, 74670 },
+ { 0x24A0, 74675 },
+ { 0x24A1, 74680 },
+ { 0x24A2, 74685 },
+ { 0x24A3, 74690 },
+ { 0x24A4, 74695 },
+ { 0x24A5, 74700 },
+ { 0x24A6, 74705 },
+ { 0x24A7, 74710 },
+ { 0x24A8, 74715 },
+ { 0x24A9, 74720 },
+ { 0x24AA, 74725 },
+ { 0x24AB, 74730 },
+ { 0x24AC, 74735 },
+ { 0x24AD, 74740 },
+ { 0x24AE, 74745 },
+ { 0x24AF, 74750 },
+ { 0x24B0, 74755 },
+ { 0x24B1, 74760 },
+ { 0x24B2, 74765 },
+ { 0x24B3, 74770 },
+ { 0x24B4, 74775 },
+ { 0x24B5, 74780 },
+ { 0x3206, 74785 },
+ { 0x3214, 74788 },
+ { 0x3208, 74792 },
+ { 0x3216, 74795 },
+ { 0x321C, 74799 },
+ { 0x320D, 74803 },
+ { 0x321B, 74806 },
+ { 0x3207, 74810 },
+ { 0x3215, 74813 },
+ { 0x3204, 74817 },
+ { 0x3212, 74820 },
+ { 0x3201, 74824 },
+ { 0x320F, 74827 },
+ { 0x3205, 74831 },
+ { 0x3213, 74834 },
+ { 0x3203, 74838 },
+ { 0x3211, 74841 },
+ { 0x3200, 74845 },
+ { 0x320E, 74848 },
+ { 0x3202, 74852 },
+ { 0x3210, 74855 },
+ { 0x3209, 74859 },
+ { 0x3217, 74862 },
+ { 0x320A, 74866 },
+ { 0x3218, 74869 },
+ { 0x320C, 74873 },
+ { 0x321A, 74876 },
+ { 0x320B, 74880 },
+ { 0x3219, 74883 },
+ { 0x321E, 74887 },
+ { 0x321D, 74892 },
+ { 0x247D, 74896 },
+ { 0x247E, 74899 },
+ { 0x247F, 74902 },
+ { 0x2487, 74905 },
+ { 0x2482, 74908 },
+ { 0x2483, 74911 },
+ { 0x2485, 74914 },
+ { 0x2481, 74917 },
+ { 0x2486, 74920 },
+ { 0x2480, 74923 },
+ { 0x2484, 74926 },
+ { 0x3220, 74929 },
+ { 0x3225, 74932 },
+ { 0x3230, 74935 },
+ { 0x3229, 74938 },
+ { 0x3221, 74941 },
+ { 0x323A, 74944 },
+ { 0x322B, 74947 },
+ { 0x3224, 74950 },
+ { 0x3223, 74953 },
+ { 0x3232, 74956 },
+ { 0x322A, 74959 },
+ { 0x3234, 74962 },
+ { 0x3228, 74965 },
+ { 0x3241, 74968 },
+ { 0x3242, 74971 },
+ { 0x322D, 74974 },
+ { 0x322F, 74977 },
+ { 0x3227, 74980 },
+ { 0x3238, 74983 },
+ { 0x322E, 74986 },
+ { 0x3243, 74989 },
+ { 0x3226, 74992 },
+ { 0x3231, 74995 },
+ { 0x323B, 74998 },
+ { 0x3222, 75001 },
+ { 0x322C, 75004 },
+ { 0x3233, 75007 },
+ { 0x3235, 75010 },
+ { 0x323F, 75013 },
+ { 0x3240, 75016 },
+ { 0x323E, 75019 },
+ { 0x3236, 75022 },
+ { 0x3239, 75025 },
+ { 0x323C, 75028 },
+ { 0x323D, 75031 },
+ { 0x3237, 75034 },
+ { 0x27C2, 75037 },
+ { 0x2AE1, 75038 },
+ { 0x200F, 75041 },
+ { 0x202E, 75043 },
+ { 0x202B, 75045 },
+ { 0x29E7, 75047 },
+ { 0x2243, 75048 },
+ { 0x2749, 75051 },
+ { 0x2715, 75053 },
+ { 0x00D7, 75055 },
+ { 0x2A34, 75057 },
+ { 0x2A35, 75063 },
+ { 0x2A37, 75069 },
+ { 0x2A3B, 75074 },
+ { 0x2A30, 75078 },
+ { 0x2A31, 75083 },
+ { 0x232A, 75087 },
+ { 0x29FD, 75090 },
+ { 0x00BB, 75094 },
+ { 0x26BC, 75099 },
+ { 0x27B6, 75100 },
+ { 0x27B4, 75104 },
+ { 0x27B5, 75108 },
+ { 0x27BA, 75111 },
+ { 0x273B, 75114 },
+ { 0x279D, 75116 },
+ { 0x27B3, 75119 },
+ { 0x30A0, 75122 },
+ { 0x309B, 75125 },
+ { 0x30FC, 75129 },
+ { 0x309C, 75133 },
+ { 0x2394, 75137 },
+ { 0x267D, 75139 },
+ { 0x238F, 75142 },
+ { 0x2390, 75145 },
+ { 0x2392, 75148 },
+ { 0x2391, 75150 },
+};
+static const struct { uint16_t code; uint32_t name:24; }
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+__attribute__((__packed__))
+#endif
+unicode_code_to_name[18242] = {
+ { 0x0020, 22740 },
+ { 0x0021, 68656 },
+ { 0x0022, 65766 },
+ { 0x0023, 35593 },
+ { 0x0024, 31225 },
+ { 0x0025, 42973 },
+ { 0x0026, 56108 },
+ { 0x0027, 66826 },
+ { 0x0028, 9464 },
+ { 0x0029, 21991 },
+ { 0x002A, 45081 },
+ { 0x002B, 9633 },
+ { 0x002C, 10461 },
+ { 0x002D, 69568 },
+ { 0x002E, 9112 },
+ { 0x002F, 43548 },
+ { 0x0030, 10518 },
+ { 0x0031, 10482 },
+ { 0x0032, 10494 },
+ { 0x0033, 10532 },
+ { 0x0034, 10506 },
+ { 0x0035, 10500 },
+ { 0x0036, 10488 },
+ { 0x0037, 10526 },
+ { 0x0038, 10520 },
+ { 0x0039, 10512 },
+ { 0x003A, 10455 },
+ { 0x003B, 65813 },
+ { 0x003C, 64726 },
+ { 0x003D, 31706 },
+ { 0x003E, 69497 },
+ { 0x003F, 55446 },
+ { 0x0040, 66837 },
+ { 0x0041, 18231 },
+ { 0x0042, 18454 },
+ { 0x0043, 18497 },
+ { 0x0044, 18552 },
+ { 0x0045, 18632 },
+ { 0x0046, 18817 },
+ { 0x0047, 18834 },
+ { 0x0048, 18893 },
+ { 0x0049, 18954 },
+ { 0x004A, 19068 },
+ { 0x004B, 19084 },
+ { 0x004C, 19154 },
+ { 0x004D, 19254 },
+ { 0x004E, 19284 },
+ { 0x004F, 19369 },
+ { 0x0050, 19659 },
+ { 0x0051, 19709 },
+ { 0x0052, 19728 },
+ { 0x0053, 19811 },
+ { 0x0054, 19888 },
+ { 0x0055, 19965 },
+ { 0x0056, 20187 },
+ { 0x0057, 20217 },
+ { 0x0058, 20265 },
+ { 0x0059, 20282 },
+ { 0x005A, 20361 },
+ { 0x005B, 9385 },
+ { 0x005C, 42994 },
+ { 0x005D, 21912 },
+ { 0x005E, 66835 },
+ { 0x005F, 6031 },
+ { 0x0060, 10638 },
+ { 0x0061, 14473 },
+ { 0x0062, 14711 },
+ { 0x0063, 14768 },
+ { 0x0064, 14829 },
+ { 0x0065, 14925 },
+ { 0x0066, 15123 },
+ { 0x0067, 15154 },
+ { 0x0068, 15220 },
+ { 0x0069, 15294 },
+ { 0x006A, 15408 },
+ { 0x006B, 15436 },
+ { 0x006C, 15513 },
+ { 0x006D, 15631 },
+ { 0x006E, 15675 },
+ { 0x006F, 15786 },
+ { 0x0070, 16077 },
+ { 0x0071, 16141 },
+ { 0x0072, 16173 },
+ { 0x0073, 16292 },
+ { 0x0074, 16396 },
+ { 0x0075, 16499 },
+ { 0x0076, 16728 },
+ { 0x0077, 16778 },
+ { 0x0078, 16833 },
+ { 0x0079, 16857 },
+ { 0x007A, 16943 },
+ { 0x007B, 9231 },
+ { 0x007C, 56066 },
+ { 0x007D, 21824 },
+ { 0x007E, 23008 },
+ { 0x00A0, 54927 },
+ { 0x00A1, 53357 },
+ { 0x00A2, 8729 },
+ { 0x00A3, 21740 },
+ { 0x00A4, 48521 },
+ { 0x00A5, 8712 },
+ { 0x00A6, 30305 },
+ { 0x00A7, 43022 },
+ { 0x00A8, 63244 },
+ { 0x00A9, 58349 },
+ { 0x00AA, 51775 },
+ { 0x00AB, 74612 },
+ { 0x00AC, 6723 },
+ { 0x00AD, 9710 },
+ { 0x00AE, 67979 },
+ { 0x00AF, 35513 },
+ { 0x00B0, 31179 },
+ { 0x00B1, 67969 },
+ { 0x00B2, 69284 },
+ { 0x00B3, 69319 },
+ { 0x00B4, 10104 },
+ { 0x00B5, 21176 },
+ { 0x00B6, 42975 },
+ { 0x00B7, 35570 },
+ { 0x00B8, 38870 },
+ { 0x00B9, 69280 },
+ { 0x00BA, 65112 },
+ { 0x00BB, 75094 },
+ { 0x00BC, 37732 },
+ { 0x00BD, 37712 },
+ { 0x00BE, 37768 },
+ { 0x00BF, 53352 },
+ { 0x00C0, 18348 },
+ { 0x00C1, 18288 },
+ { 0x00C2, 18406 },
+ { 0x00C3, 18354 },
+ { 0x00C4, 18392 },
+ { 0x00C5, 18265 },
+ { 0x00C6, 20426 },
+ { 0x00C7, 18532 },
+ { 0x00C8, 18675 },
+ { 0x00C9, 18657 },
+ { 0x00CA, 18762 },
+ { 0x00CB, 18756 },
+ { 0x00CC, 18997 },
+ { 0x00CD, 18979 },
+ { 0x00CE, 19062 },
+ { 0x00CF, 19048 },
+ { 0x00D0, 20523 },
+ { 0x00D1, 19350 },
+ { 0x00D2, 19483 },
+ { 0x00D3, 19465 },
+ { 0x00D4, 19611 },
+ { 0x00D5, 19489 },
+ { 0x00D6, 19597 },
+ { 0x00D7, 75055 },
+ { 0x00D8, 19576 },
+ { 0x00D9, 20061 },
+ { 0x00DA, 20043 },
+ { 0x00DB, 20174 },
+ { 0x00DC, 20129 },
+ { 0x00DD, 20319 },
+ { 0x00DE, 20626 },
+ { 0x00DF, 17465 },
+ { 0x00E0, 14590 },
+ { 0x00E1, 14530 },
+ { 0x00E2, 14663 },
+ { 0x00E3, 14604 },
+ { 0x00E4, 14642 },
+ { 0x00E5, 14507 },
+ { 0x00E6, 17042 },
+ { 0x00E7, 14809 },
+ { 0x00E8, 14968 },
+ { 0x00E9, 14950 },
+ { 0x00EA, 15068 },
+ { 0x00EB, 15055 },
+ { 0x00EC, 15330 },
+ { 0x00ED, 15312 },
+ { 0x00EE, 15402 },
+ { 0x00EF, 15381 },
+ { 0x00F0, 17225 },
+ { 0x00F1, 15739 },
+ { 0x00F2, 15908 },
+ { 0x00F3, 15890 },
+ { 0x00F4, 16029 },
+ { 0x00F5, 15914 },
+ { 0x00F6, 16015 },
+ { 0x00F7, 50308 },
+ { 0x00F8, 15994 },
+ { 0x00F9, 16595 },
+ { 0x00FA, 16577 },
+ { 0x00FB, 16715 },
+ { 0x00FC, 16663 },
+ { 0x00FD, 16901 },
+ { 0x00FE, 17476 },
+ { 0x00FF, 16931 },
+ { 0x0100, 18367 },
+ { 0x0101, 14617 },
+ { 0x0102, 18294 },
+ { 0x0103, 14536 },
+ { 0x0104, 18373 },
+ { 0x0105, 14623 },
+ { 0x0106, 18514 },
+ { 0x0107, 14791 },
+ { 0x0108, 18546 },
+ { 0x0109, 14823 },
+ { 0x010A, 18501 },
+ { 0x010B, 14772 },
+ { 0x010C, 18520 },
+ { 0x010D, 14797 },
+ { 0x010E, 18583 },
+ { 0x010F, 14880 },
+ { 0x0110, 18607 },
+ { 0x0111, 14893 },
+ { 0x0112, 18701 },
+ { 0x0113, 15000 },
+ { 0x0114, 18663 },
+ { 0x0115, 14956 },
+ { 0x0116, 18636 },
+ { 0x0117, 14929 },
+ { 0x0118, 18723 },
+ { 0x0119, 15022 },
+ { 0x011A, 18669 },
+ { 0x011B, 14962 },
+ { 0x011C, 18887 },
+ { 0x011D, 15214 },
+ { 0x011E, 18857 },
+ { 0x011F, 15177 },
+ { 0x0120, 18838 },
+ { 0x0121, 15158 },
+ { 0x0122, 18881 },
+ { 0x0123, 15201 },
+ { 0x0124, 18948 },
+ { 0x0125, 15288 },
+ { 0x0126, 18924 },
+ { 0x0127, 15264 },
+ { 0x0128, 19003 },
+ { 0x0129, 15336 },
+ { 0x012A, 19023 },
+ { 0x012B, 15356 },
+ { 0x012C, 18985 },
+ { 0x012D, 15318 },
+ { 0x012E, 19029 },
+ { 0x012F, 15362 },
+ { 0x0130, 18958 },
+ { 0x0131, 17682 },
+ { 0x0132, 20774 },
+ { 0x0133, 17909 },
+ { 0x0134, 19078 },
+ { 0x0135, 15424 },
+ { 0x0136, 19135 },
+ { 0x0137, 15487 },
+ { 0x0138, 17263 },
+ { 0x0139, 19194 },
+ { 0x013A, 15565 },
+ { 0x013B, 19241 },
+ { 0x013C, 15604 },
+ { 0x013D, 19200 },
+ { 0x013E, 15571 },
+ { 0x013F, 19221 },
+ { 0x0140, 15584 },
+ { 0x0141, 19235 },
+ { 0x0142, 15598 },
+ { 0x0143, 19324 },
+ { 0x0144, 15721 },
+ { 0x0145, 19356 },
+ { 0x0146, 15752 },
+ { 0x0147, 19330 },
+ { 0x0148, 15727 },
+ { 0x0149, 15779 },
+ { 0x014A, 20515 },
+ { 0x014B, 17197 },
+ { 0x014C, 19533 },
+ { 0x014D, 15958 },
+ { 0x014E, 19471 },
+ { 0x014F, 15896 },
+ { 0x0150, 19519 },
+ { 0x0151, 15944 },
+ { 0x0152, 20778 },
+ { 0x0153, 17913 },
+ { 0x0154, 19768 },
+ { 0x0155, 16220 },
+ { 0x0156, 19793 },
+ { 0x0157, 16252 },
+ { 0x0158, 19774 },
+ { 0x0159, 16226 },
+ { 0x015A, 19839 },
+ { 0x015B, 16326 },
+ { 0x015C, 19882 },
+ { 0x015D, 16390 },
+ { 0x015E, 19876 },
+ { 0x015F, 16377 },
+ { 0x0160, 19854 },
+ { 0x0161, 16341 },
+ { 0x0162, 19938 },
+ { 0x0163, 16459 },
+ { 0x0164, 19919 },
+ { 0x0165, 16433 },
+ { 0x0166, 19932 },
+ { 0x0167, 16453 },
+ { 0x0168, 20067 },
+ { 0x0169, 16601 },
+ { 0x016A, 20102 },
+ { 0x016B, 16636 },
+ { 0x016C, 20049 },
+ { 0x016D, 16583 },
+ { 0x016E, 20036 },
+ { 0x016F, 16570 },
+ { 0x0170, 20088 },
+ { 0x0171, 16622 },
+ { 0x0172, 20116 },
+ { 0x0173, 16650 },
+ { 0x0174, 20259 },
+ { 0x0175, 16827 },
+ { 0x0176, 20355 },
+ { 0x0177, 16937 },
+ { 0x0178, 20349 },
+ { 0x0179, 20392 },
+ { 0x017A, 16980 },
+ { 0x017B, 20365 },
+ { 0x017C, 16947 },
+ { 0x017D, 20398 },
+ { 0x017E, 16986 },
+ { 0x017F, 17341 },
+ { 0x0180, 14749 },
+ { 0x0181, 18472 },
+ { 0x0182, 18491 },
+ { 0x0183, 14755 },
+ { 0x0184, 20570 },
+ { 0x0185, 17406 },
+ { 0x0186, 20565 },
+ { 0x0187, 18508 },
+ { 0x0188, 14785 },
+ { 0x0189, 20675 },
+ { 0x018A, 18570 },
+ { 0x018B, 18613 },
+ { 0x018C, 14899 },
+ { 0x018D, 17671 },
+ { 0x018E, 20726 },
+ { 0x018F, 20609 },
+ { 0x0190, 20560 },
+ { 0x0191, 18828 },
+ { 0x0192, 15134 },
+ { 0x0193, 18845 },
+ { 0x0194, 20601 },
+ { 0x0195, 17112 },
+ { 0x0196, 20556 },
+ { 0x0197, 19035 },
+ { 0x0198, 19095 },
+ { 0x0199, 15447 },
+ { 0x019A, 15517 },
+ { 0x019B, 17528 },
+ { 0x019C, 20659 },
+ { 0x019D, 19302 },
+ { 0x019E, 15713 },
+ { 0x019F, 19555 },
+ { 0x01A0, 19403 },
+ { 0x01A1, 15828 },
+ { 0x01A2, 20491 },
+ { 0x01A3, 17138 },
+ { 0x01A4, 19670 },
+ { 0x01A5, 16088 },
+ { 0x01A6, 17935 },
+ { 0x01A7, 20575 },
+ { 0x01A8, 17411 },
+ { 0x01A9, 20519 },
+ { 0x01AA, 18206 },
+ { 0x01AB, 16465 },
+ { 0x01AC, 19906 },
+ { 0x01AD, 16420 },
+ { 0x01AE, 19951 },
+ { 0x01AF, 19988 },
+ { 0x01B0, 16522 },
+ { 0x01B1, 20715 },
+ { 0x01B2, 20198 },
+ { 0x01B3, 20300 },
+ { 0x01B4, 16875 },
+ { 0x01B5, 20404 },
+ { 0x01B6, 17006 },
+ { 0x01B7, 20527 },
+ { 0x01B8, 20537 },
+ { 0x01B9, 17258 },
+ { 0x01BA, 17239 },
+ { 0x01BB, 17941 },
+ { 0x01BC, 20580 },
+ { 0x01BD, 17416 },
+ { 0x01BE, 18199 },
+ { 0x01BF, 17946 },
+ { 0x01C0, 18155 },
+ { 0x01C1, 18174 },
+ { 0x01C2, 18178 },
+ { 0x01C3, 18218 },
+ { 0x01C4, 20469 },
+ { 0x01C5, 18597 },
+ { 0x01C6, 17090 },
+ { 0x01C7, 20483 },
+ { 0x01C8, 19206 },
+ { 0x01C9, 17120 },
+ { 0x01CA, 20487 },
+ { 0x01CB, 19342 },
+ { 0x01CC, 17134 },
+ { 0x01CD, 18342 },
+ { 0x01CE, 14584 },
+ { 0x01CF, 18991 },
+ { 0x01D0, 15324 },
+ { 0x01D1, 19477 },
+ { 0x01D2, 15902 },
+ { 0x01D3, 20055 },
+ { 0x01D4, 16589 },
+ { 0x01D5, 20159 },
+ { 0x01D6, 16693 },
+ { 0x01D7, 20135 },
+ { 0x01D8, 16669 },
+ { 0x01D9, 20143 },
+ { 0x01DA, 16677 },
+ { 0x01DB, 20151 },
+ { 0x01DC, 16685 },
+ { 0x01DD, 17544 },
+ { 0x01DE, 18398 },
+ { 0x01DF, 14648 },
+ { 0x01E0, 18242 },
+ { 0x01E1, 14484 },
+ { 0x01E2, 20436 },
+ { 0x01E3, 17052 },
+ { 0x01E4, 18875 },
+ { 0x01E5, 15195 },
+ { 0x01E6, 18863 },
+ { 0x01E7, 15183 },
+ { 0x01E8, 19114 },
+ { 0x01E9, 15466 },
+ { 0x01EA, 19562 },
+ { 0x01EB, 15980 },
+ { 0x01EC, 19568 },
+ { 0x01ED, 15986 },
+ { 0x01EE, 20531 },
+ { 0x01EF, 17245 },
+ { 0x01F0, 15412 },
+ { 0x01F1, 20465 },
+ { 0x01F2, 18589 },
+ { 0x01F3, 17086 },
+ { 0x01F4, 18851 },
+ { 0x01F5, 15171 },
+ { 0x01F6, 20605 },
+ { 0x01F7, 20589 },
+ { 0x01F8, 19336 },
+ { 0x01F9, 15733 },
+ { 0x01FA, 18272 },
+ { 0x01FB, 14514 },
+ { 0x01FC, 20430 },
+ { 0x01FD, 17046 },
+ { 0x01FE, 19582 },
+ { 0x01FF, 16000 },
+ { 0x0200, 18360 },
+ { 0x0201, 14610 },
+ { 0x0202, 18385 },
+ { 0x0203, 14635 },
+ { 0x0204, 18694 },
+ { 0x0205, 14993 },
+ { 0x0206, 18749 },
+ { 0x0207, 15048 },
+ { 0x0208, 19016 },
+ { 0x0209, 15349 },
+ { 0x020A, 19041 },
+ { 0x020B, 15374 },
+ { 0x020C, 19526 },
+ { 0x020D, 15951 },
+ { 0x020E, 19590 },
+ { 0x020F, 16008 },
+ { 0x0210, 19780 },
+ { 0x0211, 16232 },
+ { 0x0212, 19799 },
+ { 0x0213, 16280 },
+ { 0x0214, 20095 },
+ { 0x0215, 16629 },
+ { 0x0216, 20122 },
+ { 0x0217, 16656 },
+ { 0x0218, 19869 },
+ { 0x0219, 16356 },
+ { 0x021A, 19925 },
+ { 0x021B, 16439 },
+ { 0x021C, 20593 },
+ { 0x021D, 17425 },
+ { 0x021E, 18918 },
+ { 0x021F, 15258 },
+ { 0x0220, 19316 },
+ { 0x0221, 14847 },
+ { 0x0222, 20499 },
+ { 0x0223, 17146 },
+ { 0x0224, 20379 },
+ { 0x0225, 16967 },
+ { 0x0226, 18235 },
+ { 0x0227, 14477 },
+ { 0x0228, 18735 },
+ { 0x0229, 15034 },
+ { 0x022A, 19603 },
+ { 0x022B, 16021 },
+ { 0x022C, 19503 },
+ { 0x022D, 15928 },
+ { 0x022E, 19373 },
+ { 0x022F, 15790 },
+ { 0x0230, 19380 },
+ { 0x0231, 15797 },
+ { 0x0232, 20337 },
+ { 0x0233, 16919 },
+ { 0x0234, 15545 },
+ { 0x0235, 15693 },
+ { 0x0236, 16414 },
+ { 0x0237, 17687 },
+ { 0x0238, 17081 },
+ { 0x0239, 17150 },
+ { 0x023A, 18379 },
+ { 0x023B, 18526 },
+ { 0x023C, 14803 },
+ { 0x023D, 19158 },
+ { 0x023E, 19944 },
+ { 0x023F, 16363 },
+ { 0x0240, 16992 },
+ { 0x0241, 20680 },
+ { 0x0242, 17708 },
+ { 0x0243, 18485 },
+ { 0x0244, 19969 },
+ { 0x0245, 20664 },
+ { 0x0246, 18729 },
+ { 0x0247, 15028 },
+ { 0x0248, 19072 },
+ { 0x0249, 15418 },
+ { 0x024A, 20618 },
+ { 0x024B, 16151 },
+ { 0x024C, 19787 },
+ { 0x024D, 16246 },
+ { 0x024E, 20343 },
+ { 0x024F, 16925 },
+ { 0x0250, 17539 },
+ { 0x0251, 17429 },
+ { 0x0252, 17666 },
+ { 0x0253, 14729 },
+ { 0x0254, 17383 },
+ { 0x0255, 14779 },
+ { 0x0256, 14874 },
+ { 0x0257, 14853 },
+ { 0x0258, 17765 },
+ { 0x0259, 17448 },
+ { 0x025A, 17452 },
+ { 0x025B, 17370 },
+ { 0x025C, 17777 },
+ { 0x025D, 17783 },
+ { 0x025E, 17521 },
+ { 0x025F, 17692 },
+ { 0x0260, 15165 },
+ { 0x0261, 17534 },
+ { 0x0262, 17979 },
+ { 0x0263, 17444 },
+ { 0x0264, 17396 },
+ { 0x0265, 17554 },
+ { 0x0266, 15238 },
+ { 0x0267, 17321 },
+ { 0x0268, 15368 },
+ { 0x0269, 17327 },
+ { 0x026A, 17996 },
+ { 0x026B, 15591 },
+ { 0x026C, 15539 },
+ { 0x026D, 15617 },
+ { 0x026E, 17337 },
+ { 0x026F, 17590 },
+ { 0x0270, 17595 },
+ { 0x0271, 15649 },
+ { 0x0272, 15699 },
+ { 0x0273, 15765 },
+ { 0x0274, 18028 },
+ { 0x0275, 17494 },
+ { 0x0276, 18088 },
+ { 0x0277, 17516 },
+ { 0x0278, 17279 },
+ { 0x0279, 17603 },
+ { 0x027A, 17615 },
+ { 0x027B, 17608 },
+ { 0x027C, 16207 },
+ { 0x027D, 16214 },
+ { 0x027E, 16265 },
+ { 0x027F, 17770 },
+ { 0x0280, 18043 },
+ { 0x0281, 18137 },
+ { 0x0282, 16320 },
+ { 0x0283, 17201 },
+ { 0x0284, 17699 },
+ { 0x0285, 17470 },
+ { 0x0286, 17205 },
+ { 0x0287, 17630 },
+ { 0x0288, 16485 },
+ { 0x0289, 16503 },
+ { 0x028A, 17743 },
+ { 0x028B, 16745 },
+ { 0x028C, 17635 },
+ { 0x028D, 17640 },
+ { 0x028E, 17645 },
+ { 0x028F, 18073 },
+ { 0x0290, 17025 },
+ { 0x0291, 16961 },
+ { 0x0292, 17229 },
+ { 0x0293, 17233 },
+ { 0x0294, 18164 },
+ { 0x0295, 18226 },
+ { 0x0296, 18194 },
+ { 0x0297, 18222 },
+ { 0x0298, 18186 },
+ { 0x0299, 17954 },
+ { 0x029A, 17510 },
+ { 0x029B, 17984 },
+ { 0x029C, 17991 },
+ { 0x029D, 15430 },
+ { 0x029E, 17580 },
+ { 0x029F, 18011 },
+ { 0x02A0, 16145 },
+ { 0x02A1, 18168 },
+ { 0x02A2, 18211 },
+ { 0x02A3, 17096 },
+ { 0x02A4, 17302 },
+ { 0x02A5, 17101 },
+ { 0x02A6, 17168 },
+ { 0x02A7, 17401 },
+ { 0x02A8, 17155 },
+ { 0x02A9, 17307 },
+ { 0x02AA, 17124 },
+ { 0x02AB, 17129 },
+ { 0x02AC, 18190 },
+ { 0x02AD, 18182 },
+ { 0x02AE, 17559 },
+ { 0x02AF, 17566 },
+ { 0x02B0, 54170 },
+ { 0x02B1, 54174 },
+ { 0x02B2, 54186 },
+ { 0x02B3, 54250 },
+ { 0x02B4, 54449 },
+ { 0x02B5, 54454 },
+ { 0x02B6, 54509 },
+ { 0x02B7, 54294 },
+ { 0x02B8, 54302 },
+ { 0x02B9, 54116 },
+ { 0x02BA, 54543 },
+ { 0x02BB, 54612 },
+ { 0x02BC, 54827 },
+ { 0x02BD, 54790 },
+ { 0x02BE, 54119 },
+ { 0x02BF, 54058 },
+ { 0x02C0, 54775 },
+ { 0x02C1, 54794 },
+ { 0x02C2, 54063 },
+ { 0x02C3, 54124 },
+ { 0x02C4, 53873 },
+ { 0x02C5, 54025 },
+ { 0x02C6, 54830 },
+ { 0x02C7, 10445 },
+ { 0x02C8, 54799 },
+ { 0x02C9, 54551 },
+ { 0x02CA, 54081 },
+ { 0x02CB, 54102 },
+ { 0x02CC, 53975 },
+ { 0x02CD, 53965 },
+ { 0x02CE, 53938 },
+ { 0x02CF, 53933 },
+ { 0x02D0, 54858 },
+ { 0x02D1, 54029 },
+ { 0x02D2, 54721 },
+ { 0x02D3, 54715 },
+ { 0x02D4, 53869 },
+ { 0x02D5, 54021 },
+ { 0x02D6, 54071 },
+ { 0x02D7, 54112 },
+ { 0x02D8, 10378 },
+ { 0x02D9, 5782 },
+ { 0x02DA, 9699 },
+ { 0x02DB, 35640 },
+ { 0x02DC, 22588 },
+ { 0x02DD, 31564 },
+ { 0x02DE, 54596 },
+ { 0x02DF, 54098 },
+ { 0x02E0, 54383 },
+ { 0x02E1, 54200 },
+ { 0x02E2, 54254 },
+ { 0x02E3, 54298 },
+ { 0x02E4, 54532 },
+ { 0x02E5, 54834 },
+ { 0x02E6, 54034 },
+ { 0x02E7, 53991 },
+ { 0x02E8, 53928 },
+ { 0x02E9, 54803 },
+ { 0x02EA, 54015 },
+ { 0x02EB, 54075 },
+ { 0x02EC, 54779 },
+ { 0x02ED, 54862 },
+ { 0x02EE, 54547 },
+ { 0x02EF, 53909 },
+ { 0x02F0, 53904 },
+ { 0x02F1, 53919 },
+ { 0x02F2, 53943 },
+ { 0x02F3, 53924 },
+ { 0x02F4, 54554 },
+ { 0x02F5, 54565 },
+ { 0x02F6, 54559 },
+ { 0x02F7, 53948 },
+ { 0x02F8, 54581 },
+ { 0x02F9, 54090 },
+ { 0x02FA, 53899 },
+ { 0x02FB, 54085 },
+ { 0x02FC, 53894 },
+ { 0x02FD, 54128 },
+ { 0x02FE, 54067 },
+ { 0x02FF, 53914 },
+ { 0x0300, 57554 },
+ { 0x0301, 57523 },
+ { 0x0302, 58283 },
+ { 0x0303, 57841 },
+ { 0x0304, 57946 },
+ { 0x0305, 58215 },
+ { 0x0306, 57530 },
+ { 0x0307, 57402 },
+ { 0x0308, 58240 },
+ { 0x0309, 57427 },
+ { 0x030A, 57506 },
+ { 0x030B, 57876 },
+ { 0x030C, 57535 },
+ { 0x030D, 58221 },
+ { 0x030E, 57918 },
+ { 0x030F, 57887 },
+ { 0x0310, 58305 },
+ { 0x0311, 58191 },
+ { 0x0312, 57970 },
+ { 0x0313, 57540 },
+ { 0x0314, 58217 },
+ { 0x0315, 57543 },
+ { 0x0316, 57557 },
+ { 0x0317, 57526 },
+ { 0x0318, 57442 },
+ { 0x0319, 57783 },
+ { 0x031A, 57446 },
+ { 0x031B, 57430 },
+ { 0x031C, 57437 },
+ { 0x031D, 57392 },
+ { 0x031E, 57419 },
+ { 0x031F, 57502 },
+ { 0x0320, 57769 },
+ { 0x0321, 58307 },
+ { 0x0322, 58279 },
+ { 0x0323, 57409 },
+ { 0x0324, 58242 },
+ { 0x0325, 57509 },
+ { 0x0326, 57547 },
+ { 0x0327, 57983 },
+ { 0x0328, 57959 },
+ { 0x0329, 58225 },
+ { 0x032A, 57857 },
+ { 0x032B, 58202 },
+ { 0x032C, 57537 },
+ { 0x032D, 58286 },
+ { 0x032E, 57532 },
+ { 0x032F, 58194 },
+ { 0x0330, 57843 },
+ { 0x0331, 57952 },
+ { 0x0332, 57412 },
+ { 0x0333, 57868 },
+ { 0x0334, 57846 },
+ { 0x0335, 57821 },
+ { 0x0336, 57489 },
+ { 0x0337, 57825 },
+ { 0x0338, 57493 },
+ { 0x0339, 57778 },
+ { 0x033A, 58198 },
+ { 0x033B, 57964 },
+ { 0x033C, 57991 },
+ { 0x033D, 57383 },
+ { 0x033E, 58229 },
+ { 0x033F, 57915 },
+ { 0x0340, 57550 },
+ { 0x0341, 57519 },
+ { 0x0342, 57580 },
+ { 0x0343, 57561 },
+ { 0x0344, 57576 },
+ { 0x0345, 57583 },
+ { 0x0346, 57854 },
+ { 0x0347, 57942 },
+ { 0x0348, 57923 },
+ { 0x0349, 57450 },
+ { 0x034A, 57415 },
+ { 0x034B, 58293 },
+ { 0x034C, 57849 },
+ { 0x034D, 57467 },
+ { 0x034E, 57994 },
+ { 0x034F, 58188 },
+ { 0x0350, 57813 },
+ { 0x0351, 57432 },
+ { 0x0352, 57985 },
+ { 0x0353, 57386 },
+ { 0x0354, 57480 },
+ { 0x0355, 57817 },
+ { 0x0356, 57799 },
+ { 0x0357, 57773 },
+ { 0x0358, 57405 },
+ { 0x0359, 58001 },
+ { 0x035A, 57872 },
+ { 0x035B, 57974 },
+ { 0x035C, 57883 },
+ { 0x035D, 57880 },
+ { 0x035E, 57904 },
+ { 0x035F, 57907 },
+ { 0x0360, 57891 },
+ { 0x0361, 57911 },
+ { 0x0362, 57937 },
+ { 0x0363, 57586 },
+ { 0x0364, 57607 },
+ { 0x0365, 57622 },
+ { 0x0366, 57647 },
+ { 0x0367, 57679 },
+ { 0x0368, 57591 },
+ { 0x0369, 57602 },
+ { 0x036A, 57617 },
+ { 0x036B, 57637 },
+ { 0x036C, 57652 },
+ { 0x036D, 57674 },
+ { 0x036E, 57684 },
+ { 0x036F, 57689 },
+ { 0x0370, 12320 },
+ { 0x0371, 10998 },
+ { 0x0372, 12792 },
+ { 0x0373, 11590 },
+ { 0x0374, 13034 },
+ { 0x0375, 10720 },
+ { 0x0376, 12999 },
+ { 0x0377, 11869 },
+ { 0x037A, 13522 },
+ { 0x037B, 11881 },
+ { 0x037C, 10738 },
+ { 0x037D, 11874 },
+ { 0x037E, 13059 },
+ { 0x0384, 11898 },
+ { 0x0385, 13083 },
+ { 0x0386, 12574 },
+ { 0x0387, 10643 },
+ { 0x0388, 12851 },
+ { 0x0389, 12268 },
+ { 0x038A, 12394 },
+ { 0x038C, 12917 },
+ { 0x038E, 12969 },
+ { 0x038F, 12766 },
+ { 0x0390, 11110 },
+ { 0x0391, 12428 },
+ { 0x0392, 12316 },
+ { 0x0393, 12608 },
+ { 0x0394, 12604 },
+ { 0x0395, 12797 },
+ { 0x0396, 12424 },
+ { 0x0397, 12122 },
+ { 0x0398, 12788 },
+ { 0x0399, 12324 },
+ { 0x039A, 12612 },
+ { 0x039B, 12616 },
+ { 0x039C, 12102 },
+ { 0x039D, 12106 },
+ { 0x039E, 12114 },
+ { 0x039F, 12863 },
+ { 0x03A0, 12110 },
+ { 0x03A1, 12294 },
+ { 0x03A3, 12784 },
+ { 0x03A4, 12312 },
+ { 0x03A5, 12929 },
+ { 0x03A6, 12286 },
+ { 0x03A7, 12118 },
+ { 0x03A8, 12290 },
+ { 0x03A9, 12620 },
+ { 0x03AA, 12418 },
+ { 0x03AB, 12993 },
+ { 0x03AC, 11298 },
+ { 0x03AD, 11653 },
+ { 0x03AE, 10918 },
+ { 0x03AF, 11072 },
+ { 0x03B0, 11839 },
+ { 0x03B1, 11144 },
+ { 0x03B2, 10994 },
+ { 0x03B3, 11359 },
+ { 0x03B4, 11350 },
+ { 0x03B5, 11599 },
+ { 0x03B6, 11140 },
+ { 0x03B7, 10764 },
+ { 0x03B8, 11577 },
+ { 0x03B9, 11002 },
+ { 0x03BA, 11363 },
+ { 0x03BB, 11371 },
+ { 0x03BC, 10744 },
+ { 0x03BD, 10748 },
+ { 0x03BE, 10756 },
+ { 0x03BF, 11665 },
+ { 0x03C0, 10752 },
+ { 0x03C1, 10966 },
+ { 0x03C2, 11354 },
+ { 0x03C3, 11573 },
+ { 0x03C4, 10990 },
+ { 0x03C5, 11731 },
+ { 0x03C6, 10958 },
+ { 0x03C7, 10760 },
+ { 0x03C8, 10962 },
+ { 0x03C9, 11375 },
+ { 0x03CA, 11096 },
+ { 0x03CB, 11825 },
+ { 0x03CC, 11719 },
+ { 0x03CD, 11801 },
+ { 0x03CE, 11529 },
+ { 0x03CF, 12088 },
+ { 0x03D0, 10678 },
+ { 0x03D1, 11887 },
+ { 0x03D2, 13037 },
+ { 0x03D3, 13042 },
+ { 0x03D4, 13049 },
+ { 0x03D5, 10659 },
+ { 0x03D6, 10640 },
+ { 0x03D7, 10646 },
+ { 0x03D8, 12064 },
+ { 0x03D9, 11585 },
+ { 0x03DA, 12061 },
+ { 0x03DB, 11581 },
+ { 0x03DC, 12068 },
+ { 0x03DD, 11595 },
+ { 0x03DE, 12030 },
+ { 0x03DF, 11367 },
+ { 0x03E0, 12033 },
+ { 0x03E1, 11569 },
+ { 0x03E2, 31064 },
+ { 0x03E3, 30771 },
+ { 0x03E4, 30926 },
+ { 0x03E5, 30633 },
+ { 0x03E6, 31060 },
+ { 0x03E7, 30767 },
+ { 0x03E8, 31052 },
+ { 0x03E9, 30759 },
+ { 0x03EA, 31104 },
+ { 0x03EB, 30811 },
+ { 0x03EC, 31100 },
+ { 0x03ED, 30807 },
+ { 0x03EE, 30918 },
+ { 0x03EF, 30625 },
+ { 0x03F0, 10714 },
+ { 0x03F1, 10667 },
+ { 0x03F2, 12071 },
+ { 0x03F3, 12027 },
+ { 0x03F4, 12092 },
+ { 0x03F5, 12075 },
+ { 0x03F6, 13062 },
+ { 0x03F7, 12308 },
+ { 0x03F8, 10986 },
+ { 0x03F9, 13004 },
+ { 0x03FA, 12304 },
+ { 0x03FB, 10982 },
+ { 0x03FC, 10662 },
+ { 0x03FD, 13016 },
+ { 0x03FE, 12096 },
+ { 0x03FF, 13009 },
+ { 0x0400, 49628 },
+ { 0x0401, 49634 },
+ { 0x0402, 49779 },
+ { 0x0403, 49828 },
+ { 0x0404, 50271 },
+ { 0x0405, 49787 },
+ { 0x0406, 50281 },
+ { 0x0407, 49723 },
+ { 0x0408, 49638 },
+ { 0x0409, 49848 },
+ { 0x040A, 49852 },
+ { 0x040B, 50007 },
+ { 0x040C, 49836 },
+ { 0x040D, 49451 },
+ { 0x040E, 50103 },
+ { 0x040F, 49910 },
+ { 0x0410, 49421 },
+ { 0x0411, 49502 },
+ { 0x0412, 49711 },
+ { 0x0413, 49791 },
+ { 0x0414, 49506 },
+ { 0x0415, 49618 },
+ { 0x0416, 49884 },
+ { 0x0417, 49735 },
+ { 0x0418, 49447 },
+ { 0x0419, 50091 },
+ { 0x041A, 49642 },
+ { 0x041B, 49514 },
+ { 0x041C, 49537 },
+ { 0x041D, 49547 },
+ { 0x041E, 49469 },
+ { 0x041F, 49675 },
+ { 0x0420, 49576 },
+ { 0x0421, 49586 },
+ { 0x0422, 49690 },
+ { 0x0423, 49479 },
+ { 0x0424, 49510 },
+ { 0x0425, 49596 },
+ { 0x0426, 49868 },
+ { 0x0427, 49756 },
+ { 0x0428, 49864 },
+ { 0x0429, 50087 },
+ { 0x042A, 49926 },
+ { 0x042B, 50019 },
+ { 0x042C, 49998 },
+ { 0x042D, 49437 },
+ { 0x042E, 49731 },
+ { 0x042F, 49719 },
+ { 0x0430, 48523 },
+ { 0x0431, 48604 },
+ { 0x0432, 48813 },
+ { 0x0433, 48893 },
+ { 0x0434, 48608 },
+ { 0x0435, 48720 },
+ { 0x0436, 48986 },
+ { 0x0437, 48837 },
+ { 0x0438, 48549 },
+ { 0x0439, 49193 },
+ { 0x043A, 48744 },
+ { 0x043B, 48616 },
+ { 0x043C, 48639 },
+ { 0x043D, 48649 },
+ { 0x043E, 48571 },
+ { 0x043F, 48777 },
+ { 0x0440, 48678 },
+ { 0x0441, 48688 },
+ { 0x0442, 48792 },
+ { 0x0443, 48581 },
+ { 0x0444, 48612 },
+ { 0x0445, 48698 },
+ { 0x0446, 48970 },
+ { 0x0447, 48858 },
+ { 0x0448, 48966 },
+ { 0x0449, 49189 },
+ { 0x044A, 49028 },
+ { 0x044B, 49121 },
+ { 0x044C, 49100 },
+ { 0x044D, 48539 },
+ { 0x044E, 48833 },
+ { 0x044F, 48821 },
+ { 0x0450, 48730 },
+ { 0x0451, 48736 },
+ { 0x0452, 48881 },
+ { 0x0453, 48930 },
+ { 0x0454, 49377 },
+ { 0x0455, 48889 },
+ { 0x0456, 49387 },
+ { 0x0457, 48825 },
+ { 0x0458, 48740 },
+ { 0x0459, 48950 },
+ { 0x045A, 48954 },
+ { 0x045B, 49109 },
+ { 0x045C, 48938 },
+ { 0x045D, 48553 },
+ { 0x045E, 49205 },
+ { 0x045F, 49012 },
+ { 0x0460, 50062 },
+ { 0x0461, 49164 },
+ { 0x0462, 49880 },
+ { 0x0463, 48982 },
+ { 0x0464, 50173 },
+ { 0x0465, 49275 },
+ { 0x0466, 50132 },
+ { 0x0467, 49234 },
+ { 0x0468, 50196 },
+ { 0x0469, 49298 },
+ { 0x046A, 49751 },
+ { 0x046B, 48853 },
+ { 0x046C, 50178 },
+ { 0x046D, 49280 },
+ { 0x046E, 49840 },
+ { 0x046F, 48942 },
+ { 0x0470, 49856 },
+ { 0x0471, 48958 },
+ { 0x0472, 49922 },
+ { 0x0473, 49024 },
+ { 0x0474, 50151 },
+ { 0x0475, 49253 },
+ { 0x0476, 50155 },
+ { 0x0477, 49257 },
+ { 0x0478, 49707 },
+ { 0x0479, 48809 },
+ { 0x047A, 50072 },
+ { 0x047B, 49174 },
+ { 0x047C, 50066 },
+ { 0x047D, 49168 },
+ { 0x047E, 49671 },
+ { 0x047F, 48773 },
+ { 0x0480, 50058 },
+ { 0x0481, 49160 },
+ { 0x0482, 50303 },
+ { 0x0483, 58017 },
+ { 0x0484, 58185 },
+ { 0x0485, 58009 },
+ { 0x0486, 58013 },
+ { 0x0487, 58177 },
+ { 0x0488, 58165 },
+ { 0x0489, 58173 },
+ { 0x048A, 50096 },
+ { 0x048B, 49198 },
+ { 0x048C, 50217 },
+ { 0x048D, 49323 },
+ { 0x048E, 49580 },
+ { 0x048F, 48682 },
+ { 0x0490, 49816 },
+ { 0x0491, 48918 },
+ { 0x0492, 49802 },
+ { 0x0493, 48904 },
+ { 0x0494, 49795 },
+ { 0x0495, 48897 },
+ { 0x0496, 49894 },
+ { 0x0497, 48996 },
+ { 0x0498, 49739 },
+ { 0x0499, 48841 },
+ { 0x049A, 49665 },
+ { 0x049B, 48767 },
+ { 0x049C, 49658 },
+ { 0x049D, 48760 },
+ { 0x049E, 49652 },
+ { 0x049F, 48754 },
+ { 0x04A0, 50141 },
+ { 0x04A1, 49243 },
+ { 0x04A2, 49570 },
+ { 0x04A3, 48672 },
+ { 0x04A4, 50291 },
+ { 0x04A5, 49397 },
+ { 0x04A6, 49679 },
+ { 0x04A7, 48781 },
+ { 0x04A8, 50234 },
+ { 0x04A9, 49340 },
+ { 0x04AA, 49590 },
+ { 0x04AB, 48692 },
+ { 0x04AC, 49701 },
+ { 0x04AD, 48803 },
+ { 0x04AE, 50222 },
+ { 0x04AF, 49328 },
+ { 0x04B0, 50227 },
+ { 0x04B1, 49333 },
+ { 0x04B2, 49612 },
+ { 0x04B3, 48714 },
+ { 0x04B4, 50296 },
+ { 0x04B5, 49402 },
+ { 0x04B6, 49767 },
+ { 0x04B7, 48869 },
+ { 0x04B8, 49760 },
+ { 0x04B9, 48862 },
+ { 0x04BA, 49975 },
+ { 0x04BB, 49077 },
+ { 0x04BC, 50239 },
+ { 0x04BD, 49345 },
+ { 0x04BE, 50244 },
+ { 0x04BF, 49350 },
+ { 0x04C0, 49414 },
+ { 0x04C1, 49888 },
+ { 0x04C2, 48990 },
+ { 0x04C3, 49646 },
+ { 0x04C4, 48748 },
+ { 0x04C5, 49524 },
+ { 0x04C6, 48626 },
+ { 0x04C7, 49551 },
+ { 0x04C8, 48653 },
+ { 0x04C9, 49557 },
+ { 0x04CA, 48659 },
+ { 0x04CB, 50276 },
+ { 0x04CC, 49382 },
+ { 0x04CD, 49541 },
+ { 0x04CE, 48643 },
+ { 0x04CF, 49304 },
+ { 0x04D0, 49425 },
+ { 0x04D1, 48527 },
+ { 0x04D2, 49431 },
+ { 0x04D3, 48533 },
+ { 0x04D4, 50286 },
+ { 0x04D5, 49392 },
+ { 0x04D6, 49622 },
+ { 0x04D7, 48724 },
+ { 0x04D8, 50077 },
+ { 0x04D9, 49179 },
+ { 0x04DA, 50081 },
+ { 0x04DB, 49183 },
+ { 0x04DC, 49900 },
+ { 0x04DD, 49002 },
+ { 0x04DE, 49745 },
+ { 0x04DF, 48847 },
+ { 0x04E0, 50251 },
+ { 0x04E1, 49357 },
+ { 0x04E2, 49457 },
+ { 0x04E3, 48559 },
+ { 0x04E4, 49463 },
+ { 0x04E5, 48565 },
+ { 0x04E6, 49473 },
+ { 0x04E7, 48575 },
+ { 0x04E8, 50108 },
+ { 0x04E9, 49210 },
+ { 0x04EA, 50113 },
+ { 0x04EB, 49215 },
+ { 0x04EC, 49441 },
+ { 0x04ED, 48543 },
+ { 0x04EE, 49490 },
+ { 0x04EF, 48592 },
+ { 0x04F0, 49496 },
+ { 0x04F1, 48598 },
+ { 0x04F2, 49483 },
+ { 0x04F3, 48585 },
+ { 0x04F4, 49773 },
+ { 0x04F5, 48875 },
+ { 0x04F6, 49822 },
+ { 0x04F7, 48924 },
+ { 0x04F8, 50030 },
+ { 0x04F9, 49132 },
+ { 0x04FA, 49808 },
+ { 0x04FB, 48910 },
+ { 0x04FC, 49600 },
+ { 0x04FD, 48702 },
+ { 0x04FE, 49606 },
+ { 0x04FF, 48708 },
+ { 0x0500, 49935 },
+ { 0x0501, 49037 },
+ { 0x0502, 49940 },
+ { 0x0503, 49042 },
+ { 0x0504, 49965 },
+ { 0x0505, 49067 },
+ { 0x0506, 49970 },
+ { 0x0507, 49072 },
+ { 0x0508, 49945 },
+ { 0x0509, 49047 },
+ { 0x050A, 49950 },
+ { 0x050B, 49052 },
+ { 0x050C, 49955 },
+ { 0x050D, 49057 },
+ { 0x050E, 49960 },
+ { 0x050F, 49062 },
+ { 0x0510, 50207 },
+ { 0x0511, 49313 },
+ { 0x0512, 49518 },
+ { 0x0513, 48620 },
+ { 0x0514, 49844 },
+ { 0x0515, 48946 },
+ { 0x0516, 49860 },
+ { 0x0517, 48962 },
+ { 0x0518, 49876 },
+ { 0x0519, 48978 },
+ { 0x051A, 49686 },
+ { 0x051B, 48788 },
+ { 0x051C, 49715 },
+ { 0x051D, 48817 },
+ { 0x051E, 50040 },
+ { 0x051F, 49142 },
+ { 0x0520, 49530 },
+ { 0x0521, 48632 },
+ { 0x0522, 49563 },
+ { 0x0523, 48665 },
+ { 0x0531, 44961 },
+ { 0x0532, 44965 },
+ { 0x0533, 44981 },
+ { 0x0534, 44917 },
+ { 0x0535, 44973 },
+ { 0x0536, 44957 },
+ { 0x0537, 44921 },
+ { 0x0538, 44925 },
+ { 0x0539, 44945 },
+ { 0x053A, 45029 },
+ { 0x053B, 44985 },
+ { 0x053C, 45045 },
+ { 0x053D, 45025 },
+ { 0x053E, 44909 },
+ { 0x053F, 44993 },
+ { 0x0540, 44929 },
+ { 0x0541, 44933 },
+ { 0x0542, 45037 },
+ { 0x0543, 45033 },
+ { 0x0544, 44997 },
+ { 0x0545, 44953 },
+ { 0x0546, 45001 },
+ { 0x0547, 45017 },
+ { 0x0548, 44949 },
+ { 0x0549, 44969 },
+ { 0x054A, 45005 },
+ { 0x054B, 45041 },
+ { 0x054C, 44941 },
+ { 0x054D, 45013 },
+ { 0x054E, 45021 },
+ { 0x054F, 45053 },
+ { 0x0550, 45009 },
+ { 0x0551, 44913 },
+ { 0x0552, 45057 },
+ { 0x0553, 45049 },
+ { 0x0554, 44989 },
+ { 0x0555, 44937 },
+ { 0x0556, 44977 },
+ { 0x0559, 45064 },
+ { 0x055A, 45073 },
+ { 0x055B, 45061 },
+ { 0x055C, 45075 },
+ { 0x055D, 44723 },
+ { 0x055E, 45070 },
+ { 0x055F, 45078 },
+ { 0x0561, 44777 },
+ { 0x0562, 44781 },
+ { 0x0563, 44797 },
+ { 0x0564, 44733 },
+ { 0x0565, 44789 },
+ { 0x0566, 44773 },
+ { 0x0567, 44737 },
+ { 0x0568, 44741 },
+ { 0x0569, 44761 },
+ { 0x056A, 44845 },
+ { 0x056B, 44801 },
+ { 0x056C, 44861 },
+ { 0x056D, 44841 },
+ { 0x056E, 44725 },
+ { 0x056F, 44809 },
+ { 0x0570, 44745 },
+ { 0x0571, 44749 },
+ { 0x0572, 44853 },
+ { 0x0573, 44849 },
+ { 0x0574, 44813 },
+ { 0x0575, 44769 },
+ { 0x0576, 44817 },
+ { 0x0577, 44833 },
+ { 0x0578, 44765 },
+ { 0x0579, 44785 },
+ { 0x057A, 44821 },
+ { 0x057B, 44857 },
+ { 0x057C, 44757 },
+ { 0x057D, 44829 },
+ { 0x057E, 44837 },
+ { 0x057F, 44869 },
+ { 0x0580, 44825 },
+ { 0x0581, 44729 },
+ { 0x0582, 44873 },
+ { 0x0583, 44865 },
+ { 0x0584, 44805 },
+ { 0x0585, 44753 },
+ { 0x0586, 44793 },
+ { 0x0587, 44877 },
+ { 0x0589, 44720 },
+ { 0x058A, 44907 },
+ { 0x0591, 33056 },
+ { 0x0592, 33004 },
+ { 0x0593, 33073 },
+ { 0x0594, 33022 },
+ { 0x0595, 33018 },
+ { 0x0596, 33053 },
+ { 0x0597, 33001 },
+ { 0x0598, 33026 },
+ { 0x0599, 33046 },
+ { 0x059A, 33015 },
+ { 0x059B, 33007 },
+ { 0x059C, 33032 },
+ { 0x059D, 33035 },
+ { 0x059E, 33070 },
+ { 0x059F, 33049 },
+ { 0x05A0, 33059 },
+ { 0x05A1, 32995 },
+ { 0x05A2, 32985 },
+ { 0x05A3, 32992 },
+ { 0x05A4, 33067 },
+ { 0x05A5, 33039 },
+ { 0x05A6, 33042 },
+ { 0x05A7, 32989 },
+ { 0x05A8, 32998 },
+ { 0x05A9, 33063 },
+ { 0x05AA, 33010 },
+ { 0x05AB, 32976 },
+ { 0x05AC, 32982 },
+ { 0x05AD, 32979 },
+ { 0x05AE, 33029 },
+ { 0x05AF, 32903 },
+ { 0x05B0, 32951 },
+ { 0x05B1, 32922 },
+ { 0x05B2, 32918 },
+ { 0x05B3, 32926 },
+ { 0x05B4, 32930 },
+ { 0x05B5, 32954 },
+ { 0x05B6, 32948 },
+ { 0x05B7, 32945 },
+ { 0x05B8, 32962 },
+ { 0x05B9, 32933 },
+ { 0x05BA, 32936 },
+ { 0x05BB, 32969 },
+ { 0x05BC, 32957 },
+ { 0x05BD, 32942 },
+ { 0x05BE, 33412 },
+ { 0x05BF, 32911 },
+ { 0x05C0, 33415 },
+ { 0x05C1, 32914 },
+ { 0x05C2, 32907 },
+ { 0x05C3, 33408 },
+ { 0x05C4, 32899 },
+ { 0x05C5, 32895 },
+ { 0x05C6, 33404 },
+ { 0x05C7, 32965 },
+ { 0x05D0, 33192 },
+ { 0x05D1, 33097 },
+ { 0x05D2, 33330 },
+ { 0x05D3, 33290 },
+ { 0x05D4, 33076 },
+ { 0x05D5, 33166 },
+ { 0x05D6, 33354 },
+ { 0x05D7, 33110 },
+ { 0x05D8, 33158 },
+ { 0x05D9, 33179 },
+ { 0x05DA, 33308 },
+ { 0x05DB, 33113 },
+ { 0x05DC, 33338 },
+ { 0x05DD, 33318 },
+ { 0x05DE, 33126 },
+ { 0x05DF, 33322 },
+ { 0x05E0, 33134 },
+ { 0x05E1, 33362 },
+ { 0x05E2, 33210 },
+ { 0x05E3, 33298 },
+ { 0x05E4, 33084 },
+ { 0x05E5, 33326 },
+ { 0x05E6, 33346 },
+ { 0x05E7, 33142 },
+ { 0x05E8, 33213 },
+ { 0x05E9, 33221 },
+ { 0x05EA, 33150 },
+ { 0x05F0, 33394 },
+ { 0x05F1, 33383 },
+ { 0x05F2, 33399 },
+ { 0x05F3, 33418 },
+ { 0x05F4, 33421 },
+ { 0x0600, 26405 },
+ { 0x0601, 23733 },
+ { 0x0602, 26459 },
+ { 0x0603, 23730 },
+ { 0x0606, 69351 },
+ { 0x0607, 69384 },
+ { 0x0608, 23706 },
+ { 0x0609, 69347 },
+ { 0x060A, 69342 },
+ { 0x060B, 37776 },
+ { 0x060C, 23764 },
+ { 0x060D, 23708 },
+ { 0x060E, 26408 },
+ { 0x060F, 23727 },
+ { 0x0610, 23756 },
+ { 0x0611, 23736 },
+ { 0x0612, 23752 },
+ { 0x0613, 23722 },
+ { 0x0614, 23749 },
+ { 0x0615, 23840 },
+ { 0x0616, 23923 },
+ { 0x0617, 23872 },
+ { 0x0618, 23935 },
+ { 0x0619, 23932 },
+ { 0x061A, 23938 },
+ { 0x061B, 30222 },
+ { 0x061E, 26422 },
+ { 0x061F, 30214 },
+ { 0x0621, 26056 },
+ { 0x0622, 25371 },
+ { 0x0623, 25327 },
+ { 0x0624, 25097 },
+ { 0x0625, 25349 },
+ { 0x0626, 25155 },
+ { 0x0627, 25310 },
+ { 0x0628, 24144 },
+ { 0x0629, 25027 },
+ { 0x062A, 24996 },
+ { 0x062B, 25851 },
+ { 0x062C, 25554 },
+ { 0x062D, 24447 },
+ { 0x062E, 25577 },
+ { 0x062F, 24260 },
+ { 0x0630, 25838 },
+ { 0x0631, 24833 },
+ { 0x0632, 25897 },
+ { 0x0633, 25747 },
+ { 0x0634, 26192 },
+ { 0x0635, 24929 },
+ { 0x0636, 24231 },
+ { 0x0637, 24966 },
+ { 0x0638, 25287 },
+ { 0x0639, 24090 },
+ { 0x063A, 26027 },
+ { 0x063B, 26073 },
+ { 0x063C, 26087 },
+ { 0x063D, 25996 },
+ { 0x063E, 25950 },
+ { 0x063F, 25958 },
+ { 0x0640, 26440 },
+ { 0x0641, 24346 },
+ { 0x0642, 24797 },
+ { 0x0643, 24672 },
+ { 0x0644, 24720 },
+ { 0x0645, 25600 },
+ { 0x0646, 25635 },
+ { 0x0647, 24545 },
+ { 0x0648, 25076 },
+ { 0x0649, 25432 },
+ { 0x064A, 25147 },
+ { 0x064B, 26453 },
+ { 0x064C, 26447 },
+ { 0x064D, 26465 },
+ { 0x064E, 23786 },
+ { 0x064F, 23766 },
+ { 0x0650, 23807 },
+ { 0x0651, 26412 },
+ { 0x0652, 23947 },
+ { 0x0653, 26402 },
+ { 0x0654, 23801 },
+ { 0x0655, 23804 },
+ { 0x0656, 30224 },
+ { 0x0657, 26462 },
+ { 0x0658, 23718 },
+ { 0x0659, 30220 },
+ { 0x065A, 23962 },
+ { 0x065B, 23968 },
+ { 0x065C, 23957 },
+ { 0x065D, 30217 },
+ { 0x065E, 23788 },
+ { 0x0660, 69372 },
+ { 0x0661, 69354 },
+ { 0x0662, 69360 },
+ { 0x0663, 69381 },
+ { 0x0664, 69366 },
+ { 0x0665, 69363 },
+ { 0x0666, 69357 },
+ { 0x0667, 69378 },
+ { 0x0668, 69375 },
+ { 0x0669, 69369 },
+ { 0x066A, 26430 },
+ { 0x066B, 26427 },
+ { 0x066C, 30227 },
+ { 0x066D, 23711 },
+ { 0x066E, 26331 },
+ { 0x066F, 26339 },
+ { 0x0670, 26398 },
+ { 0x0671, 25416 },
+ { 0x0672, 25313 },
+ { 0x0673, 25320 },
+ { 0x0674, 25535 },
+ { 0x0675, 25549 },
+ { 0x0676, 25539 },
+ { 0x0677, 24001 },
+ { 0x0678, 25544 },
+ { 0x0679, 25874 },
+ { 0x067A, 26290 },
+ { 0x067B, 25453 },
+ { 0x067C, 24999 },
+ { 0x067D, 25004 },
+ { 0x067E, 24774 },
+ { 0x067F, 26254 },
+ { 0x0680, 25910 },
+ { 0x0681, 24465 },
+ { 0x0682, 24457 },
+ { 0x0683, 25711 },
+ { 0x0684, 25489 },
+ { 0x0685, 24500 },
+ { 0x0686, 26225 },
+ { 0x0687, 26375 },
+ { 0x0688, 25476 },
+ { 0x0689, 24296 },
+ { 0x068A, 24263 },
+ { 0x068B, 24269 },
+ { 0x068C, 25933 },
+ { 0x068D, 26277 },
+ { 0x068E, 24333 },
+ { 0x068F, 24301 },
+ { 0x0690, 24289 },
+ { 0x0691, 25734 },
+ { 0x0692, 24884 },
+ { 0x0693, 24873 },
+ { 0x0694, 24836 },
+ { 0x0695, 24890 },
+ { 0x0696, 24842 },
+ { 0x0697, 24851 },
+ { 0x0698, 24659 },
+ { 0x0699, 24866 },
+ { 0x069A, 25750 },
+ { 0x069B, 25785 },
+ { 0x069C, 25792 },
+ { 0x069D, 24932 },
+ { 0x069E, 24939 },
+ { 0x069F, 24969 },
+ { 0x06A0, 24108 },
+ { 0x06A1, 26335 },
+ { 0x06A2, 24355 },
+ { 0x06A3, 24349 },
+ { 0x06A4, 25053 },
+ { 0x06A5, 24369 },
+ { 0x06A6, 26146 },
+ { 0x06A7, 24800 },
+ { 0x06A8, 24806 },
+ { 0x06A9, 26064 },
+ { 0x06AA, 26221 },
+ { 0x06AB, 24688 },
+ { 0x06AC, 24675 },
+ { 0x06AD, 24028 },
+ { 0x06AE, 24693 },
+ { 0x06AF, 24405 },
+ { 0x06B0, 24415 },
+ { 0x06B1, 26123 },
+ { 0x06B2, 24408 },
+ { 0x06B3, 25512 },
+ { 0x06B4, 24420 },
+ { 0x06B5, 24734 },
+ { 0x06B6, 24728 },
+ { 0x06B7, 24740 },
+ { 0x06B8, 24747 },
+ { 0x06B9, 25638 },
+ { 0x06BA, 25680 },
+ { 0x06BB, 26169 },
+ { 0x06BC, 25651 },
+ { 0x06BD, 25668 },
+ { 0x06BE, 24631 },
+ { 0x06BF, 26228 },
+ { 0x06C0, 24583 },
+ { 0x06C1, 24548 },
+ { 0x06C2, 24552 },
+ { 0x06C3, 25031 },
+ { 0x06C4, 25092 },
+ { 0x06C5, 26343 },
+ { 0x06C6, 24051 },
+ { 0x06C7, 23998 },
+ { 0x06C8, 24077 },
+ { 0x06C9, 26359 },
+ { 0x06CA, 25085 },
+ { 0x06CB, 24064 },
+ { 0x06CC, 25946 },
+ { 0x06CD, 25150 },
+ { 0x06CE, 25193 },
+ { 0x06CF, 25079 },
+ { 0x06D0, 23975 },
+ { 0x06D1, 25199 },
+ { 0x06D2, 25211 },
+ { 0x06D3, 25215 },
+ { 0x06D4, 23715 },
+ { 0x06D5, 24025 },
+ { 0x06D6, 23913 },
+ { 0x06D7, 23903 },
+ { 0x06D8, 23852 },
+ { 0x06D9, 23835 },
+ { 0x06DA, 23848 },
+ { 0x06DB, 23880 },
+ { 0x06DC, 23868 },
+ { 0x06DD, 23702 },
+ { 0x06DE, 23941 },
+ { 0x06DF, 23892 },
+ { 0x06E0, 23897 },
+ { 0x06E1, 23885 },
+ { 0x06E2, 23858 },
+ { 0x06E3, 23825 },
+ { 0x06E4, 23876 },
+ { 0x06E5, 23829 },
+ { 0x06E6, 23832 },
+ { 0x06E7, 23844 },
+ { 0x06E8, 23864 },
+ { 0x06E9, 23817 },
+ { 0x06EA, 23776 },
+ { 0x06EB, 23781 },
+ { 0x06EC, 26433 },
+ { 0x06ED, 23821 },
+ { 0x06EE, 24309 },
+ { 0x06EF, 24913 },
+ { 0x06F0, 51759 },
+ { 0x06F1, 51735 },
+ { 0x06F2, 51743 },
+ { 0x06F3, 51771 },
+ { 0x06F4, 51751 },
+ { 0x06F5, 51747 },
+ { 0x06F6, 51739 },
+ { 0x06F7, 51767 },
+ { 0x06F8, 51763 },
+ { 0x06F9, 51755 },
+ { 0x06FA, 26195 },
+ { 0x06FB, 24234 },
+ { 0x06FC, 26030 },
+ { 0x06FD, 23740 },
+ { 0x06FE, 23744 },
+ { 0x06FF, 24605 },
+ { 0x0700, 36871 },
+ { 0x0701, 37114 },
+ { 0x0702, 37094 },
+ { 0x0703, 37118 },
+ { 0x0704, 37098 },
+ { 0x0705, 37106 },
+ { 0x0706, 36885 },
+ { 0x0707, 36889 },
+ { 0x0708, 37121 },
+ { 0x0709, 37101 },
+ { 0x070A, 37109 },
+ { 0x070B, 37081 },
+ { 0x070C, 37084 },
+ { 0x070D, 37087 },
+ { 0x070F, 37126 },
+ { 0x0710, 36987 },
+ { 0x0711, 37046 },
+ { 0x0712, 36952 },
+ { 0x0713, 36994 },
+ { 0x0714, 36997 },
+ { 0x0715, 37004 },
+ { 0x0716, 37010 },
+ { 0x0717, 36934 },
+ { 0x0718, 36949 },
+ { 0x0719, 36984 },
+ { 0x071A, 36955 },
+ { 0x071B, 36970 },
+ { 0x071C, 36973 },
+ { 0x071D, 36977 },
+ { 0x071E, 36980 },
+ { 0x071F, 36958 },
+ { 0x0720, 37007 },
+ { 0x0721, 36940 },
+ { 0x0722, 36943 },
+ { 0x0723, 37027 },
+ { 0x0724, 36990 },
+ { 0x0725, 36931 },
+ { 0x0726, 36937 },
+ { 0x0727, 37042 },
+ { 0x0728, 37001 },
+ { 0x0729, 36961 },
+ { 0x072A, 36964 },
+ { 0x072B, 36967 },
+ { 0x072C, 36946 },
+ { 0x072D, 37015 },
+ { 0x072E, 37019 },
+ { 0x072F, 37023 },
+ { 0x0730, 37050 },
+ { 0x0731, 37053 },
+ { 0x0732, 37056 },
+ { 0x0733, 37059 },
+ { 0x0734, 37062 },
+ { 0x0735, 37065 },
+ { 0x0736, 36907 },
+ { 0x0737, 36910 },
+ { 0x0738, 36927 },
+ { 0x0739, 36923 },
+ { 0x073A, 36899 },
+ { 0x073B, 36902 },
+ { 0x073C, 37111 },
+ { 0x073D, 36893 },
+ { 0x073E, 36896 },
+ { 0x073F, 36913 },
+ { 0x0740, 37078 },
+ { 0x0741, 37092 },
+ { 0x0742, 37090 },
+ { 0x0743, 36875 },
+ { 0x0744, 36880 },
+ { 0x0745, 36915 },
+ { 0x0746, 36919 },
+ { 0x0747, 37070 },
+ { 0x0748, 37074 },
+ { 0x0749, 36905 },
+ { 0x074A, 37068 },
+ { 0x074D, 37038 },
+ { 0x074E, 37034 },
+ { 0x074F, 37030 },
+ { 0x0750, 24195 },
+ { 0x0751, 24147 },
+ { 0x0752, 24173 },
+ { 0x0753, 24182 },
+ { 0x0754, 24157 },
+ { 0x0755, 24203 },
+ { 0x0756, 24167 },
+ { 0x0757, 24450 },
+ { 0x0758, 24507 },
+ { 0x0759, 24278 },
+ { 0x075A, 24315 },
+ { 0x075B, 24908 },
+ { 0x075C, 25767 },
+ { 0x075D, 24093 },
+ { 0x075E, 24115 },
+ { 0x075F, 24100 },
+ { 0x0760, 24362 },
+ { 0x0761, 24376 },
+ { 0x0762, 26067 },
+ { 0x0763, 26080 },
+ { 0x0764, 26094 },
+ { 0x0765, 25603 },
+ { 0x0766, 25609 },
+ { 0x0767, 25644 },
+ { 0x0768, 25662 },
+ { 0x0769, 25656 },
+ { 0x076A, 24723 },
+ { 0x076B, 24858 },
+ { 0x076C, 24878 },
+ { 0x076D, 25759 },
+ { 0x076E, 24491 },
+ { 0x076F, 24471 },
+ { 0x0770, 25774 },
+ { 0x0771, 24897 },
+ { 0x0772, 24482 },
+ { 0x0773, 25393 },
+ { 0x0774, 25402 },
+ { 0x0775, 25966 },
+ { 0x0776, 25986 },
+ { 0x0777, 25976 },
+ { 0x0778, 25119 },
+ { 0x0779, 25128 },
+ { 0x077A, 25240 },
+ { 0x077B, 25250 },
+ { 0x077C, 24516 },
+ { 0x077D, 25803 },
+ { 0x077E, 25812 },
+ { 0x077F, 24681 },
+ { 0x0780, 37486 },
+ { 0x0781, 37591 },
+ { 0x0782, 37534 },
+ { 0x0783, 37492 },
+ { 0x0784, 37483 },
+ { 0x0785, 37588 },
+ { 0x0786, 37525 },
+ { 0x0787, 37516 },
+ { 0x0788, 37543 },
+ { 0x0789, 37531 },
+ { 0x078A, 37519 },
+ { 0x078B, 37552 },
+ { 0x078C, 37510 },
+ { 0x078D, 37528 },
+ { 0x078E, 37522 },
+ { 0x078F, 37585 },
+ { 0x0790, 37540 },
+ { 0x0791, 37567 },
+ { 0x0792, 37579 },
+ { 0x0793, 37576 },
+ { 0x0794, 37495 },
+ { 0x0795, 37573 },
+ { 0x0796, 37570 },
+ { 0x0797, 37582 },
+ { 0x0798, 37513 },
+ { 0x0799, 37504 },
+ { 0x079A, 37507 },
+ { 0x079B, 37564 },
+ { 0x079C, 37498 },
+ { 0x079D, 37561 },
+ { 0x079E, 37558 },
+ { 0x079F, 37549 },
+ { 0x07A0, 37477 },
+ { 0x07A1, 37480 },
+ { 0x07A2, 37501 },
+ { 0x07A3, 37555 },
+ { 0x07A4, 37537 },
+ { 0x07A5, 37546 },
+ { 0x07A6, 37594 },
+ { 0x07A7, 37604 },
+ { 0x07A8, 37598 },
+ { 0x07A9, 37606 },
+ { 0x07AA, 37602 },
+ { 0x07AB, 37612 },
+ { 0x07AC, 37596 },
+ { 0x07AD, 37608 },
+ { 0x07AE, 37600 },
+ { 0x07AF, 37610 },
+ { 0x07B0, 37475 },
+ { 0x07B1, 37489 },
+ { 0x07C0, 6538 },
+ { 0x07C1, 6520 },
+ { 0x07C2, 6526 },
+ { 0x07C3, 6547 },
+ { 0x07C4, 6532 },
+ { 0x07C5, 6529 },
+ { 0x07C6, 6523 },
+ { 0x07C7, 6544 },
+ { 0x07C8, 6541 },
+ { 0x07C9, 6535 },
+ { 0x07CA, 6550 },
+ { 0x07CB, 6574 },
+ { 0x07CC, 6556 },
+ { 0x07CD, 6553 },
+ { 0x07CE, 6565 },
+ { 0x07CF, 6602 },
+ { 0x07D0, 6562 },
+ { 0x07D1, 6651 },
+ { 0x07D2, 6559 },
+ { 0x07D3, 6568 },
+ { 0x07D4, 6605 },
+ { 0x07D5, 6614 },
+ { 0x07D6, 6583 },
+ { 0x07D7, 6623 },
+ { 0x07D8, 6571 },
+ { 0x07D9, 6608 },
+ { 0x07DA, 6636 },
+ { 0x07DB, 6611 },
+ { 0x07DC, 6626 },
+ { 0x07DD, 6577 },
+ { 0x07DE, 6586 },
+ { 0x07DF, 6589 },
+ { 0x07E0, 6598 },
+ { 0x07E1, 6592 },
+ { 0x07E2, 6629 },
+ { 0x07E3, 6595 },
+ { 0x07E4, 6580 },
+ { 0x07E5, 6617 },
+ { 0x07E6, 6620 },
+ { 0x07E7, 6632 },
+ { 0x07E8, 6639 },
+ { 0x07E9, 6647 },
+ { 0x07EA, 6643 },
+ { 0x07EB, 6686 },
+ { 0x07EC, 6681 },
+ { 0x07ED, 6691 },
+ { 0x07EE, 6676 },
+ { 0x07EF, 6666 },
+ { 0x07F0, 6661 },
+ { 0x07F1, 6671 },
+ { 0x07F2, 6701 },
+ { 0x07F3, 6696 },
+ { 0x07F4, 6514 },
+ { 0x07F5, 6510 },
+ { 0x07F6, 6654 },
+ { 0x07F7, 6658 },
+ { 0x07F8, 6518 },
+ { 0x07F9, 6707 },
+ { 0x07FA, 6705 },
+ { 0x0901, 66870 },
+ { 0x0902, 66864 },
+ { 0x0903, 66861 },
+ { 0x0904, 67167 },
+ { 0x0905, 66990 },
+ { 0x0906, 67005 },
+ { 0x0907, 66996 },
+ { 0x0908, 67032 },
+ { 0x0909, 67002 },
+ { 0x090A, 67065 },
+ { 0x090B, 67199 },
+ { 0x090C, 67195 },
+ { 0x090D, 67183 },
+ { 0x090E, 67171 },
+ { 0x090F, 66993 },
+ { 0x0910, 67008 },
+ { 0x0911, 67187 },
+ { 0x0912, 67175 },
+ { 0x0913, 66999 },
+ { 0x0914, 67011 },
+ { 0x0915, 67038 },
+ { 0x0916, 67104 },
+ { 0x0917, 67026 },
+ { 0x0918, 67095 },
+ { 0x0919, 67110 },
+ { 0x091A, 67017 },
+ { 0x091B, 67083 },
+ { 0x091C, 67035 },
+ { 0x091D, 67098 },
+ { 0x091E, 67116 },
+ { 0x091F, 67137 },
+ { 0x0920, 67161 },
+ { 0x0921, 67086 },
+ { 0x0922, 67146 },
+ { 0x0923, 67113 },
+ { 0x0924, 67062 },
+ { 0x0925, 67134 },
+ { 0x0926, 67020 },
+ { 0x0927, 67089 },
+ { 0x0928, 67047 },
+ { 0x0929, 67158 },
+ { 0x092A, 67050 },
+ { 0x092B, 67119 },
+ { 0x092C, 67014 },
+ { 0x092D, 67080 },
+ { 0x092E, 67044 },
+ { 0x092F, 67071 },
+ { 0x0930, 67056 },
+ { 0x0931, 67125 },
+ { 0x0932, 67041 },
+ { 0x0933, 67107 },
+ { 0x0934, 67155 },
+ { 0x0935, 67068 },
+ { 0x0936, 67128 },
+ { 0x0937, 67131 },
+ { 0x0938, 67059 },
+ { 0x0939, 67029 },
+ { 0x093C, 66855 },
+ { 0x093D, 66867 },
+ { 0x093E, 66927 },
+ { 0x093F, 66915 },
+ { 0x0940, 66939 },
+ { 0x0941, 66923 },
+ { 0x0942, 66943 },
+ { 0x0943, 66972 },
+ { 0x0944, 66982 },
+ { 0x0945, 66957 },
+ { 0x0946, 66947 },
+ { 0x0947, 66911 },
+ { 0x0948, 66931 },
+ { 0x0949, 66962 },
+ { 0x094A, 66952 },
+ { 0x094B, 66919 },
+ { 0x094C, 66935 },
+ { 0x094D, 66858 },
+ { 0x0950, 66848 },
+ { 0x0951, 67211 },
+ { 0x0952, 67215 },
+ { 0x0953, 66908 },
+ { 0x0954, 66873 },
+ { 0x0958, 67053 },
+ { 0x0959, 67152 },
+ { 0x095A, 67149 },
+ { 0x095B, 67074 },
+ { 0x095C, 67164 },
+ { 0x095D, 67122 },
+ { 0x095E, 67023 },
+ { 0x095F, 67140 },
+ { 0x0960, 67207 },
+ { 0x0961, 67203 },
+ { 0x0962, 66967 },
+ { 0x0963, 66977 },
+ { 0x0964, 66876 },
+ { 0x0965, 66987 },
+ { 0x0966, 66896 },
+ { 0x0967, 66878 },
+ { 0x0968, 66884 },
+ { 0x0969, 66905 },
+ { 0x096A, 66890 },
+ { 0x096B, 66887 },
+ { 0x096C, 66881 },
+ { 0x096D, 66902 },
+ { 0x096E, 66899 },
+ { 0x096F, 66893 },
+ { 0x0970, 67219 },
+ { 0x0971, 66850 },
+ { 0x0972, 67179 },
+ { 0x097B, 67092 },
+ { 0x097C, 67101 },
+ { 0x097D, 67191 },
+ { 0x097E, 67143 },
+ { 0x097F, 67077 },
+ { 0x0981, 37801 },
+ { 0x0982, 37795 },
+ { 0x0983, 37792 },
+ { 0x0985, 37898 },
+ { 0x0986, 37913 },
+ { 0x0987, 37904 },
+ { 0x0988, 37937 },
+ { 0x0989, 37910 },
+ { 0x098A, 37979 },
+ { 0x098B, 38053 },
+ { 0x098C, 38049 },
+ { 0x098F, 37901 },
+ { 0x0990, 37916 },
+ { 0x0993, 37907 },
+ { 0x0994, 37919 },
+ { 0x0995, 37943 },
+ { 0x0996, 38003 },
+ { 0x0997, 37931 },
+ { 0x0998, 37997 },
+ { 0x0999, 38006 },
+ { 0x099A, 37925 },
+ { 0x099B, 37988 },
+ { 0x099C, 37940 },
+ { 0x099D, 38000 },
+ { 0x099E, 38012 },
+ { 0x099F, 38033 },
+ { 0x09A0, 38042 },
+ { 0x09A1, 37991 },
+ { 0x09A2, 38039 },
+ { 0x09A3, 38009 },
+ { 0x09A4, 37976 },
+ { 0x09A5, 38030 },
+ { 0x09A6, 37928 },
+ { 0x09A7, 37994 },
+ { 0x09A8, 37952 },
+ { 0x09AA, 37955 },
+ { 0x09AB, 38015 },
+ { 0x09AC, 37922 },
+ { 0x09AD, 37985 },
+ { 0x09AE, 37949 },
+ { 0x09AF, 37982 },
+ { 0x09B0, 37958 },
+ { 0x09B2, 37946 },
+ { 0x09B6, 38024 },
+ { 0x09B7, 38027 },
+ { 0x09B8, 37973 },
+ { 0x09B9, 37934 },
+ { 0x09BC, 37786 },
+ { 0x09BD, 37798 },
+ { 0x09BE, 37856 },
+ { 0x09BF, 37844 },
+ { 0x09C0, 37868 },
+ { 0x09C1, 37852 },
+ { 0x09C2, 37872 },
+ { 0x09C3, 37881 },
+ { 0x09C4, 37891 },
+ { 0x09C7, 37840 },
+ { 0x09C8, 37860 },
+ { 0x09CB, 37848 },
+ { 0x09CC, 37864 },
+ { 0x09CD, 37789 },
+ { 0x09CE, 38045 },
+ { 0x09D7, 37782 },
+ { 0x09DC, 38021 },
+ { 0x09DD, 38018 },
+ { 0x09DF, 38036 },
+ { 0x09E0, 38061 },
+ { 0x09E1, 38057 },
+ { 0x09E2, 37876 },
+ { 0x09E3, 37886 },
+ { 0x09E6, 37822 },
+ { 0x09E7, 37804 },
+ { 0x09E8, 37810 },
+ { 0x09E9, 37831 },
+ { 0x09EA, 37816 },
+ { 0x09EB, 37813 },
+ { 0x09EC, 37807 },
+ { 0x09ED, 37828 },
+ { 0x09EE, 37825 },
+ { 0x09EF, 37819 },
+ { 0x09F0, 37967 },
+ { 0x09F1, 37961 },
+ { 0x09F2, 37834 },
+ { 0x09F3, 37837 },
+ { 0x09F4, 38065 },
+ { 0x09F5, 38077 },
+ { 0x09F6, 38085 },
+ { 0x09F7, 38081 },
+ { 0x09F8, 38069 },
+ { 0x09F9, 38089 },
+ { 0x09FA, 37896 },
+ { 0x0A01, 52505 },
+ { 0x0A02, 52509 },
+ { 0x0A03, 52524 },
+ { 0x0A05, 52597 },
+ { 0x0A06, 52606 },
+ { 0x0A07, 52600 },
+ { 0x0A08, 52636 },
+ { 0x0A09, 52603 },
+ { 0x0A0A, 52669 },
+ { 0x0A0F, 52624 },
+ { 0x0A10, 52609 },
+ { 0x0A13, 52654 },
+ { 0x0A14, 52612 },
+ { 0x0A15, 52642 },
+ { 0x0A16, 52699 },
+ { 0x0A17, 52630 },
+ { 0x0A18, 52693 },
+ { 0x0A19, 52705 },
+ { 0x0A1A, 52618 },
+ { 0x0A1B, 52684 },
+ { 0x0A1C, 52639 },
+ { 0x0A1D, 52696 },
+ { 0x0A1E, 52711 },
+ { 0x0A1F, 52726 },
+ { 0x0A20, 52738 },
+ { 0x0A21, 52687 },
+ { 0x0A22, 52729 },
+ { 0x0A23, 52708 },
+ { 0x0A24, 52666 },
+ { 0x0A25, 52723 },
+ { 0x0A26, 52621 },
+ { 0x0A27, 52690 },
+ { 0x0A28, 52651 },
+ { 0x0A2A, 52657 },
+ { 0x0A2B, 52714 },
+ { 0x0A2C, 52615 },
+ { 0x0A2D, 52681 },
+ { 0x0A2E, 52648 },
+ { 0x0A2F, 52675 },
+ { 0x0A30, 52660 },
+ { 0x0A32, 52645 },
+ { 0x0A33, 52702 },
+ { 0x0A35, 52672 },
+ { 0x0A36, 52720 },
+ { 0x0A38, 52663 },
+ { 0x0A39, 52633 },
+ { 0x0A3C, 52512 },
+ { 0x0A3E, 52569 },
+ { 0x0A3F, 52561 },
+ { 0x0A40, 52585 },
+ { 0x0A41, 52565 },
+ { 0x0A42, 52593 },
+ { 0x0A47, 52581 },
+ { 0x0A48, 52573 },
+ { 0x0A4B, 52589 },
+ { 0x0A4C, 52577 },
+ { 0x0A4D, 52518 },
+ { 0x0A51, 52515 },
+ { 0x0A59, 52735 },
+ { 0x0A5A, 52732 },
+ { 0x0A5B, 52678 },
+ { 0x0A5C, 52717 },
+ { 0x0A5E, 52627 },
+ { 0x0A66, 52547 },
+ { 0x0A67, 52529 },
+ { 0x0A68, 52535 },
+ { 0x0A69, 52556 },
+ { 0x0A6A, 52541 },
+ { 0x0A6B, 52538 },
+ { 0x0A6C, 52532 },
+ { 0x0A6D, 52553 },
+ { 0x0A6E, 52550 },
+ { 0x0A6F, 52544 },
+ { 0x0A70, 52559 },
+ { 0x0A71, 52527 },
+ { 0x0A72, 52501 },
+ { 0x0A73, 52503 },
+ { 0x0A74, 52498 },
+ { 0x0A75, 52521 },
+ { 0x0A81, 52240 },
+ { 0x0A82, 52234 },
+ { 0x0A83, 52231 },
+ { 0x0A85, 52350 },
+ { 0x0A86, 52365 },
+ { 0x0A87, 52356 },
+ { 0x0A88, 52389 },
+ { 0x0A89, 52362 },
+ { 0x0A8A, 52419 },
+ { 0x0A8B, 52486 },
+ { 0x0A8C, 52482 },
+ { 0x0A8D, 52342 },
+ { 0x0A8F, 52353 },
+ { 0x0A90, 52368 },
+ { 0x0A91, 52346 },
+ { 0x0A93, 52359 },
+ { 0x0A94, 52371 },
+ { 0x0A95, 52395 },
+ { 0x0A96, 52446 },
+ { 0x0A97, 52383 },
+ { 0x0A98, 52440 },
+ { 0x0A99, 52452 },
+ { 0x0A9A, 52377 },
+ { 0x0A9B, 52431 },
+ { 0x0A9C, 52392 },
+ { 0x0A9D, 52443 },
+ { 0x0A9E, 52458 },
+ { 0x0A9F, 52473 },
+ { 0x0AA0, 52479 },
+ { 0x0AA1, 52434 },
+ { 0x0AA2, 52476 },
+ { 0x0AA3, 52455 },
+ { 0x0AA4, 52416 },
+ { 0x0AA5, 52470 },
+ { 0x0AA6, 52380 },
+ { 0x0AA7, 52437 },
+ { 0x0AA8, 52404 },
+ { 0x0AAA, 52407 },
+ { 0x0AAB, 52461 },
+ { 0x0AAC, 52374 },
+ { 0x0AAD, 52428 },
+ { 0x0AAE, 52401 },
+ { 0x0AAF, 52425 },
+ { 0x0AB0, 52410 },
+ { 0x0AB2, 52398 },
+ { 0x0AB3, 52449 },
+ { 0x0AB5, 52422 },
+ { 0x0AB6, 52464 },
+ { 0x0AB7, 52467 },
+ { 0x0AB8, 52413 },
+ { 0x0AB9, 52386 },
+ { 0x0ABC, 52225 },
+ { 0x0ABD, 52237 },
+ { 0x0ABE, 52292 },
+ { 0x0ABF, 52280 },
+ { 0x0AC0, 52304 },
+ { 0x0AC1, 52288 },
+ { 0x0AC2, 52308 },
+ { 0x0AC3, 52327 },
+ { 0x0AC4, 52337 },
+ { 0x0AC5, 52312 },
+ { 0x0AC7, 52276 },
+ { 0x0AC8, 52296 },
+ { 0x0AC9, 52317 },
+ { 0x0ACB, 52284 },
+ { 0x0ACC, 52300 },
+ { 0x0ACD, 52228 },
+ { 0x0AD0, 52223 },
+ { 0x0AE0, 52494 },
+ { 0x0AE1, 52490 },
+ { 0x0AE2, 52322 },
+ { 0x0AE3, 52332 },
+ { 0x0AE6, 52261 },
+ { 0x0AE7, 52243 },
+ { 0x0AE8, 52249 },
+ { 0x0AE9, 52270 },
+ { 0x0AEA, 52255 },
+ { 0x0AEB, 52252 },
+ { 0x0AEC, 52246 },
+ { 0x0AED, 52267 },
+ { 0x0AEE, 52264 },
+ { 0x0AEF, 52258 },
+ { 0x0AF1, 52273 },
+ { 0x0B01, 21480 },
+ { 0x0B02, 21474 },
+ { 0x0B03, 21471 },
+ { 0x0B05, 21571 },
+ { 0x0B06, 21586 },
+ { 0x0B07, 21577 },
+ { 0x0B08, 21610 },
+ { 0x0B09, 21583 },
+ { 0x0B0A, 21640 },
+ { 0x0B0B, 21719 },
+ { 0x0B0C, 21715 },
+ { 0x0B0F, 21574 },
+ { 0x0B10, 21589 },
+ { 0x0B13, 21580 },
+ { 0x0B14, 21592 },
+ { 0x0B15, 21616 },
+ { 0x0B16, 21670 },
+ { 0x0B17, 21604 },
+ { 0x0B18, 21664 },
+ { 0x0B19, 21676 },
+ { 0x0B1A, 21598 },
+ { 0x0B1B, 21655 },
+ { 0x0B1C, 21613 },
+ { 0x0B1D, 21667 },
+ { 0x0B1E, 21682 },
+ { 0x0B1F, 21703 },
+ { 0x0B20, 21712 },
+ { 0x0B21, 21658 },
+ { 0x0B22, 21709 },
+ { 0x0B23, 21679 },
+ { 0x0B24, 21637 },
+ { 0x0B25, 21700 },
+ { 0x0B26, 21601 },
+ { 0x0B27, 21661 },
+ { 0x0B28, 21625 },
+ { 0x0B2A, 21628 },
+ { 0x0B2B, 21685 },
+ { 0x0B2C, 21595 },
+ { 0x0B2D, 21652 },
+ { 0x0B2E, 21622 },
+ { 0x0B2F, 21649 },
+ { 0x0B30, 21631 },
+ { 0x0B32, 21619 },
+ { 0x0B33, 21673 },
+ { 0x0B35, 21643 },
+ { 0x0B36, 21694 },
+ { 0x0B37, 21697 },
+ { 0x0B38, 21634 },
+ { 0x0B39, 21607 },
+ { 0x0B3C, 21465 },
+ { 0x0B3D, 21477 },
+ { 0x0B3E, 21529 },
+ { 0x0B3F, 21517 },
+ { 0x0B40, 21541 },
+ { 0x0B41, 21525 },
+ { 0x0B42, 21545 },
+ { 0x0B43, 21554 },
+ { 0x0B44, 21564 },
+ { 0x0B47, 21513 },
+ { 0x0B48, 21533 },
+ { 0x0B4B, 21521 },
+ { 0x0B4C, 21537 },
+ { 0x0B4D, 21468 },
+ { 0x0B56, 21457 },
+ { 0x0B57, 21461 },
+ { 0x0B5C, 21691 },
+ { 0x0B5D, 21688 },
+ { 0x0B5F, 21706 },
+ { 0x0B60, 21727 },
+ { 0x0B61, 21723 },
+ { 0x0B62, 21549 },
+ { 0x0B63, 21559 },
+ { 0x0B66, 21501 },
+ { 0x0B67, 21483 },
+ { 0x0B68, 21489 },
+ { 0x0B69, 21510 },
+ { 0x0B6A, 21495 },
+ { 0x0B6B, 21492 },
+ { 0x0B6C, 21486 },
+ { 0x0B6D, 21507 },
+ { 0x0B6E, 21504 },
+ { 0x0B6F, 21498 },
+ { 0x0B70, 21569 },
+ { 0x0B71, 21646 },
+ { 0x0B82, 22772 },
+ { 0x0B83, 22769 },
+ { 0x0B85, 22864 },
+ { 0x0B86, 22879 },
+ { 0x0B87, 22870 },
+ { 0x0B88, 22897 },
+ { 0x0B89, 22876 },
+ { 0x0B8A, 22930 },
+ { 0x0B8E, 22867 },
+ { 0x0B8F, 22891 },
+ { 0x0B90, 22882 },
+ { 0x0B92, 22873 },
+ { 0x0B93, 22915 },
+ { 0x0B94, 22885 },
+ { 0x0B95, 22903 },
+ { 0x0B99, 22942 },
+ { 0x0B9A, 22888 },
+ { 0x0B9C, 22900 },
+ { 0x0B9E, 22948 },
+ { 0x0B9F, 22960 },
+ { 0x0BA3, 22945 },
+ { 0x0BA4, 22927 },
+ { 0x0BA8, 22912 },
+ { 0x0BA9, 22966 },
+ { 0x0BAA, 22918 },
+ { 0x0BAE, 22909 },
+ { 0x0BAF, 22936 },
+ { 0x0BB0, 22921 },
+ { 0x0BB1, 22951 },
+ { 0x0BB2, 22906 },
+ { 0x0BB3, 22939 },
+ { 0x0BB4, 22963 },
+ { 0x0BB5, 22933 },
+ { 0x0BB6, 22954 },
+ { 0x0BB7, 22957 },
+ { 0x0BB8, 22924 },
+ { 0x0BB9, 22894 },
+ { 0x0BBE, 22833 },
+ { 0x0BBF, 22821 },
+ { 0x0BC0, 22849 },
+ { 0x0BC1, 22829 },
+ { 0x0BC2, 22857 },
+ { 0x0BC6, 22817 },
+ { 0x0BC7, 22845 },
+ { 0x0BC8, 22837 },
+ { 0x0BCA, 22825 },
+ { 0x0BCB, 22853 },
+ { 0x0BCC, 22841 },
+ { 0x0BCD, 22766 },
+ { 0x0BD0, 22761 },
+ { 0x0BD7, 22757 },
+ { 0x0BE6, 22799 },
+ { 0x0BE7, 22781 },
+ { 0x0BE8, 22787 },
+ { 0x0BE9, 22808 },
+ { 0x0BEA, 22793 },
+ { 0x0BEB, 22790 },
+ { 0x0BEC, 22784 },
+ { 0x0BED, 22805 },
+ { 0x0BEE, 22802 },
+ { 0x0BEF, 22796 },
+ { 0x0BF0, 22977 },
+ { 0x0BF1, 22969 },
+ { 0x0BF2, 22973 },
+ { 0x0BF3, 22763 },
+ { 0x0BF4, 22811 },
+ { 0x0BF5, 22775 },
+ { 0x0BF6, 22778 },
+ { 0x0BF7, 22861 },
+ { 0x0BF8, 22753 },
+ { 0x0BF9, 22814 },
+ { 0x0BFA, 22980 },
+ { 0x0C01, 37149 },
+ { 0x0C02, 37143 },
+ { 0x0C03, 37140 },
+ { 0x0C05, 37249 },
+ { 0x0C06, 37264 },
+ { 0x0C07, 37255 },
+ { 0x0C08, 37291 },
+ { 0x0C09, 37261 },
+ { 0x0C0A, 37324 },
+ { 0x0C0B, 37400 },
+ { 0x0C0C, 37396 },
+ { 0x0C0E, 37252 },
+ { 0x0C0F, 37282 },
+ { 0x0C10, 37267 },
+ { 0x0C12, 37258 },
+ { 0x0C13, 37309 },
+ { 0x0C14, 37270 },
+ { 0x0C15, 37297 },
+ { 0x0C16, 37354 },
+ { 0x0C17, 37285 },
+ { 0x0C18, 37348 },
+ { 0x0C19, 37360 },
+ { 0x0C1A, 37276 },
+ { 0x0C1B, 37336 },
+ { 0x0C1C, 37294 },
+ { 0x0C1D, 37351 },
+ { 0x0C1E, 37366 },
+ { 0x0C1F, 37387 },
+ { 0x0C20, 37393 },
+ { 0x0C21, 37339 },
+ { 0x0C22, 37390 },
+ { 0x0C23, 37363 },
+ { 0x0C24, 37321 },
+ { 0x0C25, 37381 },
+ { 0x0C26, 37279 },
+ { 0x0C27, 37342 },
+ { 0x0C28, 37306 },
+ { 0x0C2A, 37312 },
+ { 0x0C2B, 37369 },
+ { 0x0C2C, 37273 },
+ { 0x0C2D, 37333 },
+ { 0x0C2E, 37303 },
+ { 0x0C2F, 37330 },
+ { 0x0C30, 37315 },
+ { 0x0C31, 37372 },
+ { 0x0C32, 37300 },
+ { 0x0C33, 37357 },
+ { 0x0C35, 37327 },
+ { 0x0C36, 37375 },
+ { 0x0C37, 37378 },
+ { 0x0C38, 37318 },
+ { 0x0C39, 37288 },
+ { 0x0C3D, 37146 },
+ { 0x0C3E, 37198 },
+ { 0x0C3F, 37186 },
+ { 0x0C40, 37214 },
+ { 0x0C41, 37194 },
+ { 0x0C42, 37222 },
+ { 0x0C43, 37231 },
+ { 0x0C44, 37241 },
+ { 0x0C46, 37182 },
+ { 0x0C47, 37210 },
+ { 0x0C48, 37202 },
+ { 0x0C4A, 37190 },
+ { 0x0C4B, 37218 },
+ { 0x0C4C, 37206 },
+ { 0x0C4D, 37137 },
+ { 0x0C55, 37246 },
+ { 0x0C56, 37130 },
+ { 0x0C58, 37384 },
+ { 0x0C59, 37345 },
+ { 0x0C60, 37408 },
+ { 0x0C61, 37404 },
+ { 0x0C62, 37226 },
+ { 0x0C63, 37236 },
+ { 0x0C66, 37170 },
+ { 0x0C67, 37152 },
+ { 0x0C68, 37158 },
+ { 0x0C69, 37179 },
+ { 0x0C6A, 37164 },
+ { 0x0C6B, 37161 },
+ { 0x0C6C, 37155 },
+ { 0x0C6D, 37176 },
+ { 0x0C6E, 37173 },
+ { 0x0C6F, 37167 },
+ { 0x0C78, 37448 },
+ { 0x0C79, 37412 },
+ { 0x0C7A, 37430 },
+ { 0x0C7B, 37457 },
+ { 0x0C7C, 37421 },
+ { 0x0C7D, 37439 },
+ { 0x0C7E, 37466 },
+ { 0x0C7F, 37134 },
+ { 0x0C82, 40655 },
+ { 0x0C83, 40652 },
+ { 0x0C85, 40764 },
+ { 0x0C86, 40779 },
+ { 0x0C87, 40770 },
+ { 0x0C88, 40809 },
+ { 0x0C89, 40776 },
+ { 0x0C8A, 40842 },
+ { 0x0C8B, 40912 },
+ { 0x0C8C, 40908 },
+ { 0x0C8E, 40767 },
+ { 0x0C8F, 40797 },
+ { 0x0C90, 40782 },
+ { 0x0C92, 40773 },
+ { 0x0C93, 40827 },
+ { 0x0C94, 40785 },
+ { 0x0C95, 40815 },
+ { 0x0C96, 40869 },
+ { 0x0C97, 40803 },
+ { 0x0C98, 40863 },
+ { 0x0C99, 40875 },
+ { 0x0C9A, 40791 },
+ { 0x0C9B, 40854 },
+ { 0x0C9C, 40812 },
+ { 0x0C9D, 40866 },
+ { 0x0C9E, 40881 },
+ { 0x0C9F, 40899 },
+ { 0x0CA0, 40905 },
+ { 0x0CA1, 40857 },
+ { 0x0CA2, 40902 },
+ { 0x0CA3, 40878 },
+ { 0x0CA4, 40839 },
+ { 0x0CA5, 40896 },
+ { 0x0CA6, 40794 },
+ { 0x0CA7, 40860 },
+ { 0x0CA8, 40824 },
+ { 0x0CAA, 40830 },
+ { 0x0CAB, 40884 },
+ { 0x0CAC, 40788 },
+ { 0x0CAD, 40851 },
+ { 0x0CAE, 40821 },
+ { 0x0CAF, 40848 },
+ { 0x0CB0, 40833 },
+ { 0x0CB1, 40887 },
+ { 0x0CB2, 40818 },
+ { 0x0CB3, 40872 },
+ { 0x0CB5, 40845 },
+ { 0x0CB6, 40890 },
+ { 0x0CB7, 40893 },
+ { 0x0CB8, 40836 },
+ { 0x0CB9, 40806 },
+ { 0x0CBC, 40646 },
+ { 0x0CBD, 40658 },
+ { 0x0CBE, 40713 },
+ { 0x0CBF, 40701 },
+ { 0x0CC0, 40729 },
+ { 0x0CC1, 40709 },
+ { 0x0CC2, 40737 },
+ { 0x0CC3, 40746 },
+ { 0x0CC4, 40756 },
+ { 0x0CC6, 40697 },
+ { 0x0CC7, 40725 },
+ { 0x0CC8, 40717 },
+ { 0x0CCA, 40705 },
+ { 0x0CCB, 40733 },
+ { 0x0CCC, 40721 },
+ { 0x0CCD, 40649 },
+ { 0x0CD5, 40761 },
+ { 0x0CD6, 40642 },
+ { 0x0CDE, 40800 },
+ { 0x0CE0, 40920 },
+ { 0x0CE1, 40916 },
+ { 0x0CE2, 40741 },
+ { 0x0CE3, 40751 },
+ { 0x0CE6, 40685 },
+ { 0x0CE7, 40667 },
+ { 0x0CE8, 40673 },
+ { 0x0CE9, 40694 },
+ { 0x0CEA, 40679 },
+ { 0x0CEB, 40676 },
+ { 0x0CEC, 40670 },
+ { 0x0CED, 40691 },
+ { 0x0CEE, 40688 },
+ { 0x0CEF, 40682 },
+ { 0x0CF1, 40661 },
+ { 0x0CF2, 40664 },
+ { 0x0D02, 64805 },
+ { 0x0D03, 64802 },
+ { 0x0D05, 64905 },
+ { 0x0D06, 64920 },
+ { 0x0D07, 64911 },
+ { 0x0D08, 64947 },
+ { 0x0D09, 64917 },
+ { 0x0D0A, 64980 },
+ { 0x0D0B, 65077 },
+ { 0x0D0C, 65073 },
+ { 0x0D0E, 64908 },
+ { 0x0D0F, 64938 },
+ { 0x0D10, 64923 },
+ { 0x0D12, 64914 },
+ { 0x0D13, 64965 },
+ { 0x0D14, 64926 },
+ { 0x0D15, 64953 },
+ { 0x0D16, 65007 },
+ { 0x0D17, 64941 },
+ { 0x0D18, 65001 },
+ { 0x0D19, 65013 },
+ { 0x0D1A, 64932 },
+ { 0x0D1B, 64992 },
+ { 0x0D1C, 64950 },
+ { 0x0D1D, 65004 },
+ { 0x0D1E, 65019 },
+ { 0x0D1F, 65037 },
+ { 0x0D20, 65046 },
+ { 0x0D21, 64995 },
+ { 0x0D22, 65040 },
+ { 0x0D23, 65016 },
+ { 0x0D24, 64977 },
+ { 0x0D25, 65034 },
+ { 0x0D26, 64935 },
+ { 0x0D27, 64998 },
+ { 0x0D28, 64962 },
+ { 0x0D2A, 64968 },
+ { 0x0D2B, 65022 },
+ { 0x0D2C, 64929 },
+ { 0x0D2D, 64989 },
+ { 0x0D2E, 64959 },
+ { 0x0D2F, 64986 },
+ { 0x0D30, 64971 },
+ { 0x0D31, 65025 },
+ { 0x0D32, 64956 },
+ { 0x0D33, 65010 },
+ { 0x0D34, 65043 },
+ { 0x0D35, 64983 },
+ { 0x0D36, 65028 },
+ { 0x0D37, 65031 },
+ { 0x0D38, 64974 },
+ { 0x0D39, 64944 },
+ { 0x0D3D, 64808 },
+ { 0x0D3E, 64857 },
+ { 0x0D3F, 64845 },
+ { 0x0D40, 64873 },
+ { 0x0D41, 64853 },
+ { 0x0D42, 64881 },
+ { 0x0D43, 64890 },
+ { 0x0D44, 64900 },
+ { 0x0D46, 64841 },
+ { 0x0D47, 64869 },
+ { 0x0D48, 64861 },
+ { 0x0D4A, 64849 },
+ { 0x0D4B, 64877 },
+ { 0x0D4C, 64865 },
+ { 0x0D4D, 64799 },
+ { 0x0D57, 64792 },
+ { 0x0D60, 65085 },
+ { 0x0D61, 65081 },
+ { 0x0D62, 64885 },
+ { 0x0D63, 64895 },
+ { 0x0D66, 64829 },
+ { 0x0D67, 64811 },
+ { 0x0D68, 64817 },
+ { 0x0D69, 64838 },
+ { 0x0D6A, 64823 },
+ { 0x0D6B, 64820 },
+ { 0x0D6C, 64814 },
+ { 0x0D6D, 64835 },
+ { 0x0D6E, 64832 },
+ { 0x0D6F, 64826 },
+ { 0x0D70, 65097 },
+ { 0x0D71, 65089 },
+ { 0x0D72, 65093 },
+ { 0x0D73, 65104 },
+ { 0x0D74, 65100 },
+ { 0x0D75, 65108 },
+ { 0x0D79, 64796 },
+ { 0x0D7A, 65065 },
+ { 0x0D7B, 65057 },
+ { 0x0D7C, 65069 },
+ { 0x0D7D, 65053 },
+ { 0x0D7E, 65061 },
+ { 0x0D7F, 65049 },
+ { 0x0D82, 43201 },
+ { 0x0D83, 43198 },
+ { 0x0D85, 43293 },
+ { 0x0D86, 43308 },
+ { 0x0D87, 43311 },
+ { 0x0D88, 43395 },
+ { 0x0D89, 43299 },
+ { 0x0D8A, 43341 },
+ { 0x0D8B, 43305 },
+ { 0x0D8C, 43386 },
+ { 0x0D8D, 43401 },
+ { 0x0D8E, 43407 },
+ { 0x0D8F, 43398 },
+ { 0x0D90, 43404 },
+ { 0x0D91, 43296 },
+ { 0x0D92, 43332 },
+ { 0x0D93, 43314 },
+ { 0x0D94, 43302 },
+ { 0x0D95, 43351 },
+ { 0x0D96, 43317 },
+ { 0x0D9A, 43442 },
+ { 0x0D9B, 43482 },
+ { 0x0D9C, 43434 },
+ { 0x0D9D, 43474 },
+ { 0x0D9E, 43344 },
+ { 0x0D9F, 43361 },
+ { 0x0DA0, 43426 },
+ { 0x0DA1, 43466 },
+ { 0x0DA2, 43438 },
+ { 0x0DA3, 43478 },
+ { 0x0DA4, 43382 },
+ { 0x0DA5, 43377 },
+ { 0x0DA6, 43365 },
+ { 0x0DA7, 43458 },
+ { 0x0DA8, 43498 },
+ { 0x0DA9, 43454 },
+ { 0x0DAA, 43494 },
+ { 0x0DAB, 43414 },
+ { 0x0DAC, 43369 },
+ { 0x0DAD, 43450 },
+ { 0x0DAE, 43490 },
+ { 0x0DAF, 43430 },
+ { 0x0DB0, 43470 },
+ { 0x0DB1, 43324 },
+ { 0x0DB3, 43357 },
+ { 0x0DB4, 43446 },
+ { 0x0DB5, 43486 },
+ { 0x0DB6, 43422 },
+ { 0x0DB7, 43462 },
+ { 0x0DB8, 43348 },
+ { 0x0DB9, 43289 },
+ { 0x0DBA, 43392 },
+ { 0x0DBB, 43354 },
+ { 0x0DBD, 43320 },
+ { 0x0DC0, 43389 },
+ { 0x0DC1, 43373 },
+ { 0x0DC2, 43418 },
+ { 0x0DC3, 43328 },
+ { 0x0DC4, 43338 },
+ { 0x0DC5, 43410 },
+ { 0x0DC6, 43335 },
+ { 0x0DCA, 43195 },
+ { 0x0DCF, 43277 },
+ { 0x0DD0, 43244 },
+ { 0x0DD1, 43219 },
+ { 0x0DD2, 43234 },
+ { 0x0DD3, 43209 },
+ { 0x0DD4, 43239 },
+ { 0x0DD6, 43214 },
+ { 0x0DD8, 43285 },
+ { 0x0DD9, 43254 },
+ { 0x0DDA, 43204 },
+ { 0x0DDB, 43249 },
+ { 0x0DDC, 43265 },
+ { 0x0DDD, 43258 },
+ { 0x0DDE, 43271 },
+ { 0x0DDF, 43281 },
+ { 0x0DF2, 43229 },
+ { 0x0DF3, 43224 },
+ { 0x0DF4, 43502 },
+ { 0x0E01, 9790 },
+ { 0x0E02, 9880 },
+ { 0x0E03, 9888 },
+ { 0x0E04, 9892 },
+ { 0x0E05, 9884 },
+ { 0x0E06, 9896 },
+ { 0x0E07, 9920 },
+ { 0x0E08, 9864 },
+ { 0x0E09, 9876 },
+ { 0x0E0A, 9872 },
+ { 0x0E0B, 9828 },
+ { 0x0E0C, 9868 },
+ { 0x0E0D, 9860 },
+ { 0x0E0E, 9770 },
+ { 0x0E0F, 9848 },
+ { 0x0E10, 9936 },
+ { 0x0E11, 9956 },
+ { 0x0E12, 9952 },
+ { 0x0E13, 9813 },
+ { 0x0E14, 9766 },
+ { 0x0E15, 9844 },
+ { 0x0E16, 9944 },
+ { 0x0E17, 9948 },
+ { 0x0E18, 9940 },
+ { 0x0E19, 9809 },
+ { 0x0E1A, 9762 },
+ { 0x0E1B, 9817 },
+ { 0x0E1C, 9928 },
+ { 0x0E1D, 9774 },
+ { 0x0E1E, 9924 },
+ { 0x0E1F, 9778 },
+ { 0x0E20, 9932 },
+ { 0x0E21, 9805 },
+ { 0x0E22, 9856 },
+ { 0x0E23, 9821 },
+ { 0x0E24, 9825 },
+ { 0x0E25, 9794 },
+ { 0x0E26, 9802 },
+ { 0x0E27, 9852 },
+ { 0x0E28, 9840 },
+ { 0x0E29, 9836 },
+ { 0x0E2A, 9832 },
+ { 0x0E2B, 9782 },
+ { 0x0E2C, 9798 },
+ { 0x0E2D, 9758 },
+ { 0x0E2E, 9786 },
+ { 0x0E2F, 10039 },
+ { 0x0E30, 9960 },
+ { 0x0E31, 9916 },
+ { 0x0E32, 9980 },
+ { 0x0E33, 9998 },
+ { 0x0E34, 9968 },
+ { 0x0E35, 10002 },
+ { 0x0E36, 10006 },
+ { 0x0E37, 10014 },
+ { 0x0E38, 9976 },
+ { 0x0E39, 10010 },
+ { 0x0E3A, 10024 },
+ { 0x0E3F, 9754 },
+ { 0x0E40, 9964 },
+ { 0x0E41, 9984 },
+ { 0x0E42, 9972 },
+ { 0x0E43, 9988 },
+ { 0x0E44, 9993 },
+ { 0x0E45, 10045 },
+ { 0x0E46, 10027 },
+ { 0x0E47, 10036 },
+ { 0x0E48, 9900 },
+ { 0x0E49, 9904 },
+ { 0x0E4A, 9908 },
+ { 0x0E4B, 9912 },
+ { 0x0E4C, 10048 },
+ { 0x0E4D, 10030 },
+ { 0x0E4E, 10033 },
+ { 0x0E4F, 10021 },
+ { 0x0E50, 9742 },
+ { 0x0E51, 9724 },
+ { 0x0E52, 9730 },
+ { 0x0E53, 9751 },
+ { 0x0E54, 9736 },
+ { 0x0E55, 9733 },
+ { 0x0E56, 9727 },
+ { 0x0E57, 9748 },
+ { 0x0E58, 9745 },
+ { 0x0E59, 9739 },
+ { 0x0E5A, 10042 },
+ { 0x0E5B, 10018 },
+ { 0x0E81, 5948 },
+ { 0x0E82, 5989 },
+ { 0x0E84, 5985 },
+ { 0x0E87, 5993 },
+ { 0x0E88, 5926 },
+ { 0x0E8A, 5968 },
+ { 0x0E8D, 5996 },
+ { 0x0E94, 5929 },
+ { 0x0E95, 5976 },
+ { 0x0E96, 6011 },
+ { 0x0E97, 6007 },
+ { 0x0E99, 5962 },
+ { 0x0E9A, 5923 },
+ { 0x0E9B, 5965 },
+ { 0x0E9C, 6003 },
+ { 0x0E9D, 5932 },
+ { 0x0E9E, 5999 },
+ { 0x0E9F, 5936 },
+ { 0x0EA1, 5959 },
+ { 0x0EA2, 5982 },
+ { 0x0EA3, 5951 },
+ { 0x0EA5, 5955 },
+ { 0x0EA7, 5979 },
+ { 0x0EAA, 5972 },
+ { 0x0EAB, 5944 },
+ { 0x0EAD, 5920 },
+ { 0x0EAE, 5940 },
+ { 0x0EAF, 6015 },
+ { 0x0EB0, 5854 },
+ { 0x0EB1, 5910 },
+ { 0x0EB2, 5878 },
+ { 0x0EB3, 5886 },
+ { 0x0EB4, 5862 },
+ { 0x0EB5, 5898 },
+ { 0x0EB6, 5874 },
+ { 0x0EB7, 5906 },
+ { 0x0EB8, 5870 },
+ { 0x0EB9, 5902 },
+ { 0x0EBB, 5915 },
+ { 0x0EBC, 6019 },
+ { 0x0EBD, 6023 },
+ { 0x0EC0, 5858 },
+ { 0x0EC1, 5894 },
+ { 0x0EC2, 5866 },
+ { 0x0EC3, 5890 },
+ { 0x0EC4, 5882 },
+ { 0x0EC6, 5805 },
+ { 0x0EC8, 5808 },
+ { 0x0EC9, 5816 },
+ { 0x0ECA, 5812 },
+ { 0x0ECB, 5820 },
+ { 0x0ECC, 6027 },
+ { 0x0ECD, 6017 },
+ { 0x0ED0, 5842 },
+ { 0x0ED1, 5824 },
+ { 0x0ED2, 5830 },
+ { 0x0ED3, 5851 },
+ { 0x0ED4, 5836 },
+ { 0x0ED5, 5833 },
+ { 0x0ED6, 5827 },
+ { 0x0ED7, 5848 },
+ { 0x0ED8, 5845 },
+ { 0x0ED9, 5839 },
+ { 0x0EDC, 5802 },
+ { 0x0EDD, 5799 },
+ { 0x0F00, 44295 },
+ { 0x0F01, 43729 },
+ { 0x0F02, 43720 },
+ { 0x0F03, 43711 },
+ { 0x0F04, 43850 },
+ { 0x0F05, 43831 },
+ { 0x0F06, 43789 },
+ { 0x0F07, 43698 },
+ { 0x0F08, 43820 },
+ { 0x0F09, 43784 },
+ { 0x0F0A, 43705 },
+ { 0x0F0B, 43871 },
+ { 0x0F0C, 43866 },
+ { 0x0F0D, 43770 },
+ { 0x0F0E, 43752 },
+ { 0x0F0F, 43824 },
+ { 0x0F10, 43760 },
+ { 0x0F11, 43688 },
+ { 0x0F12, 43765 },
+ { 0x0F13, 43797 },
+ { 0x0F14, 43736 },
+ { 0x0F15, 44285 },
+ { 0x0F16, 44290 },
+ { 0x0F17, 44477 },
+ { 0x0F18, 44489 },
+ { 0x0F19, 44484 },
+ { 0x0F1A, 43937 },
+ { 0x0F1B, 43953 },
+ { 0x0F1C, 43942 },
+ { 0x0F1D, 43916 },
+ { 0x0F1E, 43932 },
+ { 0x0F1F, 43947 },
+ { 0x0F20, 44030 },
+ { 0x0F21, 43972 },
+ { 0x0F22, 43978 },
+ { 0x0F23, 44039 },
+ { 0x0F24, 43984 },
+ { 0x0F25, 43981 },
+ { 0x0F26, 43975 },
+ { 0x0F27, 44036 },
+ { 0x0F28, 44033 },
+ { 0x0F29, 44027 },
+ { 0x0F2A, 43987 },
+ { 0x0F2B, 43995 },
+ { 0x0F2C, 44023 },
+ { 0x0F2D, 44003 },
+ { 0x0F2E, 43999 },
+ { 0x0F2F, 43991 },
+ { 0x0F30, 44019 },
+ { 0x0F31, 44015 },
+ { 0x0F32, 44007 },
+ { 0x0F33, 44011 },
+ { 0x0F34, 43773 },
+ { 0x0F35, 43740 },
+ { 0x0F36, 43805 },
+ { 0x0F37, 43746 },
+ { 0x0F38, 43674 },
+ { 0x0F39, 43694 },
+ { 0x0F3A, 43683 },
+ { 0x0F3B, 43678 },
+ { 0x0F3C, 43669 },
+ { 0x0F3D, 43664 },
+ { 0x0F3E, 43908 },
+ { 0x0F3F, 43894 },
+ { 0x0F40, 44132 },
+ { 0x0F41, 44183 },
+ { 0x0F42, 44123 },
+ { 0x0F43, 44180 },
+ { 0x0F44, 44189 },
+ { 0x0F45, 44117 },
+ { 0x0F46, 44168 },
+ { 0x0F47, 44129 },
+ { 0x0F49, 44195 },
+ { 0x0F4A, 44216 },
+ { 0x0F4B, 44234 },
+ { 0x0F4C, 44171 },
+ { 0x0F4D, 44222 },
+ { 0x0F4E, 44192 },
+ { 0x0F4F, 44153 },
+ { 0x0F50, 44210 },
+ { 0x0F51, 44120 },
+ { 0x0F52, 44174 },
+ { 0x0F53, 44141 },
+ { 0x0F54, 44144 },
+ { 0x0F55, 44198 },
+ { 0x0F56, 44114 },
+ { 0x0F57, 44165 },
+ { 0x0F58, 44138 },
+ { 0x0F59, 44213 },
+ { 0x0F5A, 44231 },
+ { 0x0F5B, 44177 },
+ { 0x0F5C, 44225 },
+ { 0x0F5D, 44156 },
+ { 0x0F5E, 44219 },
+ { 0x0F5F, 44162 },
+ { 0x0F60, 44111 },
+ { 0x0F61, 44159 },
+ { 0x0F62, 44147 },
+ { 0x0F63, 44135 },
+ { 0x0F64, 44204 },
+ { 0x0F65, 44207 },
+ { 0x0F66, 44150 },
+ { 0x0F67, 44126 },
+ { 0x0F68, 44108 },
+ { 0x0F69, 44228 },
+ { 0x0F6A, 44237 },
+ { 0x0F6B, 44186 },
+ { 0x0F6C, 44201 },
+ { 0x0F71, 44058 },
+ { 0x0F72, 44046 },
+ { 0x0F73, 44066 },
+ { 0x0F74, 44054 },
+ { 0x0F75, 44074 },
+ { 0x0F76, 44083 },
+ { 0x0F77, 44093 },
+ { 0x0F78, 44078 },
+ { 0x0F79, 44088 },
+ { 0x0F7A, 44042 },
+ { 0x0F7B, 44062 },
+ { 0x0F7C, 44050 },
+ { 0x0F7D, 44070 },
+ { 0x0F7E, 43958 },
+ { 0x0F7F, 43964 },
+ { 0x0F80, 44098 },
+ { 0x0F81, 44103 },
+ { 0x0F82, 43898 },
+ { 0x0F83, 43904 },
+ { 0x0F84, 43847 },
+ { 0x0F85, 43828 },
+ { 0x0F86, 43890 },
+ { 0x0F87, 43968 },
+ { 0x0F88, 43885 },
+ { 0x0F89, 43912 },
+ { 0x0F8A, 43875 },
+ { 0x0F8B, 43880 },
+ { 0x0F90, 44330 },
+ { 0x0F91, 44398 },
+ { 0x0F92, 44318 },
+ { 0x0F93, 44394 },
+ { 0x0F94, 44402 },
+ { 0x0F95, 44310 },
+ { 0x0F96, 44378 },
+ { 0x0F97, 44326 },
+ { 0x0F99, 44410 },
+ { 0x0F9A, 44434 },
+ { 0x0F9B, 44458 },
+ { 0x0F9C, 44382 },
+ { 0x0F9D, 44442 },
+ { 0x0F9E, 44406 },
+ { 0x0F9F, 44358 },
+ { 0x0FA0, 44426 },
+ { 0x0FA1, 44314 },
+ { 0x0FA2, 44386 },
+ { 0x0FA3, 44342 },
+ { 0x0FA4, 44346 },
+ { 0x0FA5, 44414 },
+ { 0x0FA6, 44306 },
+ { 0x0FA7, 44374 },
+ { 0x0FA8, 44338 },
+ { 0x0FA9, 44430 },
+ { 0x0FAA, 44454 },
+ { 0x0FAB, 44390 },
+ { 0x0FAC, 44446 },
+ { 0x0FAD, 44362 },
+ { 0x0FAE, 44438 },
+ { 0x0FAF, 44370 },
+ { 0x0FB0, 44302 },
+ { 0x0FB1, 44366 },
+ { 0x0FB2, 44350 },
+ { 0x0FB3, 44334 },
+ { 0x0FB4, 44418 },
+ { 0x0FB5, 44422 },
+ { 0x0FB6, 44354 },
+ { 0x0FB7, 44322 },
+ { 0x0FB8, 44298 },
+ { 0x0FB9, 44450 },
+ { 0x0FBA, 44467 },
+ { 0x0FBB, 44472 },
+ { 0x0FBC, 44462 },
+ { 0x0FBE, 43653 },
+ { 0x0FBF, 43657 },
+ { 0x0FC0, 44504 },
+ { 0x0FC1, 44509 },
+ { 0x0FC2, 44494 },
+ { 0x0FC3, 44499 },
+ { 0x0FC4, 44273 },
+ { 0x0FC5, 44263 },
+ { 0x0FC6, 44281 },
+ { 0x0FC7, 44267 },
+ { 0x0FC8, 44277 },
+ { 0x0FC9, 44241 },
+ { 0x0FCA, 44257 },
+ { 0x0FCB, 44251 },
+ { 0x0FCC, 44245 },
+ { 0x0FCE, 43926 },
+ { 0x0FCF, 43921 },
+ { 0x0FD0, 43777 },
+ { 0x0FD1, 43813 },
+ { 0x0FD2, 43756 },
+ { 0x0FD3, 43857 },
+ { 0x0FD4, 43838 },
+ { 0x1000, 42482 },
+ { 0x1001, 42533 },
+ { 0x1002, 42470 },
+ { 0x1003, 42527 },
+ { 0x1004, 42559 },
+ { 0x1005, 42464 },
+ { 0x1006, 42518 },
+ { 0x1007, 42479 },
+ { 0x1008, 42530 },
+ { 0x1009, 42565 },
+ { 0x100A, 42586 },
+ { 0x100B, 42580 },
+ { 0x100C, 42650 },
+ { 0x100D, 42521 },
+ { 0x100E, 42583 },
+ { 0x100F, 42562 },
+ { 0x1010, 42503 },
+ { 0x1011, 42577 },
+ { 0x1012, 42467 },
+ { 0x1013, 42524 },
+ { 0x1014, 42491 },
+ { 0x1015, 42494 },
+ { 0x1016, 42568 },
+ { 0x1017, 42461 },
+ { 0x1018, 42515 },
+ { 0x1019, 42488 },
+ { 0x101A, 42512 },
+ { 0x101B, 42497 },
+ { 0x101C, 42485 },
+ { 0x101D, 42509 },
+ { 0x101E, 42500 },
+ { 0x101F, 42473 },
+ { 0x1020, 42536 },
+ { 0x1021, 42443 },
+ { 0x1022, 42594 },
+ { 0x1023, 42449 },
+ { 0x1024, 42476 },
+ { 0x1025, 42455 },
+ { 0x1026, 42506 },
+ { 0x1027, 42446 },
+ { 0x1028, 42539 },
+ { 0x1029, 42452 },
+ { 0x102A, 42458 },
+ { 0x102B, 42389 },
+ { 0x102C, 42329 },
+ { 0x102D, 42321 },
+ { 0x102E, 42337 },
+ { 0x102F, 42325 },
+ { 0x1030, 42341 },
+ { 0x1031, 42312 },
+ { 0x1032, 42333 },
+ { 0x1033, 42350 },
+ { 0x1034, 42345 },
+ { 0x1035, 42316 },
+ { 0x1036, 42266 },
+ { 0x1037, 42179 },
+ { 0x1038, 42233 },
+ { 0x1039, 42227 },
+ { 0x103A, 42183 },
+ { 0x103B, 42767 },
+ { 0x103C, 42757 },
+ { 0x103D, 42762 },
+ { 0x103E, 42752 },
+ { 0x103F, 42653 },
+ { 0x1040, 42300 },
+ { 0x1041, 42282 },
+ { 0x1042, 42288 },
+ { 0x1043, 42309 },
+ { 0x1044, 42294 },
+ { 0x1045, 42291 },
+ { 0x1046, 42285 },
+ { 0x1047, 42306 },
+ { 0x1048, 42303 },
+ { 0x1049, 42297 },
+ { 0x104A, 42223 },
+ { 0x104B, 42230 },
+ { 0x104C, 42719 },
+ { 0x104D, 42722 },
+ { 0x104E, 42725 },
+ { 0x104F, 42716 },
+ { 0x1050, 42571 },
+ { 0x1051, 42574 },
+ { 0x1052, 42684 },
+ { 0x1053, 42692 },
+ { 0x1054, 42680 },
+ { 0x1055, 42688 },
+ { 0x1056, 42414 },
+ { 0x1057, 42424 },
+ { 0x1058, 42409 },
+ { 0x1059, 42419 },
+ { 0x105A, 42555 },
+ { 0x105B, 42551 },
+ { 0x105C, 42543 },
+ { 0x105D, 42547 },
+ { 0x105E, 42740 },
+ { 0x105F, 42734 },
+ { 0x1060, 42728 },
+ { 0x1061, 42589 },
+ { 0x1062, 42361 },
+ { 0x1063, 42276 },
+ { 0x1064, 42269 },
+ { 0x1065, 42702 },
+ { 0x1066, 42696 },
+ { 0x1067, 42429 },
+ { 0x1068, 42436 },
+ { 0x1069, 42236 },
+ { 0x106A, 42242 },
+ { 0x106B, 42248 },
+ { 0x106C, 42254 },
+ { 0x106D, 42260 },
+ { 0x106E, 42662 },
+ { 0x106F, 42668 },
+ { 0x1070, 42674 },
+ { 0x1071, 42355 },
+ { 0x1072, 42404 },
+ { 0x1073, 42394 },
+ { 0x1074, 42399 },
+ { 0x1075, 42622 },
+ { 0x1076, 42634 },
+ { 0x1077, 42614 },
+ { 0x1078, 42602 },
+ { 0x1079, 42630 },
+ { 0x107A, 42638 },
+ { 0x107B, 42606 },
+ { 0x107C, 42626 },
+ { 0x107D, 42642 },
+ { 0x107E, 42610 },
+ { 0x107F, 42598 },
+ { 0x1080, 42646 },
+ { 0x1081, 42618 },
+ { 0x1082, 42746 },
+ { 0x1083, 42378 },
+ { 0x1084, 42367 },
+ { 0x1085, 42372 },
+ { 0x1086, 42383 },
+ { 0x1087, 42186 },
+ { 0x1088, 42190 },
+ { 0x1089, 42194 },
+ { 0x108A, 42198 },
+ { 0x108B, 42202 },
+ { 0x108C, 42207 },
+ { 0x108D, 42212 },
+ { 0x108E, 42657 },
+ { 0x108F, 42218 },
+ { 0x1090, 42163 },
+ { 0x1091, 42139 },
+ { 0x1092, 42147 },
+ { 0x1093, 42175 },
+ { 0x1094, 42155 },
+ { 0x1095, 42151 },
+ { 0x1096, 42143 },
+ { 0x1097, 42171 },
+ { 0x1098, 42167 },
+ { 0x1099, 42159 },
+ { 0x109E, 42708 },
+ { 0x109F, 42712 },
+ { 0x10A0, 52068 },
+ { 0x10A1, 52096 },
+ { 0x10A2, 52112 },
+ { 0x10A3, 52108 },
+ { 0x10A4, 52072 },
+ { 0x10A5, 52176 },
+ { 0x10A6, 52184 },
+ { 0x10A7, 52168 },
+ { 0x10A8, 52080 },
+ { 0x10A9, 52136 },
+ { 0x10AA, 52140 },
+ { 0x10AB, 52144 },
+ { 0x10AC, 52148 },
+ { 0x10AD, 52084 },
+ { 0x10AE, 52152 },
+ { 0x10AF, 52216 },
+ { 0x10B0, 52160 },
+ { 0x10B1, 52164 },
+ { 0x10B2, 52172 },
+ { 0x10B3, 52088 },
+ { 0x10B4, 52208 },
+ { 0x10B5, 52204 },
+ { 0x10B6, 52196 },
+ { 0x10B7, 52156 },
+ { 0x10B8, 52212 },
+ { 0x10B9, 52192 },
+ { 0x10BA, 52100 },
+ { 0x10BB, 52132 },
+ { 0x10BC, 52104 },
+ { 0x10BD, 52188 },
+ { 0x10BE, 52180 },
+ { 0x10BF, 52200 },
+ { 0x10C0, 52116 },
+ { 0x10C1, 52076 },
+ { 0x10C2, 52124 },
+ { 0x10C3, 52092 },
+ { 0x10C4, 52120 },
+ { 0x10C5, 52128 },
+ { 0x10D0, 51938 },
+ { 0x10D1, 51968 },
+ { 0x10D2, 51980 },
+ { 0x10D3, 51977 },
+ { 0x10D4, 51941 },
+ { 0x10D5, 52028 },
+ { 0x10D6, 52034 },
+ { 0x10D7, 52022 },
+ { 0x10D8, 51950 },
+ { 0x10D9, 51998 },
+ { 0x10DA, 52001 },
+ { 0x10DB, 52004 },
+ { 0x10DC, 52007 },
+ { 0x10DD, 51953 },
+ { 0x10DE, 52010 },
+ { 0x10DF, 52058 },
+ { 0x10E0, 52016 },
+ { 0x10E1, 52019 },
+ { 0x10E2, 52025 },
+ { 0x10E3, 51956 },
+ { 0x10E4, 52052 },
+ { 0x10E5, 52049 },
+ { 0x10E6, 52043 },
+ { 0x10E7, 52013 },
+ { 0x10E8, 52055 },
+ { 0x10E9, 52040 },
+ { 0x10EA, 51971 },
+ { 0x10EB, 51995 },
+ { 0x10EC, 51974 },
+ { 0x10ED, 52037 },
+ { 0x10EE, 52031 },
+ { 0x10EF, 52046 },
+ { 0x10F0, 51983 },
+ { 0x10F1, 51947 },
+ { 0x10F2, 51989 },
+ { 0x10F3, 51959 },
+ { 0x10F4, 51986 },
+ { 0x10F5, 51992 },
+ { 0x10F6, 51944 },
+ { 0x10F7, 51962 },
+ { 0x10F8, 52061 },
+ { 0x10F9, 52064 },
+ { 0x10FA, 51965 },
+ { 0x10FB, 52220 },
+ { 0x10FC, 54786 },
+ { 0x1100, 32202 },
+ { 0x1101, 32310 },
+ { 0x1102, 32190 },
+ { 0x1103, 32205 },
+ { 0x1104, 32313 },
+ { 0x1105, 32196 },
+ { 0x1106, 32187 },
+ { 0x1107, 32193 },
+ { 0x1108, 32268 },
+ { 0x1109, 32175 },
+ { 0x110A, 32226 },
+ { 0x110B, 32184 },
+ { 0x110C, 32178 },
+ { 0x110D, 32256 },
+ { 0x110E, 32208 },
+ { 0x110F, 32211 },
+ { 0x1110, 32220 },
+ { 0x1111, 32217 },
+ { 0x1112, 32181 },
+ { 0x1113, 32328 },
+ { 0x1114, 32265 },
+ { 0x1115, 32331 },
+ { 0x1116, 32289 },
+ { 0x1117, 32391 },
+ { 0x1118, 32301 },
+ { 0x1119, 32271 },
+ { 0x111A, 32298 },
+ { 0x111B, 32376 },
+ { 0x111C, 32286 },
+ { 0x111D, 32370 },
+ { 0x111E, 32334 },
+ { 0x111F, 32295 },
+ { 0x1120, 32337 },
+ { 0x1121, 32232 },
+ { 0x1122, 32424 },
+ { 0x1123, 32427 },
+ { 0x1124, 32418 },
+ { 0x1125, 32409 },
+ { 0x1126, 32415 },
+ { 0x1127, 32292 },
+ { 0x1128, 32382 },
+ { 0x1129, 32388 },
+ { 0x112A, 32385 },
+ { 0x112B, 32373 },
+ { 0x112C, 32439 },
+ { 0x112D, 32304 },
+ { 0x112E, 32247 },
+ { 0x112F, 32307 },
+ { 0x1130, 32253 },
+ { 0x1131, 32244 },
+ { 0x1132, 32250 },
+ { 0x1133, 32430 },
+ { 0x1134, 32394 },
+ { 0x1135, 32241 },
+ { 0x1136, 32235 },
+ { 0x1137, 32340 },
+ { 0x1138, 32343 },
+ { 0x1139, 32349 },
+ { 0x113A, 32346 },
+ { 0x113B, 32238 },
+ { 0x113C, 32319 },
+ { 0x113D, 32421 },
+ { 0x113E, 32397 },
+ { 0x113F, 32442 },
+ { 0x1140, 32214 },
+ { 0x1141, 32322 },
+ { 0x1142, 32325 },
+ { 0x1143, 32280 },
+ { 0x1144, 32283 },
+ { 0x1145, 32229 },
+ { 0x1146, 32361 },
+ { 0x1147, 32262 },
+ { 0x1148, 32277 },
+ { 0x1149, 32358 },
+ { 0x114A, 32367 },
+ { 0x114B, 32364 },
+ { 0x114C, 32223 },
+ { 0x114D, 32274 },
+ { 0x114E, 32355 },
+ { 0x114F, 32436 },
+ { 0x1150, 32412 },
+ { 0x1151, 32445 },
+ { 0x1152, 32400 },
+ { 0x1153, 32352 },
+ { 0x1154, 32403 },
+ { 0x1155, 32433 },
+ { 0x1156, 32379 },
+ { 0x1157, 32406 },
+ { 0x1158, 32259 },
+ { 0x1159, 32316 },
+ { 0x115F, 32199 },
+ { 0x1160, 32865 },
+ { 0x1161, 32694 },
+ { 0x1162, 32709 },
+ { 0x1163, 32730 },
+ { 0x1164, 32781 },
+ { 0x1165, 32712 },
+ { 0x1166, 32697 },
+ { 0x1167, 32784 },
+ { 0x1168, 32733 },
+ { 0x1169, 32703 },
+ { 0x116A, 32721 },
+ { 0x116B, 32775 },
+ { 0x116C, 32718 },
+ { 0x116D, 32739 },
+ { 0x116E, 32706 },
+ { 0x116F, 32778 },
+ { 0x1170, 32724 },
+ { 0x1171, 32727 },
+ { 0x1172, 32742 },
+ { 0x1173, 32715 },
+ { 0x1174, 32736 },
+ { 0x1175, 32700 },
+ { 0x1176, 32745 },
+ { 0x1177, 32748 },
+ { 0x1178, 32814 },
+ { 0x1179, 32847 },
+ { 0x117A, 32787 },
+ { 0x117B, 32790 },
+ { 0x117C, 32841 },
+ { 0x117D, 32850 },
+ { 0x117E, 32853 },
+ { 0x117F, 32802 },
+ { 0x1180, 32760 },
+ { 0x1181, 32805 },
+ { 0x1182, 32763 },
+ { 0x1183, 32766 },
+ { 0x1184, 32856 },
+ { 0x1185, 32868 },
+ { 0x1186, 32871 },
+ { 0x1187, 32823 },
+ { 0x1188, 32820 },
+ { 0x1189, 32769 },
+ { 0x118A, 32808 },
+ { 0x118B, 32886 },
+ { 0x118C, 32811 },
+ { 0x118D, 32772 },
+ { 0x118E, 32826 },
+ { 0x118F, 32859 },
+ { 0x1190, 32829 },
+ { 0x1191, 32874 },
+ { 0x1192, 32862 },
+ { 0x1193, 32835 },
+ { 0x1194, 32832 },
+ { 0x1195, 32793 },
+ { 0x1196, 32844 },
+ { 0x1197, 32817 },
+ { 0x1198, 32751 },
+ { 0x1199, 32799 },
+ { 0x119A, 32754 },
+ { 0x119B, 32757 },
+ { 0x119C, 32796 },
+ { 0x119D, 32883 },
+ { 0x119E, 32838 },
+ { 0x119F, 32889 },
+ { 0x11A0, 32880 },
+ { 0x11A1, 32877 },
+ { 0x11A2, 32892 },
+ { 0x11A8, 32472 },
+ { 0x11A9, 32577 },
+ { 0x11AA, 32535 },
+ { 0x11AB, 32463 },
+ { 0x11AC, 32547 },
+ { 0x11AD, 32550 },
+ { 0x11AE, 32475 },
+ { 0x11AF, 32469 },
+ { 0x11B0, 32598 },
+ { 0x11B1, 32562 },
+ { 0x11B2, 32568 },
+ { 0x11B3, 32508 },
+ { 0x11B4, 32643 },
+ { 0x11B5, 32640 },
+ { 0x11B6, 32559 },
+ { 0x11B7, 32460 },
+ { 0x11B8, 32466 },
+ { 0x11B9, 32505 },
+ { 0x11BA, 32448 },
+ { 0x11BB, 32496 },
+ { 0x11BC, 32457 },
+ { 0x11BD, 32451 },
+ { 0x11BE, 32478 },
+ { 0x11BF, 32481 },
+ { 0x11C0, 32490 },
+ { 0x11C1, 32487 },
+ { 0x11C2, 32454 },
+ { 0x11C3, 32586 },
+ { 0x11C4, 32682 },
+ { 0x11C5, 32592 },
+ { 0x11C6, 32595 },
+ { 0x11C7, 32502 },
+ { 0x11C8, 32622 },
+ { 0x11C9, 32625 },
+ { 0x11CA, 32646 },
+ { 0x11CB, 32604 },
+ { 0x11CC, 32673 },
+ { 0x11CD, 32565 },
+ { 0x11CE, 32601 },
+ { 0x11CF, 32688 },
+ { 0x11D0, 32520 },
+ { 0x11D1, 32685 },
+ { 0x11D2, 32661 },
+ { 0x11D3, 32664 },
+ { 0x11D4, 32676 },
+ { 0x11D5, 32691 },
+ { 0x11D6, 32658 },
+ { 0x11D7, 32637 },
+ { 0x11D8, 32634 },
+ { 0x11D9, 32679 },
+ { 0x11DA, 32589 },
+ { 0x11DB, 32544 },
+ { 0x11DC, 32541 },
+ { 0x11DD, 32499 },
+ { 0x11DE, 32655 },
+ { 0x11DF, 32619 },
+ { 0x11E0, 32616 },
+ { 0x11E1, 32538 },
+ { 0x11E2, 32610 },
+ { 0x11E3, 32556 },
+ { 0x11E4, 32631 },
+ { 0x11E5, 32553 },
+ { 0x11E6, 32613 },
+ { 0x11E7, 32571 },
+ { 0x11E8, 32574 },
+ { 0x11E9, 32514 },
+ { 0x11EA, 32511 },
+ { 0x11EB, 32484 },
+ { 0x11EC, 32583 },
+ { 0x11ED, 32670 },
+ { 0x11EE, 32517 },
+ { 0x11EF, 32607 },
+ { 0x11F0, 32493 },
+ { 0x11F1, 32649 },
+ { 0x11F2, 32667 },
+ { 0x11F3, 32628 },
+ { 0x11F4, 32652 },
+ { 0x11F5, 32526 },
+ { 0x11F6, 32532 },
+ { 0x11F7, 32523 },
+ { 0x11F8, 32529 },
+ { 0x11F9, 32580 },
+ { 0x1200, 50516 },
+ { 0x1201, 50528 },
+ { 0x1202, 50522 },
+ { 0x1203, 50909 },
+ { 0x1204, 50912 },
+ { 0x1205, 50519 },
+ { 0x1206, 50525 },
+ { 0x1207, 50930 },
+ { 0x1208, 50561 },
+ { 0x1209, 50573 },
+ { 0x120A, 50567 },
+ { 0x120B, 50993 },
+ { 0x120C, 50996 },
+ { 0x120D, 50564 },
+ { 0x120E, 50570 },
+ { 0x120F, 51002 },
+ { 0x1210, 50915 },
+ { 0x1211, 50927 },
+ { 0x1212, 50921 },
+ { 0x1213, 51443 },
+ { 0x1214, 51446 },
+ { 0x1215, 50918 },
+ { 0x1216, 50924 },
+ { 0x1217, 51449 },
+ { 0x1218, 50576 },
+ { 0x1219, 50588 },
+ { 0x121A, 50582 },
+ { 0x121B, 51005 },
+ { 0x121C, 51008 },
+ { 0x121D, 50579 },
+ { 0x121E, 50585 },
+ { 0x121F, 51014 },
+ { 0x1220, 51191 },
+ { 0x1221, 51203 },
+ { 0x1222, 51197 },
+ { 0x1223, 51554 },
+ { 0x1224, 51557 },
+ { 0x1225, 51194 },
+ { 0x1226, 51200 },
+ { 0x1227, 51560 },
+ { 0x1228, 50636 },
+ { 0x1229, 50648 },
+ { 0x122A, 50642 },
+ { 0x122B, 51134 },
+ { 0x122C, 51137 },
+ { 0x122D, 50639 },
+ { 0x122E, 50645 },
+ { 0x122F, 51143 },
+ { 0x1230, 50651 },
+ { 0x1231, 50663 },
+ { 0x1232, 50657 },
+ { 0x1233, 51149 },
+ { 0x1234, 51152 },
+ { 0x1235, 50654 },
+ { 0x1236, 50660 },
+ { 0x1237, 51188 },
+ { 0x1238, 51155 },
+ { 0x1239, 51167 },
+ { 0x123A, 51161 },
+ { 0x123B, 51536 },
+ { 0x123C, 51539 },
+ { 0x123D, 51158 },
+ { 0x123E, 51164 },
+ { 0x123F, 51545 },
+ { 0x1240, 50621 },
+ { 0x1241, 50633 },
+ { 0x1242, 50627 },
+ { 0x1243, 51086 },
+ { 0x1244, 51089 },
+ { 0x1245, 50624 },
+ { 0x1246, 50630 },
+ { 0x1247, 51107 },
+ { 0x1248, 51110 },
+ { 0x124A, 51116 },
+ { 0x124B, 51524 },
+ { 0x124C, 51527 },
+ { 0x124D, 51113 },
+ { 0x1250, 51092 },
+ { 0x1251, 51104 },
+ { 0x1252, 51098 },
+ { 0x1253, 51509 },
+ { 0x1254, 51512 },
+ { 0x1255, 51095 },
+ { 0x1256, 51101 },
+ { 0x1258, 51515 },
+ { 0x125A, 51521 },
+ { 0x125B, 51638 },
+ { 0x125C, 51641 },
+ { 0x125D, 51518 },
+ { 0x1260, 50441 },
+ { 0x1261, 50453 },
+ { 0x1262, 50447 },
+ { 0x1263, 50756 },
+ { 0x1264, 50759 },
+ { 0x1265, 50444 },
+ { 0x1266, 50450 },
+ { 0x1267, 50765 },
+ { 0x1268, 50681 },
+ { 0x1269, 50693 },
+ { 0x126A, 50687 },
+ { 0x126B, 51263 },
+ { 0x126C, 51266 },
+ { 0x126D, 50684 },
+ { 0x126E, 50690 },
+ { 0x126F, 51269 },
+ { 0x1270, 50666 },
+ { 0x1271, 50678 },
+ { 0x1272, 50672 },
+ { 0x1273, 51206 },
+ { 0x1274, 51209 },
+ { 0x1275, 50669 },
+ { 0x1276, 50675 },
+ { 0x1277, 51245 },
+ { 0x1278, 50456 },
+ { 0x1279, 50468 },
+ { 0x127A, 50462 },
+ { 0x127B, 50774 },
+ { 0x127C, 50792 },
+ { 0x127D, 50459 },
+ { 0x127E, 50465 },
+ { 0x127F, 50813 },
+ { 0x1280, 50711 },
+ { 0x1281, 50723 },
+ { 0x1282, 50717 },
+ { 0x1283, 51281 },
+ { 0x1284, 51284 },
+ { 0x1285, 50714 },
+ { 0x1286, 50720 },
+ { 0x1287, 51287 },
+ { 0x1288, 51290 },
+ { 0x128A, 51296 },
+ { 0x128B, 51593 },
+ { 0x128C, 51596 },
+ { 0x128D, 51293 },
+ { 0x1290, 50591 },
+ { 0x1291, 50603 },
+ { 0x1292, 50597 },
+ { 0x1293, 51026 },
+ { 0x1294, 51029 },
+ { 0x1295, 50594 },
+ { 0x1296, 50600 },
+ { 0x1297, 51035 },
+ { 0x1298, 51038 },
+ { 0x1299, 51050 },
+ { 0x129A, 51044 },
+ { 0x129B, 51482 },
+ { 0x129C, 51485 },
+ { 0x129D, 51041 },
+ { 0x129E, 51047 },
+ { 0x129F, 51491 },
+ { 0x12A0, 51644 },
+ { 0x12A1, 51660 },
+ { 0x12A2, 51652 },
+ { 0x12A3, 51664 },
+ { 0x12A4, 51668 },
+ { 0x12A5, 51648 },
+ { 0x12A6, 51656 },
+ { 0x12A7, 51676 },
+ { 0x12A8, 50546 },
+ { 0x12A9, 50558 },
+ { 0x12AA, 50552 },
+ { 0x12AB, 50945 },
+ { 0x12AC, 50948 },
+ { 0x12AD, 50549 },
+ { 0x12AE, 50555 },
+ { 0x12AF, 50951 },
+ { 0x12B0, 50954 },
+ { 0x12B2, 50960 },
+ { 0x12B3, 51452 },
+ { 0x12B4, 51455 },
+ { 0x12B5, 50957 },
+ { 0x12B8, 50963 },
+ { 0x12B9, 50975 },
+ { 0x12BA, 50969 },
+ { 0x12BB, 51458 },
+ { 0x12BC, 51461 },
+ { 0x12BD, 50966 },
+ { 0x12BE, 50972 },
+ { 0x12C0, 51464 },
+ { 0x12C2, 51470 },
+ { 0x12C3, 51632 },
+ { 0x12C4, 51635 },
+ { 0x12C5, 51467 },
+ { 0x12C8, 50696 },
+ { 0x12C9, 50708 },
+ { 0x12CA, 50702 },
+ { 0x12CB, 51272 },
+ { 0x12CC, 51275 },
+ { 0x12CD, 50699 },
+ { 0x12CE, 50705 },
+ { 0x12CF, 51278 },
+ { 0x12D0, 51696 },
+ { 0x12D1, 51712 },
+ { 0x12D2, 51704 },
+ { 0x12D3, 51716 },
+ { 0x12D4, 51720 },
+ { 0x12D5, 51700 },
+ { 0x12D6, 51708 },
+ { 0x12D8, 50741 },
+ { 0x12D9, 50753 },
+ { 0x12DA, 50747 },
+ { 0x12DB, 51323 },
+ { 0x12DC, 51326 },
+ { 0x12DD, 50744 },
+ { 0x12DE, 50750 },
+ { 0x12DF, 51347 },
+ { 0x12E0, 51329 },
+ { 0x12E1, 51341 },
+ { 0x12E2, 51335 },
+ { 0x12E3, 51605 },
+ { 0x12E4, 51608 },
+ { 0x12E5, 51332 },
+ { 0x12E6, 51338 },
+ { 0x12E7, 51611 },
+ { 0x12E8, 50726 },
+ { 0x12E9, 50738 },
+ { 0x12EA, 50732 },
+ { 0x12EB, 51314 },
+ { 0x12EC, 51317 },
+ { 0x12ED, 50729 },
+ { 0x12EE, 50735 },
+ { 0x12EF, 51320 },
+ { 0x12F0, 50471 },
+ { 0x12F1, 50483 },
+ { 0x12F2, 50477 },
+ { 0x12F3, 50816 },
+ { 0x12F4, 50834 },
+ { 0x12F5, 50474 },
+ { 0x12F6, 50480 },
+ { 0x12F7, 50840 },
+ { 0x12F8, 50819 },
+ { 0x12F9, 50831 },
+ { 0x12FA, 50825 },
+ { 0x12FB, 51401 },
+ { 0x12FC, 51404 },
+ { 0x12FD, 50822 },
+ { 0x12FE, 50828 },
+ { 0x12FF, 51410 },
+ { 0x1300, 50531 },
+ { 0x1301, 50543 },
+ { 0x1302, 50537 },
+ { 0x1303, 50933 },
+ { 0x1304, 50936 },
+ { 0x1305, 50534 },
+ { 0x1306, 50540 },
+ { 0x1307, 50942 },
+ { 0x1308, 50501 },
+ { 0x1309, 50513 },
+ { 0x130A, 50507 },
+ { 0x130B, 50861 },
+ { 0x130C, 50864 },
+ { 0x130D, 50504 },
+ { 0x130E, 50510 },
+ { 0x130F, 50882 },
+ { 0x1310, 50885 },
+ { 0x1312, 50891 },
+ { 0x1313, 51431 },
+ { 0x1314, 51434 },
+ { 0x1315, 50888 },
+ { 0x1318, 50867 },
+ { 0x1319, 50879 },
+ { 0x131A, 50873 },
+ { 0x131B, 51416 },
+ { 0x131C, 51419 },
+ { 0x131D, 50870 },
+ { 0x131E, 50876 },
+ { 0x131F, 51626 },
+ { 0x1320, 51212 },
+ { 0x1321, 51224 },
+ { 0x1322, 51218 },
+ { 0x1323, 51563 },
+ { 0x1324, 51566 },
+ { 0x1325, 51215 },
+ { 0x1326, 51221 },
+ { 0x1327, 51572 },
+ { 0x1328, 50795 },
+ { 0x1329, 50807 },
+ { 0x132A, 50801 },
+ { 0x132B, 51389 },
+ { 0x132C, 51392 },
+ { 0x132D, 50798 },
+ { 0x132E, 50804 },
+ { 0x132F, 51398 },
+ { 0x1330, 51059 },
+ { 0x1331, 51071 },
+ { 0x1332, 51065 },
+ { 0x1333, 51494 },
+ { 0x1334, 51497 },
+ { 0x1335, 51062 },
+ { 0x1336, 51068 },
+ { 0x1337, 51503 },
+ { 0x1338, 51230 },
+ { 0x1339, 51242 },
+ { 0x133A, 51236 },
+ { 0x133B, 51575 },
+ { 0x133C, 51578 },
+ { 0x133D, 51233 },
+ { 0x133E, 51239 },
+ { 0x133F, 51581 },
+ { 0x1340, 51248 },
+ { 0x1341, 51260 },
+ { 0x1342, 51254 },
+ { 0x1343, 51584 },
+ { 0x1344, 51587 },
+ { 0x1345, 51251 },
+ { 0x1346, 51257 },
+ { 0x1347, 51590 },
+ { 0x1348, 50486 },
+ { 0x1349, 50498 },
+ { 0x134A, 50492 },
+ { 0x134B, 50843 },
+ { 0x134C, 50846 },
+ { 0x134D, 50489 },
+ { 0x134E, 50495 },
+ { 0x134F, 50849 },
+ { 0x1350, 50606 },
+ { 0x1351, 50618 },
+ { 0x1352, 50612 },
+ { 0x1353, 51053 },
+ { 0x1354, 51056 },
+ { 0x1355, 50609 },
+ { 0x1356, 50615 },
+ { 0x1357, 51077 },
+ { 0x1358, 51146 },
+ { 0x1359, 51023 },
+ { 0x135A, 50858 },
+ { 0x135F, 51724 },
+ { 0x1360, 50435 },
+ { 0x1361, 51733 },
+ { 0x1362, 50323 },
+ { 0x1363, 50328 },
+ { 0x1364, 51731 },
+ { 0x1365, 50326 },
+ { 0x1366, 50432 },
+ { 0x1367, 50438 },
+ { 0x1368, 51728 },
+ { 0x1369, 50330 },
+ { 0x136A, 50336 },
+ { 0x136B, 50354 },
+ { 0x136C, 50342 },
+ { 0x136D, 50339 },
+ { 0x136E, 50333 },
+ { 0x136F, 50351 },
+ { 0x1370, 50348 },
+ { 0x1371, 50345 },
+ { 0x1372, 50398 },
+ { 0x1373, 50423 },
+ { 0x1374, 50420 },
+ { 0x1375, 50408 },
+ { 0x1376, 50405 },
+ { 0x1377, 50411 },
+ { 0x1378, 50429 },
+ { 0x1379, 50414 },
+ { 0x137A, 50417 },
+ { 0x137B, 50426 },
+ { 0x137C, 50401 },
+ { 0x1380, 51688 },
+ { 0x1381, 51020 },
+ { 0x1382, 51479 },
+ { 0x1383, 51017 },
+ { 0x1384, 51680 },
+ { 0x1385, 50771 },
+ { 0x1386, 51365 },
+ { 0x1387, 50768 },
+ { 0x1388, 51684 },
+ { 0x1389, 50855 },
+ { 0x138A, 51413 },
+ { 0x138B, 50852 },
+ { 0x138C, 51692 },
+ { 0x138D, 51083 },
+ { 0x138E, 51506 },
+ { 0x138F, 51080 },
+ { 0x1390, 50382 },
+ { 0x1391, 50361 },
+ { 0x1392, 50390 },
+ { 0x1393, 50377 },
+ { 0x1394, 50365 },
+ { 0x1395, 50373 },
+ { 0x1396, 50386 },
+ { 0x1397, 50369 },
+ { 0x1398, 50394 },
+ { 0x1399, 50357 },
+ { 0x13A0, 48143 },
+ { 0x13A1, 48146 },
+ { 0x13A2, 48149 },
+ { 0x13A3, 48152 },
+ { 0x13A4, 48158 },
+ { 0x13A5, 48161 },
+ { 0x13A6, 48182 },
+ { 0x13A7, 48218 },
+ { 0x13A8, 48185 },
+ { 0x13A9, 48188 },
+ { 0x13AA, 48191 },
+ { 0x13AB, 48194 },
+ { 0x13AC, 48197 },
+ { 0x13AD, 48200 },
+ { 0x13AE, 48203 },
+ { 0x13AF, 48206 },
+ { 0x13B0, 48209 },
+ { 0x13B1, 48212 },
+ { 0x13B2, 48215 },
+ { 0x13B3, 48221 },
+ { 0x13B4, 48224 },
+ { 0x13B5, 48227 },
+ { 0x13B6, 48230 },
+ { 0x13B7, 48233 },
+ { 0x13B8, 48236 },
+ { 0x13B9, 48239 },
+ { 0x13BA, 48242 },
+ { 0x13BB, 48245 },
+ { 0x13BC, 48248 },
+ { 0x13BD, 48251 },
+ { 0x13BE, 48254 },
+ { 0x13BF, 48338 },
+ { 0x13C0, 48341 },
+ { 0x13C1, 48257 },
+ { 0x13C2, 48260 },
+ { 0x13C3, 48263 },
+ { 0x13C4, 48266 },
+ { 0x13C5, 48269 },
+ { 0x13C6, 48344 },
+ { 0x13C7, 48347 },
+ { 0x13C8, 48350 },
+ { 0x13C9, 48353 },
+ { 0x13CA, 48356 },
+ { 0x13CB, 48359 },
+ { 0x13CC, 48272 },
+ { 0x13CD, 48155 },
+ { 0x13CE, 48275 },
+ { 0x13CF, 48278 },
+ { 0x13D0, 48281 },
+ { 0x13D1, 48284 },
+ { 0x13D2, 48287 },
+ { 0x13D3, 48164 },
+ { 0x13D4, 48290 },
+ { 0x13D5, 48167 },
+ { 0x13D6, 48293 },
+ { 0x13D7, 48170 },
+ { 0x13D8, 48296 },
+ { 0x13D9, 48173 },
+ { 0x13DA, 48176 },
+ { 0x13DB, 48179 },
+ { 0x13DC, 48335 },
+ { 0x13DD, 48362 },
+ { 0x13DE, 48365 },
+ { 0x13DF, 48368 },
+ { 0x13E0, 48371 },
+ { 0x13E1, 48374 },
+ { 0x13E2, 48377 },
+ { 0x13E3, 48380 },
+ { 0x13E4, 48383 },
+ { 0x13E5, 48386 },
+ { 0x13E6, 48389 },
+ { 0x13E7, 48392 },
+ { 0x13E8, 48395 },
+ { 0x13E9, 48299 },
+ { 0x13EA, 48302 },
+ { 0x13EB, 48305 },
+ { 0x13EC, 48308 },
+ { 0x13ED, 48311 },
+ { 0x13EE, 48314 },
+ { 0x13EF, 48317 },
+ { 0x13F0, 48320 },
+ { 0x13F1, 48323 },
+ { 0x13F2, 48326 },
+ { 0x13F3, 48329 },
+ { 0x13F4, 48332 },
+ { 0x1401, 45872 },
+ { 0x1402, 46118 },
+ { 0x1403, 45878 },
+ { 0x1404, 45953 },
+ { 0x1405, 45893 },
+ { 0x1406, 46025 },
+ { 0x1407, 46790 },
+ { 0x1408, 46858 },
+ { 0x1409, 46842 },
+ { 0x140A, 45866 },
+ { 0x140B, 45914 },
+ { 0x140C, 46097 },
+ { 0x140D, 47791 },
+ { 0x140E, 46100 },
+ { 0x140F, 47795 },
+ { 0x1410, 46392 },
+ { 0x1411, 47927 },
+ { 0x1412, 46103 },
+ { 0x1413, 47799 },
+ { 0x1414, 46395 },
+ { 0x1415, 47931 },
+ { 0x1416, 47555 },
+ { 0x1417, 46094 },
+ { 0x1418, 47787 },
+ { 0x1419, 46389 },
+ { 0x141A, 47923 },
+ { 0x141B, 47551 },
+ { 0x141C, 45917 },
+ { 0x141D, 46786 },
+ { 0x141E, 47539 },
+ { 0x141F, 46643 },
+ { 0x1420, 46647 },
+ { 0x1421, 46663 },
+ { 0x1422, 46624 },
+ { 0x1423, 46651 },
+ { 0x1424, 46639 },
+ { 0x1425, 46669 },
+ { 0x1426, 46674 },
+ { 0x1427, 46681 },
+ { 0x1428, 46657 },
+ { 0x1429, 46635 },
+ { 0x142A, 46630 },
+ { 0x142B, 45935 },
+ { 0x142C, 45956 },
+ { 0x142D, 46022 },
+ { 0x142E, 45920 },
+ { 0x142F, 46031 },
+ { 0x1430, 46513 },
+ { 0x1431, 46034 },
+ { 0x1432, 46257 },
+ { 0x1433, 46037 },
+ { 0x1434, 46260 },
+ { 0x1435, 46814 },
+ { 0x1436, 47186 },
+ { 0x1437, 46882 },
+ { 0x1438, 46028 },
+ { 0x1439, 46254 },
+ { 0x143A, 46266 },
+ { 0x143B, 47879 },
+ { 0x143C, 46269 },
+ { 0x143D, 47883 },
+ { 0x143E, 46519 },
+ { 0x143F, 48011 },
+ { 0x1440, 46272 },
+ { 0x1441, 47887 },
+ { 0x1442, 46522 },
+ { 0x1443, 48015 },
+ { 0x1444, 46263 },
+ { 0x1445, 47875 },
+ { 0x1446, 46516 },
+ { 0x1447, 48007 },
+ { 0x1448, 46830 },
+ { 0x1449, 45896 },
+ { 0x144A, 47747 },
+ { 0x144B, 46838 },
+ { 0x144C, 46082 },
+ { 0x144D, 46567 },
+ { 0x144E, 46088 },
+ { 0x144F, 46344 },
+ { 0x1450, 46091 },
+ { 0x1451, 46347 },
+ { 0x1452, 46822 },
+ { 0x1453, 47118 },
+ { 0x1454, 46854 },
+ { 0x1455, 46079 },
+ { 0x1456, 46329 },
+ { 0x1457, 46368 },
+ { 0x1458, 47911 },
+ { 0x1459, 46371 },
+ { 0x145A, 47915 },
+ { 0x145B, 46606 },
+ { 0x145C, 48055 },
+ { 0x145D, 46374 },
+ { 0x145E, 47919 },
+ { 0x145F, 46609 },
+ { 0x1460, 48059 },
+ { 0x1461, 46365 },
+ { 0x1462, 47907 },
+ { 0x1463, 46603 },
+ { 0x1464, 48051 },
+ { 0x1465, 47595 },
+ { 0x1466, 45908 },
+ { 0x1467, 46353 },
+ { 0x1468, 46359 },
+ { 0x1469, 46362 },
+ { 0x146A, 46350 },
+ { 0x146B, 45962 },
+ { 0x146C, 46441 },
+ { 0x146D, 45965 },
+ { 0x146E, 46158 },
+ { 0x146F, 45968 },
+ { 0x1470, 46161 },
+ { 0x1471, 46798 },
+ { 0x1472, 45959 },
+ { 0x1473, 46155 },
+ { 0x1474, 46167 },
+ { 0x1475, 47823 },
+ { 0x1476, 46170 },
+ { 0x1477, 47827 },
+ { 0x1478, 46447 },
+ { 0x1479, 47971 },
+ { 0x147A, 46173 },
+ { 0x147B, 47831 },
+ { 0x147C, 46450 },
+ { 0x147D, 47975 },
+ { 0x147E, 46164 },
+ { 0x147F, 47819 },
+ { 0x1480, 46444 },
+ { 0x1481, 47967 },
+ { 0x1482, 47563 },
+ { 0x1483, 45881 },
+ { 0x1484, 45971 },
+ { 0x1485, 48131 },
+ { 0x1486, 48135 },
+ { 0x1487, 48139 },
+ { 0x1488, 48127 },
+ { 0x1489, 45926 },
+ { 0x148A, 46419 },
+ { 0x148B, 45929 },
+ { 0x148C, 46128 },
+ { 0x148D, 45932 },
+ { 0x148E, 46131 },
+ { 0x148F, 46794 },
+ { 0x1490, 45923 },
+ { 0x1491, 46121 },
+ { 0x1492, 46137 },
+ { 0x1493, 47807 },
+ { 0x1494, 46140 },
+ { 0x1495, 47811 },
+ { 0x1496, 46425 },
+ { 0x1497, 47955 },
+ { 0x1498, 46143 },
+ { 0x1499, 47815 },
+ { 0x149A, 46428 },
+ { 0x149B, 47959 },
+ { 0x149C, 46134 },
+ { 0x149D, 47803 },
+ { 0x149E, 46422 },
+ { 0x149F, 47951 },
+ { 0x14A0, 47559 },
+ { 0x14A1, 45869 },
+ { 0x14A2, 46762 },
+ { 0x14A3, 45992 },
+ { 0x14A4, 46474 },
+ { 0x14A5, 45998 },
+ { 0x14A6, 46209 },
+ { 0x14A7, 46001 },
+ { 0x14A8, 46212 },
+ { 0x14A9, 46806 },
+ { 0x14AA, 45989 },
+ { 0x14AB, 46206 },
+ { 0x14AC, 46218 },
+ { 0x14AD, 47855 },
+ { 0x14AE, 46221 },
+ { 0x14AF, 47859 },
+ { 0x14B0, 46480 },
+ { 0x14B1, 47995 },
+ { 0x14B2, 46224 },
+ { 0x14B3, 47863 },
+ { 0x14B4, 46483 },
+ { 0x14B5, 47999 },
+ { 0x14B6, 46215 },
+ { 0x14B7, 47851 },
+ { 0x14B8, 46477 },
+ { 0x14B9, 47991 },
+ { 0x14BA, 47567 },
+ { 0x14BB, 45887 },
+ { 0x14BC, 47743 },
+ { 0x14BD, 45995 },
+ { 0x14BE, 48091 },
+ { 0x14BF, 46734 },
+ { 0x14C0, 46007 },
+ { 0x14C1, 46486 },
+ { 0x14C2, 46016 },
+ { 0x14C3, 46239 },
+ { 0x14C4, 46019 },
+ { 0x14C5, 46245 },
+ { 0x14C6, 46810 },
+ { 0x14C7, 46004 },
+ { 0x14C8, 46227 },
+ { 0x14C9, 46251 },
+ { 0x14CA, 47871 },
+ { 0x14CB, 46248 },
+ { 0x14CC, 47867 },
+ { 0x14CD, 46510 },
+ { 0x14CE, 48003 },
+ { 0x14CF, 47571 },
+ { 0x14D0, 45890 },
+ { 0x14D1, 46958 },
+ { 0x14D2, 46013 },
+ { 0x14D3, 45977 },
+ { 0x14D4, 46453 },
+ { 0x14D5, 45983 },
+ { 0x14D6, 46188 },
+ { 0x14D7, 45986 },
+ { 0x14D8, 46191 },
+ { 0x14D9, 46802 },
+ { 0x14DA, 45974 },
+ { 0x14DB, 46176 },
+ { 0x14DC, 46197 },
+ { 0x14DD, 47839 },
+ { 0x14DE, 46200 },
+ { 0x14DF, 47843 },
+ { 0x14E0, 46468 },
+ { 0x14E1, 47983 },
+ { 0x14E2, 46203 },
+ { 0x14E3, 47847 },
+ { 0x14E4, 46471 },
+ { 0x14E5, 47987 },
+ { 0x14E6, 46194 },
+ { 0x14E7, 47835 },
+ { 0x14E8, 46465 },
+ { 0x14E9, 47979 },
+ { 0x14EA, 45884 },
+ { 0x14EB, 47739 },
+ { 0x14EC, 46710 },
+ { 0x14ED, 46064 },
+ { 0x14EE, 46534 },
+ { 0x14EF, 46070 },
+ { 0x14F0, 46311 },
+ { 0x14F1, 46073 },
+ { 0x14F2, 46314 },
+ { 0x14F3, 46818 },
+ { 0x14F4, 46061 },
+ { 0x14F5, 46296 },
+ { 0x14F6, 46320 },
+ { 0x14F7, 47895 },
+ { 0x14F8, 46323 },
+ { 0x14F9, 47899 },
+ { 0x14FA, 46561 },
+ { 0x14FB, 48043 },
+ { 0x14FC, 46326 },
+ { 0x14FD, 47903 },
+ { 0x14FE, 46564 },
+ { 0x14FF, 48047 },
+ { 0x1500, 46317 },
+ { 0x1501, 47891 },
+ { 0x1502, 46558 },
+ { 0x1503, 48039 },
+ { 0x1504, 47591 },
+ { 0x1505, 45905 },
+ { 0x1506, 48095 },
+ { 0x1507, 46076 },
+ { 0x1508, 47687 },
+ { 0x1509, 48103 },
+ { 0x150A, 47547 },
+ { 0x150B, 47543 },
+ { 0x150C, 47583 },
+ { 0x150D, 47587 },
+ { 0x150E, 47579 },
+ { 0x150F, 47575 },
+ { 0x1510, 46302 },
+ { 0x1511, 46305 },
+ { 0x1512, 46540 },
+ { 0x1513, 46308 },
+ { 0x1514, 46543 },
+ { 0x1515, 46299 },
+ { 0x1516, 46537 },
+ { 0x1517, 46549 },
+ { 0x1518, 48027 },
+ { 0x1519, 46552 },
+ { 0x151A, 48031 },
+ { 0x151B, 46701 },
+ { 0x151C, 48079 },
+ { 0x151D, 46555 },
+ { 0x151E, 48035 },
+ { 0x151F, 46704 },
+ { 0x1520, 48083 },
+ { 0x1521, 46546 },
+ { 0x1522, 48023 },
+ { 0x1523, 46698 },
+ { 0x1524, 48075 },
+ { 0x1525, 46067 },
+ { 0x1526, 46109 },
+ { 0x1527, 46612 },
+ { 0x1528, 46112 },
+ { 0x1529, 46401 },
+ { 0x152A, 46115 },
+ { 0x152B, 46404 },
+ { 0x152C, 46826 },
+ { 0x152D, 46106 },
+ { 0x152E, 46398 },
+ { 0x152F, 46410 },
+ { 0x1530, 47939 },
+ { 0x1531, 46413 },
+ { 0x1532, 47943 },
+ { 0x1533, 46618 },
+ { 0x1534, 48067 },
+ { 0x1535, 46416 },
+ { 0x1536, 47947 },
+ { 0x1537, 46621 },
+ { 0x1538, 48071 },
+ { 0x1539, 46407 },
+ { 0x153A, 47935 },
+ { 0x153B, 46615 },
+ { 0x153C, 48063 },
+ { 0x153D, 47599 },
+ { 0x153E, 45911 },
+ { 0x153F, 48099 },
+ { 0x1540, 47755 },
+ { 0x1541, 46766 },
+ { 0x1542, 46052 },
+ { 0x1543, 46730 },
+ { 0x1544, 47763 },
+ { 0x1545, 46528 },
+ { 0x1546, 46055 },
+ { 0x1547, 46290 },
+ { 0x1548, 46058 },
+ { 0x1549, 46293 },
+ { 0x154A, 47767 },
+ { 0x154B, 46049 },
+ { 0x154C, 46287 },
+ { 0x154D, 47759 },
+ { 0x154E, 46531 },
+ { 0x154F, 48019 },
+ { 0x1550, 45902 },
+ { 0x1551, 47751 },
+ { 0x1552, 46714 },
+ { 0x1553, 45941 },
+ { 0x1554, 46431 },
+ { 0x1555, 45944 },
+ { 0x1556, 46149 },
+ { 0x1557, 45947 },
+ { 0x1558, 46152 },
+ { 0x1559, 45938 },
+ { 0x155A, 46146 },
+ { 0x155B, 46438 },
+ { 0x155C, 47963 },
+ { 0x155D, 45875 },
+ { 0x155E, 46335 },
+ { 0x155F, 46718 },
+ { 0x1560, 46338 },
+ { 0x1561, 46722 },
+ { 0x1562, 46573 },
+ { 0x1563, 46726 },
+ { 0x1564, 46341 },
+ { 0x1565, 46576 },
+ { 0x1566, 46332 },
+ { 0x1567, 46570 },
+ { 0x1568, 46707 },
+ { 0x1569, 48087 },
+ { 0x156A, 46085 },
+ { 0x156B, 46594 },
+ { 0x156C, 46597 },
+ { 0x156D, 46600 },
+ { 0x156E, 46591 },
+ { 0x156F, 46356 },
+ { 0x1570, 46380 },
+ { 0x1571, 46383 },
+ { 0x1572, 46386 },
+ { 0x1573, 46377 },
+ { 0x1574, 47611 },
+ { 0x1575, 47615 },
+ { 0x1576, 47627 },
+ { 0x1577, 47619 },
+ { 0x1578, 47631 },
+ { 0x1579, 47607 },
+ { 0x157A, 47623 },
+ { 0x157B, 47603 },
+ { 0x157C, 47635 },
+ { 0x157D, 45950 },
+ { 0x157E, 46525 },
+ { 0x157F, 46043 },
+ { 0x1580, 46281 },
+ { 0x1581, 46046 },
+ { 0x1582, 46284 },
+ { 0x1583, 46040 },
+ { 0x1584, 46275 },
+ { 0x1585, 45899 },
+ { 0x1586, 46582 },
+ { 0x1587, 46585 },
+ { 0x1588, 46588 },
+ { 0x1589, 46579 },
+ { 0x158A, 47775 },
+ { 0x158B, 47779 },
+ { 0x158C, 47783 },
+ { 0x158D, 47771 },
+ { 0x158E, 46686 },
+ { 0x158F, 46233 },
+ { 0x1590, 46495 },
+ { 0x1591, 46236 },
+ { 0x1592, 46498 },
+ { 0x1593, 46230 },
+ { 0x1594, 46489 },
+ { 0x1595, 46010 },
+ { 0x1596, 46242 },
+ { 0x1597, 46774 },
+ { 0x1598, 46778 },
+ { 0x1599, 46782 },
+ { 0x159A, 46770 },
+ { 0x159B, 48115 },
+ { 0x159C, 48119 },
+ { 0x159D, 48123 },
+ { 0x159E, 48111 },
+ { 0x159F, 48107 },
+ { 0x15A0, 46182 },
+ { 0x15A1, 46459 },
+ { 0x15A2, 46185 },
+ { 0x15A3, 46462 },
+ { 0x15A4, 46179 },
+ { 0x15A5, 46456 },
+ { 0x15A6, 45980 },
+ { 0x15A7, 47647 },
+ { 0x15A8, 47651 },
+ { 0x15A9, 47663 },
+ { 0x15AA, 47655 },
+ { 0x15AB, 47667 },
+ { 0x15AC, 47643 },
+ { 0x15AD, 47659 },
+ { 0x15AE, 47639 },
+ { 0x15AF, 46834 },
+ { 0x15B0, 47675 },
+ { 0x15B1, 47679 },
+ { 0x15B2, 47683 },
+ { 0x15B3, 47671 },
+ { 0x15B4, 47727 },
+ { 0x15B5, 47731 },
+ { 0x15B6, 47735 },
+ { 0x15B7, 47723 },
+ { 0x15B8, 47711 },
+ { 0x15B9, 47715 },
+ { 0x15BA, 47719 },
+ { 0x15BB, 47707 },
+ { 0x15BC, 47695 },
+ { 0x15BD, 47699 },
+ { 0x15BE, 47703 },
+ { 0x15BF, 47691 },
+ { 0x15C0, 46742 },
+ { 0x15C1, 46746 },
+ { 0x15C2, 46750 },
+ { 0x15C3, 46738 },
+ { 0x15C4, 47182 },
+ { 0x15C5, 47178 },
+ { 0x15C6, 47170 },
+ { 0x15C7, 47442 },
+ { 0x15C8, 47174 },
+ { 0x15C9, 47166 },
+ { 0x15CA, 47010 },
+ { 0x15CB, 47006 },
+ { 0x15CC, 46998 },
+ { 0x15CD, 47310 },
+ { 0x15CE, 47002 },
+ { 0x15CF, 46994 },
+ { 0x15D0, 47054 },
+ { 0x15D1, 47050 },
+ { 0x15D2, 47042 },
+ { 0x15D3, 47418 },
+ { 0x15D4, 47046 },
+ { 0x15D5, 47038 },
+ { 0x15D6, 47206 },
+ { 0x15D7, 47202 },
+ { 0x15D8, 47194 },
+ { 0x15D9, 47446 },
+ { 0x15DA, 47198 },
+ { 0x15DB, 47190 },
+ { 0x15DC, 47354 },
+ { 0x15DD, 47350 },
+ { 0x15DE, 47342 },
+ { 0x15DF, 47470 },
+ { 0x15E0, 47346 },
+ { 0x15E1, 47338 },
+ { 0x15E2, 47414 },
+ { 0x15E3, 47410 },
+ { 0x15E4, 47402 },
+ { 0x15E5, 47502 },
+ { 0x15E6, 47406 },
+ { 0x15E7, 47398 },
+ { 0x15E8, 46990 },
+ { 0x15E9, 46986 },
+ { 0x15EA, 46978 },
+ { 0x15EB, 47306 },
+ { 0x15EC, 46982 },
+ { 0x15ED, 46974 },
+ { 0x15EE, 46846 },
+ { 0x15EF, 46878 },
+ { 0x15F0, 46874 },
+ { 0x15F1, 46866 },
+ { 0x15F2, 47162 },
+ { 0x15F3, 46870 },
+ { 0x15F4, 46862 },
+ { 0x15F5, 47250 },
+ { 0x15F6, 47246 },
+ { 0x15F7, 47238 },
+ { 0x15F8, 47454 },
+ { 0x15F9, 47242 },
+ { 0x15FA, 47234 },
+ { 0x15FB, 47270 },
+ { 0x15FC, 47266 },
+ { 0x15FD, 47258 },
+ { 0x15FE, 47458 },
+ { 0x15FF, 47262 },
+ { 0x1600, 47254 },
+ { 0x1601, 46906 },
+ { 0x1602, 46970 },
+ { 0x1603, 46966 },
+ { 0x1604, 46954 },
+ { 0x1605, 47302 },
+ { 0x1606, 46962 },
+ { 0x1607, 46950 },
+ { 0x1608, 46946 },
+ { 0x1609, 46942 },
+ { 0x160A, 46934 },
+ { 0x160B, 47298 },
+ { 0x160C, 46938 },
+ { 0x160D, 46930 },
+ { 0x160E, 47074 },
+ { 0x160F, 47070 },
+ { 0x1610, 47062 },
+ { 0x1611, 47422 },
+ { 0x1612, 47066 },
+ { 0x1613, 47058 },
+ { 0x1614, 46902 },
+ { 0x1615, 46758 },
+ { 0x1616, 46898 },
+ { 0x1617, 46890 },
+ { 0x1618, 47210 },
+ { 0x1619, 46894 },
+ { 0x161A, 46754 },
+ { 0x161B, 46886 },
+ { 0x161C, 47230 },
+ { 0x161D, 47226 },
+ { 0x161E, 47218 },
+ { 0x161F, 47450 },
+ { 0x1620, 47222 },
+ { 0x1621, 47214 },
+ { 0x1622, 46926 },
+ { 0x1623, 46922 },
+ { 0x1624, 46914 },
+ { 0x1625, 47274 },
+ { 0x1626, 46918 },
+ { 0x1627, 46910 },
+ { 0x1628, 47138 },
+ { 0x1629, 47134 },
+ { 0x162A, 47126 },
+ { 0x162B, 47434 },
+ { 0x162C, 47130 },
+ { 0x162D, 47122 },
+ { 0x162E, 47294 },
+ { 0x162F, 47290 },
+ { 0x1630, 47282 },
+ { 0x1631, 47462 },
+ { 0x1632, 47286 },
+ { 0x1633, 47278 },
+ { 0x1634, 47494 },
+ { 0x1635, 47490 },
+ { 0x1636, 47482 },
+ { 0x1637, 47526 },
+ { 0x1638, 47486 },
+ { 0x1639, 47478 },
+ { 0x163A, 47374 },
+ { 0x163B, 47370 },
+ { 0x163C, 47362 },
+ { 0x163D, 47474 },
+ { 0x163E, 47366 },
+ { 0x163F, 47358 },
+ { 0x1640, 47094 },
+ { 0x1641, 47090 },
+ { 0x1642, 47082 },
+ { 0x1643, 47426 },
+ { 0x1644, 47086 },
+ { 0x1645, 47078 },
+ { 0x1646, 46850 },
+ { 0x1647, 47534 },
+ { 0x1648, 47158 },
+ { 0x1649, 47154 },
+ { 0x164A, 47146 },
+ { 0x164B, 47438 },
+ { 0x164C, 47150 },
+ { 0x164D, 47142 },
+ { 0x164E, 47034 },
+ { 0x164F, 47030 },
+ { 0x1650, 47018 },
+ { 0x1651, 47314 },
+ { 0x1652, 47026 },
+ { 0x1653, 47014 },
+ { 0x1654, 47334 },
+ { 0x1655, 47330 },
+ { 0x1656, 47322 },
+ { 0x1657, 47466 },
+ { 0x1658, 47326 },
+ { 0x1659, 47318 },
+ { 0x165A, 47022 },
+ { 0x165B, 47394 },
+ { 0x165C, 47390 },
+ { 0x165D, 47382 },
+ { 0x165E, 47498 },
+ { 0x165F, 47386 },
+ { 0x1660, 47378 },
+ { 0x1661, 47114 },
+ { 0x1662, 47110 },
+ { 0x1663, 47102 },
+ { 0x1664, 47430 },
+ { 0x1665, 47106 },
+ { 0x1666, 47098 },
+ { 0x1667, 47522 },
+ { 0x1668, 47518 },
+ { 0x1669, 47510 },
+ { 0x166A, 47530 },
+ { 0x166B, 47514 },
+ { 0x166C, 47506 },
+ { 0x166D, 46124 },
+ { 0x166E, 46434 },
+ { 0x166F, 46278 },
+ { 0x1670, 46492 },
+ { 0x1671, 46504 },
+ { 0x1672, 46692 },
+ { 0x1673, 46507 },
+ { 0x1674, 46695 },
+ { 0x1675, 46501 },
+ { 0x1676, 46689 },
+ { 0x1680, 21369 },
+ { 0x1681, 21414 },
+ { 0x1682, 21396 },
+ { 0x1683, 21420 },
+ { 0x1684, 21408 },
+ { 0x1685, 21402 },
+ { 0x1686, 21411 },
+ { 0x1687, 21387 },
+ { 0x1688, 21426 },
+ { 0x1689, 21384 },
+ { 0x168A, 21417 },
+ { 0x168B, 21399 },
+ { 0x168C, 21390 },
+ { 0x168D, 21441 },
+ { 0x168E, 21429 },
+ { 0x168F, 21405 },
+ { 0x1690, 21381 },
+ { 0x1691, 21378 },
+ { 0x1692, 21375 },
+ { 0x1693, 21435 },
+ { 0x1694, 21438 },
+ { 0x1695, 21432 },
+ { 0x1696, 21372 },
+ { 0x1697, 21444 },
+ { 0x1698, 21393 },
+ { 0x1699, 21447 },
+ { 0x169A, 21423 },
+ { 0x169B, 21450 },
+ { 0x169C, 21453 },
+ { 0x16A0, 22222 },
+ { 0x16A1, 22160 },
+ { 0x16A2, 22250 },
+ { 0x16A3, 22189 },
+ { 0x16A4, 22169 },
+ { 0x16A5, 22163 },
+ { 0x16A6, 22368 },
+ { 0x16A7, 22201 },
+ { 0x16A8, 22259 },
+ { 0x16A9, 22185 },
+ { 0x16AA, 22175 },
+ { 0x16AB, 22216 },
+ { 0x16AC, 22402 },
+ { 0x16AD, 22390 },
+ { 0x16AE, 22154 },
+ { 0x16AF, 22179 },
+ { 0x16B0, 22182 },
+ { 0x16B1, 22287 },
+ { 0x16B2, 22284 },
+ { 0x16B3, 22192 },
+ { 0x16B4, 22243 },
+ { 0x16B5, 22151 },
+ { 0x16B6, 22198 },
+ { 0x16B7, 22228 },
+ { 0x16B8, 22204 },
+ { 0x16B9, 22304 },
+ { 0x16BA, 22309 },
+ { 0x16BB, 22276 },
+ { 0x16BC, 22422 },
+ { 0x16BD, 22418 },
+ { 0x16BE, 22327 },
+ { 0x16BF, 22410 },
+ { 0x16C0, 22362 },
+ { 0x16C1, 22233 },
+ { 0x16C2, 22148 },
+ { 0x16C3, 22280 },
+ { 0x16C4, 22207 },
+ { 0x16C5, 22383 },
+ { 0x16C6, 22376 },
+ { 0x16C7, 22239 },
+ { 0x16C8, 22336 },
+ { 0x16C9, 22255 },
+ { 0x16CA, 22341 },
+ { 0x16CB, 22293 },
+ { 0x16CC, 22394 },
+ { 0x16CD, 22142 },
+ { 0x16CE, 22172 },
+ { 0x16CF, 22298 },
+ { 0x16D0, 22398 },
+ { 0x16D1, 22145 },
+ { 0x16D2, 22353 },
+ { 0x16D3, 22426 },
+ { 0x16D4, 22365 },
+ { 0x16D5, 22333 },
+ { 0x16D6, 22271 },
+ { 0x16D7, 22322 },
+ { 0x16D8, 22414 },
+ { 0x16D9, 22406 },
+ { 0x16DA, 22316 },
+ { 0x16DB, 22359 },
+ { 0x16DC, 22313 },
+ { 0x16DD, 22210 },
+ { 0x16DE, 22266 },
+ { 0x16DF, 22348 },
+ { 0x16E0, 22195 },
+ { 0x16E1, 22213 },
+ { 0x16E2, 22345 },
+ { 0x16E3, 22219 },
+ { 0x16E4, 22263 },
+ { 0x16E5, 22247 },
+ { 0x16E6, 22387 },
+ { 0x16E7, 22380 },
+ { 0x16E8, 22373 },
+ { 0x16E9, 22157 },
+ { 0x16EA, 22166 },
+ { 0x16EB, 22430 },
+ { 0x16EC, 22436 },
+ { 0x16ED, 22136 },
+ { 0x16EE, 22139 },
+ { 0x16EF, 22439 },
+ { 0x16F0, 22433 },
+ { 0x1700, 43594 },
+ { 0x1701, 43597 },
+ { 0x1702, 43600 },
+ { 0x1703, 43615 },
+ { 0x1704, 43609 },
+ { 0x1705, 43642 },
+ { 0x1706, 43633 },
+ { 0x1707, 43606 },
+ { 0x1708, 43624 },
+ { 0x1709, 43627 },
+ { 0x170A, 43603 },
+ { 0x170B, 43621 },
+ { 0x170C, 43639 },
+ { 0x170E, 43618 },
+ { 0x170F, 43636 },
+ { 0x1710, 43630 },
+ { 0x1711, 43612 },
+ { 0x1712, 43586 },
+ { 0x1713, 43590 },
+ { 0x1714, 43583 },
+ { 0x1720, 40573 },
+ { 0x1721, 40576 },
+ { 0x1722, 40579 },
+ { 0x1723, 40594 },
+ { 0x1724, 40588 },
+ { 0x1725, 40624 },
+ { 0x1726, 40615 },
+ { 0x1727, 40585 },
+ { 0x1728, 40603 },
+ { 0x1729, 40606 },
+ { 0x172A, 40582 },
+ { 0x172B, 40600 },
+ { 0x172C, 40621 },
+ { 0x172D, 40609 },
+ { 0x172E, 40597 },
+ { 0x172F, 40618 },
+ { 0x1730, 40612 },
+ { 0x1731, 40591 },
+ { 0x1732, 40565 },
+ { 0x1733, 40569 },
+ { 0x1734, 40562 },
+ { 0x1735, 67884 },
+ { 0x1736, 67881 },
+ { 0x1740, 10387 },
+ { 0x1741, 10390 },
+ { 0x1742, 10393 },
+ { 0x1743, 10408 },
+ { 0x1744, 10402 },
+ { 0x1745, 10438 },
+ { 0x1746, 10429 },
+ { 0x1747, 10399 },
+ { 0x1748, 10417 },
+ { 0x1749, 10420 },
+ { 0x174A, 10396 },
+ { 0x174B, 10414 },
+ { 0x174C, 10435 },
+ { 0x174D, 10423 },
+ { 0x174E, 10411 },
+ { 0x174F, 10432 },
+ { 0x1750, 10426 },
+ { 0x1751, 10405 },
+ { 0x1752, 10379 },
+ { 0x1753, 10383 },
+ { 0x1760, 55665 },
+ { 0x1761, 55668 },
+ { 0x1762, 55671 },
+ { 0x1763, 55683 },
+ { 0x1764, 55680 },
+ { 0x1765, 55710 },
+ { 0x1766, 55701 },
+ { 0x1767, 55677 },
+ { 0x1768, 55692 },
+ { 0x1769, 55695 },
+ { 0x176A, 55674 },
+ { 0x176B, 55689 },
+ { 0x176C, 55707 },
+ { 0x176E, 55686 },
+ { 0x176F, 55704 },
+ { 0x1770, 55698 },
+ { 0x1772, 55657 },
+ { 0x1773, 55661 },
+ { 0x1780, 14115 },
+ { 0x1781, 14163 },
+ { 0x1782, 14118 },
+ { 0x1783, 14166 },
+ { 0x1784, 14169 },
+ { 0x1785, 14100 },
+ { 0x1786, 14157 },
+ { 0x1787, 14103 },
+ { 0x1788, 14160 },
+ { 0x1789, 14175 },
+ { 0x178A, 14106 },
+ { 0x178B, 14196 },
+ { 0x178C, 14109 },
+ { 0x178D, 14199 },
+ { 0x178E, 14172 },
+ { 0x178F, 14145 },
+ { 0x1790, 14190 },
+ { 0x1791, 14148 },
+ { 0x1792, 14193 },
+ { 0x1793, 14130 },
+ { 0x1794, 14097 },
+ { 0x1795, 14178 },
+ { 0x1796, 14133 },
+ { 0x1797, 14181 },
+ { 0x1798, 14127 },
+ { 0x1799, 14154 },
+ { 0x179A, 14139 },
+ { 0x179B, 14124 },
+ { 0x179C, 14151 },
+ { 0x179D, 14184 },
+ { 0x179E, 14187 },
+ { 0x179F, 14142 },
+ { 0x17A0, 14112 },
+ { 0x17A1, 14121 },
+ { 0x17A2, 14136 },
+ { 0x17A3, 14414 },
+ { 0x17A4, 14406 },
+ { 0x17A5, 14390 },
+ { 0x17A6, 14422 },
+ { 0x17A7, 14394 },
+ { 0x17A8, 14438 },
+ { 0x17A9, 14442 },
+ { 0x17AA, 14450 },
+ { 0x17AB, 14398 },
+ { 0x17AC, 14446 },
+ { 0x17AD, 14382 },
+ { 0x17AE, 14402 },
+ { 0x17AF, 14386 },
+ { 0x17B0, 14410 },
+ { 0x17B1, 14426 },
+ { 0x17B2, 14432 },
+ { 0x17B3, 14418 },
+ { 0x17B4, 14093 },
+ { 0x17B5, 14089 },
+ { 0x17B6, 14041 },
+ { 0x17B7, 14029 },
+ { 0x17B8, 14061 },
+ { 0x17B9, 14037 },
+ { 0x17BA, 14085 },
+ { 0x17BB, 14033 },
+ { 0x17BC, 14077 },
+ { 0x17BD, 14073 },
+ { 0x17BE, 14065 },
+ { 0x17BF, 14081 },
+ { 0x17C0, 14057 },
+ { 0x17C1, 14025 },
+ { 0x17C2, 14045 },
+ { 0x17C3, 14049 },
+ { 0x17C4, 14069 },
+ { 0x17C5, 14053 },
+ { 0x17C6, 13965 },
+ { 0x17C7, 13968 },
+ { 0x17C8, 13992 },
+ { 0x17C9, 13983 },
+ { 0x17CA, 13971 },
+ { 0x17CB, 13937 },
+ { 0x17CC, 13934 },
+ { 0x17CD, 13986 },
+ { 0x17CE, 13959 },
+ { 0x17CF, 13928 },
+ { 0x17D0, 13952 },
+ { 0x17D1, 13956 },
+ { 0x17D2, 13931 },
+ { 0x17D3, 13980 },
+ { 0x17D4, 13925 },
+ { 0x17D5, 13977 },
+ { 0x17D6, 13943 },
+ { 0x17D7, 13921 },
+ { 0x17D8, 13940 },
+ { 0x17D9, 13948 },
+ { 0x17DA, 13962 },
+ { 0x17DB, 14378 },
+ { 0x17DC, 13989 },
+ { 0x17DD, 13974 },
+ { 0x17E0, 14013 },
+ { 0x17E1, 13995 },
+ { 0x17E2, 14001 },
+ { 0x17E3, 14022 },
+ { 0x17E4, 14007 },
+ { 0x17E5, 14004 },
+ { 0x17E6, 13998 },
+ { 0x17E7, 14019 },
+ { 0x17E8, 14016 },
+ { 0x17E9, 14010 },
+ { 0x17F0, 14228 },
+ { 0x17F1, 14238 },
+ { 0x17F2, 14223 },
+ { 0x17F3, 14218 },
+ { 0x17F4, 14233 },
+ { 0x17F5, 14243 },
+ { 0x17F6, 14263 },
+ { 0x17F7, 14253 },
+ { 0x17F8, 14248 },
+ { 0x17F9, 14258 },
+ { 0x1800, 65145 },
+ { 0x1801, 65749 },
+ { 0x1802, 65149 },
+ { 0x1803, 65133 },
+ { 0x1804, 65147 },
+ { 0x1805, 65115 },
+ { 0x1806, 65141 },
+ { 0x1807, 65136 },
+ { 0x1808, 65744 },
+ { 0x1809, 65740 },
+ { 0x180A, 65747 },
+ { 0x180B, 65118 },
+ { 0x180C, 65123 },
+ { 0x180D, 65128 },
+ { 0x180E, 65181 },
+ { 0x1810, 65169 },
+ { 0x1811, 65151 },
+ { 0x1812, 65157 },
+ { 0x1813, 65178 },
+ { 0x1814, 65163 },
+ { 0x1815, 65160 },
+ { 0x1816, 65154 },
+ { 0x1817, 65175 },
+ { 0x1818, 65172 },
+ { 0x1819, 65166 },
+ { 0x1820, 65184 },
+ { 0x1821, 65187 },
+ { 0x1822, 65190 },
+ { 0x1823, 65193 },
+ { 0x1824, 65196 },
+ { 0x1825, 65229 },
+ { 0x1826, 65247 },
+ { 0x1827, 65205 },
+ { 0x1828, 65226 },
+ { 0x1829, 65400 },
+ { 0x182A, 65199 },
+ { 0x182B, 65232 },
+ { 0x182C, 65235 },
+ { 0x182D, 65211 },
+ { 0x182E, 65223 },
+ { 0x182F, 65220 },
+ { 0x1830, 65241 },
+ { 0x1831, 65418 },
+ { 0x1832, 65244 },
+ { 0x1833, 65202 },
+ { 0x1834, 65403 },
+ { 0x1835, 65214 },
+ { 0x1836, 65253 },
+ { 0x1837, 65238 },
+ { 0x1838, 65250 },
+ { 0x1839, 65208 },
+ { 0x183A, 65217 },
+ { 0x183B, 65412 },
+ { 0x183C, 65421 },
+ { 0x183D, 65256 },
+ { 0x183E, 65409 },
+ { 0x183F, 65427 },
+ { 0x1840, 65415 },
+ { 0x1841, 65424 },
+ { 0x1842, 65406 },
+ { 0x1843, 65630 },
+ { 0x1844, 65518 },
+ { 0x1845, 65522 },
+ { 0x1846, 65526 },
+ { 0x1847, 65530 },
+ { 0x1848, 65558 },
+ { 0x1849, 65574 },
+ { 0x184A, 65598 },
+ { 0x184B, 65534 },
+ { 0x184C, 65562 },
+ { 0x184D, 65566 },
+ { 0x184E, 65542 },
+ { 0x184F, 65554 },
+ { 0x1850, 65570 },
+ { 0x1851, 65538 },
+ { 0x1852, 65602 },
+ { 0x1853, 65546 },
+ { 0x1854, 65626 },
+ { 0x1855, 65582 },
+ { 0x1856, 65578 },
+ { 0x1857, 65550 },
+ { 0x1858, 65610 },
+ { 0x1859, 65614 },
+ { 0x185A, 65618 },
+ { 0x185B, 65622 },
+ { 0x185C, 65606 },
+ { 0x185D, 65430 },
+ { 0x185E, 65434 },
+ { 0x185F, 65458 },
+ { 0x1860, 65478 },
+ { 0x1861, 65438 },
+ { 0x1862, 65486 },
+ { 0x1863, 65466 },
+ { 0x1864, 65450 },
+ { 0x1865, 65454 },
+ { 0x1866, 65470 },
+ { 0x1867, 65506 },
+ { 0x1868, 65474 },
+ { 0x1869, 65442 },
+ { 0x186A, 65462 },
+ { 0x186B, 65446 },
+ { 0x186C, 65494 },
+ { 0x186D, 65498 },
+ { 0x186E, 65510 },
+ { 0x186F, 65482 },
+ { 0x1870, 65502 },
+ { 0x1871, 65490 },
+ { 0x1872, 65514 },
+ { 0x1873, 65636 },
+ { 0x1874, 65644 },
+ { 0x1875, 65648 },
+ { 0x1876, 65640 },
+ { 0x1877, 65736 },
+ { 0x1880, 65388 },
+ { 0x1881, 65382 },
+ { 0x1882, 65367 },
+ { 0x1883, 65377 },
+ { 0x1884, 65394 },
+ { 0x1885, 65362 },
+ { 0x1886, 65356 },
+ { 0x1887, 65259 },
+ { 0x1888, 65264 },
+ { 0x1889, 65284 },
+ { 0x188A, 65309 },
+ { 0x188B, 65274 },
+ { 0x188C, 65329 },
+ { 0x188D, 65351 },
+ { 0x188E, 65304 },
+ { 0x188F, 65314 },
+ { 0x1890, 65294 },
+ { 0x1891, 65279 },
+ { 0x1892, 65289 },
+ { 0x1893, 65319 },
+ { 0x1894, 65324 },
+ { 0x1895, 65334 },
+ { 0x1896, 65299 },
+ { 0x1897, 65269 },
+ { 0x1898, 65586 },
+ { 0x1899, 65592 },
+ { 0x189A, 65688 },
+ { 0x189B, 65706 },
+ { 0x189C, 65652 },
+ { 0x189D, 65694 },
+ { 0x189E, 65718 },
+ { 0x189F, 65730 },
+ { 0x18A0, 65658 },
+ { 0x18A1, 65682 },
+ { 0x18A2, 65712 },
+ { 0x18A3, 65676 },
+ { 0x18A4, 65724 },
+ { 0x18A5, 65664 },
+ { 0x18A6, 65339 },
+ { 0x18A7, 65345 },
+ { 0x18A8, 65670 },
+ { 0x18A9, 65372 },
+ { 0x18AA, 65700 },
+ { 0x1900, 21091 },
+ { 0x1901, 21007 },
+ { 0x1902, 21052 },
+ { 0x1903, 20998 },
+ { 0x1904, 21046 },
+ { 0x1905, 21055 },
+ { 0x1906, 20992 },
+ { 0x1907, 21040 },
+ { 0x1908, 21004 },
+ { 0x1909, 21049 },
+ { 0x190A, 21070 },
+ { 0x190B, 21028 },
+ { 0x190C, 21067 },
+ { 0x190D, 20995 },
+ { 0x190E, 21043 },
+ { 0x190F, 21016 },
+ { 0x1910, 21019 },
+ { 0x1911, 21058 },
+ { 0x1912, 20989 },
+ { 0x1913, 21037 },
+ { 0x1914, 21013 },
+ { 0x1915, 21034 },
+ { 0x1916, 21022 },
+ { 0x1917, 21010 },
+ { 0x1918, 21031 },
+ { 0x1919, 21061 },
+ { 0x191A, 21064 },
+ { 0x191B, 21025 },
+ { 0x191C, 21001 },
+ { 0x1920, 20953 },
+ { 0x1921, 20961 },
+ { 0x1922, 20969 },
+ { 0x1923, 20981 },
+ { 0x1924, 20973 },
+ { 0x1925, 20985 },
+ { 0x1926, 20977 },
+ { 0x1927, 20957 },
+ { 0x1928, 20965 },
+ { 0x1929, 21084 },
+ { 0x192A, 21076 },
+ { 0x192B, 21080 },
+ { 0x1930, 20917 },
+ { 0x1931, 20945 },
+ { 0x1932, 20949 },
+ { 0x1933, 20941 },
+ { 0x1934, 20929 },
+ { 0x1935, 20933 },
+ { 0x1936, 20925 },
+ { 0x1937, 20937 },
+ { 0x1938, 20921 },
+ { 0x1939, 20884 },
+ { 0x193A, 20881 },
+ { 0x193B, 20878 },
+ { 0x1940, 20875 },
+ { 0x1944, 21088 },
+ { 0x1945, 21073 },
+ { 0x1946, 20905 },
+ { 0x1947, 20887 },
+ { 0x1948, 20893 },
+ { 0x1949, 20914 },
+ { 0x194A, 20899 },
+ { 0x194B, 20896 },
+ { 0x194C, 20890 },
+ { 0x194D, 20911 },
+ { 0x194E, 20908 },
+ { 0x194F, 20902 },
+ { 0x1950, 7612 },
+ { 0x1951, 7656 },
+ { 0x1952, 7672 },
+ { 0x1953, 7684 },
+ { 0x1954, 7640 },
+ { 0x1955, 7660 },
+ { 0x1956, 7644 },
+ { 0x1957, 7680 },
+ { 0x1958, 7616 },
+ { 0x1959, 7632 },
+ { 0x195A, 7676 },
+ { 0x195B, 7620 },
+ { 0x195C, 7604 },
+ { 0x195D, 7652 },
+ { 0x195E, 7608 },
+ { 0x195F, 7636 },
+ { 0x1960, 7668 },
+ { 0x1961, 7688 },
+ { 0x1962, 7624 },
+ { 0x1963, 7572 },
+ { 0x1964, 7580 },
+ { 0x1965, 7596 },
+ { 0x1966, 7600 },
+ { 0x1967, 7588 },
+ { 0x1968, 7628 },
+ { 0x1969, 7584 },
+ { 0x196A, 7648 },
+ { 0x196B, 7576 },
+ { 0x196C, 7664 },
+ { 0x196D, 7592 },
+ { 0x1970, 7692 },
+ { 0x1971, 7696 },
+ { 0x1972, 7700 },
+ { 0x1973, 7704 },
+ { 0x1974, 7708 },
+ { 0x1980, 6393 },
+ { 0x1981, 6267 },
+ { 0x1982, 6363 },
+ { 0x1983, 6417 },
+ { 0x1984, 6435 },
+ { 0x1985, 6237 },
+ { 0x1986, 6291 },
+ { 0x1987, 6309 },
+ { 0x1988, 6453 },
+ { 0x1989, 6399 },
+ { 0x198A, 6423 },
+ { 0x198B, 6327 },
+ { 0x198C, 6273 },
+ { 0x198D, 6297 },
+ { 0x198E, 6405 },
+ { 0x198F, 6447 },
+ { 0x1990, 6381 },
+ { 0x1991, 6279 },
+ { 0x1992, 6321 },
+ { 0x1993, 6255 },
+ { 0x1994, 6387 },
+ { 0x1995, 6441 },
+ { 0x1996, 6375 },
+ { 0x1997, 6261 },
+ { 0x1998, 6315 },
+ { 0x1999, 6249 },
+ { 0x199A, 6351 },
+ { 0x199B, 6411 },
+ { 0x199C, 6369 },
+ { 0x199D, 6225 },
+ { 0x199E, 6285 },
+ { 0x199F, 6243 },
+ { 0x19A0, 6357 },
+ { 0x19A1, 6345 },
+ { 0x19A2, 6339 },
+ { 0x19A3, 6231 },
+ { 0x19A4, 6219 },
+ { 0x19A5, 6213 },
+ { 0x19A6, 6429 },
+ { 0x19A7, 6459 },
+ { 0x19A8, 6303 },
+ { 0x19A9, 6333 },
+ { 0x19B0, 6206 },
+ { 0x19B1, 6128 },
+ { 0x19B2, 6146 },
+ { 0x19B3, 6122 },
+ { 0x19B4, 6176 },
+ { 0x19B5, 6110 },
+ { 0x19B6, 6134 },
+ { 0x19B7, 6116 },
+ { 0x19B8, 6158 },
+ { 0x19B9, 6170 },
+ { 0x19BA, 6140 },
+ { 0x19BB, 6188 },
+ { 0x19BC, 6182 },
+ { 0x19BD, 6164 },
+ { 0x19BE, 6194 },
+ { 0x19BF, 6200 },
+ { 0x19C0, 6152 },
+ { 0x19C1, 6495 },
+ { 0x19C2, 6501 },
+ { 0x19C3, 6489 },
+ { 0x19C4, 6483 },
+ { 0x19C5, 6477 },
+ { 0x19C6, 6471 },
+ { 0x19C7, 6465 },
+ { 0x19C8, 6050 },
+ { 0x19C9, 6055 },
+ { 0x19D0, 6090 },
+ { 0x19D1, 6060 },
+ { 0x19D2, 6070 },
+ { 0x19D3, 6105 },
+ { 0x19D4, 6080 },
+ { 0x19D5, 6075 },
+ { 0x19D6, 6065 },
+ { 0x19D7, 6100 },
+ { 0x19D8, 6095 },
+ { 0x19D9, 6085 },
+ { 0x19DE, 6040 },
+ { 0x19DF, 6045 },
+ { 0x19E0, 14375 },
+ { 0x19E1, 14288 },
+ { 0x19E2, 14272 },
+ { 0x19E3, 14206 },
+ { 0x19E4, 14280 },
+ { 0x19E5, 14296 },
+ { 0x19E6, 14368 },
+ { 0x19E7, 14352 },
+ { 0x19E8, 14344 },
+ { 0x19E9, 14360 },
+ { 0x19EA, 14214 },
+ { 0x19EB, 14328 },
+ { 0x19EC, 14312 },
+ { 0x19ED, 14304 },
+ { 0x19EE, 14320 },
+ { 0x19EF, 14336 },
+ { 0x19F0, 14372 },
+ { 0x19F1, 14284 },
+ { 0x19F2, 14268 },
+ { 0x19F3, 14202 },
+ { 0x19F4, 14276 },
+ { 0x19F5, 14292 },
+ { 0x19F6, 14364 },
+ { 0x19F7, 14348 },
+ { 0x19F8, 14340 },
+ { 0x19F9, 14356 },
+ { 0x19FA, 14210 },
+ { 0x19FB, 14324 },
+ { 0x19FC, 14308 },
+ { 0x19FD, 14300 },
+ { 0x19FE, 14316 },
+ { 0x19FF, 14332 },
+ { 0x1A00, 45814 },
+ { 0x1A01, 45805 },
+ { 0x1A02, 45847 },
+ { 0x1A03, 45856 },
+ { 0x1A04, 45826 },
+ { 0x1A05, 45796 },
+ { 0x1A06, 45820 },
+ { 0x1A07, 45844 },
+ { 0x1A08, 45835 },
+ { 0x1A09, 45802 },
+ { 0x1A0A, 45823 },
+ { 0x1A0B, 45850 },
+ { 0x1A0C, 45799 },
+ { 0x1A0D, 45811 },
+ { 0x1A0E, 45853 },
+ { 0x1A0F, 45859 },
+ { 0x1A10, 45841 },
+ { 0x1A11, 45829 },
+ { 0x1A12, 45817 },
+ { 0x1A13, 45838 },
+ { 0x1A14, 45832 },
+ { 0x1A15, 45793 },
+ { 0x1A16, 45808 },
+ { 0x1A17, 45777 },
+ { 0x1A18, 45785 },
+ { 0x1A19, 45773 },
+ { 0x1A1A, 45781 },
+ { 0x1A1B, 45789 },
+ { 0x1A1E, 45862 },
+ { 0x1A1F, 45769 },
+ { 0x1B00, 45088 },
+ { 0x1B01, 45092 },
+ { 0x1B02, 45099 },
+ { 0x1B03, 45102 },
+ { 0x1B04, 45096 },
+ { 0x1B05, 45383 },
+ { 0x1B06, 45386 },
+ { 0x1B07, 45393 },
+ { 0x1B08, 45396 },
+ { 0x1B09, 45407 },
+ { 0x1B0A, 45410 },
+ { 0x1B0B, 45315 },
+ { 0x1B0C, 45319 },
+ { 0x1B0D, 45286 },
+ { 0x1B0E, 45290 },
+ { 0x1B0F, 45390 },
+ { 0x1B10, 45414 },
+ { 0x1B11, 45400 },
+ { 0x1B12, 45403 },
+ { 0x1B13, 45276 },
+ { 0x1B14, 45279 },
+ { 0x1B15, 45259 },
+ { 0x1B16, 45262 },
+ { 0x1B17, 45365 },
+ { 0x1B18, 45231 },
+ { 0x1B19, 45234 },
+ { 0x1B1A, 45269 },
+ { 0x1B1B, 45272 },
+ { 0x1B1C, 45368 },
+ { 0x1B1D, 45342 },
+ { 0x1B1E, 45346 },
+ { 0x1B1F, 45245 },
+ { 0x1B20, 45250 },
+ { 0x1B21, 45301 },
+ { 0x1B22, 45335 },
+ { 0x1B23, 45338 },
+ { 0x1B24, 45238 },
+ { 0x1B25, 45241 },
+ { 0x1B26, 45298 },
+ { 0x1B27, 45305 },
+ { 0x1B28, 45308 },
+ { 0x1B29, 45224 },
+ { 0x1B2A, 45227 },
+ { 0x1B2B, 45295 },
+ { 0x1B2C, 45358 },
+ { 0x1B2D, 45312 },
+ { 0x1B2E, 45283 },
+ { 0x1B2F, 45355 },
+ { 0x1B30, 45327 },
+ { 0x1B31, 45331 },
+ { 0x1B32, 45324 },
+ { 0x1B33, 45266 },
+ { 0x1B34, 45105 },
+ { 0x1B35, 45218 },
+ { 0x1B36, 45171 },
+ { 0x1B37, 45175 },
+ { 0x1B38, 45180 },
+ { 0x1B39, 45184 },
+ { 0x1B3A, 45160 },
+ { 0x1B3B, 45165 },
+ { 0x1B3C, 45149 },
+ { 0x1B3D, 45154 },
+ { 0x1B3E, 45198 },
+ { 0x1B3F, 45202 },
+ { 0x1B40, 45213 },
+ { 0x1B41, 45207 },
+ { 0x1B42, 45189 },
+ { 0x1B43, 45193 },
+ { 0x1B44, 45085 },
+ { 0x1B45, 45361 },
+ { 0x1B46, 45375 },
+ { 0x1B47, 45379 },
+ { 0x1B48, 45255 },
+ { 0x1B49, 45351 },
+ { 0x1B4A, 45371 },
+ { 0x1B4B, 45417 },
+ { 0x1B50, 45135 },
+ { 0x1B51, 45117 },
+ { 0x1B52, 45123 },
+ { 0x1B53, 45144 },
+ { 0x1B54, 45129 },
+ { 0x1B55, 45126 },
+ { 0x1B56, 45120 },
+ { 0x1B57, 45141 },
+ { 0x1B58, 45138 },
+ { 0x1B59, 45132 },
+ { 0x1B5A, 45147 },
+ { 0x1B5B, 45421 },
+ { 0x1B5C, 45222 },
+ { 0x1B5D, 45114 },
+ { 0x1B5E, 45108 },
+ { 0x1B5F, 45111 },
+ { 0x1B60, 45568 },
+ { 0x1B61, 45445 },
+ { 0x1B62, 45437 },
+ { 0x1B63, 45449 },
+ { 0x1B64, 45423 },
+ { 0x1B65, 45432 },
+ { 0x1B66, 45441 },
+ { 0x1B67, 45453 },
+ { 0x1B68, 45461 },
+ { 0x1B69, 45457 },
+ { 0x1B6A, 45427 },
+ { 0x1B6B, 45480 },
+ { 0x1B6C, 45475 },
+ { 0x1B6D, 45497 },
+ { 0x1B6E, 45485 },
+ { 0x1B6F, 45509 },
+ { 0x1B70, 45502 },
+ { 0x1B71, 45490 },
+ { 0x1B72, 45470 },
+ { 0x1B73, 45465 },
+ { 0x1B74, 45550 },
+ { 0x1B75, 45544 },
+ { 0x1B76, 45562 },
+ { 0x1B77, 45556 },
+ { 0x1B78, 45514 },
+ { 0x1B79, 45526 },
+ { 0x1B7A, 45532 },
+ { 0x1B7B, 45538 },
+ { 0x1B7C, 45520 },
+ { 0x1B80, 65869 },
+ { 0x1B81, 65872 },
+ { 0x1B82, 65875 },
+ { 0x1B83, 65932 },
+ { 0x1B84, 65938 },
+ { 0x1B85, 65944 },
+ { 0x1B86, 65947 },
+ { 0x1B87, 65941 },
+ { 0x1B88, 65935 },
+ { 0x1B89, 65959 },
+ { 0x1B8A, 65974 },
+ { 0x1B8B, 65989 },
+ { 0x1B8C, 65965 },
+ { 0x1B8D, 66019 },
+ { 0x1B8E, 65953 },
+ { 0x1B8F, 65971 },
+ { 0x1B90, 66013 },
+ { 0x1B91, 66022 },
+ { 0x1B92, 65998 },
+ { 0x1B93, 65956 },
+ { 0x1B94, 65983 },
+ { 0x1B95, 65986 },
+ { 0x1B96, 65962 },
+ { 0x1B97, 66001 },
+ { 0x1B98, 65950 },
+ { 0x1B99, 65980 },
+ { 0x1B9A, 66010 },
+ { 0x1B9B, 65992 },
+ { 0x1B9C, 65977 },
+ { 0x1B9D, 66004 },
+ { 0x1B9E, 65995 },
+ { 0x1B9F, 66007 },
+ { 0x1BA0, 65968 },
+ { 0x1BA1, 66036 },
+ { 0x1BA2, 66032 },
+ { 0x1BA3, 66028 },
+ { 0x1BA4, 65916 },
+ { 0x1BA5, 65912 },
+ { 0x1BA6, 65924 },
+ { 0x1BA7, 65920 },
+ { 0x1BA8, 65908 },
+ { 0x1BA9, 65928 },
+ { 0x1BAA, 65866 },
+ { 0x1BAE, 66016 },
+ { 0x1BAF, 66025 },
+ { 0x1BB0, 65896 },
+ { 0x1BB1, 65878 },
+ { 0x1BB2, 65884 },
+ { 0x1BB3, 65905 },
+ { 0x1BB4, 65890 },
+ { 0x1BB5, 65887 },
+ { 0x1BB6, 65881 },
+ { 0x1BB7, 65902 },
+ { 0x1BB8, 65899 },
+ { 0x1BB9, 65893 },
+ { 0x1C00, 34194 },
+ { 0x1C01, 34251 },
+ { 0x1C02, 34248 },
+ { 0x1C03, 34185 },
+ { 0x1C04, 34242 },
+ { 0x1C05, 34257 },
+ { 0x1C06, 34176 },
+ { 0x1C07, 34230 },
+ { 0x1C08, 34191 },
+ { 0x1C09, 34260 },
+ { 0x1C0A, 34215 },
+ { 0x1C0B, 34272 },
+ { 0x1C0C, 34179 },
+ { 0x1C0D, 34203 },
+ { 0x1C0E, 34206 },
+ { 0x1C0F, 34266 },
+ { 0x1C10, 34263 },
+ { 0x1C11, 34182 },
+ { 0x1C12, 34239 },
+ { 0x1C13, 34173 },
+ { 0x1C14, 34227 },
+ { 0x1C15, 34200 },
+ { 0x1C16, 34254 },
+ { 0x1C17, 34275 },
+ { 0x1C18, 34281 },
+ { 0x1C19, 34236 },
+ { 0x1C1A, 34224 },
+ { 0x1C1B, 34209 },
+ { 0x1C1C, 34197 },
+ { 0x1C1D, 34188 },
+ { 0x1C1E, 34245 },
+ { 0x1C1F, 34218 },
+ { 0x1C20, 34212 },
+ { 0x1C21, 34269 },
+ { 0x1C22, 34221 },
+ { 0x1C23, 34170 },
+ { 0x1C24, 34327 },
+ { 0x1C25, 34323 },
+ { 0x1C26, 34158 },
+ { 0x1C27, 34146 },
+ { 0x1C28, 34150 },
+ { 0x1C29, 34162 },
+ { 0x1C2A, 34154 },
+ { 0x1C2B, 34166 },
+ { 0x1C2C, 34142 },
+ { 0x1C2D, 34287 },
+ { 0x1C2E, 34295 },
+ { 0x1C2F, 34291 },
+ { 0x1C30, 34299 },
+ { 0x1C31, 34303 },
+ { 0x1C32, 34307 },
+ { 0x1C33, 34311 },
+ { 0x1C34, 34319 },
+ { 0x1C35, 34315 },
+ { 0x1C36, 34106 },
+ { 0x1C37, 34109 },
+ { 0x1C3B, 34339 },
+ { 0x1C3C, 34331 },
+ { 0x1C3D, 34336 },
+ { 0x1C3E, 34345 },
+ { 0x1C3F, 34342 },
+ { 0x1C40, 34130 },
+ { 0x1C41, 34112 },
+ { 0x1C42, 34118 },
+ { 0x1C43, 34139 },
+ { 0x1C44, 34124 },
+ { 0x1C45, 34121 },
+ { 0x1C46, 34115 },
+ { 0x1C47, 34136 },
+ { 0x1C48, 34133 },
+ { 0x1C49, 34127 },
+ { 0x1C4D, 34278 },
+ { 0x1C4E, 34284 },
+ { 0x1C4F, 34233 },
+ { 0x1C50, 112 },
+ { 0x1C51, 88 },
+ { 0x1C52, 96 },
+ { 0x1C53, 124 },
+ { 0x1C54, 104 },
+ { 0x1C55, 100 },
+ { 0x1C56, 92 },
+ { 0x1C57, 120 },
+ { 0x1C58, 116 },
+ { 0x1C59, 108 },
+ { 0x1C5A, 163 },
+ { 0x1C5B, 139 },
+ { 0x1C5C, 131 },
+ { 0x1C5D, 223 },
+ { 0x1C5E, 135 },
+ { 0x1C5F, 239 },
+ { 0x1C60, 211 },
+ { 0x1C61, 207 },
+ { 0x1C62, 215 },
+ { 0x1C63, 219 },
+ { 0x1C64, 171 },
+ { 0x1C65, 159 },
+ { 0x1C66, 151 },
+ { 0x1C67, 235 },
+ { 0x1C68, 155 },
+ { 0x1C69, 179 },
+ { 0x1C6A, 195 },
+ { 0x1C6B, 199 },
+ { 0x1C6C, 247 },
+ { 0x1C6D, 203 },
+ { 0x1C6E, 167 },
+ { 0x1C6F, 147 },
+ { 0x1C70, 227 },
+ { 0x1C71, 143 },
+ { 0x1C72, 231 },
+ { 0x1C73, 175 },
+ { 0x1C74, 243 },
+ { 0x1C75, 183 },
+ { 0x1C76, 191 },
+ { 0x1C77, 187 },
+ { 0x1C78, 81 },
+ { 0x1C79, 251 },
+ { 0x1C7A, 258 },
+ { 0x1C7B, 128 },
+ { 0x1C7C, 255 },
+ { 0x1C7D, 85 },
+ { 0x1C7E, 267 },
+ { 0x1C7F, 262 },
+ { 0x1D00, 17949 },
+ { 0x1D01, 18083 },
+ { 0x1D02, 17650 },
+ { 0x1D03, 18119 },
+ { 0x1D04, 17959 },
+ { 0x1D05, 17964 },
+ { 0x1D06, 18098 },
+ { 0x1D07, 17969 },
+ { 0x1D08, 17660 },
+ { 0x1D09, 17575 },
+ { 0x1D0A, 18001 },
+ { 0x1D0B, 18006 },
+ { 0x1D0C, 18016 },
+ { 0x1D0D, 18023 },
+ { 0x1D0E, 18143 },
+ { 0x1D0F, 18033 },
+ { 0x1D10, 18113 },
+ { 0x1D11, 17804 },
+ { 0x1D12, 17821 },
+ { 0x1D13, 17809 },
+ { 0x1D14, 17655 },
+ { 0x1D15, 18093 },
+ { 0x1D16, 17292 },
+ { 0x1D17, 17499 },
+ { 0x1D18, 18038 },
+ { 0x1D19, 18149 },
+ { 0x1D1A, 18131 },
+ { 0x1D1B, 18053 },
+ { 0x1D1C, 18058 },
+ { 0x1D1D, 17816 },
+ { 0x1D1E, 17833 },
+ { 0x1D1F, 17827 },
+ { 0x1D20, 18063 },
+ { 0x1D21, 18068 },
+ { 0x1D22, 18078 },
+ { 0x1D23, 18103 },
+ { 0x1D24, 18159 },
+ { 0x1D25, 17938 },
+ { 0x1D26, 12051 },
+ { 0x1D27, 12056 },
+ { 0x1D28, 12036 },
+ { 0x1D29, 12046 },
+ { 0x1D2A, 12041 },
+ { 0x1D2B, 49409 },
+ { 0x1D2C, 54616 },
+ { 0x1D2D, 54692 },
+ { 0x1D2E, 54620 },
+ { 0x1D2F, 54700 },
+ { 0x1D30, 54624 },
+ { 0x1D31, 54628 },
+ { 0x1D32, 54705 },
+ { 0x1D33, 54632 },
+ { 0x1D34, 54636 },
+ { 0x1D35, 54640 },
+ { 0x1D36, 54644 },
+ { 0x1D37, 54648 },
+ { 0x1D38, 54652 },
+ { 0x1D39, 54656 },
+ { 0x1D3A, 54660 },
+ { 0x1D3B, 54710 },
+ { 0x1D3C, 54664 },
+ { 0x1D3D, 54696 },
+ { 0x1D3E, 54668 },
+ { 0x1D3F, 54672 },
+ { 0x1D40, 54676 },
+ { 0x1D41, 54680 },
+ { 0x1D42, 54688 },
+ { 0x1D43, 54136 },
+ { 0x1D44, 54421 },
+ { 0x1D45, 54375 },
+ { 0x1D46, 54466 },
+ { 0x1D47, 54140 },
+ { 0x1D48, 54154 },
+ { 0x1D49, 54158 },
+ { 0x1D4A, 54397 },
+ { 0x1D4B, 54365 },
+ { 0x1D4C, 54471 },
+ { 0x1D4D, 54166 },
+ { 0x1D4E, 54431 },
+ { 0x1D4F, 54196 },
+ { 0x1D50, 54218 },
+ { 0x1D51, 54331 },
+ { 0x1D52, 54242 },
+ { 0x1D53, 54370 },
+ { 0x1D54, 54351 },
+ { 0x1D55, 54410 },
+ { 0x1D56, 54246 },
+ { 0x1D57, 54264 },
+ { 0x1D58, 54275 },
+ { 0x1D59, 54538 },
+ { 0x1D5A, 54436 },
+ { 0x1D5B, 54284 },
+ { 0x1D5C, 54323 },
+ { 0x1D5D, 54357 },
+ { 0x1D5E, 54392 },
+ { 0x1D5F, 54379 },
+ { 0x1D60, 54387 },
+ { 0x1D61, 54327 },
+ { 0x1D62, 20792 },
+ { 0x1D63, 20807 },
+ { 0x1D64, 20812 },
+ { 0x1D65, 20817 },
+ { 0x1D66, 13101 },
+ { 0x1D67, 13106 },
+ { 0x1D68, 13096 },
+ { 0x1D69, 13091 },
+ { 0x1D6A, 13086 },
+ { 0x1D6B, 17177 },
+ { 0x1D6C, 14742 },
+ { 0x1D6D, 14886 },
+ { 0x1D6E, 15140 },
+ { 0x1D6F, 15661 },
+ { 0x1D70, 15745 },
+ { 0x1D71, 16100 },
+ { 0x1D72, 16239 },
+ { 0x1D73, 16271 },
+ { 0x1D74, 16370 },
+ { 0x1D75, 16446 },
+ { 0x1D76, 16999 },
+ { 0x1D77, 17549 },
+ { 0x1D78, 54782 },
+ { 0x1D79, 17723 },
+ { 0x1D7A, 17162 },
+ { 0x1D7B, 17883 },
+ { 0x1D7C, 17331 },
+ { 0x1D7D, 16107 },
+ { 0x1D7E, 17890 },
+ { 0x1D7F, 17747 },
+ { 0x1D80, 14761 },
+ { 0x1D81, 14911 },
+ { 0x1D82, 15147 },
+ { 0x1D83, 15207 },
+ { 0x1D84, 15493 },
+ { 0x1D85, 15610 },
+ { 0x1D86, 15668 },
+ { 0x1D87, 15758 },
+ { 0x1D88, 16121 },
+ { 0x1D89, 16258 },
+ { 0x1D8A, 16383 },
+ { 0x1D8B, 17211 },
+ { 0x1D8C, 16764 },
+ { 0x1D8D, 16844 },
+ { 0x1D8E, 17012 },
+ { 0x1D8F, 14656 },
+ { 0x1D90, 17433 },
+ { 0x1D91, 14859 },
+ { 0x1D92, 15061 },
+ { 0x1D93, 17375 },
+ { 0x1D94, 17791 },
+ { 0x1D95, 17458 },
+ { 0x1D96, 15395 },
+ { 0x1D97, 17388 },
+ { 0x1D98, 17218 },
+ { 0x1D99, 16708 },
+ { 0x1D9A, 17251 },
+ { 0x1D9B, 54477 },
+ { 0x1D9C, 54144 },
+ { 0x1D9D, 54148 },
+ { 0x1D9E, 54339 },
+ { 0x1D9F, 54526 },
+ { 0x1DA0, 54162 },
+ { 0x1DA1, 54515 },
+ { 0x1DA2, 54416 },
+ { 0x1DA3, 54426 },
+ { 0x1DA4, 54180 },
+ { 0x1DA5, 54361 },
+ { 0x1DA6, 54482 },
+ { 0x1DA7, 54487 },
+ { 0x1DA8, 54190 },
+ { 0x1DA9, 54211 },
+ { 0x1DAA, 54204 },
+ { 0x1DAB, 54494 },
+ { 0x1DAC, 54222 },
+ { 0x1DAD, 54441 },
+ { 0x1DAE, 54228 },
+ { 0x1DAF, 54235 },
+ { 0x1DB0, 54499 },
+ { 0x1DB1, 54405 },
+ { 0x1DB2, 54347 },
+ { 0x1DB3, 54258 },
+ { 0x1DB4, 54335 },
+ { 0x1DB5, 54268 },
+ { 0x1DB6, 54279 },
+ { 0x1DB7, 54522 },
+ { 0x1DB8, 54504 },
+ { 0x1DB9, 54288 },
+ { 0x1DBA, 54461 },
+ { 0x1DBB, 54306 },
+ { 0x1DBC, 54316 },
+ { 0x1DBD, 54310 },
+ { 0x1DBE, 54343 },
+ { 0x1DBF, 54401 },
+ { 0x1DC0, 57864 },
+ { 0x1DC1, 57860 },
+ { 0x1DC2, 57834 },
+ { 0x1DC3, 58302 },
+ { 0x1DC4, 58317 },
+ { 0x1DC5, 58315 },
+ { 0x1DC6, 58321 },
+ { 0x1DC7, 58311 },
+ { 0x1DC8, 58333 },
+ { 0x1DC9, 58331 },
+ { 0x1DCA, 57657 },
+ { 0x1DCB, 58313 },
+ { 0x1DCC, 58319 },
+ { 0x1DCD, 57933 },
+ { 0x1DCE, 57961 },
+ { 0x1DCF, 57977 },
+ { 0x1DD0, 57389 },
+ { 0x1DD1, 57396 },
+ { 0x1DD2, 57399 },
+ { 0x1DD3, 57731 },
+ { 0x1DD4, 57699 },
+ { 0x1DD5, 57704 },
+ { 0x1DD6, 57709 },
+ { 0x1DD7, 57596 },
+ { 0x1DD8, 57725 },
+ { 0x1DD9, 57714 },
+ { 0x1DDA, 57612 },
+ { 0x1DDB, 57739 },
+ { 0x1DDC, 57627 },
+ { 0x1DDD, 57632 },
+ { 0x1DDE, 57745 },
+ { 0x1DDF, 57751 },
+ { 0x1DE0, 57642 },
+ { 0x1DE1, 57757 },
+ { 0x1DE2, 57763 },
+ { 0x1DE3, 57663 },
+ { 0x1DE4, 57669 },
+ { 0x1DE5, 57719 },
+ { 0x1DE6, 57694 },
+ { 0x1DFE, 57476 },
+ { 0x1DFF, 57806 },
+ { 0x1E00, 18281 },
+ { 0x1E01, 14523 },
+ { 0x1E02, 18458 },
+ { 0x1E03, 14715 },
+ { 0x1E04, 18465 },
+ { 0x1E05, 14722 },
+ { 0x1E06, 18478 },
+ { 0x1E07, 14735 },
+ { 0x1E08, 18538 },
+ { 0x1E09, 14815 },
+ { 0x1E0A, 18556 },
+ { 0x1E0B, 14833 },
+ { 0x1E0C, 18563 },
+ { 0x1E0D, 14840 },
+ { 0x1E0E, 18576 },
+ { 0x1E0F, 14867 },
+ { 0x1E10, 18619 },
+ { 0x1E11, 14905 },
+ { 0x1E12, 18625 },
+ { 0x1E13, 14918 },
+ { 0x1E14, 18715 },
+ { 0x1E15, 15014 },
+ { 0x1E16, 18707 },
+ { 0x1E17, 15006 },
+ { 0x1E18, 18810 },
+ { 0x1E19, 15116 },
+ { 0x1E1A, 18687 },
+ { 0x1E1B, 14986 },
+ { 0x1E1C, 18741 },
+ { 0x1E1D, 15040 },
+ { 0x1E1E, 18821 },
+ { 0x1E1F, 15127 },
+ { 0x1E20, 18869 },
+ { 0x1E21, 15189 },
+ { 0x1E22, 18897 },
+ { 0x1E23, 15224 },
+ { 0x1E24, 18904 },
+ { 0x1E25, 15231 },
+ { 0x1E26, 18942 },
+ { 0x1E27, 15282 },
+ { 0x1E28, 18930 },
+ { 0x1E29, 15270 },
+ { 0x1E2A, 18911 },
+ { 0x1E2B, 15251 },
+ { 0x1E2C, 19009 },
+ { 0x1E2D, 15342 },
+ { 0x1E2E, 19054 },
+ { 0x1E2F, 15387 },
+ { 0x1E30, 19108 },
+ { 0x1E31, 15460 },
+ { 0x1E32, 19088 },
+ { 0x1E33, 15440 },
+ { 0x1E34, 19101 },
+ { 0x1E35, 15453 },
+ { 0x1E36, 19164 },
+ { 0x1E37, 15523 },
+ { 0x1E38, 19171 },
+ { 0x1E39, 15530 },
+ { 0x1E3A, 19187 },
+ { 0x1E3B, 15558 },
+ { 0x1E3C, 19247 },
+ { 0x1E3D, 15624 },
+ { 0x1E3E, 19278 },
+ { 0x1E3F, 15655 },
+ { 0x1E40, 19258 },
+ { 0x1E41, 15635 },
+ { 0x1E42, 19265 },
+ { 0x1E43, 15642 },
+ { 0x1E44, 19288 },
+ { 0x1E45, 15679 },
+ { 0x1E46, 19295 },
+ { 0x1E47, 15686 },
+ { 0x1E48, 19309 },
+ { 0x1E49, 15706 },
+ { 0x1E4A, 19362 },
+ { 0x1E4B, 15772 },
+ { 0x1E4C, 19495 },
+ { 0x1E4D, 15920 },
+ { 0x1E4E, 19511 },
+ { 0x1E4F, 15936 },
+ { 0x1E50, 19547 },
+ { 0x1E51, 15972 },
+ { 0x1E52, 19539 },
+ { 0x1E53, 15964 },
+ { 0x1E54, 19676 },
+ { 0x1E55, 16094 },
+ { 0x1E56, 19663 },
+ { 0x1E57, 16081 },
+ { 0x1E58, 19732 },
+ { 0x1E59, 16177 },
+ { 0x1E5A, 19739 },
+ { 0x1E5B, 16184 },
+ { 0x1E5C, 19746 },
+ { 0x1E5D, 16191 },
+ { 0x1E5E, 19755 },
+ { 0x1E5F, 16200 },
+ { 0x1E60, 19815 },
+ { 0x1E61, 16296 },
+ { 0x1E62, 19822 },
+ { 0x1E63, 16303 },
+ { 0x1E64, 19845 },
+ { 0x1E65, 16332 },
+ { 0x1E66, 19860 },
+ { 0x1E67, 16347 },
+ { 0x1E68, 19829 },
+ { 0x1E69, 16310 },
+ { 0x1E6A, 19892 },
+ { 0x1E6B, 16400 },
+ { 0x1E6C, 19899 },
+ { 0x1E6D, 16407 },
+ { 0x1E6E, 19912 },
+ { 0x1E6F, 16426 },
+ { 0x1E70, 19958 },
+ { 0x1E71, 16492 },
+ { 0x1E72, 20167 },
+ { 0x1E73, 16701 },
+ { 0x1E74, 20081 },
+ { 0x1E75, 16615 },
+ { 0x1E76, 20180 },
+ { 0x1E77, 16721 },
+ { 0x1E78, 20073 },
+ { 0x1E79, 16607 },
+ { 0x1E7A, 20108 },
+ { 0x1E7B, 16642 },
+ { 0x1E7C, 20204 },
+ { 0x1E7D, 16758 },
+ { 0x1E7E, 20191 },
+ { 0x1E7F, 16732 },
+ { 0x1E80, 20247 },
+ { 0x1E81, 16815 },
+ { 0x1E82, 20241 },
+ { 0x1E83, 16809 },
+ { 0x1E84, 20253 },
+ { 0x1E85, 16821 },
+ { 0x1E86, 20221 },
+ { 0x1E87, 16782 },
+ { 0x1E88, 20228 },
+ { 0x1E89, 16789 },
+ { 0x1E8A, 20269 },
+ { 0x1E8B, 16837 },
+ { 0x1E8C, 20276 },
+ { 0x1E8D, 16851 },
+ { 0x1E8E, 20286 },
+ { 0x1E8F, 16861 },
+ { 0x1E90, 20416 },
+ { 0x1E91, 17032 },
+ { 0x1E92, 20372 },
+ { 0x1E93, 16954 },
+ { 0x1E94, 20385 },
+ { 0x1E95, 16973 },
+ { 0x1E96, 15244 },
+ { 0x1E97, 16479 },
+ { 0x1E98, 16802 },
+ { 0x1E99, 16894 },
+ { 0x1E9A, 14596 },
+ { 0x1E9B, 17346 },
+ { 0x1E9C, 17362 },
+ { 0x1E9D, 17354 },
+ { 0x1E9E, 20613 },
+ { 0x1E9F, 17440 },
+ { 0x1EA0, 18251 },
+ { 0x1EA1, 14493 },
+ { 0x1EA2, 18258 },
+ { 0x1EA3, 14500 },
+ { 0x1EA4, 18430 },
+ { 0x1EA5, 14687 },
+ { 0x1EA6, 18438 },
+ { 0x1EA7, 14695 },
+ { 0x1EA8, 18421 },
+ { 0x1EA9, 14678 },
+ { 0x1EAA, 18446 },
+ { 0x1EAB, 14703 },
+ { 0x1EAC, 18412 },
+ { 0x1EAD, 14669 },
+ { 0x1EAE, 18318 },
+ { 0x1EAF, 14560 },
+ { 0x1EB0, 18326 },
+ { 0x1EB1, 14568 },
+ { 0x1EB2, 18309 },
+ { 0x1EB3, 14551 },
+ { 0x1EB4, 18334 },
+ { 0x1EB5, 14576 },
+ { 0x1EB6, 18300 },
+ { 0x1EB7, 14542 },
+ { 0x1EB8, 18643 },
+ { 0x1EB9, 14936 },
+ { 0x1EBA, 18650 },
+ { 0x1EBB, 14943 },
+ { 0x1EBC, 18681 },
+ { 0x1EBD, 14980 },
+ { 0x1EBE, 18786 },
+ { 0x1EBF, 15092 },
+ { 0x1EC0, 18794 },
+ { 0x1EC1, 15100 },
+ { 0x1EC2, 18777 },
+ { 0x1EC3, 15083 },
+ { 0x1EC4, 18802 },
+ { 0x1EC5, 15108 },
+ { 0x1EC6, 18768 },
+ { 0x1EC7, 15074 },
+ { 0x1EC8, 18972 },
+ { 0x1EC9, 15305 },
+ { 0x1ECA, 18965 },
+ { 0x1ECB, 15298 },
+ { 0x1ECC, 19389 },
+ { 0x1ECD, 15806 },
+ { 0x1ECE, 19396 },
+ { 0x1ECF, 15821 },
+ { 0x1ED0, 19635 },
+ { 0x1ED1, 16053 },
+ { 0x1ED2, 19643 },
+ { 0x1ED3, 16061 },
+ { 0x1ED4, 19626 },
+ { 0x1ED5, 16044 },
+ { 0x1ED6, 19651 },
+ { 0x1ED7, 16069 },
+ { 0x1ED8, 19617 },
+ { 0x1ED9, 16035 },
+ { 0x1EDA, 19427 },
+ { 0x1EDB, 15852 },
+ { 0x1EDC, 19435 },
+ { 0x1EDD, 15860 },
+ { 0x1EDE, 19418 },
+ { 0x1EDF, 15843 },
+ { 0x1EE0, 19443 },
+ { 0x1EE1, 15868 },
+ { 0x1EE2, 19409 },
+ { 0x1EE3, 15834 },
+ { 0x1EE4, 19974 },
+ { 0x1EE5, 16508 },
+ { 0x1EE6, 19981 },
+ { 0x1EE7, 16515 },
+ { 0x1EE8, 20012 },
+ { 0x1EE9, 16546 },
+ { 0x1EEA, 20020 },
+ { 0x1EEB, 16554 },
+ { 0x1EEC, 20003 },
+ { 0x1EED, 16537 },
+ { 0x1EEE, 20028 },
+ { 0x1EEF, 16562 },
+ { 0x1EF0, 19994 },
+ { 0x1EF1, 16528 },
+ { 0x1EF2, 20325 },
+ { 0x1EF3, 16907 },
+ { 0x1EF4, 20293 },
+ { 0x1EF5, 16868 },
+ { 0x1EF6, 20306 },
+ { 0x1EF7, 16881 },
+ { 0x1EF8, 20331 },
+ { 0x1EF9, 16913 },
+ { 0x1EFA, 20759 },
+ { 0x1EFB, 17868 },
+ { 0x1EFC, 20754 },
+ { 0x1EFD, 17863 },
+ { 0x1EFE, 20313 },
+ { 0x1EFF, 16888 },
+ { 0x1F00, 11230 },
+ { 0x1F01, 11162 },
+ { 0x1F02, 11254 },
+ { 0x1F03, 11186 },
+ { 0x1F04, 11236 },
+ { 0x1F05, 11168 },
+ { 0x1F06, 11272 },
+ { 0x1F07, 11204 },
+ { 0x1F08, 12506 },
+ { 0x1F09, 12438 },
+ { 0x1F0A, 12530 },
+ { 0x1F0B, 12462 },
+ { 0x1F0C, 12512 },
+ { 0x1F0D, 12444 },
+ { 0x1F0E, 12548 },
+ { 0x1F0F, 12480 },
+ { 0x1F10, 11631 },
+ { 0x1F11, 11609 },
+ { 0x1F12, 11645 },
+ { 0x1F13, 11623 },
+ { 0x1F14, 11637 },
+ { 0x1F15, 11615 },
+ { 0x1F18, 12829 },
+ { 0x1F19, 12807 },
+ { 0x1F1A, 12843 },
+ { 0x1F1B, 12821 },
+ { 0x1F1C, 12835 },
+ { 0x1F1D, 12813 },
+ { 0x1F20, 10850 },
+ { 0x1F21, 10782 },
+ { 0x1F22, 10874 },
+ { 0x1F23, 10806 },
+ { 0x1F24, 10856 },
+ { 0x1F25, 10788 },
+ { 0x1F26, 10892 },
+ { 0x1F27, 10824 },
+ { 0x1F28, 12200 },
+ { 0x1F29, 12132 },
+ { 0x1F2A, 12224 },
+ { 0x1F2B, 12156 },
+ { 0x1F2C, 12206 },
+ { 0x1F2D, 12138 },
+ { 0x1F2E, 12242 },
+ { 0x1F2F, 12174 },
+ { 0x1F30, 11042 },
+ { 0x1F31, 11012 },
+ { 0x1F32, 11056 },
+ { 0x1F33, 11026 },
+ { 0x1F34, 11048 },
+ { 0x1F35, 11018 },
+ { 0x1F36, 11064 },
+ { 0x1F37, 11034 },
+ { 0x1F38, 12364 },
+ { 0x1F39, 12334 },
+ { 0x1F3A, 12378 },
+ { 0x1F3B, 12348 },
+ { 0x1F3C, 12370 },
+ { 0x1F3D, 12340 },
+ { 0x1F3E, 12386 },
+ { 0x1F3F, 12356 },
+ { 0x1F40, 11697 },
+ { 0x1F41, 11675 },
+ { 0x1F42, 11711 },
+ { 0x1F43, 11689 },
+ { 0x1F44, 11703 },
+ { 0x1F45, 11681 },
+ { 0x1F48, 12895 },
+ { 0x1F49, 12873 },
+ { 0x1F4A, 12909 },
+ { 0x1F4B, 12887 },
+ { 0x1F4C, 12901 },
+ { 0x1F4D, 12879 },
+ { 0x1F50, 11771 },
+ { 0x1F51, 11741 },
+ { 0x1F52, 11785 },
+ { 0x1F53, 11755 },
+ { 0x1F54, 11777 },
+ { 0x1F55, 11747 },
+ { 0x1F56, 11793 },
+ { 0x1F57, 11763 },
+ { 0x1F59, 12939 },
+ { 0x1F5B, 12953 },
+ { 0x1F5D, 12945 },
+ { 0x1F5F, 12961 },
+ { 0x1F60, 11461 },
+ { 0x1F61, 11393 },
+ { 0x1F62, 11485 },
+ { 0x1F63, 11417 },
+ { 0x1F64, 11467 },
+ { 0x1F65, 11399 },
+ { 0x1F66, 11503 },
+ { 0x1F67, 11435 },
+ { 0x1F68, 12698 },
+ { 0x1F69, 12630 },
+ { 0x1F6A, 12722 },
+ { 0x1F6B, 12654 },
+ { 0x1F6C, 12704 },
+ { 0x1F6D, 12636 },
+ { 0x1F6E, 12740 },
+ { 0x1F6F, 12672 },
+ { 0x1F70, 11304 },
+ { 0x1F71, 11148 },
+ { 0x1F72, 11659 },
+ { 0x1F73, 11603 },
+ { 0x1F74, 10924 },
+ { 0x1F75, 10768 },
+ { 0x1F76, 11078 },
+ { 0x1F77, 11006 },
+ { 0x1F78, 11725 },
+ { 0x1F79, 11669 },
+ { 0x1F7A, 11807 },
+ { 0x1F7B, 11735 },
+ { 0x1F7C, 11535 },
+ { 0x1F7D, 11379 },
+ { 0x1F80, 11290 },
+ { 0x1F81, 11222 },
+ { 0x1F82, 11262 },
+ { 0x1F83, 11194 },
+ { 0x1F84, 11244 },
+ { 0x1F85, 11176 },
+ { 0x1F86, 11280 },
+ { 0x1F87, 11212 },
+ { 0x1F88, 12566 },
+ { 0x1F89, 12498 },
+ { 0x1F8A, 12538 },
+ { 0x1F8B, 12470 },
+ { 0x1F8C, 12520 },
+ { 0x1F8D, 12452 },
+ { 0x1F8E, 12556 },
+ { 0x1F8F, 12488 },
+ { 0x1F90, 10910 },
+ { 0x1F91, 10842 },
+ { 0x1F92, 10882 },
+ { 0x1F93, 10814 },
+ { 0x1F94, 10864 },
+ { 0x1F95, 10796 },
+ { 0x1F96, 10900 },
+ { 0x1F97, 10832 },
+ { 0x1F98, 12260 },
+ { 0x1F99, 12192 },
+ { 0x1F9A, 12232 },
+ { 0x1F9B, 12164 },
+ { 0x1F9C, 12214 },
+ { 0x1F9D, 12146 },
+ { 0x1F9E, 12250 },
+ { 0x1F9F, 12182 },
+ { 0x1FA0, 11521 },
+ { 0x1FA1, 11453 },
+ { 0x1FA2, 11493 },
+ { 0x1FA3, 11425 },
+ { 0x1FA4, 11475 },
+ { 0x1FA5, 11407 },
+ { 0x1FA6, 11511 },
+ { 0x1FA7, 11443 },
+ { 0x1FA8, 12758 },
+ { 0x1FA9, 12690 },
+ { 0x1FAA, 12730 },
+ { 0x1FAB, 12662 },
+ { 0x1FAC, 12712 },
+ { 0x1FAD, 12644 },
+ { 0x1FAE, 12748 },
+ { 0x1FAF, 12680 },
+ { 0x1FB0, 11324 },
+ { 0x1FB1, 11318 },
+ { 0x1FB2, 11310 },
+ { 0x1FB3, 11344 },
+ { 0x1FB4, 11154 },
+ { 0x1FB6, 11330 },
+ { 0x1FB7, 11336 },
+ { 0x1FB8, 12592 },
+ { 0x1FB9, 12586 },
+ { 0x1FBA, 12580 },
+ { 0x1FBB, 12432 },
+ { 0x1FBC, 12598 },
+ { 0x1FBD, 13025 },
+ { 0x1FBE, 13524 },
+ { 0x1FBF, 10724 },
+ { 0x1FC0, 13372 },
+ { 0x1FC1, 13079 },
+ { 0x1FC2, 10930 },
+ { 0x1FC3, 10952 },
+ { 0x1FC4, 10774 },
+ { 0x1FC6, 10938 },
+ { 0x1FC7, 10944 },
+ { 0x1FC8, 12857 },
+ { 0x1FC9, 12801 },
+ { 0x1FCA, 12274 },
+ { 0x1FCB, 12126 },
+ { 0x1FCC, 12280 },
+ { 0x1FCD, 10730 },
+ { 0x1FCE, 10726 },
+ { 0x1FCF, 10734 },
+ { 0x1FD0, 11090 },
+ { 0x1FD1, 11084 },
+ { 0x1FD2, 11118 },
+ { 0x1FD3, 11102 },
+ { 0x1FD6, 11134 },
+ { 0x1FD7, 11126 },
+ { 0x1FD8, 12412 },
+ { 0x1FD9, 12406 },
+ { 0x1FDA, 12400 },
+ { 0x1FDB, 12328 },
+ { 0x1FDD, 10706 },
+ { 0x1FDE, 10702 },
+ { 0x1FDF, 10710 },
+ { 0x1FE0, 11819 },
+ { 0x1FE1, 11813 },
+ { 0x1FE2, 11847 },
+ { 0x1FE3, 11831 },
+ { 0x1FE4, 10976 },
+ { 0x1FE5, 10970 },
+ { 0x1FE6, 11863 },
+ { 0x1FE7, 11855 },
+ { 0x1FE8, 12987 },
+ { 0x1FE9, 12981 },
+ { 0x1FEA, 12975 },
+ { 0x1FEB, 12933 },
+ { 0x1FEC, 12298 },
+ { 0x1FED, 13075 },
+ { 0x1FEE, 13071 },
+ { 0x1FEF, 11900 },
+ { 0x1FF2, 11541 },
+ { 0x1FF3, 11563 },
+ { 0x1FF4, 11385 },
+ { 0x1FF6, 11549 },
+ { 0x1FF7, 11555 },
+ { 0x1FF8, 12923 },
+ { 0x1FF9, 12867 },
+ { 0x1FFA, 12772 },
+ { 0x1FFB, 12624 },
+ { 0x1FFC, 12778 },
+ { 0x1FFD, 10692 },
+ { 0x1FFE, 10700 },
+ { 0x2000, 77 },
+ { 0x2001, 71 },
+ { 0x2002, 79 },
+ { 0x2003, 73 },
+ { 0x2004, 74478 },
+ { 0x2005, 68661 },
+ { 0x2006, 68597 },
+ { 0x2007, 31771 },
+ { 0x2008, 69272 },
+ { 0x2009, 10051 },
+ { 0x200A, 9123 },
+ { 0x200B, 10089 },
+ { 0x200C, 10099 },
+ { 0x200D, 10092 },
+ { 0x200E, 74617 },
+ { 0x200F, 75041 },
+ { 0x2010, 33424 },
+ { 0x2011, 74240 },
+ { 0x2012, 31769 },
+ { 0x2013, 75 },
+ { 0x2014, 69 },
+ { 0x2015, 67636 },
+ { 0x2016, 31692 },
+ { 0x2017, 31548 },
+ { 0x2018, 9381 },
+ { 0x2019, 21908 },
+ { 0x201A, 35854 },
+ { 0x201B, 35868 },
+ { 0x201C, 9365 },
+ { 0x201D, 21892 },
+ { 0x201E, 31570 },
+ { 0x201F, 31700 },
+ { 0x2020, 31169 },
+ { 0x2021, 31587 },
+ { 0x2022, 30312 },
+ { 0x2023, 68599 },
+ { 0x2024, 7161 },
+ { 0x2025, 7766 },
+ { 0x2026, 67661 },
+ { 0x2027, 68663 },
+ { 0x2028, 9483 },
+ { 0x2029, 65751 },
+ { 0x202A, 74621 },
+ { 0x202B, 75045 },
+ { 0x202C, 7173 },
+ { 0x202D, 74619 },
+ { 0x202E, 75043 },
+ { 0x202F, 35576 },
+ { 0x2030, 7170 },
+ { 0x2031, 7164 },
+ { 0x2032, 21742 },
+ { 0x2033, 31574 },
+ { 0x2034, 37619 },
+ { 0x2035, 55468 },
+ { 0x2036, 55475 },
+ { 0x2037, 55491 },
+ { 0x2038, 10441 },
+ { 0x2039, 35858 },
+ { 0x203A, 35863 },
+ { 0x203B, 65808 },
+ { 0x203C, 31695 },
+ { 0x203D, 69263 },
+ { 0x203E, 54945 },
+ { 0x203F, 56009 },
+ { 0x2040, 57360 },
+ { 0x2041, 10442 },
+ { 0x2042, 45084 },
+ { 0x2043, 33428 },
+ { 0x2044, 51779 },
+ { 0x2045, 9404 },
+ { 0x2046, 21931 },
+ { 0x2047, 31668 },
+ { 0x2048, 55448 },
+ { 0x2049, 68658 },
+ { 0x204A, 55895 },
+ { 0x204B, 55494 },
+ { 0x204C, 10314 },
+ { 0x204D, 10331 },
+ { 0x204E, 6038 },
+ { 0x204F, 55505 },
+ { 0x2050, 10452 },
+ { 0x2051, 7789 },
+ { 0x2052, 66839 },
+ { 0x2053, 22751 },
+ { 0x2054, 53355 },
+ { 0x2055, 31779 },
+ { 0x2056, 22989 },
+ { 0x2057, 65761 },
+ { 0x2058, 9100 },
+ { 0x2059, 9094 },
+ { 0x205A, 7769 },
+ { 0x205B, 9097 },
+ { 0x205C, 31529 },
+ { 0x205D, 55910 },
+ { 0x205E, 56031 },
+ { 0x205F, 35557 },
+ { 0x2060, 10087 },
+ { 0x2061, 51784 },
+ { 0x2062, 64310 },
+ { 0x2063, 64312 },
+ { 0x2064, 64308 },
+ { 0x206A, 40633 },
+ { 0x206B, 44713 },
+ { 0x206C, 40629 },
+ { 0x206D, 44709 },
+ { 0x206E, 54880 },
+ { 0x206F, 42828 },
+ { 0x2070, 69298 },
+ { 0x2071, 69302 },
+ { 0x2074, 69288 },
+ { 0x2075, 69286 },
+ { 0x2076, 69282 },
+ { 0x2077, 69317 },
+ { 0x2078, 69300 },
+ { 0x2079, 69293 },
+ { 0x207A, 69295 },
+ { 0x207B, 69312 },
+ { 0x207C, 69321 },
+ { 0x207D, 69290 },
+ { 0x207E, 69314 },
+ { 0x207F, 69307 },
+ { 0x2080, 65843 },
+ { 0x2081, 65825 },
+ { 0x2082, 65829 },
+ { 0x2083, 65854 },
+ { 0x2084, 65833 },
+ { 0x2085, 65831 },
+ { 0x2086, 65827 },
+ { 0x2087, 65852 },
+ { 0x2088, 65845 },
+ { 0x2089, 65838 },
+ { 0x208A, 65840 },
+ { 0x208B, 65847 },
+ { 0x208C, 65856 },
+ { 0x208D, 65835 },
+ { 0x208E, 65849 },
+ { 0x2090, 20782 },
+ { 0x2091, 20787 },
+ { 0x2092, 20802 },
+ { 0x2093, 20822 },
+ { 0x2094, 20827 },
+ { 0x20A0, 74597 },
+ { 0x20A1, 10456 },
+ { 0x20A2, 48519 },
+ { 0x20A3, 31787 },
+ { 0x20A4, 9505 },
+ { 0x20A5, 9596 },
+ { 0x20A6, 21269 },
+ { 0x20A7, 35651 },
+ { 0x20A8, 22442 },
+ { 0x20A9, 8709 },
+ { 0x20AA, 6507 },
+ { 0x20AB, 9068 },
+ { 0x20AC, 9089 },
+ { 0x20AD, 5797 },
+ { 0x20AE, 37669 },
+ { 0x20AF, 40498 },
+ { 0x20B0, 31791 },
+ { 0x20B1, 9631 },
+ { 0x20B2, 40560 },
+ { 0x20B3, 37779 },
+ { 0x20B4, 40627 },
+ { 0x20B5, 8727 },
+ { 0x20D0, 57472 },
+ { 0x20D1, 57795 },
+ { 0x20D2, 57497 },
+ { 0x20D3, 57829 },
+ { 0x20D4, 58327 },
+ { 0x20D5, 58236 },
+ { 0x20D6, 57454 },
+ { 0x20D7, 57787 },
+ { 0x20D8, 57512 },
+ { 0x20D9, 58232 },
+ { 0x20DA, 58323 },
+ { 0x20DB, 57837 },
+ { 0x20DC, 57423 },
+ { 0x20DD, 58245 },
+ { 0x20DE, 58258 },
+ { 0x20DF, 58266 },
+ { 0x20E0, 58248 },
+ { 0x20E1, 57462 },
+ { 0x20E2, 58255 },
+ { 0x20E3, 58252 },
+ { 0x20E4, 58261 },
+ { 0x20E5, 57987 },
+ { 0x20E6, 57928 },
+ { 0x20E7, 57980 },
+ { 0x20E8, 57967 },
+ { 0x20E9, 57515 },
+ { 0x20EA, 58269 },
+ { 0x20EB, 57484 },
+ { 0x20EC, 58296 },
+ { 0x20ED, 58273 },
+ { 0x20EE, 57458 },
+ { 0x20EF, 57791 },
+ { 0x20F0, 57998 },
+ { 0x2100, 37774 },
+ { 0x2101, 56104 },
+ { 0x2102, 74558 },
+ { 0x2103, 31181 },
+ { 0x2104, 30465 },
+ { 0x2105, 8725 },
+ { 0x2106, 8723 },
+ { 0x2107, 10628 },
+ { 0x2108, 43021 },
+ { 0x2109, 31183 },
+ { 0x210A, 35815 },
+ { 0x210B, 35833 },
+ { 0x210C, 69390 },
+ { 0x210D, 74561 },
+ { 0x210E, 35654 },
+ { 0x210F, 35656 },
+ { 0x2110, 35836 },
+ { 0x2111, 69393 },
+ { 0x2112, 35839 },
+ { 0x2113, 35818 },
+ { 0x2114, 0 },
+ { 0x2115, 74564 },
+ { 0x2116, 35635 },
+ { 0x2117, 22671 },
+ { 0x2118, 35845 },
+ { 0x2119, 74567 },
+ { 0x211A, 74570 },
+ { 0x211B, 35848 },
+ { 0x211C, 69396 },
+ { 0x211D, 74573 },
+ { 0x211E, 74242 },
+ { 0x211F, 55455 },
+ { 0x2120, 43025 },
+ { 0x2121, 66040 },
+ { 0x2122, 23055 },
+ { 0x2123, 56010 },
+ { 0x2124, 74576 },
+ { 0x2125, 21731 },
+ { 0x2126, 6813 },
+ { 0x2127, 53346 },
+ { 0x2128, 69399 },
+ { 0x2129, 37676 },
+ { 0x212A, 34094 },
+ { 0x212B, 44717 },
+ { 0x212C, 35824 },
+ { 0x212D, 69387 },
+ { 0x212E, 63380 },
+ { 0x212F, 35812 },
+ { 0x2130, 35827 },
+ { 0x2131, 35830 },
+ { 0x2132, 37684 },
+ { 0x2133, 35842 },
+ { 0x2134, 35821 },
+ { 0x2135, 8716 },
+ { 0x2136, 4380 },
+ { 0x2137, 10636 },
+ { 0x2138, 10477 },
+ { 0x2139, 69246 },
+ { 0x213A, 43017 },
+ { 0x213B, 63383 },
+ { 0x213C, 74532 },
+ { 0x213D, 74535 },
+ { 0x213E, 74582 },
+ { 0x213F, 74579 },
+ { 0x2140, 74529 },
+ { 0x2141, 37689 },
+ { 0x2142, 37693 },
+ { 0x2143, 55507 },
+ { 0x2144, 37697 },
+ { 0x2145, 74554 },
+ { 0x2146, 74538 },
+ { 0x2147, 74542 },
+ { 0x2148, 74546 },
+ { 0x2149, 74550 },
+ { 0x214A, 55384 },
+ { 0x214B, 37687 },
+ { 0x214C, 7168 },
+ { 0x214D, 69338 },
+ { 0x214E, 37681 },
+ { 0x214F, 36848 },
+ { 0x2153, 37724 },
+ { 0x2154, 37740 },
+ { 0x2155, 37716 },
+ { 0x2156, 37736 },
+ { 0x2157, 37760 },
+ { 0x2158, 37752 },
+ { 0x2159, 37720 },
+ { 0x215A, 37744 },
+ { 0x215B, 37728 },
+ { 0x215C, 37764 },
+ { 0x215D, 37748 },
+ { 0x215E, 37756 },
+ { 0x215F, 51781 },
+ { 0x2160, 22020 },
+ { 0x2161, 22057 },
+ { 0x2162, 22095 },
+ { 0x2163, 22071 },
+ { 0x2164, 22060 },
+ { 0x2165, 22042 },
+ { 0x2166, 22092 },
+ { 0x2167, 22077 },
+ { 0x2168, 22074 },
+ { 0x2169, 22050 },
+ { 0x216A, 22098 },
+ { 0x216B, 22101 },
+ { 0x216C, 22080 },
+ { 0x216D, 22023 },
+ { 0x216E, 22063 },
+ { 0x216F, 22032 },
+ { 0x2170, 22521 },
+ { 0x2171, 22543 },
+ { 0x2172, 22576 },
+ { 0x2173, 22556 },
+ { 0x2174, 22547 },
+ { 0x2175, 22535 },
+ { 0x2176, 22572 },
+ { 0x2177, 22564 },
+ { 0x2178, 22560 },
+ { 0x2179, 22539 },
+ { 0x217A, 22580 },
+ { 0x217B, 22584 },
+ { 0x217C, 22568 },
+ { 0x217D, 22525 },
+ { 0x217E, 22551 },
+ { 0x217F, 22530 },
+ { 0x2180, 22036 },
+ { 0x2181, 22067 },
+ { 0x2182, 22053 },
+ { 0x2183, 22104 },
+ { 0x2184, 17753 },
+ { 0x2185, 22045 },
+ { 0x2186, 22083 },
+ { 0x2187, 22088 },
+ { 0x2188, 22027 },
+ { 0x2190, 64325 },
+ { 0x2191, 44542 },
+ { 0x2192, 67992 },
+ { 0x2193, 63251 },
+ { 0x2194, 9258 },
+ { 0x2195, 303 },
+ { 0x2196, 21324 },
+ { 0x2197, 21277 },
+ { 0x2198, 22674 },
+ { 0x2199, 22713 },
+ { 0x219A, 64414 },
+ { 0x219B, 68077 },
+ { 0x219C, 64322 },
+ { 0x219D, 67989 },
+ { 0x219E, 64318 },
+ { 0x219F, 44538 },
+ { 0x21A0, 67985 },
+ { 0x21A1, 63247 },
+ { 0x21A2, 64384 },
+ { 0x21A3, 68042 },
+ { 0x21A4, 64345 },
+ { 0x21A5, 44548 },
+ { 0x21A6, 68003 },
+ { 0x21A7, 63257 },
+ { 0x21A8, 306 },
+ { 0x21A9, 64371 },
+ { 0x21AA, 68029 },
+ { 0x21AB, 64375 },
+ { 0x21AC, 68033 },
+ { 0x21AD, 9254 },
+ { 0x21AE, 9268 },
+ { 0x21AF, 63312 },
+ { 0x21B0, 44552 },
+ { 0x21B1, 44557 },
+ { 0x21B2, 63261 },
+ { 0x21B3, 63266 },
+ { 0x21B4, 68061 },
+ { 0x21B5, 63271 },
+ { 0x21B6, 74484 },
+ { 0x21B7, 57362 },
+ { 0x21B8, 21327 },
+ { 0x21B9, 64331 },
+ { 0x21BA, 74488 },
+ { 0x21BB, 57366 },
+ { 0x21BC, 64592 },
+ { 0x21BD, 64597 },
+ { 0x21BE, 44689 },
+ { 0x21BF, 44684 },
+ { 0x21C0, 68257 },
+ { 0x21C1, 68262 },
+ { 0x21C2, 63370 },
+ { 0x21C3, 63365 },
+ { 0x21C4, 68014 },
+ { 0x21C5, 44572 },
+ { 0x21C6, 64356 },
+ { 0x21C7, 64500 },
+ { 0x21C8, 44628 },
+ { 0x21C9, 68165 },
+ { 0x21CA, 63306 },
+ { 0x21CB, 64510 },
+ { 0x21CC, 68175 },
+ { 0x21CD, 64486 },
+ { 0x21CE, 9297 },
+ { 0x21CF, 68151 },
+ { 0x21D0, 64478 },
+ { 0x21D1, 44625 },
+ { 0x21D2, 68143 },
+ { 0x21D3, 63303 },
+ { 0x21D4, 9293 },
+ { 0x21D5, 319 },
+ { 0x21D6, 21365 },
+ { 0x21D7, 21314 },
+ { 0x21D8, 22709 },
+ { 0x21D9, 22736 },
+ { 0x21DA, 64507 },
+ { 0x21DB, 68172 },
+ { 0x21DC, 64602 },
+ { 0x21DD, 68267 },
+ { 0x21DE, 44562 },
+ { 0x21DF, 63276 },
+ { 0x21E0, 64471 },
+ { 0x21E1, 44622 },
+ { 0x21E2, 68136 },
+ { 0x21E3, 63300 },
+ { 0x21E4, 64327 },
+ { 0x21E5, 67994 },
+ { 0x21E6, 64468 },
+ { 0x21E7, 44581 },
+ { 0x21E8, 68128 },
+ { 0x21E9, 63295 },
+ { 0x21EA, 44605 },
+ { 0x21EB, 44584 },
+ { 0x21EC, 44597 },
+ { 0x21ED, 44589 },
+ { 0x21EE, 44610 },
+ { 0x21EF, 44614 },
+ { 0x21F0, 68131 },
+ { 0x21F1, 21333 },
+ { 0x21F2, 22677 },
+ { 0x21F3, 315 },
+ { 0x21F4, 21805 },
+ { 0x21F5, 63286 },
+ { 0x21F6, 22995 },
+ { 0x21F7, 64418 },
+ { 0x21F8, 68081 },
+ { 0x21F9, 9273 },
+ { 0x21FA, 64408 },
+ { 0x21FB, 68071 },
+ { 0x21FC, 9261 },
+ { 0x21FD, 64655 },
+ { 0x21FE, 68320 },
+ { 0x21FF, 9310 },
+ { 0x2200, 5791 },
+ { 0x2201, 66842 },
+ { 0x2202, 42971 },
+ { 0x2203, 22987 },
+ { 0x2204, 22983 },
+ { 0x2205, 10570 },
+ { 0x2206, 64305 },
+ { 0x2207, 21268 },
+ { 0x2208, 40500 },
+ { 0x2209, 6719 },
+ { 0x220A, 22599 },
+ { 0x220B, 48398 },
+ { 0x220C, 9033 },
+ { 0x220D, 22626 },
+ { 0x220E, 5788 },
+ { 0x220F, 21260 },
+ { 0x2210, 21262 },
+ { 0x2211, 21264 },
+ { 0x2212, 21178 },
+ { 0x2213, 74623 },
+ { 0x2214, 5780 },
+ { 0x2215, 50310 },
+ { 0x2216, 7176 },
+ { 0x2217, 45082 },
+ { 0x2218, 9706 },
+ { 0x2219, 30313 },
+ { 0x221A, 36200 },
+ { 0x221B, 9013 },
+ { 0x221C, 31785 },
+ { 0x221D, 74470 },
+ { 0x221E, 53300 },
+ { 0x221F, 21771 },
+ { 0x2220, 10106 },
+ { 0x2221, 53732 },
+ { 0x2222, 65815 },
+ { 0x2223, 40489 },
+ { 0x2224, 9023 },
+ { 0x2225, 54946 },
+ { 0x2226, 6764 },
+ { 0x2227, 40959 },
+ { 0x2228, 40927 },
+ { 0x2229, 69570 },
+ { 0x222A, 23058 },
+ { 0x222B, 53306 },
+ { 0x222C, 31664 },
+ { 0x222D, 37633 },
+ { 0x222E, 39790 },
+ { 0x222F, 43581 },
+ { 0x2230, 37710 },
+ { 0x2231, 57381 },
+ { 0x2232, 57378 },
+ { 0x2233, 74500 },
+ { 0x2234, 66307 },
+ { 0x2235, 37781 },
+ { 0x2236, 21746 },
+ { 0x2237, 67972 },
+ { 0x2238, 5784 },
+ { 0x2239, 31766 },
+ { 0x223A, 63794 },
+ { 0x223B, 67635 },
+ { 0x223C, 23021 },
+ { 0x223D, 55470 },
+ { 0x223E, 53349 },
+ { 0x223F, 9708 },
+ { 0x2240, 37772 },
+ { 0x2241, 6733 },
+ { 0x2242, 21204 },
+ { 0x2243, 75048 },
+ { 0x2244, 6777 },
+ { 0x2245, 74516 },
+ { 0x2246, 74505 },
+ { 0x2247, 42821 },
+ { 0x2248, 23692 },
+ { 0x2249, 6735 },
+ { 0x224A, 23687 },
+ { 0x224B, 37621 },
+ { 0x224C, 4011 },
+ { 0x224D, 67226 },
+ { 0x224E, 74602 },
+ { 0x224F, 67222 },
+ { 0x2250, 66827 },
+ { 0x2251, 74599 },
+ { 0x2252, 74519 },
+ { 0x2253, 13722 },
+ { 0x2254, 10458 },
+ { 0x2255, 31764 },
+ { 0x2256, 9695 },
+ { 0x2257, 9701 },
+ { 0x2258, 68616 },
+ { 0x2259, 63382 },
+ { 0x225A, 68654 },
+ { 0x225B, 9718 },
+ { 0x225C, 10479 },
+ { 0x225D, 10596 },
+ { 0x225E, 53730 },
+ { 0x225F, 67976 },
+ { 0x2260, 6730 },
+ { 0x2261, 64292 },
+ { 0x2262, 6767 },
+ { 0x2263, 55525 },
+ { 0x2264, 64658 },
+ { 0x2265, 69429 },
+ { 0x2266, 64722 },
+ { 0x2267, 69493 },
+ { 0x2268, 64712 },
+ { 0x2269, 69483 },
+ { 0x226A, 9599 },
+ { 0x226B, 9601 },
+ { 0x226C, 38099 },
+ { 0x226D, 6772 },
+ { 0x226E, 6770 },
+ { 0x226F, 6775 },
+ { 0x2270, 42793 },
+ { 0x2271, 42807 },
+ { 0x2272, 64692 },
+ { 0x2273, 69466 },
+ { 0x2274, 42798 },
+ { 0x2275, 42816 },
+ { 0x2276, 64699 },
+ { 0x2277, 69463 },
+ { 0x2278, 42803 },
+ { 0x2279, 42812 },
+ { 0x227A, 55334 },
+ { 0x227B, 55528 },
+ { 0x227C, 55335 },
+ { 0x227D, 55529 },
+ { 0x227E, 55339 },
+ { 0x227F, 55533 },
+ { 0x2280, 9052 },
+ { 0x2281, 9060 },
+ { 0x2282, 36469 },
+ { 0x2283, 55576 },
+ { 0x2284, 6711 },
+ { 0x2285, 6715 },
+ { 0x2286, 36471 },
+ { 0x2287, 55578 },
+ { 0x2288, 42779 },
+ { 0x2289, 42786 },
+ { 0x228A, 36484 },
+ { 0x228B, 55591 },
+ { 0x228C, 54875 },
+ { 0x228D, 54878 },
+ { 0x228E, 54876 },
+ { 0x228F, 36310 },
+ { 0x2290, 36425 },
+ { 0x2291, 36320 },
+ { 0x2292, 36435 },
+ { 0x2293, 36092 },
+ { 0x2294, 36094 },
+ { 0x2295, 38882 },
+ { 0x2296, 39182 },
+ { 0x2297, 39184 },
+ { 0x2298, 39468 },
+ { 0x2299, 38871 },
+ { 0x229A, 38884 },
+ { 0x229B, 39462 },
+ { 0x229C, 39194 },
+ { 0x229D, 38874 },
+ { 0x229E, 43560 },
+ { 0x229F, 43562 },
+ { 0x22A0, 43567 },
+ { 0x22A1, 43553 },
+ { 0x22A2, 21769 },
+ { 0x22A3, 9202 },
+ { 0x22A4, 9073 },
+ { 0x22A5, 326 },
+ { 0x22A6, 56111 },
+ { 0x22A7, 35572 },
+ { 0x22A8, 10054 },
+ { 0x22A9, 31782 },
+ { 0x22AA, 37641 },
+ { 0x22AB, 31686 },
+ { 0x22AC, 9020 },
+ { 0x22AD, 6725 },
+ { 0x22AE, 9017 },
+ { 0x22AF, 42772 },
+ { 0x22B0, 55379 },
+ { 0x22B1, 55573 },
+ { 0x22B2, 35580 },
+ { 0x22B3, 48401 },
+ { 0x22B4, 35583 },
+ { 0x22B5, 48405 },
+ { 0x22B6, 54929 },
+ { 0x22B7, 13720 },
+ { 0x22B8, 54874 },
+ { 0x22B9, 64288 },
+ { 0x22BA, 69248 },
+ { 0x22BB, 8711 },
+ { 0x22BC, 9603 },
+ { 0x22BD, 6710 },
+ { 0x22BE, 21773 },
+ { 0x22BF, 21972 },
+ { 0x22C0, 21257 },
+ { 0x22C1, 21254 },
+ { 0x22C2, 21266 },
+ { 0x22C3, 21218 },
+ { 0x22C4, 40327 },
+ { 0x22C5, 5786 },
+ { 0x22C6, 9720 },
+ { 0x22C7, 50312 },
+ { 0x22C8, 30294 },
+ { 0x22C9, 9372 },
+ { 0x22CA, 21899 },
+ { 0x22CB, 9461 },
+ { 0x22CC, 21988 },
+ { 0x22CD, 55472 },
+ { 0x22CE, 10471 },
+ { 0x22CF, 10474 },
+ { 0x22D0, 31610 },
+ { 0x22D1, 31673 },
+ { 0x22D2, 31698 },
+ { 0x22D3, 31585 },
+ { 0x22D4, 65756 },
+ { 0x22D5, 10616 },
+ { 0x22D6, 64728 },
+ { 0x22D7, 69499 },
+ { 0x22D8, 10057 },
+ { 0x22D9, 10060 },
+ { 0x22DA, 64775 },
+ { 0x22DB, 69546 },
+ { 0x22DC, 10608 },
+ { 0x22DD, 10612 },
+ { 0x22DE, 10600 },
+ { 0x22DF, 10604 },
+ { 0x22E0, 9055 },
+ { 0x22E1, 9063 },
+ { 0x22E2, 6750 },
+ { 0x22E3, 6757 },
+ { 0x22E4, 36313 },
+ { 0x22E5, 36428 },
+ { 0x22E6, 64717 },
+ { 0x22E7, 69488 },
+ { 0x22E8, 55343 },
+ { 0x22E9, 55537 },
+ { 0x22EA, 6739 },
+ { 0x22EB, 9038 },
+ { 0x22EC, 6743 },
+ { 0x22ED, 9044 },
+ { 0x22EE, 56096 },
+ { 0x22EF, 41192 },
+ { 0x22F0, 337 },
+ { 0x22F1, 9080 },
+ { 0x22F2, 40513 },
+ { 0x22F3, 40527 },
+ { 0x22F4, 22607 },
+ { 0x22F5, 40502 },
+ { 0x22F6, 40519 },
+ { 0x22F7, 22602 },
+ { 0x22F8, 40523 },
+ { 0x22F9, 40507 },
+ { 0x22FA, 48412 },
+ { 0x22FB, 48420 },
+ { 0x22FC, 22634 },
+ { 0x22FD, 48417 },
+ { 0x22FE, 22630 },
+ { 0x22FF, 12 },
+ { 0x2300, 50306 },
+ { 0x2301, 50318 },
+ { 0x2302, 13719 },
+ { 0x2303, 341 },
+ { 0x2304, 9084 },
+ { 0x2305, 67971 },
+ { 0x2306, 69271 },
+ { 0x2307, 10080 },
+ { 0x2308, 9431 },
+ { 0x2309, 21958 },
+ { 0x230A, 9249 },
+ { 0x230B, 21842 },
+ { 0x230C, 30268 },
+ { 0x230D, 30255 },
+ { 0x230E, 7747 },
+ { 0x230F, 7734 },
+ { 0x2310, 55456 },
+ { 0x2311, 36399 },
+ { 0x2312, 4379 },
+ { 0x2313, 43024 },
+ { 0x2314, 35851 },
+ { 0x2315, 66045 },
+ { 0x2316, 55332 },
+ { 0x2317, 56102 },
+ { 0x2318, 21735 },
+ { 0x2319, 37671 },
+ { 0x231A, 23154 },
+ { 0x231B, 64291 },
+ { 0x231C, 7741 },
+ { 0x231D, 7754 },
+ { 0x231E, 30262 },
+ { 0x231F, 30275 },
+ { 0x2320, 7731 },
+ { 0x2321, 30252 },
+ { 0x2322, 10635 },
+ { 0x2323, 22670 },
+ { 0x2324, 343 },
+ { 0x2325, 35641 },
+ { 0x2326, 10624 },
+ { 0x2327, 7 },
+ { 0x2328, 53725 },
+ { 0x2329, 74605 },
+ { 0x232A, 75087 },
+ { 0x232B, 10620 },
+ { 0x232C, 38093 },
+ { 0x232D, 69402 },
+ { 0x232E, 4014 },
+ { 0x232F, 55656 },
+ { 0x2330, 23053 },
+ { 0x2331, 63245 },
+ { 0x2332, 39788 },
+ { 0x2333, 22479 },
+ { 0x2334, 68618 },
+ { 0x2335, 68619 },
+ { 0x2336, 4325 },
+ { 0x2337, 4329 },
+ { 0x2338, 4159 },
+ { 0x2339, 4174 },
+ { 0x233A, 4179 },
+ { 0x233B, 4132 },
+ { 0x233C, 4169 },
+ { 0x233D, 4305 },
+ { 0x233E, 4295 },
+ { 0x233F, 4276 },
+ { 0x2340, 4349 },
+ { 0x2341, 4164 },
+ { 0x2342, 4195 },
+ { 0x2343, 4212 },
+ { 0x2344, 4223 },
+ { 0x2345, 4359 },
+ { 0x2346, 4369 },
+ { 0x2347, 4206 },
+ { 0x2348, 4217 },
+ { 0x2349, 4315 },
+ { 0x234A, 4090 },
+ { 0x234B, 4247 },
+ { 0x234C, 4143 },
+ { 0x234D, 4154 },
+ { 0x234E, 4084 },
+ { 0x234F, 4344 },
+ { 0x2350, 4184 },
+ { 0x2351, 4031 },
+ { 0x2352, 4049 },
+ { 0x2353, 4121 },
+ { 0x2354, 4127 },
+ { 0x2355, 4025 },
+ { 0x2356, 4354 },
+ { 0x2357, 4200 },
+ { 0x2358, 4271 },
+ { 0x2359, 4252 },
+ { 0x235A, 4334 },
+ { 0x235B, 4064 },
+ { 0x235C, 4310 },
+ { 0x235D, 4019 },
+ { 0x235E, 4266 },
+ { 0x235F, 4300 },
+ { 0x2360, 4149 },
+ { 0x2361, 4037 },
+ { 0x2362, 4059 },
+ { 0x2363, 4228 },
+ { 0x2364, 4069 },
+ { 0x2365, 4320 },
+ { 0x2366, 4078 },
+ { 0x2367, 4111 },
+ { 0x2368, 4286 },
+ { 0x2369, 4374 },
+ { 0x236A, 4242 },
+ { 0x236B, 4054 },
+ { 0x236C, 4291 },
+ { 0x236D, 4281 },
+ { 0x236E, 4364 },
+ { 0x236F, 4137 },
+ { 0x2370, 4190 },
+ { 0x2371, 4096 },
+ { 0x2372, 4043 },
+ { 0x2373, 4102 },
+ { 0x2374, 4074 },
+ { 0x2375, 4257 },
+ { 0x2376, 4237 },
+ { 0x2377, 4339 },
+ { 0x2378, 4106 },
+ { 0x2379, 4261 },
+ { 0x237A, 4233 },
+ { 0x237B, 6727 },
+ { 0x237C, 21777 },
+ { 0x237D, 68594 },
+ { 0x237E, 8721 },
+ { 0x237F, 56078 },
+ { 0x2380, 64306 },
+ { 0x2381, 66843 },
+ { 0x2382, 74526 },
+ { 0x2383, 50320 },
+ { 0x2384, 68613 },
+ { 0x2385, 23322 },
+ { 0x2386, 10594 },
+ { 0x2387, 68603 },
+ { 0x2388, 9125 },
+ { 0x2389, 39769 },
+ { 0x238A, 39614 },
+ { 0x238B, 30307 },
+ { 0x238C, 10055 },
+ { 0x238D, 67877 },
+ { 0x238E, 67663 },
+ { 0x238F, 75142 },
+ { 0x2390, 75145 },
+ { 0x2391, 75150 },
+ { 0x2392, 75148 },
+ { 0x2393, 31220 },
+ { 0x2394, 75137 },
+ { 0x2395, 4117 },
+ { 0x2396, 39959 },
+ { 0x2397, 55382 },
+ { 0x2398, 9604 },
+ { 0x2399, 21743 },
+ { 0x239A, 10449 },
+ { 0x239B, 9470 },
+ { 0x239C, 9474 },
+ { 0x239D, 9466 },
+ { 0x239E, 21997 },
+ { 0x239F, 22001 },
+ { 0x23A0, 21993 },
+ { 0x23A1, 9419 },
+ { 0x23A2, 9424 },
+ { 0x23A3, 9414 },
+ { 0x23A4, 21946 },
+ { 0x23A5, 21951 },
+ { 0x23A6, 21941 },
+ { 0x23A7, 9239 },
+ { 0x23A8, 9244 },
+ { 0x23A9, 9234 },
+ { 0x23AA, 10468 },
+ { 0x23AB, 21832 },
+ { 0x23AC, 21837 },
+ { 0x23AD, 21827 },
+ { 0x23AE, 53342 },
+ { 0x23AF, 67638 },
+ { 0x23B0, 23099 },
+ { 0x23B1, 23123 },
+ { 0x23B2, 65859 },
+ { 0x23B3, 65864 },
+ { 0x23B4, 7757 },
+ { 0x23B5, 30278 },
+ { 0x23B6, 30281 },
+ { 0x23B7, 42979 },
+ { 0x23B8, 9457 },
+ { 0x23B9, 21984 },
+ { 0x23BA, 67646 },
+ { 0x23BB, 67649 },
+ { 0x23BC, 67652 },
+ { 0x23BD, 67655 },
+ { 0x23BE, 63205 },
+ { 0x23BF, 63225 },
+ { 0x23C0, 63232 },
+ { 0x23C1, 63182 },
+ { 0x23C2, 63152 },
+ { 0x23C3, 63238 },
+ { 0x23C4, 63190 },
+ { 0x23C5, 63160 },
+ { 0x23C6, 63212 },
+ { 0x23C7, 63174 },
+ { 0x23C8, 63144 },
+ { 0x23C9, 63168 },
+ { 0x23CA, 63138 },
+ { 0x23CB, 63198 },
+ { 0x23CC, 63218 },
+ { 0x23CD, 36165 },
+ { 0x23CE, 35797 },
+ { 0x23CF, 10568 },
+ { 0x23D0, 56083 },
+ { 0x23D1, 53857 },
+ { 0x23D2, 53853 },
+ { 0x23D3, 53859 },
+ { 0x23D4, 53848 },
+ { 0x23D5, 53839 },
+ { 0x23D6, 53844 },
+ { 0x23D7, 53863 },
+ { 0x23D8, 53867 },
+ { 0x23D9, 53865 },
+ { 0x23DA, 10541 },
+ { 0x23DB, 9119 },
+ { 0x23DC, 7764 },
+ { 0x23DD, 30292 },
+ { 0x23DE, 7744 },
+ { 0x23DF, 30265 },
+ { 0x23E0, 7760 },
+ { 0x23E1, 30288 },
+ { 0x23E2, 23412 },
+ { 0x23E3, 38095 },
+ { 0x23E4, 74477 },
+ { 0x23E5, 51778 },
+ { 0x23E6, 67 },
+ { 0x23E7, 67224 },
+ { 0x2400, 36757 },
+ { 0x2401, 36784 },
+ { 0x2402, 36779 },
+ { 0x2403, 36716 },
+ { 0x2404, 36726 },
+ { 0x2405, 36827 },
+ { 0x2406, 36864 },
+ { 0x2407, 36737 },
+ { 0x2408, 36845 },
+ { 0x2409, 36852 },
+ { 0x240A, 36753 },
+ { 0x240B, 36841 },
+ { 0x240C, 36749 },
+ { 0x240D, 36833 },
+ { 0x240E, 36772 },
+ { 0x240F, 36768 },
+ { 0x2410, 36740 },
+ { 0x2411, 36800 },
+ { 0x2412, 36805 },
+ { 0x2413, 36815 },
+ { 0x2414, 36810 },
+ { 0x2415, 36837 },
+ { 0x2416, 36867 },
+ { 0x2417, 36731 },
+ { 0x2418, 36789 },
+ { 0x2419, 36721 },
+ { 0x241A, 36856 },
+ { 0x241B, 36820 },
+ { 0x241C, 36745 },
+ { 0x241D, 36764 },
+ { 0x241E, 36823 },
+ { 0x241F, 36760 },
+ { 0x2420, 36776 },
+ { 0x2421, 36792 },
+ { 0x2422, 10376 },
+ { 0x2423, 9606 },
+ { 0x2424, 36830 },
+ { 0x2425, 36795 },
+ { 0x2426, 36859 },
+ { 0x2440, 6791 },
+ { 0x2441, 6793 },
+ { 0x2442, 6789 },
+ { 0x2443, 6810 },
+ { 0x2444, 6784 },
+ { 0x2445, 6781 },
+ { 0x2446, 6799 },
+ { 0x2447, 6795 },
+ { 0x2448, 6787 },
+ { 0x2449, 6806 },
+ { 0x244A, 6803 },
+ { 0x2460, 38887 },
+ { 0x2461, 38893 },
+ { 0x2462, 38914 },
+ { 0x2463, 38899 },
+ { 0x2464, 38896 },
+ { 0x2465, 38890 },
+ { 0x2466, 38911 },
+ { 0x2467, 38908 },
+ { 0x2468, 38902 },
+ { 0x2469, 39306 },
+ { 0x246A, 39351 },
+ { 0x246B, 39393 },
+ { 0x246C, 39450 },
+ { 0x246D, 39444 },
+ { 0x246E, 39435 },
+ { 0x246F, 39438 },
+ { 0x2470, 39453 },
+ { 0x2471, 39441 },
+ { 0x2472, 39447 },
+ { 0x2473, 39396 },
+ { 0x2474, 74628 },
+ { 0x2475, 74634 },
+ { 0x2476, 74652 },
+ { 0x2477, 74640 },
+ { 0x2478, 74637 },
+ { 0x2479, 74631 },
+ { 0x247A, 74649 },
+ { 0x247B, 74646 },
+ { 0x247C, 74643 },
+ { 0x247D, 74896 },
+ { 0x247E, 74899 },
+ { 0x247F, 74902 },
+ { 0x2480, 74923 },
+ { 0x2481, 74917 },
+ { 0x2482, 74908 },
+ { 0x2483, 74911 },
+ { 0x2484, 74926 },
+ { 0x2485, 74914 },
+ { 0x2486, 74920 },
+ { 0x2487, 74905 },
+ { 0x2488, 10484 },
+ { 0x2489, 10496 },
+ { 0x248A, 10534 },
+ { 0x248B, 10508 },
+ { 0x248C, 10502 },
+ { 0x248D, 10490 },
+ { 0x248E, 10528 },
+ { 0x248F, 10522 },
+ { 0x2490, 10514 },
+ { 0x2491, 35589 },
+ { 0x2492, 35595 },
+ { 0x2493, 35599 },
+ { 0x2494, 35627 },
+ { 0x2495, 35619 },
+ { 0x2496, 35607 },
+ { 0x2497, 35611 },
+ { 0x2498, 35631 },
+ { 0x2499, 35615 },
+ { 0x249A, 35623 },
+ { 0x249B, 35603 },
+ { 0x249C, 74655 },
+ { 0x249D, 74660 },
+ { 0x249E, 74665 },
+ { 0x249F, 74670 },
+ { 0x24A0, 74675 },
+ { 0x24A1, 74680 },
+ { 0x24A2, 74685 },
+ { 0x24A3, 74690 },
+ { 0x24A4, 74695 },
+ { 0x24A5, 74700 },
+ { 0x24A6, 74705 },
+ { 0x24A7, 74710 },
+ { 0x24A8, 74715 },
+ { 0x24A9, 74720 },
+ { 0x24AA, 74725 },
+ { 0x24AB, 74730 },
+ { 0x24AC, 74735 },
+ { 0x24AD, 74740 },
+ { 0x24AE, 74745 },
+ { 0x24AF, 74750 },
+ { 0x24B0, 74755 },
+ { 0x24B1, 74760 },
+ { 0x24B2, 74765 },
+ { 0x24B3, 74770 },
+ { 0x24B4, 74775 },
+ { 0x24B5, 74780 },
+ { 0x24B6, 39052 },
+ { 0x24B7, 39057 },
+ { 0x24B8, 39062 },
+ { 0x24B9, 39067 },
+ { 0x24BA, 39072 },
+ { 0x24BB, 39077 },
+ { 0x24BC, 39082 },
+ { 0x24BD, 39087 },
+ { 0x24BE, 39092 },
+ { 0x24BF, 39097 },
+ { 0x24C0, 39102 },
+ { 0x24C1, 39107 },
+ { 0x24C2, 39112 },
+ { 0x24C3, 39117 },
+ { 0x24C4, 39122 },
+ { 0x24C5, 39127 },
+ { 0x24C6, 39132 },
+ { 0x24C7, 39137 },
+ { 0x24C8, 39142 },
+ { 0x24C9, 39147 },
+ { 0x24CA, 39152 },
+ { 0x24CB, 39157 },
+ { 0x24CC, 39162 },
+ { 0x24CD, 39167 },
+ { 0x24CE, 39172 },
+ { 0x24CF, 39177 },
+ { 0x24D0, 38922 },
+ { 0x24D1, 38927 },
+ { 0x24D2, 38932 },
+ { 0x24D3, 38937 },
+ { 0x24D4, 38942 },
+ { 0x24D5, 38947 },
+ { 0x24D6, 38952 },
+ { 0x24D7, 38957 },
+ { 0x24D8, 38962 },
+ { 0x24D9, 38967 },
+ { 0x24DA, 38972 },
+ { 0x24DB, 38977 },
+ { 0x24DC, 38982 },
+ { 0x24DD, 38987 },
+ { 0x24DE, 38992 },
+ { 0x24DF, 38997 },
+ { 0x24E0, 39002 },
+ { 0x24E1, 39007 },
+ { 0x24E2, 39012 },
+ { 0x24E3, 39017 },
+ { 0x24E4, 39022 },
+ { 0x24E5, 39027 },
+ { 0x24E6, 39032 },
+ { 0x24E7, 39037 },
+ { 0x24E8, 39042 },
+ { 0x24E9, 39047 },
+ { 0x24EA, 38905 },
+ { 0x24EB, 54887 },
+ { 0x24EC, 54891 },
+ { 0x24ED, 54919 },
+ { 0x24EE, 54911 },
+ { 0x24EF, 54899 },
+ { 0x24F0, 54903 },
+ { 0x24F1, 54923 },
+ { 0x24F2, 54907 },
+ { 0x24F3, 54915 },
+ { 0x24F4, 54895 },
+ { 0x24F5, 31612 },
+ { 0x24F6, 31620 },
+ { 0x24F7, 31644 },
+ { 0x24F8, 31628 },
+ { 0x24F9, 31624 },
+ { 0x24FA, 31616 },
+ { 0x24FB, 31640 },
+ { 0x24FC, 31636 },
+ { 0x24FD, 31632 },
+ { 0x24FE, 31648 },
+ { 0x24FF, 54883 },
+ { 0x2500, 5020 },
+ { 0x2501, 4841 },
+ { 0x2502, 4986 },
+ { 0x2503, 4807 },
+ { 0x2504, 4957 },
+ { 0x2505, 4801 },
+ { 0x2506, 4951 },
+ { 0x2507, 4795 },
+ { 0x2508, 5014 },
+ { 0x2509, 4835 },
+ { 0x250A, 5008 },
+ { 0x250B, 4829 },
+ { 0x250C, 4912 },
+ { 0x250D, 4595 },
+ { 0x250E, 4550 },
+ { 0x250F, 4756 },
+ { 0x2510, 4906 },
+ { 0x2511, 4580 },
+ { 0x2512, 4535 },
+ { 0x2513, 4750 },
+ { 0x2514, 4862 },
+ { 0x2515, 4463 },
+ { 0x2516, 4418 },
+ { 0x2517, 4734 },
+ { 0x2518, 4849 },
+ { 0x2519, 4448 },
+ { 0x251A, 4403 },
+ { 0x251B, 4721 },
+ { 0x251C, 4996 },
+ { 0x251D, 5180 },
+ { 0x251E, 4410 },
+ { 0x251F, 4542 },
+ { 0x2520, 5159 },
+ { 0x2521, 4587 },
+ { 0x2522, 4455 },
+ { 0x2523, 4817 },
+ { 0x2524, 4990 },
+ { 0x2525, 5173 },
+ { 0x2526, 4395 },
+ { 0x2527, 4527 },
+ { 0x2528, 5152 },
+ { 0x2529, 4572 },
+ { 0x252A, 4440 },
+ { 0x252B, 4811 },
+ { 0x252C, 4918 },
+ { 0x252D, 4677 },
+ { 0x252E, 5050 },
+ { 0x252F, 4602 },
+ { 0x2530, 4557 },
+ { 0x2531, 5074 },
+ { 0x2532, 4701 },
+ { 0x2533, 4762 },
+ { 0x2534, 4868 },
+ { 0x2535, 4669 },
+ { 0x2536, 5042 },
+ { 0x2537, 4470 },
+ { 0x2538, 4425 },
+ { 0x2539, 5066 },
+ { 0x253A, 4693 },
+ { 0x253B, 4740 },
+ { 0x253C, 5002 },
+ { 0x253D, 4685 },
+ { 0x253E, 5058 },
+ { 0x253F, 5187 },
+ { 0x2540, 4387 },
+ { 0x2541, 4519 },
+ { 0x2542, 5166 },
+ { 0x2543, 4651 },
+ { 0x2544, 5024 },
+ { 0x2545, 4660 },
+ { 0x2546, 5033 },
+ { 0x2547, 4564 },
+ { 0x2548, 4432 },
+ { 0x2549, 5082 },
+ { 0x254A, 4709 },
+ { 0x254B, 4823 },
+ { 0x254C, 4945 },
+ { 0x254D, 4789 },
+ { 0x254E, 4939 },
+ { 0x254F, 4783 },
+ { 0x2550, 5148 },
+ { 0x2551, 5126 },
+ { 0x2552, 4637 },
+ { 0x2553, 4616 },
+ { 0x2554, 5114 },
+ { 0x2555, 4630 },
+ { 0x2556, 4609 },
+ { 0x2557, 5108 },
+ { 0x2558, 4505 },
+ { 0x2559, 4484 },
+ { 0x255A, 5096 },
+ { 0x255B, 4498 },
+ { 0x255C, 4477 },
+ { 0x255D, 5090 },
+ { 0x255E, 5222 },
+ { 0x255F, 5201 },
+ { 0x2560, 5136 },
+ { 0x2561, 5215 },
+ { 0x2562, 5194 },
+ { 0x2563, 5130 },
+ { 0x2564, 4644 },
+ { 0x2565, 4623 },
+ { 0x2566, 5120 },
+ { 0x2567, 4512 },
+ { 0x2568, 4491 },
+ { 0x2569, 5102 },
+ { 0x256A, 5229 },
+ { 0x256B, 5208 },
+ { 0x256C, 5142 },
+ { 0x256D, 4895 },
+ { 0x256E, 4888 },
+ { 0x256F, 4874 },
+ { 0x2570, 4881 },
+ { 0x2571, 4977 },
+ { 0x2572, 4968 },
+ { 0x2573, 4963 },
+ { 0x2574, 4924 },
+ { 0x2575, 4845 },
+ { 0x2576, 4935 },
+ { 0x2577, 4902 },
+ { 0x2578, 4768 },
+ { 0x2579, 4717 },
+ { 0x257A, 4779 },
+ { 0x257B, 4746 },
+ { 0x257C, 4928 },
+ { 0x257D, 4855 },
+ { 0x257E, 4772 },
+ { 0x257F, 4727 },
+ { 0x2580, 23088 },
+ { 0x2581, 21094 },
+ { 0x2582, 21098 },
+ { 0x2583, 21168 },
+ { 0x2584, 21106 },
+ { 0x2585, 21102 },
+ { 0x2586, 21172 },
+ { 0x2587, 21164 },
+ { 0x2588, 9114 },
+ { 0x2589, 9314 },
+ { 0x258A, 9322 },
+ { 0x258B, 9191 },
+ { 0x258C, 9199 },
+ { 0x258D, 9318 },
+ { 0x258E, 9156 },
+ { 0x258F, 9152 },
+ { 0x2590, 21766 },
+ { 0x2591, 20870 },
+ { 0x2592, 35535 },
+ { 0x2593, 9015 },
+ { 0x2594, 23084 },
+ { 0x2595, 21755 },
+ { 0x2596, 55386 },
+ { 0x2597, 55389 },
+ { 0x2598, 55392 },
+ { 0x2599, 55395 },
+ { 0x259A, 55404 },
+ { 0x259B, 55410 },
+ { 0x259C, 55419 },
+ { 0x259D, 55428 },
+ { 0x259E, 55431 },
+ { 0x259F, 55437 },
+ { 0x25A0, 10270 },
+ { 0x25A1, 23296 },
+ { 0x25A2, 23328 },
+ { 0x25A3, 23349 },
+ { 0x25A4, 36279 },
+ { 0x25A5, 36271 },
+ { 0x25A6, 36283 },
+ { 0x25A7, 36231 },
+ { 0x25A8, 36246 },
+ { 0x25A9, 36266 },
+ { 0x25AA, 10212 },
+ { 0x25AB, 23225 },
+ { 0x25AC, 10317 },
+ { 0x25AD, 23408 },
+ { 0x25AE, 10309 },
+ { 0x25AF, 23403 },
+ { 0x25B0, 10361 },
+ { 0x25B1, 23461 },
+ { 0x25B2, 10341 },
+ { 0x25B3, 23421 },
+ { 0x25B4, 10337 },
+ { 0x25B5, 23417 },
+ { 0x25B6, 10373 },
+ { 0x25B7, 23473 },
+ { 0x25B8, 10363 },
+ { 0x25B9, 23463 },
+ { 0x25BA, 10367 },
+ { 0x25BB, 23467 },
+ { 0x25BC, 10348 },
+ { 0x25BD, 23448 },
+ { 0x25BE, 10344 },
+ { 0x25BF, 23444 },
+ { 0x25C0, 10358 },
+ { 0x25C1, 23458 },
+ { 0x25C2, 10351 },
+ { 0x25C3, 23451 },
+ { 0x25C4, 10355 },
+ { 0x25C5, 23455 },
+ { 0x25C6, 10272 },
+ { 0x25C7, 23355 },
+ { 0x25C8, 23365 },
+ { 0x25C9, 40556 },
+ { 0x25CA, 40990 },
+ { 0x25CB, 23236 },
+ { 0x25CC, 31533 },
+ { 0x25CD, 30518 },
+ { 0x25CE, 45864 },
+ { 0x25CF, 10238 },
+ { 0x25D0, 30485 },
+ { 0x25D1, 30495 },
+ { 0x25D2, 30490 },
+ { 0x25D3, 30507 },
+ { 0x25D4, 30512 },
+ { 0x25D5, 30469 },
+ { 0x25D6, 9195 },
+ { 0x25D7, 21762 },
+ { 0x25D8, 40639 },
+ { 0x25D9, 40636 },
+ { 0x25DA, 23094 },
+ { 0x25DB, 21112 },
+ { 0x25DC, 23112 },
+ { 0x25DD, 23134 },
+ { 0x25DE, 21141 },
+ { 0x25DF, 21117 },
+ { 0x25E0, 23091 },
+ { 0x25E1, 21109 },
+ { 0x25E2, 10198 },
+ { 0x25E3, 10194 },
+ { 0x25E4, 10224 },
+ { 0x25E5, 10228 },
+ { 0x25E6, 23234 },
+ { 0x25E7, 36207 },
+ { 0x25E8, 36226 },
+ { 0x25E9, 36239 },
+ { 0x25EA, 36219 },
+ { 0x25EB, 23333 },
+ { 0x25EC, 23424 },
+ { 0x25ED, 69326 },
+ { 0x25EE, 69332 },
+ { 0x25EF, 14464 },
+ { 0x25F0, 23310 },
+ { 0x25F1, 23298 },
+ { 0x25F2, 23304 },
+ { 0x25F3, 23316 },
+ { 0x25F4, 23265 },
+ { 0x25F5, 23253 },
+ { 0x25F6, 23259 },
+ { 0x25F7, 23271 },
+ { 0x25F8, 23117 },
+ { 0x25F9, 23144 },
+ { 0x25FA, 21122 },
+ { 0x25FB, 23284 },
+ { 0x25FC, 10261 },
+ { 0x25FD, 23280 },
+ { 0x25FE, 10257 },
+ { 0x25FF, 21151 },
+ { 0x2600, 10141 },
+ { 0x2601, 10454 },
+ { 0x2602, 56004 },
+ { 0x2603, 43547 },
+ { 0x2604, 10460 },
+ { 0x2605, 10161 },
+ { 0x2606, 23185 },
+ { 0x2607, 64791 },
+ { 0x2608, 74480 },
+ { 0x2609, 7188 },
+ { 0x260A, 56109 },
+ { 0x260B, 66846 },
+ { 0x260C, 68615 },
+ { 0x260D, 67880 },
+ { 0x260E, 10319 },
+ { 0x260F, 23410 },
+ { 0x2610, 30232 },
+ { 0x2611, 30238 },
+ { 0x2612, 30234 },
+ { 0x2613, 43020 },
+ { 0x2614, 56005 },
+ { 0x2615, 5795 },
+ { 0x2616, 23219 },
+ { 0x2617, 10206 },
+ { 0x2618, 55522 },
+ { 0x2619, 55497 },
+ { 0x261A, 10154 },
+ { 0x261B, 10202 },
+ { 0x261C, 23181 },
+ { 0x261D, 23158 },
+ { 0x261E, 23215 },
+ { 0x261F, 23171 },
+ { 0x2620, 22476 },
+ { 0x2621, 38868 },
+ { 0x2622, 69274 },
+ { 0x2623, 56112 },
+ { 0x2624, 45865 },
+ { 0x2625, 8718 },
+ { 0x2626, 54931 },
+ { 0x2627, 5236 },
+ { 0x2628, 10462 },
+ { 0x2629, 10465 },
+ { 0x262A, 9715 },
+ { 0x262B, 10630 },
+ { 0x262C, 4009 },
+ { 0x262D, 31881 },
+ { 0x262E, 21733 },
+ { 0x262F, 8714 },
+ { 0x2630, 44529 },
+ { 0x2631, 44517 },
+ { 0x2632, 44514 },
+ { 0x2633, 44532 },
+ { 0x2634, 44520 },
+ { 0x2635, 44526 },
+ { 0x2636, 44535 },
+ { 0x2637, 44523 },
+ { 0x2638, 23155 },
+ { 0x2639, 23384 },
+ { 0x263A, 23373 },
+ { 0x263B, 10291 },
+ { 0x263C, 23164 },
+ { 0x263D, 10632 },
+ { 0x263E, 9132 },
+ { 0x263F, 41191 },
+ { 0x2640, 31767 },
+ { 0x2641, 10540 },
+ { 0x2642, 9580 },
+ { 0x2643, 40641 },
+ { 0x2644, 35810 },
+ { 0x2645, 37705 },
+ { 0x2646, 42827 },
+ { 0x2647, 21739 },
+ { 0x2648, 10114 },
+ { 0x2649, 37129 },
+ { 0x264A, 31790 },
+ { 0x264B, 30317 },
+ { 0x264C, 6030 },
+ { 0x264D, 23153 },
+ { 0x264E, 20857 },
+ { 0x264F, 55511 },
+ { 0x2650, 69278 },
+ { 0x2651, 57359 },
+ { 0x2652, 44719 },
+ { 0x2653, 35653 },
+ { 0x2654, 23191 },
+ { 0x2655, 23200 },
+ { 0x2656, 23197 },
+ { 0x2657, 23203 },
+ { 0x2658, 23206 },
+ { 0x2659, 23194 },
+ { 0x265A, 10167 },
+ { 0x265B, 10176 },
+ { 0x265C, 10173 },
+ { 0x265D, 10179 },
+ { 0x265E, 10182 },
+ { 0x265F, 10170 },
+ { 0x2660, 10221 },
+ { 0x2661, 23209 },
+ { 0x2662, 23357 },
+ { 0x2663, 10145 },
+ { 0x2664, 23231 },
+ { 0x2665, 10185 },
+ { 0x2666, 10274 },
+ { 0x2667, 23168 },
+ { 0x2668, 5793 },
+ { 0x2669, 42977 },
+ { 0x266A, 31704 },
+ { 0x266B, 30242 },
+ { 0x266C, 30245 },
+ { 0x266D, 21206 },
+ { 0x266E, 21212 },
+ { 0x266F, 21209 },
+ { 0x2670, 10084 },
+ { 0x2671, 9086 },
+ { 0x2672, 66308 },
+ { 0x2673, 65768 },
+ { 0x2674, 65773 },
+ { 0x2675, 65778 },
+ { 0x2676, 65783 },
+ { 0x2677, 65788 },
+ { 0x2678, 65793 },
+ { 0x2679, 65798 },
+ { 0x267A, 65803 },
+ { 0x267B, 10321 },
+ { 0x267C, 55452 },
+ { 0x267D, 75139 },
+ { 0x267E, 65753 },
+ { 0x267F, 68601 },
+ { 0x2680, 5768 },
+ { 0x2681, 5770 },
+ { 0x2682, 5772 },
+ { 0x2683, 5774 },
+ { 0x2684, 5776 },
+ { 0x2685, 5778 },
+ { 0x2686, 23238 },
+ { 0x2687, 23243 },
+ { 0x2688, 10251 },
+ { 0x2689, 10240 },
+ { 0x268A, 54868 },
+ { 0x268B, 54865 },
+ { 0x268C, 31212 },
+ { 0x268D, 31192 },
+ { 0x268E, 31196 },
+ { 0x268F, 31208 },
+ { 0x2690, 23175 },
+ { 0x2691, 10148 },
+ { 0x2692, 31878 },
+ { 0x2693, 23701 },
+ { 0x2694, 39792 },
+ { 0x2695, 22748 },
+ { 0x2696, 35811 },
+ { 0x2697, 37778 },
+ { 0x2698, 31778 },
+ { 0x2699, 9120 },
+ { 0x269A, 22745 },
+ { 0x269B, 8719 },
+ { 0x269C, 69423 },
+ { 0x269D, 54942 },
+ { 0x26A0, 44705 },
+ { 0x26A1, 9127 },
+ { 0x26A2, 40495 },
+ { 0x26A3, 40492 },
+ { 0x26A4, 69258 },
+ { 0x26A5, 9576 },
+ { 0x26A6, 9590 },
+ { 0x26A7, 9582 },
+ { 0x26A8, 56086 },
+ { 0x26A9, 67641 },
+ { 0x26AA, 35541 },
+ { 0x26AB, 35523 },
+ { 0x26AC, 35537 },
+ { 0x26AD, 53728 },
+ { 0x26AE, 40490 },
+ { 0x26AF, 66311 },
+ { 0x26B0, 30571 },
+ { 0x26B1, 40558 },
+ { 0x26B2, 35579 },
+ { 0x26B3, 10446 },
+ { 0x26B4, 35649 },
+ { 0x26B5, 9131 },
+ { 0x26B6, 23152 },
+ { 0x26B7, 30468 },
+ { 0x26B8, 10158 },
+ { 0x26B9, 43027 },
+ { 0x26BA, 69279 },
+ { 0x26BB, 55451 },
+ { 0x26BC, 75099 },
+ { 0x26C0, 23376 },
+ { 0x26C1, 23379 },
+ { 0x26C2, 10294 },
+ { 0x26C3, 10297 },
+ { 0x2701, 23120 },
+ { 0x2702, 10304 },
+ { 0x2703, 21130 },
+ { 0x2704, 23389 },
+ { 0x2706, 66042 },
+ { 0x2707, 9722 },
+ { 0x2708, 44716 },
+ { 0x2709, 50322 },
+ { 0x270C, 44703 },
+ { 0x270D, 44707 },
+ { 0x270E, 21138 },
+ { 0x270F, 35650 },
+ { 0x2710, 23131 },
+ { 0x2711, 23162 },
+ { 0x2712, 10139 },
+ { 0x2713, 10447 },
+ { 0x2714, 13551 },
+ { 0x2715, 75053 },
+ { 0x2716, 13671 },
+ { 0x2717, 30230 },
+ { 0x2718, 13593 },
+ { 0x2719, 54936 },
+ { 0x271A, 13565 },
+ { 0x271B, 9612 },
+ { 0x271C, 13530 },
+ { 0x271D, 14471 },
+ { 0x271E, 55515 },
+ { 0x271F, 54939 },
+ { 0x2720, 41189 },
+ { 0x2721, 9712 },
+ { 0x2722, 9109 },
+ { 0x2723, 9106 },
+ { 0x2724, 13526 },
+ { 0x2725, 9103 },
+ { 0x2726, 10150 },
+ { 0x2727, 23177 },
+ { 0x2729, 36465 },
+ { 0x272A, 39186 },
+ { 0x272B, 9608 },
+ { 0x272C, 10234 },
+ { 0x272D, 54933 },
+ { 0x272E, 13634 },
+ { 0x272F, 55330 },
+ { 0x2730, 55512 },
+ { 0x2731, 13632 },
+ { 0x2732, 9615 },
+ { 0x2733, 10543 },
+ { 0x2734, 10546 },
+ { 0x2735, 10550 },
+ { 0x2736, 7178 },
+ { 0x2737, 10554 },
+ { 0x2738, 13554 },
+ { 0x2739, 37701 },
+ { 0x273A, 43505 },
+ { 0x273B, 75114 },
+ { 0x273C, 9618 },
+ { 0x273D, 13704 },
+ { 0x273E, 7182 },
+ { 0x273F, 10300 },
+ { 0x2740, 23382 },
+ { 0x2741, 10559 },
+ { 0x2742, 38876 },
+ { 0x2743, 13707 },
+ { 0x2744, 65814 },
+ { 0x2745, 23005 },
+ { 0x2746, 13627 },
+ { 0x2747, 43552 },
+ { 0x2748, 13630 },
+ { 0x2749, 75051 },
+ { 0x274A, 10564 },
+ { 0x274B, 13560 },
+ { 0x274D, 55519 },
+ { 0x274F, 21159 },
+ { 0x2750, 23147 },
+ { 0x2751, 21146 },
+ { 0x2752, 23139 },
+ { 0x2756, 10282 },
+ { 0x2758, 20872 },
+ { 0x2759, 35544 },
+ { 0x275A, 13638 },
+ { 0x275B, 13620 },
+ { 0x275C, 13614 },
+ { 0x275D, 13607 },
+ { 0x275E, 13601 },
+ { 0x2761, 31164 },
+ { 0x2762, 13644 },
+ { 0x2763, 13568 },
+ { 0x2764, 13534 },
+ { 0x2765, 43008 },
+ { 0x2766, 31776 },
+ { 0x2767, 43013 },
+ { 0x2768, 35519 },
+ { 0x2769, 35531 },
+ { 0x276A, 35547 },
+ { 0x276B, 35552 },
+ { 0x276C, 35560 },
+ { 0x276D, 35565 },
+ { 0x276E, 13665 },
+ { 0x276F, 13679 },
+ { 0x2770, 13660 },
+ { 0x2771, 13674 },
+ { 0x2772, 20858 },
+ { 0x2773, 20864 },
+ { 0x2774, 35514 },
+ { 0x2775, 35526 },
+ { 0x2776, 40379 },
+ { 0x2777, 40389 },
+ { 0x2778, 40419 },
+ { 0x2779, 40399 },
+ { 0x277A, 40394 },
+ { 0x277B, 40384 },
+ { 0x277C, 40414 },
+ { 0x277D, 40409 },
+ { 0x277E, 40404 },
+ { 0x277F, 40424 },
+ { 0x2780, 40329 },
+ { 0x2781, 40339 },
+ { 0x2782, 40369 },
+ { 0x2783, 40349 },
+ { 0x2784, 40344 },
+ { 0x2785, 40334 },
+ { 0x2786, 40364 },
+ { 0x2787, 40359 },
+ { 0x2788, 40354 },
+ { 0x2789, 40374 },
+ { 0x278A, 40429 },
+ { 0x278B, 40441 },
+ { 0x278C, 40477 },
+ { 0x278D, 40453 },
+ { 0x278E, 40447 },
+ { 0x278F, 40435 },
+ { 0x2790, 40471 },
+ { 0x2791, 40465 },
+ { 0x2792, 40459 },
+ { 0x2793, 40483 },
+ { 0x2794, 13648 },
+ { 0x2798, 13583 },
+ { 0x2799, 13641 },
+ { 0x279A, 13579 },
+ { 0x279B, 50314 },
+ { 0x279C, 13652 },
+ { 0x279D, 75116 },
+ { 0x279E, 13711 },
+ { 0x279F, 31175 },
+ { 0x27A0, 13596 },
+ { 0x27A1, 10328 },
+ { 0x27A2, 43645 },
+ { 0x27A3, 43649 },
+ { 0x27A4, 10334 },
+ { 0x27A5, 13544 },
+ { 0x27A6, 13537 },
+ { 0x27A7, 22741 },
+ { 0x27A8, 13699 },
+ { 0x27A9, 74472 },
+ { 0x27AA, 69264 },
+ { 0x27AB, 68606 },
+ { 0x27AC, 69424 },
+ { 0x27AD, 13573 },
+ { 0x27AE, 13587 },
+ { 0x27AF, 42831 },
+ { 0x27B1, 42837 },
+ { 0x27B2, 38917 },
+ { 0x27B3, 75119 },
+ { 0x27B4, 75104 },
+ { 0x27B5, 75108 },
+ { 0x27B6, 75100 },
+ { 0x27B7, 13690 },
+ { 0x27B8, 13695 },
+ { 0x27B9, 13685 },
+ { 0x27BA, 75111 },
+ { 0x27BB, 13715 },
+ { 0x27BC, 74481 },
+ { 0x27BD, 13656 },
+ { 0x27BE, 74625 },
+ { 0x27C0, 23002 },
+ { 0x27C1, 23391 },
+ { 0x27C2, 75037 },
+ { 0x27C3, 9622 },
+ { 0x27C4, 9624 },
+ { 0x27C5, 9435 },
+ { 0x27C6, 21960 },
+ { 0x27C7, 271 },
+ { 0x27C8, 43004 },
+ { 0x27C9, 55653 },
+ { 0x27CA, 56011 },
+ { 0x27CC, 9530 },
+ { 0x27D0, 23360 },
+ { 0x27D1, 4016 },
+ { 0x27D2, 40537 },
+ { 0x27D3, 21133 },
+ { 0x27D4, 23107 },
+ { 0x27D5, 9251 },
+ { 0x27D6, 21844 },
+ { 0x27D7, 9116 },
+ { 0x27D8, 14454 },
+ { 0x27D9, 14457 },
+ { 0x27DA, 9139 },
+ { 0x27DB, 9135 },
+ { 0x27DC, 9433 },
+ { 0x27DD, 9527 },
+ { 0x27DE, 9515 },
+ { 0x27DF, 328 },
+ { 0x27E0, 40991 },
+ { 0x27E1, 23429 },
+ { 0x27E2, 23432 },
+ { 0x27E3, 23438 },
+ { 0x27E4, 23339 },
+ { 0x27E5, 23344 },
+ { 0x27E6, 71159 },
+ { 0x27E7, 71183 },
+ { 0x27E8, 71155 },
+ { 0x27E9, 71179 },
+ { 0x27EA, 71170 },
+ { 0x27EB, 71194 },
+ { 0x27EC, 71164 },
+ { 0x27ED, 71188 },
+ { 0x27EE, 71175 },
+ { 0x27EF, 71199 },
+ { 0x27F0, 44694 },
+ { 0x27F1, 63375 },
+ { 0x27F2, 74496 },
+ { 0x27F3, 57374 },
+ { 0x27F4, 21810 },
+ { 0x27F5, 9532 },
+ { 0x27F6, 9554 },
+ { 0x27F7, 9518 },
+ { 0x27F8, 9540 },
+ { 0x27F9, 9562 },
+ { 0x27FA, 9522 },
+ { 0x27FB, 9535 },
+ { 0x27FC, 9557 },
+ { 0x27FD, 9544 },
+ { 0x27FE, 9566 },
+ { 0x27FF, 9572 },
+ { 0x2800, 38100 },
+ { 0x2801, 38103 },
+ { 0x2802, 38106 },
+ { 0x2803, 38127 },
+ { 0x2804, 38109 },
+ { 0x2805, 38130 },
+ { 0x2806, 38148 },
+ { 0x2807, 38211 },
+ { 0x2808, 38112 },
+ { 0x2809, 38133 },
+ { 0x280A, 38151 },
+ { 0x280B, 38214 },
+ { 0x280C, 38166 },
+ { 0x280D, 38229 },
+ { 0x280E, 38274 },
+ { 0x280F, 38379 },
+ { 0x2810, 38115 },
+ { 0x2811, 38136 },
+ { 0x2812, 38154 },
+ { 0x2813, 38217 },
+ { 0x2814, 38169 },
+ { 0x2815, 38232 },
+ { 0x2816, 38277 },
+ { 0x2817, 38382 },
+ { 0x2818, 38181 },
+ { 0x2819, 38244 },
+ { 0x281A, 38289 },
+ { 0x281B, 38394 },
+ { 0x281C, 38319 },
+ { 0x281D, 38424 },
+ { 0x281E, 38484 },
+ { 0x281F, 38589 },
+ { 0x2820, 38118 },
+ { 0x2821, 38139 },
+ { 0x2822, 38157 },
+ { 0x2823, 38220 },
+ { 0x2824, 38172 },
+ { 0x2825, 38235 },
+ { 0x2826, 38280 },
+ { 0x2827, 38385 },
+ { 0x2828, 38184 },
+ { 0x2829, 38247 },
+ { 0x282A, 38292 },
+ { 0x282B, 38397 },
+ { 0x282C, 38322 },
+ { 0x282D, 38427 },
+ { 0x282E, 38487 },
+ { 0x282F, 38592 },
+ { 0x2830, 38193 },
+ { 0x2831, 38256 },
+ { 0x2832, 38301 },
+ { 0x2833, 38406 },
+ { 0x2834, 38331 },
+ { 0x2835, 38436 },
+ { 0x2836, 38496 },
+ { 0x2837, 38601 },
+ { 0x2838, 38349 },
+ { 0x2839, 38454 },
+ { 0x283A, 38514 },
+ { 0x283B, 38619 },
+ { 0x283C, 38544 },
+ { 0x283D, 38649 },
+ { 0x283E, 38694 },
+ { 0x283F, 38757 },
+ { 0x2840, 38121 },
+ { 0x2841, 38142 },
+ { 0x2842, 38160 },
+ { 0x2843, 38223 },
+ { 0x2844, 38175 },
+ { 0x2845, 38238 },
+ { 0x2846, 38283 },
+ { 0x2847, 38388 },
+ { 0x2848, 38187 },
+ { 0x2849, 38250 },
+ { 0x284A, 38295 },
+ { 0x284B, 38400 },
+ { 0x284C, 38325 },
+ { 0x284D, 38430 },
+ { 0x284E, 38490 },
+ { 0x284F, 38595 },
+ { 0x2850, 38196 },
+ { 0x2851, 38259 },
+ { 0x2852, 38304 },
+ { 0x2853, 38409 },
+ { 0x2854, 38334 },
+ { 0x2855, 38439 },
+ { 0x2856, 38499 },
+ { 0x2857, 38604 },
+ { 0x2858, 38352 },
+ { 0x2859, 38457 },
+ { 0x285A, 38517 },
+ { 0x285B, 38622 },
+ { 0x285C, 38547 },
+ { 0x285D, 38652 },
+ { 0x285E, 38697 },
+ { 0x285F, 38760 },
+ { 0x2860, 38202 },
+ { 0x2861, 38265 },
+ { 0x2862, 38310 },
+ { 0x2863, 38415 },
+ { 0x2864, 38340 },
+ { 0x2865, 38445 },
+ { 0x2866, 38505 },
+ { 0x2867, 38610 },
+ { 0x2868, 38358 },
+ { 0x2869, 38463 },
+ { 0x286A, 38523 },
+ { 0x286B, 38628 },
+ { 0x286C, 38553 },
+ { 0x286D, 38658 },
+ { 0x286E, 38703 },
+ { 0x286F, 38766 },
+ { 0x2870, 38367 },
+ { 0x2871, 38472 },
+ { 0x2872, 38532 },
+ { 0x2873, 38637 },
+ { 0x2874, 38562 },
+ { 0x2875, 38667 },
+ { 0x2876, 38712 },
+ { 0x2877, 38775 },
+ { 0x2878, 38574 },
+ { 0x2879, 38679 },
+ { 0x287A, 38724 },
+ { 0x287B, 38787 },
+ { 0x287C, 38739 },
+ { 0x287D, 38802 },
+ { 0x287E, 38820 },
+ { 0x287F, 38841 },
+ { 0x2880, 38124 },
+ { 0x2881, 38145 },
+ { 0x2882, 38163 },
+ { 0x2883, 38226 },
+ { 0x2884, 38178 },
+ { 0x2885, 38241 },
+ { 0x2886, 38286 },
+ { 0x2887, 38391 },
+ { 0x2888, 38190 },
+ { 0x2889, 38253 },
+ { 0x288A, 38298 },
+ { 0x288B, 38403 },
+ { 0x288C, 38328 },
+ { 0x288D, 38433 },
+ { 0x288E, 38493 },
+ { 0x288F, 38598 },
+ { 0x2890, 38199 },
+ { 0x2891, 38262 },
+ { 0x2892, 38307 },
+ { 0x2893, 38412 },
+ { 0x2894, 38337 },
+ { 0x2895, 38442 },
+ { 0x2896, 38502 },
+ { 0x2897, 38607 },
+ { 0x2898, 38355 },
+ { 0x2899, 38460 },
+ { 0x289A, 38520 },
+ { 0x289B, 38625 },
+ { 0x289C, 38550 },
+ { 0x289D, 38655 },
+ { 0x289E, 38700 },
+ { 0x289F, 38763 },
+ { 0x28A0, 38205 },
+ { 0x28A1, 38268 },
+ { 0x28A2, 38313 },
+ { 0x28A3, 38418 },
+ { 0x28A4, 38343 },
+ { 0x28A5, 38448 },
+ { 0x28A6, 38508 },
+ { 0x28A7, 38613 },
+ { 0x28A8, 38361 },
+ { 0x28A9, 38466 },
+ { 0x28AA, 38526 },
+ { 0x28AB, 38631 },
+ { 0x28AC, 38556 },
+ { 0x28AD, 38661 },
+ { 0x28AE, 38706 },
+ { 0x28AF, 38769 },
+ { 0x28B0, 38370 },
+ { 0x28B1, 38475 },
+ { 0x28B2, 38535 },
+ { 0x28B3, 38640 },
+ { 0x28B4, 38565 },
+ { 0x28B5, 38670 },
+ { 0x28B6, 38715 },
+ { 0x28B7, 38778 },
+ { 0x28B8, 38577 },
+ { 0x28B9, 38682 },
+ { 0x28BA, 38727 },
+ { 0x28BB, 38790 },
+ { 0x28BC, 38742 },
+ { 0x28BD, 38805 },
+ { 0x28BE, 38823 },
+ { 0x28BF, 38844 },
+ { 0x28C0, 38208 },
+ { 0x28C1, 38271 },
+ { 0x28C2, 38316 },
+ { 0x28C3, 38421 },
+ { 0x28C4, 38346 },
+ { 0x28C5, 38451 },
+ { 0x28C6, 38511 },
+ { 0x28C7, 38616 },
+ { 0x28C8, 38364 },
+ { 0x28C9, 38469 },
+ { 0x28CA, 38529 },
+ { 0x28CB, 38634 },
+ { 0x28CC, 38559 },
+ { 0x28CD, 38664 },
+ { 0x28CE, 38709 },
+ { 0x28CF, 38772 },
+ { 0x28D0, 38373 },
+ { 0x28D1, 38478 },
+ { 0x28D2, 38538 },
+ { 0x28D3, 38643 },
+ { 0x28D4, 38568 },
+ { 0x28D5, 38673 },
+ { 0x28D6, 38718 },
+ { 0x28D7, 38781 },
+ { 0x28D8, 38580 },
+ { 0x28D9, 38685 },
+ { 0x28DA, 38730 },
+ { 0x28DB, 38793 },
+ { 0x28DC, 38745 },
+ { 0x28DD, 38808 },
+ { 0x28DE, 38826 },
+ { 0x28DF, 38847 },
+ { 0x28E0, 38376 },
+ { 0x28E1, 38481 },
+ { 0x28E2, 38541 },
+ { 0x28E3, 38646 },
+ { 0x28E4, 38571 },
+ { 0x28E5, 38676 },
+ { 0x28E6, 38721 },
+ { 0x28E7, 38784 },
+ { 0x28E8, 38583 },
+ { 0x28E9, 38688 },
+ { 0x28EA, 38733 },
+ { 0x28EB, 38796 },
+ { 0x28EC, 38748 },
+ { 0x28ED, 38811 },
+ { 0x28EE, 38829 },
+ { 0x28EF, 38850 },
+ { 0x28F0, 38586 },
+ { 0x28F1, 38691 },
+ { 0x28F2, 38736 },
+ { 0x28F3, 38799 },
+ { 0x28F4, 38751 },
+ { 0x28F5, 38814 },
+ { 0x28F6, 38832 },
+ { 0x28F7, 38853 },
+ { 0x28F8, 38754 },
+ { 0x28F9, 38817 },
+ { 0x28FA, 38835 },
+ { 0x28FB, 38856 },
+ { 0x28FC, 38838 },
+ { 0x28FD, 38859 },
+ { 0x28FE, 38862 },
+ { 0x28FF, 38865 },
+ { 0x2900, 68309 },
+ { 0x2901, 68302 },
+ { 0x2902, 64491 },
+ { 0x2903, 68156 },
+ { 0x2904, 9303 },
+ { 0x2905, 68275 },
+ { 0x2906, 64481 },
+ { 0x2907, 68146 },
+ { 0x2908, 63281 },
+ { 0x2909, 44567 },
+ { 0x290A, 44631 },
+ { 0x290B, 63309 },
+ { 0x290C, 64474 },
+ { 0x290D, 68139 },
+ { 0x290E, 64503 },
+ { 0x290F, 68168 },
+ { 0x2910, 68315 },
+ { 0x2911, 68066 },
+ { 0x2912, 44544 },
+ { 0x2913, 63253 },
+ { 0x2914, 68054 },
+ { 0x2915, 68046 },
+ { 0x2916, 68280 },
+ { 0x2917, 68294 },
+ { 0x2918, 68285 },
+ { 0x2919, 64608 },
+ { 0x291A, 68273 },
+ { 0x291B, 64497 },
+ { 0x291C, 68162 },
+ { 0x291D, 64340 },
+ { 0x291E, 67998 },
+ { 0x291F, 64349 },
+ { 0x2920, 68007 },
+ { 0x2921, 21318 },
+ { 0x2922, 21271 },
+ { 0x2923, 21345 },
+ { 0x2924, 21287 },
+ { 0x2925, 22689 },
+ { 0x2926, 22723 },
+ { 0x2927, 21338 },
+ { 0x2928, 21280 },
+ { 0x2929, 22682 },
+ { 0x292A, 22716 },
+ { 0x292B, 35805 },
+ { 0x292C, 40551 },
+ { 0x292D, 22694 },
+ { 0x292E, 21299 },
+ { 0x292F, 40545 },
+ { 0x2930, 35799 },
+ { 0x2931, 21292 },
+ { 0x2932, 21350 },
+ { 0x2933, 10070 },
+ { 0x2934, 10127 },
+ { 0x2935, 10133 },
+ { 0x2936, 10115 },
+ { 0x2937, 10121 },
+ { 0x2938, 67981 },
+ { 0x2939, 64314 },
+ { 0x293A, 7721 },
+ { 0x293B, 30248 },
+ { 0x293C, 7715 },
+ { 0x293D, 7725 },
+ { 0x293E, 21154 },
+ { 0x293F, 21125 },
+ { 0x2940, 74492 },
+ { 0x2941, 57370 },
+ { 0x2942, 68086 },
+ { 0x2943, 64423 },
+ { 0x2944, 22470 },
+ { 0x2945, 68037 },
+ { 0x2946, 64379 },
+ { 0x2947, 68116 },
+ { 0x2948, 9279 },
+ { 0x2949, 44697 },
+ { 0x294A, 9167 },
+ { 0x294B, 9174 },
+ { 0x294C, 289 },
+ { 0x294D, 282 },
+ { 0x294E, 9160 },
+ { 0x294F, 296 },
+ { 0x2950, 9181 },
+ { 0x2951, 275 },
+ { 0x2952, 64515 },
+ { 0x2953, 68180 },
+ { 0x2954, 44670 },
+ { 0x2955, 63351 },
+ { 0x2956, 64559 },
+ { 0x2957, 68224 },
+ { 0x2958, 44634 },
+ { 0x2959, 63315 },
+ { 0x295A, 64522 },
+ { 0x295B, 68187 },
+ { 0x295C, 44677 },
+ { 0x295D, 63358 },
+ { 0x295E, 64566 },
+ { 0x295F, 68231 },
+ { 0x2960, 44641 },
+ { 0x2961, 63322 },
+ { 0x2962, 64537 },
+ { 0x2963, 44648 },
+ { 0x2964, 68213 },
+ { 0x2965, 63340 },
+ { 0x2966, 64548 },
+ { 0x2967, 64573 },
+ { 0x2968, 68202 },
+ { 0x2969, 68238 },
+ { 0x296A, 64529 },
+ { 0x296B, 64584 },
+ { 0x296C, 68194 },
+ { 0x296D, 68249 },
+ { 0x296E, 44659 },
+ { 0x296F, 63329 },
+ { 0x2970, 21882 },
+ { 0x2971, 31756 },
+ { 0x2972, 23038 },
+ { 0x2973, 64429 },
+ { 0x2974, 68092 },
+ { 0x2975, 68097 },
+ { 0x2976, 64759 },
+ { 0x2977, 64461 },
+ { 0x2978, 69536 },
+ { 0x2979, 36531 },
+ { 0x297A, 64457 },
+ { 0x297B, 55638 },
+ { 0x297C, 9188 },
+ { 0x297D, 21759 },
+ { 0x297E, 323 },
+ { 0x297F, 9070 },
+ { 0x2980, 37651 },
+ { 0x2981, 26 },
+ { 0x2982, 29 },
+ { 0x2983, 9326 },
+ { 0x2984, 21847 },
+ { 0x2985, 9347 },
+ { 0x2986, 21868 },
+ { 0x2987, 16 },
+ { 0x2988, 37 },
+ { 0x2989, 21 },
+ { 0x298A, 42 },
+ { 0x298B, 9409 },
+ { 0x298C, 21936 },
+ { 0x298D, 9388 },
+ { 0x298E, 21923 },
+ { 0x298F, 9396 },
+ { 0x2990, 21915 },
+ { 0x2991, 9207 },
+ { 0x2992, 21791 },
+ { 0x2993, 9144 },
+ { 0x2994, 21747 },
+ { 0x2995, 31554 },
+ { 0x2996, 31580 },
+ { 0x2997, 9222 },
+ { 0x2998, 21815 },
+ { 0x2999, 31531 },
+ { 0x299A, 56093 },
+ { 0x299B, 53830 },
+ { 0x299C, 21796 },
+ { 0x299D, 53834 },
+ { 0x299E, 10107 },
+ { 0x299F, 10102 },
+ { 0x29A0, 65821 },
+ { 0x29A1, 65817 },
+ { 0x29A2, 37674 },
+ { 0x29A3, 55459 },
+ { 0x29A4, 10111 },
+ { 0x29A5, 55461 },
+ { 0x29A6, 42843 },
+ { 0x29A7, 42847 },
+ { 0x29A8, 53746 },
+ { 0x29A9, 53734 },
+ { 0x29AA, 53770 },
+ { 0x29AB, 53758 },
+ { 0x29AC, 53806 },
+ { 0x29AD, 53782 },
+ { 0x29AE, 53818 },
+ { 0x29AF, 53794 },
+ { 0x29B0, 55465 },
+ { 0x29B1, 10590 },
+ { 0x29B2, 10584 },
+ { 0x29B3, 10578 },
+ { 0x29B4, 10572 },
+ { 0x29B5, 30522 },
+ { 0x29B6, 39617 },
+ { 0x29B7, 39612 },
+ { 0x29B8, 39459 },
+ { 0x29B9, 39776 },
+ { 0x29BA, 30530 },
+ { 0x29BB, 30526 },
+ { 0x29BC, 39784 },
+ { 0x29BD, 333 },
+ { 0x29BE, 39189 },
+ { 0x29BF, 39192 },
+ { 0x29C0, 39767 },
+ { 0x29C1, 39774 },
+ { 0x29C2, 30500 },
+ { 0x29C3, 30477 },
+ { 0x29C4, 43569 },
+ { 0x29C5, 43575 },
+ { 0x29C6, 43579 },
+ { 0x29C7, 43564 },
+ { 0x29C8, 43573 },
+ { 0x29C9, 7778 },
+ { 0x29CA, 55898 },
+ { 0x29CB, 55907 },
+ { 0x29CC, 4 },
+ { 0x29CD, 55902 },
+ { 0x29CE, 21974 },
+ { 0x29CF, 9447 },
+ { 0x29D0, 56016 },
+ { 0x29D1, 30295 },
+ { 0x29D2, 30300 },
+ { 0x29D3, 10232 },
+ { 0x29D4, 23043 },
+ { 0x29D5, 23048 },
+ { 0x29D6, 23406 },
+ { 0x29D7, 10312 },
+ { 0x29D8, 9428 },
+ { 0x29D9, 21955 },
+ { 0x29DA, 9361 },
+ { 0x29DB, 21888 },
+ { 0x29DC, 67665 },
+ { 0x29DD, 7712 },
+ { 0x29DE, 53301 },
+ { 0x29DF, 69403 },
+ { 0x29E0, 36275 },
+ { 0x29E1, 64303 },
+ { 0x29E2, 43172 },
+ { 0x29E3, 31708 },
+ { 0x29E4, 31713 },
+ { 0x29E5, 64294 },
+ { 0x29E6, 31794 },
+ { 0x29E7, 75047 },
+ { 0x29E8, 74585 },
+ { 0x29E9, 74591 },
+ { 0x29EA, 10277 },
+ { 0x29EB, 10289 },
+ { 0x29EC, 23248 },
+ { 0x29ED, 10246 },
+ { 0x29EE, 69417 },
+ { 0x29EF, 69408 },
+ { 0x29F0, 69420 },
+ { 0x29F1, 69411 },
+ { 0x29F2, 69414 },
+ { 0x29F3, 69405 },
+ { 0x29F4, 74476 },
+ { 0x29F5, 43001 },
+ { 0x29F6, 43549 },
+ { 0x29F7, 42996 },
+ { 0x29F8, 4385 },
+ { 0x29F9, 4382 },
+ { 0x29FA, 31559 },
+ { 0x29FB, 37614 },
+ { 0x29FC, 74608 },
+ { 0x29FD, 75090 },
+ { 0x29FE, 10053 },
+ { 0x29FF, 9598 },
+ { 0x2A00, 21242 },
+ { 0x2A01, 21246 },
+ { 0x2A02, 21250 },
+ { 0x2A03, 21220 },
+ { 0x2A04, 21225 },
+ { 0x2A05, 21238 },
+ { 0x2A06, 21234 },
+ { 0x2A07, 7785 },
+ { 0x2A08, 7781 },
+ { 0x2A09, 21215 },
+ { 0x2A0A, 35573 },
+ { 0x2A0B, 65861 },
+ { 0x2A0C, 65763 },
+ { 0x2A0D, 31773 },
+ { 0x2A0E, 53314 },
+ { 0x2A0F, 53338 },
+ { 0x2A10, 68611 },
+ { 0x2A11, 74503 },
+ { 0x2A12, 9491 },
+ { 0x2A13, 9498 },
+ { 0x2A14, 9485 },
+ { 0x2A15, 53333 },
+ { 0x2A16, 67973 },
+ { 0x2A17, 53324 },
+ { 0x2A18, 53307 },
+ { 0x2A19, 53330 },
+ { 0x2A1A, 53311 },
+ { 0x2A1B, 53318 },
+ { 0x2A1C, 53321 },
+ { 0x2A1D, 9130 },
+ { 0x2A1E, 14460 },
+ { 0x2A1F, 59 },
+ { 0x2A20, 51 },
+ { 0x2A21, 55 },
+ { 0x2A22, 9661 },
+ { 0x2A23, 9682 },
+ { 0x2A24, 9667 },
+ { 0x2A25, 9651 },
+ { 0x2A26, 9672 },
+ { 0x2A27, 9677 },
+ { 0x2A28, 9656 },
+ { 0x2A29, 21189 },
+ { 0x2A2A, 21184 },
+ { 0x2A2B, 21199 },
+ { 0x2A2C, 21194 },
+ { 0x2A2D, 9635 },
+ { 0x2A2E, 9641 },
+ { 0x2A2F, 37706 },
+ { 0x2A30, 75078 },
+ { 0x2A31, 75083 },
+ { 0x2A32, 68589 },
+ { 0x2A33, 22668 },
+ { 0x2A34, 75057 },
+ { 0x2A35, 75063 },
+ { 0x2A36, 39778 },
+ { 0x2A37, 75069 },
+ { 0x2A38, 39465 },
+ { 0x2A39, 9647 },
+ { 0x2A3A, 21180 },
+ { 0x2A3B, 75074 },
+ { 0x2A3C, 53344 },
+ { 0x2A3D, 65810 },
+ { 0x2A3E, 63 },
+ { 0x2A3F, 69339 },
+ { 0x2A40, 69571 },
+ { 0x2A41, 23059 },
+ { 0x2A42, 23067 },
+ { 0x2A43, 69578 },
+ { 0x2A44, 69574 },
+ { 0x2A45, 23063 },
+ { 0x2A46, 23075 },
+ { 0x2A47, 69586 },
+ { 0x2A48, 23070 },
+ { 0x2A49, 69581 },
+ { 0x2A4A, 23078 },
+ { 0x2A4B, 69589 },
+ { 0x2A4C, 30542 },
+ { 0x2A4D, 30567 },
+ { 0x2A4E, 31603 },
+ { 0x2A4F, 31600 },
+ { 0x2A50, 30546 },
+ { 0x2A51, 40961 },
+ { 0x2A52, 40929 },
+ { 0x2A53, 31655 },
+ { 0x2A54, 31652 },
+ { 0x2A55, 7801 },
+ { 0x2A56, 7797 },
+ { 0x2A57, 43534 },
+ { 0x2A58, 43537 },
+ { 0x2A59, 40954 },
+ { 0x2A5A, 40976 },
+ { 0x2A5B, 40944 },
+ { 0x2A5C, 40985 },
+ { 0x2A5D, 40949 },
+ { 0x2A5E, 40966 },
+ { 0x2A5F, 40981 },
+ { 0x2A60, 40971 },
+ { 0x2A61, 22483 },
+ { 0x2A62, 40934 },
+ { 0x2A63, 40939 },
+ { 0x2A64, 47 },
+ { 0x2A65, 33 },
+ { 0x2A66, 31721 },
+ { 0x2A67, 64299 },
+ { 0x2A68, 37655 },
+ { 0x2A69, 37662 },
+ { 0x2A6A, 23023 },
+ { 0x2A6B, 23028 },
+ { 0x2A6C, 43192 },
+ { 0x2A6D, 58345 },
+ { 0x2A6E, 31761 },
+ { 0x2A6F, 23695 },
+ { 0x2A70, 74511 },
+ { 0x2A71, 31741 },
+ { 0x2A72, 9688 },
+ { 0x2A73, 31746 },
+ { 0x2A74, 31567 },
+ { 0x2A75, 7793 },
+ { 0x2A76, 22998 },
+ { 0x2A77, 31726 },
+ { 0x2A78, 67228 },
+ { 0x2A79, 64731 },
+ { 0x2A7A, 69502 },
+ { 0x2A7B, 64735 },
+ { 0x2A7C, 69506 },
+ { 0x2A7D, 64662 },
+ { 0x2A7E, 69433 },
+ { 0x2A7F, 64684 },
+ { 0x2A80, 69455 },
+ { 0x2A81, 64667 },
+ { 0x2A82, 69438 },
+ { 0x2A83, 64675 },
+ { 0x2A84, 69446 },
+ { 0x2A85, 64696 },
+ { 0x2A86, 69470 },
+ { 0x2A87, 64706 },
+ { 0x2A88, 69477 },
+ { 0x2A89, 64702 },
+ { 0x2A8A, 69473 },
+ { 0x2A8B, 64763 },
+ { 0x2A8C, 69540 },
+ { 0x2A8D, 64740 },
+ { 0x2A8E, 69511 },
+ { 0x2A8F, 64745 },
+ { 0x2A90, 69516 },
+ { 0x2A91, 64769 },
+ { 0x2A92, 69530 },
+ { 0x2A93, 64750 },
+ { 0x2A94, 69521 },
+ { 0x2A95, 43508 },
+ { 0x2A96, 43521 },
+ { 0x2A97, 43513 },
+ { 0x2A98, 43526 },
+ { 0x2A99, 68620 },
+ { 0x2A9A, 68625 },
+ { 0x2A9B, 68630 },
+ { 0x2A9C, 68636 },
+ { 0x2A9D, 43174 },
+ { 0x2A9E, 43177 },
+ { 0x2A9F, 43180 },
+ { 0x2AA0, 43186 },
+ { 0x2AA1, 31589 },
+ { 0x2AA2, 31597 },
+ { 0x2AA3, 31592 },
+ { 0x2AA4, 69565 },
+ { 0x2AA5, 69551 },
+ { 0x2AA6, 64780 },
+ { 0x2AA7, 69554 },
+ { 0x2AA8, 64784 },
+ { 0x2AA9, 69558 },
+ { 0x2AAA, 43540 },
+ { 0x2AAB, 34099 },
+ { 0x2AAC, 43542 },
+ { 0x2AAD, 34101 },
+ { 0x2AAE, 31736 },
+ { 0x2AAF, 55374 },
+ { 0x2AB0, 55568 },
+ { 0x2AB1, 55368 },
+ { 0x2AB2, 55562 },
+ { 0x2AB3, 55364 },
+ { 0x2AB4, 55558 },
+ { 0x2AB5, 55348 },
+ { 0x2AB6, 55542 },
+ { 0x2AB7, 55359 },
+ { 0x2AB8, 55553 },
+ { 0x2AB9, 55353 },
+ { 0x2ABA, 55547 },
+ { 0x2ABB, 31666 },
+ { 0x2ABC, 31671 },
+ { 0x2ABD, 36512 },
+ { 0x2ABE, 55619 },
+ { 0x2ABF, 36515 },
+ { 0x2AC0, 55622 },
+ { 0x2AC1, 36520 },
+ { 0x2AC2, 55627 },
+ { 0x2AC3, 36476 },
+ { 0x2AC4, 55583 },
+ { 0x2AC5, 36507 },
+ { 0x2AC6, 55614 },
+ { 0x2AC7, 36496 },
+ { 0x2AC8, 55603 },
+ { 0x2AC9, 36501 },
+ { 0x2ACA, 55608 },
+ { 0x2ACB, 36490 },
+ { 0x2ACC, 55597 },
+ { 0x2ACD, 36177 },
+ { 0x2ACE, 36346 },
+ { 0x2ACF, 30553 },
+ { 0x2AD0, 30560 },
+ { 0x2AD1, 30555 },
+ { 0x2AD2, 30562 },
+ { 0x2AD3, 36528 },
+ { 0x2AD4, 55632 },
+ { 0x2AD5, 36525 },
+ { 0x2AD6, 55635 },
+ { 0x2AD7, 55650 },
+ { 0x2AD8, 55642 },
+ { 0x2AD9, 40541 },
+ { 0x2ADA, 65757 },
+ { 0x2ADB, 69324 },
+ { 0x2ADC, 40557 },
+ { 0x2ADD, 67879 },
+ { 0x2ADE, 22467 },
+ { 0x2ADF, 22459 },
+ { 0x2AE0, 22444 },
+ { 0x2AE1, 75038 },
+ { 0x2AE2, 56026 },
+ { 0x2AE3, 31675 },
+ { 0x2AE4, 56021 },
+ { 0x2AE5, 31680 },
+ { 0x2AE6, 9507 },
+ { 0x2AE7, 22462 },
+ { 0x2AE8, 22447 },
+ { 0x2AE9, 22452 },
+ { 0x2AEA, 31551 },
+ { 0x2AEB, 31545 },
+ { 0x2AEC, 31606 },
+ { 0x2AED, 55483 },
+ { 0x2AEE, 9026 },
+ { 0x2AEF, 56068 },
+ { 0x2AF0, 56073 },
+ { 0x2AF1, 9075 },
+ { 0x2AF2, 54952 },
+ { 0x2AF3, 54948 },
+ { 0x2AF4, 37646 },
+ { 0x2AF5, 37635 },
+ { 0x2AF6, 37616 },
+ { 0x2AF7, 37623 },
+ { 0x2AF8, 37626 },
+ { 0x2AF9, 68642 },
+ { 0x2AFA, 68648 },
+ { 0x2AFB, 37629 },
+ { 0x2AFC, 14466 },
+ { 0x2AFD, 31661 },
+ { 0x2AFE, 23397 },
+ { 0x2AFF, 21230 },
+ { 0x2B00, 21310 },
+ { 0x2B01, 21361 },
+ { 0x2B02, 22705 },
+ { 0x2B03, 22732 },
+ { 0x2B04, 9289 },
+ { 0x2B05, 64465 },
+ { 0x2B06, 44578 },
+ { 0x2B07, 63292 },
+ { 0x2B08, 21306 },
+ { 0x2B09, 21357 },
+ { 0x2B0A, 22701 },
+ { 0x2B0B, 22728 },
+ { 0x2B0C, 9285 },
+ { 0x2B0D, 311 },
+ { 0x2B0E, 68024 },
+ { 0x2B0F, 68019 },
+ { 0x2B10, 64366 },
+ { 0x2B11, 64361 },
+ { 0x2B12, 36202 },
+ { 0x2B13, 36261 },
+ { 0x2B14, 36254 },
+ { 0x2B15, 36212 },
+ { 0x2B16, 40312 },
+ { 0x2B17, 40317 },
+ { 0x2B18, 40307 },
+ { 0x2B19, 40322 },
+ { 0x2B1A, 31537 },
+ { 0x2B1B, 10191 },
+ { 0x2B1C, 23212 },
+ { 0x2B1D, 10163 },
+ { 0x2B1E, 23187 },
+ { 0x2B1F, 10302 },
+ { 0x2B20, 23387 },
+ { 0x2B21, 23371 },
+ { 0x2B22, 10287 },
+ { 0x2B23, 67658 },
+ { 0x2B24, 10188 },
+ { 0x2B25, 10264 },
+ { 0x2B26, 23287 },
+ { 0x2B27, 10267 },
+ { 0x2B28, 23290 },
+ { 0x2B29, 10215 },
+ { 0x2B2A, 10218 },
+ { 0x2B2B, 23228 },
+ { 0x2B2C, 10325 },
+ { 0x2B2D, 23414 },
+ { 0x2B2E, 10306 },
+ { 0x2B2F, 23400 },
+ { 0x2B30, 9212 },
+ { 0x2B31, 22992 },
+ { 0x2B32, 9217 },
+ { 0x2B33, 9550 },
+ { 0x2B34, 64644 },
+ { 0x2B35, 64637 },
+ { 0x2B36, 64610 },
+ { 0x2B37, 64650 },
+ { 0x2B38, 64403 },
+ { 0x2B39, 64396 },
+ { 0x2B3A, 64388 },
+ { 0x2B3B, 64615 },
+ { 0x2B3C, 64629 },
+ { 0x2B3D, 64620 },
+ { 0x2B3E, 64453 },
+ { 0x2B3F, 10065 },
+ { 0x2B40, 31751 },
+ { 0x2B41, 42982 },
+ { 0x2B42, 64446 },
+ { 0x2B43, 68124 },
+ { 0x2B44, 68120 },
+ { 0x2B45, 64605 },
+ { 0x2B46, 68270 },
+ { 0x2B47, 42988 },
+ { 0x2B48, 68109 },
+ { 0x2B49, 23033 },
+ { 0x2B4A, 64434 },
+ { 0x2B4B, 64440 },
+ { 0x2B4C, 68103 },
+ { 0x2B50, 23277 },
+ { 0x2B51, 10209 },
+ { 0x2B52, 23222 },
+ { 0x2B53, 10370 },
+ { 0x2B54, 23470 },
+ { 0x2C00, 67450 },
+ { 0x2C01, 67479 },
+ { 0x2C02, 67503 },
+ { 0x2C03, 67579 },
+ { 0x2C04, 67519 },
+ { 0x2C05, 67555 },
+ { 0x2C06, 67621 },
+ { 0x2C07, 67523 },
+ { 0x2C08, 67575 },
+ { 0x2C09, 67491 },
+ { 0x2C0A, 67583 },
+ { 0x2C0B, 67434 },
+ { 0x2C0C, 67563 },
+ { 0x2C0D, 67495 },
+ { 0x2C0E, 67604 },
+ { 0x2C0F, 67608 },
+ { 0x2C10, 67531 },
+ { 0x2C11, 67459 },
+ { 0x2C12, 67567 },
+ { 0x2C13, 67535 },
+ { 0x2C14, 67539 },
+ { 0x2C15, 67571 },
+ { 0x2C16, 67475 },
+ { 0x2C17, 67527 },
+ { 0x2C18, 67487 },
+ { 0x2C19, 67463 },
+ { 0x2C1A, 67438 },
+ { 0x2C1B, 67499 },
+ { 0x2C1C, 67471 },
+ { 0x2C1D, 67559 },
+ { 0x2C1E, 67467 },
+ { 0x2C1F, 67515 },
+ { 0x2C20, 67511 },
+ { 0x2C21, 67507 },
+ { 0x2C22, 67616 },
+ { 0x2C23, 67446 },
+ { 0x2C24, 67543 },
+ { 0x2C25, 67548 },
+ { 0x2C26, 67442 },
+ { 0x2C27, 67594 },
+ { 0x2C28, 67454 },
+ { 0x2C29, 67588 },
+ { 0x2C2A, 67483 },
+ { 0x2C2B, 67600 },
+ { 0x2C2C, 67612 },
+ { 0x2C2D, 67630 },
+ { 0x2C2E, 67625 },
+ { 0x2C30, 67249 },
+ { 0x2C31, 67278 },
+ { 0x2C32, 67302 },
+ { 0x2C33, 67378 },
+ { 0x2C34, 67318 },
+ { 0x2C35, 67354 },
+ { 0x2C36, 67420 },
+ { 0x2C37, 67322 },
+ { 0x2C38, 67374 },
+ { 0x2C39, 67290 },
+ { 0x2C3A, 67382 },
+ { 0x2C3B, 67233 },
+ { 0x2C3C, 67362 },
+ { 0x2C3D, 67294 },
+ { 0x2C3E, 67403 },
+ { 0x2C3F, 67407 },
+ { 0x2C40, 67330 },
+ { 0x2C41, 67258 },
+ { 0x2C42, 67366 },
+ { 0x2C43, 67334 },
+ { 0x2C44, 67338 },
+ { 0x2C45, 67370 },
+ { 0x2C46, 67274 },
+ { 0x2C47, 67326 },
+ { 0x2C48, 67286 },
+ { 0x2C49, 67262 },
+ { 0x2C4A, 67237 },
+ { 0x2C4B, 67298 },
+ { 0x2C4C, 67270 },
+ { 0x2C4D, 67358 },
+ { 0x2C4E, 67266 },
+ { 0x2C4F, 67314 },
+ { 0x2C50, 67310 },
+ { 0x2C51, 67306 },
+ { 0x2C52, 67415 },
+ { 0x2C53, 67245 },
+ { 0x2C54, 67342 },
+ { 0x2C55, 67347 },
+ { 0x2C56, 67241 },
+ { 0x2C57, 67393 },
+ { 0x2C58, 67253 },
+ { 0x2C59, 67387 },
+ { 0x2C5A, 67282 },
+ { 0x2C5B, 67399 },
+ { 0x2C5C, 67411 },
+ { 0x2C5D, 67429 },
+ { 0x2C5E, 67424 },
+ { 0x2C60, 19214 },
+ { 0x2C61, 15577 },
+ { 0x2C62, 19228 },
+ { 0x2C63, 19682 },
+ { 0x2C64, 19762 },
+ { 0x2C65, 14629 },
+ { 0x2C66, 16472 },
+ { 0x2C67, 18936 },
+ { 0x2C68, 15276 },
+ { 0x2C69, 19148 },
+ { 0x2C6A, 15507 },
+ { 0x2C6B, 20410 },
+ { 0x2C6C, 17019 },
+ { 0x2C6D, 20597 },
+ { 0x2C6E, 19272 },
+ { 0x2C6F, 20649 },
+ { 0x2C71, 16751 },
+ { 0x2C72, 20235 },
+ { 0x2C73, 16796 },
+ { 0x2C74, 16739 },
+ { 0x2C75, 20547 },
+ { 0x2C76, 17312 },
+ { 0x2C77, 17839 },
+ { 0x2C78, 14974 },
+ { 0x2C79, 17623 },
+ { 0x2C7A, 15813 },
+ { 0x2C7B, 18125 },
+ { 0x2C7C, 20797 },
+ { 0x2C7D, 54684 },
+ { 0x2C80, 31044 },
+ { 0x2C81, 30751 },
+ { 0x2C82, 31072 },
+ { 0x2C83, 30779 },
+ { 0x2C84, 31084 },
+ { 0x2C85, 30791 },
+ { 0x2C86, 31080 },
+ { 0x2C87, 30787 },
+ { 0x2C88, 30922 },
+ { 0x2C89, 30629 },
+ { 0x2C8A, 31036 },
+ { 0x2C8B, 30743 },
+ { 0x2C8C, 31076 },
+ { 0x2C8D, 30783 },
+ { 0x2C8E, 31048 },
+ { 0x2C8F, 30755 },
+ { 0x2C90, 31108 },
+ { 0x2C91, 30815 },
+ { 0x2C92, 31088 },
+ { 0x2C93, 30795 },
+ { 0x2C94, 31056 },
+ { 0x2C95, 30763 },
+ { 0x2C96, 31092 },
+ { 0x2C97, 30799 },
+ { 0x2C98, 30898 },
+ { 0x2C99, 30605 },
+ { 0x2C9A, 30902 },
+ { 0x2C9B, 30609 },
+ { 0x2C9C, 30934 },
+ { 0x2C9D, 30641 },
+ { 0x2C9E, 30890 },
+ { 0x2C9F, 30597 },
+ { 0x2CA0, 30906 },
+ { 0x2CA1, 30613 },
+ { 0x2CA2, 30910 },
+ { 0x2CA3, 30617 },
+ { 0x2CA4, 31068 },
+ { 0x2CA5, 30775 },
+ { 0x2CA6, 31040 },
+ { 0x2CA7, 30747 },
+ { 0x2CA8, 30914 },
+ { 0x2CA9, 30621 },
+ { 0x2CAA, 30894 },
+ { 0x2CAB, 30601 },
+ { 0x2CAC, 30930 },
+ { 0x2CAD, 30637 },
+ { 0x2CAE, 31032 },
+ { 0x2CAF, 30739 },
+ { 0x2CB0, 31028 },
+ { 0x2CB1, 30735 },
+ { 0x2CB2, 31132 },
+ { 0x2CB3, 30839 },
+ { 0x2CB4, 30944 },
+ { 0x2CB5, 30651 },
+ { 0x2CB6, 31152 },
+ { 0x2CB7, 30859 },
+ { 0x2CB8, 31142 },
+ { 0x2CB9, 30849 },
+ { 0x2CBA, 31127 },
+ { 0x2CBB, 30834 },
+ { 0x2CBC, 31147 },
+ { 0x2CBD, 30854 },
+ { 0x2CBE, 30974 },
+ { 0x2CBF, 30681 },
+ { 0x2CC0, 31096 },
+ { 0x2CC1, 30803 },
+ { 0x2CC2, 31112 },
+ { 0x2CC3, 30819 },
+ { 0x2CC4, 30986 },
+ { 0x2CC5, 30693 },
+ { 0x2CC6, 30956 },
+ { 0x2CC7, 30663 },
+ { 0x2CC8, 31117 },
+ { 0x2CC9, 30824 },
+ { 0x2CCA, 31137 },
+ { 0x2CCB, 30844 },
+ { 0x2CCC, 30980 },
+ { 0x2CCD, 30687 },
+ { 0x2CCE, 30938 },
+ { 0x2CCF, 30645 },
+ { 0x2CD0, 31122 },
+ { 0x2CD1, 30829 },
+ { 0x2CD2, 30968 },
+ { 0x2CD3, 30675 },
+ { 0x2CD4, 30962 },
+ { 0x2CD5, 30669 },
+ { 0x2CD6, 30998 },
+ { 0x2CD7, 30705 },
+ { 0x2CD8, 30950 },
+ { 0x2CD9, 30657 },
+ { 0x2CDA, 30992 },
+ { 0x2CDB, 30699 },
+ { 0x2CDC, 31022 },
+ { 0x2CDD, 30729 },
+ { 0x2CDE, 31004 },
+ { 0x2CDF, 30711 },
+ { 0x2CE0, 31010 },
+ { 0x2CE1, 30717 },
+ { 0x2CE2, 31016 },
+ { 0x2CE3, 30723 },
+ { 0x2CE4, 30872 },
+ { 0x2CE5, 30864 },
+ { 0x2CE6, 30868 },
+ { 0x2CE7, 30887 },
+ { 0x2CE8, 30879 },
+ { 0x2CE9, 30875 },
+ { 0x2CEA, 30883 },
+ { 0x2CF9, 30572 },
+ { 0x2CFA, 30582 },
+ { 0x2CFB, 30588 },
+ { 0x2CFC, 30577 },
+ { 0x2CFD, 31157 },
+ { 0x2CFE, 30594 },
+ { 0x2CFF, 31161 },
+ { 0x2D00, 51786 },
+ { 0x2D01, 51814 },
+ { 0x2D02, 51830 },
+ { 0x2D03, 51826 },
+ { 0x2D04, 51790 },
+ { 0x2D05, 51894 },
+ { 0x2D06, 51902 },
+ { 0x2D07, 51886 },
+ { 0x2D08, 51798 },
+ { 0x2D09, 51854 },
+ { 0x2D0A, 51858 },
+ { 0x2D0B, 51862 },
+ { 0x2D0C, 51866 },
+ { 0x2D0D, 51802 },
+ { 0x2D0E, 51870 },
+ { 0x2D0F, 51934 },
+ { 0x2D10, 51878 },
+ { 0x2D11, 51882 },
+ { 0x2D12, 51890 },
+ { 0x2D13, 51806 },
+ { 0x2D14, 51926 },
+ { 0x2D15, 51922 },
+ { 0x2D16, 51914 },
+ { 0x2D17, 51874 },
+ { 0x2D18, 51930 },
+ { 0x2D19, 51910 },
+ { 0x2D1A, 51818 },
+ { 0x2D1B, 51850 },
+ { 0x2D1C, 51822 },
+ { 0x2D1D, 51906 },
+ { 0x2D1E, 51898 },
+ { 0x2D1F, 51918 },
+ { 0x2D20, 51834 },
+ { 0x2D21, 51794 },
+ { 0x2D22, 51842 },
+ { 0x2D23, 51810 },
+ { 0x2D24, 51838 },
+ { 0x2D25, 51846 },
+ { 0x2D30, 55713 },
+ { 0x2D31, 55725 },
+ { 0x2D32, 55789 },
+ { 0x2D33, 55734 },
+ { 0x2D34, 55834 },
+ { 0x2D35, 55845 },
+ { 0x2D36, 55740 },
+ { 0x2D37, 55728 },
+ { 0x2D38, 55798 },
+ { 0x2D39, 55795 },
+ { 0x2D3A, 55831 },
+ { 0x2D3B, 55782 },
+ { 0x2D3C, 55731 },
+ { 0x2D3D, 55743 },
+ { 0x2D3E, 55854 },
+ { 0x2D3F, 55837 },
+ { 0x2D40, 55737 },
+ { 0x2D41, 55840 },
+ { 0x2D42, 55850 },
+ { 0x2D43, 55804 },
+ { 0x2D44, 55722 },
+ { 0x2D45, 55807 },
+ { 0x2D46, 55870 },
+ { 0x2D47, 55758 },
+ { 0x2D48, 55858 },
+ { 0x2D49, 55716 },
+ { 0x2D4A, 55825 },
+ { 0x2D4B, 55882 },
+ { 0x2D4C, 55878 },
+ { 0x2D4D, 55746 },
+ { 0x2D4E, 55749 },
+ { 0x2D4F, 55752 },
+ { 0x2D50, 55866 },
+ { 0x2D51, 55874 },
+ { 0x2D52, 55755 },
+ { 0x2D53, 55719 },
+ { 0x2D54, 55761 },
+ { 0x2D55, 55810 },
+ { 0x2D56, 55801 },
+ { 0x2D57, 55862 },
+ { 0x2D58, 55785 },
+ { 0x2D59, 55764 },
+ { 0x2D5A, 55816 },
+ { 0x2D5B, 55813 },
+ { 0x2D5C, 55767 },
+ { 0x2D5D, 55819 },
+ { 0x2D5E, 55792 },
+ { 0x2D5F, 55822 },
+ { 0x2D60, 55770 },
+ { 0x2D61, 55773 },
+ { 0x2D62, 55776 },
+ { 0x2D63, 55779 },
+ { 0x2D64, 55886 },
+ { 0x2D65, 55828 },
+ { 0x2D6F, 55890 },
+ { 0x2D80, 50999 },
+ { 0x2D81, 51011 },
+ { 0x2D82, 51140 },
+ { 0x2D83, 51170 },
+ { 0x2D84, 51542 },
+ { 0x2D85, 50762 },
+ { 0x2D86, 51227 },
+ { 0x2D87, 50810 },
+ { 0x2D88, 51032 },
+ { 0x2D89, 51488 },
+ { 0x2D8A, 51672 },
+ { 0x2D8B, 51344 },
+ { 0x2D8C, 50837 },
+ { 0x2D8D, 51407 },
+ { 0x2D8E, 50939 },
+ { 0x2D8F, 51569 },
+ { 0x2D90, 51395 },
+ { 0x2D91, 51500 },
+ { 0x2D92, 51074 },
+ { 0x2D93, 51422 },
+ { 0x2D94, 51428 },
+ { 0x2D95, 51629 },
+ { 0x2D96, 51425 },
+ { 0x2DA0, 51173 },
+ { 0x2DA1, 51185 },
+ { 0x2DA2, 51179 },
+ { 0x2DA3, 51548 },
+ { 0x2DA4, 51551 },
+ { 0x2DA5, 51176 },
+ { 0x2DA6, 51182 },
+ { 0x2DA8, 50777 },
+ { 0x2DA9, 50789 },
+ { 0x2DAA, 50783 },
+ { 0x2DAB, 51368 },
+ { 0x2DAC, 51371 },
+ { 0x2DAD, 50780 },
+ { 0x2DAE, 50786 },
+ { 0x2DB0, 51350 },
+ { 0x2DB1, 51362 },
+ { 0x2DB2, 51356 },
+ { 0x2DB3, 51614 },
+ { 0x2DB4, 51617 },
+ { 0x2DB5, 51353 },
+ { 0x2DB6, 51359 },
+ { 0x2DB8, 51374 },
+ { 0x2DB9, 51386 },
+ { 0x2DBA, 51380 },
+ { 0x2DBB, 51620 },
+ { 0x2DBC, 51623 },
+ { 0x2DBD, 51377 },
+ { 0x2DBE, 51383 },
+ { 0x2DC0, 51119 },
+ { 0x2DC1, 51131 },
+ { 0x2DC2, 51125 },
+ { 0x2DC3, 51530 },
+ { 0x2DC4, 51533 },
+ { 0x2DC5, 51122 },
+ { 0x2DC6, 51128 },
+ { 0x2DC8, 50978 },
+ { 0x2DC9, 50990 },
+ { 0x2DCA, 50984 },
+ { 0x2DCB, 51473 },
+ { 0x2DCC, 51476 },
+ { 0x2DCD, 50981 },
+ { 0x2DCE, 50987 },
+ { 0x2DD0, 51299 },
+ { 0x2DD1, 51311 },
+ { 0x2DD2, 51305 },
+ { 0x2DD3, 51599 },
+ { 0x2DD4, 51602 },
+ { 0x2DD5, 51302 },
+ { 0x2DD6, 51308 },
+ { 0x2DD8, 50894 },
+ { 0x2DD9, 50906 },
+ { 0x2DDA, 50900 },
+ { 0x2DDB, 51437 },
+ { 0x2DDC, 51440 },
+ { 0x2DDD, 50897 },
+ { 0x2DDE, 50903 },
+ { 0x2DE0, 58034 },
+ { 0x2DE1, 58082 },
+ { 0x2DE2, 58103 },
+ { 0x2DE3, 58038 },
+ { 0x2DE4, 58119 },
+ { 0x2DE5, 58090 },
+ { 0x2DE6, 58070 },
+ { 0x2DE7, 58042 },
+ { 0x2DE8, 58046 },
+ { 0x2DE9, 58050 },
+ { 0x2DEA, 58030 },
+ { 0x2DEB, 58074 },
+ { 0x2DEC, 58054 },
+ { 0x2DED, 58058 },
+ { 0x2DEE, 58078 },
+ { 0x2DEF, 58062 },
+ { 0x2DF0, 58111 },
+ { 0x2DF1, 58099 },
+ { 0x2DF2, 58107 },
+ { 0x2DF3, 58135 },
+ { 0x2DF4, 58123 },
+ { 0x2DF5, 58131 },
+ { 0x2DF6, 58026 },
+ { 0x2DF7, 58066 },
+ { 0x2DF8, 58127 },
+ { 0x2DF9, 58155 },
+ { 0x2DFA, 58115 },
+ { 0x2DFB, 58086 },
+ { 0x2DFC, 58144 },
+ { 0x2DFD, 58139 },
+ { 0x2DFE, 58094 },
+ { 0x2DFF, 58149 },
+ { 0x2E00, 21801 },
+ { 0x2E01, 21783 },
+ { 0x2E02, 9477 },
+ { 0x2E03, 22004 },
+ { 0x2E04, 9353 },
+ { 0x2E05, 21874 },
+ { 0x2E06, 35672 },
+ { 0x2E07, 35666 },
+ { 0x2E08, 31539 },
+ { 0x2E09, 9480 },
+ { 0x2E0A, 22007 },
+ { 0x2E0B, 35670 },
+ { 0x2E0C, 9377 },
+ { 0x2E0D, 21904 },
+ { 0x2E0E, 63378 },
+ { 0x2E0F, 69268 },
+ { 0x2E10, 31783 },
+ { 0x2E11, 55488 },
+ { 0x2E12, 69569 },
+ { 0x2E13, 31535 },
+ { 0x2E14, 63298 },
+ { 0x2E15, 44620 },
+ { 0x2E16, 31542 },
+ { 0x2E17, 31658 },
+ { 0x2E18, 53360 },
+ { 0x2E19, 9626 },
+ { 0x2E1A, 33425 },
+ { 0x2E1B, 23017 },
+ { 0x2E1C, 9148 },
+ { 0x2E1D, 21751 },
+ { 0x2E1E, 23009 },
+ { 0x2E1F, 23013 },
+ { 0x2E20, 9452 },
+ { 0x2E21, 21979 },
+ { 0x2E22, 7737 },
+ { 0x2E23, 7750 },
+ { 0x2E24, 30258 },
+ { 0x2E25, 30271 },
+ { 0x2E26, 9439 },
+ { 0x2E27, 21964 },
+ { 0x2E28, 9369 },
+ { 0x2E29, 21896 },
+ { 0x2E2A, 7772 },
+ { 0x2E2B, 7155 },
+ { 0x2E2C, 43556 },
+ { 0x2E2D, 9091 },
+ { 0x2E2E, 55502 },
+ { 0x2E2F, 56091 },
+ { 0x2E30, 9704 },
+ { 0x2E80, 5603 },
+ { 0x2E81, 5510 },
+ { 0x2E82, 5606 },
+ { 0x2E83, 5610 },
+ { 0x2E84, 5614 },
+ { 0x2E85, 5600 },
+ { 0x2E86, 5346 },
+ { 0x2E87, 5577 },
+ { 0x2E88, 5539 },
+ { 0x2E89, 5543 },
+ { 0x2E8A, 5638 },
+ { 0x2E8B, 5477 },
+ { 0x2E8C, 5558 },
+ { 0x2E8D, 5562 },
+ { 0x2E8E, 5441 },
+ { 0x2E8F, 5445 },
+ { 0x2E90, 5453 },
+ { 0x2E91, 5449 },
+ { 0x2E92, 5566 },
+ { 0x2E93, 5626 },
+ { 0x2E94, 5569 },
+ { 0x2E95, 5573 },
+ { 0x2E96, 5531 },
+ { 0x2E97, 5535 },
+ { 0x2E98, 5429 },
+ { 0x2E99, 5403 },
+ { 0x2E9B, 5507 },
+ { 0x2E9C, 5406 },
+ { 0x2E9D, 5471 },
+ { 0x2E9E, 5513 },
+ { 0x2E9F, 5597 },
+ { 0x2EA0, 5635 },
+ { 0x2EA1, 5583 },
+ { 0x2EA2, 5587 },
+ { 0x2EA3, 5423 },
+ { 0x2EA4, 5392 },
+ { 0x2EA5, 5396 },
+ { 0x2EA6, 5641 },
+ { 0x2EA7, 5349 },
+ { 0x2EA8, 5352 },
+ { 0x2EA9, 5438 },
+ { 0x2EAA, 5412 },
+ { 0x2EAB, 5370 },
+ { 0x2EAC, 5618 },
+ { 0x2EAD, 5622 },
+ { 0x2EAE, 5591 },
+ { 0x2EAF, 5480 },
+ { 0x2EB0, 5715 },
+ { 0x2EB1, 5373 },
+ { 0x2EB2, 5377 },
+ { 0x2EB3, 5385 },
+ { 0x2EB4, 5381 },
+ { 0x2EB5, 5468 },
+ { 0x2EB6, 5555 },
+ { 0x2EB7, 5400 },
+ { 0x2EB8, 5367 },
+ { 0x2EB9, 5389 },
+ { 0x2EBA, 5499 },
+ { 0x2EBB, 5503 },
+ { 0x2EBC, 5465 },
+ { 0x2EBD, 5594 },
+ { 0x2EBE, 5519 },
+ { 0x2EBF, 5523 },
+ { 0x2EC0, 5527 },
+ { 0x2EC1, 5580 },
+ { 0x2EC2, 5632 },
+ { 0x2EC3, 5491 },
+ { 0x2EC4, 5495 },
+ { 0x2EC5, 5671 },
+ { 0x2EC6, 5647 },
+ { 0x2EC7, 5435 },
+ { 0x2EC8, 5739 },
+ { 0x2EC9, 5727 },
+ { 0x2ECA, 5426 },
+ { 0x2ECB, 5679 },
+ { 0x2ECC, 5651 },
+ { 0x2ECD, 5483 },
+ { 0x2ECE, 5487 },
+ { 0x2ECF, 5420 },
+ { 0x2ED0, 5699 },
+ { 0x2ED1, 5457 },
+ { 0x2ED2, 5461 },
+ { 0x2ED3, 5707 },
+ { 0x2ED4, 5695 },
+ { 0x2ED5, 5547 },
+ { 0x2ED6, 5551 },
+ { 0x2ED7, 5474 },
+ { 0x2ED8, 5409 },
+ { 0x2ED9, 5743 },
+ { 0x2EDA, 5703 },
+ { 0x2EDB, 5719 },
+ { 0x2EDC, 5667 },
+ { 0x2EDD, 5355 },
+ { 0x2EDE, 5359 },
+ { 0x2EDF, 5363 },
+ { 0x2EE0, 5663 },
+ { 0x2EE1, 5432 },
+ { 0x2EE2, 5723 },
+ { 0x2EE3, 5417 },
+ { 0x2EE4, 5516 },
+ { 0x2EE5, 5687 },
+ { 0x2EE6, 5675 },
+ { 0x2EE7, 5711 },
+ { 0x2EE8, 5655 },
+ { 0x2EE9, 5659 },
+ { 0x2EEA, 5691 },
+ { 0x2EEB, 5752 },
+ { 0x2EEC, 5683 },
+ { 0x2EED, 5756 },
+ { 0x2EEE, 5731 },
+ { 0x2EEF, 5760 },
+ { 0x2EF0, 5735 },
+ { 0x2EF1, 5629 },
+ { 0x2EF2, 5764 },
+ { 0x2EF3, 5748 },
+ { 0x2F00, 33501 },
+ { 0x2F01, 33669 },
+ { 0x2F02, 33459 },
+ { 0x2F03, 33860 },
+ { 0x2F04, 33981 },
+ { 0x2F05, 33639 },
+ { 0x2F06, 33531 },
+ { 0x2F07, 33486 },
+ { 0x2F08, 33489 },
+ { 0x2F09, 33663 },
+ { 0x2F0A, 33792 },
+ { 0x2F0B, 33789 },
+ { 0x2F0C, 33588 },
+ { 0x2F0D, 33780 },
+ { 0x2F0E, 33480 },
+ { 0x2F0F, 33896 },
+ { 0x2F10, 33688 },
+ { 0x2F11, 33819 },
+ { 0x2F12, 33831 },
+ { 0x2F13, 33753 },
+ { 0x2F14, 33881 },
+ { 0x2F15, 33834 },
+ { 0x2F16, 33962 },
+ { 0x2F17, 33528 },
+ { 0x2F18, 34081 },
+ { 0x2F19, 33707 },
+ { 0x2F1A, 33774 },
+ { 0x2F1B, 34048 },
+ { 0x2F1C, 33756 },
+ { 0x2F1D, 33828 },
+ { 0x2F1E, 34078 },
+ { 0x2F1F, 33786 },
+ { 0x2F20, 34051 },
+ { 0x2F21, 33434 },
+ { 0x2F22, 33437 },
+ { 0x2F23, 34030 },
+ { 0x2F24, 33447 },
+ { 0x2F25, 33917 },
+ { 0x2F26, 33771 },
+ { 0x2F27, 33701 },
+ { 0x2F28, 33645 },
+ { 0x2F29, 33869 },
+ { 0x2F2A, 33654 },
+ { 0x2F2B, 33938 },
+ { 0x2F2C, 33990 },
+ { 0x2F2D, 34066 },
+ { 0x2F2E, 33839 },
+ { 0x2F2F, 33750 },
+ { 0x2F30, 34045 },
+ { 0x2F31, 34006 },
+ { 0x2F32, 33462 },
+ { 0x2F33, 33856 },
+ { 0x2F34, 33948 },
+ { 0x2F35, 33675 },
+ { 0x2F36, 33534 },
+ { 0x2F37, 33848 },
+ { 0x2F38, 33450 },
+ { 0x2F39, 33872 },
+ { 0x2F3A, 34021 },
+ { 0x2F3B, 33719 },
+ { 0x2F3C, 33813 },
+ { 0x2F3D, 34036 },
+ { 0x2F3E, 33585 },
+ { 0x2F3F, 33630 },
+ { 0x2F40, 33935 },
+ { 0x2F41, 33507 },
+ { 0x2F42, 33978 },
+ { 0x2F43, 33941 },
+ { 0x2F44, 33444 },
+ { 0x2F45, 33993 },
+ { 0x2F46, 33495 },
+ { 0x2F47, 33525 },
+ { 0x2F48, 33519 },
+ { 0x2F49, 33682 },
+ { 0x2F4A, 33731 },
+ { 0x2F4B, 33651 },
+ { 0x2F4C, 33722 },
+ { 0x2F4D, 33783 },
+ { 0x2F4E, 34015 },
+ { 0x2F4F, 33430 },
+ { 0x2F50, 34027 },
+ { 0x2F51, 33477 },
+ { 0x2F52, 33573 },
+ { 0x2F53, 33887 },
+ { 0x2F54, 33908 },
+ { 0x2F55, 33604 },
+ { 0x2F56, 33576 },
+ { 0x2F57, 33959 },
+ { 0x2F58, 33952 },
+ { 0x2F59, 33625 },
+ { 0x2F5A, 33866 },
+ { 0x2F5B, 33601 },
+ { 0x2F5C, 33453 },
+ { 0x2F5D, 33456 },
+ { 0x2F5E, 34069 },
+ { 0x2F5F, 33648 },
+ { 0x2F60, 33822 },
+ { 0x2F61, 33728 },
+ { 0x2F62, 33893 },
+ { 0x2F63, 33666 },
+ { 0x2F64, 33538 },
+ { 0x2F65, 33795 },
+ { 0x2F66, 33556 },
+ { 0x2F67, 34072 },
+ { 0x2F68, 33944 },
+ { 0x2F69, 33914 },
+ { 0x2F6A, 33716 },
+ { 0x2F6B, 33582 },
+ { 0x2F6C, 33471 },
+ { 0x2F6D, 33878 },
+ { 0x2F6E, 33759 },
+ { 0x2F6F, 33890 },
+ { 0x2F70, 33987 },
+ { 0x2F71, 33905 },
+ { 0x2F72, 33807 },
+ { 0x2F73, 33567 },
+ { 0x2F74, 33884 },
+ { 0x2F75, 33929 },
+ { 0x2F76, 33698 },
+ { 0x2F77, 33713 },
+ { 0x2F78, 33483 },
+ { 0x2F79, 33492 },
+ { 0x2F7A, 33842 },
+ { 0x2F7B, 34033 },
+ { 0x2F7C, 33498 },
+ { 0x2F7D, 33441 },
+ { 0x2F7E, 33692 },
+ { 0x2F7F, 33465 },
+ { 0x2F80, 33768 },
+ { 0x2F81, 33679 },
+ { 0x2F82, 34063 },
+ { 0x2F83, 33710 },
+ { 0x2F84, 33923 },
+ { 0x2F85, 33972 },
+ { 0x2F86, 34000 },
+ { 0x2F87, 33975 },
+ { 0x2F88, 33550 },
+ { 0x2F89, 34075 },
+ { 0x2F8A, 33777 },
+ { 0x2F8B, 33810 },
+ { 0x2F8C, 33899 },
+ { 0x2F8D, 33966 },
+ { 0x2F8E, 33765 },
+ { 0x2F8F, 33737 },
+ { 0x2F90, 34024 },
+ { 0x2F91, 33741 },
+ { 0x2F92, 33522 },
+ { 0x2F93, 33642 },
+ { 0x2F94, 33984 },
+ { 0x2F95, 34012 },
+ { 0x2F96, 33541 },
+ { 0x2F97, 33504 },
+ { 0x2F98, 33926 },
+ { 0x2F99, 33845 },
+ { 0x2F9A, 33513 },
+ { 0x2F9B, 33516 },
+ { 0x2F9C, 33610 },
+ { 0x2F9D, 33553 },
+ { 0x2F9E, 33564 },
+ { 0x2F9F, 33932 },
+ { 0x2FA0, 34042 },
+ { 0x2FA1, 33734 },
+ { 0x2FA2, 33570 },
+ { 0x2FA3, 33747 },
+ { 0x2FA4, 34087 },
+ { 0x2FA5, 34054 },
+ { 0x2FA6, 33619 },
+ { 0x2FA7, 33672 },
+ { 0x2FA8, 33616 },
+ { 0x2FA9, 33825 },
+ { 0x2FAA, 33863 },
+ { 0x2FAB, 33851 },
+ { 0x2FAC, 33695 },
+ { 0x2FAD, 33547 },
+ { 0x2FAE, 33920 },
+ { 0x2FAF, 33598 },
+ { 0x2FB0, 34039 },
+ { 0x2FB1, 33996 },
+ { 0x2FB2, 33660 },
+ { 0x2FB3, 33875 },
+ { 0x2FB4, 33657 },
+ { 0x2FB5, 33744 },
+ { 0x2FB6, 33474 },
+ { 0x2FB7, 33468 },
+ { 0x2FB8, 33633 },
+ { 0x2FB9, 34060 },
+ { 0x2FBA, 33816 },
+ { 0x2FBB, 33561 },
+ { 0x2FBC, 33725 },
+ { 0x2FBD, 33622 },
+ { 0x2FBE, 33798 },
+ { 0x2FBF, 34090 },
+ { 0x2FC0, 34057 },
+ { 0x2FC1, 33804 },
+ { 0x2FC2, 33607 },
+ { 0x2FC3, 33544 },
+ { 0x2FC4, 33704 },
+ { 0x2FC5, 33579 },
+ { 0x2FC6, 33911 },
+ { 0x2FC7, 33636 },
+ { 0x2FC8, 34018 },
+ { 0x2FC9, 33969 },
+ { 0x2FCA, 33762 },
+ { 0x2FCB, 34084 },
+ { 0x2FCC, 33613 },
+ { 0x2FCD, 34003 },
+ { 0x2FCE, 33592 },
+ { 0x2FCF, 33510 },
+ { 0x2FD0, 33685 },
+ { 0x2FD1, 33595 },
+ { 0x2FD2, 33902 },
+ { 0x2FD3, 33956 },
+ { 0x2FD4, 34009 },
+ { 0x2FD5, 33801 },
+ { 0x2FF0, 69175 },
+ { 0x2FF1, 69189 },
+ { 0x2FF2, 69181 },
+ { 0x2FF3, 69195 },
+ { 0x2FF4, 69170 },
+ { 0x2FF5, 69213 },
+ { 0x2FF6, 69219 },
+ { 0x2FF7, 69207 },
+ { 0x2FF8, 69232 },
+ { 0x2FF9, 69239 },
+ { 0x2FFA, 69225 },
+ { 0x2FFB, 69203 },
+ { 0x3000, 68678 },
+ { 0x3001, 68672 },
+ { 0x3002, 68665 },
+ { 0x3003, 10538 },
+ { 0x3004, 53362 },
+ { 0x3005, 68698 },
+ { 0x3006, 68687 },
+ { 0x3007, 68680 },
+ { 0x3008, 9204 },
+ { 0x3009, 21788 },
+ { 0x300A, 9357 },
+ { 0x300B, 21878 },
+ { 0x300C, 9350 },
+ { 0x300D, 21871 },
+ { 0x300E, 9330 },
+ { 0x300F, 21851 },
+ { 0x3010, 9227 },
+ { 0x3011, 21820 },
+ { 0x3012, 35661 },
+ { 0x3013, 9121 },
+ { 0x3014, 9443 },
+ { 0x3015, 21968 },
+ { 0x3016, 9343 },
+ { 0x3017, 21864 },
+ { 0x3018, 9338 },
+ { 0x3019, 21859 },
+ { 0x301A, 9334 },
+ { 0x301B, 21855 },
+ { 0x301C, 10063 },
+ { 0x301D, 55478 },
+ { 0x301E, 31576 },
+ { 0x301F, 6033 },
+ { 0x3020, 35663 },
+ { 0x3021, 52741 },
+ { 0x3022, 52750 },
+ { 0x3023, 52768 },
+ { 0x3024, 52756 },
+ { 0x3025, 52753 },
+ { 0x3026, 52744 },
+ { 0x3027, 52765 },
+ { 0x3028, 52762 },
+ { 0x3029, 52759 },
+ { 0x302A, 68674 },
+ { 0x302B, 68683 },
+ { 0x302C, 68694 },
+ { 0x302D, 68690 },
+ { 0x302E, 32170 },
+ { 0x302F, 31884 },
+ { 0x3030, 10078 },
+ { 0x3031, 56034 },
+ { 0x3032, 56050 },
+ { 0x3033, 56044 },
+ { 0x3034, 56057 },
+ { 0x3035, 56038 },
+ { 0x3036, 39456 },
+ { 0x3037, 68701 },
+ { 0x3038, 52747 },
+ { 0x3039, 52774 },
+ { 0x303A, 52771 },
+ { 0x303B, 56098 },
+ { 0x303C, 9594 },
+ { 0x303D, 9628 },
+ { 0x303E, 69103 },
+ { 0x303F, 68668 },
+ { 0x3041, 53242 },
+ { 0x3042, 53020 },
+ { 0x3043, 53250 },
+ { 0x3044, 53026 },
+ { 0x3045, 53258 },
+ { 0x3046, 53035 },
+ { 0x3047, 53246 },
+ { 0x3048, 53023 },
+ { 0x3049, 53254 },
+ { 0x304A, 53032 },
+ { 0x304B, 53098 },
+ { 0x304C, 53068 },
+ { 0x304D, 53104 },
+ { 0x304E, 53074 },
+ { 0x304F, 53110 },
+ { 0x3050, 53080 },
+ { 0x3051, 53101 },
+ { 0x3052, 53071 },
+ { 0x3053, 53107 },
+ { 0x3054, 53077 },
+ { 0x3055, 53173 },
+ { 0x3056, 53227 },
+ { 0x3057, 53179 },
+ { 0x3058, 53233 },
+ { 0x3059, 53185 },
+ { 0x305A, 53239 },
+ { 0x305B, 53176 },
+ { 0x305C, 53230 },
+ { 0x305D, 53182 },
+ { 0x305E, 53236 },
+ { 0x305F, 53188 },
+ { 0x3060, 53053 },
+ { 0x3061, 53194 },
+ { 0x3062, 53059 },
+ { 0x3063, 53270 },
+ { 0x3064, 53200 },
+ { 0x3065, 53065 },
+ { 0x3066, 53191 },
+ { 0x3067, 53056 },
+ { 0x3068, 53197 },
+ { 0x3069, 53062 },
+ { 0x306A, 53128 },
+ { 0x306B, 53134 },
+ { 0x306C, 53140 },
+ { 0x306D, 53131 },
+ { 0x306E, 53137 },
+ { 0x306F, 53083 },
+ { 0x3070, 53038 },
+ { 0x3071, 53143 },
+ { 0x3072, 53089 },
+ { 0x3073, 53044 },
+ { 0x3074, 53149 },
+ { 0x3075, 53095 },
+ { 0x3076, 53050 },
+ { 0x3077, 53155 },
+ { 0x3078, 53086 },
+ { 0x3079, 53041 },
+ { 0x307A, 53146 },
+ { 0x307B, 53092 },
+ { 0x307C, 53047 },
+ { 0x307D, 53152 },
+ { 0x307E, 53113 },
+ { 0x307F, 53119 },
+ { 0x3080, 53125 },
+ { 0x3081, 53116 },
+ { 0x3082, 53122 },
+ { 0x3083, 53278 },
+ { 0x3084, 53218 },
+ { 0x3085, 53286 },
+ { 0x3086, 53224 },
+ { 0x3087, 53282 },
+ { 0x3088, 53221 },
+ { 0x3089, 53158 },
+ { 0x308A, 53164 },
+ { 0x308B, 53170 },
+ { 0x308C, 53161 },
+ { 0x308D, 53167 },
+ { 0x308E, 53274 },
+ { 0x308F, 53206 },
+ { 0x3090, 53212 },
+ { 0x3091, 53209 },
+ { 0x3092, 53215 },
+ { 0x3093, 53029 },
+ { 0x3094, 53203 },
+ { 0x3095, 53262 },
+ { 0x3096, 53266 },
+ { 0x3099, 58335 },
+ { 0x309A, 58340 },
+ { 0x309B, 75125 },
+ { 0x309C, 75133 },
+ { 0x309D, 53297 },
+ { 0x309E, 53290 },
+ { 0x309F, 53294 },
+ { 0x30A0, 75122 },
+ { 0x30A1, 53600 },
+ { 0x30A2, 53366 },
+ { 0x30A3, 53608 },
+ { 0x30A4, 53372 },
+ { 0x30A5, 53616 },
+ { 0x30A6, 53381 },
+ { 0x30A7, 53604 },
+ { 0x30A8, 53369 },
+ { 0x30A9, 53612 },
+ { 0x30AA, 53378 },
+ { 0x30AB, 53444 },
+ { 0x30AC, 53414 },
+ { 0x30AD, 53450 },
+ { 0x30AE, 53420 },
+ { 0x30AF, 53456 },
+ { 0x30B0, 53426 },
+ { 0x30B1, 53447 },
+ { 0x30B2, 53417 },
+ { 0x30B3, 53453 },
+ { 0x30B4, 53423 },
+ { 0x30B5, 53519 },
+ { 0x30B6, 53585 },
+ { 0x30B7, 53525 },
+ { 0x30B8, 53591 },
+ { 0x30B9, 53531 },
+ { 0x30BA, 53597 },
+ { 0x30BB, 53522 },
+ { 0x30BC, 53588 },
+ { 0x30BD, 53528 },
+ { 0x30BE, 53594 },
+ { 0x30BF, 53534 },
+ { 0x30C0, 53399 },
+ { 0x30C1, 53540 },
+ { 0x30C2, 53405 },
+ { 0x30C3, 53692 },
+ { 0x30C4, 53546 },
+ { 0x30C5, 53411 },
+ { 0x30C6, 53537 },
+ { 0x30C7, 53402 },
+ { 0x30C8, 53543 },
+ { 0x30C9, 53408 },
+ { 0x30CA, 53474 },
+ { 0x30CB, 53480 },
+ { 0x30CC, 53486 },
+ { 0x30CD, 53477 },
+ { 0x30CE, 53483 },
+ { 0x30CF, 53429 },
+ { 0x30D0, 53384 },
+ { 0x30D1, 53489 },
+ { 0x30D2, 53435 },
+ { 0x30D3, 53390 },
+ { 0x30D4, 53495 },
+ { 0x30D5, 53441 },
+ { 0x30D6, 53396 },
+ { 0x30D7, 53501 },
+ { 0x30D8, 53432 },
+ { 0x30D9, 53387 },
+ { 0x30DA, 53492 },
+ { 0x30DB, 53438 },
+ { 0x30DC, 53393 },
+ { 0x30DD, 53498 },
+ { 0x30DE, 53459 },
+ { 0x30DF, 53465 },
+ { 0x30E0, 53471 },
+ { 0x30E1, 53462 },
+ { 0x30E2, 53468 },
+ { 0x30E3, 53700 },
+ { 0x30E4, 53576 },
+ { 0x30E5, 53708 },
+ { 0x30E6, 53582 },
+ { 0x30E7, 53704 },
+ { 0x30E8, 53579 },
+ { 0x30E9, 53504 },
+ { 0x30EA, 53510 },
+ { 0x30EB, 53516 },
+ { 0x30EC, 53507 },
+ { 0x30ED, 53513 },
+ { 0x30EE, 53696 },
+ { 0x30EF, 53564 },
+ { 0x30F0, 53570 },
+ { 0x30F1, 53567 },
+ { 0x30F2, 53573 },
+ { 0x30F3, 53375 },
+ { 0x30F4, 53561 },
+ { 0x30F5, 53640 },
+ { 0x30F6, 53644 },
+ { 0x30F7, 53549 },
+ { 0x30F8, 53555 },
+ { 0x30F9, 53552 },
+ { 0x30FA, 53558 },
+ { 0x30FB, 53712 },
+ { 0x30FC, 75129 },
+ { 0x30FD, 53722 },
+ { 0x30FE, 53715 },
+ { 0x30FF, 53719 },
+ { 0x3105, 45589 },
+ { 0x3106, 45631 },
+ { 0x3107, 45622 },
+ { 0x3108, 45601 },
+ { 0x3109, 45595 },
+ { 0x310A, 45643 },
+ { 0x310B, 45625 },
+ { 0x310C, 45619 },
+ { 0x310D, 45604 },
+ { 0x310E, 45616 },
+ { 0x310F, 45607 },
+ { 0x3110, 45613 },
+ { 0x3111, 45634 },
+ { 0x3112, 45652 },
+ { 0x3113, 45727 },
+ { 0x3114, 45673 },
+ { 0x3115, 45724 },
+ { 0x3116, 45637 },
+ { 0x3117, 45655 },
+ { 0x3118, 45592 },
+ { 0x3119, 45640 },
+ { 0x311A, 45586 },
+ { 0x311B, 45628 },
+ { 0x311C, 45598 },
+ { 0x311D, 45679 },
+ { 0x311E, 45658 },
+ { 0x311F, 45682 },
+ { 0x3120, 45667 },
+ { 0x3121, 45721 },
+ { 0x3122, 45664 },
+ { 0x3123, 45685 },
+ { 0x3124, 45733 },
+ { 0x3125, 45739 },
+ { 0x3126, 45688 },
+ { 0x3127, 45610 },
+ { 0x3128, 45646 },
+ { 0x3129, 45706 },
+ { 0x312A, 45649 },
+ { 0x312B, 45712 },
+ { 0x312C, 45691 },
+ { 0x312D, 45697 },
+ { 0x3131, 31996 },
+ { 0x3132, 32095 },
+ { 0x3133, 32065 },
+ { 0x3134, 31978 },
+ { 0x3135, 32071 },
+ { 0x3136, 32074 },
+ { 0x3137, 31999 },
+ { 0x3138, 32098 },
+ { 0x3139, 31984 },
+ { 0x313A, 32113 },
+ { 0x313B, 32083 },
+ { 0x313C, 32086 },
+ { 0x313D, 32038 },
+ { 0x313E, 32140 },
+ { 0x313F, 32137 },
+ { 0x3140, 32080 },
+ { 0x3141, 31975 },
+ { 0x3142, 31981 },
+ { 0x3143, 32062 },
+ { 0x3144, 32035 },
+ { 0x3145, 31954 },
+ { 0x3146, 32026 },
+ { 0x3147, 31972 },
+ { 0x3148, 31966 },
+ { 0x3149, 32050 },
+ { 0x314A, 32008 },
+ { 0x314B, 32011 },
+ { 0x314C, 32020 },
+ { 0x314D, 32017 },
+ { 0x314E, 31969 },
+ { 0x314F, 31891 },
+ { 0x3150, 31906 },
+ { 0x3151, 31927 },
+ { 0x3152, 31948 },
+ { 0x3153, 31909 },
+ { 0x3154, 31894 },
+ { 0x3155, 31951 },
+ { 0x3156, 31930 },
+ { 0x3157, 31900 },
+ { 0x3158, 31918 },
+ { 0x3159, 31942 },
+ { 0x315A, 31915 },
+ { 0x315B, 31936 },
+ { 0x315C, 31903 },
+ { 0x315D, 31945 },
+ { 0x315E, 31921 },
+ { 0x315F, 31924 },
+ { 0x3160, 31939 },
+ { 0x3161, 31912 },
+ { 0x3162, 31933 },
+ { 0x3163, 31897 },
+ { 0x3164, 31889 },
+ { 0x3165, 32059 },
+ { 0x3166, 32104 },
+ { 0x3167, 32032 },
+ { 0x3168, 32128 },
+ { 0x3169, 32161 },
+ { 0x316A, 32116 },
+ { 0x316B, 32149 },
+ { 0x316C, 32134 },
+ { 0x316D, 32164 },
+ { 0x316E, 32068 },
+ { 0x316F, 32029 },
+ { 0x3170, 32125 },
+ { 0x3171, 32119 },
+ { 0x3172, 32107 },
+ { 0x3173, 32110 },
+ { 0x3174, 32155 },
+ { 0x3175, 32158 },
+ { 0x3176, 32077 },
+ { 0x3177, 32131 },
+ { 0x3178, 32122 },
+ { 0x3179, 32167 },
+ { 0x317A, 32089 },
+ { 0x317B, 32044 },
+ { 0x317C, 32092 },
+ { 0x317D, 32047 },
+ { 0x317E, 32041 },
+ { 0x317F, 32014 },
+ { 0x3180, 32056 },
+ { 0x3181, 32023 },
+ { 0x3182, 32143 },
+ { 0x3183, 32152 },
+ { 0x3184, 32146 },
+ { 0x3185, 32053 },
+ { 0x3186, 32101 },
+ { 0x3187, 31987 },
+ { 0x3188, 32002 },
+ { 0x3189, 31957 },
+ { 0x318A, 32005 },
+ { 0x318B, 31990 },
+ { 0x318C, 31960 },
+ { 0x318D, 31963 },
+ { 0x318E, 31993 },
+ { 0x3190, 69162 },
+ { 0x3191, 69166 },
+ { 0x3192, 69110 },
+ { 0x3193, 69118 },
+ { 0x3194, 69138 },
+ { 0x3195, 69122 },
+ { 0x3196, 69114 },
+ { 0x3197, 69154 },
+ { 0x3198, 69142 },
+ { 0x3199, 69130 },
+ { 0x319A, 69158 },
+ { 0x319B, 69134 },
+ { 0x319C, 69146 },
+ { 0x319D, 69150 },
+ { 0x319E, 69126 },
+ { 0x319F, 69106 },
+ { 0x31A0, 45670 },
+ { 0x31A1, 45730 },
+ { 0x31A2, 45709 },
+ { 0x31A3, 45694 },
+ { 0x31A4, 45676 },
+ { 0x31A5, 45742 },
+ { 0x31A6, 45718 },
+ { 0x31A7, 45754 },
+ { 0x31A8, 45703 },
+ { 0x31A9, 45736 },
+ { 0x31AA, 45745 },
+ { 0x31AB, 45757 },
+ { 0x31AC, 45700 },
+ { 0x31AD, 45748 },
+ { 0x31AE, 45760 },
+ { 0x31AF, 45763 },
+ { 0x31B0, 45661 },
+ { 0x31B1, 45715 },
+ { 0x31B2, 45751 },
+ { 0x31B3, 45766 },
+ { 0x31B4, 45578 },
+ { 0x31B5, 45582 },
+ { 0x31B6, 45574 },
+ { 0x31B7, 45570 },
+ { 0x31C0, 5256 },
+ { 0x31C1, 5295 },
+ { 0x31C2, 5298 },
+ { 0x31C3, 5301 },
+ { 0x31C4, 5286 },
+ { 0x31C5, 5313 },
+ { 0x31C6, 5304 },
+ { 0x31C7, 5262 },
+ { 0x31C8, 5331 },
+ { 0x31C9, 5340 },
+ { 0x31CA, 5307 },
+ { 0x31CB, 5334 },
+ { 0x31CC, 5325 },
+ { 0x31CD, 5310 },
+ { 0x31CE, 5337 },
+ { 0x31CF, 5244 },
+ { 0x31D0, 5241 },
+ { 0x31D1, 5253 },
+ { 0x31D2, 5247 },
+ { 0x31D3, 5280 },
+ { 0x31D4, 5238 },
+ { 0x31D5, 5265 },
+ { 0x31D6, 5259 },
+ { 0x31D7, 5289 },
+ { 0x31D8, 5319 },
+ { 0x31D9, 5283 },
+ { 0x31DA, 5277 },
+ { 0x31DB, 5268 },
+ { 0x31DC, 5274 },
+ { 0x31DD, 5292 },
+ { 0x31DE, 5322 },
+ { 0x31DF, 5316 },
+ { 0x31E0, 5328 },
+ { 0x31E1, 5343 },
+ { 0x31E2, 5271 },
+ { 0x31E3, 5250 },
+ { 0x31F0, 53648 },
+ { 0x31F1, 53680 },
+ { 0x31F2, 53684 },
+ { 0x31F3, 53688 },
+ { 0x31F4, 53656 },
+ { 0x31F5, 53620 },
+ { 0x31F6, 53628 },
+ { 0x31F7, 53636 },
+ { 0x31F8, 53624 },
+ { 0x31F9, 53632 },
+ { 0x31FA, 53652 },
+ { 0x31FB, 53660 },
+ { 0x31FC, 53668 },
+ { 0x31FD, 53676 },
+ { 0x31FE, 53664 },
+ { 0x31FF, 53672 },
+ { 0x3200, 74845 },
+ { 0x3201, 74824 },
+ { 0x3202, 74852 },
+ { 0x3203, 74838 },
+ { 0x3204, 74817 },
+ { 0x3205, 74831 },
+ { 0x3206, 74785 },
+ { 0x3207, 74810 },
+ { 0x3208, 74792 },
+ { 0x3209, 74859 },
+ { 0x320A, 74866 },
+ { 0x320B, 74880 },
+ { 0x320C, 74873 },
+ { 0x320D, 74803 },
+ { 0x320E, 74848 },
+ { 0x320F, 74827 },
+ { 0x3210, 74855 },
+ { 0x3211, 74841 },
+ { 0x3212, 74820 },
+ { 0x3213, 74834 },
+ { 0x3214, 74788 },
+ { 0x3215, 74813 },
+ { 0x3216, 74795 },
+ { 0x3217, 74862 },
+ { 0x3218, 74869 },
+ { 0x3219, 74883 },
+ { 0x321A, 74876 },
+ { 0x321B, 74806 },
+ { 0x321C, 74799 },
+ { 0x321D, 74892 },
+ { 0x321E, 74887 },
+ { 0x3220, 74929 },
+ { 0x3221, 74941 },
+ { 0x3222, 75001 },
+ { 0x3223, 74953 },
+ { 0x3224, 74950 },
+ { 0x3225, 74932 },
+ { 0x3226, 74992 },
+ { 0x3227, 74980 },
+ { 0x3228, 74965 },
+ { 0x3229, 74938 },
+ { 0x322A, 74959 },
+ { 0x322B, 74947 },
+ { 0x322C, 75004 },
+ { 0x322D, 74974 },
+ { 0x322E, 74986 },
+ { 0x322F, 74977 },
+ { 0x3230, 74935 },
+ { 0x3231, 74995 },
+ { 0x3232, 74956 },
+ { 0x3233, 75007 },
+ { 0x3234, 74962 },
+ { 0x3235, 75010 },
+ { 0x3236, 75022 },
+ { 0x3237, 75034 },
+ { 0x3238, 74983 },
+ { 0x3239, 75025 },
+ { 0x323A, 74944 },
+ { 0x323B, 74998 },
+ { 0x323C, 75028 },
+ { 0x323D, 75031 },
+ { 0x323E, 75019 },
+ { 0x323F, 75013 },
+ { 0x3240, 75016 },
+ { 0x3241, 74968 },
+ { 0x3242, 74971 },
+ { 0x3243, 74989 },
+ { 0x3250, 69269 },
+ { 0x3251, 39399 },
+ { 0x3252, 39407 },
+ { 0x3253, 39431 },
+ { 0x3254, 39415 },
+ { 0x3255, 39411 },
+ { 0x3256, 39403 },
+ { 0x3257, 39427 },
+ { 0x3258, 39423 },
+ { 0x3259, 39419 },
+ { 0x325A, 39354 },
+ { 0x325B, 39357 },
+ { 0x325C, 39365 },
+ { 0x325D, 39389 },
+ { 0x325E, 39373 },
+ { 0x325F, 39369 },
+ { 0x3260, 39256 },
+ { 0x3261, 39235 },
+ { 0x3262, 39263 },
+ { 0x3263, 39249 },
+ { 0x3264, 39228 },
+ { 0x3265, 39242 },
+ { 0x3266, 39196 },
+ { 0x3267, 39217 },
+ { 0x3268, 39203 },
+ { 0x3269, 39270 },
+ { 0x326A, 39277 },
+ { 0x326B, 39291 },
+ { 0x326C, 39284 },
+ { 0x326D, 39210 },
+ { 0x326E, 39259 },
+ { 0x326F, 39238 },
+ { 0x3270, 39266 },
+ { 0x3271, 39252 },
+ { 0x3272, 39231 },
+ { 0x3273, 39245 },
+ { 0x3274, 39199 },
+ { 0x3275, 39220 },
+ { 0x3276, 39206 },
+ { 0x3277, 39273 },
+ { 0x3278, 39280 },
+ { 0x3279, 39294 },
+ { 0x327A, 39287 },
+ { 0x327B, 39213 },
+ { 0x327C, 39302 },
+ { 0x327D, 39298 },
+ { 0x327E, 39224 },
+ { 0x327F, 34096 },
+ { 0x3280, 39623 },
+ { 0x3281, 39635 },
+ { 0x3282, 39710 },
+ { 0x3283, 39647 },
+ { 0x3284, 39644 },
+ { 0x3285, 39626 },
+ { 0x3286, 39701 },
+ { 0x3287, 39683 },
+ { 0x3288, 39671 },
+ { 0x3289, 39632 },
+ { 0x328A, 39665 },
+ { 0x328B, 39641 },
+ { 0x328C, 39713 },
+ { 0x328D, 39677 },
+ { 0x328E, 39689 },
+ { 0x328F, 39680 },
+ { 0x3290, 39629 },
+ { 0x3291, 39704 },
+ { 0x3292, 39650 },
+ { 0x3293, 39728 },
+ { 0x3294, 39668 },
+ { 0x3295, 39731 },
+ { 0x3296, 39755 },
+ { 0x3297, 39764 },
+ { 0x3298, 39686 },
+ { 0x3299, 39722 },
+ { 0x329A, 39662 },
+ { 0x329B, 39719 },
+ { 0x329C, 39746 },
+ { 0x329D, 39752 },
+ { 0x329E, 39695 },
+ { 0x329F, 39749 },
+ { 0x32A0, 39656 },
+ { 0x32A1, 39674 },
+ { 0x32A2, 39638 },
+ { 0x32A3, 39725 },
+ { 0x32A4, 39653 },
+ { 0x32A5, 39716 },
+ { 0x32A6, 39620 },
+ { 0x32A7, 39659 },
+ { 0x32A8, 39698 },
+ { 0x32A9, 39737 },
+ { 0x32AA, 39740 },
+ { 0x32AB, 39707 },
+ { 0x32AC, 39758 },
+ { 0x32AD, 39761 },
+ { 0x32AE, 39743 },
+ { 0x32AF, 39734 },
+ { 0x32B0, 39692 },
+ { 0x32B1, 39361 },
+ { 0x32B2, 39385 },
+ { 0x32B3, 39381 },
+ { 0x32B4, 39377 },
+ { 0x32B5, 39312 },
+ { 0x32B6, 39315 },
+ { 0x32B7, 39323 },
+ { 0x32B8, 39347 },
+ { 0x32B9, 39331 },
+ { 0x32BA, 39327 },
+ { 0x32BB, 39319 },
+ { 0x32BC, 39343 },
+ { 0x32BD, 39339 },
+ { 0x32BE, 39335 },
+ { 0x32BF, 39309 },
+ { 0x32C0, 69073 },
+ { 0x32C1, 69088 },
+ { 0x32C2, 69063 },
+ { 0x32C3, 69058 },
+ { 0x32C4, 68893 },
+ { 0x32C5, 69053 },
+ { 0x32C6, 69048 },
+ { 0x32C7, 69068 },
+ { 0x32C8, 69098 },
+ { 0x32C9, 69078 },
+ { 0x32CA, 69093 },
+ { 0x32CB, 69083 },
+ { 0x32CC, 35949 },
+ { 0x32CD, 36112 },
+ { 0x32CE, 35939 },
+ { 0x32CF, 40924 },
+ { 0x32D0, 39471 },
+ { 0x32D1, 39477 },
+ { 0x32D2, 39483 },
+ { 0x32D3, 39474 },
+ { 0x32D4, 39480 },
+ { 0x32D5, 39501 },
+ { 0x32D6, 39507 },
+ { 0x32D7, 39513 },
+ { 0x32D8, 39504 },
+ { 0x32D9, 39510 },
+ { 0x32DA, 39561 },
+ { 0x32DB, 39567 },
+ { 0x32DC, 39573 },
+ { 0x32DD, 39564 },
+ { 0x32DE, 39570 },
+ { 0x32DF, 39576 },
+ { 0x32E0, 39582 },
+ { 0x32E1, 39588 },
+ { 0x32E2, 39579 },
+ { 0x32E3, 39585 },
+ { 0x32E4, 39531 },
+ { 0x32E5, 39537 },
+ { 0x32E6, 39543 },
+ { 0x32E7, 39534 },
+ { 0x32E8, 39540 },
+ { 0x32E9, 39486 },
+ { 0x32EA, 39492 },
+ { 0x32EB, 39498 },
+ { 0x32EC, 39489 },
+ { 0x32ED, 39495 },
+ { 0x32EE, 39516 },
+ { 0x32EF, 39522 },
+ { 0x32F0, 39528 },
+ { 0x32F1, 39519 },
+ { 0x32F2, 39525 },
+ { 0x32F3, 39603 },
+ { 0x32F4, 39609 },
+ { 0x32F5, 39606 },
+ { 0x32F6, 39546 },
+ { 0x32F7, 39552 },
+ { 0x32F8, 39558 },
+ { 0x32F9, 39549 },
+ { 0x32FA, 39555 },
+ { 0x32FB, 39591 },
+ { 0x32FC, 39597 },
+ { 0x32FD, 39594 },
+ { 0x32FE, 39600 },
+ { 0x3300, 36363 },
+ { 0x3301, 36365 },
+ { 0x3302, 36290 },
+ { 0x3303, 36157 },
+ { 0x3304, 36375 },
+ { 0x3305, 36171 },
+ { 0x3306, 36155 },
+ { 0x3307, 36421 },
+ { 0x3308, 36296 },
+ { 0x3309, 36188 },
+ { 0x330A, 36190 },
+ { 0x330B, 36326 },
+ { 0x330C, 36393 },
+ { 0x330D, 36395 },
+ { 0x330E, 36300 },
+ { 0x330F, 36298 },
+ { 0x3310, 36167 },
+ { 0x3311, 36302 },
+ { 0x3312, 36379 },
+ { 0x3313, 36391 },
+ { 0x3314, 36175 },
+ { 0x3315, 36459 },
+ { 0x3316, 36463 },
+ { 0x3317, 36451 },
+ { 0x3318, 36369 },
+ { 0x3319, 36447 },
+ { 0x331A, 36453 },
+ { 0x331B, 36397 },
+ { 0x331C, 36328 },
+ { 0x331D, 36377 },
+ { 0x331E, 36330 },
+ { 0x331F, 36415 },
+ { 0x3320, 36445 },
+ { 0x3321, 36417 },
+ { 0x3322, 36353 },
+ { 0x3323, 36355 },
+ { 0x3324, 36294 },
+ { 0x3325, 36161 },
+ { 0x3326, 36163 },
+ { 0x3327, 36153 },
+ { 0x3328, 36186 },
+ { 0x3329, 36336 },
+ { 0x332A, 36304 },
+ { 0x332B, 36441 },
+ { 0x332C, 36338 },
+ { 0x332D, 36389 },
+ { 0x332E, 36457 },
+ { 0x332F, 36385 },
+ { 0x3330, 36194 },
+ { 0x3331, 36159 },
+ { 0x3332, 36423 },
+ { 0x3333, 36373 },
+ { 0x3334, 36419 },
+ { 0x3335, 36308 },
+ { 0x3336, 36449 },
+ { 0x3337, 36192 },
+ { 0x3338, 36383 },
+ { 0x3339, 36371 },
+ { 0x333A, 36342 },
+ { 0x333B, 36340 },
+ { 0x333C, 36292 },
+ { 0x333D, 36387 },
+ { 0x333E, 36367 },
+ { 0x333F, 36120 },
+ { 0x3340, 36344 },
+ { 0x3341, 36306 },
+ { 0x3342, 36169 },
+ { 0x3343, 36401 },
+ { 0x3344, 36334 },
+ { 0x3345, 36332 },
+ { 0x3346, 36381 },
+ { 0x3347, 36403 },
+ { 0x3348, 36409 },
+ { 0x3349, 36184 },
+ { 0x334A, 36455 },
+ { 0x334B, 36182 },
+ { 0x334C, 36407 },
+ { 0x334D, 36405 },
+ { 0x334E, 36359 },
+ { 0x334F, 36361 },
+ { 0x3350, 36288 },
+ { 0x3351, 36411 },
+ { 0x3352, 36198 },
+ { 0x3353, 36351 },
+ { 0x3354, 36413 },
+ { 0x3355, 36196 },
+ { 0x3356, 36443 },
+ { 0x3357, 36357 },
+ { 0x3358, 68940 },
+ { 0x3359, 68898 },
+ { 0x335A, 68916 },
+ { 0x335B, 68958 },
+ { 0x335C, 68928 },
+ { 0x335D, 68922 },
+ { 0x335E, 68904 },
+ { 0x335F, 68952 },
+ { 0x3360, 68946 },
+ { 0x3361, 68934 },
+ { 0x3362, 68910 },
+ { 0x3363, 68964 },
+ { 0x3364, 68970 },
+ { 0x3365, 69012 },
+ { 0x3366, 69000 },
+ { 0x3367, 68982 },
+ { 0x3368, 68988 },
+ { 0x3369, 69018 },
+ { 0x336A, 68994 },
+ { 0x336B, 69006 },
+ { 0x336C, 68976 },
+ { 0x336D, 69024 },
+ { 0x336E, 69030 },
+ { 0x336F, 69042 },
+ { 0x3370, 69036 },
+ { 0x3371, 36122 },
+ { 0x3372, 35925 },
+ { 0x3373, 35907 },
+ { 0x3374, 36088 },
+ { 0x3375, 36059 },
+ { 0x3376, 36066 },
+ { 0x3377, 35931 },
+ { 0x3378, 35936 },
+ { 0x3379, 35933 },
+ { 0x337A, 35957 },
+ { 0x337B, 36100 },
+ { 0x337C, 36104 },
+ { 0x337D, 36108 },
+ { 0x337E, 36096 },
+ { 0x337F, 36461 },
+ { 0x3380, 36063 },
+ { 0x3381, 36047 },
+ { 0x3382, 36013 },
+ { 0x3383, 35992 },
+ { 0x3384, 35959 },
+ { 0x3385, 35961 },
+ { 0x3386, 35994 },
+ { 0x3387, 35943 },
+ { 0x3388, 36090 },
+ { 0x3389, 36173 },
+ { 0x338A, 36068 },
+ { 0x338B, 36049 },
+ { 0x338C, 36016 },
+ { 0x338D, 36019 },
+ { 0x338E, 35999 },
+ { 0x338F, 35963 },
+ { 0x3390, 35953 },
+ { 0x3391, 36124 },
+ { 0x3392, 36130 },
+ { 0x3393, 36116 },
+ { 0x3394, 36151 },
+ { 0x3395, 36022 },
+ { 0x3396, 36001 },
+ { 0x3397, 35929 },
+ { 0x3398, 35967 },
+ { 0x3399, 35941 },
+ { 0x339A, 36051 },
+ { 0x339B, 36025 },
+ { 0x339C, 36003 },
+ { 0x339D, 35915 },
+ { 0x339E, 35969 },
+ { 0x339F, 36008 },
+ { 0x33A0, 35920 },
+ { 0x33A1, 35898 },
+ { 0x33A2, 35977 },
+ { 0x33A3, 36005 },
+ { 0x33A4, 35917 },
+ { 0x33A5, 35895 },
+ { 0x33A6, 35971 },
+ { 0x33A7, 35886 },
+ { 0x33A8, 35890 },
+ { 0x33A9, 36061 },
+ { 0x33AA, 36126 },
+ { 0x33AB, 36136 },
+ { 0x33AC, 36118 },
+ { 0x33AD, 36140 },
+ { 0x33AE, 36142 },
+ { 0x33AF, 36146 },
+ { 0x33B0, 36076 },
+ { 0x33B1, 36053 },
+ { 0x33B2, 36028 },
+ { 0x33B3, 36011 },
+ { 0x33B4, 36078 },
+ { 0x33B5, 36055 },
+ { 0x33B6, 36031 },
+ { 0x33B7, 36037 },
+ { 0x33B8, 35982 },
+ { 0x33B9, 36039 },
+ { 0x33BA, 36080 },
+ { 0x33BB, 36057 },
+ { 0x33BC, 36034 },
+ { 0x33BD, 36042 },
+ { 0x33BE, 35984 },
+ { 0x33BF, 36044 },
+ { 0x33C0, 35880 },
+ { 0x33C1, 35883 },
+ { 0x33C2, 35905 },
+ { 0x33C3, 35909 },
+ { 0x33C4, 35911 },
+ { 0x33C5, 35913 },
+ { 0x33C6, 35876 },
+ { 0x33C7, 35923 },
+ { 0x33C8, 35927 },
+ { 0x33C9, 35945 },
+ { 0x33CA, 35947 },
+ { 0x33CB, 35951 },
+ { 0x33CC, 35955 },
+ { 0x33CD, 35965 },
+ { 0x33CE, 35974 },
+ { 0x33CF, 35980 },
+ { 0x33D0, 35986 },
+ { 0x33D1, 35988 },
+ { 0x33D2, 36128 },
+ { 0x33D3, 35990 },
+ { 0x33D4, 35996 },
+ { 0x33D5, 36132 },
+ { 0x33D6, 36134 },
+ { 0x33D7, 36070 },
+ { 0x33D8, 36072 },
+ { 0x33D9, 36138 },
+ { 0x33DA, 36074 },
+ { 0x33DB, 36082 },
+ { 0x33DC, 36084 },
+ { 0x33DD, 36086 },
+ { 0x33DE, 35901 },
+ { 0x33DF, 35872 },
+ { 0x33E0, 68707 },
+ { 0x33E1, 68725 },
+ { 0x33E2, 68761 },
+ { 0x33E3, 68737 },
+ { 0x33E4, 68731 },
+ { 0x33E5, 68713 },
+ { 0x33E6, 68755 },
+ { 0x33E7, 68749 },
+ { 0x33E8, 68743 },
+ { 0x33E9, 68719 },
+ { 0x33EA, 68767 },
+ { 0x33EB, 68779 },
+ { 0x33EC, 68821 },
+ { 0x33ED, 68809 },
+ { 0x33EE, 68791 },
+ { 0x33EF, 68797 },
+ { 0x33F0, 68827 },
+ { 0x33F1, 68803 },
+ { 0x33F2, 68815 },
+ { 0x33F3, 68785 },
+ { 0x33F4, 68839 },
+ { 0x33F5, 68851 },
+ { 0x33F6, 68887 },
+ { 0x33F7, 68863 },
+ { 0x33F8, 68857 },
+ { 0x33F9, 68845 },
+ { 0x33FA, 68881 },
+ { 0x33FB, 68875 },
+ { 0x33FC, 68869 },
+ { 0x33FD, 68773 },
+ { 0x33FE, 68833 },
+ { 0x33FF, 36114 },
+ { 0x4DC0, 52824 },
+ { 0x4DC1, 52838 },
+ { 0x4DC2, 52975 },
+ { 0x4DC3, 52945 },
+ { 0x4DC4, 52921 },
+ { 0x4DC5, 52927 },
+ { 0x4DC6, 52777 },
+ { 0x4DC7, 52907 },
+ { 0x4DC8, 52883 },
+ { 0x4DC9, 52942 },
+ { 0x4DCA, 52880 },
+ { 0x4DCB, 53002 },
+ { 0x4DCC, 52987 },
+ { 0x4DCD, 52864 },
+ { 0x4DCE, 52911 },
+ { 0x4DCF, 52984 },
+ { 0x4DD0, 52958 },
+ { 0x4DD1, 52843 },
+ { 0x4DD2, 52924 },
+ { 0x4DD3, 53017 },
+ { 0x4DD4, 52895 },
+ { 0x4DD5, 52853 },
+ { 0x4DD6, 52971 },
+ { 0x4DD7, 52904 },
+ { 0x4DD8, 52968 },
+ { 0x4DD9, 52860 },
+ { 0x4DDA, 52876 },
+ { 0x4DDB, 52868 },
+ { 0x4DDC, 52799 },
+ { 0x4DDD, 52819 },
+ { 0x4DDE, 52965 },
+ { 0x4DDF, 52933 },
+ { 0x4DE0, 52918 },
+ { 0x4DE1, 52856 },
+ { 0x4DE2, 52939 },
+ { 0x4DE3, 52952 },
+ { 0x4DE4, 52785 },
+ { 0x4DE5, 52993 },
+ { 0x4DE6, 53011 },
+ { 0x4DE7, 53005 },
+ { 0x4DE8, 52930 },
+ { 0x4DE9, 52936 },
+ { 0x4DEA, 53014 },
+ { 0x4DEB, 52899 },
+ { 0x4DEC, 52961 },
+ { 0x4DED, 52914 },
+ { 0x4DEE, 52996 },
+ { 0x4DEF, 52781 },
+ { 0x4DF0, 52999 },
+ { 0x4DF1, 52815 },
+ { 0x4DF2, 52810 },
+ { 0x4DF3, 52804 },
+ { 0x4DF4, 53008 },
+ { 0x4DF5, 52829 },
+ { 0x4DF6, 52949 },
+ { 0x4DF7, 52834 },
+ { 0x4DF8, 52789 },
+ { 0x4DF9, 52794 },
+ { 0x4DFA, 52981 },
+ { 0x4DFB, 52990 },
+ { 0x4DFC, 52872 },
+ { 0x4DFD, 52887 },
+ { 0x4DFE, 52849 },
+ { 0x4DFF, 52891 },
+ { 0x5000, 634 },
+ { 0x5001, 637 },
+ { 0x5002, 520 },
+ { 0x5003, 631 },
+ { 0x5004, 1300 },
+ { 0x5005, 1303 },
+ { 0x5006, 628 },
+ { 0x5007, 1297 },
+ { 0x5008, 529 },
+ { 0x5009, 532 },
+ { 0x500A, 514 },
+ { 0x500B, 526 },
+ { 0x500C, 2011 },
+ { 0x500D, 802 },
+ { 0x500E, 2008 },
+ { 0x500F, 721 },
+ { 0x5010, 724 },
+ { 0x5011, 523 },
+ { 0x5012, 718 },
+ { 0x5013, 586 },
+ { 0x5014, 517 },
+ { 0x5015, 829 },
+ { 0x5016, 910 },
+ { 0x5017, 913 },
+ { 0x5018, 541 },
+ { 0x5019, 907 },
+ { 0x501A, 2341 },
+ { 0x501B, 2344 },
+ { 0x501C, 904 },
+ { 0x501D, 2338 },
+ { 0x501E, 874 },
+ { 0x501F, 877 },
+ { 0x5020, 535 },
+ { 0x5021, 871 },
+ { 0x5022, 2350 },
+ { 0x5023, 925 },
+ { 0x5024, 2347 },
+ { 0x5025, 919 },
+ { 0x5026, 922 },
+ { 0x5027, 544 },
+ { 0x5028, 916 },
+ { 0x5029, 901 },
+ { 0x502A, 538 },
+ { 0x502B, 898 },
+ { 0x502C, 934 },
+ { 0x502D, 937 },
+ { 0x502E, 547 },
+ { 0x502F, 928 },
+ { 0x5030, 2353 },
+ { 0x5031, 931 },
+ { 0x5032, 946 },
+ { 0x5033, 949 },
+ { 0x5034, 550 },
+ { 0x5035, 940 },
+ { 0x5036, 2356 },
+ { 0x5037, 943 },
+ { 0x5038, 1705 },
+ { 0x5039, 1708 },
+ { 0x503A, 730 },
+ { 0x503B, 1702 },
+ { 0x503C, 3274 },
+ { 0x503D, 1699 },
+ { 0x503E, 3271 },
+ { 0x503F, 1693 },
+ { 0x5040, 1696 },
+ { 0x5041, 727 },
+ { 0x5042, 1690 },
+ { 0x5043, 3280 },
+ { 0x5044, 1720 },
+ { 0x5045, 3277 },
+ { 0x5046, 1714 },
+ { 0x5047, 1717 },
+ { 0x5048, 733 },
+ { 0x5049, 1711 },
+ { 0x504A, 1729 },
+ { 0x504B, 1732 },
+ { 0x504C, 736 },
+ { 0x504D, 1723 },
+ { 0x504E, 3283 },
+ { 0x504F, 1726 },
+ { 0x5050, 1741 },
+ { 0x5051, 1744 },
+ { 0x5052, 739 },
+ { 0x5053, 1735 },
+ { 0x5054, 3286 },
+ { 0x5055, 1738 },
+ { 0x5056, 2299 },
+ { 0x5057, 2302 },
+ { 0x5058, 886 },
+ { 0x5059, 2296 },
+ { 0x505A, 3709 },
+ { 0x505B, 3712 },
+ { 0x505C, 2293 },
+ { 0x505D, 3706 },
+ { 0x505E, 2281 },
+ { 0x505F, 2284 },
+ { 0x5060, 880 },
+ { 0x5061, 2278 },
+ { 0x5062, 3718 },
+ { 0x5063, 2314 },
+ { 0x5064, 3715 },
+ { 0x5065, 2308 },
+ { 0x5066, 2311 },
+ { 0x5067, 889 },
+ { 0x5068, 2305 },
+ { 0x5069, 2290 },
+ { 0x506A, 883 },
+ { 0x506B, 2287 },
+ { 0x506C, 2323 },
+ { 0x506D, 2326 },
+ { 0x506E, 892 },
+ { 0x506F, 2317 },
+ { 0x5070, 3721 },
+ { 0x5071, 2320 },
+ { 0x5072, 2332 },
+ { 0x5073, 2335 },
+ { 0x5074, 895 },
+ { 0x5075, 2329 },
+ { 0x5076, 2959 },
+ { 0x5077, 2962 },
+ { 0x5078, 1561 },
+ { 0x5079, 2956 },
+ { 0x507A, 3871 },
+ { 0x507B, 2953 },
+ { 0x507C, 3868 },
+ { 0x507D, 2947 },
+ { 0x507E, 2950 },
+ { 0x507F, 1558 },
+ { 0x5080, 2944 },
+ { 0x5081, 2968 },
+ { 0x5082, 2971 },
+ { 0x5083, 1564 },
+ { 0x5084, 2965 },
+ { 0x5085, 2980 },
+ { 0x5086, 2983 },
+ { 0x5087, 1567 },
+ { 0x5088, 2974 },
+ { 0x5089, 3874 },
+ { 0x508A, 2977 },
+ { 0x508B, 2992 },
+ { 0x508C, 2995 },
+ { 0x508D, 1570 },
+ { 0x508E, 2986 },
+ { 0x508F, 3877 },
+ { 0x5090, 2989 },
+ { 0x5091, 2647 },
+ { 0x5092, 2650 },
+ { 0x5093, 1252 },
+ { 0x5094, 2644 },
+ { 0x5095, 3793 },
+ { 0x5096, 2641 },
+ { 0x5097, 3790 },
+ { 0x5098, 2635 },
+ { 0x5099, 2638 },
+ { 0x509A, 1249 },
+ { 0x509B, 2632 },
+ { 0x509C, 3799 },
+ { 0x509D, 2662 },
+ { 0x509E, 3796 },
+ { 0x509F, 2656 },
+ { 0x50A0, 2659 },
+ { 0x50A1, 1255 },
+ { 0x50A2, 2653 },
+ { 0x50A3, 2671 },
+ { 0x50A4, 2674 },
+ { 0x50A5, 1258 },
+ { 0x50A6, 2665 },
+ { 0x50A7, 3802 },
+ { 0x50A8, 2668 },
+ { 0x50A9, 2683 },
+ { 0x50AA, 1261 },
+ { 0x50AB, 2677 },
+ { 0x50AC, 3805 },
+ { 0x50AD, 2680 },
+ { 0x50AE, 1513 },
+ { 0x50AF, 1516 },
+ { 0x50B0, 691 },
+ { 0x50B1, 1510 },
+ { 0x50B2, 2929 },
+ { 0x50B3, 1507 },
+ { 0x50B4, 2926 },
+ { 0x50B5, 1486 },
+ { 0x50B6, 1489 },
+ { 0x50B7, 685 },
+ { 0x50B8, 1483 },
+ { 0x50B9, 2935 },
+ { 0x50BA, 2938 },
+ { 0x50BB, 1528 },
+ { 0x50BC, 2932 },
+ { 0x50BD, 1522 },
+ { 0x50BE, 1525 },
+ { 0x50BF, 694 },
+ { 0x50C0, 1519 },
+ { 0x50C1, 1492 },
+ { 0x50C2, 688 },
+ { 0x50C3, 1537 },
+ { 0x50C4, 1540 },
+ { 0x50C5, 697 },
+ { 0x50C6, 1531 },
+ { 0x50C7, 2941 },
+ { 0x50C8, 1534 },
+ { 0x50C9, 1546 },
+ { 0x50CA, 1549 },
+ { 0x50CB, 700 },
+ { 0x50CC, 1543 },
+ { 0x50CD, 1108 },
+ { 0x50CE, 1111 },
+ { 0x50CF, 592 },
+ { 0x50D0, 1105 },
+ { 0x50D1, 1099 },
+ { 0x50D2, 1102 },
+ { 0x50D3, 589 },
+ { 0x50D4, 1096 },
+ { 0x50D5, 1117 },
+ { 0x50D6, 595 },
+ { 0x50D7, 1114 },
+ { 0x50D8, 1126 },
+ { 0x50D9, 1129 },
+ { 0x50DA, 598 },
+ { 0x50DB, 1120 },
+ { 0x50DC, 2494 },
+ { 0x50DD, 1123 },
+ { 0x50DE, 1135 },
+ { 0x50DF, 1138 },
+ { 0x50E0, 601 },
+ { 0x50E1, 1132 },
+ { 0x50E2, 2035 },
+ { 0x50E3, 2038 },
+ { 0x50E4, 808 },
+ { 0x50E5, 2032 },
+ { 0x50E6, 3523 },
+ { 0x50E7, 3526 },
+ { 0x50E8, 2029 },
+ { 0x50E9, 3520 },
+ { 0x50EA, 2017 },
+ { 0x50EB, 2020 },
+ { 0x50EC, 805 },
+ { 0x50ED, 2014 },
+ { 0x50EE, 2044 },
+ { 0x50EF, 2047 },
+ { 0x50F0, 811 },
+ { 0x50F1, 2041 },
+ { 0x50F2, 2026 },
+ { 0x50F3, 2023 },
+ { 0x50F4, 2056 },
+ { 0x50F5, 2059 },
+ { 0x50F6, 814 },
+ { 0x50F7, 2050 },
+ { 0x50F8, 3529 },
+ { 0x50F9, 2053 },
+ { 0x50FA, 2068 },
+ { 0x50FB, 2071 },
+ { 0x50FC, 817 },
+ { 0x50FD, 2062 },
+ { 0x50FE, 3532 },
+ { 0x50FF, 2065 },
+ { 0x5100, 1066 },
+ { 0x5101, 1069 },
+ { 0x5102, 577 },
+ { 0x5103, 1063 },
+ { 0x5104, 2485 },
+ { 0x5105, 1060 },
+ { 0x5106, 2482 },
+ { 0x5107, 1033 },
+ { 0x5108, 1036 },
+ { 0x5109, 571 },
+ { 0x510A, 1030 },
+ { 0x510B, 2488 },
+ { 0x510C, 1081 },
+ { 0x510D, 1075 },
+ { 0x510E, 1078 },
+ { 0x510F, 580 },
+ { 0x5110, 1072 },
+ { 0x5111, 1057 },
+ { 0x5112, 574 },
+ { 0x5113, 1054 },
+ { 0x5114, 1090 },
+ { 0x5115, 1093 },
+ { 0x5116, 583 },
+ { 0x5117, 1084 },
+ { 0x5118, 2491 },
+ { 0x5119, 1087 },
+ { 0x511A, 1978 },
+ { 0x511B, 1981 },
+ { 0x511C, 793 },
+ { 0x511D, 1975 },
+ { 0x511E, 3505 },
+ { 0x511F, 1972 },
+ { 0x5120, 3502 },
+ { 0x5121, 1960 },
+ { 0x5122, 1963 },
+ { 0x5123, 787 },
+ { 0x5124, 1957 },
+ { 0x5125, 3511 },
+ { 0x5126, 3514 },
+ { 0x5127, 1993 },
+ { 0x5128, 3508 },
+ { 0x5129, 1987 },
+ { 0x512A, 1990 },
+ { 0x512B, 796 },
+ { 0x512C, 1984 },
+ { 0x512D, 1969 },
+ { 0x512E, 790 },
+ { 0x512F, 1966 },
+ { 0x5130, 2002 },
+ { 0x5131, 2005 },
+ { 0x5132, 799 },
+ { 0x5133, 1996 },
+ { 0x5134, 3517 },
+ { 0x5135, 1999 },
+ { 0x5136, 2452 },
+ { 0x5137, 2455 },
+ { 0x5138, 1045 },
+ { 0x5139, 2449 },
+ { 0x513A, 3742 },
+ { 0x513B, 2446 },
+ { 0x513C, 3739 },
+ { 0x513D, 2434 },
+ { 0x513E, 2437 },
+ { 0x513F, 1039 },
+ { 0x5140, 2431 },
+ { 0x5141, 3748 },
+ { 0x5142, 2467 },
+ { 0x5143, 3745 },
+ { 0x5144, 2461 },
+ { 0x5145, 2464 },
+ { 0x5146, 1048 },
+ { 0x5147, 2458 },
+ { 0x5148, 2443 },
+ { 0x5149, 1042 },
+ { 0x514A, 2440 },
+ { 0x514B, 2476 },
+ { 0x514C, 2479 },
+ { 0x514D, 1051 },
+ { 0x514E, 2470 },
+ { 0x514F, 3751 },
+ { 0x5150, 2473 },
+ { 0x5151, 3019 },
+ { 0x5152, 3022 },
+ { 0x5153, 1579 },
+ { 0x5154, 3016 },
+ { 0x5155, 3880 },
+ { 0x5156, 3013 },
+ { 0x5157, 3001 },
+ { 0x5158, 3004 },
+ { 0x5159, 1573 },
+ { 0x515A, 2998 },
+ { 0x515B, 3028 },
+ { 0x515C, 3031 },
+ { 0x515D, 1582 },
+ { 0x515E, 3025 },
+ { 0x515F, 3010 },
+ { 0x5160, 1576 },
+ { 0x5161, 3007 },
+ { 0x5162, 3040 },
+ { 0x5163, 3043 },
+ { 0x5164, 1585 },
+ { 0x5165, 3034 },
+ { 0x5166, 3883 },
+ { 0x5167, 3037 },
+ { 0x5168, 2707 },
+ { 0x5169, 2710 },
+ { 0x516A, 1270 },
+ { 0x516B, 2704 },
+ { 0x516C, 3811 },
+ { 0x516D, 3814 },
+ { 0x516E, 2701 },
+ { 0x516F, 3808 },
+ { 0x5170, 2689 },
+ { 0x5171, 2692 },
+ { 0x5172, 1264 },
+ { 0x5173, 2686 },
+ { 0x5174, 3817 },
+ { 0x5175, 2722 },
+ { 0x5176, 2716 },
+ { 0x5177, 2719 },
+ { 0x5178, 2713 },
+ { 0x5179, 2698 },
+ { 0x517A, 1267 },
+ { 0x517B, 2695 },
+ { 0x517C, 2725 },
+ { 0x517D, 1609 },
+ { 0x517E, 1612 },
+ { 0x517F, 709 },
+ { 0x5180, 1606 },
+ { 0x5181, 3079 },
+ { 0x5182, 1603 },
+ { 0x5183, 3076 },
+ { 0x5184, 1555 },
+ { 0x5185, 703 },
+ { 0x5186, 1552 },
+ { 0x5187, 3178 },
+ { 0x5188, 1651 },
+ { 0x5189, 3175 },
+ { 0x518A, 1630 },
+ { 0x518B, 1633 },
+ { 0x518C, 712 },
+ { 0x518D, 1627 },
+ { 0x518E, 1591 },
+ { 0x518F, 706 },
+ { 0x5190, 1588 },
+ { 0x5191, 1660 },
+ { 0x5192, 1663 },
+ { 0x5193, 715 },
+ { 0x5194, 1654 },
+ { 0x5195, 3181 },
+ { 0x5196, 1657 },
+ { 0x5197, 2593 },
+ { 0x5198, 2596 },
+ { 0x5199, 1237 },
+ { 0x519A, 2590 },
+ { 0x519B, 3775 },
+ { 0x519C, 2587 },
+ { 0x519D, 3772 },
+ { 0x519E, 2575 },
+ { 0x519F, 2578 },
+ { 0x51A0, 1231 },
+ { 0x51A1, 2572 },
+ { 0x51A2, 3781 },
+ { 0x51A3, 2605 },
+ { 0x51A4, 3778 },
+ { 0x51A5, 2602 },
+ { 0x51A6, 1240 },
+ { 0x51A7, 2599 },
+ { 0x51A8, 2584 },
+ { 0x51A9, 1234 },
+ { 0x51AA, 2581 },
+ { 0x51AB, 2614 },
+ { 0x51AC, 2617 },
+ { 0x51AD, 1243 },
+ { 0x51AE, 2608 },
+ { 0x51AF, 3784 },
+ { 0x51B0, 2611 },
+ { 0x51B1, 2626 },
+ { 0x51B2, 2629 },
+ { 0x51B3, 1246 },
+ { 0x51B4, 2620 },
+ { 0x51B5, 3787 },
+ { 0x51B6, 2623 },
+ { 0x51B7, 1441 },
+ { 0x51B8, 1444 },
+ { 0x51B9, 673 },
+ { 0x51BA, 1438 },
+ { 0x51BB, 2863 },
+ { 0x51BC, 2866 },
+ { 0x51BD, 1435 },
+ { 0x51BE, 2860 },
+ { 0x51BF, 1423 },
+ { 0x51C0, 1426 },
+ { 0x51C1, 667 },
+ { 0x51C2, 1420 },
+ { 0x51C3, 2872 },
+ { 0x51C4, 2875 },
+ { 0x51C5, 1456 },
+ { 0x51C6, 2869 },
+ { 0x51C7, 1450 },
+ { 0x51C8, 1453 },
+ { 0x51C9, 676 },
+ { 0x51CA, 1447 },
+ { 0x51CB, 1432 },
+ { 0x51CC, 670 },
+ { 0x51CD, 1429 },
+ { 0x51CE, 1465 },
+ { 0x51CF, 1468 },
+ { 0x51D0, 679 },
+ { 0x51D1, 1459 },
+ { 0x51D2, 2878 },
+ { 0x51D3, 1462 },
+ { 0x51D4, 1477 },
+ { 0x51D5, 1480 },
+ { 0x51D6, 682 },
+ { 0x51D7, 1471 },
+ { 0x51D8, 2881 },
+ { 0x51D9, 1474 },
+ { 0x51DA, 1180 },
+ { 0x51DB, 1183 },
+ { 0x51DC, 610 },
+ { 0x51DD, 1177 },
+ { 0x51DE, 2551 },
+ { 0x51DF, 2554 },
+ { 0x51E0, 1174 },
+ { 0x51E1, 2548 },
+ { 0x51E2, 1144 },
+ { 0x51E3, 1147 },
+ { 0x51E4, 604 },
+ { 0x51E5, 1141 },
+ { 0x51E6, 2560 },
+ { 0x51E7, 2563 },
+ { 0x51E8, 1195 },
+ { 0x51E9, 2557 },
+ { 0x51EA, 1189 },
+ { 0x51EB, 1192 },
+ { 0x51EC, 613 },
+ { 0x51ED, 1186 },
+ { 0x51EE, 1153 },
+ { 0x51EF, 1156 },
+ { 0x51F0, 607 },
+ { 0x51F1, 1150 },
+ { 0x51F2, 1204 },
+ { 0x51F3, 1207 },
+ { 0x51F4, 616 },
+ { 0x51F5, 1198 },
+ { 0x51F6, 2566 },
+ { 0x51F7, 1201 },
+ { 0x51F8, 1390 },
+ { 0x51F9, 1393 },
+ { 0x51FA, 658 },
+ { 0x51FB, 1387 },
+ { 0x51FC, 2848 },
+ { 0x51FD, 1384 },
+ { 0x51FE, 2845 },
+ { 0x51FF, 1369 },
+ { 0x5200, 1372 },
+ { 0x5201, 652 },
+ { 0x5202, 1366 },
+ { 0x5203, 2854 },
+ { 0x5204, 1405 },
+ { 0x5205, 2851 },
+ { 0x5206, 1399 },
+ { 0x5207, 1402 },
+ { 0x5208, 661 },
+ { 0x5209, 1396 },
+ { 0x520A, 1378 },
+ { 0x520B, 1381 },
+ { 0x520C, 655 },
+ { 0x520D, 1375 },
+ { 0x520E, 1414 },
+ { 0x520F, 1417 },
+ { 0x5210, 664 },
+ { 0x5211, 1408 },
+ { 0x5212, 2857 },
+ { 0x5213, 1411 },
+ { 0x5214, 2518 },
+ { 0x5215, 2521 },
+ { 0x5216, 1165 },
+ { 0x5217, 3757 },
+ { 0x5218, 2515 },
+ { 0x5219, 3754 },
+ { 0x521A, 2500 },
+ { 0x521B, 2503 },
+ { 0x521C, 1159 },
+ { 0x521D, 2497 },
+ { 0x521E, 3763 },
+ { 0x521F, 3766 },
+ { 0x5220, 2533 },
+ { 0x5221, 3760 },
+ { 0x5222, 2527 },
+ { 0x5223, 2530 },
+ { 0x5224, 1168 },
+ { 0x5225, 2524 },
+ { 0x5226, 2509 },
+ { 0x5227, 2512 },
+ { 0x5228, 1162 },
+ { 0x5229, 2506 },
+ { 0x522A, 2542 },
+ { 0x522B, 2545 },
+ { 0x522C, 1171 },
+ { 0x522D, 2536 },
+ { 0x522E, 3769 },
+ { 0x522F, 2539 },
+ { 0x5230, 3856 },
+ { 0x5231, 2899 },
+ { 0x5232, 2887 },
+ { 0x5233, 2890 },
+ { 0x5234, 1495 },
+ { 0x5235, 2884 },
+ { 0x5236, 3862 },
+ { 0x5237, 2911 },
+ { 0x5238, 3859 },
+ { 0x5239, 2905 },
+ { 0x523A, 2908 },
+ { 0x523B, 1501 },
+ { 0x523C, 2902 },
+ { 0x523D, 2896 },
+ { 0x523E, 1498 },
+ { 0x523F, 2893 },
+ { 0x5240, 2920 },
+ { 0x5241, 2923 },
+ { 0x5242, 1504 },
+ { 0x5243, 2914 },
+ { 0x5244, 3865 },
+ { 0x5245, 2917 },
+ { 0x5246, 2758 },
+ { 0x5247, 2761 },
+ { 0x5248, 1291 },
+ { 0x5249, 2755 },
+ { 0x524A, 3823 },
+ { 0x524B, 3826 },
+ { 0x524C, 2752 },
+ { 0x524D, 3820 },
+ { 0x524E, 2740 },
+ { 0x524F, 2743 },
+ { 0x5250, 1285 },
+ { 0x5251, 2737 },
+ { 0x5252, 3832 },
+ { 0x5253, 3835 },
+ { 0x5254, 2773 },
+ { 0x5255, 3829 },
+ { 0x5256, 2767 },
+ { 0x5257, 2770 },
+ { 0x5258, 1294 },
+ { 0x5259, 2764 },
+ { 0x525A, 2749 },
+ { 0x525B, 1288 },
+ { 0x525C, 2746 },
+ { 0x525D, 3889 },
+ { 0x525E, 3061 },
+ { 0x525F, 3886 },
+ { 0x5260, 3049 },
+ { 0x5261, 3052 },
+ { 0x5262, 1594 },
+ { 0x5263, 3046 },
+ { 0x5264, 3892 },
+ { 0x5265, 3895 },
+ { 0x5266, 3073 },
+ { 0x5267, 3067 },
+ { 0x5268, 3070 },
+ { 0x5269, 1600 },
+ { 0x526A, 3064 },
+ { 0x526B, 3058 },
+ { 0x526C, 1597 },
+ { 0x526D, 3055 },
+ { 0x526E, 1228 },
+ { 0x526F, 2569 },
+ { 0x5270, 1225 },
+ { 0x5271, 1213 },
+ { 0x5272, 1216 },
+ { 0x5273, 619 },
+ { 0x5274, 1210 },
+ { 0x5275, 2731 },
+ { 0x5276, 2734 },
+ { 0x5277, 1282 },
+ { 0x5278, 2728 },
+ { 0x5279, 1276 },
+ { 0x527A, 1279 },
+ { 0x527B, 625 },
+ { 0x527C, 1273 },
+ { 0x527D, 1222 },
+ { 0x527E, 622 },
+ { 0x527F, 1219 },
+ { 0x5280, 2077 },
+ { 0x5281, 2080 },
+ { 0x5282, 820 },
+ { 0x5283, 2074 },
+ { 0x5284, 3538 },
+ { 0x5285, 2095 },
+ { 0x5286, 3535 },
+ { 0x5287, 2092 },
+ { 0x5288, 826 },
+ { 0x5289, 2089 },
+ { 0x528A, 2086 },
+ { 0x528B, 823 },
+ { 0x528C, 2083 },
+ { 0x528D, 2218 },
+ { 0x528E, 2221 },
+ { 0x528F, 859 },
+ { 0x5290, 2215 },
+ { 0x5291, 3637 },
+ { 0x5292, 2212 },
+ { 0x5293, 3634 },
+ { 0x5294, 2185 },
+ { 0x5295, 2188 },
+ { 0x5296, 853 },
+ { 0x5297, 2182 },
+ { 0x5298, 3643 },
+ { 0x5299, 2233 },
+ { 0x529A, 3640 },
+ { 0x529B, 2227 },
+ { 0x529C, 2230 },
+ { 0x529D, 862 },
+ { 0x529E, 2224 },
+ { 0x529F, 2194 },
+ { 0x52A0, 856 },
+ { 0x52A1, 2191 },
+ { 0x52A2, 2242 },
+ { 0x52A3, 2245 },
+ { 0x52A4, 865 },
+ { 0x52A5, 2236 },
+ { 0x52A6, 3646 },
+ { 0x52A7, 2239 },
+ { 0x52A8, 2254 },
+ { 0x52A9, 2257 },
+ { 0x52AA, 868 },
+ { 0x52AB, 2248 },
+ { 0x52AC, 3649 },
+ { 0x52AD, 2251 },
+ { 0x52AE, 988 },
+ { 0x52AF, 991 },
+ { 0x52B0, 559 },
+ { 0x52B1, 985 },
+ { 0x52B2, 2413 },
+ { 0x52B3, 2416 },
+ { 0x52B4, 982 },
+ { 0x52B5, 2410 },
+ { 0x52B6, 955 },
+ { 0x52B7, 958 },
+ { 0x52B8, 553 },
+ { 0x52B9, 952 },
+ { 0x52BA, 2422 },
+ { 0x52BB, 1003 },
+ { 0x52BC, 2419 },
+ { 0x52BD, 997 },
+ { 0x52BE, 1000 },
+ { 0x52BF, 562 },
+ { 0x52C0, 994 },
+ { 0x52C1, 964 },
+ { 0x52C2, 556 },
+ { 0x52C3, 961 },
+ { 0x52C4, 1012 },
+ { 0x52C5, 1015 },
+ { 0x52C6, 565 },
+ { 0x52C7, 1006 },
+ { 0x52C8, 2425 },
+ { 0x52C9, 1009 },
+ { 0x52CA, 1024 },
+ { 0x52CB, 1027 },
+ { 0x52CC, 568 },
+ { 0x52CD, 1018 },
+ { 0x52CE, 2428 },
+ { 0x52CF, 1021 },
+ { 0x52D0, 3673 },
+ { 0x52D1, 3676 },
+ { 0x52D2, 2266 },
+ { 0x52D3, 3670 },
+ { 0x52D4, 3997 },
+ { 0x52D5, 4000 },
+ { 0x52D6, 3667 },
+ { 0x52D7, 3994 },
+ { 0x52D8, 3655 },
+ { 0x52D9, 3658 },
+ { 0x52DA, 2260 },
+ { 0x52DB, 3652 },
+ { 0x52DC, 3682 },
+ { 0x52DD, 2269 },
+ { 0x52DE, 3679 },
+ { 0x52DF, 3664 },
+ { 0x52E0, 2263 },
+ { 0x52E1, 3661 },
+ { 0x52E2, 3691 },
+ { 0x52E3, 2272 },
+ { 0x52E4, 3685 },
+ { 0x52E5, 4003 },
+ { 0x52E6, 3688 },
+ { 0x52E7, 3700 },
+ { 0x52E8, 3703 },
+ { 0x52E9, 2275 },
+ { 0x52EA, 3694 },
+ { 0x52EB, 4006 },
+ { 0x52EC, 3697 },
+ { 0x52ED, 3235 },
+ { 0x52EE, 3238 },
+ { 0x52EF, 1681 },
+ { 0x52F0, 3232 },
+ { 0x52F1, 3940 },
+ { 0x52F2, 3229 },
+ { 0x52F3, 3937 },
+ { 0x52F4, 3220 },
+ { 0x52F5, 3223 },
+ { 0x52F6, 1675 },
+ { 0x52F7, 3217 },
+ { 0x52F8, 3943 },
+ { 0x52F9, 3247 },
+ { 0x52FA, 3244 },
+ { 0x52FB, 3241 },
+ { 0x52FC, 3226 },
+ { 0x52FD, 1678 },
+ { 0x52FE, 3256 },
+ { 0x52FF, 1684 },
+ { 0x5300, 3250 },
+ { 0x5301, 3946 },
+ { 0x5302, 3253 },
+ { 0x5303, 3265 },
+ { 0x5304, 3268 },
+ { 0x5305, 1687 },
+ { 0x5306, 3259 },
+ { 0x5307, 3949 },
+ { 0x5308, 3262 },
+ { 0x5309, 1897 },
+ { 0x530A, 1900 },
+ { 0x530B, 775 },
+ { 0x530C, 1894 },
+ { 0x530D, 3430 },
+ { 0x530E, 1891 },
+ { 0x530F, 3427 },
+ { 0x5310, 1864 },
+ { 0x5311, 1867 },
+ { 0x5312, 769 },
+ { 0x5313, 1861 },
+ { 0x5314, 3493 },
+ { 0x5315, 1930 },
+ { 0x5316, 3490 },
+ { 0x5317, 1906 },
+ { 0x5318, 1909 },
+ { 0x5319, 778 },
+ { 0x531A, 1903 },
+ { 0x531B, 1873 },
+ { 0x531C, 772 },
+ { 0x531D, 1870 },
+ { 0x531E, 1939 },
+ { 0x531F, 1942 },
+ { 0x5320, 781 },
+ { 0x5321, 1933 },
+ { 0x5322, 3496 },
+ { 0x5323, 1936 },
+ { 0x5324, 1951 },
+ { 0x5325, 1954 },
+ { 0x5326, 784 },
+ { 0x5327, 1945 },
+ { 0x5328, 3499 },
+ { 0x5329, 1948 },
+ { 0x532A, 3454 },
+ { 0x532B, 3457 },
+ { 0x532C, 1918 },
+ { 0x532D, 3451 },
+ { 0x532E, 3976 },
+ { 0x532F, 3448 },
+ { 0x5330, 3973 },
+ { 0x5331, 3436 },
+ { 0x5332, 3439 },
+ { 0x5333, 1912 },
+ { 0x5334, 3433 },
+ { 0x5335, 3463 },
+ { 0x5336, 3466 },
+ { 0x5337, 1921 },
+ { 0x5338, 3460 },
+ { 0x5339, 3445 },
+ { 0x533A, 1915 },
+ { 0x533B, 3442 },
+ { 0x533C, 3472 },
+ { 0x533D, 3475 },
+ { 0x533E, 1924 },
+ { 0x533F, 3469 },
+ { 0x5340, 3484 },
+ { 0x5341, 3487 },
+ { 0x5342, 1927 },
+ { 0x5343, 3478 },
+ { 0x5344, 3979 },
+ { 0x5345, 3481 },
+ { 0x5346, 3583 },
+ { 0x5347, 3586 },
+ { 0x5348, 2197 },
+ { 0x5349, 3580 },
+ { 0x534A, 3985 },
+ { 0x534B, 3607 },
+ { 0x534C, 3982 },
+ { 0x534D, 3601 },
+ { 0x534E, 3604 },
+ { 0x534F, 2203 },
+ { 0x5350, 3598 },
+ { 0x5351, 3592 },
+ { 0x5352, 3595 },
+ { 0x5353, 2200 },
+ { 0x5354, 3589 },
+ { 0x5355, 3616 },
+ { 0x5356, 3619 },
+ { 0x5357, 2206 },
+ { 0x5358, 3610 },
+ { 0x5359, 3988 },
+ { 0x535A, 3613 },
+ { 0x535B, 3628 },
+ { 0x535C, 3631 },
+ { 0x535D, 2209 },
+ { 0x535E, 3622 },
+ { 0x535F, 3991 },
+ { 0x5360, 3625 },
+ { 0x5361, 2362 },
+ { 0x5362, 2365 },
+ { 0x5363, 967 },
+ { 0x5364, 2359 },
+ { 0x5365, 3727 },
+ { 0x5366, 3730 },
+ { 0x5367, 2386 },
+ { 0x5368, 3724 },
+ { 0x5369, 2380 },
+ { 0x536A, 2383 },
+ { 0x536B, 973 },
+ { 0x536C, 2377 },
+ { 0x536D, 2371 },
+ { 0x536E, 2374 },
+ { 0x536F, 970 },
+ { 0x5370, 2368 },
+ { 0x5371, 2395 },
+ { 0x5372, 976 },
+ { 0x5373, 2389 },
+ { 0x5374, 3733 },
+ { 0x5375, 2392 },
+ { 0x5376, 2404 },
+ { 0x5377, 2407 },
+ { 0x5378, 979 },
+ { 0x5379, 2398 },
+ { 0x537A, 3736 },
+ { 0x537B, 2401 },
+ { 0x537C, 3313 },
+ { 0x537D, 1819 },
+ { 0x537E, 3952 },
+ { 0x537F, 3334 },
+ { 0x5380, 3328 },
+ { 0x5381, 3331 },
+ { 0x5382, 1825 },
+ { 0x5383, 3325 },
+ { 0x5384, 3319 },
+ { 0x5385, 3322 },
+ { 0x5386, 1822 },
+ { 0x5387, 3316 },
+ { 0x5388, 3343 },
+ { 0x5389, 3346 },
+ { 0x538A, 1828 },
+ { 0x538B, 3337 },
+ { 0x538C, 3955 },
+ { 0x538D, 3340 },
+ { 0x538E, 3355 },
+ { 0x538F, 3358 },
+ { 0x5390, 1831 },
+ { 0x5391, 3349 },
+ { 0x5392, 3958 },
+ { 0x5393, 3352 },
+ { 0x5394, 3130 },
+ { 0x5395, 3133 },
+ { 0x5396, 1636 },
+ { 0x5397, 3127 },
+ { 0x5398, 3148 },
+ { 0x5399, 1642 },
+ { 0x539A, 3145 },
+ { 0x539B, 3139 },
+ { 0x539C, 3142 },
+ { 0x539D, 1639 },
+ { 0x539E, 3136 },
+ { 0x539F, 3157 },
+ { 0x53A0, 3160 },
+ { 0x53A1, 1645 },
+ { 0x53A2, 3151 },
+ { 0x53A3, 3916 },
+ { 0x53A4, 3154 },
+ { 0x53A5, 3169 },
+ { 0x53A6, 3172 },
+ { 0x53A7, 1648 },
+ { 0x53A8, 3163 },
+ { 0x53A9, 3919 },
+ { 0x53AA, 3166 },
+ { 0x53AB, 3376 },
+ { 0x53AC, 3379 },
+ { 0x53AD, 1876 },
+ { 0x53AE, 3373 },
+ { 0x53AF, 3964 },
+ { 0x53B0, 3400 },
+ { 0x53B1, 3961 },
+ { 0x53B2, 3394 },
+ { 0x53B3, 3397 },
+ { 0x53B4, 1882 },
+ { 0x53B5, 3391 },
+ { 0x53B6, 3385 },
+ { 0x53B7, 3388 },
+ { 0x53B8, 1879 },
+ { 0x53B9, 3382 },
+ { 0x53BA, 3409 },
+ { 0x53BB, 3412 },
+ { 0x53BC, 1885 },
+ { 0x53BD, 3403 },
+ { 0x53BE, 3967 },
+ { 0x53BF, 3406 },
+ { 0x53C0, 3421 },
+ { 0x53C1, 3424 },
+ { 0x53C2, 1888 },
+ { 0x53C3, 3415 },
+ { 0x53C4, 3970 },
+ { 0x53C5, 3418 },
+ { 0x53C6, 1798 },
+ { 0x53C7, 1801 },
+ { 0x53C8, 754 },
+ { 0x53C9, 1795 },
+ { 0x53CA, 3364 },
+ { 0x53CB, 1834 },
+ { 0x53CC, 3361 },
+ { 0x53CD, 1813 },
+ { 0x53CE, 1816 },
+ { 0x53CF, 760 },
+ { 0x53D0, 1810 },
+ { 0x53D1, 1807 },
+ { 0x53D2, 757 },
+ { 0x53D3, 1804 },
+ { 0x53D4, 1843 },
+ { 0x53D5, 1846 },
+ { 0x53D6, 763 },
+ { 0x53D7, 1837 },
+ { 0x53D8, 3367 },
+ { 0x53D9, 1840 },
+ { 0x53DA, 1855 },
+ { 0x53DB, 1858 },
+ { 0x53DC, 766 },
+ { 0x53DD, 1849 },
+ { 0x53DE, 3370 },
+ { 0x53DF, 1852 },
+ { 0x53E0, 1312 },
+ { 0x53E1, 1315 },
+ { 0x53E2, 640 },
+ { 0x53E3, 1309 },
+ { 0x53E4, 2779 },
+ { 0x53E5, 2782 },
+ { 0x53E6, 1306 },
+ { 0x53E7, 2776 },
+ { 0x53E8, 2833 },
+ { 0x53E9, 2836 },
+ { 0x53EA, 1339 },
+ { 0x53EB, 2830 },
+ { 0x53EC, 1333 },
+ { 0x53ED, 1336 },
+ { 0x53EE, 643 },
+ { 0x53EF, 1330 },
+ { 0x53F0, 1348 },
+ { 0x53F1, 1351 },
+ { 0x53F2, 646 },
+ { 0x53F3, 1342 },
+ { 0x53F4, 2839 },
+ { 0x53F5, 1345 },
+ { 0x53F6, 1360 },
+ { 0x53F7, 1363 },
+ { 0x53F8, 649 },
+ { 0x53F9, 1354 },
+ { 0x53FA, 2842 },
+ { 0x53FB, 1357 },
+ { 0x53FC, 1753 },
+ { 0x53FD, 1756 },
+ { 0x53FE, 742 },
+ { 0x53FF, 1750 },
+ { 0x5400, 3292 },
+ { 0x5401, 3295 },
+ { 0x5402, 1747 },
+ { 0x5403, 3289 },
+ { 0x5404, 3301 },
+ { 0x5405, 3304 },
+ { 0x5406, 1768 },
+ { 0x5407, 3298 },
+ { 0x5408, 1762 },
+ { 0x5409, 1765 },
+ { 0x540A, 745 },
+ { 0x540B, 1759 },
+ { 0x540C, 1777 },
+ { 0x540D, 1780 },
+ { 0x540E, 748 },
+ { 0x540F, 1771 },
+ { 0x5410, 3307 },
+ { 0x5411, 1774 },
+ { 0x5412, 1789 },
+ { 0x5413, 1792 },
+ { 0x5414, 751 },
+ { 0x5415, 1783 },
+ { 0x5416, 3310 },
+ { 0x5417, 1786 },
+ { 0x5418, 2791 },
+ { 0x5419, 2794 },
+ { 0x541A, 1318 },
+ { 0x541B, 2788 },
+ { 0x541C, 3841 },
+ { 0x541D, 3844 },
+ { 0x541E, 2785 },
+ { 0x541F, 3838 },
+ { 0x5420, 3850 },
+ { 0x5421, 2806 },
+ { 0x5422, 3847 },
+ { 0x5423, 2800 },
+ { 0x5424, 2803 },
+ { 0x5425, 1321 },
+ { 0x5426, 2797 },
+ { 0x5427, 2815 },
+ { 0x5428, 2818 },
+ { 0x5429, 1324 },
+ { 0x542A, 2809 },
+ { 0x542B, 3853 },
+ { 0x542C, 2812 },
+ { 0x542D, 2824 },
+ { 0x542E, 2827 },
+ { 0x542F, 1327 },
+ { 0x5430, 2821 },
+ { 0x5431, 3088 },
+ { 0x5432, 3091 },
+ { 0x5433, 1615 },
+ { 0x5434, 3085 },
+ { 0x5435, 3901 },
+ { 0x5436, 3904 },
+ { 0x5437, 3082 },
+ { 0x5438, 3898 },
+ { 0x5439, 3907 },
+ { 0x543A, 3103 },
+ { 0x543B, 3097 },
+ { 0x543C, 3100 },
+ { 0x543D, 1618 },
+ { 0x543E, 3094 },
+ { 0x543F, 3112 },
+ { 0x5440, 1621 },
+ { 0x5441, 3106 },
+ { 0x5442, 3910 },
+ { 0x5443, 3109 },
+ { 0x5444, 3121 },
+ { 0x5445, 3124 },
+ { 0x5446, 1624 },
+ { 0x5447, 3115 },
+ { 0x5448, 3913 },
+ { 0x5449, 3118 },
+ { 0x544A, 3190 },
+ { 0x544B, 3193 },
+ { 0x544C, 1666 },
+ { 0x544D, 3187 },
+ { 0x544E, 3925 },
+ { 0x544F, 3928 },
+ { 0x5450, 3184 },
+ { 0x5451, 3922 },
+ { 0x5452, 3934 },
+ { 0x5453, 3205 },
+ { 0x5454, 3931 },
+ { 0x5455, 3199 },
+ { 0x5456, 3202 },
+ { 0x5457, 1669 },
+ { 0x5458, 3196 },
+ { 0x5459, 3211 },
+ { 0x545A, 3214 },
+ { 0x545B, 1672 },
+ { 0x545C, 3208 },
+ { 0x545D, 2104 },
+ { 0x545E, 2107 },
+ { 0x545F, 832 },
+ { 0x5460, 2101 },
+ { 0x5461, 3544 },
+ { 0x5462, 3547 },
+ { 0x5463, 2098 },
+ { 0x5464, 3541 },
+ { 0x5465, 3550 },
+ { 0x5466, 2119 },
+ { 0x5467, 2113 },
+ { 0x5468, 2116 },
+ { 0x5469, 835 },
+ { 0x546A, 2110 },
+ { 0x546B, 2128 },
+ { 0x546C, 2131 },
+ { 0x546D, 838 },
+ { 0x546E, 2122 },
+ { 0x546F, 3553 },
+ { 0x5470, 2125 },
+ { 0x5471, 2140 },
+ { 0x5472, 2143 },
+ { 0x5473, 841 },
+ { 0x5474, 2137 },
+ { 0x5475, 3559 },
+ { 0x5476, 3562 },
+ { 0x5477, 2134 },
+ { 0x5478, 3556 },
+ { 0x5479, 3568 },
+ { 0x547A, 3571 },
+ { 0x547B, 2155 },
+ { 0x547C, 3565 },
+ { 0x547D, 2149 },
+ { 0x547E, 2152 },
+ { 0x547F, 844 },
+ { 0x5480, 2146 },
+ { 0x5481, 2164 },
+ { 0x5482, 2167 },
+ { 0x5483, 847 },
+ { 0x5484, 2158 },
+ { 0x5485, 3574 },
+ { 0x5486, 2161 },
+ { 0x5487, 2176 },
+ { 0x5488, 2179 },
+ { 0x5489, 850 },
+ { 0x548A, 2170 },
+ { 0x548B, 3577 },
+ { 0x548C, 2173 },
+ { 0x5490, 430 },
+ { 0x5491, 364 },
+ { 0x5492, 412 },
+ { 0x5493, 493 },
+ { 0x5494, 394 },
+ { 0x5495, 436 },
+ { 0x5496, 469 },
+ { 0x5497, 400 },
+ { 0x5498, 367 },
+ { 0x5499, 475 },
+ { 0x549A, 418 },
+ { 0x549B, 460 },
+ { 0x549C, 421 },
+ { 0x549D, 379 },
+ { 0x549E, 424 },
+ { 0x549F, 481 },
+ { 0x54A0, 439 },
+ { 0x54A1, 355 },
+ { 0x54A2, 454 },
+ { 0x54A3, 397 },
+ { 0x54A4, 466 },
+ { 0x54A5, 385 },
+ { 0x54A6, 472 },
+ { 0x54A7, 496 },
+ { 0x54A8, 373 },
+ { 0x54A9, 370 },
+ { 0x54AA, 487 },
+ { 0x54AB, 451 },
+ { 0x54AC, 427 },
+ { 0x54AD, 406 },
+ { 0x54AE, 448 },
+ { 0x54AF, 445 },
+ { 0x54B0, 433 },
+ { 0x54B1, 442 },
+ { 0x54B2, 382 },
+ { 0x54B3, 358 },
+ { 0x54B4, 499 },
+ { 0x54B5, 409 },
+ { 0x54B6, 403 },
+ { 0x54B7, 484 },
+ { 0x54B8, 376 },
+ { 0x54B9, 352 },
+ { 0x54BA, 508 },
+ { 0x54BB, 415 },
+ { 0x54BC, 349 },
+ { 0x54BD, 463 },
+ { 0x54BE, 391 },
+ { 0x54BF, 478 },
+ { 0x54C0, 502 },
+ { 0x54C1, 457 },
+ { 0x54C2, 505 },
+ { 0x54C3, 388 },
+ { 0x54C4, 511 },
+ { 0x54C5, 490 },
+ { 0x54C6, 361 },
+ { 0x5500, 7945 },
+ { 0x5501, 8254 },
+ { 0x5502, 8290 },
+ { 0x5503, 8482 },
+ { 0x5504, 8653 },
+ { 0x5505, 8419 },
+ { 0x5506, 8527 },
+ { 0x5507, 8206 },
+ { 0x5508, 8578 },
+ { 0x5509, 8569 },
+ { 0x550A, 8671 },
+ { 0x550B, 8554 },
+ { 0x550C, 8257 },
+ { 0x550D, 8473 },
+ { 0x550E, 8452 },
+ { 0x550F, 8647 },
+ { 0x5510, 8533 },
+ { 0x5511, 8665 },
+ { 0x5512, 8338 },
+ { 0x5513, 8425 },
+ { 0x5514, 8233 },
+ { 0x5515, 8599 },
+ { 0x5516, 8431 },
+ { 0x5517, 8641 },
+ { 0x5518, 8506 },
+ { 0x5519, 8659 },
+ { 0x551A, 8227 },
+ { 0x551B, 8308 },
+ { 0x551C, 8629 },
+ { 0x551D, 8500 },
+ { 0x551E, 8317 },
+ { 0x551F, 8697 },
+ { 0x5520, 8278 },
+ { 0x5521, 8359 },
+ { 0x5522, 8380 },
+ { 0x5523, 8635 },
+ { 0x5524, 7888 },
+ { 0x5525, 7996 },
+ { 0x5526, 7987 },
+ { 0x5527, 8296 },
+ { 0x5528, 8167 },
+ { 0x5529, 8488 },
+ { 0x552A, 8089 },
+ { 0x552B, 8215 },
+ { 0x552C, 7906 },
+ { 0x552D, 8350 },
+ { 0x552E, 8329 },
+ { 0x552F, 8590 },
+ { 0x5530, 8269 },
+ { 0x5531, 7957 },
+ { 0x5532, 8152 },
+ { 0x5533, 8134 },
+ { 0x5534, 8461 },
+ { 0x5535, 8242 },
+ { 0x5536, 8542 },
+ { 0x5537, 8035 },
+ { 0x5538, 8104 },
+ { 0x5539, 7936 },
+ { 0x553A, 8371 },
+ { 0x553B, 8119 },
+ { 0x553C, 8440 },
+ { 0x553D, 8197 },
+ { 0x553E, 8515 },
+ { 0x553F, 7921 },
+ { 0x5540, 8005 },
+ { 0x5541, 8389 },
+ { 0x5542, 8182 },
+ { 0x5543, 8020 },
+ { 0x5544, 8617 },
+ { 0x5545, 7972 },
+ { 0x5546, 8050 },
+ { 0x5547, 8068 },
+ { 0x5548, 8407 },
+ { 0x5549, 7882 },
+ { 0x554A, 7897 },
+ { 0x554B, 8605 },
+ { 0x554C, 7981 },
+ { 0x554D, 8287 },
+ { 0x554E, 8161 },
+ { 0x554F, 8479 },
+ { 0x5550, 8083 },
+ { 0x5551, 8209 },
+ { 0x5552, 7900 },
+ { 0x5553, 8344 },
+ { 0x5554, 8323 },
+ { 0x5555, 8566 },
+ { 0x5556, 8584 },
+ { 0x5557, 8263 },
+ { 0x5558, 7951 },
+ { 0x5559, 8146 },
+ { 0x555A, 8128 },
+ { 0x555B, 8455 },
+ { 0x555C, 8236 },
+ { 0x555D, 8536 },
+ { 0x555E, 8029 },
+ { 0x555F, 8098 },
+ { 0x5560, 7930 },
+ { 0x5561, 8365 },
+ { 0x5562, 8113 },
+ { 0x5563, 8434 },
+ { 0x5564, 8191 },
+ { 0x5565, 8509 },
+ { 0x5566, 7915 },
+ { 0x5567, 7999 },
+ { 0x5568, 8383 },
+ { 0x5569, 8176 },
+ { 0x556A, 8014 },
+ { 0x556B, 8314 },
+ { 0x556C, 8611 },
+ { 0x556D, 7966 },
+ { 0x556E, 8044 },
+ { 0x556F, 8059 },
+ { 0x5570, 8401 },
+ { 0x5571, 8080 },
+ { 0x5572, 8416 },
+ { 0x5573, 8302 },
+ { 0x5574, 8494 },
+ { 0x5575, 8656 },
+ { 0x5576, 8422 },
+ { 0x5577, 8530 },
+ { 0x5578, 8224 },
+ { 0x5579, 8581 },
+ { 0x557A, 8575 },
+ { 0x557B, 8674 },
+ { 0x557C, 8563 },
+ { 0x557D, 8260 },
+ { 0x557E, 8476 },
+ { 0x557F, 8470 },
+ { 0x5580, 8650 },
+ { 0x5581, 8551 },
+ { 0x5582, 8668 },
+ { 0x5583, 8341 },
+ { 0x5584, 8428 },
+ { 0x5585, 8251 },
+ { 0x5586, 8602 },
+ { 0x5587, 8449 },
+ { 0x5588, 8644 },
+ { 0x5589, 8524 },
+ { 0x558A, 8662 },
+ { 0x558B, 8230 },
+ { 0x558C, 8311 },
+ { 0x558D, 8632 },
+ { 0x558E, 8503 },
+ { 0x558F, 8320 },
+ { 0x5590, 8703 },
+ { 0x5591, 8284 },
+ { 0x5592, 8362 },
+ { 0x5593, 8398 },
+ { 0x5594, 8638 },
+ { 0x5595, 7894 },
+ { 0x5596, 8143 },
+ { 0x5597, 7993 },
+ { 0x5598, 8305 },
+ { 0x5599, 8173 },
+ { 0x559A, 8497 },
+ { 0x559B, 8095 },
+ { 0x559C, 8221 },
+ { 0x559D, 7912 },
+ { 0x559E, 8356 },
+ { 0x559F, 8335 },
+ { 0x55A0, 8596 },
+ { 0x55A1, 8275 },
+ { 0x55A2, 7963 },
+ { 0x55A3, 8158 },
+ { 0x55A4, 8140 },
+ { 0x55A5, 8467 },
+ { 0x55A6, 8248 },
+ { 0x55A7, 8548 },
+ { 0x55A8, 8041 },
+ { 0x55A9, 8110 },
+ { 0x55AA, 7942 },
+ { 0x55AB, 8377 },
+ { 0x55AC, 8125 },
+ { 0x55AD, 8446 },
+ { 0x55AE, 8203 },
+ { 0x55AF, 8521 },
+ { 0x55B0, 7927 },
+ { 0x55B1, 8011 },
+ { 0x55B2, 8395 },
+ { 0x55B3, 8188 },
+ { 0x55B4, 8026 },
+ { 0x55B5, 8623 },
+ { 0x55B6, 7978 },
+ { 0x55B7, 8056 },
+ { 0x55B8, 8074 },
+ { 0x55B9, 8413 },
+ { 0x55BA, 7891 },
+ { 0x55BB, 8077 },
+ { 0x55BC, 8626 },
+ { 0x55BD, 7990 },
+ { 0x55BE, 8299 },
+ { 0x55BF, 8170 },
+ { 0x55C0, 8491 },
+ { 0x55C1, 8092 },
+ { 0x55C2, 8218 },
+ { 0x55C3, 7909 },
+ { 0x55C4, 8353 },
+ { 0x55C5, 8332 },
+ { 0x55C6, 8593 },
+ { 0x55C7, 8272 },
+ { 0x55C8, 8560 },
+ { 0x55C9, 7960 },
+ { 0x55CA, 8155 },
+ { 0x55CB, 8137 },
+ { 0x55CC, 8464 },
+ { 0x55CD, 8245 },
+ { 0x55CE, 8545 },
+ { 0x55CF, 8038 },
+ { 0x55D0, 8107 },
+ { 0x55D1, 7939 },
+ { 0x55D2, 8374 },
+ { 0x55D3, 8122 },
+ { 0x55D4, 8443 },
+ { 0x55D5, 8200 },
+ { 0x55D6, 8518 },
+ { 0x55D7, 7924 },
+ { 0x55D8, 8008 },
+ { 0x55D9, 8392 },
+ { 0x55DA, 8185 },
+ { 0x55DB, 8023 },
+ { 0x55DC, 8620 },
+ { 0x55DD, 7975 },
+ { 0x55DE, 8053 },
+ { 0x55DF, 8071 },
+ { 0x55E0, 8410 },
+ { 0x55E1, 7885 },
+ { 0x55E2, 7948 },
+ { 0x55E3, 8608 },
+ { 0x55E4, 7984 },
+ { 0x55E5, 8293 },
+ { 0x55E6, 8164 },
+ { 0x55E7, 8485 },
+ { 0x55E8, 8086 },
+ { 0x55E9, 8212 },
+ { 0x55EA, 7903 },
+ { 0x55EB, 8347 },
+ { 0x55EC, 8326 },
+ { 0x55ED, 8572 },
+ { 0x55EE, 8587 },
+ { 0x55EF, 8266 },
+ { 0x55F0, 8557 },
+ { 0x55F1, 7954 },
+ { 0x55F2, 8149 },
+ { 0x55F3, 8131 },
+ { 0x55F4, 8458 },
+ { 0x55F5, 8239 },
+ { 0x55F6, 8539 },
+ { 0x55F7, 8032 },
+ { 0x55F8, 8101 },
+ { 0x55F9, 7933 },
+ { 0x55FA, 8368 },
+ { 0x55FB, 8116 },
+ { 0x55FC, 8437 },
+ { 0x55FD, 8194 },
+ { 0x55FE, 8512 },
+ { 0x55FF, 7918 },
+ { 0x5600, 8002 },
+ { 0x5601, 8386 },
+ { 0x5602, 8179 },
+ { 0x5603, 8017 },
+ { 0x5604, 8614 },
+ { 0x5605, 8700 },
+ { 0x5606, 7969 },
+ { 0x5607, 8281 },
+ { 0x5608, 8047 },
+ { 0x5609, 8062 },
+ { 0x560A, 8404 },
+ { 0x560B, 8065 },
+ { 0x560C, 8706 },
+ { 0x560D, 7808 },
+ { 0x560E, 7805 },
+ { 0x560F, 7879 },
+ { 0x5610, 8681 },
+ { 0x5611, 8685 },
+ { 0x5612, 8693 },
+ { 0x5613, 7873 },
+ { 0x5614, 7876 },
+ { 0x5615, 7864 },
+ { 0x5616, 7843 },
+ { 0x5617, 7849 },
+ { 0x5618, 7840 },
+ { 0x5619, 7846 },
+ { 0x561A, 7852 },
+ { 0x561B, 7870 },
+ { 0x561C, 7861 },
+ { 0x561D, 7867 },
+ { 0x561E, 7855 },
+ { 0x561F, 7858 },
+ { 0x5620, 7828 },
+ { 0x5621, 7810 },
+ { 0x5622, 7816 },
+ { 0x5623, 7837 },
+ { 0x5624, 7822 },
+ { 0x5625, 7819 },
+ { 0x5626, 7813 },
+ { 0x5627, 7834 },
+ { 0x5628, 7831 },
+ { 0x5629, 7825 },
+ { 0x562A, 8689 },
+ { 0x562B, 8677 },
+ { 0x5640, 50137 },
+ { 0x5641, 49239 },
+ { 0x5642, 50054 },
+ { 0x5643, 49156 },
+ { 0x5644, 50212 },
+ { 0x5645, 49318 },
+ { 0x5646, 49931 },
+ { 0x5647, 49033 },
+ { 0x5648, 50050 },
+ { 0x5649, 49152 },
+ { 0x564A, 50266 },
+ { 0x564B, 49372 },
+ { 0x564C, 50045 },
+ { 0x564D, 49147 },
+ { 0x564E, 50163 },
+ { 0x564F, 49265 },
+ { 0x5650, 50023 },
+ { 0x5651, 49125 },
+ { 0x5652, 50184 },
+ { 0x5653, 49286 },
+ { 0x5654, 50202 },
+ { 0x5655, 49308 },
+ { 0x5656, 50168 },
+ { 0x5657, 49270 },
+ { 0x5658, 50120 },
+ { 0x5659, 49222 },
+ { 0x565A, 50146 },
+ { 0x565B, 49248 },
+ { 0x565C, 50189 },
+ { 0x565D, 49291 },
+ { 0x565E, 49727 },
+ { 0x565F, 48829 },
+ { 0x5662, 49983 },
+ { 0x5663, 49085 },
+ { 0x5664, 49988 },
+ { 0x5665, 49090 },
+ { 0x5666, 49993 },
+ { 0x5667, 49095 },
+ { 0x5668, 50261 },
+ { 0x5669, 49367 },
+ { 0x566A, 50256 },
+ { 0x566B, 49362 },
+ { 0x566C, 50126 },
+ { 0x566D, 49228 },
+ { 0x566E, 49417 },
+ { 0x566F, 58020 },
+ { 0x5670, 58004 },
+ { 0x5671, 58160 },
+ { 0x5672, 58180 },
+ { 0x5673, 55523 },
+ { 0x567C, 58023 },
+ { 0x567D, 58170 },
+ { 0x567E, 49407 },
+ { 0x567F, 50301 },
+ { 0x5680, 49783 },
+ { 0x5681, 48885 },
+ { 0x5682, 49914 },
+ { 0x5683, 49016 },
+ { 0x5684, 50036 },
+ { 0x5685, 49138 },
+ { 0x5686, 49906 },
+ { 0x5687, 49008 },
+ { 0x5688, 49918 },
+ { 0x5689, 49020 },
+ { 0x568A, 49694 },
+ { 0x568B, 48796 },
+ { 0x568C, 49872 },
+ { 0x568D, 48974 },
+ { 0x568E, 50015 },
+ { 0x568F, 49117 },
+ { 0x5690, 50011 },
+ { 0x5691, 49113 },
+ { 0x5692, 50003 },
+ { 0x5693, 49105 },
+ { 0x5694, 49832 },
+ { 0x5695, 48934 },
+ { 0x5696, 49979 },
+ { 0x5697, 49081 },
+ { 0x5700, 54739 },
+ { 0x5701, 54763 },
+ { 0x5702, 54745 },
+ { 0x5703, 54769 },
+ { 0x5704, 54727 },
+ { 0x5705, 54751 },
+ { 0x5706, 54733 },
+ { 0x5707, 54757 },
+ { 0x5708, 54839 },
+ { 0x5709, 54039 },
+ { 0x570A, 53996 },
+ { 0x570B, 53952 },
+ { 0x570C, 54808 },
+ { 0x570D, 54845 },
+ { 0x570E, 54045 },
+ { 0x570F, 54002 },
+ { 0x5710, 53958 },
+ { 0x5711, 54814 },
+ { 0x5712, 54852 },
+ { 0x5713, 54052 },
+ { 0x5714, 54009 },
+ { 0x5715, 53980 },
+ { 0x5716, 54821 },
+ { 0x5717, 53884 },
+ { 0x5718, 53880 },
+ { 0x5719, 53889 },
+ { 0x571A, 54106 },
+ { 0x571B, 54571 },
+ { 0x571C, 54576 },
+ { 0x571D, 54591 },
+ { 0x571E, 54585 },
+ { 0x571F, 53969 },
+ { 0x5720, 54606 },
+ { 0x5721, 54600 },
+ { 0x5722, 20769 },
+ { 0x5723, 17878 },
+ { 0x5724, 20764 },
+ { 0x5725, 17873 },
+ { 0x5726, 20552 },
+ { 0x5727, 17317 },
+ { 0x5728, 20503 },
+ { 0x5729, 17173 },
+ { 0x572A, 20735 },
+ { 0x572B, 17844 },
+ { 0x572C, 20739 },
+ { 0x572D, 17848 },
+ { 0x572E, 20743 },
+ { 0x572F, 17852 },
+ { 0x5730, 17974 },
+ { 0x5731, 18048 },
+ { 0x5732, 20422 },
+ { 0x5733, 17038 },
+ { 0x5734, 20442 },
+ { 0x5735, 17058 },
+ { 0x5736, 20446 },
+ { 0x5737, 17062 },
+ { 0x5738, 20450 },
+ { 0x5739, 17066 },
+ { 0x573A, 20454 },
+ { 0x573B, 17070 },
+ { 0x573C, 20461 },
+ { 0x573D, 17077 },
+ { 0x573E, 20719 },
+ { 0x573F, 17758 },
+ { 0x5740, 19120 },
+ { 0x5741, 15472 },
+ { 0x5742, 19141 },
+ { 0x5743, 15500 },
+ { 0x5744, 19126 },
+ { 0x5745, 15478 },
+ { 0x5746, 20644 },
+ { 0x5747, 17505 },
+ { 0x5748, 19180 },
+ { 0x5749, 15551 },
+ { 0x574A, 19451 },
+ { 0x574B, 15876 },
+ { 0x574C, 19459 },
+ { 0x574D, 15884 },
+ { 0x574E, 20495 },
+ { 0x574F, 17142 },
+ { 0x5750, 19688 },
+ { 0x5751, 16113 },
+ { 0x5752, 19696 },
+ { 0x5753, 16128 },
+ { 0x5754, 19702 },
+ { 0x5755, 16134 },
+ { 0x5756, 19713 },
+ { 0x5757, 16158 },
+ { 0x5758, 19721 },
+ { 0x5759, 16166 },
+ { 0x575A, 19806 },
+ { 0x575B, 16287 },
+ { 0x575C, 20542 },
+ { 0x575D, 17287 },
+ { 0x575E, 20210 },
+ { 0x575F, 16771 },
+ { 0x5760, 20507 },
+ { 0x5761, 17185 },
+ { 0x5762, 20749 },
+ { 0x5763, 17858 },
+ { 0x5764, 20630 },
+ { 0x5765, 17480 },
+ { 0x5766, 20636 },
+ { 0x5767, 17486 },
+ { 0x5768, 20585 },
+ { 0x5769, 17421 },
+ { 0x576A, 20475 },
+ { 0x576B, 17108 },
+ { 0x576C, 20479 },
+ { 0x576D, 17116 },
+ { 0x576E, 20511 },
+ { 0x576F, 17189 },
+ { 0x5770, 53877 },
+ { 0x5771, 17193 },
+ { 0x5772, 17267 },
+ { 0x5773, 17271 },
+ { 0x5774, 17275 },
+ { 0x5775, 17283 },
+ { 0x5776, 18108 },
+ { 0x5777, 17298 },
+ { 0x5778, 17181 },
+ { 0x5779, 20685 },
+ { 0x577A, 17713 },
+ { 0x577B, 20690 },
+ { 0x577C, 17718 },
+ { 0x577D, 20695 },
+ { 0x577E, 20669 },
+ { 0x577F, 17676 },
+ { 0x5780, 20654 },
+ { 0x5781, 17585 },
+ { 0x5782, 20700 },
+ { 0x5783, 17728 },
+ { 0x5784, 20705 },
+ { 0x5785, 17733 },
+ { 0x5786, 20710 },
+ { 0x5787, 17738 },
+ { 0x5788, 53986 },
+ { 0x5789, 54095 },
+ { 0x578A, 54131 },
+ { 0x578B, 20731 },
+ { 0x578C, 17800 },
+ { 0x57FB, 20847 },
+ { 0x57FC, 20852 },
+ { 0x57FD, 20842 },
+ { 0x57FE, 20832 },
+ { 0x57FF, 20837 },
+ { 0x5800, 36572 },
+ { 0x5801, 36580 },
+ { 0x5802, 36543 },
+ { 0x5803, 36588 },
+ { 0x5804, 36576 },
+ { 0x5805, 36584 },
+ { 0x5806, 36535 },
+ { 0x5807, 36616 },
+ { 0x5808, 36672 },
+ { 0x5809, 36604 },
+ { 0x580A, 36664 },
+ { 0x580B, 36539 },
+ { 0x580C, 36596 },
+ { 0x580D, 36652 },
+ { 0x580E, 36612 },
+ { 0x580F, 36668 },
+ { 0x5810, 36688 },
+ { 0x5811, 36696 },
+ { 0x5812, 36656 },
+ { 0x5813, 36692 },
+ { 0x5814, 36644 },
+ { 0x5815, 36684 },
+ { 0x5816, 36600 },
+ { 0x5817, 36660 },
+ { 0x5818, 36628 },
+ { 0x5819, 36632 },
+ { 0x581A, 36676 },
+ { 0x581B, 36592 },
+ { 0x581C, 36648 },
+ { 0x581D, 36624 },
+ { 0x581E, 36636 },
+ { 0x581F, 36620 },
+ { 0x5820, 36680 },
+ { 0x5821, 36640 },
+ { 0x5822, 36608 },
+ { 0x5823, 36547 },
+ { 0x5824, 36557 },
+ { 0x5825, 36562 },
+ { 0x5826, 36552 },
+ { 0x5827, 36567 },
+ { 0x5828, 36700 },
+ { 0x5829, 36704 },
+ { 0x582A, 36708 },
+ { 0x582B, 36712 },
+ { 0x5840, 55006 },
+ { 0x5841, 55057 },
+ { 0x5842, 54997 },
+ { 0x5843, 55060 },
+ { 0x5844, 54985 },
+ { 0x5845, 55045 },
+ { 0x5846, 55003 },
+ { 0x5847, 55066 },
+ { 0x5848, 55030 },
+ { 0x5849, 55075 },
+ { 0x584A, 54988 },
+ { 0x584B, 55015 },
+ { 0x584C, 55018 },
+ { 0x584D, 55069 },
+ { 0x584E, 54982 },
+ { 0x584F, 55012 },
+ { 0x5850, 55078 },
+ { 0x5851, 55087 },
+ { 0x5852, 55051 },
+ { 0x5853, 55033 },
+ { 0x5854, 55084 },
+ { 0x5855, 55042 },
+ { 0x5856, 55093 },
+ { 0x5857, 55039 },
+ { 0x5858, 55024 },
+ { 0x5859, 55009 },
+ { 0x585A, 55072 },
+ { 0x585B, 55027 },
+ { 0x585C, 55000 },
+ { 0x585D, 54967 },
+ { 0x585E, 54973 },
+ { 0x585F, 54979 },
+ { 0x5860, 54970 },
+ { 0x5861, 54976 },
+ { 0x5862, 55021 },
+ { 0x5863, 55036 },
+ { 0x5864, 54994 },
+ { 0x5865, 55054 },
+ { 0x5866, 54991 },
+ { 0x5867, 55124 },
+ { 0x5868, 55128 },
+ { 0x5869, 55081 },
+ { 0x586A, 55090 },
+ { 0x586B, 55048 },
+ { 0x586C, 55063 },
+ { 0x586D, 55101 },
+ { 0x586E, 55109 },
+ { 0x586F, 55097 },
+ { 0x5870, 55105 },
+ { 0x5871, 55120 },
+ { 0x5872, 55132 },
+ { 0x5873, 55113 },
+ { 0x5874, 55116 },
+ { 0x5875, 54963 },
+ { 0x5876, 54956 },
+ { 0x5877, 54959 },
+ { 0x5880, 68329 },
+ { 0x5881, 68326 },
+ { 0x5882, 68431 },
+ { 0x5883, 68446 },
+ { 0x5884, 68437 },
+ { 0x5885, 68473 },
+ { 0x5886, 68443 },
+ { 0x5887, 68506 },
+ { 0x5888, 68573 },
+ { 0x5889, 68581 },
+ { 0x588A, 68569 },
+ { 0x588B, 68577 },
+ { 0x588C, 68434 },
+ { 0x588D, 68464 },
+ { 0x588E, 68449 },
+ { 0x588F, 68440 },
+ { 0x5890, 68491 },
+ { 0x5891, 68452 },
+ { 0x5892, 68479 },
+ { 0x5893, 68533 },
+ { 0x5894, 68467 },
+ { 0x5895, 68527 },
+ { 0x5896, 68539 },
+ { 0x5897, 68458 },
+ { 0x5898, 68518 },
+ { 0x5899, 68476 },
+ { 0x589A, 68530 },
+ { 0x589B, 68545 },
+ { 0x589C, 68560 },
+ { 0x589D, 68566 },
+ { 0x589E, 68521 },
+ { 0x589F, 68563 },
+ { 0x58A0, 68542 },
+ { 0x58A1, 68503 },
+ { 0x58A2, 68557 },
+ { 0x58A3, 68461 },
+ { 0x58A4, 68524 },
+ { 0x58A5, 68488 },
+ { 0x58A6, 68494 },
+ { 0x58A7, 68548 },
+ { 0x58A8, 68455 },
+ { 0x58A9, 68515 },
+ { 0x58AA, 68485 },
+ { 0x58AB, 68512 },
+ { 0x58AC, 68497 },
+ { 0x58AD, 68482 },
+ { 0x58AE, 68509 },
+ { 0x58AF, 68551 },
+ { 0x58B0, 68554 },
+ { 0x58B1, 68500 },
+ { 0x58B2, 68470 },
+ { 0x58B3, 68536 },
+ { 0x58B4, 68585 },
+ { 0x58B5, 68380 },
+ { 0x58B6, 68368 },
+ { 0x58B7, 68396 },
+ { 0x58B8, 68376 },
+ { 0x58B9, 68404 },
+ { 0x58BA, 68413 },
+ { 0x58BB, 68423 },
+ { 0x58BC, 68408 },
+ { 0x58BD, 68418 },
+ { 0x58BE, 68364 },
+ { 0x58BF, 68392 },
+ { 0x58C0, 68384 },
+ { 0x58C1, 68372 },
+ { 0x58C2, 68400 },
+ { 0x58C3, 68388 },
+ { 0x58C4, 68323 },
+ { 0x58CE, 68332 },
+ { 0x58CF, 68428 },
+ { 0x58D0, 68352 },
+ { 0x58D1, 68334 },
+ { 0x58D2, 68340 },
+ { 0x58D3, 68361 },
+ { 0x58D4, 68346 },
+ { 0x58D5, 68343 },
+ { 0x58D6, 68337 },
+ { 0x58D7, 68358 },
+ { 0x58D8, 68355 },
+ { 0x58D9, 68349 },
+ { 0x5900, 13773 },
+ { 0x5901, 13749 },
+ { 0x5902, 13757 },
+ { 0x5903, 13785 },
+ { 0x5904, 13765 },
+ { 0x5905, 13761 },
+ { 0x5906, 13753 },
+ { 0x5907, 13781 },
+ { 0x5908, 13777 },
+ { 0x5909, 13769 },
+ { 0x590A, 13837 },
+ { 0x590B, 13897 },
+ { 0x590C, 13829 },
+ { 0x590D, 13901 },
+ { 0x590E, 13869 },
+ { 0x590F, 13913 },
+ { 0x5910, 13889 },
+ { 0x5911, 13905 },
+ { 0x5912, 13873 },
+ { 0x5913, 13893 },
+ { 0x5914, 13849 },
+ { 0x5915, 13861 },
+ { 0x5916, 13909 },
+ { 0x5917, 13845 },
+ { 0x5918, 13825 },
+ { 0x5919, 13817 },
+ { 0x591A, 13865 },
+ { 0x591B, 13885 },
+ { 0x591C, 13841 },
+ { 0x591D, 13881 },
+ { 0x591E, 13917 },
+ { 0x591F, 13833 },
+ { 0x5920, 13877 },
+ { 0x5921, 13821 },
+ { 0x5922, 13809 },
+ { 0x5923, 13853 },
+ { 0x5924, 13813 },
+ { 0x5925, 13857 },
+ { 0x5926, 13805 },
+ { 0x5927, 13789 },
+ { 0x5928, 13797 },
+ { 0x5929, 13801 },
+ { 0x592A, 13793 },
+ { 0x592B, 13745 },
+ { 0x592C, 13736 },
+ { 0x592D, 13740 },
+ { 0x592E, 13728 },
+ { 0x592F, 13732 },
+ { 0x5930, 35728 },
+ { 0x5931, 35719 },
+ { 0x5932, 35764 },
+ { 0x5933, 35749 },
+ { 0x5934, 35716 },
+ { 0x5935, 35737 },
+ { 0x5936, 35740 },
+ { 0x5937, 35710 },
+ { 0x5938, 35734 },
+ { 0x5939, 35713 },
+ { 0x593A, 35725 },
+ { 0x593B, 35767 },
+ { 0x593C, 35746 },
+ { 0x593D, 35743 },
+ { 0x593E, 35731 },
+ { 0x593F, 35755 },
+ { 0x5940, 35752 },
+ { 0x5941, 35722 },
+ { 0x5942, 35758 },
+ { 0x5943, 35770 },
+ { 0x5944, 35761 },
+ { 0x5945, 35773 },
+ { 0x5946, 35707 },
+ { 0x5947, 35679 },
+ { 0x5948, 35687 },
+ { 0x5949, 35675 },
+ { 0x594A, 35691 },
+ { 0x594B, 35683 },
+ { 0x594C, 35695 },
+ { 0x594D, 35703 },
+ { 0x594E, 35699 },
+ { 0x594F, 35793 },
+ { 0x5950, 35785 },
+ { 0x5951, 35789 },
+ { 0x5952, 35781 },
+ { 0x5953, 35776 },
+ { 0x595F, 35778 },
+ { 0x5A00, 8801 },
+ { 0x5A01, 8807 },
+ { 0x5A02, 8813 },
+ { 0x5A03, 8804 },
+ { 0x5A04, 8816 },
+ { 0x5A05, 8810 },
+ { 0x5A06, 8834 },
+ { 0x5A07, 8885 },
+ { 0x5A08, 8825 },
+ { 0x5A09, 8879 },
+ { 0x5A0A, 8915 },
+ { 0x5A0B, 8891 },
+ { 0x5A0C, 8870 },
+ { 0x5A0D, 8912 },
+ { 0x5A0E, 8831 },
+ { 0x5A0F, 8882 },
+ { 0x5A10, 8921 },
+ { 0x5A11, 8894 },
+ { 0x5A12, 8918 },
+ { 0x5A13, 8855 },
+ { 0x5A14, 8909 },
+ { 0x5A15, 8822 },
+ { 0x5A16, 8876 },
+ { 0x5A17, 8897 },
+ { 0x5A18, 8843 },
+ { 0x5A19, 8873 },
+ { 0x5A1A, 8846 },
+ { 0x5A1B, 8903 },
+ { 0x5A1C, 8900 },
+ { 0x5A1D, 8819 },
+ { 0x5A1E, 8867 },
+ { 0x5A1F, 8888 },
+ { 0x5A20, 8840 },
+ { 0x5A21, 8864 },
+ { 0x5A22, 8861 },
+ { 0x5A23, 8849 },
+ { 0x5A24, 8837 },
+ { 0x5A25, 8858 },
+ { 0x5A26, 8906 },
+ { 0x5A27, 8852 },
+ { 0x5A28, 8828 },
+ { 0x5A29, 8773 },
+ { 0x5A2A, 8761 },
+ { 0x5A2B, 8789 },
+ { 0x5A2C, 8785 },
+ { 0x5A2D, 8769 },
+ { 0x5A2E, 8793 },
+ { 0x5A2F, 8765 },
+ { 0x5A30, 8777 },
+ { 0x5A31, 8781 },
+ { 0x5A32, 8797 },
+ { 0x5A33, 8980 },
+ { 0x5A34, 8972 },
+ { 0x5A35, 8968 },
+ { 0x5A36, 8976 },
+ { 0x5A40, 8928 },
+ { 0x5A41, 8924 },
+ { 0x5A42, 8960 },
+ { 0x5A43, 8994 },
+ { 0x5A44, 8956 },
+ { 0x5A45, 8948 },
+ { 0x5A46, 8936 },
+ { 0x5A47, 8940 },
+ { 0x5A48, 8952 },
+ { 0x5A49, 8944 },
+ { 0x5A4A, 8932 },
+ { 0x5A4B, 8964 },
+ { 0x5A4C, 8989 },
+ { 0x5A4D, 8984 },
+ { 0x5A50, 8749 },
+ { 0x5A51, 8731 },
+ { 0x5A52, 8737 },
+ { 0x5A53, 8758 },
+ { 0x5A54, 8743 },
+ { 0x5A55, 8740 },
+ { 0x5A56, 8734 },
+ { 0x5A57, 8755 },
+ { 0x5A58, 8752 },
+ { 0x5A59, 8746 },
+ { 0x5A5C, 9006 },
+ { 0x5A5D, 8999 },
+ { 0x5A5E, 9002 },
+ { 0x5A5F, 9009 },
+ { 0x6B00, 17897 },
+ { 0x6B01, 17901 },
+ { 0x6B02, 17905 },
+ { 0x6B03, 17921 },
+ { 0x6B04, 17925 },
+ { 0x6B05, 17929 },
+ { 0x6B06, 17917 },
+ { 0x6B13, 44892 },
+ { 0x6B14, 44882 },
+ { 0x6B15, 44887 },
+ { 0x6B16, 44902 },
+ { 0x6B17, 44897 },
+ { 0x6B1D, 33182 },
+ { 0x6B1E, 32972 },
+ { 0x6B1F, 33388 },
+ { 0x6B20, 33370 },
+ { 0x6B21, 33269 },
+ { 0x6B22, 33277 },
+ { 0x6B23, 33257 },
+ { 0x6B24, 33261 },
+ { 0x6B25, 33286 },
+ { 0x6B26, 33281 },
+ { 0x6B27, 33273 },
+ { 0x6B28, 33265 },
+ { 0x6B29, 33374 },
+ { 0x6B2A, 33230 },
+ { 0x6B2B, 33224 },
+ { 0x6B2C, 33249 },
+ { 0x6B2D, 33241 },
+ { 0x6B2E, 33200 },
+ { 0x6B2F, 33205 },
+ { 0x6B30, 33195 },
+ { 0x6B31, 33105 },
+ { 0x6B32, 33333 },
+ { 0x6B33, 33293 },
+ { 0x6B34, 33079 },
+ { 0x6B35, 33174 },
+ { 0x6B36, 33357 },
+ { 0x6B38, 33161 },
+ { 0x6B39, 33187 },
+ { 0x6B3A, 33312 },
+ { 0x6B3B, 33121 },
+ { 0x6B3C, 33341 },
+ { 0x6B3E, 33129 },
+ { 0x6B40, 33137 },
+ { 0x6B41, 33365 },
+ { 0x6B43, 33302 },
+ { 0x6B44, 33092 },
+ { 0x6B46, 33349 },
+ { 0x6B47, 33145 },
+ { 0x6B48, 33216 },
+ { 0x6B49, 33236 },
+ { 0x6B4A, 33153 },
+ { 0x6B4B, 33169 },
+ { 0x6B4C, 33100 },
+ { 0x6B4D, 33116 },
+ { 0x6B4E, 33087 },
+ { 0x6B4F, 33379 },
+ { 0x6B50, 25426 },
+ { 0x6B51, 25420 },
+ { 0x6B52, 25471 },
+ { 0x6B53, 25456 },
+ { 0x6B54, 25466 },
+ { 0x6B55, 25461 },
+ { 0x6B56, 24792 },
+ { 0x6B57, 24777 },
+ { 0x6B58, 24787 },
+ { 0x6B59, 24782 },
+ { 0x6B5A, 25928 },
+ { 0x6B5B, 25913 },
+ { 0x6B5C, 25923 },
+ { 0x6B5D, 25918 },
+ { 0x6B5E, 26308 },
+ { 0x6B5F, 26293 },
+ { 0x6B60, 26303 },
+ { 0x6B61, 26298 },
+ { 0x6B62, 26272 },
+ { 0x6B63, 26257 },
+ { 0x6B64, 26267 },
+ { 0x6B65, 26262 },
+ { 0x6B66, 25892 },
+ { 0x6B67, 25877 },
+ { 0x6B68, 25887 },
+ { 0x6B69, 25882 },
+ { 0x6B6A, 25071 },
+ { 0x6B6B, 25056 },
+ { 0x6B6C, 25066 },
+ { 0x6B6D, 25061 },
+ { 0x6B6E, 26164 },
+ { 0x6B6F, 26149 },
+ { 0x6B70, 26159 },
+ { 0x6B71, 26154 },
+ { 0x6B72, 25507 },
+ { 0x6B73, 25492 },
+ { 0x6B74, 25502 },
+ { 0x6B75, 25497 },
+ { 0x6B76, 25729 },
+ { 0x6B77, 25714 },
+ { 0x6B78, 25724 },
+ { 0x6B79, 25719 },
+ { 0x6B7A, 26249 },
+ { 0x6B7B, 26234 },
+ { 0x6B7C, 26244 },
+ { 0x6B7D, 26239 },
+ { 0x6B7E, 26393 },
+ { 0x6B7F, 26378 },
+ { 0x6B80, 26388 },
+ { 0x6B81, 26383 },
+ { 0x6B82, 26285 },
+ { 0x6B83, 26280 },
+ { 0x6B84, 25941 },
+ { 0x6B85, 25936 },
+ { 0x6B86, 24341 },
+ { 0x6B87, 24336 },
+ { 0x6B88, 25484 },
+ { 0x6B89, 25479 },
+ { 0x6B8A, 24667 },
+ { 0x6B8B, 24662 },
+ { 0x6B8C, 25742 },
+ { 0x6B8D, 25737 },
+ { 0x6B8E, 26118 },
+ { 0x6B8F, 26103 },
+ { 0x6B90, 26113 },
+ { 0x6B91, 26108 },
+ { 0x6B92, 24442 },
+ { 0x6B93, 24427 },
+ { 0x6B94, 24437 },
+ { 0x6B95, 24432 },
+ { 0x6B96, 25530 },
+ { 0x6B97, 25515 },
+ { 0x6B98, 25525 },
+ { 0x6B99, 25520 },
+ { 0x6B9A, 26141 },
+ { 0x6B9B, 26126 },
+ { 0x6B9C, 26136 },
+ { 0x6B9D, 26131 },
+ { 0x6B9E, 25690 },
+ { 0x6B9F, 25684 },
+ { 0x6BA0, 26187 },
+ { 0x6BA1, 26172 },
+ { 0x6BA2, 26182 },
+ { 0x6BA3, 26177 },
+ { 0x6BA4, 24597 },
+ { 0x6BA5, 24589 },
+ { 0x6BA6, 24577 },
+ { 0x6BA7, 24559 },
+ { 0x6BA8, 24571 },
+ { 0x6BA9, 24565 },
+ { 0x6BAA, 24653 },
+ { 0x6BAB, 24635 },
+ { 0x6BAC, 24647 },
+ { 0x6BAD, 24641 },
+ { 0x6BAE, 25266 },
+ { 0x6BAF, 25260 },
+ { 0x6BB0, 25231 },
+ { 0x6BB1, 25222 },
+ { 0x6BD3, 24046 },
+ { 0x6BD4, 24031 },
+ { 0x6BD5, 24041 },
+ { 0x6BD6, 24036 },
+ { 0x6BD7, 24020 },
+ { 0x6BD8, 24015 },
+ { 0x6BD9, 24059 },
+ { 0x6BDA, 24054 },
+ { 0x6BDB, 24085 },
+ { 0x6BDC, 24080 },
+ { 0x6BDD, 24007 },
+ { 0x6BDE, 24072 },
+ { 0x6BDF, 24067 },
+ { 0x6BE0, 26353 },
+ { 0x6BE1, 26347 },
+ { 0x6BE2, 26369 },
+ { 0x6BE3, 26363 },
+ { 0x6BE4, 23993 },
+ { 0x6BE5, 23978 },
+ { 0x6BE6, 23988 },
+ { 0x6BE7, 23983 },
+ { 0x6BE8, 26322 },
+ { 0x6BE9, 26313 },
+ { 0x6BEA, 28622 },
+ { 0x6BEB, 28590 },
+ { 0x6BEC, 28450 },
+ { 0x6BED, 28440 },
+ { 0x6BEE, 28560 },
+ { 0x6BEF, 28550 },
+ { 0x6BF0, 28430 },
+ { 0x6BF1, 28420 },
+ { 0x6BF2, 28470 },
+ { 0x6BF3, 28460 },
+ { 0x6BF4, 28490 },
+ { 0x6BF5, 28480 },
+ { 0x6BF6, 28410 },
+ { 0x6BF7, 28390 },
+ { 0x6BF8, 28400 },
+ { 0x6BF9, 30178 },
+ { 0x6BFA, 30152 },
+ { 0x6BFB, 30165 },
+ { 0x6BFC, 26021 },
+ { 0x6BFD, 26003 },
+ { 0x6BFE, 26015 },
+ { 0x6BFF, 26009 },
+ { 0x6C00, 28642 },
+ { 0x6C01, 28510 },
+ { 0x6C02, 28692 },
+ { 0x6C03, 28611 },
+ { 0x6C04, 28580 },
+ { 0x6C05, 26665 },
+ { 0x6C06, 26600 },
+ { 0x6C07, 26688 },
+ { 0x6C08, 26716 },
+ { 0x6C09, 26650 },
+ { 0x6C0A, 26635 },
+ { 0x6C0B, 28073 },
+ { 0x6C0C, 27980 },
+ { 0x6C0D, 28115 },
+ { 0x6C0E, 28189 },
+ { 0x6C0F, 28030 },
+ { 0x6C10, 28015 },
+ { 0x6C11, 29671 },
+ { 0x6C12, 29699 },
+ { 0x6C13, 29663 },
+ { 0x6C14, 29648 },
+ { 0x6C15, 28801 },
+ { 0x6C16, 28882 },
+ { 0x6C17, 27033 },
+ { 0x6C18, 27066 },
+ { 0x6C19, 28933 },
+ { 0x6C1A, 28889 },
+ { 0x6C1B, 28947 },
+ { 0x6C1C, 29506 },
+ { 0x6C1D, 29408 },
+ { 0x6C1E, 29546 },
+ { 0x6C1F, 29612 },
+ { 0x6C20, 27755 },
+ { 0x6C21, 27838 },
+ { 0x6C22, 26821 },
+ { 0x6C23, 26763 },
+ { 0x6C24, 26853 },
+ { 0x6C25, 26867 },
+ { 0x6C26, 27852 },
+ { 0x6C27, 27939 },
+ { 0x6C28, 28736 },
+ { 0x6C29, 26526 },
+ { 0x6C2A, 26577 },
+ { 0x6C2B, 29767 },
+ { 0x6C2C, 29809 },
+ { 0x6C2D, 26925 },
+ { 0x6C2E, 26881 },
+ { 0x6C2F, 26957 },
+ { 0x6C30, 26980 },
+ { 0x6C31, 26910 },
+ { 0x6C32, 26895 },
+ { 0x6C33, 27626 },
+ { 0x6C34, 27706 },
+ { 0x6C35, 27655 },
+ { 0x6C36, 27640 },
+ { 0x6C37, 27221 },
+ { 0x6C38, 27235 },
+ { 0x6C39, 27149 },
+ { 0x6C3A, 27249 },
+ { 0x6C3B, 27177 },
+ { 0x6C3C, 27304 },
+ { 0x6C3D, 27213 },
+ { 0x6C3E, 27191 },
+ { 0x6C3F, 27525 },
+ { 0x6C40, 27355 },
+ { 0x6C41, 27557 },
+ { 0x6C42, 27612 },
+ { 0x6C43, 27458 },
+ { 0x6C44, 27376 },
+ { 0x6C45, 29060 },
+ { 0x6C46, 28988 },
+ { 0x6C47, 29101 },
+ { 0x6C48, 29131 },
+ { 0x6C49, 29009 },
+ { 0x6C4A, 28995 },
+ { 0x6C4B, 29293 },
+ { 0x6C4C, 29173 },
+ { 0x6C4D, 29307 },
+ { 0x6C4E, 29354 },
+ { 0x6C4F, 29223 },
+ { 0x6C50, 29208 },
+ { 0x6C51, 27095 },
+ { 0x6C52, 27127 },
+ { 0x6C53, 27080 },
+ { 0x6C54, 27073 },
+ { 0x6C55, 28300 },
+ { 0x6C56, 28226 },
+ { 0x6C57, 28314 },
+ { 0x6C58, 28369 },
+ { 0x6C59, 28276 },
+ { 0x6C5A, 28261 },
+ { 0x6C5B, 29619 },
+ { 0x6C5C, 27713 },
+ { 0x6C5D, 28766 },
+ { 0x6C5E, 30130 },
+ { 0x6C5F, 30137 },
+ { 0x6C60, 30109 },
+ { 0x6C61, 30095 },
+ { 0x6C62, 30123 },
+ { 0x6C63, 30144 },
+ { 0x6C64, 28540 },
+ { 0x6C65, 28712 },
+ { 0x6C66, 28662 },
+ { 0x6C67, 28702 },
+ { 0x6C68, 28600 },
+ { 0x6C69, 28570 },
+ { 0x6C6A, 26621 },
+ { 0x6C6B, 26730 },
+ { 0x6C6C, 26695 },
+ { 0x6C6D, 26723 },
+ { 0x6C6E, 26642 },
+ { 0x6C6F, 26628 },
+ { 0x6C70, 28001 },
+ { 0x6C71, 28203 },
+ { 0x6C72, 28168 },
+ { 0x6C73, 28196 },
+ { 0x6C74, 28022 },
+ { 0x6C75, 28008 },
+ { 0x6C76, 29634 },
+ { 0x6C77, 29713 },
+ { 0x6C78, 29678 },
+ { 0x6C79, 29706 },
+ { 0x6C7A, 29655 },
+ { 0x6C7B, 29641 },
+ { 0x6C7C, 26902 },
+ { 0x6C7D, 26888 },
+ { 0x6C7E, 27647 },
+ { 0x6C7F, 27633 },
+ { 0x6C80, 27198 },
+ { 0x6C81, 27156 },
+ { 0x6C82, 27283 },
+ { 0x6C83, 27205 },
+ { 0x6C84, 27184 },
+ { 0x6C85, 27591 },
+ { 0x6C86, 27450 },
+ { 0x6C87, 27369 },
+ { 0x6C88, 29002 },
+ { 0x6C89, 29117 },
+ { 0x6C8A, 29194 },
+ { 0x6C8B, 29368 },
+ { 0x6C8C, 29333 },
+ { 0x6C8D, 29361 },
+ { 0x6C8E, 29215 },
+ { 0x6C8F, 29201 },
+ { 0x6C90, 28757 },
+ { 0x6C91, 28247 },
+ { 0x6C92, 28383 },
+ { 0x6C93, 28348 },
+ { 0x6C94, 28376 },
+ { 0x6C95, 28268 },
+ { 0x6C96, 28254 },
+ { 0x6C97, 28632 },
+ { 0x6C98, 28500 },
+ { 0x6C99, 28652 },
+ { 0x6C9A, 28682 },
+ { 0x6C9B, 28530 },
+ { 0x6C9C, 26658 },
+ { 0x6C9D, 26593 },
+ { 0x6C9E, 26681 },
+ { 0x6C9F, 26709 },
+ { 0x6CA0, 26614 },
+ { 0x6CA1, 28066 },
+ { 0x6CA2, 27973 },
+ { 0x6CA3, 28108 },
+ { 0x6CA4, 28182 },
+ { 0x6CA5, 27994 },
+ { 0x6CA6, 29692 },
+ { 0x6CA7, 28794 },
+ { 0x6CA8, 28875 },
+ { 0x6CA9, 27026 },
+ { 0x6CAA, 27059 },
+ { 0x6CAB, 28926 },
+ { 0x6CAC, 28940 },
+ { 0x6CAD, 29499 },
+ { 0x6CAE, 29401 },
+ { 0x6CAF, 29539 },
+ { 0x6CB0, 29605 },
+ { 0x6CB1, 27748 },
+ { 0x6CB2, 27806 },
+ { 0x6CB3, 27831 },
+ { 0x6CB4, 26814 },
+ { 0x6CB5, 26756 },
+ { 0x6CB6, 26846 },
+ { 0x6CB7, 26860 },
+ { 0x6CB8, 27845 },
+ { 0x6CB9, 28729 },
+ { 0x6CBA, 26519 },
+ { 0x6CBB, 26570 },
+ { 0x6CBC, 29760 },
+ { 0x6CBD, 29802 },
+ { 0x6CBE, 26918 },
+ { 0x6CBF, 26874 },
+ { 0x6CC0, 26950 },
+ { 0x6CC1, 26973 },
+ { 0x6CC2, 27619 },
+ { 0x6CC3, 27699 },
+ { 0x6CC4, 27228 },
+ { 0x6CC5, 27142 },
+ { 0x6CC6, 27242 },
+ { 0x6CC7, 27170 },
+ { 0x6CC8, 27297 },
+ { 0x6CC9, 27518 },
+ { 0x6CCA, 27348 },
+ { 0x6CCB, 27550 },
+ { 0x6CCC, 27605 },
+ { 0x6CCD, 27362 },
+ { 0x6CCE, 29053 },
+ { 0x6CCF, 28981 },
+ { 0x6CD0, 29094 },
+ { 0x6CD1, 29124 },
+ { 0x6CD2, 29286 },
+ { 0x6CD3, 29166 },
+ { 0x6CD4, 29300 },
+ { 0x6CD5, 29347 },
+ { 0x6CD6, 29187 },
+ { 0x6CD7, 27088 },
+ { 0x6CD8, 27120 },
+ { 0x6CD9, 27134 },
+ { 0x6CDA, 28293 },
+ { 0x6CDB, 28219 },
+ { 0x6CDC, 28307 },
+ { 0x6CDD, 28362 },
+ { 0x6CDE, 28240 },
+ { 0x6CDF, 28672 },
+ { 0x6CE0, 28520 },
+ { 0x6CE1, 26702 },
+ { 0x6CE2, 26607 },
+ { 0x6CE3, 28175 },
+ { 0x6CE4, 27987 },
+ { 0x6CE5, 29685 },
+ { 0x6CE6, 29627 },
+ { 0x6CE7, 29598 },
+ { 0x6CE8, 29415 },
+ { 0x6CE9, 30057 },
+ { 0x6CEA, 29891 },
+ { 0x6CEB, 27163 },
+ { 0x6CEC, 27290 },
+ { 0x6CED, 27598 },
+ { 0x6CEE, 29340 },
+ { 0x6CEF, 29180 },
+ { 0x6CF0, 28355 },
+ { 0x6CF1, 28233 },
+ { 0x6CF2, 30102 },
+ { 0x6CF3, 30088 },
+ { 0x6CF4, 30116 },
+ { 0x6CF5, 27881 },
+ { 0x6CF6, 27866 },
+ { 0x6CF7, 26493 },
+ { 0x6CF8, 26478 },
+ { 0x6CF9, 29752 },
+ { 0x6CFA, 29737 },
+ { 0x6CFB, 29465 },
+ { 0x6CFC, 29450 },
+ { 0x6CFD, 29941 },
+ { 0x6CFE, 29926 },
+ { 0x6CFF, 27009 },
+ { 0x6D00, 26994 },
+ { 0x6D01, 28830 },
+ { 0x6D02, 28815 },
+ { 0x6D03, 28918 },
+ { 0x6D04, 28903 },
+ { 0x6D05, 27798 },
+ { 0x6D06, 27783 },
+ { 0x6D07, 26806 },
+ { 0x6D08, 26791 },
+ { 0x6D09, 29979 },
+ { 0x6D0A, 29884 },
+ { 0x6D0B, 30007 },
+ { 0x6D0C, 30071 },
+ { 0x6D0D, 29912 },
+ { 0x6D0E, 29436 },
+ { 0x6D0F, 27769 },
+ { 0x6D10, 26777 },
+ { 0x6D11, 27873 },
+ { 0x6D12, 27859 },
+ { 0x6D13, 26485 },
+ { 0x6D14, 26471 },
+ { 0x6D15, 29744 },
+ { 0x6D16, 29730 },
+ { 0x6D17, 29457 },
+ { 0x6D18, 29443 },
+ { 0x6D19, 29933 },
+ { 0x6D1A, 29919 },
+ { 0x6D1B, 27001 },
+ { 0x6D1C, 26987 },
+ { 0x6D1D, 28822 },
+ { 0x6D1E, 28808 },
+ { 0x6D1F, 28910 },
+ { 0x6D20, 28896 },
+ { 0x6D21, 27790 },
+ { 0x6D22, 27776 },
+ { 0x6D23, 26798 },
+ { 0x6D24, 26784 },
+ { 0x6D25, 29958 },
+ { 0x6D26, 29863 },
+ { 0x6D27, 29986 },
+ { 0x6D28, 30050 },
+ { 0x6D29, 29905 },
+ { 0x6D2A, 29429 },
+ { 0x6D2B, 27762 },
+ { 0x6D2C, 26770 },
+ { 0x6D2D, 29972 },
+ { 0x6D2E, 29877 },
+ { 0x6D2F, 30000 },
+ { 0x6D30, 30064 },
+ { 0x6D31, 29422 },
+ { 0x6D32, 29898 },
+ { 0x6D33, 27932 },
+ { 0x6D34, 29492 },
+ { 0x6D35, 29394 },
+ { 0x6D36, 29532 },
+ { 0x6D37, 29965 },
+ { 0x6D38, 29870 },
+ { 0x6D39, 29993 },
+ { 0x6D3A, 27925 },
+ { 0x6D3B, 28722 },
+ { 0x6D3C, 28743 },
+ { 0x6D3D, 28750 },
+ { 0x6D3E, 35643 },
+ { 0x6D3F, 35646 },
+ { 0x6D50, 28057 },
+ { 0x6D51, 27946 },
+ { 0x6D52, 27955 },
+ { 0x6D53, 27964 },
+ { 0x6D54, 28099 },
+ { 0x6D55, 28150 },
+ { 0x6D56, 28122 },
+ { 0x6D57, 28159 },
+ { 0x6D58, 28838 },
+ { 0x6D59, 28847 },
+ { 0x6D5A, 27040 },
+ { 0x6D5B, 27049 },
+ { 0x6D5C, 29385 },
+ { 0x6D5D, 29473 },
+ { 0x6D5E, 29482 },
+ { 0x6D5F, 29553 },
+ { 0x6D60, 29562 },
+ { 0x6D61, 29571 },
+ { 0x6D62, 29580 },
+ { 0x6D63, 29589 },
+ { 0x6D64, 27721 },
+ { 0x6D65, 27730 },
+ { 0x6D66, 27813 },
+ { 0x6D67, 29845 },
+ { 0x6D68, 29854 },
+ { 0x6D69, 29949 },
+ { 0x6D6A, 30014 },
+ { 0x6D6B, 30023 },
+ { 0x6D6C, 30032 },
+ { 0x6D6D, 30041 },
+ { 0x6D6E, 26746 },
+ { 0x6D6F, 26828 },
+ { 0x6D70, 26837 },
+ { 0x6D71, 27889 },
+ { 0x6D72, 27898 },
+ { 0x6D73, 27916 },
+ { 0x6D74, 27907 },
+ { 0x6D75, 26501 },
+ { 0x6D76, 26552 },
+ { 0x6D77, 26561 },
+ { 0x6D78, 26542 },
+ { 0x6D79, 29793 },
+ { 0x6D7A, 29774 },
+ { 0x6D7B, 29783 },
+ { 0x6D7C, 26932 },
+ { 0x6D7D, 26941 },
+ { 0x6D7E, 27663 },
+ { 0x6D7F, 27690 },
+ { 0x6D80, 27330 },
+ { 0x6D81, 27311 },
+ { 0x6D82, 27320 },
+ { 0x6D83, 27491 },
+ { 0x6D84, 27482 },
+ { 0x6D85, 27532 },
+ { 0x6D86, 27541 },
+ { 0x6D87, 27564 },
+ { 0x6D88, 27573 },
+ { 0x6D89, 28963 },
+ { 0x6D8A, 28972 },
+ { 0x6D8B, 28954 },
+ { 0x6D8C, 29017 },
+ { 0x6D8D, 29044 },
+ { 0x6D8E, 29076 },
+ { 0x6D8F, 29085 },
+ { 0x6D92, 29035 },
+ { 0x6D93, 27102 },
+ { 0x6D94, 27111 },
+ { 0x6D95, 29157 },
+ { 0x6D96, 29147 },
+ { 0x6D97, 29268 },
+ { 0x6D98, 29277 },
+ { 0x6D99, 29258 },
+ { 0x6D9A, 29314 },
+ { 0x6D9B, 29323 },
+ { 0x6D9C, 28330 },
+ { 0x6D9D, 28339 },
+ { 0x6D9E, 26672 },
+ { 0x6D9F, 28038 },
+ { 0x6DA0, 28047 },
+ { 0x6DA1, 28080 },
+ { 0x6DA2, 28089 },
+ { 0x6DA3, 28131 },
+ { 0x6DA4, 28140 },
+ { 0x6DA5, 28856 },
+ { 0x6DA6, 28784 },
+ { 0x6DA7, 28865 },
+ { 0x6DA8, 29522 },
+ { 0x6DA9, 27739 },
+ { 0x6DAA, 29836 },
+ { 0x6DAB, 26737 },
+ { 0x6DAC, 27473 },
+ { 0x6DAD, 27582 },
+ { 0x6DAE, 28210 },
+ { 0x6DAF, 28284 },
+ { 0x6DB0, 28321 },
+ { 0x6DB1, 29108 },
+ { 0x6DB2, 27681 },
+ { 0x6DB3, 29138 },
+ { 0x6DB4, 27672 },
+ { 0x6DB5, 27339 },
+ { 0x6DB6, 26533 },
+ { 0x6DB7, 27256 },
+ { 0x6DB8, 29240 },
+ { 0x6DB9, 29067 },
+ { 0x6DBA, 27509 },
+ { 0x6DBB, 27265 },
+ { 0x6DBC, 27500 },
+ { 0x6DBD, 29231 },
+ { 0x6DBE, 28775 },
+ { 0x6DBF, 27017 },
+ { 0x6DC0, 29026 },
+ { 0x6DC1, 26964 },
+ { 0x6DC2, 26584 },
+ { 0x6DC3, 27274 },
+ { 0x6DC4, 26510 },
+ { 0x6DC5, 27822 },
+ { 0x6DC6, 29513 },
+ { 0x6DC7, 29249 },
+ { 0x6DF0, 29821 },
+ { 0x6DF1, 29375 },
+ { 0x6DF2, 29725 },
+ { 0x6DF3, 29720 },
+ { 0x6DF4, 30191 },
+ { 0x6DF5, 29816 },
+ { 0x6DF6, 30083 },
+ { 0x6DF7, 30078 },
+ { 0x6DF8, 30196 },
+ { 0x6DF9, 29831 },
+ { 0x6DFA, 30206 },
+ { 0x6DFB, 30211 },
+ { 0x6DFC, 9693 },
+ { 0x6DFD, 30201 },
+ { 0x6E00, 66314 },
+ { 0x6E01, 66316 },
+ { 0x6E02, 66318 },
+ { 0x6E03, 66320 },
+ { 0x6E04, 66322 },
+ { 0x6E05, 66324 },
+ { 0x6E06, 66326 },
+ { 0x6E07, 66328 },
+ { 0x6E08, 66330 },
+ { 0x6E09, 66332 },
+ { 0x6E0A, 66334 },
+ { 0x6E0B, 66336 },
+ { 0x6E0C, 66338 },
+ { 0x6E0D, 66340 },
+ { 0x6E0E, 66342 },
+ { 0x6E0F, 66344 },
+ { 0x6E10, 74355 },
+ { 0x6E11, 74464 },
+ { 0x6E12, 74457 },
+ { 0x6E13, 74350 },
+ { 0x6E14, 74440 },
+ { 0x6E15, 74451 },
+ { 0x6E16, 74434 },
+ { 0x6E17, 74299 },
+ { 0x6E18, 74390 },
+ { 0x6E19, 74445 },
+ { 0x6E20, 58207 },
+ { 0x6E21, 58211 },
+ { 0x6E22, 57894 },
+ { 0x6E23, 57899 },
+ { 0x6E24, 57948 },
+ { 0x6E25, 57955 },
+ { 0x6E26, 58290 },
+ { 0x6E30, 74262 },
+ { 0x6E31, 74244 },
+ { 0x6E32, 74250 },
+ { 0x6E33, 74256 },
+ { 0x6E34, 74343 },
+ { 0x6E35, 74337 },
+ { 0x6E36, 74428 },
+ { 0x6E37, 74284 },
+ { 0x6E38, 74375 },
+ { 0x6E39, 74329 },
+ { 0x6E3A, 74420 },
+ { 0x6E3B, 74276 },
+ { 0x6E3C, 74367 },
+ { 0x6E3D, 74314 },
+ { 0x6E3E, 74405 },
+ { 0x6E3F, 74269 },
+ { 0x6E40, 74360 },
+ { 0x6E41, 74307 },
+ { 0x6E42, 74398 },
+ { 0x6E43, 74291 },
+ { 0x6E44, 74382 },
+ { 0x6E45, 35852 },
+ { 0x6E46, 23293 },
+ { 0x6E47, 74322 },
+ { 0x6E48, 74413 },
+ { 0x6E49, 31173 },
+ { 0x6E4A, 66833 },
+ { 0x6E4B, 10082 },
+ { 0x6E4C, 31561 },
+ { 0x6E4D, 31170 },
+ { 0x6E4E, 66830 },
+ { 0x6E4F, 10075 },
+ { 0x6E50, 22507 },
+ { 0x6E51, 22660 },
+ { 0x6E52, 22487 },
+ { 0x6E54, 22652 },
+ { 0x6E55, 22505 },
+ { 0x6E56, 22644 },
+ { 0x6E57, 22657 },
+ { 0x6E58, 22480 },
+ { 0x6E59, 22499 },
+ { 0x6E5A, 22518 },
+ { 0x6E5B, 22490 },
+ { 0x6E5C, 22509 },
+ { 0x6E5D, 22494 },
+ { 0x6E5E, 22513 },
+ { 0x6E5F, 22596 },
+ { 0x6E60, 22647 },
+ { 0x6E61, 22624 },
+ { 0x6E62, 22502 },
+ { 0x6E63, 22666 },
+ { 0x6E64, 22649 },
+ { 0x6E65, 22663 },
+ { 0x6E66, 22593 },
+ { 0x6E68, 22621 },
+ { 0x6E69, 22590 },
+ { 0x6E6A, 22618 },
+ { 0x6E6B, 22654 },
+ { 0x6E70, 26455 },
+ { 0x6E71, 26442 },
+ { 0x6E72, 26449 },
+ { 0x6E73, 23761 },
+ { 0x6E74, 26467 },
+ { 0x6E76, 23797 },
+ { 0x6E77, 23793 },
+ { 0x6E78, 23772 },
+ { 0x6E79, 23768 },
+ { 0x6E7A, 23813 },
+ { 0x6E7B, 23809 },
+ { 0x6E7C, 26418 },
+ { 0x6E7D, 26414 },
+ { 0x6E7E, 23953 },
+ { 0x6E7F, 23949 },
+ { 0x6E80, 26059 },
+ { 0x6E81, 25385 },
+ { 0x6E82, 25377 },
+ { 0x6E83, 25341 },
+ { 0x6E84, 25333 },
+ { 0x6E85, 25111 },
+ { 0x6E86, 25103 },
+ { 0x6E87, 25363 },
+ { 0x6E88, 25355 },
+ { 0x6E89, 25185 },
+ { 0x6E8A, 25161 },
+ { 0x6E8B, 25177 },
+ { 0x6E8C, 25169 },
+ { 0x6E8D, 25448 },
+ { 0x6E8E, 25411 },
+ { 0x6E8F, 24226 },
+ { 0x6E90, 24211 },
+ { 0x6E91, 24221 },
+ { 0x6E92, 24216 },
+ { 0x6E93, 25042 },
+ { 0x6E94, 25036 },
+ { 0x6E95, 25048 },
+ { 0x6E96, 25012 },
+ { 0x6E97, 25022 },
+ { 0x6E98, 25017 },
+ { 0x6E99, 25869 },
+ { 0x6E9A, 25854 },
+ { 0x6E9B, 25864 },
+ { 0x6E9C, 25859 },
+ { 0x6E9D, 25572 },
+ { 0x6E9E, 25557 },
+ { 0x6E9F, 25567 },
+ { 0x6EA0, 25562 },
+ { 0x6EA1, 24540 },
+ { 0x6EA2, 24525 },
+ { 0x6EA3, 24535 },
+ { 0x6EA4, 24530 },
+ { 0x6EA5, 25595 },
+ { 0x6EA6, 25580 },
+ { 0x6EA7, 25590 },
+ { 0x6EA8, 25585 },
+ { 0x6EA9, 24328 },
+ { 0x6EAA, 24323 },
+ { 0x6EAB, 25846 },
+ { 0x6EAC, 25841 },
+ { 0x6EAD, 24924 },
+ { 0x6EAE, 24919 },
+ { 0x6EAF, 25905 },
+ { 0x6EB0, 25900 },
+ { 0x6EB1, 25833 },
+ { 0x6EB2, 25818 },
+ { 0x6EB3, 25828 },
+ { 0x6EB4, 25823 },
+ { 0x6EB5, 26216 },
+ { 0x6EB6, 26201 },
+ { 0x6EB7, 26211 },
+ { 0x6EB8, 26206 },
+ { 0x6EB9, 24961 },
+ { 0x6EBA, 24946 },
+ { 0x6EBB, 24956 },
+ { 0x6EBC, 24951 },
+ { 0x6EBD, 24255 },
+ { 0x6EBE, 24240 },
+ { 0x6EBF, 24250 },
+ { 0x6EC0, 24245 },
+ { 0x6EC1, 24991 },
+ { 0x6EC2, 24976 },
+ { 0x6EC3, 24986 },
+ { 0x6EC4, 24981 },
+ { 0x6EC5, 25305 },
+ { 0x6EC6, 25290 },
+ { 0x6EC7, 25300 },
+ { 0x6EC8, 25295 },
+ { 0x6EC9, 24139 },
+ { 0x6ECA, 24124 },
+ { 0x6ECB, 24134 },
+ { 0x6ECC, 24129 },
+ { 0x6ECD, 26051 },
+ { 0x6ECE, 26036 },
+ { 0x6ECF, 26046 },
+ { 0x6ED0, 26041 },
+ { 0x6ED1, 24400 },
+ { 0x6ED2, 24385 },
+ { 0x6ED3, 24395 },
+ { 0x6ED4, 24390 },
+ { 0x6ED5, 24828 },
+ { 0x6ED6, 24813 },
+ { 0x6ED7, 24823 },
+ { 0x6ED8, 24818 },
+ { 0x6ED9, 24715 },
+ { 0x6EDA, 24700 },
+ { 0x6EDB, 24710 },
+ { 0x6EDC, 24705 },
+ { 0x6EDD, 24769 },
+ { 0x6EDE, 24754 },
+ { 0x6EDF, 24764 },
+ { 0x6EE0, 24759 },
+ { 0x6EE1, 25630 },
+ { 0x6EE2, 25615 },
+ { 0x6EE3, 25625 },
+ { 0x6EE4, 25620 },
+ { 0x6EE5, 25706 },
+ { 0x6EE6, 25675 },
+ { 0x6EE7, 25701 },
+ { 0x6EE8, 25696 },
+ { 0x6EE9, 24626 },
+ { 0x6EEA, 24611 },
+ { 0x6EEB, 24621 },
+ { 0x6EEC, 24616 },
+ { 0x6EED, 25142 },
+ { 0x6EEE, 25137 },
+ { 0x6EEF, 25442 },
+ { 0x6EF0, 25436 },
+ { 0x6EF1, 25282 },
+ { 0x6EF2, 25206 },
+ { 0x6EF3, 25277 },
+ { 0x6EF4, 25272 },
+ { 0x6EF5, 27433 },
+ { 0x6EF6, 27423 },
+ { 0x6EF7, 27393 },
+ { 0x6EF8, 27383 },
+ { 0x6EF9, 27413 },
+ { 0x6EFA, 27403 },
+ { 0x6EFB, 27466 },
+ { 0x6EFC, 27443 },
+ { 0x6EFF, 10095 },
+ { 0x6F01, 63786 },
+ { 0x6F02, 63773 },
+ { 0x6F03, 63749 },
+ { 0x6F04, 63741 },
+ { 0x6F05, 63752 },
+ { 0x6F06, 63768 },
+ { 0x6F07, 63778 },
+ { 0x6F08, 63415 },
+ { 0x6F09, 63733 },
+ { 0x6F0A, 63760 },
+ { 0x6F0B, 63418 },
+ { 0x6F0C, 63423 },
+ { 0x6F0D, 63792 },
+ { 0x6F0E, 63400 },
+ { 0x6F0F, 63758 },
+ { 0x6F10, 63443 },
+ { 0x6F11, 63425 },
+ { 0x6F12, 63431 },
+ { 0x6F13, 63452 },
+ { 0x6F14, 63437 },
+ { 0x6F15, 63434 },
+ { 0x6F16, 63428 },
+ { 0x6F17, 63449 },
+ { 0x6F18, 63446 },
+ { 0x6F19, 63440 },
+ { 0x6F1A, 63421 },
+ { 0x6F1B, 63776 },
+ { 0x6F1C, 63770 },
+ { 0x6F1D, 63744 },
+ { 0x6F1E, 63789 },
+ { 0x6F1F, 63762 },
+ { 0x6F20, 63783 },
+ { 0x6F21, 63588 },
+ { 0x6F22, 63593 },
+ { 0x6F23, 63598 },
+ { 0x6F24, 63603 },
+ { 0x6F25, 63608 },
+ { 0x6F26, 63613 },
+ { 0x6F27, 63618 },
+ { 0x6F28, 63623 },
+ { 0x6F29, 63628 },
+ { 0x6F2A, 63633 },
+ { 0x6F2B, 63638 },
+ { 0x6F2C, 63643 },
+ { 0x6F2D, 63648 },
+ { 0x6F2E, 63653 },
+ { 0x6F2F, 63658 },
+ { 0x6F30, 63663 },
+ { 0x6F31, 63668 },
+ { 0x6F32, 63673 },
+ { 0x6F33, 63678 },
+ { 0x6F34, 63683 },
+ { 0x6F35, 63688 },
+ { 0x6F36, 63693 },
+ { 0x6F37, 63698 },
+ { 0x6F38, 63703 },
+ { 0x6F39, 63708 },
+ { 0x6F3A, 63713 },
+ { 0x6F3B, 63411 },
+ { 0x6F3C, 63755 },
+ { 0x6F3D, 63729 },
+ { 0x6F3E, 63780 },
+ { 0x6F3F, 63385 },
+ { 0x6F40, 63455 },
+ { 0x6F41, 63458 },
+ { 0x6F42, 63463 },
+ { 0x6F43, 63468 },
+ { 0x6F44, 63473 },
+ { 0x6F45, 63478 },
+ { 0x6F46, 63483 },
+ { 0x6F47, 63488 },
+ { 0x6F48, 63493 },
+ { 0x6F49, 63498 },
+ { 0x6F4A, 63503 },
+ { 0x6F4B, 63508 },
+ { 0x6F4C, 63513 },
+ { 0x6F4D, 63518 },
+ { 0x6F4E, 63523 },
+ { 0x6F4F, 63528 },
+ { 0x6F50, 63533 },
+ { 0x6F51, 63538 },
+ { 0x6F52, 63543 },
+ { 0x6F53, 63548 },
+ { 0x6F54, 63553 },
+ { 0x6F55, 63558 },
+ { 0x6F56, 63563 },
+ { 0x6F57, 63568 },
+ { 0x6F58, 63573 },
+ { 0x6F59, 63578 },
+ { 0x6F5A, 63583 },
+ { 0x6F5B, 63403 },
+ { 0x6F5C, 63765 },
+ { 0x6F5D, 63721 },
+ { 0x6F5E, 63736 },
+ { 0x6F5F, 63407 },
+ { 0x6F60, 63725 },
+ { 0x6F61, 64276 },
+ { 0x6F62, 63796 },
+ { 0x6F63, 63807 },
+ { 0x6F64, 64280 },
+ { 0x6F65, 64253 },
+ { 0x6F66, 64192 },
+ { 0x6F67, 64208 },
+ { 0x6F68, 64218 },
+ { 0x6F69, 64228 },
+ { 0x6F6A, 64213 },
+ { 0x6F6B, 64223 },
+ { 0x6F6C, 64238 },
+ { 0x6F6D, 64248 },
+ { 0x6F6E, 64243 },
+ { 0x6F6F, 64233 },
+ { 0x6F70, 64283 },
+ { 0x6F71, 64024 },
+ { 0x6F72, 64032 },
+ { 0x6F73, 64044 },
+ { 0x6F74, 64028 },
+ { 0x6F75, 64040 },
+ { 0x6F76, 64068 },
+ { 0x6F77, 64076 },
+ { 0x6F78, 64084 },
+ { 0x6F79, 64072 },
+ { 0x6F7A, 64080 },
+ { 0x6F7B, 64148 },
+ { 0x6F7C, 64156 },
+ { 0x6F7D, 64164 },
+ { 0x6F7E, 64152 },
+ { 0x6F7F, 64160 },
+ { 0x6F80, 64168 },
+ { 0x6F81, 64176 },
+ { 0x6F82, 64184 },
+ { 0x6F83, 64172 },
+ { 0x6F84, 64180 },
+ { 0x6F85, 64108 },
+ { 0x6F86, 64116 },
+ { 0x6F87, 64124 },
+ { 0x6F88, 64112 },
+ { 0x6F89, 64120 },
+ { 0x6F8A, 64048 },
+ { 0x6F8B, 64056 },
+ { 0x6F8C, 64064 },
+ { 0x6F8D, 64052 },
+ { 0x6F8E, 64060 },
+ { 0x6F8F, 64088 },
+ { 0x6F90, 64096 },
+ { 0x6F91, 64104 },
+ { 0x6F92, 64092 },
+ { 0x6F93, 64100 },
+ { 0x6F94, 64196 },
+ { 0x6F95, 64204 },
+ { 0x6F96, 64200 },
+ { 0x6F97, 64128 },
+ { 0x6F98, 64136 },
+ { 0x6F99, 64144 },
+ { 0x6F9A, 64132 },
+ { 0x6F9B, 64140 },
+ { 0x6F9C, 64188 },
+ { 0x6F9D, 64036 },
+ { 0x6F9E, 64257 },
+ { 0x6F9F, 64262 },
+ { 0x6FA0, 63814 },
+ { 0x6FA1, 63933 },
+ { 0x6FA2, 64001 },
+ { 0x6FA3, 63977 },
+ { 0x6FA4, 63921 },
+ { 0x6FA5, 63981 },
+ { 0x6FA6, 63985 },
+ { 0x6FA7, 63937 },
+ { 0x6FA8, 64005 },
+ { 0x6FA9, 63929 },
+ { 0x6FAA, 64009 },
+ { 0x6FAB, 63993 },
+ { 0x6FAC, 63997 },
+ { 0x6FAD, 63965 },
+ { 0x6FAE, 64017 },
+ { 0x6FAF, 64013 },
+ { 0x6FB0, 63989 },
+ { 0x6FB1, 63917 },
+ { 0x6FB2, 63925 },
+ { 0x6FB3, 63973 },
+ { 0x6FB4, 63961 },
+ { 0x6FB5, 63901 },
+ { 0x6FB6, 63957 },
+ { 0x6FB7, 63913 },
+ { 0x6FB8, 63905 },
+ { 0x6FB9, 63969 },
+ { 0x6FBA, 63941 },
+ { 0x6FBB, 63945 },
+ { 0x6FBC, 63953 },
+ { 0x6FBD, 63949 },
+ { 0x6FBE, 63909 },
+ { 0x6FC2, 63817 },
+ { 0x6FC3, 63837 },
+ { 0x6FC4, 63865 },
+ { 0x6FC5, 63893 },
+ { 0x6FC6, 63841 },
+ { 0x6FC7, 63821 },
+ { 0x6FCA, 63897 },
+ { 0x6FCB, 63869 },
+ { 0x6FCC, 63829 },
+ { 0x6FCD, 63853 },
+ { 0x6FCE, 63885 },
+ { 0x6FCF, 63849 },
+ { 0x6FD2, 63877 },
+ { 0x6FD3, 63833 },
+ { 0x6FD4, 63889 },
+ { 0x6FD5, 63857 },
+ { 0x6FD6, 63861 },
+ { 0x6FD7, 63881 },
+ { 0x6FDA, 63845 },
+ { 0x6FDB, 63873 },
+ { 0x6FDC, 63825 },
+ { 0x6FE0, 63397 },
+ { 0x6FE1, 63718 },
+ { 0x6FE2, 63388 },
+ { 0x6FE3, 63747 },
+ { 0x6FE4, 63738 },
+ { 0x6FE5, 63394 },
+ { 0x6FE6, 63391 },
+ { 0x6FE8, 63803 },
+ { 0x6FE9, 64270 },
+ { 0x6FEA, 64021 },
+ { 0x6FEB, 64273 },
+ { 0x6FEC, 64267 },
+ { 0x6FED, 63800 },
+ { 0x6FEE, 63811 },
+ { 0x6FF9, 69249 },
+ { 0x6FFA, 69252 },
+ { 0x6FFB, 69255 },
+ { 0x6FFC, 35637 },
+ { 0x6FFD, 69276 },
+ { 0x7000, 35010 },
+ { 0x7001, 35135 },
+ { 0x7002, 35095 },
+ { 0x7003, 35235 },
+ { 0x7004, 35020 },
+ { 0x7005, 34975 },
+ { 0x7006, 35170 },
+ { 0x7007, 35005 },
+ { 0x7008, 35040 },
+ { 0x7009, 35190 },
+ { 0x700A, 35215 },
+ { 0x700B, 35175 },
+ { 0x700D, 35125 },
+ { 0x700E, 35245 },
+ { 0x700F, 35305 },
+ { 0x7010, 35165 },
+ { 0x7011, 35255 },
+ { 0x7012, 35270 },
+ { 0x7013, 35320 },
+ { 0x7014, 35315 },
+ { 0x7015, 35035 },
+ { 0x7016, 35285 },
+ { 0x7017, 35045 },
+ { 0x7018, 35070 },
+ { 0x7019, 35000 },
+ { 0x701A, 35075 },
+ { 0x701B, 35105 },
+ { 0x701C, 35195 },
+ { 0x701D, 35210 },
+ { 0x701E, 34985 },
+ { 0x701F, 35280 },
+ { 0x7020, 35140 },
+ { 0x7021, 35025 },
+ { 0x7022, 35185 },
+ { 0x7023, 35050 },
+ { 0x7024, 35310 },
+ { 0x7025, 35065 },
+ { 0x7026, 35115 },
+ { 0x7028, 35230 },
+ { 0x7029, 35090 },
+ { 0x702A, 35200 },
+ { 0x702B, 34980 },
+ { 0x702C, 35085 },
+ { 0x702D, 35110 },
+ { 0x702E, 35015 },
+ { 0x702F, 35150 },
+ { 0x7030, 35030 },
+ { 0x7031, 35220 },
+ { 0x7032, 35225 },
+ { 0x7033, 34990 },
+ { 0x7034, 35130 },
+ { 0x7035, 34995 },
+ { 0x7036, 35265 },
+ { 0x7037, 35205 },
+ { 0x7038, 35295 },
+ { 0x7039, 35145 },
+ { 0x703A, 35155 },
+ { 0x703C, 35055 },
+ { 0x703D, 35290 },
+ { 0x703F, 35060 },
+ { 0x7040, 35080 },
+ { 0x7041, 35160 },
+ { 0x7042, 35325 },
+ { 0x7043, 35275 },
+ { 0x7044, 35335 },
+ { 0x7045, 35180 },
+ { 0x7046, 35100 },
+ { 0x7047, 35240 },
+ { 0x7048, 35300 },
+ { 0x7049, 35120 },
+ { 0x704A, 35260 },
+ { 0x704B, 35250 },
+ { 0x704C, 35330 },
+ { 0x704D, 35340 },
+ { 0x7050, 34349 },
+ { 0x7051, 34353 },
+ { 0x7052, 34357 },
+ { 0x7053, 34361 },
+ { 0x7054, 34365 },
+ { 0x7055, 34369 },
+ { 0x7056, 34373 },
+ { 0x7057, 34377 },
+ { 0x7058, 34381 },
+ { 0x7059, 34385 },
+ { 0x705A, 34389 },
+ { 0x705B, 34393 },
+ { 0x705C, 34397 },
+ { 0x705D, 34401 },
+ { 0x7080, 34405 },
+ { 0x7081, 34410 },
+ { 0x7082, 34415 },
+ { 0x7083, 34420 },
+ { 0x7084, 34750 },
+ { 0x7085, 34755 },
+ { 0x7086, 34760 },
+ { 0x7087, 34765 },
+ { 0x7088, 34770 },
+ { 0x7089, 34775 },
+ { 0x708A, 34780 },
+ { 0x708B, 34785 },
+ { 0x708C, 34790 },
+ { 0x708D, 34795 },
+ { 0x708E, 34425 },
+ { 0x708F, 34430 },
+ { 0x7090, 34435 },
+ { 0x7091, 34440 },
+ { 0x7092, 34445 },
+ { 0x7093, 34945 },
+ { 0x7094, 34950 },
+ { 0x7095, 34450 },
+ { 0x7096, 34455 },
+ { 0x7097, 34460 },
+ { 0x7098, 34955 },
+ { 0x7099, 34960 },
+ { 0x709A, 34464 },
+ { 0x709B, 34469 },
+ { 0x709C, 34474 },
+ { 0x709D, 34478 },
+ { 0x709E, 34483 },
+ { 0x709F, 34487 },
+ { 0x70A0, 34491 },
+ { 0x70A1, 34496 },
+ { 0x70A2, 34500 },
+ { 0x70A3, 34504 },
+ { 0x70A4, 34965 },
+ { 0x70A5, 34508 },
+ { 0x70A6, 34512 },
+ { 0x70A7, 34516 },
+ { 0x70A8, 34521 },
+ { 0x70A9, 34525 },
+ { 0x70AA, 34529 },
+ { 0x70AB, 34534 },
+ { 0x70AC, 34539 },
+ { 0x70AD, 34543 },
+ { 0x70AE, 34547 },
+ { 0x70AF, 34551 },
+ { 0x70B0, 34555 },
+ { 0x70B1, 34559 },
+ { 0x70B2, 34563 },
+ { 0x70B3, 34567 },
+ { 0x70B4, 34571 },
+ { 0x70B5, 34575 },
+ { 0x70B6, 34580 },
+ { 0x70B7, 34584 },
+ { 0x70B8, 34589 },
+ { 0x70B9, 34593 },
+ { 0x70BA, 34597 },
+ { 0x70BB, 34601 },
+ { 0x70BC, 34605 },
+ { 0x70BD, 34609 },
+ { 0x70BE, 34613 },
+ { 0x70BF, 34617 },
+ { 0x70C0, 34621 },
+ { 0x70C1, 34625 },
+ { 0x70C2, 34629 },
+ { 0x70C3, 34633 },
+ { 0x70C4, 34638 },
+ { 0x70C5, 34643 },
+ { 0x70C6, 34648 },
+ { 0x70C7, 34653 },
+ { 0x70C8, 34658 },
+ { 0x70C9, 34662 },
+ { 0x70CA, 34667 },
+ { 0x70CB, 34671 },
+ { 0x70CC, 34675 },
+ { 0x70CD, 34681 },
+ { 0x70CE, 34686 },
+ { 0x70CF, 34692 },
+ { 0x70D0, 34697 },
+ { 0x70D1, 34701 },
+ { 0x70D2, 34970 },
+ { 0x70D3, 34705 },
+ { 0x70D4, 34709 },
+ { 0x70D5, 34713 },
+ { 0x70D6, 34717 },
+ { 0x70D7, 34721 },
+ { 0x70D8, 34725 },
+ { 0x70D9, 34730 },
+ { 0x70DA, 34734 },
+ { 0x70DB, 34738 },
+ { 0x70DC, 34742 },
+ { 0x70DD, 34746 },
+ { 0x70DE, 34800 },
+ { 0x70DF, 34805 },
+ { 0x70E0, 34810 },
+ { 0x70E1, 34815 },
+ { 0x70E2, 34820 },
+ { 0x70E3, 34825 },
+ { 0x70E4, 34830 },
+ { 0x70E5, 34835 },
+ { 0x70E6, 34840 },
+ { 0x70E7, 34845 },
+ { 0x70E8, 34850 },
+ { 0x70E9, 34855 },
+ { 0x70EA, 34860 },
+ { 0x70EB, 34865 },
+ { 0x70EC, 34870 },
+ { 0x70ED, 34875 },
+ { 0x70EE, 34880 },
+ { 0x70EF, 34885 },
+ { 0x70F0, 34890 },
+ { 0x70F1, 34895 },
+ { 0x70F2, 34900 },
+ { 0x70F3, 34905 },
+ { 0x70F4, 34910 },
+ { 0x70F5, 34915 },
+ { 0x70F6, 34920 },
+ { 0x70F7, 34925 },
+ { 0x70F8, 34930 },
+ { 0x70F9, 34935 },
+ { 0x70FA, 34940 },
+ { 0x7100, 23485 },
+ { 0x7101, 23481 },
+ { 0x7102, 23489 },
+ { 0x7107, 23497 },
+ { 0x7108, 23526 },
+ { 0x7109, 23613 },
+ { 0x710A, 23548 },
+ { 0x710B, 23537 },
+ { 0x710C, 23508 },
+ { 0x710D, 23595 },
+ { 0x710E, 23570 },
+ { 0x710F, 23559 },
+ { 0x7110, 23519 },
+ { 0x7111, 23645 },
+ { 0x7112, 23638 },
+ { 0x7113, 23588 },
+ { 0x7114, 23581 },
+ { 0x7115, 23606 },
+ { 0x7116, 23652 },
+ { 0x7117, 23624 },
+ { 0x7118, 23631 },
+ { 0x7119, 23500 },
+ { 0x711A, 23529 },
+ { 0x711B, 23616 },
+ { 0x711C, 23551 },
+ { 0x711D, 23540 },
+ { 0x711E, 23511 },
+ { 0x711F, 23598 },
+ { 0x7120, 23573 },
+ { 0x7121, 23562 },
+ { 0x7122, 23504 },
+ { 0x7123, 23533 },
+ { 0x7124, 23620 },
+ { 0x7125, 23555 },
+ { 0x7126, 23544 },
+ { 0x7127, 23515 },
+ { 0x7128, 23602 },
+ { 0x7129, 23577 },
+ { 0x712A, 23566 },
+ { 0x712B, 23522 },
+ { 0x712C, 23648 },
+ { 0x712D, 23641 },
+ { 0x712E, 23591 },
+ { 0x712F, 23584 },
+ { 0x7130, 23609 },
+ { 0x7131, 23655 },
+ { 0x7132, 23627 },
+ { 0x7133, 23634 },
+ { 0x7137, 23659 },
+ { 0x7138, 23663 },
+ { 0x7139, 23675 },
+ { 0x713A, 23667 },
+ { 0x713B, 23671 },
+ { 0x713C, 23476 },
+ { 0x713D, 23492 },
+ { 0x713E, 23683 },
+ { 0x713F, 23679 },
+ { 0x7140, 13133 },
+ { 0x7141, 13111 },
+ { 0x7142, 13116 },
+ { 0x7143, 13171 },
+ { 0x7144, 13213 },
+ { 0x7145, 13175 },
+ { 0x7146, 13202 },
+ { 0x7147, 13227 },
+ { 0x7148, 13197 },
+ { 0x7149, 13160 },
+ { 0x714A, 13222 },
+ { 0x714B, 13127 },
+ { 0x714C, 13186 },
+ { 0x714D, 13144 },
+ { 0x714E, 13207 },
+ { 0x714F, 13192 },
+ { 0x7150, 13155 },
+ { 0x7151, 13217 },
+ { 0x7152, 13121 },
+ { 0x7153, 13180 },
+ { 0x7154, 13138 },
+ { 0x7155, 13165 },
+ { 0x7156, 13232 },
+ { 0x7157, 13150 },
+ { 0x7158, 13248 },
+ { 0x7159, 13263 },
+ { 0x715A, 13331 },
+ { 0x715B, 13317 },
+ { 0x715C, 13281 },
+ { 0x715D, 13253 },
+ { 0x715E, 13321 },
+ { 0x715F, 13353 },
+ { 0x7160, 13343 },
+ { 0x7161, 13347 },
+ { 0x7162, 13335 },
+ { 0x7163, 13313 },
+ { 0x7164, 13277 },
+ { 0x7165, 13304 },
+ { 0x7166, 13362 },
+ { 0x7167, 13366 },
+ { 0x7168, 13339 },
+ { 0x7169, 13295 },
+ { 0x716A, 13267 },
+ { 0x716B, 13299 },
+ { 0x716C, 13326 },
+ { 0x716D, 13357 },
+ { 0x716E, 13285 },
+ { 0x716F, 13308 },
+ { 0x7170, 13238 },
+ { 0x7171, 13272 },
+ { 0x7172, 13290 },
+ { 0x7173, 13243 },
+ { 0x7174, 13258 },
+ { 0x7175, 10649 },
+ { 0x7176, 10653 },
+ { 0x7177, 10674 },
+ { 0x7178, 11894 },
+ { 0x7179, 10694 },
+ { 0x717A, 12082 },
+ { 0x717B, 13022 },
+ { 0x717C, 10689 },
+ { 0x717D, 10670 },
+ { 0x717E, 11890 },
+ { 0x717F, 10685 },
+ { 0x7180, 10681 },
+ { 0x7181, 13056 },
+ { 0x7182, 13027 },
+ { 0x7183, 10717 },
+ { 0x7184, 12079 },
+ { 0x7185, 12085 },
+ { 0x7186, 12021 },
+ { 0x7187, 12018 },
+ { 0x7188, 12024 },
+ { 0x7189, 13067 },
+ { 0x718A, 10697 },
+ { 0x7190, 22109 },
+ { 0x7191, 22013 },
+ { 0x7192, 22121 },
+ { 0x7193, 22112 },
+ { 0x7194, 22016 },
+ { 0x7195, 22115 },
+ { 0x7196, 22118 },
+ { 0x7197, 22130 },
+ { 0x7198, 22133 },
+ { 0x7199, 22127 },
+ { 0x719A, 22010 },
+ { 0x719B, 22124 },
+ { 0x71D0, 55326 },
+ { 0x71D1, 55265 },
+ { 0x71D2, 55306 },
+ { 0x71D3, 55278 },
+ { 0x71D4, 55211 },
+ { 0x71D5, 55245 },
+ { 0x71D6, 55261 },
+ { 0x71D7, 55294 },
+ { 0x71D8, 55237 },
+ { 0x71D9, 55202 },
+ { 0x71DA, 55145 },
+ { 0x71DB, 55270 },
+ { 0x71DC, 55165 },
+ { 0x71DD, 55298 },
+ { 0x71DE, 55282 },
+ { 0x71DF, 55161 },
+ { 0x71E0, 55153 },
+ { 0x71E1, 55311 },
+ { 0x71E2, 55315 },
+ { 0x71E3, 55253 },
+ { 0x71E4, 55169 },
+ { 0x71E5, 55228 },
+ { 0x71E6, 55249 },
+ { 0x71E7, 55274 },
+ { 0x71E8, 55189 },
+ { 0x71E9, 55181 },
+ { 0x71EA, 55177 },
+ { 0x71EB, 55206 },
+ { 0x71EC, 55149 },
+ { 0x71ED, 55157 },
+ { 0x71EE, 55215 },
+ { 0x71EF, 55173 },
+ { 0x71F0, 55241 },
+ { 0x71F1, 55141 },
+ { 0x71F2, 55223 },
+ { 0x71F3, 55193 },
+ { 0x71F4, 55286 },
+ { 0x71F5, 55290 },
+ { 0x71F6, 55185 },
+ { 0x71F7, 55136 },
+ { 0x71F8, 55219 },
+ { 0x71F9, 55257 },
+ { 0x71FA, 55302 },
+ { 0x71FB, 55232 },
+ { 0x71FC, 55197 },
+ { 0x71FD, 55320 },
+ { 0x7280, 35345 },
+ { 0x7281, 35354 },
+ { 0x7282, 35348 },
+ { 0x7283, 35411 },
+ { 0x7284, 35357 },
+ { 0x7285, 35351 },
+ { 0x7286, 35363 },
+ { 0x7287, 35399 },
+ { 0x7288, 35405 },
+ { 0x7289, 35426 },
+ { 0x728A, 35366 },
+ { 0x728B, 35369 },
+ { 0x728C, 35384 },
+ { 0x728D, 35372 },
+ { 0x728E, 35375 },
+ { 0x728F, 35378 },
+ { 0x7290, 35420 },
+ { 0x7291, 35423 },
+ { 0x7292, 35396 },
+ { 0x7293, 35381 },
+ { 0x7294, 35417 },
+ { 0x7295, 35387 },
+ { 0x7296, 35390 },
+ { 0x7297, 35393 },
+ { 0x7298, 35429 },
+ { 0x7299, 35408 },
+ { 0x729A, 35414 },
+ { 0x729B, 35360 },
+ { 0x729C, 35402 },
+ { 0x72A0, 30318 },
+ { 0x72A1, 30405 },
+ { 0x72A2, 30324 },
+ { 0x72A3, 30339 },
+ { 0x72A4, 30447 },
+ { 0x72A5, 30357 },
+ { 0x72A6, 30390 },
+ { 0x72A7, 30372 },
+ { 0x72A8, 30354 },
+ { 0x72A9, 30321 },
+ { 0x72AA, 30342 },
+ { 0x72AB, 30348 },
+ { 0x72AC, 30375 },
+ { 0x72AD, 30363 },
+ { 0x72AE, 30411 },
+ { 0x72AF, 30438 },
+ { 0x72B0, 30360 },
+ { 0x72B1, 30450 },
+ { 0x72B2, 30366 },
+ { 0x72B3, 30402 },
+ { 0x72B4, 30369 },
+ { 0x72B5, 30345 },
+ { 0x72B6, 30444 },
+ { 0x72B7, 30351 },
+ { 0x72B8, 30414 },
+ { 0x72B9, 30333 },
+ { 0x72BA, 30327 },
+ { 0x72BB, 30462 },
+ { 0x72BC, 30336 },
+ { 0x72BD, 30387 },
+ { 0x72BE, 30396 },
+ { 0x72BF, 30423 },
+ { 0x72C0, 30330 },
+ { 0x72C1, 30381 },
+ { 0x72C2, 30417 },
+ { 0x72C3, 30441 },
+ { 0x72C4, 30399 },
+ { 0x72C5, 30384 },
+ { 0x72C6, 30453 },
+ { 0x72C7, 30420 },
+ { 0x72C8, 30456 },
+ { 0x72C9, 30408 },
+ { 0x72CA, 30393 },
+ { 0x72CB, 30429 },
+ { 0x72CC, 30432 },
+ { 0x72CD, 30435 },
+ { 0x72CE, 30426 },
+ { 0x72CF, 30378 },
+ { 0x72D0, 30459 },
+ { 0x7300, 6815 },
+ { 0x7301, 6835 },
+ { 0x7302, 6879 },
+ { 0x7303, 6839 },
+ { 0x7304, 6819 },
+ { 0x7305, 6899 },
+ { 0x7306, 6903 },
+ { 0x7307, 6867 },
+ { 0x7308, 6935 },
+ { 0x7309, 6823 },
+ { 0x730A, 6875 },
+ { 0x730B, 6847 },
+ { 0x730C, 6851 },
+ { 0x730D, 6855 },
+ { 0x730E, 6919 },
+ { 0x730F, 6827 },
+ { 0x7310, 6887 },
+ { 0x7311, 6931 },
+ { 0x7312, 6883 },
+ { 0x7313, 6859 },
+ { 0x7314, 6863 },
+ { 0x7315, 6891 },
+ { 0x7316, 6831 },
+ { 0x7317, 6911 },
+ { 0x7318, 6927 },
+ { 0x7319, 6923 },
+ { 0x731A, 6843 },
+ { 0x731B, 6915 },
+ { 0x731C, 6907 },
+ { 0x731D, 6871 },
+ { 0x731E, 6895 },
+ { 0x7320, 6939 },
+ { 0x7321, 6947 },
+ { 0x7322, 6943 },
+ { 0x7323, 6951 },
+ { 0x7330, 31802 },
+ { 0x7331, 31869 },
+ { 0x7332, 31808 },
+ { 0x7333, 31805 },
+ { 0x7334, 31857 },
+ { 0x7335, 31875 },
+ { 0x7336, 31814 },
+ { 0x7337, 31811 },
+ { 0x7338, 31866 },
+ { 0x7339, 31796 },
+ { 0x733A, 31833 },
+ { 0x733B, 31836 },
+ { 0x733C, 31839 },
+ { 0x733D, 31860 },
+ { 0x733E, 31799 },
+ { 0x733F, 31821 },
+ { 0x7340, 31872 },
+ { 0x7341, 31863 },
+ { 0x7342, 31845 },
+ { 0x7343, 31848 },
+ { 0x7344, 31851 },
+ { 0x7345, 31854 },
+ { 0x7346, 31824 },
+ { 0x7347, 31830 },
+ { 0x7348, 31827 },
+ { 0x7349, 31842 },
+ { 0x734A, 31817 },
+ { 0x7380, 55959 },
+ { 0x7381, 55962 },
+ { 0x7382, 55986 },
+ { 0x7383, 55941 },
+ { 0x7384, 55983 },
+ { 0x7385, 55920 },
+ { 0x7386, 55929 },
+ { 0x7387, 55980 },
+ { 0x7388, 55968 },
+ { 0x7389, 55953 },
+ { 0x738A, 55956 },
+ { 0x738B, 55938 },
+ { 0x738C, 55977 },
+ { 0x738D, 55992 },
+ { 0x738E, 55944 },
+ { 0x738F, 55965 },
+ { 0x7390, 55947 },
+ { 0x7391, 55932 },
+ { 0x7392, 55998 },
+ { 0x7393, 55935 },
+ { 0x7394, 55923 },
+ { 0x7395, 55974 },
+ { 0x7396, 55971 },
+ { 0x7397, 55995 },
+ { 0x7398, 56001 },
+ { 0x7399, 55989 },
+ { 0x739A, 55926 },
+ { 0x739B, 55914 },
+ { 0x739C, 55917 },
+ { 0x739D, 55950 },
+ { 0x739F, 55911 },
+ { 0x73A0, 6955 },
+ { 0x73A1, 6959 },
+ { 0x73A2, 6963 },
+ { 0x73A3, 7011 },
+ { 0x73A4, 7015 },
+ { 0x73A5, 6991 },
+ { 0x73A6, 6995 },
+ { 0x73A7, 7075 },
+ { 0x73A8, 6971 },
+ { 0x73A9, 7003 },
+ { 0x73AA, 7007 },
+ { 0x73AB, 7059 },
+ { 0x73AC, 7063 },
+ { 0x73AD, 6975 },
+ { 0x73AE, 6979 },
+ { 0x73AF, 6983 },
+ { 0x73B0, 7095 },
+ { 0x73B1, 7043 },
+ { 0x73B2, 6967 },
+ { 0x73B3, 6987 },
+ { 0x73B4, 7035 },
+ { 0x73B5, 7039 },
+ { 0x73B6, 7023 },
+ { 0x73B7, 7027 },
+ { 0x73B8, 7031 },
+ { 0x73B9, 7079 },
+ { 0x73BA, 7067 },
+ { 0x73BB, 7071 },
+ { 0x73BC, 7047 },
+ { 0x73BD, 7051 },
+ { 0x73BE, 7019 },
+ { 0x73BF, 7055 },
+ { 0x73C0, 7083 },
+ { 0x73C1, 7087 },
+ { 0x73C2, 7091 },
+ { 0x73C3, 6999 },
+ { 0x73C8, 7111 },
+ { 0x73C9, 7119 },
+ { 0x73CA, 7123 },
+ { 0x73CB, 7127 },
+ { 0x73CC, 7107 },
+ { 0x73CD, 7115 },
+ { 0x73CE, 7099 },
+ { 0x73CF, 7103 },
+ { 0x73D0, 7131 },
+ { 0x73D1, 7135 },
+ { 0x73D2, 7143 },
+ { 0x73D3, 7139 },
+ { 0x73D4, 7147 },
+ { 0x73D5, 7151 },
+ { 0x7400, 40249 },
+ { 0x7401, 40244 },
+ { 0x7402, 40239 },
+ { 0x7403, 40259 },
+ { 0x7404, 40254 },
+ { 0x7405, 40264 },
+ { 0x7406, 40287 },
+ { 0x7407, 40282 },
+ { 0x7408, 40277 },
+ { 0x7409, 40297 },
+ { 0x740A, 40292 },
+ { 0x740B, 40302 },
+ { 0x740C, 40139 },
+ { 0x740D, 40175 },
+ { 0x740E, 40179 },
+ { 0x740F, 40227 },
+ { 0x7410, 40135 },
+ { 0x7411, 40215 },
+ { 0x7412, 40183 },
+ { 0x7413, 40219 },
+ { 0x7414, 40187 },
+ { 0x7415, 40235 },
+ { 0x7416, 40207 },
+ { 0x7417, 40211 },
+ { 0x7418, 40203 },
+ { 0x7419, 40143 },
+ { 0x741A, 40223 },
+ { 0x741B, 40199 },
+ { 0x741C, 40269 },
+ { 0x741D, 40163 },
+ { 0x741E, 40231 },
+ { 0x741F, 40195 },
+ { 0x7420, 40273 },
+ { 0x7421, 40159 },
+ { 0x7422, 40147 },
+ { 0x7423, 40151 },
+ { 0x7424, 40155 },
+ { 0x7425, 40191 },
+ { 0x7426, 40171 },
+ { 0x7427, 40167 },
+ { 0x7428, 40077 },
+ { 0x7429, 40072 },
+ { 0x742A, 40067 },
+ { 0x742B, 40087 },
+ { 0x742C, 40082 },
+ { 0x742D, 40092 },
+ { 0x742E, 40115 },
+ { 0x742F, 40110 },
+ { 0x7430, 40105 },
+ { 0x7431, 40125 },
+ { 0x7432, 40120 },
+ { 0x7433, 40130 },
+ { 0x7434, 39967 },
+ { 0x7435, 40003 },
+ { 0x7436, 40007 },
+ { 0x7437, 40055 },
+ { 0x7438, 39963 },
+ { 0x7439, 40043 },
+ { 0x743A, 40011 },
+ { 0x743B, 40047 },
+ { 0x743C, 40015 },
+ { 0x743D, 40063 },
+ { 0x743E, 40035 },
+ { 0x743F, 40039 },
+ { 0x7440, 40031 },
+ { 0x7441, 39971 },
+ { 0x7442, 40051 },
+ { 0x7443, 40027 },
+ { 0x7444, 40097 },
+ { 0x7445, 39991 },
+ { 0x7446, 40059 },
+ { 0x7447, 40023 },
+ { 0x7448, 40101 },
+ { 0x7449, 39987 },
+ { 0x744A, 39975 },
+ { 0x744B, 39979 },
+ { 0x744C, 39983 },
+ { 0x744D, 40019 },
+ { 0x744E, 39999 },
+ { 0x744F, 39995 },
+ { 0x7450, 43139 },
+ { 0x7451, 43103 },
+ { 0x7452, 43127 },
+ { 0x7453, 43079 },
+ { 0x7454, 43163 },
+ { 0x7455, 43040 },
+ { 0x7456, 43145 },
+ { 0x7457, 43166 },
+ { 0x7458, 43112 },
+ { 0x7459, 43124 },
+ { 0x745A, 43064 },
+ { 0x745B, 43121 },
+ { 0x745C, 43082 },
+ { 0x745D, 43106 },
+ { 0x745E, 43148 },
+ { 0x745F, 43118 },
+ { 0x7460, 43169 },
+ { 0x7461, 43160 },
+ { 0x7462, 43109 },
+ { 0x7463, 43157 },
+ { 0x7464, 43130 },
+ { 0x7465, 43133 },
+ { 0x7466, 43031 },
+ { 0x7467, 43073 },
+ { 0x7468, 43058 },
+ { 0x7469, 43046 },
+ { 0x746A, 43034 },
+ { 0x746B, 43151 },
+ { 0x746C, 43100 },
+ { 0x746D, 43028 },
+ { 0x746E, 43142 },
+ { 0x746F, 43091 },
+ { 0x7470, 43070 },
+ { 0x7471, 43049 },
+ { 0x7472, 43088 },
+ { 0x7473, 43043 },
+ { 0x7474, 43094 },
+ { 0x7475, 43136 },
+ { 0x7476, 43097 },
+ { 0x7477, 43061 },
+ { 0x7478, 43055 },
+ { 0x7479, 43037 },
+ { 0x747A, 43052 },
+ { 0x747B, 43076 },
+ { 0x747C, 43154 },
+ { 0x747D, 43067 },
+ { 0x747E, 43085 },
+ { 0x747F, 43115 },
+ { 0x7480, 42944 },
+ { 0x7481, 42899 },
+ { 0x7482, 42926 },
+ { 0x7483, 42914 },
+ { 0x7484, 42929 },
+ { 0x7485, 42938 },
+ { 0x7486, 42950 },
+ { 0x7487, 42920 },
+ { 0x7488, 42923 },
+ { 0x7489, 42968 },
+ { 0x748A, 42935 },
+ { 0x748B, 42947 },
+ { 0x748C, 42908 },
+ { 0x748D, 42905 },
+ { 0x748E, 42965 },
+ { 0x748F, 42953 },
+ { 0x7490, 42956 },
+ { 0x7491, 42959 },
+ { 0x7492, 42962 },
+ { 0x7493, 42941 },
+ { 0x7494, 42911 },
+ { 0x7495, 42932 },
+ { 0x7496, 42881 },
+ { 0x7497, 42884 },
+ { 0x7498, 42887 },
+ { 0x7499, 42890 },
+ { 0x749A, 42893 },
+ { 0x749B, 42896 },
+ { 0x749C, 42902 },
+ { 0x749D, 42917 },
+ { 0x74A0, 42869 },
+ { 0x74A1, 42851 },
+ { 0x74A2, 42857 },
+ { 0x74A3, 42878 },
+ { 0x74A4, 42863 },
+ { 0x74A5, 42860 },
+ { 0x74A6, 42854 },
+ { 0x74A7, 42875 },
+ { 0x74A8, 42872 },
+ { 0x74A9, 42866 },
+ { 0x7800, 39794 },
+ { 0x7801, 39797 },
+ { 0x7802, 39800 },
+ { 0x7803, 39803 },
+ { 0x7804, 39806 },
+ { 0x7805, 39809 },
+ { 0x7808, 39812 },
+ { 0x780A, 39815 },
+ { 0x780B, 39818 },
+ { 0x780C, 39821 },
+ { 0x780D, 39824 },
+ { 0x780E, 39827 },
+ { 0x780F, 39830 },
+ { 0x7810, 39833 },
+ { 0x7811, 39836 },
+ { 0x7812, 39839 },
+ { 0x7813, 39842 },
+ { 0x7814, 39845 },
+ { 0x7815, 39848 },
+ { 0x7816, 39851 },
+ { 0x7817, 39854 },
+ { 0x7818, 39857 },
+ { 0x7819, 39860 },
+ { 0x781A, 39863 },
+ { 0x781B, 39866 },
+ { 0x781C, 39869 },
+ { 0x781D, 39872 },
+ { 0x781E, 39875 },
+ { 0x781F, 39878 },
+ { 0x7820, 39881 },
+ { 0x7821, 39884 },
+ { 0x7822, 39887 },
+ { 0x7823, 39890 },
+ { 0x7824, 39893 },
+ { 0x7825, 39896 },
+ { 0x7826, 39899 },
+ { 0x7827, 39902 },
+ { 0x7828, 39905 },
+ { 0x7829, 39908 },
+ { 0x782A, 39911 },
+ { 0x782B, 39914 },
+ { 0x782C, 39917 },
+ { 0x782D, 39920 },
+ { 0x782E, 39923 },
+ { 0x782F, 39926 },
+ { 0x7830, 39929 },
+ { 0x7831, 39932 },
+ { 0x7832, 39935 },
+ { 0x7833, 39938 },
+ { 0x7834, 39941 },
+ { 0x7835, 39944 },
+ { 0x7837, 39947 },
+ { 0x7838, 39950 },
+ { 0x783C, 39953 },
+ { 0x783F, 39956 },
+ { 0x7900, 67899 },
+ { 0x7901, 67902 },
+ { 0x7902, 67938 },
+ { 0x7903, 67935 },
+ { 0x7904, 67890 },
+ { 0x7905, 67926 },
+ { 0x7906, 67932 },
+ { 0x7907, 67905 },
+ { 0x7908, 67923 },
+ { 0x7909, 67929 },
+ { 0x790A, 67908 },
+ { 0x790B, 67941 },
+ { 0x790C, 67911 },
+ { 0x790D, 67914 },
+ { 0x790E, 67950 },
+ { 0x790F, 67896 },
+ { 0x7910, 67893 },
+ { 0x7911, 67947 },
+ { 0x7912, 67917 },
+ { 0x7913, 67944 },
+ { 0x7914, 67953 },
+ { 0x7915, 67920 },
+ { 0x7916, 67956 },
+ { 0x7917, 67963 },
+ { 0x7918, 67966 },
+ { 0x7919, 67959 },
+ { 0x791F, 67887 },
+ { 0x7920, 35432 },
+ { 0x7921, 35435 },
+ { 0x7922, 35450 },
+ { 0x7923, 35441 },
+ { 0x7924, 35444 },
+ { 0x7925, 35486 },
+ { 0x7926, 35453 },
+ { 0x7927, 35489 },
+ { 0x7928, 35456 },
+ { 0x7929, 35459 },
+ { 0x792A, 35462 },
+ { 0x792B, 35465 },
+ { 0x792C, 35468 },
+ { 0x792D, 35474 },
+ { 0x792E, 35504 },
+ { 0x792F, 35480 },
+ { 0x7930, 35483 },
+ { 0x7931, 35447 },
+ { 0x7932, 35471 },
+ { 0x7933, 35477 },
+ { 0x7934, 35507 },
+ { 0x7935, 35492 },
+ { 0x7936, 35495 },
+ { 0x7937, 35498 },
+ { 0x7938, 35501 },
+ { 0x7939, 35438 },
+ { 0x793F, 35510 },
+ { 0x7A00, 67726 },
+ { 0x7A01, 67705 },
+ { 0x7A02, 67713 },
+ { 0x7A03, 67717 },
+ { 0x7A05, 67701 },
+ { 0x7A06, 67709 },
+ { 0x7A0C, 67722 },
+ { 0x7A0D, 67678 },
+ { 0x7A0E, 67686 },
+ { 0x7A0F, 67683 },
+ { 0x7A10, 67747 },
+ { 0x7A11, 67795 },
+ { 0x7A12, 67738 },
+ { 0x7A13, 67792 },
+ { 0x7A15, 67732 },
+ { 0x7A16, 67783 },
+ { 0x7A17, 67744 },
+ { 0x7A19, 67804 },
+ { 0x7A1A, 67819 },
+ { 0x7A1B, 67825 },
+ { 0x7A1C, 67786 },
+ { 0x7A1D, 67822 },
+ { 0x7A1E, 67801 },
+ { 0x7A1F, 67768 },
+ { 0x7A20, 67816 },
+ { 0x7A21, 67735 },
+ { 0x7A22, 67789 },
+ { 0x7A23, 67756 },
+ { 0x7A24, 67759 },
+ { 0x7A25, 67807 },
+ { 0x7A26, 67729 },
+ { 0x7A27, 67780 },
+ { 0x7A28, 67753 },
+ { 0x7A29, 67774 },
+ { 0x7A2A, 67762 },
+ { 0x7A2B, 67750 },
+ { 0x7A2C, 67771 },
+ { 0x7A2D, 67810 },
+ { 0x7A2E, 67813 },
+ { 0x7A2F, 67765 },
+ { 0x7A30, 67777 },
+ { 0x7A31, 67741 },
+ { 0x7A32, 67798 },
+ { 0x7A33, 67828 },
+ { 0x7A38, 67667 },
+ { 0x7A39, 67675 },
+ { 0x7A3A, 67671 },
+ { 0x7A3F, 67845 },
+ { 0x7A40, 67689 },
+ { 0x7A41, 67692 },
+ { 0x7A42, 67698 },
+ { 0x7A43, 67695 },
+ { 0x7A44, 67839 },
+ { 0x7A45, 67842 },
+ { 0x7A46, 67831 },
+ { 0x7A47, 67835 },
+ { 0x7A50, 67847 },
+ { 0x7A51, 67859 },
+ { 0x7A52, 67863 },
+ { 0x7A53, 67870 },
+ { 0x7A54, 67874 },
+ { 0x7A55, 67856 },
+ { 0x7A56, 67850 },
+ { 0x7A57, 67866 },
+ { 0x7A58, 67853 },
+ { 0x8000, 58351 },
+ { 0x8001, 58354 },
+ { 0x8002, 58364 },
+ { 0x8003, 58379 },
+ { 0x8004, 58359 },
+ { 0x8005, 58369 },
+ { 0x8006, 58390 },
+ { 0x8007, 58385 },
+ { 0x8008, 58374 },
+ { 0x8009, 58460 },
+ { 0x800A, 58463 },
+ { 0x800B, 58495 },
+ { 0x800C, 58500 },
+ { 0x800D, 58484 },
+ { 0x800E, 58506 },
+ { 0x800F, 58479 },
+ { 0x8010, 58489 },
+ { 0x8011, 58512 },
+ { 0x8012, 58517 },
+ { 0x8013, 58522 },
+ { 0x8014, 58470 },
+ { 0x8015, 58466 },
+ { 0x8016, 59529 },
+ { 0x8017, 59555 },
+ { 0x8018, 59539 },
+ { 0x8019, 59532 },
+ { 0x801A, 59545 },
+ { 0x801B, 59550 },
+ { 0x801C, 58527 },
+ { 0x801D, 58530 },
+ { 0x801E, 58533 },
+ { 0x801F, 58538 },
+ { 0x8020, 58545 },
+ { 0x8021, 58548 },
+ { 0x8022, 58573 },
+ { 0x8023, 58578 },
+ { 0x8024, 58553 },
+ { 0x8025, 58583 },
+ { 0x8026, 58558 },
+ { 0x8027, 58563 },
+ { 0x8028, 58568 },
+ { 0x8029, 61180 },
+ { 0x802A, 61793 },
+ { 0x802B, 61183 },
+ { 0x802C, 61186 },
+ { 0x802D, 58588 },
+ { 0x802E, 58591 },
+ { 0x802F, 58611 },
+ { 0x8030, 58602 },
+ { 0x8031, 58596 },
+ { 0x8032, 61796 },
+ { 0x8033, 61191 },
+ { 0x8034, 61194 },
+ { 0x8035, 61197 },
+ { 0x8036, 61799 },
+ { 0x8037, 61802 },
+ { 0x8038, 59560 },
+ { 0x8039, 59600 },
+ { 0x803A, 59563 },
+ { 0x803B, 59588 },
+ { 0x803C, 59568 },
+ { 0x803D, 59575 },
+ { 0x803E, 61202 },
+ { 0x803F, 62374 },
+ { 0x8040, 58616 },
+ { 0x8041, 59605 },
+ { 0x8042, 61205 },
+ { 0x8043, 62377 },
+ { 0x8044, 59608 },
+ { 0x8045, 59611 },
+ { 0x8046, 61805 },
+ { 0x8047, 59616 },
+ { 0x8048, 61808 },
+ { 0x8049, 58619 },
+ { 0x804A, 58622 },
+ { 0x804B, 58627 },
+ { 0x804C, 58632 },
+ { 0x804D, 58638 },
+ { 0x804E, 58641 },
+ { 0x804F, 58647 },
+ { 0x8050, 58653 },
+ { 0x8051, 61811 },
+ { 0x8052, 61814 },
+ { 0x8053, 59619 },
+ { 0x8054, 61208 },
+ { 0x8055, 58658 },
+ { 0x8056, 59622 },
+ { 0x8057, 59625 },
+ { 0x8058, 59751 },
+ { 0x8059, 59769 },
+ { 0x805A, 59633 },
+ { 0x805B, 59639 },
+ { 0x805C, 59645 },
+ { 0x805D, 59653 },
+ { 0x805E, 59757 },
+ { 0x805F, 59719 },
+ { 0x8060, 59659 },
+ { 0x8061, 59665 },
+ { 0x8062, 59671 },
+ { 0x8063, 59725 },
+ { 0x8064, 59679 },
+ { 0x8065, 59685 },
+ { 0x8066, 59691 },
+ { 0x8067, 59731 },
+ { 0x8068, 59699 },
+ { 0x8069, 59737 },
+ { 0x806A, 59705 },
+ { 0x806B, 59763 },
+ { 0x806C, 59711 },
+ { 0x806D, 59745 },
+ { 0x806E, 59775 },
+ { 0x806F, 59778 },
+ { 0x8070, 61819 },
+ { 0x8071, 61822 },
+ { 0x8072, 58661 },
+ { 0x8073, 59781 },
+ { 0x8074, 59784 },
+ { 0x8075, 59787 },
+ { 0x8076, 61211 },
+ { 0x8077, 59792 },
+ { 0x8078, 59795 },
+ { 0x8079, 61214 },
+ { 0x807A, 58664 },
+ { 0x807B, 58671 },
+ { 0x807C, 58667 },
+ { 0x807D, 58676 },
+ { 0x807E, 59802 },
+ { 0x807F, 59805 },
+ { 0x8080, 61217 },
+ { 0x8081, 59810 },
+ { 0x8082, 61825 },
+ { 0x8083, 59813 },
+ { 0x8084, 59816 },
+ { 0x8085, 61220 },
+ { 0x8086, 61223 },
+ { 0x8087, 61227 },
+ { 0x8088, 61232 },
+ { 0x8089, 61235 },
+ { 0x808A, 58396 },
+ { 0x808B, 58407 },
+ { 0x808C, 58399 },
+ { 0x808D, 58680 },
+ { 0x808E, 58683 },
+ { 0x808F, 58702 },
+ { 0x8090, 58697 },
+ { 0x8091, 58707 },
+ { 0x8092, 58712 },
+ { 0x8093, 58692 },
+ { 0x8094, 61238 },
+ { 0x8095, 61241 },
+ { 0x8096, 58717 },
+ { 0x8097, 58720 },
+ { 0x8098, 58728 },
+ { 0x8099, 58733 },
+ { 0x809A, 58723 },
+ { 0x809B, 58743 },
+ { 0x809C, 58748 },
+ { 0x809D, 58739 },
+ { 0x809E, 61244 },
+ { 0x809F, 61828 },
+ { 0x80A0, 61247 },
+ { 0x80A1, 61250 },
+ { 0x80A2, 61253 },
+ { 0x80A3, 61258 },
+ { 0x80A4, 61265 },
+ { 0x80A5, 61274 },
+ { 0x80A6, 61315 },
+ { 0x80A7, 61338 },
+ { 0x80A8, 61344 },
+ { 0x80A9, 61279 },
+ { 0x80AA, 61284 },
+ { 0x80AB, 61320 },
+ { 0x80AC, 61351 },
+ { 0x80AD, 61356 },
+ { 0x80AE, 61326 },
+ { 0x80AF, 61290 },
+ { 0x80B0, 61331 },
+ { 0x80B1, 61295 },
+ { 0x80B2, 61300 },
+ { 0x80B3, 61305 },
+ { 0x80B4, 61310 },
+ { 0x80B5, 58753 },
+ { 0x80B6, 58756 },
+ { 0x80B7, 59819 },
+ { 0x80B8, 59827 },
+ { 0x80B9, 59836 },
+ { 0x80BA, 59843 },
+ { 0x80BB, 59950 },
+ { 0x80BC, 59855 },
+ { 0x80BD, 59958 },
+ { 0x80BE, 60106 },
+ { 0x80BF, 59963 },
+ { 0x80C0, 59968 },
+ { 0x80C1, 59975 },
+ { 0x80C2, 59980 },
+ { 0x80C3, 59860 },
+ { 0x80C4, 59865 },
+ { 0x80C5, 59987 },
+ { 0x80C6, 59994 },
+ { 0x80C7, 59870 },
+ { 0x80C8, 59875 },
+ { 0x80C9, 59882 },
+ { 0x80CA, 59887 },
+ { 0x80CB, 60113 },
+ { 0x80CC, 59999 },
+ { 0x80CD, 59895 },
+ { 0x80CE, 60004 },
+ { 0x80CF, 60009 },
+ { 0x80D0, 60119 },
+ { 0x80D1, 59900 },
+ { 0x80D2, 60016 },
+ { 0x80D3, 60021 },
+ { 0x80D4, 59909 },
+ { 0x80D5, 60126 },
+ { 0x80D6, 60028 },
+ { 0x80D7, 60034 },
+ { 0x80D8, 60043 },
+ { 0x80D9, 60141 },
+ { 0x80DA, 60048 },
+ { 0x80DB, 60053 },
+ { 0x80DC, 60060 },
+ { 0x80DD, 59916 },
+ { 0x80DE, 59921 },
+ { 0x80DF, 59928 },
+ { 0x80E0, 60067 },
+ { 0x80E1, 60072 },
+ { 0x80E2, 59933 },
+ { 0x80E3, 60079 },
+ { 0x80E4, 60084 },
+ { 0x80E5, 60089 },
+ { 0x80E6, 60094 },
+ { 0x80E7, 60131 },
+ { 0x80E8, 60101 },
+ { 0x80E9, 60136 },
+ { 0x80EA, 59850 },
+ { 0x80EB, 59938 },
+ { 0x80EC, 59943 },
+ { 0x80ED, 59822 },
+ { 0x80EE, 61362 },
+ { 0x80EF, 61365 },
+ { 0x80F0, 60146 },
+ { 0x80F1, 60149 },
+ { 0x80F2, 60157 },
+ { 0x80F3, 60160 },
+ { 0x80F4, 61831 },
+ { 0x80F5, 60169 },
+ { 0x80F6, 60172 },
+ { 0x80F7, 61370 },
+ { 0x80F8, 61378 },
+ { 0x80F9, 61373 },
+ { 0x80FA, 61382 },
+ { 0x80FB, 60175 },
+ { 0x80FC, 61387 },
+ { 0x80FD, 62380 },
+ { 0x80FE, 62539 },
+ { 0x80FF, 62542 },
+ { 0x8100, 58760 },
+ { 0x8101, 58763 },
+ { 0x8102, 58768 },
+ { 0x8103, 58773 },
+ { 0x8104, 60178 },
+ { 0x8105, 60181 },
+ { 0x8106, 60186 },
+ { 0x8107, 61834 },
+ { 0x8108, 61390 },
+ { 0x8109, 61393 },
+ { 0x810A, 61397 },
+ { 0x810B, 61400 },
+ { 0x810C, 61424 },
+ { 0x810D, 61419 },
+ { 0x810E, 61407 },
+ { 0x810F, 61414 },
+ { 0x8110, 61837 },
+ { 0x8111, 61430 },
+ { 0x8112, 61447 },
+ { 0x8113, 61437 },
+ { 0x8114, 61442 },
+ { 0x8115, 61433 },
+ { 0x8116, 58778 },
+ { 0x8117, 58781 },
+ { 0x8118, 60191 },
+ { 0x8119, 60198 },
+ { 0x811A, 60203 },
+ { 0x811B, 60211 },
+ { 0x811C, 60216 },
+ { 0x811D, 60194 },
+ { 0x811E, 60223 },
+ { 0x811F, 60232 },
+ { 0x8120, 60239 },
+ { 0x8121, 60226 },
+ { 0x8122, 60244 },
+ { 0x8123, 60247 },
+ { 0x8124, 60250 },
+ { 0x8125, 60255 },
+ { 0x8126, 61452 },
+ { 0x8127, 61840 },
+ { 0x8128, 62383 },
+ { 0x8129, 58786 },
+ { 0x812A, 58793 },
+ { 0x812B, 58789 },
+ { 0x812C, 60258 },
+ { 0x812D, 58797 },
+ { 0x812E, 58805 },
+ { 0x812F, 58835 },
+ { 0x8130, 58810 },
+ { 0x8131, 58840 },
+ { 0x8132, 58815 },
+ { 0x8133, 58820 },
+ { 0x8134, 58825 },
+ { 0x8135, 58830 },
+ { 0x8136, 58800 },
+ { 0x8137, 58845 },
+ { 0x8138, 61455 },
+ { 0x8139, 61458 },
+ { 0x813A, 61468 },
+ { 0x813B, 61478 },
+ { 0x813C, 61473 },
+ { 0x813D, 61463 },
+ { 0x813E, 61483 },
+ { 0x813F, 58412 },
+ { 0x8140, 58415 },
+ { 0x8141, 58848 },
+ { 0x8142, 61486 },
+ { 0x8143, 61489 },
+ { 0x8144, 61495 },
+ { 0x8145, 58851 },
+ { 0x8146, 60261 },
+ { 0x8147, 60268 },
+ { 0x8148, 60264 },
+ { 0x8149, 60276 },
+ { 0x814A, 60272 },
+ { 0x814B, 58854 },
+ { 0x814C, 58857 },
+ { 0x814D, 60287 },
+ { 0x814E, 58863 },
+ { 0x814F, 58866 },
+ { 0x8150, 58875 },
+ { 0x8151, 58880 },
+ { 0x8152, 58871 },
+ { 0x8153, 61501 },
+ { 0x8154, 58885 },
+ { 0x8155, 58888 },
+ { 0x8156, 60290 },
+ { 0x8157, 58891 },
+ { 0x8158, 58894 },
+ { 0x8159, 58904 },
+ { 0x815A, 58909 },
+ { 0x815B, 59113 },
+ { 0x815C, 59029 },
+ { 0x815D, 59165 },
+ { 0x815E, 59034 },
+ { 0x815F, 58916 },
+ { 0x8160, 59170 },
+ { 0x8161, 59118 },
+ { 0x8162, 58921 },
+ { 0x8163, 59039 },
+ { 0x8164, 59123 },
+ { 0x8165, 59044 },
+ { 0x8166, 59049 },
+ { 0x8167, 58926 },
+ { 0x8168, 59129 },
+ { 0x8169, 59134 },
+ { 0x816A, 59141 },
+ { 0x816B, 58931 },
+ { 0x816C, 59148 },
+ { 0x816D, 59058 },
+ { 0x816E, 58936 },
+ { 0x816F, 59063 },
+ { 0x8170, 58941 },
+ { 0x8171, 59068 },
+ { 0x8172, 58946 },
+ { 0x8173, 58951 },
+ { 0x8174, 58956 },
+ { 0x8175, 58961 },
+ { 0x8176, 58968 },
+ { 0x8177, 58975 },
+ { 0x8178, 58982 },
+ { 0x8179, 58987 },
+ { 0x817A, 58994 },
+ { 0x817B, 59073 },
+ { 0x817C, 58999 },
+ { 0x817D, 59004 },
+ { 0x817E, 59009 },
+ { 0x817F, 59078 },
+ { 0x8180, 59083 },
+ { 0x8181, 59088 },
+ { 0x8182, 59153 },
+ { 0x8183, 59093 },
+ { 0x8184, 59098 },
+ { 0x8185, 59175 },
+ { 0x8186, 59103 },
+ { 0x8187, 58899 },
+ { 0x8188, 59014 },
+ { 0x8189, 59019 },
+ { 0x818A, 59158 },
+ { 0x818B, 59108 },
+ { 0x818C, 59024 },
+ { 0x818D, 60293 },
+ { 0x818E, 60296 },
+ { 0x818F, 60301 },
+ { 0x8190, 61504 },
+ { 0x8191, 61507 },
+ { 0x8192, 61510 },
+ { 0x8193, 61513 },
+ { 0x8194, 61516 },
+ { 0x8195, 60304 },
+ { 0x8196, 60307 },
+ { 0x8197, 60313 },
+ { 0x8198, 60316 },
+ { 0x8199, 60321 },
+ { 0x819A, 61521 },
+ { 0x819B, 61524 },
+ { 0x819C, 62386 },
+ { 0x819D, 62401 },
+ { 0x819E, 62389 },
+ { 0x819F, 61843 },
+ { 0x81A0, 59180 },
+ { 0x81A1, 59193 },
+ { 0x81A2, 59183 },
+ { 0x81A3, 59188 },
+ { 0x81A4, 60326 },
+ { 0x81A5, 60329 },
+ { 0x81A6, 61846 },
+ { 0x81A7, 61527 },
+ { 0x81A8, 62411 },
+ { 0x81A9, 62414 },
+ { 0x81AA, 59198 },
+ { 0x81AB, 59201 },
+ { 0x81AC, 60332 },
+ { 0x81AD, 60335 },
+ { 0x81AE, 60338 },
+ { 0x81AF, 60343 },
+ { 0x81B0, 60346 },
+ { 0x81B1, 60349 },
+ { 0x81B2, 60353 },
+ { 0x81B3, 60356 },
+ { 0x81B4, 60359 },
+ { 0x81B5, 62419 },
+ { 0x81B6, 62422 },
+ { 0x81B7, 59213 },
+ { 0x81B8, 61849 },
+ { 0x81B9, 61852 },
+ { 0x81BA, 61857 },
+ { 0x81BB, 61866 },
+ { 0x81BC, 61873 },
+ { 0x81BD, 61901 },
+ { 0x81BE, 61906 },
+ { 0x81BF, 62007 },
+ { 0x81C0, 62014 },
+ { 0x81C1, 61911 },
+ { 0x81C2, 62019 },
+ { 0x81C3, 61916 },
+ { 0x81C4, 61921 },
+ { 0x81C5, 62024 },
+ { 0x81C6, 62029 },
+ { 0x81C7, 62034 },
+ { 0x81C8, 61926 },
+ { 0x81C9, 62041 },
+ { 0x81CA, 61931 },
+ { 0x81CB, 62046 },
+ { 0x81CC, 61938 },
+ { 0x81CD, 61943 },
+ { 0x81CE, 61950 },
+ { 0x81CF, 61957 },
+ { 0x81D0, 62052 },
+ { 0x81D1, 62057 },
+ { 0x81D2, 62062 },
+ { 0x81D3, 62067 },
+ { 0x81D4, 62130 },
+ { 0x81D5, 62103 },
+ { 0x81D6, 61962 },
+ { 0x81D7, 62076 },
+ { 0x81D8, 61967 },
+ { 0x81D9, 61972 },
+ { 0x81DA, 62108 },
+ { 0x81DB, 61979 },
+ { 0x81DC, 62081 },
+ { 0x81DD, 62135 },
+ { 0x81DE, 62144 },
+ { 0x81DF, 62113 },
+ { 0x81E0, 62118 },
+ { 0x81E1, 62088 },
+ { 0x81E2, 62093 },
+ { 0x81E3, 62125 },
+ { 0x81E4, 61984 },
+ { 0x81E5, 61880 },
+ { 0x81E6, 61885 },
+ { 0x81E7, 61892 },
+ { 0x81E8, 61995 },
+ { 0x81E9, 62002 },
+ { 0x81EA, 62098 },
+ { 0x81EB, 62152 },
+ { 0x81EC, 62156 },
+ { 0x81ED, 62171 },
+ { 0x81EE, 62176 },
+ { 0x81EF, 62159 },
+ { 0x81F0, 62163 },
+ { 0x81F1, 62425 },
+ { 0x81F2, 60364 },
+ { 0x81F3, 60367 },
+ { 0x81F4, 60372 },
+ { 0x81F5, 60375 },
+ { 0x81F6, 60380 },
+ { 0x81F7, 59216 },
+ { 0x81F8, 60387 },
+ { 0x81F9, 62428 },
+ { 0x81FA, 61530 },
+ { 0x81FB, 59219 },
+ { 0x81FC, 59222 },
+ { 0x81FD, 60390 },
+ { 0x81FE, 60397 },
+ { 0x81FF, 60450 },
+ { 0x8200, 60455 },
+ { 0x8201, 60460 },
+ { 0x8202, 60466 },
+ { 0x8203, 60402 },
+ { 0x8204, 60409 },
+ { 0x8205, 60472 },
+ { 0x8206, 60477 },
+ { 0x8207, 60482 },
+ { 0x8208, 60414 },
+ { 0x8209, 60419 },
+ { 0x820A, 60501 },
+ { 0x820B, 60426 },
+ { 0x820C, 60433 },
+ { 0x820D, 60438 },
+ { 0x820E, 60443 },
+ { 0x820F, 60489 },
+ { 0x8210, 60496 },
+ { 0x8211, 60393 },
+ { 0x8212, 60514 },
+ { 0x8213, 60519 },
+ { 0x8214, 60510 },
+ { 0x8215, 60506 },
+ { 0x8216, 60524 },
+ { 0x8217, 62183 },
+ { 0x8218, 62186 },
+ { 0x8219, 62195 },
+ { 0x821A, 62191 },
+ { 0x821B, 60527 },
+ { 0x821C, 60530 },
+ { 0x821D, 60533 },
+ { 0x821E, 60536 },
+ { 0x821F, 60541 },
+ { 0x8220, 59227 },
+ { 0x8221, 59234 },
+ { 0x8222, 59230 },
+ { 0x8223, 60549 },
+ { 0x8224, 60552 },
+ { 0x8225, 60555 },
+ { 0x8226, 61533 },
+ { 0x8227, 62200 },
+ { 0x8228, 59239 },
+ { 0x8229, 60558 },
+ { 0x822A, 59242 },
+ { 0x822B, 60561 },
+ { 0x822C, 59245 },
+ { 0x822D, 59248 },
+ { 0x822E, 60564 },
+ { 0x822F, 60567 },
+ { 0x8230, 62431 },
+ { 0x8231, 62434 },
+ { 0x8232, 61536 },
+ { 0x8233, 61553 },
+ { 0x8234, 61563 },
+ { 0x8235, 61558 },
+ { 0x8236, 61539 },
+ { 0x8237, 61544 },
+ { 0x8238, 61568 },
+ { 0x8239, 62203 },
+ { 0x823A, 62210 },
+ { 0x823B, 62215 },
+ { 0x823C, 62222 },
+ { 0x823D, 62206 },
+ { 0x823E, 59253 },
+ { 0x823F, 60571 },
+ { 0x8240, 61573 },
+ { 0x8241, 61582 },
+ { 0x8242, 61576 },
+ { 0x8243, 61586 },
+ { 0x8244, 62227 },
+ { 0x8245, 60577 },
+ { 0x8246, 60574 },
+ { 0x8247, 61591 },
+ { 0x8248, 59256 },
+ { 0x8249, 59259 },
+ { 0x824A, 59264 },
+ { 0x824B, 59269 },
+ { 0x824C, 59273 },
+ { 0x824D, 59276 },
+ { 0x824E, 60581 },
+ { 0x824F, 60584 },
+ { 0x8250, 60595 },
+ { 0x8251, 60587 },
+ { 0x8252, 62437 },
+ { 0x8253, 62440 },
+ { 0x8254, 62465 },
+ { 0x8255, 62470 },
+ { 0x8256, 62477 },
+ { 0x8257, 62445 },
+ { 0x8258, 62453 },
+ { 0x8259, 62482 },
+ { 0x825A, 62487 },
+ { 0x825B, 62492 },
+ { 0x825C, 62500 },
+ { 0x825D, 62507 },
+ { 0x825E, 62458 },
+ { 0x825F, 62516 },
+ { 0x8260, 62230 },
+ { 0x8261, 59281 },
+ { 0x8262, 61594 },
+ { 0x8263, 60601 },
+ { 0x8264, 60613 },
+ { 0x8265, 60642 },
+ { 0x8266, 60619 },
+ { 0x8267, 60625 },
+ { 0x8268, 60636 },
+ { 0x8269, 60609 },
+ { 0x826A, 60604 },
+ { 0x826B, 60648 },
+ { 0x826C, 60653 },
+ { 0x826D, 62233 },
+ { 0x826E, 62291 },
+ { 0x826F, 62236 },
+ { 0x8270, 62260 },
+ { 0x8271, 62266 },
+ { 0x8272, 62272 },
+ { 0x8273, 62279 },
+ { 0x8274, 62242 },
+ { 0x8275, 62248 },
+ { 0x8276, 62285 },
+ { 0x8277, 62254 },
+ { 0x8278, 62297 },
+ { 0x8279, 62303 },
+ { 0x827A, 59284 },
+ { 0x827B, 60661 },
+ { 0x827C, 60664 },
+ { 0x827D, 60667 },
+ { 0x827E, 62310 },
+ { 0x827F, 59287 },
+ { 0x8280, 59290 },
+ { 0x8281, 59310 },
+ { 0x8282, 59315 },
+ { 0x8283, 59320 },
+ { 0x8284, 59295 },
+ { 0x8285, 59300 },
+ { 0x8286, 59325 },
+ { 0x8287, 59305 },
+ { 0x8288, 59330 },
+ { 0x8289, 59335 },
+ { 0x828A, 62313 },
+ { 0x828B, 62326 },
+ { 0x828C, 62316 },
+ { 0x828D, 62321 },
+ { 0x828E, 62331 },
+ { 0x828F, 59340 },
+ { 0x8290, 60670 },
+ { 0x8291, 59343 },
+ { 0x8292, 59346 },
+ { 0x8293, 59349 },
+ { 0x8294, 60770 },
+ { 0x8295, 60673 },
+ { 0x8296, 60685 },
+ { 0x8297, 60690 },
+ { 0x8298, 60725 },
+ { 0x8299, 60695 },
+ { 0x829A, 60730 },
+ { 0x829B, 60735 },
+ { 0x829C, 60740 },
+ { 0x829D, 60700 },
+ { 0x829E, 60745 },
+ { 0x829F, 60750 },
+ { 0x82A0, 60765 },
+ { 0x82A1, 60755 },
+ { 0x82A2, 60705 },
+ { 0x82A3, 60710 },
+ { 0x82A4, 60715 },
+ { 0x82A5, 60720 },
+ { 0x82A6, 60760 },
+ { 0x82A7, 60680 },
+ { 0x82A8, 60676 },
+ { 0x82A9, 60774 },
+ { 0x82AA, 60777 },
+ { 0x82AB, 62521 },
+ { 0x82AC, 60783 },
+ { 0x82AD, 60786 },
+ { 0x82AE, 61597 },
+ { 0x82AF, 61600 },
+ { 0x82B0, 61622 },
+ { 0x82B1, 61632 },
+ { 0x82B2, 61617 },
+ { 0x82B3, 61637 },
+ { 0x82B4, 61627 },
+ { 0x82B5, 61605 },
+ { 0x82B6, 61610 },
+ { 0x82B7, 61642 },
+ { 0x82B8, 62336 },
+ { 0x82B9, 62339 },
+ { 0x82BA, 60789 },
+ { 0x82BB, 60792 },
+ { 0x82BC, 60796 },
+ { 0x82BD, 60807 },
+ { 0x82BE, 62342 },
+ { 0x82BF, 61645 },
+ { 0x82C0, 62345 },
+ { 0x82C1, 62524 },
+ { 0x82C2, 62547 },
+ { 0x82C3, 61648 },
+ { 0x82C4, 61651 },
+ { 0x82C5, 61656 },
+ { 0x82C6, 61661 },
+ { 0x82C7, 61664 },
+ { 0x82C8, 61669 },
+ { 0x82C9, 61710 },
+ { 0x82CA, 61674 },
+ { 0x82CB, 61679 },
+ { 0x82CC, 61684 },
+ { 0x82CD, 61689 },
+ { 0x82CE, 61715 },
+ { 0x82CF, 61695 },
+ { 0x82D0, 61700 },
+ { 0x82D1, 61705 },
+ { 0x82D2, 62527 },
+ { 0x82D3, 61720 },
+ { 0x82D4, 61731 },
+ { 0x82D5, 61723 },
+ { 0x82D6, 62348 },
+ { 0x82D7, 60818 },
+ { 0x82D8, 60821 },
+ { 0x82D9, 61735 },
+ { 0x82DA, 62530 },
+ { 0x82DB, 59352 },
+ { 0x82DC, 59355 },
+ { 0x82DD, 60827 },
+ { 0x82DE, 61738 },
+ { 0x82DF, 61741 },
+ { 0x82E0, 61747 },
+ { 0x82E1, 62351 },
+ { 0x82E2, 59359 },
+ { 0x82E3, 59362 },
+ { 0x82E4, 60830 },
+ { 0x82E5, 61750 },
+ { 0x82E6, 62354 },
+ { 0x82E7, 60833 },
+ { 0x82E8, 62533 },
+ { 0x82E9, 60836 },
+ { 0x82EA, 61753 },
+ { 0x82EB, 59367 },
+ { 0x82EC, 59384 },
+ { 0x82ED, 59374 },
+ { 0x82EE, 59379 },
+ { 0x82EF, 59370 },
+ { 0x82F0, 60839 },
+ { 0x82F1, 60842 },
+ { 0x82F2, 60853 },
+ { 0x82F3, 60857 },
+ { 0x82F4, 60860 },
+ { 0x82F5, 60870 },
+ { 0x82F6, 60875 },
+ { 0x82F7, 60880 },
+ { 0x82F8, 60885 },
+ { 0x82F9, 60865 },
+ { 0x82FA, 61756 },
+ { 0x82FB, 60890 },
+ { 0x82FC, 59388 },
+ { 0x82FD, 59391 },
+ { 0x82FE, 59395 },
+ { 0x82FF, 59398 },
+ { 0x8300, 60893 },
+ { 0x8301, 60896 },
+ { 0x8302, 60915 },
+ { 0x8303, 60899 },
+ { 0x8304, 60904 },
+ { 0x8305, 59402 },
+ { 0x8306, 61759 },
+ { 0x8307, 60920 },
+ { 0x8308, 60923 },
+ { 0x8309, 60926 },
+ { 0x830A, 60929 },
+ { 0x830B, 58419 },
+ { 0x830C, 58427 },
+ { 0x830D, 58422 },
+ { 0x830E, 58441 },
+ { 0x830F, 58452 },
+ { 0x8310, 58431 },
+ { 0x8311, 59405 },
+ { 0x8312, 59408 },
+ { 0x8313, 59411 },
+ { 0x8314, 59447 },
+ { 0x8315, 59442 },
+ { 0x8316, 59437 },
+ { 0x8317, 59418 },
+ { 0x8318, 59427 },
+ { 0x8319, 59414 },
+ { 0x831A, 59451 },
+ { 0x831B, 59455 },
+ { 0x831C, 61762 },
+ { 0x831D, 59461 },
+ { 0x831E, 59481 },
+ { 0x831F, 59469 },
+ { 0x8320, 59476 },
+ { 0x8321, 59464 },
+ { 0x8322, 62357 },
+ { 0x8323, 61765 },
+ { 0x8324, 61773 },
+ { 0x8325, 61768 },
+ { 0x8326, 59486 },
+ { 0x8327, 59489 },
+ { 0x8328, 59493 },
+ { 0x8329, 59500 },
+ { 0x832A, 59496 },
+ { 0x832B, 60937 },
+ { 0x832C, 60940 },
+ { 0x832D, 60947 },
+ { 0x832E, 60954 },
+ { 0x832F, 60959 },
+ { 0x8330, 60983 },
+ { 0x8331, 60964 },
+ { 0x8332, 60976 },
+ { 0x8333, 60969 },
+ { 0x8334, 60988 },
+ { 0x8335, 60991 },
+ { 0x8336, 61778 },
+ { 0x8337, 60994 },
+ { 0x8338, 60997 },
+ { 0x8339, 61110 },
+ { 0x833A, 61049 },
+ { 0x833B, 61054 },
+ { 0x833C, 61009 },
+ { 0x833D, 61059 },
+ { 0x833E, 61094 },
+ { 0x833F, 61064 },
+ { 0x8340, 61014 },
+ { 0x8341, 61019 },
+ { 0x8342, 61069 },
+ { 0x8343, 61024 },
+ { 0x8344, 61074 },
+ { 0x8345, 61029 },
+ { 0x8346, 61079 },
+ { 0x8347, 61084 },
+ { 0x8348, 61034 },
+ { 0x8349, 61089 },
+ { 0x834A, 61100 },
+ { 0x834B, 61039 },
+ { 0x834C, 61002 },
+ { 0x834D, 61044 },
+ { 0x834E, 61105 },
+ { 0x834F, 62360 },
+ { 0x8350, 62363 },
+ { 0x8351, 61115 },
+ { 0x8352, 61118 },
+ { 0x8353, 61123 },
+ { 0x8354, 61128 },
+ { 0x8355, 61133 },
+ { 0x8356, 61784 },
+ { 0x8357, 61781 },
+ { 0x8358, 62536 },
+ { 0x8359, 62368 },
+ { 0x835A, 61138 },
+ { 0x835B, 61141 },
+ { 0x835C, 61146 },
+ { 0x835D, 59505 },
+ { 0x835E, 59508 },
+ { 0x835F, 59512 },
+ { 0x8360, 61149 },
+ { 0x8361, 61787 },
+ { 0x8362, 61152 },
+ { 0x8363, 59518 },
+ { 0x8364, 59521 },
+ { 0x8365, 61155 },
+ { 0x8366, 61158 },
+ { 0x8367, 61161 },
+ { 0x8368, 61166 },
+ { 0x8369, 61790 },
+ { 0x836A, 59526 },
+ { 0x836B, 61169 },
+ { 0x836C, 61172 },
+ { 0x836D, 62371 },
+ { 0x836E, 61177 },
+ { 0x8400, 62658 },
+ { 0x8401, 63027 },
+ { 0x8402, 62787 },
+ { 0x8403, 62723 },
+ { 0x8404, 62625 },
+ { 0x8405, 62968 },
+ { 0x8406, 62929 },
+ { 0x8407, 62875 },
+ { 0x8408, 63055 },
+ { 0x8409, 62815 },
+ { 0x840A, 62751 },
+ { 0x840B, 62636 },
+ { 0x840C, 62973 },
+ { 0x840D, 62934 },
+ { 0x840E, 62880 },
+ { 0x840F, 62782 },
+ { 0x8410, 62718 },
+ { 0x8411, 62620 },
+ { 0x8412, 62963 },
+ { 0x8413, 62924 },
+ { 0x8414, 62870 },
+ { 0x8415, 62579 },
+ { 0x8416, 62684 },
+ { 0x8417, 63060 },
+ { 0x8418, 62820 },
+ { 0x8419, 62756 },
+ { 0x841A, 62641 },
+ { 0x841B, 62978 },
+ { 0x841C, 62939 },
+ { 0x841D, 62885 },
+ { 0x841E, 62584 },
+ { 0x841F, 62689 },
+ { 0x8420, 63065 },
+ { 0x8421, 62825 },
+ { 0x8422, 62761 },
+ { 0x8423, 62694 },
+ { 0x8424, 63070 },
+ { 0x8425, 63075 },
+ { 0x8426, 62830 },
+ { 0x8427, 62766 },
+ { 0x8428, 62646 },
+ { 0x8429, 62983 },
+ { 0x842A, 62944 },
+ { 0x842B, 62890 },
+ { 0x842C, 62589 },
+ { 0x842D, 62699 },
+ { 0x842E, 63082 },
+ { 0x842F, 63087 },
+ { 0x8430, 62835 },
+ { 0x8431, 62771 },
+ { 0x8432, 63019 },
+ { 0x8433, 63011 },
+ { 0x8434, 62569 },
+ { 0x8435, 62674 },
+ { 0x8436, 63043 },
+ { 0x8437, 63048 },
+ { 0x8438, 62810 },
+ { 0x8439, 62746 },
+ { 0x843A, 63094 },
+ { 0x843B, 63101 },
+ { 0x843C, 62840 },
+ { 0x843D, 62863 },
+ { 0x843E, 62847 },
+ { 0x843F, 62855 },
+ { 0x8440, 62651 },
+ { 0x8441, 63004 },
+ { 0x8442, 62988 },
+ { 0x8443, 62996 },
+ { 0x8444, 62949 },
+ { 0x8445, 62956 },
+ { 0x8446, 62895 },
+ { 0x8447, 62910 },
+ { 0x8448, 62917 },
+ { 0x8449, 62902 },
+ { 0x844A, 62663 },
+ { 0x844B, 63032 },
+ { 0x844C, 62792 },
+ { 0x844D, 62728 },
+ { 0x844E, 62630 },
+ { 0x844F, 62564 },
+ { 0x8450, 62669 },
+ { 0x8451, 63038 },
+ { 0x8452, 62798 },
+ { 0x8453, 62803 },
+ { 0x8454, 62734 },
+ { 0x8455, 62739 },
+ { 0x8456, 63112 },
+ { 0x8457, 63108 },
+ { 0x8458, 62574 },
+ { 0x8459, 62679 },
+ { 0x845A, 62594 },
+ { 0x845B, 62704 },
+ { 0x845C, 62776 },
+ { 0x845D, 62600 },
+ { 0x845E, 62710 },
+ { 0x845F, 62608 },
+ { 0x8460, 62614 },
+ { 0x8461, 62550 },
+ { 0x8462, 62557 },
+ { 0x8470, 63116 },
+ { 0x8471, 63133 },
+ { 0x8472, 63123 },
+ { 0x8473, 63128 },
+ { 0x9000, 56261 },
+ { 0x9001, 56295 },
+ { 0x9002, 57281 },
+ { 0x9003, 56256 },
+ { 0x9004, 56251 },
+ { 0x9005, 56625 },
+ { 0x9006, 56620 },
+ { 0x9007, 56920 },
+ { 0x9008, 57186 },
+ { 0x9009, 57267 },
+ { 0x900A, 57194 },
+ { 0x900B, 57198 },
+ { 0x900C, 56937 },
+ { 0x900D, 56209 },
+ { 0x900E, 56118 },
+ { 0x900F, 56607 },
+ { 0x9010, 57136 },
+ { 0x9011, 57219 },
+ { 0x9012, 57228 },
+ { 0x9013, 56812 },
+ { 0x9014, 56282 },
+ { 0x9015, 56566 },
+ { 0x9016, 56484 },
+ { 0x9017, 56590 },
+ { 0x9018, 56847 },
+ { 0x9019, 56286 },
+ { 0x901A, 56132 },
+ { 0x901B, 56743 },
+ { 0x901C, 57158 },
+ { 0x901D, 57035 },
+ { 0x901E, 57022 },
+ { 0x901F, 56791 },
+ { 0x9020, 56575 },
+ { 0x9021, 56824 },
+ { 0x9022, 56838 },
+ { 0x9023, 56843 },
+ { 0x9024, 56512 },
+ { 0x9025, 56265 },
+ { 0x9026, 56585 },
+ { 0x9027, 56820 },
+ { 0x9028, 57295 },
+ { 0x9029, 56594 },
+ { 0x902A, 56807 },
+ { 0x902B, 56801 },
+ { 0x902C, 57172 },
+ { 0x902D, 56273 },
+ { 0x902E, 56242 },
+ { 0x902F, 56114 },
+ { 0x9030, 56147 },
+ { 0x9031, 56816 },
+ { 0x9032, 57163 },
+ { 0x9033, 56203 },
+ { 0x9034, 56400 },
+ { 0x9035, 57128 },
+ { 0x9036, 57099 },
+ { 0x9037, 56507 },
+ { 0x9038, 57026 },
+ { 0x9039, 57177 },
+ { 0x903A, 56924 },
+ { 0x903B, 56856 },
+ { 0x903C, 56783 },
+ { 0x903D, 57262 },
+ { 0x903E, 57276 },
+ { 0x903F, 56721 },
+ { 0x9040, 56137 },
+ { 0x9041, 56775 },
+ { 0x9042, 56928 },
+ { 0x9043, 57094 },
+ { 0x9044, 57303 },
+ { 0x9045, 57299 },
+ { 0x9046, 56127 },
+ { 0x9047, 56561 },
+ { 0x9048, 56246 },
+ { 0x9049, 56779 },
+ { 0x904A, 56933 },
+ { 0x904B, 57335 },
+ { 0x904C, 57327 },
+ { 0x904D, 57030 },
+ { 0x904E, 57140 },
+ { 0x904F, 56725 },
+ { 0x9050, 56663 },
+ { 0x9051, 57223 },
+ { 0x9052, 57213 },
+ { 0x9053, 56829 },
+ { 0x9054, 57331 },
+ { 0x9055, 56710 },
+ { 0x9056, 56702 },
+ { 0x9057, 56556 },
+ { 0x9058, 56615 },
+ { 0x9059, 56580 },
+ { 0x905A, 57181 },
+ { 0x905B, 56571 },
+ { 0x905C, 57203 },
+ { 0x905D, 56771 },
+ { 0x905E, 57271 },
+ { 0x905F, 57257 },
+ { 0x9060, 56337 },
+ { 0x9061, 56767 },
+ { 0x9062, 57323 },
+ { 0x9063, 57089 },
+ { 0x9064, 57233 },
+ { 0x9065, 56796 },
+ { 0x9066, 56269 },
+ { 0x9067, 56851 },
+ { 0x9068, 56912 },
+ { 0x9069, 56598 },
+ { 0x906A, 56290 },
+ { 0x906B, 57347 },
+ { 0x906C, 57339 },
+ { 0x906D, 57315 },
+ { 0x906E, 57351 },
+ { 0x906F, 57355 },
+ { 0x9070, 57319 },
+ { 0x9071, 57343 },
+ { 0x9072, 57311 },
+ { 0x9073, 57307 },
+ { 0x9074, 56342 },
+ { 0x9075, 57167 },
+ { 0x9076, 57285 },
+ { 0x9077, 57290 },
+ { 0x9078, 56277 },
+ { 0x9079, 56141 },
+ { 0x907A, 57132 },
+ { 0x907B, 57109 },
+ { 0x907C, 56156 },
+ { 0x907D, 56151 },
+ { 0x907E, 56787 },
+ { 0x907F, 56516 },
+ { 0x9080, 56237 },
+ { 0x9081, 56762 },
+ { 0x9082, 56757 },
+ { 0x9083, 56752 },
+ { 0x9084, 56833 },
+ { 0x9085, 56123 },
+ { 0x9086, 56233 },
+ { 0x9087, 56611 },
+ { 0x9088, 57085 },
+ { 0x9089, 56748 },
+ { 0x908A, 56532 },
+ { 0x908B, 56526 },
+ { 0x908C, 56538 },
+ { 0x908D, 56550 },
+ { 0x908E, 56544 },
+ { 0x908F, 56472 },
+ { 0x9090, 56495 },
+ { 0x9091, 56489 },
+ { 0x9092, 56883 },
+ { 0x9093, 56900 },
+ { 0x9094, 56893 },
+ { 0x9095, 56887 },
+ { 0x9096, 57190 },
+ { 0x9097, 56214 },
+ { 0x9098, 57249 },
+ { 0x9099, 56706 },
+ { 0x909A, 56171 },
+ { 0x909B, 56193 },
+ { 0x909C, 56161 },
+ { 0x909D, 56188 },
+ { 0x909E, 56166 },
+ { 0x909F, 56183 },
+ { 0x90A0, 56198 },
+ { 0x90A1, 56177 },
+ { 0x90A2, 56961 },
+ { 0x90A3, 56941 },
+ { 0x90A4, 56992 },
+ { 0x90A5, 56948 },
+ { 0x90A6, 56967 },
+ { 0x90A7, 57011 },
+ { 0x90A8, 56998 },
+ { 0x90A9, 57004 },
+ { 0x90AA, 56973 },
+ { 0x90AB, 56979 },
+ { 0x90AC, 56501 },
+ { 0x90AD, 57207 },
+ { 0x90AE, 57123 },
+ { 0x90AF, 57118 },
+ { 0x90B0, 57113 },
+ { 0x90B1, 56955 },
+ { 0x90B2, 57016 },
+ { 0x90B3, 56985 },
+ { 0x90B4, 57237 },
+ { 0x90B5, 57243 },
+ { 0x90B6, 56714 },
+ { 0x90B7, 56916 },
+ { 0x90B8, 57253 },
+ { 0x90B9, 56405 },
+ { 0x90BA, 56438 },
+ { 0x90BB, 56450 },
+ { 0x90BC, 56361 },
+ { 0x90BD, 56412 },
+ { 0x90BE, 56393 },
+ { 0x90BF, 56418 },
+ { 0x90C0, 56444 },
+ { 0x90C1, 56431 },
+ { 0x90C2, 56424 },
+ { 0x90C3, 56372 },
+ { 0x90C4, 56379 },
+ { 0x90C5, 56347 },
+ { 0x90C6, 56386 },
+ { 0x90C7, 56367 },
+ { 0x90C8, 56218 },
+ { 0x90C9, 56223 },
+ { 0x90CA, 56228 },
+ { 0x90CB, 56354 },
+ { 0x90CC, 56456 },
+ { 0x90CD, 56658 },
+ { 0x90CE, 56327 },
+ { 0x90CF, 56332 },
+ { 0x90D0, 56299 },
+ { 0x90D1, 56320 },
+ { 0x90D2, 56306 },
+ { 0x90D3, 56313 },
+ { 0x90D4, 56630 },
+ { 0x90D5, 56651 },
+ { 0x90D6, 56637 },
+ { 0x90D7, 56644 },
+ { 0x90D8, 56462 },
+ { 0x90D9, 56467 },
+ { 0x90DA, 56861 },
+ { 0x90DB, 56867 },
+ { 0x90DC, 56873 },
+ { 0x90DD, 56878 },
+ { 0x90DE, 57062 },
+ { 0x90DF, 57067 },
+ { 0x90E0, 57073 },
+ { 0x90E1, 57079 },
+ { 0x90E2, 57039 },
+ { 0x90E3, 57044 },
+ { 0x90E4, 57050 },
+ { 0x90E5, 57056 },
+ { 0x90E6, 56907 },
+ { 0x90E7, 57104 },
+ { 0x90E8, 56603 },
+ { 0x90E9, 56687 },
+ { 0x90EA, 56697 },
+ { 0x90EB, 56672 },
+ { 0x90EC, 56667 },
+ { 0x90ED, 56677 },
+ { 0x90EE, 56692 },
+ { 0x90EF, 56682 },
+ { 0x90F0, 57152 },
+ { 0x90F1, 56737 },
+ { 0x90F2, 57146 },
+ { 0x90F3, 56731 },
+ { 0x90F4, 56521 },
+ { 0x90F5, 56478 },
+ { 0x9100, 41562 },
+ { 0x9101, 41524 },
+ { 0x9102, 41404 },
+ { 0x9103, 41695 },
+ { 0x9104, 41508 },
+ { 0x9105, 41470 },
+ { 0x9106, 41337 },
+ { 0x9107, 41454 },
+ { 0x9108, 41558 },
+ { 0x9109, 41249 },
+ { 0x910A, 41238 },
+ { 0x910B, 41459 },
+ { 0x910C, 41290 },
+ { 0x910D, 41776 },
+ { 0x910E, 41780 },
+ { 0x910F, 41784 },
+ { 0x9110, 41659 },
+ { 0x9111, 41662 },
+ { 0x9112, 41485 },
+ { 0x9113, 41646 },
+ { 0x9114, 41395 },
+ { 0x9115, 41643 },
+ { 0x9116, 41728 },
+ { 0x9117, 41861 },
+ { 0x9118, 42079 },
+ { 0x9119, 41999 },
+ { 0x911A, 41995 },
+ { 0x911B, 41788 },
+ { 0x911C, 42075 },
+ { 0x911D, 42086 },
+ { 0x911E, 41215 },
+ { 0x911F, 41219 },
+ { 0x9120, 41225 },
+ { 0x9121, 41195 },
+ { 0x9122, 41199 },
+ { 0x9123, 41203 },
+ { 0x9124, 41209 },
+ { 0x9125, 41300 },
+ { 0x9126, 41304 },
+ { 0x9129, 41719 },
+ { 0x912A, 41520 },
+ { 0x912B, 41516 },
+ { 0x912C, 41308 },
+ { 0x912D, 41312 },
+ { 0x912E, 41666 },
+ { 0x912F, 41670 },
+ { 0x9130, 41462 },
+ { 0x9131, 41466 },
+ { 0x9132, 41690 },
+ { 0x9133, 41685 },
+ { 0x9134, 41504 },
+ { 0x9135, 41245 },
+ { 0x9136, 41550 },
+ { 0x9137, 41554 },
+ { 0x9138, 42103 },
+ { 0x9139, 42107 },
+ { 0x913A, 41438 },
+ { 0x913B, 41481 },
+ { 0x913C, 41328 },
+ { 0x913D, 41681 },
+ { 0x913E, 41532 },
+ { 0x913F, 42039 },
+ { 0x9140, 42123 },
+ { 0x9141, 42115 },
+ { 0x9142, 41280 },
+ { 0x9143, 41231 },
+ { 0x9144, 41356 },
+ { 0x9145, 41496 },
+ { 0x9146, 41575 },
+ { 0x9147, 41570 },
+ { 0x9148, 41819 },
+ { 0x9149, 41799 },
+ { 0x914A, 41843 },
+ { 0x914B, 41837 },
+ { 0x914C, 41855 },
+ { 0x914D, 41849 },
+ { 0x914E, 41831 },
+ { 0x914F, 41825 },
+ { 0x9150, 41812 },
+ { 0x9151, 41805 },
+ { 0x9152, 41347 },
+ { 0x9153, 41342 },
+ { 0x9154, 42133 },
+ { 0x9155, 42127 },
+ { 0x9156, 42096 },
+ { 0x9157, 41371 },
+ { 0x9158, 41724 },
+ { 0x9159, 41352 },
+ { 0x915A, 41654 },
+ { 0x915B, 41649 },
+ { 0x915C, 41398 },
+ { 0x915D, 41477 },
+ { 0x915E, 41324 },
+ { 0x915F, 41677 },
+ { 0x9160, 41528 },
+ { 0x9161, 42035 },
+ { 0x9162, 42119 },
+ { 0x9163, 42111 },
+ { 0x9164, 41274 },
+ { 0x9165, 41896 },
+ { 0x9166, 41975 },
+ { 0x9167, 41958 },
+ { 0x9168, 41962 },
+ { 0x9169, 41966 },
+ { 0x916A, 41703 },
+ { 0x916B, 41707 },
+ { 0x916C, 41711 },
+ { 0x916D, 41970 },
+ { 0x916E, 41917 },
+ { 0x916F, 41921 },
+ { 0x9170, 41925 },
+ { 0x9171, 41929 },
+ { 0x9172, 41933 },
+ { 0x9173, 41383 },
+ { 0x9174, 41262 },
+ { 0x9175, 41379 },
+ { 0x9176, 41258 },
+ { 0x9177, 41387 },
+ { 0x9178, 41266 },
+ { 0x9179, 41391 },
+ { 0x917A, 41270 },
+ { 0x917B, 41908 },
+ { 0x917C, 41954 },
+ { 0x917D, 41937 },
+ { 0x917E, 41980 },
+ { 0x917F, 41946 },
+ { 0x9180, 41988 },
+ { 0x9181, 41984 },
+ { 0x9182, 41900 },
+ { 0x9183, 42043 },
+ { 0x9184, 42047 },
+ { 0x9185, 41878 },
+ { 0x9186, 41870 },
+ { 0x9187, 41887 },
+ { 0x9188, 41904 },
+ { 0x9189, 41874 },
+ { 0x918A, 41912 },
+ { 0x918B, 41941 },
+ { 0x918C, 42100 },
+ { 0x918D, 41580 },
+ { 0x918E, 41235 },
+ { 0x918F, 41451 },
+ { 0x9190, 41435 },
+ { 0x9191, 41408 },
+ { 0x9192, 41992 },
+ { 0x9193, 42083 },
+ { 0x9194, 41417 },
+ { 0x9195, 41411 },
+ { 0x9196, 41242 },
+ { 0x9197, 41360 },
+ { 0x9198, 41715 },
+ { 0x9199, 41367 },
+ { 0x919A, 41363 },
+ { 0x919B, 41732 },
+ { 0x919C, 41736 },
+ { 0x919D, 41740 },
+ { 0x919E, 41744 },
+ { 0x919F, 41748 },
+ { 0x91A0, 41752 },
+ { 0x91A1, 41756 },
+ { 0x91A2, 41760 },
+ { 0x91A3, 41764 },
+ { 0x91A4, 41768 },
+ { 0x91A5, 41772 },
+ { 0x91A6, 42090 },
+ { 0x91A7, 42093 },
+ { 0x91A8, 41253 },
+ { 0x91A9, 41512 },
+ { 0x91AA, 41882 },
+ { 0x91AB, 41865 },
+ { 0x91AC, 41950 },
+ { 0x91AD, 41891 },
+ { 0x91AE, 41447 },
+ { 0x91AF, 41442 },
+ { 0x91B0, 41332 },
+ { 0x91B1, 42003 },
+ { 0x91B2, 42007 },
+ { 0x91B3, 41375 },
+ { 0x91B4, 41293 },
+ { 0x91B5, 41296 },
+ { 0x91B6, 41536 },
+ { 0x91B7, 41422 },
+ { 0x91B8, 41489 },
+ { 0x91B9, 42059 },
+ { 0x91BA, 42055 },
+ { 0x91BB, 41539 },
+ { 0x91BC, 41546 },
+ { 0x91BD, 42071 },
+ { 0x91BE, 42067 },
+ { 0x91BF, 41320 },
+ { 0x91C0, 41316 },
+ { 0x91C1, 41425 },
+ { 0x91C2, 41430 },
+ { 0x91C3, 41492 },
+ { 0x91C4, 42051 },
+ { 0x91C5, 41542 },
+ { 0x91C6, 42063 },
+ { 0x91C7, 41583 },
+ { 0x91C8, 41598 },
+ { 0x91C9, 41590 },
+ { 0x91CA, 41605 },
+ { 0x91CB, 41612 },
+ { 0x91CC, 41619 },
+ { 0x91CD, 41627 },
+ { 0x91CE, 41635 },
+ { 0x91CF, 41401 },
+ { 0x91D0, 42011 },
+ { 0x91D1, 42016 },
+ { 0x91D2, 41566 },
+ { 0x91D3, 41474 },
+ { 0x91D4, 41674 },
+ { 0x91D5, 41501 },
+ { 0x91D6, 42028 },
+ { 0x91D7, 41700 },
+ { 0x91D8, 41792 },
+ { 0x91D9, 42021 },
+ { 0x91DA, 42024 },
+ { 0x91DB, 42031 },
+ { 0x91DC, 41795 },
+ { 0x91DD, 41286 },
+ { 0x9200, 11902 },
+ { 0x9201, 11906 },
+ { 0x9202, 11910 },
+ { 0x9203, 11914 },
+ { 0x9204, 11918 },
+ { 0x9205, 11922 },
+ { 0x9206, 11926 },
+ { 0x9207, 11930 },
+ { 0x9208, 11934 },
+ { 0x9209, 11938 },
+ { 0x920A, 11942 },
+ { 0x920B, 11946 },
+ { 0x920C, 11950 },
+ { 0x920D, 11954 },
+ { 0x920E, 11958 },
+ { 0x920F, 11962 },
+ { 0x9210, 11966 },
+ { 0x9211, 11970 },
+ { 0x9212, 11974 },
+ { 0x9213, 11978 },
+ { 0x9214, 11982 },
+ { 0x9215, 11986 },
+ { 0x9216, 11990 },
+ { 0x9217, 11994 },
+ { 0x9218, 11998 },
+ { 0x9219, 12002 },
+ { 0x921A, 12006 },
+ { 0x921B, 12010 },
+ { 0x921C, 12014 },
+ { 0x921D, 13374 },
+ { 0x921E, 13378 },
+ { 0x921F, 13382 },
+ { 0x9220, 13386 },
+ { 0x9221, 13390 },
+ { 0x9222, 13394 },
+ { 0x9223, 13398 },
+ { 0x9224, 13402 },
+ { 0x9225, 13406 },
+ { 0x9226, 13410 },
+ { 0x9227, 13414 },
+ { 0x9228, 13418 },
+ { 0x9229, 13422 },
+ { 0x922A, 13426 },
+ { 0x922B, 13430 },
+ { 0x922C, 13434 },
+ { 0x922D, 13438 },
+ { 0x922E, 13442 },
+ { 0x922F, 13446 },
+ { 0x9230, 13450 },
+ { 0x9231, 13454 },
+ { 0x9232, 13458 },
+ { 0x9233, 13462 },
+ { 0x9234, 13466 },
+ { 0x9235, 13470 },
+ { 0x9236, 13474 },
+ { 0x9237, 13478 },
+ { 0x9238, 13482 },
+ { 0x9239, 13486 },
+ { 0x923A, 13490 },
+ { 0x923B, 13494 },
+ { 0x923C, 13498 },
+ { 0x923D, 13502 },
+ { 0x923E, 13506 },
+ { 0x923F, 13510 },
+ { 0x9240, 13514 },
+ { 0x9241, 13518 },
+ { 0x9242, 57564 },
+ { 0x9243, 57572 },
+ { 0x9244, 57568 },
+ { 0x9245, 13031 },
+ { 0x9300, 54871 },
+ { 0x9301, 31216 },
+ { 0x9302, 31188 },
+ { 0x9303, 31204 },
+ { 0x9304, 31200 },
+ { 0x9305, 31185 },
+ { 0x9306, 66100 },
+ { 0x9307, 66067 },
+ { 0x9308, 66082 },
+ { 0x9309, 66128 },
+ { 0x930A, 66147 },
+ { 0x930B, 66272 },
+ { 0x930C, 66097 },
+ { 0x930D, 66263 },
+ { 0x930E, 66201 },
+ { 0x930F, 66299 },
+ { 0x9310, 66254 },
+ { 0x9311, 66296 },
+ { 0x9312, 66184 },
+ { 0x9313, 66281 },
+ { 0x9314, 66085 },
+ { 0x9315, 66134 },
+ { 0x9316, 66143 },
+ { 0x9317, 66172 },
+ { 0x9318, 66220 },
+ { 0x9319, 66125 },
+ { 0x931A, 66166 },
+ { 0x931B, 66266 },
+ { 0x931C, 66064 },
+ { 0x931D, 66052 },
+ { 0x931E, 66251 },
+ { 0x931F, 66217 },
+ { 0x9320, 66110 },
+ { 0x9321, 66103 },
+ { 0x9322, 66287 },
+ { 0x9323, 66060 },
+ { 0x9324, 66160 },
+ { 0x9325, 66116 },
+ { 0x9326, 66205 },
+ { 0x9327, 66151 },
+ { 0x9328, 66226 },
+ { 0x9329, 66193 },
+ { 0x932A, 66119 },
+ { 0x932B, 66178 },
+ { 0x932C, 66239 },
+ { 0x932D, 66055 },
+ { 0x932E, 66187 },
+ { 0x932F, 66074 },
+ { 0x9330, 66257 },
+ { 0x9331, 66088 },
+ { 0x9332, 66233 },
+ { 0x9333, 66275 },
+ { 0x9334, 66163 },
+ { 0x9335, 66122 },
+ { 0x9336, 66113 },
+ { 0x9337, 66196 },
+ { 0x9338, 66208 },
+ { 0x9339, 66157 },
+ { 0x933A, 66175 },
+ { 0x933B, 66091 },
+ { 0x933C, 66293 },
+ { 0x933D, 66106 },
+ { 0x933E, 66278 },
+ { 0x933F, 66229 },
+ { 0x9340, 66154 },
+ { 0x9341, 66284 },
+ { 0x9342, 66304 },
+ { 0x9343, 66071 },
+ { 0x9344, 66094 },
+ { 0x9345, 66169 },
+ { 0x9346, 66079 },
+ { 0x9347, 66214 },
+ { 0x9348, 66211 },
+ { 0x9349, 66137 },
+ { 0x934A, 66260 },
+ { 0x934B, 66242 },
+ { 0x934C, 66190 },
+ { 0x934D, 66181 },
+ { 0x934E, 66245 },
+ { 0x934F, 66131 },
+ { 0x9350, 66140 },
+ { 0x9351, 66269 },
+ { 0x9352, 66248 },
+ { 0x9353, 66047 },
+ { 0x9354, 66290 },
+ { 0x9355, 66236 },
+ { 0x9356, 66223 },
+ { 0x9360, 48474 },
+ { 0x9361, 48484 },
+ { 0x9362, 48514 },
+ { 0x9363, 48494 },
+ { 0x9364, 48489 },
+ { 0x9365, 48479 },
+ { 0x9366, 48509 },
+ { 0x9367, 48504 },
+ { 0x9368, 48499 },
+ { 0x9369, 48429 },
+ { 0x936A, 48439 },
+ { 0x936B, 48469 },
+ { 0x936C, 48449 },
+ { 0x936D, 48444 },
+ { 0x936E, 48434 },
+ { 0x936F, 48464 },
+ { 0x9370, 48459 },
+ { 0x9371, 48454 },
+ { 0x9400, 70678 },
+ { 0x9401, 70682 },
+ { 0x9402, 70686 },
+ { 0x9403, 70690 },
+ { 0x9404, 70694 },
+ { 0x9405, 70698 },
+ { 0x9406, 70702 },
+ { 0x9407, 70706 },
+ { 0x9408, 70710 },
+ { 0x9409, 70714 },
+ { 0x940A, 70718 },
+ { 0x940B, 70722 },
+ { 0x940C, 70726 },
+ { 0x940D, 70730 },
+ { 0x940E, 70734 },
+ { 0x940F, 70738 },
+ { 0x9410, 70742 },
+ { 0x9411, 70746 },
+ { 0x9412, 70750 },
+ { 0x9413, 70754 },
+ { 0x9414, 70758 },
+ { 0x9415, 70762 },
+ { 0x9416, 70766 },
+ { 0x9417, 70770 },
+ { 0x9418, 70774 },
+ { 0x9419, 70778 },
+ { 0x941A, 69654 },
+ { 0x941B, 69658 },
+ { 0x941C, 69662 },
+ { 0x941D, 69666 },
+ { 0x941E, 69670 },
+ { 0x941F, 69674 },
+ { 0x9420, 69678 },
+ { 0x9421, 69682 },
+ { 0x9422, 69686 },
+ { 0x9423, 69690 },
+ { 0x9424, 69694 },
+ { 0x9425, 69698 },
+ { 0x9426, 69702 },
+ { 0x9427, 69706 },
+ { 0x9428, 69710 },
+ { 0x9429, 69714 },
+ { 0x942A, 69718 },
+ { 0x942B, 69722 },
+ { 0x942C, 69726 },
+ { 0x942D, 69730 },
+ { 0x942E, 69734 },
+ { 0x942F, 69738 },
+ { 0x9430, 69742 },
+ { 0x9431, 69746 },
+ { 0x9432, 69750 },
+ { 0x9433, 69754 },
+ { 0x9434, 71437 },
+ { 0x9435, 71441 },
+ { 0x9436, 71445 },
+ { 0x9437, 71449 },
+ { 0x9438, 71453 },
+ { 0x9439, 71457 },
+ { 0x943A, 71461 },
+ { 0x943B, 71465 },
+ { 0x943C, 71469 },
+ { 0x943D, 71473 },
+ { 0x943E, 71477 },
+ { 0x943F, 71481 },
+ { 0x9440, 71485 },
+ { 0x9441, 71489 },
+ { 0x9442, 71493 },
+ { 0x9443, 71497 },
+ { 0x9444, 71501 },
+ { 0x9445, 71505 },
+ { 0x9446, 71509 },
+ { 0x9447, 71513 },
+ { 0x9448, 71517 },
+ { 0x9449, 71521 },
+ { 0x944A, 71525 },
+ { 0x944B, 71529 },
+ { 0x944C, 71533 },
+ { 0x944D, 71537 },
+ { 0x944E, 71222 },
+ { 0x944F, 71226 },
+ { 0x9450, 71230 },
+ { 0x9451, 71234 },
+ { 0x9452, 71238 },
+ { 0x9453, 71242 },
+ { 0x9454, 71246 },
+ { 0x9456, 71250 },
+ { 0x9457, 71254 },
+ { 0x9458, 71258 },
+ { 0x9459, 71262 },
+ { 0x945A, 71266 },
+ { 0x945B, 71270 },
+ { 0x945C, 71274 },
+ { 0x945D, 71278 },
+ { 0x945E, 71282 },
+ { 0x945F, 71286 },
+ { 0x9460, 71290 },
+ { 0x9461, 71294 },
+ { 0x9462, 71298 },
+ { 0x9463, 71302 },
+ { 0x9464, 71306 },
+ { 0x9465, 71310 },
+ { 0x9466, 71314 },
+ { 0x9467, 71318 },
+ { 0x9468, 70152 },
+ { 0x9469, 70157 },
+ { 0x946A, 70162 },
+ { 0x946B, 70167 },
+ { 0x946C, 70172 },
+ { 0x946D, 70177 },
+ { 0x946E, 70182 },
+ { 0x946F, 70187 },
+ { 0x9470, 70192 },
+ { 0x9471, 70197 },
+ { 0x9472, 70202 },
+ { 0x9473, 70207 },
+ { 0x9474, 70212 },
+ { 0x9475, 70217 },
+ { 0x9476, 70222 },
+ { 0x9477, 70227 },
+ { 0x9478, 70232 },
+ { 0x9479, 70237 },
+ { 0x947A, 70242 },
+ { 0x947B, 70247 },
+ { 0x947C, 70252 },
+ { 0x947D, 70257 },
+ { 0x947E, 70262 },
+ { 0x947F, 70267 },
+ { 0x9480, 70272 },
+ { 0x9481, 70277 },
+ { 0x9482, 69891 },
+ { 0x9483, 69896 },
+ { 0x9484, 69901 },
+ { 0x9485, 69906 },
+ { 0x9486, 69911 },
+ { 0x9487, 69916 },
+ { 0x9488, 69921 },
+ { 0x9489, 69926 },
+ { 0x948A, 69931 },
+ { 0x948B, 69936 },
+ { 0x948C, 69941 },
+ { 0x948D, 69946 },
+ { 0x948E, 69951 },
+ { 0x948F, 69956 },
+ { 0x9490, 69961 },
+ { 0x9491, 69966 },
+ { 0x9492, 69971 },
+ { 0x9493, 69976 },
+ { 0x9494, 69981 },
+ { 0x9495, 69986 },
+ { 0x9496, 69991 },
+ { 0x9497, 69996 },
+ { 0x9498, 70001 },
+ { 0x9499, 70006 },
+ { 0x949A, 70011 },
+ { 0x949B, 70016 },
+ { 0x949C, 71742 },
+ { 0x949E, 71746 },
+ { 0x949F, 71750 },
+ { 0x94A2, 71754 },
+ { 0x94A5, 71758 },
+ { 0x94A6, 71762 },
+ { 0x94A9, 71766 },
+ { 0x94AA, 71770 },
+ { 0x94AB, 71774 },
+ { 0x94AC, 71778 },
+ { 0x94AE, 71782 },
+ { 0x94AF, 71786 },
+ { 0x94B0, 71790 },
+ { 0x94B1, 71794 },
+ { 0x94B2, 71798 },
+ { 0x94B3, 71802 },
+ { 0x94B4, 71806 },
+ { 0x94B5, 71810 },
+ { 0x94B6, 71650 },
+ { 0x94B7, 71654 },
+ { 0x94B8, 71658 },
+ { 0x94B9, 71662 },
+ { 0x94BB, 71666 },
+ { 0x94BD, 71670 },
+ { 0x94BE, 71674 },
+ { 0x94BF, 71678 },
+ { 0x94C0, 71682 },
+ { 0x94C1, 71686 },
+ { 0x94C2, 71690 },
+ { 0x94C3, 71694 },
+ { 0x94C5, 71698 },
+ { 0x94C6, 71702 },
+ { 0x94C7, 71706 },
+ { 0x94C8, 71710 },
+ { 0x94C9, 71714 },
+ { 0x94CA, 71718 },
+ { 0x94CB, 71722 },
+ { 0x94CC, 71726 },
+ { 0x94CD, 71730 },
+ { 0x94CE, 71734 },
+ { 0x94CF, 71738 },
+ { 0x94D0, 70548 },
+ { 0x94D1, 70553 },
+ { 0x94D2, 70558 },
+ { 0x94D3, 70563 },
+ { 0x94D4, 70568 },
+ { 0x94D5, 70573 },
+ { 0x94D6, 70578 },
+ { 0x94D7, 70583 },
+ { 0x94D8, 70588 },
+ { 0x94D9, 70593 },
+ { 0x94DA, 70598 },
+ { 0x94DB, 70603 },
+ { 0x94DC, 70608 },
+ { 0x94DD, 70613 },
+ { 0x94DE, 70618 },
+ { 0x94DF, 70623 },
+ { 0x94E0, 70628 },
+ { 0x94E1, 70633 },
+ { 0x94E2, 70638 },
+ { 0x94E3, 70643 },
+ { 0x94E4, 70648 },
+ { 0x94E5, 70653 },
+ { 0x94E6, 70658 },
+ { 0x94E7, 70663 },
+ { 0x94E8, 70668 },
+ { 0x94E9, 70673 },
+ { 0x94EA, 70418 },
+ { 0x94EB, 70423 },
+ { 0x94EC, 70428 },
+ { 0x94ED, 70433 },
+ { 0x94EE, 70438 },
+ { 0x94EF, 70443 },
+ { 0x94F0, 70448 },
+ { 0x94F1, 70453 },
+ { 0x94F2, 70458 },
+ { 0x94F3, 70463 },
+ { 0x94F4, 70468 },
+ { 0x94F5, 70473 },
+ { 0x94F6, 70478 },
+ { 0x94F7, 70483 },
+ { 0x94F8, 70488 },
+ { 0x94F9, 70493 },
+ { 0x94FA, 70498 },
+ { 0x94FB, 70503 },
+ { 0x94FC, 70508 },
+ { 0x94FD, 70513 },
+ { 0x94FE, 70518 },
+ { 0x94FF, 70523 },
+ { 0x9500, 70528 },
+ { 0x9501, 70533 },
+ { 0x9502, 70538 },
+ { 0x9503, 70543 },
+ { 0x9504, 71918 },
+ { 0x9505, 71922 },
+ { 0x9507, 71926 },
+ { 0x9508, 71930 },
+ { 0x9509, 71934 },
+ { 0x950A, 71938 },
+ { 0x950D, 71942 },
+ { 0x950E, 71946 },
+ { 0x950F, 71950 },
+ { 0x9510, 71954 },
+ { 0x9511, 71958 },
+ { 0x9512, 71962 },
+ { 0x9513, 71966 },
+ { 0x9514, 71970 },
+ { 0x9516, 71974 },
+ { 0x9517, 71978 },
+ { 0x9518, 71982 },
+ { 0x9519, 71986 },
+ { 0x951A, 71990 },
+ { 0x951B, 71994 },
+ { 0x951C, 71998 },
+ { 0x951E, 71814 },
+ { 0x951F, 71818 },
+ { 0x9520, 71822 },
+ { 0x9521, 71826 },
+ { 0x9522, 71830 },
+ { 0x9523, 71834 },
+ { 0x9524, 71838 },
+ { 0x9525, 71842 },
+ { 0x9526, 71846 },
+ { 0x9527, 71850 },
+ { 0x9528, 71854 },
+ { 0x9529, 71858 },
+ { 0x952A, 71862 },
+ { 0x952B, 71866 },
+ { 0x952C, 71870 },
+ { 0x952D, 71874 },
+ { 0x952E, 71878 },
+ { 0x952F, 71882 },
+ { 0x9530, 71886 },
+ { 0x9531, 71890 },
+ { 0x9532, 71894 },
+ { 0x9533, 71898 },
+ { 0x9534, 71902 },
+ { 0x9535, 71906 },
+ { 0x9536, 71910 },
+ { 0x9537, 71914 },
+ { 0x9538, 74164 },
+ { 0x9539, 74168 },
+ { 0x953B, 74172 },
+ { 0x953C, 74176 },
+ { 0x953D, 74180 },
+ { 0x953E, 74184 },
+ { 0x9540, 74188 },
+ { 0x9541, 74192 },
+ { 0x9542, 74196 },
+ { 0x9543, 74200 },
+ { 0x9544, 74204 },
+ { 0x9546, 74208 },
+ { 0x954A, 74212 },
+ { 0x954B, 74216 },
+ { 0x954C, 74220 },
+ { 0x954D, 74224 },
+ { 0x954E, 74228 },
+ { 0x954F, 74232 },
+ { 0x9550, 74236 },
+ { 0x9552, 74060 },
+ { 0x9553, 74064 },
+ { 0x9554, 74068 },
+ { 0x9555, 74072 },
+ { 0x9556, 74076 },
+ { 0x9557, 74080 },
+ { 0x9558, 74084 },
+ { 0x9559, 74088 },
+ { 0x955A, 74092 },
+ { 0x955B, 74096 },
+ { 0x955C, 74100 },
+ { 0x955D, 74104 },
+ { 0x955E, 74108 },
+ { 0x955F, 74112 },
+ { 0x9560, 74116 },
+ { 0x9561, 74120 },
+ { 0x9562, 74124 },
+ { 0x9563, 74128 },
+ { 0x9564, 74132 },
+ { 0x9565, 74136 },
+ { 0x9566, 74140 },
+ { 0x9567, 74144 },
+ { 0x9568, 74148 },
+ { 0x9569, 74152 },
+ { 0x956A, 74156 },
+ { 0x956B, 74160 },
+ { 0x956C, 71021 },
+ { 0x956D, 71026 },
+ { 0x956E, 71031 },
+ { 0x956F, 71036 },
+ { 0x9570, 71041 },
+ { 0x9571, 71046 },
+ { 0x9572, 71051 },
+ { 0x9573, 71056 },
+ { 0x9574, 71061 },
+ { 0x9575, 71066 },
+ { 0x9576, 71071 },
+ { 0x9577, 71076 },
+ { 0x9578, 71081 },
+ { 0x9579, 71086 },
+ { 0x957A, 71091 },
+ { 0x957B, 71096 },
+ { 0x957C, 71101 },
+ { 0x957D, 71106 },
+ { 0x957E, 71111 },
+ { 0x957F, 71116 },
+ { 0x9580, 71121 },
+ { 0x9581, 71126 },
+ { 0x9582, 71131 },
+ { 0x9583, 71136 },
+ { 0x9584, 71141 },
+ { 0x9585, 71146 },
+ { 0x9586, 70891 },
+ { 0x9587, 70896 },
+ { 0x9588, 70901 },
+ { 0x9589, 70906 },
+ { 0x958A, 70911 },
+ { 0x958B, 70916 },
+ { 0x958C, 70921 },
+ { 0x958D, 70926 },
+ { 0x958E, 70931 },
+ { 0x958F, 70936 },
+ { 0x9590, 70941 },
+ { 0x9591, 70946 },
+ { 0x9592, 70951 },
+ { 0x9593, 70956 },
+ { 0x9594, 70961 },
+ { 0x9595, 70966 },
+ { 0x9596, 70971 },
+ { 0x9597, 70976 },
+ { 0x9598, 70981 },
+ { 0x9599, 70986 },
+ { 0x959A, 70991 },
+ { 0x959B, 70996 },
+ { 0x959C, 71001 },
+ { 0x959D, 71006 },
+ { 0x959E, 71011 },
+ { 0x959F, 71016 },
+ { 0x95A0, 73916 },
+ { 0x95A1, 73920 },
+ { 0x95A2, 73924 },
+ { 0x95A3, 73928 },
+ { 0x95A4, 73932 },
+ { 0x95A5, 73936 },
+ { 0x95A6, 73940 },
+ { 0x95A7, 73944 },
+ { 0x95A8, 73948 },
+ { 0x95A9, 73952 },
+ { 0x95AA, 73956 },
+ { 0x95AB, 73960 },
+ { 0x95AC, 73964 },
+ { 0x95AD, 73968 },
+ { 0x95AE, 73972 },
+ { 0x95AF, 73976 },
+ { 0x95B0, 73980 },
+ { 0x95B1, 73984 },
+ { 0x95B2, 73988 },
+ { 0x95B3, 73992 },
+ { 0x95B4, 73996 },
+ { 0x95B5, 74000 },
+ { 0x95B6, 74004 },
+ { 0x95B7, 74008 },
+ { 0x95B8, 74012 },
+ { 0x95B9, 74016 },
+ { 0x95BA, 73552 },
+ { 0x95BB, 73556 },
+ { 0x95BC, 73560 },
+ { 0x95BD, 73564 },
+ { 0x95BE, 73568 },
+ { 0x95BF, 73572 },
+ { 0x95C0, 73576 },
+ { 0x95C1, 73580 },
+ { 0x95C2, 73584 },
+ { 0x95C3, 73588 },
+ { 0x95C4, 73592 },
+ { 0x95C5, 73596 },
+ { 0x95C6, 73600 },
+ { 0x95C7, 73604 },
+ { 0x95C8, 73608 },
+ { 0x95C9, 73612 },
+ { 0x95CA, 73616 },
+ { 0x95CB, 73620 },
+ { 0x95CC, 73624 },
+ { 0x95CD, 73628 },
+ { 0x95CE, 73632 },
+ { 0x95CF, 73636 },
+ { 0x95D0, 73640 },
+ { 0x95D1, 73644 },
+ { 0x95D2, 73648 },
+ { 0x95D3, 73652 },
+ { 0x95D4, 73246 },
+ { 0x95D5, 73251 },
+ { 0x95D6, 73256 },
+ { 0x95D7, 73261 },
+ { 0x95D8, 73266 },
+ { 0x95D9, 73271 },
+ { 0x95DA, 73276 },
+ { 0x95DB, 73281 },
+ { 0x95DC, 73286 },
+ { 0x95DD, 73291 },
+ { 0x95DE, 73296 },
+ { 0x95DF, 73301 },
+ { 0x95E0, 73306 },
+ { 0x95E1, 73311 },
+ { 0x95E2, 73316 },
+ { 0x95E3, 73321 },
+ { 0x95E4, 73326 },
+ { 0x95E5, 73331 },
+ { 0x95E6, 73336 },
+ { 0x95E7, 73341 },
+ { 0x95E8, 73346 },
+ { 0x95E9, 73351 },
+ { 0x95EA, 73356 },
+ { 0x95EB, 73361 },
+ { 0x95EC, 73366 },
+ { 0x95ED, 73371 },
+ { 0x95EE, 72324 },
+ { 0x95EF, 72329 },
+ { 0x95F0, 72334 },
+ { 0x95F1, 72339 },
+ { 0x95F2, 72344 },
+ { 0x95F3, 72349 },
+ { 0x95F4, 72354 },
+ { 0x95F5, 72359 },
+ { 0x95F6, 72364 },
+ { 0x95F7, 72369 },
+ { 0x95F8, 72374 },
+ { 0x95F9, 72379 },
+ { 0x95FA, 72384 },
+ { 0x95FB, 72389 },
+ { 0x95FC, 72394 },
+ { 0x95FD, 72399 },
+ { 0x95FE, 72404 },
+ { 0x95FF, 72409 },
+ { 0x9600, 72414 },
+ { 0x9601, 72419 },
+ { 0x9602, 72424 },
+ { 0x9603, 72429 },
+ { 0x9604, 72434 },
+ { 0x9605, 72439 },
+ { 0x9606, 72444 },
+ { 0x9607, 72449 },
+ { 0x9608, 73786 },
+ { 0x9609, 73791 },
+ { 0x960A, 73796 },
+ { 0x960B, 73801 },
+ { 0x960C, 73806 },
+ { 0x960D, 73811 },
+ { 0x960E, 73816 },
+ { 0x960F, 73821 },
+ { 0x9610, 73826 },
+ { 0x9611, 73831 },
+ { 0x9612, 73836 },
+ { 0x9613, 73841 },
+ { 0x9614, 73846 },
+ { 0x9615, 73851 },
+ { 0x9616, 73856 },
+ { 0x9617, 73861 },
+ { 0x9618, 73866 },
+ { 0x9619, 73871 },
+ { 0x961A, 73876 },
+ { 0x961B, 73881 },
+ { 0x961C, 73886 },
+ { 0x961D, 73891 },
+ { 0x961E, 73896 },
+ { 0x961F, 73901 },
+ { 0x9620, 73906 },
+ { 0x9621, 73911 },
+ { 0x9622, 73656 },
+ { 0x9623, 73661 },
+ { 0x9624, 73666 },
+ { 0x9625, 73671 },
+ { 0x9626, 73676 },
+ { 0x9627, 73681 },
+ { 0x9628, 73686 },
+ { 0x9629, 73691 },
+ { 0x962A, 73696 },
+ { 0x962B, 73701 },
+ { 0x962C, 73706 },
+ { 0x962D, 73711 },
+ { 0x962E, 73716 },
+ { 0x962F, 73721 },
+ { 0x9630, 73726 },
+ { 0x9631, 73731 },
+ { 0x9632, 73736 },
+ { 0x9633, 73741 },
+ { 0x9634, 73746 },
+ { 0x9635, 73751 },
+ { 0x9636, 73756 },
+ { 0x9637, 73761 },
+ { 0x9638, 73766 },
+ { 0x9639, 73771 },
+ { 0x963A, 73776 },
+ { 0x963B, 73781 },
+ { 0x963C, 72927 },
+ { 0x963D, 72933 },
+ { 0x963E, 72939 },
+ { 0x963F, 72945 },
+ { 0x9640, 72951 },
+ { 0x9641, 72957 },
+ { 0x9642, 72963 },
+ { 0x9643, 72969 },
+ { 0x9644, 72975 },
+ { 0x9645, 72981 },
+ { 0x9646, 72987 },
+ { 0x9647, 72993 },
+ { 0x9648, 72999 },
+ { 0x9649, 73005 },
+ { 0x964A, 73011 },
+ { 0x964B, 73017 },
+ { 0x964C, 73023 },
+ { 0x964D, 73029 },
+ { 0x964E, 73035 },
+ { 0x964F, 73041 },
+ { 0x9650, 73047 },
+ { 0x9651, 73053 },
+ { 0x9652, 73059 },
+ { 0x9653, 73065 },
+ { 0x9654, 73071 },
+ { 0x9655, 73077 },
+ { 0x9656, 72614 },
+ { 0x9657, 72620 },
+ { 0x9658, 72626 },
+ { 0x9659, 72632 },
+ { 0x965A, 72638 },
+ { 0x965B, 72644 },
+ { 0x965C, 72650 },
+ { 0x965D, 72656 },
+ { 0x965E, 72662 },
+ { 0x965F, 72668 },
+ { 0x9660, 72674 },
+ { 0x9661, 72680 },
+ { 0x9662, 72686 },
+ { 0x9663, 72692 },
+ { 0x9664, 72698 },
+ { 0x9665, 72704 },
+ { 0x9666, 72710 },
+ { 0x9667, 72716 },
+ { 0x9668, 72722 },
+ { 0x9669, 72728 },
+ { 0x966A, 72734 },
+ { 0x966B, 72740 },
+ { 0x966C, 72746 },
+ { 0x966D, 72752 },
+ { 0x966E, 72758 },
+ { 0x966F, 72764 },
+ { 0x9670, 72146 },
+ { 0x9671, 72150 },
+ { 0x9672, 72154 },
+ { 0x9673, 72158 },
+ { 0x9674, 72162 },
+ { 0x9675, 72166 },
+ { 0x9676, 72170 },
+ { 0x9677, 72174 },
+ { 0x9678, 72178 },
+ { 0x9679, 72182 },
+ { 0x967A, 72186 },
+ { 0x967B, 72190 },
+ { 0x967C, 72194 },
+ { 0x967D, 72198 },
+ { 0x967E, 72202 },
+ { 0x967F, 72206 },
+ { 0x9680, 72210 },
+ { 0x9681, 72214 },
+ { 0x9682, 72218 },
+ { 0x9683, 72222 },
+ { 0x9684, 72226 },
+ { 0x9685, 72230 },
+ { 0x9686, 72234 },
+ { 0x9687, 72238 },
+ { 0x9688, 72242 },
+ { 0x9689, 72246 },
+ { 0x968A, 72042 },
+ { 0x968B, 72046 },
+ { 0x968C, 72050 },
+ { 0x968D, 72054 },
+ { 0x968E, 72058 },
+ { 0x968F, 72062 },
+ { 0x9690, 72066 },
+ { 0x9691, 72070 },
+ { 0x9692, 72074 },
+ { 0x9693, 72078 },
+ { 0x9694, 72082 },
+ { 0x9695, 72086 },
+ { 0x9696, 72090 },
+ { 0x9697, 72094 },
+ { 0x9698, 72098 },
+ { 0x9699, 72102 },
+ { 0x969A, 72106 },
+ { 0x969B, 72110 },
+ { 0x969C, 72114 },
+ { 0x969D, 72118 },
+ { 0x969E, 72122 },
+ { 0x969F, 72126 },
+ { 0x96A0, 72130 },
+ { 0x96A1, 72134 },
+ { 0x96A2, 72138 },
+ { 0x96A3, 72142 },
+ { 0x96A4, 71411 },
+ { 0x96A5, 71416 },
+ { 0x96A8, 70834 },
+ { 0x96A9, 70822 },
+ { 0x96AA, 70842 },
+ { 0x96AB, 70838 },
+ { 0x96AC, 70875 },
+ { 0x96AD, 70830 },
+ { 0x96AE, 70802 },
+ { 0x96AF, 70862 },
+ { 0x96B0, 70826 },
+ { 0x96B1, 70846 },
+ { 0x96B2, 70850 },
+ { 0x96B3, 70782 },
+ { 0x96B4, 70786 },
+ { 0x96B5, 70794 },
+ { 0x96B6, 70879 },
+ { 0x96B7, 70790 },
+ { 0x96B8, 70814 },
+ { 0x96B9, 70866 },
+ { 0x96BA, 70858 },
+ { 0x96BB, 70818 },
+ { 0x96BC, 70883 },
+ { 0x96BD, 70806 },
+ { 0x96BE, 70798 },
+ { 0x96BF, 70810 },
+ { 0x96C0, 70854 },
+ { 0x96C1, 69651 },
+ { 0x96C2, 69810 },
+ { 0x96C3, 69798 },
+ { 0x96C4, 69823 },
+ { 0x96C5, 69814 },
+ { 0x96C6, 69851 },
+ { 0x96C7, 69806 },
+ { 0x96C8, 69778 },
+ { 0x96C9, 69843 },
+ { 0x96CA, 69802 },
+ { 0x96CB, 69827 },
+ { 0x96CC, 69831 },
+ { 0x96CD, 69758 },
+ { 0x96CE, 69762 },
+ { 0x96CF, 69770 },
+ { 0x96D0, 69855 },
+ { 0x96D1, 69766 },
+ { 0x96D2, 69790 },
+ { 0x96D3, 69818 },
+ { 0x96D4, 69839 },
+ { 0x96D5, 69794 },
+ { 0x96D6, 69859 },
+ { 0x96D7, 69782 },
+ { 0x96D8, 69774 },
+ { 0x96D9, 69786 },
+ { 0x96DA, 69835 },
+ { 0x96DB, 71151 },
+ { 0x96DC, 70887 },
+ { 0x96DD, 69863 },
+ { 0x96DE, 69647 },
+ { 0x96DF, 69599 },
+ { 0x96E0, 69603 },
+ { 0x96E1, 69595 },
+ { 0x96E2, 71593 },
+ { 0x96E3, 71581 },
+ { 0x96E4, 71601 },
+ { 0x96E5, 71597 },
+ { 0x96E6, 71630 },
+ { 0x96E7, 71589 },
+ { 0x96E8, 71561 },
+ { 0x96E9, 71621 },
+ { 0x96EA, 71585 },
+ { 0x96EB, 71605 },
+ { 0x96EC, 71609 },
+ { 0x96ED, 71541 },
+ { 0x96EE, 71545 },
+ { 0x96EF, 71553 },
+ { 0x96F0, 71634 },
+ { 0x96F1, 71549 },
+ { 0x96F2, 71573 },
+ { 0x96F3, 71625 },
+ { 0x96F4, 71617 },
+ { 0x96F5, 71577 },
+ { 0x96F6, 71638 },
+ { 0x96F7, 71565 },
+ { 0x96F8, 71557 },
+ { 0x96F9, 71569 },
+ { 0x96FA, 71613 },
+ { 0x96FB, 71219 },
+ { 0x96FC, 71374 },
+ { 0x96FD, 71362 },
+ { 0x96FE, 71387 },
+ { 0x96FF, 71378 },
+ { 0x9700, 71421 },
+ { 0x9701, 71370 },
+ { 0x9702, 71342 },
+ { 0x9703, 71407 },
+ { 0x9704, 71366 },
+ { 0x9705, 71391 },
+ { 0x9706, 71395 },
+ { 0x9707, 71322 },
+ { 0x9708, 71326 },
+ { 0x9709, 71334 },
+ { 0x970A, 71425 },
+ { 0x970B, 71330 },
+ { 0x970C, 71354 },
+ { 0x970D, 71382 },
+ { 0x970E, 71403 },
+ { 0x970F, 71358 },
+ { 0x9710, 71429 },
+ { 0x9711, 71346 },
+ { 0x9712, 71338 },
+ { 0x9713, 71350 },
+ { 0x9714, 71399 },
+ { 0x9715, 71646 },
+ { 0x9716, 71642 },
+ { 0x9717, 71433 },
+ { 0x9718, 71215 },
+ { 0x9719, 71207 },
+ { 0x971A, 71211 },
+ { 0x971B, 71203 },
+ { 0x971C, 70347 },
+ { 0x971D, 70332 },
+ { 0x971E, 70357 },
+ { 0x971F, 70352 },
+ { 0x9720, 70393 },
+ { 0x9721, 70342 },
+ { 0x9722, 70307 },
+ { 0x9723, 70382 },
+ { 0x9724, 70337 },
+ { 0x9725, 70362 },
+ { 0x9726, 70367 },
+ { 0x9727, 70282 },
+ { 0x9728, 70287 },
+ { 0x9729, 70297 },
+ { 0x972A, 70398 },
+ { 0x972B, 70292 },
+ { 0x972C, 70322 },
+ { 0x972D, 70387 },
+ { 0x972E, 70377 },
+ { 0x972F, 70327 },
+ { 0x9730, 70403 },
+ { 0x9731, 70312 },
+ { 0x9732, 70302 },
+ { 0x9733, 70317 },
+ { 0x9734, 70372 },
+ { 0x9735, 69887 },
+ { 0x9736, 70086 },
+ { 0x9737, 70071 },
+ { 0x9738, 70102 },
+ { 0x9739, 70091 },
+ { 0x973A, 70132 },
+ { 0x973B, 70081 },
+ { 0x973C, 70046 },
+ { 0x973D, 70127 },
+ { 0x973E, 70076 },
+ { 0x973F, 70107 },
+ { 0x9740, 70112 },
+ { 0x9741, 70021 },
+ { 0x9742, 70026 },
+ { 0x9743, 70036 },
+ { 0x9744, 70137 },
+ { 0x9745, 70031 },
+ { 0x9746, 70061 },
+ { 0x9747, 70096 },
+ { 0x9748, 70122 },
+ { 0x9749, 70066 },
+ { 0x974A, 70142 },
+ { 0x974B, 70051 },
+ { 0x974C, 70041 },
+ { 0x974D, 70056 },
+ { 0x974E, 70117 },
+ { 0x974F, 70413 },
+ { 0x9750, 70408 },
+ { 0x9751, 70147 },
+ { 0x9752, 69882 },
+ { 0x9753, 69872 },
+ { 0x9754, 69877 },
+ { 0x9755, 69867 },
+ { 0x9756, 73441 },
+ { 0x9757, 73426 },
+ { 0x9758, 73451 },
+ { 0x9759, 73446 },
+ { 0x975A, 73487 },
+ { 0x975B, 73436 },
+ { 0x975C, 73401 },
+ { 0x975D, 73476 },
+ { 0x975E, 73431 },
+ { 0x975F, 73456 },
+ { 0x9760, 73461 },
+ { 0x9761, 73376 },
+ { 0x9762, 73381 },
+ { 0x9763, 73391 },
+ { 0x9764, 73492 },
+ { 0x9765, 73386 },
+ { 0x9766, 73416 },
+ { 0x9767, 73481 },
+ { 0x9768, 73471 },
+ { 0x9769, 73421 },
+ { 0x976A, 73497 },
+ { 0x976B, 73406 },
+ { 0x976C, 73396 },
+ { 0x976D, 73411 },
+ { 0x976E, 73466 },
+ { 0x976F, 72320 },
+ { 0x9770, 72519 },
+ { 0x9771, 72504 },
+ { 0x9772, 72535 },
+ { 0x9773, 72524 },
+ { 0x9774, 72565 },
+ { 0x9775, 72514 },
+ { 0x9776, 72479 },
+ { 0x9777, 72560 },
+ { 0x9778, 72509 },
+ { 0x9779, 72540 },
+ { 0x977A, 72545 },
+ { 0x977B, 72454 },
+ { 0x977C, 72459 },
+ { 0x977D, 72469 },
+ { 0x977E, 72570 },
+ { 0x977F, 72464 },
+ { 0x9780, 72494 },
+ { 0x9781, 72529 },
+ { 0x9782, 72555 },
+ { 0x9783, 72499 },
+ { 0x9784, 72575 },
+ { 0x9785, 72484 },
+ { 0x9786, 72474 },
+ { 0x9787, 72489 },
+ { 0x9788, 72550 },
+ { 0x9789, 73507 },
+ { 0x978A, 73502 },
+ { 0x978B, 72580 },
+ { 0x978C, 72315 },
+ { 0x978D, 72255 },
+ { 0x978E, 72260 },
+ { 0x978F, 72250 },
+ { 0x9790, 73161 },
+ { 0x9791, 73143 },
+ { 0x9792, 73173 },
+ { 0x9793, 73167 },
+ { 0x9794, 73216 },
+ { 0x9795, 73155 },
+ { 0x9796, 73113 },
+ { 0x9797, 73203 },
+ { 0x9798, 73149 },
+ { 0x9799, 73179 },
+ { 0x979A, 73185 },
+ { 0x979B, 73083 },
+ { 0x979C, 73089 },
+ { 0x979D, 73101 },
+ { 0x979E, 73222 },
+ { 0x979F, 73095 },
+ { 0x97A0, 73131 },
+ { 0x97A1, 73209 },
+ { 0x97A2, 73197 },
+ { 0x97A3, 73137 },
+ { 0x97A4, 73228 },
+ { 0x97A5, 73119 },
+ { 0x97A6, 73107 },
+ { 0x97A7, 73125 },
+ { 0x97A8, 73191 },
+ { 0x97A9, 72609 },
+ { 0x97AA, 72848 },
+ { 0x97AB, 72830 },
+ { 0x97AC, 72867 },
+ { 0x97AD, 72854 },
+ { 0x97AE, 72903 },
+ { 0x97AF, 72842 },
+ { 0x97B0, 72800 },
+ { 0x97B1, 72897 },
+ { 0x97B2, 72836 },
+ { 0x97B3, 72873 },
+ { 0x97B4, 72879 },
+ { 0x97B5, 72770 },
+ { 0x97B6, 72776 },
+ { 0x97B7, 72788 },
+ { 0x97B8, 72909 },
+ { 0x97B9, 72782 },
+ { 0x97BA, 72818 },
+ { 0x97BB, 72860 },
+ { 0x97BC, 72891 },
+ { 0x97BD, 72824 },
+ { 0x97BE, 72915 },
+ { 0x97BF, 72806 },
+ { 0x97C0, 72794 },
+ { 0x97C1, 72812 },
+ { 0x97C2, 72885 },
+ { 0x97C3, 73240 },
+ { 0x97C4, 73234 },
+ { 0x97C5, 72921 },
+ { 0x97C6, 72603 },
+ { 0x97C7, 72591 },
+ { 0x97C8, 72597 },
+ { 0x97C9, 72585 },
+ { 0x97CA, 70871 },
+ { 0x97CB, 69847 },
+ { 0x97CE, 69631 },
+ { 0x97CF, 69607 },
+ { 0x97D0, 69615 },
+ { 0x97D1, 69643 },
+ { 0x97D2, 69623 },
+ { 0x97D3, 69619 },
+ { 0x97D4, 69611 },
+ { 0x97D5, 69639 },
+ { 0x97D6, 69635 },
+ { 0x97D7, 69627 },
+ { 0x97D8, 74044 },
+ { 0x97D9, 74020 },
+ { 0x97DA, 74028 },
+ { 0x97DB, 74056 },
+ { 0x97DC, 74036 },
+ { 0x97DD, 74032 },
+ { 0x97DE, 74024 },
+ { 0x97DF, 74052 },
+ { 0x97E0, 74048 },
+ { 0x97E1, 74040 },
+ { 0x97E2, 73536 },
+ { 0x97E3, 73512 },
+ { 0x97E4, 73520 },
+ { 0x97E5, 73548 },
+ { 0x97E6, 73528 },
+ { 0x97E7, 73524 },
+ { 0x97E8, 73516 },
+ { 0x97E9, 73544 },
+ { 0x97EA, 73540 },
+ { 0x97EB, 73532 },
+ { 0x97EC, 72295 },
+ { 0x97ED, 72265 },
+ { 0x97EE, 72275 },
+ { 0x97EF, 72310 },
+ { 0x97F0, 72285 },
+ { 0x97F1, 72280 },
+ { 0x97F2, 72270 },
+ { 0x97F3, 72305 },
+ { 0x97F4, 72300 },
+ { 0x97F5, 72290 },
+ { 0x97F6, 72026 },
+ { 0x97F7, 72002 },
+ { 0x97F8, 72010 },
+ { 0x97F9, 72038 },
+ { 0x97FA, 72018 },
+ { 0x97FB, 72014 },
+ { 0x97FC, 72006 },
+ { 0x97FD, 72034 },
+ { 0x97FE, 72030 },
+ { 0x97FF, 72022 },
+ { 0xA000, 41048 },
+ { 0xA001, 41145 },
+ { 0xA002, 41100 },
+ { 0xA003, 41126 },
+ { 0xA004, 41011 },
+ { 0xA005, 41119 },
+ { 0xA006, 41164 },
+ { 0xA007, 41006 },
+ { 0xA008, 41040 },
+ { 0xA009, 41159 },
+ { 0xA00A, 41077 },
+ { 0xA00B, 41062 },
+ { 0xA00C, 41025 },
+ { 0xA00D, 41140 },
+ { 0xA00E, 41114 },
+ { 0xA00F, 41092 },
+ { 0xA010, 40996 },
+ { 0xA011, 41030 },
+ { 0xA012, 41149 },
+ { 0xA013, 41067 },
+ { 0xA014, 41052 },
+ { 0xA015, 41015 },
+ { 0xA016, 41130 },
+ { 0xA017, 41104 },
+ { 0xA018, 41082 },
+ { 0xA019, 41001 },
+ { 0xA01A, 41035 },
+ { 0xA01B, 41154 },
+ { 0xA01C, 41072 },
+ { 0xA01D, 41057 },
+ { 0xA01E, 41020 },
+ { 0xA01F, 41135 },
+ { 0xA020, 41109 },
+ { 0xA021, 41087 },
+ { 0xA022, 41097 },
+ { 0xA023, 41174 },
+ { 0xA024, 41171 },
+ { 0xA025, 41186 },
+ { 0xA026, 41177 },
+ { 0xA027, 41180 },
+ { 0xA028, 41168 },
+ { 0xA029, 41183 },
+ { 0xA02A, 41123 },
+ { 0xA02B, 41045 },
+ { 0xA030, 31231 },
+ { 0xA031, 31382 },
+ { 0xA032, 31385 },
+ { 0xA033, 31388 },
+ { 0xA034, 31391 },
+ { 0xA035, 31394 },
+ { 0xA036, 31397 },
+ { 0xA037, 31400 },
+ { 0xA038, 31403 },
+ { 0xA039, 31406 },
+ { 0xA03A, 31409 },
+ { 0xA03B, 31412 },
+ { 0xA03C, 31415 },
+ { 0xA03D, 31418 },
+ { 0xA03E, 31421 },
+ { 0xA03F, 31424 },
+ { 0xA040, 31427 },
+ { 0xA041, 31430 },
+ { 0xA042, 31433 },
+ { 0xA043, 31436 },
+ { 0xA044, 31439 },
+ { 0xA045, 31442 },
+ { 0xA046, 31445 },
+ { 0xA047, 31448 },
+ { 0xA048, 31451 },
+ { 0xA049, 31454 },
+ { 0xA04A, 31457 },
+ { 0xA04B, 31460 },
+ { 0xA04C, 31463 },
+ { 0xA04D, 31466 },
+ { 0xA04E, 31469 },
+ { 0xA04F, 31472 },
+ { 0xA050, 31475 },
+ { 0xA051, 31478 },
+ { 0xA052, 31481 },
+ { 0xA053, 31484 },
+ { 0xA054, 31487 },
+ { 0xA055, 31490 },
+ { 0xA056, 31493 },
+ { 0xA057, 31496 },
+ { 0xA058, 31499 },
+ { 0xA059, 31502 },
+ { 0xA05A, 31505 },
+ { 0xA05B, 31508 },
+ { 0xA05C, 31511 },
+ { 0xA05D, 31514 },
+ { 0xA05E, 31517 },
+ { 0xA05F, 31520 },
+ { 0xA060, 31523 },
+ { 0xA061, 31526 },
+ { 0xA062, 31227 },
+ { 0xA063, 31235 },
+ { 0xA064, 31238 },
+ { 0xA065, 31241 },
+ { 0xA066, 31244 },
+ { 0xA067, 31247 },
+ { 0xA068, 31250 },
+ { 0xA069, 31253 },
+ { 0xA06A, 31256 },
+ { 0xA06B, 31259 },
+ { 0xA06C, 31262 },
+ { 0xA06D, 31265 },
+ { 0xA06E, 31268 },
+ { 0xA06F, 31271 },
+ { 0xA070, 31274 },
+ { 0xA071, 31277 },
+ { 0xA072, 31280 },
+ { 0xA073, 31283 },
+ { 0xA074, 31286 },
+ { 0xA075, 31289 },
+ { 0xA076, 31292 },
+ { 0xA077, 31295 },
+ { 0xA078, 31298 },
+ { 0xA079, 31301 },
+ { 0xA07A, 31304 },
+ { 0xA07B, 31307 },
+ { 0xA07C, 31310 },
+ { 0xA07D, 31313 },
+ { 0xA07E, 31316 },
+ { 0xA07F, 31319 },
+ { 0xA080, 31322 },
+ { 0xA081, 31325 },
+ { 0xA082, 31328 },
+ { 0xA083, 31331 },
+ { 0xA084, 31334 },
+ { 0xA085, 31337 },
+ { 0xA086, 31340 },
+ { 0xA087, 31343 },
+ { 0xA088, 31346 },
+ { 0xA089, 31349 },
+ { 0xA08A, 31352 },
+ { 0xA08B, 31355 },
+ { 0xA08C, 31358 },
+ { 0xA08D, 31361 },
+ { 0xA08E, 31364 },
+ { 0xA08F, 31367 },
+ { 0xA090, 31370 },
+ { 0xA091, 31373 },
+ { 0xA092, 31376 },
+ { 0xA093, 31379 },
+ { 0xC001, 53726 },
+ { 0xC020, 7517 },
+ { 0xC021, 7564 },
+ { 0xC022, 7551 },
+ { 0xC023, 7527 },
+ { 0xC024, 7521 },
+ { 0xC025, 7530 },
+ { 0xC026, 7546 },
+ { 0xC027, 7556 },
+ { 0xC028, 7203 },
+ { 0xC029, 7514 },
+ { 0xC02A, 7538 },
+ { 0xC02B, 7206 },
+ { 0xC02C, 7211 },
+ { 0xC02D, 7570 },
+ { 0xC02E, 7192 },
+ { 0xC02F, 7536 },
+ { 0xC030, 7231 },
+ { 0xC031, 7213 },
+ { 0xC032, 7219 },
+ { 0xC033, 7240 },
+ { 0xC034, 7225 },
+ { 0xC035, 7222 },
+ { 0xC036, 7216 },
+ { 0xC037, 7237 },
+ { 0xC038, 7234 },
+ { 0xC039, 7228 },
+ { 0xC03A, 7209 },
+ { 0xC03B, 7554 },
+ { 0xC03C, 7548 },
+ { 0xC03D, 7524 },
+ { 0xC03E, 7567 },
+ { 0xC03F, 7540 },
+ { 0xC040, 7561 },
+ { 0xC041, 7376 },
+ { 0xC042, 7381 },
+ { 0xC043, 7386 },
+ { 0xC044, 7391 },
+ { 0xC045, 7396 },
+ { 0xC046, 7401 },
+ { 0xC047, 7406 },
+ { 0xC048, 7411 },
+ { 0xC049, 7416 },
+ { 0xC04A, 7421 },
+ { 0xC04B, 7426 },
+ { 0xC04C, 7431 },
+ { 0xC04D, 7436 },
+ { 0xC04E, 7441 },
+ { 0xC04F, 7446 },
+ { 0xC050, 7451 },
+ { 0xC051, 7456 },
+ { 0xC052, 7461 },
+ { 0xC053, 7466 },
+ { 0xC054, 7471 },
+ { 0xC055, 7476 },
+ { 0xC056, 7481 },
+ { 0xC057, 7486 },
+ { 0xC058, 7491 },
+ { 0xC059, 7496 },
+ { 0xC05A, 7501 },
+ { 0xC05B, 7199 },
+ { 0xC05C, 7533 },
+ { 0xC05D, 7510 },
+ { 0xC05E, 7558 },
+ { 0xC05F, 7189 },
+ { 0xC060, 7243 },
+ { 0xC061, 7246 },
+ { 0xC062, 7251 },
+ { 0xC063, 7256 },
+ { 0xC064, 7261 },
+ { 0xC065, 7266 },
+ { 0xC066, 7271 },
+ { 0xC067, 7276 },
+ { 0xC068, 7281 },
+ { 0xC069, 7286 },
+ { 0xC06A, 7291 },
+ { 0xC06B, 7296 },
+ { 0xC06C, 7301 },
+ { 0xC06D, 7306 },
+ { 0xC06E, 7311 },
+ { 0xC06F, 7316 },
+ { 0xC070, 7321 },
+ { 0xC071, 7326 },
+ { 0xC072, 7331 },
+ { 0xC073, 7336 },
+ { 0xC074, 7341 },
+ { 0xC075, 7346 },
+ { 0xC076, 7351 },
+ { 0xC077, 7356 },
+ { 0xC078, 7361 },
+ { 0xC079, 7366 },
+ { 0xC07A, 7371 },
+ { 0xC07B, 7195 },
+ { 0xC07C, 7543 },
+ { 0xC07D, 7506 },
+ { 0xC07E, 7519 },
+ { 0xC07F, 30315 },
+ { 0xC100, 66346 },
+ { 0xC101, 66348 },
+ { 0xC102, 66350 },
+ { 0xC103, 66352 },
+ { 0xC104, 66354 },
+ { 0xC105, 66356 },
+ { 0xC106, 66358 },
+ { 0xC107, 66360 },
+ { 0xC108, 66362 },
+ { 0xC109, 66364 },
+ { 0xC10A, 66366 },
+ { 0xC10B, 66368 },
+ { 0xC10C, 66370 },
+ { 0xC10D, 66372 },
+ { 0xC10E, 66374 },
+ { 0xC10F, 66376 },
+ { 0xC110, 66378 },
+ { 0xC111, 66380 },
+ { 0xC112, 66382 },
+ { 0xC113, 66384 },
+ { 0xC114, 66386 },
+ { 0xC115, 66388 },
+ { 0xC116, 66390 },
+ { 0xC117, 66392 },
+ { 0xC118, 66394 },
+ { 0xC119, 66396 },
+ { 0xC11A, 66398 },
+ { 0xC11B, 66400 },
+ { 0xC11C, 66402 },
+ { 0xC11D, 66404 },
+ { 0xC11E, 66406 },
+ { 0xC11F, 66408 },
+ { 0xC120, 66410 },
+ { 0xC121, 66412 },
+ { 0xC122, 66414 },
+ { 0xC123, 66416 },
+ { 0xC124, 66418 },
+ { 0xC125, 66420 },
+ { 0xC126, 66422 },
+ { 0xC127, 66424 },
+ { 0xC128, 66426 },
+ { 0xC129, 66428 },
+ { 0xC12A, 66430 },
+ { 0xC12B, 66432 },
+ { 0xC12C, 66434 },
+ { 0xC12D, 66436 },
+ { 0xC12E, 66438 },
+ { 0xC12F, 66440 },
+ { 0xC130, 66442 },
+ { 0xC131, 66444 },
+ { 0xC132, 66446 },
+ { 0xC133, 66448 },
+ { 0xC134, 66450 },
+ { 0xC135, 66452 },
+ { 0xC136, 66454 },
+ { 0xC137, 66456 },
+ { 0xC138, 66458 },
+ { 0xC139, 66460 },
+ { 0xC13A, 66462 },
+ { 0xC13B, 66464 },
+ { 0xC13C, 66466 },
+ { 0xC13D, 66468 },
+ { 0xC13E, 66470 },
+ { 0xC13F, 66472 },
+ { 0xC140, 66474 },
+ { 0xC141, 66476 },
+ { 0xC142, 66478 },
+ { 0xC143, 66480 },
+ { 0xC144, 66482 },
+ { 0xC145, 66484 },
+ { 0xC146, 66486 },
+ { 0xC147, 66488 },
+ { 0xC148, 66490 },
+ { 0xC149, 66492 },
+ { 0xC14A, 66494 },
+ { 0xC14B, 66496 },
+ { 0xC14C, 66498 },
+ { 0xC14D, 66500 },
+ { 0xC14E, 66502 },
+ { 0xC14F, 66504 },
+ { 0xC150, 66506 },
+ { 0xC151, 66508 },
+ { 0xC152, 66510 },
+ { 0xC153, 66512 },
+ { 0xC154, 66514 },
+ { 0xC155, 66516 },
+ { 0xC156, 66518 },
+ { 0xC157, 66520 },
+ { 0xC158, 66522 },
+ { 0xC159, 66524 },
+ { 0xC15A, 66526 },
+ { 0xC15B, 66528 },
+ { 0xC15C, 66530 },
+ { 0xC15D, 66532 },
+ { 0xC15E, 66534 },
+ { 0xC15F, 66536 },
+ { 0xC160, 66538 },
+ { 0xC161, 66540 },
+ { 0xC162, 66542 },
+ { 0xC163, 66544 },
+ { 0xC164, 66546 },
+ { 0xC165, 66548 },
+ { 0xC166, 66550 },
+ { 0xC167, 66552 },
+ { 0xC168, 66554 },
+ { 0xC169, 66556 },
+ { 0xC16A, 66558 },
+ { 0xC16B, 66560 },
+ { 0xC16C, 66562 },
+ { 0xC16D, 66564 },
+ { 0xC16E, 66566 },
+ { 0xC16F, 66568 },
+ { 0xC170, 66570 },
+ { 0xC171, 66572 },
+ { 0xC172, 66574 },
+ { 0xC173, 66576 },
+ { 0xC174, 66578 },
+ { 0xC175, 66580 },
+ { 0xC176, 66582 },
+ { 0xC177, 66584 },
+ { 0xC178, 66586 },
+ { 0xC179, 66588 },
+ { 0xC17A, 66590 },
+ { 0xC17B, 66592 },
+ { 0xC17C, 66594 },
+ { 0xC17D, 66596 },
+ { 0xC17E, 66598 },
+ { 0xC17F, 66600 },
+ { 0xC180, 66602 },
+ { 0xC181, 66604 },
+ { 0xC182, 66606 },
+ { 0xC183, 66608 },
+ { 0xC184, 66610 },
+ { 0xC185, 66612 },
+ { 0xC186, 66614 },
+ { 0xC187, 66616 },
+ { 0xC188, 66618 },
+ { 0xC189, 66620 },
+ { 0xC18A, 66622 },
+ { 0xC18B, 66624 },
+ { 0xC18C, 66626 },
+ { 0xC18D, 66628 },
+ { 0xC18E, 66630 },
+ { 0xC18F, 66632 },
+ { 0xC190, 66634 },
+ { 0xC191, 66636 },
+ { 0xC192, 66638 },
+ { 0xC193, 66640 },
+ { 0xC194, 66642 },
+ { 0xC195, 66644 },
+ { 0xC196, 66646 },
+ { 0xC197, 66648 },
+ { 0xC198, 66650 },
+ { 0xC199, 66652 },
+ { 0xC19A, 66654 },
+ { 0xC19B, 66656 },
+ { 0xC19C, 66658 },
+ { 0xC19D, 66660 },
+ { 0xC19E, 66662 },
+ { 0xC19F, 66664 },
+ { 0xC1A0, 66666 },
+ { 0xC1A1, 66668 },
+ { 0xC1A2, 66670 },
+ { 0xC1A3, 66672 },
+ { 0xC1A4, 66674 },
+ { 0xC1A5, 66676 },
+ { 0xC1A6, 66678 },
+ { 0xC1A7, 66680 },
+ { 0xC1A8, 66682 },
+ { 0xC1A9, 66684 },
+ { 0xC1AA, 66686 },
+ { 0xC1AB, 66688 },
+ { 0xC1AC, 66690 },
+ { 0xC1AD, 66692 },
+ { 0xC1AE, 66694 },
+ { 0xC1AF, 66696 },
+ { 0xC1B0, 66698 },
+ { 0xC1B1, 66700 },
+ { 0xC1B2, 66702 },
+ { 0xC1B3, 66704 },
+ { 0xC1B4, 66706 },
+ { 0xC1B5, 66708 },
+ { 0xC1B6, 66710 },
+ { 0xC1B7, 66712 },
+ { 0xC1B8, 66714 },
+ { 0xC1B9, 66716 },
+ { 0xC1BA, 66718 },
+ { 0xC1BB, 66720 },
+ { 0xC1BC, 66722 },
+ { 0xC1BD, 66724 },
+ { 0xC1BE, 66726 },
+ { 0xC1BF, 66728 },
+ { 0xC1C0, 66730 },
+ { 0xC1C1, 66732 },
+ { 0xC1C2, 66734 },
+ { 0xC1C3, 66736 },
+ { 0xC1C4, 66738 },
+ { 0xC1C5, 66740 },
+ { 0xC1C6, 66742 },
+ { 0xC1C7, 66744 },
+ { 0xC1C8, 66746 },
+ { 0xC1C9, 66748 },
+ { 0xC1CA, 66750 },
+ { 0xC1CB, 66752 },
+ { 0xC1CC, 66754 },
+ { 0xC1CD, 66756 },
+ { 0xC1CE, 66758 },
+ { 0xC1CF, 66760 },
+ { 0xC1D0, 66762 },
+ { 0xC1D1, 66764 },
+ { 0xC1D2, 66766 },
+ { 0xC1D3, 66768 },
+ { 0xC1D4, 66770 },
+ { 0xC1D5, 66772 },
+ { 0xC1D6, 66774 },
+ { 0xC1D7, 66776 },
+ { 0xC1D8, 66778 },
+ { 0xC1D9, 66780 },
+ { 0xC1DA, 66782 },
+ { 0xC1DB, 66784 },
+ { 0xC1DC, 66786 },
+ { 0xC1DD, 66788 },
+ { 0xC1DE, 66790 },
+ { 0xC1DF, 66792 },
+ { 0xC1E0, 66794 },
+ { 0xC1E1, 66796 },
+ { 0xC1E2, 66798 },
+ { 0xC1E3, 66800 },
+ { 0xC1E4, 66802 },
+ { 0xC1E5, 66804 },
+ { 0xC1E6, 66806 },
+ { 0xC1E7, 66808 },
+ { 0xC1E8, 66810 },
+ { 0xC1E9, 66812 },
+ { 0xC1EA, 66814 },
+ { 0xC1EB, 66816 },
+ { 0xC1EC, 66818 },
+ { 0xC1ED, 66820 },
+ { 0xC1EE, 66822 },
+ { 0xC1EF, 66824 },
+};
+#define UNICODE_CHARNAME_MAX_LENGTH 83
+#define UNICODE_CHARNAME_MAX_WORDS 13
diff --git a/lib/uninorm.h b/lib/uninorm.h
new file mode 100644
index 00000000..6850967e
--- /dev/null
+++ b/lib/uninorm.h
@@ -0,0 +1,248 @@
+/* Normalization forms (composition and decomposition) of Unicode strings.
+ Copyright (C) 2001-2002, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _UNINORM_H
+#define _UNINORM_H
+
+/* Get LIBUNISTRING_DLL_VARIABLE. */
+#include <unistring/woe32dll.h>
+
+/* Get size_t. */
+#include <stddef.h>
+
+#include "unitypes.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Conventions:
+
+ All functions prefixed with u8_ operate on UTF-8 encoded strings.
+ Their unit is an uint8_t (1 byte).
+
+ All functions prefixed with u16_ operate on UTF-16 encoded strings.
+ Their unit is an uint16_t (a 2-byte word).
+
+ All functions prefixed with u32_ operate on UCS-4 encoded strings.
+ Their unit is an uint32_t (a 4-byte word).
+
+ All argument pairs (s, n) denote a Unicode string s[0..n-1] with exactly
+ n units.
+
+ Functions returning a string result take a (resultbuf, lengthp) argument
+ pair. If resultbuf is not NULL and the result fits into *lengthp units,
+ it is put in resultbuf, and resultbuf is returned. Otherwise, a freshly
+ allocated string is returned. In both cases, *lengthp is set to the
+ length (number of units) of the returned string. In case of error,
+ NULL is returned and errno is set. */
+
+
+enum
+{
+ UC_DECOMP_CANONICAL,/* Canonical decomposition. */
+ UC_DECOMP_FONT, /* <font> A font variant (e.g. a blackletter form). */
+ UC_DECOMP_NOBREAK, /* <noBreak> A no-break version of a space or hyphen. */
+ UC_DECOMP_INITIAL, /* <initial> An initial presentation form (Arabic). */
+ UC_DECOMP_MEDIAL, /* <medial> A medial presentation form (Arabic). */
+ UC_DECOMP_FINAL, /* <final> A final presentation form (Arabic). */
+ UC_DECOMP_ISOLATED,/* <isolated> An isolated presentation form (Arabic). */
+ UC_DECOMP_CIRCLE, /* <circle> An encircled form. */
+ UC_DECOMP_SUPER, /* <super> A superscript form. */
+ UC_DECOMP_SUB, /* <sub> A subscript form. */
+ UC_DECOMP_VERTICAL,/* <vertical> A vertical layout presentation form. */
+ UC_DECOMP_WIDE, /* <wide> A wide (or zenkaku) compatibility character. */
+ UC_DECOMP_NARROW, /* <narrow> A narrow (or hankaku) compatibility character. */
+ UC_DECOMP_SMALL, /* <small> A small variant form (CNS compatibility). */
+ UC_DECOMP_SQUARE, /* <square> A CJK squared font variant. */
+ UC_DECOMP_FRACTION,/* <fraction> A vulgar fraction form. */
+ UC_DECOMP_COMPAT /* <compat> Otherwise unspecified compatibility character. */
+};
+
+/* Maximum size of decomposition of a single Unicode character. */
+#define UC_DECOMPOSITION_MAX_LENGTH 32
+
+/* Return the character decomposition mapping of a Unicode character.
+ DECOMPOSITION must point to an array of at least UC_DECOMPOSITION_MAX_LENGTH
+ ucs_t elements.
+ When a decomposition exists, DECOMPOSITION[0..N-1] and *DECOMP_TAG are
+ filled and N is returned. Otherwise -1 is returned. */
+extern int
+ uc_decomposition (ucs4_t uc, int *decomp_tag, ucs4_t *decomposition);
+
+/* Return the canonical character decomposition mapping of a Unicode character.
+ DECOMPOSITION must point to an array of at least UC_DECOMPOSITION_MAX_LENGTH
+ ucs_t elements.
+ When a decomposition exists, DECOMPOSITION[0..N-1] is filled and N is
+ returned. Otherwise -1 is returned. */
+extern int
+ uc_canonical_decomposition (ucs4_t uc, ucs4_t *decomposition);
+
+
+/* Attempt to combine the Unicode characters uc1, uc2.
+ uc1 is known to have canonical combining class 0.
+ Return the combination of uc1 and uc2, if it exists.
+ Return 0 otherwise.
+ Not all decompositions can be recombined using this function. See the
+ Unicode file CompositionExclusions.txt for details. */
+extern ucs4_t
+ uc_composition (ucs4_t uc1, ucs4_t uc2);
+
+
+/* An object of type uninorm_t denotes a Unicode normalization form. */
+struct unicode_normalization_form;
+typedef const struct unicode_normalization_form *uninorm_t;
+
+/* UNINORM_NFD: Normalization form D: canonical decomposition. */
+extern LIBUNISTRING_DLL_VARIABLE const struct unicode_normalization_form uninorm_nfd;
+#define UNINORM_NFD (&uninorm_nfd)
+
+/* UNINORM_NFC: Normalization form C: canonical decomposition, then
+ canonical composition. */
+extern LIBUNISTRING_DLL_VARIABLE const struct unicode_normalization_form uninorm_nfc;
+#define UNINORM_NFC (&uninorm_nfc)
+
+/* UNINORM_NFKD: Normalization form KD: compatibility decomposition. */
+extern LIBUNISTRING_DLL_VARIABLE const struct unicode_normalization_form uninorm_nfkd;
+#define UNINORM_NFKD (&uninorm_nfkd)
+
+/* UNINORM_NFKC: Normalization form KC: compatibility decomposition, then
+ canonical composition. */
+extern LIBUNISTRING_DLL_VARIABLE const struct unicode_normalization_form uninorm_nfkc;
+#define UNINORM_NFKC (&uninorm_nfkc)
+
+/* Test whether a normalization form does compatibility decomposition. */
+#define uninorm_is_compat_decomposing(nf) \
+ ((* (const unsigned int *) (nf) >> 0) & 1)
+
+/* Test whether a normalization form includes canonical composition. */
+#define uninorm_is_composing(nf) \
+ ((* (const unsigned int *) (nf) >> 1) & 1)
+
+/* Return the decomposing variant of a normalization form.
+ This maps NFC,NFD -> NFD and NFKC,NFKD -> NFKD. */
+extern uninorm_t uninorm_decomposing_form (uninorm_t nf);
+
+
+/* Return the specified normalization form of a string. */
+extern uint8_t *
+ u8_normalize (uninorm_t nf, const uint8_t *s, size_t n,
+ uint8_t *resultbuf, size_t *lengthp);
+extern uint16_t *
+ u16_normalize (uninorm_t nf, const uint16_t *s, size_t n,
+ uint16_t *resultbuf, size_t *lengthp);
+extern uint32_t *
+ u32_normalize (uninorm_t nf, const uint32_t *s, size_t n,
+ uint32_t *resultbuf, size_t *lengthp);
+
+
+/* Compare S1 and S2, ignoring differences in normalization.
+ NF must be either UNINORM_NFD or UNINORM_NFKD.
+ If successful, set *RESULTP to -1 if S1 < S2, 0 if S1 = S2, 1 if S1 > S2, and
+ return 0. Upon failure, return -1 with errno set. */
+extern int
+ u8_normcmp (const uint8_t *s1, size_t n1, const uint8_t *s2, size_t n2,
+ uninorm_t nf, int *resultp);
+extern int
+ u16_normcmp (const uint16_t *s1, size_t n1, const uint16_t *s2, size_t n2,
+ uninorm_t nf, int *resultp);
+extern int
+ u32_normcmp (const uint32_t *s1, size_t n1, const uint32_t *s2, size_t n2,
+ uninorm_t nf, int *resultp);
+
+
+/* Converts the string S of length N to a NUL-terminated byte sequence, in such
+ a way that comparing uN_normxfrm (S1) and uN_normxfrm (S2) with uN_cmp2() is
+ equivalent to comparing S1 and S2 with uN_normcoll().
+ NF must be either UNINORM_NFC or UNINORM_NFKC. */
+extern char *
+ u8_normxfrm (const uint8_t *s, size_t n, uninorm_t nf,
+ char *resultbuf, size_t *lengthp);
+extern char *
+ u16_normxfrm (const uint16_t *s, size_t n, uninorm_t nf,
+ char *resultbuf, size_t *lengthp);
+extern char *
+ u32_normxfrm (const uint32_t *s, size_t n, uninorm_t nf,
+ char *resultbuf, size_t *lengthp);
+
+
+/* Compare S1 and S2, ignoring differences in normalization, using the
+ collation rules of the current locale.
+ NF must be either UNINORM_NFC or UNINORM_NFKC.
+ If successful, set *RESULTP to -1 if S1 < S2, 0 if S1 = S2, 1 if S1 > S2, and
+ return 0. Upon failure, return -1 with errno set. */
+extern int
+ u8_normcoll (const uint8_t *s1, size_t n1, const uint8_t *s2, size_t n2,
+ uninorm_t nf, int *resultp);
+extern int
+ u16_normcoll (const uint16_t *s1, size_t n1, const uint16_t *s2, size_t n2,
+ uninorm_t nf, int *resultp);
+extern int
+ u32_normcoll (const uint32_t *s1, size_t n1, const uint32_t *s2, size_t n2,
+ uninorm_t nf, int *resultp);
+
+
+/* Normalization of a stream of Unicode characters.
+
+ A "stream of Unicode characters" is essentially a function that accepts an
+ ucs4_t argument repeatedly, optionally combined with a function that
+ "flushes" the stream. */
+
+/* Data type of a stream of Unicode characters that normalizes its input
+ according to a given normalization form and passes the normalized character
+ sequence to the encapsulated stream of Unicode characters. */
+struct uninorm_filter;
+
+/* Create and return a normalization filter for Unicode characters.
+ The pair (stream_func, stream_data) is the encapsulated stream.
+ stream_func (stream_data, uc) receives the Unicode character uc
+ and returns 0 if successful, or -1 with errno set upon failure.
+ Return the new filter, or NULL with errno set upon failure. */
+extern struct uninorm_filter *
+ uninorm_filter_create (uninorm_t nf,
+ int (*stream_func) (void *stream_data, ucs4_t uc),
+ void *stream_data);
+
+/* Stuff a Unicode character into a normalizing filter.
+ Return 0 if successful, or -1 with errno set upon failure. */
+extern int
+ uninorm_filter_write (struct uninorm_filter *filter, ucs4_t uc);
+
+/* Bring data buffered in the filter to its destination, the encapsulated
+ stream.
+ Return 0 if successful, or -1 with errno set upon failure.
+ Note! If after calling this function, additional characters are written
+ into the filter, the resulting character sequence in the encapsulated stream
+ will not necessarily be normalized. */
+extern int
+ uninorm_filter_flush (struct uninorm_filter *filter);
+
+/* Bring data buffered in the filter to its destination, the encapsulated
+ stream, then close and free the filter.
+ Return 0 if successful, or -1 with errno set upon failure. */
+extern int
+ uninorm_filter_free (struct uninorm_filter *filter);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _UNINORM_H */
diff --git a/lib/uninorm/canonical-decomposition.c b/lib/uninorm/canonical-decomposition.c
new file mode 100644
index 00000000..210b74b9
--- /dev/null
+++ b/lib/uninorm/canonical-decomposition.c
@@ -0,0 +1,108 @@
+/* Canonical decomposition of Unicode characters.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include <stdlib.h>
+
+#include "decomposition-table.h"
+
+int
+uc_canonical_decomposition (ucs4_t uc, ucs4_t *decomposition)
+{
+ if (uc >= 0xAC00 && uc < 0xD7A4)
+ {
+ /* Hangul syllable. See Unicode standard, chapter 3, section
+ "Hangul Syllable Decomposition", See also the clarification at
+ <http://www.unicode.org/versions/Unicode5.1.0/>, section
+ "Clarification of Hangul Jamo Handling". */
+ unsigned int t;
+
+ uc -= 0xAC00;
+ t = uc % 28;
+
+ if (t == 0)
+ {
+ unsigned int v, l;
+
+ uc = uc / 28;
+ v = uc % 21;
+ l = uc / 21;
+
+ decomposition[0] = 0x1100 + l;
+ decomposition[1] = 0x1161 + v;
+ return 2;
+ }
+ else
+ {
+#if 1 /* Return the pairwise decomposition, not the full decomposition. */
+ decomposition[0] = 0xAC00 + uc - t; /* = 0xAC00 + (l * 21 + v) * 28; */
+ decomposition[1] = 0x11A7 + t;
+ return 2;
+#else
+ unsigned int v, l;
+
+ uc = uc / 28;
+ v = uc % 21;
+ l = uc / 21;
+
+ decomposition[0] = 0x1100 + l;
+ decomposition[1] = 0x1161 + v;
+ decomposition[2] = 0x11A7 + t;
+ return 3;
+#endif
+ }
+ }
+ else if (uc < 0x110000)
+ {
+ unsigned short entry = decomp_index (uc);
+ /* An entry of (unsigned short)(-1) denotes an absent entry.
+ Otherwise, bit 15 of the entry tells whether the decomposition
+ is a canonical one. */
+ if (entry < 0x8000)
+ {
+ const unsigned char *p;
+ unsigned int element;
+ unsigned int length;
+
+ p = &gl_uninorm_decomp_chars_table[3 * entry];
+ element = (p[0] << 16) | (p[1] << 8) | p[2];
+ /* The first element has 5 bits for the decomposition type. */
+ if (((element >> 18) & 0x1f) != UC_DECOMP_CANONICAL)
+ abort ();
+ length = 1;
+ for (;;)
+ {
+ /* Every element has an 18 bits wide Unicode code point. */
+ *decomposition = element & 0x3ffff;
+ /* Bit 23 tells whether there are more elements, */
+ if ((element & (1 << 23)) == 0)
+ break;
+ p += 3;
+ element = (p[0] << 16) | (p[1] << 8) | p[2];
+ decomposition++;
+ length++;
+ }
+ return length;
+ }
+ }
+ return -1;
+}
+
diff --git a/lib/uninorm/compat-decomposition.c b/lib/uninorm/compat-decomposition.c
new file mode 100644
index 00000000..19ec87e3
--- /dev/null
+++ b/lib/uninorm/compat-decomposition.c
@@ -0,0 +1,31 @@
+/* Compatibility decomposition of Unicode characters.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "decompose-internal.h"
+
+#include "uninorm.h"
+
+int
+uc_compat_decomposition (ucs4_t uc, ucs4_t *decomposition)
+{
+ int tag;
+
+ return uc_decomposition (uc, &tag, decomposition);
+}
diff --git a/lib/uninorm/composition-table.gperf b/lib/uninorm/composition-table.gperf
new file mode 100644
index 00000000..f7f0febc
--- /dev/null
+++ b/lib/uninorm/composition-table.gperf
@@ -0,0 +1,958 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Canonical composition of Unicode characters. */
+/* Generated automatically by gen-uni-tables for Unicode 5.1.0. */
+
+/* Copyright (C) 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+struct composition_rule { char codes[4]; };
+%struct-type
+%language=ANSI-C
+%define slot-name codes
+%define hash-function-name gl_uninorm_compose_hash
+%define lookup-function-name gl_uninorm_compose_lookup
+%compare-lengths
+%compare-strncmp
+%readonly-tables
+%omit-struct-type
+%%
+"\x00\x41\x03\x00", 0x00c0
+"\x00\x41\x03\x01", 0x00c1
+"\x00\x41\x03\x02", 0x00c2
+"\x00\x41\x03\x03", 0x00c3
+"\x00\x41\x03\x08", 0x00c4
+"\x00\x41\x03\x0a", 0x00c5
+"\x00\x43\x03\x27", 0x00c7
+"\x00\x45\x03\x00", 0x00c8
+"\x00\x45\x03\x01", 0x00c9
+"\x00\x45\x03\x02", 0x00ca
+"\x00\x45\x03\x08", 0x00cb
+"\x00\x49\x03\x00", 0x00cc
+"\x00\x49\x03\x01", 0x00cd
+"\x00\x49\x03\x02", 0x00ce
+"\x00\x49\x03\x08", 0x00cf
+"\x00\x4e\x03\x03", 0x00d1
+"\x00\x4f\x03\x00", 0x00d2
+"\x00\x4f\x03\x01", 0x00d3
+"\x00\x4f\x03\x02", 0x00d4
+"\x00\x4f\x03\x03", 0x00d5
+"\x00\x4f\x03\x08", 0x00d6
+"\x00\x55\x03\x00", 0x00d9
+"\x00\x55\x03\x01", 0x00da
+"\x00\x55\x03\x02", 0x00db
+"\x00\x55\x03\x08", 0x00dc
+"\x00\x59\x03\x01", 0x00dd
+"\x00\x61\x03\x00", 0x00e0
+"\x00\x61\x03\x01", 0x00e1
+"\x00\x61\x03\x02", 0x00e2
+"\x00\x61\x03\x03", 0x00e3
+"\x00\x61\x03\x08", 0x00e4
+"\x00\x61\x03\x0a", 0x00e5
+"\x00\x63\x03\x27", 0x00e7
+"\x00\x65\x03\x00", 0x00e8
+"\x00\x65\x03\x01", 0x00e9
+"\x00\x65\x03\x02", 0x00ea
+"\x00\x65\x03\x08", 0x00eb
+"\x00\x69\x03\x00", 0x00ec
+"\x00\x69\x03\x01", 0x00ed
+"\x00\x69\x03\x02", 0x00ee
+"\x00\x69\x03\x08", 0x00ef
+"\x00\x6e\x03\x03", 0x00f1
+"\x00\x6f\x03\x00", 0x00f2
+"\x00\x6f\x03\x01", 0x00f3
+"\x00\x6f\x03\x02", 0x00f4
+"\x00\x6f\x03\x03", 0x00f5
+"\x00\x6f\x03\x08", 0x00f6
+"\x00\x75\x03\x00", 0x00f9
+"\x00\x75\x03\x01", 0x00fa
+"\x00\x75\x03\x02", 0x00fb
+"\x00\x75\x03\x08", 0x00fc
+"\x00\x79\x03\x01", 0x00fd
+"\x00\x79\x03\x08", 0x00ff
+"\x00\x41\x03\x04", 0x0100
+"\x00\x61\x03\x04", 0x0101
+"\x00\x41\x03\x06", 0x0102
+"\x00\x61\x03\x06", 0x0103
+"\x00\x41\x03\x28", 0x0104
+"\x00\x61\x03\x28", 0x0105
+"\x00\x43\x03\x01", 0x0106
+"\x00\x63\x03\x01", 0x0107
+"\x00\x43\x03\x02", 0x0108
+"\x00\x63\x03\x02", 0x0109
+"\x00\x43\x03\x07", 0x010a
+"\x00\x63\x03\x07", 0x010b
+"\x00\x43\x03\x0c", 0x010c
+"\x00\x63\x03\x0c", 0x010d
+"\x00\x44\x03\x0c", 0x010e
+"\x00\x64\x03\x0c", 0x010f
+"\x00\x45\x03\x04", 0x0112
+"\x00\x65\x03\x04", 0x0113
+"\x00\x45\x03\x06", 0x0114
+"\x00\x65\x03\x06", 0x0115
+"\x00\x45\x03\x07", 0x0116
+"\x00\x65\x03\x07", 0x0117
+"\x00\x45\x03\x28", 0x0118
+"\x00\x65\x03\x28", 0x0119
+"\x00\x45\x03\x0c", 0x011a
+"\x00\x65\x03\x0c", 0x011b
+"\x00\x47\x03\x02", 0x011c
+"\x00\x67\x03\x02", 0x011d
+"\x00\x47\x03\x06", 0x011e
+"\x00\x67\x03\x06", 0x011f
+"\x00\x47\x03\x07", 0x0120
+"\x00\x67\x03\x07", 0x0121
+"\x00\x47\x03\x27", 0x0122
+"\x00\x67\x03\x27", 0x0123
+"\x00\x48\x03\x02", 0x0124
+"\x00\x68\x03\x02", 0x0125
+"\x00\x49\x03\x03", 0x0128
+"\x00\x69\x03\x03", 0x0129
+"\x00\x49\x03\x04", 0x012a
+"\x00\x69\x03\x04", 0x012b
+"\x00\x49\x03\x06", 0x012c
+"\x00\x69\x03\x06", 0x012d
+"\x00\x49\x03\x28", 0x012e
+"\x00\x69\x03\x28", 0x012f
+"\x00\x49\x03\x07", 0x0130
+"\x00\x4a\x03\x02", 0x0134
+"\x00\x6a\x03\x02", 0x0135
+"\x00\x4b\x03\x27", 0x0136
+"\x00\x6b\x03\x27", 0x0137
+"\x00\x4c\x03\x01", 0x0139
+"\x00\x6c\x03\x01", 0x013a
+"\x00\x4c\x03\x27", 0x013b
+"\x00\x6c\x03\x27", 0x013c
+"\x00\x4c\x03\x0c", 0x013d
+"\x00\x6c\x03\x0c", 0x013e
+"\x00\x4e\x03\x01", 0x0143
+"\x00\x6e\x03\x01", 0x0144
+"\x00\x4e\x03\x27", 0x0145
+"\x00\x6e\x03\x27", 0x0146
+"\x00\x4e\x03\x0c", 0x0147
+"\x00\x6e\x03\x0c", 0x0148
+"\x00\x4f\x03\x04", 0x014c
+"\x00\x6f\x03\x04", 0x014d
+"\x00\x4f\x03\x06", 0x014e
+"\x00\x6f\x03\x06", 0x014f
+"\x00\x4f\x03\x0b", 0x0150
+"\x00\x6f\x03\x0b", 0x0151
+"\x00\x52\x03\x01", 0x0154
+"\x00\x72\x03\x01", 0x0155
+"\x00\x52\x03\x27", 0x0156
+"\x00\x72\x03\x27", 0x0157
+"\x00\x52\x03\x0c", 0x0158
+"\x00\x72\x03\x0c", 0x0159
+"\x00\x53\x03\x01", 0x015a
+"\x00\x73\x03\x01", 0x015b
+"\x00\x53\x03\x02", 0x015c
+"\x00\x73\x03\x02", 0x015d
+"\x00\x53\x03\x27", 0x015e
+"\x00\x73\x03\x27", 0x015f
+"\x00\x53\x03\x0c", 0x0160
+"\x00\x73\x03\x0c", 0x0161
+"\x00\x54\x03\x27", 0x0162
+"\x00\x74\x03\x27", 0x0163
+"\x00\x54\x03\x0c", 0x0164
+"\x00\x74\x03\x0c", 0x0165
+"\x00\x55\x03\x03", 0x0168
+"\x00\x75\x03\x03", 0x0169
+"\x00\x55\x03\x04", 0x016a
+"\x00\x75\x03\x04", 0x016b
+"\x00\x55\x03\x06", 0x016c
+"\x00\x75\x03\x06", 0x016d
+"\x00\x55\x03\x0a", 0x016e
+"\x00\x75\x03\x0a", 0x016f
+"\x00\x55\x03\x0b", 0x0170
+"\x00\x75\x03\x0b", 0x0171
+"\x00\x55\x03\x28", 0x0172
+"\x00\x75\x03\x28", 0x0173
+"\x00\x57\x03\x02", 0x0174
+"\x00\x77\x03\x02", 0x0175
+"\x00\x59\x03\x02", 0x0176
+"\x00\x79\x03\x02", 0x0177
+"\x00\x59\x03\x08", 0x0178
+"\x00\x5a\x03\x01", 0x0179
+"\x00\x7a\x03\x01", 0x017a
+"\x00\x5a\x03\x07", 0x017b
+"\x00\x7a\x03\x07", 0x017c
+"\x00\x5a\x03\x0c", 0x017d
+"\x00\x7a\x03\x0c", 0x017e
+"\x00\x4f\x03\x1b", 0x01a0
+"\x00\x6f\x03\x1b", 0x01a1
+"\x00\x55\x03\x1b", 0x01af
+"\x00\x75\x03\x1b", 0x01b0
+"\x00\x41\x03\x0c", 0x01cd
+"\x00\x61\x03\x0c", 0x01ce
+"\x00\x49\x03\x0c", 0x01cf
+"\x00\x69\x03\x0c", 0x01d0
+"\x00\x4f\x03\x0c", 0x01d1
+"\x00\x6f\x03\x0c", 0x01d2
+"\x00\x55\x03\x0c", 0x01d3
+"\x00\x75\x03\x0c", 0x01d4
+"\x00\xdc\x03\x04", 0x01d5
+"\x00\xfc\x03\x04", 0x01d6
+"\x00\xdc\x03\x01", 0x01d7
+"\x00\xfc\x03\x01", 0x01d8
+"\x00\xdc\x03\x0c", 0x01d9
+"\x00\xfc\x03\x0c", 0x01da
+"\x00\xdc\x03\x00", 0x01db
+"\x00\xfc\x03\x00", 0x01dc
+"\x00\xc4\x03\x04", 0x01de
+"\x00\xe4\x03\x04", 0x01df
+"\x02\x26\x03\x04", 0x01e0
+"\x02\x27\x03\x04", 0x01e1
+"\x00\xc6\x03\x04", 0x01e2
+"\x00\xe6\x03\x04", 0x01e3
+"\x00\x47\x03\x0c", 0x01e6
+"\x00\x67\x03\x0c", 0x01e7
+"\x00\x4b\x03\x0c", 0x01e8
+"\x00\x6b\x03\x0c", 0x01e9
+"\x00\x4f\x03\x28", 0x01ea
+"\x00\x6f\x03\x28", 0x01eb
+"\x01\xea\x03\x04", 0x01ec
+"\x01\xeb\x03\x04", 0x01ed
+"\x01\xb7\x03\x0c", 0x01ee
+"\x02\x92\x03\x0c", 0x01ef
+"\x00\x6a\x03\x0c", 0x01f0
+"\x00\x47\x03\x01", 0x01f4
+"\x00\x67\x03\x01", 0x01f5
+"\x00\x4e\x03\x00", 0x01f8
+"\x00\x6e\x03\x00", 0x01f9
+"\x00\xc5\x03\x01", 0x01fa
+"\x00\xe5\x03\x01", 0x01fb
+"\x00\xc6\x03\x01", 0x01fc
+"\x00\xe6\x03\x01", 0x01fd
+"\x00\xd8\x03\x01", 0x01fe
+"\x00\xf8\x03\x01", 0x01ff
+"\x00\x41\x03\x0f", 0x0200
+"\x00\x61\x03\x0f", 0x0201
+"\x00\x41\x03\x11", 0x0202
+"\x00\x61\x03\x11", 0x0203
+"\x00\x45\x03\x0f", 0x0204
+"\x00\x65\x03\x0f", 0x0205
+"\x00\x45\x03\x11", 0x0206
+"\x00\x65\x03\x11", 0x0207
+"\x00\x49\x03\x0f", 0x0208
+"\x00\x69\x03\x0f", 0x0209
+"\x00\x49\x03\x11", 0x020a
+"\x00\x69\x03\x11", 0x020b
+"\x00\x4f\x03\x0f", 0x020c
+"\x00\x6f\x03\x0f", 0x020d
+"\x00\x4f\x03\x11", 0x020e
+"\x00\x6f\x03\x11", 0x020f
+"\x00\x52\x03\x0f", 0x0210
+"\x00\x72\x03\x0f", 0x0211
+"\x00\x52\x03\x11", 0x0212
+"\x00\x72\x03\x11", 0x0213
+"\x00\x55\x03\x0f", 0x0214
+"\x00\x75\x03\x0f", 0x0215
+"\x00\x55\x03\x11", 0x0216
+"\x00\x75\x03\x11", 0x0217
+"\x00\x53\x03\x26", 0x0218
+"\x00\x73\x03\x26", 0x0219
+"\x00\x54\x03\x26", 0x021a
+"\x00\x74\x03\x26", 0x021b
+"\x00\x48\x03\x0c", 0x021e
+"\x00\x68\x03\x0c", 0x021f
+"\x00\x41\x03\x07", 0x0226
+"\x00\x61\x03\x07", 0x0227
+"\x00\x45\x03\x27", 0x0228
+"\x00\x65\x03\x27", 0x0229
+"\x00\xd6\x03\x04", 0x022a
+"\x00\xf6\x03\x04", 0x022b
+"\x00\xd5\x03\x04", 0x022c
+"\x00\xf5\x03\x04", 0x022d
+"\x00\x4f\x03\x07", 0x022e
+"\x00\x6f\x03\x07", 0x022f
+"\x02\x2e\x03\x04", 0x0230
+"\x02\x2f\x03\x04", 0x0231
+"\x00\x59\x03\x04", 0x0232
+"\x00\x79\x03\x04", 0x0233
+"\x00\xa8\x03\x01", 0x0385
+"\x03\x91\x03\x01", 0x0386
+"\x03\x95\x03\x01", 0x0388
+"\x03\x97\x03\x01", 0x0389
+"\x03\x99\x03\x01", 0x038a
+"\x03\x9f\x03\x01", 0x038c
+"\x03\xa5\x03\x01", 0x038e
+"\x03\xa9\x03\x01", 0x038f
+"\x03\xca\x03\x01", 0x0390
+"\x03\x99\x03\x08", 0x03aa
+"\x03\xa5\x03\x08", 0x03ab
+"\x03\xb1\x03\x01", 0x03ac
+"\x03\xb5\x03\x01", 0x03ad
+"\x03\xb7\x03\x01", 0x03ae
+"\x03\xb9\x03\x01", 0x03af
+"\x03\xcb\x03\x01", 0x03b0
+"\x03\xb9\x03\x08", 0x03ca
+"\x03\xc5\x03\x08", 0x03cb
+"\x03\xbf\x03\x01", 0x03cc
+"\x03\xc5\x03\x01", 0x03cd
+"\x03\xc9\x03\x01", 0x03ce
+"\x03\xd2\x03\x01", 0x03d3
+"\x03\xd2\x03\x08", 0x03d4
+"\x04\x15\x03\x00", 0x0400
+"\x04\x15\x03\x08", 0x0401
+"\x04\x13\x03\x01", 0x0403
+"\x04\x06\x03\x08", 0x0407
+"\x04\x1a\x03\x01", 0x040c
+"\x04\x18\x03\x00", 0x040d
+"\x04\x23\x03\x06", 0x040e
+"\x04\x18\x03\x06", 0x0419
+"\x04\x38\x03\x06", 0x0439
+"\x04\x35\x03\x00", 0x0450
+"\x04\x35\x03\x08", 0x0451
+"\x04\x33\x03\x01", 0x0453
+"\x04\x56\x03\x08", 0x0457
+"\x04\x3a\x03\x01", 0x045c
+"\x04\x38\x03\x00", 0x045d
+"\x04\x43\x03\x06", 0x045e
+"\x04\x74\x03\x0f", 0x0476
+"\x04\x75\x03\x0f", 0x0477
+"\x04\x16\x03\x06", 0x04c1
+"\x04\x36\x03\x06", 0x04c2
+"\x04\x10\x03\x06", 0x04d0
+"\x04\x30\x03\x06", 0x04d1
+"\x04\x10\x03\x08", 0x04d2
+"\x04\x30\x03\x08", 0x04d3
+"\x04\x15\x03\x06", 0x04d6
+"\x04\x35\x03\x06", 0x04d7
+"\x04\xd8\x03\x08", 0x04da
+"\x04\xd9\x03\x08", 0x04db
+"\x04\x16\x03\x08", 0x04dc
+"\x04\x36\x03\x08", 0x04dd
+"\x04\x17\x03\x08", 0x04de
+"\x04\x37\x03\x08", 0x04df
+"\x04\x18\x03\x04", 0x04e2
+"\x04\x38\x03\x04", 0x04e3
+"\x04\x18\x03\x08", 0x04e4
+"\x04\x38\x03\x08", 0x04e5
+"\x04\x1e\x03\x08", 0x04e6
+"\x04\x3e\x03\x08", 0x04e7
+"\x04\xe8\x03\x08", 0x04ea
+"\x04\xe9\x03\x08", 0x04eb
+"\x04\x2d\x03\x08", 0x04ec
+"\x04\x4d\x03\x08", 0x04ed
+"\x04\x23\x03\x04", 0x04ee
+"\x04\x43\x03\x04", 0x04ef
+"\x04\x23\x03\x08", 0x04f0
+"\x04\x43\x03\x08", 0x04f1
+"\x04\x23\x03\x0b", 0x04f2
+"\x04\x43\x03\x0b", 0x04f3
+"\x04\x27\x03\x08", 0x04f4
+"\x04\x47\x03\x08", 0x04f5
+"\x04\x2b\x03\x08", 0x04f8
+"\x04\x4b\x03\x08", 0x04f9
+"\x06\x27\x06\x53", 0x0622
+"\x06\x27\x06\x54", 0x0623
+"\x06\x48\x06\x54", 0x0624
+"\x06\x27\x06\x55", 0x0625
+"\x06\x4a\x06\x54", 0x0626
+"\x06\xd5\x06\x54", 0x06c0
+"\x06\xc1\x06\x54", 0x06c2
+"\x06\xd2\x06\x54", 0x06d3
+"\x09\x28\x09\x3c", 0x0929
+"\x09\x30\x09\x3c", 0x0931
+"\x09\x33\x09\x3c", 0x0934
+"\x09\xc7\x09\xbe", 0x09cb
+"\x09\xc7\x09\xd7", 0x09cc
+"\x0b\x47\x0b\x56", 0x0b48
+"\x0b\x47\x0b\x3e", 0x0b4b
+"\x0b\x47\x0b\x57", 0x0b4c
+"\x0b\x92\x0b\xd7", 0x0b94
+"\x0b\xc6\x0b\xbe", 0x0bca
+"\x0b\xc7\x0b\xbe", 0x0bcb
+"\x0b\xc6\x0b\xd7", 0x0bcc
+"\x0c\x46\x0c\x56", 0x0c48
+"\x0c\xbf\x0c\xd5", 0x0cc0
+"\x0c\xc6\x0c\xd5", 0x0cc7
+"\x0c\xc6\x0c\xd6", 0x0cc8
+"\x0c\xc6\x0c\xc2", 0x0cca
+"\x0c\xca\x0c\xd5", 0x0ccb
+"\x0d\x46\x0d\x3e", 0x0d4a
+"\x0d\x47\x0d\x3e", 0x0d4b
+"\x0d\x46\x0d\x57", 0x0d4c
+"\x0d\xd9\x0d\xca", 0x0dda
+"\x0d\xd9\x0d\xcf", 0x0ddc
+"\x0d\xdc\x0d\xca", 0x0ddd
+"\x0d\xd9\x0d\xdf", 0x0dde
+"\x10\x25\x10\x2e", 0x1026
+"\x1b\x05\x1b\x35", 0x1b06
+"\x1b\x07\x1b\x35", 0x1b08
+"\x1b\x09\x1b\x35", 0x1b0a
+"\x1b\x0b\x1b\x35", 0x1b0c
+"\x1b\x0d\x1b\x35", 0x1b0e
+"\x1b\x11\x1b\x35", 0x1b12
+"\x1b\x3a\x1b\x35", 0x1b3b
+"\x1b\x3c\x1b\x35", 0x1b3d
+"\x1b\x3e\x1b\x35", 0x1b40
+"\x1b\x3f\x1b\x35", 0x1b41
+"\x1b\x42\x1b\x35", 0x1b43
+"\x00\x41\x03\x25", 0x1e00
+"\x00\x61\x03\x25", 0x1e01
+"\x00\x42\x03\x07", 0x1e02
+"\x00\x62\x03\x07", 0x1e03
+"\x00\x42\x03\x23", 0x1e04
+"\x00\x62\x03\x23", 0x1e05
+"\x00\x42\x03\x31", 0x1e06
+"\x00\x62\x03\x31", 0x1e07
+"\x00\xc7\x03\x01", 0x1e08
+"\x00\xe7\x03\x01", 0x1e09
+"\x00\x44\x03\x07", 0x1e0a
+"\x00\x64\x03\x07", 0x1e0b
+"\x00\x44\x03\x23", 0x1e0c
+"\x00\x64\x03\x23", 0x1e0d
+"\x00\x44\x03\x31", 0x1e0e
+"\x00\x64\x03\x31", 0x1e0f
+"\x00\x44\x03\x27", 0x1e10
+"\x00\x64\x03\x27", 0x1e11
+"\x00\x44\x03\x2d", 0x1e12
+"\x00\x64\x03\x2d", 0x1e13
+"\x01\x12\x03\x00", 0x1e14
+"\x01\x13\x03\x00", 0x1e15
+"\x01\x12\x03\x01", 0x1e16
+"\x01\x13\x03\x01", 0x1e17
+"\x00\x45\x03\x2d", 0x1e18
+"\x00\x65\x03\x2d", 0x1e19
+"\x00\x45\x03\x30", 0x1e1a
+"\x00\x65\x03\x30", 0x1e1b
+"\x02\x28\x03\x06", 0x1e1c
+"\x02\x29\x03\x06", 0x1e1d
+"\x00\x46\x03\x07", 0x1e1e
+"\x00\x66\x03\x07", 0x1e1f
+"\x00\x47\x03\x04", 0x1e20
+"\x00\x67\x03\x04", 0x1e21
+"\x00\x48\x03\x07", 0x1e22
+"\x00\x68\x03\x07", 0x1e23
+"\x00\x48\x03\x23", 0x1e24
+"\x00\x68\x03\x23", 0x1e25
+"\x00\x48\x03\x08", 0x1e26
+"\x00\x68\x03\x08", 0x1e27
+"\x00\x48\x03\x27", 0x1e28
+"\x00\x68\x03\x27", 0x1e29
+"\x00\x48\x03\x2e", 0x1e2a
+"\x00\x68\x03\x2e", 0x1e2b
+"\x00\x49\x03\x30", 0x1e2c
+"\x00\x69\x03\x30", 0x1e2d
+"\x00\xcf\x03\x01", 0x1e2e
+"\x00\xef\x03\x01", 0x1e2f
+"\x00\x4b\x03\x01", 0x1e30
+"\x00\x6b\x03\x01", 0x1e31
+"\x00\x4b\x03\x23", 0x1e32
+"\x00\x6b\x03\x23", 0x1e33
+"\x00\x4b\x03\x31", 0x1e34
+"\x00\x6b\x03\x31", 0x1e35
+"\x00\x4c\x03\x23", 0x1e36
+"\x00\x6c\x03\x23", 0x1e37
+"\x1e\x36\x03\x04", 0x1e38
+"\x1e\x37\x03\x04", 0x1e39
+"\x00\x4c\x03\x31", 0x1e3a
+"\x00\x6c\x03\x31", 0x1e3b
+"\x00\x4c\x03\x2d", 0x1e3c
+"\x00\x6c\x03\x2d", 0x1e3d
+"\x00\x4d\x03\x01", 0x1e3e
+"\x00\x6d\x03\x01", 0x1e3f
+"\x00\x4d\x03\x07", 0x1e40
+"\x00\x6d\x03\x07", 0x1e41
+"\x00\x4d\x03\x23", 0x1e42
+"\x00\x6d\x03\x23", 0x1e43
+"\x00\x4e\x03\x07", 0x1e44
+"\x00\x6e\x03\x07", 0x1e45
+"\x00\x4e\x03\x23", 0x1e46
+"\x00\x6e\x03\x23", 0x1e47
+"\x00\x4e\x03\x31", 0x1e48
+"\x00\x6e\x03\x31", 0x1e49
+"\x00\x4e\x03\x2d", 0x1e4a
+"\x00\x6e\x03\x2d", 0x1e4b
+"\x00\xd5\x03\x01", 0x1e4c
+"\x00\xf5\x03\x01", 0x1e4d
+"\x00\xd5\x03\x08", 0x1e4e
+"\x00\xf5\x03\x08", 0x1e4f
+"\x01\x4c\x03\x00", 0x1e50
+"\x01\x4d\x03\x00", 0x1e51
+"\x01\x4c\x03\x01", 0x1e52
+"\x01\x4d\x03\x01", 0x1e53
+"\x00\x50\x03\x01", 0x1e54
+"\x00\x70\x03\x01", 0x1e55
+"\x00\x50\x03\x07", 0x1e56
+"\x00\x70\x03\x07", 0x1e57
+"\x00\x52\x03\x07", 0x1e58
+"\x00\x72\x03\x07", 0x1e59
+"\x00\x52\x03\x23", 0x1e5a
+"\x00\x72\x03\x23", 0x1e5b
+"\x1e\x5a\x03\x04", 0x1e5c
+"\x1e\x5b\x03\x04", 0x1e5d
+"\x00\x52\x03\x31", 0x1e5e
+"\x00\x72\x03\x31", 0x1e5f
+"\x00\x53\x03\x07", 0x1e60
+"\x00\x73\x03\x07", 0x1e61
+"\x00\x53\x03\x23", 0x1e62
+"\x00\x73\x03\x23", 0x1e63
+"\x01\x5a\x03\x07", 0x1e64
+"\x01\x5b\x03\x07", 0x1e65
+"\x01\x60\x03\x07", 0x1e66
+"\x01\x61\x03\x07", 0x1e67
+"\x1e\x62\x03\x07", 0x1e68
+"\x1e\x63\x03\x07", 0x1e69
+"\x00\x54\x03\x07", 0x1e6a
+"\x00\x74\x03\x07", 0x1e6b
+"\x00\x54\x03\x23", 0x1e6c
+"\x00\x74\x03\x23", 0x1e6d
+"\x00\x54\x03\x31", 0x1e6e
+"\x00\x74\x03\x31", 0x1e6f
+"\x00\x54\x03\x2d", 0x1e70
+"\x00\x74\x03\x2d", 0x1e71
+"\x00\x55\x03\x24", 0x1e72
+"\x00\x75\x03\x24", 0x1e73
+"\x00\x55\x03\x30", 0x1e74
+"\x00\x75\x03\x30", 0x1e75
+"\x00\x55\x03\x2d", 0x1e76
+"\x00\x75\x03\x2d", 0x1e77
+"\x01\x68\x03\x01", 0x1e78
+"\x01\x69\x03\x01", 0x1e79
+"\x01\x6a\x03\x08", 0x1e7a
+"\x01\x6b\x03\x08", 0x1e7b
+"\x00\x56\x03\x03", 0x1e7c
+"\x00\x76\x03\x03", 0x1e7d
+"\x00\x56\x03\x23", 0x1e7e
+"\x00\x76\x03\x23", 0x1e7f
+"\x00\x57\x03\x00", 0x1e80
+"\x00\x77\x03\x00", 0x1e81
+"\x00\x57\x03\x01", 0x1e82
+"\x00\x77\x03\x01", 0x1e83
+"\x00\x57\x03\x08", 0x1e84
+"\x00\x77\x03\x08", 0x1e85
+"\x00\x57\x03\x07", 0x1e86
+"\x00\x77\x03\x07", 0x1e87
+"\x00\x57\x03\x23", 0x1e88
+"\x00\x77\x03\x23", 0x1e89
+"\x00\x58\x03\x07", 0x1e8a
+"\x00\x78\x03\x07", 0x1e8b
+"\x00\x58\x03\x08", 0x1e8c
+"\x00\x78\x03\x08", 0x1e8d
+"\x00\x59\x03\x07", 0x1e8e
+"\x00\x79\x03\x07", 0x1e8f
+"\x00\x5a\x03\x02", 0x1e90
+"\x00\x7a\x03\x02", 0x1e91
+"\x00\x5a\x03\x23", 0x1e92
+"\x00\x7a\x03\x23", 0x1e93
+"\x00\x5a\x03\x31", 0x1e94
+"\x00\x7a\x03\x31", 0x1e95
+"\x00\x68\x03\x31", 0x1e96
+"\x00\x74\x03\x08", 0x1e97
+"\x00\x77\x03\x0a", 0x1e98
+"\x00\x79\x03\x0a", 0x1e99
+"\x01\x7f\x03\x07", 0x1e9b
+"\x00\x41\x03\x23", 0x1ea0
+"\x00\x61\x03\x23", 0x1ea1
+"\x00\x41\x03\x09", 0x1ea2
+"\x00\x61\x03\x09", 0x1ea3
+"\x00\xc2\x03\x01", 0x1ea4
+"\x00\xe2\x03\x01", 0x1ea5
+"\x00\xc2\x03\x00", 0x1ea6
+"\x00\xe2\x03\x00", 0x1ea7
+"\x00\xc2\x03\x09", 0x1ea8
+"\x00\xe2\x03\x09", 0x1ea9
+"\x00\xc2\x03\x03", 0x1eaa
+"\x00\xe2\x03\x03", 0x1eab
+"\x1e\xa0\x03\x02", 0x1eac
+"\x1e\xa1\x03\x02", 0x1ead
+"\x01\x02\x03\x01", 0x1eae
+"\x01\x03\x03\x01", 0x1eaf
+"\x01\x02\x03\x00", 0x1eb0
+"\x01\x03\x03\x00", 0x1eb1
+"\x01\x02\x03\x09", 0x1eb2
+"\x01\x03\x03\x09", 0x1eb3
+"\x01\x02\x03\x03", 0x1eb4
+"\x01\x03\x03\x03", 0x1eb5
+"\x1e\xa0\x03\x06", 0x1eb6
+"\x1e\xa1\x03\x06", 0x1eb7
+"\x00\x45\x03\x23", 0x1eb8
+"\x00\x65\x03\x23", 0x1eb9
+"\x00\x45\x03\x09", 0x1eba
+"\x00\x65\x03\x09", 0x1ebb
+"\x00\x45\x03\x03", 0x1ebc
+"\x00\x65\x03\x03", 0x1ebd
+"\x00\xca\x03\x01", 0x1ebe
+"\x00\xea\x03\x01", 0x1ebf
+"\x00\xca\x03\x00", 0x1ec0
+"\x00\xea\x03\x00", 0x1ec1
+"\x00\xca\x03\x09", 0x1ec2
+"\x00\xea\x03\x09", 0x1ec3
+"\x00\xca\x03\x03", 0x1ec4
+"\x00\xea\x03\x03", 0x1ec5
+"\x1e\xb8\x03\x02", 0x1ec6
+"\x1e\xb9\x03\x02", 0x1ec7
+"\x00\x49\x03\x09", 0x1ec8
+"\x00\x69\x03\x09", 0x1ec9
+"\x00\x49\x03\x23", 0x1eca
+"\x00\x69\x03\x23", 0x1ecb
+"\x00\x4f\x03\x23", 0x1ecc
+"\x00\x6f\x03\x23", 0x1ecd
+"\x00\x4f\x03\x09", 0x1ece
+"\x00\x6f\x03\x09", 0x1ecf
+"\x00\xd4\x03\x01", 0x1ed0
+"\x00\xf4\x03\x01", 0x1ed1
+"\x00\xd4\x03\x00", 0x1ed2
+"\x00\xf4\x03\x00", 0x1ed3
+"\x00\xd4\x03\x09", 0x1ed4
+"\x00\xf4\x03\x09", 0x1ed5
+"\x00\xd4\x03\x03", 0x1ed6
+"\x00\xf4\x03\x03", 0x1ed7
+"\x1e\xcc\x03\x02", 0x1ed8
+"\x1e\xcd\x03\x02", 0x1ed9
+"\x01\xa0\x03\x01", 0x1eda
+"\x01\xa1\x03\x01", 0x1edb
+"\x01\xa0\x03\x00", 0x1edc
+"\x01\xa1\x03\x00", 0x1edd
+"\x01\xa0\x03\x09", 0x1ede
+"\x01\xa1\x03\x09", 0x1edf
+"\x01\xa0\x03\x03", 0x1ee0
+"\x01\xa1\x03\x03", 0x1ee1
+"\x01\xa0\x03\x23", 0x1ee2
+"\x01\xa1\x03\x23", 0x1ee3
+"\x00\x55\x03\x23", 0x1ee4
+"\x00\x75\x03\x23", 0x1ee5
+"\x00\x55\x03\x09", 0x1ee6
+"\x00\x75\x03\x09", 0x1ee7
+"\x01\xaf\x03\x01", 0x1ee8
+"\x01\xb0\x03\x01", 0x1ee9
+"\x01\xaf\x03\x00", 0x1eea
+"\x01\xb0\x03\x00", 0x1eeb
+"\x01\xaf\x03\x09", 0x1eec
+"\x01\xb0\x03\x09", 0x1eed
+"\x01\xaf\x03\x03", 0x1eee
+"\x01\xb0\x03\x03", 0x1eef
+"\x01\xaf\x03\x23", 0x1ef0
+"\x01\xb0\x03\x23", 0x1ef1
+"\x00\x59\x03\x00", 0x1ef2
+"\x00\x79\x03\x00", 0x1ef3
+"\x00\x59\x03\x23", 0x1ef4
+"\x00\x79\x03\x23", 0x1ef5
+"\x00\x59\x03\x09", 0x1ef6
+"\x00\x79\x03\x09", 0x1ef7
+"\x00\x59\x03\x03", 0x1ef8
+"\x00\x79\x03\x03", 0x1ef9
+"\x03\xb1\x03\x13", 0x1f00
+"\x03\xb1\x03\x14", 0x1f01
+"\x1f\x00\x03\x00", 0x1f02
+"\x1f\x01\x03\x00", 0x1f03
+"\x1f\x00\x03\x01", 0x1f04
+"\x1f\x01\x03\x01", 0x1f05
+"\x1f\x00\x03\x42", 0x1f06
+"\x1f\x01\x03\x42", 0x1f07
+"\x03\x91\x03\x13", 0x1f08
+"\x03\x91\x03\x14", 0x1f09
+"\x1f\x08\x03\x00", 0x1f0a
+"\x1f\x09\x03\x00", 0x1f0b
+"\x1f\x08\x03\x01", 0x1f0c
+"\x1f\x09\x03\x01", 0x1f0d
+"\x1f\x08\x03\x42", 0x1f0e
+"\x1f\x09\x03\x42", 0x1f0f
+"\x03\xb5\x03\x13", 0x1f10
+"\x03\xb5\x03\x14", 0x1f11
+"\x1f\x10\x03\x00", 0x1f12
+"\x1f\x11\x03\x00", 0x1f13
+"\x1f\x10\x03\x01", 0x1f14
+"\x1f\x11\x03\x01", 0x1f15
+"\x03\x95\x03\x13", 0x1f18
+"\x03\x95\x03\x14", 0x1f19
+"\x1f\x18\x03\x00", 0x1f1a
+"\x1f\x19\x03\x00", 0x1f1b
+"\x1f\x18\x03\x01", 0x1f1c
+"\x1f\x19\x03\x01", 0x1f1d
+"\x03\xb7\x03\x13", 0x1f20
+"\x03\xb7\x03\x14", 0x1f21
+"\x1f\x20\x03\x00", 0x1f22
+"\x1f\x21\x03\x00", 0x1f23
+"\x1f\x20\x03\x01", 0x1f24
+"\x1f\x21\x03\x01", 0x1f25
+"\x1f\x20\x03\x42", 0x1f26
+"\x1f\x21\x03\x42", 0x1f27
+"\x03\x97\x03\x13", 0x1f28
+"\x03\x97\x03\x14", 0x1f29
+"\x1f\x28\x03\x00", 0x1f2a
+"\x1f\x29\x03\x00", 0x1f2b
+"\x1f\x28\x03\x01", 0x1f2c
+"\x1f\x29\x03\x01", 0x1f2d
+"\x1f\x28\x03\x42", 0x1f2e
+"\x1f\x29\x03\x42", 0x1f2f
+"\x03\xb9\x03\x13", 0x1f30
+"\x03\xb9\x03\x14", 0x1f31
+"\x1f\x30\x03\x00", 0x1f32
+"\x1f\x31\x03\x00", 0x1f33
+"\x1f\x30\x03\x01", 0x1f34
+"\x1f\x31\x03\x01", 0x1f35
+"\x1f\x30\x03\x42", 0x1f36
+"\x1f\x31\x03\x42", 0x1f37
+"\x03\x99\x03\x13", 0x1f38
+"\x03\x99\x03\x14", 0x1f39
+"\x1f\x38\x03\x00", 0x1f3a
+"\x1f\x39\x03\x00", 0x1f3b
+"\x1f\x38\x03\x01", 0x1f3c
+"\x1f\x39\x03\x01", 0x1f3d
+"\x1f\x38\x03\x42", 0x1f3e
+"\x1f\x39\x03\x42", 0x1f3f
+"\x03\xbf\x03\x13", 0x1f40
+"\x03\xbf\x03\x14", 0x1f41
+"\x1f\x40\x03\x00", 0x1f42
+"\x1f\x41\x03\x00", 0x1f43
+"\x1f\x40\x03\x01", 0x1f44
+"\x1f\x41\x03\x01", 0x1f45
+"\x03\x9f\x03\x13", 0x1f48
+"\x03\x9f\x03\x14", 0x1f49
+"\x1f\x48\x03\x00", 0x1f4a
+"\x1f\x49\x03\x00", 0x1f4b
+"\x1f\x48\x03\x01", 0x1f4c
+"\x1f\x49\x03\x01", 0x1f4d
+"\x03\xc5\x03\x13", 0x1f50
+"\x03\xc5\x03\x14", 0x1f51
+"\x1f\x50\x03\x00", 0x1f52
+"\x1f\x51\x03\x00", 0x1f53
+"\x1f\x50\x03\x01", 0x1f54
+"\x1f\x51\x03\x01", 0x1f55
+"\x1f\x50\x03\x42", 0x1f56
+"\x1f\x51\x03\x42", 0x1f57
+"\x03\xa5\x03\x14", 0x1f59
+"\x1f\x59\x03\x00", 0x1f5b
+"\x1f\x59\x03\x01", 0x1f5d
+"\x1f\x59\x03\x42", 0x1f5f
+"\x03\xc9\x03\x13", 0x1f60
+"\x03\xc9\x03\x14", 0x1f61
+"\x1f\x60\x03\x00", 0x1f62
+"\x1f\x61\x03\x00", 0x1f63
+"\x1f\x60\x03\x01", 0x1f64
+"\x1f\x61\x03\x01", 0x1f65
+"\x1f\x60\x03\x42", 0x1f66
+"\x1f\x61\x03\x42", 0x1f67
+"\x03\xa9\x03\x13", 0x1f68
+"\x03\xa9\x03\x14", 0x1f69
+"\x1f\x68\x03\x00", 0x1f6a
+"\x1f\x69\x03\x00", 0x1f6b
+"\x1f\x68\x03\x01", 0x1f6c
+"\x1f\x69\x03\x01", 0x1f6d
+"\x1f\x68\x03\x42", 0x1f6e
+"\x1f\x69\x03\x42", 0x1f6f
+"\x03\xb1\x03\x00", 0x1f70
+"\x03\xb5\x03\x00", 0x1f72
+"\x03\xb7\x03\x00", 0x1f74
+"\x03\xb9\x03\x00", 0x1f76
+"\x03\xbf\x03\x00", 0x1f78
+"\x03\xc5\x03\x00", 0x1f7a
+"\x03\xc9\x03\x00", 0x1f7c
+"\x1f\x00\x03\x45", 0x1f80
+"\x1f\x01\x03\x45", 0x1f81
+"\x1f\x02\x03\x45", 0x1f82
+"\x1f\x03\x03\x45", 0x1f83
+"\x1f\x04\x03\x45", 0x1f84
+"\x1f\x05\x03\x45", 0x1f85
+"\x1f\x06\x03\x45", 0x1f86
+"\x1f\x07\x03\x45", 0x1f87
+"\x1f\x08\x03\x45", 0x1f88
+"\x1f\x09\x03\x45", 0x1f89
+"\x1f\x0a\x03\x45", 0x1f8a
+"\x1f\x0b\x03\x45", 0x1f8b
+"\x1f\x0c\x03\x45", 0x1f8c
+"\x1f\x0d\x03\x45", 0x1f8d
+"\x1f\x0e\x03\x45", 0x1f8e
+"\x1f\x0f\x03\x45", 0x1f8f
+"\x1f\x20\x03\x45", 0x1f90
+"\x1f\x21\x03\x45", 0x1f91
+"\x1f\x22\x03\x45", 0x1f92
+"\x1f\x23\x03\x45", 0x1f93
+"\x1f\x24\x03\x45", 0x1f94
+"\x1f\x25\x03\x45", 0x1f95
+"\x1f\x26\x03\x45", 0x1f96
+"\x1f\x27\x03\x45", 0x1f97
+"\x1f\x28\x03\x45", 0x1f98
+"\x1f\x29\x03\x45", 0x1f99
+"\x1f\x2a\x03\x45", 0x1f9a
+"\x1f\x2b\x03\x45", 0x1f9b
+"\x1f\x2c\x03\x45", 0x1f9c
+"\x1f\x2d\x03\x45", 0x1f9d
+"\x1f\x2e\x03\x45", 0x1f9e
+"\x1f\x2f\x03\x45", 0x1f9f
+"\x1f\x60\x03\x45", 0x1fa0
+"\x1f\x61\x03\x45", 0x1fa1
+"\x1f\x62\x03\x45", 0x1fa2
+"\x1f\x63\x03\x45", 0x1fa3
+"\x1f\x64\x03\x45", 0x1fa4
+"\x1f\x65\x03\x45", 0x1fa5
+"\x1f\x66\x03\x45", 0x1fa6
+"\x1f\x67\x03\x45", 0x1fa7
+"\x1f\x68\x03\x45", 0x1fa8
+"\x1f\x69\x03\x45", 0x1fa9
+"\x1f\x6a\x03\x45", 0x1faa
+"\x1f\x6b\x03\x45", 0x1fab
+"\x1f\x6c\x03\x45", 0x1fac
+"\x1f\x6d\x03\x45", 0x1fad
+"\x1f\x6e\x03\x45", 0x1fae
+"\x1f\x6f\x03\x45", 0x1faf
+"\x03\xb1\x03\x06", 0x1fb0
+"\x03\xb1\x03\x04", 0x1fb1
+"\x1f\x70\x03\x45", 0x1fb2
+"\x03\xb1\x03\x45", 0x1fb3
+"\x03\xac\x03\x45", 0x1fb4
+"\x03\xb1\x03\x42", 0x1fb6
+"\x1f\xb6\x03\x45", 0x1fb7
+"\x03\x91\x03\x06", 0x1fb8
+"\x03\x91\x03\x04", 0x1fb9
+"\x03\x91\x03\x00", 0x1fba
+"\x03\x91\x03\x45", 0x1fbc
+"\x00\xa8\x03\x42", 0x1fc1
+"\x1f\x74\x03\x45", 0x1fc2
+"\x03\xb7\x03\x45", 0x1fc3
+"\x03\xae\x03\x45", 0x1fc4
+"\x03\xb7\x03\x42", 0x1fc6
+"\x1f\xc6\x03\x45", 0x1fc7
+"\x03\x95\x03\x00", 0x1fc8
+"\x03\x97\x03\x00", 0x1fca
+"\x03\x97\x03\x45", 0x1fcc
+"\x1f\xbf\x03\x00", 0x1fcd
+"\x1f\xbf\x03\x01", 0x1fce
+"\x1f\xbf\x03\x42", 0x1fcf
+"\x03\xb9\x03\x06", 0x1fd0
+"\x03\xb9\x03\x04", 0x1fd1
+"\x03\xca\x03\x00", 0x1fd2
+"\x03\xb9\x03\x42", 0x1fd6
+"\x03\xca\x03\x42", 0x1fd7
+"\x03\x99\x03\x06", 0x1fd8
+"\x03\x99\x03\x04", 0x1fd9
+"\x03\x99\x03\x00", 0x1fda
+"\x1f\xfe\x03\x00", 0x1fdd
+"\x1f\xfe\x03\x01", 0x1fde
+"\x1f\xfe\x03\x42", 0x1fdf
+"\x03\xc5\x03\x06", 0x1fe0
+"\x03\xc5\x03\x04", 0x1fe1
+"\x03\xcb\x03\x00", 0x1fe2
+"\x03\xc1\x03\x13", 0x1fe4
+"\x03\xc1\x03\x14", 0x1fe5
+"\x03\xc5\x03\x42", 0x1fe6
+"\x03\xcb\x03\x42", 0x1fe7
+"\x03\xa5\x03\x06", 0x1fe8
+"\x03\xa5\x03\x04", 0x1fe9
+"\x03\xa5\x03\x00", 0x1fea
+"\x03\xa1\x03\x14", 0x1fec
+"\x00\xa8\x03\x00", 0x1fed
+"\x1f\x7c\x03\x45", 0x1ff2
+"\x03\xc9\x03\x45", 0x1ff3
+"\x03\xce\x03\x45", 0x1ff4
+"\x03\xc9\x03\x42", 0x1ff6
+"\x1f\xf6\x03\x45", 0x1ff7
+"\x03\x9f\x03\x00", 0x1ff8
+"\x03\xa9\x03\x00", 0x1ffa
+"\x03\xa9\x03\x45", 0x1ffc
+"\x21\x90\x03\x38", 0x219a
+"\x21\x92\x03\x38", 0x219b
+"\x21\x94\x03\x38", 0x21ae
+"\x21\xd0\x03\x38", 0x21cd
+"\x21\xd4\x03\x38", 0x21ce
+"\x21\xd2\x03\x38", 0x21cf
+"\x22\x03\x03\x38", 0x2204
+"\x22\x08\x03\x38", 0x2209
+"\x22\x0b\x03\x38", 0x220c
+"\x22\x23\x03\x38", 0x2224
+"\x22\x25\x03\x38", 0x2226
+"\x22\x3c\x03\x38", 0x2241
+"\x22\x43\x03\x38", 0x2244
+"\x22\x45\x03\x38", 0x2247
+"\x22\x48\x03\x38", 0x2249
+"\x00\x3d\x03\x38", 0x2260
+"\x22\x61\x03\x38", 0x2262
+"\x22\x4d\x03\x38", 0x226d
+"\x00\x3c\x03\x38", 0x226e
+"\x00\x3e\x03\x38", 0x226f
+"\x22\x64\x03\x38", 0x2270
+"\x22\x65\x03\x38", 0x2271
+"\x22\x72\x03\x38", 0x2274
+"\x22\x73\x03\x38", 0x2275
+"\x22\x76\x03\x38", 0x2278
+"\x22\x77\x03\x38", 0x2279
+"\x22\x7a\x03\x38", 0x2280
+"\x22\x7b\x03\x38", 0x2281
+"\x22\x82\x03\x38", 0x2284
+"\x22\x83\x03\x38", 0x2285
+"\x22\x86\x03\x38", 0x2288
+"\x22\x87\x03\x38", 0x2289
+"\x22\xa2\x03\x38", 0x22ac
+"\x22\xa8\x03\x38", 0x22ad
+"\x22\xa9\x03\x38", 0x22ae
+"\x22\xab\x03\x38", 0x22af
+"\x22\x7c\x03\x38", 0x22e0
+"\x22\x7d\x03\x38", 0x22e1
+"\x22\x91\x03\x38", 0x22e2
+"\x22\x92\x03\x38", 0x22e3
+"\x22\xb2\x03\x38", 0x22ea
+"\x22\xb3\x03\x38", 0x22eb
+"\x22\xb4\x03\x38", 0x22ec
+"\x22\xb5\x03\x38", 0x22ed
+"\x30\x4b\x30\x99", 0x304c
+"\x30\x4d\x30\x99", 0x304e
+"\x30\x4f\x30\x99", 0x3050
+"\x30\x51\x30\x99", 0x3052
+"\x30\x53\x30\x99", 0x3054
+"\x30\x55\x30\x99", 0x3056
+"\x30\x57\x30\x99", 0x3058
+"\x30\x59\x30\x99", 0x305a
+"\x30\x5b\x30\x99", 0x305c
+"\x30\x5d\x30\x99", 0x305e
+"\x30\x5f\x30\x99", 0x3060
+"\x30\x61\x30\x99", 0x3062
+"\x30\x64\x30\x99", 0x3065
+"\x30\x66\x30\x99", 0x3067
+"\x30\x68\x30\x99", 0x3069
+"\x30\x6f\x30\x99", 0x3070
+"\x30\x6f\x30\x9a", 0x3071
+"\x30\x72\x30\x99", 0x3073
+"\x30\x72\x30\x9a", 0x3074
+"\x30\x75\x30\x99", 0x3076
+"\x30\x75\x30\x9a", 0x3077
+"\x30\x78\x30\x99", 0x3079
+"\x30\x78\x30\x9a", 0x307a
+"\x30\x7b\x30\x99", 0x307c
+"\x30\x7b\x30\x9a", 0x307d
+"\x30\x46\x30\x99", 0x3094
+"\x30\x9d\x30\x99", 0x309e
+"\x30\xab\x30\x99", 0x30ac
+"\x30\xad\x30\x99", 0x30ae
+"\x30\xaf\x30\x99", 0x30b0
+"\x30\xb1\x30\x99", 0x30b2
+"\x30\xb3\x30\x99", 0x30b4
+"\x30\xb5\x30\x99", 0x30b6
+"\x30\xb7\x30\x99", 0x30b8
+"\x30\xb9\x30\x99", 0x30ba
+"\x30\xbb\x30\x99", 0x30bc
+"\x30\xbd\x30\x99", 0x30be
+"\x30\xbf\x30\x99", 0x30c0
+"\x30\xc1\x30\x99", 0x30c2
+"\x30\xc4\x30\x99", 0x30c5
+"\x30\xc6\x30\x99", 0x30c7
+"\x30\xc8\x30\x99", 0x30c9
+"\x30\xcf\x30\x99", 0x30d0
+"\x30\xcf\x30\x9a", 0x30d1
+"\x30\xd2\x30\x99", 0x30d3
+"\x30\xd2\x30\x9a", 0x30d4
+"\x30\xd5\x30\x99", 0x30d6
+"\x30\xd5\x30\x9a", 0x30d7
+"\x30\xd8\x30\x99", 0x30d9
+"\x30\xd8\x30\x9a", 0x30da
+"\x30\xdb\x30\x99", 0x30dc
+"\x30\xdb\x30\x9a", 0x30dd
+"\x30\xa6\x30\x99", 0x30f4
+"\x30\xef\x30\x99", 0x30f7
+"\x30\xf0\x30\x99", 0x30f8
+"\x30\xf1\x30\x99", 0x30f9
+"\x30\xf2\x30\x99", 0x30fa
+"\x30\xfd\x30\x99", 0x30fe
diff --git a/lib/uninorm/composition-table.h b/lib/uninorm/composition-table.h
new file mode 100644
index 00000000..3e992a40
--- /dev/null
+++ b/lib/uninorm/composition-table.h
@@ -0,0 +1,2159 @@
+/* ANSI-C code produced by gperf version 3.0.4 */
+/* Command-line: gperf -m 1 ./uninorm/composition-table.gperf */
+/* Computed positions: -k'1-2,4' */
+
+
+#define TOTAL_KEYWORDS 928
+#define MIN_WORD_LENGTH 4
+#define MAX_WORD_LENGTH 4
+#define MIN_HASH_VALUE 1
+#define MAX_HASH_VALUE 1527
+/* maximum key range = 1527, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+/*ARGSUSED*/
+static unsigned int
+gl_uninorm_compose_hash (register const char *str, register unsigned int len)
+{
+ static const unsigned short asso_values[] =
+ {
+ 7, 1, 0, 3, 58, 132, 240, 62, 4, 33,
+ 117, 268, 485, 135, 601, 599, 103, 770, 249, 284,
+ 59, 337, 685, 524, 711, 106, 498, 569, 712, 1528,
+ 91, 13, 841, 752, 322, 487, 192, 604, 817, 13,
+ 337, 65, 137, 147, 45, 144, 255, 588, 133, 342,
+ 172, 15, 1528, 794, 60, 95, 606, 50, 18, 1528,
+ 239, 67, 198, 362, 75, 89, 324, 2, 531, 167,
+ 12, 375, 289, 61, 397, 314, 431, 452, 395, 180,
+ 821, 736, 362, 561, 456, 202, 536, 360, 645, 300,
+ 592, 700, 1528, 361, 1528, 358, 796, 26, 783, 653,
+ 270, 98, 253, 415, 323, 42, 747, 575, 542, 691,
+ 262, 124, 792, 1528, 251, 559, 236, 133, 12, 406,
+ 460, 219, 627, 9, 158, 168, 1528, 1, 1528, 1528,
+ 161, 153, 1528, 1528, 129, 123, 1528, 1528, 1528, 1528,
+ 1528, 1528, 1528, 1528, 23, 493, 109, 1528, 10, 676,
+ 1528, 725, 1528, 650, 59, 384, 1528, 291, 1528, 50,
+ 589, 518, 79, 1528, 1528, 672, 235, 1528, 466, 628,
+ 1528, 62, 27, 229, 20, 668, 778, 531, 37, 5,
+ 16, 416, 5, 560, 34, 482, 1528, 147, 1528, 138,
+ 1528, 476, 1528, 530, 839, 1, 329, 524, 675, 342,
+ 136, 684, 580, 211, 31, 19, 9, 87, 21, 1528,
+ 356, 1528, 725, 313, 14, 0, 555, 65, 1528, 256,
+ 37, 1528, 1528, 1528, 105, 1528, 833, 1528, 16, 4,
+ 0, 3, 19, 1, 755, 4, 1528, 1528, 1528, 54,
+ 100, 76, 27, 1528, 811, 20, 56, 1528, 1, 1528,
+ 1528, 1528, 706, 14, 71, 1528, 1528
+ };
+ return asso_values[(unsigned char)str[3]+1] + asso_values[(unsigned char)str[1]] + asso_values[(unsigned char)str[0]];
+}
+
+#ifdef __GNUC__
+__inline
+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+const struct composition_rule *
+gl_uninorm_compose_lookup (register const char *str, register unsigned int len)
+{
+ static const unsigned char lengthtable[] =
+ {
+ 0, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 0, 4, 4, 0, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4,
+ 4, 0, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4,
+ 4, 0, 4, 4, 4, 4, 0, 4, 4, 0, 4, 4, 0, 0,
+ 0, 0, 4, 4, 4, 0, 4, 4, 4, 0, 4, 0, 0, 0,
+ 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 0, 0, 0, 0,
+ 0, 4, 0, 4, 4, 0, 0, 0, 4, 4, 0, 4, 0, 4,
+ 0, 0, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 4, 4, 0, 0,
+ 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 4, 4, 0, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0,
+ 0, 0, 0, 4, 0, 4, 4, 0, 0, 4, 0, 4, 0, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4
+ };
+ static const struct composition_rule wordlist[] =
+ {
+ {""},
+#line 572 "./uninorm/composition-table.gperf"
+ {"\001\002\003\001", 0x1eae},
+#line 574 "./uninorm/composition-table.gperf"
+ {"\001\002\003\000", 0x1eb0},
+ {""},
+#line 573 "./uninorm/composition-table.gperf"
+ {"\001\003\003\001", 0x1eaf},
+#line 575 "./uninorm/composition-table.gperf"
+ {"\001\003\003\000", 0x1eb1},
+#line 557 "./uninorm/composition-table.gperf"
+ {"\001\177\003\007", 0x1e9b},
+#line 236 "./uninorm/composition-table.gperf"
+ {"\000\346\003\001", 0x01fd},
+#line 238 "./uninorm/composition-table.gperf"
+ {"\000\370\003\001", 0x01ff},
+#line 90 "./uninorm/composition-table.gperf"
+ {"\000C\003\001", 0x0106},
+#line 412 "./uninorm/composition-table.gperf"
+ {"\000\347\003\001", 0x1e09},
+#line 234 "./uninorm/composition-table.gperf"
+ {"\000\345\003\001", 0x01fb},
+#line 92 "./uninorm/composition-table.gperf"
+ {"\000C\003\002", 0x0108},
+#line 94 "./uninorm/composition-table.gperf"
+ {"\000C\003\007", 0x010a},
+#line 653 "./uninorm/composition-table.gperf"
+ {"\037\001\003\001", 0x1f05},
+#line 651 "./uninorm/composition-table.gperf"
+ {"\037\001\003\000", 0x1f03},
+#line 655 "./uninorm/composition-table.gperf"
+ {"\037\001\003B", 0x1f07},
+#line 660 "./uninorm/composition-table.gperf"
+ {"\037\010\003\001", 0x1f0c},
+#line 658 "./uninorm/composition-table.gperf"
+ {"\037\010\003\000", 0x1f0a},
+#line 662 "./uninorm/composition-table.gperf"
+ {"\037\010\003B", 0x1f0e},
+#line 652 "./uninorm/composition-table.gperf"
+ {"\037\000\003\001", 0x1f04},
+#line 650 "./uninorm/composition-table.gperf"
+ {"\037\000\003\000", 0x1f02},
+#line 654 "./uninorm/composition-table.gperf"
+ {"\037\000\003B", 0x1f06},
+#line 433 "./uninorm/composition-table.gperf"
+ {"\000F\003\007", 0x1e1e},
+#line 851 "./uninorm/composition-table.gperf"
+ {"\003\316\003E", 0x1ff4},
+#line 757 "./uninorm/composition-table.gperf"
+ {"\037\002\003E", 0x1f82},
+#line 756 "./uninorm/composition-table.gperf"
+ {"\037\001\003E", 0x1f81},
+#line 480 "./uninorm/composition-table.gperf"
+ {"\000\365\003\001", 0x1e4d},
+#line 758 "./uninorm/composition-table.gperf"
+ {"\037\003\003E", 0x1f83},
+#line 763 "./uninorm/composition-table.gperf"
+ {"\037\010\003E", 0x1f88},
+#line 809 "./uninorm/composition-table.gperf"
+ {"\037\266\003E", 0x1fb7},
+#line 506 "./uninorm/composition-table.gperf"
+ {"\001a\003\007", 0x1e67},
+#line 755 "./uninorm/composition-table.gperf"
+ {"\037\000\003E", 0x1f80},
+#line 58 "./uninorm/composition-table.gperf"
+ {"\000a\003\001", 0x00e1},
+#line 57 "./uninorm/composition-table.gperf"
+ {"\000a\003\000", 0x00e0},
+#line 817 "./uninorm/composition-table.gperf"
+ {"\003\256\003E", 0x1fc4},
+#line 59 "./uninorm/composition-table.gperf"
+ {"\000a\003\002", 0x00e2},
+#line 270 "./uninorm/composition-table.gperf"
+ {"\000a\003\007", 0x0227},
+#line 778 "./uninorm/composition-table.gperf"
+ {"\037'\003E", 0x1f97},
+#line 737 "./uninorm/composition-table.gperf"
+ {"\037a\003\001", 0x1f65},
+#line 735 "./uninorm/composition-table.gperf"
+ {"\037a\003\000", 0x1f63},
+#line 739 "./uninorm/composition-table.gperf"
+ {"\037a\003B", 0x1f67},
+#line 807 "./uninorm/composition-table.gperf"
+ {"\003\254\003E", 0x1fb4},
+#line 524 "./uninorm/composition-table.gperf"
+ {"\001i\003\001", 0x1e79},
+#line 206 "./uninorm/composition-table.gperf"
+ {"\000\334\003\001", 0x01d7},
+#line 210 "./uninorm/composition-table.gperf"
+ {"\000\334\003\000", 0x01db},
+#line 661 "./uninorm/composition-table.gperf"
+ {"\037\011\003\001", 0x1f0d},
+#line 659 "./uninorm/composition-table.gperf"
+ {"\037\011\003\000", 0x1f0b},
+#line 663 "./uninorm/composition-table.gperf"
+ {"\037\011\003B", 0x1f0f},
+#line 69 "./uninorm/composition-table.gperf"
+ {"\000i\003\001", 0x00ed},
+#line 68 "./uninorm/composition-table.gperf"
+ {"\000i\003\000", 0x00ec},
+#line 788 "./uninorm/composition-table.gperf"
+ {"\037a\003E", 0x1fa1},
+#line 70 "./uninorm/composition-table.gperf"
+ {"\000i\003\002", 0x00ee},
+#line 288 "./uninorm/composition-table.gperf"
+ {"\003\237\003\001", 0x038c},
+#line 854 "./uninorm/composition-table.gperf"
+ {"\003\237\003\000", 0x1ff8},
+#line 745 "./uninorm/composition-table.gperf"
+ {"\037i\003\001", 0x1f6d},
+#line 743 "./uninorm/composition-table.gperf"
+ {"\037i\003\000", 0x1f6b},
+#line 747 "./uninorm/composition-table.gperf"
+ {"\037i\003B", 0x1f6f},
+#line 764 "./uninorm/composition-table.gperf"
+ {"\037\011\003E", 0x1f89},
+#line 578 "./uninorm/composition-table.gperf"
+ {"\001\002\003\003", 0x1eb4},
+#line 482 "./uninorm/composition-table.gperf"
+ {"\000\365\003\010", 0x1e4f},
+#line 450 "./uninorm/composition-table.gperf"
+ {"\000\357\003\001", 0x1e2f},
+#line 579 "./uninorm/composition-table.gperf"
+ {"\001\003\003\003", 0x1eb5},
+#line 705 "./uninorm/composition-table.gperf"
+ {"\0379\003\001", 0x1f3d},
+#line 703 "./uninorm/composition-table.gperf"
+ {"\0379\003\000", 0x1f3b},
+#line 707 "./uninorm/composition-table.gperf"
+ {"\0379\003B", 0x1f3f},
+#line 61 "./uninorm/composition-table.gperf"
+ {"\000a\003\010", 0x00e4},
+#line 796 "./uninorm/composition-table.gperf"
+ {"\037i\003E", 0x1fa9},
+#line 43 "./uninorm/composition-table.gperf"
+ {"\000I\003\001", 0x00cd},
+#line 42 "./uninorm/composition-table.gperf"
+ {"\000I\003\000", 0x00cc},
+#line 783 "./uninorm/composition-table.gperf"
+ {"\037,\003E", 0x1f9c},
+#line 44 "./uninorm/composition-table.gperf"
+ {"\000I\003\002", 0x00ce},
+#line 128 "./uninorm/composition-table.gperf"
+ {"\000I\003\007", 0x0130},
+#line 317 "./uninorm/composition-table.gperf"
+ {"\0043\003\001", 0x0453},
+#line 719 "./uninorm/composition-table.gperf"
+ {"\037I\003\001", 0x1f4d},
+#line 717 "./uninorm/composition-table.gperf"
+ {"\037I\003\000", 0x1f4b},
+#line 319 "./uninorm/composition-table.gperf"
+ {"\004:\003\001", 0x045c},
+#line 528 "./uninorm/composition-table.gperf"
+ {"\000v\003\003", 0x1e7d},
+#line 689 "./uninorm/composition-table.gperf"
+ {"\037)\003\001", 0x1f2d},
+#line 687 "./uninorm/composition-table.gperf"
+ {"\037)\003\000", 0x1f2b},
+#line 691 "./uninorm/composition-table.gperf"
+ {"\037)\003B", 0x1f2f},
+#line 853 "./uninorm/composition-table.gperf"
+ {"\037\366\003E", 0x1ff7},
+#line 71 "./uninorm/composition-table.gperf"
+ {"\000i\003\010", 0x00ef},
+#line 759 "./uninorm/composition-table.gperf"
+ {"\037\004\003E", 0x1f84},
+#line 835 "./uninorm/composition-table.gperf"
+ {"\037\376\003\001", 0x1fde},
+#line 834 "./uninorm/composition-table.gperf"
+ {"\037\376\003\000", 0x1fdd},
+#line 836 "./uninorm/composition-table.gperf"
+ {"\037\376\003B", 0x1fdf},
+#line 762 "./uninorm/composition-table.gperf"
+ {"\037\007\003E", 0x1f87},
+#line 712 "./uninorm/composition-table.gperf"
+ {"\037@\003\001", 0x1f44},
+#line 710 "./uninorm/composition-table.gperf"
+ {"\037@\003\000", 0x1f42},
+#line 780 "./uninorm/composition-table.gperf"
+ {"\037)\003E", 0x1f99},
+#line 60 "./uninorm/composition-table.gperf"
+ {"\000a\003\003", 0x00e3},
+#line 345 "./uninorm/composition-table.gperf"
+ {"\004\351\003\010", 0x04eb},
+#line 351 "./uninorm/composition-table.gperf"
+ {"\004C\003\010", 0x04f1},
+#line 449 "./uninorm/composition-table.gperf"
+ {"\000\317\003\001", 0x1e2e},
+#line 87 "./uninorm/composition-table.gperf"
+ {"\000a\003\006", 0x0103},
+#line 32 "./uninorm/composition-table.gperf"
+ {"\000A\003\001", 0x00c1},
+#line 31 "./uninorm/composition-table.gperf"
+ {"\000A\003\000", 0x00c0},
+#line 89 "./uninorm/composition-table.gperf"
+ {"\000a\003(", 0x0105},
+#line 33 "./uninorm/composition-table.gperf"
+ {"\000A\003\002", 0x00c2},
+#line 269 "./uninorm/composition-table.gperf"
+ {"\000A\003\007", 0x0226},
+#line 45 "./uninorm/composition-table.gperf"
+ {"\000I\003\010", 0x00cf},
+#line 713 "./uninorm/composition-table.gperf"
+ {"\037A\003\001", 0x1f45},
+#line 711 "./uninorm/composition-table.gperf"
+ {"\037A\003\000", 0x1f43},
+#line 354 "./uninorm/composition-table.gperf"
+ {"\004'\003\010", 0x04f4},
+#line 65 "./uninorm/composition-table.gperf"
+ {"\000e\003\001", 0x00e9},
+#line 64 "./uninorm/composition-table.gperf"
+ {"\000e\003\000", 0x00e8},
+#line 121 "./uninorm/composition-table.gperf"
+ {"\000i\003\003", 0x0129},
+#line 66 "./uninorm/composition-table.gperf"
+ {"\000e\003\002", 0x00ea},
+#line 105 "./uninorm/composition-table.gperf"
+ {"\000e\003\007", 0x0117},
+#line 344 "./uninorm/composition-table.gperf"
+ {"\004\350\003\010", 0x04ea},
+#line 125 "./uninorm/composition-table.gperf"
+ {"\000i\003\006", 0x012d},
+#line 714 "./uninorm/composition-table.gperf"
+ {"\003\237\003\023", 0x1f48},
+#line 615 "./uninorm/composition-table.gperf"
+ {"\036\315\003\002", 0x1ed9},
+#line 127 "./uninorm/composition-table.gperf"
+ {"\000i\003(", 0x012f},
+#line 368 "./uninorm/composition-table.gperf"
+ {"\0113\011<", 0x0934},
+#line 668 "./uninorm/composition-table.gperf"
+ {"\037\020\003\001", 0x1f14},
+#line 666 "./uninorm/composition-table.gperf"
+ {"\037\020\003\000", 0x1f12},
+#line 576 "./uninorm/composition-table.gperf"
+ {"\001\002\003\011", 0x1eb2},
+#line 675 "./uninorm/composition-table.gperf"
+ {"\037\031\003\001", 0x1f1d},
+#line 673 "./uninorm/composition-table.gperf"
+ {"\037\031\003\000", 0x1f1b},
+#line 577 "./uninorm/composition-table.gperf"
+ {"\001\003\003\011", 0x1eb3},
+#line 321 "./uninorm/composition-table.gperf"
+ {"\004C\003\006", 0x045e},
+#line 792 "./uninorm/composition-table.gperf"
+ {"\037e\003E", 0x1fa5},
+#line 872 "./uninorm/composition-table.gperf"
+ {"\000=\0038", 0x2260},
+#line 614 "./uninorm/composition-table.gperf"
+ {"\036\314\003\002", 0x1ed8},
+#line 120 "./uninorm/composition-table.gperf"
+ {"\000I\003\003", 0x0128},
+#line 432 "./uninorm/composition-table.gperf"
+ {"\002)\003\006", 0x1e1d},
+#line 596 "./uninorm/composition-table.gperf"
+ {"\036\270\003\002", 0x1ec6},
+#line 35 "./uninorm/composition-table.gperf"
+ {"\000A\003\010", 0x00c4},
+#line 124 "./uninorm/composition-table.gperf"
+ {"\000I\003\006", 0x012c},
+#line 74 "./uninorm/composition-table.gperf"
+ {"\000o\003\001", 0x00f3},
+#line 73 "./uninorm/composition-table.gperf"
+ {"\000o\003\000", 0x00f2},
+#line 126 "./uninorm/composition-table.gperf"
+ {"\000I\003(", 0x012e},
+#line 75 "./uninorm/composition-table.gperf"
+ {"\000o\003\002", 0x00f4},
+#line 278 "./uninorm/composition-table.gperf"
+ {"\000o\003\007", 0x022f},
+#line 240 "./uninorm/composition-table.gperf"
+ {"\000a\003\017", 0x0201},
+#line 225 "./uninorm/composition-table.gperf"
+ {"\001\353\003\004", 0x01ed},
+#line 67 "./uninorm/composition-table.gperf"
+ {"\000e\003\010", 0x00eb},
+#line 217 "./uninorm/composition-table.gperf"
+ {"\000\346\003\004", 0x01e3},
+#line 79 "./uninorm/composition-table.gperf"
+ {"\000u\003\001", 0x00fa},
+#line 78 "./uninorm/composition-table.gperf"
+ {"\000u\003\000", 0x00f9},
+#line 765 "./uninorm/composition-table.gperf"
+ {"\037\012\003E", 0x1f8a},
+#line 80 "./uninorm/composition-table.gperf"
+ {"\000u\003\002", 0x00fb},
+#line 96 "./uninorm/composition-table.gperf"
+ {"\000C\003\014", 0x010c},
+#line 215 "./uninorm/composition-table.gperf"
+ {"\002'\003\004", 0x01e1},
+#line 696 "./uninorm/composition-table.gperf"
+ {"\0370\003\001", 0x1f34},
+#line 694 "./uninorm/composition-table.gperf"
+ {"\0370\003\000", 0x1f32},
+#line 698 "./uninorm/composition-table.gperf"
+ {"\0370\003B", 0x1f36},
+#line 802 "./uninorm/composition-table.gperf"
+ {"\037o\003E", 0x1faf},
+#line 561 "./uninorm/composition-table.gperf"
+ {"\000a\003\011", 0x1ea3},
+#line 335 "./uninorm/composition-table.gperf"
+ {"\0046\003\010", 0x04dd},
+#line 248 "./uninorm/composition-table.gperf"
+ {"\000i\003\017", 0x0209},
+#line 273 "./uninorm/composition-table.gperf"
+ {"\000\326\003\004", 0x022a},
+#line 34 "./uninorm/composition-table.gperf"
+ {"\000A\003\003", 0x00c3},
+#line 213 "./uninorm/composition-table.gperf"
+ {"\000\344\003\004", 0x01df},
+#line 333 "./uninorm/composition-table.gperf"
+ {"\004\331\003\010", 0x04db},
+#line 760 "./uninorm/composition-table.gperf"
+ {"\037\005\003E", 0x1f85},
+#line 86 "./uninorm/composition-table.gperf"
+ {"\000A\003\006", 0x0102},
+#line 276 "./uninorm/composition-table.gperf"
+ {"\000\365\003\004", 0x022d},
+#line 768 "./uninorm/composition-table.gperf"
+ {"\037\015\003E", 0x1f8d},
+#line 88 "./uninorm/composition-table.gperf"
+ {"\000A\003(", 0x0104},
+#line 781 "./uninorm/composition-table.gperf"
+ {"\037*\003E", 0x1f9a},
+#line 587 "./uninorm/composition-table.gperf"
+ {"\000e\003\003", 0x1ebd},
+#line 77 "./uninorm/composition-table.gperf"
+ {"\000o\003\010", 0x00f6},
+#line 85 "./uninorm/composition-table.gperf"
+ {"\000a\003\004", 0x0101},
+#line 599 "./uninorm/composition-table.gperf"
+ {"\000i\003\011", 0x1ec9},
+#line 103 "./uninorm/composition-table.gperf"
+ {"\000e\003\006", 0x0115},
+#line 197 "./uninorm/composition-table.gperf"
+ {"\000a\003\014", 0x01ce},
+#line 784 "./uninorm/composition-table.gperf"
+ {"\037-\003E", 0x1f9d},
+#line 107 "./uninorm/composition-table.gperf"
+ {"\000e\003(", 0x0119},
+#line 247 "./uninorm/composition-table.gperf"
+ {"\000I\003\017", 0x0208},
+#line 782 "./uninorm/composition-table.gperf"
+ {"\037+\003E", 0x1f9b},
+#line 81 "./uninorm/composition-table.gperf"
+ {"\000u\003\010", 0x00fc},
+#line 39 "./uninorm/composition-table.gperf"
+ {"\000E\003\001", 0x00c9},
+#line 38 "./uninorm/composition-table.gperf"
+ {"\000E\003\000", 0x00c8},
+#line 204 "./uninorm/composition-table.gperf"
+ {"\000\334\003\004", 0x01d5},
+#line 40 "./uninorm/composition-table.gperf"
+ {"\000E\003\002", 0x00ca},
+#line 104 "./uninorm/composition-table.gperf"
+ {"\000E\003\007", 0x0116},
+#line 208 "./uninorm/composition-table.gperf"
+ {"\000\334\003\014", 0x01d9},
+#line 325 "./uninorm/composition-table.gperf"
+ {"\0046\003\006", 0x04c2},
+#line 123 "./uninorm/composition-table.gperf"
+ {"\000i\003\004", 0x012b},
+#line 342 "./uninorm/composition-table.gperf"
+ {"\004\036\003\010", 0x04e6},
+#line 849 "./uninorm/composition-table.gperf"
+ {"\037|\003E", 0x1ff2},
+#line 199 "./uninorm/composition-table.gperf"
+ {"\000i\003\014", 0x01d0},
+#line 598 "./uninorm/composition-table.gperf"
+ {"\000I\003\011", 0x1ec8},
+#line 337 "./uninorm/composition-table.gperf"
+ {"\0047\003\010", 0x04df},
+#line 48 "./uninorm/composition-table.gperf"
+ {"\000O\003\001", 0x00d3},
+#line 47 "./uninorm/composition-table.gperf"
+ {"\000O\003\000", 0x00d2},
+#line 76 "./uninorm/composition-table.gperf"
+ {"\000o\003\003", 0x00f5},
+#line 49 "./uninorm/composition-table.gperf"
+ {"\000O\003\002", 0x00d4},
+#line 277 "./uninorm/composition-table.gperf"
+ {"\000O\003\007", 0x022e},
+#line 349 "./uninorm/composition-table.gperf"
+ {"\004C\003\004", 0x04ef},
+#line 148 "./uninorm/composition-table.gperf"
+ {"\000o\003\006", 0x014f},
+#line 328 "./uninorm/composition-table.gperf"
+ {"\004\020\003\010", 0x04d2},
+#line 274 "./uninorm/composition-table.gperf"
+ {"\000\366\003\004", 0x022b},
+#line 223 "./uninorm/composition-table.gperf"
+ {"\000o\003(", 0x01eb},
+#line 932 "./uninorm/composition-table.gperf"
+ {"0\2630\231", 0x30b4},
+#line 170 "./uninorm/composition-table.gperf"
+ {"\000u\003\003", 0x0169},
+#line 239 "./uninorm/composition-table.gperf"
+ {"\000A\003\017", 0x0200},
+#line 122 "./uninorm/composition-table.gperf"
+ {"\000I\003\004", 0x012a},
+#line 924 "./uninorm/composition-table.gperf"
+ {"0{0\231", 0x307c},
+#line 174 "./uninorm/composition-table.gperf"
+ {"\000u\003\006", 0x016d},
+#line 198 "./uninorm/composition-table.gperf"
+ {"\000I\003\014", 0x01cf},
+#line 926 "./uninorm/composition-table.gperf"
+ {"0F0\231", 0x3094},
+#line 180 "./uninorm/composition-table.gperf"
+ {"\000u\003(", 0x0173},
+#line 958 "./uninorm/composition-table.gperf"
+ {"0\3750\231", 0x30fe},
+#line 41 "./uninorm/composition-table.gperf"
+ {"\000E\003\010", 0x00cb},
+#line 244 "./uninorm/composition-table.gperf"
+ {"\000e\003\017", 0x0205},
+#line 53 "./uninorm/composition-table.gperf"
+ {"\000U\003\001", 0x00da},
+#line 52 "./uninorm/composition-table.gperf"
+ {"\000U\003\000", 0x00d9},
+#line 530 "./uninorm/composition-table.gperf"
+ {"\000v\003#", 0x1e7f},
+#line 54 "./uninorm/composition-table.gperf"
+ {"\000U\003\002", 0x00db},
+#line 560 "./uninorm/composition-table.gperf"
+ {"\000A\003\011", 0x1ea2},
+#line 298 "./uninorm/composition-table.gperf"
+ {"\003\313\003\001", 0x03b0},
+#line 839 "./uninorm/composition-table.gperf"
+ {"\003\313\003\000", 0x1fe2},
+#line 843 "./uninorm/composition-table.gperf"
+ {"\003\313\003B", 0x1fe7},
+#line 775 "./uninorm/composition-table.gperf"
+ {"\037$\003E", 0x1f94},
+#line 912 "./uninorm/composition-table.gperf"
+ {"0a0\231", 0x3062},
+#line 957 "./uninorm/composition-table.gperf"
+ {"0\3620\231", 0x30fa},
+#line 51 "./uninorm/composition-table.gperf"
+ {"\000O\003\010", 0x00d6},
+#line 388 "./uninorm/composition-table.gperf"
+ {"\015\331\015\317", 0x0ddc},
+#line 585 "./uninorm/composition-table.gperf"
+ {"\000e\003\011", 0x1ebb},
+#line 326 "./uninorm/composition-table.gperf"
+ {"\004\020\003\006", 0x04d0},
+#line 329 "./uninorm/composition-table.gperf"
+ {"\0040\003\010", 0x04d3},
+#line 559 "./uninorm/composition-table.gperf"
+ {"\000a\003#", 0x1ea1},
+#line 82 "./uninorm/composition-table.gperf"
+ {"\000y\003\001", 0x00fd},
+#line 641 "./uninorm/composition-table.gperf"
+ {"\000y\003\000", 0x1ef3},
+#line 84 "./uninorm/composition-table.gperf"
+ {"\000A\003\004", 0x0100},
+#line 184 "./uninorm/composition-table.gperf"
+ {"\000y\003\002", 0x0177},
+#line 546 "./uninorm/composition-table.gperf"
+ {"\000y\003\007", 0x1e8f},
+#line 196 "./uninorm/composition-table.gperf"
+ {"\000A\003\014", 0x01cd},
+#line 586 "./uninorm/composition-table.gperf"
+ {"\000E\003\003", 0x1ebc},
+#line 367 "./uninorm/composition-table.gperf"
+ {"\0110\011<", 0x0931},
+#line 252 "./uninorm/composition-table.gperf"
+ {"\000o\003\017", 0x020d},
+#line 346 "./uninorm/composition-table.gperf"
+ {"\004-\003\010", 0x04ec},
+#line 102 "./uninorm/composition-table.gperf"
+ {"\000E\003\006", 0x0114},
+#line 101 "./uninorm/composition-table.gperf"
+ {"\000e\003\004", 0x0113},
+#line 356 "./uninorm/composition-table.gperf"
+ {"\004+\003\010", 0x04f8},
+#line 106 "./uninorm/composition-table.gperf"
+ {"\000E\003(", 0x0118},
+#line 109 "./uninorm/composition-table.gperf"
+ {"\000e\003\014", 0x011b},
+#line 601 "./uninorm/composition-table.gperf"
+ {"\000i\003#", 0x1ecb},
+#line 55 "./uninorm/composition-table.gperf"
+ {"\000U\003\010", 0x00dc},
+#line 260 "./uninorm/composition-table.gperf"
+ {"\000u\003\017", 0x0215},
+#line 227 "./uninorm/composition-table.gperf"
+ {"\002\222\003\014", 0x01ef},
+#line 50 "./uninorm/composition-table.gperf"
+ {"\000O\003\003", 0x00d5},
+#line 954 "./uninorm/composition-table.gperf"
+ {"0\3570\231", 0x30f7},
+#line 510 "./uninorm/composition-table.gperf"
+ {"\000t\003\007", 0x1e6b},
+#line 605 "./uninorm/composition-table.gperf"
+ {"\000o\003\011", 0x1ecf},
+#line 147 "./uninorm/composition-table.gperf"
+ {"\000O\003\006", 0x014e},
+#line 425 "./uninorm/composition-table.gperf"
+ {"\001\022\003\001", 0x1e16},
+#line 423 "./uninorm/composition-table.gperf"
+ {"\001\022\003\000", 0x1e14},
+#line 222 "./uninorm/composition-table.gperf"
+ {"\000O\003(", 0x01ea},
+#line 327 "./uninorm/composition-table.gperf"
+ {"\0040\003\006", 0x04d1},
+#line 928 "./uninorm/composition-table.gperf"
+ {"0\2530\231", 0x30ac},
+#line 876 "./uninorm/composition-table.gperf"
+ {"\000>\0038", 0x226f},
+#line 266 "./uninorm/composition-table.gperf"
+ {"\000t\003&", 0x021b},
+#line 629 "./uninorm/composition-table.gperf"
+ {"\000u\003\011", 0x1ee7},
+#line 152 "./uninorm/composition-table.gperf"
+ {"\000r\003\001", 0x0155},
+#line 83 "./uninorm/composition-table.gperf"
+ {"\000y\003\010", 0x00ff},
+#line 600 "./uninorm/composition-table.gperf"
+ {"\000I\003#", 0x1eca},
+#line 815 "./uninorm/composition-table.gperf"
+ {"\037t\003E", 0x1fc2},
+#line 492 "./uninorm/composition-table.gperf"
+ {"\000r\003\007", 0x1e59},
+#line 146 "./uninorm/composition-table.gperf"
+ {"\000o\003\004", 0x014d},
+#line 434 "./uninorm/composition-table.gperf"
+ {"\000f\003\007", 0x1e1f},
+#line 761 "./uninorm/composition-table.gperf"
+ {"\037\006\003E", 0x1f86},
+#line 201 "./uninorm/composition-table.gperf"
+ {"\000o\003\014", 0x01d2},
+#line 169 "./uninorm/composition-table.gperf"
+ {"\000U\003\003", 0x0168},
+#line 956 "./uninorm/composition-table.gperf"
+ {"0\3610\231", 0x30f9},
+#line 140 "./uninorm/composition-table.gperf"
+ {"\000n\003\001", 0x0144},
+#line 232 "./uninorm/composition-table.gperf"
+ {"\000n\003\000", 0x01f9},
+#line 173 "./uninorm/composition-table.gperf"
+ {"\000U\003\006", 0x016c},
+#line 172 "./uninorm/composition-table.gperf"
+ {"\000u\003\004", 0x016b},
+#line 472 "./uninorm/composition-table.gperf"
+ {"\000n\003\007", 0x1e45},
+#line 179 "./uninorm/composition-table.gperf"
+ {"\000U\003(", 0x0172},
+#line 203 "./uninorm/composition-table.gperf"
+ {"\000u\003\014", 0x01d4},
+#line 554 "./uninorm/composition-table.gperf"
+ {"\000t\003\010", 0x1e97},
+#line 243 "./uninorm/composition-table.gperf"
+ {"\000E\003\017", 0x0204},
+#line 793 "./uninorm/composition-table.gperf"
+ {"\037f\003E", 0x1fa6},
+#line 943 "./uninorm/composition-table.gperf"
+ {"0\3170\231", 0x30d0},
+#line 785 "./uninorm/composition-table.gperf"
+ {"\037.\003E", 0x1f9e},
+#line 414 "./uninorm/composition-table.gperf"
+ {"\000d\003\007", 0x1e0b},
+#line 242 "./uninorm/composition-table.gperf"
+ {"\000a\003\021", 0x0203},
+#line 459 "./uninorm/composition-table.gperf"
+ {"\0366\003\004", 0x1e38},
+#line 647 "./uninorm/composition-table.gperf"
+ {"\000y\003\003", 0x1ef9},
+#line 426 "./uninorm/composition-table.gperf"
+ {"\001\023\003\001", 0x1e17},
+#line 424 "./uninorm/composition-table.gperf"
+ {"\001\023\003\000", 0x1e15},
+#line 801 "./uninorm/composition-table.gperf"
+ {"\037n\003E", 0x1fae},
+#line 558 "./uninorm/composition-table.gperf"
+ {"\000A\003#", 0x1ea0},
+#line 343 "./uninorm/composition-table.gperf"
+ {"\004>\003\010", 0x04e7},
+#line 251 "./uninorm/composition-table.gperf"
+ {"\000O\003\017", 0x020c},
+#line 584 "./uninorm/composition-table.gperf"
+ {"\000E\003\011", 0x1eba},
+#line 955 "./uninorm/composition-table.gperf"
+ {"0\3600\231", 0x30f8},
+#line 766 "./uninorm/composition-table.gperf"
+ {"\037\013\003E", 0x1f8b},
+#line 323 "./uninorm/composition-table.gperf"
+ {"\004u\003\017", 0x0477},
+#line 791 "./uninorm/composition-table.gperf"
+ {"\037d\003E", 0x1fa4},
+#line 875 "./uninorm/composition-table.gperf"
+ {"\000<\0038", 0x226e},
+#line 583 "./uninorm/composition-table.gperf"
+ {"\000e\003#", 0x1eb9},
+#line 250 "./uninorm/composition-table.gperf"
+ {"\000i\003\021", 0x020b},
+#line 118 "./uninorm/composition-table.gperf"
+ {"\000H\003\002", 0x0124},
+#line 437 "./uninorm/composition-table.gperf"
+ {"\000H\003\007", 0x1e22},
+#line 62 "./uninorm/composition-table.gperf"
+ {"\000a\003\012", 0x00e5},
+#line 718 "./uninorm/composition-table.gperf"
+ {"\037H\003\001", 0x1f4c},
+#line 716 "./uninorm/composition-table.gperf"
+ {"\037H\003\000", 0x1f4a},
+#line 604 "./uninorm/composition-table.gperf"
+ {"\000O\003\011", 0x1ece},
+#line 390 "./uninorm/composition-table.gperf"
+ {"\015\331\015\337", 0x0dde},
+#line 100 "./uninorm/composition-table.gperf"
+ {"\000E\003\004", 0x0112},
+#line 56 "./uninorm/composition-table.gperf"
+ {"\000Y\003\001", 0x00dd},
+#line 640 "./uninorm/composition-table.gperf"
+ {"\000Y\003\000", 0x1ef2},
+#line 108 "./uninorm/composition-table.gperf"
+ {"\000E\003\014", 0x011a},
+#line 183 "./uninorm/composition-table.gperf"
+ {"\000Y\003\002", 0x0176},
+#line 545 "./uninorm/composition-table.gperf"
+ {"\000Y\003\007", 0x1e8e},
+#line 259 "./uninorm/composition-table.gperf"
+ {"\000U\003\017", 0x0214},
+#line 730 "./uninorm/composition-table.gperf"
+ {"\037Y\003\001", 0x1f5d},
+#line 729 "./uninorm/composition-table.gperf"
+ {"\037Y\003\000", 0x1f5b},
+#line 731 "./uninorm/composition-table.gperf"
+ {"\037Y\003B", 0x1f5f},
+#line 916 "./uninorm/composition-table.gperf"
+ {"0o0\231", 0x3070},
+#line 249 "./uninorm/composition-table.gperf"
+ {"\000I\003\021", 0x020a},
+#line 460 "./uninorm/composition-table.gperf"
+ {"\0367\003\004", 0x1e39},
+#line 145 "./uninorm/composition-table.gperf"
+ {"\000O\003\004", 0x014c},
+#line 479 "./uninorm/composition-table.gperf"
+ {"\000\325\003\001", 0x1e4c},
+#line 451 "./uninorm/composition-table.gperf"
+ {"\000K\003\001", 0x1e30},
+#line 200 "./uninorm/composition-table.gperf"
+ {"\000O\003\014", 0x01d1},
+#line 603 "./uninorm/composition-table.gperf"
+ {"\000o\003#", 0x1ecd},
+#line 523 "./uninorm/composition-table.gperf"
+ {"\001h\003\001", 0x1e78},
+#line 920 "./uninorm/composition-table.gperf"
+ {"0u0\231", 0x3076},
+#line 628 "./uninorm/composition-table.gperf"
+ {"\000U\003\011", 0x1ee6},
+#line 72 "./uninorm/composition-table.gperf"
+ {"\000n\003\003", 0x00f1},
+#line 942 "./uninorm/composition-table.gperf"
+ {"0\3100\231", 0x30c9},
+#line 441 "./uninorm/composition-table.gperf"
+ {"\000H\003\010", 0x1e26},
+#line 937 "./uninorm/composition-table.gperf"
+ {"0\2750\231", 0x30be},
+#line 309 "./uninorm/composition-table.gperf"
+ {"\004\006\003\010", 0x0407},
+#line 627 "./uninorm/composition-table.gperf"
+ {"\000u\003#", 0x1ee5},
+#line 119 "./uninorm/composition-table.gperf"
+ {"\000h\003\002", 0x0125},
+#line 438 "./uninorm/composition-table.gperf"
+ {"\000h\003\007", 0x1e23},
+#line 405 "./uninorm/composition-table.gperf"
+ {"\000B\003\007", 0x1e02},
+#line 744 "./uninorm/composition-table.gperf"
+ {"\037h\003\001", 0x1f6c},
+#line 742 "./uninorm/composition-table.gperf"
+ {"\037h\003\000", 0x1f6a},
+#line 746 "./uninorm/composition-table.gperf"
+ {"\037h\003B", 0x1f6e},
+#line 936 "./uninorm/composition-table.gperf"
+ {"0\2730\231", 0x30bc},
+#line 185 "./uninorm/composition-table.gperf"
+ {"\000Y\003\010", 0x0178},
+#line 171 "./uninorm/composition-table.gperf"
+ {"\000U\003\004", 0x016a},
+#line 308 "./uninorm/composition-table.gperf"
+ {"\004\023\003\001", 0x0403},
+#line 645 "./uninorm/composition-table.gperf"
+ {"\000y\003\011", 0x1ef7},
+#line 202 "./uninorm/composition-table.gperf"
+ {"\000U\003\014", 0x01d3},
+#line 241 "./uninorm/composition-table.gperf"
+ {"\000A\003\021", 0x0202},
+#line 37 "./uninorm/composition-table.gperf"
+ {"\000C\003'", 0x00c7},
+#line 773 "./uninorm/composition-table.gperf"
+ {"\037\"\003E", 0x1f92},
+#line 795 "./uninorm/composition-table.gperf"
+ {"\037h\003E", 0x1fa8},
+#line 411 "./uninorm/composition-table.gperf"
+ {"\000\307\003\001", 0x1e08},
+#line 688 "./uninorm/composition-table.gperf"
+ {"\037(\003\001", 0x1f2c},
+#line 686 "./uninorm/composition-table.gperf"
+ {"\037(\003\000", 0x1f2a},
+#line 690 "./uninorm/composition-table.gperf"
+ {"\037(\003B", 0x1f2e},
+#line 481 "./uninorm/composition-table.gperf"
+ {"\000\325\003\010", 0x1e4e},
+#line 246 "./uninorm/composition-table.gperf"
+ {"\000e\003\021", 0x0207},
+#line 697 "./uninorm/composition-table.gperf"
+ {"\0371\003\001", 0x1f35},
+#line 695 "./uninorm/composition-table.gperf"
+ {"\0371\003\000", 0x1f33},
+#line 699 "./uninorm/composition-table.gperf"
+ {"\0371\003B", 0x1f37},
+#line 282 "./uninorm/composition-table.gperf"
+ {"\000y\003\004", 0x0233},
+#line 304 "./uninorm/composition-table.gperf"
+ {"\003\322\003\001", 0x03d3},
+#line 428 "./uninorm/composition-table.gperf"
+ {"\000e\003-", 0x1e19},
+#line 256 "./uninorm/composition-table.gperf"
+ {"\000r\003\017", 0x0211},
+#line 779 "./uninorm/composition-table.gperf"
+ {"\037(\003E", 0x1f98},
+#line 442 "./uninorm/composition-table.gperf"
+ {"\000h\003\010", 0x1e27},
+#line 36 "./uninorm/composition-table.gperf"
+ {"\000A\003\012", 0x00c5},
+#line 646 "./uninorm/composition-table.gperf"
+ {"\000Y\003\003", 0x1ef8},
+#line 582 "./uninorm/composition-table.gperf"
+ {"\000E\003#", 0x1eb8},
+#line 533 "./uninorm/composition-table.gperf"
+ {"\000W\003\001", 0x1e82},
+#line 531 "./uninorm/composition-table.gperf"
+ {"\000W\003\000", 0x1e80},
+#line 151 "./uninorm/composition-table.gperf"
+ {"\000R\003\001", 0x0154},
+#line 181 "./uninorm/composition-table.gperf"
+ {"\000W\003\002", 0x0174},
+#line 537 "./uninorm/composition-table.gperf"
+ {"\000W\003\007", 0x1e86},
+#line 903 "./uninorm/composition-table.gperf"
+ {"0O0\231", 0x3050},
+#line 491 "./uninorm/composition-table.gperf"
+ {"\000R\003\007", 0x1e58},
+#line 869 "./uninorm/composition-table.gperf"
+ {"\"C\0038", 0x2244},
+#line 863 "./uninorm/composition-table.gperf"
+ {"\"\003\0038", 0x2204},
+#line 864 "./uninorm/composition-table.gperf"
+ {"\"\010\0038", 0x2209},
+#line 898 "./uninorm/composition-table.gperf"
+ {"\"\263\0038", 0x22eb},
+#line 168 "./uninorm/composition-table.gperf"
+ {"\000t\003\014", 0x0165},
+#line 602 "./uninorm/composition-table.gperf"
+ {"\000O\003#", 0x1ecc},
+#line 254 "./uninorm/composition-table.gperf"
+ {"\000o\003\021", 0x020f},
+#line 884 "./uninorm/composition-table.gperf"
+ {"\"{\0038", 0x2281},
+#line 229 "./uninorm/composition-table.gperf"
+ {"\000G\003\001", 0x01f4},
+#line 389 "./uninorm/composition-table.gperf"
+ {"\015\334\015\312", 0x0ddd},
+#line 881 "./uninorm/composition-table.gperf"
+ {"\"v\0038", 0x2278},
+#line 110 "./uninorm/composition-table.gperf"
+ {"\000G\003\002", 0x011c},
+#line 114 "./uninorm/composition-table.gperf"
+ {"\000G\003\007", 0x0120},
+#line 279 "./uninorm/composition-table.gperf"
+ {"\002.\003\004", 0x0230},
+#line 899 "./uninorm/composition-table.gperf"
+ {"\"\264\0038", 0x22ec},
+#line 262 "./uninorm/composition-table.gperf"
+ {"\000u\003\021", 0x0217},
+#line 715 "./uninorm/composition-table.gperf"
+ {"\003\237\003\024", 0x1f49},
+#line 448 "./uninorm/composition-table.gperf"
+ {"\000i\0030", 0x1e2d},
+#line 305 "./uninorm/composition-table.gperf"
+ {"\003\322\003\010", 0x03d4},
+#line 156 "./uninorm/composition-table.gperf"
+ {"\000r\003\014", 0x0159},
+#line 906 "./uninorm/composition-table.gperf"
+ {"0U0\231", 0x3056},
+#line 522 "./uninorm/composition-table.gperf"
+ {"\000u\003-", 0x1e77},
+#line 306 "./uninorm/composition-table.gperf"
+ {"\004\025\003\000", 0x0400},
+#line 322 "./uninorm/composition-table.gperf"
+ {"\004t\003\017", 0x0476},
+#line 873 "./uninorm/composition-table.gperf"
+ {"\"a\0038", 0x2262},
+#line 431 "./uninorm/composition-table.gperf"
+ {"\002(\003\006", 0x1e1c},
+#line 535 "./uninorm/composition-table.gperf"
+ {"\000W\003\010", 0x1e84},
+#line 626 "./uninorm/composition-table.gperf"
+ {"\000U\003#", 0x1ee4},
+#line 139 "./uninorm/composition-table.gperf"
+ {"\000N\003\001", 0x0143},
+#line 231 "./uninorm/composition-table.gperf"
+ {"\000N\003\000", 0x01f8},
+#line 144 "./uninorm/composition-table.gperf"
+ {"\000n\003\014", 0x0148},
+#line 357 "./uninorm/composition-table.gperf"
+ {"\004K\003\010", 0x04f9},
+#line 471 "./uninorm/composition-table.gperf"
+ {"\000N\003\007", 0x1e44},
+#line 129 "./uninorm/composition-table.gperf"
+ {"\000J\003\002", 0x0134},
+#line 176 "./uninorm/composition-table.gperf"
+ {"\000u\003\012", 0x016f},
+#line 897 "./uninorm/composition-table.gperf"
+ {"\"\262\0038", 0x22ea},
+#line 447 "./uninorm/composition-table.gperf"
+ {"\000I\0030", 0x1e2c},
+#line 387 "./uninorm/composition-table.gperf"
+ {"\015\331\015\312", 0x0dda},
+#line 99 "./uninorm/composition-table.gperf"
+ {"\000d\003\014", 0x010f},
+#line 534 "./uninorm/composition-table.gperf"
+ {"\000w\003\001", 0x1e83},
+#line 532 "./uninorm/composition-table.gperf"
+ {"\000w\003\000", 0x1e81},
+#line 514 "./uninorm/composition-table.gperf"
+ {"\000t\0031", 0x1e6f},
+#line 182 "./uninorm/composition-table.gperf"
+ {"\000w\003\002", 0x0175},
+#line 538 "./uninorm/composition-table.gperf"
+ {"\000w\003\007", 0x1e87},
+#line 643 "./uninorm/composition-table.gperf"
+ {"\000y\003#", 0x1ef5},
+#line 295 "./uninorm/composition-table.gperf"
+ {"\003\265\003\001", 0x03ad},
+#line 749 "./uninorm/composition-table.gperf"
+ {"\003\265\003\000", 0x1f72},
+#line 929 "./uninorm/composition-table.gperf"
+ {"0\2550\231", 0x30ae},
+#line 230 "./uninorm/composition-table.gperf"
+ {"\000g\003\001", 0x01f5},
+#line 245 "./uninorm/composition-table.gperf"
+ {"\000E\003\021", 0x0206},
+#line 644 "./uninorm/composition-table.gperf"
+ {"\000Y\003\011", 0x1ef6},
+#line 111 "./uninorm/composition-table.gperf"
+ {"\000g\003\002", 0x011d},
+#line 115 "./uninorm/composition-table.gperf"
+ {"\000g\003\007", 0x0121},
+#line 953 "./uninorm/composition-table.gperf"
+ {"0\2460\231", 0x30f4},
+#line 307 "./uninorm/composition-table.gperf"
+ {"\004\025\003\010", 0x0401},
+#line 427 "./uninorm/composition-table.gperf"
+ {"\000E\003-", 0x1e18},
+#line 498 "./uninorm/composition-table.gperf"
+ {"\000r\0031", 0x1e5f},
+#line 267 "./uninorm/composition-table.gperf"
+ {"\000H\003\014", 0x021e},
+#line 485 "./uninorm/composition-table.gperf"
+ {"\001L\003\001", 0x1e52},
+#line 483 "./uninorm/composition-table.gperf"
+ {"\001L\003\000", 0x1e50},
+#line 892 "./uninorm/composition-table.gperf"
+ {"\"\253\0038", 0x22af},
+#line 512 "./uninorm/composition-table.gperf"
+ {"\000t\003#", 0x1e6d},
+#line 253 "./uninorm/composition-table.gperf"
+ {"\000O\003\021", 0x020e},
+#line 366 "./uninorm/composition-table.gperf"
+ {"\011(\011<", 0x0929},
+#line 133 "./uninorm/composition-table.gperf"
+ {"\000L\003\001", 0x0139},
+#line 281 "./uninorm/composition-table.gperf"
+ {"\000Y\003\004", 0x0232},
+#line 794 "./uninorm/composition-table.gperf"
+ {"\037g\003E", 0x1fa7},
+#line 476 "./uninorm/composition-table.gperf"
+ {"\000n\0031", 0x1e49},
+#line 272 "./uninorm/composition-table.gperf"
+ {"\000e\003'", 0x0229},
+#line 918 "./uninorm/composition-table.gperf"
+ {"0r0\231", 0x3073},
+#line 112 "./uninorm/composition-table.gperf"
+ {"\000G\003\006", 0x011e},
+#line 914 "./uninorm/composition-table.gperf"
+ {"0f0\231", 0x3067},
+#line 536 "./uninorm/composition-table.gperf"
+ {"\000w\003\010", 0x1e85},
+#line 430 "./uninorm/composition-table.gperf"
+ {"\000e\0030", 0x1e1b},
+#line 951 "./uninorm/composition-table.gperf"
+ {"0\3330\231", 0x30dc},
+#line 418 "./uninorm/composition-table.gperf"
+ {"\000d\0031", 0x1e0f},
+#line 494 "./uninorm/composition-table.gperf"
+ {"\000r\003#", 0x1e5b},
+#line 889 "./uninorm/composition-table.gperf"
+ {"\"\242\0038", 0x22ac},
+#line 275 "./uninorm/composition-table.gperf"
+ {"\000\325\003\004", 0x022c},
+#line 486 "./uninorm/composition-table.gperf"
+ {"\001M\003\001", 0x1e53},
+#line 484 "./uninorm/composition-table.gperf"
+ {"\001M\003\000", 0x1e51},
+#line 359 "./uninorm/composition-table.gperf"
+ {"\006'\006T", 0x0623},
+#line 220 "./uninorm/composition-table.gperf"
+ {"\000K\003\014", 0x01e8},
+#line 330 "./uninorm/composition-table.gperf"
+ {"\004\025\003\006", 0x04d6},
+#line 261 "./uninorm/composition-table.gperf"
+ {"\000U\003\021", 0x0216},
+#line 465 "./uninorm/composition-table.gperf"
+ {"\000M\003\001", 0x1e3e},
+#line 46 "./uninorm/composition-table.gperf"
+ {"\000N\003\003", 0x00d1},
+#line 474 "./uninorm/composition-table.gperf"
+ {"\000n\003#", 0x1e47},
+#line 913 "./uninorm/composition-table.gperf"
+ {"0d0\231", 0x3065},
+#line 467 "./uninorm/composition-table.gperf"
+ {"\000M\003\007", 0x1e40},
+#line 521 "./uninorm/composition-table.gperf"
+ {"\000U\003-", 0x1e76},
+#line 268 "./uninorm/composition-table.gperf"
+ {"\000h\003\014", 0x021f},
+#line 355 "./uninorm/composition-table.gperf"
+ {"\004G\003\010", 0x04f5},
+#line 509 "./uninorm/composition-table.gperf"
+ {"\000T\003\007", 0x1e6a},
+#line 212 "./uninorm/composition-table.gperf"
+ {"\000\304\003\004", 0x01de},
+#line 416 "./uninorm/composition-table.gperf"
+ {"\000d\003#", 0x1e0d},
+#line 878 "./uninorm/composition-table.gperf"
+ {"\"e\0038", 0x2271},
+#line 542 "./uninorm/composition-table.gperf"
+ {"\000x\003\007", 0x1e8b},
+#line 255 "./uninorm/composition-table.gperf"
+ {"\000R\003\017", 0x0210},
+#line 283 "./uninorm/composition-table.gperf"
+ {"\000\250\003\001", 0x0385},
+#line 848 "./uninorm/composition-table.gperf"
+ {"\000\250\003\000", 0x1fed},
+#line 814 "./uninorm/composition-table.gperf"
+ {"\000\250\003B", 0x1fc1},
+#line 265 "./uninorm/composition-table.gperf"
+ {"\000T\003&", 0x021a},
+#line 175 "./uninorm/composition-table.gperf"
+ {"\000U\003\012", 0x016e},
+#line 664 "./uninorm/composition-table.gperf"
+ {"\003\265\003\023", 0x1f10},
+#line 301 "./uninorm/composition-table.gperf"
+ {"\003\277\003\001", 0x03cc},
+#line 752 "./uninorm/composition-table.gperf"
+ {"\003\277\003\000", 0x1f78},
+#line 896 "./uninorm/composition-table.gperf"
+ {"\"\222\0038", 0x22e3},
+#line 520 "./uninorm/composition-table.gperf"
+ {"\000u\0030", 0x1e75},
+#line 927 "./uninorm/composition-table.gperf"
+ {"0\2350\231", 0x309e},
+#line 113 "./uninorm/composition-table.gperf"
+ {"\000g\003\006", 0x011f},
+#line 297 "./uninorm/composition-table.gperf"
+ {"\003\271\003\001", 0x03af},
+#line 751 "./uninorm/composition-table.gperf"
+ {"\003\271\003\000", 0x1f76},
+#line 829 "./uninorm/composition-table.gperf"
+ {"\003\271\003B", 0x1fd6},
+#line 439 "./uninorm/composition-table.gperf"
+ {"\000H\003#", 0x1e24},
+#line 824 "./uninorm/composition-table.gperf"
+ {"\037\277\003\001", 0x1fce},
+#line 823 "./uninorm/composition-table.gperf"
+ {"\037\277\003\000", 0x1fcd},
+#line 825 "./uninorm/composition-table.gperf"
+ {"\037\277\003B", 0x1fcf},
+#line 908 "./uninorm/composition-table.gperf"
+ {"0Y0\231", 0x305a},
+#line 455 "./uninorm/composition-table.gperf"
+ {"\000K\0031", 0x1e34},
+#line 556 "./uninorm/composition-table.gperf"
+ {"\000y\003\012", 0x1e99},
+#line 888 "./uninorm/composition-table.gperf"
+ {"\"\207\0038", 0x2289},
+#line 284 "./uninorm/composition-table.gperf"
+ {"\003\221\003\001", 0x0386},
+#line 812 "./uninorm/composition-table.gperf"
+ {"\003\221\003\000", 0x1fba},
+#line 516 "./uninorm/composition-table.gperf"
+ {"\000t\003-", 0x1e71},
+#line 642 "./uninorm/composition-table.gperf"
+ {"\000Y\003#", 0x1ef4},
+#line 544 "./uninorm/composition-table.gperf"
+ {"\000x\003\010", 0x1e8d},
+#line 887 "./uninorm/composition-table.gperf"
+ {"\"\206\0038", 0x2288},
+#line 553 "./uninorm/composition-table.gperf"
+ {"\000h\0031", 0x1e96},
+#line 409 "./uninorm/composition-table.gperf"
+ {"\000B\0031", 0x1e06},
+#line 155 "./uninorm/composition-table.gperf"
+ {"\000R\003\014", 0x0158},
+#line 947 "./uninorm/composition-table.gperf"
+ {"0\3250\231", 0x30d6},
+#line 901 "./uninorm/composition-table.gperf"
+ {"0K0\231", 0x304c},
+#line 258 "./uninorm/composition-table.gperf"
+ {"\000r\003\021", 0x0213},
+#line 813 "./uninorm/composition-table.gperf"
+ {"\003\221\003E", 0x1fbc},
+#line 384 "./uninorm/composition-table.gperf"
+ {"\015F\015>", 0x0d4a},
+#line 767 "./uninorm/composition-table.gperf"
+ {"\037\014\003E", 0x1f8c},
+#line 271 "./uninorm/composition-table.gperf"
+ {"\000E\003'", 0x0228},
+#line 774 "./uninorm/composition-table.gperf"
+ {"\037#\003E", 0x1f93},
+#line 453 "./uninorm/composition-table.gperf"
+ {"\000K\003#", 0x1e32},
+#line 435 "./uninorm/composition-table.gperf"
+ {"\000G\003\004", 0x1e20},
+#line 915 "./uninorm/composition-table.gperf"
+ {"0h0\231", 0x3069},
+#line 429 "./uninorm/composition-table.gperf"
+ {"\000E\0030", 0x1e1a},
+#line 218 "./uninorm/composition-table.gperf"
+ {"\000G\003\014", 0x01e6},
+#line 299 "./uninorm/composition-table.gperf"
+ {"\003\271\003\010", 0x03ca},
+#line 617 "./uninorm/composition-table.gperf"
+ {"\001\241\003\001", 0x1edb},
+#line 619 "./uninorm/composition-table.gperf"
+ {"\001\241\003\000", 0x1edd},
+#line 940 "./uninorm/composition-table.gperf"
+ {"0\3040\231", 0x30c5},
+#line 440 "./uninorm/composition-table.gperf"
+ {"\000h\003#", 0x1e25},
+#line 407 "./uninorm/composition-table.gperf"
+ {"\000B\003#", 0x1e04},
+#line 478 "./uninorm/composition-table.gperf"
+ {"\000n\003-", 0x1e4b},
+#line 886 "./uninorm/composition-table.gperf"
+ {"\"\203\0038", 0x2285},
+#line 925 "./uninorm/composition-table.gperf"
+ {"0{0\232", 0x307d},
+#line 302 "./uninorm/composition-table.gperf"
+ {"\003\305\003\001", 0x03cd},
+#line 753 "./uninorm/composition-table.gperf"
+ {"\003\305\003\000", 0x1f7a},
+#line 842 "./uninorm/composition-table.gperf"
+ {"\003\305\003B", 0x1fe6},
+#line 893 "./uninorm/composition-table.gperf"
+ {"\"|\0038", 0x22e0},
+#line 233 "./uninorm/composition-table.gperf"
+ {"\000\305\003\001", 0x01fa},
+#line 422 "./uninorm/composition-table.gperf"
+ {"\000d\003-", 0x1e13},
+#line 885 "./uninorm/composition-table.gperf"
+ {"\"\202\0038", 0x2284},
+#line 294 "./uninorm/composition-table.gperf"
+ {"\003\261\003\001", 0x03ac},
+#line 748 "./uninorm/composition-table.gperf"
+ {"\003\261\003\000", 0x1f70},
+#line 808 "./uninorm/composition-table.gperf"
+ {"\003\261\003B", 0x1fb6},
+#line 143 "./uninorm/composition-table.gperf"
+ {"\000N\003\014", 0x0147},
+#line 708 "./uninorm/composition-table.gperf"
+ {"\003\277\003\023", 0x1f40},
+#line 870 "./uninorm/composition-table.gperf"
+ {"\"E\0038", 0x2247},
+#line 894 "./uninorm/composition-table.gperf"
+ {"\"}\0038", 0x22e1},
+#line 497 "./uninorm/composition-table.gperf"
+ {"\000R\0031", 0x1e5e},
+#line 413 "./uninorm/composition-table.gperf"
+ {"\000D\003\007", 0x1e0a},
+#line 347 "./uninorm/composition-table.gperf"
+ {"\004M\003\010", 0x04ed},
+#line 692 "./uninorm/composition-table.gperf"
+ {"\003\271\003\023", 0x1f30},
+#line 353 "./uninorm/composition-table.gperf"
+ {"\004C\003\013", 0x04f3},
+#line 806 "./uninorm/composition-table.gperf"
+ {"\003\261\003E", 0x1fb3},
+#line 826 "./uninorm/composition-table.gperf"
+ {"\003\271\003\006", 0x1fd0},
+#line 945 "./uninorm/composition-table.gperf"
+ {"0\3220\231", 0x30d3},
+#line 134 "./uninorm/composition-table.gperf"
+ {"\000l\003\001", 0x013a},
+#line 911 "./uninorm/composition-table.gperf"
+ {"0_0\231", 0x3060},
+#line 519 "./uninorm/composition-table.gperf"
+ {"\000U\0030", 0x1e74},
+#line 907 "./uninorm/composition-table.gperf"
+ {"0W0\231", 0x3058},
+#line 910 "./uninorm/composition-table.gperf"
+ {"0]0\231", 0x305e},
+#line 436 "./uninorm/composition-table.gperf"
+ {"\000g\003\004", 0x1e21},
+#line 656 "./uninorm/composition-table.gperf"
+ {"\003\221\003\023", 0x1f08},
+#line 310 "./uninorm/composition-table.gperf"
+ {"\004\032\003\001", 0x040c},
+#line 219 "./uninorm/composition-table.gperf"
+ {"\000g\003\014", 0x01e7},
+#line 810 "./uninorm/composition-table.gperf"
+ {"\003\221\003\006", 0x1fb8},
+#line 539 "./uninorm/composition-table.gperf"
+ {"\000W\003#", 0x1e88},
+#line 300 "./uninorm/composition-table.gperf"
+ {"\003\305\003\010", 0x03cb},
+#line 493 "./uninorm/composition-table.gperf"
+ {"\000R\003#", 0x1e5a},
+#line 237 "./uninorm/composition-table.gperf"
+ {"\000\330\003\001", 0x01fe},
+#line 296 "./uninorm/composition-table.gperf"
+ {"\003\267\003\001", 0x03ae},
+#line 750 "./uninorm/composition-table.gperf"
+ {"\003\267\003\000", 0x1f74},
+#line 818 "./uninorm/composition-table.gperf"
+ {"\003\267\003B", 0x1fc6},
+#line 158 "./uninorm/composition-table.gperf"
+ {"\000s\003\001", 0x015b},
+#line 799 "./uninorm/composition-table.gperf"
+ {"\037l\003E", 0x1fac},
+#line 157 "./uninorm/composition-table.gperf"
+ {"\000S\003\001", 0x015a},
+#line 160 "./uninorm/composition-table.gperf"
+ {"\000s\003\002", 0x015d},
+#line 500 "./uninorm/composition-table.gperf"
+ {"\000s\003\007", 0x1e61},
+#line 159 "./uninorm/composition-table.gperf"
+ {"\000S\003\002", 0x015c},
+#line 499 "./uninorm/composition-table.gperf"
+ {"\000S\003\007", 0x1e60},
+#line 137 "./uninorm/composition-table.gperf"
+ {"\000L\003\014", 0x013d},
+#line 475 "./uninorm/composition-table.gperf"
+ {"\000N\0031", 0x1e48},
+#line 816 "./uninorm/composition-table.gperf"
+ {"\003\267\003E", 0x1fc3},
+#line 597 "./uninorm/composition-table.gperf"
+ {"\036\271\003\002", 0x1ec7},
+#line 623 "./uninorm/composition-table.gperf"
+ {"\001\241\003\003", 0x1ee1},
+#line 350 "./uninorm/composition-table.gperf"
+ {"\004#\003\010", 0x04f0},
+#line 264 "./uninorm/composition-table.gperf"
+ {"\000s\003&", 0x0219},
+#line 166 "./uninorm/composition-table.gperf"
+ {"\000t\003'", 0x0163},
+#line 263 "./uninorm/composition-table.gperf"
+ {"\000S\003&", 0x0218},
+#line 452 "./uninorm/composition-table.gperf"
+ {"\000k\003\001", 0x1e31},
+#line 291 "./uninorm/composition-table.gperf"
+ {"\003\312\003\001", 0x0390},
+#line 828 "./uninorm/composition-table.gperf"
+ {"\003\312\003\000", 0x1fd2},
+#line 830 "./uninorm/composition-table.gperf"
+ {"\003\312\003B", 0x1fd7},
+#line 720 "./uninorm/composition-table.gperf"
+ {"\003\305\003\023", 0x1f50},
+#line 588 "./uninorm/composition-table.gperf"
+ {"\000\312\003\001", 0x1ebe},
+#line 590 "./uninorm/composition-table.gperf"
+ {"\000\312\003\000", 0x1ec0},
+#line 837 "./uninorm/composition-table.gperf"
+ {"\003\305\003\006", 0x1fe0},
+#line 616 "./uninorm/composition-table.gperf"
+ {"\001\240\003\001", 0x1eda},
+#line 618 "./uninorm/composition-table.gperf"
+ {"\001\240\003\000", 0x1edc},
+#line 840 "./uninorm/composition-table.gperf"
+ {"\003\301\003\023", 0x1fe4},
+#line 648 "./uninorm/composition-table.gperf"
+ {"\003\261\003\023", 0x1f00},
+#line 473 "./uninorm/composition-table.gperf"
+ {"\000N\003#", 0x1e46},
+#line 154 "./uninorm/composition-table.gperf"
+ {"\000r\003'", 0x0157},
+#line 803 "./uninorm/composition-table.gperf"
+ {"\003\261\003\006", 0x1fb0},
+#line 503 "./uninorm/composition-table.gperf"
+ {"\001Z\003\007", 0x1e64},
+#line 167 "./uninorm/composition-table.gperf"
+ {"\000T\003\014", 0x0164},
+#line 186 "./uninorm/composition-table.gperf"
+ {"\000Z\003\001", 0x0179},
+#line 798 "./uninorm/composition-table.gperf"
+ {"\037k\003E", 0x1fab},
+#line 527 "./uninorm/composition-table.gperf"
+ {"\000V\003\003", 0x1e7c},
+#line 547 "./uninorm/composition-table.gperf"
+ {"\000Z\003\002", 0x1e90},
+#line 188 "./uninorm/composition-table.gperf"
+ {"\000Z\003\007", 0x017b},
+#line 944 "./uninorm/composition-table.gperf"
+ {"0\3170\232", 0x30d1},
+#line 540 "./uninorm/composition-table.gperf"
+ {"\000w\003#", 0x1e89},
+#line 142 "./uninorm/composition-table.gperf"
+ {"\000n\003'", 0x0146},
+#line 312 "./uninorm/composition-table.gperf"
+ {"\004#\003\006", 0x040e},
+#line 933 "./uninorm/composition-table.gperf"
+ {"0\2650\231", 0x30b6},
+#line 526 "./uninorm/composition-table.gperf"
+ {"\001k\003\010", 0x1e7b},
+#line 461 "./uninorm/composition-table.gperf"
+ {"\000L\0031", 0x1e3a},
+#line 868 "./uninorm/composition-table.gperf"
+ {"\"<\0038", 0x2241},
+#line 571 "./uninorm/composition-table.gperf"
+ {"\036\241\003\002", 0x1ead},
+#line 786 "./uninorm/composition-table.gperf"
+ {"\037/\003E", 0x1f9f},
+#line 420 "./uninorm/composition-table.gperf"
+ {"\000d\003'", 0x1e11},
+#line 336 "./uninorm/composition-table.gperf"
+ {"\004\027\003\010", 0x04de},
+#line 150 "./uninorm/composition-table.gperf"
+ {"\000o\003\013", 0x0151},
+#line 827 "./uninorm/composition-table.gperf"
+ {"\003\271\003\004", 0x1fd1},
+#line 257 "./uninorm/composition-table.gperf"
+ {"\000R\003\021", 0x0212},
+#line 704 "./uninorm/composition-table.gperf"
+ {"\0378\003\001", 0x1f3c},
+#line 702 "./uninorm/composition-table.gperf"
+ {"\0378\003\000", 0x1f3a},
+#line 706 "./uninorm/composition-table.gperf"
+ {"\0378\003B", 0x1f3e},
+#line 676 "./uninorm/composition-table.gperf"
+ {"\003\267\003\023", 0x1f20},
+#line 879 "./uninorm/composition-table.gperf"
+ {"\"r\0038", 0x2274},
+#line 770 "./uninorm/composition-table.gperf"
+ {"\037\017\003E", 0x1f8f},
+#line 178 "./uninorm/composition-table.gperf"
+ {"\000u\003\013", 0x0171},
+#line 769 "./uninorm/composition-table.gperf"
+ {"\037\016\003E", 0x1f8e},
+#line 318 "./uninorm/composition-table.gperf"
+ {"\004V\003\010", 0x0457},
+#line 811 "./uninorm/composition-table.gperf"
+ {"\003\221\003\004", 0x1fb9},
+#line 776 "./uninorm/composition-table.gperf"
+ {"\037%\003E", 0x1f95},
+#line 457 "./uninorm/composition-table.gperf"
+ {"\000L\003#", 0x1e36},
+#line 290 "./uninorm/composition-table.gperf"
+ {"\003\251\003\001", 0x038f},
+#line 855 "./uninorm/composition-table.gperf"
+ {"\003\251\003\000", 0x1ffa},
+#line 443 "./uninorm/composition-table.gperf"
+ {"\000H\003'", 0x1e28},
+#line 187 "./uninorm/composition-table.gperf"
+ {"\000z\003\001", 0x017a},
+#line 513 "./uninorm/composition-table.gperf"
+ {"\000T\0031", 0x1e6e},
+#line 621 "./uninorm/composition-table.gperf"
+ {"\001\241\003\011", 0x1edf},
+#line 548 "./uninorm/composition-table.gperf"
+ {"\000z\003\002", 0x1e91},
+#line 189 "./uninorm/composition-table.gperf"
+ {"\000z\003\007", 0x017c},
+ {""},
+#line 865 "./uninorm/composition-table.gperf"
+ {"\"\013\0038", 0x220c},
+#line 917 "./uninorm/composition-table.gperf"
+ {"0o0\232", 0x3071},
+#line 877 "./uninorm/composition-table.gperf"
+ {"\"d\0038", 0x2270},
+#line 856 "./uninorm/composition-table.gperf"
+ {"\003\251\003E", 0x1ffc},
+#line 902 "./uninorm/composition-table.gperf"
+ {"0M0\231", 0x304e},
+#line 594 "./uninorm/composition-table.gperf"
+ {"\000\312\003\003", 0x1ec4},
+#line 332 "./uninorm/composition-table.gperf"
+ {"\004\330\003\010", 0x04da},
+#line 398 "./uninorm/composition-table.gperf"
+ {"\033:\0335", 0x1b3b},
+#line 622 "./uninorm/composition-table.gperf"
+ {"\001\240\003\003", 0x1ee0},
+ {""},
+#line 921 "./uninorm/composition-table.gperf"
+ {"0u0\232", 0x3077},
+#line 469 "./uninorm/composition-table.gperf"
+ {"\000M\003#", 0x1e42},
+#line 922 "./uninorm/composition-table.gperf"
+ {"0x0\231", 0x3079},
+#line 287 "./uninorm/composition-table.gperf"
+ {"\003\231\003\001", 0x038a},
+#line 833 "./uninorm/composition-table.gperf"
+ {"\003\231\003\000", 0x1fda},
+#line 511 "./uninorm/composition-table.gperf"
+ {"\000T\003#", 0x1e6c},
+#line 541 "./uninorm/composition-table.gperf"
+ {"\000X\003\007", 0x1e8a},
+#line 477 "./uninorm/composition-table.gperf"
+ {"\000N\003-", 0x1e4a},
+#line 131 "./uninorm/composition-table.gperf"
+ {"\000K\003'", 0x0136},
+#line 838 "./uninorm/composition-table.gperf"
+ {"\003\305\003\004", 0x1fe1},
+#line 91 "./uninorm/composition-table.gperf"
+ {"\000c\003\001", 0x0107},
+#line 871 "./uninorm/composition-table.gperf"
+ {"\"H\0038", 0x2249},
+#line 394 "./uninorm/composition-table.gperf"
+ {"\033\011\0335", 0x1b0a},
+#line 93 "./uninorm/composition-table.gperf"
+ {"\000c\003\002", 0x0109},
+#line 95 "./uninorm/composition-table.gperf"
+ {"\000c\003\007", 0x010b},
+#line 320 "./uninorm/composition-table.gperf"
+ {"\0048\003\000", 0x045d},
+#line 804 "./uninorm/composition-table.gperf"
+ {"\003\261\003\004", 0x1fb1},
+#line 444 "./uninorm/composition-table.gperf"
+ {"\000h\003'", 0x1e29},
+#line 938 "./uninorm/composition-table.gperf"
+ {"0\2770\231", 0x30c0},
+#line 630 "./uninorm/composition-table.gperf"
+ {"\001\257\003\001", 0x1ee8},
+#line 632 "./uninorm/composition-table.gperf"
+ {"\001\257\003\000", 0x1eea},
+#line 581 "./uninorm/composition-table.gperf"
+ {"\036\241\003\006", 0x1eb7},
+#line 149 "./uninorm/composition-table.gperf"
+ {"\000O\003\013", 0x0150},
+#line 98 "./uninorm/composition-table.gperf"
+ {"\000D\003\014", 0x010e},
+#line 935 "./uninorm/composition-table.gperf"
+ {"0\2710\231", 0x30ba},
+#line 289 "./uninorm/composition-table.gperf"
+ {"\003\245\003\001", 0x038e},
+#line 846 "./uninorm/composition-table.gperf"
+ {"\003\245\003\000", 0x1fea},
+#line 348 "./uninorm/composition-table.gperf"
+ {"\004#\003\004", 0x04ee},
+#line 790 "./uninorm/composition-table.gperf"
+ {"\037c\003E", 0x1fa3},
+#line 285 "./uninorm/composition-table.gperf"
+ {"\003\225\003\001", 0x0388},
+#line 820 "./uninorm/composition-table.gperf"
+ {"\003\225\003\000", 0x1fc8},
+#line 555 "./uninorm/composition-table.gperf"
+ {"\000w\003\012", 0x1e98},
+#line 235 "./uninorm/composition-table.gperf"
+ {"\000\306\003\001", 0x01fc},
+#line 570 "./uninorm/composition-table.gperf"
+ {"\036\240\003\002", 0x1eac},
+#line 138 "./uninorm/composition-table.gperf"
+ {"\000l\003\014", 0x013e},
+#line 543 "./uninorm/composition-table.gperf"
+ {"\000X\003\010", 0x1e8c},
+#line 292 "./uninorm/composition-table.gperf"
+ {"\003\231\003\010", 0x03aa},
+#line 303 "./uninorm/composition-table.gperf"
+ {"\003\311\003\001", 0x03ce},
+#line 754 "./uninorm/composition-table.gperf"
+ {"\003\311\003\000", 0x1f7c},
+#line 852 "./uninorm/composition-table.gperf"
+ {"\003\311\003B", 0x1ff6},
+#line 740 "./uninorm/composition-table.gperf"
+ {"\003\251\003\023", 0x1f68},
+#line 393 "./uninorm/composition-table.gperf"
+ {"\033\007\0335", 0x1b08},
+ {""},
+#line 463 "./uninorm/composition-table.gperf"
+ {"\000L\003-", 0x1e3c},
+#line 177 "./uninorm/composition-table.gperf"
+ {"\000U\003\013", 0x0170},
+ {""},
+#line 226 "./uninorm/composition-table.gperf"
+ {"\001\267\003\014", 0x01ee},
+#line 341 "./uninorm/composition-table.gperf"
+ {"\0048\003\010", 0x04e5},
+#line 466 "./uninorm/composition-table.gperf"
+ {"\000m\003\001", 0x1e3f},
+#line 850 "./uninorm/composition-table.gperf"
+ {"\003\311\003E", 0x1ff3},
+#line 819 "./uninorm/composition-table.gperf"
+ {"\037\306\003E", 0x1fc7},
+#line 164 "./uninorm/composition-table.gperf"
+ {"\000s\003\014", 0x0161},
+#line 468 "./uninorm/composition-table.gperf"
+ {"\000m\003\007", 0x1e41},
+#line 163 "./uninorm/composition-table.gperf"
+ {"\000S\003\014", 0x0160},
+#line 592 "./uninorm/composition-table.gperf"
+ {"\000\312\003\011", 0x1ec2},
+#line 504 "./uninorm/composition-table.gperf"
+ {"\001[\003\007", 0x1e65},
+#line 153 "./uninorm/composition-table.gperf"
+ {"\000R\003'", 0x0156},
+#line 620 "./uninorm/composition-table.gperf"
+ {"\001\240\003\011", 0x1ede},
+#line 293 "./uninorm/composition-table.gperf"
+ {"\003\245\003\010", 0x03ab},
+#line 358 "./uninorm/composition-table.gperf"
+ {"\006'\006S", 0x0622},
+#line 417 "./uninorm/composition-table.gperf"
+ {"\000D\0031", 0x1e0e},
+#line 625 "./uninorm/composition-table.gperf"
+ {"\001\241\003#", 0x1ee3},
+#line 700 "./uninorm/composition-table.gperf"
+ {"\003\231\003\023", 0x1f38},
+#line 207 "./uninorm/composition-table.gperf"
+ {"\000\374\003\001", 0x01d8},
+#line 211 "./uninorm/composition-table.gperf"
+ {"\000\374\003\000", 0x01dc},
+#line 831 "./uninorm/composition-table.gperf"
+ {"\003\231\003\006", 0x1fd8},
+#line 800 "./uninorm/composition-table.gperf"
+ {"\037m\003E", 0x1fad},
+#line 221 "./uninorm/composition-table.gperf"
+ {"\000k\003\014", 0x01e9},
+#line 515 "./uninorm/composition-table.gperf"
+ {"\000T\003-", 0x1e70},
+#line 116 "./uninorm/composition-table.gperf"
+ {"\000G\003'", 0x0122},
+#line 280 "./uninorm/composition-table.gperf"
+ {"\002/\003\004", 0x0231},
+#line 462 "./uninorm/composition-table.gperf"
+ {"\000l\0031", 0x1e3b},
+#line 939 "./uninorm/composition-table.gperf"
+ {"0\3010\231", 0x30c2},
+#line 931 "./uninorm/composition-table.gperf"
+ {"0\2610\231", 0x30b2},
+#line 674 "./uninorm/composition-table.gperf"
+ {"\037\030\003\001", 0x1f1c},
+#line 672 "./uninorm/composition-table.gperf"
+ {"\037\030\003\000", 0x1f1a},
+#line 314 "./uninorm/composition-table.gperf"
+ {"\0048\003\006", 0x0439},
+#line 636 "./uninorm/composition-table.gperf"
+ {"\001\257\003\003", 0x1eee},
+#line 286 "./uninorm/composition-table.gperf"
+ {"\003\227\003\001", 0x0389},
+#line 821 "./uninorm/composition-table.gperf"
+ {"\003\227\003\000", 0x1fca},
+#line 415 "./uninorm/composition-table.gperf"
+ {"\000D\003#", 0x1e0c},
+#line 360 "./uninorm/composition-table.gperf"
+ {"\006H\006T", 0x0624},
+#line 606 "./uninorm/composition-table.gperf"
+ {"\000\324\003\001", 0x1ed0},
+#line 608 "./uninorm/composition-table.gperf"
+ {"\000\324\003\000", 0x1ed2},
+#line 190 "./uninorm/composition-table.gperf"
+ {"\000Z\003\014", 0x017d},
+#line 529 "./uninorm/composition-table.gperf"
+ {"\000V\003#", 0x1e7e},
+ {""},
+#line 844 "./uninorm/composition-table.gperf"
+ {"\003\245\003\006", 0x1fe8},
+#line 670 "./uninorm/composition-table.gperf"
+ {"\003\225\003\023", 0x1f18},
+#line 141 "./uninorm/composition-table.gperf"
+ {"\000N\003'", 0x0145},
+#line 822 "./uninorm/composition-table.gperf"
+ {"\003\227\003E", 0x1fcc},
+#line 458 "./uninorm/composition-table.gperf"
+ {"\000l\003#", 0x1e37},
+#line 580 "./uninorm/composition-table.gperf"
+ {"\036\240\003\006", 0x1eb6},
+ {""},
+#line 518 "./uninorm/composition-table.gperf"
+ {"\000u\003$", 0x1e73},
+ {""},
+#line 732 "./uninorm/composition-table.gperf"
+ {"\003\311\003\023", 0x1f60},
+#line 949 "./uninorm/composition-table.gperf"
+ {"0\3300\231", 0x30d9},
+#line 508 "./uninorm/composition-table.gperf"
+ {"\036c\003\007", 0x1e69},
+#line 725 "./uninorm/composition-table.gperf"
+ {"\037Q\003\001", 0x1f55},
+#line 723 "./uninorm/composition-table.gperf"
+ {"\037Q\003\000", 0x1f53},
+#line 727 "./uninorm/composition-table.gperf"
+ {"\037Q\003B", 0x1f57},
+#line 934 "./uninorm/composition-table.gperf"
+ {"0\2670\231", 0x30b8},
+#line 905 "./uninorm/composition-table.gperf"
+ {"0S0\231", 0x3054},
+#line 456 "./uninorm/composition-table.gperf"
+ {"\000k\0031", 0x1e35},
+#line 363 "./uninorm/composition-table.gperf"
+ {"\006\325\006T", 0x06c0},
+#line 665 "./uninorm/composition-table.gperf"
+ {"\003\265\003\024", 0x1f11},
+#line 130 "./uninorm/composition-table.gperf"
+ {"\000j\003\002", 0x0135},
+#line 502 "./uninorm/composition-table.gperf"
+ {"\000s\003#", 0x1e63},
+#line 117 "./uninorm/composition-table.gperf"
+ {"\000g\003'", 0x0123},
+#line 501 "./uninorm/composition-table.gperf"
+ {"\000S\003#", 0x1e62},
+#line 392 "./uninorm/composition-table.gperf"
+ {"\033\005\0335", 0x1b06},
+#line 589 "./uninorm/composition-table.gperf"
+ {"\000\352\003\001", 0x1ebf},
+#line 591 "./uninorm/composition-table.gperf"
+ {"\000\352\003\000", 0x1ec1},
+#line 396 "./uninorm/composition-table.gperf"
+ {"\033\015\0335", 0x1b0e},
+#line 681 "./uninorm/composition-table.gperf"
+ {"\037!\003\001", 0x1f25},
+#line 679 "./uninorm/composition-table.gperf"
+ {"\037!\003\000", 0x1f23},
+#line 683 "./uninorm/composition-table.gperf"
+ {"\037!\003B", 0x1f27},
+#line 919 "./uninorm/composition-table.gperf"
+ {"0r0\232", 0x3074},
+#line 191 "./uninorm/composition-table.gperf"
+ {"\000z\003\014", 0x017e},
+#line 311 "./uninorm/composition-table.gperf"
+ {"\004\030\003\000", 0x040d},
+#line 551 "./uninorm/composition-table.gperf"
+ {"\000Z\0031", 0x1e94},
+#line 797 "./uninorm/composition-table.gperf"
+ {"\037j\003E", 0x1faa},
+#line 952 "./uninorm/composition-table.gperf"
+ {"0\3330\232", 0x30dd},
+#line 454 "./uninorm/composition-table.gperf"
+ {"\000k\003#", 0x1e33},
+#line 135 "./uninorm/composition-table.gperf"
+ {"\000L\003'", 0x013b},
+#line 334 "./uninorm/composition-table.gperf"
+ {"\004\026\003\010", 0x04dc},
+#line 772 "./uninorm/composition-table.gperf"
+ {"\037!\003E", 0x1f91},
+#line 882 "./uninorm/composition-table.gperf"
+ {"\"w\0038", 0x2279},
+#line 631 "./uninorm/composition-table.gperf"
+ {"\001\260\003\001", 0x1ee9},
+#line 633 "./uninorm/composition-table.gperf"
+ {"\001\260\003\000", 0x1eeb},
+#line 525 "./uninorm/composition-table.gperf"
+ {"\001j\003\010", 0x1e7a},
+#line 624 "./uninorm/composition-table.gperf"
+ {"\001\240\003#", 0x1ee2},
+#line 669 "./uninorm/composition-table.gperf"
+ {"\037\021\003\001", 0x1f15},
+#line 667 "./uninorm/composition-table.gperf"
+ {"\037\021\003\000", 0x1f13},
+#line 832 "./uninorm/composition-table.gperf"
+ {"\003\231\003\004", 0x1fd9},
+#line 634 "./uninorm/composition-table.gperf"
+ {"\001\257\003\011", 0x1eec},
+#line 684 "./uninorm/composition-table.gperf"
+ {"\003\227\003\023", 0x1f28},
+#line 900 "./uninorm/composition-table.gperf"
+ {"\"\265\0038", 0x22ed},
+#line 361 "./uninorm/composition-table.gperf"
+ {"\006'\006U", 0x0625},
+#line 612 "./uninorm/composition-table.gperf"
+ {"\000\324\003\003", 0x1ed6},
+#line 549 "./uninorm/composition-table.gperf"
+ {"\000Z\003#", 0x1e92},
+#line 386 "./uninorm/composition-table.gperf"
+ {"\015F\015W", 0x0d4c},
+#line 421 "./uninorm/composition-table.gperf"
+ {"\000D\003-", 0x1e12},
+#line 406 "./uninorm/composition-table.gperf"
+ {"\000b\003\007", 0x1e03},
+#line 97 "./uninorm/composition-table.gperf"
+ {"\000c\003\014", 0x010d},
+#line 339 "./uninorm/composition-table.gperf"
+ {"\0048\003\004", 0x04e3},
+ {""},
+#line 365 "./uninorm/composition-table.gperf"
+ {"\006\322\006T", 0x06d3},
+#line 488 "./uninorm/composition-table.gperf"
+ {"\000p\003\001", 0x1e55},
+#line 165 "./uninorm/composition-table.gperf"
+ {"\000T\003'", 0x0162},
+#line 505 "./uninorm/composition-table.gperf"
+ {"\001`\003\007", 0x1e66},
+#line 340 "./uninorm/composition-table.gperf"
+ {"\004\030\003\010", 0x04e4},
+#line 490 "./uninorm/composition-table.gperf"
+ {"\000p\003\007", 0x1e57},
+#line 464 "./uninorm/composition-table.gperf"
+ {"\000l\003-", 0x1e3d},
+#line 324 "./uninorm/composition-table.gperf"
+ {"\004\026\003\006", 0x04c1},
+#line 552 "./uninorm/composition-table.gperf"
+ {"\000z\0031", 0x1e95},
+#line 845 "./uninorm/composition-table.gperf"
+ {"\003\245\003\004", 0x1fe9},
+#line 789 "./uninorm/composition-table.gperf"
+ {"\037b\003E", 0x1fa2},
+#line 736 "./uninorm/composition-table.gperf"
+ {"\037`\003\001", 0x1f64},
+#line 734 "./uninorm/composition-table.gperf"
+ {"\037`\003\000", 0x1f62},
+#line 738 "./uninorm/composition-table.gperf"
+ {"\037`\003B", 0x1f66},
+#line 859 "./uninorm/composition-table.gperf"
+ {"!\224\0038", 0x21ae},
+#line 517 "./uninorm/composition-table.gperf"
+ {"\000U\003$", 0x1e72},
+#line 216 "./uninorm/composition-table.gperf"
+ {"\000\306\003\004", 0x01e2},
+#line 495 "./uninorm/composition-table.gperf"
+ {"\036Z\003\004", 0x1e5c},
+#line 709 "./uninorm/composition-table.gperf"
+ {"\003\277\003\024", 0x1f41},
+#line 805 "./uninorm/composition-table.gperf"
+ {"\037p\003E", 0x1fb2},
+#line 607 "./uninorm/composition-table.gperf"
+ {"\000\364\003\001", 0x1ed1},
+#line 609 "./uninorm/composition-table.gperf"
+ {"\000\364\003\000", 0x1ed3},
+#line 595 "./uninorm/composition-table.gperf"
+ {"\000\352\003\003", 0x1ec5},
+#line 787 "./uninorm/composition-table.gperf"
+ {"\037`\003E", 0x1fa0},
+#line 693 "./uninorm/composition-table.gperf"
+ {"\003\271\003\024", 0x1f31},
+#line 860 "./uninorm/composition-table.gperf"
+ {"!\320\0038", 0x21cd},
+#line 874 "./uninorm/composition-table.gperf"
+ {"\"M\0038", 0x226d},
+#line 857 "./uninorm/composition-table.gperf"
+ {"!\220\0038", 0x219a},
+#line 550 "./uninorm/composition-table.gperf"
+ {"\000z\003#", 0x1e93},
+#line 400 "./uninorm/composition-table.gperf"
+ {"\033>\0335", 0x1b40},
+#line 487 "./uninorm/composition-table.gperf"
+ {"\000P\003\001", 0x1e54},
+ {""},
+#line 948 "./uninorm/composition-table.gperf"
+ {"0\3250\232", 0x30d7},
+#line 313 "./uninorm/composition-table.gperf"
+ {"\004\030\003\006", 0x0419},
+#line 489 "./uninorm/composition-table.gperf"
+ {"\000P\003\007", 0x1e56},
+#line 657 "./uninorm/composition-table.gperf"
+ {"\003\221\003\024", 0x1f09},
+#line 724 "./uninorm/composition-table.gperf"
+ {"\037P\003\001", 0x1f54},
+#line 722 "./uninorm/composition-table.gperf"
+ {"\037P\003\000", 0x1f52},
+#line 726 "./uninorm/composition-table.gperf"
+ {"\037P\003B", 0x1f56},
+#line 637 "./uninorm/composition-table.gperf"
+ {"\001\260\003\003", 0x1eef},
+#line 890 "./uninorm/composition-table.gperf"
+ {"\"\250\0038", 0x22ad},
+#line 362 "./uninorm/composition-table.gperf"
+ {"\006J\006T", 0x0626},
+#line 563 "./uninorm/composition-table.gperf"
+ {"\000\342\003\001", 0x1ea5},
+#line 565 "./uninorm/composition-table.gperf"
+ {"\000\342\003\000", 0x1ea7},
+#line 777 "./uninorm/composition-table.gperf"
+ {"\037&\003E", 0x1f96},
+#line 193 "./uninorm/composition-table.gperf"
+ {"\000o\003\033", 0x01a1},
+ {""},
+#line 205 "./uninorm/composition-table.gperf"
+ {"\000\374\003\004", 0x01d6},
+#line 562 "./uninorm/composition-table.gperf"
+ {"\000\302\003\001", 0x1ea4},
+#line 564 "./uninorm/composition-table.gperf"
+ {"\000\302\003\000", 0x1ea6},
+#line 209 "./uninorm/composition-table.gperf"
+ {"\000\374\003\014", 0x01da},
+#line 610 "./uninorm/composition-table.gperf"
+ {"\000\324\003\011", 0x1ed4},
+#line 404 "./uninorm/composition-table.gperf"
+ {"\000a\003%", 0x1e01},
+#line 369 "./uninorm/composition-table.gperf"
+ {"\011\307\011\276", 0x09cb},
+#line 195 "./uninorm/composition-table.gperf"
+ {"\000u\003\033", 0x01b0},
+#line 315 "./uninorm/composition-table.gperf"
+ {"\0045\003\000", 0x0450},
+#line 680 "./uninorm/composition-table.gperf"
+ {"\037 \003\001", 0x1f24},
+#line 678 "./uninorm/composition-table.gperf"
+ {"\037 \003\000", 0x1f22},
+#line 682 "./uninorm/composition-table.gperf"
+ {"\037 \003B", 0x1f26},
+#line 378 "./uninorm/composition-table.gperf"
+ {"\014F\014V", 0x0c48},
+#line 847 "./uninorm/composition-table.gperf"
+ {"\003\241\003\024", 0x1fec},
+#line 866 "./uninorm/composition-table.gperf"
+ {"\"#\0038", 0x2224},
+#line 930 "./uninorm/composition-table.gperf"
+ {"0\2570\231", 0x30b0},
+#line 638 "./uninorm/composition-table.gperf"
+ {"\001\257\003#", 0x1ef0},
+ {""}, {""},
+#line 721 "./uninorm/composition-table.gperf"
+ {"\003\305\003\024", 0x1f51},
+#line 895 "./uninorm/composition-table.gperf"
+ {"\"\221\0038", 0x22e2},
+#line 771 "./uninorm/composition-table.gperf"
+ {"\037 \003E", 0x1f90},
+#line 941 "./uninorm/composition-table.gperf"
+ {"0\3060\231", 0x30c7},
+#line 399 "./uninorm/composition-table.gperf"
+ {"\033<\0335", 0x1b3d},
+ {""},
+#line 841 "./uninorm/composition-table.gperf"
+ {"\003\301\003\024", 0x1fe5},
+#line 649 "./uninorm/composition-table.gperf"
+ {"\003\261\003\024", 0x1f01},
+#line 385 "./uninorm/composition-table.gperf"
+ {"\015G\015>", 0x0d4b},
+#line 946 "./uninorm/composition-table.gperf"
+ {"0\3220\232", 0x30d4},
+ {""},
+#line 419 "./uninorm/composition-table.gperf"
+ {"\000D\003'", 0x1e10},
+#line 613 "./uninorm/composition-table.gperf"
+ {"\000\364\003\003", 0x1ed7},
+ {""},
+#line 507 "./uninorm/composition-table.gperf"
+ {"\036b\003\007", 0x1e68},
+#line 593 "./uninorm/composition-table.gperf"
+ {"\000\352\003\011", 0x1ec3},
+ {""}, {""}, {""}, {""},
+#line 445 "./uninorm/composition-table.gperf"
+ {"\000H\003.", 0x1e2a},
+#line 316 "./uninorm/composition-table.gperf"
+ {"\0045\003\010", 0x0451},
+#line 136 "./uninorm/composition-table.gperf"
+ {"\000l\003'", 0x013c},
+ {""},
+#line 224 "./uninorm/composition-table.gperf"
+ {"\001\352\003\004", 0x01ec},
+#line 228 "./uninorm/composition-table.gperf"
+ {"\000j\003\014", 0x01f0},
+#line 470 "./uninorm/composition-table.gperf"
+ {"\000m\003#", 0x1e43},
+ {""},
+#line 909 "./uninorm/composition-table.gperf"
+ {"0[0\231", 0x305c},
+ {""}, {""}, {""},
+#line 635 "./uninorm/composition-table.gperf"
+ {"\001\260\003\011", 0x1eed},
+#line 395 "./uninorm/composition-table.gperf"
+ {"\033\013\0335", 0x1b0c},
+#line 569 "./uninorm/composition-table.gperf"
+ {"\000\342\003\003", 0x1eab},
+#line 192 "./uninorm/composition-table.gperf"
+ {"\000O\003\033", 0x01a0},
+#line 677 "./uninorm/composition-table.gperf"
+ {"\003\267\003\024", 0x1f21},
+#line 338 "./uninorm/composition-table.gperf"
+ {"\004\030\003\004", 0x04e2},
+ {""},
+#line 162 "./uninorm/composition-table.gperf"
+ {"\000s\003'", 0x015f},
+#line 568 "./uninorm/composition-table.gperf"
+ {"\000\302\003\003", 0x1eaa},
+#line 161 "./uninorm/composition-table.gperf"
+ {"\000S\003'", 0x015e},
+ {""}, {""}, {""}, {""}, {""},
+#line 858 "./uninorm/composition-table.gperf"
+ {"!\222\0038", 0x219b},
+ {""},
+#line 403 "./uninorm/composition-table.gperf"
+ {"\000A\003%", 0x1e00},
+#line 331 "./uninorm/composition-table.gperf"
+ {"\0045\003\006", 0x04d7},
+ {""}, {""}, {""},
+#line 446 "./uninorm/composition-table.gperf"
+ {"\000h\003.", 0x1e2b},
+#line 132 "./uninorm/composition-table.gperf"
+ {"\000k\003'", 0x0137},
+ {""},
+#line 194 "./uninorm/composition-table.gperf"
+ {"\000U\003\033", 0x01af},
+ {""},
+#line 496 "./uninorm/composition-table.gperf"
+ {"\036[\003\004", 0x1e5d},
+ {""}, {""}, {""}, {""},
+#line 904 "./uninorm/composition-table.gperf"
+ {"0Q0\231", 0x3052},
+ {""},
+#line 370 "./uninorm/composition-table.gperf"
+ {"\011\307\011\327", 0x09cc},
+#line 880 "./uninorm/composition-table.gperf"
+ {"\"s\0038", 0x2275},
+#line 374 "./uninorm/composition-table.gperf"
+ {"\013\222\013\327", 0x0b94},
+ {""}, {""},
+#line 611 "./uninorm/composition-table.gperf"
+ {"\000\364\003\011", 0x1ed5},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 214 "./uninorm/composition-table.gperf"
+ {"\002&\003\004", 0x01e0},
+ {""}, {""}, {""},
+#line 402 "./uninorm/composition-table.gperf"
+ {"\033B\0335", 0x1b43},
+ {""}, {""}, {""},
+#line 567 "./uninorm/composition-table.gperf"
+ {"\000\342\003\011", 0x1ea9},
+ {""}, {""}, {""}, {""},
+#line 410 "./uninorm/composition-table.gperf"
+ {"\000b\0031", 0x1e07},
+#line 566 "./uninorm/composition-table.gperf"
+ {"\000\302\003\011", 0x1ea8},
+ {""}, {""}, {""}, {""},
+#line 741 "./uninorm/composition-table.gperf"
+ {"\003\251\003\024", 0x1f69},
+ {""}, {""},
+#line 639 "./uninorm/composition-table.gperf"
+ {"\001\260\003#", 0x1ef1},
+#line 364 "./uninorm/composition-table.gperf"
+ {"\006\301\006T", 0x06c2},
+ {""}, {""},
+#line 379 "./uninorm/composition-table.gperf"
+ {"\014\277\014\325", 0x0cc0},
+#line 867 "./uninorm/composition-table.gperf"
+ {"\"%\0038", 0x2226},
+#line 923 "./uninorm/composition-table.gperf"
+ {"0x0\232", 0x307a},
+ {""}, {""}, {""}, {""},
+#line 408 "./uninorm/composition-table.gperf"
+ {"\000b\003#", 0x1e05},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 701 "./uninorm/composition-table.gperf"
+ {"\003\231\003\024", 0x1f39},
+#line 401 "./uninorm/composition-table.gperf"
+ {"\033?\0335", 0x1b41},
+ {""}, {""}, {""}, {""}, {""},
+#line 63 "./uninorm/composition-table.gperf"
+ {"\000c\003'", 0x00e7},
+ {""},
+#line 883 "./uninorm/composition-table.gperf"
+ {"\"z\0038", 0x2280},
+#line 891 "./uninorm/composition-table.gperf"
+ {"\"\251\0038", 0x22ae},
+ {""}, {""},
+#line 371 "./uninorm/composition-table.gperf"
+ {"\013G\013V", 0x0b48},
+ {""},
+#line 372 "./uninorm/composition-table.gperf"
+ {"\013G\013>", 0x0b4b},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 728 "./uninorm/composition-table.gperf"
+ {"\003\245\003\024", 0x1f59},
+ {""}, {""}, {""},
+#line 671 "./uninorm/composition-table.gperf"
+ {"\003\225\003\024", 0x1f19},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 733 "./uninorm/composition-table.gperf"
+ {"\003\311\003\024", 0x1f61},
+ {""}, {""}, {""}, {""}, {""},
+#line 352 "./uninorm/composition-table.gperf"
+ {"\004#\003\013", 0x04f2},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 685 "./uninorm/composition-table.gperf"
+ {"\003\227\003\024", 0x1f29},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 950 "./uninorm/composition-table.gperf"
+ {"0\3300\232", 0x30da},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 383 "./uninorm/composition-table.gperf"
+ {"\014\312\014\325", 0x0ccb},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 376 "./uninorm/composition-table.gperf"
+ {"\013\307\013\276", 0x0bcb},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 862 "./uninorm/composition-table.gperf"
+ {"!\322\0038", 0x21cf},
+ {""},
+#line 381 "./uninorm/composition-table.gperf"
+ {"\014\306\014\326", 0x0cc8},
+#line 382 "./uninorm/composition-table.gperf"
+ {"\014\306\014\302", 0x0cca},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 380 "./uninorm/composition-table.gperf"
+ {"\014\306\014\325", 0x0cc7},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 373 "./uninorm/composition-table.gperf"
+ {"\013G\013W", 0x0b4c},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 391 "./uninorm/composition-table.gperf"
+ {"\020%\020.", 0x1026},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 397 "./uninorm/composition-table.gperf"
+ {"\033\021\0335", 0x1b12},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 375 "./uninorm/composition-table.gperf"
+ {"\013\306\013\276", 0x0bca},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 377 "./uninorm/composition-table.gperf"
+ {"\013\306\013\327", 0x0bcc},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 861 "./uninorm/composition-table.gperf"
+ {"!\324\0038", 0x21ce}
+ };
+
+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+ {
+ register int key = gl_uninorm_compose_hash (str, len);
+
+ if (key <= MAX_HASH_VALUE && key >= 0)
+ if (len == lengthtable[key])
+ {
+ register const char *s = wordlist[key].codes;
+
+ if (*str == *s && !memcmp (str + 1, s + 1, len - 1))
+ return &wordlist[key];
+ }
+ }
+ return 0;
+}
diff --git a/lib/uninorm/composition.c b/lib/uninorm/composition.c
new file mode 100644
index 00000000..4caf9a06
--- /dev/null
+++ b/lib/uninorm/composition.c
@@ -0,0 +1,85 @@
+/* Canonical composition of Unicode characters.
+ Copyright (C) 2002, 2006, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include <string.h>
+
+struct composition_rule { char codes[4]; unsigned short combined; };
+
+#include "composition-table.h"
+
+ucs4_t
+uc_composition (ucs4_t uc1, ucs4_t uc2)
+{
+ if (uc1 < 0x10000 && uc2 < 0x10000)
+ {
+ if (uc2 >= 0x1161 && uc2 < 0x1161 + 21
+ && uc1 >= 0x1100 && uc1 < 0x1100 + 19)
+ {
+ /* Hangul: Combine single letter L and single letter V to form
+ two-letter syllable LV. */
+ return 0xAC00 + ((uc1 - 0x1100) * 21 + (uc2 - 0x1161)) * 28;
+ }
+ else if (uc2 > 0x11A7 && uc2 < 0x11A7 + 28
+ && uc1 >= 0xAC00 && uc1 < 0xD7A4 && ((uc1 - 0xAC00) % 28) == 0)
+ {
+ /* Hangul: Combine two-letter syllable LV with single-letter T
+ to form three-letter syllable LVT. */
+ return uc1 + (uc2 - 0x11A7);
+ }
+ else
+ {
+#if 0
+ unsigned int uc = MUL1 * uc1 * MUL2 * uc2;
+ unsigned int index1 = uc >> composition_header_0;
+ if (index1 < composition_header_1)
+ {
+ int lookup1 = u_composition.level1[index1];
+ if (lookup1 >= 0)
+ {
+ unsigned int index2 = (uc >> composition_header_2) & composition_header_3;
+ int lookup2 = u_composition.level2[lookup1 + index2];
+ if (lookup2 >= 0)
+ {
+ unsigned int index3 = (uc & composition_header_4);
+ unsigned int lookup3 = u_composition.level3[lookup2 + index3];
+ if ((lookup3 >> 16) == uc2)
+ return lookup3 & ((1U << 16) - 1);
+ }
+ }
+ }
+#else
+ char codes[4];
+ const struct composition_rule *rule;
+
+ codes[0] = (uc1 >> 8) & 0xff;
+ codes[1] = uc1 & 0xff;
+ codes[2] = (uc2 >> 8) & 0xff;
+ codes[3] = uc2 & 0xff;
+
+ rule = gl_uninorm_compose_lookup (codes, 4);
+ if (rule != NULL)
+ return rule->combined;
+#endif
+ }
+ }
+ return 0;
+}
diff --git a/lib/uninorm/decompose-internal.c b/lib/uninorm/decompose-internal.c
new file mode 100644
index 00000000..53b745da
--- /dev/null
+++ b/lib/uninorm/decompose-internal.c
@@ -0,0 +1,28 @@
+/* Decomposition of Unicode strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "decompose-internal.h"
+
+#define ELEMENT struct ucs4_with_ccc
+#define COMPARE(a,b) ((a)->ccc - (b)->ccc)
+#define STATIC
+#define merge_sort_fromto gl_uninorm_decompose_merge_sort_fromto
+#define merge_sort_inplace gl_uninorm_decompose_merge_sort_inplace
+#include "array-mergesort.h"
diff --git a/lib/uninorm/decompose-internal.h b/lib/uninorm/decompose-internal.h
new file mode 100644
index 00000000..c1bf1258
--- /dev/null
+++ b/lib/uninorm/decompose-internal.h
@@ -0,0 +1,36 @@
+/* Decomposition of Unicode strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <stddef.h>
+
+#include "unitypes.h"
+
+/* Variant of uc_decomposition that does not produce the 'tag'. */
+extern int
+ uc_compat_decomposition (ucs4_t uc, ucs4_t *decomposition);
+
+/* A Unicode character together with its canonical combining class. */
+struct ucs4_with_ccc
+{
+ ucs4_t code;
+ int ccc; /* range 0..255 */
+};
+
+/* Stable-sort an array of 'struct ucs4_with_ccc'. */
+extern void
+ gl_uninorm_decompose_merge_sort_inplace (struct ucs4_with_ccc *src, size_t n,
+ struct ucs4_with_ccc *tmp);
diff --git a/lib/uninorm/decomposing-form.c b/lib/uninorm/decomposing-form.c
new file mode 100644
index 00000000..3b49cb8b
--- /dev/null
+++ b/lib/uninorm/decomposing-form.c
@@ -0,0 +1,29 @@
+/* Decomposing variant of a normalization form.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include "normalize-internal.h"
+
+uninorm_t
+uninorm_decomposing_form (uninorm_t nf)
+{
+ return nf->decomposing_variant;
+}
diff --git a/lib/uninorm/decomposition-table.c b/lib/uninorm/decomposition-table.c
new file mode 100644
index 00000000..63f64427
--- /dev/null
+++ b/lib/uninorm/decomposition-table.c
@@ -0,0 +1,23 @@
+/* Decomposition of Unicode characters.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm/decomposition-table.h"
+
+#include "uninorm/decomposition-table2.h"
diff --git a/lib/uninorm/decomposition-table.h b/lib/uninorm/decomposition-table.h
new file mode 100644
index 00000000..ad0e1a3f
--- /dev/null
+++ b/lib/uninorm/decomposition-table.h
@@ -0,0 +1,48 @@
+/* Decomposition of Unicode characters.
+ Copyright (C) 2001-2003, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+
+#include "unitypes.h"
+
+/* The decomposition table is made of two parts:
+ - A table containing the actual arrays of decomposed equivalents.
+ (This table is separate because the maximum length of a decomposition
+ is 18, much larger than than the average length 1.497 of a decomposition).
+ - A 3-level table of indices into this array. */
+
+#include "decomposition-table1.h"
+
+static inline unsigned short
+decomp_index (ucs4_t uc)
+{
+ unsigned int index1 = uc >> decomp_header_0;
+ if (index1 < decomp_header_1)
+ {
+ int lookup1 = gl_uninorm_decomp_index_table.level1[index1];
+ if (lookup1 >= 0)
+ {
+ unsigned int index2 = (uc >> decomp_header_2) & decomp_header_3;
+ int lookup2 = gl_uninorm_decomp_index_table.level2[lookup1 + index2];
+ if (lookup2 >= 0)
+ {
+ unsigned int index3 = uc & decomp_header_4;
+ return gl_uninorm_decomp_index_table.level3[lookup2 + index3];
+ }
+ }
+ }
+ return (unsigned short)(-1);
+}
diff --git a/lib/uninorm/decomposition-table1.h b/lib/uninorm/decomposition-table1.h
new file mode 100644
index 00000000..4ac70f4c
--- /dev/null
+++ b/lib/uninorm/decomposition-table1.h
@@ -0,0 +1,20 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Decomposition of Unicode characters. */
+/* Generated automatically by gen-uni-tables.c for Unicode 5.1.0. */
+
+extern const unsigned char gl_uninorm_decomp_chars_table[];
+
+#define decomp_header_0 10
+#define decomp_header_1 191
+#define decomp_header_2 5
+#define decomp_header_3 31
+#define decomp_header_4 31
+
+typedef struct
+ {
+ int level1[191];
+ int level2[18 << 5];
+ unsigned short level3[254 << 5];
+ }
+decomp_index_table_t;
+extern const decomp_index_table_t gl_uninorm_decomp_index_table;
diff --git a/lib/uninorm/decomposition-table2.h b/lib/uninorm/decomposition-table2.h
new file mode 100644
index 00000000..f80f4342
--- /dev/null
+++ b/lib/uninorm/decomposition-table2.h
@@ -0,0 +1,3152 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Decomposition of Unicode characters. */
+/* Generated automatically by gen-uni-tables.c for Unicode 5.1.0. */
+
+const unsigned char gl_uninorm_decomp_chars_table[] =
+{
+ 0x08, 0x00, 0x20, 0xC0, 0x00, 0x20, 0x00, 0x03, 0x08, 0x20, 0x00, 0x61,
+ 0xC0, 0x00, 0x20, 0x00, 0x03, 0x04, 0x20, 0x00, 0x32, 0x20, 0x00, 0x33,
+ 0xC0, 0x00, 0x20, 0x00, 0x03, 0x01, 0x40, 0x03, 0xBC, 0xC0, 0x00, 0x20,
+ 0x00, 0x03, 0x27, 0x20, 0x00, 0x31, 0x20, 0x00, 0x6F, 0xBC, 0x00, 0x31,
+ 0x80, 0x20, 0x44, 0x00, 0x00, 0x34, 0xBC, 0x00, 0x31, 0x80, 0x20, 0x44,
+ 0x00, 0x00, 0x32, 0xBC, 0x00, 0x33, 0x80, 0x20, 0x44, 0x00, 0x00, 0x34,
+ 0x80, 0x00, 0x41, 0x00, 0x03, 0x00, 0x80, 0x00, 0x41, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0x41, 0x00, 0x03, 0x02, 0x80, 0x00, 0x41, 0x00, 0x03, 0x03,
+ 0x80, 0x00, 0x41, 0x00, 0x03, 0x08, 0x80, 0x00, 0x41, 0x00, 0x03, 0x0A,
+ 0x80, 0x00, 0x43, 0x00, 0x03, 0x27, 0x80, 0x00, 0x45, 0x00, 0x03, 0x00,
+ 0x80, 0x00, 0x45, 0x00, 0x03, 0x01, 0x80, 0x00, 0x45, 0x00, 0x03, 0x02,
+ 0x80, 0x00, 0x45, 0x00, 0x03, 0x08, 0x80, 0x00, 0x49, 0x00, 0x03, 0x00,
+ 0x80, 0x00, 0x49, 0x00, 0x03, 0x01, 0x80, 0x00, 0x49, 0x00, 0x03, 0x02,
+ 0x80, 0x00, 0x49, 0x00, 0x03, 0x08, 0x80, 0x00, 0x4E, 0x00, 0x03, 0x03,
+ 0x80, 0x00, 0x4F, 0x00, 0x03, 0x00, 0x80, 0x00, 0x4F, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0x4F, 0x00, 0x03, 0x02, 0x80, 0x00, 0x4F, 0x00, 0x03, 0x03,
+ 0x80, 0x00, 0x4F, 0x00, 0x03, 0x08, 0x80, 0x00, 0x55, 0x00, 0x03, 0x00,
+ 0x80, 0x00, 0x55, 0x00, 0x03, 0x01, 0x80, 0x00, 0x55, 0x00, 0x03, 0x02,
+ 0x80, 0x00, 0x55, 0x00, 0x03, 0x08, 0x80, 0x00, 0x59, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0x61, 0x00, 0x03, 0x00, 0x80, 0x00, 0x61, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0x61, 0x00, 0x03, 0x02, 0x80, 0x00, 0x61, 0x00, 0x03, 0x03,
+ 0x80, 0x00, 0x61, 0x00, 0x03, 0x08, 0x80, 0x00, 0x61, 0x00, 0x03, 0x0A,
+ 0x80, 0x00, 0x63, 0x00, 0x03, 0x27, 0x80, 0x00, 0x65, 0x00, 0x03, 0x00,
+ 0x80, 0x00, 0x65, 0x00, 0x03, 0x01, 0x80, 0x00, 0x65, 0x00, 0x03, 0x02,
+ 0x80, 0x00, 0x65, 0x00, 0x03, 0x08, 0x80, 0x00, 0x69, 0x00, 0x03, 0x00,
+ 0x80, 0x00, 0x69, 0x00, 0x03, 0x01, 0x80, 0x00, 0x69, 0x00, 0x03, 0x02,
+ 0x80, 0x00, 0x69, 0x00, 0x03, 0x08, 0x80, 0x00, 0x6E, 0x00, 0x03, 0x03,
+ 0x80, 0x00, 0x6F, 0x00, 0x03, 0x00, 0x80, 0x00, 0x6F, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0x6F, 0x00, 0x03, 0x02, 0x80, 0x00, 0x6F, 0x00, 0x03, 0x03,
+ 0x80, 0x00, 0x6F, 0x00, 0x03, 0x08, 0x80, 0x00, 0x75, 0x00, 0x03, 0x00,
+ 0x80, 0x00, 0x75, 0x00, 0x03, 0x01, 0x80, 0x00, 0x75, 0x00, 0x03, 0x02,
+ 0x80, 0x00, 0x75, 0x00, 0x03, 0x08, 0x80, 0x00, 0x79, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0x79, 0x00, 0x03, 0x08, 0x80, 0x00, 0x41, 0x00, 0x03, 0x04,
+ 0x80, 0x00, 0x61, 0x00, 0x03, 0x04, 0x80, 0x00, 0x41, 0x00, 0x03, 0x06,
+ 0x80, 0x00, 0x61, 0x00, 0x03, 0x06, 0x80, 0x00, 0x41, 0x00, 0x03, 0x28,
+ 0x80, 0x00, 0x61, 0x00, 0x03, 0x28, 0x80, 0x00, 0x43, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0x63, 0x00, 0x03, 0x01, 0x80, 0x00, 0x43, 0x00, 0x03, 0x02,
+ 0x80, 0x00, 0x63, 0x00, 0x03, 0x02, 0x80, 0x00, 0x43, 0x00, 0x03, 0x07,
+ 0x80, 0x00, 0x63, 0x00, 0x03, 0x07, 0x80, 0x00, 0x43, 0x00, 0x03, 0x0C,
+ 0x80, 0x00, 0x63, 0x00, 0x03, 0x0C, 0x80, 0x00, 0x44, 0x00, 0x03, 0x0C,
+ 0x80, 0x00, 0x64, 0x00, 0x03, 0x0C, 0x80, 0x00, 0x45, 0x00, 0x03, 0x04,
+ 0x80, 0x00, 0x65, 0x00, 0x03, 0x04, 0x80, 0x00, 0x45, 0x00, 0x03, 0x06,
+ 0x80, 0x00, 0x65, 0x00, 0x03, 0x06, 0x80, 0x00, 0x45, 0x00, 0x03, 0x07,
+ 0x80, 0x00, 0x65, 0x00, 0x03, 0x07, 0x80, 0x00, 0x45, 0x00, 0x03, 0x28,
+ 0x80, 0x00, 0x65, 0x00, 0x03, 0x28, 0x80, 0x00, 0x45, 0x00, 0x03, 0x0C,
+ 0x80, 0x00, 0x65, 0x00, 0x03, 0x0C, 0x80, 0x00, 0x47, 0x00, 0x03, 0x02,
+ 0x80, 0x00, 0x67, 0x00, 0x03, 0x02, 0x80, 0x00, 0x47, 0x00, 0x03, 0x06,
+ 0x80, 0x00, 0x67, 0x00, 0x03, 0x06, 0x80, 0x00, 0x47, 0x00, 0x03, 0x07,
+ 0x80, 0x00, 0x67, 0x00, 0x03, 0x07, 0x80, 0x00, 0x47, 0x00, 0x03, 0x27,
+ 0x80, 0x00, 0x67, 0x00, 0x03, 0x27, 0x80, 0x00, 0x48, 0x00, 0x03, 0x02,
+ 0x80, 0x00, 0x68, 0x00, 0x03, 0x02, 0x80, 0x00, 0x49, 0x00, 0x03, 0x03,
+ 0x80, 0x00, 0x69, 0x00, 0x03, 0x03, 0x80, 0x00, 0x49, 0x00, 0x03, 0x04,
+ 0x80, 0x00, 0x69, 0x00, 0x03, 0x04, 0x80, 0x00, 0x49, 0x00, 0x03, 0x06,
+ 0x80, 0x00, 0x69, 0x00, 0x03, 0x06, 0x80, 0x00, 0x49, 0x00, 0x03, 0x28,
+ 0x80, 0x00, 0x69, 0x00, 0x03, 0x28, 0x80, 0x00, 0x49, 0x00, 0x03, 0x07,
+ 0xC0, 0x00, 0x49, 0x00, 0x00, 0x4A, 0xC0, 0x00, 0x69, 0x00, 0x00, 0x6A,
+ 0x80, 0x00, 0x4A, 0x00, 0x03, 0x02, 0x80, 0x00, 0x6A, 0x00, 0x03, 0x02,
+ 0x80, 0x00, 0x4B, 0x00, 0x03, 0x27, 0x80, 0x00, 0x6B, 0x00, 0x03, 0x27,
+ 0x80, 0x00, 0x4C, 0x00, 0x03, 0x01, 0x80, 0x00, 0x6C, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0x4C, 0x00, 0x03, 0x27, 0x80, 0x00, 0x6C, 0x00, 0x03, 0x27,
+ 0x80, 0x00, 0x4C, 0x00, 0x03, 0x0C, 0x80, 0x00, 0x6C, 0x00, 0x03, 0x0C,
+ 0xC0, 0x00, 0x4C, 0x00, 0x00, 0xB7, 0xC0, 0x00, 0x6C, 0x00, 0x00, 0xB7,
+ 0x80, 0x00, 0x4E, 0x00, 0x03, 0x01, 0x80, 0x00, 0x6E, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0x4E, 0x00, 0x03, 0x27, 0x80, 0x00, 0x6E, 0x00, 0x03, 0x27,
+ 0x80, 0x00, 0x4E, 0x00, 0x03, 0x0C, 0x80, 0x00, 0x6E, 0x00, 0x03, 0x0C,
+ 0xC0, 0x02, 0xBC, 0x00, 0x00, 0x6E, 0x80, 0x00, 0x4F, 0x00, 0x03, 0x04,
+ 0x80, 0x00, 0x6F, 0x00, 0x03, 0x04, 0x80, 0x00, 0x4F, 0x00, 0x03, 0x06,
+ 0x80, 0x00, 0x6F, 0x00, 0x03, 0x06, 0x80, 0x00, 0x4F, 0x00, 0x03, 0x0B,
+ 0x80, 0x00, 0x6F, 0x00, 0x03, 0x0B, 0x80, 0x00, 0x52, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0x72, 0x00, 0x03, 0x01, 0x80, 0x00, 0x52, 0x00, 0x03, 0x27,
+ 0x80, 0x00, 0x72, 0x00, 0x03, 0x27, 0x80, 0x00, 0x52, 0x00, 0x03, 0x0C,
+ 0x80, 0x00, 0x72, 0x00, 0x03, 0x0C, 0x80, 0x00, 0x53, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0x73, 0x00, 0x03, 0x01, 0x80, 0x00, 0x53, 0x00, 0x03, 0x02,
+ 0x80, 0x00, 0x73, 0x00, 0x03, 0x02, 0x80, 0x00, 0x53, 0x00, 0x03, 0x27,
+ 0x80, 0x00, 0x73, 0x00, 0x03, 0x27, 0x80, 0x00, 0x53, 0x00, 0x03, 0x0C,
+ 0x80, 0x00, 0x73, 0x00, 0x03, 0x0C, 0x80, 0x00, 0x54, 0x00, 0x03, 0x27,
+ 0x80, 0x00, 0x74, 0x00, 0x03, 0x27, 0x80, 0x00, 0x54, 0x00, 0x03, 0x0C,
+ 0x80, 0x00, 0x74, 0x00, 0x03, 0x0C, 0x80, 0x00, 0x55, 0x00, 0x03, 0x03,
+ 0x80, 0x00, 0x75, 0x00, 0x03, 0x03, 0x80, 0x00, 0x55, 0x00, 0x03, 0x04,
+ 0x80, 0x00, 0x75, 0x00, 0x03, 0x04, 0x80, 0x00, 0x55, 0x00, 0x03, 0x06,
+ 0x80, 0x00, 0x75, 0x00, 0x03, 0x06, 0x80, 0x00, 0x55, 0x00, 0x03, 0x0A,
+ 0x80, 0x00, 0x75, 0x00, 0x03, 0x0A, 0x80, 0x00, 0x55, 0x00, 0x03, 0x0B,
+ 0x80, 0x00, 0x75, 0x00, 0x03, 0x0B, 0x80, 0x00, 0x55, 0x00, 0x03, 0x28,
+ 0x80, 0x00, 0x75, 0x00, 0x03, 0x28, 0x80, 0x00, 0x57, 0x00, 0x03, 0x02,
+ 0x80, 0x00, 0x77, 0x00, 0x03, 0x02, 0x80, 0x00, 0x59, 0x00, 0x03, 0x02,
+ 0x80, 0x00, 0x79, 0x00, 0x03, 0x02, 0x80, 0x00, 0x59, 0x00, 0x03, 0x08,
+ 0x80, 0x00, 0x5A, 0x00, 0x03, 0x01, 0x80, 0x00, 0x7A, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0x5A, 0x00, 0x03, 0x07, 0x80, 0x00, 0x7A, 0x00, 0x03, 0x07,
+ 0x80, 0x00, 0x5A, 0x00, 0x03, 0x0C, 0x80, 0x00, 0x7A, 0x00, 0x03, 0x0C,
+ 0x40, 0x00, 0x73, 0x80, 0x00, 0x4F, 0x00, 0x03, 0x1B, 0x80, 0x00, 0x6F,
+ 0x00, 0x03, 0x1B, 0x80, 0x00, 0x55, 0x00, 0x03, 0x1B, 0x80, 0x00, 0x75,
+ 0x00, 0x03, 0x1B, 0xC0, 0x00, 0x44, 0x00, 0x01, 0x7D, 0xC0, 0x00, 0x44,
+ 0x00, 0x01, 0x7E, 0xC0, 0x00, 0x64, 0x00, 0x01, 0x7E, 0xC0, 0x00, 0x4C,
+ 0x00, 0x00, 0x4A, 0xC0, 0x00, 0x4C, 0x00, 0x00, 0x6A, 0xC0, 0x00, 0x6C,
+ 0x00, 0x00, 0x6A, 0xC0, 0x00, 0x4E, 0x00, 0x00, 0x4A, 0xC0, 0x00, 0x4E,
+ 0x00, 0x00, 0x6A, 0xC0, 0x00, 0x6E, 0x00, 0x00, 0x6A, 0x80, 0x00, 0x41,
+ 0x00, 0x03, 0x0C, 0x80, 0x00, 0x61, 0x00, 0x03, 0x0C, 0x80, 0x00, 0x49,
+ 0x00, 0x03, 0x0C, 0x80, 0x00, 0x69, 0x00, 0x03, 0x0C, 0x80, 0x00, 0x4F,
+ 0x00, 0x03, 0x0C, 0x80, 0x00, 0x6F, 0x00, 0x03, 0x0C, 0x80, 0x00, 0x55,
+ 0x00, 0x03, 0x0C, 0x80, 0x00, 0x75, 0x00, 0x03, 0x0C, 0x80, 0x00, 0xDC,
+ 0x00, 0x03, 0x04, 0x80, 0x00, 0xFC, 0x00, 0x03, 0x04, 0x80, 0x00, 0xDC,
+ 0x00, 0x03, 0x01, 0x80, 0x00, 0xFC, 0x00, 0x03, 0x01, 0x80, 0x00, 0xDC,
+ 0x00, 0x03, 0x0C, 0x80, 0x00, 0xFC, 0x00, 0x03, 0x0C, 0x80, 0x00, 0xDC,
+ 0x00, 0x03, 0x00, 0x80, 0x00, 0xFC, 0x00, 0x03, 0x00, 0x80, 0x00, 0xC4,
+ 0x00, 0x03, 0x04, 0x80, 0x00, 0xE4, 0x00, 0x03, 0x04, 0x80, 0x02, 0x26,
+ 0x00, 0x03, 0x04, 0x80, 0x02, 0x27, 0x00, 0x03, 0x04, 0x80, 0x00, 0xC6,
+ 0x00, 0x03, 0x04, 0x80, 0x00, 0xE6, 0x00, 0x03, 0x04, 0x80, 0x00, 0x47,
+ 0x00, 0x03, 0x0C, 0x80, 0x00, 0x67, 0x00, 0x03, 0x0C, 0x80, 0x00, 0x4B,
+ 0x00, 0x03, 0x0C, 0x80, 0x00, 0x6B, 0x00, 0x03, 0x0C, 0x80, 0x00, 0x4F,
+ 0x00, 0x03, 0x28, 0x80, 0x00, 0x6F, 0x00, 0x03, 0x28, 0x80, 0x01, 0xEA,
+ 0x00, 0x03, 0x04, 0x80, 0x01, 0xEB, 0x00, 0x03, 0x04, 0x80, 0x01, 0xB7,
+ 0x00, 0x03, 0x0C, 0x80, 0x02, 0x92, 0x00, 0x03, 0x0C, 0x80, 0x00, 0x6A,
+ 0x00, 0x03, 0x0C, 0xC0, 0x00, 0x44, 0x00, 0x00, 0x5A, 0xC0, 0x00, 0x44,
+ 0x00, 0x00, 0x7A, 0xC0, 0x00, 0x64, 0x00, 0x00, 0x7A, 0x80, 0x00, 0x47,
+ 0x00, 0x03, 0x01, 0x80, 0x00, 0x67, 0x00, 0x03, 0x01, 0x80, 0x00, 0x4E,
+ 0x00, 0x03, 0x00, 0x80, 0x00, 0x6E, 0x00, 0x03, 0x00, 0x80, 0x00, 0xC5,
+ 0x00, 0x03, 0x01, 0x80, 0x00, 0xE5, 0x00, 0x03, 0x01, 0x80, 0x00, 0xC6,
+ 0x00, 0x03, 0x01, 0x80, 0x00, 0xE6, 0x00, 0x03, 0x01, 0x80, 0x00, 0xD8,
+ 0x00, 0x03, 0x01, 0x80, 0x00, 0xF8, 0x00, 0x03, 0x01, 0x80, 0x00, 0x41,
+ 0x00, 0x03, 0x0F, 0x80, 0x00, 0x61, 0x00, 0x03, 0x0F, 0x80, 0x00, 0x41,
+ 0x00, 0x03, 0x11, 0x80, 0x00, 0x61, 0x00, 0x03, 0x11, 0x80, 0x00, 0x45,
+ 0x00, 0x03, 0x0F, 0x80, 0x00, 0x65, 0x00, 0x03, 0x0F, 0x80, 0x00, 0x45,
+ 0x00, 0x03, 0x11, 0x80, 0x00, 0x65, 0x00, 0x03, 0x11, 0x80, 0x00, 0x49,
+ 0x00, 0x03, 0x0F, 0x80, 0x00, 0x69, 0x00, 0x03, 0x0F, 0x80, 0x00, 0x49,
+ 0x00, 0x03, 0x11, 0x80, 0x00, 0x69, 0x00, 0x03, 0x11, 0x80, 0x00, 0x4F,
+ 0x00, 0x03, 0x0F, 0x80, 0x00, 0x6F, 0x00, 0x03, 0x0F, 0x80, 0x00, 0x4F,
+ 0x00, 0x03, 0x11, 0x80, 0x00, 0x6F, 0x00, 0x03, 0x11, 0x80, 0x00, 0x52,
+ 0x00, 0x03, 0x0F, 0x80, 0x00, 0x72, 0x00, 0x03, 0x0F, 0x80, 0x00, 0x52,
+ 0x00, 0x03, 0x11, 0x80, 0x00, 0x72, 0x00, 0x03, 0x11, 0x80, 0x00, 0x55,
+ 0x00, 0x03, 0x0F, 0x80, 0x00, 0x75, 0x00, 0x03, 0x0F, 0x80, 0x00, 0x55,
+ 0x00, 0x03, 0x11, 0x80, 0x00, 0x75, 0x00, 0x03, 0x11, 0x80, 0x00, 0x53,
+ 0x00, 0x03, 0x26, 0x80, 0x00, 0x73, 0x00, 0x03, 0x26, 0x80, 0x00, 0x54,
+ 0x00, 0x03, 0x26, 0x80, 0x00, 0x74, 0x00, 0x03, 0x26, 0x80, 0x00, 0x48,
+ 0x00, 0x03, 0x0C, 0x80, 0x00, 0x68, 0x00, 0x03, 0x0C, 0x80, 0x00, 0x41,
+ 0x00, 0x03, 0x07, 0x80, 0x00, 0x61, 0x00, 0x03, 0x07, 0x80, 0x00, 0x45,
+ 0x00, 0x03, 0x27, 0x80, 0x00, 0x65, 0x00, 0x03, 0x27, 0x80, 0x00, 0xD6,
+ 0x00, 0x03, 0x04, 0x80, 0x00, 0xF6, 0x00, 0x03, 0x04, 0x80, 0x00, 0xD5,
+ 0x00, 0x03, 0x04, 0x80, 0x00, 0xF5, 0x00, 0x03, 0x04, 0x80, 0x00, 0x4F,
+ 0x00, 0x03, 0x07, 0x80, 0x00, 0x6F, 0x00, 0x03, 0x07, 0x80, 0x02, 0x2E,
+ 0x00, 0x03, 0x04, 0x80, 0x02, 0x2F, 0x00, 0x03, 0x04, 0x80, 0x00, 0x59,
+ 0x00, 0x03, 0x04, 0x80, 0x00, 0x79, 0x00, 0x03, 0x04, 0x20, 0x00, 0x68,
+ 0x20, 0x02, 0x66, 0x20, 0x00, 0x6A, 0x20, 0x00, 0x72, 0x20, 0x02, 0x79,
+ 0x20, 0x02, 0x7B, 0x20, 0x02, 0x81, 0x20, 0x00, 0x77, 0x20, 0x00, 0x79,
+ 0xC0, 0x00, 0x20, 0x00, 0x03, 0x06, 0xC0, 0x00, 0x20, 0x00, 0x03, 0x07,
+ 0xC0, 0x00, 0x20, 0x00, 0x03, 0x0A, 0xC0, 0x00, 0x20, 0x00, 0x03, 0x28,
+ 0xC0, 0x00, 0x20, 0x00, 0x03, 0x03, 0xC0, 0x00, 0x20, 0x00, 0x03, 0x0B,
+ 0x20, 0x02, 0x63, 0x20, 0x00, 0x6C, 0x20, 0x00, 0x73, 0x20, 0x00, 0x78,
+ 0x20, 0x02, 0x95, 0x00, 0x03, 0x00, 0x00, 0x03, 0x01, 0x00, 0x03, 0x13,
+ 0x80, 0x03, 0x08, 0x00, 0x03, 0x01, 0x00, 0x02, 0xB9, 0xC0, 0x00, 0x20,
+ 0x00, 0x03, 0x45, 0x00, 0x00, 0x3B, 0xC0, 0x00, 0x20, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0xA8, 0x00, 0x03, 0x01, 0x80, 0x03, 0x91, 0x00, 0x03, 0x01,
+ 0x00, 0x00, 0xB7, 0x80, 0x03, 0x95, 0x00, 0x03, 0x01, 0x80, 0x03, 0x97,
+ 0x00, 0x03, 0x01, 0x80, 0x03, 0x99, 0x00, 0x03, 0x01, 0x80, 0x03, 0x9F,
+ 0x00, 0x03, 0x01, 0x80, 0x03, 0xA5, 0x00, 0x03, 0x01, 0x80, 0x03, 0xA9,
+ 0x00, 0x03, 0x01, 0x80, 0x03, 0xCA, 0x00, 0x03, 0x01, 0x80, 0x03, 0x99,
+ 0x00, 0x03, 0x08, 0x80, 0x03, 0xA5, 0x00, 0x03, 0x08, 0x80, 0x03, 0xB1,
+ 0x00, 0x03, 0x01, 0x80, 0x03, 0xB5, 0x00, 0x03, 0x01, 0x80, 0x03, 0xB7,
+ 0x00, 0x03, 0x01, 0x80, 0x03, 0xB9, 0x00, 0x03, 0x01, 0x80, 0x03, 0xCB,
+ 0x00, 0x03, 0x01, 0x80, 0x03, 0xB9, 0x00, 0x03, 0x08, 0x80, 0x03, 0xC5,
+ 0x00, 0x03, 0x08, 0x80, 0x03, 0xBF, 0x00, 0x03, 0x01, 0x80, 0x03, 0xC5,
+ 0x00, 0x03, 0x01, 0x80, 0x03, 0xC9, 0x00, 0x03, 0x01, 0x40, 0x03, 0xB2,
+ 0x40, 0x03, 0xB8, 0x40, 0x03, 0xA5, 0x80, 0x03, 0xD2, 0x00, 0x03, 0x01,
+ 0x80, 0x03, 0xD2, 0x00, 0x03, 0x08, 0x40, 0x03, 0xC6, 0x40, 0x03, 0xC0,
+ 0x40, 0x03, 0xBA, 0x40, 0x03, 0xC1, 0x40, 0x03, 0xC2, 0x40, 0x03, 0x98,
+ 0x40, 0x03, 0xB5, 0x40, 0x03, 0xA3, 0x80, 0x04, 0x15, 0x00, 0x03, 0x00,
+ 0x80, 0x04, 0x15, 0x00, 0x03, 0x08, 0x80, 0x04, 0x13, 0x00, 0x03, 0x01,
+ 0x80, 0x04, 0x06, 0x00, 0x03, 0x08, 0x80, 0x04, 0x1A, 0x00, 0x03, 0x01,
+ 0x80, 0x04, 0x18, 0x00, 0x03, 0x00, 0x80, 0x04, 0x23, 0x00, 0x03, 0x06,
+ 0x80, 0x04, 0x18, 0x00, 0x03, 0x06, 0x80, 0x04, 0x38, 0x00, 0x03, 0x06,
+ 0x80, 0x04, 0x35, 0x00, 0x03, 0x00, 0x80, 0x04, 0x35, 0x00, 0x03, 0x08,
+ 0x80, 0x04, 0x33, 0x00, 0x03, 0x01, 0x80, 0x04, 0x56, 0x00, 0x03, 0x08,
+ 0x80, 0x04, 0x3A, 0x00, 0x03, 0x01, 0x80, 0x04, 0x38, 0x00, 0x03, 0x00,
+ 0x80, 0x04, 0x43, 0x00, 0x03, 0x06, 0x80, 0x04, 0x74, 0x00, 0x03, 0x0F,
+ 0x80, 0x04, 0x75, 0x00, 0x03, 0x0F, 0x80, 0x04, 0x16, 0x00, 0x03, 0x06,
+ 0x80, 0x04, 0x36, 0x00, 0x03, 0x06, 0x80, 0x04, 0x10, 0x00, 0x03, 0x06,
+ 0x80, 0x04, 0x30, 0x00, 0x03, 0x06, 0x80, 0x04, 0x10, 0x00, 0x03, 0x08,
+ 0x80, 0x04, 0x30, 0x00, 0x03, 0x08, 0x80, 0x04, 0x15, 0x00, 0x03, 0x06,
+ 0x80, 0x04, 0x35, 0x00, 0x03, 0x06, 0x80, 0x04, 0xD8, 0x00, 0x03, 0x08,
+ 0x80, 0x04, 0xD9, 0x00, 0x03, 0x08, 0x80, 0x04, 0x16, 0x00, 0x03, 0x08,
+ 0x80, 0x04, 0x36, 0x00, 0x03, 0x08, 0x80, 0x04, 0x17, 0x00, 0x03, 0x08,
+ 0x80, 0x04, 0x37, 0x00, 0x03, 0x08, 0x80, 0x04, 0x18, 0x00, 0x03, 0x04,
+ 0x80, 0x04, 0x38, 0x00, 0x03, 0x04, 0x80, 0x04, 0x18, 0x00, 0x03, 0x08,
+ 0x80, 0x04, 0x38, 0x00, 0x03, 0x08, 0x80, 0x04, 0x1E, 0x00, 0x03, 0x08,
+ 0x80, 0x04, 0x3E, 0x00, 0x03, 0x08, 0x80, 0x04, 0xE8, 0x00, 0x03, 0x08,
+ 0x80, 0x04, 0xE9, 0x00, 0x03, 0x08, 0x80, 0x04, 0x2D, 0x00, 0x03, 0x08,
+ 0x80, 0x04, 0x4D, 0x00, 0x03, 0x08, 0x80, 0x04, 0x23, 0x00, 0x03, 0x04,
+ 0x80, 0x04, 0x43, 0x00, 0x03, 0x04, 0x80, 0x04, 0x23, 0x00, 0x03, 0x08,
+ 0x80, 0x04, 0x43, 0x00, 0x03, 0x08, 0x80, 0x04, 0x23, 0x00, 0x03, 0x0B,
+ 0x80, 0x04, 0x43, 0x00, 0x03, 0x0B, 0x80, 0x04, 0x27, 0x00, 0x03, 0x08,
+ 0x80, 0x04, 0x47, 0x00, 0x03, 0x08, 0x80, 0x04, 0x2B, 0x00, 0x03, 0x08,
+ 0x80, 0x04, 0x4B, 0x00, 0x03, 0x08, 0xC0, 0x05, 0x65, 0x00, 0x05, 0x82,
+ 0x80, 0x06, 0x27, 0x00, 0x06, 0x53, 0x80, 0x06, 0x27, 0x00, 0x06, 0x54,
+ 0x80, 0x06, 0x48, 0x00, 0x06, 0x54, 0x80, 0x06, 0x27, 0x00, 0x06, 0x55,
+ 0x80, 0x06, 0x4A, 0x00, 0x06, 0x54, 0xC0, 0x06, 0x27, 0x00, 0x06, 0x74,
+ 0xC0, 0x06, 0x48, 0x00, 0x06, 0x74, 0xC0, 0x06, 0xC7, 0x00, 0x06, 0x74,
+ 0xC0, 0x06, 0x4A, 0x00, 0x06, 0x74, 0x80, 0x06, 0xD5, 0x00, 0x06, 0x54,
+ 0x80, 0x06, 0xC1, 0x00, 0x06, 0x54, 0x80, 0x06, 0xD2, 0x00, 0x06, 0x54,
+ 0x80, 0x09, 0x28, 0x00, 0x09, 0x3C, 0x80, 0x09, 0x30, 0x00, 0x09, 0x3C,
+ 0x80, 0x09, 0x33, 0x00, 0x09, 0x3C, 0x80, 0x09, 0x15, 0x00, 0x09, 0x3C,
+ 0x80, 0x09, 0x16, 0x00, 0x09, 0x3C, 0x80, 0x09, 0x17, 0x00, 0x09, 0x3C,
+ 0x80, 0x09, 0x1C, 0x00, 0x09, 0x3C, 0x80, 0x09, 0x21, 0x00, 0x09, 0x3C,
+ 0x80, 0x09, 0x22, 0x00, 0x09, 0x3C, 0x80, 0x09, 0x2B, 0x00, 0x09, 0x3C,
+ 0x80, 0x09, 0x2F, 0x00, 0x09, 0x3C, 0x80, 0x09, 0xC7, 0x00, 0x09, 0xBE,
+ 0x80, 0x09, 0xC7, 0x00, 0x09, 0xD7, 0x80, 0x09, 0xA1, 0x00, 0x09, 0xBC,
+ 0x80, 0x09, 0xA2, 0x00, 0x09, 0xBC, 0x80, 0x09, 0xAF, 0x00, 0x09, 0xBC,
+ 0x80, 0x0A, 0x32, 0x00, 0x0A, 0x3C, 0x80, 0x0A, 0x38, 0x00, 0x0A, 0x3C,
+ 0x80, 0x0A, 0x16, 0x00, 0x0A, 0x3C, 0x80, 0x0A, 0x17, 0x00, 0x0A, 0x3C,
+ 0x80, 0x0A, 0x1C, 0x00, 0x0A, 0x3C, 0x80, 0x0A, 0x2B, 0x00, 0x0A, 0x3C,
+ 0x80, 0x0B, 0x47, 0x00, 0x0B, 0x56, 0x80, 0x0B, 0x47, 0x00, 0x0B, 0x3E,
+ 0x80, 0x0B, 0x47, 0x00, 0x0B, 0x57, 0x80, 0x0B, 0x21, 0x00, 0x0B, 0x3C,
+ 0x80, 0x0B, 0x22, 0x00, 0x0B, 0x3C, 0x80, 0x0B, 0x92, 0x00, 0x0B, 0xD7,
+ 0x80, 0x0B, 0xC6, 0x00, 0x0B, 0xBE, 0x80, 0x0B, 0xC7, 0x00, 0x0B, 0xBE,
+ 0x80, 0x0B, 0xC6, 0x00, 0x0B, 0xD7, 0x80, 0x0C, 0x46, 0x00, 0x0C, 0x56,
+ 0x80, 0x0C, 0xBF, 0x00, 0x0C, 0xD5, 0x80, 0x0C, 0xC6, 0x00, 0x0C, 0xD5,
+ 0x80, 0x0C, 0xC6, 0x00, 0x0C, 0xD6, 0x80, 0x0C, 0xC6, 0x00, 0x0C, 0xC2,
+ 0x80, 0x0C, 0xCA, 0x00, 0x0C, 0xD5, 0x80, 0x0D, 0x46, 0x00, 0x0D, 0x3E,
+ 0x80, 0x0D, 0x47, 0x00, 0x0D, 0x3E, 0x80, 0x0D, 0x46, 0x00, 0x0D, 0x57,
+ 0x80, 0x0D, 0xD9, 0x00, 0x0D, 0xCA, 0x80, 0x0D, 0xD9, 0x00, 0x0D, 0xCF,
+ 0x80, 0x0D, 0xDC, 0x00, 0x0D, 0xCA, 0x80, 0x0D, 0xD9, 0x00, 0x0D, 0xDF,
+ 0xC0, 0x0E, 0x4D, 0x00, 0x0E, 0x32, 0xC0, 0x0E, 0xCD, 0x00, 0x0E, 0xB2,
+ 0xC0, 0x0E, 0xAB, 0x00, 0x0E, 0x99, 0xC0, 0x0E, 0xAB, 0x00, 0x0E, 0xA1,
+ 0x08, 0x0F, 0x0B, 0x80, 0x0F, 0x42, 0x00, 0x0F, 0xB7, 0x80, 0x0F, 0x4C,
+ 0x00, 0x0F, 0xB7, 0x80, 0x0F, 0x51, 0x00, 0x0F, 0xB7, 0x80, 0x0F, 0x56,
+ 0x00, 0x0F, 0xB7, 0x80, 0x0F, 0x5B, 0x00, 0x0F, 0xB7, 0x80, 0x0F, 0x40,
+ 0x00, 0x0F, 0xB5, 0x80, 0x0F, 0x71, 0x00, 0x0F, 0x72, 0x80, 0x0F, 0x71,
+ 0x00, 0x0F, 0x74, 0x80, 0x0F, 0xB2, 0x00, 0x0F, 0x80, 0xC0, 0x0F, 0xB2,
+ 0x00, 0x0F, 0x81, 0x80, 0x0F, 0xB3, 0x00, 0x0F, 0x80, 0xC0, 0x0F, 0xB3,
+ 0x00, 0x0F, 0x81, 0x80, 0x0F, 0x71, 0x00, 0x0F, 0x80, 0x80, 0x0F, 0x92,
+ 0x00, 0x0F, 0xB7, 0x80, 0x0F, 0x9C, 0x00, 0x0F, 0xB7, 0x80, 0x0F, 0xA1,
+ 0x00, 0x0F, 0xB7, 0x80, 0x0F, 0xA6, 0x00, 0x0F, 0xB7, 0x80, 0x0F, 0xAB,
+ 0x00, 0x0F, 0xB7, 0x80, 0x0F, 0x90, 0x00, 0x0F, 0xB5, 0x80, 0x10, 0x25,
+ 0x00, 0x10, 0x2E, 0x20, 0x10, 0xDC, 0x80, 0x1B, 0x05, 0x00, 0x1B, 0x35,
+ 0x80, 0x1B, 0x07, 0x00, 0x1B, 0x35, 0x80, 0x1B, 0x09, 0x00, 0x1B, 0x35,
+ 0x80, 0x1B, 0x0B, 0x00, 0x1B, 0x35, 0x80, 0x1B, 0x0D, 0x00, 0x1B, 0x35,
+ 0x80, 0x1B, 0x11, 0x00, 0x1B, 0x35, 0x80, 0x1B, 0x3A, 0x00, 0x1B, 0x35,
+ 0x80, 0x1B, 0x3C, 0x00, 0x1B, 0x35, 0x80, 0x1B, 0x3E, 0x00, 0x1B, 0x35,
+ 0x80, 0x1B, 0x3F, 0x00, 0x1B, 0x35, 0x80, 0x1B, 0x42, 0x00, 0x1B, 0x35,
+ 0x20, 0x00, 0x41, 0x20, 0x00, 0xC6, 0x20, 0x00, 0x42, 0x20, 0x00, 0x44,
+ 0x20, 0x00, 0x45, 0x20, 0x01, 0x8E, 0x20, 0x00, 0x47, 0x20, 0x00, 0x48,
+ 0x20, 0x00, 0x49, 0x20, 0x00, 0x4A, 0x20, 0x00, 0x4B, 0x20, 0x00, 0x4C,
+ 0x20, 0x00, 0x4D, 0x20, 0x00, 0x4E, 0x20, 0x00, 0x4F, 0x20, 0x02, 0x22,
+ 0x20, 0x00, 0x50, 0x20, 0x00, 0x52, 0x20, 0x00, 0x54, 0x20, 0x00, 0x55,
+ 0x20, 0x00, 0x57, 0x20, 0x00, 0x61, 0x20, 0x02, 0x50, 0x20, 0x02, 0x51,
+ 0x20, 0x1D, 0x02, 0x20, 0x00, 0x62, 0x20, 0x00, 0x64, 0x20, 0x00, 0x65,
+ 0x20, 0x02, 0x59, 0x20, 0x02, 0x5B, 0x20, 0x02, 0x5C, 0x20, 0x00, 0x67,
+ 0x20, 0x00, 0x6B, 0x20, 0x00, 0x6D, 0x20, 0x01, 0x4B, 0x20, 0x00, 0x6F,
+ 0x20, 0x02, 0x54, 0x20, 0x1D, 0x16, 0x20, 0x1D, 0x17, 0x20, 0x00, 0x70,
+ 0x20, 0x00, 0x74, 0x20, 0x00, 0x75, 0x20, 0x1D, 0x1D, 0x20, 0x02, 0x6F,
+ 0x20, 0x00, 0x76, 0x20, 0x1D, 0x25, 0x20, 0x03, 0xB2, 0x20, 0x03, 0xB3,
+ 0x20, 0x03, 0xB4, 0x20, 0x03, 0xC6, 0x20, 0x03, 0xC7, 0x24, 0x00, 0x69,
+ 0x24, 0x00, 0x72, 0x24, 0x00, 0x75, 0x24, 0x00, 0x76, 0x24, 0x03, 0xB2,
+ 0x24, 0x03, 0xB3, 0x24, 0x03, 0xC1, 0x24, 0x03, 0xC6, 0x24, 0x03, 0xC7,
+ 0x20, 0x04, 0x3D, 0x20, 0x02, 0x52, 0x20, 0x00, 0x63, 0x20, 0x02, 0x55,
+ 0x20, 0x00, 0xF0, 0x20, 0x02, 0x5C, 0x20, 0x00, 0x66, 0x20, 0x02, 0x5F,
+ 0x20, 0x02, 0x61, 0x20, 0x02, 0x65, 0x20, 0x02, 0x68, 0x20, 0x02, 0x69,
+ 0x20, 0x02, 0x6A, 0x20, 0x1D, 0x7B, 0x20, 0x02, 0x9D, 0x20, 0x02, 0x6D,
+ 0x20, 0x1D, 0x85, 0x20, 0x02, 0x9F, 0x20, 0x02, 0x71, 0x20, 0x02, 0x70,
+ 0x20, 0x02, 0x72, 0x20, 0x02, 0x73, 0x20, 0x02, 0x74, 0x20, 0x02, 0x75,
+ 0x20, 0x02, 0x78, 0x20, 0x02, 0x82, 0x20, 0x02, 0x83, 0x20, 0x01, 0xAB,
+ 0x20, 0x02, 0x89, 0x20, 0x02, 0x8A, 0x20, 0x1D, 0x1C, 0x20, 0x02, 0x8B,
+ 0x20, 0x02, 0x8C, 0x20, 0x00, 0x7A, 0x20, 0x02, 0x90, 0x20, 0x02, 0x91,
+ 0x20, 0x02, 0x92, 0x20, 0x03, 0xB8, 0x80, 0x00, 0x41, 0x00, 0x03, 0x25,
+ 0x80, 0x00, 0x61, 0x00, 0x03, 0x25, 0x80, 0x00, 0x42, 0x00, 0x03, 0x07,
+ 0x80, 0x00, 0x62, 0x00, 0x03, 0x07, 0x80, 0x00, 0x42, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x62, 0x00, 0x03, 0x23, 0x80, 0x00, 0x42, 0x00, 0x03, 0x31,
+ 0x80, 0x00, 0x62, 0x00, 0x03, 0x31, 0x80, 0x00, 0xC7, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0xE7, 0x00, 0x03, 0x01, 0x80, 0x00, 0x44, 0x00, 0x03, 0x07,
+ 0x80, 0x00, 0x64, 0x00, 0x03, 0x07, 0x80, 0x00, 0x44, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x64, 0x00, 0x03, 0x23, 0x80, 0x00, 0x44, 0x00, 0x03, 0x31,
+ 0x80, 0x00, 0x64, 0x00, 0x03, 0x31, 0x80, 0x00, 0x44, 0x00, 0x03, 0x27,
+ 0x80, 0x00, 0x64, 0x00, 0x03, 0x27, 0x80, 0x00, 0x44, 0x00, 0x03, 0x2D,
+ 0x80, 0x00, 0x64, 0x00, 0x03, 0x2D, 0x80, 0x01, 0x12, 0x00, 0x03, 0x00,
+ 0x80, 0x01, 0x13, 0x00, 0x03, 0x00, 0x80, 0x01, 0x12, 0x00, 0x03, 0x01,
+ 0x80, 0x01, 0x13, 0x00, 0x03, 0x01, 0x80, 0x00, 0x45, 0x00, 0x03, 0x2D,
+ 0x80, 0x00, 0x65, 0x00, 0x03, 0x2D, 0x80, 0x00, 0x45, 0x00, 0x03, 0x30,
+ 0x80, 0x00, 0x65, 0x00, 0x03, 0x30, 0x80, 0x02, 0x28, 0x00, 0x03, 0x06,
+ 0x80, 0x02, 0x29, 0x00, 0x03, 0x06, 0x80, 0x00, 0x46, 0x00, 0x03, 0x07,
+ 0x80, 0x00, 0x66, 0x00, 0x03, 0x07, 0x80, 0x00, 0x47, 0x00, 0x03, 0x04,
+ 0x80, 0x00, 0x67, 0x00, 0x03, 0x04, 0x80, 0x00, 0x48, 0x00, 0x03, 0x07,
+ 0x80, 0x00, 0x68, 0x00, 0x03, 0x07, 0x80, 0x00, 0x48, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x68, 0x00, 0x03, 0x23, 0x80, 0x00, 0x48, 0x00, 0x03, 0x08,
+ 0x80, 0x00, 0x68, 0x00, 0x03, 0x08, 0x80, 0x00, 0x48, 0x00, 0x03, 0x27,
+ 0x80, 0x00, 0x68, 0x00, 0x03, 0x27, 0x80, 0x00, 0x48, 0x00, 0x03, 0x2E,
+ 0x80, 0x00, 0x68, 0x00, 0x03, 0x2E, 0x80, 0x00, 0x49, 0x00, 0x03, 0x30,
+ 0x80, 0x00, 0x69, 0x00, 0x03, 0x30, 0x80, 0x00, 0xCF, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0xEF, 0x00, 0x03, 0x01, 0x80, 0x00, 0x4B, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0x6B, 0x00, 0x03, 0x01, 0x80, 0x00, 0x4B, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x6B, 0x00, 0x03, 0x23, 0x80, 0x00, 0x4B, 0x00, 0x03, 0x31,
+ 0x80, 0x00, 0x6B, 0x00, 0x03, 0x31, 0x80, 0x00, 0x4C, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x6C, 0x00, 0x03, 0x23, 0x80, 0x1E, 0x36, 0x00, 0x03, 0x04,
+ 0x80, 0x1E, 0x37, 0x00, 0x03, 0x04, 0x80, 0x00, 0x4C, 0x00, 0x03, 0x31,
+ 0x80, 0x00, 0x6C, 0x00, 0x03, 0x31, 0x80, 0x00, 0x4C, 0x00, 0x03, 0x2D,
+ 0x80, 0x00, 0x6C, 0x00, 0x03, 0x2D, 0x80, 0x00, 0x4D, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0x6D, 0x00, 0x03, 0x01, 0x80, 0x00, 0x4D, 0x00, 0x03, 0x07,
+ 0x80, 0x00, 0x6D, 0x00, 0x03, 0x07, 0x80, 0x00, 0x4D, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x6D, 0x00, 0x03, 0x23, 0x80, 0x00, 0x4E, 0x00, 0x03, 0x07,
+ 0x80, 0x00, 0x6E, 0x00, 0x03, 0x07, 0x80, 0x00, 0x4E, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x6E, 0x00, 0x03, 0x23, 0x80, 0x00, 0x4E, 0x00, 0x03, 0x31,
+ 0x80, 0x00, 0x6E, 0x00, 0x03, 0x31, 0x80, 0x00, 0x4E, 0x00, 0x03, 0x2D,
+ 0x80, 0x00, 0x6E, 0x00, 0x03, 0x2D, 0x80, 0x00, 0xD5, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0xF5, 0x00, 0x03, 0x01, 0x80, 0x00, 0xD5, 0x00, 0x03, 0x08,
+ 0x80, 0x00, 0xF5, 0x00, 0x03, 0x08, 0x80, 0x01, 0x4C, 0x00, 0x03, 0x00,
+ 0x80, 0x01, 0x4D, 0x00, 0x03, 0x00, 0x80, 0x01, 0x4C, 0x00, 0x03, 0x01,
+ 0x80, 0x01, 0x4D, 0x00, 0x03, 0x01, 0x80, 0x00, 0x50, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0x70, 0x00, 0x03, 0x01, 0x80, 0x00, 0x50, 0x00, 0x03, 0x07,
+ 0x80, 0x00, 0x70, 0x00, 0x03, 0x07, 0x80, 0x00, 0x52, 0x00, 0x03, 0x07,
+ 0x80, 0x00, 0x72, 0x00, 0x03, 0x07, 0x80, 0x00, 0x52, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x72, 0x00, 0x03, 0x23, 0x80, 0x1E, 0x5A, 0x00, 0x03, 0x04,
+ 0x80, 0x1E, 0x5B, 0x00, 0x03, 0x04, 0x80, 0x00, 0x52, 0x00, 0x03, 0x31,
+ 0x80, 0x00, 0x72, 0x00, 0x03, 0x31, 0x80, 0x00, 0x53, 0x00, 0x03, 0x07,
+ 0x80, 0x00, 0x73, 0x00, 0x03, 0x07, 0x80, 0x00, 0x53, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x73, 0x00, 0x03, 0x23, 0x80, 0x01, 0x5A, 0x00, 0x03, 0x07,
+ 0x80, 0x01, 0x5B, 0x00, 0x03, 0x07, 0x80, 0x01, 0x60, 0x00, 0x03, 0x07,
+ 0x80, 0x01, 0x61, 0x00, 0x03, 0x07, 0x80, 0x1E, 0x62, 0x00, 0x03, 0x07,
+ 0x80, 0x1E, 0x63, 0x00, 0x03, 0x07, 0x80, 0x00, 0x54, 0x00, 0x03, 0x07,
+ 0x80, 0x00, 0x74, 0x00, 0x03, 0x07, 0x80, 0x00, 0x54, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x74, 0x00, 0x03, 0x23, 0x80, 0x00, 0x54, 0x00, 0x03, 0x31,
+ 0x80, 0x00, 0x74, 0x00, 0x03, 0x31, 0x80, 0x00, 0x54, 0x00, 0x03, 0x2D,
+ 0x80, 0x00, 0x74, 0x00, 0x03, 0x2D, 0x80, 0x00, 0x55, 0x00, 0x03, 0x24,
+ 0x80, 0x00, 0x75, 0x00, 0x03, 0x24, 0x80, 0x00, 0x55, 0x00, 0x03, 0x30,
+ 0x80, 0x00, 0x75, 0x00, 0x03, 0x30, 0x80, 0x00, 0x55, 0x00, 0x03, 0x2D,
+ 0x80, 0x00, 0x75, 0x00, 0x03, 0x2D, 0x80, 0x01, 0x68, 0x00, 0x03, 0x01,
+ 0x80, 0x01, 0x69, 0x00, 0x03, 0x01, 0x80, 0x01, 0x6A, 0x00, 0x03, 0x08,
+ 0x80, 0x01, 0x6B, 0x00, 0x03, 0x08, 0x80, 0x00, 0x56, 0x00, 0x03, 0x03,
+ 0x80, 0x00, 0x76, 0x00, 0x03, 0x03, 0x80, 0x00, 0x56, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x76, 0x00, 0x03, 0x23, 0x80, 0x00, 0x57, 0x00, 0x03, 0x00,
+ 0x80, 0x00, 0x77, 0x00, 0x03, 0x00, 0x80, 0x00, 0x57, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0x77, 0x00, 0x03, 0x01, 0x80, 0x00, 0x57, 0x00, 0x03, 0x08,
+ 0x80, 0x00, 0x77, 0x00, 0x03, 0x08, 0x80, 0x00, 0x57, 0x00, 0x03, 0x07,
+ 0x80, 0x00, 0x77, 0x00, 0x03, 0x07, 0x80, 0x00, 0x57, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x77, 0x00, 0x03, 0x23, 0x80, 0x00, 0x58, 0x00, 0x03, 0x07,
+ 0x80, 0x00, 0x78, 0x00, 0x03, 0x07, 0x80, 0x00, 0x58, 0x00, 0x03, 0x08,
+ 0x80, 0x00, 0x78, 0x00, 0x03, 0x08, 0x80, 0x00, 0x59, 0x00, 0x03, 0x07,
+ 0x80, 0x00, 0x79, 0x00, 0x03, 0x07, 0x80, 0x00, 0x5A, 0x00, 0x03, 0x02,
+ 0x80, 0x00, 0x7A, 0x00, 0x03, 0x02, 0x80, 0x00, 0x5A, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x7A, 0x00, 0x03, 0x23, 0x80, 0x00, 0x5A, 0x00, 0x03, 0x31,
+ 0x80, 0x00, 0x7A, 0x00, 0x03, 0x31, 0x80, 0x00, 0x68, 0x00, 0x03, 0x31,
+ 0x80, 0x00, 0x74, 0x00, 0x03, 0x08, 0x80, 0x00, 0x77, 0x00, 0x03, 0x0A,
+ 0x80, 0x00, 0x79, 0x00, 0x03, 0x0A, 0xC0, 0x00, 0x61, 0x00, 0x02, 0xBE,
+ 0x80, 0x01, 0x7F, 0x00, 0x03, 0x07, 0x80, 0x00, 0x41, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x61, 0x00, 0x03, 0x23, 0x80, 0x00, 0x41, 0x00, 0x03, 0x09,
+ 0x80, 0x00, 0x61, 0x00, 0x03, 0x09, 0x80, 0x00, 0xC2, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0xE2, 0x00, 0x03, 0x01, 0x80, 0x00, 0xC2, 0x00, 0x03, 0x00,
+ 0x80, 0x00, 0xE2, 0x00, 0x03, 0x00, 0x80, 0x00, 0xC2, 0x00, 0x03, 0x09,
+ 0x80, 0x00, 0xE2, 0x00, 0x03, 0x09, 0x80, 0x00, 0xC2, 0x00, 0x03, 0x03,
+ 0x80, 0x00, 0xE2, 0x00, 0x03, 0x03, 0x80, 0x1E, 0xA0, 0x00, 0x03, 0x02,
+ 0x80, 0x1E, 0xA1, 0x00, 0x03, 0x02, 0x80, 0x01, 0x02, 0x00, 0x03, 0x01,
+ 0x80, 0x01, 0x03, 0x00, 0x03, 0x01, 0x80, 0x01, 0x02, 0x00, 0x03, 0x00,
+ 0x80, 0x01, 0x03, 0x00, 0x03, 0x00, 0x80, 0x01, 0x02, 0x00, 0x03, 0x09,
+ 0x80, 0x01, 0x03, 0x00, 0x03, 0x09, 0x80, 0x01, 0x02, 0x00, 0x03, 0x03,
+ 0x80, 0x01, 0x03, 0x00, 0x03, 0x03, 0x80, 0x1E, 0xA0, 0x00, 0x03, 0x06,
+ 0x80, 0x1E, 0xA1, 0x00, 0x03, 0x06, 0x80, 0x00, 0x45, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x65, 0x00, 0x03, 0x23, 0x80, 0x00, 0x45, 0x00, 0x03, 0x09,
+ 0x80, 0x00, 0x65, 0x00, 0x03, 0x09, 0x80, 0x00, 0x45, 0x00, 0x03, 0x03,
+ 0x80, 0x00, 0x65, 0x00, 0x03, 0x03, 0x80, 0x00, 0xCA, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0xEA, 0x00, 0x03, 0x01, 0x80, 0x00, 0xCA, 0x00, 0x03, 0x00,
+ 0x80, 0x00, 0xEA, 0x00, 0x03, 0x00, 0x80, 0x00, 0xCA, 0x00, 0x03, 0x09,
+ 0x80, 0x00, 0xEA, 0x00, 0x03, 0x09, 0x80, 0x00, 0xCA, 0x00, 0x03, 0x03,
+ 0x80, 0x00, 0xEA, 0x00, 0x03, 0x03, 0x80, 0x1E, 0xB8, 0x00, 0x03, 0x02,
+ 0x80, 0x1E, 0xB9, 0x00, 0x03, 0x02, 0x80, 0x00, 0x49, 0x00, 0x03, 0x09,
+ 0x80, 0x00, 0x69, 0x00, 0x03, 0x09, 0x80, 0x00, 0x49, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x69, 0x00, 0x03, 0x23, 0x80, 0x00, 0x4F, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x6F, 0x00, 0x03, 0x23, 0x80, 0x00, 0x4F, 0x00, 0x03, 0x09,
+ 0x80, 0x00, 0x6F, 0x00, 0x03, 0x09, 0x80, 0x00, 0xD4, 0x00, 0x03, 0x01,
+ 0x80, 0x00, 0xF4, 0x00, 0x03, 0x01, 0x80, 0x00, 0xD4, 0x00, 0x03, 0x00,
+ 0x80, 0x00, 0xF4, 0x00, 0x03, 0x00, 0x80, 0x00, 0xD4, 0x00, 0x03, 0x09,
+ 0x80, 0x00, 0xF4, 0x00, 0x03, 0x09, 0x80, 0x00, 0xD4, 0x00, 0x03, 0x03,
+ 0x80, 0x00, 0xF4, 0x00, 0x03, 0x03, 0x80, 0x1E, 0xCC, 0x00, 0x03, 0x02,
+ 0x80, 0x1E, 0xCD, 0x00, 0x03, 0x02, 0x80, 0x01, 0xA0, 0x00, 0x03, 0x01,
+ 0x80, 0x01, 0xA1, 0x00, 0x03, 0x01, 0x80, 0x01, 0xA0, 0x00, 0x03, 0x00,
+ 0x80, 0x01, 0xA1, 0x00, 0x03, 0x00, 0x80, 0x01, 0xA0, 0x00, 0x03, 0x09,
+ 0x80, 0x01, 0xA1, 0x00, 0x03, 0x09, 0x80, 0x01, 0xA0, 0x00, 0x03, 0x03,
+ 0x80, 0x01, 0xA1, 0x00, 0x03, 0x03, 0x80, 0x01, 0xA0, 0x00, 0x03, 0x23,
+ 0x80, 0x01, 0xA1, 0x00, 0x03, 0x23, 0x80, 0x00, 0x55, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x75, 0x00, 0x03, 0x23, 0x80, 0x00, 0x55, 0x00, 0x03, 0x09,
+ 0x80, 0x00, 0x75, 0x00, 0x03, 0x09, 0x80, 0x01, 0xAF, 0x00, 0x03, 0x01,
+ 0x80, 0x01, 0xB0, 0x00, 0x03, 0x01, 0x80, 0x01, 0xAF, 0x00, 0x03, 0x00,
+ 0x80, 0x01, 0xB0, 0x00, 0x03, 0x00, 0x80, 0x01, 0xAF, 0x00, 0x03, 0x09,
+ 0x80, 0x01, 0xB0, 0x00, 0x03, 0x09, 0x80, 0x01, 0xAF, 0x00, 0x03, 0x03,
+ 0x80, 0x01, 0xB0, 0x00, 0x03, 0x03, 0x80, 0x01, 0xAF, 0x00, 0x03, 0x23,
+ 0x80, 0x01, 0xB0, 0x00, 0x03, 0x23, 0x80, 0x00, 0x59, 0x00, 0x03, 0x00,
+ 0x80, 0x00, 0x79, 0x00, 0x03, 0x00, 0x80, 0x00, 0x59, 0x00, 0x03, 0x23,
+ 0x80, 0x00, 0x79, 0x00, 0x03, 0x23, 0x80, 0x00, 0x59, 0x00, 0x03, 0x09,
+ 0x80, 0x00, 0x79, 0x00, 0x03, 0x09, 0x80, 0x00, 0x59, 0x00, 0x03, 0x03,
+ 0x80, 0x00, 0x79, 0x00, 0x03, 0x03, 0x80, 0x03, 0xB1, 0x00, 0x03, 0x13,
+ 0x80, 0x03, 0xB1, 0x00, 0x03, 0x14, 0x80, 0x1F, 0x00, 0x00, 0x03, 0x00,
+ 0x80, 0x1F, 0x01, 0x00, 0x03, 0x00, 0x80, 0x1F, 0x00, 0x00, 0x03, 0x01,
+ 0x80, 0x1F, 0x01, 0x00, 0x03, 0x01, 0x80, 0x1F, 0x00, 0x00, 0x03, 0x42,
+ 0x80, 0x1F, 0x01, 0x00, 0x03, 0x42, 0x80, 0x03, 0x91, 0x00, 0x03, 0x13,
+ 0x80, 0x03, 0x91, 0x00, 0x03, 0x14, 0x80, 0x1F, 0x08, 0x00, 0x03, 0x00,
+ 0x80, 0x1F, 0x09, 0x00, 0x03, 0x00, 0x80, 0x1F, 0x08, 0x00, 0x03, 0x01,
+ 0x80, 0x1F, 0x09, 0x00, 0x03, 0x01, 0x80, 0x1F, 0x08, 0x00, 0x03, 0x42,
+ 0x80, 0x1F, 0x09, 0x00, 0x03, 0x42, 0x80, 0x03, 0xB5, 0x00, 0x03, 0x13,
+ 0x80, 0x03, 0xB5, 0x00, 0x03, 0x14, 0x80, 0x1F, 0x10, 0x00, 0x03, 0x00,
+ 0x80, 0x1F, 0x11, 0x00, 0x03, 0x00, 0x80, 0x1F, 0x10, 0x00, 0x03, 0x01,
+ 0x80, 0x1F, 0x11, 0x00, 0x03, 0x01, 0x80, 0x03, 0x95, 0x00, 0x03, 0x13,
+ 0x80, 0x03, 0x95, 0x00, 0x03, 0x14, 0x80, 0x1F, 0x18, 0x00, 0x03, 0x00,
+ 0x80, 0x1F, 0x19, 0x00, 0x03, 0x00, 0x80, 0x1F, 0x18, 0x00, 0x03, 0x01,
+ 0x80, 0x1F, 0x19, 0x00, 0x03, 0x01, 0x80, 0x03, 0xB7, 0x00, 0x03, 0x13,
+ 0x80, 0x03, 0xB7, 0x00, 0x03, 0x14, 0x80, 0x1F, 0x20, 0x00, 0x03, 0x00,
+ 0x80, 0x1F, 0x21, 0x00, 0x03, 0x00, 0x80, 0x1F, 0x20, 0x00, 0x03, 0x01,
+ 0x80, 0x1F, 0x21, 0x00, 0x03, 0x01, 0x80, 0x1F, 0x20, 0x00, 0x03, 0x42,
+ 0x80, 0x1F, 0x21, 0x00, 0x03, 0x42, 0x80, 0x03, 0x97, 0x00, 0x03, 0x13,
+ 0x80, 0x03, 0x97, 0x00, 0x03, 0x14, 0x80, 0x1F, 0x28, 0x00, 0x03, 0x00,
+ 0x80, 0x1F, 0x29, 0x00, 0x03, 0x00, 0x80, 0x1F, 0x28, 0x00, 0x03, 0x01,
+ 0x80, 0x1F, 0x29, 0x00, 0x03, 0x01, 0x80, 0x1F, 0x28, 0x00, 0x03, 0x42,
+ 0x80, 0x1F, 0x29, 0x00, 0x03, 0x42, 0x80, 0x03, 0xB9, 0x00, 0x03, 0x13,
+ 0x80, 0x03, 0xB9, 0x00, 0x03, 0x14, 0x80, 0x1F, 0x30, 0x00, 0x03, 0x00,
+ 0x80, 0x1F, 0x31, 0x00, 0x03, 0x00, 0x80, 0x1F, 0x30, 0x00, 0x03, 0x01,
+ 0x80, 0x1F, 0x31, 0x00, 0x03, 0x01, 0x80, 0x1F, 0x30, 0x00, 0x03, 0x42,
+ 0x80, 0x1F, 0x31, 0x00, 0x03, 0x42, 0x80, 0x03, 0x99, 0x00, 0x03, 0x13,
+ 0x80, 0x03, 0x99, 0x00, 0x03, 0x14, 0x80, 0x1F, 0x38, 0x00, 0x03, 0x00,
+ 0x80, 0x1F, 0x39, 0x00, 0x03, 0x00, 0x80, 0x1F, 0x38, 0x00, 0x03, 0x01,
+ 0x80, 0x1F, 0x39, 0x00, 0x03, 0x01, 0x80, 0x1F, 0x38, 0x00, 0x03, 0x42,
+ 0x80, 0x1F, 0x39, 0x00, 0x03, 0x42, 0x80, 0x03, 0xBF, 0x00, 0x03, 0x13,
+ 0x80, 0x03, 0xBF, 0x00, 0x03, 0x14, 0x80, 0x1F, 0x40, 0x00, 0x03, 0x00,
+ 0x80, 0x1F, 0x41, 0x00, 0x03, 0x00, 0x80, 0x1F, 0x40, 0x00, 0x03, 0x01,
+ 0x80, 0x1F, 0x41, 0x00, 0x03, 0x01, 0x80, 0x03, 0x9F, 0x00, 0x03, 0x13,
+ 0x80, 0x03, 0x9F, 0x00, 0x03, 0x14, 0x80, 0x1F, 0x48, 0x00, 0x03, 0x00,
+ 0x80, 0x1F, 0x49, 0x00, 0x03, 0x00, 0x80, 0x1F, 0x48, 0x00, 0x03, 0x01,
+ 0x80, 0x1F, 0x49, 0x00, 0x03, 0x01, 0x80, 0x03, 0xC5, 0x00, 0x03, 0x13,
+ 0x80, 0x03, 0xC5, 0x00, 0x03, 0x14, 0x80, 0x1F, 0x50, 0x00, 0x03, 0x00,
+ 0x80, 0x1F, 0x51, 0x00, 0x03, 0x00, 0x80, 0x1F, 0x50, 0x00, 0x03, 0x01,
+ 0x80, 0x1F, 0x51, 0x00, 0x03, 0x01, 0x80, 0x1F, 0x50, 0x00, 0x03, 0x42,
+ 0x80, 0x1F, 0x51, 0x00, 0x03, 0x42, 0x80, 0x03, 0xA5, 0x00, 0x03, 0x14,
+ 0x80, 0x1F, 0x59, 0x00, 0x03, 0x00, 0x80, 0x1F, 0x59, 0x00, 0x03, 0x01,
+ 0x80, 0x1F, 0x59, 0x00, 0x03, 0x42, 0x80, 0x03, 0xC9, 0x00, 0x03, 0x13,
+ 0x80, 0x03, 0xC9, 0x00, 0x03, 0x14, 0x80, 0x1F, 0x60, 0x00, 0x03, 0x00,
+ 0x80, 0x1F, 0x61, 0x00, 0x03, 0x00, 0x80, 0x1F, 0x60, 0x00, 0x03, 0x01,
+ 0x80, 0x1F, 0x61, 0x00, 0x03, 0x01, 0x80, 0x1F, 0x60, 0x00, 0x03, 0x42,
+ 0x80, 0x1F, 0x61, 0x00, 0x03, 0x42, 0x80, 0x03, 0xA9, 0x00, 0x03, 0x13,
+ 0x80, 0x03, 0xA9, 0x00, 0x03, 0x14, 0x80, 0x1F, 0x68, 0x00, 0x03, 0x00,
+ 0x80, 0x1F, 0x69, 0x00, 0x03, 0x00, 0x80, 0x1F, 0x68, 0x00, 0x03, 0x01,
+ 0x80, 0x1F, 0x69, 0x00, 0x03, 0x01, 0x80, 0x1F, 0x68, 0x00, 0x03, 0x42,
+ 0x80, 0x1F, 0x69, 0x00, 0x03, 0x42, 0x80, 0x03, 0xB1, 0x00, 0x03, 0x00,
+ 0x00, 0x03, 0xAC, 0x80, 0x03, 0xB5, 0x00, 0x03, 0x00, 0x00, 0x03, 0xAD,
+ 0x80, 0x03, 0xB7, 0x00, 0x03, 0x00, 0x00, 0x03, 0xAE, 0x80, 0x03, 0xB9,
+ 0x00, 0x03, 0x00, 0x00, 0x03, 0xAF, 0x80, 0x03, 0xBF, 0x00, 0x03, 0x00,
+ 0x00, 0x03, 0xCC, 0x80, 0x03, 0xC5, 0x00, 0x03, 0x00, 0x00, 0x03, 0xCD,
+ 0x80, 0x03, 0xC9, 0x00, 0x03, 0x00, 0x00, 0x03, 0xCE, 0x80, 0x1F, 0x00,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x01, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x02,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x03, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x04,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x05, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x06,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x07, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x08,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x09, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x0A,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x0B, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x0C,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x0D, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x0E,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x0F, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x20,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x21, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x22,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x23, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x24,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x25, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x26,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x27, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x28,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x29, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x2A,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x2B, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x2C,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x2D, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x2E,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x2F, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x60,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x61, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x62,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x63, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x64,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x65, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x66,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x67, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x68,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x69, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x6A,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x6B, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x6C,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x6D, 0x00, 0x03, 0x45, 0x80, 0x1F, 0x6E,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0x6F, 0x00, 0x03, 0x45, 0x80, 0x03, 0xB1,
+ 0x00, 0x03, 0x06, 0x80, 0x03, 0xB1, 0x00, 0x03, 0x04, 0x80, 0x1F, 0x70,
+ 0x00, 0x03, 0x45, 0x80, 0x03, 0xB1, 0x00, 0x03, 0x45, 0x80, 0x03, 0xAC,
+ 0x00, 0x03, 0x45, 0x80, 0x03, 0xB1, 0x00, 0x03, 0x42, 0x80, 0x1F, 0xB6,
+ 0x00, 0x03, 0x45, 0x80, 0x03, 0x91, 0x00, 0x03, 0x06, 0x80, 0x03, 0x91,
+ 0x00, 0x03, 0x04, 0x80, 0x03, 0x91, 0x00, 0x03, 0x00, 0x00, 0x03, 0x86,
+ 0x80, 0x03, 0x91, 0x00, 0x03, 0x45, 0xC0, 0x00, 0x20, 0x00, 0x03, 0x13,
+ 0x00, 0x03, 0xB9, 0xC0, 0x00, 0x20, 0x00, 0x03, 0x13, 0xC0, 0x00, 0x20,
+ 0x00, 0x03, 0x42, 0x80, 0x00, 0xA8, 0x00, 0x03, 0x42, 0x80, 0x1F, 0x74,
+ 0x00, 0x03, 0x45, 0x80, 0x03, 0xB7, 0x00, 0x03, 0x45, 0x80, 0x03, 0xAE,
+ 0x00, 0x03, 0x45, 0x80, 0x03, 0xB7, 0x00, 0x03, 0x42, 0x80, 0x1F, 0xC6,
+ 0x00, 0x03, 0x45, 0x80, 0x03, 0x95, 0x00, 0x03, 0x00, 0x00, 0x03, 0x88,
+ 0x80, 0x03, 0x97, 0x00, 0x03, 0x00, 0x00, 0x03, 0x89, 0x80, 0x03, 0x97,
+ 0x00, 0x03, 0x45, 0x80, 0x1F, 0xBF, 0x00, 0x03, 0x00, 0x80, 0x1F, 0xBF,
+ 0x00, 0x03, 0x01, 0x80, 0x1F, 0xBF, 0x00, 0x03, 0x42, 0x80, 0x03, 0xB9,
+ 0x00, 0x03, 0x06, 0x80, 0x03, 0xB9, 0x00, 0x03, 0x04, 0x80, 0x03, 0xCA,
+ 0x00, 0x03, 0x00, 0x00, 0x03, 0x90, 0x80, 0x03, 0xB9, 0x00, 0x03, 0x42,
+ 0x80, 0x03, 0xCA, 0x00, 0x03, 0x42, 0x80, 0x03, 0x99, 0x00, 0x03, 0x06,
+ 0x80, 0x03, 0x99, 0x00, 0x03, 0x04, 0x80, 0x03, 0x99, 0x00, 0x03, 0x00,
+ 0x00, 0x03, 0x8A, 0x80, 0x1F, 0xFE, 0x00, 0x03, 0x00, 0x80, 0x1F, 0xFE,
+ 0x00, 0x03, 0x01, 0x80, 0x1F, 0xFE, 0x00, 0x03, 0x42, 0x80, 0x03, 0xC5,
+ 0x00, 0x03, 0x06, 0x80, 0x03, 0xC5, 0x00, 0x03, 0x04, 0x80, 0x03, 0xCB,
+ 0x00, 0x03, 0x00, 0x00, 0x03, 0xB0, 0x80, 0x03, 0xC1, 0x00, 0x03, 0x13,
+ 0x80, 0x03, 0xC1, 0x00, 0x03, 0x14, 0x80, 0x03, 0xC5, 0x00, 0x03, 0x42,
+ 0x80, 0x03, 0xCB, 0x00, 0x03, 0x42, 0x80, 0x03, 0xA5, 0x00, 0x03, 0x06,
+ 0x80, 0x03, 0xA5, 0x00, 0x03, 0x04, 0x80, 0x03, 0xA5, 0x00, 0x03, 0x00,
+ 0x00, 0x03, 0x8E, 0x80, 0x03, 0xA1, 0x00, 0x03, 0x14, 0x80, 0x00, 0xA8,
+ 0x00, 0x03, 0x00, 0x00, 0x03, 0x85, 0x00, 0x00, 0x60, 0x80, 0x1F, 0x7C,
+ 0x00, 0x03, 0x45, 0x80, 0x03, 0xC9, 0x00, 0x03, 0x45, 0x80, 0x03, 0xCE,
+ 0x00, 0x03, 0x45, 0x80, 0x03, 0xC9, 0x00, 0x03, 0x42, 0x80, 0x1F, 0xF6,
+ 0x00, 0x03, 0x45, 0x80, 0x03, 0x9F, 0x00, 0x03, 0x00, 0x00, 0x03, 0x8C,
+ 0x80, 0x03, 0xA9, 0x00, 0x03, 0x00, 0x00, 0x03, 0x8F, 0x80, 0x03, 0xA9,
+ 0x00, 0x03, 0x45, 0x00, 0x00, 0xB4, 0xC0, 0x00, 0x20, 0x00, 0x03, 0x14,
+ 0x00, 0x20, 0x02, 0x00, 0x20, 0x03, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20,
+ 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x08, 0x00, 0x20,
+ 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x08, 0x20, 0x10,
+ 0xC0, 0x00, 0x20, 0x00, 0x03, 0x33, 0x40, 0x00, 0x2E, 0xC0, 0x00, 0x2E,
+ 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x2E, 0x80, 0x00, 0x2E, 0x00, 0x00, 0x2E,
+ 0x08, 0x00, 0x20, 0xC0, 0x20, 0x32, 0x00, 0x20, 0x32, 0xC0, 0x20, 0x32,
+ 0x80, 0x20, 0x32, 0x00, 0x20, 0x32, 0xC0, 0x20, 0x35, 0x00, 0x20, 0x35,
+ 0xC0, 0x20, 0x35, 0x80, 0x20, 0x35, 0x00, 0x20, 0x35, 0xC0, 0x00, 0x21,
+ 0x00, 0x00, 0x21, 0xC0, 0x00, 0x20, 0x00, 0x03, 0x05, 0xC0, 0x00, 0x3F,
+ 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x21, 0xC0, 0x00, 0x21,
+ 0x00, 0x00, 0x3F, 0xC0, 0x20, 0x32, 0x80, 0x20, 0x32, 0x80, 0x20, 0x32,
+ 0x00, 0x20, 0x32, 0x40, 0x00, 0x20, 0x20, 0x00, 0x30, 0x20, 0x00, 0x69,
+ 0x20, 0x00, 0x34, 0x20, 0x00, 0x35, 0x20, 0x00, 0x36, 0x20, 0x00, 0x37,
+ 0x20, 0x00, 0x38, 0x20, 0x00, 0x39, 0x20, 0x00, 0x2B, 0x20, 0x22, 0x12,
+ 0x20, 0x00, 0x3D, 0x20, 0x00, 0x28, 0x20, 0x00, 0x29, 0x20, 0x00, 0x6E,
+ 0x24, 0x00, 0x30, 0x24, 0x00, 0x31, 0x24, 0x00, 0x32, 0x24, 0x00, 0x33,
+ 0x24, 0x00, 0x34, 0x24, 0x00, 0x35, 0x24, 0x00, 0x36, 0x24, 0x00, 0x37,
+ 0x24, 0x00, 0x38, 0x24, 0x00, 0x39, 0x24, 0x00, 0x2B, 0x24, 0x22, 0x12,
+ 0x24, 0x00, 0x3D, 0x24, 0x00, 0x28, 0x24, 0x00, 0x29, 0x24, 0x00, 0x61,
+ 0x24, 0x00, 0x65, 0x24, 0x00, 0x6F, 0x24, 0x00, 0x78, 0x24, 0x02, 0x59,
+ 0xC0, 0x00, 0x52, 0x00, 0x00, 0x73, 0xC0, 0x00, 0x61, 0x80, 0x00, 0x2F,
+ 0x00, 0x00, 0x63, 0xC0, 0x00, 0x61, 0x80, 0x00, 0x2F, 0x00, 0x00, 0x73,
+ 0x04, 0x00, 0x43, 0xC0, 0x00, 0xB0, 0x00, 0x00, 0x43, 0xC0, 0x00, 0x63,
+ 0x80, 0x00, 0x2F, 0x00, 0x00, 0x6F, 0xC0, 0x00, 0x63, 0x80, 0x00, 0x2F,
+ 0x00, 0x00, 0x75, 0x40, 0x01, 0x90, 0xC0, 0x00, 0xB0, 0x00, 0x00, 0x46,
+ 0x04, 0x00, 0x67, 0x04, 0x00, 0x48, 0x04, 0x00, 0x48, 0x04, 0x00, 0x48,
+ 0x04, 0x00, 0x68, 0x04, 0x01, 0x27, 0x04, 0x00, 0x49, 0x04, 0x00, 0x49,
+ 0x04, 0x00, 0x4C, 0x04, 0x00, 0x6C, 0x04, 0x00, 0x4E, 0xC0, 0x00, 0x4E,
+ 0x00, 0x00, 0x6F, 0x04, 0x00, 0x50, 0x04, 0x00, 0x51, 0x04, 0x00, 0x52,
+ 0x04, 0x00, 0x52, 0x04, 0x00, 0x52, 0xA0, 0x00, 0x53, 0x00, 0x00, 0x4D,
+ 0xC0, 0x00, 0x54, 0x80, 0x00, 0x45, 0x00, 0x00, 0x4C, 0xA0, 0x00, 0x54,
+ 0x00, 0x00, 0x4D, 0x04, 0x00, 0x5A, 0x00, 0x03, 0xA9, 0x04, 0x00, 0x5A,
+ 0x00, 0x00, 0x4B, 0x00, 0x00, 0xC5, 0x04, 0x00, 0x42, 0x04, 0x00, 0x43,
+ 0x04, 0x00, 0x65, 0x04, 0x00, 0x45, 0x04, 0x00, 0x46, 0x04, 0x00, 0x4D,
+ 0x04, 0x00, 0x6F, 0x40, 0x05, 0xD0, 0x40, 0x05, 0xD1, 0x40, 0x05, 0xD2,
+ 0x40, 0x05, 0xD3, 0x04, 0x00, 0x69, 0xC0, 0x00, 0x46, 0x80, 0x00, 0x41,
+ 0x00, 0x00, 0x58, 0x04, 0x03, 0xC0, 0x04, 0x03, 0xB3, 0x04, 0x03, 0x93,
+ 0x04, 0x03, 0xA0, 0x04, 0x22, 0x11, 0x04, 0x00, 0x44, 0x04, 0x00, 0x64,
+ 0x04, 0x00, 0x65, 0x04, 0x00, 0x69, 0x04, 0x00, 0x6A, 0xBC, 0x00, 0x31,
+ 0x80, 0x20, 0x44, 0x00, 0x00, 0x33, 0xBC, 0x00, 0x32, 0x80, 0x20, 0x44,
+ 0x00, 0x00, 0x33, 0xBC, 0x00, 0x31, 0x80, 0x20, 0x44, 0x00, 0x00, 0x35,
+ 0xBC, 0x00, 0x32, 0x80, 0x20, 0x44, 0x00, 0x00, 0x35, 0xBC, 0x00, 0x33,
+ 0x80, 0x20, 0x44, 0x00, 0x00, 0x35, 0xBC, 0x00, 0x34, 0x80, 0x20, 0x44,
+ 0x00, 0x00, 0x35, 0xBC, 0x00, 0x31, 0x80, 0x20, 0x44, 0x00, 0x00, 0x36,
+ 0xBC, 0x00, 0x35, 0x80, 0x20, 0x44, 0x00, 0x00, 0x36, 0xBC, 0x00, 0x31,
+ 0x80, 0x20, 0x44, 0x00, 0x00, 0x38, 0xBC, 0x00, 0x33, 0x80, 0x20, 0x44,
+ 0x00, 0x00, 0x38, 0xBC, 0x00, 0x35, 0x80, 0x20, 0x44, 0x00, 0x00, 0x38,
+ 0xBC, 0x00, 0x37, 0x80, 0x20, 0x44, 0x00, 0x00, 0x38, 0xBC, 0x00, 0x31,
+ 0x00, 0x20, 0x44, 0x40, 0x00, 0x49, 0xC0, 0x00, 0x49, 0x00, 0x00, 0x49,
+ 0xC0, 0x00, 0x49, 0x80, 0x00, 0x49, 0x00, 0x00, 0x49, 0xC0, 0x00, 0x49,
+ 0x00, 0x00, 0x56, 0x40, 0x00, 0x56, 0xC0, 0x00, 0x56, 0x00, 0x00, 0x49,
+ 0xC0, 0x00, 0x56, 0x80, 0x00, 0x49, 0x00, 0x00, 0x49, 0xC0, 0x00, 0x56,
+ 0x80, 0x00, 0x49, 0x80, 0x00, 0x49, 0x00, 0x00, 0x49, 0xC0, 0x00, 0x49,
+ 0x00, 0x00, 0x58, 0x40, 0x00, 0x58, 0xC0, 0x00, 0x58, 0x00, 0x00, 0x49,
+ 0xC0, 0x00, 0x58, 0x80, 0x00, 0x49, 0x00, 0x00, 0x49, 0x40, 0x00, 0x4C,
+ 0x40, 0x00, 0x43, 0x40, 0x00, 0x44, 0x40, 0x00, 0x4D, 0x40, 0x00, 0x69,
+ 0xC0, 0x00, 0x69, 0x00, 0x00, 0x69, 0xC0, 0x00, 0x69, 0x80, 0x00, 0x69,
+ 0x00, 0x00, 0x69, 0xC0, 0x00, 0x69, 0x00, 0x00, 0x76, 0x40, 0x00, 0x76,
+ 0xC0, 0x00, 0x76, 0x00, 0x00, 0x69, 0xC0, 0x00, 0x76, 0x80, 0x00, 0x69,
+ 0x00, 0x00, 0x69, 0xC0, 0x00, 0x76, 0x80, 0x00, 0x69, 0x80, 0x00, 0x69,
+ 0x00, 0x00, 0x69, 0xC0, 0x00, 0x69, 0x00, 0x00, 0x78, 0x40, 0x00, 0x78,
+ 0xC0, 0x00, 0x78, 0x00, 0x00, 0x69, 0xC0, 0x00, 0x78, 0x80, 0x00, 0x69,
+ 0x00, 0x00, 0x69, 0x40, 0x00, 0x6C, 0x40, 0x00, 0x63, 0x40, 0x00, 0x64,
+ 0x40, 0x00, 0x6D, 0x80, 0x21, 0x90, 0x00, 0x03, 0x38, 0x80, 0x21, 0x92,
+ 0x00, 0x03, 0x38, 0x80, 0x21, 0x94, 0x00, 0x03, 0x38, 0x80, 0x21, 0xD0,
+ 0x00, 0x03, 0x38, 0x80, 0x21, 0xD4, 0x00, 0x03, 0x38, 0x80, 0x21, 0xD2,
+ 0x00, 0x03, 0x38, 0x80, 0x22, 0x03, 0x00, 0x03, 0x38, 0x80, 0x22, 0x08,
+ 0x00, 0x03, 0x38, 0x80, 0x22, 0x0B, 0x00, 0x03, 0x38, 0x80, 0x22, 0x23,
+ 0x00, 0x03, 0x38, 0x80, 0x22, 0x25, 0x00, 0x03, 0x38, 0xC0, 0x22, 0x2B,
+ 0x00, 0x22, 0x2B, 0xC0, 0x22, 0x2B, 0x80, 0x22, 0x2B, 0x00, 0x22, 0x2B,
+ 0xC0, 0x22, 0x2E, 0x00, 0x22, 0x2E, 0xC0, 0x22, 0x2E, 0x80, 0x22, 0x2E,
+ 0x00, 0x22, 0x2E, 0x80, 0x22, 0x3C, 0x00, 0x03, 0x38, 0x80, 0x22, 0x43,
+ 0x00, 0x03, 0x38, 0x80, 0x22, 0x45, 0x00, 0x03, 0x38, 0x80, 0x22, 0x48,
+ 0x00, 0x03, 0x38, 0x80, 0x00, 0x3D, 0x00, 0x03, 0x38, 0x80, 0x22, 0x61,
+ 0x00, 0x03, 0x38, 0x80, 0x22, 0x4D, 0x00, 0x03, 0x38, 0x80, 0x00, 0x3C,
+ 0x00, 0x03, 0x38, 0x80, 0x00, 0x3E, 0x00, 0x03, 0x38, 0x80, 0x22, 0x64,
+ 0x00, 0x03, 0x38, 0x80, 0x22, 0x65, 0x00, 0x03, 0x38, 0x80, 0x22, 0x72,
+ 0x00, 0x03, 0x38, 0x80, 0x22, 0x73, 0x00, 0x03, 0x38, 0x80, 0x22, 0x76,
+ 0x00, 0x03, 0x38, 0x80, 0x22, 0x77, 0x00, 0x03, 0x38, 0x80, 0x22, 0x7A,
+ 0x00, 0x03, 0x38, 0x80, 0x22, 0x7B, 0x00, 0x03, 0x38, 0x80, 0x22, 0x82,
+ 0x00, 0x03, 0x38, 0x80, 0x22, 0x83, 0x00, 0x03, 0x38, 0x80, 0x22, 0x86,
+ 0x00, 0x03, 0x38, 0x80, 0x22, 0x87, 0x00, 0x03, 0x38, 0x80, 0x22, 0xA2,
+ 0x00, 0x03, 0x38, 0x80, 0x22, 0xA8, 0x00, 0x03, 0x38, 0x80, 0x22, 0xA9,
+ 0x00, 0x03, 0x38, 0x80, 0x22, 0xAB, 0x00, 0x03, 0x38, 0x80, 0x22, 0x7C,
+ 0x00, 0x03, 0x38, 0x80, 0x22, 0x7D, 0x00, 0x03, 0x38, 0x80, 0x22, 0x91,
+ 0x00, 0x03, 0x38, 0x80, 0x22, 0x92, 0x00, 0x03, 0x38, 0x80, 0x22, 0xB2,
+ 0x00, 0x03, 0x38, 0x80, 0x22, 0xB3, 0x00, 0x03, 0x38, 0x80, 0x22, 0xB4,
+ 0x00, 0x03, 0x38, 0x80, 0x22, 0xB5, 0x00, 0x03, 0x38, 0x00, 0x30, 0x08,
+ 0x00, 0x30, 0x09, 0x1C, 0x00, 0x31, 0x1C, 0x00, 0x32, 0x1C, 0x00, 0x33,
+ 0x1C, 0x00, 0x34, 0x1C, 0x00, 0x35, 0x1C, 0x00, 0x36, 0x1C, 0x00, 0x37,
+ 0x1C, 0x00, 0x38, 0x1C, 0x00, 0x39, 0x9C, 0x00, 0x31, 0x00, 0x00, 0x30,
+ 0x9C, 0x00, 0x31, 0x00, 0x00, 0x31, 0x9C, 0x00, 0x31, 0x00, 0x00, 0x32,
+ 0x9C, 0x00, 0x31, 0x00, 0x00, 0x33, 0x9C, 0x00, 0x31, 0x00, 0x00, 0x34,
+ 0x9C, 0x00, 0x31, 0x00, 0x00, 0x35, 0x9C, 0x00, 0x31, 0x00, 0x00, 0x36,
+ 0x9C, 0x00, 0x31, 0x00, 0x00, 0x37, 0x9C, 0x00, 0x31, 0x00, 0x00, 0x38,
+ 0x9C, 0x00, 0x31, 0x00, 0x00, 0x39, 0x9C, 0x00, 0x32, 0x00, 0x00, 0x30,
+ 0xC0, 0x00, 0x28, 0x80, 0x00, 0x31, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x32, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x00, 0x33,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x00, 0x34, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x00, 0x35, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x36, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x00, 0x37,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x00, 0x38, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x00, 0x39, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x31, 0x80, 0x00, 0x30, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x31, 0x80, 0x00, 0x31, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x31, 0x80, 0x00, 0x32, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x31, 0x80, 0x00, 0x33, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x31, 0x80, 0x00, 0x34, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x31, 0x80, 0x00, 0x35, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x31, 0x80, 0x00, 0x36, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x31, 0x80, 0x00, 0x37, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x31, 0x80, 0x00, 0x38, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x31, 0x80, 0x00, 0x39, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x32, 0x80, 0x00, 0x30, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x31,
+ 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x32, 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x33,
+ 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x34, 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x35,
+ 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x36, 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x37,
+ 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x38, 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x39,
+ 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x30, 0x00, 0x00, 0x2E,
+ 0xC0, 0x00, 0x31, 0x80, 0x00, 0x31, 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x31,
+ 0x80, 0x00, 0x32, 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x33,
+ 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x34, 0x00, 0x00, 0x2E,
+ 0xC0, 0x00, 0x31, 0x80, 0x00, 0x35, 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x31,
+ 0x80, 0x00, 0x36, 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x37,
+ 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x38, 0x00, 0x00, 0x2E,
+ 0xC0, 0x00, 0x31, 0x80, 0x00, 0x39, 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x32,
+ 0x80, 0x00, 0x30, 0x00, 0x00, 0x2E, 0xC0, 0x00, 0x28, 0x80, 0x00, 0x61,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x00, 0x62, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x00, 0x63, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x64, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x00, 0x65,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x00, 0x66, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x00, 0x67, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x68, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x00, 0x69,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x00, 0x6A, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x00, 0x6B, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x6C, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x00, 0x6D,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x00, 0x6E, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x00, 0x6F, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x70, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x00, 0x71,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x00, 0x72, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x00, 0x73, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x74, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x00, 0x75,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x00, 0x76, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x00, 0x77, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x00, 0x78, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x00, 0x79,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x00, 0x7A, 0x00, 0x00, 0x29,
+ 0x1C, 0x00, 0x41, 0x1C, 0x00, 0x42, 0x1C, 0x00, 0x43, 0x1C, 0x00, 0x44,
+ 0x1C, 0x00, 0x45, 0x1C, 0x00, 0x46, 0x1C, 0x00, 0x47, 0x1C, 0x00, 0x48,
+ 0x1C, 0x00, 0x49, 0x1C, 0x00, 0x4A, 0x1C, 0x00, 0x4B, 0x1C, 0x00, 0x4C,
+ 0x1C, 0x00, 0x4D, 0x1C, 0x00, 0x4E, 0x1C, 0x00, 0x4F, 0x1C, 0x00, 0x50,
+ 0x1C, 0x00, 0x51, 0x1C, 0x00, 0x52, 0x1C, 0x00, 0x53, 0x1C, 0x00, 0x54,
+ 0x1C, 0x00, 0x55, 0x1C, 0x00, 0x56, 0x1C, 0x00, 0x57, 0x1C, 0x00, 0x58,
+ 0x1C, 0x00, 0x59, 0x1C, 0x00, 0x5A, 0x1C, 0x00, 0x61, 0x1C, 0x00, 0x62,
+ 0x1C, 0x00, 0x63, 0x1C, 0x00, 0x64, 0x1C, 0x00, 0x65, 0x1C, 0x00, 0x66,
+ 0x1C, 0x00, 0x67, 0x1C, 0x00, 0x68, 0x1C, 0x00, 0x69, 0x1C, 0x00, 0x6A,
+ 0x1C, 0x00, 0x6B, 0x1C, 0x00, 0x6C, 0x1C, 0x00, 0x6D, 0x1C, 0x00, 0x6E,
+ 0x1C, 0x00, 0x6F, 0x1C, 0x00, 0x70, 0x1C, 0x00, 0x71, 0x1C, 0x00, 0x72,
+ 0x1C, 0x00, 0x73, 0x1C, 0x00, 0x74, 0x1C, 0x00, 0x75, 0x1C, 0x00, 0x76,
+ 0x1C, 0x00, 0x77, 0x1C, 0x00, 0x78, 0x1C, 0x00, 0x79, 0x1C, 0x00, 0x7A,
+ 0x1C, 0x00, 0x30, 0xC0, 0x22, 0x2B, 0x80, 0x22, 0x2B, 0x80, 0x22, 0x2B,
+ 0x00, 0x22, 0x2B, 0xC0, 0x00, 0x3A, 0x80, 0x00, 0x3A, 0x00, 0x00, 0x3D,
+ 0xC0, 0x00, 0x3D, 0x00, 0x00, 0x3D, 0xC0, 0x00, 0x3D, 0x80, 0x00, 0x3D,
+ 0x00, 0x00, 0x3D, 0x80, 0x2A, 0xDD, 0x00, 0x03, 0x38, 0x24, 0x00, 0x6A,
+ 0x20, 0x00, 0x56, 0x20, 0x2D, 0x61, 0x40, 0x6B, 0xCD, 0x40, 0x9F, 0x9F,
+ 0x40, 0x4E, 0x00, 0x40, 0x4E, 0x28, 0x40, 0x4E, 0x36, 0x40, 0x4E, 0x3F,
+ 0x40, 0x4E, 0x59, 0x40, 0x4E, 0x85, 0x40, 0x4E, 0x8C, 0x40, 0x4E, 0xA0,
+ 0x40, 0x4E, 0xBA, 0x40, 0x51, 0x3F, 0x40, 0x51, 0x65, 0x40, 0x51, 0x6B,
+ 0x40, 0x51, 0x82, 0x40, 0x51, 0x96, 0x40, 0x51, 0xAB, 0x40, 0x51, 0xE0,
+ 0x40, 0x51, 0xF5, 0x40, 0x52, 0x00, 0x40, 0x52, 0x9B, 0x40, 0x52, 0xF9,
+ 0x40, 0x53, 0x15, 0x40, 0x53, 0x1A, 0x40, 0x53, 0x38, 0x40, 0x53, 0x41,
+ 0x40, 0x53, 0x5C, 0x40, 0x53, 0x69, 0x40, 0x53, 0x82, 0x40, 0x53, 0xB6,
+ 0x40, 0x53, 0xC8, 0x40, 0x53, 0xE3, 0x40, 0x56, 0xD7, 0x40, 0x57, 0x1F,
+ 0x40, 0x58, 0xEB, 0x40, 0x59, 0x02, 0x40, 0x59, 0x0A, 0x40, 0x59, 0x15,
+ 0x40, 0x59, 0x27, 0x40, 0x59, 0x73, 0x40, 0x5B, 0x50, 0x40, 0x5B, 0x80,
+ 0x40, 0x5B, 0xF8, 0x40, 0x5C, 0x0F, 0x40, 0x5C, 0x22, 0x40, 0x5C, 0x38,
+ 0x40, 0x5C, 0x6E, 0x40, 0x5C, 0x71, 0x40, 0x5D, 0xDB, 0x40, 0x5D, 0xE5,
+ 0x40, 0x5D, 0xF1, 0x40, 0x5D, 0xFE, 0x40, 0x5E, 0x72, 0x40, 0x5E, 0x7A,
+ 0x40, 0x5E, 0x7F, 0x40, 0x5E, 0xF4, 0x40, 0x5E, 0xFE, 0x40, 0x5F, 0x0B,
+ 0x40, 0x5F, 0x13, 0x40, 0x5F, 0x50, 0x40, 0x5F, 0x61, 0x40, 0x5F, 0x73,
+ 0x40, 0x5F, 0xC3, 0x40, 0x62, 0x08, 0x40, 0x62, 0x36, 0x40, 0x62, 0x4B,
+ 0x40, 0x65, 0x2F, 0x40, 0x65, 0x34, 0x40, 0x65, 0x87, 0x40, 0x65, 0x97,
+ 0x40, 0x65, 0xA4, 0x40, 0x65, 0xB9, 0x40, 0x65, 0xE0, 0x40, 0x65, 0xE5,
+ 0x40, 0x66, 0xF0, 0x40, 0x67, 0x08, 0x40, 0x67, 0x28, 0x40, 0x6B, 0x20,
+ 0x40, 0x6B, 0x62, 0x40, 0x6B, 0x79, 0x40, 0x6B, 0xB3, 0x40, 0x6B, 0xCB,
+ 0x40, 0x6B, 0xD4, 0x40, 0x6B, 0xDB, 0x40, 0x6C, 0x0F, 0x40, 0x6C, 0x14,
+ 0x40, 0x6C, 0x34, 0x40, 0x70, 0x6B, 0x40, 0x72, 0x2A, 0x40, 0x72, 0x36,
+ 0x40, 0x72, 0x3B, 0x40, 0x72, 0x3F, 0x40, 0x72, 0x47, 0x40, 0x72, 0x59,
+ 0x40, 0x72, 0x5B, 0x40, 0x72, 0xAC, 0x40, 0x73, 0x84, 0x40, 0x73, 0x89,
+ 0x40, 0x74, 0xDC, 0x40, 0x74, 0xE6, 0x40, 0x75, 0x18, 0x40, 0x75, 0x1F,
+ 0x40, 0x75, 0x28, 0x40, 0x75, 0x30, 0x40, 0x75, 0x8B, 0x40, 0x75, 0x92,
+ 0x40, 0x76, 0x76, 0x40, 0x76, 0x7D, 0x40, 0x76, 0xAE, 0x40, 0x76, 0xBF,
+ 0x40, 0x76, 0xEE, 0x40, 0x77, 0xDB, 0x40, 0x77, 0xE2, 0x40, 0x77, 0xF3,
+ 0x40, 0x79, 0x3A, 0x40, 0x79, 0xB8, 0x40, 0x79, 0xBE, 0x40, 0x7A, 0x74,
+ 0x40, 0x7A, 0xCB, 0x40, 0x7A, 0xF9, 0x40, 0x7C, 0x73, 0x40, 0x7C, 0xF8,
+ 0x40, 0x7F, 0x36, 0x40, 0x7F, 0x51, 0x40, 0x7F, 0x8A, 0x40, 0x7F, 0xBD,
+ 0x40, 0x80, 0x01, 0x40, 0x80, 0x0C, 0x40, 0x80, 0x12, 0x40, 0x80, 0x33,
+ 0x40, 0x80, 0x7F, 0x40, 0x80, 0x89, 0x40, 0x81, 0xE3, 0x40, 0x81, 0xEA,
+ 0x40, 0x81, 0xF3, 0x40, 0x81, 0xFC, 0x40, 0x82, 0x0C, 0x40, 0x82, 0x1B,
+ 0x40, 0x82, 0x1F, 0x40, 0x82, 0x6E, 0x40, 0x82, 0x72, 0x40, 0x82, 0x78,
+ 0x40, 0x86, 0x4D, 0x40, 0x86, 0x6B, 0x40, 0x88, 0x40, 0x40, 0x88, 0x4C,
+ 0x40, 0x88, 0x63, 0x40, 0x89, 0x7E, 0x40, 0x89, 0x8B, 0x40, 0x89, 0xD2,
+ 0x40, 0x8A, 0x00, 0x40, 0x8C, 0x37, 0x40, 0x8C, 0x46, 0x40, 0x8C, 0x55,
+ 0x40, 0x8C, 0x78, 0x40, 0x8C, 0x9D, 0x40, 0x8D, 0x64, 0x40, 0x8D, 0x70,
+ 0x40, 0x8D, 0xB3, 0x40, 0x8E, 0xAB, 0x40, 0x8E, 0xCA, 0x40, 0x8F, 0x9B,
+ 0x40, 0x8F, 0xB0, 0x40, 0x8F, 0xB5, 0x40, 0x90, 0x91, 0x40, 0x91, 0x49,
+ 0x40, 0x91, 0xC6, 0x40, 0x91, 0xCC, 0x40, 0x91, 0xD1, 0x40, 0x95, 0x77,
+ 0x40, 0x95, 0x80, 0x40, 0x96, 0x1C, 0x40, 0x96, 0xB6, 0x40, 0x96, 0xB9,
+ 0x40, 0x96, 0xE8, 0x40, 0x97, 0x51, 0x40, 0x97, 0x5E, 0x40, 0x97, 0x62,
+ 0x40, 0x97, 0x69, 0x40, 0x97, 0xCB, 0x40, 0x97, 0xED, 0x40, 0x97, 0xF3,
+ 0x40, 0x98, 0x01, 0x40, 0x98, 0xA8, 0x40, 0x98, 0xDB, 0x40, 0x98, 0xDF,
+ 0x40, 0x99, 0x96, 0x40, 0x99, 0x99, 0x40, 0x99, 0xAC, 0x40, 0x9A, 0xA8,
+ 0x40, 0x9A, 0xD8, 0x40, 0x9A, 0xDF, 0x40, 0x9B, 0x25, 0x40, 0x9B, 0x2F,
+ 0x40, 0x9B, 0x32, 0x40, 0x9B, 0x3C, 0x40, 0x9B, 0x5A, 0x40, 0x9C, 0xE5,
+ 0x40, 0x9E, 0x75, 0x40, 0x9E, 0x7F, 0x40, 0x9E, 0xA5, 0x40, 0x9E, 0xBB,
+ 0x40, 0x9E, 0xC3, 0x40, 0x9E, 0xCD, 0x40, 0x9E, 0xD1, 0x40, 0x9E, 0xF9,
+ 0x40, 0x9E, 0xFD, 0x40, 0x9F, 0x0E, 0x40, 0x9F, 0x13, 0x40, 0x9F, 0x20,
+ 0x40, 0x9F, 0x3B, 0x40, 0x9F, 0x4A, 0x40, 0x9F, 0x52, 0x40, 0x9F, 0x8D,
+ 0x40, 0x9F, 0x9C, 0x40, 0x9F, 0xA0, 0x2C, 0x00, 0x20, 0x40, 0x30, 0x12,
+ 0x40, 0x53, 0x41, 0x40, 0x53, 0x44, 0x40, 0x53, 0x45, 0x80, 0x30, 0x4B,
+ 0x00, 0x30, 0x99, 0x80, 0x30, 0x4D, 0x00, 0x30, 0x99, 0x80, 0x30, 0x4F,
+ 0x00, 0x30, 0x99, 0x80, 0x30, 0x51, 0x00, 0x30, 0x99, 0x80, 0x30, 0x53,
+ 0x00, 0x30, 0x99, 0x80, 0x30, 0x55, 0x00, 0x30, 0x99, 0x80, 0x30, 0x57,
+ 0x00, 0x30, 0x99, 0x80, 0x30, 0x59, 0x00, 0x30, 0x99, 0x80, 0x30, 0x5B,
+ 0x00, 0x30, 0x99, 0x80, 0x30, 0x5D, 0x00, 0x30, 0x99, 0x80, 0x30, 0x5F,
+ 0x00, 0x30, 0x99, 0x80, 0x30, 0x61, 0x00, 0x30, 0x99, 0x80, 0x30, 0x64,
+ 0x00, 0x30, 0x99, 0x80, 0x30, 0x66, 0x00, 0x30, 0x99, 0x80, 0x30, 0x68,
+ 0x00, 0x30, 0x99, 0x80, 0x30, 0x6F, 0x00, 0x30, 0x99, 0x80, 0x30, 0x6F,
+ 0x00, 0x30, 0x9A, 0x80, 0x30, 0x72, 0x00, 0x30, 0x99, 0x80, 0x30, 0x72,
+ 0x00, 0x30, 0x9A, 0x80, 0x30, 0x75, 0x00, 0x30, 0x99, 0x80, 0x30, 0x75,
+ 0x00, 0x30, 0x9A, 0x80, 0x30, 0x78, 0x00, 0x30, 0x99, 0x80, 0x30, 0x78,
+ 0x00, 0x30, 0x9A, 0x80, 0x30, 0x7B, 0x00, 0x30, 0x99, 0x80, 0x30, 0x7B,
+ 0x00, 0x30, 0x9A, 0x80, 0x30, 0x46, 0x00, 0x30, 0x99, 0xC0, 0x00, 0x20,
+ 0x00, 0x30, 0x99, 0xC0, 0x00, 0x20, 0x00, 0x30, 0x9A, 0x80, 0x30, 0x9D,
+ 0x00, 0x30, 0x99, 0xA8, 0x30, 0x88, 0x00, 0x30, 0x8A, 0x80, 0x30, 0xAB,
+ 0x00, 0x30, 0x99, 0x80, 0x30, 0xAD, 0x00, 0x30, 0x99, 0x80, 0x30, 0xAF,
+ 0x00, 0x30, 0x99, 0x80, 0x30, 0xB1, 0x00, 0x30, 0x99, 0x80, 0x30, 0xB3,
+ 0x00, 0x30, 0x99, 0x80, 0x30, 0xB5, 0x00, 0x30, 0x99, 0x80, 0x30, 0xB7,
+ 0x00, 0x30, 0x99, 0x80, 0x30, 0xB9, 0x00, 0x30, 0x99, 0x80, 0x30, 0xBB,
+ 0x00, 0x30, 0x99, 0x80, 0x30, 0xBD, 0x00, 0x30, 0x99, 0x80, 0x30, 0xBF,
+ 0x00, 0x30, 0x99, 0x80, 0x30, 0xC1, 0x00, 0x30, 0x99, 0x80, 0x30, 0xC4,
+ 0x00, 0x30, 0x99, 0x80, 0x30, 0xC6, 0x00, 0x30, 0x99, 0x80, 0x30, 0xC8,
+ 0x00, 0x30, 0x99, 0x80, 0x30, 0xCF, 0x00, 0x30, 0x99, 0x80, 0x30, 0xCF,
+ 0x00, 0x30, 0x9A, 0x80, 0x30, 0xD2, 0x00, 0x30, 0x99, 0x80, 0x30, 0xD2,
+ 0x00, 0x30, 0x9A, 0x80, 0x30, 0xD5, 0x00, 0x30, 0x99, 0x80, 0x30, 0xD5,
+ 0x00, 0x30, 0x9A, 0x80, 0x30, 0xD8, 0x00, 0x30, 0x99, 0x80, 0x30, 0xD8,
+ 0x00, 0x30, 0x9A, 0x80, 0x30, 0xDB, 0x00, 0x30, 0x99, 0x80, 0x30, 0xDB,
+ 0x00, 0x30, 0x9A, 0x80, 0x30, 0xA6, 0x00, 0x30, 0x99, 0x80, 0x30, 0xEF,
+ 0x00, 0x30, 0x99, 0x80, 0x30, 0xF0, 0x00, 0x30, 0x99, 0x80, 0x30, 0xF1,
+ 0x00, 0x30, 0x99, 0x80, 0x30, 0xF2, 0x00, 0x30, 0x99, 0x80, 0x30, 0xFD,
+ 0x00, 0x30, 0x99, 0xA8, 0x30, 0xB3, 0x00, 0x30, 0xC8, 0x40, 0x11, 0x00,
+ 0x40, 0x11, 0x01, 0x40, 0x11, 0xAA, 0x40, 0x11, 0x02, 0x40, 0x11, 0xAC,
+ 0x40, 0x11, 0xAD, 0x40, 0x11, 0x03, 0x40, 0x11, 0x04, 0x40, 0x11, 0x05,
+ 0x40, 0x11, 0xB0, 0x40, 0x11, 0xB1, 0x40, 0x11, 0xB2, 0x40, 0x11, 0xB3,
+ 0x40, 0x11, 0xB4, 0x40, 0x11, 0xB5, 0x40, 0x11, 0x1A, 0x40, 0x11, 0x06,
+ 0x40, 0x11, 0x07, 0x40, 0x11, 0x08, 0x40, 0x11, 0x21, 0x40, 0x11, 0x09,
+ 0x40, 0x11, 0x0A, 0x40, 0x11, 0x0B, 0x40, 0x11, 0x0C, 0x40, 0x11, 0x0D,
+ 0x40, 0x11, 0x0E, 0x40, 0x11, 0x0F, 0x40, 0x11, 0x10, 0x40, 0x11, 0x11,
+ 0x40, 0x11, 0x12, 0x40, 0x11, 0x61, 0x40, 0x11, 0x62, 0x40, 0x11, 0x63,
+ 0x40, 0x11, 0x64, 0x40, 0x11, 0x65, 0x40, 0x11, 0x66, 0x40, 0x11, 0x67,
+ 0x40, 0x11, 0x68, 0x40, 0x11, 0x69, 0x40, 0x11, 0x6A, 0x40, 0x11, 0x6B,
+ 0x40, 0x11, 0x6C, 0x40, 0x11, 0x6D, 0x40, 0x11, 0x6E, 0x40, 0x11, 0x6F,
+ 0x40, 0x11, 0x70, 0x40, 0x11, 0x71, 0x40, 0x11, 0x72, 0x40, 0x11, 0x73,
+ 0x40, 0x11, 0x74, 0x40, 0x11, 0x75, 0x40, 0x11, 0x60, 0x40, 0x11, 0x14,
+ 0x40, 0x11, 0x15, 0x40, 0x11, 0xC7, 0x40, 0x11, 0xC8, 0x40, 0x11, 0xCC,
+ 0x40, 0x11, 0xCE, 0x40, 0x11, 0xD3, 0x40, 0x11, 0xD7, 0x40, 0x11, 0xD9,
+ 0x40, 0x11, 0x1C, 0x40, 0x11, 0xDD, 0x40, 0x11, 0xDF, 0x40, 0x11, 0x1D,
+ 0x40, 0x11, 0x1E, 0x40, 0x11, 0x20, 0x40, 0x11, 0x22, 0x40, 0x11, 0x23,
+ 0x40, 0x11, 0x27, 0x40, 0x11, 0x29, 0x40, 0x11, 0x2B, 0x40, 0x11, 0x2C,
+ 0x40, 0x11, 0x2D, 0x40, 0x11, 0x2E, 0x40, 0x11, 0x2F, 0x40, 0x11, 0x32,
+ 0x40, 0x11, 0x36, 0x40, 0x11, 0x40, 0x40, 0x11, 0x47, 0x40, 0x11, 0x4C,
+ 0x40, 0x11, 0xF1, 0x40, 0x11, 0xF2, 0x40, 0x11, 0x57, 0x40, 0x11, 0x58,
+ 0x40, 0x11, 0x59, 0x40, 0x11, 0x84, 0x40, 0x11, 0x85, 0x40, 0x11, 0x88,
+ 0x40, 0x11, 0x91, 0x40, 0x11, 0x92, 0x40, 0x11, 0x94, 0x40, 0x11, 0x9E,
+ 0x40, 0x11, 0xA1, 0x20, 0x4E, 0x00, 0x20, 0x4E, 0x8C, 0x20, 0x4E, 0x09,
+ 0x20, 0x56, 0xDB, 0x20, 0x4E, 0x0A, 0x20, 0x4E, 0x2D, 0x20, 0x4E, 0x0B,
+ 0x20, 0x75, 0x32, 0x20, 0x4E, 0x59, 0x20, 0x4E, 0x19, 0x20, 0x4E, 0x01,
+ 0x20, 0x59, 0x29, 0x20, 0x57, 0x30, 0x20, 0x4E, 0xBA, 0xC0, 0x00, 0x28,
+ 0x80, 0x11, 0x00, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x02,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x03, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x11, 0x05, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x11, 0x06, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x07,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x09, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x11, 0x0B, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x11, 0x0C, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x0E,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x0F, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x11, 0x10, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x11, 0x11, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x12,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x00, 0x80, 0x11, 0x61,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x02, 0x80, 0x11, 0x61,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x03, 0x80, 0x11, 0x61,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x05, 0x80, 0x11, 0x61,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x06, 0x80, 0x11, 0x61,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x07, 0x80, 0x11, 0x61,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x09, 0x80, 0x11, 0x61,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x0B, 0x80, 0x11, 0x61,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x0C, 0x80, 0x11, 0x61,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x0E, 0x80, 0x11, 0x61,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x0F, 0x80, 0x11, 0x61,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x10, 0x80, 0x11, 0x61,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x11, 0x80, 0x11, 0x61,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x12, 0x80, 0x11, 0x61,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x0C, 0x80, 0x11, 0x6E,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x11, 0x0B, 0x80, 0x11, 0x69,
+ 0x80, 0x11, 0x0C, 0x80, 0x11, 0x65, 0x80, 0x11, 0xAB, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x11, 0x0B, 0x80, 0x11, 0x69, 0x80, 0x11, 0x12,
+ 0x80, 0x11, 0x6E, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x4E, 0x00,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x4E, 0x8C, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x4E, 0x09, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x56, 0xDB, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x4E, 0x94,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x51, 0x6D, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x4E, 0x03, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x51, 0x6B, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x4E, 0x5D,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x53, 0x41, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x67, 0x08, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x70, 0x6B, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x6C, 0x34,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x67, 0x28, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x91, 0xD1, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x57, 0x1F, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x65, 0xE5,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x68, 0x2A, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x67, 0x09, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x79, 0x3E, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x54, 0x0D,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x72, 0x79, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x8C, 0xA1, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x79, 0x5D, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x52, 0xB4,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x4E, 0xE3, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x54, 0x7C, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x5B, 0x66, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x76, 0xE3,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x4F, 0x01, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x8C, 0xC7, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x53, 0x54, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x79, 0x6D,
+ 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28, 0x80, 0x4F, 0x11, 0x00, 0x00, 0x29,
+ 0xC0, 0x00, 0x28, 0x80, 0x81, 0xEA, 0x00, 0x00, 0x29, 0xC0, 0x00, 0x28,
+ 0x80, 0x81, 0xF3, 0x00, 0x00, 0x29, 0xB8, 0x00, 0x50, 0x80, 0x00, 0x54,
+ 0x00, 0x00, 0x45, 0x9C, 0x00, 0x32, 0x00, 0x00, 0x31, 0x9C, 0x00, 0x32,
+ 0x00, 0x00, 0x32, 0x9C, 0x00, 0x32, 0x00, 0x00, 0x33, 0x9C, 0x00, 0x32,
+ 0x00, 0x00, 0x34, 0x9C, 0x00, 0x32, 0x00, 0x00, 0x35, 0x9C, 0x00, 0x32,
+ 0x00, 0x00, 0x36, 0x9C, 0x00, 0x32, 0x00, 0x00, 0x37, 0x9C, 0x00, 0x32,
+ 0x00, 0x00, 0x38, 0x9C, 0x00, 0x32, 0x00, 0x00, 0x39, 0x9C, 0x00, 0x33,
+ 0x00, 0x00, 0x30, 0x9C, 0x00, 0x33, 0x00, 0x00, 0x31, 0x9C, 0x00, 0x33,
+ 0x00, 0x00, 0x32, 0x9C, 0x00, 0x33, 0x00, 0x00, 0x33, 0x9C, 0x00, 0x33,
+ 0x00, 0x00, 0x34, 0x9C, 0x00, 0x33, 0x00, 0x00, 0x35, 0x1C, 0x11, 0x00,
+ 0x1C, 0x11, 0x02, 0x1C, 0x11, 0x03, 0x1C, 0x11, 0x05, 0x1C, 0x11, 0x06,
+ 0x1C, 0x11, 0x07, 0x1C, 0x11, 0x09, 0x1C, 0x11, 0x0B, 0x1C, 0x11, 0x0C,
+ 0x1C, 0x11, 0x0E, 0x1C, 0x11, 0x0F, 0x1C, 0x11, 0x10, 0x1C, 0x11, 0x11,
+ 0x1C, 0x11, 0x12, 0x9C, 0x11, 0x00, 0x00, 0x11, 0x61, 0x9C, 0x11, 0x02,
+ 0x00, 0x11, 0x61, 0x9C, 0x11, 0x03, 0x00, 0x11, 0x61, 0x9C, 0x11, 0x05,
+ 0x00, 0x11, 0x61, 0x9C, 0x11, 0x06, 0x00, 0x11, 0x61, 0x9C, 0x11, 0x07,
+ 0x00, 0x11, 0x61, 0x9C, 0x11, 0x09, 0x00, 0x11, 0x61, 0x9C, 0x11, 0x0B,
+ 0x00, 0x11, 0x61, 0x9C, 0x11, 0x0C, 0x00, 0x11, 0x61, 0x9C, 0x11, 0x0E,
+ 0x00, 0x11, 0x61, 0x9C, 0x11, 0x0F, 0x00, 0x11, 0x61, 0x9C, 0x11, 0x10,
+ 0x00, 0x11, 0x61, 0x9C, 0x11, 0x11, 0x00, 0x11, 0x61, 0x9C, 0x11, 0x12,
+ 0x00, 0x11, 0x61, 0x9C, 0x11, 0x0E, 0x80, 0x11, 0x61, 0x80, 0x11, 0xB7,
+ 0x80, 0x11, 0x00, 0x00, 0x11, 0x69, 0x9C, 0x11, 0x0C, 0x80, 0x11, 0x6E,
+ 0x80, 0x11, 0x0B, 0x00, 0x11, 0x74, 0x9C, 0x11, 0x0B, 0x00, 0x11, 0x6E,
+ 0x1C, 0x4E, 0x00, 0x1C, 0x4E, 0x8C, 0x1C, 0x4E, 0x09, 0x1C, 0x56, 0xDB,
+ 0x1C, 0x4E, 0x94, 0x1C, 0x51, 0x6D, 0x1C, 0x4E, 0x03, 0x1C, 0x51, 0x6B,
+ 0x1C, 0x4E, 0x5D, 0x1C, 0x53, 0x41, 0x1C, 0x67, 0x08, 0x1C, 0x70, 0x6B,
+ 0x1C, 0x6C, 0x34, 0x1C, 0x67, 0x28, 0x1C, 0x91, 0xD1, 0x1C, 0x57, 0x1F,
+ 0x1C, 0x65, 0xE5, 0x1C, 0x68, 0x2A, 0x1C, 0x67, 0x09, 0x1C, 0x79, 0x3E,
+ 0x1C, 0x54, 0x0D, 0x1C, 0x72, 0x79, 0x1C, 0x8C, 0xA1, 0x1C, 0x79, 0x5D,
+ 0x1C, 0x52, 0xB4, 0x1C, 0x79, 0xD8, 0x1C, 0x75, 0x37, 0x1C, 0x59, 0x73,
+ 0x1C, 0x90, 0x69, 0x1C, 0x51, 0x2A, 0x1C, 0x53, 0x70, 0x1C, 0x6C, 0xE8,
+ 0x1C, 0x98, 0x05, 0x1C, 0x4F, 0x11, 0x1C, 0x51, 0x99, 0x1C, 0x6B, 0x63,
+ 0x1C, 0x4E, 0x0A, 0x1C, 0x4E, 0x2D, 0x1C, 0x4E, 0x0B, 0x1C, 0x5D, 0xE6,
+ 0x1C, 0x53, 0xF3, 0x1C, 0x53, 0x3B, 0x1C, 0x5B, 0x97, 0x1C, 0x5B, 0x66,
+ 0x1C, 0x76, 0xE3, 0x1C, 0x4F, 0x01, 0x1C, 0x8C, 0xC7, 0x1C, 0x53, 0x54,
+ 0x1C, 0x59, 0x1C, 0x9C, 0x00, 0x33, 0x00, 0x00, 0x36, 0x9C, 0x00, 0x33,
+ 0x00, 0x00, 0x37, 0x9C, 0x00, 0x33, 0x00, 0x00, 0x38, 0x9C, 0x00, 0x33,
+ 0x00, 0x00, 0x39, 0x9C, 0x00, 0x34, 0x00, 0x00, 0x30, 0x9C, 0x00, 0x34,
+ 0x00, 0x00, 0x31, 0x9C, 0x00, 0x34, 0x00, 0x00, 0x32, 0x9C, 0x00, 0x34,
+ 0x00, 0x00, 0x33, 0x9C, 0x00, 0x34, 0x00, 0x00, 0x34, 0x9C, 0x00, 0x34,
+ 0x00, 0x00, 0x35, 0x9C, 0x00, 0x34, 0x00, 0x00, 0x36, 0x9C, 0x00, 0x34,
+ 0x00, 0x00, 0x37, 0x9C, 0x00, 0x34, 0x00, 0x00, 0x38, 0x9C, 0x00, 0x34,
+ 0x00, 0x00, 0x39, 0x9C, 0x00, 0x35, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x31,
+ 0x00, 0x67, 0x08, 0xC0, 0x00, 0x32, 0x00, 0x67, 0x08, 0xC0, 0x00, 0x33,
+ 0x00, 0x67, 0x08, 0xC0, 0x00, 0x34, 0x00, 0x67, 0x08, 0xC0, 0x00, 0x35,
+ 0x00, 0x67, 0x08, 0xC0, 0x00, 0x36, 0x00, 0x67, 0x08, 0xC0, 0x00, 0x37,
+ 0x00, 0x67, 0x08, 0xC0, 0x00, 0x38, 0x00, 0x67, 0x08, 0xC0, 0x00, 0x39,
+ 0x00, 0x67, 0x08, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x30, 0x00, 0x67, 0x08,
+ 0xC0, 0x00, 0x31, 0x80, 0x00, 0x31, 0x00, 0x67, 0x08, 0xC0, 0x00, 0x31,
+ 0x80, 0x00, 0x32, 0x00, 0x67, 0x08, 0xB8, 0x00, 0x48, 0x00, 0x00, 0x67,
+ 0xB8, 0x00, 0x65, 0x80, 0x00, 0x72, 0x00, 0x00, 0x67, 0xB8, 0x00, 0x65,
+ 0x00, 0x00, 0x56, 0xB8, 0x00, 0x4C, 0x80, 0x00, 0x54, 0x00, 0x00, 0x44,
+ 0x1C, 0x30, 0xA2, 0x1C, 0x30, 0xA4, 0x1C, 0x30, 0xA6, 0x1C, 0x30, 0xA8,
+ 0x1C, 0x30, 0xAA, 0x1C, 0x30, 0xAB, 0x1C, 0x30, 0xAD, 0x1C, 0x30, 0xAF,
+ 0x1C, 0x30, 0xB1, 0x1C, 0x30, 0xB3, 0x1C, 0x30, 0xB5, 0x1C, 0x30, 0xB7,
+ 0x1C, 0x30, 0xB9, 0x1C, 0x30, 0xBB, 0x1C, 0x30, 0xBD, 0x1C, 0x30, 0xBF,
+ 0x1C, 0x30, 0xC1, 0x1C, 0x30, 0xC4, 0x1C, 0x30, 0xC6, 0x1C, 0x30, 0xC8,
+ 0x1C, 0x30, 0xCA, 0x1C, 0x30, 0xCB, 0x1C, 0x30, 0xCC, 0x1C, 0x30, 0xCD,
+ 0x1C, 0x30, 0xCE, 0x1C, 0x30, 0xCF, 0x1C, 0x30, 0xD2, 0x1C, 0x30, 0xD5,
+ 0x1C, 0x30, 0xD8, 0x1C, 0x30, 0xDB, 0x1C, 0x30, 0xDE, 0x1C, 0x30, 0xDF,
+ 0x1C, 0x30, 0xE0, 0x1C, 0x30, 0xE1, 0x1C, 0x30, 0xE2, 0x1C, 0x30, 0xE4,
+ 0x1C, 0x30, 0xE6, 0x1C, 0x30, 0xE8, 0x1C, 0x30, 0xE9, 0x1C, 0x30, 0xEA,
+ 0x1C, 0x30, 0xEB, 0x1C, 0x30, 0xEC, 0x1C, 0x30, 0xED, 0x1C, 0x30, 0xEF,
+ 0x1C, 0x30, 0xF0, 0x1C, 0x30, 0xF1, 0x1C, 0x30, 0xF2, 0xB8, 0x30, 0xA2,
+ 0x80, 0x30, 0xD1, 0x80, 0x30, 0xFC, 0x00, 0x30, 0xC8, 0xB8, 0x30, 0xA2,
+ 0x80, 0x30, 0xEB, 0x80, 0x30, 0xD5, 0x00, 0x30, 0xA1, 0xB8, 0x30, 0xA2,
+ 0x80, 0x30, 0xF3, 0x80, 0x30, 0xDA, 0x00, 0x30, 0xA2, 0xB8, 0x30, 0xA2,
+ 0x80, 0x30, 0xFC, 0x00, 0x30, 0xEB, 0xB8, 0x30, 0xA4, 0x80, 0x30, 0xCB,
+ 0x80, 0x30, 0xF3, 0x00, 0x30, 0xB0, 0xB8, 0x30, 0xA4, 0x80, 0x30, 0xF3,
+ 0x00, 0x30, 0xC1, 0xB8, 0x30, 0xA6, 0x80, 0x30, 0xA9, 0x00, 0x30, 0xF3,
+ 0xB8, 0x30, 0xA8, 0x80, 0x30, 0xB9, 0x80, 0x30, 0xAF, 0x80, 0x30, 0xFC,
+ 0x00, 0x30, 0xC9, 0xB8, 0x30, 0xA8, 0x80, 0x30, 0xFC, 0x80, 0x30, 0xAB,
+ 0x00, 0x30, 0xFC, 0xB8, 0x30, 0xAA, 0x80, 0x30, 0xF3, 0x00, 0x30, 0xB9,
+ 0xB8, 0x30, 0xAA, 0x80, 0x30, 0xFC, 0x00, 0x30, 0xE0, 0xB8, 0x30, 0xAB,
+ 0x80, 0x30, 0xA4, 0x00, 0x30, 0xEA, 0xB8, 0x30, 0xAB, 0x80, 0x30, 0xE9,
+ 0x80, 0x30, 0xC3, 0x00, 0x30, 0xC8, 0xB8, 0x30, 0xAB, 0x80, 0x30, 0xED,
+ 0x80, 0x30, 0xEA, 0x00, 0x30, 0xFC, 0xB8, 0x30, 0xAC, 0x80, 0x30, 0xED,
+ 0x00, 0x30, 0xF3, 0xB8, 0x30, 0xAC, 0x80, 0x30, 0xF3, 0x00, 0x30, 0xDE,
+ 0xB8, 0x30, 0xAE, 0x00, 0x30, 0xAC, 0xB8, 0x30, 0xAE, 0x80, 0x30, 0xCB,
+ 0x00, 0x30, 0xFC, 0xB8, 0x30, 0xAD, 0x80, 0x30, 0xE5, 0x80, 0x30, 0xEA,
+ 0x00, 0x30, 0xFC, 0xB8, 0x30, 0xAE, 0x80, 0x30, 0xEB, 0x80, 0x30, 0xC0,
+ 0x00, 0x30, 0xFC, 0xB8, 0x30, 0xAD, 0x00, 0x30, 0xED, 0xB8, 0x30, 0xAD,
+ 0x80, 0x30, 0xED, 0x80, 0x30, 0xB0, 0x80, 0x30, 0xE9, 0x00, 0x30, 0xE0,
+ 0xB8, 0x30, 0xAD, 0x80, 0x30, 0xED, 0x80, 0x30, 0xE1, 0x80, 0x30, 0xFC,
+ 0x80, 0x30, 0xC8, 0x00, 0x30, 0xEB, 0xB8, 0x30, 0xAD, 0x80, 0x30, 0xED,
+ 0x80, 0x30, 0xEF, 0x80, 0x30, 0xC3, 0x00, 0x30, 0xC8, 0xB8, 0x30, 0xB0,
+ 0x80, 0x30, 0xE9, 0x00, 0x30, 0xE0, 0xB8, 0x30, 0xB0, 0x80, 0x30, 0xE9,
+ 0x80, 0x30, 0xE0, 0x80, 0x30, 0xC8, 0x00, 0x30, 0xF3, 0xB8, 0x30, 0xAF,
+ 0x80, 0x30, 0xEB, 0x80, 0x30, 0xBC, 0x80, 0x30, 0xA4, 0x00, 0x30, 0xED,
+ 0xB8, 0x30, 0xAF, 0x80, 0x30, 0xED, 0x80, 0x30, 0xFC, 0x00, 0x30, 0xCD,
+ 0xB8, 0x30, 0xB1, 0x80, 0x30, 0xFC, 0x00, 0x30, 0xB9, 0xB8, 0x30, 0xB3,
+ 0x80, 0x30, 0xEB, 0x00, 0x30, 0xCA, 0xB8, 0x30, 0xB3, 0x80, 0x30, 0xFC,
+ 0x00, 0x30, 0xDD, 0xB8, 0x30, 0xB5, 0x80, 0x30, 0xA4, 0x80, 0x30, 0xAF,
+ 0x00, 0x30, 0xEB, 0xB8, 0x30, 0xB5, 0x80, 0x30, 0xF3, 0x80, 0x30, 0xC1,
+ 0x80, 0x30, 0xFC, 0x00, 0x30, 0xE0, 0xB8, 0x30, 0xB7, 0x80, 0x30, 0xEA,
+ 0x80, 0x30, 0xF3, 0x00, 0x30, 0xB0, 0xB8, 0x30, 0xBB, 0x80, 0x30, 0xF3,
+ 0x00, 0x30, 0xC1, 0xB8, 0x30, 0xBB, 0x80, 0x30, 0xF3, 0x00, 0x30, 0xC8,
+ 0xB8, 0x30, 0xC0, 0x80, 0x30, 0xFC, 0x00, 0x30, 0xB9, 0xB8, 0x30, 0xC7,
+ 0x00, 0x30, 0xB7, 0xB8, 0x30, 0xC9, 0x00, 0x30, 0xEB, 0xB8, 0x30, 0xC8,
+ 0x00, 0x30, 0xF3, 0xB8, 0x30, 0xCA, 0x00, 0x30, 0xCE, 0xB8, 0x30, 0xCE,
+ 0x80, 0x30, 0xC3, 0x00, 0x30, 0xC8, 0xB8, 0x30, 0xCF, 0x80, 0x30, 0xA4,
+ 0x00, 0x30, 0xC4, 0xB8, 0x30, 0xD1, 0x80, 0x30, 0xFC, 0x80, 0x30, 0xBB,
+ 0x80, 0x30, 0xF3, 0x00, 0x30, 0xC8, 0xB8, 0x30, 0xD1, 0x80, 0x30, 0xFC,
+ 0x00, 0x30, 0xC4, 0xB8, 0x30, 0xD0, 0x80, 0x30, 0xFC, 0x80, 0x30, 0xEC,
+ 0x00, 0x30, 0xEB, 0xB8, 0x30, 0xD4, 0x80, 0x30, 0xA2, 0x80, 0x30, 0xB9,
+ 0x80, 0x30, 0xC8, 0x00, 0x30, 0xEB, 0xB8, 0x30, 0xD4, 0x80, 0x30, 0xAF,
+ 0x00, 0x30, 0xEB, 0xB8, 0x30, 0xD4, 0x00, 0x30, 0xB3, 0xB8, 0x30, 0xD3,
+ 0x00, 0x30, 0xEB, 0xB8, 0x30, 0xD5, 0x80, 0x30, 0xA1, 0x80, 0x30, 0xE9,
+ 0x80, 0x30, 0xC3, 0x00, 0x30, 0xC9, 0xB8, 0x30, 0xD5, 0x80, 0x30, 0xA3,
+ 0x80, 0x30, 0xFC, 0x00, 0x30, 0xC8, 0xB8, 0x30, 0xD6, 0x80, 0x30, 0xC3,
+ 0x80, 0x30, 0xB7, 0x80, 0x30, 0xA7, 0x00, 0x30, 0xEB, 0xB8, 0x30, 0xD5,
+ 0x80, 0x30, 0xE9, 0x00, 0x30, 0xF3, 0xB8, 0x30, 0xD8, 0x80, 0x30, 0xAF,
+ 0x80, 0x30, 0xBF, 0x80, 0x30, 0xFC, 0x00, 0x30, 0xEB, 0xB8, 0x30, 0xDA,
+ 0x00, 0x30, 0xBD, 0xB8, 0x30, 0xDA, 0x80, 0x30, 0xCB, 0x00, 0x30, 0xD2,
+ 0xB8, 0x30, 0xD8, 0x80, 0x30, 0xEB, 0x00, 0x30, 0xC4, 0xB8, 0x30, 0xDA,
+ 0x80, 0x30, 0xF3, 0x00, 0x30, 0xB9, 0xB8, 0x30, 0xDA, 0x80, 0x30, 0xFC,
+ 0x00, 0x30, 0xB8, 0xB8, 0x30, 0xD9, 0x80, 0x30, 0xFC, 0x00, 0x30, 0xBF,
+ 0xB8, 0x30, 0xDD, 0x80, 0x30, 0xA4, 0x80, 0x30, 0xF3, 0x00, 0x30, 0xC8,
+ 0xB8, 0x30, 0xDC, 0x80, 0x30, 0xEB, 0x00, 0x30, 0xC8, 0xB8, 0x30, 0xDB,
+ 0x00, 0x30, 0xF3, 0xB8, 0x30, 0xDD, 0x80, 0x30, 0xF3, 0x00, 0x30, 0xC9,
+ 0xB8, 0x30, 0xDB, 0x80, 0x30, 0xFC, 0x00, 0x30, 0xEB, 0xB8, 0x30, 0xDB,
+ 0x80, 0x30, 0xFC, 0x00, 0x30, 0xF3, 0xB8, 0x30, 0xDE, 0x80, 0x30, 0xA4,
+ 0x80, 0x30, 0xAF, 0x00, 0x30, 0xED, 0xB8, 0x30, 0xDE, 0x80, 0x30, 0xA4,
+ 0x00, 0x30, 0xEB, 0xB8, 0x30, 0xDE, 0x80, 0x30, 0xC3, 0x00, 0x30, 0xCF,
+ 0xB8, 0x30, 0xDE, 0x80, 0x30, 0xEB, 0x00, 0x30, 0xAF, 0xB8, 0x30, 0xDE,
+ 0x80, 0x30, 0xF3, 0x80, 0x30, 0xB7, 0x80, 0x30, 0xE7, 0x00, 0x30, 0xF3,
+ 0xB8, 0x30, 0xDF, 0x80, 0x30, 0xAF, 0x80, 0x30, 0xED, 0x00, 0x30, 0xF3,
+ 0xB8, 0x30, 0xDF, 0x00, 0x30, 0xEA, 0xB8, 0x30, 0xDF, 0x80, 0x30, 0xEA,
+ 0x80, 0x30, 0xD0, 0x80, 0x30, 0xFC, 0x00, 0x30, 0xEB, 0xB8, 0x30, 0xE1,
+ 0x00, 0x30, 0xAC, 0xB8, 0x30, 0xE1, 0x80, 0x30, 0xAC, 0x80, 0x30, 0xC8,
+ 0x00, 0x30, 0xF3, 0xB8, 0x30, 0xE1, 0x80, 0x30, 0xFC, 0x80, 0x30, 0xC8,
+ 0x00, 0x30, 0xEB, 0xB8, 0x30, 0xE4, 0x80, 0x30, 0xFC, 0x00, 0x30, 0xC9,
+ 0xB8, 0x30, 0xE4, 0x80, 0x30, 0xFC, 0x00, 0x30, 0xEB, 0xB8, 0x30, 0xE6,
+ 0x80, 0x30, 0xA2, 0x00, 0x30, 0xF3, 0xB8, 0x30, 0xEA, 0x80, 0x30, 0xC3,
+ 0x80, 0x30, 0xC8, 0x00, 0x30, 0xEB, 0xB8, 0x30, 0xEA, 0x00, 0x30, 0xE9,
+ 0xB8, 0x30, 0xEB, 0x80, 0x30, 0xD4, 0x00, 0x30, 0xFC, 0xB8, 0x30, 0xEB,
+ 0x80, 0x30, 0xFC, 0x80, 0x30, 0xD6, 0x00, 0x30, 0xEB, 0xB8, 0x30, 0xEC,
+ 0x00, 0x30, 0xE0, 0xB8, 0x30, 0xEC, 0x80, 0x30, 0xF3, 0x80, 0x30, 0xC8,
+ 0x80, 0x30, 0xB2, 0x00, 0x30, 0xF3, 0xB8, 0x30, 0xEF, 0x80, 0x30, 0xC3,
+ 0x00, 0x30, 0xC8, 0xC0, 0x00, 0x30, 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x31,
+ 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x32, 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x33,
+ 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x34, 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x35,
+ 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x36, 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x37,
+ 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x38, 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x39,
+ 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x30, 0x00, 0x70, 0xB9,
+ 0xC0, 0x00, 0x31, 0x80, 0x00, 0x31, 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x31,
+ 0x80, 0x00, 0x32, 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x33,
+ 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x34, 0x00, 0x70, 0xB9,
+ 0xC0, 0x00, 0x31, 0x80, 0x00, 0x35, 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x31,
+ 0x80, 0x00, 0x36, 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x37,
+ 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x38, 0x00, 0x70, 0xB9,
+ 0xC0, 0x00, 0x31, 0x80, 0x00, 0x39, 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x32,
+ 0x80, 0x00, 0x30, 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x32, 0x80, 0x00, 0x31,
+ 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x32, 0x80, 0x00, 0x32, 0x00, 0x70, 0xB9,
+ 0xC0, 0x00, 0x32, 0x80, 0x00, 0x33, 0x00, 0x70, 0xB9, 0xC0, 0x00, 0x32,
+ 0x80, 0x00, 0x34, 0x00, 0x70, 0xB9, 0xB8, 0x00, 0x68, 0x80, 0x00, 0x50,
+ 0x00, 0x00, 0x61, 0xB8, 0x00, 0x64, 0x00, 0x00, 0x61, 0xB8, 0x00, 0x41,
+ 0x00, 0x00, 0x55, 0xB8, 0x00, 0x62, 0x80, 0x00, 0x61, 0x00, 0x00, 0x72,
+ 0xB8, 0x00, 0x6F, 0x00, 0x00, 0x56, 0xB8, 0x00, 0x70, 0x00, 0x00, 0x63,
+ 0xB8, 0x00, 0x64, 0x00, 0x00, 0x6D, 0xB8, 0x00, 0x64, 0x80, 0x00, 0x6D,
+ 0x00, 0x00, 0xB2, 0xB8, 0x00, 0x64, 0x80, 0x00, 0x6D, 0x00, 0x00, 0xB3,
+ 0xB8, 0x00, 0x49, 0x00, 0x00, 0x55, 0xB8, 0x5E, 0x73, 0x00, 0x62, 0x10,
+ 0xB8, 0x66, 0x2D, 0x00, 0x54, 0x8C, 0xB8, 0x59, 0x27, 0x00, 0x6B, 0x63,
+ 0xB8, 0x66, 0x0E, 0x00, 0x6C, 0xBB, 0xB8, 0x68, 0x2A, 0x80, 0x5F, 0x0F,
+ 0x80, 0x4F, 0x1A, 0x00, 0x79, 0x3E, 0xB8, 0x00, 0x70, 0x00, 0x00, 0x41,
+ 0xB8, 0x00, 0x6E, 0x00, 0x00, 0x41, 0xB8, 0x03, 0xBC, 0x00, 0x00, 0x41,
+ 0xB8, 0x00, 0x6D, 0x00, 0x00, 0x41, 0xB8, 0x00, 0x6B, 0x00, 0x00, 0x41,
+ 0xB8, 0x00, 0x4B, 0x00, 0x00, 0x42, 0xB8, 0x00, 0x4D, 0x00, 0x00, 0x42,
+ 0xB8, 0x00, 0x47, 0x00, 0x00, 0x42, 0xB8, 0x00, 0x63, 0x80, 0x00, 0x61,
+ 0x00, 0x00, 0x6C, 0xB8, 0x00, 0x6B, 0x80, 0x00, 0x63, 0x80, 0x00, 0x61,
+ 0x00, 0x00, 0x6C, 0xB8, 0x00, 0x70, 0x00, 0x00, 0x46, 0xB8, 0x00, 0x6E,
+ 0x00, 0x00, 0x46, 0xB8, 0x03, 0xBC, 0x00, 0x00, 0x46, 0xB8, 0x03, 0xBC,
+ 0x00, 0x00, 0x67, 0xB8, 0x00, 0x6D, 0x00, 0x00, 0x67, 0xB8, 0x00, 0x6B,
+ 0x00, 0x00, 0x67, 0xB8, 0x00, 0x48, 0x00, 0x00, 0x7A, 0xB8, 0x00, 0x6B,
+ 0x80, 0x00, 0x48, 0x00, 0x00, 0x7A, 0xB8, 0x00, 0x4D, 0x80, 0x00, 0x48,
+ 0x00, 0x00, 0x7A, 0xB8, 0x00, 0x47, 0x80, 0x00, 0x48, 0x00, 0x00, 0x7A,
+ 0xB8, 0x00, 0x54, 0x80, 0x00, 0x48, 0x00, 0x00, 0x7A, 0xB8, 0x03, 0xBC,
+ 0x00, 0x21, 0x13, 0xB8, 0x00, 0x6D, 0x00, 0x21, 0x13, 0xB8, 0x00, 0x64,
+ 0x00, 0x21, 0x13, 0xB8, 0x00, 0x6B, 0x00, 0x21, 0x13, 0xB8, 0x00, 0x66,
+ 0x00, 0x00, 0x6D, 0xB8, 0x00, 0x6E, 0x00, 0x00, 0x6D, 0xB8, 0x03, 0xBC,
+ 0x00, 0x00, 0x6D, 0xB8, 0x00, 0x6D, 0x00, 0x00, 0x6D, 0xB8, 0x00, 0x63,
+ 0x00, 0x00, 0x6D, 0xB8, 0x00, 0x6B, 0x00, 0x00, 0x6D, 0xB8, 0x00, 0x6D,
+ 0x80, 0x00, 0x6D, 0x00, 0x00, 0xB2, 0xB8, 0x00, 0x63, 0x80, 0x00, 0x6D,
+ 0x00, 0x00, 0xB2, 0xB8, 0x00, 0x6D, 0x00, 0x00, 0xB2, 0xB8, 0x00, 0x6B,
+ 0x80, 0x00, 0x6D, 0x00, 0x00, 0xB2, 0xB8, 0x00, 0x6D, 0x80, 0x00, 0x6D,
+ 0x00, 0x00, 0xB3, 0xB8, 0x00, 0x63, 0x80, 0x00, 0x6D, 0x00, 0x00, 0xB3,
+ 0xB8, 0x00, 0x6D, 0x00, 0x00, 0xB3, 0xB8, 0x00, 0x6B, 0x80, 0x00, 0x6D,
+ 0x00, 0x00, 0xB3, 0xB8, 0x00, 0x6D, 0x80, 0x22, 0x15, 0x00, 0x00, 0x73,
+ 0xB8, 0x00, 0x6D, 0x80, 0x22, 0x15, 0x80, 0x00, 0x73, 0x00, 0x00, 0xB2,
+ 0xB8, 0x00, 0x50, 0x00, 0x00, 0x61, 0xB8, 0x00, 0x6B, 0x80, 0x00, 0x50,
+ 0x00, 0x00, 0x61, 0xB8, 0x00, 0x4D, 0x80, 0x00, 0x50, 0x00, 0x00, 0x61,
+ 0xB8, 0x00, 0x47, 0x80, 0x00, 0x50, 0x00, 0x00, 0x61, 0xB8, 0x00, 0x72,
+ 0x80, 0x00, 0x61, 0x00, 0x00, 0x64, 0xB8, 0x00, 0x72, 0x80, 0x00, 0x61,
+ 0x80, 0x00, 0x64, 0x80, 0x22, 0x15, 0x00, 0x00, 0x73, 0xB8, 0x00, 0x72,
+ 0x80, 0x00, 0x61, 0x80, 0x00, 0x64, 0x80, 0x22, 0x15, 0x80, 0x00, 0x73,
+ 0x00, 0x00, 0xB2, 0xB8, 0x00, 0x70, 0x00, 0x00, 0x73, 0xB8, 0x00, 0x6E,
+ 0x00, 0x00, 0x73, 0xB8, 0x03, 0xBC, 0x00, 0x00, 0x73, 0xB8, 0x00, 0x6D,
+ 0x00, 0x00, 0x73, 0xB8, 0x00, 0x70, 0x00, 0x00, 0x56, 0xB8, 0x00, 0x6E,
+ 0x00, 0x00, 0x56, 0xB8, 0x03, 0xBC, 0x00, 0x00, 0x56, 0xB8, 0x00, 0x6D,
+ 0x00, 0x00, 0x56, 0xB8, 0x00, 0x6B, 0x00, 0x00, 0x56, 0xB8, 0x00, 0x4D,
+ 0x00, 0x00, 0x56, 0xB8, 0x00, 0x70, 0x00, 0x00, 0x57, 0xB8, 0x00, 0x6E,
+ 0x00, 0x00, 0x57, 0xB8, 0x03, 0xBC, 0x00, 0x00, 0x57, 0xB8, 0x00, 0x6D,
+ 0x00, 0x00, 0x57, 0xB8, 0x00, 0x6B, 0x00, 0x00, 0x57, 0xB8, 0x00, 0x4D,
+ 0x00, 0x00, 0x57, 0xB8, 0x00, 0x6B, 0x00, 0x03, 0xA9, 0xB8, 0x00, 0x4D,
+ 0x00, 0x03, 0xA9, 0xB8, 0x00, 0x61, 0x80, 0x00, 0x2E, 0x80, 0x00, 0x6D,
+ 0x00, 0x00, 0x2E, 0xB8, 0x00, 0x42, 0x00, 0x00, 0x71, 0xB8, 0x00, 0x63,
+ 0x00, 0x00, 0x63, 0xB8, 0x00, 0x63, 0x00, 0x00, 0x64, 0xB8, 0x00, 0x43,
+ 0x80, 0x22, 0x15, 0x80, 0x00, 0x6B, 0x00, 0x00, 0x67, 0xB8, 0x00, 0x43,
+ 0x80, 0x00, 0x6F, 0x00, 0x00, 0x2E, 0xB8, 0x00, 0x64, 0x00, 0x00, 0x42,
+ 0xB8, 0x00, 0x47, 0x00, 0x00, 0x79, 0xB8, 0x00, 0x68, 0x00, 0x00, 0x61,
+ 0xB8, 0x00, 0x48, 0x00, 0x00, 0x50, 0xB8, 0x00, 0x69, 0x00, 0x00, 0x6E,
+ 0xB8, 0x00, 0x4B, 0x00, 0x00, 0x4B, 0xB8, 0x00, 0x4B, 0x00, 0x00, 0x4D,
+ 0xB8, 0x00, 0x6B, 0x00, 0x00, 0x74, 0xB8, 0x00, 0x6C, 0x00, 0x00, 0x6D,
+ 0xB8, 0x00, 0x6C, 0x00, 0x00, 0x6E, 0xB8, 0x00, 0x6C, 0x80, 0x00, 0x6F,
+ 0x00, 0x00, 0x67, 0xB8, 0x00, 0x6C, 0x00, 0x00, 0x78, 0xB8, 0x00, 0x6D,
+ 0x00, 0x00, 0x62, 0xB8, 0x00, 0x6D, 0x80, 0x00, 0x69, 0x00, 0x00, 0x6C,
+ 0xB8, 0x00, 0x6D, 0x80, 0x00, 0x6F, 0x00, 0x00, 0x6C, 0xB8, 0x00, 0x50,
+ 0x00, 0x00, 0x48, 0xB8, 0x00, 0x70, 0x80, 0x00, 0x2E, 0x80, 0x00, 0x6D,
+ 0x00, 0x00, 0x2E, 0xB8, 0x00, 0x50, 0x80, 0x00, 0x50, 0x00, 0x00, 0x4D,
+ 0xB8, 0x00, 0x50, 0x00, 0x00, 0x52, 0xB8, 0x00, 0x73, 0x00, 0x00, 0x72,
+ 0xB8, 0x00, 0x53, 0x00, 0x00, 0x76, 0xB8, 0x00, 0x57, 0x00, 0x00, 0x62,
+ 0xB8, 0x00, 0x56, 0x80, 0x22, 0x15, 0x00, 0x00, 0x6D, 0xB8, 0x00, 0x41,
+ 0x80, 0x22, 0x15, 0x00, 0x00, 0x6D, 0xC0, 0x00, 0x31, 0x00, 0x65, 0xE5,
+ 0xC0, 0x00, 0x32, 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x33, 0x00, 0x65, 0xE5,
+ 0xC0, 0x00, 0x34, 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x35, 0x00, 0x65, 0xE5,
+ 0xC0, 0x00, 0x36, 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x37, 0x00, 0x65, 0xE5,
+ 0xC0, 0x00, 0x38, 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x39, 0x00, 0x65, 0xE5,
+ 0xC0, 0x00, 0x31, 0x80, 0x00, 0x30, 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x31,
+ 0x80, 0x00, 0x31, 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x32,
+ 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x33, 0x00, 0x65, 0xE5,
+ 0xC0, 0x00, 0x31, 0x80, 0x00, 0x34, 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x31,
+ 0x80, 0x00, 0x35, 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x36,
+ 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x37, 0x00, 0x65, 0xE5,
+ 0xC0, 0x00, 0x31, 0x80, 0x00, 0x38, 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x31,
+ 0x80, 0x00, 0x39, 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x32, 0x80, 0x00, 0x30,
+ 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x32, 0x80, 0x00, 0x31, 0x00, 0x65, 0xE5,
+ 0xC0, 0x00, 0x32, 0x80, 0x00, 0x32, 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x32,
+ 0x80, 0x00, 0x33, 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x32, 0x80, 0x00, 0x34,
+ 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x32, 0x80, 0x00, 0x35, 0x00, 0x65, 0xE5,
+ 0xC0, 0x00, 0x32, 0x80, 0x00, 0x36, 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x32,
+ 0x80, 0x00, 0x37, 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x32, 0x80, 0x00, 0x38,
+ 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x32, 0x80, 0x00, 0x39, 0x00, 0x65, 0xE5,
+ 0xC0, 0x00, 0x33, 0x80, 0x00, 0x30, 0x00, 0x65, 0xE5, 0xC0, 0x00, 0x33,
+ 0x80, 0x00, 0x31, 0x00, 0x65, 0xE5, 0xB8, 0x00, 0x67, 0x80, 0x00, 0x61,
+ 0x00, 0x00, 0x6C, 0x20, 0xA7, 0x6F, 0x00, 0x8C, 0x48, 0x00, 0x66, 0xF4,
+ 0x00, 0x8E, 0xCA, 0x00, 0x8C, 0xC8, 0x00, 0x6E, 0xD1, 0x00, 0x4E, 0x32,
+ 0x00, 0x53, 0xE5, 0x00, 0x9F, 0x9C, 0x00, 0x9F, 0x9C, 0x00, 0x59, 0x51,
+ 0x00, 0x91, 0xD1, 0x00, 0x55, 0x87, 0x00, 0x59, 0x48, 0x00, 0x61, 0xF6,
+ 0x00, 0x76, 0x69, 0x00, 0x7F, 0x85, 0x00, 0x86, 0x3F, 0x00, 0x87, 0xBA,
+ 0x00, 0x88, 0xF8, 0x00, 0x90, 0x8F, 0x00, 0x6A, 0x02, 0x00, 0x6D, 0x1B,
+ 0x00, 0x70, 0xD9, 0x00, 0x73, 0xDE, 0x00, 0x84, 0x3D, 0x00, 0x91, 0x6A,
+ 0x00, 0x99, 0xF1, 0x00, 0x4E, 0x82, 0x00, 0x53, 0x75, 0x00, 0x6B, 0x04,
+ 0x00, 0x72, 0x1B, 0x00, 0x86, 0x2D, 0x00, 0x9E, 0x1E, 0x00, 0x5D, 0x50,
+ 0x00, 0x6F, 0xEB, 0x00, 0x85, 0xCD, 0x00, 0x89, 0x64, 0x00, 0x62, 0xC9,
+ 0x00, 0x81, 0xD8, 0x00, 0x88, 0x1F, 0x00, 0x5E, 0xCA, 0x00, 0x67, 0x17,
+ 0x00, 0x6D, 0x6A, 0x00, 0x72, 0xFC, 0x00, 0x90, 0xCE, 0x00, 0x4F, 0x86,
+ 0x00, 0x51, 0xB7, 0x00, 0x52, 0xDE, 0x00, 0x64, 0xC4, 0x00, 0x6A, 0xD3,
+ 0x00, 0x72, 0x10, 0x00, 0x76, 0xE7, 0x00, 0x80, 0x01, 0x00, 0x86, 0x06,
+ 0x00, 0x86, 0x5C, 0x00, 0x8D, 0xEF, 0x00, 0x97, 0x32, 0x00, 0x9B, 0x6F,
+ 0x00, 0x9D, 0xFA, 0x00, 0x78, 0x8C, 0x00, 0x79, 0x7F, 0x00, 0x7D, 0xA0,
+ 0x00, 0x83, 0xC9, 0x00, 0x93, 0x04, 0x00, 0x9E, 0x7F, 0x00, 0x8A, 0xD6,
+ 0x00, 0x58, 0xDF, 0x00, 0x5F, 0x04, 0x00, 0x7C, 0x60, 0x00, 0x80, 0x7E,
+ 0x00, 0x72, 0x62, 0x00, 0x78, 0xCA, 0x00, 0x8C, 0xC2, 0x00, 0x96, 0xF7,
+ 0x00, 0x58, 0xD8, 0x00, 0x5C, 0x62, 0x00, 0x6A, 0x13, 0x00, 0x6D, 0xDA,
+ 0x00, 0x6F, 0x0F, 0x00, 0x7D, 0x2F, 0x00, 0x7E, 0x37, 0x00, 0x96, 0x4B,
+ 0x00, 0x52, 0xD2, 0x00, 0x80, 0x8B, 0x00, 0x51, 0xDC, 0x00, 0x51, 0xCC,
+ 0x00, 0x7A, 0x1C, 0x00, 0x7D, 0xBE, 0x00, 0x83, 0xF1, 0x00, 0x96, 0x75,
+ 0x00, 0x8B, 0x80, 0x00, 0x62, 0xCF, 0x00, 0x6A, 0x02, 0x00, 0x8A, 0xFE,
+ 0x00, 0x4E, 0x39, 0x00, 0x5B, 0xE7, 0x00, 0x60, 0x12, 0x00, 0x73, 0x87,
+ 0x00, 0x75, 0x70, 0x00, 0x53, 0x17, 0x00, 0x78, 0xFB, 0x00, 0x4F, 0xBF,
+ 0x00, 0x5F, 0xA9, 0x00, 0x4E, 0x0D, 0x00, 0x6C, 0xCC, 0x00, 0x65, 0x78,
+ 0x00, 0x7D, 0x22, 0x00, 0x53, 0xC3, 0x00, 0x58, 0x5E, 0x00, 0x77, 0x01,
+ 0x00, 0x84, 0x49, 0x00, 0x8A, 0xAA, 0x00, 0x6B, 0xBA, 0x00, 0x8F, 0xB0,
+ 0x00, 0x6C, 0x88, 0x00, 0x62, 0xFE, 0x00, 0x82, 0xE5, 0x00, 0x63, 0xA0,
+ 0x00, 0x75, 0x65, 0x00, 0x4E, 0xAE, 0x00, 0x51, 0x69, 0x00, 0x51, 0xC9,
+ 0x00, 0x68, 0x81, 0x00, 0x7C, 0xE7, 0x00, 0x82, 0x6F, 0x00, 0x8A, 0xD2,
+ 0x00, 0x91, 0xCF, 0x00, 0x52, 0xF5, 0x00, 0x54, 0x42, 0x00, 0x59, 0x73,
+ 0x00, 0x5E, 0xEC, 0x00, 0x65, 0xC5, 0x00, 0x6F, 0xFE, 0x00, 0x79, 0x2A,
+ 0x00, 0x95, 0xAD, 0x00, 0x9A, 0x6A, 0x00, 0x9E, 0x97, 0x00, 0x9E, 0xCE,
+ 0x00, 0x52, 0x9B, 0x00, 0x66, 0xC6, 0x00, 0x6B, 0x77, 0x00, 0x8F, 0x62,
+ 0x00, 0x5E, 0x74, 0x00, 0x61, 0x90, 0x00, 0x62, 0x00, 0x00, 0x64, 0x9A,
+ 0x00, 0x6F, 0x23, 0x00, 0x71, 0x49, 0x00, 0x74, 0x89, 0x00, 0x79, 0xCA,
+ 0x00, 0x7D, 0xF4, 0x00, 0x80, 0x6F, 0x00, 0x8F, 0x26, 0x00, 0x84, 0xEE,
+ 0x00, 0x90, 0x23, 0x00, 0x93, 0x4A, 0x00, 0x52, 0x17, 0x00, 0x52, 0xA3,
+ 0x00, 0x54, 0xBD, 0x00, 0x70, 0xC8, 0x00, 0x88, 0xC2, 0x00, 0x8A, 0xAA,
+ 0x00, 0x5E, 0xC9, 0x00, 0x5F, 0xF5, 0x00, 0x63, 0x7B, 0x00, 0x6B, 0xAE,
+ 0x00, 0x7C, 0x3E, 0x00, 0x73, 0x75, 0x00, 0x4E, 0xE4, 0x00, 0x56, 0xF9,
+ 0x00, 0x5B, 0xE7, 0x00, 0x5D, 0xBA, 0x00, 0x60, 0x1C, 0x00, 0x73, 0xB2,
+ 0x00, 0x74, 0x69, 0x00, 0x7F, 0x9A, 0x00, 0x80, 0x46, 0x00, 0x92, 0x34,
+ 0x00, 0x96, 0xF6, 0x00, 0x97, 0x48, 0x00, 0x98, 0x18, 0x00, 0x4F, 0x8B,
+ 0x00, 0x79, 0xAE, 0x00, 0x91, 0xB4, 0x00, 0x96, 0xB8, 0x00, 0x60, 0xE1,
+ 0x00, 0x4E, 0x86, 0x00, 0x50, 0xDA, 0x00, 0x5B, 0xEE, 0x00, 0x5C, 0x3F,
+ 0x00, 0x65, 0x99, 0x00, 0x6A, 0x02, 0x00, 0x71, 0xCE, 0x00, 0x76, 0x42,
+ 0x00, 0x84, 0xFC, 0x00, 0x90, 0x7C, 0x00, 0x9F, 0x8D, 0x00, 0x66, 0x88,
+ 0x00, 0x96, 0x2E, 0x00, 0x52, 0x89, 0x00, 0x67, 0x7B, 0x00, 0x67, 0xF3,
+ 0x00, 0x6D, 0x41, 0x00, 0x6E, 0x9C, 0x00, 0x74, 0x09, 0x00, 0x75, 0x59,
+ 0x00, 0x78, 0x6B, 0x00, 0x7D, 0x10, 0x00, 0x98, 0x5E, 0x00, 0x51, 0x6D,
+ 0x00, 0x62, 0x2E, 0x00, 0x96, 0x78, 0x00, 0x50, 0x2B, 0x00, 0x5D, 0x19,
+ 0x00, 0x6D, 0xEA, 0x00, 0x8F, 0x2A, 0x00, 0x5F, 0x8B, 0x00, 0x61, 0x44,
+ 0x00, 0x68, 0x17, 0x00, 0x73, 0x87, 0x00, 0x96, 0x86, 0x00, 0x52, 0x29,
+ 0x00, 0x54, 0x0F, 0x00, 0x5C, 0x65, 0x00, 0x66, 0x13, 0x00, 0x67, 0x4E,
+ 0x00, 0x68, 0xA8, 0x00, 0x6C, 0xE5, 0x00, 0x74, 0x06, 0x00, 0x75, 0xE2,
+ 0x00, 0x7F, 0x79, 0x00, 0x88, 0xCF, 0x00, 0x88, 0xE1, 0x00, 0x91, 0xCC,
+ 0x00, 0x96, 0xE2, 0x00, 0x53, 0x3F, 0x00, 0x6E, 0xBA, 0x00, 0x54, 0x1D,
+ 0x00, 0x71, 0xD0, 0x00, 0x74, 0x98, 0x00, 0x85, 0xFA, 0x00, 0x96, 0xA3,
+ 0x00, 0x9C, 0x57, 0x00, 0x9E, 0x9F, 0x00, 0x67, 0x97, 0x00, 0x6D, 0xCB,
+ 0x00, 0x81, 0xE8, 0x00, 0x7A, 0xCB, 0x00, 0x7B, 0x20, 0x00, 0x7C, 0x92,
+ 0x00, 0x72, 0xC0, 0x00, 0x70, 0x99, 0x00, 0x8B, 0x58, 0x00, 0x4E, 0xC0,
+ 0x00, 0x83, 0x36, 0x00, 0x52, 0x3A, 0x00, 0x52, 0x07, 0x00, 0x5E, 0xA6,
+ 0x00, 0x62, 0xD3, 0x00, 0x7C, 0xD6, 0x00, 0x5B, 0x85, 0x00, 0x6D, 0x1E,
+ 0x00, 0x66, 0xB4, 0x00, 0x8F, 0x3B, 0x00, 0x88, 0x4C, 0x00, 0x96, 0x4D,
+ 0x00, 0x89, 0x8B, 0x00, 0x5E, 0xD3, 0x00, 0x51, 0x40, 0x00, 0x55, 0xC0,
+ 0x00, 0x58, 0x5A, 0x00, 0x66, 0x74, 0x00, 0x51, 0xDE, 0x00, 0x73, 0x2A,
+ 0x00, 0x76, 0xCA, 0x00, 0x79, 0x3C, 0x00, 0x79, 0x5E, 0x00, 0x79, 0x65,
+ 0x00, 0x79, 0x8F, 0x00, 0x97, 0x56, 0x00, 0x7C, 0xBE, 0x00, 0x7F, 0xBD,
+ 0x00, 0x86, 0x12, 0x00, 0x8A, 0xF8, 0x00, 0x90, 0x38, 0x00, 0x90, 0xFD,
+ 0x00, 0x98, 0xEF, 0x00, 0x98, 0xFC, 0x00, 0x99, 0x28, 0x00, 0x9D, 0xB4,
+ 0x00, 0x4F, 0xAE, 0x00, 0x50, 0xE7, 0x00, 0x51, 0x4D, 0x00, 0x52, 0xC9,
+ 0x00, 0x52, 0xE4, 0x00, 0x53, 0x51, 0x00, 0x55, 0x9D, 0x00, 0x56, 0x06,
+ 0x00, 0x56, 0x68, 0x00, 0x58, 0x40, 0x00, 0x58, 0xA8, 0x00, 0x5C, 0x64,
+ 0x00, 0x5C, 0x6E, 0x00, 0x60, 0x94, 0x00, 0x61, 0x68, 0x00, 0x61, 0x8E,
+ 0x00, 0x61, 0xF2, 0x00, 0x65, 0x4F, 0x00, 0x65, 0xE2, 0x00, 0x66, 0x91,
+ 0x00, 0x68, 0x85, 0x00, 0x6D, 0x77, 0x00, 0x6E, 0x1A, 0x00, 0x6F, 0x22,
+ 0x00, 0x71, 0x6E, 0x00, 0x72, 0x2B, 0x00, 0x74, 0x22, 0x00, 0x78, 0x91,
+ 0x00, 0x79, 0x3E, 0x00, 0x79, 0x49, 0x00, 0x79, 0x48, 0x00, 0x79, 0x50,
+ 0x00, 0x79, 0x56, 0x00, 0x79, 0x5D, 0x00, 0x79, 0x8D, 0x00, 0x79, 0x8E,
+ 0x00, 0x7A, 0x40, 0x00, 0x7A, 0x81, 0x00, 0x7B, 0xC0, 0x00, 0x7D, 0xF4,
+ 0x00, 0x7E, 0x09, 0x00, 0x7E, 0x41, 0x00, 0x7F, 0x72, 0x00, 0x80, 0x05,
+ 0x00, 0x81, 0xED, 0x00, 0x82, 0x79, 0x00, 0x82, 0x79, 0x00, 0x84, 0x57,
+ 0x00, 0x89, 0x10, 0x00, 0x89, 0x96, 0x00, 0x8B, 0x01, 0x00, 0x8B, 0x39,
+ 0x00, 0x8C, 0xD3, 0x00, 0x8D, 0x08, 0x00, 0x8F, 0xB6, 0x00, 0x90, 0x38,
+ 0x00, 0x96, 0xE3, 0x00, 0x97, 0xFF, 0x00, 0x98, 0x3B, 0x00, 0x4E, 0x26,
+ 0x00, 0x51, 0xB5, 0x00, 0x51, 0x68, 0x00, 0x4F, 0x80, 0x00, 0x51, 0x45,
+ 0x00, 0x51, 0x80, 0x00, 0x52, 0xC7, 0x00, 0x52, 0xFA, 0x00, 0x55, 0x9D,
+ 0x00, 0x55, 0x55, 0x00, 0x55, 0x99, 0x00, 0x55, 0xE2, 0x00, 0x58, 0x5A,
+ 0x00, 0x58, 0xB3, 0x00, 0x59, 0x44, 0x00, 0x59, 0x54, 0x00, 0x5A, 0x62,
+ 0x00, 0x5B, 0x28, 0x00, 0x5E, 0xD2, 0x00, 0x5E, 0xD9, 0x00, 0x5F, 0x69,
+ 0x00, 0x5F, 0xAD, 0x00, 0x60, 0xD8, 0x00, 0x61, 0x4E, 0x00, 0x61, 0x08,
+ 0x00, 0x61, 0x8E, 0x00, 0x61, 0x60, 0x00, 0x61, 0xF2, 0x00, 0x62, 0x34,
+ 0x00, 0x63, 0xC4, 0x00, 0x64, 0x1C, 0x00, 0x64, 0x52, 0x00, 0x65, 0x56,
+ 0x00, 0x66, 0x74, 0x00, 0x67, 0x17, 0x00, 0x67, 0x1B, 0x00, 0x67, 0x56,
+ 0x00, 0x6B, 0x79, 0x00, 0x6B, 0xBA, 0x00, 0x6D, 0x41, 0x00, 0x6E, 0xDB,
+ 0x00, 0x6E, 0xCB, 0x00, 0x6F, 0x22, 0x00, 0x70, 0x1E, 0x00, 0x71, 0x6E,
+ 0x00, 0x77, 0xA7, 0x00, 0x72, 0x35, 0x00, 0x72, 0xAF, 0x00, 0x73, 0x2A,
+ 0x00, 0x74, 0x71, 0x00, 0x75, 0x06, 0x00, 0x75, 0x3B, 0x00, 0x76, 0x1D,
+ 0x00, 0x76, 0x1F, 0x00, 0x76, 0xCA, 0x00, 0x76, 0xDB, 0x00, 0x76, 0xF4,
+ 0x00, 0x77, 0x4A, 0x00, 0x77, 0x40, 0x00, 0x78, 0xCC, 0x00, 0x7A, 0xB1,
+ 0x00, 0x7B, 0xC0, 0x00, 0x7C, 0x7B, 0x00, 0x7D, 0x5B, 0x00, 0x7D, 0xF4,
+ 0x00, 0x7F, 0x3E, 0x00, 0x80, 0x05, 0x00, 0x83, 0x52, 0x00, 0x83, 0xEF,
+ 0x00, 0x87, 0x79, 0x00, 0x89, 0x41, 0x00, 0x89, 0x86, 0x00, 0x89, 0x96,
+ 0x00, 0x8A, 0xBF, 0x00, 0x8A, 0xF8, 0x00, 0x8A, 0xCB, 0x00, 0x8B, 0x01,
+ 0x00, 0x8A, 0xFE, 0x00, 0x8A, 0xED, 0x00, 0x8B, 0x39, 0x00, 0x8B, 0x8A,
+ 0x00, 0x8D, 0x08, 0x00, 0x8F, 0x38, 0x00, 0x90, 0x72, 0x00, 0x91, 0x99,
+ 0x00, 0x92, 0x76, 0x00, 0x96, 0x7C, 0x00, 0x96, 0xE3, 0x00, 0x97, 0x56,
+ 0x00, 0x97, 0xDB, 0x00, 0x97, 0xFF, 0x00, 0x98, 0x0B, 0x00, 0x98, 0x3B,
+ 0x00, 0x9B, 0x12, 0x00, 0x9F, 0x9C, 0x02, 0x28, 0x4A, 0x02, 0x28, 0x44,
+ 0x02, 0x33, 0xD5, 0x00, 0x3B, 0x9D, 0x00, 0x40, 0x18, 0x00, 0x40, 0x39,
+ 0x02, 0x52, 0x49, 0x02, 0x5C, 0xD0, 0x02, 0x7E, 0xD3, 0x00, 0x9F, 0x43,
+ 0x00, 0x9F, 0x8E, 0xC0, 0x00, 0x66, 0x00, 0x00, 0x66, 0xC0, 0x00, 0x66,
+ 0x00, 0x00, 0x69, 0xC0, 0x00, 0x66, 0x00, 0x00, 0x6C, 0xC0, 0x00, 0x66,
+ 0x80, 0x00, 0x66, 0x00, 0x00, 0x69, 0xC0, 0x00, 0x66, 0x80, 0x00, 0x66,
+ 0x00, 0x00, 0x6C, 0xC0, 0x01, 0x7F, 0x00, 0x00, 0x74, 0xC0, 0x00, 0x73,
+ 0x00, 0x00, 0x74, 0xC0, 0x05, 0x74, 0x00, 0x05, 0x76, 0xC0, 0x05, 0x74,
+ 0x00, 0x05, 0x65, 0xC0, 0x05, 0x74, 0x00, 0x05, 0x6B, 0xC0, 0x05, 0x7E,
+ 0x00, 0x05, 0x76, 0xC0, 0x05, 0x74, 0x00, 0x05, 0x6D, 0x80, 0x05, 0xD9,
+ 0x00, 0x05, 0xB4, 0x80, 0x05, 0xF2, 0x00, 0x05, 0xB7, 0x04, 0x05, 0xE2,
+ 0x04, 0x05, 0xD0, 0x04, 0x05, 0xD3, 0x04, 0x05, 0xD4, 0x04, 0x05, 0xDB,
+ 0x04, 0x05, 0xDC, 0x04, 0x05, 0xDD, 0x04, 0x05, 0xE8, 0x04, 0x05, 0xEA,
+ 0x04, 0x00, 0x2B, 0x80, 0x05, 0xE9, 0x00, 0x05, 0xC1, 0x80, 0x05, 0xE9,
+ 0x00, 0x05, 0xC2, 0x80, 0xFB, 0x49, 0x00, 0x05, 0xC1, 0x80, 0xFB, 0x49,
+ 0x00, 0x05, 0xC2, 0x80, 0x05, 0xD0, 0x00, 0x05, 0xB7, 0x80, 0x05, 0xD0,
+ 0x00, 0x05, 0xB8, 0x80, 0x05, 0xD0, 0x00, 0x05, 0xBC, 0x80, 0x05, 0xD1,
+ 0x00, 0x05, 0xBC, 0x80, 0x05, 0xD2, 0x00, 0x05, 0xBC, 0x80, 0x05, 0xD3,
+ 0x00, 0x05, 0xBC, 0x80, 0x05, 0xD4, 0x00, 0x05, 0xBC, 0x80, 0x05, 0xD5,
+ 0x00, 0x05, 0xBC, 0x80, 0x05, 0xD6, 0x00, 0x05, 0xBC, 0x80, 0x05, 0xD8,
+ 0x00, 0x05, 0xBC, 0x80, 0x05, 0xD9, 0x00, 0x05, 0xBC, 0x80, 0x05, 0xDA,
+ 0x00, 0x05, 0xBC, 0x80, 0x05, 0xDB, 0x00, 0x05, 0xBC, 0x80, 0x05, 0xDC,
+ 0x00, 0x05, 0xBC, 0x80, 0x05, 0xDE, 0x00, 0x05, 0xBC, 0x80, 0x05, 0xE0,
+ 0x00, 0x05, 0xBC, 0x80, 0x05, 0xE1, 0x00, 0x05, 0xBC, 0x80, 0x05, 0xE3,
+ 0x00, 0x05, 0xBC, 0x80, 0x05, 0xE4, 0x00, 0x05, 0xBC, 0x80, 0x05, 0xE6,
+ 0x00, 0x05, 0xBC, 0x80, 0x05, 0xE7, 0x00, 0x05, 0xBC, 0x80, 0x05, 0xE8,
+ 0x00, 0x05, 0xBC, 0x80, 0x05, 0xE9, 0x00, 0x05, 0xBC, 0x80, 0x05, 0xEA,
+ 0x00, 0x05, 0xBC, 0x80, 0x05, 0xD5, 0x00, 0x05, 0xB9, 0x80, 0x05, 0xD1,
+ 0x00, 0x05, 0xBF, 0x80, 0x05, 0xDB, 0x00, 0x05, 0xBF, 0x80, 0x05, 0xE4,
+ 0x00, 0x05, 0xBF, 0xC0, 0x05, 0xD0, 0x00, 0x05, 0xDC, 0x18, 0x06, 0x71,
+ 0x14, 0x06, 0x71, 0x18, 0x06, 0x7B, 0x14, 0x06, 0x7B, 0x0C, 0x06, 0x7B,
+ 0x10, 0x06, 0x7B, 0x18, 0x06, 0x7E, 0x14, 0x06, 0x7E, 0x0C, 0x06, 0x7E,
+ 0x10, 0x06, 0x7E, 0x18, 0x06, 0x80, 0x14, 0x06, 0x80, 0x0C, 0x06, 0x80,
+ 0x10, 0x06, 0x80, 0x18, 0x06, 0x7A, 0x14, 0x06, 0x7A, 0x0C, 0x06, 0x7A,
+ 0x10, 0x06, 0x7A, 0x18, 0x06, 0x7F, 0x14, 0x06, 0x7F, 0x0C, 0x06, 0x7F,
+ 0x10, 0x06, 0x7F, 0x18, 0x06, 0x79, 0x14, 0x06, 0x79, 0x0C, 0x06, 0x79,
+ 0x10, 0x06, 0x79, 0x18, 0x06, 0xA4, 0x14, 0x06, 0xA4, 0x0C, 0x06, 0xA4,
+ 0x10, 0x06, 0xA4, 0x18, 0x06, 0xA6, 0x14, 0x06, 0xA6, 0x0C, 0x06, 0xA6,
+ 0x10, 0x06, 0xA6, 0x18, 0x06, 0x84, 0x14, 0x06, 0x84, 0x0C, 0x06, 0x84,
+ 0x10, 0x06, 0x84, 0x18, 0x06, 0x83, 0x14, 0x06, 0x83, 0x0C, 0x06, 0x83,
+ 0x10, 0x06, 0x83, 0x18, 0x06, 0x86, 0x14, 0x06, 0x86, 0x0C, 0x06, 0x86,
+ 0x10, 0x06, 0x86, 0x18, 0x06, 0x87, 0x14, 0x06, 0x87, 0x0C, 0x06, 0x87,
+ 0x10, 0x06, 0x87, 0x18, 0x06, 0x8D, 0x14, 0x06, 0x8D, 0x18, 0x06, 0x8C,
+ 0x14, 0x06, 0x8C, 0x18, 0x06, 0x8E, 0x14, 0x06, 0x8E, 0x18, 0x06, 0x88,
+ 0x14, 0x06, 0x88, 0x18, 0x06, 0x98, 0x14, 0x06, 0x98, 0x18, 0x06, 0x91,
+ 0x14, 0x06, 0x91, 0x18, 0x06, 0xA9, 0x14, 0x06, 0xA9, 0x0C, 0x06, 0xA9,
+ 0x10, 0x06, 0xA9, 0x18, 0x06, 0xAF, 0x14, 0x06, 0xAF, 0x0C, 0x06, 0xAF,
+ 0x10, 0x06, 0xAF, 0x18, 0x06, 0xB3, 0x14, 0x06, 0xB3, 0x0C, 0x06, 0xB3,
+ 0x10, 0x06, 0xB3, 0x18, 0x06, 0xB1, 0x14, 0x06, 0xB1, 0x0C, 0x06, 0xB1,
+ 0x10, 0x06, 0xB1, 0x18, 0x06, 0xBA, 0x14, 0x06, 0xBA, 0x18, 0x06, 0xBB,
+ 0x14, 0x06, 0xBB, 0x0C, 0x06, 0xBB, 0x10, 0x06, 0xBB, 0x18, 0x06, 0xC0,
+ 0x14, 0x06, 0xC0, 0x18, 0x06, 0xC1, 0x14, 0x06, 0xC1, 0x0C, 0x06, 0xC1,
+ 0x10, 0x06, 0xC1, 0x18, 0x06, 0xBE, 0x14, 0x06, 0xBE, 0x0C, 0x06, 0xBE,
+ 0x10, 0x06, 0xBE, 0x18, 0x06, 0xD2, 0x14, 0x06, 0xD2, 0x18, 0x06, 0xD3,
+ 0x14, 0x06, 0xD3, 0x18, 0x06, 0xAD, 0x14, 0x06, 0xAD, 0x0C, 0x06, 0xAD,
+ 0x10, 0x06, 0xAD, 0x18, 0x06, 0xC7, 0x14, 0x06, 0xC7, 0x18, 0x06, 0xC6,
+ 0x14, 0x06, 0xC6, 0x18, 0x06, 0xC8, 0x14, 0x06, 0xC8, 0x18, 0x06, 0x77,
+ 0x18, 0x06, 0xCB, 0x14, 0x06, 0xCB, 0x18, 0x06, 0xC5, 0x14, 0x06, 0xC5,
+ 0x18, 0x06, 0xC9, 0x14, 0x06, 0xC9, 0x18, 0x06, 0xD0, 0x14, 0x06, 0xD0,
+ 0x0C, 0x06, 0xD0, 0x10, 0x06, 0xD0, 0x0C, 0x06, 0x49, 0x10, 0x06, 0x49,
+ 0x98, 0x06, 0x26, 0x00, 0x06, 0x27, 0x94, 0x06, 0x26, 0x00, 0x06, 0x27,
+ 0x98, 0x06, 0x26, 0x00, 0x06, 0xD5, 0x94, 0x06, 0x26, 0x00, 0x06, 0xD5,
+ 0x98, 0x06, 0x26, 0x00, 0x06, 0x48, 0x94, 0x06, 0x26, 0x00, 0x06, 0x48,
+ 0x98, 0x06, 0x26, 0x00, 0x06, 0xC7, 0x94, 0x06, 0x26, 0x00, 0x06, 0xC7,
+ 0x98, 0x06, 0x26, 0x00, 0x06, 0xC6, 0x94, 0x06, 0x26, 0x00, 0x06, 0xC6,
+ 0x98, 0x06, 0x26, 0x00, 0x06, 0xC8, 0x94, 0x06, 0x26, 0x00, 0x06, 0xC8,
+ 0x98, 0x06, 0x26, 0x00, 0x06, 0xD0, 0x94, 0x06, 0x26, 0x00, 0x06, 0xD0,
+ 0x8C, 0x06, 0x26, 0x00, 0x06, 0xD0, 0x98, 0x06, 0x26, 0x00, 0x06, 0x49,
+ 0x94, 0x06, 0x26, 0x00, 0x06, 0x49, 0x8C, 0x06, 0x26, 0x00, 0x06, 0x49,
+ 0x18, 0x06, 0xCC, 0x14, 0x06, 0xCC, 0x0C, 0x06, 0xCC, 0x10, 0x06, 0xCC,
+ 0x98, 0x06, 0x26, 0x00, 0x06, 0x2C, 0x98, 0x06, 0x26, 0x00, 0x06, 0x2D,
+ 0x98, 0x06, 0x26, 0x00, 0x06, 0x45, 0x98, 0x06, 0x26, 0x00, 0x06, 0x49,
+ 0x98, 0x06, 0x26, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x28, 0x00, 0x06, 0x2C,
+ 0x98, 0x06, 0x28, 0x00, 0x06, 0x2D, 0x98, 0x06, 0x28, 0x00, 0x06, 0x2E,
+ 0x98, 0x06, 0x28, 0x00, 0x06, 0x45, 0x98, 0x06, 0x28, 0x00, 0x06, 0x49,
+ 0x98, 0x06, 0x28, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x2A, 0x00, 0x06, 0x2C,
+ 0x98, 0x06, 0x2A, 0x00, 0x06, 0x2D, 0x98, 0x06, 0x2A, 0x00, 0x06, 0x2E,
+ 0x98, 0x06, 0x2A, 0x00, 0x06, 0x45, 0x98, 0x06, 0x2A, 0x00, 0x06, 0x49,
+ 0x98, 0x06, 0x2A, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x2B, 0x00, 0x06, 0x2C,
+ 0x98, 0x06, 0x2B, 0x00, 0x06, 0x45, 0x98, 0x06, 0x2B, 0x00, 0x06, 0x49,
+ 0x98, 0x06, 0x2B, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x2C, 0x00, 0x06, 0x2D,
+ 0x98, 0x06, 0x2C, 0x00, 0x06, 0x45, 0x98, 0x06, 0x2D, 0x00, 0x06, 0x2C,
+ 0x98, 0x06, 0x2D, 0x00, 0x06, 0x45, 0x98, 0x06, 0x2E, 0x00, 0x06, 0x2C,
+ 0x98, 0x06, 0x2E, 0x00, 0x06, 0x2D, 0x98, 0x06, 0x2E, 0x00, 0x06, 0x45,
+ 0x98, 0x06, 0x33, 0x00, 0x06, 0x2C, 0x98, 0x06, 0x33, 0x00, 0x06, 0x2D,
+ 0x98, 0x06, 0x33, 0x00, 0x06, 0x2E, 0x98, 0x06, 0x33, 0x00, 0x06, 0x45,
+ 0x98, 0x06, 0x35, 0x00, 0x06, 0x2D, 0x98, 0x06, 0x35, 0x00, 0x06, 0x45,
+ 0x98, 0x06, 0x36, 0x00, 0x06, 0x2C, 0x98, 0x06, 0x36, 0x00, 0x06, 0x2D,
+ 0x98, 0x06, 0x36, 0x00, 0x06, 0x2E, 0x98, 0x06, 0x36, 0x00, 0x06, 0x45,
+ 0x98, 0x06, 0x37, 0x00, 0x06, 0x2D, 0x98, 0x06, 0x37, 0x00, 0x06, 0x45,
+ 0x98, 0x06, 0x38, 0x00, 0x06, 0x45, 0x98, 0x06, 0x39, 0x00, 0x06, 0x2C,
+ 0x98, 0x06, 0x39, 0x00, 0x06, 0x45, 0x98, 0x06, 0x3A, 0x00, 0x06, 0x2C,
+ 0x98, 0x06, 0x3A, 0x00, 0x06, 0x45, 0x98, 0x06, 0x41, 0x00, 0x06, 0x2C,
+ 0x98, 0x06, 0x41, 0x00, 0x06, 0x2D, 0x98, 0x06, 0x41, 0x00, 0x06, 0x2E,
+ 0x98, 0x06, 0x41, 0x00, 0x06, 0x45, 0x98, 0x06, 0x41, 0x00, 0x06, 0x49,
+ 0x98, 0x06, 0x41, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x42, 0x00, 0x06, 0x2D,
+ 0x98, 0x06, 0x42, 0x00, 0x06, 0x45, 0x98, 0x06, 0x42, 0x00, 0x06, 0x49,
+ 0x98, 0x06, 0x42, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x43, 0x00, 0x06, 0x27,
+ 0x98, 0x06, 0x43, 0x00, 0x06, 0x2C, 0x98, 0x06, 0x43, 0x00, 0x06, 0x2D,
+ 0x98, 0x06, 0x43, 0x00, 0x06, 0x2E, 0x98, 0x06, 0x43, 0x00, 0x06, 0x44,
+ 0x98, 0x06, 0x43, 0x00, 0x06, 0x45, 0x98, 0x06, 0x43, 0x00, 0x06, 0x49,
+ 0x98, 0x06, 0x43, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x44, 0x00, 0x06, 0x2C,
+ 0x98, 0x06, 0x44, 0x00, 0x06, 0x2D, 0x98, 0x06, 0x44, 0x00, 0x06, 0x2E,
+ 0x98, 0x06, 0x44, 0x00, 0x06, 0x45, 0x98, 0x06, 0x44, 0x00, 0x06, 0x49,
+ 0x98, 0x06, 0x44, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x45, 0x00, 0x06, 0x2C,
+ 0x98, 0x06, 0x45, 0x00, 0x06, 0x2D, 0x98, 0x06, 0x45, 0x00, 0x06, 0x2E,
+ 0x98, 0x06, 0x45, 0x00, 0x06, 0x45, 0x98, 0x06, 0x45, 0x00, 0x06, 0x49,
+ 0x98, 0x06, 0x45, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x46, 0x00, 0x06, 0x2C,
+ 0x98, 0x06, 0x46, 0x00, 0x06, 0x2D, 0x98, 0x06, 0x46, 0x00, 0x06, 0x2E,
+ 0x98, 0x06, 0x46, 0x00, 0x06, 0x45, 0x98, 0x06, 0x46, 0x00, 0x06, 0x49,
+ 0x98, 0x06, 0x46, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x47, 0x00, 0x06, 0x2C,
+ 0x98, 0x06, 0x47, 0x00, 0x06, 0x45, 0x98, 0x06, 0x47, 0x00, 0x06, 0x49,
+ 0x98, 0x06, 0x47, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x4A, 0x00, 0x06, 0x2C,
+ 0x98, 0x06, 0x4A, 0x00, 0x06, 0x2D, 0x98, 0x06, 0x4A, 0x00, 0x06, 0x2E,
+ 0x98, 0x06, 0x4A, 0x00, 0x06, 0x45, 0x98, 0x06, 0x4A, 0x00, 0x06, 0x49,
+ 0x98, 0x06, 0x4A, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x30, 0x00, 0x06, 0x70,
+ 0x98, 0x06, 0x31, 0x00, 0x06, 0x70, 0x98, 0x06, 0x49, 0x00, 0x06, 0x70,
+ 0x98, 0x00, 0x20, 0x80, 0x06, 0x4C, 0x00, 0x06, 0x51, 0x98, 0x00, 0x20,
+ 0x80, 0x06, 0x4D, 0x00, 0x06, 0x51, 0x98, 0x00, 0x20, 0x80, 0x06, 0x4E,
+ 0x00, 0x06, 0x51, 0x98, 0x00, 0x20, 0x80, 0x06, 0x4F, 0x00, 0x06, 0x51,
+ 0x98, 0x00, 0x20, 0x80, 0x06, 0x50, 0x00, 0x06, 0x51, 0x98, 0x00, 0x20,
+ 0x80, 0x06, 0x51, 0x00, 0x06, 0x70, 0x94, 0x06, 0x26, 0x00, 0x06, 0x31,
+ 0x94, 0x06, 0x26, 0x00, 0x06, 0x32, 0x94, 0x06, 0x26, 0x00, 0x06, 0x45,
+ 0x94, 0x06, 0x26, 0x00, 0x06, 0x46, 0x94, 0x06, 0x26, 0x00, 0x06, 0x49,
+ 0x94, 0x06, 0x26, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x28, 0x00, 0x06, 0x31,
+ 0x94, 0x06, 0x28, 0x00, 0x06, 0x32, 0x94, 0x06, 0x28, 0x00, 0x06, 0x45,
+ 0x94, 0x06, 0x28, 0x00, 0x06, 0x46, 0x94, 0x06, 0x28, 0x00, 0x06, 0x49,
+ 0x94, 0x06, 0x28, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x2A, 0x00, 0x06, 0x31,
+ 0x94, 0x06, 0x2A, 0x00, 0x06, 0x32, 0x94, 0x06, 0x2A, 0x00, 0x06, 0x45,
+ 0x94, 0x06, 0x2A, 0x00, 0x06, 0x46, 0x94, 0x06, 0x2A, 0x00, 0x06, 0x49,
+ 0x94, 0x06, 0x2A, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x2B, 0x00, 0x06, 0x31,
+ 0x94, 0x06, 0x2B, 0x00, 0x06, 0x32, 0x94, 0x06, 0x2B, 0x00, 0x06, 0x45,
+ 0x94, 0x06, 0x2B, 0x00, 0x06, 0x46, 0x94, 0x06, 0x2B, 0x00, 0x06, 0x49,
+ 0x94, 0x06, 0x2B, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x41, 0x00, 0x06, 0x49,
+ 0x94, 0x06, 0x41, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x42, 0x00, 0x06, 0x49,
+ 0x94, 0x06, 0x42, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x43, 0x00, 0x06, 0x27,
+ 0x94, 0x06, 0x43, 0x00, 0x06, 0x44, 0x94, 0x06, 0x43, 0x00, 0x06, 0x45,
+ 0x94, 0x06, 0x43, 0x00, 0x06, 0x49, 0x94, 0x06, 0x43, 0x00, 0x06, 0x4A,
+ 0x94, 0x06, 0x44, 0x00, 0x06, 0x45, 0x94, 0x06, 0x44, 0x00, 0x06, 0x49,
+ 0x94, 0x06, 0x44, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x45, 0x00, 0x06, 0x27,
+ 0x94, 0x06, 0x45, 0x00, 0x06, 0x45, 0x94, 0x06, 0x46, 0x00, 0x06, 0x31,
+ 0x94, 0x06, 0x46, 0x00, 0x06, 0x32, 0x94, 0x06, 0x46, 0x00, 0x06, 0x45,
+ 0x94, 0x06, 0x46, 0x00, 0x06, 0x46, 0x94, 0x06, 0x46, 0x00, 0x06, 0x49,
+ 0x94, 0x06, 0x46, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x49, 0x00, 0x06, 0x70,
+ 0x94, 0x06, 0x4A, 0x00, 0x06, 0x31, 0x94, 0x06, 0x4A, 0x00, 0x06, 0x32,
+ 0x94, 0x06, 0x4A, 0x00, 0x06, 0x45, 0x94, 0x06, 0x4A, 0x00, 0x06, 0x46,
+ 0x94, 0x06, 0x4A, 0x00, 0x06, 0x49, 0x94, 0x06, 0x4A, 0x00, 0x06, 0x4A,
+ 0x8C, 0x06, 0x26, 0x00, 0x06, 0x2C, 0x8C, 0x06, 0x26, 0x00, 0x06, 0x2D,
+ 0x8C, 0x06, 0x26, 0x00, 0x06, 0x2E, 0x8C, 0x06, 0x26, 0x00, 0x06, 0x45,
+ 0x8C, 0x06, 0x26, 0x00, 0x06, 0x47, 0x8C, 0x06, 0x28, 0x00, 0x06, 0x2C,
+ 0x8C, 0x06, 0x28, 0x00, 0x06, 0x2D, 0x8C, 0x06, 0x28, 0x00, 0x06, 0x2E,
+ 0x8C, 0x06, 0x28, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x28, 0x00, 0x06, 0x47,
+ 0x8C, 0x06, 0x2A, 0x00, 0x06, 0x2C, 0x8C, 0x06, 0x2A, 0x00, 0x06, 0x2D,
+ 0x8C, 0x06, 0x2A, 0x00, 0x06, 0x2E, 0x8C, 0x06, 0x2A, 0x00, 0x06, 0x45,
+ 0x8C, 0x06, 0x2A, 0x00, 0x06, 0x47, 0x8C, 0x06, 0x2B, 0x00, 0x06, 0x45,
+ 0x8C, 0x06, 0x2C, 0x00, 0x06, 0x2D, 0x8C, 0x06, 0x2C, 0x00, 0x06, 0x45,
+ 0x8C, 0x06, 0x2D, 0x00, 0x06, 0x2C, 0x8C, 0x06, 0x2D, 0x00, 0x06, 0x45,
+ 0x8C, 0x06, 0x2E, 0x00, 0x06, 0x2C, 0x8C, 0x06, 0x2E, 0x00, 0x06, 0x45,
+ 0x8C, 0x06, 0x33, 0x00, 0x06, 0x2C, 0x8C, 0x06, 0x33, 0x00, 0x06, 0x2D,
+ 0x8C, 0x06, 0x33, 0x00, 0x06, 0x2E, 0x8C, 0x06, 0x33, 0x00, 0x06, 0x45,
+ 0x8C, 0x06, 0x35, 0x00, 0x06, 0x2D, 0x8C, 0x06, 0x35, 0x00, 0x06, 0x2E,
+ 0x8C, 0x06, 0x35, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x36, 0x00, 0x06, 0x2C,
+ 0x8C, 0x06, 0x36, 0x00, 0x06, 0x2D, 0x8C, 0x06, 0x36, 0x00, 0x06, 0x2E,
+ 0x8C, 0x06, 0x36, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x37, 0x00, 0x06, 0x2D,
+ 0x8C, 0x06, 0x38, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x39, 0x00, 0x06, 0x2C,
+ 0x8C, 0x06, 0x39, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x3A, 0x00, 0x06, 0x2C,
+ 0x8C, 0x06, 0x3A, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x41, 0x00, 0x06, 0x2C,
+ 0x8C, 0x06, 0x41, 0x00, 0x06, 0x2D, 0x8C, 0x06, 0x41, 0x00, 0x06, 0x2E,
+ 0x8C, 0x06, 0x41, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x42, 0x00, 0x06, 0x2D,
+ 0x8C, 0x06, 0x42, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x43, 0x00, 0x06, 0x2C,
+ 0x8C, 0x06, 0x43, 0x00, 0x06, 0x2D, 0x8C, 0x06, 0x43, 0x00, 0x06, 0x2E,
+ 0x8C, 0x06, 0x43, 0x00, 0x06, 0x44, 0x8C, 0x06, 0x43, 0x00, 0x06, 0x45,
+ 0x8C, 0x06, 0x44, 0x00, 0x06, 0x2C, 0x8C, 0x06, 0x44, 0x00, 0x06, 0x2D,
+ 0x8C, 0x06, 0x44, 0x00, 0x06, 0x2E, 0x8C, 0x06, 0x44, 0x00, 0x06, 0x45,
+ 0x8C, 0x06, 0x44, 0x00, 0x06, 0x47, 0x8C, 0x06, 0x45, 0x00, 0x06, 0x2C,
+ 0x8C, 0x06, 0x45, 0x00, 0x06, 0x2D, 0x8C, 0x06, 0x45, 0x00, 0x06, 0x2E,
+ 0x8C, 0x06, 0x45, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x46, 0x00, 0x06, 0x2C,
+ 0x8C, 0x06, 0x46, 0x00, 0x06, 0x2D, 0x8C, 0x06, 0x46, 0x00, 0x06, 0x2E,
+ 0x8C, 0x06, 0x46, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x46, 0x00, 0x06, 0x47,
+ 0x8C, 0x06, 0x47, 0x00, 0x06, 0x2C, 0x8C, 0x06, 0x47, 0x00, 0x06, 0x45,
+ 0x8C, 0x06, 0x47, 0x00, 0x06, 0x70, 0x8C, 0x06, 0x4A, 0x00, 0x06, 0x2C,
+ 0x8C, 0x06, 0x4A, 0x00, 0x06, 0x2D, 0x8C, 0x06, 0x4A, 0x00, 0x06, 0x2E,
+ 0x8C, 0x06, 0x4A, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x4A, 0x00, 0x06, 0x47,
+ 0x90, 0x06, 0x26, 0x00, 0x06, 0x45, 0x90, 0x06, 0x26, 0x00, 0x06, 0x47,
+ 0x90, 0x06, 0x28, 0x00, 0x06, 0x45, 0x90, 0x06, 0x28, 0x00, 0x06, 0x47,
+ 0x90, 0x06, 0x2A, 0x00, 0x06, 0x45, 0x90, 0x06, 0x2A, 0x00, 0x06, 0x47,
+ 0x90, 0x06, 0x2B, 0x00, 0x06, 0x45, 0x90, 0x06, 0x2B, 0x00, 0x06, 0x47,
+ 0x90, 0x06, 0x33, 0x00, 0x06, 0x45, 0x90, 0x06, 0x33, 0x00, 0x06, 0x47,
+ 0x90, 0x06, 0x34, 0x00, 0x06, 0x45, 0x90, 0x06, 0x34, 0x00, 0x06, 0x47,
+ 0x90, 0x06, 0x43, 0x00, 0x06, 0x44, 0x90, 0x06, 0x43, 0x00, 0x06, 0x45,
+ 0x90, 0x06, 0x44, 0x00, 0x06, 0x45, 0x90, 0x06, 0x46, 0x00, 0x06, 0x45,
+ 0x90, 0x06, 0x46, 0x00, 0x06, 0x47, 0x90, 0x06, 0x4A, 0x00, 0x06, 0x45,
+ 0x90, 0x06, 0x4A, 0x00, 0x06, 0x47, 0x90, 0x06, 0x40, 0x80, 0x06, 0x4E,
+ 0x00, 0x06, 0x51, 0x90, 0x06, 0x40, 0x80, 0x06, 0x4F, 0x00, 0x06, 0x51,
+ 0x90, 0x06, 0x40, 0x80, 0x06, 0x50, 0x00, 0x06, 0x51, 0x98, 0x06, 0x37,
+ 0x00, 0x06, 0x49, 0x98, 0x06, 0x37, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x39,
+ 0x00, 0x06, 0x49, 0x98, 0x06, 0x39, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x3A,
+ 0x00, 0x06, 0x49, 0x98, 0x06, 0x3A, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x33,
+ 0x00, 0x06, 0x49, 0x98, 0x06, 0x33, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x34,
+ 0x00, 0x06, 0x49, 0x98, 0x06, 0x34, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x2D,
+ 0x00, 0x06, 0x49, 0x98, 0x06, 0x2D, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x2C,
+ 0x00, 0x06, 0x49, 0x98, 0x06, 0x2C, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x2E,
+ 0x00, 0x06, 0x49, 0x98, 0x06, 0x2E, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x35,
+ 0x00, 0x06, 0x49, 0x98, 0x06, 0x35, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x36,
+ 0x00, 0x06, 0x49, 0x98, 0x06, 0x36, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x34,
+ 0x00, 0x06, 0x2C, 0x98, 0x06, 0x34, 0x00, 0x06, 0x2D, 0x98, 0x06, 0x34,
+ 0x00, 0x06, 0x2E, 0x98, 0x06, 0x34, 0x00, 0x06, 0x45, 0x98, 0x06, 0x34,
+ 0x00, 0x06, 0x31, 0x98, 0x06, 0x33, 0x00, 0x06, 0x31, 0x98, 0x06, 0x35,
+ 0x00, 0x06, 0x31, 0x98, 0x06, 0x36, 0x00, 0x06, 0x31, 0x94, 0x06, 0x37,
+ 0x00, 0x06, 0x49, 0x94, 0x06, 0x37, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x39,
+ 0x00, 0x06, 0x49, 0x94, 0x06, 0x39, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x3A,
+ 0x00, 0x06, 0x49, 0x94, 0x06, 0x3A, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x33,
+ 0x00, 0x06, 0x49, 0x94, 0x06, 0x33, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x34,
+ 0x00, 0x06, 0x49, 0x94, 0x06, 0x34, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x2D,
+ 0x00, 0x06, 0x49, 0x94, 0x06, 0x2D, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x2C,
+ 0x00, 0x06, 0x49, 0x94, 0x06, 0x2C, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x2E,
+ 0x00, 0x06, 0x49, 0x94, 0x06, 0x2E, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x35,
+ 0x00, 0x06, 0x49, 0x94, 0x06, 0x35, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x36,
+ 0x00, 0x06, 0x49, 0x94, 0x06, 0x36, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x34,
+ 0x00, 0x06, 0x2C, 0x94, 0x06, 0x34, 0x00, 0x06, 0x2D, 0x94, 0x06, 0x34,
+ 0x00, 0x06, 0x2E, 0x94, 0x06, 0x34, 0x00, 0x06, 0x45, 0x94, 0x06, 0x34,
+ 0x00, 0x06, 0x31, 0x94, 0x06, 0x33, 0x00, 0x06, 0x31, 0x94, 0x06, 0x35,
+ 0x00, 0x06, 0x31, 0x94, 0x06, 0x36, 0x00, 0x06, 0x31, 0x8C, 0x06, 0x34,
+ 0x00, 0x06, 0x2C, 0x8C, 0x06, 0x34, 0x00, 0x06, 0x2D, 0x8C, 0x06, 0x34,
+ 0x00, 0x06, 0x2E, 0x8C, 0x06, 0x34, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x33,
+ 0x00, 0x06, 0x47, 0x8C, 0x06, 0x34, 0x00, 0x06, 0x47, 0x8C, 0x06, 0x37,
+ 0x00, 0x06, 0x45, 0x90, 0x06, 0x33, 0x00, 0x06, 0x2C, 0x90, 0x06, 0x33,
+ 0x00, 0x06, 0x2D, 0x90, 0x06, 0x33, 0x00, 0x06, 0x2E, 0x90, 0x06, 0x34,
+ 0x00, 0x06, 0x2C, 0x90, 0x06, 0x34, 0x00, 0x06, 0x2D, 0x90, 0x06, 0x34,
+ 0x00, 0x06, 0x2E, 0x90, 0x06, 0x37, 0x00, 0x06, 0x45, 0x90, 0x06, 0x38,
+ 0x00, 0x06, 0x45, 0x94, 0x06, 0x27, 0x00, 0x06, 0x4B, 0x98, 0x06, 0x27,
+ 0x00, 0x06, 0x4B, 0x8C, 0x06, 0x2A, 0x80, 0x06, 0x2C, 0x00, 0x06, 0x45,
+ 0x94, 0x06, 0x2A, 0x80, 0x06, 0x2D, 0x00, 0x06, 0x2C, 0x8C, 0x06, 0x2A,
+ 0x80, 0x06, 0x2D, 0x00, 0x06, 0x2C, 0x8C, 0x06, 0x2A, 0x80, 0x06, 0x2D,
+ 0x00, 0x06, 0x45, 0x8C, 0x06, 0x2A, 0x80, 0x06, 0x2E, 0x00, 0x06, 0x45,
+ 0x8C, 0x06, 0x2A, 0x80, 0x06, 0x45, 0x00, 0x06, 0x2C, 0x8C, 0x06, 0x2A,
+ 0x80, 0x06, 0x45, 0x00, 0x06, 0x2D, 0x8C, 0x06, 0x2A, 0x80, 0x06, 0x45,
+ 0x00, 0x06, 0x2E, 0x94, 0x06, 0x2C, 0x80, 0x06, 0x45, 0x00, 0x06, 0x2D,
+ 0x8C, 0x06, 0x2C, 0x80, 0x06, 0x45, 0x00, 0x06, 0x2D, 0x94, 0x06, 0x2D,
+ 0x80, 0x06, 0x45, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x2D, 0x80, 0x06, 0x45,
+ 0x00, 0x06, 0x49, 0x8C, 0x06, 0x33, 0x80, 0x06, 0x2D, 0x00, 0x06, 0x2C,
+ 0x8C, 0x06, 0x33, 0x80, 0x06, 0x2C, 0x00, 0x06, 0x2D, 0x94, 0x06, 0x33,
+ 0x80, 0x06, 0x2C, 0x00, 0x06, 0x49, 0x94, 0x06, 0x33, 0x80, 0x06, 0x45,
+ 0x00, 0x06, 0x2D, 0x8C, 0x06, 0x33, 0x80, 0x06, 0x45, 0x00, 0x06, 0x2D,
+ 0x8C, 0x06, 0x33, 0x80, 0x06, 0x45, 0x00, 0x06, 0x2C, 0x94, 0x06, 0x33,
+ 0x80, 0x06, 0x45, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x33, 0x80, 0x06, 0x45,
+ 0x00, 0x06, 0x45, 0x94, 0x06, 0x35, 0x80, 0x06, 0x2D, 0x00, 0x06, 0x2D,
+ 0x8C, 0x06, 0x35, 0x80, 0x06, 0x2D, 0x00, 0x06, 0x2D, 0x94, 0x06, 0x35,
+ 0x80, 0x06, 0x45, 0x00, 0x06, 0x45, 0x94, 0x06, 0x34, 0x80, 0x06, 0x2D,
+ 0x00, 0x06, 0x45, 0x8C, 0x06, 0x34, 0x80, 0x06, 0x2D, 0x00, 0x06, 0x45,
+ 0x94, 0x06, 0x34, 0x80, 0x06, 0x2C, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x34,
+ 0x80, 0x06, 0x45, 0x00, 0x06, 0x2E, 0x8C, 0x06, 0x34, 0x80, 0x06, 0x45,
+ 0x00, 0x06, 0x2E, 0x94, 0x06, 0x34, 0x80, 0x06, 0x45, 0x00, 0x06, 0x45,
+ 0x8C, 0x06, 0x34, 0x80, 0x06, 0x45, 0x00, 0x06, 0x45, 0x94, 0x06, 0x36,
+ 0x80, 0x06, 0x2D, 0x00, 0x06, 0x49, 0x94, 0x06, 0x36, 0x80, 0x06, 0x2E,
+ 0x00, 0x06, 0x45, 0x8C, 0x06, 0x36, 0x80, 0x06, 0x2E, 0x00, 0x06, 0x45,
+ 0x94, 0x06, 0x37, 0x80, 0x06, 0x45, 0x00, 0x06, 0x2D, 0x8C, 0x06, 0x37,
+ 0x80, 0x06, 0x45, 0x00, 0x06, 0x2D, 0x8C, 0x06, 0x37, 0x80, 0x06, 0x45,
+ 0x00, 0x06, 0x45, 0x94, 0x06, 0x37, 0x80, 0x06, 0x45, 0x00, 0x06, 0x4A,
+ 0x94, 0x06, 0x39, 0x80, 0x06, 0x2C, 0x00, 0x06, 0x45, 0x94, 0x06, 0x39,
+ 0x80, 0x06, 0x45, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x39, 0x80, 0x06, 0x45,
+ 0x00, 0x06, 0x45, 0x94, 0x06, 0x39, 0x80, 0x06, 0x45, 0x00, 0x06, 0x49,
+ 0x94, 0x06, 0x3A, 0x80, 0x06, 0x45, 0x00, 0x06, 0x45, 0x94, 0x06, 0x3A,
+ 0x80, 0x06, 0x45, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x3A, 0x80, 0x06, 0x45,
+ 0x00, 0x06, 0x49, 0x94, 0x06, 0x41, 0x80, 0x06, 0x2E, 0x00, 0x06, 0x45,
+ 0x8C, 0x06, 0x41, 0x80, 0x06, 0x2E, 0x00, 0x06, 0x45, 0x94, 0x06, 0x42,
+ 0x80, 0x06, 0x45, 0x00, 0x06, 0x2D, 0x94, 0x06, 0x42, 0x80, 0x06, 0x45,
+ 0x00, 0x06, 0x45, 0x94, 0x06, 0x44, 0x80, 0x06, 0x2D, 0x00, 0x06, 0x45,
+ 0x94, 0x06, 0x44, 0x80, 0x06, 0x2D, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x44,
+ 0x80, 0x06, 0x2D, 0x00, 0x06, 0x49, 0x8C, 0x06, 0x44, 0x80, 0x06, 0x2C,
+ 0x00, 0x06, 0x2C, 0x94, 0x06, 0x44, 0x80, 0x06, 0x2C, 0x00, 0x06, 0x2C,
+ 0x94, 0x06, 0x44, 0x80, 0x06, 0x2E, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x44,
+ 0x80, 0x06, 0x2E, 0x00, 0x06, 0x45, 0x94, 0x06, 0x44, 0x80, 0x06, 0x45,
+ 0x00, 0x06, 0x2D, 0x8C, 0x06, 0x44, 0x80, 0x06, 0x45, 0x00, 0x06, 0x2D,
+ 0x8C, 0x06, 0x45, 0x80, 0x06, 0x2D, 0x00, 0x06, 0x2C, 0x8C, 0x06, 0x45,
+ 0x80, 0x06, 0x2D, 0x00, 0x06, 0x45, 0x94, 0x06, 0x45, 0x80, 0x06, 0x2D,
+ 0x00, 0x06, 0x4A, 0x8C, 0x06, 0x45, 0x80, 0x06, 0x2C, 0x00, 0x06, 0x2D,
+ 0x8C, 0x06, 0x45, 0x80, 0x06, 0x2C, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x45,
+ 0x80, 0x06, 0x2E, 0x00, 0x06, 0x2C, 0x8C, 0x06, 0x45, 0x80, 0x06, 0x2E,
+ 0x00, 0x06, 0x45, 0x8C, 0x06, 0x45, 0x80, 0x06, 0x2C, 0x00, 0x06, 0x2E,
+ 0x8C, 0x06, 0x47, 0x80, 0x06, 0x45, 0x00, 0x06, 0x2C, 0x8C, 0x06, 0x47,
+ 0x80, 0x06, 0x45, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x46, 0x80, 0x06, 0x2D,
+ 0x00, 0x06, 0x45, 0x94, 0x06, 0x46, 0x80, 0x06, 0x2D, 0x00, 0x06, 0x49,
+ 0x94, 0x06, 0x46, 0x80, 0x06, 0x2C, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x46,
+ 0x80, 0x06, 0x2C, 0x00, 0x06, 0x45, 0x94, 0x06, 0x46, 0x80, 0x06, 0x2C,
+ 0x00, 0x06, 0x49, 0x94, 0x06, 0x46, 0x80, 0x06, 0x45, 0x00, 0x06, 0x4A,
+ 0x94, 0x06, 0x46, 0x80, 0x06, 0x45, 0x00, 0x06, 0x49, 0x94, 0x06, 0x4A,
+ 0x80, 0x06, 0x45, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x4A, 0x80, 0x06, 0x45,
+ 0x00, 0x06, 0x45, 0x94, 0x06, 0x28, 0x80, 0x06, 0x2E, 0x00, 0x06, 0x4A,
+ 0x94, 0x06, 0x2A, 0x80, 0x06, 0x2C, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x2A,
+ 0x80, 0x06, 0x2C, 0x00, 0x06, 0x49, 0x94, 0x06, 0x2A, 0x80, 0x06, 0x2E,
+ 0x00, 0x06, 0x4A, 0x94, 0x06, 0x2A, 0x80, 0x06, 0x2E, 0x00, 0x06, 0x49,
+ 0x94, 0x06, 0x2A, 0x80, 0x06, 0x45, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x2A,
+ 0x80, 0x06, 0x45, 0x00, 0x06, 0x49, 0x94, 0x06, 0x2C, 0x80, 0x06, 0x45,
+ 0x00, 0x06, 0x4A, 0x94, 0x06, 0x2C, 0x80, 0x06, 0x2D, 0x00, 0x06, 0x49,
+ 0x94, 0x06, 0x2C, 0x80, 0x06, 0x45, 0x00, 0x06, 0x49, 0x94, 0x06, 0x33,
+ 0x80, 0x06, 0x2E, 0x00, 0x06, 0x49, 0x94, 0x06, 0x35, 0x80, 0x06, 0x2D,
+ 0x00, 0x06, 0x4A, 0x94, 0x06, 0x34, 0x80, 0x06, 0x2D, 0x00, 0x06, 0x4A,
+ 0x94, 0x06, 0x36, 0x80, 0x06, 0x2D, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x44,
+ 0x80, 0x06, 0x2C, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x44, 0x80, 0x06, 0x45,
+ 0x00, 0x06, 0x4A, 0x94, 0x06, 0x4A, 0x80, 0x06, 0x2D, 0x00, 0x06, 0x4A,
+ 0x94, 0x06, 0x4A, 0x80, 0x06, 0x2C, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x4A,
+ 0x80, 0x06, 0x45, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x45, 0x80, 0x06, 0x45,
+ 0x00, 0x06, 0x4A, 0x94, 0x06, 0x42, 0x80, 0x06, 0x45, 0x00, 0x06, 0x4A,
+ 0x94, 0x06, 0x46, 0x80, 0x06, 0x2D, 0x00, 0x06, 0x4A, 0x8C, 0x06, 0x42,
+ 0x80, 0x06, 0x45, 0x00, 0x06, 0x2D, 0x8C, 0x06, 0x44, 0x80, 0x06, 0x2D,
+ 0x00, 0x06, 0x45, 0x94, 0x06, 0x39, 0x80, 0x06, 0x45, 0x00, 0x06, 0x4A,
+ 0x94, 0x06, 0x43, 0x80, 0x06, 0x45, 0x00, 0x06, 0x4A, 0x8C, 0x06, 0x46,
+ 0x80, 0x06, 0x2C, 0x00, 0x06, 0x2D, 0x94, 0x06, 0x45, 0x80, 0x06, 0x2E,
+ 0x00, 0x06, 0x4A, 0x8C, 0x06, 0x44, 0x80, 0x06, 0x2C, 0x00, 0x06, 0x45,
+ 0x94, 0x06, 0x43, 0x80, 0x06, 0x45, 0x00, 0x06, 0x45, 0x94, 0x06, 0x44,
+ 0x80, 0x06, 0x2C, 0x00, 0x06, 0x45, 0x94, 0x06, 0x46, 0x80, 0x06, 0x2C,
+ 0x00, 0x06, 0x2D, 0x94, 0x06, 0x2C, 0x80, 0x06, 0x2D, 0x00, 0x06, 0x4A,
+ 0x94, 0x06, 0x2D, 0x80, 0x06, 0x2C, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x45,
+ 0x80, 0x06, 0x2C, 0x00, 0x06, 0x4A, 0x94, 0x06, 0x41, 0x80, 0x06, 0x45,
+ 0x00, 0x06, 0x4A, 0x94, 0x06, 0x28, 0x80, 0x06, 0x2D, 0x00, 0x06, 0x4A,
+ 0x8C, 0x06, 0x43, 0x80, 0x06, 0x45, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x39,
+ 0x80, 0x06, 0x2C, 0x00, 0x06, 0x45, 0x8C, 0x06, 0x35, 0x80, 0x06, 0x45,
+ 0x00, 0x06, 0x45, 0x94, 0x06, 0x33, 0x80, 0x06, 0x2E, 0x00, 0x06, 0x4A,
+ 0x94, 0x06, 0x46, 0x80, 0x06, 0x2C, 0x00, 0x06, 0x4A, 0x98, 0x06, 0x35,
+ 0x80, 0x06, 0x44, 0x00, 0x06, 0xD2, 0x98, 0x06, 0x42, 0x80, 0x06, 0x44,
+ 0x00, 0x06, 0xD2, 0x98, 0x06, 0x27, 0x80, 0x06, 0x44, 0x80, 0x06, 0x44,
+ 0x00, 0x06, 0x47, 0x98, 0x06, 0x27, 0x80, 0x06, 0x43, 0x80, 0x06, 0x28,
+ 0x00, 0x06, 0x31, 0x98, 0x06, 0x45, 0x80, 0x06, 0x2D, 0x80, 0x06, 0x45,
+ 0x00, 0x06, 0x2F, 0x98, 0x06, 0x35, 0x80, 0x06, 0x44, 0x80, 0x06, 0x39,
+ 0x00, 0x06, 0x45, 0x98, 0x06, 0x31, 0x80, 0x06, 0x33, 0x80, 0x06, 0x48,
+ 0x00, 0x06, 0x44, 0x98, 0x06, 0x39, 0x80, 0x06, 0x44, 0x80, 0x06, 0x4A,
+ 0x00, 0x06, 0x47, 0x98, 0x06, 0x48, 0x80, 0x06, 0x33, 0x80, 0x06, 0x44,
+ 0x00, 0x06, 0x45, 0x98, 0x06, 0x35, 0x80, 0x06, 0x44, 0x00, 0x06, 0x49,
+ 0x98, 0x06, 0x35, 0x80, 0x06, 0x44, 0x80, 0x06, 0x49, 0x80, 0x00, 0x20,
+ 0x80, 0x06, 0x27, 0x80, 0x06, 0x44, 0x80, 0x06, 0x44, 0x80, 0x06, 0x47,
+ 0x80, 0x00, 0x20, 0x80, 0x06, 0x39, 0x80, 0x06, 0x44, 0x80, 0x06, 0x4A,
+ 0x80, 0x06, 0x47, 0x80, 0x00, 0x20, 0x80, 0x06, 0x48, 0x80, 0x06, 0x33,
+ 0x80, 0x06, 0x44, 0x00, 0x06, 0x45, 0x98, 0x06, 0x2C, 0x80, 0x06, 0x44,
+ 0x80, 0x00, 0x20, 0x80, 0x06, 0x2C, 0x80, 0x06, 0x44, 0x80, 0x06, 0x27,
+ 0x80, 0x06, 0x44, 0x00, 0x06, 0x47, 0x98, 0x06, 0x31, 0x80, 0x06, 0xCC,
+ 0x80, 0x06, 0x27, 0x00, 0x06, 0x44, 0x28, 0x00, 0x2C, 0x28, 0x30, 0x01,
+ 0x28, 0x30, 0x02, 0x28, 0x00, 0x3A, 0x28, 0x00, 0x3B, 0x28, 0x00, 0x21,
+ 0x28, 0x00, 0x3F, 0x28, 0x30, 0x16, 0x28, 0x30, 0x17, 0x28, 0x20, 0x26,
+ 0x28, 0x20, 0x25, 0x28, 0x20, 0x14, 0x28, 0x20, 0x13, 0x28, 0x00, 0x5F,
+ 0x28, 0x00, 0x5F, 0x28, 0x00, 0x28, 0x28, 0x00, 0x29, 0x28, 0x00, 0x7B,
+ 0x28, 0x00, 0x7D, 0x28, 0x30, 0x14, 0x28, 0x30, 0x15, 0x28, 0x30, 0x10,
+ 0x28, 0x30, 0x11, 0x28, 0x30, 0x0A, 0x28, 0x30, 0x0B, 0x28, 0x30, 0x08,
+ 0x28, 0x30, 0x09, 0x28, 0x30, 0x0C, 0x28, 0x30, 0x0D, 0x28, 0x30, 0x0E,
+ 0x28, 0x30, 0x0F, 0x28, 0x00, 0x5B, 0x28, 0x00, 0x5D, 0x40, 0x20, 0x3E,
+ 0x40, 0x20, 0x3E, 0x40, 0x20, 0x3E, 0x40, 0x20, 0x3E, 0x40, 0x00, 0x5F,
+ 0x40, 0x00, 0x5F, 0x40, 0x00, 0x5F, 0x34, 0x00, 0x2C, 0x34, 0x30, 0x01,
+ 0x34, 0x00, 0x2E, 0x34, 0x00, 0x3B, 0x34, 0x00, 0x3A, 0x34, 0x00, 0x3F,
+ 0x34, 0x00, 0x21, 0x34, 0x20, 0x14, 0x34, 0x00, 0x28, 0x34, 0x00, 0x29,
+ 0x34, 0x00, 0x7B, 0x34, 0x00, 0x7D, 0x34, 0x30, 0x14, 0x34, 0x30, 0x15,
+ 0x34, 0x00, 0x23, 0x34, 0x00, 0x26, 0x34, 0x00, 0x2A, 0x34, 0x00, 0x2B,
+ 0x34, 0x00, 0x2D, 0x34, 0x00, 0x3C, 0x34, 0x00, 0x3E, 0x34, 0x00, 0x3D,
+ 0x34, 0x00, 0x5C, 0x34, 0x00, 0x24, 0x34, 0x00, 0x25, 0x34, 0x00, 0x40,
+ 0x98, 0x00, 0x20, 0x00, 0x06, 0x4B, 0x90, 0x06, 0x40, 0x00, 0x06, 0x4B,
+ 0x98, 0x00, 0x20, 0x00, 0x06, 0x4C, 0x98, 0x00, 0x20, 0x00, 0x06, 0x4D,
+ 0x98, 0x00, 0x20, 0x00, 0x06, 0x4E, 0x90, 0x06, 0x40, 0x00, 0x06, 0x4E,
+ 0x98, 0x00, 0x20, 0x00, 0x06, 0x4F, 0x90, 0x06, 0x40, 0x00, 0x06, 0x4F,
+ 0x98, 0x00, 0x20, 0x00, 0x06, 0x50, 0x90, 0x06, 0x40, 0x00, 0x06, 0x50,
+ 0x98, 0x00, 0x20, 0x00, 0x06, 0x51, 0x90, 0x06, 0x40, 0x00, 0x06, 0x51,
+ 0x98, 0x00, 0x20, 0x00, 0x06, 0x52, 0x90, 0x06, 0x40, 0x00, 0x06, 0x52,
+ 0x18, 0x06, 0x21, 0x18, 0x06, 0x22, 0x14, 0x06, 0x22, 0x18, 0x06, 0x23,
+ 0x14, 0x06, 0x23, 0x18, 0x06, 0x24, 0x14, 0x06, 0x24, 0x18, 0x06, 0x25,
+ 0x14, 0x06, 0x25, 0x18, 0x06, 0x26, 0x14, 0x06, 0x26, 0x0C, 0x06, 0x26,
+ 0x10, 0x06, 0x26, 0x18, 0x06, 0x27, 0x14, 0x06, 0x27, 0x18, 0x06, 0x28,
+ 0x14, 0x06, 0x28, 0x0C, 0x06, 0x28, 0x10, 0x06, 0x28, 0x18, 0x06, 0x29,
+ 0x14, 0x06, 0x29, 0x18, 0x06, 0x2A, 0x14, 0x06, 0x2A, 0x0C, 0x06, 0x2A,
+ 0x10, 0x06, 0x2A, 0x18, 0x06, 0x2B, 0x14, 0x06, 0x2B, 0x0C, 0x06, 0x2B,
+ 0x10, 0x06, 0x2B, 0x18, 0x06, 0x2C, 0x14, 0x06, 0x2C, 0x0C, 0x06, 0x2C,
+ 0x10, 0x06, 0x2C, 0x18, 0x06, 0x2D, 0x14, 0x06, 0x2D, 0x0C, 0x06, 0x2D,
+ 0x10, 0x06, 0x2D, 0x18, 0x06, 0x2E, 0x14, 0x06, 0x2E, 0x0C, 0x06, 0x2E,
+ 0x10, 0x06, 0x2E, 0x18, 0x06, 0x2F, 0x14, 0x06, 0x2F, 0x18, 0x06, 0x30,
+ 0x14, 0x06, 0x30, 0x18, 0x06, 0x31, 0x14, 0x06, 0x31, 0x18, 0x06, 0x32,
+ 0x14, 0x06, 0x32, 0x18, 0x06, 0x33, 0x14, 0x06, 0x33, 0x0C, 0x06, 0x33,
+ 0x10, 0x06, 0x33, 0x18, 0x06, 0x34, 0x14, 0x06, 0x34, 0x0C, 0x06, 0x34,
+ 0x10, 0x06, 0x34, 0x18, 0x06, 0x35, 0x14, 0x06, 0x35, 0x0C, 0x06, 0x35,
+ 0x10, 0x06, 0x35, 0x18, 0x06, 0x36, 0x14, 0x06, 0x36, 0x0C, 0x06, 0x36,
+ 0x10, 0x06, 0x36, 0x18, 0x06, 0x37, 0x14, 0x06, 0x37, 0x0C, 0x06, 0x37,
+ 0x10, 0x06, 0x37, 0x18, 0x06, 0x38, 0x14, 0x06, 0x38, 0x0C, 0x06, 0x38,
+ 0x10, 0x06, 0x38, 0x18, 0x06, 0x39, 0x14, 0x06, 0x39, 0x0C, 0x06, 0x39,
+ 0x10, 0x06, 0x39, 0x18, 0x06, 0x3A, 0x14, 0x06, 0x3A, 0x0C, 0x06, 0x3A,
+ 0x10, 0x06, 0x3A, 0x18, 0x06, 0x41, 0x14, 0x06, 0x41, 0x0C, 0x06, 0x41,
+ 0x10, 0x06, 0x41, 0x18, 0x06, 0x42, 0x14, 0x06, 0x42, 0x0C, 0x06, 0x42,
+ 0x10, 0x06, 0x42, 0x18, 0x06, 0x43, 0x14, 0x06, 0x43, 0x0C, 0x06, 0x43,
+ 0x10, 0x06, 0x43, 0x18, 0x06, 0x44, 0x14, 0x06, 0x44, 0x0C, 0x06, 0x44,
+ 0x10, 0x06, 0x44, 0x18, 0x06, 0x45, 0x14, 0x06, 0x45, 0x0C, 0x06, 0x45,
+ 0x10, 0x06, 0x45, 0x18, 0x06, 0x46, 0x14, 0x06, 0x46, 0x0C, 0x06, 0x46,
+ 0x10, 0x06, 0x46, 0x18, 0x06, 0x47, 0x14, 0x06, 0x47, 0x0C, 0x06, 0x47,
+ 0x10, 0x06, 0x47, 0x18, 0x06, 0x48, 0x14, 0x06, 0x48, 0x18, 0x06, 0x49,
+ 0x14, 0x06, 0x49, 0x18, 0x06, 0x4A, 0x14, 0x06, 0x4A, 0x0C, 0x06, 0x4A,
+ 0x10, 0x06, 0x4A, 0x98, 0x06, 0x44, 0x00, 0x06, 0x22, 0x94, 0x06, 0x44,
+ 0x00, 0x06, 0x22, 0x98, 0x06, 0x44, 0x00, 0x06, 0x23, 0x94, 0x06, 0x44,
+ 0x00, 0x06, 0x23, 0x98, 0x06, 0x44, 0x00, 0x06, 0x25, 0x94, 0x06, 0x44,
+ 0x00, 0x06, 0x25, 0x98, 0x06, 0x44, 0x00, 0x06, 0x27, 0x94, 0x06, 0x44,
+ 0x00, 0x06, 0x27, 0x2C, 0x00, 0x21, 0x2C, 0x00, 0x22, 0x2C, 0x00, 0x23,
+ 0x2C, 0x00, 0x24, 0x2C, 0x00, 0x25, 0x2C, 0x00, 0x26, 0x2C, 0x00, 0x27,
+ 0x2C, 0x00, 0x28, 0x2C, 0x00, 0x29, 0x2C, 0x00, 0x2A, 0x2C, 0x00, 0x2B,
+ 0x2C, 0x00, 0x2C, 0x2C, 0x00, 0x2D, 0x2C, 0x00, 0x2E, 0x2C, 0x00, 0x2F,
+ 0x2C, 0x00, 0x30, 0x2C, 0x00, 0x31, 0x2C, 0x00, 0x32, 0x2C, 0x00, 0x33,
+ 0x2C, 0x00, 0x34, 0x2C, 0x00, 0x35, 0x2C, 0x00, 0x36, 0x2C, 0x00, 0x37,
+ 0x2C, 0x00, 0x38, 0x2C, 0x00, 0x39, 0x2C, 0x00, 0x3A, 0x2C, 0x00, 0x3B,
+ 0x2C, 0x00, 0x3C, 0x2C, 0x00, 0x3D, 0x2C, 0x00, 0x3E, 0x2C, 0x00, 0x3F,
+ 0x2C, 0x00, 0x40, 0x2C, 0x00, 0x41, 0x2C, 0x00, 0x42, 0x2C, 0x00, 0x43,
+ 0x2C, 0x00, 0x44, 0x2C, 0x00, 0x45, 0x2C, 0x00, 0x46, 0x2C, 0x00, 0x47,
+ 0x2C, 0x00, 0x48, 0x2C, 0x00, 0x49, 0x2C, 0x00, 0x4A, 0x2C, 0x00, 0x4B,
+ 0x2C, 0x00, 0x4C, 0x2C, 0x00, 0x4D, 0x2C, 0x00, 0x4E, 0x2C, 0x00, 0x4F,
+ 0x2C, 0x00, 0x50, 0x2C, 0x00, 0x51, 0x2C, 0x00, 0x52, 0x2C, 0x00, 0x53,
+ 0x2C, 0x00, 0x54, 0x2C, 0x00, 0x55, 0x2C, 0x00, 0x56, 0x2C, 0x00, 0x57,
+ 0x2C, 0x00, 0x58, 0x2C, 0x00, 0x59, 0x2C, 0x00, 0x5A, 0x2C, 0x00, 0x5B,
+ 0x2C, 0x00, 0x5C, 0x2C, 0x00, 0x5D, 0x2C, 0x00, 0x5E, 0x2C, 0x00, 0x5F,
+ 0x2C, 0x00, 0x60, 0x2C, 0x00, 0x61, 0x2C, 0x00, 0x62, 0x2C, 0x00, 0x63,
+ 0x2C, 0x00, 0x64, 0x2C, 0x00, 0x65, 0x2C, 0x00, 0x66, 0x2C, 0x00, 0x67,
+ 0x2C, 0x00, 0x68, 0x2C, 0x00, 0x69, 0x2C, 0x00, 0x6A, 0x2C, 0x00, 0x6B,
+ 0x2C, 0x00, 0x6C, 0x2C, 0x00, 0x6D, 0x2C, 0x00, 0x6E, 0x2C, 0x00, 0x6F,
+ 0x2C, 0x00, 0x70, 0x2C, 0x00, 0x71, 0x2C, 0x00, 0x72, 0x2C, 0x00, 0x73,
+ 0x2C, 0x00, 0x74, 0x2C, 0x00, 0x75, 0x2C, 0x00, 0x76, 0x2C, 0x00, 0x77,
+ 0x2C, 0x00, 0x78, 0x2C, 0x00, 0x79, 0x2C, 0x00, 0x7A, 0x2C, 0x00, 0x7B,
+ 0x2C, 0x00, 0x7C, 0x2C, 0x00, 0x7D, 0x2C, 0x00, 0x7E, 0x2C, 0x29, 0x85,
+ 0x2C, 0x29, 0x86, 0x30, 0x30, 0x02, 0x30, 0x30, 0x0C, 0x30, 0x30, 0x0D,
+ 0x30, 0x30, 0x01, 0x30, 0x30, 0xFB, 0x30, 0x30, 0xF2, 0x30, 0x30, 0xA1,
+ 0x30, 0x30, 0xA3, 0x30, 0x30, 0xA5, 0x30, 0x30, 0xA7, 0x30, 0x30, 0xA9,
+ 0x30, 0x30, 0xE3, 0x30, 0x30, 0xE5, 0x30, 0x30, 0xE7, 0x30, 0x30, 0xC3,
+ 0x30, 0x30, 0xFC, 0x30, 0x30, 0xA2, 0x30, 0x30, 0xA4, 0x30, 0x30, 0xA6,
+ 0x30, 0x30, 0xA8, 0x30, 0x30, 0xAA, 0x30, 0x30, 0xAB, 0x30, 0x30, 0xAD,
+ 0x30, 0x30, 0xAF, 0x30, 0x30, 0xB1, 0x30, 0x30, 0xB3, 0x30, 0x30, 0xB5,
+ 0x30, 0x30, 0xB7, 0x30, 0x30, 0xB9, 0x30, 0x30, 0xBB, 0x30, 0x30, 0xBD,
+ 0x30, 0x30, 0xBF, 0x30, 0x30, 0xC1, 0x30, 0x30, 0xC4, 0x30, 0x30, 0xC6,
+ 0x30, 0x30, 0xC8, 0x30, 0x30, 0xCA, 0x30, 0x30, 0xCB, 0x30, 0x30, 0xCC,
+ 0x30, 0x30, 0xCD, 0x30, 0x30, 0xCE, 0x30, 0x30, 0xCF, 0x30, 0x30, 0xD2,
+ 0x30, 0x30, 0xD5, 0x30, 0x30, 0xD8, 0x30, 0x30, 0xDB, 0x30, 0x30, 0xDE,
+ 0x30, 0x30, 0xDF, 0x30, 0x30, 0xE0, 0x30, 0x30, 0xE1, 0x30, 0x30, 0xE2,
+ 0x30, 0x30, 0xE4, 0x30, 0x30, 0xE6, 0x30, 0x30, 0xE8, 0x30, 0x30, 0xE9,
+ 0x30, 0x30, 0xEA, 0x30, 0x30, 0xEB, 0x30, 0x30, 0xEC, 0x30, 0x30, 0xED,
+ 0x30, 0x30, 0xEF, 0x30, 0x30, 0xF3, 0x30, 0x30, 0x99, 0x30, 0x30, 0x9A,
+ 0x30, 0x31, 0x64, 0x30, 0x31, 0x31, 0x30, 0x31, 0x32, 0x30, 0x31, 0x33,
+ 0x30, 0x31, 0x34, 0x30, 0x31, 0x35, 0x30, 0x31, 0x36, 0x30, 0x31, 0x37,
+ 0x30, 0x31, 0x38, 0x30, 0x31, 0x39, 0x30, 0x31, 0x3A, 0x30, 0x31, 0x3B,
+ 0x30, 0x31, 0x3C, 0x30, 0x31, 0x3D, 0x30, 0x31, 0x3E, 0x30, 0x31, 0x3F,
+ 0x30, 0x31, 0x40, 0x30, 0x31, 0x41, 0x30, 0x31, 0x42, 0x30, 0x31, 0x43,
+ 0x30, 0x31, 0x44, 0x30, 0x31, 0x45, 0x30, 0x31, 0x46, 0x30, 0x31, 0x47,
+ 0x30, 0x31, 0x48, 0x30, 0x31, 0x49, 0x30, 0x31, 0x4A, 0x30, 0x31, 0x4B,
+ 0x30, 0x31, 0x4C, 0x30, 0x31, 0x4D, 0x30, 0x31, 0x4E, 0x30, 0x31, 0x4F,
+ 0x30, 0x31, 0x50, 0x30, 0x31, 0x51, 0x30, 0x31, 0x52, 0x30, 0x31, 0x53,
+ 0x30, 0x31, 0x54, 0x30, 0x31, 0x55, 0x30, 0x31, 0x56, 0x30, 0x31, 0x57,
+ 0x30, 0x31, 0x58, 0x30, 0x31, 0x59, 0x30, 0x31, 0x5A, 0x30, 0x31, 0x5B,
+ 0x30, 0x31, 0x5C, 0x30, 0x31, 0x5D, 0x30, 0x31, 0x5E, 0x30, 0x31, 0x5F,
+ 0x30, 0x31, 0x60, 0x30, 0x31, 0x61, 0x30, 0x31, 0x62, 0x30, 0x31, 0x63,
+ 0x2C, 0x00, 0xA2, 0x2C, 0x00, 0xA3, 0x2C, 0x00, 0xAC, 0x2C, 0x00, 0xAF,
+ 0x2C, 0x00, 0xA6, 0x2C, 0x00, 0xA5, 0x2C, 0x20, 0xA9, 0x30, 0x25, 0x02,
+ 0x30, 0x21, 0x90, 0x30, 0x21, 0x91, 0x30, 0x21, 0x92, 0x30, 0x21, 0x93,
+ 0x30, 0x25, 0xA0, 0x30, 0x25, 0xCB, 0x81, 0xD1, 0x57, 0x01, 0xD1, 0x65,
+ 0x81, 0xD1, 0x58, 0x01, 0xD1, 0x65, 0x81, 0xD1, 0x5F, 0x01, 0xD1, 0x6E,
+ 0x81, 0xD1, 0x5F, 0x01, 0xD1, 0x6F, 0x81, 0xD1, 0x5F, 0x01, 0xD1, 0x70,
+ 0x81, 0xD1, 0x5F, 0x01, 0xD1, 0x71, 0x81, 0xD1, 0x5F, 0x01, 0xD1, 0x72,
+ 0x81, 0xD1, 0xB9, 0x01, 0xD1, 0x65, 0x81, 0xD1, 0xBA, 0x01, 0xD1, 0x65,
+ 0x81, 0xD1, 0xBB, 0x01, 0xD1, 0x6E, 0x81, 0xD1, 0xBC, 0x01, 0xD1, 0x6E,
+ 0x81, 0xD1, 0xBB, 0x01, 0xD1, 0x6F, 0x81, 0xD1, 0xBC, 0x01, 0xD1, 0x6F,
+ 0x04, 0x00, 0x41, 0x04, 0x00, 0x42, 0x04, 0x00, 0x43, 0x04, 0x00, 0x44,
+ 0x04, 0x00, 0x45, 0x04, 0x00, 0x46, 0x04, 0x00, 0x47, 0x04, 0x00, 0x48,
+ 0x04, 0x00, 0x49, 0x04, 0x00, 0x4A, 0x04, 0x00, 0x4B, 0x04, 0x00, 0x4C,
+ 0x04, 0x00, 0x4D, 0x04, 0x00, 0x4E, 0x04, 0x00, 0x4F, 0x04, 0x00, 0x50,
+ 0x04, 0x00, 0x51, 0x04, 0x00, 0x52, 0x04, 0x00, 0x53, 0x04, 0x00, 0x54,
+ 0x04, 0x00, 0x55, 0x04, 0x00, 0x56, 0x04, 0x00, 0x57, 0x04, 0x00, 0x58,
+ 0x04, 0x00, 0x59, 0x04, 0x00, 0x5A, 0x04, 0x00, 0x61, 0x04, 0x00, 0x62,
+ 0x04, 0x00, 0x63, 0x04, 0x00, 0x64, 0x04, 0x00, 0x65, 0x04, 0x00, 0x66,
+ 0x04, 0x00, 0x67, 0x04, 0x00, 0x68, 0x04, 0x00, 0x69, 0x04, 0x00, 0x6A,
+ 0x04, 0x00, 0x6B, 0x04, 0x00, 0x6C, 0x04, 0x00, 0x6D, 0x04, 0x00, 0x6E,
+ 0x04, 0x00, 0x6F, 0x04, 0x00, 0x70, 0x04, 0x00, 0x71, 0x04, 0x00, 0x72,
+ 0x04, 0x00, 0x73, 0x04, 0x00, 0x74, 0x04, 0x00, 0x75, 0x04, 0x00, 0x76,
+ 0x04, 0x00, 0x77, 0x04, 0x00, 0x78, 0x04, 0x00, 0x79, 0x04, 0x00, 0x7A,
+ 0x04, 0x00, 0x41, 0x04, 0x00, 0x42, 0x04, 0x00, 0x43, 0x04, 0x00, 0x44,
+ 0x04, 0x00, 0x45, 0x04, 0x00, 0x46, 0x04, 0x00, 0x47, 0x04, 0x00, 0x48,
+ 0x04, 0x00, 0x49, 0x04, 0x00, 0x4A, 0x04, 0x00, 0x4B, 0x04, 0x00, 0x4C,
+ 0x04, 0x00, 0x4D, 0x04, 0x00, 0x4E, 0x04, 0x00, 0x4F, 0x04, 0x00, 0x50,
+ 0x04, 0x00, 0x51, 0x04, 0x00, 0x52, 0x04, 0x00, 0x53, 0x04, 0x00, 0x54,
+ 0x04, 0x00, 0x55, 0x04, 0x00, 0x56, 0x04, 0x00, 0x57, 0x04, 0x00, 0x58,
+ 0x04, 0x00, 0x59, 0x04, 0x00, 0x5A, 0x04, 0x00, 0x61, 0x04, 0x00, 0x62,
+ 0x04, 0x00, 0x63, 0x04, 0x00, 0x64, 0x04, 0x00, 0x65, 0x04, 0x00, 0x66,
+ 0x04, 0x00, 0x67, 0x04, 0x00, 0x69, 0x04, 0x00, 0x6A, 0x04, 0x00, 0x6B,
+ 0x04, 0x00, 0x6C, 0x04, 0x00, 0x6D, 0x04, 0x00, 0x6E, 0x04, 0x00, 0x6F,
+ 0x04, 0x00, 0x70, 0x04, 0x00, 0x71, 0x04, 0x00, 0x72, 0x04, 0x00, 0x73,
+ 0x04, 0x00, 0x74, 0x04, 0x00, 0x75, 0x04, 0x00, 0x76, 0x04, 0x00, 0x77,
+ 0x04, 0x00, 0x78, 0x04, 0x00, 0x79, 0x04, 0x00, 0x7A, 0x04, 0x00, 0x41,
+ 0x04, 0x00, 0x42, 0x04, 0x00, 0x43, 0x04, 0x00, 0x44, 0x04, 0x00, 0x45,
+ 0x04, 0x00, 0x46, 0x04, 0x00, 0x47, 0x04, 0x00, 0x48, 0x04, 0x00, 0x49,
+ 0x04, 0x00, 0x4A, 0x04, 0x00, 0x4B, 0x04, 0x00, 0x4C, 0x04, 0x00, 0x4D,
+ 0x04, 0x00, 0x4E, 0x04, 0x00, 0x4F, 0x04, 0x00, 0x50, 0x04, 0x00, 0x51,
+ 0x04, 0x00, 0x52, 0x04, 0x00, 0x53, 0x04, 0x00, 0x54, 0x04, 0x00, 0x55,
+ 0x04, 0x00, 0x56, 0x04, 0x00, 0x57, 0x04, 0x00, 0x58, 0x04, 0x00, 0x59,
+ 0x04, 0x00, 0x5A, 0x04, 0x00, 0x61, 0x04, 0x00, 0x62, 0x04, 0x00, 0x63,
+ 0x04, 0x00, 0x64, 0x04, 0x00, 0x65, 0x04, 0x00, 0x66, 0x04, 0x00, 0x67,
+ 0x04, 0x00, 0x68, 0x04, 0x00, 0x69, 0x04, 0x00, 0x6A, 0x04, 0x00, 0x6B,
+ 0x04, 0x00, 0x6C, 0x04, 0x00, 0x6D, 0x04, 0x00, 0x6E, 0x04, 0x00, 0x6F,
+ 0x04, 0x00, 0x70, 0x04, 0x00, 0x71, 0x04, 0x00, 0x72, 0x04, 0x00, 0x73,
+ 0x04, 0x00, 0x74, 0x04, 0x00, 0x75, 0x04, 0x00, 0x76, 0x04, 0x00, 0x77,
+ 0x04, 0x00, 0x78, 0x04, 0x00, 0x79, 0x04, 0x00, 0x7A, 0x04, 0x00, 0x41,
+ 0x04, 0x00, 0x43, 0x04, 0x00, 0x44, 0x04, 0x00, 0x47, 0x04, 0x00, 0x4A,
+ 0x04, 0x00, 0x4B, 0x04, 0x00, 0x4E, 0x04, 0x00, 0x4F, 0x04, 0x00, 0x50,
+ 0x04, 0x00, 0x51, 0x04, 0x00, 0x53, 0x04, 0x00, 0x54, 0x04, 0x00, 0x55,
+ 0x04, 0x00, 0x56, 0x04, 0x00, 0x57, 0x04, 0x00, 0x58, 0x04, 0x00, 0x59,
+ 0x04, 0x00, 0x5A, 0x04, 0x00, 0x61, 0x04, 0x00, 0x62, 0x04, 0x00, 0x63,
+ 0x04, 0x00, 0x64, 0x04, 0x00, 0x66, 0x04, 0x00, 0x68, 0x04, 0x00, 0x69,
+ 0x04, 0x00, 0x6A, 0x04, 0x00, 0x6B, 0x04, 0x00, 0x6C, 0x04, 0x00, 0x6D,
+ 0x04, 0x00, 0x6E, 0x04, 0x00, 0x70, 0x04, 0x00, 0x71, 0x04, 0x00, 0x72,
+ 0x04, 0x00, 0x73, 0x04, 0x00, 0x74, 0x04, 0x00, 0x75, 0x04, 0x00, 0x76,
+ 0x04, 0x00, 0x77, 0x04, 0x00, 0x78, 0x04, 0x00, 0x79, 0x04, 0x00, 0x7A,
+ 0x04, 0x00, 0x41, 0x04, 0x00, 0x42, 0x04, 0x00, 0x43, 0x04, 0x00, 0x44,
+ 0x04, 0x00, 0x45, 0x04, 0x00, 0x46, 0x04, 0x00, 0x47, 0x04, 0x00, 0x48,
+ 0x04, 0x00, 0x49, 0x04, 0x00, 0x4A, 0x04, 0x00, 0x4B, 0x04, 0x00, 0x4C,
+ 0x04, 0x00, 0x4D, 0x04, 0x00, 0x4E, 0x04, 0x00, 0x4F, 0x04, 0x00, 0x50,
+ 0x04, 0x00, 0x51, 0x04, 0x00, 0x52, 0x04, 0x00, 0x53, 0x04, 0x00, 0x54,
+ 0x04, 0x00, 0x55, 0x04, 0x00, 0x56, 0x04, 0x00, 0x57, 0x04, 0x00, 0x58,
+ 0x04, 0x00, 0x59, 0x04, 0x00, 0x5A, 0x04, 0x00, 0x61, 0x04, 0x00, 0x62,
+ 0x04, 0x00, 0x63, 0x04, 0x00, 0x64, 0x04, 0x00, 0x65, 0x04, 0x00, 0x66,
+ 0x04, 0x00, 0x67, 0x04, 0x00, 0x68, 0x04, 0x00, 0x69, 0x04, 0x00, 0x6A,
+ 0x04, 0x00, 0x6B, 0x04, 0x00, 0x6C, 0x04, 0x00, 0x6D, 0x04, 0x00, 0x6E,
+ 0x04, 0x00, 0x6F, 0x04, 0x00, 0x70, 0x04, 0x00, 0x71, 0x04, 0x00, 0x72,
+ 0x04, 0x00, 0x73, 0x04, 0x00, 0x74, 0x04, 0x00, 0x75, 0x04, 0x00, 0x76,
+ 0x04, 0x00, 0x77, 0x04, 0x00, 0x78, 0x04, 0x00, 0x79, 0x04, 0x00, 0x7A,
+ 0x04, 0x00, 0x41, 0x04, 0x00, 0x42, 0x04, 0x00, 0x44, 0x04, 0x00, 0x45,
+ 0x04, 0x00, 0x46, 0x04, 0x00, 0x47, 0x04, 0x00, 0x4A, 0x04, 0x00, 0x4B,
+ 0x04, 0x00, 0x4C, 0x04, 0x00, 0x4D, 0x04, 0x00, 0x4E, 0x04, 0x00, 0x4F,
+ 0x04, 0x00, 0x50, 0x04, 0x00, 0x51, 0x04, 0x00, 0x53, 0x04, 0x00, 0x54,
+ 0x04, 0x00, 0x55, 0x04, 0x00, 0x56, 0x04, 0x00, 0x57, 0x04, 0x00, 0x58,
+ 0x04, 0x00, 0x59, 0x04, 0x00, 0x61, 0x04, 0x00, 0x62, 0x04, 0x00, 0x63,
+ 0x04, 0x00, 0x64, 0x04, 0x00, 0x65, 0x04, 0x00, 0x66, 0x04, 0x00, 0x67,
+ 0x04, 0x00, 0x68, 0x04, 0x00, 0x69, 0x04, 0x00, 0x6A, 0x04, 0x00, 0x6B,
+ 0x04, 0x00, 0x6C, 0x04, 0x00, 0x6D, 0x04, 0x00, 0x6E, 0x04, 0x00, 0x6F,
+ 0x04, 0x00, 0x70, 0x04, 0x00, 0x71, 0x04, 0x00, 0x72, 0x04, 0x00, 0x73,
+ 0x04, 0x00, 0x74, 0x04, 0x00, 0x75, 0x04, 0x00, 0x76, 0x04, 0x00, 0x77,
+ 0x04, 0x00, 0x78, 0x04, 0x00, 0x79, 0x04, 0x00, 0x7A, 0x04, 0x00, 0x41,
+ 0x04, 0x00, 0x42, 0x04, 0x00, 0x44, 0x04, 0x00, 0x45, 0x04, 0x00, 0x46,
+ 0x04, 0x00, 0x47, 0x04, 0x00, 0x49, 0x04, 0x00, 0x4A, 0x04, 0x00, 0x4B,
+ 0x04, 0x00, 0x4C, 0x04, 0x00, 0x4D, 0x04, 0x00, 0x4F, 0x04, 0x00, 0x53,
+ 0x04, 0x00, 0x54, 0x04, 0x00, 0x55, 0x04, 0x00, 0x56, 0x04, 0x00, 0x57,
+ 0x04, 0x00, 0x58, 0x04, 0x00, 0x59, 0x04, 0x00, 0x61, 0x04, 0x00, 0x62,
+ 0x04, 0x00, 0x63, 0x04, 0x00, 0x64, 0x04, 0x00, 0x65, 0x04, 0x00, 0x66,
+ 0x04, 0x00, 0x67, 0x04, 0x00, 0x68, 0x04, 0x00, 0x69, 0x04, 0x00, 0x6A,
+ 0x04, 0x00, 0x6B, 0x04, 0x00, 0x6C, 0x04, 0x00, 0x6D, 0x04, 0x00, 0x6E,
+ 0x04, 0x00, 0x6F, 0x04, 0x00, 0x70, 0x04, 0x00, 0x71, 0x04, 0x00, 0x72,
+ 0x04, 0x00, 0x73, 0x04, 0x00, 0x74, 0x04, 0x00, 0x75, 0x04, 0x00, 0x76,
+ 0x04, 0x00, 0x77, 0x04, 0x00, 0x78, 0x04, 0x00, 0x79, 0x04, 0x00, 0x7A,
+ 0x04, 0x00, 0x41, 0x04, 0x00, 0x42, 0x04, 0x00, 0x43, 0x04, 0x00, 0x44,
+ 0x04, 0x00, 0x45, 0x04, 0x00, 0x46, 0x04, 0x00, 0x47, 0x04, 0x00, 0x48,
+ 0x04, 0x00, 0x49, 0x04, 0x00, 0x4A, 0x04, 0x00, 0x4B, 0x04, 0x00, 0x4C,
+ 0x04, 0x00, 0x4D, 0x04, 0x00, 0x4E, 0x04, 0x00, 0x4F, 0x04, 0x00, 0x50,
+ 0x04, 0x00, 0x51, 0x04, 0x00, 0x52, 0x04, 0x00, 0x53, 0x04, 0x00, 0x54,
+ 0x04, 0x00, 0x55, 0x04, 0x00, 0x56, 0x04, 0x00, 0x57, 0x04, 0x00, 0x58,
+ 0x04, 0x00, 0x59, 0x04, 0x00, 0x5A, 0x04, 0x00, 0x61, 0x04, 0x00, 0x62,
+ 0x04, 0x00, 0x63, 0x04, 0x00, 0x64, 0x04, 0x00, 0x65, 0x04, 0x00, 0x66,
+ 0x04, 0x00, 0x67, 0x04, 0x00, 0x68, 0x04, 0x00, 0x69, 0x04, 0x00, 0x6A,
+ 0x04, 0x00, 0x6B, 0x04, 0x00, 0x6C, 0x04, 0x00, 0x6D, 0x04, 0x00, 0x6E,
+ 0x04, 0x00, 0x6F, 0x04, 0x00, 0x70, 0x04, 0x00, 0x71, 0x04, 0x00, 0x72,
+ 0x04, 0x00, 0x73, 0x04, 0x00, 0x74, 0x04, 0x00, 0x75, 0x04, 0x00, 0x76,
+ 0x04, 0x00, 0x77, 0x04, 0x00, 0x78, 0x04, 0x00, 0x79, 0x04, 0x00, 0x7A,
+ 0x04, 0x00, 0x41, 0x04, 0x00, 0x42, 0x04, 0x00, 0x43, 0x04, 0x00, 0x44,
+ 0x04, 0x00, 0x45, 0x04, 0x00, 0x46, 0x04, 0x00, 0x47, 0x04, 0x00, 0x48,
+ 0x04, 0x00, 0x49, 0x04, 0x00, 0x4A, 0x04, 0x00, 0x4B, 0x04, 0x00, 0x4C,
+ 0x04, 0x00, 0x4D, 0x04, 0x00, 0x4E, 0x04, 0x00, 0x4F, 0x04, 0x00, 0x50,
+ 0x04, 0x00, 0x51, 0x04, 0x00, 0x52, 0x04, 0x00, 0x53, 0x04, 0x00, 0x54,
+ 0x04, 0x00, 0x55, 0x04, 0x00, 0x56, 0x04, 0x00, 0x57, 0x04, 0x00, 0x58,
+ 0x04, 0x00, 0x59, 0x04, 0x00, 0x5A, 0x04, 0x00, 0x61, 0x04, 0x00, 0x62,
+ 0x04, 0x00, 0x63, 0x04, 0x00, 0x64, 0x04, 0x00, 0x65, 0x04, 0x00, 0x66,
+ 0x04, 0x00, 0x67, 0x04, 0x00, 0x68, 0x04, 0x00, 0x69, 0x04, 0x00, 0x6A,
+ 0x04, 0x00, 0x6B, 0x04, 0x00, 0x6C, 0x04, 0x00, 0x6D, 0x04, 0x00, 0x6E,
+ 0x04, 0x00, 0x6F, 0x04, 0x00, 0x70, 0x04, 0x00, 0x71, 0x04, 0x00, 0x72,
+ 0x04, 0x00, 0x73, 0x04, 0x00, 0x74, 0x04, 0x00, 0x75, 0x04, 0x00, 0x76,
+ 0x04, 0x00, 0x77, 0x04, 0x00, 0x78, 0x04, 0x00, 0x79, 0x04, 0x00, 0x7A,
+ 0x04, 0x00, 0x41, 0x04, 0x00, 0x42, 0x04, 0x00, 0x43, 0x04, 0x00, 0x44,
+ 0x04, 0x00, 0x45, 0x04, 0x00, 0x46, 0x04, 0x00, 0x47, 0x04, 0x00, 0x48,
+ 0x04, 0x00, 0x49, 0x04, 0x00, 0x4A, 0x04, 0x00, 0x4B, 0x04, 0x00, 0x4C,
+ 0x04, 0x00, 0x4D, 0x04, 0x00, 0x4E, 0x04, 0x00, 0x4F, 0x04, 0x00, 0x50,
+ 0x04, 0x00, 0x51, 0x04, 0x00, 0x52, 0x04, 0x00, 0x53, 0x04, 0x00, 0x54,
+ 0x04, 0x00, 0x55, 0x04, 0x00, 0x56, 0x04, 0x00, 0x57, 0x04, 0x00, 0x58,
+ 0x04, 0x00, 0x59, 0x04, 0x00, 0x5A, 0x04, 0x00, 0x61, 0x04, 0x00, 0x62,
+ 0x04, 0x00, 0x63, 0x04, 0x00, 0x64, 0x04, 0x00, 0x65, 0x04, 0x00, 0x66,
+ 0x04, 0x00, 0x67, 0x04, 0x00, 0x68, 0x04, 0x00, 0x69, 0x04, 0x00, 0x6A,
+ 0x04, 0x00, 0x6B, 0x04, 0x00, 0x6C, 0x04, 0x00, 0x6D, 0x04, 0x00, 0x6E,
+ 0x04, 0x00, 0x6F, 0x04, 0x00, 0x70, 0x04, 0x00, 0x71, 0x04, 0x00, 0x72,
+ 0x04, 0x00, 0x73, 0x04, 0x00, 0x74, 0x04, 0x00, 0x75, 0x04, 0x00, 0x76,
+ 0x04, 0x00, 0x77, 0x04, 0x00, 0x78, 0x04, 0x00, 0x79, 0x04, 0x00, 0x7A,
+ 0x04, 0x00, 0x41, 0x04, 0x00, 0x42, 0x04, 0x00, 0x43, 0x04, 0x00, 0x44,
+ 0x04, 0x00, 0x45, 0x04, 0x00, 0x46, 0x04, 0x00, 0x47, 0x04, 0x00, 0x48,
+ 0x04, 0x00, 0x49, 0x04, 0x00, 0x4A, 0x04, 0x00, 0x4B, 0x04, 0x00, 0x4C,
+ 0x04, 0x00, 0x4D, 0x04, 0x00, 0x4E, 0x04, 0x00, 0x4F, 0x04, 0x00, 0x50,
+ 0x04, 0x00, 0x51, 0x04, 0x00, 0x52, 0x04, 0x00, 0x53, 0x04, 0x00, 0x54,
+ 0x04, 0x00, 0x55, 0x04, 0x00, 0x56, 0x04, 0x00, 0x57, 0x04, 0x00, 0x58,
+ 0x04, 0x00, 0x59, 0x04, 0x00, 0x5A, 0x04, 0x00, 0x61, 0x04, 0x00, 0x62,
+ 0x04, 0x00, 0x63, 0x04, 0x00, 0x64, 0x04, 0x00, 0x65, 0x04, 0x00, 0x66,
+ 0x04, 0x00, 0x67, 0x04, 0x00, 0x68, 0x04, 0x00, 0x69, 0x04, 0x00, 0x6A,
+ 0x04, 0x00, 0x6B, 0x04, 0x00, 0x6C, 0x04, 0x00, 0x6D, 0x04, 0x00, 0x6E,
+ 0x04, 0x00, 0x6F, 0x04, 0x00, 0x70, 0x04, 0x00, 0x71, 0x04, 0x00, 0x72,
+ 0x04, 0x00, 0x73, 0x04, 0x00, 0x74, 0x04, 0x00, 0x75, 0x04, 0x00, 0x76,
+ 0x04, 0x00, 0x77, 0x04, 0x00, 0x78, 0x04, 0x00, 0x79, 0x04, 0x00, 0x7A,
+ 0x04, 0x00, 0x41, 0x04, 0x00, 0x42, 0x04, 0x00, 0x43, 0x04, 0x00, 0x44,
+ 0x04, 0x00, 0x45, 0x04, 0x00, 0x46, 0x04, 0x00, 0x47, 0x04, 0x00, 0x48,
+ 0x04, 0x00, 0x49, 0x04, 0x00, 0x4A, 0x04, 0x00, 0x4B, 0x04, 0x00, 0x4C,
+ 0x04, 0x00, 0x4D, 0x04, 0x00, 0x4E, 0x04, 0x00, 0x4F, 0x04, 0x00, 0x50,
+ 0x04, 0x00, 0x51, 0x04, 0x00, 0x52, 0x04, 0x00, 0x53, 0x04, 0x00, 0x54,
+ 0x04, 0x00, 0x55, 0x04, 0x00, 0x56, 0x04, 0x00, 0x57, 0x04, 0x00, 0x58,
+ 0x04, 0x00, 0x59, 0x04, 0x00, 0x5A, 0x04, 0x00, 0x61, 0x04, 0x00, 0x62,
+ 0x04, 0x00, 0x63, 0x04, 0x00, 0x64, 0x04, 0x00, 0x65, 0x04, 0x00, 0x66,
+ 0x04, 0x00, 0x67, 0x04, 0x00, 0x68, 0x04, 0x00, 0x69, 0x04, 0x00, 0x6A,
+ 0x04, 0x00, 0x6B, 0x04, 0x00, 0x6C, 0x04, 0x00, 0x6D, 0x04, 0x00, 0x6E,
+ 0x04, 0x00, 0x6F, 0x04, 0x00, 0x70, 0x04, 0x00, 0x71, 0x04, 0x00, 0x72,
+ 0x04, 0x00, 0x73, 0x04, 0x00, 0x74, 0x04, 0x00, 0x75, 0x04, 0x00, 0x76,
+ 0x04, 0x00, 0x77, 0x04, 0x00, 0x78, 0x04, 0x00, 0x79, 0x04, 0x00, 0x7A,
+ 0x04, 0x00, 0x41, 0x04, 0x00, 0x42, 0x04, 0x00, 0x43, 0x04, 0x00, 0x44,
+ 0x04, 0x00, 0x45, 0x04, 0x00, 0x46, 0x04, 0x00, 0x47, 0x04, 0x00, 0x48,
+ 0x04, 0x00, 0x49, 0x04, 0x00, 0x4A, 0x04, 0x00, 0x4B, 0x04, 0x00, 0x4C,
+ 0x04, 0x00, 0x4D, 0x04, 0x00, 0x4E, 0x04, 0x00, 0x4F, 0x04, 0x00, 0x50,
+ 0x04, 0x00, 0x51, 0x04, 0x00, 0x52, 0x04, 0x00, 0x53, 0x04, 0x00, 0x54,
+ 0x04, 0x00, 0x55, 0x04, 0x00, 0x56, 0x04, 0x00, 0x57, 0x04, 0x00, 0x58,
+ 0x04, 0x00, 0x59, 0x04, 0x00, 0x5A, 0x04, 0x00, 0x61, 0x04, 0x00, 0x62,
+ 0x04, 0x00, 0x63, 0x04, 0x00, 0x64, 0x04, 0x00, 0x65, 0x04, 0x00, 0x66,
+ 0x04, 0x00, 0x67, 0x04, 0x00, 0x68, 0x04, 0x00, 0x69, 0x04, 0x00, 0x6A,
+ 0x04, 0x00, 0x6B, 0x04, 0x00, 0x6C, 0x04, 0x00, 0x6D, 0x04, 0x00, 0x6E,
+ 0x04, 0x00, 0x6F, 0x04, 0x00, 0x70, 0x04, 0x00, 0x71, 0x04, 0x00, 0x72,
+ 0x04, 0x00, 0x73, 0x04, 0x00, 0x74, 0x04, 0x00, 0x75, 0x04, 0x00, 0x76,
+ 0x04, 0x00, 0x77, 0x04, 0x00, 0x78, 0x04, 0x00, 0x79, 0x04, 0x00, 0x7A,
+ 0x04, 0x01, 0x31, 0x04, 0x02, 0x37, 0x04, 0x03, 0x91, 0x04, 0x03, 0x92,
+ 0x04, 0x03, 0x93, 0x04, 0x03, 0x94, 0x04, 0x03, 0x95, 0x04, 0x03, 0x96,
+ 0x04, 0x03, 0x97, 0x04, 0x03, 0x98, 0x04, 0x03, 0x99, 0x04, 0x03, 0x9A,
+ 0x04, 0x03, 0x9B, 0x04, 0x03, 0x9C, 0x04, 0x03, 0x9D, 0x04, 0x03, 0x9E,
+ 0x04, 0x03, 0x9F, 0x04, 0x03, 0xA0, 0x04, 0x03, 0xA1, 0x04, 0x03, 0xF4,
+ 0x04, 0x03, 0xA3, 0x04, 0x03, 0xA4, 0x04, 0x03, 0xA5, 0x04, 0x03, 0xA6,
+ 0x04, 0x03, 0xA7, 0x04, 0x03, 0xA8, 0x04, 0x03, 0xA9, 0x04, 0x22, 0x07,
+ 0x04, 0x03, 0xB1, 0x04, 0x03, 0xB2, 0x04, 0x03, 0xB3, 0x04, 0x03, 0xB4,
+ 0x04, 0x03, 0xB5, 0x04, 0x03, 0xB6, 0x04, 0x03, 0xB7, 0x04, 0x03, 0xB8,
+ 0x04, 0x03, 0xB9, 0x04, 0x03, 0xBA, 0x04, 0x03, 0xBB, 0x04, 0x03, 0xBC,
+ 0x04, 0x03, 0xBD, 0x04, 0x03, 0xBE, 0x04, 0x03, 0xBF, 0x04, 0x03, 0xC0,
+ 0x04, 0x03, 0xC1, 0x04, 0x03, 0xC2, 0x04, 0x03, 0xC3, 0x04, 0x03, 0xC4,
+ 0x04, 0x03, 0xC5, 0x04, 0x03, 0xC6, 0x04, 0x03, 0xC7, 0x04, 0x03, 0xC8,
+ 0x04, 0x03, 0xC9, 0x04, 0x22, 0x02, 0x04, 0x03, 0xF5, 0x04, 0x03, 0xD1,
+ 0x04, 0x03, 0xF0, 0x04, 0x03, 0xD5, 0x04, 0x03, 0xF1, 0x04, 0x03, 0xD6,
+ 0x04, 0x03, 0x91, 0x04, 0x03, 0x92, 0x04, 0x03, 0x93, 0x04, 0x03, 0x94,
+ 0x04, 0x03, 0x95, 0x04, 0x03, 0x96, 0x04, 0x03, 0x97, 0x04, 0x03, 0x98,
+ 0x04, 0x03, 0x99, 0x04, 0x03, 0x9A, 0x04, 0x03, 0x9B, 0x04, 0x03, 0x9C,
+ 0x04, 0x03, 0x9D, 0x04, 0x03, 0x9E, 0x04, 0x03, 0x9F, 0x04, 0x03, 0xA0,
+ 0x04, 0x03, 0xA1, 0x04, 0x03, 0xF4, 0x04, 0x03, 0xA3, 0x04, 0x03, 0xA4,
+ 0x04, 0x03, 0xA5, 0x04, 0x03, 0xA6, 0x04, 0x03, 0xA7, 0x04, 0x03, 0xA8,
+ 0x04, 0x03, 0xA9, 0x04, 0x22, 0x07, 0x04, 0x03, 0xB1, 0x04, 0x03, 0xB2,
+ 0x04, 0x03, 0xB3, 0x04, 0x03, 0xB4, 0x04, 0x03, 0xB5, 0x04, 0x03, 0xB6,
+ 0x04, 0x03, 0xB7, 0x04, 0x03, 0xB8, 0x04, 0x03, 0xB9, 0x04, 0x03, 0xBA,
+ 0x04, 0x03, 0xBB, 0x04, 0x03, 0xBC, 0x04, 0x03, 0xBD, 0x04, 0x03, 0xBE,
+ 0x04, 0x03, 0xBF, 0x04, 0x03, 0xC0, 0x04, 0x03, 0xC1, 0x04, 0x03, 0xC2,
+ 0x04, 0x03, 0xC3, 0x04, 0x03, 0xC4, 0x04, 0x03, 0xC5, 0x04, 0x03, 0xC6,
+ 0x04, 0x03, 0xC7, 0x04, 0x03, 0xC8, 0x04, 0x03, 0xC9, 0x04, 0x22, 0x02,
+ 0x04, 0x03, 0xF5, 0x04, 0x03, 0xD1, 0x04, 0x03, 0xF0, 0x04, 0x03, 0xD5,
+ 0x04, 0x03, 0xF1, 0x04, 0x03, 0xD6, 0x04, 0x03, 0x91, 0x04, 0x03, 0x92,
+ 0x04, 0x03, 0x93, 0x04, 0x03, 0x94, 0x04, 0x03, 0x95, 0x04, 0x03, 0x96,
+ 0x04, 0x03, 0x97, 0x04, 0x03, 0x98, 0x04, 0x03, 0x99, 0x04, 0x03, 0x9A,
+ 0x04, 0x03, 0x9B, 0x04, 0x03, 0x9C, 0x04, 0x03, 0x9D, 0x04, 0x03, 0x9E,
+ 0x04, 0x03, 0x9F, 0x04, 0x03, 0xA0, 0x04, 0x03, 0xA1, 0x04, 0x03, 0xF4,
+ 0x04, 0x03, 0xA3, 0x04, 0x03, 0xA4, 0x04, 0x03, 0xA5, 0x04, 0x03, 0xA6,
+ 0x04, 0x03, 0xA7, 0x04, 0x03, 0xA8, 0x04, 0x03, 0xA9, 0x04, 0x22, 0x07,
+ 0x04, 0x03, 0xB1, 0x04, 0x03, 0xB2, 0x04, 0x03, 0xB3, 0x04, 0x03, 0xB4,
+ 0x04, 0x03, 0xB5, 0x04, 0x03, 0xB6, 0x04, 0x03, 0xB7, 0x04, 0x03, 0xB8,
+ 0x04, 0x03, 0xB9, 0x04, 0x03, 0xBA, 0x04, 0x03, 0xBB, 0x04, 0x03, 0xBC,
+ 0x04, 0x03, 0xBD, 0x04, 0x03, 0xBE, 0x04, 0x03, 0xBF, 0x04, 0x03, 0xC0,
+ 0x04, 0x03, 0xC1, 0x04, 0x03, 0xC2, 0x04, 0x03, 0xC3, 0x04, 0x03, 0xC4,
+ 0x04, 0x03, 0xC5, 0x04, 0x03, 0xC6, 0x04, 0x03, 0xC7, 0x04, 0x03, 0xC8,
+ 0x04, 0x03, 0xC9, 0x04, 0x22, 0x02, 0x04, 0x03, 0xF5, 0x04, 0x03, 0xD1,
+ 0x04, 0x03, 0xF0, 0x04, 0x03, 0xD5, 0x04, 0x03, 0xF1, 0x04, 0x03, 0xD6,
+ 0x04, 0x03, 0x91, 0x04, 0x03, 0x92, 0x04, 0x03, 0x93, 0x04, 0x03, 0x94,
+ 0x04, 0x03, 0x95, 0x04, 0x03, 0x96, 0x04, 0x03, 0x97, 0x04, 0x03, 0x98,
+ 0x04, 0x03, 0x99, 0x04, 0x03, 0x9A, 0x04, 0x03, 0x9B, 0x04, 0x03, 0x9C,
+ 0x04, 0x03, 0x9D, 0x04, 0x03, 0x9E, 0x04, 0x03, 0x9F, 0x04, 0x03, 0xA0,
+ 0x04, 0x03, 0xA1, 0x04, 0x03, 0xF4, 0x04, 0x03, 0xA3, 0x04, 0x03, 0xA4,
+ 0x04, 0x03, 0xA5, 0x04, 0x03, 0xA6, 0x04, 0x03, 0xA7, 0x04, 0x03, 0xA8,
+ 0x04, 0x03, 0xA9, 0x04, 0x22, 0x07, 0x04, 0x03, 0xB1, 0x04, 0x03, 0xB2,
+ 0x04, 0x03, 0xB3, 0x04, 0x03, 0xB4, 0x04, 0x03, 0xB5, 0x04, 0x03, 0xB6,
+ 0x04, 0x03, 0xB7, 0x04, 0x03, 0xB8, 0x04, 0x03, 0xB9, 0x04, 0x03, 0xBA,
+ 0x04, 0x03, 0xBB, 0x04, 0x03, 0xBC, 0x04, 0x03, 0xBD, 0x04, 0x03, 0xBE,
+ 0x04, 0x03, 0xBF, 0x04, 0x03, 0xC0, 0x04, 0x03, 0xC1, 0x04, 0x03, 0xC2,
+ 0x04, 0x03, 0xC3, 0x04, 0x03, 0xC4, 0x04, 0x03, 0xC5, 0x04, 0x03, 0xC6,
+ 0x04, 0x03, 0xC7, 0x04, 0x03, 0xC8, 0x04, 0x03, 0xC9, 0x04, 0x22, 0x02,
+ 0x04, 0x03, 0xF5, 0x04, 0x03, 0xD1, 0x04, 0x03, 0xF0, 0x04, 0x03, 0xD5,
+ 0x04, 0x03, 0xF1, 0x04, 0x03, 0xD6, 0x04, 0x03, 0x91, 0x04, 0x03, 0x92,
+ 0x04, 0x03, 0x93, 0x04, 0x03, 0x94, 0x04, 0x03, 0x95, 0x04, 0x03, 0x96,
+ 0x04, 0x03, 0x97, 0x04, 0x03, 0x98, 0x04, 0x03, 0x99, 0x04, 0x03, 0x9A,
+ 0x04, 0x03, 0x9B, 0x04, 0x03, 0x9C, 0x04, 0x03, 0x9D, 0x04, 0x03, 0x9E,
+ 0x04, 0x03, 0x9F, 0x04, 0x03, 0xA0, 0x04, 0x03, 0xA1, 0x04, 0x03, 0xF4,
+ 0x04, 0x03, 0xA3, 0x04, 0x03, 0xA4, 0x04, 0x03, 0xA5, 0x04, 0x03, 0xA6,
+ 0x04, 0x03, 0xA7, 0x04, 0x03, 0xA8, 0x04, 0x03, 0xA9, 0x04, 0x22, 0x07,
+ 0x04, 0x03, 0xB1, 0x04, 0x03, 0xB2, 0x04, 0x03, 0xB3, 0x04, 0x03, 0xB4,
+ 0x04, 0x03, 0xB5, 0x04, 0x03, 0xB6, 0x04, 0x03, 0xB7, 0x04, 0x03, 0xB8,
+ 0x04, 0x03, 0xB9, 0x04, 0x03, 0xBA, 0x04, 0x03, 0xBB, 0x04, 0x03, 0xBC,
+ 0x04, 0x03, 0xBD, 0x04, 0x03, 0xBE, 0x04, 0x03, 0xBF, 0x04, 0x03, 0xC0,
+ 0x04, 0x03, 0xC1, 0x04, 0x03, 0xC2, 0x04, 0x03, 0xC3, 0x04, 0x03, 0xC4,
+ 0x04, 0x03, 0xC5, 0x04, 0x03, 0xC6, 0x04, 0x03, 0xC7, 0x04, 0x03, 0xC8,
+ 0x04, 0x03, 0xC9, 0x04, 0x22, 0x02, 0x04, 0x03, 0xF5, 0x04, 0x03, 0xD1,
+ 0x04, 0x03, 0xF0, 0x04, 0x03, 0xD5, 0x04, 0x03, 0xF1, 0x04, 0x03, 0xD6,
+ 0x04, 0x03, 0xDC, 0x04, 0x03, 0xDD, 0x04, 0x00, 0x30, 0x04, 0x00, 0x31,
+ 0x04, 0x00, 0x32, 0x04, 0x00, 0x33, 0x04, 0x00, 0x34, 0x04, 0x00, 0x35,
+ 0x04, 0x00, 0x36, 0x04, 0x00, 0x37, 0x04, 0x00, 0x38, 0x04, 0x00, 0x39,
+ 0x04, 0x00, 0x30, 0x04, 0x00, 0x31, 0x04, 0x00, 0x32, 0x04, 0x00, 0x33,
+ 0x04, 0x00, 0x34, 0x04, 0x00, 0x35, 0x04, 0x00, 0x36, 0x04, 0x00, 0x37,
+ 0x04, 0x00, 0x38, 0x04, 0x00, 0x39, 0x04, 0x00, 0x30, 0x04, 0x00, 0x31,
+ 0x04, 0x00, 0x32, 0x04, 0x00, 0x33, 0x04, 0x00, 0x34, 0x04, 0x00, 0x35,
+ 0x04, 0x00, 0x36, 0x04, 0x00, 0x37, 0x04, 0x00, 0x38, 0x04, 0x00, 0x39,
+ 0x04, 0x00, 0x30, 0x04, 0x00, 0x31, 0x04, 0x00, 0x32, 0x04, 0x00, 0x33,
+ 0x04, 0x00, 0x34, 0x04, 0x00, 0x35, 0x04, 0x00, 0x36, 0x04, 0x00, 0x37,
+ 0x04, 0x00, 0x38, 0x04, 0x00, 0x39, 0x04, 0x00, 0x30, 0x04, 0x00, 0x31,
+ 0x04, 0x00, 0x32, 0x04, 0x00, 0x33, 0x04, 0x00, 0x34, 0x04, 0x00, 0x35,
+ 0x04, 0x00, 0x36, 0x04, 0x00, 0x37, 0x04, 0x00, 0x38, 0x04, 0x00, 0x39,
+ 0x00, 0x4E, 0x3D, 0x00, 0x4E, 0x38, 0x00, 0x4E, 0x41, 0x02, 0x01, 0x22,
+ 0x00, 0x4F, 0x60, 0x00, 0x4F, 0xAE, 0x00, 0x4F, 0xBB, 0x00, 0x50, 0x02,
+ 0x00, 0x50, 0x7A, 0x00, 0x50, 0x99, 0x00, 0x50, 0xE7, 0x00, 0x50, 0xCF,
+ 0x00, 0x34, 0x9E, 0x02, 0x06, 0x3A, 0x00, 0x51, 0x4D, 0x00, 0x51, 0x54,
+ 0x00, 0x51, 0x64, 0x00, 0x51, 0x77, 0x02, 0x05, 0x1C, 0x00, 0x34, 0xB9,
+ 0x00, 0x51, 0x67, 0x00, 0x51, 0x8D, 0x02, 0x05, 0x4B, 0x00, 0x51, 0x97,
+ 0x00, 0x51, 0xA4, 0x00, 0x4E, 0xCC, 0x00, 0x51, 0xAC, 0x00, 0x51, 0xB5,
+ 0x02, 0x91, 0xDF, 0x00, 0x51, 0xF5, 0x00, 0x52, 0x03, 0x00, 0x34, 0xDF,
+ 0x00, 0x52, 0x3B, 0x00, 0x52, 0x46, 0x00, 0x52, 0x72, 0x00, 0x52, 0x77,
+ 0x00, 0x35, 0x15, 0x00, 0x52, 0xC7, 0x00, 0x52, 0xC9, 0x00, 0x52, 0xE4,
+ 0x00, 0x52, 0xFA, 0x00, 0x53, 0x05, 0x00, 0x53, 0x06, 0x00, 0x53, 0x17,
+ 0x00, 0x53, 0x49, 0x00, 0x53, 0x51, 0x00, 0x53, 0x5A, 0x00, 0x53, 0x73,
+ 0x00, 0x53, 0x7D, 0x00, 0x53, 0x7F, 0x00, 0x53, 0x7F, 0x00, 0x53, 0x7F,
+ 0x02, 0x0A, 0x2C, 0x00, 0x70, 0x70, 0x00, 0x53, 0xCA, 0x00, 0x53, 0xDF,
+ 0x02, 0x0B, 0x63, 0x00, 0x53, 0xEB, 0x00, 0x53, 0xF1, 0x00, 0x54, 0x06,
+ 0x00, 0x54, 0x9E, 0x00, 0x54, 0x38, 0x00, 0x54, 0x48, 0x00, 0x54, 0x68,
+ 0x00, 0x54, 0xA2, 0x00, 0x54, 0xF6, 0x00, 0x55, 0x10, 0x00, 0x55, 0x53,
+ 0x00, 0x55, 0x63, 0x00, 0x55, 0x84, 0x00, 0x55, 0x84, 0x00, 0x55, 0x99,
+ 0x00, 0x55, 0xAB, 0x00, 0x55, 0xB3, 0x00, 0x55, 0xC2, 0x00, 0x57, 0x16,
+ 0x00, 0x56, 0x06, 0x00, 0x57, 0x17, 0x00, 0x56, 0x51, 0x00, 0x56, 0x74,
+ 0x00, 0x52, 0x07, 0x00, 0x58, 0xEE, 0x00, 0x57, 0xCE, 0x00, 0x57, 0xF4,
+ 0x00, 0x58, 0x0D, 0x00, 0x57, 0x8B, 0x00, 0x58, 0x32, 0x00, 0x58, 0x31,
+ 0x00, 0x58, 0xAC, 0x02, 0x14, 0xE4, 0x00, 0x58, 0xF2, 0x00, 0x58, 0xF7,
+ 0x00, 0x59, 0x06, 0x00, 0x59, 0x1A, 0x00, 0x59, 0x22, 0x00, 0x59, 0x62,
+ 0x02, 0x16, 0xA8, 0x02, 0x16, 0xEA, 0x00, 0x59, 0xEC, 0x00, 0x5A, 0x1B,
+ 0x00, 0x5A, 0x27, 0x00, 0x59, 0xD8, 0x00, 0x5A, 0x66, 0x00, 0x36, 0xEE,
+ 0x00, 0x36, 0xFC, 0x00, 0x5B, 0x08, 0x00, 0x5B, 0x3E, 0x00, 0x5B, 0x3E,
+ 0x02, 0x19, 0xC8, 0x00, 0x5B, 0xC3, 0x00, 0x5B, 0xD8, 0x00, 0x5B, 0xE7,
+ 0x00, 0x5B, 0xF3, 0x02, 0x1B, 0x18, 0x00, 0x5B, 0xFF, 0x00, 0x5C, 0x06,
+ 0x00, 0x5F, 0x53, 0x00, 0x5C, 0x22, 0x00, 0x37, 0x81, 0x00, 0x5C, 0x60,
+ 0x00, 0x5C, 0x6E, 0x00, 0x5C, 0xC0, 0x00, 0x5C, 0x8D, 0x02, 0x1D, 0xE4,
+ 0x00, 0x5D, 0x43, 0x02, 0x1D, 0xE6, 0x00, 0x5D, 0x6E, 0x00, 0x5D, 0x6B,
+ 0x00, 0x5D, 0x7C, 0x00, 0x5D, 0xE1, 0x00, 0x5D, 0xE2, 0x00, 0x38, 0x2F,
+ 0x00, 0x5D, 0xFD, 0x00, 0x5E, 0x28, 0x00, 0x5E, 0x3D, 0x00, 0x5E, 0x69,
+ 0x00, 0x38, 0x62, 0x02, 0x21, 0x83, 0x00, 0x38, 0x7C, 0x00, 0x5E, 0xB0,
+ 0x00, 0x5E, 0xB3, 0x00, 0x5E, 0xB6, 0x00, 0x5E, 0xCA, 0x02, 0xA3, 0x92,
+ 0x00, 0x5E, 0xFE, 0x02, 0x23, 0x31, 0x02, 0x23, 0x31, 0x00, 0x82, 0x01,
+ 0x00, 0x5F, 0x22, 0x00, 0x5F, 0x22, 0x00, 0x38, 0xC7, 0x02, 0x32, 0xB8,
+ 0x02, 0x61, 0xDA, 0x00, 0x5F, 0x62, 0x00, 0x5F, 0x6B, 0x00, 0x38, 0xE3,
+ 0x00, 0x5F, 0x9A, 0x00, 0x5F, 0xCD, 0x00, 0x5F, 0xD7, 0x00, 0x5F, 0xF9,
+ 0x00, 0x60, 0x81, 0x00, 0x39, 0x3A, 0x00, 0x39, 0x1C, 0x00, 0x60, 0x94,
+ 0x02, 0x26, 0xD4, 0x00, 0x60, 0xC7, 0x00, 0x61, 0x48, 0x00, 0x61, 0x4C,
+ 0x00, 0x61, 0x4E, 0x00, 0x61, 0x4C, 0x00, 0x61, 0x7A, 0x00, 0x61, 0x8E,
+ 0x00, 0x61, 0xB2, 0x00, 0x61, 0xA4, 0x00, 0x61, 0xAF, 0x00, 0x61, 0xDE,
+ 0x00, 0x61, 0xF2, 0x00, 0x61, 0xF6, 0x00, 0x62, 0x10, 0x00, 0x62, 0x1B,
+ 0x00, 0x62, 0x5D, 0x00, 0x62, 0xB1, 0x00, 0x62, 0xD4, 0x00, 0x63, 0x50,
+ 0x02, 0x2B, 0x0C, 0x00, 0x63, 0x3D, 0x00, 0x62, 0xFC, 0x00, 0x63, 0x68,
+ 0x00, 0x63, 0x83, 0x00, 0x63, 0xE4, 0x02, 0x2B, 0xF1, 0x00, 0x64, 0x22,
+ 0x00, 0x63, 0xC5, 0x00, 0x63, 0xA9, 0x00, 0x3A, 0x2E, 0x00, 0x64, 0x69,
+ 0x00, 0x64, 0x7E, 0x00, 0x64, 0x9D, 0x00, 0x64, 0x77, 0x00, 0x3A, 0x6C,
+ 0x00, 0x65, 0x4F, 0x00, 0x65, 0x6C, 0x02, 0x30, 0x0A, 0x00, 0x65, 0xE3,
+ 0x00, 0x66, 0xF8, 0x00, 0x66, 0x49, 0x00, 0x3B, 0x19, 0x00, 0x66, 0x91,
+ 0x00, 0x3B, 0x08, 0x00, 0x3A, 0xE4, 0x00, 0x51, 0x92, 0x00, 0x51, 0x95,
+ 0x00, 0x67, 0x00, 0x00, 0x66, 0x9C, 0x00, 0x80, 0xAD, 0x00, 0x43, 0xD9,
+ 0x00, 0x67, 0x17, 0x00, 0x67, 0x1B, 0x00, 0x67, 0x21, 0x00, 0x67, 0x5E,
+ 0x00, 0x67, 0x53, 0x02, 0x33, 0xC3, 0x00, 0x3B, 0x49, 0x00, 0x67, 0xFA,
+ 0x00, 0x67, 0x85, 0x00, 0x68, 0x52, 0x00, 0x68, 0x85, 0x02, 0x34, 0x6D,
+ 0x00, 0x68, 0x8E, 0x00, 0x68, 0x1F, 0x00, 0x69, 0x14, 0x00, 0x3B, 0x9D,
+ 0x00, 0x69, 0x42, 0x00, 0x69, 0xA3, 0x00, 0x69, 0xEA, 0x00, 0x6A, 0xA8,
+ 0x02, 0x36, 0xA3, 0x00, 0x6A, 0xDB, 0x00, 0x3C, 0x18, 0x00, 0x6B, 0x21,
+ 0x02, 0x38, 0xA7, 0x00, 0x6B, 0x54, 0x00, 0x3C, 0x4E, 0x00, 0x6B, 0x72,
+ 0x00, 0x6B, 0x9F, 0x00, 0x6B, 0xBA, 0x00, 0x6B, 0xBB, 0x02, 0x3A, 0x8D,
+ 0x02, 0x1D, 0x0B, 0x02, 0x3A, 0xFA, 0x00, 0x6C, 0x4E, 0x02, 0x3C, 0xBC,
+ 0x00, 0x6C, 0xBF, 0x00, 0x6C, 0xCD, 0x00, 0x6C, 0x67, 0x00, 0x6D, 0x16,
+ 0x00, 0x6D, 0x3E, 0x00, 0x6D, 0x77, 0x00, 0x6D, 0x41, 0x00, 0x6D, 0x69,
+ 0x00, 0x6D, 0x78, 0x00, 0x6D, 0x85, 0x02, 0x3D, 0x1E, 0x00, 0x6D, 0x34,
+ 0x00, 0x6E, 0x2F, 0x00, 0x6E, 0x6E, 0x00, 0x3D, 0x33, 0x00, 0x6E, 0xCB,
+ 0x00, 0x6E, 0xC7, 0x02, 0x3E, 0xD1, 0x00, 0x6D, 0xF9, 0x00, 0x6F, 0x6E,
+ 0x02, 0x3F, 0x5E, 0x02, 0x3F, 0x8E, 0x00, 0x6F, 0xC6, 0x00, 0x70, 0x39,
+ 0x00, 0x70, 0x1E, 0x00, 0x70, 0x1B, 0x00, 0x3D, 0x96, 0x00, 0x70, 0x4A,
+ 0x00, 0x70, 0x7D, 0x00, 0x70, 0x77, 0x00, 0x70, 0xAD, 0x02, 0x05, 0x25,
+ 0x00, 0x71, 0x45, 0x02, 0x42, 0x63, 0x00, 0x71, 0x9C, 0x02, 0x43, 0xAB,
+ 0x00, 0x72, 0x28, 0x00, 0x72, 0x35, 0x00, 0x72, 0x50, 0x02, 0x46, 0x08,
+ 0x00, 0x72, 0x80, 0x00, 0x72, 0x95, 0x02, 0x47, 0x35, 0x02, 0x48, 0x14,
+ 0x00, 0x73, 0x7A, 0x00, 0x73, 0x8B, 0x00, 0x3E, 0xAC, 0x00, 0x73, 0xA5,
+ 0x00, 0x3E, 0xB8, 0x00, 0x3E, 0xB8, 0x00, 0x74, 0x47, 0x00, 0x74, 0x5C,
+ 0x00, 0x74, 0x71, 0x00, 0x74, 0x85, 0x00, 0x74, 0xCA, 0x00, 0x3F, 0x1B,
+ 0x00, 0x75, 0x24, 0x02, 0x4C, 0x36, 0x00, 0x75, 0x3E, 0x02, 0x4C, 0x92,
+ 0x00, 0x75, 0x70, 0x02, 0x21, 0x9F, 0x00, 0x76, 0x10, 0x02, 0x4F, 0xA1,
+ 0x02, 0x4F, 0xB8, 0x02, 0x50, 0x44, 0x00, 0x3F, 0xFC, 0x00, 0x40, 0x08,
+ 0x00, 0x76, 0xF4, 0x02, 0x50, 0xF3, 0x02, 0x50, 0xF2, 0x02, 0x51, 0x19,
+ 0x02, 0x51, 0x33, 0x00, 0x77, 0x1E, 0x00, 0x77, 0x1F, 0x00, 0x77, 0x1F,
+ 0x00, 0x77, 0x4A, 0x00, 0x40, 0x39, 0x00, 0x77, 0x8B, 0x00, 0x40, 0x46,
+ 0x00, 0x40, 0x96, 0x02, 0x54, 0x1D, 0x00, 0x78, 0x4E, 0x00, 0x78, 0x8C,
+ 0x00, 0x78, 0xCC, 0x00, 0x40, 0xE3, 0x02, 0x56, 0x26, 0x00, 0x79, 0x56,
+ 0x02, 0x56, 0x9A, 0x02, 0x56, 0xC5, 0x00, 0x79, 0x8F, 0x00, 0x79, 0xEB,
+ 0x00, 0x41, 0x2F, 0x00, 0x7A, 0x40, 0x00, 0x7A, 0x4A, 0x00, 0x7A, 0x4F,
+ 0x02, 0x59, 0x7C, 0x02, 0x5A, 0xA7, 0x02, 0x5A, 0xA7, 0x00, 0x7A, 0xEE,
+ 0x00, 0x42, 0x02, 0x02, 0x5B, 0xAB, 0x00, 0x7B, 0xC6, 0x00, 0x7B, 0xC9,
+ 0x00, 0x42, 0x27, 0x02, 0x5C, 0x80, 0x00, 0x7C, 0xD2, 0x00, 0x42, 0xA0,
+ 0x00, 0x7C, 0xE8, 0x00, 0x7C, 0xE3, 0x00, 0x7D, 0x00, 0x02, 0x5F, 0x86,
+ 0x00, 0x7D, 0x63, 0x00, 0x43, 0x01, 0x00, 0x7D, 0xC7, 0x00, 0x7E, 0x02,
+ 0x00, 0x7E, 0x45, 0x00, 0x43, 0x34, 0x02, 0x62, 0x28, 0x02, 0x62, 0x47,
+ 0x00, 0x43, 0x59, 0x02, 0x62, 0xD9, 0x00, 0x7F, 0x7A, 0x02, 0x63, 0x3E,
+ 0x00, 0x7F, 0x95, 0x00, 0x7F, 0xFA, 0x00, 0x80, 0x05, 0x02, 0x64, 0xDA,
+ 0x02, 0x65, 0x23, 0x00, 0x80, 0x60, 0x02, 0x65, 0xA8, 0x00, 0x80, 0x70,
+ 0x02, 0x33, 0x5F, 0x00, 0x43, 0xD5, 0x00, 0x80, 0xB2, 0x00, 0x81, 0x03,
+ 0x00, 0x44, 0x0B, 0x00, 0x81, 0x3E, 0x00, 0x5A, 0xB5, 0x02, 0x67, 0xA7,
+ 0x02, 0x67, 0xB5, 0x02, 0x33, 0x93, 0x02, 0x33, 0x9C, 0x00, 0x82, 0x01,
+ 0x00, 0x82, 0x04, 0x00, 0x8F, 0x9E, 0x00, 0x44, 0x6B, 0x00, 0x82, 0x91,
+ 0x00, 0x82, 0x8B, 0x00, 0x82, 0x9D, 0x00, 0x52, 0xB3, 0x00, 0x82, 0xB1,
+ 0x00, 0x82, 0xB3, 0x00, 0x82, 0xBD, 0x00, 0x82, 0xE6, 0x02, 0x6B, 0x3C,
+ 0x00, 0x82, 0xE5, 0x00, 0x83, 0x1D, 0x00, 0x83, 0x63, 0x00, 0x83, 0xAD,
+ 0x00, 0x83, 0x23, 0x00, 0x83, 0xBD, 0x00, 0x83, 0xE7, 0x00, 0x84, 0x57,
+ 0x00, 0x83, 0x53, 0x00, 0x83, 0xCA, 0x00, 0x83, 0xCC, 0x00, 0x83, 0xDC,
+ 0x02, 0x6C, 0x36, 0x02, 0x6D, 0x6B, 0x02, 0x6C, 0xD5, 0x00, 0x45, 0x2B,
+ 0x00, 0x84, 0xF1, 0x00, 0x84, 0xF3, 0x00, 0x85, 0x16, 0x02, 0x73, 0xCA,
+ 0x00, 0x85, 0x64, 0x02, 0x6F, 0x2C, 0x00, 0x45, 0x5D, 0x00, 0x45, 0x61,
+ 0x02, 0x6F, 0xB1, 0x02, 0x70, 0xD2, 0x00, 0x45, 0x6B, 0x00, 0x86, 0x50,
+ 0x00, 0x86, 0x5C, 0x00, 0x86, 0x67, 0x00, 0x86, 0x69, 0x00, 0x86, 0xA9,
+ 0x00, 0x86, 0x88, 0x00, 0x87, 0x0E, 0x00, 0x86, 0xE2, 0x00, 0x87, 0x79,
+ 0x00, 0x87, 0x28, 0x00, 0x87, 0x6B, 0x00, 0x87, 0x86, 0x00, 0x45, 0xD7,
+ 0x00, 0x87, 0xE1, 0x00, 0x88, 0x01, 0x00, 0x45, 0xF9, 0x00, 0x88, 0x60,
+ 0x00, 0x88, 0x63, 0x02, 0x76, 0x67, 0x00, 0x88, 0xD7, 0x00, 0x88, 0xDE,
+ 0x00, 0x46, 0x35, 0x00, 0x88, 0xFA, 0x00, 0x34, 0xBB, 0x02, 0x78, 0xAE,
+ 0x02, 0x79, 0x66, 0x00, 0x46, 0xBE, 0x00, 0x46, 0xC7, 0x00, 0x8A, 0xA0,
+ 0x00, 0x8A, 0xED, 0x00, 0x8B, 0x8A, 0x00, 0x8C, 0x55, 0x02, 0x7C, 0xA8,
+ 0x00, 0x8C, 0xAB, 0x00, 0x8C, 0xC1, 0x00, 0x8D, 0x1B, 0x00, 0x8D, 0x77,
+ 0x02, 0x7F, 0x2F, 0x02, 0x08, 0x04, 0x00, 0x8D, 0xCB, 0x00, 0x8D, 0xBC,
+ 0x00, 0x8D, 0xF0, 0x02, 0x08, 0xDE, 0x00, 0x8E, 0xD4, 0x00, 0x8F, 0x38,
+ 0x02, 0x85, 0xD2, 0x02, 0x85, 0xED, 0x00, 0x90, 0x94, 0x00, 0x90, 0xF1,
+ 0x00, 0x91, 0x11, 0x02, 0x87, 0x2E, 0x00, 0x91, 0x1B, 0x00, 0x92, 0x38,
+ 0x00, 0x92, 0xD7, 0x00, 0x92, 0xD8, 0x00, 0x92, 0x7C, 0x00, 0x93, 0xF9,
+ 0x00, 0x94, 0x15, 0x02, 0x8B, 0xFA, 0x00, 0x95, 0x8B, 0x00, 0x49, 0x95,
+ 0x00, 0x95, 0xB7, 0x02, 0x8D, 0x77, 0x00, 0x49, 0xE6, 0x00, 0x96, 0xC3,
+ 0x00, 0x5D, 0xB2, 0x00, 0x97, 0x23, 0x02, 0x91, 0x45, 0x02, 0x92, 0x1A,
+ 0x00, 0x4A, 0x6E, 0x00, 0x4A, 0x76, 0x00, 0x97, 0xE0, 0x02, 0x94, 0x0A,
+ 0x00, 0x4A, 0xB2, 0x02, 0x94, 0x96, 0x00, 0x98, 0x0B, 0x00, 0x98, 0x0B,
+ 0x00, 0x98, 0x29, 0x02, 0x95, 0xB6, 0x00, 0x98, 0xE2, 0x00, 0x4B, 0x33,
+ 0x00, 0x99, 0x29, 0x00, 0x99, 0xA7, 0x00, 0x99, 0xC2, 0x00, 0x99, 0xFE,
+ 0x00, 0x4B, 0xCE, 0x02, 0x9B, 0x30, 0x00, 0x9B, 0x12, 0x00, 0x9C, 0x40,
+ 0x00, 0x9C, 0xFD, 0x00, 0x4C, 0xCE, 0x00, 0x4C, 0xED, 0x00, 0x9D, 0x67,
+ 0x02, 0xA0, 0xCE, 0x00, 0x4C, 0xF8, 0x02, 0xA1, 0x05, 0x02, 0xA2, 0x0E,
+ 0x02, 0xA2, 0x91, 0x00, 0x9E, 0xBB, 0x00, 0x4D, 0x56, 0x00, 0x9E, 0xF9,
+ 0x00, 0x9E, 0xFE, 0x00, 0x9F, 0x05, 0x00, 0x9F, 0x0F, 0x00, 0x9F, 0x16,
+ 0x00, 0x9F, 0x3B, 0x02, 0xA6, 0x00
+};
+
+const decomp_index_table_t gl_uninorm_decomp_index_table =
+{
+ {
+ 0, 32, 64, 96, 128, -1, 160, 192,
+ 224, 256, 288, 320, 352, -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, 384, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 416, 448,
+ -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, 480, 512, -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, 544
+ },
+ {
+ -1, -1, -1, -1, -1, 0, 32, 64,
+ 96, 128, 160, 192, -1, 224, 256, 288,
+ 320, 352, -1, -1, -1, 384, 416, 448,
+ -1, -1, 480, 512, 544, 576, 608, 640,
+ 672, 704, 736, 768, -1, -1, 800, 832,
+ -1, -1, -1, -1, 864, -1, -1, -1,
+ -1, 896, -1, 928, -1, -1, 960, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 992, 1024, -1, -1, -1, 1056, -1,
+ -1, 1088, 1120, -1, -1, -1, -1, -1,
+ -1, -1, 1152, -1, 1184, -1, 1216, -1,
+ -1, -1, 1248, -1, -1, -1, 1280, -1,
+ -1, -1, 1312, -1, -1, -1, 1344, -1,
+ -1, 1376, -1, -1, -1, 1408, 1440, -1,
+ 1472, -1, 1504, 1536, 1568, 1600, -1, -1,
+ -1, 1632, -1, -1, -1, -1, -1, 1664,
+ -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,
+ 1696, 1728, 1760, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 1792, 1824, 1856, 1888, 1920, -1, -1,
+ 1952, 1984, 2016, 2048, 2080, 2112, 2144, 2176,
+ 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432,
+ 2464, 2496, 2528, 2560, 2592, 2624, -1, -1,
+ 2656, 2688, 2720, 2752, 2784, 2816, 2848, -1,
+ 2880, 2912, 2944, 2976, 3008, 3040, -1, 3072,
+ -1, 3104, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3136, 3168, 3200, 3232, 3264,
+ -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,
+ 3296, -1, -1, 3328, -1, -1, 3360, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3392, -1, -1, -1, -1,
+ -1, -1, -1, 3424, -1, -1, -1, -1,
+ -1, -1, -1, -1, 3456, -1, -1, 3488,
+ 3520, 3552, 3584, 3616, 3648, 3680, 3712, -1,
+ 3744, 3776, 3808, 3840, 3872, 3904, 3936, 3968,
+ -1, 4000, 4032, 4064, 4096, -1, -1, -1,
+ 4128, 4160, 4192, 4224, 4256, 4288, 4320, 4352,
+ 4384, 4416, 4448, 4480, 4512, 4544, 4576, 4608,
+ -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, 4640, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 4672, 4704, 4736, 4768, 4800, 4832, 4864, 4896,
+ 4928, 4960, 4992, 5024, 5056, 5088, 5120, -1,
+ 5152, 5184, 5216, 5248, 5280, 5312, 5344, 5376,
+ 5408, 5440, 5472, 5504, 5536, 5568, 5600, 5632,
+ 5664, 5696, 5728, 5760, 5792, 5824, 5856, 5888,
+ 5920, 5952, 5984, 6016, 6048, 6080, 6112, 6144,
+ 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 6432, 6464, -1, 6496, 6528, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 6560, 6592, 6624, 6656, 6688, 6720, 6752, 6784,
+ 6816, 6848, 6880, 6912, 6944, 6976, 7008, 7040,
+ 7072, 7104, 7136, 7168, 7200, 7232, 7264, 7296,
+ 7328, 7360, 7392, 7424, 7456, 7488, 7520, 7552,
+ 7584, 7616, 7648, 7680, 7712, 7744, 7776, 7808,
+ 7840, 7872, 7904, 7936, 7968, 8000, 8032, 8064,
+ 8096, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1
+ },
+ {
+ 32768, -1, -1, -1, -1, -1, -1, -1,
+ 32769, -1, 32771, -1, -1, -1, -1, 32772,
+ -1, -1, 32774, 32775, 32776, 32778, -1, -1,
+ 32779, 32781, 32782, -1, 32783, 32786, 32789, -1,
+ 24, 26, 28, 30, 32, 34, -1, 36,
+ 38, 40, 42, 44, 46, 48, 50, 52,
+ -1, 54, 56, 58, 60, 62, 64, -1,
+ -1, 66, 68, 70, 72, 74, -1, -1,
+ 76, 78, 80, 82, 84, 86, -1, 88,
+ 90, 92, 94, 96, 98, 100, 102, 104,
+ -1, 106, 108, 110, 112, 114, 116, -1,
+ -1, 118, 120, 122, 124, 126, -1, 128,
+ 130, 132, 134, 136, 138, 140, 142, 144,
+ 146, 148, 150, 152, 154, 156, 158, 160,
+ -1, -1, 162, 164, 166, 168, 170, 172,
+ 174, 176, 178, 180, 182, 184, 186, 188,
+ 190, 192, 194, 196, 198, 200, -1, -1,
+ 202, 204, 206, 208, 210, 212, 214, 216,
+ 218, -1, 32988, 32990, 224, 226, 228, 230,
+ -1, 232, 234, 236, 238, 240, 242, 33012,
+ 33014, -1, -1, 248, 250, 252, 254, 256,
+ 258, 33028, -1, -1, 262, 264, 266, 268,
+ 270, 272, -1, -1, 274, 276, 278, 280,
+ 282, 284, 286, 288, 290, 292, 294, 296,
+ 298, 300, 302, 304, 306, 308, -1, -1,
+ 310, 312, 314, 316, 318, 320, 322, 324,
+ 326, 328, 330, 332, 334, 336, 338, 340,
+ 342, 344, 346, 348, 350, 352, 354, 33124,
+ 357, 359, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 361,
+ 363, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 33133, 33135, 33137, 33139,
+ 33141, 33143, 33145, 33147, 33149, 383, 385, 387,
+ 389, 391, 393, 395, 397, 399, 401, 403,
+ 405, 407, 409, 411, 413, -1, 415, 417,
+ 419, 421, 423, 425, -1, -1, 427, 429,
+ 431, 433, 435, 437, 439, 441, 443, 445,
+ 447, 33217, 33219, 33221, 455, 457, -1, -1,
+ 459, 461, 463, 465, 467, 469, 471, 473,
+ 475, 477, 479, 481, 483, 485, 487, 489,
+ 491, 493, 495, 497, 499, 501, 503, 505,
+ 507, 509, 511, 513, 515, 517, 519, 521,
+ 523, 525, 527, 529, -1, -1, 531, 533,
+ -1, -1, -1, -1, -1, -1, 535, 537,
+ 539, 541, 543, 545, 547, 549, 551, 553,
+ 555, 557, 559, 561, -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,
+ 33331, 33332, 33333, 33334, 33335, 33336, 33337, 33338,
+ 33339, -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,
+ 33340, 33342, 33344, 33346, 33348, 33350, -1, -1,
+ 33352, 33353, 33354, 33355, 33356, -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,
+ 589, 590, -1, 591, 592, -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, 594, -1, -1, -1,
+ -1, -1, 33363, -1, -1, -1, 597, -1,
+ -1, -1, -1, -1, 33366, 600, 602, 604,
+ 605, 607, 609, -1, 611, -1, 613, 615,
+ 617, -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, 619, 621, 623, 625, 627, 629,
+ 631, -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, 633, 635, 637, 639, 641, -1,
+ 33411, 33412, 33413, 646, 648, 33418, 33419, -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,
+ 33420, 33421, 33422, -1, 33423, 33424, -1, -1,
+ -1, 33425, -1, -1, -1, -1, -1, -1,
+ 658, 660, -1, 662, -1, -1, -1, 664,
+ -1, -1, -1, -1, 666, 668, 670, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 672, -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, 674, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 676, 678, -1, 680, -1, -1, -1, 682,
+ -1, -1, -1, -1, 684, 686, 688, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 690, 692,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 694, 696, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 698, 700, 702, 704, -1, -1, 706, 708,
+ -1, -1, 710, 712, 714, 716, 718, 720,
+ -1, -1, 722, 724, 726, 728, 730, 732,
+ -1, -1, 734, 736, 738, 740, 742, 744,
+ 746, 748, 750, 752, 754, 756, -1, -1,
+ 758, 760, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 33530,
+ -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, 764, 766, 768, 770, 772, -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, 33542, 33544, 33546,
+ 33548, -1, -1, -1, -1, -1, -1, -1,
+ 782, -1, 784, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 786, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 788, -1, -1, -1, -1, -1, -1,
+ -1, 790, -1, -1, 792, -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,
+ 794, 796, 798, 800, 802, 804, 806, 808,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 810, 812, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 814, 816, -1, 818,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 820, -1, -1, 822, -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, 824, 826, 828, -1, -1, 830, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 832, -1, -1, 834, 836, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 838, 840, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 842, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 844, 846, 848, -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,
+ 850, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 852, -1, -1, -1, -1, -1, -1, 854,
+ 856, -1, 858, 860, -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, 862, 864, 866, -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, 868, -1, 870, 872, 874, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 33644, -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, 33646, -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, 33648, 33650, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 33652, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 885, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 887, -1, -1,
+ -1, -1, 889, -1, -1, -1, -1, 891,
+ -1, -1, -1, -1, 893, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 895, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 897, -1, 899, 901, 33671,
+ 905, 33675, -1, -1, -1, -1, -1, -1,
+ -1, 909, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 911, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 913, -1, -1,
+ -1, -1, 915, -1, -1, -1, -1, 917,
+ -1, -1, -1, -1, 919, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 921, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 923, -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, 33693, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 926, -1,
+ 928, -1, 930, -1, 932, -1, 934, -1,
+ -1, -1, 936, -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, 938, -1, 940, -1, -1,
+ 942, 944, -1, 946, -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, 33716, 33717, 33718, -1,
+ 33719, 33720, 33721, 33722, 33723, 33724, 33725, 33726,
+ 33727, 33728, 33729, -1, 33730, 33731, 33732, 33733,
+ 33734, 33735, 33736, 33737, 33738, 33739, 33740, 33741,
+ 33742, 33743, 33744, 33745, 33746, 33747, -1, 33748,
+ 33749, 33750, 33751, 33752, 33753, 33754, 33755, 33756,
+ 33757, 33758, 33759, 33760, 33761, 33762, 33763, 33764,
+ 33765, 33766, 33767, 33768, 33769, 33770, 33771, 33772,
+ 33773, 33774, 33775, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 33776, -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, 33777, 33778, 33779, 33780, 33781,
+ 33782, 33783, 33784, 33785, 33786, 33787, 33788, 33789,
+ 33790, 33791, 33792, 33793, 33794, 33795, 33796, 33797,
+ 33798, 33799, 33800, 33801, 33802, 33803, 33804, 33805,
+ 33806, 33807, 33808, 33809, 33810, 33811, 33812, 33813,
+ 1046, 1048, 1050, 1052, 1054, 1056, 1058, 1060,
+ 1062, 1064, 1066, 1068, 1070, 1072, 1074, 1076,
+ 1078, 1080, 1082, 1084, 1086, 1088, 1090, 1092,
+ 1094, 1096, 1098, 1100, 1102, 1104, 1106, 1108,
+ 1110, 1112, 1114, 1116, 1118, 1120, 1122, 1124,
+ 1126, 1128, 1130, 1132, 1134, 1136, 1138, 1140,
+ 1142, 1144, 1146, 1148, 1150, 1152, 1154, 1156,
+ 1158, 1160, 1162, 1164, 1166, 1168, 1170, 1172,
+ 1174, 1176, 1178, 1180, 1182, 1184, 1186, 1188,
+ 1190, 1192, 1194, 1196, 1198, 1200, 1202, 1204,
+ 1206, 1208, 1210, 1212, 1214, 1216, 1218, 1220,
+ 1222, 1224, 1226, 1228, 1230, 1232, 1234, 1236,
+ 1238, 1240, 1242, 1244, 1246, 1248, 1250, 1252,
+ 1254, 1256, 1258, 1260, 1262, 1264, 1266, 1268,
+ 1270, 1272, 1274, 1276, 1278, 1280, 1282, 1284,
+ 1286, 1288, 1290, 1292, 1294, 1296, 1298, 1300,
+ 1302, 1304, 1306, 1308, 1310, 1312, 1314, 1316,
+ 1318, 1320, 1322, 1324, 1326, 1328, 1330, 1332,
+ 1334, 1336, 1338, 1340, 1342, 1344, 1346, 1348,
+ 1350, 1352, 34122, 1356, -1, -1, -1, -1,
+ 1358, 1360, 1362, 1364, 1366, 1368, 1370, 1372,
+ 1374, 1376, 1378, 1380, 1382, 1384, 1386, 1388,
+ 1390, 1392, 1394, 1396, 1398, 1400, 1402, 1404,
+ 1406, 1408, 1410, 1412, 1414, 1416, 1418, 1420,
+ 1422, 1424, 1426, 1428, 1430, 1432, 1434, 1436,
+ 1438, 1440, 1442, 1444, 1446, 1448, 1450, 1452,
+ 1454, 1456, 1458, 1460, 1462, 1464, 1466, 1468,
+ 1470, 1472, 1474, 1476, 1478, 1480, 1482, 1484,
+ 1486, 1488, 1490, 1492, 1494, 1496, 1498, 1500,
+ 1502, 1504, 1506, 1508, 1510, 1512, 1514, 1516,
+ 1518, 1520, 1522, 1524, 1526, 1528, 1530, 1532,
+ 1534, 1536, -1, -1, -1, -1, -1, -1,
+ 1538, 1540, 1542, 1544, 1546, 1548, 1550, 1552,
+ 1554, 1556, 1558, 1560, 1562, 1564, 1566, 1568,
+ 1570, 1572, 1574, 1576, 1578, 1580, -1, -1,
+ 1582, 1584, 1586, 1588, 1590, 1592, -1, -1,
+ 1594, 1596, 1598, 1600, 1602, 1604, 1606, 1608,
+ 1610, 1612, 1614, 1616, 1618, 1620, 1622, 1624,
+ 1626, 1628, 1630, 1632, 1634, 1636, 1638, 1640,
+ 1642, 1644, 1646, 1648, 1650, 1652, 1654, 1656,
+ 1658, 1660, 1662, 1664, 1666, 1668, -1, -1,
+ 1670, 1672, 1674, 1676, 1678, 1680, -1, -1,
+ 1682, 1684, 1686, 1688, 1690, 1692, 1694, 1696,
+ -1, 1698, -1, 1700, -1, 1702, -1, 1704,
+ 1706, 1708, 1710, 1712, 1714, 1716, 1718, 1720,
+ 1722, 1724, 1726, 1728, 1730, 1732, 1734, 1736,
+ 1738, 1740, 1741, 1743, 1744, 1746, 1747, 1749,
+ 1750, 1752, 1753, 1755, 1756, 1758, -1, -1,
+ 1759, 1761, 1763, 1765, 1767, 1769, 1771, 1773,
+ 1775, 1777, 1779, 1781, 1783, 1785, 1787, 1789,
+ 1791, 1793, 1795, 1797, 1799, 1801, 1803, 1805,
+ 1807, 1809, 1811, 1813, 1815, 1817, 1819, 1821,
+ 1823, 1825, 1827, 1829, 1831, 1833, 1835, 1837,
+ 1839, 1841, 1843, 1845, 1847, 1849, 1851, 1853,
+ 1855, 1857, 1859, 1861, 1863, -1, 1865, 1867,
+ 1869, 1871, 1873, 1875, 1876, 34646, 1880, 34649,
+ 34651, 1885, 1887, 1889, 1891, -1, 1893, 1895,
+ 1897, 1899, 1900, 1902, 1903, 1905, 1907, 1909,
+ 1911, 1913, 1915, 1917, -1, -1, 1918, 1920,
+ 1922, 1924, 1926, 1928, -1, 1929, 1931, 1933,
+ 1935, 1937, 1939, 1941, 1942, 1944, 1946, 1948,
+ 1950, 1952, 1954, 1956, 1957, 1959, 1961, 1962,
+ -1, -1, 1963, 1965, 1967, -1, 1969, 1971,
+ 1973, 1975, 1976, 1978, 1979, 1981, 34750, -1,
+ 1984, 1985, 34754, 34755, 34756, 34757, 34758, 34759,
+ 34760, 34761, 34762, -1, -1, -1, -1, -1,
+ -1, 34763, -1, -1, -1, -1, -1, 34764,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 34766, 34767, 34769, -1,
+ -1, -1, -1, -1, -1, -1, -1, 34772,
+ -1, -1, -1, 34773, 34775, -1, 34778, 34780,
+ -1, -1, -1, -1, 34783, -1, 34785, -1,
+ -1, -1, -1, -1, -1, -1, -1, 34787,
+ 34789, 34791, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 34793,
+ -1, -1, -1, -1, -1, -1, -1, 34797,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 34798, 34799, -1, -1, 34800, 34801, 34802, 34803,
+ 34804, 34805, 34806, 34807, 34808, 34809, 34810, 34811,
+ 34812, 34813, 34814, 34815, 34816, 34817, 34818, 34819,
+ 34820, 34821, 34822, 34823, 34824, 34825, 34826, -1,
+ 34827, 34828, 34829, 34830, 34831, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 34832, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 34834, 34837, 34840, 34841, -1, 34843, 34846, 34849,
+ -1, 34850, 34852, 34853, 34854, 34855, 34856, 34857,
+ 34858, 34859, 34860, 34861, -1, 34862, 34863, -1,
+ -1, 34865, 34866, 34867, 34868, 34869, -1, -1,
+ 34870, 34872, 34875, -1, 34877, -1, 2110, -1,
+ 34879, -1, 2112, 2113, 34882, 34883, -1, 34884,
+ 34885, 34886, -1, 34887, 34888, 34889, 34890, 34891,
+ 34892, 34893, -1, 34894, 34897, 34898, 34899, 34900,
+ 34901, -1, -1, -1, -1, 34902, 34903, 34904,
+ 34905, 34906, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 34907, 34910, 34913, 34916, 34919,
+ 34922, 34925, 34928, 34931, 34934, 34937, 34940, 34943,
+ 34945, 34946, 34948, 34951, 34953, 34954, 34956, 34959,
+ 34963, 34965, 34966, 34968, 34971, 34972, 34973, 34974,
+ 34975, 34976, 34978, 34981, 34983, 34984, 34986, 34989,
+ 34993, 34995, 34996, 34998, 35001, 35002, 35003, 35004,
+ -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, 2237, 2239, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 2241, -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, 2243, 2245, 2247,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 2249, -1, -1, -1,
+ -1, 2251, -1, -1, 2253, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 2255, -1, 2257, -1,
+ -1, -1, -1, -1, 35027, 35029, -1, 35032,
+ 35034, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 2269, -1, -1, 2271, -1, -1, 2273,
+ -1, 2275, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 2277, -1, 2279, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 2281, 2283, 2285,
+ 2287, 2289, -1, -1, 2291, 2293, -1, -1,
+ 2295, 2297, -1, -1, -1, -1, -1, -1,
+ 2299, 2301, -1, -1, 2303, 2305, -1, -1,
+ 2307, 2309, -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, 2311, 2313, 2315, 2317,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 2319, 2321, 2323, 2325, -1, -1, -1, -1,
+ -1, -1, 2327, 2329, 2331, 2333, -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, 2335, 2336, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 35105, 35106, 35107, 35108, 35109, 35110, 35111, 35112,
+ 35113, 35114, 35116, 35118, 35120, 35122, 35124, 35126,
+ 35128, 35130, 35132, 35134, 35136, 35139, 35142, 35145,
+ 35148, 35151, 35154, 35157, 35160, 35163, 35167, 35171,
+ 35175, 35179, 35183, 35187, 35191, 35195, 35199, 35203,
+ 35207, 35209, 35211, 35213, 35215, 35217, 35219, 35221,
+ 35223, 35225, 35228, 35231, 35234, 35237, 35240, 35243,
+ 35246, 35249, 35252, 35255, 35258, 35261, 35264, 35267,
+ 35270, 35273, 35276, 35279, 35282, 35285, 35288, 35291,
+ 35294, 35297, 35300, 35303, 35306, 35309, 35312, 35315,
+ 35318, 35321, 35324, 35327, 35330, 35333, 35336, 35337,
+ 35338, 35339, 35340, 35341, 35342, 35343, 35344, 35345,
+ 35346, 35347, 35348, 35349, 35350, 35351, 35352, 35353,
+ 35354, 35355, 35356, 35357, 35358, 35359, 35360, 35361,
+ 35362, 35363, 35364, 35365, 35366, 35367, 35368, 35369,
+ 35370, 35371, 35372, 35373, 35374, 35375, 35376, 35377,
+ 35378, 35379, 35380, 35381, 35382, 35383, 35384, 35385,
+ 35386, 35387, 35388, -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, 35389, -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, 35393, 35396, 35398, -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, 2633, -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, 35403, 35404, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 35405,
+ -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, 35406,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 35407, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 35408, 35409, 35410, 35411, 35412, 35413, 35414, 35415,
+ 35416, 35417, 35418, 35419, 35420, 35421, 35422, 35423,
+ 35424, 35425, 35426, 35427, 35428, 35429, 35430, 35431,
+ 35432, 35433, 35434, 35435, 35436, 35437, 35438, 35439,
+ 35440, 35441, 35442, 35443, 35444, 35445, 35446, 35447,
+ 35448, 35449, 35450, 35451, 35452, 35453, 35454, 35455,
+ 35456, 35457, 35458, 35459, 35460, 35461, 35462, 35463,
+ 35464, 35465, 35466, 35467, 35468, 35469, 35470, 35471,
+ 35472, 35473, 35474, 35475, 35476, 35477, 35478, 35479,
+ 35480, 35481, 35482, 35483, 35484, 35485, 35486, 35487,
+ 35488, 35489, 35490, 35491, 35492, 35493, 35494, 35495,
+ 35496, 35497, 35498, 35499, 35500, 35501, 35502, 35503,
+ 35504, 35505, 35506, 35507, 35508, 35509, 35510, 35511,
+ 35512, 35513, 35514, 35515, 35516, 35517, 35518, 35519,
+ 35520, 35521, 35522, 35523, 35524, 35525, 35526, 35527,
+ 35528, 35529, 35530, 35531, 35532, 35533, 35534, 35535,
+ 35536, 35537, 35538, 35539, 35540, 35541, 35542, 35543,
+ 35544, 35545, 35546, 35547, 35548, 35549, 35550, 35551,
+ 35552, 35553, 35554, 35555, 35556, 35557, 35558, 35559,
+ 35560, 35561, 35562, 35563, 35564, 35565, 35566, 35567,
+ 35568, 35569, 35570, 35571, 35572, 35573, 35574, 35575,
+ 35576, 35577, 35578, 35579, 35580, 35581, 35582, 35583,
+ 35584, 35585, 35586, 35587, 35588, 35589, 35590, 35591,
+ 35592, 35593, 35594, 35595, 35596, 35597, 35598, 35599,
+ 35600, 35601, 35602, 35603, 35604, 35605, 35606, 35607,
+ 35608, 35609, 35610, 35611, 35612, 35613, 35614, 35615,
+ 35616, 35617, 35618, 35619, 35620, 35621, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 35622, -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, 35623, -1,
+ 35624, 35625, 35626, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 2859, -1, 2861, -1,
+ 2863, -1, 2865, -1, 2867, -1, 2869, -1,
+ 2871, -1, 2873, -1, 2875, -1, 2877, -1,
+ 2879, -1, 2881, -1, -1, 2883, -1, 2885,
+ -1, 2887, -1, -1, -1, -1, -1, -1,
+ 2889, 2891, -1, 2893, 2895, -1, 2897, 2899,
+ -1, 2901, 2903, -1, 2905, 2907, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 2909, -1, -1, -1,
+ -1, -1, -1, 35679, 35681, -1, 2915, 35685,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 2919, -1, 2921, -1,
+ 2923, -1, 2925, -1, 2927, -1, 2929, -1,
+ 2931, -1, 2933, -1, 2935, -1, 2937, -1,
+ 2939, -1, 2941, -1, -1, 2943, -1, 2945,
+ -1, 2947, -1, -1, -1, -1, -1, -1,
+ 2949, 2951, -1, 2953, 2955, -1, 2957, 2959,
+ -1, 2961, 2963, -1, 2965, 2967, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 2969, -1, -1, 2971,
+ 2973, 2975, 2977, -1, -1, -1, 2979, 35749,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 35751, 35752, 35753, 35754, 35755, 35756, 35757,
+ 35758, 35759, 35760, 35761, 35762, 35763, 35764, 35765,
+ 35766, 35767, 35768, 35769, 35770, 35771, 35772, 35773,
+ 35774, 35775, 35776, 35777, 35778, 35779, 35780, 35781,
+ 35782, 35783, 35784, 35785, 35786, 35787, 35788, 35789,
+ 35790, 35791, 35792, 35793, 35794, 35795, 35796, 35797,
+ 35798, 35799, 35800, 35801, 35802, 35803, 35804, 35805,
+ 35806, 35807, 35808, 35809, 35810, 35811, 35812, 35813,
+ 35814, 35815, 35816, 35817, 35818, 35819, 35820, 35821,
+ 35822, 35823, 35824, 35825, 35826, 35827, 35828, 35829,
+ 35830, 35831, 35832, 35833, 35834, 35835, 35836, 35837,
+ 35838, 35839, 35840, 35841, 35842, 35843, 35844, -1,
+ -1, -1, 35845, 35846, 35847, 35848, 35849, 35850,
+ 35851, 35852, 35853, 35854, 35855, 35856, 35857, 35858,
+ 35859, 35862, 35865, 35868, 35871, 35874, 35877, 35880,
+ 35883, 35886, 35889, 35892, 35895, 35898, 35901, 35905,
+ 35909, 35913, 35917, 35921, 35925, 35929, 35933, 35937,
+ 35941, 35945, 35949, 35953, 35957, 35961, 35968, -1,
+ 35974, 35977, 35980, 35983, 35986, 35989, 35992, 35995,
+ 35998, 36001, 36004, 36007, 36010, 36013, 36016, 36019,
+ 36022, 36025, 36028, 36031, 36034, 36037, 36040, 36043,
+ 36046, 36049, 36052, 36055, 36058, 36061, 36064, 36067,
+ 36070, 36073, 36076, 36079, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 36082, 36085, 36087, 36089, 36091, 36093, 36095, 36097,
+ 36099, 36101, 36103, 36105, 36107, 36109, 36111, 36113,
+ 36115, 36116, 36117, 36118, 36119, 36120, 36121, 36122,
+ 36123, 36124, 36125, 36126, 36127, 36128, 36129, 36131,
+ 36133, 36135, 36137, 36139, 36141, 36143, 36145, 36147,
+ 36149, 36151, 36153, 36155, 36157, 36162, 36166, -1,
+ 36168, 36169, 36170, 36171, 36172, 36173, 36174, 36175,
+ 36176, 36177, 36178, 36179, 36180, 36181, 36182, 36183,
+ 36184, 36185, 36186, 36187, 36188, 36189, 36190, 36191,
+ 36192, 36193, 36194, 36195, 36196, 36197, 36198, 36199,
+ 36200, 36201, 36202, 36203, 36204, 36205, 36206, 36207,
+ 36208, 36209, 36210, 36211, 36212, 36213, 36214, 36215,
+ 36216, 36217, 36219, 36221, 36223, 36225, 36227, 36229,
+ 36231, 36233, 36235, 36237, 36239, 36241, 36243, 36245,
+ 36247, 36249, 36251, 36253, 36255, 36257, 36259, 36261,
+ 36263, 36265, 36268, 36271, 36274, 36276, 36279, 36281,
+ 36284, 36285, 36286, 36287, 36288, 36289, 36290, 36291,
+ 36292, 36293, 36294, 36295, 36296, 36297, 36298, 36299,
+ 36300, 36301, 36302, 36303, 36304, 36305, 36306, 36307,
+ 36308, 36309, 36310, 36311, 36312, 36313, 36314, 36315,
+ 36316, 36317, 36318, 36319, 36320, 36321, 36322, 36323,
+ 36324, 36325, 36326, 36327, 36328, 36329, 36330, -1,
+ 36331, 36335, 36339, 36343, 36346, 36350, 36353, 36356,
+ 36361, 36365, 36368, 36371, 36374, 36378, 36382, 36385,
+ 36388, 36390, 36393, 36397, 36401, 36403, 36408, 36414,
+ 36419, 36422, 36427, 36432, 36436, 36439, 36442, 36445,
+ 36449, 36454, 36458, 36461, 36464, 36467, 36469, 36471,
+ 36473, 36475, 36478, 36481, 36486, 36489, 36493, 36498,
+ 36501, 36503, 36505, 36510, 36514, 36519, 36522, 36527,
+ 36529, 36532, 36535, 36538, 36541, 36544, 36548, 36551,
+ 36553, 36556, 36559, 36562, 36566, 36569, 36572, 36575,
+ 36580, 36584, 36586, 36591, 36593, 36597, 36601, 36604,
+ 36607, 36610, 36614, 36616, 36619, 36623, 36625, 36630,
+ 36633, 36635, 36637, 36639, 36641, 36643, 36645, 36647,
+ 36649, 36651, 36653, 36656, 36659, 36662, 36665, 36668,
+ 36671, 36674, 36677, 36680, 36683, 36686, 36689, 36692,
+ 36695, 36698, 36701, 36703, 36705, 36708, 36710, 36712,
+ 36714, 36717, 36720, 36722, 36724, 36726, 36728, 36730,
+ 36734, 36736, 36738, 36740, 36742, 36744, 36746, 36748,
+ 36750, 36753, 36757, 36759, 36761, 36763, 36765, 36767,
+ 36769, 36771, 36774, 36777, 36780, 36783, 36785, 36787,
+ 36789, 36791, 36793, 36795, 36797, 36799, 36801, 36803,
+ 36806, 36809, 36811, 36814, 36817, 36820, 36822, 36825,
+ 36828, 36832, 36834, 36837, 36840, 36843, 36846, 36851,
+ 36857, 36859, 36861, 36863, 36865, 36867, 36869, 36871,
+ 36873, 36875, 36877, 36879, 36881, 36883, 36885, 36887,
+ 36889, 36891, 36893, 36897, 36899, 36901, 36903, 36907,
+ 36910, 36912, 36914, 36916, 36918, 36920, 36922, 36924,
+ 36926, 36928, 36930, 36933, 36935, 36937, 36940, 36943,
+ 36945, 36949, 36952, 36954, 36956, 36958, 36960, 36963,
+ 36966, 36968, 36970, 36972, 36974, 36976, 36978, 36980,
+ 36982, 36984, 36987, 36990, 36993, 36996, 36999, 37002,
+ 37005, 37008, 37011, 37014, 37017, 37020, 37023, 37026,
+ 37029, 37032, 37035, 37038, 37041, 37044, 37047, 37050,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 37053, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 4286, 4287, 4288, 4289, 4290, 4291, 4292, 4293,
+ 4294, 4295, 4296, 4297, 4298, 4299, 4300, 4301,
+ 4302, 4303, 4304, 4305, 4306, 4307, 4308, 4309,
+ 4310, 4311, 4312, 4313, 4314, 4315, 4316, 4317,
+ 4318, 4319, 4320, 4321, 4322, 4323, 4324, 4325,
+ 4326, 4327, 4328, 4329, 4330, 4331, 4332, 4333,
+ 4334, 4335, 4336, 4337, 4338, 4339, 4340, 4341,
+ 4342, 4343, 4344, 4345, 4346, 4347, 4348, 4349,
+ 4350, 4351, 4352, 4353, 4354, 4355, 4356, 4357,
+ 4358, 4359, 4360, 4361, 4362, 4363, 4364, 4365,
+ 4366, 4367, 4368, 4369, 4370, 4371, 4372, 4373,
+ 4374, 4375, 4376, 4377, 4378, 4379, 4380, 4381,
+ 4382, 4383, 4384, 4385, 4386, 4387, 4388, 4389,
+ 4390, 4391, 4392, 4393, 4394, 4395, 4396, 4397,
+ 4398, 4399, 4400, 4401, 4402, 4403, 4404, 4405,
+ 4406, 4407, 4408, 4409, 4410, 4411, 4412, 4413,
+ 4414, 4415, 4416, 4417, 4418, 4419, 4420, 4421,
+ 4422, 4423, 4424, 4425, 4426, 4427, 4428, 4429,
+ 4430, 4431, 4432, 4433, 4434, 4435, 4436, 4437,
+ 4438, 4439, 4440, 4441, 4442, 4443, 4444, 4445,
+ 4446, 4447, 4448, 4449, 4450, 4451, 4452, 4453,
+ 4454, 4455, 4456, 4457, 4458, 4459, 4460, 4461,
+ 4462, 4463, 4464, 4465, 4466, 4467, 4468, 4469,
+ 4470, 4471, 4472, 4473, 4474, 4475, 4476, 4477,
+ 4478, 4479, 4480, 4481, 4482, 4483, 4484, 4485,
+ 4486, 4487, 4488, 4489, 4490, 4491, 4492, 4493,
+ 4494, 4495, 4496, 4497, 4498, 4499, 4500, 4501,
+ 4502, 4503, 4504, 4505, 4506, 4507, 4508, 4509,
+ 4510, 4511, 4512, 4513, 4514, 4515, 4516, 4517,
+ 4518, 4519, 4520, 4521, 4522, 4523, 4524, 4525,
+ 4526, 4527, 4528, 4529, 4530, 4531, 4532, 4533,
+ 4534, 4535, 4536, 4537, 4538, 4539, 4540, 4541,
+ 4542, 4543, 4544, 4545, 4546, 4547, 4548, 4549,
+ 4550, 4551, 4552, 4553, 4554, 4555, -1, -1,
+ 4556, -1, 4557, -1, -1, 4558, 4559, 4560,
+ 4561, 4562, 4563, 4564, 4565, 4566, 4567, -1,
+ 4568, -1, 4569, -1, -1, 4570, 4571, -1,
+ -1, -1, 4572, 4573, 4574, 4575, -1, -1,
+ 4576, 4577, 4578, 4579, 4580, 4581, 4582, 4583,
+ 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4591,
+ 4592, 4593, 4594, 4595, 4596, 4597, 4598, 4599,
+ 4600, 4601, 4602, 4603, 4604, 4605, 4606, 4607,
+ 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615,
+ 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623,
+ 4624, 4625, 4626, 4627, 4628, 4629, 4630, 4631,
+ 4632, 4633, 4634, -1, -1, -1, -1, -1,
+ 4635, 4636, 4637, 4638, 4639, 4640, 4641, 4642,
+ 4643, 4644, 4645, 4646, 4647, 4648, 4649, 4650,
+ 4651, 4652, 4653, 4654, 4655, 4656, 4657, 4658,
+ 4659, 4660, 4661, 4662, 4663, 4664, 4665, 4666,
+ 4667, 4668, 4669, 4670, 4671, 4672, 4673, 4674,
+ 4675, 4676, 4677, 4678, 4679, 4680, 4681, 4682,
+ 4683, 4684, 4685, 4686, 4687, 4688, 4689, 4690,
+ 4691, 4692, 4693, 4694, 4695, 4696, 4697, 4698,
+ 4699, 4700, 4701, 4702, 4703, 4704, 4705, 4706,
+ 4707, 4708, 4709, 4710, 4711, 4712, 4713, 4714,
+ 4715, 4716, 4717, 4718, 4719, 4720, 4721, 4722,
+ 4723, 4724, 4725, 4726, 4727, 4728, 4729, 4730,
+ 4731, 4732, 4733, 4734, 4735, 4736, 4737, 4738,
+ 4739, 4740, -1, -1, -1, -1, -1, -1,
+ 37509, 37511, 37513, 37515, 37518, 37521, 37523, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 37525, 37527, 37529, 37531, 37533,
+ -1, -1, -1, -1, -1, 4767, -1, 4769,
+ 37539, 37540, 37541, 37542, 37543, 37544, 37545, 37546,
+ 37547, 37548, 4781, 4783, 4785, 4787, 4789, 4791,
+ 4793, 4795, 4797, 4799, 4801, 4803, 4805, -1,
+ 4807, 4809, 4811, 4813, 4815, -1, 4817, -1,
+ 4819, 4821, -1, 4823, 4825, -1, 4827, 4829,
+ 4831, 4833, 4835, 4837, 4839, 4841, 4843, 37613,
+ 37615, 37616, 37617, 37618, 37619, 37620, 37621, 37622,
+ 37623, 37624, 37625, 37626, 37627, 37628, 37629, 37630,
+ 37631, 37632, 37633, 37634, 37635, 37636, 37637, 37638,
+ 37639, 37640, 37641, 37642, 37643, 37644, 37645, 37646,
+ 37647, 37648, 37649, 37650, 37651, 37652, 37653, 37654,
+ 37655, 37656, 37657, 37658, 37659, 37660, 37661, 37662,
+ 37663, 37664, 37665, 37666, 37667, 37668, 37669, 37670,
+ 37671, 37672, 37673, 37674, 37675, 37676, 37677, 37678,
+ 37679, 37680, 37681, 37682, 37683, 37684, 37685, 37686,
+ 37687, 37688, 37689, 37690, 37691, 37692, 37693, 37694,
+ 37695, 37696, 37697, 37698, 37699, 37700, 37701, 37702,
+ 37703, 37704, 37705, 37706, 37707, 37708, 37709, 37710,
+ 37711, 37712, -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, 37713, 37714, 37715, 37716, 37717,
+ 37718, 37719, 37720, 37721, 37722, 37723, 37724, 37725,
+ 37726, 37727, 37728, 37729, 37730, 37731, 37732, 37733,
+ 37734, 37735, 37736, 37738, 37740, 37742, 37744, 37746,
+ 37748, 37750, 37752, 37754, 37756, 37758, 37760, 37762,
+ 37764, 37766, 37768, 37770, 37772, 37773, 37774, 37775,
+ 37776, 37778, 37780, 37782, 37784, 37786, 37788, 37790,
+ 37792, 37794, 37796, 37798, 37800, 37802, 37804, 37806,
+ 37808, 37810, 37812, 37814, 37816, 37818, 37820, 37822,
+ 37824, 37826, 37828, 37830, 37832, 37834, 37836, 37838,
+ 37840, 37842, 37844, 37846, 37848, 37850, 37852, 37854,
+ 37856, 37858, 37860, 37862, 37864, 37866, 37868, 37870,
+ 37872, 37874, 37876, 37878, 37880, 37882, 37884, 37886,
+ 37888, 37890, 37892, 37894, 37896, 37898, 37900, 37902,
+ 37904, 37906, 37908, 37910, 37912, 37914, 37916, 37918,
+ 37920, 37922, 37924, 37926, 37928, 37930, 37932, 37934,
+ 37936, 37938, 37940, 37942, 37944, 37946, 37948, 37950,
+ 37952, 37954, 37956, 37958, 37960, 37962, 37964, 37967,
+ 37970, 37973, 37976, 37979, 37982, 37984, 37986, 37988,
+ 37990, 37992, 37994, 37996, 37998, 38000, 38002, 38004,
+ 38006, 38008, 38010, 38012, 38014, 38016, 38018, 38020,
+ 38022, 38024, 38026, 38028, 38030, 38032, 38034, 38036,
+ 38038, 38040, 38042, 38044, 38046, 38048, 38050, 38052,
+ 38054, 38056, 38058, 38060, 38062, 38064, 38066, 38068,
+ 38070, 38072, 38074, 38076, 38078, 38080, 38082, 38084,
+ 38086, 38088, 38090, 38092, 38094, 38096, 38098, 38100,
+ 38102, 38104, 38106, 38108, 38110, 38112, 38114, 38116,
+ 38118, 38120, 38122, 38124, 38126, 38128, 38130, 38132,
+ 38134, 38136, 38138, 38140, 38142, 38144, 38146, 38148,
+ 38150, 38152, 38154, 38156, 38158, 38160, 38162, 38164,
+ 38166, 38168, 38170, 38172, 38174, 38176, 38178, 38180,
+ 38182, 38184, 38186, 38188, 38190, 38192, 38194, 38196,
+ 38198, 38200, 38202, 38204, 38206, 38208, 38210, 38212,
+ 38214, 38216, 38218, 38220, 38222, 38224, 38226, 38228,
+ 38230, 38232, 38234, 38236, 38238, 38240, 38242, 38244,
+ 38246, 38248, 38250, 38252, 38254, 38256, 38258, 38260,
+ 38262, 38264, 38266, 38269, 38272, 38275, 38277, 38279,
+ 38281, 38283, 38285, 38287, 38289, 38291, 38293, 38295,
+ 38297, 38299, 38301, 38303, 38305, 38307, 38309, 38311,
+ 38313, 38315, 38317, 38319, 38321, 38323, 38325, 38327,
+ 38329, 38331, 38333, 38335, 38337, 38339, 38341, 38343,
+ 38345, 38347, 38349, 38351, 38353, 38355, 38357, 38359,
+ 38361, 38363, 38365, 38367, 38369, 38371, 38373, 38375,
+ 38377, 38379, 38381, 38383, 38385, 38387, 38389, 38391,
+ 38393, 38395, 38397, 38399, 38401, 38403, 38405, 38407,
+ 38409, 38411, 38413, 38415, 38417, 38419, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 38421, 38424, 38427, 38430, 38433, 38436, 38439, 38442,
+ 38445, 38448, 38451, 38454, 38457, 38460, 38463, 38466,
+ 38469, 38472, 38475, 38478, 38481, 38484, 38487, 38490,
+ 38493, 38496, 38499, 38502, 38505, 38508, 38511, 38514,
+ 38517, 38520, 38523, 38526, 38529, 38532, 38535, 38538,
+ 38541, 38544, 38547, 38550, 38553, 38556, 38559, 38562,
+ 38565, 38568, 38571, 38574, 38577, 38580, 38583, 38586,
+ 38589, 38592, 38595, 38598, 38601, 38604, 38607, 38610,
+ -1, -1, 38613, 38616, 38619, 38622, 38625, 38628,
+ 38631, 38634, 38637, 38640, 38643, 38646, 38649, 38652,
+ 38655, 38658, 38661, 38664, 38667, 38670, 38673, 38676,
+ 38679, 38682, 38685, 38688, 38691, 38694, 38697, 38700,
+ 38703, 38706, 38709, 38712, 38715, 38718, 38721, 38724,
+ 38727, 38730, 38733, 38736, 38739, 38742, 38745, 38748,
+ 38751, 38754, 38757, 38760, 38763, 38766, 38769, 38772,
+ -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,
+ 38775, 38778, 38781, 38785, 38789, 38793, 38797, 38801,
+ 38805, 38809, 38812, 38830, 38838, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 38842, 38843, 38844, 38845, 38846, 38847, 38848, 38849,
+ 38850, 38851, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 38852, 38853, 38854, 38855, 38856, 38857, 38858, 38859,
+ 38860, 38861, 38862, 38863, 38864, 38865, 38866, 38867,
+ 38868, 38869, 38870, 38871, 38872, -1, -1, 38873,
+ 38874, 38875, 38876, 38877, 38878, 38879, 38880, 38881,
+ 38882, 38883, 38884, -1, 38885, 38886, 38887, 38888,
+ 38889, 38890, 38891, 38892, 38893, 38894, 38895, 38896,
+ 38897, 38898, 38899, 38900, 38901, 38902, 38903, -1,
+ 38904, 38905, 38906, 38907, -1, -1, -1, -1,
+ 38908, 38910, 38912, -1, 38914, -1, 38916, 38918,
+ 38920, 38922, 38924, 38926, 38928, 38930, 38932, 38934,
+ 38936, 38937, 38938, 38939, 38940, 38941, 38942, 38943,
+ 38944, 38945, 38946, 38947, 38948, 38949, 38950, 38951,
+ 38952, 38953, 38954, 38955, 38956, 38957, 38958, 38959,
+ 38960, 38961, 38962, 38963, 38964, 38965, 38966, 38967,
+ 38968, 38969, 38970, 38971, 38972, 38973, 38974, 38975,
+ 38976, 38977, 38978, 38979, 38980, 38981, 38982, 38983,
+ 38984, 38985, 38986, 38987, 38988, 38989, 38990, 38991,
+ 38992, 38993, 38994, 38995, 38996, 38997, 38998, 38999,
+ 39000, 39001, 39002, 39003, 39004, 39005, 39006, 39007,
+ 39008, 39009, 39010, 39011, 39012, 39013, 39014, 39015,
+ 39016, 39017, 39018, 39019, 39020, 39021, 39022, 39023,
+ 39024, 39025, 39026, 39027, 39028, 39029, 39030, 39031,
+ 39032, 39033, 39034, 39035, 39036, 39037, 39038, 39039,
+ 39040, 39041, 39042, 39043, 39044, 39045, 39046, 39047,
+ 39048, 39049, 39050, 39051, 39052, 39053, 39055, 39057,
+ 39059, 39061, 39063, 39065, 39067, -1, -1, -1,
+ -1, 39069, 39070, 39071, 39072, 39073, 39074, 39075,
+ 39076, 39077, 39078, 39079, 39080, 39081, 39082, 39083,
+ 39084, 39085, 39086, 39087, 39088, 39089, 39090, 39091,
+ 39092, 39093, 39094, 39095, 39096, 39097, 39098, 39099,
+ 39100, 39101, 39102, 39103, 39104, 39105, 39106, 39107,
+ 39108, 39109, 39110, 39111, 39112, 39113, 39114, 39115,
+ 39116, 39117, 39118, 39119, 39120, 39121, 39122, 39123,
+ 39124, 39125, 39126, 39127, 39128, 39129, 39130, 39131,
+ 39132, 39133, 39134, 39135, 39136, 39137, 39138, 39139,
+ 39140, 39141, 39142, 39143, 39144, 39145, 39146, 39147,
+ 39148, 39149, 39150, 39151, 39152, 39153, 39154, 39155,
+ 39156, 39157, 39158, 39159, 39160, 39161, 39162, 39163,
+ 39164, 39165, 39166, 39167, 39168, 39169, 39170, 39171,
+ 39172, 39173, 39174, 39175, 39176, 39177, 39178, 39179,
+ 39180, 39181, 39182, 39183, 39184, 39185, 39186, 39187,
+ 39188, 39189, 39190, 39191, 39192, 39193, 39194, 39195,
+ 39196, 39197, 39198, 39199, 39200, 39201, 39202, 39203,
+ 39204, 39205, 39206, 39207, 39208, 39209, 39210, 39211,
+ 39212, 39213, 39214, 39215, 39216, 39217, 39218, 39219,
+ 39220, 39221, 39222, 39223, 39224, 39225, 39226, 39227,
+ 39228, 39229, 39230, 39231, 39232, 39233, 39234, 39235,
+ 39236, 39237, 39238, 39239, 39240, 39241, 39242, 39243,
+ 39244, 39245, 39246, 39247, 39248, 39249, 39250, 39251,
+ 39252, 39253, 39254, 39255, 39256, 39257, 39258, -1,
+ -1, -1, 39259, 39260, 39261, 39262, 39263, 39264,
+ -1, -1, 39265, 39266, 39267, 39268, 39269, 39270,
+ -1, -1, 39271, 39272, 39273, 39274, 39275, 39276,
+ -1, -1, 39277, 39278, 39279, -1, -1, -1,
+ 39280, 39281, 39282, 39283, 39284, 39285, 39286, -1,
+ 39287, 39288, 39289, 39290, 39291, 39292, 39293, -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, 6526, 6528,
+ 6530, 6532, 6534, 6536, 6538, -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, 6540, 6542, 6544, 6546, 6548,
+ 6550, -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,
+ 39320, 39321, 39322, 39323, 39324, 39325, 39326, 39327,
+ 39328, 39329, 39330, 39331, 39332, 39333, 39334, 39335,
+ 39336, 39337, 39338, 39339, 39340, 39341, 39342, 39343,
+ 39344, 39345, 39346, 39347, 39348, 39349, 39350, 39351,
+ 39352, 39353, 39354, 39355, 39356, 39357, 39358, 39359,
+ 39360, 39361, 39362, 39363, 39364, 39365, 39366, 39367,
+ 39368, 39369, 39370, 39371, 39372, 39373, 39374, 39375,
+ 39376, 39377, 39378, 39379, 39380, 39381, 39382, 39383,
+ 39384, 39385, 39386, 39387, 39388, 39389, 39390, 39391,
+ 39392, 39393, 39394, 39395, 39396, 39397, 39398, 39399,
+ 39400, 39401, 39402, 39403, 39404, -1, 39405, 39406,
+ 39407, 39408, 39409, 39410, 39411, 39412, 39413, 39414,
+ 39415, 39416, 39417, 39418, 39419, 39420, 39421, 39422,
+ 39423, 39424, 39425, 39426, 39427, 39428, 39429, 39430,
+ 39431, 39432, 39433, 39434, 39435, 39436, 39437, 39438,
+ 39439, 39440, 39441, 39442, 39443, 39444, 39445, 39446,
+ 39447, 39448, 39449, 39450, 39451, 39452, 39453, 39454,
+ 39455, 39456, 39457, 39458, 39459, 39460, 39461, 39462,
+ 39463, 39464, 39465, 39466, 39467, 39468, 39469, 39470,
+ 39471, 39472, 39473, 39474, 39475, -1, 39476, 39477,
+ -1, -1, 39478, -1, -1, 39479, 39480, -1,
+ -1, 39481, 39482, 39483, 39484, -1, 39485, 39486,
+ 39487, 39488, 39489, 39490, 39491, 39492, 39493, 39494,
+ 39495, 39496, -1, 39497, -1, 39498, 39499, 39500,
+ 39501, 39502, 39503, 39504, -1, 39505, 39506, 39507,
+ 39508, 39509, 39510, 39511, 39512, 39513, 39514, 39515,
+ 39516, 39517, 39518, 39519, 39520, 39521, 39522, 39523,
+ 39524, 39525, 39526, 39527, 39528, 39529, 39530, 39531,
+ 39532, 39533, 39534, 39535, 39536, 39537, 39538, 39539,
+ 39540, 39541, 39542, 39543, 39544, 39545, 39546, 39547,
+ 39548, 39549, 39550, 39551, 39552, 39553, 39554, 39555,
+ 39556, 39557, 39558, 39559, 39560, 39561, 39562, 39563,
+ 39564, 39565, 39566, 39567, 39568, 39569, -1, 39570,
+ 39571, 39572, 39573, -1, -1, 39574, 39575, 39576,
+ 39577, 39578, 39579, 39580, 39581, -1, 39582, 39583,
+ 39584, 39585, 39586, 39587, 39588, -1, 39589, 39590,
+ 39591, 39592, 39593, 39594, 39595, 39596, 39597, 39598,
+ 39599, 39600, 39601, 39602, 39603, 39604, 39605, 39606,
+ 39607, 39608, 39609, 39610, 39611, 39612, 39613, 39614,
+ 39615, 39616, -1, 39617, 39618, 39619, 39620, -1,
+ 39621, 39622, 39623, 39624, 39625, -1, 39626, -1,
+ -1, -1, 39627, 39628, 39629, 39630, 39631, 39632,
+ 39633, -1, 39634, 39635, 39636, 39637, 39638, 39639,
+ 39640, 39641, 39642, 39643, 39644, 39645, 39646, 39647,
+ 39648, 39649, 39650, 39651, 39652, 39653, 39654, 39655,
+ 39656, 39657, 39658, 39659, 39660, 39661, 39662, 39663,
+ 39664, 39665, 39666, 39667, 39668, 39669, 39670, 39671,
+ 39672, 39673, 39674, 39675, 39676, 39677, 39678, 39679,
+ 39680, 39681, 39682, 39683, 39684, 39685, 39686, 39687,
+ 39688, 39689, 39690, 39691, 39692, 39693, 39694, 39695,
+ 39696, 39697, 39698, 39699, 39700, 39701, 39702, 39703,
+ 39704, 39705, 39706, 39707, 39708, 39709, 39710, 39711,
+ 39712, 39713, 39714, 39715, 39716, 39717, 39718, 39719,
+ 39720, 39721, 39722, 39723, 39724, 39725, 39726, 39727,
+ 39728, 39729, 39730, 39731, 39732, 39733, 39734, 39735,
+ 39736, 39737, 39738, 39739, 39740, 39741, 39742, 39743,
+ 39744, 39745, 39746, 39747, 39748, 39749, 39750, 39751,
+ 39752, 39753, 39754, 39755, 39756, 39757, 39758, 39759,
+ 39760, 39761, 39762, 39763, 39764, 39765, 39766, 39767,
+ 39768, 39769, 39770, 39771, 39772, 39773, 39774, 39775,
+ 39776, 39777, 39778, 39779, 39780, 39781, 39782, 39783,
+ 39784, 39785, 39786, 39787, 39788, 39789, 39790, 39791,
+ 39792, 39793, 39794, 39795, 39796, 39797, 39798, 39799,
+ 39800, 39801, 39802, 39803, 39804, 39805, 39806, 39807,
+ 39808, 39809, 39810, 39811, 39812, 39813, 39814, 39815,
+ 39816, 39817, 39818, 39819, 39820, 39821, 39822, 39823,
+ 39824, 39825, 39826, 39827, 39828, 39829, 39830, 39831,
+ 39832, 39833, 39834, 39835, 39836, 39837, 39838, 39839,
+ 39840, 39841, 39842, 39843, 39844, 39845, 39846, 39847,
+ 39848, 39849, 39850, 39851, 39852, 39853, 39854, 39855,
+ 39856, 39857, 39858, 39859, 39860, 39861, 39862, 39863,
+ 39864, 39865, 39866, 39867, 39868, 39869, 39870, 39871,
+ 39872, 39873, 39874, 39875, 39876, 39877, 39878, 39879,
+ 39880, 39881, 39882, 39883, 39884, 39885, 39886, 39887,
+ 39888, 39889, 39890, 39891, 39892, 39893, 39894, 39895,
+ 39896, 39897, 39898, 39899, 39900, 39901, 39902, 39903,
+ 39904, 39905, 39906, 39907, 39908, 39909, 39910, 39911,
+ 39912, 39913, 39914, 39915, 39916, 39917, 39918, 39919,
+ 39920, 39921, 39922, 39923, 39924, 39925, 39926, 39927,
+ 39928, 39929, 39930, 39931, 39932, 39933, 39934, 39935,
+ 39936, 39937, 39938, 39939, 39940, 39941, 39942, 39943,
+ 39944, 39945, 39946, 39947, 39948, 39949, 39950, 39951,
+ 39952, 39953, 39954, 39955, 39956, 39957, 39958, 39959,
+ 39960, 39961, 39962, 39963, 39964, 39965, 39966, 39967,
+ 39968, 39969, 39970, 39971, 39972, 39973, -1, -1,
+ 39974, 39975, 39976, 39977, 39978, 39979, 39980, 39981,
+ 39982, 39983, 39984, 39985, 39986, 39987, 39988, 39989,
+ 39990, 39991, 39992, 39993, 39994, 39995, 39996, 39997,
+ 39998, 39999, 40000, 40001, 40002, 40003, 40004, 40005,
+ 40006, 40007, 40008, 40009, 40010, 40011, 40012, 40013,
+ 40014, 40015, 40016, 40017, 40018, 40019, 40020, 40021,
+ 40022, 40023, 40024, 40025, 40026, 40027, 40028, 40029,
+ 40030, 40031, 40032, 40033, 40034, 40035, 40036, 40037,
+ 40038, 40039, 40040, 40041, 40042, 40043, 40044, 40045,
+ 40046, 40047, 40048, 40049, 40050, 40051, 40052, 40053,
+ 40054, 40055, 40056, 40057, 40058, 40059, 40060, 40061,
+ 40062, 40063, 40064, 40065, 40066, 40067, 40068, 40069,
+ 40070, 40071, 40072, 40073, 40074, 40075, 40076, 40077,
+ 40078, 40079, 40080, 40081, 40082, 40083, 40084, 40085,
+ 40086, 40087, 40088, 40089, 40090, 40091, 40092, 40093,
+ 40094, 40095, 40096, 40097, 40098, 40099, 40100, 40101,
+ 40102, 40103, 40104, 40105, 40106, 40107, 40108, 40109,
+ 40110, 40111, 40112, 40113, 40114, 40115, 40116, 40117,
+ 40118, 40119, 40120, 40121, 40122, 40123, 40124, 40125,
+ 40126, 40127, 40128, 40129, 40130, 40131, 40132, 40133,
+ 40134, 40135, 40136, 40137, 40138, 40139, 40140, 40141,
+ 40142, 40143, 40144, 40145, 40146, 40147, 40148, 40149,
+ 40150, 40151, 40152, 40153, 40154, 40155, 40156, 40157,
+ 40158, 40159, 40160, 40161, 40162, 40163, 40164, 40165,
+ 40166, 40167, 40168, 40169, 40170, 40171, 40172, 40173,
+ 40174, 40175, 40176, 40177, 40178, 40179, 40180, 40181,
+ 40182, 40183, 40184, 40185, 40186, 40187, 40188, 40189,
+ 40190, 40191, 40192, 40193, 40194, 40195, 40196, 40197,
+ 40198, 40199, 40200, 40201, 40202, 40203, 40204, 40205,
+ 40206, 40207, 40208, 40209, 40210, 40211, 40212, 40213,
+ 40214, 40215, 40216, 40217, 40218, 40219, 40220, 40221,
+ 40222, 40223, 40224, 40225, 40226, 40227, 40228, 40229,
+ 40230, 40231, 40232, 40233, 40234, 40235, 40236, 40237,
+ 40238, 40239, 40240, 40241, 40242, 40243, 40244, 40245,
+ 40246, 40247, 40248, 40249, 40250, 40251, 40252, 40253,
+ 40254, 40255, 40256, 40257, 40258, 40259, 40260, 40261,
+ 40262, 40263, 40264, 40265, -1, -1, 40266, 40267,
+ 40268, 40269, 40270, 40271, 40272, 40273, 40274, 40275,
+ 40276, 40277, 40278, 40279, 40280, 40281, 40282, 40283,
+ 40284, 40285, 40286, 40287, 40288, 40289, 40290, 40291,
+ 40292, 40293, 40294, 40295, 40296, 40297, 40298, 40299,
+ 40300, 40301, 40302, 40303, 40304, 40305, 40306, 40307,
+ 40308, 40309, 40310, 40311, 40312, 40313, 40314, 40315,
+ 7548, 7549, 7550, 7551, 7552, 7553, 7554, 7555,
+ 7556, 7557, 7558, 7559, 7560, 7561, 7562, 7563,
+ 7564, 7565, 7566, 7567, 7568, 7569, 7570, 7571,
+ 7572, 7573, 7574, 7575, 7576, 7577, 7578, 7579,
+ 7580, 7581, 7582, 7583, 7584, 7585, 7586, 7587,
+ 7588, 7589, 7590, 7591, 7592, 7593, 7594, 7595,
+ 7596, 7597, 7598, 7599, 7600, 7601, 7602, 7603,
+ 7604, 7605, 7606, 7607, 7608, 7609, 7610, 7611,
+ 7612, 7613, 7614, 7615, 7616, 7617, 7618, 7619,
+ 7620, 7621, 7622, 7623, 7624, 7625, 7626, 7627,
+ 7628, 7629, 7630, 7631, 7632, 7633, 7634, 7635,
+ 7636, 7637, 7638, 7639, 7640, 7641, 7642, 7643,
+ 7644, 7645, 7646, 7647, 7648, 7649, 7650, 7651,
+ 7652, 7653, 7654, 7655, 7656, 7657, 7658, 7659,
+ 7660, 7661, 7662, 7663, 7664, 7665, 7666, 7667,
+ 7668, 7669, 7670, 7671, 7672, 7673, 7674, 7675,
+ 7676, 7677, 7678, 7679, 7680, 7681, 7682, 7683,
+ 7684, 7685, 7686, 7687, 7688, 7689, 7690, 7691,
+ 7692, 7693, 7694, 7695, 7696, 7697, 7698, 7699,
+ 7700, 7701, 7702, 7703, 7704, 7705, 7706, 7707,
+ 7708, 7709, 7710, 7711, 7712, 7713, 7714, 7715,
+ 7716, 7717, 7718, 7719, 7720, 7721, 7722, 7723,
+ 7724, 7725, 7726, 7727, 7728, 7729, 7730, 7731,
+ 7732, 7733, 7734, 7735, 7736, 7737, 7738, 7739,
+ 7740, 7741, 7742, 7743, 7744, 7745, 7746, 7747,
+ 7748, 7749, 7750, 7751, 7752, 7753, 7754, 7755,
+ 7756, 7757, 7758, 7759, 7760, 7761, 7762, 7763,
+ 7764, 7765, 7766, 7767, 7768, 7769, 7770, 7771,
+ 7772, 7773, 7774, 7775, 7776, 7777, 7778, 7779,
+ 7780, 7781, 7782, 7783, 7784, 7785, 7786, 7787,
+ 7788, 7789, 7790, 7791, 7792, 7793, 7794, 7795,
+ 7796, 7797, 7798, 7799, 7800, 7801, 7802, 7803,
+ 7804, 7805, 7806, 7807, 7808, 7809, 7810, 7811,
+ 7812, 7813, 7814, 7815, 7816, 7817, 7818, 7819,
+ 7820, 7821, 7822, 7823, 7824, 7825, 7826, 7827,
+ 7828, 7829, 7830, 7831, 7832, 7833, 7834, 7835,
+ 7836, 7837, 7838, 7839, 7840, 7841, 7842, 7843,
+ 7844, 7845, 7846, 7847, 7848, 7849, 7850, 7851,
+ 7852, 7853, 7854, 7855, 7856, 7857, 7858, 7859,
+ 7860, 7861, 7862, 7863, 7864, 7865, 7866, 7867,
+ 7868, 7869, 7870, 7871, 7872, 7873, 7874, 7875,
+ 7876, 7877, 7878, 7879, 7880, 7881, 7882, 7883,
+ 7884, 7885, 7886, 7887, 7888, 7889, 7890, 7891,
+ 7892, 7893, 7894, 7895, 7896, 7897, 7898, 7899,
+ 7900, 7901, 7902, 7903, 7904, 7905, 7906, 7907,
+ 7908, 7909, 7910, 7911, 7912, 7913, 7914, 7915,
+ 7916, 7917, 7918, 7919, 7920, 7921, 7922, 7923,
+ 7924, 7925, 7926, 7927, 7928, 7929, 7930, 7931,
+ 7932, 7933, 7934, 7935, 7936, 7937, 7938, 7939,
+ 7940, 7941, 7942, 7943, 7944, 7945, 7946, 7947,
+ 7948, 7949, 7950, 7951, 7952, 7953, 7954, 7955,
+ 7956, 7957, 7958, 7959, 7960, 7961, 7962, 7963,
+ 7964, 7965, 7966, 7967, 7968, 7969, 7970, 7971,
+ 7972, 7973, 7974, 7975, 7976, 7977, 7978, 7979,
+ 7980, 7981, 7982, 7983, 7984, 7985, 7986, 7987,
+ 7988, 7989, 7990, 7991, 7992, 7993, 7994, 7995,
+ 7996, 7997, 7998, 7999, 8000, 8001, 8002, 8003,
+ 8004, 8005, 8006, 8007, 8008, 8009, 8010, 8011,
+ 8012, 8013, 8014, 8015, 8016, 8017, 8018, 8019,
+ 8020, 8021, 8022, 8023, 8024, 8025, 8026, 8027,
+ 8028, 8029, 8030, 8031, 8032, 8033, 8034, 8035,
+ 8036, 8037, 8038, 8039, 8040, 8041, 8042, 8043,
+ 8044, 8045, 8046, 8047, 8048, 8049, 8050, 8051,
+ 8052, 8053, 8054, 8055, 8056, 8057, 8058, 8059,
+ 8060, 8061, 8062, 8063, 8064, 8065, 8066, 8067,
+ 8068, 8069, 8070, 8071, 8072, 8073, 8074, 8075,
+ 8076, 8077, 8078, 8079, 8080, 8081, 8082, 8083,
+ 8084, 8085, 8086, 8087, 8088, 8089, -1, -1
+ }
+};
diff --git a/lib/uninorm/decomposition.c b/lib/uninorm/decomposition.c
new file mode 100644
index 00000000..af030182
--- /dev/null
+++ b/lib/uninorm/decomposition.c
@@ -0,0 +1,102 @@
+/* Decomposition of Unicode characters.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include "decomposition-table.h"
+
+int
+uc_decomposition (ucs4_t uc, int *decomp_tag, ucs4_t *decomposition)
+{
+ if (uc >= 0xAC00 && uc < 0xD7A4)
+ {
+ /* Hangul syllable. See Unicode standard, chapter 3, section
+ "Hangul Syllable Decomposition", See also the clarification at
+ <http://www.unicode.org/versions/Unicode5.1.0/>, section
+ "Clarification of Hangul Jamo Handling". */
+ unsigned int t;
+
+ uc -= 0xAC00;
+ t = uc % 28;
+
+ *decomp_tag = UC_DECOMP_CANONICAL;
+ if (t == 0)
+ {
+ unsigned int v, l;
+
+ uc = uc / 28;
+ v = uc % 21;
+ l = uc / 21;
+
+ decomposition[0] = 0x1100 + l;
+ decomposition[1] = 0x1161 + v;
+ return 2;
+ }
+ else
+ {
+#if 1 /* Return the pairwise decomposition, not the full decomposition. */
+ decomposition[0] = 0xAC00 + uc - t; /* = 0xAC00 + (l * 21 + v) * 28; */
+ decomposition[1] = 0x11A7 + t;
+ return 2;
+#else
+ unsigned int v, l;
+
+ uc = uc / 28;
+ v = uc % 21;
+ l = uc / 21;
+
+ decomposition[0] = 0x1100 + l;
+ decomposition[1] = 0x1161 + v;
+ decomposition[2] = 0x11A7 + t;
+ return 3;
+#endif
+ }
+ }
+ else if (uc < 0x110000)
+ {
+ unsigned short entry = decomp_index (uc);
+ if (entry != (unsigned short)(-1))
+ {
+ const unsigned char *p;
+ unsigned int element;
+ unsigned int length;
+
+ p = &gl_uninorm_decomp_chars_table[3 * (entry & 0x7FFF)];
+ element = (p[0] << 16) | (p[1] << 8) | p[2];
+ /* The first element has 5 bits for the decomposition type. */
+ *decomp_tag = (element >> 18) & 0x1f;
+ length = 1;
+ for (;;)
+ {
+ /* Every element has an 18 bits wide Unicode code point. */
+ *decomposition = element & 0x3ffff;
+ /* Bit 23 tells whether there are more elements, */
+ if ((element & (1 << 23)) == 0)
+ break;
+ p += 3;
+ element = (p[0] << 16) | (p[1] << 8) | p[2];
+ decomposition++;
+ length++;
+ }
+ return length;
+ }
+ }
+ return -1;
+}
diff --git a/lib/uninorm/nfc.c b/lib/uninorm/nfc.c
new file mode 100644
index 00000000..c205b166
--- /dev/null
+++ b/lib/uninorm/nfc.c
@@ -0,0 +1,31 @@
+/* Unicode Normalization Form C.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include "normalize-internal.h"
+
+const struct unicode_normalization_form uninorm_nfc =
+ {
+ NF_IS_COMPOSING,
+ uc_canonical_decomposition,
+ uc_composition,
+ &uninorm_nfd
+ };
diff --git a/lib/uninorm/nfd.c b/lib/uninorm/nfd.c
new file mode 100644
index 00000000..54c98bc2
--- /dev/null
+++ b/lib/uninorm/nfd.c
@@ -0,0 +1,31 @@
+/* Unicode Normalization Form D.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include "normalize-internal.h"
+
+const struct unicode_normalization_form uninorm_nfd =
+ {
+ 0,
+ uc_canonical_decomposition,
+ NULL,
+ &uninorm_nfd
+ };
diff --git a/lib/uninorm/nfkc.c b/lib/uninorm/nfkc.c
new file mode 100644
index 00000000..1fb52f13
--- /dev/null
+++ b/lib/uninorm/nfkc.c
@@ -0,0 +1,32 @@
+/* Unicode Normalization Form KC.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include "normalize-internal.h"
+#include "decompose-internal.h"
+
+const struct unicode_normalization_form uninorm_nfkc =
+ {
+ NF_IS_COMPAT_DECOMPOSING | NF_IS_COMPOSING,
+ uc_compat_decomposition,
+ uc_composition,
+ &uninorm_nfkd
+ };
diff --git a/lib/uninorm/nfkd.c b/lib/uninorm/nfkd.c
new file mode 100644
index 00000000..871dd647
--- /dev/null
+++ b/lib/uninorm/nfkd.c
@@ -0,0 +1,32 @@
+/* Unicode Normalization Form KD.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include "normalize-internal.h"
+#include "decompose-internal.h"
+
+const struct unicode_normalization_form uninorm_nfkd =
+ {
+ NF_IS_COMPAT_DECOMPOSING,
+ uc_compat_decomposition,
+ NULL,
+ &uninorm_nfkd
+ };
diff --git a/lib/uninorm/normalize-internal.h b/lib/uninorm/normalize-internal.h
new file mode 100644
index 00000000..0b346c65
--- /dev/null
+++ b/lib/uninorm/normalize-internal.h
@@ -0,0 +1,37 @@
+/* Normalization of Unicode strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <stddef.h>
+
+#include "unitypes.h"
+
+/* Complete definition of normalization form descriptor. */
+struct unicode_normalization_form
+{
+ /* Bit mask containing meta-information.
+ This must be the first field. */
+ unsigned int description;
+ #define NF_IS_COMPAT_DECOMPOSING (1 << 0)
+ #define NF_IS_COMPOSING (1 << 1)
+ /* Function that decomposes a Unicode character. */
+ int (*decomposer) (ucs4_t uc, ucs4_t *decomposition);
+ /* Function that combines two Unicode characters, a starter and another
+ character. */
+ ucs4_t (*composer) (ucs4_t uc1, ucs4_t uc2);
+ /* Decomposing variant. */
+ const struct unicode_normalization_form *decomposing_variant;
+};
diff --git a/lib/uninorm/u-normalize-internal.h b/lib/uninorm/u-normalize-internal.h
new file mode 100644
index 00000000..70c32551
--- /dev/null
+++ b/lib/uninorm/u-normalize-internal.h
@@ -0,0 +1,375 @@
+/* Decomposition and composition of Unicode strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+UNIT *
+FUNC (uninorm_t nf, const UNIT *s, size_t n,
+ UNIT *resultbuf, size_t *lengthp)
+{
+ int (*decomposer) (ucs4_t uc, ucs4_t *decomposition) = nf->decomposer;
+ ucs4_t (*composer) (ucs4_t uc1, ucs4_t uc2) = nf->composer;
+
+ /* The result being accumulated. */
+ UNIT *result;
+ size_t length;
+ size_t allocated;
+ /* The buffer for sorting. */
+ #define SORTBUF_PREALLOCATED 64
+ struct ucs4_with_ccc sortbuf_preallocated[2 * SORTBUF_PREALLOCATED];
+ struct ucs4_with_ccc *sortbuf; /* array of size 2 * sortbuf_allocated */
+ size_t sortbuf_allocated;
+ size_t sortbuf_count;
+
+ /* Initialize the accumulator. */
+ if (resultbuf == NULL)
+ {
+ result = NULL;
+ allocated = 0;
+ }
+ else
+ {
+ result = resultbuf;
+ allocated = *lengthp;
+ }
+ length = 0;
+
+ /* Initialize the buffer for sorting. */
+ sortbuf = sortbuf_preallocated;
+ sortbuf_allocated = SORTBUF_PREALLOCATED;
+ sortbuf_count = 0;
+
+ {
+ const UNIT *s_end = s + n;
+
+ for (;;)
+ {
+ int count;
+ ucs4_t decomposed[UC_DECOMPOSITION_MAX_LENGTH];
+ int decomposed_count;
+ int i;
+
+ if (s < s_end)
+ {
+ /* Fetch the next character. */
+ count = U_MBTOUC_UNSAFE (&decomposed[0], s, s_end - s);
+ decomposed_count = 1;
+
+ /* Decompose it, recursively.
+ It would be possible to precompute the recursive decomposition
+ and store it in a table. But this would significantly increase
+ the size of the decomposition tables, because for example for
+ U+1FC1 the recursive canonical decomposition and the recursive
+ compatibility decomposition are different. */
+ {
+ int curr;
+
+ for (curr = 0; curr < decomposed_count; )
+ {
+ /* Invariant: decomposed[0..curr-1] is fully decomposed, i.e.
+ all elements are atomic. */
+ ucs4_t curr_decomposed[UC_DECOMPOSITION_MAX_LENGTH];
+ int curr_decomposed_count;
+
+ curr_decomposed_count = decomposer (decomposed[curr], curr_decomposed);
+ if (curr_decomposed_count >= 0)
+ {
+ /* Move curr_decomposed[0..curr_decomposed_count-1] over
+ decomposed[curr], making room. It's not worth using
+ memcpy() here, since the counts are so small. */
+ int shift = curr_decomposed_count - 1;
+
+ if (shift < 0)
+ abort ();
+ if (shift > 0)
+ {
+ int j;
+
+ decomposed_count += shift;
+ if (decomposed_count > UC_DECOMPOSITION_MAX_LENGTH)
+ abort ();
+ for (j = decomposed_count - 1 - shift; j > curr; j--)
+ decomposed[j + shift] = decomposed[j];
+ }
+ for (; shift >= 0; shift--)
+ decomposed[curr + shift] = curr_decomposed[shift];
+ }
+ else
+ {
+ /* decomposed[curr] is atomic. */
+ curr++;
+ }
+ }
+ }
+ }
+ else
+ {
+ count = 0;
+ decomposed_count = 0;
+ }
+
+ i = 0;
+ for (;;)
+ {
+ ucs4_t uc;
+ int ccc;
+
+ if (s < s_end)
+ {
+ /* Fetch the next character from the decomposition. */
+ if (i == decomposed_count)
+ break;
+ uc = decomposed[i];
+ ccc = uc_combining_class (uc);
+ }
+ else
+ {
+ /* End of string reached. */
+ uc = 0;
+ ccc = 0;
+ }
+
+ if (ccc == 0)
+ {
+ size_t j;
+
+ /* Apply the canonical ordering algorithm to the accumulated
+ sequence of characters. */
+ if (sortbuf_count > 1)
+ gl_uninorm_decompose_merge_sort_inplace (sortbuf, sortbuf_count,
+ sortbuf + sortbuf_count);
+
+ if (composer != NULL)
+ {
+ /* Attempt to combine decomposed characters, as specified
+ in the Unicode Standard Annex #15 "Unicode Normalization
+ Forms". We need to check
+ 1. whether the first accumulated character is a
+ "starter" (i.e. has ccc = 0). This is usually the
+ case. But when the string starts with a
+ non-starter, the sortbuf also starts with a
+ non-starter. Btw, this check could also be
+ omitted, because the composition table has only
+ entries (code1, code2) for which code1 is a
+ starter; if the first accumulated character is not
+ a starter, no lookup will succeed.
+ 2. If the sortbuf has more than one character, check
+ for each of these characters that are not "blocked"
+ from the starter (i.e. have a ccc that is higher
+ than the ccc of the previous character) whether it
+ can be combined with the first character.
+ 3. If only one character is left in sortbuf, check
+ whether it can be combined with the next character
+ (also a starter). */
+ if (sortbuf_count > 0 && sortbuf[0].ccc == 0)
+ {
+ for (j = 1; j < sortbuf_count; )
+ {
+ if (sortbuf[j].ccc > sortbuf[j - 1].ccc)
+ {
+ ucs4_t combined =
+ composer (sortbuf[0].code, sortbuf[j].code);
+ if (combined)
+ {
+ size_t k;
+
+ sortbuf[0].code = combined;
+ /* sortbuf[0].ccc = 0, still valid. */
+ for (k = j + 1; k < sortbuf_count; k++)
+ sortbuf[k - 1] = sortbuf[k];
+ sortbuf_count--;
+ continue;
+ }
+ }
+ j++;
+ }
+ if (s < s_end && sortbuf_count == 1)
+ {
+ ucs4_t combined =
+ composer (sortbuf[0].code, uc);
+ if (combined)
+ {
+ uc = combined;
+ ccc = 0;
+ /* uc could be further combined with subsequent
+ characters. So don't put it into sortbuf[0] in
+ this round, only in the next round. */
+ sortbuf_count = 0;
+ }
+ }
+ }
+ }
+
+ for (j = 0; j < sortbuf_count; j++)
+ {
+ ucs4_t muc = sortbuf[j].code;
+
+ /* Append muc to the result accumulator. */
+ if (length < allocated)
+ {
+ int ret =
+ U_UCTOMB (result + length, muc, allocated - length);
+ if (ret == -1)
+ {
+ errno = EINVAL;
+ goto fail;
+ }
+ if (ret >= 0)
+ {
+ length += ret;
+ goto done_appending;
+ }
+ }
+ {
+ size_t old_allocated = allocated;
+ size_t new_allocated = 2 * old_allocated;
+ if (new_allocated < 64)
+ new_allocated = 64;
+ if (new_allocated < old_allocated) /* integer overflow? */
+ abort ();
+ {
+ UNIT *larger_result;
+ if (result == NULL)
+ {
+ larger_result =
+ (UNIT *) malloc (new_allocated * sizeof (UNIT));
+ if (larger_result == NULL)
+ {
+ errno = ENOMEM;
+ goto fail;
+ }
+ }
+ else if (result == resultbuf)
+ {
+ larger_result =
+ (UNIT *) malloc (new_allocated * sizeof (UNIT));
+ if (larger_result == NULL)
+ {
+ errno = ENOMEM;
+ goto fail;
+ }
+ U_CPY (larger_result, resultbuf, length);
+ }
+ else
+ {
+ larger_result =
+ (UNIT *) realloc (result, new_allocated * sizeof (UNIT));
+ if (larger_result == NULL)
+ {
+ errno = ENOMEM;
+ goto fail;
+ }
+ }
+ result = larger_result;
+ allocated = new_allocated;
+ {
+ int ret =
+ U_UCTOMB (result + length, muc, allocated - length);
+ if (ret == -1)
+ {
+ errno = EINVAL;
+ goto fail;
+ }
+ if (ret < 0)
+ abort ();
+ length += ret;
+ goto done_appending;
+ }
+ }
+ }
+ done_appending: ;
+ }
+
+ /* sortbuf is now empty. */
+ sortbuf_count = 0;
+ }
+
+ if (!(s < s_end))
+ /* End of string reached. */
+ break;
+
+ /* Append (uc, ccc) to sortbuf. */
+ if (sortbuf_count == sortbuf_allocated)
+ {
+ struct ucs4_with_ccc *new_sortbuf;
+
+ sortbuf_allocated = 2 * sortbuf_allocated;
+ if (sortbuf_allocated < sortbuf_count) /* integer overflow? */
+ abort ();
+ new_sortbuf =
+ (struct ucs4_with_ccc *) malloc (2 * sortbuf_allocated * sizeof (struct ucs4_with_ccc));
+ memcpy (new_sortbuf, sortbuf,
+ sortbuf_count * sizeof (struct ucs4_with_ccc));
+ if (sortbuf != sortbuf_preallocated)
+ free (sortbuf);
+ sortbuf = new_sortbuf;
+ }
+ sortbuf[sortbuf_count].code = uc;
+ sortbuf[sortbuf_count].ccc = ccc;
+ sortbuf_count++;
+
+ i++;
+ }
+
+ if (!(s < s_end))
+ /* End of string reached. */
+ break;
+
+ s += count;
+ }
+ }
+
+ if (length == 0)
+ {
+ if (result == NULL)
+ {
+ /* Return a non-NULL value. NULL means error. */
+ result = (UNIT *) malloc (1);
+ if (result == NULL)
+ {
+ errno = ENOMEM;
+ goto fail;
+ }
+ }
+ }
+ else if (result != resultbuf && length < allocated)
+ {
+ /* Shrink the allocated memory if possible. */
+ UNIT *memory;
+
+ memory = (UNIT *) realloc (result, length * sizeof (UNIT));
+ if (memory != NULL)
+ result = memory;
+ }
+
+ if (sortbuf_count > 0)
+ abort ();
+ if (sortbuf != sortbuf_preallocated)
+ free (sortbuf);
+
+ *lengthp = length;
+ return result;
+
+ fail:
+ {
+ int saved_errno = errno;
+ if (sortbuf != sortbuf_preallocated)
+ free (sortbuf);
+ if (result != resultbuf)
+ free (result);
+ errno = saved_errno;
+ }
+ return NULL;
+}
diff --git a/lib/uninorm/u-normcmp.h b/lib/uninorm/u-normcmp.h
new file mode 100644
index 00000000..66164406
--- /dev/null
+++ b/lib/uninorm/u-normcmp.h
@@ -0,0 +1,64 @@
+/* Normalization insensitive comparison of Unicode strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+int
+FUNC (const UNIT *s1, size_t n1, const UNIT *s2, size_t n2,
+ uninorm_t nf, int *resultp)
+{
+ UNIT buf1[2048 / sizeof (UNIT)];
+ UNIT buf2[2048 / sizeof (UNIT)];
+ UNIT *norms1;
+ size_t norms1_length;
+ UNIT *norms2;
+ size_t norms2_length;
+ int cmp;
+
+ /* Normalize S1. */
+ norms1_length = sizeof (buf1) / sizeof (UNIT);
+ norms1 = U_NORMALIZE (nf, s1, n1, buf1, &norms1_length);
+ if (norms1 == NULL)
+ /* errno is set here. */
+ return -1;
+
+ /* Normalize S2. */
+ norms2_length = sizeof (buf2) / sizeof (UNIT);
+ norms2 = U_NORMALIZE (nf, s2, n2, buf2, &norms2_length);
+ if (norms2 == NULL)
+ {
+ if (norms1 != buf1)
+ {
+ int saved_errno = errno;
+ free (norms1);
+ errno = saved_errno;
+ }
+ return -1;
+ }
+
+ /* Compare the normalized strings. */
+ cmp = U_CMP2 (norms1, norms1_length, norms2, norms2_length);
+ if (cmp > 0)
+ cmp = 1;
+ else if (cmp < 0)
+ cmp = -1;
+
+ if (norms2 != buf2)
+ free (norms2);
+ if (norms1 != buf1)
+ free (norms1);
+ *resultp = cmp;
+ return 0;
+}
diff --git a/lib/uninorm/u-normcoll.h b/lib/uninorm/u-normcoll.h
new file mode 100644
index 00000000..e30880b0
--- /dev/null
+++ b/lib/uninorm/u-normcoll.h
@@ -0,0 +1,65 @@
+/* Locale dependent, normalization insensitive comparison of Unicode strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+int
+FUNC (const UNIT *s1, size_t n1, const UNIT *s2, size_t n2,
+ uninorm_t nf, int *resultp)
+{
+ char buf1[2048];
+ char buf2[2048];
+ char *transformed1;
+ size_t transformed1_length;
+ char *transformed2;
+ size_t transformed2_length;
+ int cmp;
+
+ /* Normalize and transform S1. */
+ transformed1_length = sizeof (buf1);
+ transformed1 = U_NORMXFRM (s1, n1, nf, buf1, &transformed1_length);
+ if (transformed1 == NULL)
+ /* errno is set here. */
+ return -1;
+
+ /* Normalize and transform S2. */
+ transformed2_length = sizeof (buf2);
+ transformed2 = U_NORMXFRM (s2, n2, nf, buf2, &transformed2_length);
+ if (transformed2 == NULL)
+ {
+ if (transformed1 != buf1)
+ {
+ int saved_errno = errno;
+ free (transformed1);
+ errno = saved_errno;
+ }
+ return -1;
+ }
+
+ /* Compare the transformed strings. */
+ cmp = memcmp2 (transformed1, transformed1_length,
+ transformed2, transformed2_length);
+ if (cmp < 0)
+ cmp = -1;
+ else if (cmp > 0)
+ cmp = 1;
+
+ if (transformed2 != buf2)
+ free (transformed2);
+ if (transformed1 != buf1)
+ free (transformed1);
+ *resultp = cmp;
+ return 0;
+}
diff --git a/lib/uninorm/u-normxfrm.h b/lib/uninorm/u-normxfrm.h
new file mode 100644
index 00000000..6ed1e3c3
--- /dev/null
+++ b/lib/uninorm/u-normxfrm.h
@@ -0,0 +1,87 @@
+/* Locale dependent transformation for comparison of Unicode strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+char *
+FUNC (const UNIT *s, size_t n, uninorm_t nf,
+ char *resultbuf, size_t *lengthp)
+{
+ UNIT normsbuf[2048 / sizeof (UNIT)];
+ UNIT *norms;
+ size_t norms_length;
+ char convsbuf[2048];
+ char *convs;
+ size_t convs_length;
+ char *result;
+
+ /* Normalize the Unicode string. */
+ norms_length = sizeof (normsbuf) / sizeof (UNIT);
+ norms = U_NORMALIZE (nf, s, n, normsbuf, &norms_length);
+ if (norms == NULL)
+ /* errno is set here. */
+ return NULL;
+
+ /* Convert it to locale encoding. */
+ convs_length = sizeof (convsbuf) - 1;
+ convs = U_CONV_TO_ENCODING (locale_charset (),
+ iconveh_error,
+ norms, norms_length,
+ NULL,
+ convsbuf, &convs_length);
+ if (convs == NULL)
+ {
+ if (norms != normsbuf)
+ {
+ int saved_errno = errno;
+ free (norms);
+ errno = saved_errno;
+ }
+ return NULL;
+ }
+
+ if (norms != normsbuf)
+ free (norms);
+
+ /* Ensure one more byte is available. */
+ if (convs != convsbuf)
+ {
+ char *memory = (char *) realloc (convs, convs_length + 1);
+ if (memory == NULL)
+ {
+ free (convs);
+ errno = ENOMEM;
+ return NULL;
+ }
+ convs = memory;
+ }
+
+ /* Apply locale dependent transformations for comparison. */
+ result = memxfrm (convs, convs_length, resultbuf, lengthp);
+ if (result == NULL)
+ {
+ if (convs != convsbuf)
+ {
+ int saved_errno = errno;
+ free (convs);
+ errno = saved_errno;
+ }
+ return NULL;
+ }
+
+ if (convs != convsbuf)
+ free (convs);
+ return result;
+}
diff --git a/lib/uninorm/u16-normalize.c b/lib/uninorm/u16-normalize.c
new file mode 100644
index 00000000..86334d53
--- /dev/null
+++ b/lib/uninorm/u16-normalize.c
@@ -0,0 +1,38 @@
+/* Normalization of UTF-16 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include <errno.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+#include "unictype.h"
+#include "normalize-internal.h"
+#include "decompose-internal.h"
+
+#define FUNC u16_normalize
+#define UNIT uint16_t
+#define U_MBTOUC_UNSAFE u16_mbtouc_unsafe
+#define U_UCTOMB u16_uctomb
+#define U_CPY u16_cpy
+#include "u-normalize-internal.h"
diff --git a/lib/uninorm/u16-normcmp.c b/lib/uninorm/u16-normcmp.c
new file mode 100644
index 00000000..c66cc1be
--- /dev/null
+++ b/lib/uninorm/u16-normcmp.c
@@ -0,0 +1,33 @@
+/* Normalization insensitive comparison of UTF-16 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "minmax.h"
+#include "unistr.h"
+
+#define FUNC u16_normcmp
+#define UNIT uint16_t
+#define U_NORMALIZE u16_normalize
+#define U_CMP2 u16_cmp2
+#include "u-normcmp.h"
diff --git a/lib/uninorm/u16-normcoll.c b/lib/uninorm/u16-normcoll.c
new file mode 100644
index 00000000..a4f76c1b
--- /dev/null
+++ b/lib/uninorm/u16-normcoll.c
@@ -0,0 +1,31 @@
+/* Locale dependent, normalization insensitive comparison of UTF-16 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "memcmp2.h"
+
+#define FUNC u16_normcoll
+#define UNIT uint16_t
+#define U_NORMXFRM u16_normxfrm
+#include "u-normcoll.h"
diff --git a/lib/uninorm/u16-normxfrm.c b/lib/uninorm/u16-normxfrm.c
new file mode 100644
index 00000000..cc22d8e3
--- /dev/null
+++ b/lib/uninorm/u16-normxfrm.c
@@ -0,0 +1,34 @@
+/* Locale dependent transformation for comparison of UTF-16 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "localcharset.h"
+#include "uniconv.h"
+#include "memxfrm.h"
+
+#define FUNC u16_normxfrm
+#define UNIT uint16_t
+#define U_NORMALIZE u16_normalize
+#define U_CONV_TO_ENCODING u16_conv_to_encoding
+#include "u-normxfrm.h"
diff --git a/lib/uninorm/u32-normalize.c b/lib/uninorm/u32-normalize.c
new file mode 100644
index 00000000..6549423f
--- /dev/null
+++ b/lib/uninorm/u32-normalize.c
@@ -0,0 +1,38 @@
+/* Normalization of UTF-32 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include <errno.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+#include "unictype.h"
+#include "normalize-internal.h"
+#include "decompose-internal.h"
+
+#define FUNC u32_normalize
+#define UNIT uint32_t
+#define U_MBTOUC_UNSAFE u32_mbtouc_unsafe
+#define U_UCTOMB u32_uctomb
+#define U_CPY u32_cpy
+#include "u-normalize-internal.h"
diff --git a/lib/uninorm/u32-normcmp.c b/lib/uninorm/u32-normcmp.c
new file mode 100644
index 00000000..58f890d6
--- /dev/null
+++ b/lib/uninorm/u32-normcmp.c
@@ -0,0 +1,33 @@
+/* Normalization insensitive comparison of UTF-32 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "minmax.h"
+#include "unistr.h"
+
+#define FUNC u32_normcmp
+#define UNIT uint32_t
+#define U_NORMALIZE u32_normalize
+#define U_CMP2 u32_cmp2
+#include "u-normcmp.h"
diff --git a/lib/uninorm/u32-normcoll.c b/lib/uninorm/u32-normcoll.c
new file mode 100644
index 00000000..0343f760
--- /dev/null
+++ b/lib/uninorm/u32-normcoll.c
@@ -0,0 +1,31 @@
+/* Locale dependent, normalization insensitive comparison of UTF-32 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "memcmp2.h"
+
+#define FUNC u32_normcoll
+#define UNIT uint32_t
+#define U_NORMXFRM u32_normxfrm
+#include "u-normcoll.h"
diff --git a/lib/uninorm/u32-normxfrm.c b/lib/uninorm/u32-normxfrm.c
new file mode 100644
index 00000000..4b4dbc05
--- /dev/null
+++ b/lib/uninorm/u32-normxfrm.c
@@ -0,0 +1,34 @@
+/* Locale dependent transformation for comparison of UTF-32 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "localcharset.h"
+#include "uniconv.h"
+#include "memxfrm.h"
+
+#define FUNC u32_normxfrm
+#define UNIT uint32_t
+#define U_NORMALIZE u32_normalize
+#define U_CONV_TO_ENCODING u32_conv_to_encoding
+#include "u-normxfrm.h"
diff --git a/lib/uninorm/u8-normalize.c b/lib/uninorm/u8-normalize.c
new file mode 100644
index 00000000..7e003ec2
--- /dev/null
+++ b/lib/uninorm/u8-normalize.c
@@ -0,0 +1,38 @@
+/* Normalization of UTF-8 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include <errno.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+#include "unictype.h"
+#include "normalize-internal.h"
+#include "decompose-internal.h"
+
+#define FUNC u8_normalize
+#define UNIT uint8_t
+#define U_MBTOUC_UNSAFE u8_mbtouc_unsafe
+#define U_UCTOMB u8_uctomb
+#define U_CPY u8_cpy
+#include "u-normalize-internal.h"
diff --git a/lib/uninorm/u8-normcmp.c b/lib/uninorm/u8-normcmp.c
new file mode 100644
index 00000000..6994f6c5
--- /dev/null
+++ b/lib/uninorm/u8-normcmp.c
@@ -0,0 +1,33 @@
+/* Normalization insensitive comparison of UTF-8 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "minmax.h"
+#include "unistr.h"
+
+#define FUNC u8_normcmp
+#define UNIT uint8_t
+#define U_NORMALIZE u8_normalize
+#define U_CMP2 u8_cmp2
+#include "u-normcmp.h"
diff --git a/lib/uninorm/u8-normcoll.c b/lib/uninorm/u8-normcoll.c
new file mode 100644
index 00000000..4d163d41
--- /dev/null
+++ b/lib/uninorm/u8-normcoll.c
@@ -0,0 +1,31 @@
+/* Locale dependent, normalization insensitive comparison of UTF-8 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "memcmp2.h"
+
+#define FUNC u8_normcoll
+#define UNIT uint8_t
+#define U_NORMXFRM u8_normxfrm
+#include "u-normcoll.h"
diff --git a/lib/uninorm/u8-normxfrm.c b/lib/uninorm/u8-normxfrm.c
new file mode 100644
index 00000000..31da05d1
--- /dev/null
+++ b/lib/uninorm/u8-normxfrm.c
@@ -0,0 +1,34 @@
+/* Locale dependent transformation for comparison of UTF-8 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "localcharset.h"
+#include "uniconv.h"
+#include "memxfrm.h"
+
+#define FUNC u8_normxfrm
+#define UNIT uint8_t
+#define U_NORMALIZE u8_normalize
+#define U_CONV_TO_ENCODING u8_conv_to_encoding
+#include "u-normxfrm.h"
diff --git a/lib/uninorm/uninorm-filter.c b/lib/uninorm/uninorm-filter.c
new file mode 100644
index 00000000..1d03cfaf
--- /dev/null
+++ b/lib/uninorm/uninorm-filter.c
@@ -0,0 +1,367 @@
+/* Stream-based normalization of Unicode strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uninorm.h"
+
+#include <errno.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unictype.h"
+#include "normalize-internal.h"
+#include "decompose-internal.h"
+
+
+struct uninorm_filter
+{
+ /* Characteristics of the normalization form. */
+ int (*decomposer) (ucs4_t uc, ucs4_t *decomposition);
+ ucs4_t (*composer) (ucs4_t uc1, ucs4_t uc2);
+
+ /* The encapsulated stream. */
+ int (*stream_func) (void *stream_data, ucs4_t uc);
+ void *stream_data;
+
+ /* The buffer for sorting. */
+ #define SORTBUF_PREALLOCATED 64
+ struct ucs4_with_ccc sortbuf_preallocated[2 * SORTBUF_PREALLOCATED];
+ struct ucs4_with_ccc *sortbuf; /* array of size 2 * sortbuf_allocated */
+ size_t sortbuf_allocated;
+ size_t sortbuf_count;
+};
+
+struct uninorm_filter *
+uninorm_filter_create (uninorm_t nf,
+ int (*stream_func) (void *stream_data, ucs4_t uc),
+ void *stream_data)
+{
+ struct uninorm_filter *filter =
+ (struct uninorm_filter *) malloc (sizeof (struct uninorm_filter));
+
+ if (filter == NULL)
+ /* errno is ENOMEM. */
+ return NULL;
+
+ filter->decomposer = nf->decomposer;
+ filter->composer = nf->composer;
+ filter->stream_func = stream_func;
+ filter->stream_data = stream_data;
+ filter->sortbuf = filter->sortbuf_preallocated;
+ filter->sortbuf_allocated = SORTBUF_PREALLOCATED;
+ filter->sortbuf_count = 0;
+
+ return filter;
+}
+
+int
+uninorm_filter_write (struct uninorm_filter *filter, ucs4_t uc_arg)
+{
+ ucs4_t decomposed[UC_DECOMPOSITION_MAX_LENGTH];
+ int decomposed_count;
+
+ /* Accept the next character. */
+ decomposed[0] = uc_arg;
+ decomposed_count = 1;
+
+ /* Decompose it, recursively.
+ It would be possible to precompute the recursive decomposition
+ and store it in a table. But this would significantly increase
+ the size of the decomposition tables, because for example for
+ U+1FC1 the recursive canonical decomposition and the recursive
+ compatibility decomposition are different. */
+ {
+ int curr;
+
+ for (curr = 0; curr < decomposed_count; )
+ {
+ /* Invariant: decomposed[0..curr-1] is fully decomposed, i.e.
+ all elements are atomic. */
+ ucs4_t curr_decomposed[UC_DECOMPOSITION_MAX_LENGTH];
+ int curr_decomposed_count;
+
+ curr_decomposed_count =
+ filter->decomposer (decomposed[curr], curr_decomposed);
+ if (curr_decomposed_count >= 0)
+ {
+ /* Move curr_decomposed[0..curr_decomposed_count-1] over
+ decomposed[curr], making room. It's not worth using
+ memcpy() here, since the counts are so small. */
+ int shift = curr_decomposed_count - 1;
+
+ if (shift < 0)
+ abort ();
+ if (shift > 0)
+ {
+ int j;
+
+ decomposed_count += shift;
+ if (decomposed_count > UC_DECOMPOSITION_MAX_LENGTH)
+ abort ();
+ for (j = decomposed_count - 1 - shift; j > curr; j--)
+ decomposed[j + shift] = decomposed[j];
+ }
+ for (; shift >= 0; shift--)
+ decomposed[curr + shift] = curr_decomposed[shift];
+ }
+ else
+ {
+ /* decomposed[curr] is atomic. */
+ curr++;
+ }
+ }
+ }
+
+ {
+ /* Cache sortbuf and sortbuf_count in local register variables. */
+ struct ucs4_with_ccc * const sortbuf = filter->sortbuf;
+ size_t sortbuf_count = filter->sortbuf_count;
+ int i;
+
+ for (i = 0; i < decomposed_count; i++)
+ {
+ /* Fetch the next character from the decomposition. */
+ ucs4_t uc = decomposed[i];
+ int ccc = uc_combining_class (uc);
+
+ if (ccc == 0)
+ {
+ size_t j;
+
+ /* Apply the canonical ordering algorithm to the accumulated
+ sequence of characters. */
+ if (sortbuf_count > 1)
+ gl_uninorm_decompose_merge_sort_inplace (sortbuf, sortbuf_count,
+ sortbuf + sortbuf_count);
+
+ if (filter->composer != NULL)
+ {
+ /* Attempt to combine decomposed characters, as specified
+ in the Unicode Standard Annex #15 "Unicode Normalization
+ Forms". We need to check
+ 1. whether the first accumulated character is a
+ "starter" (i.e. has ccc = 0). This is usually the
+ case. But when the string starts with a
+ non-starter, the sortbuf also starts with a
+ non-starter. Btw, this check could also be
+ omitted, because the composition table has only
+ entries (code1, code2) for which code1 is a
+ starter; if the first accumulated character is not
+ a starter, no lookup will succeed.
+ 2. If the sortbuf has more than one character, check
+ for each of these characters that are not "blocked"
+ from the starter (i.e. have a ccc that is higher
+ than the ccc of the previous character) whether it
+ can be combined with the first character.
+ 3. If only one character is left in sortbuf, check
+ whether it can be combined with the next character
+ (also a starter). */
+ if (sortbuf_count > 0 && sortbuf[0].ccc == 0)
+ {
+ for (j = 1; j < sortbuf_count; )
+ {
+ if (sortbuf[j].ccc > sortbuf[j - 1].ccc)
+ {
+ ucs4_t combined =
+ filter->composer (sortbuf[0].code, sortbuf[j].code);
+ if (combined)
+ {
+ size_t k;
+
+ sortbuf[0].code = combined;
+ /* sortbuf[0].ccc = 0, still valid. */
+ for (k = j + 1; k < sortbuf_count; k++)
+ sortbuf[k - 1] = sortbuf[k];
+ sortbuf_count--;
+ continue;
+ }
+ }
+ j++;
+ }
+ if (sortbuf_count == 1)
+ {
+ ucs4_t combined =
+ filter->composer (sortbuf[0].code, uc);
+ if (combined)
+ {
+ uc = combined;
+ ccc = 0;
+ /* uc could be further combined with subsequent
+ characters. So don't put it into sortbuf[0] in
+ this round, only in the next round. */
+ sortbuf_count = 0;
+ }
+ }
+ }
+ }
+
+ for (j = 0; j < sortbuf_count; j++)
+ {
+ ucs4_t muc = sortbuf[j].code;
+
+ /* Output muc to the encapsulated stream. */
+ int ret = filter->stream_func (filter->stream_data, muc);
+ if (ret < 0)
+ {
+ /* errno is set here. */
+ filter->sortbuf_count = 0;
+ return -1;
+ }
+ }
+
+ /* sortbuf is now empty. */
+ sortbuf_count = 0;
+ }
+
+ /* Append (uc, ccc) to sortbuf. */
+ if (sortbuf_count == filter->sortbuf_allocated)
+ {
+ struct ucs4_with_ccc *new_sortbuf;
+
+ filter->sortbuf_allocated = 2 * filter->sortbuf_allocated;
+ if (filter->sortbuf_allocated < sortbuf_count) /* integer overflow? */
+ abort ();
+ new_sortbuf =
+ (struct ucs4_with_ccc *)
+ malloc (2 * filter->sortbuf_allocated * sizeof (struct ucs4_with_ccc));
+ memcpy (new_sortbuf, filter->sortbuf,
+ sortbuf_count * sizeof (struct ucs4_with_ccc));
+ if (filter->sortbuf != filter->sortbuf_preallocated)
+ free (filter->sortbuf);
+ filter->sortbuf = new_sortbuf;
+ }
+ filter->sortbuf[sortbuf_count].code = uc;
+ filter->sortbuf[sortbuf_count].ccc = ccc;
+ sortbuf_count++;
+ }
+
+ filter->sortbuf_count = sortbuf_count;
+ }
+
+ return 0;
+}
+
+/* Bring data buffered in the filter to its destination, the encapsulated
+ stream.
+ Return 0 if successful, or -1 with errno set upon failure.
+ Note! If after calling this function, additional characters are written
+ into the filter, the resulting character sequence in the encapsulated stream
+ will not necessarily be normalized. */
+int
+uninorm_filter_flush (struct uninorm_filter *filter)
+{
+ /* Cache sortbuf and sortbuf_count in local register variables. */
+ struct ucs4_with_ccc * const sortbuf = filter->sortbuf;
+ size_t sortbuf_count = filter->sortbuf_count;
+ size_t j;
+
+ /* Apply the canonical ordering algorithm to the accumulated
+ sequence of characters. */
+ if (sortbuf_count > 1)
+ gl_uninorm_decompose_merge_sort_inplace (sortbuf, sortbuf_count,
+ sortbuf + sortbuf_count);
+
+ if (filter->composer != NULL)
+ {
+ /* Attempt to combine decomposed characters, as specified
+ in the Unicode Standard Annex #15 "Unicode Normalization
+ Forms". We need to check
+ 1. whether the first accumulated character is a
+ "starter" (i.e. has ccc = 0). This is usually the
+ case. But when the string starts with a
+ non-starter, the sortbuf also starts with a
+ non-starter. Btw, this check could also be
+ omitted, because the composition table has only
+ entries (code1, code2) for which code1 is a
+ starter; if the first accumulated character is not
+ a starter, no lookup will succeed.
+ 2. If the sortbuf has more than one character, check
+ for each of these characters that are not "blocked"
+ from the starter (i.e. have a ccc that is higher
+ than the ccc of the previous character) whether it
+ can be combined with the first character.
+ 3. If only one character is left in sortbuf, check
+ whether it can be combined with the next character
+ (also a starter). */
+ if (sortbuf_count > 0 && sortbuf[0].ccc == 0)
+ {
+ for (j = 1; j < sortbuf_count; )
+ {
+ if (sortbuf[j].ccc > sortbuf[j - 1].ccc)
+ {
+ ucs4_t combined =
+ filter->composer (sortbuf[0].code, sortbuf[j].code);
+ if (combined)
+ {
+ size_t k;
+
+ sortbuf[0].code = combined;
+ /* sortbuf[0].ccc = 0, still valid. */
+ for (k = j + 1; k < sortbuf_count; k++)
+ sortbuf[k - 1] = sortbuf[k];
+ sortbuf_count--;
+ continue;
+ }
+ }
+ j++;
+ }
+ }
+ }
+
+ for (j = 0; j < sortbuf_count; j++)
+ {
+ ucs4_t muc = sortbuf[j].code;
+
+ /* Output muc to the encapsulated stream. */
+ int ret = filter->stream_func (filter->stream_data, muc);
+ if (ret < 0)
+ {
+ /* errno is set here. */
+ filter->sortbuf_count = 0;
+ return -1;
+ }
+ }
+
+ /* sortbuf is now empty. */
+ filter->sortbuf_count = 0;
+
+ return 0;
+}
+
+/* Bring data buffered in the filter to its destination, the encapsulated
+ stream, then close and free the filter.
+ Return 0 if successful, or -1 with errno set upon failure. */
+int
+uninorm_filter_free (struct uninorm_filter *filter)
+{
+ int ret = uninorm_filter_flush (filter);
+
+ if (ret < 0)
+ /* errno is set here. */
+ return -1;
+
+ if (filter->sortbuf_count > 0)
+ abort ();
+ if (filter->sortbuf != filter->sortbuf_preallocated)
+ free (filter->sortbuf);
+ free (filter);
+
+ return 0;
+}
diff --git a/lib/unistd.in.h b/lib/unistd.in.h
new file mode 100644
index 00000000..2e42c0b8
--- /dev/null
+++ b/lib/unistd.in.h
@@ -0,0 +1,578 @@
+/* Substitute for and wrapper around <unistd.h>.
+ Copyright (C) 2003-2009 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+#ifndef _GL_UNISTD_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+/* The include_next requires a split double-inclusion guard. */
+#if @HAVE_UNISTD_H@
+# @INCLUDE_NEXT@ @NEXT_UNISTD_H@
+#endif
+
+#ifndef _GL_UNISTD_H
+#define _GL_UNISTD_H
+
+/* mingw doesn't define the SEEK_* or *_FILENO macros in <unistd.h>. */
+#if !(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET)
+# include <stdio.h>
+#endif
+
+/* mingw fails to declare _exit in <unistd.h>. */
+/* mingw, BeOS, Haiku declare environ in <stdlib.h>, not in <unistd.h>. */
+#include <stdlib.h>
+
+#if @GNULIB_WRITE@ && @REPLACE_WRITE@ && @GNULIB_UNISTD_H_SIGPIPE@
+/* Get ssize_t. */
+# include <sys/types.h>
+#endif
+
+#if @GNULIB_GETHOSTNAME@
+/* Get all possible declarations of gethostname(). */
+# if @UNISTD_H_HAVE_WINSOCK2_H@
+# include <winsock2.h>
+# if !defined _GL_SYS_SOCKET_H
+# undef socket
+# define socket socket_used_without_including_sys_socket_h
+# undef connect
+# define connect connect_used_without_including_sys_socket_h
+# undef accept
+# define accept accept_used_without_including_sys_socket_h
+# undef bind
+# define bind bind_used_without_including_sys_socket_h
+# undef getpeername
+# define getpeername getpeername_used_without_including_sys_socket_h
+# undef getsockname
+# define getsockname getsockname_used_without_including_sys_socket_h
+# undef getsockopt
+# define getsockopt getsockopt_used_without_including_sys_socket_h
+# undef listen
+# define listen listen_used_without_including_sys_socket_h
+# undef recv
+# define recv recv_used_without_including_sys_socket_h
+# undef send
+# define send send_used_without_including_sys_socket_h
+# undef recvfrom
+# define recvfrom recvfrom_used_without_including_sys_socket_h
+# undef sendto
+# define sendto sendto_used_without_including_sys_socket_h
+# undef setsockopt
+# define setsockopt setsockopt_used_without_including_sys_socket_h
+# undef shutdown
+# define shutdown shutdown_used_without_including_sys_socket_h
+# endif
+# if !defined _GL_SYS_SELECT_H
+# undef select
+# define select select_used_without_including_sys_select_h
+# endif
+# endif
+#endif
+
+/* The definition of GL_LINK_WARNING is copied here. */
+
+
+/* OS/2 EMX lacks these macros. */
+#ifndef STDIN_FILENO
+# define STDIN_FILENO 0
+#endif
+#ifndef STDOUT_FILENO
+# define STDOUT_FILENO 1
+#endif
+#ifndef STDERR_FILENO
+# define STDERR_FILENO 2
+#endif
+
+/* Declare overridden functions. */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#if @GNULIB_CHOWN@
+# if @REPLACE_CHOWN@
+# ifndef REPLACE_CHOWN
+# define REPLACE_CHOWN 1
+# endif
+# if REPLACE_CHOWN
+/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
+ to GID (if GID is not -1). Follow symbolic links.
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/chown.html>. */
+# define chown rpl_chown
+extern int chown (const char *file, uid_t uid, gid_t gid);
+# endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef chown
+# define chown(f,u,g) \
+ (GL_LINK_WARNING ("chown fails to follow symlinks on some systems and " \
+ "doesn't treat a uid or gid of -1 on some systems - " \
+ "use gnulib module chown for portability"), \
+ chown (f, u, g))
+#endif
+
+
+#if @GNULIB_CLOSE@
+# if @REPLACE_CLOSE@
+/* Automatically included by modules that need a replacement for close. */
+# undef close
+# define close rpl_close
+extern int close (int);
+# endif
+#elif @UNISTD_H_HAVE_WINSOCK2_H@
+# undef close
+# define close close_used_without_requesting_gnulib_module_close
+#elif defined GNULIB_POSIXCHECK
+# undef close
+# define close(f) \
+ (GL_LINK_WARNING ("close does not portably work on sockets - " \
+ "use gnulib module close for portability"), \
+ close (f))
+#endif
+
+
+#if @GNULIB_DUP2@
+# if !@HAVE_DUP2@
+/* Copy the file descriptor OLDFD into file descriptor NEWFD. Do nothing if
+ NEWFD = OLDFD, otherwise close NEWFD first if it is open.
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/dup2.html>. */
+extern int dup2 (int oldfd, int newfd);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef dup2
+# define dup2(o,n) \
+ (GL_LINK_WARNING ("dup2 is unportable - " \
+ "use gnulib module dup2 for portability"), \
+ dup2 (o, n))
+#endif
+
+
+#if @GNULIB_ENVIRON@
+# if !@HAVE_DECL_ENVIRON@
+/* Set of environment variables and values. An array of strings of the form
+ "VARIABLE=VALUE", terminated with a NULL. */
+# if defined __APPLE__ && defined __MACH__
+# include <crt_externs.h>
+# define environ (*_NSGetEnviron ())
+# else
+extern char **environ;
+# endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef environ
+# define environ \
+ (GL_LINK_WARNING ("environ is unportable - " \
+ "use gnulib module environ for portability"), \
+ environ)
+#endif
+
+
+#if @GNULIB_EUIDACCESS@
+# if !@HAVE_EUIDACCESS@
+/* Like access(), except that is uses the effective user id and group id of
+ the current process. */
+extern int euidaccess (const char *filename, int mode);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef euidaccess
+# define euidaccess(f,m) \
+ (GL_LINK_WARNING ("euidaccess is unportable - " \
+ "use gnulib module euidaccess for portability"), \
+ euidaccess (f, m))
+#endif
+
+
+#if @GNULIB_FCHDIR@
+# if @REPLACE_FCHDIR@
+
+/* Change the process' current working directory to the directory on which
+ the given file descriptor is open.
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/fchdir.html>. */
+extern int fchdir (int /*fd*/);
+
+# define dup rpl_dup
+extern int dup (int);
+# define dup2 rpl_dup2
+extern int dup2 (int, int);
+
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef fchdir
+# define fchdir(f) \
+ (GL_LINK_WARNING ("fchdir is unportable - " \
+ "use gnulib module fchdir for portability"), \
+ fchdir (f))
+#endif
+
+
+#if @GNULIB_FSYNC@
+/* Synchronize changes to a file.
+ Return 0 if successful, otherwise -1 and errno set.
+ See POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/fsync.html>. */
+# if !@HAVE_FSYNC@
+extern int fsync (int fd);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef fsync
+# define fsync(fd) \
+ (GL_LINK_WARNING ("fsync is unportable - " \
+ "use gnulib module fsync for portability"), \
+ fsync (fd))
+#endif
+
+
+#if @GNULIB_FTRUNCATE@
+# if !@HAVE_FTRUNCATE@
+/* Change the size of the file to which FD is opened to become equal to LENGTH.
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/ftruncate.html>. */
+extern int ftruncate (int fd, off_t length);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef ftruncate
+# define ftruncate(f,l) \
+ (GL_LINK_WARNING ("ftruncate is unportable - " \
+ "use gnulib module ftruncate for portability"), \
+ ftruncate (f, l))
+#endif
+
+
+#if @GNULIB_GETCWD@
+/* Include the headers that might declare getcwd so that they will not
+ cause confusion if included after this file. */
+# include <stdlib.h>
+# if @REPLACE_GETCWD@
+/* Get the name of the current working directory, and put it in SIZE bytes
+ of BUF.
+ Return BUF if successful, or NULL if the directory couldn't be determined
+ or SIZE was too small.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/getcwd.html>.
+ Additionally, the gnulib module 'getcwd' guarantees the following GNU
+ extension: If BUF is NULL, an array is allocated with 'malloc'; the array
+ is SIZE bytes long, unless SIZE == 0, in which case it is as big as
+ necessary. */
+# define getcwd rpl_getcwd
+extern char * getcwd (char *buf, size_t size);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getcwd
+# define getcwd(b,s) \
+ (GL_LINK_WARNING ("getcwd is unportable - " \
+ "use gnulib module getcwd for portability"), \
+ getcwd (b, s))
+#endif
+
+
+#if @GNULIB_GETDOMAINNAME@
+/* Return the NIS domain name of the machine.
+ WARNING! The NIS domain name is unrelated to the fully qualified host name
+ of the machine. It is also unrelated to email addresses.
+ WARNING! The NIS domain name is usually the empty string or "(none)" when
+ not using NIS.
+
+ Put up to LEN bytes of the NIS domain name into NAME.
+ Null terminate it if the name is shorter than LEN.
+ If the NIS domain name is longer than LEN, set errno = EINVAL and return -1.
+ Return 0 if successful, otherwise set errno and return -1. */
+# if !@HAVE_GETDOMAINNAME@
+extern int getdomainname(char *name, size_t len);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getdomainname
+# define getdomainname(n,l) \
+ (GL_LINK_WARNING ("getdomainname is unportable - " \
+ "use gnulib module getdomainname for portability"), \
+ getdomainname (n, l))
+#endif
+
+
+#if @GNULIB_GETDTABLESIZE@
+# if !@HAVE_GETDTABLESIZE@
+/* Return the maximum number of file descriptors in the current process. */
+extern int getdtablesize (void);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getdtablesize
+# define getdtablesize() \
+ (GL_LINK_WARNING ("getdtablesize is unportable - " \
+ "use gnulib module getdtablesize for portability"), \
+ getdtablesize ())
+#endif
+
+
+#if @GNULIB_GETHOSTNAME@
+/* Return the standard host name of the machine.
+ WARNING! The host name may or may not be fully qualified.
+
+ Put up to LEN bytes of the host name into NAME.
+ Null terminate it if the name is shorter than LEN.
+ If the host name is longer than LEN, set errno = EINVAL and return -1.
+ Return 0 if successful, otherwise set errno and return -1. */
+# if @UNISTD_H_HAVE_WINSOCK2_H@
+# undef gethostname
+# define gethostname rpl_gethostname
+# endif
+# if @UNISTD_H_HAVE_WINSOCK2_H@ || !@HAVE_GETHOSTNAME@
+extern int gethostname(char *name, size_t len);
+# endif
+#elif @UNISTD_H_HAVE_WINSOCK2_H@
+# undef gethostname
+# define gethostname gethostname_used_without_requesting_gnulib_module_gethostname
+#elif defined GNULIB_POSIXCHECK
+# undef gethostname
+# define gethostname(n,l) \
+ (GL_LINK_WARNING ("gethostname is unportable - " \
+ "use gnulib module gethostname for portability"), \
+ gethostname (n, l))
+#endif
+
+
+#if @GNULIB_GETLOGIN_R@
+/* Copies the user's login name to NAME.
+ The array pointed to by NAME has room for SIZE bytes.
+
+ Returns 0 if successful. Upon error, an error number is returned, or -1 in
+ the case that the login name cannot be found but no specific error is
+ provided (this case is hopefully rare but is left open by the POSIX spec).
+
+ See <http://www.opengroup.org/susv3xsh/getlogin.html>.
+ */
+# if !@HAVE_DECL_GETLOGIN_R@
+# include <stddef.h>
+extern int getlogin_r (char *name, size_t size);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getlogin_r
+# define getlogin_r(n,s) \
+ (GL_LINK_WARNING ("getlogin_r is unportable - " \
+ "use gnulib module getlogin_r for portability"), \
+ getlogin_r (n, s))
+#endif
+
+
+#if @GNULIB_GETPAGESIZE@
+# if @REPLACE_GETPAGESIZE@
+# define getpagesize rpl_getpagesize
+extern int getpagesize (void);
+# elif !@HAVE_GETPAGESIZE@
+/* This is for POSIX systems. */
+# if !defined getpagesize && defined _SC_PAGESIZE
+# if ! (defined __VMS && __VMS_VER < 70000000)
+# define getpagesize() sysconf (_SC_PAGESIZE)
+# endif
+# endif
+/* This is for older VMS. */
+# if !defined getpagesize && defined __VMS
+# ifdef __ALPHA
+# define getpagesize() 8192
+# else
+# define getpagesize() 512
+# endif
+# endif
+/* This is for BeOS. */
+# if !defined getpagesize && @HAVE_OS_H@
+# include <OS.h>
+# if defined B_PAGE_SIZE
+# define getpagesize() B_PAGE_SIZE
+# endif
+# endif
+/* This is for AmigaOS4.0. */
+# if !defined getpagesize && defined __amigaos4__
+# define getpagesize() 2048
+# endif
+/* This is for older Unix systems. */
+# if !defined getpagesize && @HAVE_SYS_PARAM_H@
+# include <sys/param.h>
+# ifdef EXEC_PAGESIZE
+# define getpagesize() EXEC_PAGESIZE
+# else
+# ifdef NBPG
+# ifndef CLSIZE
+# define CLSIZE 1
+# endif
+# define getpagesize() (NBPG * CLSIZE)
+# else
+# ifdef NBPC
+# define getpagesize() NBPC
+# endif
+# endif
+# endif
+# endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getpagesize
+# define getpagesize() \
+ (GL_LINK_WARNING ("getpagesize is unportable - " \
+ "use gnulib module getpagesize for portability"), \
+ getpagesize ())
+#endif
+
+
+#if @GNULIB_GETUSERSHELL@
+# if !@HAVE_GETUSERSHELL@
+/* Return the next valid login shell on the system, or NULL when the end of
+ the list has been reached. */
+extern char *getusershell (void);
+/* Rewind to pointer that is advanced at each getusershell() call. */
+extern void setusershell (void);
+/* Free the pointer that is advanced at each getusershell() call and
+ associated resources. */
+extern void endusershell (void);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getusershell
+# define getusershell() \
+ (GL_LINK_WARNING ("getusershell is unportable - " \
+ "use gnulib module getusershell for portability"), \
+ getusershell ())
+# undef setusershell
+# define setusershell() \
+ (GL_LINK_WARNING ("setusershell is unportable - " \
+ "use gnulib module getusershell for portability"), \
+ setusershell ())
+# undef endusershell
+# define endusershell() \
+ (GL_LINK_WARNING ("endusershell is unportable - " \
+ "use gnulib module getusershell for portability"), \
+ endusershell ())
+#endif
+
+
+#if @GNULIB_LCHOWN@
+# if @REPLACE_LCHOWN@
+/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
+ to GID (if GID is not -1). Do not follow symbolic links.
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/lchown.html>. */
+# define lchown rpl_lchown
+extern int lchown (char const *file, uid_t owner, gid_t group);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef lchown
+# define lchown(f,u,g) \
+ (GL_LINK_WARNING ("lchown is unportable to pre-POSIX.1-2001 " \
+ "systems - use gnulib module lchown for portability"), \
+ lchown (f, u, g))
+#endif
+
+
+#if @GNULIB_LINK@
+/* Create a new hard link for an existing file.
+ Return 0 if successful, otherwise -1 and errno set.
+ See POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/link.html>. */
+# if !@HAVE_LINK@
+extern int link (const char *path1, const char *path2);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef link
+# define link(path1,path2) \
+ (GL_LINK_WARNING ("link is unportable - " \
+ "use gnulib module link for portability"), \
+ link (path1, path2))
+#endif
+
+
+#if @GNULIB_LSEEK@
+# if @REPLACE_LSEEK@
+/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END.
+ Return the new offset if successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/lseek.html>. */
+# define lseek rpl_lseek
+ extern off_t lseek (int fd, off_t offset, int whence);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef lseek
+# define lseek(f,o,w) \
+ (GL_LINK_WARNING ("lseek does not fail with ESPIPE on pipes on some " \
+ "systems - use gnulib module lseek for portability"), \
+ lseek (f, o, w))
+#endif
+
+
+#if @GNULIB_READLINK@
+/* Read the contents of the symbolic link FILE and place the first BUFSIZE
+ bytes of it into BUF. Return the number of bytes placed into BUF if
+ successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/readlink.html>. */
+# if !@HAVE_READLINK@
+# include <stddef.h>
+extern int readlink (const char *file, char *buf, size_t bufsize);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef readlink
+# define readlink(f,b,s) \
+ (GL_LINK_WARNING ("readlink is unportable - " \
+ "use gnulib module readlink for portability"), \
+ readlink (f, b, s))
+#endif
+
+
+#if @GNULIB_SLEEP@
+/* Pause the execution of the current thread for N seconds.
+ Returns the number of seconds left to sleep.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/sleep.html>. */
+# if !@HAVE_SLEEP@
+extern unsigned int sleep (unsigned int n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef sleep
+# define sleep(n) \
+ (GL_LINK_WARNING ("sleep is unportable - " \
+ "use gnulib module sleep for portability"), \
+ sleep (n))
+#endif
+
+
+#if @GNULIB_WRITE@ && @REPLACE_WRITE@ && @GNULIB_UNISTD_H_SIGPIPE@
+/* Write up to COUNT bytes starting at BUF to file descriptor FD.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/write.html>. */
+# undef write
+# define write rpl_write
+extern ssize_t write (int fd, const void *buf, size_t count);
+#endif
+
+
+#ifdef FCHDIR_REPLACEMENT
+/* gnulib internal function. */
+extern void _gl_unregister_fd (int fd);
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _GL_UNISTD_H */
+#endif /* _GL_UNISTD_H */
diff --git a/lib/unistdio.h b/lib/unistdio.h
new file mode 100644
index 00000000..d9eca02f
--- /dev/null
+++ b/lib/unistdio.h
@@ -0,0 +1,256 @@
+/* Elementary Unicode string functions.
+ Copyright (C) 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _UNISTDIO_H
+#define _UNISTDIO_H
+
+#include "unitypes.h"
+
+/* Get size_t. */
+#include <stddef.h>
+
+/* Get FILE. */
+#include <stdio.h>
+
+/* Get va_list. */
+#include <stdarg.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* These work like the printf function family.
+ In the format string:
+ The format directive 'U' takes an UTF-8 string (const uint8_t *).
+ The format directive 'lU' takes an UTF-16 string (const uint16_t *).
+ The format directive 'llU' takes an UTF-32 string (const uint32_t *).
+
+ The prefix (ulc_, u8_, u16_, u16_) indicates the type of the resulting
+ string. The prefix 'ulc' stands for "locale encoded".
+
+ An infix 'v' indicates that a va_list is passed instead of multiple
+ arguments.
+
+ The functions *sprintf have a 'buf' argument that is assumed to be large
+ enough. (DANGEROUS! Overflowing the buffer will crash the program.)
+ The functions *snprintf have a 'buf' argument that is assumed to be 'size'
+ units large. (DANGEROUS! The resulting string might be truncated in the
+ middle of a multibyte character.)
+ The functions *asprintf have a 'resultp' argument. The result will be
+ freshly allocated and stored in *resultp.
+ The functions *asnprintf have a (resultbuf, lengthp) argument pair. If
+ resultbuf is not NULL and the result fits into *lengthp units, it is put
+ in resultbuf, and resultbuf is returned. Otherwise, a freshly allocated
+ string is returned. In both cases, *lengthp is set to the length (number
+ of units) of the returned string. In case of error, NULL is returned and
+ errno is set.
+ */
+
+/* ASCII format string, result in locale dependent encoded 'char *'. */
+extern int
+ ulc_sprintf (char *buf,
+ const char *format, ...);
+extern int
+ ulc_snprintf (char *buf, size_t size,
+ const char *format, ...);
+extern int
+ ulc_asprintf (char **resultp,
+ const char *format, ...);
+extern char *
+ ulc_asnprintf (char *resultbuf, size_t *lengthp,
+ const char *format, ...);
+extern int
+ ulc_vsprintf (char *buf,
+ const char *format, va_list ap);
+extern int
+ ulc_vsnprintf (char *buf, size_t size,
+ const char *format, va_list ap);
+extern int
+ ulc_vasprintf (char **resultp,
+ const char *format, va_list ap);
+extern char *
+ ulc_vasnprintf (char *resultbuf, size_t *lengthp,
+ const char *format, va_list ap);
+
+/* ASCII format string, result in UTF-8 format. */
+extern int
+ u8_sprintf (uint8_t *buf,
+ const char *format, ...);
+extern int
+ u8_snprintf (uint8_t *buf, size_t size,
+ const char *format, ...);
+extern int
+ u8_asprintf (uint8_t **resultp,
+ const char *format, ...);
+extern uint8_t *
+ u8_asnprintf (uint8_t *resultbuf, size_t *lengthp,
+ const char *format, ...);
+extern int
+ u8_vsprintf (uint8_t *buf,
+ const char *format, va_list ap);
+extern int
+ u8_vsnprintf (uint8_t *buf, size_t size,
+ const char *format, va_list ap);
+extern int
+ u8_vasprintf (uint8_t **resultp,
+ const char *format, va_list ap);
+extern uint8_t *
+ u8_vasnprintf (uint8_t *resultbuf, size_t *lengthp,
+ const char *format, va_list ap);
+
+/* UTF-8 format string, result in UTF-8 format. */
+extern int
+ u8_u8_sprintf (uint8_t *buf,
+ const uint8_t *format, ...);
+extern int
+ u8_u8_snprintf (uint8_t *buf, size_t size,
+ const uint8_t *format, ...);
+extern int
+ u8_u8_asprintf (uint8_t **resultp,
+ const uint8_t *format, ...);
+extern uint8_t *
+ u8_u8_asnprintf (uint8_t *resultbuf, size_t *lengthp,
+ const uint8_t *format, ...);
+extern int
+ u8_u8_vsprintf (uint8_t *buf,
+ const uint8_t *format, va_list ap);
+extern int
+ u8_u8_vsnprintf (uint8_t *buf, size_t size,
+ const uint8_t *format, va_list ap);
+extern int
+ u8_u8_vasprintf (uint8_t **resultp,
+ const uint8_t *format, va_list ap);
+extern uint8_t *
+ u8_u8_vasnprintf (uint8_t *resultbuf, size_t *lengthp,
+ const uint8_t *format, va_list ap);
+
+/* ASCII format string, result in UTF-16 format. */
+extern int
+ u16_sprintf (uint16_t *buf,
+ const char *format, ...);
+extern int
+ u16_snprintf (uint16_t *buf, size_t size,
+ const char *format, ...);
+extern int
+ u16_asprintf (uint16_t **resultp,
+ const char *format, ...);
+extern uint16_t *
+ u16_asnprintf (uint16_t *resultbuf, size_t *lengthp,
+ const char *format, ...);
+extern int
+ u16_vsprintf (uint16_t *buf,
+ const char *format, va_list ap);
+extern int
+ u16_vsnprintf (uint16_t *buf, size_t size,
+ const char *format, va_list ap);
+extern int
+ u16_vasprintf (uint16_t **resultp,
+ const char *format, va_list ap);
+extern uint16_t *
+ u16_vasnprintf (uint16_t *resultbuf, size_t *lengthp,
+ const char *format, va_list ap);
+
+/* UTF-16 format string, result in UTF-16 format. */
+extern int
+ u16_u16_sprintf (uint16_t *buf,
+ const uint16_t *format, ...);
+extern int
+ u16_u16_snprintf (uint16_t *buf, size_t size,
+ const uint16_t *format, ...);
+extern int
+ u16_u16_asprintf (uint16_t **resultp,
+ const uint16_t *format, ...);
+extern uint16_t *
+ u16_u16_asnprintf (uint16_t *resultbuf, size_t *lengthp,
+ const uint16_t *format, ...);
+extern int
+ u16_u16_vsprintf (uint16_t *buf,
+ const uint16_t *format, va_list ap);
+extern int
+ u16_u16_vsnprintf (uint16_t *buf, size_t size,
+ const uint16_t *format, va_list ap);
+extern int
+ u16_u16_vasprintf (uint16_t **resultp,
+ const uint16_t *format, va_list ap);
+extern uint16_t *
+ u16_u16_vasnprintf (uint16_t *resultbuf, size_t *lengthp,
+ const uint16_t *format, va_list ap);
+
+/* ASCII format string, result in UTF-32 format. */
+extern int
+ u32_sprintf (uint32_t *buf,
+ const char *format, ...);
+extern int
+ u32_snprintf (uint32_t *buf, size_t size,
+ const char *format, ...);
+extern int
+ u32_asprintf (uint32_t **resultp,
+ const char *format, ...);
+extern uint32_t *
+ u32_asnprintf (uint32_t *resultbuf, size_t *lengthp,
+ const char *format, ...);
+extern int
+ u32_vsprintf (uint32_t *buf,
+ const char *format, va_list ap);
+extern int
+ u32_vsnprintf (uint32_t *buf, size_t size,
+ const char *format, va_list ap);
+extern int
+ u32_vasprintf (uint32_t **resultp,
+ const char *format, va_list ap);
+extern uint32_t *
+ u32_vasnprintf (uint32_t *resultbuf, size_t *lengthp,
+ const char *format, va_list ap);
+
+/* UTF-32 format string, result in UTF-32 format. */
+extern int
+ u32_u32_sprintf (uint32_t *buf,
+ const uint32_t *format, ...);
+extern int
+ u32_u32_snprintf (uint32_t *buf, size_t size,
+ const uint32_t *format, ...);
+extern int
+ u32_u32_asprintf (uint32_t **resultp,
+ const uint32_t *format, ...);
+extern uint32_t *
+ u32_u32_asnprintf (uint32_t *resultbuf, size_t *lengthp,
+ const uint32_t *format, ...);
+extern int
+ u32_u32_vsprintf (uint32_t *buf,
+ const uint32_t *format, va_list ap);
+extern int
+ u32_u32_vsnprintf (uint32_t *buf, size_t size,
+ const uint32_t *format, va_list ap);
+extern int
+ u32_u32_vasprintf (uint32_t **resultp,
+ const uint32_t *format, va_list ap);
+extern uint32_t *
+ u32_u32_vasnprintf (uint32_t *resultbuf, size_t *lengthp,
+ const uint32_t *format, va_list ap);
+
+/* ASCII format string, output to FILE in locale dependent encoding. */
+extern int
+ ulc_fprintf (FILE *stream,
+ const char *format, ...);
+extern int
+ ulc_vfprintf (FILE *stream,
+ const char *format, va_list ap);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UNISTDIO_H */
diff --git a/lib/unistdio/u-asnprintf.h b/lib/unistdio/u-asnprintf.h
new file mode 100644
index 00000000..8fd08d7f
--- /dev/null
+++ b/lib/unistdio/u-asnprintf.h
@@ -0,0 +1,27 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+DCHAR_T *
+ASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, const FCHAR_T *format, ...)
+{
+ va_list args;
+ DCHAR_T *result;
+
+ va_start (args, format);
+ result = VASNPRINTF (resultbuf, lengthp, format, args);
+ va_end (args);
+ return result;
+}
diff --git a/lib/unistdio/u-asprintf.h b/lib/unistdio/u-asprintf.h
new file mode 100644
index 00000000..ba82faba
--- /dev/null
+++ b/lib/unistdio/u-asprintf.h
@@ -0,0 +1,27 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+int
+ASPRINTF (DCHAR_T **resultp, const FCHAR_T *format, ...)
+{
+ va_list args;
+ int result;
+
+ va_start (args, format);
+ result = VASPRINTF (resultp, format, args);
+ va_end (args);
+ return result;
+}
diff --git a/lib/unistdio/u-printf-args.c b/lib/unistdio/u-printf-args.c
new file mode 100644
index 00000000..22fbc088
--- /dev/null
+++ b/lib/unistdio/u-printf-args.c
@@ -0,0 +1,22 @@
+/* Decomposed printf argument list.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio/u-printf-args.h"
+
+#include "printf-args.c"
diff --git a/lib/unistdio/u-printf-args.h b/lib/unistdio/u-printf-args.h
new file mode 100644
index 00000000..7b2255a2
--- /dev/null
+++ b/lib/unistdio/u-printf-args.h
@@ -0,0 +1,27 @@
+/* Decomposed printf argument list.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _U_PRINTF_ARGS_H
+#define _U_PRINTF_ARGS_H
+
+#include "unitypes.h"
+
+/* Parametrization of printf-args.h. */
+#define ENABLE_UNISTDIO 1
+#define PRINTF_FETCHARGS u_printf_fetchargs
+#include "printf-args.h"
+
+#endif /* _U_PRINTF_ARGS_H */
diff --git a/lib/unistdio/u-printf-parse.h b/lib/unistdio/u-printf-parse.h
new file mode 100644
index 00000000..11a953f9
--- /dev/null
+++ b/lib/unistdio/u-printf-parse.h
@@ -0,0 +1,27 @@
+/* Parse printf format string.
+ Copyright (C) 1999, 2002, 2005, 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _U_PRINTF_PARSE_H
+#define _U_PRINTF_PARSE_H
+
+#include "unistdio/u-printf-args.h"
+
+/* Parametrization of printf-parse.h. */
+#undef ENABLE_UNISTDIO
+#define ENABLE_UNISTDIO 1
+#include "printf-parse.h"
+
+#endif /* _U_PRINTF_PARSE_H */
diff --git a/lib/unistdio/u-snprintf.h b/lib/unistdio/u-snprintf.h
new file mode 100644
index 00000000..1665bc23
--- /dev/null
+++ b/lib/unistdio/u-snprintf.h
@@ -0,0 +1,27 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+int
+SNPRINTF (DCHAR_T *buf, size_t size, const FCHAR_T *format, ...)
+{
+ va_list args;
+ int result;
+
+ va_start (args, format);
+ result = VSNPRINTF (buf, size, format, args);
+ va_end (args);
+ return result;
+}
diff --git a/lib/unistdio/u-sprintf.h b/lib/unistdio/u-sprintf.h
new file mode 100644
index 00000000..8a1b5544
--- /dev/null
+++ b/lib/unistdio/u-sprintf.h
@@ -0,0 +1,27 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+int
+SPRINTF (DCHAR_T *buf, const FCHAR_T *format, ...)
+{
+ va_list args;
+ int result;
+
+ va_start (args, format);
+ result = VSPRINTF (buf, format, args);
+ va_end (args);
+ return result;
+}
diff --git a/lib/unistdio/u-vasprintf.h b/lib/unistdio/u-vasprintf.h
new file mode 100644
index 00000000..965bfbf5
--- /dev/null
+++ b/lib/unistdio/u-vasprintf.h
@@ -0,0 +1,35 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2008 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+int
+VASPRINTF (DCHAR_T **resultp, const FCHAR_T *format, va_list args)
+{
+ size_t length;
+ DCHAR_T *result = VASNPRINTF (NULL, &length, format, args);
+ if (result == NULL)
+ return -1;
+
+ if (length > INT_MAX)
+ {
+ free (result);
+ errno = EOVERFLOW;
+ return -1;
+ }
+
+ *resultp = result;
+ /* Return the number of resulting units, excluding the trailing NUL. */
+ return length;
+}
diff --git a/lib/unistdio/u-vsnprintf.h b/lib/unistdio/u-vsnprintf.h
new file mode 100644
index 00000000..481a22f0
--- /dev/null
+++ b/lib/unistdio/u-vsnprintf.h
@@ -0,0 +1,52 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2008 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+int
+VSNPRINTF (DCHAR_T *buf, size_t size, const FCHAR_T *format, va_list args)
+{
+ size_t length;
+ DCHAR_T *result;
+
+ if (size == 0)
+ buf = NULL;
+ else
+ length = size;
+ result = VASNPRINTF (buf, &length, format, args);
+ if (result == NULL)
+ return -1;
+
+ if (result != buf)
+ {
+ if (size != 0)
+ {
+ /* The result did not fit into the buffer. Copy the initial segment
+ into the buffer, truncating it if necessary. */
+ size_t n = (length < size ? length : size - 1);
+ DCHAR_CPY (buf, result, n);
+ buf[n] = '\0';
+ }
+ free (result);
+ }
+
+ if (length > INT_MAX)
+ {
+ errno = EOVERFLOW;
+ return -1;
+ }
+
+ /* Return the number of resulting units, excluding the trailing NUL. */
+ return length;
+}
diff --git a/lib/unistdio/u-vsprintf.h b/lib/unistdio/u-vsprintf.h
new file mode 100644
index 00000000..36ebd9fa
--- /dev/null
+++ b/lib/unistdio/u-vsprintf.h
@@ -0,0 +1,58 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2008 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
+int
+VSPRINTF (DCHAR_T *buf, const FCHAR_T *format, va_list args)
+{
+ /* Pass an infinite length. But note that *vasnprintf may fail if the buffer
+ argument is larger than INT_MAX (if that fits into a 'size_t' at all).
+ Also note that glibc's iconv fails with E2BIG when we pass a length that
+ is so large that buf + length wraps around, i.e.
+ (uintptr_t) (buf + length) < (uintptr_t) buf. */
+ size_t length;
+ DCHAR_T *result;
+
+ /* Set length = min (SIZE_MAX, INT_MAX, - (uintptr_t) buf - 1). */
+ length = (SIZE_MAX < INT_MAX ? SIZE_MAX : INT_MAX);
+ if (length > (~ (uintptr_t) buf) / sizeof (DCHAR_T))
+ length = (~ (uintptr_t) buf) / sizeof (DCHAR_T);
+
+ result = VASNPRINTF (buf, &length, format, args);
+ if (result == NULL)
+ return -1;
+
+ /* The infinite buffer size guarantees that the result is not malloc()ed. */
+ if (result != buf)
+ {
+ /* length is near SIZE_MAX. */
+ free (result);
+ errno = EOVERFLOW;
+ return -1;
+ }
+
+ if (length > INT_MAX)
+ {
+ errno = EOVERFLOW;
+ return -1;
+ }
+
+ /* Return the number of resulting units, excluding the trailing NUL. */
+ return length;
+}
diff --git a/lib/unistdio/u16-asnprintf.c b/lib/unistdio/u16-asnprintf.c
new file mode 100644
index 00000000..bbe4bacb
--- /dev/null
+++ b/lib/unistdio/u16-asnprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define ASNPRINTF u16_asnprintf
+#define VASNPRINTF u16_vasnprintf
+#define FCHAR_T char
+#define DCHAR_T uint16_t
+#include "u-asnprintf.h"
diff --git a/lib/unistdio/u16-asprintf.c b/lib/unistdio/u16-asprintf.c
new file mode 100644
index 00000000..79f3969c
--- /dev/null
+++ b/lib/unistdio/u16-asprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define ASPRINTF u16_asprintf
+#define VASPRINTF u16_vasprintf
+#define FCHAR_T char
+#define DCHAR_T uint16_t
+#include "u-asprintf.h"
diff --git a/lib/unistdio/u16-printf-parse.c b/lib/unistdio/u16-printf-parse.c
new file mode 100644
index 00000000..3a8acd32
--- /dev/null
+++ b/lib/unistdio/u16-printf-parse.c
@@ -0,0 +1,26 @@
+/* Formatted output to strings.
+ Copyright (C) 1999-2000, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio/u-printf-parse.h"
+
+#define PRINTF_PARSE u16_printf_parse
+#define CHAR_T uint16_t
+#define DIRECTIVE u16_directive
+#define DIRECTIVES u16_directives
+#include "printf-parse.c"
diff --git a/lib/unistdio/u16-snprintf.c b/lib/unistdio/u16-snprintf.c
new file mode 100644
index 00000000..afed8a7e
--- /dev/null
+++ b/lib/unistdio/u16-snprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define SNPRINTF u16_snprintf
+#define VSNPRINTF u16_vsnprintf
+#define FCHAR_T char
+#define DCHAR_T uint16_t
+#include "u-snprintf.h"
diff --git a/lib/unistdio/u16-sprintf.c b/lib/unistdio/u16-sprintf.c
new file mode 100644
index 00000000..48603652
--- /dev/null
+++ b/lib/unistdio/u16-sprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define SPRINTF u16_sprintf
+#define VSPRINTF u16_vsprintf
+#define FCHAR_T char
+#define DCHAR_T uint16_t
+#include "u-sprintf.h"
diff --git a/lib/unistdio/u16-u16-asnprintf.c b/lib/unistdio/u16-u16-asnprintf.c
new file mode 100644
index 00000000..64c257c2
--- /dev/null
+++ b/lib/unistdio/u16-u16-asnprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define ASNPRINTF u16_u16_asnprintf
+#define VASNPRINTF u16_u16_vasnprintf
+#define FCHAR_T uint16_t
+#define DCHAR_T uint16_t
+#include "u-asnprintf.h"
diff --git a/lib/unistdio/u16-u16-asprintf.c b/lib/unistdio/u16-u16-asprintf.c
new file mode 100644
index 00000000..38469c6e
--- /dev/null
+++ b/lib/unistdio/u16-u16-asprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define ASPRINTF u16_u16_asprintf
+#define VASPRINTF u16_u16_vasprintf
+#define FCHAR_T uint16_t
+#define DCHAR_T uint16_t
+#include "u-asprintf.h"
diff --git a/lib/unistdio/u16-u16-snprintf.c b/lib/unistdio/u16-u16-snprintf.c
new file mode 100644
index 00000000..7229add1
--- /dev/null
+++ b/lib/unistdio/u16-u16-snprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define SNPRINTF u16_u16_snprintf
+#define VSNPRINTF u16_u16_vsnprintf
+#define FCHAR_T uint16_t
+#define DCHAR_T uint16_t
+#include "u-snprintf.h"
diff --git a/lib/unistdio/u16-u16-sprintf.c b/lib/unistdio/u16-u16-sprintf.c
new file mode 100644
index 00000000..1c517c36
--- /dev/null
+++ b/lib/unistdio/u16-u16-sprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define SPRINTF u16_u16_sprintf
+#define VSPRINTF u16_u16_vsprintf
+#define FCHAR_T uint16_t
+#define DCHAR_T uint16_t
+#include "u-sprintf.h"
diff --git a/lib/unistdio/u16-u16-vasnprintf.c b/lib/unistdio/u16-u16-vasnprintf.c
new file mode 100644
index 00000000..e33851e2
--- /dev/null
+++ b/lib/unistdio/u16-u16-vasnprintf.c
@@ -0,0 +1,49 @@
+/* Formatted output to UTF-16 strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Tell glibc's <stdio.h> to provide a prototype for snprintf().
+ This must come before <config.h> because <config.h> may include
+ <features.h>, and once <features.h> has been included, it's too late. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#include <config.h>
+#include <alloca.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include "uniconv.h"
+#include "unistr.h"
+#include "unistdio/u-printf-parse.h"
+
+#define VASNPRINTF u16_u16_vasnprintf
+#define FCHAR_T uint16_t
+#define DIRECTIVE u16_directive
+#define DIRECTIVES u16_directives
+#define PRINTF_PARSE u16_printf_parse
+#define DCHAR_T uint16_t
+#define DCHAR_T_IS_UINT16_T 1
+#define DCHAR_CPY u16_cpy
+#define DCHAR_SET u16_set
+#define DCHAR_MBSNLEN u16_mbsnlen
+#define DCHAR_IS_UINT16_T 1
+#define U8_TO_DCHAR u8_to_u16
+#define U32_TO_DCHAR u32_to_u16
+#define DCHAR_CONV_FROM_ENCODING u16_conv_from_encoding
+#define TCHAR_T char
+#include "vasnprintf.c"
diff --git a/lib/unistdio/u16-u16-vasprintf.c b/lib/unistdio/u16-u16-vasprintf.c
new file mode 100644
index 00000000..3d8fc508
--- /dev/null
+++ b/lib/unistdio/u16-u16-vasprintf.c
@@ -0,0 +1,30 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdlib.h>
+
+#define VASPRINTF u16_u16_vasprintf
+#define VASNPRINTF u16_u16_vasnprintf
+#define FCHAR_T uint16_t
+#define DCHAR_T uint16_t
+#include "u-vasprintf.h"
diff --git a/lib/unistdio/u16-u16-vsnprintf.c b/lib/unistdio/u16-u16-vsnprintf.c
new file mode 100644
index 00000000..6bbf8251
--- /dev/null
+++ b/lib/unistdio/u16-u16-vsnprintf.c
@@ -0,0 +1,33 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include "unistr.h"
+
+#define VSNPRINTF u16_u16_vsnprintf
+#define VASNPRINTF u16_u16_vasnprintf
+#define FCHAR_T uint16_t
+#define DCHAR_T uint16_t
+#define DCHAR_CPY u16_cpy
+#include "u-vsnprintf.h"
diff --git a/lib/unistdio/u16-u16-vsprintf.c b/lib/unistdio/u16-u16-vsprintf.c
new file mode 100644
index 00000000..1a7e93c2
--- /dev/null
+++ b/lib/unistdio/u16-u16-vsprintf.c
@@ -0,0 +1,32 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+#define VSPRINTF u16_u16_vsprintf
+#define VASNPRINTF u16_u16_vasnprintf
+#define FCHAR_T uint16_t
+#define DCHAR_T uint16_t
+#include "u-vsprintf.h"
diff --git a/lib/unistdio/u16-vasnprintf.c b/lib/unistdio/u16-vasnprintf.c
new file mode 100644
index 00000000..3ce19d42
--- /dev/null
+++ b/lib/unistdio/u16-vasnprintf.c
@@ -0,0 +1,50 @@
+/* Formatted output to UTF-16 strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Tell glibc's <stdio.h> to provide a prototype for snprintf().
+ This must come before <config.h> because <config.h> may include
+ <features.h>, and once <features.h> has been included, it's too late. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#include <config.h>
+#include <alloca.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include "uniconv.h"
+#include "unistr.h"
+#include "unistdio/u-printf-parse.h"
+
+#define VASNPRINTF u16_vasnprintf
+#define FCHAR_T char
+#define DIRECTIVE char_directive
+#define DIRECTIVES char_directives
+#define ASCII_ONLY 1
+#define PRINTF_PARSE ulc_printf_parse
+#define DCHAR_T uint16_t
+#define DCHAR_T_IS_UINT16_T 1
+#define DCHAR_CPY u16_cpy
+#define DCHAR_SET u16_set
+#define DCHAR_MBSNLEN u16_mbsnlen
+#define DCHAR_IS_UINT16_T 1
+#define U8_TO_DCHAR u8_to_u16
+#define U32_TO_DCHAR u32_to_u16
+#define DCHAR_CONV_FROM_ENCODING u16_conv_from_encoding
+#define TCHAR_T char
+#include "vasnprintf.c"
diff --git a/lib/unistdio/u16-vasprintf.c b/lib/unistdio/u16-vasprintf.c
new file mode 100644
index 00000000..b63dd183
--- /dev/null
+++ b/lib/unistdio/u16-vasprintf.c
@@ -0,0 +1,30 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdlib.h>
+
+#define VASPRINTF u16_vasprintf
+#define VASNPRINTF u16_vasnprintf
+#define FCHAR_T char
+#define DCHAR_T uint16_t
+#include "u-vasprintf.h"
diff --git a/lib/unistdio/u16-vsnprintf.c b/lib/unistdio/u16-vsnprintf.c
new file mode 100644
index 00000000..b06ca094
--- /dev/null
+++ b/lib/unistdio/u16-vsnprintf.c
@@ -0,0 +1,33 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include "unistr.h"
+
+#define VSNPRINTF u16_vsnprintf
+#define VASNPRINTF u16_vasnprintf
+#define FCHAR_T char
+#define DCHAR_T uint16_t
+#define DCHAR_CPY u16_cpy
+#include "u-vsnprintf.h"
diff --git a/lib/unistdio/u16-vsprintf.c b/lib/unistdio/u16-vsprintf.c
new file mode 100644
index 00000000..4811bc15
--- /dev/null
+++ b/lib/unistdio/u16-vsprintf.c
@@ -0,0 +1,32 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+#define VSPRINTF u16_vsprintf
+#define VASNPRINTF u16_vasnprintf
+#define FCHAR_T char
+#define DCHAR_T uint16_t
+#include "u-vsprintf.h"
diff --git a/lib/unistdio/u32-asnprintf.c b/lib/unistdio/u32-asnprintf.c
new file mode 100644
index 00000000..dad1ae49
--- /dev/null
+++ b/lib/unistdio/u32-asnprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define ASNPRINTF u32_asnprintf
+#define VASNPRINTF u32_vasnprintf
+#define FCHAR_T char
+#define DCHAR_T uint32_t
+#include "u-asnprintf.h"
diff --git a/lib/unistdio/u32-asprintf.c b/lib/unistdio/u32-asprintf.c
new file mode 100644
index 00000000..11e23f01
--- /dev/null
+++ b/lib/unistdio/u32-asprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define ASPRINTF u32_asprintf
+#define VASPRINTF u32_vasprintf
+#define FCHAR_T char
+#define DCHAR_T uint32_t
+#include "u-asprintf.h"
diff --git a/lib/unistdio/u32-printf-parse.c b/lib/unistdio/u32-printf-parse.c
new file mode 100644
index 00000000..a5772566
--- /dev/null
+++ b/lib/unistdio/u32-printf-parse.c
@@ -0,0 +1,26 @@
+/* Formatted output to strings.
+ Copyright (C) 1999-2000, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio/u-printf-parse.h"
+
+#define PRINTF_PARSE u32_printf_parse
+#define CHAR_T uint32_t
+#define DIRECTIVE u32_directive
+#define DIRECTIVES u32_directives
+#include "printf-parse.c"
diff --git a/lib/unistdio/u32-snprintf.c b/lib/unistdio/u32-snprintf.c
new file mode 100644
index 00000000..7d670171
--- /dev/null
+++ b/lib/unistdio/u32-snprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define SNPRINTF u32_snprintf
+#define VSNPRINTF u32_vsnprintf
+#define FCHAR_T char
+#define DCHAR_T uint32_t
+#include "u-snprintf.h"
diff --git a/lib/unistdio/u32-sprintf.c b/lib/unistdio/u32-sprintf.c
new file mode 100644
index 00000000..6f930d09
--- /dev/null
+++ b/lib/unistdio/u32-sprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define SPRINTF u32_sprintf
+#define VSPRINTF u32_vsprintf
+#define FCHAR_T char
+#define DCHAR_T uint32_t
+#include "u-sprintf.h"
diff --git a/lib/unistdio/u32-u32-asnprintf.c b/lib/unistdio/u32-u32-asnprintf.c
new file mode 100644
index 00000000..b3a02745
--- /dev/null
+++ b/lib/unistdio/u32-u32-asnprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define ASNPRINTF u32_u32_asnprintf
+#define VASNPRINTF u32_u32_vasnprintf
+#define FCHAR_T uint32_t
+#define DCHAR_T uint32_t
+#include "u-asnprintf.h"
diff --git a/lib/unistdio/u32-u32-asprintf.c b/lib/unistdio/u32-u32-asprintf.c
new file mode 100644
index 00000000..91a96fc4
--- /dev/null
+++ b/lib/unistdio/u32-u32-asprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define ASPRINTF u32_u32_asprintf
+#define VASPRINTF u32_u32_vasprintf
+#define FCHAR_T uint32_t
+#define DCHAR_T uint32_t
+#include "u-asprintf.h"
diff --git a/lib/unistdio/u32-u32-snprintf.c b/lib/unistdio/u32-u32-snprintf.c
new file mode 100644
index 00000000..cf88529c
--- /dev/null
+++ b/lib/unistdio/u32-u32-snprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define SNPRINTF u32_u32_snprintf
+#define VSNPRINTF u32_u32_vsnprintf
+#define FCHAR_T uint32_t
+#define DCHAR_T uint32_t
+#include "u-snprintf.h"
diff --git a/lib/unistdio/u32-u32-sprintf.c b/lib/unistdio/u32-u32-sprintf.c
new file mode 100644
index 00000000..ccf6d028
--- /dev/null
+++ b/lib/unistdio/u32-u32-sprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define SPRINTF u32_u32_sprintf
+#define VSPRINTF u32_u32_vsprintf
+#define FCHAR_T uint32_t
+#define DCHAR_T uint32_t
+#include "u-sprintf.h"
diff --git a/lib/unistdio/u32-u32-vasnprintf.c b/lib/unistdio/u32-u32-vasnprintf.c
new file mode 100644
index 00000000..b272af33
--- /dev/null
+++ b/lib/unistdio/u32-u32-vasnprintf.c
@@ -0,0 +1,49 @@
+/* Formatted output to UTF-32 strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Tell glibc's <stdio.h> to provide a prototype for snprintf().
+ This must come before <config.h> because <config.h> may include
+ <features.h>, and once <features.h> has been included, it's too late. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#include <config.h>
+#include <alloca.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include "uniconv.h"
+#include "unistr.h"
+#include "unistdio/u-printf-parse.h"
+
+#define VASNPRINTF u32_u32_vasnprintf
+#define FCHAR_T uint32_t
+#define DIRECTIVE u32_directive
+#define DIRECTIVES u32_directives
+#define PRINTF_PARSE u32_printf_parse
+#define DCHAR_T uint32_t
+#define DCHAR_T_IS_UINT32_T 1
+#define DCHAR_CPY u32_cpy
+#define DCHAR_SET u32_set
+#define DCHAR_MBSNLEN u32_mbsnlen
+#define DCHAR_IS_UINT32_T 1
+#define U8_TO_DCHAR u8_to_u32
+#define U16_TO_DCHAR u16_to_u32
+#define DCHAR_CONV_FROM_ENCODING u32_conv_from_encoding
+#define TCHAR_T char
+#include "vasnprintf.c"
diff --git a/lib/unistdio/u32-u32-vasprintf.c b/lib/unistdio/u32-u32-vasprintf.c
new file mode 100644
index 00000000..bacc7c1b
--- /dev/null
+++ b/lib/unistdio/u32-u32-vasprintf.c
@@ -0,0 +1,30 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdlib.h>
+
+#define VASPRINTF u32_u32_vasprintf
+#define VASNPRINTF u32_u32_vasnprintf
+#define FCHAR_T uint32_t
+#define DCHAR_T uint32_t
+#include "u-vasprintf.h"
diff --git a/lib/unistdio/u32-u32-vsnprintf.c b/lib/unistdio/u32-u32-vsnprintf.c
new file mode 100644
index 00000000..7f436236
--- /dev/null
+++ b/lib/unistdio/u32-u32-vsnprintf.c
@@ -0,0 +1,33 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include "unistr.h"
+
+#define VSNPRINTF u32_u32_vsnprintf
+#define VASNPRINTF u32_u32_vasnprintf
+#define FCHAR_T uint32_t
+#define DCHAR_T uint32_t
+#define DCHAR_CPY u32_cpy
+#include "u-vsnprintf.h"
diff --git a/lib/unistdio/u32-u32-vsprintf.c b/lib/unistdio/u32-u32-vsprintf.c
new file mode 100644
index 00000000..46d299ac
--- /dev/null
+++ b/lib/unistdio/u32-u32-vsprintf.c
@@ -0,0 +1,32 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+#define VSPRINTF u32_u32_vsprintf
+#define VASNPRINTF u32_u32_vasnprintf
+#define FCHAR_T uint32_t
+#define DCHAR_T uint32_t
+#include "u-vsprintf.h"
diff --git a/lib/unistdio/u32-vasnprintf.c b/lib/unistdio/u32-vasnprintf.c
new file mode 100644
index 00000000..6aac6235
--- /dev/null
+++ b/lib/unistdio/u32-vasnprintf.c
@@ -0,0 +1,50 @@
+/* Formatted output to UTF-32 strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Tell glibc's <stdio.h> to provide a prototype for snprintf().
+ This must come before <config.h> because <config.h> may include
+ <features.h>, and once <features.h> has been included, it's too late. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#include <config.h>
+#include <alloca.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include "uniconv.h"
+#include "unistr.h"
+#include "unistdio/u-printf-parse.h"
+
+#define VASNPRINTF u32_vasnprintf
+#define FCHAR_T char
+#define DIRECTIVE char_directive
+#define DIRECTIVES char_directives
+#define ASCII_ONLY 1
+#define PRINTF_PARSE ulc_printf_parse
+#define DCHAR_T uint32_t
+#define DCHAR_T_IS_UINT32_T 1
+#define DCHAR_CPY u32_cpy
+#define DCHAR_SET u32_set
+#define DCHAR_MBSNLEN u32_mbsnlen
+#define DCHAR_IS_UINT32_T 1
+#define U8_TO_DCHAR u8_to_u32
+#define U16_TO_DCHAR u16_to_u32
+#define DCHAR_CONV_FROM_ENCODING u32_conv_from_encoding
+#define TCHAR_T char
+#include "vasnprintf.c"
diff --git a/lib/unistdio/u32-vasprintf.c b/lib/unistdio/u32-vasprintf.c
new file mode 100644
index 00000000..e6883e31
--- /dev/null
+++ b/lib/unistdio/u32-vasprintf.c
@@ -0,0 +1,30 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdlib.h>
+
+#define VASPRINTF u32_vasprintf
+#define VASNPRINTF u32_vasnprintf
+#define FCHAR_T char
+#define DCHAR_T uint32_t
+#include "u-vasprintf.h"
diff --git a/lib/unistdio/u32-vsnprintf.c b/lib/unistdio/u32-vsnprintf.c
new file mode 100644
index 00000000..a55e1c76
--- /dev/null
+++ b/lib/unistdio/u32-vsnprintf.c
@@ -0,0 +1,33 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include "unistr.h"
+
+#define VSNPRINTF u32_vsnprintf
+#define VASNPRINTF u32_vasnprintf
+#define FCHAR_T char
+#define DCHAR_T uint32_t
+#define DCHAR_CPY u32_cpy
+#include "u-vsnprintf.h"
diff --git a/lib/unistdio/u32-vsprintf.c b/lib/unistdio/u32-vsprintf.c
new file mode 100644
index 00000000..a850e45f
--- /dev/null
+++ b/lib/unistdio/u32-vsprintf.c
@@ -0,0 +1,32 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+#define VSPRINTF u32_vsprintf
+#define VASNPRINTF u32_vasnprintf
+#define FCHAR_T char
+#define DCHAR_T uint32_t
+#include "u-vsprintf.h"
diff --git a/lib/unistdio/u8-asnprintf.c b/lib/unistdio/u8-asnprintf.c
new file mode 100644
index 00000000..b8e7a276
--- /dev/null
+++ b/lib/unistdio/u8-asnprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define ASNPRINTF u8_asnprintf
+#define VASNPRINTF u8_vasnprintf
+#define FCHAR_T char
+#define DCHAR_T uint8_t
+#include "u-asnprintf.h"
diff --git a/lib/unistdio/u8-asprintf.c b/lib/unistdio/u8-asprintf.c
new file mode 100644
index 00000000..22b01705
--- /dev/null
+++ b/lib/unistdio/u8-asprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define ASPRINTF u8_asprintf
+#define VASPRINTF u8_vasprintf
+#define FCHAR_T char
+#define DCHAR_T uint8_t
+#include "u-asprintf.h"
diff --git a/lib/unistdio/u8-printf-parse.c b/lib/unistdio/u8-printf-parse.c
new file mode 100644
index 00000000..a3555481
--- /dev/null
+++ b/lib/unistdio/u8-printf-parse.c
@@ -0,0 +1,26 @@
+/* Formatted output to strings.
+ Copyright (C) 1999-2000, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio/u-printf-parse.h"
+
+#define PRINTF_PARSE u8_printf_parse
+#define CHAR_T uint8_t
+#define DIRECTIVE u8_directive
+#define DIRECTIVES u8_directives
+#include "printf-parse.c"
diff --git a/lib/unistdio/u8-snprintf.c b/lib/unistdio/u8-snprintf.c
new file mode 100644
index 00000000..87290541
--- /dev/null
+++ b/lib/unistdio/u8-snprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define SNPRINTF u8_snprintf
+#define VSNPRINTF u8_vsnprintf
+#define FCHAR_T char
+#define DCHAR_T uint8_t
+#include "u-snprintf.h"
diff --git a/lib/unistdio/u8-sprintf.c b/lib/unistdio/u8-sprintf.c
new file mode 100644
index 00000000..330feaee
--- /dev/null
+++ b/lib/unistdio/u8-sprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define SPRINTF u8_sprintf
+#define VSPRINTF u8_vsprintf
+#define FCHAR_T char
+#define DCHAR_T uint8_t
+#include "u-sprintf.h"
diff --git a/lib/unistdio/u8-u8-asnprintf.c b/lib/unistdio/u8-u8-asnprintf.c
new file mode 100644
index 00000000..9379c72a
--- /dev/null
+++ b/lib/unistdio/u8-u8-asnprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define ASNPRINTF u8_u8_asnprintf
+#define VASNPRINTF u8_u8_vasnprintf
+#define FCHAR_T uint8_t
+#define DCHAR_T uint8_t
+#include "u-asnprintf.h"
diff --git a/lib/unistdio/u8-u8-asprintf.c b/lib/unistdio/u8-u8-asprintf.c
new file mode 100644
index 00000000..59745278
--- /dev/null
+++ b/lib/unistdio/u8-u8-asprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define ASPRINTF u8_u8_asprintf
+#define VASPRINTF u8_u8_vasprintf
+#define FCHAR_T uint8_t
+#define DCHAR_T uint8_t
+#include "u-asprintf.h"
diff --git a/lib/unistdio/u8-u8-snprintf.c b/lib/unistdio/u8-u8-snprintf.c
new file mode 100644
index 00000000..26dfac0e
--- /dev/null
+++ b/lib/unistdio/u8-u8-snprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define SNPRINTF u8_u8_snprintf
+#define VSNPRINTF u8_u8_vsnprintf
+#define FCHAR_T uint8_t
+#define DCHAR_T uint8_t
+#include "u-snprintf.h"
diff --git a/lib/unistdio/u8-u8-sprintf.c b/lib/unistdio/u8-u8-sprintf.c
new file mode 100644
index 00000000..53b3c96b
--- /dev/null
+++ b/lib/unistdio/u8-u8-sprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define SPRINTF u8_u8_sprintf
+#define VSPRINTF u8_u8_vsprintf
+#define FCHAR_T uint8_t
+#define DCHAR_T uint8_t
+#include "u-sprintf.h"
diff --git a/lib/unistdio/u8-u8-vasnprintf.c b/lib/unistdio/u8-u8-vasnprintf.c
new file mode 100644
index 00000000..7535d4ca
--- /dev/null
+++ b/lib/unistdio/u8-u8-vasnprintf.c
@@ -0,0 +1,49 @@
+/* Formatted output to UTF-8 strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Tell glibc's <stdio.h> to provide a prototype for snprintf().
+ This must come before <config.h> because <config.h> may include
+ <features.h>, and once <features.h> has been included, it's too late. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#include <config.h>
+#include <alloca.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include "uniconv.h"
+#include "unistr.h"
+#include "unistdio/u-printf-parse.h"
+
+#define VASNPRINTF u8_u8_vasnprintf
+#define FCHAR_T uint8_t
+#define DIRECTIVE u8_directive
+#define DIRECTIVES u8_directives
+#define PRINTF_PARSE u8_printf_parse
+#define DCHAR_T uint8_t
+#define DCHAR_T_IS_UINT8_T 1
+#define DCHAR_CPY u8_cpy
+#define DCHAR_SET u8_set
+#define DCHAR_MBSNLEN u8_mbsnlen
+#define DCHAR_IS_UINT8_T 1
+#define U16_TO_DCHAR u16_to_u8
+#define U32_TO_DCHAR u32_to_u8
+#define DCHAR_CONV_FROM_ENCODING u8_conv_from_encoding
+#define TCHAR_T char
+#include "vasnprintf.c"
diff --git a/lib/unistdio/u8-u8-vasprintf.c b/lib/unistdio/u8-u8-vasprintf.c
new file mode 100644
index 00000000..bb28dc5f
--- /dev/null
+++ b/lib/unistdio/u8-u8-vasprintf.c
@@ -0,0 +1,30 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdlib.h>
+
+#define VASPRINTF u8_u8_vasprintf
+#define VASNPRINTF u8_u8_vasnprintf
+#define FCHAR_T uint8_t
+#define DCHAR_T uint8_t
+#include "u-vasprintf.h"
diff --git a/lib/unistdio/u8-u8-vsnprintf.c b/lib/unistdio/u8-u8-vsnprintf.c
new file mode 100644
index 00000000..f9e99223
--- /dev/null
+++ b/lib/unistdio/u8-u8-vsnprintf.c
@@ -0,0 +1,33 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include "unistr.h"
+
+#define VSNPRINTF u8_u8_vsnprintf
+#define VASNPRINTF u8_u8_vasnprintf
+#define FCHAR_T uint8_t
+#define DCHAR_T uint8_t
+#define DCHAR_CPY u8_cpy
+#include "u-vsnprintf.h"
diff --git a/lib/unistdio/u8-u8-vsprintf.c b/lib/unistdio/u8-u8-vsprintf.c
new file mode 100644
index 00000000..9e66018a
--- /dev/null
+++ b/lib/unistdio/u8-u8-vsprintf.c
@@ -0,0 +1,32 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+#define VSPRINTF u8_u8_vsprintf
+#define VASNPRINTF u8_u8_vasnprintf
+#define FCHAR_T uint8_t
+#define DCHAR_T uint8_t
+#include "u-vsprintf.h"
diff --git a/lib/unistdio/u8-vasnprintf.c b/lib/unistdio/u8-vasnprintf.c
new file mode 100644
index 00000000..0067e6ce
--- /dev/null
+++ b/lib/unistdio/u8-vasnprintf.c
@@ -0,0 +1,50 @@
+/* Formatted output to UTF-8 strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Tell glibc's <stdio.h> to provide a prototype for snprintf().
+ This must come before <config.h> because <config.h> may include
+ <features.h>, and once <features.h> has been included, it's too late. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#include <config.h>
+#include <alloca.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include "uniconv.h"
+#include "unistr.h"
+#include "unistdio/u-printf-parse.h"
+
+#define VASNPRINTF u8_vasnprintf
+#define FCHAR_T char
+#define DIRECTIVE char_directive
+#define DIRECTIVES char_directives
+#define ASCII_ONLY 1
+#define PRINTF_PARSE ulc_printf_parse
+#define DCHAR_T uint8_t
+#define DCHAR_T_IS_UINT8_T 1
+#define DCHAR_CPY u8_cpy
+#define DCHAR_SET u8_set
+#define DCHAR_MBSNLEN u8_mbsnlen
+#define DCHAR_IS_UINT8_T 1
+#define U16_TO_DCHAR u16_to_u8
+#define U32_TO_DCHAR u32_to_u8
+#define DCHAR_CONV_FROM_ENCODING u8_conv_from_encoding
+#define TCHAR_T char
+#include "vasnprintf.c"
diff --git a/lib/unistdio/u8-vasprintf.c b/lib/unistdio/u8-vasprintf.c
new file mode 100644
index 00000000..304d4965
--- /dev/null
+++ b/lib/unistdio/u8-vasprintf.c
@@ -0,0 +1,30 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdlib.h>
+
+#define VASPRINTF u8_vasprintf
+#define VASNPRINTF u8_vasnprintf
+#define FCHAR_T char
+#define DCHAR_T uint8_t
+#include "u-vasprintf.h"
diff --git a/lib/unistdio/u8-vsnprintf.c b/lib/unistdio/u8-vsnprintf.c
new file mode 100644
index 00000000..87388e29
--- /dev/null
+++ b/lib/unistdio/u8-vsnprintf.c
@@ -0,0 +1,33 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include "unistr.h"
+
+#define VSNPRINTF u8_vsnprintf
+#define VASNPRINTF u8_vasnprintf
+#define FCHAR_T char
+#define DCHAR_T uint8_t
+#define DCHAR_CPY u8_cpy
+#include "u-vsnprintf.h"
diff --git a/lib/unistdio/u8-vsprintf.c b/lib/unistdio/u8-vsprintf.c
new file mode 100644
index 00000000..aa0b52d2
--- /dev/null
+++ b/lib/unistdio/u8-vsprintf.c
@@ -0,0 +1,32 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+#define VSPRINTF u8_vsprintf
+#define VASNPRINTF u8_vasnprintf
+#define FCHAR_T char
+#define DCHAR_T uint8_t
+#include "u-vsprintf.h"
diff --git a/lib/unistdio/ulc-asnprintf.c b/lib/unistdio/ulc-asnprintf.c
new file mode 100644
index 00000000..31d3f220
--- /dev/null
+++ b/lib/unistdio/ulc-asnprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define ASNPRINTF ulc_asnprintf
+#define VASNPRINTF ulc_vasnprintf
+#define FCHAR_T char
+#define DCHAR_T char
+#include "u-asnprintf.h"
diff --git a/lib/unistdio/ulc-asprintf.c b/lib/unistdio/ulc-asprintf.c
new file mode 100644
index 00000000..4f760e1d
--- /dev/null
+++ b/lib/unistdio/ulc-asprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define ASPRINTF ulc_asprintf
+#define VASPRINTF ulc_vasprintf
+#define FCHAR_T char
+#define DCHAR_T char
+#include "u-asprintf.h"
diff --git a/lib/unistdio/ulc-fprintf.c b/lib/unistdio/ulc-fprintf.c
new file mode 100644
index 00000000..ac8ab6fe
--- /dev/null
+++ b/lib/unistdio/ulc-fprintf.c
@@ -0,0 +1,74 @@
+/* Formatted output to a stream.
+ Copyright (C) 2004, 2006-2008 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "fseterr.h"
+
+/* Print formatted output to the stream FP.
+ Return string length of formatted string. On error, return a negative
+ value. */
+int
+ulc_fprintf (FILE *fp, const char *format, ...)
+{
+ char buf[2000];
+ char *output;
+ size_t len;
+ size_t lenbuf = sizeof (buf);
+ va_list args;
+
+ va_start (args, format);
+ output = ulc_vasnprintf (buf, &lenbuf, format, args);
+ len = lenbuf;
+ va_end (args);
+
+ if (!output)
+ {
+ fseterr (fp);
+ return -1;
+ }
+
+ if (fwrite (output, 1, len, fp) < len)
+ {
+ if (output != buf)
+ {
+ int saved_errno = errno;
+ free (output);
+ errno = saved_errno;
+ }
+ return -1;
+ }
+
+ if (len > INT_MAX)
+ {
+ errno = EOVERFLOW;
+ fseterr (fp);
+ return -1;
+ }
+
+ return len;
+}
diff --git a/lib/unistdio/ulc-printf-parse.c b/lib/unistdio/ulc-printf-parse.c
new file mode 100644
index 00000000..81af3690
--- /dev/null
+++ b/lib/unistdio/ulc-printf-parse.c
@@ -0,0 +1,27 @@
+/* Formatted output to strings.
+ Copyright (C) 1999-2000, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio/u-printf-parse.h"
+
+#define PRINTF_PARSE ulc_printf_parse
+#define CHAR_T char
+#define CHAR_T_ONLY_ASCII 1
+#define DIRECTIVE char_directive
+#define DIRECTIVES char_directives
+#include "printf-parse.c"
diff --git a/lib/unistdio/ulc-snprintf.c b/lib/unistdio/ulc-snprintf.c
new file mode 100644
index 00000000..f774ac04
--- /dev/null
+++ b/lib/unistdio/ulc-snprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define SNPRINTF ulc_snprintf
+#define VSNPRINTF ulc_vsnprintf
+#define FCHAR_T char
+#define DCHAR_T char
+#include "u-snprintf.h"
diff --git a/lib/unistdio/ulc-sprintf.c b/lib/unistdio/ulc-sprintf.c
new file mode 100644
index 00000000..466ffb40
--- /dev/null
+++ b/lib/unistdio/ulc-sprintf.c
@@ -0,0 +1,28 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <stdarg.h>
+
+#define SPRINTF ulc_sprintf
+#define VSPRINTF ulc_vsprintf
+#define FCHAR_T char
+#define DCHAR_T char
+#include "u-sprintf.h"
diff --git a/lib/unistdio/ulc-vasnprintf.c b/lib/unistdio/ulc-vasnprintf.c
new file mode 100644
index 00000000..e89b7fff
--- /dev/null
+++ b/lib/unistdio/ulc-vasnprintf.c
@@ -0,0 +1,46 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Tell glibc's <stdio.h> to provide a prototype for snprintf().
+ This must come before <config.h> because <config.h> may include
+ <features.h>, and once <features.h> has been included, it's too late. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#include <config.h>
+#include <alloca.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include "uniconv.h"
+#include "unistr.h"
+#include "unistdio/u-printf-parse.h"
+
+#define VASNPRINTF ulc_vasnprintf
+#define FCHAR_T char
+#define DIRECTIVE char_directive
+#define DIRECTIVES char_directives
+#define FCHAR_T_ONLY_ASCII 1
+#define PRINTF_PARSE ulc_printf_parse
+#define DCHAR_T char
+#define DCHAR_CPY memcpy
+#define DCHAR_SET memset
+#define DCHAR_MBSNLEN mbsnlen
+#define TCHAR_T char
+#define DCHAR_IS_TCHAR 1
+#include "vasnprintf.c"
diff --git a/lib/unistdio/ulc-vasprintf.c b/lib/unistdio/ulc-vasprintf.c
new file mode 100644
index 00000000..8773ab46
--- /dev/null
+++ b/lib/unistdio/ulc-vasprintf.c
@@ -0,0 +1,30 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdlib.h>
+
+#define VASPRINTF ulc_vasprintf
+#define VASNPRINTF ulc_vasnprintf
+#define FCHAR_T char
+#define DCHAR_T char
+#include "u-vasprintf.h"
diff --git a/lib/unistdio/ulc-vfprintf.c b/lib/unistdio/ulc-vfprintf.c
new file mode 100644
index 00000000..586fe13a
--- /dev/null
+++ b/lib/unistdio/ulc-vfprintf.c
@@ -0,0 +1,71 @@
+/* Formatted output to a stream.
+ Copyright (C) 2004, 2006-2008 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "fseterr.h"
+
+/* Print formatted output to the stream FP.
+ Return string length of formatted string. On error, return a negative
+ value. */
+int
+ulc_vfprintf (FILE *fp, const char *format, va_list args)
+{
+ char buf[2000];
+ char *output;
+ size_t len;
+ size_t lenbuf = sizeof (buf);
+
+ output = ulc_vasnprintf (buf, &lenbuf, format, args);
+ len = lenbuf;
+
+ if (!output)
+ {
+ fseterr (fp);
+ return -1;
+ }
+
+ if (fwrite (output, 1, len, fp) < len)
+ {
+ if (output != buf)
+ {
+ int saved_errno = errno;
+ free (output);
+ errno = saved_errno;
+ }
+ return -1;
+ }
+
+ if (len > INT_MAX)
+ {
+ errno = EOVERFLOW;
+ fseterr (fp);
+ return -1;
+ }
+
+ return len;
+}
diff --git a/lib/unistdio/ulc-vsnprintf.c b/lib/unistdio/ulc-vsnprintf.c
new file mode 100644
index 00000000..c1665359
--- /dev/null
+++ b/lib/unistdio/ulc-vsnprintf.c
@@ -0,0 +1,33 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define VSNPRINTF ulc_vsnprintf
+#define VASNPRINTF ulc_vasnprintf
+#define FCHAR_T char
+#define DCHAR_T char
+#define DCHAR_CPY memcpy
+#include "u-vsnprintf.h"
diff --git a/lib/unistdio/ulc-vsprintf.c b/lib/unistdio/ulc-vsprintf.c
new file mode 100644
index 00000000..0cccc05d
--- /dev/null
+++ b/lib/unistdio/ulc-vsprintf.c
@@ -0,0 +1,32 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistdio.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+#define VSPRINTF ulc_vsprintf
+#define VASNPRINTF ulc_vasnprintf
+#define FCHAR_T char
+#define DCHAR_T char
+#include "u-vsprintf.h"
diff --git a/lib/unistr.h b/lib/unistr.h
new file mode 100644
index 00000000..01ecc372
--- /dev/null
+++ b/lib/unistr.h
@@ -0,0 +1,684 @@
+/* Elementary Unicode string functions.
+ Copyright (C) 2001-2002, 2005-2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _UNISTR_H
+#define _UNISTR_H
+
+#include "unitypes.h"
+
+/* Get inline if available. */
+#include <unistring/inline.h>
+
+/* Get bool. */
+#include <unistring/stdbool.h>
+
+/* Get size_t. */
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Conventions:
+
+ All functions prefixed with u8_ operate on UTF-8 encoded strings.
+ Their unit is an uint8_t (1 byte).
+
+ All functions prefixed with u16_ operate on UTF-16 encoded strings.
+ Their unit is an uint16_t (a 2-byte word).
+
+ All functions prefixed with u32_ operate on UCS-4 encoded strings.
+ Their unit is an uint32_t (a 4-byte word).
+
+ All argument pairs (s, n) denote a Unicode string s[0..n-1] with exactly
+ n units.
+
+ All arguments starting with "str" and the arguments of functions starting
+ with u8_str/u16_str/u32_str denote a NUL terminated string, i.e. a string
+ which terminates at the first NUL unit. This termination unit is
+ considered part of the string for all memory allocation purposes, but
+ is not considered part of the string for all other logical purposes.
+
+ Functions returning a string result take a (resultbuf, lengthp) argument
+ pair. If resultbuf is not NULL and the result fits into *lengthp units,
+ it is put in resultbuf, and resultbuf is returned. Otherwise, a freshly
+ allocated string is returned. In both cases, *lengthp is set to the
+ length (number of units) of the returned string. In case of error,
+ NULL is returned and errno is set. */
+
+
+/* Elementary string checks. */
+
+/* Check whether an UTF-8 string is well-formed.
+ Return NULL if valid, or a pointer to the first invalid unit otherwise. */
+extern const uint8_t *
+ u8_check (const uint8_t *s, size_t n);
+
+/* Check whether an UTF-16 string is well-formed.
+ Return NULL if valid, or a pointer to the first invalid unit otherwise. */
+extern const uint16_t *
+ u16_check (const uint16_t *s, size_t n);
+
+/* Check whether an UCS-4 string is well-formed.
+ Return NULL if valid, or a pointer to the first invalid unit otherwise. */
+extern const uint32_t *
+ u32_check (const uint32_t *s, size_t n);
+
+
+/* Elementary string conversions. */
+
+/* Convert an UTF-8 string to an UTF-16 string. */
+extern uint16_t *
+ u8_to_u16 (const uint8_t *s, size_t n, uint16_t *resultbuf,
+ size_t *lengthp);
+
+/* Convert an UTF-8 string to an UCS-4 string. */
+extern uint32_t *
+ u8_to_u32 (const uint8_t *s, size_t n, uint32_t *resultbuf,
+ size_t *lengthp);
+
+/* Convert an UTF-16 string to an UTF-8 string. */
+extern uint8_t *
+ u16_to_u8 (const uint16_t *s, size_t n, uint8_t *resultbuf,
+ size_t *lengthp);
+
+/* Convert an UTF-16 string to an UCS-4 string. */
+extern uint32_t *
+ u16_to_u32 (const uint16_t *s, size_t n, uint32_t *resultbuf,
+ size_t *lengthp);
+
+/* Convert an UCS-4 string to an UTF-8 string. */
+extern uint8_t *
+ u32_to_u8 (const uint32_t *s, size_t n, uint8_t *resultbuf,
+ size_t *lengthp);
+
+/* Convert an UCS-4 string to an UTF-16 string. */
+extern uint16_t *
+ u32_to_u16 (const uint32_t *s, size_t n, uint16_t *resultbuf,
+ size_t *lengthp);
+
+
+/* Elementary string functions. */
+
+/* Return the length (number of units) of the first character in S, which is
+ no longer than N. Return 0 if it is the NUL character. Return -1 upon
+ failure. */
+/* Similar to mblen(), except that s must not be NULL. */
+extern int
+ u8_mblen (const uint8_t *s, size_t n);
+extern int
+ u16_mblen (const uint16_t *s, size_t n);
+extern int
+ u32_mblen (const uint32_t *s, size_t n);
+
+/* Return the length (number of units) of the first character in S, putting
+ its 'ucs4_t' representation in *PUC. Upon failure, *PUC is set to 0xfffd,
+ and an appropriate number of units is returned.
+ The number of available units, N, must be > 0. */
+/* Similar to mbtowc(), except that puc and s must not be NULL, n must be > 0,
+ and the NUL character is not treated specially. */
+/* The variants with _safe suffix are safe, even if the library is compiled
+ without --enable-safety. */
+
+#if 1
+# if !UNISTRING_HAVE_INLINE
+extern int
+ u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n);
+# else
+extern int
+ u8_mbtouc_unsafe_aux (ucs4_t *puc, const uint8_t *s, size_t n);
+static inline int
+u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n)
+{
+ uint8_t c = *s;
+
+ if (c < 0x80)
+ {
+ *puc = c;
+ return 1;
+ }
+ else
+ return u8_mbtouc_unsafe_aux (puc, s, n);
+}
+# endif
+#endif
+
+#if 1
+# if !UNISTRING_HAVE_INLINE
+extern int
+ u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n);
+# else
+extern int
+ u16_mbtouc_unsafe_aux (ucs4_t *puc, const uint16_t *s, size_t n);
+static inline int
+u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n)
+{
+ uint16_t c = *s;
+
+ if (c < 0xd800 || c >= 0xe000)
+ {
+ *puc = c;
+ return 1;
+ }
+ else
+ return u16_mbtouc_unsafe_aux (puc, s, n);
+}
+# endif
+#endif
+
+#if 1
+# if !UNISTRING_HAVE_INLINE
+extern int
+ u32_mbtouc_unsafe (ucs4_t *puc, const uint32_t *s, size_t n);
+# else
+static inline int
+u32_mbtouc_unsafe (ucs4_t *puc, const uint32_t *s, size_t n _UNUSED_PARAMETER_)
+{
+ uint32_t c = *s;
+
+# if CONFIG_UNICODE_SAFETY
+ if (c < 0xd800 || (c >= 0xe000 && c < 0x110000))
+# endif
+ *puc = c;
+# if CONFIG_UNICODE_SAFETY
+ else
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+# endif
+ return 1;
+}
+# endif
+#endif
+
+#if 1
+# if !UNISTRING_HAVE_INLINE
+extern int
+ u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n);
+# else
+extern int
+ u8_mbtouc_aux (ucs4_t *puc, const uint8_t *s, size_t n);
+static inline int
+u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n)
+{
+ uint8_t c = *s;
+
+ if (c < 0x80)
+ {
+ *puc = c;
+ return 1;
+ }
+ else
+ return u8_mbtouc_aux (puc, s, n);
+}
+# endif
+#endif
+
+#if 1
+# if !UNISTRING_HAVE_INLINE
+extern int
+ u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n);
+# else
+extern int
+ u16_mbtouc_aux (ucs4_t *puc, const uint16_t *s, size_t n);
+static inline int
+u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n)
+{
+ uint16_t c = *s;
+
+ if (c < 0xd800 || c >= 0xe000)
+ {
+ *puc = c;
+ return 1;
+ }
+ else
+ return u16_mbtouc_aux (puc, s, n);
+}
+# endif
+#endif
+
+#if 1
+# if !UNISTRING_HAVE_INLINE
+extern int
+ u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n);
+# else
+static inline int
+u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n _UNUSED_PARAMETER_)
+{
+ uint32_t c = *s;
+
+ if (c < 0xd800 || (c >= 0xe000 && c < 0x110000))
+ *puc = c;
+ else
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+# endif
+#endif
+
+/* Return the length (number of units) of the first character in S, putting
+ its 'ucs4_t' representation in *PUC. Upon failure, *PUC is set to 0xfffd,
+ and -1 is returned for an invalid sequence of units, -2 is returned for an
+ incomplete sequence of units.
+ The number of available units, N, must be > 0. */
+/* Similar to u*_mbtouc(), except that the return value gives more details
+ about the failure, similar to mbrtowc(). */
+
+#if 1
+extern int
+ u8_mbtoucr (ucs4_t *puc, const uint8_t *s, size_t n);
+#endif
+
+#if 1
+extern int
+ u16_mbtoucr (ucs4_t *puc, const uint16_t *s, size_t n);
+#endif
+
+#if 1
+extern int
+ u32_mbtoucr (ucs4_t *puc, const uint32_t *s, size_t n);
+#endif
+
+/* Put the multibyte character represented by UC in S, returning its
+ length. Return -1 upon failure, -2 if the number of available units, N,
+ is too small. The latter case cannot occur if N >= 6/2/1, respectively. */
+/* Similar to wctomb(), except that s must not be NULL, and the argument n
+ must be specified. */
+
+#if 1
+/* Auxiliary function, also used by u8_chr, u8_strchr, u8_strrchr. */
+extern int
+ u8_uctomb_aux (uint8_t *s, ucs4_t uc, int n);
+# if !UNISTRING_HAVE_INLINE
+extern int
+ u8_uctomb (uint8_t *s, ucs4_t uc, int n);
+# else
+static inline int
+u8_uctomb (uint8_t *s, ucs4_t uc, int n)
+{
+ if (uc < 0x80 && n > 0)
+ {
+ s[0] = uc;
+ return 1;
+ }
+ else
+ return u8_uctomb_aux (s, uc, n);
+}
+# endif
+#endif
+
+#if 1
+/* Auxiliary function, also used by u16_chr, u16_strchr, u16_strrchr. */
+extern int
+ u16_uctomb_aux (uint16_t *s, ucs4_t uc, int n);
+# if !UNISTRING_HAVE_INLINE
+extern int
+ u16_uctomb (uint16_t *s, ucs4_t uc, int n);
+# else
+static inline int
+u16_uctomb (uint16_t *s, ucs4_t uc, int n)
+{
+ if (uc < 0xd800 && n > 0)
+ {
+ s[0] = uc;
+ return 1;
+ }
+ else
+ return u16_uctomb_aux (s, uc, n);
+}
+# endif
+#endif
+
+#if 1
+# if !UNISTRING_HAVE_INLINE
+extern int
+ u32_uctomb (uint32_t *s, ucs4_t uc, int n);
+# else
+static inline int
+u32_uctomb (uint32_t *s, ucs4_t uc, int n)
+{
+ if (uc < 0xd800 || (uc >= 0xe000 && uc < 0x110000))
+ {
+ if (n > 0)
+ {
+ *s = uc;
+ return 1;
+ }
+ else
+ return -2;
+ }
+ else
+ return -1;
+}
+# endif
+#endif
+
+/* Copy N units from SRC to DEST. */
+/* Similar to memcpy(). */
+extern uint8_t *
+ u8_cpy (uint8_t *dest, const uint8_t *src, size_t n);
+extern uint16_t *
+ u16_cpy (uint16_t *dest, const uint16_t *src, size_t n);
+extern uint32_t *
+ u32_cpy (uint32_t *dest, const uint32_t *src, size_t n);
+
+/* Copy N units from SRC to DEST, guaranteeing correct behavior for
+ overlapping memory areas. */
+/* Similar to memmove(). */
+extern uint8_t *
+ u8_move (uint8_t *dest, const uint8_t *src, size_t n);
+extern uint16_t *
+ u16_move (uint16_t *dest, const uint16_t *src, size_t n);
+extern uint32_t *
+ u32_move (uint32_t *dest, const uint32_t *src, size_t n);
+
+/* Set the first N characters of S to UC. UC should be a character that
+ occupies only 1 unit. */
+/* Similar to memset(). */
+extern uint8_t *
+ u8_set (uint8_t *s, ucs4_t uc, size_t n);
+extern uint16_t *
+ u16_set (uint16_t *s, ucs4_t uc, size_t n);
+extern uint32_t *
+ u32_set (uint32_t *s, ucs4_t uc, size_t n);
+
+/* Compare S1 and S2, each of length N. */
+/* Similar to memcmp(). */
+extern int
+ u8_cmp (const uint8_t *s1, const uint8_t *s2, size_t n);
+extern int
+ u16_cmp (const uint16_t *s1, const uint16_t *s2, size_t n);
+extern int
+ u32_cmp (const uint32_t *s1, const uint32_t *s2, size_t n);
+
+/* Compare S1 and S2. */
+/* Similar to the gnulib function memcmp2(). */
+extern int
+ u8_cmp2 (const uint8_t *s1, size_t n1, const uint8_t *s2, size_t n2);
+extern int
+ u16_cmp2 (const uint16_t *s1, size_t n1, const uint16_t *s2, size_t n2);
+extern int
+ u32_cmp2 (const uint32_t *s1, size_t n1, const uint32_t *s2, size_t n2);
+
+/* Search the string at S for UC. */
+/* Similar to memchr(). */
+extern uint8_t *
+ u8_chr (const uint8_t *s, size_t n, ucs4_t uc);
+extern uint16_t *
+ u16_chr (const uint16_t *s, size_t n, ucs4_t uc);
+extern uint32_t *
+ u32_chr (const uint32_t *s, size_t n, ucs4_t uc);
+
+/* Count the number of Unicode characters in the N units from S. */
+/* Similar to mbsnlen(). */
+extern size_t
+ u8_mbsnlen (const uint8_t *s, size_t n);
+extern size_t
+ u16_mbsnlen (const uint16_t *s, size_t n);
+extern size_t
+ u32_mbsnlen (const uint32_t *s, size_t n);
+
+/* Elementary string functions with memory allocation. */
+
+/* Make a freshly allocated copy of S, of length N. */
+extern uint8_t *
+ u8_cpy_alloc (const uint8_t *s, size_t n);
+extern uint16_t *
+ u16_cpy_alloc (const uint16_t *s, size_t n);
+extern uint32_t *
+ u32_cpy_alloc (const uint32_t *s, size_t n);
+
+/* Elementary string functions on NUL terminated strings. */
+
+/* Return the length (number of units) of the first character in S.
+ Return 0 if it is the NUL character. Return -1 upon failure. */
+extern int
+ u8_strmblen (const uint8_t *s);
+extern int
+ u16_strmblen (const uint16_t *s);
+extern int
+ u32_strmblen (const uint32_t *s);
+
+/* Return the length (number of units) of the first character in S, putting
+ its 'ucs4_t' representation in *PUC. Return 0 if it is the NUL
+ character. Return -1 upon failure. */
+extern int
+ u8_strmbtouc (ucs4_t *puc, const uint8_t *s);
+extern int
+ u16_strmbtouc (ucs4_t *puc, const uint16_t *s);
+extern int
+ u32_strmbtouc (ucs4_t *puc, const uint32_t *s);
+
+/* Forward iteration step. Advances the pointer past the next character,
+ or returns NULL if the end of the string has been reached. Puts the
+ character's 'ucs4_t' representation in *PUC. */
+extern const uint8_t *
+ u8_next (ucs4_t *puc, const uint8_t *s);
+extern const uint16_t *
+ u16_next (ucs4_t *puc, const uint16_t *s);
+extern const uint32_t *
+ u32_next (ucs4_t *puc, const uint32_t *s);
+
+/* Backward iteration step. Advances the pointer to point to the previous
+ character, or returns NULL if the beginning of the string had been reached.
+ Puts the character's 'ucs4_t' representation in *PUC. */
+extern const uint8_t *
+ u8_prev (ucs4_t *puc, const uint8_t *s, const uint8_t *start);
+extern const uint16_t *
+ u16_prev (ucs4_t *puc, const uint16_t *s, const uint16_t *start);
+extern const uint32_t *
+ u32_prev (ucs4_t *puc, const uint32_t *s, const uint32_t *start);
+
+/* Return the number of units in S. */
+/* Similar to strlen(), wcslen(). */
+extern size_t
+ u8_strlen (const uint8_t *s);
+extern size_t
+ u16_strlen (const uint16_t *s);
+extern size_t
+ u32_strlen (const uint32_t *s);
+
+/* Return the number of units in S, but at most MAXLEN. */
+/* Similar to strnlen(), wcsnlen(). */
+extern size_t
+ u8_strnlen (const uint8_t *s, size_t maxlen);
+extern size_t
+ u16_strnlen (const uint16_t *s, size_t maxlen);
+extern size_t
+ u32_strnlen (const uint32_t *s, size_t maxlen);
+
+/* Copy SRC to DEST. */
+/* Similar to strcpy(), wcscpy(). */
+extern uint8_t *
+ u8_strcpy (uint8_t *dest, const uint8_t *src);
+extern uint16_t *
+ u16_strcpy (uint16_t *dest, const uint16_t *src);
+extern uint32_t *
+ u32_strcpy (uint32_t *dest, const uint32_t *src);
+
+/* Copy SRC to DEST, returning the address of the terminating NUL in DEST. */
+/* Similar to stpcpy(). */
+extern uint8_t *
+ u8_stpcpy (uint8_t *dest, const uint8_t *src);
+extern uint16_t *
+ u16_stpcpy (uint16_t *dest, const uint16_t *src);
+extern uint32_t *
+ u32_stpcpy (uint32_t *dest, const uint32_t *src);
+
+/* Copy no more than N units of SRC to DEST. */
+/* Similar to strncpy(), wcsncpy(). */
+extern uint8_t *
+ u8_strncpy (uint8_t *dest, const uint8_t *src, size_t n);
+extern uint16_t *
+ u16_strncpy (uint16_t *dest, const uint16_t *src, size_t n);
+extern uint32_t *
+ u32_strncpy (uint32_t *dest, const uint32_t *src, size_t n);
+
+/* Copy no more than N units of SRC to DEST, returning the address of
+ the last unit written into DEST. */
+/* Similar to stpncpy(). */
+extern uint8_t *
+ u8_stpncpy (uint8_t *dest, const uint8_t *src, size_t n);
+extern uint16_t *
+ u16_stpncpy (uint16_t *dest, const uint16_t *src, size_t n);
+extern uint32_t *
+ u32_stpncpy (uint32_t *dest, const uint32_t *src, size_t n);
+
+/* Append SRC onto DEST. */
+/* Similar to strcat(), wcscat(). */
+extern uint8_t *
+ u8_strcat (uint8_t *dest, const uint8_t *src);
+extern uint16_t *
+ u16_strcat (uint16_t *dest, const uint16_t *src);
+extern uint32_t *
+ u32_strcat (uint32_t *dest, const uint32_t *src);
+
+/* Append no more than N units of SRC onto DEST. */
+/* Similar to strncat(), wcsncat(). */
+extern uint8_t *
+ u8_strncat (uint8_t *dest, const uint8_t *src, size_t n);
+extern uint16_t *
+ u16_strncat (uint16_t *dest, const uint16_t *src, size_t n);
+extern uint32_t *
+ u32_strncat (uint32_t *dest, const uint32_t *src, size_t n);
+
+/* Compare S1 and S2. */
+/* Similar to strcmp(), wcscmp(). */
+extern int
+ u8_strcmp (const uint8_t *s1, const uint8_t *s2);
+extern int
+ u16_strcmp (const uint16_t *s1, const uint16_t *s2);
+extern int
+ u32_strcmp (const uint32_t *s1, const uint32_t *s2);
+
+/* Compare S1 and S2 using the collation rules of the current locale.
+ Return -1 if S1 < S2, 0 if S1 = S2, 1 if S1 > S2.
+ Upon failure, set errno and return any value. */
+/* Similar to strcoll(), wcscoll(). */
+extern int
+ u8_strcoll (const uint8_t *s1, const uint8_t *s2);
+extern int
+ u16_strcoll (const uint16_t *s1, const uint16_t *s2);
+extern int
+ u32_strcoll (const uint32_t *s1, const uint32_t *s2);
+
+/* Compare no more than N units of S1 and S2. */
+/* Similar to strncmp(), wcsncmp(). */
+extern int
+ u8_strncmp (const uint8_t *s1, const uint8_t *s2, size_t n);
+extern int
+ u16_strncmp (const uint16_t *s1, const uint16_t *s2, size_t n);
+extern int
+ u32_strncmp (const uint32_t *s1, const uint32_t *s2, size_t n);
+
+/* Duplicate S, returning an identical malloc'd string. */
+/* Similar to strdup(), wcsdup(). */
+extern uint8_t *
+ u8_strdup (const uint8_t *s);
+extern uint16_t *
+ u16_strdup (const uint16_t *s);
+extern uint32_t *
+ u32_strdup (const uint32_t *s);
+
+/* Find the first occurrence of UC in STR. */
+/* Similar to strchr(), wcschr(). */
+extern uint8_t *
+ u8_strchr (const uint8_t *str, ucs4_t uc);
+extern uint16_t *
+ u16_strchr (const uint16_t *str, ucs4_t uc);
+extern uint32_t *
+ u32_strchr (const uint32_t *str, ucs4_t uc);
+
+/* Find the last occurrence of UC in STR. */
+/* Similar to strrchr(), wcsrchr(). */
+extern uint8_t *
+ u8_strrchr (const uint8_t *str, ucs4_t uc);
+extern uint16_t *
+ u16_strrchr (const uint16_t *str, ucs4_t uc);
+extern uint32_t *
+ u32_strrchr (const uint32_t *str, ucs4_t uc);
+
+/* Return the length of the initial segment of STR which consists entirely
+ of Unicode characters not in REJECT. */
+/* Similar to strcspn(), wcscspn(). */
+extern size_t
+ u8_strcspn (const uint8_t *str, const uint8_t *reject);
+extern size_t
+ u16_strcspn (const uint16_t *str, const uint16_t *reject);
+extern size_t
+ u32_strcspn (const uint32_t *str, const uint32_t *reject);
+
+/* Return the length of the initial segment of STR which consists entirely
+ of Unicode characters in ACCEPT. */
+/* Similar to strspn(), wcsspn(). */
+extern size_t
+ u8_strspn (const uint8_t *str, const uint8_t *accept);
+extern size_t
+ u16_strspn (const uint16_t *str, const uint16_t *accept);
+extern size_t
+ u32_strspn (const uint32_t *str, const uint32_t *accept);
+
+/* Find the first occurrence in STR of any character in ACCEPT. */
+/* Similar to strpbrk(), wcspbrk(). */
+extern uint8_t *
+ u8_strpbrk (const uint8_t *str, const uint8_t *accept);
+extern uint16_t *
+ u16_strpbrk (const uint16_t *str, const uint16_t *accept);
+extern uint32_t *
+ u32_strpbrk (const uint32_t *str, const uint32_t *accept);
+
+/* Find the first occurrence of NEEDLE in HAYSTACK. */
+/* Similar to strstr(), wcsstr(). */
+extern uint8_t *
+ u8_strstr (const uint8_t *haystack, const uint8_t *needle);
+extern uint16_t *
+ u16_strstr (const uint16_t *haystack, const uint16_t *needle);
+extern uint32_t *
+ u32_strstr (const uint32_t *haystack, const uint32_t *needle);
+
+/* Test whether STR starts with PREFIX. */
+extern bool
+ u8_startswith (const uint8_t *str, const uint8_t *prefix);
+extern bool
+ u16_startswith (const uint16_t *str, const uint16_t *prefix);
+extern bool
+ u32_startswith (const uint32_t *str, const uint32_t *prefix);
+
+/* Test whether STR ends with SUFFIX. */
+extern bool
+ u8_endswith (const uint8_t *str, const uint8_t *suffix);
+extern bool
+ u16_endswith (const uint16_t *str, const uint16_t *suffix);
+extern bool
+ u32_endswith (const uint32_t *str, const uint32_t *suffix);
+
+/* Divide STR into tokens separated by characters in DELIM.
+ This interface is actually more similar to wcstok than to strtok. */
+/* Similar to strtok_r(), wcstok(). */
+extern uint8_t *
+ u8_strtok (uint8_t *str, const uint8_t *delim, uint8_t **ptr);
+extern uint16_t *
+ u16_strtok (uint16_t *str, const uint16_t *delim, uint16_t **ptr);
+extern uint32_t *
+ u32_strtok (uint32_t *str, const uint32_t *delim, uint32_t **ptr);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UNISTR_H */
diff --git a/lib/unistr/u-cmp2.h b/lib/unistr/u-cmp2.h
new file mode 100644
index 00000000..ae3750c4
--- /dev/null
+++ b/lib/unistr/u-cmp2.h
@@ -0,0 +1,32 @@
+/* Compare pieces of UTF-8/UTF-16/UTF-32 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+int
+FUNC (const UNIT *s1, size_t n1, const UNIT *s2, size_t n2)
+{
+ int cmp = U_CMP (s1, s2, MIN (n1, n2));
+
+ if (cmp == 0)
+ {
+ if (n1 < n2)
+ cmp = -1;
+ else if (n1 > n2)
+ cmp = 1;
+ }
+
+ return cmp;
+}
diff --git a/lib/unistr/u-cpy-alloc.h b/lib/unistr/u-cpy-alloc.h
new file mode 100644
index 00000000..dace3e2e
--- /dev/null
+++ b/lib/unistr/u-cpy-alloc.h
@@ -0,0 +1,39 @@
+/* Copy piece of UTF-8/UTF-16/UTF-32 string.
+ Copyright (C) 1999, 2002, 2006-2007, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <stdlib.h>
+#include <string.h>
+
+UNIT *
+FUNC (const UNIT *s, size_t n)
+{
+ UNIT *dest;
+
+ dest = (UNIT *) malloc (n > 0 ? n * sizeof (UNIT) : 1);
+ if (dest != NULL)
+ {
+#if 0
+ UNIT *destptr = dest;
+
+ for (; n > 0; n--)
+ *destptr++ = *s++;
+#else
+ memcpy ((char *) dest, (const char *) s, n * sizeof (UNIT));
+#endif
+ }
+ return dest;
+}
diff --git a/lib/unistr/u-cpy.h b/lib/unistr/u-cpy.h
new file mode 100644
index 00000000..c660eae0
--- /dev/null
+++ b/lib/unistr/u-cpy.h
@@ -0,0 +1,32 @@
+/* Copy piece of UTF-8/UTF-16/UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <string.h>
+
+UNIT *
+FUNC (UNIT *dest, const UNIT *src, size_t n)
+{
+#if 0
+ UNIT *destptr = dest;
+
+ for (; n > 0; n--)
+ *destptr++ = *src++;
+#else
+ memcpy ((char *) dest, (const char *) src, n * sizeof (UNIT));
+#endif
+ return dest;
+}
diff --git a/lib/unistr/u-endswith.h b/lib/unistr/u-endswith.h
new file mode 100644
index 00000000..739bfbb1
--- /dev/null
+++ b/lib/unistr/u-endswith.h
@@ -0,0 +1,28 @@
+/* Substring test for UTF-8/UTF-16/UTF-32 strings.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+bool
+FUNC (const UNIT *str, const UNIT *suffix)
+{
+ size_t len = U_STRLEN (str);
+ size_t suffixlen = U_STRLEN (suffix);
+
+ if (len >= suffixlen)
+ return (U_CMP (str + (len - suffixlen), suffix, suffixlen) == 0);
+ else
+ return false;
+}
diff --git a/lib/unistr/u-move.h b/lib/unistr/u-move.h
new file mode 100644
index 00000000..77b6788b
--- /dev/null
+++ b/lib/unistr/u-move.h
@@ -0,0 +1,44 @@
+/* Copy piece of UTF-8/UTF-16/UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <string.h>
+
+UNIT *
+FUNC (UNIT *dest, const UNIT *src, size_t n)
+{
+#if 0
+ if (dest < src)
+ {
+ UNIT *destptr = dest;
+ const UNIT *srcptr = src;
+
+ for (; n > 0; n--)
+ *destptr++ = *srcptr++;
+ }
+ else if (dest > src)
+ {
+ UNIT *destptr = dest + n - 1;
+ const UNIT *srcptr = src + n - 1;
+
+ for (; n > 0; n--)
+ *destptr-- = *srcptr--;
+ }
+#else
+ memmove ((char *) dest, (const char *) src, n * sizeof (UNIT));
+#endif
+ return dest;
+}
diff --git a/lib/unistr/u-set.h b/lib/unistr/u-set.h
new file mode 100644
index 00000000..a093e7f6
--- /dev/null
+++ b/lib/unistr/u-set.h
@@ -0,0 +1,39 @@
+/* Fill UTF-8/UTF-16/UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+
+UNIT *
+FUNC (UNIT *s, ucs4_t uc, size_t n)
+{
+ if (n > 0)
+ {
+ if (IS_SINGLE_UNIT (uc))
+ {
+ UNIT *ptr = s;
+
+ for (; n > 0; n--)
+ *ptr++ = uc;
+ }
+ else
+ {
+ errno = EILSEQ;
+ return NULL;
+ }
+ }
+ return s;
+}
diff --git a/lib/unistr/u-startswith.h b/lib/unistr/u-startswith.h
new file mode 100644
index 00000000..0486ef88
--- /dev/null
+++ b/lib/unistr/u-startswith.h
@@ -0,0 +1,30 @@
+/* Substring test for UTF-8/UTF-16/UTF-32 strings.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+bool
+FUNC (const UNIT *str, const UNIT *prefix)
+{
+ for (;;)
+ {
+ UNIT uc1 = *str++;
+ UNIT uc2 = *prefix++;
+ if (uc2 == 0)
+ return true;
+ if (uc1 != uc2)
+ return false;
+ }
+}
diff --git a/lib/unistr/u-stpcpy.h b/lib/unistr/u-stpcpy.h
new file mode 100644
index 00000000..b13e816f
--- /dev/null
+++ b/lib/unistr/u-stpcpy.h
@@ -0,0 +1,24 @@
+/* Copy UTF-8/UTF-16/UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+UNIT *
+FUNC (UNIT *dest, const UNIT *src)
+{
+ for (; (*dest = *src) != 0; src++, dest++)
+ ;
+ return dest;
+}
diff --git a/lib/unistr/u-stpncpy.h b/lib/unistr/u-stpncpy.h
new file mode 100644
index 00000000..09bf434c
--- /dev/null
+++ b/lib/unistr/u-stpncpy.h
@@ -0,0 +1,30 @@
+/* Copy UTF-8/UTF-16/UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+UNIT *
+FUNC (UNIT *dest, const UNIT *src, size_t n)
+{
+ for (; n > 0 && (*dest = *src) != 0; src++, dest++, n--)
+ ;
+
+ /* This behavior is rarely useful, but it is here for consistency with
+ strncpy and wcsncpy. */
+ for (; n > 0; n--)
+ *dest++ = 0;
+
+ return dest - 1;
+}
diff --git a/lib/unistr/u-strcat.h b/lib/unistr/u-strcat.h
new file mode 100644
index 00000000..e86bbf99
--- /dev/null
+++ b/lib/unistr/u-strcat.h
@@ -0,0 +1,26 @@
+/* Concatenate UTF-8/UTF-16/UTF-32 strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+UNIT *
+FUNC (UNIT *dest, const UNIT *src)
+{
+ UNIT *destptr = dest + U_STRLEN (dest);
+
+ for (; (*destptr = *src) != 0; src++, destptr++)
+ ;
+ return dest;
+}
diff --git a/lib/unistr/u-strcoll.h b/lib/unistr/u-strcoll.h
new file mode 100644
index 00000000..af404a04
--- /dev/null
+++ b/lib/unistr/u-strcoll.h
@@ -0,0 +1,81 @@
+/* Compare UTF-8/UTF-16/UTF-32 strings using the collation rules of the current
+ locale.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+int
+FUNC (const UNIT *s1, const UNIT *s2)
+{
+ /* When this function succeeds, it sets errno back to its original value.
+ When it fails, it sets errno, but also returns a meaningful return value,
+ for the sake of callers which ignore errno. */
+ int final_errno = errno;
+ char *sl1;
+ char *sl2;
+ int result;
+
+ sl1 = U_STRCONV_TO_LOCALE (s1);
+ if (sl1 != NULL)
+ {
+ sl2 = U_STRCONV_TO_LOCALE (s2);
+ if (sl2 != NULL)
+ {
+ /* Compare sl1 and sl2. */
+ errno = 0;
+ result = strcoll (sl1, sl2);
+ if (errno == 0)
+ {
+ /* strcoll succeeded. */
+ free (sl1);
+ free (sl2);
+ }
+ else
+ {
+ /* strcoll failed. */
+ final_errno = errno;
+ free (sl1);
+ free (sl2);
+ result = U_STRCMP (s1, s2);
+ }
+ }
+ else
+ {
+ /* s1 could be converted to locale encoding, s2 not. */
+ final_errno = errno;
+ free (sl1);
+ result = -1;
+ }
+ }
+ else
+ {
+ final_errno = errno;
+ sl2 = U_STRCONV_TO_LOCALE (s2);
+ if (sl2 != NULL)
+ {
+ /* s2 could be converted to locale encoding, s1 not. */
+ free (sl2);
+ result = 1;
+ }
+ else
+ {
+ /* Neither s1 nor s2 could be converted to locale encoding. */
+ result = U_STRCMP (s1, s2);
+ }
+ }
+
+ errno = final_errno;
+ return result;
+}
diff --git a/lib/unistr/u-strcpy.h b/lib/unistr/u-strcpy.h
new file mode 100644
index 00000000..153f60ec
--- /dev/null
+++ b/lib/unistr/u-strcpy.h
@@ -0,0 +1,26 @@
+/* Copy UTF-8/UTF-16/UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+UNIT *
+FUNC (UNIT *dest, const UNIT *src)
+{
+ UNIT *destptr = dest;
+
+ for (; (*destptr = *src) != 0; src++, destptr++)
+ ;
+ return dest;
+}
diff --git a/lib/unistr/u-strcspn.h b/lib/unistr/u-strcspn.h
new file mode 100644
index 00000000..de326563
--- /dev/null
+++ b/lib/unistr/u-strcspn.h
@@ -0,0 +1,54 @@
+/* Search for some characters in UTF-8/UTF-16/UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+size_t
+FUNC (const UNIT *str, const UNIT *reject)
+{
+ /* Optimize two cases. */
+ if (reject[0] == 0)
+ return U_STRLEN (str);
+ {
+ ucs4_t uc;
+ int count = U_STRMBTOUC (&uc, reject);
+ if (count >= 0 && reject[count] == 0)
+ {
+ const UNIT *found = U_STRCHR (str, uc);
+ if (found != NULL)
+ return found - str;
+ else
+ return U_STRLEN (str);
+ }
+ }
+ /* General case. */
+ {
+ const UNIT *ptr = str;
+
+ for (;;)
+ {
+ ucs4_t uc;
+ int count = U_STRMBTOUC (&uc, ptr);
+ if (count == 0)
+ return ptr - str;
+ if (count < 0)
+ break;
+ if (U_STRCHR (reject, uc))
+ return ptr - str;
+ ptr += count;
+ }
+ return U_STRLEN (str);
+ }
+}
diff --git a/lib/unistr/u-strdup.h b/lib/unistr/u-strdup.h
new file mode 100644
index 00000000..71e527a7
--- /dev/null
+++ b/lib/unistr/u-strdup.h
@@ -0,0 +1,40 @@
+/* Copy UTF-8/UTF-16/UTF-32 string.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <stdlib.h>
+#include <string.h>
+
+UNIT *
+FUNC (const UNIT *s)
+{
+ size_t n = U_STRLEN (s) + 1;
+ UNIT *dest;
+
+ dest = (UNIT *) malloc (n * sizeof (UNIT));
+ if (dest != NULL)
+ {
+#if 0
+ UNIT *destptr = dest;
+
+ for (; n > 0; n--)
+ *destptr++ = *s++;
+#else
+ memcpy ((char *) dest, (const char *) s, n * sizeof (UNIT));
+#endif
+ }
+ return dest;
+}
diff --git a/lib/unistr/u-strlen.h b/lib/unistr/u-strlen.h
new file mode 100644
index 00000000..51dcae00
--- /dev/null
+++ b/lib/unistr/u-strlen.h
@@ -0,0 +1,26 @@
+/* Determine length of UTF-8/UTF-16/UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+size_t
+FUNC (const UNIT *s)
+{
+ const UNIT *ptr;
+
+ for (ptr = s; *ptr != 0; ptr++)
+ ;
+ return ptr - s;
+}
diff --git a/lib/unistr/u-strncat.h b/lib/unistr/u-strncat.h
new file mode 100644
index 00000000..40b442ec
--- /dev/null
+++ b/lib/unistr/u-strncat.h
@@ -0,0 +1,28 @@
+/* Concatenate UTF-8/UTF-16/UTF-32 strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+UNIT *
+FUNC (UNIT *dest, const UNIT *src, size_t n)
+{
+ UNIT *destptr = dest + U_STRLEN (dest);
+
+ for (; n > 0 && (*destptr = *src) != 0; src++, destptr++, n--)
+ ;
+ if (n == 0)
+ *destptr = 0;
+ return dest;
+}
diff --git a/lib/unistr/u-strncpy.h b/lib/unistr/u-strncpy.h
new file mode 100644
index 00000000..3d441b51
--- /dev/null
+++ b/lib/unistr/u-strncpy.h
@@ -0,0 +1,32 @@
+/* Copy UTF-8/UTF-16/UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+UNIT *
+FUNC (UNIT *dest, const UNIT *src, size_t n)
+{
+ UNIT *destptr = dest;
+
+ for (; n > 0 && (*destptr = *src) != 0; src++, destptr++, n--)
+ ;
+
+ /* This behavior is rarely useful, but it is here for consistency with
+ strncpy and wcsncpy. */
+ for (; n > 0; n--)
+ *destptr++ = 0;
+
+ return dest;
+}
diff --git a/lib/unistr/u-strnlen.h b/lib/unistr/u-strnlen.h
new file mode 100644
index 00000000..6a1d2ad2
--- /dev/null
+++ b/lib/unistr/u-strnlen.h
@@ -0,0 +1,26 @@
+/* Determine bounded length of UTF-8/UTF-16/UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+size_t
+FUNC (const UNIT *s, size_t maxlen)
+{
+ const UNIT *ptr;
+
+ for (ptr = s; maxlen > 0 && *ptr != 0; ptr++, maxlen--)
+ ;
+ return ptr - s;
+}
diff --git a/lib/unistr/u-strpbrk.h b/lib/unistr/u-strpbrk.h
new file mode 100644
index 00000000..2ff46182
--- /dev/null
+++ b/lib/unistr/u-strpbrk.h
@@ -0,0 +1,46 @@
+/* Search for some characters in UTF-8/UTF-16/UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+UNIT *
+FUNC (const UNIT *str, const UNIT *accept)
+{
+ /* Optimize two cases. */
+ if (accept[0] == 0)
+ return NULL;
+ {
+ ucs4_t uc;
+ int count = U_STRMBTOUC (&uc, accept);
+ if (count >= 0 && accept[count] == 0)
+ return U_STRCHR (str, uc);
+ }
+ /* General case. */
+ {
+ const UNIT *ptr = str;
+
+ for (;;)
+ {
+ ucs4_t uc;
+ int count = U_STRMBTOUC (&uc, ptr);
+ if (count <= 0)
+ break;
+ if (U_STRCHR (accept, uc))
+ return (UNIT *) ptr;
+ ptr += count;
+ }
+ return NULL;
+ }
+}
diff --git a/lib/unistr/u-strspn.h b/lib/unistr/u-strspn.h
new file mode 100644
index 00000000..6502ce4b
--- /dev/null
+++ b/lib/unistr/u-strspn.h
@@ -0,0 +1,54 @@
+/* Search for some characters in UTF-8/UTF-16/UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+size_t
+FUNC (const UNIT *str, const UNIT *accept)
+{
+ /* Optimize two cases. */
+ if (accept[0] == 0)
+ return 0;
+ {
+ ucs4_t uc;
+ int count = U_STRMBTOUC (&uc, accept);
+ if (count >= 0 && accept[count] == 0)
+ {
+ const UNIT *ptr = str;
+ for (; *ptr != 0; ptr += count)
+ if (U_CMP (ptr, accept, count) != 0)
+ break;
+ return ptr - str;
+ }
+ }
+ /* General case. */
+ {
+ const UNIT *ptr = str;
+
+ for (;;)
+ {
+ ucs4_t uc;
+ int count = U_STRMBTOUC (&uc, ptr);
+ if (count == 0)
+ return ptr - str;
+ if (count < 0)
+ break;
+ if (!U_STRCHR (accept, uc))
+ return ptr - str;
+ ptr += count;
+ }
+ return U_STRLEN (str);
+ }
+}
diff --git a/lib/unistr/u-strstr.h b/lib/unistr/u-strstr.h
new file mode 100644
index 00000000..55b5a31d
--- /dev/null
+++ b/lib/unistr/u-strstr.h
@@ -0,0 +1,49 @@
+/* Substring test for UTF-8/UTF-16/UTF-32 strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+UNIT *
+FUNC (const UNIT *haystack, const UNIT *needle)
+{
+ UNIT first = needle[0];
+
+ /* Is needle empty? */
+ if (first == 0)
+ return (UNIT *) haystack;
+
+ /* Is needle nearly empty? */
+ if (needle[1] == 0)
+ return U_STRCHR (haystack, first);
+
+ /* Search for needle's first unit. */
+ for (; *haystack != 0; haystack++)
+ if (*haystack == first)
+ {
+ /* Compare with needle's remaining units. */
+ const UNIT *hptr = haystack + 1;
+ const UNIT *nptr = needle + 1;
+ for (;;)
+ {
+ if (*hptr != *nptr)
+ break;
+ hptr++; nptr++;
+ if (*nptr == 0)
+ return (UNIT *) haystack;
+ }
+ }
+
+ return NULL;
+}
diff --git a/lib/unistr/u-strtok.h b/lib/unistr/u-strtok.h
new file mode 100644
index 00000000..7ed57d6f
--- /dev/null
+++ b/lib/unistr/u-strtok.h
@@ -0,0 +1,52 @@
+/* Tokenize UTF-8/UTF-16/UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+UNIT *
+FUNC (UNIT *str, const UNIT *delim, UNIT **ptr)
+{
+ if (str == NULL)
+ {
+ str = *ptr;
+ if (str == NULL)
+ return NULL; /* reminder that end of token sequence has been reached */
+ }
+
+ /* Skip leading delimiters. */
+ str += U_STRSPN (str, delim);
+
+ /* Found a token? */
+ if (*str == 0)
+ {
+ *ptr = NULL;
+ return NULL;
+ }
+
+ /* Move past the token. */
+ {
+ UNIT *token_end = U_STRPBRK (str, delim);
+ if (token_end)
+ {
+ /* NUL-terminate the token. */
+ *token_end = 0;
+ *ptr = token_end + 1;
+ }
+ else
+ *ptr = NULL;
+ }
+
+ return str;
+}
diff --git a/lib/unistr/u16-check.c b/lib/unistr/u16-check.c
new file mode 100644
index 00000000..380cec2c
--- /dev/null
+++ b/lib/unistr/u16-check.c
@@ -0,0 +1,51 @@
+/* Check UTF-16 string.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+const uint16_t *
+u16_check (const uint16_t *s, size_t n)
+{
+ const uint16_t *s_end = s + n;
+
+ while (s < s_end)
+ {
+ /* Keep in sync with unistr.h and utf16-ucs4.c. */
+ uint16_t c = *s;
+
+ if (c < 0xd800 || c >= 0xe000)
+ {
+ s++;
+ continue;
+ }
+ if (c < 0xdc00)
+ {
+ if (s + 2 <= s_end
+ && s[1] >= 0xdc00 && s[1] < 0xe000)
+ {
+ s += 2;
+ continue;
+ }
+ }
+ /* invalid or incomplete multibyte character */
+ return s;
+ }
+ return NULL;
+}
diff --git a/lib/unistr/u16-chr.c b/lib/unistr/u16-chr.c
new file mode 100644
index 00000000..2d7d797e
--- /dev/null
+++ b/lib/unistr/u16-chr.c
@@ -0,0 +1,56 @@
+/* Search character in piece of UTF-16 string.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+uint16_t *
+u16_chr (const uint16_t *s, size_t n, ucs4_t uc)
+{
+ uint16_t c[2];
+
+ if (uc < 0x10000)
+ {
+ uint16_t c0 = uc;
+
+ for (; n > 0; s++, n--)
+ {
+ if (*s == c0)
+ return (uint16_t *) s;
+ }
+ }
+ else
+ switch (u16_uctomb_aux (c, uc, 2))
+ {
+ case 2:
+ if (n > 1)
+ {
+ uint16_t c0 = c[0];
+ uint16_t c1 = c[1];
+
+ for (n--; n > 0; s++, n--)
+ {
+ if (*s == c0 && s[1] == c1)
+ return (uint16_t *) s;
+ }
+ }
+ break;
+ }
+ return NULL;
+}
diff --git a/lib/unistr/u16-cmp.c b/lib/unistr/u16-cmp.c
new file mode 100644
index 00000000..0130d271
--- /dev/null
+++ b/lib/unistr/u16-cmp.c
@@ -0,0 +1,54 @@
+/* Compare pieces of UTF-16 strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u16_cmp (const uint16_t *s1, const uint16_t *s2, size_t n)
+{
+ /* Note that the UTF-16 encoding does NOT preserve lexicographic order.
+ Namely, if uc1 is a 16-bit character and [uc2a,uc2b] is a surrogate pair,
+ we must enforce uc1 < [uc2a,uc2b], even if uc1 > uc2a. */
+ for (; n > 0;)
+ {
+ uint16_t c1 = *s1++;
+ uint16_t c2 = *s2++;
+ if (c1 == c2)
+ {
+ n--;
+ continue;
+ }
+ if (c1 < 0xd800 || c1 >= 0xe000)
+ {
+ if (!(c2 < 0xd800 || c2 >= 0xe000))
+ /* c2 is a surrogate, but c1 is not. */
+ return -1;
+ }
+ else
+ {
+ if (c2 < 0xd800 || c2 >= 0xe000)
+ /* c1 is a surrogate, but c2 is not. */
+ return 1;
+ }
+ return (int)c1 - (int)c2;
+ /* > 0 if c1 > c2, < 0 if c1 < c2. */
+ }
+ return 0;
+}
diff --git a/lib/unistr/u16-cmp2.c b/lib/unistr/u16-cmp2.c
new file mode 100644
index 00000000..766dcd2d
--- /dev/null
+++ b/lib/unistr/u16-cmp2.c
@@ -0,0 +1,28 @@
+/* Compare pieces of UTF-16 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#include "minmax.h"
+
+#define FUNC u16_cmp2
+#define UNIT uint16_t
+#define U_CMP u16_cmp
+#include "u-cmp2.h"
diff --git a/lib/unistr/u16-cpy-alloc.c b/lib/unistr/u16-cpy-alloc.c
new file mode 100644
index 00000000..047977eb
--- /dev/null
+++ b/lib/unistr/u16-cpy-alloc.c
@@ -0,0 +1,25 @@
+/* Copy piece of UTF-16 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_cpy_alloc
+#define UNIT uint16_t
+#include "u-cpy-alloc.h"
diff --git a/lib/unistr/u16-cpy.c b/lib/unistr/u16-cpy.c
new file mode 100644
index 00000000..13e04b81
--- /dev/null
+++ b/lib/unistr/u16-cpy.c
@@ -0,0 +1,25 @@
+/* Copy piece of UTF-16 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_cpy
+#define UNIT uint16_t
+#include "u-cpy.h"
diff --git a/lib/unistr/u16-endswith.c b/lib/unistr/u16-endswith.c
new file mode 100644
index 00000000..d9abf464
--- /dev/null
+++ b/lib/unistr/u16-endswith.c
@@ -0,0 +1,27 @@
+/* Substring test for UTF-16 strings.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_endswith
+#define UNIT uint16_t
+#define U_STRLEN u16_strlen
+#define U_CMP u16_cmp
+#include "u-endswith.h"
diff --git a/lib/unistr/u16-mblen.c b/lib/unistr/u16-mblen.c
new file mode 100644
index 00000000..6bb35ac8
--- /dev/null
+++ b/lib/unistr/u16-mblen.c
@@ -0,0 +1,49 @@
+/* Look at first character in UTF-16 string.
+ Copyright (C) 1999-2000, 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u16_mblen (const uint16_t *s, size_t n)
+{
+ if (n > 0)
+ {
+ /* Keep in sync with unistr.h and utf16-ucs4.c. */
+ uint16_t c = *s;
+
+ if (c < 0xd800 || c >= 0xe000)
+ return (c != 0 ? 1 : 0);
+#if CONFIG_UNICODE_SAFETY
+ if (c < 0xdc00)
+ {
+ if (n >= 2
+ && s[1] >= 0xdc00 && s[1] < 0xe000)
+ return 2;
+ }
+#else
+ {
+ if (n >= 2)
+ return 2;
+ }
+#endif
+ }
+ /* invalid or incomplete multibyte character */
+ return -1;
+}
diff --git a/lib/unistr/u16-mbsnlen.c b/lib/unistr/u16-mbsnlen.c
new file mode 100644
index 00000000..881958e1
--- /dev/null
+++ b/lib/unistr/u16-mbsnlen.c
@@ -0,0 +1,39 @@
+/* Count characters in UTF-16 string.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+size_t
+u16_mbsnlen (const uint16_t *s, size_t n)
+{
+ size_t characters;
+
+ characters = 0;
+ while (n > 0)
+ {
+ int count = u16_mblen (s, n);
+ if (count <= 0)
+ count = 1;
+ s += count;
+ n -= count;
+ characters++;
+ }
+ return characters;
+}
diff --git a/lib/unistr/u16-mbtouc-aux.c b/lib/unistr/u16-mbtouc-aux.c
new file mode 100644
index 00000000..5f35b867
--- /dev/null
+++ b/lib/unistr/u16-mbtouc-aux.c
@@ -0,0 +1,51 @@
+/* Conversion UTF-16 to UCS-4.
+ Copyright (C) 2001-2002, 2006-2007, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#if defined IN_LIBUNISTRING || HAVE_INLINE
+
+int
+u16_mbtouc_aux (ucs4_t *puc, const uint16_t *s, size_t n)
+{
+ uint16_t c = *s;
+
+ if (c < 0xdc00)
+ {
+ if (n >= 2)
+ {
+ if (s[1] >= 0xdc00 && s[1] < 0xe000)
+ {
+ *puc = 0x10000 + ((c - 0xd800) << 10) + (s[1] - 0xdc00);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ }
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
diff --git a/lib/unistr/u16-mbtouc-unsafe-aux.c b/lib/unistr/u16-mbtouc-unsafe-aux.c
new file mode 100644
index 00000000..9906e301
--- /dev/null
+++ b/lib/unistr/u16-mbtouc-unsafe-aux.c
@@ -0,0 +1,55 @@
+/* Conversion UTF-16 to UCS-4.
+ Copyright (C) 2001-2002, 2006-2007, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#if defined IN_LIBUNISTRING || HAVE_INLINE
+
+int
+u16_mbtouc_unsafe_aux (ucs4_t *puc, const uint16_t *s, size_t n)
+{
+ uint16_t c = *s;
+
+#if CONFIG_UNICODE_SAFETY
+ if (c < 0xdc00)
+#endif
+ {
+ if (n >= 2)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if (s[1] >= 0xdc00 && s[1] < 0xe000)
+#endif
+ {
+ *puc = 0x10000 + ((c - 0xd800) << 10) + (s[1] - 0xdc00);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ }
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
diff --git a/lib/unistr/u16-mbtouc-unsafe.c b/lib/unistr/u16-mbtouc-unsafe.c
new file mode 100644
index 00000000..cc858d88
--- /dev/null
+++ b/lib/unistr/u16-mbtouc-unsafe.c
@@ -0,0 +1,66 @@
+/* Look at first character in UTF-16 string.
+ Copyright (C) 1999-2002, 2006-2007, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#if defined IN_LIBUNISTRING
+/* Tell unistr.h to declare u16_mbtouc_unsafe as 'extern', not
+ 'static inline'. */
+# include "unistring-notinline.h"
+#endif
+
+/* Specification. */
+#include "unistr.h"
+
+#if !HAVE_INLINE
+
+int
+u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n)
+{
+ uint16_t c = *s;
+
+ if (c < 0xd800 || c >= 0xe000)
+ {
+ *puc = c;
+ return 1;
+ }
+#if CONFIG_UNICODE_SAFETY
+ if (c < 0xdc00)
+#endif
+ {
+ if (n >= 2)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if (s[1] >= 0xdc00 && s[1] < 0xe000)
+#endif
+ {
+ *puc = 0x10000 + ((c - 0xd800) << 10) + (s[1] - 0xdc00);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ }
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
diff --git a/lib/unistr/u16-mbtouc.c b/lib/unistr/u16-mbtouc.c
new file mode 100644
index 00000000..2691db83
--- /dev/null
+++ b/lib/unistr/u16-mbtouc.c
@@ -0,0 +1,61 @@
+/* Look at first character in UTF-16 string.
+ Copyright (C) 1999-2002, 2006-2007, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#if defined IN_LIBUNISTRING
+/* Tell unistr.h to declare u16_mbtouc as 'extern', not 'static inline'. */
+# include "unistring-notinline.h"
+#endif
+
+/* Specification. */
+#include "unistr.h"
+
+#if !HAVE_INLINE
+
+int
+u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n)
+{
+ uint16_t c = *s;
+
+ if (c < 0xd800 || c >= 0xe000)
+ {
+ *puc = c;
+ return 1;
+ }
+ if (c < 0xdc00)
+ {
+ if (n >= 2)
+ {
+ if (s[1] >= 0xdc00 && s[1] < 0xe000)
+ {
+ *puc = 0x10000 + ((c - 0xd800) << 10) + (s[1] - 0xdc00);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ }
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
diff --git a/lib/unistr/u16-mbtoucr.c b/lib/unistr/u16-mbtoucr.c
new file mode 100644
index 00000000..a1bd8ee9
--- /dev/null
+++ b/lib/unistr/u16-mbtoucr.c
@@ -0,0 +1,54 @@
+/* Look at first character in UTF-16 string, returning an error code.
+ Copyright (C) 1999-2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u16_mbtoucr (ucs4_t *puc, const uint16_t *s, size_t n)
+{
+ uint16_t c = *s;
+
+ if (c < 0xd800 || c >= 0xe000)
+ {
+ *puc = c;
+ return 1;
+ }
+ if (c < 0xdc00)
+ {
+ if (n >= 2)
+ {
+ if (s[1] >= 0xdc00 && s[1] < 0xe000)
+ {
+ *puc = 0x10000 + ((c - 0xd800) << 10) + (s[1] - 0xdc00);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return -2;
+ }
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return -1;
+}
diff --git a/lib/unistr/u16-move.c b/lib/unistr/u16-move.c
new file mode 100644
index 00000000..2bf8c619
--- /dev/null
+++ b/lib/unistr/u16-move.c
@@ -0,0 +1,25 @@
+/* Copy piece of UTF-16 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_move
+#define UNIT uint16_t
+#include "u-move.h"
diff --git a/lib/unistr/u16-next.c b/lib/unistr/u16-next.c
new file mode 100644
index 00000000..7c49f72f
--- /dev/null
+++ b/lib/unistr/u16-next.c
@@ -0,0 +1,37 @@
+/* Iterate over next character in UTF-16 string.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+const uint16_t *
+u16_next (ucs4_t *puc, const uint16_t *s)
+{
+ int count;
+
+ count = u16_strmbtouc (puc, s);
+ if (count > 0)
+ return s + count;
+ else
+ {
+ if (count < 0)
+ *puc = 0xfffd;
+ return NULL;
+ }
+}
diff --git a/lib/unistr/u16-prev.c b/lib/unistr/u16-prev.c
new file mode 100644
index 00000000..3beecf01
--- /dev/null
+++ b/lib/unistr/u16-prev.c
@@ -0,0 +1,53 @@
+/* Iterate over previous character in UTF-16 string.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+const uint16_t *
+u16_prev (ucs4_t *puc, const uint16_t *s, const uint16_t *start)
+{
+ /* Keep in sync with unistr.h and utf16-ucs4.c. */
+ if (s != start)
+ {
+ uint16_t c_1 = s[-1];
+
+ if (c_1 < 0xd800 || c_1 >= 0xe000)
+ {
+ *puc = c_1;
+ return s - 1;
+ }
+#if CONFIG_UNICODE_SAFETY
+ if (c_1 >= 0xdc00)
+#endif
+ if (s - 1 != start)
+ {
+ uint16_t c_2 = s[-2];
+
+#if CONFIG_UNICODE_SAFETY
+ if (c_2 >= 0xd800 && c_2 < 0xdc00)
+#endif
+ {
+ *puc = 0x10000 + ((c_2 - 0xd800) << 10) + (c_1 - 0xdc00);
+ return s - 2;
+ }
+ }
+ }
+ return NULL;
+}
diff --git a/lib/unistr/u16-set.c b/lib/unistr/u16-set.c
new file mode 100644
index 00000000..9ef307f2
--- /dev/null
+++ b/lib/unistr/u16-set.c
@@ -0,0 +1,26 @@
+/* Fill UTF-16 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_set
+#define UNIT uint16_t
+#define IS_SINGLE_UNIT(uc) (uc < 0xd800 || (uc < 0x10000 && uc >= 0xe000))
+#include "u-set.h"
diff --git a/lib/unistr/u16-startswith.c b/lib/unistr/u16-startswith.c
new file mode 100644
index 00000000..2f39d74f
--- /dev/null
+++ b/lib/unistr/u16-startswith.c
@@ -0,0 +1,25 @@
+/* Substring test for UTF-16 strings.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_startswith
+#define UNIT uint16_t
+#include "u-startswith.h"
diff --git a/lib/unistr/u16-stpcpy.c b/lib/unistr/u16-stpcpy.c
new file mode 100644
index 00000000..9207edc1
--- /dev/null
+++ b/lib/unistr/u16-stpcpy.c
@@ -0,0 +1,25 @@
+/* Copy UTF-16 string.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_stpcpy
+#define UNIT uint16_t
+#include "u-stpcpy.h"
diff --git a/lib/unistr/u16-stpncpy.c b/lib/unistr/u16-stpncpy.c
new file mode 100644
index 00000000..30ef7e30
--- /dev/null
+++ b/lib/unistr/u16-stpncpy.c
@@ -0,0 +1,25 @@
+/* Copy UTF-16 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_stpncpy
+#define UNIT uint16_t
+#include "u-stpncpy.h"
diff --git a/lib/unistr/u16-strcat.c b/lib/unistr/u16-strcat.c
new file mode 100644
index 00000000..bb88f1b5
--- /dev/null
+++ b/lib/unistr/u16-strcat.c
@@ -0,0 +1,26 @@
+/* Concatenate UTF-16 strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_strcat
+#define UNIT uint16_t
+#define U_STRLEN u16_strlen
+#include "u-strcat.h"
diff --git a/lib/unistr/u16-strchr.c b/lib/unistr/u16-strchr.c
new file mode 100644
index 00000000..673152f9
--- /dev/null
+++ b/lib/unistr/u16-strchr.c
@@ -0,0 +1,63 @@
+/* Search character in UTF-16 string.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+uint16_t *
+u16_strchr (const uint16_t *s, ucs4_t uc)
+{
+ uint16_t c[2];
+
+ if (uc < 0x10000)
+ {
+ uint16_t c0 = uc;
+
+ for (;; s++)
+ {
+ if (*s == c0)
+ break;
+ if (*s == 0)
+ goto notfound;
+ }
+ return (uint16_t *) s;
+ }
+ else
+ switch (u16_uctomb_aux (c, uc, 2))
+ {
+ case 2:
+ if (*s == 0)
+ goto notfound;
+ {
+ uint16_t c0 = c[0];
+ uint16_t c1 = c[1];
+
+ for (;; s++)
+ {
+ if (s[1] == 0)
+ goto notfound;
+ if (*s == c0 && s[1] == c1)
+ break;
+ }
+ return (uint16_t *) s;
+ }
+ }
+notfound:
+ return NULL;
+}
diff --git a/lib/unistr/u16-strcmp.c b/lib/unistr/u16-strcmp.c
new file mode 100644
index 00000000..c161c65b
--- /dev/null
+++ b/lib/unistr/u16-strcmp.c
@@ -0,0 +1,50 @@
+/* Compare UTF-16 strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u16_strcmp (const uint16_t *s1, const uint16_t *s2)
+{
+ /* Note that the UTF-16 encoding does NOT preserve lexicographic order.
+ Namely, if uc1 is a 16-bit character and [uc2a,uc2b] is a surrogate pair,
+ we must enforce uc1 < [uc2a,uc2b], even if uc1 > uc2a. */
+ for (;;)
+ {
+ uint16_t c1 = *s1++;
+ uint16_t c2 = *s2++;
+ if (c1 != 0 && c1 == c2)
+ continue;
+ if (c1 < 0xd800 || c1 >= 0xe000)
+ {
+ if (!(c2 < 0xd800 || c2 >= 0xe000))
+ /* c2 is a surrogate, but c1 is not. */
+ return -1;
+ }
+ else
+ {
+ if (c2 < 0xd800 || c2 >= 0xe000)
+ /* c1 is a surrogate, but c2 is not. */
+ return 1;
+ }
+ return (int)c1 - (int)c2;
+ /* > 0 if c1 > c2, < 0 if c1 < c2. */
+ }
+}
diff --git a/lib/unistr/u16-strcoll.c b/lib/unistr/u16-strcoll.c
new file mode 100644
index 00000000..280ba83e
--- /dev/null
+++ b/lib/unistr/u16-strcoll.c
@@ -0,0 +1,33 @@
+/* Compare UTF-16 strings using the collation rules of the current locale.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "uniconv.h"
+
+#define FUNC u16_strcoll
+#define UNIT uint16_t
+#define U_STRCMP u16_strcmp
+#define U_STRCONV_TO_LOCALE u16_strconv_to_locale
+#include "u-strcoll.h"
diff --git a/lib/unistr/u16-strcpy.c b/lib/unistr/u16-strcpy.c
new file mode 100644
index 00000000..92c3e7ec
--- /dev/null
+++ b/lib/unistr/u16-strcpy.c
@@ -0,0 +1,25 @@
+/* Copy UTF-16 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_strcpy
+#define UNIT uint16_t
+#include "u-strcpy.h"
diff --git a/lib/unistr/u16-strcspn.c b/lib/unistr/u16-strcspn.c
new file mode 100644
index 00000000..2f5ba435
--- /dev/null
+++ b/lib/unistr/u16-strcspn.c
@@ -0,0 +1,28 @@
+/* Search for some characters in UTF-16 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_strcspn
+#define UNIT uint16_t
+#define U_STRLEN u16_strlen
+#define U_STRMBTOUC u16_strmbtouc
+#define U_STRCHR u16_strchr
+#include "u-strcspn.h"
diff --git a/lib/unistr/u16-strdup.c b/lib/unistr/u16-strdup.c
new file mode 100644
index 00000000..22242c29
--- /dev/null
+++ b/lib/unistr/u16-strdup.c
@@ -0,0 +1,26 @@
+/* Copy UTF-16 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_strdup
+#define UNIT uint16_t
+#define U_STRLEN u16_strlen
+#include "u-strdup.h"
diff --git a/lib/unistr/u16-strlen.c b/lib/unistr/u16-strlen.c
new file mode 100644
index 00000000..9c05541c
--- /dev/null
+++ b/lib/unistr/u16-strlen.c
@@ -0,0 +1,25 @@
+/* Determine length of UTF-16 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_strlen
+#define UNIT uint16_t
+#include "u-strlen.h"
diff --git a/lib/unistr/u16-strmblen.c b/lib/unistr/u16-strmblen.c
new file mode 100644
index 00000000..e7f36250
--- /dev/null
+++ b/lib/unistr/u16-strmblen.c
@@ -0,0 +1,43 @@
+/* Look at first character in UTF-16 string.
+ Copyright (C) 1999-2000, 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u16_strmblen (const uint16_t *s)
+{
+ /* Keep in sync with unistr.h and utf16-ucs4.c. */
+ uint16_t c = *s;
+
+ if (c < 0xd800 || c >= 0xe000)
+ return (c != 0 ? 1 : 0);
+#if CONFIG_UNICODE_SAFETY
+ if (c < 0xdc00)
+ {
+ if (s[1] >= 0xdc00 && s[1] < 0xe000)
+ return 2;
+ }
+#else
+ if (s[1] != 0)
+ return 2;
+#endif
+ /* invalid or incomplete multibyte character */
+ return -1;
+}
diff --git a/lib/unistr/u16-strmbtouc.c b/lib/unistr/u16-strmbtouc.c
new file mode 100644
index 00000000..78d482ee
--- /dev/null
+++ b/lib/unistr/u16-strmbtouc.c
@@ -0,0 +1,50 @@
+/* Look at first character in UTF-16 string.
+ Copyright (C) 1999-2000, 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u16_strmbtouc (ucs4_t *puc, const uint16_t *s)
+{
+ /* Keep in sync with unistr.h and utf16-ucs4.c. */
+ uint16_t c = *s;
+
+ if (c < 0xd800 || c >= 0xe000)
+ {
+ *puc = c;
+ return (c != 0 ? 1 : 0);
+ }
+#if CONFIG_UNICODE_SAFETY
+ if (c < 0xdc00)
+#endif
+ {
+#if CONFIG_UNICODE_SAFETY
+ if (s[1] >= 0xdc00 && s[1] < 0xe000)
+#else
+ if (s[1] != 0)
+#endif
+ {
+ *puc = 0x10000 + ((c - 0xd800) << 10) + (s[1] - 0xdc00);
+ return 2;
+ }
+ }
+ /* invalid or incomplete multibyte character */
+ return -1;
+}
diff --git a/lib/unistr/u16-strncat.c b/lib/unistr/u16-strncat.c
new file mode 100644
index 00000000..9e14388c
--- /dev/null
+++ b/lib/unistr/u16-strncat.c
@@ -0,0 +1,26 @@
+/* Concatenate UTF-16 strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_strncat
+#define UNIT uint16_t
+#define U_STRLEN u16_strlen
+#include "u-strncat.h"
diff --git a/lib/unistr/u16-strncmp.c b/lib/unistr/u16-strncmp.c
new file mode 100644
index 00000000..7278b6f0
--- /dev/null
+++ b/lib/unistr/u16-strncmp.c
@@ -0,0 +1,54 @@
+/* Compare UTF-16 strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u16_strncmp (const uint16_t *s1, const uint16_t *s2, size_t n)
+{
+ /* Note that the UTF-16 encoding does NOT preserve lexicographic order.
+ Namely, if uc1 is a 16-bit character and [uc2a,uc2b] is a surrogate pair,
+ we must enforce uc1 < [uc2a,uc2b], even if uc1 > uc2a. */
+ for (; n > 0;)
+ {
+ uint16_t c1 = *s1++;
+ uint16_t c2 = *s2++;
+ if (c1 != 0 && c1 == c2)
+ {
+ n--;
+ continue;
+ }
+ if (c1 < 0xd800 || c1 >= 0xe000)
+ {
+ if (!(c2 < 0xd800 || c2 >= 0xe000))
+ /* c2 is a surrogate, but c1 is not. */
+ return -1;
+ }
+ else
+ {
+ if (c2 < 0xd800 || c2 >= 0xe000)
+ /* c1 is a surrogate, but c2 is not. */
+ return 1;
+ }
+ return (int)c1 - (int)c2;
+ /* > 0 if c1 > c2, < 0 if c1 < c2, = 0 if c1 and c2 are both 0. */
+ }
+ return 0;
+}
diff --git a/lib/unistr/u16-strncpy.c b/lib/unistr/u16-strncpy.c
new file mode 100644
index 00000000..65676aaa
--- /dev/null
+++ b/lib/unistr/u16-strncpy.c
@@ -0,0 +1,25 @@
+/* Copy UTF-16 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_strncpy
+#define UNIT uint16_t
+#include "u-strncpy.h"
diff --git a/lib/unistr/u16-strnlen.c b/lib/unistr/u16-strnlen.c
new file mode 100644
index 00000000..1cd80c41
--- /dev/null
+++ b/lib/unistr/u16-strnlen.c
@@ -0,0 +1,25 @@
+/* Determine bounded length of UTF-16 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_strnlen
+#define UNIT uint16_t
+#include "u-strnlen.h"
diff --git a/lib/unistr/u16-strpbrk.c b/lib/unistr/u16-strpbrk.c
new file mode 100644
index 00000000..63605819
--- /dev/null
+++ b/lib/unistr/u16-strpbrk.c
@@ -0,0 +1,27 @@
+/* Search for some characters in UTF-16 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_strpbrk
+#define UNIT uint16_t
+#define U_STRMBTOUC u16_strmbtouc
+#define U_STRCHR u16_strchr
+#include "u-strpbrk.h"
diff --git a/lib/unistr/u16-strrchr.c b/lib/unistr/u16-strrchr.c
new file mode 100644
index 00000000..b3c7ab03
--- /dev/null
+++ b/lib/unistr/u16-strrchr.c
@@ -0,0 +1,64 @@
+/* Search character in UTF-16 string.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+uint16_t *
+u16_strrchr (const uint16_t *s, ucs4_t uc)
+{
+ /* Calling u16_strlen and then searching from the other end would cause more
+ memory accesses. Avoid that, at the cost of a few more comparisons. */
+ uint16_t *result = NULL;
+ uint16_t c[2];
+
+ if (uc < 0x10000)
+ {
+ uint16_t c0 = uc;
+
+ for (;; s++)
+ {
+ if (*s == c0)
+ result = (uint16_t *) s;
+ if (*s == 0)
+ break;
+ }
+ }
+ else
+ switch (u16_uctomb_aux (c, uc, 2))
+ {
+ case 2:
+ if (*s)
+ {
+ uint16_t c0 = c[0];
+ uint16_t c1 = c[1];
+
+ /* FIXME: Maybe walking the string via u16_mblen is a win? */
+ for (;; s++)
+ {
+ if (s[1] == 0)
+ break;
+ if (*s == c0 && s[1] == c1)
+ result = (uint16_t *) s;
+ }
+ }
+ break;
+ }
+ return result;
+}
diff --git a/lib/unistr/u16-strspn.c b/lib/unistr/u16-strspn.c
new file mode 100644
index 00000000..04ba8e69
--- /dev/null
+++ b/lib/unistr/u16-strspn.c
@@ -0,0 +1,29 @@
+/* Search for some characters in UTF-16 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_strspn
+#define UNIT uint16_t
+#define U_STRLEN u16_strlen
+#define U_STRMBTOUC u16_strmbtouc
+#define U_CMP u16_cmp
+#define U_STRCHR u16_strchr
+#include "u-strspn.h"
diff --git a/lib/unistr/u16-strstr.c b/lib/unistr/u16-strstr.c
new file mode 100644
index 00000000..bc61233d
--- /dev/null
+++ b/lib/unistr/u16-strstr.c
@@ -0,0 +1,28 @@
+/* Substring test for UTF-16 strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+/* FIXME: Maybe walking the string via u16_mblen is a win? */
+
+#define FUNC u16_strstr
+#define UNIT uint16_t
+#define U_STRCHR u16_strchr
+#include "u-strstr.h"
diff --git a/lib/unistr/u16-strtok.c b/lib/unistr/u16-strtok.c
new file mode 100644
index 00000000..dd9b247d
--- /dev/null
+++ b/lib/unistr/u16-strtok.c
@@ -0,0 +1,27 @@
+/* Tokenize UTF-16 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_strtok
+#define UNIT uint16_t
+#define U_STRSPN u16_strspn
+#define U_STRPBRK u16_strpbrk
+#include "u-strtok.h"
diff --git a/lib/unistr/u16-to-u32.c b/lib/unistr/u16-to-u32.c
new file mode 100644
index 00000000..2f39dcd7
--- /dev/null
+++ b/lib/unistr/u16-to-u32.c
@@ -0,0 +1,125 @@
+/* Convert UTF-16 string to UTF-32 string.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_to_u32
+#define SRC_UNIT uint16_t
+#define DST_UNIT uint32_t
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+DST_UNIT *
+FUNC (const SRC_UNIT *s, size_t n, DST_UNIT *resultbuf, size_t *lengthp)
+{
+ const SRC_UNIT *s_end = s + n;
+ /* Output string accumulator. */
+ DST_UNIT *result;
+ size_t allocated;
+ size_t length;
+
+ if (resultbuf != NULL)
+ {
+ result = resultbuf;
+ allocated = *lengthp;
+ }
+ else
+ {
+ result = NULL;
+ allocated = 0;
+ }
+ length = 0;
+ /* Invariants:
+ result is either == resultbuf or == NULL or malloc-allocated.
+ If length > 0, then result != NULL. */
+
+ while (s < s_end)
+ {
+ ucs4_t uc;
+ int count;
+
+ /* Fetch a Unicode character from the input string. */
+ count = u16_mbtouc (&uc, s, s_end - s);
+ if (count < 0)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ errno = EILSEQ;
+ return NULL;
+ }
+ s += count;
+
+ /* Store it in the output string. */
+ if (length + 1 > allocated)
+ {
+ DST_UNIT *memory;
+
+ allocated = (allocated > 0 ? 2 * allocated : 12);
+ if (length + 1 > allocated)
+ allocated = length + 1;
+ if (result == resultbuf || result == NULL)
+ memory = (DST_UNIT *) malloc (allocated * sizeof (DST_UNIT));
+ else
+ memory =
+ (DST_UNIT *) realloc (result, allocated * sizeof (DST_UNIT));
+
+ if (memory == NULL)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ errno = ENOMEM;
+ return NULL;
+ }
+ if (result == resultbuf && length > 0)
+ memcpy ((char *) memory, (char *) result,
+ length * sizeof (DST_UNIT));
+ result = memory;
+ }
+ result[length++] = uc;
+ }
+
+ if (length == 0)
+ {
+ if (result == NULL)
+ {
+ /* Return a non-NULL value. NULL means error. */
+ result = (DST_UNIT *) malloc (1);
+ if (result == NULL)
+ {
+ errno = ENOMEM;
+ return NULL;
+ }
+ }
+ }
+ else if (result != resultbuf && length < allocated)
+ {
+ /* Shrink the allocated memory if possible. */
+ DST_UNIT *memory;
+
+ memory = (DST_UNIT *) realloc (result, length * sizeof (DST_UNIT));
+ if (memory != NULL)
+ result = memory;
+ }
+
+ *lengthp = length;
+ return result;
+}
diff --git a/lib/unistr/u16-to-u8.c b/lib/unistr/u16-to-u8.c
new file mode 100644
index 00000000..38b27ec0
--- /dev/null
+++ b/lib/unistr/u16-to-u8.c
@@ -0,0 +1,136 @@
+/* Convert UTF-16 string to UTF-8 string.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u16_to_u8
+#define SRC_UNIT uint16_t
+#define DST_UNIT uint8_t
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+DST_UNIT *
+FUNC (const SRC_UNIT *s, size_t n, DST_UNIT *resultbuf, size_t *lengthp)
+{
+ const SRC_UNIT *s_end = s + n;
+ /* Output string accumulator. */
+ DST_UNIT *result;
+ size_t allocated;
+ size_t length;
+
+ if (resultbuf != NULL)
+ {
+ result = resultbuf;
+ allocated = *lengthp;
+ }
+ else
+ {
+ result = NULL;
+ allocated = 0;
+ }
+ length = 0;
+ /* Invariants:
+ result is either == resultbuf or == NULL or malloc-allocated.
+ If length > 0, then result != NULL. */
+
+ while (s < s_end)
+ {
+ ucs4_t uc;
+ int count;
+
+ /* Fetch a Unicode character from the input string. */
+ count = u16_mbtouc (&uc, s, s_end - s);
+ if (count < 0)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ errno = EILSEQ;
+ return NULL;
+ }
+ s += count;
+
+ /* Store it in the output string. */
+ count = u8_uctomb (result + length, uc, allocated - length);
+ if (count == -1)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ errno = EILSEQ;
+ return NULL;
+ }
+ if (count == -2)
+ {
+ DST_UNIT *memory;
+
+ allocated = (allocated > 0 ? 2 * allocated : 12);
+ if (length + 6 > allocated)
+ allocated = length + 6;
+ if (result == resultbuf || result == NULL)
+ memory = (DST_UNIT *) malloc (allocated * sizeof (DST_UNIT));
+ else
+ memory =
+ (DST_UNIT *) realloc (result, allocated * sizeof (DST_UNIT));
+
+ if (memory == NULL)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ errno = ENOMEM;
+ return NULL;
+ }
+ if (result == resultbuf && length > 0)
+ memcpy ((char *) memory, (char *) result,
+ length * sizeof (DST_UNIT));
+ result = memory;
+ count = u8_uctomb (result + length, uc, allocated - length);
+ if (count < 0)
+ abort ();
+ }
+ length += count;
+ }
+
+ if (length == 0)
+ {
+ if (result == NULL)
+ {
+ /* Return a non-NULL value. NULL means error. */
+ result = (DST_UNIT *) malloc (1);
+ if (result == NULL)
+ {
+ errno = ENOMEM;
+ return NULL;
+ }
+ }
+ }
+ else if (result != resultbuf && length < allocated)
+ {
+ /* Shrink the allocated memory if possible. */
+ DST_UNIT *memory;
+
+ memory = (DST_UNIT *) realloc (result, length * sizeof (DST_UNIT));
+ if (memory != NULL)
+ result = memory;
+ }
+
+ *lengthp = length;
+ return result;
+}
diff --git a/lib/unistr/u16-uctomb-aux.c b/lib/unistr/u16-uctomb-aux.c
new file mode 100644
index 00000000..384452ba
--- /dev/null
+++ b/lib/unistr/u16-uctomb-aux.c
@@ -0,0 +1,58 @@
+/* Conversion UCS-4 to UTF-16.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u16_uctomb_aux (uint16_t *s, ucs4_t uc, int n)
+{
+ if (uc < 0xd800)
+ {
+ /* The case n >= 1 is already handled by the caller. */
+ }
+ else if (uc < 0x10000)
+ {
+ if (uc >= 0xe000)
+ {
+ if (n >= 1)
+ {
+ s[0] = uc;
+ return 1;
+ }
+ }
+ else
+ return -1;
+ }
+ else
+ {
+ if (uc < 0x110000)
+ {
+ if (n >= 2)
+ {
+ s[0] = 0xd800 + ((uc - 0x10000) >> 10);
+ s[1] = 0xdc00 + ((uc - 0x10000) & 0x3ff);
+ return 2;
+ }
+ }
+ else
+ return -1;
+ }
+ return -2;
+}
diff --git a/lib/unistr/u16-uctomb.c b/lib/unistr/u16-uctomb.c
new file mode 100644
index 00000000..6ac5ada5
--- /dev/null
+++ b/lib/unistr/u16-uctomb.c
@@ -0,0 +1,72 @@
+/* Store a character in UTF-16 string.
+ Copyright (C) 2002, 2005-2006, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#if defined IN_LIBUNISTRING
+/* Tell unistr.h to declare u16_uctomb as 'extern', not 'static inline'. */
+# include "unistring-notinline.h"
+#endif
+
+/* Specification. */
+#include "unistr.h"
+
+#if !HAVE_INLINE
+
+int
+u16_uctomb (uint16_t *s, ucs4_t uc, int n)
+{
+ if (uc < 0xd800)
+ {
+ if (n > 0)
+ {
+ s[0] = uc;
+ return 1;
+ }
+ /* else return -2, below. */
+ }
+ else if (uc < 0x10000)
+ {
+ if (uc >= 0xe000)
+ {
+ if (n >= 1)
+ {
+ s[0] = uc;
+ return 1;
+ }
+ }
+ else
+ return -1;
+ }
+ else
+ {
+ if (uc < 0x110000)
+ {
+ if (n >= 2)
+ {
+ s[0] = 0xd800 + ((uc - 0x10000) >> 10);
+ s[1] = 0xdc00 + ((uc - 0x10000) & 0x3ff);
+ return 2;
+ }
+ }
+ else
+ return -1;
+ }
+ return -2;
+}
+
+#endif
diff --git a/lib/unistr/u32-check.c b/lib/unistr/u32-check.c
new file mode 100644
index 00000000..87e91271
--- /dev/null
+++ b/lib/unistr/u32-check.c
@@ -0,0 +1,39 @@
+/* Check UTF-32 string.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+const uint32_t *
+u32_check (const uint32_t *s, size_t n)
+{
+ const uint32_t *s_end = s + n;
+
+ while (s < s_end)
+ {
+ uint32_t c = *s;
+
+ if (c < 0xd800 || (c >= 0xe000 && c < 0x110000))
+ s++;
+ else
+ /* invalid Unicode character */
+ return s;
+ }
+ return NULL;
+}
diff --git a/lib/unistr/u32-chr.c b/lib/unistr/u32-chr.c
new file mode 100644
index 00000000..5a594b25
--- /dev/null
+++ b/lib/unistr/u32-chr.c
@@ -0,0 +1,32 @@
+/* Search character in piece of UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+uint32_t *
+u32_chr (const uint32_t *s, size_t n, ucs4_t uc)
+{
+ for (; n > 0; s++, n--)
+ {
+ if (*s == uc)
+ return (uint32_t *) s;
+ }
+ return NULL;
+}
diff --git a/lib/unistr/u32-cmp.c b/lib/unistr/u32-cmp.c
new file mode 100644
index 00000000..a273b10b
--- /dev/null
+++ b/lib/unistr/u32-cmp.c
@@ -0,0 +1,40 @@
+/* Compare pieces of UTF-32 strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u32_cmp (const uint32_t *s1, const uint32_t *s2, size_t n)
+{
+ for (; n > 0;)
+ {
+ uint32_t uc1 = *s1++;
+ uint32_t uc2 = *s2++;
+ if (uc1 == uc2)
+ {
+ n--;
+ continue;
+ }
+ /* Note that uc1 and uc2 each have at most 31 bits. */
+ return (int)uc1 - (int)uc2;
+ /* > 0 if uc1 > uc2, < 0 if uc1 < uc2. */
+ }
+ return 0;
+}
diff --git a/lib/unistr/u32-cmp2.c b/lib/unistr/u32-cmp2.c
new file mode 100644
index 00000000..6924c482
--- /dev/null
+++ b/lib/unistr/u32-cmp2.c
@@ -0,0 +1,28 @@
+/* Compare pieces of UTF-32 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#include "minmax.h"
+
+#define FUNC u32_cmp2
+#define UNIT uint32_t
+#define U_CMP u32_cmp
+#include "u-cmp2.h"
diff --git a/lib/unistr/u32-cpy-alloc.c b/lib/unistr/u32-cpy-alloc.c
new file mode 100644
index 00000000..f9c69608
--- /dev/null
+++ b/lib/unistr/u32-cpy-alloc.c
@@ -0,0 +1,25 @@
+/* Copy piece of UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_cpy_alloc
+#define UNIT uint32_t
+#include "u-cpy-alloc.h"
diff --git a/lib/unistr/u32-cpy.c b/lib/unistr/u32-cpy.c
new file mode 100644
index 00000000..2493b65a
--- /dev/null
+++ b/lib/unistr/u32-cpy.c
@@ -0,0 +1,25 @@
+/* Copy piece of UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_cpy
+#define UNIT uint32_t
+#include "u-cpy.h"
diff --git a/lib/unistr/u32-endswith.c b/lib/unistr/u32-endswith.c
new file mode 100644
index 00000000..d77fa8cf
--- /dev/null
+++ b/lib/unistr/u32-endswith.c
@@ -0,0 +1,27 @@
+/* Substring test for UTF-32 strings.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_endswith
+#define UNIT uint32_t
+#define U_STRLEN u32_strlen
+#define U_CMP u32_cmp
+#include "u-endswith.h"
diff --git a/lib/unistr/u32-mblen.c b/lib/unistr/u32-mblen.c
new file mode 100644
index 00000000..a48c8b21
--- /dev/null
+++ b/lib/unistr/u32-mblen.c
@@ -0,0 +1,37 @@
+/* Look at first character in UTF-32 string.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u32_mblen (const uint32_t *s, size_t n)
+{
+ if (n > 0)
+ {
+ uint32_t c = *s;
+
+#if CONFIG_UNICODE_SAFETY
+ if (c < 0xd800 || (c >= 0xe000 && c < 0x110000))
+#endif
+ return (c != 0 ? 1 : 0);
+ }
+ /* invalid or incomplete multibyte character */
+ return -1;
+}
diff --git a/lib/unistr/u32-mbsnlen.c b/lib/unistr/u32-mbsnlen.c
new file mode 100644
index 00000000..b7a5d185
--- /dev/null
+++ b/lib/unistr/u32-mbsnlen.c
@@ -0,0 +1,27 @@
+/* Count characters in UTF-32 string.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+size_t
+u32_mbsnlen (const uint32_t *s, size_t n)
+{
+ return n;
+}
diff --git a/lib/unistr/u32-mbtouc-unsafe.c b/lib/unistr/u32-mbtouc-unsafe.c
new file mode 100644
index 00000000..4bd9e817
--- /dev/null
+++ b/lib/unistr/u32-mbtouc-unsafe.c
@@ -0,0 +1,48 @@
+/* Look at first character in UTF-32 string.
+ Copyright (C) 2002, 2006-2007, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#if defined IN_LIBUNISTRING
+/* Tell unistr.h to declare u32_mbtouc_unsafe as 'extern', not
+ 'static inline'. */
+# include "unistring-notinline.h"
+#endif
+
+/* Specification. */
+#include "unistr.h"
+
+#if !HAVE_INLINE
+
+int
+u32_mbtouc_unsafe (ucs4_t *puc, const uint32_t *s, size_t n)
+{
+ uint32_t c = *s;
+
+#if CONFIG_UNICODE_SAFETY
+ if (c < 0xd800 || (c >= 0xe000 && c < 0x110000))
+#endif
+ *puc = c;
+#if CONFIG_UNICODE_SAFETY
+ else
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+#endif
+ return 1;
+}
+
+#endif
diff --git a/lib/unistr/u32-mbtouc.c b/lib/unistr/u32-mbtouc.c
new file mode 100644
index 00000000..4eeef58c
--- /dev/null
+++ b/lib/unistr/u32-mbtouc.c
@@ -0,0 +1,43 @@
+/* Look at first character in UTF-32 string.
+ Copyright (C) 2002, 2006-2007, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#if defined IN_LIBUNISTRING
+/* Tell unistr.h to declare u32_mbtouc as 'extern', not 'static inline'. */
+# include "unistring-notinline.h"
+#endif
+
+/* Specification. */
+#include "unistr.h"
+
+#if !HAVE_INLINE
+
+int
+u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n)
+{
+ uint32_t c = *s;
+
+ if (c < 0xd800 || (c >= 0xe000 && c < 0x110000))
+ *puc = c;
+ else
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
diff --git a/lib/unistr/u32-mbtoucr.c b/lib/unistr/u32-mbtoucr.c
new file mode 100644
index 00000000..7d7993cc
--- /dev/null
+++ b/lib/unistr/u32-mbtoucr.c
@@ -0,0 +1,39 @@
+/* Look at first character in UTF-32 string, returning an error code.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u32_mbtoucr (ucs4_t *puc, const uint32_t *s, size_t n)
+{
+ uint32_t c = *s;
+
+ if (c < 0xd800 || (c >= 0xe000 && c < 0x110000))
+ {
+ *puc = c;
+ return 1;
+ }
+ else
+ {
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return -1;
+ }
+}
diff --git a/lib/unistr/u32-move.c b/lib/unistr/u32-move.c
new file mode 100644
index 00000000..d6c08f4b
--- /dev/null
+++ b/lib/unistr/u32-move.c
@@ -0,0 +1,25 @@
+/* Copy piece of UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_move
+#define UNIT uint32_t
+#include "u-move.h"
diff --git a/lib/unistr/u32-next.c b/lib/unistr/u32-next.c
new file mode 100644
index 00000000..c529295c
--- /dev/null
+++ b/lib/unistr/u32-next.c
@@ -0,0 +1,39 @@
+/* Iterate over next character in UTF-32 string.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+const uint32_t *
+u32_next (ucs4_t *puc, const uint32_t *s)
+{
+ int count;
+
+ count = u32_strmbtouc (puc, s);
+ if (count > 0)
+ return s + count;
+ else
+ {
+#if CONFIG_UNICODE_SAFETY
+ if (count < 0)
+ *puc = 0xfffd;
+#endif
+ return NULL;
+ }
+}
diff --git a/lib/unistr/u32-prev.c b/lib/unistr/u32-prev.c
new file mode 100644
index 00000000..bc20c93f
--- /dev/null
+++ b/lib/unistr/u32-prev.c
@@ -0,0 +1,39 @@
+/* Iterate over previous character in UTF-32 string.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+const uint32_t *
+u32_prev (ucs4_t *puc, const uint32_t *s, const uint32_t *start)
+{
+ if (s != start)
+ {
+ uint32_t c_1 = s[-1];
+
+#if CONFIG_UNICODE_SAFETY
+ if (c_1 < 0xd800 || (c_1 >= 0xe000 && c_1 < 0x110000))
+#endif
+ {
+ *puc = c_1;
+ return s - 1;
+ }
+ }
+ return NULL;
+}
diff --git a/lib/unistr/u32-set.c b/lib/unistr/u32-set.c
new file mode 100644
index 00000000..de10e09e
--- /dev/null
+++ b/lib/unistr/u32-set.c
@@ -0,0 +1,26 @@
+/* Fill UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_set
+#define UNIT uint32_t
+#define IS_SINGLE_UNIT(uc) (uc < 0xd800 || (uc >= 0xe000 && uc < 0x110000))
+#include "u-set.h"
diff --git a/lib/unistr/u32-startswith.c b/lib/unistr/u32-startswith.c
new file mode 100644
index 00000000..0f9a1859
--- /dev/null
+++ b/lib/unistr/u32-startswith.c
@@ -0,0 +1,25 @@
+/* Substring test for UTF-32 strings.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_startswith
+#define UNIT uint32_t
+#include "u-startswith.h"
diff --git a/lib/unistr/u32-stpcpy.c b/lib/unistr/u32-stpcpy.c
new file mode 100644
index 00000000..5df82339
--- /dev/null
+++ b/lib/unistr/u32-stpcpy.c
@@ -0,0 +1,25 @@
+/* Copy UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_stpcpy
+#define UNIT uint32_t
+#include "u-stpcpy.h"
diff --git a/lib/unistr/u32-stpncpy.c b/lib/unistr/u32-stpncpy.c
new file mode 100644
index 00000000..19a08943
--- /dev/null
+++ b/lib/unistr/u32-stpncpy.c
@@ -0,0 +1,25 @@
+/* Copy UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_stpncpy
+#define UNIT uint32_t
+#include "u-stpncpy.h"
diff --git a/lib/unistr/u32-strcat.c b/lib/unistr/u32-strcat.c
new file mode 100644
index 00000000..cd4737fd
--- /dev/null
+++ b/lib/unistr/u32-strcat.c
@@ -0,0 +1,26 @@
+/* Concatenate UTF-32 strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_strcat
+#define UNIT uint32_t
+#define U_STRLEN u32_strlen
+#include "u-strcat.h"
diff --git a/lib/unistr/u32-strchr.c b/lib/unistr/u32-strchr.c
new file mode 100644
index 00000000..57a3a3cf
--- /dev/null
+++ b/lib/unistr/u32-strchr.c
@@ -0,0 +1,36 @@
+/* Search character in UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+uint32_t *
+u32_strchr (const uint32_t *s, ucs4_t uc)
+{
+ for (;; s++)
+ {
+ if (*s == uc)
+ break;
+ if (*s == 0)
+ goto notfound;
+ }
+ return (uint32_t *) s;
+notfound:
+ return NULL;
+}
diff --git a/lib/unistr/u32-strcmp.c b/lib/unistr/u32-strcmp.c
new file mode 100644
index 00000000..b82d5ede
--- /dev/null
+++ b/lib/unistr/u32-strcmp.c
@@ -0,0 +1,36 @@
+/* Compare UTF-32 strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u32_strcmp (const uint32_t *s1, const uint32_t *s2)
+{
+ for (;;)
+ {
+ uint32_t uc1 = *s1++;
+ uint32_t uc2 = *s2++;
+ if (uc1 != 0 && uc1 == uc2)
+ continue;
+ /* Note that uc1 and uc2 each have at most 31 bits. */
+ return (int)uc1 - (int)uc2;
+ /* > 0 if uc1 > uc2, < 0 if uc1 < uc2. */
+ }
+}
diff --git a/lib/unistr/u32-strcoll.c b/lib/unistr/u32-strcoll.c
new file mode 100644
index 00000000..d5e1482c
--- /dev/null
+++ b/lib/unistr/u32-strcoll.c
@@ -0,0 +1,33 @@
+/* Compare UTF-32 strings using the collation rules of the current locale.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "uniconv.h"
+
+#define FUNC u32_strcoll
+#define UNIT uint32_t
+#define U_STRCMP u32_strcmp
+#define U_STRCONV_TO_LOCALE u32_strconv_to_locale
+#include "u-strcoll.h"
diff --git a/lib/unistr/u32-strcpy.c b/lib/unistr/u32-strcpy.c
new file mode 100644
index 00000000..e5001005
--- /dev/null
+++ b/lib/unistr/u32-strcpy.c
@@ -0,0 +1,25 @@
+/* Copy UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_strcpy
+#define UNIT uint32_t
+#include "u-strcpy.h"
diff --git a/lib/unistr/u32-strcspn.c b/lib/unistr/u32-strcspn.c
new file mode 100644
index 00000000..f93ab2ef
--- /dev/null
+++ b/lib/unistr/u32-strcspn.c
@@ -0,0 +1,51 @@
+/* Search for some characters in UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_strcspn
+#define UNIT uint32_t
+#define U_STRLEN u32_strlen
+#define U_STRCHR u32_strchr
+
+size_t
+FUNC (const UNIT *str, const UNIT *reject)
+{
+ /* Optimize two cases. */
+ if (reject[0] == 0)
+ return U_STRLEN (str);
+ if (reject[1] == 0)
+ {
+ ucs4_t uc = reject[0];
+ const UNIT *ptr = str;
+ for (; *ptr != 0; ptr++)
+ if (*ptr == uc)
+ break;
+ return ptr - str;
+ }
+ /* General case. */
+ {
+ const UNIT *ptr = str;
+ for (; *ptr != 0; ptr++)
+ if (U_STRCHR (reject, *ptr))
+ break;
+ return ptr - str;
+ }
+}
diff --git a/lib/unistr/u32-strdup.c b/lib/unistr/u32-strdup.c
new file mode 100644
index 00000000..66e9393e
--- /dev/null
+++ b/lib/unistr/u32-strdup.c
@@ -0,0 +1,26 @@
+/* Copy UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_strdup
+#define UNIT uint32_t
+#define U_STRLEN u32_strlen
+#include "u-strdup.h"
diff --git a/lib/unistr/u32-strlen.c b/lib/unistr/u32-strlen.c
new file mode 100644
index 00000000..eb64cc2a
--- /dev/null
+++ b/lib/unistr/u32-strlen.c
@@ -0,0 +1,25 @@
+/* Determine length of UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_strlen
+#define UNIT uint32_t
+#include "u-strlen.h"
diff --git a/lib/unistr/u32-strmblen.c b/lib/unistr/u32-strmblen.c
new file mode 100644
index 00000000..4dde3fff
--- /dev/null
+++ b/lib/unistr/u32-strmblen.c
@@ -0,0 +1,36 @@
+/* Look at first character in UTF-32 string.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u32_strmblen (const uint32_t *s)
+{
+ uint32_t c = *s;
+
+#if CONFIG_UNICODE_SAFETY
+ if (c < 0xd800 || (c >= 0xe000 && c < 0x110000))
+#endif
+ return (c != 0 ? 1 : 0);
+#if CONFIG_UNICODE_SAFETY
+ /* invalid multibyte character */
+ return -1;
+#endif
+}
diff --git a/lib/unistr/u32-strmbtouc.c b/lib/unistr/u32-strmbtouc.c
new file mode 100644
index 00000000..e94ac300
--- /dev/null
+++ b/lib/unistr/u32-strmbtouc.c
@@ -0,0 +1,39 @@
+/* Look at first character in UTF-32 string.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u32_strmbtouc (ucs4_t *puc, const uint32_t *s)
+{
+ uint32_t c = *s;
+
+#if CONFIG_UNICODE_SAFETY
+ if (c < 0xd800 || (c >= 0xe000 && c < 0x110000))
+#endif
+ {
+ *puc = c;
+ return (c != 0 ? 1 : 0);
+ }
+#if CONFIG_UNICODE_SAFETY
+ /* invalid multibyte character */
+ return -1;
+#endif
+}
diff --git a/lib/unistr/u32-strncat.c b/lib/unistr/u32-strncat.c
new file mode 100644
index 00000000..86f895b5
--- /dev/null
+++ b/lib/unistr/u32-strncat.c
@@ -0,0 +1,26 @@
+/* Concatenate UTF-32 strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_strncat
+#define UNIT uint32_t
+#define U_STRLEN u32_strlen
+#include "u-strncat.h"
diff --git a/lib/unistr/u32-strncmp.c b/lib/unistr/u32-strncmp.c
new file mode 100644
index 00000000..026ce50c
--- /dev/null
+++ b/lib/unistr/u32-strncmp.c
@@ -0,0 +1,40 @@
+/* Compare UTF-32 strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u32_strncmp (const uint32_t *s1, const uint32_t *s2, size_t n)
+{
+ for (; n > 0;)
+ {
+ uint32_t uc1 = *s1++;
+ uint32_t uc2 = *s2++;
+ if (uc1 != 0 && uc1 == uc2)
+ {
+ n--;
+ continue;
+ }
+ /* Note that uc1 and uc2 each have at most 31 bits. */
+ return (int)uc1 - (int)uc2;
+ /* > 0 if uc1 > uc2, < 0 if uc1 < uc2, = 0 if uc1 and uc2 are both 0. */
+ }
+ return 0;
+}
diff --git a/lib/unistr/u32-strncpy.c b/lib/unistr/u32-strncpy.c
new file mode 100644
index 00000000..c8f409bb
--- /dev/null
+++ b/lib/unistr/u32-strncpy.c
@@ -0,0 +1,25 @@
+/* Copy UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_strncpy
+#define UNIT uint32_t
+#include "u-strncpy.h"
diff --git a/lib/unistr/u32-strnlen.c b/lib/unistr/u32-strnlen.c
new file mode 100644
index 00000000..2ead8f26
--- /dev/null
+++ b/lib/unistr/u32-strnlen.c
@@ -0,0 +1,25 @@
+/* Determine bounded length of UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_strnlen
+#define UNIT uint32_t
+#include "u-strnlen.h"
diff --git a/lib/unistr/u32-strpbrk.c b/lib/unistr/u32-strpbrk.c
new file mode 100644
index 00000000..9579a1b0
--- /dev/null
+++ b/lib/unistr/u32-strpbrk.c
@@ -0,0 +1,50 @@
+/* Search for some characters in UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_strpbrk
+#define UNIT uint32_t
+#define U_STRCHR u32_strchr
+
+UNIT *
+FUNC (const UNIT *str, const UNIT *accept)
+{
+ /* Optimize two cases. */
+ if (accept[0] == 0)
+ return NULL;
+ if (accept[1] == 0)
+ {
+ ucs4_t uc = accept[0];
+ const UNIT *ptr = str;
+ for (; *ptr != 0; ptr++)
+ if (*ptr == uc)
+ return (UNIT *) ptr;
+ return NULL;
+ }
+ /* General case. */
+ {
+ const UNIT *ptr = str;
+ for (; *ptr != 0; ptr++)
+ if (U_STRCHR (accept, *ptr))
+ return (UNIT *) ptr;
+ return NULL;
+ }
+}
diff --git a/lib/unistr/u32-strrchr.c b/lib/unistr/u32-strrchr.c
new file mode 100644
index 00000000..b4641f33
--- /dev/null
+++ b/lib/unistr/u32-strrchr.c
@@ -0,0 +1,38 @@
+/* Search character in UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+uint32_t *
+u32_strrchr (const uint32_t *s, ucs4_t uc)
+{
+ /* Calling u32_strlen and then searching from the other end would cause more
+ memory accesses. Avoid that, at the cost of a few more comparisons. */
+ uint32_t *result = NULL;
+
+ for (;; s++)
+ {
+ if (*s == uc)
+ result = (uint32_t *) s;
+ if (*s == 0)
+ break;
+ }
+ return result;
+}
diff --git a/lib/unistr/u32-strspn.c b/lib/unistr/u32-strspn.c
new file mode 100644
index 00000000..6f802029
--- /dev/null
+++ b/lib/unistr/u32-strspn.c
@@ -0,0 +1,50 @@
+/* Search for some characters in UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_strspn
+#define UNIT uint32_t
+#define U_STRCHR u32_strchr
+
+size_t
+FUNC (const UNIT *str, const UNIT *accept)
+{
+ /* Optimize two cases. */
+ if (accept[0] == 0)
+ return 0;
+ if (accept[1] == 0)
+ {
+ ucs4_t uc = accept[0];
+ const UNIT *ptr = str;
+ for (; *ptr != 0; ptr++)
+ if (*ptr != uc)
+ break;
+ return ptr - str;
+ }
+ /* General case. */
+ {
+ const UNIT *ptr = str;
+ for (; *ptr != 0; ptr++)
+ if (!U_STRCHR (accept, *ptr))
+ break;
+ return ptr - str;
+ }
+}
diff --git a/lib/unistr/u32-strstr.c b/lib/unistr/u32-strstr.c
new file mode 100644
index 00000000..285746de
--- /dev/null
+++ b/lib/unistr/u32-strstr.c
@@ -0,0 +1,26 @@
+/* Substring test for UTF-32 strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_strstr
+#define UNIT uint32_t
+#define U_STRCHR u32_strchr
+#include "u-strstr.h"
diff --git a/lib/unistr/u32-strtok.c b/lib/unistr/u32-strtok.c
new file mode 100644
index 00000000..3f219192
--- /dev/null
+++ b/lib/unistr/u32-strtok.c
@@ -0,0 +1,27 @@
+/* Tokenize UTF-32 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_strtok
+#define UNIT uint32_t
+#define U_STRSPN u32_strspn
+#define U_STRPBRK u32_strpbrk
+#include "u-strtok.h"
diff --git a/lib/unistr/u32-to-u16.c b/lib/unistr/u32-to-u16.c
new file mode 100644
index 00000000..3a32162c
--- /dev/null
+++ b/lib/unistr/u32-to-u16.c
@@ -0,0 +1,130 @@
+/* Convert UTF-32 string to UTF-16 string.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_to_u16
+#define SRC_UNIT uint32_t
+#define DST_UNIT uint16_t
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+DST_UNIT *
+FUNC (const SRC_UNIT *s, size_t n, DST_UNIT *resultbuf, size_t *lengthp)
+{
+ const SRC_UNIT *s_end = s + n;
+ /* Output string accumulator. */
+ DST_UNIT *result;
+ size_t allocated;
+ size_t length;
+
+ if (resultbuf != NULL)
+ {
+ result = resultbuf;
+ allocated = *lengthp;
+ }
+ else
+ {
+ result = NULL;
+ allocated = 0;
+ }
+ length = 0;
+ /* Invariants:
+ result is either == resultbuf or == NULL or malloc-allocated.
+ If length > 0, then result != NULL. */
+
+ while (s < s_end)
+ {
+ ucs4_t uc;
+ int count;
+
+ /* Fetch a Unicode character from the input string. */
+ uc = *s++;
+ /* No need to call the safe variant u32_mbtouc, because
+ u16_uctomb will verify uc anyway. */
+
+ /* Store it in the output string. */
+ count = u16_uctomb (result + length, uc, allocated - length);
+ if (count == -1)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ errno = EILSEQ;
+ return NULL;
+ }
+ if (count == -2)
+ {
+ DST_UNIT *memory;
+
+ allocated = (allocated > 0 ? 2 * allocated : 12);
+ if (length + 2 > allocated)
+ allocated = length + 2;
+ if (result == resultbuf || result == NULL)
+ memory = (DST_UNIT *) malloc (allocated * sizeof (DST_UNIT));
+ else
+ memory =
+ (DST_UNIT *) realloc (result, allocated * sizeof (DST_UNIT));
+
+ if (memory == NULL)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ errno = ENOMEM;
+ return NULL;
+ }
+ if (result == resultbuf && length > 0)
+ memcpy ((char *) memory, (char *) result,
+ length * sizeof (DST_UNIT));
+ result = memory;
+ count = u16_uctomb (result + length, uc, allocated - length);
+ if (count < 0)
+ abort ();
+ }
+ length += count;
+ }
+
+ if (length == 0)
+ {
+ if (result == NULL)
+ {
+ /* Return a non-NULL value. NULL means error. */
+ result = (DST_UNIT *) malloc (1);
+ if (result == NULL)
+ {
+ errno = ENOMEM;
+ return NULL;
+ }
+ }
+ }
+ else if (result != resultbuf && length < allocated)
+ {
+ /* Shrink the allocated memory if possible. */
+ DST_UNIT *memory;
+
+ memory = (DST_UNIT *) realloc (result, length * sizeof (DST_UNIT));
+ if (memory != NULL)
+ result = memory;
+ }
+
+ *lengthp = length;
+ return result;
+}
diff --git a/lib/unistr/u32-to-u8.c b/lib/unistr/u32-to-u8.c
new file mode 100644
index 00000000..4dce896b
--- /dev/null
+++ b/lib/unistr/u32-to-u8.c
@@ -0,0 +1,130 @@
+/* Convert UTF-32 string to UTF-8 string.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u32_to_u8
+#define SRC_UNIT uint32_t
+#define DST_UNIT uint8_t
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+DST_UNIT *
+FUNC (const SRC_UNIT *s, size_t n, DST_UNIT *resultbuf, size_t *lengthp)
+{
+ const SRC_UNIT *s_end = s + n;
+ /* Output string accumulator. */
+ DST_UNIT *result;
+ size_t allocated;
+ size_t length;
+
+ if (resultbuf != NULL)
+ {
+ result = resultbuf;
+ allocated = *lengthp;
+ }
+ else
+ {
+ result = NULL;
+ allocated = 0;
+ }
+ length = 0;
+ /* Invariants:
+ result is either == resultbuf or == NULL or malloc-allocated.
+ If length > 0, then result != NULL. */
+
+ while (s < s_end)
+ {
+ ucs4_t uc;
+ int count;
+
+ /* Fetch a Unicode character from the input string. */
+ uc = *s++;
+ /* No need to call the safe variant u32_mbtouc, because
+ u8_uctomb will verify uc anyway. */
+
+ /* Store it in the output string. */
+ count = u8_uctomb (result + length, uc, allocated - length);
+ if (count == -1)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ errno = EILSEQ;
+ return NULL;
+ }
+ if (count == -2)
+ {
+ DST_UNIT *memory;
+
+ allocated = (allocated > 0 ? 2 * allocated : 12);
+ if (length + 6 > allocated)
+ allocated = length + 6;
+ if (result == resultbuf || result == NULL)
+ memory = (DST_UNIT *) malloc (allocated * sizeof (DST_UNIT));
+ else
+ memory =
+ (DST_UNIT *) realloc (result, allocated * sizeof (DST_UNIT));
+
+ if (memory == NULL)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ errno = ENOMEM;
+ return NULL;
+ }
+ if (result == resultbuf && length > 0)
+ memcpy ((char *) memory, (char *) result,
+ length * sizeof (DST_UNIT));
+ result = memory;
+ count = u8_uctomb (result + length, uc, allocated - length);
+ if (count < 0)
+ abort ();
+ }
+ length += count;
+ }
+
+ if (length == 0)
+ {
+ if (result == NULL)
+ {
+ /* Return a non-NULL value. NULL means error. */
+ result = (DST_UNIT *) malloc (1);
+ if (result == NULL)
+ {
+ errno = ENOMEM;
+ return NULL;
+ }
+ }
+ }
+ else if (result != resultbuf && length < allocated)
+ {
+ /* Shrink the allocated memory if possible. */
+ DST_UNIT *memory;
+
+ memory = (DST_UNIT *) realloc (result, length * sizeof (DST_UNIT));
+ if (memory != NULL)
+ result = memory;
+ }
+
+ *lengthp = length;
+ return result;
+}
diff --git a/lib/unistr/u32-uctomb.c b/lib/unistr/u32-uctomb.c
new file mode 100644
index 00000000..583b3b66
--- /dev/null
+++ b/lib/unistr/u32-uctomb.c
@@ -0,0 +1,47 @@
+/* Store a character in UTF-32 string.
+ Copyright (C) 2002, 2005-2006, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#if defined IN_LIBUNISTRING
+/* Tell unistr.h to declare u32_uctomb as 'extern', not 'static inline'. */
+# include "unistring-notinline.h"
+#endif
+
+/* Specification. */
+#include "unistr.h"
+
+#if !HAVE_INLINE
+
+int
+u32_uctomb (uint32_t *s, ucs4_t uc, int n)
+{
+ if (uc < 0xd800 || (uc >= 0xe000 && uc < 0x110000))
+ {
+ if (n > 0)
+ {
+ *s = uc;
+ return 1;
+ }
+ else
+ return -2;
+ }
+ else
+ return -1;
+}
+
+#endif
diff --git a/lib/unistr/u8-check.c b/lib/unistr/u8-check.c
new file mode 100644
index 00000000..53897fc5
--- /dev/null
+++ b/lib/unistr/u8-check.c
@@ -0,0 +1,105 @@
+/* Check UTF-8 string.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+const uint8_t *
+u8_check (const uint8_t *s, size_t n)
+{
+ const uint8_t *s_end = s + n;
+
+ while (s < s_end)
+ {
+ /* Keep in sync with unistr.h and utf8-ucs4.c. */
+ uint8_t c = *s;
+
+ if (c < 0x80)
+ {
+ s++;
+ continue;
+ }
+ if (c >= 0xc2)
+ {
+ if (c < 0xe0)
+ {
+ if (s + 2 <= s_end
+ && (s[1] ^ 0x80) < 0x40)
+ {
+ s += 2;
+ continue;
+ }
+ }
+ else if (c < 0xf0)
+ {
+ if (s + 3 <= s_end
+ && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (c >= 0xe1 || s[1] >= 0xa0)
+ && (c != 0xed || s[1] < 0xa0))
+ {
+ s += 3;
+ continue;
+ }
+ }
+ else if (c < 0xf8)
+ {
+ if (s + 4 <= s_end
+ && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40
+ && (c >= 0xf1 || s[1] >= 0x90)
+#if 1
+ && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90))
+#endif
+ )
+ {
+ s += 4;
+ continue;
+ }
+ }
+#if 0
+ else if (c < 0xfc)
+ {
+ if (s + 5 <= s_end
+ && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (c >= 0xf9 || s[1] >= 0x88))
+ {
+ s += 5;
+ continue;
+ }
+ }
+ else if (c < 0xfe)
+ {
+ if (s + 6 <= s_end
+ && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (s[5] ^ 0x80) < 0x40
+ && (c >= 0xfd || s[1] >= 0x84))
+ {
+ s += 6;
+ continue;
+ }
+ }
+#endif
+ }
+ /* invalid or incomplete multibyte character */
+ return s;
+ }
+ return NULL;
+}
diff --git a/lib/unistr/u8-chr.c b/lib/unistr/u8-chr.c
new file mode 100644
index 00000000..2c4d7687
--- /dev/null
+++ b/lib/unistr/u8-chr.c
@@ -0,0 +1,87 @@
+/* Search character in piece of UTF-8 string.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+uint8_t *
+u8_chr (const uint8_t *s, size_t n, ucs4_t uc)
+{
+ uint8_t c[6];
+
+ if (uc < 0x80)
+ {
+ uint8_t c0 = uc;
+
+ for (; n > 0; s++, n--)
+ {
+ if (*s == c0)
+ return (uint8_t *) s;
+ }
+ }
+ else
+ switch (u8_uctomb_aux (c, uc, 6))
+ {
+ case 2:
+ if (n > 1)
+ {
+ uint8_t c0 = c[0];
+ uint8_t c1 = c[1];
+
+ for (n--; n > 0; s++, n--)
+ {
+ if (*s == c0 && s[1] == c1)
+ return (uint8_t *) s;
+ }
+ }
+ break;
+
+ case 3:
+ if (n > 2)
+ {
+ uint8_t c0 = c[0];
+ uint8_t c1 = c[1];
+ uint8_t c2 = c[2];
+
+ for (n -= 2; n > 0; s++, n--)
+ {
+ if (*s == c0 && s[1] == c1 && s[2] == c2)
+ return (uint8_t *) s;
+ }
+ }
+ break;
+
+ case 4:
+ if (n > 3)
+ {
+ uint8_t c0 = c[0];
+ uint8_t c1 = c[1];
+ uint8_t c2 = c[2];
+ uint8_t c3 = c[3];
+
+ for (n -= 3; n > 0; s++, n--)
+ {
+ if (*s == c0 && s[1] == c1 && s[2] == c2 && s[3] == c3)
+ return (uint8_t *) s;
+ }
+ }
+ break;
+ }
+ return NULL;
+}
diff --git a/lib/unistr/u8-cmp.c b/lib/unistr/u8-cmp.c
new file mode 100644
index 00000000..77b2402d
--- /dev/null
+++ b/lib/unistr/u8-cmp.c
@@ -0,0 +1,30 @@
+/* Compare pieces of UTF-8 strings.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#include <string.h>
+
+int
+u8_cmp (const uint8_t *s1, const uint8_t *s2, size_t n)
+{
+ /* Use the fact that the UTF-8 encoding preserves lexicographic order. */
+ return memcmp ((const char *) s1, (const char *) s2, n);
+}
diff --git a/lib/unistr/u8-cmp2.c b/lib/unistr/u8-cmp2.c
new file mode 100644
index 00000000..99cee9f2
--- /dev/null
+++ b/lib/unistr/u8-cmp2.c
@@ -0,0 +1,28 @@
+/* Compare pieces of UTF-8 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#include "minmax.h"
+
+#define FUNC u8_cmp2
+#define UNIT uint8_t
+#define U_CMP u8_cmp
+#include "u-cmp2.h"
diff --git a/lib/unistr/u8-cpy-alloc.c b/lib/unistr/u8-cpy-alloc.c
new file mode 100644
index 00000000..b2dcc5dc
--- /dev/null
+++ b/lib/unistr/u8-cpy-alloc.c
@@ -0,0 +1,25 @@
+/* Copy piece of UTF-8 string.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u8_cpy_alloc
+#define UNIT uint8_t
+#include "u-cpy-alloc.h"
diff --git a/lib/unistr/u8-cpy.c b/lib/unistr/u8-cpy.c
new file mode 100644
index 00000000..bf3a55bc
--- /dev/null
+++ b/lib/unistr/u8-cpy.c
@@ -0,0 +1,25 @@
+/* Copy piece of UTF-8 string.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u8_cpy
+#define UNIT uint8_t
+#include "u-cpy.h"
diff --git a/lib/unistr/u8-endswith.c b/lib/unistr/u8-endswith.c
new file mode 100644
index 00000000..e40613aa
--- /dev/null
+++ b/lib/unistr/u8-endswith.c
@@ -0,0 +1,27 @@
+/* Substring test for UTF-8 strings.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u8_endswith
+#define UNIT uint8_t
+#define U_STRLEN u8_strlen
+#define U_CMP u8_cmp
+#include "u-endswith.h"
diff --git a/lib/unistr/u8-mblen.c b/lib/unistr/u8-mblen.c
new file mode 100644
index 00000000..1981befe
--- /dev/null
+++ b/lib/unistr/u8-mblen.c
@@ -0,0 +1,98 @@
+/* Look at first character in UTF-8 string.
+ Copyright (C) 1999-2000, 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u8_mblen (const uint8_t *s, size_t n)
+{
+ if (n > 0)
+ {
+ /* Keep in sync with unistr.h and utf8-ucs4.c. */
+ uint8_t c = *s;
+
+ if (c < 0x80)
+ return (c != 0 ? 1 : 0);
+ if (c >= 0xc2)
+ {
+ if (c < 0xe0)
+ {
+ if (n >= 2
+#if CONFIG_UNICODE_SAFETY
+ && (s[1] ^ 0x80) < 0x40
+#endif
+ )
+ return 2;
+ }
+ else if (c < 0xf0)
+ {
+ if (n >= 3
+#if CONFIG_UNICODE_SAFETY
+ && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (c >= 0xe1 || s[1] >= 0xa0)
+ && (c != 0xed || s[1] < 0xa0)
+#endif
+ )
+ return 3;
+ }
+ else if (c < 0xf8)
+ {
+ if (n >= 4
+#if CONFIG_UNICODE_SAFETY
+ && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40
+ && (c >= 0xf1 || s[1] >= 0x90)
+#if 1
+ && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90))
+#endif
+#endif
+ )
+ return 4;
+ }
+#if 0
+ else if (c < 0xfc)
+ {
+ if (n >= 5
+#if CONFIG_UNICODE_SAFETY
+ && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (c >= 0xf9 || s[1] >= 0x88)
+#endif
+ )
+ return 5;
+ }
+ else if (c < 0xfe)
+ {
+ if (n >= 6
+#if CONFIG_UNICODE_SAFETY
+ && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (s[5] ^ 0x80) < 0x40
+ && (c >= 0xfd || s[1] >= 0x84)
+#endif
+ )
+ return 6;
+ }
+#endif
+ }
+ }
+ /* invalid or incomplete multibyte character */
+ return -1;
+}
diff --git a/lib/unistr/u8-mbsnlen.c b/lib/unistr/u8-mbsnlen.c
new file mode 100644
index 00000000..29af297f
--- /dev/null
+++ b/lib/unistr/u8-mbsnlen.c
@@ -0,0 +1,39 @@
+/* Count characters in UTF-8 string.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+size_t
+u8_mbsnlen (const uint8_t *s, size_t n)
+{
+ size_t characters;
+
+ characters = 0;
+ while (n > 0)
+ {
+ int count = u8_mblen (s, n);
+ if (count <= 0)
+ count = 1;
+ s += count;
+ n -= count;
+ characters++;
+ }
+ return characters;
+}
diff --git a/lib/unistr/u8-mbtouc-aux.c b/lib/unistr/u8-mbtouc-aux.c
new file mode 100644
index 00000000..53d02bf0
--- /dev/null
+++ b/lib/unistr/u8-mbtouc-aux.c
@@ -0,0 +1,158 @@
+/* Conversion UTF-8 to UCS-4.
+ Copyright (C) 2001-2002, 2006-2007, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#if defined IN_LIBUNISTRING || HAVE_INLINE
+
+int
+u8_mbtouc_aux (ucs4_t *puc, const uint8_t *s, size_t n)
+{
+ uint8_t c = *s;
+
+ if (c >= 0xc2)
+ {
+ if (c < 0xe0)
+ {
+ if (n >= 2)
+ {
+ if ((s[1] ^ 0x80) < 0x40)
+ {
+ *puc = ((unsigned int) (c & 0x1f) << 6)
+ | (unsigned int) (s[1] ^ 0x80);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xf0)
+ {
+ if (n >= 3)
+ {
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (c >= 0xe1 || s[1] >= 0xa0)
+ && (c != 0xed || s[1] < 0xa0))
+ {
+ *puc = ((unsigned int) (c & 0x0f) << 12)
+ | ((unsigned int) (s[1] ^ 0x80) << 6)
+ | (unsigned int) (s[2] ^ 0x80);
+ return 3;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xf8)
+ {
+ if (n >= 4)
+ {
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40
+ && (c >= 0xf1 || s[1] >= 0x90)
+#if 1
+ && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90))
+#endif
+ )
+ {
+ *puc = ((unsigned int) (c & 0x07) << 18)
+ | ((unsigned int) (s[1] ^ 0x80) << 12)
+ | ((unsigned int) (s[2] ^ 0x80) << 6)
+ | (unsigned int) (s[3] ^ 0x80);
+ return 4;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+#if 0
+ else if (c < 0xfc)
+ {
+ if (n >= 5)
+ {
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (c >= 0xf9 || s[1] >= 0x88))
+ {
+ *puc = ((unsigned int) (c & 0x03) << 24)
+ | ((unsigned int) (s[1] ^ 0x80) << 18)
+ | ((unsigned int) (s[2] ^ 0x80) << 12)
+ | ((unsigned int) (s[3] ^ 0x80) << 6)
+ | (unsigned int) (s[4] ^ 0x80);
+ return 5;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xfe)
+ {
+ if (n >= 6)
+ {
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (s[5] ^ 0x80) < 0x40
+ && (c >= 0xfd || s[1] >= 0x84))
+ {
+ *puc = ((unsigned int) (c & 0x01) << 30)
+ | ((unsigned int) (s[1] ^ 0x80) << 24)
+ | ((unsigned int) (s[2] ^ 0x80) << 18)
+ | ((unsigned int) (s[3] ^ 0x80) << 12)
+ | ((unsigned int) (s[4] ^ 0x80) << 6)
+ | (unsigned int) (s[5] ^ 0x80);
+ return 6;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+#endif
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
diff --git a/lib/unistr/u8-mbtouc-unsafe-aux.c b/lib/unistr/u8-mbtouc-unsafe-aux.c
new file mode 100644
index 00000000..43e4a360
--- /dev/null
+++ b/lib/unistr/u8-mbtouc-unsafe-aux.c
@@ -0,0 +1,168 @@
+/* Conversion UTF-8 to UCS-4.
+ Copyright (C) 2001-2002, 2006-2007, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#if defined IN_LIBUNISTRING || HAVE_INLINE
+
+int
+u8_mbtouc_unsafe_aux (ucs4_t *puc, const uint8_t *s, size_t n)
+{
+ uint8_t c = *s;
+
+ if (c >= 0xc2)
+ {
+ if (c < 0xe0)
+ {
+ if (n >= 2)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40)
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x1f) << 6)
+ | (unsigned int) (s[1] ^ 0x80);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xf0)
+ {
+ if (n >= 3)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (c >= 0xe1 || s[1] >= 0xa0)
+ && (c != 0xed || s[1] < 0xa0))
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x0f) << 12)
+ | ((unsigned int) (s[1] ^ 0x80) << 6)
+ | (unsigned int) (s[2] ^ 0x80);
+ return 3;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xf8)
+ {
+ if (n >= 4)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40
+ && (c >= 0xf1 || s[1] >= 0x90)
+#if 1
+ && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90))
+#endif
+ )
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x07) << 18)
+ | ((unsigned int) (s[1] ^ 0x80) << 12)
+ | ((unsigned int) (s[2] ^ 0x80) << 6)
+ | (unsigned int) (s[3] ^ 0x80);
+ return 4;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+#if 0
+ else if (c < 0xfc)
+ {
+ if (n >= 5)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (c >= 0xf9 || s[1] >= 0x88))
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x03) << 24)
+ | ((unsigned int) (s[1] ^ 0x80) << 18)
+ | ((unsigned int) (s[2] ^ 0x80) << 12)
+ | ((unsigned int) (s[3] ^ 0x80) << 6)
+ | (unsigned int) (s[4] ^ 0x80);
+ return 5;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xfe)
+ {
+ if (n >= 6)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (s[5] ^ 0x80) < 0x40
+ && (c >= 0xfd || s[1] >= 0x84))
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x01) << 30)
+ | ((unsigned int) (s[1] ^ 0x80) << 24)
+ | ((unsigned int) (s[2] ^ 0x80) << 18)
+ | ((unsigned int) (s[3] ^ 0x80) << 12)
+ | ((unsigned int) (s[4] ^ 0x80) << 6)
+ | (unsigned int) (s[5] ^ 0x80);
+ return 6;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+#endif
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
diff --git a/lib/unistr/u8-mbtouc-unsafe.c b/lib/unistr/u8-mbtouc-unsafe.c
new file mode 100644
index 00000000..46615696
--- /dev/null
+++ b/lib/unistr/u8-mbtouc-unsafe.c
@@ -0,0 +1,179 @@
+/* Look at first character in UTF-8 string.
+ Copyright (C) 1999-2002, 2006-2007, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#if defined IN_LIBUNISTRING
+/* Tell unistr.h to declare u8_mbtouc_unsafe as 'extern', not
+ 'static inline'. */
+# include "unistring-notinline.h"
+#endif
+
+/* Specification. */
+#include "unistr.h"
+
+#if !HAVE_INLINE
+
+int
+u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n)
+{
+ uint8_t c = *s;
+
+ if (c < 0x80)
+ {
+ *puc = c;
+ return 1;
+ }
+ else if (c >= 0xc2)
+ {
+ if (c < 0xe0)
+ {
+ if (n >= 2)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40)
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x1f) << 6)
+ | (unsigned int) (s[1] ^ 0x80);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xf0)
+ {
+ if (n >= 3)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (c >= 0xe1 || s[1] >= 0xa0)
+ && (c != 0xed || s[1] < 0xa0))
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x0f) << 12)
+ | ((unsigned int) (s[1] ^ 0x80) << 6)
+ | (unsigned int) (s[2] ^ 0x80);
+ return 3;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xf8)
+ {
+ if (n >= 4)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40
+ && (c >= 0xf1 || s[1] >= 0x90)
+#if 1
+ && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90))
+#endif
+ )
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x07) << 18)
+ | ((unsigned int) (s[1] ^ 0x80) << 12)
+ | ((unsigned int) (s[2] ^ 0x80) << 6)
+ | (unsigned int) (s[3] ^ 0x80);
+ return 4;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+#if 0
+ else if (c < 0xfc)
+ {
+ if (n >= 5)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (c >= 0xf9 || s[1] >= 0x88))
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x03) << 24)
+ | ((unsigned int) (s[1] ^ 0x80) << 18)
+ | ((unsigned int) (s[2] ^ 0x80) << 12)
+ | ((unsigned int) (s[3] ^ 0x80) << 6)
+ | (unsigned int) (s[4] ^ 0x80);
+ return 5;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xfe)
+ {
+ if (n >= 6)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (s[5] ^ 0x80) < 0x40
+ && (c >= 0xfd || s[1] >= 0x84))
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x01) << 30)
+ | ((unsigned int) (s[1] ^ 0x80) << 24)
+ | ((unsigned int) (s[2] ^ 0x80) << 18)
+ | ((unsigned int) (s[3] ^ 0x80) << 12)
+ | ((unsigned int) (s[4] ^ 0x80) << 6)
+ | (unsigned int) (s[5] ^ 0x80);
+ return 6;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+#endif
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
diff --git a/lib/unistr/u8-mbtouc.c b/lib/unistr/u8-mbtouc.c
new file mode 100644
index 00000000..ff624f17
--- /dev/null
+++ b/lib/unistr/u8-mbtouc.c
@@ -0,0 +1,168 @@
+/* Look at first character in UTF-8 string.
+ Copyright (C) 1999-2002, 2006-2007, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#if defined IN_LIBUNISTRING
+/* Tell unistr.h to declare u8_mbtouc as 'extern', not 'static inline'. */
+# include "unistring-notinline.h"
+#endif
+
+/* Specification. */
+#include "unistr.h"
+
+#if !HAVE_INLINE
+
+int
+u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n)
+{
+ uint8_t c = *s;
+
+ if (c < 0x80)
+ {
+ *puc = c;
+ return 1;
+ }
+ else if (c >= 0xc2)
+ {
+ if (c < 0xe0)
+ {
+ if (n >= 2)
+ {
+ if ((s[1] ^ 0x80) < 0x40)
+ {
+ *puc = ((unsigned int) (c & 0x1f) << 6)
+ | (unsigned int) (s[1] ^ 0x80);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xf0)
+ {
+ if (n >= 3)
+ {
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (c >= 0xe1 || s[1] >= 0xa0)
+ && (c != 0xed || s[1] < 0xa0))
+ {
+ *puc = ((unsigned int) (c & 0x0f) << 12)
+ | ((unsigned int) (s[1] ^ 0x80) << 6)
+ | (unsigned int) (s[2] ^ 0x80);
+ return 3;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xf8)
+ {
+ if (n >= 4)
+ {
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40
+ && (c >= 0xf1 || s[1] >= 0x90)
+#if 1
+ && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90))
+#endif
+ )
+ {
+ *puc = ((unsigned int) (c & 0x07) << 18)
+ | ((unsigned int) (s[1] ^ 0x80) << 12)
+ | ((unsigned int) (s[2] ^ 0x80) << 6)
+ | (unsigned int) (s[3] ^ 0x80);
+ return 4;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+#if 0
+ else if (c < 0xfc)
+ {
+ if (n >= 5)
+ {
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (c >= 0xf9 || s[1] >= 0x88))
+ {
+ *puc = ((unsigned int) (c & 0x03) << 24)
+ | ((unsigned int) (s[1] ^ 0x80) << 18)
+ | ((unsigned int) (s[2] ^ 0x80) << 12)
+ | ((unsigned int) (s[3] ^ 0x80) << 6)
+ | (unsigned int) (s[4] ^ 0x80);
+ return 5;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xfe)
+ {
+ if (n >= 6)
+ {
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (s[5] ^ 0x80) < 0x40
+ && (c >= 0xfd || s[1] >= 0x84))
+ {
+ *puc = ((unsigned int) (c & 0x01) << 30)
+ | ((unsigned int) (s[1] ^ 0x80) << 24)
+ | ((unsigned int) (s[2] ^ 0x80) << 18)
+ | ((unsigned int) (s[3] ^ 0x80) << 12)
+ | ((unsigned int) (s[4] ^ 0x80) << 6)
+ | (unsigned int) (s[5] ^ 0x80);
+ return 6;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+#endif
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
diff --git a/lib/unistr/u8-mbtoucr.c b/lib/unistr/u8-mbtoucr.c
new file mode 100644
index 00000000..dd833524
--- /dev/null
+++ b/lib/unistr/u8-mbtoucr.c
@@ -0,0 +1,285 @@
+/* Look at first character in UTF-8 string, returning an error code.
+ Copyright (C) 1999-2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u8_mbtoucr (ucs4_t *puc, const uint8_t *s, size_t n)
+{
+ uint8_t c = *s;
+
+ if (c < 0x80)
+ {
+ *puc = c;
+ return 1;
+ }
+ else if (c >= 0xc2)
+ {
+ if (c < 0xe0)
+ {
+ if (n >= 2)
+ {
+ if ((s[1] ^ 0x80) < 0x40)
+ {
+ *puc = ((unsigned int) (c & 0x1f) << 6)
+ | (unsigned int) (s[1] ^ 0x80);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return -2;
+ }
+ }
+ else if (c < 0xf0)
+ {
+ if (n >= 2)
+ {
+ if ((s[1] ^ 0x80) < 0x40
+ && (c >= 0xe1 || s[1] >= 0xa0)
+ && (c != 0xed || s[1] < 0xa0))
+ {
+ if (n >= 3)
+ {
+ if ((s[2] ^ 0x80) < 0x40)
+ {
+ *puc = ((unsigned int) (c & 0x0f) << 12)
+ | ((unsigned int) (s[1] ^ 0x80) << 6)
+ | (unsigned int) (s[2] ^ 0x80);
+ return 3;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return -2;
+ }
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return -2;
+ }
+ }
+ else if (c < 0xf8)
+ {
+ if (n >= 2)
+ {
+ if ((s[1] ^ 0x80) < 0x40
+ && (c >= 0xf1 || s[1] >= 0x90)
+#if 1
+ && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90))
+#endif
+ )
+ {
+ if (n >= 3)
+ {
+ if ((s[2] ^ 0x80) < 0x40)
+ {
+ if (n >= 4)
+ {
+ if ((s[3] ^ 0x80) < 0x40)
+ {
+ *puc = ((unsigned int) (c & 0x07) << 18)
+ | ((unsigned int) (s[1] ^ 0x80) << 12)
+ | ((unsigned int) (s[2] ^ 0x80) << 6)
+ | (unsigned int) (s[3] ^ 0x80);
+ return 4;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return -2;
+ }
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return -2;
+ }
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return -2;
+ }
+ }
+#if 0
+ else if (c < 0xfc)
+ {
+ if (n >= 2)
+ {
+ if ((s[1] ^ 0x80) < 0x40
+ && (c >= 0xf9 || s[1] >= 0x88))
+ {
+ if (n >= 3)
+ {
+ if ((s[2] ^ 0x80) < 0x40)
+ {
+ if (n >= 4)
+ {
+ if ((s[3] ^ 0x80) < 0x40)
+ {
+ if (n >= 5)
+ {
+ if ((s[4] ^ 0x80) < 0x40)
+ {
+ *puc = ((unsigned int) (c & 0x03) << 24)
+ | ((unsigned int) (s[1] ^ 0x80) << 18)
+ | ((unsigned int) (s[2] ^ 0x80) << 12)
+ | ((unsigned int) (s[3] ^ 0x80) << 6)
+ | (unsigned int) (s[4] ^ 0x80);
+ return 5;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return -2;
+ }
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return -2;
+ }
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return -2;
+ }
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return -2;
+ }
+ }
+ else if (c < 0xfe)
+ {
+ if (n >= 2)
+ {
+ if ((s[1] ^ 0x80) < 0x40
+ && (c >= 0xfd || s[1] >= 0x84))
+ {
+ if (n >= 3)
+ {
+ if ((s[2] ^ 0x80) < 0x40)
+ {
+ if (n >= 4)
+ {
+ if ((s[3] ^ 0x80) < 0x40)
+ {
+ if (n >= 5)
+ {
+ if ((s[4] ^ 0x80) < 0x40)
+ {
+ if (n >= 6)
+ {
+ if ((s[5] ^ 0x80) < 0x40)
+ {
+ *puc = ((unsigned int) (c & 0x01) << 30)
+ | ((unsigned int) (s[1] ^ 0x80) << 24)
+ | ((unsigned int) (s[2] ^ 0x80) << 18)
+ | ((unsigned int) (s[3] ^ 0x80) << 12)
+ | ((unsigned int) (s[4] ^ 0x80) << 6)
+ | (unsigned int) (s[5] ^ 0x80);
+ return 6;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return -2;
+ }
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return -2;
+ }
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return -2;
+ }
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return -2;
+ }
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return -2;
+ }
+ }
+#endif
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return -1;
+}
diff --git a/lib/unistr/u8-move.c b/lib/unistr/u8-move.c
new file mode 100644
index 00000000..5a30be8c
--- /dev/null
+++ b/lib/unistr/u8-move.c
@@ -0,0 +1,25 @@
+/* Copy piece of UTF-8 string.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u8_move
+#define UNIT uint8_t
+#include "u-move.h"
diff --git a/lib/unistr/u8-next.c b/lib/unistr/u8-next.c
new file mode 100644
index 00000000..ecf4f80a
--- /dev/null
+++ b/lib/unistr/u8-next.c
@@ -0,0 +1,37 @@
+/* Iterate over next character in UTF-8 string.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+const uint8_t *
+u8_next (ucs4_t *puc, const uint8_t *s)
+{
+ int count;
+
+ count = u8_strmbtouc (puc, s);
+ if (count > 0)
+ return s + count;
+ else
+ {
+ if (count < 0)
+ *puc = 0xfffd;
+ return NULL;
+ }
+}
diff --git a/lib/unistr/u8-prev.c b/lib/unistr/u8-prev.c
new file mode 100644
index 00000000..245d22ff
--- /dev/null
+++ b/lib/unistr/u8-prev.c
@@ -0,0 +1,93 @@
+/* Iterate over previous character in UTF-8 string.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+const uint8_t *
+u8_prev (ucs4_t *puc, const uint8_t *s, const uint8_t *start)
+{
+ /* Keep in sync with unistr.h and utf8-ucs4.c. */
+ if (s != start)
+ {
+ uint8_t c_1 = s[-1];
+
+ if (c_1 < 0x80)
+ {
+ *puc = c_1;
+ return s - 1;
+ }
+#if CONFIG_UNICODE_SAFETY
+ if ((c_1 ^ 0x80) < 0x40)
+#endif
+ if (s - 1 != start)
+ {
+ uint8_t c_2 = s[-2];
+
+ if (c_2 >= 0xc2 && c_2 < 0xe0)
+ {
+ *puc = ((unsigned int) (c_2 & 0x1f) << 6)
+ | (unsigned int) (c_1 ^ 0x80);
+ return s - 2;
+ }
+#if CONFIG_UNICODE_SAFETY
+ if ((c_2 ^ 0x80) < 0x40)
+#endif
+ if (s - 2 != start)
+ {
+ uint8_t c_3 = s[-3];
+
+ if (c_3 >= 0xe0 && c_3 < 0xf0
+#if CONFIG_UNICODE_SAFETY
+ && (c_3 >= 0xe1 || c_2 >= 0xa0)
+ && (c_3 != 0xed || c_2 < 0xa0)
+#endif
+ )
+ {
+ *puc = ((unsigned int) (c_3 & 0x0f) << 12)
+ | ((unsigned int) (c_2 ^ 0x80) << 6)
+ | (unsigned int) (c_1 ^ 0x80);
+ return s - 3;
+ }
+#if CONFIG_UNICODE_SAFETY
+ if ((c_3 ^ 0x80) < 0x40)
+#endif
+ if (s - 3 != start)
+ {
+ uint8_t c_4 = s[-4];
+
+ if (c_4 >= 0xf0 && c_4 < 0xf8
+#if CONFIG_UNICODE_SAFETY
+ && (c_4 >= 0xf1 || c_3 >= 0x90)
+ && (c_4 < 0xf4 || (c_4 == 0xf4 && c_3 < 0x90))
+#endif
+ )
+ {
+ *puc = ((unsigned int) (c_4 & 0x07) << 18)
+ | ((unsigned int) (c_3 ^ 0x80) << 12)
+ | ((unsigned int) (c_2 ^ 0x80) << 6)
+ | (unsigned int) (c_1 ^ 0x80);
+ return s - 4;
+ }
+ }
+ }
+ }
+ }
+ return NULL;
+}
diff --git a/lib/unistr/u8-set.c b/lib/unistr/u8-set.c
new file mode 100644
index 00000000..5bb4fd7a
--- /dev/null
+++ b/lib/unistr/u8-set.c
@@ -0,0 +1,44 @@
+/* Fill UTF-8 string.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u8_set
+#define UNIT uint8_t
+#define IS_SINGLE_UNIT(uc) (uc < 0x80)
+
+#include <errno.h>
+#include <string.h>
+
+UNIT *
+FUNC (UNIT *s, ucs4_t uc, size_t n)
+{
+ if (n > 0)
+ {
+ if (IS_SINGLE_UNIT (uc))
+ memset ((char *) s, uc, n);
+ else
+ {
+ errno = EILSEQ;
+ return NULL;
+ }
+ }
+ return s;
+}
diff --git a/lib/unistr/u8-startswith.c b/lib/unistr/u8-startswith.c
new file mode 100644
index 00000000..671e3d9f
--- /dev/null
+++ b/lib/unistr/u8-startswith.c
@@ -0,0 +1,25 @@
+/* Substring test for UTF-8 strings.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u8_startswith
+#define UNIT uint8_t
+#include "u-startswith.h"
diff --git a/lib/unistr/u8-stpcpy.c b/lib/unistr/u8-stpcpy.c
new file mode 100644
index 00000000..a5c15c5d
--- /dev/null
+++ b/lib/unistr/u8-stpcpy.c
@@ -0,0 +1,44 @@
+/* Copy UTF-8 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Ensure stpcpy() gets declared. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#if HAVE_STPCPY
+
+# include <string.h>
+
+uint8_t *
+u8_stpcpy (uint8_t *dest, const uint8_t *src)
+{
+ return (uint8_t *) stpcpy ((char *) dest, (const char *) src);
+}
+
+#else
+
+# define FUNC u8_stpcpy
+# define UNIT uint8_t
+# include "u-stpcpy.h"
+
+#endif
diff --git a/lib/unistr/u8-stpncpy.c b/lib/unistr/u8-stpncpy.c
new file mode 100644
index 00000000..87f254d7
--- /dev/null
+++ b/lib/unistr/u8-stpncpy.c
@@ -0,0 +1,44 @@
+/* Copy UTF-8 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Ensure stpncpy() gets declared. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#if __GLIBC__ >= 2
+
+# include <string.h>
+
+uint8_t *
+u8_stpncpy (uint8_t *dest, const uint8_t *src, size_t n)
+{
+ return (uint8_t *) stpncpy ((char *) dest, (const char *) src, n);
+}
+
+#else
+
+# define FUNC u8_stpncpy
+# define UNIT uint8_t
+# include "u-stpncpy.h"
+
+#endif
diff --git a/lib/unistr/u8-strcat.c b/lib/unistr/u8-strcat.c
new file mode 100644
index 00000000..25ec5d37
--- /dev/null
+++ b/lib/unistr/u8-strcat.c
@@ -0,0 +1,29 @@
+/* Concatenate UTF-8 strings.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#include <string.h>
+
+uint8_t *
+u8_strcat (uint8_t *dest, const uint8_t *src)
+{
+ return (uint8_t *) strcat ((char *) dest, (const char *) src);
+}
diff --git a/lib/unistr/u8-strchr.c b/lib/unistr/u8-strchr.c
new file mode 100644
index 00000000..370a7930
--- /dev/null
+++ b/lib/unistr/u8-strchr.c
@@ -0,0 +1,100 @@
+/* Search character in UTF-8 string.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+uint8_t *
+u8_strchr (const uint8_t *s, ucs4_t uc)
+{
+ uint8_t c[6];
+
+ if (uc < 0x80)
+ {
+ uint8_t c0 = uc;
+
+ for (;; s++)
+ {
+ if (*s == c0)
+ break;
+ if (*s == 0)
+ goto notfound;
+ }
+ return (uint8_t *) s;
+ }
+ else
+ switch (u8_uctomb_aux (c, uc, 6))
+ {
+ case 2:
+ if (*s == 0)
+ goto notfound;
+ {
+ uint8_t c0 = c[0];
+ uint8_t c1 = c[1];
+
+ for (;; s++)
+ {
+ if (s[1] == 0)
+ goto notfound;
+ if (*s == c0 && s[1] == c1)
+ break;
+ }
+ return (uint8_t *) s;
+ }
+
+ case 3:
+ if (*s == 0 || s[1] == 0)
+ goto notfound;
+ {
+ uint8_t c0 = c[0];
+ uint8_t c1 = c[1];
+ uint8_t c2 = c[2];
+
+ for (;; s++)
+ {
+ if (s[2] == 0)
+ goto notfound;
+ if (*s == c0 && s[1] == c1 && s[2] == c2)
+ break;
+ }
+ return (uint8_t *) s;
+ }
+
+ case 4:
+ if (*s == 0 || s[1] == 0 || s[2] == 0)
+ goto notfound;
+ {
+ uint8_t c0 = c[0];
+ uint8_t c1 = c[1];
+ uint8_t c2 = c[2];
+ uint8_t c3 = c[3];
+
+ for (;; s++)
+ {
+ if (s[3] == 0)
+ goto notfound;
+ if (*s == c0 && s[1] == c1 && s[2] == c2 && s[3] == c3)
+ break;
+ }
+ return (uint8_t *) s;
+ }
+ }
+notfound:
+ return NULL;
+}
diff --git a/lib/unistr/u8-strcmp.c b/lib/unistr/u8-strcmp.c
new file mode 100644
index 00000000..58b4b8c2
--- /dev/null
+++ b/lib/unistr/u8-strcmp.c
@@ -0,0 +1,30 @@
+/* Compare UTF-8 strings.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#include <string.h>
+
+int
+u8_strcmp (const uint8_t *s1, const uint8_t *s2)
+{
+ /* Use the fact that the UTF-8 encoding preserves lexicographic order. */
+ return strcmp ((const char *) s1, (const char *) s2);
+}
diff --git a/lib/unistr/u8-strcoll.c b/lib/unistr/u8-strcoll.c
new file mode 100644
index 00000000..ca08609e
--- /dev/null
+++ b/lib/unistr/u8-strcoll.c
@@ -0,0 +1,33 @@
+/* Compare UTF-8 strings using the collation rules of the current locale.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "uniconv.h"
+
+#define FUNC u8_strcoll
+#define UNIT uint8_t
+#define U_STRCMP u8_strcmp
+#define U_STRCONV_TO_LOCALE u8_strconv_to_locale
+#include "u-strcoll.h"
diff --git a/lib/unistr/u8-strcpy.c b/lib/unistr/u8-strcpy.c
new file mode 100644
index 00000000..b93c8cb4
--- /dev/null
+++ b/lib/unistr/u8-strcpy.c
@@ -0,0 +1,29 @@
+/* Copy UTF-8 string.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#include <string.h>
+
+uint8_t *
+u8_strcpy (uint8_t *dest, const uint8_t *src)
+{
+ return (uint8_t *) strcpy ((char *) dest, (const char *) src);
+}
diff --git a/lib/unistr/u8-strcspn.c b/lib/unistr/u8-strcspn.c
new file mode 100644
index 00000000..a43b53fb
--- /dev/null
+++ b/lib/unistr/u8-strcspn.c
@@ -0,0 +1,28 @@
+/* Search for some characters in UTF-8 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u8_strcspn
+#define UNIT uint8_t
+#define U_STRLEN u8_strlen
+#define U_STRMBTOUC u8_strmbtouc
+#define U_STRCHR u8_strchr
+#include "u-strcspn.h"
diff --git a/lib/unistr/u8-strdup.c b/lib/unistr/u8-strdup.c
new file mode 100644
index 00000000..feaa8725
--- /dev/null
+++ b/lib/unistr/u8-strdup.c
@@ -0,0 +1,40 @@
+/* Copy UTF-8 string.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#if HAVE_STRDUP
+
+# include <string.h>
+
+uint8_t *
+u8_strdup (const uint8_t *s)
+{
+ return (uint8_t *) strdup ((const char *) s);
+}
+
+#else
+
+# define FUNC u8_strdup
+# define UNIT uint8_t
+# define U_STRLEN u8_strlen
+# include "u-strdup.h"
+
+#endif
diff --git a/lib/unistr/u8-strlen.c b/lib/unistr/u8-strlen.c
new file mode 100644
index 00000000..cf5b9ceb
--- /dev/null
+++ b/lib/unistr/u8-strlen.c
@@ -0,0 +1,29 @@
+/* Determine length of UTF-8 string.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#include <string.h>
+
+size_t
+u8_strlen (const uint8_t *s)
+{
+ return strlen ((const char *) s);
+}
diff --git a/lib/unistr/u8-strmblen.c b/lib/unistr/u8-strmblen.c
new file mode 100644
index 00000000..52db99d0
--- /dev/null
+++ b/lib/unistr/u8-strmblen.c
@@ -0,0 +1,96 @@
+/* Look at first character in UTF-8 string.
+ Copyright (C) 1999-2000, 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u8_strmblen (const uint8_t *s)
+{
+ /* Keep in sync with unistr.h and utf8-ucs4.c. */
+ uint8_t c = *s;
+
+ if (c < 0x80)
+ return (c != 0 ? 1 : 0);
+ if (c >= 0xc2)
+ {
+ if (c < 0xe0)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40)
+#else
+ if (s[1] != 0)
+#endif
+ return 2;
+ }
+ else if (c < 0xf0)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (c >= 0xe1 || s[1] >= 0xa0)
+ && (c != 0xed || s[1] < 0xa0))
+#else
+ if (s[1] != 0 && s[2] != 0)
+#endif
+ return 3;
+ }
+ else if (c < 0xf8)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40
+ && (c >= 0xf1 || s[1] >= 0x90)
+#if 1
+ && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90))
+#endif
+ )
+#else
+ if (s[1] != 0 && s[2] != 0 && s[3] != 0)
+#endif
+ return 4;
+ }
+#if 0
+ else if (c < 0xfc)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (c >= 0xf9 || s[1] >= 0x88))
+#else
+ if (s[1] != 0 && s[2] != 0 && s[3] != 0 && s[4] != 0)
+#endif
+ return 5;
+ }
+ else if (c < 0xfe)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (s[5] ^ 0x80) < 0x40
+ && (c >= 0xfd || s[1] >= 0x84))
+#else
+ if (s[1] != 0 && s[2] != 0 && s[3] != 0 && s[4] != 0 && s[5] != 0)
+#endif
+ return 6;
+ }
+#endif
+ }
+ /* invalid or incomplete multibyte character */
+ return -1;
+}
diff --git a/lib/unistr/u8-strmbtouc.c b/lib/unistr/u8-strmbtouc.c
new file mode 100644
index 00000000..bc2fdb0d
--- /dev/null
+++ b/lib/unistr/u8-strmbtouc.c
@@ -0,0 +1,129 @@
+/* Look at first character in UTF-8 string.
+ Copyright (C) 1999-2000, 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u8_strmbtouc (ucs4_t *puc, const uint8_t *s)
+{
+ /* Keep in sync with unistr.h and utf8-ucs4.c. */
+ uint8_t c = *s;
+
+ if (c < 0x80)
+ {
+ *puc = c;
+ return (c != 0 ? 1 : 0);
+ }
+ if (c >= 0xc2)
+ {
+ if (c < 0xe0)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40)
+#else
+ if (s[1] != 0)
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x1f) << 6)
+ | (unsigned int) (s[1] ^ 0x80);
+ return 2;
+ }
+ }
+ else if (c < 0xf0)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (c >= 0xe1 || s[1] >= 0xa0)
+ && (c != 0xed || s[1] < 0xa0))
+#else
+ if (s[1] != 0 && s[2] != 0)
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x0f) << 12)
+ | ((unsigned int) (s[1] ^ 0x80) << 6)
+ | (unsigned int) (s[2] ^ 0x80);
+ return 3;
+ }
+ }
+ else if (c < 0xf8)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40
+ && (c >= 0xf1 || s[1] >= 0x90)
+#if 1
+ && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90))
+#endif
+ )
+#else
+ if (s[1] != 0 && s[2] != 0 && s[3] != 0)
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x07) << 18)
+ | ((unsigned int) (s[1] ^ 0x80) << 12)
+ | ((unsigned int) (s[2] ^ 0x80) << 6)
+ | (unsigned int) (s[3] ^ 0x80);
+ return 4;
+ }
+ }
+#if 0
+ else if (c < 0xfc)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (c >= 0xf9 || s[1] >= 0x88))
+#else
+ if (s[1] != 0 && s[2] != 0 && s[3] != 0 && s[4] != 0)
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x03) << 24)
+ | ((unsigned int) (s[1] ^ 0x80) << 18)
+ | ((unsigned int) (s[2] ^ 0x80) << 12)
+ | ((unsigned int) (s[3] ^ 0x80) << 6)
+ | (unsigned int) (s[4] ^ 0x80);
+ return 5;
+ }
+ }
+ else if (c < 0xfe)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (s[5] ^ 0x80) < 0x40
+ && (c >= 0xfd || s[1] >= 0x84))
+#else
+ if (s[1] != 0 && s[2] != 0 && s[3] != 0 && s[4] != 0 && s[5] != 0)
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x01) << 30)
+ | ((unsigned int) (s[1] ^ 0x80) << 24)
+ | ((unsigned int) (s[2] ^ 0x80) << 18)
+ | ((unsigned int) (s[3] ^ 0x80) << 12)
+ | ((unsigned int) (s[4] ^ 0x80) << 6)
+ | (unsigned int) (s[5] ^ 0x80);
+ return 6;
+ }
+ }
+#endif
+ }
+ /* invalid or incomplete multibyte character */
+ return -1;
+}
diff --git a/lib/unistr/u8-strncat.c b/lib/unistr/u8-strncat.c
new file mode 100644
index 00000000..d9654602
--- /dev/null
+++ b/lib/unistr/u8-strncat.c
@@ -0,0 +1,29 @@
+/* Concatenate UTF-8 strings.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#include <string.h>
+
+uint8_t *
+u8_strncat (uint8_t *dest, const uint8_t *src, size_t n)
+{
+ return (uint8_t *) strncat ((char *) dest, (const char *) src, n);
+}
diff --git a/lib/unistr/u8-strncmp.c b/lib/unistr/u8-strncmp.c
new file mode 100644
index 00000000..5aad7e76
--- /dev/null
+++ b/lib/unistr/u8-strncmp.c
@@ -0,0 +1,30 @@
+/* Compare UTF-8 strings.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#include <string.h>
+
+int
+u8_strncmp (const uint8_t *s1, const uint8_t *s2, size_t n)
+{
+ /* Use the fact that the UTF-8 encoding preserves lexicographic order. */
+ return strncmp ((const char *) s1, (const char *) s2, n);
+}
diff --git a/lib/unistr/u8-strncpy.c b/lib/unistr/u8-strncpy.c
new file mode 100644
index 00000000..f478fab6
--- /dev/null
+++ b/lib/unistr/u8-strncpy.c
@@ -0,0 +1,29 @@
+/* Copy UTF-8 string.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#include <string.h>
+
+uint8_t *
+u8_strncpy (uint8_t *dest, const uint8_t *src, size_t n)
+{
+ return (uint8_t *) strncpy ((char *) dest, (const char *) src, n);
+}
diff --git a/lib/unistr/u8-strnlen.c b/lib/unistr/u8-strnlen.c
new file mode 100644
index 00000000..32ce7b88
--- /dev/null
+++ b/lib/unistr/u8-strnlen.c
@@ -0,0 +1,44 @@
+/* Determine bounded length of UTF-8 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Ensure strnlen() gets declared. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#if __GLIBC__ >= 2
+
+# include <string.h>
+
+size_t
+u8_strnlen (const uint8_t *s, size_t maxlen)
+{
+ return strnlen ((const char *) s, maxlen);
+}
+
+#else
+
+# define FUNC u8_strnlen
+# define UNIT uint8_t
+# include "u-strnlen.h"
+
+#endif
diff --git a/lib/unistr/u8-strpbrk.c b/lib/unistr/u8-strpbrk.c
new file mode 100644
index 00000000..1538faa7
--- /dev/null
+++ b/lib/unistr/u8-strpbrk.c
@@ -0,0 +1,27 @@
+/* Search for some characters in UTF-8 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u8_strpbrk
+#define UNIT uint8_t
+#define U_STRMBTOUC u8_strmbtouc
+#define U_STRCHR u8_strchr
+#include "u-strpbrk.h"
diff --git a/lib/unistr/u8-strrchr.c b/lib/unistr/u8-strrchr.c
new file mode 100644
index 00000000..309f3234
--- /dev/null
+++ b/lib/unistr/u8-strrchr.c
@@ -0,0 +1,101 @@
+/* Search character in UTF-8 string.
+ Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+uint8_t *
+u8_strrchr (const uint8_t *s, ucs4_t uc)
+{
+ /* Calling u8_strlen and then searching from the other end would cause more
+ memory accesses. Avoid that, at the cost of a few more comparisons. */
+ uint8_t *result = NULL;
+ uint8_t c[6];
+
+ if (uc < 0x80)
+ {
+ uint8_t c0 = uc;
+
+ for (;; s++)
+ {
+ if (*s == c0)
+ result = (uint8_t *) s;
+ if (*s == 0)
+ break;
+ }
+ }
+ else
+ switch (u8_uctomb_aux (c, uc, 6))
+ {
+ case 2:
+ if (*s)
+ {
+ uint8_t c0 = c[0];
+ uint8_t c1 = c[1];
+
+ /* FIXME: Maybe walking the string via u8_mblen is a win? */
+ for (;; s++)
+ {
+ if (s[1] == 0)
+ break;
+ if (*s == c0 && s[1] == c1)
+ result = (uint8_t *) s;
+ }
+ }
+ break;
+
+ case 3:
+ if (*s && s[1])
+ {
+ uint8_t c0 = c[0];
+ uint8_t c1 = c[1];
+ uint8_t c2 = c[2];
+
+ /* FIXME: Maybe walking the string via u8_mblen is a win? */
+ for (;; s++)
+ {
+ if (s[2] == 0)
+ break;
+ if (*s == c0 && s[1] == c1 && s[2] == c2)
+ result = (uint8_t *) s;
+ }
+ }
+ break;
+
+ case 4:
+ if (*s && s[1] && s[2])
+ {
+ uint8_t c0 = c[0];
+ uint8_t c1 = c[1];
+ uint8_t c2 = c[2];
+ uint8_t c3 = c[3];
+
+ /* FIXME: Maybe walking the string via u8_mblen is a win? */
+ for (;; s++)
+ {
+ if (s[3] == 0)
+ break;
+ if (*s == c0 && s[1] == c1 && s[2] == c2 && s[3] == c3)
+ result = (uint8_t *) s;
+ }
+ }
+ break;
+ }
+ return result;
+}
diff --git a/lib/unistr/u8-strspn.c b/lib/unistr/u8-strspn.c
new file mode 100644
index 00000000..582c8259
--- /dev/null
+++ b/lib/unistr/u8-strspn.c
@@ -0,0 +1,29 @@
+/* Search for some characters in UTF-8 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u8_strspn
+#define UNIT uint8_t
+#define U_STRLEN u8_strlen
+#define U_STRMBTOUC u8_strmbtouc
+#define U_CMP u8_cmp
+#define U_STRCHR u8_strchr
+#include "u-strspn.h"
diff --git a/lib/unistr/u8-strstr.c b/lib/unistr/u8-strstr.c
new file mode 100644
index 00000000..b5cbf249
--- /dev/null
+++ b/lib/unistr/u8-strstr.c
@@ -0,0 +1,28 @@
+/* Substring test for UTF-8 strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+/* FIXME: Maybe walking the string via u8_mblen is a win? */
+
+#define FUNC u8_strstr
+#define UNIT uint8_t
+#define U_STRCHR u8_strchr
+#include "u-strstr.h"
diff --git a/lib/unistr/u8-strtok.c b/lib/unistr/u8-strtok.c
new file mode 100644
index 00000000..a8d3821d
--- /dev/null
+++ b/lib/unistr/u8-strtok.c
@@ -0,0 +1,27 @@
+/* Tokenize UTF-8 string.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u8_strtok
+#define UNIT uint8_t
+#define U_STRSPN u8_strspn
+#define U_STRPBRK u8_strpbrk
+#include "u-strtok.h"
diff --git a/lib/unistr/u8-to-u16.c b/lib/unistr/u8-to-u16.c
new file mode 100644
index 00000000..03c66000
--- /dev/null
+++ b/lib/unistr/u8-to-u16.c
@@ -0,0 +1,136 @@
+/* Convert UTF-8 string to UTF-16 string.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u8_to_u16
+#define SRC_UNIT uint8_t
+#define DST_UNIT uint16_t
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+DST_UNIT *
+FUNC (const SRC_UNIT *s, size_t n, DST_UNIT *resultbuf, size_t *lengthp)
+{
+ const SRC_UNIT *s_end = s + n;
+ /* Output string accumulator. */
+ DST_UNIT *result;
+ size_t allocated;
+ size_t length;
+
+ if (resultbuf != NULL)
+ {
+ result = resultbuf;
+ allocated = *lengthp;
+ }
+ else
+ {
+ result = NULL;
+ allocated = 0;
+ }
+ length = 0;
+ /* Invariants:
+ result is either == resultbuf or == NULL or malloc-allocated.
+ If length > 0, then result != NULL. */
+
+ while (s < s_end)
+ {
+ ucs4_t uc;
+ int count;
+
+ /* Fetch a Unicode character from the input string. */
+ count = u8_mbtouc (&uc, s, s_end - s);
+ if (count < 0)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ errno = EILSEQ;
+ return NULL;
+ }
+ s += count;
+
+ /* Store it in the output string. */
+ count = u16_uctomb (result + length, uc, allocated - length);
+ if (count == -1)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ errno = EILSEQ;
+ return NULL;
+ }
+ if (count == -2)
+ {
+ DST_UNIT *memory;
+
+ allocated = (allocated > 0 ? 2 * allocated : 12);
+ if (length + 2 > allocated)
+ allocated = length + 2;
+ if (result == resultbuf || result == NULL)
+ memory = (DST_UNIT *) malloc (allocated * sizeof (DST_UNIT));
+ else
+ memory =
+ (DST_UNIT *) realloc (result, allocated * sizeof (DST_UNIT));
+
+ if (memory == NULL)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ errno = ENOMEM;
+ return NULL;
+ }
+ if (result == resultbuf && length > 0)
+ memcpy ((char *) memory, (char *) result,
+ length * sizeof (DST_UNIT));
+ result = memory;
+ count = u16_uctomb (result + length, uc, allocated - length);
+ if (count < 0)
+ abort ();
+ }
+ length += count;
+ }
+
+ if (length == 0)
+ {
+ if (result == NULL)
+ {
+ /* Return a non-NULL value. NULL means error. */
+ result = (DST_UNIT *) malloc (1);
+ if (result == NULL)
+ {
+ errno = ENOMEM;
+ return NULL;
+ }
+ }
+ }
+ else if (result != resultbuf && length < allocated)
+ {
+ /* Shrink the allocated memory if possible. */
+ DST_UNIT *memory;
+
+ memory = (DST_UNIT *) realloc (result, length * sizeof (DST_UNIT));
+ if (memory != NULL)
+ result = memory;
+ }
+
+ *lengthp = length;
+ return result;
+}
diff --git a/lib/unistr/u8-to-u32.c b/lib/unistr/u8-to-u32.c
new file mode 100644
index 00000000..2a0ad39e
--- /dev/null
+++ b/lib/unistr/u8-to-u32.c
@@ -0,0 +1,125 @@
+/* Convert UTF-8 string to UTF-32 string.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#define FUNC u8_to_u32
+#define SRC_UNIT uint8_t
+#define DST_UNIT uint32_t
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+DST_UNIT *
+FUNC (const SRC_UNIT *s, size_t n, DST_UNIT *resultbuf, size_t *lengthp)
+{
+ const SRC_UNIT *s_end = s + n;
+ /* Output string accumulator. */
+ DST_UNIT *result;
+ size_t allocated;
+ size_t length;
+
+ if (resultbuf != NULL)
+ {
+ result = resultbuf;
+ allocated = *lengthp;
+ }
+ else
+ {
+ result = NULL;
+ allocated = 0;
+ }
+ length = 0;
+ /* Invariants:
+ result is either == resultbuf or == NULL or malloc-allocated.
+ If length > 0, then result != NULL. */
+
+ while (s < s_end)
+ {
+ ucs4_t uc;
+ int count;
+
+ /* Fetch a Unicode character from the input string. */
+ count = u8_mbtouc (&uc, s, s_end - s);
+ if (count < 0)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ errno = EILSEQ;
+ return NULL;
+ }
+ s += count;
+
+ /* Store it in the output string. */
+ if (length + 1 > allocated)
+ {
+ DST_UNIT *memory;
+
+ allocated = (allocated > 0 ? 2 * allocated : 12);
+ if (length + 1 > allocated)
+ allocated = length + 1;
+ if (result == resultbuf || result == NULL)
+ memory = (DST_UNIT *) malloc (allocated * sizeof (DST_UNIT));
+ else
+ memory =
+ (DST_UNIT *) realloc (result, allocated * sizeof (DST_UNIT));
+
+ if (memory == NULL)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ errno = ENOMEM;
+ return NULL;
+ }
+ if (result == resultbuf && length > 0)
+ memcpy ((char *) memory, (char *) result,
+ length * sizeof (DST_UNIT));
+ result = memory;
+ }
+ result[length++] = uc;
+ }
+
+ if (length == 0)
+ {
+ if (result == NULL)
+ {
+ /* Return a non-NULL value. NULL means error. */
+ result = (DST_UNIT *) malloc (1);
+ if (result == NULL)
+ {
+ errno = ENOMEM;
+ return NULL;
+ }
+ }
+ }
+ else if (result != resultbuf && length < allocated)
+ {
+ /* Shrink the allocated memory if possible. */
+ DST_UNIT *memory;
+
+ memory = (DST_UNIT *) realloc (result, length * sizeof (DST_UNIT));
+ if (memory != NULL)
+ result = memory;
+ }
+
+ *lengthp = length;
+ return result;
+}
diff --git a/lib/unistr/u8-uctomb-aux.c b/lib/unistr/u8-uctomb-aux.c
new file mode 100644
index 00000000..c42fa501
--- /dev/null
+++ b/lib/unistr/u8-uctomb-aux.c
@@ -0,0 +1,69 @@
+/* Conversion UCS-4 to UTF-8.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u8_uctomb_aux (uint8_t *s, ucs4_t uc, int n)
+{
+ int count;
+
+ if (uc < 0x80)
+ /* The case n >= 1 is already handled by the caller. */
+ return -2;
+ else if (uc < 0x800)
+ count = 2;
+ else if (uc < 0x10000)
+ {
+ if (uc < 0xd800 || uc >= 0xe000)
+ count = 3;
+ else
+ return -1;
+ }
+#if 0
+ else if (uc < 0x200000)
+ count = 4;
+ else if (uc < 0x4000000)
+ count = 5;
+ else if (uc <= 0x7fffffff)
+ count = 6;
+#else
+ else if (uc < 0x110000)
+ count = 4;
+#endif
+ else
+ return -1;
+
+ if (n < count)
+ return -2;
+
+ switch (count) /* note: code falls through cases! */
+ {
+#if 0
+ case 6: s[5] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x4000000;
+ case 5: s[4] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x200000;
+#endif
+ case 4: s[3] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x10000;
+ case 3: s[2] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x800;
+ case 2: s[1] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0xc0;
+ /*case 1:*/ s[0] = uc;
+ }
+ return count;
+}
diff --git a/lib/unistr/u8-uctomb.c b/lib/unistr/u8-uctomb.c
new file mode 100644
index 00000000..33921669
--- /dev/null
+++ b/lib/unistr/u8-uctomb.c
@@ -0,0 +1,88 @@
+/* Store a character in UTF-8 string.
+ Copyright (C) 2002, 2005-2006, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#if defined IN_LIBUNISTRING
+/* Tell unistr.h to declare u8_uctomb as 'extern', not 'static inline'. */
+# include "unistring-notinline.h"
+#endif
+
+/* Specification. */
+#include "unistr.h"
+
+#if !HAVE_INLINE
+
+int
+u8_uctomb (uint8_t *s, ucs4_t uc, int n)
+{
+ if (uc < 0x80)
+ {
+ if (n > 0)
+ {
+ s[0] = uc;
+ return 1;
+ }
+ /* else return -2, below. */
+ }
+ else
+ {
+ int count;
+
+ if (uc < 0x800)
+ count = 2;
+ else if (uc < 0x10000)
+ {
+ if (uc < 0xd800 || uc >= 0xe000)
+ count = 3;
+ else
+ return -1;
+ }
+#if 0
+ else if (uc < 0x200000)
+ count = 4;
+ else if (uc < 0x4000000)
+ count = 5;
+ else if (uc <= 0x7fffffff)
+ count = 6;
+#else
+ else if (uc < 0x110000)
+ count = 4;
+#endif
+ else
+ return -1;
+
+ if (n >= count)
+ {
+ switch (count) /* note: code falls through cases! */
+ {
+#if 0
+ case 6: s[5] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x4000000;
+ case 5: s[4] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x200000;
+#endif
+ case 4: s[3] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x10000;
+ case 3: s[2] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x800;
+ case 2: s[1] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0xc0;
+ /*case 1:*/ s[0] = uc;
+ }
+ return count;
+ }
+ }
+ return -2;
+}
+
+#endif
diff --git a/lib/unistring-notinline.h b/lib/unistring-notinline.h
new file mode 100644
index 00000000..e7e5faa3
--- /dev/null
+++ b/lib/unistring-notinline.h
@@ -0,0 +1,23 @@
+/* Override decision whether to use 'inline' or not.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include "unistring/inline.h"
+#undef UNISTRING_HAVE_INLINE
+#define UNISTRING_HAVE_INLINE 0
+#undef HAVE_INLINE
+#define HAVE_INLINE 0
diff --git a/lib/unistring/inline.h b/lib/unistring/inline.h
new file mode 100644
index 00000000..bdb0b229
--- /dev/null
+++ b/lib/unistring/inline.h
@@ -0,0 +1,68 @@
+/* Decision whether to use 'inline' or not.
+ Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#ifndef _UNISTRING_INLINE_H
+#define _UNISTRING_INLINE_H
+
+/* This is like the gl_INLINE macro in gnulib/m4/inline.m4, but makes its
+ decision based on defined preprocessor symbols rather than through
+ autoconf tests.
+ See <http://lists.gnu.org/archive/html/bug-gnulib/2006-11/msg00055.html> */
+
+/* Test for the 'inline' keyword or equivalent. ISO C 99 semantics is not
+ required, only that 'static inline' works.
+ Define 'inline' to a supported equivalent, or to nothing if not supported,
+ like AC_C_INLINE does. Also, define UNISTRING_HAVE_INLINE if 'inline' or an
+ equivalent is effectively supported, i.e. if the compiler is likely to
+ drop unused 'static inline' functions. */
+
+#if defined __GNUC__
+/* GNU C or GNU C++. */
+# if defined __NO_INLINE__
+/* GCC defines __NO_INLINE__ if not optimizing or if -fno-inline is
+ specified. */
+# define UNISTRING_HAVE_INLINE 0
+# else
+/* Whether 'inline' has the old GCC semantics or the ISO C 99 semantics,
+ does not matter. */
+# define UNISTRING_HAVE_INLINE 1
+# ifndef inline
+# define inline __inline__
+# endif
+# endif
+#elif defined __cplusplus
+/* Any other C++ compiler. */
+# define UNISTRING_HAVE_INLINE 1
+#else
+/* Any other C compiler. */
+# if defined __osf__
+/* OSF/1 cc has inline. */
+# define UNISTRING_HAVE_INLINE 1
+# elif defined _AIX || defined __sgi
+/* AIX 4 xlc, IRIX 6.5 cc have __inline. */
+# define UNISTRING_HAVE_INLINE 1
+# ifndef inline
+# define inline __inline
+# endif
+# else
+/* Some older C compiler. */
+# define UNISTRING_HAVE_INLINE 0
+# endif
+#endif
+
+#endif /* _UNISTRING_INLINE_H */
diff --git a/lib/unistring/version.in.h b/lib/unistring/version.in.h
new file mode 100644
index 00000000..47b736ad
--- /dev/null
+++ b/lib/unistring/version.in.h
@@ -0,0 +1,39 @@
+/* Meta information about GNU libunistring.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _UNISTRING_VERSION_H
+#define _UNISTRING_VERSION_H
+
+/* Get LIBUNISTRING_DLL_VARIABLE. */
+#include <unistring/woe32dll.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define _LIBUNISTRING_VERSION @HEXVERSION@ /* version number: (major<<8) + minor */
+extern LIBUNISTRING_DLL_VARIABLE const int _libunistring_version; /* Likewise */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _UNISTRING_VERSION_H */
diff --git a/lib/unistring/woe32dll.in.h b/lib/unistring/woe32dll.in.h
new file mode 100644
index 00000000..7764c86e
--- /dev/null
+++ b/lib/unistring/woe32dll.in.h
@@ -0,0 +1,30 @@
+/* Support for variables in shared libraries on Windows platforms.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#ifndef _UNISTRING_WOE32DLL_H
+#define _UNISTRING_WOE32DLL_H
+
+#ifdef IN_LIBUNISTRING
+/* All code is collected in a single library, */
+# define LIBUNISTRING_DLL_VARIABLE
+#else
+/* References from outside of libunistring. */
+# define LIBUNISTRING_DLL_VARIABLE @DLL_VARIABLE@
+#endif
+
+#endif /* _UNISTRING_WOE32DLL_H */
diff --git a/lib/unitypes.h b/lib/unitypes.h
new file mode 100644
index 00000000..515f7adc
--- /dev/null
+++ b/lib/unitypes.h
@@ -0,0 +1,26 @@
+/* Elementary types for the GNU UniString library.
+ Copyright (C) 2002, 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 Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _UNITYPES_H
+#define _UNITYPES_H
+
+/* Get uint8_t, uint16_t, uint32_t. */
+#include <unistring/stdint.h>
+
+/* Type representing a Unicode character. */
+typedef uint32_t ucs4_t;
+
+#endif /* _UNITYPES_H */
diff --git a/lib/uniwbrk.h b/lib/uniwbrk.h
new file mode 100644
index 00000000..c6ad971e
--- /dev/null
+++ b/lib/uniwbrk.h
@@ -0,0 +1,83 @@
+/* Word breaks in Unicode strings.
+ Copyright (C) 2001-2003, 2005-2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _UNIWBRK_H
+#define _UNIWBRK_H
+
+/* Get size_t. */
+#include <stddef.h>
+
+#include "unitypes.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ========================================================================= */
+
+/* Property defined in Unicode Standard Annex #29, section "Word Boundaries"
+ <http://www.unicode.org/reports/tr29/#Word_Boundaries> */
+
+/* Possible values of the Word_Break property.
+ This enumeration may be extended in the future. */
+enum
+{
+ WBP_OTHER = 0,
+ WBP_CR = 11,
+ WBP_LF = 12,
+ WBP_NEWLINE = 10,
+ WBP_EXTEND = 8,
+ WBP_FORMAT = 9,
+ WBP_KATAKANA = 1,
+ WBP_ALETTER = 2,
+ WBP_MIDNUMLET = 3,
+ WBP_MIDLETTER = 4,
+ WBP_MIDNUM = 5,
+ WBP_NUMERIC = 6,
+ WBP_EXTENDNUMLET = 7
+};
+
+/* Return the Word_Break property of a Unicode character. */
+extern int
+ uc_wordbreak_property (ucs4_t uc);
+
+/* ========================================================================= */
+
+/* Word breaks. */
+
+/* Determine the word break points in S, and store the result at p[0..n-1].
+ p[i] = 1 means that there is a word boundary between s[i-1] and s[i].
+ p[i] = 0 means that s[i-1] and s[i] must not be separated.
+ */
+extern void
+ u8_wordbreaks (const uint8_t *s, size_t n, char *p);
+extern void
+ u16_wordbreaks (const uint16_t *s, size_t n, char *p);
+extern void
+ u32_wordbreaks (const uint32_t *s, size_t n, char *p);
+extern void
+ ulc_wordbreaks (const char *s, size_t n, char *p);
+
+/* ========================================================================= */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _UNIWBRK_H */
diff --git a/lib/uniwbrk/u-wordbreaks.h b/lib/uniwbrk/u-wordbreaks.h
new file mode 100644
index 00000000..5ef4e8c1
--- /dev/null
+++ b/lib/uniwbrk/u-wordbreaks.h
@@ -0,0 +1,127 @@
+/* Word breaks in UTF-8/UTF-16/UTF-32 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+void
+FUNC (const UNIT *s, size_t n, char *p)
+{
+ if (n > 0)
+ {
+ const UNIT *s_end = s + n;
+
+ /* Word break property of the last character.
+ -1 at the very beginning of the string. */
+ int last_char_prop = -1;
+
+ /* Format and Extend characters are ignored; this means, the mostly used
+ unit is the complex character (= character with subsequent ignored
+ characters).
+ Word break property of the last complex character.
+ -1 at the very beginning of the string. */
+ int last_compchar_prop = -1;
+ char *last_compchar_ptr = NULL;
+
+ /* For recognizing rules involving 3 complex characters:
+ Word break property of the second-to-last complex character.
+ -1 at the very beginning of the string. */
+ int secondlast_compchar_prop = -1;
+
+ /* Don't break inside multibyte characters. */
+ memset (p, 0, n);
+
+ while (s < s_end)
+ {
+ ucs4_t uc;
+ int count = U_MBTOUC_UNSAFE (&uc, s, s_end - s);
+ int prop = uc_wordbreak_property (uc);
+
+ /* No break at the start of the string. */
+ if (last_char_prop >= 0)
+ {
+ /* No break between CR and LF. */
+ if (last_char_prop == WBP_CR && prop == WBP_LF)
+ /* *p = 0 */;
+ /* Break before and after newlines. */
+ else if (last_char_prop >= WBP_NEWLINE
+ /* same as:
+ last_char_prop == WBP_CR
+ || last_char_prop == WBP_LF
+ || last_char_prop == WBP_NEWLINE */
+ || prop >= WBP_NEWLINE
+ /* same as:
+ prop == WBP_CR
+ || prop == WBP_LF
+ || prop == WBP_NEWLINE */)
+ *p = 1;
+ /* Ignore Format and Extend characters. */
+ else if (!(prop == WBP_EXTEND || prop == WBP_FORMAT))
+ {
+ /* No break in these situations (see UAX #29):
+
+ secondlast last current
+
+ ALetter (MidLetter | MidNumLet) × ALetter (WB7)
+ ALetter × (MidLetter | MidNumLet) ALetter (WB6)
+ Numeric (MidNum | MidNumLet) × Numeric (WB11)
+ Numeric × (MidNum | MidNumLet) Numeric (WB12)
+ ALetter × ALetter (WB5)
+ ALetter × Numeric (WB9)
+ Numeric × ALetter (WB10)
+ Numeric × Numeric (WB8)
+ Katakana × Katakana (WB13)
+ (ALetter | Numeric | Katakana) × ExtendNumLet (WB13a)
+ ExtendNumLet × ExtendNumLet (WB13a)
+ ExtendNumLet × (ALetter | Numeric | Katakana) (WB13b)
+ */
+ /* No break across certain punctuation. Also, disable word
+ breaks that were recognized earlier (due to lookahead of
+ only one complex character). */
+ if ((prop == WBP_ALETTER
+ && (last_compchar_prop == WBP_MIDLETTER
+ || last_compchar_prop == WBP_MIDNUMLET)
+ && secondlast_compchar_prop == WBP_ALETTER)
+ || (prop == WBP_NUMERIC
+ && (last_compchar_prop == WBP_MIDNUM
+ || last_compchar_prop == WBP_MIDNUMLET)
+ && secondlast_compchar_prop == WBP_NUMERIC))
+ {
+ *last_compchar_ptr = 0;
+ /* *p = 0; */
+ }
+ else
+ {
+ /* Perform a single table lookup. */
+ if (uniwbrk_table[last_compchar_prop][prop])
+ *p = 1;
+ /* else *p = 0; */
+ }
+ }
+ }
+
+ last_char_prop = prop;
+ /* Ignore Format and Extend characters, except at the start of the string. */
+ if (last_compchar_prop < 0 || !(prop == WBP_EXTEND || prop == WBP_FORMAT))
+ {
+ secondlast_compchar_prop = last_compchar_prop;
+ last_compchar_prop = prop;
+ last_compchar_ptr = p;
+ }
+
+ s += count;
+ p += count;
+ }
+ }
+}
diff --git a/lib/uniwbrk/u16-wordbreaks.c b/lib/uniwbrk/u16-wordbreaks.c
new file mode 100644
index 00000000..3398fd3a
--- /dev/null
+++ b/lib/uniwbrk/u16-wordbreaks.c
@@ -0,0 +1,31 @@
+/* Word breaks in UTF-16 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniwbrk.h"
+
+#include <string.h>
+
+#include "unistr.h"
+#include "uniwbrk/wbrktable.h"
+
+#define FUNC u16_wordbreaks
+#define UNIT uint16_t
+#define U_MBTOUC_UNSAFE u16_mbtouc_unsafe
+#include "u-wordbreaks.h"
diff --git a/lib/uniwbrk/u32-wordbreaks.c b/lib/uniwbrk/u32-wordbreaks.c
new file mode 100644
index 00000000..6763fb9e
--- /dev/null
+++ b/lib/uniwbrk/u32-wordbreaks.c
@@ -0,0 +1,31 @@
+/* Word breaks in UTF-32 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniwbrk.h"
+
+#include <string.h>
+
+#include "unistr.h"
+#include "uniwbrk/wbrktable.h"
+
+#define FUNC u32_wordbreaks
+#define UNIT uint32_t
+#define U_MBTOUC_UNSAFE u32_mbtouc_unsafe
+#include "u-wordbreaks.h"
diff --git a/lib/uniwbrk/u8-wordbreaks.c b/lib/uniwbrk/u8-wordbreaks.c
new file mode 100644
index 00000000..59d2076d
--- /dev/null
+++ b/lib/uniwbrk/u8-wordbreaks.c
@@ -0,0 +1,124 @@
+/* Word breaks in UTF-8 strings.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniwbrk.h"
+
+#include <string.h>
+
+#include "unistr.h"
+#include "uniwbrk/wbrktable.h"
+
+#define FUNC u8_wordbreaks
+#define UNIT uint8_t
+#define U_MBTOUC_UNSAFE u8_mbtouc_unsafe
+#include "u-wordbreaks.h"
+
+
+#ifdef TEST
+
+#include <stdio.h>
+#include <stdlib.h>
+
+/* Read the contents of an input stream, and return it, terminated with a NUL
+ byte. */
+char *
+read_file (FILE *stream)
+{
+#define BUFSIZE 4096
+ char *buf = NULL;
+ int alloc = 0;
+ int size = 0;
+ int count;
+
+ while (! feof (stream))
+ {
+ if (size + BUFSIZE > alloc)
+ {
+ alloc = alloc + alloc / 2;
+ if (alloc < size + BUFSIZE)
+ alloc = size + BUFSIZE;
+ buf = realloc (buf, alloc);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ }
+ count = fread (buf + size, 1, BUFSIZE, stream);
+ if (count == 0)
+ {
+ if (ferror (stream))
+ {
+ perror ("fread");
+ exit (1);
+ }
+ }
+ else
+ size += count;
+ }
+ buf = realloc (buf, size + 1);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ buf[size] = '\0';
+ return buf;
+#undef BUFSIZE
+}
+
+int
+main (int argc, char * argv[])
+{
+ if (argc == 1)
+ {
+ /* Display all the word breaks in the input string. */
+ char *input = read_file (stdin);
+ int length = strlen (input);
+ char *breaks = malloc (length);
+ int i;
+
+ u8_wordbreaks ((uint8_t *) input, length, breaks);
+
+ for (i = 0; i < length; i++)
+ {
+ switch (breaks[i])
+ {
+ case 1:
+ /* U+2027 in UTF-8 encoding */
+ putc (0xe2, stdout); putc (0x80, stdout); putc (0xa7, stdout);
+ break;
+ case 0:
+ break;
+ default:
+ abort ();
+ }
+ putc (input[i], stdout);
+ }
+
+ free (breaks);
+
+ return 0;
+ }
+ else
+ return 1;
+}
+
+#endif /* TEST */
diff --git a/lib/uniwbrk/ulc-wordbreaks.c b/lib/uniwbrk/ulc-wordbreaks.c
new file mode 100644
index 00000000..cb6e131c
--- /dev/null
+++ b/lib/uniwbrk/ulc-wordbreaks.c
@@ -0,0 +1,201 @@
+/* Word breaks in strings.
+ Copyright (C) 2001-2003, 2006-2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniwbrk.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "c-ctype.h"
+#include "localcharset.h"
+#include "uniconv.h"
+#include "unilbrk/ulc-common.h"
+
+/* Word breaks of a string in an arbitrary encoding.
+
+ We convert the input string to Unicode.
+
+ The standardized Unicode encodings are UTF-8, UCS-2, UCS-4, UTF-16,
+ UTF-16BE, UTF-16LE, UTF-7. UCS-2 supports only characters up to
+ \U0000FFFF. UTF-16 and variants support only characters up to
+ \U0010FFFF. UTF-7 is way too complex and not supported by glibc-2.1.
+ UCS-4 specification leaves doubts about endianness and byte order mark.
+ glibc currently interprets it as big endian without byte order mark,
+ but this is not backed by an RFC. So we use UTF-8. It supports
+ characters up to \U7FFFFFFF and is unambiguously defined. */
+
+void
+ulc_wordbreaks (const char *s, size_t n, char *p)
+{
+ if (n > 0)
+ {
+ const char *encoding = locale_charset ();
+
+ if (is_utf8_encoding (encoding))
+ u8_wordbreaks ((const uint8_t *) s, n, p);
+ else
+ {
+ /* Convert the string to UTF-8 and build a translation table
+ from offsets into s to offsets into the translated string. */
+ size_t *offsets = (size_t *) malloc (n * sizeof (size_t));
+
+ if (offsets != NULL)
+ {
+ uint8_t *t;
+ size_t m;
+
+ t = u8_conv_from_encoding (encoding, iconveh_question_mark,
+ s, n, offsets, NULL, &m);
+ if (t != NULL)
+ {
+ char *q = (char *) (m > 0 ? malloc (m) : NULL);
+
+ if (m == 0 || q != NULL)
+ {
+ size_t i;
+
+ /* Determine the word breaks of the UTF-8 string. */
+ u8_wordbreaks (t, m, q);
+
+ /* Translate the result back to the original string. */
+ memset (p, 0, n);
+ for (i = 0; i < n; i++)
+ if (offsets[i] != (size_t)(-1))
+ p[i] = q[offsets[i]];
+
+ free (q);
+ free (t);
+ free (offsets);
+ return;
+ }
+ free (t);
+ }
+ free (offsets);
+ }
+
+ /* Impossible to convert. */
+#if C_CTYPE_ASCII
+ if (is_all_ascii (s, n))
+ {
+ /* ASCII is a subset of UTF-8. */
+ u8_wordbreaks ((const uint8_t *) s, n, p);
+ return;
+ }
+#endif
+ /* We have a non-ASCII string and cannot convert it.
+ Don't produce any word breaks. */
+ memset (p, 0, n);
+ }
+ }
+}
+
+
+#ifdef TEST
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+/* Read the contents of an input stream, and return it, terminated with a NUL
+ byte. */
+char *
+read_file (FILE *stream)
+{
+#define BUFSIZE 4096
+ char *buf = NULL;
+ int alloc = 0;
+ int size = 0;
+ int count;
+
+ while (! feof (stream))
+ {
+ if (size + BUFSIZE > alloc)
+ {
+ alloc = alloc + alloc / 2;
+ if (alloc < size + BUFSIZE)
+ alloc = size + BUFSIZE;
+ buf = realloc (buf, alloc);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ }
+ count = fread (buf + size, 1, BUFSIZE, stream);
+ if (count == 0)
+ {
+ if (ferror (stream))
+ {
+ perror ("fread");
+ exit (1);
+ }
+ }
+ else
+ size += count;
+ }
+ buf = realloc (buf, size + 1);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ buf[size] = '\0';
+ return buf;
+#undef BUFSIZE
+}
+
+int
+main (int argc, char * argv[])
+{
+ setlocale (LC_CTYPE, "");
+ if (argc == 1)
+ {
+ /* Display all the word breaks in the input string. */
+ char *input = read_file (stdin);
+ int length = strlen (input);
+ char *breaks = malloc (length);
+ int i;
+
+ ulc_wordbreaks (input, length, breaks);
+
+ for (i = 0; i < length; i++)
+ {
+ switch (breaks[i])
+ {
+ case 1:
+ putc ('|', stdout);
+ break;
+ case 0:
+ break;
+ default:
+ abort ();
+ }
+ putc (input[i], stdout);
+ }
+
+ free (breaks);
+
+ return 0;
+ }
+ else
+ return 1;
+}
+
+#endif /* TEST */
diff --git a/lib/uniwbrk/wbrkprop.h b/lib/uniwbrk/wbrkprop.h
new file mode 100644
index 00000000..3b50e17e
--- /dev/null
+++ b/lib/uniwbrk/wbrkprop.h
@@ -0,0 +1,3755 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Line breaking properties of Unicode characters. */
+/* Generated automatically by gen-uni-tables for Unicode 5.1.0. */
+
+/* Copyright (C) 2000-2002, 2004, 2007-2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#define wbrkprop_header_0 16
+#define wbrkprop_header_1 15
+#define wbrkprop_header_2 7
+#define wbrkprop_header_3 511
+#define wbrkprop_header_4 127
+
+typedef struct
+ {
+ int level1[15];
+ int level2[3 << 9];
+ unsigned char level3[110 << 7];
+ }
+wbrkprop_t;
+static const wbrkprop_t uniwbrkprop =
+{
+ {
+ 0, 512, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1024
+ },
+ {
+ 0, 128, 256, 256, 256, 384, 512, 640,
+ 256, 768, 896, 1024, 1152, 1280, 1408, 1536,
+ -1, -1, 1664, 1792, 1920, 2048, 2176, 2304,
+ 2432, 2560, 2688, 2816, 2944, 3072, 3200, 3328,
+ 3456, 3584, 3712, 3840, 3968, 4096, 4224, 4352,
+ 4480, 256, 256, 256, 4608, 4736, 4864, 4992,
+ 5120, 5248, 5376, 5504, 5632, -1, 5760, 5888,
+ 6016, -1, 256, 6144, 256, 256, 6272, 6400,
+ 6528, 6656, 6784, 6912, -1, -1, -1, -1,
+ -1, 7040, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 7168, 7296, 7424, 7552, 7680, -1, -1, -1,
+ 7808, 7936, 8064, 8192, -1, 8320, 8448, -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, -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,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 8576, 256, 256, 8704, 8832, 8960, 9088,
+ 9216, 9344, 9472, -1, 9600, -1, -1, -1,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 9728,
+ -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, 9856, 9984,
+ 256, 256, 10112, 10240, 10368, 10496, 10624, 10752,
+ 10880, 11008, 11136, 11264, -1, 11392, 11520, 11648,
+ 256, 11776, -1, -1, -1, -1, -1, -1,
+ 11904, -1, 12032, -1, 12160, -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,
+ 256, 256, 256, 256, 256, 256, 12288, -1,
+ 12416, -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, -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, -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, 12544, 12672, 12800, -1, -1, -1,
+ 12928, 13056, 13184, 256, 256, 13312, 13440, 13568,
+ -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,
+ 13696, -1, 13824, 13952, -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, -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, -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, -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
+ },
+ {
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_LF, WBP_NEWLINE,
+ WBP_NEWLINE, WBP_CR, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_MIDNUMLET,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_MIDNUM, WBP_OTHER, WBP_MIDNUMLET, WBP_OTHER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_MIDLETTER, WBP_MIDNUM,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_EXTENDNUMLET,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_NEWLINE, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_FORMAT, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_OTHER, WBP_MIDLETTER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_MIDNUM, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_MIDLETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_MIDNUM, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_EXTEND,
+ WBP_OTHER, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_MIDLETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_MIDNUM, WBP_MIDNUM, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_OTHER, WBP_NUMERIC,
+ WBP_MIDNUM, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_EXTEND, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_FORMAT, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_ALETTER, WBP_ALETTER, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_ALETTER, WBP_ALETTER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_FORMAT,
+ WBP_ALETTER, WBP_EXTEND, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_MIDNUM, WBP_OTHER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_OTHER, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_OTHER, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_OTHER, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_EXTEND, WBP_EXTEND, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_OTHER, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_OTHER, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_OTHER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_EXTEND, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_EXTEND, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_EXTEND, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_OTHER, WBP_EXTEND,
+ WBP_OTHER, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_EXTEND, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_OTHER, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_EXTEND,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_FORMAT, WBP_FORMAT, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_EXTEND, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_OTHER, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_FORMAT,
+ WBP_EXTEND, WBP_EXTEND, WBP_FORMAT, WBP_FORMAT,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_MIDNUMLET, WBP_MIDNUMLET, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_MIDNUMLET, WBP_OTHER, WBP_OTHER, WBP_MIDLETTER,
+ WBP_NEWLINE, WBP_NEWLINE, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_EXTENDNUMLET,
+ WBP_EXTENDNUMLET, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_MIDNUM, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTENDNUMLET, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_OTHER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_EXTEND, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_OTHER,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_OTHER,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_EXTEND, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_EXTEND, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_EXTEND,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_EXTEND,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_EXTEND, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_MIDNUM, WBP_OTHER, WBP_OTHER, WBP_MIDLETTER,
+ WBP_MIDNUM, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_EXTENDNUMLET,
+ WBP_EXTENDNUMLET, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTENDNUMLET, WBP_EXTENDNUMLET, WBP_EXTENDNUMLET,
+ WBP_MIDNUM, WBP_OTHER, WBP_MIDNUMLET, WBP_OTHER,
+ WBP_MIDNUM, WBP_MIDLETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_FORMAT,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_MIDNUMLET,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_MIDNUM, WBP_OTHER, WBP_MIDNUMLET, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_MIDLETTER, WBP_MIDNUM,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_EXTENDNUMLET,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA, WBP_KATAKANA,
+ WBP_KATAKANA, WBP_KATAKANA, WBP_EXTEND, WBP_EXTEND,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_OTHER, WBP_OTHER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_OTHER,
+ WBP_OTHER, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_OTHER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_OTHER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_OTHER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_ALETTER, WBP_ALETTER, WBP_ALETTER, WBP_ALETTER,
+ WBP_OTHER, WBP_OTHER, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC, WBP_NUMERIC,
+ WBP_OTHER, WBP_FORMAT, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_FORMAT, WBP_FORMAT, WBP_FORMAT, WBP_FORMAT,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_EXTEND, WBP_EXTEND, WBP_EXTEND, WBP_EXTEND,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER,
+ WBP_OTHER, WBP_OTHER, WBP_OTHER, WBP_OTHER
+ }
+};
diff --git a/lib/uniwbrk/wbrktable.c b/lib/uniwbrk/wbrktable.c
new file mode 100644
index 00000000..81a2323e
--- /dev/null
+++ b/lib/uniwbrk/wbrktable.c
@@ -0,0 +1,52 @@
+/* Word break auxiliary table.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "wbrktable.h"
+
+/* This table contains the following rules (see UAX #29):
+
+ last current
+
+ ALetter × ALetter (WB5)
+ ALetter × Numeric (WB9)
+ Numeric × ALetter (WB10)
+ Numeric × Numeric (WB8)
+ Katakana × Katakana (WB13)
+ (ALetter | Numeric | Katakana) × ExtendNumLet (WB13a)
+ ExtendNumLet × ExtendNumLet (WB13a)
+ ExtendNumLet × (ALetter | Numeric | Katakana) (WB13b)
+ */
+
+const unsigned char uniwbrk_table[10][8] =
+{ /* current: OTHER MIDNUMLET NUMERIC */
+ /* KATAKANA MIDLETTER EXTENDNUMLET */
+ /* ALETTER MIDNUM */
+ /* last */
+ /* WBP_OTHER */ { 1, 1, 1, 1, 1, 1, 1, 1 },
+ /* WBP_KATAKANA */ { 1, 0, 1, 1, 1, 1, 1, 0 },
+ /* WBP_ALETTER */ { 1, 1, 0, 1, 1, 1, 0, 0 },
+ /* WBP_MIDNUMLET */ { 1, 1, 1, 1, 1, 1, 1, 1 },
+ /* WBP_MIDLETTER */ { 1, 1, 1, 1, 1, 1, 1, 1 },
+ /* WBP_MIDNUM */ { 1, 1, 1, 1, 1, 1, 1, 1 },
+ /* WBP_NUMERIC */ { 1, 1, 0, 1, 1, 1, 0, 0 },
+ /* WBP_EXTENDNUMLET */ { 1, 0, 0, 1, 1, 1, 0, 0 },
+ /* WBP_EXTEND */ { 1, 1, 1, 1, 1, 1, 1, 1 },
+ /* WBP_FORMAT */ { 1, 1, 1, 1, 1, 1, 1, 1 }
+};
diff --git a/lib/uniwbrk/wbrktable.h b/lib/uniwbrk/wbrktable.h
new file mode 100644
index 00000000..14efee90
--- /dev/null
+++ b/lib/uniwbrk/wbrktable.h
@@ -0,0 +1,18 @@
+/* Word break auxiliary table.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+extern const unsigned char uniwbrk_table[10][8];
diff --git a/lib/uniwbrk/wordbreak-property.c b/lib/uniwbrk/wordbreak-property.c
new file mode 100644
index 00000000..4d0a212d
--- /dev/null
+++ b/lib/uniwbrk/wordbreak-property.c
@@ -0,0 +1,44 @@
+/* Word break property.
+ Copyright (C) 2001-2003, 2006-2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniwbrk.h"
+
+#include "wbrkprop.h"
+
+int
+uc_wordbreak_property (ucs4_t uc)
+{
+ unsigned int index1 = uc >> wbrkprop_header_0;
+ if (index1 < wbrkprop_header_1)
+ {
+ int lookup1 = uniwbrkprop.level1[index1];
+ if (lookup1 >= 0)
+ {
+ unsigned int index2 = (uc >> wbrkprop_header_2) & wbrkprop_header_3;
+ int lookup2 = uniwbrkprop.level2[lookup1 + index2];
+ if (lookup2 >= 0)
+ {
+ unsigned int index3 = uc & wbrkprop_header_4;
+ return uniwbrkprop.level3[lookup2 + index3];
+ }
+ }
+ }
+ return WBP_OTHER;
+}
diff --git a/lib/uniwidth.h b/lib/uniwidth.h
new file mode 100644
index 00000000..4f867b33
--- /dev/null
+++ b/lib/uniwidth.h
@@ -0,0 +1,64 @@
+/* Display width functions.
+ Copyright (C) 2001-2002, 2005, 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _UNIWIDTH_H
+#define _UNIWIDTH_H
+
+#include "unitypes.h"
+
+/* Get size_t. */
+#include <stddef.h>
+
+/* Get locale_charset() declaration. */
+#include <unistring/localcharset.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Display width. */
+
+/* These functions are locale dependent. The encoding argument identifies
+ the encoding (e.g. "ISO-8859-2" for Polish). */
+
+/* Determine number of column positions required for UC. */
+extern int
+ uc_width (ucs4_t uc, const char *encoding);
+
+/* Determine number of column positions required for first N units
+ (or fewer if S ends before this) in S. */
+extern int
+ u8_width (const uint8_t *s, size_t n, const char *encoding);
+extern int
+ u16_width (const uint16_t *s, size_t n, const char *encoding);
+extern int
+ u32_width (const uint32_t *s, size_t n, const char *encoding);
+
+/* Determine number of column positions required for S. */
+extern int
+ u8_strwidth (const uint8_t *s, const char *encoding);
+extern int
+ u16_strwidth (const uint16_t *s, const char *encoding);
+extern int
+ u32_strwidth (const uint32_t *s, const char *encoding);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UNIWIDTH_H */
diff --git a/lib/uniwidth/cjk.h b/lib/uniwidth/cjk.h
new file mode 100644
index 00000000..6124e1a4
--- /dev/null
+++ b/lib/uniwidth/cjk.h
@@ -0,0 +1,37 @@
+/* Test for CJK encoding.
+ Copyright (C) 2001-2002, 2005-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include "streq.h"
+
+static int
+is_cjk_encoding (const char *encoding)
+{
+ if (0
+ /* Legacy Japanese encodings */
+ || STREQ (encoding, "EUC-JP", 'E', 'U', 'C', '-', 'J', 'P', 0, 0, 0)
+ /* Legacy Chinese encodings */
+ || STREQ (encoding, "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0)
+ || STREQ (encoding, "GBK", 'G', 'B', 'K', 0, 0, 0, 0, 0, 0)
+ || STREQ (encoding, "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0)
+ || STREQ (encoding, "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0)
+ /* Legacy Korean encodings */
+ || STREQ (encoding, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
+ || STREQ (encoding, "CP949", 'C', 'P', '9', '4', '9', 0, 0, 0, 0)
+ || STREQ (encoding, "JOHAB", 'J', 'O', 'H', 'A', 'B', 0, 0, 0, 0))
+ return 1;
+ return 0;
+}
diff --git a/lib/uniwidth/u16-strwidth.c b/lib/uniwidth/u16-strwidth.c
new file mode 100644
index 00000000..e938bd25
--- /dev/null
+++ b/lib/uniwidth/u16-strwidth.c
@@ -0,0 +1,29 @@
+/* Determine display width of UTF-16 string.
+ Copyright (C) 2001-2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniwidth.h"
+
+#include "unistr.h"
+
+int
+u16_strwidth (const uint16_t *s, const char *encoding)
+{
+ return u16_width (s, u16_strlen (s), encoding);
+}
diff --git a/lib/uniwidth/u16-width.c b/lib/uniwidth/u16-width.c
new file mode 100644
index 00000000..b866b3c9
--- /dev/null
+++ b/lib/uniwidth/u16-width.c
@@ -0,0 +1,47 @@
+/* Determine display width of UTF-16 string.
+ Copyright (C) 2001-2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniwidth.h"
+
+#include "unistr.h"
+
+int
+u16_width (const uint16_t *s, size_t n, const char *encoding)
+{
+ const uint16_t *s_end = s + n;
+ int width = 0;
+
+ while (s < s_end)
+ {
+ ucs4_t uc;
+ int w;
+
+ s += u16_mbtouc_unsafe (&uc, s, s_end - s);
+
+ if (uc == 0)
+ break; /* end of string reached */
+
+ w = uc_width (uc, encoding);
+ if (w >= 0) /* ignore control characters in the string */
+ width += w;
+ }
+
+ return width;
+}
diff --git a/lib/uniwidth/u32-strwidth.c b/lib/uniwidth/u32-strwidth.c
new file mode 100644
index 00000000..ee4eb4a5
--- /dev/null
+++ b/lib/uniwidth/u32-strwidth.c
@@ -0,0 +1,29 @@
+/* Determine display width of UTF-32 string.
+ Copyright (C) 2001-2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniwidth.h"
+
+#include "unistr.h"
+
+int
+u32_strwidth (const uint32_t *s, const char *encoding)
+{
+ return u32_width (s, u32_strlen (s), encoding);
+}
diff --git a/lib/uniwidth/u32-width.c b/lib/uniwidth/u32-width.c
new file mode 100644
index 00000000..f928fa45
--- /dev/null
+++ b/lib/uniwidth/u32-width.c
@@ -0,0 +1,43 @@
+/* Determine display width of UTF-32 string.
+ Copyright (C) 2001-2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniwidth.h"
+
+int
+u32_width (const uint32_t *s, size_t n, const char *encoding)
+{
+ const uint32_t *s_end = s + n;
+ int width = 0;
+
+ while (s < s_end)
+ {
+ ucs4_t uc = *s++;
+ int w;
+
+ if (uc == 0)
+ break; /* end of string reached */
+
+ w = uc_width (uc, encoding);
+ if (w >= 0) /* ignore control characters in the string */
+ width += w;
+ }
+
+ return width;
+}
diff --git a/lib/uniwidth/u8-strwidth.c b/lib/uniwidth/u8-strwidth.c
new file mode 100644
index 00000000..961f26b5
--- /dev/null
+++ b/lib/uniwidth/u8-strwidth.c
@@ -0,0 +1,29 @@
+/* Determine display width of UTF-8 string.
+ Copyright (C) 2001-2002, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniwidth.h"
+
+#include "unistr.h"
+
+int
+u8_strwidth (const uint8_t *s, const char *encoding)
+{
+ return u8_width (s, u8_strlen (s), encoding);
+}
diff --git a/lib/uniwidth/u8-width.c b/lib/uniwidth/u8-width.c
new file mode 100644
index 00000000..ad0d49d8
--- /dev/null
+++ b/lib/uniwidth/u8-width.c
@@ -0,0 +1,47 @@
+/* Determine display width of UTF-8 string.
+ Copyright (C) 2001-2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniwidth.h"
+
+#include "unistr.h"
+
+int
+u8_width (const uint8_t *s, size_t n, const char *encoding)
+{
+ const uint8_t *s_end = s + n;
+ int width = 0;
+
+ while (s < s_end)
+ {
+ ucs4_t uc;
+ int w;
+
+ s += u8_mbtouc_unsafe (&uc, s, s_end - s);
+
+ if (uc == 0)
+ break; /* end of string reached */
+
+ w = uc_width (uc, encoding);
+ if (w >= 0) /* ignore control characters in the string */
+ width += w;
+ }
+
+ return width;
+}
diff --git a/lib/uniwidth/width.c b/lib/uniwidth/width.c
new file mode 100644
index 00000000..25ff0c73
--- /dev/null
+++ b/lib/uniwidth/width.c
@@ -0,0 +1,359 @@
+/* Determine display width of Unicode character.
+ Copyright (C) 2001-2002, 2006-2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniwidth.h"
+
+#include "cjk.h"
+
+/*
+ * Non-spacing attribute table.
+ * Consists of:
+ * - Non-spacing characters; generated from PropList.txt or
+ * "grep '^[^;]*;[^;]*;[^;]*;[^;]*;NSM;' UnicodeData.txt"
+ * - Format control characters; generated from
+ * "grep '^[^;]*;[^;]*;Cf;' UnicodeData.txt"
+ * - Zero width characters; generated from
+ * "grep '^[^;]*;ZERO WIDTH ' UnicodeData.txt"
+ */
+static const unsigned char nonspacing_table_data[26*64] = {
+ /* 0x0000-0x01ff */
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, /* 0x0000-0x003f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, /* 0x0040-0x007f */
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x20, 0x00, 0x00, /* 0x0080-0x00bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00c0-0x00ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0100-0x013f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0140-0x017f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0180-0x01bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x01c0-0x01ff */
+ /* 0x0200-0x03ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0200-0x023f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0240-0x027f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0280-0x02bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x02c0-0x02ff */
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x0300-0x033f */
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, /* 0x0340-0x037f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0380-0x03bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x03c0-0x03ff */
+ /* 0x0400-0x05ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0400-0x043f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0440-0x047f */
+ 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0480-0x04bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x04c0-0x04ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0500-0x053f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0540-0x057f */
+ 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xbf, /* 0x0580-0x05bf */
+ 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x05c0-0x05ff */
+ /* 0x0600-0x07ff */
+ 0x0f, 0x00, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, /* 0x0600-0x063f */
+ 0x00, 0xf8, 0xff, 0x7f, 0x00, 0x00, 0x01, 0x00, /* 0x0640-0x067f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0680-0x06bf */
+ 0x00, 0x00, 0xc0, 0xff, 0x9f, 0x3d, 0x00, 0x00, /* 0x06c0-0x06ff */
+ 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, /* 0x0700-0x073f */
+ 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0740-0x077f */
+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, /* 0x0780-0x07bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, /* 0x07c0-0x07ff */
+ /* 0x0800-0x09ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0800-0x083f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0840-0x087f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0880-0x08bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08c0-0x08ff */
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0900-0x093f */
+ 0xfe, 0x21, 0x1e, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0940-0x097f */
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0980-0x09bf */
+ 0x1e, 0x20, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x09c0-0x09ff */
+ /* 0x0a00-0x0bff */
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0a00-0x0a3f */
+ 0x86, 0x39, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, /* 0x0a40-0x0a7f */
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0a80-0x0abf */
+ 0xbe, 0x21, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0ac0-0x0aff */
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, /* 0x0b00-0x0b3f */
+ 0x1e, 0x20, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0b40-0x0b7f */
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0b80-0x0bbf */
+ 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0bc0-0x0bff */
+ /* 0x0c00-0x0dff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, /* 0x0c00-0x0c3f */
+ 0xc1, 0x3d, 0x60, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0c40-0x0c7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0c80-0x0cbf */
+ 0x00, 0x30, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0cc0-0x0cff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0d00-0x0d3f */
+ 0x1e, 0x20, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0d40-0x0d7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0d80-0x0dbf */
+ 0x00, 0x04, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0dc0-0x0dff */
+ /* 0x0e00-0x0fff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x07, /* 0x0e00-0x0e3f */
+ 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0e40-0x0e7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x1b, /* 0x0e80-0x0ebf */
+ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0ec0-0x0eff */
+ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xa0, 0x02, /* 0x0f00-0x0f3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, /* 0x0f40-0x0f7f */
+ 0xdf, 0x00, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x1f, /* 0x0f80-0x0fbf */
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0fc0-0x0fff */
+ /* 0x1000-0x11ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfd, 0x66, /* 0x1000-0x103f */
+ 0x00, 0x00, 0x00, 0xc3, 0x01, 0x00, 0x1e, 0x00, /* 0x1040-0x107f */
+ 0x64, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1080-0x10bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10c0-0x10ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1100-0x113f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1140-0x117f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1180-0x11bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11c0-0x11ff */
+ /* 0x1200-0x13ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1200-0x123f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1240-0x127f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1280-0x12bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x12c0-0x12ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1300-0x133f */
+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, /* 0x1340-0x137f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1380-0x13bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x13c0-0x13ff */
+ /* 0x1600-0x17ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1600-0x163f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1640-0x167f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1680-0x16bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16c0-0x16ff */
+ 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, /* 0x1700-0x173f */
+ 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, /* 0x1740-0x177f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x3f, /* 0x1780-0x17bf */
+ 0x40, 0xfe, 0x0f, 0x20, 0x00, 0x00, 0x00, 0x00, /* 0x17c0-0x17ff */
+ /* 0x1800-0x19ff */
+ 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1800-0x183f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1840-0x187f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* 0x1880-0x18bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18c0-0x18ff */
+ 0x00, 0x00, 0x00, 0x00, 0x87, 0x01, 0x04, 0x0e, /* 0x1900-0x193f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1940-0x197f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1980-0x19bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x19c0-0x19ff */
+ /* 0x1a00-0x1bff */
+ 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, /* 0x1a00-0x1a3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1a40-0x1a7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1a80-0x1abf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1ac0-0x1aff */
+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x17, /* 0x1b00-0x1b3f */
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, /* 0x1b40-0x1b7f */
+ 0x03, 0x00, 0x00, 0x00, 0x3c, 0x03, 0x00, 0x00, /* 0x1b80-0x1bbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1bc0-0x1bff */
+ /* 0x1c00-0x1dff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xcf, 0x00, /* 0x1c00-0x1c3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1c40-0x1c7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1c80-0x1cbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1cc0-0x1cff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d00-0x1d3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d40-0x1d7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d80-0x1dbf */
+ 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, /* 0x1dc0-0x1dff */
+ /* 0x2000-0x21ff */
+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, /* 0x2000-0x203f */
+ 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, /* 0x2040-0x207f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2080-0x20bf */
+ 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, /* 0x20c0-0x20ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2100-0x213f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2140-0x217f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2180-0x21bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x21c0-0x21ff */
+ /* 0x2c00-0x2dff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2c00-0x2c3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2c40-0x2c7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2c80-0x2cbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2cc0-0x2cff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2d00-0x2d3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2d40-0x2d7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2d80-0x2dbf */
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, /* 0x2dc0-0x2dff */
+ /* 0x3000-0x31ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, /* 0x3000-0x303f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x3040-0x307f */
+ 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, /* 0x3080-0x30bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30c0-0x30ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x3100-0x313f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x3140-0x317f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x3180-0x31bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x31c0-0x31ff */
+ /* 0xa600-0xa7ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa600-0xa63f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x30, /* 0xa640-0xa67f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa680-0xa6bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa6c0-0xa6ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa700-0xa73f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa740-0xa77f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa780-0xa7bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa7c0-0xa7ff */
+ /* 0xa800-0xa9ff */
+ 0x44, 0x08, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, /* 0xa800-0xa83f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa840-0xa87f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa880-0xa8bf */
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8c0-0xa8ff */
+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, /* 0xa900-0xa93f */
+ 0x80, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa940-0xa97f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa980-0xa9bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa9c0-0xa9ff */
+ /* 0xaa00-0xabff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x66, 0x00, /* 0xaa00-0xaa3f */
+ 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xaa40-0xaa7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xaa80-0xaabf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xaac0-0xaaff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xab00-0xab3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xab40-0xab7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xab80-0xabbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xabc0-0xabff */
+ /* 0xfa00-0xfbff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfa00-0xfa3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfa40-0xfa7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfa80-0xfabf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfac0-0xfaff */
+ 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, /* 0xfb00-0xfb3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfb40-0xfb7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfb80-0xfbbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfbc0-0xfbff */
+ /* 0xfe00-0xffff */
+ 0xff, 0xff, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, /* 0xfe00-0xfe3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfe40-0xfe7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfe80-0xfebf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, /* 0xfec0-0xfeff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xff00-0xff3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xff40-0xff7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xff80-0xffbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, /* 0xffc0-0xffff */
+ /* 0x10000-0x101ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10000-0x1003f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10040-0x1007f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10080-0x100bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x100c0-0x100ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10100-0x1013f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10140-0x1017f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10180-0x101bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, /* 0x101c0-0x101ff */
+ /* 0x10a00-0x10bff */
+ 0x6e, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, /* 0x10a00-0x10a3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10a40-0x10a7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10a80-0x10abf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10ac0-0x10aff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10b00-0x10b3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10b40-0x10b7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10b80-0x10bbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10bc0-0x10bff */
+ /* 0x1d000-0x1d1ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d000-0x1d03f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d040-0x1d07f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d080-0x1d0bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d0c0-0x1d0ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d100-0x1d13f */
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0xf8, /* 0x1d140-0x1d17f */
+ 0xe7, 0x0f, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, /* 0x1d180-0x1d1bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d1c0-0x1d1ff */
+ /* 0x1d200-0x1d3ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d200-0x1d23f */
+ 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d240-0x1d27f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d280-0x1d2bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d2c0-0x1d2ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d300-0x1d33f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d340-0x1d37f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d380-0x1d3bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* 0x1d3c0-0x1d3ff */
+};
+static const signed char nonspacing_table_ind[240] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, /* 0x0000-0x0fff */
+ 8, 9, -1, 10, 11, 12, 13, -1, /* 0x1000-0x1fff */
+ 14, -1, -1, -1, -1, -1, 15, -1, /* 0x2000-0x2fff */
+ 16, -1, -1, -1, -1, -1, -1, -1, /* 0x3000-0x3fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x4000-0x4fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x5000-0x5fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x6000-0x6fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x7000-0x7fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x8000-0x8fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x9000-0x9fff */
+ -1, -1, -1, 17, 18, 19, -1, -1, /* 0xa000-0xafff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xb000-0xbfff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xc000-0xcfff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xd000-0xdfff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xe000-0xefff */
+ -1, -1, -1, -1, -1, 20, -1, 21, /* 0xf000-0xffff */
+ 22, -1, -1, -1, -1, 23, -1, -1, /* 0x10000-0x10fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x11000-0x11fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x12000-0x12fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x13000-0x13fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x14000-0x14fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x15000-0x15fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x16000-0x16fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x17000-0x17fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x18000-0x18fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x19000-0x19fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1a000-0x1afff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1b000-0x1bfff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1c000-0x1cfff */
+ 24, 25, -1, -1, -1, -1, -1, -1 /* 0x1d000-0x1dfff */
+};
+
+/* Determine number of column positions required for UC. */
+int
+uc_width (ucs4_t uc, const char *encoding)
+{
+ /* Test for non-spacing or control character. */
+ if ((uc >> 9) < 240)
+ {
+ int ind = nonspacing_table_ind[uc >> 9];
+ if (ind >= 0)
+ if ((nonspacing_table_data[64*ind + ((uc >> 3) & 63)] >> (uc & 7)) & 1)
+ {
+ if (uc > 0 && uc < 0xa0)
+ return -1;
+ else
+ return 0;
+ }
+ }
+ else if ((uc >> 9) == (0xe0000 >> 9))
+ {
+ if (uc >= 0xe0100)
+ {
+ if (uc <= 0xe01ef)
+ return 0;
+ }
+ else
+ {
+ if (uc >= 0xe0020 ? uc <= 0xe007f : uc == 0xe0001)
+ return 0;
+ }
+ }
+ /* Test for double-width character.
+ * Generated from "grep '^....;[WF]' EastAsianWidth.txt"
+ * and "grep '^....;[^WF]' EastAsianWidth.txt"
+ */
+ if (uc >= 0x1100
+ && ((uc < 0x1160) /* Hangul Jamo */
+ || (uc >= 0x2329 && uc < 0x232b) /* Angle Brackets */
+ || (uc >= 0x2e80 && uc < 0xa4d0 /* CJK ... Yi */
+ && !(uc == 0x303f) && !(uc >= 0x4dc0 && uc < 0x4e00))
+ || (uc >= 0xac00 && uc < 0xd7a4) /* Hangul Syllables */
+ || (uc >= 0xf900 && uc < 0xfb00) /* CJK Compatibility Ideographs */
+ || (uc >= 0xfe10 && uc < 0xfe20) /* Presentation Forms for Vertical */
+ || (uc >= 0xfe30 && uc < 0xfe70) /* CJK Compatibility Forms */
+ || (uc >= 0xff00 && uc < 0xff61) /* Fullwidth Forms */
+ || (uc >= 0xffe0 && uc < 0xffe7) /* Fullwidth Signs */
+ || (uc >= 0x20000 && uc <= 0x2a6d6) /* CJK */
+ || (uc >= 0x2f800 && uc <= 0x2fa1d) /* CJK Compatibility Ideographs */
+ ) )
+ return 2;
+ /* In ancient CJK encodings, Cyrillic and most other characters are
+ double-width as well. */
+ if (uc >= 0x00A1 && uc < 0xFF61 && uc != 0x20A9
+ && is_cjk_encoding (encoding))
+ return 2;
+ return 1;
+}
diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c
new file mode 100644
index 00000000..c620b4c0
--- /dev/null
+++ b/lib/vasnprintf.c
@@ -0,0 +1,5487 @@
+/* vsprintf with automatic memory allocation.
+ Copyright (C) 1999, 2002-2009 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+/* This file can be parametrized with the following macros:
+ VASNPRINTF The name of the function being defined.
+ FCHAR_T The element type of the format string.
+ DCHAR_T The element type of the destination (result) string.
+ FCHAR_T_ONLY_ASCII Set to 1 to enable verification that all characters
+ in the format string are ASCII. MUST be set if
+ FCHAR_T and DCHAR_T are not the same type.
+ DIRECTIVE Structure denoting a format directive.
+ Depends on FCHAR_T.
+ DIRECTIVES Structure denoting the set of format directives of a
+ format string. Depends on FCHAR_T.
+ PRINTF_PARSE Function that parses a format string.
+ Depends on FCHAR_T.
+ DCHAR_CPY memcpy like function for DCHAR_T[] arrays.
+ DCHAR_SET memset like function for DCHAR_T[] arrays.
+ DCHAR_MBSNLEN mbsnlen like function for DCHAR_T[] arrays.
+ SNPRINTF The system's snprintf (or similar) function.
+ This may be either snprintf or swprintf.
+ TCHAR_T The element type of the argument and result string
+ of the said SNPRINTF function. This may be either
+ char or wchar_t. The code exploits that
+ sizeof (TCHAR_T) | sizeof (DCHAR_T) and
+ alignof (TCHAR_T) <= alignof (DCHAR_T).
+ DCHAR_IS_TCHAR Set to 1 if DCHAR_T and TCHAR_T are the same type.
+ DCHAR_CONV_FROM_ENCODING A function to convert from char[] to DCHAR[].
+ DCHAR_IS_UINT8_T Set to 1 if DCHAR_T is uint8_t.
+ DCHAR_IS_UINT16_T Set to 1 if DCHAR_T is uint16_t.
+ DCHAR_IS_UINT32_T Set to 1 if DCHAR_T is uint32_t. */
+
+/* Tell glibc's <stdio.h> to provide a prototype for snprintf().
+ This must come before <config.h> because <config.h> may include
+ <features.h>, and once <features.h> has been included, it's too late. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#ifndef VASNPRINTF
+# include <config.h>
+#endif
+#ifndef IN_LIBINTL
+# include <alloca.h>
+#endif
+
+/* Specification. */
+#ifndef VASNPRINTF
+# if WIDE_CHAR_VERSION
+# include "vasnwprintf.h"
+# else
+# include "vasnprintf.h"
+# endif
+#endif
+
+#include <locale.h> /* localeconv() */
+#include <stdio.h> /* snprintf(), sprintf() */
+#include <stdlib.h> /* abort(), malloc(), realloc(), free() */
+#include <string.h> /* memcpy(), strlen() */
+#include <errno.h> /* errno */
+#include <limits.h> /* CHAR_BIT */
+#include <float.h> /* DBL_MAX_EXP, LDBL_MAX_EXP */
+#if HAVE_NL_LANGINFO
+# include <langinfo.h>
+#endif
+#ifndef VASNPRINTF
+# if WIDE_CHAR_VERSION
+# include "wprintf-parse.h"
+# else
+# include "printf-parse.h"
+# endif
+#endif
+
+/* Checked size_t computations. */
+#include "xsize.h"
+
+#if (NEED_PRINTF_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL
+# include <math.h>
+# include "float+.h"
+#endif
+
+#if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL
+# include <math.h>
+# include "isnand-nolibm.h"
+#endif
+
+#if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE) && !defined IN_LIBINTL
+# include <math.h>
+# include "isnanl-nolibm.h"
+# include "fpucw.h"
+#endif
+
+#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL
+# include <math.h>
+# include "isnand-nolibm.h"
+# include "printf-frexp.h"
+#endif
+
+#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL
+# include <math.h>
+# include "isnanl-nolibm.h"
+# include "printf-frexpl.h"
+# include "fpucw.h"
+#endif
+
+/* Default parameters. */
+#ifndef VASNPRINTF
+# if WIDE_CHAR_VERSION
+# define VASNPRINTF vasnwprintf
+# define FCHAR_T wchar_t
+# define DCHAR_T wchar_t
+# define TCHAR_T wchar_t
+# define DCHAR_IS_TCHAR 1
+# define DIRECTIVE wchar_t_directive
+# define DIRECTIVES wchar_t_directives
+# define PRINTF_PARSE wprintf_parse
+# define DCHAR_CPY wmemcpy
+# define DCHAR_SET wmemset
+# else
+# define VASNPRINTF vasnprintf
+# define FCHAR_T char
+# define DCHAR_T char
+# define TCHAR_T char
+# define DCHAR_IS_TCHAR 1
+# define DIRECTIVE char_directive
+# define DIRECTIVES char_directives
+# define PRINTF_PARSE printf_parse
+# define DCHAR_CPY memcpy
+# define DCHAR_SET memset
+# endif
+#endif
+#if WIDE_CHAR_VERSION
+ /* TCHAR_T is wchar_t. */
+# define USE_SNPRINTF 1
+# if HAVE_DECL__SNWPRINTF
+ /* On Windows, the function swprintf() has a different signature than
+ on Unix; we use the _snwprintf() function instead. */
+# define SNPRINTF _snwprintf
+# else
+ /* Unix. */
+# define SNPRINTF swprintf
+# endif
+#else
+ /* TCHAR_T is char. */
+ /* Use snprintf if it exists under the name 'snprintf' or '_snprintf'.
+ But don't use it on BeOS, since BeOS snprintf produces no output if the
+ size argument is >= 0x3000000.
+ Also don't use it on Linux libc5, since there snprintf with size = 1
+ writes any output without bounds, like sprintf. */
+# if (HAVE_DECL__SNPRINTF || HAVE_SNPRINTF) && !defined __BEOS__ && !(__GNU_LIBRARY__ == 1)
+# define USE_SNPRINTF 1
+# else
+# define USE_SNPRINTF 0
+# endif
+# if HAVE_DECL__SNPRINTF
+ /* Windows. */
+# define SNPRINTF _snprintf
+# else
+ /* Unix. */
+# define SNPRINTF snprintf
+ /* Here we need to call the native snprintf, not rpl_snprintf. */
+# undef snprintf
+# endif
+#endif
+/* Here we need to call the native sprintf, not rpl_sprintf. */
+#undef sprintf
+
+/* GCC >= 4.0 with -Wall emits unjustified "... may be used uninitialized"
+ warnings in this file. Use -Dlint to suppress them. */
+#ifdef lint
+# define IF_LINT(Code) Code
+#else
+# define IF_LINT(Code) /* empty */
+#endif
+
+/* Avoid some warnings from "gcc -Wshadow".
+ This file doesn't use the exp() and remainder() functions. */
+#undef exp
+#define exp expo
+#undef remainder
+#define remainder rem
+
+#if !USE_SNPRINTF && !WIDE_CHAR_VERSION
+# if (HAVE_STRNLEN && !defined _AIX)
+# define local_strnlen strnlen
+# else
+# ifndef local_strnlen_defined
+# define local_strnlen_defined 1
+static size_t
+local_strnlen (const char *string, size_t maxlen)
+{
+ const char *end = memchr (string, '\0', maxlen);
+ return end ? (size_t) (end - string) : maxlen;
+}
+# endif
+# endif
+#endif
+
+#if (!USE_SNPRINTF || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && HAVE_WCHAR_T && (WIDE_CHAR_VERSION || DCHAR_IS_TCHAR)
+# if HAVE_WCSLEN
+# define local_wcslen wcslen
+# else
+ /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid
+ a dependency towards this library, here is a local substitute.
+ Define this substitute only once, even if this file is included
+ twice in the same compilation unit. */
+# ifndef local_wcslen_defined
+# define local_wcslen_defined 1
+static size_t
+local_wcslen (const wchar_t *s)
+{
+ const wchar_t *ptr;
+
+ for (ptr = s; *ptr != (wchar_t) 0; ptr++)
+ ;
+ return ptr - s;
+}
+# endif
+# endif
+#endif
+
+#if !USE_SNPRINTF && HAVE_WCHAR_T && WIDE_CHAR_VERSION
+# if HAVE_WCSNLEN
+# define local_wcsnlen wcsnlen
+# else
+# ifndef local_wcsnlen_defined
+# define local_wcsnlen_defined 1
+static size_t
+local_wcsnlen (const wchar_t *s, size_t maxlen)
+{
+ const wchar_t *ptr;
+
+ for (ptr = s; maxlen > 0 && *ptr != (wchar_t) 0; ptr++, maxlen--)
+ ;
+ return ptr - s;
+}
+# endif
+# endif
+#endif
+
+#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL
+/* Determine the decimal-point character according to the current locale. */
+# ifndef decimal_point_char_defined
+# define decimal_point_char_defined 1
+static char
+decimal_point_char ()
+{
+ const char *point;
+ /* Determine it in a multithread-safe way. We know nl_langinfo is
+ multithread-safe on glibc systems, but is not required to be multithread-
+ safe by POSIX. sprintf(), however, is multithread-safe. localeconv()
+ is rarely multithread-safe. */
+# if HAVE_NL_LANGINFO && __GLIBC__
+ point = nl_langinfo (RADIXCHAR);
+# elif 1
+ char pointbuf[5];
+ sprintf (pointbuf, "%#.0f", 1.0);
+ point = &pointbuf[1];
+# else
+ point = localeconv () -> decimal_point;
+# endif
+ /* The decimal point is always a single byte: either '.' or ','. */
+ return (point[0] != '\0' ? point[0] : '.');
+}
+# endif
+#endif
+
+#if NEED_PRINTF_INFINITE_DOUBLE && !NEED_PRINTF_DOUBLE && !defined IN_LIBINTL
+
+/* Equivalent to !isfinite(x) || x == 0, but does not require libm. */
+static int
+is_infinite_or_zero (double x)
+{
+ return isnand (x) || x + x == x;
+}
+
+#endif
+
+#if NEED_PRINTF_INFINITE_LONG_DOUBLE && !NEED_PRINTF_LONG_DOUBLE && !defined IN_LIBINTL
+
+/* Equivalent to !isfinite(x) || x == 0, but does not require libm. */
+static int
+is_infinite_or_zerol (long double x)
+{
+ return isnanl (x) || x + x == x;
+}
+
+#endif
+
+#if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL
+
+/* Converting 'long double' to decimal without rare rounding bugs requires
+ real bignums. We use the naming conventions of GNU gmp, but vastly simpler
+ (and slower) algorithms. */
+
+typedef unsigned int mp_limb_t;
+# define GMP_LIMB_BITS 32
+typedef int mp_limb_verify[2 * (sizeof (mp_limb_t) * CHAR_BIT == GMP_LIMB_BITS) - 1];
+
+typedef unsigned long long mp_twolimb_t;
+# define GMP_TWOLIMB_BITS 64
+typedef int mp_twolimb_verify[2 * (sizeof (mp_twolimb_t) * CHAR_BIT == GMP_TWOLIMB_BITS) - 1];
+
+/* Representation of a bignum >= 0. */
+typedef struct
+{
+ size_t nlimbs;
+ mp_limb_t *limbs; /* Bits in little-endian order, allocated with malloc(). */
+} mpn_t;
+
+/* Compute the product of two bignums >= 0.
+ Return the allocated memory in case of success, NULL in case of memory
+ allocation failure. */
+static void *
+multiply (mpn_t src1, mpn_t src2, mpn_t *dest)
+{
+ const mp_limb_t *p1;
+ const mp_limb_t *p2;
+ size_t len1;
+ size_t len2;
+
+ if (src1.nlimbs <= src2.nlimbs)
+ {
+ len1 = src1.nlimbs;
+ p1 = src1.limbs;
+ len2 = src2.nlimbs;
+ p2 = src2.limbs;
+ }
+ else
+ {
+ len1 = src2.nlimbs;
+ p1 = src2.limbs;
+ len2 = src1.nlimbs;
+ p2 = src1.limbs;
+ }
+ /* Now 0 <= len1 <= len2. */
+ if (len1 == 0)
+ {
+ /* src1 or src2 is zero. */
+ dest->nlimbs = 0;
+ dest->limbs = (mp_limb_t *) malloc (1);
+ }
+ else
+ {
+ /* Here 1 <= len1 <= len2. */
+ size_t dlen;
+ mp_limb_t *dp;
+ size_t k, i, j;
+
+ dlen = len1 + len2;
+ dp = (mp_limb_t *) malloc (dlen * sizeof (mp_limb_t));
+ if (dp == NULL)
+ return NULL;
+ for (k = len2; k > 0; )
+ dp[--k] = 0;
+ for (i = 0; i < len1; i++)
+ {
+ mp_limb_t digit1 = p1[i];
+ mp_twolimb_t carry = 0;
+ for (j = 0; j < len2; j++)
+ {
+ mp_limb_t digit2 = p2[j];
+ carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2;
+ carry += dp[i + j];
+ dp[i + j] = (mp_limb_t) carry;
+ carry = carry >> GMP_LIMB_BITS;
+ }
+ dp[i + len2] = (mp_limb_t) carry;
+ }
+ /* Normalise. */
+ while (dlen > 0 && dp[dlen - 1] == 0)
+ dlen--;
+ dest->nlimbs = dlen;
+ dest->limbs = dp;
+ }
+ return dest->limbs;
+}
+
+/* Compute the quotient of a bignum a >= 0 and a bignum b > 0.
+ a is written as a = q * b + r with 0 <= r < b. q is the quotient, r
+ the remainder.
+ Finally, round-to-even is performed: If r > b/2 or if r = b/2 and q is odd,
+ q is incremented.
+ Return the allocated memory in case of success, NULL in case of memory
+ allocation failure. */
+static void *
+divide (mpn_t a, mpn_t b, mpn_t *q)
+{
+ /* Algorithm:
+ First normalise a and b: a=[a[m-1],...,a[0]], b=[b[n-1],...,b[0]]
+ with m>=0 and n>0 (in base beta = 2^GMP_LIMB_BITS).
+ If m<n, then q:=0 and r:=a.
+ If m>=n=1, perform a single-precision division:
+ r:=0, j:=m,
+ while j>0 do
+ {Here (q[m-1]*beta^(m-1)+...+q[j]*beta^j) * b[0] + r*beta^j =
+ = a[m-1]*beta^(m-1)+...+a[j]*beta^j und 0<=r<b[0]<beta}
+ j:=j-1, r:=r*beta+a[j], q[j]:=floor(r/b[0]), r:=r-b[0]*q[j].
+ Normalise [q[m-1],...,q[0]], yields q.
+ If m>=n>1, perform a multiple-precision division:
+ We have a/b < beta^(m-n+1).
+ s:=intDsize-1-(highest bit in b[n-1]), 0<=s<intDsize.
+ Shift a and b left by s bits, copying them. r:=a.
+ r=[r[m],...,r[0]], b=[b[n-1],...,b[0]] with b[n-1]>=beta/2.
+ For j=m-n,...,0: {Here 0 <= r < b*beta^(j+1).}
+ Compute q* :
+ q* := floor((r[j+n]*beta+r[j+n-1])/b[n-1]).
+ In case of overflow (q* >= beta) set q* := beta-1.
+ Compute c2 := ((r[j+n]*beta+r[j+n-1]) - q* * b[n-1])*beta + r[j+n-2]
+ and c3 := b[n-2] * q*.
+ {We have 0 <= c2 < 2*beta^2, even 0 <= c2 < beta^2 if no overflow
+ occurred. Furthermore 0 <= c3 < beta^2.
+ If there was overflow and
+ r[j+n]*beta+r[j+n-1] - q* * b[n-1] >= beta, i.e. c2 >= beta^2,
+ the next test can be skipped.}
+ While c3 > c2, {Here 0 <= c2 < c3 < beta^2}
+ Put q* := q* - 1, c2 := c2 + b[n-1]*beta, c3 := c3 - b[n-2].
+ If q* > 0:
+ Put r := r - b * q* * beta^j. In detail:
+ [r[n+j],...,r[j]] := [r[n+j],...,r[j]] - q* * [b[n-1],...,b[0]].
+ hence: u:=0, for i:=0 to n-1 do
+ u := u + q* * b[i],
+ r[j+i]:=r[j+i]-(u mod beta) (+ beta, if carry),
+ u:=u div beta (+ 1, if carry in subtraction)
+ r[n+j]:=r[n+j]-u.
+ {Since always u = (q* * [b[i-1],...,b[0]] div beta^i) + 1
+ < q* + 1 <= beta,
+ the carry u does not overflow.}
+ If a negative carry occurs, put q* := q* - 1
+ and [r[n+j],...,r[j]] := [r[n+j],...,r[j]] + [0,b[n-1],...,b[0]].
+ Set q[j] := q*.
+ Normalise [q[m-n],..,q[0]]; this yields the quotient q.
+ Shift [r[n-1],...,r[0]] right by s bits and normalise; this yields the
+ rest r.
+ The room for q[j] can be allocated at the memory location of r[n+j].
+ Finally, round-to-even:
+ Shift r left by 1 bit.
+ If r > b or if r = b and q[0] is odd, q := q+1.
+ */
+ const mp_limb_t *a_ptr = a.limbs;
+ size_t a_len = a.nlimbs;
+ const mp_limb_t *b_ptr = b.limbs;
+ size_t b_len = b.nlimbs;
+ mp_limb_t *roomptr;
+ mp_limb_t *tmp_roomptr = NULL;
+ mp_limb_t *q_ptr;
+ size_t q_len;
+ mp_limb_t *r_ptr;
+ size_t r_len;
+
+ /* Allocate room for a_len+2 digits.
+ (Need a_len+1 digits for the real division and 1 more digit for the
+ final rounding of q.) */
+ roomptr = (mp_limb_t *) malloc ((a_len + 2) * sizeof (mp_limb_t));
+ if (roomptr == NULL)
+ return NULL;
+
+ /* Normalise a. */
+ while (a_len > 0 && a_ptr[a_len - 1] == 0)
+ a_len--;
+
+ /* Normalise b. */
+ for (;;)
+ {
+ if (b_len == 0)
+ /* Division by zero. */
+ abort ();
+ if (b_ptr[b_len - 1] == 0)
+ b_len--;
+ else
+ break;
+ }
+
+ /* Here m = a_len >= 0 and n = b_len > 0. */
+
+ if (a_len < b_len)
+ {
+ /* m<n: trivial case. q=0, r := copy of a. */
+ r_ptr = roomptr;
+ r_len = a_len;
+ memcpy (r_ptr, a_ptr, a_len * sizeof (mp_limb_t));
+ q_ptr = roomptr + a_len;
+ q_len = 0;
+ }
+ else if (b_len == 1)
+ {
+ /* n=1: single precision division.
+ beta^(m-1) <= a < beta^m ==> beta^(m-2) <= a/b < beta^m */
+ r_ptr = roomptr;
+ q_ptr = roomptr + 1;
+ {
+ mp_limb_t den = b_ptr[0];
+ mp_limb_t remainder = 0;
+ const mp_limb_t *sourceptr = a_ptr + a_len;
+ mp_limb_t *destptr = q_ptr + a_len;
+ size_t count;
+ for (count = a_len; count > 0; count--)
+ {
+ mp_twolimb_t num =
+ ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--sourceptr;
+ *--destptr = num / den;
+ remainder = num % den;
+ }
+ /* Normalise and store r. */
+ if (remainder > 0)
+ {
+ r_ptr[0] = remainder;
+ r_len = 1;
+ }
+ else
+ r_len = 0;
+ /* Normalise q. */
+ q_len = a_len;
+ if (q_ptr[q_len - 1] == 0)
+ q_len--;
+ }
+ }
+ else
+ {
+ /* n>1: multiple precision division.
+ beta^(m-1) <= a < beta^m, beta^(n-1) <= b < beta^n ==>
+ beta^(m-n-1) <= a/b < beta^(m-n+1). */
+ /* Determine s. */
+ size_t s;
+ {
+ mp_limb_t msd = b_ptr[b_len - 1]; /* = b[n-1], > 0 */
+ s = 31;
+ if (msd >= 0x10000)
+ {
+ msd = msd >> 16;
+ s -= 16;
+ }
+ if (msd >= 0x100)
+ {
+ msd = msd >> 8;
+ s -= 8;
+ }
+ if (msd >= 0x10)
+ {
+ msd = msd >> 4;
+ s -= 4;
+ }
+ if (msd >= 0x4)
+ {
+ msd = msd >> 2;
+ s -= 2;
+ }
+ if (msd >= 0x2)
+ {
+ msd = msd >> 1;
+ s -= 1;
+ }
+ }
+ /* 0 <= s < GMP_LIMB_BITS.
+ Copy b, shifting it left by s bits. */
+ if (s > 0)
+ {
+ tmp_roomptr = (mp_limb_t *) malloc (b_len * sizeof (mp_limb_t));
+ if (tmp_roomptr == NULL)
+ {
+ free (roomptr);
+ return NULL;
+ }
+ {
+ const mp_limb_t *sourceptr = b_ptr;
+ mp_limb_t *destptr = tmp_roomptr;
+ mp_twolimb_t accu = 0;
+ size_t count;
+ for (count = b_len; count > 0; count--)
+ {
+ accu += (mp_twolimb_t) *sourceptr++ << s;
+ *destptr++ = (mp_limb_t) accu;
+ accu = accu >> GMP_LIMB_BITS;
+ }
+ /* accu must be zero, since that was how s was determined. */
+ if (accu != 0)
+ abort ();
+ }
+ b_ptr = tmp_roomptr;
+ }
+ /* Copy a, shifting it left by s bits, yields r.
+ Memory layout:
+ At the beginning: r = roomptr[0..a_len],
+ at the end: r = roomptr[0..b_len-1], q = roomptr[b_len..a_len] */
+ r_ptr = roomptr;
+ if (s == 0)
+ {
+ memcpy (r_ptr, a_ptr, a_len * sizeof (mp_limb_t));
+ r_ptr[a_len] = 0;
+ }
+ else
+ {
+ const mp_limb_t *sourceptr = a_ptr;
+ mp_limb_t *destptr = r_ptr;
+ mp_twolimb_t accu = 0;
+ size_t count;
+ for (count = a_len; count > 0; count--)
+ {
+ accu += (mp_twolimb_t) *sourceptr++ << s;
+ *destptr++ = (mp_limb_t) accu;
+ accu = accu >> GMP_LIMB_BITS;
+ }
+ *destptr++ = (mp_limb_t) accu;
+ }
+ q_ptr = roomptr + b_len;
+ q_len = a_len - b_len + 1; /* q will have m-n+1 limbs */
+ {
+ size_t j = a_len - b_len; /* m-n */
+ mp_limb_t b_msd = b_ptr[b_len - 1]; /* b[n-1] */
+ mp_limb_t b_2msd = b_ptr[b_len - 2]; /* b[n-2] */
+ mp_twolimb_t b_msdd = /* b[n-1]*beta+b[n-2] */
+ ((mp_twolimb_t) b_msd << GMP_LIMB_BITS) | b_2msd;
+ /* Division loop, traversed m-n+1 times.
+ j counts down, b is unchanged, beta/2 <= b[n-1] < beta. */
+ for (;;)
+ {
+ mp_limb_t q_star;
+ mp_limb_t c1;
+ if (r_ptr[j + b_len] < b_msd) /* r[j+n] < b[n-1] ? */
+ {
+ /* Divide r[j+n]*beta+r[j+n-1] by b[n-1], no overflow. */
+ mp_twolimb_t num =
+ ((mp_twolimb_t) r_ptr[j + b_len] << GMP_LIMB_BITS)
+ | r_ptr[j + b_len - 1];
+ q_star = num / b_msd;
+ c1 = num % b_msd;
+ }
+ else
+ {
+ /* Overflow, hence r[j+n]*beta+r[j+n-1] >= beta*b[n-1]. */
+ q_star = (mp_limb_t)~(mp_limb_t)0; /* q* = beta-1 */
+ /* Test whether r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] >= beta
+ <==> r[j+n]*beta+r[j+n-1] + b[n-1] >= beta*b[n-1]+beta
+ <==> b[n-1] < floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta)
+ {<= beta !}.
+ If yes, jump directly to the subtraction loop.
+ (Otherwise, r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] < beta
+ <==> floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta) = b[n-1] ) */
+ if (r_ptr[j + b_len] > b_msd
+ || (c1 = r_ptr[j + b_len - 1] + b_msd) < b_msd)
+ /* r[j+n] >= b[n-1]+1 or
+ r[j+n] = b[n-1] and the addition r[j+n-1]+b[n-1] gives a
+ carry. */
+ goto subtract;
+ }
+ /* q_star = q*,
+ c1 = (r[j+n]*beta+r[j+n-1]) - q* * b[n-1] (>=0, <beta). */
+ {
+ mp_twolimb_t c2 = /* c1*beta+r[j+n-2] */
+ ((mp_twolimb_t) c1 << GMP_LIMB_BITS) | r_ptr[j + b_len - 2];
+ mp_twolimb_t c3 = /* b[n-2] * q* */
+ (mp_twolimb_t) b_2msd * (mp_twolimb_t) q_star;
+ /* While c2 < c3, increase c2 and decrease c3.
+ Consider c3-c2. While it is > 0, decrease it by
+ b[n-1]*beta+b[n-2]. Because of b[n-1]*beta+b[n-2] >= beta^2/2
+ this can happen only twice. */
+ if (c3 > c2)
+ {
+ q_star = q_star - 1; /* q* := q* - 1 */
+ if (c3 - c2 > b_msdd)
+ q_star = q_star - 1; /* q* := q* - 1 */
+ }
+ }
+ if (q_star > 0)
+ subtract:
+ {
+ /* Subtract r := r - b * q* * beta^j. */
+ mp_limb_t cr;
+ {
+ const mp_limb_t *sourceptr = b_ptr;
+ mp_limb_t *destptr = r_ptr + j;
+ mp_twolimb_t carry = 0;
+ size_t count;
+ for (count = b_len; count > 0; count--)
+ {
+ /* Here 0 <= carry <= q*. */
+ carry =
+ carry
+ + (mp_twolimb_t) q_star * (mp_twolimb_t) *sourceptr++
+ + (mp_limb_t) ~(*destptr);
+ /* Here 0 <= carry <= beta*q* + beta-1. */
+ *destptr++ = ~(mp_limb_t) carry;
+ carry = carry >> GMP_LIMB_BITS; /* <= q* */
+ }
+ cr = (mp_limb_t) carry;
+ }
+ /* Subtract cr from r_ptr[j + b_len], then forget about
+ r_ptr[j + b_len]. */
+ if (cr > r_ptr[j + b_len])
+ {
+ /* Subtraction gave a carry. */
+ q_star = q_star - 1; /* q* := q* - 1 */
+ /* Add b back. */
+ {
+ const mp_limb_t *sourceptr = b_ptr;
+ mp_limb_t *destptr = r_ptr + j;
+ mp_limb_t carry = 0;
+ size_t count;
+ for (count = b_len; count > 0; count--)
+ {
+ mp_limb_t source1 = *sourceptr++;
+ mp_limb_t source2 = *destptr;
+ *destptr++ = source1 + source2 + carry;
+ carry =
+ (carry
+ ? source1 >= (mp_limb_t) ~source2
+ : source1 > (mp_limb_t) ~source2);
+ }
+ }
+ /* Forget about the carry and about r[j+n]. */
+ }
+ }
+ /* q* is determined. Store it as q[j]. */
+ q_ptr[j] = q_star;
+ if (j == 0)
+ break;
+ j--;
+ }
+ }
+ r_len = b_len;
+ /* Normalise q. */
+ if (q_ptr[q_len - 1] == 0)
+ q_len--;
+# if 0 /* Not needed here, since we need r only to compare it with b/2, and
+ b is shifted left by s bits. */
+ /* Shift r right by s bits. */
+ if (s > 0)
+ {
+ mp_limb_t ptr = r_ptr + r_len;
+ mp_twolimb_t accu = 0;
+ size_t count;
+ for (count = r_len; count > 0; count--)
+ {
+ accu = (mp_twolimb_t) (mp_limb_t) accu << GMP_LIMB_BITS;
+ accu += (mp_twolimb_t) *--ptr << (GMP_LIMB_BITS - s);
+ *ptr = (mp_limb_t) (accu >> GMP_LIMB_BITS);
+ }
+ }
+# endif
+ /* Normalise r. */
+ while (r_len > 0 && r_ptr[r_len - 1] == 0)
+ r_len--;
+ }
+ /* Compare r << 1 with b. */
+ if (r_len > b_len)
+ goto increment_q;
+ {
+ size_t i;
+ for (i = b_len;;)
+ {
+ mp_limb_t r_i =
+ (i <= r_len && i > 0 ? r_ptr[i - 1] >> (GMP_LIMB_BITS - 1) : 0)
+ | (i < r_len ? r_ptr[i] << 1 : 0);
+ mp_limb_t b_i = (i < b_len ? b_ptr[i] : 0);
+ if (r_i > b_i)
+ goto increment_q;
+ if (r_i < b_i)
+ goto keep_q;
+ if (i == 0)
+ break;
+ i--;
+ }
+ }
+ if (q_len > 0 && ((q_ptr[0] & 1) != 0))
+ /* q is odd. */
+ increment_q:
+ {
+ size_t i;
+ for (i = 0; i < q_len; i++)
+ if (++(q_ptr[i]) != 0)
+ goto keep_q;
+ q_ptr[q_len++] = 1;
+ }
+ keep_q:
+ if (tmp_roomptr != NULL)
+ free (tmp_roomptr);
+ q->limbs = q_ptr;
+ q->nlimbs = q_len;
+ return roomptr;
+}
+
+/* Convert a bignum a >= 0, multiplied with 10^extra_zeroes, to decimal
+ representation.
+ Destroys the contents of a.
+ Return the allocated memory - containing the decimal digits in low-to-high
+ order, terminated with a NUL character - in case of success, NULL in case
+ of memory allocation failure. */
+static char *
+convert_to_decimal (mpn_t a, size_t extra_zeroes)
+{
+ mp_limb_t *a_ptr = a.limbs;
+ size_t a_len = a.nlimbs;
+ /* 0.03345 is slightly larger than log(2)/(9*log(10)). */
+ size_t c_len = 9 * ((size_t)(a_len * (GMP_LIMB_BITS * 0.03345f)) + 1);
+ char *c_ptr = (char *) malloc (xsum (c_len, extra_zeroes));
+ if (c_ptr != NULL)
+ {
+ char *d_ptr = c_ptr;
+ for (; extra_zeroes > 0; extra_zeroes--)
+ *d_ptr++ = '0';
+ while (a_len > 0)
+ {
+ /* Divide a by 10^9, in-place. */
+ mp_limb_t remainder = 0;
+ mp_limb_t *ptr = a_ptr + a_len;
+ size_t count;
+ for (count = a_len; count > 0; count--)
+ {
+ mp_twolimb_t num =
+ ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--ptr;
+ *ptr = num / 1000000000;
+ remainder = num % 1000000000;
+ }
+ /* Store the remainder as 9 decimal digits. */
+ for (count = 9; count > 0; count--)
+ {
+ *d_ptr++ = '0' + (remainder % 10);
+ remainder = remainder / 10;
+ }
+ /* Normalize a. */
+ if (a_ptr[a_len - 1] == 0)
+ a_len--;
+ }
+ /* Remove leading zeroes. */
+ while (d_ptr > c_ptr && d_ptr[-1] == '0')
+ d_ptr--;
+ /* But keep at least one zero. */
+ if (d_ptr == c_ptr)
+ *d_ptr++ = '0';
+ /* Terminate the string. */
+ *d_ptr = '\0';
+ }
+ return c_ptr;
+}
+
+# if NEED_PRINTF_LONG_DOUBLE
+
+/* Assuming x is finite and >= 0:
+ write x as x = 2^e * m, where m is a bignum.
+ Return the allocated memory in case of success, NULL in case of memory
+ allocation failure. */
+static void *
+decode_long_double (long double x, int *ep, mpn_t *mp)
+{
+ mpn_t m;
+ int exp;
+ long double y;
+ size_t i;
+
+ /* Allocate memory for result. */
+ m.nlimbs = (LDBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS;
+ m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t));
+ if (m.limbs == NULL)
+ return NULL;
+ /* Split into exponential part and mantissa. */
+ y = frexpl (x, &exp);
+ if (!(y >= 0.0L && y < 1.0L))
+ abort ();
+ /* x = 2^exp * y = 2^(exp - LDBL_MANT_BIT) * (y * LDBL_MANT_BIT), and the
+ latter is an integer. */
+ /* Convert the mantissa (y * LDBL_MANT_BIT) to a sequence of limbs.
+ I'm not sure whether it's safe to cast a 'long double' value between
+ 2^31 and 2^32 to 'unsigned int', therefore play safe and cast only
+ 'long double' values between 0 and 2^16 (to 'unsigned int' or 'int',
+ doesn't matter). */
+# if (LDBL_MANT_BIT % GMP_LIMB_BITS) != 0
+# if (LDBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2
+ {
+ mp_limb_t hi, lo;
+ y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % (GMP_LIMB_BITS / 2));
+ hi = (int) y;
+ y -= hi;
+ if (!(y >= 0.0L && y < 1.0L))
+ abort ();
+ y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
+ lo = (int) y;
+ y -= lo;
+ if (!(y >= 0.0L && y < 1.0L))
+ abort ();
+ m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo;
+ }
+# else
+ {
+ mp_limb_t d;
+ y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % GMP_LIMB_BITS);
+ d = (int) y;
+ y -= d;
+ if (!(y >= 0.0L && y < 1.0L))
+ abort ();
+ m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = d;
+ }
+# endif
+# endif
+ for (i = LDBL_MANT_BIT / GMP_LIMB_BITS; i > 0; )
+ {
+ mp_limb_t hi, lo;
+ y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
+ hi = (int) y;
+ y -= hi;
+ if (!(y >= 0.0L && y < 1.0L))
+ abort ();
+ y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
+ lo = (int) y;
+ y -= lo;
+ if (!(y >= 0.0L && y < 1.0L))
+ abort ();
+ m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo;
+ }
+#if 0 /* On FreeBSD 6.1/x86, 'long double' numbers sometimes have excess
+ precision. */
+ if (!(y == 0.0L))
+ abort ();
+#endif
+ /* Normalise. */
+ while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0)
+ m.nlimbs--;
+ *mp = m;
+ *ep = exp - LDBL_MANT_BIT;
+ return m.limbs;
+}
+
+# endif
+
+# if NEED_PRINTF_DOUBLE
+
+/* Assuming x is finite and >= 0:
+ write x as x = 2^e * m, where m is a bignum.
+ Return the allocated memory in case of success, NULL in case of memory
+ allocation failure. */
+static void *
+decode_double (double x, int *ep, mpn_t *mp)
+{
+ mpn_t m;
+ int exp;
+ double y;
+ size_t i;
+
+ /* Allocate memory for result. */
+ m.nlimbs = (DBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS;
+ m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t));
+ if (m.limbs == NULL)
+ return NULL;
+ /* Split into exponential part and mantissa. */
+ y = frexp (x, &exp);
+ if (!(y >= 0.0 && y < 1.0))
+ abort ();
+ /* x = 2^exp * y = 2^(exp - DBL_MANT_BIT) * (y * DBL_MANT_BIT), and the
+ latter is an integer. */
+ /* Convert the mantissa (y * DBL_MANT_BIT) to a sequence of limbs.
+ I'm not sure whether it's safe to cast a 'double' value between
+ 2^31 and 2^32 to 'unsigned int', therefore play safe and cast only
+ 'double' values between 0 and 2^16 (to 'unsigned int' or 'int',
+ doesn't matter). */
+# if (DBL_MANT_BIT % GMP_LIMB_BITS) != 0
+# if (DBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2
+ {
+ mp_limb_t hi, lo;
+ y *= (mp_limb_t) 1 << (DBL_MANT_BIT % (GMP_LIMB_BITS / 2));
+ hi = (int) y;
+ y -= hi;
+ if (!(y >= 0.0 && y < 1.0))
+ abort ();
+ y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
+ lo = (int) y;
+ y -= lo;
+ if (!(y >= 0.0 && y < 1.0))
+ abort ();
+ m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo;
+ }
+# else
+ {
+ mp_limb_t d;
+ y *= (mp_limb_t) 1 << (DBL_MANT_BIT % GMP_LIMB_BITS);
+ d = (int) y;
+ y -= d;
+ if (!(y >= 0.0 && y < 1.0))
+ abort ();
+ m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = d;
+ }
+# endif
+# endif
+ for (i = DBL_MANT_BIT / GMP_LIMB_BITS; i > 0; )
+ {
+ mp_limb_t hi, lo;
+ y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
+ hi = (int) y;
+ y -= hi;
+ if (!(y >= 0.0 && y < 1.0))
+ abort ();
+ y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
+ lo = (int) y;
+ y -= lo;
+ if (!(y >= 0.0 && y < 1.0))
+ abort ();
+ m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo;
+ }
+ if (!(y == 0.0))
+ abort ();
+ /* Normalise. */
+ while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0)
+ m.nlimbs--;
+ *mp = m;
+ *ep = exp - DBL_MANT_BIT;
+ return m.limbs;
+}
+
+# endif
+
+/* Assuming x = 2^e * m is finite and >= 0, and n is an integer:
+ Returns the decimal representation of round (x * 10^n).
+ Return the allocated memory - containing the decimal digits in low-to-high
+ order, terminated with a NUL character - in case of success, NULL in case
+ of memory allocation failure. */
+static char *
+scale10_round_decimal_decoded (int e, mpn_t m, void *memory, int n)
+{
+ int s;
+ size_t extra_zeroes;
+ unsigned int abs_n;
+ unsigned int abs_s;
+ mp_limb_t *pow5_ptr;
+ size_t pow5_len;
+ unsigned int s_limbs;
+ unsigned int s_bits;
+ mpn_t pow5;
+ mpn_t z;
+ void *z_memory;
+ char *digits;
+
+ if (memory == NULL)
+ return NULL;
+ /* x = 2^e * m, hence
+ y = round (2^e * 10^n * m) = round (2^(e+n) * 5^n * m)
+ = round (2^s * 5^n * m). */
+ s = e + n;
+ extra_zeroes = 0;
+ /* Factor out a common power of 10 if possible. */
+ if (s > 0 && n > 0)
+ {
+ extra_zeroes = (s < n ? s : n);
+ s -= extra_zeroes;
+ n -= extra_zeroes;
+ }
+ /* Here y = round (2^s * 5^n * m) * 10^extra_zeroes.
+ Before converting to decimal, we need to compute
+ z = round (2^s * 5^n * m). */
+ /* Compute 5^|n|, possibly shifted by |s| bits if n and s have the same
+ sign. 2.322 is slightly larger than log(5)/log(2). */
+ abs_n = (n >= 0 ? n : -n);
+ abs_s = (s >= 0 ? s : -s);
+ pow5_ptr = (mp_limb_t *) malloc (((int)(abs_n * (2.322f / GMP_LIMB_BITS)) + 1
+ + abs_s / GMP_LIMB_BITS + 1)
+ * sizeof (mp_limb_t));
+ if (pow5_ptr == NULL)
+ {
+ free (memory);
+ return NULL;
+ }
+ /* Initialize with 1. */
+ pow5_ptr[0] = 1;
+ pow5_len = 1;
+ /* Multiply with 5^|n|. */
+ if (abs_n > 0)
+ {
+ static mp_limb_t const small_pow5[13 + 1] =
+ {
+ 1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625,
+ 48828125, 244140625, 1220703125
+ };
+ unsigned int n13;
+ for (n13 = 0; n13 <= abs_n; n13 += 13)
+ {
+ mp_limb_t digit1 = small_pow5[n13 + 13 <= abs_n ? 13 : abs_n - n13];
+ size_t j;
+ mp_twolimb_t carry = 0;
+ for (j = 0; j < pow5_len; j++)
+ {
+ mp_limb_t digit2 = pow5_ptr[j];
+ carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2;
+ pow5_ptr[j] = (mp_limb_t) carry;
+ carry = carry >> GMP_LIMB_BITS;
+ }
+ if (carry > 0)
+ pow5_ptr[pow5_len++] = (mp_limb_t) carry;
+ }
+ }
+ s_limbs = abs_s / GMP_LIMB_BITS;
+ s_bits = abs_s % GMP_LIMB_BITS;
+ if (n >= 0 ? s >= 0 : s <= 0)
+ {
+ /* Multiply with 2^|s|. */
+ if (s_bits > 0)
+ {
+ mp_limb_t *ptr = pow5_ptr;
+ mp_twolimb_t accu = 0;
+ size_t count;
+ for (count = pow5_len; count > 0; count--)
+ {
+ accu += (mp_twolimb_t) *ptr << s_bits;
+ *ptr++ = (mp_limb_t) accu;
+ accu = accu >> GMP_LIMB_BITS;
+ }
+ if (accu > 0)
+ {
+ *ptr = (mp_limb_t) accu;
+ pow5_len++;
+ }
+ }
+ if (s_limbs > 0)
+ {
+ size_t count;
+ for (count = pow5_len; count > 0;)
+ {
+ count--;
+ pow5_ptr[s_limbs + count] = pow5_ptr[count];
+ }
+ for (count = s_limbs; count > 0;)
+ {
+ count--;
+ pow5_ptr[count] = 0;
+ }
+ pow5_len += s_limbs;
+ }
+ pow5.limbs = pow5_ptr;
+ pow5.nlimbs = pow5_len;
+ if (n >= 0)
+ {
+ /* Multiply m with pow5. No division needed. */
+ z_memory = multiply (m, pow5, &z);
+ }
+ else
+ {
+ /* Divide m by pow5 and round. */
+ z_memory = divide (m, pow5, &z);
+ }
+ }
+ else
+ {
+ pow5.limbs = pow5_ptr;
+ pow5.nlimbs = pow5_len;
+ if (n >= 0)
+ {
+ /* n >= 0, s < 0.
+ Multiply m with pow5, then divide by 2^|s|. */
+ mpn_t numerator;
+ mpn_t denominator;
+ void *tmp_memory;
+ tmp_memory = multiply (m, pow5, &numerator);
+ if (tmp_memory == NULL)
+ {
+ free (pow5_ptr);
+ free (memory);
+ return NULL;
+ }
+ /* Construct 2^|s|. */
+ {
+ mp_limb_t *ptr = pow5_ptr + pow5_len;
+ size_t i;
+ for (i = 0; i < s_limbs; i++)
+ ptr[i] = 0;
+ ptr[s_limbs] = (mp_limb_t) 1 << s_bits;
+ denominator.limbs = ptr;
+ denominator.nlimbs = s_limbs + 1;
+ }
+ z_memory = divide (numerator, denominator, &z);
+ free (tmp_memory);
+ }
+ else
+ {
+ /* n < 0, s > 0.
+ Multiply m with 2^s, then divide by pow5. */
+ mpn_t numerator;
+ mp_limb_t *num_ptr;
+ num_ptr = (mp_limb_t *) malloc ((m.nlimbs + s_limbs + 1)
+ * sizeof (mp_limb_t));
+ if (num_ptr == NULL)
+ {
+ free (pow5_ptr);
+ free (memory);
+ return NULL;
+ }
+ {
+ mp_limb_t *destptr = num_ptr;
+ {
+ size_t i;
+ for (i = 0; i < s_limbs; i++)
+ *destptr++ = 0;
+ }
+ if (s_bits > 0)
+ {
+ const mp_limb_t *sourceptr = m.limbs;
+ mp_twolimb_t accu = 0;
+ size_t count;
+ for (count = m.nlimbs; count > 0; count--)
+ {
+ accu += (mp_twolimb_t) *sourceptr++ << s_bits;
+ *destptr++ = (mp_limb_t) accu;
+ accu = accu >> GMP_LIMB_BITS;
+ }
+ if (accu > 0)
+ *destptr++ = (mp_limb_t) accu;
+ }
+ else
+ {
+ const mp_limb_t *sourceptr = m.limbs;
+ size_t count;
+ for (count = m.nlimbs; count > 0; count--)
+ *destptr++ = *sourceptr++;
+ }
+ numerator.limbs = num_ptr;
+ numerator.nlimbs = destptr - num_ptr;
+ }
+ z_memory = divide (numerator, pow5, &z);
+ free (num_ptr);
+ }
+ }
+ free (pow5_ptr);
+ free (memory);
+
+ /* Here y = round (x * 10^n) = z * 10^extra_zeroes. */
+
+ if (z_memory == NULL)
+ return NULL;
+ digits = convert_to_decimal (z, extra_zeroes);
+ free (z_memory);
+ return digits;
+}
+
+# if NEED_PRINTF_LONG_DOUBLE
+
+/* Assuming x is finite and >= 0, and n is an integer:
+ Returns the decimal representation of round (x * 10^n).
+ Return the allocated memory - containing the decimal digits in low-to-high
+ order, terminated with a NUL character - in case of success, NULL in case
+ of memory allocation failure. */
+static char *
+scale10_round_decimal_long_double (long double x, int n)
+{
+ int e IF_LINT(= 0);
+ mpn_t m;
+ void *memory = decode_long_double (x, &e, &m);
+ return scale10_round_decimal_decoded (e, m, memory, n);
+}
+
+# endif
+
+# if NEED_PRINTF_DOUBLE
+
+/* Assuming x is finite and >= 0, and n is an integer:
+ Returns the decimal representation of round (x * 10^n).
+ Return the allocated memory - containing the decimal digits in low-to-high
+ order, terminated with a NUL character - in case of success, NULL in case
+ of memory allocation failure. */
+static char *
+scale10_round_decimal_double (double x, int n)
+{
+ int e IF_LINT(= 0);
+ mpn_t m;
+ void *memory = decode_double (x, &e, &m);
+ return scale10_round_decimal_decoded (e, m, memory, n);
+}
+
+# endif
+
+# if NEED_PRINTF_LONG_DOUBLE
+
+/* Assuming x is finite and > 0:
+ Return an approximation for n with 10^n <= x < 10^(n+1).
+ The approximation is usually the right n, but may be off by 1 sometimes. */
+static int
+floorlog10l (long double x)
+{
+ int exp;
+ long double y;
+ double z;
+ double l;
+
+ /* Split into exponential part and mantissa. */
+ y = frexpl (x, &exp);
+ if (!(y >= 0.0L && y < 1.0L))
+ abort ();
+ if (y == 0.0L)
+ return INT_MIN;
+ if (y < 0.5L)
+ {
+ while (y < (1.0L / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 2))))
+ {
+ y *= 1.0L * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2));
+ exp -= GMP_LIMB_BITS;
+ }
+ if (y < (1.0L / (1 << 16)))
+ {
+ y *= 1.0L * (1 << 16);
+ exp -= 16;
+ }
+ if (y < (1.0L / (1 << 8)))
+ {
+ y *= 1.0L * (1 << 8);
+ exp -= 8;
+ }
+ if (y < (1.0L / (1 << 4)))
+ {
+ y *= 1.0L * (1 << 4);
+ exp -= 4;
+ }
+ if (y < (1.0L / (1 << 2)))
+ {
+ y *= 1.0L * (1 << 2);
+ exp -= 2;
+ }
+ if (y < (1.0L / (1 << 1)))
+ {
+ y *= 1.0L * (1 << 1);
+ exp -= 1;
+ }
+ }
+ if (!(y >= 0.5L && y < 1.0L))
+ abort ();
+ /* Compute an approximation for l = log2(x) = exp + log2(y). */
+ l = exp;
+ z = y;
+ if (z < 0.70710678118654752444)
+ {
+ z *= 1.4142135623730950488;
+ l -= 0.5;
+ }
+ if (z < 0.8408964152537145431)
+ {
+ z *= 1.1892071150027210667;
+ l -= 0.25;
+ }
+ if (z < 0.91700404320467123175)
+ {
+ z *= 1.0905077326652576592;
+ l -= 0.125;
+ }
+ if (z < 0.9576032806985736469)
+ {
+ z *= 1.0442737824274138403;
+ l -= 0.0625;
+ }
+ /* Now 0.95 <= z <= 1.01. */
+ z = 1 - z;
+ /* log2(1-z) = 1/log(2) * (- z - z^2/2 - z^3/3 - z^4/4 - ...)
+ Four terms are enough to get an approximation with error < 10^-7. */
+ l -= 1.4426950408889634074 * z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 0.25)));
+ /* Finally multiply with log(2)/log(10), yields an approximation for
+ log10(x). */
+ l *= 0.30102999566398119523;
+ /* Round down to the next integer. */
+ return (int) l + (l < 0 ? -1 : 0);
+}
+
+# endif
+
+# if NEED_PRINTF_DOUBLE
+
+/* Assuming x is finite and > 0:
+ Return an approximation for n with 10^n <= x < 10^(n+1).
+ The approximation is usually the right n, but may be off by 1 sometimes. */
+static int
+floorlog10 (double x)
+{
+ int exp;
+ double y;
+ double z;
+ double l;
+
+ /* Split into exponential part and mantissa. */
+ y = frexp (x, &exp);
+ if (!(y >= 0.0 && y < 1.0))
+ abort ();
+ if (y == 0.0)
+ return INT_MIN;
+ if (y < 0.5)
+ {
+ while (y < (1.0 / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 2))))
+ {
+ y *= 1.0 * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2));
+ exp -= GMP_LIMB_BITS;
+ }
+ if (y < (1.0 / (1 << 16)))
+ {
+ y *= 1.0 * (1 << 16);
+ exp -= 16;
+ }
+ if (y < (1.0 / (1 << 8)))
+ {
+ y *= 1.0 * (1 << 8);
+ exp -= 8;
+ }
+ if (y < (1.0 / (1 << 4)))
+ {
+ y *= 1.0 * (1 << 4);
+ exp -= 4;
+ }
+ if (y < (1.0 / (1 << 2)))
+ {
+ y *= 1.0 * (1 << 2);
+ exp -= 2;
+ }
+ if (y < (1.0 / (1 << 1)))
+ {
+ y *= 1.0 * (1 << 1);
+ exp -= 1;
+ }
+ }
+ if (!(y >= 0.5 && y < 1.0))
+ abort ();
+ /* Compute an approximation for l = log2(x) = exp + log2(y). */
+ l = exp;
+ z = y;
+ if (z < 0.70710678118654752444)
+ {
+ z *= 1.4142135623730950488;
+ l -= 0.5;
+ }
+ if (z < 0.8408964152537145431)
+ {
+ z *= 1.1892071150027210667;
+ l -= 0.25;
+ }
+ if (z < 0.91700404320467123175)
+ {
+ z *= 1.0905077326652576592;
+ l -= 0.125;
+ }
+ if (z < 0.9576032806985736469)
+ {
+ z *= 1.0442737824274138403;
+ l -= 0.0625;
+ }
+ /* Now 0.95 <= z <= 1.01. */
+ z = 1 - z;
+ /* log2(1-z) = 1/log(2) * (- z - z^2/2 - z^3/3 - z^4/4 - ...)
+ Four terms are enough to get an approximation with error < 10^-7. */
+ l -= 1.4426950408889634074 * z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 0.25)));
+ /* Finally multiply with log(2)/log(10), yields an approximation for
+ log10(x). */
+ l *= 0.30102999566398119523;
+ /* Round down to the next integer. */
+ return (int) l + (l < 0 ? -1 : 0);
+}
+
+# endif
+
+/* Tests whether a string of digits consists of exactly PRECISION zeroes and
+ a single '1' digit. */
+static int
+is_borderline (const char *digits, size_t precision)
+{
+ for (; precision > 0; precision--, digits++)
+ if (*digits != '0')
+ return 0;
+ if (*digits != '1')
+ return 0;
+ digits++;
+ return *digits == '\0';
+}
+
+#endif
+
+DCHAR_T *
+VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
+ const FCHAR_T *format, va_list args)
+{
+ DIRECTIVES d;
+ arguments a;
+
+ if (PRINTF_PARSE (format, &d, &a) < 0)
+ /* errno is already set. */
+ return NULL;
+
+#define CLEANUP() \
+ free (d.dir); \
+ if (a.arg) \
+ free (a.arg);
+
+ if (PRINTF_FETCHARGS (args, &a) < 0)
+ {
+ CLEANUP ();
+ errno = EINVAL;
+ return NULL;
+ }
+
+ {
+ size_t buf_neededlength;
+ TCHAR_T *buf;
+ TCHAR_T *buf_malloced;
+ const FCHAR_T *cp;
+ size_t i;
+ DIRECTIVE *dp;
+ /* Output string accumulator. */
+ DCHAR_T *result;
+ size_t allocated;
+ size_t length;
+
+ /* Allocate a small buffer that will hold a directive passed to
+ sprintf or snprintf. */
+ buf_neededlength =
+ xsum4 (7, d.max_width_length, d.max_precision_length, 6);
+#if HAVE_ALLOCA
+ if (buf_neededlength < 4000 / sizeof (TCHAR_T))
+ {
+ buf = (TCHAR_T *) alloca (buf_neededlength * sizeof (TCHAR_T));
+ buf_malloced = NULL;
+ }
+ else
+#endif
+ {
+ size_t buf_memsize = xtimes (buf_neededlength, sizeof (TCHAR_T));
+ if (size_overflow_p (buf_memsize))
+ goto out_of_memory_1;
+ buf = (TCHAR_T *) malloc (buf_memsize);
+ if (buf == NULL)
+ goto out_of_memory_1;
+ buf_malloced = buf;
+ }
+
+ if (resultbuf != NULL)
+ {
+ result = resultbuf;
+ allocated = *lengthp;
+ }
+ else
+ {
+ result = NULL;
+ allocated = 0;
+ }
+ length = 0;
+ /* Invariants:
+ result is either == resultbuf or == NULL or malloc-allocated.
+ If length > 0, then result != NULL. */
+
+ /* Ensures that allocated >= needed. Aborts through a jump to
+ out_of_memory if needed is SIZE_MAX or otherwise too big. */
+#define ENSURE_ALLOCATION(needed) \
+ if ((needed) > allocated) \
+ { \
+ size_t memory_size; \
+ DCHAR_T *memory; \
+ \
+ allocated = (allocated > 0 ? xtimes (allocated, 2) : 12); \
+ if ((needed) > allocated) \
+ allocated = (needed); \
+ memory_size = xtimes (allocated, sizeof (DCHAR_T)); \
+ if (size_overflow_p (memory_size)) \
+ goto out_of_memory; \
+ if (result == resultbuf || result == NULL) \
+ memory = (DCHAR_T *) malloc (memory_size); \
+ else \
+ memory = (DCHAR_T *) realloc (result, memory_size); \
+ if (memory == NULL) \
+ goto out_of_memory; \
+ if (result == resultbuf && length > 0) \
+ DCHAR_CPY (memory, result, length); \
+ result = memory; \
+ }
+
+ for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++)
+ {
+ if (cp != dp->dir_start)
+ {
+ size_t n = dp->dir_start - cp;
+ size_t augmented_length = xsum (length, n);
+
+ ENSURE_ALLOCATION (augmented_length);
+ /* This copies a piece of FCHAR_T[] into a DCHAR_T[]. Here we
+ need that the format string contains only ASCII characters
+ if FCHAR_T and DCHAR_T are not the same type. */
+ if (sizeof (FCHAR_T) == sizeof (DCHAR_T))
+ {
+ DCHAR_CPY (result + length, (const DCHAR_T *) cp, n);
+ length = augmented_length;
+ }
+ else
+ {
+ do
+ result[length++] = (unsigned char) *cp++;
+ while (--n > 0);
+ }
+ }
+ if (i == d.count)
+ break;
+
+ /* Execute a single directive. */
+ if (dp->conversion == '%')
+ {
+ size_t augmented_length;
+
+ if (!(dp->arg_index == ARG_NONE))
+ abort ();
+ augmented_length = xsum (length, 1);
+ ENSURE_ALLOCATION (augmented_length);
+ result[length] = '%';
+ length = augmented_length;
+ }
+ else
+ {
+ if (!(dp->arg_index != ARG_NONE))
+ abort ();
+
+ if (dp->conversion == 'n')
+ {
+ switch (a.arg[dp->arg_index].type)
+ {
+ case TYPE_COUNT_SCHAR_POINTER:
+ *a.arg[dp->arg_index].a.a_count_schar_pointer = length;
+ break;
+ case TYPE_COUNT_SHORT_POINTER:
+ *a.arg[dp->arg_index].a.a_count_short_pointer = length;
+ break;
+ case TYPE_COUNT_INT_POINTER:
+ *a.arg[dp->arg_index].a.a_count_int_pointer = length;
+ break;
+ case TYPE_COUNT_LONGINT_POINTER:
+ *a.arg[dp->arg_index].a.a_count_longint_pointer = length;
+ break;
+#if HAVE_LONG_LONG_INT
+ case TYPE_COUNT_LONGLONGINT_POINTER:
+ *a.arg[dp->arg_index].a.a_count_longlongint_pointer = length;
+ break;
+#endif
+ default:
+ abort ();
+ }
+ }
+#if ENABLE_UNISTDIO
+ /* The unistdio extensions. */
+ else if (dp->conversion == 'U')
+ {
+ arg_type type = a.arg[dp->arg_index].type;
+ int flags = dp->flags;
+ int has_width;
+ size_t width;
+ int has_precision;
+ size_t precision;
+
+ has_width = 0;
+ width = 0;
+ if (dp->width_start != dp->width_end)
+ {
+ if (dp->width_arg_index != ARG_NONE)
+ {
+ int arg;
+
+ if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+ abort ();
+ arg = a.arg[dp->width_arg_index].a.a_int;
+ if (arg < 0)
+ {
+ /* "A negative field width is taken as a '-' flag
+ followed by a positive field width." */
+ flags |= FLAG_LEFT;
+ width = (unsigned int) (-arg);
+ }
+ else
+ width = arg;
+ }
+ else
+ {
+ const FCHAR_T *digitp = dp->width_start;
+
+ do
+ width = xsum (xtimes (width, 10), *digitp++ - '0');
+ while (digitp != dp->width_end);
+ }
+ has_width = 1;
+ }
+
+ has_precision = 0;
+ precision = 0;
+ if (dp->precision_start != dp->precision_end)
+ {
+ if (dp->precision_arg_index != ARG_NONE)
+ {
+ int arg;
+
+ if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+ abort ();
+ arg = a.arg[dp->precision_arg_index].a.a_int;
+ /* "A negative precision is taken as if the precision
+ were omitted." */
+ if (arg >= 0)
+ {
+ precision = arg;
+ has_precision = 1;
+ }
+ }
+ else
+ {
+ const FCHAR_T *digitp = dp->precision_start + 1;
+
+ precision = 0;
+ while (digitp != dp->precision_end)
+ precision = xsum (xtimes (precision, 10), *digitp++ - '0');
+ has_precision = 1;
+ }
+ }
+
+ switch (type)
+ {
+ case TYPE_U8_STRING:
+ {
+ const uint8_t *arg = a.arg[dp->arg_index].a.a_u8_string;
+ const uint8_t *arg_end;
+ size_t characters;
+
+ if (has_precision)
+ {
+ /* Use only PRECISION characters, from the left. */
+ arg_end = arg;
+ characters = 0;
+ for (; precision > 0; precision--)
+ {
+ int count = u8_strmblen (arg_end);
+ if (count == 0)
+ break;
+ if (count < 0)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ errno = EILSEQ;
+ return NULL;
+ }
+ arg_end += count;
+ characters++;
+ }
+ }
+ else if (has_width)
+ {
+ /* Use the entire string, and count the number of
+ characters. */
+ arg_end = arg;
+ characters = 0;
+ for (;;)
+ {
+ int count = u8_strmblen (arg_end);
+ if (count == 0)
+ break;
+ if (count < 0)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ errno = EILSEQ;
+ return NULL;
+ }
+ arg_end += count;
+ characters++;
+ }
+ }
+ else
+ {
+ /* Use the entire string. */
+ arg_end = arg + u8_strlen (arg);
+ /* The number of characters doesn't matter. */
+ characters = 0;
+ }
+
+ if (has_width && width > characters
+ && !(dp->flags & FLAG_LEFT))
+ {
+ size_t n = width - characters;
+ ENSURE_ALLOCATION (xsum (length, n));
+ DCHAR_SET (result + length, ' ', n);
+ length += n;
+ }
+
+# if DCHAR_IS_UINT8_T
+ {
+ size_t n = arg_end - arg;
+ ENSURE_ALLOCATION (xsum (length, n));
+ DCHAR_CPY (result + length, arg, n);
+ length += n;
+ }
+# else
+ { /* Convert. */
+ DCHAR_T *converted = result + length;
+ size_t converted_len = allocated - length;
+# if DCHAR_IS_TCHAR
+ /* Convert from UTF-8 to locale encoding. */
+ converted =
+ u8_conv_to_encoding (locale_charset (),
+ iconveh_question_mark,
+ arg, arg_end - arg, NULL,
+ converted, &converted_len);
+# else
+ /* Convert from UTF-8 to UTF-16/UTF-32. */
+ converted =
+ U8_TO_DCHAR (arg, arg_end - arg,
+ converted, &converted_len);
+# endif
+ if (converted == NULL)
+ {
+ int saved_errno = errno;
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ errno = saved_errno;
+ return NULL;
+ }
+ if (converted != result + length)
+ {
+ ENSURE_ALLOCATION (xsum (length, converted_len));
+ DCHAR_CPY (result + length, converted, converted_len);
+ free (converted);
+ }
+ length += converted_len;
+ }
+# endif
+
+ if (has_width && width > characters
+ && (dp->flags & FLAG_LEFT))
+ {
+ size_t n = width - characters;
+ ENSURE_ALLOCATION (xsum (length, n));
+ DCHAR_SET (result + length, ' ', n);
+ length += n;
+ }
+ }
+ break;
+
+ case TYPE_U16_STRING:
+ {
+ const uint16_t *arg = a.arg[dp->arg_index].a.a_u16_string;
+ const uint16_t *arg_end;
+ size_t characters;
+
+ if (has_precision)
+ {
+ /* Use only PRECISION characters, from the left. */
+ arg_end = arg;
+ characters = 0;
+ for (; precision > 0; precision--)
+ {
+ int count = u16_strmblen (arg_end);
+ if (count == 0)
+ break;
+ if (count < 0)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ errno = EILSEQ;
+ return NULL;
+ }
+ arg_end += count;
+ characters++;
+ }
+ }
+ else if (has_width)
+ {
+ /* Use the entire string, and count the number of
+ characters. */
+ arg_end = arg;
+ characters = 0;
+ for (;;)
+ {
+ int count = u16_strmblen (arg_end);
+ if (count == 0)
+ break;
+ if (count < 0)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ errno = EILSEQ;
+ return NULL;
+ }
+ arg_end += count;
+ characters++;
+ }
+ }
+ else
+ {
+ /* Use the entire string. */
+ arg_end = arg + u16_strlen (arg);
+ /* The number of characters doesn't matter. */
+ characters = 0;
+ }
+
+ if (has_width && width > characters
+ && !(dp->flags & FLAG_LEFT))
+ {
+ size_t n = width - characters;
+ ENSURE_ALLOCATION (xsum (length, n));
+ DCHAR_SET (result + length, ' ', n);
+ length += n;
+ }
+
+# if DCHAR_IS_UINT16_T
+ {
+ size_t n = arg_end - arg;
+ ENSURE_ALLOCATION (xsum (length, n));
+ DCHAR_CPY (result + length, arg, n);
+ length += n;
+ }
+# else
+ { /* Convert. */
+ DCHAR_T *converted = result + length;
+ size_t converted_len = allocated - length;
+# if DCHAR_IS_TCHAR
+ /* Convert from UTF-16 to locale encoding. */
+ converted =
+ u16_conv_to_encoding (locale_charset (),
+ iconveh_question_mark,
+ arg, arg_end - arg, NULL,
+ converted, &converted_len);
+# else
+ /* Convert from UTF-16 to UTF-8/UTF-32. */
+ converted =
+ U16_TO_DCHAR (arg, arg_end - arg,
+ converted, &converted_len);
+# endif
+ if (converted == NULL)
+ {
+ int saved_errno = errno;
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ errno = saved_errno;
+ return NULL;
+ }
+ if (converted != result + length)
+ {
+ ENSURE_ALLOCATION (xsum (length, converted_len));
+ DCHAR_CPY (result + length, converted, converted_len);
+ free (converted);
+ }
+ length += converted_len;
+ }
+# endif
+
+ if (has_width && width > characters
+ && (dp->flags & FLAG_LEFT))
+ {
+ size_t n = width - characters;
+ ENSURE_ALLOCATION (xsum (length, n));
+ DCHAR_SET (result + length, ' ', n);
+ length += n;
+ }
+ }
+ break;
+
+ case TYPE_U32_STRING:
+ {
+ const uint32_t *arg = a.arg[dp->arg_index].a.a_u32_string;
+ const uint32_t *arg_end;
+ size_t characters;
+
+ if (has_precision)
+ {
+ /* Use only PRECISION characters, from the left. */
+ arg_end = arg;
+ characters = 0;
+ for (; precision > 0; precision--)
+ {
+ int count = u32_strmblen (arg_end);
+ if (count == 0)
+ break;
+ if (count < 0)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ errno = EILSEQ;
+ return NULL;
+ }
+ arg_end += count;
+ characters++;
+ }
+ }
+ else if (has_width)
+ {
+ /* Use the entire string, and count the number of
+ characters. */
+ arg_end = arg;
+ characters = 0;
+ for (;;)
+ {
+ int count = u32_strmblen (arg_end);
+ if (count == 0)
+ break;
+ if (count < 0)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ errno = EILSEQ;
+ return NULL;
+ }
+ arg_end += count;
+ characters++;
+ }
+ }
+ else
+ {
+ /* Use the entire string. */
+ arg_end = arg + u32_strlen (arg);
+ /* The number of characters doesn't matter. */
+ characters = 0;
+ }
+
+ if (has_width && width > characters
+ && !(dp->flags & FLAG_LEFT))
+ {
+ size_t n = width - characters;
+ ENSURE_ALLOCATION (xsum (length, n));
+ DCHAR_SET (result + length, ' ', n);
+ length += n;
+ }
+
+# if DCHAR_IS_UINT32_T
+ {
+ size_t n = arg_end - arg;
+ ENSURE_ALLOCATION (xsum (length, n));
+ DCHAR_CPY (result + length, arg, n);
+ length += n;
+ }
+# else
+ { /* Convert. */
+ DCHAR_T *converted = result + length;
+ size_t converted_len = allocated - length;
+# if DCHAR_IS_TCHAR
+ /* Convert from UTF-32 to locale encoding. */
+ converted =
+ u32_conv_to_encoding (locale_charset (),
+ iconveh_question_mark,
+ arg, arg_end - arg, NULL,
+ converted, &converted_len);
+# else
+ /* Convert from UTF-32 to UTF-8/UTF-16. */
+ converted =
+ U32_TO_DCHAR (arg, arg_end - arg,
+ converted, &converted_len);
+# endif
+ if (converted == NULL)
+ {
+ int saved_errno = errno;
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ errno = saved_errno;
+ return NULL;
+ }
+ if (converted != result + length)
+ {
+ ENSURE_ALLOCATION (xsum (length, converted_len));
+ DCHAR_CPY (result + length, converted, converted_len);
+ free (converted);
+ }
+ length += converted_len;
+ }
+# endif
+
+ if (has_width && width > characters
+ && (dp->flags & FLAG_LEFT))
+ {
+ size_t n = width - characters;
+ ENSURE_ALLOCATION (xsum (length, n));
+ DCHAR_SET (result + length, ' ', n);
+ length += n;
+ }
+ }
+ break;
+
+ default:
+ abort ();
+ }
+ }
+#endif
+#if (!USE_SNPRINTF || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && HAVE_WCHAR_T
+ else if (dp->conversion == 's'
+# if WIDE_CHAR_VERSION
+ && a.arg[dp->arg_index].type != TYPE_WIDE_STRING
+# else
+ && a.arg[dp->arg_index].type == TYPE_WIDE_STRING
+# endif
+ )
+ {
+ /* The normal handling of the 's' directive below requires
+ allocating a temporary buffer. The determination of its
+ length (tmp_length), in the case when a precision is
+ specified, below requires a conversion between a char[]
+ string and a wchar_t[] wide string. It could be done, but
+ we have no guarantee that the implementation of sprintf will
+ use the exactly same algorithm. Without this guarantee, it
+ is possible to have buffer overrun bugs. In order to avoid
+ such bugs, we implement the entire processing of the 's'
+ directive ourselves. */
+ int flags = dp->flags;
+ int has_width;
+ size_t width;
+ int has_precision;
+ size_t precision;
+
+ has_width = 0;
+ width = 0;
+ if (dp->width_start != dp->width_end)
+ {
+ if (dp->width_arg_index != ARG_NONE)
+ {
+ int arg;
+
+ if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+ abort ();
+ arg = a.arg[dp->width_arg_index].a.a_int;
+ if (arg < 0)
+ {
+ /* "A negative field width is taken as a '-' flag
+ followed by a positive field width." */
+ flags |= FLAG_LEFT;
+ width = (unsigned int) (-arg);
+ }
+ else
+ width = arg;
+ }
+ else
+ {
+ const FCHAR_T *digitp = dp->width_start;
+
+ do
+ width = xsum (xtimes (width, 10), *digitp++ - '0');
+ while (digitp != dp->width_end);
+ }
+ has_width = 1;
+ }
+
+ has_precision = 0;
+ precision = 6;
+ if (dp->precision_start != dp->precision_end)
+ {
+ if (dp->precision_arg_index != ARG_NONE)
+ {
+ int arg;
+
+ if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+ abort ();
+ arg = a.arg[dp->precision_arg_index].a.a_int;
+ /* "A negative precision is taken as if the precision
+ were omitted." */
+ if (arg >= 0)
+ {
+ precision = arg;
+ has_precision = 1;
+ }
+ }
+ else
+ {
+ const FCHAR_T *digitp = dp->precision_start + 1;
+
+ precision = 0;
+ while (digitp != dp->precision_end)
+ precision = xsum (xtimes (precision, 10), *digitp++ - '0');
+ has_precision = 1;
+ }
+ }
+
+# if WIDE_CHAR_VERSION
+ /* %s in vasnwprintf. See the specification of fwprintf. */
+ {
+ const char *arg = a.arg[dp->arg_index].a.a_string;
+ const char *arg_end;
+ size_t characters;
+
+ if (has_precision)
+ {
+ /* Use only as many bytes as needed to produce PRECISION
+ wide characters, from the left. */
+# if HAVE_MBRTOWC
+ mbstate_t state;
+ memset (&state, '\0', sizeof (mbstate_t));
+# endif
+ arg_end = arg;
+ characters = 0;
+ for (; precision > 0; precision--)
+ {
+ int count;
+# if HAVE_MBRTOWC
+ count = mbrlen (arg_end, MB_CUR_MAX, &state);
+# else
+ count = mblen (arg_end, MB_CUR_MAX);
+# endif
+ if (count == 0)
+ /* Found the terminating NUL. */
+ break;
+ if (count < 0)
+ {
+ /* Invalid or incomplete multibyte character. */
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ errno = EILSEQ;
+ return NULL;
+ }
+ arg_end += count;
+ characters++;
+ }
+ }
+ else if (has_width)
+ {
+ /* Use the entire string, and count the number of wide
+ characters. */
+# if HAVE_MBRTOWC
+ mbstate_t state;
+ memset (&state, '\0', sizeof (mbstate_t));
+# endif
+ arg_end = arg;
+ characters = 0;
+ for (;;)
+ {
+ int count;
+# if HAVE_MBRTOWC
+ count = mbrlen (arg_end, MB_CUR_MAX, &state);
+# else
+ count = mblen (arg_end, MB_CUR_MAX);
+# endif
+ if (count == 0)
+ /* Found the terminating NUL. */
+ break;
+ if (count < 0)
+ {
+ /* Invalid or incomplete multibyte character. */
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ errno = EILSEQ;
+ return NULL;
+ }
+ arg_end += count;
+ characters++;
+ }
+ }
+ else
+ {
+ /* Use the entire string. */
+ arg_end = arg + strlen (arg);
+ /* The number of characters doesn't matter. */
+ characters = 0;
+ }
+
+ if (has_width && width > characters
+ && !(dp->flags & FLAG_LEFT))
+ {
+ size_t n = width - characters;
+ ENSURE_ALLOCATION (xsum (length, n));
+ DCHAR_SET (result + length, ' ', n);
+ length += n;
+ }
+
+ if (has_precision || has_width)
+ {
+ /* We know the number of wide characters in advance. */
+ size_t remaining;
+# if HAVE_MBRTOWC
+ mbstate_t state;
+ memset (&state, '\0', sizeof (mbstate_t));
+# endif
+ ENSURE_ALLOCATION (xsum (length, characters));
+ for (remaining = characters; remaining > 0; remaining--)
+ {
+ wchar_t wc;
+ int count;
+# if HAVE_MBRTOWC
+ count = mbrtowc (&wc, arg, arg_end - arg, &state);
+# else
+ count = mbtowc (&wc, arg, arg_end - arg);
+# endif
+ if (count <= 0)
+ /* mbrtowc not consistent with mbrlen, or mbtowc
+ not consistent with mblen. */
+ abort ();
+ result[length++] = wc;
+ arg += count;
+ }
+ if (!(arg == arg_end))
+ abort ();
+ }
+ else
+ {
+# if HAVE_MBRTOWC
+ mbstate_t state;
+ memset (&state, '\0', sizeof (mbstate_t));
+# endif
+ while (arg < arg_end)
+ {
+ wchar_t wc;
+ int count;
+# if HAVE_MBRTOWC
+ count = mbrtowc (&wc, arg, arg_end - arg, &state);
+# else
+ count = mbtowc (&wc, arg, arg_end - arg);
+# endif
+ if (count <= 0)
+ /* mbrtowc not consistent with mbrlen, or mbtowc
+ not consistent with mblen. */
+ abort ();
+ ENSURE_ALLOCATION (xsum (length, 1));
+ result[length++] = wc;
+ arg += count;
+ }
+ }
+
+ if (has_width && width > characters
+ && (dp->flags & FLAG_LEFT))
+ {
+ size_t n = width - characters;
+ ENSURE_ALLOCATION (xsum (length, n));
+ DCHAR_SET (result + length, ' ', n);
+ length += n;
+ }
+ }
+# else
+ /* %ls in vasnprintf. See the specification of fprintf. */
+ {
+ const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string;
+ const wchar_t *arg_end;
+ size_t characters;
+# if !DCHAR_IS_TCHAR
+ /* This code assumes that TCHAR_T is 'char'. */
+ typedef int TCHAR_T_verify[2 * (sizeof (TCHAR_T) == 1) - 1];
+ TCHAR_T *tmpsrc;
+ DCHAR_T *tmpdst;
+ size_t tmpdst_len;
+# endif
+ size_t w;
+
+ if (has_precision)
+ {
+ /* Use only as many wide characters as needed to produce
+ at most PRECISION bytes, from the left. */
+# if HAVE_WCRTOMB
+ mbstate_t state;
+ memset (&state, '\0', sizeof (mbstate_t));
+# endif
+ arg_end = arg;
+ characters = 0;
+ while (precision > 0)
+ {
+ char buf[64]; /* Assume MB_CUR_MAX <= 64. */
+ int count;
+
+ if (*arg_end == 0)
+ /* Found the terminating null wide character. */
+ break;
+# if HAVE_WCRTOMB
+ count = wcrtomb (buf, *arg_end, &state);
+# else
+ count = wctomb (buf, *arg_end);
+# endif
+ if (count < 0)
+ {
+ /* Cannot convert. */
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ errno = EILSEQ;
+ return NULL;
+ }
+ if (precision < count)
+ break;
+ arg_end++;
+ characters += count;
+ precision -= count;
+ }
+ }
+# if DCHAR_IS_TCHAR
+ else if (has_width)
+# else
+ else
+# endif
+ {
+ /* Use the entire string, and count the number of
+ bytes. */
+# if HAVE_WCRTOMB
+ mbstate_t state;
+ memset (&state, '\0', sizeof (mbstate_t));
+# endif
+ arg_end = arg;
+ characters = 0;
+ for (;;)
+ {
+ char buf[64]; /* Assume MB_CUR_MAX <= 64. */
+ int count;
+
+ if (*arg_end == 0)
+ /* Found the terminating null wide character. */
+ break;
+# if HAVE_WCRTOMB
+ count = wcrtomb (buf, *arg_end, &state);
+# else
+ count = wctomb (buf, *arg_end);
+# endif
+ if (count < 0)
+ {
+ /* Cannot convert. */
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ errno = EILSEQ;
+ return NULL;
+ }
+ arg_end++;
+ characters += count;
+ }
+ }
+# if DCHAR_IS_TCHAR
+ else
+ {
+ /* Use the entire string. */
+ arg_end = arg + local_wcslen (arg);
+ /* The number of bytes doesn't matter. */
+ characters = 0;
+ }
+# endif
+
+# if !DCHAR_IS_TCHAR
+ /* Convert the string into a piece of temporary memory. */
+ tmpsrc = (TCHAR_T *) malloc (characters * sizeof (TCHAR_T));
+ if (tmpsrc == NULL)
+ goto out_of_memory;
+ {
+ TCHAR_T *tmpptr = tmpsrc;
+ size_t remaining;
+# if HAVE_WCRTOMB
+ mbstate_t state;
+ memset (&state, '\0', sizeof (mbstate_t));
+# endif
+ for (remaining = characters; remaining > 0; )
+ {
+ char buf[64]; /* Assume MB_CUR_MAX <= 64. */
+ int count;
+
+ if (*arg == 0)
+ abort ();
+# if HAVE_WCRTOMB
+ count = wcrtomb (buf, *arg, &state);
+# else
+ count = wctomb (buf, *arg);
+# endif
+ if (count <= 0)
+ /* Inconsistency. */
+ abort ();
+ memcpy (tmpptr, buf, count);
+ tmpptr += count;
+ arg++;
+ remaining -= count;
+ }
+ if (!(arg == arg_end))
+ abort ();
+ }
+
+ /* Convert from TCHAR_T[] to DCHAR_T[]. */
+ tmpdst =
+ DCHAR_CONV_FROM_ENCODING (locale_charset (),
+ iconveh_question_mark,
+ tmpsrc, characters,
+ NULL,
+ NULL, &tmpdst_len);
+ if (tmpdst == NULL)
+ {
+ int saved_errno = errno;
+ free (tmpsrc);
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ errno = saved_errno;
+ return NULL;
+ }
+ free (tmpsrc);
+# endif
+
+ if (has_width)
+ {
+# if ENABLE_UNISTDIO
+ /* Outside POSIX, it's preferrable to compare the width
+ against the number of _characters_ of the converted
+ value. */
+ w = DCHAR_MBSNLEN (result + length, characters);
+# else
+ /* The width is compared against the number of _bytes_
+ of the converted value, says POSIX. */
+ w = characters;
+# endif
+ }
+ else
+ /* w doesn't matter. */
+ w = 0;
+
+ if (has_width && width > w
+ && !(dp->flags & FLAG_LEFT))
+ {
+ size_t n = width - w;
+ ENSURE_ALLOCATION (xsum (length, n));
+ DCHAR_SET (result + length, ' ', n);
+ length += n;
+ }
+
+# if DCHAR_IS_TCHAR
+ if (has_precision || has_width)
+ {
+ /* We know the number of bytes in advance. */
+ size_t remaining;
+# if HAVE_WCRTOMB
+ mbstate_t state;
+ memset (&state, '\0', sizeof (mbstate_t));
+# endif
+ ENSURE_ALLOCATION (xsum (length, characters));
+ for (remaining = characters; remaining > 0; )
+ {
+ char buf[64]; /* Assume MB_CUR_MAX <= 64. */
+ int count;
+
+ if (*arg == 0)
+ abort ();
+# if HAVE_WCRTOMB
+ count = wcrtomb (buf, *arg, &state);
+# else
+ count = wctomb (buf, *arg);
+# endif
+ if (count <= 0)
+ /* Inconsistency. */
+ abort ();
+ memcpy (result + length, buf, count);
+ length += count;
+ arg++;
+ remaining -= count;
+ }
+ if (!(arg == arg_end))
+ abort ();
+ }
+ else
+ {
+# if HAVE_WCRTOMB
+ mbstate_t state;
+ memset (&state, '\0', sizeof (mbstate_t));
+# endif
+ while (arg < arg_end)
+ {
+ char buf[64]; /* Assume MB_CUR_MAX <= 64. */
+ int count;
+
+ if (*arg == 0)
+ abort ();
+# if HAVE_WCRTOMB
+ count = wcrtomb (buf, *arg, &state);
+# else
+ count = wctomb (buf, *arg);
+# endif
+ if (count <= 0)
+ /* Inconsistency. */
+ abort ();
+ ENSURE_ALLOCATION (xsum (length, count));
+ memcpy (result + length, buf, count);
+ length += count;
+ arg++;
+ }
+ }
+# else
+ ENSURE_ALLOCATION (xsum (length, tmpdst_len));
+ DCHAR_CPY (result + length, tmpdst, tmpdst_len);
+ free (tmpdst);
+ length += tmpdst_len;
+# endif
+
+ if (has_width && width > w
+ && (dp->flags & FLAG_LEFT))
+ {
+ size_t n = width - w;
+ ENSURE_ALLOCATION (xsum (length, n));
+ DCHAR_SET (result + length, ' ', n);
+ length += n;
+ }
+ }
+ }
+# endif
+#endif
+#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL
+ else if ((dp->conversion == 'a' || dp->conversion == 'A')
+# if !(NEED_PRINTF_DIRECTIVE_A || (NEED_PRINTF_LONG_DOUBLE && NEED_PRINTF_DOUBLE))
+ && (0
+# if NEED_PRINTF_DOUBLE
+ || a.arg[dp->arg_index].type == TYPE_DOUBLE
+# endif
+# if NEED_PRINTF_LONG_DOUBLE
+ || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE
+# endif
+ )
+# endif
+ )
+ {
+ arg_type type = a.arg[dp->arg_index].type;
+ int flags = dp->flags;
+ int has_width;
+ size_t width;
+ int has_precision;
+ size_t precision;
+ size_t tmp_length;
+ DCHAR_T tmpbuf[700];
+ DCHAR_T *tmp;
+ DCHAR_T *pad_ptr;
+ DCHAR_T *p;
+
+ has_width = 0;
+ width = 0;
+ if (dp->width_start != dp->width_end)
+ {
+ if (dp->width_arg_index != ARG_NONE)
+ {
+ int arg;
+
+ if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+ abort ();
+ arg = a.arg[dp->width_arg_index].a.a_int;
+ if (arg < 0)
+ {
+ /* "A negative field width is taken as a '-' flag
+ followed by a positive field width." */
+ flags |= FLAG_LEFT;
+ width = (unsigned int) (-arg);
+ }
+ else
+ width = arg;
+ }
+ else
+ {
+ const FCHAR_T *digitp = dp->width_start;
+
+ do
+ width = xsum (xtimes (width, 10), *digitp++ - '0');
+ while (digitp != dp->width_end);
+ }
+ has_width = 1;
+ }
+
+ has_precision = 0;
+ precision = 0;
+ if (dp->precision_start != dp->precision_end)
+ {
+ if (dp->precision_arg_index != ARG_NONE)
+ {
+ int arg;
+
+ if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+ abort ();
+ arg = a.arg[dp->precision_arg_index].a.a_int;
+ /* "A negative precision is taken as if the precision
+ were omitted." */
+ if (arg >= 0)
+ {
+ precision = arg;
+ has_precision = 1;
+ }
+ }
+ else
+ {
+ const FCHAR_T *digitp = dp->precision_start + 1;
+
+ precision = 0;
+ while (digitp != dp->precision_end)
+ precision = xsum (xtimes (precision, 10), *digitp++ - '0');
+ has_precision = 1;
+ }
+ }
+
+ /* Allocate a temporary buffer of sufficient size. */
+ if (type == TYPE_LONGDOUBLE)
+ tmp_length =
+ (unsigned int) ((LDBL_DIG + 1)
+ * 0.831 /* decimal -> hexadecimal */
+ )
+ + 1; /* turn floor into ceil */
+ else
+ tmp_length =
+ (unsigned int) ((DBL_DIG + 1)
+ * 0.831 /* decimal -> hexadecimal */
+ )
+ + 1; /* turn floor into ceil */
+ if (tmp_length < precision)
+ tmp_length = precision;
+ /* Account for sign, decimal point etc. */
+ tmp_length = xsum (tmp_length, 12);
+
+ if (tmp_length < width)
+ tmp_length = width;
+
+ tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
+
+ if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T))
+ tmp = tmpbuf;
+ else
+ {
+ size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T));
+
+ if (size_overflow_p (tmp_memsize))
+ /* Overflow, would lead to out of memory. */
+ goto out_of_memory;
+ tmp = (DCHAR_T *) malloc (tmp_memsize);
+ if (tmp == NULL)
+ /* Out of memory. */
+ goto out_of_memory;
+ }
+
+ pad_ptr = NULL;
+ p = tmp;
+ if (type == TYPE_LONGDOUBLE)
+ {
+# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE
+ long double arg = a.arg[dp->arg_index].a.a_longdouble;
+
+ if (isnanl (arg))
+ {
+ if (dp->conversion == 'A')
+ {
+ *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
+ }
+ else
+ {
+ *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
+ }
+ }
+ else
+ {
+ int sign = 0;
+ DECL_LONG_DOUBLE_ROUNDING
+
+ BEGIN_LONG_DOUBLE_ROUNDING ();
+
+ if (signbit (arg)) /* arg < 0.0L or negative zero */
+ {
+ sign = -1;
+ arg = -arg;
+ }
+
+ if (sign < 0)
+ *p++ = '-';
+ else if (flags & FLAG_SHOWSIGN)
+ *p++ = '+';
+ else if (flags & FLAG_SPACE)
+ *p++ = ' ';
+
+ if (arg > 0.0L && arg + arg == arg)
+ {
+ if (dp->conversion == 'A')
+ {
+ *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
+ }
+ else
+ {
+ *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
+ }
+ }
+ else
+ {
+ int exponent;
+ long double mantissa;
+
+ if (arg > 0.0L)
+ mantissa = printf_frexpl (arg, &exponent);
+ else
+ {
+ exponent = 0;
+ mantissa = 0.0L;
+ }
+
+ if (has_precision
+ && precision < (unsigned int) ((LDBL_DIG + 1) * 0.831) + 1)
+ {
+ /* Round the mantissa. */
+ long double tail = mantissa;
+ size_t q;
+
+ for (q = precision; ; q--)
+ {
+ int digit = (int) tail;
+ tail -= digit;
+ if (q == 0)
+ {
+ if (digit & 1 ? tail >= 0.5L : tail > 0.5L)
+ tail = 1 - tail;
+ else
+ tail = - tail;
+ break;
+ }
+ tail *= 16.0L;
+ }
+ if (tail != 0.0L)
+ for (q = precision; q > 0; q--)
+ tail *= 0.0625L;
+ mantissa += tail;
+ }
+
+ *p++ = '0';
+ *p++ = dp->conversion - 'A' + 'X';
+ pad_ptr = p;
+ {
+ int digit;
+
+ digit = (int) mantissa;
+ mantissa -= digit;
+ *p++ = '0' + digit;
+ if ((flags & FLAG_ALT)
+ || mantissa > 0.0L || precision > 0)
+ {
+ *p++ = decimal_point_char ();
+ /* This loop terminates because we assume
+ that FLT_RADIX is a power of 2. */
+ while (mantissa > 0.0L)
+ {
+ mantissa *= 16.0L;
+ digit = (int) mantissa;
+ mantissa -= digit;
+ *p++ = digit
+ + (digit < 10
+ ? '0'
+ : dp->conversion - 10);
+ if (precision > 0)
+ precision--;
+ }
+ while (precision > 0)
+ {
+ *p++ = '0';
+ precision--;
+ }
+ }
+ }
+ *p++ = dp->conversion - 'A' + 'P';
+# if WIDE_CHAR_VERSION
+ {
+ static const wchar_t decimal_format[] =
+ { '%', '+', 'd', '\0' };
+ SNPRINTF (p, 6 + 1, decimal_format, exponent);
+ }
+ while (*p != '\0')
+ p++;
+# else
+ if (sizeof (DCHAR_T) == 1)
+ {
+ sprintf ((char *) p, "%+d", exponent);
+ while (*p != '\0')
+ p++;
+ }
+ else
+ {
+ char expbuf[6 + 1];
+ const char *ep;
+ sprintf (expbuf, "%+d", exponent);
+ for (ep = expbuf; (*p = *ep) != '\0'; ep++)
+ p++;
+ }
+# endif
+ }
+
+ END_LONG_DOUBLE_ROUNDING ();
+ }
+# else
+ abort ();
+# endif
+ }
+ else
+ {
+# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE
+ double arg = a.arg[dp->arg_index].a.a_double;
+
+ if (isnand (arg))
+ {
+ if (dp->conversion == 'A')
+ {
+ *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
+ }
+ else
+ {
+ *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
+ }
+ }
+ else
+ {
+ int sign = 0;
+
+ if (signbit (arg)) /* arg < 0.0 or negative zero */
+ {
+ sign = -1;
+ arg = -arg;
+ }
+
+ if (sign < 0)
+ *p++ = '-';
+ else if (flags & FLAG_SHOWSIGN)
+ *p++ = '+';
+ else if (flags & FLAG_SPACE)
+ *p++ = ' ';
+
+ if (arg > 0.0 && arg + arg == arg)
+ {
+ if (dp->conversion == 'A')
+ {
+ *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
+ }
+ else
+ {
+ *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
+ }
+ }
+ else
+ {
+ int exponent;
+ double mantissa;
+
+ if (arg > 0.0)
+ mantissa = printf_frexp (arg, &exponent);
+ else
+ {
+ exponent = 0;
+ mantissa = 0.0;
+ }
+
+ if (has_precision
+ && precision < (unsigned int) ((DBL_DIG + 1) * 0.831) + 1)
+ {
+ /* Round the mantissa. */
+ double tail = mantissa;
+ size_t q;
+
+ for (q = precision; ; q--)
+ {
+ int digit = (int) tail;
+ tail -= digit;
+ if (q == 0)
+ {
+ if (digit & 1 ? tail >= 0.5 : tail > 0.5)
+ tail = 1 - tail;
+ else
+ tail = - tail;
+ break;
+ }
+ tail *= 16.0;
+ }
+ if (tail != 0.0)
+ for (q = precision; q > 0; q--)
+ tail *= 0.0625;
+ mantissa += tail;
+ }
+
+ *p++ = '0';
+ *p++ = dp->conversion - 'A' + 'X';
+ pad_ptr = p;
+ {
+ int digit;
+
+ digit = (int) mantissa;
+ mantissa -= digit;
+ *p++ = '0' + digit;
+ if ((flags & FLAG_ALT)
+ || mantissa > 0.0 || precision > 0)
+ {
+ *p++ = decimal_point_char ();
+ /* This loop terminates because we assume
+ that FLT_RADIX is a power of 2. */
+ while (mantissa > 0.0)
+ {
+ mantissa *= 16.0;
+ digit = (int) mantissa;
+ mantissa -= digit;
+ *p++ = digit
+ + (digit < 10
+ ? '0'
+ : dp->conversion - 10);
+ if (precision > 0)
+ precision--;
+ }
+ while (precision > 0)
+ {
+ *p++ = '0';
+ precision--;
+ }
+ }
+ }
+ *p++ = dp->conversion - 'A' + 'P';
+# if WIDE_CHAR_VERSION
+ {
+ static const wchar_t decimal_format[] =
+ { '%', '+', 'd', '\0' };
+ SNPRINTF (p, 6 + 1, decimal_format, exponent);
+ }
+ while (*p != '\0')
+ p++;
+# else
+ if (sizeof (DCHAR_T) == 1)
+ {
+ sprintf ((char *) p, "%+d", exponent);
+ while (*p != '\0')
+ p++;
+ }
+ else
+ {
+ char expbuf[6 + 1];
+ const char *ep;
+ sprintf (expbuf, "%+d", exponent);
+ for (ep = expbuf; (*p = *ep) != '\0'; ep++)
+ p++;
+ }
+# endif
+ }
+ }
+# else
+ abort ();
+# endif
+ }
+ /* The generated string now extends from tmp to p, with the
+ zero padding insertion point being at pad_ptr. */
+ if (has_width && p - tmp < width)
+ {
+ size_t pad = width - (p - tmp);
+ DCHAR_T *end = p + pad;
+
+ if (flags & FLAG_LEFT)
+ {
+ /* Pad with spaces on the right. */
+ for (; pad > 0; pad--)
+ *p++ = ' ';
+ }
+ else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
+ {
+ /* Pad with zeroes. */
+ DCHAR_T *q = end;
+
+ while (p > pad_ptr)
+ *--q = *--p;
+ for (; pad > 0; pad--)
+ *p++ = '0';
+ }
+ else
+ {
+ /* Pad with spaces on the left. */
+ DCHAR_T *q = end;
+
+ while (p > tmp)
+ *--q = *--p;
+ for (; pad > 0; pad--)
+ *p++ = ' ';
+ }
+
+ p = end;
+ }
+
+ {
+ size_t count = p - tmp;
+
+ if (count >= tmp_length)
+ /* tmp_length was incorrectly calculated - fix the
+ code above! */
+ abort ();
+
+ /* Make room for the result. */
+ if (count >= allocated - length)
+ {
+ size_t n = xsum (length, count);
+
+ ENSURE_ALLOCATION (n);
+ }
+
+ /* Append the result. */
+ memcpy (result + length, tmp, count * sizeof (DCHAR_T));
+ if (tmp != tmpbuf)
+ free (tmp);
+ length += count;
+ }
+ }
+#endif
+#if (NEED_PRINTF_INFINITE_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL
+ else if ((dp->conversion == 'f' || dp->conversion == 'F'
+ || dp->conversion == 'e' || dp->conversion == 'E'
+ || dp->conversion == 'g' || dp->conversion == 'G'
+ || dp->conversion == 'a' || dp->conversion == 'A')
+ && (0
+# if NEED_PRINTF_DOUBLE
+ || a.arg[dp->arg_index].type == TYPE_DOUBLE
+# elif NEED_PRINTF_INFINITE_DOUBLE
+ || (a.arg[dp->arg_index].type == TYPE_DOUBLE
+ /* The systems (mingw) which produce wrong output
+ for Inf, -Inf, and NaN also do so for -0.0.
+ Therefore we treat this case here as well. */
+ && is_infinite_or_zero (a.arg[dp->arg_index].a.a_double))
+# endif
+# if NEED_PRINTF_LONG_DOUBLE
+ || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE
+# elif NEED_PRINTF_INFINITE_LONG_DOUBLE
+ || (a.arg[dp->arg_index].type == TYPE_LONGDOUBLE
+ /* Some systems produce wrong output for Inf,
+ -Inf, and NaN. Some systems in this category
+ (IRIX 5.3) also do so for -0.0. Therefore we
+ treat this case here as well. */
+ && is_infinite_or_zerol (a.arg[dp->arg_index].a.a_longdouble))
+# endif
+ ))
+ {
+# if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE)
+ arg_type type = a.arg[dp->arg_index].type;
+# endif
+ int flags = dp->flags;
+ int has_width;
+ size_t width;
+ int has_precision;
+ size_t precision;
+ size_t tmp_length;
+ DCHAR_T tmpbuf[700];
+ DCHAR_T *tmp;
+ DCHAR_T *pad_ptr;
+ DCHAR_T *p;
+
+ has_width = 0;
+ width = 0;
+ if (dp->width_start != dp->width_end)
+ {
+ if (dp->width_arg_index != ARG_NONE)
+ {
+ int arg;
+
+ if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+ abort ();
+ arg = a.arg[dp->width_arg_index].a.a_int;
+ if (arg < 0)
+ {
+ /* "A negative field width is taken as a '-' flag
+ followed by a positive field width." */
+ flags |= FLAG_LEFT;
+ width = (unsigned int) (-arg);
+ }
+ else
+ width = arg;
+ }
+ else
+ {
+ const FCHAR_T *digitp = dp->width_start;
+
+ do
+ width = xsum (xtimes (width, 10), *digitp++ - '0');
+ while (digitp != dp->width_end);
+ }
+ has_width = 1;
+ }
+
+ has_precision = 0;
+ precision = 0;
+ if (dp->precision_start != dp->precision_end)
+ {
+ if (dp->precision_arg_index != ARG_NONE)
+ {
+ int arg;
+
+ if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+ abort ();
+ arg = a.arg[dp->precision_arg_index].a.a_int;
+ /* "A negative precision is taken as if the precision
+ were omitted." */
+ if (arg >= 0)
+ {
+ precision = arg;
+ has_precision = 1;
+ }
+ }
+ else
+ {
+ const FCHAR_T *digitp = dp->precision_start + 1;
+
+ precision = 0;
+ while (digitp != dp->precision_end)
+ precision = xsum (xtimes (precision, 10), *digitp++ - '0');
+ has_precision = 1;
+ }
+ }
+
+ /* POSIX specifies the default precision to be 6 for %f, %F,
+ %e, %E, but not for %g, %G. Implementations appear to use
+ the same default precision also for %g, %G. But for %a, %A,
+ the default precision is 0. */
+ if (!has_precision)
+ if (!(dp->conversion == 'a' || dp->conversion == 'A'))
+ precision = 6;
+
+ /* Allocate a temporary buffer of sufficient size. */
+# if NEED_PRINTF_DOUBLE && NEED_PRINTF_LONG_DOUBLE
+ tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : DBL_DIG + 1);
+# elif NEED_PRINTF_INFINITE_DOUBLE && NEED_PRINTF_LONG_DOUBLE
+ tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : 0);
+# elif NEED_PRINTF_LONG_DOUBLE
+ tmp_length = LDBL_DIG + 1;
+# elif NEED_PRINTF_DOUBLE
+ tmp_length = DBL_DIG + 1;
+# else
+ tmp_length = 0;
+# endif
+ if (tmp_length < precision)
+ tmp_length = precision;
+# if NEED_PRINTF_LONG_DOUBLE
+# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
+ if (type == TYPE_LONGDOUBLE)
+# endif
+ if (dp->conversion == 'f' || dp->conversion == 'F')
+ {
+ long double arg = a.arg[dp->arg_index].a.a_longdouble;
+ if (!(isnanl (arg) || arg + arg == arg))
+ {
+ /* arg is finite and nonzero. */
+ int exponent = floorlog10l (arg < 0 ? -arg : arg);
+ if (exponent >= 0 && tmp_length < exponent + precision)
+ tmp_length = exponent + precision;
+ }
+ }
+# endif
+# if NEED_PRINTF_DOUBLE
+# if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE
+ if (type == TYPE_DOUBLE)
+# endif
+ if (dp->conversion == 'f' || dp->conversion == 'F')
+ {
+ double arg = a.arg[dp->arg_index].a.a_double;
+ if (!(isnand (arg) || arg + arg == arg))
+ {
+ /* arg is finite and nonzero. */
+ int exponent = floorlog10 (arg < 0 ? -arg : arg);
+ if (exponent >= 0 && tmp_length < exponent + precision)
+ tmp_length = exponent + precision;
+ }
+ }
+# endif
+ /* Account for sign, decimal point etc. */
+ tmp_length = xsum (tmp_length, 12);
+
+ if (tmp_length < width)
+ tmp_length = width;
+
+ tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
+
+ if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T))
+ tmp = tmpbuf;
+ else
+ {
+ size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T));
+
+ if (size_overflow_p (tmp_memsize))
+ /* Overflow, would lead to out of memory. */
+ goto out_of_memory;
+ tmp = (DCHAR_T *) malloc (tmp_memsize);
+ if (tmp == NULL)
+ /* Out of memory. */
+ goto out_of_memory;
+ }
+
+ pad_ptr = NULL;
+ p = tmp;
+
+# if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE
+# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
+ if (type == TYPE_LONGDOUBLE)
+# endif
+ {
+ long double arg = a.arg[dp->arg_index].a.a_longdouble;
+
+ if (isnanl (arg))
+ {
+ if (dp->conversion >= 'A' && dp->conversion <= 'Z')
+ {
+ *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
+ }
+ else
+ {
+ *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
+ }
+ }
+ else
+ {
+ int sign = 0;
+ DECL_LONG_DOUBLE_ROUNDING
+
+ BEGIN_LONG_DOUBLE_ROUNDING ();
+
+ if (signbit (arg)) /* arg < 0.0L or negative zero */
+ {
+ sign = -1;
+ arg = -arg;
+ }
+
+ if (sign < 0)
+ *p++ = '-';
+ else if (flags & FLAG_SHOWSIGN)
+ *p++ = '+';
+ else if (flags & FLAG_SPACE)
+ *p++ = ' ';
+
+ if (arg > 0.0L && arg + arg == arg)
+ {
+ if (dp->conversion >= 'A' && dp->conversion <= 'Z')
+ {
+ *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
+ }
+ else
+ {
+ *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
+ }
+ }
+ else
+ {
+# if NEED_PRINTF_LONG_DOUBLE
+ pad_ptr = p;
+
+ if (dp->conversion == 'f' || dp->conversion == 'F')
+ {
+ char *digits;
+ size_t ndigits;
+
+ digits =
+ scale10_round_decimal_long_double (arg, precision);
+ if (digits == NULL)
+ {
+ END_LONG_DOUBLE_ROUNDING ();
+ goto out_of_memory;
+ }
+ ndigits = strlen (digits);
+
+ if (ndigits > precision)
+ do
+ {
+ --ndigits;
+ *p++ = digits[ndigits];
+ }
+ while (ndigits > precision);
+ else
+ *p++ = '0';
+ /* Here ndigits <= precision. */
+ if ((flags & FLAG_ALT) || precision > 0)
+ {
+ *p++ = decimal_point_char ();
+ for (; precision > ndigits; precision--)
+ *p++ = '0';
+ while (ndigits > 0)
+ {
+ --ndigits;
+ *p++ = digits[ndigits];
+ }
+ }
+
+ free (digits);
+ }
+ else if (dp->conversion == 'e' || dp->conversion == 'E')
+ {
+ int exponent;
+
+ if (arg == 0.0L)
+ {
+ exponent = 0;
+ *p++ = '0';
+ if ((flags & FLAG_ALT) || precision > 0)
+ {
+ *p++ = decimal_point_char ();
+ for (; precision > 0; precision--)
+ *p++ = '0';
+ }
+ }
+ else
+ {
+ /* arg > 0.0L. */
+ int adjusted;
+ char *digits;
+ size_t ndigits;
+
+ exponent = floorlog10l (arg);
+ adjusted = 0;
+ for (;;)
+ {
+ digits =
+ scale10_round_decimal_long_double (arg,
+ (int)precision - exponent);
+ if (digits == NULL)
+ {
+ END_LONG_DOUBLE_ROUNDING ();
+ goto out_of_memory;
+ }
+ ndigits = strlen (digits);
+
+ if (ndigits == precision + 1)
+ break;
+ if (ndigits < precision
+ || ndigits > precision + 2)
+ /* The exponent was not guessed
+ precisely enough. */
+ abort ();
+ if (adjusted)
+ /* None of two values of exponent is
+ the right one. Prevent an endless
+ loop. */
+ abort ();
+ free (digits);
+ if (ndigits == precision)
+ exponent -= 1;
+ else
+ exponent += 1;
+ adjusted = 1;
+ }
+ /* Here ndigits = precision+1. */
+ if (is_borderline (digits, precision))
+ {
+ /* Maybe the exponent guess was too high
+ and a smaller exponent can be reached
+ by turning a 10...0 into 9...9x. */
+ char *digits2 =
+ scale10_round_decimal_long_double (arg,
+ (int)precision - exponent + 1);
+ if (digits2 == NULL)
+ {
+ free (digits);
+ END_LONG_DOUBLE_ROUNDING ();
+ goto out_of_memory;
+ }
+ if (strlen (digits2) == precision + 1)
+ {
+ free (digits);
+ digits = digits2;
+ exponent -= 1;
+ }
+ else
+ free (digits2);
+ }
+ /* Here ndigits = precision+1. */
+
+ *p++ = digits[--ndigits];
+ if ((flags & FLAG_ALT) || precision > 0)
+ {
+ *p++ = decimal_point_char ();
+ while (ndigits > 0)
+ {
+ --ndigits;
+ *p++ = digits[ndigits];
+ }
+ }
+
+ free (digits);
+ }
+
+ *p++ = dp->conversion; /* 'e' or 'E' */
+# if WIDE_CHAR_VERSION
+ {
+ static const wchar_t decimal_format[] =
+ { '%', '+', '.', '2', 'd', '\0' };
+ SNPRINTF (p, 6 + 1, decimal_format, exponent);
+ }
+ while (*p != '\0')
+ p++;
+# else
+ if (sizeof (DCHAR_T) == 1)
+ {
+ sprintf ((char *) p, "%+.2d", exponent);
+ while (*p != '\0')
+ p++;
+ }
+ else
+ {
+ char expbuf[6 + 1];
+ const char *ep;
+ sprintf (expbuf, "%+.2d", exponent);
+ for (ep = expbuf; (*p = *ep) != '\0'; ep++)
+ p++;
+ }
+# endif
+ }
+ else if (dp->conversion == 'g' || dp->conversion == 'G')
+ {
+ if (precision == 0)
+ precision = 1;
+ /* precision >= 1. */
+
+ if (arg == 0.0L)
+ /* The exponent is 0, >= -4, < precision.
+ Use fixed-point notation. */
+ {
+ size_t ndigits = precision;
+ /* Number of trailing zeroes that have to be
+ dropped. */
+ size_t nzeroes =
+ (flags & FLAG_ALT ? 0 : precision - 1);
+
+ --ndigits;
+ *p++ = '0';
+ if ((flags & FLAG_ALT) || ndigits > nzeroes)
+ {
+ *p++ = decimal_point_char ();
+ while (ndigits > nzeroes)
+ {
+ --ndigits;
+ *p++ = '0';
+ }
+ }
+ }
+ else
+ {
+ /* arg > 0.0L. */
+ int exponent;
+ int adjusted;
+ char *digits;
+ size_t ndigits;
+ size_t nzeroes;
+
+ exponent = floorlog10l (arg);
+ adjusted = 0;
+ for (;;)
+ {
+ digits =
+ scale10_round_decimal_long_double (arg,
+ (int)(precision - 1) - exponent);
+ if (digits == NULL)
+ {
+ END_LONG_DOUBLE_ROUNDING ();
+ goto out_of_memory;
+ }
+ ndigits = strlen (digits);
+
+ if (ndigits == precision)
+ break;
+ if (ndigits < precision - 1
+ || ndigits > precision + 1)
+ /* The exponent was not guessed
+ precisely enough. */
+ abort ();
+ if (adjusted)
+ /* None of two values of exponent is
+ the right one. Prevent an endless
+ loop. */
+ abort ();
+ free (digits);
+ if (ndigits < precision)
+ exponent -= 1;
+ else
+ exponent += 1;
+ adjusted = 1;
+ }
+ /* Here ndigits = precision. */
+ if (is_borderline (digits, precision - 1))
+ {
+ /* Maybe the exponent guess was too high
+ and a smaller exponent can be reached
+ by turning a 10...0 into 9...9x. */
+ char *digits2 =
+ scale10_round_decimal_long_double (arg,
+ (int)(precision - 1) - exponent + 1);
+ if (digits2 == NULL)
+ {
+ free (digits);
+ END_LONG_DOUBLE_ROUNDING ();
+ goto out_of_memory;
+ }
+ if (strlen (digits2) == precision)
+ {
+ free (digits);
+ digits = digits2;
+ exponent -= 1;
+ }
+ else
+ free (digits2);
+ }
+ /* Here ndigits = precision. */
+
+ /* Determine the number of trailing zeroes
+ that have to be dropped. */
+ nzeroes = 0;
+ if ((flags & FLAG_ALT) == 0)
+ while (nzeroes < ndigits
+ && digits[nzeroes] == '0')
+ nzeroes++;
+
+ /* The exponent is now determined. */
+ if (exponent >= -4
+ && exponent < (long)precision)
+ {
+ /* Fixed-point notation:
+ max(exponent,0)+1 digits, then the
+ decimal point, then the remaining
+ digits without trailing zeroes. */
+ if (exponent >= 0)
+ {
+ size_t count = exponent + 1;
+ /* Note: count <= precision = ndigits. */
+ for (; count > 0; count--)
+ *p++ = digits[--ndigits];
+ if ((flags & FLAG_ALT) || ndigits > nzeroes)
+ {
+ *p++ = decimal_point_char ();
+ while (ndigits > nzeroes)
+ {
+ --ndigits;
+ *p++ = digits[ndigits];
+ }
+ }
+ }
+ else
+ {
+ size_t count = -exponent - 1;
+ *p++ = '0';
+ *p++ = decimal_point_char ();
+ for (; count > 0; count--)
+ *p++ = '0';
+ while (ndigits > nzeroes)
+ {
+ --ndigits;
+ *p++ = digits[ndigits];
+ }
+ }
+ }
+ else
+ {
+ /* Exponential notation. */
+ *p++ = digits[--ndigits];
+ if ((flags & FLAG_ALT) || ndigits > nzeroes)
+ {
+ *p++ = decimal_point_char ();
+ while (ndigits > nzeroes)
+ {
+ --ndigits;
+ *p++ = digits[ndigits];
+ }
+ }
+ *p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */
+# if WIDE_CHAR_VERSION
+ {
+ static const wchar_t decimal_format[] =
+ { '%', '+', '.', '2', 'd', '\0' };
+ SNPRINTF (p, 6 + 1, decimal_format, exponent);
+ }
+ while (*p != '\0')
+ p++;
+# else
+ if (sizeof (DCHAR_T) == 1)
+ {
+ sprintf ((char *) p, "%+.2d", exponent);
+ while (*p != '\0')
+ p++;
+ }
+ else
+ {
+ char expbuf[6 + 1];
+ const char *ep;
+ sprintf (expbuf, "%+.2d", exponent);
+ for (ep = expbuf; (*p = *ep) != '\0'; ep++)
+ p++;
+ }
+# endif
+ }
+
+ free (digits);
+ }
+ }
+ else
+ abort ();
+# else
+ /* arg is finite. */
+ if (!(arg == 0.0L))
+ abort ();
+
+ pad_ptr = p;
+
+ if (dp->conversion == 'f' || dp->conversion == 'F')
+ {
+ *p++ = '0';
+ if ((flags & FLAG_ALT) || precision > 0)
+ {
+ *p++ = decimal_point_char ();
+ for (; precision > 0; precision--)
+ *p++ = '0';
+ }
+ }
+ else if (dp->conversion == 'e' || dp->conversion == 'E')
+ {
+ *p++ = '0';
+ if ((flags & FLAG_ALT) || precision > 0)
+ {
+ *p++ = decimal_point_char ();
+ for (; precision > 0; precision--)
+ *p++ = '0';
+ }
+ *p++ = dp->conversion; /* 'e' or 'E' */
+ *p++ = '+';
+ *p++ = '0';
+ *p++ = '0';
+ }
+ else if (dp->conversion == 'g' || dp->conversion == 'G')
+ {
+ *p++ = '0';
+ if (flags & FLAG_ALT)
+ {
+ size_t ndigits =
+ (precision > 0 ? precision - 1 : 0);
+ *p++ = decimal_point_char ();
+ for (; ndigits > 0; --ndigits)
+ *p++ = '0';
+ }
+ }
+ else if (dp->conversion == 'a' || dp->conversion == 'A')
+ {
+ *p++ = '0';
+ *p++ = dp->conversion - 'A' + 'X';
+ pad_ptr = p;
+ *p++ = '0';
+ if ((flags & FLAG_ALT) || precision > 0)
+ {
+ *p++ = decimal_point_char ();
+ for (; precision > 0; precision--)
+ *p++ = '0';
+ }
+ *p++ = dp->conversion - 'A' + 'P';
+ *p++ = '+';
+ *p++ = '0';
+ }
+ else
+ abort ();
+# endif
+ }
+
+ END_LONG_DOUBLE_ROUNDING ();
+ }
+ }
+# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
+ else
+# endif
+# endif
+# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
+ {
+ double arg = a.arg[dp->arg_index].a.a_double;
+
+ if (isnand (arg))
+ {
+ if (dp->conversion >= 'A' && dp->conversion <= 'Z')
+ {
+ *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
+ }
+ else
+ {
+ *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
+ }
+ }
+ else
+ {
+ int sign = 0;
+
+ if (signbit (arg)) /* arg < 0.0 or negative zero */
+ {
+ sign = -1;
+ arg = -arg;
+ }
+
+ if (sign < 0)
+ *p++ = '-';
+ else if (flags & FLAG_SHOWSIGN)
+ *p++ = '+';
+ else if (flags & FLAG_SPACE)
+ *p++ = ' ';
+
+ if (arg > 0.0 && arg + arg == arg)
+ {
+ if (dp->conversion >= 'A' && dp->conversion <= 'Z')
+ {
+ *p++ = 'I'; *p++ = 'N'; *p++ = 'F';
+ }
+ else
+ {
+ *p++ = 'i'; *p++ = 'n'; *p++ = 'f';
+ }
+ }
+ else
+ {
+# if NEED_PRINTF_DOUBLE
+ pad_ptr = p;
+
+ if (dp->conversion == 'f' || dp->conversion == 'F')
+ {
+ char *digits;
+ size_t ndigits;
+
+ digits =
+ scale10_round_decimal_double (arg, precision);
+ if (digits == NULL)
+ goto out_of_memory;
+ ndigits = strlen (digits);
+
+ if (ndigits > precision)
+ do
+ {
+ --ndigits;
+ *p++ = digits[ndigits];
+ }
+ while (ndigits > precision);
+ else
+ *p++ = '0';
+ /* Here ndigits <= precision. */
+ if ((flags & FLAG_ALT) || precision > 0)
+ {
+ *p++ = decimal_point_char ();
+ for (; precision > ndigits; precision--)
+ *p++ = '0';
+ while (ndigits > 0)
+ {
+ --ndigits;
+ *p++ = digits[ndigits];
+ }
+ }
+
+ free (digits);
+ }
+ else if (dp->conversion == 'e' || dp->conversion == 'E')
+ {
+ int exponent;
+
+ if (arg == 0.0)
+ {
+ exponent = 0;
+ *p++ = '0';
+ if ((flags & FLAG_ALT) || precision > 0)
+ {
+ *p++ = decimal_point_char ();
+ for (; precision > 0; precision--)
+ *p++ = '0';
+ }
+ }
+ else
+ {
+ /* arg > 0.0. */
+ int adjusted;
+ char *digits;
+ size_t ndigits;
+
+ exponent = floorlog10 (arg);
+ adjusted = 0;
+ for (;;)
+ {
+ digits =
+ scale10_round_decimal_double (arg,
+ (int)precision - exponent);
+ if (digits == NULL)
+ goto out_of_memory;
+ ndigits = strlen (digits);
+
+ if (ndigits == precision + 1)
+ break;
+ if (ndigits < precision
+ || ndigits > precision + 2)
+ /* The exponent was not guessed
+ precisely enough. */
+ abort ();
+ if (adjusted)
+ /* None of two values of exponent is
+ the right one. Prevent an endless
+ loop. */
+ abort ();
+ free (digits);
+ if (ndigits == precision)
+ exponent -= 1;
+ else
+ exponent += 1;
+ adjusted = 1;
+ }
+ /* Here ndigits = precision+1. */
+ if (is_borderline (digits, precision))
+ {
+ /* Maybe the exponent guess was too high
+ and a smaller exponent can be reached
+ by turning a 10...0 into 9...9x. */
+ char *digits2 =
+ scale10_round_decimal_double (arg,
+ (int)precision - exponent + 1);
+ if (digits2 == NULL)
+ {
+ free (digits);
+ goto out_of_memory;
+ }
+ if (strlen (digits2) == precision + 1)
+ {
+ free (digits);
+ digits = digits2;
+ exponent -= 1;
+ }
+ else
+ free (digits2);
+ }
+ /* Here ndigits = precision+1. */
+
+ *p++ = digits[--ndigits];
+ if ((flags & FLAG_ALT) || precision > 0)
+ {
+ *p++ = decimal_point_char ();
+ while (ndigits > 0)
+ {
+ --ndigits;
+ *p++ = digits[ndigits];
+ }
+ }
+
+ free (digits);
+ }
+
+ *p++ = dp->conversion; /* 'e' or 'E' */
+# if WIDE_CHAR_VERSION
+ {
+ static const wchar_t decimal_format[] =
+ /* Produce the same number of exponent digits
+ as the native printf implementation. */
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+ { '%', '+', '.', '3', 'd', '\0' };
+# else
+ { '%', '+', '.', '2', 'd', '\0' };
+# endif
+ SNPRINTF (p, 6 + 1, decimal_format, exponent);
+ }
+ while (*p != '\0')
+ p++;
+# else
+ {
+ static const char decimal_format[] =
+ /* Produce the same number of exponent digits
+ as the native printf implementation. */
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+ "%+.3d";
+# else
+ "%+.2d";
+# endif
+ if (sizeof (DCHAR_T) == 1)
+ {
+ sprintf ((char *) p, decimal_format, exponent);
+ while (*p != '\0')
+ p++;
+ }
+ else
+ {
+ char expbuf[6 + 1];
+ const char *ep;
+ sprintf (expbuf, decimal_format, exponent);
+ for (ep = expbuf; (*p = *ep) != '\0'; ep++)
+ p++;
+ }
+ }
+# endif
+ }
+ else if (dp->conversion == 'g' || dp->conversion == 'G')
+ {
+ if (precision == 0)
+ precision = 1;
+ /* precision >= 1. */
+
+ if (arg == 0.0)
+ /* The exponent is 0, >= -4, < precision.
+ Use fixed-point notation. */
+ {
+ size_t ndigits = precision;
+ /* Number of trailing zeroes that have to be
+ dropped. */
+ size_t nzeroes =
+ (flags & FLAG_ALT ? 0 : precision - 1);
+
+ --ndigits;
+ *p++ = '0';
+ if ((flags & FLAG_ALT) || ndigits > nzeroes)
+ {
+ *p++ = decimal_point_char ();
+ while (ndigits > nzeroes)
+ {
+ --ndigits;
+ *p++ = '0';
+ }
+ }
+ }
+ else
+ {
+ /* arg > 0.0. */
+ int exponent;
+ int adjusted;
+ char *digits;
+ size_t ndigits;
+ size_t nzeroes;
+
+ exponent = floorlog10 (arg);
+ adjusted = 0;
+ for (;;)
+ {
+ digits =
+ scale10_round_decimal_double (arg,
+ (int)(precision - 1) - exponent);
+ if (digits == NULL)
+ goto out_of_memory;
+ ndigits = strlen (digits);
+
+ if (ndigits == precision)
+ break;
+ if (ndigits < precision - 1
+ || ndigits > precision + 1)
+ /* The exponent was not guessed
+ precisely enough. */
+ abort ();
+ if (adjusted)
+ /* None of two values of exponent is
+ the right one. Prevent an endless
+ loop. */
+ abort ();
+ free (digits);
+ if (ndigits < precision)
+ exponent -= 1;
+ else
+ exponent += 1;
+ adjusted = 1;
+ }
+ /* Here ndigits = precision. */
+ if (is_borderline (digits, precision - 1))
+ {
+ /* Maybe the exponent guess was too high
+ and a smaller exponent can be reached
+ by turning a 10...0 into 9...9x. */
+ char *digits2 =
+ scale10_round_decimal_double (arg,
+ (int)(precision - 1) - exponent + 1);
+ if (digits2 == NULL)
+ {
+ free (digits);
+ goto out_of_memory;
+ }
+ if (strlen (digits2) == precision)
+ {
+ free (digits);
+ digits = digits2;
+ exponent -= 1;
+ }
+ else
+ free (digits2);
+ }
+ /* Here ndigits = precision. */
+
+ /* Determine the number of trailing zeroes
+ that have to be dropped. */
+ nzeroes = 0;
+ if ((flags & FLAG_ALT) == 0)
+ while (nzeroes < ndigits
+ && digits[nzeroes] == '0')
+ nzeroes++;
+
+ /* The exponent is now determined. */
+ if (exponent >= -4
+ && exponent < (long)precision)
+ {
+ /* Fixed-point notation:
+ max(exponent,0)+1 digits, then the
+ decimal point, then the remaining
+ digits without trailing zeroes. */
+ if (exponent >= 0)
+ {
+ size_t count = exponent + 1;
+ /* Note: count <= precision = ndigits. */
+ for (; count > 0; count--)
+ *p++ = digits[--ndigits];
+ if ((flags & FLAG_ALT) || ndigits > nzeroes)
+ {
+ *p++ = decimal_point_char ();
+ while (ndigits > nzeroes)
+ {
+ --ndigits;
+ *p++ = digits[ndigits];
+ }
+ }
+ }
+ else
+ {
+ size_t count = -exponent - 1;
+ *p++ = '0';
+ *p++ = decimal_point_char ();
+ for (; count > 0; count--)
+ *p++ = '0';
+ while (ndigits > nzeroes)
+ {
+ --ndigits;
+ *p++ = digits[ndigits];
+ }
+ }
+ }
+ else
+ {
+ /* Exponential notation. */
+ *p++ = digits[--ndigits];
+ if ((flags & FLAG_ALT) || ndigits > nzeroes)
+ {
+ *p++ = decimal_point_char ();
+ while (ndigits > nzeroes)
+ {
+ --ndigits;
+ *p++ = digits[ndigits];
+ }
+ }
+ *p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */
+# if WIDE_CHAR_VERSION
+ {
+ static const wchar_t decimal_format[] =
+ /* Produce the same number of exponent digits
+ as the native printf implementation. */
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+ { '%', '+', '.', '3', 'd', '\0' };
+# else
+ { '%', '+', '.', '2', 'd', '\0' };
+# endif
+ SNPRINTF (p, 6 + 1, decimal_format, exponent);
+ }
+ while (*p != '\0')
+ p++;
+# else
+ {
+ static const char decimal_format[] =
+ /* Produce the same number of exponent digits
+ as the native printf implementation. */
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+ "%+.3d";
+# else
+ "%+.2d";
+# endif
+ if (sizeof (DCHAR_T) == 1)
+ {
+ sprintf ((char *) p, decimal_format, exponent);
+ while (*p != '\0')
+ p++;
+ }
+ else
+ {
+ char expbuf[6 + 1];
+ const char *ep;
+ sprintf (expbuf, decimal_format, exponent);
+ for (ep = expbuf; (*p = *ep) != '\0'; ep++)
+ p++;
+ }
+ }
+# endif
+ }
+
+ free (digits);
+ }
+ }
+ else
+ abort ();
+# else
+ /* arg is finite. */
+ if (!(arg == 0.0))
+ abort ();
+
+ pad_ptr = p;
+
+ if (dp->conversion == 'f' || dp->conversion == 'F')
+ {
+ *p++ = '0';
+ if ((flags & FLAG_ALT) || precision > 0)
+ {
+ *p++ = decimal_point_char ();
+ for (; precision > 0; precision--)
+ *p++ = '0';
+ }
+ }
+ else if (dp->conversion == 'e' || dp->conversion == 'E')
+ {
+ *p++ = '0';
+ if ((flags & FLAG_ALT) || precision > 0)
+ {
+ *p++ = decimal_point_char ();
+ for (; precision > 0; precision--)
+ *p++ = '0';
+ }
+ *p++ = dp->conversion; /* 'e' or 'E' */
+ *p++ = '+';
+ /* Produce the same number of exponent digits as
+ the native printf implementation. */
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+ *p++ = '0';
+# endif
+ *p++ = '0';
+ *p++ = '0';
+ }
+ else if (dp->conversion == 'g' || dp->conversion == 'G')
+ {
+ *p++ = '0';
+ if (flags & FLAG_ALT)
+ {
+ size_t ndigits =
+ (precision > 0 ? precision - 1 : 0);
+ *p++ = decimal_point_char ();
+ for (; ndigits > 0; --ndigits)
+ *p++ = '0';
+ }
+ }
+ else
+ abort ();
+# endif
+ }
+ }
+ }
+# endif
+
+ /* The generated string now extends from tmp to p, with the
+ zero padding insertion point being at pad_ptr. */
+ if (has_width && p - tmp < width)
+ {
+ size_t pad = width - (p - tmp);
+ DCHAR_T *end = p + pad;
+
+ if (flags & FLAG_LEFT)
+ {
+ /* Pad with spaces on the right. */
+ for (; pad > 0; pad--)
+ *p++ = ' ';
+ }
+ else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
+ {
+ /* Pad with zeroes. */
+ DCHAR_T *q = end;
+
+ while (p > pad_ptr)
+ *--q = *--p;
+ for (; pad > 0; pad--)
+ *p++ = '0';
+ }
+ else
+ {
+ /* Pad with spaces on the left. */
+ DCHAR_T *q = end;
+
+ while (p > tmp)
+ *--q = *--p;
+ for (; pad > 0; pad--)
+ *p++ = ' ';
+ }
+
+ p = end;
+ }
+
+ {
+ size_t count = p - tmp;
+
+ if (count >= tmp_length)
+ /* tmp_length was incorrectly calculated - fix the
+ code above! */
+ abort ();
+
+ /* Make room for the result. */
+ if (count >= allocated - length)
+ {
+ size_t n = xsum (length, count);
+
+ ENSURE_ALLOCATION (n);
+ }
+
+ /* Append the result. */
+ memcpy (result + length, tmp, count * sizeof (DCHAR_T));
+ if (tmp != tmpbuf)
+ free (tmp);
+ length += count;
+ }
+ }
+#endif
+ else
+ {
+ arg_type type = a.arg[dp->arg_index].type;
+ int flags = dp->flags;
+#if !USE_SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+ int has_width;
+ size_t width;
+#endif
+#if !USE_SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION
+ int has_precision;
+ size_t precision;
+#endif
+#if NEED_PRINTF_UNBOUNDED_PRECISION
+ int prec_ourselves;
+#else
+# define prec_ourselves 0
+#endif
+#if NEED_PRINTF_FLAG_LEFTADJUST
+# define pad_ourselves 1
+#elif !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+ int pad_ourselves;
+#else
+# define pad_ourselves 0
+#endif
+ TCHAR_T *fbp;
+ unsigned int prefix_count;
+ int prefixes[2] IF_LINT (= { 0 });
+#if !USE_SNPRINTF
+ size_t tmp_length;
+ TCHAR_T tmpbuf[700];
+ TCHAR_T *tmp;
+#endif
+
+#if !USE_SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+ has_width = 0;
+ width = 0;
+ if (dp->width_start != dp->width_end)
+ {
+ if (dp->width_arg_index != ARG_NONE)
+ {
+ int arg;
+
+ if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+ abort ();
+ arg = a.arg[dp->width_arg_index].a.a_int;
+ if (arg < 0)
+ {
+ /* "A negative field width is taken as a '-' flag
+ followed by a positive field width." */
+ flags |= FLAG_LEFT;
+ width = (unsigned int) (-arg);
+ }
+ else
+ width = arg;
+ }
+ else
+ {
+ const FCHAR_T *digitp = dp->width_start;
+
+ do
+ width = xsum (xtimes (width, 10), *digitp++ - '0');
+ while (digitp != dp->width_end);
+ }
+ has_width = 1;
+ }
+#endif
+
+#if !USE_SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION
+ has_precision = 0;
+ precision = 6;
+ if (dp->precision_start != dp->precision_end)
+ {
+ if (dp->precision_arg_index != ARG_NONE)
+ {
+ int arg;
+
+ if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+ abort ();
+ arg = a.arg[dp->precision_arg_index].a.a_int;
+ /* "A negative precision is taken as if the precision
+ were omitted." */
+ if (arg >= 0)
+ {
+ precision = arg;
+ has_precision = 1;
+ }
+ }
+ else
+ {
+ const FCHAR_T *digitp = dp->precision_start + 1;
+
+ precision = 0;
+ while (digitp != dp->precision_end)
+ precision = xsum (xtimes (precision, 10), *digitp++ - '0');
+ has_precision = 1;
+ }
+ }
+#endif
+
+ /* Decide whether to handle the precision ourselves. */
+#if NEED_PRINTF_UNBOUNDED_PRECISION
+ switch (dp->conversion)
+ {
+ case 'd': case 'i': case 'u':
+ case 'o':
+ case 'x': case 'X': case 'p':
+ prec_ourselves = has_precision && (precision > 0);
+ break;
+ default:
+ prec_ourselves = 0;
+ break;
+ }
+#endif
+
+ /* Decide whether to perform the padding ourselves. */
+#if !NEED_PRINTF_FLAG_LEFTADJUST && (!DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION)
+ switch (dp->conversion)
+ {
+# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO
+ /* If we need conversion from TCHAR_T[] to DCHAR_T[], we need
+ to perform the padding after this conversion. Functions
+ with unistdio extensions perform the padding based on
+ character count rather than element count. */
+ case 'c': case 's':
+# endif
+# if NEED_PRINTF_FLAG_ZERO
+ case 'f': case 'F': case 'e': case 'E': case 'g': case 'G':
+ case 'a': case 'A':
+# endif
+ pad_ourselves = 1;
+ break;
+ default:
+ pad_ourselves = prec_ourselves;
+ break;
+ }
+#endif
+
+#if !USE_SNPRINTF
+ /* Allocate a temporary buffer of sufficient size for calling
+ sprintf. */
+ {
+ switch (dp->conversion)
+ {
+
+ case 'd': case 'i': case 'u':
+# if HAVE_LONG_LONG_INT
+ if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
+ tmp_length =
+ (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
+ * 0.30103 /* binary -> decimal */
+ )
+ + 1; /* turn floor into ceil */
+ else
+# endif
+ if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
+ tmp_length =
+ (unsigned int) (sizeof (unsigned long) * CHAR_BIT
+ * 0.30103 /* binary -> decimal */
+ )
+ + 1; /* turn floor into ceil */
+ else
+ tmp_length =
+ (unsigned int) (sizeof (unsigned int) * CHAR_BIT
+ * 0.30103 /* binary -> decimal */
+ )
+ + 1; /* turn floor into ceil */
+ if (tmp_length < precision)
+ tmp_length = precision;
+ /* Multiply by 2, as an estimate for FLAG_GROUP. */
+ tmp_length = xsum (tmp_length, tmp_length);
+ /* Add 1, to account for a leading sign. */
+ tmp_length = xsum (tmp_length, 1);
+ break;
+
+ case 'o':
+# if HAVE_LONG_LONG_INT
+ if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
+ tmp_length =
+ (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
+ * 0.333334 /* binary -> octal */
+ )
+ + 1; /* turn floor into ceil */
+ else
+# endif
+ if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
+ tmp_length =
+ (unsigned int) (sizeof (unsigned long) * CHAR_BIT
+ * 0.333334 /* binary -> octal */
+ )
+ + 1; /* turn floor into ceil */
+ else
+ tmp_length =
+ (unsigned int) (sizeof (unsigned int) * CHAR_BIT
+ * 0.333334 /* binary -> octal */
+ )
+ + 1; /* turn floor into ceil */
+ if (tmp_length < precision)
+ tmp_length = precision;
+ /* Add 1, to account for a leading sign. */
+ tmp_length = xsum (tmp_length, 1);
+ break;
+
+ case 'x': case 'X':
+# if HAVE_LONG_LONG_INT
+ if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
+ tmp_length =
+ (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
+ * 0.25 /* binary -> hexadecimal */
+ )
+ + 1; /* turn floor into ceil */
+ else
+# endif
+ if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
+ tmp_length =
+ (unsigned int) (sizeof (unsigned long) * CHAR_BIT
+ * 0.25 /* binary -> hexadecimal */
+ )
+ + 1; /* turn floor into ceil */
+ else
+ tmp_length =
+ (unsigned int) (sizeof (unsigned int) * CHAR_BIT
+ * 0.25 /* binary -> hexadecimal */
+ )
+ + 1; /* turn floor into ceil */
+ if (tmp_length < precision)
+ tmp_length = precision;
+ /* Add 2, to account for a leading sign or alternate form. */
+ tmp_length = xsum (tmp_length, 2);
+ break;
+
+ case 'f': case 'F':
+ if (type == TYPE_LONGDOUBLE)
+ tmp_length =
+ (unsigned int) (LDBL_MAX_EXP
+ * 0.30103 /* binary -> decimal */
+ * 2 /* estimate for FLAG_GROUP */
+ )
+ + 1 /* turn floor into ceil */
+ + 10; /* sign, decimal point etc. */
+ else
+ tmp_length =
+ (unsigned int) (DBL_MAX_EXP
+ * 0.30103 /* binary -> decimal */
+ * 2 /* estimate for FLAG_GROUP */
+ )
+ + 1 /* turn floor into ceil */
+ + 10; /* sign, decimal point etc. */
+ tmp_length = xsum (tmp_length, precision);
+ break;
+
+ case 'e': case 'E': case 'g': case 'G':
+ tmp_length =
+ 12; /* sign, decimal point, exponent etc. */
+ tmp_length = xsum (tmp_length, precision);
+ break;
+
+ case 'a': case 'A':
+ if (type == TYPE_LONGDOUBLE)
+ tmp_length =
+ (unsigned int) (LDBL_DIG
+ * 0.831 /* decimal -> hexadecimal */
+ )
+ + 1; /* turn floor into ceil */
+ else
+ tmp_length =
+ (unsigned int) (DBL_DIG
+ * 0.831 /* decimal -> hexadecimal */
+ )
+ + 1; /* turn floor into ceil */
+ if (tmp_length < precision)
+ tmp_length = precision;
+ /* Account for sign, decimal point etc. */
+ tmp_length = xsum (tmp_length, 12);
+ break;
+
+ case 'c':
+# if HAVE_WINT_T && !WIDE_CHAR_VERSION
+ if (type == TYPE_WIDE_CHAR)
+ tmp_length = MB_CUR_MAX;
+ else
+# endif
+ tmp_length = 1;
+ break;
+
+ case 's':
+# if HAVE_WCHAR_T
+ if (type == TYPE_WIDE_STRING)
+ {
+# if WIDE_CHAR_VERSION
+ /* ISO C says about %ls in fwprintf:
+ "If the precision is not specified or is greater
+ than the size of the array, the array shall
+ contain a null wide character."
+ So if there is a precision, we must not use
+ wcslen. */
+ const wchar_t *arg =
+ a.arg[dp->arg_index].a.a_wide_string;
+
+ if (has_precision)
+ tmp_length = local_wcsnlen (arg, precision);
+ else
+ tmp_length = local_wcslen (arg);
+# else
+ /* ISO C says about %ls in fprintf:
+ "If a precision is specified, no more than that
+ many bytes are written (including shift
+ sequences, if any), and the array shall contain
+ a null wide character if, to equal the
+ multibyte character sequence length given by
+ the precision, the function would need to
+ access a wide character one past the end of the
+ array."
+ So if there is a precision, we must not use
+ wcslen. */
+ /* This case has already been handled above. */
+ abort ();
+# endif
+ }
+ else
+# endif
+ {
+# if WIDE_CHAR_VERSION
+ /* ISO C says about %s in fwprintf:
+ "If the precision is not specified or is greater
+ than the size of the converted array, the
+ converted array shall contain a null wide
+ character."
+ So if there is a precision, we must not use
+ strlen. */
+ /* This case has already been handled above. */
+ abort ();
+# else
+ /* ISO C says about %s in fprintf:
+ "If the precision is not specified or greater
+ than the size of the array, the array shall
+ contain a null character."
+ So if there is a precision, we must not use
+ strlen. */
+ const char *arg = a.arg[dp->arg_index].a.a_string;
+
+ if (has_precision)
+ tmp_length = local_strnlen (arg, precision);
+ else
+ tmp_length = strlen (arg);
+# endif
+ }
+ break;
+
+ case 'p':
+ tmp_length =
+ (unsigned int) (sizeof (void *) * CHAR_BIT
+ * 0.25 /* binary -> hexadecimal */
+ )
+ + 1 /* turn floor into ceil */
+ + 2; /* account for leading 0x */
+ break;
+
+ default:
+ abort ();
+ }
+
+ if (!pad_ourselves)
+ {
+# if ENABLE_UNISTDIO
+ /* Padding considers the number of characters, therefore
+ the number of elements after padding may be
+ > max (tmp_length, width)
+ but is certainly
+ <= tmp_length + width. */
+ tmp_length = xsum (tmp_length, width);
+# else
+ /* Padding considers the number of elements,
+ says POSIX. */
+ if (tmp_length < width)
+ tmp_length = width;
+# endif
+ }
+
+ tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
+ }
+
+ if (tmp_length <= sizeof (tmpbuf) / sizeof (TCHAR_T))
+ tmp = tmpbuf;
+ else
+ {
+ size_t tmp_memsize = xtimes (tmp_length, sizeof (TCHAR_T));
+
+ if (size_overflow_p (tmp_memsize))
+ /* Overflow, would lead to out of memory. */
+ goto out_of_memory;
+ tmp = (TCHAR_T *) malloc (tmp_memsize);
+ if (tmp == NULL)
+ /* Out of memory. */
+ goto out_of_memory;
+ }
+#endif
+
+ /* Construct the format string for calling snprintf or
+ sprintf. */
+ fbp = buf;
+ *fbp++ = '%';
+#if NEED_PRINTF_FLAG_GROUPING
+ /* The underlying implementation doesn't support the ' flag.
+ Produce no grouping characters in this case; this is
+ acceptable because the grouping is locale dependent. */
+#else
+ if (flags & FLAG_GROUP)
+ *fbp++ = '\'';
+#endif
+ if (flags & FLAG_LEFT)
+ *fbp++ = '-';
+ if (flags & FLAG_SHOWSIGN)
+ *fbp++ = '+';
+ if (flags & FLAG_SPACE)
+ *fbp++ = ' ';
+ if (flags & FLAG_ALT)
+ *fbp++ = '#';
+ if (!pad_ourselves)
+ {
+ if (flags & FLAG_ZERO)
+ *fbp++ = '0';
+ if (dp->width_start != dp->width_end)
+ {
+ size_t n = dp->width_end - dp->width_start;
+ /* The width specification is known to consist only
+ of standard ASCII characters. */
+ if (sizeof (FCHAR_T) == sizeof (TCHAR_T))
+ {
+ memcpy (fbp, dp->width_start, n * sizeof (TCHAR_T));
+ fbp += n;
+ }
+ else
+ {
+ const FCHAR_T *mp = dp->width_start;
+ do
+ *fbp++ = (unsigned char) *mp++;
+ while (--n > 0);
+ }
+ }
+ }
+ if (!prec_ourselves)
+ {
+ if (dp->precision_start != dp->precision_end)
+ {
+ size_t n = dp->precision_end - dp->precision_start;
+ /* The precision specification is known to consist only
+ of standard ASCII characters. */
+ if (sizeof (FCHAR_T) == sizeof (TCHAR_T))
+ {
+ memcpy (fbp, dp->precision_start, n * sizeof (TCHAR_T));
+ fbp += n;
+ }
+ else
+ {
+ const FCHAR_T *mp = dp->precision_start;
+ do
+ *fbp++ = (unsigned char) *mp++;
+ while (--n > 0);
+ }
+ }
+ }
+
+ switch (type)
+ {
+#if HAVE_LONG_LONG_INT
+ case TYPE_LONGLONGINT:
+ case TYPE_ULONGLONGINT:
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+ *fbp++ = 'I';
+ *fbp++ = '6';
+ *fbp++ = '4';
+ break;
+# else
+ *fbp++ = 'l';
+ /*FALLTHROUGH*/
+# endif
+#endif
+ case TYPE_LONGINT:
+ case TYPE_ULONGINT:
+#if HAVE_WINT_T
+ case TYPE_WIDE_CHAR:
+#endif
+#if HAVE_WCHAR_T
+ case TYPE_WIDE_STRING:
+#endif
+ *fbp++ = 'l';
+ break;
+ case TYPE_LONGDOUBLE:
+ *fbp++ = 'L';
+ break;
+ default:
+ break;
+ }
+#if NEED_PRINTF_DIRECTIVE_F
+ if (dp->conversion == 'F')
+ *fbp = 'f';
+ else
+#endif
+ *fbp = dp->conversion;
+#if USE_SNPRINTF
+# if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3) || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
+ fbp[1] = '%';
+ fbp[2] = 'n';
+ fbp[3] = '\0';
+# else
+ /* On glibc2 systems from glibc >= 2.3 - probably also older
+ ones - we know that snprintf's returns value conforms to
+ ISO C 99: the gl_SNPRINTF_DIRECTIVE_N test passes.
+ Therefore we can avoid using %n in this situation.
+ On glibc2 systems from 2004-10-18 or newer, the use of %n
+ in format strings in writable memory may crash the program
+ (if compiled with _FORTIFY_SOURCE=2), so we should avoid it
+ in this situation. */
+ /* On native Win32 systems (such as mingw), we can avoid using
+ %n because:
+ - Although the gl_SNPRINTF_TRUNCATION_C99 test fails,
+ snprintf does not write more than the specified number
+ of bytes. (snprintf (buf, 3, "%d %d", 4567, 89) writes
+ '4', '5', '6' into buf, not '4', '5', '\0'.)
+ - Although the gl_SNPRINTF_RETVAL_C99 test fails, snprintf
+ allows us to recognize the case of an insufficient
+ buffer size: it returns -1 in this case.
+ On native Win32 systems (such as mingw) where the OS is
+ Windows Vista, the use of %n in format strings by default
+ crashes the program. See
+ <http://gcc.gnu.org/ml/gcc/2007-06/msg00122.html> and
+ <http://msdn2.microsoft.com/en-us/library/ms175782(VS.80).aspx>
+ So we should avoid %n in this situation. */
+ fbp[1] = '\0';
+# endif
+#else
+ fbp[1] = '\0';
+#endif
+
+ /* Construct the arguments for calling snprintf or sprintf. */
+ prefix_count = 0;
+ if (!pad_ourselves && dp->width_arg_index != ARG_NONE)
+ {
+ if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+ abort ();
+ prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int;
+ }
+ if (!prec_ourselves && dp->precision_arg_index != ARG_NONE)
+ {
+ if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+ abort ();
+ prefixes[prefix_count++] = a.arg[dp->precision_arg_index].a.a_int;
+ }
+
+#if USE_SNPRINTF
+ /* The SNPRINTF result is appended after result[0..length].
+ The latter is an array of DCHAR_T; SNPRINTF appends an
+ array of TCHAR_T to it. This is possible because
+ sizeof (TCHAR_T) divides sizeof (DCHAR_T) and
+ alignof (TCHAR_T) <= alignof (DCHAR_T). */
+# define TCHARS_PER_DCHAR (sizeof (DCHAR_T) / sizeof (TCHAR_T))
+ /* Ensure that maxlen below will be >= 2. Needed on BeOS,
+ where an snprintf() with maxlen==1 acts like sprintf(). */
+ ENSURE_ALLOCATION (xsum (length,
+ (2 + TCHARS_PER_DCHAR - 1)
+ / TCHARS_PER_DCHAR));
+ /* Prepare checking whether snprintf returns the count
+ via %n. */
+ *(TCHAR_T *) (result + length) = '\0';
+#endif
+
+ for (;;)
+ {
+ int count = -1;
+
+#if USE_SNPRINTF
+ int retcount = 0;
+ size_t maxlen = allocated - length;
+ /* SNPRINTF can fail if its second argument is
+ > INT_MAX. */
+ if (maxlen > INT_MAX / TCHARS_PER_DCHAR)
+ maxlen = INT_MAX / TCHARS_PER_DCHAR;
+ maxlen = maxlen * TCHARS_PER_DCHAR;
+# define SNPRINTF_BUF(arg) \
+ switch (prefix_count) \
+ { \
+ case 0: \
+ retcount = SNPRINTF ((TCHAR_T *) (result + length), \
+ maxlen, buf, \
+ arg, &count); \
+ break; \
+ case 1: \
+ retcount = SNPRINTF ((TCHAR_T *) (result + length), \
+ maxlen, buf, \
+ prefixes[0], arg, &count); \
+ break; \
+ case 2: \
+ retcount = SNPRINTF ((TCHAR_T *) (result + length), \
+ maxlen, buf, \
+ prefixes[0], prefixes[1], arg, \
+ &count); \
+ break; \
+ default: \
+ abort (); \
+ }
+#else
+# define SNPRINTF_BUF(arg) \
+ switch (prefix_count) \
+ { \
+ case 0: \
+ count = sprintf (tmp, buf, arg); \
+ break; \
+ case 1: \
+ count = sprintf (tmp, buf, prefixes[0], arg); \
+ break; \
+ case 2: \
+ count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
+ arg); \
+ break; \
+ default: \
+ abort (); \
+ }
+#endif
+
+ switch (type)
+ {
+ case TYPE_SCHAR:
+ {
+ int arg = a.arg[dp->arg_index].a.a_schar;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ case TYPE_UCHAR:
+ {
+ unsigned int arg = a.arg[dp->arg_index].a.a_uchar;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ case TYPE_SHORT:
+ {
+ int arg = a.arg[dp->arg_index].a.a_short;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ case TYPE_USHORT:
+ {
+ unsigned int arg = a.arg[dp->arg_index].a.a_ushort;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ case TYPE_INT:
+ {
+ int arg = a.arg[dp->arg_index].a.a_int;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ case TYPE_UINT:
+ {
+ unsigned int arg = a.arg[dp->arg_index].a.a_uint;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ case TYPE_LONGINT:
+ {
+ long int arg = a.arg[dp->arg_index].a.a_longint;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ case TYPE_ULONGINT:
+ {
+ unsigned long int arg = a.arg[dp->arg_index].a.a_ulongint;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+#if HAVE_LONG_LONG_INT
+ case TYPE_LONGLONGINT:
+ {
+ long long int arg = a.arg[dp->arg_index].a.a_longlongint;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ case TYPE_ULONGLONGINT:
+ {
+ unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+#endif
+ case TYPE_DOUBLE:
+ {
+ double arg = a.arg[dp->arg_index].a.a_double;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ case TYPE_LONGDOUBLE:
+ {
+ long double arg = a.arg[dp->arg_index].a.a_longdouble;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ case TYPE_CHAR:
+ {
+ int arg = a.arg[dp->arg_index].a.a_char;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+#if HAVE_WINT_T
+ case TYPE_WIDE_CHAR:
+ {
+ wint_t arg = a.arg[dp->arg_index].a.a_wide_char;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+#endif
+ case TYPE_STRING:
+ {
+ const char *arg = a.arg[dp->arg_index].a.a_string;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+#if HAVE_WCHAR_T
+ case TYPE_WIDE_STRING:
+ {
+ const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+#endif
+ case TYPE_POINTER:
+ {
+ void *arg = a.arg[dp->arg_index].a.a_pointer;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ default:
+ abort ();
+ }
+
+#if USE_SNPRINTF
+ /* Portability: Not all implementations of snprintf()
+ are ISO C 99 compliant. Determine the number of
+ bytes that snprintf() has produced or would have
+ produced. */
+ if (count >= 0)
+ {
+ /* Verify that snprintf() has NUL-terminated its
+ result. */
+ if (count < maxlen
+ && ((TCHAR_T *) (result + length)) [count] != '\0')
+ abort ();
+ /* Portability hack. */
+ if (retcount > count)
+ count = retcount;
+ }
+ else
+ {
+ /* snprintf() doesn't understand the '%n'
+ directive. */
+ if (fbp[1] != '\0')
+ {
+ /* Don't use the '%n' directive; instead, look
+ at the snprintf() return value. */
+ fbp[1] = '\0';
+ continue;
+ }
+ else
+ {
+ /* Look at the snprintf() return value. */
+ if (retcount < 0)
+ {
+ /* HP-UX 10.20 snprintf() is doubly deficient:
+ It doesn't understand the '%n' directive,
+ *and* it returns -1 (rather than the length
+ that would have been required) when the
+ buffer is too small. */
+ size_t bigger_need =
+ xsum (xtimes (allocated, 2), 12);
+ ENSURE_ALLOCATION (bigger_need);
+ continue;
+ }
+ else
+ count = retcount;
+ }
+ }
+#endif
+
+ /* Attempt to handle failure. */
+ if (count < 0)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ errno = EINVAL;
+ return NULL;
+ }
+
+#if USE_SNPRINTF
+ /* Handle overflow of the allocated buffer.
+ If such an overflow occurs, a C99 compliant snprintf()
+ returns a count >= maxlen. However, a non-compliant
+ snprintf() function returns only count = maxlen - 1. To
+ cover both cases, test whether count >= maxlen - 1. */
+ if ((unsigned int) count + 1 >= maxlen)
+ {
+ /* If maxlen already has attained its allowed maximum,
+ allocating more memory will not increase maxlen.
+ Instead of looping, bail out. */
+ if (maxlen == INT_MAX / TCHARS_PER_DCHAR)
+ goto overflow;
+ else
+ {
+ /* Need at least (count + 1) * sizeof (TCHAR_T)
+ bytes. (The +1 is for the trailing NUL.)
+ But ask for (count + 2) * sizeof (TCHAR_T)
+ bytes, so that in the next round, we likely get
+ maxlen > (unsigned int) count + 1
+ and so we don't get here again.
+ And allocate proportionally, to avoid looping
+ eternally if snprintf() reports a too small
+ count. */
+ size_t n =
+ xmax (xsum (length,
+ ((unsigned int) count + 2
+ + TCHARS_PER_DCHAR - 1)
+ / TCHARS_PER_DCHAR),
+ xtimes (allocated, 2));
+
+ ENSURE_ALLOCATION (n);
+ continue;
+ }
+ }
+#endif
+
+#if NEED_PRINTF_UNBOUNDED_PRECISION
+ if (prec_ourselves)
+ {
+ /* Handle the precision. */
+ TCHAR_T *prec_ptr =
+# if USE_SNPRINTF
+ (TCHAR_T *) (result + length);
+# else
+ tmp;
+# endif
+ size_t prefix_count;
+ size_t move;
+
+ prefix_count = 0;
+ /* Put the additional zeroes after the sign. */
+ if (count >= 1
+ && (*prec_ptr == '-' || *prec_ptr == '+'
+ || *prec_ptr == ' '))
+ prefix_count = 1;
+ /* Put the additional zeroes after the 0x prefix if
+ (flags & FLAG_ALT) || (dp->conversion == 'p'). */
+ else if (count >= 2
+ && prec_ptr[0] == '0'
+ && (prec_ptr[1] == 'x' || prec_ptr[1] == 'X'))
+ prefix_count = 2;
+
+ move = count - prefix_count;
+ if (precision > move)
+ {
+ /* Insert zeroes. */
+ size_t insert = precision - move;
+ TCHAR_T *prec_end;
+
+# if USE_SNPRINTF
+ size_t n =
+ xsum (length,
+ (count + insert + TCHARS_PER_DCHAR - 1)
+ / TCHARS_PER_DCHAR);
+ length += (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR;
+ ENSURE_ALLOCATION (n);
+ length -= (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR;
+ prec_ptr = (TCHAR_T *) (result + length);
+# endif
+
+ prec_end = prec_ptr + count;
+ prec_ptr += prefix_count;
+
+ while (prec_end > prec_ptr)
+ {
+ prec_end--;
+ prec_end[insert] = prec_end[0];
+ }
+
+ prec_end += insert;
+ do
+ *--prec_end = '0';
+ while (prec_end > prec_ptr);
+
+ count += insert;
+ }
+ }
+#endif
+
+#if !USE_SNPRINTF
+ if (count >= tmp_length)
+ /* tmp_length was incorrectly calculated - fix the
+ code above! */
+ abort ();
+#endif
+
+#if !DCHAR_IS_TCHAR
+ /* Convert from TCHAR_T[] to DCHAR_T[]. */
+ if (dp->conversion == 'c' || dp->conversion == 's')
+ {
+ /* type = TYPE_CHAR or TYPE_WIDE_CHAR or TYPE_STRING
+ TYPE_WIDE_STRING.
+ The result string is not certainly ASCII. */
+ const TCHAR_T *tmpsrc;
+ DCHAR_T *tmpdst;
+ size_t tmpdst_len;
+ /* This code assumes that TCHAR_T is 'char'. */
+ typedef int TCHAR_T_verify
+ [2 * (sizeof (TCHAR_T) == 1) - 1];
+# if USE_SNPRINTF
+ tmpsrc = (TCHAR_T *) (result + length);
+# else
+ tmpsrc = tmp;
+# endif
+ tmpdst =
+ DCHAR_CONV_FROM_ENCODING (locale_charset (),
+ iconveh_question_mark,
+ tmpsrc, count,
+ NULL,
+ NULL, &tmpdst_len);
+ if (tmpdst == NULL)
+ {
+ int saved_errno = errno;
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ errno = saved_errno;
+ return NULL;
+ }
+ ENSURE_ALLOCATION (xsum (length, tmpdst_len));
+ DCHAR_CPY (result + length, tmpdst, tmpdst_len);
+ free (tmpdst);
+ count = tmpdst_len;
+ }
+ else
+ {
+ /* The result string is ASCII.
+ Simple 1:1 conversion. */
+# if USE_SNPRINTF
+ /* If sizeof (DCHAR_T) == sizeof (TCHAR_T), it's a
+ no-op conversion, in-place on the array starting
+ at (result + length). */
+ if (sizeof (DCHAR_T) != sizeof (TCHAR_T))
+# endif
+ {
+ const TCHAR_T *tmpsrc;
+ DCHAR_T *tmpdst;
+ size_t n;
+
+# if USE_SNPRINTF
+ if (result == resultbuf)
+ {
+ tmpsrc = (TCHAR_T *) (result + length);
+ /* ENSURE_ALLOCATION will not move tmpsrc
+ (because it's part of resultbuf). */
+ ENSURE_ALLOCATION (xsum (length, count));
+ }
+ else
+ {
+ /* ENSURE_ALLOCATION will move the array
+ (because it uses realloc(). */
+ ENSURE_ALLOCATION (xsum (length, count));
+ tmpsrc = (TCHAR_T *) (result + length);
+ }
+# else
+ tmpsrc = tmp;
+ ENSURE_ALLOCATION (xsum (length, count));
+# endif
+ tmpdst = result + length;
+ /* Copy backwards, because of overlapping. */
+ tmpsrc += count;
+ tmpdst += count;
+ for (n = count; n > 0; n--)
+ *--tmpdst = (unsigned char) *--tmpsrc;
+ }
+ }
+#endif
+
+#if DCHAR_IS_TCHAR && !USE_SNPRINTF
+ /* Make room for the result. */
+ if (count > allocated - length)
+ {
+ /* Need at least count elements. But allocate
+ proportionally. */
+ size_t n =
+ xmax (xsum (length, count), xtimes (allocated, 2));
+
+ ENSURE_ALLOCATION (n);
+ }
+#endif
+
+ /* Here count <= allocated - length. */
+
+ /* Perform padding. */
+#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+ if (pad_ourselves && has_width)
+ {
+ size_t w;
+# if ENABLE_UNISTDIO
+ /* Outside POSIX, it's preferrable to compare the width
+ against the number of _characters_ of the converted
+ value. */
+ w = DCHAR_MBSNLEN (result + length, count);
+# else
+ /* The width is compared against the number of _bytes_
+ of the converted value, says POSIX. */
+ w = count;
+# endif
+ if (w < width)
+ {
+ size_t pad = width - w;
+
+ /* Make room for the result. */
+ if (xsum (count, pad) > allocated - length)
+ {
+ /* Need at least count + pad elements. But
+ allocate proportionally. */
+ size_t n =
+ xmax (xsum3 (length, count, pad),
+ xtimes (allocated, 2));
+
+# if USE_SNPRINTF
+ length += count;
+ ENSURE_ALLOCATION (n);
+ length -= count;
+# else
+ ENSURE_ALLOCATION (n);
+# endif
+ }
+ /* Here count + pad <= allocated - length. */
+
+ {
+# if !DCHAR_IS_TCHAR || USE_SNPRINTF
+ DCHAR_T * const rp = result + length;
+# else
+ DCHAR_T * const rp = tmp;
+# endif
+ DCHAR_T *p = rp + count;
+ DCHAR_T *end = p + pad;
+ DCHAR_T *pad_ptr;
+# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO
+ if (dp->conversion == 'c'
+ || dp->conversion == 's')
+ /* No zero-padding for string directives. */
+ pad_ptr = NULL;
+ else
+# endif
+ {
+ pad_ptr = (*rp == '-' ? rp + 1 : rp);
+ /* No zero-padding of "inf" and "nan". */
+ if ((*pad_ptr >= 'A' && *pad_ptr <= 'Z')
+ || (*pad_ptr >= 'a' && *pad_ptr <= 'z'))
+ pad_ptr = NULL;
+ }
+ /* The generated string now extends from rp to p,
+ with the zero padding insertion point being at
+ pad_ptr. */
+
+ count = count + pad; /* = end - rp */
+
+ if (flags & FLAG_LEFT)
+ {
+ /* Pad with spaces on the right. */
+ for (; pad > 0; pad--)
+ *p++ = ' ';
+ }
+ else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
+ {
+ /* Pad with zeroes. */
+ DCHAR_T *q = end;
+
+ while (p > pad_ptr)
+ *--q = *--p;
+ for (; pad > 0; pad--)
+ *p++ = '0';
+ }
+ else
+ {
+ /* Pad with spaces on the left. */
+ DCHAR_T *q = end;
+
+ while (p > rp)
+ *--q = *--p;
+ for (; pad > 0; pad--)
+ *p++ = ' ';
+ }
+ }
+ }
+ }
+#endif
+
+ /* Here still count <= allocated - length. */
+
+#if !DCHAR_IS_TCHAR || USE_SNPRINTF
+ /* The snprintf() result did fit. */
+#else
+ /* Append the sprintf() result. */
+ memcpy (result + length, tmp, count * sizeof (DCHAR_T));
+#endif
+#if !USE_SNPRINTF
+ if (tmp != tmpbuf)
+ free (tmp);
+#endif
+
+#if NEED_PRINTF_DIRECTIVE_F
+ if (dp->conversion == 'F')
+ {
+ /* Convert the %f result to upper case for %F. */
+ DCHAR_T *rp = result + length;
+ size_t rc;
+ for (rc = count; rc > 0; rc--, rp++)
+ if (*rp >= 'a' && *rp <= 'z')
+ *rp = *rp - 'a' + 'A';
+ }
+#endif
+
+ length += count;
+ break;
+ }
+ }
+ }
+ }
+
+ /* Add the final NUL. */
+ ENSURE_ALLOCATION (xsum (length, 1));
+ result[length] = '\0';
+
+ if (result != resultbuf && length + 1 < allocated)
+ {
+ /* Shrink the allocated memory if possible. */
+ DCHAR_T *memory;
+
+ memory = (DCHAR_T *) realloc (result, (length + 1) * sizeof (DCHAR_T));
+ if (memory != NULL)
+ result = memory;
+ }
+
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ *lengthp = length;
+ /* Note that we can produce a big string of a length > INT_MAX. POSIX
+ says that snprintf() fails with errno = EOVERFLOW in this case, but
+ that's only because snprintf() returns an 'int'. This function does
+ not have this limitation. */
+ return result;
+
+#if USE_SNPRINTF
+ overflow:
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ errno = EOVERFLOW;
+ return NULL;
+#endif
+
+ out_of_memory:
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ out_of_memory_1:
+ CLEANUP ();
+ errno = ENOMEM;
+ return NULL;
+ }
+}
+
+#undef TCHARS_PER_DCHAR
+#undef SNPRINTF
+#undef USE_SNPRINTF
+#undef DCHAR_CPY
+#undef PRINTF_PARSE
+#undef DIRECTIVES
+#undef DIRECTIVE
+#undef DCHAR_IS_TCHAR
+#undef TCHAR_T
+#undef DCHAR_T
+#undef FCHAR_T
+#undef VASNPRINTF
diff --git a/lib/verify.h b/lib/verify.h
new file mode 100644
index 00000000..e82fa02d
--- /dev/null
+++ b/lib/verify.h
@@ -0,0 +1,140 @@
+/* Compile-time assert-like macros.
+
+ Copyright (C) 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 Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Paul Eggert, Bruno Haible, and Jim Meyering. */
+
+#ifndef VERIFY_H
+# define VERIFY_H 1
+
+/* Each of these macros verifies that its argument R is nonzero. To
+ be portable, R should be an integer constant expression. Unlike
+ assert (R), there is no run-time overhead.
+
+ There are two macros, since no single macro can be used in all
+ contexts in C. verify_true (R) is for scalar contexts, including
+ integer constant expression contexts. verify (R) is for declaration
+ contexts, e.g., the top level.
+
+ Symbols ending in "__" are private to this header.
+
+ The code below uses several ideas.
+
+ * The first step is ((R) ? 1 : -1). Given an expression R, of
+ integral or boolean or floating-point type, this yields an
+ expression of integral type, whose value is later verified to be
+ constant and nonnegative.
+
+ * Next this expression W is wrapped in a type
+ struct verify_type__ { unsigned int verify_error_if_negative_size__: W; }.
+ If W is negative, this yields a compile-time error. No compiler can
+ deal with a bit-field of negative size.
+
+ One might think that an array size check would have the same
+ effect, that is, that the type struct { unsigned int dummy[W]; }
+ would work as well. However, inside a function, some compilers
+ (such as C++ compilers and GNU C) allow local parameters and
+ variables inside array size expressions. With these compilers,
+ an array size check would not properly diagnose this misuse of
+ the verify macro:
+
+ void function (int n) { verify (n < 0); }
+
+ * For the verify macro, the struct verify_type__ will need to
+ somehow be embedded into a declaration. To be portable, this
+ declaration must declare an object, a constant, a function, or a
+ typedef name. If the declared entity uses the type directly,
+ such as in
+
+ struct dummy {...};
+ typedef struct {...} dummy;
+ extern struct {...} *dummy;
+ extern void dummy (struct {...} *);
+ extern struct {...} *dummy (void);
+
+ two uses of the verify macro would yield colliding declarations
+ if the entity names are not disambiguated. A workaround is to
+ attach the current line number to the entity name:
+
+ #define GL_CONCAT0(x, y) x##y
+ #define GL_CONCAT(x, y) GL_CONCAT0 (x, y)
+ extern struct {...} * GL_CONCAT(dummy,__LINE__);
+
+ But this has the problem that two invocations of verify from
+ within the same macro would collide, since the __LINE__ value
+ would be the same for both invocations.
+
+ A solution is to use the sizeof operator. It yields a number,
+ getting rid of the identity of the type. Declarations like
+
+ extern int dummy [sizeof (struct {...})];
+ extern void dummy (int [sizeof (struct {...})]);
+ extern int (*dummy (void)) [sizeof (struct {...})];
+
+ can be repeated.
+
+ * Should the implementation use a named struct or an unnamed struct?
+ Which of the following alternatives can be used?
+
+ extern int dummy [sizeof (struct {...})];
+ extern int dummy [sizeof (struct verify_type__ {...})];
+ extern void dummy (int [sizeof (struct {...})]);
+ extern void dummy (int [sizeof (struct verify_type__ {...})]);
+ extern int (*dummy (void)) [sizeof (struct {...})];
+ extern int (*dummy (void)) [sizeof (struct verify_type__ {...})];
+
+ In the second and sixth case, the struct type is exported to the
+ outer scope; two such declarations therefore collide. GCC warns
+ about the first, third, and fourth cases. So the only remaining
+ possibility is the fifth case:
+
+ extern int (*dummy (void)) [sizeof (struct {...})];
+
+ * This implementation exploits the fact that GCC does not warn about
+ the last declaration mentioned above. If a future version of GCC
+ introduces a warning for this, the problem could be worked around
+ by using code specialized to GCC, e.g.,:
+
+ #if 4 <= __GNUC__
+ # define verify(R) \
+ extern int (* verify_function__ (void)) \
+ [__builtin_constant_p (R) && (R) ? 1 : -1]
+ #endif
+
+ * In C++, any struct definition inside sizeof is invalid.
+ Use a template type to work around the problem. */
+
+
+/* Verify requirement R at compile-time, as an integer constant expression.
+ Return 1. */
+
+# ifdef __cplusplus
+template <int w>
+ struct verify_type__ { unsigned int verify_error_if_negative_size__: w; };
+# define verify_true(R) \
+ (!!sizeof (verify_type__<(R) ? 1 : -1>))
+# else
+# define verify_true(R) \
+ (!!sizeof \
+ (struct { unsigned int verify_error_if_negative_size__: (R) ? 1 : -1; }))
+# endif
+
+/* Verify requirement R at compile-time, as a declaration without a
+ trailing ';'. */
+
+# define verify(R) extern int (* verify_function__ (void)) [verify_true (R)]
+
+#endif
diff --git a/lib/version.c b/lib/version.c
new file mode 100644
index 00000000..0b3bde19
--- /dev/null
+++ b/lib/version.c
@@ -0,0 +1,23 @@
+/* Version information about GNU libunistring.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistring/version.h"
+
+const int _libunistring_version = _LIBUNISTRING_VERSION;
diff --git a/lib/wchar.in.h b/lib/wchar.in.h
new file mode 100644
index 00000000..1f1f1309
--- /dev/null
+++ b/lib/wchar.in.h
@@ -0,0 +1,310 @@
+/* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
+
+ Copyright (C) 2007-2009 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+/* Written by Eric Blake. */
+
+/*
+ * ISO C 99 <wchar.h> for platforms that have issues.
+ * <http://www.opengroup.org/susv3xbd/wchar.h.html>
+ *
+ * For now, this just ensures proper prerequisite inclusion order and
+ * the declaration of wcwidth().
+ */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+#if defined __need_mbstate_t || (defined __hpux && ((defined _INTTYPES_INCLUDED && !defined strtoimax) || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H)) || defined _GL_ALREADY_INCLUDING_WCHAR_H
+/* Special invocation convention:
+ - Inside uClibc header files.
+ - On HP-UX 11.00 we have a sequence of nested includes
+ <wchar.h> -> <stdlib.h> -> <stdint.h>, and the latter includes <wchar.h>,
+ once indirectly <stdint.h> -> <sys/types.h> -> <inttypes.h> -> <wchar.h>
+ and once directly. In both situations 'wint_t' is not yet defined,
+ therefore we cannot provide the function overrides; instead include only
+ the system's <wchar.h>.
+ - On IRIX 6.5, similarly, we have an include <wchar.h> -> <wctype.h>, and
+ the latter includes <wchar.h>. But here, we have no way to detect whether
+ <wctype.h> is completely included or is still being included. */
+
+#@INCLUDE_NEXT@ @NEXT_WCHAR_H@
+
+#else
+/* Normal invocation convention. */
+
+#ifndef _GL_WCHAR_H
+
+#define _GL_ALREADY_INCLUDING_WCHAR_H
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+
+/* Include the original <wchar.h> if it exists.
+ Some builds of uClibc lack it. */
+/* The include_next requires a split double-inclusion guard. */
+#if @HAVE_WCHAR_H@
+# @INCLUDE_NEXT@ @NEXT_WCHAR_H@
+#endif
+
+#undef _GL_ALREADY_INCLUDING_WCHAR_H
+
+#ifndef _GL_WCHAR_H
+#define _GL_WCHAR_H
+
+/* The definition of GL_LINK_WARNING is copied here. */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define wint_t. (Also done in wctype.in.h.) */
+#if !@HAVE_WINT_T@ && !defined wint_t
+# define wint_t int
+# ifndef WEOF
+# define WEOF -1
+# endif
+#endif
+
+
+/* Override mbstate_t if it is too small.
+ On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for
+ implementing mbrtowc for encodings like UTF-8. */
+#if !(@HAVE_MBSINIT@ && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@
+typedef int rpl_mbstate_t;
+# undef mbstate_t
+# define mbstate_t rpl_mbstate_t
+# define GNULIB_defined_mbstate_t 1
+#endif
+
+
+/* Convert a single-byte character to a wide character. */
+#if @GNULIB_BTOWC@
+# if @REPLACE_BTOWC@
+# undef btowc
+# define btowc rpl_btowc
+# endif
+# if !@HAVE_BTOWC@ || @REPLACE_BTOWC@
+extern wint_t btowc (int c);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef btowc
+# define btowc(c) \
+ (GL_LINK_WARNING ("btowc is unportable - " \
+ "use gnulib module btowc for portability"), \
+ btowc (c))
+#endif
+
+
+/* Convert a wide character to a single-byte character. */
+#if @GNULIB_WCTOB@
+# if @REPLACE_WCTOB@
+# undef wctob
+# define wctob rpl_wctob
+# endif
+# if (!defined wctob && !@HAVE_DECL_WCTOB@) || @REPLACE_WCTOB@
+/* wctob is provided by gnulib, or wctob exists but is not declared. */
+extern int wctob (wint_t wc);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wctob
+# define wctob(w) \
+ (GL_LINK_WARNING ("wctob is unportable - " \
+ "use gnulib module wctob for portability"), \
+ wctob (w))
+#endif
+
+
+/* Test whether *PS is in the initial state. */
+#if @GNULIB_MBSINIT@
+# if @REPLACE_MBSINIT@
+# undef mbsinit
+# define mbsinit rpl_mbsinit
+# endif
+# if !@HAVE_MBSINIT@ || @REPLACE_MBSINIT@
+extern int mbsinit (const mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbsinit
+# define mbsinit(p) \
+ (GL_LINK_WARNING ("mbsinit is unportable - " \
+ "use gnulib module mbsinit for portability"), \
+ mbsinit (p))
+#endif
+
+
+/* Convert a multibyte character to a wide character. */
+#if @GNULIB_MBRTOWC@
+# if @REPLACE_MBRTOWC@
+# undef mbrtowc
+# define mbrtowc rpl_mbrtowc
+# endif
+# if !@HAVE_MBRTOWC@ || @REPLACE_MBRTOWC@
+extern size_t mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbrtowc
+# define mbrtowc(w,s,n,p) \
+ (GL_LINK_WARNING ("mbrtowc is unportable - " \
+ "use gnulib module mbrtowc for portability"), \
+ mbrtowc (w, s, n, p))
+#endif
+
+
+/* Recognize a multibyte character. */
+#if @GNULIB_MBRLEN@
+# if @REPLACE_MBRLEN@
+# undef mbrlen
+# define mbrlen rpl_mbrlen
+# endif
+# if !@HAVE_MBRLEN@ || @REPLACE_MBRLEN@
+extern size_t mbrlen (const char *s, size_t n, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbrlen
+# define mbrlen(s,n,p) \
+ (GL_LINK_WARNING ("mbrlen is unportable - " \
+ "use gnulib module mbrlen for portability"), \
+ mbrlen (s, n, p))
+#endif
+
+
+/* Convert a string to a wide string. */
+#if @GNULIB_MBSRTOWCS@
+# if @REPLACE_MBSRTOWCS@
+# undef mbsrtowcs
+# define mbsrtowcs rpl_mbsrtowcs
+# endif
+# if !@HAVE_MBSRTOWCS@ || @REPLACE_MBSRTOWCS@
+extern size_t mbsrtowcs (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbsrtowcs
+# define mbsrtowcs(d,s,l,p) \
+ (GL_LINK_WARNING ("mbsrtowcs is unportable - " \
+ "use gnulib module mbsrtowcs for portability"), \
+ mbsrtowcs (d, s, l, p))
+#endif
+
+
+/* Convert a string to a wide string. */
+#if @GNULIB_MBSNRTOWCS@
+# if @REPLACE_MBSNRTOWCS@
+# undef mbsnrtowcs
+# define mbsnrtowcs rpl_mbsnrtowcs
+# endif
+# if !@HAVE_MBSNRTOWCS@ || @REPLACE_MBSNRTOWCS@
+extern size_t mbsnrtowcs (wchar_t *dest, const char **srcp, size_t srclen, size_t len, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbsnrtowcs
+# define mbsnrtowcs(d,s,n,l,p) \
+ (GL_LINK_WARNING ("mbsnrtowcs is unportable - " \
+ "use gnulib module mbsnrtowcs for portability"), \
+ mbsnrtowcs (d, s, n, l, p))
+#endif
+
+
+/* Convert a wide character to a multibyte character. */
+#if @GNULIB_WCRTOMB@
+# if @REPLACE_WCRTOMB@
+# undef wcrtomb
+# define wcrtomb rpl_wcrtomb
+# endif
+# if !@HAVE_WCRTOMB@ || @REPLACE_WCRTOMB@
+extern size_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcrtomb
+# define wcrtomb(s,w,p) \
+ (GL_LINK_WARNING ("wcrtomb is unportable - " \
+ "use gnulib module wcrtomb for portability"), \
+ wcrtomb (s, w, p))
+#endif
+
+
+/* Convert a wide string to a string. */
+#if @GNULIB_WCSRTOMBS@
+# if @REPLACE_WCSRTOMBS@
+# undef wcsrtombs
+# define wcsrtombs rpl_wcsrtombs
+# endif
+# if !@HAVE_WCSRTOMBS@ || @REPLACE_WCSRTOMBS@
+extern size_t wcsrtombs (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcsrtombs
+# define wcsrtombs(d,s,l,p) \
+ (GL_LINK_WARNING ("wcsrtombs is unportable - " \
+ "use gnulib module wcsrtombs for portability"), \
+ wcsrtombs (d, s, l, p))
+#endif
+
+
+/* Convert a wide string to a string. */
+#if @GNULIB_WCSNRTOMBS@
+# if @REPLACE_WCSNRTOMBS@
+# undef wcsnrtombs
+# define wcsnrtombs rpl_wcsnrtombs
+# endif
+# if !@HAVE_WCSNRTOMBS@ || @REPLACE_WCSNRTOMBS@
+extern size_t wcsnrtombs (char *dest, const wchar_t **srcp, size_t srclen, size_t len, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcsnrtombs
+# define wcsnrtombs(d,s,n,l,p) \
+ (GL_LINK_WARNING ("wcsnrtombs is unportable - " \
+ "use gnulib module wcsnrtombs for portability"), \
+ wcsnrtombs (d, s, n, l, p))
+#endif
+
+
+/* Return the number of screen columns needed for WC. */
+#if @GNULIB_WCWIDTH@
+# if @REPLACE_WCWIDTH@
+# undef wcwidth
+# define wcwidth rpl_wcwidth
+extern int wcwidth (wchar_t);
+# else
+# if !defined wcwidth && !@HAVE_DECL_WCWIDTH@
+/* wcwidth exists but is not declared. */
+extern int wcwidth (int /* actually wchar_t */);
+# endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcwidth
+# define wcwidth(w) \
+ (GL_LINK_WARNING ("wcwidth is unportable - " \
+ "use gnulib module wcwidth for portability"), \
+ wcwidth (w))
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_WCHAR_H */
+#endif /* _GL_WCHAR_H */
+#endif
diff --git a/lib/wctype.in.h b/lib/wctype.in.h
new file mode 100644
index 00000000..a583a044
--- /dev/null
+++ b/lib/wctype.in.h
@@ -0,0 +1,184 @@
+/* A substitute for ISO C99 <wctype.h>, for platforms that lack it.
+
+ Copyright (C) 2006-2008 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+/* Written by Bruno Haible and Paul Eggert. */
+
+/*
+ * ISO C 99 <wctype.h> for platforms that lack it.
+ * <http://www.opengroup.org/susv3xbd/wctype.h.html>
+ *
+ * iswctype, towctrans, towlower, towupper, wctrans, wctype,
+ * wctrans_t, and wctype_t are not yet implemented.
+ */
+
+#ifndef _GL_WCTYPE_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+#if @HAVE_WINT_T@
+/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>.
+ Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+# include <wchar.h>
+#endif
+
+/* Include the original <wctype.h> if it exists.
+ BeOS 5 has the functions but no <wctype.h>. */
+/* The include_next requires a split double-inclusion guard. */
+#if @HAVE_WCTYPE_H@
+# @INCLUDE_NEXT@ @NEXT_WCTYPE_H@
+#endif
+
+#ifndef _GL_WCTYPE_H
+#define _GL_WCTYPE_H
+
+/* Define wint_t. (Also done in wchar.in.h.) */
+#if !@HAVE_WINT_T@ && !defined wint_t
+# define wint_t int
+# ifndef WEOF
+# define WEOF -1
+# endif
+#endif
+
+/* FreeBSD 4.4 to 4.11 has <wctype.h> but lacks the functions.
+ Linux libc5 has <wctype.h> and the functions but they are broken.
+ Assume all 12 functions are implemented the same way, or not at all. */
+#if ! @HAVE_ISWCNTRL@ || @REPLACE_ISWCNTRL@
+
+/* IRIX 5.3 has macros but no functions, its isw* macros refer to an
+ undefined variable _ctmp_ and to <ctype.h> macros like _P, and they
+ refer to system functions like _iswctype that are not in the
+ standard C library. Rather than try to get ancient buggy
+ implementations like this to work, just disable them. */
+# undef iswalnum
+# undef iswalpha
+# undef iswblank
+# undef iswcntrl
+# undef iswdigit
+# undef iswgraph
+# undef iswlower
+# undef iswprint
+# undef iswpunct
+# undef iswspace
+# undef iswupper
+# undef iswxdigit
+
+/* Linux libc5 has <wctype.h> and the functions but they are broken. */
+# if @REPLACE_ISWCNTRL@
+# define iswalnum rpl_iswalnum
+# define iswalpha rpl_iswalpha
+# define iswblank rpl_iswblank
+# define iswcntrl rpl_iswcntrl
+# define iswdigit rpl_iswdigit
+# define iswgraph rpl_iswgraph
+# define iswlower rpl_iswlower
+# define iswprint rpl_iswprint
+# define iswpunct rpl_iswpunct
+# define iswspace rpl_iswspace
+# define iswupper rpl_iswupper
+# define iswxdigit rpl_iswxdigit
+# endif
+
+static inline int
+iswalnum (wint_t wc)
+{
+ return ((wc >= '0' && wc <= '9')
+ || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'));
+}
+
+static inline int
+iswalpha (wint_t wc)
+{
+ return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z';
+}
+
+static inline int
+iswblank (wint_t wc)
+{
+ return wc == ' ' || wc == '\t';
+}
+
+static inline int
+iswcntrl (wint_t wc)
+{
+ return (wc & ~0x1f) == 0 || wc == 0x7f;
+}
+
+static inline int
+iswdigit (wint_t wc)
+{
+ return wc >= '0' && wc <= '9';
+}
+
+static inline int
+iswgraph (wint_t wc)
+{
+ return wc >= '!' && wc <= '~';
+}
+
+static inline int
+iswlower (wint_t wc)
+{
+ return wc >= 'a' && wc <= 'z';
+}
+
+static inline int
+iswprint (wint_t wc)
+{
+ return wc >= ' ' && wc <= '~';
+}
+
+static inline int
+iswpunct (wint_t wc)
+{
+ return (wc >= '!' && wc <= '~'
+ && !((wc >= '0' && wc <= '9')
+ || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')));
+}
+
+static inline int
+iswspace (wint_t wc)
+{
+ return (wc == ' ' || wc == '\t'
+ || wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r');
+}
+
+static inline int
+iswupper (wint_t wc)
+{
+ return wc >= 'A' && wc <= 'Z';
+}
+
+static inline int
+iswxdigit (wint_t wc)
+{
+ return ((wc >= '0' && wc <= '9')
+ || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F'));
+}
+
+# endif /* ! HAVE_ISWCNTRL */
+
+#endif /* _GL_WCTYPE_H */
+#endif /* _GL_WCTYPE_H */
diff --git a/lib/wcwidth.c b/lib/wcwidth.c
new file mode 100644
index 00000000..8dea6118
--- /dev/null
+++ b/lib/wcwidth.c
@@ -0,0 +1,51 @@
+/* Determine the number of screen columns needed for a character.
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <wchar.h>
+
+/* Get iswprint. */
+#include <wctype.h>
+
+#include "localcharset.h"
+#include "streq.h"
+#include "uniwidth.h"
+
+#undef wcwidth
+
+int
+rpl_wcwidth (wchar_t wc)
+{
+ /* In UTF-8 locales, use a Unicode aware width function. */
+ const char *encoding = locale_charset ();
+ if (STREQ (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0 ,0))
+ {
+ /* We assume that in a UTF-8 locale, a wide character is the same as a
+ Unicode character. */
+ return uc_width (wc, encoding);
+ }
+ else
+ {
+ /* Otherwise, fall back to the system's wcwidth function. */
+#if HAVE_WCWIDTH
+ return wcwidth (wc);
+#else
+ return wc == 0 ? 0 : iswprint (wc) ? 1 : -1;
+#endif
+ }
+}
diff --git a/lib/xsize.h b/lib/xsize.h
new file mode 100644
index 00000000..0b30045e
--- /dev/null
+++ b/lib/xsize.h
@@ -0,0 +1,108 @@
+/* xsize.h -- Checked size_t computations.
+
+ Copyright (C) 2003, 2008 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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. */
+
+#ifndef _XSIZE_H
+#define _XSIZE_H
+
+/* Get size_t. */
+#include <stddef.h>
+
+/* Get SIZE_MAX. */
+#include <limits.h>
+#if HAVE_STDINT_H
+# include <stdint.h>
+#endif
+
+/* The size of memory objects is often computed through expressions of
+ type size_t. Example:
+ void* p = malloc (header_size + n * element_size).
+ These computations can lead to overflow. When this happens, malloc()
+ returns a piece of memory that is way too small, and the program then
+ crashes while attempting to fill the memory.
+ To avoid this, the functions and macros in this file check for overflow.
+ The convention is that SIZE_MAX represents overflow.
+ malloc (SIZE_MAX) is not guaranteed to fail -- think of a malloc
+ implementation that uses mmap --, it's recommended to use size_overflow_p()
+ or size_in_bounds_p() before invoking malloc().
+ The example thus becomes:
+ size_t size = xsum (header_size, xtimes (n, element_size));
+ void *p = (size_in_bounds_p (size) ? malloc (size) : NULL);
+*/
+
+/* Convert an arbitrary value >= 0 to type size_t. */
+#define xcast_size_t(N) \
+ ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX)
+
+/* Sum of two sizes, with overflow check. */
+static inline size_t
+#if __GNUC__ >= 3
+__attribute__ ((__pure__))
+#endif
+xsum (size_t size1, size_t size2)
+{
+ size_t sum = size1 + size2;
+ return (sum >= size1 ? sum : SIZE_MAX);
+}
+
+/* Sum of three sizes, with overflow check. */
+static inline size_t
+#if __GNUC__ >= 3
+__attribute__ ((__pure__))
+#endif
+xsum3 (size_t size1, size_t size2, size_t size3)
+{
+ return xsum (xsum (size1, size2), size3);
+}
+
+/* Sum of four sizes, with overflow check. */
+static inline size_t
+#if __GNUC__ >= 3
+__attribute__ ((__pure__))
+#endif
+xsum4 (size_t size1, size_t size2, size_t size3, size_t size4)
+{
+ return xsum (xsum (xsum (size1, size2), size3), size4);
+}
+
+/* Maximum of two sizes, with overflow check. */
+static inline size_t
+#if __GNUC__ >= 3
+__attribute__ ((__pure__))
+#endif
+xmax (size_t size1, size_t size2)
+{
+ /* No explicit check is needed here, because for any n:
+ max (SIZE_MAX, n) == SIZE_MAX and max (n, SIZE_MAX) == SIZE_MAX. */
+ return (size1 >= size2 ? size1 : size2);
+}
+
+/* Multiplication of a count with an element size, with overflow check.
+ The count must be >= 0 and the element size must be > 0.
+ This is a macro, not an inline function, so that it works correctly even
+ when N is of a wider type and N > SIZE_MAX. */
+#define xtimes(N, ELSIZE) \
+ ((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX)
+
+/* Check for overflow. */
+#define size_overflow_p(SIZE) \
+ ((SIZE) == SIZE_MAX)
+/* Check against overflow. */
+#define size_in_bounds_p(SIZE) \
+ ((SIZE) != SIZE_MAX)
+
+#endif /* _XSIZE_H */
diff --git a/m4/exported.m4 b/m4/exported.m4
new file mode 100644
index 00000000..fc379231
--- /dev/null
+++ b/m4/exported.m4
@@ -0,0 +1,21 @@
+# exported.m4 serial 1 (gettext-0.18)
+dnl Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Prerequisites of the exported.sh script:
+dnl Check for nm output filter that yields the exported symbols.
+AC_DEFUN([gt_GLOBAL_SYMBOL_PIPE], [
+ AC_REQUIRE([AC_PROG_NM]) dnl provided by libtool.m4
+ AC_SUBST([NM])
+ AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE]) dnl provided by libtool.m4
+ GLOBAL_SYMBOL_PIPE=$lt_cv_sys_global_symbol_pipe
+ AC_SUBST([GLOBAL_SYMBOL_PIPE])
+ if test -n "$GLOBAL_SYMBOL_PIPE"; then
+ HAVE_GLOBAL_SYMBOL_PIPE=1
+ else
+ HAVE_GLOBAL_SYMBOL_PIPE=
+ fi
+ AC_SUBST([HAVE_GLOBAL_SYMBOL_PIPE])
+])
diff --git a/m4/init-package-version.m4 b/m4/init-package-version.m4
new file mode 100644
index 00000000..f131a844
--- /dev/null
+++ b/m4/init-package-version.m4
@@ -0,0 +1,97 @@
+# init-package-version.m4 serial 1 (gettext-0.18)
+dnl Copyright (C) 1992-2009 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+# Make it possible to pass version numbers extracted from a file in
+# $(srcdir) to autoconf.
+#
+# Autoconf insists on passing the package name and version number to
+# every generated .h file and every Makefile. This was a reasonable
+# design at times when a version number was changed only once a month.
+# Nowadays, people often assign a new version number once a week, or
+# even change it each time a 'git' commit is made. Regenerating all
+# the files that depend on configure.ac (aclocal.m4, configure,
+# config.status, config.h, all Makefiles) may take 15 minutes. These
+# delays can severely hamper development.
+#
+# An alternative is to store the version number in a file in $(srcdir)
+# that is separate from configure.ac. It can be a data file, a shell
+# script, a .m4 file, or other. The essential point is that the maintainer
+# is responsible for creating Makefile dependencies to this version file
+# for every file that needs to be rebuilt when the version changes. This
+# typically includes
+# - distributable documentation files that carry the version number,
+# but does not include
+# - aclocal.m4, configure, config.status, config.h, all Makefiles,
+# - executables.
+#
+# autoconf and automake make it hard to follow this approach:
+#
+# - If AC_INIT is used with arguments, there is a chicken-and-egg problem:
+# The arguments need to be read from a file in $(srcdir). The location
+# of $(srcdir) is only determined by AC_CONFIG_SRCDIR. AC_CONFIG_SRCDIR
+# can only appear after AC_INIT (otherwise aclocal gives an error:
+# "error: m4_defn: undefined macro: _m4_divert_diversion").
+# Furthermore, the arguments passed to AC_INIT must be literals; for
+# example, the assignment to PACKAGE_VERSION looks like this:
+# [PACKAGE_VERSION=']AC_PACKAGE_VERSION[']
+#
+# - If AC_INIT is used without arguments:
+# Automake provides its own variables, PACKAGE and VERSION, and uses them
+# instead of PACKAGE_NAME and PACKAGE_VERSION that come from Autoconf.
+# - If AM_INIT_AUTOMAKE is used with two arguments, automake options
+# like 'silent-rules' cannot be specified.
+# - If AM_INIT_AUTOMAKE is used in its one-argument form or without
+# arguments at all, it triggers an error
+# "error: AC_INIT should be called with package and version arguments".
+# - If AM_INIT_AUTOMAKE is used in its one-argument form or without
+# arguments at all, and _AC_INIT_PACKAGE is used before it, with
+# the package and version number from the file as arguments, we get
+# a warning: "warning: AC_INIT: not a literal: $VERSION_NUMBER".
+# The arguments passed to _AC_INIT_PACKAGE must be literals.
+#
+# With the macro defined in this file, the approach can be coded like this:
+#
+# AC_INIT
+# AC_CONFIG_SRCDIR(WITNESS)
+# . $srcdir/../version.sh
+# gl_INIT_PACKAGE(PACKAGE, $VERSION_NUMBER)
+# AM_INIT_AUTOMAKE([OPTIONS])
+
+# gl_INIT_PACKAGE(PACKAGE-NAME, VERSION)
+# --------------------------------------
+# followed by an AM_INIT_AUTOMAKE invocation,
+# is like calling AM_INIT_AUTOMAKE(PACKAGE-NAME, VERSION)
+# except that it can use computed non-literal arguments.
+AC_DEFUN([gl_INIT_PACKAGE],
+[
+ AC_BEFORE([$0], [AM_INIT_AUTOMAKE])
+ dnl Redefine AM_INIT_AUTOMAKE.
+ m4_define([gl_AM_INIT_AUTOMAKE],
+ m4_bpatsubst(m4_dquote(
+ m4_bpatsubst(m4_dquote(
+ m4_bpatsubst(m4_dquote(
+ m4_defn([AM_INIT_AUTOMAKE])),
+ [AC_PACKAGE_NAME], [gl_INIT_DUMMY])),
+ [AC_PACKAGE_TARNAME], [gl_INIT_DUMMY])),
+ [AC_PACKAGE_VERSION], [gl_INIT_DUMMY])
+ [AC_SUBST([PACKAGE], [$1])
+ AC_SUBST([VERSION], [$2])
+ ])
+ m4_define([AM_INIT_AUTOMAKE],
+ m4_defn([gl_RPL_INIT_AUTOMAKE]))
+])
+m4_define([gl_INIT_DUMMY], [])
+AC_DEFUN([gl_RPL_INIT_AUTOMAKE], [
+ m4_ifval([$2],
+ [m4_fatal([After gl_INIT_PACKAGE, the two-argument form of AM_INIT_AUTOMAKE cannot be used.])])
+ gl_AM_INIT_AUTOMAKE([$1 no-define])
+ m4_if(m4_index([ $1 ], [ no-define ]), [-1],
+ [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])
+ ])
+])
diff --git a/m4/libtool.m4 b/m4/libtool.m4
new file mode 100644
index 00000000..53ef95a7
--- /dev/null
+++ b/m4/libtool.m4
@@ -0,0 +1,7372 @@
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+m4_define([_LT_COPYING], [dnl
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is part of GNU Libtool.
+#
+# GNU Libtool 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.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+])
+
+# serial 56 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+m4_defun([LT_PREREQ],
+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+ [m4_default([$3],
+ [m4_fatal([Libtool version $1 or higher is required],
+ 63)])],
+ [$2])])
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+ *\ * | *\ *)
+ AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+AC_DEFUN([LT_INIT],
+[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL="${CONFIG_SHELL-$SHELL} "'$(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])# LT_INIT
+
+# Old names:
+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+m4_defun([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+ case $cc_temp in
+ compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+ distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+])
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+m4_defun([_LT_FILEUTILS_DEFAULTS],
+[: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+])# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+m4_defun([_LT_SETUP],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+_LT_DECL([], [host_alias], [0], [The host system])dnl
+_LT_DECL([], [host], [0])dnl
+_LT_DECL([], [host_os], [0])dnl
+dnl
+_LT_DECL([], [build_alias], [0], [The build system])dnl
+_LT_DECL([], [build], [0])dnl
+_LT_DECL([], [build_os], [0])dnl
+dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+test -z "$LN_S" && LN_S="ln -s"
+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+dnl
+AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+
+_LT_CONFIG_LIBTOOL_INIT([
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+])
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+_LT_CHECK_OBJDIR
+
+m4_require([_LT_TAG_COMPILER])dnl
+_LT_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ _LT_PATH_MAGIC
+ fi
+ ;;
+esac
+
+# Use C for the default configuration in the libtool script
+LT_SUPPORTED_TAG([CC])
+_LT_LANG_C_CONFIG
+_LT_LANG_DEFAULT_CONFIG
+_LT_CONFIG_COMMANDS
+])# _LT_SETUP
+
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from `configure', and `config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably,
+# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+m4_defun([_LT_PROG_LTMAIN],
+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+ltmain="$ac_aux_dir/ltmain.sh"
+])# _LT_PROG_LTMAIN
+
+
+## ------------------------------------- ##
+## Accumulate code for creating libtool. ##
+## ------------------------------------- ##
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the `libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL_INIT],
+[m4_ifval([$1],
+ [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+ [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL],
+[m4_ifval([$1],
+ [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+ [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+[_LT_CONFIG_LIBTOOL([$1])
+_LT_CONFIG_LIBTOOL_INIT([$2])
+])
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+m4_define([_LT_FORMAT_COMMENT],
+[m4_ifval([$1], [
+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+ [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+)])
+
+
+
+## ------------------------ ##
+## FIXME: Eliminate VARNAME ##
+## ------------------------ ##
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME. Any other value will be used directly.
+m4_define([_LT_DECL],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+ [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+ [m4_ifval([$1], [$1], [$2])])
+ lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+ m4_ifval([$4],
+ [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+ lt_dict_add_subkey([lt_decl_dict], [$2],
+ [tagged?], [m4_ifval([$5], [yes], [no])])])
+])
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_tag_varnames],
+[_lt_decl_filter([tagged?], [yes], $@)])
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+m4_define([_lt_decl_filter],
+[m4_case([$#],
+ [0], [m4_fatal([$0: too few arguments: $#])],
+ [1], [m4_fatal([$0: too few arguments: $#: $1])],
+ [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+ [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+ [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+])
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+m4_define([lt_decl_quote_varnames],
+[_lt_decl_filter([value], [1], $@)])
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_dquote_varnames],
+[_lt_decl_filter([value], [2], $@)])
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_varnames_tagged],
+[m4_assert([$# <= 2])dnl
+_$0(m4_quote(m4_default([$1], [[, ]])),
+ m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+ m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+m4_define([_lt_decl_varnames_tagged],
+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_all_varnames],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+ m4_if([$2], [],
+ m4_quote(lt_decl_varnames),
+ m4_quote(m4_shift($@))))[]dnl
+])
+m4_define([_lt_decl_all_varnames],
+[lt_join($@, lt_decl_varnames_tagged([$1],
+ lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+])
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to `config.status' so that its
+# declaration there will have the same value as in `configure'. VARNAME
+# must have a single quote delimited value for this to work.
+m4_define([_LT_CONFIG_STATUS_DECLARE],
+[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly. In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+# <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+ [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+m4_defun([_LT_LIBTOOL_TAGS],
+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+available_tags="_LT_TAGS"dnl
+])
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+# # Some comment about what VAR is for.
+# visible_name=$lt_internal_name
+m4_define([_LT_LIBTOOL_DECLARE],
+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+ [description])))[]dnl
+m4_pushdef([_libtool_name],
+ m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+ [0], [_libtool_name=[$]$1],
+ [1], [_libtool_name=$lt_[]$1],
+ [2], [_libtool_name=$lt_[]$1],
+ [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+])
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# script. Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+[m4_foreach([_lt_var],
+ m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+m4_define([_LT_LIBTOOL_TAG_VARS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into `config.status', and then the shell code to quote escape them in
+# for loops in `config.status'. Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+m4_defun([_LT_CONFIG_COMMANDS],
+[AC_PROVIDE_IFELSE([LT_OUTPUT],
+ dnl If the libtool generation code has been placed in $CONFIG_LT,
+ dnl instead of duplicating it all over again into config.status,
+ dnl then we will have config.status run $CONFIG_LT later, so it
+ dnl needs to know what name is stored there:
+ [AC_CONFIG_COMMANDS([libtool],
+ [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+ dnl If the libtool generation code is destined for config.status,
+ dnl expand the accumulated commands and init code now:
+ [AC_CONFIG_COMMANDS([libtool],
+ [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+])#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+[
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+_LT_CONFIG_STATUS_DECLARATIONS
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+ *[[\\\\\\\`\\"\\\$]]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Double-quote double-evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_dquote_varnames); do
+ case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+ *[[\\\\\\\`\\"\\\$]]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Fix-up fallback echo if it was mangled by the above quoting rules.
+case \$lt_ECHO in
+*'\\\[$]0 --fallback-echo"')dnl "
+ lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
+ ;;
+esac
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+AC_DEFUN([LT_OUTPUT],
+[: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+cat >"$CONFIG_LT" <<_LTEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate a libtool stub with the current configuration.
+
+lt_cl_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AS_SHELL_SANITIZE
+_AS_PREPARE
+
+exec AS_MESSAGE_FD>&1
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+ echo
+ AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+
+Report bugs to <bug-libtool@gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+ case $[1] in
+ --version | --v* | -V )
+ echo "$lt_cl_version"; exit 0 ;;
+ --help | --h* | -h )
+ echo "$lt_cl_help"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --quiet | --q* | --silent | --s* | -q )
+ lt_cl_silent=: ;;
+
+ -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+ *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+ esac
+ shift
+done
+
+if $lt_cl_silent; then
+ exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure. Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+if test "$no_create" != yes; then
+ lt_cl_success=:
+ test "$silent" = yes &&
+ lt_config_lt_args="$lt_config_lt_args --quiet"
+ exec AS_MESSAGE_LOG_FD>/dev/null
+ $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+ exec AS_MESSAGE_LOG_FD>>config.log
+ $lt_cl_success || AS_EXIT(1)
+fi
+])# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, create an initial libtool script with a
+# default configuration from the untagged config vars. Otherwise add code
+# to config.status for appending the configuration named by TAG from the
+# matching tagged config vars.
+m4_defun([_LT_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_CONFIG_SAVE_COMMANDS([
+ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+ m4_if(_LT_TAG, [C], [
+ # See if we are running on zsh, and set the options which allow our
+ # commands through without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+
+ cfgfile="${ofile}T"
+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+ $RM "$cfgfile"
+
+ cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+_LT_COPYING
+_LT_LIBTOOL_TAGS
+
+# ### BEGIN LIBTOOL CONFIG
+_LT_LIBTOOL_CONFIG_VARS
+_LT_LIBTOOL_TAG_VARS
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+ case $host_os in
+ aix3*)
+ cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+_LT_EOF
+ ;;
+ esac
+
+ _LT_PROG_LTMAIN
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ _LT_PROG_XSI_SHELLFNS
+
+ sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+],
+[cat <<_LT_EOF >> "$ofile"
+
+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+dnl in a comment (ie after a #).
+# ### BEGIN LIBTOOL TAG CONFIG: $1
+_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+# ### END LIBTOOL TAG CONFIG: $1
+_LT_EOF
+])dnl /m4_if
+],
+[m4_if([$1], [], [
+ PACKAGE='$PACKAGE'
+ VERSION='$VERSION'
+ TIMESTAMP='$TIMESTAMP'
+ RM='$RM'
+ ofile='$ofile'], [])
+])dnl /_LT_CONFIG_SAVE_COMMANDS
+])# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+# autoconf --trace 'LT_SUPPORTED_TAG:$1'
+AC_DEFUN([LT_SUPPORTED_TAG], [])
+
+
+# C support is built-in for now
+m4_define([_LT_LANG_C_enabled], [])
+m4_define([_LT_TAGS], [])
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+AC_DEFUN([LT_LANG],
+[AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+ [C], [_LT_LANG(C)],
+ [C++], [_LT_LANG(CXX)],
+ [Java], [_LT_LANG(GCJ)],
+ [Fortran 77], [_LT_LANG(F77)],
+ [Fortran], [_LT_LANG(FC)],
+ [Windows Resource], [_LT_LANG(RC)],
+ [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+ [_LT_LANG($1)],
+ [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+m4_defun([_LT_LANG],
+[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+ [LT_SUPPORTED_TAG([$1])dnl
+ m4_append([_LT_TAGS], [$1 ])dnl
+ m4_define([_LT_LANG_]$1[_enabled], [])dnl
+ _LT_LANG_$1_CONFIG($1)])dnl
+])# _LT_LANG
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+m4_defun([_LT_LANG_DEFAULT_CONFIG],
+[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [LT_LANG(CXX)],
+ [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_F77],
+ [LT_LANG(F77)],
+ [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_FC],
+ [LT_LANG(FC)],
+ [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+
+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+dnl pulling things in needlessly.
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [m4_ifdef([AC_PROG_GCJ],
+ [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+ m4_ifdef([A][M_PROG_GCJ],
+ [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+ m4_ifdef([LT_PROG_GCJ],
+ [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+
+AC_PROVIDE_IFELSE([LT_PROG_RC],
+ [LT_LANG(RC)],
+ [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+])# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+
+
+# _LT_TAG_COMPILER
+# ----------------
+m4_defun([_LT_TAG_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+m4_defun([_LT_COMPILER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+m4_defun([_LT_LINKER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+ case $host_os in
+ rhapsody* | darwin*)
+ AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+ AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+ AC_CHECK_TOOL([LIPO], [lipo], [:])
+ AC_CHECK_TOOL([OTOOL], [otool], [:])
+ AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+ _LT_DECL([], [DSYMUTIL], [1],
+ [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+ _LT_DECL([], [NMEDIT], [1],
+ [Tool to change global to local symbols on Mac OS X])
+ _LT_DECL([], [LIPO], [1],
+ [Tool to manipulate fat objects and archives on Mac OS X])
+ _LT_DECL([], [OTOOL], [1],
+ [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+ _LT_DECL([], [OTOOL64], [1],
+ [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+ AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+ [lt_cv_apple_cc_single_mod=no
+ if test -z "${LT_MULTI_MODULE}"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ rm -rf libconftest.dylib*
+ echo "int foo(void){return 1;}" > conftest.c
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+ _lt_result=$?
+ if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+ lt_cv_apple_cc_single_mod=yes
+ else
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ fi
+ rm -rf libconftest.dylib*
+ rm -f conftest.*
+ fi])
+ AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+ [lt_cv_ld_exported_symbols_list],
+ [lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+ [lt_cv_ld_exported_symbols_list=yes],
+ [lt_cv_ld_exported_symbols_list=no])
+ LDFLAGS="$save_LDFLAGS"
+ ])
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ darwin*) # darwin 5.x on
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[[012]]*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ else
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ if test "$DSYMUTIL" != ":"; then
+ _lt_dsymutil='~$DSYMUTIL $lib || :'
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES
+# --------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+ m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=echo
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+ m4_if([$1], [CXX],
+[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+ fi
+],[])
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+])
+
+# _LT_SYS_MODULE_PATH_AIX
+# -----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+ [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_SHELL_INIT
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[_LT_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$lt_ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+ ;;
+esac
+
+ECHO=${lt_ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X[$]1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $ECHO works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<_LT_EOF
+[$]*
+_LT_EOF
+ exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$lt_ECHO"; then
+ if test "X${echo_test_string+set}" != Xset; then
+ # find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
+ { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
+ then
+ break
+ fi
+ done
+ fi
+
+ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+ else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ ECHO="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$ECHO" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ ECHO='print -r'
+ elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+ else
+ # Try using printf.
+ ECHO='printf %s\n'
+ if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+ if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "[$]0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ ECHO=echo
+ fi
+ fi
+ fi
+ fi
+ fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+lt_ECHO=$ECHO
+if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+ lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(lt_ECHO)
+])
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1],
+ [An echo program that does not interpret backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_ENABLE_LOCK
+# ---------------
+m4_defun([_LT_ENABLE_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+ [AS_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*|s390*-*tpf*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+ [AC_LANG_PUSH(C)
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+ AC_LANG_POP])
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+sparc*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+esac
+
+need_locks="$enable_libtool_lock"
+])# _LT_ENABLE_LOCK
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[AC_CHECK_TOOL(AR, ar, false)
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1])
+
+AC_CHECK_TOOL(STRIP, strip, :)
+test -z "$STRIP" && STRIP=:
+_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+test -z "$RANLIB" && RANLIB=:
+_LT_DECL([], [RANLIB], [1],
+ [Commands used to install an old-style archive])
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+_LT_DECL([], [old_postinstall_cmds], [2])
+_LT_DECL([], [old_postuninstall_cmds], [2])
+_LT_TAGDECL([], [old_archive_cmds], [2],
+ [Commands used to build an old-style archive])
+])# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([_LT_COMPILER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$3"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ fi
+ $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+ m4_if([$5], , :, [$5])
+else
+ m4_if([$6], , :, [$6])
+fi
+])# _LT_COMPILER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+AC_DEFUN([_LT_LINKER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $3"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
+ $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ else
+ $2=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+ m4_if([$4], , :, [$4])
+else
+ m4_if([$5], , :, [$5])
+fi
+])# _LT_LINKER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+
+
+# LT_CMD_MAX_LEN
+#---------------
+AC_DEFUN([LT_CMD_MAX_LEN],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw* | cegcc*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8 ; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
+ = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on
+ # massive amounts of additional arguments before passing them to the
+ # linker. It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
+ ;;
+ esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+ AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+ AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+ [What is the maximum length of a command?])
+])# LT_CMD_MAX_LEN
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+m4_defun([_LT_HEADER_DLFCN],
+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+])# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+m4_defun([_LT_TRY_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+ [$4]
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}]
+_LT_EOF
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) $1 ;;
+ x$lt_dlneed_uscore) $2 ;;
+ x$lt_dlunknown|x*) $3 ;;
+ esac
+ else :
+ # compilation failed
+ $3
+ fi
+fi
+rm -fr conftest*
+])# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+AC_DEFUN([LT_SYS_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32* | cegcc*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ])
+ ;;
+
+ *)
+ AC_CHECK_FUNC([shl_load],
+ [lt_cv_dlopen="shl_load"],
+ [AC_CHECK_LIB([dld], [shl_load],
+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+ [AC_CHECK_FUNC([dlopen],
+ [lt_cv_dlopen="dlopen"],
+ [AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+ [AC_CHECK_LIB([svld], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+ [AC_CHECK_LIB([dld], [dld_link],
+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ AC_CACHE_CHECK([whether a program can dlopen itself],
+ lt_cv_dlopen_self, [dnl
+ _LT_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+ ])
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
+ ])
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+ [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+ [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+ [Whether dlopen of statically linked programs is supported])
+])# LT_SYS_DLOPEN_SELF
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+m4_defun([_LT_COMPILER_C_O],
+[m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+ fi
+ fi
+ chmod u+w . 2>&AS_MESSAGE_LOG_FD
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+])
+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+ [Does compiler simultaneously support -c and -o options?])
+])# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+m4_defun([_LT_COMPILER_FILE_LOCKS],
+[m4_require([_LT_ENABLE_LOCK])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_COMPILER_C_O([$1])
+
+hard_links="nottested"
+if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ AC_MSG_CHECKING([if we can lock with hard links])
+ hard_links=yes
+ $RM conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ AC_MSG_RESULT([$hard_links])
+ if test "$hard_links" = no; then
+ AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+])# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+m4_defun([_LT_CHECK_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+_LT_DECL([], [objdir], [0],
+ [The name of the directory that contains temporary libtool files])dnl
+m4_pattern_allow([LT_OBJDIR])dnl
+AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
+ [Define to the sub-directory in which libtool stores uninstalled libraries.])
+])# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+ test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+ test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+ # We can hardcode non-existent directories.
+ if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+ test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+ # Linking always hardcodes the temporary library directory.
+ _LT_TAGVAR(hardcode_action, $1)=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ _LT_TAGVAR(hardcode_action, $1)=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ _LT_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
+ test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+_LT_TAGDECL([], [hardcode_action], [0],
+ [How to hardcode a shared library path into an executable])
+])# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+m4_defun([_LT_CMD_STRIPLIB],
+[m4_require([_LT_DECL_EGREP])
+striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+fi
+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+_LT_DECL([], [striplib], [1])
+])# _LT_CMD_STRIPLIB
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+m4_defun([_LT_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+m4_if([$1],
+ [], [
+if test "$GCC" = yes; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+ if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+ sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix[[4-9]]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[[01]] | aix4.[[01]].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[[45]]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+m4_if([$1], [],[
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[[123]]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix[[3-9]]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # Some binutils ld are patched to set DT_RUNPATH
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+ [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+ [shlibpath_overrides_runpath=yes])])
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+*nto* | *qnx*)
+ version_type=qnx
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[[89]] | openbsd2.[[89]].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+_LT_DECL([], [variables_saved_for_relink], [1],
+ [Variables whose values should be saved in libtool wrapper scripts and
+ restored at link time])
+_LT_DECL([], [need_lib_prefix], [0],
+ [Do we need the "lib" prefix for modules?])
+_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
+_LT_DECL([], [version_type], [0], [Library versioning type])
+_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable])
+_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
+_LT_DECL([], [shlibpath_overrides_runpath], [0],
+ [Is shlibpath searched before the hard-coded library search path?])
+_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
+_LT_DECL([], [library_names_spec], [1],
+ [[List of archive names. First name is the real one, the rest are links.
+ The last name is the one that the linker finds with -lNAME]])
+_LT_DECL([], [soname_spec], [1],
+ [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [postinstall_cmds], [2],
+ [Command to use after installation of a shared archive])
+_LT_DECL([], [postuninstall_cmds], [2],
+ [Command to use after uninstallation of a shared archive])
+_LT_DECL([], [finish_cmds], [2],
+ [Commands used to finish a libtool library installation in a directory])
+_LT_DECL([], [finish_eval], [1],
+ [[As "finish_cmds", except a single script fragment to be evaled but
+ not shown]])
+_LT_DECL([], [hardcode_into_libs], [0],
+ [Whether we should hardcode library paths into libraries])
+_LT_DECL([], [sys_lib_search_path_spec], [2],
+ [Compile-time system search path for libraries])
+_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
+ [Run-time system search path for libraries])
+])# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program which can recognize shared library
+AC_DEFUN([_LT_PATH_TOOL_PREFIX],
+[m4_require([_LT_DECL_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] | ?:[\\/]*])
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word. This closes a longstanding sh security hole.
+ ac_dummy="m4_if([$2], , $PATH, [$2])"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$1; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ AC_MSG_RESULT($MAGIC_CMD)
+else
+ AC_MSG_RESULT(no)
+fi
+_LT_DECL([], [MAGIC_CMD], [0],
+ [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program which can recognize a shared library
+m4_defun([_LT_PATH_MAGIC],
+[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+ else
+ MAGIC_CMD=:
+ fi
+fi
+])# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([LT_PATH_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+
+AC_ARG_WITH([gnu-ld],
+ [AS_HELP_STRING([--with-gnu-ld],
+ [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+ [test "$withval" = no || with_gnu_ld=yes],
+ [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by $CC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])# LT_PATH_LD
+
+# Old names:
+AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_LD], [])
+dnl AC_DEFUN([AC_PROG_LD], [])
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+m4_defun([_LT_PATH_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+m4_defun([_LT_CMD_RELOAD],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+ lt_cv_ld_reload_flag,
+ [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_DECL([], [reload_cmds], [2])dnl
+])# _LT_CMD_RELOAD
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_MAGIC_METHOD],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+AC_CACHE_CHECK([how to recognize dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[[4-9]]*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[[45]]*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ if ( file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+
+cegcc)
+ # use the weaker test based on 'objdump'. See mingw*.
+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | dragonfly*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix[[3-9]]*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+*nto* | *qnx*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+tpf*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+_LT_DECL([], [deplibs_check_method], [1],
+ [Method to check whether dependent libraries are shared objects])
+_LT_DECL([], [file_magic_cmd], [1],
+ [Command to use when deplibs_check_method == "file_magic"])
+])# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+AC_DEFUN([LT_PATH_NM],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" \
+ && { test "$build" = "$host" \
+ || { test "$build_os" = cygwin && test "$host_os" = mingw32; }; \
+ }; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+ NM="$lt_cv_path_NM"
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ if test -n "$DUMPBIN"; then :
+ # Let the user override the test.
+ else
+ AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+ *COFF*)
+ DUMPBIN="$DUMPBIN -symbols"
+ ;;
+ *)
+ DUMPBIN=:
+ ;;
+ esac
+ fi
+ AC_SUBST([DUMPBIN])
+ if test "$DUMPBIN" != ":"; then
+ NM="$DUMPBIN"
+ fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+ [lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
+ cat conftest.out >&AS_MESSAGE_LOG_FD
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*])
+])# LT_PATH_NM
+
+# Old names:
+AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
+AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_NM], [])
+dnl AC_DEFUN([AC_PROG_NM], [])
+
+
+# LT_LIB_M
+# --------
+# check for math library
+AC_DEFUN([LT_LIB_M],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+ # These system don't have libm, or don't need it
+ ;;
+*-ncr-sysv4.3*)
+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+ ;;
+*)
+ AC_CHECK_LIB(m, cos, LIBM="-lm")
+ ;;
+esac
+AC_SUBST([LIBM])
+])# LT_LIB_M
+
+# Old name:
+AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_CHECK_LIBM], [])
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+m4_defun([_LT_COMPILER_NO_RTTI],
+[m4_require([_LT_TAG_COMPILER])dnl
+
+_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+ _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+ lt_cv_prog_compiler_rtti_exceptions,
+ [-fno-rtti -fno-exceptions], [],
+ [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
+ [Compiler flag to turn off builtin functions])
+])# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[[BCDT]]'
+ ;;
+cygwin* | mingw* | pw32* | cegcc*)
+ symcode='[[ABCDGISTW]]'
+ ;;
+hpux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDEGRST]]'
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[[BCDEGRST]]'
+ ;;
+osf*)
+ symcode='[[BCDEGQRST]]'
+ ;;
+solaris*)
+ symcode='[[BDRT]]'
+ ;;
+sco3.2v5*)
+ symcode='[[DT]]'
+ ;;
+sysv4.2uw2*)
+ symcode='[[DT]]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[[ABDT]]'
+ ;;
+sysv4)
+ symcode='[[DFNSTU]]'
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Fake it for dumpbin and say T for any non-static function
+ # and D for any global variable.
+ # Also find C++ and __fastcall symbols from MSVC++,
+ # which start with @ or ?.
+ lt_cv_sys_global_symbol_pipe="$AWK ['"\
+" {last_section=section; section=\$ 3};"\
+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" \$ 0!~/External *\|/{next};"\
+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+" {if(hide[section]) next};"\
+" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+" s[1]~/^[@?]/{print s[1], s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" ' prfx=^$ac_symprfx]"
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+ if AC_TRY_EVAL(ac_compile); then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ void *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[[]] =
+{
+ { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ cat <<\_LT_EOF >> conftest.$ac_ext
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+ cat conftest.$ac_ext >&5
+ fi
+ rm -rf conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ AC_MSG_RESULT(failed)
+else
+ AC_MSG_RESULT(ok)
+fi
+
+_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+ [Take the output of nm and produce a listing of raw symbols and C names])
+_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+ [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_c_name_address],
+ [lt_cv_sys_global_symbol_to_c_name_address], [1],
+ [Transform the output of nm in a C name address pair])
+_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+ [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+ [Transform the output of nm in a C name address pair when lib prefix is needed])
+]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+m4_defun([_LT_COMPILER_PIC],
+[m4_require([_LT_TAG_COMPILER])dnl
+_LT_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+m4_if([$1], [CXX], [
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | cygwin* | os2* | pw32* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ interix[[3-9]]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix[[4-9]]*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ if test "$host_cpu" != ia64; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+ aCC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ interix*)
+ # This is c89, which is MS Visual C++ (no shared libs)
+ # Anyone wants to do a port?
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux* | k*bsd*-gnu)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ ecpc* )
+ # old Intel C++ for x86_64 which still supported -KPIC.
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ icpc* )
+ # Intel C++, used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ cxx*)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ xlc* | xlC*)
+ # IBM XL 8.0 on PPC
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ vxworks*)
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+],
+[
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[[3-9]]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ enable_shared=no
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC (with -KPIC) is the default.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ linux* | k*bsd*-gnu)
+ case $cc_basename in
+ # old Intel for x86_64 which still supported -KPIC.
+ ecc*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ ccc*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ xl*)
+ # IBM XL C 8.0/Fortran 10.1 on PPC
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C 5.9
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ *Sun\ F*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All OSF/1 code is PIC.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ rdos*)
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ solaris*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ unicos*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+
+ uts4*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *)
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+])
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+ ;;
+esac
+AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+ [How to pass a linker flag through the compiler])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
+ [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
+ [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
+ [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
+ "" | " "*) ;;
+ *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+ esac],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+ [Additional compiler flags for building library objects])
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
+_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+ _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+ $lt_tmp_static_flag,
+ [],
+ [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
+_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+ [Compiler flag to prevent dynamic linking])
+])# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+m4_defun([_LT_LINKER_SHLIBS],
+[AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+m4_if([$1], [CXX], [
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix[[4-9]]*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw* | cegcc*)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+], [
+ runpath_var=
+ _LT_TAGVAR(allow_undefined_flag, $1)=
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(archive_cmds, $1)=
+ _LT_TAGVAR(archive_expsym_cmds, $1)=
+ _LT_TAGVAR(compiler_needs_object, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(hardcode_automatic, $1)=no
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_TAGVAR(inherit_rpath, $1)=no
+ _LT_TAGVAR(link_all_deplibs, $1)=unknown
+ _LT_TAGVAR(module_cmds, $1)=
+ _LT_TAGVAR(module_expsym_cmds, $1)=
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)=
+ _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+ _LT_TAGVAR(thread_safe_flag_spec, $1)=
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ _LT_TAGVAR(include_expsyms, $1)=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>&1` in
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix[[3-9]]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)=''
+ ;;
+ m68k)
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ interix[[3-9]]*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu)
+ tmp_diet=no
+ if test "$host_os" = linux-dietlibc; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+ tmp_addflag=
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ lf95*) # Lahey Fortran 8.1
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ tmp_sharedflag='--shared' ;;
+ xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ xlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+
+ if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+ runpath_var=
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ fi
+ ;;
+
+ aix[[4-9]]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_TAGVAR(archive_cmds, $1)=''
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)=''
+ ;;
+ m68k)
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ ;;
+
+ bsdi[[45]]*)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ darwin* | rhapsody*)
+ _LT_DARWIN_LINKER_FEATURES($1)
+ ;;
+
+ dgux*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ freebsd1*)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ AC_LINK_IFELSE(int foo(void) {},
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+ )
+ LDFLAGS="$save_LDFLAGS"
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(inherit_rpath, $1)=yes
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ newsos6)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+ case $host_os in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ os2*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ else
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ solaris*)
+ _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ wlarc=''
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ ;;
+ *)
+ wlarc='${wl}'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ esac
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ ;;
+ motorola)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4.3*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+
+ if test x$host_vendor = xsni; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+])
+AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
+
+_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
+_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
+_LT_DECL([], [extract_expsyms_cmds], [2],
+ [The commands to extract the exported symbol list from a shared archive])
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+ # Assume -lc should be added
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $_LT_TAGVAR(archive_cmds, $1) in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+ $RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+ pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+ _LT_TAGVAR(allow_undefined_flag, $1)=
+ if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+ then
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ else
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ fi
+ _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+ AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
+ [Whether or not to add -lc for building shared libraries])
+_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
+ [enable_shared_with_static_runtimes], [0],
+ [Whether or not to disallow shared libs when runtime libs are static])
+_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
+ [Compiler flag to allow reflexive dlopens])
+_LT_TAGDECL([], [whole_archive_flag_spec], [1],
+ [Compiler flag to generate shared objects directly from archives])
+_LT_TAGDECL([], [compiler_needs_object], [1],
+ [Whether the compiler copes with passing no objects directly])
+_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
+ [Create an old-style archive from a shared archive])
+_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
+ [Create a temporary old-style archive to link instead of a shared archive])
+_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
+_LT_TAGDECL([], [archive_expsym_cmds], [2])
+_LT_TAGDECL([], [module_cmds], [2],
+ [Commands used to build a loadable module if different from building
+ a shared archive.])
+_LT_TAGDECL([], [module_expsym_cmds], [2])
+_LT_TAGDECL([], [with_gnu_ld], [1],
+ [Whether we are building with GNU ld or not])
+_LT_TAGDECL([], [allow_undefined_flag], [1],
+ [Flag that allows shared libraries with undefined symbols to be built])
+_LT_TAGDECL([], [no_undefined_flag], [1],
+ [Flag that enforces no undefined symbols])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
+ [Flag to hardcode $libdir into a binary during linking.
+ This must work even if $libdir does not exist])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
+ [[If ld is used when linking, flag to hardcode $libdir into a binary
+ during linking. This must work even if $libdir does not exist]])
+_LT_TAGDECL([], [hardcode_libdir_separator], [1],
+ [Whether we need a single "-rpath" flag with a separated argument])
+_LT_TAGDECL([], [hardcode_direct], [0],
+ [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+ DIR into the resulting binary])
+_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+ [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+ DIR into the resulting binary and the resulting library dependency is
+ "absolute", i.e impossible to change by setting ${shlibpath_var} if the
+ library is relocated])
+_LT_TAGDECL([], [hardcode_minus_L], [0],
+ [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+ into the resulting binary])
+_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
+ [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+ into the resulting binary])
+_LT_TAGDECL([], [hardcode_automatic], [0],
+ [Set to "yes" if building a shared library automatically hardcodes DIR
+ into the library and all subsequent libraries and executables linked
+ against it])
+_LT_TAGDECL([], [inherit_rpath], [0],
+ [Set to yes if linker adds runtime paths of dependent libraries
+ to runtime path list])
+_LT_TAGDECL([], [link_all_deplibs], [0],
+ [Whether libtool must link a program against all its dependency libraries])
+_LT_TAGDECL([], [fix_srcfile_path], [1],
+ [Fix the shell variable $srcfile for the compiler])
+_LT_TAGDECL([], [always_export_symbols], [0],
+ [Set to "yes" if exported symbols are required])
+_LT_TAGDECL([], [export_symbols_cmds], [2],
+ [The commands to list exported symbols])
+_LT_TAGDECL([], [exclude_expsyms], [1],
+ [Symbols that should not be listed in the preloaded symbols])
+_LT_TAGDECL([], [include_expsyms], [1],
+ [Symbols that must always be exported])
+_LT_TAGDECL([], [prelink_cmds], [2],
+ [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [file_list_spec], [1],
+ [Specify filename containing input files])
+dnl FIXME: Not yet implemented
+dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
+dnl [Compiler flag to generate thread safe objects])
+])# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined. These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_C_CONFIG],
+[m4_require([_LT_DECL_EGREP])dnl
+lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+_LT_TAG_COMPILER
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+ LT_SYS_DLOPEN_SELF
+ _LT_CMD_STRIPLIB
+
+ # Report which library types will actually be built
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+ aix[[4-9]]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_CONFIG($1)
+fi
+AC_LANG_POP
+CC="$lt_save_CC"
+])# _LT_LANG_C_CONFIG
+
+
+# _LT_PROG_CXX
+# ------------
+# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
+# compiler, we have our own version here.
+m4_defun([_LT_PROG_CXX],
+[
+pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
+AC_PROG_CXX
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_PROG_CXXCPP
+else
+ _lt_caught_CXX_error=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_CXX
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_CXX], [])
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined. These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[AC_REQUIRE([_LT_PROG_CXX])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+
+AC_LANG_PUSH(C++)
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(compiler_needs_object, $1)=no
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="int some_variable = 0;"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
+ lt_save_LD=$LD
+ lt_save_GCC=$GCC
+ GCC=$GXX
+ lt_save_with_gnu_ld=$with_gnu_ld
+ lt_save_path_LD=$lt_cv_path_LD
+ if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+ else
+ $as_unset lt_cv_prog_gnu_ld
+ fi
+ if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+ else
+ $as_unset lt_cv_path_LD
+ fi
+ test -z "${LDCXX+set}" || LD=$LDCXX
+ CC=${CXX-"c++"}
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+
+ if test -n "$compiler"; then
+ # We don't want -fno-exception when compiling C++ code, so set the
+ # no_builtin_flag separately
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+ else
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+ fi
+
+ if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+ LT_PATH_LD
+
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+ $GREP 'no-whole-archive' > /dev/null; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+
+ else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+ fi
+
+ # PORTME: fill in a description of your system's C++ link characteristics
+ AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aix[[4-9]]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_TAGVAR(archive_cmds, $1)=''
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to
+ # export.
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty
+ # executable.
+ _LT_SYS_MODULE_PATH_AIX
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared
+ # libraries.
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ _LT_DARWIN_LINKER_FEATURES($1)
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ freebsd[[12]]*)
+ # C++ shared libraries reported to be fairly broken before
+ # switch to ELF
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ freebsd-elf*)
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+
+ freebsd* | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+
+ gnu*)
+ ;;
+
+ hpux9*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ interix[[3-9]]*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC*)
+ # SGI C++
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
+ fi
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+ esac
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(inherit_rpath, $1)=yes
+ ;;
+
+ linux* | k*bsd*-gnu)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc* | ecpc* )
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+ case $host_cpu in
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ case `$CC -V` in
+ *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
+ _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+ compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
+ _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
+ $RANLIB $oldlib'
+ _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ *) # Version 6 will use weak symbols
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+ ;;
+ xl*)
+ # IBM XL 8.0 on PPC, with GNU ld
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+ # Not sure whether something based on
+ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+ # would be better.
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ m88k*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+
+ *nto* | *qnx*)
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd=echo
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ case $host in
+ osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
+ *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
+ esac
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ case $host in
+ osf3*)
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ ;;
+ *)
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
+ $RM $lib.exp'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ case $host in
+ osf3*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ psos*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+ ;;
+ esac
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+ fi
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+
+ AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+ test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+ _LT_TAGVAR(GCC, $1)="$GXX"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_SYS_HIDDEN_LIBDEPS($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ CC=$lt_save_CC
+ LDCXX=$LD
+ LD=$lt_save_LD
+ GCC=$lt_save_GCC
+ with_gnu_ld=$lt_save_with_gnu_ld
+ lt_cv_path_LDCXX=$lt_cv_path_LD
+ lt_cv_path_LD=$lt_save_path_LD
+ lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+ lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test "$_lt_caught_CXX_error" != yes
+
+AC_LANG_POP
+])# _LT_LANG_CXX_CONFIG
+
+
+# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+# ---------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+# Dependencies to place before and after the object being linked:
+_LT_TAGVAR(predep_objects, $1)=
+_LT_TAGVAR(postdep_objects, $1)=
+_LT_TAGVAR(predeps, $1)=
+_LT_TAGVAR(postdeps, $1)=
+_LT_TAGVAR(compiler_lib_search_path, $1)=
+
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library. It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
+int a;
+void foo (void) { a = 0; }
+_LT_EOF
+], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+_LT_EOF
+], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
+ subroutine foo
+ implicit none
+ integer*4 a
+ a=0
+ return
+ end
+_LT_EOF
+], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
+ subroutine foo
+ implicit none
+ integer a
+ a=0
+ return
+ end
+_LT_EOF
+], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
+public class foo {
+ private int a;
+ public void bar (void) {
+ a = 0;
+ }
+};
+_LT_EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
+
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
+
+ for p in `eval "$output_verbose_link_cmd"`; do
+ case $p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" ||
+ test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p in
+ -L* | -R*)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ else
+ _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$_LT_TAGVAR(postdeps, $1)"; then
+ _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+ else
+ _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
+ _LT_TAGVAR(predep_objects, $1)="$p"
+ else
+ _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
+ fi
+ else
+ if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
+ _LT_TAGVAR(postdep_objects, $1)="$p"
+ else
+ _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$RM -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+m4_if([$1], [CXX],
+[case $host_os in
+interix[[3-9]]*)
+ # Interix 3.5 installs completely hosed .la files for C++, so rather than
+ # hack all around it, let's just trust "g++" to DTRT.
+ _LT_TAGVAR(predep_objects,$1)=
+ _LT_TAGVAR(postdep_objects,$1)=
+ _LT_TAGVAR(postdeps,$1)=
+ ;;
+
+linux*)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ if test "$solaris_use_stlport4" != yes; then
+ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+
+solaris*)
+ case $cc_basename in
+ CC*)
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ if test "$solaris_use_stlport4" != yes; then
+ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+esac
+])
+
+case " $_LT_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+ [The directories searched by this compiler when creating a shared library])
+_LT_TAGDECL([], [predep_objects], [1],
+ [Dependencies to place before and after the objects being linked to
+ create a shared library])
+_LT_TAGDECL([], [postdep_objects], [1])
+_LT_TAGDECL([], [predeps], [1])
+_LT_TAGDECL([], [postdeps], [1])
+_LT_TAGDECL([], [compiler_lib_search_path], [1],
+ [The library search path used internally by the compiler when linking
+ a shared library])
+])# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_PROG_F77
+# ------------
+# Since AC_PROG_F77 is broken, in that it returns the empty string
+# if there is no fortran compiler, we have our own version here.
+m4_defun([_LT_PROG_F77],
+[
+pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
+AC_PROG_F77
+if test -z "$F77" || test "X$F77" = "Xno"; then
+ _lt_disable_F77=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_F77
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_F77], [])
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_F77_CONFIG],
+[AC_REQUIRE([_LT_PROG_F77])dnl
+AC_LANG_PUSH(Fortran 77)
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the F77 compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_F77" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code="\
+ program t
+ end
+"
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ lt_save_GCC=$GCC
+ CC=${F77-"f77"}
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+ GCC=$G77
+ if test -n "$compiler"; then
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+ aix[[4-9]]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_TAGVAR(GCC, $1)="$G77"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+ CC="$lt_save_CC"
+fi # test "$_lt_disable_F77" != yes
+
+AC_LANG_POP
+])# _LT_LANG_F77_CONFIG
+
+
+# _LT_PROG_FC
+# -----------
+# Since AC_PROG_FC is broken, in that it returns the empty string
+# if there is no fortran compiler, we have our own version here.
+m4_defun([_LT_PROG_FC],
+[
+pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
+AC_PROG_FC
+if test -z "$FC" || test "X$FC" = "Xno"; then
+ _lt_disable_FC=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_FC
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_FC], [])
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_FC_CONFIG],
+[AC_REQUIRE([_LT_PROG_FC])dnl
+AC_LANG_PUSH(Fortran)
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for fc test sources.
+ac_ext=${ac_fc_srcext-f}
+
+# Object file extension for compiled fc test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the FC compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_FC" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code="\
+ program t
+ end
+"
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ lt_save_GCC=$GCC
+ CC=${FC-"f95"}
+ compiler=$CC
+ GCC=$ac_cv_fc_compiler_gnu
+
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+
+ if test -n "$compiler"; then
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+ aix[[4-9]]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_SYS_HIDDEN_LIBDEPS($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+ CC="$lt_save_CC"
+fi # test "$_lt_disable_FC" != yes
+
+AC_LANG_POP
+])# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GCJ_CONFIG],
+[AC_REQUIRE([LT_PROG_GCJ])dnl
+AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC="$lt_save_CC"
+])# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_RC_CONFIG],
+[AC_REQUIRE([LT_PROG_RC])dnl
+AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+if test -n "$compiler"; then
+ :
+ _LT_CONFIG($1)
+fi
+
+GCC=$lt_save_GCC
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+AC_DEFUN([LT_PROG_GCJ],
+[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+ [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+ [AC_CHECK_TOOL(GCJ, gcj,)
+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ AC_SUBST(GCJFLAGS)])])[]dnl
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+
+
+# LT_PROG_RC
+# ----------
+AC_DEFUN([LT_PROG_RC],
+[AC_CHECK_TOOL(RC, windres,)
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_RC], [])
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_EGREP],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_REQUIRE([AC_PROG_FGREP])dnl
+test -z "$GREP" && GREP=grep
+_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], [1], [An ERE matcher])
+_LT_DECL([], [FGREP], [1], [A literal string matcher])
+dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
+AC_SUBST([GREP])
+])
+
+
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_OBJDUMP],
+[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+AC_SUBST([OBJDUMP])
+])
+
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible. Prefer GNU sed if found.
+m4_defun([_LT_DECL_SED],
+[AC_PROG_SED
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
+ [Sed that helps us avoid accidentally triggering echo(1) options like -n])
+])# _LT_DECL_SED
+
+m4_ifndef([AC_PROG_SED], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_SED. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+############################################################
+
+m4_defun([AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f $lt_ac_sed && continue
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test $lt_ac_count -gt 10 && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test $lt_ac_count -gt $lt_ac_max; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+])
+SED=$lt_cv_path_SED
+AC_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])#AC_PROG_SED
+])#m4_ifndef
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_SED], [])
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+m4_defun([_LT_CHECK_SHELL_FEATURES],
+[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+ test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+ = c,a/b,, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+AC_MSG_RESULT([$xsi_shell])
+_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
+
+AC_MSG_CHECKING([whether the shell understands "+="])
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
+ >/dev/null 2>&1 \
+ && lt_shell_append=yes
+AC_MSG_RESULT([$lt_shell_append])
+_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ lt_unset=unset
+else
+ lt_unset=false
+fi
+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ lt_SP2NL='tr \040 \012'
+ lt_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ lt_SP2NL='tr \100 \n'
+ lt_NL2SP='tr \r\n \100\100'
+ ;;
+esac
+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+])# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PROG_XSI_SHELLFNS
+# ---------------------
+# Bourne and XSI compatible variants of some useful shell functions.
+m4_defun([_LT_PROG_XSI_SHELLFNS],
+[case $xsi_shell in
+ yes)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+}
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result="${1##*/}"
+}
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+# dirname: Compute the dirname of FILE. If nonempty,
+# add APPEND to the result, otherwise set result
+# to NONDIR_REPLACEMENT.
+# value returned in "$func_dirname_result"
+# basename: Compute filename of FILE.
+# value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+ func_basename_result="${1##*/}"
+}
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+func_stripname ()
+{
+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+ # positional parameters, so assign one to ordinary parameter first.
+ func_stripname_result=${3}
+ func_stripname_result=${func_stripname_result#"${1}"}
+ func_stripname_result=${func_stripname_result%"${2}"}
+}
+
+# func_opt_split
+func_opt_split ()
+{
+ func_opt_split_opt=${1%%=*}
+ func_opt_split_arg=${1#*=}
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+ case ${1} in
+ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+ *) func_lo2o_result=${1} ;;
+ esac
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=${1%.*}.lo
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=$(( $[*] ))
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=${#1}
+}
+
+_LT_EOF
+ ;;
+ *) # Bourne compatible functions.
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ # Extract subdirectory from the argument.
+ func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
+ if test "X$func_dirname_result" = "X${1}"; then
+ func_dirname_result="${3}"
+ else
+ func_dirname_result="$func_dirname_result${2}"
+ fi
+}
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
+}
+
+dnl func_dirname_and_basename
+dnl A portable version of this function is already defined in general.m4sh
+dnl so there is no need for it here.
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+ case ${2} in
+ .*) func_stripname_result=`$ECHO "X${3}" \
+ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
+ *) func_stripname_result=`$ECHO "X${3}" \
+ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
+ esac
+}
+
+# sed scripts:
+my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
+my_sed_long_arg='1s/^-[[^=]]*=//'
+
+# func_opt_split
+func_opt_split ()
+{
+ func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
+ func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+ func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=`expr "$[@]"`
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
+}
+
+_LT_EOF
+esac
+
+case $lt_shell_append in
+ yes)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "$[1]+=\$[2]"
+}
+_LT_EOF
+ ;;
+ *)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "$[1]=\$$[1]\$[2]"
+}
+
+_LT_EOF
+ ;;
+ esac
+])
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
new file mode 100644
index 00000000..34151a3b
--- /dev/null
+++ b/m4/ltoptions.m4
@@ -0,0 +1,368 @@
+# Helper functions for option handling. -*- Autoconf -*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+m4_define([_LT_MANGLE_OPTION],
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it. Other OPTION-NAMEs are
+# saved as a flag.
+m4_define([_LT_SET_OPTION],
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+ _LT_MANGLE_DEFUN([$1], [$2]),
+ [m4_warning([Unknown $1 option `$2'])])[]dnl
+])
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+m4_define([_LT_IF_OPTION],
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+m4_define([_LT_UNLESS_OPTIONS],
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+ [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
+ [m4_define([$0_found])])])[]dnl
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
+])[]dnl
+])
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME. If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+m4_defun([_LT_SET_OPTIONS],
+[# Set options
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+ [_LT_SET_OPTION([$1], _LT_Option)])
+
+m4_if([$1],[LT_INIT],[
+ dnl
+ dnl Simply set some default values (i.e off) if boolean options were not
+ dnl specified:
+ _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+ ])
+ _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+ ])
+ dnl
+ dnl If no reference was made to various pairs of opposing options, then
+ dnl we run the default mode handler for the pair. For example, if neither
+ dnl `shared' nor `disable-shared' was passed, we enable building of shared
+ dnl archives by default:
+ _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+ _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+ _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+ _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+ [_LT_ENABLE_FAST_INSTALL])
+ ])
+])# _LT_SET_OPTIONS
+
+
+## --------------------------------- ##
+## Macros to handle LT_INIT options. ##
+## --------------------------------- ##
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+m4_define([_LT_MANGLE_DEFUN],
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+m4_define([LT_OPTION_DEFINE],
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
+])# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
+])
+
+AU_DEFUN([AC_LIBTOOL_DLOPEN],
+[_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
+[enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
+ AC_CHECK_TOOL(AS, as, false)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
+ ;;
+esac
+
+test -z "$AS" && AS=as
+_LT_DECL([], [AS], [0], [Assembler program])dnl
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
+])# win32-dll
+
+AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the `shared' and
+# `disable-shared' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_SHARED],
+[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([shared],
+ [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+ [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
+
+ _LT_DECL([build_libtool_libs], [enable_shared], [0],
+ [Whether or not to build shared libraries])
+])# _LT_ENABLE_SHARED
+
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+
+AC_DEFUN([AC_DISABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+
+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_SHARED], [])
+dnl AC_DEFUN([AM_DISABLE_SHARED], [])
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the `static' and
+# `disable-static' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_STATIC],
+[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([static],
+ [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+ [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
+
+ _LT_DECL([build_old_libs], [enable_static], [0],
+ [Whether or not to build static libraries])
+])# _LT_ENABLE_STATIC
+
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+
+AC_DEFUN([AC_DISABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+
+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_STATIC], [])
+dnl AC_DEFUN([AM_DISABLE_STATIC], [])
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the `fast-install'
+# and `disable-fast-install' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_FAST_INSTALL],
+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([fast-install],
+ [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+ [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
+
+_LT_DECL([fast_install], [enable_fast_install], [0],
+ [Whether or not to optimize for fast installation])dnl
+])# _LT_ENABLE_FAST_INSTALL
+
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+
+# Old names:
+AU_DEFUN([AC_ENABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+
+AU_DEFUN([AC_DISABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# LT_INIT options.
+# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+m4_define([_LT_WITH_PIC],
+[AC_ARG_WITH([pic],
+ [AS_HELP_STRING([--with-pic],
+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+ [pic_mode="$withval"],
+ [pic_mode=default])
+
+test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
+
+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
+])# _LT_WITH_PIC
+
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
+
+# Old name:
+AU_DEFUN([AC_LIBTOOL_PICMODE],
+[_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+## ----------------- ##
+## LTDL_INIT Options ##
+## ----------------- ##
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+ [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+ [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+ [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+ [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+ [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
new file mode 100644
index 00000000..9000a057
--- /dev/null
+++ b/m4/ltsugar.m4
@@ -0,0 +1,123 @@
+# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+m4_define([lt_join],
+[m4_if([$#], [1], [],
+ [$#], [2], [[$2]],
+ [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+m4_define([_lt_join],
+[m4_if([$#$2], [2], [],
+ [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59 which quotes differently.
+m4_define([lt_car], [[$1]])
+m4_define([lt_cdr],
+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+ [$#], 1, [],
+ [m4_dquote(m4_shift($@))])])
+m4_define([lt_unquote], $1)
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+ m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+m4_define([lt_combine],
+[m4_if(m4_eval([$# > 3]), [1],
+ [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+ [m4_foreach([_Lt_suffix],
+ ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+ [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+m4_define([lt_if_append_uniq],
+[m4_ifdef([$1],
+ [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+ [lt_append([$1], [$2], [$3])$4],
+ [$5])],
+ [lt_append([$1], [$2], [$3])$4])])
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+m4_define([lt_dict_add],
+[m4_define([$1($2)], [$3])])
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+m4_define([lt_dict_add_subkey],
+[m4_define([$1($2:$3)], [$4])])
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+m4_define([lt_dict_fetch],
+[m4_ifval([$3],
+ m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+ m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+m4_define([lt_if_dict_fetch],
+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+ [$5],
+ [$6])])
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+m4_define([lt_dict_filter],
+[m4_if([$5], [], [],
+ [lt_join(m4_quote(m4_default([$4], [[, ]])),
+ lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+ [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
new file mode 100644
index 00000000..b8e154fe
--- /dev/null
+++ b/m4/ltversion.m4
@@ -0,0 +1,23 @@
+# ltversion.m4 -- version numbers -*- Autoconf -*-
+#
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Written by Scott James Remnant, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# Generated from ltversion.in.
+
+# serial 3012 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.2.6])
+m4_define([LT_PACKAGE_REVISION], [1.3012])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.2.6'
+macro_revision='1.3012'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
new file mode 100644
index 00000000..637bb206
--- /dev/null
+++ b/m4/lt~obsolete.m4
@@ -0,0 +1,92 @@
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+# Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 4 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else. This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
diff --git a/m4/woe32-dll.m4 b/m4/woe32-dll.m4
new file mode 100644
index 00000000..6b5a037b
--- /dev/null
+++ b/m4/woe32-dll.m4
@@ -0,0 +1,45 @@
+# woe32-dll.m4 serial 2
+dnl Copyright (C) 2005-2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+# Add --disable-auto-import to the LDFLAGS if the linker supports it.
+# GNU ld has an --enable-auto-import option, and it is the default on Cygwin
+# since July 2005. But it has three fatal drawbacks:
+# - It produces executables and shared libraries with relocations in the
+# .text segment, defeating the principles of virtual memory.
+# - For some constructs such as
+# extern int var;
+# int * const b = &var;
+# it creates an executable that will give an error at runtime, rather
+# than either a compile-time or link-time error or a working executable.
+# (This is with both gcc and g++.) Whereas this code, not relying on
+# auto-import:
+# extern __declspec (dllimport) int var;
+# int * const b = &var;
+# gives a compile-time error with gcc and works with g++.
+# - It doesn't work in some cases (references to a member field of an
+# exported struct variable, or to a particular element of an exported
+# array variable), requiring code modifications. One platform
+# dictates code modifications on all platforms.
+AC_DEFUN([gl_WOE32_DLL],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ case "$host_os" in
+ mingw* | cygwin*)
+ AC_MSG_CHECKING([for auto-import of symbols])
+ AC_CACHE_VAL([gl_cv_ld_autoimport], [
+ gl_save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -Wl,--disable-auto-import"
+ AC_TRY_LINK([], [], [gl_cv_ld_autoimport=yes], [gl_cv_ld_autoimport=no])
+ LDFLAGS="$gl_save_LDFLAGS"])
+ AC_MSG_RESULT([$gl_cv_ld_autoimport])
+ if test $gl_cv_ld_autoimport = yes; then
+ LDFLAGS="$LDFLAGS -Wl,--disable-auto-import"
+ fi
+ ;;
+ esac
+])
diff --git a/tests/Makefile.am b/tests/Makefile.am
new file mode 100644
index 00000000..08ee6413
--- /dev/null
+++ b/tests/Makefile.am
@@ -0,0 +1,39 @@
+## Makefile for the tests subdirectory of GNU libunistring.
+## Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+## Process this file with automake to produce Makefile.in.
+
+# Rules generated and collected by gnulib-tool.
+include Makefile.gnulib
+
+AUTOMAKE_OPTIONS += 1.11 subdir-objects color-tests
+
+# Ensure that ../lib/config.h is seen before ../config.h.
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/lib -I$(top_builddir)
+
+# The test suite uses the 'localcharset' module.
+TESTS_ENVIRONMENT += @LOCALCHARSET_TESTS_ENVIRONMENT@
+
+
+# For debugging memory leaks and memory allocation bugs.
+# You should build with --disable-shared when using valgrind.
+CHECKER =
+#CHECKER = valgrind --tool=memcheck --suppressions=$(srcdir)/../lib/malloca.valgrind --num-callers=20 --leak-check=yes --leak-resolution=high --show-reachable=yes
+#CHECKER = valgrind --tool=massif --format=html --depth=10 --alloc-fn=xmalloc --alloc-fn=xrealloc --stacks=no
+CHECKER_END_OF_COMMENTS =
+
+# This must be the last thing that gets added to TESTS_ENVIRONMENT.
+TESTS_ENVIRONMENT += $(SHELL) $(top_srcdir)/build-aux/run-test '$(CHECKER)'
diff --git a/tests/Makefile.gnulib b/tests/Makefile.gnulib
new file mode 100644
index 00000000..454cfe7d
--- /dev/null
+++ b/tests/Makefile.gnulib
@@ -0,0 +1,3200 @@
+## DO NOT EDIT! GENERATED AUTOMATICALLY!
+## Process this file with automake to produce Makefile.in.
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License. As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+
+AUTOMAKE_OPTIONS = 1.5 foreign
+
+SUBDIRS =
+TESTS =
+TESTS_ENVIRONMENT =
+noinst_PROGRAMS =
+check_PROGRAMS =
+noinst_HEADERS =
+noinst_LIBRARIES =
+check_LIBRARIES = libtests.a
+EXTRA_DIST =
+BUILT_SOURCES =
+SUFFIXES =
+MOSTLYCLEANFILES = core *.stackdump
+MOSTLYCLEANDIRS =
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+
+AM_CPPFLAGS = \
+ -I. -I$(srcdir) \
+ -I.. -I$(srcdir)/.. \
+ -I../lib -I$(srcdir)/../lib
+
+LDADD = libtests.a ../lib/libunistring.la libtests.a $(LIBTESTS_LIBDEPS)
+
+libtests_a_SOURCES =
+libtests_a_LIBADD = $(gltests_LIBOBJS)
+libtests_a_DEPENDENCIES = $(gltests_LIBOBJS)
+EXTRA_libtests_a_SOURCES =
+AM_LIBTOOLFLAGS = --preserve-dup-deps
+
+## begin gnulib module alloca-opt-tests
+
+TESTS += test-alloca-opt
+check_PROGRAMS += test-alloca-opt
+
+EXTRA_DIST += test-alloca-opt.c
+
+## end gnulib module alloca-opt-tests
+
+## begin gnulib module array-mergesort-tests
+
+TESTS += test-array-mergesort
+check_PROGRAMS += test-array-mergesort
+EXTRA_DIST += test-array-mergesort.c
+
+## end gnulib module array-mergesort-tests
+
+## begin gnulib module c-ctype-tests
+
+TESTS += test-c-ctype
+check_PROGRAMS += test-c-ctype
+
+EXTRA_DIST += test-c-ctype.c
+
+## end gnulib module c-ctype-tests
+
+## begin gnulib module c-strcase-tests
+
+TESTS += test-c-strcase.sh
+TESTS_ENVIRONMENT += EXEEXT='@EXEEXT@' LOCALE_FR='@LOCALE_FR@' LOCALE_TR_UTF8='@LOCALE_TR_UTF8@'
+check_PROGRAMS += test-c-strcasecmp test-c-strncasecmp
+EXTRA_DIST += test-c-strcase.sh test-c-strcasecmp.c test-c-strncasecmp.c
+
+## end gnulib module c-strcase-tests
+
+## begin gnulib module environ-tests
+
+TESTS += test-environ
+check_PROGRAMS += test-environ
+
+EXTRA_DIST += test-environ.c
+
+## end gnulib module environ-tests
+
+## begin gnulib module errno-tests
+
+TESTS += test-errno
+check_PROGRAMS += test-errno
+
+EXTRA_DIST += test-errno.c
+
+## end gnulib module errno-tests
+
+## begin gnulib module error
+
+
+EXTRA_DIST += error.c error.h
+
+EXTRA_libtests_a_SOURCES += error.c
+
+## end gnulib module error
+
+## begin gnulib module exitfail
+
+
+EXTRA_DIST += exitfail.c exitfail.h
+
+EXTRA_libtests_a_SOURCES += exitfail.c
+
+## end gnulib module exitfail
+
+## begin gnulib module frexpl-nolibm-tests
+
+TESTS += test-frexpl-nolibm
+check_PROGRAMS += test-frexpl-nolibm
+test_frexpl_nolibm_SOURCES = test-frexpl.c
+
+EXTRA_DIST += test-frexpl.c
+
+## end gnulib module frexpl-nolibm-tests
+
+## begin gnulib module fseterr-tests
+
+TESTS += test-fseterr
+check_PROGRAMS += test-fseterr
+
+EXTRA_DIST += test-fseterr.c
+
+## end gnulib module fseterr-tests
+
+## begin gnulib module gettext-h
+
+libtests_a_SOURCES += gettext.h
+
+## end gnulib module gettext-h
+
+## begin gnulib module iconv-tests
+
+TESTS += test-iconv
+check_PROGRAMS += test-iconv
+test_iconv_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += test-iconv.c
+
+## end gnulib module iconv-tests
+
+## begin gnulib module intprops
+
+
+EXTRA_DIST += intprops.h
+
+## end gnulib module intprops
+
+## begin gnulib module isnand-nolibm-tests
+
+TESTS += test-isnand-nolibm
+check_PROGRAMS += test-isnand-nolibm
+
+EXTRA_DIST += test-isnand-nolibm.c test-isnand.h nan.h
+
+## end gnulib module isnand-nolibm-tests
+
+## begin gnulib module isnanf-nolibm-tests
+
+TESTS += test-isnanf-nolibm
+check_PROGRAMS += test-isnanf-nolibm
+
+EXTRA_DIST += test-isnanf-nolibm.c test-isnanf.h nan.h
+
+## end gnulib module isnanf-nolibm-tests
+
+## begin gnulib module isnanl-nolibm-tests
+
+TESTS += test-isnanl-nolibm
+check_PROGRAMS += test-isnanl-nolibm
+
+EXTRA_DIST += test-isnanl-nolibm.c test-isnanl.h nan.h
+
+## end gnulib module isnanl-nolibm-tests
+
+## begin gnulib module locale
+
+BUILT_SOURCES += $(LOCALE_H)
+
+# We need the following in order to create <locale.h> when the system
+# doesn't have one that provides all definitions.
+locale.h: locale.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_LOCALE_H''@|$(NEXT_LOCALE_H)|g' \
+ < $(srcdir)/locale.in.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += locale.h locale.h-t
+
+EXTRA_DIST += locale.in.h
+
+## end gnulib module locale
+
+## begin gnulib module locale-tests
+
+TESTS += test-locale
+check_PROGRAMS += test-locale
+
+EXTRA_DIST += test-locale.c
+
+## end gnulib module locale-tests
+
+## begin gnulib module localename-tests
+
+TESTS += test-localename
+check_PROGRAMS += test-localename
+test_localename_LDADD = $(LDADD) @INTL_MACOSX_LIBS@
+
+EXTRA_DIST += test-localename.c
+
+## end gnulib module localename-tests
+
+## begin gnulib module malloca-tests
+
+TESTS += test-malloca
+check_PROGRAMS += test-malloca
+
+EXTRA_DIST += test-malloca.c
+
+## end gnulib module malloca-tests
+
+## begin gnulib module math-tests
+
+TESTS += test-math
+check_PROGRAMS += test-math
+
+EXTRA_DIST += test-math.c
+
+## end gnulib module math-tests
+
+## begin gnulib module mbrtowc-tests
+
+TESTS += test-mbrtowc1.sh test-mbrtowc2.sh test-mbrtowc3.sh test-mbrtowc4.sh
+TESTS_ENVIRONMENT += \
+ EXEEXT='@EXEEXT@' \
+ LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' \
+ LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+check_PROGRAMS += test-mbrtowc
+
+EXTRA_DIST += test-mbrtowc1.sh test-mbrtowc2.sh test-mbrtowc3.sh test-mbrtowc4.sh test-mbrtowc.c
+
+## end gnulib module mbrtowc-tests
+
+## begin gnulib module mbsinit-tests
+
+TESTS += test-mbsinit.sh
+TESTS_ENVIRONMENT += EXEEXT='@EXEEXT@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
+check_PROGRAMS += test-mbsinit
+
+EXTRA_DIST += test-mbsinit.sh test-mbsinit.c
+
+## end gnulib module mbsinit-tests
+
+## begin gnulib module memchr-tests
+
+TESTS += test-memchr
+check_PROGRAMS += test-memchr
+EXTRA_DIST += test-memchr.c zerosize-ptr.h
+
+## end gnulib module memchr-tests
+
+## begin gnulib module printf-frexp-tests
+
+TESTS += test-printf-frexp
+check_PROGRAMS += test-printf-frexp
+
+EXTRA_DIST += test-printf-frexp.c
+
+## end gnulib module printf-frexp-tests
+
+## begin gnulib module printf-frexpl-tests
+
+TESTS += test-printf-frexpl
+check_PROGRAMS += test-printf-frexpl
+
+EXTRA_DIST += test-printf-frexpl.c
+
+## end gnulib module printf-frexpl-tests
+
+## begin gnulib module progname
+
+libtests_a_SOURCES += progname.h progname.c
+
+## end gnulib module progname
+
+## begin gnulib module setenv
+
+
+EXTRA_DIST += setenv.c
+
+EXTRA_libtests_a_SOURCES += setenv.c
+
+## end gnulib module setenv
+
+## begin gnulib module signbit-tests
+
+TESTS += test-signbit
+check_PROGRAMS += test-signbit
+
+EXTRA_DIST += test-signbit.c
+
+## end gnulib module signbit-tests
+
+## begin gnulib module stdbool-tests
+
+TESTS += test-stdbool
+check_PROGRAMS += test-stdbool
+
+EXTRA_DIST += test-stdbool.c
+
+## end gnulib module stdbool-tests
+
+## begin gnulib module stdint-tests
+
+TESTS += test-stdint
+check_PROGRAMS += test-stdint
+
+EXTRA_DIST += test-stdint.c
+
+## end gnulib module stdint-tests
+
+## begin gnulib module stdlib-tests
+
+TESTS += test-stdlib
+check_PROGRAMS += test-stdlib
+
+EXTRA_DIST += test-stdlib.c
+
+## end gnulib module stdlib-tests
+
+## begin gnulib module strerror
+
+
+EXTRA_DIST += strerror.c
+
+EXTRA_libtests_a_SOURCES += strerror.c
+
+## end gnulib module strerror
+
+## begin gnulib module strerror-tests
+
+TESTS += test-strerror
+check_PROGRAMS += test-strerror
+EXTRA_DIST += test-strerror.c
+
+## end gnulib module strerror-tests
+
+## begin gnulib module striconveh-tests
+
+TESTS += test-striconveh
+check_PROGRAMS += test-striconveh
+test_striconveh_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += test-striconveh.c
+
+## end gnulib module striconveh-tests
+
+## begin gnulib module striconveha-tests
+
+TESTS += test-striconveha
+check_PROGRAMS += test-striconveha
+test_striconveha_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += test-striconveha.c
+
+## end gnulib module striconveha-tests
+
+## begin gnulib module string-tests
+
+TESTS += test-string
+check_PROGRAMS += test-string
+
+EXTRA_DIST += test-string.c
+
+## end gnulib module string-tests
+
+## begin gnulib module unicase/cased-tests
+
+TESTS += test-cased
+check_PROGRAMS += test-cased
+test_cased_SOURCES = unicase/test-cased.c
+
+EXTRA_DIST += unicase/test-cased.c unicase/test-predicate-part1.h unicase/test-predicate-part2.h
+
+## end gnulib module unicase/cased-tests
+
+## begin gnulib module unicase/ignorable-tests
+
+TESTS += test-ignorable
+check_PROGRAMS += test-ignorable
+test_ignorable_SOURCES = unicase/test-ignorable.c
+
+EXTRA_DIST += unicase/test-ignorable.c unicase/test-predicate-part1.h unicase/test-predicate-part2.h
+
+## end gnulib module unicase/ignorable-tests
+
+## begin gnulib module unicase/locale-language-tests
+
+TESTS += unicase/test-locale-language.sh
+TESTS_ENVIRONMENT += EXEEXT='@EXEEXT@' LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' LOCALE_JA='@LOCALE_JA@' LOCALE_TR_UTF8='@LOCALE_TR_UTF8@' LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+check_PROGRAMS += test-locale-language
+test_locale_language_SOURCES = unicase/test-locale-language.c
+test_locale_language_LDADD = $(LDADD) @INTL_MACOSX_LIBS@
+EXTRA_DIST += unicase/test-locale-language.sh unicase/test-locale-language.c
+
+## end gnulib module unicase/locale-language-tests
+
+## begin gnulib module unicase/tolower-tests
+
+TESTS += test-uc_tolower
+check_PROGRAMS += test-uc_tolower
+test_uc_tolower_SOURCES = unicase/test-uc_tolower.c
+
+EXTRA_DIST += unicase/test-uc_tolower.c unicase/test-mapping-part1.h unicase/test-mapping-part2.h
+
+## end gnulib module unicase/tolower-tests
+
+## begin gnulib module unicase/totitle-tests
+
+TESTS += test-uc_totitle
+check_PROGRAMS += test-uc_totitle
+test_uc_totitle_SOURCES = unicase/test-uc_totitle.c
+
+EXTRA_DIST += unicase/test-uc_totitle.c unicase/test-mapping-part1.h unicase/test-mapping-part2.h
+
+## end gnulib module unicase/totitle-tests
+
+## begin gnulib module unicase/toupper-tests
+
+TESTS += test-uc_toupper
+check_PROGRAMS += test-uc_toupper
+test_uc_toupper_SOURCES = unicase/test-uc_toupper.c
+
+EXTRA_DIST += unicase/test-uc_toupper.c unicase/test-mapping-part1.h unicase/test-mapping-part2.h
+
+## end gnulib module unicase/toupper-tests
+
+## begin gnulib module unicase/u16-casecmp-tests
+
+TESTS += test-u16-casecmp
+check_PROGRAMS += test-u16-casecmp
+test_u16_casecmp_SOURCES = unicase/test-u16-casecmp.c
+
+EXTRA_DIST += unicase/test-u16-casecmp.c unicase/test-casecmp.h
+
+## end gnulib module unicase/u16-casecmp-tests
+
+## begin gnulib module unicase/u16-casecoll-tests
+
+TESTS += test-u16-casecoll
+check_PROGRAMS += test-u16-casecoll
+test_u16_casecoll_SOURCES = unicase/test-u16-casecoll.c
+test_u16_casecoll_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += unicase/test-u16-casecoll.c unicase/test-casecmp.h
+
+## end gnulib module unicase/u16-casecoll-tests
+
+## begin gnulib module unicase/u16-casefold-tests
+
+TESTS += test-u16-casefold
+check_PROGRAMS += test-u16-casefold
+test_u16_casefold_SOURCES = unicase/test-u16-casefold.c
+
+EXTRA_DIST += unicase/test-u16-casefold.c
+
+## end gnulib module unicase/u16-casefold-tests
+
+## begin gnulib module unicase/u16-is-cased-tests
+
+TESTS += test-u16-is-cased
+check_PROGRAMS += test-u16-is-cased
+test_u16_is_cased_SOURCES = unicase/test-u16-is-cased.c
+
+EXTRA_DIST += unicase/test-u16-is-cased.c unicase/test-is-cased.h
+
+## end gnulib module unicase/u16-is-cased-tests
+
+## begin gnulib module unicase/u16-is-casefolded-tests
+
+TESTS += test-u16-is-casefolded
+check_PROGRAMS += test-u16-is-casefolded
+test_u16_is_casefolded_SOURCES = unicase/test-u16-is-casefolded.c
+
+EXTRA_DIST += unicase/test-u16-is-casefolded.c unicase/test-is-casefolded.h
+
+## end gnulib module unicase/u16-is-casefolded-tests
+
+## begin gnulib module unicase/u16-is-lowercase-tests
+
+TESTS += test-u16-is-lowercase
+check_PROGRAMS += test-u16-is-lowercase
+test_u16_is_lowercase_SOURCES = unicase/test-u16-is-lowercase.c
+
+EXTRA_DIST += unicase/test-u16-is-lowercase.c unicase/test-is-lowercase.h
+
+## end gnulib module unicase/u16-is-lowercase-tests
+
+## begin gnulib module unicase/u16-is-titlecase-tests
+
+TESTS += test-u16-is-titlecase
+check_PROGRAMS += test-u16-is-titlecase
+test_u16_is_titlecase_SOURCES = unicase/test-u16-is-titlecase.c
+
+EXTRA_DIST += unicase/test-u16-is-titlecase.c unicase/test-is-titlecase.h
+
+## end gnulib module unicase/u16-is-titlecase-tests
+
+## begin gnulib module unicase/u16-is-uppercase-tests
+
+TESTS += test-u16-is-uppercase
+check_PROGRAMS += test-u16-is-uppercase
+test_u16_is_uppercase_SOURCES = unicase/test-u16-is-uppercase.c
+
+EXTRA_DIST += unicase/test-u16-is-uppercase.c unicase/test-is-uppercase.h
+
+## end gnulib module unicase/u16-is-uppercase-tests
+
+## begin gnulib module unicase/u16-tolower-tests
+
+TESTS += test-u16-tolower
+check_PROGRAMS += test-u16-tolower
+test_u16_tolower_SOURCES = unicase/test-u16-tolower.c
+
+EXTRA_DIST += unicase/test-u16-tolower.c
+
+## end gnulib module unicase/u16-tolower-tests
+
+## begin gnulib module unicase/u16-totitle-tests
+
+TESTS += test-u16-totitle
+check_PROGRAMS += test-u16-totitle
+test_u16_totitle_SOURCES = unicase/test-u16-totitle.c
+
+EXTRA_DIST += unicase/test-u16-totitle.c
+
+## end gnulib module unicase/u16-totitle-tests
+
+## begin gnulib module unicase/u16-toupper-tests
+
+TESTS += test-u16-toupper
+check_PROGRAMS += test-u16-toupper
+test_u16_toupper_SOURCES = unicase/test-u16-toupper.c
+
+EXTRA_DIST += unicase/test-u16-toupper.c
+
+## end gnulib module unicase/u16-toupper-tests
+
+## begin gnulib module unicase/u32-casecmp-tests
+
+TESTS += test-u32-casecmp
+check_PROGRAMS += test-u32-casecmp
+test_u32_casecmp_SOURCES = unicase/test-u32-casecmp.c
+
+EXTRA_DIST += unicase/test-u32-casecmp.c unicase/test-casecmp.h
+
+## end gnulib module unicase/u32-casecmp-tests
+
+## begin gnulib module unicase/u32-casecoll-tests
+
+TESTS += test-u32-casecoll
+check_PROGRAMS += test-u32-casecoll
+test_u32_casecoll_SOURCES = unicase/test-u32-casecoll.c
+test_u32_casecoll_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += unicase/test-u32-casecoll.c unicase/test-casecmp.h
+
+## end gnulib module unicase/u32-casecoll-tests
+
+## begin gnulib module unicase/u32-casefold-tests
+
+TESTS += test-u32-casefold
+check_PROGRAMS += test-u32-casefold
+test_u32_casefold_SOURCES = unicase/test-u32-casefold.c
+
+EXTRA_DIST += unicase/test-u32-casefold.c
+
+## end gnulib module unicase/u32-casefold-tests
+
+## begin gnulib module unicase/u32-is-cased-tests
+
+TESTS += test-u32-is-cased
+check_PROGRAMS += test-u32-is-cased
+test_u32_is_cased_SOURCES = unicase/test-u32-is-cased.c
+
+EXTRA_DIST += unicase/test-u32-is-cased.c unicase/test-is-cased.h
+
+## end gnulib module unicase/u32-is-cased-tests
+
+## begin gnulib module unicase/u32-is-casefolded-tests
+
+TESTS += test-u32-is-casefolded
+check_PROGRAMS += test-u32-is-casefolded
+test_u32_is_casefolded_SOURCES = unicase/test-u32-is-casefolded.c
+
+EXTRA_DIST += unicase/test-u32-is-casefolded.c unicase/test-is-casefolded.h
+
+## end gnulib module unicase/u32-is-casefolded-tests
+
+## begin gnulib module unicase/u32-is-lowercase-tests
+
+TESTS += test-u32-is-lowercase
+check_PROGRAMS += test-u32-is-lowercase
+test_u32_is_lowercase_SOURCES = unicase/test-u32-is-lowercase.c
+
+EXTRA_DIST += unicase/test-u32-is-lowercase.c unicase/test-is-lowercase.h
+
+## end gnulib module unicase/u32-is-lowercase-tests
+
+## begin gnulib module unicase/u32-is-titlecase-tests
+
+TESTS += test-u32-is-titlecase
+check_PROGRAMS += test-u32-is-titlecase
+test_u32_is_titlecase_SOURCES = unicase/test-u32-is-titlecase.c
+
+EXTRA_DIST += unicase/test-u32-is-titlecase.c unicase/test-is-titlecase.h
+
+## end gnulib module unicase/u32-is-titlecase-tests
+
+## begin gnulib module unicase/u32-is-uppercase-tests
+
+TESTS += test-u32-is-uppercase
+check_PROGRAMS += test-u32-is-uppercase
+test_u32_is_uppercase_SOURCES = unicase/test-u32-is-uppercase.c
+
+EXTRA_DIST += unicase/test-u32-is-uppercase.c unicase/test-is-uppercase.h
+
+## end gnulib module unicase/u32-is-uppercase-tests
+
+## begin gnulib module unicase/u32-tolower-tests
+
+TESTS += test-u32-tolower
+check_PROGRAMS += test-u32-tolower
+test_u32_tolower_SOURCES = unicase/test-u32-tolower.c
+
+EXTRA_DIST += unicase/test-u32-tolower.c
+
+## end gnulib module unicase/u32-tolower-tests
+
+## begin gnulib module unicase/u32-totitle-tests
+
+TESTS += test-u32-totitle
+check_PROGRAMS += test-u32-totitle
+test_u32_totitle_SOURCES = unicase/test-u32-totitle.c
+
+EXTRA_DIST += unicase/test-u32-totitle.c
+
+## end gnulib module unicase/u32-totitle-tests
+
+## begin gnulib module unicase/u32-toupper-tests
+
+TESTS += test-u32-toupper
+check_PROGRAMS += test-u32-toupper
+test_u32_toupper_SOURCES = unicase/test-u32-toupper.c
+
+EXTRA_DIST += unicase/test-u32-toupper.c
+
+## end gnulib module unicase/u32-toupper-tests
+
+## begin gnulib module unicase/u8-casecmp-tests
+
+TESTS += test-u8-casecmp
+check_PROGRAMS += test-u8-casecmp
+test_u8_casecmp_SOURCES = unicase/test-u8-casecmp.c
+
+EXTRA_DIST += unicase/test-u8-casecmp.c unicase/test-casecmp.h
+
+## end gnulib module unicase/u8-casecmp-tests
+
+## begin gnulib module unicase/u8-casecoll-tests
+
+TESTS += test-u8-casecoll
+check_PROGRAMS += test-u8-casecoll
+test_u8_casecoll_SOURCES = unicase/test-u8-casecoll.c
+test_u8_casecoll_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += unicase/test-u8-casecoll.c unicase/test-casecmp.h
+
+## end gnulib module unicase/u8-casecoll-tests
+
+## begin gnulib module unicase/u8-casefold-tests
+
+TESTS += test-u8-casefold
+check_PROGRAMS += test-u8-casefold
+test_u8_casefold_SOURCES = unicase/test-u8-casefold.c
+
+EXTRA_DIST += unicase/test-u8-casefold.c
+
+## end gnulib module unicase/u8-casefold-tests
+
+## begin gnulib module unicase/u8-is-cased-tests
+
+TESTS += test-u8-is-cased
+check_PROGRAMS += test-u8-is-cased
+test_u8_is_cased_SOURCES = unicase/test-u8-is-cased.c
+
+EXTRA_DIST += unicase/test-u8-is-cased.c unicase/test-is-cased.h
+
+## end gnulib module unicase/u8-is-cased-tests
+
+## begin gnulib module unicase/u8-is-casefolded-tests
+
+TESTS += test-u8-is-casefolded
+check_PROGRAMS += test-u8-is-casefolded
+test_u8_is_casefolded_SOURCES = unicase/test-u8-is-casefolded.c
+
+EXTRA_DIST += unicase/test-u8-is-casefolded.c unicase/test-is-casefolded.h
+
+## end gnulib module unicase/u8-is-casefolded-tests
+
+## begin gnulib module unicase/u8-is-lowercase-tests
+
+TESTS += test-u8-is-lowercase
+check_PROGRAMS += test-u8-is-lowercase
+test_u8_is_lowercase_SOURCES = unicase/test-u8-is-lowercase.c
+
+EXTRA_DIST += unicase/test-u8-is-lowercase.c unicase/test-is-lowercase.h
+
+## end gnulib module unicase/u8-is-lowercase-tests
+
+## begin gnulib module unicase/u8-is-titlecase-tests
+
+TESTS += test-u8-is-titlecase
+check_PROGRAMS += test-u8-is-titlecase
+test_u8_is_titlecase_SOURCES = unicase/test-u8-is-titlecase.c
+
+EXTRA_DIST += unicase/test-u8-is-titlecase.c unicase/test-is-titlecase.h
+
+## end gnulib module unicase/u8-is-titlecase-tests
+
+## begin gnulib module unicase/u8-is-uppercase-tests
+
+TESTS += test-u8-is-uppercase
+check_PROGRAMS += test-u8-is-uppercase
+test_u8_is_uppercase_SOURCES = unicase/test-u8-is-uppercase.c
+
+EXTRA_DIST += unicase/test-u8-is-uppercase.c unicase/test-is-uppercase.h
+
+## end gnulib module unicase/u8-is-uppercase-tests
+
+## begin gnulib module unicase/u8-tolower-tests
+
+TESTS += test-u8-tolower
+check_PROGRAMS += test-u8-tolower
+test_u8_tolower_SOURCES = unicase/test-u8-tolower.c
+
+EXTRA_DIST += unicase/test-u8-tolower.c
+
+## end gnulib module unicase/u8-tolower-tests
+
+## begin gnulib module unicase/u8-totitle-tests
+
+TESTS += test-u8-totitle
+check_PROGRAMS += test-u8-totitle
+test_u8_totitle_SOURCES = unicase/test-u8-totitle.c
+
+EXTRA_DIST += unicase/test-u8-totitle.c
+
+## end gnulib module unicase/u8-totitle-tests
+
+## begin gnulib module unicase/u8-toupper-tests
+
+TESTS += test-u8-toupper
+check_PROGRAMS += test-u8-toupper
+test_u8_toupper_SOURCES = unicase/test-u8-toupper.c
+
+EXTRA_DIST += unicase/test-u8-toupper.c
+
+## end gnulib module unicase/u8-toupper-tests
+
+## begin gnulib module unicase/ulc-casecmp-tests
+
+TESTS += unicase/test-ulc-casecmp1.sh unicase/test-ulc-casecmp2.sh
+TESTS_ENVIRONMENT += \
+ EXEEXT='@EXEEXT@' \
+ LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
+check_PROGRAMS += test-ulc-casecmp
+test_ulc_casecmp_SOURCES = unicase/test-ulc-casecmp.c
+test_ulc_casecmp_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += unicase/test-ulc-casecmp1.sh unicase/test-ulc-casecmp2.sh unicase/test-ulc-casecmp.c unicase/test-casecmp.h
+
+## end gnulib module unicase/ulc-casecmp-tests
+
+## begin gnulib module unicase/ulc-casecoll-tests
+
+TESTS += unicase/test-ulc-casecoll1.sh unicase/test-ulc-casecoll2.sh
+TESTS_ENVIRONMENT += \
+ EXEEXT='@EXEEXT@' \
+ LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
+check_PROGRAMS += test-ulc-casecoll
+test_ulc_casecoll_SOURCES = unicase/test-ulc-casecoll.c
+test_ulc_casecoll_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += unicase/test-ulc-casecoll1.sh unicase/test-ulc-casecoll2.sh unicase/test-ulc-casecoll.c unicase/test-casecmp.h
+
+## end gnulib module unicase/ulc-casecoll-tests
+
+## begin gnulib module uniconv/u16-conv-from-enc-tests
+
+TESTS += test-u16-conv-from-enc
+check_PROGRAMS += test-u16-conv-from-enc
+test_u16_conv_from_enc_SOURCES = uniconv/test-u16-conv-from-enc.c
+test_u16_conv_from_enc_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += uniconv/test-u16-conv-from-enc.c
+
+## end gnulib module uniconv/u16-conv-from-enc-tests
+
+## begin gnulib module uniconv/u16-conv-to-enc-tests
+
+TESTS += test-u16-conv-to-enc
+check_PROGRAMS += test-u16-conv-to-enc
+test_u16_conv_to_enc_SOURCES = uniconv/test-u16-conv-to-enc.c
+test_u16_conv_to_enc_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += uniconv/test-u16-conv-to-enc.c
+
+## end gnulib module uniconv/u16-conv-to-enc-tests
+
+## begin gnulib module uniconv/u16-strconv-from-enc-tests
+
+TESTS += test-u16-strconv-from-enc
+check_PROGRAMS += test-u16-strconv-from-enc
+test_u16_strconv_from_enc_SOURCES = uniconv/test-u16-strconv-from-enc.c
+test_u16_strconv_from_enc_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += uniconv/test-u16-strconv-from-enc.c
+
+## end gnulib module uniconv/u16-strconv-from-enc-tests
+
+## begin gnulib module uniconv/u16-strconv-to-enc-tests
+
+TESTS += test-u16-strconv-to-enc
+check_PROGRAMS += test-u16-strconv-to-enc
+test_u16_strconv_to_enc_SOURCES = uniconv/test-u16-strconv-to-enc.c
+test_u16_strconv_to_enc_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += uniconv/test-u16-strconv-to-enc.c
+
+## end gnulib module uniconv/u16-strconv-to-enc-tests
+
+## begin gnulib module uniconv/u32-conv-from-enc-tests
+
+TESTS += test-u32-conv-from-enc
+check_PROGRAMS += test-u32-conv-from-enc
+test_u32_conv_from_enc_SOURCES = uniconv/test-u32-conv-from-enc.c
+test_u32_conv_from_enc_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += uniconv/test-u32-conv-from-enc.c
+
+## end gnulib module uniconv/u32-conv-from-enc-tests
+
+## begin gnulib module uniconv/u32-conv-to-enc-tests
+
+TESTS += test-u32-conv-to-enc
+check_PROGRAMS += test-u32-conv-to-enc
+test_u32_conv_to_enc_SOURCES = uniconv/test-u32-conv-to-enc.c
+test_u32_conv_to_enc_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += uniconv/test-u32-conv-to-enc.c
+
+## end gnulib module uniconv/u32-conv-to-enc-tests
+
+## begin gnulib module uniconv/u32-strconv-from-enc-tests
+
+TESTS += test-u32-strconv-from-enc
+check_PROGRAMS += test-u32-strconv-from-enc
+test_u32_strconv_from_enc_SOURCES = uniconv/test-u32-strconv-from-enc.c
+test_u32_strconv_from_enc_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += uniconv/test-u32-strconv-from-enc.c
+
+## end gnulib module uniconv/u32-strconv-from-enc-tests
+
+## begin gnulib module uniconv/u32-strconv-to-enc-tests
+
+TESTS += test-u32-strconv-to-enc
+check_PROGRAMS += test-u32-strconv-to-enc
+test_u32_strconv_to_enc_SOURCES = uniconv/test-u32-strconv-to-enc.c
+test_u32_strconv_to_enc_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += uniconv/test-u32-strconv-to-enc.c
+
+## end gnulib module uniconv/u32-strconv-to-enc-tests
+
+## begin gnulib module uniconv/u8-conv-from-enc-tests
+
+TESTS += test-u8-conv-from-enc
+check_PROGRAMS += test-u8-conv-from-enc
+test_u8_conv_from_enc_SOURCES = uniconv/test-u8-conv-from-enc.c
+test_u8_conv_from_enc_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += uniconv/test-u8-conv-from-enc.c
+
+## end gnulib module uniconv/u8-conv-from-enc-tests
+
+## begin gnulib module uniconv/u8-conv-to-enc-tests
+
+TESTS += test-u8-conv-to-enc
+check_PROGRAMS += test-u8-conv-to-enc
+test_u8_conv_to_enc_SOURCES = uniconv/test-u8-conv-to-enc.c
+test_u8_conv_to_enc_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += uniconv/test-u8-conv-to-enc.c
+
+## end gnulib module uniconv/u8-conv-to-enc-tests
+
+## begin gnulib module uniconv/u8-strconv-from-enc-tests
+
+TESTS += test-u8-strconv-from-enc
+check_PROGRAMS += test-u8-strconv-from-enc
+test_u8_strconv_from_enc_SOURCES = uniconv/test-u8-strconv-from-enc.c
+test_u8_strconv_from_enc_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += uniconv/test-u8-strconv-from-enc.c
+
+## end gnulib module uniconv/u8-strconv-from-enc-tests
+
+## begin gnulib module uniconv/u8-strconv-to-enc-tests
+
+TESTS += test-u8-strconv-to-enc
+check_PROGRAMS += test-u8-strconv-to-enc
+test_u8_strconv_to_enc_SOURCES = uniconv/test-u8-strconv-to-enc.c
+test_u8_strconv_to_enc_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += uniconv/test-u8-strconv-to-enc.c
+
+## end gnulib module uniconv/u8-strconv-to-enc-tests
+
+## begin gnulib module unictype/bidicategory-byname-tests
+
+TESTS += test-bidi_byname
+check_PROGRAMS += test-bidi_byname
+test_bidi_byname_SOURCES = unictype/test-bidi_byname.c
+
+EXTRA_DIST += unictype/test-bidi_byname.c
+
+## end gnulib module unictype/bidicategory-byname-tests
+
+## begin gnulib module unictype/bidicategory-name-tests
+
+TESTS += test-bidi_name
+check_PROGRAMS += test-bidi_name
+test_bidi_name_SOURCES = unictype/test-bidi_name.c
+
+EXTRA_DIST += unictype/test-bidi_name.c
+
+## end gnulib module unictype/bidicategory-name-tests
+
+## begin gnulib module unictype/bidicategory-of-tests
+
+TESTS += test-bidi_of
+check_PROGRAMS += test-bidi_of
+test_bidi_of_SOURCES = unictype/test-bidi_of.c
+
+EXTRA_DIST += unictype/test-bidi_of.c
+
+## end gnulib module unictype/bidicategory-of-tests
+
+## begin gnulib module unictype/bidicategory-test-tests
+
+TESTS += test-bidi_test
+check_PROGRAMS += test-bidi_test
+test_bidi_test_SOURCES = unictype/test-bidi_test.c
+
+EXTRA_DIST += unictype/test-bidi_test.c
+
+## end gnulib module unictype/bidicategory-test-tests
+
+## begin gnulib module unictype/block-list-tests
+
+TESTS += test-block_list
+check_PROGRAMS += test-block_list
+test_block_list_SOURCES = unictype/test-block_list.c
+
+EXTRA_DIST += unictype/test-block_list.c
+
+## end gnulib module unictype/block-list-tests
+
+## begin gnulib module unictype/block-of-tests
+
+TESTS += test-block_of
+check_PROGRAMS += test-block_of
+test_block_of_SOURCES = unictype/test-block_of.c
+
+EXTRA_DIST += unictype/test-block_of.c
+
+## end gnulib module unictype/block-of-tests
+
+## begin gnulib module unictype/block-test-tests
+
+TESTS += test-block_test
+check_PROGRAMS += test-block_test
+test_block_test_SOURCES = unictype/test-block_test.c
+
+EXTRA_DIST += unictype/test-block_test.c
+
+## end gnulib module unictype/block-test-tests
+
+## begin gnulib module unictype/category-C-tests
+
+TESTS += test-categ_C
+check_PROGRAMS += test-categ_C
+test_categ_C_SOURCES = unictype/test-categ_C.c
+
+EXTRA_DIST += unictype/test-categ_C.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-C-tests
+
+## begin gnulib module unictype/category-Cc-tests
+
+TESTS += test-categ_Cc
+check_PROGRAMS += test-categ_Cc
+test_categ_Cc_SOURCES = unictype/test-categ_Cc.c
+
+EXTRA_DIST += unictype/test-categ_Cc.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Cc-tests
+
+## begin gnulib module unictype/category-Cf-tests
+
+TESTS += test-categ_Cf
+check_PROGRAMS += test-categ_Cf
+test_categ_Cf_SOURCES = unictype/test-categ_Cf.c
+
+EXTRA_DIST += unictype/test-categ_Cf.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Cf-tests
+
+## begin gnulib module unictype/category-Cn-tests
+
+TESTS += test-categ_Cn
+check_PROGRAMS += test-categ_Cn
+test_categ_Cn_SOURCES = unictype/test-categ_Cn.c
+
+EXTRA_DIST += unictype/test-categ_Cn.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Cn-tests
+
+## begin gnulib module unictype/category-Co-tests
+
+TESTS += test-categ_Co
+check_PROGRAMS += test-categ_Co
+test_categ_Co_SOURCES = unictype/test-categ_Co.c
+
+EXTRA_DIST += unictype/test-categ_Co.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Co-tests
+
+## begin gnulib module unictype/category-Cs-tests
+
+TESTS += test-categ_Cs
+check_PROGRAMS += test-categ_Cs
+test_categ_Cs_SOURCES = unictype/test-categ_Cs.c
+
+EXTRA_DIST += unictype/test-categ_Cs.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Cs-tests
+
+## begin gnulib module unictype/category-L-tests
+
+TESTS += test-categ_L
+check_PROGRAMS += test-categ_L
+test_categ_L_SOURCES = unictype/test-categ_L.c
+
+EXTRA_DIST += unictype/test-categ_L.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-L-tests
+
+## begin gnulib module unictype/category-Ll-tests
+
+TESTS += test-categ_Ll
+check_PROGRAMS += test-categ_Ll
+test_categ_Ll_SOURCES = unictype/test-categ_Ll.c
+
+EXTRA_DIST += unictype/test-categ_Ll.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Ll-tests
+
+## begin gnulib module unictype/category-Lm-tests
+
+TESTS += test-categ_Lm
+check_PROGRAMS += test-categ_Lm
+test_categ_Lm_SOURCES = unictype/test-categ_Lm.c
+
+EXTRA_DIST += unictype/test-categ_Lm.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Lm-tests
+
+## begin gnulib module unictype/category-Lo-tests
+
+TESTS += test-categ_Lo
+check_PROGRAMS += test-categ_Lo
+test_categ_Lo_SOURCES = unictype/test-categ_Lo.c
+
+EXTRA_DIST += unictype/test-categ_Lo.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Lo-tests
+
+## begin gnulib module unictype/category-Lt-tests
+
+TESTS += test-categ_Lt
+check_PROGRAMS += test-categ_Lt
+test_categ_Lt_SOURCES = unictype/test-categ_Lt.c
+
+EXTRA_DIST += unictype/test-categ_Lt.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Lt-tests
+
+## begin gnulib module unictype/category-Lu-tests
+
+TESTS += test-categ_Lu
+check_PROGRAMS += test-categ_Lu
+test_categ_Lu_SOURCES = unictype/test-categ_Lu.c
+
+EXTRA_DIST += unictype/test-categ_Lu.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Lu-tests
+
+## begin gnulib module unictype/category-M-tests
+
+TESTS += test-categ_M
+check_PROGRAMS += test-categ_M
+test_categ_M_SOURCES = unictype/test-categ_M.c
+
+EXTRA_DIST += unictype/test-categ_M.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-M-tests
+
+## begin gnulib module unictype/category-Mc-tests
+
+TESTS += test-categ_Mc
+check_PROGRAMS += test-categ_Mc
+test_categ_Mc_SOURCES = unictype/test-categ_Mc.c
+
+EXTRA_DIST += unictype/test-categ_Mc.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Mc-tests
+
+## begin gnulib module unictype/category-Me-tests
+
+TESTS += test-categ_Me
+check_PROGRAMS += test-categ_Me
+test_categ_Me_SOURCES = unictype/test-categ_Me.c
+
+EXTRA_DIST += unictype/test-categ_Me.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Me-tests
+
+## begin gnulib module unictype/category-Mn-tests
+
+TESTS += test-categ_Mn
+check_PROGRAMS += test-categ_Mn
+test_categ_Mn_SOURCES = unictype/test-categ_Mn.c
+
+EXTRA_DIST += unictype/test-categ_Mn.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Mn-tests
+
+## begin gnulib module unictype/category-N-tests
+
+TESTS += test-categ_N
+check_PROGRAMS += test-categ_N
+test_categ_N_SOURCES = unictype/test-categ_N.c
+
+EXTRA_DIST += unictype/test-categ_N.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-N-tests
+
+## begin gnulib module unictype/category-Nd-tests
+
+TESTS += test-categ_Nd
+check_PROGRAMS += test-categ_Nd
+test_categ_Nd_SOURCES = unictype/test-categ_Nd.c
+
+EXTRA_DIST += unictype/test-categ_Nd.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Nd-tests
+
+## begin gnulib module unictype/category-Nl-tests
+
+TESTS += test-categ_Nl
+check_PROGRAMS += test-categ_Nl
+test_categ_Nl_SOURCES = unictype/test-categ_Nl.c
+
+EXTRA_DIST += unictype/test-categ_Nl.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Nl-tests
+
+## begin gnulib module unictype/category-No-tests
+
+TESTS += test-categ_No
+check_PROGRAMS += test-categ_No
+test_categ_No_SOURCES = unictype/test-categ_No.c
+
+EXTRA_DIST += unictype/test-categ_No.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-No-tests
+
+## begin gnulib module unictype/category-P-tests
+
+TESTS += test-categ_P
+check_PROGRAMS += test-categ_P
+test_categ_P_SOURCES = unictype/test-categ_P.c
+
+EXTRA_DIST += unictype/test-categ_P.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-P-tests
+
+## begin gnulib module unictype/category-Pc-tests
+
+TESTS += test-categ_Pc
+check_PROGRAMS += test-categ_Pc
+test_categ_Pc_SOURCES = unictype/test-categ_Pc.c
+
+EXTRA_DIST += unictype/test-categ_Pc.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Pc-tests
+
+## begin gnulib module unictype/category-Pd-tests
+
+TESTS += test-categ_Pd
+check_PROGRAMS += test-categ_Pd
+test_categ_Pd_SOURCES = unictype/test-categ_Pd.c
+
+EXTRA_DIST += unictype/test-categ_Pd.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Pd-tests
+
+## begin gnulib module unictype/category-Pe-tests
+
+TESTS += test-categ_Pe
+check_PROGRAMS += test-categ_Pe
+test_categ_Pe_SOURCES = unictype/test-categ_Pe.c
+
+EXTRA_DIST += unictype/test-categ_Pe.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Pe-tests
+
+## begin gnulib module unictype/category-Pf-tests
+
+TESTS += test-categ_Pf
+check_PROGRAMS += test-categ_Pf
+test_categ_Pf_SOURCES = unictype/test-categ_Pf.c
+
+EXTRA_DIST += unictype/test-categ_Pf.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Pf-tests
+
+## begin gnulib module unictype/category-Pi-tests
+
+TESTS += test-categ_Pi
+check_PROGRAMS += test-categ_Pi
+test_categ_Pi_SOURCES = unictype/test-categ_Pi.c
+
+EXTRA_DIST += unictype/test-categ_Pi.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Pi-tests
+
+## begin gnulib module unictype/category-Po-tests
+
+TESTS += test-categ_Po
+check_PROGRAMS += test-categ_Po
+test_categ_Po_SOURCES = unictype/test-categ_Po.c
+
+EXTRA_DIST += unictype/test-categ_Po.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Po-tests
+
+## begin gnulib module unictype/category-Ps-tests
+
+TESTS += test-categ_Ps
+check_PROGRAMS += test-categ_Ps
+test_categ_Ps_SOURCES = unictype/test-categ_Ps.c
+
+EXTRA_DIST += unictype/test-categ_Ps.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Ps-tests
+
+## begin gnulib module unictype/category-S-tests
+
+TESTS += test-categ_S
+check_PROGRAMS += test-categ_S
+test_categ_S_SOURCES = unictype/test-categ_S.c
+
+EXTRA_DIST += unictype/test-categ_S.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-S-tests
+
+## begin gnulib module unictype/category-Sc-tests
+
+TESTS += test-categ_Sc
+check_PROGRAMS += test-categ_Sc
+test_categ_Sc_SOURCES = unictype/test-categ_Sc.c
+
+EXTRA_DIST += unictype/test-categ_Sc.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Sc-tests
+
+## begin gnulib module unictype/category-Sk-tests
+
+TESTS += test-categ_Sk
+check_PROGRAMS += test-categ_Sk
+test_categ_Sk_SOURCES = unictype/test-categ_Sk.c
+
+EXTRA_DIST += unictype/test-categ_Sk.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Sk-tests
+
+## begin gnulib module unictype/category-Sm-tests
+
+TESTS += test-categ_Sm
+check_PROGRAMS += test-categ_Sm
+test_categ_Sm_SOURCES = unictype/test-categ_Sm.c
+
+EXTRA_DIST += unictype/test-categ_Sm.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Sm-tests
+
+## begin gnulib module unictype/category-So-tests
+
+TESTS += test-categ_So
+check_PROGRAMS += test-categ_So
+test_categ_So_SOURCES = unictype/test-categ_So.c
+
+EXTRA_DIST += unictype/test-categ_So.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-So-tests
+
+## begin gnulib module unictype/category-Z-tests
+
+TESTS += test-categ_Z
+check_PROGRAMS += test-categ_Z
+test_categ_Z_SOURCES = unictype/test-categ_Z.c
+
+EXTRA_DIST += unictype/test-categ_Z.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Z-tests
+
+## begin gnulib module unictype/category-Zl-tests
+
+TESTS += test-categ_Zl
+check_PROGRAMS += test-categ_Zl
+test_categ_Zl_SOURCES = unictype/test-categ_Zl.c
+
+EXTRA_DIST += unictype/test-categ_Zl.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Zl-tests
+
+## begin gnulib module unictype/category-Zp-tests
+
+TESTS += test-categ_Zp
+check_PROGRAMS += test-categ_Zp
+test_categ_Zp_SOURCES = unictype/test-categ_Zp.c
+
+EXTRA_DIST += unictype/test-categ_Zp.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Zp-tests
+
+## begin gnulib module unictype/category-Zs-tests
+
+TESTS += test-categ_Zs
+check_PROGRAMS += test-categ_Zs
+test_categ_Zs_SOURCES = unictype/test-categ_Zs.c
+
+EXTRA_DIST += unictype/test-categ_Zs.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/category-Zs-tests
+
+## begin gnulib module unictype/category-and-not-tests
+
+TESTS += test-categ_and_not
+check_PROGRAMS += test-categ_and_not
+test_categ_and_not_SOURCES = unictype/test-categ_and_not.c
+
+EXTRA_DIST += unictype/test-categ_and_not.c
+
+## end gnulib module unictype/category-and-not-tests
+
+## begin gnulib module unictype/category-and-tests
+
+TESTS += test-categ_and
+check_PROGRAMS += test-categ_and
+test_categ_and_SOURCES = unictype/test-categ_and.c
+
+EXTRA_DIST += unictype/test-categ_and.c
+
+## end gnulib module unictype/category-and-tests
+
+## begin gnulib module unictype/category-byname-tests
+
+TESTS += test-categ_byname
+check_PROGRAMS += test-categ_byname
+test_categ_byname_SOURCES = unictype/test-categ_byname.c
+
+EXTRA_DIST += unictype/test-categ_byname.c
+
+## end gnulib module unictype/category-byname-tests
+
+## begin gnulib module unictype/category-name-tests
+
+TESTS += test-categ_name
+check_PROGRAMS += test-categ_name
+test_categ_name_SOURCES = unictype/test-categ_name.c
+
+EXTRA_DIST += unictype/test-categ_name.c
+
+## end gnulib module unictype/category-name-tests
+
+## begin gnulib module unictype/category-none-tests
+
+if !WOE32DLL
+TESTS += test-categ_none
+check_PROGRAMS += test-categ_none
+test_categ_none_SOURCES = unictype/test-categ_none.c
+endif
+
+EXTRA_DIST += unictype/test-categ_none.c
+
+## end gnulib module unictype/category-none-tests
+
+## begin gnulib module unictype/category-of-tests
+
+TESTS += test-categ_of
+check_PROGRAMS += test-categ_of
+test_categ_of_SOURCES = unictype/test-categ_of.c
+
+EXTRA_DIST += unictype/test-categ_of.c
+
+## end gnulib module unictype/category-of-tests
+
+## begin gnulib module unictype/category-or-tests
+
+TESTS += test-categ_or
+check_PROGRAMS += test-categ_or
+test_categ_or_SOURCES = unictype/test-categ_or.c
+
+EXTRA_DIST += unictype/test-categ_or.c
+
+## end gnulib module unictype/category-or-tests
+
+## begin gnulib module unictype/category-test-withtable-tests
+
+TESTS += test-categ_test_withtable
+check_PROGRAMS += test-categ_test_withtable
+test_categ_test_withtable_SOURCES = unictype/test-categ_test_withtable.c
+
+EXTRA_DIST += unictype/test-categ_test_withtable.c
+
+## end gnulib module unictype/category-test-withtable-tests
+
+## begin gnulib module unictype/combining-class-tests
+
+TESTS += test-combining
+check_PROGRAMS += test-combining
+test_combining_SOURCES = unictype/test-combining.c
+
+EXTRA_DIST += unictype/test-combining.c
+
+## end gnulib module unictype/combining-class-tests
+
+## begin gnulib module unictype/ctype-alnum-tests
+
+TESTS += test-ctype_alnum
+check_PROGRAMS += test-ctype_alnum
+test_ctype_alnum_SOURCES = unictype/test-ctype_alnum.c
+
+EXTRA_DIST += unictype/test-ctype_alnum.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/ctype-alnum-tests
+
+## begin gnulib module unictype/ctype-alpha-tests
+
+TESTS += test-ctype_alpha
+check_PROGRAMS += test-ctype_alpha
+test_ctype_alpha_SOURCES = unictype/test-ctype_alpha.c
+
+EXTRA_DIST += unictype/test-ctype_alpha.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/ctype-alpha-tests
+
+## begin gnulib module unictype/ctype-blank-tests
+
+TESTS += test-ctype_blank
+check_PROGRAMS += test-ctype_blank
+test_ctype_blank_SOURCES = unictype/test-ctype_blank.c
+
+EXTRA_DIST += unictype/test-ctype_blank.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/ctype-blank-tests
+
+## begin gnulib module unictype/ctype-cntrl-tests
+
+TESTS += test-ctype_cntrl
+check_PROGRAMS += test-ctype_cntrl
+test_ctype_cntrl_SOURCES = unictype/test-ctype_cntrl.c
+
+EXTRA_DIST += unictype/test-ctype_cntrl.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/ctype-cntrl-tests
+
+## begin gnulib module unictype/ctype-digit-tests
+
+TESTS += test-ctype_digit
+check_PROGRAMS += test-ctype_digit
+test_ctype_digit_SOURCES = unictype/test-ctype_digit.c
+
+EXTRA_DIST += unictype/test-ctype_digit.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/ctype-digit-tests
+
+## begin gnulib module unictype/ctype-graph-tests
+
+TESTS += test-ctype_graph
+check_PROGRAMS += test-ctype_graph
+test_ctype_graph_SOURCES = unictype/test-ctype_graph.c
+
+EXTRA_DIST += unictype/test-ctype_graph.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/ctype-graph-tests
+
+## begin gnulib module unictype/ctype-lower-tests
+
+TESTS += test-ctype_lower
+check_PROGRAMS += test-ctype_lower
+test_ctype_lower_SOURCES = unictype/test-ctype_lower.c
+
+EXTRA_DIST += unictype/test-ctype_lower.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/ctype-lower-tests
+
+## begin gnulib module unictype/ctype-print-tests
+
+TESTS += test-ctype_print
+check_PROGRAMS += test-ctype_print
+test_ctype_print_SOURCES = unictype/test-ctype_print.c
+
+EXTRA_DIST += unictype/test-ctype_print.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/ctype-print-tests
+
+## begin gnulib module unictype/ctype-punct-tests
+
+TESTS += test-ctype_punct
+check_PROGRAMS += test-ctype_punct
+test_ctype_punct_SOURCES = unictype/test-ctype_punct.c
+
+EXTRA_DIST += unictype/test-ctype_punct.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/ctype-punct-tests
+
+## begin gnulib module unictype/ctype-space-tests
+
+TESTS += test-ctype_space
+check_PROGRAMS += test-ctype_space
+test_ctype_space_SOURCES = unictype/test-ctype_space.c
+
+EXTRA_DIST += unictype/test-ctype_space.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/ctype-space-tests
+
+## begin gnulib module unictype/ctype-upper-tests
+
+TESTS += test-ctype_upper
+check_PROGRAMS += test-ctype_upper
+test_ctype_upper_SOURCES = unictype/test-ctype_upper.c
+
+EXTRA_DIST += unictype/test-ctype_upper.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/ctype-upper-tests
+
+## begin gnulib module unictype/ctype-xdigit-tests
+
+TESTS += test-ctype_xdigit
+check_PROGRAMS += test-ctype_xdigit
+test_ctype_xdigit_SOURCES = unictype/test-ctype_xdigit.c
+
+EXTRA_DIST += unictype/test-ctype_xdigit.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/ctype-xdigit-tests
+
+## begin gnulib module unictype/decimal-digit-tests
+
+TESTS += test-decdigit
+check_PROGRAMS += test-decdigit
+test_decdigit_SOURCES = unictype/test-decdigit.c
+
+EXTRA_DIST += unictype/test-decdigit.c unictype/test-decdigit.h
+
+## end gnulib module unictype/decimal-digit-tests
+
+## begin gnulib module unictype/digit-tests
+
+TESTS += test-digit
+check_PROGRAMS += test-digit
+test_digit_SOURCES = unictype/test-digit.c
+
+EXTRA_DIST += unictype/test-digit.c unictype/test-digit.h
+
+## end gnulib module unictype/digit-tests
+
+## begin gnulib module unictype/mirror-tests
+
+TESTS += test-mirror
+check_PROGRAMS += test-mirror
+test_mirror_SOURCES = unictype/test-mirror.c
+
+EXTRA_DIST += unictype/test-mirror.c
+
+## end gnulib module unictype/mirror-tests
+
+## begin gnulib module unictype/numeric-tests
+
+TESTS += test-numeric
+check_PROGRAMS += test-numeric
+test_numeric_SOURCES = unictype/test-numeric.c
+
+EXTRA_DIST += unictype/test-numeric.c unictype/test-numeric.h
+
+## end gnulib module unictype/numeric-tests
+
+## begin gnulib module unictype/property-alphabetic-tests
+
+TESTS += test-pr_alphabetic
+check_PROGRAMS += test-pr_alphabetic
+test_pr_alphabetic_SOURCES = unictype/test-pr_alphabetic.c
+
+EXTRA_DIST += unictype/test-pr_alphabetic.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-alphabetic-tests
+
+## begin gnulib module unictype/property-ascii-hex-digit-tests
+
+TESTS += test-pr_ascii_hex_digit
+check_PROGRAMS += test-pr_ascii_hex_digit
+test_pr_ascii_hex_digit_SOURCES = unictype/test-pr_ascii_hex_digit.c
+
+EXTRA_DIST += unictype/test-pr_ascii_hex_digit.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-ascii-hex-digit-tests
+
+## begin gnulib module unictype/property-bidi-arabic-digit-tests
+
+TESTS += test-pr_bidi_arabic_digit
+check_PROGRAMS += test-pr_bidi_arabic_digit
+test_pr_bidi_arabic_digit_SOURCES = unictype/test-pr_bidi_arabic_digit.c
+
+EXTRA_DIST += unictype/test-pr_bidi_arabic_digit.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-bidi-arabic-digit-tests
+
+## begin gnulib module unictype/property-bidi-arabic-right-to-left-tests
+
+TESTS += test-pr_bidi_arabic_right_to_left
+check_PROGRAMS += test-pr_bidi_arabic_right_to_left
+test_pr_bidi_arabic_right_to_left_SOURCES = unictype/test-pr_bidi_arabic_right_to_left.c
+
+EXTRA_DIST += unictype/test-pr_bidi_arabic_right_to_left.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-bidi-arabic-right-to-left-tests
+
+## begin gnulib module unictype/property-bidi-block-separator-tests
+
+TESTS += test-pr_bidi_block_separator
+check_PROGRAMS += test-pr_bidi_block_separator
+test_pr_bidi_block_separator_SOURCES = unictype/test-pr_bidi_block_separator.c
+
+EXTRA_DIST += unictype/test-pr_bidi_block_separator.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-bidi-block-separator-tests
+
+## begin gnulib module unictype/property-bidi-boundary-neutral-tests
+
+TESTS += test-pr_bidi_boundary_neutral
+check_PROGRAMS += test-pr_bidi_boundary_neutral
+test_pr_bidi_boundary_neutral_SOURCES = unictype/test-pr_bidi_boundary_neutral.c
+
+EXTRA_DIST += unictype/test-pr_bidi_boundary_neutral.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-bidi-boundary-neutral-tests
+
+## begin gnulib module unictype/property-bidi-common-separator-tests
+
+TESTS += test-pr_bidi_common_separator
+check_PROGRAMS += test-pr_bidi_common_separator
+test_pr_bidi_common_separator_SOURCES = unictype/test-pr_bidi_common_separator.c
+
+EXTRA_DIST += unictype/test-pr_bidi_common_separator.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-bidi-common-separator-tests
+
+## begin gnulib module unictype/property-bidi-control-tests
+
+TESTS += test-pr_bidi_control
+check_PROGRAMS += test-pr_bidi_control
+test_pr_bidi_control_SOURCES = unictype/test-pr_bidi_control.c
+
+EXTRA_DIST += unictype/test-pr_bidi_control.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-bidi-control-tests
+
+## begin gnulib module unictype/property-bidi-embedding-or-override-tests
+
+TESTS += test-pr_bidi_embedding_or_override
+check_PROGRAMS += test-pr_bidi_embedding_or_override
+test_pr_bidi_embedding_or_override_SOURCES = unictype/test-pr_bidi_embedding_or_override.c
+
+EXTRA_DIST += unictype/test-pr_bidi_embedding_or_override.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-bidi-embedding-or-override-tests
+
+## begin gnulib module unictype/property-bidi-eur-num-separator-tests
+
+TESTS += test-pr_bidi_eur_num_separator
+check_PROGRAMS += test-pr_bidi_eur_num_separator
+test_pr_bidi_eur_num_separator_SOURCES = unictype/test-pr_bidi_eur_num_separator.c
+
+EXTRA_DIST += unictype/test-pr_bidi_eur_num_separator.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-bidi-eur-num-separator-tests
+
+## begin gnulib module unictype/property-bidi-eur-num-terminator-tests
+
+TESTS += test-pr_bidi_eur_num_terminator
+check_PROGRAMS += test-pr_bidi_eur_num_terminator
+test_pr_bidi_eur_num_terminator_SOURCES = unictype/test-pr_bidi_eur_num_terminator.c
+
+EXTRA_DIST += unictype/test-pr_bidi_eur_num_terminator.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-bidi-eur-num-terminator-tests
+
+## begin gnulib module unictype/property-bidi-european-digit-tests
+
+TESTS += test-pr_bidi_european_digit
+check_PROGRAMS += test-pr_bidi_european_digit
+test_pr_bidi_european_digit_SOURCES = unictype/test-pr_bidi_european_digit.c
+
+EXTRA_DIST += unictype/test-pr_bidi_european_digit.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-bidi-european-digit-tests
+
+## begin gnulib module unictype/property-bidi-hebrew-right-to-left-tests
+
+TESTS += test-pr_bidi_hebrew_right_to_left
+check_PROGRAMS += test-pr_bidi_hebrew_right_to_left
+test_pr_bidi_hebrew_right_to_left_SOURCES = unictype/test-pr_bidi_hebrew_right_to_left.c
+
+EXTRA_DIST += unictype/test-pr_bidi_hebrew_right_to_left.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-bidi-hebrew-right-to-left-tests
+
+## begin gnulib module unictype/property-bidi-left-to-right-tests
+
+TESTS += test-pr_bidi_left_to_right
+check_PROGRAMS += test-pr_bidi_left_to_right
+test_pr_bidi_left_to_right_SOURCES = unictype/test-pr_bidi_left_to_right.c
+
+EXTRA_DIST += unictype/test-pr_bidi_left_to_right.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-bidi-left-to-right-tests
+
+## begin gnulib module unictype/property-bidi-non-spacing-mark-tests
+
+TESTS += test-pr_bidi_non_spacing_mark
+check_PROGRAMS += test-pr_bidi_non_spacing_mark
+test_pr_bidi_non_spacing_mark_SOURCES = unictype/test-pr_bidi_non_spacing_mark.c
+
+EXTRA_DIST += unictype/test-pr_bidi_non_spacing_mark.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-bidi-non-spacing-mark-tests
+
+## begin gnulib module unictype/property-bidi-other-neutral-tests
+
+TESTS += test-pr_bidi_other_neutral
+check_PROGRAMS += test-pr_bidi_other_neutral
+test_pr_bidi_other_neutral_SOURCES = unictype/test-pr_bidi_other_neutral.c
+
+EXTRA_DIST += unictype/test-pr_bidi_other_neutral.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-bidi-other-neutral-tests
+
+## begin gnulib module unictype/property-bidi-pdf-tests
+
+TESTS += test-pr_bidi_pdf
+check_PROGRAMS += test-pr_bidi_pdf
+test_pr_bidi_pdf_SOURCES = unictype/test-pr_bidi_pdf.c
+
+EXTRA_DIST += unictype/test-pr_bidi_pdf.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-bidi-pdf-tests
+
+## begin gnulib module unictype/property-bidi-segment-separator-tests
+
+TESTS += test-pr_bidi_segment_separator
+check_PROGRAMS += test-pr_bidi_segment_separator
+test_pr_bidi_segment_separator_SOURCES = unictype/test-pr_bidi_segment_separator.c
+
+EXTRA_DIST += unictype/test-pr_bidi_segment_separator.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-bidi-segment-separator-tests
+
+## begin gnulib module unictype/property-bidi-whitespace-tests
+
+TESTS += test-pr_bidi_whitespace
+check_PROGRAMS += test-pr_bidi_whitespace
+test_pr_bidi_whitespace_SOURCES = unictype/test-pr_bidi_whitespace.c
+
+EXTRA_DIST += unictype/test-pr_bidi_whitespace.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-bidi-whitespace-tests
+
+## begin gnulib module unictype/property-byname-tests
+
+TESTS += test-pr_byname
+check_PROGRAMS += test-pr_byname
+test_pr_byname_SOURCES = unictype/test-pr_byname.c
+
+EXTRA_DIST += unictype/test-pr_byname.c
+
+## end gnulib module unictype/property-byname-tests
+
+## begin gnulib module unictype/property-combining-tests
+
+TESTS += test-pr_combining
+check_PROGRAMS += test-pr_combining
+test_pr_combining_SOURCES = unictype/test-pr_combining.c
+
+EXTRA_DIST += unictype/test-pr_combining.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-combining-tests
+
+## begin gnulib module unictype/property-composite-tests
+
+TESTS += test-pr_composite
+check_PROGRAMS += test-pr_composite
+test_pr_composite_SOURCES = unictype/test-pr_composite.c
+
+EXTRA_DIST += unictype/test-pr_composite.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-composite-tests
+
+## begin gnulib module unictype/property-currency-symbol-tests
+
+TESTS += test-pr_currency_symbol
+check_PROGRAMS += test-pr_currency_symbol
+test_pr_currency_symbol_SOURCES = unictype/test-pr_currency_symbol.c
+
+EXTRA_DIST += unictype/test-pr_currency_symbol.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-currency-symbol-tests
+
+## begin gnulib module unictype/property-dash-tests
+
+TESTS += test-pr_dash
+check_PROGRAMS += test-pr_dash
+test_pr_dash_SOURCES = unictype/test-pr_dash.c
+
+EXTRA_DIST += unictype/test-pr_dash.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-dash-tests
+
+## begin gnulib module unictype/property-decimal-digit-tests
+
+TESTS += test-pr_decimal_digit
+check_PROGRAMS += test-pr_decimal_digit
+test_pr_decimal_digit_SOURCES = unictype/test-pr_decimal_digit.c
+
+EXTRA_DIST += unictype/test-pr_decimal_digit.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-decimal-digit-tests
+
+## begin gnulib module unictype/property-default-ignorable-code-point-tests
+
+TESTS += test-pr_default_ignorable_code_point
+check_PROGRAMS += test-pr_default_ignorable_code_point
+test_pr_default_ignorable_code_point_SOURCES = unictype/test-pr_default_ignorable_code_point.c
+
+EXTRA_DIST += unictype/test-pr_default_ignorable_code_point.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-default-ignorable-code-point-tests
+
+## begin gnulib module unictype/property-deprecated-tests
+
+TESTS += test-pr_deprecated
+check_PROGRAMS += test-pr_deprecated
+test_pr_deprecated_SOURCES = unictype/test-pr_deprecated.c
+
+EXTRA_DIST += unictype/test-pr_deprecated.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-deprecated-tests
+
+## begin gnulib module unictype/property-diacritic-tests
+
+TESTS += test-pr_diacritic
+check_PROGRAMS += test-pr_diacritic
+test_pr_diacritic_SOURCES = unictype/test-pr_diacritic.c
+
+EXTRA_DIST += unictype/test-pr_diacritic.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-diacritic-tests
+
+## begin gnulib module unictype/property-extender-tests
+
+TESTS += test-pr_extender
+check_PROGRAMS += test-pr_extender
+test_pr_extender_SOURCES = unictype/test-pr_extender.c
+
+EXTRA_DIST += unictype/test-pr_extender.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-extender-tests
+
+## begin gnulib module unictype/property-format-control-tests
+
+TESTS += test-pr_format_control
+check_PROGRAMS += test-pr_format_control
+test_pr_format_control_SOURCES = unictype/test-pr_format_control.c
+
+EXTRA_DIST += unictype/test-pr_format_control.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-format-control-tests
+
+## begin gnulib module unictype/property-grapheme-base-tests
+
+TESTS += test-pr_grapheme_base
+check_PROGRAMS += test-pr_grapheme_base
+test_pr_grapheme_base_SOURCES = unictype/test-pr_grapheme_base.c
+
+EXTRA_DIST += unictype/test-pr_grapheme_base.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-grapheme-base-tests
+
+## begin gnulib module unictype/property-grapheme-extend-tests
+
+TESTS += test-pr_grapheme_extend
+check_PROGRAMS += test-pr_grapheme_extend
+test_pr_grapheme_extend_SOURCES = unictype/test-pr_grapheme_extend.c
+
+EXTRA_DIST += unictype/test-pr_grapheme_extend.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-grapheme-extend-tests
+
+## begin gnulib module unictype/property-grapheme-link-tests
+
+TESTS += test-pr_grapheme_link
+check_PROGRAMS += test-pr_grapheme_link
+test_pr_grapheme_link_SOURCES = unictype/test-pr_grapheme_link.c
+
+EXTRA_DIST += unictype/test-pr_grapheme_link.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-grapheme-link-tests
+
+## begin gnulib module unictype/property-hex-digit-tests
+
+TESTS += test-pr_hex_digit
+check_PROGRAMS += test-pr_hex_digit
+test_pr_hex_digit_SOURCES = unictype/test-pr_hex_digit.c
+
+EXTRA_DIST += unictype/test-pr_hex_digit.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-hex-digit-tests
+
+## begin gnulib module unictype/property-hyphen-tests
+
+TESTS += test-pr_hyphen
+check_PROGRAMS += test-pr_hyphen
+test_pr_hyphen_SOURCES = unictype/test-pr_hyphen.c
+
+EXTRA_DIST += unictype/test-pr_hyphen.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-hyphen-tests
+
+## begin gnulib module unictype/property-id-continue-tests
+
+TESTS += test-pr_id_continue
+check_PROGRAMS += test-pr_id_continue
+test_pr_id_continue_SOURCES = unictype/test-pr_id_continue.c
+
+EXTRA_DIST += unictype/test-pr_id_continue.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-id-continue-tests
+
+## begin gnulib module unictype/property-id-start-tests
+
+TESTS += test-pr_id_start
+check_PROGRAMS += test-pr_id_start
+test_pr_id_start_SOURCES = unictype/test-pr_id_start.c
+
+EXTRA_DIST += unictype/test-pr_id_start.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-id-start-tests
+
+## begin gnulib module unictype/property-ideographic-tests
+
+TESTS += test-pr_ideographic
+check_PROGRAMS += test-pr_ideographic
+test_pr_ideographic_SOURCES = unictype/test-pr_ideographic.c
+
+EXTRA_DIST += unictype/test-pr_ideographic.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-ideographic-tests
+
+## begin gnulib module unictype/property-ids-binary-operator-tests
+
+TESTS += test-pr_ids_binary_operator
+check_PROGRAMS += test-pr_ids_binary_operator
+test_pr_ids_binary_operator_SOURCES = unictype/test-pr_ids_binary_operator.c
+
+EXTRA_DIST += unictype/test-pr_ids_binary_operator.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-ids-binary-operator-tests
+
+## begin gnulib module unictype/property-ids-trinary-operator-tests
+
+TESTS += test-pr_ids_trinary_operator
+check_PROGRAMS += test-pr_ids_trinary_operator
+test_pr_ids_trinary_operator_SOURCES = unictype/test-pr_ids_trinary_operator.c
+
+EXTRA_DIST += unictype/test-pr_ids_trinary_operator.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-ids-trinary-operator-tests
+
+## begin gnulib module unictype/property-ignorable-control-tests
+
+TESTS += test-pr_ignorable_control
+check_PROGRAMS += test-pr_ignorable_control
+test_pr_ignorable_control_SOURCES = unictype/test-pr_ignorable_control.c
+
+EXTRA_DIST += unictype/test-pr_ignorable_control.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-ignorable-control-tests
+
+## begin gnulib module unictype/property-iso-control-tests
+
+TESTS += test-pr_iso_control
+check_PROGRAMS += test-pr_iso_control
+test_pr_iso_control_SOURCES = unictype/test-pr_iso_control.c
+
+EXTRA_DIST += unictype/test-pr_iso_control.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-iso-control-tests
+
+## begin gnulib module unictype/property-join-control-tests
+
+TESTS += test-pr_join_control
+check_PROGRAMS += test-pr_join_control
+test_pr_join_control_SOURCES = unictype/test-pr_join_control.c
+
+EXTRA_DIST += unictype/test-pr_join_control.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-join-control-tests
+
+## begin gnulib module unictype/property-left-of-pair-tests
+
+TESTS += test-pr_left_of_pair
+check_PROGRAMS += test-pr_left_of_pair
+test_pr_left_of_pair_SOURCES = unictype/test-pr_left_of_pair.c
+
+EXTRA_DIST += unictype/test-pr_left_of_pair.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-left-of-pair-tests
+
+## begin gnulib module unictype/property-line-separator-tests
+
+TESTS += test-pr_line_separator
+check_PROGRAMS += test-pr_line_separator
+test_pr_line_separator_SOURCES = unictype/test-pr_line_separator.c
+
+EXTRA_DIST += unictype/test-pr_line_separator.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-line-separator-tests
+
+## begin gnulib module unictype/property-logical-order-exception-tests
+
+TESTS += test-pr_logical_order_exception
+check_PROGRAMS += test-pr_logical_order_exception
+test_pr_logical_order_exception_SOURCES = unictype/test-pr_logical_order_exception.c
+
+EXTRA_DIST += unictype/test-pr_logical_order_exception.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-logical-order-exception-tests
+
+## begin gnulib module unictype/property-lowercase-tests
+
+TESTS += test-pr_lowercase
+check_PROGRAMS += test-pr_lowercase
+test_pr_lowercase_SOURCES = unictype/test-pr_lowercase.c
+
+EXTRA_DIST += unictype/test-pr_lowercase.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-lowercase-tests
+
+## begin gnulib module unictype/property-math-tests
+
+TESTS += test-pr_math
+check_PROGRAMS += test-pr_math
+test_pr_math_SOURCES = unictype/test-pr_math.c
+
+EXTRA_DIST += unictype/test-pr_math.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-math-tests
+
+## begin gnulib module unictype/property-non-break-tests
+
+TESTS += test-pr_non_break
+check_PROGRAMS += test-pr_non_break
+test_pr_non_break_SOURCES = unictype/test-pr_non_break.c
+
+EXTRA_DIST += unictype/test-pr_non_break.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-non-break-tests
+
+## begin gnulib module unictype/property-not-a-character-tests
+
+TESTS += test-pr_not_a_character
+check_PROGRAMS += test-pr_not_a_character
+test_pr_not_a_character_SOURCES = unictype/test-pr_not_a_character.c
+
+EXTRA_DIST += unictype/test-pr_not_a_character.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-not-a-character-tests
+
+## begin gnulib module unictype/property-numeric-tests
+
+TESTS += test-pr_numeric
+check_PROGRAMS += test-pr_numeric
+test_pr_numeric_SOURCES = unictype/test-pr_numeric.c
+
+EXTRA_DIST += unictype/test-pr_numeric.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-numeric-tests
+
+## begin gnulib module unictype/property-other-alphabetic-tests
+
+TESTS += test-pr_other_alphabetic
+check_PROGRAMS += test-pr_other_alphabetic
+test_pr_other_alphabetic_SOURCES = unictype/test-pr_other_alphabetic.c
+
+EXTRA_DIST += unictype/test-pr_other_alphabetic.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-other-alphabetic-tests
+
+## begin gnulib module unictype/property-other-default-ignorable-code-point-tests
+
+TESTS += test-pr_other_default_ignorable_code_point
+check_PROGRAMS += test-pr_other_default_ignorable_code_point
+test_pr_other_default_ignorable_code_point_SOURCES = unictype/test-pr_other_default_ignorable_code_point.c
+
+EXTRA_DIST += unictype/test-pr_other_default_ignorable_code_point.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-other-default-ignorable-code-point-tests
+
+## begin gnulib module unictype/property-other-grapheme-extend-tests
+
+TESTS += test-pr_other_grapheme_extend
+check_PROGRAMS += test-pr_other_grapheme_extend
+test_pr_other_grapheme_extend_SOURCES = unictype/test-pr_other_grapheme_extend.c
+
+EXTRA_DIST += unictype/test-pr_other_grapheme_extend.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-other-grapheme-extend-tests
+
+## begin gnulib module unictype/property-other-id-continue-tests
+
+TESTS += test-pr_other_id_continue
+check_PROGRAMS += test-pr_other_id_continue
+test_pr_other_id_continue_SOURCES = unictype/test-pr_other_id_continue.c
+
+EXTRA_DIST += unictype/test-pr_other_id_continue.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-other-id-continue-tests
+
+## begin gnulib module unictype/property-other-id-start-tests
+
+TESTS += test-pr_other_id_start
+check_PROGRAMS += test-pr_other_id_start
+test_pr_other_id_start_SOURCES = unictype/test-pr_other_id_start.c
+
+EXTRA_DIST += unictype/test-pr_other_id_start.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-other-id-start-tests
+
+## begin gnulib module unictype/property-other-lowercase-tests
+
+TESTS += test-pr_other_lowercase
+check_PROGRAMS += test-pr_other_lowercase
+test_pr_other_lowercase_SOURCES = unictype/test-pr_other_lowercase.c
+
+EXTRA_DIST += unictype/test-pr_other_lowercase.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-other-lowercase-tests
+
+## begin gnulib module unictype/property-other-math-tests
+
+TESTS += test-pr_other_math
+check_PROGRAMS += test-pr_other_math
+test_pr_other_math_SOURCES = unictype/test-pr_other_math.c
+
+EXTRA_DIST += unictype/test-pr_other_math.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-other-math-tests
+
+## begin gnulib module unictype/property-other-uppercase-tests
+
+TESTS += test-pr_other_uppercase
+check_PROGRAMS += test-pr_other_uppercase
+test_pr_other_uppercase_SOURCES = unictype/test-pr_other_uppercase.c
+
+EXTRA_DIST += unictype/test-pr_other_uppercase.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-other-uppercase-tests
+
+## begin gnulib module unictype/property-paired-punctuation-tests
+
+TESTS += test-pr_paired_punctuation
+check_PROGRAMS += test-pr_paired_punctuation
+test_pr_paired_punctuation_SOURCES = unictype/test-pr_paired_punctuation.c
+
+EXTRA_DIST += unictype/test-pr_paired_punctuation.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-paired-punctuation-tests
+
+## begin gnulib module unictype/property-paragraph-separator-tests
+
+TESTS += test-pr_paragraph_separator
+check_PROGRAMS += test-pr_paragraph_separator
+test_pr_paragraph_separator_SOURCES = unictype/test-pr_paragraph_separator.c
+
+EXTRA_DIST += unictype/test-pr_paragraph_separator.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-paragraph-separator-tests
+
+## begin gnulib module unictype/property-pattern-syntax-tests
+
+TESTS += test-pr_pattern_syntax
+check_PROGRAMS += test-pr_pattern_syntax
+test_pr_pattern_syntax_SOURCES = unictype/test-pr_pattern_syntax.c
+
+EXTRA_DIST += unictype/test-pr_pattern_syntax.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-pattern-syntax-tests
+
+## begin gnulib module unictype/property-pattern-white-space-tests
+
+TESTS += test-pr_pattern_white_space
+check_PROGRAMS += test-pr_pattern_white_space
+test_pr_pattern_white_space_SOURCES = unictype/test-pr_pattern_white_space.c
+
+EXTRA_DIST += unictype/test-pr_pattern_white_space.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-pattern-white-space-tests
+
+## begin gnulib module unictype/property-private-use-tests
+
+TESTS += test-pr_private_use
+check_PROGRAMS += test-pr_private_use
+test_pr_private_use_SOURCES = unictype/test-pr_private_use.c
+
+EXTRA_DIST += unictype/test-pr_private_use.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-private-use-tests
+
+## begin gnulib module unictype/property-punctuation-tests
+
+TESTS += test-pr_punctuation
+check_PROGRAMS += test-pr_punctuation
+test_pr_punctuation_SOURCES = unictype/test-pr_punctuation.c
+
+EXTRA_DIST += unictype/test-pr_punctuation.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-punctuation-tests
+
+## begin gnulib module unictype/property-quotation-mark-tests
+
+TESTS += test-pr_quotation_mark
+check_PROGRAMS += test-pr_quotation_mark
+test_pr_quotation_mark_SOURCES = unictype/test-pr_quotation_mark.c
+
+EXTRA_DIST += unictype/test-pr_quotation_mark.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-quotation-mark-tests
+
+## begin gnulib module unictype/property-radical-tests
+
+TESTS += test-pr_radical
+check_PROGRAMS += test-pr_radical
+test_pr_radical_SOURCES = unictype/test-pr_radical.c
+
+EXTRA_DIST += unictype/test-pr_radical.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-radical-tests
+
+## begin gnulib module unictype/property-sentence-terminal-tests
+
+TESTS += test-pr_sentence_terminal
+check_PROGRAMS += test-pr_sentence_terminal
+test_pr_sentence_terminal_SOURCES = unictype/test-pr_sentence_terminal.c
+
+EXTRA_DIST += unictype/test-pr_sentence_terminal.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-sentence-terminal-tests
+
+## begin gnulib module unictype/property-soft-dotted-tests
+
+TESTS += test-pr_soft_dotted
+check_PROGRAMS += test-pr_soft_dotted
+test_pr_soft_dotted_SOURCES = unictype/test-pr_soft_dotted.c
+
+EXTRA_DIST += unictype/test-pr_soft_dotted.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-soft-dotted-tests
+
+## begin gnulib module unictype/property-space-tests
+
+TESTS += test-pr_space
+check_PROGRAMS += test-pr_space
+test_pr_space_SOURCES = unictype/test-pr_space.c
+
+EXTRA_DIST += unictype/test-pr_space.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-space-tests
+
+## begin gnulib module unictype/property-terminal-punctuation-tests
+
+TESTS += test-pr_terminal_punctuation
+check_PROGRAMS += test-pr_terminal_punctuation
+test_pr_terminal_punctuation_SOURCES = unictype/test-pr_terminal_punctuation.c
+
+EXTRA_DIST += unictype/test-pr_terminal_punctuation.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-terminal-punctuation-tests
+
+## begin gnulib module unictype/property-test-tests
+
+TESTS += test-pr_test
+check_PROGRAMS += test-pr_test
+test_pr_test_SOURCES = unictype/test-pr_test.c
+
+EXTRA_DIST += unictype/test-pr_test.c
+
+## end gnulib module unictype/property-test-tests
+
+## begin gnulib module unictype/property-titlecase-tests
+
+TESTS += test-pr_titlecase
+check_PROGRAMS += test-pr_titlecase
+test_pr_titlecase_SOURCES = unictype/test-pr_titlecase.c
+
+EXTRA_DIST += unictype/test-pr_titlecase.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-titlecase-tests
+
+## begin gnulib module unictype/property-unassigned-code-value-tests
+
+TESTS += test-pr_unassigned_code_value
+check_PROGRAMS += test-pr_unassigned_code_value
+test_pr_unassigned_code_value_SOURCES = unictype/test-pr_unassigned_code_value.c
+
+EXTRA_DIST += unictype/test-pr_unassigned_code_value.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-unassigned-code-value-tests
+
+## begin gnulib module unictype/property-unified-ideograph-tests
+
+TESTS += test-pr_unified_ideograph
+check_PROGRAMS += test-pr_unified_ideograph
+test_pr_unified_ideograph_SOURCES = unictype/test-pr_unified_ideograph.c
+
+EXTRA_DIST += unictype/test-pr_unified_ideograph.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-unified-ideograph-tests
+
+## begin gnulib module unictype/property-uppercase-tests
+
+TESTS += test-pr_uppercase
+check_PROGRAMS += test-pr_uppercase
+test_pr_uppercase_SOURCES = unictype/test-pr_uppercase.c
+
+EXTRA_DIST += unictype/test-pr_uppercase.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-uppercase-tests
+
+## begin gnulib module unictype/property-variation-selector-tests
+
+TESTS += test-pr_variation_selector
+check_PROGRAMS += test-pr_variation_selector
+test_pr_variation_selector_SOURCES = unictype/test-pr_variation_selector.c
+
+EXTRA_DIST += unictype/test-pr_variation_selector.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-variation-selector-tests
+
+## begin gnulib module unictype/property-white-space-tests
+
+TESTS += test-pr_white_space
+check_PROGRAMS += test-pr_white_space
+test_pr_white_space_SOURCES = unictype/test-pr_white_space.c
+
+EXTRA_DIST += unictype/test-pr_white_space.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-white-space-tests
+
+## begin gnulib module unictype/property-xid-continue-tests
+
+TESTS += test-pr_xid_continue
+check_PROGRAMS += test-pr_xid_continue
+test_pr_xid_continue_SOURCES = unictype/test-pr_xid_continue.c
+
+EXTRA_DIST += unictype/test-pr_xid_continue.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-xid-continue-tests
+
+## begin gnulib module unictype/property-xid-start-tests
+
+TESTS += test-pr_xid_start
+check_PROGRAMS += test-pr_xid_start
+test_pr_xid_start_SOURCES = unictype/test-pr_xid_start.c
+
+EXTRA_DIST += unictype/test-pr_xid_start.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-xid-start-tests
+
+## begin gnulib module unictype/property-zero-width-tests
+
+TESTS += test-pr_zero_width
+check_PROGRAMS += test-pr_zero_width
+test_pr_zero_width_SOURCES = unictype/test-pr_zero_width.c
+
+EXTRA_DIST += unictype/test-pr_zero_width.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/property-zero-width-tests
+
+## begin gnulib module unictype/scripts-tests
+
+TESTS += test-scripts
+check_PROGRAMS += test-scripts
+test_scripts_SOURCES = unictype/test-scripts.c
+
+EXTRA_DIST += unictype/test-scripts.c
+
+## end gnulib module unictype/scripts-tests
+
+## begin gnulib module unictype/syntax-c-ident-tests
+
+TESTS += test-sy_c_ident
+check_PROGRAMS += test-sy_c_ident
+test_sy_c_ident_SOURCES = unictype/test-sy_c_ident.c
+
+EXTRA_DIST += unictype/test-sy_c_ident.c
+
+## end gnulib module unictype/syntax-c-ident-tests
+
+## begin gnulib module unictype/syntax-c-whitespace-tests
+
+TESTS += test-sy_c_whitespace
+check_PROGRAMS += test-sy_c_whitespace
+test_sy_c_whitespace_SOURCES = unictype/test-sy_c_whitespace.c
+
+EXTRA_DIST += unictype/test-sy_c_whitespace.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/syntax-c-whitespace-tests
+
+## begin gnulib module unictype/syntax-java-ident-tests
+
+TESTS += test-sy_java_ident
+check_PROGRAMS += test-sy_java_ident
+test_sy_java_ident_SOURCES = unictype/test-sy_java_ident.c
+
+EXTRA_DIST += unictype/test-sy_java_ident.c
+
+## end gnulib module unictype/syntax-java-ident-tests
+
+## begin gnulib module unictype/syntax-java-whitespace-tests
+
+TESTS += test-sy_java_whitespace
+check_PROGRAMS += test-sy_java_whitespace
+test_sy_java_whitespace_SOURCES = unictype/test-sy_java_whitespace.c
+
+EXTRA_DIST += unictype/test-sy_java_whitespace.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h
+
+## end gnulib module unictype/syntax-java-whitespace-tests
+
+## begin gnulib module unilbrk/u16-possible-linebreaks-tests
+
+TESTS += test-u16-possible-linebreaks
+check_PROGRAMS += test-u16-possible-linebreaks
+test_u16_possible_linebreaks_SOURCES = unilbrk/test-u16-possible-linebreaks.c
+
+EXTRA_DIST += unilbrk/test-u16-possible-linebreaks.c
+
+## end gnulib module unilbrk/u16-possible-linebreaks-tests
+
+## begin gnulib module unilbrk/u16-width-linebreaks-tests
+
+TESTS += test-u16-width-linebreaks
+check_PROGRAMS += test-u16-width-linebreaks
+test_u16_width_linebreaks_SOURCES = unilbrk/test-u16-width-linebreaks.c
+
+EXTRA_DIST += unilbrk/test-u16-width-linebreaks.c
+
+## end gnulib module unilbrk/u16-width-linebreaks-tests
+
+## begin gnulib module unilbrk/u32-possible-linebreaks-tests
+
+TESTS += test-u32-possible-linebreaks
+check_PROGRAMS += test-u32-possible-linebreaks
+test_u32_possible_linebreaks_SOURCES = unilbrk/test-u32-possible-linebreaks.c
+
+EXTRA_DIST += unilbrk/test-u32-possible-linebreaks.c
+
+## end gnulib module unilbrk/u32-possible-linebreaks-tests
+
+## begin gnulib module unilbrk/u32-width-linebreaks-tests
+
+TESTS += test-u32-width-linebreaks
+check_PROGRAMS += test-u32-width-linebreaks
+test_u32_width_linebreaks_SOURCES = unilbrk/test-u32-width-linebreaks.c
+
+EXTRA_DIST += unilbrk/test-u32-width-linebreaks.c
+
+## end gnulib module unilbrk/u32-width-linebreaks-tests
+
+## begin gnulib module unilbrk/u8-possible-linebreaks-tests
+
+TESTS += test-u8-possible-linebreaks
+check_PROGRAMS += test-u8-possible-linebreaks
+test_u8_possible_linebreaks_SOURCES = unilbrk/test-u8-possible-linebreaks.c
+
+EXTRA_DIST += unilbrk/test-u8-possible-linebreaks.c
+
+## end gnulib module unilbrk/u8-possible-linebreaks-tests
+
+## begin gnulib module unilbrk/u8-width-linebreaks-tests
+
+TESTS += test-u8-width-linebreaks
+check_PROGRAMS += test-u8-width-linebreaks
+test_u8_width_linebreaks_SOURCES = unilbrk/test-u8-width-linebreaks.c
+
+EXTRA_DIST += unilbrk/test-u8-width-linebreaks.c
+
+## end gnulib module unilbrk/u8-width-linebreaks-tests
+
+## begin gnulib module unilbrk/ulc-possible-linebreaks-tests
+
+TESTS += test-ulc-possible-linebreaks
+check_PROGRAMS += test-ulc-possible-linebreaks
+test_ulc_possible_linebreaks_SOURCES = unilbrk/test-ulc-possible-linebreaks.c
+test_ulc_possible_linebreaks_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += unilbrk/test-ulc-possible-linebreaks.c
+
+## end gnulib module unilbrk/ulc-possible-linebreaks-tests
+
+## begin gnulib module unilbrk/ulc-width-linebreaks-tests
+
+TESTS += test-ulc-width-linebreaks
+check_PROGRAMS += test-ulc-width-linebreaks
+test_ulc_width_linebreaks_SOURCES = unilbrk/test-ulc-width-linebreaks.c
+test_ulc_width_linebreaks_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += unilbrk/test-ulc-width-linebreaks.c
+
+## end gnulib module unilbrk/ulc-width-linebreaks-tests
+
+## begin gnulib module uniname/uniname-tests
+
+TESTS += uniname/test-uninames.sh
+TESTS_ENVIRONMENT += EXEEXT='@EXEEXT@' srcdir='$(srcdir)'
+check_PROGRAMS += test-uninames
+test_uninames_SOURCES = uniname/test-uninames.c
+test_uninames_LDADD = $(LDADD) @LIBINTL@
+
+EXTRA_DIST += uniname/test-uninames.sh uniname/test-uninames.c uniname/UnicodeDataNames.txt
+
+## end gnulib module uniname/uniname-tests
+
+## begin gnulib module uninorm/canonical-decomposition-tests
+
+TESTS += test-canonical-decomposition
+check_PROGRAMS += test-canonical-decomposition
+test_canonical_decomposition_SOURCES = uninorm/test-canonical-decomposition.c
+
+EXTRA_DIST += uninorm/test-canonical-decomposition.c
+
+## end gnulib module uninorm/canonical-decomposition-tests
+
+## begin gnulib module uninorm/compat-decomposition-tests
+
+TESTS += test-compat-decomposition
+check_PROGRAMS += test-compat-decomposition
+test_compat_decomposition_SOURCES = uninorm/test-compat-decomposition.c
+
+EXTRA_DIST += uninorm/test-compat-decomposition.c
+
+## end gnulib module uninorm/compat-decomposition-tests
+
+## begin gnulib module uninorm/composition-tests
+
+TESTS += test-composition
+check_PROGRAMS += test-composition
+test_composition_SOURCES = uninorm/test-composition.c
+
+EXTRA_DIST += uninorm/test-composition.c
+
+## end gnulib module uninorm/composition-tests
+
+## begin gnulib module uninorm/decomposing-form-tests
+
+TESTS += test-decomposing-form
+check_PROGRAMS += test-decomposing-form
+test_decomposing_form_SOURCES = uninorm/test-decomposing-form.c
+
+EXTRA_DIST += uninorm/test-decomposing-form.c
+
+## end gnulib module uninorm/decomposing-form-tests
+
+## begin gnulib module uninorm/decomposition-tests
+
+TESTS += test-decomposition
+check_PROGRAMS += test-decomposition
+test_decomposition_SOURCES = uninorm/test-decomposition.c
+
+EXTRA_DIST += uninorm/test-decomposition.c
+
+## end gnulib module uninorm/decomposition-tests
+
+## begin gnulib module uninorm/filter-tests
+
+TESTS += test-uninorm-filter-nfc
+check_PROGRAMS += test-uninorm-filter-nfc
+test_uninorm_filter_nfc_SOURCES = uninorm/test-uninorm-filter-nfc.c
+
+EXTRA_DIST += uninorm/test-uninorm-filter-nfc.c
+
+## end gnulib module uninorm/filter-tests
+
+## begin gnulib module uninorm/nfc-tests
+
+TESTS += test-nfc uninorm/test-u32-nfc-big.sh
+check_PROGRAMS += test-nfc test-u32-nfc-big
+test_nfc_SOURCES = \
+ uninorm/test-nfc.c \
+ uninorm/test-u8-nfc.c \
+ uninorm/test-u16-nfc.c \
+ uninorm/test-u32-nfc.c
+test_u32_nfc_big_SOURCES = \
+ uninorm/test-u32-nfc-big.c \
+ uninorm/test-u32-normalize-big.c
+test_u32_nfc_big_LDADD = $(LDADD) @LIBINTL@
+EXTRA_DIST += uninorm/test-nfc.c uninorm/test-u8-nfc.c uninorm/test-u16-nfc.c uninorm/test-u32-nfc.c uninorm/test-u32-nfc-big.sh uninorm/test-u32-nfc-big.c uninorm/test-u32-normalize-big.h uninorm/test-u32-normalize-big.c uninorm/NormalizationTest.txt
+
+## end gnulib module uninorm/nfc-tests
+
+## begin gnulib module uninorm/nfd-tests
+
+TESTS += test-nfd uninorm/test-u32-nfd-big.sh
+check_PROGRAMS += test-nfd test-u32-nfd-big
+test_nfd_SOURCES = \
+ uninorm/test-nfd.c \
+ uninorm/test-u8-nfd.c \
+ uninorm/test-u16-nfd.c \
+ uninorm/test-u32-nfd.c
+test_u32_nfd_big_SOURCES = \
+ uninorm/test-u32-nfd-big.c \
+ uninorm/test-u32-normalize-big.c
+test_u32_nfd_big_LDADD = $(LDADD) @LIBINTL@
+
+EXTRA_DIST += uninorm/test-nfd.c uninorm/test-u8-nfd.c uninorm/test-u16-nfd.c uninorm/test-u32-nfd.c uninorm/test-u32-nfd-big.sh uninorm/test-u32-nfd-big.c uninorm/test-u32-normalize-big.h uninorm/test-u32-normalize-big.c uninorm/NormalizationTest.txt
+
+## end gnulib module uninorm/nfd-tests
+
+## begin gnulib module uninorm/nfkc-tests
+
+TESTS += test-nfkc uninorm/test-u32-nfkc-big.sh
+check_PROGRAMS += test-nfkc test-u32-nfkc-big
+test_nfkc_SOURCES = \
+ uninorm/test-nfkc.c \
+ uninorm/test-u8-nfkc.c \
+ uninorm/test-u16-nfkc.c \
+ uninorm/test-u32-nfkc.c
+test_u32_nfkc_big_SOURCES = \
+ uninorm/test-u32-nfkc-big.c \
+ uninorm/test-u32-normalize-big.c
+test_u32_nfkc_big_LDADD = $(LDADD) @LIBINTL@
+
+EXTRA_DIST += uninorm/test-nfkc.c uninorm/test-u8-nfkc.c uninorm/test-u16-nfkc.c uninorm/test-u32-nfkc.c uninorm/test-u32-nfkc-big.sh uninorm/test-u32-nfkc-big.c uninorm/test-u32-normalize-big.h uninorm/test-u32-normalize-big.c uninorm/NormalizationTest.txt
+
+## end gnulib module uninorm/nfkc-tests
+
+## begin gnulib module uninorm/nfkd-tests
+
+TESTS += test-nfkd uninorm/test-u32-nfkd-big.sh
+check_PROGRAMS += test-nfkd test-u32-nfkd-big
+test_nfkd_SOURCES = \
+ uninorm/test-nfkd.c \
+ uninorm/test-u8-nfkd.c \
+ uninorm/test-u16-nfkd.c \
+ uninorm/test-u32-nfkd.c
+test_u32_nfkd_big_SOURCES = \
+ uninorm/test-u32-nfkd-big.c \
+ uninorm/test-u32-normalize-big.c
+test_u32_nfkd_big_LDADD = $(LDADD) @LIBINTL@
+
+EXTRA_DIST += uninorm/test-nfkd.c uninorm/test-u8-nfkd.c uninorm/test-u16-nfkd.c uninorm/test-u32-nfkd.c uninorm/test-u32-nfkd-big.sh uninorm/test-u32-nfkd-big.c uninorm/test-u32-normalize-big.h uninorm/test-u32-normalize-big.c uninorm/NormalizationTest.txt
+
+## end gnulib module uninorm/nfkd-tests
+
+## begin gnulib module uninorm/u16-normcmp-tests
+
+TESTS += test-u16-normcmp
+check_PROGRAMS += test-u16-normcmp
+test_u16_normcmp_SOURCES = uninorm/test-u16-normcmp.c
+
+EXTRA_DIST += uninorm/test-u16-normcmp.c uninorm/test-u16-normcmp.h
+
+## end gnulib module uninorm/u16-normcmp-tests
+
+## begin gnulib module uninorm/u16-normcoll-tests
+
+TESTS += test-u16-normcoll
+check_PROGRAMS += test-u16-normcoll
+test_u16_normcoll_SOURCES = uninorm/test-u16-normcoll.c
+test_u16_normcoll_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += uninorm/test-u16-normcoll.c uninorm/test-u16-normcmp.h
+
+## end gnulib module uninorm/u16-normcoll-tests
+
+## begin gnulib module uninorm/u32-normcmp-tests
+
+TESTS += test-u32-normcmp
+check_PROGRAMS += test-u32-normcmp
+test_u32_normcmp_SOURCES = uninorm/test-u32-normcmp.c
+
+EXTRA_DIST += uninorm/test-u32-normcmp.c uninorm/test-u32-normcmp.h
+
+## end gnulib module uninorm/u32-normcmp-tests
+
+## begin gnulib module uninorm/u32-normcoll-tests
+
+TESTS += test-u32-normcoll
+check_PROGRAMS += test-u32-normcoll
+test_u32_normcoll_SOURCES = uninorm/test-u32-normcoll.c
+test_u32_normcoll_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += uninorm/test-u32-normcoll.c uninorm/test-u32-normcmp.h
+
+## end gnulib module uninorm/u32-normcoll-tests
+
+## begin gnulib module uninorm/u8-normcmp-tests
+
+TESTS += test-u8-normcmp
+check_PROGRAMS += test-u8-normcmp
+test_u8_normcmp_SOURCES = uninorm/test-u8-normcmp.c
+
+EXTRA_DIST += uninorm/test-u8-normcmp.c uninorm/test-u8-normcmp.h
+
+## end gnulib module uninorm/u8-normcmp-tests
+
+## begin gnulib module uninorm/u8-normcoll-tests
+
+TESTS += test-u8-normcoll
+check_PROGRAMS += test-u8-normcoll
+test_u8_normcoll_SOURCES = uninorm/test-u8-normcoll.c
+test_u8_normcoll_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += uninorm/test-u8-normcoll.c uninorm/test-u8-normcmp.h
+
+## end gnulib module uninorm/u8-normcoll-tests
+
+## begin gnulib module unistd-tests
+
+TESTS += test-unistd
+check_PROGRAMS += test-unistd
+
+EXTRA_DIST += test-unistd.c
+
+## end gnulib module unistd-tests
+
+## begin gnulib module unistdio/u16-asnprintf-tests
+
+TESTS += test-u16-asnprintf1
+check_PROGRAMS += test-u16-asnprintf1
+test_u16_asnprintf1_SOURCES = unistdio/test-u16-asnprintf1.c
+test_u16_asnprintf1_LDADD = $(LDADD) @LIBICONV@
+EXTRA_DIST += unistdio/test-u16-asnprintf1.c unistdio/test-u16-asnprintf1.h unistdio/test-u16-printf1.h
+
+## end gnulib module unistdio/u16-asnprintf-tests
+
+## begin gnulib module unistdio/u16-vasnprintf-tests
+
+TESTS += test-u16-vasnprintf1 unistdio/test-u16-vasnprintf2.sh unistdio/test-u16-vasnprintf3.sh
+TESTS_ENVIRONMENT += EXEEXT='@EXEEXT@' LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
+check_PROGRAMS += test-u16-vasnprintf1 test-u16-vasnprintf2 test-u16-vasnprintf3
+test_u16_vasnprintf1_SOURCES = unistdio/test-u16-vasnprintf1.c
+test_u16_vasnprintf1_LDADD = $(LDADD) @LIBICONV@
+test_u16_vasnprintf2_SOURCES = unistdio/test-u16-vasnprintf2.c
+test_u16_vasnprintf2_LDADD = $(LDADD) @LIBICONV@
+test_u16_vasnprintf3_SOURCES = unistdio/test-u16-vasnprintf3.c
+test_u16_vasnprintf3_LDADD = $(LDADD) @LIBICONV@
+EXTRA_DIST += unistdio/test-u16-vasnprintf1.c unistdio/test-u16-asnprintf1.h unistdio/test-u16-printf1.h unistdio/test-u16-vasnprintf2.sh unistdio/test-u16-vasnprintf2.c unistdio/test-u16-vasnprintf3.sh unistdio/test-u16-vasnprintf3.c
+
+## end gnulib module unistdio/u16-vasnprintf-tests
+
+## begin gnulib module unistdio/u16-vasprintf-tests
+
+TESTS += test-u16-vasprintf1
+check_PROGRAMS += test-u16-vasprintf1
+test_u16_vasprintf1_SOURCES = unistdio/test-u16-vasprintf1.c
+test_u16_vasprintf1_LDADD = $(LDADD) @LIBICONV@
+EXTRA_DIST += unistdio/test-u16-vasprintf1.c unistdio/test-u16-printf1.h
+
+## end gnulib module unistdio/u16-vasprintf-tests
+
+## begin gnulib module unistdio/u16-vsnprintf-tests
+
+TESTS += test-u16-vsnprintf1
+check_PROGRAMS += test-u16-vsnprintf1
+test_u16_vsnprintf1_SOURCES = unistdio/test-u16-vsnprintf1.c
+test_u16_vsnprintf1_LDADD = $(LDADD) @LIBINTL@ @LIBICONV@
+EXTRA_DIST += unistdio/test-u16-vsnprintf1.c unistdio/test-u16-printf1.h
+
+## end gnulib module unistdio/u16-vsnprintf-tests
+
+## begin gnulib module unistdio/u16-vsprintf-tests
+
+TESTS += test-u16-vsprintf1
+check_PROGRAMS += test-u16-vsprintf1
+test_u16_vsprintf1_SOURCES = unistdio/test-u16-vsprintf1.c
+test_u16_vsprintf1_LDADD = $(LDADD) @LIBINTL@ @LIBICONV@
+EXTRA_DIST += unistdio/test-u16-vsprintf1.c unistdio/test-u16-printf1.h
+
+## end gnulib module unistdio/u16-vsprintf-tests
+
+## begin gnulib module unistdio/u32-asnprintf-tests
+
+TESTS += test-u32-asnprintf1
+check_PROGRAMS += test-u32-asnprintf1
+test_u32_asnprintf1_SOURCES = unistdio/test-u32-asnprintf1.c
+test_u32_asnprintf1_LDADD = $(LDADD) @LIBICONV@
+EXTRA_DIST += unistdio/test-u32-asnprintf1.c unistdio/test-u32-asnprintf1.h unistdio/test-u32-printf1.h
+
+## end gnulib module unistdio/u32-asnprintf-tests
+
+## begin gnulib module unistdio/u32-vasnprintf-tests
+
+TESTS += test-u32-vasnprintf1 unistdio/test-u32-vasnprintf2.sh unistdio/test-u32-vasnprintf3.sh
+TESTS_ENVIRONMENT += EXEEXT='@EXEEXT@' LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
+check_PROGRAMS += test-u32-vasnprintf1 test-u32-vasnprintf2 test-u32-vasnprintf3
+test_u32_vasnprintf1_SOURCES = unistdio/test-u32-vasnprintf1.c
+test_u32_vasnprintf1_LDADD = $(LDADD) @LIBICONV@
+test_u32_vasnprintf2_SOURCES = unistdio/test-u32-vasnprintf2.c
+test_u32_vasnprintf2_LDADD = $(LDADD) @LIBICONV@
+test_u32_vasnprintf3_SOURCES = unistdio/test-u32-vasnprintf3.c
+test_u32_vasnprintf3_LDADD = $(LDADD) @LIBICONV@
+EXTRA_DIST += unistdio/test-u32-vasnprintf1.c unistdio/test-u32-asnprintf1.h unistdio/test-u32-printf1.h unistdio/test-u32-vasnprintf2.sh unistdio/test-u32-vasnprintf2.c unistdio/test-u32-vasnprintf3.sh unistdio/test-u32-vasnprintf3.c
+
+## end gnulib module unistdio/u32-vasnprintf-tests
+
+## begin gnulib module unistdio/u32-vasprintf-tests
+
+TESTS += test-u32-vasprintf1
+check_PROGRAMS += test-u32-vasprintf1
+test_u32_vasprintf1_SOURCES = unistdio/test-u32-vasprintf1.c
+test_u32_vasprintf1_LDADD = $(LDADD) @LIBICONV@
+EXTRA_DIST += unistdio/test-u32-vasprintf1.c unistdio/test-u32-printf1.h
+
+## end gnulib module unistdio/u32-vasprintf-tests
+
+## begin gnulib module unistdio/u32-vsnprintf-tests
+
+TESTS += test-u32-vsnprintf1
+check_PROGRAMS += test-u32-vsnprintf1
+test_u32_vsnprintf1_SOURCES = unistdio/test-u32-vsnprintf1.c
+test_u32_vsnprintf1_LDADD = $(LDADD) @LIBINTL@ @LIBICONV@
+EXTRA_DIST += unistdio/test-u32-vsnprintf1.c unistdio/test-u32-printf1.h
+
+## end gnulib module unistdio/u32-vsnprintf-tests
+
+## begin gnulib module unistdio/u32-vsprintf-tests
+
+TESTS += test-u32-vsprintf1
+check_PROGRAMS += test-u32-vsprintf1
+test_u32_vsprintf1_SOURCES = unistdio/test-u32-vsprintf1.c
+test_u32_vsprintf1_LDADD = $(LDADD) @LIBINTL@ @LIBICONV@
+EXTRA_DIST += unistdio/test-u32-vsprintf1.c unistdio/test-u32-printf1.h
+
+## end gnulib module unistdio/u32-vsprintf-tests
+
+## begin gnulib module unistdio/u8-asnprintf-tests
+
+TESTS += test-u8-asnprintf1
+check_PROGRAMS += test-u8-asnprintf1
+test_u8_asnprintf1_SOURCES = unistdio/test-u8-asnprintf1.c
+test_u8_asnprintf1_LDADD = $(LDADD) @LIBICONV@
+EXTRA_DIST += unistdio/test-u8-asnprintf1.c unistdio/test-u8-asnprintf1.h unistdio/test-u8-printf1.h
+
+## end gnulib module unistdio/u8-asnprintf-tests
+
+## begin gnulib module unistdio/u8-vasnprintf-tests
+
+TESTS += test-u8-vasnprintf1 unistdio/test-u8-vasnprintf2.sh unistdio/test-u8-vasnprintf3.sh
+TESTS_ENVIRONMENT += EXEEXT='@EXEEXT@' LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
+check_PROGRAMS += test-u8-vasnprintf1 test-u8-vasnprintf2 test-u8-vasnprintf3
+test_u8_vasnprintf1_SOURCES = unistdio/test-u8-vasnprintf1.c
+test_u8_vasnprintf1_LDADD = $(LDADD) @LIBICONV@
+test_u8_vasnprintf2_SOURCES = unistdio/test-u8-vasnprintf2.c
+test_u8_vasnprintf2_LDADD = $(LDADD) @LIBICONV@
+test_u8_vasnprintf3_SOURCES = unistdio/test-u8-vasnprintf3.c
+test_u8_vasnprintf3_LDADD = $(LDADD) @LIBICONV@
+EXTRA_DIST += unistdio/test-u8-vasnprintf1.c unistdio/test-u8-asnprintf1.h unistdio/test-u8-printf1.h unistdio/test-u8-vasnprintf2.sh unistdio/test-u8-vasnprintf2.c unistdio/test-u8-vasnprintf3.sh unistdio/test-u8-vasnprintf3.c
+
+## end gnulib module unistdio/u8-vasnprintf-tests
+
+## begin gnulib module unistdio/u8-vasprintf-tests
+
+TESTS += test-u8-vasprintf1
+check_PROGRAMS += test-u8-vasprintf1
+test_u8_vasprintf1_SOURCES = unistdio/test-u8-vasprintf1.c
+test_u8_vasprintf1_LDADD = $(LDADD) @LIBICONV@
+EXTRA_DIST += unistdio/test-u8-vasprintf1.c unistdio/test-u8-printf1.h
+
+## end gnulib module unistdio/u8-vasprintf-tests
+
+## begin gnulib module unistdio/u8-vsnprintf-tests
+
+TESTS += test-u8-vsnprintf1
+check_PROGRAMS += test-u8-vsnprintf1
+test_u8_vsnprintf1_SOURCES = unistdio/test-u8-vsnprintf1.c
+test_u8_vsnprintf1_LDADD = $(LDADD) @LIBINTL@ @LIBICONV@
+EXTRA_DIST += unistdio/test-u8-vsnprintf1.c unistdio/test-u8-printf1.h
+
+## end gnulib module unistdio/u8-vsnprintf-tests
+
+## begin gnulib module unistdio/u8-vsprintf-tests
+
+TESTS += test-u8-vsprintf1
+check_PROGRAMS += test-u8-vsprintf1
+test_u8_vsprintf1_SOURCES = unistdio/test-u8-vsprintf1.c
+test_u8_vsprintf1_LDADD = $(LDADD) @LIBINTL@ @LIBICONV@
+EXTRA_DIST += unistdio/test-u8-vsprintf1.c unistdio/test-u8-printf1.h
+
+## end gnulib module unistdio/u8-vsprintf-tests
+
+## begin gnulib module unistdio/ulc-asnprintf-tests
+
+TESTS += test-ulc-asnprintf1
+check_PROGRAMS += test-ulc-asnprintf1
+test_ulc_asnprintf1_SOURCES = unistdio/test-ulc-asnprintf1.c
+test_ulc_asnprintf1_LDADD = $(LDADD) @LIBICONV@
+EXTRA_DIST += unistdio/test-ulc-asnprintf1.c unistdio/test-ulc-asnprintf1.h unistdio/test-ulc-printf1.h
+
+## end gnulib module unistdio/ulc-asnprintf-tests
+
+## begin gnulib module unistdio/ulc-vasnprintf-tests
+
+TESTS += test-ulc-vasnprintf1 unistdio/test-ulc-vasnprintf2.sh unistdio/test-ulc-vasnprintf3.sh
+TESTS_ENVIRONMENT += EXEEXT='@EXEEXT@' LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
+check_PROGRAMS += test-ulc-vasnprintf1 test-ulc-vasnprintf2 test-ulc-vasnprintf3
+test_ulc_vasnprintf1_SOURCES = unistdio/test-ulc-vasnprintf1.c
+test_ulc_vasnprintf1_LDADD = $(LDADD) @LIBICONV@
+test_ulc_vasnprintf2_SOURCES = unistdio/test-ulc-vasnprintf2.c
+test_ulc_vasnprintf2_LDADD = $(LDADD) @LIBICONV@
+test_ulc_vasnprintf3_SOURCES = unistdio/test-ulc-vasnprintf3.c
+test_ulc_vasnprintf3_LDADD = $(LDADD) @LIBICONV@
+EXTRA_DIST += unistdio/test-ulc-vasnprintf1.c unistdio/test-ulc-asnprintf1.h unistdio/test-ulc-printf1.h unistdio/test-ulc-vasnprintf2.sh unistdio/test-ulc-vasnprintf2.c unistdio/test-ulc-vasnprintf3.sh unistdio/test-ulc-vasnprintf3.c
+
+## end gnulib module unistdio/ulc-vasnprintf-tests
+
+## begin gnulib module unistdio/ulc-vasprintf-tests
+
+TESTS += test-ulc-vasprintf1
+check_PROGRAMS += test-ulc-vasprintf1
+test_ulc_vasprintf1_SOURCES = unistdio/test-ulc-vasprintf1.c
+test_ulc_vasprintf1_LDADD = $(LDADD) @LIBICONV@
+EXTRA_DIST += unistdio/test-ulc-vasprintf1.c unistdio/test-ulc-printf1.h
+
+## end gnulib module unistdio/ulc-vasprintf-tests
+
+## begin gnulib module unistdio/ulc-vsnprintf-tests
+
+TESTS += test-ulc-vsnprintf1
+check_PROGRAMS += test-ulc-vsnprintf1
+test_ulc_vsnprintf1_SOURCES = unistdio/test-ulc-vsnprintf1.c
+test_ulc_vsnprintf1_LDADD = $(LDADD) @LIBINTL@ @LIBICONV@
+EXTRA_DIST += unistdio/test-ulc-vsnprintf1.c unistdio/test-ulc-printf1.h
+
+## end gnulib module unistdio/ulc-vsnprintf-tests
+
+## begin gnulib module unistdio/ulc-vsprintf-tests
+
+TESTS += test-ulc-vsprintf1
+check_PROGRAMS += test-ulc-vsprintf1
+test_ulc_vsprintf1_SOURCES = unistdio/test-ulc-vsprintf1.c
+test_ulc_vsprintf1_LDADD = $(LDADD) @LIBINTL@ @LIBICONV@
+EXTRA_DIST += unistdio/test-ulc-vsprintf1.c unistdio/test-ulc-printf1.h
+
+## end gnulib module unistdio/ulc-vsprintf-tests
+
+## begin gnulib module uniwbrk/u16-wordbreaks-tests
+
+TESTS += test-u16-wordbreaks
+check_PROGRAMS += test-u16-wordbreaks
+test_u16_wordbreaks_SOURCES = uniwbrk/test-u16-wordbreaks.c
+
+EXTRA_DIST += uniwbrk/test-u16-wordbreaks.c
+
+## end gnulib module uniwbrk/u16-wordbreaks-tests
+
+## begin gnulib module uniwbrk/u32-wordbreaks-tests
+
+TESTS += test-u32-wordbreaks
+check_PROGRAMS += test-u32-wordbreaks
+test_u32_wordbreaks_SOURCES = uniwbrk/test-u32-wordbreaks.c
+
+EXTRA_DIST += uniwbrk/test-u32-wordbreaks.c
+
+## end gnulib module uniwbrk/u32-wordbreaks-tests
+
+## begin gnulib module uniwbrk/u8-wordbreaks-tests
+
+TESTS += test-u8-wordbreaks
+check_PROGRAMS += test-u8-wordbreaks
+test_u8_wordbreaks_SOURCES = uniwbrk/test-u8-wordbreaks.c
+
+EXTRA_DIST += uniwbrk/test-u8-wordbreaks.c
+
+## end gnulib module uniwbrk/u8-wordbreaks-tests
+
+## begin gnulib module uniwbrk/ulc-wordbreaks-tests
+
+TESTS += uniwbrk/test-ulc-wordbreaks.sh
+TESTS_ENVIRONMENT += EXEEXT='@EXEEXT@' LOCALE_FR='@LOCALE_FR@'
+check_PROGRAMS += test-ulc-wordbreaks
+test_ulc_wordbreaks_SOURCES = uniwbrk/test-ulc-wordbreaks.c
+test_ulc_wordbreaks_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += uniwbrk/test-ulc-wordbreaks.sh uniwbrk/test-ulc-wordbreaks.c
+
+## end gnulib module uniwbrk/ulc-wordbreaks-tests
+
+## begin gnulib module uniwidth/u16-strwidth-tests
+
+TESTS += test-u16-strwidth
+check_PROGRAMS += test-u16-strwidth
+test_u16_strwidth_SOURCES = uniwidth/test-u16-strwidth.c
+
+EXTRA_DIST += uniwidth/test-u16-strwidth.c
+
+## end gnulib module uniwidth/u16-strwidth-tests
+
+## begin gnulib module uniwidth/u16-width-tests
+
+TESTS += test-u16-width
+check_PROGRAMS += test-u16-width
+test_u16_width_SOURCES = uniwidth/test-u16-width.c
+
+EXTRA_DIST += uniwidth/test-u16-width.c
+
+## end gnulib module uniwidth/u16-width-tests
+
+## begin gnulib module uniwidth/u32-strwidth-tests
+
+TESTS += test-u32-strwidth
+check_PROGRAMS += test-u32-strwidth
+test_u32_strwidth_SOURCES = uniwidth/test-u32-strwidth.c
+
+EXTRA_DIST += uniwidth/test-u32-strwidth.c
+
+## end gnulib module uniwidth/u32-strwidth-tests
+
+## begin gnulib module uniwidth/u32-width-tests
+
+TESTS += test-u32-width
+check_PROGRAMS += test-u32-width
+test_u32_width_SOURCES = uniwidth/test-u32-width.c
+
+EXTRA_DIST += uniwidth/test-u32-width.c
+
+## end gnulib module uniwidth/u32-width-tests
+
+## begin gnulib module uniwidth/u8-strwidth-tests
+
+TESTS += test-u8-strwidth
+check_PROGRAMS += test-u8-strwidth
+test_u8_strwidth_SOURCES = uniwidth/test-u8-strwidth.c
+
+EXTRA_DIST += uniwidth/test-u8-strwidth.c
+
+## end gnulib module uniwidth/u8-strwidth-tests
+
+## begin gnulib module uniwidth/u8-width-tests
+
+TESTS += test-u8-width
+check_PROGRAMS += test-u8-width
+test_u8_width_SOURCES = uniwidth/test-u8-width.c
+
+EXTRA_DIST += uniwidth/test-u8-width.c
+
+## end gnulib module uniwidth/u8-width-tests
+
+## begin gnulib module uniwidth/width-tests
+
+TESTS += test-uc_width uniwidth/test-uc_width2.sh
+TESTS_ENVIRONMENT += EXEEXT='@EXEEXT@'
+check_PROGRAMS += test-uc_width test-uc_width2
+test_uc_width_SOURCES = uniwidth/test-uc_width.c
+test_uc_width2_SOURCES = uniwidth/test-uc_width2.c
+
+EXTRA_DIST += uniwidth/test-uc_width.c uniwidth/test-uc_width2.c uniwidth/test-uc_width2.sh
+
+## end gnulib module uniwidth/width-tests
+
+## begin gnulib module unsetenv
+
+
+EXTRA_DIST += unsetenv.c
+
+EXTRA_libtests_a_SOURCES += unsetenv.c
+
+## end gnulib module unsetenv
+
+## begin gnulib module wchar-tests
+
+TESTS += test-wchar
+check_PROGRAMS += test-wchar
+
+EXTRA_DIST += test-wchar.c
+
+## end gnulib module wchar-tests
+
+## begin gnulib module wctob
+
+
+EXTRA_DIST += wctob.c
+
+EXTRA_libtests_a_SOURCES += wctob.c
+
+## end gnulib module wctob
+
+## begin gnulib module wctype-tests
+
+TESTS += test-wctype
+check_PROGRAMS += test-wctype
+
+EXTRA_DIST += test-wctype.c
+
+## end gnulib module wctype-tests
+
+## begin gnulib module wcwidth-tests
+
+TESTS += test-wcwidth
+check_PROGRAMS += test-wcwidth
+
+EXTRA_DIST += test-wcwidth.c
+
+## end gnulib module wcwidth-tests
+
+## begin gnulib module xalloc
+
+
+EXTRA_DIST += xalloc.h xmalloc.c
+
+EXTRA_libtests_a_SOURCES += xmalloc.c
+
+## end gnulib module xalloc
+
+## begin gnulib module xalloc-die
+
+libtests_a_SOURCES += xalloc-die.c
+
+## end gnulib module xalloc-die
+
+# Clean up after Solaris cc.
+clean-local:
+ rm -rf SunWS_cache
+
+mostlyclean-local: mostlyclean-generic
+ @for dir in '' $(MOSTLYCLEANDIRS); do \
+ if test -n "$$dir" && test -d $$dir; then \
+ echo "rmdir $$dir"; rmdir $$dir; \
+ fi; \
+ done; \
+ :
diff --git a/tests/Makefile.in b/tests/Makefile.in
new file mode 100644
index 00000000..fa734572
--- /dev/null
+++ b/tests/Makefile.in
@@ -0,0 +1,6709 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License. As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.gnulib $(srcdir)/Makefile.in
+TESTS = test-alloca-opt$(EXEEXT) test-array-mergesort$(EXEEXT) \
+ test-c-ctype$(EXEEXT) test-c-strcase.sh test-environ$(EXEEXT) \
+ test-errno$(EXEEXT) test-frexpl-nolibm$(EXEEXT) \
+ test-fseterr$(EXEEXT) test-iconv$(EXEEXT) \
+ test-isnand-nolibm$(EXEEXT) test-isnanf-nolibm$(EXEEXT) \
+ test-isnanl-nolibm$(EXEEXT) test-locale$(EXEEXT) \
+ test-localename$(EXEEXT) test-malloca$(EXEEXT) \
+ test-math$(EXEEXT) test-mbrtowc1.sh test-mbrtowc2.sh \
+ test-mbrtowc3.sh test-mbrtowc4.sh test-mbsinit.sh \
+ test-memchr$(EXEEXT) test-printf-frexp$(EXEEXT) \
+ test-printf-frexpl$(EXEEXT) test-signbit$(EXEEXT) \
+ test-stdbool$(EXEEXT) test-stdint$(EXEEXT) \
+ test-stdlib$(EXEEXT) test-strerror$(EXEEXT) \
+ test-striconveh$(EXEEXT) test-striconveha$(EXEEXT) \
+ test-string$(EXEEXT) test-cased$(EXEEXT) \
+ test-ignorable$(EXEEXT) unicase/test-locale-language.sh \
+ test-uc_tolower$(EXEEXT) test-uc_totitle$(EXEEXT) \
+ test-uc_toupper$(EXEEXT) test-u16-casecmp$(EXEEXT) \
+ test-u16-casecoll$(EXEEXT) test-u16-casefold$(EXEEXT) \
+ test-u16-is-cased$(EXEEXT) test-u16-is-casefolded$(EXEEXT) \
+ test-u16-is-lowercase$(EXEEXT) test-u16-is-titlecase$(EXEEXT) \
+ test-u16-is-uppercase$(EXEEXT) test-u16-tolower$(EXEEXT) \
+ test-u16-totitle$(EXEEXT) test-u16-toupper$(EXEEXT) \
+ test-u32-casecmp$(EXEEXT) test-u32-casecoll$(EXEEXT) \
+ test-u32-casefold$(EXEEXT) test-u32-is-cased$(EXEEXT) \
+ test-u32-is-casefolded$(EXEEXT) test-u32-is-lowercase$(EXEEXT) \
+ test-u32-is-titlecase$(EXEEXT) test-u32-is-uppercase$(EXEEXT) \
+ test-u32-tolower$(EXEEXT) test-u32-totitle$(EXEEXT) \
+ test-u32-toupper$(EXEEXT) test-u8-casecmp$(EXEEXT) \
+ test-u8-casecoll$(EXEEXT) test-u8-casefold$(EXEEXT) \
+ test-u8-is-cased$(EXEEXT) test-u8-is-casefolded$(EXEEXT) \
+ test-u8-is-lowercase$(EXEEXT) test-u8-is-titlecase$(EXEEXT) \
+ test-u8-is-uppercase$(EXEEXT) test-u8-tolower$(EXEEXT) \
+ test-u8-totitle$(EXEEXT) test-u8-toupper$(EXEEXT) \
+ unicase/test-ulc-casecmp1.sh unicase/test-ulc-casecmp2.sh \
+ unicase/test-ulc-casecoll1.sh unicase/test-ulc-casecoll2.sh \
+ test-u16-conv-from-enc$(EXEEXT) test-u16-conv-to-enc$(EXEEXT) \
+ test-u16-strconv-from-enc$(EXEEXT) \
+ test-u16-strconv-to-enc$(EXEEXT) \
+ test-u32-conv-from-enc$(EXEEXT) test-u32-conv-to-enc$(EXEEXT) \
+ test-u32-strconv-from-enc$(EXEEXT) \
+ test-u32-strconv-to-enc$(EXEEXT) \
+ test-u8-conv-from-enc$(EXEEXT) test-u8-conv-to-enc$(EXEEXT) \
+ test-u8-strconv-from-enc$(EXEEXT) \
+ test-u8-strconv-to-enc$(EXEEXT) test-bidi_byname$(EXEEXT) \
+ test-bidi_name$(EXEEXT) test-bidi_of$(EXEEXT) \
+ test-bidi_test$(EXEEXT) test-block_list$(EXEEXT) \
+ test-block_of$(EXEEXT) test-block_test$(EXEEXT) \
+ test-categ_C$(EXEEXT) test-categ_Cc$(EXEEXT) \
+ test-categ_Cf$(EXEEXT) test-categ_Cn$(EXEEXT) \
+ test-categ_Co$(EXEEXT) test-categ_Cs$(EXEEXT) \
+ test-categ_L$(EXEEXT) test-categ_Ll$(EXEEXT) \
+ test-categ_Lm$(EXEEXT) test-categ_Lo$(EXEEXT) \
+ test-categ_Lt$(EXEEXT) test-categ_Lu$(EXEEXT) \
+ test-categ_M$(EXEEXT) test-categ_Mc$(EXEEXT) \
+ test-categ_Me$(EXEEXT) test-categ_Mn$(EXEEXT) \
+ test-categ_N$(EXEEXT) test-categ_Nd$(EXEEXT) \
+ test-categ_Nl$(EXEEXT) test-categ_No$(EXEEXT) \
+ test-categ_P$(EXEEXT) test-categ_Pc$(EXEEXT) \
+ test-categ_Pd$(EXEEXT) test-categ_Pe$(EXEEXT) \
+ test-categ_Pf$(EXEEXT) test-categ_Pi$(EXEEXT) \
+ test-categ_Po$(EXEEXT) test-categ_Ps$(EXEEXT) \
+ test-categ_S$(EXEEXT) test-categ_Sc$(EXEEXT) \
+ test-categ_Sk$(EXEEXT) test-categ_Sm$(EXEEXT) \
+ test-categ_So$(EXEEXT) test-categ_Z$(EXEEXT) \
+ test-categ_Zl$(EXEEXT) test-categ_Zp$(EXEEXT) \
+ test-categ_Zs$(EXEEXT) test-categ_and_not$(EXEEXT) \
+ test-categ_and$(EXEEXT) test-categ_byname$(EXEEXT) \
+ test-categ_name$(EXEEXT) $(am__EXEEXT_1) \
+ test-categ_of$(EXEEXT) test-categ_or$(EXEEXT) \
+ test-categ_test_withtable$(EXEEXT) test-combining$(EXEEXT) \
+ test-ctype_alnum$(EXEEXT) test-ctype_alpha$(EXEEXT) \
+ test-ctype_blank$(EXEEXT) test-ctype_cntrl$(EXEEXT) \
+ test-ctype_digit$(EXEEXT) test-ctype_graph$(EXEEXT) \
+ test-ctype_lower$(EXEEXT) test-ctype_print$(EXEEXT) \
+ test-ctype_punct$(EXEEXT) test-ctype_space$(EXEEXT) \
+ test-ctype_upper$(EXEEXT) test-ctype_xdigit$(EXEEXT) \
+ test-decdigit$(EXEEXT) test-digit$(EXEEXT) \
+ test-mirror$(EXEEXT) test-numeric$(EXEEXT) \
+ test-pr_alphabetic$(EXEEXT) test-pr_ascii_hex_digit$(EXEEXT) \
+ test-pr_bidi_arabic_digit$(EXEEXT) \
+ test-pr_bidi_arabic_right_to_left$(EXEEXT) \
+ test-pr_bidi_block_separator$(EXEEXT) \
+ test-pr_bidi_boundary_neutral$(EXEEXT) \
+ test-pr_bidi_common_separator$(EXEEXT) \
+ test-pr_bidi_control$(EXEEXT) \
+ test-pr_bidi_embedding_or_override$(EXEEXT) \
+ test-pr_bidi_eur_num_separator$(EXEEXT) \
+ test-pr_bidi_eur_num_terminator$(EXEEXT) \
+ test-pr_bidi_european_digit$(EXEEXT) \
+ test-pr_bidi_hebrew_right_to_left$(EXEEXT) \
+ test-pr_bidi_left_to_right$(EXEEXT) \
+ test-pr_bidi_non_spacing_mark$(EXEEXT) \
+ test-pr_bidi_other_neutral$(EXEEXT) test-pr_bidi_pdf$(EXEEXT) \
+ test-pr_bidi_segment_separator$(EXEEXT) \
+ test-pr_bidi_whitespace$(EXEEXT) test-pr_byname$(EXEEXT) \
+ test-pr_combining$(EXEEXT) test-pr_composite$(EXEEXT) \
+ test-pr_currency_symbol$(EXEEXT) test-pr_dash$(EXEEXT) \
+ test-pr_decimal_digit$(EXEEXT) \
+ test-pr_default_ignorable_code_point$(EXEEXT) \
+ test-pr_deprecated$(EXEEXT) test-pr_diacritic$(EXEEXT) \
+ test-pr_extender$(EXEEXT) test-pr_format_control$(EXEEXT) \
+ test-pr_grapheme_base$(EXEEXT) \
+ test-pr_grapheme_extend$(EXEEXT) \
+ test-pr_grapheme_link$(EXEEXT) test-pr_hex_digit$(EXEEXT) \
+ test-pr_hyphen$(EXEEXT) test-pr_id_continue$(EXEEXT) \
+ test-pr_id_start$(EXEEXT) test-pr_ideographic$(EXEEXT) \
+ test-pr_ids_binary_operator$(EXEEXT) \
+ test-pr_ids_trinary_operator$(EXEEXT) \
+ test-pr_ignorable_control$(EXEEXT) \
+ test-pr_iso_control$(EXEEXT) test-pr_join_control$(EXEEXT) \
+ test-pr_left_of_pair$(EXEEXT) test-pr_line_separator$(EXEEXT) \
+ test-pr_logical_order_exception$(EXEEXT) \
+ test-pr_lowercase$(EXEEXT) test-pr_math$(EXEEXT) \
+ test-pr_non_break$(EXEEXT) test-pr_not_a_character$(EXEEXT) \
+ test-pr_numeric$(EXEEXT) test-pr_other_alphabetic$(EXEEXT) \
+ test-pr_other_default_ignorable_code_point$(EXEEXT) \
+ test-pr_other_grapheme_extend$(EXEEXT) \
+ test-pr_other_id_continue$(EXEEXT) \
+ test-pr_other_id_start$(EXEEXT) \
+ test-pr_other_lowercase$(EXEEXT) test-pr_other_math$(EXEEXT) \
+ test-pr_other_uppercase$(EXEEXT) \
+ test-pr_paired_punctuation$(EXEEXT) \
+ test-pr_paragraph_separator$(EXEEXT) \
+ test-pr_pattern_syntax$(EXEEXT) \
+ test-pr_pattern_white_space$(EXEEXT) \
+ test-pr_private_use$(EXEEXT) test-pr_punctuation$(EXEEXT) \
+ test-pr_quotation_mark$(EXEEXT) test-pr_radical$(EXEEXT) \
+ test-pr_sentence_terminal$(EXEEXT) \
+ test-pr_soft_dotted$(EXEEXT) test-pr_space$(EXEEXT) \
+ test-pr_terminal_punctuation$(EXEEXT) test-pr_test$(EXEEXT) \
+ test-pr_titlecase$(EXEEXT) \
+ test-pr_unassigned_code_value$(EXEEXT) \
+ test-pr_unified_ideograph$(EXEEXT) test-pr_uppercase$(EXEEXT) \
+ test-pr_variation_selector$(EXEEXT) \
+ test-pr_white_space$(EXEEXT) test-pr_xid_continue$(EXEEXT) \
+ test-pr_xid_start$(EXEEXT) test-pr_zero_width$(EXEEXT) \
+ test-scripts$(EXEEXT) test-sy_c_ident$(EXEEXT) \
+ test-sy_c_whitespace$(EXEEXT) test-sy_java_ident$(EXEEXT) \
+ test-sy_java_whitespace$(EXEEXT) \
+ test-u16-possible-linebreaks$(EXEEXT) \
+ test-u16-width-linebreaks$(EXEEXT) \
+ test-u32-possible-linebreaks$(EXEEXT) \
+ test-u32-width-linebreaks$(EXEEXT) \
+ test-u8-possible-linebreaks$(EXEEXT) \
+ test-u8-width-linebreaks$(EXEEXT) \
+ test-ulc-possible-linebreaks$(EXEEXT) \
+ test-ulc-width-linebreaks$(EXEEXT) uniname/test-uninames.sh \
+ test-canonical-decomposition$(EXEEXT) \
+ test-compat-decomposition$(EXEEXT) test-composition$(EXEEXT) \
+ test-decomposing-form$(EXEEXT) test-decomposition$(EXEEXT) \
+ test-uninorm-filter-nfc$(EXEEXT) test-nfc$(EXEEXT) \
+ uninorm/test-u32-nfc-big.sh test-nfd$(EXEEXT) \
+ uninorm/test-u32-nfd-big.sh test-nfkc$(EXEEXT) \
+ uninorm/test-u32-nfkc-big.sh test-nfkd$(EXEEXT) \
+ uninorm/test-u32-nfkd-big.sh test-u16-normcmp$(EXEEXT) \
+ test-u16-normcoll$(EXEEXT) test-u32-normcmp$(EXEEXT) \
+ test-u32-normcoll$(EXEEXT) test-u8-normcmp$(EXEEXT) \
+ test-u8-normcoll$(EXEEXT) test-unistd$(EXEEXT) \
+ test-u16-asnprintf1$(EXEEXT) test-u16-vasnprintf1$(EXEEXT) \
+ unistdio/test-u16-vasnprintf2.sh \
+ unistdio/test-u16-vasnprintf3.sh test-u16-vasprintf1$(EXEEXT) \
+ test-u16-vsnprintf1$(EXEEXT) test-u16-vsprintf1$(EXEEXT) \
+ test-u32-asnprintf1$(EXEEXT) test-u32-vasnprintf1$(EXEEXT) \
+ unistdio/test-u32-vasnprintf2.sh \
+ unistdio/test-u32-vasnprintf3.sh test-u32-vasprintf1$(EXEEXT) \
+ test-u32-vsnprintf1$(EXEEXT) test-u32-vsprintf1$(EXEEXT) \
+ test-u8-asnprintf1$(EXEEXT) test-u8-vasnprintf1$(EXEEXT) \
+ unistdio/test-u8-vasnprintf2.sh \
+ unistdio/test-u8-vasnprintf3.sh test-u8-vasprintf1$(EXEEXT) \
+ test-u8-vsnprintf1$(EXEEXT) test-u8-vsprintf1$(EXEEXT) \
+ test-ulc-asnprintf1$(EXEEXT) test-ulc-vasnprintf1$(EXEEXT) \
+ unistdio/test-ulc-vasnprintf2.sh \
+ unistdio/test-ulc-vasnprintf3.sh test-ulc-vasprintf1$(EXEEXT) \
+ test-ulc-vsnprintf1$(EXEEXT) test-ulc-vsprintf1$(EXEEXT) \
+ test-u16-wordbreaks$(EXEEXT) test-u32-wordbreaks$(EXEEXT) \
+ test-u8-wordbreaks$(EXEEXT) uniwbrk/test-ulc-wordbreaks.sh \
+ test-u16-strwidth$(EXEEXT) test-u16-width$(EXEEXT) \
+ test-u32-strwidth$(EXEEXT) test-u32-width$(EXEEXT) \
+ test-u8-strwidth$(EXEEXT) test-u8-width$(EXEEXT) \
+ test-uc_width$(EXEEXT) uniwidth/test-uc_width2.sh \
+ test-wchar$(EXEEXT) test-wctype$(EXEEXT) test-wcwidth$(EXEEXT)
+noinst_PROGRAMS =
+check_PROGRAMS = test-alloca-opt$(EXEEXT) \
+ test-array-mergesort$(EXEEXT) test-c-ctype$(EXEEXT) \
+ test-c-strcasecmp$(EXEEXT) test-c-strncasecmp$(EXEEXT) \
+ test-environ$(EXEEXT) test-errno$(EXEEXT) \
+ test-frexpl-nolibm$(EXEEXT) test-fseterr$(EXEEXT) \
+ test-iconv$(EXEEXT) test-isnand-nolibm$(EXEEXT) \
+ test-isnanf-nolibm$(EXEEXT) test-isnanl-nolibm$(EXEEXT) \
+ test-locale$(EXEEXT) test-localename$(EXEEXT) \
+ test-malloca$(EXEEXT) test-math$(EXEEXT) test-mbrtowc$(EXEEXT) \
+ test-mbsinit$(EXEEXT) test-memchr$(EXEEXT) \
+ test-printf-frexp$(EXEEXT) test-printf-frexpl$(EXEEXT) \
+ test-signbit$(EXEEXT) test-stdbool$(EXEEXT) \
+ test-stdint$(EXEEXT) test-stdlib$(EXEEXT) \
+ test-strerror$(EXEEXT) test-striconveh$(EXEEXT) \
+ test-striconveha$(EXEEXT) test-string$(EXEEXT) \
+ test-cased$(EXEEXT) test-ignorable$(EXEEXT) \
+ test-locale-language$(EXEEXT) test-uc_tolower$(EXEEXT) \
+ test-uc_totitle$(EXEEXT) test-uc_toupper$(EXEEXT) \
+ test-u16-casecmp$(EXEEXT) test-u16-casecoll$(EXEEXT) \
+ test-u16-casefold$(EXEEXT) test-u16-is-cased$(EXEEXT) \
+ test-u16-is-casefolded$(EXEEXT) test-u16-is-lowercase$(EXEEXT) \
+ test-u16-is-titlecase$(EXEEXT) test-u16-is-uppercase$(EXEEXT) \
+ test-u16-tolower$(EXEEXT) test-u16-totitle$(EXEEXT) \
+ test-u16-toupper$(EXEEXT) test-u32-casecmp$(EXEEXT) \
+ test-u32-casecoll$(EXEEXT) test-u32-casefold$(EXEEXT) \
+ test-u32-is-cased$(EXEEXT) test-u32-is-casefolded$(EXEEXT) \
+ test-u32-is-lowercase$(EXEEXT) test-u32-is-titlecase$(EXEEXT) \
+ test-u32-is-uppercase$(EXEEXT) test-u32-tolower$(EXEEXT) \
+ test-u32-totitle$(EXEEXT) test-u32-toupper$(EXEEXT) \
+ test-u8-casecmp$(EXEEXT) test-u8-casecoll$(EXEEXT) \
+ test-u8-casefold$(EXEEXT) test-u8-is-cased$(EXEEXT) \
+ test-u8-is-casefolded$(EXEEXT) test-u8-is-lowercase$(EXEEXT) \
+ test-u8-is-titlecase$(EXEEXT) test-u8-is-uppercase$(EXEEXT) \
+ test-u8-tolower$(EXEEXT) test-u8-totitle$(EXEEXT) \
+ test-u8-toupper$(EXEEXT) test-ulc-casecmp$(EXEEXT) \
+ test-ulc-casecoll$(EXEEXT) test-u16-conv-from-enc$(EXEEXT) \
+ test-u16-conv-to-enc$(EXEEXT) \
+ test-u16-strconv-from-enc$(EXEEXT) \
+ test-u16-strconv-to-enc$(EXEEXT) \
+ test-u32-conv-from-enc$(EXEEXT) test-u32-conv-to-enc$(EXEEXT) \
+ test-u32-strconv-from-enc$(EXEEXT) \
+ test-u32-strconv-to-enc$(EXEEXT) \
+ test-u8-conv-from-enc$(EXEEXT) test-u8-conv-to-enc$(EXEEXT) \
+ test-u8-strconv-from-enc$(EXEEXT) \
+ test-u8-strconv-to-enc$(EXEEXT) test-bidi_byname$(EXEEXT) \
+ test-bidi_name$(EXEEXT) test-bidi_of$(EXEEXT) \
+ test-bidi_test$(EXEEXT) test-block_list$(EXEEXT) \
+ test-block_of$(EXEEXT) test-block_test$(EXEEXT) \
+ test-categ_C$(EXEEXT) test-categ_Cc$(EXEEXT) \
+ test-categ_Cf$(EXEEXT) test-categ_Cn$(EXEEXT) \
+ test-categ_Co$(EXEEXT) test-categ_Cs$(EXEEXT) \
+ test-categ_L$(EXEEXT) test-categ_Ll$(EXEEXT) \
+ test-categ_Lm$(EXEEXT) test-categ_Lo$(EXEEXT) \
+ test-categ_Lt$(EXEEXT) test-categ_Lu$(EXEEXT) \
+ test-categ_M$(EXEEXT) test-categ_Mc$(EXEEXT) \
+ test-categ_Me$(EXEEXT) test-categ_Mn$(EXEEXT) \
+ test-categ_N$(EXEEXT) test-categ_Nd$(EXEEXT) \
+ test-categ_Nl$(EXEEXT) test-categ_No$(EXEEXT) \
+ test-categ_P$(EXEEXT) test-categ_Pc$(EXEEXT) \
+ test-categ_Pd$(EXEEXT) test-categ_Pe$(EXEEXT) \
+ test-categ_Pf$(EXEEXT) test-categ_Pi$(EXEEXT) \
+ test-categ_Po$(EXEEXT) test-categ_Ps$(EXEEXT) \
+ test-categ_S$(EXEEXT) test-categ_Sc$(EXEEXT) \
+ test-categ_Sk$(EXEEXT) test-categ_Sm$(EXEEXT) \
+ test-categ_So$(EXEEXT) test-categ_Z$(EXEEXT) \
+ test-categ_Zl$(EXEEXT) test-categ_Zp$(EXEEXT) \
+ test-categ_Zs$(EXEEXT) test-categ_and_not$(EXEEXT) \
+ test-categ_and$(EXEEXT) test-categ_byname$(EXEEXT) \
+ test-categ_name$(EXEEXT) $(am__EXEEXT_1) \
+ test-categ_of$(EXEEXT) test-categ_or$(EXEEXT) \
+ test-categ_test_withtable$(EXEEXT) test-combining$(EXEEXT) \
+ test-ctype_alnum$(EXEEXT) test-ctype_alpha$(EXEEXT) \
+ test-ctype_blank$(EXEEXT) test-ctype_cntrl$(EXEEXT) \
+ test-ctype_digit$(EXEEXT) test-ctype_graph$(EXEEXT) \
+ test-ctype_lower$(EXEEXT) test-ctype_print$(EXEEXT) \
+ test-ctype_punct$(EXEEXT) test-ctype_space$(EXEEXT) \
+ test-ctype_upper$(EXEEXT) test-ctype_xdigit$(EXEEXT) \
+ test-decdigit$(EXEEXT) test-digit$(EXEEXT) \
+ test-mirror$(EXEEXT) test-numeric$(EXEEXT) \
+ test-pr_alphabetic$(EXEEXT) test-pr_ascii_hex_digit$(EXEEXT) \
+ test-pr_bidi_arabic_digit$(EXEEXT) \
+ test-pr_bidi_arabic_right_to_left$(EXEEXT) \
+ test-pr_bidi_block_separator$(EXEEXT) \
+ test-pr_bidi_boundary_neutral$(EXEEXT) \
+ test-pr_bidi_common_separator$(EXEEXT) \
+ test-pr_bidi_control$(EXEEXT) \
+ test-pr_bidi_embedding_or_override$(EXEEXT) \
+ test-pr_bidi_eur_num_separator$(EXEEXT) \
+ test-pr_bidi_eur_num_terminator$(EXEEXT) \
+ test-pr_bidi_european_digit$(EXEEXT) \
+ test-pr_bidi_hebrew_right_to_left$(EXEEXT) \
+ test-pr_bidi_left_to_right$(EXEEXT) \
+ test-pr_bidi_non_spacing_mark$(EXEEXT) \
+ test-pr_bidi_other_neutral$(EXEEXT) test-pr_bidi_pdf$(EXEEXT) \
+ test-pr_bidi_segment_separator$(EXEEXT) \
+ test-pr_bidi_whitespace$(EXEEXT) test-pr_byname$(EXEEXT) \
+ test-pr_combining$(EXEEXT) test-pr_composite$(EXEEXT) \
+ test-pr_currency_symbol$(EXEEXT) test-pr_dash$(EXEEXT) \
+ test-pr_decimal_digit$(EXEEXT) \
+ test-pr_default_ignorable_code_point$(EXEEXT) \
+ test-pr_deprecated$(EXEEXT) test-pr_diacritic$(EXEEXT) \
+ test-pr_extender$(EXEEXT) test-pr_format_control$(EXEEXT) \
+ test-pr_grapheme_base$(EXEEXT) \
+ test-pr_grapheme_extend$(EXEEXT) \
+ test-pr_grapheme_link$(EXEEXT) test-pr_hex_digit$(EXEEXT) \
+ test-pr_hyphen$(EXEEXT) test-pr_id_continue$(EXEEXT) \
+ test-pr_id_start$(EXEEXT) test-pr_ideographic$(EXEEXT) \
+ test-pr_ids_binary_operator$(EXEEXT) \
+ test-pr_ids_trinary_operator$(EXEEXT) \
+ test-pr_ignorable_control$(EXEEXT) \
+ test-pr_iso_control$(EXEEXT) test-pr_join_control$(EXEEXT) \
+ test-pr_left_of_pair$(EXEEXT) test-pr_line_separator$(EXEEXT) \
+ test-pr_logical_order_exception$(EXEEXT) \
+ test-pr_lowercase$(EXEEXT) test-pr_math$(EXEEXT) \
+ test-pr_non_break$(EXEEXT) test-pr_not_a_character$(EXEEXT) \
+ test-pr_numeric$(EXEEXT) test-pr_other_alphabetic$(EXEEXT) \
+ test-pr_other_default_ignorable_code_point$(EXEEXT) \
+ test-pr_other_grapheme_extend$(EXEEXT) \
+ test-pr_other_id_continue$(EXEEXT) \
+ test-pr_other_id_start$(EXEEXT) \
+ test-pr_other_lowercase$(EXEEXT) test-pr_other_math$(EXEEXT) \
+ test-pr_other_uppercase$(EXEEXT) \
+ test-pr_paired_punctuation$(EXEEXT) \
+ test-pr_paragraph_separator$(EXEEXT) \
+ test-pr_pattern_syntax$(EXEEXT) \
+ test-pr_pattern_white_space$(EXEEXT) \
+ test-pr_private_use$(EXEEXT) test-pr_punctuation$(EXEEXT) \
+ test-pr_quotation_mark$(EXEEXT) test-pr_radical$(EXEEXT) \
+ test-pr_sentence_terminal$(EXEEXT) \
+ test-pr_soft_dotted$(EXEEXT) test-pr_space$(EXEEXT) \
+ test-pr_terminal_punctuation$(EXEEXT) test-pr_test$(EXEEXT) \
+ test-pr_titlecase$(EXEEXT) \
+ test-pr_unassigned_code_value$(EXEEXT) \
+ test-pr_unified_ideograph$(EXEEXT) test-pr_uppercase$(EXEEXT) \
+ test-pr_variation_selector$(EXEEXT) \
+ test-pr_white_space$(EXEEXT) test-pr_xid_continue$(EXEEXT) \
+ test-pr_xid_start$(EXEEXT) test-pr_zero_width$(EXEEXT) \
+ test-scripts$(EXEEXT) test-sy_c_ident$(EXEEXT) \
+ test-sy_c_whitespace$(EXEEXT) test-sy_java_ident$(EXEEXT) \
+ test-sy_java_whitespace$(EXEEXT) \
+ test-u16-possible-linebreaks$(EXEEXT) \
+ test-u16-width-linebreaks$(EXEEXT) \
+ test-u32-possible-linebreaks$(EXEEXT) \
+ test-u32-width-linebreaks$(EXEEXT) \
+ test-u8-possible-linebreaks$(EXEEXT) \
+ test-u8-width-linebreaks$(EXEEXT) \
+ test-ulc-possible-linebreaks$(EXEEXT) \
+ test-ulc-width-linebreaks$(EXEEXT) test-uninames$(EXEEXT) \
+ test-canonical-decomposition$(EXEEXT) \
+ test-compat-decomposition$(EXEEXT) test-composition$(EXEEXT) \
+ test-decomposing-form$(EXEEXT) test-decomposition$(EXEEXT) \
+ test-uninorm-filter-nfc$(EXEEXT) test-nfc$(EXEEXT) \
+ test-u32-nfc-big$(EXEEXT) test-nfd$(EXEEXT) \
+ test-u32-nfd-big$(EXEEXT) test-nfkc$(EXEEXT) \
+ test-u32-nfkc-big$(EXEEXT) test-nfkd$(EXEEXT) \
+ test-u32-nfkd-big$(EXEEXT) test-u16-normcmp$(EXEEXT) \
+ test-u16-normcoll$(EXEEXT) test-u32-normcmp$(EXEEXT) \
+ test-u32-normcoll$(EXEEXT) test-u8-normcmp$(EXEEXT) \
+ test-u8-normcoll$(EXEEXT) test-unistd$(EXEEXT) \
+ test-u16-asnprintf1$(EXEEXT) test-u16-vasnprintf1$(EXEEXT) \
+ test-u16-vasnprintf2$(EXEEXT) test-u16-vasnprintf3$(EXEEXT) \
+ test-u16-vasprintf1$(EXEEXT) test-u16-vsnprintf1$(EXEEXT) \
+ test-u16-vsprintf1$(EXEEXT) test-u32-asnprintf1$(EXEEXT) \
+ test-u32-vasnprintf1$(EXEEXT) test-u32-vasnprintf2$(EXEEXT) \
+ test-u32-vasnprintf3$(EXEEXT) test-u32-vasprintf1$(EXEEXT) \
+ test-u32-vsnprintf1$(EXEEXT) test-u32-vsprintf1$(EXEEXT) \
+ test-u8-asnprintf1$(EXEEXT) test-u8-vasnprintf1$(EXEEXT) \
+ test-u8-vasnprintf2$(EXEEXT) test-u8-vasnprintf3$(EXEEXT) \
+ test-u8-vasprintf1$(EXEEXT) test-u8-vsnprintf1$(EXEEXT) \
+ test-u8-vsprintf1$(EXEEXT) test-ulc-asnprintf1$(EXEEXT) \
+ test-ulc-vasnprintf1$(EXEEXT) test-ulc-vasnprintf2$(EXEEXT) \
+ test-ulc-vasnprintf3$(EXEEXT) test-ulc-vasprintf1$(EXEEXT) \
+ test-ulc-vsnprintf1$(EXEEXT) test-ulc-vsprintf1$(EXEEXT) \
+ test-u16-wordbreaks$(EXEEXT) test-u32-wordbreaks$(EXEEXT) \
+ test-u8-wordbreaks$(EXEEXT) test-ulc-wordbreaks$(EXEEXT) \
+ test-u16-strwidth$(EXEEXT) test-u16-width$(EXEEXT) \
+ test-u32-strwidth$(EXEEXT) test-u32-width$(EXEEXT) \
+ test-u8-strwidth$(EXEEXT) test-u8-width$(EXEEXT) \
+ test-uc_width$(EXEEXT) test-uc_width2$(EXEEXT) \
+ test-wchar$(EXEEXT) test-wctype$(EXEEXT) test-wcwidth$(EXEEXT)
+@WOE32DLL_FALSE@am__append_1 = test-categ_none
+@WOE32DLL_FALSE@am__append_2 = test-categ_none
+subdir = tests
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
+ $(top_srcdir)/gnulib-m4/alloca.m4 \
+ $(top_srcdir)/gnulib-m4/codeset.m4 \
+ $(top_srcdir)/gnulib-m4/eealloc.m4 \
+ $(top_srcdir)/gnulib-m4/environ.m4 \
+ $(top_srcdir)/gnulib-m4/errno_h.m4 \
+ $(top_srcdir)/gnulib-m4/error.m4 \
+ $(top_srcdir)/gnulib-m4/exitfail.m4 \
+ $(top_srcdir)/gnulib-m4/exponentd.m4 \
+ $(top_srcdir)/gnulib-m4/exponentf.m4 \
+ $(top_srcdir)/gnulib-m4/exponentl.m4 \
+ $(top_srcdir)/gnulib-m4/extensions.m4 \
+ $(top_srcdir)/gnulib-m4/float_h.m4 \
+ $(top_srcdir)/gnulib-m4/fpieee.m4 \
+ $(top_srcdir)/gnulib-m4/frexp.m4 \
+ $(top_srcdir)/gnulib-m4/frexpl.m4 \
+ $(top_srcdir)/gnulib-m4/getpagesize.m4 \
+ $(top_srcdir)/gnulib-m4/glibc21.m4 \
+ $(top_srcdir)/gnulib-m4/gnulib-common.m4 \
+ $(top_srcdir)/gnulib-m4/gnulib-comp.m4 \
+ $(top_srcdir)/gnulib-m4/iconv.m4 \
+ $(top_srcdir)/gnulib-m4/iconv_h.m4 \
+ $(top_srcdir)/gnulib-m4/iconv_open.m4 \
+ $(top_srcdir)/gnulib-m4/include_next.m4 \
+ $(top_srcdir)/gnulib-m4/inline.m4 \
+ $(top_srcdir)/gnulib-m4/intlmacosx.m4 \
+ $(top_srcdir)/gnulib-m4/intmax_t.m4 \
+ $(top_srcdir)/gnulib-m4/inttypes_h.m4 \
+ $(top_srcdir)/gnulib-m4/isnand.m4 \
+ $(top_srcdir)/gnulib-m4/isnanf.m4 \
+ $(top_srcdir)/gnulib-m4/isnanl.m4 \
+ $(top_srcdir)/gnulib-m4/lcmessage.m4 \
+ $(top_srcdir)/gnulib-m4/ldexpl.m4 \
+ $(top_srcdir)/gnulib-m4/lib-ld.m4 \
+ $(top_srcdir)/gnulib-m4/lib-link.m4 \
+ $(top_srcdir)/gnulib-m4/lib-prefix.m4 \
+ $(top_srcdir)/gnulib-m4/localcharset.m4 \
+ $(top_srcdir)/gnulib-m4/locale-fr.m4 \
+ $(top_srcdir)/gnulib-m4/locale-ja.m4 \
+ $(top_srcdir)/gnulib-m4/locale-tr.m4 \
+ $(top_srcdir)/gnulib-m4/locale-zh.m4 \
+ $(top_srcdir)/gnulib-m4/locale_h.m4 \
+ $(top_srcdir)/gnulib-m4/localename.m4 \
+ $(top_srcdir)/gnulib-m4/longlong.m4 \
+ $(top_srcdir)/gnulib-m4/malloc.m4 \
+ $(top_srcdir)/gnulib-m4/malloca.m4 \
+ $(top_srcdir)/gnulib-m4/math_h.m4 \
+ $(top_srcdir)/gnulib-m4/mbchar.m4 \
+ $(top_srcdir)/gnulib-m4/mbiter.m4 \
+ $(top_srcdir)/gnulib-m4/mbrtowc.m4 \
+ $(top_srcdir)/gnulib-m4/mbsinit.m4 \
+ $(top_srcdir)/gnulib-m4/mbstate_t.m4 \
+ $(top_srcdir)/gnulib-m4/memchr.m4 \
+ $(top_srcdir)/gnulib-m4/minmax.m4 \
+ $(top_srcdir)/gnulib-m4/mmap-anon.m4 \
+ $(top_srcdir)/gnulib-m4/multiarch.m4 \
+ $(top_srcdir)/gnulib-m4/nocrash.m4 \
+ $(top_srcdir)/gnulib-m4/printf-frexp.m4 \
+ $(top_srcdir)/gnulib-m4/printf-frexpl.m4 \
+ $(top_srcdir)/gnulib-m4/printf.m4 \
+ $(top_srcdir)/gnulib-m4/relocatable-lib.m4 \
+ $(top_srcdir)/gnulib-m4/setenv.m4 \
+ $(top_srcdir)/gnulib-m4/signbit.m4 \
+ $(top_srcdir)/gnulib-m4/size_max.m4 \
+ $(top_srcdir)/gnulib-m4/stdbool.m4 \
+ $(top_srcdir)/gnulib-m4/stdint.m4 \
+ $(top_srcdir)/gnulib-m4/stdint_h.m4 \
+ $(top_srcdir)/gnulib-m4/stdlib_h.m4 \
+ $(top_srcdir)/gnulib-m4/strerror.m4 \
+ $(top_srcdir)/gnulib-m4/string_h.m4 \
+ $(top_srcdir)/gnulib-m4/unistd_h.m4 \
+ $(top_srcdir)/gnulib-m4/vasnprintf.m4 \
+ $(top_srcdir)/gnulib-m4/wchar.m4 \
+ $(top_srcdir)/gnulib-m4/wchar_t.m4 \
+ $(top_srcdir)/gnulib-m4/wctob.m4 \
+ $(top_srcdir)/gnulib-m4/wctype.m4 \
+ $(top_srcdir)/gnulib-m4/wcwidth.m4 \
+ $(top_srcdir)/gnulib-m4/wint_t.m4 \
+ $(top_srcdir)/gnulib-m4/xalloc.m4 \
+ $(top_srcdir)/gnulib-m4/xsize.m4 $(top_srcdir)/m4/exported.m4 \
+ $(top_srcdir)/m4/init-package-version.m4 \
+ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/woe32-dll.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_$(V))
+am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
+am__v_AR_0 = @echo " AR " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+libtests_a_AR = $(AR) $(ARFLAGS)
+am__DEPENDENCIES_1 =
+am_libtests_a_OBJECTS = progname.$(OBJEXT) xalloc-die.$(OBJEXT)
+libtests_a_OBJECTS = $(am_libtests_a_OBJECTS)
+@WOE32DLL_FALSE@am__EXEEXT_1 = test-categ_none$(EXEEXT)
+PROGRAMS = $(noinst_PROGRAMS)
+test_alloca_opt_SOURCES = test-alloca-opt.c
+test_alloca_opt_OBJECTS = test-alloca-opt.$(OBJEXT)
+test_alloca_opt_LDADD = $(LDADD)
+test_alloca_opt_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+test_array_mergesort_SOURCES = test-array-mergesort.c
+test_array_mergesort_OBJECTS = test-array-mergesort.$(OBJEXT)
+test_array_mergesort_LDADD = $(LDADD)
+test_array_mergesort_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am__dirstamp = $(am__leading_dot)dirstamp
+am_test_bidi_byname_OBJECTS = unictype/test-bidi_byname.$(OBJEXT)
+test_bidi_byname_OBJECTS = $(am_test_bidi_byname_OBJECTS)
+test_bidi_byname_LDADD = $(LDADD)
+test_bidi_byname_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_bidi_name_OBJECTS = unictype/test-bidi_name.$(OBJEXT)
+test_bidi_name_OBJECTS = $(am_test_bidi_name_OBJECTS)
+test_bidi_name_LDADD = $(LDADD)
+test_bidi_name_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_bidi_of_OBJECTS = unictype/test-bidi_of.$(OBJEXT)
+test_bidi_of_OBJECTS = $(am_test_bidi_of_OBJECTS)
+test_bidi_of_LDADD = $(LDADD)
+test_bidi_of_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_bidi_test_OBJECTS = unictype/test-bidi_test.$(OBJEXT)
+test_bidi_test_OBJECTS = $(am_test_bidi_test_OBJECTS)
+test_bidi_test_LDADD = $(LDADD)
+test_bidi_test_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_block_list_OBJECTS = unictype/test-block_list.$(OBJEXT)
+test_block_list_OBJECTS = $(am_test_block_list_OBJECTS)
+test_block_list_LDADD = $(LDADD)
+test_block_list_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_block_of_OBJECTS = unictype/test-block_of.$(OBJEXT)
+test_block_of_OBJECTS = $(am_test_block_of_OBJECTS)
+test_block_of_LDADD = $(LDADD)
+test_block_of_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_block_test_OBJECTS = unictype/test-block_test.$(OBJEXT)
+test_block_test_OBJECTS = $(am_test_block_test_OBJECTS)
+test_block_test_LDADD = $(LDADD)
+test_block_test_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_c_ctype_SOURCES = test-c-ctype.c
+test_c_ctype_OBJECTS = test-c-ctype.$(OBJEXT)
+test_c_ctype_LDADD = $(LDADD)
+test_c_ctype_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_c_strcasecmp_SOURCES = test-c-strcasecmp.c
+test_c_strcasecmp_OBJECTS = test-c-strcasecmp.$(OBJEXT)
+test_c_strcasecmp_LDADD = $(LDADD)
+test_c_strcasecmp_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_c_strncasecmp_SOURCES = test-c-strncasecmp.c
+test_c_strncasecmp_OBJECTS = test-c-strncasecmp.$(OBJEXT)
+test_c_strncasecmp_LDADD = $(LDADD)
+test_c_strncasecmp_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_canonical_decomposition_OBJECTS = \
+ uninorm/test-canonical-decomposition.$(OBJEXT)
+test_canonical_decomposition_OBJECTS = \
+ $(am_test_canonical_decomposition_OBJECTS)
+test_canonical_decomposition_LDADD = $(LDADD)
+test_canonical_decomposition_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_cased_OBJECTS = unicase/test-cased.$(OBJEXT)
+test_cased_OBJECTS = $(am_test_cased_OBJECTS)
+test_cased_LDADD = $(LDADD)
+test_cased_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
+am_test_categ_C_OBJECTS = unictype/test-categ_C.$(OBJEXT)
+test_categ_C_OBJECTS = $(am_test_categ_C_OBJECTS)
+test_categ_C_LDADD = $(LDADD)
+test_categ_C_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Cc_OBJECTS = unictype/test-categ_Cc.$(OBJEXT)
+test_categ_Cc_OBJECTS = $(am_test_categ_Cc_OBJECTS)
+test_categ_Cc_LDADD = $(LDADD)
+test_categ_Cc_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Cf_OBJECTS = unictype/test-categ_Cf.$(OBJEXT)
+test_categ_Cf_OBJECTS = $(am_test_categ_Cf_OBJECTS)
+test_categ_Cf_LDADD = $(LDADD)
+test_categ_Cf_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Cn_OBJECTS = unictype/test-categ_Cn.$(OBJEXT)
+test_categ_Cn_OBJECTS = $(am_test_categ_Cn_OBJECTS)
+test_categ_Cn_LDADD = $(LDADD)
+test_categ_Cn_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Co_OBJECTS = unictype/test-categ_Co.$(OBJEXT)
+test_categ_Co_OBJECTS = $(am_test_categ_Co_OBJECTS)
+test_categ_Co_LDADD = $(LDADD)
+test_categ_Co_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Cs_OBJECTS = unictype/test-categ_Cs.$(OBJEXT)
+test_categ_Cs_OBJECTS = $(am_test_categ_Cs_OBJECTS)
+test_categ_Cs_LDADD = $(LDADD)
+test_categ_Cs_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_L_OBJECTS = unictype/test-categ_L.$(OBJEXT)
+test_categ_L_OBJECTS = $(am_test_categ_L_OBJECTS)
+test_categ_L_LDADD = $(LDADD)
+test_categ_L_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Ll_OBJECTS = unictype/test-categ_Ll.$(OBJEXT)
+test_categ_Ll_OBJECTS = $(am_test_categ_Ll_OBJECTS)
+test_categ_Ll_LDADD = $(LDADD)
+test_categ_Ll_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Lm_OBJECTS = unictype/test-categ_Lm.$(OBJEXT)
+test_categ_Lm_OBJECTS = $(am_test_categ_Lm_OBJECTS)
+test_categ_Lm_LDADD = $(LDADD)
+test_categ_Lm_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Lo_OBJECTS = unictype/test-categ_Lo.$(OBJEXT)
+test_categ_Lo_OBJECTS = $(am_test_categ_Lo_OBJECTS)
+test_categ_Lo_LDADD = $(LDADD)
+test_categ_Lo_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Lt_OBJECTS = unictype/test-categ_Lt.$(OBJEXT)
+test_categ_Lt_OBJECTS = $(am_test_categ_Lt_OBJECTS)
+test_categ_Lt_LDADD = $(LDADD)
+test_categ_Lt_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Lu_OBJECTS = unictype/test-categ_Lu.$(OBJEXT)
+test_categ_Lu_OBJECTS = $(am_test_categ_Lu_OBJECTS)
+test_categ_Lu_LDADD = $(LDADD)
+test_categ_Lu_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_M_OBJECTS = unictype/test-categ_M.$(OBJEXT)
+test_categ_M_OBJECTS = $(am_test_categ_M_OBJECTS)
+test_categ_M_LDADD = $(LDADD)
+test_categ_M_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Mc_OBJECTS = unictype/test-categ_Mc.$(OBJEXT)
+test_categ_Mc_OBJECTS = $(am_test_categ_Mc_OBJECTS)
+test_categ_Mc_LDADD = $(LDADD)
+test_categ_Mc_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Me_OBJECTS = unictype/test-categ_Me.$(OBJEXT)
+test_categ_Me_OBJECTS = $(am_test_categ_Me_OBJECTS)
+test_categ_Me_LDADD = $(LDADD)
+test_categ_Me_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Mn_OBJECTS = unictype/test-categ_Mn.$(OBJEXT)
+test_categ_Mn_OBJECTS = $(am_test_categ_Mn_OBJECTS)
+test_categ_Mn_LDADD = $(LDADD)
+test_categ_Mn_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_N_OBJECTS = unictype/test-categ_N.$(OBJEXT)
+test_categ_N_OBJECTS = $(am_test_categ_N_OBJECTS)
+test_categ_N_LDADD = $(LDADD)
+test_categ_N_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Nd_OBJECTS = unictype/test-categ_Nd.$(OBJEXT)
+test_categ_Nd_OBJECTS = $(am_test_categ_Nd_OBJECTS)
+test_categ_Nd_LDADD = $(LDADD)
+test_categ_Nd_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Nl_OBJECTS = unictype/test-categ_Nl.$(OBJEXT)
+test_categ_Nl_OBJECTS = $(am_test_categ_Nl_OBJECTS)
+test_categ_Nl_LDADD = $(LDADD)
+test_categ_Nl_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_No_OBJECTS = unictype/test-categ_No.$(OBJEXT)
+test_categ_No_OBJECTS = $(am_test_categ_No_OBJECTS)
+test_categ_No_LDADD = $(LDADD)
+test_categ_No_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_P_OBJECTS = unictype/test-categ_P.$(OBJEXT)
+test_categ_P_OBJECTS = $(am_test_categ_P_OBJECTS)
+test_categ_P_LDADD = $(LDADD)
+test_categ_P_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Pc_OBJECTS = unictype/test-categ_Pc.$(OBJEXT)
+test_categ_Pc_OBJECTS = $(am_test_categ_Pc_OBJECTS)
+test_categ_Pc_LDADD = $(LDADD)
+test_categ_Pc_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Pd_OBJECTS = unictype/test-categ_Pd.$(OBJEXT)
+test_categ_Pd_OBJECTS = $(am_test_categ_Pd_OBJECTS)
+test_categ_Pd_LDADD = $(LDADD)
+test_categ_Pd_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Pe_OBJECTS = unictype/test-categ_Pe.$(OBJEXT)
+test_categ_Pe_OBJECTS = $(am_test_categ_Pe_OBJECTS)
+test_categ_Pe_LDADD = $(LDADD)
+test_categ_Pe_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Pf_OBJECTS = unictype/test-categ_Pf.$(OBJEXT)
+test_categ_Pf_OBJECTS = $(am_test_categ_Pf_OBJECTS)
+test_categ_Pf_LDADD = $(LDADD)
+test_categ_Pf_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Pi_OBJECTS = unictype/test-categ_Pi.$(OBJEXT)
+test_categ_Pi_OBJECTS = $(am_test_categ_Pi_OBJECTS)
+test_categ_Pi_LDADD = $(LDADD)
+test_categ_Pi_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Po_OBJECTS = unictype/test-categ_Po.$(OBJEXT)
+test_categ_Po_OBJECTS = $(am_test_categ_Po_OBJECTS)
+test_categ_Po_LDADD = $(LDADD)
+test_categ_Po_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Ps_OBJECTS = unictype/test-categ_Ps.$(OBJEXT)
+test_categ_Ps_OBJECTS = $(am_test_categ_Ps_OBJECTS)
+test_categ_Ps_LDADD = $(LDADD)
+test_categ_Ps_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_S_OBJECTS = unictype/test-categ_S.$(OBJEXT)
+test_categ_S_OBJECTS = $(am_test_categ_S_OBJECTS)
+test_categ_S_LDADD = $(LDADD)
+test_categ_S_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Sc_OBJECTS = unictype/test-categ_Sc.$(OBJEXT)
+test_categ_Sc_OBJECTS = $(am_test_categ_Sc_OBJECTS)
+test_categ_Sc_LDADD = $(LDADD)
+test_categ_Sc_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Sk_OBJECTS = unictype/test-categ_Sk.$(OBJEXT)
+test_categ_Sk_OBJECTS = $(am_test_categ_Sk_OBJECTS)
+test_categ_Sk_LDADD = $(LDADD)
+test_categ_Sk_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Sm_OBJECTS = unictype/test-categ_Sm.$(OBJEXT)
+test_categ_Sm_OBJECTS = $(am_test_categ_Sm_OBJECTS)
+test_categ_Sm_LDADD = $(LDADD)
+test_categ_Sm_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_So_OBJECTS = unictype/test-categ_So.$(OBJEXT)
+test_categ_So_OBJECTS = $(am_test_categ_So_OBJECTS)
+test_categ_So_LDADD = $(LDADD)
+test_categ_So_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Z_OBJECTS = unictype/test-categ_Z.$(OBJEXT)
+test_categ_Z_OBJECTS = $(am_test_categ_Z_OBJECTS)
+test_categ_Z_LDADD = $(LDADD)
+test_categ_Z_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Zl_OBJECTS = unictype/test-categ_Zl.$(OBJEXT)
+test_categ_Zl_OBJECTS = $(am_test_categ_Zl_OBJECTS)
+test_categ_Zl_LDADD = $(LDADD)
+test_categ_Zl_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Zp_OBJECTS = unictype/test-categ_Zp.$(OBJEXT)
+test_categ_Zp_OBJECTS = $(am_test_categ_Zp_OBJECTS)
+test_categ_Zp_LDADD = $(LDADD)
+test_categ_Zp_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_Zs_OBJECTS = unictype/test-categ_Zs.$(OBJEXT)
+test_categ_Zs_OBJECTS = $(am_test_categ_Zs_OBJECTS)
+test_categ_Zs_LDADD = $(LDADD)
+test_categ_Zs_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_and_OBJECTS = unictype/test-categ_and.$(OBJEXT)
+test_categ_and_OBJECTS = $(am_test_categ_and_OBJECTS)
+test_categ_and_LDADD = $(LDADD)
+test_categ_and_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_and_not_OBJECTS = unictype/test-categ_and_not.$(OBJEXT)
+test_categ_and_not_OBJECTS = $(am_test_categ_and_not_OBJECTS)
+test_categ_and_not_LDADD = $(LDADD)
+test_categ_and_not_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_byname_OBJECTS = unictype/test-categ_byname.$(OBJEXT)
+test_categ_byname_OBJECTS = $(am_test_categ_byname_OBJECTS)
+test_categ_byname_LDADD = $(LDADD)
+test_categ_byname_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_name_OBJECTS = unictype/test-categ_name.$(OBJEXT)
+test_categ_name_OBJECTS = $(am_test_categ_name_OBJECTS)
+test_categ_name_LDADD = $(LDADD)
+test_categ_name_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am__test_categ_none_SOURCES_DIST = unictype/test-categ_none.c
+@WOE32DLL_FALSE@am_test_categ_none_OBJECTS = \
+@WOE32DLL_FALSE@ unictype/test-categ_none.$(OBJEXT)
+test_categ_none_OBJECTS = $(am_test_categ_none_OBJECTS)
+test_categ_none_LDADD = $(LDADD)
+test_categ_none_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_of_OBJECTS = unictype/test-categ_of.$(OBJEXT)
+test_categ_of_OBJECTS = $(am_test_categ_of_OBJECTS)
+test_categ_of_LDADD = $(LDADD)
+test_categ_of_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_or_OBJECTS = unictype/test-categ_or.$(OBJEXT)
+test_categ_or_OBJECTS = $(am_test_categ_or_OBJECTS)
+test_categ_or_LDADD = $(LDADD)
+test_categ_or_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_categ_test_withtable_OBJECTS = \
+ unictype/test-categ_test_withtable.$(OBJEXT)
+test_categ_test_withtable_OBJECTS = \
+ $(am_test_categ_test_withtable_OBJECTS)
+test_categ_test_withtable_LDADD = $(LDADD)
+test_categ_test_withtable_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_combining_OBJECTS = unictype/test-combining.$(OBJEXT)
+test_combining_OBJECTS = $(am_test_combining_OBJECTS)
+test_combining_LDADD = $(LDADD)
+test_combining_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_compat_decomposition_OBJECTS = \
+ uninorm/test-compat-decomposition.$(OBJEXT)
+test_compat_decomposition_OBJECTS = \
+ $(am_test_compat_decomposition_OBJECTS)
+test_compat_decomposition_LDADD = $(LDADD)
+test_compat_decomposition_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_composition_OBJECTS = uninorm/test-composition.$(OBJEXT)
+test_composition_OBJECTS = $(am_test_composition_OBJECTS)
+test_composition_LDADD = $(LDADD)
+test_composition_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_ctype_alnum_OBJECTS = unictype/test-ctype_alnum.$(OBJEXT)
+test_ctype_alnum_OBJECTS = $(am_test_ctype_alnum_OBJECTS)
+test_ctype_alnum_LDADD = $(LDADD)
+test_ctype_alnum_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_ctype_alpha_OBJECTS = unictype/test-ctype_alpha.$(OBJEXT)
+test_ctype_alpha_OBJECTS = $(am_test_ctype_alpha_OBJECTS)
+test_ctype_alpha_LDADD = $(LDADD)
+test_ctype_alpha_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_ctype_blank_OBJECTS = unictype/test-ctype_blank.$(OBJEXT)
+test_ctype_blank_OBJECTS = $(am_test_ctype_blank_OBJECTS)
+test_ctype_blank_LDADD = $(LDADD)
+test_ctype_blank_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_ctype_cntrl_OBJECTS = unictype/test-ctype_cntrl.$(OBJEXT)
+test_ctype_cntrl_OBJECTS = $(am_test_ctype_cntrl_OBJECTS)
+test_ctype_cntrl_LDADD = $(LDADD)
+test_ctype_cntrl_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_ctype_digit_OBJECTS = unictype/test-ctype_digit.$(OBJEXT)
+test_ctype_digit_OBJECTS = $(am_test_ctype_digit_OBJECTS)
+test_ctype_digit_LDADD = $(LDADD)
+test_ctype_digit_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_ctype_graph_OBJECTS = unictype/test-ctype_graph.$(OBJEXT)
+test_ctype_graph_OBJECTS = $(am_test_ctype_graph_OBJECTS)
+test_ctype_graph_LDADD = $(LDADD)
+test_ctype_graph_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_ctype_lower_OBJECTS = unictype/test-ctype_lower.$(OBJEXT)
+test_ctype_lower_OBJECTS = $(am_test_ctype_lower_OBJECTS)
+test_ctype_lower_LDADD = $(LDADD)
+test_ctype_lower_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_ctype_print_OBJECTS = unictype/test-ctype_print.$(OBJEXT)
+test_ctype_print_OBJECTS = $(am_test_ctype_print_OBJECTS)
+test_ctype_print_LDADD = $(LDADD)
+test_ctype_print_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_ctype_punct_OBJECTS = unictype/test-ctype_punct.$(OBJEXT)
+test_ctype_punct_OBJECTS = $(am_test_ctype_punct_OBJECTS)
+test_ctype_punct_LDADD = $(LDADD)
+test_ctype_punct_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_ctype_space_OBJECTS = unictype/test-ctype_space.$(OBJEXT)
+test_ctype_space_OBJECTS = $(am_test_ctype_space_OBJECTS)
+test_ctype_space_LDADD = $(LDADD)
+test_ctype_space_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_ctype_upper_OBJECTS = unictype/test-ctype_upper.$(OBJEXT)
+test_ctype_upper_OBJECTS = $(am_test_ctype_upper_OBJECTS)
+test_ctype_upper_LDADD = $(LDADD)
+test_ctype_upper_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_ctype_xdigit_OBJECTS = unictype/test-ctype_xdigit.$(OBJEXT)
+test_ctype_xdigit_OBJECTS = $(am_test_ctype_xdigit_OBJECTS)
+test_ctype_xdigit_LDADD = $(LDADD)
+test_ctype_xdigit_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_decdigit_OBJECTS = unictype/test-decdigit.$(OBJEXT)
+test_decdigit_OBJECTS = $(am_test_decdigit_OBJECTS)
+test_decdigit_LDADD = $(LDADD)
+test_decdigit_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_decomposing_form_OBJECTS = \
+ uninorm/test-decomposing-form.$(OBJEXT)
+test_decomposing_form_OBJECTS = $(am_test_decomposing_form_OBJECTS)
+test_decomposing_form_LDADD = $(LDADD)
+test_decomposing_form_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_decomposition_OBJECTS = uninorm/test-decomposition.$(OBJEXT)
+test_decomposition_OBJECTS = $(am_test_decomposition_OBJECTS)
+test_decomposition_LDADD = $(LDADD)
+test_decomposition_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_digit_OBJECTS = unictype/test-digit.$(OBJEXT)
+test_digit_OBJECTS = $(am_test_digit_OBJECTS)
+test_digit_LDADD = $(LDADD)
+test_digit_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
+test_environ_SOURCES = test-environ.c
+test_environ_OBJECTS = test-environ.$(OBJEXT)
+test_environ_LDADD = $(LDADD)
+test_environ_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_errno_SOURCES = test-errno.c
+test_errno_OBJECTS = test-errno.$(OBJEXT)
+test_errno_LDADD = $(LDADD)
+test_errno_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
+am_test_frexpl_nolibm_OBJECTS = test-frexpl.$(OBJEXT)
+test_frexpl_nolibm_OBJECTS = $(am_test_frexpl_nolibm_OBJECTS)
+test_frexpl_nolibm_LDADD = $(LDADD)
+test_frexpl_nolibm_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_fseterr_SOURCES = test-fseterr.c
+test_fseterr_OBJECTS = test-fseterr.$(OBJEXT)
+test_fseterr_LDADD = $(LDADD)
+test_fseterr_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_iconv_SOURCES = test-iconv.c
+test_iconv_OBJECTS = test-iconv.$(OBJEXT)
+am__DEPENDENCIES_2 = libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
+test_iconv_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_ignorable_OBJECTS = unicase/test-ignorable.$(OBJEXT)
+test_ignorable_OBJECTS = $(am_test_ignorable_OBJECTS)
+test_ignorable_LDADD = $(LDADD)
+test_ignorable_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_isnand_nolibm_SOURCES = test-isnand-nolibm.c
+test_isnand_nolibm_OBJECTS = test-isnand-nolibm.$(OBJEXT)
+test_isnand_nolibm_LDADD = $(LDADD)
+test_isnand_nolibm_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_isnanf_nolibm_SOURCES = test-isnanf-nolibm.c
+test_isnanf_nolibm_OBJECTS = test-isnanf-nolibm.$(OBJEXT)
+test_isnanf_nolibm_LDADD = $(LDADD)
+test_isnanf_nolibm_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_isnanl_nolibm_SOURCES = test-isnanl-nolibm.c
+test_isnanl_nolibm_OBJECTS = test-isnanl-nolibm.$(OBJEXT)
+test_isnanl_nolibm_LDADD = $(LDADD)
+test_isnanl_nolibm_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_locale_SOURCES = test-locale.c
+test_locale_OBJECTS = test-locale.$(OBJEXT)
+test_locale_LDADD = $(LDADD)
+test_locale_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_locale_language_OBJECTS = \
+ unicase/test-locale-language.$(OBJEXT)
+test_locale_language_OBJECTS = $(am_test_locale_language_OBJECTS)
+test_locale_language_DEPENDENCIES = $(am__DEPENDENCIES_2)
+test_localename_SOURCES = test-localename.c
+test_localename_OBJECTS = test-localename.$(OBJEXT)
+test_localename_DEPENDENCIES = $(am__DEPENDENCIES_2)
+test_malloca_SOURCES = test-malloca.c
+test_malloca_OBJECTS = test-malloca.$(OBJEXT)
+test_malloca_LDADD = $(LDADD)
+test_malloca_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_math_SOURCES = test-math.c
+test_math_OBJECTS = test-math.$(OBJEXT)
+test_math_LDADD = $(LDADD)
+test_math_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
+test_mbrtowc_SOURCES = test-mbrtowc.c
+test_mbrtowc_OBJECTS = test-mbrtowc.$(OBJEXT)
+test_mbrtowc_LDADD = $(LDADD)
+test_mbrtowc_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_mbsinit_SOURCES = test-mbsinit.c
+test_mbsinit_OBJECTS = test-mbsinit.$(OBJEXT)
+test_mbsinit_LDADD = $(LDADD)
+test_mbsinit_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_memchr_SOURCES = test-memchr.c
+test_memchr_OBJECTS = test-memchr.$(OBJEXT)
+test_memchr_LDADD = $(LDADD)
+test_memchr_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_mirror_OBJECTS = unictype/test-mirror.$(OBJEXT)
+test_mirror_OBJECTS = $(am_test_mirror_OBJECTS)
+test_mirror_LDADD = $(LDADD)
+test_mirror_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_nfc_OBJECTS = uninorm/test-nfc.$(OBJEXT) \
+ uninorm/test-u8-nfc.$(OBJEXT) uninorm/test-u16-nfc.$(OBJEXT) \
+ uninorm/test-u32-nfc.$(OBJEXT)
+test_nfc_OBJECTS = $(am_test_nfc_OBJECTS)
+test_nfc_LDADD = $(LDADD)
+test_nfc_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
+am_test_nfd_OBJECTS = uninorm/test-nfd.$(OBJEXT) \
+ uninorm/test-u8-nfd.$(OBJEXT) uninorm/test-u16-nfd.$(OBJEXT) \
+ uninorm/test-u32-nfd.$(OBJEXT)
+test_nfd_OBJECTS = $(am_test_nfd_OBJECTS)
+test_nfd_LDADD = $(LDADD)
+test_nfd_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
+am_test_nfkc_OBJECTS = uninorm/test-nfkc.$(OBJEXT) \
+ uninorm/test-u8-nfkc.$(OBJEXT) uninorm/test-u16-nfkc.$(OBJEXT) \
+ uninorm/test-u32-nfkc.$(OBJEXT)
+test_nfkc_OBJECTS = $(am_test_nfkc_OBJECTS)
+test_nfkc_LDADD = $(LDADD)
+test_nfkc_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
+am_test_nfkd_OBJECTS = uninorm/test-nfkd.$(OBJEXT) \
+ uninorm/test-u8-nfkd.$(OBJEXT) uninorm/test-u16-nfkd.$(OBJEXT) \
+ uninorm/test-u32-nfkd.$(OBJEXT)
+test_nfkd_OBJECTS = $(am_test_nfkd_OBJECTS)
+test_nfkd_LDADD = $(LDADD)
+test_nfkd_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
+am_test_numeric_OBJECTS = unictype/test-numeric.$(OBJEXT)
+test_numeric_OBJECTS = $(am_test_numeric_OBJECTS)
+test_numeric_LDADD = $(LDADD)
+test_numeric_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_alphabetic_OBJECTS = unictype/test-pr_alphabetic.$(OBJEXT)
+test_pr_alphabetic_OBJECTS = $(am_test_pr_alphabetic_OBJECTS)
+test_pr_alphabetic_LDADD = $(LDADD)
+test_pr_alphabetic_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_ascii_hex_digit_OBJECTS = \
+ unictype/test-pr_ascii_hex_digit.$(OBJEXT)
+test_pr_ascii_hex_digit_OBJECTS = \
+ $(am_test_pr_ascii_hex_digit_OBJECTS)
+test_pr_ascii_hex_digit_LDADD = $(LDADD)
+test_pr_ascii_hex_digit_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_bidi_arabic_digit_OBJECTS = \
+ unictype/test-pr_bidi_arabic_digit.$(OBJEXT)
+test_pr_bidi_arabic_digit_OBJECTS = \
+ $(am_test_pr_bidi_arabic_digit_OBJECTS)
+test_pr_bidi_arabic_digit_LDADD = $(LDADD)
+test_pr_bidi_arabic_digit_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_bidi_arabic_right_to_left_OBJECTS = \
+ unictype/test-pr_bidi_arabic_right_to_left.$(OBJEXT)
+test_pr_bidi_arabic_right_to_left_OBJECTS = \
+ $(am_test_pr_bidi_arabic_right_to_left_OBJECTS)
+test_pr_bidi_arabic_right_to_left_LDADD = $(LDADD)
+test_pr_bidi_arabic_right_to_left_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_bidi_block_separator_OBJECTS = \
+ unictype/test-pr_bidi_block_separator.$(OBJEXT)
+test_pr_bidi_block_separator_OBJECTS = \
+ $(am_test_pr_bidi_block_separator_OBJECTS)
+test_pr_bidi_block_separator_LDADD = $(LDADD)
+test_pr_bidi_block_separator_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_bidi_boundary_neutral_OBJECTS = \
+ unictype/test-pr_bidi_boundary_neutral.$(OBJEXT)
+test_pr_bidi_boundary_neutral_OBJECTS = \
+ $(am_test_pr_bidi_boundary_neutral_OBJECTS)
+test_pr_bidi_boundary_neutral_LDADD = $(LDADD)
+test_pr_bidi_boundary_neutral_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_bidi_common_separator_OBJECTS = \
+ unictype/test-pr_bidi_common_separator.$(OBJEXT)
+test_pr_bidi_common_separator_OBJECTS = \
+ $(am_test_pr_bidi_common_separator_OBJECTS)
+test_pr_bidi_common_separator_LDADD = $(LDADD)
+test_pr_bidi_common_separator_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_bidi_control_OBJECTS = \
+ unictype/test-pr_bidi_control.$(OBJEXT)
+test_pr_bidi_control_OBJECTS = $(am_test_pr_bidi_control_OBJECTS)
+test_pr_bidi_control_LDADD = $(LDADD)
+test_pr_bidi_control_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_bidi_embedding_or_override_OBJECTS = \
+ unictype/test-pr_bidi_embedding_or_override.$(OBJEXT)
+test_pr_bidi_embedding_or_override_OBJECTS = \
+ $(am_test_pr_bidi_embedding_or_override_OBJECTS)
+test_pr_bidi_embedding_or_override_LDADD = $(LDADD)
+test_pr_bidi_embedding_or_override_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_bidi_eur_num_separator_OBJECTS = \
+ unictype/test-pr_bidi_eur_num_separator.$(OBJEXT)
+test_pr_bidi_eur_num_separator_OBJECTS = \
+ $(am_test_pr_bidi_eur_num_separator_OBJECTS)
+test_pr_bidi_eur_num_separator_LDADD = $(LDADD)
+test_pr_bidi_eur_num_separator_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_bidi_eur_num_terminator_OBJECTS = \
+ unictype/test-pr_bidi_eur_num_terminator.$(OBJEXT)
+test_pr_bidi_eur_num_terminator_OBJECTS = \
+ $(am_test_pr_bidi_eur_num_terminator_OBJECTS)
+test_pr_bidi_eur_num_terminator_LDADD = $(LDADD)
+test_pr_bidi_eur_num_terminator_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_bidi_european_digit_OBJECTS = \
+ unictype/test-pr_bidi_european_digit.$(OBJEXT)
+test_pr_bidi_european_digit_OBJECTS = \
+ $(am_test_pr_bidi_european_digit_OBJECTS)
+test_pr_bidi_european_digit_LDADD = $(LDADD)
+test_pr_bidi_european_digit_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_bidi_hebrew_right_to_left_OBJECTS = \
+ unictype/test-pr_bidi_hebrew_right_to_left.$(OBJEXT)
+test_pr_bidi_hebrew_right_to_left_OBJECTS = \
+ $(am_test_pr_bidi_hebrew_right_to_left_OBJECTS)
+test_pr_bidi_hebrew_right_to_left_LDADD = $(LDADD)
+test_pr_bidi_hebrew_right_to_left_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_bidi_left_to_right_OBJECTS = \
+ unictype/test-pr_bidi_left_to_right.$(OBJEXT)
+test_pr_bidi_left_to_right_OBJECTS = \
+ $(am_test_pr_bidi_left_to_right_OBJECTS)
+test_pr_bidi_left_to_right_LDADD = $(LDADD)
+test_pr_bidi_left_to_right_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_bidi_non_spacing_mark_OBJECTS = \
+ unictype/test-pr_bidi_non_spacing_mark.$(OBJEXT)
+test_pr_bidi_non_spacing_mark_OBJECTS = \
+ $(am_test_pr_bidi_non_spacing_mark_OBJECTS)
+test_pr_bidi_non_spacing_mark_LDADD = $(LDADD)
+test_pr_bidi_non_spacing_mark_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_bidi_other_neutral_OBJECTS = \
+ unictype/test-pr_bidi_other_neutral.$(OBJEXT)
+test_pr_bidi_other_neutral_OBJECTS = \
+ $(am_test_pr_bidi_other_neutral_OBJECTS)
+test_pr_bidi_other_neutral_LDADD = $(LDADD)
+test_pr_bidi_other_neutral_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_bidi_pdf_OBJECTS = unictype/test-pr_bidi_pdf.$(OBJEXT)
+test_pr_bidi_pdf_OBJECTS = $(am_test_pr_bidi_pdf_OBJECTS)
+test_pr_bidi_pdf_LDADD = $(LDADD)
+test_pr_bidi_pdf_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_bidi_segment_separator_OBJECTS = \
+ unictype/test-pr_bidi_segment_separator.$(OBJEXT)
+test_pr_bidi_segment_separator_OBJECTS = \
+ $(am_test_pr_bidi_segment_separator_OBJECTS)
+test_pr_bidi_segment_separator_LDADD = $(LDADD)
+test_pr_bidi_segment_separator_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_bidi_whitespace_OBJECTS = \
+ unictype/test-pr_bidi_whitespace.$(OBJEXT)
+test_pr_bidi_whitespace_OBJECTS = \
+ $(am_test_pr_bidi_whitespace_OBJECTS)
+test_pr_bidi_whitespace_LDADD = $(LDADD)
+test_pr_bidi_whitespace_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_byname_OBJECTS = unictype/test-pr_byname.$(OBJEXT)
+test_pr_byname_OBJECTS = $(am_test_pr_byname_OBJECTS)
+test_pr_byname_LDADD = $(LDADD)
+test_pr_byname_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_combining_OBJECTS = unictype/test-pr_combining.$(OBJEXT)
+test_pr_combining_OBJECTS = $(am_test_pr_combining_OBJECTS)
+test_pr_combining_LDADD = $(LDADD)
+test_pr_combining_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_composite_OBJECTS = unictype/test-pr_composite.$(OBJEXT)
+test_pr_composite_OBJECTS = $(am_test_pr_composite_OBJECTS)
+test_pr_composite_LDADD = $(LDADD)
+test_pr_composite_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_currency_symbol_OBJECTS = \
+ unictype/test-pr_currency_symbol.$(OBJEXT)
+test_pr_currency_symbol_OBJECTS = \
+ $(am_test_pr_currency_symbol_OBJECTS)
+test_pr_currency_symbol_LDADD = $(LDADD)
+test_pr_currency_symbol_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_dash_OBJECTS = unictype/test-pr_dash.$(OBJEXT)
+test_pr_dash_OBJECTS = $(am_test_pr_dash_OBJECTS)
+test_pr_dash_LDADD = $(LDADD)
+test_pr_dash_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_decimal_digit_OBJECTS = \
+ unictype/test-pr_decimal_digit.$(OBJEXT)
+test_pr_decimal_digit_OBJECTS = $(am_test_pr_decimal_digit_OBJECTS)
+test_pr_decimal_digit_LDADD = $(LDADD)
+test_pr_decimal_digit_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_default_ignorable_code_point_OBJECTS = \
+ unictype/test-pr_default_ignorable_code_point.$(OBJEXT)
+test_pr_default_ignorable_code_point_OBJECTS = \
+ $(am_test_pr_default_ignorable_code_point_OBJECTS)
+test_pr_default_ignorable_code_point_LDADD = $(LDADD)
+test_pr_default_ignorable_code_point_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_deprecated_OBJECTS = unictype/test-pr_deprecated.$(OBJEXT)
+test_pr_deprecated_OBJECTS = $(am_test_pr_deprecated_OBJECTS)
+test_pr_deprecated_LDADD = $(LDADD)
+test_pr_deprecated_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_diacritic_OBJECTS = unictype/test-pr_diacritic.$(OBJEXT)
+test_pr_diacritic_OBJECTS = $(am_test_pr_diacritic_OBJECTS)
+test_pr_diacritic_LDADD = $(LDADD)
+test_pr_diacritic_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_extender_OBJECTS = unictype/test-pr_extender.$(OBJEXT)
+test_pr_extender_OBJECTS = $(am_test_pr_extender_OBJECTS)
+test_pr_extender_LDADD = $(LDADD)
+test_pr_extender_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_format_control_OBJECTS = \
+ unictype/test-pr_format_control.$(OBJEXT)
+test_pr_format_control_OBJECTS = $(am_test_pr_format_control_OBJECTS)
+test_pr_format_control_LDADD = $(LDADD)
+test_pr_format_control_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_grapheme_base_OBJECTS = \
+ unictype/test-pr_grapheme_base.$(OBJEXT)
+test_pr_grapheme_base_OBJECTS = $(am_test_pr_grapheme_base_OBJECTS)
+test_pr_grapheme_base_LDADD = $(LDADD)
+test_pr_grapheme_base_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_grapheme_extend_OBJECTS = \
+ unictype/test-pr_grapheme_extend.$(OBJEXT)
+test_pr_grapheme_extend_OBJECTS = \
+ $(am_test_pr_grapheme_extend_OBJECTS)
+test_pr_grapheme_extend_LDADD = $(LDADD)
+test_pr_grapheme_extend_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_grapheme_link_OBJECTS = \
+ unictype/test-pr_grapheme_link.$(OBJEXT)
+test_pr_grapheme_link_OBJECTS = $(am_test_pr_grapheme_link_OBJECTS)
+test_pr_grapheme_link_LDADD = $(LDADD)
+test_pr_grapheme_link_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_hex_digit_OBJECTS = unictype/test-pr_hex_digit.$(OBJEXT)
+test_pr_hex_digit_OBJECTS = $(am_test_pr_hex_digit_OBJECTS)
+test_pr_hex_digit_LDADD = $(LDADD)
+test_pr_hex_digit_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_hyphen_OBJECTS = unictype/test-pr_hyphen.$(OBJEXT)
+test_pr_hyphen_OBJECTS = $(am_test_pr_hyphen_OBJECTS)
+test_pr_hyphen_LDADD = $(LDADD)
+test_pr_hyphen_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_id_continue_OBJECTS = \
+ unictype/test-pr_id_continue.$(OBJEXT)
+test_pr_id_continue_OBJECTS = $(am_test_pr_id_continue_OBJECTS)
+test_pr_id_continue_LDADD = $(LDADD)
+test_pr_id_continue_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_id_start_OBJECTS = unictype/test-pr_id_start.$(OBJEXT)
+test_pr_id_start_OBJECTS = $(am_test_pr_id_start_OBJECTS)
+test_pr_id_start_LDADD = $(LDADD)
+test_pr_id_start_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_ideographic_OBJECTS = \
+ unictype/test-pr_ideographic.$(OBJEXT)
+test_pr_ideographic_OBJECTS = $(am_test_pr_ideographic_OBJECTS)
+test_pr_ideographic_LDADD = $(LDADD)
+test_pr_ideographic_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_ids_binary_operator_OBJECTS = \
+ unictype/test-pr_ids_binary_operator.$(OBJEXT)
+test_pr_ids_binary_operator_OBJECTS = \
+ $(am_test_pr_ids_binary_operator_OBJECTS)
+test_pr_ids_binary_operator_LDADD = $(LDADD)
+test_pr_ids_binary_operator_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_ids_trinary_operator_OBJECTS = \
+ unictype/test-pr_ids_trinary_operator.$(OBJEXT)
+test_pr_ids_trinary_operator_OBJECTS = \
+ $(am_test_pr_ids_trinary_operator_OBJECTS)
+test_pr_ids_trinary_operator_LDADD = $(LDADD)
+test_pr_ids_trinary_operator_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_ignorable_control_OBJECTS = \
+ unictype/test-pr_ignorable_control.$(OBJEXT)
+test_pr_ignorable_control_OBJECTS = \
+ $(am_test_pr_ignorable_control_OBJECTS)
+test_pr_ignorable_control_LDADD = $(LDADD)
+test_pr_ignorable_control_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_iso_control_OBJECTS = \
+ unictype/test-pr_iso_control.$(OBJEXT)
+test_pr_iso_control_OBJECTS = $(am_test_pr_iso_control_OBJECTS)
+test_pr_iso_control_LDADD = $(LDADD)
+test_pr_iso_control_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_join_control_OBJECTS = \
+ unictype/test-pr_join_control.$(OBJEXT)
+test_pr_join_control_OBJECTS = $(am_test_pr_join_control_OBJECTS)
+test_pr_join_control_LDADD = $(LDADD)
+test_pr_join_control_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_left_of_pair_OBJECTS = \
+ unictype/test-pr_left_of_pair.$(OBJEXT)
+test_pr_left_of_pair_OBJECTS = $(am_test_pr_left_of_pair_OBJECTS)
+test_pr_left_of_pair_LDADD = $(LDADD)
+test_pr_left_of_pair_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_line_separator_OBJECTS = \
+ unictype/test-pr_line_separator.$(OBJEXT)
+test_pr_line_separator_OBJECTS = $(am_test_pr_line_separator_OBJECTS)
+test_pr_line_separator_LDADD = $(LDADD)
+test_pr_line_separator_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_logical_order_exception_OBJECTS = \
+ unictype/test-pr_logical_order_exception.$(OBJEXT)
+test_pr_logical_order_exception_OBJECTS = \
+ $(am_test_pr_logical_order_exception_OBJECTS)
+test_pr_logical_order_exception_LDADD = $(LDADD)
+test_pr_logical_order_exception_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_lowercase_OBJECTS = unictype/test-pr_lowercase.$(OBJEXT)
+test_pr_lowercase_OBJECTS = $(am_test_pr_lowercase_OBJECTS)
+test_pr_lowercase_LDADD = $(LDADD)
+test_pr_lowercase_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_math_OBJECTS = unictype/test-pr_math.$(OBJEXT)
+test_pr_math_OBJECTS = $(am_test_pr_math_OBJECTS)
+test_pr_math_LDADD = $(LDADD)
+test_pr_math_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_non_break_OBJECTS = unictype/test-pr_non_break.$(OBJEXT)
+test_pr_non_break_OBJECTS = $(am_test_pr_non_break_OBJECTS)
+test_pr_non_break_LDADD = $(LDADD)
+test_pr_non_break_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_not_a_character_OBJECTS = \
+ unictype/test-pr_not_a_character.$(OBJEXT)
+test_pr_not_a_character_OBJECTS = \
+ $(am_test_pr_not_a_character_OBJECTS)
+test_pr_not_a_character_LDADD = $(LDADD)
+test_pr_not_a_character_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_numeric_OBJECTS = unictype/test-pr_numeric.$(OBJEXT)
+test_pr_numeric_OBJECTS = $(am_test_pr_numeric_OBJECTS)
+test_pr_numeric_LDADD = $(LDADD)
+test_pr_numeric_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_other_alphabetic_OBJECTS = \
+ unictype/test-pr_other_alphabetic.$(OBJEXT)
+test_pr_other_alphabetic_OBJECTS = \
+ $(am_test_pr_other_alphabetic_OBJECTS)
+test_pr_other_alphabetic_LDADD = $(LDADD)
+test_pr_other_alphabetic_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_other_default_ignorable_code_point_OBJECTS = \
+ unictype/test-pr_other_default_ignorable_code_point.$(OBJEXT)
+test_pr_other_default_ignorable_code_point_OBJECTS = \
+ $(am_test_pr_other_default_ignorable_code_point_OBJECTS)
+test_pr_other_default_ignorable_code_point_LDADD = $(LDADD)
+test_pr_other_default_ignorable_code_point_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_other_grapheme_extend_OBJECTS = \
+ unictype/test-pr_other_grapheme_extend.$(OBJEXT)
+test_pr_other_grapheme_extend_OBJECTS = \
+ $(am_test_pr_other_grapheme_extend_OBJECTS)
+test_pr_other_grapheme_extend_LDADD = $(LDADD)
+test_pr_other_grapheme_extend_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_other_id_continue_OBJECTS = \
+ unictype/test-pr_other_id_continue.$(OBJEXT)
+test_pr_other_id_continue_OBJECTS = \
+ $(am_test_pr_other_id_continue_OBJECTS)
+test_pr_other_id_continue_LDADD = $(LDADD)
+test_pr_other_id_continue_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_other_id_start_OBJECTS = \
+ unictype/test-pr_other_id_start.$(OBJEXT)
+test_pr_other_id_start_OBJECTS = $(am_test_pr_other_id_start_OBJECTS)
+test_pr_other_id_start_LDADD = $(LDADD)
+test_pr_other_id_start_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_other_lowercase_OBJECTS = \
+ unictype/test-pr_other_lowercase.$(OBJEXT)
+test_pr_other_lowercase_OBJECTS = \
+ $(am_test_pr_other_lowercase_OBJECTS)
+test_pr_other_lowercase_LDADD = $(LDADD)
+test_pr_other_lowercase_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_other_math_OBJECTS = unictype/test-pr_other_math.$(OBJEXT)
+test_pr_other_math_OBJECTS = $(am_test_pr_other_math_OBJECTS)
+test_pr_other_math_LDADD = $(LDADD)
+test_pr_other_math_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_other_uppercase_OBJECTS = \
+ unictype/test-pr_other_uppercase.$(OBJEXT)
+test_pr_other_uppercase_OBJECTS = \
+ $(am_test_pr_other_uppercase_OBJECTS)
+test_pr_other_uppercase_LDADD = $(LDADD)
+test_pr_other_uppercase_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_paired_punctuation_OBJECTS = \
+ unictype/test-pr_paired_punctuation.$(OBJEXT)
+test_pr_paired_punctuation_OBJECTS = \
+ $(am_test_pr_paired_punctuation_OBJECTS)
+test_pr_paired_punctuation_LDADD = $(LDADD)
+test_pr_paired_punctuation_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_paragraph_separator_OBJECTS = \
+ unictype/test-pr_paragraph_separator.$(OBJEXT)
+test_pr_paragraph_separator_OBJECTS = \
+ $(am_test_pr_paragraph_separator_OBJECTS)
+test_pr_paragraph_separator_LDADD = $(LDADD)
+test_pr_paragraph_separator_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_pattern_syntax_OBJECTS = \
+ unictype/test-pr_pattern_syntax.$(OBJEXT)
+test_pr_pattern_syntax_OBJECTS = $(am_test_pr_pattern_syntax_OBJECTS)
+test_pr_pattern_syntax_LDADD = $(LDADD)
+test_pr_pattern_syntax_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_pattern_white_space_OBJECTS = \
+ unictype/test-pr_pattern_white_space.$(OBJEXT)
+test_pr_pattern_white_space_OBJECTS = \
+ $(am_test_pr_pattern_white_space_OBJECTS)
+test_pr_pattern_white_space_LDADD = $(LDADD)
+test_pr_pattern_white_space_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_private_use_OBJECTS = \
+ unictype/test-pr_private_use.$(OBJEXT)
+test_pr_private_use_OBJECTS = $(am_test_pr_private_use_OBJECTS)
+test_pr_private_use_LDADD = $(LDADD)
+test_pr_private_use_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_punctuation_OBJECTS = \
+ unictype/test-pr_punctuation.$(OBJEXT)
+test_pr_punctuation_OBJECTS = $(am_test_pr_punctuation_OBJECTS)
+test_pr_punctuation_LDADD = $(LDADD)
+test_pr_punctuation_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_quotation_mark_OBJECTS = \
+ unictype/test-pr_quotation_mark.$(OBJEXT)
+test_pr_quotation_mark_OBJECTS = $(am_test_pr_quotation_mark_OBJECTS)
+test_pr_quotation_mark_LDADD = $(LDADD)
+test_pr_quotation_mark_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_radical_OBJECTS = unictype/test-pr_radical.$(OBJEXT)
+test_pr_radical_OBJECTS = $(am_test_pr_radical_OBJECTS)
+test_pr_radical_LDADD = $(LDADD)
+test_pr_radical_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_sentence_terminal_OBJECTS = \
+ unictype/test-pr_sentence_terminal.$(OBJEXT)
+test_pr_sentence_terminal_OBJECTS = \
+ $(am_test_pr_sentence_terminal_OBJECTS)
+test_pr_sentence_terminal_LDADD = $(LDADD)
+test_pr_sentence_terminal_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_soft_dotted_OBJECTS = \
+ unictype/test-pr_soft_dotted.$(OBJEXT)
+test_pr_soft_dotted_OBJECTS = $(am_test_pr_soft_dotted_OBJECTS)
+test_pr_soft_dotted_LDADD = $(LDADD)
+test_pr_soft_dotted_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_space_OBJECTS = unictype/test-pr_space.$(OBJEXT)
+test_pr_space_OBJECTS = $(am_test_pr_space_OBJECTS)
+test_pr_space_LDADD = $(LDADD)
+test_pr_space_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_terminal_punctuation_OBJECTS = \
+ unictype/test-pr_terminal_punctuation.$(OBJEXT)
+test_pr_terminal_punctuation_OBJECTS = \
+ $(am_test_pr_terminal_punctuation_OBJECTS)
+test_pr_terminal_punctuation_LDADD = $(LDADD)
+test_pr_terminal_punctuation_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_test_OBJECTS = unictype/test-pr_test.$(OBJEXT)
+test_pr_test_OBJECTS = $(am_test_pr_test_OBJECTS)
+test_pr_test_LDADD = $(LDADD)
+test_pr_test_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_titlecase_OBJECTS = unictype/test-pr_titlecase.$(OBJEXT)
+test_pr_titlecase_OBJECTS = $(am_test_pr_titlecase_OBJECTS)
+test_pr_titlecase_LDADD = $(LDADD)
+test_pr_titlecase_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_unassigned_code_value_OBJECTS = \
+ unictype/test-pr_unassigned_code_value.$(OBJEXT)
+test_pr_unassigned_code_value_OBJECTS = \
+ $(am_test_pr_unassigned_code_value_OBJECTS)
+test_pr_unassigned_code_value_LDADD = $(LDADD)
+test_pr_unassigned_code_value_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_unified_ideograph_OBJECTS = \
+ unictype/test-pr_unified_ideograph.$(OBJEXT)
+test_pr_unified_ideograph_OBJECTS = \
+ $(am_test_pr_unified_ideograph_OBJECTS)
+test_pr_unified_ideograph_LDADD = $(LDADD)
+test_pr_unified_ideograph_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_uppercase_OBJECTS = unictype/test-pr_uppercase.$(OBJEXT)
+test_pr_uppercase_OBJECTS = $(am_test_pr_uppercase_OBJECTS)
+test_pr_uppercase_LDADD = $(LDADD)
+test_pr_uppercase_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_variation_selector_OBJECTS = \
+ unictype/test-pr_variation_selector.$(OBJEXT)
+test_pr_variation_selector_OBJECTS = \
+ $(am_test_pr_variation_selector_OBJECTS)
+test_pr_variation_selector_LDADD = $(LDADD)
+test_pr_variation_selector_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_white_space_OBJECTS = \
+ unictype/test-pr_white_space.$(OBJEXT)
+test_pr_white_space_OBJECTS = $(am_test_pr_white_space_OBJECTS)
+test_pr_white_space_LDADD = $(LDADD)
+test_pr_white_space_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_xid_continue_OBJECTS = \
+ unictype/test-pr_xid_continue.$(OBJEXT)
+test_pr_xid_continue_OBJECTS = $(am_test_pr_xid_continue_OBJECTS)
+test_pr_xid_continue_LDADD = $(LDADD)
+test_pr_xid_continue_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_xid_start_OBJECTS = unictype/test-pr_xid_start.$(OBJEXT)
+test_pr_xid_start_OBJECTS = $(am_test_pr_xid_start_OBJECTS)
+test_pr_xid_start_LDADD = $(LDADD)
+test_pr_xid_start_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_pr_zero_width_OBJECTS = unictype/test-pr_zero_width.$(OBJEXT)
+test_pr_zero_width_OBJECTS = $(am_test_pr_zero_width_OBJECTS)
+test_pr_zero_width_LDADD = $(LDADD)
+test_pr_zero_width_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_printf_frexp_SOURCES = test-printf-frexp.c
+test_printf_frexp_OBJECTS = test-printf-frexp.$(OBJEXT)
+test_printf_frexp_LDADD = $(LDADD)
+test_printf_frexp_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_printf_frexpl_SOURCES = test-printf-frexpl.c
+test_printf_frexpl_OBJECTS = test-printf-frexpl.$(OBJEXT)
+test_printf_frexpl_LDADD = $(LDADD)
+test_printf_frexpl_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_scripts_OBJECTS = unictype/test-scripts.$(OBJEXT)
+test_scripts_OBJECTS = $(am_test_scripts_OBJECTS)
+test_scripts_LDADD = $(LDADD)
+test_scripts_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_signbit_SOURCES = test-signbit.c
+test_signbit_OBJECTS = test-signbit.$(OBJEXT)
+test_signbit_LDADD = $(LDADD)
+test_signbit_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_stdbool_SOURCES = test-stdbool.c
+test_stdbool_OBJECTS = test-stdbool.$(OBJEXT)
+test_stdbool_LDADD = $(LDADD)
+test_stdbool_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_stdint_SOURCES = test-stdint.c
+test_stdint_OBJECTS = test-stdint.$(OBJEXT)
+test_stdint_LDADD = $(LDADD)
+test_stdint_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_stdlib_SOURCES = test-stdlib.c
+test_stdlib_OBJECTS = test-stdlib.$(OBJEXT)
+test_stdlib_LDADD = $(LDADD)
+test_stdlib_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_strerror_SOURCES = test-strerror.c
+test_strerror_OBJECTS = test-strerror.$(OBJEXT)
+test_strerror_LDADD = $(LDADD)
+test_strerror_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_striconveh_SOURCES = test-striconveh.c
+test_striconveh_OBJECTS = test-striconveh.$(OBJEXT)
+test_striconveh_DEPENDENCIES = $(am__DEPENDENCIES_2)
+test_striconveha_SOURCES = test-striconveha.c
+test_striconveha_OBJECTS = test-striconveha.$(OBJEXT)
+test_striconveha_DEPENDENCIES = $(am__DEPENDENCIES_2)
+test_string_SOURCES = test-string.c
+test_string_OBJECTS = test-string.$(OBJEXT)
+test_string_LDADD = $(LDADD)
+test_string_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_sy_c_ident_OBJECTS = unictype/test-sy_c_ident.$(OBJEXT)
+test_sy_c_ident_OBJECTS = $(am_test_sy_c_ident_OBJECTS)
+test_sy_c_ident_LDADD = $(LDADD)
+test_sy_c_ident_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_sy_c_whitespace_OBJECTS = \
+ unictype/test-sy_c_whitespace.$(OBJEXT)
+test_sy_c_whitespace_OBJECTS = $(am_test_sy_c_whitespace_OBJECTS)
+test_sy_c_whitespace_LDADD = $(LDADD)
+test_sy_c_whitespace_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_sy_java_ident_OBJECTS = unictype/test-sy_java_ident.$(OBJEXT)
+test_sy_java_ident_OBJECTS = $(am_test_sy_java_ident_OBJECTS)
+test_sy_java_ident_LDADD = $(LDADD)
+test_sy_java_ident_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_sy_java_whitespace_OBJECTS = \
+ unictype/test-sy_java_whitespace.$(OBJEXT)
+test_sy_java_whitespace_OBJECTS = \
+ $(am_test_sy_java_whitespace_OBJECTS)
+test_sy_java_whitespace_LDADD = $(LDADD)
+test_sy_java_whitespace_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_u16_asnprintf1_OBJECTS = \
+ unistdio/test-u16-asnprintf1.$(OBJEXT)
+test_u16_asnprintf1_OBJECTS = $(am_test_u16_asnprintf1_OBJECTS)
+test_u16_asnprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u16_casecmp_OBJECTS = unicase/test-u16-casecmp.$(OBJEXT)
+test_u16_casecmp_OBJECTS = $(am_test_u16_casecmp_OBJECTS)
+test_u16_casecmp_LDADD = $(LDADD)
+test_u16_casecmp_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u16_casecoll_OBJECTS = unicase/test-u16-casecoll.$(OBJEXT)
+test_u16_casecoll_OBJECTS = $(am_test_u16_casecoll_OBJECTS)
+test_u16_casecoll_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u16_casefold_OBJECTS = unicase/test-u16-casefold.$(OBJEXT)
+test_u16_casefold_OBJECTS = $(am_test_u16_casefold_OBJECTS)
+test_u16_casefold_LDADD = $(LDADD)
+test_u16_casefold_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u16_conv_from_enc_OBJECTS = \
+ uniconv/test-u16-conv-from-enc.$(OBJEXT)
+test_u16_conv_from_enc_OBJECTS = $(am_test_u16_conv_from_enc_OBJECTS)
+test_u16_conv_from_enc_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u16_conv_to_enc_OBJECTS = \
+ uniconv/test-u16-conv-to-enc.$(OBJEXT)
+test_u16_conv_to_enc_OBJECTS = $(am_test_u16_conv_to_enc_OBJECTS)
+test_u16_conv_to_enc_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u16_is_cased_OBJECTS = unicase/test-u16-is-cased.$(OBJEXT)
+test_u16_is_cased_OBJECTS = $(am_test_u16_is_cased_OBJECTS)
+test_u16_is_cased_LDADD = $(LDADD)
+test_u16_is_cased_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u16_is_casefolded_OBJECTS = \
+ unicase/test-u16-is-casefolded.$(OBJEXT)
+test_u16_is_casefolded_OBJECTS = $(am_test_u16_is_casefolded_OBJECTS)
+test_u16_is_casefolded_LDADD = $(LDADD)
+test_u16_is_casefolded_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_u16_is_lowercase_OBJECTS = \
+ unicase/test-u16-is-lowercase.$(OBJEXT)
+test_u16_is_lowercase_OBJECTS = $(am_test_u16_is_lowercase_OBJECTS)
+test_u16_is_lowercase_LDADD = $(LDADD)
+test_u16_is_lowercase_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u16_is_titlecase_OBJECTS = \
+ unicase/test-u16-is-titlecase.$(OBJEXT)
+test_u16_is_titlecase_OBJECTS = $(am_test_u16_is_titlecase_OBJECTS)
+test_u16_is_titlecase_LDADD = $(LDADD)
+test_u16_is_titlecase_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u16_is_uppercase_OBJECTS = \
+ unicase/test-u16-is-uppercase.$(OBJEXT)
+test_u16_is_uppercase_OBJECTS = $(am_test_u16_is_uppercase_OBJECTS)
+test_u16_is_uppercase_LDADD = $(LDADD)
+test_u16_is_uppercase_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u16_normcmp_OBJECTS = uninorm/test-u16-normcmp.$(OBJEXT)
+test_u16_normcmp_OBJECTS = $(am_test_u16_normcmp_OBJECTS)
+test_u16_normcmp_LDADD = $(LDADD)
+test_u16_normcmp_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u16_normcoll_OBJECTS = uninorm/test-u16-normcoll.$(OBJEXT)
+test_u16_normcoll_OBJECTS = $(am_test_u16_normcoll_OBJECTS)
+test_u16_normcoll_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u16_possible_linebreaks_OBJECTS = \
+ unilbrk/test-u16-possible-linebreaks.$(OBJEXT)
+test_u16_possible_linebreaks_OBJECTS = \
+ $(am_test_u16_possible_linebreaks_OBJECTS)
+test_u16_possible_linebreaks_LDADD = $(LDADD)
+test_u16_possible_linebreaks_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_u16_strconv_from_enc_OBJECTS = \
+ uniconv/test-u16-strconv-from-enc.$(OBJEXT)
+test_u16_strconv_from_enc_OBJECTS = \
+ $(am_test_u16_strconv_from_enc_OBJECTS)
+test_u16_strconv_from_enc_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u16_strconv_to_enc_OBJECTS = \
+ uniconv/test-u16-strconv-to-enc.$(OBJEXT)
+test_u16_strconv_to_enc_OBJECTS = \
+ $(am_test_u16_strconv_to_enc_OBJECTS)
+test_u16_strconv_to_enc_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u16_strwidth_OBJECTS = uniwidth/test-u16-strwidth.$(OBJEXT)
+test_u16_strwidth_OBJECTS = $(am_test_u16_strwidth_OBJECTS)
+test_u16_strwidth_LDADD = $(LDADD)
+test_u16_strwidth_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u16_tolower_OBJECTS = unicase/test-u16-tolower.$(OBJEXT)
+test_u16_tolower_OBJECTS = $(am_test_u16_tolower_OBJECTS)
+test_u16_tolower_LDADD = $(LDADD)
+test_u16_tolower_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u16_totitle_OBJECTS = unicase/test-u16-totitle.$(OBJEXT)
+test_u16_totitle_OBJECTS = $(am_test_u16_totitle_OBJECTS)
+test_u16_totitle_LDADD = $(LDADD)
+test_u16_totitle_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u16_toupper_OBJECTS = unicase/test-u16-toupper.$(OBJEXT)
+test_u16_toupper_OBJECTS = $(am_test_u16_toupper_OBJECTS)
+test_u16_toupper_LDADD = $(LDADD)
+test_u16_toupper_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u16_vasnprintf1_OBJECTS = \
+ unistdio/test-u16-vasnprintf1.$(OBJEXT)
+test_u16_vasnprintf1_OBJECTS = $(am_test_u16_vasnprintf1_OBJECTS)
+test_u16_vasnprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u16_vasnprintf2_OBJECTS = \
+ unistdio/test-u16-vasnprintf2.$(OBJEXT)
+test_u16_vasnprintf2_OBJECTS = $(am_test_u16_vasnprintf2_OBJECTS)
+test_u16_vasnprintf2_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u16_vasnprintf3_OBJECTS = \
+ unistdio/test-u16-vasnprintf3.$(OBJEXT)
+test_u16_vasnprintf3_OBJECTS = $(am_test_u16_vasnprintf3_OBJECTS)
+test_u16_vasnprintf3_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u16_vasprintf1_OBJECTS = \
+ unistdio/test-u16-vasprintf1.$(OBJEXT)
+test_u16_vasprintf1_OBJECTS = $(am_test_u16_vasprintf1_OBJECTS)
+test_u16_vasprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u16_vsnprintf1_OBJECTS = \
+ unistdio/test-u16-vsnprintf1.$(OBJEXT)
+test_u16_vsnprintf1_OBJECTS = $(am_test_u16_vsnprintf1_OBJECTS)
+test_u16_vsnprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u16_vsprintf1_OBJECTS = unistdio/test-u16-vsprintf1.$(OBJEXT)
+test_u16_vsprintf1_OBJECTS = $(am_test_u16_vsprintf1_OBJECTS)
+test_u16_vsprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u16_width_OBJECTS = uniwidth/test-u16-width.$(OBJEXT)
+test_u16_width_OBJECTS = $(am_test_u16_width_OBJECTS)
+test_u16_width_LDADD = $(LDADD)
+test_u16_width_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u16_width_linebreaks_OBJECTS = \
+ unilbrk/test-u16-width-linebreaks.$(OBJEXT)
+test_u16_width_linebreaks_OBJECTS = \
+ $(am_test_u16_width_linebreaks_OBJECTS)
+test_u16_width_linebreaks_LDADD = $(LDADD)
+test_u16_width_linebreaks_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_u16_wordbreaks_OBJECTS = \
+ uniwbrk/test-u16-wordbreaks.$(OBJEXT)
+test_u16_wordbreaks_OBJECTS = $(am_test_u16_wordbreaks_OBJECTS)
+test_u16_wordbreaks_LDADD = $(LDADD)
+test_u16_wordbreaks_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u32_asnprintf1_OBJECTS = \
+ unistdio/test-u32-asnprintf1.$(OBJEXT)
+test_u32_asnprintf1_OBJECTS = $(am_test_u32_asnprintf1_OBJECTS)
+test_u32_asnprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u32_casecmp_OBJECTS = unicase/test-u32-casecmp.$(OBJEXT)
+test_u32_casecmp_OBJECTS = $(am_test_u32_casecmp_OBJECTS)
+test_u32_casecmp_LDADD = $(LDADD)
+test_u32_casecmp_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u32_casecoll_OBJECTS = unicase/test-u32-casecoll.$(OBJEXT)
+test_u32_casecoll_OBJECTS = $(am_test_u32_casecoll_OBJECTS)
+test_u32_casecoll_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u32_casefold_OBJECTS = unicase/test-u32-casefold.$(OBJEXT)
+test_u32_casefold_OBJECTS = $(am_test_u32_casefold_OBJECTS)
+test_u32_casefold_LDADD = $(LDADD)
+test_u32_casefold_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u32_conv_from_enc_OBJECTS = \
+ uniconv/test-u32-conv-from-enc.$(OBJEXT)
+test_u32_conv_from_enc_OBJECTS = $(am_test_u32_conv_from_enc_OBJECTS)
+test_u32_conv_from_enc_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u32_conv_to_enc_OBJECTS = \
+ uniconv/test-u32-conv-to-enc.$(OBJEXT)
+test_u32_conv_to_enc_OBJECTS = $(am_test_u32_conv_to_enc_OBJECTS)
+test_u32_conv_to_enc_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u32_is_cased_OBJECTS = unicase/test-u32-is-cased.$(OBJEXT)
+test_u32_is_cased_OBJECTS = $(am_test_u32_is_cased_OBJECTS)
+test_u32_is_cased_LDADD = $(LDADD)
+test_u32_is_cased_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u32_is_casefolded_OBJECTS = \
+ unicase/test-u32-is-casefolded.$(OBJEXT)
+test_u32_is_casefolded_OBJECTS = $(am_test_u32_is_casefolded_OBJECTS)
+test_u32_is_casefolded_LDADD = $(LDADD)
+test_u32_is_casefolded_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_u32_is_lowercase_OBJECTS = \
+ unicase/test-u32-is-lowercase.$(OBJEXT)
+test_u32_is_lowercase_OBJECTS = $(am_test_u32_is_lowercase_OBJECTS)
+test_u32_is_lowercase_LDADD = $(LDADD)
+test_u32_is_lowercase_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u32_is_titlecase_OBJECTS = \
+ unicase/test-u32-is-titlecase.$(OBJEXT)
+test_u32_is_titlecase_OBJECTS = $(am_test_u32_is_titlecase_OBJECTS)
+test_u32_is_titlecase_LDADD = $(LDADD)
+test_u32_is_titlecase_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u32_is_uppercase_OBJECTS = \
+ unicase/test-u32-is-uppercase.$(OBJEXT)
+test_u32_is_uppercase_OBJECTS = $(am_test_u32_is_uppercase_OBJECTS)
+test_u32_is_uppercase_LDADD = $(LDADD)
+test_u32_is_uppercase_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u32_nfc_big_OBJECTS = uninorm/test-u32-nfc-big.$(OBJEXT) \
+ uninorm/test-u32-normalize-big.$(OBJEXT)
+test_u32_nfc_big_OBJECTS = $(am_test_u32_nfc_big_OBJECTS)
+test_u32_nfc_big_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u32_nfd_big_OBJECTS = uninorm/test-u32-nfd-big.$(OBJEXT) \
+ uninorm/test-u32-normalize-big.$(OBJEXT)
+test_u32_nfd_big_OBJECTS = $(am_test_u32_nfd_big_OBJECTS)
+test_u32_nfd_big_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u32_nfkc_big_OBJECTS = uninorm/test-u32-nfkc-big.$(OBJEXT) \
+ uninorm/test-u32-normalize-big.$(OBJEXT)
+test_u32_nfkc_big_OBJECTS = $(am_test_u32_nfkc_big_OBJECTS)
+test_u32_nfkc_big_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u32_nfkd_big_OBJECTS = uninorm/test-u32-nfkd-big.$(OBJEXT) \
+ uninorm/test-u32-normalize-big.$(OBJEXT)
+test_u32_nfkd_big_OBJECTS = $(am_test_u32_nfkd_big_OBJECTS)
+test_u32_nfkd_big_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u32_normcmp_OBJECTS = uninorm/test-u32-normcmp.$(OBJEXT)
+test_u32_normcmp_OBJECTS = $(am_test_u32_normcmp_OBJECTS)
+test_u32_normcmp_LDADD = $(LDADD)
+test_u32_normcmp_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u32_normcoll_OBJECTS = uninorm/test-u32-normcoll.$(OBJEXT)
+test_u32_normcoll_OBJECTS = $(am_test_u32_normcoll_OBJECTS)
+test_u32_normcoll_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u32_possible_linebreaks_OBJECTS = \
+ unilbrk/test-u32-possible-linebreaks.$(OBJEXT)
+test_u32_possible_linebreaks_OBJECTS = \
+ $(am_test_u32_possible_linebreaks_OBJECTS)
+test_u32_possible_linebreaks_LDADD = $(LDADD)
+test_u32_possible_linebreaks_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_u32_strconv_from_enc_OBJECTS = \
+ uniconv/test-u32-strconv-from-enc.$(OBJEXT)
+test_u32_strconv_from_enc_OBJECTS = \
+ $(am_test_u32_strconv_from_enc_OBJECTS)
+test_u32_strconv_from_enc_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u32_strconv_to_enc_OBJECTS = \
+ uniconv/test-u32-strconv-to-enc.$(OBJEXT)
+test_u32_strconv_to_enc_OBJECTS = \
+ $(am_test_u32_strconv_to_enc_OBJECTS)
+test_u32_strconv_to_enc_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u32_strwidth_OBJECTS = uniwidth/test-u32-strwidth.$(OBJEXT)
+test_u32_strwidth_OBJECTS = $(am_test_u32_strwidth_OBJECTS)
+test_u32_strwidth_LDADD = $(LDADD)
+test_u32_strwidth_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u32_tolower_OBJECTS = unicase/test-u32-tolower.$(OBJEXT)
+test_u32_tolower_OBJECTS = $(am_test_u32_tolower_OBJECTS)
+test_u32_tolower_LDADD = $(LDADD)
+test_u32_tolower_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u32_totitle_OBJECTS = unicase/test-u32-totitle.$(OBJEXT)
+test_u32_totitle_OBJECTS = $(am_test_u32_totitle_OBJECTS)
+test_u32_totitle_LDADD = $(LDADD)
+test_u32_totitle_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u32_toupper_OBJECTS = unicase/test-u32-toupper.$(OBJEXT)
+test_u32_toupper_OBJECTS = $(am_test_u32_toupper_OBJECTS)
+test_u32_toupper_LDADD = $(LDADD)
+test_u32_toupper_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u32_vasnprintf1_OBJECTS = \
+ unistdio/test-u32-vasnprintf1.$(OBJEXT)
+test_u32_vasnprintf1_OBJECTS = $(am_test_u32_vasnprintf1_OBJECTS)
+test_u32_vasnprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u32_vasnprintf2_OBJECTS = \
+ unistdio/test-u32-vasnprintf2.$(OBJEXT)
+test_u32_vasnprintf2_OBJECTS = $(am_test_u32_vasnprintf2_OBJECTS)
+test_u32_vasnprintf2_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u32_vasnprintf3_OBJECTS = \
+ unistdio/test-u32-vasnprintf3.$(OBJEXT)
+test_u32_vasnprintf3_OBJECTS = $(am_test_u32_vasnprintf3_OBJECTS)
+test_u32_vasnprintf3_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u32_vasprintf1_OBJECTS = \
+ unistdio/test-u32-vasprintf1.$(OBJEXT)
+test_u32_vasprintf1_OBJECTS = $(am_test_u32_vasprintf1_OBJECTS)
+test_u32_vasprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u32_vsnprintf1_OBJECTS = \
+ unistdio/test-u32-vsnprintf1.$(OBJEXT)
+test_u32_vsnprintf1_OBJECTS = $(am_test_u32_vsnprintf1_OBJECTS)
+test_u32_vsnprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u32_vsprintf1_OBJECTS = unistdio/test-u32-vsprintf1.$(OBJEXT)
+test_u32_vsprintf1_OBJECTS = $(am_test_u32_vsprintf1_OBJECTS)
+test_u32_vsprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u32_width_OBJECTS = uniwidth/test-u32-width.$(OBJEXT)
+test_u32_width_OBJECTS = $(am_test_u32_width_OBJECTS)
+test_u32_width_LDADD = $(LDADD)
+test_u32_width_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u32_width_linebreaks_OBJECTS = \
+ unilbrk/test-u32-width-linebreaks.$(OBJEXT)
+test_u32_width_linebreaks_OBJECTS = \
+ $(am_test_u32_width_linebreaks_OBJECTS)
+test_u32_width_linebreaks_LDADD = $(LDADD)
+test_u32_width_linebreaks_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_u32_wordbreaks_OBJECTS = \
+ uniwbrk/test-u32-wordbreaks.$(OBJEXT)
+test_u32_wordbreaks_OBJECTS = $(am_test_u32_wordbreaks_OBJECTS)
+test_u32_wordbreaks_LDADD = $(LDADD)
+test_u32_wordbreaks_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u8_asnprintf1_OBJECTS = unistdio/test-u8-asnprintf1.$(OBJEXT)
+test_u8_asnprintf1_OBJECTS = $(am_test_u8_asnprintf1_OBJECTS)
+test_u8_asnprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u8_casecmp_OBJECTS = unicase/test-u8-casecmp.$(OBJEXT)
+test_u8_casecmp_OBJECTS = $(am_test_u8_casecmp_OBJECTS)
+test_u8_casecmp_LDADD = $(LDADD)
+test_u8_casecmp_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u8_casecoll_OBJECTS = unicase/test-u8-casecoll.$(OBJEXT)
+test_u8_casecoll_OBJECTS = $(am_test_u8_casecoll_OBJECTS)
+test_u8_casecoll_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u8_casefold_OBJECTS = unicase/test-u8-casefold.$(OBJEXT)
+test_u8_casefold_OBJECTS = $(am_test_u8_casefold_OBJECTS)
+test_u8_casefold_LDADD = $(LDADD)
+test_u8_casefold_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u8_conv_from_enc_OBJECTS = \
+ uniconv/test-u8-conv-from-enc.$(OBJEXT)
+test_u8_conv_from_enc_OBJECTS = $(am_test_u8_conv_from_enc_OBJECTS)
+test_u8_conv_from_enc_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u8_conv_to_enc_OBJECTS = \
+ uniconv/test-u8-conv-to-enc.$(OBJEXT)
+test_u8_conv_to_enc_OBJECTS = $(am_test_u8_conv_to_enc_OBJECTS)
+test_u8_conv_to_enc_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u8_is_cased_OBJECTS = unicase/test-u8-is-cased.$(OBJEXT)
+test_u8_is_cased_OBJECTS = $(am_test_u8_is_cased_OBJECTS)
+test_u8_is_cased_LDADD = $(LDADD)
+test_u8_is_cased_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u8_is_casefolded_OBJECTS = \
+ unicase/test-u8-is-casefolded.$(OBJEXT)
+test_u8_is_casefolded_OBJECTS = $(am_test_u8_is_casefolded_OBJECTS)
+test_u8_is_casefolded_LDADD = $(LDADD)
+test_u8_is_casefolded_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u8_is_lowercase_OBJECTS = \
+ unicase/test-u8-is-lowercase.$(OBJEXT)
+test_u8_is_lowercase_OBJECTS = $(am_test_u8_is_lowercase_OBJECTS)
+test_u8_is_lowercase_LDADD = $(LDADD)
+test_u8_is_lowercase_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u8_is_titlecase_OBJECTS = \
+ unicase/test-u8-is-titlecase.$(OBJEXT)
+test_u8_is_titlecase_OBJECTS = $(am_test_u8_is_titlecase_OBJECTS)
+test_u8_is_titlecase_LDADD = $(LDADD)
+test_u8_is_titlecase_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u8_is_uppercase_OBJECTS = \
+ unicase/test-u8-is-uppercase.$(OBJEXT)
+test_u8_is_uppercase_OBJECTS = $(am_test_u8_is_uppercase_OBJECTS)
+test_u8_is_uppercase_LDADD = $(LDADD)
+test_u8_is_uppercase_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u8_normcmp_OBJECTS = uninorm/test-u8-normcmp.$(OBJEXT)
+test_u8_normcmp_OBJECTS = $(am_test_u8_normcmp_OBJECTS)
+test_u8_normcmp_LDADD = $(LDADD)
+test_u8_normcmp_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u8_normcoll_OBJECTS = uninorm/test-u8-normcoll.$(OBJEXT)
+test_u8_normcoll_OBJECTS = $(am_test_u8_normcoll_OBJECTS)
+test_u8_normcoll_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u8_possible_linebreaks_OBJECTS = \
+ unilbrk/test-u8-possible-linebreaks.$(OBJEXT)
+test_u8_possible_linebreaks_OBJECTS = \
+ $(am_test_u8_possible_linebreaks_OBJECTS)
+test_u8_possible_linebreaks_LDADD = $(LDADD)
+test_u8_possible_linebreaks_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_u8_strconv_from_enc_OBJECTS = \
+ uniconv/test-u8-strconv-from-enc.$(OBJEXT)
+test_u8_strconv_from_enc_OBJECTS = \
+ $(am_test_u8_strconv_from_enc_OBJECTS)
+test_u8_strconv_from_enc_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u8_strconv_to_enc_OBJECTS = \
+ uniconv/test-u8-strconv-to-enc.$(OBJEXT)
+test_u8_strconv_to_enc_OBJECTS = $(am_test_u8_strconv_to_enc_OBJECTS)
+test_u8_strconv_to_enc_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u8_strwidth_OBJECTS = uniwidth/test-u8-strwidth.$(OBJEXT)
+test_u8_strwidth_OBJECTS = $(am_test_u8_strwidth_OBJECTS)
+test_u8_strwidth_LDADD = $(LDADD)
+test_u8_strwidth_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u8_tolower_OBJECTS = unicase/test-u8-tolower.$(OBJEXT)
+test_u8_tolower_OBJECTS = $(am_test_u8_tolower_OBJECTS)
+test_u8_tolower_LDADD = $(LDADD)
+test_u8_tolower_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u8_totitle_OBJECTS = unicase/test-u8-totitle.$(OBJEXT)
+test_u8_totitle_OBJECTS = $(am_test_u8_totitle_OBJECTS)
+test_u8_totitle_LDADD = $(LDADD)
+test_u8_totitle_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u8_toupper_OBJECTS = unicase/test-u8-toupper.$(OBJEXT)
+test_u8_toupper_OBJECTS = $(am_test_u8_toupper_OBJECTS)
+test_u8_toupper_LDADD = $(LDADD)
+test_u8_toupper_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u8_vasnprintf1_OBJECTS = \
+ unistdio/test-u8-vasnprintf1.$(OBJEXT)
+test_u8_vasnprintf1_OBJECTS = $(am_test_u8_vasnprintf1_OBJECTS)
+test_u8_vasnprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u8_vasnprintf2_OBJECTS = \
+ unistdio/test-u8-vasnprintf2.$(OBJEXT)
+test_u8_vasnprintf2_OBJECTS = $(am_test_u8_vasnprintf2_OBJECTS)
+test_u8_vasnprintf2_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u8_vasnprintf3_OBJECTS = \
+ unistdio/test-u8-vasnprintf3.$(OBJEXT)
+test_u8_vasnprintf3_OBJECTS = $(am_test_u8_vasnprintf3_OBJECTS)
+test_u8_vasnprintf3_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u8_vasprintf1_OBJECTS = unistdio/test-u8-vasprintf1.$(OBJEXT)
+test_u8_vasprintf1_OBJECTS = $(am_test_u8_vasprintf1_OBJECTS)
+test_u8_vasprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u8_vsnprintf1_OBJECTS = unistdio/test-u8-vsnprintf1.$(OBJEXT)
+test_u8_vsnprintf1_OBJECTS = $(am_test_u8_vsnprintf1_OBJECTS)
+test_u8_vsnprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u8_vsprintf1_OBJECTS = unistdio/test-u8-vsprintf1.$(OBJEXT)
+test_u8_vsprintf1_OBJECTS = $(am_test_u8_vsprintf1_OBJECTS)
+test_u8_vsprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u8_width_OBJECTS = uniwidth/test-u8-width.$(OBJEXT)
+test_u8_width_OBJECTS = $(am_test_u8_width_OBJECTS)
+test_u8_width_LDADD = $(LDADD)
+test_u8_width_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_u8_width_linebreaks_OBJECTS = \
+ unilbrk/test-u8-width-linebreaks.$(OBJEXT)
+test_u8_width_linebreaks_OBJECTS = \
+ $(am_test_u8_width_linebreaks_OBJECTS)
+test_u8_width_linebreaks_LDADD = $(LDADD)
+test_u8_width_linebreaks_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+am_test_u8_wordbreaks_OBJECTS = uniwbrk/test-u8-wordbreaks.$(OBJEXT)
+test_u8_wordbreaks_OBJECTS = $(am_test_u8_wordbreaks_OBJECTS)
+test_u8_wordbreaks_LDADD = $(LDADD)
+test_u8_wordbreaks_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_uc_tolower_OBJECTS = unicase/test-uc_tolower.$(OBJEXT)
+test_uc_tolower_OBJECTS = $(am_test_uc_tolower_OBJECTS)
+test_uc_tolower_LDADD = $(LDADD)
+test_uc_tolower_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_uc_totitle_OBJECTS = unicase/test-uc_totitle.$(OBJEXT)
+test_uc_totitle_OBJECTS = $(am_test_uc_totitle_OBJECTS)
+test_uc_totitle_LDADD = $(LDADD)
+test_uc_totitle_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_uc_toupper_OBJECTS = unicase/test-uc_toupper.$(OBJEXT)
+test_uc_toupper_OBJECTS = $(am_test_uc_toupper_OBJECTS)
+test_uc_toupper_LDADD = $(LDADD)
+test_uc_toupper_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_uc_width_OBJECTS = uniwidth/test-uc_width.$(OBJEXT)
+test_uc_width_OBJECTS = $(am_test_uc_width_OBJECTS)
+test_uc_width_LDADD = $(LDADD)
+test_uc_width_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_uc_width2_OBJECTS = uniwidth/test-uc_width2.$(OBJEXT)
+test_uc_width2_OBJECTS = $(am_test_uc_width2_OBJECTS)
+test_uc_width2_LDADD = $(LDADD)
+test_uc_width2_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+am_test_ulc_asnprintf1_OBJECTS = \
+ unistdio/test-ulc-asnprintf1.$(OBJEXT)
+test_ulc_asnprintf1_OBJECTS = $(am_test_ulc_asnprintf1_OBJECTS)
+test_ulc_asnprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_ulc_casecmp_OBJECTS = unicase/test-ulc-casecmp.$(OBJEXT)
+test_ulc_casecmp_OBJECTS = $(am_test_ulc_casecmp_OBJECTS)
+test_ulc_casecmp_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_ulc_casecoll_OBJECTS = unicase/test-ulc-casecoll.$(OBJEXT)
+test_ulc_casecoll_OBJECTS = $(am_test_ulc_casecoll_OBJECTS)
+test_ulc_casecoll_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_ulc_possible_linebreaks_OBJECTS = \
+ unilbrk/test-ulc-possible-linebreaks.$(OBJEXT)
+test_ulc_possible_linebreaks_OBJECTS = \
+ $(am_test_ulc_possible_linebreaks_OBJECTS)
+test_ulc_possible_linebreaks_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_ulc_vasnprintf1_OBJECTS = \
+ unistdio/test-ulc-vasnprintf1.$(OBJEXT)
+test_ulc_vasnprintf1_OBJECTS = $(am_test_ulc_vasnprintf1_OBJECTS)
+test_ulc_vasnprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_ulc_vasnprintf2_OBJECTS = \
+ unistdio/test-ulc-vasnprintf2.$(OBJEXT)
+test_ulc_vasnprintf2_OBJECTS = $(am_test_ulc_vasnprintf2_OBJECTS)
+test_ulc_vasnprintf2_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_ulc_vasnprintf3_OBJECTS = \
+ unistdio/test-ulc-vasnprintf3.$(OBJEXT)
+test_ulc_vasnprintf3_OBJECTS = $(am_test_ulc_vasnprintf3_OBJECTS)
+test_ulc_vasnprintf3_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_ulc_vasprintf1_OBJECTS = \
+ unistdio/test-ulc-vasprintf1.$(OBJEXT)
+test_ulc_vasprintf1_OBJECTS = $(am_test_ulc_vasprintf1_OBJECTS)
+test_ulc_vasprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_ulc_vsnprintf1_OBJECTS = \
+ unistdio/test-ulc-vsnprintf1.$(OBJEXT)
+test_ulc_vsnprintf1_OBJECTS = $(am_test_ulc_vsnprintf1_OBJECTS)
+test_ulc_vsnprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_ulc_vsprintf1_OBJECTS = unistdio/test-ulc-vsprintf1.$(OBJEXT)
+test_ulc_vsprintf1_OBJECTS = $(am_test_ulc_vsprintf1_OBJECTS)
+test_ulc_vsprintf1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_ulc_width_linebreaks_OBJECTS = \
+ unilbrk/test-ulc-width-linebreaks.$(OBJEXT)
+test_ulc_width_linebreaks_OBJECTS = \
+ $(am_test_ulc_width_linebreaks_OBJECTS)
+test_ulc_width_linebreaks_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_ulc_wordbreaks_OBJECTS = \
+ uniwbrk/test-ulc-wordbreaks.$(OBJEXT)
+test_ulc_wordbreaks_OBJECTS = $(am_test_ulc_wordbreaks_OBJECTS)
+test_ulc_wordbreaks_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_uninames_OBJECTS = uniname/test-uninames.$(OBJEXT)
+test_uninames_OBJECTS = $(am_test_uninames_OBJECTS)
+test_uninames_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_uninorm_filter_nfc_OBJECTS = \
+ uninorm/test-uninorm-filter-nfc.$(OBJEXT)
+test_uninorm_filter_nfc_OBJECTS = \
+ $(am_test_uninorm_filter_nfc_OBJECTS)
+test_uninorm_filter_nfc_LDADD = $(LDADD)
+test_uninorm_filter_nfc_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+test_unistd_SOURCES = test-unistd.c
+test_unistd_OBJECTS = test-unistd.$(OBJEXT)
+test_unistd_LDADD = $(LDADD)
+test_unistd_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_wchar_SOURCES = test-wchar.c
+test_wchar_OBJECTS = test-wchar.$(OBJEXT)
+test_wchar_LDADD = $(LDADD)
+test_wchar_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
+test_wctype_SOURCES = test-wctype.c
+test_wctype_OBJECTS = test-wctype.$(OBJEXT)
+test_wctype_LDADD = $(LDADD)
+test_wctype_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+test_wcwidth_SOURCES = test-wcwidth.c
+test_wcwidth_OBJECTS = test-wcwidth.$(OBJEXT)
+test_wcwidth_LDADD = $(LDADD)
+test_wcwidth_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
+ test-alloca-opt.c test-array-mergesort.c \
+ $(test_bidi_byname_SOURCES) $(test_bidi_name_SOURCES) \
+ $(test_bidi_of_SOURCES) $(test_bidi_test_SOURCES) \
+ $(test_block_list_SOURCES) $(test_block_of_SOURCES) \
+ $(test_block_test_SOURCES) test-c-ctype.c test-c-strcasecmp.c \
+ test-c-strncasecmp.c $(test_canonical_decomposition_SOURCES) \
+ $(test_cased_SOURCES) $(test_categ_C_SOURCES) \
+ $(test_categ_Cc_SOURCES) $(test_categ_Cf_SOURCES) \
+ $(test_categ_Cn_SOURCES) $(test_categ_Co_SOURCES) \
+ $(test_categ_Cs_SOURCES) $(test_categ_L_SOURCES) \
+ $(test_categ_Ll_SOURCES) $(test_categ_Lm_SOURCES) \
+ $(test_categ_Lo_SOURCES) $(test_categ_Lt_SOURCES) \
+ $(test_categ_Lu_SOURCES) $(test_categ_M_SOURCES) \
+ $(test_categ_Mc_SOURCES) $(test_categ_Me_SOURCES) \
+ $(test_categ_Mn_SOURCES) $(test_categ_N_SOURCES) \
+ $(test_categ_Nd_SOURCES) $(test_categ_Nl_SOURCES) \
+ $(test_categ_No_SOURCES) $(test_categ_P_SOURCES) \
+ $(test_categ_Pc_SOURCES) $(test_categ_Pd_SOURCES) \
+ $(test_categ_Pe_SOURCES) $(test_categ_Pf_SOURCES) \
+ $(test_categ_Pi_SOURCES) $(test_categ_Po_SOURCES) \
+ $(test_categ_Ps_SOURCES) $(test_categ_S_SOURCES) \
+ $(test_categ_Sc_SOURCES) $(test_categ_Sk_SOURCES) \
+ $(test_categ_Sm_SOURCES) $(test_categ_So_SOURCES) \
+ $(test_categ_Z_SOURCES) $(test_categ_Zl_SOURCES) \
+ $(test_categ_Zp_SOURCES) $(test_categ_Zs_SOURCES) \
+ $(test_categ_and_SOURCES) $(test_categ_and_not_SOURCES) \
+ $(test_categ_byname_SOURCES) $(test_categ_name_SOURCES) \
+ $(test_categ_none_SOURCES) $(test_categ_of_SOURCES) \
+ $(test_categ_or_SOURCES) $(test_categ_test_withtable_SOURCES) \
+ $(test_combining_SOURCES) $(test_compat_decomposition_SOURCES) \
+ $(test_composition_SOURCES) $(test_ctype_alnum_SOURCES) \
+ $(test_ctype_alpha_SOURCES) $(test_ctype_blank_SOURCES) \
+ $(test_ctype_cntrl_SOURCES) $(test_ctype_digit_SOURCES) \
+ $(test_ctype_graph_SOURCES) $(test_ctype_lower_SOURCES) \
+ $(test_ctype_print_SOURCES) $(test_ctype_punct_SOURCES) \
+ $(test_ctype_space_SOURCES) $(test_ctype_upper_SOURCES) \
+ $(test_ctype_xdigit_SOURCES) $(test_decdigit_SOURCES) \
+ $(test_decomposing_form_SOURCES) $(test_decomposition_SOURCES) \
+ $(test_digit_SOURCES) test-environ.c test-errno.c \
+ $(test_frexpl_nolibm_SOURCES) test-fseterr.c test-iconv.c \
+ $(test_ignorable_SOURCES) test-isnand-nolibm.c \
+ test-isnanf-nolibm.c test-isnanl-nolibm.c test-locale.c \
+ $(test_locale_language_SOURCES) test-localename.c \
+ test-malloca.c test-math.c test-mbrtowc.c test-mbsinit.c \
+ test-memchr.c $(test_mirror_SOURCES) $(test_nfc_SOURCES) \
+ $(test_nfd_SOURCES) $(test_nfkc_SOURCES) $(test_nfkd_SOURCES) \
+ $(test_numeric_SOURCES) $(test_pr_alphabetic_SOURCES) \
+ $(test_pr_ascii_hex_digit_SOURCES) \
+ $(test_pr_bidi_arabic_digit_SOURCES) \
+ $(test_pr_bidi_arabic_right_to_left_SOURCES) \
+ $(test_pr_bidi_block_separator_SOURCES) \
+ $(test_pr_bidi_boundary_neutral_SOURCES) \
+ $(test_pr_bidi_common_separator_SOURCES) \
+ $(test_pr_bidi_control_SOURCES) \
+ $(test_pr_bidi_embedding_or_override_SOURCES) \
+ $(test_pr_bidi_eur_num_separator_SOURCES) \
+ $(test_pr_bidi_eur_num_terminator_SOURCES) \
+ $(test_pr_bidi_european_digit_SOURCES) \
+ $(test_pr_bidi_hebrew_right_to_left_SOURCES) \
+ $(test_pr_bidi_left_to_right_SOURCES) \
+ $(test_pr_bidi_non_spacing_mark_SOURCES) \
+ $(test_pr_bidi_other_neutral_SOURCES) \
+ $(test_pr_bidi_pdf_SOURCES) \
+ $(test_pr_bidi_segment_separator_SOURCES) \
+ $(test_pr_bidi_whitespace_SOURCES) $(test_pr_byname_SOURCES) \
+ $(test_pr_combining_SOURCES) $(test_pr_composite_SOURCES) \
+ $(test_pr_currency_symbol_SOURCES) $(test_pr_dash_SOURCES) \
+ $(test_pr_decimal_digit_SOURCES) \
+ $(test_pr_default_ignorable_code_point_SOURCES) \
+ $(test_pr_deprecated_SOURCES) $(test_pr_diacritic_SOURCES) \
+ $(test_pr_extender_SOURCES) $(test_pr_format_control_SOURCES) \
+ $(test_pr_grapheme_base_SOURCES) \
+ $(test_pr_grapheme_extend_SOURCES) \
+ $(test_pr_grapheme_link_SOURCES) $(test_pr_hex_digit_SOURCES) \
+ $(test_pr_hyphen_SOURCES) $(test_pr_id_continue_SOURCES) \
+ $(test_pr_id_start_SOURCES) $(test_pr_ideographic_SOURCES) \
+ $(test_pr_ids_binary_operator_SOURCES) \
+ $(test_pr_ids_trinary_operator_SOURCES) \
+ $(test_pr_ignorable_control_SOURCES) \
+ $(test_pr_iso_control_SOURCES) $(test_pr_join_control_SOURCES) \
+ $(test_pr_left_of_pair_SOURCES) \
+ $(test_pr_line_separator_SOURCES) \
+ $(test_pr_logical_order_exception_SOURCES) \
+ $(test_pr_lowercase_SOURCES) $(test_pr_math_SOURCES) \
+ $(test_pr_non_break_SOURCES) \
+ $(test_pr_not_a_character_SOURCES) $(test_pr_numeric_SOURCES) \
+ $(test_pr_other_alphabetic_SOURCES) \
+ $(test_pr_other_default_ignorable_code_point_SOURCES) \
+ $(test_pr_other_grapheme_extend_SOURCES) \
+ $(test_pr_other_id_continue_SOURCES) \
+ $(test_pr_other_id_start_SOURCES) \
+ $(test_pr_other_lowercase_SOURCES) \
+ $(test_pr_other_math_SOURCES) \
+ $(test_pr_other_uppercase_SOURCES) \
+ $(test_pr_paired_punctuation_SOURCES) \
+ $(test_pr_paragraph_separator_SOURCES) \
+ $(test_pr_pattern_syntax_SOURCES) \
+ $(test_pr_pattern_white_space_SOURCES) \
+ $(test_pr_private_use_SOURCES) $(test_pr_punctuation_SOURCES) \
+ $(test_pr_quotation_mark_SOURCES) $(test_pr_radical_SOURCES) \
+ $(test_pr_sentence_terminal_SOURCES) \
+ $(test_pr_soft_dotted_SOURCES) $(test_pr_space_SOURCES) \
+ $(test_pr_terminal_punctuation_SOURCES) \
+ $(test_pr_test_SOURCES) $(test_pr_titlecase_SOURCES) \
+ $(test_pr_unassigned_code_value_SOURCES) \
+ $(test_pr_unified_ideograph_SOURCES) \
+ $(test_pr_uppercase_SOURCES) \
+ $(test_pr_variation_selector_SOURCES) \
+ $(test_pr_white_space_SOURCES) $(test_pr_xid_continue_SOURCES) \
+ $(test_pr_xid_start_SOURCES) $(test_pr_zero_width_SOURCES) \
+ test-printf-frexp.c test-printf-frexpl.c \
+ $(test_scripts_SOURCES) test-signbit.c test-stdbool.c \
+ test-stdint.c test-stdlib.c test-strerror.c test-striconveh.c \
+ test-striconveha.c test-string.c $(test_sy_c_ident_SOURCES) \
+ $(test_sy_c_whitespace_SOURCES) $(test_sy_java_ident_SOURCES) \
+ $(test_sy_java_whitespace_SOURCES) \
+ $(test_u16_asnprintf1_SOURCES) $(test_u16_casecmp_SOURCES) \
+ $(test_u16_casecoll_SOURCES) $(test_u16_casefold_SOURCES) \
+ $(test_u16_conv_from_enc_SOURCES) \
+ $(test_u16_conv_to_enc_SOURCES) $(test_u16_is_cased_SOURCES) \
+ $(test_u16_is_casefolded_SOURCES) \
+ $(test_u16_is_lowercase_SOURCES) \
+ $(test_u16_is_titlecase_SOURCES) \
+ $(test_u16_is_uppercase_SOURCES) $(test_u16_normcmp_SOURCES) \
+ $(test_u16_normcoll_SOURCES) \
+ $(test_u16_possible_linebreaks_SOURCES) \
+ $(test_u16_strconv_from_enc_SOURCES) \
+ $(test_u16_strconv_to_enc_SOURCES) \
+ $(test_u16_strwidth_SOURCES) $(test_u16_tolower_SOURCES) \
+ $(test_u16_totitle_SOURCES) $(test_u16_toupper_SOURCES) \
+ $(test_u16_vasnprintf1_SOURCES) \
+ $(test_u16_vasnprintf2_SOURCES) \
+ $(test_u16_vasnprintf3_SOURCES) $(test_u16_vasprintf1_SOURCES) \
+ $(test_u16_vsnprintf1_SOURCES) $(test_u16_vsprintf1_SOURCES) \
+ $(test_u16_width_SOURCES) $(test_u16_width_linebreaks_SOURCES) \
+ $(test_u16_wordbreaks_SOURCES) $(test_u32_asnprintf1_SOURCES) \
+ $(test_u32_casecmp_SOURCES) $(test_u32_casecoll_SOURCES) \
+ $(test_u32_casefold_SOURCES) $(test_u32_conv_from_enc_SOURCES) \
+ $(test_u32_conv_to_enc_SOURCES) $(test_u32_is_cased_SOURCES) \
+ $(test_u32_is_casefolded_SOURCES) \
+ $(test_u32_is_lowercase_SOURCES) \
+ $(test_u32_is_titlecase_SOURCES) \
+ $(test_u32_is_uppercase_SOURCES) $(test_u32_nfc_big_SOURCES) \
+ $(test_u32_nfd_big_SOURCES) $(test_u32_nfkc_big_SOURCES) \
+ $(test_u32_nfkd_big_SOURCES) $(test_u32_normcmp_SOURCES) \
+ $(test_u32_normcoll_SOURCES) \
+ $(test_u32_possible_linebreaks_SOURCES) \
+ $(test_u32_strconv_from_enc_SOURCES) \
+ $(test_u32_strconv_to_enc_SOURCES) \
+ $(test_u32_strwidth_SOURCES) $(test_u32_tolower_SOURCES) \
+ $(test_u32_totitle_SOURCES) $(test_u32_toupper_SOURCES) \
+ $(test_u32_vasnprintf1_SOURCES) \
+ $(test_u32_vasnprintf2_SOURCES) \
+ $(test_u32_vasnprintf3_SOURCES) $(test_u32_vasprintf1_SOURCES) \
+ $(test_u32_vsnprintf1_SOURCES) $(test_u32_vsprintf1_SOURCES) \
+ $(test_u32_width_SOURCES) $(test_u32_width_linebreaks_SOURCES) \
+ $(test_u32_wordbreaks_SOURCES) $(test_u8_asnprintf1_SOURCES) \
+ $(test_u8_casecmp_SOURCES) $(test_u8_casecoll_SOURCES) \
+ $(test_u8_casefold_SOURCES) $(test_u8_conv_from_enc_SOURCES) \
+ $(test_u8_conv_to_enc_SOURCES) $(test_u8_is_cased_SOURCES) \
+ $(test_u8_is_casefolded_SOURCES) \
+ $(test_u8_is_lowercase_SOURCES) \
+ $(test_u8_is_titlecase_SOURCES) \
+ $(test_u8_is_uppercase_SOURCES) $(test_u8_normcmp_SOURCES) \
+ $(test_u8_normcoll_SOURCES) \
+ $(test_u8_possible_linebreaks_SOURCES) \
+ $(test_u8_strconv_from_enc_SOURCES) \
+ $(test_u8_strconv_to_enc_SOURCES) $(test_u8_strwidth_SOURCES) \
+ $(test_u8_tolower_SOURCES) $(test_u8_totitle_SOURCES) \
+ $(test_u8_toupper_SOURCES) $(test_u8_vasnprintf1_SOURCES) \
+ $(test_u8_vasnprintf2_SOURCES) $(test_u8_vasnprintf3_SOURCES) \
+ $(test_u8_vasprintf1_SOURCES) $(test_u8_vsnprintf1_SOURCES) \
+ $(test_u8_vsprintf1_SOURCES) $(test_u8_width_SOURCES) \
+ $(test_u8_width_linebreaks_SOURCES) \
+ $(test_u8_wordbreaks_SOURCES) $(test_uc_tolower_SOURCES) \
+ $(test_uc_totitle_SOURCES) $(test_uc_toupper_SOURCES) \
+ $(test_uc_width_SOURCES) $(test_uc_width2_SOURCES) \
+ $(test_ulc_asnprintf1_SOURCES) $(test_ulc_casecmp_SOURCES) \
+ $(test_ulc_casecoll_SOURCES) \
+ $(test_ulc_possible_linebreaks_SOURCES) \
+ $(test_ulc_vasnprintf1_SOURCES) \
+ $(test_ulc_vasnprintf2_SOURCES) \
+ $(test_ulc_vasnprintf3_SOURCES) $(test_ulc_vasprintf1_SOURCES) \
+ $(test_ulc_vsnprintf1_SOURCES) $(test_ulc_vsprintf1_SOURCES) \
+ $(test_ulc_width_linebreaks_SOURCES) \
+ $(test_ulc_wordbreaks_SOURCES) $(test_uninames_SOURCES) \
+ $(test_uninorm_filter_nfc_SOURCES) test-unistd.c test-wchar.c \
+ test-wctype.c test-wcwidth.c
+DIST_SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
+ test-alloca-opt.c test-array-mergesort.c \
+ $(test_bidi_byname_SOURCES) $(test_bidi_name_SOURCES) \
+ $(test_bidi_of_SOURCES) $(test_bidi_test_SOURCES) \
+ $(test_block_list_SOURCES) $(test_block_of_SOURCES) \
+ $(test_block_test_SOURCES) test-c-ctype.c test-c-strcasecmp.c \
+ test-c-strncasecmp.c $(test_canonical_decomposition_SOURCES) \
+ $(test_cased_SOURCES) $(test_categ_C_SOURCES) \
+ $(test_categ_Cc_SOURCES) $(test_categ_Cf_SOURCES) \
+ $(test_categ_Cn_SOURCES) $(test_categ_Co_SOURCES) \
+ $(test_categ_Cs_SOURCES) $(test_categ_L_SOURCES) \
+ $(test_categ_Ll_SOURCES) $(test_categ_Lm_SOURCES) \
+ $(test_categ_Lo_SOURCES) $(test_categ_Lt_SOURCES) \
+ $(test_categ_Lu_SOURCES) $(test_categ_M_SOURCES) \
+ $(test_categ_Mc_SOURCES) $(test_categ_Me_SOURCES) \
+ $(test_categ_Mn_SOURCES) $(test_categ_N_SOURCES) \
+ $(test_categ_Nd_SOURCES) $(test_categ_Nl_SOURCES) \
+ $(test_categ_No_SOURCES) $(test_categ_P_SOURCES) \
+ $(test_categ_Pc_SOURCES) $(test_categ_Pd_SOURCES) \
+ $(test_categ_Pe_SOURCES) $(test_categ_Pf_SOURCES) \
+ $(test_categ_Pi_SOURCES) $(test_categ_Po_SOURCES) \
+ $(test_categ_Ps_SOURCES) $(test_categ_S_SOURCES) \
+ $(test_categ_Sc_SOURCES) $(test_categ_Sk_SOURCES) \
+ $(test_categ_Sm_SOURCES) $(test_categ_So_SOURCES) \
+ $(test_categ_Z_SOURCES) $(test_categ_Zl_SOURCES) \
+ $(test_categ_Zp_SOURCES) $(test_categ_Zs_SOURCES) \
+ $(test_categ_and_SOURCES) $(test_categ_and_not_SOURCES) \
+ $(test_categ_byname_SOURCES) $(test_categ_name_SOURCES) \
+ $(am__test_categ_none_SOURCES_DIST) $(test_categ_of_SOURCES) \
+ $(test_categ_or_SOURCES) $(test_categ_test_withtable_SOURCES) \
+ $(test_combining_SOURCES) $(test_compat_decomposition_SOURCES) \
+ $(test_composition_SOURCES) $(test_ctype_alnum_SOURCES) \
+ $(test_ctype_alpha_SOURCES) $(test_ctype_blank_SOURCES) \
+ $(test_ctype_cntrl_SOURCES) $(test_ctype_digit_SOURCES) \
+ $(test_ctype_graph_SOURCES) $(test_ctype_lower_SOURCES) \
+ $(test_ctype_print_SOURCES) $(test_ctype_punct_SOURCES) \
+ $(test_ctype_space_SOURCES) $(test_ctype_upper_SOURCES) \
+ $(test_ctype_xdigit_SOURCES) $(test_decdigit_SOURCES) \
+ $(test_decomposing_form_SOURCES) $(test_decomposition_SOURCES) \
+ $(test_digit_SOURCES) test-environ.c test-errno.c \
+ $(test_frexpl_nolibm_SOURCES) test-fseterr.c test-iconv.c \
+ $(test_ignorable_SOURCES) test-isnand-nolibm.c \
+ test-isnanf-nolibm.c test-isnanl-nolibm.c test-locale.c \
+ $(test_locale_language_SOURCES) test-localename.c \
+ test-malloca.c test-math.c test-mbrtowc.c test-mbsinit.c \
+ test-memchr.c $(test_mirror_SOURCES) $(test_nfc_SOURCES) \
+ $(test_nfd_SOURCES) $(test_nfkc_SOURCES) $(test_nfkd_SOURCES) \
+ $(test_numeric_SOURCES) $(test_pr_alphabetic_SOURCES) \
+ $(test_pr_ascii_hex_digit_SOURCES) \
+ $(test_pr_bidi_arabic_digit_SOURCES) \
+ $(test_pr_bidi_arabic_right_to_left_SOURCES) \
+ $(test_pr_bidi_block_separator_SOURCES) \
+ $(test_pr_bidi_boundary_neutral_SOURCES) \
+ $(test_pr_bidi_common_separator_SOURCES) \
+ $(test_pr_bidi_control_SOURCES) \
+ $(test_pr_bidi_embedding_or_override_SOURCES) \
+ $(test_pr_bidi_eur_num_separator_SOURCES) \
+ $(test_pr_bidi_eur_num_terminator_SOURCES) \
+ $(test_pr_bidi_european_digit_SOURCES) \
+ $(test_pr_bidi_hebrew_right_to_left_SOURCES) \
+ $(test_pr_bidi_left_to_right_SOURCES) \
+ $(test_pr_bidi_non_spacing_mark_SOURCES) \
+ $(test_pr_bidi_other_neutral_SOURCES) \
+ $(test_pr_bidi_pdf_SOURCES) \
+ $(test_pr_bidi_segment_separator_SOURCES) \
+ $(test_pr_bidi_whitespace_SOURCES) $(test_pr_byname_SOURCES) \
+ $(test_pr_combining_SOURCES) $(test_pr_composite_SOURCES) \
+ $(test_pr_currency_symbol_SOURCES) $(test_pr_dash_SOURCES) \
+ $(test_pr_decimal_digit_SOURCES) \
+ $(test_pr_default_ignorable_code_point_SOURCES) \
+ $(test_pr_deprecated_SOURCES) $(test_pr_diacritic_SOURCES) \
+ $(test_pr_extender_SOURCES) $(test_pr_format_control_SOURCES) \
+ $(test_pr_grapheme_base_SOURCES) \
+ $(test_pr_grapheme_extend_SOURCES) \
+ $(test_pr_grapheme_link_SOURCES) $(test_pr_hex_digit_SOURCES) \
+ $(test_pr_hyphen_SOURCES) $(test_pr_id_continue_SOURCES) \
+ $(test_pr_id_start_SOURCES) $(test_pr_ideographic_SOURCES) \
+ $(test_pr_ids_binary_operator_SOURCES) \
+ $(test_pr_ids_trinary_operator_SOURCES) \
+ $(test_pr_ignorable_control_SOURCES) \
+ $(test_pr_iso_control_SOURCES) $(test_pr_join_control_SOURCES) \
+ $(test_pr_left_of_pair_SOURCES) \
+ $(test_pr_line_separator_SOURCES) \
+ $(test_pr_logical_order_exception_SOURCES) \
+ $(test_pr_lowercase_SOURCES) $(test_pr_math_SOURCES) \
+ $(test_pr_non_break_SOURCES) \
+ $(test_pr_not_a_character_SOURCES) $(test_pr_numeric_SOURCES) \
+ $(test_pr_other_alphabetic_SOURCES) \
+ $(test_pr_other_default_ignorable_code_point_SOURCES) \
+ $(test_pr_other_grapheme_extend_SOURCES) \
+ $(test_pr_other_id_continue_SOURCES) \
+ $(test_pr_other_id_start_SOURCES) \
+ $(test_pr_other_lowercase_SOURCES) \
+ $(test_pr_other_math_SOURCES) \
+ $(test_pr_other_uppercase_SOURCES) \
+ $(test_pr_paired_punctuation_SOURCES) \
+ $(test_pr_paragraph_separator_SOURCES) \
+ $(test_pr_pattern_syntax_SOURCES) \
+ $(test_pr_pattern_white_space_SOURCES) \
+ $(test_pr_private_use_SOURCES) $(test_pr_punctuation_SOURCES) \
+ $(test_pr_quotation_mark_SOURCES) $(test_pr_radical_SOURCES) \
+ $(test_pr_sentence_terminal_SOURCES) \
+ $(test_pr_soft_dotted_SOURCES) $(test_pr_space_SOURCES) \
+ $(test_pr_terminal_punctuation_SOURCES) \
+ $(test_pr_test_SOURCES) $(test_pr_titlecase_SOURCES) \
+ $(test_pr_unassigned_code_value_SOURCES) \
+ $(test_pr_unified_ideograph_SOURCES) \
+ $(test_pr_uppercase_SOURCES) \
+ $(test_pr_variation_selector_SOURCES) \
+ $(test_pr_white_space_SOURCES) $(test_pr_xid_continue_SOURCES) \
+ $(test_pr_xid_start_SOURCES) $(test_pr_zero_width_SOURCES) \
+ test-printf-frexp.c test-printf-frexpl.c \
+ $(test_scripts_SOURCES) test-signbit.c test-stdbool.c \
+ test-stdint.c test-stdlib.c test-strerror.c test-striconveh.c \
+ test-striconveha.c test-string.c $(test_sy_c_ident_SOURCES) \
+ $(test_sy_c_whitespace_SOURCES) $(test_sy_java_ident_SOURCES) \
+ $(test_sy_java_whitespace_SOURCES) \
+ $(test_u16_asnprintf1_SOURCES) $(test_u16_casecmp_SOURCES) \
+ $(test_u16_casecoll_SOURCES) $(test_u16_casefold_SOURCES) \
+ $(test_u16_conv_from_enc_SOURCES) \
+ $(test_u16_conv_to_enc_SOURCES) $(test_u16_is_cased_SOURCES) \
+ $(test_u16_is_casefolded_SOURCES) \
+ $(test_u16_is_lowercase_SOURCES) \
+ $(test_u16_is_titlecase_SOURCES) \
+ $(test_u16_is_uppercase_SOURCES) $(test_u16_normcmp_SOURCES) \
+ $(test_u16_normcoll_SOURCES) \
+ $(test_u16_possible_linebreaks_SOURCES) \
+ $(test_u16_strconv_from_enc_SOURCES) \
+ $(test_u16_strconv_to_enc_SOURCES) \
+ $(test_u16_strwidth_SOURCES) $(test_u16_tolower_SOURCES) \
+ $(test_u16_totitle_SOURCES) $(test_u16_toupper_SOURCES) \
+ $(test_u16_vasnprintf1_SOURCES) \
+ $(test_u16_vasnprintf2_SOURCES) \
+ $(test_u16_vasnprintf3_SOURCES) $(test_u16_vasprintf1_SOURCES) \
+ $(test_u16_vsnprintf1_SOURCES) $(test_u16_vsprintf1_SOURCES) \
+ $(test_u16_width_SOURCES) $(test_u16_width_linebreaks_SOURCES) \
+ $(test_u16_wordbreaks_SOURCES) $(test_u32_asnprintf1_SOURCES) \
+ $(test_u32_casecmp_SOURCES) $(test_u32_casecoll_SOURCES) \
+ $(test_u32_casefold_SOURCES) $(test_u32_conv_from_enc_SOURCES) \
+ $(test_u32_conv_to_enc_SOURCES) $(test_u32_is_cased_SOURCES) \
+ $(test_u32_is_casefolded_SOURCES) \
+ $(test_u32_is_lowercase_SOURCES) \
+ $(test_u32_is_titlecase_SOURCES) \
+ $(test_u32_is_uppercase_SOURCES) $(test_u32_nfc_big_SOURCES) \
+ $(test_u32_nfd_big_SOURCES) $(test_u32_nfkc_big_SOURCES) \
+ $(test_u32_nfkd_big_SOURCES) $(test_u32_normcmp_SOURCES) \
+ $(test_u32_normcoll_SOURCES) \
+ $(test_u32_possible_linebreaks_SOURCES) \
+ $(test_u32_strconv_from_enc_SOURCES) \
+ $(test_u32_strconv_to_enc_SOURCES) \
+ $(test_u32_strwidth_SOURCES) $(test_u32_tolower_SOURCES) \
+ $(test_u32_totitle_SOURCES) $(test_u32_toupper_SOURCES) \
+ $(test_u32_vasnprintf1_SOURCES) \
+ $(test_u32_vasnprintf2_SOURCES) \
+ $(test_u32_vasnprintf3_SOURCES) $(test_u32_vasprintf1_SOURCES) \
+ $(test_u32_vsnprintf1_SOURCES) $(test_u32_vsprintf1_SOURCES) \
+ $(test_u32_width_SOURCES) $(test_u32_width_linebreaks_SOURCES) \
+ $(test_u32_wordbreaks_SOURCES) $(test_u8_asnprintf1_SOURCES) \
+ $(test_u8_casecmp_SOURCES) $(test_u8_casecoll_SOURCES) \
+ $(test_u8_casefold_SOURCES) $(test_u8_conv_from_enc_SOURCES) \
+ $(test_u8_conv_to_enc_SOURCES) $(test_u8_is_cased_SOURCES) \
+ $(test_u8_is_casefolded_SOURCES) \
+ $(test_u8_is_lowercase_SOURCES) \
+ $(test_u8_is_titlecase_SOURCES) \
+ $(test_u8_is_uppercase_SOURCES) $(test_u8_normcmp_SOURCES) \
+ $(test_u8_normcoll_SOURCES) \
+ $(test_u8_possible_linebreaks_SOURCES) \
+ $(test_u8_strconv_from_enc_SOURCES) \
+ $(test_u8_strconv_to_enc_SOURCES) $(test_u8_strwidth_SOURCES) \
+ $(test_u8_tolower_SOURCES) $(test_u8_totitle_SOURCES) \
+ $(test_u8_toupper_SOURCES) $(test_u8_vasnprintf1_SOURCES) \
+ $(test_u8_vasnprintf2_SOURCES) $(test_u8_vasnprintf3_SOURCES) \
+ $(test_u8_vasprintf1_SOURCES) $(test_u8_vsnprintf1_SOURCES) \
+ $(test_u8_vsprintf1_SOURCES) $(test_u8_width_SOURCES) \
+ $(test_u8_width_linebreaks_SOURCES) \
+ $(test_u8_wordbreaks_SOURCES) $(test_uc_tolower_SOURCES) \
+ $(test_uc_totitle_SOURCES) $(test_uc_toupper_SOURCES) \
+ $(test_uc_width_SOURCES) $(test_uc_width2_SOURCES) \
+ $(test_ulc_asnprintf1_SOURCES) $(test_ulc_casecmp_SOURCES) \
+ $(test_ulc_casecoll_SOURCES) \
+ $(test_ulc_possible_linebreaks_SOURCES) \
+ $(test_ulc_vasnprintf1_SOURCES) \
+ $(test_ulc_vasnprintf2_SOURCES) \
+ $(test_ulc_vasnprintf3_SOURCES) $(test_ulc_vasprintf1_SOURCES) \
+ $(test_ulc_vsnprintf1_SOURCES) $(test_ulc_vsprintf1_SOURCES) \
+ $(test_ulc_width_linebreaks_SOURCES) \
+ $(test_ulc_wordbreaks_SOURCES) $(test_uninames_SOURCES) \
+ $(test_uninorm_filter_nfc_SOURCES) test-unistd.c test-wchar.c \
+ test-wctype.c test-wcwidth.c
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+HEADERS = $(noinst_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+# If stdout is a non-dumb tty, use colors. If test -t is not supported,
+# then this fails; a conservative approach. Of course do not redirect
+# stdout here, just stderr.
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=; \
+test "X$(AM_COLOR_TESTS)" != Xno \
+&& test "X$$TERM" != Xdumb \
+&& { test "X$(AM_COLOR_TESTS)" = Xalways || test -t 1 2>/dev/null; } \
+&& { \
+ red=''; \
+ grn=''; \
+ lgn=''; \
+ blu=''; \
+ std=''; \
+}
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VARIABLE = @DLL_VARIABLE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVIPS = @DVIPS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FLOAT_H = @FLOAT_H@
+GLIBC21 = @GLIBC21@
+GLOBAL_SYMBOL_PIPE = @GLOBAL_SYMBOL_PIPE@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CEILF = @GNULIB_CEILF@
+GNULIB_CEILL = @GNULIB_CEILL@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FLOORF = @GNULIB_FLOORF@
+GNULIB_FLOORL = @GNULIB_FLOORL@
+GNULIB_FREXP = @GNULIB_FREXP@
+GNULIB_FREXPL = @GNULIB_FREXPL@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_ISFINITE = @GNULIB_ISFINITE@
+GNULIB_ISINF = @GNULIB_ISINF@
+GNULIB_ISNAN = @GNULIB_ISNAN@
+GNULIB_ISNAND = @GNULIB_ISNAND@
+GNULIB_ISNANF = @GNULIB_ISNANF@
+GNULIB_ISNANL = @GNULIB_ISNANL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LDEXPL = @GNULIB_LDEXPL@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MATHL = @GNULIB_MATHL@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_ROUND = @GNULIB_ROUND@
+GNULIB_ROUNDF = @GNULIB_ROUNDF@
+GNULIB_ROUNDL = @GNULIB_ROUNDL@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SIGNBIT = @GNULIB_SIGNBIT@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_TRUNC = @GNULIB_TRUNC@
+GNULIB_TRUNCF = @GNULIB_TRUNCF@
+GNULIB_TRUNCL = @GNULIB_TRUNCL@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
+HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@
+HAVE_DECL_ASINL = @HAVE_DECL_ASINL@
+HAVE_DECL_ATANL = @HAVE_DECL_ATANL@
+HAVE_DECL_COSL = @HAVE_DECL_COSL@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_EXPL = @HAVE_DECL_EXPL@
+HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@
+HAVE_DECL_LOGL = @HAVE_DECL_LOGL@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SINL = @HAVE_DECL_SINL@
+HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_TANL = @HAVE_DECL_TANL@
+HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@
+HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_GLOBAL_SYMBOL_PIPE = @HAVE_GLOBAL_SYMBOL_PIPE@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISNAND = @HAVE_ISNAND@
+HAVE_ISNANF = @HAVE_ISNANF@
+HAVE_ISNANL = @HAVE_ISNANL@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSETENV = @HAVE_UNSETENV@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HEXVERSION = @HEXVERSION@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_H = @LOCALE_H@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NAMESPACING = @NAMESPACING@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
+NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FLOAT_H = @NEXT_FLOAT_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_LOCALE_H = @NEXT_LOCALE_H@
+NEXT_MATH_H = @NEXT_MATH_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+RC = @RC@
+RELOCATABLE = @RELOCATABLE@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CEILF = @REPLACE_CEILF@
+REPLACE_CEILL = @REPLACE_CEILL@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FLOORF = @REPLACE_FLOORF@
+REPLACE_FLOORL = @REPLACE_FLOORL@
+REPLACE_FREXP = @REPLACE_FREXP@
+REPLACE_FREXPL = @REPLACE_FREXPL@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_ISFINITE = @REPLACE_ISFINITE@
+REPLACE_ISINF = @REPLACE_ISINF@
+REPLACE_ISNAN = @REPLACE_ISNAN@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LDEXPL = @REPLACE_LDEXPL@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NAN = @REPLACE_NAN@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_ROUND = @REPLACE_ROUND@
+REPLACE_ROUNDF = @REPLACE_ROUNDF@
+REPLACE_ROUNDL = @REPLACE_ROUNDL@
+REPLACE_SIGNBIT = @REPLACE_SIGNBIT@
+REPLACE_SIGNBIT_USING_GCC = @REPLACE_SIGNBIT_USING_GCC@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_TRUNCL = @REPLACE_TRUNCL@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+TEXI2DVI = @TEXI2DVI@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+VERSION = @VERSION@
+VOID_UNSETENV = @VOID_UNSETENV@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# Rules generated and collected by gnulib-tool.
+AUTOMAKE_OPTIONS = 1.5 foreign 1.11 subdir-objects color-tests
+SUBDIRS =
+
+# The test suite uses the 'localcharset' module.
+
+# This must be the last thing that gets added to TESTS_ENVIRONMENT.
+TESTS_ENVIRONMENT = EXEEXT='@EXEEXT@' LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_TR_UTF8='@LOCALE_TR_UTF8@' EXEEXT='@EXEEXT@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
+ EXEEXT='@EXEEXT@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ EXEEXT='@EXEEXT@' LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' LOCALE_JA='@LOCALE_JA@' \
+ LOCALE_TR_UTF8='@LOCALE_TR_UTF8@' \
+ LOCALE_ZH_CN='@LOCALE_ZH_CN@' EXEEXT='@EXEEXT@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ EXEEXT='@EXEEXT@' LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' EXEEXT='@EXEEXT@' \
+ srcdir='$(srcdir)' EXEEXT='@EXEEXT@' LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' EXEEXT='@EXEEXT@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ EXEEXT='@EXEEXT@' LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' EXEEXT='@EXEEXT@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ EXEEXT='@EXEEXT@' LOCALE_FR='@LOCALE_FR@' EXEEXT='@EXEEXT@' \
+ @LOCALCHARSET_TESTS_ENVIRONMENT@ $(SHELL) \
+ $(top_srcdir)/build-aux/run-test '$(CHECKER)'
+noinst_HEADERS =
+noinst_LIBRARIES =
+check_LIBRARIES = libtests.a
+EXTRA_DIST = test-alloca-opt.c test-array-mergesort.c test-c-ctype.c \
+ test-c-strcase.sh test-c-strcasecmp.c test-c-strncasecmp.c \
+ test-environ.c test-errno.c error.c error.h exitfail.c \
+ exitfail.h test-frexpl.c test-fseterr.c test-iconv.c \
+ intprops.h test-isnand-nolibm.c test-isnand.h nan.h \
+ test-isnanf-nolibm.c test-isnanf.h nan.h test-isnanl-nolibm.c \
+ test-isnanl.h nan.h locale.in.h test-locale.c \
+ test-localename.c test-malloca.c test-math.c test-mbrtowc1.sh \
+ test-mbrtowc2.sh test-mbrtowc3.sh test-mbrtowc4.sh \
+ test-mbrtowc.c test-mbsinit.sh test-mbsinit.c test-memchr.c \
+ zerosize-ptr.h test-printf-frexp.c test-printf-frexpl.c \
+ setenv.c test-signbit.c test-stdbool.c test-stdint.c \
+ test-stdlib.c strerror.c test-strerror.c test-striconveh.c \
+ test-striconveha.c test-string.c unicase/test-cased.c \
+ unicase/test-predicate-part1.h unicase/test-predicate-part2.h \
+ unicase/test-ignorable.c unicase/test-predicate-part1.h \
+ unicase/test-predicate-part2.h unicase/test-locale-language.sh \
+ unicase/test-locale-language.c unicase/test-uc_tolower.c \
+ unicase/test-mapping-part1.h unicase/test-mapping-part2.h \
+ unicase/test-uc_totitle.c unicase/test-mapping-part1.h \
+ unicase/test-mapping-part2.h unicase/test-uc_toupper.c \
+ unicase/test-mapping-part1.h unicase/test-mapping-part2.h \
+ unicase/test-u16-casecmp.c unicase/test-casecmp.h \
+ unicase/test-u16-casecoll.c unicase/test-casecmp.h \
+ unicase/test-u16-casefold.c unicase/test-u16-is-cased.c \
+ unicase/test-is-cased.h unicase/test-u16-is-casefolded.c \
+ unicase/test-is-casefolded.h unicase/test-u16-is-lowercase.c \
+ unicase/test-is-lowercase.h unicase/test-u16-is-titlecase.c \
+ unicase/test-is-titlecase.h unicase/test-u16-is-uppercase.c \
+ unicase/test-is-uppercase.h unicase/test-u16-tolower.c \
+ unicase/test-u16-totitle.c unicase/test-u16-toupper.c \
+ unicase/test-u32-casecmp.c unicase/test-casecmp.h \
+ unicase/test-u32-casecoll.c unicase/test-casecmp.h \
+ unicase/test-u32-casefold.c unicase/test-u32-is-cased.c \
+ unicase/test-is-cased.h unicase/test-u32-is-casefolded.c \
+ unicase/test-is-casefolded.h unicase/test-u32-is-lowercase.c \
+ unicase/test-is-lowercase.h unicase/test-u32-is-titlecase.c \
+ unicase/test-is-titlecase.h unicase/test-u32-is-uppercase.c \
+ unicase/test-is-uppercase.h unicase/test-u32-tolower.c \
+ unicase/test-u32-totitle.c unicase/test-u32-toupper.c \
+ unicase/test-u8-casecmp.c unicase/test-casecmp.h \
+ unicase/test-u8-casecoll.c unicase/test-casecmp.h \
+ unicase/test-u8-casefold.c unicase/test-u8-is-cased.c \
+ unicase/test-is-cased.h unicase/test-u8-is-casefolded.c \
+ unicase/test-is-casefolded.h unicase/test-u8-is-lowercase.c \
+ unicase/test-is-lowercase.h unicase/test-u8-is-titlecase.c \
+ unicase/test-is-titlecase.h unicase/test-u8-is-uppercase.c \
+ unicase/test-is-uppercase.h unicase/test-u8-tolower.c \
+ unicase/test-u8-totitle.c unicase/test-u8-toupper.c \
+ unicase/test-ulc-casecmp1.sh unicase/test-ulc-casecmp2.sh \
+ unicase/test-ulc-casecmp.c unicase/test-casecmp.h \
+ unicase/test-ulc-casecoll1.sh unicase/test-ulc-casecoll2.sh \
+ unicase/test-ulc-casecoll.c unicase/test-casecmp.h \
+ uniconv/test-u16-conv-from-enc.c \
+ uniconv/test-u16-conv-to-enc.c \
+ uniconv/test-u16-strconv-from-enc.c \
+ uniconv/test-u16-strconv-to-enc.c \
+ uniconv/test-u32-conv-from-enc.c \
+ uniconv/test-u32-conv-to-enc.c \
+ uniconv/test-u32-strconv-from-enc.c \
+ uniconv/test-u32-strconv-to-enc.c \
+ uniconv/test-u8-conv-from-enc.c uniconv/test-u8-conv-to-enc.c \
+ uniconv/test-u8-strconv-from-enc.c \
+ uniconv/test-u8-strconv-to-enc.c unictype/test-bidi_byname.c \
+ unictype/test-bidi_name.c unictype/test-bidi_of.c \
+ unictype/test-bidi_test.c unictype/test-block_list.c \
+ unictype/test-block_of.c unictype/test-block_test.c \
+ unictype/test-categ_C.c unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Cc.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Cf.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Cn.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Co.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Cs.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_L.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Ll.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Lm.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Lo.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Lt.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Lu.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_M.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Mc.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Me.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Mn.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_N.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Nd.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Nl.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_No.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_P.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Pc.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Pd.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Pe.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Pf.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Pi.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Po.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Ps.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_S.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Sc.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Sk.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Sm.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_So.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Z.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Zl.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Zp.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_Zs.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-categ_and_not.c \
+ unictype/test-categ_and.c unictype/test-categ_byname.c \
+ unictype/test-categ_name.c unictype/test-categ_none.c \
+ unictype/test-categ_of.c unictype/test-categ_or.c \
+ unictype/test-categ_test_withtable.c unictype/test-combining.c \
+ unictype/test-ctype_alnum.c unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-ctype_alpha.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-ctype_blank.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-ctype_cntrl.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-ctype_digit.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-ctype_graph.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-ctype_lower.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-ctype_print.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-ctype_punct.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-ctype_space.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-ctype_upper.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-ctype_xdigit.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-decdigit.c \
+ unictype/test-decdigit.h unictype/test-digit.c \
+ unictype/test-digit.h unictype/test-mirror.c \
+ unictype/test-numeric.c unictype/test-numeric.h \
+ unictype/test-pr_alphabetic.c unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_ascii_hex_digit.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_bidi_arabic_digit.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_bidi_arabic_right_to_left.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_bidi_block_separator.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_bidi_boundary_neutral.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_bidi_common_separator.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_bidi_control.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_bidi_embedding_or_override.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_bidi_eur_num_separator.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_bidi_eur_num_terminator.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_bidi_european_digit.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_bidi_hebrew_right_to_left.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_bidi_left_to_right.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_bidi_non_spacing_mark.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_bidi_other_neutral.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_bidi_pdf.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_bidi_segment_separator.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_bidi_whitespace.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_byname.c \
+ unictype/test-pr_combining.c unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_composite.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_currency_symbol.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_dash.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_decimal_digit.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_default_ignorable_code_point.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_deprecated.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_diacritic.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_extender.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_format_control.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_grapheme_base.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_grapheme_extend.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_grapheme_link.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_hex_digit.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_hyphen.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_id_continue.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_id_start.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_ideographic.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_ids_binary_operator.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_ids_trinary_operator.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_ignorable_control.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_iso_control.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_join_control.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_left_of_pair.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_line_separator.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_logical_order_exception.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_lowercase.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_math.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_non_break.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_not_a_character.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_numeric.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_other_alphabetic.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_other_default_ignorable_code_point.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_other_grapheme_extend.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_other_id_continue.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_other_id_start.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_other_lowercase.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_other_math.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_other_uppercase.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_paired_punctuation.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_paragraph_separator.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_pattern_syntax.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_pattern_white_space.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_private_use.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_punctuation.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_quotation_mark.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_radical.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_sentence_terminal.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_soft_dotted.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_space.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_terminal_punctuation.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_test.c \
+ unictype/test-pr_titlecase.c unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_unassigned_code_value.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_unified_ideograph.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_uppercase.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_variation_selector.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_white_space.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unictype/test-pr_xid_continue.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_xid_start.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-pr_zero_width.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-scripts.c \
+ unictype/test-sy_c_ident.c unictype/test-sy_c_whitespace.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h unictype/test-sy_java_ident.c \
+ unictype/test-sy_java_whitespace.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h \
+ unilbrk/test-u16-possible-linebreaks.c \
+ unilbrk/test-u16-width-linebreaks.c \
+ unilbrk/test-u32-possible-linebreaks.c \
+ unilbrk/test-u32-width-linebreaks.c \
+ unilbrk/test-u8-possible-linebreaks.c \
+ unilbrk/test-u8-width-linebreaks.c \
+ unilbrk/test-ulc-possible-linebreaks.c \
+ unilbrk/test-ulc-width-linebreaks.c uniname/test-uninames.sh \
+ uniname/test-uninames.c uniname/UnicodeDataNames.txt \
+ uninorm/test-canonical-decomposition.c \
+ uninorm/test-compat-decomposition.c uninorm/test-composition.c \
+ uninorm/test-decomposing-form.c uninorm/test-decomposition.c \
+ uninorm/test-uninorm-filter-nfc.c uninorm/test-nfc.c \
+ uninorm/test-u8-nfc.c uninorm/test-u16-nfc.c \
+ uninorm/test-u32-nfc.c uninorm/test-u32-nfc-big.sh \
+ uninorm/test-u32-nfc-big.c uninorm/test-u32-normalize-big.h \
+ uninorm/test-u32-normalize-big.c uninorm/NormalizationTest.txt \
+ uninorm/test-nfd.c uninorm/test-u8-nfd.c \
+ uninorm/test-u16-nfd.c uninorm/test-u32-nfd.c \
+ uninorm/test-u32-nfd-big.sh uninorm/test-u32-nfd-big.c \
+ uninorm/test-u32-normalize-big.h \
+ uninorm/test-u32-normalize-big.c uninorm/NormalizationTest.txt \
+ uninorm/test-nfkc.c uninorm/test-u8-nfkc.c \
+ uninorm/test-u16-nfkc.c uninorm/test-u32-nfkc.c \
+ uninorm/test-u32-nfkc-big.sh uninorm/test-u32-nfkc-big.c \
+ uninorm/test-u32-normalize-big.h \
+ uninorm/test-u32-normalize-big.c uninorm/NormalizationTest.txt \
+ uninorm/test-nfkd.c uninorm/test-u8-nfkd.c \
+ uninorm/test-u16-nfkd.c uninorm/test-u32-nfkd.c \
+ uninorm/test-u32-nfkd-big.sh uninorm/test-u32-nfkd-big.c \
+ uninorm/test-u32-normalize-big.h \
+ uninorm/test-u32-normalize-big.c uninorm/NormalizationTest.txt \
+ uninorm/test-u16-normcmp.c uninorm/test-u16-normcmp.h \
+ uninorm/test-u16-normcoll.c uninorm/test-u16-normcmp.h \
+ uninorm/test-u32-normcmp.c uninorm/test-u32-normcmp.h \
+ uninorm/test-u32-normcoll.c uninorm/test-u32-normcmp.h \
+ uninorm/test-u8-normcmp.c uninorm/test-u8-normcmp.h \
+ uninorm/test-u8-normcoll.c uninorm/test-u8-normcmp.h \
+ test-unistd.c unistdio/test-u16-asnprintf1.c \
+ unistdio/test-u16-asnprintf1.h unistdio/test-u16-printf1.h \
+ unistdio/test-u16-vasnprintf1.c unistdio/test-u16-asnprintf1.h \
+ unistdio/test-u16-printf1.h unistdio/test-u16-vasnprintf2.sh \
+ unistdio/test-u16-vasnprintf2.c \
+ unistdio/test-u16-vasnprintf3.sh \
+ unistdio/test-u16-vasnprintf3.c unistdio/test-u16-vasprintf1.c \
+ unistdio/test-u16-printf1.h unistdio/test-u16-vsnprintf1.c \
+ unistdio/test-u16-printf1.h unistdio/test-u16-vsprintf1.c \
+ unistdio/test-u16-printf1.h unistdio/test-u32-asnprintf1.c \
+ unistdio/test-u32-asnprintf1.h unistdio/test-u32-printf1.h \
+ unistdio/test-u32-vasnprintf1.c unistdio/test-u32-asnprintf1.h \
+ unistdio/test-u32-printf1.h unistdio/test-u32-vasnprintf2.sh \
+ unistdio/test-u32-vasnprintf2.c \
+ unistdio/test-u32-vasnprintf3.sh \
+ unistdio/test-u32-vasnprintf3.c unistdio/test-u32-vasprintf1.c \
+ unistdio/test-u32-printf1.h unistdio/test-u32-vsnprintf1.c \
+ unistdio/test-u32-printf1.h unistdio/test-u32-vsprintf1.c \
+ unistdio/test-u32-printf1.h unistdio/test-u8-asnprintf1.c \
+ unistdio/test-u8-asnprintf1.h unistdio/test-u8-printf1.h \
+ unistdio/test-u8-vasnprintf1.c unistdio/test-u8-asnprintf1.h \
+ unistdio/test-u8-printf1.h unistdio/test-u8-vasnprintf2.sh \
+ unistdio/test-u8-vasnprintf2.c unistdio/test-u8-vasnprintf3.sh \
+ unistdio/test-u8-vasnprintf3.c unistdio/test-u8-vasprintf1.c \
+ unistdio/test-u8-printf1.h unistdio/test-u8-vsnprintf1.c \
+ unistdio/test-u8-printf1.h unistdio/test-u8-vsprintf1.c \
+ unistdio/test-u8-printf1.h unistdio/test-ulc-asnprintf1.c \
+ unistdio/test-ulc-asnprintf1.h unistdio/test-ulc-printf1.h \
+ unistdio/test-ulc-vasnprintf1.c unistdio/test-ulc-asnprintf1.h \
+ unistdio/test-ulc-printf1.h unistdio/test-ulc-vasnprintf2.sh \
+ unistdio/test-ulc-vasnprintf2.c \
+ unistdio/test-ulc-vasnprintf3.sh \
+ unistdio/test-ulc-vasnprintf3.c unistdio/test-ulc-vasprintf1.c \
+ unistdio/test-ulc-printf1.h unistdio/test-ulc-vsnprintf1.c \
+ unistdio/test-ulc-printf1.h unistdio/test-ulc-vsprintf1.c \
+ unistdio/test-ulc-printf1.h uniwbrk/test-u16-wordbreaks.c \
+ uniwbrk/test-u32-wordbreaks.c uniwbrk/test-u8-wordbreaks.c \
+ uniwbrk/test-ulc-wordbreaks.sh uniwbrk/test-ulc-wordbreaks.c \
+ uniwidth/test-u16-strwidth.c uniwidth/test-u16-width.c \
+ uniwidth/test-u32-strwidth.c uniwidth/test-u32-width.c \
+ uniwidth/test-u8-strwidth.c uniwidth/test-u8-width.c \
+ uniwidth/test-uc_width.c uniwidth/test-uc_width2.c \
+ uniwidth/test-uc_width2.sh unsetenv.c test-wchar.c wctob.c \
+ test-wctype.c test-wcwidth.c xalloc.h xmalloc.c
+BUILT_SOURCES = $(LOCALE_H)
+SUFFIXES =
+MOSTLYCLEANFILES = core *.stackdump locale.h locale.h-t
+MOSTLYCLEANDIRS =
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+AM_CPPFLAGS = \
+ -I. -I$(srcdir) \
+ -I.. -I$(srcdir)/.. \
+ -I../lib -I$(srcdir)/../lib
+
+LDADD = libtests.a ../lib/libunistring.la libtests.a $(LIBTESTS_LIBDEPS)
+libtests_a_SOURCES = gettext.h progname.h progname.c xalloc-die.c
+libtests_a_LIBADD = $(gltests_LIBOBJS)
+libtests_a_DEPENDENCIES = $(gltests_LIBOBJS)
+EXTRA_libtests_a_SOURCES = error.c exitfail.c setenv.c strerror.c \
+ unsetenv.c wctob.c xmalloc.c
+AM_LIBTOOLFLAGS = --preserve-dup-deps
+test_frexpl_nolibm_SOURCES = test-frexpl.c
+test_iconv_LDADD = $(LDADD) @LIBICONV@
+test_localename_LDADD = $(LDADD) @INTL_MACOSX_LIBS@
+test_striconveh_LDADD = $(LDADD) @LIBICONV@
+test_striconveha_LDADD = $(LDADD) @LIBICONV@
+test_cased_SOURCES = unicase/test-cased.c
+test_ignorable_SOURCES = unicase/test-ignorable.c
+test_locale_language_SOURCES = unicase/test-locale-language.c
+test_locale_language_LDADD = $(LDADD) @INTL_MACOSX_LIBS@
+test_uc_tolower_SOURCES = unicase/test-uc_tolower.c
+test_uc_totitle_SOURCES = unicase/test-uc_totitle.c
+test_uc_toupper_SOURCES = unicase/test-uc_toupper.c
+test_u16_casecmp_SOURCES = unicase/test-u16-casecmp.c
+test_u16_casecoll_SOURCES = unicase/test-u16-casecoll.c
+test_u16_casecoll_LDADD = $(LDADD) @LIBICONV@
+test_u16_casefold_SOURCES = unicase/test-u16-casefold.c
+test_u16_is_cased_SOURCES = unicase/test-u16-is-cased.c
+test_u16_is_casefolded_SOURCES = unicase/test-u16-is-casefolded.c
+test_u16_is_lowercase_SOURCES = unicase/test-u16-is-lowercase.c
+test_u16_is_titlecase_SOURCES = unicase/test-u16-is-titlecase.c
+test_u16_is_uppercase_SOURCES = unicase/test-u16-is-uppercase.c
+test_u16_tolower_SOURCES = unicase/test-u16-tolower.c
+test_u16_totitle_SOURCES = unicase/test-u16-totitle.c
+test_u16_toupper_SOURCES = unicase/test-u16-toupper.c
+test_u32_casecmp_SOURCES = unicase/test-u32-casecmp.c
+test_u32_casecoll_SOURCES = unicase/test-u32-casecoll.c
+test_u32_casecoll_LDADD = $(LDADD) @LIBICONV@
+test_u32_casefold_SOURCES = unicase/test-u32-casefold.c
+test_u32_is_cased_SOURCES = unicase/test-u32-is-cased.c
+test_u32_is_casefolded_SOURCES = unicase/test-u32-is-casefolded.c
+test_u32_is_lowercase_SOURCES = unicase/test-u32-is-lowercase.c
+test_u32_is_titlecase_SOURCES = unicase/test-u32-is-titlecase.c
+test_u32_is_uppercase_SOURCES = unicase/test-u32-is-uppercase.c
+test_u32_tolower_SOURCES = unicase/test-u32-tolower.c
+test_u32_totitle_SOURCES = unicase/test-u32-totitle.c
+test_u32_toupper_SOURCES = unicase/test-u32-toupper.c
+test_u8_casecmp_SOURCES = unicase/test-u8-casecmp.c
+test_u8_casecoll_SOURCES = unicase/test-u8-casecoll.c
+test_u8_casecoll_LDADD = $(LDADD) @LIBICONV@
+test_u8_casefold_SOURCES = unicase/test-u8-casefold.c
+test_u8_is_cased_SOURCES = unicase/test-u8-is-cased.c
+test_u8_is_casefolded_SOURCES = unicase/test-u8-is-casefolded.c
+test_u8_is_lowercase_SOURCES = unicase/test-u8-is-lowercase.c
+test_u8_is_titlecase_SOURCES = unicase/test-u8-is-titlecase.c
+test_u8_is_uppercase_SOURCES = unicase/test-u8-is-uppercase.c
+test_u8_tolower_SOURCES = unicase/test-u8-tolower.c
+test_u8_totitle_SOURCES = unicase/test-u8-totitle.c
+test_u8_toupper_SOURCES = unicase/test-u8-toupper.c
+test_ulc_casecmp_SOURCES = unicase/test-ulc-casecmp.c
+test_ulc_casecmp_LDADD = $(LDADD) @LIBICONV@
+test_ulc_casecoll_SOURCES = unicase/test-ulc-casecoll.c
+test_ulc_casecoll_LDADD = $(LDADD) @LIBICONV@
+test_u16_conv_from_enc_SOURCES = uniconv/test-u16-conv-from-enc.c
+test_u16_conv_from_enc_LDADD = $(LDADD) @LIBICONV@
+test_u16_conv_to_enc_SOURCES = uniconv/test-u16-conv-to-enc.c
+test_u16_conv_to_enc_LDADD = $(LDADD) @LIBICONV@
+test_u16_strconv_from_enc_SOURCES = uniconv/test-u16-strconv-from-enc.c
+test_u16_strconv_from_enc_LDADD = $(LDADD) @LIBICONV@
+test_u16_strconv_to_enc_SOURCES = uniconv/test-u16-strconv-to-enc.c
+test_u16_strconv_to_enc_LDADD = $(LDADD) @LIBICONV@
+test_u32_conv_from_enc_SOURCES = uniconv/test-u32-conv-from-enc.c
+test_u32_conv_from_enc_LDADD = $(LDADD) @LIBICONV@
+test_u32_conv_to_enc_SOURCES = uniconv/test-u32-conv-to-enc.c
+test_u32_conv_to_enc_LDADD = $(LDADD) @LIBICONV@
+test_u32_strconv_from_enc_SOURCES = uniconv/test-u32-strconv-from-enc.c
+test_u32_strconv_from_enc_LDADD = $(LDADD) @LIBICONV@
+test_u32_strconv_to_enc_SOURCES = uniconv/test-u32-strconv-to-enc.c
+test_u32_strconv_to_enc_LDADD = $(LDADD) @LIBICONV@
+test_u8_conv_from_enc_SOURCES = uniconv/test-u8-conv-from-enc.c
+test_u8_conv_from_enc_LDADD = $(LDADD) @LIBICONV@
+test_u8_conv_to_enc_SOURCES = uniconv/test-u8-conv-to-enc.c
+test_u8_conv_to_enc_LDADD = $(LDADD) @LIBICONV@
+test_u8_strconv_from_enc_SOURCES = uniconv/test-u8-strconv-from-enc.c
+test_u8_strconv_from_enc_LDADD = $(LDADD) @LIBICONV@
+test_u8_strconv_to_enc_SOURCES = uniconv/test-u8-strconv-to-enc.c
+test_u8_strconv_to_enc_LDADD = $(LDADD) @LIBICONV@
+test_bidi_byname_SOURCES = unictype/test-bidi_byname.c
+test_bidi_name_SOURCES = unictype/test-bidi_name.c
+test_bidi_of_SOURCES = unictype/test-bidi_of.c
+test_bidi_test_SOURCES = unictype/test-bidi_test.c
+test_block_list_SOURCES = unictype/test-block_list.c
+test_block_of_SOURCES = unictype/test-block_of.c
+test_block_test_SOURCES = unictype/test-block_test.c
+test_categ_C_SOURCES = unictype/test-categ_C.c
+test_categ_Cc_SOURCES = unictype/test-categ_Cc.c
+test_categ_Cf_SOURCES = unictype/test-categ_Cf.c
+test_categ_Cn_SOURCES = unictype/test-categ_Cn.c
+test_categ_Co_SOURCES = unictype/test-categ_Co.c
+test_categ_Cs_SOURCES = unictype/test-categ_Cs.c
+test_categ_L_SOURCES = unictype/test-categ_L.c
+test_categ_Ll_SOURCES = unictype/test-categ_Ll.c
+test_categ_Lm_SOURCES = unictype/test-categ_Lm.c
+test_categ_Lo_SOURCES = unictype/test-categ_Lo.c
+test_categ_Lt_SOURCES = unictype/test-categ_Lt.c
+test_categ_Lu_SOURCES = unictype/test-categ_Lu.c
+test_categ_M_SOURCES = unictype/test-categ_M.c
+test_categ_Mc_SOURCES = unictype/test-categ_Mc.c
+test_categ_Me_SOURCES = unictype/test-categ_Me.c
+test_categ_Mn_SOURCES = unictype/test-categ_Mn.c
+test_categ_N_SOURCES = unictype/test-categ_N.c
+test_categ_Nd_SOURCES = unictype/test-categ_Nd.c
+test_categ_Nl_SOURCES = unictype/test-categ_Nl.c
+test_categ_No_SOURCES = unictype/test-categ_No.c
+test_categ_P_SOURCES = unictype/test-categ_P.c
+test_categ_Pc_SOURCES = unictype/test-categ_Pc.c
+test_categ_Pd_SOURCES = unictype/test-categ_Pd.c
+test_categ_Pe_SOURCES = unictype/test-categ_Pe.c
+test_categ_Pf_SOURCES = unictype/test-categ_Pf.c
+test_categ_Pi_SOURCES = unictype/test-categ_Pi.c
+test_categ_Po_SOURCES = unictype/test-categ_Po.c
+test_categ_Ps_SOURCES = unictype/test-categ_Ps.c
+test_categ_S_SOURCES = unictype/test-categ_S.c
+test_categ_Sc_SOURCES = unictype/test-categ_Sc.c
+test_categ_Sk_SOURCES = unictype/test-categ_Sk.c
+test_categ_Sm_SOURCES = unictype/test-categ_Sm.c
+test_categ_So_SOURCES = unictype/test-categ_So.c
+test_categ_Z_SOURCES = unictype/test-categ_Z.c
+test_categ_Zl_SOURCES = unictype/test-categ_Zl.c
+test_categ_Zp_SOURCES = unictype/test-categ_Zp.c
+test_categ_Zs_SOURCES = unictype/test-categ_Zs.c
+test_categ_and_not_SOURCES = unictype/test-categ_and_not.c
+test_categ_and_SOURCES = unictype/test-categ_and.c
+test_categ_byname_SOURCES = unictype/test-categ_byname.c
+test_categ_name_SOURCES = unictype/test-categ_name.c
+@WOE32DLL_FALSE@test_categ_none_SOURCES = unictype/test-categ_none.c
+test_categ_of_SOURCES = unictype/test-categ_of.c
+test_categ_or_SOURCES = unictype/test-categ_or.c
+test_categ_test_withtable_SOURCES = unictype/test-categ_test_withtable.c
+test_combining_SOURCES = unictype/test-combining.c
+test_ctype_alnum_SOURCES = unictype/test-ctype_alnum.c
+test_ctype_alpha_SOURCES = unictype/test-ctype_alpha.c
+test_ctype_blank_SOURCES = unictype/test-ctype_blank.c
+test_ctype_cntrl_SOURCES = unictype/test-ctype_cntrl.c
+test_ctype_digit_SOURCES = unictype/test-ctype_digit.c
+test_ctype_graph_SOURCES = unictype/test-ctype_graph.c
+test_ctype_lower_SOURCES = unictype/test-ctype_lower.c
+test_ctype_print_SOURCES = unictype/test-ctype_print.c
+test_ctype_punct_SOURCES = unictype/test-ctype_punct.c
+test_ctype_space_SOURCES = unictype/test-ctype_space.c
+test_ctype_upper_SOURCES = unictype/test-ctype_upper.c
+test_ctype_xdigit_SOURCES = unictype/test-ctype_xdigit.c
+test_decdigit_SOURCES = unictype/test-decdigit.c
+test_digit_SOURCES = unictype/test-digit.c
+test_mirror_SOURCES = unictype/test-mirror.c
+test_numeric_SOURCES = unictype/test-numeric.c
+test_pr_alphabetic_SOURCES = unictype/test-pr_alphabetic.c
+test_pr_ascii_hex_digit_SOURCES = unictype/test-pr_ascii_hex_digit.c
+test_pr_bidi_arabic_digit_SOURCES = unictype/test-pr_bidi_arabic_digit.c
+test_pr_bidi_arabic_right_to_left_SOURCES = unictype/test-pr_bidi_arabic_right_to_left.c
+test_pr_bidi_block_separator_SOURCES = unictype/test-pr_bidi_block_separator.c
+test_pr_bidi_boundary_neutral_SOURCES = unictype/test-pr_bidi_boundary_neutral.c
+test_pr_bidi_common_separator_SOURCES = unictype/test-pr_bidi_common_separator.c
+test_pr_bidi_control_SOURCES = unictype/test-pr_bidi_control.c
+test_pr_bidi_embedding_or_override_SOURCES = unictype/test-pr_bidi_embedding_or_override.c
+test_pr_bidi_eur_num_separator_SOURCES = unictype/test-pr_bidi_eur_num_separator.c
+test_pr_bidi_eur_num_terminator_SOURCES = unictype/test-pr_bidi_eur_num_terminator.c
+test_pr_bidi_european_digit_SOURCES = unictype/test-pr_bidi_european_digit.c
+test_pr_bidi_hebrew_right_to_left_SOURCES = unictype/test-pr_bidi_hebrew_right_to_left.c
+test_pr_bidi_left_to_right_SOURCES = unictype/test-pr_bidi_left_to_right.c
+test_pr_bidi_non_spacing_mark_SOURCES = unictype/test-pr_bidi_non_spacing_mark.c
+test_pr_bidi_other_neutral_SOURCES = unictype/test-pr_bidi_other_neutral.c
+test_pr_bidi_pdf_SOURCES = unictype/test-pr_bidi_pdf.c
+test_pr_bidi_segment_separator_SOURCES = unictype/test-pr_bidi_segment_separator.c
+test_pr_bidi_whitespace_SOURCES = unictype/test-pr_bidi_whitespace.c
+test_pr_byname_SOURCES = unictype/test-pr_byname.c
+test_pr_combining_SOURCES = unictype/test-pr_combining.c
+test_pr_composite_SOURCES = unictype/test-pr_composite.c
+test_pr_currency_symbol_SOURCES = unictype/test-pr_currency_symbol.c
+test_pr_dash_SOURCES = unictype/test-pr_dash.c
+test_pr_decimal_digit_SOURCES = unictype/test-pr_decimal_digit.c
+test_pr_default_ignorable_code_point_SOURCES = unictype/test-pr_default_ignorable_code_point.c
+test_pr_deprecated_SOURCES = unictype/test-pr_deprecated.c
+test_pr_diacritic_SOURCES = unictype/test-pr_diacritic.c
+test_pr_extender_SOURCES = unictype/test-pr_extender.c
+test_pr_format_control_SOURCES = unictype/test-pr_format_control.c
+test_pr_grapheme_base_SOURCES = unictype/test-pr_grapheme_base.c
+test_pr_grapheme_extend_SOURCES = unictype/test-pr_grapheme_extend.c
+test_pr_grapheme_link_SOURCES = unictype/test-pr_grapheme_link.c
+test_pr_hex_digit_SOURCES = unictype/test-pr_hex_digit.c
+test_pr_hyphen_SOURCES = unictype/test-pr_hyphen.c
+test_pr_id_continue_SOURCES = unictype/test-pr_id_continue.c
+test_pr_id_start_SOURCES = unictype/test-pr_id_start.c
+test_pr_ideographic_SOURCES = unictype/test-pr_ideographic.c
+test_pr_ids_binary_operator_SOURCES = unictype/test-pr_ids_binary_operator.c
+test_pr_ids_trinary_operator_SOURCES = unictype/test-pr_ids_trinary_operator.c
+test_pr_ignorable_control_SOURCES = unictype/test-pr_ignorable_control.c
+test_pr_iso_control_SOURCES = unictype/test-pr_iso_control.c
+test_pr_join_control_SOURCES = unictype/test-pr_join_control.c
+test_pr_left_of_pair_SOURCES = unictype/test-pr_left_of_pair.c
+test_pr_line_separator_SOURCES = unictype/test-pr_line_separator.c
+test_pr_logical_order_exception_SOURCES = unictype/test-pr_logical_order_exception.c
+test_pr_lowercase_SOURCES = unictype/test-pr_lowercase.c
+test_pr_math_SOURCES = unictype/test-pr_math.c
+test_pr_non_break_SOURCES = unictype/test-pr_non_break.c
+test_pr_not_a_character_SOURCES = unictype/test-pr_not_a_character.c
+test_pr_numeric_SOURCES = unictype/test-pr_numeric.c
+test_pr_other_alphabetic_SOURCES = unictype/test-pr_other_alphabetic.c
+test_pr_other_default_ignorable_code_point_SOURCES = unictype/test-pr_other_default_ignorable_code_point.c
+test_pr_other_grapheme_extend_SOURCES = unictype/test-pr_other_grapheme_extend.c
+test_pr_other_id_continue_SOURCES = unictype/test-pr_other_id_continue.c
+test_pr_other_id_start_SOURCES = unictype/test-pr_other_id_start.c
+test_pr_other_lowercase_SOURCES = unictype/test-pr_other_lowercase.c
+test_pr_other_math_SOURCES = unictype/test-pr_other_math.c
+test_pr_other_uppercase_SOURCES = unictype/test-pr_other_uppercase.c
+test_pr_paired_punctuation_SOURCES = unictype/test-pr_paired_punctuation.c
+test_pr_paragraph_separator_SOURCES = unictype/test-pr_paragraph_separator.c
+test_pr_pattern_syntax_SOURCES = unictype/test-pr_pattern_syntax.c
+test_pr_pattern_white_space_SOURCES = unictype/test-pr_pattern_white_space.c
+test_pr_private_use_SOURCES = unictype/test-pr_private_use.c
+test_pr_punctuation_SOURCES = unictype/test-pr_punctuation.c
+test_pr_quotation_mark_SOURCES = unictype/test-pr_quotation_mark.c
+test_pr_radical_SOURCES = unictype/test-pr_radical.c
+test_pr_sentence_terminal_SOURCES = unictype/test-pr_sentence_terminal.c
+test_pr_soft_dotted_SOURCES = unictype/test-pr_soft_dotted.c
+test_pr_space_SOURCES = unictype/test-pr_space.c
+test_pr_terminal_punctuation_SOURCES = unictype/test-pr_terminal_punctuation.c
+test_pr_test_SOURCES = unictype/test-pr_test.c
+test_pr_titlecase_SOURCES = unictype/test-pr_titlecase.c
+test_pr_unassigned_code_value_SOURCES = unictype/test-pr_unassigned_code_value.c
+test_pr_unified_ideograph_SOURCES = unictype/test-pr_unified_ideograph.c
+test_pr_uppercase_SOURCES = unictype/test-pr_uppercase.c
+test_pr_variation_selector_SOURCES = unictype/test-pr_variation_selector.c
+test_pr_white_space_SOURCES = unictype/test-pr_white_space.c
+test_pr_xid_continue_SOURCES = unictype/test-pr_xid_continue.c
+test_pr_xid_start_SOURCES = unictype/test-pr_xid_start.c
+test_pr_zero_width_SOURCES = unictype/test-pr_zero_width.c
+test_scripts_SOURCES = unictype/test-scripts.c
+test_sy_c_ident_SOURCES = unictype/test-sy_c_ident.c
+test_sy_c_whitespace_SOURCES = unictype/test-sy_c_whitespace.c
+test_sy_java_ident_SOURCES = unictype/test-sy_java_ident.c
+test_sy_java_whitespace_SOURCES = unictype/test-sy_java_whitespace.c
+test_u16_possible_linebreaks_SOURCES = unilbrk/test-u16-possible-linebreaks.c
+test_u16_width_linebreaks_SOURCES = unilbrk/test-u16-width-linebreaks.c
+test_u32_possible_linebreaks_SOURCES = unilbrk/test-u32-possible-linebreaks.c
+test_u32_width_linebreaks_SOURCES = unilbrk/test-u32-width-linebreaks.c
+test_u8_possible_linebreaks_SOURCES = unilbrk/test-u8-possible-linebreaks.c
+test_u8_width_linebreaks_SOURCES = unilbrk/test-u8-width-linebreaks.c
+test_ulc_possible_linebreaks_SOURCES = unilbrk/test-ulc-possible-linebreaks.c
+test_ulc_possible_linebreaks_LDADD = $(LDADD) @LIBICONV@
+test_ulc_width_linebreaks_SOURCES = unilbrk/test-ulc-width-linebreaks.c
+test_ulc_width_linebreaks_LDADD = $(LDADD) @LIBICONV@
+test_uninames_SOURCES = uniname/test-uninames.c
+test_uninames_LDADD = $(LDADD) @LIBINTL@
+test_canonical_decomposition_SOURCES = uninorm/test-canonical-decomposition.c
+test_compat_decomposition_SOURCES = uninorm/test-compat-decomposition.c
+test_composition_SOURCES = uninorm/test-composition.c
+test_decomposing_form_SOURCES = uninorm/test-decomposing-form.c
+test_decomposition_SOURCES = uninorm/test-decomposition.c
+test_uninorm_filter_nfc_SOURCES = uninorm/test-uninorm-filter-nfc.c
+test_nfc_SOURCES = \
+ uninorm/test-nfc.c \
+ uninorm/test-u8-nfc.c \
+ uninorm/test-u16-nfc.c \
+ uninorm/test-u32-nfc.c
+
+test_u32_nfc_big_SOURCES = \
+ uninorm/test-u32-nfc-big.c \
+ uninorm/test-u32-normalize-big.c
+
+test_u32_nfc_big_LDADD = $(LDADD) @LIBINTL@
+test_nfd_SOURCES = \
+ uninorm/test-nfd.c \
+ uninorm/test-u8-nfd.c \
+ uninorm/test-u16-nfd.c \
+ uninorm/test-u32-nfd.c
+
+test_u32_nfd_big_SOURCES = \
+ uninorm/test-u32-nfd-big.c \
+ uninorm/test-u32-normalize-big.c
+
+test_u32_nfd_big_LDADD = $(LDADD) @LIBINTL@
+test_nfkc_SOURCES = \
+ uninorm/test-nfkc.c \
+ uninorm/test-u8-nfkc.c \
+ uninorm/test-u16-nfkc.c \
+ uninorm/test-u32-nfkc.c
+
+test_u32_nfkc_big_SOURCES = \
+ uninorm/test-u32-nfkc-big.c \
+ uninorm/test-u32-normalize-big.c
+
+test_u32_nfkc_big_LDADD = $(LDADD) @LIBINTL@
+test_nfkd_SOURCES = \
+ uninorm/test-nfkd.c \
+ uninorm/test-u8-nfkd.c \
+ uninorm/test-u16-nfkd.c \
+ uninorm/test-u32-nfkd.c
+
+test_u32_nfkd_big_SOURCES = \
+ uninorm/test-u32-nfkd-big.c \
+ uninorm/test-u32-normalize-big.c
+
+test_u32_nfkd_big_LDADD = $(LDADD) @LIBINTL@
+test_u16_normcmp_SOURCES = uninorm/test-u16-normcmp.c
+test_u16_normcoll_SOURCES = uninorm/test-u16-normcoll.c
+test_u16_normcoll_LDADD = $(LDADD) @LIBICONV@
+test_u32_normcmp_SOURCES = uninorm/test-u32-normcmp.c
+test_u32_normcoll_SOURCES = uninorm/test-u32-normcoll.c
+test_u32_normcoll_LDADD = $(LDADD) @LIBICONV@
+test_u8_normcmp_SOURCES = uninorm/test-u8-normcmp.c
+test_u8_normcoll_SOURCES = uninorm/test-u8-normcoll.c
+test_u8_normcoll_LDADD = $(LDADD) @LIBICONV@
+test_u16_asnprintf1_SOURCES = unistdio/test-u16-asnprintf1.c
+test_u16_asnprintf1_LDADD = $(LDADD) @LIBICONV@
+test_u16_vasnprintf1_SOURCES = unistdio/test-u16-vasnprintf1.c
+test_u16_vasnprintf1_LDADD = $(LDADD) @LIBICONV@
+test_u16_vasnprintf2_SOURCES = unistdio/test-u16-vasnprintf2.c
+test_u16_vasnprintf2_LDADD = $(LDADD) @LIBICONV@
+test_u16_vasnprintf3_SOURCES = unistdio/test-u16-vasnprintf3.c
+test_u16_vasnprintf3_LDADD = $(LDADD) @LIBICONV@
+test_u16_vasprintf1_SOURCES = unistdio/test-u16-vasprintf1.c
+test_u16_vasprintf1_LDADD = $(LDADD) @LIBICONV@
+test_u16_vsnprintf1_SOURCES = unistdio/test-u16-vsnprintf1.c
+test_u16_vsnprintf1_LDADD = $(LDADD) @LIBINTL@ @LIBICONV@
+test_u16_vsprintf1_SOURCES = unistdio/test-u16-vsprintf1.c
+test_u16_vsprintf1_LDADD = $(LDADD) @LIBINTL@ @LIBICONV@
+test_u32_asnprintf1_SOURCES = unistdio/test-u32-asnprintf1.c
+test_u32_asnprintf1_LDADD = $(LDADD) @LIBICONV@
+test_u32_vasnprintf1_SOURCES = unistdio/test-u32-vasnprintf1.c
+test_u32_vasnprintf1_LDADD = $(LDADD) @LIBICONV@
+test_u32_vasnprintf2_SOURCES = unistdio/test-u32-vasnprintf2.c
+test_u32_vasnprintf2_LDADD = $(LDADD) @LIBICONV@
+test_u32_vasnprintf3_SOURCES = unistdio/test-u32-vasnprintf3.c
+test_u32_vasnprintf3_LDADD = $(LDADD) @LIBICONV@
+test_u32_vasprintf1_SOURCES = unistdio/test-u32-vasprintf1.c
+test_u32_vasprintf1_LDADD = $(LDADD) @LIBICONV@
+test_u32_vsnprintf1_SOURCES = unistdio/test-u32-vsnprintf1.c
+test_u32_vsnprintf1_LDADD = $(LDADD) @LIBINTL@ @LIBICONV@
+test_u32_vsprintf1_SOURCES = unistdio/test-u32-vsprintf1.c
+test_u32_vsprintf1_LDADD = $(LDADD) @LIBINTL@ @LIBICONV@
+test_u8_asnprintf1_SOURCES = unistdio/test-u8-asnprintf1.c
+test_u8_asnprintf1_LDADD = $(LDADD) @LIBICONV@
+test_u8_vasnprintf1_SOURCES = unistdio/test-u8-vasnprintf1.c
+test_u8_vasnprintf1_LDADD = $(LDADD) @LIBICONV@
+test_u8_vasnprintf2_SOURCES = unistdio/test-u8-vasnprintf2.c
+test_u8_vasnprintf2_LDADD = $(LDADD) @LIBICONV@
+test_u8_vasnprintf3_SOURCES = unistdio/test-u8-vasnprintf3.c
+test_u8_vasnprintf3_LDADD = $(LDADD) @LIBICONV@
+test_u8_vasprintf1_SOURCES = unistdio/test-u8-vasprintf1.c
+test_u8_vasprintf1_LDADD = $(LDADD) @LIBICONV@
+test_u8_vsnprintf1_SOURCES = unistdio/test-u8-vsnprintf1.c
+test_u8_vsnprintf1_LDADD = $(LDADD) @LIBINTL@ @LIBICONV@
+test_u8_vsprintf1_SOURCES = unistdio/test-u8-vsprintf1.c
+test_u8_vsprintf1_LDADD = $(LDADD) @LIBINTL@ @LIBICONV@
+test_ulc_asnprintf1_SOURCES = unistdio/test-ulc-asnprintf1.c
+test_ulc_asnprintf1_LDADD = $(LDADD) @LIBICONV@
+test_ulc_vasnprintf1_SOURCES = unistdio/test-ulc-vasnprintf1.c
+test_ulc_vasnprintf1_LDADD = $(LDADD) @LIBICONV@
+test_ulc_vasnprintf2_SOURCES = unistdio/test-ulc-vasnprintf2.c
+test_ulc_vasnprintf2_LDADD = $(LDADD) @LIBICONV@
+test_ulc_vasnprintf3_SOURCES = unistdio/test-ulc-vasnprintf3.c
+test_ulc_vasnprintf3_LDADD = $(LDADD) @LIBICONV@
+test_ulc_vasprintf1_SOURCES = unistdio/test-ulc-vasprintf1.c
+test_ulc_vasprintf1_LDADD = $(LDADD) @LIBICONV@
+test_ulc_vsnprintf1_SOURCES = unistdio/test-ulc-vsnprintf1.c
+test_ulc_vsnprintf1_LDADD = $(LDADD) @LIBINTL@ @LIBICONV@
+test_ulc_vsprintf1_SOURCES = unistdio/test-ulc-vsprintf1.c
+test_ulc_vsprintf1_LDADD = $(LDADD) @LIBINTL@ @LIBICONV@
+test_u16_wordbreaks_SOURCES = uniwbrk/test-u16-wordbreaks.c
+test_u32_wordbreaks_SOURCES = uniwbrk/test-u32-wordbreaks.c
+test_u8_wordbreaks_SOURCES = uniwbrk/test-u8-wordbreaks.c
+test_ulc_wordbreaks_SOURCES = uniwbrk/test-ulc-wordbreaks.c
+test_ulc_wordbreaks_LDADD = $(LDADD) @LIBICONV@
+test_u16_strwidth_SOURCES = uniwidth/test-u16-strwidth.c
+test_u16_width_SOURCES = uniwidth/test-u16-width.c
+test_u32_strwidth_SOURCES = uniwidth/test-u32-strwidth.c
+test_u32_width_SOURCES = uniwidth/test-u32-width.c
+test_u8_strwidth_SOURCES = uniwidth/test-u8-strwidth.c
+test_u8_width_SOURCES = uniwidth/test-u8-width.c
+test_uc_width_SOURCES = uniwidth/test-uc_width.c
+test_uc_width2_SOURCES = uniwidth/test-uc_width2.c
+
+# Ensure that ../lib/config.h is seen before ../config.h.
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/lib -I$(top_builddir)
+
+# For debugging memory leaks and memory allocation bugs.
+# You should build with --disable-shared when using valgrind.
+CHECKER =
+#CHECKER = valgrind --tool=memcheck --suppressions=$(srcdir)/../lib/malloca.valgrind --num-callers=20 --leak-check=yes --leak-resolution=high --show-reachable=yes
+#CHECKER = valgrind --tool=massif --format=html --depth=10 --alloc-fn=xmalloc --alloc-fn=xrealloc --stacks=no
+CHECKER_END_OF_COMMENTS =
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Makefile.gnulib $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign tests/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkLIBRARIES:
+ -test -z "$(check_LIBRARIES)" || rm -f $(check_LIBRARIES)
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libtests.a: $(libtests_a_OBJECTS) $(libtests_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libtests.a
+ $(AM_V_AR)$(libtests_a_AR) libtests.a $(libtests_a_OBJECTS) $(libtests_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libtests.a
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+clean-noinstPROGRAMS:
+ @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+test-alloca-opt$(EXEEXT): $(test_alloca_opt_OBJECTS) $(test_alloca_opt_DEPENDENCIES)
+ @rm -f test-alloca-opt$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_alloca_opt_OBJECTS) $(test_alloca_opt_LDADD) $(LIBS)
+test-array-mergesort$(EXEEXT): $(test_array_mergesort_OBJECTS) $(test_array_mergesort_DEPENDENCIES)
+ @rm -f test-array-mergesort$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_array_mergesort_OBJECTS) $(test_array_mergesort_LDADD) $(LIBS)
+unictype/$(am__dirstamp):
+ @$(MKDIR_P) unictype
+ @: > unictype/$(am__dirstamp)
+unictype/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) unictype/$(DEPDIR)
+ @: > unictype/$(DEPDIR)/$(am__dirstamp)
+unictype/test-bidi_byname.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-bidi_byname$(EXEEXT): $(test_bidi_byname_OBJECTS) $(test_bidi_byname_DEPENDENCIES)
+ @rm -f test-bidi_byname$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_bidi_byname_OBJECTS) $(test_bidi_byname_LDADD) $(LIBS)
+unictype/test-bidi_name.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-bidi_name$(EXEEXT): $(test_bidi_name_OBJECTS) $(test_bidi_name_DEPENDENCIES)
+ @rm -f test-bidi_name$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_bidi_name_OBJECTS) $(test_bidi_name_LDADD) $(LIBS)
+unictype/test-bidi_of.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-bidi_of$(EXEEXT): $(test_bidi_of_OBJECTS) $(test_bidi_of_DEPENDENCIES)
+ @rm -f test-bidi_of$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_bidi_of_OBJECTS) $(test_bidi_of_LDADD) $(LIBS)
+unictype/test-bidi_test.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-bidi_test$(EXEEXT): $(test_bidi_test_OBJECTS) $(test_bidi_test_DEPENDENCIES)
+ @rm -f test-bidi_test$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_bidi_test_OBJECTS) $(test_bidi_test_LDADD) $(LIBS)
+unictype/test-block_list.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-block_list$(EXEEXT): $(test_block_list_OBJECTS) $(test_block_list_DEPENDENCIES)
+ @rm -f test-block_list$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_block_list_OBJECTS) $(test_block_list_LDADD) $(LIBS)
+unictype/test-block_of.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-block_of$(EXEEXT): $(test_block_of_OBJECTS) $(test_block_of_DEPENDENCIES)
+ @rm -f test-block_of$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_block_of_OBJECTS) $(test_block_of_LDADD) $(LIBS)
+unictype/test-block_test.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-block_test$(EXEEXT): $(test_block_test_OBJECTS) $(test_block_test_DEPENDENCIES)
+ @rm -f test-block_test$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_block_test_OBJECTS) $(test_block_test_LDADD) $(LIBS)
+test-c-ctype$(EXEEXT): $(test_c_ctype_OBJECTS) $(test_c_ctype_DEPENDENCIES)
+ @rm -f test-c-ctype$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c_ctype_OBJECTS) $(test_c_ctype_LDADD) $(LIBS)
+test-c-strcasecmp$(EXEEXT): $(test_c_strcasecmp_OBJECTS) $(test_c_strcasecmp_DEPENDENCIES)
+ @rm -f test-c-strcasecmp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c_strcasecmp_OBJECTS) $(test_c_strcasecmp_LDADD) $(LIBS)
+test-c-strncasecmp$(EXEEXT): $(test_c_strncasecmp_OBJECTS) $(test_c_strncasecmp_DEPENDENCIES)
+ @rm -f test-c-strncasecmp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c_strncasecmp_OBJECTS) $(test_c_strncasecmp_LDADD) $(LIBS)
+uninorm/$(am__dirstamp):
+ @$(MKDIR_P) uninorm
+ @: > uninorm/$(am__dirstamp)
+uninorm/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) uninorm/$(DEPDIR)
+ @: > uninorm/$(DEPDIR)/$(am__dirstamp)
+uninorm/test-canonical-decomposition.$(OBJEXT): \
+ uninorm/$(am__dirstamp) uninorm/$(DEPDIR)/$(am__dirstamp)
+test-canonical-decomposition$(EXEEXT): $(test_canonical_decomposition_OBJECTS) $(test_canonical_decomposition_DEPENDENCIES)
+ @rm -f test-canonical-decomposition$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_canonical_decomposition_OBJECTS) $(test_canonical_decomposition_LDADD) $(LIBS)
+unicase/$(am__dirstamp):
+ @$(MKDIR_P) unicase
+ @: > unicase/$(am__dirstamp)
+unicase/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) unicase/$(DEPDIR)
+ @: > unicase/$(DEPDIR)/$(am__dirstamp)
+unicase/test-cased.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-cased$(EXEEXT): $(test_cased_OBJECTS) $(test_cased_DEPENDENCIES)
+ @rm -f test-cased$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_cased_OBJECTS) $(test_cased_LDADD) $(LIBS)
+unictype/test-categ_C.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_C$(EXEEXT): $(test_categ_C_OBJECTS) $(test_categ_C_DEPENDENCIES)
+ @rm -f test-categ_C$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_C_OBJECTS) $(test_categ_C_LDADD) $(LIBS)
+unictype/test-categ_Cc.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Cc$(EXEEXT): $(test_categ_Cc_OBJECTS) $(test_categ_Cc_DEPENDENCIES)
+ @rm -f test-categ_Cc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Cc_OBJECTS) $(test_categ_Cc_LDADD) $(LIBS)
+unictype/test-categ_Cf.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Cf$(EXEEXT): $(test_categ_Cf_OBJECTS) $(test_categ_Cf_DEPENDENCIES)
+ @rm -f test-categ_Cf$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Cf_OBJECTS) $(test_categ_Cf_LDADD) $(LIBS)
+unictype/test-categ_Cn.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Cn$(EXEEXT): $(test_categ_Cn_OBJECTS) $(test_categ_Cn_DEPENDENCIES)
+ @rm -f test-categ_Cn$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Cn_OBJECTS) $(test_categ_Cn_LDADD) $(LIBS)
+unictype/test-categ_Co.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Co$(EXEEXT): $(test_categ_Co_OBJECTS) $(test_categ_Co_DEPENDENCIES)
+ @rm -f test-categ_Co$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Co_OBJECTS) $(test_categ_Co_LDADD) $(LIBS)
+unictype/test-categ_Cs.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Cs$(EXEEXT): $(test_categ_Cs_OBJECTS) $(test_categ_Cs_DEPENDENCIES)
+ @rm -f test-categ_Cs$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Cs_OBJECTS) $(test_categ_Cs_LDADD) $(LIBS)
+unictype/test-categ_L.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_L$(EXEEXT): $(test_categ_L_OBJECTS) $(test_categ_L_DEPENDENCIES)
+ @rm -f test-categ_L$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_L_OBJECTS) $(test_categ_L_LDADD) $(LIBS)
+unictype/test-categ_Ll.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Ll$(EXEEXT): $(test_categ_Ll_OBJECTS) $(test_categ_Ll_DEPENDENCIES)
+ @rm -f test-categ_Ll$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Ll_OBJECTS) $(test_categ_Ll_LDADD) $(LIBS)
+unictype/test-categ_Lm.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Lm$(EXEEXT): $(test_categ_Lm_OBJECTS) $(test_categ_Lm_DEPENDENCIES)
+ @rm -f test-categ_Lm$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Lm_OBJECTS) $(test_categ_Lm_LDADD) $(LIBS)
+unictype/test-categ_Lo.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Lo$(EXEEXT): $(test_categ_Lo_OBJECTS) $(test_categ_Lo_DEPENDENCIES)
+ @rm -f test-categ_Lo$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Lo_OBJECTS) $(test_categ_Lo_LDADD) $(LIBS)
+unictype/test-categ_Lt.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Lt$(EXEEXT): $(test_categ_Lt_OBJECTS) $(test_categ_Lt_DEPENDENCIES)
+ @rm -f test-categ_Lt$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Lt_OBJECTS) $(test_categ_Lt_LDADD) $(LIBS)
+unictype/test-categ_Lu.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Lu$(EXEEXT): $(test_categ_Lu_OBJECTS) $(test_categ_Lu_DEPENDENCIES)
+ @rm -f test-categ_Lu$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Lu_OBJECTS) $(test_categ_Lu_LDADD) $(LIBS)
+unictype/test-categ_M.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_M$(EXEEXT): $(test_categ_M_OBJECTS) $(test_categ_M_DEPENDENCIES)
+ @rm -f test-categ_M$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_M_OBJECTS) $(test_categ_M_LDADD) $(LIBS)
+unictype/test-categ_Mc.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Mc$(EXEEXT): $(test_categ_Mc_OBJECTS) $(test_categ_Mc_DEPENDENCIES)
+ @rm -f test-categ_Mc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Mc_OBJECTS) $(test_categ_Mc_LDADD) $(LIBS)
+unictype/test-categ_Me.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Me$(EXEEXT): $(test_categ_Me_OBJECTS) $(test_categ_Me_DEPENDENCIES)
+ @rm -f test-categ_Me$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Me_OBJECTS) $(test_categ_Me_LDADD) $(LIBS)
+unictype/test-categ_Mn.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Mn$(EXEEXT): $(test_categ_Mn_OBJECTS) $(test_categ_Mn_DEPENDENCIES)
+ @rm -f test-categ_Mn$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Mn_OBJECTS) $(test_categ_Mn_LDADD) $(LIBS)
+unictype/test-categ_N.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_N$(EXEEXT): $(test_categ_N_OBJECTS) $(test_categ_N_DEPENDENCIES)
+ @rm -f test-categ_N$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_N_OBJECTS) $(test_categ_N_LDADD) $(LIBS)
+unictype/test-categ_Nd.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Nd$(EXEEXT): $(test_categ_Nd_OBJECTS) $(test_categ_Nd_DEPENDENCIES)
+ @rm -f test-categ_Nd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Nd_OBJECTS) $(test_categ_Nd_LDADD) $(LIBS)
+unictype/test-categ_Nl.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Nl$(EXEEXT): $(test_categ_Nl_OBJECTS) $(test_categ_Nl_DEPENDENCIES)
+ @rm -f test-categ_Nl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Nl_OBJECTS) $(test_categ_Nl_LDADD) $(LIBS)
+unictype/test-categ_No.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_No$(EXEEXT): $(test_categ_No_OBJECTS) $(test_categ_No_DEPENDENCIES)
+ @rm -f test-categ_No$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_No_OBJECTS) $(test_categ_No_LDADD) $(LIBS)
+unictype/test-categ_P.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_P$(EXEEXT): $(test_categ_P_OBJECTS) $(test_categ_P_DEPENDENCIES)
+ @rm -f test-categ_P$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_P_OBJECTS) $(test_categ_P_LDADD) $(LIBS)
+unictype/test-categ_Pc.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Pc$(EXEEXT): $(test_categ_Pc_OBJECTS) $(test_categ_Pc_DEPENDENCIES)
+ @rm -f test-categ_Pc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Pc_OBJECTS) $(test_categ_Pc_LDADD) $(LIBS)
+unictype/test-categ_Pd.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Pd$(EXEEXT): $(test_categ_Pd_OBJECTS) $(test_categ_Pd_DEPENDENCIES)
+ @rm -f test-categ_Pd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Pd_OBJECTS) $(test_categ_Pd_LDADD) $(LIBS)
+unictype/test-categ_Pe.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Pe$(EXEEXT): $(test_categ_Pe_OBJECTS) $(test_categ_Pe_DEPENDENCIES)
+ @rm -f test-categ_Pe$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Pe_OBJECTS) $(test_categ_Pe_LDADD) $(LIBS)
+unictype/test-categ_Pf.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Pf$(EXEEXT): $(test_categ_Pf_OBJECTS) $(test_categ_Pf_DEPENDENCIES)
+ @rm -f test-categ_Pf$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Pf_OBJECTS) $(test_categ_Pf_LDADD) $(LIBS)
+unictype/test-categ_Pi.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Pi$(EXEEXT): $(test_categ_Pi_OBJECTS) $(test_categ_Pi_DEPENDENCIES)
+ @rm -f test-categ_Pi$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Pi_OBJECTS) $(test_categ_Pi_LDADD) $(LIBS)
+unictype/test-categ_Po.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Po$(EXEEXT): $(test_categ_Po_OBJECTS) $(test_categ_Po_DEPENDENCIES)
+ @rm -f test-categ_Po$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Po_OBJECTS) $(test_categ_Po_LDADD) $(LIBS)
+unictype/test-categ_Ps.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Ps$(EXEEXT): $(test_categ_Ps_OBJECTS) $(test_categ_Ps_DEPENDENCIES)
+ @rm -f test-categ_Ps$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Ps_OBJECTS) $(test_categ_Ps_LDADD) $(LIBS)
+unictype/test-categ_S.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_S$(EXEEXT): $(test_categ_S_OBJECTS) $(test_categ_S_DEPENDENCIES)
+ @rm -f test-categ_S$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_S_OBJECTS) $(test_categ_S_LDADD) $(LIBS)
+unictype/test-categ_Sc.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Sc$(EXEEXT): $(test_categ_Sc_OBJECTS) $(test_categ_Sc_DEPENDENCIES)
+ @rm -f test-categ_Sc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Sc_OBJECTS) $(test_categ_Sc_LDADD) $(LIBS)
+unictype/test-categ_Sk.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Sk$(EXEEXT): $(test_categ_Sk_OBJECTS) $(test_categ_Sk_DEPENDENCIES)
+ @rm -f test-categ_Sk$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Sk_OBJECTS) $(test_categ_Sk_LDADD) $(LIBS)
+unictype/test-categ_Sm.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Sm$(EXEEXT): $(test_categ_Sm_OBJECTS) $(test_categ_Sm_DEPENDENCIES)
+ @rm -f test-categ_Sm$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Sm_OBJECTS) $(test_categ_Sm_LDADD) $(LIBS)
+unictype/test-categ_So.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_So$(EXEEXT): $(test_categ_So_OBJECTS) $(test_categ_So_DEPENDENCIES)
+ @rm -f test-categ_So$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_So_OBJECTS) $(test_categ_So_LDADD) $(LIBS)
+unictype/test-categ_Z.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Z$(EXEEXT): $(test_categ_Z_OBJECTS) $(test_categ_Z_DEPENDENCIES)
+ @rm -f test-categ_Z$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Z_OBJECTS) $(test_categ_Z_LDADD) $(LIBS)
+unictype/test-categ_Zl.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Zl$(EXEEXT): $(test_categ_Zl_OBJECTS) $(test_categ_Zl_DEPENDENCIES)
+ @rm -f test-categ_Zl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Zl_OBJECTS) $(test_categ_Zl_LDADD) $(LIBS)
+unictype/test-categ_Zp.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Zp$(EXEEXT): $(test_categ_Zp_OBJECTS) $(test_categ_Zp_DEPENDENCIES)
+ @rm -f test-categ_Zp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Zp_OBJECTS) $(test_categ_Zp_LDADD) $(LIBS)
+unictype/test-categ_Zs.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_Zs$(EXEEXT): $(test_categ_Zs_OBJECTS) $(test_categ_Zs_DEPENDENCIES)
+ @rm -f test-categ_Zs$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_Zs_OBJECTS) $(test_categ_Zs_LDADD) $(LIBS)
+unictype/test-categ_and.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_and$(EXEEXT): $(test_categ_and_OBJECTS) $(test_categ_and_DEPENDENCIES)
+ @rm -f test-categ_and$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_and_OBJECTS) $(test_categ_and_LDADD) $(LIBS)
+unictype/test-categ_and_not.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_and_not$(EXEEXT): $(test_categ_and_not_OBJECTS) $(test_categ_and_not_DEPENDENCIES)
+ @rm -f test-categ_and_not$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_and_not_OBJECTS) $(test_categ_and_not_LDADD) $(LIBS)
+unictype/test-categ_byname.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_byname$(EXEEXT): $(test_categ_byname_OBJECTS) $(test_categ_byname_DEPENDENCIES)
+ @rm -f test-categ_byname$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_byname_OBJECTS) $(test_categ_byname_LDADD) $(LIBS)
+unictype/test-categ_name.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_name$(EXEEXT): $(test_categ_name_OBJECTS) $(test_categ_name_DEPENDENCIES)
+ @rm -f test-categ_name$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_name_OBJECTS) $(test_categ_name_LDADD) $(LIBS)
+unictype/test-categ_none.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_none$(EXEEXT): $(test_categ_none_OBJECTS) $(test_categ_none_DEPENDENCIES)
+ @rm -f test-categ_none$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_none_OBJECTS) $(test_categ_none_LDADD) $(LIBS)
+unictype/test-categ_of.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_of$(EXEEXT): $(test_categ_of_OBJECTS) $(test_categ_of_DEPENDENCIES)
+ @rm -f test-categ_of$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_of_OBJECTS) $(test_categ_of_LDADD) $(LIBS)
+unictype/test-categ_or.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_or$(EXEEXT): $(test_categ_or_OBJECTS) $(test_categ_or_DEPENDENCIES)
+ @rm -f test-categ_or$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_or_OBJECTS) $(test_categ_or_LDADD) $(LIBS)
+unictype/test-categ_test_withtable.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-categ_test_withtable$(EXEEXT): $(test_categ_test_withtable_OBJECTS) $(test_categ_test_withtable_DEPENDENCIES)
+ @rm -f test-categ_test_withtable$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_categ_test_withtable_OBJECTS) $(test_categ_test_withtable_LDADD) $(LIBS)
+unictype/test-combining.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-combining$(EXEEXT): $(test_combining_OBJECTS) $(test_combining_DEPENDENCIES)
+ @rm -f test-combining$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_combining_OBJECTS) $(test_combining_LDADD) $(LIBS)
+uninorm/test-compat-decomposition.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-compat-decomposition$(EXEEXT): $(test_compat_decomposition_OBJECTS) $(test_compat_decomposition_DEPENDENCIES)
+ @rm -f test-compat-decomposition$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_compat_decomposition_OBJECTS) $(test_compat_decomposition_LDADD) $(LIBS)
+uninorm/test-composition.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-composition$(EXEEXT): $(test_composition_OBJECTS) $(test_composition_DEPENDENCIES)
+ @rm -f test-composition$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_composition_OBJECTS) $(test_composition_LDADD) $(LIBS)
+unictype/test-ctype_alnum.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-ctype_alnum$(EXEEXT): $(test_ctype_alnum_OBJECTS) $(test_ctype_alnum_DEPENDENCIES)
+ @rm -f test-ctype_alnum$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ctype_alnum_OBJECTS) $(test_ctype_alnum_LDADD) $(LIBS)
+unictype/test-ctype_alpha.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-ctype_alpha$(EXEEXT): $(test_ctype_alpha_OBJECTS) $(test_ctype_alpha_DEPENDENCIES)
+ @rm -f test-ctype_alpha$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ctype_alpha_OBJECTS) $(test_ctype_alpha_LDADD) $(LIBS)
+unictype/test-ctype_blank.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-ctype_blank$(EXEEXT): $(test_ctype_blank_OBJECTS) $(test_ctype_blank_DEPENDENCIES)
+ @rm -f test-ctype_blank$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ctype_blank_OBJECTS) $(test_ctype_blank_LDADD) $(LIBS)
+unictype/test-ctype_cntrl.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-ctype_cntrl$(EXEEXT): $(test_ctype_cntrl_OBJECTS) $(test_ctype_cntrl_DEPENDENCIES)
+ @rm -f test-ctype_cntrl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ctype_cntrl_OBJECTS) $(test_ctype_cntrl_LDADD) $(LIBS)
+unictype/test-ctype_digit.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-ctype_digit$(EXEEXT): $(test_ctype_digit_OBJECTS) $(test_ctype_digit_DEPENDENCIES)
+ @rm -f test-ctype_digit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ctype_digit_OBJECTS) $(test_ctype_digit_LDADD) $(LIBS)
+unictype/test-ctype_graph.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-ctype_graph$(EXEEXT): $(test_ctype_graph_OBJECTS) $(test_ctype_graph_DEPENDENCIES)
+ @rm -f test-ctype_graph$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ctype_graph_OBJECTS) $(test_ctype_graph_LDADD) $(LIBS)
+unictype/test-ctype_lower.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-ctype_lower$(EXEEXT): $(test_ctype_lower_OBJECTS) $(test_ctype_lower_DEPENDENCIES)
+ @rm -f test-ctype_lower$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ctype_lower_OBJECTS) $(test_ctype_lower_LDADD) $(LIBS)
+unictype/test-ctype_print.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-ctype_print$(EXEEXT): $(test_ctype_print_OBJECTS) $(test_ctype_print_DEPENDENCIES)
+ @rm -f test-ctype_print$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ctype_print_OBJECTS) $(test_ctype_print_LDADD) $(LIBS)
+unictype/test-ctype_punct.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-ctype_punct$(EXEEXT): $(test_ctype_punct_OBJECTS) $(test_ctype_punct_DEPENDENCIES)
+ @rm -f test-ctype_punct$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ctype_punct_OBJECTS) $(test_ctype_punct_LDADD) $(LIBS)
+unictype/test-ctype_space.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-ctype_space$(EXEEXT): $(test_ctype_space_OBJECTS) $(test_ctype_space_DEPENDENCIES)
+ @rm -f test-ctype_space$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ctype_space_OBJECTS) $(test_ctype_space_LDADD) $(LIBS)
+unictype/test-ctype_upper.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-ctype_upper$(EXEEXT): $(test_ctype_upper_OBJECTS) $(test_ctype_upper_DEPENDENCIES)
+ @rm -f test-ctype_upper$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ctype_upper_OBJECTS) $(test_ctype_upper_LDADD) $(LIBS)
+unictype/test-ctype_xdigit.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-ctype_xdigit$(EXEEXT): $(test_ctype_xdigit_OBJECTS) $(test_ctype_xdigit_DEPENDENCIES)
+ @rm -f test-ctype_xdigit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ctype_xdigit_OBJECTS) $(test_ctype_xdigit_LDADD) $(LIBS)
+unictype/test-decdigit.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-decdigit$(EXEEXT): $(test_decdigit_OBJECTS) $(test_decdigit_DEPENDENCIES)
+ @rm -f test-decdigit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_decdigit_OBJECTS) $(test_decdigit_LDADD) $(LIBS)
+uninorm/test-decomposing-form.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-decomposing-form$(EXEEXT): $(test_decomposing_form_OBJECTS) $(test_decomposing_form_DEPENDENCIES)
+ @rm -f test-decomposing-form$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_decomposing_form_OBJECTS) $(test_decomposing_form_LDADD) $(LIBS)
+uninorm/test-decomposition.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-decomposition$(EXEEXT): $(test_decomposition_OBJECTS) $(test_decomposition_DEPENDENCIES)
+ @rm -f test-decomposition$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_decomposition_OBJECTS) $(test_decomposition_LDADD) $(LIBS)
+unictype/test-digit.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-digit$(EXEEXT): $(test_digit_OBJECTS) $(test_digit_DEPENDENCIES)
+ @rm -f test-digit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_digit_OBJECTS) $(test_digit_LDADD) $(LIBS)
+test-environ$(EXEEXT): $(test_environ_OBJECTS) $(test_environ_DEPENDENCIES)
+ @rm -f test-environ$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_environ_OBJECTS) $(test_environ_LDADD) $(LIBS)
+test-errno$(EXEEXT): $(test_errno_OBJECTS) $(test_errno_DEPENDENCIES)
+ @rm -f test-errno$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_errno_OBJECTS) $(test_errno_LDADD) $(LIBS)
+test-frexpl-nolibm$(EXEEXT): $(test_frexpl_nolibm_OBJECTS) $(test_frexpl_nolibm_DEPENDENCIES)
+ @rm -f test-frexpl-nolibm$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_frexpl_nolibm_OBJECTS) $(test_frexpl_nolibm_LDADD) $(LIBS)
+test-fseterr$(EXEEXT): $(test_fseterr_OBJECTS) $(test_fseterr_DEPENDENCIES)
+ @rm -f test-fseterr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_fseterr_OBJECTS) $(test_fseterr_LDADD) $(LIBS)
+test-iconv$(EXEEXT): $(test_iconv_OBJECTS) $(test_iconv_DEPENDENCIES)
+ @rm -f test-iconv$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_iconv_OBJECTS) $(test_iconv_LDADD) $(LIBS)
+unicase/test-ignorable.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-ignorable$(EXEEXT): $(test_ignorable_OBJECTS) $(test_ignorable_DEPENDENCIES)
+ @rm -f test-ignorable$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ignorable_OBJECTS) $(test_ignorable_LDADD) $(LIBS)
+test-isnand-nolibm$(EXEEXT): $(test_isnand_nolibm_OBJECTS) $(test_isnand_nolibm_DEPENDENCIES)
+ @rm -f test-isnand-nolibm$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_isnand_nolibm_OBJECTS) $(test_isnand_nolibm_LDADD) $(LIBS)
+test-isnanf-nolibm$(EXEEXT): $(test_isnanf_nolibm_OBJECTS) $(test_isnanf_nolibm_DEPENDENCIES)
+ @rm -f test-isnanf-nolibm$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_isnanf_nolibm_OBJECTS) $(test_isnanf_nolibm_LDADD) $(LIBS)
+test-isnanl-nolibm$(EXEEXT): $(test_isnanl_nolibm_OBJECTS) $(test_isnanl_nolibm_DEPENDENCIES)
+ @rm -f test-isnanl-nolibm$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_isnanl_nolibm_OBJECTS) $(test_isnanl_nolibm_LDADD) $(LIBS)
+test-locale$(EXEEXT): $(test_locale_OBJECTS) $(test_locale_DEPENDENCIES)
+ @rm -f test-locale$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_locale_OBJECTS) $(test_locale_LDADD) $(LIBS)
+unicase/test-locale-language.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-locale-language$(EXEEXT): $(test_locale_language_OBJECTS) $(test_locale_language_DEPENDENCIES)
+ @rm -f test-locale-language$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_locale_language_OBJECTS) $(test_locale_language_LDADD) $(LIBS)
+test-localename$(EXEEXT): $(test_localename_OBJECTS) $(test_localename_DEPENDENCIES)
+ @rm -f test-localename$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_localename_OBJECTS) $(test_localename_LDADD) $(LIBS)
+test-malloca$(EXEEXT): $(test_malloca_OBJECTS) $(test_malloca_DEPENDENCIES)
+ @rm -f test-malloca$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_malloca_OBJECTS) $(test_malloca_LDADD) $(LIBS)
+test-math$(EXEEXT): $(test_math_OBJECTS) $(test_math_DEPENDENCIES)
+ @rm -f test-math$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_math_OBJECTS) $(test_math_LDADD) $(LIBS)
+test-mbrtowc$(EXEEXT): $(test_mbrtowc_OBJECTS) $(test_mbrtowc_DEPENDENCIES)
+ @rm -f test-mbrtowc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_mbrtowc_OBJECTS) $(test_mbrtowc_LDADD) $(LIBS)
+test-mbsinit$(EXEEXT): $(test_mbsinit_OBJECTS) $(test_mbsinit_DEPENDENCIES)
+ @rm -f test-mbsinit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_mbsinit_OBJECTS) $(test_mbsinit_LDADD) $(LIBS)
+test-memchr$(EXEEXT): $(test_memchr_OBJECTS) $(test_memchr_DEPENDENCIES)
+ @rm -f test-memchr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_memchr_OBJECTS) $(test_memchr_LDADD) $(LIBS)
+unictype/test-mirror.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-mirror$(EXEEXT): $(test_mirror_OBJECTS) $(test_mirror_DEPENDENCIES)
+ @rm -f test-mirror$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_mirror_OBJECTS) $(test_mirror_LDADD) $(LIBS)
+uninorm/test-nfc.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+uninorm/test-u8-nfc.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+uninorm/test-u16-nfc.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+uninorm/test-u32-nfc.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-nfc$(EXEEXT): $(test_nfc_OBJECTS) $(test_nfc_DEPENDENCIES)
+ @rm -f test-nfc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_nfc_OBJECTS) $(test_nfc_LDADD) $(LIBS)
+uninorm/test-nfd.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+uninorm/test-u8-nfd.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+uninorm/test-u16-nfd.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+uninorm/test-u32-nfd.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-nfd$(EXEEXT): $(test_nfd_OBJECTS) $(test_nfd_DEPENDENCIES)
+ @rm -f test-nfd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_nfd_OBJECTS) $(test_nfd_LDADD) $(LIBS)
+uninorm/test-nfkc.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+uninorm/test-u8-nfkc.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+uninorm/test-u16-nfkc.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+uninorm/test-u32-nfkc.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-nfkc$(EXEEXT): $(test_nfkc_OBJECTS) $(test_nfkc_DEPENDENCIES)
+ @rm -f test-nfkc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_nfkc_OBJECTS) $(test_nfkc_LDADD) $(LIBS)
+uninorm/test-nfkd.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+uninorm/test-u8-nfkd.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+uninorm/test-u16-nfkd.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+uninorm/test-u32-nfkd.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-nfkd$(EXEEXT): $(test_nfkd_OBJECTS) $(test_nfkd_DEPENDENCIES)
+ @rm -f test-nfkd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_nfkd_OBJECTS) $(test_nfkd_LDADD) $(LIBS)
+unictype/test-numeric.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-numeric$(EXEEXT): $(test_numeric_OBJECTS) $(test_numeric_DEPENDENCIES)
+ @rm -f test-numeric$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_numeric_OBJECTS) $(test_numeric_LDADD) $(LIBS)
+unictype/test-pr_alphabetic.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_alphabetic$(EXEEXT): $(test_pr_alphabetic_OBJECTS) $(test_pr_alphabetic_DEPENDENCIES)
+ @rm -f test-pr_alphabetic$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_alphabetic_OBJECTS) $(test_pr_alphabetic_LDADD) $(LIBS)
+unictype/test-pr_ascii_hex_digit.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_ascii_hex_digit$(EXEEXT): $(test_pr_ascii_hex_digit_OBJECTS) $(test_pr_ascii_hex_digit_DEPENDENCIES)
+ @rm -f test-pr_ascii_hex_digit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_ascii_hex_digit_OBJECTS) $(test_pr_ascii_hex_digit_LDADD) $(LIBS)
+unictype/test-pr_bidi_arabic_digit.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_bidi_arabic_digit$(EXEEXT): $(test_pr_bidi_arabic_digit_OBJECTS) $(test_pr_bidi_arabic_digit_DEPENDENCIES)
+ @rm -f test-pr_bidi_arabic_digit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_bidi_arabic_digit_OBJECTS) $(test_pr_bidi_arabic_digit_LDADD) $(LIBS)
+unictype/test-pr_bidi_arabic_right_to_left.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_bidi_arabic_right_to_left$(EXEEXT): $(test_pr_bidi_arabic_right_to_left_OBJECTS) $(test_pr_bidi_arabic_right_to_left_DEPENDENCIES)
+ @rm -f test-pr_bidi_arabic_right_to_left$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_bidi_arabic_right_to_left_OBJECTS) $(test_pr_bidi_arabic_right_to_left_LDADD) $(LIBS)
+unictype/test-pr_bidi_block_separator.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_bidi_block_separator$(EXEEXT): $(test_pr_bidi_block_separator_OBJECTS) $(test_pr_bidi_block_separator_DEPENDENCIES)
+ @rm -f test-pr_bidi_block_separator$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_bidi_block_separator_OBJECTS) $(test_pr_bidi_block_separator_LDADD) $(LIBS)
+unictype/test-pr_bidi_boundary_neutral.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_bidi_boundary_neutral$(EXEEXT): $(test_pr_bidi_boundary_neutral_OBJECTS) $(test_pr_bidi_boundary_neutral_DEPENDENCIES)
+ @rm -f test-pr_bidi_boundary_neutral$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_bidi_boundary_neutral_OBJECTS) $(test_pr_bidi_boundary_neutral_LDADD) $(LIBS)
+unictype/test-pr_bidi_common_separator.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_bidi_common_separator$(EXEEXT): $(test_pr_bidi_common_separator_OBJECTS) $(test_pr_bidi_common_separator_DEPENDENCIES)
+ @rm -f test-pr_bidi_common_separator$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_bidi_common_separator_OBJECTS) $(test_pr_bidi_common_separator_LDADD) $(LIBS)
+unictype/test-pr_bidi_control.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_bidi_control$(EXEEXT): $(test_pr_bidi_control_OBJECTS) $(test_pr_bidi_control_DEPENDENCIES)
+ @rm -f test-pr_bidi_control$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_bidi_control_OBJECTS) $(test_pr_bidi_control_LDADD) $(LIBS)
+unictype/test-pr_bidi_embedding_or_override.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_bidi_embedding_or_override$(EXEEXT): $(test_pr_bidi_embedding_or_override_OBJECTS) $(test_pr_bidi_embedding_or_override_DEPENDENCIES)
+ @rm -f test-pr_bidi_embedding_or_override$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_bidi_embedding_or_override_OBJECTS) $(test_pr_bidi_embedding_or_override_LDADD) $(LIBS)
+unictype/test-pr_bidi_eur_num_separator.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_bidi_eur_num_separator$(EXEEXT): $(test_pr_bidi_eur_num_separator_OBJECTS) $(test_pr_bidi_eur_num_separator_DEPENDENCIES)
+ @rm -f test-pr_bidi_eur_num_separator$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_bidi_eur_num_separator_OBJECTS) $(test_pr_bidi_eur_num_separator_LDADD) $(LIBS)
+unictype/test-pr_bidi_eur_num_terminator.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_bidi_eur_num_terminator$(EXEEXT): $(test_pr_bidi_eur_num_terminator_OBJECTS) $(test_pr_bidi_eur_num_terminator_DEPENDENCIES)
+ @rm -f test-pr_bidi_eur_num_terminator$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_bidi_eur_num_terminator_OBJECTS) $(test_pr_bidi_eur_num_terminator_LDADD) $(LIBS)
+unictype/test-pr_bidi_european_digit.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_bidi_european_digit$(EXEEXT): $(test_pr_bidi_european_digit_OBJECTS) $(test_pr_bidi_european_digit_DEPENDENCIES)
+ @rm -f test-pr_bidi_european_digit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_bidi_european_digit_OBJECTS) $(test_pr_bidi_european_digit_LDADD) $(LIBS)
+unictype/test-pr_bidi_hebrew_right_to_left.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_bidi_hebrew_right_to_left$(EXEEXT): $(test_pr_bidi_hebrew_right_to_left_OBJECTS) $(test_pr_bidi_hebrew_right_to_left_DEPENDENCIES)
+ @rm -f test-pr_bidi_hebrew_right_to_left$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_bidi_hebrew_right_to_left_OBJECTS) $(test_pr_bidi_hebrew_right_to_left_LDADD) $(LIBS)
+unictype/test-pr_bidi_left_to_right.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_bidi_left_to_right$(EXEEXT): $(test_pr_bidi_left_to_right_OBJECTS) $(test_pr_bidi_left_to_right_DEPENDENCIES)
+ @rm -f test-pr_bidi_left_to_right$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_bidi_left_to_right_OBJECTS) $(test_pr_bidi_left_to_right_LDADD) $(LIBS)
+unictype/test-pr_bidi_non_spacing_mark.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_bidi_non_spacing_mark$(EXEEXT): $(test_pr_bidi_non_spacing_mark_OBJECTS) $(test_pr_bidi_non_spacing_mark_DEPENDENCIES)
+ @rm -f test-pr_bidi_non_spacing_mark$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_bidi_non_spacing_mark_OBJECTS) $(test_pr_bidi_non_spacing_mark_LDADD) $(LIBS)
+unictype/test-pr_bidi_other_neutral.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_bidi_other_neutral$(EXEEXT): $(test_pr_bidi_other_neutral_OBJECTS) $(test_pr_bidi_other_neutral_DEPENDENCIES)
+ @rm -f test-pr_bidi_other_neutral$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_bidi_other_neutral_OBJECTS) $(test_pr_bidi_other_neutral_LDADD) $(LIBS)
+unictype/test-pr_bidi_pdf.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_bidi_pdf$(EXEEXT): $(test_pr_bidi_pdf_OBJECTS) $(test_pr_bidi_pdf_DEPENDENCIES)
+ @rm -f test-pr_bidi_pdf$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_bidi_pdf_OBJECTS) $(test_pr_bidi_pdf_LDADD) $(LIBS)
+unictype/test-pr_bidi_segment_separator.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_bidi_segment_separator$(EXEEXT): $(test_pr_bidi_segment_separator_OBJECTS) $(test_pr_bidi_segment_separator_DEPENDENCIES)
+ @rm -f test-pr_bidi_segment_separator$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_bidi_segment_separator_OBJECTS) $(test_pr_bidi_segment_separator_LDADD) $(LIBS)
+unictype/test-pr_bidi_whitespace.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_bidi_whitespace$(EXEEXT): $(test_pr_bidi_whitespace_OBJECTS) $(test_pr_bidi_whitespace_DEPENDENCIES)
+ @rm -f test-pr_bidi_whitespace$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_bidi_whitespace_OBJECTS) $(test_pr_bidi_whitespace_LDADD) $(LIBS)
+unictype/test-pr_byname.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_byname$(EXEEXT): $(test_pr_byname_OBJECTS) $(test_pr_byname_DEPENDENCIES)
+ @rm -f test-pr_byname$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_byname_OBJECTS) $(test_pr_byname_LDADD) $(LIBS)
+unictype/test-pr_combining.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_combining$(EXEEXT): $(test_pr_combining_OBJECTS) $(test_pr_combining_DEPENDENCIES)
+ @rm -f test-pr_combining$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_combining_OBJECTS) $(test_pr_combining_LDADD) $(LIBS)
+unictype/test-pr_composite.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_composite$(EXEEXT): $(test_pr_composite_OBJECTS) $(test_pr_composite_DEPENDENCIES)
+ @rm -f test-pr_composite$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_composite_OBJECTS) $(test_pr_composite_LDADD) $(LIBS)
+unictype/test-pr_currency_symbol.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_currency_symbol$(EXEEXT): $(test_pr_currency_symbol_OBJECTS) $(test_pr_currency_symbol_DEPENDENCIES)
+ @rm -f test-pr_currency_symbol$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_currency_symbol_OBJECTS) $(test_pr_currency_symbol_LDADD) $(LIBS)
+unictype/test-pr_dash.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_dash$(EXEEXT): $(test_pr_dash_OBJECTS) $(test_pr_dash_DEPENDENCIES)
+ @rm -f test-pr_dash$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_dash_OBJECTS) $(test_pr_dash_LDADD) $(LIBS)
+unictype/test-pr_decimal_digit.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_decimal_digit$(EXEEXT): $(test_pr_decimal_digit_OBJECTS) $(test_pr_decimal_digit_DEPENDENCIES)
+ @rm -f test-pr_decimal_digit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_decimal_digit_OBJECTS) $(test_pr_decimal_digit_LDADD) $(LIBS)
+unictype/test-pr_default_ignorable_code_point.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_default_ignorable_code_point$(EXEEXT): $(test_pr_default_ignorable_code_point_OBJECTS) $(test_pr_default_ignorable_code_point_DEPENDENCIES)
+ @rm -f test-pr_default_ignorable_code_point$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_default_ignorable_code_point_OBJECTS) $(test_pr_default_ignorable_code_point_LDADD) $(LIBS)
+unictype/test-pr_deprecated.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_deprecated$(EXEEXT): $(test_pr_deprecated_OBJECTS) $(test_pr_deprecated_DEPENDENCIES)
+ @rm -f test-pr_deprecated$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_deprecated_OBJECTS) $(test_pr_deprecated_LDADD) $(LIBS)
+unictype/test-pr_diacritic.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_diacritic$(EXEEXT): $(test_pr_diacritic_OBJECTS) $(test_pr_diacritic_DEPENDENCIES)
+ @rm -f test-pr_diacritic$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_diacritic_OBJECTS) $(test_pr_diacritic_LDADD) $(LIBS)
+unictype/test-pr_extender.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_extender$(EXEEXT): $(test_pr_extender_OBJECTS) $(test_pr_extender_DEPENDENCIES)
+ @rm -f test-pr_extender$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_extender_OBJECTS) $(test_pr_extender_LDADD) $(LIBS)
+unictype/test-pr_format_control.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_format_control$(EXEEXT): $(test_pr_format_control_OBJECTS) $(test_pr_format_control_DEPENDENCIES)
+ @rm -f test-pr_format_control$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_format_control_OBJECTS) $(test_pr_format_control_LDADD) $(LIBS)
+unictype/test-pr_grapheme_base.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_grapheme_base$(EXEEXT): $(test_pr_grapheme_base_OBJECTS) $(test_pr_grapheme_base_DEPENDENCIES)
+ @rm -f test-pr_grapheme_base$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_grapheme_base_OBJECTS) $(test_pr_grapheme_base_LDADD) $(LIBS)
+unictype/test-pr_grapheme_extend.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_grapheme_extend$(EXEEXT): $(test_pr_grapheme_extend_OBJECTS) $(test_pr_grapheme_extend_DEPENDENCIES)
+ @rm -f test-pr_grapheme_extend$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_grapheme_extend_OBJECTS) $(test_pr_grapheme_extend_LDADD) $(LIBS)
+unictype/test-pr_grapheme_link.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_grapheme_link$(EXEEXT): $(test_pr_grapheme_link_OBJECTS) $(test_pr_grapheme_link_DEPENDENCIES)
+ @rm -f test-pr_grapheme_link$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_grapheme_link_OBJECTS) $(test_pr_grapheme_link_LDADD) $(LIBS)
+unictype/test-pr_hex_digit.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_hex_digit$(EXEEXT): $(test_pr_hex_digit_OBJECTS) $(test_pr_hex_digit_DEPENDENCIES)
+ @rm -f test-pr_hex_digit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_hex_digit_OBJECTS) $(test_pr_hex_digit_LDADD) $(LIBS)
+unictype/test-pr_hyphen.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_hyphen$(EXEEXT): $(test_pr_hyphen_OBJECTS) $(test_pr_hyphen_DEPENDENCIES)
+ @rm -f test-pr_hyphen$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_hyphen_OBJECTS) $(test_pr_hyphen_LDADD) $(LIBS)
+unictype/test-pr_id_continue.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_id_continue$(EXEEXT): $(test_pr_id_continue_OBJECTS) $(test_pr_id_continue_DEPENDENCIES)
+ @rm -f test-pr_id_continue$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_id_continue_OBJECTS) $(test_pr_id_continue_LDADD) $(LIBS)
+unictype/test-pr_id_start.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_id_start$(EXEEXT): $(test_pr_id_start_OBJECTS) $(test_pr_id_start_DEPENDENCIES)
+ @rm -f test-pr_id_start$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_id_start_OBJECTS) $(test_pr_id_start_LDADD) $(LIBS)
+unictype/test-pr_ideographic.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_ideographic$(EXEEXT): $(test_pr_ideographic_OBJECTS) $(test_pr_ideographic_DEPENDENCIES)
+ @rm -f test-pr_ideographic$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_ideographic_OBJECTS) $(test_pr_ideographic_LDADD) $(LIBS)
+unictype/test-pr_ids_binary_operator.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_ids_binary_operator$(EXEEXT): $(test_pr_ids_binary_operator_OBJECTS) $(test_pr_ids_binary_operator_DEPENDENCIES)
+ @rm -f test-pr_ids_binary_operator$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_ids_binary_operator_OBJECTS) $(test_pr_ids_binary_operator_LDADD) $(LIBS)
+unictype/test-pr_ids_trinary_operator.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_ids_trinary_operator$(EXEEXT): $(test_pr_ids_trinary_operator_OBJECTS) $(test_pr_ids_trinary_operator_DEPENDENCIES)
+ @rm -f test-pr_ids_trinary_operator$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_ids_trinary_operator_OBJECTS) $(test_pr_ids_trinary_operator_LDADD) $(LIBS)
+unictype/test-pr_ignorable_control.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_ignorable_control$(EXEEXT): $(test_pr_ignorable_control_OBJECTS) $(test_pr_ignorable_control_DEPENDENCIES)
+ @rm -f test-pr_ignorable_control$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_ignorable_control_OBJECTS) $(test_pr_ignorable_control_LDADD) $(LIBS)
+unictype/test-pr_iso_control.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_iso_control$(EXEEXT): $(test_pr_iso_control_OBJECTS) $(test_pr_iso_control_DEPENDENCIES)
+ @rm -f test-pr_iso_control$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_iso_control_OBJECTS) $(test_pr_iso_control_LDADD) $(LIBS)
+unictype/test-pr_join_control.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_join_control$(EXEEXT): $(test_pr_join_control_OBJECTS) $(test_pr_join_control_DEPENDENCIES)
+ @rm -f test-pr_join_control$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_join_control_OBJECTS) $(test_pr_join_control_LDADD) $(LIBS)
+unictype/test-pr_left_of_pair.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_left_of_pair$(EXEEXT): $(test_pr_left_of_pair_OBJECTS) $(test_pr_left_of_pair_DEPENDENCIES)
+ @rm -f test-pr_left_of_pair$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_left_of_pair_OBJECTS) $(test_pr_left_of_pair_LDADD) $(LIBS)
+unictype/test-pr_line_separator.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_line_separator$(EXEEXT): $(test_pr_line_separator_OBJECTS) $(test_pr_line_separator_DEPENDENCIES)
+ @rm -f test-pr_line_separator$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_line_separator_OBJECTS) $(test_pr_line_separator_LDADD) $(LIBS)
+unictype/test-pr_logical_order_exception.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_logical_order_exception$(EXEEXT): $(test_pr_logical_order_exception_OBJECTS) $(test_pr_logical_order_exception_DEPENDENCIES)
+ @rm -f test-pr_logical_order_exception$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_logical_order_exception_OBJECTS) $(test_pr_logical_order_exception_LDADD) $(LIBS)
+unictype/test-pr_lowercase.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_lowercase$(EXEEXT): $(test_pr_lowercase_OBJECTS) $(test_pr_lowercase_DEPENDENCIES)
+ @rm -f test-pr_lowercase$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_lowercase_OBJECTS) $(test_pr_lowercase_LDADD) $(LIBS)
+unictype/test-pr_math.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_math$(EXEEXT): $(test_pr_math_OBJECTS) $(test_pr_math_DEPENDENCIES)
+ @rm -f test-pr_math$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_math_OBJECTS) $(test_pr_math_LDADD) $(LIBS)
+unictype/test-pr_non_break.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_non_break$(EXEEXT): $(test_pr_non_break_OBJECTS) $(test_pr_non_break_DEPENDENCIES)
+ @rm -f test-pr_non_break$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_non_break_OBJECTS) $(test_pr_non_break_LDADD) $(LIBS)
+unictype/test-pr_not_a_character.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_not_a_character$(EXEEXT): $(test_pr_not_a_character_OBJECTS) $(test_pr_not_a_character_DEPENDENCIES)
+ @rm -f test-pr_not_a_character$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_not_a_character_OBJECTS) $(test_pr_not_a_character_LDADD) $(LIBS)
+unictype/test-pr_numeric.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_numeric$(EXEEXT): $(test_pr_numeric_OBJECTS) $(test_pr_numeric_DEPENDENCIES)
+ @rm -f test-pr_numeric$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_numeric_OBJECTS) $(test_pr_numeric_LDADD) $(LIBS)
+unictype/test-pr_other_alphabetic.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_other_alphabetic$(EXEEXT): $(test_pr_other_alphabetic_OBJECTS) $(test_pr_other_alphabetic_DEPENDENCIES)
+ @rm -f test-pr_other_alphabetic$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_other_alphabetic_OBJECTS) $(test_pr_other_alphabetic_LDADD) $(LIBS)
+unictype/test-pr_other_default_ignorable_code_point.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_other_default_ignorable_code_point$(EXEEXT): $(test_pr_other_default_ignorable_code_point_OBJECTS) $(test_pr_other_default_ignorable_code_point_DEPENDENCIES)
+ @rm -f test-pr_other_default_ignorable_code_point$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_other_default_ignorable_code_point_OBJECTS) $(test_pr_other_default_ignorable_code_point_LDADD) $(LIBS)
+unictype/test-pr_other_grapheme_extend.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_other_grapheme_extend$(EXEEXT): $(test_pr_other_grapheme_extend_OBJECTS) $(test_pr_other_grapheme_extend_DEPENDENCIES)
+ @rm -f test-pr_other_grapheme_extend$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_other_grapheme_extend_OBJECTS) $(test_pr_other_grapheme_extend_LDADD) $(LIBS)
+unictype/test-pr_other_id_continue.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_other_id_continue$(EXEEXT): $(test_pr_other_id_continue_OBJECTS) $(test_pr_other_id_continue_DEPENDENCIES)
+ @rm -f test-pr_other_id_continue$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_other_id_continue_OBJECTS) $(test_pr_other_id_continue_LDADD) $(LIBS)
+unictype/test-pr_other_id_start.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_other_id_start$(EXEEXT): $(test_pr_other_id_start_OBJECTS) $(test_pr_other_id_start_DEPENDENCIES)
+ @rm -f test-pr_other_id_start$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_other_id_start_OBJECTS) $(test_pr_other_id_start_LDADD) $(LIBS)
+unictype/test-pr_other_lowercase.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_other_lowercase$(EXEEXT): $(test_pr_other_lowercase_OBJECTS) $(test_pr_other_lowercase_DEPENDENCIES)
+ @rm -f test-pr_other_lowercase$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_other_lowercase_OBJECTS) $(test_pr_other_lowercase_LDADD) $(LIBS)
+unictype/test-pr_other_math.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_other_math$(EXEEXT): $(test_pr_other_math_OBJECTS) $(test_pr_other_math_DEPENDENCIES)
+ @rm -f test-pr_other_math$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_other_math_OBJECTS) $(test_pr_other_math_LDADD) $(LIBS)
+unictype/test-pr_other_uppercase.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_other_uppercase$(EXEEXT): $(test_pr_other_uppercase_OBJECTS) $(test_pr_other_uppercase_DEPENDENCIES)
+ @rm -f test-pr_other_uppercase$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_other_uppercase_OBJECTS) $(test_pr_other_uppercase_LDADD) $(LIBS)
+unictype/test-pr_paired_punctuation.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_paired_punctuation$(EXEEXT): $(test_pr_paired_punctuation_OBJECTS) $(test_pr_paired_punctuation_DEPENDENCIES)
+ @rm -f test-pr_paired_punctuation$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_paired_punctuation_OBJECTS) $(test_pr_paired_punctuation_LDADD) $(LIBS)
+unictype/test-pr_paragraph_separator.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_paragraph_separator$(EXEEXT): $(test_pr_paragraph_separator_OBJECTS) $(test_pr_paragraph_separator_DEPENDENCIES)
+ @rm -f test-pr_paragraph_separator$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_paragraph_separator_OBJECTS) $(test_pr_paragraph_separator_LDADD) $(LIBS)
+unictype/test-pr_pattern_syntax.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_pattern_syntax$(EXEEXT): $(test_pr_pattern_syntax_OBJECTS) $(test_pr_pattern_syntax_DEPENDENCIES)
+ @rm -f test-pr_pattern_syntax$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_pattern_syntax_OBJECTS) $(test_pr_pattern_syntax_LDADD) $(LIBS)
+unictype/test-pr_pattern_white_space.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_pattern_white_space$(EXEEXT): $(test_pr_pattern_white_space_OBJECTS) $(test_pr_pattern_white_space_DEPENDENCIES)
+ @rm -f test-pr_pattern_white_space$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_pattern_white_space_OBJECTS) $(test_pr_pattern_white_space_LDADD) $(LIBS)
+unictype/test-pr_private_use.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_private_use$(EXEEXT): $(test_pr_private_use_OBJECTS) $(test_pr_private_use_DEPENDENCIES)
+ @rm -f test-pr_private_use$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_private_use_OBJECTS) $(test_pr_private_use_LDADD) $(LIBS)
+unictype/test-pr_punctuation.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_punctuation$(EXEEXT): $(test_pr_punctuation_OBJECTS) $(test_pr_punctuation_DEPENDENCIES)
+ @rm -f test-pr_punctuation$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_punctuation_OBJECTS) $(test_pr_punctuation_LDADD) $(LIBS)
+unictype/test-pr_quotation_mark.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_quotation_mark$(EXEEXT): $(test_pr_quotation_mark_OBJECTS) $(test_pr_quotation_mark_DEPENDENCIES)
+ @rm -f test-pr_quotation_mark$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_quotation_mark_OBJECTS) $(test_pr_quotation_mark_LDADD) $(LIBS)
+unictype/test-pr_radical.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_radical$(EXEEXT): $(test_pr_radical_OBJECTS) $(test_pr_radical_DEPENDENCIES)
+ @rm -f test-pr_radical$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_radical_OBJECTS) $(test_pr_radical_LDADD) $(LIBS)
+unictype/test-pr_sentence_terminal.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_sentence_terminal$(EXEEXT): $(test_pr_sentence_terminal_OBJECTS) $(test_pr_sentence_terminal_DEPENDENCIES)
+ @rm -f test-pr_sentence_terminal$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_sentence_terminal_OBJECTS) $(test_pr_sentence_terminal_LDADD) $(LIBS)
+unictype/test-pr_soft_dotted.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_soft_dotted$(EXEEXT): $(test_pr_soft_dotted_OBJECTS) $(test_pr_soft_dotted_DEPENDENCIES)
+ @rm -f test-pr_soft_dotted$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_soft_dotted_OBJECTS) $(test_pr_soft_dotted_LDADD) $(LIBS)
+unictype/test-pr_space.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_space$(EXEEXT): $(test_pr_space_OBJECTS) $(test_pr_space_DEPENDENCIES)
+ @rm -f test-pr_space$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_space_OBJECTS) $(test_pr_space_LDADD) $(LIBS)
+unictype/test-pr_terminal_punctuation.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_terminal_punctuation$(EXEEXT): $(test_pr_terminal_punctuation_OBJECTS) $(test_pr_terminal_punctuation_DEPENDENCIES)
+ @rm -f test-pr_terminal_punctuation$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_terminal_punctuation_OBJECTS) $(test_pr_terminal_punctuation_LDADD) $(LIBS)
+unictype/test-pr_test.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_test$(EXEEXT): $(test_pr_test_OBJECTS) $(test_pr_test_DEPENDENCIES)
+ @rm -f test-pr_test$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_test_OBJECTS) $(test_pr_test_LDADD) $(LIBS)
+unictype/test-pr_titlecase.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_titlecase$(EXEEXT): $(test_pr_titlecase_OBJECTS) $(test_pr_titlecase_DEPENDENCIES)
+ @rm -f test-pr_titlecase$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_titlecase_OBJECTS) $(test_pr_titlecase_LDADD) $(LIBS)
+unictype/test-pr_unassigned_code_value.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_unassigned_code_value$(EXEEXT): $(test_pr_unassigned_code_value_OBJECTS) $(test_pr_unassigned_code_value_DEPENDENCIES)
+ @rm -f test-pr_unassigned_code_value$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_unassigned_code_value_OBJECTS) $(test_pr_unassigned_code_value_LDADD) $(LIBS)
+unictype/test-pr_unified_ideograph.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_unified_ideograph$(EXEEXT): $(test_pr_unified_ideograph_OBJECTS) $(test_pr_unified_ideograph_DEPENDENCIES)
+ @rm -f test-pr_unified_ideograph$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_unified_ideograph_OBJECTS) $(test_pr_unified_ideograph_LDADD) $(LIBS)
+unictype/test-pr_uppercase.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_uppercase$(EXEEXT): $(test_pr_uppercase_OBJECTS) $(test_pr_uppercase_DEPENDENCIES)
+ @rm -f test-pr_uppercase$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_uppercase_OBJECTS) $(test_pr_uppercase_LDADD) $(LIBS)
+unictype/test-pr_variation_selector.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_variation_selector$(EXEEXT): $(test_pr_variation_selector_OBJECTS) $(test_pr_variation_selector_DEPENDENCIES)
+ @rm -f test-pr_variation_selector$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_variation_selector_OBJECTS) $(test_pr_variation_selector_LDADD) $(LIBS)
+unictype/test-pr_white_space.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_white_space$(EXEEXT): $(test_pr_white_space_OBJECTS) $(test_pr_white_space_DEPENDENCIES)
+ @rm -f test-pr_white_space$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_white_space_OBJECTS) $(test_pr_white_space_LDADD) $(LIBS)
+unictype/test-pr_xid_continue.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_xid_continue$(EXEEXT): $(test_pr_xid_continue_OBJECTS) $(test_pr_xid_continue_DEPENDENCIES)
+ @rm -f test-pr_xid_continue$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_xid_continue_OBJECTS) $(test_pr_xid_continue_LDADD) $(LIBS)
+unictype/test-pr_xid_start.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_xid_start$(EXEEXT): $(test_pr_xid_start_OBJECTS) $(test_pr_xid_start_DEPENDENCIES)
+ @rm -f test-pr_xid_start$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_xid_start_OBJECTS) $(test_pr_xid_start_LDADD) $(LIBS)
+unictype/test-pr_zero_width.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-pr_zero_width$(EXEEXT): $(test_pr_zero_width_OBJECTS) $(test_pr_zero_width_DEPENDENCIES)
+ @rm -f test-pr_zero_width$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_zero_width_OBJECTS) $(test_pr_zero_width_LDADD) $(LIBS)
+test-printf-frexp$(EXEEXT): $(test_printf_frexp_OBJECTS) $(test_printf_frexp_DEPENDENCIES)
+ @rm -f test-printf-frexp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_printf_frexp_OBJECTS) $(test_printf_frexp_LDADD) $(LIBS)
+test-printf-frexpl$(EXEEXT): $(test_printf_frexpl_OBJECTS) $(test_printf_frexpl_DEPENDENCIES)
+ @rm -f test-printf-frexpl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_printf_frexpl_OBJECTS) $(test_printf_frexpl_LDADD) $(LIBS)
+unictype/test-scripts.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-scripts$(EXEEXT): $(test_scripts_OBJECTS) $(test_scripts_DEPENDENCIES)
+ @rm -f test-scripts$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_scripts_OBJECTS) $(test_scripts_LDADD) $(LIBS)
+test-signbit$(EXEEXT): $(test_signbit_OBJECTS) $(test_signbit_DEPENDENCIES)
+ @rm -f test-signbit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_signbit_OBJECTS) $(test_signbit_LDADD) $(LIBS)
+test-stdbool$(EXEEXT): $(test_stdbool_OBJECTS) $(test_stdbool_DEPENDENCIES)
+ @rm -f test-stdbool$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_stdbool_OBJECTS) $(test_stdbool_LDADD) $(LIBS)
+test-stdint$(EXEEXT): $(test_stdint_OBJECTS) $(test_stdint_DEPENDENCIES)
+ @rm -f test-stdint$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_stdint_OBJECTS) $(test_stdint_LDADD) $(LIBS)
+test-stdlib$(EXEEXT): $(test_stdlib_OBJECTS) $(test_stdlib_DEPENDENCIES)
+ @rm -f test-stdlib$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_stdlib_OBJECTS) $(test_stdlib_LDADD) $(LIBS)
+test-strerror$(EXEEXT): $(test_strerror_OBJECTS) $(test_strerror_DEPENDENCIES)
+ @rm -f test-strerror$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_strerror_OBJECTS) $(test_strerror_LDADD) $(LIBS)
+test-striconveh$(EXEEXT): $(test_striconveh_OBJECTS) $(test_striconveh_DEPENDENCIES)
+ @rm -f test-striconveh$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_striconveh_OBJECTS) $(test_striconveh_LDADD) $(LIBS)
+test-striconveha$(EXEEXT): $(test_striconveha_OBJECTS) $(test_striconveha_DEPENDENCIES)
+ @rm -f test-striconveha$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_striconveha_OBJECTS) $(test_striconveha_LDADD) $(LIBS)
+test-string$(EXEEXT): $(test_string_OBJECTS) $(test_string_DEPENDENCIES)
+ @rm -f test-string$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_string_OBJECTS) $(test_string_LDADD) $(LIBS)
+unictype/test-sy_c_ident.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-sy_c_ident$(EXEEXT): $(test_sy_c_ident_OBJECTS) $(test_sy_c_ident_DEPENDENCIES)
+ @rm -f test-sy_c_ident$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_sy_c_ident_OBJECTS) $(test_sy_c_ident_LDADD) $(LIBS)
+unictype/test-sy_c_whitespace.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-sy_c_whitespace$(EXEEXT): $(test_sy_c_whitespace_OBJECTS) $(test_sy_c_whitespace_DEPENDENCIES)
+ @rm -f test-sy_c_whitespace$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_sy_c_whitespace_OBJECTS) $(test_sy_c_whitespace_LDADD) $(LIBS)
+unictype/test-sy_java_ident.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-sy_java_ident$(EXEEXT): $(test_sy_java_ident_OBJECTS) $(test_sy_java_ident_DEPENDENCIES)
+ @rm -f test-sy_java_ident$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_sy_java_ident_OBJECTS) $(test_sy_java_ident_LDADD) $(LIBS)
+unictype/test-sy_java_whitespace.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+test-sy_java_whitespace$(EXEEXT): $(test_sy_java_whitespace_OBJECTS) $(test_sy_java_whitespace_DEPENDENCIES)
+ @rm -f test-sy_java_whitespace$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_sy_java_whitespace_OBJECTS) $(test_sy_java_whitespace_LDADD) $(LIBS)
+unistdio/$(am__dirstamp):
+ @$(MKDIR_P) unistdio
+ @: > unistdio/$(am__dirstamp)
+unistdio/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) unistdio/$(DEPDIR)
+ @: > unistdio/$(DEPDIR)/$(am__dirstamp)
+unistdio/test-u16-asnprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u16-asnprintf1$(EXEEXT): $(test_u16_asnprintf1_OBJECTS) $(test_u16_asnprintf1_DEPENDENCIES)
+ @rm -f test-u16-asnprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_asnprintf1_OBJECTS) $(test_u16_asnprintf1_LDADD) $(LIBS)
+unicase/test-u16-casecmp.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u16-casecmp$(EXEEXT): $(test_u16_casecmp_OBJECTS) $(test_u16_casecmp_DEPENDENCIES)
+ @rm -f test-u16-casecmp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_casecmp_OBJECTS) $(test_u16_casecmp_LDADD) $(LIBS)
+unicase/test-u16-casecoll.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u16-casecoll$(EXEEXT): $(test_u16_casecoll_OBJECTS) $(test_u16_casecoll_DEPENDENCIES)
+ @rm -f test-u16-casecoll$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_casecoll_OBJECTS) $(test_u16_casecoll_LDADD) $(LIBS)
+unicase/test-u16-casefold.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u16-casefold$(EXEEXT): $(test_u16_casefold_OBJECTS) $(test_u16_casefold_DEPENDENCIES)
+ @rm -f test-u16-casefold$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_casefold_OBJECTS) $(test_u16_casefold_LDADD) $(LIBS)
+uniconv/$(am__dirstamp):
+ @$(MKDIR_P) uniconv
+ @: > uniconv/$(am__dirstamp)
+uniconv/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) uniconv/$(DEPDIR)
+ @: > uniconv/$(DEPDIR)/$(am__dirstamp)
+uniconv/test-u16-conv-from-enc.$(OBJEXT): uniconv/$(am__dirstamp) \
+ uniconv/$(DEPDIR)/$(am__dirstamp)
+test-u16-conv-from-enc$(EXEEXT): $(test_u16_conv_from_enc_OBJECTS) $(test_u16_conv_from_enc_DEPENDENCIES)
+ @rm -f test-u16-conv-from-enc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_conv_from_enc_OBJECTS) $(test_u16_conv_from_enc_LDADD) $(LIBS)
+uniconv/test-u16-conv-to-enc.$(OBJEXT): uniconv/$(am__dirstamp) \
+ uniconv/$(DEPDIR)/$(am__dirstamp)
+test-u16-conv-to-enc$(EXEEXT): $(test_u16_conv_to_enc_OBJECTS) $(test_u16_conv_to_enc_DEPENDENCIES)
+ @rm -f test-u16-conv-to-enc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_conv_to_enc_OBJECTS) $(test_u16_conv_to_enc_LDADD) $(LIBS)
+unicase/test-u16-is-cased.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u16-is-cased$(EXEEXT): $(test_u16_is_cased_OBJECTS) $(test_u16_is_cased_DEPENDENCIES)
+ @rm -f test-u16-is-cased$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_is_cased_OBJECTS) $(test_u16_is_cased_LDADD) $(LIBS)
+unicase/test-u16-is-casefolded.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u16-is-casefolded$(EXEEXT): $(test_u16_is_casefolded_OBJECTS) $(test_u16_is_casefolded_DEPENDENCIES)
+ @rm -f test-u16-is-casefolded$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_is_casefolded_OBJECTS) $(test_u16_is_casefolded_LDADD) $(LIBS)
+unicase/test-u16-is-lowercase.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u16-is-lowercase$(EXEEXT): $(test_u16_is_lowercase_OBJECTS) $(test_u16_is_lowercase_DEPENDENCIES)
+ @rm -f test-u16-is-lowercase$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_is_lowercase_OBJECTS) $(test_u16_is_lowercase_LDADD) $(LIBS)
+unicase/test-u16-is-titlecase.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u16-is-titlecase$(EXEEXT): $(test_u16_is_titlecase_OBJECTS) $(test_u16_is_titlecase_DEPENDENCIES)
+ @rm -f test-u16-is-titlecase$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_is_titlecase_OBJECTS) $(test_u16_is_titlecase_LDADD) $(LIBS)
+unicase/test-u16-is-uppercase.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u16-is-uppercase$(EXEEXT): $(test_u16_is_uppercase_OBJECTS) $(test_u16_is_uppercase_DEPENDENCIES)
+ @rm -f test-u16-is-uppercase$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_is_uppercase_OBJECTS) $(test_u16_is_uppercase_LDADD) $(LIBS)
+uninorm/test-u16-normcmp.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-u16-normcmp$(EXEEXT): $(test_u16_normcmp_OBJECTS) $(test_u16_normcmp_DEPENDENCIES)
+ @rm -f test-u16-normcmp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_normcmp_OBJECTS) $(test_u16_normcmp_LDADD) $(LIBS)
+uninorm/test-u16-normcoll.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-u16-normcoll$(EXEEXT): $(test_u16_normcoll_OBJECTS) $(test_u16_normcoll_DEPENDENCIES)
+ @rm -f test-u16-normcoll$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_normcoll_OBJECTS) $(test_u16_normcoll_LDADD) $(LIBS)
+unilbrk/$(am__dirstamp):
+ @$(MKDIR_P) unilbrk
+ @: > unilbrk/$(am__dirstamp)
+unilbrk/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) unilbrk/$(DEPDIR)
+ @: > unilbrk/$(DEPDIR)/$(am__dirstamp)
+unilbrk/test-u16-possible-linebreaks.$(OBJEXT): \
+ unilbrk/$(am__dirstamp) unilbrk/$(DEPDIR)/$(am__dirstamp)
+test-u16-possible-linebreaks$(EXEEXT): $(test_u16_possible_linebreaks_OBJECTS) $(test_u16_possible_linebreaks_DEPENDENCIES)
+ @rm -f test-u16-possible-linebreaks$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_possible_linebreaks_OBJECTS) $(test_u16_possible_linebreaks_LDADD) $(LIBS)
+uniconv/test-u16-strconv-from-enc.$(OBJEXT): uniconv/$(am__dirstamp) \
+ uniconv/$(DEPDIR)/$(am__dirstamp)
+test-u16-strconv-from-enc$(EXEEXT): $(test_u16_strconv_from_enc_OBJECTS) $(test_u16_strconv_from_enc_DEPENDENCIES)
+ @rm -f test-u16-strconv-from-enc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_strconv_from_enc_OBJECTS) $(test_u16_strconv_from_enc_LDADD) $(LIBS)
+uniconv/test-u16-strconv-to-enc.$(OBJEXT): uniconv/$(am__dirstamp) \
+ uniconv/$(DEPDIR)/$(am__dirstamp)
+test-u16-strconv-to-enc$(EXEEXT): $(test_u16_strconv_to_enc_OBJECTS) $(test_u16_strconv_to_enc_DEPENDENCIES)
+ @rm -f test-u16-strconv-to-enc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_strconv_to_enc_OBJECTS) $(test_u16_strconv_to_enc_LDADD) $(LIBS)
+uniwidth/$(am__dirstamp):
+ @$(MKDIR_P) uniwidth
+ @: > uniwidth/$(am__dirstamp)
+uniwidth/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) uniwidth/$(DEPDIR)
+ @: > uniwidth/$(DEPDIR)/$(am__dirstamp)
+uniwidth/test-u16-strwidth.$(OBJEXT): uniwidth/$(am__dirstamp) \
+ uniwidth/$(DEPDIR)/$(am__dirstamp)
+test-u16-strwidth$(EXEEXT): $(test_u16_strwidth_OBJECTS) $(test_u16_strwidth_DEPENDENCIES)
+ @rm -f test-u16-strwidth$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_strwidth_OBJECTS) $(test_u16_strwidth_LDADD) $(LIBS)
+unicase/test-u16-tolower.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u16-tolower$(EXEEXT): $(test_u16_tolower_OBJECTS) $(test_u16_tolower_DEPENDENCIES)
+ @rm -f test-u16-tolower$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_tolower_OBJECTS) $(test_u16_tolower_LDADD) $(LIBS)
+unicase/test-u16-totitle.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u16-totitle$(EXEEXT): $(test_u16_totitle_OBJECTS) $(test_u16_totitle_DEPENDENCIES)
+ @rm -f test-u16-totitle$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_totitle_OBJECTS) $(test_u16_totitle_LDADD) $(LIBS)
+unicase/test-u16-toupper.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u16-toupper$(EXEEXT): $(test_u16_toupper_OBJECTS) $(test_u16_toupper_DEPENDENCIES)
+ @rm -f test-u16-toupper$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_toupper_OBJECTS) $(test_u16_toupper_LDADD) $(LIBS)
+unistdio/test-u16-vasnprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u16-vasnprintf1$(EXEEXT): $(test_u16_vasnprintf1_OBJECTS) $(test_u16_vasnprintf1_DEPENDENCIES)
+ @rm -f test-u16-vasnprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_vasnprintf1_OBJECTS) $(test_u16_vasnprintf1_LDADD) $(LIBS)
+unistdio/test-u16-vasnprintf2.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u16-vasnprintf2$(EXEEXT): $(test_u16_vasnprintf2_OBJECTS) $(test_u16_vasnprintf2_DEPENDENCIES)
+ @rm -f test-u16-vasnprintf2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_vasnprintf2_OBJECTS) $(test_u16_vasnprintf2_LDADD) $(LIBS)
+unistdio/test-u16-vasnprintf3.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u16-vasnprintf3$(EXEEXT): $(test_u16_vasnprintf3_OBJECTS) $(test_u16_vasnprintf3_DEPENDENCIES)
+ @rm -f test-u16-vasnprintf3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_vasnprintf3_OBJECTS) $(test_u16_vasnprintf3_LDADD) $(LIBS)
+unistdio/test-u16-vasprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u16-vasprintf1$(EXEEXT): $(test_u16_vasprintf1_OBJECTS) $(test_u16_vasprintf1_DEPENDENCIES)
+ @rm -f test-u16-vasprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_vasprintf1_OBJECTS) $(test_u16_vasprintf1_LDADD) $(LIBS)
+unistdio/test-u16-vsnprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u16-vsnprintf1$(EXEEXT): $(test_u16_vsnprintf1_OBJECTS) $(test_u16_vsnprintf1_DEPENDENCIES)
+ @rm -f test-u16-vsnprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_vsnprintf1_OBJECTS) $(test_u16_vsnprintf1_LDADD) $(LIBS)
+unistdio/test-u16-vsprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u16-vsprintf1$(EXEEXT): $(test_u16_vsprintf1_OBJECTS) $(test_u16_vsprintf1_DEPENDENCIES)
+ @rm -f test-u16-vsprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_vsprintf1_OBJECTS) $(test_u16_vsprintf1_LDADD) $(LIBS)
+uniwidth/test-u16-width.$(OBJEXT): uniwidth/$(am__dirstamp) \
+ uniwidth/$(DEPDIR)/$(am__dirstamp)
+test-u16-width$(EXEEXT): $(test_u16_width_OBJECTS) $(test_u16_width_DEPENDENCIES)
+ @rm -f test-u16-width$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_width_OBJECTS) $(test_u16_width_LDADD) $(LIBS)
+unilbrk/test-u16-width-linebreaks.$(OBJEXT): unilbrk/$(am__dirstamp) \
+ unilbrk/$(DEPDIR)/$(am__dirstamp)
+test-u16-width-linebreaks$(EXEEXT): $(test_u16_width_linebreaks_OBJECTS) $(test_u16_width_linebreaks_DEPENDENCIES)
+ @rm -f test-u16-width-linebreaks$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_width_linebreaks_OBJECTS) $(test_u16_width_linebreaks_LDADD) $(LIBS)
+uniwbrk/$(am__dirstamp):
+ @$(MKDIR_P) uniwbrk
+ @: > uniwbrk/$(am__dirstamp)
+uniwbrk/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) uniwbrk/$(DEPDIR)
+ @: > uniwbrk/$(DEPDIR)/$(am__dirstamp)
+uniwbrk/test-u16-wordbreaks.$(OBJEXT): uniwbrk/$(am__dirstamp) \
+ uniwbrk/$(DEPDIR)/$(am__dirstamp)
+test-u16-wordbreaks$(EXEEXT): $(test_u16_wordbreaks_OBJECTS) $(test_u16_wordbreaks_DEPENDENCIES)
+ @rm -f test-u16-wordbreaks$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_wordbreaks_OBJECTS) $(test_u16_wordbreaks_LDADD) $(LIBS)
+unistdio/test-u32-asnprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u32-asnprintf1$(EXEEXT): $(test_u32_asnprintf1_OBJECTS) $(test_u32_asnprintf1_DEPENDENCIES)
+ @rm -f test-u32-asnprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_asnprintf1_OBJECTS) $(test_u32_asnprintf1_LDADD) $(LIBS)
+unicase/test-u32-casecmp.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u32-casecmp$(EXEEXT): $(test_u32_casecmp_OBJECTS) $(test_u32_casecmp_DEPENDENCIES)
+ @rm -f test-u32-casecmp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_casecmp_OBJECTS) $(test_u32_casecmp_LDADD) $(LIBS)
+unicase/test-u32-casecoll.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u32-casecoll$(EXEEXT): $(test_u32_casecoll_OBJECTS) $(test_u32_casecoll_DEPENDENCIES)
+ @rm -f test-u32-casecoll$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_casecoll_OBJECTS) $(test_u32_casecoll_LDADD) $(LIBS)
+unicase/test-u32-casefold.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u32-casefold$(EXEEXT): $(test_u32_casefold_OBJECTS) $(test_u32_casefold_DEPENDENCIES)
+ @rm -f test-u32-casefold$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_casefold_OBJECTS) $(test_u32_casefold_LDADD) $(LIBS)
+uniconv/test-u32-conv-from-enc.$(OBJEXT): uniconv/$(am__dirstamp) \
+ uniconv/$(DEPDIR)/$(am__dirstamp)
+test-u32-conv-from-enc$(EXEEXT): $(test_u32_conv_from_enc_OBJECTS) $(test_u32_conv_from_enc_DEPENDENCIES)
+ @rm -f test-u32-conv-from-enc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_conv_from_enc_OBJECTS) $(test_u32_conv_from_enc_LDADD) $(LIBS)
+uniconv/test-u32-conv-to-enc.$(OBJEXT): uniconv/$(am__dirstamp) \
+ uniconv/$(DEPDIR)/$(am__dirstamp)
+test-u32-conv-to-enc$(EXEEXT): $(test_u32_conv_to_enc_OBJECTS) $(test_u32_conv_to_enc_DEPENDENCIES)
+ @rm -f test-u32-conv-to-enc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_conv_to_enc_OBJECTS) $(test_u32_conv_to_enc_LDADD) $(LIBS)
+unicase/test-u32-is-cased.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u32-is-cased$(EXEEXT): $(test_u32_is_cased_OBJECTS) $(test_u32_is_cased_DEPENDENCIES)
+ @rm -f test-u32-is-cased$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_is_cased_OBJECTS) $(test_u32_is_cased_LDADD) $(LIBS)
+unicase/test-u32-is-casefolded.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u32-is-casefolded$(EXEEXT): $(test_u32_is_casefolded_OBJECTS) $(test_u32_is_casefolded_DEPENDENCIES)
+ @rm -f test-u32-is-casefolded$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_is_casefolded_OBJECTS) $(test_u32_is_casefolded_LDADD) $(LIBS)
+unicase/test-u32-is-lowercase.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u32-is-lowercase$(EXEEXT): $(test_u32_is_lowercase_OBJECTS) $(test_u32_is_lowercase_DEPENDENCIES)
+ @rm -f test-u32-is-lowercase$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_is_lowercase_OBJECTS) $(test_u32_is_lowercase_LDADD) $(LIBS)
+unicase/test-u32-is-titlecase.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u32-is-titlecase$(EXEEXT): $(test_u32_is_titlecase_OBJECTS) $(test_u32_is_titlecase_DEPENDENCIES)
+ @rm -f test-u32-is-titlecase$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_is_titlecase_OBJECTS) $(test_u32_is_titlecase_LDADD) $(LIBS)
+unicase/test-u32-is-uppercase.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u32-is-uppercase$(EXEEXT): $(test_u32_is_uppercase_OBJECTS) $(test_u32_is_uppercase_DEPENDENCIES)
+ @rm -f test-u32-is-uppercase$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_is_uppercase_OBJECTS) $(test_u32_is_uppercase_LDADD) $(LIBS)
+uninorm/test-u32-nfc-big.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+uninorm/test-u32-normalize-big.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-u32-nfc-big$(EXEEXT): $(test_u32_nfc_big_OBJECTS) $(test_u32_nfc_big_DEPENDENCIES)
+ @rm -f test-u32-nfc-big$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_nfc_big_OBJECTS) $(test_u32_nfc_big_LDADD) $(LIBS)
+uninorm/test-u32-nfd-big.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-u32-nfd-big$(EXEEXT): $(test_u32_nfd_big_OBJECTS) $(test_u32_nfd_big_DEPENDENCIES)
+ @rm -f test-u32-nfd-big$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_nfd_big_OBJECTS) $(test_u32_nfd_big_LDADD) $(LIBS)
+uninorm/test-u32-nfkc-big.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-u32-nfkc-big$(EXEEXT): $(test_u32_nfkc_big_OBJECTS) $(test_u32_nfkc_big_DEPENDENCIES)
+ @rm -f test-u32-nfkc-big$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_nfkc_big_OBJECTS) $(test_u32_nfkc_big_LDADD) $(LIBS)
+uninorm/test-u32-nfkd-big.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-u32-nfkd-big$(EXEEXT): $(test_u32_nfkd_big_OBJECTS) $(test_u32_nfkd_big_DEPENDENCIES)
+ @rm -f test-u32-nfkd-big$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_nfkd_big_OBJECTS) $(test_u32_nfkd_big_LDADD) $(LIBS)
+uninorm/test-u32-normcmp.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-u32-normcmp$(EXEEXT): $(test_u32_normcmp_OBJECTS) $(test_u32_normcmp_DEPENDENCIES)
+ @rm -f test-u32-normcmp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_normcmp_OBJECTS) $(test_u32_normcmp_LDADD) $(LIBS)
+uninorm/test-u32-normcoll.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-u32-normcoll$(EXEEXT): $(test_u32_normcoll_OBJECTS) $(test_u32_normcoll_DEPENDENCIES)
+ @rm -f test-u32-normcoll$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_normcoll_OBJECTS) $(test_u32_normcoll_LDADD) $(LIBS)
+unilbrk/test-u32-possible-linebreaks.$(OBJEXT): \
+ unilbrk/$(am__dirstamp) unilbrk/$(DEPDIR)/$(am__dirstamp)
+test-u32-possible-linebreaks$(EXEEXT): $(test_u32_possible_linebreaks_OBJECTS) $(test_u32_possible_linebreaks_DEPENDENCIES)
+ @rm -f test-u32-possible-linebreaks$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_possible_linebreaks_OBJECTS) $(test_u32_possible_linebreaks_LDADD) $(LIBS)
+uniconv/test-u32-strconv-from-enc.$(OBJEXT): uniconv/$(am__dirstamp) \
+ uniconv/$(DEPDIR)/$(am__dirstamp)
+test-u32-strconv-from-enc$(EXEEXT): $(test_u32_strconv_from_enc_OBJECTS) $(test_u32_strconv_from_enc_DEPENDENCIES)
+ @rm -f test-u32-strconv-from-enc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_strconv_from_enc_OBJECTS) $(test_u32_strconv_from_enc_LDADD) $(LIBS)
+uniconv/test-u32-strconv-to-enc.$(OBJEXT): uniconv/$(am__dirstamp) \
+ uniconv/$(DEPDIR)/$(am__dirstamp)
+test-u32-strconv-to-enc$(EXEEXT): $(test_u32_strconv_to_enc_OBJECTS) $(test_u32_strconv_to_enc_DEPENDENCIES)
+ @rm -f test-u32-strconv-to-enc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_strconv_to_enc_OBJECTS) $(test_u32_strconv_to_enc_LDADD) $(LIBS)
+uniwidth/test-u32-strwidth.$(OBJEXT): uniwidth/$(am__dirstamp) \
+ uniwidth/$(DEPDIR)/$(am__dirstamp)
+test-u32-strwidth$(EXEEXT): $(test_u32_strwidth_OBJECTS) $(test_u32_strwidth_DEPENDENCIES)
+ @rm -f test-u32-strwidth$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_strwidth_OBJECTS) $(test_u32_strwidth_LDADD) $(LIBS)
+unicase/test-u32-tolower.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u32-tolower$(EXEEXT): $(test_u32_tolower_OBJECTS) $(test_u32_tolower_DEPENDENCIES)
+ @rm -f test-u32-tolower$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_tolower_OBJECTS) $(test_u32_tolower_LDADD) $(LIBS)
+unicase/test-u32-totitle.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u32-totitle$(EXEEXT): $(test_u32_totitle_OBJECTS) $(test_u32_totitle_DEPENDENCIES)
+ @rm -f test-u32-totitle$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_totitle_OBJECTS) $(test_u32_totitle_LDADD) $(LIBS)
+unicase/test-u32-toupper.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u32-toupper$(EXEEXT): $(test_u32_toupper_OBJECTS) $(test_u32_toupper_DEPENDENCIES)
+ @rm -f test-u32-toupper$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_toupper_OBJECTS) $(test_u32_toupper_LDADD) $(LIBS)
+unistdio/test-u32-vasnprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u32-vasnprintf1$(EXEEXT): $(test_u32_vasnprintf1_OBJECTS) $(test_u32_vasnprintf1_DEPENDENCIES)
+ @rm -f test-u32-vasnprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_vasnprintf1_OBJECTS) $(test_u32_vasnprintf1_LDADD) $(LIBS)
+unistdio/test-u32-vasnprintf2.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u32-vasnprintf2$(EXEEXT): $(test_u32_vasnprintf2_OBJECTS) $(test_u32_vasnprintf2_DEPENDENCIES)
+ @rm -f test-u32-vasnprintf2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_vasnprintf2_OBJECTS) $(test_u32_vasnprintf2_LDADD) $(LIBS)
+unistdio/test-u32-vasnprintf3.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u32-vasnprintf3$(EXEEXT): $(test_u32_vasnprintf3_OBJECTS) $(test_u32_vasnprintf3_DEPENDENCIES)
+ @rm -f test-u32-vasnprintf3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_vasnprintf3_OBJECTS) $(test_u32_vasnprintf3_LDADD) $(LIBS)
+unistdio/test-u32-vasprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u32-vasprintf1$(EXEEXT): $(test_u32_vasprintf1_OBJECTS) $(test_u32_vasprintf1_DEPENDENCIES)
+ @rm -f test-u32-vasprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_vasprintf1_OBJECTS) $(test_u32_vasprintf1_LDADD) $(LIBS)
+unistdio/test-u32-vsnprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u32-vsnprintf1$(EXEEXT): $(test_u32_vsnprintf1_OBJECTS) $(test_u32_vsnprintf1_DEPENDENCIES)
+ @rm -f test-u32-vsnprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_vsnprintf1_OBJECTS) $(test_u32_vsnprintf1_LDADD) $(LIBS)
+unistdio/test-u32-vsprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u32-vsprintf1$(EXEEXT): $(test_u32_vsprintf1_OBJECTS) $(test_u32_vsprintf1_DEPENDENCIES)
+ @rm -f test-u32-vsprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_vsprintf1_OBJECTS) $(test_u32_vsprintf1_LDADD) $(LIBS)
+uniwidth/test-u32-width.$(OBJEXT): uniwidth/$(am__dirstamp) \
+ uniwidth/$(DEPDIR)/$(am__dirstamp)
+test-u32-width$(EXEEXT): $(test_u32_width_OBJECTS) $(test_u32_width_DEPENDENCIES)
+ @rm -f test-u32-width$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_width_OBJECTS) $(test_u32_width_LDADD) $(LIBS)
+unilbrk/test-u32-width-linebreaks.$(OBJEXT): unilbrk/$(am__dirstamp) \
+ unilbrk/$(DEPDIR)/$(am__dirstamp)
+test-u32-width-linebreaks$(EXEEXT): $(test_u32_width_linebreaks_OBJECTS) $(test_u32_width_linebreaks_DEPENDENCIES)
+ @rm -f test-u32-width-linebreaks$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_width_linebreaks_OBJECTS) $(test_u32_width_linebreaks_LDADD) $(LIBS)
+uniwbrk/test-u32-wordbreaks.$(OBJEXT): uniwbrk/$(am__dirstamp) \
+ uniwbrk/$(DEPDIR)/$(am__dirstamp)
+test-u32-wordbreaks$(EXEEXT): $(test_u32_wordbreaks_OBJECTS) $(test_u32_wordbreaks_DEPENDENCIES)
+ @rm -f test-u32-wordbreaks$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_wordbreaks_OBJECTS) $(test_u32_wordbreaks_LDADD) $(LIBS)
+unistdio/test-u8-asnprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u8-asnprintf1$(EXEEXT): $(test_u8_asnprintf1_OBJECTS) $(test_u8_asnprintf1_DEPENDENCIES)
+ @rm -f test-u8-asnprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_asnprintf1_OBJECTS) $(test_u8_asnprintf1_LDADD) $(LIBS)
+unicase/test-u8-casecmp.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u8-casecmp$(EXEEXT): $(test_u8_casecmp_OBJECTS) $(test_u8_casecmp_DEPENDENCIES)
+ @rm -f test-u8-casecmp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_casecmp_OBJECTS) $(test_u8_casecmp_LDADD) $(LIBS)
+unicase/test-u8-casecoll.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u8-casecoll$(EXEEXT): $(test_u8_casecoll_OBJECTS) $(test_u8_casecoll_DEPENDENCIES)
+ @rm -f test-u8-casecoll$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_casecoll_OBJECTS) $(test_u8_casecoll_LDADD) $(LIBS)
+unicase/test-u8-casefold.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u8-casefold$(EXEEXT): $(test_u8_casefold_OBJECTS) $(test_u8_casefold_DEPENDENCIES)
+ @rm -f test-u8-casefold$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_casefold_OBJECTS) $(test_u8_casefold_LDADD) $(LIBS)
+uniconv/test-u8-conv-from-enc.$(OBJEXT): uniconv/$(am__dirstamp) \
+ uniconv/$(DEPDIR)/$(am__dirstamp)
+test-u8-conv-from-enc$(EXEEXT): $(test_u8_conv_from_enc_OBJECTS) $(test_u8_conv_from_enc_DEPENDENCIES)
+ @rm -f test-u8-conv-from-enc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_conv_from_enc_OBJECTS) $(test_u8_conv_from_enc_LDADD) $(LIBS)
+uniconv/test-u8-conv-to-enc.$(OBJEXT): uniconv/$(am__dirstamp) \
+ uniconv/$(DEPDIR)/$(am__dirstamp)
+test-u8-conv-to-enc$(EXEEXT): $(test_u8_conv_to_enc_OBJECTS) $(test_u8_conv_to_enc_DEPENDENCIES)
+ @rm -f test-u8-conv-to-enc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_conv_to_enc_OBJECTS) $(test_u8_conv_to_enc_LDADD) $(LIBS)
+unicase/test-u8-is-cased.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u8-is-cased$(EXEEXT): $(test_u8_is_cased_OBJECTS) $(test_u8_is_cased_DEPENDENCIES)
+ @rm -f test-u8-is-cased$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_is_cased_OBJECTS) $(test_u8_is_cased_LDADD) $(LIBS)
+unicase/test-u8-is-casefolded.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u8-is-casefolded$(EXEEXT): $(test_u8_is_casefolded_OBJECTS) $(test_u8_is_casefolded_DEPENDENCIES)
+ @rm -f test-u8-is-casefolded$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_is_casefolded_OBJECTS) $(test_u8_is_casefolded_LDADD) $(LIBS)
+unicase/test-u8-is-lowercase.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u8-is-lowercase$(EXEEXT): $(test_u8_is_lowercase_OBJECTS) $(test_u8_is_lowercase_DEPENDENCIES)
+ @rm -f test-u8-is-lowercase$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_is_lowercase_OBJECTS) $(test_u8_is_lowercase_LDADD) $(LIBS)
+unicase/test-u8-is-titlecase.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u8-is-titlecase$(EXEEXT): $(test_u8_is_titlecase_OBJECTS) $(test_u8_is_titlecase_DEPENDENCIES)
+ @rm -f test-u8-is-titlecase$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_is_titlecase_OBJECTS) $(test_u8_is_titlecase_LDADD) $(LIBS)
+unicase/test-u8-is-uppercase.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u8-is-uppercase$(EXEEXT): $(test_u8_is_uppercase_OBJECTS) $(test_u8_is_uppercase_DEPENDENCIES)
+ @rm -f test-u8-is-uppercase$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_is_uppercase_OBJECTS) $(test_u8_is_uppercase_LDADD) $(LIBS)
+uninorm/test-u8-normcmp.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-u8-normcmp$(EXEEXT): $(test_u8_normcmp_OBJECTS) $(test_u8_normcmp_DEPENDENCIES)
+ @rm -f test-u8-normcmp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_normcmp_OBJECTS) $(test_u8_normcmp_LDADD) $(LIBS)
+uninorm/test-u8-normcoll.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-u8-normcoll$(EXEEXT): $(test_u8_normcoll_OBJECTS) $(test_u8_normcoll_DEPENDENCIES)
+ @rm -f test-u8-normcoll$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_normcoll_OBJECTS) $(test_u8_normcoll_LDADD) $(LIBS)
+unilbrk/test-u8-possible-linebreaks.$(OBJEXT): \
+ unilbrk/$(am__dirstamp) unilbrk/$(DEPDIR)/$(am__dirstamp)
+test-u8-possible-linebreaks$(EXEEXT): $(test_u8_possible_linebreaks_OBJECTS) $(test_u8_possible_linebreaks_DEPENDENCIES)
+ @rm -f test-u8-possible-linebreaks$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_possible_linebreaks_OBJECTS) $(test_u8_possible_linebreaks_LDADD) $(LIBS)
+uniconv/test-u8-strconv-from-enc.$(OBJEXT): uniconv/$(am__dirstamp) \
+ uniconv/$(DEPDIR)/$(am__dirstamp)
+test-u8-strconv-from-enc$(EXEEXT): $(test_u8_strconv_from_enc_OBJECTS) $(test_u8_strconv_from_enc_DEPENDENCIES)
+ @rm -f test-u8-strconv-from-enc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_strconv_from_enc_OBJECTS) $(test_u8_strconv_from_enc_LDADD) $(LIBS)
+uniconv/test-u8-strconv-to-enc.$(OBJEXT): uniconv/$(am__dirstamp) \
+ uniconv/$(DEPDIR)/$(am__dirstamp)
+test-u8-strconv-to-enc$(EXEEXT): $(test_u8_strconv_to_enc_OBJECTS) $(test_u8_strconv_to_enc_DEPENDENCIES)
+ @rm -f test-u8-strconv-to-enc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_strconv_to_enc_OBJECTS) $(test_u8_strconv_to_enc_LDADD) $(LIBS)
+uniwidth/test-u8-strwidth.$(OBJEXT): uniwidth/$(am__dirstamp) \
+ uniwidth/$(DEPDIR)/$(am__dirstamp)
+test-u8-strwidth$(EXEEXT): $(test_u8_strwidth_OBJECTS) $(test_u8_strwidth_DEPENDENCIES)
+ @rm -f test-u8-strwidth$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_strwidth_OBJECTS) $(test_u8_strwidth_LDADD) $(LIBS)
+unicase/test-u8-tolower.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u8-tolower$(EXEEXT): $(test_u8_tolower_OBJECTS) $(test_u8_tolower_DEPENDENCIES)
+ @rm -f test-u8-tolower$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_tolower_OBJECTS) $(test_u8_tolower_LDADD) $(LIBS)
+unicase/test-u8-totitle.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u8-totitle$(EXEEXT): $(test_u8_totitle_OBJECTS) $(test_u8_totitle_DEPENDENCIES)
+ @rm -f test-u8-totitle$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_totitle_OBJECTS) $(test_u8_totitle_LDADD) $(LIBS)
+unicase/test-u8-toupper.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-u8-toupper$(EXEEXT): $(test_u8_toupper_OBJECTS) $(test_u8_toupper_DEPENDENCIES)
+ @rm -f test-u8-toupper$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_toupper_OBJECTS) $(test_u8_toupper_LDADD) $(LIBS)
+unistdio/test-u8-vasnprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u8-vasnprintf1$(EXEEXT): $(test_u8_vasnprintf1_OBJECTS) $(test_u8_vasnprintf1_DEPENDENCIES)
+ @rm -f test-u8-vasnprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_vasnprintf1_OBJECTS) $(test_u8_vasnprintf1_LDADD) $(LIBS)
+unistdio/test-u8-vasnprintf2.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u8-vasnprintf2$(EXEEXT): $(test_u8_vasnprintf2_OBJECTS) $(test_u8_vasnprintf2_DEPENDENCIES)
+ @rm -f test-u8-vasnprintf2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_vasnprintf2_OBJECTS) $(test_u8_vasnprintf2_LDADD) $(LIBS)
+unistdio/test-u8-vasnprintf3.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u8-vasnprintf3$(EXEEXT): $(test_u8_vasnprintf3_OBJECTS) $(test_u8_vasnprintf3_DEPENDENCIES)
+ @rm -f test-u8-vasnprintf3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_vasnprintf3_OBJECTS) $(test_u8_vasnprintf3_LDADD) $(LIBS)
+unistdio/test-u8-vasprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u8-vasprintf1$(EXEEXT): $(test_u8_vasprintf1_OBJECTS) $(test_u8_vasprintf1_DEPENDENCIES)
+ @rm -f test-u8-vasprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_vasprintf1_OBJECTS) $(test_u8_vasprintf1_LDADD) $(LIBS)
+unistdio/test-u8-vsnprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u8-vsnprintf1$(EXEEXT): $(test_u8_vsnprintf1_OBJECTS) $(test_u8_vsnprintf1_DEPENDENCIES)
+ @rm -f test-u8-vsnprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_vsnprintf1_OBJECTS) $(test_u8_vsnprintf1_LDADD) $(LIBS)
+unistdio/test-u8-vsprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-u8-vsprintf1$(EXEEXT): $(test_u8_vsprintf1_OBJECTS) $(test_u8_vsprintf1_DEPENDENCIES)
+ @rm -f test-u8-vsprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_vsprintf1_OBJECTS) $(test_u8_vsprintf1_LDADD) $(LIBS)
+uniwidth/test-u8-width.$(OBJEXT): uniwidth/$(am__dirstamp) \
+ uniwidth/$(DEPDIR)/$(am__dirstamp)
+test-u8-width$(EXEEXT): $(test_u8_width_OBJECTS) $(test_u8_width_DEPENDENCIES)
+ @rm -f test-u8-width$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_width_OBJECTS) $(test_u8_width_LDADD) $(LIBS)
+unilbrk/test-u8-width-linebreaks.$(OBJEXT): unilbrk/$(am__dirstamp) \
+ unilbrk/$(DEPDIR)/$(am__dirstamp)
+test-u8-width-linebreaks$(EXEEXT): $(test_u8_width_linebreaks_OBJECTS) $(test_u8_width_linebreaks_DEPENDENCIES)
+ @rm -f test-u8-width-linebreaks$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_width_linebreaks_OBJECTS) $(test_u8_width_linebreaks_LDADD) $(LIBS)
+uniwbrk/test-u8-wordbreaks.$(OBJEXT): uniwbrk/$(am__dirstamp) \
+ uniwbrk/$(DEPDIR)/$(am__dirstamp)
+test-u8-wordbreaks$(EXEEXT): $(test_u8_wordbreaks_OBJECTS) $(test_u8_wordbreaks_DEPENDENCIES)
+ @rm -f test-u8-wordbreaks$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_wordbreaks_OBJECTS) $(test_u8_wordbreaks_LDADD) $(LIBS)
+unicase/test-uc_tolower.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-uc_tolower$(EXEEXT): $(test_uc_tolower_OBJECTS) $(test_uc_tolower_DEPENDENCIES)
+ @rm -f test-uc_tolower$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_uc_tolower_OBJECTS) $(test_uc_tolower_LDADD) $(LIBS)
+unicase/test-uc_totitle.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-uc_totitle$(EXEEXT): $(test_uc_totitle_OBJECTS) $(test_uc_totitle_DEPENDENCIES)
+ @rm -f test-uc_totitle$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_uc_totitle_OBJECTS) $(test_uc_totitle_LDADD) $(LIBS)
+unicase/test-uc_toupper.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-uc_toupper$(EXEEXT): $(test_uc_toupper_OBJECTS) $(test_uc_toupper_DEPENDENCIES)
+ @rm -f test-uc_toupper$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_uc_toupper_OBJECTS) $(test_uc_toupper_LDADD) $(LIBS)
+uniwidth/test-uc_width.$(OBJEXT): uniwidth/$(am__dirstamp) \
+ uniwidth/$(DEPDIR)/$(am__dirstamp)
+test-uc_width$(EXEEXT): $(test_uc_width_OBJECTS) $(test_uc_width_DEPENDENCIES)
+ @rm -f test-uc_width$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_uc_width_OBJECTS) $(test_uc_width_LDADD) $(LIBS)
+uniwidth/test-uc_width2.$(OBJEXT): uniwidth/$(am__dirstamp) \
+ uniwidth/$(DEPDIR)/$(am__dirstamp)
+test-uc_width2$(EXEEXT): $(test_uc_width2_OBJECTS) $(test_uc_width2_DEPENDENCIES)
+ @rm -f test-uc_width2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_uc_width2_OBJECTS) $(test_uc_width2_LDADD) $(LIBS)
+unistdio/test-ulc-asnprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-ulc-asnprintf1$(EXEEXT): $(test_ulc_asnprintf1_OBJECTS) $(test_ulc_asnprintf1_DEPENDENCIES)
+ @rm -f test-ulc-asnprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ulc_asnprintf1_OBJECTS) $(test_ulc_asnprintf1_LDADD) $(LIBS)
+unicase/test-ulc-casecmp.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-ulc-casecmp$(EXEEXT): $(test_ulc_casecmp_OBJECTS) $(test_ulc_casecmp_DEPENDENCIES)
+ @rm -f test-ulc-casecmp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ulc_casecmp_OBJECTS) $(test_ulc_casecmp_LDADD) $(LIBS)
+unicase/test-ulc-casecoll.$(OBJEXT): unicase/$(am__dirstamp) \
+ unicase/$(DEPDIR)/$(am__dirstamp)
+test-ulc-casecoll$(EXEEXT): $(test_ulc_casecoll_OBJECTS) $(test_ulc_casecoll_DEPENDENCIES)
+ @rm -f test-ulc-casecoll$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ulc_casecoll_OBJECTS) $(test_ulc_casecoll_LDADD) $(LIBS)
+unilbrk/test-ulc-possible-linebreaks.$(OBJEXT): \
+ unilbrk/$(am__dirstamp) unilbrk/$(DEPDIR)/$(am__dirstamp)
+test-ulc-possible-linebreaks$(EXEEXT): $(test_ulc_possible_linebreaks_OBJECTS) $(test_ulc_possible_linebreaks_DEPENDENCIES)
+ @rm -f test-ulc-possible-linebreaks$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ulc_possible_linebreaks_OBJECTS) $(test_ulc_possible_linebreaks_LDADD) $(LIBS)
+unistdio/test-ulc-vasnprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-ulc-vasnprintf1$(EXEEXT): $(test_ulc_vasnprintf1_OBJECTS) $(test_ulc_vasnprintf1_DEPENDENCIES)
+ @rm -f test-ulc-vasnprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ulc_vasnprintf1_OBJECTS) $(test_ulc_vasnprintf1_LDADD) $(LIBS)
+unistdio/test-ulc-vasnprintf2.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-ulc-vasnprintf2$(EXEEXT): $(test_ulc_vasnprintf2_OBJECTS) $(test_ulc_vasnprintf2_DEPENDENCIES)
+ @rm -f test-ulc-vasnprintf2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ulc_vasnprintf2_OBJECTS) $(test_ulc_vasnprintf2_LDADD) $(LIBS)
+unistdio/test-ulc-vasnprintf3.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-ulc-vasnprintf3$(EXEEXT): $(test_ulc_vasnprintf3_OBJECTS) $(test_ulc_vasnprintf3_DEPENDENCIES)
+ @rm -f test-ulc-vasnprintf3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ulc_vasnprintf3_OBJECTS) $(test_ulc_vasnprintf3_LDADD) $(LIBS)
+unistdio/test-ulc-vasprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-ulc-vasprintf1$(EXEEXT): $(test_ulc_vasprintf1_OBJECTS) $(test_ulc_vasprintf1_DEPENDENCIES)
+ @rm -f test-ulc-vasprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ulc_vasprintf1_OBJECTS) $(test_ulc_vasprintf1_LDADD) $(LIBS)
+unistdio/test-ulc-vsnprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-ulc-vsnprintf1$(EXEEXT): $(test_ulc_vsnprintf1_OBJECTS) $(test_ulc_vsnprintf1_DEPENDENCIES)
+ @rm -f test-ulc-vsnprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ulc_vsnprintf1_OBJECTS) $(test_ulc_vsnprintf1_LDADD) $(LIBS)
+unistdio/test-ulc-vsprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
+ unistdio/$(DEPDIR)/$(am__dirstamp)
+test-ulc-vsprintf1$(EXEEXT): $(test_ulc_vsprintf1_OBJECTS) $(test_ulc_vsprintf1_DEPENDENCIES)
+ @rm -f test-ulc-vsprintf1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ulc_vsprintf1_OBJECTS) $(test_ulc_vsprintf1_LDADD) $(LIBS)
+unilbrk/test-ulc-width-linebreaks.$(OBJEXT): unilbrk/$(am__dirstamp) \
+ unilbrk/$(DEPDIR)/$(am__dirstamp)
+test-ulc-width-linebreaks$(EXEEXT): $(test_ulc_width_linebreaks_OBJECTS) $(test_ulc_width_linebreaks_DEPENDENCIES)
+ @rm -f test-ulc-width-linebreaks$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ulc_width_linebreaks_OBJECTS) $(test_ulc_width_linebreaks_LDADD) $(LIBS)
+uniwbrk/test-ulc-wordbreaks.$(OBJEXT): uniwbrk/$(am__dirstamp) \
+ uniwbrk/$(DEPDIR)/$(am__dirstamp)
+test-ulc-wordbreaks$(EXEEXT): $(test_ulc_wordbreaks_OBJECTS) $(test_ulc_wordbreaks_DEPENDENCIES)
+ @rm -f test-ulc-wordbreaks$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_ulc_wordbreaks_OBJECTS) $(test_ulc_wordbreaks_LDADD) $(LIBS)
+uniname/$(am__dirstamp):
+ @$(MKDIR_P) uniname
+ @: > uniname/$(am__dirstamp)
+uniname/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) uniname/$(DEPDIR)
+ @: > uniname/$(DEPDIR)/$(am__dirstamp)
+uniname/test-uninames.$(OBJEXT): uniname/$(am__dirstamp) \
+ uniname/$(DEPDIR)/$(am__dirstamp)
+test-uninames$(EXEEXT): $(test_uninames_OBJECTS) $(test_uninames_DEPENDENCIES)
+ @rm -f test-uninames$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_uninames_OBJECTS) $(test_uninames_LDADD) $(LIBS)
+uninorm/test-uninorm-filter-nfc.$(OBJEXT): uninorm/$(am__dirstamp) \
+ uninorm/$(DEPDIR)/$(am__dirstamp)
+test-uninorm-filter-nfc$(EXEEXT): $(test_uninorm_filter_nfc_OBJECTS) $(test_uninorm_filter_nfc_DEPENDENCIES)
+ @rm -f test-uninorm-filter-nfc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_uninorm_filter_nfc_OBJECTS) $(test_uninorm_filter_nfc_LDADD) $(LIBS)
+test-unistd$(EXEEXT): $(test_unistd_OBJECTS) $(test_unistd_DEPENDENCIES)
+ @rm -f test-unistd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_unistd_OBJECTS) $(test_unistd_LDADD) $(LIBS)
+test-wchar$(EXEEXT): $(test_wchar_OBJECTS) $(test_wchar_DEPENDENCIES)
+ @rm -f test-wchar$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_wchar_OBJECTS) $(test_wchar_LDADD) $(LIBS)
+test-wctype$(EXEEXT): $(test_wctype_OBJECTS) $(test_wctype_DEPENDENCIES)
+ @rm -f test-wctype$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_wctype_OBJECTS) $(test_wctype_LDADD) $(LIBS)
+test-wcwidth$(EXEEXT): $(test_wcwidth_OBJECTS) $(test_wcwidth_DEPENDENCIES)
+ @rm -f test-wcwidth$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_wcwidth_OBJECTS) $(test_wcwidth_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f unicase/test-cased.$(OBJEXT)
+ -rm -f unicase/test-ignorable.$(OBJEXT)
+ -rm -f unicase/test-locale-language.$(OBJEXT)
+ -rm -f unicase/test-u16-casecmp.$(OBJEXT)
+ -rm -f unicase/test-u16-casecoll.$(OBJEXT)
+ -rm -f unicase/test-u16-casefold.$(OBJEXT)
+ -rm -f unicase/test-u16-is-cased.$(OBJEXT)
+ -rm -f unicase/test-u16-is-casefolded.$(OBJEXT)
+ -rm -f unicase/test-u16-is-lowercase.$(OBJEXT)
+ -rm -f unicase/test-u16-is-titlecase.$(OBJEXT)
+ -rm -f unicase/test-u16-is-uppercase.$(OBJEXT)
+ -rm -f unicase/test-u16-tolower.$(OBJEXT)
+ -rm -f unicase/test-u16-totitle.$(OBJEXT)
+ -rm -f unicase/test-u16-toupper.$(OBJEXT)
+ -rm -f unicase/test-u32-casecmp.$(OBJEXT)
+ -rm -f unicase/test-u32-casecoll.$(OBJEXT)
+ -rm -f unicase/test-u32-casefold.$(OBJEXT)
+ -rm -f unicase/test-u32-is-cased.$(OBJEXT)
+ -rm -f unicase/test-u32-is-casefolded.$(OBJEXT)
+ -rm -f unicase/test-u32-is-lowercase.$(OBJEXT)
+ -rm -f unicase/test-u32-is-titlecase.$(OBJEXT)
+ -rm -f unicase/test-u32-is-uppercase.$(OBJEXT)
+ -rm -f unicase/test-u32-tolower.$(OBJEXT)
+ -rm -f unicase/test-u32-totitle.$(OBJEXT)
+ -rm -f unicase/test-u32-toupper.$(OBJEXT)
+ -rm -f unicase/test-u8-casecmp.$(OBJEXT)
+ -rm -f unicase/test-u8-casecoll.$(OBJEXT)
+ -rm -f unicase/test-u8-casefold.$(OBJEXT)
+ -rm -f unicase/test-u8-is-cased.$(OBJEXT)
+ -rm -f unicase/test-u8-is-casefolded.$(OBJEXT)
+ -rm -f unicase/test-u8-is-lowercase.$(OBJEXT)
+ -rm -f unicase/test-u8-is-titlecase.$(OBJEXT)
+ -rm -f unicase/test-u8-is-uppercase.$(OBJEXT)
+ -rm -f unicase/test-u8-tolower.$(OBJEXT)
+ -rm -f unicase/test-u8-totitle.$(OBJEXT)
+ -rm -f unicase/test-u8-toupper.$(OBJEXT)
+ -rm -f unicase/test-uc_tolower.$(OBJEXT)
+ -rm -f unicase/test-uc_totitle.$(OBJEXT)
+ -rm -f unicase/test-uc_toupper.$(OBJEXT)
+ -rm -f unicase/test-ulc-casecmp.$(OBJEXT)
+ -rm -f unicase/test-ulc-casecoll.$(OBJEXT)
+ -rm -f uniconv/test-u16-conv-from-enc.$(OBJEXT)
+ -rm -f uniconv/test-u16-conv-to-enc.$(OBJEXT)
+ -rm -f uniconv/test-u16-strconv-from-enc.$(OBJEXT)
+ -rm -f uniconv/test-u16-strconv-to-enc.$(OBJEXT)
+ -rm -f uniconv/test-u32-conv-from-enc.$(OBJEXT)
+ -rm -f uniconv/test-u32-conv-to-enc.$(OBJEXT)
+ -rm -f uniconv/test-u32-strconv-from-enc.$(OBJEXT)
+ -rm -f uniconv/test-u32-strconv-to-enc.$(OBJEXT)
+ -rm -f uniconv/test-u8-conv-from-enc.$(OBJEXT)
+ -rm -f uniconv/test-u8-conv-to-enc.$(OBJEXT)
+ -rm -f uniconv/test-u8-strconv-from-enc.$(OBJEXT)
+ -rm -f uniconv/test-u8-strconv-to-enc.$(OBJEXT)
+ -rm -f unictype/test-bidi_byname.$(OBJEXT)
+ -rm -f unictype/test-bidi_name.$(OBJEXT)
+ -rm -f unictype/test-bidi_of.$(OBJEXT)
+ -rm -f unictype/test-bidi_test.$(OBJEXT)
+ -rm -f unictype/test-block_list.$(OBJEXT)
+ -rm -f unictype/test-block_of.$(OBJEXT)
+ -rm -f unictype/test-block_test.$(OBJEXT)
+ -rm -f unictype/test-categ_C.$(OBJEXT)
+ -rm -f unictype/test-categ_Cc.$(OBJEXT)
+ -rm -f unictype/test-categ_Cf.$(OBJEXT)
+ -rm -f unictype/test-categ_Cn.$(OBJEXT)
+ -rm -f unictype/test-categ_Co.$(OBJEXT)
+ -rm -f unictype/test-categ_Cs.$(OBJEXT)
+ -rm -f unictype/test-categ_L.$(OBJEXT)
+ -rm -f unictype/test-categ_Ll.$(OBJEXT)
+ -rm -f unictype/test-categ_Lm.$(OBJEXT)
+ -rm -f unictype/test-categ_Lo.$(OBJEXT)
+ -rm -f unictype/test-categ_Lt.$(OBJEXT)
+ -rm -f unictype/test-categ_Lu.$(OBJEXT)
+ -rm -f unictype/test-categ_M.$(OBJEXT)
+ -rm -f unictype/test-categ_Mc.$(OBJEXT)
+ -rm -f unictype/test-categ_Me.$(OBJEXT)
+ -rm -f unictype/test-categ_Mn.$(OBJEXT)
+ -rm -f unictype/test-categ_N.$(OBJEXT)
+ -rm -f unictype/test-categ_Nd.$(OBJEXT)
+ -rm -f unictype/test-categ_Nl.$(OBJEXT)
+ -rm -f unictype/test-categ_No.$(OBJEXT)
+ -rm -f unictype/test-categ_P.$(OBJEXT)
+ -rm -f unictype/test-categ_Pc.$(OBJEXT)
+ -rm -f unictype/test-categ_Pd.$(OBJEXT)
+ -rm -f unictype/test-categ_Pe.$(OBJEXT)
+ -rm -f unictype/test-categ_Pf.$(OBJEXT)
+ -rm -f unictype/test-categ_Pi.$(OBJEXT)
+ -rm -f unictype/test-categ_Po.$(OBJEXT)
+ -rm -f unictype/test-categ_Ps.$(OBJEXT)
+ -rm -f unictype/test-categ_S.$(OBJEXT)
+ -rm -f unictype/test-categ_Sc.$(OBJEXT)
+ -rm -f unictype/test-categ_Sk.$(OBJEXT)
+ -rm -f unictype/test-categ_Sm.$(OBJEXT)
+ -rm -f unictype/test-categ_So.$(OBJEXT)
+ -rm -f unictype/test-categ_Z.$(OBJEXT)
+ -rm -f unictype/test-categ_Zl.$(OBJEXT)
+ -rm -f unictype/test-categ_Zp.$(OBJEXT)
+ -rm -f unictype/test-categ_Zs.$(OBJEXT)
+ -rm -f unictype/test-categ_and.$(OBJEXT)
+ -rm -f unictype/test-categ_and_not.$(OBJEXT)
+ -rm -f unictype/test-categ_byname.$(OBJEXT)
+ -rm -f unictype/test-categ_name.$(OBJEXT)
+ -rm -f unictype/test-categ_none.$(OBJEXT)
+ -rm -f unictype/test-categ_of.$(OBJEXT)
+ -rm -f unictype/test-categ_or.$(OBJEXT)
+ -rm -f unictype/test-categ_test_withtable.$(OBJEXT)
+ -rm -f unictype/test-combining.$(OBJEXT)
+ -rm -f unictype/test-ctype_alnum.$(OBJEXT)
+ -rm -f unictype/test-ctype_alpha.$(OBJEXT)
+ -rm -f unictype/test-ctype_blank.$(OBJEXT)
+ -rm -f unictype/test-ctype_cntrl.$(OBJEXT)
+ -rm -f unictype/test-ctype_digit.$(OBJEXT)
+ -rm -f unictype/test-ctype_graph.$(OBJEXT)
+ -rm -f unictype/test-ctype_lower.$(OBJEXT)
+ -rm -f unictype/test-ctype_print.$(OBJEXT)
+ -rm -f unictype/test-ctype_punct.$(OBJEXT)
+ -rm -f unictype/test-ctype_space.$(OBJEXT)
+ -rm -f unictype/test-ctype_upper.$(OBJEXT)
+ -rm -f unictype/test-ctype_xdigit.$(OBJEXT)
+ -rm -f unictype/test-decdigit.$(OBJEXT)
+ -rm -f unictype/test-digit.$(OBJEXT)
+ -rm -f unictype/test-mirror.$(OBJEXT)
+ -rm -f unictype/test-numeric.$(OBJEXT)
+ -rm -f unictype/test-pr_alphabetic.$(OBJEXT)
+ -rm -f unictype/test-pr_ascii_hex_digit.$(OBJEXT)
+ -rm -f unictype/test-pr_bidi_arabic_digit.$(OBJEXT)
+ -rm -f unictype/test-pr_bidi_arabic_right_to_left.$(OBJEXT)
+ -rm -f unictype/test-pr_bidi_block_separator.$(OBJEXT)
+ -rm -f unictype/test-pr_bidi_boundary_neutral.$(OBJEXT)
+ -rm -f unictype/test-pr_bidi_common_separator.$(OBJEXT)
+ -rm -f unictype/test-pr_bidi_control.$(OBJEXT)
+ -rm -f unictype/test-pr_bidi_embedding_or_override.$(OBJEXT)
+ -rm -f unictype/test-pr_bidi_eur_num_separator.$(OBJEXT)
+ -rm -f unictype/test-pr_bidi_eur_num_terminator.$(OBJEXT)
+ -rm -f unictype/test-pr_bidi_european_digit.$(OBJEXT)
+ -rm -f unictype/test-pr_bidi_hebrew_right_to_left.$(OBJEXT)
+ -rm -f unictype/test-pr_bidi_left_to_right.$(OBJEXT)
+ -rm -f unictype/test-pr_bidi_non_spacing_mark.$(OBJEXT)
+ -rm -f unictype/test-pr_bidi_other_neutral.$(OBJEXT)
+ -rm -f unictype/test-pr_bidi_pdf.$(OBJEXT)
+ -rm -f unictype/test-pr_bidi_segment_separator.$(OBJEXT)
+ -rm -f unictype/test-pr_bidi_whitespace.$(OBJEXT)
+ -rm -f unictype/test-pr_byname.$(OBJEXT)
+ -rm -f unictype/test-pr_combining.$(OBJEXT)
+ -rm -f unictype/test-pr_composite.$(OBJEXT)
+ -rm -f unictype/test-pr_currency_symbol.$(OBJEXT)
+ -rm -f unictype/test-pr_dash.$(OBJEXT)
+ -rm -f unictype/test-pr_decimal_digit.$(OBJEXT)
+ -rm -f unictype/test-pr_default_ignorable_code_point.$(OBJEXT)
+ -rm -f unictype/test-pr_deprecated.$(OBJEXT)
+ -rm -f unictype/test-pr_diacritic.$(OBJEXT)
+ -rm -f unictype/test-pr_extender.$(OBJEXT)
+ -rm -f unictype/test-pr_format_control.$(OBJEXT)
+ -rm -f unictype/test-pr_grapheme_base.$(OBJEXT)
+ -rm -f unictype/test-pr_grapheme_extend.$(OBJEXT)
+ -rm -f unictype/test-pr_grapheme_link.$(OBJEXT)
+ -rm -f unictype/test-pr_hex_digit.$(OBJEXT)
+ -rm -f unictype/test-pr_hyphen.$(OBJEXT)
+ -rm -f unictype/test-pr_id_continue.$(OBJEXT)
+ -rm -f unictype/test-pr_id_start.$(OBJEXT)
+ -rm -f unictype/test-pr_ideographic.$(OBJEXT)
+ -rm -f unictype/test-pr_ids_binary_operator.$(OBJEXT)
+ -rm -f unictype/test-pr_ids_trinary_operator.$(OBJEXT)
+ -rm -f unictype/test-pr_ignorable_control.$(OBJEXT)
+ -rm -f unictype/test-pr_iso_control.$(OBJEXT)
+ -rm -f unictype/test-pr_join_control.$(OBJEXT)
+ -rm -f unictype/test-pr_left_of_pair.$(OBJEXT)
+ -rm -f unictype/test-pr_line_separator.$(OBJEXT)
+ -rm -f unictype/test-pr_logical_order_exception.$(OBJEXT)
+ -rm -f unictype/test-pr_lowercase.$(OBJEXT)
+ -rm -f unictype/test-pr_math.$(OBJEXT)
+ -rm -f unictype/test-pr_non_break.$(OBJEXT)
+ -rm -f unictype/test-pr_not_a_character.$(OBJEXT)
+ -rm -f unictype/test-pr_numeric.$(OBJEXT)
+ -rm -f unictype/test-pr_other_alphabetic.$(OBJEXT)
+ -rm -f unictype/test-pr_other_default_ignorable_code_point.$(OBJEXT)
+ -rm -f unictype/test-pr_other_grapheme_extend.$(OBJEXT)
+ -rm -f unictype/test-pr_other_id_continue.$(OBJEXT)
+ -rm -f unictype/test-pr_other_id_start.$(OBJEXT)
+ -rm -f unictype/test-pr_other_lowercase.$(OBJEXT)
+ -rm -f unictype/test-pr_other_math.$(OBJEXT)
+ -rm -f unictype/test-pr_other_uppercase.$(OBJEXT)
+ -rm -f unictype/test-pr_paired_punctuation.$(OBJEXT)
+ -rm -f unictype/test-pr_paragraph_separator.$(OBJEXT)
+ -rm -f unictype/test-pr_pattern_syntax.$(OBJEXT)
+ -rm -f unictype/test-pr_pattern_white_space.$(OBJEXT)
+ -rm -f unictype/test-pr_private_use.$(OBJEXT)
+ -rm -f unictype/test-pr_punctuation.$(OBJEXT)
+ -rm -f unictype/test-pr_quotation_mark.$(OBJEXT)
+ -rm -f unictype/test-pr_radical.$(OBJEXT)
+ -rm -f unictype/test-pr_sentence_terminal.$(OBJEXT)
+ -rm -f unictype/test-pr_soft_dotted.$(OBJEXT)
+ -rm -f unictype/test-pr_space.$(OBJEXT)
+ -rm -f unictype/test-pr_terminal_punctuation.$(OBJEXT)
+ -rm -f unictype/test-pr_test.$(OBJEXT)
+ -rm -f unictype/test-pr_titlecase.$(OBJEXT)
+ -rm -f unictype/test-pr_unassigned_code_value.$(OBJEXT)
+ -rm -f unictype/test-pr_unified_ideograph.$(OBJEXT)
+ -rm -f unictype/test-pr_uppercase.$(OBJEXT)
+ -rm -f unictype/test-pr_variation_selector.$(OBJEXT)
+ -rm -f unictype/test-pr_white_space.$(OBJEXT)
+ -rm -f unictype/test-pr_xid_continue.$(OBJEXT)
+ -rm -f unictype/test-pr_xid_start.$(OBJEXT)
+ -rm -f unictype/test-pr_zero_width.$(OBJEXT)
+ -rm -f unictype/test-scripts.$(OBJEXT)
+ -rm -f unictype/test-sy_c_ident.$(OBJEXT)
+ -rm -f unictype/test-sy_c_whitespace.$(OBJEXT)
+ -rm -f unictype/test-sy_java_ident.$(OBJEXT)
+ -rm -f unictype/test-sy_java_whitespace.$(OBJEXT)
+ -rm -f unilbrk/test-u16-possible-linebreaks.$(OBJEXT)
+ -rm -f unilbrk/test-u16-width-linebreaks.$(OBJEXT)
+ -rm -f unilbrk/test-u32-possible-linebreaks.$(OBJEXT)
+ -rm -f unilbrk/test-u32-width-linebreaks.$(OBJEXT)
+ -rm -f unilbrk/test-u8-possible-linebreaks.$(OBJEXT)
+ -rm -f unilbrk/test-u8-width-linebreaks.$(OBJEXT)
+ -rm -f unilbrk/test-ulc-possible-linebreaks.$(OBJEXT)
+ -rm -f unilbrk/test-ulc-width-linebreaks.$(OBJEXT)
+ -rm -f uniname/test-uninames.$(OBJEXT)
+ -rm -f uninorm/test-canonical-decomposition.$(OBJEXT)
+ -rm -f uninorm/test-compat-decomposition.$(OBJEXT)
+ -rm -f uninorm/test-composition.$(OBJEXT)
+ -rm -f uninorm/test-decomposing-form.$(OBJEXT)
+ -rm -f uninorm/test-decomposition.$(OBJEXT)
+ -rm -f uninorm/test-nfc.$(OBJEXT)
+ -rm -f uninorm/test-nfd.$(OBJEXT)
+ -rm -f uninorm/test-nfkc.$(OBJEXT)
+ -rm -f uninorm/test-nfkd.$(OBJEXT)
+ -rm -f uninorm/test-u16-nfc.$(OBJEXT)
+ -rm -f uninorm/test-u16-nfd.$(OBJEXT)
+ -rm -f uninorm/test-u16-nfkc.$(OBJEXT)
+ -rm -f uninorm/test-u16-nfkd.$(OBJEXT)
+ -rm -f uninorm/test-u16-normcmp.$(OBJEXT)
+ -rm -f uninorm/test-u16-normcoll.$(OBJEXT)
+ -rm -f uninorm/test-u32-nfc-big.$(OBJEXT)
+ -rm -f uninorm/test-u32-nfc.$(OBJEXT)
+ -rm -f uninorm/test-u32-nfd-big.$(OBJEXT)
+ -rm -f uninorm/test-u32-nfd.$(OBJEXT)
+ -rm -f uninorm/test-u32-nfkc-big.$(OBJEXT)
+ -rm -f uninorm/test-u32-nfkc.$(OBJEXT)
+ -rm -f uninorm/test-u32-nfkd-big.$(OBJEXT)
+ -rm -f uninorm/test-u32-nfkd.$(OBJEXT)
+ -rm -f uninorm/test-u32-normalize-big.$(OBJEXT)
+ -rm -f uninorm/test-u32-normcmp.$(OBJEXT)
+ -rm -f uninorm/test-u32-normcoll.$(OBJEXT)
+ -rm -f uninorm/test-u8-nfc.$(OBJEXT)
+ -rm -f uninorm/test-u8-nfd.$(OBJEXT)
+ -rm -f uninorm/test-u8-nfkc.$(OBJEXT)
+ -rm -f uninorm/test-u8-nfkd.$(OBJEXT)
+ -rm -f uninorm/test-u8-normcmp.$(OBJEXT)
+ -rm -f uninorm/test-u8-normcoll.$(OBJEXT)
+ -rm -f uninorm/test-uninorm-filter-nfc.$(OBJEXT)
+ -rm -f unistdio/test-u16-asnprintf1.$(OBJEXT)
+ -rm -f unistdio/test-u16-vasnprintf1.$(OBJEXT)
+ -rm -f unistdio/test-u16-vasnprintf2.$(OBJEXT)
+ -rm -f unistdio/test-u16-vasnprintf3.$(OBJEXT)
+ -rm -f unistdio/test-u16-vasprintf1.$(OBJEXT)
+ -rm -f unistdio/test-u16-vsnprintf1.$(OBJEXT)
+ -rm -f unistdio/test-u16-vsprintf1.$(OBJEXT)
+ -rm -f unistdio/test-u32-asnprintf1.$(OBJEXT)
+ -rm -f unistdio/test-u32-vasnprintf1.$(OBJEXT)
+ -rm -f unistdio/test-u32-vasnprintf2.$(OBJEXT)
+ -rm -f unistdio/test-u32-vasnprintf3.$(OBJEXT)
+ -rm -f unistdio/test-u32-vasprintf1.$(OBJEXT)
+ -rm -f unistdio/test-u32-vsnprintf1.$(OBJEXT)
+ -rm -f unistdio/test-u32-vsprintf1.$(OBJEXT)
+ -rm -f unistdio/test-u8-asnprintf1.$(OBJEXT)
+ -rm -f unistdio/test-u8-vasnprintf1.$(OBJEXT)
+ -rm -f unistdio/test-u8-vasnprintf2.$(OBJEXT)
+ -rm -f unistdio/test-u8-vasnprintf3.$(OBJEXT)
+ -rm -f unistdio/test-u8-vasprintf1.$(OBJEXT)
+ -rm -f unistdio/test-u8-vsnprintf1.$(OBJEXT)
+ -rm -f unistdio/test-u8-vsprintf1.$(OBJEXT)
+ -rm -f unistdio/test-ulc-asnprintf1.$(OBJEXT)
+ -rm -f unistdio/test-ulc-vasnprintf1.$(OBJEXT)
+ -rm -f unistdio/test-ulc-vasnprintf2.$(OBJEXT)
+ -rm -f unistdio/test-ulc-vasnprintf3.$(OBJEXT)
+ -rm -f unistdio/test-ulc-vasprintf1.$(OBJEXT)
+ -rm -f unistdio/test-ulc-vsnprintf1.$(OBJEXT)
+ -rm -f unistdio/test-ulc-vsprintf1.$(OBJEXT)
+ -rm -f uniwbrk/test-u16-wordbreaks.$(OBJEXT)
+ -rm -f uniwbrk/test-u32-wordbreaks.$(OBJEXT)
+ -rm -f uniwbrk/test-u8-wordbreaks.$(OBJEXT)
+ -rm -f uniwbrk/test-ulc-wordbreaks.$(OBJEXT)
+ -rm -f uniwidth/test-u16-strwidth.$(OBJEXT)
+ -rm -f uniwidth/test-u16-width.$(OBJEXT)
+ -rm -f uniwidth/test-u32-strwidth.$(OBJEXT)
+ -rm -f uniwidth/test-u32-width.$(OBJEXT)
+ -rm -f uniwidth/test-u8-strwidth.$(OBJEXT)
+ -rm -f uniwidth/test-u8-width.$(OBJEXT)
+ -rm -f uniwidth/test-uc_width.$(OBJEXT)
+ -rm -f uniwidth/test-uc_width2.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exitfail.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setenv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-alloca-opt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-array-mergesort.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-ctype.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-strcasecmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-strncasecmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-environ.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-errno.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-frexpl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fseterr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-iconv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-isnand-nolibm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-isnanf-nolibm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-isnanl-nolibm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-locale.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-localename.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-malloca.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-math.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbrtowc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbsinit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-memchr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-printf-frexp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-printf-frexpl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-signbit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stdbool.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stdint.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stdlib.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-strerror.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-striconveh.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-striconveha.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-string.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-unistd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-wchar.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-wctype.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-wcwidth.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unsetenv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wctob.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xalloc-die.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-cased.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-ignorable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-locale-language.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u16-casecmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u16-casecoll.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u16-casefold.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u16-is-cased.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u16-is-casefolded.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u16-is-lowercase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u16-is-titlecase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u16-is-uppercase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u16-tolower.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u16-totitle.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u16-toupper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u32-casecmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u32-casecoll.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u32-casefold.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u32-is-cased.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u32-is-casefolded.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u32-is-lowercase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u32-is-titlecase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u32-is-uppercase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u32-tolower.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u32-totitle.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u32-toupper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u8-casecmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u8-casecoll.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u8-casefold.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u8-is-cased.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u8-is-casefolded.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u8-is-lowercase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u8-is-titlecase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u8-is-uppercase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u8-tolower.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u8-totitle.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-u8-toupper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-uc_tolower.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-uc_totitle.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-uc_toupper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-ulc-casecmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unicase/$(DEPDIR)/test-ulc-casecoll.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniconv/$(DEPDIR)/test-u16-conv-from-enc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniconv/$(DEPDIR)/test-u16-conv-to-enc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniconv/$(DEPDIR)/test-u16-strconv-from-enc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniconv/$(DEPDIR)/test-u16-strconv-to-enc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniconv/$(DEPDIR)/test-u32-conv-from-enc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniconv/$(DEPDIR)/test-u32-conv-to-enc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniconv/$(DEPDIR)/test-u32-strconv-from-enc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniconv/$(DEPDIR)/test-u32-strconv-to-enc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniconv/$(DEPDIR)/test-u8-conv-from-enc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniconv/$(DEPDIR)/test-u8-conv-to-enc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniconv/$(DEPDIR)/test-u8-strconv-from-enc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniconv/$(DEPDIR)/test-u8-strconv-to-enc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-bidi_byname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-bidi_name.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-bidi_of.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-bidi_test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-block_list.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-block_of.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-block_test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_C.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Cc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Cf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Cn.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Co.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Cs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_L.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Ll.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Lm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Lo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Lt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Lu.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_M.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Mc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Me.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Mn.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_N.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Nd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Nl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_No.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_P.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Pc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Pd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Pe.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Pf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Pi.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Po.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Ps.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_S.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Sc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Sk.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Sm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_So.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Z.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Zl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Zp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_Zs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_and.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_and_not.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_byname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_name.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_none.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_of.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_or.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-categ_test_withtable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-combining.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-ctype_alnum.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-ctype_alpha.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-ctype_blank.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-ctype_cntrl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-ctype_digit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-ctype_graph.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-ctype_lower.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-ctype_print.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-ctype_punct.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-ctype_space.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-ctype_upper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-ctype_xdigit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-decdigit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-digit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-mirror.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-numeric.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_alphabetic.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_ascii_hex_digit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_bidi_arabic_digit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_bidi_arabic_right_to_left.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_bidi_block_separator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_bidi_boundary_neutral.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_bidi_common_separator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_bidi_control.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_bidi_embedding_or_override.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_bidi_eur_num_separator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_bidi_eur_num_terminator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_bidi_european_digit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_bidi_hebrew_right_to_left.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_bidi_left_to_right.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_bidi_non_spacing_mark.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_bidi_other_neutral.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_bidi_pdf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_bidi_segment_separator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_bidi_whitespace.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_byname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_combining.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_composite.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_currency_symbol.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_dash.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_decimal_digit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_default_ignorable_code_point.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_deprecated.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_diacritic.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_extender.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_format_control.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_grapheme_base.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_grapheme_extend.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_grapheme_link.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_hex_digit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_hyphen.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_id_continue.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_id_start.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_ideographic.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_ids_binary_operator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_ids_trinary_operator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_ignorable_control.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_iso_control.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_join_control.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_left_of_pair.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_line_separator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_logical_order_exception.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_lowercase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_math.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_non_break.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_not_a_character.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_numeric.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_other_alphabetic.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_other_default_ignorable_code_point.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_other_grapheme_extend.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_other_id_continue.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_other_id_start.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_other_lowercase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_other_math.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_other_uppercase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_paired_punctuation.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_paragraph_separator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_pattern_syntax.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_pattern_white_space.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_private_use.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_punctuation.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_quotation_mark.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_radical.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_sentence_terminal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_soft_dotted.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_space.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_terminal_punctuation.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_titlecase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_unassigned_code_value.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_unified_ideograph.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_uppercase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_variation_selector.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_white_space.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_xid_continue.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_xid_start.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_zero_width.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-scripts.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-sy_c_ident.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-sy_c_whitespace.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-sy_java_ident.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-sy_java_whitespace.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unilbrk/$(DEPDIR)/test-u16-possible-linebreaks.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unilbrk/$(DEPDIR)/test-u16-width-linebreaks.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unilbrk/$(DEPDIR)/test-u32-possible-linebreaks.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unilbrk/$(DEPDIR)/test-u32-width-linebreaks.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unilbrk/$(DEPDIR)/test-u8-possible-linebreaks.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unilbrk/$(DEPDIR)/test-u8-width-linebreaks.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unilbrk/$(DEPDIR)/test-ulc-possible-linebreaks.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unilbrk/$(DEPDIR)/test-ulc-width-linebreaks.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniname/$(DEPDIR)/test-uninames.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-canonical-decomposition.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-compat-decomposition.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-composition.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-decomposing-form.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-decomposition.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-nfc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-nfd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-nfkc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-nfkd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u16-nfc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u16-nfd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u16-nfkc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u16-nfkd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u16-normcmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u16-normcoll.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u32-nfc-big.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u32-nfc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u32-nfd-big.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u32-nfd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u32-nfkc-big.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u32-nfkc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u32-nfkd-big.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u32-nfkd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u32-normalize-big.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u32-normcmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u32-normcoll.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u8-nfc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u8-nfd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u8-nfkc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u8-nfkd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u8-normcmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-u8-normcoll.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-uninorm-filter-nfc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u16-asnprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u16-vasnprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u16-vasnprintf2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u16-vasnprintf3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u16-vasprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u16-vsnprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u16-vsprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u32-asnprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u32-vasnprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u32-vasnprintf2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u32-vasnprintf3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u32-vasprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u32-vsnprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u32-vsprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u8-asnprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u8-vasnprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u8-vasnprintf2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u8-vasnprintf3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u8-vasprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u8-vsnprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-u8-vsprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-ulc-asnprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-ulc-vasnprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-ulc-vasnprintf2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-ulc-vasnprintf3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-ulc-vasprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-ulc-vsnprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@unistdio/$(DEPDIR)/test-ulc-vsprintf1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniwbrk/$(DEPDIR)/test-u16-wordbreaks.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniwbrk/$(DEPDIR)/test-u32-wordbreaks.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniwbrk/$(DEPDIR)/test-u8-wordbreaks.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniwbrk/$(DEPDIR)/test-ulc-wordbreaks.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniwidth/$(DEPDIR)/test-u16-strwidth.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniwidth/$(DEPDIR)/test-u16-width.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniwidth/$(DEPDIR)/test-u32-strwidth.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniwidth/$(DEPDIR)/test-u32-width.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniwidth/$(DEPDIR)/test-u8-strwidth.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniwidth/$(DEPDIR)/test-u8-width.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniwidth/$(DEPDIR)/test-uc_width.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@uniwidth/$(DEPDIR)/test-uc_width2.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_LIBRARIES) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS)
+installdirs: installdirs-recursive
+installdirs-am:
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+ -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f unicase/$(DEPDIR)/$(am__dirstamp)
+ -rm -f unicase/$(am__dirstamp)
+ -rm -f uniconv/$(DEPDIR)/$(am__dirstamp)
+ -rm -f uniconv/$(am__dirstamp)
+ -rm -f unictype/$(DEPDIR)/$(am__dirstamp)
+ -rm -f unictype/$(am__dirstamp)
+ -rm -f unilbrk/$(DEPDIR)/$(am__dirstamp)
+ -rm -f unilbrk/$(am__dirstamp)
+ -rm -f uniname/$(DEPDIR)/$(am__dirstamp)
+ -rm -f uniname/$(am__dirstamp)
+ -rm -f uninorm/$(DEPDIR)/$(am__dirstamp)
+ -rm -f uninorm/$(am__dirstamp)
+ -rm -f unistdio/$(DEPDIR)/$(am__dirstamp)
+ -rm -f unistdio/$(am__dirstamp)
+ -rm -f uniwbrk/$(DEPDIR)/$(am__dirstamp)
+ -rm -f uniwbrk/$(am__dirstamp)
+ -rm -f uniwidth/$(DEPDIR)/$(am__dirstamp)
+ -rm -f uniwidth/$(am__dirstamp)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
+ clean-libtool clean-local clean-noinstLIBRARIES \
+ clean-noinstPROGRAMS mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -rf ./$(DEPDIR) unicase/$(DEPDIR) uniconv/$(DEPDIR) unictype/$(DEPDIR) unilbrk/$(DEPDIR) uniname/$(DEPDIR) uninorm/$(DEPDIR) unistdio/$(DEPDIR) uniwbrk/$(DEPDIR) uniwidth/$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -rf ./$(DEPDIR) unicase/$(DEPDIR) uniconv/$(DEPDIR) unictype/$(DEPDIR) unilbrk/$(DEPDIR) uniname/$(DEPDIR) uninorm/$(DEPDIR) unistdio/$(DEPDIR) uniwbrk/$(DEPDIR) uniwidth/$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool mostlyclean-local
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
+ check-am ctags-recursive install install-am install-strip \
+ tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-TESTS check-am clean \
+ clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
+ clean-libtool clean-local clean-noinstLIBRARIES \
+ clean-noinstPROGRAMS ctags ctags-recursive distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool mostlyclean-local pdf pdf-am ps ps-am tags \
+ tags-recursive uninstall uninstall-am
+
+
+# We need the following in order to create <locale.h> when the system
+# doesn't have one that provides all definitions.
+locale.h: locale.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_LOCALE_H''@|$(NEXT_LOCALE_H)|g' \
+ < $(srcdir)/locale.in.h; \
+ } > $@-t
+ mv $@-t $@
+
+# Clean up after Solaris cc.
+clean-local:
+ rm -rf SunWS_cache
+
+mostlyclean-local: mostlyclean-generic
+ @for dir in '' $(MOSTLYCLEANDIRS); do \
+ if test -n "$$dir" && test -d $$dir; then \
+ echo "rmdir $$dir"; rmdir $$dir; \
+ fi; \
+ done; \
+ :
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/error.c b/tests/error.c
new file mode 100644
index 00000000..3177bd5d
--- /dev/null
+++ b/tests/error.c
@@ -0,0 +1,338 @@
+/* Error handler for noninteractive utilities
+ Copyright (C) 1990-1998, 2000-2007 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
+
+#if !_LIBC
+# include <config.h>
+#endif
+
+#include "error.h"
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#if !_LIBC && ENABLE_NLS
+# include "gettext.h"
+# define _(msgid) gettext (msgid)
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+# include <stdbool.h>
+# include <stdint.h>
+# include <wchar.h>
+# define mbsrtowcs __mbsrtowcs
+#endif
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#ifndef _
+# define _(String) String
+#endif
+
+/* If NULL, error will flush stdout, then print on stderr the program
+ name, a colon and a space. Otherwise, error will call this
+ function without parameters instead. */
+void (*error_print_progname) (void);
+
+/* This variable is incremented each time `error' is called. */
+unsigned int error_message_count;
+
+#ifdef _LIBC
+/* In the GNU C library, there is a predefined variable for this. */
+
+# define program_name program_invocation_name
+# include <errno.h>
+# include <limits.h>
+# include <libio/libioP.h>
+
+/* In GNU libc we want do not want to use the common name `error' directly.
+ Instead make it a weak alias. */
+extern void __error (int status, int errnum, const char *message, ...)
+ __attribute__ ((__format__ (__printf__, 3, 4)));
+extern void __error_at_line (int status, int errnum, const char *file_name,
+ unsigned int line_number, const char *message,
+ ...)
+ __attribute__ ((__format__ (__printf__, 5, 6)));;
+# define error __error
+# define error_at_line __error_at_line
+
+# include <libio/iolibio.h>
+# define fflush(s) INTUSE(_IO_fflush) (s)
+# undef putc
+# define putc(c, fp) INTUSE(_IO_putc) (c, fp)
+
+# include <bits/libc-lock.h>
+
+#else /* not _LIBC */
+
+# if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P
+# ifndef HAVE_DECL_STRERROR_R
+"this configure-time declaration test was not run"
+# endif
+char *strerror_r ();
+# endif
+
+/* The calling program should define program_name and set it to the
+ name of the executing program. */
+extern char *program_name;
+
+# if HAVE_STRERROR_R || defined strerror_r
+# define __strerror_r strerror_r
+# endif /* HAVE_STRERROR_R || defined strerror_r */
+#endif /* not _LIBC */
+
+static void
+print_errno_message (int errnum)
+{
+ char const *s;
+
+#if defined HAVE_STRERROR_R || _LIBC
+ char errbuf[1024];
+# if STRERROR_R_CHAR_P || _LIBC
+ s = __strerror_r (errnum, errbuf, sizeof errbuf);
+# else
+ if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0)
+ s = errbuf;
+ else
+ s = 0;
+# endif
+#else
+ s = strerror (errnum);
+#endif
+
+#if !_LIBC
+ if (! s)
+ s = _("Unknown system error");
+#endif
+
+#if _LIBC
+ __fxprintf (NULL, ": %s", s);
+#else
+ fprintf (stderr, ": %s", s);
+#endif
+}
+
+static void
+error_tail (int status, int errnum, const char *message, va_list args)
+{
+#if _LIBC
+ if (_IO_fwide (stderr, 0) > 0)
+ {
+# define ALLOCA_LIMIT 2000
+ size_t len = strlen (message) + 1;
+ wchar_t *wmessage = NULL;
+ mbstate_t st;
+ size_t res;
+ const char *tmp;
+ bool use_malloc = false;
+
+ while (1)
+ {
+ if (__libc_use_alloca (len * sizeof (wchar_t)))
+ wmessage = (wchar_t *) alloca (len * sizeof (wchar_t));
+ else
+ {
+ if (!use_malloc)
+ wmessage = NULL;
+
+ wchar_t *p = (wchar_t *) realloc (wmessage,
+ len * sizeof (wchar_t));
+ if (p == NULL)
+ {
+ free (wmessage);
+ fputws_unlocked (L"out of memory\n", stderr);
+ return;
+ }
+ wmessage = p;
+ use_malloc = true;
+ }
+
+ memset (&st, '\0', sizeof (st));
+ tmp = message;
+
+ res = mbsrtowcs (wmessage, &tmp, len, &st);
+ if (res != len)
+ break;
+
+ if (__builtin_expect (len >= SIZE_MAX / 2, 0))
+ {
+ /* This really should not happen if everything is fine. */
+ res = (size_t) -1;
+ break;
+ }
+
+ len *= 2;
+ }
+
+ if (res == (size_t) -1)
+ {
+ /* The string cannot be converted. */
+ if (use_malloc)
+ {
+ free (wmessage);
+ use_malloc = false;
+ }
+ wmessage = (wchar_t *) L"???";
+ }
+
+ __vfwprintf (stderr, wmessage, args);
+
+ if (use_malloc)
+ free (wmessage);
+ }
+ else
+#endif
+ vfprintf (stderr, message, args);
+ va_end (args);
+
+ ++error_message_count;
+ if (errnum)
+ print_errno_message (errnum);
+#if _LIBC
+ __fxprintf (NULL, "\n");
+#else
+ putc ('\n', stderr);
+#endif
+ fflush (stderr);
+ if (status)
+ exit (status);
+}
+
+
+/* Print the program name and error message MESSAGE, which is a printf-style
+ format string with optional args.
+ If ERRNUM is nonzero, print its corresponding system error message.
+ Exit with status STATUS if it is nonzero. */
+void
+error (int status, int errnum, const char *message, ...)
+{
+ va_list args;
+
+#if defined _LIBC && defined __libc_ptf_call
+ /* We do not want this call to be cut short by a thread
+ cancellation. Therefore disable cancellation for now. */
+ int state = PTHREAD_CANCEL_ENABLE;
+ __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
+ 0);
+#endif
+
+ fflush (stdout);
+#ifdef _LIBC
+ _IO_flockfile (stderr);
+#endif
+ if (error_print_progname)
+ (*error_print_progname) ();
+ else
+ {
+#if _LIBC
+ __fxprintf (NULL, "%s: ", program_name);
+#else
+ fprintf (stderr, "%s: ", program_name);
+#endif
+ }
+
+ va_start (args, message);
+ error_tail (status, errnum, message, args);
+
+#ifdef _LIBC
+ _IO_funlockfile (stderr);
+# ifdef __libc_ptf_call
+ __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
+# endif
+#endif
+}
+
+/* Sometimes we want to have at most one error per line. This
+ variable controls whether this mode is selected or not. */
+int error_one_per_line;
+
+void
+error_at_line (int status, int errnum, const char *file_name,
+ unsigned int line_number, const char *message, ...)
+{
+ va_list args;
+
+ if (error_one_per_line)
+ {
+ static const char *old_file_name;
+ static unsigned int old_line_number;
+
+ if (old_line_number == line_number
+ && (file_name == old_file_name
+ || strcmp (old_file_name, file_name) == 0))
+ /* Simply return and print nothing. */
+ return;
+
+ old_file_name = file_name;
+ old_line_number = line_number;
+ }
+
+#if defined _LIBC && defined __libc_ptf_call
+ /* We do not want this call to be cut short by a thread
+ cancellation. Therefore disable cancellation for now. */
+ int state = PTHREAD_CANCEL_ENABLE;
+ __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
+ 0);
+#endif
+
+ fflush (stdout);
+#ifdef _LIBC
+ _IO_flockfile (stderr);
+#endif
+ if (error_print_progname)
+ (*error_print_progname) ();
+ else
+ {
+#if _LIBC
+ __fxprintf (NULL, "%s:", program_name);
+#else
+ fprintf (stderr, "%s:", program_name);
+#endif
+ }
+
+#if _LIBC
+ __fxprintf (NULL, file_name != NULL ? "%s:%d: " : " ",
+ file_name, line_number);
+#else
+ fprintf (stderr, file_name != NULL ? "%s:%d: " : " ",
+ file_name, line_number);
+#endif
+
+ va_start (args, message);
+ error_tail (status, errnum, message, args);
+
+#ifdef _LIBC
+ _IO_funlockfile (stderr);
+# ifdef __libc_ptf_call
+ __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
+# endif
+#endif
+}
+
+#ifdef _LIBC
+/* Make the weak alias. */
+# undef error
+# undef error_at_line
+weak_alias (__error, error)
+weak_alias (__error_at_line, error_at_line)
+#endif
diff --git a/tests/error.h b/tests/error.h
new file mode 100644
index 00000000..6d496811
--- /dev/null
+++ b/tests/error.h
@@ -0,0 +1,65 @@
+/* Declaration for error-reporting function
+ Copyright (C) 1995, 1996, 1997, 2003, 2006, 2008 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _ERROR_H
+#define _ERROR_H 1
+
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later. */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
+# define __attribute__(Spec) /* empty */
+# endif
+/* The __-protected variants of `format' and `printf' attributes
+ are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
+# define __format__ format
+# define __printf__ printf
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Print a message with `fprintf (stderr, FORMAT, ...)';
+ if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
+ If STATUS is nonzero, terminate the program with `exit (STATUS)'. */
+
+extern void error (int __status, int __errnum, const char *__format, ...)
+ __attribute__ ((__format__ (__printf__, 3, 4)));
+
+extern void error_at_line (int __status, int __errnum, const char *__fname,
+ unsigned int __lineno, const char *__format, ...)
+ __attribute__ ((__format__ (__printf__, 5, 6)));
+
+/* If NULL, error will flush stdout, then print on stderr the program
+ name, a colon and a space. Otherwise, error will call this
+ function without parameters instead. */
+extern void (*error_print_progname) (void);
+
+/* This variable is incremented each time `error' is called. */
+extern unsigned int error_message_count;
+
+/* Sometimes we want to have at most one error per line. This
+ variable controls whether this mode is selected or not. */
+extern int error_one_per_line;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* error.h */
diff --git a/tests/exitfail.c b/tests/exitfail.c
new file mode 100644
index 00000000..6d1fe4ae
--- /dev/null
+++ b/tests/exitfail.c
@@ -0,0 +1,24 @@
+/* Failure exit status
+
+ Copyright (C) 2002, 2003, 2005, 2006, 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "exitfail.h"
+
+#include <stdlib.h>
+
+int volatile exit_failure = EXIT_FAILURE;
diff --git a/tests/exitfail.h b/tests/exitfail.h
new file mode 100644
index 00000000..713f2591
--- /dev/null
+++ b/tests/exitfail.h
@@ -0,0 +1,18 @@
+/* Failure exit status
+
+ Copyright (C) 2002 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+extern int volatile exit_failure;
diff --git a/tests/gettext.h b/tests/gettext.h
new file mode 100644
index 00000000..8cf2dca0
--- /dev/null
+++ b/tests/gettext.h
@@ -0,0 +1,279 @@
+/* Convenience header for conditional use of GNU <libintl.h>.
+ Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009 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 3, 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. */
+
+#ifndef _LIBGETTEXT_H
+#define _LIBGETTEXT_H 1
+
+/* NLS can be disabled through the configure --disable-nls option. */
+#if ENABLE_NLS
+
+/* Get declarations of GNU message catalog functions. */
+# include <libintl.h>
+
+/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by
+ the gettext() and ngettext() macros. This is an alternative to calling
+ textdomain(), and is useful for libraries. */
+# ifdef DEFAULT_TEXT_DOMAIN
+# undef gettext
+# define gettext(Msgid) \
+ dgettext (DEFAULT_TEXT_DOMAIN, Msgid)
+# undef ngettext
+# define ngettext(Msgid1, Msgid2, N) \
+ dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N)
+# endif
+
+#else
+
+/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
+ chokes if dcgettext is defined as a macro. So include it now, to make
+ later inclusions of <locale.h> a NOP. We don't include <libintl.h>
+ as well because people using "gettext.h" will not include <libintl.h>,
+ and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
+ is OK. */
+#if defined(__sun)
+# include <locale.h>
+#endif
+
+/* Many header files from the libstdc++ coming with g++ 3.3 or newer include
+ <libintl.h>, which chokes if dcgettext is defined as a macro. So include
+ it now, to make later inclusions of <libintl.h> a NOP. */
+#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
+# include <cstdlib>
+# if (__GLIBC__ >= 2) || _GLIBCXX_HAVE_LIBINTL_H
+# include <libintl.h>
+# endif
+#endif
+
+/* Disabled NLS.
+ The casts to 'const char *' serve the purpose of producing warnings
+ for invalid uses of the value returned from these functions.
+ On pre-ANSI systems without 'const', the config.h file is supposed to
+ contain "#define const". */
+# undef gettext
+# define gettext(Msgid) ((const char *) (Msgid))
+# undef dgettext
+# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))
+# undef dcgettext
+# define dcgettext(Domainname, Msgid, Category) \
+ ((void) (Category), dgettext (Domainname, Msgid))
+# undef ngettext
+# define ngettext(Msgid1, Msgid2, N) \
+ ((N) == 1 \
+ ? ((void) (Msgid2), (const char *) (Msgid1)) \
+ : ((void) (Msgid1), (const char *) (Msgid2)))
+# undef dngettext
+# define dngettext(Domainname, Msgid1, Msgid2, N) \
+ ((void) (Domainname), ngettext (Msgid1, Msgid2, N))
+# undef dcngettext
+# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
+ ((void) (Category), dngettext(Domainname, Msgid1, Msgid2, N))
+# undef textdomain
+# define textdomain(Domainname) ((const char *) (Domainname))
+# undef bindtextdomain
+# define bindtextdomain(Domainname, Dirname) \
+ ((void) (Domainname), (const char *) (Dirname))
+# undef bind_textdomain_codeset
+# define bind_textdomain_codeset(Domainname, Codeset) \
+ ((void) (Domainname), (const char *) (Codeset))
+
+#endif
+
+/* A pseudo function call that serves as a marker for the automated
+ extraction of messages, but does not call gettext(). The run-time
+ translation is done at a different place in the code.
+ The argument, String, should be a literal string. Concatenated strings
+ and other string expressions won't work.
+ The macro's expansion is not parenthesized, so that it is suitable as
+ initializer for static 'char[]' or 'const char[]' variables. */
+#define gettext_noop(String) String
+
+/* The separator between msgctxt and msgid in a .mo file. */
+#define GETTEXT_CONTEXT_GLUE "\004"
+
+/* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a
+ MSGID. MSGCTXT and MSGID must be string literals. MSGCTXT should be
+ short and rarely need to change.
+ The letter 'p' stands for 'particular' or 'special'. */
+#ifdef DEFAULT_TEXT_DOMAIN
+# define pgettext(Msgctxt, Msgid) \
+ pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#else
+# define pgettext(Msgctxt, Msgid) \
+ pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#endif
+#define dpgettext(Domainname, Msgctxt, Msgid) \
+ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#define dcpgettext(Domainname, Msgctxt, Msgid, Category) \
+ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category)
+#ifdef DEFAULT_TEXT_DOMAIN
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+ npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#else
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+ npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#endif
+#define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
+ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \
+ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+pgettext_aux (const char *domain,
+ const char *msg_ctxt_id, const char *msgid,
+ int category)
+{
+ const char *translation = dcgettext (domain, msg_ctxt_id, category);
+ if (translation == msg_ctxt_id)
+ return msgid;
+ else
+ return translation;
+}
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+npgettext_aux (const char *domain,
+ const char *msg_ctxt_id, const char *msgid,
+ const char *msgid_plural, unsigned long int n,
+ int category)
+{
+ const char *translation =
+ dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+ if (translation == msg_ctxt_id || translation == msgid_plural)
+ return (n == 1 ? msgid : msgid_plural);
+ else
+ return translation;
+}
+
+/* The same thing extended for non-constant arguments. Here MSGCTXT and MSGID
+ can be arbitrary expressions. But for string literals these macros are
+ less efficient than those above. */
+
+#include <string.h>
+
+#define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
+ (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \
+ /* || __STDC_VERSION__ >= 199901L */ )
+
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+#include <stdlib.h>
+#endif
+
+#define pgettext_expr(Msgctxt, Msgid) \
+ dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES)
+#define dpgettext_expr(Domainname, Msgctxt, Msgid) \
+ dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+dcpgettext_expr (const char *domain,
+ const char *msgctxt, const char *msgid,
+ int category)
+{
+ size_t msgctxt_len = strlen (msgctxt) + 1;
+ size_t msgid_len = strlen (msgid) + 1;
+ const char *translation;
+#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ char msg_ctxt_id[msgctxt_len + msgid_len];
+#else
+ char buf[1024];
+ char *msg_ctxt_id =
+ (msgctxt_len + msgid_len <= sizeof (buf)
+ ? buf
+ : (char *) malloc (msgctxt_len + msgid_len));
+ if (msg_ctxt_id != NULL)
+#endif
+ {
+ memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
+ msg_ctxt_id[msgctxt_len - 1] = '\004';
+ memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
+ translation = dcgettext (domain, msg_ctxt_id, category);
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ if (msg_ctxt_id != buf)
+ free (msg_ctxt_id);
+#endif
+ if (translation != msg_ctxt_id)
+ return translation;
+ }
+ return msgid;
+}
+
+#define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \
+ dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
+#define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
+ dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+dcnpgettext_expr (const char *domain,
+ const char *msgctxt, const char *msgid,
+ const char *msgid_plural, unsigned long int n,
+ int category)
+{
+ size_t msgctxt_len = strlen (msgctxt) + 1;
+ size_t msgid_len = strlen (msgid) + 1;
+ const char *translation;
+#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ char msg_ctxt_id[msgctxt_len + msgid_len];
+#else
+ char buf[1024];
+ char *msg_ctxt_id =
+ (msgctxt_len + msgid_len <= sizeof (buf)
+ ? buf
+ : (char *) malloc (msgctxt_len + msgid_len));
+ if (msg_ctxt_id != NULL)
+#endif
+ {
+ memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
+ msg_ctxt_id[msgctxt_len - 1] = '\004';
+ memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
+ translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ if (msg_ctxt_id != buf)
+ free (msg_ctxt_id);
+#endif
+ if (!(translation == msg_ctxt_id || translation == msgid_plural))
+ return translation;
+ }
+ return (n == 1 ? msgid : msgid_plural);
+}
+
+#endif /* _LIBGETTEXT_H */
diff --git a/tests/intprops.h b/tests/intprops.h
new file mode 100644
index 00000000..002161ee
--- /dev/null
+++ b/tests/intprops.h
@@ -0,0 +1,77 @@
+/* intprops.h -- properties of integer types
+
+ Copyright (C) 2001, 2002, 2003, 2004, 2005 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Paul Eggert. */
+
+#include <limits.h>
+
+/* The extra casts in the following macros work around compiler bugs,
+ e.g., in Cray C 5.0.3.0. */
+
+/* True if the arithmetic type T is an integer type. bool counts as
+ an integer. */
+#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
+
+/* True if negative values of the signed integer type T use two's
+ complement, ones' complement, or signed magnitude representation,
+ respectively. Much GNU code assumes two's complement, but some
+ people like to be portable to all possible C hosts. */
+#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
+#define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
+#define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
+
+/* True if the arithmetic type T is signed. */
+#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+
+/* The maximum and minimum values for the integer type T. These
+ macros have undefined behavior if T is signed and has padding bits.
+ If this is a problem for you, please let us know how to fix it for
+ your host. */
+#define TYPE_MINIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) 0 \
+ : TYPE_SIGNED_MAGNITUDE (t) \
+ ? ~ (t) 0 \
+ : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+#define TYPE_MAXIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) -1 \
+ : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+
+/* Return zero if T can be determined to be an unsigned type.
+ Otherwise, return 1.
+ When compiling with GCC, INT_STRLEN_BOUND uses this macro to obtain a
+ tighter bound. Otherwise, it overestimates the true bound by one byte
+ when applied to unsigned types of size 2, 4, 16, ... bytes.
+ The symbol signed_type_or_expr__ is private to this header file. */
+#if __GNUC__ >= 2
+# define signed_type_or_expr__(t) TYPE_SIGNED (__typeof__ (t))
+#else
+# define signed_type_or_expr__(t) 1
+#endif
+
+/* Bound on length of the string representing an integer type or expression T.
+ Subtract 1 for the sign bit if T is signed; log10 (2.0) < 146/485;
+ add 1 for integer division truncation; add 1 more for a minus sign
+ if needed. */
+#define INT_STRLEN_BOUND(t) \
+ ((sizeof (t) * CHAR_BIT - signed_type_or_expr__ (t)) * 146 / 485 \
+ + signed_type_or_expr__ (t) + 1)
+
+/* Bound on buffer size needed to represent an integer type or expression T,
+ including the terminating null. */
+#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1)
diff --git a/tests/locale.in.h b/tests/locale.in.h
new file mode 100644
index 00000000..10629f6c
--- /dev/null
+++ b/tests/locale.in.h
@@ -0,0 +1,36 @@
+/* A POSIX <locale.h>.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _GL_LOCALE_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+/* The include_next requires a split double-inclusion guard. */
+#@INCLUDE_NEXT@ @NEXT_LOCALE_H@
+
+#ifndef _GL_LOCALE_H
+#define _GL_LOCALE_H
+
+/* The LC_MESSAGES locale category is specified in POSIX, but not in ISO C.
+ On systems that don't define it, use the same value as GNU libintl. */
+#if !defined LC_MESSAGES
+# define LC_MESSAGES 1729
+#endif
+
+#endif /* _GL_LOCALE_H */
+#endif /* _GL_LOCALE_H */
diff --git a/tests/nan.h b/tests/nan.h
new file mode 100644
index 00000000..8aa8bf00
--- /dev/null
+++ b/tests/nan.h
@@ -0,0 +1,60 @@
+/* Macros for not-a-number.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+
+/* NaNf () returns a 'float' not-a-number. */
+
+/* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */
+#ifdef __DECC
+static float
+NaNf ()
+{
+ static float zero = 0.0f;
+ return zero / zero;
+}
+#else
+# define NaNf() (0.0f / 0.0f)
+#endif
+
+
+/* NaNd () returns a 'double' not-a-number. */
+
+/* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */
+#ifdef __DECC
+static double
+NaNd ()
+{
+ static double zero = 0.0;
+ return zero / zero;
+}
+#else
+# define NaNd() (0.0 / 0.0)
+#endif
+
+
+/* NaNl () returns a 'long double' not-a-number. */
+
+/* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the
+ runtime type conversion. */
+#ifdef __sgi
+static long double NaNl ()
+{
+ double zero = 0.0;
+ return zero / zero;
+}
+#else
+# define NaNl() (0.0L / 0.0L)
+#endif
diff --git a/tests/progname.c b/tests/progname.c
new file mode 100644
index 00000000..9854b5e7
--- /dev/null
+++ b/tests/progname.c
@@ -0,0 +1,63 @@
+/* Program name management.
+ Copyright (C) 2001-2003, 2005-2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <haible@clisp.cons.org>, 2001.
+
+ 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+
+#include <config.h>
+
+/* Specification. */
+#undef ENABLE_RELOCATABLE /* avoid defining set_program_name as a macro */
+#include "progname.h"
+
+#include <string.h>
+
+
+/* String containing name the program is called with.
+ To be initialized by main(). */
+const char *program_name = NULL;
+
+/* Set program_name, based on argv[0]. */
+void
+set_program_name (const char *argv0)
+{
+ /* libtool creates a temporary executable whose name is sometimes prefixed
+ with "lt-" (depends on the platform). It also makes argv[0] absolute.
+ But the name of the temporary executable is a detail that should not be
+ visible to the end user and to the test suite.
+ Remove this "<dirname>/.libs/" or "<dirname>/.libs/lt-" prefix here. */
+ const char *slash;
+ const char *base;
+
+ slash = strrchr (argv0, '/');
+ base = (slash != NULL ? slash + 1 : argv0);
+ if (base - argv0 >= 7 && strncmp (base - 7, "/.libs/", 7) == 0)
+ {
+ argv0 = base;
+ if (strncmp (base, "lt-", 3) == 0)
+ argv0 = base + 3;
+ }
+
+ /* But don't strip off a leading <dirname>/ in general, because when the user
+ runs
+ /some/hidden/place/bin/cp foo foo
+ he should get the error message
+ /some/hidden/place/bin/cp: `foo' and `foo' are the same file
+ not
+ cp: `foo' and `foo' are the same file
+ */
+
+ program_name = argv0;
+}
diff --git a/tests/progname.h b/tests/progname.h
new file mode 100644
index 00000000..82615c6b
--- /dev/null
+++ b/tests/progname.h
@@ -0,0 +1,60 @@
+/* Program name management.
+ Copyright (C) 2001-2004, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <haible@clisp.cons.org>, 2001.
+
+ 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _PROGNAME_H
+#define _PROGNAME_H
+
+/* Programs using this file should do the following in main():
+ set_program_name (argv[0]);
+ */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* String containing name the program is called with. */
+extern const char *program_name;
+
+/* Set program_name, based on argv[0]. */
+extern void set_program_name (const char *argv0);
+
+#if ENABLE_RELOCATABLE
+
+/* Set program_name, based on argv[0], and original installation prefix and
+ directory, for relocatability. */
+extern void set_program_name_and_installdir (const char *argv0,
+ const char *orig_installprefix,
+ const char *orig_installdir);
+#undef set_program_name
+#define set_program_name(ARG0) \
+ set_program_name_and_installdir (ARG0, INSTALLPREFIX, INSTALLDIR)
+
+/* Return the full pathname of the current executable, based on the earlier
+ call to set_program_name_and_installdir. Return NULL if unknown. */
+extern char *get_full_program_name (void);
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _PROGNAME_H */
diff --git a/tests/setenv.c b/tests/setenv.c
new file mode 100644
index 00000000..83b52b88
--- /dev/null
+++ b/tests/setenv.c
@@ -0,0 +1,330 @@
+/* Copyright (C) 1992,1995-1999,2000-2003,2005-2008 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#if !_LIBC
+# include <config.h>
+#endif
+#include <alloca.h>
+
+/* Specification. */
+#include <stdlib.h>
+
+#include <errno.h>
+#ifndef __set_errno
+# define __set_errno(ev) ((errno) = (ev))
+#endif
+
+#include <string.h>
+#if _LIBC || HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#if _LIBC || !HAVE_SETENV
+
+#if !_LIBC
+# include "malloca.h"
+#endif
+
+#if !_LIBC
+# define __environ environ
+#endif
+
+#if _LIBC
+/* This lock protects against simultaneous modifications of `environ'. */
+# include <bits/libc-lock.h>
+__libc_lock_define_initialized (static, envlock)
+# define LOCK __libc_lock_lock (envlock)
+# define UNLOCK __libc_lock_unlock (envlock)
+#else
+# define LOCK
+# define UNLOCK
+#endif
+
+/* In the GNU C library we must keep the namespace clean. */
+#ifdef _LIBC
+# define setenv __setenv
+# define clearenv __clearenv
+# define tfind __tfind
+# define tsearch __tsearch
+#endif
+
+/* In the GNU C library implementation we try to be more clever and
+ allow arbitrarily many changes of the environment given that the used
+ values are from a small set. Outside glibc this will eat up all
+ memory after a while. */
+#if defined _LIBC || (defined HAVE_SEARCH_H && defined HAVE_TSEARCH \
+ && defined __GNUC__)
+# define USE_TSEARCH 1
+# include <search.h>
+typedef int (*compar_fn_t) (const void *, const void *);
+
+/* This is a pointer to the root of the search tree with the known
+ values. */
+static void *known_values;
+
+# define KNOWN_VALUE(Str) \
+ ({ \
+ void *value = tfind (Str, &known_values, (compar_fn_t) strcmp); \
+ value != NULL ? *(char **) value : NULL; \
+ })
+# define STORE_VALUE(Str) \
+ tsearch (Str, &known_values, (compar_fn_t) strcmp)
+
+#else
+# undef USE_TSEARCH
+
+# define KNOWN_VALUE(Str) NULL
+# define STORE_VALUE(Str) do { } while (0)
+
+#endif
+
+
+/* If this variable is not a null pointer we allocated the current
+ environment. */
+static char **last_environ;
+
+
+/* This function is used by `setenv' and `putenv'. The difference between
+ the two functions is that for the former must create a new string which
+ is then placed in the environment, while the argument of `putenv'
+ must be used directly. This is all complicated by the fact that we try
+ to reuse values once generated for a `setenv' call since we can never
+ free the strings. */
+int
+__add_to_environ (const char *name, const char *value, const char *combined,
+ int replace)
+{
+ register char **ep;
+ register size_t size;
+ const size_t namelen = strlen (name);
+ const size_t vallen = value != NULL ? strlen (value) + 1 : 0;
+
+ LOCK;
+
+ /* We have to get the pointer now that we have the lock and not earlier
+ since another thread might have created a new environment. */
+ ep = __environ;
+
+ size = 0;
+ if (ep != NULL)
+ {
+ for (; *ep != NULL; ++ep)
+ if (!strncmp (*ep, name, namelen) && (*ep)[namelen] == '=')
+ break;
+ else
+ ++size;
+ }
+
+ if (ep == NULL || *ep == NULL)
+ {
+ char **new_environ;
+#ifdef USE_TSEARCH
+ char *new_value;
+#endif
+
+ /* We allocated this space; we can extend it. */
+ new_environ =
+ (char **) (last_environ == NULL
+ ? malloc ((size + 2) * sizeof (char *))
+ : realloc (last_environ, (size + 2) * sizeof (char *)));
+ if (new_environ == NULL)
+ {
+ UNLOCK;
+ return -1;
+ }
+
+ /* If the whole entry is given add it. */
+ if (combined != NULL)
+ /* We must not add the string to the search tree since it belongs
+ to the user. */
+ new_environ[size] = (char *) combined;
+ else
+ {
+ /* See whether the value is already known. */
+#ifdef USE_TSEARCH
+# ifdef _LIBC
+ new_value = (char *) alloca (namelen + 1 + vallen);
+ __mempcpy (__mempcpy (__mempcpy (new_value, name, namelen), "=", 1),
+ value, vallen);
+# else
+ new_value = (char *) malloca (namelen + 1 + vallen);
+ if (new_value == NULL)
+ {
+ __set_errno (ENOMEM);
+ UNLOCK;
+ return -1;
+ }
+ memcpy (new_value, name, namelen);
+ new_value[namelen] = '=';
+ memcpy (&new_value[namelen + 1], value, vallen);
+# endif
+
+ new_environ[size] = KNOWN_VALUE (new_value);
+ if (new_environ[size] == NULL)
+#endif
+ {
+ new_environ[size] = (char *) malloc (namelen + 1 + vallen);
+ if (new_environ[size] == NULL)
+ {
+#if defined USE_TSEARCH && !defined _LIBC
+ freea (new_value);
+#endif
+ __set_errno (ENOMEM);
+ UNLOCK;
+ return -1;
+ }
+
+#ifdef USE_TSEARCH
+ memcpy (new_environ[size], new_value, namelen + 1 + vallen);
+#else
+ memcpy (new_environ[size], name, namelen);
+ new_environ[size][namelen] = '=';
+ memcpy (&new_environ[size][namelen + 1], value, vallen);
+#endif
+ /* And save the value now. We cannot do this when we remove
+ the string since then we cannot decide whether it is a
+ user string or not. */
+ STORE_VALUE (new_environ[size]);
+ }
+#if defined USE_TSEARCH && !defined _LIBC
+ freea (new_value);
+#endif
+ }
+
+ if (__environ != last_environ)
+ memcpy ((char *) new_environ, (char *) __environ,
+ size * sizeof (char *));
+
+ new_environ[size + 1] = NULL;
+
+ last_environ = __environ = new_environ;
+ }
+ else if (replace)
+ {
+ char *np;
+
+ /* Use the user string if given. */
+ if (combined != NULL)
+ np = (char *) combined;
+ else
+ {
+#ifdef USE_TSEARCH
+ char *new_value;
+# ifdef _LIBC
+ new_value = alloca (namelen + 1 + vallen);
+ __mempcpy (__mempcpy (__mempcpy (new_value, name, namelen), "=", 1),
+ value, vallen);
+# else
+ new_value = malloca (namelen + 1 + vallen);
+ if (new_value == NULL)
+ {
+ __set_errno (ENOMEM);
+ UNLOCK;
+ return -1;
+ }
+ memcpy (new_value, name, namelen);
+ new_value[namelen] = '=';
+ memcpy (&new_value[namelen + 1], value, vallen);
+# endif
+
+ np = KNOWN_VALUE (new_value);
+ if (np == NULL)
+#endif
+ {
+ np = malloc (namelen + 1 + vallen);
+ if (np == NULL)
+ {
+#if defined USE_TSEARCH && !defined _LIBC
+ freea (new_value);
+#endif
+ __set_errno (ENOMEM);
+ UNLOCK;
+ return -1;
+ }
+
+#ifdef USE_TSEARCH
+ memcpy (np, new_value, namelen + 1 + vallen);
+#else
+ memcpy (np, name, namelen);
+ np[namelen] = '=';
+ memcpy (&np[namelen + 1], value, vallen);
+#endif
+ /* And remember the value. */
+ STORE_VALUE (np);
+ }
+#if defined USE_TSEARCH && !defined _LIBC
+ freea (new_value);
+#endif
+ }
+
+ *ep = np;
+ }
+
+ UNLOCK;
+
+ return 0;
+}
+
+int
+setenv (const char *name, const char *value, int replace)
+{
+ return __add_to_environ (name, value, NULL, replace);
+}
+
+/* The `clearenv' was planned to be added to POSIX.1 but probably
+ never made it. Nevertheless the POSIX.9 standard (POSIX bindings
+ for Fortran 77) requires this function. */
+int
+clearenv (void)
+{
+ LOCK;
+
+ if (__environ == last_environ && __environ != NULL)
+ {
+ /* We allocated this environment so we can free it. */
+ free (__environ);
+ last_environ = NULL;
+ }
+
+ /* Clear the environment pointer removes the whole environment. */
+ __environ = NULL;
+
+ UNLOCK;
+
+ return 0;
+}
+
+#ifdef _LIBC
+static void
+free_mem (void)
+{
+ /* Remove all traces. */
+ clearenv ();
+
+ /* Now remove the search tree. */
+ __tdestroy (known_values, free);
+ known_values = NULL;
+}
+text_set_element (__libc_subfreeres, free_mem);
+
+
+# undef setenv
+# undef clearenv
+weak_alias (__setenv, setenv)
+weak_alias (__clearenv, clearenv)
+#endif
+
+#endif /* _LIBC || !HAVE_SETENV */
diff --git a/tests/strerror.c b/tests/strerror.c
new file mode 100644
index 00000000..dfe6c25f
--- /dev/null
+++ b/tests/strerror.c
@@ -0,0 +1,347 @@
+/* strerror.c --- POSIX compatible system error routine
+
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <string.h>
+
+#if REPLACE_STRERROR
+
+# include <errno.h>
+# include <stdio.h>
+
+# if GNULIB_defined_ESOCK /* native Windows platforms */
+# if HAVE_WINSOCK2_H
+# include <winsock2.h>
+# endif
+# endif
+
+# include "intprops.h"
+
+# undef strerror
+# if ! HAVE_DECL_STRERROR
+# define strerror(n) NULL
+# endif
+
+char *
+rpl_strerror (int n)
+{
+ char const *msg = NULL;
+ /* These error messages are taken from glibc/sysdeps/gnu/errlist.c. */
+ switch (n)
+ {
+# if GNULIB_defined_ETXTBSY
+ case ETXTBSY:
+ msg = "Text file busy";
+ break;
+# endif
+
+# if GNULIB_defined_ESOCK /* native Windows platforms */
+ /* EWOULDBLOCK is the same as EAGAIN. */
+ case EINPROGRESS:
+ msg = "Operation now in progress";
+ break;
+ case EALREADY:
+ msg = "Operation already in progress";
+ break;
+ case ENOTSOCK:
+ msg = "Socket operation on non-socket";
+ break;
+ case EDESTADDRREQ:
+ msg = "Destination address required";
+ break;
+ case EMSGSIZE:
+ msg = "Message too long";
+ break;
+ case EPROTOTYPE:
+ msg = "Protocol wrong type for socket";
+ break;
+ case ENOPROTOOPT:
+ msg = "Protocol not available";
+ break;
+ case EPROTONOSUPPORT:
+ msg = "Protocol not supported";
+ break;
+ case ESOCKTNOSUPPORT:
+ msg = "Socket type not supported";
+ break;
+ case EOPNOTSUPP:
+ msg = "Operation not supported";
+ break;
+ case EPFNOSUPPORT:
+ msg = "Protocol family not supported";
+ break;
+ case EAFNOSUPPORT:
+ msg = "Address family not supported by protocol";
+ break;
+ case EADDRINUSE:
+ msg = "Address already in use";
+ break;
+ case EADDRNOTAVAIL:
+ msg = "Cannot assign requested address";
+ break;
+ case ENETDOWN:
+ msg = "Network is down";
+ break;
+ case ENETUNREACH:
+ msg = "Network is unreachable";
+ break;
+ case ENETRESET:
+ msg = "Network dropped connection on reset";
+ break;
+ case ECONNABORTED:
+ msg = "Software caused connection abort";
+ break;
+ case ECONNRESET:
+ msg = "Connection reset by peer";
+ break;
+ case ENOBUFS:
+ msg = "No buffer space available";
+ break;
+ case EISCONN:
+ msg = "Transport endpoint is already connected";
+ break;
+ case ENOTCONN:
+ msg = "Transport endpoint is not connected";
+ break;
+ case ESHUTDOWN:
+ msg = "Cannot send after transport endpoint shutdown";
+ break;
+ case ETOOMANYREFS:
+ msg = "Too many references: cannot splice";
+ break;
+ case ETIMEDOUT:
+ msg = "Connection timed out";
+ break;
+ case ECONNREFUSED:
+ msg = "Connection refused";
+ break;
+ case ELOOP:
+ msg = "Too many levels of symbolic links";
+ break;
+ case EHOSTDOWN:
+ msg = "Host is down";
+ break;
+ case EHOSTUNREACH:
+ msg = "No route to host";
+ break;
+ case EPROCLIM:
+ msg = "Too many processes";
+ break;
+ case EUSERS:
+ msg = "Too many users";
+ break;
+ case EDQUOT:
+ msg = "Disk quota exceeded";
+ break;
+ case ESTALE:
+ msg = "Stale NFS file handle";
+ break;
+ case EREMOTE:
+ msg = "Object is remote";
+ break;
+# if HAVE_WINSOCK2_H
+ /* WSA_INVALID_HANDLE maps to EBADF */
+ /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */
+ /* WSA_INVALID_PARAMETER maps to EINVAL */
+ case WSA_OPERATION_ABORTED:
+ msg = "Overlapped operation aborted";
+ break;
+ case WSA_IO_INCOMPLETE:
+ msg = "Overlapped I/O event object not in signaled state";
+ break;
+ case WSA_IO_PENDING:
+ msg = "Overlapped operations will complete later";
+ break;
+ /* WSAEINTR maps to EINTR */
+ /* WSAEBADF maps to EBADF */
+ /* WSAEACCES maps to EACCES */
+ /* WSAEFAULT maps to EFAULT */
+ /* WSAEINVAL maps to EINVAL */
+ /* WSAEMFILE maps to EMFILE */
+ /* WSAEWOULDBLOCK maps to EWOULDBLOCK */
+ /* WSAEINPROGRESS is EINPROGRESS */
+ /* WSAEALREADY is EALREADY */
+ /* WSAENOTSOCK is ENOTSOCK */
+ /* WSAEDESTADDRREQ is EDESTADDRREQ */
+ /* WSAEMSGSIZE is EMSGSIZE */
+ /* WSAEPROTOTYPE is EPROTOTYPE */
+ /* WSAENOPROTOOPT is ENOPROTOOPT */
+ /* WSAEPROTONOSUPPORT is EPROTONOSUPPORT */
+ /* WSAESOCKTNOSUPPORT is ESOCKTNOSUPPORT */
+ /* WSAEOPNOTSUPP is EOPNOTSUPP */
+ /* WSAEPFNOSUPPORT is EPFNOSUPPORT */
+ /* WSAEAFNOSUPPORT is EAFNOSUPPORT */
+ /* WSAEADDRINUSE is EADDRINUSE */
+ /* WSAEADDRNOTAVAIL is EADDRNOTAVAIL */
+ /* WSAENETDOWN is ENETDOWN */
+ /* WSAENETUNREACH is ENETUNREACH */
+ /* WSAENETRESET is ENETRESET */
+ /* WSAECONNABORTED is ECONNABORTED */
+ /* WSAECONNRESET is ECONNRESET */
+ /* WSAENOBUFS is ENOBUFS */
+ /* WSAEISCONN is EISCONN */
+ /* WSAENOTCONN is ENOTCONN */
+ /* WSAESHUTDOWN is ESHUTDOWN */
+ /* WSAETOOMANYREFS is ETOOMANYREFS */
+ /* WSAETIMEDOUT is ETIMEDOUT */
+ /* WSAECONNREFUSED is ECONNREFUSED */
+ /* WSAELOOP is ELOOP */
+ /* WSAENAMETOOLONG maps to ENAMETOOLONG */
+ /* WSAEHOSTDOWN is EHOSTDOWN */
+ /* WSAEHOSTUNREACH is EHOSTUNREACH */
+ /* WSAENOTEMPTY maps to ENOTEMPTY */
+ /* WSAEPROCLIM is EPROCLIM */
+ /* WSAEUSERS is EUSERS */
+ /* WSAEDQUOT is EDQUOT */
+ /* WSAESTALE is ESTALE */
+ /* WSAEREMOTE is EREMOTE */
+ case WSASYSNOTREADY:
+ msg = "Network subsystem is unavailable";
+ break;
+ case WSAVERNOTSUPPORTED:
+ msg = "Winsock.dll version out of range";
+ break;
+ case WSANOTINITIALISED:
+ msg = "Successful WSAStartup not yet performed";
+ break;
+ case WSAEDISCON:
+ msg = "Graceful shutdown in progress";
+ break;
+ case WSAENOMORE: case WSA_E_NO_MORE:
+ msg = "No more results";
+ break;
+ case WSAECANCELLED: case WSA_E_CANCELLED:
+ msg = "Call was canceled";
+ break;
+ case WSAEINVALIDPROCTABLE:
+ msg = "Procedure call table is invalid";
+ break;
+ case WSAEINVALIDPROVIDER:
+ msg = "Service provider is invalid";
+ break;
+ case WSAEPROVIDERFAILEDINIT:
+ msg = "Service provider failed to initialize";
+ break;
+ case WSASYSCALLFAILURE:
+ msg = "System call failure";
+ break;
+ case WSASERVICE_NOT_FOUND:
+ msg = "Service not found";
+ break;
+ case WSATYPE_NOT_FOUND:
+ msg = "Class type not found";
+ break;
+ case WSAEREFUSED:
+ msg = "Database query was refused";
+ break;
+ case WSAHOST_NOT_FOUND:
+ msg = "Host not found";
+ break;
+ case WSATRY_AGAIN:
+ msg = "Nonauthoritative host not found";
+ break;
+ case WSANO_RECOVERY:
+ msg = "Nonrecoverable error";
+ break;
+ case WSANO_DATA:
+ msg = "Valid name, no data record of requested type";
+ break;
+ /* WSA_QOS_* omitted */
+# endif
+# endif
+
+# if GNULIB_defined_ENOMSG
+ case ENOMSG:
+ msg = "No message of desired type";
+ break;
+# endif
+
+# if GNULIB_defined_EIDRM
+ case EIDRM:
+ msg = "Identifier removed";
+ break;
+# endif
+
+# if GNULIB_defined_ENOLINK
+ case ENOLINK:
+ msg = "Link has been severed";
+ break;
+# endif
+
+# if GNULIB_defined_EPROTO
+ case EPROTO:
+ msg = "Protocol error";
+ break;
+# endif
+
+# if GNULIB_defined_EMULTIHOP
+ case EMULTIHOP:
+ msg = "Multihop attempted";
+ break;
+# endif
+
+# if GNULIB_defined_EBADMSG
+ case EBADMSG:
+ msg = "Bad message";
+ break;
+# endif
+
+# if GNULIB_defined_EOVERFLOW
+ case EOVERFLOW:
+ msg = "Value too large for defined data type";
+ break;
+# endif
+
+# if GNULIB_defined_ENOTSUP
+ case ENOTSUP:
+ msg = "Not supported";
+ break;
+# endif
+
+# if GNULIB_defined_ESTALE
+ case ESTALE:
+ msg = "Stale NFS file handle";
+ break;
+# endif
+
+# if GNULIB_defined_ECANCELED
+ case ECANCELED:
+ msg = "Operation canceled";
+ break;
+# endif
+ }
+
+ if (msg)
+ return (char *) msg;
+
+ {
+ char *result = strerror (n);
+
+ if (result == NULL || result[0] == '\0')
+ {
+ static char const fmt[] = "Unknown error (%d)";
+ static char msg_buf[sizeof fmt + INT_STRLEN_BOUND (n)];
+ sprintf (msg_buf, fmt, n);
+ return msg_buf;
+ }
+
+ return result;
+ }
+}
+
+#endif
diff --git a/tests/test-alloca-opt.c b/tests/test-alloca-opt.c
new file mode 100644
index 00000000..68d906d8
--- /dev/null
+++ b/tests/test-alloca-opt.c
@@ -0,0 +1,62 @@
+/* Test of optional automatic memory allocation.
+ Copyright (C) 2005, 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include <alloca.h>
+
+#if HAVE_ALLOCA
+
+static void
+do_allocation (int n)
+{
+ void *ptr = alloca (n);
+ (void) ptr;
+}
+
+void (*func) (int) = do_allocation;
+
+#endif
+
+int
+main ()
+{
+#if HAVE_ALLOCA
+ int i;
+
+ /* Repeat a lot of times, to make sure there's no memory leak. */
+ for (i = 0; i < 100000; i++)
+ {
+ /* Try various values.
+ n = 0 gave a crash on Alpha with gcc-2.5.8.
+ Some versions of MacOS X have a stack size limit of 512 KB. */
+ func (34);
+ func (134);
+ func (399);
+ func (510823);
+ func (129321);
+ func (0);
+ func (4070);
+ func (4095);
+ func (1);
+ func (16582);
+ }
+#endif
+
+ return 0;
+}
diff --git a/tests/test-array-mergesort.c b/tests/test-array-mergesort.c
new file mode 100644
index 00000000..8a47b676
--- /dev/null
+++ b/tests/test-array-mergesort.c
@@ -0,0 +1,395 @@
+/* Test of stable-sorting of an array using mergesort.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 3 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <stddef.h>
+
+struct foo { double x; double index; };
+#define ELEMENT struct foo
+#define COMPARE(a,b) ((a)->x < (b)->x ? -1 : (a)->x > (b)->x ? 1 : 0)
+#define STATIC static
+#include "array-mergesort.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define NMAX 257
+static const struct foo data[NMAX] =
+{
+ { 2, 0 },
+ { 28, 1 },
+ { 36, 2 },
+ { 43, 3 },
+ { 20, 4 },
+ { 37, 5 },
+ { 19, 6 },
+ { 37, 7 },
+ { 30, 8 },
+ { 18, 9 },
+ { 30, 10 },
+ { 49, 11 },
+ { 16, 12 },
+ { 22, 13 },
+ { 23, 14 },
+ { 3, 15 },
+ { 39, 16 },
+ { 48, 17 },
+ { 18, 18 },
+ { 18, 19 },
+ { 45, 20 },
+ { 39, 21 },
+ { 1, 22 },
+ { 44, 23 },
+ { 24, 24 },
+ { 21, 25 },
+ { 29, 26 },
+ { 3, 27 },
+ { 34, 28 },
+ { 15, 29 },
+ { 39, 30 },
+ { 11, 31 },
+ { 29, 32 },
+ { 27, 33 },
+ { 43, 34 },
+ { 31, 35 },
+ { 28, 36 },
+ { 12, 37 },
+ { 16, 38 },
+ { 34, 39 },
+ { 25, 40 },
+ { 31, 41 },
+ { 29, 42 },
+ { 36, 43 },
+ { 17, 44 },
+ { 18, 45 },
+ { 44, 46 },
+ { 22, 47 },
+ { 23, 48 },
+ { 32, 49 },
+ { 16, 50 },
+ { 47, 51 },
+ { 28, 52 },
+ { 46, 53 },
+ { 49, 54 },
+ { 24, 55 },
+ { 0, 56 },
+ { 20, 57 },
+ { 25, 58 },
+ { 42, 59 },
+ { 48, 60 },
+ { 16, 61 },
+ { 26, 62 },
+ { 32, 63 },
+ { 24, 64 },
+ { 17, 65 },
+ { 47, 66 },
+ { 47, 67 },
+ { 12, 68 },
+ { 33, 69 },
+ { 41, 70 },
+ { 36, 71 },
+ { 8, 72 },
+ { 15, 73 },
+ { 0, 74 },
+ { 32, 75 },
+ { 28, 76 },
+ { 11, 77 },
+ { 46, 78 },
+ { 34, 79 },
+ { 5, 80 },
+ { 20, 81 },
+ { 47, 82 },
+ { 25, 83 },
+ { 7, 84 },
+ { 29, 85 },
+ { 40, 86 },
+ { 5, 87 },
+ { 12, 88 },
+ { 30, 89 },
+ { 1, 90 },
+ { 22, 91 },
+ { 29, 92 },
+ { 42, 93 },
+ { 49, 94 },
+ { 30, 95 },
+ { 40, 96 },
+ { 33, 97 },
+ { 36, 98 },
+ { 12, 99 },
+ { 8, 100 },
+ { 33, 101 },
+ { 5, 102 },
+ { 31, 103 },
+ { 27, 104 },
+ { 19, 105 },
+ { 43, 106 },
+ { 37, 107 },
+ { 9, 108 },
+ { 40, 109 },
+ { 0, 110 },
+ { 35, 111 },
+ { 32, 112 },
+ { 6, 113 },
+ { 27, 114 },
+ { 28, 115 },
+ { 30, 116 },
+ { 37, 117 },
+ { 32, 118 },
+ { 41, 119 },
+ { 14, 120 },
+ { 44, 121 },
+ { 22, 122 },
+ { 26, 123 },
+ { 2, 124 },
+ { 43, 125 },
+ { 20, 126 },
+ { 32, 127 },
+ { 24, 128 },
+ { 33, 129 },
+ { 7, 130 },
+ { 17, 131 },
+ { 10, 132 },
+ { 47, 133 },
+ { 14, 134 },
+ { 29, 135 },
+ { 19, 136 },
+ { 25, 137 },
+ { 25, 138 },
+ { 13, 139 },
+ { 25, 140 },
+ { 32, 141 },
+ { 8, 142 },
+ { 37, 143 },
+ { 31, 144 },
+ { 32, 145 },
+ { 5, 146 },
+ { 45, 147 },
+ { 35, 148 },
+ { 47, 149 },
+ { 3, 150 },
+ { 4, 151 },
+ { 37, 152 },
+ { 43, 153 },
+ { 39, 154 },
+ { 18, 155 },
+ { 13, 156 },
+ { 15, 157 },
+ { 41, 158 },
+ { 34, 159 },
+ { 4, 160 },
+ { 33, 161 },
+ { 20, 162 },
+ { 4, 163 },
+ { 38, 164 },
+ { 47, 165 },
+ { 30, 166 },
+ { 41, 167 },
+ { 23, 168 },
+ { 40, 169 },
+ { 23, 170 },
+ { 35, 171 },
+ { 47, 172 },
+ { 32, 173 },
+ { 15, 174 },
+ { 15, 175 },
+ { 41, 176 },
+ { 35, 177 },
+ { 6, 178 },
+ { 18, 179 },
+ { 35, 180 },
+ { 39, 181 },
+ { 34, 182 },
+ { 6, 183 },
+ { 34, 184 },
+ { 37, 185 },
+ { 15, 186 },
+ { 6, 187 },
+ { 12, 188 },
+ { 39, 189 },
+ { 9, 190 },
+ { 48, 191 },
+ { 37, 192 },
+ { 28, 193 },
+ { 32, 194 },
+ { 1, 195 },
+ { 45, 196 },
+ { 21, 197 },
+ { 11, 198 },
+ { 32, 199 },
+ { 43, 200 },
+ { 35, 201 },
+ { 25, 202 },
+ { 4, 203 },
+ { 20, 204 },
+ { 10, 205 },
+ { 22, 206 },
+ { 44, 207 },
+ { 30, 208 },
+ { 16, 209 },
+ { 42, 210 },
+ { 13, 211 },
+ { 29, 212 },
+ { 23, 213 },
+ { 30, 214 },
+ { 25, 215 },
+ { 49, 216 },
+ { 0, 217 },
+ { 49, 218 },
+ { 29, 219 },
+ { 37, 220 },
+ { 6, 221 },
+ { 27, 222 },
+ { 31, 223 },
+ { 17, 224 },
+ { 45, 225 },
+ { 25, 226 },
+ { 15, 227 },
+ { 34, 228 },
+ { 7, 229 },
+ { 7, 230 },
+ { 4, 231 },
+ { 31, 232 },
+ { 40, 233 },
+ { 17, 234 },
+ { 2, 235 },
+ { 34, 236 },
+ { 17, 237 },
+ { 25, 238 },
+ { 5, 239 },
+ { 48, 240 },
+ { 31, 241 },
+ { 41, 242 },
+ { 45, 243 },
+ { 33, 244 },
+ { 46, 245 },
+ { 19, 246 },
+ { 17, 247 },
+ { 38, 248 },
+ { 43, 249 },
+ { 16, 250 },
+ { 5, 251 },
+ { 21, 252 },
+ { 0, 253 },
+ { 47, 254 },
+ { 40, 255 },
+ { 22, 256 }
+};
+
+static int
+cmp_double (const void *a, const void *b)
+{
+ return (*(const double *)a < *(const double *)b ? -1 :
+ *(const double *)a > *(const double *)b ? 1 :
+ 0);
+}
+
+int
+main ()
+{
+ size_t n;
+
+ /* Test merge_sort_fromto. */
+ for (n = 1; n <= NMAX; n++)
+ {
+ struct foo *dst;
+ struct foo *tmp;
+ double *qsort_result;
+ size_t i;
+
+ dst = (struct foo *) malloc ((n + 1) * sizeof (struct foo));
+ dst[n].x = 0x4A6A71FE; /* canary */
+ tmp = (struct foo *) malloc ((n / 2 + 1) * sizeof (struct foo));
+ tmp[n / 2].x = 0x587EF149; /* canary */
+
+ merge_sort_fromto (data, dst, n, tmp);
+
+ /* Verify the canaries. */
+ ASSERT (dst[n].x == 0x4A6A71FE);
+ ASSERT (tmp[n / 2].x == 0x587EF149);
+
+ /* Verify the result. */
+ qsort_result = (double *) malloc (n * sizeof (double));
+ for (i = 0; i < n; i++)
+ qsort_result[i] = data[i].x;
+ qsort (qsort_result, n, sizeof (double), cmp_double);
+ for (i = 0; i < n; i++)
+ ASSERT (dst[i].x == qsort_result[i]);
+
+ /* Verify the stability. */
+ for (i = 0; i < n; i++)
+ if (i > 0 && dst[i - 1].x == dst[i].x)
+ ASSERT (dst[i - 1].index < dst[i].index);
+
+ free (qsort_result);
+ free (tmp);
+ free (dst);
+ }
+
+ /* Test merge_sort_inplace. */
+ for (n = 1; n <= NMAX; n++)
+ {
+ struct foo *src;
+ struct foo *tmp;
+ double *qsort_result;
+ size_t i;
+
+ src = (struct foo *) malloc ((n + 1) * sizeof (struct foo));
+ src[n].x = 0x4A6A71FE; /* canary */
+ tmp = (struct foo *) malloc ((n + 1) * sizeof (struct foo));
+ tmp[n].x = 0x587EF149; /* canary */
+
+ for (i = 0; i < n; i++)
+ src[i] = data[i];
+
+ merge_sort_inplace (src, n, tmp);
+
+ /* Verify the canaries. */
+ ASSERT (src[n].x == 0x4A6A71FE);
+ ASSERT (tmp[n].x == 0x587EF149);
+
+ /* Verify the result. */
+ qsort_result = (double *) malloc (n * sizeof (double));
+ for (i = 0; i < n; i++)
+ qsort_result[i] = data[i].x;
+ qsort (qsort_result, n, sizeof (double), cmp_double);
+ for (i = 0; i < n; i++)
+ ASSERT (src[i].x == qsort_result[i]);
+
+ /* Verify the stability. */
+ for (i = 0; i < n; i++)
+ if (i > 0 && src[i - 1].x == src[i].x)
+ ASSERT (src[i - 1].index < src[i].index);
+
+ free (qsort_result);
+ free (tmp);
+ free (src);
+ }
+
+ return 0;
+}
diff --git a/tests/test-c-ctype.c b/tests/test-c-ctype.c
new file mode 100644
index 00000000..6d7fe1b7
--- /dev/null
+++ b/tests/test-c-ctype.c
@@ -0,0 +1,398 @@
+/* Test of character handling in C locale.
+ Copyright (C) 2005, 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2005. */
+
+#include <config.h>
+
+#include "c-ctype.h"
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static void
+test_all (void)
+{
+ int c;
+
+ for (c = -0x80; c < 0x100; c++)
+ {
+ ASSERT (c_isascii (c) == (c >= 0 && c < 0x80));
+
+ switch (c)
+ {
+ 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':
+ 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':
+ case '0': case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ ASSERT (c_isalnum (c) == 1);
+ break;
+ default:
+ ASSERT (c_isalnum (c) == 0);
+ break;
+ }
+
+ switch (c)
+ {
+ 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':
+ 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':
+ ASSERT (c_isalpha (c) == 1);
+ break;
+ default:
+ ASSERT (c_isalpha (c) == 0);
+ break;
+ }
+
+ switch (c)
+ {
+ case '\t': case ' ':
+ ASSERT (c_isblank (c) == 1);
+ break;
+ default:
+ ASSERT (c_isblank (c) == 0);
+ break;
+ }
+
+ ASSERT (c_iscntrl (c) == ((c >= 0 && c < 0x20) || c == 0x7f));
+
+ switch (c)
+ {
+ case '0': case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ ASSERT (c_isdigit (c) == 1);
+ break;
+ default:
+ ASSERT (c_isdigit (c) == 0);
+ break;
+ }
+
+ switch (c)
+ {
+ 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':
+ ASSERT (c_islower (c) == 1);
+ break;
+ default:
+ ASSERT (c_islower (c) == 0);
+ break;
+ }
+
+ ASSERT (c_isgraph (c) == ((c >= 0x20 && c < 0x7f) && c != ' '));
+
+ ASSERT (c_isprint (c) == (c >= 0x20 && c < 0x7f));
+
+ ASSERT (c_ispunct (c) == (c_isgraph (c) && !c_isalnum (c)));
+
+ switch (c)
+ {
+ case ' ': case '\t': case '\n': case '\v': case '\f': case '\r':
+ ASSERT (c_isspace (c) == 1);
+ break;
+ default:
+ ASSERT (c_isspace (c) == 0);
+ break;
+ }
+
+ switch (c)
+ {
+ 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':
+ ASSERT (c_isupper (c) == 1);
+ break;
+ default:
+ ASSERT (c_isupper (c) == 0);
+ break;
+ }
+
+ switch (c)
+ {
+ case '0': case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+ ASSERT (c_isxdigit (c) == 1);
+ break;
+ default:
+ ASSERT (c_isxdigit (c) == 0);
+ break;
+ }
+
+ switch (c)
+ {
+ case 'A':
+ ASSERT (c_tolower (c) == 'a');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'B':
+ ASSERT (c_tolower (c) == 'b');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'C':
+ ASSERT (c_tolower (c) == 'c');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'D':
+ ASSERT (c_tolower (c) == 'd');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'E':
+ ASSERT (c_tolower (c) == 'e');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'F':
+ ASSERT (c_tolower (c) == 'f');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'G':
+ ASSERT (c_tolower (c) == 'g');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'H':
+ ASSERT (c_tolower (c) == 'h');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'I':
+ ASSERT (c_tolower (c) == 'i');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'J':
+ ASSERT (c_tolower (c) == 'j');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'K':
+ ASSERT (c_tolower (c) == 'k');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'L':
+ ASSERT (c_tolower (c) == 'l');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'M':
+ ASSERT (c_tolower (c) == 'm');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'N':
+ ASSERT (c_tolower (c) == 'n');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'O':
+ ASSERT (c_tolower (c) == 'o');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'P':
+ ASSERT (c_tolower (c) == 'p');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'Q':
+ ASSERT (c_tolower (c) == 'q');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'R':
+ ASSERT (c_tolower (c) == 'r');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'S':
+ ASSERT (c_tolower (c) == 's');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'T':
+ ASSERT (c_tolower (c) == 't');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'U':
+ ASSERT (c_tolower (c) == 'u');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'V':
+ ASSERT (c_tolower (c) == 'v');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'W':
+ ASSERT (c_tolower (c) == 'w');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'X':
+ ASSERT (c_tolower (c) == 'x');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'Y':
+ ASSERT (c_tolower (c) == 'y');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'Z':
+ ASSERT (c_tolower (c) == 'z');
+ ASSERT (c_toupper (c) == c);
+ break;
+ case 'a':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'A');
+ break;
+ case 'b':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'B');
+ break;
+ case 'c':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'C');
+ break;
+ case 'd':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'D');
+ break;
+ case 'e':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'E');
+ break;
+ case 'f':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'F');
+ break;
+ case 'g':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'G');
+ break;
+ case 'h':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'H');
+ break;
+ case 'i':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'I');
+ break;
+ case 'j':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'J');
+ break;
+ case 'k':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'K');
+ break;
+ case 'l':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'L');
+ break;
+ case 'm':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'M');
+ break;
+ case 'n':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'N');
+ break;
+ case 'o':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'O');
+ break;
+ case 'p':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'P');
+ break;
+ case 'q':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'Q');
+ break;
+ case 'r':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'R');
+ break;
+ case 's':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'S');
+ break;
+ case 't':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'T');
+ break;
+ case 'u':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'U');
+ break;
+ case 'v':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'V');
+ break;
+ case 'w':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'W');
+ break;
+ case 'x':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'X');
+ break;
+ case 'y':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'Y');
+ break;
+ case 'z':
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == 'Z');
+ break;
+ default:
+ ASSERT (c_tolower (c) == c);
+ ASSERT (c_toupper (c) == c);
+ break;
+ }
+ }
+}
+
+int
+main ()
+{
+ test_all ();
+
+ setlocale (LC_ALL, "de_DE");
+ test_all ();
+
+ setlocale (LC_ALL, "ja_JP.EUC-JP");
+ test_all ();
+
+ return 0;
+}
diff --git a/tests/test-c-strcase.sh b/tests/test-c-strcase.sh
new file mode 100755
index 00000000..5fcf906b
--- /dev/null
+++ b/tests/test-c-strcase.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# Test in the C locale.
+./test-c-strcasecmp${EXEEXT} || exit 1
+./test-c-strncasecmp${EXEEXT} || exit 1
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: ${LOCALE_FR=fr_FR}
+if test $LOCALE_FR != none; then
+ LC_ALL=$LOCALE_FR ./test-c-strcasecmp${EXEEXT} locale || exit 1
+ LC_ALL=$LOCALE_FR ./test-c-strncasecmp${EXEEXT} locale || exit 1
+fi
+
+# Test in a Turkish UTF-8 locale.
+: ${LOCALE_TR_UTF8=tr_TR.UTF-8}
+if test $LOCALE_TR_UTF8 != none; then
+ LC_ALL=$LOCALE_TR_UTF8 ./test-c-strcasecmp${EXEEXT} locale || exit 1
+ LC_ALL=$LOCALE_TR_UTF8 ./test-c-strncasecmp${EXEEXT} locale || exit 1
+fi
+
+exit 0
diff --git a/tests/test-c-strcasecmp.c b/tests/test-c-strcasecmp.c
new file mode 100644
index 00000000..16244b9f
--- /dev/null
+++ b/tests/test-c-strcasecmp.c
@@ -0,0 +1,77 @@
+/* Test of case-insensitive string comparison function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "c-strcase.h"
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main (int argc, char *argv[])
+{
+ if (argc > 1)
+ {
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+ }
+
+ ASSERT (c_strcasecmp ("paragraph", "Paragraph") == 0);
+
+ ASSERT (c_strcasecmp ("paragrapH", "parAgRaph") == 0);
+
+ ASSERT (c_strcasecmp ("paragraph", "paraLyzed") < 0);
+ ASSERT (c_strcasecmp ("paraLyzed", "paragraph") > 0);
+
+ ASSERT (c_strcasecmp ("para", "paragraph") < 0);
+ ASSERT (c_strcasecmp ("paragraph", "para") > 0);
+
+ /* The following tests shows how c_strcasecmp() is different from
+ strcasecmp(). */
+
+ ASSERT (c_strcasecmp ("\311mile", "\351mile") < 0);
+ ASSERT (c_strcasecmp ("\351mile", "\311mile") > 0);
+
+ /* The following tests shows how c_strcasecmp() is different from
+ mbscasecmp(). */
+
+ ASSERT (c_strcasecmp ("\303\266zg\303\274r", "\303\226ZG\303\234R") > 0); /* özgür */
+ ASSERT (c_strcasecmp ("\303\226ZG\303\234R", "\303\266zg\303\274r") < 0); /* özgür */
+
+ /* This test shows how strings of different size cannot compare equal. */
+ ASSERT (c_strcasecmp ("turkish", "TURK\304\260SH") < 0);
+ ASSERT (c_strcasecmp ("TURK\304\260SH", "turkish") > 0);
+
+ return 0;
+}
diff --git a/tests/test-c-strncasecmp.c b/tests/test-c-strncasecmp.c
new file mode 100644
index 00000000..7d6dbf50
--- /dev/null
+++ b/tests/test-c-strncasecmp.c
@@ -0,0 +1,91 @@
+/* Test of case-insensitive string comparison function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "c-strcase.h"
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main (int argc, char *argv[])
+{
+ if (argc > 1)
+ {
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+ }
+
+ ASSERT (c_strncasecmp ("paragraph", "Paragraph", 1000000) == 0);
+ ASSERT (c_strncasecmp ("paragraph", "Paragraph", 9) == 0);
+
+ ASSERT (c_strncasecmp ("paragrapH", "parAgRaph", 1000000) == 0);
+ ASSERT (c_strncasecmp ("paragrapH", "parAgRaph", 9) == 0);
+
+ ASSERT (c_strncasecmp ("paragraph", "paraLyzed", 10) < 0);
+ ASSERT (c_strncasecmp ("paragraph", "paraLyzed", 9) < 0);
+ ASSERT (c_strncasecmp ("paragraph", "paraLyzed", 5) < 0);
+ ASSERT (c_strncasecmp ("paragraph", "paraLyzed", 4) == 0);
+ ASSERT (c_strncasecmp ("paraLyzed", "paragraph", 10) > 0);
+ ASSERT (c_strncasecmp ("paraLyzed", "paragraph", 9) > 0);
+ ASSERT (c_strncasecmp ("paraLyzed", "paragraph", 5) > 0);
+ ASSERT (c_strncasecmp ("paraLyzed", "paragraph", 4) == 0);
+
+ ASSERT (c_strncasecmp ("para", "paragraph", 10) < 0);
+ ASSERT (c_strncasecmp ("para", "paragraph", 9) < 0);
+ ASSERT (c_strncasecmp ("para", "paragraph", 5) < 0);
+ ASSERT (c_strncasecmp ("para", "paragraph", 4) == 0);
+ ASSERT (c_strncasecmp ("paragraph", "para", 10) > 0);
+ ASSERT (c_strncasecmp ("paragraph", "para", 9) > 0);
+ ASSERT (c_strncasecmp ("paragraph", "para", 5) > 0);
+ ASSERT (c_strncasecmp ("paragraph", "para", 4) == 0);
+
+ /* The following tests shows how c_strncasecmp() is different from
+ strncasecmp(). */
+
+ ASSERT (c_strncasecmp ("\311mily", "\351mile", 4) < 0);
+ ASSERT (c_strncasecmp ("\351mile", "\311mily", 4) > 0);
+
+ /* The following tests shows how c_strncasecmp() is different from
+ mbsncasecmp(). */
+
+ ASSERT (c_strncasecmp ("\303\266zg\303\274r", "\303\226ZG\303\234R", 99) > 0); /* özgür */
+ ASSERT (c_strncasecmp ("\303\226ZG\303\234R", "\303\266zg\303\274r", 99) < 0); /* özgür */
+
+ /* This test shows how strings of different size cannot compare equal. */
+ ASSERT (c_strncasecmp ("turkish", "TURK\304\260SH", 7) < 0);
+ ASSERT (c_strncasecmp ("TURK\304\260SH", "turkish", 7) > 0);
+
+ return 0;
+}
diff --git a/tests/test-environ.c b/tests/test-environ.c
new file mode 100644
index 00000000..d9501bbd
--- /dev/null
+++ b/tests/test-environ.c
@@ -0,0 +1,44 @@
+/* Test of environ variable.
+ Copyright (C) 2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+
+#include <config.h>
+
+#include <unistd.h>
+
+#include <string.h>
+
+int
+main ()
+{
+ /* The environment variables that are set even in the weirdest situations
+ are HOME and PATH.
+ POSIX says that HOME is initialized by the system, and that PATH may be
+ unset. But in practice it's more frequent to see HOME unset and PATH
+ set. So we test the presence of PATH. */
+ char **remaining_variables = environ;
+ char *string;
+
+ for (; (string = *remaining_variables) != NULL; remaining_variables++)
+ {
+ if (strncmp (string, "PATH=", 5) == 0)
+ /* Found the PATH environment variable. */
+ return 0;
+ }
+ /* Failed to find the PATH environment variable. */
+ return 1;
+}
diff --git a/tests/test-errno.c b/tests/test-errno.c
new file mode 100644
index 00000000..4642027d
--- /dev/null
+++ b/tests/test-errno.c
@@ -0,0 +1,117 @@
+/* Test of <errno.h> substitute.
+ Copyright (C) 2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+
+#include <config.h>
+
+#include <errno.h>
+
+/* Verify that the POSIX mandated errno values exist and can be used as
+ initializers outside of a function.
+ The variable names happen to match the Linux/x86 error numbers. */
+int e1 = EPERM;
+int e2 = ENOENT;
+int e3 = ESRCH;
+int e4 = EINTR;
+int e5 = EIO;
+int e6 = ENXIO;
+int e7 = E2BIG;
+int e8 = ENOEXEC;
+int e9 = EBADF;
+int e10 = ECHILD;
+int e11 = EAGAIN;
+int e11a = EWOULDBLOCK;
+int e12 = ENOMEM;
+int e13 = EACCES;
+int e14 = EFAULT;
+int e16 = EBUSY;
+int e17 = EEXIST;
+int e18 = EXDEV;
+int e19 = ENODEV;
+int e20 = ENOTDIR;
+int e21 = EISDIR;
+int e22 = EINVAL;
+int e23 = ENFILE;
+int e24 = EMFILE;
+int e25 = ENOTTY;
+int e26 = ETXTBSY;
+int e27 = EFBIG;
+int e28 = ENOSPC;
+int e29 = ESPIPE;
+int e30 = EROFS;
+int e31 = EMLINK;
+int e32 = EPIPE;
+int e33 = EDOM;
+int e34 = ERANGE;
+int e35 = EDEADLK;
+int e36 = ENAMETOOLONG;
+int e37 = ENOLCK;
+int e38 = ENOSYS;
+int e39 = ENOTEMPTY;
+int e40 = ELOOP;
+int e42 = ENOMSG;
+int e43 = EIDRM;
+int e67 = ENOLINK;
+int e71 = EPROTO;
+int e72 = EMULTIHOP;
+int e74 = EBADMSG;
+int e75 = EOVERFLOW;
+int e84 = EILSEQ;
+int e88 = ENOTSOCK;
+int e89 = EDESTADDRREQ;
+int e90 = EMSGSIZE;
+int e91 = EPROTOTYPE;
+int e92 = ENOPROTOOPT;
+int e93 = EPROTONOSUPPORT;
+int e95 = EOPNOTSUPP;
+int e95a = ENOTSUP;
+int e97 = EAFNOSUPPORT;
+int e98 = EADDRINUSE;
+int e99 = EADDRNOTAVAIL;
+int e100 = ENETDOWN;
+int e101 = ENETUNREACH;
+int e102 = ENETRESET;
+int e103 = ECONNABORTED;
+int e104 = ECONNRESET;
+int e105 = ENOBUFS;
+int e106 = EISCONN;
+int e107 = ENOTCONN;
+int e110 = ETIMEDOUT;
+int e111 = ECONNREFUSED;
+int e113 = EHOSTUNREACH;
+int e114 = EALREADY;
+int e115 = EINPROGRESS;
+int e116 = ESTALE;
+int e122 = EDQUOT;
+int e125 = ECANCELED;
+
+/* Don't verify that these errno values are all different, except for possibly
+ EWOULDBLOCK == EAGAIN. Even Linux/x86 does not pass this check: it has
+ ENOTSUP == EOPNOTSUPP. */
+
+int
+main ()
+{
+ /* Verify that errno can be assigned. */
+ errno = EOVERFLOW;
+
+ /* snprintf() callers want to distinguish EINVAL and EOVERFLOW. */
+ if (errno == EINVAL)
+ return 1;
+
+ return 0;
+}
diff --git a/tests/test-frexpl.c b/tests/test-frexpl.c
new file mode 100644
index 00000000..d4babb88
--- /dev/null
+++ b/tests/test-frexpl.c
@@ -0,0 +1,233 @@
+/* Test of splitting a 'long double' into fraction and mantissa.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include <float.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "fpucw.h"
+#include "isnanl-nolibm.h"
+#include "nan.h"
+
+/* Avoid some warnings from "gcc -Wshadow".
+ This file doesn't use the exp() function. */
+#undef exp
+#define exp exponent
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+/* On MIPS IRIX machines, LDBL_MIN_EXP is -1021, but the smallest reliable
+ exponent for 'long double' is -964. Similarly, on PowerPC machines,
+ LDBL_MIN_EXP is -1021, but the smallest reliable exponent for 'long double'
+ is -968. For exponents below that, the precision may be truncated to the
+ precision used for 'double'. */
+#ifdef __sgi
+# define MIN_NORMAL_EXP (LDBL_MIN_EXP + 57)
+#elif defined __ppc || defined __ppc__ || defined __powerpc || defined __powerpc__
+# define MIN_NORMAL_EXP (LDBL_MIN_EXP + 53)
+#else
+# define MIN_NORMAL_EXP LDBL_MIN_EXP
+#endif
+
+/* On HP-UX 10.20, negating 0.0L does not yield -0.0L.
+ So we use minus_zero instead.
+ IRIX cc can't put -0.0L into .data, but can compute at runtime.
+ Note that the expression -LDBL_MIN * LDBL_MIN does not work on other
+ platforms, such as when cross-compiling to PowerPC on MacOS X 10.5. */
+#if defined __hpux || defined __sgi
+static long double
+compute_minus_zero (void)
+{
+ return -LDBL_MIN * LDBL_MIN;
+}
+# define minus_zero compute_minus_zero ()
+#else
+long double minus_zero = -0.0L;
+#endif
+
+static long double
+my_ldexp (long double x, int d)
+{
+ for (; d > 0; d--)
+ x *= 2.0L;
+ for (; d < 0; d++)
+ x *= 0.5L;
+ return x;
+}
+
+int
+main ()
+{
+ int i;
+ long double x;
+ DECL_LONG_DOUBLE_ROUNDING
+
+ BEGIN_LONG_DOUBLE_ROUNDING ();
+
+ { /* NaN. */
+ int exp = -9999;
+ long double mantissa;
+ x = NaNl ();
+ mantissa = frexpl (x, &exp);
+ ASSERT (isnanl (mantissa));
+ }
+
+ { /* Positive infinity. */
+ int exp = -9999;
+ long double mantissa;
+ x = 1.0L / 0.0L;
+ mantissa = frexpl (x, &exp);
+ ASSERT (mantissa == x);
+ }
+
+ { /* Negative infinity. */
+ int exp = -9999;
+ long double mantissa;
+ x = -1.0L / 0.0L;
+ mantissa = frexpl (x, &exp);
+ ASSERT (mantissa == x);
+ }
+
+ { /* Positive zero. */
+ int exp = -9999;
+ long double mantissa;
+ x = 0.0L;
+ mantissa = frexpl (x, &exp);
+ ASSERT (exp == 0);
+ ASSERT (mantissa == x);
+ ASSERT (!signbit (mantissa));
+ }
+
+ { /* Negative zero. */
+ int exp = -9999;
+ long double mantissa;
+ x = minus_zero;
+ mantissa = frexpl (x, &exp);
+ ASSERT (exp == 0);
+ ASSERT (mantissa == x);
+ ASSERT (signbit (mantissa));
+ }
+
+ for (i = 1, x = 1.0L; i <= LDBL_MAX_EXP; i++, x *= 2.0L)
+ {
+ int exp = -9999;
+ long double mantissa = frexpl (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == 0.5L);
+ }
+ for (i = 1, x = 1.0L; i >= MIN_NORMAL_EXP; i--, x *= 0.5L)
+ {
+ int exp = -9999;
+ long double mantissa = frexpl (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == 0.5L);
+ }
+ for (; i >= LDBL_MIN_EXP - 100 && x > 0.0L; i--, x *= 0.5L)
+ {
+ int exp = -9999;
+ long double mantissa = frexpl (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == 0.5L);
+ }
+
+ for (i = 1, x = -1.0L; i <= LDBL_MAX_EXP; i++, x *= 2.0L)
+ {
+ int exp = -9999;
+ long double mantissa = frexpl (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == -0.5L);
+ }
+ for (i = 1, x = -1.0L; i >= MIN_NORMAL_EXP; i--, x *= 0.5L)
+ {
+ int exp = -9999;
+ long double mantissa = frexpl (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == -0.5L);
+ }
+ for (; i >= LDBL_MIN_EXP - 100 && x < 0.0L; i--, x *= 0.5L)
+ {
+ int exp = -9999;
+ long double mantissa = frexpl (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == -0.5L);
+ }
+
+ for (i = 1, x = 1.01L; i <= LDBL_MAX_EXP; i++, x *= 2.0L)
+ {
+ int exp = -9999;
+ long double mantissa = frexpl (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == 0.505L);
+ }
+ for (i = 1, x = 1.01L; i >= MIN_NORMAL_EXP; i--, x *= 0.5L)
+ {
+ int exp = -9999;
+ long double mantissa = frexpl (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == 0.505L);
+ }
+ for (; i >= LDBL_MIN_EXP - 100 && x > 0.0L; i--, x *= 0.5L)
+ {
+ int exp = -9999;
+ long double mantissa = frexpl (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa >= 0.5L);
+ ASSERT (mantissa < 1.0L);
+ ASSERT (mantissa == my_ldexp (x, - exp));
+ }
+
+ for (i = 1, x = 1.73205L; i <= LDBL_MAX_EXP; i++, x *= 2.0L)
+ {
+ int exp = -9999;
+ long double mantissa = frexpl (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == 0.866025L);
+ }
+ for (i = 1, x = 1.73205L; i >= MIN_NORMAL_EXP; i--, x *= 0.5L)
+ {
+ int exp = -9999;
+ long double mantissa = frexpl (x, &exp);
+ ASSERT (exp == i);
+ ASSERT (mantissa == 0.866025L);
+ }
+ for (; i >= LDBL_MIN_EXP - 100 && x > 0.0L; i--, x *= 0.5L)
+ {
+ int exp = -9999;
+ long double mantissa = frexpl (x, &exp);
+ ASSERT (exp == i || exp == i + 1);
+ ASSERT (mantissa >= 0.5L);
+ ASSERT (mantissa < 1.0L);
+ ASSERT (mantissa == my_ldexp (x, - exp));
+ }
+
+ return 0;
+}
diff --git a/tests/test-fseterr.c b/tests/test-fseterr.c
new file mode 100644
index 00000000..475979b0
--- /dev/null
+++ b/tests/test-fseterr.c
@@ -0,0 +1,44 @@
+/* Test setting the error indicator of a stream.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "fseterr.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+ /* All streams are initially created with the error indicator cleared. */
+ if (ferror (stdout))
+ abort ();
+
+ /* Verify that fseterr() works. */
+ fseterr (stdout);
+ if (!ferror (stdout))
+ abort ();
+
+ /* Verify fseterr's effect can be undone by clearerr(). */
+ clearerr (stdout);
+ if (ferror (stdout))
+ abort ();
+
+ return 0;
+}
diff --git a/tests/test-iconv.c b/tests/test-iconv.c
new file mode 100644
index 00000000..8bac1764
--- /dev/null
+++ b/tests/test-iconv.c
@@ -0,0 +1,149 @@
+/* Test of character set conversion.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#if HAVE_ICONV
+# include <iconv.h>
+#endif
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+#if HAVE_ICONV
+ /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1,
+ and UTF-8. */
+ iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+ iconv_t cd_utf8_to_88591 = iconv_open ("ISO-8859-1", "UTF-8");
+
+ ASSERT (cd_88591_to_utf8 != (iconv_t)(-1));
+ ASSERT (cd_utf8_to_88591 != (iconv_t)(-1));
+
+ /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */
+ {
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+ char buf[50];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_88591_to_utf8,
+ (ICONV_CONST char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ ASSERT (res == 0 && inbytesleft == 0);
+ ASSERT (outptr == buf + strlen (expected));
+ ASSERT (memcmp (buf, expected, strlen (expected)) == 0);
+ }
+
+ /* Test conversion from ISO-8859-1 to UTF-8 with E2BIG. */
+ {
+ static const char input[] = "\304";
+ static char buf[2] = { (char)0xDE, (char)0xAD };
+ const char *inptr = input;
+ size_t inbytesleft = 1;
+ char *outptr = buf;
+ size_t outbytesleft = 1;
+ size_t res = iconv (cd_88591_to_utf8,
+ (ICONV_CONST char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ ASSERT (res == (size_t)(-1) && errno == E2BIG);
+ ASSERT (inbytesleft == 1);
+ ASSERT (outbytesleft == 1);
+ ASSERT ((unsigned char) buf[1] == 0xAD);
+ ASSERT ((unsigned char) buf[0] == 0xDE);
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */
+ {
+ static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ char buf[50];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_utf8_to_88591,
+ (ICONV_CONST char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ ASSERT (res == 0 && inbytesleft == 0);
+ ASSERT (outptr == buf + strlen (expected));
+ ASSERT (memcmp (buf, expected, strlen (expected)) == 0);
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */
+ {
+ static const char input[] = "\342\202\254"; /* EURO SIGN */
+ char buf[10];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_utf8_to_88591,
+ (ICONV_CONST char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res == (size_t)(-1))
+ {
+ ASSERT (errno == EILSEQ);
+ ASSERT (inbytesleft == strlen (input) && outptr == buf);
+ }
+ else
+ {
+ ASSERT (res == 1);
+ ASSERT (inbytesleft == 0);
+ }
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */
+ {
+ static const char input[] = "\342";
+ char buf[10];
+ const char *inptr = input;
+ size_t inbytesleft = 1;
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_utf8_to_88591,
+ (ICONV_CONST char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ ASSERT (res == (size_t)(-1) && errno == EINVAL);
+ ASSERT (inbytesleft == 1 && outptr == buf);
+ }
+
+ iconv_close (cd_88591_to_utf8);
+ iconv_close (cd_utf8_to_88591);
+#endif
+
+ return 0;
+}
diff --git a/tests/test-isnand-nolibm.c b/tests/test-isnand-nolibm.c
new file mode 100644
index 00000000..fd739ca3
--- /dev/null
+++ b/tests/test-isnand-nolibm.c
@@ -0,0 +1,22 @@
+/* Test of isnand() substitute.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "isnand-nolibm.h"
+
+#include "test-isnand.h"
+
diff --git a/tests/test-isnand.h b/tests/test-isnand.h
new file mode 100644
index 00000000..09c5e977
--- /dev/null
+++ b/tests/test-isnand.h
@@ -0,0 +1,78 @@
+/* Test of isnand() substitute.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "nan.h"
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
+ So we use -zero instead. */
+double zero = 0.0;
+
+int
+main ()
+{
+ /* Finite values. */
+ ASSERT (!isnand (3.141));
+ ASSERT (!isnand (3.141e30));
+ ASSERT (!isnand (3.141e-30));
+ ASSERT (!isnand (-2.718));
+ ASSERT (!isnand (-2.718e30));
+ ASSERT (!isnand (-2.718e-30));
+ ASSERT (!isnand (0.0));
+ ASSERT (!isnand (-zero));
+ /* Infinite values. */
+ ASSERT (!isnand (1.0 / 0.0));
+ ASSERT (!isnand (-1.0 / 0.0));
+ /* Quiet NaN. */
+ ASSERT (isnand (NaNd ()));
+#if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
+ /* Signalling NaN. */
+ {
+ #define NWORDS \
+ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+ typedef union { double value; unsigned int word[NWORDS]; } memory_double;
+ memory_double m;
+ m.value = NaNd ();
+# if DBL_EXPBIT0_BIT > 0
+ m.word[DBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (DBL_EXPBIT0_BIT - 1);
+# else
+ m.word[DBL_EXPBIT0_WORD + (DBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
+ ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
+# endif
+ m.word[DBL_EXPBIT0_WORD + (DBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
+ |= (unsigned int) 1 << DBL_EXPBIT0_BIT;
+ ASSERT (isnand (m.value));
+ }
+#endif
+ return 0;
+}
diff --git a/tests/test-isnanf-nolibm.c b/tests/test-isnanf-nolibm.c
new file mode 100644
index 00000000..0105ce9c
--- /dev/null
+++ b/tests/test-isnanf-nolibm.c
@@ -0,0 +1,21 @@
+/* Test of isnanf() substitute.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "isnanf-nolibm.h"
+
+#include "test-isnanf.h"
diff --git a/tests/test-isnanf.h b/tests/test-isnanf.h
new file mode 100644
index 00000000..f3f387c4
--- /dev/null
+++ b/tests/test-isnanf.h
@@ -0,0 +1,80 @@
+/* Test of isnanf() substitute.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "nan.h"
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0f.
+ So we use -zero instead. */
+float zero = 0.0f;
+
+int
+main ()
+{
+ /* Finite values. */
+ ASSERT (!isnanf (3.141f));
+ ASSERT (!isnanf (3.141e30f));
+ ASSERT (!isnanf (3.141e-30f));
+ ASSERT (!isnanf (-2.718f));
+ ASSERT (!isnanf (-2.718e30f));
+ ASSERT (!isnanf (-2.718e-30f));
+ ASSERT (!isnanf (0.0f));
+ ASSERT (!isnanf (-zero));
+ /* Infinite values. */
+ ASSERT (!isnanf (1.0f / 0.0f));
+ ASSERT (!isnanf (-1.0f / 0.0f));
+ /* Quiet NaN. */
+ ASSERT (isnanf (NaNf ()));
+#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
+ /* Signalling NaN. */
+ {
+ #define NWORDS \
+ ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+ typedef union { float value; unsigned int word[NWORDS]; } memory_float;
+ memory_float m;
+ m.value = NaNf ();
+# if FLT_EXPBIT0_BIT > 0
+ m.word[FLT_EXPBIT0_WORD] ^= (unsigned int) 1 << (FLT_EXPBIT0_BIT - 1);
+# else
+ m.word[FLT_EXPBIT0_WORD + (FLT_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
+ ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
+# endif
+ if (FLT_EXPBIT0_WORD < NWORDS / 2)
+ m.word[FLT_EXPBIT0_WORD + 1] |= (unsigned int) 1 << FLT_EXPBIT0_BIT;
+ else
+ m.word[0] |= (unsigned int) 1;
+ ASSERT (isnanf (m.value));
+ }
+#endif
+ return 0;
+}
diff --git a/tests/test-isnanl-nolibm.c b/tests/test-isnanl-nolibm.c
new file mode 100644
index 00000000..70c984d5
--- /dev/null
+++ b/tests/test-isnanl-nolibm.c
@@ -0,0 +1,23 @@
+/* Test of isnanl() substitute.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "isnanl-nolibm.h"
+
+#include "test-isnanl.h"
diff --git a/tests/test-isnanl.h b/tests/test-isnanl.h
new file mode 100644
index 00000000..baf04db0
--- /dev/null
+++ b/tests/test-isnanl.h
@@ -0,0 +1,154 @@
+/* Test of isnanl() substitute.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <float.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "nan.h"
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+/* On HP-UX 10.20, negating 0.0L does not yield -0.0L.
+ So we use minus_zero instead.
+ IRIX cc can't put -0.0L into .data, but can compute at runtime.
+ Note that the expression -LDBL_MIN * LDBL_MIN does not work on other
+ platforms, such as when cross-compiling to PowerPC on MacOS X 10.5. */
+#if defined __hpux || defined __sgi
+static long double
+compute_minus_zero (void)
+{
+ return -LDBL_MIN * LDBL_MIN;
+}
+# define minus_zero compute_minus_zero ()
+#else
+long double minus_zero = -0.0L;
+#endif
+
+int
+main ()
+{
+ #define NWORDS \
+ ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+ typedef union { unsigned int word[NWORDS]; long double value; }
+ memory_long_double;
+
+ /* Finite values. */
+ ASSERT (!isnanl (3.141L));
+ ASSERT (!isnanl (3.141e30L));
+ ASSERT (!isnanl (3.141e-30L));
+ ASSERT (!isnanl (-2.718L));
+ ASSERT (!isnanl (-2.718e30L));
+ ASSERT (!isnanl (-2.718e-30L));
+ ASSERT (!isnanl (0.0L));
+ ASSERT (!isnanl (minus_zero));
+ /* Infinite values. */
+ ASSERT (!isnanl (1.0L / 0.0L));
+ ASSERT (!isnanl (-1.0L / 0.0L));
+ /* Quiet NaN. */
+ ASSERT (isnanl (NaNl ()));
+
+#if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT
+ /* A bit pattern that is different from a Quiet NaN. With a bit of luck,
+ it's a Signalling NaN. */
+ {
+ memory_long_double m;
+ m.value = NaNl ();
+# if LDBL_EXPBIT0_BIT > 0
+ m.word[LDBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (LDBL_EXPBIT0_BIT - 1);
+# else
+ m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
+ ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
+# endif
+ m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
+ |= (unsigned int) 1 << LDBL_EXPBIT0_BIT;
+ ASSERT (isnanl (m.value));
+ }
+#endif
+
+#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_))
+/* Representation of an 80-bit 'long double' as an initializer for a sequence
+ of 'unsigned int' words. */
+# ifdef WORDS_BIGENDIAN
+# define LDBL80_WORDS(exponent,manthi,mantlo) \
+ { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \
+ ((unsigned int) (manthi) << 16) | (unsigned int) (mantlo) >> 16), \
+ (unsigned int) (mantlo) << 16 \
+ }
+# else
+# define LDBL80_WORDS(exponent,manthi,mantlo) \
+ { mantlo, manthi, exponent }
+# endif
+ { /* Quiet NaN. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
+ ASSERT (isnanl (x.value));
+ }
+ {
+ /* Signalling NaN. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
+ ASSERT (isnanl (x.value));
+ }
+ /* The isnanl function should recognize Pseudo-NaNs, Pseudo-Infinities,
+ Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals, as defined in
+ Intel IA-64 Architecture Software Developer's Manual, Volume 1:
+ Application Architecture.
+ Table 5-2 "Floating-Point Register Encodings"
+ Figure 5-6 "Memory to Floating-Point Register Data Translation"
+ */
+ { /* Pseudo-NaN. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
+ ASSERT (isnanl (x.value));
+ }
+ { /* Pseudo-Infinity. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
+ ASSERT (isnanl (x.value));
+ }
+ { /* Pseudo-Zero. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
+ ASSERT (isnanl (x.value));
+ }
+ { /* Unnormalized number. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
+ ASSERT (isnanl (x.value));
+ }
+ { /* Pseudo-Denormal. */
+ static memory_long_double x =
+ { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
+ ASSERT (isnanl (x.value));
+ }
+#endif
+
+ return 0;
+}
diff --git a/tests/test-locale.c b/tests/test-locale.c
new file mode 100644
index 00000000..625cc43d
--- /dev/null
+++ b/tests/test-locale.c
@@ -0,0 +1,44 @@
+/* Test of <locale.h> substitute.
+ Copyright (C) 2007, 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include <locale.h>
+
+#include "verify.h"
+
+int a[] =
+ {
+ LC_ALL,
+ LC_COLLATE,
+ LC_CTYPE,
+ LC_MESSAGES,
+ LC_MONETARY,
+ LC_NUMERIC,
+ LC_TIME
+ };
+
+/* Check that NULL can be passed through varargs as a pointer type,
+ per POSIX 2008. */
+verify (sizeof NULL == sizeof (void *));
+
+int
+main ()
+{
+ return 0;
+}
diff --git a/tests/test-localename.c b/tests/test-localename.c
new file mode 100644
index 00000000..82f786bb
--- /dev/null
+++ b/tests/test-localename.c
@@ -0,0 +1,122 @@
+/* Test of gl_locale_name function.
+ Copyright (C) 2007, 2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "localename.h"
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ /* Check that gl_locale_name returns non-NULL. */
+ ASSERT (gl_locale_name (LC_MESSAGES, "LC_MESSAGES") != NULL);
+
+ /* Check that when all environment variables are unset,
+ gl_locale_name_posix returns NULL. */
+ unsetenv ("LC_ALL");
+ unsetenv ("LC_CTYPE");
+ unsetenv ("LC_MESSAGES");
+ unsetenv ("LC_NUMERIC");
+ unsetenv ("LANG");
+ setlocale (LC_ALL, "");
+ ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"),
+ gl_locale_name_default ()) == 0);
+ ASSERT (strcmp (gl_locale_name (LC_NUMERIC, "LC_NUMERIC"),
+ gl_locale_name_default ()) == 0);
+
+ /* Check that an empty environment variable is treated like an unset
+ environment variable. */
+
+ setenv ("LC_ALL", "", 1);
+ unsetenv ("LC_CTYPE");
+ unsetenv ("LC_MESSAGES");
+ unsetenv ("LANG");
+ setlocale (LC_ALL, "");
+ ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"),
+ gl_locale_name_default ()) == 0);
+
+ unsetenv ("LC_ALL");
+ setenv ("LC_CTYPE", "", 1);
+ unsetenv ("LC_MESSAGES");
+ unsetenv ("LANG");
+ setlocale (LC_ALL, "");
+ ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"),
+ gl_locale_name_default ()) == 0);
+
+ unsetenv ("LC_ALL");
+ unsetenv ("LC_CTYPE");
+ setenv ("LC_MESSAGES", "", 1);
+ unsetenv ("LANG");
+ setlocale (LC_ALL, "");
+ ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"),
+ gl_locale_name_default ()) == 0);
+
+ unsetenv ("LC_ALL");
+ unsetenv ("LC_CTYPE");
+ unsetenv ("LC_MESSAGES");
+ setenv ("LANG", "", 1);
+ setlocale (LC_ALL, "");
+ ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"),
+ gl_locale_name_default ()) == 0);
+
+ /* Check that LC_ALL overrides the others, and LANG is overridden by the
+ others. */
+
+ setenv ("LC_ALL", "C", 1);
+ unsetenv ("LC_CTYPE");
+ unsetenv ("LC_MESSAGES");
+ unsetenv ("LANG");
+ setlocale (LC_ALL, "");
+ ASSERT (strcmp (gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES"), "C") == 0);
+ ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"), "C") == 0);
+
+ unsetenv ("LC_ALL");
+ setenv ("LC_CTYPE", "C", 1);
+ setenv ("LC_MESSAGES", "C", 1);
+ unsetenv ("LANG");
+ setlocale (LC_ALL, "");
+ ASSERT (strcmp (gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES"), "C") == 0);
+ ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"), "C") == 0);
+
+ unsetenv ("LC_ALL");
+ unsetenv ("LC_CTYPE");
+ unsetenv ("LC_MESSAGES");
+ setenv ("LANG", "C", 1);
+ setlocale (LC_ALL, "");
+ ASSERT (strcmp (gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES"), "C") == 0);
+ ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"), "C") == 0);
+
+ return 0;
+}
diff --git a/tests/test-malloca.c b/tests/test-malloca.c
new file mode 100644
index 00000000..7de6c68a
--- /dev/null
+++ b/tests/test-malloca.c
@@ -0,0 +1,59 @@
+/* Test of safe automatic memory allocation.
+ Copyright (C) 2005, 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2005. */
+
+#include <config.h>
+
+#include "malloca.h"
+
+#include <stdlib.h>
+
+static void
+do_allocation (int n)
+{
+ void *ptr = malloca (n);
+ freea (ptr);
+ ptr = safe_alloca (n);
+}
+
+void (*func) (int) = do_allocation;
+
+int
+main ()
+{
+ int i;
+
+ /* Repeat a lot of times, to make sure there's no memory leak. */
+ for (i = 0; i < 50000; i++)
+ {
+ /* Try various values.
+ n = 0 gave a crash on Alpha with gcc-2.5.8.
+ Some versions of MacOS X have a stack size limit of 512 KB. */
+ func (34);
+ func (134);
+ func (399);
+ func (510823);
+ func (129321);
+ func (0);
+ func (4070);
+ func (4095);
+ func (1);
+ func (16582);
+ }
+
+ return 0;
+}
diff --git a/tests/test-math.c b/tests/test-math.c
new file mode 100644
index 00000000..aa51f858
--- /dev/null
+++ b/tests/test-math.c
@@ -0,0 +1,53 @@
+/* Test of <math.h> substitute.
+ Copyright (C) 2007, 2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include <math.h>
+
+#ifndef NAN
+# error NAN should be defined
+choke me
+#endif
+
+#if 0
+/* Check that NAN expands into a constant expression. */
+static float n = NAN;
+#endif
+
+/* Compare two numbers with ==.
+ This is a separate function because IRIX 6.5 "cc -O" miscompiles an
+ 'x == x' test. */
+static int
+numeric_equal (double x, double y)
+{
+ return x == y;
+}
+
+int
+main ()
+{
+ double d = NAN;
+ double zero = 0.0;
+ if (numeric_equal (d, d))
+ return 1;
+ d = HUGE_VAL;
+ if (!numeric_equal (d, 1.0 / zero))
+ return 1;
+ return 0;
+}
diff --git a/tests/test-mbrtowc.c b/tests/test-mbrtowc.c
new file mode 100644
index 00000000..8f1f1bec
--- /dev/null
+++ b/tests/test-mbrtowc.c
@@ -0,0 +1,330 @@
+/* Test of conversion of multibyte character to wide character.
+ Copyright (C) 2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+
+#include <config.h>
+
+#include <wchar.h>
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main (int argc, char *argv[])
+{
+ mbstate_t state;
+ wchar_t wc;
+ size_t ret;
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* Test zero-length input. */
+ {
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, "x", 0, &state);
+ /* gnulib's implementation returns (size_t)(-2).
+ The AIX 5.1 implementation returns (size_t)(-1).
+ glibc's implementation returns 0. */
+ ASSERT (ret == (size_t)(-2) || ret == (size_t)(-1) || ret == 0);
+ ASSERT (mbsinit (&state));
+ }
+
+ /* Test NUL byte input. */
+ {
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, "", 1, &state);
+ ASSERT (ret == 0);
+ ASSERT (wc == 0);
+ ASSERT (mbsinit (&state));
+ ret = mbrtowc (NULL, "", 1, &state);
+ ASSERT (ret == 0);
+ ASSERT (mbsinit (&state));
+ }
+
+ /* Test single-byte input. */
+ {
+ int c;
+ char buf[1];
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ 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':
+ case '[': case '\\': case ']': case '^': case '_':
+ 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': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set". */
+ buf[0] = c;
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, buf, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == c);
+ ASSERT (mbsinit (&state));
+ ret = mbrtowc (NULL, buf, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (mbsinit (&state));
+ break;
+ }
+ }
+
+ /* Test special calling convention, passing a NULL pointer. */
+ {
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, NULL, 5, &state);
+ ASSERT (ret == 0);
+ ASSERT (wc == (wchar_t) 0xBADFACE);
+ ASSERT (mbsinit (&state));
+ }
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '1':
+ /* Locale encoding is ISO-8859-1 or ISO-8859-15. */
+ {
+ char input[] = "B\374\337er"; /* "Büßer" */
+ memset (&state, '\0', sizeof (mbstate_t));
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'B');
+ ASSERT (mbsinit (&state));
+ input[0] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 1, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wctob (wc) == (unsigned char) '\374');
+ ASSERT (mbsinit (&state));
+ input[1] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 2, 3, &state);
+ ASSERT (ret == 1);
+ ASSERT (wctob (wc) == (unsigned char) '\337');
+ ASSERT (mbsinit (&state));
+ input[2] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 3, 2, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'e');
+ ASSERT (mbsinit (&state));
+ input[3] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 4, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'r');
+ ASSERT (mbsinit (&state));
+ }
+ return 0;
+
+ case '2':
+ /* Locale encoding is UTF-8. */
+ {
+ char input[] = "B\303\274\303\237er"; /* "Büßer" */
+ memset (&state, '\0', sizeof (mbstate_t));
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'B');
+ ASSERT (mbsinit (&state));
+ input[0] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 1, 1, &state);
+ ASSERT (ret == (size_t)(-2));
+ ASSERT (wc == (wchar_t) 0xBADFACE);
+ ASSERT (!mbsinit (&state));
+ input[1] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 2, 5, &state);
+ ASSERT (ret == 1);
+ ASSERT (wctob (wc) == EOF);
+ ASSERT (mbsinit (&state));
+ input[2] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 3, 4, &state);
+ ASSERT (ret == 2);
+ ASSERT (wctob (wc) == EOF);
+ ASSERT (mbsinit (&state));
+ input[3] = '\0';
+ input[4] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 5, 2, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'e');
+ ASSERT (mbsinit (&state));
+ input[5] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 6, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'r');
+ ASSERT (mbsinit (&state));
+ }
+ return 0;
+
+ case '3':
+ /* Locale encoding is EUC-JP. */
+ {
+ char input[] = "<\306\374\313\334\270\354>"; /* "<日本語>" */
+ memset (&state, '\0', sizeof (mbstate_t));
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == '<');
+ ASSERT (mbsinit (&state));
+ input[0] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 1, 2, &state);
+ ASSERT (ret == 2);
+ ASSERT (wctob (wc) == EOF);
+ ASSERT (mbsinit (&state));
+ input[1] = '\0';
+ input[2] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 3, 1, &state);
+ ASSERT (ret == (size_t)(-2));
+ ASSERT (wc == (wchar_t) 0xBADFACE);
+ ASSERT (!mbsinit (&state));
+ input[3] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 4, 4, &state);
+ ASSERT (ret == 1);
+ ASSERT (wctob (wc) == EOF);
+ ASSERT (mbsinit (&state));
+ input[4] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 5, 3, &state);
+ ASSERT (ret == 2);
+ ASSERT (wctob (wc) == EOF);
+ ASSERT (mbsinit (&state));
+ input[5] = '\0';
+ input[6] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 7, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == '>');
+ ASSERT (mbsinit (&state));
+ }
+ return 0;
+
+ case '4':
+ /* Locale encoding is GB18030. */
+ {
+ char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
+ memset (&state, '\0', sizeof (mbstate_t));
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'B');
+ ASSERT (mbsinit (&state));
+ input[0] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 1, 1, &state);
+ ASSERT (ret == (size_t)(-2));
+ ASSERT (wc == (wchar_t) 0xBADFACE);
+ ASSERT (!mbsinit (&state));
+ input[1] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 2, 7, &state);
+ ASSERT (ret == 1);
+ ASSERT (wctob (wc) == EOF);
+ ASSERT (mbsinit (&state));
+ input[2] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 3, 6, &state);
+ ASSERT (ret == 4);
+ ASSERT (wctob (wc) == EOF);
+ ASSERT (mbsinit (&state));
+ input[3] = '\0';
+ input[4] = '\0';
+ input[5] = '\0';
+ input[6] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 7, 2, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'e');
+ ASSERT (mbsinit (&state));
+ input[5] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 8, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'r');
+ ASSERT (mbsinit (&state));
+ }
+ return 0;
+ }
+
+ return 1;
+}
diff --git a/tests/test-mbrtowc1.sh b/tests/test-mbrtowc1.sh
new file mode 100755
index 00000000..3becba3a
--- /dev/null
+++ b/tests/test-mbrtowc1.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: ${LOCALE_FR=fr_FR}
+if test $LOCALE_FR = none; then
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no traditional french locale is installed"
+ else
+ echo "Skipping test: no traditional french locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$LOCALE_FR \
+./test-mbrtowc${EXEEXT} 1
diff --git a/tests/test-mbrtowc2.sh b/tests/test-mbrtowc2.sh
new file mode 100755
index 00000000..0405abaf
--- /dev/null
+++ b/tests/test-mbrtowc2.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Test whether a specific UTF-8 locale is installed.
+: ${LOCALE_FR_UTF8=fr_FR.UTF-8}
+if test $LOCALE_FR_UTF8 = none; then
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no french Unicode locale is installed"
+ else
+ echo "Skipping test: no french Unicode locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$LOCALE_FR_UTF8 \
+./test-mbrtowc${EXEEXT} 2
diff --git a/tests/test-mbrtowc3.sh b/tests/test-mbrtowc3.sh
new file mode 100755
index 00000000..63a89a2e
--- /dev/null
+++ b/tests/test-mbrtowc3.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Test whether a specific EUC-JP locale is installed.
+: ${LOCALE_JA=ja_JP}
+if test $LOCALE_JA = none; then
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no traditional japanese locale is installed"
+ else
+ echo "Skipping test: no traditional japanese locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$LOCALE_JA \
+./test-mbrtowc${EXEEXT} 3
diff --git a/tests/test-mbrtowc4.sh b/tests/test-mbrtowc4.sh
new file mode 100755
index 00000000..b299a2c4
--- /dev/null
+++ b/tests/test-mbrtowc4.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Test whether a specific GB18030 locale is installed.
+: ${LOCALE_ZH_CN=zh_CN.GB18030}
+if test $LOCALE_ZH_CN = none; then
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no transitional chinese locale is installed"
+ else
+ echo "Skipping test: no transitional chinese locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$LOCALE_ZH_CN \
+./test-mbrtowc${EXEEXT} 4
diff --git a/tests/test-mbsinit.c b/tests/test-mbsinit.c
new file mode 100644
index 00000000..5d4c9c3a
--- /dev/null
+++ b/tests/test-mbsinit.c
@@ -0,0 +1,62 @@
+/* Test of test for initial conversion state.
+ Copyright (C) 2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+
+#include <config.h>
+
+#include <wchar.h>
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main (int argc, char *argv[])
+{
+ static mbstate_t state;
+
+ ASSERT (mbsinit (&state));
+
+ if (argc > 1)
+ {
+ static const char input[1] = "\303";
+ wchar_t wc;
+ size_t ret;
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ ret = mbrtowc (&wc, input, 1, &state);
+ ASSERT (ret == (size_t)(-2));
+ ASSERT (!mbsinit (&state));
+ }
+
+ return 0;
+}
diff --git a/tests/test-mbsinit.sh b/tests/test-mbsinit.sh
new file mode 100755
index 00000000..bbda48d2
--- /dev/null
+++ b/tests/test-mbsinit.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Test whether a specific UTF-8 locale is installed.
+: ${LOCALE_FR_UTF8=fr_FR.UTF-8}
+if test $LOCALE_FR_UTF8 = none; then
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no french Unicode locale is installed"
+ else
+ echo "Skipping test: no french Unicode locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$LOCALE_FR_UTF8 \
+./test-mbsinit${EXEEXT}
diff --git a/tests/test-memchr.c b/tests/test-memchr.c
new file mode 100644
index 00000000..1124f8b5
--- /dev/null
+++ b/tests/test-memchr.c
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2008-2009 Free Software Foundation
+ * Written by Eric Blake and Bruno Haible
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <string.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "zerosize-ptr.h"
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+/* Calculating void * + int is not portable, so this wrapper converts
+ to char * to make the tests easier to write. */
+#define MEMCHR (char *) memchr
+
+int
+main ()
+{
+ size_t n = 0x100000;
+ char *input = malloc (n);
+ ASSERT (input);
+
+ input[0] = 'a';
+ input[1] = 'b';
+ memset (input + 2, 'c', 1024);
+ memset (input + 1026, 'd', n - 1028);
+ input[n - 2] = 'e';
+ input[n - 1] = 'a';
+
+ /* Basic behavior tests. */
+ ASSERT (MEMCHR (input, 'a', n) == input);
+
+ ASSERT (MEMCHR (input, 'a', 0) == NULL);
+ ASSERT (MEMCHR (zerosize_ptr (), 'a', 0) == NULL);
+
+ ASSERT (MEMCHR (input, 'b', n) == input + 1);
+ ASSERT (MEMCHR (input, 'c', n) == input + 2);
+ ASSERT (MEMCHR (input, 'd', n) == input + 1026);
+
+ ASSERT (MEMCHR (input + 1, 'a', n - 1) == input + n - 1);
+ ASSERT (MEMCHR (input + 1, 'e', n - 1) == input + n - 2);
+
+ ASSERT (MEMCHR (input, 'f', n) == NULL);
+ ASSERT (MEMCHR (input, '\0', n) == NULL);
+
+ /* Check that a very long haystack is handled quickly if the byte is
+ found near the beginning. */
+ {
+ size_t repeat = 10000;
+ for (; repeat > 0; repeat--)
+ {
+ ASSERT (MEMCHR (input, 'c', n) == input + 2);
+ }
+ }
+
+ /* Alignment tests. */
+ {
+ int i, j;
+ for (i = 0; i < 32; i++)
+ {
+ for (j = 0; j < 256; j++)
+ input[i + j] = j;
+ for (j = 0; j < 256; j++)
+ {
+ ASSERT (MEMCHR (input + i, j, 256) == input + i + j);
+ }
+ }
+ }
+
+ /* Check that memchr() does not read past the first occurrence of the
+ byte being searched. See the Austin Group's clarification
+ <http://www.opengroup.org/austin/docs/austin_454.txt>. */
+ {
+ char *page_boundary = (char *) zerosize_ptr ();
+
+ if (page_boundary != NULL)
+ {
+ int n;
+
+ for (n = 1; n <= 500; n++)
+ {
+ char *mem = page_boundary - n;
+ memset (mem, 'X', n);
+ ASSERT (MEMCHR (mem, 'U', n) == NULL);
+
+ {
+ int i;
+
+ for (i = 0; i < n; i++)
+ {
+ mem[i] = 'U';
+ ASSERT (MEMCHR (mem, 'U', 4000) == mem + i);
+ mem[i] = 'X';
+ }
+ }
+ }
+ }
+ }
+
+ free (input);
+
+ return 0;
+}
diff --git a/tests/test-printf-frexp.c b/tests/test-printf-frexp.c
new file mode 100644
index 00000000..8ba93488
--- /dev/null
+++ b/tests/test-printf-frexp.c
@@ -0,0 +1,131 @@
+/* Test of splitting a double into fraction and mantissa.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "printf-frexp.h"
+
+#include <float.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static double
+my_ldexp (double x, int d)
+{
+ for (; d > 0; d--)
+ x *= 2.0;
+ for (; d < 0; d++)
+ x *= 0.5;
+ return x;
+}
+
+int
+main ()
+{
+ int i;
+ /* The use of 'volatile' guarantees that excess precision bits are dropped
+ when dealing with denormalized numbers. It is necessary on x86 systems
+ where double-floats are not IEEE compliant by default, to avoid that the
+ results become platform and compiler option dependent. 'volatile' is a
+ portable alternative to gcc's -ffloat-store option. */
+ volatile double x;
+
+ for (i = 1, x = 1.0; i <= DBL_MAX_EXP; i++, x *= 2.0)
+ {
+ int exp = -9999;
+ double mantissa = printf_frexp (x, &exp);
+ ASSERT (exp == i - 1);
+ ASSERT (mantissa == 1.0);
+ }
+ for (i = 1, x = 1.0; i >= DBL_MIN_EXP; i--, x *= 0.5)
+ {
+ int exp = -9999;
+ double mantissa = printf_frexp (x, &exp);
+ ASSERT (exp == i - 1);
+ ASSERT (mantissa == 1.0);
+ }
+ for (; i >= DBL_MIN_EXP - 100 && x > 0.0; i--, x *= 0.5)
+ {
+ int exp = -9999;
+ double mantissa = printf_frexp (x, &exp);
+ ASSERT (exp == DBL_MIN_EXP - 1);
+ ASSERT (mantissa == my_ldexp (1.0, i - DBL_MIN_EXP));
+ }
+
+ for (i = 1, x = 1.01; i <= DBL_MAX_EXP; i++, x *= 2.0)
+ {
+ int exp = -9999;
+ double mantissa = printf_frexp (x, &exp);
+ ASSERT (exp == i - 1);
+ ASSERT (mantissa == 1.01);
+ }
+ for (i = 1, x = 1.01; i >= DBL_MIN_EXP; i--, x *= 0.5)
+ {
+ int exp = -9999;
+ double mantissa = printf_frexp (x, &exp);
+ ASSERT (exp == i - 1);
+ ASSERT (mantissa == 1.01);
+ }
+ for (; i >= DBL_MIN_EXP - 100 && x > 0.0; i--, x *= 0.5)
+ {
+ int exp = -9999;
+ double mantissa = printf_frexp (x, &exp);
+ ASSERT (exp == DBL_MIN_EXP - 1);
+ ASSERT (mantissa >= my_ldexp (1.0, i - DBL_MIN_EXP));
+ ASSERT (mantissa <= my_ldexp (2.0, i - DBL_MIN_EXP));
+ ASSERT (mantissa == my_ldexp (x, - exp));
+ }
+
+ for (i = 1, x = 1.73205; i <= DBL_MAX_EXP; i++, x *= 2.0)
+ {
+ int exp = -9999;
+ double mantissa = printf_frexp (x, &exp);
+ ASSERT (exp == i - 1);
+ ASSERT (mantissa == 1.73205);
+ }
+ for (i = 1, x = 1.73205; i >= DBL_MIN_EXP; i--, x *= 0.5)
+ {
+ int exp = -9999;
+ double mantissa = printf_frexp (x, &exp);
+ ASSERT (exp == i - 1);
+ ASSERT (mantissa == 1.73205);
+ }
+ for (; i >= DBL_MIN_EXP - 100 && x > 0.0; i--, x *= 0.5)
+ {
+ int exp = -9999;
+ double mantissa = printf_frexp (x, &exp);
+ ASSERT (exp == DBL_MIN_EXP - 1);
+ ASSERT (mantissa >= my_ldexp (1.0, i - DBL_MIN_EXP));
+ ASSERT (mantissa <= my_ldexp (2.0, i - DBL_MIN_EXP));
+ ASSERT (mantissa == my_ldexp (x, - exp));
+ }
+
+ return 0;
+}
diff --git a/tests/test-printf-frexpl.c b/tests/test-printf-frexpl.c
new file mode 100644
index 00000000..c4c156a9
--- /dev/null
+++ b/tests/test-printf-frexpl.c
@@ -0,0 +1,147 @@
+/* Test of splitting a 'long double' into fraction and mantissa.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "printf-frexpl.h"
+
+#include <float.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "fpucw.h"
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+/* On MIPS IRIX machines, LDBL_MIN_EXP is -1021, but the smallest reliable
+ exponent for 'long double' is -964. Similarly, on PowerPC machines,
+ LDBL_MIN_EXP is -1021, but the smallest reliable exponent for 'long double'
+ is -968. For exponents below that, the precision may be truncated to the
+ precision used for 'double'. */
+#ifdef __sgi
+# define MIN_NORMAL_EXP (LDBL_MIN_EXP + 57)
+# define MIN_SUBNORMAL_EXP MIN_NORMAL_EXP
+#elif defined __ppc || defined __ppc__ || defined __powerpc || defined __powerpc__
+# define MIN_NORMAL_EXP (LDBL_MIN_EXP + 53)
+# define MIN_SUBNORMAL_EXP MIN_NORMAL_EXP
+#else
+# define MIN_NORMAL_EXP LDBL_MIN_EXP
+# define MIN_SUBNORMAL_EXP (LDBL_MIN_EXP - 100)
+#endif
+
+static long double
+my_ldexp (long double x, int d)
+{
+ for (; d > 0; d--)
+ x *= 2.0L;
+ for (; d < 0; d++)
+ x *= 0.5L;
+ return x;
+}
+
+int
+main ()
+{
+ int i;
+ long double x;
+ DECL_LONG_DOUBLE_ROUNDING
+
+ BEGIN_LONG_DOUBLE_ROUNDING ();
+
+ for (i = 1, x = 1.0L; i <= LDBL_MAX_EXP; i++, x *= 2.0L)
+ {
+ int exp = -9999;
+ long double mantissa = printf_frexpl (x, &exp);
+ ASSERT (exp == i - 1);
+ ASSERT (mantissa == 1.0L);
+ }
+ for (i = 1, x = 1.0L; i >= MIN_NORMAL_EXP; i--, x *= 0.5L)
+ {
+ int exp = -9999;
+ long double mantissa = printf_frexpl (x, &exp);
+ ASSERT (exp == i - 1);
+ ASSERT (mantissa == 1.0L);
+ }
+ for (; i >= MIN_SUBNORMAL_EXP && x > 0.0L; i--, x *= 0.5L)
+ {
+ int exp = -9999;
+ long double mantissa = printf_frexpl (x, &exp);
+ ASSERT (exp == LDBL_MIN_EXP - 1);
+ ASSERT (mantissa == my_ldexp (1.0L, i - LDBL_MIN_EXP));
+ }
+
+ for (i = 1, x = 1.01L; i <= LDBL_MAX_EXP; i++, x *= 2.0L)
+ {
+ int exp = -9999;
+ long double mantissa = printf_frexpl (x, &exp);
+ ASSERT (exp == i - 1);
+ ASSERT (mantissa == 1.01L);
+ }
+ for (i = 1, x = 1.01L; i >= MIN_NORMAL_EXP; i--, x *= 0.5L)
+ {
+ int exp = -9999;
+ long double mantissa = printf_frexpl (x, &exp);
+ ASSERT (exp == i - 1);
+ ASSERT (mantissa == 1.01L);
+ }
+ for (; i >= MIN_SUBNORMAL_EXP && x > 0.0L; i--, x *= 0.5L)
+ {
+ int exp = -9999;
+ long double mantissa = printf_frexpl (x, &exp);
+ ASSERT (exp == LDBL_MIN_EXP - 1);
+ ASSERT (mantissa >= my_ldexp (1.0L, i - LDBL_MIN_EXP));
+ ASSERT (mantissa <= my_ldexp (2.0L, i - LDBL_MIN_EXP));
+ ASSERT (mantissa == my_ldexp (x, - exp));
+ }
+
+ for (i = 1, x = 1.73205L; i <= LDBL_MAX_EXP; i++, x *= 2.0L)
+ {
+ int exp = -9999;
+ long double mantissa = printf_frexpl (x, &exp);
+ ASSERT (exp == i - 1);
+ ASSERT (mantissa == 1.73205L);
+ }
+ for (i = 1, x = 1.73205L; i >= MIN_NORMAL_EXP; i--, x *= 0.5L)
+ {
+ int exp = -9999;
+ long double mantissa = printf_frexpl (x, &exp);
+ ASSERT (exp == i - 1);
+ ASSERT (mantissa == 1.73205L);
+ }
+ for (; i >= MIN_SUBNORMAL_EXP && x > 0.0L; i--, x *= 0.5L)
+ {
+ int exp = -9999;
+ long double mantissa = printf_frexpl (x, &exp);
+ ASSERT (exp == LDBL_MIN_EXP - 1);
+ ASSERT (mantissa >= my_ldexp (1.0L, i - LDBL_MIN_EXP));
+ ASSERT (mantissa <= my_ldexp (2.0L, i - LDBL_MIN_EXP));
+ ASSERT (mantissa == my_ldexp (x, - exp));
+ }
+
+ return 0;
+}
diff --git a/tests/test-signbit.c b/tests/test-signbit.c
new file mode 100644
index 00000000..97f68e6a
--- /dev/null
+++ b/tests/test-signbit.c
@@ -0,0 +1,204 @@
+/* Test of signbit() substitute.
+ Copyright (C) 2007, 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include <math.h>
+
+#include <float.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+float zerof = 0.0f;
+double zerod = 0.0;
+long double zerol = 0.0L;
+
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0f.
+ So we use -zerof instead. */
+
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
+ So we use -zerod instead. */
+
+/* On HP-UX 10.20, negating 0.0L does not yield -0.0L.
+ So we use minus_zerol instead.
+ IRIX cc can't put -0.0L into .data, but can compute at runtime.
+ Note that the expression -LDBL_MIN * LDBL_MIN does not work on other
+ platforms, such as when cross-compiling to PowerPC on MacOS X 10.5. */
+#if defined __hpux || defined __sgi
+static long double
+compute_minus_zerol (void)
+{
+ return -LDBL_MIN * LDBL_MIN;
+}
+# define minus_zerol compute_minus_zerol ()
+#else
+long double minus_zerol = -0.0L;
+#endif
+
+static void
+test_signbitf ()
+{
+ /* Finite values. */
+ ASSERT (!signbit (3.141f));
+ ASSERT (!signbit (3.141e30f));
+ ASSERT (!signbit (3.141e-30f));
+ ASSERT (signbit (-2.718f));
+ ASSERT (signbit (-2.718e30f));
+ ASSERT (signbit (-2.718e-30f));
+ /* Zeros. */
+ ASSERT (!signbit (0.0f));
+ if (1.0f / -zerof < 0)
+ ASSERT (signbit (-zerof));
+ else
+ ASSERT (!signbit (-zerof));
+ /* Infinite values. */
+ ASSERT (!signbit (1.0f / 0.0f));
+ ASSERT (signbit (-1.0f / 0.0f));
+ /* Quiet NaN. */
+ (void) signbit (zerof / zerof);
+#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
+ /* Signalling NaN. */
+ {
+ #define NWORDS \
+ ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+ typedef union { float value; unsigned int word[NWORDS]; } memory_float;
+ memory_float m;
+ m.value = zerof / zerof;
+# if FLT_EXPBIT0_BIT > 0
+ m.word[FLT_EXPBIT0_WORD] ^= (unsigned int) 1 << (FLT_EXPBIT0_BIT - 1);
+# else
+ m.word[FLT_EXPBIT0_WORD + (FLT_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
+ ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
+# endif
+ if (FLT_EXPBIT0_WORD < NWORDS / 2)
+ m.word[FLT_EXPBIT0_WORD + 1] |= (unsigned int) 1 << FLT_EXPBIT0_BIT;
+ else
+ m.word[0] |= (unsigned int) 1;
+ (void) signbit (m.value);
+ #undef NWORDS
+ }
+#endif
+}
+
+static void
+test_signbitd ()
+{
+ /* Finite values. */
+ ASSERT (!signbit (3.141));
+ ASSERT (!signbit (3.141e30));
+ ASSERT (!signbit (3.141e-30));
+ ASSERT (signbit (-2.718));
+ ASSERT (signbit (-2.718e30));
+ ASSERT (signbit (-2.718e-30));
+ /* Zeros. */
+ ASSERT (!signbit (0.0));
+ if (1.0 / -zerod < 0)
+ ASSERT (signbit (-zerod));
+ else
+ ASSERT (!signbit (-zerod));
+ /* Infinite values. */
+ ASSERT (!signbit (1.0 / 0.0));
+ ASSERT (signbit (-1.0 / 0.0));
+ /* Quiet NaN. */
+ (void) signbit (zerod / zerod);
+#if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
+ /* Signalling NaN. */
+ {
+ #define NWORDS \
+ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+ typedef union { double value; unsigned int word[NWORDS]; } memory_double;
+ memory_double m;
+ m.value = zerod / zerod;
+# if DBL_EXPBIT0_BIT > 0
+ m.word[DBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (DBL_EXPBIT0_BIT - 1);
+# else
+ m.word[DBL_EXPBIT0_WORD + (DBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
+ ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
+# endif
+ m.word[DBL_EXPBIT0_WORD + (DBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
+ |= (unsigned int) 1 << DBL_EXPBIT0_BIT;
+ (void) signbit (m.value);
+ #undef NWORDS
+ }
+#endif
+}
+
+static void
+test_signbitl ()
+{
+ /* Finite values. */
+ ASSERT (!signbit (3.141L));
+ ASSERT (!signbit (3.141e30L));
+ ASSERT (!signbit (3.141e-30L));
+ ASSERT (signbit (-2.718L));
+ ASSERT (signbit (-2.718e30L));
+ ASSERT (signbit (-2.718e-30L));
+ /* Zeros. */
+ ASSERT (!signbit (0.0L));
+ if (1.0L / minus_zerol < 0)
+ ASSERT (signbit (minus_zerol));
+ else
+ ASSERT (!signbit (minus_zerol));
+ /* Infinite values. */
+ ASSERT (!signbit (1.0L / 0.0L));
+ ASSERT (signbit (-1.0L / 0.0L));
+ /* Quiet NaN. */
+ (void) signbit (zerol / zerol);
+#if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT
+ /* Signalling NaN. */
+ {
+ #define NWORDS \
+ ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+ typedef union { long double value; unsigned int word[NWORDS]; } memory_long_double;
+ memory_long_double m;
+ m.value = zerol / zerol;
+# if LDBL_EXPBIT0_BIT > 0
+ m.word[LDBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (LDBL_EXPBIT0_BIT - 1);
+# else
+ m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
+ ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
+# endif
+ m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
+ |= (unsigned int) 1 << LDBL_EXPBIT0_BIT;
+ (void) signbit (m.value);
+ #undef NWORDS
+ }
+#endif
+}
+
+int
+main ()
+{
+ test_signbitf ();
+ test_signbitd ();
+ test_signbitl ();
+ return 0;
+}
diff --git a/tests/test-stdbool.c b/tests/test-stdbool.c
new file mode 100644
index 00000000..30d53217
--- /dev/null
+++ b/tests/test-stdbool.c
@@ -0,0 +1,95 @@
+/* Test of <stdbool.h> substitute.
+ Copyright (C) 2002-2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include <stdbool.h>
+
+#ifndef bool
+ "error: bool is not defined"
+#endif
+#ifndef false
+ "error: false is not defined"
+#endif
+#if false
+ "error: false is not 0"
+#endif
+#ifndef true
+ "error: true is not defined"
+#endif
+#if true != 1
+ "error: true is not 1"
+#endif
+#ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+#endif
+
+#if 0 /* Cannot be guaranteed with gnulib's <stdbool.h>. */
+struct s { _Bool s: 1; _Bool t; } s;
+#endif
+
+char a[true == 1 ? 1 : -1];
+char b[false == 0 ? 1 : -1];
+char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+#if 0 /* Cannot be guaranteed with gnulib's <stdbool.h>. */
+char d[(bool) 0.5 == true ? 1 : -1];
+bool e = &s;
+#endif
+char f[(_Bool) 0.0 == false ? 1 : -1];
+char g[true];
+char h[sizeof (_Bool)];
+#if 0 /* See above. */
+char i[sizeof s.t];
+#endif
+enum { j = false, k = true, l = false * true, m = true * 256 };
+_Bool n[m];
+char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+#if 0 /* Cannot be guaranteed with gnulib's <stdbool.h>. */
+#if defined __xlc__ || defined __GNUC__
+ /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
+ reported by James Lemley on 2005-10-05; see
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+ This test is not quite right, since xlc is allowed to
+ reject this program, as the initializer for xlcbug is
+ not one of the forms that C requires support for.
+ However, doing the test right would require a run-time
+ test, and that would make cross-compilation harder.
+ Let us hope that IBM fixes the xlc bug, and also adds
+ support for this kind of constant expression. In the
+ meantime, this test will reject xlc, which is OK, since
+ our stdbool.h substitute should suffice. We also test
+ this with GCC, where it should work, to detect more
+ quickly whether someone messes up the test in the
+ future. */
+ char digs[] = "0123456789";
+ int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
+#endif
+#endif
+/* Catch a bug in an HP-UX C compiler. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ */
+_Bool q = true;
+_Bool *pq = &q;
+
+int
+main ()
+{
+ return 0;
+}
diff --git a/tests/test-stdint.c b/tests/test-stdint.c
new file mode 100644
index 00000000..a2bf42ac
--- /dev/null
+++ b/tests/test-stdint.c
@@ -0,0 +1,360 @@
+/* Test of <stdint.h> substitute.
+ Copyright (C) 2006-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2006. */
+
+#include <config.h>
+
+/* Whether to enable pedantic checks. */
+#define DO_PEDANTIC 0
+
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#include <stdint.h>
+
+#include "verify.h"
+#include "intprops.h"
+
+#if __GNUC__ >= 2 && DO_PEDANTIC
+# define verify_same_types(expr1,expr2) \
+ extern void _verify_func(__LINE__) (__typeof__ (expr1) *); \
+ extern void _verify_func(__LINE__) (__typeof__ (expr2) *);
+# define _verify_func(line) _verify_func2(line)
+# define _verify_func2(line) verify_func_ ## line
+#else
+# define verify_same_types(expr1,expr2) extern void verify_func (int)
+#endif
+
+/* 7.18.1.1. Exact-width integer types */
+/* 7.18.2.1. Limits of exact-width integer types */
+
+int8_t a1[3] = { INT8_C (17), INT8_MIN, INT8_MAX };
+verify (TYPE_MINIMUM (int8_t) == INT8_MIN);
+verify (TYPE_MAXIMUM (int8_t) == INT8_MAX);
+verify_same_types (INT8_MIN, (int8_t) 0 + 0);
+verify_same_types (INT8_MAX, (int8_t) 0 + 0);
+
+int16_t a2[3] = { INT16_C (17), INT16_MIN, INT16_MAX };
+verify (TYPE_MINIMUM (int16_t) == INT16_MIN);
+verify (TYPE_MAXIMUM (int16_t) == INT16_MAX);
+verify_same_types (INT16_MIN, (int16_t) 0 + 0);
+verify_same_types (INT16_MAX, (int16_t) 0 + 0);
+
+int32_t a3[3] = { INT32_C (17), INT32_MIN, INT32_MAX };
+verify (TYPE_MINIMUM (int32_t) == INT32_MIN);
+verify (TYPE_MAXIMUM (int32_t) == INT32_MAX);
+verify_same_types (INT32_MIN, (int32_t) 0 + 0);
+verify_same_types (INT32_MAX, (int32_t) 0 + 0);
+
+#ifdef INT64_MAX
+int64_t a4[3] = { INT64_C (17), INT64_MIN, INT64_MAX };
+verify (TYPE_MINIMUM (int64_t) == INT64_MIN);
+verify (TYPE_MAXIMUM (int64_t) == INT64_MAX);
+verify_same_types (INT64_MIN, (int64_t) 0 + 0);
+verify_same_types (INT64_MAX, (int64_t) 0 + 0);
+#endif
+
+uint8_t b1[2] = { UINT8_C (17), UINT8_MAX };
+verify (TYPE_MAXIMUM (uint8_t) == UINT8_MAX);
+verify_same_types (UINT8_MAX, (uint8_t) 0 + 0);
+
+uint16_t b2[2] = { UINT16_C (17), UINT16_MAX };
+verify (TYPE_MAXIMUM (uint16_t) == UINT16_MAX);
+verify_same_types (UINT16_MAX, (uint16_t) 0 + 0);
+
+uint32_t b3[2] = { UINT32_C (17), UINT32_MAX };
+verify (TYPE_MAXIMUM (uint32_t) == UINT32_MAX);
+verify_same_types (UINT32_MAX, (uint32_t) 0 + 0);
+
+#ifdef UINT64_MAX
+uint64_t b4[2] = { UINT64_C (17), UINT64_MAX };
+verify (TYPE_MAXIMUM (uint64_t) == UINT64_MAX);
+verify_same_types (UINT64_MAX, (uint64_t) 0 + 0);
+#endif
+
+#if INT8_MIN && INT8_MAX && INT16_MIN && INT16_MAX && INT32_MIN && INT32_MAX
+/* ok */
+#else
+err or;
+#endif
+
+#if UINT8_MAX && UINT16_MAX && UINT32_MAX
+/* ok */
+#else
+err or;
+#endif
+
+/* 7.18.1.2. Minimum-width integer types */
+/* 7.18.2.2. Limits of minimum-width integer types */
+
+int_least8_t c1[3] = { 17, INT_LEAST8_MIN, INT_LEAST8_MAX };
+verify (TYPE_MINIMUM (int_least8_t) == INT_LEAST8_MIN);
+verify (TYPE_MAXIMUM (int_least8_t) == INT_LEAST8_MAX);
+verify_same_types (INT_LEAST8_MIN, (int_least8_t) 0 + 0);
+verify_same_types (INT_LEAST8_MAX, (int_least8_t) 0 + 0);
+
+int_least16_t c2[3] = { 17, INT_LEAST16_MIN, INT_LEAST16_MAX };
+verify (TYPE_MINIMUM (int_least16_t) == INT_LEAST16_MIN);
+verify (TYPE_MAXIMUM (int_least16_t) == INT_LEAST16_MAX);
+verify_same_types (INT_LEAST16_MIN, (int_least16_t) 0 + 0);
+verify_same_types (INT_LEAST16_MAX, (int_least16_t) 0 + 0);
+
+int_least32_t c3[3] = { 17, INT_LEAST32_MIN, INT_LEAST32_MAX };
+verify (TYPE_MINIMUM (int_least32_t) == INT_LEAST32_MIN);
+verify (TYPE_MAXIMUM (int_least32_t) == INT_LEAST32_MAX);
+verify_same_types (INT_LEAST32_MIN, (int_least32_t) 0 + 0);
+verify_same_types (INT_LEAST32_MAX, (int_least32_t) 0 + 0);
+
+#ifdef INT_LEAST64_MAX
+int_least64_t c4[3] = { 17, INT_LEAST64_MIN, INT_LEAST64_MAX };
+verify (TYPE_MINIMUM (int_least64_t) == INT_LEAST64_MIN);
+verify (TYPE_MAXIMUM (int_least64_t) == INT_LEAST64_MAX);
+verify_same_types (INT_LEAST64_MIN, (int_least64_t) 0 + 0);
+verify_same_types (INT_LEAST64_MAX, (int_least64_t) 0 + 0);
+#endif
+
+uint_least8_t d1[2] = { 17, UINT_LEAST8_MAX };
+verify (TYPE_MAXIMUM (uint_least8_t) == UINT_LEAST8_MAX);
+verify_same_types (UINT_LEAST8_MAX, (uint_least8_t) 0 + 0);
+
+uint_least16_t d2[2] = { 17, UINT_LEAST16_MAX };
+verify (TYPE_MAXIMUM (uint_least16_t) == UINT_LEAST16_MAX);
+verify_same_types (UINT_LEAST16_MAX, (uint_least16_t) 0 + 0);
+
+uint_least32_t d3[2] = { 17, UINT_LEAST32_MAX };
+verify (TYPE_MAXIMUM (uint_least32_t) == UINT_LEAST32_MAX);
+verify_same_types (UINT_LEAST32_MAX, (uint_least32_t) 0 + 0);
+
+#ifdef UINT_LEAST64_MAX
+uint_least64_t d4[2] = { 17, UINT_LEAST64_MAX };
+verify (TYPE_MAXIMUM (uint_least64_t) == UINT_LEAST64_MAX);
+verify_same_types (UINT_LEAST64_MAX, (uint_least64_t) 0 + 0);
+#endif
+
+#if INT_LEAST8_MIN && INT_LEAST8_MAX && INT_LEAST16_MIN && INT_LEAST16_MAX && INT_LEAST32_MIN && INT_LEAST32_MAX
+/* ok */
+#else
+err or;
+#endif
+
+#if UINT_LEAST8_MAX && UINT_LEAST16_MAX && UINT_LEAST32_MAX
+/* ok */
+#else
+err or;
+#endif
+
+/* 7.18.1.3. Fastest minimum-width integer types */
+/* 7.18.2.3. Limits of fastest minimum-width integer types */
+
+int_fast8_t e1[3] = { 17, INT_FAST8_MIN, INT_FAST8_MAX };
+verify (TYPE_MINIMUM (int_fast8_t) == INT_FAST8_MIN);
+verify (TYPE_MAXIMUM (int_fast8_t) == INT_FAST8_MAX);
+verify_same_types (INT_FAST8_MIN, (int_fast8_t) 0 + 0);
+verify_same_types (INT_FAST8_MAX, (int_fast8_t) 0 + 0);
+
+int_fast16_t e2[3] = { 17, INT_FAST16_MIN, INT_FAST16_MAX };
+verify (TYPE_MINIMUM (int_fast16_t) == INT_FAST16_MIN);
+verify (TYPE_MAXIMUM (int_fast16_t) == INT_FAST16_MAX);
+verify_same_types (INT_FAST16_MIN, (int_fast16_t) 0 + 0);
+verify_same_types (INT_FAST16_MAX, (int_fast16_t) 0 + 0);
+
+int_fast32_t e3[3] = { 17, INT_FAST32_MIN, INT_FAST32_MAX };
+verify (TYPE_MINIMUM (int_fast32_t) == INT_FAST32_MIN);
+verify (TYPE_MAXIMUM (int_fast32_t) == INT_FAST32_MAX);
+verify_same_types (INT_FAST32_MIN, (int_fast32_t) 0 + 0);
+verify_same_types (INT_FAST32_MAX, (int_fast32_t) 0 + 0);
+
+#ifdef INT_FAST64_MAX
+int_fast64_t e4[3] = { 17, INT_FAST64_MIN, INT_FAST64_MAX };
+verify (TYPE_MINIMUM (int_fast64_t) == INT_FAST64_MIN);
+verify (TYPE_MAXIMUM (int_fast64_t) == INT_FAST64_MAX);
+verify_same_types (INT_FAST64_MIN, (int_fast64_t) 0 + 0);
+verify_same_types (INT_FAST64_MAX, (int_fast64_t) 0 + 0);
+#endif
+
+uint_fast8_t f1[2] = { 17, UINT_FAST8_MAX };
+verify (TYPE_MAXIMUM (uint_fast8_t) == UINT_FAST8_MAX);
+verify_same_types (UINT_FAST8_MAX, (uint_fast8_t) 0 + 0);
+
+uint_fast16_t f2[2] = { 17, UINT_FAST16_MAX };
+verify (TYPE_MAXIMUM (uint_fast16_t) == UINT_FAST16_MAX);
+verify_same_types (UINT_FAST16_MAX, (uint_fast16_t) 0 + 0);
+
+uint_fast32_t f3[2] = { 17, UINT_FAST32_MAX };
+verify (TYPE_MAXIMUM (uint_fast32_t) == UINT_FAST32_MAX);
+verify_same_types (UINT_FAST32_MAX, (uint_fast32_t) 0 + 0);
+
+#ifdef UINT_FAST64_MAX
+uint_fast64_t f4[2] = { 17, UINT_FAST64_MAX };
+verify (TYPE_MAXIMUM (uint_fast64_t) == UINT_FAST64_MAX);
+verify_same_types (UINT_FAST64_MAX, (uint_fast64_t) 0 + 0);
+#endif
+
+#if INT_FAST8_MIN && INT_FAST8_MAX && INT_FAST16_MIN && INT_FAST16_MAX && INT_FAST32_MIN && INT_FAST32_MAX
+/* ok */
+#else
+err or;
+#endif
+
+#if UINT_FAST8_MAX && UINT_FAST16_MAX && UINT_FAST32_MAX
+/* ok */
+#else
+err or;
+#endif
+
+/* 7.18.1.4. Integer types capable of holding object pointers */
+/* 7.18.2.4. Limits of integer types capable of holding object pointers */
+
+intptr_t g[3] = { 17, INTPTR_MIN, INTPTR_MAX };
+verify (TYPE_MINIMUM (intptr_t) == INTPTR_MIN);
+verify (TYPE_MAXIMUM (intptr_t) == INTPTR_MAX);
+verify_same_types (INTPTR_MIN, (intptr_t) 0 + 0);
+verify_same_types (INTPTR_MAX, (intptr_t) 0 + 0);
+
+uintptr_t h[2] = { 17, UINTPTR_MAX };
+verify (TYPE_MAXIMUM (uintptr_t) == UINTPTR_MAX);
+verify_same_types (UINTPTR_MAX, (uintptr_t) 0 + 0);
+
+#if INTPTR_MIN && INTPTR_MAX && UINTPTR_MAX
+/* ok */
+#else
+err or;
+#endif
+
+/* 7.18.1.5. Greatest-width integer types */
+/* 7.18.2.5. Limits of greatest-width integer types */
+
+intmax_t i[3] = { INTMAX_C (17), INTMAX_MIN, INTMAX_MAX };
+verify (TYPE_MINIMUM (intmax_t) == INTMAX_MIN);
+verify (TYPE_MAXIMUM (intmax_t) == INTMAX_MAX);
+verify_same_types (INTMAX_MIN, (intmax_t) 0 + 0);
+verify_same_types (INTMAX_MAX, (intmax_t) 0 + 0);
+
+uintmax_t j[2] = { UINTMAX_C (17), UINTMAX_MAX };
+verify (TYPE_MAXIMUM (uintmax_t) == UINTMAX_MAX);
+verify_same_types (UINTMAX_MAX, (uintmax_t) 0 + 0);
+
+/* As of 2007, Sun C and HP-UX 10.20 cc don't support 'long long' constants in
+ the preprocessor. */
+#if !(defined __SUNPRO_C || (defined __hpux && !defined __GNUC__))
+#if INTMAX_MIN && INTMAX_MAX && UINTMAX_MAX
+/* ok */
+#else
+err or;
+#endif
+#endif
+
+/* 7.18.3. Limits of other integer types */
+
+#include <stddef.h>
+
+verify (TYPE_MINIMUM (ptrdiff_t) == PTRDIFF_MIN);
+verify (TYPE_MAXIMUM (ptrdiff_t) == PTRDIFF_MAX);
+verify_same_types (PTRDIFF_MIN, (ptrdiff_t) 0 + 0);
+verify_same_types (PTRDIFF_MAX, (ptrdiff_t) 0 + 0);
+
+#if PTRDIFF_MIN && PTRDIFF_MAX
+/* ok */
+#else
+err or;
+#endif
+
+#include <signal.h>
+
+verify (TYPE_MINIMUM (sig_atomic_t) == SIG_ATOMIC_MIN);
+verify (TYPE_MAXIMUM (sig_atomic_t) == SIG_ATOMIC_MAX);
+verify_same_types (SIG_ATOMIC_MIN, (sig_atomic_t) 0 + 0);
+verify_same_types (SIG_ATOMIC_MAX, (sig_atomic_t) 0 + 0);
+
+#if SIG_ATOMIC_MIN != 17 && SIG_ATOMIC_MAX
+/* ok */
+#else
+err or;
+#endif
+
+verify (TYPE_MAXIMUM (size_t) == SIZE_MAX);
+verify_same_types (SIZE_MAX, (size_t) 0 + 0);
+
+#if SIZE_MAX
+/* ok */
+#else
+err or;
+#endif
+
+#if HAVE_WCHAR_T
+verify (TYPE_MINIMUM (wchar_t) == WCHAR_MIN);
+verify (TYPE_MAXIMUM (wchar_t) == WCHAR_MAX);
+verify_same_types (WCHAR_MIN, (wchar_t) 0 + 0);
+verify_same_types (WCHAR_MAX, (wchar_t) 0 + 0);
+
+# if WCHAR_MIN != 17 && WCHAR_MAX
+/* ok */
+# else
+err or;
+# endif
+#endif
+
+#if HAVE_WINT_T
+# include <wchar.h>
+
+verify (TYPE_MINIMUM (wint_t) == WINT_MIN);
+verify (TYPE_MAXIMUM (wint_t) == WINT_MAX);
+verify_same_types (WINT_MIN, (wint_t) 0 + 0);
+verify_same_types (WINT_MAX, (wint_t) 0 + 0);
+
+# if WINT_MIN != 17 && WINT_MAX
+/* ok */
+# else
+err or;
+# endif
+#endif
+
+/* 7.18.4. Macros for integer constants */
+
+verify (INT8_C (17) == 17);
+verify_same_types (INT8_C (17), (int_least8_t)0 + 0);
+verify (UINT8_C (17) == 17);
+verify_same_types (UINT8_C (17), (uint_least8_t)0 + 0);
+
+verify (INT16_C (17) == 17);
+verify_same_types (INT16_C (17), (int_least16_t)0 + 0);
+verify (UINT16_C (17) == 17);
+verify_same_types (UINT16_C (17), (uint_least16_t)0 + 0);
+
+verify (INT32_C (17) == 17);
+verify_same_types (INT32_C (17), (int_least32_t)0 + 0);
+verify (UINT32_C (17) == 17);
+verify_same_types (UINT32_C (17), (uint_least32_t)0 + 0);
+
+#ifdef INT64_C
+verify (INT64_C (17) == 17);
+verify_same_types (INT64_C (17), (int_least64_t)0 + 0);
+#endif
+#ifdef UINT64_C
+verify (UINT64_C (17) == 17);
+verify_same_types (UINT64_C (17), (uint_least64_t)0 + 0);
+#endif
+
+verify (INTMAX_C (17) == 17);
+verify_same_types (INTMAX_C (17), (intmax_t)0 + 0);
+verify (UINTMAX_C (17) == 17);
+verify_same_types (UINTMAX_C (17), (uintmax_t)0 + 0);
+
+
+int
+main ()
+{
+ return 0;
+}
diff --git a/tests/test-stdlib.c b/tests/test-stdlib.c
new file mode 100644
index 00000000..ae46ba16
--- /dev/null
+++ b/tests/test-stdlib.c
@@ -0,0 +1,43 @@
+/* Test of <stdlib.h> substitute.
+ Copyright (C) 2007, 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include <stdlib.h>
+
+#include "verify.h"
+
+int exitcode;
+
+/* Check that NULL can be passed through varargs as a pointer type,
+ per POSIX 2008. */
+verify (sizeof NULL == sizeof (void *));
+
+int
+main ()
+{
+ /* Check that some macros are defined and different integer constants. */
+ switch (exitcode)
+ {
+ case EXIT_SUCCESS:
+ case EXIT_FAILURE:
+ break;
+ }
+
+ return 0;
+}
diff --git a/tests/test-strerror.c b/tests/test-strerror.c
new file mode 100644
index 00000000..3d9814d5
--- /dev/null
+++ b/tests/test-strerror.c
@@ -0,0 +1,65 @@
+/* Test of strerror() function.
+ Copyright (C) 2007-2008 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 3, 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. */
+
+/* Written by Eric Blake <ebb9@byu.net>, 2007. */
+
+#include <config.h>
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main (int argc, char **argv)
+{
+ char *str;
+
+ str = strerror (EACCES);
+ ASSERT (str);
+ ASSERT (*str);
+
+ str = strerror (ETIMEDOUT);
+ ASSERT (str);
+ ASSERT (*str);
+
+ str = strerror (EOVERFLOW);
+ ASSERT (str);
+ ASSERT (*str);
+
+ str = strerror (0);
+ ASSERT (str);
+ ASSERT (*str);
+
+ str = strerror (-3);
+ ASSERT (str);
+ ASSERT (*str);
+
+ return 0;
+}
diff --git a/tests/test-striconveh.c b/tests/test-striconveh.c
new file mode 100644
index 00000000..16a16f46
--- /dev/null
+++ b/tests/test-striconveh.c
@@ -0,0 +1,922 @@
+/* Test of character set conversion with error handling.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "striconveh.h"
+
+#if HAVE_ICONV
+# include <iconv.h>
+#endif
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+/* Magic number for detecting bounds violations. */
+#define MAGIC 0x1983EFF1
+
+static size_t *
+new_offsets (size_t n)
+{
+ size_t *offsets = (size_t *) malloc ((n + 1) * sizeof (size_t));
+ offsets[n] = MAGIC;
+ return offsets;
+}
+
+int
+main ()
+{
+ static enum iconv_ilseq_handler handlers[] =
+ { iconveh_error, iconveh_question_mark, iconveh_escape_sequence };
+ size_t h;
+ size_t o;
+ size_t i;
+
+#if HAVE_ICONV
+ /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1,
+ ISO-8859-2, and UTF-8. */
+ iconv_t cd_88591_to_88592 = iconv_open ("ISO-8859-2", "ISO-8859-1");
+ iconv_t cd_88592_to_88591 = iconv_open ("ISO-8859-1", "ISO-8859-2");
+ iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+ iconv_t cd_utf8_to_88591 = iconv_open ("ISO-8859-1", "UTF-8");
+ iconv_t cd_88592_to_utf8 = iconv_open ("UTF-8", "ISO-8859-2");
+ iconv_t cd_utf8_to_88592 = iconv_open ("ISO-8859-2", "UTF-8");
+ iconv_t cd_utf7_to_utf8 = iconv_open ("UTF-8", "UTF-7");
+
+ ASSERT (cd_88591_to_utf8 != (iconv_t)(-1));
+ ASSERT (cd_utf8_to_88591 != (iconv_t)(-1));
+ ASSERT (cd_88592_to_utf8 != (iconv_t)(-1));
+ ASSERT (cd_utf8_to_88592 != (iconv_t)(-1));
+
+ /* ------------------------ Test mem_cd_iconveh() ------------------------ */
+
+ /* Test conversion from ISO-8859-2 to ISO-8859-1 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_cd_iconveh (input, strlen (input),
+ cd_88592_to_88591,
+ cd_88592_to_utf8, cd_utf8_to_88591,
+ handler,
+ offsets,
+ &result, &length);
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 37; i++)
+ ASSERT (offsets[i] == i);
+ ASSERT (offsets[37] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* Test conversion from ISO-8859-2 to ISO-8859-1 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_cd_iconveh (input, strlen (input),
+ cd_88592_to_88591,
+ cd_88592_to_utf8, cd_utf8_to_88591,
+ handler,
+ offsets,
+ &result, &length);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (retval == -1 && errno == EILSEQ);
+ ASSERT (result == NULL);
+ if (o)
+ free (offsets);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Rafa? Maszkowski";
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 16; i++)
+ ASSERT (offsets[i] == i);
+ ASSERT (offsets[16] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Rafa\\u0142 Maszkowski";
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 16; i++)
+ ASSERT (offsets[i] == (i < 5 ? i :
+ i + 5));
+ ASSERT (offsets[16] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ }
+ }
+ }
+
+ /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_cd_iconveh (input, strlen (input),
+ cd_88591_to_utf8,
+ cd_88591_to_utf8, (iconv_t)(-1),
+ handler,
+ offsets,
+ &result, &length);
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 37; i++)
+ ASSERT (offsets[i] == (i < 1 ? i :
+ i < 12 ? i + 1 :
+ i < 18 ? i + 2 :
+ i + 3));
+ ASSERT (offsets[37] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_cd_iconveh (input, strlen (input),
+ cd_utf8_to_88591,
+ (iconv_t)(-1), cd_utf8_to_88591,
+ handler,
+ offsets,
+ &result, &length);
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 41; i++)
+ ASSERT (offsets[i] == (i < 1 ? i :
+ i == 1 ? (size_t)(-1) :
+ i < 13 ? i - 1 :
+ i == 13 ? (size_t)(-1) :
+ i < 20 ? i - 2 :
+ i == 20 ? (size_t)(-1) :
+ i < 40 ? i - 3 :
+ (size_t)(-1)));
+ ASSERT (offsets[41] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Rafa\305\202 Maszkowski"; /* Rafał Maszkowski */
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_cd_iconveh (input, strlen (input),
+ cd_utf8_to_88591,
+ (iconv_t)(-1), cd_utf8_to_88591,
+ handler,
+ offsets,
+ &result, &length);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (retval == -1 && errno == EILSEQ);
+ ASSERT (result == NULL);
+ if (o)
+ free (offsets);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Rafa? Maszkowski";
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 17; i++)
+ ASSERT (offsets[i] == (i < 5 ? i :
+ i == 5 ? (size_t)(-1) :
+ i - 1));
+ ASSERT (offsets[17] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Rafa\\u0142 Maszkowski";
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 17; i++)
+ ASSERT (offsets[i] == (i < 5 ? i :
+ i == 5 ? (size_t)(-1) :
+ i + 4));
+ ASSERT (offsets[17] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ }
+ }
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\342";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_cd_iconveh (input, strlen (input),
+ cd_utf8_to_88591,
+ (iconv_t)(-1), cd_utf8_to_88591,
+ handler,
+ offsets,
+ &result, &length);
+ ASSERT (retval == 0);
+ ASSERT (length == 0);
+ if (o)
+ {
+ ASSERT (offsets[0] == 0);
+ ASSERT (offsets[1] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ if (cd_utf7_to_utf8 != (iconv_t)(-1))
+ {
+ /* Disabled on Solaris, because Solaris 9 iconv() is buggy: it returns
+ -1 / EILSEQ when converting the 7th byte of the input "+VDLYP9hA". */
+# if !(defined __sun && !defined _LIBICONV_VERSION)
+ /* Test conversion from UTF-7 to UTF-8 with EINVAL. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ /* This is base64 encoded 0x54 0x32 0xD8 0x3F 0xD8 0x40. It would
+ convert to U+5432 U+D83F U+D840 but these are Unicode surrogates. */
+ static const char input[] = "+VDLYP9hA";
+ static const char expected1[] = "\345\220\262"; /* 吲 glibc */
+ static const char expected2[] = ""; /* libiconv */
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_cd_iconveh (input, 7,
+ cd_utf7_to_utf8,
+ cd_utf7_to_utf8, (iconv_t)(-1),
+ handler,
+ NULL,
+ &result, &length);
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected1) || length == strlen (expected2));
+ ASSERT (result != NULL);
+ if (length == strlen (expected1))
+ ASSERT (memcmp (result, expected1, strlen (expected1)) == 0);
+ else
+ ASSERT (memcmp (result, expected2, strlen (expected2)) == 0);
+ free (result);
+ }
+
+ /* Test conversion from UTF-7 to UTF-8 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ /* This is base64 encoded 0xD8 0x3F 0xD8 0x40 0xD8 0x41. It would
+ convert to U+D83F U+D840 U+D841 but these are Unicode surrogates. */
+ static const char input[] = "+2D/YQNhB";
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_cd_iconveh (input, strlen (input),
+ cd_utf7_to_utf8,
+ cd_utf7_to_utf8, (iconv_t)(-1),
+ handler,
+ NULL,
+ &result, &length);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (retval == -1 && errno == EILSEQ);
+ ASSERT (result == NULL);
+ break;
+ case iconveh_question_mark:
+ case iconveh_escape_sequence:
+ {
+ /* glibc result */
+ static const char expected1[] = "?????";
+ /* libiconv <= 1.12 result */
+ static const char expected2[] = "?2D/YQNhB";
+ /* libiconv behaviour changed in version 1.13: the result is
+ '?' U+0FF6 U+1036; this is U+D83F U+D840 U+D841 shifted left
+ by 6 bits. */
+ static const char expected3[] = "?\340\277\266\341\200\266";
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected1)
+ || length == strlen (expected2)
+ || length == strlen (expected3));
+ ASSERT (result != NULL);
+ if (length == strlen (expected1))
+ ASSERT (memcmp (result, expected1, strlen (expected1)) == 0);
+ else if (length == strlen (expected2))
+ ASSERT (memcmp (result, expected2, strlen (expected2)) == 0);
+ else
+ ASSERT (memcmp (result, expected3, strlen (expected3)) == 0);
+ free (result);
+ }
+ break;
+ }
+ }
+# endif
+ }
+
+ /* ------------------------ Test str_cd_iconveh() ------------------------ */
+
+ /* Test conversion from ISO-8859-2 to ISO-8859-1 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ char *result = str_cd_iconveh (input,
+ cd_88592_to_88591,
+ cd_88592_to_utf8, cd_utf8_to_88591,
+ handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test conversion from ISO-8859-2 to ISO-8859-1 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */
+ char *result = str_cd_iconveh (input,
+ cd_88592_to_88591,
+ cd_88592_to_utf8, cd_utf8_to_88591,
+ handler);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (result == NULL && errno == EILSEQ);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Rafa? Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Rafa\\u0142 Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+ break;
+ }
+ }
+
+ /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+ char *result = str_cd_iconveh (input,
+ cd_88591_to_utf8,
+ cd_88591_to_utf8, (iconv_t)(-1),
+ handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ char *result = str_cd_iconveh (input,
+ cd_utf8_to_88591,
+ (iconv_t)(-1), cd_utf8_to_88591,
+ handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Costs: 27 \342\202\254"; /* EURO SIGN */
+ char *result = str_cd_iconveh (input,
+ cd_utf8_to_88591,
+ (iconv_t)(-1), cd_utf8_to_88591,
+ handler);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (result == NULL && errno == EILSEQ);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Costs: 27 ?";
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Costs: 27 \\u20AC";
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+ break;
+ }
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\342";
+ char *result = str_cd_iconveh (input,
+ cd_utf8_to_88591,
+ (iconv_t)(-1), cd_utf8_to_88591,
+ handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "") == 0);
+ free (result);
+ }
+
+ if (cd_88591_to_88592 != (iconv_t)(-1))
+ iconv_close (cd_88591_to_88592);
+ if (cd_88592_to_88591 != (iconv_t)(-1))
+ iconv_close (cd_88592_to_88591);
+ iconv_close (cd_88591_to_utf8);
+ iconv_close (cd_utf8_to_88591);
+ iconv_close (cd_88592_to_utf8);
+ iconv_close (cd_utf8_to_88592);
+
+ /* ------------------------- Test mem_iconveh() ------------------------- */
+
+ /* Test conversion from ISO-8859-2 to ISO-8859-1 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_iconveh (input, strlen (input),
+ "ISO-8859-2", "ISO-8859-1",
+ handler,
+ offsets,
+ &result, &length);
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 37; i++)
+ ASSERT (offsets[i] == i);
+ ASSERT (offsets[37] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* Test conversion from ISO-8859-2 to ISO-8859-1 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_iconveh (input, strlen (input),
+ "ISO-8859-2", "ISO-8859-1",
+ handler,
+ offsets,
+ &result, &length);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (retval == -1 && errno == EILSEQ);
+ ASSERT (result == NULL);
+ if (o)
+ free (offsets);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Rafa? Maszkowski";
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 16; i++)
+ ASSERT (offsets[i] == i);
+ ASSERT (offsets[16] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Rafa\\u0142 Maszkowski";
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 16; i++)
+ ASSERT (offsets[i] == (i < 5 ? i :
+ i + 5));
+ ASSERT (offsets[16] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ }
+ }
+ }
+
+ /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_iconveh (input, strlen (input),
+ "ISO-8859-1", "UTF-8",
+ handler,
+ offsets,
+ &result, &length);
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 37; i++)
+ ASSERT (offsets[i] == (i < 1 ? i :
+ i < 12 ? i + 1 :
+ i < 18 ? i + 2 :
+ i + 3));
+ ASSERT (offsets[37] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_iconveh (input, strlen (input),
+ "UTF-8", "ISO-8859-1",
+ handler,
+ offsets,
+ &result, &length);
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 41; i++)
+ ASSERT (offsets[i] == (i < 1 ? i :
+ i == 1 ? (size_t)(-1) :
+ i < 13 ? i - 1 :
+ i == 13 ? (size_t)(-1) :
+ i < 20 ? i - 2 :
+ i == 20 ? (size_t)(-1) :
+ i < 40 ? i - 3 :
+ (size_t)(-1)));
+ ASSERT (offsets[41] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Rafa\305\202 Maszkowski"; /* Rafał Maszkowski */
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_iconveh (input, strlen (input),
+ "UTF-8", "ISO-8859-1",
+ handler,
+ offsets,
+ &result, &length);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (retval == -1 && errno == EILSEQ);
+ ASSERT (result == NULL);
+ if (o)
+ free (offsets);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Rafa? Maszkowski";
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 17; i++)
+ ASSERT (offsets[i] == (i < 5 ? i :
+ i == 5 ? (size_t)(-1) :
+ i - 1));
+ ASSERT (offsets[17] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Rafa\\u0142 Maszkowski";
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 17; i++)
+ ASSERT (offsets[i] == (i < 5 ? i :
+ i == 5 ? (size_t)(-1) :
+ i + 4));
+ ASSERT (offsets[17] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ }
+ }
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\342";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_iconveh (input, strlen (input),
+ "UTF-8", "ISO-8859-1",
+ handler,
+ offsets,
+ &result, &length);
+ ASSERT (retval == 0);
+ ASSERT (length == 0);
+ if (o)
+ {
+ ASSERT (offsets[0] == 0);
+ ASSERT (offsets[1] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* ------------------------- Test str_iconveh() ------------------------- */
+
+ /* Test conversion from ISO-8859-2 to ISO-8859-1 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ char *result = str_iconveh (input, "ISO-8859-2", "ISO-8859-1", handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test conversion from ISO-8859-2 to ISO-8859-1 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */
+ char *result = str_iconveh (input, "ISO-8859-2", "ISO-8859-1", handler);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (result == NULL && errno == EILSEQ);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Rafa? Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Rafa\\u0142 Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+ break;
+ }
+ }
+
+ /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+ char *result = str_iconveh (input, "ISO-8859-1", "UTF-8", handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ char *result = str_iconveh (input, "UTF-8", "ISO-8859-1", handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Costs: 27 \342\202\254"; /* EURO SIGN */
+ char *result = str_iconveh (input, "UTF-8", "ISO-8859-1", handler);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (result == NULL && errno == EILSEQ);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Costs: 27 ?";
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Costs: 27 \\u20AC";
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+ break;
+ }
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\342";
+ char *result = str_iconveh (input, "UTF-8", "ISO-8859-1", handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "") == 0);
+ free (result);
+ }
+
+#endif
+
+ return 0;
+}
diff --git a/tests/test-striconveha.c b/tests/test-striconveha.c
new file mode 100644
index 00000000..47e9a46e
--- /dev/null
+++ b/tests/test-striconveha.c
@@ -0,0 +1,609 @@
+/* Test of character set conversion with error handling and autodetection.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "striconveha.h"
+
+#if HAVE_ICONV
+# include <iconv.h>
+#endif
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+/* Magic number for detecting bounds violations. */
+#define MAGIC 0x1983EFF1
+
+static size_t *
+new_offsets (size_t n)
+{
+ size_t *offsets = (size_t *) malloc ((n + 1) * sizeof (size_t));
+ offsets[n] = MAGIC;
+ return offsets;
+}
+
+int
+main ()
+{
+ static enum iconv_ilseq_handler handlers[] =
+ { iconveh_error, iconveh_question_mark, iconveh_escape_sequence };
+ size_t h;
+ size_t o;
+ size_t i;
+
+#if HAVE_ICONV
+ /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1,
+ ISO-8859-2, and UTF-8. */
+
+ /* ------------------------- Test mem_iconveha() ------------------------- */
+
+ /* Test conversion from ISO-8859-2 to ISO-8859-1 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_iconveha (input, strlen (input),
+ "ISO-8859-2", "ISO-8859-1",
+ false, handler,
+ offsets,
+ &result, &length);
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 37; i++)
+ ASSERT (offsets[i] == i);
+ ASSERT (offsets[37] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* Test conversion from ISO-8859-2 to ISO-8859-1 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_iconveha (input, strlen (input),
+ "ISO-8859-2", "ISO-8859-1",
+ false, handler,
+ offsets,
+ &result, &length);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (retval == -1 && errno == EILSEQ);
+ ASSERT (result == NULL);
+ if (o)
+ free (offsets);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Rafa? Maszkowski";
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 16; i++)
+ ASSERT (offsets[i] == i);
+ ASSERT (offsets[16] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Rafa\\u0142 Maszkowski";
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 16; i++)
+ ASSERT (offsets[i] == (i < 5 ? i :
+ i + 5));
+ ASSERT (offsets[16] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ }
+ }
+ }
+
+ /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_iconveha (input, strlen (input),
+ "ISO-8859-1", "UTF-8",
+ false, handler,
+ offsets,
+ &result, &length);
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 37; i++)
+ ASSERT (offsets[i] == (i < 1 ? i :
+ i < 12 ? i + 1 :
+ i < 18 ? i + 2 :
+ i + 3));
+ ASSERT (offsets[37] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_iconveha (input, strlen (input),
+ "UTF-8", "ISO-8859-1",
+ false, handler,
+ offsets,
+ &result, &length);
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 41; i++)
+ ASSERT (offsets[i] == (i < 1 ? i :
+ i == 1 ? (size_t)(-1) :
+ i < 13 ? i - 1 :
+ i == 13 ? (size_t)(-1) :
+ i < 20 ? i - 2 :
+ i == 20 ? (size_t)(-1) :
+ i < 40 ? i - 3 :
+ (size_t)(-1)));
+ ASSERT (offsets[41] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Rafa\305\202 Maszkowski"; /* Rafał Maszkowski */
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_iconveha (input, strlen (input),
+ "UTF-8", "ISO-8859-1",
+ false, handler,
+ offsets,
+ &result, &length);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (retval == -1 && errno == EILSEQ);
+ ASSERT (result == NULL);
+ if (o)
+ free (offsets);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Rafa? Maszkowski";
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 17; i++)
+ ASSERT (offsets[i] == (i < 5 ? i :
+ i == 5 ? (size_t)(-1) :
+ i - 1));
+ ASSERT (offsets[17] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Rafa\\u0142 Maszkowski";
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 17; i++)
+ ASSERT (offsets[i] == (i < 5 ? i :
+ i == 5 ? (size_t)(-1) :
+ i + 4));
+ ASSERT (offsets[17] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ }
+ }
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\342";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_iconveha (input, strlen (input),
+ "UTF-8", "ISO-8859-1",
+ false, handler,
+ offsets,
+ &result, &length);
+ ASSERT (retval == 0);
+ ASSERT (length == 0);
+ if (o)
+ {
+ ASSERT (offsets[0] == 0);
+ ASSERT (offsets[1] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
+# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
+ /* Test conversions from autodetect_jp to UTF-8. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\244\263\244\363\244\313\244\301\244\317"; /* こんにちは in EUC-JP */
+ static const char expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_iconveha (input, strlen (input),
+ "autodetect_jp", "UTF-8",
+ false, handler,
+ offsets,
+ &result, &length);
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 10; i++)
+ ASSERT (offsets[i] == ((i % 2) == 0 ? (i / 2) * 3 : (size_t)(-1)));
+ ASSERT (offsets[10] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\202\261\202\361\202\311\202\277\202\315"; /* こんにちは in Shift_JIS */
+ static const char expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_iconveha (input, strlen (input),
+ "autodetect_jp", "UTF-8",
+ false, handler,
+ offsets,
+ &result, &length);
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 10; i++)
+ ASSERT (offsets[i] == ((i % 2) == 0 ? (i / 2) * 3 : (size_t)(-1)));
+ ASSERT (offsets[10] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\033$B$3$s$K$A$O\033(B"; /* こんにちは in ISO-2022-JP-2 */
+ static const char expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_iconveha (input, strlen (input),
+ "autodetect_jp", "UTF-8",
+ false, handler,
+ offsets,
+ &result, &length);
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 16; i++)
+ ASSERT (offsets[i] == (i == 0 ? 0 :
+ i == 5 ? 3 :
+ i == 7 ? 6 :
+ i == 9 ? 9 :
+ i == 11 ? 12 :
+ i == 13 ? 15 :
+ (size_t)(-1)));
+ ASSERT (offsets[16] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+# endif
+
+# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 || _LIBICONV_VERSION >= 0x0105
+ /* Test conversion from UTF-8 to ISO-8859-1 with transliteration. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Costs: 27 \342\202\254"; /* EURO SIGN */
+ static const char expected[] = "Costs: 27 EUR";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ char *result = NULL;
+ size_t length = 0;
+ int retval = mem_iconveha (input, strlen (input),
+ "UTF-8", "ISO-8859-1",
+ true, handler,
+ offsets,
+ &result, &length);
+ ASSERT (retval == 0);
+ ASSERT (length == strlen (expected));
+ ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 13; i++)
+ ASSERT (offsets[i] == (i < 11 ? i : (size_t)(-1)));
+ ASSERT (offsets[13] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+# endif
+
+ /* ------------------------- Test str_iconveha() ------------------------- */
+
+ /* Test conversion from ISO-8859-2 to ISO-8859-1 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ char *result = str_iconveha (input, "ISO-8859-2", "ISO-8859-1", false, handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test conversion from ISO-8859-2 to ISO-8859-1 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */
+ char *result = str_iconveha (input, "ISO-8859-2", "ISO-8859-1", false, handler);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (result == NULL && errno == EILSEQ);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Rafa? Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Rafa\\u0142 Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+ break;
+ }
+ }
+
+ /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+ char *result = str_iconveha (input, "ISO-8859-1", "UTF-8", false, handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ char *result = str_iconveha (input, "UTF-8", "ISO-8859-1", false, handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Costs: 27 \342\202\254"; /* EURO SIGN */
+ char *result = str_iconveha (input, "UTF-8", "ISO-8859-1", false, handler);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (result == NULL && errno == EILSEQ);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Costs: 27 ?";
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Costs: 27 \\u20AC";
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+ break;
+ }
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\342";
+ char *result = str_iconveha (input, "UTF-8", "ISO-8859-1", false, handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "") == 0);
+ free (result);
+ }
+
+ /* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
+# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
+ /* Test conversions from autodetect_jp to UTF-8. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\244\263\244\363\244\313\244\301\244\317"; /* こんにちは in EUC-JP */
+ static const char expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */
+ char *result = str_iconveha (input, "autodetect_jp", "UTF-8", false, handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\202\261\202\361\202\311\202\277\202\315"; /* こんにちは in Shift_JIS */
+ static const char expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */
+ char *result = str_iconveha (input, "autodetect_jp", "UTF-8", false, handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\033$B$3$s$K$A$O\033(B"; /* こんにちは in ISO-2022-JP-2 */
+ static const char expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */
+ char *result = str_iconveha (input, "autodetect_jp", "UTF-8", false, handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+# endif
+
+# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 || _LIBICONV_VERSION >= 0x0105
+ /* Test conversion from UTF-8 to ISO-8859-1 with transliteration. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Costs: 27 \342\202\254"; /* EURO SIGN */
+ static const char expected[] = "Costs: 27 EUR";
+ char *result = str_iconveha (input, "UTF-8", "ISO-8859-1", true, handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+# endif
+
+#endif
+
+ return 0;
+}
diff --git a/tests/test-string.c b/tests/test-string.c
new file mode 100644
index 00000000..fe53cd9b
--- /dev/null
+++ b/tests/test-string.c
@@ -0,0 +1,33 @@
+/* Test of <string.h> substitute.
+ Copyright (C) 2007, 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include <string.h>
+
+#include "verify.h"
+
+/* Check that NULL can be passed through varargs as a pointer type,
+ per POSIX 2008. */
+verify (sizeof NULL == sizeof (void *));
+
+int
+main ()
+{
+ return 0;
+}
diff --git a/tests/test-unistd.c b/tests/test-unistd.c
new file mode 100644
index 00000000..129367b4
--- /dev/null
+++ b/tests/test-unistd.c
@@ -0,0 +1,56 @@
+/* Test of <unistd.h> substitute.
+ Copyright (C) 2007, 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include <unistd.h>
+
+#include "verify.h"
+
+/* Check that NULL can be passed through varargs as a pointer type,
+ per POSIX 2008. */
+verify (sizeof NULL == sizeof (void *));
+
+/* Check that the various SEEK_* macros are defined. */
+int sk[] = { SEEK_CUR, SEEK_END, SEEK_SET };
+
+/* Check that the various *_FILENO macros are defined. */
+#if ! (defined STDIN_FILENO \
+ && (STDIN_FILENO + STDOUT_FILENO + STDERR_FILENO == 3))
+missing or broken *_FILENO macros
+#endif
+
+/* Check that the types are all defined. */
+size_t t1;
+ssize_t t2;
+#ifdef TODO /* Not implemented in gnulib yet */
+uid_t t3;
+gid_t t4;
+#endif
+off_t t5;
+pid_t t6;
+#ifdef TODO
+useconds_t t7;
+intptr_t t8;
+#endif
+
+int
+main ()
+{
+ return 0;
+}
diff --git a/tests/test-wchar.c b/tests/test-wchar.c
new file mode 100644
index 00000000..19da7d93
--- /dev/null
+++ b/tests/test-wchar.c
@@ -0,0 +1,31 @@
+/* Test of <wchar.h> substitute.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include <wchar.h>
+
+/* Check that the types wchar_t and wint_t are defined. */
+wchar_t a = 'c';
+wint_t b = 'x';
+
+int
+main ()
+{
+ return 0;
+}
diff --git a/tests/test-wctype.c b/tests/test-wctype.c
new file mode 100644
index 00000000..c2d86016
--- /dev/null
+++ b/tests/test-wctype.c
@@ -0,0 +1,46 @@
+/* Test of <wctype.h> substitute.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include <wctype.h>
+
+/* Check that the type wint_t is defined. */
+wint_t a = 'x';
+
+int
+main ()
+{
+ /* Check that the isw* functions exist as functions or as macros. */
+ (void) iswalnum (0);
+ (void) iswalpha (0);
+#if 0 /* not portable: missing on mingw */
+ (void) iswblank (0);
+#endif
+ (void) iswcntrl (0);
+ (void) iswdigit (0);
+ (void) iswgraph (0);
+ (void) iswlower (0);
+ (void) iswprint (0);
+ (void) iswpunct (0);
+ (void) iswspace (0);
+ (void) iswupper (0);
+ (void) iswxdigit (0);
+
+ return 0;
+}
diff --git a/tests/test-wcwidth.c b/tests/test-wcwidth.c
new file mode 100644
index 00000000..582a8aa2
--- /dev/null
+++ b/tests/test-wcwidth.c
@@ -0,0 +1,91 @@
+/* Test of wcwidth() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include <wchar.h>
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "localcharset.h"
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ wchar_t wc;
+
+ /* Test width of ASCII characters. */
+ for (wc = 0x20; wc < 0x7F; wc++)
+ ASSERT (wcwidth (wc) == 1);
+
+ /* Switch to an UTF-8 locale. */
+ if (setlocale (LC_ALL, "fr_FR.UTF-8") != NULL
+ /* Check whether it's really an UTF-8 locale.
+ On OpenBSD 4.0, the setlocale call succeeds only for the LC_CTYPE
+ category and therefore returns "C/fr_FR.UTF-8/C/C/C/C", but the
+ LC_CTYPE category is effectively set to an ASCII LC_CTYPE category;
+ in particular, locale_charset() returns "ASCII". */
+ && strcmp (locale_charset (), "UTF-8") == 0)
+ {
+ /* Test width of ASCII characters. */
+ for (wc = 0x20; wc < 0x7F; wc++)
+ ASSERT (wcwidth (wc) == 1);
+
+ /* Test width of some non-spacing characters. */
+ ASSERT (wcwidth (0x0301) == 0);
+ ASSERT (wcwidth (0x05B0) == 0);
+
+ /* Test width of some format control characters. */
+ ASSERT (wcwidth (0x200E) <= 0);
+ ASSERT (wcwidth (0x2060) <= 0);
+#if 0 /* wchar_t may be only 16 bits. */
+ ASSERT (wcwidth (0xE0001) <= 0);
+ ASSERT (wcwidth (0xE0044) <= 0);
+#endif
+
+ /* Test width of some zero width characters. */
+ ASSERT (wcwidth (0x200B) == 0);
+ ASSERT (wcwidth (0xFEFF) <= 0);
+
+ /* Test width of some CJK characters. */
+ ASSERT (wcwidth (0x3000) == 2);
+ ASSERT (wcwidth (0xB250) == 2);
+ ASSERT (wcwidth (0xFF1A) == 2);
+#if 0 /* wchar_t may be only 16 bits. */
+ ASSERT (wcwidth (0x20369) == 2);
+ ASSERT (wcwidth (0x2F876) == 2);
+#endif
+ }
+
+ return 0;
+}
diff --git a/tests/unicase/test-casecmp.h b/tests/unicase/test-casecmp.h
new file mode 100644
index 00000000..d057f898
--- /dev/null
+++ b/tests/unicase/test-casecmp.h
@@ -0,0 +1,69 @@
+/* Test of case and normalization insensitive comparison of Unicode strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+static void
+test_ascii (int (*my_casecmp) (const UNIT *, size_t, const UNIT *, size_t, const char *, uninorm_t, int *),
+ uninorm_t nf)
+{
+ /* Empty string. */
+ {
+ int cmp;
+
+ ASSERT (my_casecmp (NULL, 0, NULL, 0, NULL, nf, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ {
+ static const UNIT input[] = { 'x', 'y' };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), NULL, 0, NULL, nf, &cmp) == 0);
+ ASSERT (cmp == 1);
+
+ ASSERT (my_casecmp (NULL, 0, input, SIZEOF (input), NULL, nf, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), input, SIZEOF (input), NULL, nf, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Normal lexicographic order. */
+ {
+ static const UNIT input1[] = { 'A', 'm', 'e', 'r', 'i', 'c', 'a' };
+ static const UNIT input2[] = { 'A', 'm', 'i', 'g', 'o' };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, nf, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input1, SIZEOF (input1), NULL, nf, &cmp) == 0);
+ ASSERT (cmp == 1);
+ }
+
+ /* Shorter and longer strings. */
+ {
+ static const UNIT input1[] = { 'R', 'e', 'a', 'g', 'a', 'n' };
+ static const UNIT input2[] = { 'R', 'e', 'a', 'g', 'a', 'n', 'o', 'm', 'i', 'c', 's' };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, nf, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input1, SIZEOF (input1), NULL, nf, &cmp) == 0);
+ ASSERT (cmp == 1);
+ }
+}
diff --git a/tests/unicase/test-cased.c b/tests/unicase/test-cased.c
new file mode 100644
index 00000000..37af3d22
--- /dev/null
+++ b/tests/unicase/test-cased.c
@@ -0,0 +1,135 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0041, 0x005A },
+ { 0x0061, 0x007A },
+ { 0x00AA, 0x00AA },
+ { 0x00B5, 0x00B5 },
+ { 0x00BA, 0x00BA },
+ { 0x00C0, 0x00D6 },
+ { 0x00D8, 0x00F6 },
+ { 0x00F8, 0x01BA },
+ { 0x01BC, 0x01BF },
+ { 0x01C4, 0x0293 },
+ { 0x0295, 0x02B8 },
+ { 0x02C0, 0x02C1 },
+ { 0x02E0, 0x02E4 },
+ { 0x0345, 0x0345 },
+ { 0x0370, 0x0373 },
+ { 0x0376, 0x0377 },
+ { 0x037A, 0x037D },
+ { 0x0386, 0x0386 },
+ { 0x0388, 0x038A },
+ { 0x038C, 0x038C },
+ { 0x038E, 0x03A1 },
+ { 0x03A3, 0x03F5 },
+ { 0x03F7, 0x0481 },
+ { 0x048A, 0x0523 },
+ { 0x0531, 0x0556 },
+ { 0x0561, 0x0587 },
+ { 0x10A0, 0x10C5 },
+ { 0x1D00, 0x1DBF },
+ { 0x1E00, 0x1F15 },
+ { 0x1F18, 0x1F1D },
+ { 0x1F20, 0x1F45 },
+ { 0x1F48, 0x1F4D },
+ { 0x1F50, 0x1F57 },
+ { 0x1F59, 0x1F59 },
+ { 0x1F5B, 0x1F5B },
+ { 0x1F5D, 0x1F5D },
+ { 0x1F5F, 0x1F7D },
+ { 0x1F80, 0x1FB4 },
+ { 0x1FB6, 0x1FBC },
+ { 0x1FBE, 0x1FBE },
+ { 0x1FC2, 0x1FC4 },
+ { 0x1FC6, 0x1FCC },
+ { 0x1FD0, 0x1FD3 },
+ { 0x1FD6, 0x1FDB },
+ { 0x1FE0, 0x1FEC },
+ { 0x1FF2, 0x1FF4 },
+ { 0x1FF6, 0x1FFC },
+ { 0x2071, 0x2071 },
+ { 0x207F, 0x207F },
+ { 0x2090, 0x2094 },
+ { 0x2102, 0x2102 },
+ { 0x2107, 0x2107 },
+ { 0x210A, 0x2113 },
+ { 0x2115, 0x2115 },
+ { 0x2119, 0x211D },
+ { 0x2124, 0x2124 },
+ { 0x2126, 0x2126 },
+ { 0x2128, 0x2128 },
+ { 0x212A, 0x212D },
+ { 0x212F, 0x2134 },
+ { 0x2139, 0x2139 },
+ { 0x213C, 0x213F },
+ { 0x2145, 0x2149 },
+ { 0x214E, 0x214E },
+ { 0x2160, 0x217F },
+ { 0x2183, 0x2184 },
+ { 0x24B6, 0x24E9 },
+ { 0x2C00, 0x2C2E },
+ { 0x2C30, 0x2C5E },
+ { 0x2C60, 0x2C6F },
+ { 0x2C71, 0x2C7D },
+ { 0x2C80, 0x2CE4 },
+ { 0x2D00, 0x2D25 },
+ { 0xA640, 0xA65F },
+ { 0xA662, 0xA66D },
+ { 0xA680, 0xA697 },
+ { 0xA722, 0xA787 },
+ { 0xA78B, 0xA78C },
+ { 0xFB00, 0xFB06 },
+ { 0xFB13, 0xFB17 },
+ { 0xFF21, 0xFF3A },
+ { 0xFF41, 0xFF5A },
+ { 0x10400, 0x1044F },
+ { 0x1D400, 0x1D454 },
+ { 0x1D456, 0x1D49C },
+ { 0x1D49E, 0x1D49F },
+ { 0x1D4A2, 0x1D4A2 },
+ { 0x1D4A5, 0x1D4A6 },
+ { 0x1D4A9, 0x1D4AC },
+ { 0x1D4AE, 0x1D4B9 },
+ { 0x1D4BB, 0x1D4BB },
+ { 0x1D4BD, 0x1D4C3 },
+ { 0x1D4C5, 0x1D505 },
+ { 0x1D507, 0x1D50A },
+ { 0x1D50D, 0x1D514 },
+ { 0x1D516, 0x1D51C },
+ { 0x1D51E, 0x1D539 },
+ { 0x1D53B, 0x1D53E },
+ { 0x1D540, 0x1D544 },
+ { 0x1D546, 0x1D546 },
+ { 0x1D54A, 0x1D550 },
+ { 0x1D552, 0x1D6A5 },
+ { 0x1D6A8, 0x1D6C0 },
+ { 0x1D6C2, 0x1D6DA },
+ { 0x1D6DC, 0x1D6FA },
+ { 0x1D6FC, 0x1D714 },
+ { 0x1D716, 0x1D734 },
+ { 0x1D736, 0x1D74E },
+ { 0x1D750, 0x1D76E },
+ { 0x1D770, 0x1D788 },
+ { 0x1D78A, 0x1D7A8 },
+ { 0x1D7AA, 0x1D7C2 },
+ { 0x1D7C4, 0x1D7CB }
+
+#define PREDICATE(c) uc_is_cased (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unicase/test-ignorable.c b/tests/unicase/test-ignorable.c
new file mode 100644
index 00000000..94f809e9
--- /dev/null
+++ b/tests/unicase/test-ignorable.c
@@ -0,0 +1,246 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0027, 0x0027 },
+ { 0x002E, 0x002E },
+ { 0x003A, 0x003A },
+ { 0x005E, 0x005E },
+ { 0x0060, 0x0060 },
+ { 0x00A8, 0x00A8 },
+ { 0x00AD, 0x00AD },
+ { 0x00AF, 0x00AF },
+ { 0x00B4, 0x00B4 },
+ { 0x00B7, 0x00B8 },
+ { 0x02B9, 0x02BF },
+ { 0x02C2, 0x02DF },
+ { 0x02E5, 0x0344 },
+ { 0x0346, 0x036F },
+ { 0x0374, 0x0375 },
+ { 0x0384, 0x0385 },
+ { 0x0387, 0x0387 },
+ { 0x0483, 0x0489 },
+ { 0x0559, 0x0559 },
+ { 0x0591, 0x05BD },
+ { 0x05BF, 0x05BF },
+ { 0x05C1, 0x05C2 },
+ { 0x05C4, 0x05C5 },
+ { 0x05C7, 0x05C7 },
+ { 0x05F4, 0x05F4 },
+ { 0x0600, 0x0603 },
+ { 0x0610, 0x061A },
+ { 0x0640, 0x0640 },
+ { 0x064B, 0x065E },
+ { 0x0670, 0x0670 },
+ { 0x06D6, 0x06E8 },
+ { 0x06EA, 0x06ED },
+ { 0x070F, 0x070F },
+ { 0x0711, 0x0711 },
+ { 0x0730, 0x074A },
+ { 0x07A6, 0x07B0 },
+ { 0x07EB, 0x07F5 },
+ { 0x07FA, 0x07FA },
+ { 0x0901, 0x0902 },
+ { 0x093C, 0x093C },
+ { 0x0941, 0x0948 },
+ { 0x094D, 0x094D },
+ { 0x0951, 0x0954 },
+ { 0x0962, 0x0963 },
+ { 0x0971, 0x0971 },
+ { 0x0981, 0x0981 },
+ { 0x09BC, 0x09BC },
+ { 0x09C1, 0x09C4 },
+ { 0x09CD, 0x09CD },
+ { 0x09E2, 0x09E3 },
+ { 0x0A01, 0x0A02 },
+ { 0x0A3C, 0x0A3C },
+ { 0x0A41, 0x0A42 },
+ { 0x0A47, 0x0A48 },
+ { 0x0A4B, 0x0A4D },
+ { 0x0A51, 0x0A51 },
+ { 0x0A70, 0x0A71 },
+ { 0x0A75, 0x0A75 },
+ { 0x0A81, 0x0A82 },
+ { 0x0ABC, 0x0ABC },
+ { 0x0AC1, 0x0AC5 },
+ { 0x0AC7, 0x0AC8 },
+ { 0x0ACD, 0x0ACD },
+ { 0x0AE2, 0x0AE3 },
+ { 0x0B01, 0x0B01 },
+ { 0x0B3C, 0x0B3C },
+ { 0x0B3F, 0x0B3F },
+ { 0x0B41, 0x0B44 },
+ { 0x0B4D, 0x0B4D },
+ { 0x0B56, 0x0B56 },
+ { 0x0B62, 0x0B63 },
+ { 0x0B82, 0x0B82 },
+ { 0x0BC0, 0x0BC0 },
+ { 0x0BCD, 0x0BCD },
+ { 0x0C3E, 0x0C40 },
+ { 0x0C46, 0x0C48 },
+ { 0x0C4A, 0x0C4D },
+ { 0x0C55, 0x0C56 },
+ { 0x0C62, 0x0C63 },
+ { 0x0CBC, 0x0CBC },
+ { 0x0CBF, 0x0CBF },
+ { 0x0CC6, 0x0CC6 },
+ { 0x0CCC, 0x0CCD },
+ { 0x0CE2, 0x0CE3 },
+ { 0x0D41, 0x0D44 },
+ { 0x0D4D, 0x0D4D },
+ { 0x0D62, 0x0D63 },
+ { 0x0DCA, 0x0DCA },
+ { 0x0DD2, 0x0DD4 },
+ { 0x0DD6, 0x0DD6 },
+ { 0x0E31, 0x0E31 },
+ { 0x0E34, 0x0E3A },
+ { 0x0E46, 0x0E4E },
+ { 0x0EB1, 0x0EB1 },
+ { 0x0EB4, 0x0EB9 },
+ { 0x0EBB, 0x0EBC },
+ { 0x0EC6, 0x0EC6 },
+ { 0x0EC8, 0x0ECD },
+ { 0x0F18, 0x0F19 },
+ { 0x0F35, 0x0F35 },
+ { 0x0F37, 0x0F37 },
+ { 0x0F39, 0x0F39 },
+ { 0x0F71, 0x0F7E },
+ { 0x0F80, 0x0F84 },
+ { 0x0F86, 0x0F87 },
+ { 0x0F90, 0x0F97 },
+ { 0x0F99, 0x0FBC },
+ { 0x0FC6, 0x0FC6 },
+ { 0x102D, 0x1030 },
+ { 0x1032, 0x1037 },
+ { 0x1039, 0x103A },
+ { 0x103D, 0x103E },
+ { 0x1058, 0x1059 },
+ { 0x105E, 0x1060 },
+ { 0x1071, 0x1074 },
+ { 0x1082, 0x1082 },
+ { 0x1085, 0x1086 },
+ { 0x108D, 0x108D },
+ { 0x10FC, 0x10FC },
+ { 0x135F, 0x135F },
+ { 0x1712, 0x1714 },
+ { 0x1732, 0x1734 },
+ { 0x1752, 0x1753 },
+ { 0x1772, 0x1773 },
+ { 0x17B4, 0x17B5 },
+ { 0x17B7, 0x17BD },
+ { 0x17C6, 0x17C6 },
+ { 0x17C9, 0x17D3 },
+ { 0x17D7, 0x17D7 },
+ { 0x17DD, 0x17DD },
+ { 0x180B, 0x180D },
+ { 0x1843, 0x1843 },
+ { 0x18A9, 0x18A9 },
+ { 0x1920, 0x1922 },
+ { 0x1927, 0x1928 },
+ { 0x1932, 0x1932 },
+ { 0x1939, 0x193B },
+ { 0x1A17, 0x1A18 },
+ { 0x1B00, 0x1B03 },
+ { 0x1B34, 0x1B34 },
+ { 0x1B36, 0x1B3A },
+ { 0x1B3C, 0x1B3C },
+ { 0x1B42, 0x1B42 },
+ { 0x1B6B, 0x1B73 },
+ { 0x1B80, 0x1B81 },
+ { 0x1BA2, 0x1BA5 },
+ { 0x1BA8, 0x1BA9 },
+ { 0x1C2C, 0x1C33 },
+ { 0x1C36, 0x1C37 },
+ { 0x1C78, 0x1C7D },
+ { 0x1DC0, 0x1DE6 },
+ { 0x1DFE, 0x1DFF },
+ { 0x1FBD, 0x1FBD },
+ { 0x1FBF, 0x1FC1 },
+ { 0x1FCD, 0x1FCF },
+ { 0x1FDD, 0x1FDF },
+ { 0x1FED, 0x1FEF },
+ { 0x1FFD, 0x1FFE },
+ { 0x200B, 0x200F },
+ { 0x2018, 0x2019 },
+ { 0x2024, 0x2024 },
+ { 0x2027, 0x2027 },
+ { 0x202A, 0x202E },
+ { 0x2060, 0x2064 },
+ { 0x206A, 0x206F },
+ { 0x20D0, 0x20F0 },
+ { 0x2D6F, 0x2D6F },
+ { 0x2DE0, 0x2DFF },
+ { 0x2E2F, 0x2E2F },
+ { 0x3005, 0x3005 },
+ { 0x302A, 0x302F },
+ { 0x3031, 0x3035 },
+ { 0x303B, 0x303B },
+ { 0x3099, 0x309E },
+ { 0x30FC, 0x30FE },
+ { 0xA015, 0xA015 },
+ { 0xA60C, 0xA60C },
+ { 0xA66F, 0xA672 },
+ { 0xA67C, 0xA67D },
+ { 0xA67F, 0xA67F },
+ { 0xA700, 0xA721 },
+ { 0xA788, 0xA78A },
+ { 0xA802, 0xA802 },
+ { 0xA806, 0xA806 },
+ { 0xA80B, 0xA80B },
+ { 0xA825, 0xA826 },
+ { 0xA8C4, 0xA8C4 },
+ { 0xA926, 0xA92D },
+ { 0xA947, 0xA951 },
+ { 0xAA29, 0xAA2E },
+ { 0xAA31, 0xAA32 },
+ { 0xAA35, 0xAA36 },
+ { 0xAA43, 0xAA43 },
+ { 0xAA4C, 0xAA4C },
+ { 0xFB1E, 0xFB1E },
+ { 0xFE00, 0xFE0F },
+ { 0xFE13, 0xFE13 },
+ { 0xFE20, 0xFE26 },
+ { 0xFE52, 0xFE52 },
+ { 0xFE55, 0xFE55 },
+ { 0xFEFF, 0xFEFF },
+ { 0xFF07, 0xFF07 },
+ { 0xFF0E, 0xFF0E },
+ { 0xFF1A, 0xFF1A },
+ { 0xFF3E, 0xFF3E },
+ { 0xFF40, 0xFF40 },
+ { 0xFF70, 0xFF70 },
+ { 0xFF9E, 0xFF9F },
+ { 0xFFE3, 0xFFE3 },
+ { 0xFFF9, 0xFFFB },
+ { 0x101FD, 0x101FD },
+ { 0x10A01, 0x10A03 },
+ { 0x10A05, 0x10A06 },
+ { 0x10A0C, 0x10A0F },
+ { 0x10A38, 0x10A3A },
+ { 0x10A3F, 0x10A3F },
+ { 0x1D167, 0x1D169 },
+ { 0x1D173, 0x1D182 },
+ { 0x1D185, 0x1D18B },
+ { 0x1D1AA, 0x1D1AD },
+ { 0x1D242, 0x1D244 },
+ { 0xE0001, 0xE0001 },
+ { 0xE0020, 0xE007F },
+ { 0xE0100, 0xE01EF }
+
+#define PREDICATE(c) uc_is_case_ignorable (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unicase/test-is-cased.h b/tests/unicase/test-is-cased.h
new file mode 100644
index 00000000..474b8a45
--- /dev/null
+++ b/tests/unicase/test-is-cased.h
@@ -0,0 +1,58 @@
+/* Test of test whether case matters for a Unicode string.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+static void
+test_ascii (int (*my_is) (const UNIT *, size_t, const char *, bool *))
+{
+ /* Test cases from Unicode 5.0, chapter 3. */
+ {
+ static const UNIT input[] = { 'A', 'B', 'C' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const UNIT input[] = { 'a', 'b', 'c' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const UNIT input[] = { 'a', 'B', 'c' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const UNIT input[] = { 'a', 'B', 'c', '1', '2', '3' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const UNIT input[] = { '1', '2', '3' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+}
diff --git a/tests/unicase/test-is-casefolded.h b/tests/unicase/test-is-casefolded.h
new file mode 100644
index 00000000..99638c6c
--- /dev/null
+++ b/tests/unicase/test-is-casefolded.h
@@ -0,0 +1,43 @@
+/* Test of test whether a Unicode string is already case-folded.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+static void
+test_ascii (int (*my_is) (const UNIT *, size_t, const char *, bool *))
+{
+ {
+ static const UNIT input[] = { 'J', 'O', 'H', 'N', ' ', 'S', 'M', 'I', 'T', 'H' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const UNIT input[] = { 'J', 'o', 'h', 'n', ' ', 'S', 'm', 'i', 't', 'h' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const UNIT input[] = { 'j', 'o', 'h', 'n', ' ', 's', 'm', 'i', 't', 'h' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+}
diff --git a/tests/unicase/test-is-lowercase.h b/tests/unicase/test-is-lowercase.h
new file mode 100644
index 00000000..cc37471b
--- /dev/null
+++ b/tests/unicase/test-is-lowercase.h
@@ -0,0 +1,95 @@
+/* Test of test whether a Unicode string is entirely lower case.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+static void
+test_ascii (int (*my_is) (const UNIT *, size_t, const char *, bool *))
+{
+ /* Test cases from Unicode 5.0, chapter 3. */
+ {
+ static const UNIT input[] = { 'a' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const UNIT input[] = { 'J', 'O', 'H', 'N', ' ', 'S', 'M', 'I', 'T', 'H' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const UNIT input[] = { 'J', 'o', 'h', 'n', ' ', 'S', 'm', 'i', 't', 'h' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const UNIT input[] = { 'j', 'o', 'h', 'n', ' ', 's', 'm', 'i', 't', 'h' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const UNIT input[] = { 'a', '2' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const UNIT input[] = { '3' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+
+ /* Test cases from Unicode 5.1.0. */
+ {
+ static const UNIT input[] = { 'H', 'H' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const UNIT input[] = { 'h', 'h' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const UNIT input[] = { 'H', 'h' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const UNIT input[] = { 'h', 'H' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+}
diff --git a/tests/unicase/test-is-titlecase.h b/tests/unicase/test-is-titlecase.h
new file mode 100644
index 00000000..b36ababa
--- /dev/null
+++ b/tests/unicase/test-is-titlecase.h
@@ -0,0 +1,95 @@
+/* Test of test whether a Unicode string is entirely title case.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+static void
+test_ascii (int (*my_is) (const UNIT *, size_t, const char *, bool *))
+{
+ /* Test cases from Unicode 5.0, chapter 3. */
+ {
+ static const UNIT input[] = { 'A' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const UNIT input[] = { 'J', 'O', 'H', 'N', ' ', 'S', 'M', 'I', 'T', 'H' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const UNIT input[] = { 'J', 'o', 'h', 'n', ' ', 'S', 'm', 'i', 't', 'h' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const UNIT input[] = { 'j', 'o', 'h', 'n', ' ', 's', 'm', 'i', 't', 'h' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const UNIT input[] = { 'A', '2' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const UNIT input[] = { '3' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+
+ /* Test cases from Unicode 5.1.0. */
+ {
+ static const UNIT input[] = { 'H', 'H' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const UNIT input[] = { 'h', 'h' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const UNIT input[] = { 'H', 'h' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const UNIT input[] = { 'h', 'H' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+}
diff --git a/tests/unicase/test-is-uppercase.h b/tests/unicase/test-is-uppercase.h
new file mode 100644
index 00000000..d1b7ca1e
--- /dev/null
+++ b/tests/unicase/test-is-uppercase.h
@@ -0,0 +1,95 @@
+/* Test of test whether a Unicode string is entirely upper case.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+static void
+test_ascii (int (*my_is) (const UNIT *, size_t, const char *, bool *))
+{
+ /* Test cases from Unicode 5.0, chapter 3. */
+ {
+ static const UNIT input[] = { 'A' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const UNIT input[] = { 'J', 'O', 'H', 'N', ' ', 'S', 'M', 'I', 'T', 'H' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const UNIT input[] = { 'J', 'o', 'h', 'n', ' ', 'S', 'm', 'i', 't', 'h' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const UNIT input[] = { 'j', 'o', 'h', 'n', ' ', 's', 'm', 'i', 't', 'h' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const UNIT input[] = { 'A', '2' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const UNIT input[] = { '3' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+
+ /* Test cases from Unicode 5.1.0. */
+ {
+ static const UNIT input[] = { 'H', 'H' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const UNIT input[] = { 'h', 'h' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const UNIT input[] = { 'H', 'h' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const UNIT input[] = { 'h', 'H' };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+}
diff --git a/tests/unicase/test-locale-language.c b/tests/unicase/test-locale-language.c
new file mode 100644
index 00000000..e8fe1815
--- /dev/null
+++ b/tests/unicase/test-locale-language.c
@@ -0,0 +1,56 @@
+/* Test of language code determination.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main (int argc, char *argv[])
+{
+ const char *expected;
+ const char *language;
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ expected = argv[1];
+
+ language = uc_locale_language ();
+ ASSERT (strcmp (language, expected) == 0);
+
+ return 0;
+}
diff --git a/tests/unicase/test-locale-language.sh b/tests/unicase/test-locale-language.sh
new file mode 100755
index 00000000..0a04a0da
--- /dev/null
+++ b/tests/unicase/test-locale-language.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+LC_ALL=C ./test-locale-language${EXEEXT} '' || exit 1
+
+: ${LOCALE_FR=fr_FR}
+if test $LOCALE_FR_UTF8 != none; then
+ LC_ALL=$LOCALE_FR_UTF8 ./test-locale-language${EXEEXT} fr || exit 1
+fi
+
+: ${LOCALE_FR_UTF8=fr_FR.UTF-8}
+if test $LOCALE_FR_UTF8 != none; then
+ LC_ALL=$LOCALE_FR_UTF8 ./test-locale-language${EXEEXT} fr || exit 1
+fi
+
+: ${LOCALE_JA=ja_JP}
+if test $LOCALE_JA != none; then
+ LC_ALL=$LOCALE_JA ./test-locale-language${EXEEXT} ja || exit 1
+fi
+
+: ${LOCALE_TR_UTF8=tr_TR.UTF-8}
+if test $LOCALE_TR_UTF8 != none; then
+ LC_ALL=$LOCALE_TR_UTF8 ./test-locale-language${EXEEXT} tr || exit 1
+fi
+
+: ${LOCALE_ZH_CN=zh_CN.GB18030}
+if test $LOCALE_ZH_CN != none; then
+ LC_ALL=$LOCALE_ZH_CN ./test-locale-language${EXEEXT} zh || exit 1
+fi
+
+exit 0
diff --git a/tests/unicase/test-mapping-part1.h b/tests/unicase/test-mapping-part1.h
new file mode 100644
index 00000000..4b7ac8ec
--- /dev/null
+++ b/tests/unicase/test-mapping-part1.h
@@ -0,0 +1,45 @@
+/* Test of single character case mapping functions.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed for c = 0x%04X\n", \
+ __FILE__, __LINE__, c); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+#define SIZEOF(a) (sizeof(a) / sizeof(a[0]))
+
+/* Pair of Unicode characters. */
+typedef struct { ucs4_t ch; ucs4_t value; } pair_t;
+
+/* Characters and their mapping values, ignoring no-op mappings, in increasing
+ order. */
+static const pair_t mapping[] =
+ {
diff --git a/tests/unicase/test-mapping-part2.h b/tests/unicase/test-mapping-part2.h
new file mode 100644
index 00000000..ef43cdde
--- /dev/null
+++ b/tests/unicase/test-mapping-part2.h
@@ -0,0 +1,37 @@
+/* Test of single character case mapping functions.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+ };
+
+int
+main ()
+{
+ unsigned int c;
+ size_t i;
+
+ c = 0;
+ for (i = 0; i < SIZEOF (mapping); i++)
+ {
+ for (; c < mapping[i].ch; c++)
+ ASSERT (MAP (c) == c);
+ ASSERT (MAP (c) == mapping[i].value);
+ c++;
+ }
+ for (; c < 0x110000; c++)
+ ASSERT (MAP (c) == c);
+
+ return 0;
+}
diff --git a/tests/unicase/test-predicate-part1.h b/tests/unicase/test-predicate-part1.h
new file mode 100644
index 00000000..76d804e1
--- /dev/null
+++ b/tests/unicase/test-predicate-part1.h
@@ -0,0 +1,45 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unicase/caseprop.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed for c = 0x%04X\n", \
+ __FILE__, __LINE__, c); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+#define SIZEOF(a) (sizeof(a) / sizeof(a[0]))
+
+/* Interval of Unicode characters. */
+typedef struct { ucs4_t start; ucs4_t end; } interval_t;
+
+/* Set of Unicode characters, described as list of intervals, in increasing
+ order. */
+static const interval_t set[] =
+ {
diff --git a/tests/unicase/test-predicate-part2.h b/tests/unicase/test-predicate-part2.h
new file mode 100644
index 00000000..60b7c246
--- /dev/null
+++ b/tests/unicase/test-predicate-part2.h
@@ -0,0 +1,37 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+ };
+
+int
+main ()
+{
+ unsigned int c;
+ size_t i;
+
+ c = 0;
+ for (i = 0; i < SIZEOF (set); i++)
+ {
+ for (; c < set[i].start; c++)
+ ASSERT (!PREDICATE (c));
+ for (; c <= set[i].end; c++)
+ ASSERT (PREDICATE (c));
+ }
+ for (; c < 0x110000; c++)
+ ASSERT (!PREDICATE (c));
+
+ return 0;
+}
diff --git a/tests/unicase/test-u16-casecmp.c b/tests/unicase/test-u16-casecmp.c
new file mode 100644
index 00000000..f079bbf8
--- /dev/null
+++ b/tests/unicase/test-u16-casecmp.c
@@ -0,0 +1,336 @@
+/* Test of case and normalization insensitive comparison of UTF-16 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint16_t
+#include "test-casecmp.h"
+#undef UNIT
+
+static void
+test_nonascii (int (*my_casecmp) (const uint16_t *, size_t, const uint16_t *, size_t, const char *, uninorm_t, int *))
+{
+ /* Normalization effects. */
+ {
+ static const uint16_t input1[] = { 'H', 0x00F6, 'h', 'l', 'e' };
+ static const uint16_t input2[] = { 'H', 'O', 0x0308, 'h', 'L', 'e' };
+ static const uint16_t input3[] = { 'H', 0x00F6, 'h', 'l', 'e', 'n' };
+ static const uint16_t input4[] = { 'H', 'O', 0x0308, 'h', 'L', 'e', 'n' };
+ static const uint16_t input5[] = { 'H', 'u', 'r', 'z' };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input1, SIZEOF (input1), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input3, SIZEOF (input3), input4, SIZEOF (input4), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input4, SIZEOF (input4), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input4, SIZEOF (input4), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input5, SIZEOF (input5), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input5, SIZEOF (input5), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+ }
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const uint16_t input1[] = { 0x00C4 };
+ static const uint16_t input2[] = { 0x0041, 0x0308 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const uint16_t input1[] = { 0x01DE };
+ static const uint16_t input2[] = { 0x0041, 0x0308, 0x0304 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const uint16_t input1[] = { 0x1FC1 };
+ static const uint16_t input2[] = { 0x00A8, 0x0342 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* HANGUL SYLLABLE GEUL */
+ static const uint16_t input1[] = { 0xAE00 };
+ static const uint16_t input2[] = { 0xADF8, 0x11AF };
+ static const uint16_t input3[] = { 0x1100, 0x1173, 0x11AF };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* HANGUL SYLLABLE GEU */
+ static const uint16_t input1[] = { 0xADF8 };
+ static const uint16_t input2[] = { 0x1100, 0x1173 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Simple string. */
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint16_t input1[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint16_t input2[] =
+ { 'g', 'r', 0x00FC, 0x0073, 0x0073, ' ', 'g', 'o', 't', 't', '.', ' ',
+ 0x0437, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint16_t input3[] =
+ { 'G', 'R', 0x00DC, 0x0053, 0x0053, ' ', 'G', 'O', 'T', 'T', '.', ' ',
+ 0x0417, 0x0414, 0x0420, 0x0410, 0x0412, 0x0421, 0x0422, 0x0412, 0x0423,
+ 0x0419, 0x0422, 0x0415, '!', ' ',
+ 'X', '=', '(', '-', 'B', 0x00B1, 'S', 'Q', 'R', 'T', '(', 'B', 0x00B2,
+ '-', '4', 'A', 'C', ')', ')', '/', '(', '2', 'A', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Case mapping can increase the number of Unicode characters. */
+ { /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */
+ static const uint16_t input1[] = { 0x0149 };
+ static const uint16_t input2[] = { 0x02BC, 0x006E };
+ static const uint16_t input3[] = { 0x02BC, 0x004E };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+ static const uint16_t input1[] = { 0x0390 };
+ static const uint16_t input2[] = { 0x03B9, 0x0308, 0x0301 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Turkish letters i İ ı I */
+ { /* LATIN CAPITAL LETTER I */
+ static const uint16_t input[] = { 0x0049 };
+ static const uint16_t casefolded[] = { 0x0069 };
+ static const uint16_t casefolded_tr[] = { 0x0131 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_tr, SIZEOF (casefolded_tr), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN SMALL LETTER I */
+ static const uint16_t input[] = { 0x0069 };
+ static const uint16_t casefolded[] = { 0x0049 };
+ static const uint16_t casefolded_tr[] = { 0x0130 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_tr, SIZEOF (casefolded_tr), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
+ static const uint16_t input[] = { 0x0130 };
+ static const uint16_t casefolded[] = { 0x0069, 0x0307 };
+ static const uint16_t casefolded_tr[] = { 0x0069 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_tr, SIZEOF (casefolded_tr), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN SMALL LETTER DOTLESS I */
+ static const uint16_t input[] = { 0x0131 };
+ static const uint16_t casefolded[] = { 0x0049 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 1);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* "topkapı" */
+ static const uint16_t input[] =
+ { 0x0054, 0x004F, 0x0050, 0x004B, 0x0041, 0x0050, 0x0049 };
+ static const uint16_t casefolded[] =
+ { 0x0074, 0x006F, 0x0070, 0x006B, 0x0061, 0x0070, 0x0131 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Uppercasing can increase the number of Unicode characters. */
+ { /* "heiß" */
+ static const uint16_t input1[] = { 0x0068, 0x0065, 0x0069, 0x00DF };
+ static const uint16_t input2[] = { 0x0068, 0x0065, 0x0069, 0x0073, 0x0073 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Case mappings for some characters can depend on the surrounding characters. */
+ { /* "περισσότερες πληροφορίες" */
+ static const uint16_t input1[] =
+ {
+ 0x03C0, 0x03B5, 0x03C1, 0x03B9, 0x03C3, 0x03C3, 0x03CC, 0x03C4,
+ 0x03B5, 0x03C1, 0x03B5, 0x03C2, 0x0020, 0x03C0, 0x03BB, 0x03B7,
+ 0x03C1, 0x03BF, 0x03C6, 0x03BF, 0x03C1, 0x03AF, 0x03B5, 0x03C2
+ };
+ static const uint16_t input2[] =
+ {
+ 0x03C0, 0x03B5, 0x03C1, 0x03B9, 0x03C3, 0x03C3, 0x03CC, 0x03C4,
+ 0x03B5, 0x03C1, 0x03B5, 0x03C3, 0x0020, 0x03C0, 0x03BB, 0x03B7,
+ 0x03C1, 0x03BF, 0x03C6, 0x03BF, 0x03C1, 0x03AF, 0x03B5, 0x03C3
+ };
+ static const uint16_t input3[] =
+ {
+ 0x03A0, 0x0395, 0x03A1, 0x0399, 0x03A3, 0x03A3, 0x038C, 0x03A4,
+ 0x0395, 0x03A1, 0x0395, 0x03A3, 0x0020, 0x03A0, 0x039B, 0x0397,
+ 0x03A1, 0x039F, 0x03A6, 0x039F, 0x03A1, 0x038A, 0x0395, 0x03A3
+ };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Case mapping can require subsequent normalization. */
+ { /* LATIN SMALL LETTER J WITH CARON, COMBINING DOT BELOW */
+ static const uint16_t input[] = { 0x01F0, 0x0323 };
+ static const uint16_t casefolded[] = { 0x006A, 0x030C, 0x0323 };
+ static const uint16_t casefolded_decomposed[] = { 0x006A, 0x0323, 0x030C };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_decomposed, SIZEOF (casefolded_decomposed), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp != 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_decomposed, SIZEOF (casefolded_decomposed), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+}
+
+int
+main ()
+{
+ test_ascii (u16_casecmp, UNINORM_NFD);
+ test_nonascii (u16_casecmp);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u16-casecoll.c b/tests/unicase/test-u16-casecoll.c
new file mode 100644
index 00000000..5428cf04
--- /dev/null
+++ b/tests/unicase/test-u16-casecoll.c
@@ -0,0 +1,54 @@
+/* Test of locale dependent, case and normalization insensitive comparison of
+ UTF-16 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint16_t
+#include "test-casecmp.h"
+#undef UNIT
+
+int
+main ()
+{
+ /* In the "C" locale, strcoll is equivalent to strcmp, therefore u8_casecoll
+ on ASCII strings should behave like strcasecmp. */
+ test_ascii (u16_casecoll, UNINORM_NFC);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u16-casefold.c b/tests/unicase/test-u16-casefold.c
new file mode 100644
index 00000000..3f4f633a
--- /dev/null
+++ b/tests/unicase/test-u16-casefold.c
@@ -0,0 +1,214 @@
+/* Test of casefolding mapping for UTF-16 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint16_t *input, size_t input_length,
+ const char *iso639_language, uninorm_t nf,
+ const uint16_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint16_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u16_casefold (input, input_length, iso639_language, nf, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint16_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint16_t *) malloc (length * sizeof (uint16_t));
+ result = u16_casefold (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint16_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint16_t *) malloc (length * sizeof (uint16_t));
+ result = u16_casefold (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+int
+main ()
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, NULL, NULL, 0) == 0);
+ ASSERT (check (NULL, 0, NULL, UNINORM_NFC, NULL, 0) == 0);
+ }
+
+ /* Simple string. */
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint16_t input[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint16_t casefolded[] =
+ { 'g', 'r', 0x00FC, 0x0073, 0x0073, ' ', 'g', 'o', 't', 't', '.', ' ',
+ 0x0437, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+
+ /* Case mapping can increase the number of Unicode characters. */
+ { /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */
+ static const uint16_t input[] = { 0x0149 };
+ static const uint16_t casefolded[] = { 0x02BC, 0x006E };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+ { /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+ static const uint16_t input[] = { 0x0390 };
+ static const uint16_t casefolded[] = { 0x03B9, 0x0308, 0x0301 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+
+ /* Turkish letters i İ ı I */
+ { /* LATIN CAPITAL LETTER I */
+ static const uint16_t input[] = { 0x0049 };
+ static const uint16_t casefolded[] = { 0x0069 };
+ static const uint16_t casefolded_tr[] = { 0x0131 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casefolded_tr, SIZEOF (casefolded_tr)) == 0);
+ }
+ { /* LATIN SMALL LETTER I */
+ static const uint16_t input[] = { 0x0069 };
+ static const uint16_t casefolded[] = { 0x0069 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+ { /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
+ static const uint16_t input[] = { 0x0130 };
+ static const uint16_t casefolded[] = { 0x0069, 0x0307 };
+ static const uint16_t casefolded_tr[] = { 0x0069 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casefolded_tr, SIZEOF (casefolded_tr)) == 0);
+ }
+ { /* LATIN SMALL LETTER DOTLESS I */
+ static const uint16_t input[] = { 0x0131 };
+ static const uint16_t casefolded[] = { 0x0131 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+ { /* "topkapı" */
+ static const uint16_t input[] =
+ { 0x0074, 0x006F, 0x0070, 0x006B, 0x0061, 0x0070, 0x0131 };
+ static const uint16_t casefolded[] =
+ { 0x0074, 0x006F, 0x0070, 0x006B, 0x0061, 0x0070, 0x0131 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+
+ /* Uppercasing can increase the number of Unicode characters. */
+ { /* "heiß" */
+ static const uint16_t input[] = { 0x0068, 0x0065, 0x0069, 0x00DF };
+ static const uint16_t casefolded[] = { 0x0068, 0x0065, 0x0069, 0x0073, 0x0073 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+
+ /* Case mappings for some characters can depend on the surrounding characters. */
+ { /* "περισσότερες πληροφορίες" */
+ static const uint16_t input[] =
+ {
+ 0x03C0, 0x03B5, 0x03C1, 0x03B9, 0x03C3, 0x03C3, 0x03CC, 0x03C4,
+ 0x03B5, 0x03C1, 0x03B5, 0x03C2, 0x0020, 0x03C0, 0x03BB, 0x03B7,
+ 0x03C1, 0x03BF, 0x03C6, 0x03BF, 0x03C1, 0x03AF, 0x03B5, 0x03C2
+ };
+ static const uint16_t casefolded[] =
+ {
+ 0x03C0, 0x03B5, 0x03C1, 0x03B9, 0x03C3, 0x03C3, 0x03CC, 0x03C4,
+ 0x03B5, 0x03C1, 0x03B5, 0x03C3, 0x0020, 0x03C0, 0x03BB, 0x03B7,
+ 0x03C1, 0x03BF, 0x03C6, 0x03BF, 0x03C1, 0x03AF, 0x03B5, 0x03C3
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+
+ /* Case mapping can require subsequent normalization. */
+ { /* LATIN SMALL LETTER J WITH CARON, COMBINING DOT BELOW */
+ static const uint16_t input[] = { 0x01F0, 0x0323 };
+ static const uint16_t casefolded[] = { 0x006A, 0x030C, 0x0323 };
+ static const uint16_t casefolded_decomposed[] = { 0x006A, 0x0323, 0x030C };
+ static const uint16_t casefolded_normalized[] = { 0x01F0, 0x0323 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ ASSERT (check (input, SIZEOF (input), NULL, UNINORM_NFD, casefolded_decomposed, SIZEOF (casefolded_decomposed)) == 0);
+ ASSERT (check (input, SIZEOF (input), NULL, UNINORM_NFC, casefolded_normalized, SIZEOF (casefolded_normalized)) == 0);
+ }
+
+ return 0;
+}
diff --git a/tests/unicase/test-u16-is-cased.c b/tests/unicase/test-u16-is-cased.c
new file mode 100644
index 00000000..a4b9dc39
--- /dev/null
+++ b/tests/unicase/test-u16-is-cased.c
@@ -0,0 +1,51 @@
+/* Test of test whether case matters for an UTF-16 string.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint16_t
+#include "test-is-cased.h"
+#undef UNIT
+
+int
+main ()
+{
+ test_ascii (u16_is_cased);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u16-is-casefolded.c b/tests/unicase/test-u16-is-casefolded.c
new file mode 100644
index 00000000..8c0122da
--- /dev/null
+++ b/tests/unicase/test-u16-is-casefolded.c
@@ -0,0 +1,65 @@
+/* Test of test whether an UTF-16 string is already case-folded.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint16_t
+#include "test-is-casefolded.h"
+#undef UNIT
+
+static void
+test_nonascii (int (*my_is) (const uint16_t *, size_t, const char *, bool *))
+{
+ /* Test cases from Unicode 5.1.0. */
+ {
+ static const uint16_t input[] = { 0x00DF };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+}
+
+int
+main ()
+{
+ test_ascii (u16_is_casefolded);
+ test_nonascii (u16_is_casefolded);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u16-is-lowercase.c b/tests/unicase/test-u16-is-lowercase.c
new file mode 100644
index 00000000..f7bea495
--- /dev/null
+++ b/tests/unicase/test-u16-is-lowercase.c
@@ -0,0 +1,93 @@
+/* Test of test whether an UTF-16 string is entirely lower case.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint16_t
+#include "test-is-lowercase.h"
+#undef UNIT
+
+static void
+test_nonascii (int (*my_is) (const uint16_t *, size_t, const char *, bool *))
+{
+ /* Test cases from Unicode 5.1.0. */
+ {
+ static const uint16_t input[] = { 0x24D7 };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const uint16_t input[] = { 0x24BD };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const uint16_t input[] = { 0x02B0 };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const uint16_t input[] = { 0x1D34 };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const uint16_t input[] = { 0x02BD };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+}
+
+int
+main ()
+{
+ test_ascii (u16_is_lowercase);
+ test_nonascii (u16_is_lowercase);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u16-is-titlecase.c b/tests/unicase/test-u16-is-titlecase.c
new file mode 100644
index 00000000..6b1c6d10
--- /dev/null
+++ b/tests/unicase/test-u16-is-titlecase.c
@@ -0,0 +1,51 @@
+/* Test of test whether an UTF-16 string is entirely title case.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint16_t
+#include "test-is-titlecase.h"
+#undef UNIT
+
+int
+main ()
+{
+ test_ascii (u16_is_titlecase);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u16-is-uppercase.c b/tests/unicase/test-u16-is-uppercase.c
new file mode 100644
index 00000000..1acf7055
--- /dev/null
+++ b/tests/unicase/test-u16-is-uppercase.c
@@ -0,0 +1,93 @@
+/* Test of test whether an UTF-16 string is entirely upper case.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint16_t
+#include "test-is-uppercase.h"
+#undef UNIT
+
+static void
+test_nonascii (int (*my_is) (const uint16_t *, size_t, const char *, bool *))
+{
+ /* Test cases from Unicode 5.1.0. */
+ {
+ static const uint16_t input[] = { 0x24D7 };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const uint16_t input[] = { 0x24BD };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const uint16_t input[] = { 0x02B0 };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const uint16_t input[] = { 0x1D34 };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const uint16_t input[] = { 0x02BD };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+}
+
+int
+main ()
+{
+ test_ascii (u16_is_uppercase);
+ test_nonascii (u16_is_uppercase);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u16-tolower.c b/tests/unicase/test-u16-tolower.c
new file mode 100644
index 00000000..5ec764c4
--- /dev/null
+++ b/tests/unicase/test-u16-tolower.c
@@ -0,0 +1,251 @@
+/* Test of lowercase mapping for UTF-16 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint16_t *input, size_t input_length,
+ const char *iso639_language, uninorm_t nf,
+ const uint16_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint16_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u16_tolower (input, input_length, iso639_language, nf, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint16_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint16_t *) malloc (length * sizeof (uint16_t));
+ result = u16_tolower (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint16_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint16_t *) malloc (length * sizeof (uint16_t));
+ result = u16_tolower (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+int
+main ()
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, NULL, NULL, 0) == 0);
+ ASSERT (check (NULL, 0, NULL, UNINORM_NFC, NULL, 0) == 0);
+ }
+
+ /* Simple string. */
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint16_t input[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint16_t casemapped[] =
+ { 'g', 'r', 0x00FC, 0x00DF, ' ', 'g', 'o', 't', 't', '.', ' ',
+ 0x0437, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Turkish letters i İ ı I */
+ { /* LATIN CAPITAL LETTER I */
+ static const uint16_t input[] = { 0x0049 };
+ static const uint16_t casemapped[] = { 0x0069 };
+ static const uint16_t casemapped_tr[] = { 0x0131 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped_tr, SIZEOF (casemapped_tr)) == 0);
+ }
+ { /* LATIN SMALL LETTER I */
+ static const uint16_t input[] = { 0x0069 };
+ static const uint16_t casemapped[] = { 0x0069 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
+ static const uint16_t input[] = { 0x0130 };
+ static const uint16_t casemapped[] = { 0x0069, 0x0307 };
+ static const uint16_t casemapped_tr[] = { 0x0069 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped_tr, SIZEOF (casemapped_tr)) == 0);
+ }
+ { /* LATIN SMALL LETTER DOTLESS I */
+ static const uint16_t input[] = { 0x0131 };
+ static const uint16_t casemapped[] = { 0x0131 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "TOPKAPI" */
+ static const uint16_t input[] =
+ { 0x0054, 0x004F, 0x0050, 0x004B, 0x0041, 0x0050, 0x0049 };
+ static const uint16_t casemapped[] =
+ { 0x0074, 0x006F, 0x0070, 0x006B, 0x0061, 0x0070, 0x0131 };
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Uppercasing can increase the number of Unicode characters. */
+ { /* "HEIß" */
+ static const uint16_t input[] = { 0x0048, 0x0045, 0x0049, 0x00DF };
+ static const uint16_t casemapped[] = { 0x0068, 0x0065, 0x0069, 0x00DF };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mappings for some characters can depend on the surrounding characters. */
+ { /* "ΠΕΡΙΣΣΌΤΕΡΕΣ ΠΛΗΡΟΦΟΡΊΕΣ" */
+ static const uint16_t input[] =
+ {
+ 0x03A0, 0x0395, 0x03A1, 0x0399, 0x03A3, 0x03A3, 0x038C, 0x03A4,
+ 0x0395, 0x03A1, 0x0395, 0x03A3, 0x0020, 0x03A0, 0x039B, 0x0397,
+ 0x03A1, 0x039F, 0x03A6, 0x039F, 0x03A1, 0x038A, 0x0395, 0x03A3
+ };
+ static const uint16_t casemapped[] =
+ {
+ 0x03C0, 0x03B5, 0x03C1, 0x03B9, 0x03C3, 0x03C3, 0x03CC, 0x03C4,
+ 0x03B5, 0x03C1, 0x03B5, 0x03C2, 0x0020, 0x03C0, 0x03BB, 0x03B7,
+ 0x03C1, 0x03BF, 0x03C6, 0x03BF, 0x03C1, 0x03AF, 0x03B5, 0x03C2
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "Σ" -> "σ" */
+ static const uint16_t input[] = { 0x03A3 };
+ static const uint16_t casemapped[] = { 0x03C3 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "ΑΣ" -> "ας" */
+ static const uint16_t input[] = { 0x0391, 0x03A3 };
+ static const uint16_t casemapped[] = { 0x03B1, 0x03C2 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ /* It's a final sigma only if not followed by a case-ignorable sequence and
+ then a cased letter. Note that U+0345 and U+037A are simultaneously
+ case-ignorable and cased (which is a bit paradoxical). */
+ { /* "ΑΣΑ" -> "ασα" */
+ static const uint16_t input[] = { 0x0391, 0x03A3, 0x0391 };
+ static const uint16_t casemapped[] = { 0x03B1, 0x03C3, 0x03B1 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "ΑΣ:" -> "ας:" */
+ static const uint16_t input[] = { 0x0391, 0x03A3, 0x003A };
+ static const uint16_t casemapped[] = { 0x03B1, 0x03C2, 0x003A };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "ΑΣ:Α" -> "ασ:α" */
+ static const uint16_t input[] = { 0x0391, 0x03A3, 0x003A, 0x0391 };
+ static const uint16_t casemapped[] = { 0x03B1, 0x03C3, 0x003A, 0x03B1 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "ΑΣ:ͺ" -> "ασ:ͺ" */
+ static const uint16_t input[] = { 0x0391, 0x03A3, 0x003A, 0x037A };
+ static const uint16_t casemapped[] = { 0x03B1, 0x03C3, 0x003A, 0x037A };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "ΑΣ:ͺ " -> "ασ:ͺ " */
+ static const uint16_t input[] = { 0x0391, 0x03A3, 0x003A, 0x037A, 0x0020 };
+ static const uint16_t casemapped[] = { 0x03B1, 0x03C3, 0x003A, 0x037A, 0x0020 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ /* It's a final sigma only if preceded by a case-ignorable sequence and
+ a cased letter before it. Note that U+0345 and U+037A are simultaneously
+ case-ignorable and cased (which is a bit paradoxical). */
+ { /* ":Σ" -> ":σ" */
+ static const uint16_t input[] = { 0x003A, 0x03A3 };
+ static const uint16_t casemapped[] = { 0x003A, 0x03C3 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "Α:Σ" -> "α:ς" */
+ static const uint16_t input[] = { 0x0391, 0x003A, 0x03A3 };
+ static const uint16_t casemapped[] = { 0x03B1, 0x003A, 0x03C2 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "ͺ:Σ" -> "ͺ:ς" */
+ static const uint16_t input[] = { 0x037A, 0x003A, 0x03A3 };
+ static const uint16_t casemapped[] = { 0x037A, 0x003A, 0x03C2 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* " ͺ:Σ" -> " ͺ:ς" */
+ static const uint16_t input[] = { 0x0020, 0x037A, 0x003A, 0x03A3 };
+ static const uint16_t casemapped[] = { 0x0020, 0x037A, 0x003A, 0x03C2 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ return 0;
+}
diff --git a/tests/unicase/test-u16-totitle.c b/tests/unicase/test-u16-totitle.c
new file mode 100644
index 00000000..3839c907
--- /dev/null
+++ b/tests/unicase/test-u16-totitle.c
@@ -0,0 +1,211 @@
+/* Test of titlecase mapping for UTF-16 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint16_t *input, size_t input_length,
+ const char *iso639_language, uninorm_t nf,
+ const uint16_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint16_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u16_totitle (input, input_length, iso639_language, nf, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint16_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint16_t *) malloc (length * sizeof (uint16_t));
+ result = u16_totitle (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint16_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint16_t *) malloc (length * sizeof (uint16_t));
+ result = u16_totitle (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+int
+main ()
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, NULL, NULL, 0) == 0);
+ ASSERT (check (NULL, 0, NULL, UNINORM_NFC, NULL, 0) == 0);
+ }
+
+ /* Simple string. */
+ { /* "GRÜß GOTT. ЗДРАВСТВУЙТЕ! X=(-B±SQRT(B²-4AC))/(2A) 日本語,中文,한글" */
+ static const uint16_t input[] =
+ { 'G', 'R', 0x00DC, 0x00DF, ' ', 'G', 'O', 'T', 'T', '.', ' ',
+ 0x0417, 0x0414, 0x0420, 0x0410, 0x0412, 0x0421, 0x0422, 0x0412, 0x0423,
+ 0x0419, 0x0422, 0x0415, '!', ' ',
+ 'X', '=', '(', '-', 'B', 0x00B1, 'S', 'Q', 'R', 'T', '(', 'B', 0x00B2,
+ '-', '4', 'A', 'C', ')', ')', '/', '(', '2', 'A', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint16_t casemapped[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'X', '=', '(', '-', 'B', 0x00B1, 'S', 'q', 'r', 't', '(', 'B', 0x00B2,
+ '-', '4', 'A', 'c', ')', ')', '/', '(', '2', 'A', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mapping can increase the number of Unicode characters. */
+ { /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */
+ static const uint16_t input[] = { 0x0149 };
+ static const uint16_t casemapped[] = { 0x02BC, 0x004E };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+ static const uint16_t input[] = { 0x0390 };
+ static const uint16_t casemapped[] = { 0x0399, 0x0308, 0x0301 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Turkish letters i İ ı I */
+ { /* LATIN CAPITAL LETTER I */
+ static const uint16_t input[] = { 0x0049 };
+ static const uint16_t casemapped[] = { 0x0049 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* LATIN SMALL LETTER I */
+ static const uint16_t input[] = { 0x0069 };
+ static const uint16_t casemapped[] = { 0x0049 };
+ static const uint16_t casemapped_tr[] = { 0x0130 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped_tr, SIZEOF (casemapped_tr)) == 0);
+ }
+ { /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
+ static const uint16_t input[] = { 0x0130 };
+ static const uint16_t casemapped[] = { 0x0130 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* LATIN SMALL LETTER DOTLESS I */
+ static const uint16_t input[] = { 0x0131 };
+ static const uint16_t casemapped[] = { 0x0049 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "topkapı" */
+ static const uint16_t input[] =
+ { 0x0074, 0x006F, 0x0070, 0x006B, 0x0061, 0x0070, 0x0131 };
+ static const uint16_t casemapped[] =
+ { 0x0054, 0x006F, 0x0070, 0x006B, 0x0061, 0x0070, 0x0131 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Uppercasing can increase the number of Unicode characters. */
+ { /* "heiß" */
+ static const uint16_t input[] = { 0x0068, 0x0065, 0x0069, 0x00DF };
+ static const uint16_t casemapped[] = { 0x0048, 0x0065, 0x0069, 0x00DF };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mappings for some characters can depend on the surrounding characters. */
+ { /* "περισσότερες πληροφορίες" */
+ static const uint16_t input[] =
+ {
+ 0x03C0, 0x03B5, 0x03C1, 0x03B9, 0x03C3, 0x03C3, 0x03CC, 0x03C4,
+ 0x03B5, 0x03C1, 0x03B5, 0x03C2, 0x0020, 0x03C0, 0x03BB, 0x03B7,
+ 0x03C1, 0x03BF, 0x03C6, 0x03BF, 0x03C1, 0x03AF, 0x03B5, 0x03C2
+ };
+ static const uint16_t casemapped[] =
+ {
+ 0x03A0, 0x03B5, 0x03C1, 0x03B9, 0x03C3, 0x03C3, 0x03CC, 0x03C4,
+ 0x03B5, 0x03C1, 0x03B5, 0x03C2, 0x0020, 0x03A0, 0x03BB, 0x03B7,
+ 0x03C1, 0x03BF, 0x03C6, 0x03BF, 0x03C1, 0x03AF, 0x03B5, 0x03C2
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mapping can require subsequent normalization. */
+ { /* LATIN SMALL LETTER J WITH CARON, COMBINING DOT BELOW */
+ static const uint16_t input[] = { 0x01F0, 0x0323 };
+ static const uint16_t casemapped[] = { 0x004A, 0x030C, 0x0323 };
+ static const uint16_t casemapped_normalized[] = { 0x004A, 0x0323, 0x030C };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), NULL, UNINORM_NFC, casemapped_normalized, SIZEOF (casemapped_normalized)) == 0);
+ }
+
+ return 0;
+}
diff --git a/tests/unicase/test-u16-toupper.c b/tests/unicase/test-u16-toupper.c
new file mode 100644
index 00000000..ed9fd6b1
--- /dev/null
+++ b/tests/unicase/test-u16-toupper.c
@@ -0,0 +1,211 @@
+/* Test of uppercase mapping for UTF-16 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint16_t *input, size_t input_length,
+ const char *iso639_language, uninorm_t nf,
+ const uint16_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint16_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u16_toupper (input, input_length, iso639_language, nf, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint16_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint16_t *) malloc (length * sizeof (uint16_t));
+ result = u16_toupper (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint16_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint16_t *) malloc (length * sizeof (uint16_t));
+ result = u16_toupper (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+int
+main ()
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, NULL, NULL, 0) == 0);
+ ASSERT (check (NULL, 0, NULL, UNINORM_NFC, NULL, 0) == 0);
+ }
+
+ /* Simple string. */
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint16_t input[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint16_t casemapped[] =
+ { 'G', 'R', 0x00DC, 0x0053, 0x0053, ' ', 'G', 'O', 'T', 'T', '.', ' ',
+ 0x0417, 0x0414, 0x0420, 0x0410, 0x0412, 0x0421, 0x0422, 0x0412, 0x0423,
+ 0x0419, 0x0422, 0x0415, '!', ' ',
+ 'X', '=', '(', '-', 'B', 0x00B1, 'S', 'Q', 'R', 'T', '(', 'B', 0x00B2,
+ '-', '4', 'A', 'C', ')', ')', '/', '(', '2', 'A', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mapping can increase the number of Unicode characters. */
+ { /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */
+ static const uint16_t input[] = { 0x0149 };
+ static const uint16_t casemapped[] = { 0x02BC, 0x004E };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+ static const uint16_t input[] = { 0x0390 };
+ static const uint16_t casemapped[] = { 0x0399, 0x0308, 0x0301 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Turkish letters i İ ı I */
+ { /* LATIN CAPITAL LETTER I */
+ static const uint16_t input[] = { 0x0049 };
+ static const uint16_t casemapped[] = { 0x0049 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* LATIN SMALL LETTER I */
+ static const uint16_t input[] = { 0x0069 };
+ static const uint16_t casemapped[] = { 0x0049 };
+ static const uint16_t casemapped_tr[] = { 0x0130 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped_tr, SIZEOF (casemapped_tr)) == 0);
+ }
+ { /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
+ static const uint16_t input[] = { 0x0130 };
+ static const uint16_t casemapped[] = { 0x0130 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* LATIN SMALL LETTER DOTLESS I */
+ static const uint16_t input[] = { 0x0131 };
+ static const uint16_t casemapped[] = { 0x0049 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "topkapı" */
+ static const uint16_t input[] =
+ { 0x0074, 0x006F, 0x0070, 0x006B, 0x0061, 0x0070, 0x0131 };
+ static const uint16_t casemapped[] =
+ { 0x0054, 0x004F, 0x0050, 0x004B, 0x0041, 0x0050, 0x0049 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Uppercasing can increase the number of Unicode characters. */
+ { /* "heiß" */
+ static const uint16_t input[] = { 0x0068, 0x0065, 0x0069, 0x00DF };
+ static const uint16_t casemapped[] = { 0x0048, 0x0045, 0x0049, 0x0053, 0x0053 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mappings for some characters can depend on the surrounding characters. */
+ { /* "περισσότερες πληροφορίες" */
+ static const uint16_t input[] =
+ {
+ 0x03C0, 0x03B5, 0x03C1, 0x03B9, 0x03C3, 0x03C3, 0x03CC, 0x03C4,
+ 0x03B5, 0x03C1, 0x03B5, 0x03C2, 0x0020, 0x03C0, 0x03BB, 0x03B7,
+ 0x03C1, 0x03BF, 0x03C6, 0x03BF, 0x03C1, 0x03AF, 0x03B5, 0x03C2
+ };
+ static const uint16_t casemapped[] =
+ {
+ 0x03A0, 0x0395, 0x03A1, 0x0399, 0x03A3, 0x03A3, 0x038C, 0x03A4,
+ 0x0395, 0x03A1, 0x0395, 0x03A3, 0x0020, 0x03A0, 0x039B, 0x0397,
+ 0x03A1, 0x039F, 0x03A6, 0x039F, 0x03A1, 0x038A, 0x0395, 0x03A3
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mapping can require subsequent normalization. */
+ { /* LATIN SMALL LETTER J WITH CARON, COMBINING DOT BELOW */
+ static const uint16_t input[] = { 0x01F0, 0x0323 };
+ static const uint16_t casemapped[] = { 0x004A, 0x030C, 0x0323 };
+ static const uint16_t casemapped_normalized[] = { 0x004A, 0x0323, 0x030C };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), NULL, UNINORM_NFC, casemapped_normalized, SIZEOF (casemapped_normalized)) == 0);
+ }
+
+ return 0;
+}
diff --git a/tests/unicase/test-u32-casecmp.c b/tests/unicase/test-u32-casecmp.c
new file mode 100644
index 00000000..8d58bc76
--- /dev/null
+++ b/tests/unicase/test-u32-casecmp.c
@@ -0,0 +1,336 @@
+/* Test of case and normalization insensitive comparison of UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint32_t
+#include "test-casecmp.h"
+#undef UNIT
+
+static void
+test_nonascii (int (*my_casecmp) (const uint32_t *, size_t, const uint32_t *, size_t, const char *, uninorm_t, int *))
+{
+ /* Normalization effects. */
+ {
+ static const uint32_t input1[] = { 'H', 0x00F6, 'h', 'l', 'e' };
+ static const uint32_t input2[] = { 'H', 'O', 0x0308, 'h', 'L', 'e' };
+ static const uint32_t input3[] = { 'H', 0x00F6, 'h', 'l', 'e', 'n' };
+ static const uint32_t input4[] = { 'H', 'O', 0x0308, 'h', 'L', 'e', 'n' };
+ static const uint32_t input5[] = { 'H', 'u', 'r', 'z' };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input1, SIZEOF (input1), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input3, SIZEOF (input3), input4, SIZEOF (input4), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input4, SIZEOF (input4), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input4, SIZEOF (input4), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input5, SIZEOF (input5), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input5, SIZEOF (input5), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+ }
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const uint32_t input1[] = { 0x00C4 };
+ static const uint32_t input2[] = { 0x0041, 0x0308 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const uint32_t input1[] = { 0x01DE };
+ static const uint32_t input2[] = { 0x0041, 0x0308, 0x0304 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const uint32_t input1[] = { 0x1FC1 };
+ static const uint32_t input2[] = { 0x00A8, 0x0342 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* HANGUL SYLLABLE GEUL */
+ static const uint32_t input1[] = { 0xAE00 };
+ static const uint32_t input2[] = { 0xADF8, 0x11AF };
+ static const uint32_t input3[] = { 0x1100, 0x1173, 0x11AF };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* HANGUL SYLLABLE GEU */
+ static const uint32_t input1[] = { 0xADF8 };
+ static const uint32_t input2[] = { 0x1100, 0x1173 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Simple string. */
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint32_t input1[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint32_t input2[] =
+ { 'g', 'r', 0x00FC, 0x0073, 0x0073, ' ', 'g', 'o', 't', 't', '.', ' ',
+ 0x0437, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint32_t input3[] =
+ { 'G', 'R', 0x00DC, 0x0053, 0x0053, ' ', 'G', 'O', 'T', 'T', '.', ' ',
+ 0x0417, 0x0414, 0x0420, 0x0410, 0x0412, 0x0421, 0x0422, 0x0412, 0x0423,
+ 0x0419, 0x0422, 0x0415, '!', ' ',
+ 'X', '=', '(', '-', 'B', 0x00B1, 'S', 'Q', 'R', 'T', '(', 'B', 0x00B2,
+ '-', '4', 'A', 'C', ')', ')', '/', '(', '2', 'A', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Case mapping can increase the number of Unicode characters. */
+ { /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */
+ static const uint32_t input1[] = { 0x0149 };
+ static const uint32_t input2[] = { 0x02BC, 0x006E };
+ static const uint32_t input3[] = { 0x02BC, 0x004E };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+ static const uint32_t input1[] = { 0x0390 };
+ static const uint32_t input2[] = { 0x03B9, 0x0308, 0x0301 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Turkish letters i İ ı I */
+ { /* LATIN CAPITAL LETTER I */
+ static const uint32_t input[] = { 0x0049 };
+ static const uint32_t casefolded[] = { 0x0069 };
+ static const uint32_t casefolded_tr[] = { 0x0131 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_tr, SIZEOF (casefolded_tr), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN SMALL LETTER I */
+ static const uint32_t input[] = { 0x0069 };
+ static const uint32_t casefolded[] = { 0x0049 };
+ static const uint32_t casefolded_tr[] = { 0x0130 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_tr, SIZEOF (casefolded_tr), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
+ static const uint32_t input[] = { 0x0130 };
+ static const uint32_t casefolded[] = { 0x0069, 0x0307 };
+ static const uint32_t casefolded_tr[] = { 0x0069 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_tr, SIZEOF (casefolded_tr), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN SMALL LETTER DOTLESS I */
+ static const uint32_t input[] = { 0x0131 };
+ static const uint32_t casefolded[] = { 0x0049 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 1);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* "topkapı" */
+ static const uint32_t input[] =
+ { 0x0054, 0x004F, 0x0050, 0x004B, 0x0041, 0x0050, 0x0049 };
+ static const uint32_t casefolded[] =
+ { 0x0074, 0x006F, 0x0070, 0x006B, 0x0061, 0x0070, 0x0131 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Uppercasing can increase the number of Unicode characters. */
+ { /* "heiß" */
+ static const uint32_t input1[] = { 0x0068, 0x0065, 0x0069, 0x00DF };
+ static const uint32_t input2[] = { 0x0068, 0x0065, 0x0069, 0x0073, 0x0073 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Case mappings for some characters can depend on the surrounding characters. */
+ { /* "περισσότερες πληροφορίες" */
+ static const uint32_t input1[] =
+ {
+ 0x03C0, 0x03B5, 0x03C1, 0x03B9, 0x03C3, 0x03C3, 0x03CC, 0x03C4,
+ 0x03B5, 0x03C1, 0x03B5, 0x03C2, 0x0020, 0x03C0, 0x03BB, 0x03B7,
+ 0x03C1, 0x03BF, 0x03C6, 0x03BF, 0x03C1, 0x03AF, 0x03B5, 0x03C2
+ };
+ static const uint32_t input2[] =
+ {
+ 0x03C0, 0x03B5, 0x03C1, 0x03B9, 0x03C3, 0x03C3, 0x03CC, 0x03C4,
+ 0x03B5, 0x03C1, 0x03B5, 0x03C3, 0x0020, 0x03C0, 0x03BB, 0x03B7,
+ 0x03C1, 0x03BF, 0x03C6, 0x03BF, 0x03C1, 0x03AF, 0x03B5, 0x03C3
+ };
+ static const uint32_t input3[] =
+ {
+ 0x03A0, 0x0395, 0x03A1, 0x0399, 0x03A3, 0x03A3, 0x038C, 0x03A4,
+ 0x0395, 0x03A1, 0x0395, 0x03A3, 0x0020, 0x03A0, 0x039B, 0x0397,
+ 0x03A1, 0x039F, 0x03A6, 0x039F, 0x03A1, 0x038A, 0x0395, 0x03A3
+ };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Case mapping can require subsequent normalization. */
+ { /* LATIN SMALL LETTER J WITH CARON, COMBINING DOT BELOW */
+ static const uint32_t input[] = { 0x01F0, 0x0323 };
+ static const uint32_t casefolded[] = { 0x006A, 0x030C, 0x0323 };
+ static const uint32_t casefolded_decomposed[] = { 0x006A, 0x0323, 0x030C };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_decomposed, SIZEOF (casefolded_decomposed), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp != 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_decomposed, SIZEOF (casefolded_decomposed), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+}
+
+int
+main ()
+{
+ test_ascii (u32_casecmp, UNINORM_NFD);
+ test_nonascii (u32_casecmp);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u32-casecoll.c b/tests/unicase/test-u32-casecoll.c
new file mode 100644
index 00000000..23edfbdf
--- /dev/null
+++ b/tests/unicase/test-u32-casecoll.c
@@ -0,0 +1,54 @@
+/* Test of locale dependent, case and normalization insensitive comparison of
+ UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint32_t
+#include "test-casecmp.h"
+#undef UNIT
+
+int
+main ()
+{
+ /* In the "C" locale, strcoll is equivalent to strcmp, therefore u8_casecoll
+ on ASCII strings should behave like strcasecmp. */
+ test_ascii (u32_casecoll, UNINORM_NFC);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u32-casefold.c b/tests/unicase/test-u32-casefold.c
new file mode 100644
index 00000000..d48e8dc8
--- /dev/null
+++ b/tests/unicase/test-u32-casefold.c
@@ -0,0 +1,214 @@
+/* Test of casefolding mapping for UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint32_t *input, size_t input_length,
+ const char *iso639_language, uninorm_t nf,
+ const uint32_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint32_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u32_casefold (input, input_length, iso639_language, nf, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint32_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint32_t *) malloc (length * sizeof (uint32_t));
+ result = u32_casefold (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint32_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint32_t *) malloc (length * sizeof (uint32_t));
+ result = u32_casefold (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+int
+main ()
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, NULL, NULL, 0) == 0);
+ ASSERT (check (NULL, 0, NULL, UNINORM_NFC, NULL, 0) == 0);
+ }
+
+ /* Simple string. */
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint32_t input[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint32_t casefolded[] =
+ { 'g', 'r', 0x00FC, 0x0073, 0x0073, ' ', 'g', 'o', 't', 't', '.', ' ',
+ 0x0437, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+
+ /* Case mapping can increase the number of Unicode characters. */
+ { /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */
+ static const uint32_t input[] = { 0x0149 };
+ static const uint32_t casefolded[] = { 0x02BC, 0x006E };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+ { /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+ static const uint32_t input[] = { 0x0390 };
+ static const uint32_t casefolded[] = { 0x03B9, 0x0308, 0x0301 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+
+ /* Turkish letters i İ ı I */
+ { /* LATIN CAPITAL LETTER I */
+ static const uint32_t input[] = { 0x0049 };
+ static const uint32_t casefolded[] = { 0x0069 };
+ static const uint32_t casefolded_tr[] = { 0x0131 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casefolded_tr, SIZEOF (casefolded_tr)) == 0);
+ }
+ { /* LATIN SMALL LETTER I */
+ static const uint32_t input[] = { 0x0069 };
+ static const uint32_t casefolded[] = { 0x0069 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+ { /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
+ static const uint32_t input[] = { 0x0130 };
+ static const uint32_t casefolded[] = { 0x0069, 0x0307 };
+ static const uint32_t casefolded_tr[] = { 0x0069 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casefolded_tr, SIZEOF (casefolded_tr)) == 0);
+ }
+ { /* LATIN SMALL LETTER DOTLESS I */
+ static const uint32_t input[] = { 0x0131 };
+ static const uint32_t casefolded[] = { 0x0131 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+ { /* "topkapı" */
+ static const uint32_t input[] =
+ { 0x0074, 0x006F, 0x0070, 0x006B, 0x0061, 0x0070, 0x0131 };
+ static const uint32_t casefolded[] =
+ { 0x0074, 0x006F, 0x0070, 0x006B, 0x0061, 0x0070, 0x0131 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+
+ /* Uppercasing can increase the number of Unicode characters. */
+ { /* "heiß" */
+ static const uint32_t input[] = { 0x0068, 0x0065, 0x0069, 0x00DF };
+ static const uint32_t casefolded[] = { 0x0068, 0x0065, 0x0069, 0x0073, 0x0073 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+
+ /* Case mappings for some characters can depend on the surrounding characters. */
+ { /* "περισσότερες πληροφορίες" */
+ static const uint32_t input[] =
+ {
+ 0x03C0, 0x03B5, 0x03C1, 0x03B9, 0x03C3, 0x03C3, 0x03CC, 0x03C4,
+ 0x03B5, 0x03C1, 0x03B5, 0x03C2, 0x0020, 0x03C0, 0x03BB, 0x03B7,
+ 0x03C1, 0x03BF, 0x03C6, 0x03BF, 0x03C1, 0x03AF, 0x03B5, 0x03C2
+ };
+ static const uint32_t casefolded[] =
+ {
+ 0x03C0, 0x03B5, 0x03C1, 0x03B9, 0x03C3, 0x03C3, 0x03CC, 0x03C4,
+ 0x03B5, 0x03C1, 0x03B5, 0x03C3, 0x0020, 0x03C0, 0x03BB, 0x03B7,
+ 0x03C1, 0x03BF, 0x03C6, 0x03BF, 0x03C1, 0x03AF, 0x03B5, 0x03C3
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+
+ /* Case mapping can require subsequent normalization. */
+ { /* LATIN SMALL LETTER J WITH CARON, COMBINING DOT BELOW */
+ static const uint32_t input[] = { 0x01F0, 0x0323 };
+ static const uint32_t casefolded[] = { 0x006A, 0x030C, 0x0323 };
+ static const uint32_t casefolded_decomposed[] = { 0x006A, 0x0323, 0x030C };
+ static const uint32_t casefolded_normalized[] = { 0x01F0, 0x0323 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ ASSERT (check (input, SIZEOF (input), NULL, UNINORM_NFD, casefolded_decomposed, SIZEOF (casefolded_decomposed)) == 0);
+ ASSERT (check (input, SIZEOF (input), NULL, UNINORM_NFC, casefolded_normalized, SIZEOF (casefolded_normalized)) == 0);
+ }
+
+ return 0;
+}
diff --git a/tests/unicase/test-u32-is-cased.c b/tests/unicase/test-u32-is-cased.c
new file mode 100644
index 00000000..d8353fc4
--- /dev/null
+++ b/tests/unicase/test-u32-is-cased.c
@@ -0,0 +1,51 @@
+/* Test of test whether case matters for an UTF-32 string.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint32_t
+#include "test-is-cased.h"
+#undef UNIT
+
+int
+main ()
+{
+ test_ascii (u32_is_cased);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u32-is-casefolded.c b/tests/unicase/test-u32-is-casefolded.c
new file mode 100644
index 00000000..d79241d7
--- /dev/null
+++ b/tests/unicase/test-u32-is-casefolded.c
@@ -0,0 +1,65 @@
+/* Test of test whether an UTF-32 string is already case-folded.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint32_t
+#include "test-is-casefolded.h"
+#undef UNIT
+
+static void
+test_nonascii (int (*my_is) (const uint32_t *, size_t, const char *, bool *))
+{
+ /* Test cases from Unicode 5.1.0. */
+ {
+ static const uint32_t input[] = { 0x00DF };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+}
+
+int
+main ()
+{
+ test_ascii (u32_is_casefolded);
+ test_nonascii (u32_is_casefolded);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u32-is-lowercase.c b/tests/unicase/test-u32-is-lowercase.c
new file mode 100644
index 00000000..2cff3925
--- /dev/null
+++ b/tests/unicase/test-u32-is-lowercase.c
@@ -0,0 +1,93 @@
+/* Test of test whether an UTF-32 string is entirely lower case.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint32_t
+#include "test-is-lowercase.h"
+#undef UNIT
+
+static void
+test_nonascii (int (*my_is) (const uint32_t *, size_t, const char *, bool *))
+{
+ /* Test cases from Unicode 5.1.0. */
+ {
+ static const uint32_t input[] = { 0x24D7 };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const uint32_t input[] = { 0x24BD };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const uint32_t input[] = { 0x02B0 };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const uint32_t input[] = { 0x1D34 };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const uint32_t input[] = { 0x02BD };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+}
+
+int
+main ()
+{
+ test_ascii (u32_is_lowercase);
+ test_nonascii (u32_is_lowercase);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u32-is-titlecase.c b/tests/unicase/test-u32-is-titlecase.c
new file mode 100644
index 00000000..2c287e98
--- /dev/null
+++ b/tests/unicase/test-u32-is-titlecase.c
@@ -0,0 +1,51 @@
+/* Test of test whether an UTF-32 string is entirely title case.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint32_t
+#include "test-is-titlecase.h"
+#undef UNIT
+
+int
+main ()
+{
+ test_ascii (u32_is_titlecase);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u32-is-uppercase.c b/tests/unicase/test-u32-is-uppercase.c
new file mode 100644
index 00000000..0044ec1d
--- /dev/null
+++ b/tests/unicase/test-u32-is-uppercase.c
@@ -0,0 +1,93 @@
+/* Test of test whether an UTF-32 string is entirely upper case.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint32_t
+#include "test-is-uppercase.h"
+#undef UNIT
+
+static void
+test_nonascii (int (*my_is) (const uint32_t *, size_t, const char *, bool *))
+{
+ /* Test cases from Unicode 5.1.0. */
+ {
+ static const uint32_t input[] = { 0x24D7 };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const uint32_t input[] = { 0x24BD };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const uint32_t input[] = { 0x02B0 };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const uint32_t input[] = { 0x1D34 };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const uint32_t input[] = { 0x02BD };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+}
+
+int
+main ()
+{
+ test_ascii (u32_is_uppercase);
+ test_nonascii (u32_is_uppercase);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u32-tolower.c b/tests/unicase/test-u32-tolower.c
new file mode 100644
index 00000000..7f348da4
--- /dev/null
+++ b/tests/unicase/test-u32-tolower.c
@@ -0,0 +1,251 @@
+/* Test of lowercase mapping for UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint32_t *input, size_t input_length,
+ const char *iso639_language, uninorm_t nf,
+ const uint32_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint32_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u32_tolower (input, input_length, iso639_language, nf, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint32_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint32_t *) malloc (length * sizeof (uint32_t));
+ result = u32_tolower (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint32_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint32_t *) malloc (length * sizeof (uint32_t));
+ result = u32_tolower (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+int
+main ()
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, NULL, NULL, 0) == 0);
+ ASSERT (check (NULL, 0, NULL, UNINORM_NFC, NULL, 0) == 0);
+ }
+
+ /* Simple string. */
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint32_t input[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint32_t casemapped[] =
+ { 'g', 'r', 0x00FC, 0x00DF, ' ', 'g', 'o', 't', 't', '.', ' ',
+ 0x0437, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Turkish letters i İ ı I */
+ { /* LATIN CAPITAL LETTER I */
+ static const uint32_t input[] = { 0x0049 };
+ static const uint32_t casemapped[] = { 0x0069 };
+ static const uint32_t casemapped_tr[] = { 0x0131 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped_tr, SIZEOF (casemapped_tr)) == 0);
+ }
+ { /* LATIN SMALL LETTER I */
+ static const uint32_t input[] = { 0x0069 };
+ static const uint32_t casemapped[] = { 0x0069 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
+ static const uint32_t input[] = { 0x0130 };
+ static const uint32_t casemapped[] = { 0x0069, 0x0307 };
+ static const uint32_t casemapped_tr[] = { 0x0069 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped_tr, SIZEOF (casemapped_tr)) == 0);
+ }
+ { /* LATIN SMALL LETTER DOTLESS I */
+ static const uint32_t input[] = { 0x0131 };
+ static const uint32_t casemapped[] = { 0x0131 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "TOPKAPI" */
+ static const uint32_t input[] =
+ { 0x0054, 0x004F, 0x0050, 0x004B, 0x0041, 0x0050, 0x0049 };
+ static const uint32_t casemapped[] =
+ { 0x0074, 0x006F, 0x0070, 0x006B, 0x0061, 0x0070, 0x0131 };
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Uppercasing can increase the number of Unicode characters. */
+ { /* "HEIß" */
+ static const uint32_t input[] = { 0x0048, 0x0045, 0x0049, 0x00DF };
+ static const uint32_t casemapped[] = { 0x0068, 0x0065, 0x0069, 0x00DF };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mappings for some characters can depend on the surrounding characters. */
+ { /* "ΠΕΡΙΣΣΌΤΕΡΕΣ ΠΛΗΡΟΦΟΡΊΕΣ" */
+ static const uint32_t input[] =
+ {
+ 0x03A0, 0x0395, 0x03A1, 0x0399, 0x03A3, 0x03A3, 0x038C, 0x03A4,
+ 0x0395, 0x03A1, 0x0395, 0x03A3, 0x0020, 0x03A0, 0x039B, 0x0397,
+ 0x03A1, 0x039F, 0x03A6, 0x039F, 0x03A1, 0x038A, 0x0395, 0x03A3
+ };
+ static const uint32_t casemapped[] =
+ {
+ 0x03C0, 0x03B5, 0x03C1, 0x03B9, 0x03C3, 0x03C3, 0x03CC, 0x03C4,
+ 0x03B5, 0x03C1, 0x03B5, 0x03C2, 0x0020, 0x03C0, 0x03BB, 0x03B7,
+ 0x03C1, 0x03BF, 0x03C6, 0x03BF, 0x03C1, 0x03AF, 0x03B5, 0x03C2
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "Σ" -> "σ" */
+ static const uint32_t input[] = { 0x03A3 };
+ static const uint32_t casemapped[] = { 0x03C3 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "ΑΣ" -> "ας" */
+ static const uint32_t input[] = { 0x0391, 0x03A3 };
+ static const uint32_t casemapped[] = { 0x03B1, 0x03C2 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ /* It's a final sigma only if not followed by a case-ignorable sequence and
+ then a cased letter. Note that U+0345 and U+037A are simultaneously
+ case-ignorable and cased (which is a bit paradoxical). */
+ { /* "ΑΣΑ" -> "ασα" */
+ static const uint32_t input[] = { 0x0391, 0x03A3, 0x0391 };
+ static const uint32_t casemapped[] = { 0x03B1, 0x03C3, 0x03B1 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "ΑΣ:" -> "ας:" */
+ static const uint32_t input[] = { 0x0391, 0x03A3, 0x003A };
+ static const uint32_t casemapped[] = { 0x03B1, 0x03C2, 0x003A };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "ΑΣ:Α" -> "ασ:α" */
+ static const uint32_t input[] = { 0x0391, 0x03A3, 0x003A, 0x0391 };
+ static const uint32_t casemapped[] = { 0x03B1, 0x03C3, 0x003A, 0x03B1 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "ΑΣ:ͺ" -> "ασ:ͺ" */
+ static const uint32_t input[] = { 0x0391, 0x03A3, 0x003A, 0x037A };
+ static const uint32_t casemapped[] = { 0x03B1, 0x03C3, 0x003A, 0x037A };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "ΑΣ:ͺ " -> "ασ:ͺ " */
+ static const uint32_t input[] = { 0x0391, 0x03A3, 0x003A, 0x037A, 0x0020 };
+ static const uint32_t casemapped[] = { 0x03B1, 0x03C3, 0x003A, 0x037A, 0x0020 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ /* It's a final sigma only if preceded by a case-ignorable sequence and
+ a cased letter before it. Note that U+0345 and U+037A are simultaneously
+ case-ignorable and cased (which is a bit paradoxical). */
+ { /* ":Σ" -> ":σ" */
+ static const uint32_t input[] = { 0x003A, 0x03A3 };
+ static const uint32_t casemapped[] = { 0x003A, 0x03C3 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "Α:Σ" -> "α:ς" */
+ static const uint32_t input[] = { 0x0391, 0x003A, 0x03A3 };
+ static const uint32_t casemapped[] = { 0x03B1, 0x003A, 0x03C2 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "ͺ:Σ" -> "ͺ:ς" */
+ static const uint32_t input[] = { 0x037A, 0x003A, 0x03A3 };
+ static const uint32_t casemapped[] = { 0x037A, 0x003A, 0x03C2 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* " ͺ:Σ" -> " ͺ:ς" */
+ static const uint32_t input[] = { 0x0020, 0x037A, 0x003A, 0x03A3 };
+ static const uint32_t casemapped[] = { 0x0020, 0x037A, 0x003A, 0x03C2 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ return 0;
+}
diff --git a/tests/unicase/test-u32-totitle.c b/tests/unicase/test-u32-totitle.c
new file mode 100644
index 00000000..82c4b0f1
--- /dev/null
+++ b/tests/unicase/test-u32-totitle.c
@@ -0,0 +1,211 @@
+/* Test of titlecase mapping for UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint32_t *input, size_t input_length,
+ const char *iso639_language, uninorm_t nf,
+ const uint32_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint32_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u32_totitle (input, input_length, iso639_language, nf, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint32_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint32_t *) malloc (length * sizeof (uint32_t));
+ result = u32_totitle (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint32_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint32_t *) malloc (length * sizeof (uint32_t));
+ result = u32_totitle (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+int
+main ()
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, NULL, NULL, 0) == 0);
+ ASSERT (check (NULL, 0, NULL, UNINORM_NFC, NULL, 0) == 0);
+ }
+
+ /* Simple string. */
+ { /* "GRÜß GOTT. ЗДРАВСТВУЙТЕ! X=(-B±SQRT(B²-4AC))/(2A) 日本語,中文,한글" */
+ static const uint32_t input[] =
+ { 'G', 'R', 0x00DC, 0x00DF, ' ', 'G', 'O', 'T', 'T', '.', ' ',
+ 0x0417, 0x0414, 0x0420, 0x0410, 0x0412, 0x0421, 0x0422, 0x0412, 0x0423,
+ 0x0419, 0x0422, 0x0415, '!', ' ',
+ 'X', '=', '(', '-', 'B', 0x00B1, 'S', 'Q', 'R', 'T', '(', 'B', 0x00B2,
+ '-', '4', 'A', 'C', ')', ')', '/', '(', '2', 'A', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint32_t casemapped[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'X', '=', '(', '-', 'B', 0x00B1, 'S', 'q', 'r', 't', '(', 'B', 0x00B2,
+ '-', '4', 'A', 'c', ')', ')', '/', '(', '2', 'A', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mapping can increase the number of Unicode characters. */
+ { /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */
+ static const uint32_t input[] = { 0x0149 };
+ static const uint32_t casemapped[] = { 0x02BC, 0x004E };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+ static const uint32_t input[] = { 0x0390 };
+ static const uint32_t casemapped[] = { 0x0399, 0x0308, 0x0301 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Turkish letters i İ ı I */
+ { /* LATIN CAPITAL LETTER I */
+ static const uint32_t input[] = { 0x0049 };
+ static const uint32_t casemapped[] = { 0x0049 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* LATIN SMALL LETTER I */
+ static const uint32_t input[] = { 0x0069 };
+ static const uint32_t casemapped[] = { 0x0049 };
+ static const uint32_t casemapped_tr[] = { 0x0130 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped_tr, SIZEOF (casemapped_tr)) == 0);
+ }
+ { /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
+ static const uint32_t input[] = { 0x0130 };
+ static const uint32_t casemapped[] = { 0x0130 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* LATIN SMALL LETTER DOTLESS I */
+ static const uint32_t input[] = { 0x0131 };
+ static const uint32_t casemapped[] = { 0x0049 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "topkapı" */
+ static const uint32_t input[] =
+ { 0x0074, 0x006F, 0x0070, 0x006B, 0x0061, 0x0070, 0x0131 };
+ static const uint32_t casemapped[] =
+ { 0x0054, 0x006F, 0x0070, 0x006B, 0x0061, 0x0070, 0x0131 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Uppercasing can increase the number of Unicode characters. */
+ { /* "heiß" */
+ static const uint32_t input[] = { 0x0068, 0x0065, 0x0069, 0x00DF };
+ static const uint32_t casemapped[] = { 0x0048, 0x0065, 0x0069, 0x00DF };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mappings for some characters can depend on the surrounding characters. */
+ { /* "περισσότερες πληροφορίες" */
+ static const uint32_t input[] =
+ {
+ 0x03C0, 0x03B5, 0x03C1, 0x03B9, 0x03C3, 0x03C3, 0x03CC, 0x03C4,
+ 0x03B5, 0x03C1, 0x03B5, 0x03C2, 0x0020, 0x03C0, 0x03BB, 0x03B7,
+ 0x03C1, 0x03BF, 0x03C6, 0x03BF, 0x03C1, 0x03AF, 0x03B5, 0x03C2
+ };
+ static const uint32_t casemapped[] =
+ {
+ 0x03A0, 0x03B5, 0x03C1, 0x03B9, 0x03C3, 0x03C3, 0x03CC, 0x03C4,
+ 0x03B5, 0x03C1, 0x03B5, 0x03C2, 0x0020, 0x03A0, 0x03BB, 0x03B7,
+ 0x03C1, 0x03BF, 0x03C6, 0x03BF, 0x03C1, 0x03AF, 0x03B5, 0x03C2
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mapping can require subsequent normalization. */
+ { /* LATIN SMALL LETTER J WITH CARON, COMBINING DOT BELOW */
+ static const uint32_t input[] = { 0x01F0, 0x0323 };
+ static const uint32_t casemapped[] = { 0x004A, 0x030C, 0x0323 };
+ static const uint32_t casemapped_normalized[] = { 0x004A, 0x0323, 0x030C };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), NULL, UNINORM_NFC, casemapped_normalized, SIZEOF (casemapped_normalized)) == 0);
+ }
+
+ return 0;
+}
diff --git a/tests/unicase/test-u32-toupper.c b/tests/unicase/test-u32-toupper.c
new file mode 100644
index 00000000..dbc1619b
--- /dev/null
+++ b/tests/unicase/test-u32-toupper.c
@@ -0,0 +1,211 @@
+/* Test of uppercase mapping for UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint32_t *input, size_t input_length,
+ const char *iso639_language, uninorm_t nf,
+ const uint32_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint32_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u32_toupper (input, input_length, iso639_language, nf, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint32_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint32_t *) malloc (length * sizeof (uint32_t));
+ result = u32_toupper (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint32_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint32_t *) malloc (length * sizeof (uint32_t));
+ result = u32_toupper (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+int
+main ()
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, NULL, NULL, 0) == 0);
+ ASSERT (check (NULL, 0, NULL, UNINORM_NFC, NULL, 0) == 0);
+ }
+
+ /* Simple string. */
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint32_t input[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint32_t casemapped[] =
+ { 'G', 'R', 0x00DC, 0x0053, 0x0053, ' ', 'G', 'O', 'T', 'T', '.', ' ',
+ 0x0417, 0x0414, 0x0420, 0x0410, 0x0412, 0x0421, 0x0422, 0x0412, 0x0423,
+ 0x0419, 0x0422, 0x0415, '!', ' ',
+ 'X', '=', '(', '-', 'B', 0x00B1, 'S', 'Q', 'R', 'T', '(', 'B', 0x00B2,
+ '-', '4', 'A', 'C', ')', ')', '/', '(', '2', 'A', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mapping can increase the number of Unicode characters. */
+ { /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */
+ static const uint32_t input[] = { 0x0149 };
+ static const uint32_t casemapped[] = { 0x02BC, 0x004E };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+ static const uint32_t input[] = { 0x0390 };
+ static const uint32_t casemapped[] = { 0x0399, 0x0308, 0x0301 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Turkish letters i İ ı I */
+ { /* LATIN CAPITAL LETTER I */
+ static const uint32_t input[] = { 0x0049 };
+ static const uint32_t casemapped[] = { 0x0049 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* LATIN SMALL LETTER I */
+ static const uint32_t input[] = { 0x0069 };
+ static const uint32_t casemapped[] = { 0x0049 };
+ static const uint32_t casemapped_tr[] = { 0x0130 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped_tr, SIZEOF (casemapped_tr)) == 0);
+ }
+ { /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
+ static const uint32_t input[] = { 0x0130 };
+ static const uint32_t casemapped[] = { 0x0130 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* LATIN SMALL LETTER DOTLESS I */
+ static const uint32_t input[] = { 0x0131 };
+ static const uint32_t casemapped[] = { 0x0049 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "topkapı" */
+ static const uint32_t input[] =
+ { 0x0074, 0x006F, 0x0070, 0x006B, 0x0061, 0x0070, 0x0131 };
+ static const uint32_t casemapped[] =
+ { 0x0054, 0x004F, 0x0050, 0x004B, 0x0041, 0x0050, 0x0049 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Uppercasing can increase the number of Unicode characters. */
+ { /* "heiß" */
+ static const uint32_t input[] = { 0x0068, 0x0065, 0x0069, 0x00DF };
+ static const uint32_t casemapped[] = { 0x0048, 0x0045, 0x0049, 0x0053, 0x0053 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mappings for some characters can depend on the surrounding characters. */
+ { /* "περισσότερες πληροφορίες" */
+ static const uint32_t input[] =
+ {
+ 0x03C0, 0x03B5, 0x03C1, 0x03B9, 0x03C3, 0x03C3, 0x03CC, 0x03C4,
+ 0x03B5, 0x03C1, 0x03B5, 0x03C2, 0x0020, 0x03C0, 0x03BB, 0x03B7,
+ 0x03C1, 0x03BF, 0x03C6, 0x03BF, 0x03C1, 0x03AF, 0x03B5, 0x03C2
+ };
+ static const uint32_t casemapped[] =
+ {
+ 0x03A0, 0x0395, 0x03A1, 0x0399, 0x03A3, 0x03A3, 0x038C, 0x03A4,
+ 0x0395, 0x03A1, 0x0395, 0x03A3, 0x0020, 0x03A0, 0x039B, 0x0397,
+ 0x03A1, 0x039F, 0x03A6, 0x039F, 0x03A1, 0x038A, 0x0395, 0x03A3
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mapping can require subsequent normalization. */
+ { /* LATIN SMALL LETTER J WITH CARON, COMBINING DOT BELOW */
+ static const uint32_t input[] = { 0x01F0, 0x0323 };
+ static const uint32_t casemapped[] = { 0x004A, 0x030C, 0x0323 };
+ static const uint32_t casemapped_normalized[] = { 0x004A, 0x0323, 0x030C };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), NULL, UNINORM_NFC, casemapped_normalized, SIZEOF (casemapped_normalized)) == 0);
+ }
+
+ return 0;
+}
diff --git a/tests/unicase/test-u8-casecmp.c b/tests/unicase/test-u8-casecmp.c
new file mode 100644
index 00000000..dbcc9d76
--- /dev/null
+++ b/tests/unicase/test-u8-casecmp.c
@@ -0,0 +1,345 @@
+/* Test of case and normalization insensitive comparison of UTF-8 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint8_t
+#include "test-casecmp.h"
+#undef UNIT
+
+static void
+test_nonascii (int (*my_casecmp) (const uint8_t *, size_t, const uint8_t *, size_t, const char *, uninorm_t, int *))
+{
+ /* Normalization effects. */
+ {
+ static const uint8_t input1[] = { 'H', 0xC3, 0xB6, 'h', 'l', 'e' };
+ static const uint8_t input2[] = { 'H', 'O', 0xCC, 0x88, 'h', 'L', 'e' };
+ static const uint8_t input3[] = { 'H', 0xC3, 0xB6, 'h', 'l', 'e', 'n' };
+ static const uint8_t input4[] = { 'H', 'O', 0xCC, 0x88, 'h', 'L', 'e', 'n' };
+ static const uint8_t input5[] = { 'H', 'u', 'r', 'z' };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input1, SIZEOF (input1), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input3, SIZEOF (input3), input4, SIZEOF (input4), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input4, SIZEOF (input4), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input4, SIZEOF (input4), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input5, SIZEOF (input5), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input5, SIZEOF (input5), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+ }
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const uint8_t input1[] = { 0xC3, 0x84 };
+ static const uint8_t input2[] = { 0x41, 0xCC, 0x88 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const uint8_t input1[] = { 0xC7, 0x9E };
+ static const uint8_t input2[] = { 0x41, 0xCC, 0x88, 0xCC, 0x84 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const uint8_t input1[] = { 0xE1, 0xBF, 0x81 };
+ static const uint8_t input2[] = { 0xC2, 0xA8, 0xCD, 0x82 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* HANGUL SYLLABLE GEUL */
+ static const uint8_t input1[] = { 0xEA, 0xB8, 0x80 };
+ static const uint8_t input2[] = { 0xEA, 0xB7, 0xB8, 0xE1, 0x86, 0xAF };
+ static const uint8_t input3[] = { 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3, 0xE1, 0x86, 0xAF };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* HANGUL SYLLABLE GEU */
+ static const uint8_t input1[] = { 0xEA, 0xB7, 0xB8 };
+ static const uint8_t input2[] = { 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Simple string. */
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint8_t input1[] =
+ { 'G', 'r', 0xC3, 0xBC, 0xC3, 0x9F, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0xD0, 0x97, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1, 0x81,
+ 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5,
+ '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1, 's', 'q', 'r', 't', '(',
+ 'b', 0xC2, 0xB2, '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')',
+ ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9E, ',',
+ 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C, 0xEA, 0xB8, 0x80, '\n'
+ };
+ static const uint8_t input2[] =
+ { 'g', 'r', 0xC3, 0xBC, 0x73, 0x73, ' ', 'g', 'o', 't', 't', '.', ' ',
+ 0xD0, 0xB7, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1, 0x81,
+ 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5,
+ '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1, 's', 'q', 'r', 't', '(',
+ 'b', 0xC2, 0xB2, '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')',
+ ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9E, ',',
+ 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C, 0xEA, 0xB8, 0x80, '\n'
+ };
+ static const uint8_t input3[] =
+ { 'G', 'R', 0xC3, 0x9C, 0x53, 0x53, ' ', 'G', 'O', 'T', 'T', '.', ' ',
+ 0xD0, 0x97, 0xD0, 0x94, 0xD0, 0xA0, 0xD0, 0x90, 0xD0, 0x92, 0xD0, 0xA1,
+ 0xD0, 0xA2, 0xD0, 0x92, 0xD0, 0xA3, 0xD0, 0x99, 0xD0, 0xA2, 0xD0, 0x95,
+ '!', ' ', 'X', '=', '(', '-', 'B', 0xC2, 0xB1, 'S', 'Q', 'R', 'T', '(',
+ 'B', 0xC2, 0xB2, '-', '4', 'A', 'C', ')', ')', '/', '(', '2', 'A', ')',
+ ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9E, ',',
+ 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C, 0xEA, 0xB8, 0x80, '\n'
+ };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Case mapping can increase the number of Unicode characters. */
+ { /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */
+ static const uint8_t input1[] = { 0xC5, 0x89 };
+ static const uint8_t input2[] = { 0xCA, 0xBC, 0x6E };
+ static const uint8_t input3[] = { 0xCA, 0xBC, 0x4E };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+ static const uint8_t input1[] = { 0xCE, 0x90 };
+ static const uint8_t input2[] = { 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Turkish letters i İ ı I */
+ { /* LATIN CAPITAL LETTER I */
+ static const uint8_t input[] = { 0x49 };
+ static const uint8_t casefolded[] = { 0x69 };
+ static const uint8_t casefolded_tr[] = { 0xC4, 0xB1 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_tr, SIZEOF (casefolded_tr), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN SMALL LETTER I */
+ static const uint8_t input[] = { 0x69 };
+ static const uint8_t casefolded[] = { 0x49 };
+ static const uint8_t casefolded_tr[] = { 0xC4, 0xB0 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_tr, SIZEOF (casefolded_tr), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
+ static const uint8_t input[] = { 0xC4, 0xB0 };
+ static const uint8_t casefolded[] = { 0x69, 0xCC, 0x87 };
+ static const uint8_t casefolded_tr[] = { 0x69 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_tr, SIZEOF (casefolded_tr), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN SMALL LETTER DOTLESS I */
+ static const uint8_t input[] = { 0xC4, 0xB1 };
+ static const uint8_t casefolded[] = { 0x49 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 1);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* "topkapı" */
+ static const uint8_t input[] =
+ { 0x54, 0x4F, 0x50, 0x4B, 0x41, 0x50, 0x49 };
+ static const uint8_t casefolded[] =
+ { 0x74, 0x6F, 0x70, 0x6B, 0x61, 0x70, 0xC4, 0xB1 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Uppercasing can increase the number of Unicode characters. */
+ { /* "heiß" */
+ static const uint8_t input1[] = { 0x68, 0x65, 0x69, 0xC3, 0x9F };
+ static const uint8_t input2[] = { 0x68, 0x65, 0x69, 0x73, 0x73 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Case mappings for some characters can depend on the surrounding characters. */
+ { /* "περισσότερες πληροφορίες" */
+ static const uint8_t input1[] =
+ {
+ 0xCF, 0x80, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB9, 0xCF, 0x83, 0xCF, 0x83,
+ 0xCF, 0x8C, 0xCF, 0x84, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB5, 0xCF, 0x82,
+ ' ', 0xCF, 0x80, 0xCE, 0xBB, 0xCE, 0xB7, 0xCF, 0x81, 0xCE, 0xBF,
+ 0xCF, 0x86, 0xCE, 0xBF, 0xCF, 0x81, 0xCE, 0xAF, 0xCE, 0xB5, 0xCF, 0x82
+ };
+ static const uint8_t input2[] =
+ {
+ 0xCF, 0x80, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB9, 0xCF, 0x83, 0xCF, 0x83,
+ 0xCF, 0x8C, 0xCF, 0x84, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB5, 0xCF, 0x83,
+ ' ', 0xCF, 0x80, 0xCE, 0xBB, 0xCE, 0xB7, 0xCF, 0x81, 0xCE, 0xBF,
+ 0xCF, 0x86, 0xCE, 0xBF, 0xCF, 0x81, 0xCE, 0xAF, 0xCE, 0xB5, 0xCF, 0x83
+ };
+ static const uint8_t input3[] =
+ {
+ 0xCE, 0xA0, 0xCE, 0x95, 0xCE, 0xA1, 0xCE, 0x99, 0xCE, 0xA3, 0xCE, 0xA3,
+ 0xCE, 0x8C, 0xCE, 0xA4, 0xCE, 0x95, 0xCE, 0xA1, 0xCE, 0x95, 0xCE, 0xA3,
+ ' ', 0xCE, 0xA0, 0xCE, 0x9B, 0xCE, 0x97, 0xCE, 0xA1, 0xCE, 0x9F,
+ 0xCE, 0xA6, 0xCE, 0x9F, 0xCE, 0xA1, 0xCE, 0x8A, 0xCE, 0x95, 0xCE, 0xA3
+ };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Case mapping can require subsequent normalization. */
+ { /* LATIN SMALL LETTER J WITH CARON, COMBINING DOT BELOW */
+ static const uint8_t input[] = { 0xC7, 0xB0, 0xCC, 0xA3 };
+ static const uint8_t casefolded[] = { 0x6A, 0xCC, 0x8C, 0xCC, 0xA3 };
+ static const uint8_t casefolded_decomposed[] = { 0x6A, 0xCC, 0xA3, 0xCC, 0x8C };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_decomposed, SIZEOF (casefolded_decomposed), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp != 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_decomposed, SIZEOF (casefolded_decomposed), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+}
+
+int
+main ()
+{
+ test_ascii (u8_casecmp, UNINORM_NFD);
+ test_nonascii (u8_casecmp);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u8-casecoll.c b/tests/unicase/test-u8-casecoll.c
new file mode 100644
index 00000000..e1b0c57c
--- /dev/null
+++ b/tests/unicase/test-u8-casecoll.c
@@ -0,0 +1,54 @@
+/* Test of locale dependent, case and normalization insensitive comparison of
+ UTF-8 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint8_t
+#include "test-casecmp.h"
+#undef UNIT
+
+int
+main ()
+{
+ /* In the "C" locale, strcoll is equivalent to strcmp, therefore u8_casecoll
+ on ASCII strings should behave like strcasecmp. */
+ test_ascii (u8_casecoll, UNINORM_NFC);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u8-casefold.c b/tests/unicase/test-u8-casefold.c
new file mode 100644
index 00000000..225b9979
--- /dev/null
+++ b/tests/unicase/test-u8-casefold.c
@@ -0,0 +1,220 @@
+/* Test of casefolding mapping for UTF-8 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint8_t *input, size_t input_length,
+ const char *iso639_language, uninorm_t nf,
+ const uint8_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint8_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u8_casefold (input, input_length, iso639_language, nf, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint8_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint8_t *) malloc (length * sizeof (uint8_t));
+ result = u8_casefold (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint8_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint8_t *) malloc (length * sizeof (uint8_t));
+ result = u8_casefold (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+int
+main ()
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, NULL, NULL, 0) == 0);
+ ASSERT (check (NULL, 0, NULL, UNINORM_NFC, NULL, 0) == 0);
+ }
+
+ /* Simple string. */
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint8_t input[] =
+ { 'G', 'r', 0xC3, 0xBC, 0xC3, 0x9F, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0xD0, 0x97, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1, 0x81,
+ 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5,
+ '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1, 's', 'q', 'r', 't', '(',
+ 'b', 0xC2, 0xB2, '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')',
+ ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9E, ',',
+ 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C, 0xEA, 0xB8, 0x80, '\n'
+ };
+ static const uint8_t casefolded[] =
+ { 'g', 'r', 0xC3, 0xBC, 0x73, 0x73, ' ', 'g', 'o', 't', 't', '.', ' ',
+ 0xD0, 0xB7, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1, 0x81,
+ 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5,
+ '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1, 's', 'q', 'r', 't', '(',
+ 'b', 0xC2, 0xB2, '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')',
+ ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9E, ',',
+ 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C, 0xEA, 0xB8, 0x80, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+
+ /* Case mapping can increase the number of Unicode characters. */
+ { /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */
+ static const uint8_t input[] = { 0xC5, 0x89 };
+ static const uint8_t casefolded[] = { 0xCA, 0xBC, 0x6E };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+ { /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+ static const uint8_t input[] = { 0xCE, 0x90 };
+ static const uint8_t casefolded[] = { 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+
+ /* Turkish letters i İ ı I */
+ { /* LATIN CAPITAL LETTER I */
+ static const uint8_t input[] = { 0x49 };
+ static const uint8_t casefolded[] = { 0x69 };
+ static const uint8_t casefolded_tr[] = { 0xC4, 0xB1 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casefolded_tr, SIZEOF (casefolded_tr)) == 0);
+ }
+ { /* LATIN SMALL LETTER I */
+ static const uint8_t input[] = { 0x69 };
+ static const uint8_t casefolded[] = { 0x69 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+ { /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
+ static const uint8_t input[] = { 0xC4, 0xB0 };
+ static const uint8_t casefolded[] = { 0x69, 0xCC, 0x87 };
+ static const uint8_t casefolded_tr[] = { 0x69 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casefolded_tr, SIZEOF (casefolded_tr)) == 0);
+ }
+ { /* LATIN SMALL LETTER DOTLESS I */
+ static const uint8_t input[] = { 0xC4, 0xB1 };
+ static const uint8_t casefolded[] = { 0xC4, 0xB1 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+ { /* "topkapı" */
+ static const uint8_t input[] =
+ { 0x74, 0x6F, 0x70, 0x6B, 0x61, 0x70, 0xC4, 0xB1 };
+ static const uint8_t casefolded[] =
+ { 0x74, 0x6F, 0x70, 0x6B, 0x61, 0x70, 0xC4, 0xB1 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+
+ /* Uppercasing can increase the number of Unicode characters. */
+ { /* "heiß" */
+ static const uint8_t input[] = { 0x68, 0x65, 0x69, 0xC3, 0x9F };
+ static const uint8_t casefolded[] = { 0x68, 0x65, 0x69, 0x73, 0x73 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+
+ /* Case mappings for some characters can depend on the surrounding characters. */
+ { /* "περισσότερες πληροφορίες" */
+ static const uint8_t input[] =
+ {
+ 0xCF, 0x80, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB9, 0xCF, 0x83, 0xCF, 0x83,
+ 0xCF, 0x8C, 0xCF, 0x84, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB5, 0xCF, 0x82,
+ ' ', 0xCF, 0x80, 0xCE, 0xBB, 0xCE, 0xB7, 0xCF, 0x81, 0xCE, 0xBF,
+ 0xCF, 0x86, 0xCE, 0xBF, 0xCF, 0x81, 0xCE, 0xAF, 0xCE, 0xB5, 0xCF, 0x82
+ };
+ static const uint8_t casefolded[] =
+ {
+ 0xCF, 0x80, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB9, 0xCF, 0x83, 0xCF, 0x83,
+ 0xCF, 0x8C, 0xCF, 0x84, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB5, 0xCF, 0x83,
+ ' ', 0xCF, 0x80, 0xCE, 0xBB, 0xCE, 0xB7, 0xCF, 0x81, 0xCE, 0xBF,
+ 0xCF, 0x86, 0xCE, 0xBF, 0xCF, 0x81, 0xCE, 0xAF, 0xCE, 0xB5, 0xCF, 0x83
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ }
+
+ /* Case mapping can require subsequent normalization. */
+ { /* LATIN SMALL LETTER J WITH CARON, COMBINING DOT BELOW */
+ static const uint8_t input[] = { 0xC7, 0xB0, 0xCC, 0xA3 };
+ static const uint8_t casefolded[] = { 0x6A, 0xCC, 0x8C, 0xCC, 0xA3 };
+ static const uint8_t casefolded_decomposed[] = { 0x6A, 0xCC, 0xA3, 0xCC, 0x8C };
+ static const uint8_t casefolded_normalized[] = { 0xC7, 0xB0, 0xCC, 0xA3 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casefolded, SIZEOF (casefolded)) == 0);
+ ASSERT (check (input, SIZEOF (input), NULL, UNINORM_NFD, casefolded_decomposed, SIZEOF (casefolded_decomposed)) == 0);
+ ASSERT (check (input, SIZEOF (input), NULL, UNINORM_NFC, casefolded_normalized, SIZEOF (casefolded_normalized)) == 0);
+ }
+
+ return 0;
+}
diff --git a/tests/unicase/test-u8-is-cased.c b/tests/unicase/test-u8-is-cased.c
new file mode 100644
index 00000000..984f81b6
--- /dev/null
+++ b/tests/unicase/test-u8-is-cased.c
@@ -0,0 +1,51 @@
+/* Test of test whether case matters for an UTF-8 string.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint8_t
+#include "test-is-cased.h"
+#undef UNIT
+
+int
+main ()
+{
+ test_ascii (u8_is_cased);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u8-is-casefolded.c b/tests/unicase/test-u8-is-casefolded.c
new file mode 100644
index 00000000..b727f6bb
--- /dev/null
+++ b/tests/unicase/test-u8-is-casefolded.c
@@ -0,0 +1,65 @@
+/* Test of test whether an UTF-8 string is already case-folded.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint8_t
+#include "test-is-casefolded.h"
+#undef UNIT
+
+static void
+test_nonascii (int (*my_is) (const uint8_t *, size_t, const char *, bool *))
+{
+ /* Test cases from Unicode 5.1.0. */
+ {
+ static const uint8_t input[] = { 0xC3, 0x9F };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+}
+
+int
+main ()
+{
+ test_ascii (u8_is_casefolded);
+ test_nonascii (u8_is_casefolded);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u8-is-lowercase.c b/tests/unicase/test-u8-is-lowercase.c
new file mode 100644
index 00000000..230e77cf
--- /dev/null
+++ b/tests/unicase/test-u8-is-lowercase.c
@@ -0,0 +1,93 @@
+/* Test of test whether an UTF-8 string is entirely lower case.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint8_t
+#include "test-is-lowercase.h"
+#undef UNIT
+
+static void
+test_nonascii (int (*my_is) (const uint8_t *, size_t, const char *, bool *))
+{
+ /* Test cases from Unicode 5.1.0. */
+ {
+ static const uint8_t input[] = { 0xE2, 0x93, 0x97 };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const uint8_t input[] = { 0xE2, 0x92, 0xBD };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const uint8_t input[] = { 0xCA, 0xB0 };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const uint8_t input[] = { 0xE1, 0x80, 0xB4 };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const uint8_t input[] = { 0xCA, 0xBD };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+}
+
+int
+main ()
+{
+ test_ascii (u8_is_lowercase);
+ test_nonascii (u8_is_lowercase);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u8-is-titlecase.c b/tests/unicase/test-u8-is-titlecase.c
new file mode 100644
index 00000000..fb803ea8
--- /dev/null
+++ b/tests/unicase/test-u8-is-titlecase.c
@@ -0,0 +1,51 @@
+/* Test of test whether an UTF-8 string is entirely title case.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint8_t
+#include "test-is-titlecase.h"
+#undef UNIT
+
+int
+main ()
+{
+ test_ascii (u8_is_titlecase);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u8-is-uppercase.c b/tests/unicase/test-u8-is-uppercase.c
new file mode 100644
index 00000000..c66bf393
--- /dev/null
+++ b/tests/unicase/test-u8-is-uppercase.c
@@ -0,0 +1,93 @@
+/* Test of test whether an UTF-8 string is entirely upper case.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT uint8_t
+#include "test-is-uppercase.h"
+#undef UNIT
+
+static void
+test_nonascii (int (*my_is) (const uint8_t *, size_t, const char *, bool *))
+{
+ /* Test cases from Unicode 5.1.0. */
+ {
+ static const uint8_t input[] = { 0xE2, 0x93, 0x97 };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == false);
+ }
+ {
+ static const uint8_t input[] = { 0xE2, 0x92, 0xBD };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const uint8_t input[] = { 0xCA, 0xB0 };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const uint8_t input[] = { 0xE1, 0x80, 0xB4 };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+ {
+ static const uint8_t input[] = { 0xCA, 0xBD };
+ bool result;
+
+ ASSERT (my_is (input, SIZEOF (input), NULL, &result) == 0);
+ ASSERT (result == true);
+ }
+}
+
+int
+main ()
+{
+ test_ascii (u8_is_uppercase);
+ test_nonascii (u8_is_uppercase);
+
+ return 0;
+}
diff --git a/tests/unicase/test-u8-tolower.c b/tests/unicase/test-u8-tolower.c
new file mode 100644
index 00000000..6c0a5df6
--- /dev/null
+++ b/tests/unicase/test-u8-tolower.c
@@ -0,0 +1,257 @@
+/* Test of lowercase mapping for UTF-8 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint8_t *input, size_t input_length,
+ const char *iso639_language, uninorm_t nf,
+ const uint8_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint8_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u8_tolower (input, input_length, iso639_language, nf, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint8_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint8_t *) malloc (length * sizeof (uint8_t));
+ result = u8_tolower (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint8_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint8_t *) malloc (length * sizeof (uint8_t));
+ result = u8_tolower (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+int
+main ()
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, NULL, NULL, 0) == 0);
+ ASSERT (check (NULL, 0, NULL, UNINORM_NFC, NULL, 0) == 0);
+ }
+
+ /* Simple string. */
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint8_t input[] =
+ { 'G', 'r', 0xC3, 0xBC, 0xC3, 0x9F, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0xD0, 0x97, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1, 0x81,
+ 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5,
+ '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1, 's', 'q', 'r', 't', '(',
+ 'b', 0xC2, 0xB2, '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')',
+ ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9E, ',',
+ 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C, 0xEA, 0xB8, 0x80, '\n'
+ };
+ static const uint8_t casemapped[] =
+ { 'g', 'r', 0xC3, 0xBC, 0xC3, 0x9F, ' ', 'g', 'o', 't', 't', '.', ' ',
+ 0xD0, 0xB7, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1, 0x81,
+ 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5,
+ '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1, 's', 'q', 'r', 't', '(',
+ 'b', 0xC2, 0xB2, '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')',
+ ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9E, ',',
+ 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C, 0xEA, 0xB8, 0x80, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Turkish letters i İ ı I */
+ { /* LATIN CAPITAL LETTER I */
+ static const uint8_t input[] = { 0x49 };
+ static const uint8_t casemapped[] = { 0x69 };
+ static const uint8_t casemapped_tr[] = { 0xC4, 0xB1 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped_tr, SIZEOF (casemapped_tr)) == 0);
+ }
+ { /* LATIN SMALL LETTER I */
+ static const uint8_t input[] = { 0x69 };
+ static const uint8_t casemapped[] = { 0x69 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
+ static const uint8_t input[] = { 0xC4, 0xB0 };
+ static const uint8_t casemapped[] = { 0x69, 0xCC, 0x87 };
+ static const uint8_t casemapped_tr[] = { 0x69 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped_tr, SIZEOF (casemapped_tr)) == 0);
+ }
+ { /* LATIN SMALL LETTER DOTLESS I */
+ static const uint8_t input[] = { 0xC4, 0xB1};
+ static const uint8_t casemapped[] = { 0xC4, 0xB1 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "TOPKAPI" */
+ static const uint8_t input[] =
+ { 0x54, 0x4F, 0x50, 0x4B, 0x41, 0x50, 0x49 };
+ static const uint8_t casemapped[] =
+ { 0x74, 0x6F, 0x70, 0x6B, 0x61, 0x70, 0xC4, 0xB1 };
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Uppercasing can increase the number of Unicode characters. */
+ { /* "HEIß" */
+ static const uint8_t input[] = { 0x48, 0x45, 0x49, 0xC3, 0x9F };
+ static const uint8_t casemapped[] = { 0x68, 0x65, 0x69, 0xC3, 0x9F };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mappings for some characters can depend on the surrounding characters. */
+ { /* "ΠΕΡΙΣΣΌΤΕΡΕΣ ΠΛΗΡΟΦΟΡΊΕΣ" */
+ static const uint8_t input[] =
+ {
+ 0xCE, 0xA0, 0xCE, 0x95, 0xCE, 0xA1, 0xCE, 0x99, 0xCE, 0xA3, 0xCE, 0xA3,
+ 0xCE, 0x8C, 0xCE, 0xA4, 0xCE, 0x95, 0xCE, 0xA1, 0xCE, 0x95, 0xCE, 0xA3,
+ ' ', 0xCE, 0xA0, 0xCE, 0x9B, 0xCE, 0x97, 0xCE, 0xA1, 0xCE, 0x9F,
+ 0xCE, 0xA6, 0xCE, 0x9F, 0xCE, 0xA1, 0xCE, 0x8A, 0xCE, 0x95, 0xCE, 0xA3
+ };
+ static const uint8_t casemapped[] =
+ {
+ 0xCF, 0x80, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB9, 0xCF, 0x83, 0xCF, 0x83,
+ 0xCF, 0x8C, 0xCF, 0x84, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB5, 0xCF, 0x82,
+ ' ', 0xCF, 0x80, 0xCE, 0xBB, 0xCE, 0xB7, 0xCF, 0x81, 0xCE, 0xBF,
+ 0xCF, 0x86, 0xCE, 0xBF, 0xCF, 0x81, 0xCE, 0xAF, 0xCE, 0xB5, 0xCF, 0x82
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "Σ" -> "σ" */
+ static const uint8_t input[] = { 0xCE, 0xA3 };
+ static const uint8_t casemapped[] = { 0xCF, 0x83 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "ΑΣ" -> "ας" */
+ static const uint8_t input[] = { 0xCE, 0x91, 0xCE, 0xA3 };
+ static const uint8_t casemapped[] = { 0xCE, 0xB1, 0xCF, 0x82 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ /* It's a final sigma only if not followed by a case-ignorable sequence and
+ then a cased letter. Note that U+0345 and U+037A are simultaneously
+ case-ignorable and cased (which is a bit paradoxical). */
+ { /* "ΑΣΑ" -> "ασα" */
+ static const uint8_t input[] = { 0xCE, 0x91, 0xCE, 0xA3, 0xCE, 0x91 };
+ static const uint8_t casemapped[] = { 0xCE, 0xB1, 0xCF, 0x83, 0xCE, 0xB1 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "ΑΣ:" -> "ας:" */
+ static const uint8_t input[] = { 0xCE, 0x91, 0xCE, 0xA3, 0x3A };
+ static const uint8_t casemapped[] = { 0xCE, 0xB1, 0xCF, 0x82, 0x3A };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "ΑΣ:Α" -> "ασ:α" */
+ static const uint8_t input[] = { 0xCE, 0x91, 0xCE, 0xA3, 0x3A, 0xCE, 0x91 };
+ static const uint8_t casemapped[] = { 0xCE, 0xB1, 0xCF, 0x83, 0x3A, 0xCE, 0xB1 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "ΑΣ:ͺ" -> "ασ:ͺ" */
+ static const uint8_t input[] = { 0xCE, 0x91, 0xCE, 0xA3, 0x3A, 0xCD, 0xBA };
+ static const uint8_t casemapped[] = { 0xCE, 0xB1, 0xCF, 0x83, 0x3A, 0xCD, 0xBA };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "ΑΣ:ͺ " -> "ασ:ͺ " */
+ static const uint8_t input[] = { 0xCE, 0x91, 0xCE, 0xA3, 0x3A, 0xCD, 0xBA, 0x20 };
+ static const uint8_t casemapped[] = { 0xCE, 0xB1, 0xCF, 0x83, 0x3A, 0xCD, 0xBA, 0x20 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ /* It's a final sigma only if preceded by a case-ignorable sequence and
+ a cased letter before it. Note that U+0345 and U+037A are simultaneously
+ case-ignorable and cased (which is a bit paradoxical). */
+ { /* ":Σ" -> ":σ" */
+ static const uint8_t input[] = { 0x3A, 0xCE, 0xA3 };
+ static const uint8_t casemapped[] = { 0x3A, 0xCF, 0x83 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "Α:Σ" -> "α:ς" */
+ static const uint8_t input[] = { 0xCE, 0x91, 0x3A, 0xCE, 0xA3 };
+ static const uint8_t casemapped[] = { 0xCE, 0xB1, 0x3A, 0xCF, 0x82 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "ͺ:Σ" -> "ͺ:ς" */
+ static const uint8_t input[] = { 0xCD, 0xBA, 0x3A, 0xCE, 0xA3 };
+ static const uint8_t casemapped[] = { 0xCD, 0xBA, 0x3A, 0xCF, 0x82 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* " ͺ:Σ" -> " ͺ:ς" */
+ static const uint8_t input[] = { 0x20, 0xCD, 0xBA, 0x3A, 0xCE, 0xA3 };
+ static const uint8_t casemapped[] = { 0x20, 0xCD, 0xBA, 0x3A, 0xCF, 0x82 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ return 0;
+}
diff --git a/tests/unicase/test-u8-totitle.c b/tests/unicase/test-u8-totitle.c
new file mode 100644
index 00000000..c2506ac5
--- /dev/null
+++ b/tests/unicase/test-u8-totitle.c
@@ -0,0 +1,217 @@
+/* Test of titlecase mapping for UTF-8 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint8_t *input, size_t input_length,
+ const char *iso639_language, uninorm_t nf,
+ const uint8_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint8_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u8_totitle (input, input_length, iso639_language, nf, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint8_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint8_t *) malloc (length * sizeof (uint8_t));
+ result = u8_totitle (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint8_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint8_t *) malloc (length * sizeof (uint8_t));
+ result = u8_totitle (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+int
+main ()
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, NULL, NULL, 0) == 0);
+ ASSERT (check (NULL, 0, NULL, UNINORM_NFC, NULL, 0) == 0);
+ }
+
+ /* Simple string. */
+ { /* "GRÜß GOTT. ЗДРАВСТВУЙТЕ! X=(-B±SQRT(B²-4AC))/(2A) 日本語,中文,한글" */
+ static const uint8_t input[] =
+ { 'G', 'R', 0xC3, 0x9C, 0xC3, 0x9F, ' ', 'G', 'O', 'T', 'T', '.', ' ',
+ 0xD0, 0x97, 0xD0, 0x94, 0xD0, 0xA0, 0xD0, 0x90, 0xD0, 0x92, 0xD0, 0xA1,
+ 0xD0, 0xA2, 0xD0, 0x92, 0xD0, 0xA3, 0xD0, 0x99, 0xD0, 0xA2, 0xD0, 0x95,
+ '!', ' ', 'X', '=', '(', '-', 'B', 0xC2, 0xB1, 'S', 'Q', 'R', 'T', '(',
+ 'B', 0xC2, 0xB2, '-', '4', 'A', 'C', ')', ')', '/', '(', '2', 'A', ')',
+ ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9E, ',',
+ 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C, 0xEA, 0xB8, 0x80, '\n'
+ };
+ static const uint8_t casemapped[] =
+ { 'G', 'r', 0xC3, 0xBC, 0xC3, 0x9F, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0xD0, 0x97, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1, 0x81,
+ 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5,
+ '!', ' ', 'X', '=', '(', '-', 'B', 0xC2, 0xB1, 'S', 'q', 'r', 't', '(',
+ 'B', 0xC2, 0xB2, '-', '4', 'A', 'c', ')', ')', '/', '(', '2', 'A', ')',
+ ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9E, ',',
+ 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C, 0xEA, 0xB8, 0x80, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mapping can increase the number of Unicode characters. */
+ { /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */
+ static const uint8_t input[] = { 0xC5, 0x89 };
+ static const uint8_t casemapped[] = { 0xCA, 0xBC, 0x4E };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+ static const uint8_t input[] = { 0xCE, 0x90 };
+ static const uint8_t casemapped[] = { 0xCE, 0x99, 0xCC, 0x88, 0xCC, 0x81 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Turkish letters i İ ı I */
+ { /* LATIN CAPITAL LETTER I */
+ static const uint8_t input[] = { 0x49 };
+ static const uint8_t casemapped[] = { 0x49 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* LATIN SMALL LETTER I */
+ static const uint8_t input[] = { 0x69 };
+ static const uint8_t casemapped[] = { 0x49 };
+ static const uint8_t casemapped_tr[] = { 0xC4, 0xB0 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped_tr, SIZEOF (casemapped_tr)) == 0);
+ }
+ { /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
+ static const uint8_t input[] = { 0xC4, 0xB0 };
+ static const uint8_t casemapped[] = { 0xC4, 0xB0 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* LATIN SMALL LETTER DOTLESS I */
+ static const uint8_t input[] = { 0xC4, 0xB1 };
+ static const uint8_t casemapped[] = { 0x49 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "topkapı" */
+ static const uint8_t input[] =
+ { 0x74, 0x6F, 0x70, 0x6B, 0x61, 0x70, 0xC4, 0xB1 };
+ static const uint8_t casemapped[] =
+ { 0x54, 0x6F, 0x70, 0x6B, 0x61, 0x70, 0xC4, 0xB1 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Uppercasing can increase the number of Unicode characters. */
+ { /* "heiß" */
+ static const uint8_t input[] = { 0x68, 0x65, 0x69, 0xC3, 0x9F };
+ static const uint8_t casemapped[] = { 0x48, 0x65, 0x69, 0xC3, 0x9F };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mappings for some characters can depend on the surrounding characters. */
+ { /* "περισσότερες πληροφορίες" */
+ static const uint8_t input[] =
+ {
+ 0xCF, 0x80, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB9, 0xCF, 0x83, 0xCF, 0x83,
+ 0xCF, 0x8C, 0xCF, 0x84, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB5, 0xCF, 0x82,
+ ' ', 0xCF, 0x80, 0xCE, 0xBB, 0xCE, 0xB7, 0xCF, 0x81, 0xCE, 0xBF,
+ 0xCF, 0x86, 0xCE, 0xBF, 0xCF, 0x81, 0xCE, 0xAF, 0xCE, 0xB5, 0xCF, 0x82
+ };
+ static const uint8_t casemapped[] =
+ {
+ 0xCE, 0xA0, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB9, 0xCF, 0x83, 0xCF, 0x83,
+ 0xCF, 0x8C, 0xCF, 0x84, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB5, 0xCF, 0x82,
+ ' ', 0xCE, 0xA0, 0xCE, 0xBB, 0xCE, 0xB7, 0xCF, 0x81, 0xCE, 0xBF,
+ 0xCF, 0x86, 0xCE, 0xBF, 0xCF, 0x81, 0xCE, 0xAF, 0xCE, 0xB5, 0xCF, 0x82
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mapping can require subsequent normalization. */
+ { /* LATIN SMALL LETTER J WITH CARON, COMBINING DOT BELOW */
+ static const uint8_t input[] = { 0xC7, 0xB0, 0xCC, 0xA3 };
+ static const uint8_t casemapped[] = { 0x4A, 0xCC, 0x8C, 0xCC, 0xA3 };
+ static const uint8_t casemapped_normalized[] = { 0x4A, 0xCC, 0xA3, 0xCC, 0x8C };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), NULL, UNINORM_NFC, casemapped_normalized, SIZEOF (casemapped_normalized)) == 0);
+ }
+
+ return 0;
+}
diff --git a/tests/unicase/test-u8-toupper.c b/tests/unicase/test-u8-toupper.c
new file mode 100644
index 00000000..41e536bd
--- /dev/null
+++ b/tests/unicase/test-u8-toupper.c
@@ -0,0 +1,217 @@
+/* Test of uppercase mapping for UTF-8 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint8_t *input, size_t input_length,
+ const char *iso639_language, uninorm_t nf,
+ const uint8_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint8_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u8_toupper (input, input_length, iso639_language, nf, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint8_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint8_t *) malloc (length * sizeof (uint8_t));
+ result = u8_toupper (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint8_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint8_t *) malloc (length * sizeof (uint8_t));
+ result = u8_toupper (input, input_length, iso639_language, nf, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+int
+main ()
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, NULL, NULL, 0) == 0);
+ ASSERT (check (NULL, 0, NULL, UNINORM_NFC, NULL, 0) == 0);
+ }
+
+ /* Simple string. */
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint8_t input[] =
+ { 'G', 'r', 0xC3, 0xBC, 0xC3, 0x9F, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0xD0, 0x97, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1, 0x81,
+ 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5,
+ '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1, 's', 'q', 'r', 't', '(',
+ 'b', 0xC2, 0xB2, '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')',
+ ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9E, ',',
+ 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C, 0xEA, 0xB8, 0x80, '\n'
+ };
+ static const uint8_t casemapped[] =
+ { 'G', 'R', 0xC3, 0x9C, 0x53, 0x53, ' ', 'G', 'O', 'T', 'T', '.', ' ',
+ 0xD0, 0x97, 0xD0, 0x94, 0xD0, 0xA0, 0xD0, 0x90, 0xD0, 0x92, 0xD0, 0xA1,
+ 0xD0, 0xA2, 0xD0, 0x92, 0xD0, 0xA3, 0xD0, 0x99, 0xD0, 0xA2, 0xD0, 0x95,
+ '!', ' ', 'X', '=', '(', '-', 'B', 0xC2, 0xB1, 'S', 'Q', 'R', 'T', '(',
+ 'B', 0xC2, 0xB2, '-', '4', 'A', 'C', ')', ')', '/', '(', '2', 'A', ')',
+ ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9E, ',',
+ 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C, 0xEA, 0xB8, 0x80, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mapping can increase the number of Unicode characters. */
+ { /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */
+ static const uint8_t input[] = { 0xC5, 0x89 };
+ static const uint8_t casemapped[] = { 0xCA, 0xBC, 0x4E };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+ static const uint8_t input[] = { 0xCE, 0x90 };
+ static const uint8_t casemapped[] = { 0xCE, 0x99, 0xCC, 0x88, 0xCC, 0x81 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Turkish letters i İ ı I */
+ { /* LATIN CAPITAL LETTER I */
+ static const uint8_t input[] = { 0x49 };
+ static const uint8_t casemapped[] = { 0x49 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* LATIN SMALL LETTER I */
+ static const uint8_t input[] = { 0x69 };
+ static const uint8_t casemapped[] = { 0x49 };
+ static const uint8_t casemapped_tr[] = { 0xC4, 0xB0 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped_tr, SIZEOF (casemapped_tr)) == 0);
+ }
+ { /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
+ static const uint8_t input[] = { 0xC4, 0xB0 };
+ static const uint8_t casemapped[] = { 0xC4, 0xB0 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* LATIN SMALL LETTER DOTLESS I */
+ static const uint8_t input[] = { 0xC4, 0xB1 };
+ static const uint8_t casemapped[] = { 0x49 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+ { /* "topkapı" */
+ static const uint8_t input[] =
+ { 0x74, 0x6F, 0x70, 0x6B, 0x61, 0x70, 0xC4, 0xB1 };
+ static const uint8_t casemapped[] =
+ { 0x54, 0x4F, 0x50, 0x4B, 0x41, 0x50, 0x49 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), "tr", NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Uppercasing can increase the number of Unicode characters. */
+ { /* "heiß" */
+ static const uint8_t input[] = { 0x68, 0x65, 0x69, 0xC3, 0x9F };
+ static const uint8_t casemapped[] = { 0x48, 0x45, 0x49, 0x53, 0x53 };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mappings for some characters can depend on the surrounding characters. */
+ { /* "περισσότερες πληροφορίες" */
+ static const uint8_t input[] =
+ {
+ 0xCF, 0x80, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB9, 0xCF, 0x83, 0xCF, 0x83,
+ 0xCF, 0x8C, 0xCF, 0x84, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB5, 0xCF, 0x82,
+ ' ', 0xCF, 0x80, 0xCE, 0xBB, 0xCE, 0xB7, 0xCF, 0x81, 0xCE, 0xBF,
+ 0xCF, 0x86, 0xCE, 0xBF, 0xCF, 0x81, 0xCE, 0xAF, 0xCE, 0xB5, 0xCF, 0x82
+ };
+ static const uint8_t casemapped[] =
+ {
+ 0xCE, 0xA0, 0xCE, 0x95, 0xCE, 0xA1, 0xCE, 0x99, 0xCE, 0xA3, 0xCE, 0xA3,
+ 0xCE, 0x8C, 0xCE, 0xA4, 0xCE, 0x95, 0xCE, 0xA1, 0xCE, 0x95, 0xCE, 0xA3,
+ ' ', 0xCE, 0xA0, 0xCE, 0x9B, 0xCE, 0x97, 0xCE, 0xA1, 0xCE, 0x9F,
+ 0xCE, 0xA6, 0xCE, 0x9F, 0xCE, 0xA1, 0xCE, 0x8A, 0xCE, 0x95, 0xCE, 0xA3
+ };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ }
+
+ /* Case mapping can require subsequent normalization. */
+ { /* LATIN SMALL LETTER J WITH CARON, COMBINING DOT BELOW */
+ static const uint8_t input[] = { 0xC7, 0xB0, 0xCC, 0xA3 };
+ static const uint8_t casemapped[] = { 0x4A, 0xCC, 0x8C, 0xCC, 0xA3 };
+ static const uint8_t casemapped_normalized[] = { 0x4A, 0xCC, 0xA3, 0xCC, 0x8C };
+ ASSERT (check (input, SIZEOF (input), NULL, NULL, casemapped, SIZEOF (casemapped)) == 0);
+ ASSERT (check (input, SIZEOF (input), NULL, UNINORM_NFC, casemapped_normalized, SIZEOF (casemapped_normalized)) == 0);
+ }
+
+ return 0;
+}
diff --git a/tests/unicase/test-uc_tolower.c b/tests/unicase/test-uc_tolower.c
new file mode 100644
index 00000000..302e26b8
--- /dev/null
+++ b/tests/unicase/test-uc_tolower.c
@@ -0,0 +1,1047 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character mapping functions.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Generated automatically by gen-case.c for Unicode 5.1.0. */
+
+#include "test-mapping-part1.h"
+
+ { 0x0041, 0x0061 },
+ { 0x0042, 0x0062 },
+ { 0x0043, 0x0063 },
+ { 0x0044, 0x0064 },
+ { 0x0045, 0x0065 },
+ { 0x0046, 0x0066 },
+ { 0x0047, 0x0067 },
+ { 0x0048, 0x0068 },
+ { 0x0049, 0x0069 },
+ { 0x004A, 0x006A },
+ { 0x004B, 0x006B },
+ { 0x004C, 0x006C },
+ { 0x004D, 0x006D },
+ { 0x004E, 0x006E },
+ { 0x004F, 0x006F },
+ { 0x0050, 0x0070 },
+ { 0x0051, 0x0071 },
+ { 0x0052, 0x0072 },
+ { 0x0053, 0x0073 },
+ { 0x0054, 0x0074 },
+ { 0x0055, 0x0075 },
+ { 0x0056, 0x0076 },
+ { 0x0057, 0x0077 },
+ { 0x0058, 0x0078 },
+ { 0x0059, 0x0079 },
+ { 0x005A, 0x007A },
+ { 0x00C0, 0x00E0 },
+ { 0x00C1, 0x00E1 },
+ { 0x00C2, 0x00E2 },
+ { 0x00C3, 0x00E3 },
+ { 0x00C4, 0x00E4 },
+ { 0x00C5, 0x00E5 },
+ { 0x00C6, 0x00E6 },
+ { 0x00C7, 0x00E7 },
+ { 0x00C8, 0x00E8 },
+ { 0x00C9, 0x00E9 },
+ { 0x00CA, 0x00EA },
+ { 0x00CB, 0x00EB },
+ { 0x00CC, 0x00EC },
+ { 0x00CD, 0x00ED },
+ { 0x00CE, 0x00EE },
+ { 0x00CF, 0x00EF },
+ { 0x00D0, 0x00F0 },
+ { 0x00D1, 0x00F1 },
+ { 0x00D2, 0x00F2 },
+ { 0x00D3, 0x00F3 },
+ { 0x00D4, 0x00F4 },
+ { 0x00D5, 0x00F5 },
+ { 0x00D6, 0x00F6 },
+ { 0x00D8, 0x00F8 },
+ { 0x00D9, 0x00F9 },
+ { 0x00DA, 0x00FA },
+ { 0x00DB, 0x00FB },
+ { 0x00DC, 0x00FC },
+ { 0x00DD, 0x00FD },
+ { 0x00DE, 0x00FE },
+ { 0x0100, 0x0101 },
+ { 0x0102, 0x0103 },
+ { 0x0104, 0x0105 },
+ { 0x0106, 0x0107 },
+ { 0x0108, 0x0109 },
+ { 0x010A, 0x010B },
+ { 0x010C, 0x010D },
+ { 0x010E, 0x010F },
+ { 0x0110, 0x0111 },
+ { 0x0112, 0x0113 },
+ { 0x0114, 0x0115 },
+ { 0x0116, 0x0117 },
+ { 0x0118, 0x0119 },
+ { 0x011A, 0x011B },
+ { 0x011C, 0x011D },
+ { 0x011E, 0x011F },
+ { 0x0120, 0x0121 },
+ { 0x0122, 0x0123 },
+ { 0x0124, 0x0125 },
+ { 0x0126, 0x0127 },
+ { 0x0128, 0x0129 },
+ { 0x012A, 0x012B },
+ { 0x012C, 0x012D },
+ { 0x012E, 0x012F },
+ { 0x0130, 0x0069 },
+ { 0x0132, 0x0133 },
+ { 0x0134, 0x0135 },
+ { 0x0136, 0x0137 },
+ { 0x0139, 0x013A },
+ { 0x013B, 0x013C },
+ { 0x013D, 0x013E },
+ { 0x013F, 0x0140 },
+ { 0x0141, 0x0142 },
+ { 0x0143, 0x0144 },
+ { 0x0145, 0x0146 },
+ { 0x0147, 0x0148 },
+ { 0x014A, 0x014B },
+ { 0x014C, 0x014D },
+ { 0x014E, 0x014F },
+ { 0x0150, 0x0151 },
+ { 0x0152, 0x0153 },
+ { 0x0154, 0x0155 },
+ { 0x0156, 0x0157 },
+ { 0x0158, 0x0159 },
+ { 0x015A, 0x015B },
+ { 0x015C, 0x015D },
+ { 0x015E, 0x015F },
+ { 0x0160, 0x0161 },
+ { 0x0162, 0x0163 },
+ { 0x0164, 0x0165 },
+ { 0x0166, 0x0167 },
+ { 0x0168, 0x0169 },
+ { 0x016A, 0x016B },
+ { 0x016C, 0x016D },
+ { 0x016E, 0x016F },
+ { 0x0170, 0x0171 },
+ { 0x0172, 0x0173 },
+ { 0x0174, 0x0175 },
+ { 0x0176, 0x0177 },
+ { 0x0178, 0x00FF },
+ { 0x0179, 0x017A },
+ { 0x017B, 0x017C },
+ { 0x017D, 0x017E },
+ { 0x0181, 0x0253 },
+ { 0x0182, 0x0183 },
+ { 0x0184, 0x0185 },
+ { 0x0186, 0x0254 },
+ { 0x0187, 0x0188 },
+ { 0x0189, 0x0256 },
+ { 0x018A, 0x0257 },
+ { 0x018B, 0x018C },
+ { 0x018E, 0x01DD },
+ { 0x018F, 0x0259 },
+ { 0x0190, 0x025B },
+ { 0x0191, 0x0192 },
+ { 0x0193, 0x0260 },
+ { 0x0194, 0x0263 },
+ { 0x0196, 0x0269 },
+ { 0x0197, 0x0268 },
+ { 0x0198, 0x0199 },
+ { 0x019C, 0x026F },
+ { 0x019D, 0x0272 },
+ { 0x019F, 0x0275 },
+ { 0x01A0, 0x01A1 },
+ { 0x01A2, 0x01A3 },
+ { 0x01A4, 0x01A5 },
+ { 0x01A6, 0x0280 },
+ { 0x01A7, 0x01A8 },
+ { 0x01A9, 0x0283 },
+ { 0x01AC, 0x01AD },
+ { 0x01AE, 0x0288 },
+ { 0x01AF, 0x01B0 },
+ { 0x01B1, 0x028A },
+ { 0x01B2, 0x028B },
+ { 0x01B3, 0x01B4 },
+ { 0x01B5, 0x01B6 },
+ { 0x01B7, 0x0292 },
+ { 0x01B8, 0x01B9 },
+ { 0x01BC, 0x01BD },
+ { 0x01C4, 0x01C6 },
+ { 0x01C5, 0x01C6 },
+ { 0x01C7, 0x01C9 },
+ { 0x01C8, 0x01C9 },
+ { 0x01CA, 0x01CC },
+ { 0x01CB, 0x01CC },
+ { 0x01CD, 0x01CE },
+ { 0x01CF, 0x01D0 },
+ { 0x01D1, 0x01D2 },
+ { 0x01D3, 0x01D4 },
+ { 0x01D5, 0x01D6 },
+ { 0x01D7, 0x01D8 },
+ { 0x01D9, 0x01DA },
+ { 0x01DB, 0x01DC },
+ { 0x01DE, 0x01DF },
+ { 0x01E0, 0x01E1 },
+ { 0x01E2, 0x01E3 },
+ { 0x01E4, 0x01E5 },
+ { 0x01E6, 0x01E7 },
+ { 0x01E8, 0x01E9 },
+ { 0x01EA, 0x01EB },
+ { 0x01EC, 0x01ED },
+ { 0x01EE, 0x01EF },
+ { 0x01F1, 0x01F3 },
+ { 0x01F2, 0x01F3 },
+ { 0x01F4, 0x01F5 },
+ { 0x01F6, 0x0195 },
+ { 0x01F7, 0x01BF },
+ { 0x01F8, 0x01F9 },
+ { 0x01FA, 0x01FB },
+ { 0x01FC, 0x01FD },
+ { 0x01FE, 0x01FF },
+ { 0x0200, 0x0201 },
+ { 0x0202, 0x0203 },
+ { 0x0204, 0x0205 },
+ { 0x0206, 0x0207 },
+ { 0x0208, 0x0209 },
+ { 0x020A, 0x020B },
+ { 0x020C, 0x020D },
+ { 0x020E, 0x020F },
+ { 0x0210, 0x0211 },
+ { 0x0212, 0x0213 },
+ { 0x0214, 0x0215 },
+ { 0x0216, 0x0217 },
+ { 0x0218, 0x0219 },
+ { 0x021A, 0x021B },
+ { 0x021C, 0x021D },
+ { 0x021E, 0x021F },
+ { 0x0220, 0x019E },
+ { 0x0222, 0x0223 },
+ { 0x0224, 0x0225 },
+ { 0x0226, 0x0227 },
+ { 0x0228, 0x0229 },
+ { 0x022A, 0x022B },
+ { 0x022C, 0x022D },
+ { 0x022E, 0x022F },
+ { 0x0230, 0x0231 },
+ { 0x0232, 0x0233 },
+ { 0x023A, 0x2C65 },
+ { 0x023B, 0x023C },
+ { 0x023D, 0x019A },
+ { 0x023E, 0x2C66 },
+ { 0x0241, 0x0242 },
+ { 0x0243, 0x0180 },
+ { 0x0244, 0x0289 },
+ { 0x0245, 0x028C },
+ { 0x0246, 0x0247 },
+ { 0x0248, 0x0249 },
+ { 0x024A, 0x024B },
+ { 0x024C, 0x024D },
+ { 0x024E, 0x024F },
+ { 0x0370, 0x0371 },
+ { 0x0372, 0x0373 },
+ { 0x0376, 0x0377 },
+ { 0x0386, 0x03AC },
+ { 0x0388, 0x03AD },
+ { 0x0389, 0x03AE },
+ { 0x038A, 0x03AF },
+ { 0x038C, 0x03CC },
+ { 0x038E, 0x03CD },
+ { 0x038F, 0x03CE },
+ { 0x0391, 0x03B1 },
+ { 0x0392, 0x03B2 },
+ { 0x0393, 0x03B3 },
+ { 0x0394, 0x03B4 },
+ { 0x0395, 0x03B5 },
+ { 0x0396, 0x03B6 },
+ { 0x0397, 0x03B7 },
+ { 0x0398, 0x03B8 },
+ { 0x0399, 0x03B9 },
+ { 0x039A, 0x03BA },
+ { 0x039B, 0x03BB },
+ { 0x039C, 0x03BC },
+ { 0x039D, 0x03BD },
+ { 0x039E, 0x03BE },
+ { 0x039F, 0x03BF },
+ { 0x03A0, 0x03C0 },
+ { 0x03A1, 0x03C1 },
+ { 0x03A3, 0x03C3 },
+ { 0x03A4, 0x03C4 },
+ { 0x03A5, 0x03C5 },
+ { 0x03A6, 0x03C6 },
+ { 0x03A7, 0x03C7 },
+ { 0x03A8, 0x03C8 },
+ { 0x03A9, 0x03C9 },
+ { 0x03AA, 0x03CA },
+ { 0x03AB, 0x03CB },
+ { 0x03CF, 0x03D7 },
+ { 0x03D8, 0x03D9 },
+ { 0x03DA, 0x03DB },
+ { 0x03DC, 0x03DD },
+ { 0x03DE, 0x03DF },
+ { 0x03E0, 0x03E1 },
+ { 0x03E2, 0x03E3 },
+ { 0x03E4, 0x03E5 },
+ { 0x03E6, 0x03E7 },
+ { 0x03E8, 0x03E9 },
+ { 0x03EA, 0x03EB },
+ { 0x03EC, 0x03ED },
+ { 0x03EE, 0x03EF },
+ { 0x03F4, 0x03B8 },
+ { 0x03F7, 0x03F8 },
+ { 0x03F9, 0x03F2 },
+ { 0x03FA, 0x03FB },
+ { 0x03FD, 0x037B },
+ { 0x03FE, 0x037C },
+ { 0x03FF, 0x037D },
+ { 0x0400, 0x0450 },
+ { 0x0401, 0x0451 },
+ { 0x0402, 0x0452 },
+ { 0x0403, 0x0453 },
+ { 0x0404, 0x0454 },
+ { 0x0405, 0x0455 },
+ { 0x0406, 0x0456 },
+ { 0x0407, 0x0457 },
+ { 0x0408, 0x0458 },
+ { 0x0409, 0x0459 },
+ { 0x040A, 0x045A },
+ { 0x040B, 0x045B },
+ { 0x040C, 0x045C },
+ { 0x040D, 0x045D },
+ { 0x040E, 0x045E },
+ { 0x040F, 0x045F },
+ { 0x0410, 0x0430 },
+ { 0x0411, 0x0431 },
+ { 0x0412, 0x0432 },
+ { 0x0413, 0x0433 },
+ { 0x0414, 0x0434 },
+ { 0x0415, 0x0435 },
+ { 0x0416, 0x0436 },
+ { 0x0417, 0x0437 },
+ { 0x0418, 0x0438 },
+ { 0x0419, 0x0439 },
+ { 0x041A, 0x043A },
+ { 0x041B, 0x043B },
+ { 0x041C, 0x043C },
+ { 0x041D, 0x043D },
+ { 0x041E, 0x043E },
+ { 0x041F, 0x043F },
+ { 0x0420, 0x0440 },
+ { 0x0421, 0x0441 },
+ { 0x0422, 0x0442 },
+ { 0x0423, 0x0443 },
+ { 0x0424, 0x0444 },
+ { 0x0425, 0x0445 },
+ { 0x0426, 0x0446 },
+ { 0x0427, 0x0447 },
+ { 0x0428, 0x0448 },
+ { 0x0429, 0x0449 },
+ { 0x042A, 0x044A },
+ { 0x042B, 0x044B },
+ { 0x042C, 0x044C },
+ { 0x042D, 0x044D },
+ { 0x042E, 0x044E },
+ { 0x042F, 0x044F },
+ { 0x0460, 0x0461 },
+ { 0x0462, 0x0463 },
+ { 0x0464, 0x0465 },
+ { 0x0466, 0x0467 },
+ { 0x0468, 0x0469 },
+ { 0x046A, 0x046B },
+ { 0x046C, 0x046D },
+ { 0x046E, 0x046F },
+ { 0x0470, 0x0471 },
+ { 0x0472, 0x0473 },
+ { 0x0474, 0x0475 },
+ { 0x0476, 0x0477 },
+ { 0x0478, 0x0479 },
+ { 0x047A, 0x047B },
+ { 0x047C, 0x047D },
+ { 0x047E, 0x047F },
+ { 0x0480, 0x0481 },
+ { 0x048A, 0x048B },
+ { 0x048C, 0x048D },
+ { 0x048E, 0x048F },
+ { 0x0490, 0x0491 },
+ { 0x0492, 0x0493 },
+ { 0x0494, 0x0495 },
+ { 0x0496, 0x0497 },
+ { 0x0498, 0x0499 },
+ { 0x049A, 0x049B },
+ { 0x049C, 0x049D },
+ { 0x049E, 0x049F },
+ { 0x04A0, 0x04A1 },
+ { 0x04A2, 0x04A3 },
+ { 0x04A4, 0x04A5 },
+ { 0x04A6, 0x04A7 },
+ { 0x04A8, 0x04A9 },
+ { 0x04AA, 0x04AB },
+ { 0x04AC, 0x04AD },
+ { 0x04AE, 0x04AF },
+ { 0x04B0, 0x04B1 },
+ { 0x04B2, 0x04B3 },
+ { 0x04B4, 0x04B5 },
+ { 0x04B6, 0x04B7 },
+ { 0x04B8, 0x04B9 },
+ { 0x04BA, 0x04BB },
+ { 0x04BC, 0x04BD },
+ { 0x04BE, 0x04BF },
+ { 0x04C0, 0x04CF },
+ { 0x04C1, 0x04C2 },
+ { 0x04C3, 0x04C4 },
+ { 0x04C5, 0x04C6 },
+ { 0x04C7, 0x04C8 },
+ { 0x04C9, 0x04CA },
+ { 0x04CB, 0x04CC },
+ { 0x04CD, 0x04CE },
+ { 0x04D0, 0x04D1 },
+ { 0x04D2, 0x04D3 },
+ { 0x04D4, 0x04D5 },
+ { 0x04D6, 0x04D7 },
+ { 0x04D8, 0x04D9 },
+ { 0x04DA, 0x04DB },
+ { 0x04DC, 0x04DD },
+ { 0x04DE, 0x04DF },
+ { 0x04E0, 0x04E1 },
+ { 0x04E2, 0x04E3 },
+ { 0x04E4, 0x04E5 },
+ { 0x04E6, 0x04E7 },
+ { 0x04E8, 0x04E9 },
+ { 0x04EA, 0x04EB },
+ { 0x04EC, 0x04ED },
+ { 0x04EE, 0x04EF },
+ { 0x04F0, 0x04F1 },
+ { 0x04F2, 0x04F3 },
+ { 0x04F4, 0x04F5 },
+ { 0x04F6, 0x04F7 },
+ { 0x04F8, 0x04F9 },
+ { 0x04FA, 0x04FB },
+ { 0x04FC, 0x04FD },
+ { 0x04FE, 0x04FF },
+ { 0x0500, 0x0501 },
+ { 0x0502, 0x0503 },
+ { 0x0504, 0x0505 },
+ { 0x0506, 0x0507 },
+ { 0x0508, 0x0509 },
+ { 0x050A, 0x050B },
+ { 0x050C, 0x050D },
+ { 0x050E, 0x050F },
+ { 0x0510, 0x0511 },
+ { 0x0512, 0x0513 },
+ { 0x0514, 0x0515 },
+ { 0x0516, 0x0517 },
+ { 0x0518, 0x0519 },
+ { 0x051A, 0x051B },
+ { 0x051C, 0x051D },
+ { 0x051E, 0x051F },
+ { 0x0520, 0x0521 },
+ { 0x0522, 0x0523 },
+ { 0x0531, 0x0561 },
+ { 0x0532, 0x0562 },
+ { 0x0533, 0x0563 },
+ { 0x0534, 0x0564 },
+ { 0x0535, 0x0565 },
+ { 0x0536, 0x0566 },
+ { 0x0537, 0x0567 },
+ { 0x0538, 0x0568 },
+ { 0x0539, 0x0569 },
+ { 0x053A, 0x056A },
+ { 0x053B, 0x056B },
+ { 0x053C, 0x056C },
+ { 0x053D, 0x056D },
+ { 0x053E, 0x056E },
+ { 0x053F, 0x056F },
+ { 0x0540, 0x0570 },
+ { 0x0541, 0x0571 },
+ { 0x0542, 0x0572 },
+ { 0x0543, 0x0573 },
+ { 0x0544, 0x0574 },
+ { 0x0545, 0x0575 },
+ { 0x0546, 0x0576 },
+ { 0x0547, 0x0577 },
+ { 0x0548, 0x0578 },
+ { 0x0549, 0x0579 },
+ { 0x054A, 0x057A },
+ { 0x054B, 0x057B },
+ { 0x054C, 0x057C },
+ { 0x054D, 0x057D },
+ { 0x054E, 0x057E },
+ { 0x054F, 0x057F },
+ { 0x0550, 0x0580 },
+ { 0x0551, 0x0581 },
+ { 0x0552, 0x0582 },
+ { 0x0553, 0x0583 },
+ { 0x0554, 0x0584 },
+ { 0x0555, 0x0585 },
+ { 0x0556, 0x0586 },
+ { 0x10A0, 0x2D00 },
+ { 0x10A1, 0x2D01 },
+ { 0x10A2, 0x2D02 },
+ { 0x10A3, 0x2D03 },
+ { 0x10A4, 0x2D04 },
+ { 0x10A5, 0x2D05 },
+ { 0x10A6, 0x2D06 },
+ { 0x10A7, 0x2D07 },
+ { 0x10A8, 0x2D08 },
+ { 0x10A9, 0x2D09 },
+ { 0x10AA, 0x2D0A },
+ { 0x10AB, 0x2D0B },
+ { 0x10AC, 0x2D0C },
+ { 0x10AD, 0x2D0D },
+ { 0x10AE, 0x2D0E },
+ { 0x10AF, 0x2D0F },
+ { 0x10B0, 0x2D10 },
+ { 0x10B1, 0x2D11 },
+ { 0x10B2, 0x2D12 },
+ { 0x10B3, 0x2D13 },
+ { 0x10B4, 0x2D14 },
+ { 0x10B5, 0x2D15 },
+ { 0x10B6, 0x2D16 },
+ { 0x10B7, 0x2D17 },
+ { 0x10B8, 0x2D18 },
+ { 0x10B9, 0x2D19 },
+ { 0x10BA, 0x2D1A },
+ { 0x10BB, 0x2D1B },
+ { 0x10BC, 0x2D1C },
+ { 0x10BD, 0x2D1D },
+ { 0x10BE, 0x2D1E },
+ { 0x10BF, 0x2D1F },
+ { 0x10C0, 0x2D20 },
+ { 0x10C1, 0x2D21 },
+ { 0x10C2, 0x2D22 },
+ { 0x10C3, 0x2D23 },
+ { 0x10C4, 0x2D24 },
+ { 0x10C5, 0x2D25 },
+ { 0x1E00, 0x1E01 },
+ { 0x1E02, 0x1E03 },
+ { 0x1E04, 0x1E05 },
+ { 0x1E06, 0x1E07 },
+ { 0x1E08, 0x1E09 },
+ { 0x1E0A, 0x1E0B },
+ { 0x1E0C, 0x1E0D },
+ { 0x1E0E, 0x1E0F },
+ { 0x1E10, 0x1E11 },
+ { 0x1E12, 0x1E13 },
+ { 0x1E14, 0x1E15 },
+ { 0x1E16, 0x1E17 },
+ { 0x1E18, 0x1E19 },
+ { 0x1E1A, 0x1E1B },
+ { 0x1E1C, 0x1E1D },
+ { 0x1E1E, 0x1E1F },
+ { 0x1E20, 0x1E21 },
+ { 0x1E22, 0x1E23 },
+ { 0x1E24, 0x1E25 },
+ { 0x1E26, 0x1E27 },
+ { 0x1E28, 0x1E29 },
+ { 0x1E2A, 0x1E2B },
+ { 0x1E2C, 0x1E2D },
+ { 0x1E2E, 0x1E2F },
+ { 0x1E30, 0x1E31 },
+ { 0x1E32, 0x1E33 },
+ { 0x1E34, 0x1E35 },
+ { 0x1E36, 0x1E37 },
+ { 0x1E38, 0x1E39 },
+ { 0x1E3A, 0x1E3B },
+ { 0x1E3C, 0x1E3D },
+ { 0x1E3E, 0x1E3F },
+ { 0x1E40, 0x1E41 },
+ { 0x1E42, 0x1E43 },
+ { 0x1E44, 0x1E45 },
+ { 0x1E46, 0x1E47 },
+ { 0x1E48, 0x1E49 },
+ { 0x1E4A, 0x1E4B },
+ { 0x1E4C, 0x1E4D },
+ { 0x1E4E, 0x1E4F },
+ { 0x1E50, 0x1E51 },
+ { 0x1E52, 0x1E53 },
+ { 0x1E54, 0x1E55 },
+ { 0x1E56, 0x1E57 },
+ { 0x1E58, 0x1E59 },
+ { 0x1E5A, 0x1E5B },
+ { 0x1E5C, 0x1E5D },
+ { 0x1E5E, 0x1E5F },
+ { 0x1E60, 0x1E61 },
+ { 0x1E62, 0x1E63 },
+ { 0x1E64, 0x1E65 },
+ { 0x1E66, 0x1E67 },
+ { 0x1E68, 0x1E69 },
+ { 0x1E6A, 0x1E6B },
+ { 0x1E6C, 0x1E6D },
+ { 0x1E6E, 0x1E6F },
+ { 0x1E70, 0x1E71 },
+ { 0x1E72, 0x1E73 },
+ { 0x1E74, 0x1E75 },
+ { 0x1E76, 0x1E77 },
+ { 0x1E78, 0x1E79 },
+ { 0x1E7A, 0x1E7B },
+ { 0x1E7C, 0x1E7D },
+ { 0x1E7E, 0x1E7F },
+ { 0x1E80, 0x1E81 },
+ { 0x1E82, 0x1E83 },
+ { 0x1E84, 0x1E85 },
+ { 0x1E86, 0x1E87 },
+ { 0x1E88, 0x1E89 },
+ { 0x1E8A, 0x1E8B },
+ { 0x1E8C, 0x1E8D },
+ { 0x1E8E, 0x1E8F },
+ { 0x1E90, 0x1E91 },
+ { 0x1E92, 0x1E93 },
+ { 0x1E94, 0x1E95 },
+ { 0x1E9E, 0x00DF },
+ { 0x1EA0, 0x1EA1 },
+ { 0x1EA2, 0x1EA3 },
+ { 0x1EA4, 0x1EA5 },
+ { 0x1EA6, 0x1EA7 },
+ { 0x1EA8, 0x1EA9 },
+ { 0x1EAA, 0x1EAB },
+ { 0x1EAC, 0x1EAD },
+ { 0x1EAE, 0x1EAF },
+ { 0x1EB0, 0x1EB1 },
+ { 0x1EB2, 0x1EB3 },
+ { 0x1EB4, 0x1EB5 },
+ { 0x1EB6, 0x1EB7 },
+ { 0x1EB8, 0x1EB9 },
+ { 0x1EBA, 0x1EBB },
+ { 0x1EBC, 0x1EBD },
+ { 0x1EBE, 0x1EBF },
+ { 0x1EC0, 0x1EC1 },
+ { 0x1EC2, 0x1EC3 },
+ { 0x1EC4, 0x1EC5 },
+ { 0x1EC6, 0x1EC7 },
+ { 0x1EC8, 0x1EC9 },
+ { 0x1ECA, 0x1ECB },
+ { 0x1ECC, 0x1ECD },
+ { 0x1ECE, 0x1ECF },
+ { 0x1ED0, 0x1ED1 },
+ { 0x1ED2, 0x1ED3 },
+ { 0x1ED4, 0x1ED5 },
+ { 0x1ED6, 0x1ED7 },
+ { 0x1ED8, 0x1ED9 },
+ { 0x1EDA, 0x1EDB },
+ { 0x1EDC, 0x1EDD },
+ { 0x1EDE, 0x1EDF },
+ { 0x1EE0, 0x1EE1 },
+ { 0x1EE2, 0x1EE3 },
+ { 0x1EE4, 0x1EE5 },
+ { 0x1EE6, 0x1EE7 },
+ { 0x1EE8, 0x1EE9 },
+ { 0x1EEA, 0x1EEB },
+ { 0x1EEC, 0x1EED },
+ { 0x1EEE, 0x1EEF },
+ { 0x1EF0, 0x1EF1 },
+ { 0x1EF2, 0x1EF3 },
+ { 0x1EF4, 0x1EF5 },
+ { 0x1EF6, 0x1EF7 },
+ { 0x1EF8, 0x1EF9 },
+ { 0x1EFA, 0x1EFB },
+ { 0x1EFC, 0x1EFD },
+ { 0x1EFE, 0x1EFF },
+ { 0x1F08, 0x1F00 },
+ { 0x1F09, 0x1F01 },
+ { 0x1F0A, 0x1F02 },
+ { 0x1F0B, 0x1F03 },
+ { 0x1F0C, 0x1F04 },
+ { 0x1F0D, 0x1F05 },
+ { 0x1F0E, 0x1F06 },
+ { 0x1F0F, 0x1F07 },
+ { 0x1F18, 0x1F10 },
+ { 0x1F19, 0x1F11 },
+ { 0x1F1A, 0x1F12 },
+ { 0x1F1B, 0x1F13 },
+ { 0x1F1C, 0x1F14 },
+ { 0x1F1D, 0x1F15 },
+ { 0x1F28, 0x1F20 },
+ { 0x1F29, 0x1F21 },
+ { 0x1F2A, 0x1F22 },
+ { 0x1F2B, 0x1F23 },
+ { 0x1F2C, 0x1F24 },
+ { 0x1F2D, 0x1F25 },
+ { 0x1F2E, 0x1F26 },
+ { 0x1F2F, 0x1F27 },
+ { 0x1F38, 0x1F30 },
+ { 0x1F39, 0x1F31 },
+ { 0x1F3A, 0x1F32 },
+ { 0x1F3B, 0x1F33 },
+ { 0x1F3C, 0x1F34 },
+ { 0x1F3D, 0x1F35 },
+ { 0x1F3E, 0x1F36 },
+ { 0x1F3F, 0x1F37 },
+ { 0x1F48, 0x1F40 },
+ { 0x1F49, 0x1F41 },
+ { 0x1F4A, 0x1F42 },
+ { 0x1F4B, 0x1F43 },
+ { 0x1F4C, 0x1F44 },
+ { 0x1F4D, 0x1F45 },
+ { 0x1F59, 0x1F51 },
+ { 0x1F5B, 0x1F53 },
+ { 0x1F5D, 0x1F55 },
+ { 0x1F5F, 0x1F57 },
+ { 0x1F68, 0x1F60 },
+ { 0x1F69, 0x1F61 },
+ { 0x1F6A, 0x1F62 },
+ { 0x1F6B, 0x1F63 },
+ { 0x1F6C, 0x1F64 },
+ { 0x1F6D, 0x1F65 },
+ { 0x1F6E, 0x1F66 },
+ { 0x1F6F, 0x1F67 },
+ { 0x1F88, 0x1F80 },
+ { 0x1F89, 0x1F81 },
+ { 0x1F8A, 0x1F82 },
+ { 0x1F8B, 0x1F83 },
+ { 0x1F8C, 0x1F84 },
+ { 0x1F8D, 0x1F85 },
+ { 0x1F8E, 0x1F86 },
+ { 0x1F8F, 0x1F87 },
+ { 0x1F98, 0x1F90 },
+ { 0x1F99, 0x1F91 },
+ { 0x1F9A, 0x1F92 },
+ { 0x1F9B, 0x1F93 },
+ { 0x1F9C, 0x1F94 },
+ { 0x1F9D, 0x1F95 },
+ { 0x1F9E, 0x1F96 },
+ { 0x1F9F, 0x1F97 },
+ { 0x1FA8, 0x1FA0 },
+ { 0x1FA9, 0x1FA1 },
+ { 0x1FAA, 0x1FA2 },
+ { 0x1FAB, 0x1FA3 },
+ { 0x1FAC, 0x1FA4 },
+ { 0x1FAD, 0x1FA5 },
+ { 0x1FAE, 0x1FA6 },
+ { 0x1FAF, 0x1FA7 },
+ { 0x1FB8, 0x1FB0 },
+ { 0x1FB9, 0x1FB1 },
+ { 0x1FBA, 0x1F70 },
+ { 0x1FBB, 0x1F71 },
+ { 0x1FBC, 0x1FB3 },
+ { 0x1FC8, 0x1F72 },
+ { 0x1FC9, 0x1F73 },
+ { 0x1FCA, 0x1F74 },
+ { 0x1FCB, 0x1F75 },
+ { 0x1FCC, 0x1FC3 },
+ { 0x1FD8, 0x1FD0 },
+ { 0x1FD9, 0x1FD1 },
+ { 0x1FDA, 0x1F76 },
+ { 0x1FDB, 0x1F77 },
+ { 0x1FE8, 0x1FE0 },
+ { 0x1FE9, 0x1FE1 },
+ { 0x1FEA, 0x1F7A },
+ { 0x1FEB, 0x1F7B },
+ { 0x1FEC, 0x1FE5 },
+ { 0x1FF8, 0x1F78 },
+ { 0x1FF9, 0x1F79 },
+ { 0x1FFA, 0x1F7C },
+ { 0x1FFB, 0x1F7D },
+ { 0x1FFC, 0x1FF3 },
+ { 0x2126, 0x03C9 },
+ { 0x212A, 0x006B },
+ { 0x212B, 0x00E5 },
+ { 0x2132, 0x214E },
+ { 0x2160, 0x2170 },
+ { 0x2161, 0x2171 },
+ { 0x2162, 0x2172 },
+ { 0x2163, 0x2173 },
+ { 0x2164, 0x2174 },
+ { 0x2165, 0x2175 },
+ { 0x2166, 0x2176 },
+ { 0x2167, 0x2177 },
+ { 0x2168, 0x2178 },
+ { 0x2169, 0x2179 },
+ { 0x216A, 0x217A },
+ { 0x216B, 0x217B },
+ { 0x216C, 0x217C },
+ { 0x216D, 0x217D },
+ { 0x216E, 0x217E },
+ { 0x216F, 0x217F },
+ { 0x2183, 0x2184 },
+ { 0x24B6, 0x24D0 },
+ { 0x24B7, 0x24D1 },
+ { 0x24B8, 0x24D2 },
+ { 0x24B9, 0x24D3 },
+ { 0x24BA, 0x24D4 },
+ { 0x24BB, 0x24D5 },
+ { 0x24BC, 0x24D6 },
+ { 0x24BD, 0x24D7 },
+ { 0x24BE, 0x24D8 },
+ { 0x24BF, 0x24D9 },
+ { 0x24C0, 0x24DA },
+ { 0x24C1, 0x24DB },
+ { 0x24C2, 0x24DC },
+ { 0x24C3, 0x24DD },
+ { 0x24C4, 0x24DE },
+ { 0x24C5, 0x24DF },
+ { 0x24C6, 0x24E0 },
+ { 0x24C7, 0x24E1 },
+ { 0x24C8, 0x24E2 },
+ { 0x24C9, 0x24E3 },
+ { 0x24CA, 0x24E4 },
+ { 0x24CB, 0x24E5 },
+ { 0x24CC, 0x24E6 },
+ { 0x24CD, 0x24E7 },
+ { 0x24CE, 0x24E8 },
+ { 0x24CF, 0x24E9 },
+ { 0x2C00, 0x2C30 },
+ { 0x2C01, 0x2C31 },
+ { 0x2C02, 0x2C32 },
+ { 0x2C03, 0x2C33 },
+ { 0x2C04, 0x2C34 },
+ { 0x2C05, 0x2C35 },
+ { 0x2C06, 0x2C36 },
+ { 0x2C07, 0x2C37 },
+ { 0x2C08, 0x2C38 },
+ { 0x2C09, 0x2C39 },
+ { 0x2C0A, 0x2C3A },
+ { 0x2C0B, 0x2C3B },
+ { 0x2C0C, 0x2C3C },
+ { 0x2C0D, 0x2C3D },
+ { 0x2C0E, 0x2C3E },
+ { 0x2C0F, 0x2C3F },
+ { 0x2C10, 0x2C40 },
+ { 0x2C11, 0x2C41 },
+ { 0x2C12, 0x2C42 },
+ { 0x2C13, 0x2C43 },
+ { 0x2C14, 0x2C44 },
+ { 0x2C15, 0x2C45 },
+ { 0x2C16, 0x2C46 },
+ { 0x2C17, 0x2C47 },
+ { 0x2C18, 0x2C48 },
+ { 0x2C19, 0x2C49 },
+ { 0x2C1A, 0x2C4A },
+ { 0x2C1B, 0x2C4B },
+ { 0x2C1C, 0x2C4C },
+ { 0x2C1D, 0x2C4D },
+ { 0x2C1E, 0x2C4E },
+ { 0x2C1F, 0x2C4F },
+ { 0x2C20, 0x2C50 },
+ { 0x2C21, 0x2C51 },
+ { 0x2C22, 0x2C52 },
+ { 0x2C23, 0x2C53 },
+ { 0x2C24, 0x2C54 },
+ { 0x2C25, 0x2C55 },
+ { 0x2C26, 0x2C56 },
+ { 0x2C27, 0x2C57 },
+ { 0x2C28, 0x2C58 },
+ { 0x2C29, 0x2C59 },
+ { 0x2C2A, 0x2C5A },
+ { 0x2C2B, 0x2C5B },
+ { 0x2C2C, 0x2C5C },
+ { 0x2C2D, 0x2C5D },
+ { 0x2C2E, 0x2C5E },
+ { 0x2C60, 0x2C61 },
+ { 0x2C62, 0x026B },
+ { 0x2C63, 0x1D7D },
+ { 0x2C64, 0x027D },
+ { 0x2C67, 0x2C68 },
+ { 0x2C69, 0x2C6A },
+ { 0x2C6B, 0x2C6C },
+ { 0x2C6D, 0x0251 },
+ { 0x2C6E, 0x0271 },
+ { 0x2C6F, 0x0250 },
+ { 0x2C72, 0x2C73 },
+ { 0x2C75, 0x2C76 },
+ { 0x2C80, 0x2C81 },
+ { 0x2C82, 0x2C83 },
+ { 0x2C84, 0x2C85 },
+ { 0x2C86, 0x2C87 },
+ { 0x2C88, 0x2C89 },
+ { 0x2C8A, 0x2C8B },
+ { 0x2C8C, 0x2C8D },
+ { 0x2C8E, 0x2C8F },
+ { 0x2C90, 0x2C91 },
+ { 0x2C92, 0x2C93 },
+ { 0x2C94, 0x2C95 },
+ { 0x2C96, 0x2C97 },
+ { 0x2C98, 0x2C99 },
+ { 0x2C9A, 0x2C9B },
+ { 0x2C9C, 0x2C9D },
+ { 0x2C9E, 0x2C9F },
+ { 0x2CA0, 0x2CA1 },
+ { 0x2CA2, 0x2CA3 },
+ { 0x2CA4, 0x2CA5 },
+ { 0x2CA6, 0x2CA7 },
+ { 0x2CA8, 0x2CA9 },
+ { 0x2CAA, 0x2CAB },
+ { 0x2CAC, 0x2CAD },
+ { 0x2CAE, 0x2CAF },
+ { 0x2CB0, 0x2CB1 },
+ { 0x2CB2, 0x2CB3 },
+ { 0x2CB4, 0x2CB5 },
+ { 0x2CB6, 0x2CB7 },
+ { 0x2CB8, 0x2CB9 },
+ { 0x2CBA, 0x2CBB },
+ { 0x2CBC, 0x2CBD },
+ { 0x2CBE, 0x2CBF },
+ { 0x2CC0, 0x2CC1 },
+ { 0x2CC2, 0x2CC3 },
+ { 0x2CC4, 0x2CC5 },
+ { 0x2CC6, 0x2CC7 },
+ { 0x2CC8, 0x2CC9 },
+ { 0x2CCA, 0x2CCB },
+ { 0x2CCC, 0x2CCD },
+ { 0x2CCE, 0x2CCF },
+ { 0x2CD0, 0x2CD1 },
+ { 0x2CD2, 0x2CD3 },
+ { 0x2CD4, 0x2CD5 },
+ { 0x2CD6, 0x2CD7 },
+ { 0x2CD8, 0x2CD9 },
+ { 0x2CDA, 0x2CDB },
+ { 0x2CDC, 0x2CDD },
+ { 0x2CDE, 0x2CDF },
+ { 0x2CE0, 0x2CE1 },
+ { 0x2CE2, 0x2CE3 },
+ { 0xA640, 0xA641 },
+ { 0xA642, 0xA643 },
+ { 0xA644, 0xA645 },
+ { 0xA646, 0xA647 },
+ { 0xA648, 0xA649 },
+ { 0xA64A, 0xA64B },
+ { 0xA64C, 0xA64D },
+ { 0xA64E, 0xA64F },
+ { 0xA650, 0xA651 },
+ { 0xA652, 0xA653 },
+ { 0xA654, 0xA655 },
+ { 0xA656, 0xA657 },
+ { 0xA658, 0xA659 },
+ { 0xA65A, 0xA65B },
+ { 0xA65C, 0xA65D },
+ { 0xA65E, 0xA65F },
+ { 0xA662, 0xA663 },
+ { 0xA664, 0xA665 },
+ { 0xA666, 0xA667 },
+ { 0xA668, 0xA669 },
+ { 0xA66A, 0xA66B },
+ { 0xA66C, 0xA66D },
+ { 0xA680, 0xA681 },
+ { 0xA682, 0xA683 },
+ { 0xA684, 0xA685 },
+ { 0xA686, 0xA687 },
+ { 0xA688, 0xA689 },
+ { 0xA68A, 0xA68B },
+ { 0xA68C, 0xA68D },
+ { 0xA68E, 0xA68F },
+ { 0xA690, 0xA691 },
+ { 0xA692, 0xA693 },
+ { 0xA694, 0xA695 },
+ { 0xA696, 0xA697 },
+ { 0xA722, 0xA723 },
+ { 0xA724, 0xA725 },
+ { 0xA726, 0xA727 },
+ { 0xA728, 0xA729 },
+ { 0xA72A, 0xA72B },
+ { 0xA72C, 0xA72D },
+ { 0xA72E, 0xA72F },
+ { 0xA732, 0xA733 },
+ { 0xA734, 0xA735 },
+ { 0xA736, 0xA737 },
+ { 0xA738, 0xA739 },
+ { 0xA73A, 0xA73B },
+ { 0xA73C, 0xA73D },
+ { 0xA73E, 0xA73F },
+ { 0xA740, 0xA741 },
+ { 0xA742, 0xA743 },
+ { 0xA744, 0xA745 },
+ { 0xA746, 0xA747 },
+ { 0xA748, 0xA749 },
+ { 0xA74A, 0xA74B },
+ { 0xA74C, 0xA74D },
+ { 0xA74E, 0xA74F },
+ { 0xA750, 0xA751 },
+ { 0xA752, 0xA753 },
+ { 0xA754, 0xA755 },
+ { 0xA756, 0xA757 },
+ { 0xA758, 0xA759 },
+ { 0xA75A, 0xA75B },
+ { 0xA75C, 0xA75D },
+ { 0xA75E, 0xA75F },
+ { 0xA760, 0xA761 },
+ { 0xA762, 0xA763 },
+ { 0xA764, 0xA765 },
+ { 0xA766, 0xA767 },
+ { 0xA768, 0xA769 },
+ { 0xA76A, 0xA76B },
+ { 0xA76C, 0xA76D },
+ { 0xA76E, 0xA76F },
+ { 0xA779, 0xA77A },
+ { 0xA77B, 0xA77C },
+ { 0xA77D, 0x1D79 },
+ { 0xA77E, 0xA77F },
+ { 0xA780, 0xA781 },
+ { 0xA782, 0xA783 },
+ { 0xA784, 0xA785 },
+ { 0xA786, 0xA787 },
+ { 0xA78B, 0xA78C },
+ { 0xFF21, 0xFF41 },
+ { 0xFF22, 0xFF42 },
+ { 0xFF23, 0xFF43 },
+ { 0xFF24, 0xFF44 },
+ { 0xFF25, 0xFF45 },
+ { 0xFF26, 0xFF46 },
+ { 0xFF27, 0xFF47 },
+ { 0xFF28, 0xFF48 },
+ { 0xFF29, 0xFF49 },
+ { 0xFF2A, 0xFF4A },
+ { 0xFF2B, 0xFF4B },
+ { 0xFF2C, 0xFF4C },
+ { 0xFF2D, 0xFF4D },
+ { 0xFF2E, 0xFF4E },
+ { 0xFF2F, 0xFF4F },
+ { 0xFF30, 0xFF50 },
+ { 0xFF31, 0xFF51 },
+ { 0xFF32, 0xFF52 },
+ { 0xFF33, 0xFF53 },
+ { 0xFF34, 0xFF54 },
+ { 0xFF35, 0xFF55 },
+ { 0xFF36, 0xFF56 },
+ { 0xFF37, 0xFF57 },
+ { 0xFF38, 0xFF58 },
+ { 0xFF39, 0xFF59 },
+ { 0xFF3A, 0xFF5A },
+ { 0x10400, 0x10428 },
+ { 0x10401, 0x10429 },
+ { 0x10402, 0x1042A },
+ { 0x10403, 0x1042B },
+ { 0x10404, 0x1042C },
+ { 0x10405, 0x1042D },
+ { 0x10406, 0x1042E },
+ { 0x10407, 0x1042F },
+ { 0x10408, 0x10430 },
+ { 0x10409, 0x10431 },
+ { 0x1040A, 0x10432 },
+ { 0x1040B, 0x10433 },
+ { 0x1040C, 0x10434 },
+ { 0x1040D, 0x10435 },
+ { 0x1040E, 0x10436 },
+ { 0x1040F, 0x10437 },
+ { 0x10410, 0x10438 },
+ { 0x10411, 0x10439 },
+ { 0x10412, 0x1043A },
+ { 0x10413, 0x1043B },
+ { 0x10414, 0x1043C },
+ { 0x10415, 0x1043D },
+ { 0x10416, 0x1043E },
+ { 0x10417, 0x1043F },
+ { 0x10418, 0x10440 },
+ { 0x10419, 0x10441 },
+ { 0x1041A, 0x10442 },
+ { 0x1041B, 0x10443 },
+ { 0x1041C, 0x10444 },
+ { 0x1041D, 0x10445 },
+ { 0x1041E, 0x10446 },
+ { 0x1041F, 0x10447 },
+ { 0x10420, 0x10448 },
+ { 0x10421, 0x10449 },
+ { 0x10422, 0x1044A },
+ { 0x10423, 0x1044B },
+ { 0x10424, 0x1044C },
+ { 0x10425, 0x1044D },
+ { 0x10426, 0x1044E },
+ { 0x10427, 0x1044F }
+
+#define MAP(c) uc_tolower (c)
+#include "test-mapping-part2.h"
diff --git a/tests/unicase/test-uc_totitle.c b/tests/unicase/test-uc_totitle.c
new file mode 100644
index 00000000..9064a41a
--- /dev/null
+++ b/tests/unicase/test-uc_totitle.c
@@ -0,0 +1,1055 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character mapping functions.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Generated automatically by gen-case.c for Unicode 5.1.0. */
+
+#include "test-mapping-part1.h"
+
+ { 0x0061, 0x0041 },
+ { 0x0062, 0x0042 },
+ { 0x0063, 0x0043 },
+ { 0x0064, 0x0044 },
+ { 0x0065, 0x0045 },
+ { 0x0066, 0x0046 },
+ { 0x0067, 0x0047 },
+ { 0x0068, 0x0048 },
+ { 0x0069, 0x0049 },
+ { 0x006A, 0x004A },
+ { 0x006B, 0x004B },
+ { 0x006C, 0x004C },
+ { 0x006D, 0x004D },
+ { 0x006E, 0x004E },
+ { 0x006F, 0x004F },
+ { 0x0070, 0x0050 },
+ { 0x0071, 0x0051 },
+ { 0x0072, 0x0052 },
+ { 0x0073, 0x0053 },
+ { 0x0074, 0x0054 },
+ { 0x0075, 0x0055 },
+ { 0x0076, 0x0056 },
+ { 0x0077, 0x0057 },
+ { 0x0078, 0x0058 },
+ { 0x0079, 0x0059 },
+ { 0x007A, 0x005A },
+ { 0x00B5, 0x039C },
+ { 0x00E0, 0x00C0 },
+ { 0x00E1, 0x00C1 },
+ { 0x00E2, 0x00C2 },
+ { 0x00E3, 0x00C3 },
+ { 0x00E4, 0x00C4 },
+ { 0x00E5, 0x00C5 },
+ { 0x00E6, 0x00C6 },
+ { 0x00E7, 0x00C7 },
+ { 0x00E8, 0x00C8 },
+ { 0x00E9, 0x00C9 },
+ { 0x00EA, 0x00CA },
+ { 0x00EB, 0x00CB },
+ { 0x00EC, 0x00CC },
+ { 0x00ED, 0x00CD },
+ { 0x00EE, 0x00CE },
+ { 0x00EF, 0x00CF },
+ { 0x00F0, 0x00D0 },
+ { 0x00F1, 0x00D1 },
+ { 0x00F2, 0x00D2 },
+ { 0x00F3, 0x00D3 },
+ { 0x00F4, 0x00D4 },
+ { 0x00F5, 0x00D5 },
+ { 0x00F6, 0x00D6 },
+ { 0x00F8, 0x00D8 },
+ { 0x00F9, 0x00D9 },
+ { 0x00FA, 0x00DA },
+ { 0x00FB, 0x00DB },
+ { 0x00FC, 0x00DC },
+ { 0x00FD, 0x00DD },
+ { 0x00FE, 0x00DE },
+ { 0x00FF, 0x0178 },
+ { 0x0101, 0x0100 },
+ { 0x0103, 0x0102 },
+ { 0x0105, 0x0104 },
+ { 0x0107, 0x0106 },
+ { 0x0109, 0x0108 },
+ { 0x010B, 0x010A },
+ { 0x010D, 0x010C },
+ { 0x010F, 0x010E },
+ { 0x0111, 0x0110 },
+ { 0x0113, 0x0112 },
+ { 0x0115, 0x0114 },
+ { 0x0117, 0x0116 },
+ { 0x0119, 0x0118 },
+ { 0x011B, 0x011A },
+ { 0x011D, 0x011C },
+ { 0x011F, 0x011E },
+ { 0x0121, 0x0120 },
+ { 0x0123, 0x0122 },
+ { 0x0125, 0x0124 },
+ { 0x0127, 0x0126 },
+ { 0x0129, 0x0128 },
+ { 0x012B, 0x012A },
+ { 0x012D, 0x012C },
+ { 0x012F, 0x012E },
+ { 0x0131, 0x0049 },
+ { 0x0133, 0x0132 },
+ { 0x0135, 0x0134 },
+ { 0x0137, 0x0136 },
+ { 0x013A, 0x0139 },
+ { 0x013C, 0x013B },
+ { 0x013E, 0x013D },
+ { 0x0140, 0x013F },
+ { 0x0142, 0x0141 },
+ { 0x0144, 0x0143 },
+ { 0x0146, 0x0145 },
+ { 0x0148, 0x0147 },
+ { 0x014B, 0x014A },
+ { 0x014D, 0x014C },
+ { 0x014F, 0x014E },
+ { 0x0151, 0x0150 },
+ { 0x0153, 0x0152 },
+ { 0x0155, 0x0154 },
+ { 0x0157, 0x0156 },
+ { 0x0159, 0x0158 },
+ { 0x015B, 0x015A },
+ { 0x015D, 0x015C },
+ { 0x015F, 0x015E },
+ { 0x0161, 0x0160 },
+ { 0x0163, 0x0162 },
+ { 0x0165, 0x0164 },
+ { 0x0167, 0x0166 },
+ { 0x0169, 0x0168 },
+ { 0x016B, 0x016A },
+ { 0x016D, 0x016C },
+ { 0x016F, 0x016E },
+ { 0x0171, 0x0170 },
+ { 0x0173, 0x0172 },
+ { 0x0175, 0x0174 },
+ { 0x0177, 0x0176 },
+ { 0x017A, 0x0179 },
+ { 0x017C, 0x017B },
+ { 0x017E, 0x017D },
+ { 0x017F, 0x0053 },
+ { 0x0180, 0x0243 },
+ { 0x0183, 0x0182 },
+ { 0x0185, 0x0184 },
+ { 0x0188, 0x0187 },
+ { 0x018C, 0x018B },
+ { 0x0192, 0x0191 },
+ { 0x0195, 0x01F6 },
+ { 0x0199, 0x0198 },
+ { 0x019A, 0x023D },
+ { 0x019E, 0x0220 },
+ { 0x01A1, 0x01A0 },
+ { 0x01A3, 0x01A2 },
+ { 0x01A5, 0x01A4 },
+ { 0x01A8, 0x01A7 },
+ { 0x01AD, 0x01AC },
+ { 0x01B0, 0x01AF },
+ { 0x01B4, 0x01B3 },
+ { 0x01B6, 0x01B5 },
+ { 0x01B9, 0x01B8 },
+ { 0x01BD, 0x01BC },
+ { 0x01BF, 0x01F7 },
+ { 0x01C4, 0x01C5 },
+ { 0x01C6, 0x01C5 },
+ { 0x01C7, 0x01C8 },
+ { 0x01C9, 0x01C8 },
+ { 0x01CA, 0x01CB },
+ { 0x01CC, 0x01CB },
+ { 0x01CE, 0x01CD },
+ { 0x01D0, 0x01CF },
+ { 0x01D2, 0x01D1 },
+ { 0x01D4, 0x01D3 },
+ { 0x01D6, 0x01D5 },
+ { 0x01D8, 0x01D7 },
+ { 0x01DA, 0x01D9 },
+ { 0x01DC, 0x01DB },
+ { 0x01DD, 0x018E },
+ { 0x01DF, 0x01DE },
+ { 0x01E1, 0x01E0 },
+ { 0x01E3, 0x01E2 },
+ { 0x01E5, 0x01E4 },
+ { 0x01E7, 0x01E6 },
+ { 0x01E9, 0x01E8 },
+ { 0x01EB, 0x01EA },
+ { 0x01ED, 0x01EC },
+ { 0x01EF, 0x01EE },
+ { 0x01F1, 0x01F2 },
+ { 0x01F3, 0x01F2 },
+ { 0x01F5, 0x01F4 },
+ { 0x01F9, 0x01F8 },
+ { 0x01FB, 0x01FA },
+ { 0x01FD, 0x01FC },
+ { 0x01FF, 0x01FE },
+ { 0x0201, 0x0200 },
+ { 0x0203, 0x0202 },
+ { 0x0205, 0x0204 },
+ { 0x0207, 0x0206 },
+ { 0x0209, 0x0208 },
+ { 0x020B, 0x020A },
+ { 0x020D, 0x020C },
+ { 0x020F, 0x020E },
+ { 0x0211, 0x0210 },
+ { 0x0213, 0x0212 },
+ { 0x0215, 0x0214 },
+ { 0x0217, 0x0216 },
+ { 0x0219, 0x0218 },
+ { 0x021B, 0x021A },
+ { 0x021D, 0x021C },
+ { 0x021F, 0x021E },
+ { 0x0223, 0x0222 },
+ { 0x0225, 0x0224 },
+ { 0x0227, 0x0226 },
+ { 0x0229, 0x0228 },
+ { 0x022B, 0x022A },
+ { 0x022D, 0x022C },
+ { 0x022F, 0x022E },
+ { 0x0231, 0x0230 },
+ { 0x0233, 0x0232 },
+ { 0x023C, 0x023B },
+ { 0x0242, 0x0241 },
+ { 0x0247, 0x0246 },
+ { 0x0249, 0x0248 },
+ { 0x024B, 0x024A },
+ { 0x024D, 0x024C },
+ { 0x024F, 0x024E },
+ { 0x0250, 0x2C6F },
+ { 0x0251, 0x2C6D },
+ { 0x0253, 0x0181 },
+ { 0x0254, 0x0186 },
+ { 0x0256, 0x0189 },
+ { 0x0257, 0x018A },
+ { 0x0259, 0x018F },
+ { 0x025B, 0x0190 },
+ { 0x0260, 0x0193 },
+ { 0x0263, 0x0194 },
+ { 0x0268, 0x0197 },
+ { 0x0269, 0x0196 },
+ { 0x026B, 0x2C62 },
+ { 0x026F, 0x019C },
+ { 0x0271, 0x2C6E },
+ { 0x0272, 0x019D },
+ { 0x0275, 0x019F },
+ { 0x027D, 0x2C64 },
+ { 0x0280, 0x01A6 },
+ { 0x0283, 0x01A9 },
+ { 0x0288, 0x01AE },
+ { 0x0289, 0x0244 },
+ { 0x028A, 0x01B1 },
+ { 0x028B, 0x01B2 },
+ { 0x028C, 0x0245 },
+ { 0x0292, 0x01B7 },
+ { 0x0345, 0x0399 },
+ { 0x0371, 0x0370 },
+ { 0x0373, 0x0372 },
+ { 0x0377, 0x0376 },
+ { 0x037B, 0x03FD },
+ { 0x037C, 0x03FE },
+ { 0x037D, 0x03FF },
+ { 0x03AC, 0x0386 },
+ { 0x03AD, 0x0388 },
+ { 0x03AE, 0x0389 },
+ { 0x03AF, 0x038A },
+ { 0x03B1, 0x0391 },
+ { 0x03B2, 0x0392 },
+ { 0x03B3, 0x0393 },
+ { 0x03B4, 0x0394 },
+ { 0x03B5, 0x0395 },
+ { 0x03B6, 0x0396 },
+ { 0x03B7, 0x0397 },
+ { 0x03B8, 0x0398 },
+ { 0x03B9, 0x0399 },
+ { 0x03BA, 0x039A },
+ { 0x03BB, 0x039B },
+ { 0x03BC, 0x039C },
+ { 0x03BD, 0x039D },
+ { 0x03BE, 0x039E },
+ { 0x03BF, 0x039F },
+ { 0x03C0, 0x03A0 },
+ { 0x03C1, 0x03A1 },
+ { 0x03C2, 0x03A3 },
+ { 0x03C3, 0x03A3 },
+ { 0x03C4, 0x03A4 },
+ { 0x03C5, 0x03A5 },
+ { 0x03C6, 0x03A6 },
+ { 0x03C7, 0x03A7 },
+ { 0x03C8, 0x03A8 },
+ { 0x03C9, 0x03A9 },
+ { 0x03CA, 0x03AA },
+ { 0x03CB, 0x03AB },
+ { 0x03CC, 0x038C },
+ { 0x03CD, 0x038E },
+ { 0x03CE, 0x038F },
+ { 0x03D0, 0x0392 },
+ { 0x03D1, 0x0398 },
+ { 0x03D5, 0x03A6 },
+ { 0x03D6, 0x03A0 },
+ { 0x03D7, 0x03CF },
+ { 0x03D9, 0x03D8 },
+ { 0x03DB, 0x03DA },
+ { 0x03DD, 0x03DC },
+ { 0x03DF, 0x03DE },
+ { 0x03E1, 0x03E0 },
+ { 0x03E3, 0x03E2 },
+ { 0x03E5, 0x03E4 },
+ { 0x03E7, 0x03E6 },
+ { 0x03E9, 0x03E8 },
+ { 0x03EB, 0x03EA },
+ { 0x03ED, 0x03EC },
+ { 0x03EF, 0x03EE },
+ { 0x03F0, 0x039A },
+ { 0x03F1, 0x03A1 },
+ { 0x03F2, 0x03F9 },
+ { 0x03F5, 0x0395 },
+ { 0x03F8, 0x03F7 },
+ { 0x03FB, 0x03FA },
+ { 0x0430, 0x0410 },
+ { 0x0431, 0x0411 },
+ { 0x0432, 0x0412 },
+ { 0x0433, 0x0413 },
+ { 0x0434, 0x0414 },
+ { 0x0435, 0x0415 },
+ { 0x0436, 0x0416 },
+ { 0x0437, 0x0417 },
+ { 0x0438, 0x0418 },
+ { 0x0439, 0x0419 },
+ { 0x043A, 0x041A },
+ { 0x043B, 0x041B },
+ { 0x043C, 0x041C },
+ { 0x043D, 0x041D },
+ { 0x043E, 0x041E },
+ { 0x043F, 0x041F },
+ { 0x0440, 0x0420 },
+ { 0x0441, 0x0421 },
+ { 0x0442, 0x0422 },
+ { 0x0443, 0x0423 },
+ { 0x0444, 0x0424 },
+ { 0x0445, 0x0425 },
+ { 0x0446, 0x0426 },
+ { 0x0447, 0x0427 },
+ { 0x0448, 0x0428 },
+ { 0x0449, 0x0429 },
+ { 0x044A, 0x042A },
+ { 0x044B, 0x042B },
+ { 0x044C, 0x042C },
+ { 0x044D, 0x042D },
+ { 0x044E, 0x042E },
+ { 0x044F, 0x042F },
+ { 0x0450, 0x0400 },
+ { 0x0451, 0x0401 },
+ { 0x0452, 0x0402 },
+ { 0x0453, 0x0403 },
+ { 0x0454, 0x0404 },
+ { 0x0455, 0x0405 },
+ { 0x0456, 0x0406 },
+ { 0x0457, 0x0407 },
+ { 0x0458, 0x0408 },
+ { 0x0459, 0x0409 },
+ { 0x045A, 0x040A },
+ { 0x045B, 0x040B },
+ { 0x045C, 0x040C },
+ { 0x045D, 0x040D },
+ { 0x045E, 0x040E },
+ { 0x045F, 0x040F },
+ { 0x0461, 0x0460 },
+ { 0x0463, 0x0462 },
+ { 0x0465, 0x0464 },
+ { 0x0467, 0x0466 },
+ { 0x0469, 0x0468 },
+ { 0x046B, 0x046A },
+ { 0x046D, 0x046C },
+ { 0x046F, 0x046E },
+ { 0x0471, 0x0470 },
+ { 0x0473, 0x0472 },
+ { 0x0475, 0x0474 },
+ { 0x0477, 0x0476 },
+ { 0x0479, 0x0478 },
+ { 0x047B, 0x047A },
+ { 0x047D, 0x047C },
+ { 0x047F, 0x047E },
+ { 0x0481, 0x0480 },
+ { 0x048B, 0x048A },
+ { 0x048D, 0x048C },
+ { 0x048F, 0x048E },
+ { 0x0491, 0x0490 },
+ { 0x0493, 0x0492 },
+ { 0x0495, 0x0494 },
+ { 0x0497, 0x0496 },
+ { 0x0499, 0x0498 },
+ { 0x049B, 0x049A },
+ { 0x049D, 0x049C },
+ { 0x049F, 0x049E },
+ { 0x04A1, 0x04A0 },
+ { 0x04A3, 0x04A2 },
+ { 0x04A5, 0x04A4 },
+ { 0x04A7, 0x04A6 },
+ { 0x04A9, 0x04A8 },
+ { 0x04AB, 0x04AA },
+ { 0x04AD, 0x04AC },
+ { 0x04AF, 0x04AE },
+ { 0x04B1, 0x04B0 },
+ { 0x04B3, 0x04B2 },
+ { 0x04B5, 0x04B4 },
+ { 0x04B7, 0x04B6 },
+ { 0x04B9, 0x04B8 },
+ { 0x04BB, 0x04BA },
+ { 0x04BD, 0x04BC },
+ { 0x04BF, 0x04BE },
+ { 0x04C2, 0x04C1 },
+ { 0x04C4, 0x04C3 },
+ { 0x04C6, 0x04C5 },
+ { 0x04C8, 0x04C7 },
+ { 0x04CA, 0x04C9 },
+ { 0x04CC, 0x04CB },
+ { 0x04CE, 0x04CD },
+ { 0x04CF, 0x04C0 },
+ { 0x04D1, 0x04D0 },
+ { 0x04D3, 0x04D2 },
+ { 0x04D5, 0x04D4 },
+ { 0x04D7, 0x04D6 },
+ { 0x04D9, 0x04D8 },
+ { 0x04DB, 0x04DA },
+ { 0x04DD, 0x04DC },
+ { 0x04DF, 0x04DE },
+ { 0x04E1, 0x04E0 },
+ { 0x04E3, 0x04E2 },
+ { 0x04E5, 0x04E4 },
+ { 0x04E7, 0x04E6 },
+ { 0x04E9, 0x04E8 },
+ { 0x04EB, 0x04EA },
+ { 0x04ED, 0x04EC },
+ { 0x04EF, 0x04EE },
+ { 0x04F1, 0x04F0 },
+ { 0x04F3, 0x04F2 },
+ { 0x04F5, 0x04F4 },
+ { 0x04F7, 0x04F6 },
+ { 0x04F9, 0x04F8 },
+ { 0x04FB, 0x04FA },
+ { 0x04FD, 0x04FC },
+ { 0x04FF, 0x04FE },
+ { 0x0501, 0x0500 },
+ { 0x0503, 0x0502 },
+ { 0x0505, 0x0504 },
+ { 0x0507, 0x0506 },
+ { 0x0509, 0x0508 },
+ { 0x050B, 0x050A },
+ { 0x050D, 0x050C },
+ { 0x050F, 0x050E },
+ { 0x0511, 0x0510 },
+ { 0x0513, 0x0512 },
+ { 0x0515, 0x0514 },
+ { 0x0517, 0x0516 },
+ { 0x0519, 0x0518 },
+ { 0x051B, 0x051A },
+ { 0x051D, 0x051C },
+ { 0x051F, 0x051E },
+ { 0x0521, 0x0520 },
+ { 0x0523, 0x0522 },
+ { 0x0561, 0x0531 },
+ { 0x0562, 0x0532 },
+ { 0x0563, 0x0533 },
+ { 0x0564, 0x0534 },
+ { 0x0565, 0x0535 },
+ { 0x0566, 0x0536 },
+ { 0x0567, 0x0537 },
+ { 0x0568, 0x0538 },
+ { 0x0569, 0x0539 },
+ { 0x056A, 0x053A },
+ { 0x056B, 0x053B },
+ { 0x056C, 0x053C },
+ { 0x056D, 0x053D },
+ { 0x056E, 0x053E },
+ { 0x056F, 0x053F },
+ { 0x0570, 0x0540 },
+ { 0x0571, 0x0541 },
+ { 0x0572, 0x0542 },
+ { 0x0573, 0x0543 },
+ { 0x0574, 0x0544 },
+ { 0x0575, 0x0545 },
+ { 0x0576, 0x0546 },
+ { 0x0577, 0x0547 },
+ { 0x0578, 0x0548 },
+ { 0x0579, 0x0549 },
+ { 0x057A, 0x054A },
+ { 0x057B, 0x054B },
+ { 0x057C, 0x054C },
+ { 0x057D, 0x054D },
+ { 0x057E, 0x054E },
+ { 0x057F, 0x054F },
+ { 0x0580, 0x0550 },
+ { 0x0581, 0x0551 },
+ { 0x0582, 0x0552 },
+ { 0x0583, 0x0553 },
+ { 0x0584, 0x0554 },
+ { 0x0585, 0x0555 },
+ { 0x0586, 0x0556 },
+ { 0x1D79, 0xA77D },
+ { 0x1D7D, 0x2C63 },
+ { 0x1E01, 0x1E00 },
+ { 0x1E03, 0x1E02 },
+ { 0x1E05, 0x1E04 },
+ { 0x1E07, 0x1E06 },
+ { 0x1E09, 0x1E08 },
+ { 0x1E0B, 0x1E0A },
+ { 0x1E0D, 0x1E0C },
+ { 0x1E0F, 0x1E0E },
+ { 0x1E11, 0x1E10 },
+ { 0x1E13, 0x1E12 },
+ { 0x1E15, 0x1E14 },
+ { 0x1E17, 0x1E16 },
+ { 0x1E19, 0x1E18 },
+ { 0x1E1B, 0x1E1A },
+ { 0x1E1D, 0x1E1C },
+ { 0x1E1F, 0x1E1E },
+ { 0x1E21, 0x1E20 },
+ { 0x1E23, 0x1E22 },
+ { 0x1E25, 0x1E24 },
+ { 0x1E27, 0x1E26 },
+ { 0x1E29, 0x1E28 },
+ { 0x1E2B, 0x1E2A },
+ { 0x1E2D, 0x1E2C },
+ { 0x1E2F, 0x1E2E },
+ { 0x1E31, 0x1E30 },
+ { 0x1E33, 0x1E32 },
+ { 0x1E35, 0x1E34 },
+ { 0x1E37, 0x1E36 },
+ { 0x1E39, 0x1E38 },
+ { 0x1E3B, 0x1E3A },
+ { 0x1E3D, 0x1E3C },
+ { 0x1E3F, 0x1E3E },
+ { 0x1E41, 0x1E40 },
+ { 0x1E43, 0x1E42 },
+ { 0x1E45, 0x1E44 },
+ { 0x1E47, 0x1E46 },
+ { 0x1E49, 0x1E48 },
+ { 0x1E4B, 0x1E4A },
+ { 0x1E4D, 0x1E4C },
+ { 0x1E4F, 0x1E4E },
+ { 0x1E51, 0x1E50 },
+ { 0x1E53, 0x1E52 },
+ { 0x1E55, 0x1E54 },
+ { 0x1E57, 0x1E56 },
+ { 0x1E59, 0x1E58 },
+ { 0x1E5B, 0x1E5A },
+ { 0x1E5D, 0x1E5C },
+ { 0x1E5F, 0x1E5E },
+ { 0x1E61, 0x1E60 },
+ { 0x1E63, 0x1E62 },
+ { 0x1E65, 0x1E64 },
+ { 0x1E67, 0x1E66 },
+ { 0x1E69, 0x1E68 },
+ { 0x1E6B, 0x1E6A },
+ { 0x1E6D, 0x1E6C },
+ { 0x1E6F, 0x1E6E },
+ { 0x1E71, 0x1E70 },
+ { 0x1E73, 0x1E72 },
+ { 0x1E75, 0x1E74 },
+ { 0x1E77, 0x1E76 },
+ { 0x1E79, 0x1E78 },
+ { 0x1E7B, 0x1E7A },
+ { 0x1E7D, 0x1E7C },
+ { 0x1E7F, 0x1E7E },
+ { 0x1E81, 0x1E80 },
+ { 0x1E83, 0x1E82 },
+ { 0x1E85, 0x1E84 },
+ { 0x1E87, 0x1E86 },
+ { 0x1E89, 0x1E88 },
+ { 0x1E8B, 0x1E8A },
+ { 0x1E8D, 0x1E8C },
+ { 0x1E8F, 0x1E8E },
+ { 0x1E91, 0x1E90 },
+ { 0x1E93, 0x1E92 },
+ { 0x1E95, 0x1E94 },
+ { 0x1E9B, 0x1E60 },
+ { 0x1EA1, 0x1EA0 },
+ { 0x1EA3, 0x1EA2 },
+ { 0x1EA5, 0x1EA4 },
+ { 0x1EA7, 0x1EA6 },
+ { 0x1EA9, 0x1EA8 },
+ { 0x1EAB, 0x1EAA },
+ { 0x1EAD, 0x1EAC },
+ { 0x1EAF, 0x1EAE },
+ { 0x1EB1, 0x1EB0 },
+ { 0x1EB3, 0x1EB2 },
+ { 0x1EB5, 0x1EB4 },
+ { 0x1EB7, 0x1EB6 },
+ { 0x1EB9, 0x1EB8 },
+ { 0x1EBB, 0x1EBA },
+ { 0x1EBD, 0x1EBC },
+ { 0x1EBF, 0x1EBE },
+ { 0x1EC1, 0x1EC0 },
+ { 0x1EC3, 0x1EC2 },
+ { 0x1EC5, 0x1EC4 },
+ { 0x1EC7, 0x1EC6 },
+ { 0x1EC9, 0x1EC8 },
+ { 0x1ECB, 0x1ECA },
+ { 0x1ECD, 0x1ECC },
+ { 0x1ECF, 0x1ECE },
+ { 0x1ED1, 0x1ED0 },
+ { 0x1ED3, 0x1ED2 },
+ { 0x1ED5, 0x1ED4 },
+ { 0x1ED7, 0x1ED6 },
+ { 0x1ED9, 0x1ED8 },
+ { 0x1EDB, 0x1EDA },
+ { 0x1EDD, 0x1EDC },
+ { 0x1EDF, 0x1EDE },
+ { 0x1EE1, 0x1EE0 },
+ { 0x1EE3, 0x1EE2 },
+ { 0x1EE5, 0x1EE4 },
+ { 0x1EE7, 0x1EE6 },
+ { 0x1EE9, 0x1EE8 },
+ { 0x1EEB, 0x1EEA },
+ { 0x1EED, 0x1EEC },
+ { 0x1EEF, 0x1EEE },
+ { 0x1EF1, 0x1EF0 },
+ { 0x1EF3, 0x1EF2 },
+ { 0x1EF5, 0x1EF4 },
+ { 0x1EF7, 0x1EF6 },
+ { 0x1EF9, 0x1EF8 },
+ { 0x1EFB, 0x1EFA },
+ { 0x1EFD, 0x1EFC },
+ { 0x1EFF, 0x1EFE },
+ { 0x1F00, 0x1F08 },
+ { 0x1F01, 0x1F09 },
+ { 0x1F02, 0x1F0A },
+ { 0x1F03, 0x1F0B },
+ { 0x1F04, 0x1F0C },
+ { 0x1F05, 0x1F0D },
+ { 0x1F06, 0x1F0E },
+ { 0x1F07, 0x1F0F },
+ { 0x1F10, 0x1F18 },
+ { 0x1F11, 0x1F19 },
+ { 0x1F12, 0x1F1A },
+ { 0x1F13, 0x1F1B },
+ { 0x1F14, 0x1F1C },
+ { 0x1F15, 0x1F1D },
+ { 0x1F20, 0x1F28 },
+ { 0x1F21, 0x1F29 },
+ { 0x1F22, 0x1F2A },
+ { 0x1F23, 0x1F2B },
+ { 0x1F24, 0x1F2C },
+ { 0x1F25, 0x1F2D },
+ { 0x1F26, 0x1F2E },
+ { 0x1F27, 0x1F2F },
+ { 0x1F30, 0x1F38 },
+ { 0x1F31, 0x1F39 },
+ { 0x1F32, 0x1F3A },
+ { 0x1F33, 0x1F3B },
+ { 0x1F34, 0x1F3C },
+ { 0x1F35, 0x1F3D },
+ { 0x1F36, 0x1F3E },
+ { 0x1F37, 0x1F3F },
+ { 0x1F40, 0x1F48 },
+ { 0x1F41, 0x1F49 },
+ { 0x1F42, 0x1F4A },
+ { 0x1F43, 0x1F4B },
+ { 0x1F44, 0x1F4C },
+ { 0x1F45, 0x1F4D },
+ { 0x1F51, 0x1F59 },
+ { 0x1F53, 0x1F5B },
+ { 0x1F55, 0x1F5D },
+ { 0x1F57, 0x1F5F },
+ { 0x1F60, 0x1F68 },
+ { 0x1F61, 0x1F69 },
+ { 0x1F62, 0x1F6A },
+ { 0x1F63, 0x1F6B },
+ { 0x1F64, 0x1F6C },
+ { 0x1F65, 0x1F6D },
+ { 0x1F66, 0x1F6E },
+ { 0x1F67, 0x1F6F },
+ { 0x1F70, 0x1FBA },
+ { 0x1F71, 0x1FBB },
+ { 0x1F72, 0x1FC8 },
+ { 0x1F73, 0x1FC9 },
+ { 0x1F74, 0x1FCA },
+ { 0x1F75, 0x1FCB },
+ { 0x1F76, 0x1FDA },
+ { 0x1F77, 0x1FDB },
+ { 0x1F78, 0x1FF8 },
+ { 0x1F79, 0x1FF9 },
+ { 0x1F7A, 0x1FEA },
+ { 0x1F7B, 0x1FEB },
+ { 0x1F7C, 0x1FFA },
+ { 0x1F7D, 0x1FFB },
+ { 0x1F80, 0x1F88 },
+ { 0x1F81, 0x1F89 },
+ { 0x1F82, 0x1F8A },
+ { 0x1F83, 0x1F8B },
+ { 0x1F84, 0x1F8C },
+ { 0x1F85, 0x1F8D },
+ { 0x1F86, 0x1F8E },
+ { 0x1F87, 0x1F8F },
+ { 0x1F90, 0x1F98 },
+ { 0x1F91, 0x1F99 },
+ { 0x1F92, 0x1F9A },
+ { 0x1F93, 0x1F9B },
+ { 0x1F94, 0x1F9C },
+ { 0x1F95, 0x1F9D },
+ { 0x1F96, 0x1F9E },
+ { 0x1F97, 0x1F9F },
+ { 0x1FA0, 0x1FA8 },
+ { 0x1FA1, 0x1FA9 },
+ { 0x1FA2, 0x1FAA },
+ { 0x1FA3, 0x1FAB },
+ { 0x1FA4, 0x1FAC },
+ { 0x1FA5, 0x1FAD },
+ { 0x1FA6, 0x1FAE },
+ { 0x1FA7, 0x1FAF },
+ { 0x1FB0, 0x1FB8 },
+ { 0x1FB1, 0x1FB9 },
+ { 0x1FB3, 0x1FBC },
+ { 0x1FBE, 0x0399 },
+ { 0x1FC3, 0x1FCC },
+ { 0x1FD0, 0x1FD8 },
+ { 0x1FD1, 0x1FD9 },
+ { 0x1FE0, 0x1FE8 },
+ { 0x1FE1, 0x1FE9 },
+ { 0x1FE5, 0x1FEC },
+ { 0x1FF3, 0x1FFC },
+ { 0x214E, 0x2132 },
+ { 0x2170, 0x2160 },
+ { 0x2171, 0x2161 },
+ { 0x2172, 0x2162 },
+ { 0x2173, 0x2163 },
+ { 0x2174, 0x2164 },
+ { 0x2175, 0x2165 },
+ { 0x2176, 0x2166 },
+ { 0x2177, 0x2167 },
+ { 0x2178, 0x2168 },
+ { 0x2179, 0x2169 },
+ { 0x217A, 0x216A },
+ { 0x217B, 0x216B },
+ { 0x217C, 0x216C },
+ { 0x217D, 0x216D },
+ { 0x217E, 0x216E },
+ { 0x217F, 0x216F },
+ { 0x2184, 0x2183 },
+ { 0x24D0, 0x24B6 },
+ { 0x24D1, 0x24B7 },
+ { 0x24D2, 0x24B8 },
+ { 0x24D3, 0x24B9 },
+ { 0x24D4, 0x24BA },
+ { 0x24D5, 0x24BB },
+ { 0x24D6, 0x24BC },
+ { 0x24D7, 0x24BD },
+ { 0x24D8, 0x24BE },
+ { 0x24D9, 0x24BF },
+ { 0x24DA, 0x24C0 },
+ { 0x24DB, 0x24C1 },
+ { 0x24DC, 0x24C2 },
+ { 0x24DD, 0x24C3 },
+ { 0x24DE, 0x24C4 },
+ { 0x24DF, 0x24C5 },
+ { 0x24E0, 0x24C6 },
+ { 0x24E1, 0x24C7 },
+ { 0x24E2, 0x24C8 },
+ { 0x24E3, 0x24C9 },
+ { 0x24E4, 0x24CA },
+ { 0x24E5, 0x24CB },
+ { 0x24E6, 0x24CC },
+ { 0x24E7, 0x24CD },
+ { 0x24E8, 0x24CE },
+ { 0x24E9, 0x24CF },
+ { 0x2C30, 0x2C00 },
+ { 0x2C31, 0x2C01 },
+ { 0x2C32, 0x2C02 },
+ { 0x2C33, 0x2C03 },
+ { 0x2C34, 0x2C04 },
+ { 0x2C35, 0x2C05 },
+ { 0x2C36, 0x2C06 },
+ { 0x2C37, 0x2C07 },
+ { 0x2C38, 0x2C08 },
+ { 0x2C39, 0x2C09 },
+ { 0x2C3A, 0x2C0A },
+ { 0x2C3B, 0x2C0B },
+ { 0x2C3C, 0x2C0C },
+ { 0x2C3D, 0x2C0D },
+ { 0x2C3E, 0x2C0E },
+ { 0x2C3F, 0x2C0F },
+ { 0x2C40, 0x2C10 },
+ { 0x2C41, 0x2C11 },
+ { 0x2C42, 0x2C12 },
+ { 0x2C43, 0x2C13 },
+ { 0x2C44, 0x2C14 },
+ { 0x2C45, 0x2C15 },
+ { 0x2C46, 0x2C16 },
+ { 0x2C47, 0x2C17 },
+ { 0x2C48, 0x2C18 },
+ { 0x2C49, 0x2C19 },
+ { 0x2C4A, 0x2C1A },
+ { 0x2C4B, 0x2C1B },
+ { 0x2C4C, 0x2C1C },
+ { 0x2C4D, 0x2C1D },
+ { 0x2C4E, 0x2C1E },
+ { 0x2C4F, 0x2C1F },
+ { 0x2C50, 0x2C20 },
+ { 0x2C51, 0x2C21 },
+ { 0x2C52, 0x2C22 },
+ { 0x2C53, 0x2C23 },
+ { 0x2C54, 0x2C24 },
+ { 0x2C55, 0x2C25 },
+ { 0x2C56, 0x2C26 },
+ { 0x2C57, 0x2C27 },
+ { 0x2C58, 0x2C28 },
+ { 0x2C59, 0x2C29 },
+ { 0x2C5A, 0x2C2A },
+ { 0x2C5B, 0x2C2B },
+ { 0x2C5C, 0x2C2C },
+ { 0x2C5D, 0x2C2D },
+ { 0x2C5E, 0x2C2E },
+ { 0x2C61, 0x2C60 },
+ { 0x2C65, 0x023A },
+ { 0x2C66, 0x023E },
+ { 0x2C68, 0x2C67 },
+ { 0x2C6A, 0x2C69 },
+ { 0x2C6C, 0x2C6B },
+ { 0x2C73, 0x2C72 },
+ { 0x2C76, 0x2C75 },
+ { 0x2C81, 0x2C80 },
+ { 0x2C83, 0x2C82 },
+ { 0x2C85, 0x2C84 },
+ { 0x2C87, 0x2C86 },
+ { 0x2C89, 0x2C88 },
+ { 0x2C8B, 0x2C8A },
+ { 0x2C8D, 0x2C8C },
+ { 0x2C8F, 0x2C8E },
+ { 0x2C91, 0x2C90 },
+ { 0x2C93, 0x2C92 },
+ { 0x2C95, 0x2C94 },
+ { 0x2C97, 0x2C96 },
+ { 0x2C99, 0x2C98 },
+ { 0x2C9B, 0x2C9A },
+ { 0x2C9D, 0x2C9C },
+ { 0x2C9F, 0x2C9E },
+ { 0x2CA1, 0x2CA0 },
+ { 0x2CA3, 0x2CA2 },
+ { 0x2CA5, 0x2CA4 },
+ { 0x2CA7, 0x2CA6 },
+ { 0x2CA9, 0x2CA8 },
+ { 0x2CAB, 0x2CAA },
+ { 0x2CAD, 0x2CAC },
+ { 0x2CAF, 0x2CAE },
+ { 0x2CB1, 0x2CB0 },
+ { 0x2CB3, 0x2CB2 },
+ { 0x2CB5, 0x2CB4 },
+ { 0x2CB7, 0x2CB6 },
+ { 0x2CB9, 0x2CB8 },
+ { 0x2CBB, 0x2CBA },
+ { 0x2CBD, 0x2CBC },
+ { 0x2CBF, 0x2CBE },
+ { 0x2CC1, 0x2CC0 },
+ { 0x2CC3, 0x2CC2 },
+ { 0x2CC5, 0x2CC4 },
+ { 0x2CC7, 0x2CC6 },
+ { 0x2CC9, 0x2CC8 },
+ { 0x2CCB, 0x2CCA },
+ { 0x2CCD, 0x2CCC },
+ { 0x2CCF, 0x2CCE },
+ { 0x2CD1, 0x2CD0 },
+ { 0x2CD3, 0x2CD2 },
+ { 0x2CD5, 0x2CD4 },
+ { 0x2CD7, 0x2CD6 },
+ { 0x2CD9, 0x2CD8 },
+ { 0x2CDB, 0x2CDA },
+ { 0x2CDD, 0x2CDC },
+ { 0x2CDF, 0x2CDE },
+ { 0x2CE1, 0x2CE0 },
+ { 0x2CE3, 0x2CE2 },
+ { 0x2D00, 0x10A0 },
+ { 0x2D01, 0x10A1 },
+ { 0x2D02, 0x10A2 },
+ { 0x2D03, 0x10A3 },
+ { 0x2D04, 0x10A4 },
+ { 0x2D05, 0x10A5 },
+ { 0x2D06, 0x10A6 },
+ { 0x2D07, 0x10A7 },
+ { 0x2D08, 0x10A8 },
+ { 0x2D09, 0x10A9 },
+ { 0x2D0A, 0x10AA },
+ { 0x2D0B, 0x10AB },
+ { 0x2D0C, 0x10AC },
+ { 0x2D0D, 0x10AD },
+ { 0x2D0E, 0x10AE },
+ { 0x2D0F, 0x10AF },
+ { 0x2D10, 0x10B0 },
+ { 0x2D11, 0x10B1 },
+ { 0x2D12, 0x10B2 },
+ { 0x2D13, 0x10B3 },
+ { 0x2D14, 0x10B4 },
+ { 0x2D15, 0x10B5 },
+ { 0x2D16, 0x10B6 },
+ { 0x2D17, 0x10B7 },
+ { 0x2D18, 0x10B8 },
+ { 0x2D19, 0x10B9 },
+ { 0x2D1A, 0x10BA },
+ { 0x2D1B, 0x10BB },
+ { 0x2D1C, 0x10BC },
+ { 0x2D1D, 0x10BD },
+ { 0x2D1E, 0x10BE },
+ { 0x2D1F, 0x10BF },
+ { 0x2D20, 0x10C0 },
+ { 0x2D21, 0x10C1 },
+ { 0x2D22, 0x10C2 },
+ { 0x2D23, 0x10C3 },
+ { 0x2D24, 0x10C4 },
+ { 0x2D25, 0x10C5 },
+ { 0xA641, 0xA640 },
+ { 0xA643, 0xA642 },
+ { 0xA645, 0xA644 },
+ { 0xA647, 0xA646 },
+ { 0xA649, 0xA648 },
+ { 0xA64B, 0xA64A },
+ { 0xA64D, 0xA64C },
+ { 0xA64F, 0xA64E },
+ { 0xA651, 0xA650 },
+ { 0xA653, 0xA652 },
+ { 0xA655, 0xA654 },
+ { 0xA657, 0xA656 },
+ { 0xA659, 0xA658 },
+ { 0xA65B, 0xA65A },
+ { 0xA65D, 0xA65C },
+ { 0xA65F, 0xA65E },
+ { 0xA663, 0xA662 },
+ { 0xA665, 0xA664 },
+ { 0xA667, 0xA666 },
+ { 0xA669, 0xA668 },
+ { 0xA66B, 0xA66A },
+ { 0xA66D, 0xA66C },
+ { 0xA681, 0xA680 },
+ { 0xA683, 0xA682 },
+ { 0xA685, 0xA684 },
+ { 0xA687, 0xA686 },
+ { 0xA689, 0xA688 },
+ { 0xA68B, 0xA68A },
+ { 0xA68D, 0xA68C },
+ { 0xA68F, 0xA68E },
+ { 0xA691, 0xA690 },
+ { 0xA693, 0xA692 },
+ { 0xA695, 0xA694 },
+ { 0xA697, 0xA696 },
+ { 0xA723, 0xA722 },
+ { 0xA725, 0xA724 },
+ { 0xA727, 0xA726 },
+ { 0xA729, 0xA728 },
+ { 0xA72B, 0xA72A },
+ { 0xA72D, 0xA72C },
+ { 0xA72F, 0xA72E },
+ { 0xA733, 0xA732 },
+ { 0xA735, 0xA734 },
+ { 0xA737, 0xA736 },
+ { 0xA739, 0xA738 },
+ { 0xA73B, 0xA73A },
+ { 0xA73D, 0xA73C },
+ { 0xA73F, 0xA73E },
+ { 0xA741, 0xA740 },
+ { 0xA743, 0xA742 },
+ { 0xA745, 0xA744 },
+ { 0xA747, 0xA746 },
+ { 0xA749, 0xA748 },
+ { 0xA74B, 0xA74A },
+ { 0xA74D, 0xA74C },
+ { 0xA74F, 0xA74E },
+ { 0xA751, 0xA750 },
+ { 0xA753, 0xA752 },
+ { 0xA755, 0xA754 },
+ { 0xA757, 0xA756 },
+ { 0xA759, 0xA758 },
+ { 0xA75B, 0xA75A },
+ { 0xA75D, 0xA75C },
+ { 0xA75F, 0xA75E },
+ { 0xA761, 0xA760 },
+ { 0xA763, 0xA762 },
+ { 0xA765, 0xA764 },
+ { 0xA767, 0xA766 },
+ { 0xA769, 0xA768 },
+ { 0xA76B, 0xA76A },
+ { 0xA76D, 0xA76C },
+ { 0xA76F, 0xA76E },
+ { 0xA77A, 0xA779 },
+ { 0xA77C, 0xA77B },
+ { 0xA77F, 0xA77E },
+ { 0xA781, 0xA780 },
+ { 0xA783, 0xA782 },
+ { 0xA785, 0xA784 },
+ { 0xA787, 0xA786 },
+ { 0xA78C, 0xA78B },
+ { 0xFF41, 0xFF21 },
+ { 0xFF42, 0xFF22 },
+ { 0xFF43, 0xFF23 },
+ { 0xFF44, 0xFF24 },
+ { 0xFF45, 0xFF25 },
+ { 0xFF46, 0xFF26 },
+ { 0xFF47, 0xFF27 },
+ { 0xFF48, 0xFF28 },
+ { 0xFF49, 0xFF29 },
+ { 0xFF4A, 0xFF2A },
+ { 0xFF4B, 0xFF2B },
+ { 0xFF4C, 0xFF2C },
+ { 0xFF4D, 0xFF2D },
+ { 0xFF4E, 0xFF2E },
+ { 0xFF4F, 0xFF2F },
+ { 0xFF50, 0xFF30 },
+ { 0xFF51, 0xFF31 },
+ { 0xFF52, 0xFF32 },
+ { 0xFF53, 0xFF33 },
+ { 0xFF54, 0xFF34 },
+ { 0xFF55, 0xFF35 },
+ { 0xFF56, 0xFF36 },
+ { 0xFF57, 0xFF37 },
+ { 0xFF58, 0xFF38 },
+ { 0xFF59, 0xFF39 },
+ { 0xFF5A, 0xFF3A },
+ { 0x10428, 0x10400 },
+ { 0x10429, 0x10401 },
+ { 0x1042A, 0x10402 },
+ { 0x1042B, 0x10403 },
+ { 0x1042C, 0x10404 },
+ { 0x1042D, 0x10405 },
+ { 0x1042E, 0x10406 },
+ { 0x1042F, 0x10407 },
+ { 0x10430, 0x10408 },
+ { 0x10431, 0x10409 },
+ { 0x10432, 0x1040A },
+ { 0x10433, 0x1040B },
+ { 0x10434, 0x1040C },
+ { 0x10435, 0x1040D },
+ { 0x10436, 0x1040E },
+ { 0x10437, 0x1040F },
+ { 0x10438, 0x10410 },
+ { 0x10439, 0x10411 },
+ { 0x1043A, 0x10412 },
+ { 0x1043B, 0x10413 },
+ { 0x1043C, 0x10414 },
+ { 0x1043D, 0x10415 },
+ { 0x1043E, 0x10416 },
+ { 0x1043F, 0x10417 },
+ { 0x10440, 0x10418 },
+ { 0x10441, 0x10419 },
+ { 0x10442, 0x1041A },
+ { 0x10443, 0x1041B },
+ { 0x10444, 0x1041C },
+ { 0x10445, 0x1041D },
+ { 0x10446, 0x1041E },
+ { 0x10447, 0x1041F },
+ { 0x10448, 0x10420 },
+ { 0x10449, 0x10421 },
+ { 0x1044A, 0x10422 },
+ { 0x1044B, 0x10423 },
+ { 0x1044C, 0x10424 },
+ { 0x1044D, 0x10425 },
+ { 0x1044E, 0x10426 },
+ { 0x1044F, 0x10427 }
+
+#define MAP(c) uc_totitle (c)
+#include "test-mapping-part2.h"
diff --git a/tests/unicase/test-uc_toupper.c b/tests/unicase/test-uc_toupper.c
new file mode 100644
index 00000000..ed242a07
--- /dev/null
+++ b/tests/unicase/test-uc_toupper.c
@@ -0,0 +1,1055 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character mapping functions.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Generated automatically by gen-case.c for Unicode 5.1.0. */
+
+#include "test-mapping-part1.h"
+
+ { 0x0061, 0x0041 },
+ { 0x0062, 0x0042 },
+ { 0x0063, 0x0043 },
+ { 0x0064, 0x0044 },
+ { 0x0065, 0x0045 },
+ { 0x0066, 0x0046 },
+ { 0x0067, 0x0047 },
+ { 0x0068, 0x0048 },
+ { 0x0069, 0x0049 },
+ { 0x006A, 0x004A },
+ { 0x006B, 0x004B },
+ { 0x006C, 0x004C },
+ { 0x006D, 0x004D },
+ { 0x006E, 0x004E },
+ { 0x006F, 0x004F },
+ { 0x0070, 0x0050 },
+ { 0x0071, 0x0051 },
+ { 0x0072, 0x0052 },
+ { 0x0073, 0x0053 },
+ { 0x0074, 0x0054 },
+ { 0x0075, 0x0055 },
+ { 0x0076, 0x0056 },
+ { 0x0077, 0x0057 },
+ { 0x0078, 0x0058 },
+ { 0x0079, 0x0059 },
+ { 0x007A, 0x005A },
+ { 0x00B5, 0x039C },
+ { 0x00E0, 0x00C0 },
+ { 0x00E1, 0x00C1 },
+ { 0x00E2, 0x00C2 },
+ { 0x00E3, 0x00C3 },
+ { 0x00E4, 0x00C4 },
+ { 0x00E5, 0x00C5 },
+ { 0x00E6, 0x00C6 },
+ { 0x00E7, 0x00C7 },
+ { 0x00E8, 0x00C8 },
+ { 0x00E9, 0x00C9 },
+ { 0x00EA, 0x00CA },
+ { 0x00EB, 0x00CB },
+ { 0x00EC, 0x00CC },
+ { 0x00ED, 0x00CD },
+ { 0x00EE, 0x00CE },
+ { 0x00EF, 0x00CF },
+ { 0x00F0, 0x00D0 },
+ { 0x00F1, 0x00D1 },
+ { 0x00F2, 0x00D2 },
+ { 0x00F3, 0x00D3 },
+ { 0x00F4, 0x00D4 },
+ { 0x00F5, 0x00D5 },
+ { 0x00F6, 0x00D6 },
+ { 0x00F8, 0x00D8 },
+ { 0x00F9, 0x00D9 },
+ { 0x00FA, 0x00DA },
+ { 0x00FB, 0x00DB },
+ { 0x00FC, 0x00DC },
+ { 0x00FD, 0x00DD },
+ { 0x00FE, 0x00DE },
+ { 0x00FF, 0x0178 },
+ { 0x0101, 0x0100 },
+ { 0x0103, 0x0102 },
+ { 0x0105, 0x0104 },
+ { 0x0107, 0x0106 },
+ { 0x0109, 0x0108 },
+ { 0x010B, 0x010A },
+ { 0x010D, 0x010C },
+ { 0x010F, 0x010E },
+ { 0x0111, 0x0110 },
+ { 0x0113, 0x0112 },
+ { 0x0115, 0x0114 },
+ { 0x0117, 0x0116 },
+ { 0x0119, 0x0118 },
+ { 0x011B, 0x011A },
+ { 0x011D, 0x011C },
+ { 0x011F, 0x011E },
+ { 0x0121, 0x0120 },
+ { 0x0123, 0x0122 },
+ { 0x0125, 0x0124 },
+ { 0x0127, 0x0126 },
+ { 0x0129, 0x0128 },
+ { 0x012B, 0x012A },
+ { 0x012D, 0x012C },
+ { 0x012F, 0x012E },
+ { 0x0131, 0x0049 },
+ { 0x0133, 0x0132 },
+ { 0x0135, 0x0134 },
+ { 0x0137, 0x0136 },
+ { 0x013A, 0x0139 },
+ { 0x013C, 0x013B },
+ { 0x013E, 0x013D },
+ { 0x0140, 0x013F },
+ { 0x0142, 0x0141 },
+ { 0x0144, 0x0143 },
+ { 0x0146, 0x0145 },
+ { 0x0148, 0x0147 },
+ { 0x014B, 0x014A },
+ { 0x014D, 0x014C },
+ { 0x014F, 0x014E },
+ { 0x0151, 0x0150 },
+ { 0x0153, 0x0152 },
+ { 0x0155, 0x0154 },
+ { 0x0157, 0x0156 },
+ { 0x0159, 0x0158 },
+ { 0x015B, 0x015A },
+ { 0x015D, 0x015C },
+ { 0x015F, 0x015E },
+ { 0x0161, 0x0160 },
+ { 0x0163, 0x0162 },
+ { 0x0165, 0x0164 },
+ { 0x0167, 0x0166 },
+ { 0x0169, 0x0168 },
+ { 0x016B, 0x016A },
+ { 0x016D, 0x016C },
+ { 0x016F, 0x016E },
+ { 0x0171, 0x0170 },
+ { 0x0173, 0x0172 },
+ { 0x0175, 0x0174 },
+ { 0x0177, 0x0176 },
+ { 0x017A, 0x0179 },
+ { 0x017C, 0x017B },
+ { 0x017E, 0x017D },
+ { 0x017F, 0x0053 },
+ { 0x0180, 0x0243 },
+ { 0x0183, 0x0182 },
+ { 0x0185, 0x0184 },
+ { 0x0188, 0x0187 },
+ { 0x018C, 0x018B },
+ { 0x0192, 0x0191 },
+ { 0x0195, 0x01F6 },
+ { 0x0199, 0x0198 },
+ { 0x019A, 0x023D },
+ { 0x019E, 0x0220 },
+ { 0x01A1, 0x01A0 },
+ { 0x01A3, 0x01A2 },
+ { 0x01A5, 0x01A4 },
+ { 0x01A8, 0x01A7 },
+ { 0x01AD, 0x01AC },
+ { 0x01B0, 0x01AF },
+ { 0x01B4, 0x01B3 },
+ { 0x01B6, 0x01B5 },
+ { 0x01B9, 0x01B8 },
+ { 0x01BD, 0x01BC },
+ { 0x01BF, 0x01F7 },
+ { 0x01C5, 0x01C4 },
+ { 0x01C6, 0x01C4 },
+ { 0x01C8, 0x01C7 },
+ { 0x01C9, 0x01C7 },
+ { 0x01CB, 0x01CA },
+ { 0x01CC, 0x01CA },
+ { 0x01CE, 0x01CD },
+ { 0x01D0, 0x01CF },
+ { 0x01D2, 0x01D1 },
+ { 0x01D4, 0x01D3 },
+ { 0x01D6, 0x01D5 },
+ { 0x01D8, 0x01D7 },
+ { 0x01DA, 0x01D9 },
+ { 0x01DC, 0x01DB },
+ { 0x01DD, 0x018E },
+ { 0x01DF, 0x01DE },
+ { 0x01E1, 0x01E0 },
+ { 0x01E3, 0x01E2 },
+ { 0x01E5, 0x01E4 },
+ { 0x01E7, 0x01E6 },
+ { 0x01E9, 0x01E8 },
+ { 0x01EB, 0x01EA },
+ { 0x01ED, 0x01EC },
+ { 0x01EF, 0x01EE },
+ { 0x01F2, 0x01F1 },
+ { 0x01F3, 0x01F1 },
+ { 0x01F5, 0x01F4 },
+ { 0x01F9, 0x01F8 },
+ { 0x01FB, 0x01FA },
+ { 0x01FD, 0x01FC },
+ { 0x01FF, 0x01FE },
+ { 0x0201, 0x0200 },
+ { 0x0203, 0x0202 },
+ { 0x0205, 0x0204 },
+ { 0x0207, 0x0206 },
+ { 0x0209, 0x0208 },
+ { 0x020B, 0x020A },
+ { 0x020D, 0x020C },
+ { 0x020F, 0x020E },
+ { 0x0211, 0x0210 },
+ { 0x0213, 0x0212 },
+ { 0x0215, 0x0214 },
+ { 0x0217, 0x0216 },
+ { 0x0219, 0x0218 },
+ { 0x021B, 0x021A },
+ { 0x021D, 0x021C },
+ { 0x021F, 0x021E },
+ { 0x0223, 0x0222 },
+ { 0x0225, 0x0224 },
+ { 0x0227, 0x0226 },
+ { 0x0229, 0x0228 },
+ { 0x022B, 0x022A },
+ { 0x022D, 0x022C },
+ { 0x022F, 0x022E },
+ { 0x0231, 0x0230 },
+ { 0x0233, 0x0232 },
+ { 0x023C, 0x023B },
+ { 0x0242, 0x0241 },
+ { 0x0247, 0x0246 },
+ { 0x0249, 0x0248 },
+ { 0x024B, 0x024A },
+ { 0x024D, 0x024C },
+ { 0x024F, 0x024E },
+ { 0x0250, 0x2C6F },
+ { 0x0251, 0x2C6D },
+ { 0x0253, 0x0181 },
+ { 0x0254, 0x0186 },
+ { 0x0256, 0x0189 },
+ { 0x0257, 0x018A },
+ { 0x0259, 0x018F },
+ { 0x025B, 0x0190 },
+ { 0x0260, 0x0193 },
+ { 0x0263, 0x0194 },
+ { 0x0268, 0x0197 },
+ { 0x0269, 0x0196 },
+ { 0x026B, 0x2C62 },
+ { 0x026F, 0x019C },
+ { 0x0271, 0x2C6E },
+ { 0x0272, 0x019D },
+ { 0x0275, 0x019F },
+ { 0x027D, 0x2C64 },
+ { 0x0280, 0x01A6 },
+ { 0x0283, 0x01A9 },
+ { 0x0288, 0x01AE },
+ { 0x0289, 0x0244 },
+ { 0x028A, 0x01B1 },
+ { 0x028B, 0x01B2 },
+ { 0x028C, 0x0245 },
+ { 0x0292, 0x01B7 },
+ { 0x0345, 0x0399 },
+ { 0x0371, 0x0370 },
+ { 0x0373, 0x0372 },
+ { 0x0377, 0x0376 },
+ { 0x037B, 0x03FD },
+ { 0x037C, 0x03FE },
+ { 0x037D, 0x03FF },
+ { 0x03AC, 0x0386 },
+ { 0x03AD, 0x0388 },
+ { 0x03AE, 0x0389 },
+ { 0x03AF, 0x038A },
+ { 0x03B1, 0x0391 },
+ { 0x03B2, 0x0392 },
+ { 0x03B3, 0x0393 },
+ { 0x03B4, 0x0394 },
+ { 0x03B5, 0x0395 },
+ { 0x03B6, 0x0396 },
+ { 0x03B7, 0x0397 },
+ { 0x03B8, 0x0398 },
+ { 0x03B9, 0x0399 },
+ { 0x03BA, 0x039A },
+ { 0x03BB, 0x039B },
+ { 0x03BC, 0x039C },
+ { 0x03BD, 0x039D },
+ { 0x03BE, 0x039E },
+ { 0x03BF, 0x039F },
+ { 0x03C0, 0x03A0 },
+ { 0x03C1, 0x03A1 },
+ { 0x03C2, 0x03A3 },
+ { 0x03C3, 0x03A3 },
+ { 0x03C4, 0x03A4 },
+ { 0x03C5, 0x03A5 },
+ { 0x03C6, 0x03A6 },
+ { 0x03C7, 0x03A7 },
+ { 0x03C8, 0x03A8 },
+ { 0x03C9, 0x03A9 },
+ { 0x03CA, 0x03AA },
+ { 0x03CB, 0x03AB },
+ { 0x03CC, 0x038C },
+ { 0x03CD, 0x038E },
+ { 0x03CE, 0x038F },
+ { 0x03D0, 0x0392 },
+ { 0x03D1, 0x0398 },
+ { 0x03D5, 0x03A6 },
+ { 0x03D6, 0x03A0 },
+ { 0x03D7, 0x03CF },
+ { 0x03D9, 0x03D8 },
+ { 0x03DB, 0x03DA },
+ { 0x03DD, 0x03DC },
+ { 0x03DF, 0x03DE },
+ { 0x03E1, 0x03E0 },
+ { 0x03E3, 0x03E2 },
+ { 0x03E5, 0x03E4 },
+ { 0x03E7, 0x03E6 },
+ { 0x03E9, 0x03E8 },
+ { 0x03EB, 0x03EA },
+ { 0x03ED, 0x03EC },
+ { 0x03EF, 0x03EE },
+ { 0x03F0, 0x039A },
+ { 0x03F1, 0x03A1 },
+ { 0x03F2, 0x03F9 },
+ { 0x03F5, 0x0395 },
+ { 0x03F8, 0x03F7 },
+ { 0x03FB, 0x03FA },
+ { 0x0430, 0x0410 },
+ { 0x0431, 0x0411 },
+ { 0x0432, 0x0412 },
+ { 0x0433, 0x0413 },
+ { 0x0434, 0x0414 },
+ { 0x0435, 0x0415 },
+ { 0x0436, 0x0416 },
+ { 0x0437, 0x0417 },
+ { 0x0438, 0x0418 },
+ { 0x0439, 0x0419 },
+ { 0x043A, 0x041A },
+ { 0x043B, 0x041B },
+ { 0x043C, 0x041C },
+ { 0x043D, 0x041D },
+ { 0x043E, 0x041E },
+ { 0x043F, 0x041F },
+ { 0x0440, 0x0420 },
+ { 0x0441, 0x0421 },
+ { 0x0442, 0x0422 },
+ { 0x0443, 0x0423 },
+ { 0x0444, 0x0424 },
+ { 0x0445, 0x0425 },
+ { 0x0446, 0x0426 },
+ { 0x0447, 0x0427 },
+ { 0x0448, 0x0428 },
+ { 0x0449, 0x0429 },
+ { 0x044A, 0x042A },
+ { 0x044B, 0x042B },
+ { 0x044C, 0x042C },
+ { 0x044D, 0x042D },
+ { 0x044E, 0x042E },
+ { 0x044F, 0x042F },
+ { 0x0450, 0x0400 },
+ { 0x0451, 0x0401 },
+ { 0x0452, 0x0402 },
+ { 0x0453, 0x0403 },
+ { 0x0454, 0x0404 },
+ { 0x0455, 0x0405 },
+ { 0x0456, 0x0406 },
+ { 0x0457, 0x0407 },
+ { 0x0458, 0x0408 },
+ { 0x0459, 0x0409 },
+ { 0x045A, 0x040A },
+ { 0x045B, 0x040B },
+ { 0x045C, 0x040C },
+ { 0x045D, 0x040D },
+ { 0x045E, 0x040E },
+ { 0x045F, 0x040F },
+ { 0x0461, 0x0460 },
+ { 0x0463, 0x0462 },
+ { 0x0465, 0x0464 },
+ { 0x0467, 0x0466 },
+ { 0x0469, 0x0468 },
+ { 0x046B, 0x046A },
+ { 0x046D, 0x046C },
+ { 0x046F, 0x046E },
+ { 0x0471, 0x0470 },
+ { 0x0473, 0x0472 },
+ { 0x0475, 0x0474 },
+ { 0x0477, 0x0476 },
+ { 0x0479, 0x0478 },
+ { 0x047B, 0x047A },
+ { 0x047D, 0x047C },
+ { 0x047F, 0x047E },
+ { 0x0481, 0x0480 },
+ { 0x048B, 0x048A },
+ { 0x048D, 0x048C },
+ { 0x048F, 0x048E },
+ { 0x0491, 0x0490 },
+ { 0x0493, 0x0492 },
+ { 0x0495, 0x0494 },
+ { 0x0497, 0x0496 },
+ { 0x0499, 0x0498 },
+ { 0x049B, 0x049A },
+ { 0x049D, 0x049C },
+ { 0x049F, 0x049E },
+ { 0x04A1, 0x04A0 },
+ { 0x04A3, 0x04A2 },
+ { 0x04A5, 0x04A4 },
+ { 0x04A7, 0x04A6 },
+ { 0x04A9, 0x04A8 },
+ { 0x04AB, 0x04AA },
+ { 0x04AD, 0x04AC },
+ { 0x04AF, 0x04AE },
+ { 0x04B1, 0x04B0 },
+ { 0x04B3, 0x04B2 },
+ { 0x04B5, 0x04B4 },
+ { 0x04B7, 0x04B6 },
+ { 0x04B9, 0x04B8 },
+ { 0x04BB, 0x04BA },
+ { 0x04BD, 0x04BC },
+ { 0x04BF, 0x04BE },
+ { 0x04C2, 0x04C1 },
+ { 0x04C4, 0x04C3 },
+ { 0x04C6, 0x04C5 },
+ { 0x04C8, 0x04C7 },
+ { 0x04CA, 0x04C9 },
+ { 0x04CC, 0x04CB },
+ { 0x04CE, 0x04CD },
+ { 0x04CF, 0x04C0 },
+ { 0x04D1, 0x04D0 },
+ { 0x04D3, 0x04D2 },
+ { 0x04D5, 0x04D4 },
+ { 0x04D7, 0x04D6 },
+ { 0x04D9, 0x04D8 },
+ { 0x04DB, 0x04DA },
+ { 0x04DD, 0x04DC },
+ { 0x04DF, 0x04DE },
+ { 0x04E1, 0x04E0 },
+ { 0x04E3, 0x04E2 },
+ { 0x04E5, 0x04E4 },
+ { 0x04E7, 0x04E6 },
+ { 0x04E9, 0x04E8 },
+ { 0x04EB, 0x04EA },
+ { 0x04ED, 0x04EC },
+ { 0x04EF, 0x04EE },
+ { 0x04F1, 0x04F0 },
+ { 0x04F3, 0x04F2 },
+ { 0x04F5, 0x04F4 },
+ { 0x04F7, 0x04F6 },
+ { 0x04F9, 0x04F8 },
+ { 0x04FB, 0x04FA },
+ { 0x04FD, 0x04FC },
+ { 0x04FF, 0x04FE },
+ { 0x0501, 0x0500 },
+ { 0x0503, 0x0502 },
+ { 0x0505, 0x0504 },
+ { 0x0507, 0x0506 },
+ { 0x0509, 0x0508 },
+ { 0x050B, 0x050A },
+ { 0x050D, 0x050C },
+ { 0x050F, 0x050E },
+ { 0x0511, 0x0510 },
+ { 0x0513, 0x0512 },
+ { 0x0515, 0x0514 },
+ { 0x0517, 0x0516 },
+ { 0x0519, 0x0518 },
+ { 0x051B, 0x051A },
+ { 0x051D, 0x051C },
+ { 0x051F, 0x051E },
+ { 0x0521, 0x0520 },
+ { 0x0523, 0x0522 },
+ { 0x0561, 0x0531 },
+ { 0x0562, 0x0532 },
+ { 0x0563, 0x0533 },
+ { 0x0564, 0x0534 },
+ { 0x0565, 0x0535 },
+ { 0x0566, 0x0536 },
+ { 0x0567, 0x0537 },
+ { 0x0568, 0x0538 },
+ { 0x0569, 0x0539 },
+ { 0x056A, 0x053A },
+ { 0x056B, 0x053B },
+ { 0x056C, 0x053C },
+ { 0x056D, 0x053D },
+ { 0x056E, 0x053E },
+ { 0x056F, 0x053F },
+ { 0x0570, 0x0540 },
+ { 0x0571, 0x0541 },
+ { 0x0572, 0x0542 },
+ { 0x0573, 0x0543 },
+ { 0x0574, 0x0544 },
+ { 0x0575, 0x0545 },
+ { 0x0576, 0x0546 },
+ { 0x0577, 0x0547 },
+ { 0x0578, 0x0548 },
+ { 0x0579, 0x0549 },
+ { 0x057A, 0x054A },
+ { 0x057B, 0x054B },
+ { 0x057C, 0x054C },
+ { 0x057D, 0x054D },
+ { 0x057E, 0x054E },
+ { 0x057F, 0x054F },
+ { 0x0580, 0x0550 },
+ { 0x0581, 0x0551 },
+ { 0x0582, 0x0552 },
+ { 0x0583, 0x0553 },
+ { 0x0584, 0x0554 },
+ { 0x0585, 0x0555 },
+ { 0x0586, 0x0556 },
+ { 0x1D79, 0xA77D },
+ { 0x1D7D, 0x2C63 },
+ { 0x1E01, 0x1E00 },
+ { 0x1E03, 0x1E02 },
+ { 0x1E05, 0x1E04 },
+ { 0x1E07, 0x1E06 },
+ { 0x1E09, 0x1E08 },
+ { 0x1E0B, 0x1E0A },
+ { 0x1E0D, 0x1E0C },
+ { 0x1E0F, 0x1E0E },
+ { 0x1E11, 0x1E10 },
+ { 0x1E13, 0x1E12 },
+ { 0x1E15, 0x1E14 },
+ { 0x1E17, 0x1E16 },
+ { 0x1E19, 0x1E18 },
+ { 0x1E1B, 0x1E1A },
+ { 0x1E1D, 0x1E1C },
+ { 0x1E1F, 0x1E1E },
+ { 0x1E21, 0x1E20 },
+ { 0x1E23, 0x1E22 },
+ { 0x1E25, 0x1E24 },
+ { 0x1E27, 0x1E26 },
+ { 0x1E29, 0x1E28 },
+ { 0x1E2B, 0x1E2A },
+ { 0x1E2D, 0x1E2C },
+ { 0x1E2F, 0x1E2E },
+ { 0x1E31, 0x1E30 },
+ { 0x1E33, 0x1E32 },
+ { 0x1E35, 0x1E34 },
+ { 0x1E37, 0x1E36 },
+ { 0x1E39, 0x1E38 },
+ { 0x1E3B, 0x1E3A },
+ { 0x1E3D, 0x1E3C },
+ { 0x1E3F, 0x1E3E },
+ { 0x1E41, 0x1E40 },
+ { 0x1E43, 0x1E42 },
+ { 0x1E45, 0x1E44 },
+ { 0x1E47, 0x1E46 },
+ { 0x1E49, 0x1E48 },
+ { 0x1E4B, 0x1E4A },
+ { 0x1E4D, 0x1E4C },
+ { 0x1E4F, 0x1E4E },
+ { 0x1E51, 0x1E50 },
+ { 0x1E53, 0x1E52 },
+ { 0x1E55, 0x1E54 },
+ { 0x1E57, 0x1E56 },
+ { 0x1E59, 0x1E58 },
+ { 0x1E5B, 0x1E5A },
+ { 0x1E5D, 0x1E5C },
+ { 0x1E5F, 0x1E5E },
+ { 0x1E61, 0x1E60 },
+ { 0x1E63, 0x1E62 },
+ { 0x1E65, 0x1E64 },
+ { 0x1E67, 0x1E66 },
+ { 0x1E69, 0x1E68 },
+ { 0x1E6B, 0x1E6A },
+ { 0x1E6D, 0x1E6C },
+ { 0x1E6F, 0x1E6E },
+ { 0x1E71, 0x1E70 },
+ { 0x1E73, 0x1E72 },
+ { 0x1E75, 0x1E74 },
+ { 0x1E77, 0x1E76 },
+ { 0x1E79, 0x1E78 },
+ { 0x1E7B, 0x1E7A },
+ { 0x1E7D, 0x1E7C },
+ { 0x1E7F, 0x1E7E },
+ { 0x1E81, 0x1E80 },
+ { 0x1E83, 0x1E82 },
+ { 0x1E85, 0x1E84 },
+ { 0x1E87, 0x1E86 },
+ { 0x1E89, 0x1E88 },
+ { 0x1E8B, 0x1E8A },
+ { 0x1E8D, 0x1E8C },
+ { 0x1E8F, 0x1E8E },
+ { 0x1E91, 0x1E90 },
+ { 0x1E93, 0x1E92 },
+ { 0x1E95, 0x1E94 },
+ { 0x1E9B, 0x1E60 },
+ { 0x1EA1, 0x1EA0 },
+ { 0x1EA3, 0x1EA2 },
+ { 0x1EA5, 0x1EA4 },
+ { 0x1EA7, 0x1EA6 },
+ { 0x1EA9, 0x1EA8 },
+ { 0x1EAB, 0x1EAA },
+ { 0x1EAD, 0x1EAC },
+ { 0x1EAF, 0x1EAE },
+ { 0x1EB1, 0x1EB0 },
+ { 0x1EB3, 0x1EB2 },
+ { 0x1EB5, 0x1EB4 },
+ { 0x1EB7, 0x1EB6 },
+ { 0x1EB9, 0x1EB8 },
+ { 0x1EBB, 0x1EBA },
+ { 0x1EBD, 0x1EBC },
+ { 0x1EBF, 0x1EBE },
+ { 0x1EC1, 0x1EC0 },
+ { 0x1EC3, 0x1EC2 },
+ { 0x1EC5, 0x1EC4 },
+ { 0x1EC7, 0x1EC6 },
+ { 0x1EC9, 0x1EC8 },
+ { 0x1ECB, 0x1ECA },
+ { 0x1ECD, 0x1ECC },
+ { 0x1ECF, 0x1ECE },
+ { 0x1ED1, 0x1ED0 },
+ { 0x1ED3, 0x1ED2 },
+ { 0x1ED5, 0x1ED4 },
+ { 0x1ED7, 0x1ED6 },
+ { 0x1ED9, 0x1ED8 },
+ { 0x1EDB, 0x1EDA },
+ { 0x1EDD, 0x1EDC },
+ { 0x1EDF, 0x1EDE },
+ { 0x1EE1, 0x1EE0 },
+ { 0x1EE3, 0x1EE2 },
+ { 0x1EE5, 0x1EE4 },
+ { 0x1EE7, 0x1EE6 },
+ { 0x1EE9, 0x1EE8 },
+ { 0x1EEB, 0x1EEA },
+ { 0x1EED, 0x1EEC },
+ { 0x1EEF, 0x1EEE },
+ { 0x1EF1, 0x1EF0 },
+ { 0x1EF3, 0x1EF2 },
+ { 0x1EF5, 0x1EF4 },
+ { 0x1EF7, 0x1EF6 },
+ { 0x1EF9, 0x1EF8 },
+ { 0x1EFB, 0x1EFA },
+ { 0x1EFD, 0x1EFC },
+ { 0x1EFF, 0x1EFE },
+ { 0x1F00, 0x1F08 },
+ { 0x1F01, 0x1F09 },
+ { 0x1F02, 0x1F0A },
+ { 0x1F03, 0x1F0B },
+ { 0x1F04, 0x1F0C },
+ { 0x1F05, 0x1F0D },
+ { 0x1F06, 0x1F0E },
+ { 0x1F07, 0x1F0F },
+ { 0x1F10, 0x1F18 },
+ { 0x1F11, 0x1F19 },
+ { 0x1F12, 0x1F1A },
+ { 0x1F13, 0x1F1B },
+ { 0x1F14, 0x1F1C },
+ { 0x1F15, 0x1F1D },
+ { 0x1F20, 0x1F28 },
+ { 0x1F21, 0x1F29 },
+ { 0x1F22, 0x1F2A },
+ { 0x1F23, 0x1F2B },
+ { 0x1F24, 0x1F2C },
+ { 0x1F25, 0x1F2D },
+ { 0x1F26, 0x1F2E },
+ { 0x1F27, 0x1F2F },
+ { 0x1F30, 0x1F38 },
+ { 0x1F31, 0x1F39 },
+ { 0x1F32, 0x1F3A },
+ { 0x1F33, 0x1F3B },
+ { 0x1F34, 0x1F3C },
+ { 0x1F35, 0x1F3D },
+ { 0x1F36, 0x1F3E },
+ { 0x1F37, 0x1F3F },
+ { 0x1F40, 0x1F48 },
+ { 0x1F41, 0x1F49 },
+ { 0x1F42, 0x1F4A },
+ { 0x1F43, 0x1F4B },
+ { 0x1F44, 0x1F4C },
+ { 0x1F45, 0x1F4D },
+ { 0x1F51, 0x1F59 },
+ { 0x1F53, 0x1F5B },
+ { 0x1F55, 0x1F5D },
+ { 0x1F57, 0x1F5F },
+ { 0x1F60, 0x1F68 },
+ { 0x1F61, 0x1F69 },
+ { 0x1F62, 0x1F6A },
+ { 0x1F63, 0x1F6B },
+ { 0x1F64, 0x1F6C },
+ { 0x1F65, 0x1F6D },
+ { 0x1F66, 0x1F6E },
+ { 0x1F67, 0x1F6F },
+ { 0x1F70, 0x1FBA },
+ { 0x1F71, 0x1FBB },
+ { 0x1F72, 0x1FC8 },
+ { 0x1F73, 0x1FC9 },
+ { 0x1F74, 0x1FCA },
+ { 0x1F75, 0x1FCB },
+ { 0x1F76, 0x1FDA },
+ { 0x1F77, 0x1FDB },
+ { 0x1F78, 0x1FF8 },
+ { 0x1F79, 0x1FF9 },
+ { 0x1F7A, 0x1FEA },
+ { 0x1F7B, 0x1FEB },
+ { 0x1F7C, 0x1FFA },
+ { 0x1F7D, 0x1FFB },
+ { 0x1F80, 0x1F88 },
+ { 0x1F81, 0x1F89 },
+ { 0x1F82, 0x1F8A },
+ { 0x1F83, 0x1F8B },
+ { 0x1F84, 0x1F8C },
+ { 0x1F85, 0x1F8D },
+ { 0x1F86, 0x1F8E },
+ { 0x1F87, 0x1F8F },
+ { 0x1F90, 0x1F98 },
+ { 0x1F91, 0x1F99 },
+ { 0x1F92, 0x1F9A },
+ { 0x1F93, 0x1F9B },
+ { 0x1F94, 0x1F9C },
+ { 0x1F95, 0x1F9D },
+ { 0x1F96, 0x1F9E },
+ { 0x1F97, 0x1F9F },
+ { 0x1FA0, 0x1FA8 },
+ { 0x1FA1, 0x1FA9 },
+ { 0x1FA2, 0x1FAA },
+ { 0x1FA3, 0x1FAB },
+ { 0x1FA4, 0x1FAC },
+ { 0x1FA5, 0x1FAD },
+ { 0x1FA6, 0x1FAE },
+ { 0x1FA7, 0x1FAF },
+ { 0x1FB0, 0x1FB8 },
+ { 0x1FB1, 0x1FB9 },
+ { 0x1FB3, 0x1FBC },
+ { 0x1FBE, 0x0399 },
+ { 0x1FC3, 0x1FCC },
+ { 0x1FD0, 0x1FD8 },
+ { 0x1FD1, 0x1FD9 },
+ { 0x1FE0, 0x1FE8 },
+ { 0x1FE1, 0x1FE9 },
+ { 0x1FE5, 0x1FEC },
+ { 0x1FF3, 0x1FFC },
+ { 0x214E, 0x2132 },
+ { 0x2170, 0x2160 },
+ { 0x2171, 0x2161 },
+ { 0x2172, 0x2162 },
+ { 0x2173, 0x2163 },
+ { 0x2174, 0x2164 },
+ { 0x2175, 0x2165 },
+ { 0x2176, 0x2166 },
+ { 0x2177, 0x2167 },
+ { 0x2178, 0x2168 },
+ { 0x2179, 0x2169 },
+ { 0x217A, 0x216A },
+ { 0x217B, 0x216B },
+ { 0x217C, 0x216C },
+ { 0x217D, 0x216D },
+ { 0x217E, 0x216E },
+ { 0x217F, 0x216F },
+ { 0x2184, 0x2183 },
+ { 0x24D0, 0x24B6 },
+ { 0x24D1, 0x24B7 },
+ { 0x24D2, 0x24B8 },
+ { 0x24D3, 0x24B9 },
+ { 0x24D4, 0x24BA },
+ { 0x24D5, 0x24BB },
+ { 0x24D6, 0x24BC },
+ { 0x24D7, 0x24BD },
+ { 0x24D8, 0x24BE },
+ { 0x24D9, 0x24BF },
+ { 0x24DA, 0x24C0 },
+ { 0x24DB, 0x24C1 },
+ { 0x24DC, 0x24C2 },
+ { 0x24DD, 0x24C3 },
+ { 0x24DE, 0x24C4 },
+ { 0x24DF, 0x24C5 },
+ { 0x24E0, 0x24C6 },
+ { 0x24E1, 0x24C7 },
+ { 0x24E2, 0x24C8 },
+ { 0x24E3, 0x24C9 },
+ { 0x24E4, 0x24CA },
+ { 0x24E5, 0x24CB },
+ { 0x24E6, 0x24CC },
+ { 0x24E7, 0x24CD },
+ { 0x24E8, 0x24CE },
+ { 0x24E9, 0x24CF },
+ { 0x2C30, 0x2C00 },
+ { 0x2C31, 0x2C01 },
+ { 0x2C32, 0x2C02 },
+ { 0x2C33, 0x2C03 },
+ { 0x2C34, 0x2C04 },
+ { 0x2C35, 0x2C05 },
+ { 0x2C36, 0x2C06 },
+ { 0x2C37, 0x2C07 },
+ { 0x2C38, 0x2C08 },
+ { 0x2C39, 0x2C09 },
+ { 0x2C3A, 0x2C0A },
+ { 0x2C3B, 0x2C0B },
+ { 0x2C3C, 0x2C0C },
+ { 0x2C3D, 0x2C0D },
+ { 0x2C3E, 0x2C0E },
+ { 0x2C3F, 0x2C0F },
+ { 0x2C40, 0x2C10 },
+ { 0x2C41, 0x2C11 },
+ { 0x2C42, 0x2C12 },
+ { 0x2C43, 0x2C13 },
+ { 0x2C44, 0x2C14 },
+ { 0x2C45, 0x2C15 },
+ { 0x2C46, 0x2C16 },
+ { 0x2C47, 0x2C17 },
+ { 0x2C48, 0x2C18 },
+ { 0x2C49, 0x2C19 },
+ { 0x2C4A, 0x2C1A },
+ { 0x2C4B, 0x2C1B },
+ { 0x2C4C, 0x2C1C },
+ { 0x2C4D, 0x2C1D },
+ { 0x2C4E, 0x2C1E },
+ { 0x2C4F, 0x2C1F },
+ { 0x2C50, 0x2C20 },
+ { 0x2C51, 0x2C21 },
+ { 0x2C52, 0x2C22 },
+ { 0x2C53, 0x2C23 },
+ { 0x2C54, 0x2C24 },
+ { 0x2C55, 0x2C25 },
+ { 0x2C56, 0x2C26 },
+ { 0x2C57, 0x2C27 },
+ { 0x2C58, 0x2C28 },
+ { 0x2C59, 0x2C29 },
+ { 0x2C5A, 0x2C2A },
+ { 0x2C5B, 0x2C2B },
+ { 0x2C5C, 0x2C2C },
+ { 0x2C5D, 0x2C2D },
+ { 0x2C5E, 0x2C2E },
+ { 0x2C61, 0x2C60 },
+ { 0x2C65, 0x023A },
+ { 0x2C66, 0x023E },
+ { 0x2C68, 0x2C67 },
+ { 0x2C6A, 0x2C69 },
+ { 0x2C6C, 0x2C6B },
+ { 0x2C73, 0x2C72 },
+ { 0x2C76, 0x2C75 },
+ { 0x2C81, 0x2C80 },
+ { 0x2C83, 0x2C82 },
+ { 0x2C85, 0x2C84 },
+ { 0x2C87, 0x2C86 },
+ { 0x2C89, 0x2C88 },
+ { 0x2C8B, 0x2C8A },
+ { 0x2C8D, 0x2C8C },
+ { 0x2C8F, 0x2C8E },
+ { 0x2C91, 0x2C90 },
+ { 0x2C93, 0x2C92 },
+ { 0x2C95, 0x2C94 },
+ { 0x2C97, 0x2C96 },
+ { 0x2C99, 0x2C98 },
+ { 0x2C9B, 0x2C9A },
+ { 0x2C9D, 0x2C9C },
+ { 0x2C9F, 0x2C9E },
+ { 0x2CA1, 0x2CA0 },
+ { 0x2CA3, 0x2CA2 },
+ { 0x2CA5, 0x2CA4 },
+ { 0x2CA7, 0x2CA6 },
+ { 0x2CA9, 0x2CA8 },
+ { 0x2CAB, 0x2CAA },
+ { 0x2CAD, 0x2CAC },
+ { 0x2CAF, 0x2CAE },
+ { 0x2CB1, 0x2CB0 },
+ { 0x2CB3, 0x2CB2 },
+ { 0x2CB5, 0x2CB4 },
+ { 0x2CB7, 0x2CB6 },
+ { 0x2CB9, 0x2CB8 },
+ { 0x2CBB, 0x2CBA },
+ { 0x2CBD, 0x2CBC },
+ { 0x2CBF, 0x2CBE },
+ { 0x2CC1, 0x2CC0 },
+ { 0x2CC3, 0x2CC2 },
+ { 0x2CC5, 0x2CC4 },
+ { 0x2CC7, 0x2CC6 },
+ { 0x2CC9, 0x2CC8 },
+ { 0x2CCB, 0x2CCA },
+ { 0x2CCD, 0x2CCC },
+ { 0x2CCF, 0x2CCE },
+ { 0x2CD1, 0x2CD0 },
+ { 0x2CD3, 0x2CD2 },
+ { 0x2CD5, 0x2CD4 },
+ { 0x2CD7, 0x2CD6 },
+ { 0x2CD9, 0x2CD8 },
+ { 0x2CDB, 0x2CDA },
+ { 0x2CDD, 0x2CDC },
+ { 0x2CDF, 0x2CDE },
+ { 0x2CE1, 0x2CE0 },
+ { 0x2CE3, 0x2CE2 },
+ { 0x2D00, 0x10A0 },
+ { 0x2D01, 0x10A1 },
+ { 0x2D02, 0x10A2 },
+ { 0x2D03, 0x10A3 },
+ { 0x2D04, 0x10A4 },
+ { 0x2D05, 0x10A5 },
+ { 0x2D06, 0x10A6 },
+ { 0x2D07, 0x10A7 },
+ { 0x2D08, 0x10A8 },
+ { 0x2D09, 0x10A9 },
+ { 0x2D0A, 0x10AA },
+ { 0x2D0B, 0x10AB },
+ { 0x2D0C, 0x10AC },
+ { 0x2D0D, 0x10AD },
+ { 0x2D0E, 0x10AE },
+ { 0x2D0F, 0x10AF },
+ { 0x2D10, 0x10B0 },
+ { 0x2D11, 0x10B1 },
+ { 0x2D12, 0x10B2 },
+ { 0x2D13, 0x10B3 },
+ { 0x2D14, 0x10B4 },
+ { 0x2D15, 0x10B5 },
+ { 0x2D16, 0x10B6 },
+ { 0x2D17, 0x10B7 },
+ { 0x2D18, 0x10B8 },
+ { 0x2D19, 0x10B9 },
+ { 0x2D1A, 0x10BA },
+ { 0x2D1B, 0x10BB },
+ { 0x2D1C, 0x10BC },
+ { 0x2D1D, 0x10BD },
+ { 0x2D1E, 0x10BE },
+ { 0x2D1F, 0x10BF },
+ { 0x2D20, 0x10C0 },
+ { 0x2D21, 0x10C1 },
+ { 0x2D22, 0x10C2 },
+ { 0x2D23, 0x10C3 },
+ { 0x2D24, 0x10C4 },
+ { 0x2D25, 0x10C5 },
+ { 0xA641, 0xA640 },
+ { 0xA643, 0xA642 },
+ { 0xA645, 0xA644 },
+ { 0xA647, 0xA646 },
+ { 0xA649, 0xA648 },
+ { 0xA64B, 0xA64A },
+ { 0xA64D, 0xA64C },
+ { 0xA64F, 0xA64E },
+ { 0xA651, 0xA650 },
+ { 0xA653, 0xA652 },
+ { 0xA655, 0xA654 },
+ { 0xA657, 0xA656 },
+ { 0xA659, 0xA658 },
+ { 0xA65B, 0xA65A },
+ { 0xA65D, 0xA65C },
+ { 0xA65F, 0xA65E },
+ { 0xA663, 0xA662 },
+ { 0xA665, 0xA664 },
+ { 0xA667, 0xA666 },
+ { 0xA669, 0xA668 },
+ { 0xA66B, 0xA66A },
+ { 0xA66D, 0xA66C },
+ { 0xA681, 0xA680 },
+ { 0xA683, 0xA682 },
+ { 0xA685, 0xA684 },
+ { 0xA687, 0xA686 },
+ { 0xA689, 0xA688 },
+ { 0xA68B, 0xA68A },
+ { 0xA68D, 0xA68C },
+ { 0xA68F, 0xA68E },
+ { 0xA691, 0xA690 },
+ { 0xA693, 0xA692 },
+ { 0xA695, 0xA694 },
+ { 0xA697, 0xA696 },
+ { 0xA723, 0xA722 },
+ { 0xA725, 0xA724 },
+ { 0xA727, 0xA726 },
+ { 0xA729, 0xA728 },
+ { 0xA72B, 0xA72A },
+ { 0xA72D, 0xA72C },
+ { 0xA72F, 0xA72E },
+ { 0xA733, 0xA732 },
+ { 0xA735, 0xA734 },
+ { 0xA737, 0xA736 },
+ { 0xA739, 0xA738 },
+ { 0xA73B, 0xA73A },
+ { 0xA73D, 0xA73C },
+ { 0xA73F, 0xA73E },
+ { 0xA741, 0xA740 },
+ { 0xA743, 0xA742 },
+ { 0xA745, 0xA744 },
+ { 0xA747, 0xA746 },
+ { 0xA749, 0xA748 },
+ { 0xA74B, 0xA74A },
+ { 0xA74D, 0xA74C },
+ { 0xA74F, 0xA74E },
+ { 0xA751, 0xA750 },
+ { 0xA753, 0xA752 },
+ { 0xA755, 0xA754 },
+ { 0xA757, 0xA756 },
+ { 0xA759, 0xA758 },
+ { 0xA75B, 0xA75A },
+ { 0xA75D, 0xA75C },
+ { 0xA75F, 0xA75E },
+ { 0xA761, 0xA760 },
+ { 0xA763, 0xA762 },
+ { 0xA765, 0xA764 },
+ { 0xA767, 0xA766 },
+ { 0xA769, 0xA768 },
+ { 0xA76B, 0xA76A },
+ { 0xA76D, 0xA76C },
+ { 0xA76F, 0xA76E },
+ { 0xA77A, 0xA779 },
+ { 0xA77C, 0xA77B },
+ { 0xA77F, 0xA77E },
+ { 0xA781, 0xA780 },
+ { 0xA783, 0xA782 },
+ { 0xA785, 0xA784 },
+ { 0xA787, 0xA786 },
+ { 0xA78C, 0xA78B },
+ { 0xFF41, 0xFF21 },
+ { 0xFF42, 0xFF22 },
+ { 0xFF43, 0xFF23 },
+ { 0xFF44, 0xFF24 },
+ { 0xFF45, 0xFF25 },
+ { 0xFF46, 0xFF26 },
+ { 0xFF47, 0xFF27 },
+ { 0xFF48, 0xFF28 },
+ { 0xFF49, 0xFF29 },
+ { 0xFF4A, 0xFF2A },
+ { 0xFF4B, 0xFF2B },
+ { 0xFF4C, 0xFF2C },
+ { 0xFF4D, 0xFF2D },
+ { 0xFF4E, 0xFF2E },
+ { 0xFF4F, 0xFF2F },
+ { 0xFF50, 0xFF30 },
+ { 0xFF51, 0xFF31 },
+ { 0xFF52, 0xFF32 },
+ { 0xFF53, 0xFF33 },
+ { 0xFF54, 0xFF34 },
+ { 0xFF55, 0xFF35 },
+ { 0xFF56, 0xFF36 },
+ { 0xFF57, 0xFF37 },
+ { 0xFF58, 0xFF38 },
+ { 0xFF59, 0xFF39 },
+ { 0xFF5A, 0xFF3A },
+ { 0x10428, 0x10400 },
+ { 0x10429, 0x10401 },
+ { 0x1042A, 0x10402 },
+ { 0x1042B, 0x10403 },
+ { 0x1042C, 0x10404 },
+ { 0x1042D, 0x10405 },
+ { 0x1042E, 0x10406 },
+ { 0x1042F, 0x10407 },
+ { 0x10430, 0x10408 },
+ { 0x10431, 0x10409 },
+ { 0x10432, 0x1040A },
+ { 0x10433, 0x1040B },
+ { 0x10434, 0x1040C },
+ { 0x10435, 0x1040D },
+ { 0x10436, 0x1040E },
+ { 0x10437, 0x1040F },
+ { 0x10438, 0x10410 },
+ { 0x10439, 0x10411 },
+ { 0x1043A, 0x10412 },
+ { 0x1043B, 0x10413 },
+ { 0x1043C, 0x10414 },
+ { 0x1043D, 0x10415 },
+ { 0x1043E, 0x10416 },
+ { 0x1043F, 0x10417 },
+ { 0x10440, 0x10418 },
+ { 0x10441, 0x10419 },
+ { 0x10442, 0x1041A },
+ { 0x10443, 0x1041B },
+ { 0x10444, 0x1041C },
+ { 0x10445, 0x1041D },
+ { 0x10446, 0x1041E },
+ { 0x10447, 0x1041F },
+ { 0x10448, 0x10420 },
+ { 0x10449, 0x10421 },
+ { 0x1044A, 0x10422 },
+ { 0x1044B, 0x10423 },
+ { 0x1044C, 0x10424 },
+ { 0x1044D, 0x10425 },
+ { 0x1044E, 0x10426 },
+ { 0x1044F, 0x10427 }
+
+#define MAP(c) uc_toupper (c)
+#include "test-mapping-part2.h"
diff --git a/tests/unicase/test-ulc-casecmp.c b/tests/unicase/test-ulc-casecmp.c
new file mode 100644
index 00000000..5450ef31
--- /dev/null
+++ b/tests/unicase/test-ulc-casecmp.c
@@ -0,0 +1,408 @@
+/* Test of case and normalization insensitive comparison of strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT char
+#include "test-casecmp.h"
+#undef UNIT
+
+static void
+test_iso_8859_1 (int (*my_casecmp) (const char *, size_t, const char *, size_t, const char *, uninorm_t, int *))
+{
+ {
+ static const char input1[] = { 'H', 0xF6, 'h', 'l', 'e' };
+ static const char input2[] = { 'H', 0xD6, 'h', 'L', 'e' };
+ static const char input3[] = { 'H', 0xF6, 'h', 'l', 'e', 'n' };
+ static const char input4[] = { 'H', 0xD6, 'h', 'L', 'e', 'n' };
+ static const char input5[] = { 'H', 'u', 'r', 'z' };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input1, SIZEOF (input1), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input3, SIZEOF (input3), input4, SIZEOF (input4), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input4, SIZEOF (input4), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input4, SIZEOF (input4), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input5, SIZEOF (input5), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input5, SIZEOF (input5), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+ }
+
+ /* Uppercasing can increase the number of Unicode characters. */
+ { /* "heiß" */
+ static const char input1[] = { 0x68, 0x65, 0x69, 0xDF };
+ static const char input2[] = { 0x68, 0x65, 0x69, 0x73, 0x73 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+}
+
+static void
+test_utf_8 (int (*my_casecmp) (const char *, size_t, const char *, size_t, const char *, uninorm_t, int *))
+{
+ /* Normalization effects. */
+ {
+ static const char input1[] = { 'H', 0xC3, 0xB6, 'h', 'l', 'e' };
+ static const char input2[] = { 'H', 'O', 0xCC, 0x88, 'h', 'L', 'e' };
+ static const char input3[] = { 'H', 0xC3, 0xB6, 'h', 'l', 'e', 'n' };
+ static const char input4[] = { 'H', 'O', 0xCC, 0x88, 'h', 'L', 'e', 'n' };
+ static const char input5[] = { 'H', 'u', 'r', 'z' };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input1, SIZEOF (input1), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input3, SIZEOF (input3), input4, SIZEOF (input4), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input4, SIZEOF (input4), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input4, SIZEOF (input4), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input5, SIZEOF (input5), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input5, SIZEOF (input5), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+ }
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const char input1[] = { 0xC3, 0x84 };
+ static const char input2[] = { 0x41, 0xCC, 0x88 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const char input1[] = { 0xC7, 0x9E };
+ static const char input2[] = { 0x41, 0xCC, 0x88, 0xCC, 0x84 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const char input1[] = { 0xE1, 0xBF, 0x81 };
+ static const char input2[] = { 0xC2, 0xA8, 0xCD, 0x82 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* HANGUL SYLLABLE GEUL */
+ static const char input1[] = { 0xEA, 0xB8, 0x80 };
+ static const char input2[] = { 0xEA, 0xB7, 0xB8, 0xE1, 0x86, 0xAF };
+ static const char input3[] = { 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3, 0xE1, 0x86, 0xAF };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* HANGUL SYLLABLE GEU */
+ static const char input1[] = { 0xEA, 0xB7, 0xB8 };
+ static const char input2[] = { 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Simple string. */
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const char input1[] =
+ { 'G', 'r', 0xC3, 0xBC, 0xC3, 0x9F, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0xD0, 0x97, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1, 0x81,
+ 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5,
+ '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1, 's', 'q', 'r', 't', '(',
+ 'b', 0xC2, 0xB2, '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')',
+ ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9E, ',',
+ 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C, 0xEA, 0xB8, 0x80, '\n'
+ };
+ static const char input2[] =
+ { 'g', 'r', 0xC3, 0xBC, 0x73, 0x73, ' ', 'g', 'o', 't', 't', '.', ' ',
+ 0xD0, 0xB7, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1, 0x81,
+ 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5,
+ '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1, 's', 'q', 'r', 't', '(',
+ 'b', 0xC2, 0xB2, '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')',
+ ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9E, ',',
+ 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C, 0xEA, 0xB8, 0x80, '\n'
+ };
+ static const char input3[] =
+ { 'G', 'R', 0xC3, 0x9C, 0x53, 0x53, ' ', 'G', 'O', 'T', 'T', '.', ' ',
+ 0xD0, 0x97, 0xD0, 0x94, 0xD0, 0xA0, 0xD0, 0x90, 0xD0, 0x92, 0xD0, 0xA1,
+ 0xD0, 0xA2, 0xD0, 0x92, 0xD0, 0xA3, 0xD0, 0x99, 0xD0, 0xA2, 0xD0, 0x95,
+ '!', ' ', 'X', '=', '(', '-', 'B', 0xC2, 0xB1, 'S', 'Q', 'R', 'T', '(',
+ 'B', 0xC2, 0xB2, '-', '4', 'A', 'C', ')', ')', '/', '(', '2', 'A', ')',
+ ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9E, ',',
+ 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C, 0xEA, 0xB8, 0x80, '\n'
+ };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Case mapping can increase the number of Unicode characters. */
+ { /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */
+ static const char input1[] = { 0xC5, 0x89 };
+ static const char input2[] = { 0xCA, 0xBC, 0x6E };
+ static const char input3[] = { 0xCA, 0xBC, 0x4E };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+ static const char input1[] = { 0xCE, 0x90 };
+ static const char input2[] = { 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Turkish letters i İ ı I */
+ { /* LATIN CAPITAL LETTER I */
+ static const char input[] = { 0x49 };
+ static const char casefolded[] = { 0x69 };
+ static const char casefolded_tr[] = { 0xC4, 0xB1 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_tr, SIZEOF (casefolded_tr), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN SMALL LETTER I */
+ static const char input[] = { 0x69 };
+ static const char casefolded[] = { 0x49 };
+ static const char casefolded_tr[] = { 0xC4, 0xB0 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_tr, SIZEOF (casefolded_tr), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
+ static const char input[] = { 0xC4, 0xB0 };
+ static const char casefolded[] = { 0x69, 0xCC, 0x87 };
+ static const char casefolded_tr[] = { 0x69 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_tr, SIZEOF (casefolded_tr), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN SMALL LETTER DOTLESS I */
+ static const char input[] = { 0xC4, 0xB1 };
+ static const char casefolded[] = { 0x49 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 1);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* "topkapı" */
+ static const char input[] =
+ { 0x54, 0x4F, 0x50, 0x4B, 0x41, 0x50, 0x49 };
+ static const char casefolded[] =
+ { 0x74, 0x6F, 0x70, 0x6B, 0x61, 0x70, 0xC4, 0xB1 };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), "tr", NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Uppercasing can increase the number of Unicode characters. */
+ { /* "heiß" */
+ static const char input1[] = { 0x68, 0x65, 0x69, 0xC3, 0x9F };
+ static const char input2[] = { 0x68, 0x65, 0x69, 0x73, 0x73 };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Case mappings for some characters can depend on the surrounding characters. */
+ { /* "περισσότερες πληροφορίες" */
+ static const char input1[] =
+ {
+ 0xCF, 0x80, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB9, 0xCF, 0x83, 0xCF, 0x83,
+ 0xCF, 0x8C, 0xCF, 0x84, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB5, 0xCF, 0x82,
+ ' ', 0xCF, 0x80, 0xCE, 0xBB, 0xCE, 0xB7, 0xCF, 0x81, 0xCE, 0xBF,
+ 0xCF, 0x86, 0xCE, 0xBF, 0xCF, 0x81, 0xCE, 0xAF, 0xCE, 0xB5, 0xCF, 0x82
+ };
+ static const char input2[] =
+ {
+ 0xCF, 0x80, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB9, 0xCF, 0x83, 0xCF, 0x83,
+ 0xCF, 0x8C, 0xCF, 0x84, 0xCE, 0xB5, 0xCF, 0x81, 0xCE, 0xB5, 0xCF, 0x83,
+ ' ', 0xCF, 0x80, 0xCE, 0xBB, 0xCE, 0xB7, 0xCF, 0x81, 0xCE, 0xBF,
+ 0xCF, 0x86, 0xCE, 0xBF, 0xCF, 0x81, 0xCE, 0xAF, 0xCE, 0xB5, 0xCF, 0x83
+ };
+ static const char input3[] =
+ {
+ 0xCE, 0xA0, 0xCE, 0x95, 0xCE, 0xA1, 0xCE, 0x99, 0xCE, 0xA3, 0xCE, 0xA3,
+ 0xCE, 0x8C, 0xCE, 0xA4, 0xCE, 0x95, 0xCE, 0xA1, 0xCE, 0x95, 0xCE, 0xA3,
+ ' ', 0xCE, 0xA0, 0xCE, 0x9B, 0xCE, 0x97, 0xCE, 0xA1, 0xCE, 0x9F,
+ 0xCE, 0xA6, 0xCE, 0x9F, 0xCE, 0xA1, 0xCE, 0x8A, 0xCE, 0x95, 0xCE, 0xA3
+ };
+ int cmp;
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input2, SIZEOF (input2), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Case mapping can require subsequent normalization. */
+ { /* LATIN SMALL LETTER J WITH CARON, COMBINING DOT BELOW */
+ static const char input[] = { 0xC7, 0xB0, 0xCC, 0xA3 };
+ static const char casefolded[] = { 0x6A, 0xCC, 0x8C, 0xCC, 0xA3 };
+ static const char casefolded_decomposed[] = { 0x6A, 0xCC, 0xA3, 0xCC, 0x8C };
+ int cmp;
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_decomposed, SIZEOF (casefolded_decomposed), NULL, NULL, &cmp) == 0);
+ ASSERT (cmp != 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded, SIZEOF (casefolded), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_casecmp (input, SIZEOF (input), casefolded_decomposed, SIZEOF (casefolded_decomposed), NULL, UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+}
+
+int
+main (int argc, char *argv[])
+{
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ test_ascii (ulc_casecmp, UNINORM_NFD);
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '1':
+ /* Locale encoding is ISO-8859-1 or ISO-8859-15. */
+ test_iso_8859_1 (ulc_casecmp);
+ return 0;
+
+ case '2':
+ /* Locale encoding is UTF-8. */
+ test_utf_8 (ulc_casecmp);
+ return 0;
+ }
+
+ return 1;
+}
diff --git a/tests/unicase/test-ulc-casecmp1.sh b/tests/unicase/test-ulc-casecmp1.sh
new file mode 100755
index 00000000..7be2cca1
--- /dev/null
+++ b/tests/unicase/test-ulc-casecmp1.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: ${LOCALE_FR=fr_FR}
+if test $LOCALE_FR = none; then
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no traditional french locale is installed"
+ else
+ echo "Skipping test: no traditional french locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$LOCALE_FR \
+./test-ulc-casecmp${EXEEXT} 1
diff --git a/tests/unicase/test-ulc-casecmp2.sh b/tests/unicase/test-ulc-casecmp2.sh
new file mode 100755
index 00000000..a7f06e88
--- /dev/null
+++ b/tests/unicase/test-ulc-casecmp2.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Test whether a specific UTF-8 locale is installed.
+: ${LOCALE_FR_UTF8=fr_FR.UTF-8}
+if test $LOCALE_FR_UTF8 = none; then
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no french Unicode locale is installed"
+ else
+ echo "Skipping test: no french Unicode locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$LOCALE_FR_UTF8 \
+./test-ulc-casecmp${EXEEXT} 2
diff --git a/tests/unicase/test-ulc-casecoll.c b/tests/unicase/test-ulc-casecoll.c
new file mode 100644
index 00000000..a0875f44
--- /dev/null
+++ b/tests/unicase/test-ulc-casecoll.c
@@ -0,0 +1,59 @@
+/* Test of locale dependent, case and normalization insensitive comparison of
+ strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "unicase.h"
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "uninorm.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define UNIT char
+#include "test-casecmp.h"
+#undef UNIT
+
+int
+main ()
+{
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* In the "C" locale, strcoll is equivalent to strcmp, therefore u8_casecoll
+ on ASCII strings should behave like strcasecmp. */
+ test_ascii (ulc_casecoll, UNINORM_NFC);
+
+ return 0;
+}
diff --git a/tests/unicase/test-ulc-casecoll1.sh b/tests/unicase/test-ulc-casecoll1.sh
new file mode 100755
index 00000000..3760ed82
--- /dev/null
+++ b/tests/unicase/test-ulc-casecoll1.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: ${LOCALE_FR=fr_FR}
+if test $LOCALE_FR = none; then
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no traditional french locale is installed"
+ else
+ echo "Skipping test: no traditional french locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$LOCALE_FR \
+./test-ulc-casecoll${EXEEXT}
diff --git a/tests/unicase/test-ulc-casecoll2.sh b/tests/unicase/test-ulc-casecoll2.sh
new file mode 100755
index 00000000..b179a4c6
--- /dev/null
+++ b/tests/unicase/test-ulc-casecoll2.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Test whether a specific UTF-8 locale is installed.
+: ${LOCALE_FR_UTF8=fr_FR.UTF-8}
+if test $LOCALE_FR_UTF8 = none; then
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no french Unicode locale is installed"
+ else
+ echo "Skipping test: no french Unicode locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$LOCALE_FR_UTF8 \
+./test-ulc-casecoll${EXEEXT}
diff --git a/tests/uniconv/test-u16-conv-from-enc.c b/tests/uniconv/test-u16-conv-from-enc.c
new file mode 100644
index 00000000..ac7617b3
--- /dev/null
+++ b/tests/uniconv/test-u16-conv-from-enc.c
@@ -0,0 +1,232 @@
+/* Test of conversion to UTF-16 from legacy encodings.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniconv.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+/* Magic number for detecting bounds violations. */
+#define MAGIC 0x1983EFF1
+
+static size_t *
+new_offsets (size_t n)
+{
+ size_t *offsets = (size_t *) malloc ((n + 1) * sizeof (size_t));
+ offsets[n] = MAGIC;
+ return offsets;
+}
+
+int
+main ()
+{
+ static enum iconv_ilseq_handler handlers[] =
+ { iconveh_error, iconveh_question_mark, iconveh_escape_sequence };
+ size_t h;
+ size_t o;
+ size_t i;
+
+#if HAVE_ICONV
+ /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1,
+ ISO-8859-2, and UTF-8. */
+
+ /* Test conversion from ISO-8859-1 to UTF-16 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const uint16_t expected[] = /* Ärger mit bösen Bübchen ohne Augenmaß */
+ {
+ 0xC4, 'r', 'g', 'e', 'r', ' ', 'm', 'i', 't', ' ', 'b', 0xF6, 's',
+ 'e', 'n', ' ', 'B', 0xFC, 'b', 'c', 'h', 'e', 'n', ' ', 'o', 'h',
+ 'n', 'e', ' ', 'A', 'u', 'g', 'e', 'n', 'm', 'a', 0xDF
+ };
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ size_t length;
+ uint16_t *result = u16_conv_from_encoding ("ISO-8859-1", handler,
+ input, strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == SIZEOF (expected));
+ ASSERT (u16_cmp (result, expected, SIZEOF (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 37; i++)
+ ASSERT (offsets[i] == i);
+ ASSERT (offsets[37] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* Test conversion from ISO-8859-2 to UTF-16 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */
+ static const uint16_t expected[] =
+ {
+ 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w',
+ 's', 'k', 'i'
+ };
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ size_t length;
+ uint16_t *result = u16_conv_from_encoding ("ISO-8859-2", handler,
+ input, strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == SIZEOF (expected));
+ ASSERT (u16_cmp (result, expected, SIZEOF (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 16; i++)
+ ASSERT (offsets[i] == i);
+ ASSERT (offsets[16] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
+# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__)
+ /* Test conversions from autodetect_jp to UTF-16. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\244\263\244\363\244\313\244\301\244\317"; /* こんにちは in EUC-JP */
+ static const uint16_t expected[] = /* こんにちは */
+ {
+ 0x3053, 0x3093, 0x306B, 0x3061, 0x306F
+ };
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ size_t length;
+ uint16_t *result = u16_conv_from_encoding ("autodetect_jp", handler,
+ input, strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == SIZEOF (expected));
+ ASSERT (u16_cmp (result, expected, SIZEOF (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 10; i++)
+ ASSERT (offsets[i] == ((i % 2) == 0 ? i / 2 : (size_t)(-1)));
+ ASSERT (offsets[10] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\202\261\202\361\202\311\202\277\202\315"; /* こんにちは in Shift_JIS */
+ static const uint16_t expected[] = /* こんにちは */
+ {
+ 0x3053, 0x3093, 0x306B, 0x3061, 0x306F
+ };
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ size_t length;
+ uint16_t *result = u16_conv_from_encoding ("autodetect_jp", handler,
+ input, strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == SIZEOF (expected));
+ ASSERT (u16_cmp (result, expected, SIZEOF (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 10; i++)
+ ASSERT (offsets[i] == ((i % 2) == 0 ? i / 2 : (size_t)(-1)));
+ ASSERT (offsets[10] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\033$B$3$s$K$A$O\033(B"; /* こんにちは in ISO-2022-JP-2 */
+ static const uint16_t expected[] = /* こんにちは */
+ {
+ 0x3053, 0x3093, 0x306B, 0x3061, 0x306F
+ };
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ size_t length;
+ uint16_t *result = u16_conv_from_encoding ("autodetect_jp", handler,
+ input, strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == SIZEOF (expected));
+ ASSERT (u16_cmp (result, expected, SIZEOF (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 16; i++)
+ ASSERT (offsets[i] == (i == 0 ? 0 :
+ i == 5 ? 1 :
+ i == 7 ? 2 :
+ i == 9 ? 3 :
+ i == 11 ? 4 :
+ i == 13 ? 5 :
+ (size_t)(-1)));
+ ASSERT (offsets[16] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+# endif
+
+#endif
+
+ return 0;
+}
diff --git a/tests/uniconv/test-u16-conv-to-enc.c b/tests/uniconv/test-u16-conv-to-enc.c
new file mode 100644
index 00000000..a2dc3c68
--- /dev/null
+++ b/tests/uniconv/test-u16-conv-to-enc.c
@@ -0,0 +1,188 @@
+/* Test of conversion from UTF-16 to legacy encodings.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniconv.h"
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+/* Magic number for detecting bounds violations. */
+#define MAGIC 0x1983EFF1
+
+static size_t *
+new_offsets (size_t n)
+{
+ size_t *offsets = (size_t *) malloc ((n + 1) * sizeof (size_t));
+ offsets[n] = MAGIC;
+ return offsets;
+}
+
+int
+main ()
+{
+ static enum iconv_ilseq_handler handlers[] =
+ { iconveh_error, iconveh_question_mark, iconveh_escape_sequence };
+ size_t h;
+ size_t o;
+ size_t i;
+
+#if HAVE_ICONV
+ /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1,
+ ISO-8859-2, and UTF-8. */
+
+ /* Test conversion from UTF-16 to ISO-8859-1 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const uint16_t input[] = /* Ärger mit bösen Bübchen ohne Augenmaß */
+ {
+ 0xC4, 'r', 'g', 'e', 'r', ' ', 'm', 'i', 't', ' ', 'b', 0xF6, 's',
+ 'e', 'n', ' ', 'B', 0xFC, 'b', 'c', 'h', 'e', 'n', ' ', 'o', 'h',
+ 'n', 'e', ' ', 'A', 'u', 'g', 'e', 'n', 'm', 'a', 0xDF
+ };
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (SIZEOF (input)) : NULL);
+ size_t length;
+ char *result = u16_conv_to_encoding ("ISO-8859-1", handler,
+ input, SIZEOF (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == strlen (expected));
+ ASSERT (memcmp (result, expected, length) == 0);
+ if (o)
+ {
+ for (i = 0; i < 37; i++)
+ ASSERT (offsets[i] == i);
+ ASSERT (offsets[37] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* Test conversion from UTF-16 to ISO-8859-1 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const uint16_t input[] = /* Rafał Maszkowski */
+ {
+ 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w',
+ 's', 'k', 'i'
+ };
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (SIZEOF (input)) : NULL);
+ size_t length = 0xdead;
+ char *result = u16_conv_to_encoding ("ISO-8859-1", handler,
+ input, SIZEOF (input),
+ offsets,
+ NULL, &length);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (result == NULL);
+ ASSERT (errno == EILSEQ);
+ ASSERT (length == 0xdead);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Rafa? Maszkowski";
+ static const char expected_translit[] = "Rafal Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (length == strlen (expected));
+ ASSERT (memcmp (result, expected, length) == 0
+ || memcmp (result, expected_translit, length) == 0);
+ if (o)
+ {
+ for (i = 0; i < 16; i++)
+ ASSERT (offsets[i] == i);
+ ASSERT (offsets[16] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Rafa\\u0142 Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (length == strlen (expected));
+ ASSERT (memcmp (result, expected, length) == 0);
+ if (o)
+ {
+ for (i = 0; i < 16; i++)
+ ASSERT (offsets[i] == (i < 5 ? i : i + 5));
+ ASSERT (offsets[16] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ }
+ }
+ }
+
+ /* Test conversion from UTF-16 to ISO-8859-1 with EINVAL. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const uint16_t input[] = { 0xD845 };
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (SIZEOF (input)) : NULL);
+ size_t length;
+ char *result = u16_conv_to_encoding ("ISO-8859-1", handler,
+ input, SIZEOF (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == strlen (""));
+ if (o)
+ {
+ ASSERT (offsets[0] == 0);
+ ASSERT (offsets[1] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+#endif
+
+ return 0;
+}
diff --git a/tests/uniconv/test-u16-strconv-from-enc.c b/tests/uniconv/test-u16-strconv-from-enc.c
new file mode 100644
index 00000000..f2f173a8
--- /dev/null
+++ b/tests/uniconv/test-u16-strconv-from-enc.c
@@ -0,0 +1,132 @@
+/* Test of conversion to UTF-16 from legacy encodings.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniconv.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ static enum iconv_ilseq_handler handlers[] =
+ { iconveh_error, iconveh_question_mark, iconveh_escape_sequence };
+ size_t h;
+
+#if HAVE_ICONV
+ /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1,
+ ISO-8859-2, and UTF-8. */
+
+ /* Test conversion from ISO-8859-1 to UTF-16 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const uint16_t expected[] = /* Ärger mit bösen Bübchen ohne Augenmaß */
+ {
+ 0xC4, 'r', 'g', 'e', 'r', ' ', 'm', 'i', 't', ' ', 'b', 0xF6, 's',
+ 'e', 'n', ' ', 'B', 0xFC, 'b', 'c', 'h', 'e', 'n', ' ', 'o', 'h',
+ 'n', 'e', ' ', 'A', 'u', 'g', 'e', 'n', 'm', 'a', 0xDF, 0
+ };
+ uint16_t *result = u16_strconv_from_encoding (input, "ISO-8859-1", handler);
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test conversion from ISO-8859-2 to UTF-16 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */
+ static const uint16_t expected[] =
+ {
+ 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w',
+ 's', 'k', 'i', 0
+ };
+ uint16_t *result = u16_strconv_from_encoding (input, "ISO-8859-2", handler);
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
+# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__)
+ /* Test conversions from autodetect_jp to UTF-16. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\244\263\244\363\244\313\244\301\244\317"; /* こんにちは in EUC-JP */
+ static const uint16_t expected[] = /* こんにちは */
+ {
+ 0x3053, 0x3093, 0x306B, 0x3061, 0x306F, 0
+ };
+ uint16_t *result = u16_strconv_from_encoding (input, "autodetect_jp", handler);
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\202\261\202\361\202\311\202\277\202\315"; /* こんにちは in Shift_JIS */
+ static const uint16_t expected[] = /* こんにちは */
+ {
+ 0x3053, 0x3093, 0x306B, 0x3061, 0x306F, 0
+ };
+ uint16_t *result = u16_strconv_from_encoding (input, "autodetect_jp", handler);
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\033$B$3$s$K$A$O\033(B"; /* こんにちは in ISO-2022-JP-2 */
+ static const uint16_t expected[] = /* こんにちは */
+ {
+ 0x3053, 0x3093, 0x306B, 0x3061, 0x306F, 0
+ };
+ uint16_t *result = u16_strconv_from_encoding (input, "autodetect_jp", handler);
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+# endif
+
+#endif
+
+ return 0;
+}
diff --git a/tests/uniconv/test-u16-strconv-to-enc.c b/tests/uniconv/test-u16-strconv-to-enc.c
new file mode 100644
index 00000000..95a72065
--- /dev/null
+++ b/tests/uniconv/test-u16-strconv-to-enc.c
@@ -0,0 +1,121 @@
+/* Test of conversion from UTF-16 to legacy encodings.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniconv.h"
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ static enum iconv_ilseq_handler handlers[] =
+ { iconveh_error, iconveh_question_mark, iconveh_escape_sequence };
+ size_t h;
+
+#if HAVE_ICONV
+ /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1,
+ ISO-8859-2, and UTF-8. */
+
+ /* Test conversion from UTF-16 to ISO-8859-1 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const uint16_t input[] = /* Ärger mit bösen Bübchen ohne Augenmaß */
+ {
+ 0xC4, 'r', 'g', 'e', 'r', ' ', 'm', 'i', 't', ' ', 'b', 0xF6, 's',
+ 'e', 'n', ' ', 'B', 0xFC, 'b', 'c', 'h', 'e', 'n', ' ', 'o', 'h',
+ 'n', 'e', ' ', 'A', 'u', 'g', 'e', 'n', 'm', 'a', 0xDF, 0
+ };
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ char *result = u16_strconv_to_encoding (input, "ISO-8859-1", handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test conversion from UTF-16 to ISO-8859-1 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const uint16_t input[] = /* Rafał Maszkowski */
+ {
+ 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w',
+ 's', 'k', 'i', 0
+ };
+ char *result = u16_strconv_to_encoding (input, "ISO-8859-1", handler);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (result == NULL && errno == EILSEQ);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Rafa? Maszkowski";
+ static const char expected_translit[] = "Rafal Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0
+ || strcmp (result, expected_translit) == 0);
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Rafa\\u0142 Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+ break;
+ }
+ }
+
+# if 0
+ /* Test conversion from UTF-16 to ISO-8859-1 with EINVAL. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const uint16_t input[] = { 0xD845, 0 };
+ char *result = u16_strconv_to_encoding (input, "ISO-8859-1", handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "") == 0);
+ free (result);
+ }
+# endif
+
+#endif
+
+ return 0;
+}
diff --git a/tests/uniconv/test-u32-conv-from-enc.c b/tests/uniconv/test-u32-conv-from-enc.c
new file mode 100644
index 00000000..8f709f18
--- /dev/null
+++ b/tests/uniconv/test-u32-conv-from-enc.c
@@ -0,0 +1,232 @@
+/* Test of conversion to UTF-32 from legacy encodings.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniconv.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+/* Magic number for detecting bounds violations. */
+#define MAGIC 0x1983EFF1
+
+static size_t *
+new_offsets (size_t n)
+{
+ size_t *offsets = (size_t *) malloc ((n + 1) * sizeof (size_t));
+ offsets[n] = MAGIC;
+ return offsets;
+}
+
+int
+main ()
+{
+ static enum iconv_ilseq_handler handlers[] =
+ { iconveh_error, iconveh_question_mark, iconveh_escape_sequence };
+ size_t h;
+ size_t o;
+ size_t i;
+
+#if HAVE_ICONV
+ /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1,
+ ISO-8859-2, and UTF-8. */
+
+ /* Test conversion from ISO-8859-1 to UTF-16 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const uint32_t expected[] = /* Ärger mit bösen Bübchen ohne Augenmaß */
+ {
+ 0xC4, 'r', 'g', 'e', 'r', ' ', 'm', 'i', 't', ' ', 'b', 0xF6, 's',
+ 'e', 'n', ' ', 'B', 0xFC, 'b', 'c', 'h', 'e', 'n', ' ', 'o', 'h',
+ 'n', 'e', ' ', 'A', 'u', 'g', 'e', 'n', 'm', 'a', 0xDF
+ };
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ size_t length;
+ uint32_t *result = u32_conv_from_encoding ("ISO-8859-1", handler,
+ input, strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == SIZEOF (expected));
+ ASSERT (u32_cmp (result, expected, SIZEOF (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 37; i++)
+ ASSERT (offsets[i] == i);
+ ASSERT (offsets[37] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* Test conversion from ISO-8859-2 to UTF-16 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */
+ static const uint32_t expected[] =
+ {
+ 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w',
+ 's', 'k', 'i'
+ };
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ size_t length;
+ uint32_t *result = u32_conv_from_encoding ("ISO-8859-2", handler,
+ input, strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == SIZEOF (expected));
+ ASSERT (u32_cmp (result, expected, SIZEOF (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 16; i++)
+ ASSERT (offsets[i] == i);
+ ASSERT (offsets[16] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
+# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__)
+ /* Test conversions from autodetect_jp to UTF-16. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\244\263\244\363\244\313\244\301\244\317"; /* こんにちは in EUC-JP */
+ static const uint32_t expected[] = /* こんにちは */
+ {
+ 0x3053, 0x3093, 0x306B, 0x3061, 0x306F
+ };
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ size_t length;
+ uint32_t *result = u32_conv_from_encoding ("autodetect_jp", handler,
+ input, strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == SIZEOF (expected));
+ ASSERT (u32_cmp (result, expected, SIZEOF (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 10; i++)
+ ASSERT (offsets[i] == ((i % 2) == 0 ? i / 2 : (size_t)(-1)));
+ ASSERT (offsets[10] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\202\261\202\361\202\311\202\277\202\315"; /* こんにちは in Shift_JIS */
+ static const uint32_t expected[] = /* こんにちは */
+ {
+ 0x3053, 0x3093, 0x306B, 0x3061, 0x306F
+ };
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ size_t length;
+ uint32_t *result = u32_conv_from_encoding ("autodetect_jp", handler,
+ input, strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == SIZEOF (expected));
+ ASSERT (u32_cmp (result, expected, SIZEOF (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 10; i++)
+ ASSERT (offsets[i] == ((i % 2) == 0 ? i / 2 : (size_t)(-1)));
+ ASSERT (offsets[10] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\033$B$3$s$K$A$O\033(B"; /* こんにちは in ISO-2022-JP-2 */
+ static const uint32_t expected[] = /* こんにちは */
+ {
+ 0x3053, 0x3093, 0x306B, 0x3061, 0x306F
+ };
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ size_t length;
+ uint32_t *result = u32_conv_from_encoding ("autodetect_jp", handler,
+ input, strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == SIZEOF (expected));
+ ASSERT (u32_cmp (result, expected, SIZEOF (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 16; i++)
+ ASSERT (offsets[i] == (i == 0 ? 0 :
+ i == 5 ? 1 :
+ i == 7 ? 2 :
+ i == 9 ? 3 :
+ i == 11 ? 4 :
+ i == 13 ? 5 :
+ (size_t)(-1)));
+ ASSERT (offsets[16] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+# endif
+
+#endif
+
+ return 0;
+}
diff --git a/tests/uniconv/test-u32-conv-to-enc.c b/tests/uniconv/test-u32-conv-to-enc.c
new file mode 100644
index 00000000..585b737c
--- /dev/null
+++ b/tests/uniconv/test-u32-conv-to-enc.c
@@ -0,0 +1,163 @@
+/* Test of conversion from UTF-32 to legacy encodings.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniconv.h"
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+/* Magic number for detecting bounds violations. */
+#define MAGIC 0x1983EFF1
+
+static size_t *
+new_offsets (size_t n)
+{
+ size_t *offsets = (size_t *) malloc ((n + 1) * sizeof (size_t));
+ offsets[n] = MAGIC;
+ return offsets;
+}
+
+int
+main ()
+{
+ static enum iconv_ilseq_handler handlers[] =
+ { iconveh_error, iconveh_question_mark, iconveh_escape_sequence };
+ size_t h;
+ size_t o;
+ size_t i;
+
+#if HAVE_ICONV
+ /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1,
+ ISO-8859-2, and UTF-8. */
+
+ /* Test conversion from UTF-32 to ISO-8859-1 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const uint32_t input[] = /* Ärger mit bösen Bübchen ohne Augenmaß */
+ {
+ 0xC4, 'r', 'g', 'e', 'r', ' ', 'm', 'i', 't', ' ', 'b', 0xF6, 's',
+ 'e', 'n', ' ', 'B', 0xFC, 'b', 'c', 'h', 'e', 'n', ' ', 'o', 'h',
+ 'n', 'e', ' ', 'A', 'u', 'g', 'e', 'n', 'm', 'a', 0xDF
+ };
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (SIZEOF (input)) : NULL);
+ size_t length;
+ char *result = u32_conv_to_encoding ("ISO-8859-1", handler,
+ input, SIZEOF (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == strlen (expected));
+ ASSERT (memcmp (result, expected, length) == 0);
+ if (o)
+ {
+ for (i = 0; i < 37; i++)
+ ASSERT (offsets[i] == i);
+ ASSERT (offsets[37] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* Test conversion from UTF-32 to ISO-8859-1 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const uint32_t input[] = /* Rafał Maszkowski */
+ {
+ 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w',
+ 's', 'k', 'i'
+ };
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (SIZEOF (input)) : NULL);
+ size_t length = 0xdead;
+ char *result = u32_conv_to_encoding ("ISO-8859-1", handler,
+ input, SIZEOF (input),
+ offsets,
+ NULL, &length);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (result == NULL);
+ ASSERT (errno == EILSEQ);
+ ASSERT (length == 0xdead);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Rafa? Maszkowski";
+ static const char expected_translit[] = "Rafal Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (length == strlen (expected));
+ ASSERT (memcmp (result, expected, length) == 0
+ || memcmp (result, expected_translit, length) == 0);
+ if (o)
+ {
+ for (i = 0; i < 16; i++)
+ ASSERT (offsets[i] == i);
+ ASSERT (offsets[16] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Rafa\\u0142 Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (length == strlen (expected));
+ ASSERT (memcmp (result, expected, length) == 0);
+ if (o)
+ {
+ for (i = 0; i < 16; i++)
+ ASSERT (offsets[i] == (i < 5 ? i : i + 5));
+ ASSERT (offsets[16] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ }
+ }
+ }
+
+#endif
+
+ return 0;
+}
diff --git a/tests/uniconv/test-u32-strconv-from-enc.c b/tests/uniconv/test-u32-strconv-from-enc.c
new file mode 100644
index 00000000..96af7385
--- /dev/null
+++ b/tests/uniconv/test-u32-strconv-from-enc.c
@@ -0,0 +1,132 @@
+/* Test of conversion to UTF-32 from legacy encodings.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniconv.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ static enum iconv_ilseq_handler handlers[] =
+ { iconveh_error, iconveh_question_mark, iconveh_escape_sequence };
+ size_t h;
+
+#if HAVE_ICONV
+ /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1,
+ ISO-8859-2, and UTF-8. */
+
+ /* Test conversion from ISO-8859-1 to UTF-16 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const uint32_t expected[] = /* Ärger mit bösen Bübchen ohne Augenmaß */
+ {
+ 0xC4, 'r', 'g', 'e', 'r', ' ', 'm', 'i', 't', ' ', 'b', 0xF6, 's',
+ 'e', 'n', ' ', 'B', 0xFC, 'b', 'c', 'h', 'e', 'n', ' ', 'o', 'h',
+ 'n', 'e', ' ', 'A', 'u', 'g', 'e', 'n', 'm', 'a', 0xDF, 0
+ };
+ uint32_t *result = u32_strconv_from_encoding (input, "ISO-8859-1", handler);
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test conversion from ISO-8859-2 to UTF-16 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */
+ static const uint32_t expected[] =
+ {
+ 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w',
+ 's', 'k', 'i', 0
+ };
+ uint32_t *result = u32_strconv_from_encoding (input, "ISO-8859-2", handler);
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
+# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__)
+ /* Test conversions from autodetect_jp to UTF-16. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\244\263\244\363\244\313\244\301\244\317"; /* こんにちは in EUC-JP */
+ static const uint32_t expected[] = /* こんにちは */
+ {
+ 0x3053, 0x3093, 0x306B, 0x3061, 0x306F, 0
+ };
+ uint32_t *result = u32_strconv_from_encoding (input, "autodetect_jp", handler);
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\202\261\202\361\202\311\202\277\202\315"; /* こんにちは in Shift_JIS */
+ static const uint32_t expected[] = /* こんにちは */
+ {
+ 0x3053, 0x3093, 0x306B, 0x3061, 0x306F, 0
+ };
+ uint32_t *result = u32_strconv_from_encoding (input, "autodetect_jp", handler);
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\033$B$3$s$K$A$O\033(B"; /* こんにちは in ISO-2022-JP-2 */
+ static const uint32_t expected[] = /* こんにちは */
+ {
+ 0x3053, 0x3093, 0x306B, 0x3061, 0x306F, 0
+ };
+ uint32_t *result = u32_strconv_from_encoding (input, "autodetect_jp", handler);
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+# endif
+
+#endif
+
+ return 0;
+}
diff --git a/tests/uniconv/test-u32-strconv-to-enc.c b/tests/uniconv/test-u32-strconv-to-enc.c
new file mode 100644
index 00000000..eef3d04d
--- /dev/null
+++ b/tests/uniconv/test-u32-strconv-to-enc.c
@@ -0,0 +1,108 @@
+/* Test of conversion from UTF-32 to legacy encodings.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniconv.h"
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ static enum iconv_ilseq_handler handlers[] =
+ { iconveh_error, iconveh_question_mark, iconveh_escape_sequence };
+ size_t h;
+
+#if HAVE_ICONV
+ /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1,
+ ISO-8859-2, and UTF-8. */
+
+ /* Test conversion from UTF-32 to ISO-8859-1 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const uint32_t input[] = /* Ärger mit bösen Bübchen ohne Augenmaß */
+ {
+ 0xC4, 'r', 'g', 'e', 'r', ' ', 'm', 'i', 't', ' ', 'b', 0xF6, 's',
+ 'e', 'n', ' ', 'B', 0xFC, 'b', 'c', 'h', 'e', 'n', ' ', 'o', 'h',
+ 'n', 'e', ' ', 'A', 'u', 'g', 'e', 'n', 'm', 'a', 0xDF, 0
+ };
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ char *result = u32_strconv_to_encoding (input, "ISO-8859-1", handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test conversion from UTF-32 to ISO-8859-1 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const uint32_t input[] = /* Rafał Maszkowski */
+ {
+ 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w',
+ 's', 'k', 'i', 0
+ };
+ char *result = u32_strconv_to_encoding (input, "ISO-8859-1", handler);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (result == NULL && errno == EILSEQ);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Rafa? Maszkowski";
+ static const char expected_translit[] = "Rafal Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0
+ || strcmp (result, expected_translit) == 0);
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Rafa\\u0142 Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+ break;
+ }
+ }
+
+#endif
+
+ return 0;
+}
diff --git a/tests/uniconv/test-u8-conv-from-enc.c b/tests/uniconv/test-u8-conv-from-enc.c
new file mode 100644
index 00000000..0768be63
--- /dev/null
+++ b/tests/uniconv/test-u8-conv-from-enc.c
@@ -0,0 +1,218 @@
+/* Test of conversion to UTF-8 from legacy encodings.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniconv.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+/* Magic number for detecting bounds violations. */
+#define MAGIC 0x1983EFF1
+
+static size_t *
+new_offsets (size_t n)
+{
+ size_t *offsets = (size_t *) malloc ((n + 1) * sizeof (size_t));
+ offsets[n] = MAGIC;
+ return offsets;
+}
+
+int
+main ()
+{
+ static enum iconv_ilseq_handler handlers[] =
+ { iconveh_error, iconveh_question_mark, iconveh_escape_sequence };
+ size_t h;
+ size_t o;
+ size_t i;
+
+#if HAVE_ICONV
+ /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1,
+ ISO-8859-2, and UTF-8. */
+
+ /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const uint8_t expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ size_t length;
+ uint8_t *result = u8_conv_from_encoding ("ISO-8859-1", handler,
+ input, strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == u8_strlen (expected));
+ ASSERT (u8_cmp (result, expected, u8_strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 37; i++)
+ ASSERT (offsets[i] == (i < 1 ? i :
+ i < 12 ? i + 1 :
+ i < 18 ? i + 2 :
+ i + 3));
+ ASSERT (offsets[37] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* Test conversion from ISO-8859-2 to UTF-8 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */
+ static const uint8_t expected[] = "Rafa\305\202 Maszkowski";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ size_t length;
+ uint8_t *result = u8_conv_from_encoding ("ISO-8859-2", handler,
+ input, strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == u8_strlen (expected));
+ ASSERT (u8_cmp (result, expected, u8_strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 16; i++)
+ ASSERT (offsets[i] == (i < 5 ? i :
+ i + 1));
+ ASSERT (offsets[16] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
+# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__)
+ /* Test conversions from autodetect_jp to UTF-8. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\244\263\244\363\244\313\244\301\244\317"; /* こんにちは in EUC-JP */
+ static const uint8_t expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ size_t length;
+ uint8_t *result = u8_conv_from_encoding ("autodetect_jp", handler,
+ input, strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == u8_strlen (expected));
+ ASSERT (u8_cmp (result, expected, u8_strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 10; i++)
+ ASSERT (offsets[i] == ((i % 2) == 0 ? (i / 2) * 3 : (size_t)(-1)));
+ ASSERT (offsets[10] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\202\261\202\361\202\311\202\277\202\315"; /* こんにちは in Shift_JIS */
+ static const uint8_t expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ size_t length;
+ uint8_t *result = u8_conv_from_encoding ("autodetect_jp", handler,
+ input, strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == u8_strlen (expected));
+ ASSERT (u8_cmp (result, expected, u8_strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 10; i++)
+ ASSERT (offsets[i] == ((i % 2) == 0 ? (i / 2) * 3 : (size_t)(-1)));
+ ASSERT (offsets[10] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\033$B$3$s$K$A$O\033(B"; /* こんにちは in ISO-2022-JP-2 */
+ static const uint8_t expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (strlen (input)) : NULL);
+ size_t length;
+ uint8_t *result = u8_conv_from_encoding ("autodetect_jp", handler,
+ input, strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == u8_strlen (expected));
+ ASSERT (u8_cmp (result, expected, u8_strlen (expected)) == 0);
+ if (o)
+ {
+ for (i = 0; i < 16; i++)
+ ASSERT (offsets[i] == (i == 0 ? 0 :
+ i == 5 ? 3 :
+ i == 7 ? 6 :
+ i == 9 ? 9 :
+ i == 11 ? 12 :
+ i == 13 ? 15 :
+ (size_t)(-1)));
+ ASSERT (offsets[16] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+# endif
+
+#endif
+
+ return 0;
+}
diff --git a/tests/uniconv/test-u8-conv-to-enc.c b/tests/uniconv/test-u8-conv-to-enc.c
new file mode 100644
index 00000000..271fb051
--- /dev/null
+++ b/tests/uniconv/test-u8-conv-to-enc.c
@@ -0,0 +1,193 @@
+/* Test of conversion from UTF-8 to legacy encodings.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniconv.h"
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+/* Magic number for detecting bounds violations. */
+#define MAGIC 0x1983EFF1
+
+static size_t *
+new_offsets (size_t n)
+{
+ size_t *offsets = (size_t *) malloc ((n + 1) * sizeof (size_t));
+ offsets[n] = MAGIC;
+ return offsets;
+}
+
+int
+main ()
+{
+ static enum iconv_ilseq_handler handlers[] =
+ { iconveh_error, iconveh_question_mark, iconveh_escape_sequence };
+ size_t h;
+ size_t o;
+ size_t i;
+
+#if HAVE_ICONV
+ /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1,
+ ISO-8859-2, and UTF-8. */
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const uint8_t input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (u8_strlen (input)) : NULL);
+ size_t length;
+ char *result = u8_conv_to_encoding ("ISO-8859-1", handler,
+ input, u8_strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == strlen (expected));
+ ASSERT (memcmp (result, expected, length) == 0);
+ if (o)
+ {
+ for (i = 0; i < 41; i++)
+ ASSERT (offsets[i] == (i < 1 ? i :
+ i == 1 ? (size_t)(-1) :
+ i < 13 ? i - 1 :
+ i == 13 ? (size_t)(-1) :
+ i < 20 ? i - 2 :
+ i == 20 ? (size_t)(-1) :
+ i < 40 ? i - 3 :
+ i == 40 ? (size_t)(-1) :
+ i - 4));
+ ASSERT (offsets[41] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const uint8_t input[] = "Rafa\305\202 Maszkowski"; /* Rafał Maszkowski */
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (u8_strlen (input)) : NULL);
+ size_t length = 0xdead;
+ char *result = u8_conv_to_encoding ("ISO-8859-1", handler,
+ input, u8_strlen (input),
+ offsets,
+ NULL, &length);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (result == NULL);
+ ASSERT (errno == EILSEQ);
+ ASSERT (length == 0xdead);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Rafa? Maszkowski";
+ static const char expected_translit[] = "Rafal Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (length == strlen (expected));
+ ASSERT (memcmp (result, expected, length) == 0
+ || memcmp (result, expected_translit, length) == 0);
+ if (o)
+ {
+ for (i = 0; i < 17; i++)
+ ASSERT (offsets[i] == (i < 5 ? i :
+ i == 5 ? (size_t)(-1) :
+ i - 1));
+ ASSERT (offsets[17] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Rafa\\u0142 Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (length == strlen (expected));
+ ASSERT (memcmp (result, expected, length) == 0);
+ if (o)
+ {
+ for (i = 0; i < 17; i++)
+ ASSERT (offsets[i] == (i < 5 ? i :
+ i == 5 ? (size_t)(-1) :
+ i + 4));
+ ASSERT (offsets[17] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ }
+ }
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const uint8_t input[] = "\342";
+ for (o = 0; o < 2; o++)
+ {
+ size_t *offsets = (o ? new_offsets (u8_strlen (input)) : NULL);
+ size_t length;
+ char *result = u8_conv_to_encoding ("ISO-8859-1", handler,
+ input, u8_strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == strlen (""));
+ if (o)
+ {
+ ASSERT (offsets[0] == 0);
+ ASSERT (offsets[1] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ }
+
+#endif
+
+ return 0;
+}
diff --git a/tests/uniconv/test-u8-strconv-from-enc.c b/tests/uniconv/test-u8-strconv-from-enc.c
new file mode 100644
index 00000000..7f70c297
--- /dev/null
+++ b/tests/uniconv/test-u8-strconv-from-enc.c
@@ -0,0 +1,114 @@
+/* Test of conversion to UTF-8 from legacy encodings.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniconv.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ static enum iconv_ilseq_handler handlers[] =
+ { iconveh_error, iconveh_question_mark, iconveh_escape_sequence };
+ size_t h;
+
+#if HAVE_ICONV
+ /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1,
+ ISO-8859-2, and UTF-8. */
+
+ /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static const uint8_t expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+ uint8_t *result = u8_strconv_from_encoding (input, "ISO-8859-1", handler);
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test conversion from ISO-8859-2 to UTF-8 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */
+ static const uint8_t expected[] = "Rafa\305\202 Maszkowski";
+ uint8_t *result = u8_strconv_from_encoding (input, "ISO-8859-2", handler);
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
+# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__)
+ /* Test conversions from autodetect_jp to UTF-8. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\244\263\244\363\244\313\244\301\244\317"; /* こんにちは in EUC-JP */
+ static const uint8_t expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */
+ uint8_t *result = u8_strconv_from_encoding (input, "autodetect_jp", handler);
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\202\261\202\361\202\311\202\277\202\315"; /* こんにちは in Shift_JIS */
+ static const uint8_t expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */
+ uint8_t *result = u8_strconv_from_encoding (input, "autodetect_jp", handler);
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const char input[] = "\033$B$3$s$K$A$O\033(B"; /* こんにちは in ISO-2022-JP-2 */
+ static const uint8_t expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */
+ uint8_t *result = u8_strconv_from_encoding (input, "autodetect_jp", handler);
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+# endif
+
+#endif
+
+ return 0;
+}
diff --git a/tests/uniconv/test-u8-strconv-to-enc.c b/tests/uniconv/test-u8-strconv-to-enc.c
new file mode 100644
index 00000000..73085b55
--- /dev/null
+++ b/tests/uniconv/test-u8-strconv-to-enc.c
@@ -0,0 +1,112 @@
+/* Test of conversion from UTF-8 to legacy encodings.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniconv.h"
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ static enum iconv_ilseq_handler handlers[] =
+ { iconveh_error, iconveh_question_mark, iconveh_escape_sequence };
+ size_t h;
+
+#if HAVE_ICONV
+ /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1,
+ ISO-8859-2, and UTF-8. */
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const uint8_t input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+ static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ char *result = u8_strconv_to_encoding (input, "ISO-8859-1", handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const uint8_t input[] = "Rafa\305\202 Maszkowski"; /* Rafał Maszkowski */
+ char *result = u8_strconv_to_encoding (input, "ISO-8859-1", handler);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (result == NULL && errno == EILSEQ);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Rafa? Maszkowski";
+ static const char expected_translit[] = "Rafal Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0
+ || strcmp (result, expected_translit) == 0);
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Rafa\\u0142 Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, expected) == 0);
+ free (result);
+ }
+ break;
+ }
+ }
+
+# if 0
+ /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */
+ for (h = 0; h < SIZEOF (handlers); h++)
+ {
+ enum iconv_ilseq_handler handler = handlers[h];
+ static const uint8_t input[] = "\342";
+ char *result = u8_strconv_to_encoding (input, "ISO-8859-1", handler);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "") == 0);
+ free (result);
+ }
+# endif
+
+#endif
+
+ return 0;
+}
diff --git a/tests/unictype/test-bidi_byname.c b/tests/unictype/test-bidi_byname.c
new file mode 100644
index 00000000..5b1cfec9
--- /dev/null
+++ b/tests/unictype/test-bidi_byname.c
@@ -0,0 +1,44 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ ASSERT (uc_bidi_category_byname ("NSM") == UC_BIDI_NSM);
+ ASSERT (uc_bidi_category_byname ("X") < 0);
+
+ return 0;
+}
diff --git a/tests/unictype/test-bidi_name.c b/tests/unictype/test-bidi_name.c
new file mode 100644
index 00000000..a444ec0c
--- /dev/null
+++ b/tests/unictype/test-bidi_name.c
@@ -0,0 +1,44 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ ASSERT (strcmp (uc_bidi_category_name (UC_BIDI_NSM), "NSM") == 0);
+ ASSERT (uc_bidi_category_name (-1) == NULL);
+
+ return 0;
+}
diff --git a/tests/unictype/test-bidi_of.c b/tests/unictype/test-bidi_of.c
new file mode 100644
index 00000000..720e9f97
--- /dev/null
+++ b/tests/unictype/test-bidi_of.c
@@ -0,0 +1,45 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ ASSERT (uc_bidi_category ('x') == UC_BIDI_L);
+ ASSERT (uc_bidi_category (0x05D7) == UC_BIDI_R);
+ ASSERT (uc_bidi_category ('7') == UC_BIDI_EN);
+
+ return 0;
+}
diff --git a/tests/unictype/test-bidi_test.c b/tests/unictype/test-bidi_test.c
new file mode 100644
index 00000000..3404e72f
--- /dev/null
+++ b/tests/unictype/test-bidi_test.c
@@ -0,0 +1,60 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ ASSERT (uc_is_bidi_category ('x', UC_BIDI_L));
+ ASSERT (!uc_is_bidi_category ('x', UC_BIDI_R));
+ ASSERT (!uc_is_bidi_category ('x', UC_BIDI_EN));
+
+ ASSERT (uc_is_bidi_category (0x05D7, UC_BIDI_R));
+ ASSERT (!uc_is_bidi_category (0x05D7, UC_BIDI_L));
+ ASSERT (!uc_is_bidi_category (0x05D7, UC_BIDI_EN));
+
+ ASSERT (uc_is_bidi_category ('7', UC_BIDI_EN));
+ ASSERT (!uc_is_bidi_category ('7', UC_BIDI_L));
+ ASSERT (!uc_is_bidi_category ('7', UC_BIDI_R));
+
+ {
+ unsigned int c;
+
+ for (c = 0; c < 0x110000; c++)
+ ASSERT (uc_is_bidi_category (c, uc_bidi_category (c)));
+ }
+
+ return 0;
+}
diff --git a/tests/unictype/test-block_list.c b/tests/unictype/test-block_list.c
new file mode 100644
index 00000000..140b573f
--- /dev/null
+++ b/tests/unictype/test-block_list.c
@@ -0,0 +1,62 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ const uc_block_t *blocks;
+ size_t nblocks;
+
+ uc_all_blocks (&blocks, &nblocks);
+
+ {
+ const uc_block_t *latin_block = NULL;
+ const uc_block_t *hebrew_block = NULL;
+ size_t i;
+
+ for (i = 0; i < nblocks; i++)
+ {
+ if (strcmp (blocks[i].name, "Latin") == 0)
+ latin_block = &blocks[i];
+ if (strcmp (blocks[i].name, "Hebrew") == 0)
+ hebrew_block = &blocks[i];
+ }
+ ASSERT (latin_block == NULL);
+ ASSERT (hebrew_block != NULL);
+ }
+
+ return 0;
+}
diff --git a/tests/unictype/test-block_of.c b/tests/unictype/test-block_of.c
new file mode 100644
index 00000000..9460cdeb
--- /dev/null
+++ b/tests/unictype/test-block_of.c
@@ -0,0 +1,79 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ ASSERT (strcmp (uc_block ('x')->name, "Basic Latin") == 0);
+ ASSERT (strcmp (uc_block (0x20AC)->name, "Currency Symbols") == 0);
+
+ {
+ unsigned int c;
+
+ for (c = 0; c < 0x110000; c++)
+ {
+ const uc_block_t *block = uc_block (c);
+ ASSERT (block == NULL || uc_is_block (c, block));
+ }
+ }
+
+ {
+ const uc_block_t *blocks;
+ size_t nblocks;
+ size_t i;
+
+ uc_all_blocks (&blocks, &nblocks);
+
+ for (i = 0; i < nblocks; i++)
+ {
+ if (strcmp (blocks[i].name, "Hebrew") == 0)
+ {
+ ASSERT (uc_block (0x05DE) == &blocks[i]);
+ ASSERT (uc_is_block (0x05DE, &blocks[i]));
+ }
+ }
+
+ for (i = 0; i < nblocks; i++)
+ {
+ unsigned int c;
+
+ for (c = blocks[i].start; c <= blocks[i].end; c++)
+ ASSERT (uc_block (c) == &blocks[i]);
+ }
+ }
+
+ return 0;
+}
diff --git a/tests/unictype/test-block_test.c b/tests/unictype/test-block_test.c
new file mode 100644
index 00000000..b086cde6
--- /dev/null
+++ b/tests/unictype/test-block_test.c
@@ -0,0 +1,54 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ uc_block_t b;
+
+ b.start = 0x20000;
+ b.end = 0x2A6D6;
+ b.name = "CJK Supplemental Area";
+
+ ASSERT (!uc_is_block (0x5678, &b));
+ ASSERT (!uc_is_block (0x1FFFF, &b));
+ ASSERT (uc_is_block (0x20000, &b));
+ ASSERT (uc_is_block (0x25678, &b));
+ ASSERT (uc_is_block (0x2A6D6, &b));
+ ASSERT (!uc_is_block (0x2A6D7, &b));
+
+ return 0;
+}
diff --git a/tests/unictype/test-categ_C.c b/tests/unictype/test-categ_C.c
new file mode 100644
index 00000000..e057af87
--- /dev/null
+++ b/tests/unictype/test-categ_C.c
@@ -0,0 +1,469 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0000, 0x001F },
+ { 0x007F, 0x009F },
+ { 0x00AD, 0x00AD },
+ { 0x0378, 0x0379 },
+ { 0x037F, 0x0383 },
+ { 0x038B, 0x038B },
+ { 0x038D, 0x038D },
+ { 0x03A2, 0x03A2 },
+ { 0x0524, 0x0530 },
+ { 0x0557, 0x0558 },
+ { 0x0560, 0x0560 },
+ { 0x0588, 0x0588 },
+ { 0x058B, 0x0590 },
+ { 0x05C8, 0x05CF },
+ { 0x05EB, 0x05EF },
+ { 0x05F5, 0x0605 },
+ { 0x061C, 0x061D },
+ { 0x0620, 0x0620 },
+ { 0x065F, 0x065F },
+ { 0x06DD, 0x06DD },
+ { 0x070E, 0x070F },
+ { 0x074B, 0x074C },
+ { 0x07B2, 0x07BF },
+ { 0x07FB, 0x0900 },
+ { 0x093A, 0x093B },
+ { 0x094E, 0x094F },
+ { 0x0955, 0x0957 },
+ { 0x0973, 0x097A },
+ { 0x0980, 0x0980 },
+ { 0x0984, 0x0984 },
+ { 0x098D, 0x098E },
+ { 0x0991, 0x0992 },
+ { 0x09A9, 0x09A9 },
+ { 0x09B1, 0x09B1 },
+ { 0x09B3, 0x09B5 },
+ { 0x09BA, 0x09BB },
+ { 0x09C5, 0x09C6 },
+ { 0x09C9, 0x09CA },
+ { 0x09CF, 0x09D6 },
+ { 0x09D8, 0x09DB },
+ { 0x09DE, 0x09DE },
+ { 0x09E4, 0x09E5 },
+ { 0x09FB, 0x0A00 },
+ { 0x0A04, 0x0A04 },
+ { 0x0A0B, 0x0A0E },
+ { 0x0A11, 0x0A12 },
+ { 0x0A29, 0x0A29 },
+ { 0x0A31, 0x0A31 },
+ { 0x0A34, 0x0A34 },
+ { 0x0A37, 0x0A37 },
+ { 0x0A3A, 0x0A3B },
+ { 0x0A3D, 0x0A3D },
+ { 0x0A43, 0x0A46 },
+ { 0x0A49, 0x0A4A },
+ { 0x0A4E, 0x0A50 },
+ { 0x0A52, 0x0A58 },
+ { 0x0A5D, 0x0A5D },
+ { 0x0A5F, 0x0A65 },
+ { 0x0A76, 0x0A80 },
+ { 0x0A84, 0x0A84 },
+ { 0x0A8E, 0x0A8E },
+ { 0x0A92, 0x0A92 },
+ { 0x0AA9, 0x0AA9 },
+ { 0x0AB1, 0x0AB1 },
+ { 0x0AB4, 0x0AB4 },
+ { 0x0ABA, 0x0ABB },
+ { 0x0AC6, 0x0AC6 },
+ { 0x0ACA, 0x0ACA },
+ { 0x0ACE, 0x0ACF },
+ { 0x0AD1, 0x0ADF },
+ { 0x0AE4, 0x0AE5 },
+ { 0x0AF0, 0x0AF0 },
+ { 0x0AF2, 0x0B00 },
+ { 0x0B04, 0x0B04 },
+ { 0x0B0D, 0x0B0E },
+ { 0x0B11, 0x0B12 },
+ { 0x0B29, 0x0B29 },
+ { 0x0B31, 0x0B31 },
+ { 0x0B34, 0x0B34 },
+ { 0x0B3A, 0x0B3B },
+ { 0x0B45, 0x0B46 },
+ { 0x0B49, 0x0B4A },
+ { 0x0B4E, 0x0B55 },
+ { 0x0B58, 0x0B5B },
+ { 0x0B5E, 0x0B5E },
+ { 0x0B64, 0x0B65 },
+ { 0x0B72, 0x0B81 },
+ { 0x0B84, 0x0B84 },
+ { 0x0B8B, 0x0B8D },
+ { 0x0B91, 0x0B91 },
+ { 0x0B96, 0x0B98 },
+ { 0x0B9B, 0x0B9B },
+ { 0x0B9D, 0x0B9D },
+ { 0x0BA0, 0x0BA2 },
+ { 0x0BA5, 0x0BA7 },
+ { 0x0BAB, 0x0BAD },
+ { 0x0BBA, 0x0BBD },
+ { 0x0BC3, 0x0BC5 },
+ { 0x0BC9, 0x0BC9 },
+ { 0x0BCE, 0x0BCF },
+ { 0x0BD1, 0x0BD6 },
+ { 0x0BD8, 0x0BE5 },
+ { 0x0BFB, 0x0C00 },
+ { 0x0C04, 0x0C04 },
+ { 0x0C0D, 0x0C0D },
+ { 0x0C11, 0x0C11 },
+ { 0x0C29, 0x0C29 },
+ { 0x0C34, 0x0C34 },
+ { 0x0C3A, 0x0C3C },
+ { 0x0C45, 0x0C45 },
+ { 0x0C49, 0x0C49 },
+ { 0x0C4E, 0x0C54 },
+ { 0x0C57, 0x0C57 },
+ { 0x0C5A, 0x0C5F },
+ { 0x0C64, 0x0C65 },
+ { 0x0C70, 0x0C77 },
+ { 0x0C80, 0x0C81 },
+ { 0x0C84, 0x0C84 },
+ { 0x0C8D, 0x0C8D },
+ { 0x0C91, 0x0C91 },
+ { 0x0CA9, 0x0CA9 },
+ { 0x0CB4, 0x0CB4 },
+ { 0x0CBA, 0x0CBB },
+ { 0x0CC5, 0x0CC5 },
+ { 0x0CC9, 0x0CC9 },
+ { 0x0CCE, 0x0CD4 },
+ { 0x0CD7, 0x0CDD },
+ { 0x0CDF, 0x0CDF },
+ { 0x0CE4, 0x0CE5 },
+ { 0x0CF0, 0x0CF0 },
+ { 0x0CF3, 0x0D01 },
+ { 0x0D04, 0x0D04 },
+ { 0x0D0D, 0x0D0D },
+ { 0x0D11, 0x0D11 },
+ { 0x0D29, 0x0D29 },
+ { 0x0D3A, 0x0D3C },
+ { 0x0D45, 0x0D45 },
+ { 0x0D49, 0x0D49 },
+ { 0x0D4E, 0x0D56 },
+ { 0x0D58, 0x0D5F },
+ { 0x0D64, 0x0D65 },
+ { 0x0D76, 0x0D78 },
+ { 0x0D80, 0x0D81 },
+ { 0x0D84, 0x0D84 },
+ { 0x0D97, 0x0D99 },
+ { 0x0DB2, 0x0DB2 },
+ { 0x0DBC, 0x0DBC },
+ { 0x0DBE, 0x0DBF },
+ { 0x0DC7, 0x0DC9 },
+ { 0x0DCB, 0x0DCE },
+ { 0x0DD5, 0x0DD5 },
+ { 0x0DD7, 0x0DD7 },
+ { 0x0DE0, 0x0DF1 },
+ { 0x0DF5, 0x0E00 },
+ { 0x0E3B, 0x0E3E },
+ { 0x0E5C, 0x0E80 },
+ { 0x0E83, 0x0E83 },
+ { 0x0E85, 0x0E86 },
+ { 0x0E89, 0x0E89 },
+ { 0x0E8B, 0x0E8C },
+ { 0x0E8E, 0x0E93 },
+ { 0x0E98, 0x0E98 },
+ { 0x0EA0, 0x0EA0 },
+ { 0x0EA4, 0x0EA4 },
+ { 0x0EA6, 0x0EA6 },
+ { 0x0EA8, 0x0EA9 },
+ { 0x0EAC, 0x0EAC },
+ { 0x0EBA, 0x0EBA },
+ { 0x0EBE, 0x0EBF },
+ { 0x0EC5, 0x0EC5 },
+ { 0x0EC7, 0x0EC7 },
+ { 0x0ECE, 0x0ECF },
+ { 0x0EDA, 0x0EDB },
+ { 0x0EDE, 0x0EFF },
+ { 0x0F48, 0x0F48 },
+ { 0x0F6D, 0x0F70 },
+ { 0x0F8C, 0x0F8F },
+ { 0x0F98, 0x0F98 },
+ { 0x0FBD, 0x0FBD },
+ { 0x0FCD, 0x0FCD },
+ { 0x0FD5, 0x0FFF },
+ { 0x109A, 0x109D },
+ { 0x10C6, 0x10CF },
+ { 0x10FD, 0x10FF },
+ { 0x115A, 0x115E },
+ { 0x11A3, 0x11A7 },
+ { 0x11FA, 0x11FF },
+ { 0x1249, 0x1249 },
+ { 0x124E, 0x124F },
+ { 0x1257, 0x1257 },
+ { 0x1259, 0x1259 },
+ { 0x125E, 0x125F },
+ { 0x1289, 0x1289 },
+ { 0x128E, 0x128F },
+ { 0x12B1, 0x12B1 },
+ { 0x12B6, 0x12B7 },
+ { 0x12BF, 0x12BF },
+ { 0x12C1, 0x12C1 },
+ { 0x12C6, 0x12C7 },
+ { 0x12D7, 0x12D7 },
+ { 0x1311, 0x1311 },
+ { 0x1316, 0x1317 },
+ { 0x135B, 0x135E },
+ { 0x137D, 0x137F },
+ { 0x139A, 0x139F },
+ { 0x13F5, 0x1400 },
+ { 0x1677, 0x167F },
+ { 0x169D, 0x169F },
+ { 0x16F1, 0x16FF },
+ { 0x170D, 0x170D },
+ { 0x1715, 0x171F },
+ { 0x1737, 0x173F },
+ { 0x1754, 0x175F },
+ { 0x176D, 0x176D },
+ { 0x1771, 0x1771 },
+ { 0x1774, 0x177F },
+ { 0x17B4, 0x17B5 },
+ { 0x17DE, 0x17DF },
+ { 0x17EA, 0x17EF },
+ { 0x17FA, 0x17FF },
+ { 0x180F, 0x180F },
+ { 0x181A, 0x181F },
+ { 0x1878, 0x187F },
+ { 0x18AB, 0x18FF },
+ { 0x191D, 0x191F },
+ { 0x192C, 0x192F },
+ { 0x193C, 0x193F },
+ { 0x1941, 0x1943 },
+ { 0x196E, 0x196F },
+ { 0x1975, 0x197F },
+ { 0x19AA, 0x19AF },
+ { 0x19CA, 0x19CF },
+ { 0x19DA, 0x19DD },
+ { 0x1A1C, 0x1A1D },
+ { 0x1A20, 0x1AFF },
+ { 0x1B4C, 0x1B4F },
+ { 0x1B7D, 0x1B7F },
+ { 0x1BAB, 0x1BAD },
+ { 0x1BBA, 0x1BFF },
+ { 0x1C38, 0x1C3A },
+ { 0x1C4A, 0x1C4C },
+ { 0x1C80, 0x1CFF },
+ { 0x1DE7, 0x1DFD },
+ { 0x1F16, 0x1F17 },
+ { 0x1F1E, 0x1F1F },
+ { 0x1F46, 0x1F47 },
+ { 0x1F4E, 0x1F4F },
+ { 0x1F58, 0x1F58 },
+ { 0x1F5A, 0x1F5A },
+ { 0x1F5C, 0x1F5C },
+ { 0x1F5E, 0x1F5E },
+ { 0x1F7E, 0x1F7F },
+ { 0x1FB5, 0x1FB5 },
+ { 0x1FC5, 0x1FC5 },
+ { 0x1FD4, 0x1FD5 },
+ { 0x1FDC, 0x1FDC },
+ { 0x1FF0, 0x1FF1 },
+ { 0x1FF5, 0x1FF5 },
+ { 0x1FFF, 0x1FFF },
+ { 0x200B, 0x200F },
+ { 0x202A, 0x202E },
+ { 0x2060, 0x206F },
+ { 0x2072, 0x2073 },
+ { 0x208F, 0x208F },
+ { 0x2095, 0x209F },
+ { 0x20B6, 0x20CF },
+ { 0x20F1, 0x20FF },
+ { 0x2150, 0x2152 },
+ { 0x2189, 0x218F },
+ { 0x23E8, 0x23FF },
+ { 0x2427, 0x243F },
+ { 0x244B, 0x245F },
+ { 0x269E, 0x269F },
+ { 0x26BD, 0x26BF },
+ { 0x26C4, 0x2700 },
+ { 0x2705, 0x2705 },
+ { 0x270A, 0x270B },
+ { 0x2728, 0x2728 },
+ { 0x274C, 0x274C },
+ { 0x274E, 0x274E },
+ { 0x2753, 0x2755 },
+ { 0x2757, 0x2757 },
+ { 0x275F, 0x2760 },
+ { 0x2795, 0x2797 },
+ { 0x27B0, 0x27B0 },
+ { 0x27BF, 0x27BF },
+ { 0x27CB, 0x27CB },
+ { 0x27CD, 0x27CF },
+ { 0x2B4D, 0x2B4F },
+ { 0x2B55, 0x2BFF },
+ { 0x2C2F, 0x2C2F },
+ { 0x2C5F, 0x2C5F },
+ { 0x2C70, 0x2C70 },
+ { 0x2C7E, 0x2C7F },
+ { 0x2CEB, 0x2CF8 },
+ { 0x2D26, 0x2D2F },
+ { 0x2D66, 0x2D6E },
+ { 0x2D70, 0x2D7F },
+ { 0x2D97, 0x2D9F },
+ { 0x2DA7, 0x2DA7 },
+ { 0x2DAF, 0x2DAF },
+ { 0x2DB7, 0x2DB7 },
+ { 0x2DBF, 0x2DBF },
+ { 0x2DC7, 0x2DC7 },
+ { 0x2DCF, 0x2DCF },
+ { 0x2DD7, 0x2DD7 },
+ { 0x2DDF, 0x2DDF },
+ { 0x2E31, 0x2E7F },
+ { 0x2E9A, 0x2E9A },
+ { 0x2EF4, 0x2EFF },
+ { 0x2FD6, 0x2FEF },
+ { 0x2FFC, 0x2FFF },
+ { 0x3040, 0x3040 },
+ { 0x3097, 0x3098 },
+ { 0x3100, 0x3104 },
+ { 0x312E, 0x3130 },
+ { 0x318F, 0x318F },
+ { 0x31B8, 0x31BF },
+ { 0x31E4, 0x31EF },
+ { 0x321F, 0x321F },
+ { 0x3244, 0x324F },
+ { 0x32FF, 0x32FF },
+ { 0x4DB6, 0x4DBF },
+ { 0x9FC4, 0x9FFF },
+ { 0xA48D, 0xA48F },
+ { 0xA4C7, 0xA4FF },
+ { 0xA62C, 0xA63F },
+ { 0xA660, 0xA661 },
+ { 0xA674, 0xA67B },
+ { 0xA698, 0xA6FF },
+ { 0xA78D, 0xA7FA },
+ { 0xA82C, 0xA83F },
+ { 0xA878, 0xA87F },
+ { 0xA8C5, 0xA8CD },
+ { 0xA8DA, 0xA8FF },
+ { 0xA954, 0xA95E },
+ { 0xA960, 0xA9FF },
+ { 0xAA37, 0xAA3F },
+ { 0xAA4E, 0xAA4F },
+ { 0xAA5A, 0xAA5B },
+ { 0xAA60, 0xABFF },
+ { 0xD7A4, 0xF8FF },
+ { 0xFA2E, 0xFA2F },
+ { 0xFA6B, 0xFA6F },
+ { 0xFADA, 0xFAFF },
+ { 0xFB07, 0xFB12 },
+ { 0xFB18, 0xFB1C },
+ { 0xFB37, 0xFB37 },
+ { 0xFB3D, 0xFB3D },
+ { 0xFB3F, 0xFB3F },
+ { 0xFB42, 0xFB42 },
+ { 0xFB45, 0xFB45 },
+ { 0xFBB2, 0xFBD2 },
+ { 0xFD40, 0xFD4F },
+ { 0xFD90, 0xFD91 },
+ { 0xFDC8, 0xFDEF },
+ { 0xFDFE, 0xFDFF },
+ { 0xFE1A, 0xFE1F },
+ { 0xFE27, 0xFE2F },
+ { 0xFE53, 0xFE53 },
+ { 0xFE67, 0xFE67 },
+ { 0xFE6C, 0xFE6F },
+ { 0xFE75, 0xFE75 },
+ { 0xFEFD, 0xFF00 },
+ { 0xFFBF, 0xFFC1 },
+ { 0xFFC8, 0xFFC9 },
+ { 0xFFD0, 0xFFD1 },
+ { 0xFFD8, 0xFFD9 },
+ { 0xFFDD, 0xFFDF },
+ { 0xFFE7, 0xFFE7 },
+ { 0xFFEF, 0xFFFB },
+ { 0xFFFE, 0xFFFF },
+ { 0x1000C, 0x1000C },
+ { 0x10027, 0x10027 },
+ { 0x1003B, 0x1003B },
+ { 0x1003E, 0x1003E },
+ { 0x1004E, 0x1004F },
+ { 0x1005E, 0x1007F },
+ { 0x100FB, 0x100FF },
+ { 0x10103, 0x10106 },
+ { 0x10134, 0x10136 },
+ { 0x1018B, 0x1018F },
+ { 0x1019C, 0x101CF },
+ { 0x101FE, 0x1027F },
+ { 0x1029D, 0x1029F },
+ { 0x102D1, 0x102FF },
+ { 0x1031F, 0x1031F },
+ { 0x10324, 0x1032F },
+ { 0x1034B, 0x1037F },
+ { 0x1039E, 0x1039E },
+ { 0x103C4, 0x103C7 },
+ { 0x103D6, 0x103FF },
+ { 0x1049E, 0x1049F },
+ { 0x104AA, 0x107FF },
+ { 0x10806, 0x10807 },
+ { 0x10809, 0x10809 },
+ { 0x10836, 0x10836 },
+ { 0x10839, 0x1083B },
+ { 0x1083D, 0x1083E },
+ { 0x10840, 0x108FF },
+ { 0x1091A, 0x1091E },
+ { 0x1093A, 0x1093E },
+ { 0x10940, 0x109FF },
+ { 0x10A04, 0x10A04 },
+ { 0x10A07, 0x10A0B },
+ { 0x10A14, 0x10A14 },
+ { 0x10A18, 0x10A18 },
+ { 0x10A34, 0x10A37 },
+ { 0x10A3B, 0x10A3E },
+ { 0x10A48, 0x10A4F },
+ { 0x10A59, 0x11FFF },
+ { 0x1236F, 0x123FF },
+ { 0x12463, 0x1246F },
+ { 0x12474, 0x1CFFF },
+ { 0x1D0F6, 0x1D0FF },
+ { 0x1D127, 0x1D128 },
+ { 0x1D173, 0x1D17A },
+ { 0x1D1DE, 0x1D1FF },
+ { 0x1D246, 0x1D2FF },
+ { 0x1D357, 0x1D35F },
+ { 0x1D372, 0x1D3FF },
+ { 0x1D455, 0x1D455 },
+ { 0x1D49D, 0x1D49D },
+ { 0x1D4A0, 0x1D4A1 },
+ { 0x1D4A3, 0x1D4A4 },
+ { 0x1D4A7, 0x1D4A8 },
+ { 0x1D4AD, 0x1D4AD },
+ { 0x1D4BA, 0x1D4BA },
+ { 0x1D4BC, 0x1D4BC },
+ { 0x1D4C4, 0x1D4C4 },
+ { 0x1D506, 0x1D506 },
+ { 0x1D50B, 0x1D50C },
+ { 0x1D515, 0x1D515 },
+ { 0x1D51D, 0x1D51D },
+ { 0x1D53A, 0x1D53A },
+ { 0x1D53F, 0x1D53F },
+ { 0x1D545, 0x1D545 },
+ { 0x1D547, 0x1D549 },
+ { 0x1D551, 0x1D551 },
+ { 0x1D6A6, 0x1D6A7 },
+ { 0x1D7CC, 0x1D7CD },
+ { 0x1D800, 0x1EFFF },
+ { 0x1F02C, 0x1F02F },
+ { 0x1F094, 0x1FFFF },
+ { 0x2A6D7, 0x2F7FF },
+ { 0x2FA1E, 0xE00FF },
+ { 0xE01F0, 0x10FFFF }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_C)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Cc.c b/tests/unictype/test-categ_Cc.c
new file mode 100644
index 00000000..9740dd47
--- /dev/null
+++ b/tests/unictype/test-categ_Cc.c
@@ -0,0 +1,24 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0000, 0x001F },
+ { 0x007F, 0x009F }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Cc)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Cf.c b/tests/unictype/test-categ_Cf.c
new file mode 100644
index 00000000..bcaf2f2b
--- /dev/null
+++ b/tests/unictype/test-categ_Cf.c
@@ -0,0 +1,36 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x00AD, 0x00AD },
+ { 0x0600, 0x0603 },
+ { 0x06DD, 0x06DD },
+ { 0x070F, 0x070F },
+ { 0x17B4, 0x17B5 },
+ { 0x200B, 0x200F },
+ { 0x202A, 0x202E },
+ { 0x2060, 0x2064 },
+ { 0x206A, 0x206F },
+ { 0xFEFF, 0xFEFF },
+ { 0xFFF9, 0xFFFB },
+ { 0x1D173, 0x1D17A },
+ { 0xE0001, 0xE0001 },
+ { 0xE0020, 0xE007F }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Cf)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Cn.c b/tests/unictype/test-categ_Cn.c
new file mode 100644
index 00000000..5430ea28
--- /dev/null
+++ b/tests/unictype/test-categ_Cn.c
@@ -0,0 +1,467 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0378, 0x0379 },
+ { 0x037F, 0x0383 },
+ { 0x038B, 0x038B },
+ { 0x038D, 0x038D },
+ { 0x03A2, 0x03A2 },
+ { 0x0524, 0x0530 },
+ { 0x0557, 0x0558 },
+ { 0x0560, 0x0560 },
+ { 0x0588, 0x0588 },
+ { 0x058B, 0x0590 },
+ { 0x05C8, 0x05CF },
+ { 0x05EB, 0x05EF },
+ { 0x05F5, 0x05FF },
+ { 0x0604, 0x0605 },
+ { 0x061C, 0x061D },
+ { 0x0620, 0x0620 },
+ { 0x065F, 0x065F },
+ { 0x070E, 0x070E },
+ { 0x074B, 0x074C },
+ { 0x07B2, 0x07BF },
+ { 0x07FB, 0x0900 },
+ { 0x093A, 0x093B },
+ { 0x094E, 0x094F },
+ { 0x0955, 0x0957 },
+ { 0x0973, 0x097A },
+ { 0x0980, 0x0980 },
+ { 0x0984, 0x0984 },
+ { 0x098D, 0x098E },
+ { 0x0991, 0x0992 },
+ { 0x09A9, 0x09A9 },
+ { 0x09B1, 0x09B1 },
+ { 0x09B3, 0x09B5 },
+ { 0x09BA, 0x09BB },
+ { 0x09C5, 0x09C6 },
+ { 0x09C9, 0x09CA },
+ { 0x09CF, 0x09D6 },
+ { 0x09D8, 0x09DB },
+ { 0x09DE, 0x09DE },
+ { 0x09E4, 0x09E5 },
+ { 0x09FB, 0x0A00 },
+ { 0x0A04, 0x0A04 },
+ { 0x0A0B, 0x0A0E },
+ { 0x0A11, 0x0A12 },
+ { 0x0A29, 0x0A29 },
+ { 0x0A31, 0x0A31 },
+ { 0x0A34, 0x0A34 },
+ { 0x0A37, 0x0A37 },
+ { 0x0A3A, 0x0A3B },
+ { 0x0A3D, 0x0A3D },
+ { 0x0A43, 0x0A46 },
+ { 0x0A49, 0x0A4A },
+ { 0x0A4E, 0x0A50 },
+ { 0x0A52, 0x0A58 },
+ { 0x0A5D, 0x0A5D },
+ { 0x0A5F, 0x0A65 },
+ { 0x0A76, 0x0A80 },
+ { 0x0A84, 0x0A84 },
+ { 0x0A8E, 0x0A8E },
+ { 0x0A92, 0x0A92 },
+ { 0x0AA9, 0x0AA9 },
+ { 0x0AB1, 0x0AB1 },
+ { 0x0AB4, 0x0AB4 },
+ { 0x0ABA, 0x0ABB },
+ { 0x0AC6, 0x0AC6 },
+ { 0x0ACA, 0x0ACA },
+ { 0x0ACE, 0x0ACF },
+ { 0x0AD1, 0x0ADF },
+ { 0x0AE4, 0x0AE5 },
+ { 0x0AF0, 0x0AF0 },
+ { 0x0AF2, 0x0B00 },
+ { 0x0B04, 0x0B04 },
+ { 0x0B0D, 0x0B0E },
+ { 0x0B11, 0x0B12 },
+ { 0x0B29, 0x0B29 },
+ { 0x0B31, 0x0B31 },
+ { 0x0B34, 0x0B34 },
+ { 0x0B3A, 0x0B3B },
+ { 0x0B45, 0x0B46 },
+ { 0x0B49, 0x0B4A },
+ { 0x0B4E, 0x0B55 },
+ { 0x0B58, 0x0B5B },
+ { 0x0B5E, 0x0B5E },
+ { 0x0B64, 0x0B65 },
+ { 0x0B72, 0x0B81 },
+ { 0x0B84, 0x0B84 },
+ { 0x0B8B, 0x0B8D },
+ { 0x0B91, 0x0B91 },
+ { 0x0B96, 0x0B98 },
+ { 0x0B9B, 0x0B9B },
+ { 0x0B9D, 0x0B9D },
+ { 0x0BA0, 0x0BA2 },
+ { 0x0BA5, 0x0BA7 },
+ { 0x0BAB, 0x0BAD },
+ { 0x0BBA, 0x0BBD },
+ { 0x0BC3, 0x0BC5 },
+ { 0x0BC9, 0x0BC9 },
+ { 0x0BCE, 0x0BCF },
+ { 0x0BD1, 0x0BD6 },
+ { 0x0BD8, 0x0BE5 },
+ { 0x0BFB, 0x0C00 },
+ { 0x0C04, 0x0C04 },
+ { 0x0C0D, 0x0C0D },
+ { 0x0C11, 0x0C11 },
+ { 0x0C29, 0x0C29 },
+ { 0x0C34, 0x0C34 },
+ { 0x0C3A, 0x0C3C },
+ { 0x0C45, 0x0C45 },
+ { 0x0C49, 0x0C49 },
+ { 0x0C4E, 0x0C54 },
+ { 0x0C57, 0x0C57 },
+ { 0x0C5A, 0x0C5F },
+ { 0x0C64, 0x0C65 },
+ { 0x0C70, 0x0C77 },
+ { 0x0C80, 0x0C81 },
+ { 0x0C84, 0x0C84 },
+ { 0x0C8D, 0x0C8D },
+ { 0x0C91, 0x0C91 },
+ { 0x0CA9, 0x0CA9 },
+ { 0x0CB4, 0x0CB4 },
+ { 0x0CBA, 0x0CBB },
+ { 0x0CC5, 0x0CC5 },
+ { 0x0CC9, 0x0CC9 },
+ { 0x0CCE, 0x0CD4 },
+ { 0x0CD7, 0x0CDD },
+ { 0x0CDF, 0x0CDF },
+ { 0x0CE4, 0x0CE5 },
+ { 0x0CF0, 0x0CF0 },
+ { 0x0CF3, 0x0D01 },
+ { 0x0D04, 0x0D04 },
+ { 0x0D0D, 0x0D0D },
+ { 0x0D11, 0x0D11 },
+ { 0x0D29, 0x0D29 },
+ { 0x0D3A, 0x0D3C },
+ { 0x0D45, 0x0D45 },
+ { 0x0D49, 0x0D49 },
+ { 0x0D4E, 0x0D56 },
+ { 0x0D58, 0x0D5F },
+ { 0x0D64, 0x0D65 },
+ { 0x0D76, 0x0D78 },
+ { 0x0D80, 0x0D81 },
+ { 0x0D84, 0x0D84 },
+ { 0x0D97, 0x0D99 },
+ { 0x0DB2, 0x0DB2 },
+ { 0x0DBC, 0x0DBC },
+ { 0x0DBE, 0x0DBF },
+ { 0x0DC7, 0x0DC9 },
+ { 0x0DCB, 0x0DCE },
+ { 0x0DD5, 0x0DD5 },
+ { 0x0DD7, 0x0DD7 },
+ { 0x0DE0, 0x0DF1 },
+ { 0x0DF5, 0x0E00 },
+ { 0x0E3B, 0x0E3E },
+ { 0x0E5C, 0x0E80 },
+ { 0x0E83, 0x0E83 },
+ { 0x0E85, 0x0E86 },
+ { 0x0E89, 0x0E89 },
+ { 0x0E8B, 0x0E8C },
+ { 0x0E8E, 0x0E93 },
+ { 0x0E98, 0x0E98 },
+ { 0x0EA0, 0x0EA0 },
+ { 0x0EA4, 0x0EA4 },
+ { 0x0EA6, 0x0EA6 },
+ { 0x0EA8, 0x0EA9 },
+ { 0x0EAC, 0x0EAC },
+ { 0x0EBA, 0x0EBA },
+ { 0x0EBE, 0x0EBF },
+ { 0x0EC5, 0x0EC5 },
+ { 0x0EC7, 0x0EC7 },
+ { 0x0ECE, 0x0ECF },
+ { 0x0EDA, 0x0EDB },
+ { 0x0EDE, 0x0EFF },
+ { 0x0F48, 0x0F48 },
+ { 0x0F6D, 0x0F70 },
+ { 0x0F8C, 0x0F8F },
+ { 0x0F98, 0x0F98 },
+ { 0x0FBD, 0x0FBD },
+ { 0x0FCD, 0x0FCD },
+ { 0x0FD5, 0x0FFF },
+ { 0x109A, 0x109D },
+ { 0x10C6, 0x10CF },
+ { 0x10FD, 0x10FF },
+ { 0x115A, 0x115E },
+ { 0x11A3, 0x11A7 },
+ { 0x11FA, 0x11FF },
+ { 0x1249, 0x1249 },
+ { 0x124E, 0x124F },
+ { 0x1257, 0x1257 },
+ { 0x1259, 0x1259 },
+ { 0x125E, 0x125F },
+ { 0x1289, 0x1289 },
+ { 0x128E, 0x128F },
+ { 0x12B1, 0x12B1 },
+ { 0x12B6, 0x12B7 },
+ { 0x12BF, 0x12BF },
+ { 0x12C1, 0x12C1 },
+ { 0x12C6, 0x12C7 },
+ { 0x12D7, 0x12D7 },
+ { 0x1311, 0x1311 },
+ { 0x1316, 0x1317 },
+ { 0x135B, 0x135E },
+ { 0x137D, 0x137F },
+ { 0x139A, 0x139F },
+ { 0x13F5, 0x1400 },
+ { 0x1677, 0x167F },
+ { 0x169D, 0x169F },
+ { 0x16F1, 0x16FF },
+ { 0x170D, 0x170D },
+ { 0x1715, 0x171F },
+ { 0x1737, 0x173F },
+ { 0x1754, 0x175F },
+ { 0x176D, 0x176D },
+ { 0x1771, 0x1771 },
+ { 0x1774, 0x177F },
+ { 0x17DE, 0x17DF },
+ { 0x17EA, 0x17EF },
+ { 0x17FA, 0x17FF },
+ { 0x180F, 0x180F },
+ { 0x181A, 0x181F },
+ { 0x1878, 0x187F },
+ { 0x18AB, 0x18FF },
+ { 0x191D, 0x191F },
+ { 0x192C, 0x192F },
+ { 0x193C, 0x193F },
+ { 0x1941, 0x1943 },
+ { 0x196E, 0x196F },
+ { 0x1975, 0x197F },
+ { 0x19AA, 0x19AF },
+ { 0x19CA, 0x19CF },
+ { 0x19DA, 0x19DD },
+ { 0x1A1C, 0x1A1D },
+ { 0x1A20, 0x1AFF },
+ { 0x1B4C, 0x1B4F },
+ { 0x1B7D, 0x1B7F },
+ { 0x1BAB, 0x1BAD },
+ { 0x1BBA, 0x1BFF },
+ { 0x1C38, 0x1C3A },
+ { 0x1C4A, 0x1C4C },
+ { 0x1C80, 0x1CFF },
+ { 0x1DE7, 0x1DFD },
+ { 0x1F16, 0x1F17 },
+ { 0x1F1E, 0x1F1F },
+ { 0x1F46, 0x1F47 },
+ { 0x1F4E, 0x1F4F },
+ { 0x1F58, 0x1F58 },
+ { 0x1F5A, 0x1F5A },
+ { 0x1F5C, 0x1F5C },
+ { 0x1F5E, 0x1F5E },
+ { 0x1F7E, 0x1F7F },
+ { 0x1FB5, 0x1FB5 },
+ { 0x1FC5, 0x1FC5 },
+ { 0x1FD4, 0x1FD5 },
+ { 0x1FDC, 0x1FDC },
+ { 0x1FF0, 0x1FF1 },
+ { 0x1FF5, 0x1FF5 },
+ { 0x1FFF, 0x1FFF },
+ { 0x2065, 0x2069 },
+ { 0x2072, 0x2073 },
+ { 0x208F, 0x208F },
+ { 0x2095, 0x209F },
+ { 0x20B6, 0x20CF },
+ { 0x20F1, 0x20FF },
+ { 0x2150, 0x2152 },
+ { 0x2189, 0x218F },
+ { 0x23E8, 0x23FF },
+ { 0x2427, 0x243F },
+ { 0x244B, 0x245F },
+ { 0x269E, 0x269F },
+ { 0x26BD, 0x26BF },
+ { 0x26C4, 0x2700 },
+ { 0x2705, 0x2705 },
+ { 0x270A, 0x270B },
+ { 0x2728, 0x2728 },
+ { 0x274C, 0x274C },
+ { 0x274E, 0x274E },
+ { 0x2753, 0x2755 },
+ { 0x2757, 0x2757 },
+ { 0x275F, 0x2760 },
+ { 0x2795, 0x2797 },
+ { 0x27B0, 0x27B0 },
+ { 0x27BF, 0x27BF },
+ { 0x27CB, 0x27CB },
+ { 0x27CD, 0x27CF },
+ { 0x2B4D, 0x2B4F },
+ { 0x2B55, 0x2BFF },
+ { 0x2C2F, 0x2C2F },
+ { 0x2C5F, 0x2C5F },
+ { 0x2C70, 0x2C70 },
+ { 0x2C7E, 0x2C7F },
+ { 0x2CEB, 0x2CF8 },
+ { 0x2D26, 0x2D2F },
+ { 0x2D66, 0x2D6E },
+ { 0x2D70, 0x2D7F },
+ { 0x2D97, 0x2D9F },
+ { 0x2DA7, 0x2DA7 },
+ { 0x2DAF, 0x2DAF },
+ { 0x2DB7, 0x2DB7 },
+ { 0x2DBF, 0x2DBF },
+ { 0x2DC7, 0x2DC7 },
+ { 0x2DCF, 0x2DCF },
+ { 0x2DD7, 0x2DD7 },
+ { 0x2DDF, 0x2DDF },
+ { 0x2E31, 0x2E7F },
+ { 0x2E9A, 0x2E9A },
+ { 0x2EF4, 0x2EFF },
+ { 0x2FD6, 0x2FEF },
+ { 0x2FFC, 0x2FFF },
+ { 0x3040, 0x3040 },
+ { 0x3097, 0x3098 },
+ { 0x3100, 0x3104 },
+ { 0x312E, 0x3130 },
+ { 0x318F, 0x318F },
+ { 0x31B8, 0x31BF },
+ { 0x31E4, 0x31EF },
+ { 0x321F, 0x321F },
+ { 0x3244, 0x324F },
+ { 0x32FF, 0x32FF },
+ { 0x4DB6, 0x4DBF },
+ { 0x9FC4, 0x9FFF },
+ { 0xA48D, 0xA48F },
+ { 0xA4C7, 0xA4FF },
+ { 0xA62C, 0xA63F },
+ { 0xA660, 0xA661 },
+ { 0xA674, 0xA67B },
+ { 0xA698, 0xA6FF },
+ { 0xA78D, 0xA7FA },
+ { 0xA82C, 0xA83F },
+ { 0xA878, 0xA87F },
+ { 0xA8C5, 0xA8CD },
+ { 0xA8DA, 0xA8FF },
+ { 0xA954, 0xA95E },
+ { 0xA960, 0xA9FF },
+ { 0xAA37, 0xAA3F },
+ { 0xAA4E, 0xAA4F },
+ { 0xAA5A, 0xAA5B },
+ { 0xAA60, 0xABFF },
+ { 0xD7A4, 0xD7FF },
+ { 0xFA2E, 0xFA2F },
+ { 0xFA6B, 0xFA6F },
+ { 0xFADA, 0xFAFF },
+ { 0xFB07, 0xFB12 },
+ { 0xFB18, 0xFB1C },
+ { 0xFB37, 0xFB37 },
+ { 0xFB3D, 0xFB3D },
+ { 0xFB3F, 0xFB3F },
+ { 0xFB42, 0xFB42 },
+ { 0xFB45, 0xFB45 },
+ { 0xFBB2, 0xFBD2 },
+ { 0xFD40, 0xFD4F },
+ { 0xFD90, 0xFD91 },
+ { 0xFDC8, 0xFDEF },
+ { 0xFDFE, 0xFDFF },
+ { 0xFE1A, 0xFE1F },
+ { 0xFE27, 0xFE2F },
+ { 0xFE53, 0xFE53 },
+ { 0xFE67, 0xFE67 },
+ { 0xFE6C, 0xFE6F },
+ { 0xFE75, 0xFE75 },
+ { 0xFEFD, 0xFEFE },
+ { 0xFF00, 0xFF00 },
+ { 0xFFBF, 0xFFC1 },
+ { 0xFFC8, 0xFFC9 },
+ { 0xFFD0, 0xFFD1 },
+ { 0xFFD8, 0xFFD9 },
+ { 0xFFDD, 0xFFDF },
+ { 0xFFE7, 0xFFE7 },
+ { 0xFFEF, 0xFFF8 },
+ { 0xFFFE, 0xFFFF },
+ { 0x1000C, 0x1000C },
+ { 0x10027, 0x10027 },
+ { 0x1003B, 0x1003B },
+ { 0x1003E, 0x1003E },
+ { 0x1004E, 0x1004F },
+ { 0x1005E, 0x1007F },
+ { 0x100FB, 0x100FF },
+ { 0x10103, 0x10106 },
+ { 0x10134, 0x10136 },
+ { 0x1018B, 0x1018F },
+ { 0x1019C, 0x101CF },
+ { 0x101FE, 0x1027F },
+ { 0x1029D, 0x1029F },
+ { 0x102D1, 0x102FF },
+ { 0x1031F, 0x1031F },
+ { 0x10324, 0x1032F },
+ { 0x1034B, 0x1037F },
+ { 0x1039E, 0x1039E },
+ { 0x103C4, 0x103C7 },
+ { 0x103D6, 0x103FF },
+ { 0x1049E, 0x1049F },
+ { 0x104AA, 0x107FF },
+ { 0x10806, 0x10807 },
+ { 0x10809, 0x10809 },
+ { 0x10836, 0x10836 },
+ { 0x10839, 0x1083B },
+ { 0x1083D, 0x1083E },
+ { 0x10840, 0x108FF },
+ { 0x1091A, 0x1091E },
+ { 0x1093A, 0x1093E },
+ { 0x10940, 0x109FF },
+ { 0x10A04, 0x10A04 },
+ { 0x10A07, 0x10A0B },
+ { 0x10A14, 0x10A14 },
+ { 0x10A18, 0x10A18 },
+ { 0x10A34, 0x10A37 },
+ { 0x10A3B, 0x10A3E },
+ { 0x10A48, 0x10A4F },
+ { 0x10A59, 0x11FFF },
+ { 0x1236F, 0x123FF },
+ { 0x12463, 0x1246F },
+ { 0x12474, 0x1CFFF },
+ { 0x1D0F6, 0x1D0FF },
+ { 0x1D127, 0x1D128 },
+ { 0x1D1DE, 0x1D1FF },
+ { 0x1D246, 0x1D2FF },
+ { 0x1D357, 0x1D35F },
+ { 0x1D372, 0x1D3FF },
+ { 0x1D455, 0x1D455 },
+ { 0x1D49D, 0x1D49D },
+ { 0x1D4A0, 0x1D4A1 },
+ { 0x1D4A3, 0x1D4A4 },
+ { 0x1D4A7, 0x1D4A8 },
+ { 0x1D4AD, 0x1D4AD },
+ { 0x1D4BA, 0x1D4BA },
+ { 0x1D4BC, 0x1D4BC },
+ { 0x1D4C4, 0x1D4C4 },
+ { 0x1D506, 0x1D506 },
+ { 0x1D50B, 0x1D50C },
+ { 0x1D515, 0x1D515 },
+ { 0x1D51D, 0x1D51D },
+ { 0x1D53A, 0x1D53A },
+ { 0x1D53F, 0x1D53F },
+ { 0x1D545, 0x1D545 },
+ { 0x1D547, 0x1D549 },
+ { 0x1D551, 0x1D551 },
+ { 0x1D6A6, 0x1D6A7 },
+ { 0x1D7CC, 0x1D7CD },
+ { 0x1D800, 0x1EFFF },
+ { 0x1F02C, 0x1F02F },
+ { 0x1F094, 0x1FFFF },
+ { 0x2A6D7, 0x2F7FF },
+ { 0x2FA1E, 0xE0000 },
+ { 0xE0002, 0xE001F },
+ { 0xE0080, 0xE00FF },
+ { 0xE01F0, 0xEFFFF },
+ { 0xFFFFE, 0xFFFFF },
+ { 0x10FFFE, 0x10FFFF }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Cn)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Co.c b/tests/unictype/test-categ_Co.c
new file mode 100644
index 00000000..f524db4c
--- /dev/null
+++ b/tests/unictype/test-categ_Co.c
@@ -0,0 +1,25 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0xE000, 0xF8FF },
+ { 0xF0000, 0xFFFFD },
+ { 0x100000, 0x10FFFD }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Co)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Cs.c b/tests/unictype/test-categ_Cs.c
new file mode 100644
index 00000000..cb8cc969
--- /dev/null
+++ b/tests/unictype/test-categ_Cs.c
@@ -0,0 +1,23 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0xD800, 0xDFFF }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Cs)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_L.c b/tests/unictype/test-categ_L.c
new file mode 100644
index 00000000..f4019171
--- /dev/null
+++ b/tests/unictype/test-categ_L.c
@@ -0,0 +1,412 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0041, 0x005A },
+ { 0x0061, 0x007A },
+ { 0x00AA, 0x00AA },
+ { 0x00B5, 0x00B5 },
+ { 0x00BA, 0x00BA },
+ { 0x00C0, 0x00D6 },
+ { 0x00D8, 0x00F6 },
+ { 0x00F8, 0x02C1 },
+ { 0x02C6, 0x02D1 },
+ { 0x02E0, 0x02E4 },
+ { 0x02EC, 0x02EC },
+ { 0x02EE, 0x02EE },
+ { 0x0370, 0x0374 },
+ { 0x0376, 0x0377 },
+ { 0x037A, 0x037D },
+ { 0x0386, 0x0386 },
+ { 0x0388, 0x038A },
+ { 0x038C, 0x038C },
+ { 0x038E, 0x03A1 },
+ { 0x03A3, 0x03F5 },
+ { 0x03F7, 0x0481 },
+ { 0x048A, 0x0523 },
+ { 0x0531, 0x0556 },
+ { 0x0559, 0x0559 },
+ { 0x0561, 0x0587 },
+ { 0x05D0, 0x05EA },
+ { 0x05F0, 0x05F2 },
+ { 0x0621, 0x064A },
+ { 0x066E, 0x066F },
+ { 0x0671, 0x06D3 },
+ { 0x06D5, 0x06D5 },
+ { 0x06E5, 0x06E6 },
+ { 0x06EE, 0x06EF },
+ { 0x06FA, 0x06FC },
+ { 0x06FF, 0x06FF },
+ { 0x0710, 0x0710 },
+ { 0x0712, 0x072F },
+ { 0x074D, 0x07A5 },
+ { 0x07B1, 0x07B1 },
+ { 0x07CA, 0x07EA },
+ { 0x07F4, 0x07F5 },
+ { 0x07FA, 0x07FA },
+ { 0x0904, 0x0939 },
+ { 0x093D, 0x093D },
+ { 0x0950, 0x0950 },
+ { 0x0958, 0x0961 },
+ { 0x0971, 0x0972 },
+ { 0x097B, 0x097F },
+ { 0x0985, 0x098C },
+ { 0x098F, 0x0990 },
+ { 0x0993, 0x09A8 },
+ { 0x09AA, 0x09B0 },
+ { 0x09B2, 0x09B2 },
+ { 0x09B6, 0x09B9 },
+ { 0x09BD, 0x09BD },
+ { 0x09CE, 0x09CE },
+ { 0x09DC, 0x09DD },
+ { 0x09DF, 0x09E1 },
+ { 0x09F0, 0x09F1 },
+ { 0x0A05, 0x0A0A },
+ { 0x0A0F, 0x0A10 },
+ { 0x0A13, 0x0A28 },
+ { 0x0A2A, 0x0A30 },
+ { 0x0A32, 0x0A33 },
+ { 0x0A35, 0x0A36 },
+ { 0x0A38, 0x0A39 },
+ { 0x0A59, 0x0A5C },
+ { 0x0A5E, 0x0A5E },
+ { 0x0A72, 0x0A74 },
+ { 0x0A85, 0x0A8D },
+ { 0x0A8F, 0x0A91 },
+ { 0x0A93, 0x0AA8 },
+ { 0x0AAA, 0x0AB0 },
+ { 0x0AB2, 0x0AB3 },
+ { 0x0AB5, 0x0AB9 },
+ { 0x0ABD, 0x0ABD },
+ { 0x0AD0, 0x0AD0 },
+ { 0x0AE0, 0x0AE1 },
+ { 0x0B05, 0x0B0C },
+ { 0x0B0F, 0x0B10 },
+ { 0x0B13, 0x0B28 },
+ { 0x0B2A, 0x0B30 },
+ { 0x0B32, 0x0B33 },
+ { 0x0B35, 0x0B39 },
+ { 0x0B3D, 0x0B3D },
+ { 0x0B5C, 0x0B5D },
+ { 0x0B5F, 0x0B61 },
+ { 0x0B71, 0x0B71 },
+ { 0x0B83, 0x0B83 },
+ { 0x0B85, 0x0B8A },
+ { 0x0B8E, 0x0B90 },
+ { 0x0B92, 0x0B95 },
+ { 0x0B99, 0x0B9A },
+ { 0x0B9C, 0x0B9C },
+ { 0x0B9E, 0x0B9F },
+ { 0x0BA3, 0x0BA4 },
+ { 0x0BA8, 0x0BAA },
+ { 0x0BAE, 0x0BB9 },
+ { 0x0BD0, 0x0BD0 },
+ { 0x0C05, 0x0C0C },
+ { 0x0C0E, 0x0C10 },
+ { 0x0C12, 0x0C28 },
+ { 0x0C2A, 0x0C33 },
+ { 0x0C35, 0x0C39 },
+ { 0x0C3D, 0x0C3D },
+ { 0x0C58, 0x0C59 },
+ { 0x0C60, 0x0C61 },
+ { 0x0C85, 0x0C8C },
+ { 0x0C8E, 0x0C90 },
+ { 0x0C92, 0x0CA8 },
+ { 0x0CAA, 0x0CB3 },
+ { 0x0CB5, 0x0CB9 },
+ { 0x0CBD, 0x0CBD },
+ { 0x0CDE, 0x0CDE },
+ { 0x0CE0, 0x0CE1 },
+ { 0x0D05, 0x0D0C },
+ { 0x0D0E, 0x0D10 },
+ { 0x0D12, 0x0D28 },
+ { 0x0D2A, 0x0D39 },
+ { 0x0D3D, 0x0D3D },
+ { 0x0D60, 0x0D61 },
+ { 0x0D7A, 0x0D7F },
+ { 0x0D85, 0x0D96 },
+ { 0x0D9A, 0x0DB1 },
+ { 0x0DB3, 0x0DBB },
+ { 0x0DBD, 0x0DBD },
+ { 0x0DC0, 0x0DC6 },
+ { 0x0E01, 0x0E30 },
+ { 0x0E32, 0x0E33 },
+ { 0x0E40, 0x0E46 },
+ { 0x0E81, 0x0E82 },
+ { 0x0E84, 0x0E84 },
+ { 0x0E87, 0x0E88 },
+ { 0x0E8A, 0x0E8A },
+ { 0x0E8D, 0x0E8D },
+ { 0x0E94, 0x0E97 },
+ { 0x0E99, 0x0E9F },
+ { 0x0EA1, 0x0EA3 },
+ { 0x0EA5, 0x0EA5 },
+ { 0x0EA7, 0x0EA7 },
+ { 0x0EAA, 0x0EAB },
+ { 0x0EAD, 0x0EB0 },
+ { 0x0EB2, 0x0EB3 },
+ { 0x0EBD, 0x0EBD },
+ { 0x0EC0, 0x0EC4 },
+ { 0x0EC6, 0x0EC6 },
+ { 0x0EDC, 0x0EDD },
+ { 0x0F00, 0x0F00 },
+ { 0x0F40, 0x0F47 },
+ { 0x0F49, 0x0F6C },
+ { 0x0F88, 0x0F8B },
+ { 0x1000, 0x102A },
+ { 0x103F, 0x103F },
+ { 0x1050, 0x1055 },
+ { 0x105A, 0x105D },
+ { 0x1061, 0x1061 },
+ { 0x1065, 0x1066 },
+ { 0x106E, 0x1070 },
+ { 0x1075, 0x1081 },
+ { 0x108E, 0x108E },
+ { 0x10A0, 0x10C5 },
+ { 0x10D0, 0x10FA },
+ { 0x10FC, 0x10FC },
+ { 0x1100, 0x1159 },
+ { 0x115F, 0x11A2 },
+ { 0x11A8, 0x11F9 },
+ { 0x1200, 0x1248 },
+ { 0x124A, 0x124D },
+ { 0x1250, 0x1256 },
+ { 0x1258, 0x1258 },
+ { 0x125A, 0x125D },
+ { 0x1260, 0x1288 },
+ { 0x128A, 0x128D },
+ { 0x1290, 0x12B0 },
+ { 0x12B2, 0x12B5 },
+ { 0x12B8, 0x12BE },
+ { 0x12C0, 0x12C0 },
+ { 0x12C2, 0x12C5 },
+ { 0x12C8, 0x12D6 },
+ { 0x12D8, 0x1310 },
+ { 0x1312, 0x1315 },
+ { 0x1318, 0x135A },
+ { 0x1380, 0x138F },
+ { 0x13A0, 0x13F4 },
+ { 0x1401, 0x166C },
+ { 0x166F, 0x1676 },
+ { 0x1681, 0x169A },
+ { 0x16A0, 0x16EA },
+ { 0x1700, 0x170C },
+ { 0x170E, 0x1711 },
+ { 0x1720, 0x1731 },
+ { 0x1740, 0x1751 },
+ { 0x1760, 0x176C },
+ { 0x176E, 0x1770 },
+ { 0x1780, 0x17B3 },
+ { 0x17D7, 0x17D7 },
+ { 0x17DC, 0x17DC },
+ { 0x1820, 0x1877 },
+ { 0x1880, 0x18A8 },
+ { 0x18AA, 0x18AA },
+ { 0x1900, 0x191C },
+ { 0x1950, 0x196D },
+ { 0x1970, 0x1974 },
+ { 0x1980, 0x19A9 },
+ { 0x19C1, 0x19C7 },
+ { 0x1A00, 0x1A16 },
+ { 0x1B05, 0x1B33 },
+ { 0x1B45, 0x1B4B },
+ { 0x1B83, 0x1BA0 },
+ { 0x1BAE, 0x1BAF },
+ { 0x1C00, 0x1C23 },
+ { 0x1C4D, 0x1C4F },
+ { 0x1C5A, 0x1C7D },
+ { 0x1D00, 0x1DBF },
+ { 0x1E00, 0x1F15 },
+ { 0x1F18, 0x1F1D },
+ { 0x1F20, 0x1F45 },
+ { 0x1F48, 0x1F4D },
+ { 0x1F50, 0x1F57 },
+ { 0x1F59, 0x1F59 },
+ { 0x1F5B, 0x1F5B },
+ { 0x1F5D, 0x1F5D },
+ { 0x1F5F, 0x1F7D },
+ { 0x1F80, 0x1FB4 },
+ { 0x1FB6, 0x1FBC },
+ { 0x1FBE, 0x1FBE },
+ { 0x1FC2, 0x1FC4 },
+ { 0x1FC6, 0x1FCC },
+ { 0x1FD0, 0x1FD3 },
+ { 0x1FD6, 0x1FDB },
+ { 0x1FE0, 0x1FEC },
+ { 0x1FF2, 0x1FF4 },
+ { 0x1FF6, 0x1FFC },
+ { 0x2071, 0x2071 },
+ { 0x207F, 0x207F },
+ { 0x2090, 0x2094 },
+ { 0x2102, 0x2102 },
+ { 0x2107, 0x2107 },
+ { 0x210A, 0x2113 },
+ { 0x2115, 0x2115 },
+ { 0x2119, 0x211D },
+ { 0x2124, 0x2124 },
+ { 0x2126, 0x2126 },
+ { 0x2128, 0x2128 },
+ { 0x212A, 0x212D },
+ { 0x212F, 0x2139 },
+ { 0x213C, 0x213F },
+ { 0x2145, 0x2149 },
+ { 0x214E, 0x214E },
+ { 0x2183, 0x2184 },
+ { 0x2C00, 0x2C2E },
+ { 0x2C30, 0x2C5E },
+ { 0x2C60, 0x2C6F },
+ { 0x2C71, 0x2C7D },
+ { 0x2C80, 0x2CE4 },
+ { 0x2D00, 0x2D25 },
+ { 0x2D30, 0x2D65 },
+ { 0x2D6F, 0x2D6F },
+ { 0x2D80, 0x2D96 },
+ { 0x2DA0, 0x2DA6 },
+ { 0x2DA8, 0x2DAE },
+ { 0x2DB0, 0x2DB6 },
+ { 0x2DB8, 0x2DBE },
+ { 0x2DC0, 0x2DC6 },
+ { 0x2DC8, 0x2DCE },
+ { 0x2DD0, 0x2DD6 },
+ { 0x2DD8, 0x2DDE },
+ { 0x2E2F, 0x2E2F },
+ { 0x3005, 0x3006 },
+ { 0x3031, 0x3035 },
+ { 0x303B, 0x303C },
+ { 0x3041, 0x3096 },
+ { 0x309D, 0x309F },
+ { 0x30A1, 0x30FA },
+ { 0x30FC, 0x30FF },
+ { 0x3105, 0x312D },
+ { 0x3131, 0x318E },
+ { 0x31A0, 0x31B7 },
+ { 0x31F0, 0x31FF },
+ { 0x3400, 0x4DB5 },
+ { 0x4E00, 0x9FC3 },
+ { 0xA000, 0xA48C },
+ { 0xA500, 0xA60C },
+ { 0xA610, 0xA61F },
+ { 0xA62A, 0xA62B },
+ { 0xA640, 0xA65F },
+ { 0xA662, 0xA66E },
+ { 0xA67F, 0xA697 },
+ { 0xA717, 0xA71F },
+ { 0xA722, 0xA788 },
+ { 0xA78B, 0xA78C },
+ { 0xA7FB, 0xA801 },
+ { 0xA803, 0xA805 },
+ { 0xA807, 0xA80A },
+ { 0xA80C, 0xA822 },
+ { 0xA840, 0xA873 },
+ { 0xA882, 0xA8B3 },
+ { 0xA90A, 0xA925 },
+ { 0xA930, 0xA946 },
+ { 0xAA00, 0xAA28 },
+ { 0xAA40, 0xAA42 },
+ { 0xAA44, 0xAA4B },
+ { 0xAC00, 0xD7A3 },
+ { 0xF900, 0xFA2D },
+ { 0xFA30, 0xFA6A },
+ { 0xFA70, 0xFAD9 },
+ { 0xFB00, 0xFB06 },
+ { 0xFB13, 0xFB17 },
+ { 0xFB1D, 0xFB1D },
+ { 0xFB1F, 0xFB28 },
+ { 0xFB2A, 0xFB36 },
+ { 0xFB38, 0xFB3C },
+ { 0xFB3E, 0xFB3E },
+ { 0xFB40, 0xFB41 },
+ { 0xFB43, 0xFB44 },
+ { 0xFB46, 0xFBB1 },
+ { 0xFBD3, 0xFD3D },
+ { 0xFD50, 0xFD8F },
+ { 0xFD92, 0xFDC7 },
+ { 0xFDF0, 0xFDFB },
+ { 0xFE70, 0xFE74 },
+ { 0xFE76, 0xFEFC },
+ { 0xFF21, 0xFF3A },
+ { 0xFF41, 0xFF5A },
+ { 0xFF66, 0xFFBE },
+ { 0xFFC2, 0xFFC7 },
+ { 0xFFCA, 0xFFCF },
+ { 0xFFD2, 0xFFD7 },
+ { 0xFFDA, 0xFFDC },
+ { 0x10000, 0x1000B },
+ { 0x1000D, 0x10026 },
+ { 0x10028, 0x1003A },
+ { 0x1003C, 0x1003D },
+ { 0x1003F, 0x1004D },
+ { 0x10050, 0x1005D },
+ { 0x10080, 0x100FA },
+ { 0x10280, 0x1029C },
+ { 0x102A0, 0x102D0 },
+ { 0x10300, 0x1031E },
+ { 0x10330, 0x10340 },
+ { 0x10342, 0x10349 },
+ { 0x10380, 0x1039D },
+ { 0x103A0, 0x103C3 },
+ { 0x103C8, 0x103CF },
+ { 0x10400, 0x1049D },
+ { 0x10800, 0x10805 },
+ { 0x10808, 0x10808 },
+ { 0x1080A, 0x10835 },
+ { 0x10837, 0x10838 },
+ { 0x1083C, 0x1083C },
+ { 0x1083F, 0x1083F },
+ { 0x10900, 0x10915 },
+ { 0x10920, 0x10939 },
+ { 0x10A00, 0x10A00 },
+ { 0x10A10, 0x10A13 },
+ { 0x10A15, 0x10A17 },
+ { 0x10A19, 0x10A33 },
+ { 0x12000, 0x1236E },
+ { 0x1D400, 0x1D454 },
+ { 0x1D456, 0x1D49C },
+ { 0x1D49E, 0x1D49F },
+ { 0x1D4A2, 0x1D4A2 },
+ { 0x1D4A5, 0x1D4A6 },
+ { 0x1D4A9, 0x1D4AC },
+ { 0x1D4AE, 0x1D4B9 },
+ { 0x1D4BB, 0x1D4BB },
+ { 0x1D4BD, 0x1D4C3 },
+ { 0x1D4C5, 0x1D505 },
+ { 0x1D507, 0x1D50A },
+ { 0x1D50D, 0x1D514 },
+ { 0x1D516, 0x1D51C },
+ { 0x1D51E, 0x1D539 },
+ { 0x1D53B, 0x1D53E },
+ { 0x1D540, 0x1D544 },
+ { 0x1D546, 0x1D546 },
+ { 0x1D54A, 0x1D550 },
+ { 0x1D552, 0x1D6A5 },
+ { 0x1D6A8, 0x1D6C0 },
+ { 0x1D6C2, 0x1D6DA },
+ { 0x1D6DC, 0x1D6FA },
+ { 0x1D6FC, 0x1D714 },
+ { 0x1D716, 0x1D734 },
+ { 0x1D736, 0x1D74E },
+ { 0x1D750, 0x1D76E },
+ { 0x1D770, 0x1D788 },
+ { 0x1D78A, 0x1D7A8 },
+ { 0x1D7AA, 0x1D7C2 },
+ { 0x1D7C4, 0x1D7CB },
+ { 0x20000, 0x2A6D6 },
+ { 0x2F800, 0x2FA1D }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_L)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Ll.c b/tests/unictype/test-categ_Ll.c
new file mode 100644
index 00000000..7cd4ac36
--- /dev/null
+++ b/tests/unictype/test-categ_Ll.c
@@ -0,0 +1,620 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0061, 0x007A },
+ { 0x00AA, 0x00AA },
+ { 0x00B5, 0x00B5 },
+ { 0x00BA, 0x00BA },
+ { 0x00DF, 0x00F6 },
+ { 0x00F8, 0x00FF },
+ { 0x0101, 0x0101 },
+ { 0x0103, 0x0103 },
+ { 0x0105, 0x0105 },
+ { 0x0107, 0x0107 },
+ { 0x0109, 0x0109 },
+ { 0x010B, 0x010B },
+ { 0x010D, 0x010D },
+ { 0x010F, 0x010F },
+ { 0x0111, 0x0111 },
+ { 0x0113, 0x0113 },
+ { 0x0115, 0x0115 },
+ { 0x0117, 0x0117 },
+ { 0x0119, 0x0119 },
+ { 0x011B, 0x011B },
+ { 0x011D, 0x011D },
+ { 0x011F, 0x011F },
+ { 0x0121, 0x0121 },
+ { 0x0123, 0x0123 },
+ { 0x0125, 0x0125 },
+ { 0x0127, 0x0127 },
+ { 0x0129, 0x0129 },
+ { 0x012B, 0x012B },
+ { 0x012D, 0x012D },
+ { 0x012F, 0x012F },
+ { 0x0131, 0x0131 },
+ { 0x0133, 0x0133 },
+ { 0x0135, 0x0135 },
+ { 0x0137, 0x0138 },
+ { 0x013A, 0x013A },
+ { 0x013C, 0x013C },
+ { 0x013E, 0x013E },
+ { 0x0140, 0x0140 },
+ { 0x0142, 0x0142 },
+ { 0x0144, 0x0144 },
+ { 0x0146, 0x0146 },
+ { 0x0148, 0x0149 },
+ { 0x014B, 0x014B },
+ { 0x014D, 0x014D },
+ { 0x014F, 0x014F },
+ { 0x0151, 0x0151 },
+ { 0x0153, 0x0153 },
+ { 0x0155, 0x0155 },
+ { 0x0157, 0x0157 },
+ { 0x0159, 0x0159 },
+ { 0x015B, 0x015B },
+ { 0x015D, 0x015D },
+ { 0x015F, 0x015F },
+ { 0x0161, 0x0161 },
+ { 0x0163, 0x0163 },
+ { 0x0165, 0x0165 },
+ { 0x0167, 0x0167 },
+ { 0x0169, 0x0169 },
+ { 0x016B, 0x016B },
+ { 0x016D, 0x016D },
+ { 0x016F, 0x016F },
+ { 0x0171, 0x0171 },
+ { 0x0173, 0x0173 },
+ { 0x0175, 0x0175 },
+ { 0x0177, 0x0177 },
+ { 0x017A, 0x017A },
+ { 0x017C, 0x017C },
+ { 0x017E, 0x0180 },
+ { 0x0183, 0x0183 },
+ { 0x0185, 0x0185 },
+ { 0x0188, 0x0188 },
+ { 0x018C, 0x018D },
+ { 0x0192, 0x0192 },
+ { 0x0195, 0x0195 },
+ { 0x0199, 0x019B },
+ { 0x019E, 0x019E },
+ { 0x01A1, 0x01A1 },
+ { 0x01A3, 0x01A3 },
+ { 0x01A5, 0x01A5 },
+ { 0x01A8, 0x01A8 },
+ { 0x01AA, 0x01AB },
+ { 0x01AD, 0x01AD },
+ { 0x01B0, 0x01B0 },
+ { 0x01B4, 0x01B4 },
+ { 0x01B6, 0x01B6 },
+ { 0x01B9, 0x01BA },
+ { 0x01BD, 0x01BF },
+ { 0x01C6, 0x01C6 },
+ { 0x01C9, 0x01C9 },
+ { 0x01CC, 0x01CC },
+ { 0x01CE, 0x01CE },
+ { 0x01D0, 0x01D0 },
+ { 0x01D2, 0x01D2 },
+ { 0x01D4, 0x01D4 },
+ { 0x01D6, 0x01D6 },
+ { 0x01D8, 0x01D8 },
+ { 0x01DA, 0x01DA },
+ { 0x01DC, 0x01DD },
+ { 0x01DF, 0x01DF },
+ { 0x01E1, 0x01E1 },
+ { 0x01E3, 0x01E3 },
+ { 0x01E5, 0x01E5 },
+ { 0x01E7, 0x01E7 },
+ { 0x01E9, 0x01E9 },
+ { 0x01EB, 0x01EB },
+ { 0x01ED, 0x01ED },
+ { 0x01EF, 0x01F0 },
+ { 0x01F3, 0x01F3 },
+ { 0x01F5, 0x01F5 },
+ { 0x01F9, 0x01F9 },
+ { 0x01FB, 0x01FB },
+ { 0x01FD, 0x01FD },
+ { 0x01FF, 0x01FF },
+ { 0x0201, 0x0201 },
+ { 0x0203, 0x0203 },
+ { 0x0205, 0x0205 },
+ { 0x0207, 0x0207 },
+ { 0x0209, 0x0209 },
+ { 0x020B, 0x020B },
+ { 0x020D, 0x020D },
+ { 0x020F, 0x020F },
+ { 0x0211, 0x0211 },
+ { 0x0213, 0x0213 },
+ { 0x0215, 0x0215 },
+ { 0x0217, 0x0217 },
+ { 0x0219, 0x0219 },
+ { 0x021B, 0x021B },
+ { 0x021D, 0x021D },
+ { 0x021F, 0x021F },
+ { 0x0221, 0x0221 },
+ { 0x0223, 0x0223 },
+ { 0x0225, 0x0225 },
+ { 0x0227, 0x0227 },
+ { 0x0229, 0x0229 },
+ { 0x022B, 0x022B },
+ { 0x022D, 0x022D },
+ { 0x022F, 0x022F },
+ { 0x0231, 0x0231 },
+ { 0x0233, 0x0239 },
+ { 0x023C, 0x023C },
+ { 0x023F, 0x0240 },
+ { 0x0242, 0x0242 },
+ { 0x0247, 0x0247 },
+ { 0x0249, 0x0249 },
+ { 0x024B, 0x024B },
+ { 0x024D, 0x024D },
+ { 0x024F, 0x0293 },
+ { 0x0295, 0x02AF },
+ { 0x0371, 0x0371 },
+ { 0x0373, 0x0373 },
+ { 0x0377, 0x0377 },
+ { 0x037B, 0x037D },
+ { 0x0390, 0x0390 },
+ { 0x03AC, 0x03CE },
+ { 0x03D0, 0x03D1 },
+ { 0x03D5, 0x03D7 },
+ { 0x03D9, 0x03D9 },
+ { 0x03DB, 0x03DB },
+ { 0x03DD, 0x03DD },
+ { 0x03DF, 0x03DF },
+ { 0x03E1, 0x03E1 },
+ { 0x03E3, 0x03E3 },
+ { 0x03E5, 0x03E5 },
+ { 0x03E7, 0x03E7 },
+ { 0x03E9, 0x03E9 },
+ { 0x03EB, 0x03EB },
+ { 0x03ED, 0x03ED },
+ { 0x03EF, 0x03F3 },
+ { 0x03F5, 0x03F5 },
+ { 0x03F8, 0x03F8 },
+ { 0x03FB, 0x03FC },
+ { 0x0430, 0x045F },
+ { 0x0461, 0x0461 },
+ { 0x0463, 0x0463 },
+ { 0x0465, 0x0465 },
+ { 0x0467, 0x0467 },
+ { 0x0469, 0x0469 },
+ { 0x046B, 0x046B },
+ { 0x046D, 0x046D },
+ { 0x046F, 0x046F },
+ { 0x0471, 0x0471 },
+ { 0x0473, 0x0473 },
+ { 0x0475, 0x0475 },
+ { 0x0477, 0x0477 },
+ { 0x0479, 0x0479 },
+ { 0x047B, 0x047B },
+ { 0x047D, 0x047D },
+ { 0x047F, 0x047F },
+ { 0x0481, 0x0481 },
+ { 0x048B, 0x048B },
+ { 0x048D, 0x048D },
+ { 0x048F, 0x048F },
+ { 0x0491, 0x0491 },
+ { 0x0493, 0x0493 },
+ { 0x0495, 0x0495 },
+ { 0x0497, 0x0497 },
+ { 0x0499, 0x0499 },
+ { 0x049B, 0x049B },
+ { 0x049D, 0x049D },
+ { 0x049F, 0x049F },
+ { 0x04A1, 0x04A1 },
+ { 0x04A3, 0x04A3 },
+ { 0x04A5, 0x04A5 },
+ { 0x04A7, 0x04A7 },
+ { 0x04A9, 0x04A9 },
+ { 0x04AB, 0x04AB },
+ { 0x04AD, 0x04AD },
+ { 0x04AF, 0x04AF },
+ { 0x04B1, 0x04B1 },
+ { 0x04B3, 0x04B3 },
+ { 0x04B5, 0x04B5 },
+ { 0x04B7, 0x04B7 },
+ { 0x04B9, 0x04B9 },
+ { 0x04BB, 0x04BB },
+ { 0x04BD, 0x04BD },
+ { 0x04BF, 0x04BF },
+ { 0x04C2, 0x04C2 },
+ { 0x04C4, 0x04C4 },
+ { 0x04C6, 0x04C6 },
+ { 0x04C8, 0x04C8 },
+ { 0x04CA, 0x04CA },
+ { 0x04CC, 0x04CC },
+ { 0x04CE, 0x04CF },
+ { 0x04D1, 0x04D1 },
+ { 0x04D3, 0x04D3 },
+ { 0x04D5, 0x04D5 },
+ { 0x04D7, 0x04D7 },
+ { 0x04D9, 0x04D9 },
+ { 0x04DB, 0x04DB },
+ { 0x04DD, 0x04DD },
+ { 0x04DF, 0x04DF },
+ { 0x04E1, 0x04E1 },
+ { 0x04E3, 0x04E3 },
+ { 0x04E5, 0x04E5 },
+ { 0x04E7, 0x04E7 },
+ { 0x04E9, 0x04E9 },
+ { 0x04EB, 0x04EB },
+ { 0x04ED, 0x04ED },
+ { 0x04EF, 0x04EF },
+ { 0x04F1, 0x04F1 },
+ { 0x04F3, 0x04F3 },
+ { 0x04F5, 0x04F5 },
+ { 0x04F7, 0x04F7 },
+ { 0x04F9, 0x04F9 },
+ { 0x04FB, 0x04FB },
+ { 0x04FD, 0x04FD },
+ { 0x04FF, 0x04FF },
+ { 0x0501, 0x0501 },
+ { 0x0503, 0x0503 },
+ { 0x0505, 0x0505 },
+ { 0x0507, 0x0507 },
+ { 0x0509, 0x0509 },
+ { 0x050B, 0x050B },
+ { 0x050D, 0x050D },
+ { 0x050F, 0x050F },
+ { 0x0511, 0x0511 },
+ { 0x0513, 0x0513 },
+ { 0x0515, 0x0515 },
+ { 0x0517, 0x0517 },
+ { 0x0519, 0x0519 },
+ { 0x051B, 0x051B },
+ { 0x051D, 0x051D },
+ { 0x051F, 0x051F },
+ { 0x0521, 0x0521 },
+ { 0x0523, 0x0523 },
+ { 0x0561, 0x0587 },
+ { 0x1D00, 0x1D2B },
+ { 0x1D62, 0x1D77 },
+ { 0x1D79, 0x1D9A },
+ { 0x1E01, 0x1E01 },
+ { 0x1E03, 0x1E03 },
+ { 0x1E05, 0x1E05 },
+ { 0x1E07, 0x1E07 },
+ { 0x1E09, 0x1E09 },
+ { 0x1E0B, 0x1E0B },
+ { 0x1E0D, 0x1E0D },
+ { 0x1E0F, 0x1E0F },
+ { 0x1E11, 0x1E11 },
+ { 0x1E13, 0x1E13 },
+ { 0x1E15, 0x1E15 },
+ { 0x1E17, 0x1E17 },
+ { 0x1E19, 0x1E19 },
+ { 0x1E1B, 0x1E1B },
+ { 0x1E1D, 0x1E1D },
+ { 0x1E1F, 0x1E1F },
+ { 0x1E21, 0x1E21 },
+ { 0x1E23, 0x1E23 },
+ { 0x1E25, 0x1E25 },
+ { 0x1E27, 0x1E27 },
+ { 0x1E29, 0x1E29 },
+ { 0x1E2B, 0x1E2B },
+ { 0x1E2D, 0x1E2D },
+ { 0x1E2F, 0x1E2F },
+ { 0x1E31, 0x1E31 },
+ { 0x1E33, 0x1E33 },
+ { 0x1E35, 0x1E35 },
+ { 0x1E37, 0x1E37 },
+ { 0x1E39, 0x1E39 },
+ { 0x1E3B, 0x1E3B },
+ { 0x1E3D, 0x1E3D },
+ { 0x1E3F, 0x1E3F },
+ { 0x1E41, 0x1E41 },
+ { 0x1E43, 0x1E43 },
+ { 0x1E45, 0x1E45 },
+ { 0x1E47, 0x1E47 },
+ { 0x1E49, 0x1E49 },
+ { 0x1E4B, 0x1E4B },
+ { 0x1E4D, 0x1E4D },
+ { 0x1E4F, 0x1E4F },
+ { 0x1E51, 0x1E51 },
+ { 0x1E53, 0x1E53 },
+ { 0x1E55, 0x1E55 },
+ { 0x1E57, 0x1E57 },
+ { 0x1E59, 0x1E59 },
+ { 0x1E5B, 0x1E5B },
+ { 0x1E5D, 0x1E5D },
+ { 0x1E5F, 0x1E5F },
+ { 0x1E61, 0x1E61 },
+ { 0x1E63, 0x1E63 },
+ { 0x1E65, 0x1E65 },
+ { 0x1E67, 0x1E67 },
+ { 0x1E69, 0x1E69 },
+ { 0x1E6B, 0x1E6B },
+ { 0x1E6D, 0x1E6D },
+ { 0x1E6F, 0x1E6F },
+ { 0x1E71, 0x1E71 },
+ { 0x1E73, 0x1E73 },
+ { 0x1E75, 0x1E75 },
+ { 0x1E77, 0x1E77 },
+ { 0x1E79, 0x1E79 },
+ { 0x1E7B, 0x1E7B },
+ { 0x1E7D, 0x1E7D },
+ { 0x1E7F, 0x1E7F },
+ { 0x1E81, 0x1E81 },
+ { 0x1E83, 0x1E83 },
+ { 0x1E85, 0x1E85 },
+ { 0x1E87, 0x1E87 },
+ { 0x1E89, 0x1E89 },
+ { 0x1E8B, 0x1E8B },
+ { 0x1E8D, 0x1E8D },
+ { 0x1E8F, 0x1E8F },
+ { 0x1E91, 0x1E91 },
+ { 0x1E93, 0x1E93 },
+ { 0x1E95, 0x1E9D },
+ { 0x1E9F, 0x1E9F },
+ { 0x1EA1, 0x1EA1 },
+ { 0x1EA3, 0x1EA3 },
+ { 0x1EA5, 0x1EA5 },
+ { 0x1EA7, 0x1EA7 },
+ { 0x1EA9, 0x1EA9 },
+ { 0x1EAB, 0x1EAB },
+ { 0x1EAD, 0x1EAD },
+ { 0x1EAF, 0x1EAF },
+ { 0x1EB1, 0x1EB1 },
+ { 0x1EB3, 0x1EB3 },
+ { 0x1EB5, 0x1EB5 },
+ { 0x1EB7, 0x1EB7 },
+ { 0x1EB9, 0x1EB9 },
+ { 0x1EBB, 0x1EBB },
+ { 0x1EBD, 0x1EBD },
+ { 0x1EBF, 0x1EBF },
+ { 0x1EC1, 0x1EC1 },
+ { 0x1EC3, 0x1EC3 },
+ { 0x1EC5, 0x1EC5 },
+ { 0x1EC7, 0x1EC7 },
+ { 0x1EC9, 0x1EC9 },
+ { 0x1ECB, 0x1ECB },
+ { 0x1ECD, 0x1ECD },
+ { 0x1ECF, 0x1ECF },
+ { 0x1ED1, 0x1ED1 },
+ { 0x1ED3, 0x1ED3 },
+ { 0x1ED5, 0x1ED5 },
+ { 0x1ED7, 0x1ED7 },
+ { 0x1ED9, 0x1ED9 },
+ { 0x1EDB, 0x1EDB },
+ { 0x1EDD, 0x1EDD },
+ { 0x1EDF, 0x1EDF },
+ { 0x1EE1, 0x1EE1 },
+ { 0x1EE3, 0x1EE3 },
+ { 0x1EE5, 0x1EE5 },
+ { 0x1EE7, 0x1EE7 },
+ { 0x1EE9, 0x1EE9 },
+ { 0x1EEB, 0x1EEB },
+ { 0x1EED, 0x1EED },
+ { 0x1EEF, 0x1EEF },
+ { 0x1EF1, 0x1EF1 },
+ { 0x1EF3, 0x1EF3 },
+ { 0x1EF5, 0x1EF5 },
+ { 0x1EF7, 0x1EF7 },
+ { 0x1EF9, 0x1EF9 },
+ { 0x1EFB, 0x1EFB },
+ { 0x1EFD, 0x1EFD },
+ { 0x1EFF, 0x1F07 },
+ { 0x1F10, 0x1F15 },
+ { 0x1F20, 0x1F27 },
+ { 0x1F30, 0x1F37 },
+ { 0x1F40, 0x1F45 },
+ { 0x1F50, 0x1F57 },
+ { 0x1F60, 0x1F67 },
+ { 0x1F70, 0x1F7D },
+ { 0x1F80, 0x1F87 },
+ { 0x1F90, 0x1F97 },
+ { 0x1FA0, 0x1FA7 },
+ { 0x1FB0, 0x1FB4 },
+ { 0x1FB6, 0x1FB7 },
+ { 0x1FBE, 0x1FBE },
+ { 0x1FC2, 0x1FC4 },
+ { 0x1FC6, 0x1FC7 },
+ { 0x1FD0, 0x1FD3 },
+ { 0x1FD6, 0x1FD7 },
+ { 0x1FE0, 0x1FE7 },
+ { 0x1FF2, 0x1FF4 },
+ { 0x1FF6, 0x1FF7 },
+ { 0x2071, 0x2071 },
+ { 0x207F, 0x207F },
+ { 0x210A, 0x210A },
+ { 0x210E, 0x210F },
+ { 0x2113, 0x2113 },
+ { 0x212F, 0x212F },
+ { 0x2134, 0x2134 },
+ { 0x2139, 0x2139 },
+ { 0x213C, 0x213D },
+ { 0x2146, 0x2149 },
+ { 0x214E, 0x214E },
+ { 0x2184, 0x2184 },
+ { 0x2C30, 0x2C5E },
+ { 0x2C61, 0x2C61 },
+ { 0x2C65, 0x2C66 },
+ { 0x2C68, 0x2C68 },
+ { 0x2C6A, 0x2C6A },
+ { 0x2C6C, 0x2C6C },
+ { 0x2C71, 0x2C71 },
+ { 0x2C73, 0x2C74 },
+ { 0x2C76, 0x2C7C },
+ { 0x2C81, 0x2C81 },
+ { 0x2C83, 0x2C83 },
+ { 0x2C85, 0x2C85 },
+ { 0x2C87, 0x2C87 },
+ { 0x2C89, 0x2C89 },
+ { 0x2C8B, 0x2C8B },
+ { 0x2C8D, 0x2C8D },
+ { 0x2C8F, 0x2C8F },
+ { 0x2C91, 0x2C91 },
+ { 0x2C93, 0x2C93 },
+ { 0x2C95, 0x2C95 },
+ { 0x2C97, 0x2C97 },
+ { 0x2C99, 0x2C99 },
+ { 0x2C9B, 0x2C9B },
+ { 0x2C9D, 0x2C9D },
+ { 0x2C9F, 0x2C9F },
+ { 0x2CA1, 0x2CA1 },
+ { 0x2CA3, 0x2CA3 },
+ { 0x2CA5, 0x2CA5 },
+ { 0x2CA7, 0x2CA7 },
+ { 0x2CA9, 0x2CA9 },
+ { 0x2CAB, 0x2CAB },
+ { 0x2CAD, 0x2CAD },
+ { 0x2CAF, 0x2CAF },
+ { 0x2CB1, 0x2CB1 },
+ { 0x2CB3, 0x2CB3 },
+ { 0x2CB5, 0x2CB5 },
+ { 0x2CB7, 0x2CB7 },
+ { 0x2CB9, 0x2CB9 },
+ { 0x2CBB, 0x2CBB },
+ { 0x2CBD, 0x2CBD },
+ { 0x2CBF, 0x2CBF },
+ { 0x2CC1, 0x2CC1 },
+ { 0x2CC3, 0x2CC3 },
+ { 0x2CC5, 0x2CC5 },
+ { 0x2CC7, 0x2CC7 },
+ { 0x2CC9, 0x2CC9 },
+ { 0x2CCB, 0x2CCB },
+ { 0x2CCD, 0x2CCD },
+ { 0x2CCF, 0x2CCF },
+ { 0x2CD1, 0x2CD1 },
+ { 0x2CD3, 0x2CD3 },
+ { 0x2CD5, 0x2CD5 },
+ { 0x2CD7, 0x2CD7 },
+ { 0x2CD9, 0x2CD9 },
+ { 0x2CDB, 0x2CDB },
+ { 0x2CDD, 0x2CDD },
+ { 0x2CDF, 0x2CDF },
+ { 0x2CE1, 0x2CE1 },
+ { 0x2CE3, 0x2CE4 },
+ { 0x2D00, 0x2D25 },
+ { 0xA641, 0xA641 },
+ { 0xA643, 0xA643 },
+ { 0xA645, 0xA645 },
+ { 0xA647, 0xA647 },
+ { 0xA649, 0xA649 },
+ { 0xA64B, 0xA64B },
+ { 0xA64D, 0xA64D },
+ { 0xA64F, 0xA64F },
+ { 0xA651, 0xA651 },
+ { 0xA653, 0xA653 },
+ { 0xA655, 0xA655 },
+ { 0xA657, 0xA657 },
+ { 0xA659, 0xA659 },
+ { 0xA65B, 0xA65B },
+ { 0xA65D, 0xA65D },
+ { 0xA65F, 0xA65F },
+ { 0xA663, 0xA663 },
+ { 0xA665, 0xA665 },
+ { 0xA667, 0xA667 },
+ { 0xA669, 0xA669 },
+ { 0xA66B, 0xA66B },
+ { 0xA66D, 0xA66D },
+ { 0xA681, 0xA681 },
+ { 0xA683, 0xA683 },
+ { 0xA685, 0xA685 },
+ { 0xA687, 0xA687 },
+ { 0xA689, 0xA689 },
+ { 0xA68B, 0xA68B },
+ { 0xA68D, 0xA68D },
+ { 0xA68F, 0xA68F },
+ { 0xA691, 0xA691 },
+ { 0xA693, 0xA693 },
+ { 0xA695, 0xA695 },
+ { 0xA697, 0xA697 },
+ { 0xA723, 0xA723 },
+ { 0xA725, 0xA725 },
+ { 0xA727, 0xA727 },
+ { 0xA729, 0xA729 },
+ { 0xA72B, 0xA72B },
+ { 0xA72D, 0xA72D },
+ { 0xA72F, 0xA731 },
+ { 0xA733, 0xA733 },
+ { 0xA735, 0xA735 },
+ { 0xA737, 0xA737 },
+ { 0xA739, 0xA739 },
+ { 0xA73B, 0xA73B },
+ { 0xA73D, 0xA73D },
+ { 0xA73F, 0xA73F },
+ { 0xA741, 0xA741 },
+ { 0xA743, 0xA743 },
+ { 0xA745, 0xA745 },
+ { 0xA747, 0xA747 },
+ { 0xA749, 0xA749 },
+ { 0xA74B, 0xA74B },
+ { 0xA74D, 0xA74D },
+ { 0xA74F, 0xA74F },
+ { 0xA751, 0xA751 },
+ { 0xA753, 0xA753 },
+ { 0xA755, 0xA755 },
+ { 0xA757, 0xA757 },
+ { 0xA759, 0xA759 },
+ { 0xA75B, 0xA75B },
+ { 0xA75D, 0xA75D },
+ { 0xA75F, 0xA75F },
+ { 0xA761, 0xA761 },
+ { 0xA763, 0xA763 },
+ { 0xA765, 0xA765 },
+ { 0xA767, 0xA767 },
+ { 0xA769, 0xA769 },
+ { 0xA76B, 0xA76B },
+ { 0xA76D, 0xA76D },
+ { 0xA76F, 0xA76F },
+ { 0xA771, 0xA778 },
+ { 0xA77A, 0xA77A },
+ { 0xA77C, 0xA77C },
+ { 0xA77F, 0xA77F },
+ { 0xA781, 0xA781 },
+ { 0xA783, 0xA783 },
+ { 0xA785, 0xA785 },
+ { 0xA787, 0xA787 },
+ { 0xA78C, 0xA78C },
+ { 0xFB00, 0xFB06 },
+ { 0xFB13, 0xFB17 },
+ { 0xFF41, 0xFF5A },
+ { 0x10428, 0x1044F },
+ { 0x1D41A, 0x1D433 },
+ { 0x1D44E, 0x1D454 },
+ { 0x1D456, 0x1D467 },
+ { 0x1D482, 0x1D49B },
+ { 0x1D4B6, 0x1D4B9 },
+ { 0x1D4BB, 0x1D4BB },
+ { 0x1D4BD, 0x1D4C3 },
+ { 0x1D4C5, 0x1D4CF },
+ { 0x1D4EA, 0x1D503 },
+ { 0x1D51E, 0x1D537 },
+ { 0x1D552, 0x1D56B },
+ { 0x1D586, 0x1D59F },
+ { 0x1D5BA, 0x1D5D3 },
+ { 0x1D5EE, 0x1D607 },
+ { 0x1D622, 0x1D63B },
+ { 0x1D656, 0x1D66F },
+ { 0x1D68A, 0x1D6A5 },
+ { 0x1D6C2, 0x1D6DA },
+ { 0x1D6DC, 0x1D6E1 },
+ { 0x1D6FC, 0x1D714 },
+ { 0x1D716, 0x1D71B },
+ { 0x1D736, 0x1D74E },
+ { 0x1D750, 0x1D755 },
+ { 0x1D770, 0x1D788 },
+ { 0x1D78A, 0x1D78F },
+ { 0x1D7AA, 0x1D7C2 },
+ { 0x1D7C4, 0x1D7C9 },
+ { 0x1D7CB, 0x1D7CB }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Ll)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Lm.c b/tests/unictype/test-categ_Lm.c
new file mode 100644
index 00000000..7444b164
--- /dev/null
+++ b/tests/unictype/test-categ_Lm.c
@@ -0,0 +1,61 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x02B0, 0x02C1 },
+ { 0x02C6, 0x02D1 },
+ { 0x02E0, 0x02E4 },
+ { 0x02EC, 0x02EC },
+ { 0x02EE, 0x02EE },
+ { 0x0374, 0x0374 },
+ { 0x037A, 0x037A },
+ { 0x0559, 0x0559 },
+ { 0x0640, 0x0640 },
+ { 0x06E5, 0x06E6 },
+ { 0x07F4, 0x07F5 },
+ { 0x07FA, 0x07FA },
+ { 0x0971, 0x0971 },
+ { 0x0E46, 0x0E46 },
+ { 0x0EC6, 0x0EC6 },
+ { 0x10FC, 0x10FC },
+ { 0x17D7, 0x17D7 },
+ { 0x1843, 0x1843 },
+ { 0x1C78, 0x1C7D },
+ { 0x1D2C, 0x1D61 },
+ { 0x1D78, 0x1D78 },
+ { 0x1D9B, 0x1DBF },
+ { 0x2090, 0x2094 },
+ { 0x2C7D, 0x2C7D },
+ { 0x2D6F, 0x2D6F },
+ { 0x2E2F, 0x2E2F },
+ { 0x3005, 0x3005 },
+ { 0x3031, 0x3035 },
+ { 0x303B, 0x303B },
+ { 0x309D, 0x309E },
+ { 0x30FC, 0x30FE },
+ { 0xA015, 0xA015 },
+ { 0xA60C, 0xA60C },
+ { 0xA67F, 0xA67F },
+ { 0xA717, 0xA71F },
+ { 0xA770, 0xA770 },
+ { 0xA788, 0xA788 },
+ { 0xFF70, 0xFF70 },
+ { 0xFF9E, 0xFF9F }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Lm)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Lo.c b/tests/unictype/test-categ_Lo.c
new file mode 100644
index 00000000..aaf69963
--- /dev/null
+++ b/tests/unictype/test-categ_Lo.c
@@ -0,0 +1,304 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x01BB, 0x01BB },
+ { 0x01C0, 0x01C3 },
+ { 0x0294, 0x0294 },
+ { 0x05D0, 0x05EA },
+ { 0x05F0, 0x05F2 },
+ { 0x0621, 0x063F },
+ { 0x0641, 0x064A },
+ { 0x066E, 0x066F },
+ { 0x0671, 0x06D3 },
+ { 0x06D5, 0x06D5 },
+ { 0x06EE, 0x06EF },
+ { 0x06FA, 0x06FC },
+ { 0x06FF, 0x06FF },
+ { 0x0710, 0x0710 },
+ { 0x0712, 0x072F },
+ { 0x074D, 0x07A5 },
+ { 0x07B1, 0x07B1 },
+ { 0x07CA, 0x07EA },
+ { 0x0904, 0x0939 },
+ { 0x093D, 0x093D },
+ { 0x0950, 0x0950 },
+ { 0x0958, 0x0961 },
+ { 0x0972, 0x0972 },
+ { 0x097B, 0x097F },
+ { 0x0985, 0x098C },
+ { 0x098F, 0x0990 },
+ { 0x0993, 0x09A8 },
+ { 0x09AA, 0x09B0 },
+ { 0x09B2, 0x09B2 },
+ { 0x09B6, 0x09B9 },
+ { 0x09BD, 0x09BD },
+ { 0x09CE, 0x09CE },
+ { 0x09DC, 0x09DD },
+ { 0x09DF, 0x09E1 },
+ { 0x09F0, 0x09F1 },
+ { 0x0A05, 0x0A0A },
+ { 0x0A0F, 0x0A10 },
+ { 0x0A13, 0x0A28 },
+ { 0x0A2A, 0x0A30 },
+ { 0x0A32, 0x0A33 },
+ { 0x0A35, 0x0A36 },
+ { 0x0A38, 0x0A39 },
+ { 0x0A59, 0x0A5C },
+ { 0x0A5E, 0x0A5E },
+ { 0x0A72, 0x0A74 },
+ { 0x0A85, 0x0A8D },
+ { 0x0A8F, 0x0A91 },
+ { 0x0A93, 0x0AA8 },
+ { 0x0AAA, 0x0AB0 },
+ { 0x0AB2, 0x0AB3 },
+ { 0x0AB5, 0x0AB9 },
+ { 0x0ABD, 0x0ABD },
+ { 0x0AD0, 0x0AD0 },
+ { 0x0AE0, 0x0AE1 },
+ { 0x0B05, 0x0B0C },
+ { 0x0B0F, 0x0B10 },
+ { 0x0B13, 0x0B28 },
+ { 0x0B2A, 0x0B30 },
+ { 0x0B32, 0x0B33 },
+ { 0x0B35, 0x0B39 },
+ { 0x0B3D, 0x0B3D },
+ { 0x0B5C, 0x0B5D },
+ { 0x0B5F, 0x0B61 },
+ { 0x0B71, 0x0B71 },
+ { 0x0B83, 0x0B83 },
+ { 0x0B85, 0x0B8A },
+ { 0x0B8E, 0x0B90 },
+ { 0x0B92, 0x0B95 },
+ { 0x0B99, 0x0B9A },
+ { 0x0B9C, 0x0B9C },
+ { 0x0B9E, 0x0B9F },
+ { 0x0BA3, 0x0BA4 },
+ { 0x0BA8, 0x0BAA },
+ { 0x0BAE, 0x0BB9 },
+ { 0x0BD0, 0x0BD0 },
+ { 0x0C05, 0x0C0C },
+ { 0x0C0E, 0x0C10 },
+ { 0x0C12, 0x0C28 },
+ { 0x0C2A, 0x0C33 },
+ { 0x0C35, 0x0C39 },
+ { 0x0C3D, 0x0C3D },
+ { 0x0C58, 0x0C59 },
+ { 0x0C60, 0x0C61 },
+ { 0x0C85, 0x0C8C },
+ { 0x0C8E, 0x0C90 },
+ { 0x0C92, 0x0CA8 },
+ { 0x0CAA, 0x0CB3 },
+ { 0x0CB5, 0x0CB9 },
+ { 0x0CBD, 0x0CBD },
+ { 0x0CDE, 0x0CDE },
+ { 0x0CE0, 0x0CE1 },
+ { 0x0D05, 0x0D0C },
+ { 0x0D0E, 0x0D10 },
+ { 0x0D12, 0x0D28 },
+ { 0x0D2A, 0x0D39 },
+ { 0x0D3D, 0x0D3D },
+ { 0x0D60, 0x0D61 },
+ { 0x0D7A, 0x0D7F },
+ { 0x0D85, 0x0D96 },
+ { 0x0D9A, 0x0DB1 },
+ { 0x0DB3, 0x0DBB },
+ { 0x0DBD, 0x0DBD },
+ { 0x0DC0, 0x0DC6 },
+ { 0x0E01, 0x0E30 },
+ { 0x0E32, 0x0E33 },
+ { 0x0E40, 0x0E45 },
+ { 0x0E81, 0x0E82 },
+ { 0x0E84, 0x0E84 },
+ { 0x0E87, 0x0E88 },
+ { 0x0E8A, 0x0E8A },
+ { 0x0E8D, 0x0E8D },
+ { 0x0E94, 0x0E97 },
+ { 0x0E99, 0x0E9F },
+ { 0x0EA1, 0x0EA3 },
+ { 0x0EA5, 0x0EA5 },
+ { 0x0EA7, 0x0EA7 },
+ { 0x0EAA, 0x0EAB },
+ { 0x0EAD, 0x0EB0 },
+ { 0x0EB2, 0x0EB3 },
+ { 0x0EBD, 0x0EBD },
+ { 0x0EC0, 0x0EC4 },
+ { 0x0EDC, 0x0EDD },
+ { 0x0F00, 0x0F00 },
+ { 0x0F40, 0x0F47 },
+ { 0x0F49, 0x0F6C },
+ { 0x0F88, 0x0F8B },
+ { 0x1000, 0x102A },
+ { 0x103F, 0x103F },
+ { 0x1050, 0x1055 },
+ { 0x105A, 0x105D },
+ { 0x1061, 0x1061 },
+ { 0x1065, 0x1066 },
+ { 0x106E, 0x1070 },
+ { 0x1075, 0x1081 },
+ { 0x108E, 0x108E },
+ { 0x10D0, 0x10FA },
+ { 0x1100, 0x1159 },
+ { 0x115F, 0x11A2 },
+ { 0x11A8, 0x11F9 },
+ { 0x1200, 0x1248 },
+ { 0x124A, 0x124D },
+ { 0x1250, 0x1256 },
+ { 0x1258, 0x1258 },
+ { 0x125A, 0x125D },
+ { 0x1260, 0x1288 },
+ { 0x128A, 0x128D },
+ { 0x1290, 0x12B0 },
+ { 0x12B2, 0x12B5 },
+ { 0x12B8, 0x12BE },
+ { 0x12C0, 0x12C0 },
+ { 0x12C2, 0x12C5 },
+ { 0x12C8, 0x12D6 },
+ { 0x12D8, 0x1310 },
+ { 0x1312, 0x1315 },
+ { 0x1318, 0x135A },
+ { 0x1380, 0x138F },
+ { 0x13A0, 0x13F4 },
+ { 0x1401, 0x166C },
+ { 0x166F, 0x1676 },
+ { 0x1681, 0x169A },
+ { 0x16A0, 0x16EA },
+ { 0x1700, 0x170C },
+ { 0x170E, 0x1711 },
+ { 0x1720, 0x1731 },
+ { 0x1740, 0x1751 },
+ { 0x1760, 0x176C },
+ { 0x176E, 0x1770 },
+ { 0x1780, 0x17B3 },
+ { 0x17DC, 0x17DC },
+ { 0x1820, 0x1842 },
+ { 0x1844, 0x1877 },
+ { 0x1880, 0x18A8 },
+ { 0x18AA, 0x18AA },
+ { 0x1900, 0x191C },
+ { 0x1950, 0x196D },
+ { 0x1970, 0x1974 },
+ { 0x1980, 0x19A9 },
+ { 0x19C1, 0x19C7 },
+ { 0x1A00, 0x1A16 },
+ { 0x1B05, 0x1B33 },
+ { 0x1B45, 0x1B4B },
+ { 0x1B83, 0x1BA0 },
+ { 0x1BAE, 0x1BAF },
+ { 0x1C00, 0x1C23 },
+ { 0x1C4D, 0x1C4F },
+ { 0x1C5A, 0x1C77 },
+ { 0x2135, 0x2138 },
+ { 0x2D30, 0x2D65 },
+ { 0x2D80, 0x2D96 },
+ { 0x2DA0, 0x2DA6 },
+ { 0x2DA8, 0x2DAE },
+ { 0x2DB0, 0x2DB6 },
+ { 0x2DB8, 0x2DBE },
+ { 0x2DC0, 0x2DC6 },
+ { 0x2DC8, 0x2DCE },
+ { 0x2DD0, 0x2DD6 },
+ { 0x2DD8, 0x2DDE },
+ { 0x3006, 0x3006 },
+ { 0x303C, 0x303C },
+ { 0x3041, 0x3096 },
+ { 0x309F, 0x309F },
+ { 0x30A1, 0x30FA },
+ { 0x30FF, 0x30FF },
+ { 0x3105, 0x312D },
+ { 0x3131, 0x318E },
+ { 0x31A0, 0x31B7 },
+ { 0x31F0, 0x31FF },
+ { 0x3400, 0x4DB5 },
+ { 0x4E00, 0x9FC3 },
+ { 0xA000, 0xA014 },
+ { 0xA016, 0xA48C },
+ { 0xA500, 0xA60B },
+ { 0xA610, 0xA61F },
+ { 0xA62A, 0xA62B },
+ { 0xA66E, 0xA66E },
+ { 0xA7FB, 0xA801 },
+ { 0xA803, 0xA805 },
+ { 0xA807, 0xA80A },
+ { 0xA80C, 0xA822 },
+ { 0xA840, 0xA873 },
+ { 0xA882, 0xA8B3 },
+ { 0xA90A, 0xA925 },
+ { 0xA930, 0xA946 },
+ { 0xAA00, 0xAA28 },
+ { 0xAA40, 0xAA42 },
+ { 0xAA44, 0xAA4B },
+ { 0xAC00, 0xD7A3 },
+ { 0xF900, 0xFA2D },
+ { 0xFA30, 0xFA6A },
+ { 0xFA70, 0xFAD9 },
+ { 0xFB1D, 0xFB1D },
+ { 0xFB1F, 0xFB28 },
+ { 0xFB2A, 0xFB36 },
+ { 0xFB38, 0xFB3C },
+ { 0xFB3E, 0xFB3E },
+ { 0xFB40, 0xFB41 },
+ { 0xFB43, 0xFB44 },
+ { 0xFB46, 0xFBB1 },
+ { 0xFBD3, 0xFD3D },
+ { 0xFD50, 0xFD8F },
+ { 0xFD92, 0xFDC7 },
+ { 0xFDF0, 0xFDFB },
+ { 0xFE70, 0xFE74 },
+ { 0xFE76, 0xFEFC },
+ { 0xFF66, 0xFF6F },
+ { 0xFF71, 0xFF9D },
+ { 0xFFA0, 0xFFBE },
+ { 0xFFC2, 0xFFC7 },
+ { 0xFFCA, 0xFFCF },
+ { 0xFFD2, 0xFFD7 },
+ { 0xFFDA, 0xFFDC },
+ { 0x10000, 0x1000B },
+ { 0x1000D, 0x10026 },
+ { 0x10028, 0x1003A },
+ { 0x1003C, 0x1003D },
+ { 0x1003F, 0x1004D },
+ { 0x10050, 0x1005D },
+ { 0x10080, 0x100FA },
+ { 0x10280, 0x1029C },
+ { 0x102A0, 0x102D0 },
+ { 0x10300, 0x1031E },
+ { 0x10330, 0x10340 },
+ { 0x10342, 0x10349 },
+ { 0x10380, 0x1039D },
+ { 0x103A0, 0x103C3 },
+ { 0x103C8, 0x103CF },
+ { 0x10450, 0x1049D },
+ { 0x10800, 0x10805 },
+ { 0x10808, 0x10808 },
+ { 0x1080A, 0x10835 },
+ { 0x10837, 0x10838 },
+ { 0x1083C, 0x1083C },
+ { 0x1083F, 0x1083F },
+ { 0x10900, 0x10915 },
+ { 0x10920, 0x10939 },
+ { 0x10A00, 0x10A00 },
+ { 0x10A10, 0x10A13 },
+ { 0x10A15, 0x10A17 },
+ { 0x10A19, 0x10A33 },
+ { 0x12000, 0x1236E },
+ { 0x20000, 0x2A6D6 },
+ { 0x2F800, 0x2FA1D }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Lo)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Lt.c b/tests/unictype/test-categ_Lt.c
new file mode 100644
index 00000000..6f319237
--- /dev/null
+++ b/tests/unictype/test-categ_Lt.c
@@ -0,0 +1,32 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x01C5, 0x01C5 },
+ { 0x01C8, 0x01C8 },
+ { 0x01CB, 0x01CB },
+ { 0x01F2, 0x01F2 },
+ { 0x1F88, 0x1F8F },
+ { 0x1F98, 0x1F9F },
+ { 0x1FA8, 0x1FAF },
+ { 0x1FBC, 0x1FBC },
+ { 0x1FCC, 0x1FCC },
+ { 0x1FFC, 0x1FFC }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Lt)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Lu.c b/tests/unictype/test-categ_Lu.c
new file mode 100644
index 00000000..1ed6b403
--- /dev/null
+++ b/tests/unictype/test-categ_Lu.c
@@ -0,0 +1,613 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0041, 0x005A },
+ { 0x00C0, 0x00D6 },
+ { 0x00D8, 0x00DE },
+ { 0x0100, 0x0100 },
+ { 0x0102, 0x0102 },
+ { 0x0104, 0x0104 },
+ { 0x0106, 0x0106 },
+ { 0x0108, 0x0108 },
+ { 0x010A, 0x010A },
+ { 0x010C, 0x010C },
+ { 0x010E, 0x010E },
+ { 0x0110, 0x0110 },
+ { 0x0112, 0x0112 },
+ { 0x0114, 0x0114 },
+ { 0x0116, 0x0116 },
+ { 0x0118, 0x0118 },
+ { 0x011A, 0x011A },
+ { 0x011C, 0x011C },
+ { 0x011E, 0x011E },
+ { 0x0120, 0x0120 },
+ { 0x0122, 0x0122 },
+ { 0x0124, 0x0124 },
+ { 0x0126, 0x0126 },
+ { 0x0128, 0x0128 },
+ { 0x012A, 0x012A },
+ { 0x012C, 0x012C },
+ { 0x012E, 0x012E },
+ { 0x0130, 0x0130 },
+ { 0x0132, 0x0132 },
+ { 0x0134, 0x0134 },
+ { 0x0136, 0x0136 },
+ { 0x0139, 0x0139 },
+ { 0x013B, 0x013B },
+ { 0x013D, 0x013D },
+ { 0x013F, 0x013F },
+ { 0x0141, 0x0141 },
+ { 0x0143, 0x0143 },
+ { 0x0145, 0x0145 },
+ { 0x0147, 0x0147 },
+ { 0x014A, 0x014A },
+ { 0x014C, 0x014C },
+ { 0x014E, 0x014E },
+ { 0x0150, 0x0150 },
+ { 0x0152, 0x0152 },
+ { 0x0154, 0x0154 },
+ { 0x0156, 0x0156 },
+ { 0x0158, 0x0158 },
+ { 0x015A, 0x015A },
+ { 0x015C, 0x015C },
+ { 0x015E, 0x015E },
+ { 0x0160, 0x0160 },
+ { 0x0162, 0x0162 },
+ { 0x0164, 0x0164 },
+ { 0x0166, 0x0166 },
+ { 0x0168, 0x0168 },
+ { 0x016A, 0x016A },
+ { 0x016C, 0x016C },
+ { 0x016E, 0x016E },
+ { 0x0170, 0x0170 },
+ { 0x0172, 0x0172 },
+ { 0x0174, 0x0174 },
+ { 0x0176, 0x0176 },
+ { 0x0178, 0x0179 },
+ { 0x017B, 0x017B },
+ { 0x017D, 0x017D },
+ { 0x0181, 0x0182 },
+ { 0x0184, 0x0184 },
+ { 0x0186, 0x0187 },
+ { 0x0189, 0x018B },
+ { 0x018E, 0x0191 },
+ { 0x0193, 0x0194 },
+ { 0x0196, 0x0198 },
+ { 0x019C, 0x019D },
+ { 0x019F, 0x01A0 },
+ { 0x01A2, 0x01A2 },
+ { 0x01A4, 0x01A4 },
+ { 0x01A6, 0x01A7 },
+ { 0x01A9, 0x01A9 },
+ { 0x01AC, 0x01AC },
+ { 0x01AE, 0x01AF },
+ { 0x01B1, 0x01B3 },
+ { 0x01B5, 0x01B5 },
+ { 0x01B7, 0x01B8 },
+ { 0x01BC, 0x01BC },
+ { 0x01C4, 0x01C4 },
+ { 0x01C7, 0x01C7 },
+ { 0x01CA, 0x01CA },
+ { 0x01CD, 0x01CD },
+ { 0x01CF, 0x01CF },
+ { 0x01D1, 0x01D1 },
+ { 0x01D3, 0x01D3 },
+ { 0x01D5, 0x01D5 },
+ { 0x01D7, 0x01D7 },
+ { 0x01D9, 0x01D9 },
+ { 0x01DB, 0x01DB },
+ { 0x01DE, 0x01DE },
+ { 0x01E0, 0x01E0 },
+ { 0x01E2, 0x01E2 },
+ { 0x01E4, 0x01E4 },
+ { 0x01E6, 0x01E6 },
+ { 0x01E8, 0x01E8 },
+ { 0x01EA, 0x01EA },
+ { 0x01EC, 0x01EC },
+ { 0x01EE, 0x01EE },
+ { 0x01F1, 0x01F1 },
+ { 0x01F4, 0x01F4 },
+ { 0x01F6, 0x01F8 },
+ { 0x01FA, 0x01FA },
+ { 0x01FC, 0x01FC },
+ { 0x01FE, 0x01FE },
+ { 0x0200, 0x0200 },
+ { 0x0202, 0x0202 },
+ { 0x0204, 0x0204 },
+ { 0x0206, 0x0206 },
+ { 0x0208, 0x0208 },
+ { 0x020A, 0x020A },
+ { 0x020C, 0x020C },
+ { 0x020E, 0x020E },
+ { 0x0210, 0x0210 },
+ { 0x0212, 0x0212 },
+ { 0x0214, 0x0214 },
+ { 0x0216, 0x0216 },
+ { 0x0218, 0x0218 },
+ { 0x021A, 0x021A },
+ { 0x021C, 0x021C },
+ { 0x021E, 0x021E },
+ { 0x0220, 0x0220 },
+ { 0x0222, 0x0222 },
+ { 0x0224, 0x0224 },
+ { 0x0226, 0x0226 },
+ { 0x0228, 0x0228 },
+ { 0x022A, 0x022A },
+ { 0x022C, 0x022C },
+ { 0x022E, 0x022E },
+ { 0x0230, 0x0230 },
+ { 0x0232, 0x0232 },
+ { 0x023A, 0x023B },
+ { 0x023D, 0x023E },
+ { 0x0241, 0x0241 },
+ { 0x0243, 0x0246 },
+ { 0x0248, 0x0248 },
+ { 0x024A, 0x024A },
+ { 0x024C, 0x024C },
+ { 0x024E, 0x024E },
+ { 0x0370, 0x0370 },
+ { 0x0372, 0x0372 },
+ { 0x0376, 0x0376 },
+ { 0x0386, 0x0386 },
+ { 0x0388, 0x038A },
+ { 0x038C, 0x038C },
+ { 0x038E, 0x038F },
+ { 0x0391, 0x03A1 },
+ { 0x03A3, 0x03AB },
+ { 0x03CF, 0x03CF },
+ { 0x03D2, 0x03D4 },
+ { 0x03D8, 0x03D8 },
+ { 0x03DA, 0x03DA },
+ { 0x03DC, 0x03DC },
+ { 0x03DE, 0x03DE },
+ { 0x03E0, 0x03E0 },
+ { 0x03E2, 0x03E2 },
+ { 0x03E4, 0x03E4 },
+ { 0x03E6, 0x03E6 },
+ { 0x03E8, 0x03E8 },
+ { 0x03EA, 0x03EA },
+ { 0x03EC, 0x03EC },
+ { 0x03EE, 0x03EE },
+ { 0x03F4, 0x03F4 },
+ { 0x03F7, 0x03F7 },
+ { 0x03F9, 0x03FA },
+ { 0x03FD, 0x042F },
+ { 0x0460, 0x0460 },
+ { 0x0462, 0x0462 },
+ { 0x0464, 0x0464 },
+ { 0x0466, 0x0466 },
+ { 0x0468, 0x0468 },
+ { 0x046A, 0x046A },
+ { 0x046C, 0x046C },
+ { 0x046E, 0x046E },
+ { 0x0470, 0x0470 },
+ { 0x0472, 0x0472 },
+ { 0x0474, 0x0474 },
+ { 0x0476, 0x0476 },
+ { 0x0478, 0x0478 },
+ { 0x047A, 0x047A },
+ { 0x047C, 0x047C },
+ { 0x047E, 0x047E },
+ { 0x0480, 0x0480 },
+ { 0x048A, 0x048A },
+ { 0x048C, 0x048C },
+ { 0x048E, 0x048E },
+ { 0x0490, 0x0490 },
+ { 0x0492, 0x0492 },
+ { 0x0494, 0x0494 },
+ { 0x0496, 0x0496 },
+ { 0x0498, 0x0498 },
+ { 0x049A, 0x049A },
+ { 0x049C, 0x049C },
+ { 0x049E, 0x049E },
+ { 0x04A0, 0x04A0 },
+ { 0x04A2, 0x04A2 },
+ { 0x04A4, 0x04A4 },
+ { 0x04A6, 0x04A6 },
+ { 0x04A8, 0x04A8 },
+ { 0x04AA, 0x04AA },
+ { 0x04AC, 0x04AC },
+ { 0x04AE, 0x04AE },
+ { 0x04B0, 0x04B0 },
+ { 0x04B2, 0x04B2 },
+ { 0x04B4, 0x04B4 },
+ { 0x04B6, 0x04B6 },
+ { 0x04B8, 0x04B8 },
+ { 0x04BA, 0x04BA },
+ { 0x04BC, 0x04BC },
+ { 0x04BE, 0x04BE },
+ { 0x04C0, 0x04C1 },
+ { 0x04C3, 0x04C3 },
+ { 0x04C5, 0x04C5 },
+ { 0x04C7, 0x04C7 },
+ { 0x04C9, 0x04C9 },
+ { 0x04CB, 0x04CB },
+ { 0x04CD, 0x04CD },
+ { 0x04D0, 0x04D0 },
+ { 0x04D2, 0x04D2 },
+ { 0x04D4, 0x04D4 },
+ { 0x04D6, 0x04D6 },
+ { 0x04D8, 0x04D8 },
+ { 0x04DA, 0x04DA },
+ { 0x04DC, 0x04DC },
+ { 0x04DE, 0x04DE },
+ { 0x04E0, 0x04E0 },
+ { 0x04E2, 0x04E2 },
+ { 0x04E4, 0x04E4 },
+ { 0x04E6, 0x04E6 },
+ { 0x04E8, 0x04E8 },
+ { 0x04EA, 0x04EA },
+ { 0x04EC, 0x04EC },
+ { 0x04EE, 0x04EE },
+ { 0x04F0, 0x04F0 },
+ { 0x04F2, 0x04F2 },
+ { 0x04F4, 0x04F4 },
+ { 0x04F6, 0x04F6 },
+ { 0x04F8, 0x04F8 },
+ { 0x04FA, 0x04FA },
+ { 0x04FC, 0x04FC },
+ { 0x04FE, 0x04FE },
+ { 0x0500, 0x0500 },
+ { 0x0502, 0x0502 },
+ { 0x0504, 0x0504 },
+ { 0x0506, 0x0506 },
+ { 0x0508, 0x0508 },
+ { 0x050A, 0x050A },
+ { 0x050C, 0x050C },
+ { 0x050E, 0x050E },
+ { 0x0510, 0x0510 },
+ { 0x0512, 0x0512 },
+ { 0x0514, 0x0514 },
+ { 0x0516, 0x0516 },
+ { 0x0518, 0x0518 },
+ { 0x051A, 0x051A },
+ { 0x051C, 0x051C },
+ { 0x051E, 0x051E },
+ { 0x0520, 0x0520 },
+ { 0x0522, 0x0522 },
+ { 0x0531, 0x0556 },
+ { 0x10A0, 0x10C5 },
+ { 0x1E00, 0x1E00 },
+ { 0x1E02, 0x1E02 },
+ { 0x1E04, 0x1E04 },
+ { 0x1E06, 0x1E06 },
+ { 0x1E08, 0x1E08 },
+ { 0x1E0A, 0x1E0A },
+ { 0x1E0C, 0x1E0C },
+ { 0x1E0E, 0x1E0E },
+ { 0x1E10, 0x1E10 },
+ { 0x1E12, 0x1E12 },
+ { 0x1E14, 0x1E14 },
+ { 0x1E16, 0x1E16 },
+ { 0x1E18, 0x1E18 },
+ { 0x1E1A, 0x1E1A },
+ { 0x1E1C, 0x1E1C },
+ { 0x1E1E, 0x1E1E },
+ { 0x1E20, 0x1E20 },
+ { 0x1E22, 0x1E22 },
+ { 0x1E24, 0x1E24 },
+ { 0x1E26, 0x1E26 },
+ { 0x1E28, 0x1E28 },
+ { 0x1E2A, 0x1E2A },
+ { 0x1E2C, 0x1E2C },
+ { 0x1E2E, 0x1E2E },
+ { 0x1E30, 0x1E30 },
+ { 0x1E32, 0x1E32 },
+ { 0x1E34, 0x1E34 },
+ { 0x1E36, 0x1E36 },
+ { 0x1E38, 0x1E38 },
+ { 0x1E3A, 0x1E3A },
+ { 0x1E3C, 0x1E3C },
+ { 0x1E3E, 0x1E3E },
+ { 0x1E40, 0x1E40 },
+ { 0x1E42, 0x1E42 },
+ { 0x1E44, 0x1E44 },
+ { 0x1E46, 0x1E46 },
+ { 0x1E48, 0x1E48 },
+ { 0x1E4A, 0x1E4A },
+ { 0x1E4C, 0x1E4C },
+ { 0x1E4E, 0x1E4E },
+ { 0x1E50, 0x1E50 },
+ { 0x1E52, 0x1E52 },
+ { 0x1E54, 0x1E54 },
+ { 0x1E56, 0x1E56 },
+ { 0x1E58, 0x1E58 },
+ { 0x1E5A, 0x1E5A },
+ { 0x1E5C, 0x1E5C },
+ { 0x1E5E, 0x1E5E },
+ { 0x1E60, 0x1E60 },
+ { 0x1E62, 0x1E62 },
+ { 0x1E64, 0x1E64 },
+ { 0x1E66, 0x1E66 },
+ { 0x1E68, 0x1E68 },
+ { 0x1E6A, 0x1E6A },
+ { 0x1E6C, 0x1E6C },
+ { 0x1E6E, 0x1E6E },
+ { 0x1E70, 0x1E70 },
+ { 0x1E72, 0x1E72 },
+ { 0x1E74, 0x1E74 },
+ { 0x1E76, 0x1E76 },
+ { 0x1E78, 0x1E78 },
+ { 0x1E7A, 0x1E7A },
+ { 0x1E7C, 0x1E7C },
+ { 0x1E7E, 0x1E7E },
+ { 0x1E80, 0x1E80 },
+ { 0x1E82, 0x1E82 },
+ { 0x1E84, 0x1E84 },
+ { 0x1E86, 0x1E86 },
+ { 0x1E88, 0x1E88 },
+ { 0x1E8A, 0x1E8A },
+ { 0x1E8C, 0x1E8C },
+ { 0x1E8E, 0x1E8E },
+ { 0x1E90, 0x1E90 },
+ { 0x1E92, 0x1E92 },
+ { 0x1E94, 0x1E94 },
+ { 0x1E9E, 0x1E9E },
+ { 0x1EA0, 0x1EA0 },
+ { 0x1EA2, 0x1EA2 },
+ { 0x1EA4, 0x1EA4 },
+ { 0x1EA6, 0x1EA6 },
+ { 0x1EA8, 0x1EA8 },
+ { 0x1EAA, 0x1EAA },
+ { 0x1EAC, 0x1EAC },
+ { 0x1EAE, 0x1EAE },
+ { 0x1EB0, 0x1EB0 },
+ { 0x1EB2, 0x1EB2 },
+ { 0x1EB4, 0x1EB4 },
+ { 0x1EB6, 0x1EB6 },
+ { 0x1EB8, 0x1EB8 },
+ { 0x1EBA, 0x1EBA },
+ { 0x1EBC, 0x1EBC },
+ { 0x1EBE, 0x1EBE },
+ { 0x1EC0, 0x1EC0 },
+ { 0x1EC2, 0x1EC2 },
+ { 0x1EC4, 0x1EC4 },
+ { 0x1EC6, 0x1EC6 },
+ { 0x1EC8, 0x1EC8 },
+ { 0x1ECA, 0x1ECA },
+ { 0x1ECC, 0x1ECC },
+ { 0x1ECE, 0x1ECE },
+ { 0x1ED0, 0x1ED0 },
+ { 0x1ED2, 0x1ED2 },
+ { 0x1ED4, 0x1ED4 },
+ { 0x1ED6, 0x1ED6 },
+ { 0x1ED8, 0x1ED8 },
+ { 0x1EDA, 0x1EDA },
+ { 0x1EDC, 0x1EDC },
+ { 0x1EDE, 0x1EDE },
+ { 0x1EE0, 0x1EE0 },
+ { 0x1EE2, 0x1EE2 },
+ { 0x1EE4, 0x1EE4 },
+ { 0x1EE6, 0x1EE6 },
+ { 0x1EE8, 0x1EE8 },
+ { 0x1EEA, 0x1EEA },
+ { 0x1EEC, 0x1EEC },
+ { 0x1EEE, 0x1EEE },
+ { 0x1EF0, 0x1EF0 },
+ { 0x1EF2, 0x1EF2 },
+ { 0x1EF4, 0x1EF4 },
+ { 0x1EF6, 0x1EF6 },
+ { 0x1EF8, 0x1EF8 },
+ { 0x1EFA, 0x1EFA },
+ { 0x1EFC, 0x1EFC },
+ { 0x1EFE, 0x1EFE },
+ { 0x1F08, 0x1F0F },
+ { 0x1F18, 0x1F1D },
+ { 0x1F28, 0x1F2F },
+ { 0x1F38, 0x1F3F },
+ { 0x1F48, 0x1F4D },
+ { 0x1F59, 0x1F59 },
+ { 0x1F5B, 0x1F5B },
+ { 0x1F5D, 0x1F5D },
+ { 0x1F5F, 0x1F5F },
+ { 0x1F68, 0x1F6F },
+ { 0x1FB8, 0x1FBB },
+ { 0x1FC8, 0x1FCB },
+ { 0x1FD8, 0x1FDB },
+ { 0x1FE8, 0x1FEC },
+ { 0x1FF8, 0x1FFB },
+ { 0x2102, 0x2102 },
+ { 0x2107, 0x2107 },
+ { 0x210B, 0x210D },
+ { 0x2110, 0x2112 },
+ { 0x2115, 0x2115 },
+ { 0x2119, 0x211D },
+ { 0x2124, 0x2124 },
+ { 0x2126, 0x2126 },
+ { 0x2128, 0x2128 },
+ { 0x212A, 0x212D },
+ { 0x2130, 0x2133 },
+ { 0x213E, 0x213F },
+ { 0x2145, 0x2145 },
+ { 0x2183, 0x2183 },
+ { 0x2C00, 0x2C2E },
+ { 0x2C60, 0x2C60 },
+ { 0x2C62, 0x2C64 },
+ { 0x2C67, 0x2C67 },
+ { 0x2C69, 0x2C69 },
+ { 0x2C6B, 0x2C6B },
+ { 0x2C6D, 0x2C6F },
+ { 0x2C72, 0x2C72 },
+ { 0x2C75, 0x2C75 },
+ { 0x2C80, 0x2C80 },
+ { 0x2C82, 0x2C82 },
+ { 0x2C84, 0x2C84 },
+ { 0x2C86, 0x2C86 },
+ { 0x2C88, 0x2C88 },
+ { 0x2C8A, 0x2C8A },
+ { 0x2C8C, 0x2C8C },
+ { 0x2C8E, 0x2C8E },
+ { 0x2C90, 0x2C90 },
+ { 0x2C92, 0x2C92 },
+ { 0x2C94, 0x2C94 },
+ { 0x2C96, 0x2C96 },
+ { 0x2C98, 0x2C98 },
+ { 0x2C9A, 0x2C9A },
+ { 0x2C9C, 0x2C9C },
+ { 0x2C9E, 0x2C9E },
+ { 0x2CA0, 0x2CA0 },
+ { 0x2CA2, 0x2CA2 },
+ { 0x2CA4, 0x2CA4 },
+ { 0x2CA6, 0x2CA6 },
+ { 0x2CA8, 0x2CA8 },
+ { 0x2CAA, 0x2CAA },
+ { 0x2CAC, 0x2CAC },
+ { 0x2CAE, 0x2CAE },
+ { 0x2CB0, 0x2CB0 },
+ { 0x2CB2, 0x2CB2 },
+ { 0x2CB4, 0x2CB4 },
+ { 0x2CB6, 0x2CB6 },
+ { 0x2CB8, 0x2CB8 },
+ { 0x2CBA, 0x2CBA },
+ { 0x2CBC, 0x2CBC },
+ { 0x2CBE, 0x2CBE },
+ { 0x2CC0, 0x2CC0 },
+ { 0x2CC2, 0x2CC2 },
+ { 0x2CC4, 0x2CC4 },
+ { 0x2CC6, 0x2CC6 },
+ { 0x2CC8, 0x2CC8 },
+ { 0x2CCA, 0x2CCA },
+ { 0x2CCC, 0x2CCC },
+ { 0x2CCE, 0x2CCE },
+ { 0x2CD0, 0x2CD0 },
+ { 0x2CD2, 0x2CD2 },
+ { 0x2CD4, 0x2CD4 },
+ { 0x2CD6, 0x2CD6 },
+ { 0x2CD8, 0x2CD8 },
+ { 0x2CDA, 0x2CDA },
+ { 0x2CDC, 0x2CDC },
+ { 0x2CDE, 0x2CDE },
+ { 0x2CE0, 0x2CE0 },
+ { 0x2CE2, 0x2CE2 },
+ { 0xA640, 0xA640 },
+ { 0xA642, 0xA642 },
+ { 0xA644, 0xA644 },
+ { 0xA646, 0xA646 },
+ { 0xA648, 0xA648 },
+ { 0xA64A, 0xA64A },
+ { 0xA64C, 0xA64C },
+ { 0xA64E, 0xA64E },
+ { 0xA650, 0xA650 },
+ { 0xA652, 0xA652 },
+ { 0xA654, 0xA654 },
+ { 0xA656, 0xA656 },
+ { 0xA658, 0xA658 },
+ { 0xA65A, 0xA65A },
+ { 0xA65C, 0xA65C },
+ { 0xA65E, 0xA65E },
+ { 0xA662, 0xA662 },
+ { 0xA664, 0xA664 },
+ { 0xA666, 0xA666 },
+ { 0xA668, 0xA668 },
+ { 0xA66A, 0xA66A },
+ { 0xA66C, 0xA66C },
+ { 0xA680, 0xA680 },
+ { 0xA682, 0xA682 },
+ { 0xA684, 0xA684 },
+ { 0xA686, 0xA686 },
+ { 0xA688, 0xA688 },
+ { 0xA68A, 0xA68A },
+ { 0xA68C, 0xA68C },
+ { 0xA68E, 0xA68E },
+ { 0xA690, 0xA690 },
+ { 0xA692, 0xA692 },
+ { 0xA694, 0xA694 },
+ { 0xA696, 0xA696 },
+ { 0xA722, 0xA722 },
+ { 0xA724, 0xA724 },
+ { 0xA726, 0xA726 },
+ { 0xA728, 0xA728 },
+ { 0xA72A, 0xA72A },
+ { 0xA72C, 0xA72C },
+ { 0xA72E, 0xA72E },
+ { 0xA732, 0xA732 },
+ { 0xA734, 0xA734 },
+ { 0xA736, 0xA736 },
+ { 0xA738, 0xA738 },
+ { 0xA73A, 0xA73A },
+ { 0xA73C, 0xA73C },
+ { 0xA73E, 0xA73E },
+ { 0xA740, 0xA740 },
+ { 0xA742, 0xA742 },
+ { 0xA744, 0xA744 },
+ { 0xA746, 0xA746 },
+ { 0xA748, 0xA748 },
+ { 0xA74A, 0xA74A },
+ { 0xA74C, 0xA74C },
+ { 0xA74E, 0xA74E },
+ { 0xA750, 0xA750 },
+ { 0xA752, 0xA752 },
+ { 0xA754, 0xA754 },
+ { 0xA756, 0xA756 },
+ { 0xA758, 0xA758 },
+ { 0xA75A, 0xA75A },
+ { 0xA75C, 0xA75C },
+ { 0xA75E, 0xA75E },
+ { 0xA760, 0xA760 },
+ { 0xA762, 0xA762 },
+ { 0xA764, 0xA764 },
+ { 0xA766, 0xA766 },
+ { 0xA768, 0xA768 },
+ { 0xA76A, 0xA76A },
+ { 0xA76C, 0xA76C },
+ { 0xA76E, 0xA76E },
+ { 0xA779, 0xA779 },
+ { 0xA77B, 0xA77B },
+ { 0xA77D, 0xA77E },
+ { 0xA780, 0xA780 },
+ { 0xA782, 0xA782 },
+ { 0xA784, 0xA784 },
+ { 0xA786, 0xA786 },
+ { 0xA78B, 0xA78B },
+ { 0xFF21, 0xFF3A },
+ { 0x10400, 0x10427 },
+ { 0x1D400, 0x1D419 },
+ { 0x1D434, 0x1D44D },
+ { 0x1D468, 0x1D481 },
+ { 0x1D49C, 0x1D49C },
+ { 0x1D49E, 0x1D49F },
+ { 0x1D4A2, 0x1D4A2 },
+ { 0x1D4A5, 0x1D4A6 },
+ { 0x1D4A9, 0x1D4AC },
+ { 0x1D4AE, 0x1D4B5 },
+ { 0x1D4D0, 0x1D4E9 },
+ { 0x1D504, 0x1D505 },
+ { 0x1D507, 0x1D50A },
+ { 0x1D50D, 0x1D514 },
+ { 0x1D516, 0x1D51C },
+ { 0x1D538, 0x1D539 },
+ { 0x1D53B, 0x1D53E },
+ { 0x1D540, 0x1D544 },
+ { 0x1D546, 0x1D546 },
+ { 0x1D54A, 0x1D550 },
+ { 0x1D56C, 0x1D585 },
+ { 0x1D5A0, 0x1D5B9 },
+ { 0x1D5D4, 0x1D5ED },
+ { 0x1D608, 0x1D621 },
+ { 0x1D63C, 0x1D655 },
+ { 0x1D670, 0x1D689 },
+ { 0x1D6A8, 0x1D6C0 },
+ { 0x1D6E2, 0x1D6FA },
+ { 0x1D71C, 0x1D734 },
+ { 0x1D756, 0x1D76E },
+ { 0x1D790, 0x1D7A8 },
+ { 0x1D7CA, 0x1D7CA }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Lu)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_M.c b/tests/unictype/test-categ_M.c
new file mode 100644
index 00000000..c6138d6e
--- /dev/null
+++ b/tests/unictype/test-categ_M.c
@@ -0,0 +1,183 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0300, 0x036F },
+ { 0x0483, 0x0489 },
+ { 0x0591, 0x05BD },
+ { 0x05BF, 0x05BF },
+ { 0x05C1, 0x05C2 },
+ { 0x05C4, 0x05C5 },
+ { 0x05C7, 0x05C7 },
+ { 0x0610, 0x061A },
+ { 0x064B, 0x065E },
+ { 0x0670, 0x0670 },
+ { 0x06D6, 0x06DC },
+ { 0x06DE, 0x06E4 },
+ { 0x06E7, 0x06E8 },
+ { 0x06EA, 0x06ED },
+ { 0x0711, 0x0711 },
+ { 0x0730, 0x074A },
+ { 0x07A6, 0x07B0 },
+ { 0x07EB, 0x07F3 },
+ { 0x0901, 0x0903 },
+ { 0x093C, 0x093C },
+ { 0x093E, 0x094D },
+ { 0x0951, 0x0954 },
+ { 0x0962, 0x0963 },
+ { 0x0981, 0x0983 },
+ { 0x09BC, 0x09BC },
+ { 0x09BE, 0x09C4 },
+ { 0x09C7, 0x09C8 },
+ { 0x09CB, 0x09CD },
+ { 0x09D7, 0x09D7 },
+ { 0x09E2, 0x09E3 },
+ { 0x0A01, 0x0A03 },
+ { 0x0A3C, 0x0A3C },
+ { 0x0A3E, 0x0A42 },
+ { 0x0A47, 0x0A48 },
+ { 0x0A4B, 0x0A4D },
+ { 0x0A51, 0x0A51 },
+ { 0x0A70, 0x0A71 },
+ { 0x0A75, 0x0A75 },
+ { 0x0A81, 0x0A83 },
+ { 0x0ABC, 0x0ABC },
+ { 0x0ABE, 0x0AC5 },
+ { 0x0AC7, 0x0AC9 },
+ { 0x0ACB, 0x0ACD },
+ { 0x0AE2, 0x0AE3 },
+ { 0x0B01, 0x0B03 },
+ { 0x0B3C, 0x0B3C },
+ { 0x0B3E, 0x0B44 },
+ { 0x0B47, 0x0B48 },
+ { 0x0B4B, 0x0B4D },
+ { 0x0B56, 0x0B57 },
+ { 0x0B62, 0x0B63 },
+ { 0x0B82, 0x0B82 },
+ { 0x0BBE, 0x0BC2 },
+ { 0x0BC6, 0x0BC8 },
+ { 0x0BCA, 0x0BCD },
+ { 0x0BD7, 0x0BD7 },
+ { 0x0C01, 0x0C03 },
+ { 0x0C3E, 0x0C44 },
+ { 0x0C46, 0x0C48 },
+ { 0x0C4A, 0x0C4D },
+ { 0x0C55, 0x0C56 },
+ { 0x0C62, 0x0C63 },
+ { 0x0C82, 0x0C83 },
+ { 0x0CBC, 0x0CBC },
+ { 0x0CBE, 0x0CC4 },
+ { 0x0CC6, 0x0CC8 },
+ { 0x0CCA, 0x0CCD },
+ { 0x0CD5, 0x0CD6 },
+ { 0x0CE2, 0x0CE3 },
+ { 0x0D02, 0x0D03 },
+ { 0x0D3E, 0x0D44 },
+ { 0x0D46, 0x0D48 },
+ { 0x0D4A, 0x0D4D },
+ { 0x0D57, 0x0D57 },
+ { 0x0D62, 0x0D63 },
+ { 0x0D82, 0x0D83 },
+ { 0x0DCA, 0x0DCA },
+ { 0x0DCF, 0x0DD4 },
+ { 0x0DD6, 0x0DD6 },
+ { 0x0DD8, 0x0DDF },
+ { 0x0DF2, 0x0DF3 },
+ { 0x0E31, 0x0E31 },
+ { 0x0E34, 0x0E3A },
+ { 0x0E47, 0x0E4E },
+ { 0x0EB1, 0x0EB1 },
+ { 0x0EB4, 0x0EB9 },
+ { 0x0EBB, 0x0EBC },
+ { 0x0EC8, 0x0ECD },
+ { 0x0F18, 0x0F19 },
+ { 0x0F35, 0x0F35 },
+ { 0x0F37, 0x0F37 },
+ { 0x0F39, 0x0F39 },
+ { 0x0F3E, 0x0F3F },
+ { 0x0F71, 0x0F84 },
+ { 0x0F86, 0x0F87 },
+ { 0x0F90, 0x0F97 },
+ { 0x0F99, 0x0FBC },
+ { 0x0FC6, 0x0FC6 },
+ { 0x102B, 0x103E },
+ { 0x1056, 0x1059 },
+ { 0x105E, 0x1060 },
+ { 0x1062, 0x1064 },
+ { 0x1067, 0x106D },
+ { 0x1071, 0x1074 },
+ { 0x1082, 0x108D },
+ { 0x108F, 0x108F },
+ { 0x135F, 0x135F },
+ { 0x1712, 0x1714 },
+ { 0x1732, 0x1734 },
+ { 0x1752, 0x1753 },
+ { 0x1772, 0x1773 },
+ { 0x17B6, 0x17D3 },
+ { 0x17DD, 0x17DD },
+ { 0x180B, 0x180D },
+ { 0x18A9, 0x18A9 },
+ { 0x1920, 0x192B },
+ { 0x1930, 0x193B },
+ { 0x19B0, 0x19C0 },
+ { 0x19C8, 0x19C9 },
+ { 0x1A17, 0x1A1B },
+ { 0x1B00, 0x1B04 },
+ { 0x1B34, 0x1B44 },
+ { 0x1B6B, 0x1B73 },
+ { 0x1B80, 0x1B82 },
+ { 0x1BA1, 0x1BAA },
+ { 0x1C24, 0x1C37 },
+ { 0x1DC0, 0x1DE6 },
+ { 0x1DFE, 0x1DFF },
+ { 0x20D0, 0x20F0 },
+ { 0x2DE0, 0x2DFF },
+ { 0x302A, 0x302F },
+ { 0x3099, 0x309A },
+ { 0xA66F, 0xA672 },
+ { 0xA67C, 0xA67D },
+ { 0xA802, 0xA802 },
+ { 0xA806, 0xA806 },
+ { 0xA80B, 0xA80B },
+ { 0xA823, 0xA827 },
+ { 0xA880, 0xA881 },
+ { 0xA8B4, 0xA8C4 },
+ { 0xA926, 0xA92D },
+ { 0xA947, 0xA953 },
+ { 0xAA29, 0xAA36 },
+ { 0xAA43, 0xAA43 },
+ { 0xAA4C, 0xAA4D },
+ { 0xFB1E, 0xFB1E },
+ { 0xFE00, 0xFE0F },
+ { 0xFE20, 0xFE26 },
+ { 0x101FD, 0x101FD },
+ { 0x10A01, 0x10A03 },
+ { 0x10A05, 0x10A06 },
+ { 0x10A0C, 0x10A0F },
+ { 0x10A38, 0x10A3A },
+ { 0x10A3F, 0x10A3F },
+ { 0x1D165, 0x1D169 },
+ { 0x1D16D, 0x1D172 },
+ { 0x1D17B, 0x1D182 },
+ { 0x1D185, 0x1D18B },
+ { 0x1D1AA, 0x1D1AD },
+ { 0x1D242, 0x1D244 },
+ { 0xE0100, 0xE01EF }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_M)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Mc.c b/tests/unictype/test-categ_Mc.c
new file mode 100644
index 00000000..4984b4b9
--- /dev/null
+++ b/tests/unictype/test-categ_Mc.c
@@ -0,0 +1,107 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0903, 0x0903 },
+ { 0x093E, 0x0940 },
+ { 0x0949, 0x094C },
+ { 0x0982, 0x0983 },
+ { 0x09BE, 0x09C0 },
+ { 0x09C7, 0x09C8 },
+ { 0x09CB, 0x09CC },
+ { 0x09D7, 0x09D7 },
+ { 0x0A03, 0x0A03 },
+ { 0x0A3E, 0x0A40 },
+ { 0x0A83, 0x0A83 },
+ { 0x0ABE, 0x0AC0 },
+ { 0x0AC9, 0x0AC9 },
+ { 0x0ACB, 0x0ACC },
+ { 0x0B02, 0x0B03 },
+ { 0x0B3E, 0x0B3E },
+ { 0x0B40, 0x0B40 },
+ { 0x0B47, 0x0B48 },
+ { 0x0B4B, 0x0B4C },
+ { 0x0B57, 0x0B57 },
+ { 0x0BBE, 0x0BBF },
+ { 0x0BC1, 0x0BC2 },
+ { 0x0BC6, 0x0BC8 },
+ { 0x0BCA, 0x0BCC },
+ { 0x0BD7, 0x0BD7 },
+ { 0x0C01, 0x0C03 },
+ { 0x0C41, 0x0C44 },
+ { 0x0C82, 0x0C83 },
+ { 0x0CBE, 0x0CBE },
+ { 0x0CC0, 0x0CC4 },
+ { 0x0CC7, 0x0CC8 },
+ { 0x0CCA, 0x0CCB },
+ { 0x0CD5, 0x0CD6 },
+ { 0x0D02, 0x0D03 },
+ { 0x0D3E, 0x0D40 },
+ { 0x0D46, 0x0D48 },
+ { 0x0D4A, 0x0D4C },
+ { 0x0D57, 0x0D57 },
+ { 0x0D82, 0x0D83 },
+ { 0x0DCF, 0x0DD1 },
+ { 0x0DD8, 0x0DDF },
+ { 0x0DF2, 0x0DF3 },
+ { 0x0F3E, 0x0F3F },
+ { 0x0F7F, 0x0F7F },
+ { 0x102B, 0x102C },
+ { 0x1031, 0x1031 },
+ { 0x1038, 0x1038 },
+ { 0x103B, 0x103C },
+ { 0x1056, 0x1057 },
+ { 0x1062, 0x1064 },
+ { 0x1067, 0x106D },
+ { 0x1083, 0x1084 },
+ { 0x1087, 0x108C },
+ { 0x108F, 0x108F },
+ { 0x17B6, 0x17B6 },
+ { 0x17BE, 0x17C5 },
+ { 0x17C7, 0x17C8 },
+ { 0x1923, 0x1926 },
+ { 0x1929, 0x192B },
+ { 0x1930, 0x1931 },
+ { 0x1933, 0x1938 },
+ { 0x19B0, 0x19C0 },
+ { 0x19C8, 0x19C9 },
+ { 0x1A19, 0x1A1B },
+ { 0x1B04, 0x1B04 },
+ { 0x1B35, 0x1B35 },
+ { 0x1B3B, 0x1B3B },
+ { 0x1B3D, 0x1B41 },
+ { 0x1B43, 0x1B44 },
+ { 0x1B82, 0x1B82 },
+ { 0x1BA1, 0x1BA1 },
+ { 0x1BA6, 0x1BA7 },
+ { 0x1BAA, 0x1BAA },
+ { 0x1C24, 0x1C2B },
+ { 0x1C34, 0x1C35 },
+ { 0xA823, 0xA824 },
+ { 0xA827, 0xA827 },
+ { 0xA880, 0xA881 },
+ { 0xA8B4, 0xA8C3 },
+ { 0xA952, 0xA953 },
+ { 0xAA2F, 0xAA30 },
+ { 0xAA33, 0xAA34 },
+ { 0xAA4D, 0xAA4D },
+ { 0x1D165, 0x1D166 },
+ { 0x1D16D, 0x1D172 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Mc)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Me.c b/tests/unictype/test-categ_Me.c
new file mode 100644
index 00000000..f8aa3855
--- /dev/null
+++ b/tests/unictype/test-categ_Me.c
@@ -0,0 +1,27 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0488, 0x0489 },
+ { 0x06DE, 0x06DE },
+ { 0x20DD, 0x20E0 },
+ { 0x20E2, 0x20E4 },
+ { 0xA670, 0xA672 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Me)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Mn.c b/tests/unictype/test-categ_Mn.c
new file mode 100644
index 00000000..a29b6e5c
--- /dev/null
+++ b/tests/unictype/test-categ_Mn.c
@@ -0,0 +1,182 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0300, 0x036F },
+ { 0x0483, 0x0487 },
+ { 0x0591, 0x05BD },
+ { 0x05BF, 0x05BF },
+ { 0x05C1, 0x05C2 },
+ { 0x05C4, 0x05C5 },
+ { 0x05C7, 0x05C7 },
+ { 0x0610, 0x061A },
+ { 0x064B, 0x065E },
+ { 0x0670, 0x0670 },
+ { 0x06D6, 0x06DC },
+ { 0x06DF, 0x06E4 },
+ { 0x06E7, 0x06E8 },
+ { 0x06EA, 0x06ED },
+ { 0x0711, 0x0711 },
+ { 0x0730, 0x074A },
+ { 0x07A6, 0x07B0 },
+ { 0x07EB, 0x07F3 },
+ { 0x0901, 0x0902 },
+ { 0x093C, 0x093C },
+ { 0x0941, 0x0948 },
+ { 0x094D, 0x094D },
+ { 0x0951, 0x0954 },
+ { 0x0962, 0x0963 },
+ { 0x0981, 0x0981 },
+ { 0x09BC, 0x09BC },
+ { 0x09C1, 0x09C4 },
+ { 0x09CD, 0x09CD },
+ { 0x09E2, 0x09E3 },
+ { 0x0A01, 0x0A02 },
+ { 0x0A3C, 0x0A3C },
+ { 0x0A41, 0x0A42 },
+ { 0x0A47, 0x0A48 },
+ { 0x0A4B, 0x0A4D },
+ { 0x0A51, 0x0A51 },
+ { 0x0A70, 0x0A71 },
+ { 0x0A75, 0x0A75 },
+ { 0x0A81, 0x0A82 },
+ { 0x0ABC, 0x0ABC },
+ { 0x0AC1, 0x0AC5 },
+ { 0x0AC7, 0x0AC8 },
+ { 0x0ACD, 0x0ACD },
+ { 0x0AE2, 0x0AE3 },
+ { 0x0B01, 0x0B01 },
+ { 0x0B3C, 0x0B3C },
+ { 0x0B3F, 0x0B3F },
+ { 0x0B41, 0x0B44 },
+ { 0x0B4D, 0x0B4D },
+ { 0x0B56, 0x0B56 },
+ { 0x0B62, 0x0B63 },
+ { 0x0B82, 0x0B82 },
+ { 0x0BC0, 0x0BC0 },
+ { 0x0BCD, 0x0BCD },
+ { 0x0C3E, 0x0C40 },
+ { 0x0C46, 0x0C48 },
+ { 0x0C4A, 0x0C4D },
+ { 0x0C55, 0x0C56 },
+ { 0x0C62, 0x0C63 },
+ { 0x0CBC, 0x0CBC },
+ { 0x0CBF, 0x0CBF },
+ { 0x0CC6, 0x0CC6 },
+ { 0x0CCC, 0x0CCD },
+ { 0x0CE2, 0x0CE3 },
+ { 0x0D41, 0x0D44 },
+ { 0x0D4D, 0x0D4D },
+ { 0x0D62, 0x0D63 },
+ { 0x0DCA, 0x0DCA },
+ { 0x0DD2, 0x0DD4 },
+ { 0x0DD6, 0x0DD6 },
+ { 0x0E31, 0x0E31 },
+ { 0x0E34, 0x0E3A },
+ { 0x0E47, 0x0E4E },
+ { 0x0EB1, 0x0EB1 },
+ { 0x0EB4, 0x0EB9 },
+ { 0x0EBB, 0x0EBC },
+ { 0x0EC8, 0x0ECD },
+ { 0x0F18, 0x0F19 },
+ { 0x0F35, 0x0F35 },
+ { 0x0F37, 0x0F37 },
+ { 0x0F39, 0x0F39 },
+ { 0x0F71, 0x0F7E },
+ { 0x0F80, 0x0F84 },
+ { 0x0F86, 0x0F87 },
+ { 0x0F90, 0x0F97 },
+ { 0x0F99, 0x0FBC },
+ { 0x0FC6, 0x0FC6 },
+ { 0x102D, 0x1030 },
+ { 0x1032, 0x1037 },
+ { 0x1039, 0x103A },
+ { 0x103D, 0x103E },
+ { 0x1058, 0x1059 },
+ { 0x105E, 0x1060 },
+ { 0x1071, 0x1074 },
+ { 0x1082, 0x1082 },
+ { 0x1085, 0x1086 },
+ { 0x108D, 0x108D },
+ { 0x135F, 0x135F },
+ { 0x1712, 0x1714 },
+ { 0x1732, 0x1734 },
+ { 0x1752, 0x1753 },
+ { 0x1772, 0x1773 },
+ { 0x17B7, 0x17BD },
+ { 0x17C6, 0x17C6 },
+ { 0x17C9, 0x17D3 },
+ { 0x17DD, 0x17DD },
+ { 0x180B, 0x180D },
+ { 0x18A9, 0x18A9 },
+ { 0x1920, 0x1922 },
+ { 0x1927, 0x1928 },
+ { 0x1932, 0x1932 },
+ { 0x1939, 0x193B },
+ { 0x1A17, 0x1A18 },
+ { 0x1B00, 0x1B03 },
+ { 0x1B34, 0x1B34 },
+ { 0x1B36, 0x1B3A },
+ { 0x1B3C, 0x1B3C },
+ { 0x1B42, 0x1B42 },
+ { 0x1B6B, 0x1B73 },
+ { 0x1B80, 0x1B81 },
+ { 0x1BA2, 0x1BA5 },
+ { 0x1BA8, 0x1BA9 },
+ { 0x1C2C, 0x1C33 },
+ { 0x1C36, 0x1C37 },
+ { 0x1DC0, 0x1DE6 },
+ { 0x1DFE, 0x1DFF },
+ { 0x20D0, 0x20DC },
+ { 0x20E1, 0x20E1 },
+ { 0x20E5, 0x20F0 },
+ { 0x2DE0, 0x2DFF },
+ { 0x302A, 0x302F },
+ { 0x3099, 0x309A },
+ { 0xA66F, 0xA66F },
+ { 0xA67C, 0xA67D },
+ { 0xA802, 0xA802 },
+ { 0xA806, 0xA806 },
+ { 0xA80B, 0xA80B },
+ { 0xA825, 0xA826 },
+ { 0xA8C4, 0xA8C4 },
+ { 0xA926, 0xA92D },
+ { 0xA947, 0xA951 },
+ { 0xAA29, 0xAA2E },
+ { 0xAA31, 0xAA32 },
+ { 0xAA35, 0xAA36 },
+ { 0xAA43, 0xAA43 },
+ { 0xAA4C, 0xAA4C },
+ { 0xFB1E, 0xFB1E },
+ { 0xFE00, 0xFE0F },
+ { 0xFE20, 0xFE26 },
+ { 0x101FD, 0x101FD },
+ { 0x10A01, 0x10A03 },
+ { 0x10A05, 0x10A06 },
+ { 0x10A0C, 0x10A0F },
+ { 0x10A38, 0x10A3A },
+ { 0x10A3F, 0x10A3F },
+ { 0x1D167, 0x1D169 },
+ { 0x1D17B, 0x1D182 },
+ { 0x1D185, 0x1D18B },
+ { 0x1D1AA, 0x1D1AD },
+ { 0x1D242, 0x1D244 },
+ { 0xE0100, 0xE01EF }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Mn)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_N.c b/tests/unictype/test-categ_N.c
new file mode 100644
index 00000000..219b6c77
--- /dev/null
+++ b/tests/unictype/test-categ_N.c
@@ -0,0 +1,91 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0030, 0x0039 },
+ { 0x00B2, 0x00B3 },
+ { 0x00B9, 0x00B9 },
+ { 0x00BC, 0x00BE },
+ { 0x0660, 0x0669 },
+ { 0x06F0, 0x06F9 },
+ { 0x07C0, 0x07C9 },
+ { 0x0966, 0x096F },
+ { 0x09E6, 0x09EF },
+ { 0x09F4, 0x09F9 },
+ { 0x0A66, 0x0A6F },
+ { 0x0AE6, 0x0AEF },
+ { 0x0B66, 0x0B6F },
+ { 0x0BE6, 0x0BF2 },
+ { 0x0C66, 0x0C6F },
+ { 0x0C78, 0x0C7E },
+ { 0x0CE6, 0x0CEF },
+ { 0x0D66, 0x0D75 },
+ { 0x0E50, 0x0E59 },
+ { 0x0ED0, 0x0ED9 },
+ { 0x0F20, 0x0F33 },
+ { 0x1040, 0x1049 },
+ { 0x1090, 0x1099 },
+ { 0x1369, 0x137C },
+ { 0x16EE, 0x16F0 },
+ { 0x17E0, 0x17E9 },
+ { 0x17F0, 0x17F9 },
+ { 0x1810, 0x1819 },
+ { 0x1946, 0x194F },
+ { 0x19D0, 0x19D9 },
+ { 0x1B50, 0x1B59 },
+ { 0x1BB0, 0x1BB9 },
+ { 0x1C40, 0x1C49 },
+ { 0x1C50, 0x1C59 },
+ { 0x2070, 0x2070 },
+ { 0x2074, 0x2079 },
+ { 0x2080, 0x2089 },
+ { 0x2153, 0x2182 },
+ { 0x2185, 0x2188 },
+ { 0x2460, 0x249B },
+ { 0x24EA, 0x24FF },
+ { 0x2776, 0x2793 },
+ { 0x2CFD, 0x2CFD },
+ { 0x3007, 0x3007 },
+ { 0x3021, 0x3029 },
+ { 0x3038, 0x303A },
+ { 0x3192, 0x3195 },
+ { 0x3220, 0x3229 },
+ { 0x3251, 0x325F },
+ { 0x3280, 0x3289 },
+ { 0x32B1, 0x32BF },
+ { 0xA620, 0xA629 },
+ { 0xA8D0, 0xA8D9 },
+ { 0xA900, 0xA909 },
+ { 0xAA50, 0xAA59 },
+ { 0xFF10, 0xFF19 },
+ { 0x10107, 0x10133 },
+ { 0x10140, 0x10178 },
+ { 0x1018A, 0x1018A },
+ { 0x10320, 0x10323 },
+ { 0x10341, 0x10341 },
+ { 0x1034A, 0x1034A },
+ { 0x103D1, 0x103D5 },
+ { 0x104A0, 0x104A9 },
+ { 0x10916, 0x10919 },
+ { 0x10A40, 0x10A47 },
+ { 0x12400, 0x12462 },
+ { 0x1D360, 0x1D371 },
+ { 0x1D7CE, 0x1D7FF }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_N)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Nd.c b/tests/unictype/test-categ_Nd.c
new file mode 100644
index 00000000..a6170aef
--- /dev/null
+++ b/tests/unictype/test-categ_Nd.c
@@ -0,0 +1,55 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0030, 0x0039 },
+ { 0x0660, 0x0669 },
+ { 0x06F0, 0x06F9 },
+ { 0x07C0, 0x07C9 },
+ { 0x0966, 0x096F },
+ { 0x09E6, 0x09EF },
+ { 0x0A66, 0x0A6F },
+ { 0x0AE6, 0x0AEF },
+ { 0x0B66, 0x0B6F },
+ { 0x0BE6, 0x0BEF },
+ { 0x0C66, 0x0C6F },
+ { 0x0CE6, 0x0CEF },
+ { 0x0D66, 0x0D6F },
+ { 0x0E50, 0x0E59 },
+ { 0x0ED0, 0x0ED9 },
+ { 0x0F20, 0x0F29 },
+ { 0x1040, 0x1049 },
+ { 0x1090, 0x1099 },
+ { 0x17E0, 0x17E9 },
+ { 0x1810, 0x1819 },
+ { 0x1946, 0x194F },
+ { 0x19D0, 0x19D9 },
+ { 0x1B50, 0x1B59 },
+ { 0x1BB0, 0x1BB9 },
+ { 0x1C40, 0x1C49 },
+ { 0x1C50, 0x1C59 },
+ { 0xA620, 0xA629 },
+ { 0xA8D0, 0xA8D9 },
+ { 0xA900, 0xA909 },
+ { 0xAA50, 0xAA59 },
+ { 0xFF10, 0xFF19 },
+ { 0x104A0, 0x104A9 },
+ { 0x1D7CE, 0x1D7FF }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Nd)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Nl.c b/tests/unictype/test-categ_Nl.c
new file mode 100644
index 00000000..0a3207f6
--- /dev/null
+++ b/tests/unictype/test-categ_Nl.c
@@ -0,0 +1,33 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x16EE, 0x16F0 },
+ { 0x2160, 0x2182 },
+ { 0x2185, 0x2188 },
+ { 0x3007, 0x3007 },
+ { 0x3021, 0x3029 },
+ { 0x3038, 0x303A },
+ { 0x10140, 0x10174 },
+ { 0x10341, 0x10341 },
+ { 0x1034A, 0x1034A },
+ { 0x103D1, 0x103D5 },
+ { 0x12400, 0x12462 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Nl)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_No.c b/tests/unictype/test-categ_No.c
new file mode 100644
index 00000000..d800a592
--- /dev/null
+++ b/tests/unictype/test-categ_No.c
@@ -0,0 +1,52 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x00B2, 0x00B3 },
+ { 0x00B9, 0x00B9 },
+ { 0x00BC, 0x00BE },
+ { 0x09F4, 0x09F9 },
+ { 0x0BF0, 0x0BF2 },
+ { 0x0C78, 0x0C7E },
+ { 0x0D70, 0x0D75 },
+ { 0x0F2A, 0x0F33 },
+ { 0x1369, 0x137C },
+ { 0x17F0, 0x17F9 },
+ { 0x2070, 0x2070 },
+ { 0x2074, 0x2079 },
+ { 0x2080, 0x2089 },
+ { 0x2153, 0x215F },
+ { 0x2460, 0x249B },
+ { 0x24EA, 0x24FF },
+ { 0x2776, 0x2793 },
+ { 0x2CFD, 0x2CFD },
+ { 0x3192, 0x3195 },
+ { 0x3220, 0x3229 },
+ { 0x3251, 0x325F },
+ { 0x3280, 0x3289 },
+ { 0x32B1, 0x32BF },
+ { 0x10107, 0x10133 },
+ { 0x10175, 0x10178 },
+ { 0x1018A, 0x1018A },
+ { 0x10320, 0x10323 },
+ { 0x10916, 0x10919 },
+ { 0x10A40, 0x10A47 },
+ { 0x1D360, 0x1D371 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_No)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_P.c b/tests/unictype/test-categ_P.c
new file mode 100644
index 00000000..38587b0e
--- /dev/null
+++ b/tests/unictype/test-categ_P.c
@@ -0,0 +1,134 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0021, 0x0023 },
+ { 0x0025, 0x002A },
+ { 0x002C, 0x002F },
+ { 0x003A, 0x003B },
+ { 0x003F, 0x0040 },
+ { 0x005B, 0x005D },
+ { 0x005F, 0x005F },
+ { 0x007B, 0x007B },
+ { 0x007D, 0x007D },
+ { 0x00A1, 0x00A1 },
+ { 0x00AB, 0x00AB },
+ { 0x00B7, 0x00B7 },
+ { 0x00BB, 0x00BB },
+ { 0x00BF, 0x00BF },
+ { 0x037E, 0x037E },
+ { 0x0387, 0x0387 },
+ { 0x055A, 0x055F },
+ { 0x0589, 0x058A },
+ { 0x05BE, 0x05BE },
+ { 0x05C0, 0x05C0 },
+ { 0x05C3, 0x05C3 },
+ { 0x05C6, 0x05C6 },
+ { 0x05F3, 0x05F4 },
+ { 0x0609, 0x060A },
+ { 0x060C, 0x060D },
+ { 0x061B, 0x061B },
+ { 0x061E, 0x061F },
+ { 0x066A, 0x066D },
+ { 0x06D4, 0x06D4 },
+ { 0x0700, 0x070D },
+ { 0x07F7, 0x07F9 },
+ { 0x0964, 0x0965 },
+ { 0x0970, 0x0970 },
+ { 0x0DF4, 0x0DF4 },
+ { 0x0E4F, 0x0E4F },
+ { 0x0E5A, 0x0E5B },
+ { 0x0F04, 0x0F12 },
+ { 0x0F3A, 0x0F3D },
+ { 0x0F85, 0x0F85 },
+ { 0x0FD0, 0x0FD4 },
+ { 0x104A, 0x104F },
+ { 0x10FB, 0x10FB },
+ { 0x1361, 0x1368 },
+ { 0x166D, 0x166E },
+ { 0x169B, 0x169C },
+ { 0x16EB, 0x16ED },
+ { 0x1735, 0x1736 },
+ { 0x17D4, 0x17D6 },
+ { 0x17D8, 0x17DA },
+ { 0x1800, 0x180A },
+ { 0x1944, 0x1945 },
+ { 0x19DE, 0x19DF },
+ { 0x1A1E, 0x1A1F },
+ { 0x1B5A, 0x1B60 },
+ { 0x1C3B, 0x1C3F },
+ { 0x1C7E, 0x1C7F },
+ { 0x2010, 0x2027 },
+ { 0x2030, 0x2043 },
+ { 0x2045, 0x2051 },
+ { 0x2053, 0x205E },
+ { 0x207D, 0x207E },
+ { 0x208D, 0x208E },
+ { 0x2329, 0x232A },
+ { 0x2768, 0x2775 },
+ { 0x27C5, 0x27C6 },
+ { 0x27E6, 0x27EF },
+ { 0x2983, 0x2998 },
+ { 0x29D8, 0x29DB },
+ { 0x29FC, 0x29FD },
+ { 0x2CF9, 0x2CFC },
+ { 0x2CFE, 0x2CFF },
+ { 0x2E00, 0x2E2E },
+ { 0x2E30, 0x2E30 },
+ { 0x3001, 0x3003 },
+ { 0x3008, 0x3011 },
+ { 0x3014, 0x301F },
+ { 0x3030, 0x3030 },
+ { 0x303D, 0x303D },
+ { 0x30A0, 0x30A0 },
+ { 0x30FB, 0x30FB },
+ { 0xA60D, 0xA60F },
+ { 0xA673, 0xA673 },
+ { 0xA67E, 0xA67E },
+ { 0xA874, 0xA877 },
+ { 0xA8CE, 0xA8CF },
+ { 0xA92E, 0xA92F },
+ { 0xA95F, 0xA95F },
+ { 0xAA5C, 0xAA5F },
+ { 0xFD3E, 0xFD3F },
+ { 0xFE10, 0xFE19 },
+ { 0xFE30, 0xFE52 },
+ { 0xFE54, 0xFE61 },
+ { 0xFE63, 0xFE63 },
+ { 0xFE68, 0xFE68 },
+ { 0xFE6A, 0xFE6B },
+ { 0xFF01, 0xFF03 },
+ { 0xFF05, 0xFF0A },
+ { 0xFF0C, 0xFF0F },
+ { 0xFF1A, 0xFF1B },
+ { 0xFF1F, 0xFF20 },
+ { 0xFF3B, 0xFF3D },
+ { 0xFF3F, 0xFF3F },
+ { 0xFF5B, 0xFF5B },
+ { 0xFF5D, 0xFF5D },
+ { 0xFF5F, 0xFF65 },
+ { 0x10100, 0x10101 },
+ { 0x1039F, 0x1039F },
+ { 0x103D0, 0x103D0 },
+ { 0x1091F, 0x1091F },
+ { 0x1093F, 0x1093F },
+ { 0x10A50, 0x10A58 },
+ { 0x12470, 0x12473 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_P)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Pc.c b/tests/unictype/test-categ_Pc.c
new file mode 100644
index 00000000..db291030
--- /dev/null
+++ b/tests/unictype/test-categ_Pc.c
@@ -0,0 +1,28 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x005F, 0x005F },
+ { 0x203F, 0x2040 },
+ { 0x2054, 0x2054 },
+ { 0xFE33, 0xFE34 },
+ { 0xFE4D, 0xFE4F },
+ { 0xFF3F, 0xFF3F }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Pc)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Pd.c b/tests/unictype/test-categ_Pd.c
new file mode 100644
index 00000000..aae4aea3
--- /dev/null
+++ b/tests/unictype/test-categ_Pd.c
@@ -0,0 +1,36 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x002D, 0x002D },
+ { 0x058A, 0x058A },
+ { 0x05BE, 0x05BE },
+ { 0x1806, 0x1806 },
+ { 0x2010, 0x2015 },
+ { 0x2E17, 0x2E17 },
+ { 0x2E1A, 0x2E1A },
+ { 0x301C, 0x301C },
+ { 0x3030, 0x3030 },
+ { 0x30A0, 0x30A0 },
+ { 0xFE31, 0xFE32 },
+ { 0xFE58, 0xFE58 },
+ { 0xFE63, 0xFE63 },
+ { 0xFF0D, 0xFF0D }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Pd)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Pe.c b/tests/unictype/test-categ_Pe.c
new file mode 100644
index 00000000..01c77ecf
--- /dev/null
+++ b/tests/unictype/test-categ_Pe.c
@@ -0,0 +1,92 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0029, 0x0029 },
+ { 0x005D, 0x005D },
+ { 0x007D, 0x007D },
+ { 0x0F3B, 0x0F3B },
+ { 0x0F3D, 0x0F3D },
+ { 0x169C, 0x169C },
+ { 0x2046, 0x2046 },
+ { 0x207E, 0x207E },
+ { 0x208E, 0x208E },
+ { 0x232A, 0x232A },
+ { 0x2769, 0x2769 },
+ { 0x276B, 0x276B },
+ { 0x276D, 0x276D },
+ { 0x276F, 0x276F },
+ { 0x2771, 0x2771 },
+ { 0x2773, 0x2773 },
+ { 0x2775, 0x2775 },
+ { 0x27C6, 0x27C6 },
+ { 0x27E7, 0x27E7 },
+ { 0x27E9, 0x27E9 },
+ { 0x27EB, 0x27EB },
+ { 0x27ED, 0x27ED },
+ { 0x27EF, 0x27EF },
+ { 0x2984, 0x2984 },
+ { 0x2986, 0x2986 },
+ { 0x2988, 0x2988 },
+ { 0x298A, 0x298A },
+ { 0x298C, 0x298C },
+ { 0x298E, 0x298E },
+ { 0x2990, 0x2990 },
+ { 0x2992, 0x2992 },
+ { 0x2994, 0x2994 },
+ { 0x2996, 0x2996 },
+ { 0x2998, 0x2998 },
+ { 0x29D9, 0x29D9 },
+ { 0x29DB, 0x29DB },
+ { 0x29FD, 0x29FD },
+ { 0x2E23, 0x2E23 },
+ { 0x2E25, 0x2E25 },
+ { 0x2E27, 0x2E27 },
+ { 0x2E29, 0x2E29 },
+ { 0x3009, 0x3009 },
+ { 0x300B, 0x300B },
+ { 0x300D, 0x300D },
+ { 0x300F, 0x300F },
+ { 0x3011, 0x3011 },
+ { 0x3015, 0x3015 },
+ { 0x3017, 0x3017 },
+ { 0x3019, 0x3019 },
+ { 0x301B, 0x301B },
+ { 0x301E, 0x301F },
+ { 0xFD3F, 0xFD3F },
+ { 0xFE18, 0xFE18 },
+ { 0xFE36, 0xFE36 },
+ { 0xFE38, 0xFE38 },
+ { 0xFE3A, 0xFE3A },
+ { 0xFE3C, 0xFE3C },
+ { 0xFE3E, 0xFE3E },
+ { 0xFE40, 0xFE40 },
+ { 0xFE42, 0xFE42 },
+ { 0xFE44, 0xFE44 },
+ { 0xFE48, 0xFE48 },
+ { 0xFE5A, 0xFE5A },
+ { 0xFE5C, 0xFE5C },
+ { 0xFE5E, 0xFE5E },
+ { 0xFF09, 0xFF09 },
+ { 0xFF3D, 0xFF3D },
+ { 0xFF5D, 0xFF5D },
+ { 0xFF60, 0xFF60 },
+ { 0xFF63, 0xFF63 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Pe)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Pf.c b/tests/unictype/test-categ_Pf.c
new file mode 100644
index 00000000..b94173e1
--- /dev/null
+++ b/tests/unictype/test-categ_Pf.c
@@ -0,0 +1,32 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x00BB, 0x00BB },
+ { 0x2019, 0x2019 },
+ { 0x201D, 0x201D },
+ { 0x203A, 0x203A },
+ { 0x2E03, 0x2E03 },
+ { 0x2E05, 0x2E05 },
+ { 0x2E0A, 0x2E0A },
+ { 0x2E0D, 0x2E0D },
+ { 0x2E1D, 0x2E1D },
+ { 0x2E21, 0x2E21 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Pf)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Pi.c b/tests/unictype/test-categ_Pi.c
new file mode 100644
index 00000000..2a9dcd4b
--- /dev/null
+++ b/tests/unictype/test-categ_Pi.c
@@ -0,0 +1,33 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x00AB, 0x00AB },
+ { 0x2018, 0x2018 },
+ { 0x201B, 0x201C },
+ { 0x201F, 0x201F },
+ { 0x2039, 0x2039 },
+ { 0x2E02, 0x2E02 },
+ { 0x2E04, 0x2E04 },
+ { 0x2E09, 0x2E09 },
+ { 0x2E0C, 0x2E0C },
+ { 0x2E1C, 0x2E1C },
+ { 0x2E20, 0x2E20 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Pi)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Po.c b/tests/unictype/test-categ_Po.c
new file mode 100644
index 00000000..e84ec765
--- /dev/null
+++ b/tests/unictype/test-categ_Po.c
@@ -0,0 +1,130 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0021, 0x0023 },
+ { 0x0025, 0x0027 },
+ { 0x002A, 0x002A },
+ { 0x002C, 0x002C },
+ { 0x002E, 0x002F },
+ { 0x003A, 0x003B },
+ { 0x003F, 0x0040 },
+ { 0x005C, 0x005C },
+ { 0x00A1, 0x00A1 },
+ { 0x00B7, 0x00B7 },
+ { 0x00BF, 0x00BF },
+ { 0x037E, 0x037E },
+ { 0x0387, 0x0387 },
+ { 0x055A, 0x055F },
+ { 0x0589, 0x0589 },
+ { 0x05C0, 0x05C0 },
+ { 0x05C3, 0x05C3 },
+ { 0x05C6, 0x05C6 },
+ { 0x05F3, 0x05F4 },
+ { 0x0609, 0x060A },
+ { 0x060C, 0x060D },
+ { 0x061B, 0x061B },
+ { 0x061E, 0x061F },
+ { 0x066A, 0x066D },
+ { 0x06D4, 0x06D4 },
+ { 0x0700, 0x070D },
+ { 0x07F7, 0x07F9 },
+ { 0x0964, 0x0965 },
+ { 0x0970, 0x0970 },
+ { 0x0DF4, 0x0DF4 },
+ { 0x0E4F, 0x0E4F },
+ { 0x0E5A, 0x0E5B },
+ { 0x0F04, 0x0F12 },
+ { 0x0F85, 0x0F85 },
+ { 0x0FD0, 0x0FD4 },
+ { 0x104A, 0x104F },
+ { 0x10FB, 0x10FB },
+ { 0x1361, 0x1368 },
+ { 0x166D, 0x166E },
+ { 0x16EB, 0x16ED },
+ { 0x1735, 0x1736 },
+ { 0x17D4, 0x17D6 },
+ { 0x17D8, 0x17DA },
+ { 0x1800, 0x1805 },
+ { 0x1807, 0x180A },
+ { 0x1944, 0x1945 },
+ { 0x19DE, 0x19DF },
+ { 0x1A1E, 0x1A1F },
+ { 0x1B5A, 0x1B60 },
+ { 0x1C3B, 0x1C3F },
+ { 0x1C7E, 0x1C7F },
+ { 0x2016, 0x2017 },
+ { 0x2020, 0x2027 },
+ { 0x2030, 0x2038 },
+ { 0x203B, 0x203E },
+ { 0x2041, 0x2043 },
+ { 0x2047, 0x2051 },
+ { 0x2053, 0x2053 },
+ { 0x2055, 0x205E },
+ { 0x2CF9, 0x2CFC },
+ { 0x2CFE, 0x2CFF },
+ { 0x2E00, 0x2E01 },
+ { 0x2E06, 0x2E08 },
+ { 0x2E0B, 0x2E0B },
+ { 0x2E0E, 0x2E16 },
+ { 0x2E18, 0x2E19 },
+ { 0x2E1B, 0x2E1B },
+ { 0x2E1E, 0x2E1F },
+ { 0x2E2A, 0x2E2E },
+ { 0x2E30, 0x2E30 },
+ { 0x3001, 0x3003 },
+ { 0x303D, 0x303D },
+ { 0x30FB, 0x30FB },
+ { 0xA60D, 0xA60F },
+ { 0xA673, 0xA673 },
+ { 0xA67E, 0xA67E },
+ { 0xA874, 0xA877 },
+ { 0xA8CE, 0xA8CF },
+ { 0xA92E, 0xA92F },
+ { 0xA95F, 0xA95F },
+ { 0xAA5C, 0xAA5F },
+ { 0xFE10, 0xFE16 },
+ { 0xFE19, 0xFE19 },
+ { 0xFE30, 0xFE30 },
+ { 0xFE45, 0xFE46 },
+ { 0xFE49, 0xFE4C },
+ { 0xFE50, 0xFE52 },
+ { 0xFE54, 0xFE57 },
+ { 0xFE5F, 0xFE61 },
+ { 0xFE68, 0xFE68 },
+ { 0xFE6A, 0xFE6B },
+ { 0xFF01, 0xFF03 },
+ { 0xFF05, 0xFF07 },
+ { 0xFF0A, 0xFF0A },
+ { 0xFF0C, 0xFF0C },
+ { 0xFF0E, 0xFF0F },
+ { 0xFF1A, 0xFF1B },
+ { 0xFF1F, 0xFF20 },
+ { 0xFF3C, 0xFF3C },
+ { 0xFF61, 0xFF61 },
+ { 0xFF64, 0xFF65 },
+ { 0x10100, 0x10101 },
+ { 0x1039F, 0x1039F },
+ { 0x103D0, 0x103D0 },
+ { 0x1091F, 0x1091F },
+ { 0x1093F, 0x1093F },
+ { 0x10A50, 0x10A58 },
+ { 0x12470, 0x12473 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Po)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Ps.c b/tests/unictype/test-categ_Ps.c
new file mode 100644
index 00000000..7e3be746
--- /dev/null
+++ b/tests/unictype/test-categ_Ps.c
@@ -0,0 +1,94 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0028, 0x0028 },
+ { 0x005B, 0x005B },
+ { 0x007B, 0x007B },
+ { 0x0F3A, 0x0F3A },
+ { 0x0F3C, 0x0F3C },
+ { 0x169B, 0x169B },
+ { 0x201A, 0x201A },
+ { 0x201E, 0x201E },
+ { 0x2045, 0x2045 },
+ { 0x207D, 0x207D },
+ { 0x208D, 0x208D },
+ { 0x2329, 0x2329 },
+ { 0x2768, 0x2768 },
+ { 0x276A, 0x276A },
+ { 0x276C, 0x276C },
+ { 0x276E, 0x276E },
+ { 0x2770, 0x2770 },
+ { 0x2772, 0x2772 },
+ { 0x2774, 0x2774 },
+ { 0x27C5, 0x27C5 },
+ { 0x27E6, 0x27E6 },
+ { 0x27E8, 0x27E8 },
+ { 0x27EA, 0x27EA },
+ { 0x27EC, 0x27EC },
+ { 0x27EE, 0x27EE },
+ { 0x2983, 0x2983 },
+ { 0x2985, 0x2985 },
+ { 0x2987, 0x2987 },
+ { 0x2989, 0x2989 },
+ { 0x298B, 0x298B },
+ { 0x298D, 0x298D },
+ { 0x298F, 0x298F },
+ { 0x2991, 0x2991 },
+ { 0x2993, 0x2993 },
+ { 0x2995, 0x2995 },
+ { 0x2997, 0x2997 },
+ { 0x29D8, 0x29D8 },
+ { 0x29DA, 0x29DA },
+ { 0x29FC, 0x29FC },
+ { 0x2E22, 0x2E22 },
+ { 0x2E24, 0x2E24 },
+ { 0x2E26, 0x2E26 },
+ { 0x2E28, 0x2E28 },
+ { 0x3008, 0x3008 },
+ { 0x300A, 0x300A },
+ { 0x300C, 0x300C },
+ { 0x300E, 0x300E },
+ { 0x3010, 0x3010 },
+ { 0x3014, 0x3014 },
+ { 0x3016, 0x3016 },
+ { 0x3018, 0x3018 },
+ { 0x301A, 0x301A },
+ { 0x301D, 0x301D },
+ { 0xFD3E, 0xFD3E },
+ { 0xFE17, 0xFE17 },
+ { 0xFE35, 0xFE35 },
+ { 0xFE37, 0xFE37 },
+ { 0xFE39, 0xFE39 },
+ { 0xFE3B, 0xFE3B },
+ { 0xFE3D, 0xFE3D },
+ { 0xFE3F, 0xFE3F },
+ { 0xFE41, 0xFE41 },
+ { 0xFE43, 0xFE43 },
+ { 0xFE47, 0xFE47 },
+ { 0xFE59, 0xFE59 },
+ { 0xFE5B, 0xFE5B },
+ { 0xFE5D, 0xFE5D },
+ { 0xFF08, 0xFF08 },
+ { 0xFF3B, 0xFF3B },
+ { 0xFF5B, 0xFF5B },
+ { 0xFF5F, 0xFF5F },
+ { 0xFF62, 0xFF62 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Ps)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_S.c b/tests/unictype/test-categ_S.c
new file mode 100644
index 00000000..6f6cdd58
--- /dev/null
+++ b/tests/unictype/test-categ_S.c
@@ -0,0 +1,201 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0024, 0x0024 },
+ { 0x002B, 0x002B },
+ { 0x003C, 0x003E },
+ { 0x005E, 0x005E },
+ { 0x0060, 0x0060 },
+ { 0x007C, 0x007C },
+ { 0x007E, 0x007E },
+ { 0x00A2, 0x00A9 },
+ { 0x00AC, 0x00AC },
+ { 0x00AE, 0x00B1 },
+ { 0x00B4, 0x00B4 },
+ { 0x00B6, 0x00B6 },
+ { 0x00B8, 0x00B8 },
+ { 0x00D7, 0x00D7 },
+ { 0x00F7, 0x00F7 },
+ { 0x02C2, 0x02C5 },
+ { 0x02D2, 0x02DF },
+ { 0x02E5, 0x02EB },
+ { 0x02ED, 0x02ED },
+ { 0x02EF, 0x02FF },
+ { 0x0375, 0x0375 },
+ { 0x0384, 0x0385 },
+ { 0x03F6, 0x03F6 },
+ { 0x0482, 0x0482 },
+ { 0x0606, 0x0608 },
+ { 0x060B, 0x060B },
+ { 0x060E, 0x060F },
+ { 0x06E9, 0x06E9 },
+ { 0x06FD, 0x06FE },
+ { 0x07F6, 0x07F6 },
+ { 0x09F2, 0x09F3 },
+ { 0x09FA, 0x09FA },
+ { 0x0AF1, 0x0AF1 },
+ { 0x0B70, 0x0B70 },
+ { 0x0BF3, 0x0BFA },
+ { 0x0C7F, 0x0C7F },
+ { 0x0CF1, 0x0CF2 },
+ { 0x0D79, 0x0D79 },
+ { 0x0E3F, 0x0E3F },
+ { 0x0F01, 0x0F03 },
+ { 0x0F13, 0x0F17 },
+ { 0x0F1A, 0x0F1F },
+ { 0x0F34, 0x0F34 },
+ { 0x0F36, 0x0F36 },
+ { 0x0F38, 0x0F38 },
+ { 0x0FBE, 0x0FC5 },
+ { 0x0FC7, 0x0FCC },
+ { 0x0FCE, 0x0FCF },
+ { 0x109E, 0x109F },
+ { 0x1360, 0x1360 },
+ { 0x1390, 0x1399 },
+ { 0x17DB, 0x17DB },
+ { 0x1940, 0x1940 },
+ { 0x19E0, 0x19FF },
+ { 0x1B61, 0x1B6A },
+ { 0x1B74, 0x1B7C },
+ { 0x1FBD, 0x1FBD },
+ { 0x1FBF, 0x1FC1 },
+ { 0x1FCD, 0x1FCF },
+ { 0x1FDD, 0x1FDF },
+ { 0x1FED, 0x1FEF },
+ { 0x1FFD, 0x1FFE },
+ { 0x2044, 0x2044 },
+ { 0x2052, 0x2052 },
+ { 0x207A, 0x207C },
+ { 0x208A, 0x208C },
+ { 0x20A0, 0x20B5 },
+ { 0x2100, 0x2101 },
+ { 0x2103, 0x2106 },
+ { 0x2108, 0x2109 },
+ { 0x2114, 0x2114 },
+ { 0x2116, 0x2118 },
+ { 0x211E, 0x2123 },
+ { 0x2125, 0x2125 },
+ { 0x2127, 0x2127 },
+ { 0x2129, 0x2129 },
+ { 0x212E, 0x212E },
+ { 0x213A, 0x213B },
+ { 0x2140, 0x2144 },
+ { 0x214A, 0x214D },
+ { 0x214F, 0x214F },
+ { 0x2190, 0x2328 },
+ { 0x232B, 0x23E7 },
+ { 0x2400, 0x2426 },
+ { 0x2440, 0x244A },
+ { 0x249C, 0x24E9 },
+ { 0x2500, 0x269D },
+ { 0x26A0, 0x26BC },
+ { 0x26C0, 0x26C3 },
+ { 0x2701, 0x2704 },
+ { 0x2706, 0x2709 },
+ { 0x270C, 0x2727 },
+ { 0x2729, 0x274B },
+ { 0x274D, 0x274D },
+ { 0x274F, 0x2752 },
+ { 0x2756, 0x2756 },
+ { 0x2758, 0x275E },
+ { 0x2761, 0x2767 },
+ { 0x2794, 0x2794 },
+ { 0x2798, 0x27AF },
+ { 0x27B1, 0x27BE },
+ { 0x27C0, 0x27C4 },
+ { 0x27C7, 0x27CA },
+ { 0x27CC, 0x27CC },
+ { 0x27D0, 0x27E5 },
+ { 0x27F0, 0x2982 },
+ { 0x2999, 0x29D7 },
+ { 0x29DC, 0x29FB },
+ { 0x29FE, 0x2B4C },
+ { 0x2B50, 0x2B54 },
+ { 0x2CE5, 0x2CEA },
+ { 0x2E80, 0x2E99 },
+ { 0x2E9B, 0x2EF3 },
+ { 0x2F00, 0x2FD5 },
+ { 0x2FF0, 0x2FFB },
+ { 0x3004, 0x3004 },
+ { 0x3012, 0x3013 },
+ { 0x3020, 0x3020 },
+ { 0x3036, 0x3037 },
+ { 0x303E, 0x303F },
+ { 0x309B, 0x309C },
+ { 0x3190, 0x3191 },
+ { 0x3196, 0x319F },
+ { 0x31C0, 0x31E3 },
+ { 0x3200, 0x321E },
+ { 0x322A, 0x3243 },
+ { 0x3250, 0x3250 },
+ { 0x3260, 0x327F },
+ { 0x328A, 0x32B0 },
+ { 0x32C0, 0x32FE },
+ { 0x3300, 0x33FF },
+ { 0x4DC0, 0x4DFF },
+ { 0xA490, 0xA4C6 },
+ { 0xA700, 0xA716 },
+ { 0xA720, 0xA721 },
+ { 0xA789, 0xA78A },
+ { 0xA828, 0xA82B },
+ { 0xFB29, 0xFB29 },
+ { 0xFDFC, 0xFDFD },
+ { 0xFE62, 0xFE62 },
+ { 0xFE64, 0xFE66 },
+ { 0xFE69, 0xFE69 },
+ { 0xFF04, 0xFF04 },
+ { 0xFF0B, 0xFF0B },
+ { 0xFF1C, 0xFF1E },
+ { 0xFF3E, 0xFF3E },
+ { 0xFF40, 0xFF40 },
+ { 0xFF5C, 0xFF5C },
+ { 0xFF5E, 0xFF5E },
+ { 0xFFE0, 0xFFE6 },
+ { 0xFFE8, 0xFFEE },
+ { 0xFFFC, 0xFFFD },
+ { 0x10102, 0x10102 },
+ { 0x10137, 0x1013F },
+ { 0x10179, 0x10189 },
+ { 0x10190, 0x1019B },
+ { 0x101D0, 0x101FC },
+ { 0x1D000, 0x1D0F5 },
+ { 0x1D100, 0x1D126 },
+ { 0x1D129, 0x1D164 },
+ { 0x1D16A, 0x1D16C },
+ { 0x1D183, 0x1D184 },
+ { 0x1D18C, 0x1D1A9 },
+ { 0x1D1AE, 0x1D1DD },
+ { 0x1D200, 0x1D241 },
+ { 0x1D245, 0x1D245 },
+ { 0x1D300, 0x1D356 },
+ { 0x1D6C1, 0x1D6C1 },
+ { 0x1D6DB, 0x1D6DB },
+ { 0x1D6FB, 0x1D6FB },
+ { 0x1D715, 0x1D715 },
+ { 0x1D735, 0x1D735 },
+ { 0x1D74F, 0x1D74F },
+ { 0x1D76F, 0x1D76F },
+ { 0x1D789, 0x1D789 },
+ { 0x1D7A9, 0x1D7A9 },
+ { 0x1D7C3, 0x1D7C3 },
+ { 0x1F000, 0x1F02B },
+ { 0x1F030, 0x1F093 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_S)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Sc.c b/tests/unictype/test-categ_Sc.c
new file mode 100644
index 00000000..8ec99a68
--- /dev/null
+++ b/tests/unictype/test-categ_Sc.c
@@ -0,0 +1,36 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0024, 0x0024 },
+ { 0x00A2, 0x00A5 },
+ { 0x060B, 0x060B },
+ { 0x09F2, 0x09F3 },
+ { 0x0AF1, 0x0AF1 },
+ { 0x0BF9, 0x0BF9 },
+ { 0x0E3F, 0x0E3F },
+ { 0x17DB, 0x17DB },
+ { 0x20A0, 0x20B5 },
+ { 0xFDFC, 0xFDFC },
+ { 0xFE69, 0xFE69 },
+ { 0xFF04, 0xFF04 },
+ { 0xFFE0, 0xFFE1 },
+ { 0xFFE5, 0xFFE6 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Sc)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Sk.c b/tests/unictype/test-categ_Sk.c
new file mode 100644
index 00000000..b0961aab
--- /dev/null
+++ b/tests/unictype/test-categ_Sk.c
@@ -0,0 +1,48 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x005E, 0x005E },
+ { 0x0060, 0x0060 },
+ { 0x00A8, 0x00A8 },
+ { 0x00AF, 0x00AF },
+ { 0x00B4, 0x00B4 },
+ { 0x00B8, 0x00B8 },
+ { 0x02C2, 0x02C5 },
+ { 0x02D2, 0x02DF },
+ { 0x02E5, 0x02EB },
+ { 0x02ED, 0x02ED },
+ { 0x02EF, 0x02FF },
+ { 0x0375, 0x0375 },
+ { 0x0384, 0x0385 },
+ { 0x1FBD, 0x1FBD },
+ { 0x1FBF, 0x1FC1 },
+ { 0x1FCD, 0x1FCF },
+ { 0x1FDD, 0x1FDF },
+ { 0x1FED, 0x1FEF },
+ { 0x1FFD, 0x1FFE },
+ { 0x309B, 0x309C },
+ { 0xA700, 0xA716 },
+ { 0xA720, 0xA721 },
+ { 0xA789, 0xA78A },
+ { 0xFF3E, 0xFF3E },
+ { 0xFF40, 0xFF40 },
+ { 0xFFE3, 0xFFE3 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Sk)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Sm.c b/tests/unictype/test-categ_Sm.c
new file mode 100644
index 00000000..b373cb44
--- /dev/null
+++ b/tests/unictype/test-categ_Sm.c
@@ -0,0 +1,87 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x002B, 0x002B },
+ { 0x003C, 0x003E },
+ { 0x007C, 0x007C },
+ { 0x007E, 0x007E },
+ { 0x00AC, 0x00AC },
+ { 0x00B1, 0x00B1 },
+ { 0x00D7, 0x00D7 },
+ { 0x00F7, 0x00F7 },
+ { 0x03F6, 0x03F6 },
+ { 0x0606, 0x0608 },
+ { 0x2044, 0x2044 },
+ { 0x2052, 0x2052 },
+ { 0x207A, 0x207C },
+ { 0x208A, 0x208C },
+ { 0x2140, 0x2144 },
+ { 0x214B, 0x214B },
+ { 0x2190, 0x2194 },
+ { 0x219A, 0x219B },
+ { 0x21A0, 0x21A0 },
+ { 0x21A3, 0x21A3 },
+ { 0x21A6, 0x21A6 },
+ { 0x21AE, 0x21AE },
+ { 0x21CE, 0x21CF },
+ { 0x21D2, 0x21D2 },
+ { 0x21D4, 0x21D4 },
+ { 0x21F4, 0x22FF },
+ { 0x2308, 0x230B },
+ { 0x2320, 0x2321 },
+ { 0x237C, 0x237C },
+ { 0x239B, 0x23B3 },
+ { 0x23DC, 0x23E1 },
+ { 0x25B7, 0x25B7 },
+ { 0x25C1, 0x25C1 },
+ { 0x25F8, 0x25FF },
+ { 0x266F, 0x266F },
+ { 0x27C0, 0x27C4 },
+ { 0x27C7, 0x27CA },
+ { 0x27CC, 0x27CC },
+ { 0x27D0, 0x27E5 },
+ { 0x27F0, 0x27FF },
+ { 0x2900, 0x2982 },
+ { 0x2999, 0x29D7 },
+ { 0x29DC, 0x29FB },
+ { 0x29FE, 0x2AFF },
+ { 0x2B30, 0x2B44 },
+ { 0x2B47, 0x2B4C },
+ { 0xFB29, 0xFB29 },
+ { 0xFE62, 0xFE62 },
+ { 0xFE64, 0xFE66 },
+ { 0xFF0B, 0xFF0B },
+ { 0xFF1C, 0xFF1E },
+ { 0xFF5C, 0xFF5C },
+ { 0xFF5E, 0xFF5E },
+ { 0xFFE2, 0xFFE2 },
+ { 0xFFE9, 0xFFEC },
+ { 0x1D6C1, 0x1D6C1 },
+ { 0x1D6DB, 0x1D6DB },
+ { 0x1D6FB, 0x1D6FB },
+ { 0x1D715, 0x1D715 },
+ { 0x1D735, 0x1D735 },
+ { 0x1D74F, 0x1D74F },
+ { 0x1D76F, 0x1D76F },
+ { 0x1D789, 0x1D789 },
+ { 0x1D7A9, 0x1D7A9 },
+ { 0x1D7C3, 0x1D7C3 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Sm)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_So.c b/tests/unictype/test-categ_So.c
new file mode 100644
index 00000000..c4c5e3ee
--- /dev/null
+++ b/tests/unictype/test-categ_So.c
@@ -0,0 +1,156 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x00A6, 0x00A7 },
+ { 0x00A9, 0x00A9 },
+ { 0x00AE, 0x00AE },
+ { 0x00B0, 0x00B0 },
+ { 0x00B6, 0x00B6 },
+ { 0x0482, 0x0482 },
+ { 0x060E, 0x060F },
+ { 0x06E9, 0x06E9 },
+ { 0x06FD, 0x06FE },
+ { 0x07F6, 0x07F6 },
+ { 0x09FA, 0x09FA },
+ { 0x0B70, 0x0B70 },
+ { 0x0BF3, 0x0BF8 },
+ { 0x0BFA, 0x0BFA },
+ { 0x0C7F, 0x0C7F },
+ { 0x0CF1, 0x0CF2 },
+ { 0x0D79, 0x0D79 },
+ { 0x0F01, 0x0F03 },
+ { 0x0F13, 0x0F17 },
+ { 0x0F1A, 0x0F1F },
+ { 0x0F34, 0x0F34 },
+ { 0x0F36, 0x0F36 },
+ { 0x0F38, 0x0F38 },
+ { 0x0FBE, 0x0FC5 },
+ { 0x0FC7, 0x0FCC },
+ { 0x0FCE, 0x0FCF },
+ { 0x109E, 0x109F },
+ { 0x1360, 0x1360 },
+ { 0x1390, 0x1399 },
+ { 0x1940, 0x1940 },
+ { 0x19E0, 0x19FF },
+ { 0x1B61, 0x1B6A },
+ { 0x1B74, 0x1B7C },
+ { 0x2100, 0x2101 },
+ { 0x2103, 0x2106 },
+ { 0x2108, 0x2109 },
+ { 0x2114, 0x2114 },
+ { 0x2116, 0x2118 },
+ { 0x211E, 0x2123 },
+ { 0x2125, 0x2125 },
+ { 0x2127, 0x2127 },
+ { 0x2129, 0x2129 },
+ { 0x212E, 0x212E },
+ { 0x213A, 0x213B },
+ { 0x214A, 0x214A },
+ { 0x214C, 0x214D },
+ { 0x214F, 0x214F },
+ { 0x2195, 0x2199 },
+ { 0x219C, 0x219F },
+ { 0x21A1, 0x21A2 },
+ { 0x21A4, 0x21A5 },
+ { 0x21A7, 0x21AD },
+ { 0x21AF, 0x21CD },
+ { 0x21D0, 0x21D1 },
+ { 0x21D3, 0x21D3 },
+ { 0x21D5, 0x21F3 },
+ { 0x2300, 0x2307 },
+ { 0x230C, 0x231F },
+ { 0x2322, 0x2328 },
+ { 0x232B, 0x237B },
+ { 0x237D, 0x239A },
+ { 0x23B4, 0x23DB },
+ { 0x23E2, 0x23E7 },
+ { 0x2400, 0x2426 },
+ { 0x2440, 0x244A },
+ { 0x249C, 0x24E9 },
+ { 0x2500, 0x25B6 },
+ { 0x25B8, 0x25C0 },
+ { 0x25C2, 0x25F7 },
+ { 0x2600, 0x266E },
+ { 0x2670, 0x269D },
+ { 0x26A0, 0x26BC },
+ { 0x26C0, 0x26C3 },
+ { 0x2701, 0x2704 },
+ { 0x2706, 0x2709 },
+ { 0x270C, 0x2727 },
+ { 0x2729, 0x274B },
+ { 0x274D, 0x274D },
+ { 0x274F, 0x2752 },
+ { 0x2756, 0x2756 },
+ { 0x2758, 0x275E },
+ { 0x2761, 0x2767 },
+ { 0x2794, 0x2794 },
+ { 0x2798, 0x27AF },
+ { 0x27B1, 0x27BE },
+ { 0x2800, 0x28FF },
+ { 0x2B00, 0x2B2F },
+ { 0x2B45, 0x2B46 },
+ { 0x2B50, 0x2B54 },
+ { 0x2CE5, 0x2CEA },
+ { 0x2E80, 0x2E99 },
+ { 0x2E9B, 0x2EF3 },
+ { 0x2F00, 0x2FD5 },
+ { 0x2FF0, 0x2FFB },
+ { 0x3004, 0x3004 },
+ { 0x3012, 0x3013 },
+ { 0x3020, 0x3020 },
+ { 0x3036, 0x3037 },
+ { 0x303E, 0x303F },
+ { 0x3190, 0x3191 },
+ { 0x3196, 0x319F },
+ { 0x31C0, 0x31E3 },
+ { 0x3200, 0x321E },
+ { 0x322A, 0x3243 },
+ { 0x3250, 0x3250 },
+ { 0x3260, 0x327F },
+ { 0x328A, 0x32B0 },
+ { 0x32C0, 0x32FE },
+ { 0x3300, 0x33FF },
+ { 0x4DC0, 0x4DFF },
+ { 0xA490, 0xA4C6 },
+ { 0xA828, 0xA82B },
+ { 0xFDFD, 0xFDFD },
+ { 0xFFE4, 0xFFE4 },
+ { 0xFFE8, 0xFFE8 },
+ { 0xFFED, 0xFFEE },
+ { 0xFFFC, 0xFFFD },
+ { 0x10102, 0x10102 },
+ { 0x10137, 0x1013F },
+ { 0x10179, 0x10189 },
+ { 0x10190, 0x1019B },
+ { 0x101D0, 0x101FC },
+ { 0x1D000, 0x1D0F5 },
+ { 0x1D100, 0x1D126 },
+ { 0x1D129, 0x1D164 },
+ { 0x1D16A, 0x1D16C },
+ { 0x1D183, 0x1D184 },
+ { 0x1D18C, 0x1D1A9 },
+ { 0x1D1AE, 0x1D1DD },
+ { 0x1D200, 0x1D241 },
+ { 0x1D245, 0x1D245 },
+ { 0x1D300, 0x1D356 },
+ { 0x1F000, 0x1F02B },
+ { 0x1F030, 0x1F093 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_So)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Z.c b/tests/unictype/test-categ_Z.c
new file mode 100644
index 00000000..f3745943
--- /dev/null
+++ b/tests/unictype/test-categ_Z.c
@@ -0,0 +1,31 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0020, 0x0020 },
+ { 0x00A0, 0x00A0 },
+ { 0x1680, 0x1680 },
+ { 0x180E, 0x180E },
+ { 0x2000, 0x200A },
+ { 0x2028, 0x2029 },
+ { 0x202F, 0x202F },
+ { 0x205F, 0x205F },
+ { 0x3000, 0x3000 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Z)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Zl.c b/tests/unictype/test-categ_Zl.c
new file mode 100644
index 00000000..ce9d36c1
--- /dev/null
+++ b/tests/unictype/test-categ_Zl.c
@@ -0,0 +1,23 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x2028, 0x2028 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Zl)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Zp.c b/tests/unictype/test-categ_Zp.c
new file mode 100644
index 00000000..84866d85
--- /dev/null
+++ b/tests/unictype/test-categ_Zp.c
@@ -0,0 +1,23 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x2029, 0x2029 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Zp)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_Zs.c b/tests/unictype/test-categ_Zs.c
new file mode 100644
index 00000000..982ee0bb
--- /dev/null
+++ b/tests/unictype/test-categ_Zs.c
@@ -0,0 +1,30 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0020, 0x0020 },
+ { 0x00A0, 0x00A0 },
+ { 0x1680, 0x1680 },
+ { 0x180E, 0x180E },
+ { 0x2000, 0x200A },
+ { 0x202F, 0x202F },
+ { 0x205F, 0x205F },
+ { 0x3000, 0x3000 }
+
+#define PREDICATE(c) uc_is_general_category (c, UC_CATEGORY_Zs)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-categ_and.c b/tests/unictype/test-categ_and.c
new file mode 100644
index 00000000..5531ff40
--- /dev/null
+++ b/tests/unictype/test-categ_and.c
@@ -0,0 +1,51 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ uc_general_category_t ct =
+ uc_general_category_and (
+ uc_general_category_or (UC_LETTER, UC_DECIMAL_DIGIT_NUMBER),
+ uc_general_category_or (UC_UPPERCASE_LETTER, UC_NUMBER));
+
+ ASSERT (uc_is_general_category ('A', ct));
+ ASSERT (!uc_is_general_category ('a', ct));
+ ASSERT (uc_is_general_category ('7', ct));
+ ASSERT (!uc_is_general_category (0x00B2, ct));
+
+ return 0;
+}
diff --git a/tests/unictype/test-categ_and_not.c b/tests/unictype/test-categ_and_not.c
new file mode 100644
index 00000000..90b40f8b
--- /dev/null
+++ b/tests/unictype/test-categ_and_not.c
@@ -0,0 +1,51 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ uc_general_category_t ct =
+ uc_general_category_and_not (
+ uc_general_category_or (UC_LETTER, UC_NUMBER),
+ uc_general_category_or (UC_UPPERCASE_LETTER, UC_DECIMAL_DIGIT_NUMBER));
+
+ ASSERT (!uc_is_general_category ('A', ct));
+ ASSERT (uc_is_general_category ('a', ct));
+ ASSERT (!uc_is_general_category ('7', ct));
+ ASSERT (uc_is_general_category (0x00B2, ct));
+
+ return 0;
+}
diff --git a/tests/unictype/test-categ_byname.c b/tests/unictype/test-categ_byname.c
new file mode 100644
index 00000000..3bb44e9c
--- /dev/null
+++ b/tests/unictype/test-categ_byname.c
@@ -0,0 +1,62 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ uc_general_category_byname ("L");
+ uc_general_category_byname ("Nl");
+
+ {
+ uc_general_category_t ct = uc_general_category_byname ("Nd");
+ unsigned int c;
+
+ for (c = 0x30; c <= 0x39; c++)
+ ASSERT (uc_is_general_category (c, ct));
+ for (c = 0x40; c < 0x80; c++)
+ ASSERT (!uc_is_general_category (c, ct));
+ }
+
+ {
+ uc_general_category_t ct = uc_general_category_byname ("Foo");
+ unsigned int c;
+
+ for (c = 0; c < 0x110000; c++)
+ ASSERT (!uc_is_general_category (c, ct));
+ }
+
+ return 0;
+}
diff --git a/tests/unictype/test-categ_name.c b/tests/unictype/test-categ_name.c
new file mode 100644
index 00000000..b5c3f752
--- /dev/null
+++ b/tests/unictype/test-categ_name.c
@@ -0,0 +1,45 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ ASSERT (strcmp (uc_general_category_name (UC_CATEGORY_Z), "Z") == 0);
+ ASSERT (strcmp (uc_general_category_name (UC_CATEGORY_Nl), "Nl") == 0);
+ ASSERT (uc_general_category_name (uc_general_category_or (UC_CATEGORY_Z, UC_CATEGORY_Nl)) == NULL);
+
+ return 0;
+}
diff --git a/tests/unictype/test-categ_none.c b/tests/unictype/test-categ_none.c
new file mode 100644
index 00000000..f8002416
--- /dev/null
+++ b/tests/unictype/test-categ_none.c
@@ -0,0 +1,47 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ uc_general_category_t ct = _UC_CATEGORY_NONE;
+ unsigned int c;
+
+ for (c = 0; c < 0x110000; c++)
+ ASSERT (!uc_is_general_category (c, ct));
+
+ return 0;
+}
diff --git a/tests/unictype/test-categ_of.c b/tests/unictype/test-categ_of.c
new file mode 100644
index 00000000..28ee6630
--- /dev/null
+++ b/tests/unictype/test-categ_of.c
@@ -0,0 +1,67 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ {
+ unsigned int c;
+ for (c = 0; c < 0x110000; c++)
+ ASSERT (uc_is_general_category (c, uc_general_category (c)));
+ }
+
+ {
+ uc_general_category_t decimal_digits = uc_general_category ('7');
+ unsigned int c;
+
+ for (c = 0x30; c <= 0x39; c++)
+ ASSERT (uc_is_general_category (c, decimal_digits));
+ for (c = 0x40; c < 0x80; c++)
+ ASSERT (!uc_is_general_category (c, decimal_digits));
+ }
+
+ {
+ uc_general_category_t lowercase_letters = uc_general_category ('x');
+ unsigned int c;
+
+ for (c = 0x41; c <= 0x5A; c++)
+ ASSERT (!uc_is_general_category (c, lowercase_letters));
+ for (c = 0x61; c <= 0x7A; c++)
+ ASSERT (uc_is_general_category (c, lowercase_letters));
+ }
+
+ return 0;
+}
diff --git a/tests/unictype/test-categ_or.c b/tests/unictype/test-categ_or.c
new file mode 100644
index 00000000..6b07de5f
--- /dev/null
+++ b/tests/unictype/test-categ_or.c
@@ -0,0 +1,48 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ uc_general_category_t ct =
+ uc_general_category_or (UC_LETTER, UC_NUMBER);
+
+ ASSERT (uc_is_general_category ('a', ct));
+ ASSERT (uc_is_general_category ('7', ct));
+ ASSERT (!uc_is_general_category ('$', ct));
+
+ return 0;
+}
diff --git a/tests/unictype/test-categ_test_withtable.c b/tests/unictype/test-categ_test_withtable.c
new file mode 100644
index 00000000..b7351328
--- /dev/null
+++ b/tests/unictype/test-categ_test_withtable.c
@@ -0,0 +1,50 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ uint32_t ctmask =
+ (UC_CATEGORY_MASK_L | UC_CATEGORY_MASK_N)
+ & ~(UC_CATEGORY_MASK_Lu | UC_CATEGORY_MASK_Nd);
+
+ ASSERT (!uc_is_general_category_withtable ('A', ctmask));
+ ASSERT (uc_is_general_category_withtable ('a', ctmask));
+ ASSERT (!uc_is_general_category_withtable ('7', ctmask));
+ ASSERT (uc_is_general_category_withtable (0x00B2, ctmask));
+
+ return 0;
+}
diff --git a/tests/unictype/test-combining.c b/tests/unictype/test-combining.c
new file mode 100644
index 00000000..3e66a9b7
--- /dev/null
+++ b/tests/unictype/test-combining.c
@@ -0,0 +1,47 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ ASSERT (uc_combining_class ('x') == UC_CCC_NR);
+ ASSERT (uc_combining_class (0x0300) == UC_CCC_A);
+ ASSERT (uc_combining_class (0x0319) == UC_CCC_B);
+ ASSERT (uc_combining_class (0x0327) == UC_CCC_ATB);
+ ASSERT (uc_combining_class (0x093C) == UC_CCC_NK);
+
+ return 0;
+}
diff --git a/tests/unictype/test-ctype_alnum.c b/tests/unictype/test-ctype_alnum.c
new file mode 100644
index 00000000..9a1c6cac
--- /dev/null
+++ b/tests/unictype/test-ctype_alnum.c
@@ -0,0 +1,439 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0030, 0x0039 },
+ { 0x0041, 0x005A },
+ { 0x0061, 0x007A },
+ { 0x00AA, 0x00AA },
+ { 0x00B5, 0x00B5 },
+ { 0x00BA, 0x00BA },
+ { 0x00C0, 0x00D6 },
+ { 0x00D8, 0x00F6 },
+ { 0x00F8, 0x02C1 },
+ { 0x02C6, 0x02D1 },
+ { 0x02E0, 0x02E4 },
+ { 0x02EC, 0x02EC },
+ { 0x02EE, 0x02EE },
+ { 0x0345, 0x0345 },
+ { 0x0370, 0x0374 },
+ { 0x0376, 0x0377 },
+ { 0x037A, 0x037D },
+ { 0x0386, 0x0386 },
+ { 0x0388, 0x038A },
+ { 0x038C, 0x038C },
+ { 0x038E, 0x03A1 },
+ { 0x03A3, 0x03F5 },
+ { 0x03F7, 0x0481 },
+ { 0x048A, 0x0523 },
+ { 0x0531, 0x0556 },
+ { 0x0559, 0x0559 },
+ { 0x0561, 0x0587 },
+ { 0x05D0, 0x05EA },
+ { 0x05F0, 0x05F2 },
+ { 0x0621, 0x064A },
+ { 0x0660, 0x0669 },
+ { 0x066E, 0x066F },
+ { 0x0671, 0x06D3 },
+ { 0x06D5, 0x06D5 },
+ { 0x06E5, 0x06E6 },
+ { 0x06EE, 0x06FC },
+ { 0x06FF, 0x06FF },
+ { 0x0710, 0x0710 },
+ { 0x0712, 0x072F },
+ { 0x074D, 0x07A5 },
+ { 0x07B1, 0x07B1 },
+ { 0x07C0, 0x07EA },
+ { 0x07F4, 0x07F5 },
+ { 0x07FA, 0x07FA },
+ { 0x0904, 0x0939 },
+ { 0x093D, 0x093D },
+ { 0x0950, 0x0950 },
+ { 0x0958, 0x0961 },
+ { 0x0966, 0x096F },
+ { 0x0971, 0x0972 },
+ { 0x097B, 0x097F },
+ { 0x0985, 0x098C },
+ { 0x098F, 0x0990 },
+ { 0x0993, 0x09A8 },
+ { 0x09AA, 0x09B0 },
+ { 0x09B2, 0x09B2 },
+ { 0x09B6, 0x09B9 },
+ { 0x09BD, 0x09BD },
+ { 0x09CE, 0x09CE },
+ { 0x09DC, 0x09DD },
+ { 0x09DF, 0x09E1 },
+ { 0x09E6, 0x09F1 },
+ { 0x0A05, 0x0A0A },
+ { 0x0A0F, 0x0A10 },
+ { 0x0A13, 0x0A28 },
+ { 0x0A2A, 0x0A30 },
+ { 0x0A32, 0x0A33 },
+ { 0x0A35, 0x0A36 },
+ { 0x0A38, 0x0A39 },
+ { 0x0A59, 0x0A5C },
+ { 0x0A5E, 0x0A5E },
+ { 0x0A66, 0x0A6F },
+ { 0x0A72, 0x0A74 },
+ { 0x0A85, 0x0A8D },
+ { 0x0A8F, 0x0A91 },
+ { 0x0A93, 0x0AA8 },
+ { 0x0AAA, 0x0AB0 },
+ { 0x0AB2, 0x0AB3 },
+ { 0x0AB5, 0x0AB9 },
+ { 0x0ABD, 0x0ABD },
+ { 0x0AD0, 0x0AD0 },
+ { 0x0AE0, 0x0AE1 },
+ { 0x0AE6, 0x0AEF },
+ { 0x0B05, 0x0B0C },
+ { 0x0B0F, 0x0B10 },
+ { 0x0B13, 0x0B28 },
+ { 0x0B2A, 0x0B30 },
+ { 0x0B32, 0x0B33 },
+ { 0x0B35, 0x0B39 },
+ { 0x0B3D, 0x0B3D },
+ { 0x0B5C, 0x0B5D },
+ { 0x0B5F, 0x0B61 },
+ { 0x0B66, 0x0B6F },
+ { 0x0B71, 0x0B71 },
+ { 0x0B83, 0x0B83 },
+ { 0x0B85, 0x0B8A },
+ { 0x0B8E, 0x0B90 },
+ { 0x0B92, 0x0B95 },
+ { 0x0B99, 0x0B9A },
+ { 0x0B9C, 0x0B9C },
+ { 0x0B9E, 0x0B9F },
+ { 0x0BA3, 0x0BA4 },
+ { 0x0BA8, 0x0BAA },
+ { 0x0BAE, 0x0BB9 },
+ { 0x0BD0, 0x0BD0 },
+ { 0x0BE6, 0x0BEF },
+ { 0x0C05, 0x0C0C },
+ { 0x0C0E, 0x0C10 },
+ { 0x0C12, 0x0C28 },
+ { 0x0C2A, 0x0C33 },
+ { 0x0C35, 0x0C39 },
+ { 0x0C3D, 0x0C3D },
+ { 0x0C58, 0x0C59 },
+ { 0x0C60, 0x0C61 },
+ { 0x0C66, 0x0C6F },
+ { 0x0C85, 0x0C8C },
+ { 0x0C8E, 0x0C90 },
+ { 0x0C92, 0x0CA8 },
+ { 0x0CAA, 0x0CB3 },
+ { 0x0CB5, 0x0CB9 },
+ { 0x0CBD, 0x0CBD },
+ { 0x0CDE, 0x0CDE },
+ { 0x0CE0, 0x0CE1 },
+ { 0x0CE6, 0x0CEF },
+ { 0x0D05, 0x0D0C },
+ { 0x0D0E, 0x0D10 },
+ { 0x0D12, 0x0D28 },
+ { 0x0D2A, 0x0D39 },
+ { 0x0D3D, 0x0D3D },
+ { 0x0D60, 0x0D61 },
+ { 0x0D66, 0x0D6F },
+ { 0x0D7A, 0x0D7F },
+ { 0x0D85, 0x0D96 },
+ { 0x0D9A, 0x0DB1 },
+ { 0x0DB3, 0x0DBB },
+ { 0x0DBD, 0x0DBD },
+ { 0x0DC0, 0x0DC6 },
+ { 0x0E01, 0x0E2E },
+ { 0x0E30, 0x0E3A },
+ { 0x0E40, 0x0E45 },
+ { 0x0E47, 0x0E4E },
+ { 0x0E50, 0x0E59 },
+ { 0x0E81, 0x0E82 },
+ { 0x0E84, 0x0E84 },
+ { 0x0E87, 0x0E88 },
+ { 0x0E8A, 0x0E8A },
+ { 0x0E8D, 0x0E8D },
+ { 0x0E94, 0x0E97 },
+ { 0x0E99, 0x0E9F },
+ { 0x0EA1, 0x0EA3 },
+ { 0x0EA5, 0x0EA5 },
+ { 0x0EA7, 0x0EA7 },
+ { 0x0EAA, 0x0EAB },
+ { 0x0EAD, 0x0EB0 },
+ { 0x0EB2, 0x0EB3 },
+ { 0x0EBD, 0x0EBD },
+ { 0x0EC0, 0x0EC4 },
+ { 0x0EC6, 0x0EC6 },
+ { 0x0ED0, 0x0ED9 },
+ { 0x0EDC, 0x0EDD },
+ { 0x0F00, 0x0F00 },
+ { 0x0F20, 0x0F29 },
+ { 0x0F40, 0x0F47 },
+ { 0x0F49, 0x0F6C },
+ { 0x0F88, 0x0F8B },
+ { 0x1000, 0x102A },
+ { 0x103F, 0x1049 },
+ { 0x1050, 0x1055 },
+ { 0x105A, 0x105D },
+ { 0x1061, 0x1061 },
+ { 0x1065, 0x1066 },
+ { 0x106E, 0x1070 },
+ { 0x1075, 0x1081 },
+ { 0x108E, 0x108E },
+ { 0x1090, 0x1099 },
+ { 0x10A0, 0x10C5 },
+ { 0x10D0, 0x10FA },
+ { 0x10FC, 0x10FC },
+ { 0x1100, 0x1159 },
+ { 0x115F, 0x11A2 },
+ { 0x11A8, 0x11F9 },
+ { 0x1200, 0x1248 },
+ { 0x124A, 0x124D },
+ { 0x1250, 0x1256 },
+ { 0x1258, 0x1258 },
+ { 0x125A, 0x125D },
+ { 0x1260, 0x1288 },
+ { 0x128A, 0x128D },
+ { 0x1290, 0x12B0 },
+ { 0x12B2, 0x12B5 },
+ { 0x12B8, 0x12BE },
+ { 0x12C0, 0x12C0 },
+ { 0x12C2, 0x12C5 },
+ { 0x12C8, 0x12D6 },
+ { 0x12D8, 0x1310 },
+ { 0x1312, 0x1315 },
+ { 0x1318, 0x135A },
+ { 0x1380, 0x138F },
+ { 0x13A0, 0x13F4 },
+ { 0x1401, 0x166C },
+ { 0x166F, 0x1676 },
+ { 0x1681, 0x169A },
+ { 0x16A0, 0x16EA },
+ { 0x16EE, 0x16F0 },
+ { 0x1700, 0x170C },
+ { 0x170E, 0x1711 },
+ { 0x1720, 0x1731 },
+ { 0x1740, 0x1751 },
+ { 0x1760, 0x176C },
+ { 0x176E, 0x1770 },
+ { 0x1780, 0x17B3 },
+ { 0x17D7, 0x17D7 },
+ { 0x17DC, 0x17DC },
+ { 0x17E0, 0x17E9 },
+ { 0x1810, 0x1819 },
+ { 0x1820, 0x1877 },
+ { 0x1880, 0x18A8 },
+ { 0x18AA, 0x18AA },
+ { 0x1900, 0x191C },
+ { 0x1946, 0x196D },
+ { 0x1970, 0x1974 },
+ { 0x1980, 0x19A9 },
+ { 0x19C1, 0x19C7 },
+ { 0x19D0, 0x19D9 },
+ { 0x1A00, 0x1A16 },
+ { 0x1B05, 0x1B33 },
+ { 0x1B45, 0x1B4B },
+ { 0x1B50, 0x1B59 },
+ { 0x1B83, 0x1BA0 },
+ { 0x1BAE, 0x1BB9 },
+ { 0x1C00, 0x1C23 },
+ { 0x1C40, 0x1C49 },
+ { 0x1C4D, 0x1C7D },
+ { 0x1D00, 0x1DBF },
+ { 0x1E00, 0x1F15 },
+ { 0x1F18, 0x1F1D },
+ { 0x1F20, 0x1F45 },
+ { 0x1F48, 0x1F4D },
+ { 0x1F50, 0x1F57 },
+ { 0x1F59, 0x1F59 },
+ { 0x1F5B, 0x1F5B },
+ { 0x1F5D, 0x1F5D },
+ { 0x1F5F, 0x1F7D },
+ { 0x1F80, 0x1FB4 },
+ { 0x1FB6, 0x1FBC },
+ { 0x1FBE, 0x1FBE },
+ { 0x1FC2, 0x1FC4 },
+ { 0x1FC6, 0x1FCC },
+ { 0x1FD0, 0x1FD3 },
+ { 0x1FD6, 0x1FDB },
+ { 0x1FE0, 0x1FEC },
+ { 0x1FF2, 0x1FF4 },
+ { 0x1FF6, 0x1FFC },
+ { 0x2071, 0x2071 },
+ { 0x207F, 0x207F },
+ { 0x2090, 0x2094 },
+ { 0x2102, 0x2102 },
+ { 0x2107, 0x2107 },
+ { 0x210A, 0x2113 },
+ { 0x2115, 0x2115 },
+ { 0x2119, 0x211D },
+ { 0x2124, 0x2124 },
+ { 0x2126, 0x2126 },
+ { 0x2128, 0x212D },
+ { 0x212F, 0x2139 },
+ { 0x213C, 0x213F },
+ { 0x2145, 0x2149 },
+ { 0x214E, 0x214E },
+ { 0x2160, 0x2188 },
+ { 0x249C, 0x24E9 },
+ { 0x2C00, 0x2C2E },
+ { 0x2C30, 0x2C5E },
+ { 0x2C60, 0x2C6F },
+ { 0x2C71, 0x2C7D },
+ { 0x2C80, 0x2CE4 },
+ { 0x2D00, 0x2D25 },
+ { 0x2D30, 0x2D65 },
+ { 0x2D6F, 0x2D6F },
+ { 0x2D80, 0x2D96 },
+ { 0x2DA0, 0x2DA6 },
+ { 0x2DA8, 0x2DAE },
+ { 0x2DB0, 0x2DB6 },
+ { 0x2DB8, 0x2DBE },
+ { 0x2DC0, 0x2DC6 },
+ { 0x2DC8, 0x2DCE },
+ { 0x2DD0, 0x2DD6 },
+ { 0x2DD8, 0x2DDE },
+ { 0x2E2F, 0x2E2F },
+ { 0x3005, 0x3007 },
+ { 0x3021, 0x3029 },
+ { 0x3031, 0x3035 },
+ { 0x3038, 0x303C },
+ { 0x3041, 0x3096 },
+ { 0x309D, 0x309F },
+ { 0x30A1, 0x30FA },
+ { 0x30FC, 0x30FF },
+ { 0x3105, 0x312D },
+ { 0x3131, 0x318E },
+ { 0x31A0, 0x31B7 },
+ { 0x31F0, 0x31FF },
+ { 0x3400, 0x4DB5 },
+ { 0x4E00, 0x9FC3 },
+ { 0xA000, 0xA48C },
+ { 0xA500, 0xA60C },
+ { 0xA610, 0xA62B },
+ { 0xA640, 0xA65F },
+ { 0xA662, 0xA66E },
+ { 0xA67F, 0xA697 },
+ { 0xA717, 0xA71F },
+ { 0xA722, 0xA788 },
+ { 0xA78B, 0xA78C },
+ { 0xA7FB, 0xA801 },
+ { 0xA803, 0xA805 },
+ { 0xA807, 0xA80A },
+ { 0xA80C, 0xA822 },
+ { 0xA840, 0xA873 },
+ { 0xA882, 0xA8B3 },
+ { 0xA8D0, 0xA8D9 },
+ { 0xA900, 0xA925 },
+ { 0xA930, 0xA946 },
+ { 0xAA00, 0xAA28 },
+ { 0xAA40, 0xAA42 },
+ { 0xAA44, 0xAA4B },
+ { 0xAA50, 0xAA59 },
+ { 0xAC00, 0xD7A3 },
+ { 0xF900, 0xFA2D },
+ { 0xFA30, 0xFA6A },
+ { 0xFA70, 0xFAD9 },
+ { 0xFB00, 0xFB06 },
+ { 0xFB13, 0xFB17 },
+ { 0xFB1D, 0xFB1D },
+ { 0xFB1F, 0xFB28 },
+ { 0xFB2A, 0xFB36 },
+ { 0xFB38, 0xFB3C },
+ { 0xFB3E, 0xFB3E },
+ { 0xFB40, 0xFB41 },
+ { 0xFB43, 0xFB44 },
+ { 0xFB46, 0xFBB1 },
+ { 0xFBD3, 0xFD3D },
+ { 0xFD50, 0xFD8F },
+ { 0xFD92, 0xFDC7 },
+ { 0xFDF0, 0xFDFB },
+ { 0xFE70, 0xFE74 },
+ { 0xFE76, 0xFEFC },
+ { 0xFF10, 0xFF19 },
+ { 0xFF21, 0xFF3A },
+ { 0xFF41, 0xFF5A },
+ { 0xFF66, 0xFFBE },
+ { 0xFFC2, 0xFFC7 },
+ { 0xFFCA, 0xFFCF },
+ { 0xFFD2, 0xFFD7 },
+ { 0xFFDA, 0xFFDC },
+ { 0x10000, 0x1000B },
+ { 0x1000D, 0x10026 },
+ { 0x10028, 0x1003A },
+ { 0x1003C, 0x1003D },
+ { 0x1003F, 0x1004D },
+ { 0x10050, 0x1005D },
+ { 0x10080, 0x100FA },
+ { 0x10140, 0x10174 },
+ { 0x10280, 0x1029C },
+ { 0x102A0, 0x102D0 },
+ { 0x10300, 0x1031E },
+ { 0x10330, 0x1034A },
+ { 0x10380, 0x1039D },
+ { 0x103A0, 0x103C3 },
+ { 0x103C8, 0x103CF },
+ { 0x103D1, 0x103D5 },
+ { 0x10400, 0x1049D },
+ { 0x104A0, 0x104A9 },
+ { 0x10800, 0x10805 },
+ { 0x10808, 0x10808 },
+ { 0x1080A, 0x10835 },
+ { 0x10837, 0x10838 },
+ { 0x1083C, 0x1083C },
+ { 0x1083F, 0x1083F },
+ { 0x10900, 0x10915 },
+ { 0x10920, 0x10939 },
+ { 0x10A00, 0x10A00 },
+ { 0x10A10, 0x10A13 },
+ { 0x10A15, 0x10A17 },
+ { 0x10A19, 0x10A33 },
+ { 0x12000, 0x1236E },
+ { 0x12400, 0x12462 },
+ { 0x1D400, 0x1D454 },
+ { 0x1D456, 0x1D49C },
+ { 0x1D49E, 0x1D49F },
+ { 0x1D4A2, 0x1D4A2 },
+ { 0x1D4A5, 0x1D4A6 },
+ { 0x1D4A9, 0x1D4AC },
+ { 0x1D4AE, 0x1D4B9 },
+ { 0x1D4BB, 0x1D4BB },
+ { 0x1D4BD, 0x1D4C3 },
+ { 0x1D4C5, 0x1D505 },
+ { 0x1D507, 0x1D50A },
+ { 0x1D50D, 0x1D514 },
+ { 0x1D516, 0x1D51C },
+ { 0x1D51E, 0x1D539 },
+ { 0x1D53B, 0x1D53E },
+ { 0x1D540, 0x1D544 },
+ { 0x1D546, 0x1D546 },
+ { 0x1D54A, 0x1D550 },
+ { 0x1D552, 0x1D6A5 },
+ { 0x1D6A8, 0x1D6C0 },
+ { 0x1D6C2, 0x1D6DA },
+ { 0x1D6DC, 0x1D6FA },
+ { 0x1D6FC, 0x1D714 },
+ { 0x1D716, 0x1D734 },
+ { 0x1D736, 0x1D74E },
+ { 0x1D750, 0x1D76E },
+ { 0x1D770, 0x1D788 },
+ { 0x1D78A, 0x1D7A8 },
+ { 0x1D7AA, 0x1D7C2 },
+ { 0x1D7C4, 0x1D7CB },
+ { 0x1D7CE, 0x1D7FF },
+ { 0x20000, 0x2A6D6 },
+ { 0x2F800, 0x2FA1D }
+
+#define PREDICATE(c) uc_is_alnum (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-ctype_alpha.c b/tests/unictype/test-ctype_alpha.c
new file mode 100644
index 00000000..c6100cfa
--- /dev/null
+++ b/tests/unictype/test-ctype_alpha.c
@@ -0,0 +1,438 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0041, 0x005A },
+ { 0x0061, 0x007A },
+ { 0x00AA, 0x00AA },
+ { 0x00B5, 0x00B5 },
+ { 0x00BA, 0x00BA },
+ { 0x00C0, 0x00D6 },
+ { 0x00D8, 0x00F6 },
+ { 0x00F8, 0x02C1 },
+ { 0x02C6, 0x02D1 },
+ { 0x02E0, 0x02E4 },
+ { 0x02EC, 0x02EC },
+ { 0x02EE, 0x02EE },
+ { 0x0345, 0x0345 },
+ { 0x0370, 0x0374 },
+ { 0x0376, 0x0377 },
+ { 0x037A, 0x037D },
+ { 0x0386, 0x0386 },
+ { 0x0388, 0x038A },
+ { 0x038C, 0x038C },
+ { 0x038E, 0x03A1 },
+ { 0x03A3, 0x03F5 },
+ { 0x03F7, 0x0481 },
+ { 0x048A, 0x0523 },
+ { 0x0531, 0x0556 },
+ { 0x0559, 0x0559 },
+ { 0x0561, 0x0587 },
+ { 0x05D0, 0x05EA },
+ { 0x05F0, 0x05F2 },
+ { 0x0621, 0x064A },
+ { 0x0660, 0x0669 },
+ { 0x066E, 0x066F },
+ { 0x0671, 0x06D3 },
+ { 0x06D5, 0x06D5 },
+ { 0x06E5, 0x06E6 },
+ { 0x06EE, 0x06FC },
+ { 0x06FF, 0x06FF },
+ { 0x0710, 0x0710 },
+ { 0x0712, 0x072F },
+ { 0x074D, 0x07A5 },
+ { 0x07B1, 0x07B1 },
+ { 0x07C0, 0x07EA },
+ { 0x07F4, 0x07F5 },
+ { 0x07FA, 0x07FA },
+ { 0x0904, 0x0939 },
+ { 0x093D, 0x093D },
+ { 0x0950, 0x0950 },
+ { 0x0958, 0x0961 },
+ { 0x0966, 0x096F },
+ { 0x0971, 0x0972 },
+ { 0x097B, 0x097F },
+ { 0x0985, 0x098C },
+ { 0x098F, 0x0990 },
+ { 0x0993, 0x09A8 },
+ { 0x09AA, 0x09B0 },
+ { 0x09B2, 0x09B2 },
+ { 0x09B6, 0x09B9 },
+ { 0x09BD, 0x09BD },
+ { 0x09CE, 0x09CE },
+ { 0x09DC, 0x09DD },
+ { 0x09DF, 0x09E1 },
+ { 0x09E6, 0x09F1 },
+ { 0x0A05, 0x0A0A },
+ { 0x0A0F, 0x0A10 },
+ { 0x0A13, 0x0A28 },
+ { 0x0A2A, 0x0A30 },
+ { 0x0A32, 0x0A33 },
+ { 0x0A35, 0x0A36 },
+ { 0x0A38, 0x0A39 },
+ { 0x0A59, 0x0A5C },
+ { 0x0A5E, 0x0A5E },
+ { 0x0A66, 0x0A6F },
+ { 0x0A72, 0x0A74 },
+ { 0x0A85, 0x0A8D },
+ { 0x0A8F, 0x0A91 },
+ { 0x0A93, 0x0AA8 },
+ { 0x0AAA, 0x0AB0 },
+ { 0x0AB2, 0x0AB3 },
+ { 0x0AB5, 0x0AB9 },
+ { 0x0ABD, 0x0ABD },
+ { 0x0AD0, 0x0AD0 },
+ { 0x0AE0, 0x0AE1 },
+ { 0x0AE6, 0x0AEF },
+ { 0x0B05, 0x0B0C },
+ { 0x0B0F, 0x0B10 },
+ { 0x0B13, 0x0B28 },
+ { 0x0B2A, 0x0B30 },
+ { 0x0B32, 0x0B33 },
+ { 0x0B35, 0x0B39 },
+ { 0x0B3D, 0x0B3D },
+ { 0x0B5C, 0x0B5D },
+ { 0x0B5F, 0x0B61 },
+ { 0x0B66, 0x0B6F },
+ { 0x0B71, 0x0B71 },
+ { 0x0B83, 0x0B83 },
+ { 0x0B85, 0x0B8A },
+ { 0x0B8E, 0x0B90 },
+ { 0x0B92, 0x0B95 },
+ { 0x0B99, 0x0B9A },
+ { 0x0B9C, 0x0B9C },
+ { 0x0B9E, 0x0B9F },
+ { 0x0BA3, 0x0BA4 },
+ { 0x0BA8, 0x0BAA },
+ { 0x0BAE, 0x0BB9 },
+ { 0x0BD0, 0x0BD0 },
+ { 0x0BE6, 0x0BEF },
+ { 0x0C05, 0x0C0C },
+ { 0x0C0E, 0x0C10 },
+ { 0x0C12, 0x0C28 },
+ { 0x0C2A, 0x0C33 },
+ { 0x0C35, 0x0C39 },
+ { 0x0C3D, 0x0C3D },
+ { 0x0C58, 0x0C59 },
+ { 0x0C60, 0x0C61 },
+ { 0x0C66, 0x0C6F },
+ { 0x0C85, 0x0C8C },
+ { 0x0C8E, 0x0C90 },
+ { 0x0C92, 0x0CA8 },
+ { 0x0CAA, 0x0CB3 },
+ { 0x0CB5, 0x0CB9 },
+ { 0x0CBD, 0x0CBD },
+ { 0x0CDE, 0x0CDE },
+ { 0x0CE0, 0x0CE1 },
+ { 0x0CE6, 0x0CEF },
+ { 0x0D05, 0x0D0C },
+ { 0x0D0E, 0x0D10 },
+ { 0x0D12, 0x0D28 },
+ { 0x0D2A, 0x0D39 },
+ { 0x0D3D, 0x0D3D },
+ { 0x0D60, 0x0D61 },
+ { 0x0D66, 0x0D6F },
+ { 0x0D7A, 0x0D7F },
+ { 0x0D85, 0x0D96 },
+ { 0x0D9A, 0x0DB1 },
+ { 0x0DB3, 0x0DBB },
+ { 0x0DBD, 0x0DBD },
+ { 0x0DC0, 0x0DC6 },
+ { 0x0E01, 0x0E2E },
+ { 0x0E30, 0x0E3A },
+ { 0x0E40, 0x0E45 },
+ { 0x0E47, 0x0E4E },
+ { 0x0E50, 0x0E59 },
+ { 0x0E81, 0x0E82 },
+ { 0x0E84, 0x0E84 },
+ { 0x0E87, 0x0E88 },
+ { 0x0E8A, 0x0E8A },
+ { 0x0E8D, 0x0E8D },
+ { 0x0E94, 0x0E97 },
+ { 0x0E99, 0x0E9F },
+ { 0x0EA1, 0x0EA3 },
+ { 0x0EA5, 0x0EA5 },
+ { 0x0EA7, 0x0EA7 },
+ { 0x0EAA, 0x0EAB },
+ { 0x0EAD, 0x0EB0 },
+ { 0x0EB2, 0x0EB3 },
+ { 0x0EBD, 0x0EBD },
+ { 0x0EC0, 0x0EC4 },
+ { 0x0EC6, 0x0EC6 },
+ { 0x0ED0, 0x0ED9 },
+ { 0x0EDC, 0x0EDD },
+ { 0x0F00, 0x0F00 },
+ { 0x0F20, 0x0F29 },
+ { 0x0F40, 0x0F47 },
+ { 0x0F49, 0x0F6C },
+ { 0x0F88, 0x0F8B },
+ { 0x1000, 0x102A },
+ { 0x103F, 0x1049 },
+ { 0x1050, 0x1055 },
+ { 0x105A, 0x105D },
+ { 0x1061, 0x1061 },
+ { 0x1065, 0x1066 },
+ { 0x106E, 0x1070 },
+ { 0x1075, 0x1081 },
+ { 0x108E, 0x108E },
+ { 0x1090, 0x1099 },
+ { 0x10A0, 0x10C5 },
+ { 0x10D0, 0x10FA },
+ { 0x10FC, 0x10FC },
+ { 0x1100, 0x1159 },
+ { 0x115F, 0x11A2 },
+ { 0x11A8, 0x11F9 },
+ { 0x1200, 0x1248 },
+ { 0x124A, 0x124D },
+ { 0x1250, 0x1256 },
+ { 0x1258, 0x1258 },
+ { 0x125A, 0x125D },
+ { 0x1260, 0x1288 },
+ { 0x128A, 0x128D },
+ { 0x1290, 0x12B0 },
+ { 0x12B2, 0x12B5 },
+ { 0x12B8, 0x12BE },
+ { 0x12C0, 0x12C0 },
+ { 0x12C2, 0x12C5 },
+ { 0x12C8, 0x12D6 },
+ { 0x12D8, 0x1310 },
+ { 0x1312, 0x1315 },
+ { 0x1318, 0x135A },
+ { 0x1380, 0x138F },
+ { 0x13A0, 0x13F4 },
+ { 0x1401, 0x166C },
+ { 0x166F, 0x1676 },
+ { 0x1681, 0x169A },
+ { 0x16A0, 0x16EA },
+ { 0x16EE, 0x16F0 },
+ { 0x1700, 0x170C },
+ { 0x170E, 0x1711 },
+ { 0x1720, 0x1731 },
+ { 0x1740, 0x1751 },
+ { 0x1760, 0x176C },
+ { 0x176E, 0x1770 },
+ { 0x1780, 0x17B3 },
+ { 0x17D7, 0x17D7 },
+ { 0x17DC, 0x17DC },
+ { 0x17E0, 0x17E9 },
+ { 0x1810, 0x1819 },
+ { 0x1820, 0x1877 },
+ { 0x1880, 0x18A8 },
+ { 0x18AA, 0x18AA },
+ { 0x1900, 0x191C },
+ { 0x1946, 0x196D },
+ { 0x1970, 0x1974 },
+ { 0x1980, 0x19A9 },
+ { 0x19C1, 0x19C7 },
+ { 0x19D0, 0x19D9 },
+ { 0x1A00, 0x1A16 },
+ { 0x1B05, 0x1B33 },
+ { 0x1B45, 0x1B4B },
+ { 0x1B50, 0x1B59 },
+ { 0x1B83, 0x1BA0 },
+ { 0x1BAE, 0x1BB9 },
+ { 0x1C00, 0x1C23 },
+ { 0x1C40, 0x1C49 },
+ { 0x1C4D, 0x1C7D },
+ { 0x1D00, 0x1DBF },
+ { 0x1E00, 0x1F15 },
+ { 0x1F18, 0x1F1D },
+ { 0x1F20, 0x1F45 },
+ { 0x1F48, 0x1F4D },
+ { 0x1F50, 0x1F57 },
+ { 0x1F59, 0x1F59 },
+ { 0x1F5B, 0x1F5B },
+ { 0x1F5D, 0x1F5D },
+ { 0x1F5F, 0x1F7D },
+ { 0x1F80, 0x1FB4 },
+ { 0x1FB6, 0x1FBC },
+ { 0x1FBE, 0x1FBE },
+ { 0x1FC2, 0x1FC4 },
+ { 0x1FC6, 0x1FCC },
+ { 0x1FD0, 0x1FD3 },
+ { 0x1FD6, 0x1FDB },
+ { 0x1FE0, 0x1FEC },
+ { 0x1FF2, 0x1FF4 },
+ { 0x1FF6, 0x1FFC },
+ { 0x2071, 0x2071 },
+ { 0x207F, 0x207F },
+ { 0x2090, 0x2094 },
+ { 0x2102, 0x2102 },
+ { 0x2107, 0x2107 },
+ { 0x210A, 0x2113 },
+ { 0x2115, 0x2115 },
+ { 0x2119, 0x211D },
+ { 0x2124, 0x2124 },
+ { 0x2126, 0x2126 },
+ { 0x2128, 0x212D },
+ { 0x212F, 0x2139 },
+ { 0x213C, 0x213F },
+ { 0x2145, 0x2149 },
+ { 0x214E, 0x214E },
+ { 0x2160, 0x2188 },
+ { 0x249C, 0x24E9 },
+ { 0x2C00, 0x2C2E },
+ { 0x2C30, 0x2C5E },
+ { 0x2C60, 0x2C6F },
+ { 0x2C71, 0x2C7D },
+ { 0x2C80, 0x2CE4 },
+ { 0x2D00, 0x2D25 },
+ { 0x2D30, 0x2D65 },
+ { 0x2D6F, 0x2D6F },
+ { 0x2D80, 0x2D96 },
+ { 0x2DA0, 0x2DA6 },
+ { 0x2DA8, 0x2DAE },
+ { 0x2DB0, 0x2DB6 },
+ { 0x2DB8, 0x2DBE },
+ { 0x2DC0, 0x2DC6 },
+ { 0x2DC8, 0x2DCE },
+ { 0x2DD0, 0x2DD6 },
+ { 0x2DD8, 0x2DDE },
+ { 0x2E2F, 0x2E2F },
+ { 0x3005, 0x3007 },
+ { 0x3021, 0x3029 },
+ { 0x3031, 0x3035 },
+ { 0x3038, 0x303C },
+ { 0x3041, 0x3096 },
+ { 0x309D, 0x309F },
+ { 0x30A1, 0x30FA },
+ { 0x30FC, 0x30FF },
+ { 0x3105, 0x312D },
+ { 0x3131, 0x318E },
+ { 0x31A0, 0x31B7 },
+ { 0x31F0, 0x31FF },
+ { 0x3400, 0x4DB5 },
+ { 0x4E00, 0x9FC3 },
+ { 0xA000, 0xA48C },
+ { 0xA500, 0xA60C },
+ { 0xA610, 0xA62B },
+ { 0xA640, 0xA65F },
+ { 0xA662, 0xA66E },
+ { 0xA67F, 0xA697 },
+ { 0xA717, 0xA71F },
+ { 0xA722, 0xA788 },
+ { 0xA78B, 0xA78C },
+ { 0xA7FB, 0xA801 },
+ { 0xA803, 0xA805 },
+ { 0xA807, 0xA80A },
+ { 0xA80C, 0xA822 },
+ { 0xA840, 0xA873 },
+ { 0xA882, 0xA8B3 },
+ { 0xA8D0, 0xA8D9 },
+ { 0xA900, 0xA925 },
+ { 0xA930, 0xA946 },
+ { 0xAA00, 0xAA28 },
+ { 0xAA40, 0xAA42 },
+ { 0xAA44, 0xAA4B },
+ { 0xAA50, 0xAA59 },
+ { 0xAC00, 0xD7A3 },
+ { 0xF900, 0xFA2D },
+ { 0xFA30, 0xFA6A },
+ { 0xFA70, 0xFAD9 },
+ { 0xFB00, 0xFB06 },
+ { 0xFB13, 0xFB17 },
+ { 0xFB1D, 0xFB1D },
+ { 0xFB1F, 0xFB28 },
+ { 0xFB2A, 0xFB36 },
+ { 0xFB38, 0xFB3C },
+ { 0xFB3E, 0xFB3E },
+ { 0xFB40, 0xFB41 },
+ { 0xFB43, 0xFB44 },
+ { 0xFB46, 0xFBB1 },
+ { 0xFBD3, 0xFD3D },
+ { 0xFD50, 0xFD8F },
+ { 0xFD92, 0xFDC7 },
+ { 0xFDF0, 0xFDFB },
+ { 0xFE70, 0xFE74 },
+ { 0xFE76, 0xFEFC },
+ { 0xFF10, 0xFF19 },
+ { 0xFF21, 0xFF3A },
+ { 0xFF41, 0xFF5A },
+ { 0xFF66, 0xFFBE },
+ { 0xFFC2, 0xFFC7 },
+ { 0xFFCA, 0xFFCF },
+ { 0xFFD2, 0xFFD7 },
+ { 0xFFDA, 0xFFDC },
+ { 0x10000, 0x1000B },
+ { 0x1000D, 0x10026 },
+ { 0x10028, 0x1003A },
+ { 0x1003C, 0x1003D },
+ { 0x1003F, 0x1004D },
+ { 0x10050, 0x1005D },
+ { 0x10080, 0x100FA },
+ { 0x10140, 0x10174 },
+ { 0x10280, 0x1029C },
+ { 0x102A0, 0x102D0 },
+ { 0x10300, 0x1031E },
+ { 0x10330, 0x1034A },
+ { 0x10380, 0x1039D },
+ { 0x103A0, 0x103C3 },
+ { 0x103C8, 0x103CF },
+ { 0x103D1, 0x103D5 },
+ { 0x10400, 0x1049D },
+ { 0x104A0, 0x104A9 },
+ { 0x10800, 0x10805 },
+ { 0x10808, 0x10808 },
+ { 0x1080A, 0x10835 },
+ { 0x10837, 0x10838 },
+ { 0x1083C, 0x1083C },
+ { 0x1083F, 0x1083F },
+ { 0x10900, 0x10915 },
+ { 0x10920, 0x10939 },
+ { 0x10A00, 0x10A00 },
+ { 0x10A10, 0x10A13 },
+ { 0x10A15, 0x10A17 },
+ { 0x10A19, 0x10A33 },
+ { 0x12000, 0x1236E },
+ { 0x12400, 0x12462 },
+ { 0x1D400, 0x1D454 },
+ { 0x1D456, 0x1D49C },
+ { 0x1D49E, 0x1D49F },
+ { 0x1D4A2, 0x1D4A2 },
+ { 0x1D4A5, 0x1D4A6 },
+ { 0x1D4A9, 0x1D4AC },
+ { 0x1D4AE, 0x1D4B9 },
+ { 0x1D4BB, 0x1D4BB },
+ { 0x1D4BD, 0x1D4C3 },
+ { 0x1D4C5, 0x1D505 },
+ { 0x1D507, 0x1D50A },
+ { 0x1D50D, 0x1D514 },
+ { 0x1D516, 0x1D51C },
+ { 0x1D51E, 0x1D539 },
+ { 0x1D53B, 0x1D53E },
+ { 0x1D540, 0x1D544 },
+ { 0x1D546, 0x1D546 },
+ { 0x1D54A, 0x1D550 },
+ { 0x1D552, 0x1D6A5 },
+ { 0x1D6A8, 0x1D6C0 },
+ { 0x1D6C2, 0x1D6DA },
+ { 0x1D6DC, 0x1D6FA },
+ { 0x1D6FC, 0x1D714 },
+ { 0x1D716, 0x1D734 },
+ { 0x1D736, 0x1D74E },
+ { 0x1D750, 0x1D76E },
+ { 0x1D770, 0x1D788 },
+ { 0x1D78A, 0x1D7A8 },
+ { 0x1D7AA, 0x1D7C2 },
+ { 0x1D7C4, 0x1D7CB },
+ { 0x1D7CE, 0x1D7FF },
+ { 0x20000, 0x2A6D6 },
+ { 0x2F800, 0x2FA1D }
+
+#define PREDICATE(c) uc_is_alpha (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-ctype_blank.c b/tests/unictype/test-ctype_blank.c
new file mode 100644
index 00000000..15aa3087
--- /dev/null
+++ b/tests/unictype/test-ctype_blank.c
@@ -0,0 +1,30 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0009, 0x0009 },
+ { 0x0020, 0x0020 },
+ { 0x1680, 0x1680 },
+ { 0x180E, 0x180E },
+ { 0x2000, 0x2006 },
+ { 0x2008, 0x200A },
+ { 0x205F, 0x205F },
+ { 0x3000, 0x3000 }
+
+#define PREDICATE(c) uc_is_blank (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-ctype_cntrl.c b/tests/unictype/test-ctype_cntrl.c
new file mode 100644
index 00000000..ea886b9a
--- /dev/null
+++ b/tests/unictype/test-ctype_cntrl.c
@@ -0,0 +1,25 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0000, 0x001F },
+ { 0x007F, 0x009F },
+ { 0x2028, 0x2029 }
+
+#define PREDICATE(c) uc_is_cntrl (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-ctype_digit.c b/tests/unictype/test-ctype_digit.c
new file mode 100644
index 00000000..acf5b4ac
--- /dev/null
+++ b/tests/unictype/test-ctype_digit.c
@@ -0,0 +1,23 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0030, 0x0039 }
+
+#define PREDICATE(c) uc_is_digit (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-ctype_graph.c b/tests/unictype/test-ctype_graph.c
new file mode 100644
index 00000000..32055ede
--- /dev/null
+++ b/tests/unictype/test-ctype_graph.c
@@ -0,0 +1,471 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0021, 0x007E },
+ { 0x00A0, 0x0377 },
+ { 0x037A, 0x037E },
+ { 0x0384, 0x038A },
+ { 0x038C, 0x038C },
+ { 0x038E, 0x03A1 },
+ { 0x03A3, 0x0523 },
+ { 0x0531, 0x0556 },
+ { 0x0559, 0x055F },
+ { 0x0561, 0x0587 },
+ { 0x0589, 0x058A },
+ { 0x0591, 0x05C7 },
+ { 0x05D0, 0x05EA },
+ { 0x05F0, 0x05F4 },
+ { 0x0600, 0x0603 },
+ { 0x0606, 0x061B },
+ { 0x061E, 0x061F },
+ { 0x0621, 0x065E },
+ { 0x0660, 0x070D },
+ { 0x070F, 0x074A },
+ { 0x074D, 0x07B1 },
+ { 0x07C0, 0x07FA },
+ { 0x0901, 0x0939 },
+ { 0x093C, 0x094D },
+ { 0x0950, 0x0954 },
+ { 0x0958, 0x0972 },
+ { 0x097B, 0x097F },
+ { 0x0981, 0x0983 },
+ { 0x0985, 0x098C },
+ { 0x098F, 0x0990 },
+ { 0x0993, 0x09A8 },
+ { 0x09AA, 0x09B0 },
+ { 0x09B2, 0x09B2 },
+ { 0x09B6, 0x09B9 },
+ { 0x09BC, 0x09C4 },
+ { 0x09C7, 0x09C8 },
+ { 0x09CB, 0x09CE },
+ { 0x09D7, 0x09D7 },
+ { 0x09DC, 0x09DD },
+ { 0x09DF, 0x09E3 },
+ { 0x09E6, 0x09FA },
+ { 0x0A01, 0x0A03 },
+ { 0x0A05, 0x0A0A },
+ { 0x0A0F, 0x0A10 },
+ { 0x0A13, 0x0A28 },
+ { 0x0A2A, 0x0A30 },
+ { 0x0A32, 0x0A33 },
+ { 0x0A35, 0x0A36 },
+ { 0x0A38, 0x0A39 },
+ { 0x0A3C, 0x0A3C },
+ { 0x0A3E, 0x0A42 },
+ { 0x0A47, 0x0A48 },
+ { 0x0A4B, 0x0A4D },
+ { 0x0A51, 0x0A51 },
+ { 0x0A59, 0x0A5C },
+ { 0x0A5E, 0x0A5E },
+ { 0x0A66, 0x0A75 },
+ { 0x0A81, 0x0A83 },
+ { 0x0A85, 0x0A8D },
+ { 0x0A8F, 0x0A91 },
+ { 0x0A93, 0x0AA8 },
+ { 0x0AAA, 0x0AB0 },
+ { 0x0AB2, 0x0AB3 },
+ { 0x0AB5, 0x0AB9 },
+ { 0x0ABC, 0x0AC5 },
+ { 0x0AC7, 0x0AC9 },
+ { 0x0ACB, 0x0ACD },
+ { 0x0AD0, 0x0AD0 },
+ { 0x0AE0, 0x0AE3 },
+ { 0x0AE6, 0x0AEF },
+ { 0x0AF1, 0x0AF1 },
+ { 0x0B01, 0x0B03 },
+ { 0x0B05, 0x0B0C },
+ { 0x0B0F, 0x0B10 },
+ { 0x0B13, 0x0B28 },
+ { 0x0B2A, 0x0B30 },
+ { 0x0B32, 0x0B33 },
+ { 0x0B35, 0x0B39 },
+ { 0x0B3C, 0x0B44 },
+ { 0x0B47, 0x0B48 },
+ { 0x0B4B, 0x0B4D },
+ { 0x0B56, 0x0B57 },
+ { 0x0B5C, 0x0B5D },
+ { 0x0B5F, 0x0B63 },
+ { 0x0B66, 0x0B71 },
+ { 0x0B82, 0x0B83 },
+ { 0x0B85, 0x0B8A },
+ { 0x0B8E, 0x0B90 },
+ { 0x0B92, 0x0B95 },
+ { 0x0B99, 0x0B9A },
+ { 0x0B9C, 0x0B9C },
+ { 0x0B9E, 0x0B9F },
+ { 0x0BA3, 0x0BA4 },
+ { 0x0BA8, 0x0BAA },
+ { 0x0BAE, 0x0BB9 },
+ { 0x0BBE, 0x0BC2 },
+ { 0x0BC6, 0x0BC8 },
+ { 0x0BCA, 0x0BCD },
+ { 0x0BD0, 0x0BD0 },
+ { 0x0BD7, 0x0BD7 },
+ { 0x0BE6, 0x0BFA },
+ { 0x0C01, 0x0C03 },
+ { 0x0C05, 0x0C0C },
+ { 0x0C0E, 0x0C10 },
+ { 0x0C12, 0x0C28 },
+ { 0x0C2A, 0x0C33 },
+ { 0x0C35, 0x0C39 },
+ { 0x0C3D, 0x0C44 },
+ { 0x0C46, 0x0C48 },
+ { 0x0C4A, 0x0C4D },
+ { 0x0C55, 0x0C56 },
+ { 0x0C58, 0x0C59 },
+ { 0x0C60, 0x0C63 },
+ { 0x0C66, 0x0C6F },
+ { 0x0C78, 0x0C7F },
+ { 0x0C82, 0x0C83 },
+ { 0x0C85, 0x0C8C },
+ { 0x0C8E, 0x0C90 },
+ { 0x0C92, 0x0CA8 },
+ { 0x0CAA, 0x0CB3 },
+ { 0x0CB5, 0x0CB9 },
+ { 0x0CBC, 0x0CC4 },
+ { 0x0CC6, 0x0CC8 },
+ { 0x0CCA, 0x0CCD },
+ { 0x0CD5, 0x0CD6 },
+ { 0x0CDE, 0x0CDE },
+ { 0x0CE0, 0x0CE3 },
+ { 0x0CE6, 0x0CEF },
+ { 0x0CF1, 0x0CF2 },
+ { 0x0D02, 0x0D03 },
+ { 0x0D05, 0x0D0C },
+ { 0x0D0E, 0x0D10 },
+ { 0x0D12, 0x0D28 },
+ { 0x0D2A, 0x0D39 },
+ { 0x0D3D, 0x0D44 },
+ { 0x0D46, 0x0D48 },
+ { 0x0D4A, 0x0D4D },
+ { 0x0D57, 0x0D57 },
+ { 0x0D60, 0x0D63 },
+ { 0x0D66, 0x0D75 },
+ { 0x0D79, 0x0D7F },
+ { 0x0D82, 0x0D83 },
+ { 0x0D85, 0x0D96 },
+ { 0x0D9A, 0x0DB1 },
+ { 0x0DB3, 0x0DBB },
+ { 0x0DBD, 0x0DBD },
+ { 0x0DC0, 0x0DC6 },
+ { 0x0DCA, 0x0DCA },
+ { 0x0DCF, 0x0DD4 },
+ { 0x0DD6, 0x0DD6 },
+ { 0x0DD8, 0x0DDF },
+ { 0x0DF2, 0x0DF4 },
+ { 0x0E01, 0x0E3A },
+ { 0x0E3F, 0x0E5B },
+ { 0x0E81, 0x0E82 },
+ { 0x0E84, 0x0E84 },
+ { 0x0E87, 0x0E88 },
+ { 0x0E8A, 0x0E8A },
+ { 0x0E8D, 0x0E8D },
+ { 0x0E94, 0x0E97 },
+ { 0x0E99, 0x0E9F },
+ { 0x0EA1, 0x0EA3 },
+ { 0x0EA5, 0x0EA5 },
+ { 0x0EA7, 0x0EA7 },
+ { 0x0EAA, 0x0EAB },
+ { 0x0EAD, 0x0EB9 },
+ { 0x0EBB, 0x0EBD },
+ { 0x0EC0, 0x0EC4 },
+ { 0x0EC6, 0x0EC6 },
+ { 0x0EC8, 0x0ECD },
+ { 0x0ED0, 0x0ED9 },
+ { 0x0EDC, 0x0EDD },
+ { 0x0F00, 0x0F47 },
+ { 0x0F49, 0x0F6C },
+ { 0x0F71, 0x0F8B },
+ { 0x0F90, 0x0F97 },
+ { 0x0F99, 0x0FBC },
+ { 0x0FBE, 0x0FCC },
+ { 0x0FCE, 0x0FD4 },
+ { 0x1000, 0x1099 },
+ { 0x109E, 0x10C5 },
+ { 0x10D0, 0x10FC },
+ { 0x1100, 0x1159 },
+ { 0x115F, 0x11A2 },
+ { 0x11A8, 0x11F9 },
+ { 0x1200, 0x1248 },
+ { 0x124A, 0x124D },
+ { 0x1250, 0x1256 },
+ { 0x1258, 0x1258 },
+ { 0x125A, 0x125D },
+ { 0x1260, 0x1288 },
+ { 0x128A, 0x128D },
+ { 0x1290, 0x12B0 },
+ { 0x12B2, 0x12B5 },
+ { 0x12B8, 0x12BE },
+ { 0x12C0, 0x12C0 },
+ { 0x12C2, 0x12C5 },
+ { 0x12C8, 0x12D6 },
+ { 0x12D8, 0x1310 },
+ { 0x1312, 0x1315 },
+ { 0x1318, 0x135A },
+ { 0x135F, 0x137C },
+ { 0x1380, 0x1399 },
+ { 0x13A0, 0x13F4 },
+ { 0x1401, 0x1676 },
+ { 0x1681, 0x169C },
+ { 0x16A0, 0x16F0 },
+ { 0x1700, 0x170C },
+ { 0x170E, 0x1714 },
+ { 0x1720, 0x1736 },
+ { 0x1740, 0x1753 },
+ { 0x1760, 0x176C },
+ { 0x176E, 0x1770 },
+ { 0x1772, 0x1773 },
+ { 0x1780, 0x17DD },
+ { 0x17E0, 0x17E9 },
+ { 0x17F0, 0x17F9 },
+ { 0x1800, 0x180D },
+ { 0x1810, 0x1819 },
+ { 0x1820, 0x1877 },
+ { 0x1880, 0x18AA },
+ { 0x1900, 0x191C },
+ { 0x1920, 0x192B },
+ { 0x1930, 0x193B },
+ { 0x1940, 0x1940 },
+ { 0x1944, 0x196D },
+ { 0x1970, 0x1974 },
+ { 0x1980, 0x19A9 },
+ { 0x19B0, 0x19C9 },
+ { 0x19D0, 0x19D9 },
+ { 0x19DE, 0x1A1B },
+ { 0x1A1E, 0x1A1F },
+ { 0x1B00, 0x1B4B },
+ { 0x1B50, 0x1B7C },
+ { 0x1B80, 0x1BAA },
+ { 0x1BAE, 0x1BB9 },
+ { 0x1C00, 0x1C37 },
+ { 0x1C3B, 0x1C49 },
+ { 0x1C4D, 0x1C7F },
+ { 0x1D00, 0x1DE6 },
+ { 0x1DFE, 0x1F15 },
+ { 0x1F18, 0x1F1D },
+ { 0x1F20, 0x1F45 },
+ { 0x1F48, 0x1F4D },
+ { 0x1F50, 0x1F57 },
+ { 0x1F59, 0x1F59 },
+ { 0x1F5B, 0x1F5B },
+ { 0x1F5D, 0x1F5D },
+ { 0x1F5F, 0x1F7D },
+ { 0x1F80, 0x1FB4 },
+ { 0x1FB6, 0x1FC4 },
+ { 0x1FC6, 0x1FD3 },
+ { 0x1FD6, 0x1FDB },
+ { 0x1FDD, 0x1FEF },
+ { 0x1FF2, 0x1FF4 },
+ { 0x1FF6, 0x1FFE },
+ { 0x2007, 0x2007 },
+ { 0x200B, 0x2027 },
+ { 0x202A, 0x205E },
+ { 0x2060, 0x2064 },
+ { 0x206A, 0x2071 },
+ { 0x2074, 0x208E },
+ { 0x2090, 0x2094 },
+ { 0x20A0, 0x20B5 },
+ { 0x20D0, 0x20F0 },
+ { 0x2100, 0x214F },
+ { 0x2153, 0x2188 },
+ { 0x2190, 0x23E7 },
+ { 0x2400, 0x2426 },
+ { 0x2440, 0x244A },
+ { 0x2460, 0x269D },
+ { 0x26A0, 0x26BC },
+ { 0x26C0, 0x26C3 },
+ { 0x2701, 0x2704 },
+ { 0x2706, 0x2709 },
+ { 0x270C, 0x2727 },
+ { 0x2729, 0x274B },
+ { 0x274D, 0x274D },
+ { 0x274F, 0x2752 },
+ { 0x2756, 0x2756 },
+ { 0x2758, 0x275E },
+ { 0x2761, 0x2794 },
+ { 0x2798, 0x27AF },
+ { 0x27B1, 0x27BE },
+ { 0x27C0, 0x27CA },
+ { 0x27CC, 0x27CC },
+ { 0x27D0, 0x2B4C },
+ { 0x2B50, 0x2B54 },
+ { 0x2C00, 0x2C2E },
+ { 0x2C30, 0x2C5E },
+ { 0x2C60, 0x2C6F },
+ { 0x2C71, 0x2C7D },
+ { 0x2C80, 0x2CEA },
+ { 0x2CF9, 0x2D25 },
+ { 0x2D30, 0x2D65 },
+ { 0x2D6F, 0x2D6F },
+ { 0x2D80, 0x2D96 },
+ { 0x2DA0, 0x2DA6 },
+ { 0x2DA8, 0x2DAE },
+ { 0x2DB0, 0x2DB6 },
+ { 0x2DB8, 0x2DBE },
+ { 0x2DC0, 0x2DC6 },
+ { 0x2DC8, 0x2DCE },
+ { 0x2DD0, 0x2DD6 },
+ { 0x2DD8, 0x2DDE },
+ { 0x2DE0, 0x2E30 },
+ { 0x2E80, 0x2E99 },
+ { 0x2E9B, 0x2EF3 },
+ { 0x2F00, 0x2FD5 },
+ { 0x2FF0, 0x2FFB },
+ { 0x3001, 0x303F },
+ { 0x3041, 0x3096 },
+ { 0x3099, 0x30FF },
+ { 0x3105, 0x312D },
+ { 0x3131, 0x318E },
+ { 0x3190, 0x31B7 },
+ { 0x31C0, 0x31E3 },
+ { 0x31F0, 0x321E },
+ { 0x3220, 0x3243 },
+ { 0x3250, 0x32FE },
+ { 0x3300, 0x4DB5 },
+ { 0x4DC0, 0x9FC3 },
+ { 0xA000, 0xA48C },
+ { 0xA490, 0xA4C6 },
+ { 0xA500, 0xA62B },
+ { 0xA640, 0xA65F },
+ { 0xA662, 0xA673 },
+ { 0xA67C, 0xA697 },
+ { 0xA700, 0xA78C },
+ { 0xA7FB, 0xA82B },
+ { 0xA840, 0xA877 },
+ { 0xA880, 0xA8C4 },
+ { 0xA8CE, 0xA8D9 },
+ { 0xA900, 0xA953 },
+ { 0xA95F, 0xA95F },
+ { 0xAA00, 0xAA36 },
+ { 0xAA40, 0xAA4D },
+ { 0xAA50, 0xAA59 },
+ { 0xAA5C, 0xAA5F },
+ { 0xAC00, 0xD7A3 },
+ { 0xE000, 0xFA2D },
+ { 0xFA30, 0xFA6A },
+ { 0xFA70, 0xFAD9 },
+ { 0xFB00, 0xFB06 },
+ { 0xFB13, 0xFB17 },
+ { 0xFB1D, 0xFB36 },
+ { 0xFB38, 0xFB3C },
+ { 0xFB3E, 0xFB3E },
+ { 0xFB40, 0xFB41 },
+ { 0xFB43, 0xFB44 },
+ { 0xFB46, 0xFBB1 },
+ { 0xFBD3, 0xFD3F },
+ { 0xFD50, 0xFD8F },
+ { 0xFD92, 0xFDC7 },
+ { 0xFDF0, 0xFDFD },
+ { 0xFE00, 0xFE19 },
+ { 0xFE20, 0xFE26 },
+ { 0xFE30, 0xFE52 },
+ { 0xFE54, 0xFE66 },
+ { 0xFE68, 0xFE6B },
+ { 0xFE70, 0xFE74 },
+ { 0xFE76, 0xFEFC },
+ { 0xFEFF, 0xFEFF },
+ { 0xFF01, 0xFFBE },
+ { 0xFFC2, 0xFFC7 },
+ { 0xFFCA, 0xFFCF },
+ { 0xFFD2, 0xFFD7 },
+ { 0xFFDA, 0xFFDC },
+ { 0xFFE0, 0xFFE6 },
+ { 0xFFE8, 0xFFEE },
+ { 0xFFF9, 0xFFFD },
+ { 0x10000, 0x1000B },
+ { 0x1000D, 0x10026 },
+ { 0x10028, 0x1003A },
+ { 0x1003C, 0x1003D },
+ { 0x1003F, 0x1004D },
+ { 0x10050, 0x1005D },
+ { 0x10080, 0x100FA },
+ { 0x10100, 0x10102 },
+ { 0x10107, 0x10133 },
+ { 0x10137, 0x1018A },
+ { 0x10190, 0x1019B },
+ { 0x101D0, 0x101FD },
+ { 0x10280, 0x1029C },
+ { 0x102A0, 0x102D0 },
+ { 0x10300, 0x1031E },
+ { 0x10320, 0x10323 },
+ { 0x10330, 0x1034A },
+ { 0x10380, 0x1039D },
+ { 0x1039F, 0x103C3 },
+ { 0x103C8, 0x103D5 },
+ { 0x10400, 0x1049D },
+ { 0x104A0, 0x104A9 },
+ { 0x10800, 0x10805 },
+ { 0x10808, 0x10808 },
+ { 0x1080A, 0x10835 },
+ { 0x10837, 0x10838 },
+ { 0x1083C, 0x1083C },
+ { 0x1083F, 0x1083F },
+ { 0x10900, 0x10919 },
+ { 0x1091F, 0x10939 },
+ { 0x1093F, 0x1093F },
+ { 0x10A00, 0x10A03 },
+ { 0x10A05, 0x10A06 },
+ { 0x10A0C, 0x10A13 },
+ { 0x10A15, 0x10A17 },
+ { 0x10A19, 0x10A33 },
+ { 0x10A38, 0x10A3A },
+ { 0x10A3F, 0x10A47 },
+ { 0x10A50, 0x10A58 },
+ { 0x12000, 0x1236E },
+ { 0x12400, 0x12462 },
+ { 0x12470, 0x12473 },
+ { 0x1D000, 0x1D0F5 },
+ { 0x1D100, 0x1D126 },
+ { 0x1D129, 0x1D1DD },
+ { 0x1D200, 0x1D245 },
+ { 0x1D300, 0x1D356 },
+ { 0x1D360, 0x1D371 },
+ { 0x1D400, 0x1D454 },
+ { 0x1D456, 0x1D49C },
+ { 0x1D49E, 0x1D49F },
+ { 0x1D4A2, 0x1D4A2 },
+ { 0x1D4A5, 0x1D4A6 },
+ { 0x1D4A9, 0x1D4AC },
+ { 0x1D4AE, 0x1D4B9 },
+ { 0x1D4BB, 0x1D4BB },
+ { 0x1D4BD, 0x1D4C3 },
+ { 0x1D4C5, 0x1D505 },
+ { 0x1D507, 0x1D50A },
+ { 0x1D50D, 0x1D514 },
+ { 0x1D516, 0x1D51C },
+ { 0x1D51E, 0x1D539 },
+ { 0x1D53B, 0x1D53E },
+ { 0x1D540, 0x1D544 },
+ { 0x1D546, 0x1D546 },
+ { 0x1D54A, 0x1D550 },
+ { 0x1D552, 0x1D6A5 },
+ { 0x1D6A8, 0x1D7CB },
+ { 0x1D7CE, 0x1D7FF },
+ { 0x1F000, 0x1F02B },
+ { 0x1F030, 0x1F093 },
+ { 0x20000, 0x2A6D6 },
+ { 0x2F800, 0x2FA1D },
+ { 0xE0001, 0xE0001 },
+ { 0xE0020, 0xE007F },
+ { 0xE0100, 0xE01EF },
+ { 0xF0000, 0xFFFFD },
+ { 0x100000, 0x10FFFD }
+
+#define PREDICATE(c) uc_is_graph (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-ctype_lower.c b/tests/unictype/test-ctype_lower.c
new file mode 100644
index 00000000..f7135fa7
--- /dev/null
+++ b/tests/unictype/test-ctype_lower.c
@@ -0,0 +1,592 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0061, 0x007A },
+ { 0x00B5, 0x00B5 },
+ { 0x00DF, 0x00F6 },
+ { 0x00F8, 0x00FF },
+ { 0x0101, 0x0101 },
+ { 0x0103, 0x0103 },
+ { 0x0105, 0x0105 },
+ { 0x0107, 0x0107 },
+ { 0x0109, 0x0109 },
+ { 0x010B, 0x010B },
+ { 0x010D, 0x010D },
+ { 0x010F, 0x010F },
+ { 0x0111, 0x0111 },
+ { 0x0113, 0x0113 },
+ { 0x0115, 0x0115 },
+ { 0x0117, 0x0117 },
+ { 0x0119, 0x0119 },
+ { 0x011B, 0x011B },
+ { 0x011D, 0x011D },
+ { 0x011F, 0x011F },
+ { 0x0121, 0x0121 },
+ { 0x0123, 0x0123 },
+ { 0x0125, 0x0125 },
+ { 0x0127, 0x0127 },
+ { 0x0129, 0x0129 },
+ { 0x012B, 0x012B },
+ { 0x012D, 0x012D },
+ { 0x012F, 0x012F },
+ { 0x0131, 0x0131 },
+ { 0x0133, 0x0133 },
+ { 0x0135, 0x0135 },
+ { 0x0137, 0x0137 },
+ { 0x013A, 0x013A },
+ { 0x013C, 0x013C },
+ { 0x013E, 0x013E },
+ { 0x0140, 0x0140 },
+ { 0x0142, 0x0142 },
+ { 0x0144, 0x0144 },
+ { 0x0146, 0x0146 },
+ { 0x0148, 0x0148 },
+ { 0x014B, 0x014B },
+ { 0x014D, 0x014D },
+ { 0x014F, 0x014F },
+ { 0x0151, 0x0151 },
+ { 0x0153, 0x0153 },
+ { 0x0155, 0x0155 },
+ { 0x0157, 0x0157 },
+ { 0x0159, 0x0159 },
+ { 0x015B, 0x015B },
+ { 0x015D, 0x015D },
+ { 0x015F, 0x015F },
+ { 0x0161, 0x0161 },
+ { 0x0163, 0x0163 },
+ { 0x0165, 0x0165 },
+ { 0x0167, 0x0167 },
+ { 0x0169, 0x0169 },
+ { 0x016B, 0x016B },
+ { 0x016D, 0x016D },
+ { 0x016F, 0x016F },
+ { 0x0171, 0x0171 },
+ { 0x0173, 0x0173 },
+ { 0x0175, 0x0175 },
+ { 0x0177, 0x0177 },
+ { 0x017A, 0x017A },
+ { 0x017C, 0x017C },
+ { 0x017E, 0x0180 },
+ { 0x0183, 0x0183 },
+ { 0x0185, 0x0185 },
+ { 0x0188, 0x0188 },
+ { 0x018C, 0x018C },
+ { 0x0192, 0x0192 },
+ { 0x0195, 0x0195 },
+ { 0x0199, 0x019A },
+ { 0x019E, 0x019E },
+ { 0x01A1, 0x01A1 },
+ { 0x01A3, 0x01A3 },
+ { 0x01A5, 0x01A5 },
+ { 0x01A8, 0x01A8 },
+ { 0x01AD, 0x01AD },
+ { 0x01B0, 0x01B0 },
+ { 0x01B4, 0x01B4 },
+ { 0x01B6, 0x01B6 },
+ { 0x01B9, 0x01B9 },
+ { 0x01BD, 0x01BD },
+ { 0x01BF, 0x01BF },
+ { 0x01C5, 0x01C6 },
+ { 0x01C8, 0x01C9 },
+ { 0x01CB, 0x01CC },
+ { 0x01CE, 0x01CE },
+ { 0x01D0, 0x01D0 },
+ { 0x01D2, 0x01D2 },
+ { 0x01D4, 0x01D4 },
+ { 0x01D6, 0x01D6 },
+ { 0x01D8, 0x01D8 },
+ { 0x01DA, 0x01DA },
+ { 0x01DC, 0x01DD },
+ { 0x01DF, 0x01DF },
+ { 0x01E1, 0x01E1 },
+ { 0x01E3, 0x01E3 },
+ { 0x01E5, 0x01E5 },
+ { 0x01E7, 0x01E7 },
+ { 0x01E9, 0x01E9 },
+ { 0x01EB, 0x01EB },
+ { 0x01ED, 0x01ED },
+ { 0x01EF, 0x01EF },
+ { 0x01F2, 0x01F3 },
+ { 0x01F5, 0x01F5 },
+ { 0x01F9, 0x01F9 },
+ { 0x01FB, 0x01FB },
+ { 0x01FD, 0x01FD },
+ { 0x01FF, 0x01FF },
+ { 0x0201, 0x0201 },
+ { 0x0203, 0x0203 },
+ { 0x0205, 0x0205 },
+ { 0x0207, 0x0207 },
+ { 0x0209, 0x0209 },
+ { 0x020B, 0x020B },
+ { 0x020D, 0x020D },
+ { 0x020F, 0x020F },
+ { 0x0211, 0x0211 },
+ { 0x0213, 0x0213 },
+ { 0x0215, 0x0215 },
+ { 0x0217, 0x0217 },
+ { 0x0219, 0x0219 },
+ { 0x021B, 0x021B },
+ { 0x021D, 0x021D },
+ { 0x021F, 0x021F },
+ { 0x0223, 0x0223 },
+ { 0x0225, 0x0225 },
+ { 0x0227, 0x0227 },
+ { 0x0229, 0x0229 },
+ { 0x022B, 0x022B },
+ { 0x022D, 0x022D },
+ { 0x022F, 0x022F },
+ { 0x0231, 0x0231 },
+ { 0x0233, 0x0233 },
+ { 0x023C, 0x023C },
+ { 0x0242, 0x0242 },
+ { 0x0247, 0x0247 },
+ { 0x0249, 0x0249 },
+ { 0x024B, 0x024B },
+ { 0x024D, 0x024D },
+ { 0x024F, 0x0251 },
+ { 0x0253, 0x0254 },
+ { 0x0256, 0x0257 },
+ { 0x0259, 0x0259 },
+ { 0x025B, 0x025B },
+ { 0x0260, 0x0260 },
+ { 0x0263, 0x0263 },
+ { 0x0268, 0x0269 },
+ { 0x026B, 0x026B },
+ { 0x026F, 0x026F },
+ { 0x0271, 0x0272 },
+ { 0x0275, 0x0275 },
+ { 0x027D, 0x027D },
+ { 0x0280, 0x0280 },
+ { 0x0283, 0x0283 },
+ { 0x0288, 0x028C },
+ { 0x0292, 0x0292 },
+ { 0x0345, 0x0345 },
+ { 0x0371, 0x0371 },
+ { 0x0373, 0x0373 },
+ { 0x0377, 0x0377 },
+ { 0x037B, 0x037D },
+ { 0x03AC, 0x03AF },
+ { 0x03B1, 0x03CE },
+ { 0x03D0, 0x03D1 },
+ { 0x03D5, 0x03D7 },
+ { 0x03D9, 0x03D9 },
+ { 0x03DB, 0x03DB },
+ { 0x03DD, 0x03DD },
+ { 0x03DF, 0x03DF },
+ { 0x03E1, 0x03E1 },
+ { 0x03E3, 0x03E3 },
+ { 0x03E5, 0x03E5 },
+ { 0x03E7, 0x03E7 },
+ { 0x03E9, 0x03E9 },
+ { 0x03EB, 0x03EB },
+ { 0x03ED, 0x03ED },
+ { 0x03EF, 0x03F2 },
+ { 0x03F5, 0x03F5 },
+ { 0x03F8, 0x03F8 },
+ { 0x03FB, 0x03FB },
+ { 0x0430, 0x045F },
+ { 0x0461, 0x0461 },
+ { 0x0463, 0x0463 },
+ { 0x0465, 0x0465 },
+ { 0x0467, 0x0467 },
+ { 0x0469, 0x0469 },
+ { 0x046B, 0x046B },
+ { 0x046D, 0x046D },
+ { 0x046F, 0x046F },
+ { 0x0471, 0x0471 },
+ { 0x0473, 0x0473 },
+ { 0x0475, 0x0475 },
+ { 0x0477, 0x0477 },
+ { 0x0479, 0x0479 },
+ { 0x047B, 0x047B },
+ { 0x047D, 0x047D },
+ { 0x047F, 0x047F },
+ { 0x0481, 0x0481 },
+ { 0x048B, 0x048B },
+ { 0x048D, 0x048D },
+ { 0x048F, 0x048F },
+ { 0x0491, 0x0491 },
+ { 0x0493, 0x0493 },
+ { 0x0495, 0x0495 },
+ { 0x0497, 0x0497 },
+ { 0x0499, 0x0499 },
+ { 0x049B, 0x049B },
+ { 0x049D, 0x049D },
+ { 0x049F, 0x049F },
+ { 0x04A1, 0x04A1 },
+ { 0x04A3, 0x04A3 },
+ { 0x04A5, 0x04A5 },
+ { 0x04A7, 0x04A7 },
+ { 0x04A9, 0x04A9 },
+ { 0x04AB, 0x04AB },
+ { 0x04AD, 0x04AD },
+ { 0x04AF, 0x04AF },
+ { 0x04B1, 0x04B1 },
+ { 0x04B3, 0x04B3 },
+ { 0x04B5, 0x04B5 },
+ { 0x04B7, 0x04B7 },
+ { 0x04B9, 0x04B9 },
+ { 0x04BB, 0x04BB },
+ { 0x04BD, 0x04BD },
+ { 0x04BF, 0x04BF },
+ { 0x04C2, 0x04C2 },
+ { 0x04C4, 0x04C4 },
+ { 0x04C6, 0x04C6 },
+ { 0x04C8, 0x04C8 },
+ { 0x04CA, 0x04CA },
+ { 0x04CC, 0x04CC },
+ { 0x04CE, 0x04CF },
+ { 0x04D1, 0x04D1 },
+ { 0x04D3, 0x04D3 },
+ { 0x04D5, 0x04D5 },
+ { 0x04D7, 0x04D7 },
+ { 0x04D9, 0x04D9 },
+ { 0x04DB, 0x04DB },
+ { 0x04DD, 0x04DD },
+ { 0x04DF, 0x04DF },
+ { 0x04E1, 0x04E1 },
+ { 0x04E3, 0x04E3 },
+ { 0x04E5, 0x04E5 },
+ { 0x04E7, 0x04E7 },
+ { 0x04E9, 0x04E9 },
+ { 0x04EB, 0x04EB },
+ { 0x04ED, 0x04ED },
+ { 0x04EF, 0x04EF },
+ { 0x04F1, 0x04F1 },
+ { 0x04F3, 0x04F3 },
+ { 0x04F5, 0x04F5 },
+ { 0x04F7, 0x04F7 },
+ { 0x04F9, 0x04F9 },
+ { 0x04FB, 0x04FB },
+ { 0x04FD, 0x04FD },
+ { 0x04FF, 0x04FF },
+ { 0x0501, 0x0501 },
+ { 0x0503, 0x0503 },
+ { 0x0505, 0x0505 },
+ { 0x0507, 0x0507 },
+ { 0x0509, 0x0509 },
+ { 0x050B, 0x050B },
+ { 0x050D, 0x050D },
+ { 0x050F, 0x050F },
+ { 0x0511, 0x0511 },
+ { 0x0513, 0x0513 },
+ { 0x0515, 0x0515 },
+ { 0x0517, 0x0517 },
+ { 0x0519, 0x0519 },
+ { 0x051B, 0x051B },
+ { 0x051D, 0x051D },
+ { 0x051F, 0x051F },
+ { 0x0521, 0x0521 },
+ { 0x0523, 0x0523 },
+ { 0x0561, 0x0586 },
+ { 0x1D79, 0x1D79 },
+ { 0x1D7D, 0x1D7D },
+ { 0x1E01, 0x1E01 },
+ { 0x1E03, 0x1E03 },
+ { 0x1E05, 0x1E05 },
+ { 0x1E07, 0x1E07 },
+ { 0x1E09, 0x1E09 },
+ { 0x1E0B, 0x1E0B },
+ { 0x1E0D, 0x1E0D },
+ { 0x1E0F, 0x1E0F },
+ { 0x1E11, 0x1E11 },
+ { 0x1E13, 0x1E13 },
+ { 0x1E15, 0x1E15 },
+ { 0x1E17, 0x1E17 },
+ { 0x1E19, 0x1E19 },
+ { 0x1E1B, 0x1E1B },
+ { 0x1E1D, 0x1E1D },
+ { 0x1E1F, 0x1E1F },
+ { 0x1E21, 0x1E21 },
+ { 0x1E23, 0x1E23 },
+ { 0x1E25, 0x1E25 },
+ { 0x1E27, 0x1E27 },
+ { 0x1E29, 0x1E29 },
+ { 0x1E2B, 0x1E2B },
+ { 0x1E2D, 0x1E2D },
+ { 0x1E2F, 0x1E2F },
+ { 0x1E31, 0x1E31 },
+ { 0x1E33, 0x1E33 },
+ { 0x1E35, 0x1E35 },
+ { 0x1E37, 0x1E37 },
+ { 0x1E39, 0x1E39 },
+ { 0x1E3B, 0x1E3B },
+ { 0x1E3D, 0x1E3D },
+ { 0x1E3F, 0x1E3F },
+ { 0x1E41, 0x1E41 },
+ { 0x1E43, 0x1E43 },
+ { 0x1E45, 0x1E45 },
+ { 0x1E47, 0x1E47 },
+ { 0x1E49, 0x1E49 },
+ { 0x1E4B, 0x1E4B },
+ { 0x1E4D, 0x1E4D },
+ { 0x1E4F, 0x1E4F },
+ { 0x1E51, 0x1E51 },
+ { 0x1E53, 0x1E53 },
+ { 0x1E55, 0x1E55 },
+ { 0x1E57, 0x1E57 },
+ { 0x1E59, 0x1E59 },
+ { 0x1E5B, 0x1E5B },
+ { 0x1E5D, 0x1E5D },
+ { 0x1E5F, 0x1E5F },
+ { 0x1E61, 0x1E61 },
+ { 0x1E63, 0x1E63 },
+ { 0x1E65, 0x1E65 },
+ { 0x1E67, 0x1E67 },
+ { 0x1E69, 0x1E69 },
+ { 0x1E6B, 0x1E6B },
+ { 0x1E6D, 0x1E6D },
+ { 0x1E6F, 0x1E6F },
+ { 0x1E71, 0x1E71 },
+ { 0x1E73, 0x1E73 },
+ { 0x1E75, 0x1E75 },
+ { 0x1E77, 0x1E77 },
+ { 0x1E79, 0x1E79 },
+ { 0x1E7B, 0x1E7B },
+ { 0x1E7D, 0x1E7D },
+ { 0x1E7F, 0x1E7F },
+ { 0x1E81, 0x1E81 },
+ { 0x1E83, 0x1E83 },
+ { 0x1E85, 0x1E85 },
+ { 0x1E87, 0x1E87 },
+ { 0x1E89, 0x1E89 },
+ { 0x1E8B, 0x1E8B },
+ { 0x1E8D, 0x1E8D },
+ { 0x1E8F, 0x1E8F },
+ { 0x1E91, 0x1E91 },
+ { 0x1E93, 0x1E93 },
+ { 0x1E95, 0x1E95 },
+ { 0x1E9B, 0x1E9B },
+ { 0x1EA1, 0x1EA1 },
+ { 0x1EA3, 0x1EA3 },
+ { 0x1EA5, 0x1EA5 },
+ { 0x1EA7, 0x1EA7 },
+ { 0x1EA9, 0x1EA9 },
+ { 0x1EAB, 0x1EAB },
+ { 0x1EAD, 0x1EAD },
+ { 0x1EAF, 0x1EAF },
+ { 0x1EB1, 0x1EB1 },
+ { 0x1EB3, 0x1EB3 },
+ { 0x1EB5, 0x1EB5 },
+ { 0x1EB7, 0x1EB7 },
+ { 0x1EB9, 0x1EB9 },
+ { 0x1EBB, 0x1EBB },
+ { 0x1EBD, 0x1EBD },
+ { 0x1EBF, 0x1EBF },
+ { 0x1EC1, 0x1EC1 },
+ { 0x1EC3, 0x1EC3 },
+ { 0x1EC5, 0x1EC5 },
+ { 0x1EC7, 0x1EC7 },
+ { 0x1EC9, 0x1EC9 },
+ { 0x1ECB, 0x1ECB },
+ { 0x1ECD, 0x1ECD },
+ { 0x1ECF, 0x1ECF },
+ { 0x1ED1, 0x1ED1 },
+ { 0x1ED3, 0x1ED3 },
+ { 0x1ED5, 0x1ED5 },
+ { 0x1ED7, 0x1ED7 },
+ { 0x1ED9, 0x1ED9 },
+ { 0x1EDB, 0x1EDB },
+ { 0x1EDD, 0x1EDD },
+ { 0x1EDF, 0x1EDF },
+ { 0x1EE1, 0x1EE1 },
+ { 0x1EE3, 0x1EE3 },
+ { 0x1EE5, 0x1EE5 },
+ { 0x1EE7, 0x1EE7 },
+ { 0x1EE9, 0x1EE9 },
+ { 0x1EEB, 0x1EEB },
+ { 0x1EED, 0x1EED },
+ { 0x1EEF, 0x1EEF },
+ { 0x1EF1, 0x1EF1 },
+ { 0x1EF3, 0x1EF3 },
+ { 0x1EF5, 0x1EF5 },
+ { 0x1EF7, 0x1EF7 },
+ { 0x1EF9, 0x1EF9 },
+ { 0x1EFB, 0x1EFB },
+ { 0x1EFD, 0x1EFD },
+ { 0x1EFF, 0x1F07 },
+ { 0x1F10, 0x1F15 },
+ { 0x1F20, 0x1F27 },
+ { 0x1F30, 0x1F37 },
+ { 0x1F40, 0x1F45 },
+ { 0x1F51, 0x1F51 },
+ { 0x1F53, 0x1F53 },
+ { 0x1F55, 0x1F55 },
+ { 0x1F57, 0x1F57 },
+ { 0x1F60, 0x1F67 },
+ { 0x1F70, 0x1F7D },
+ { 0x1F80, 0x1F87 },
+ { 0x1F90, 0x1F97 },
+ { 0x1FA0, 0x1FA7 },
+ { 0x1FB0, 0x1FB1 },
+ { 0x1FB3, 0x1FB3 },
+ { 0x1FBE, 0x1FBE },
+ { 0x1FC3, 0x1FC3 },
+ { 0x1FD0, 0x1FD1 },
+ { 0x1FE0, 0x1FE1 },
+ { 0x1FE5, 0x1FE5 },
+ { 0x1FF3, 0x1FF3 },
+ { 0x214E, 0x214E },
+ { 0x2170, 0x217F },
+ { 0x2184, 0x2184 },
+ { 0x24D0, 0x24E9 },
+ { 0x2C30, 0x2C5E },
+ { 0x2C61, 0x2C61 },
+ { 0x2C65, 0x2C66 },
+ { 0x2C68, 0x2C68 },
+ { 0x2C6A, 0x2C6A },
+ { 0x2C6C, 0x2C6C },
+ { 0x2C73, 0x2C73 },
+ { 0x2C76, 0x2C76 },
+ { 0x2C81, 0x2C81 },
+ { 0x2C83, 0x2C83 },
+ { 0x2C85, 0x2C85 },
+ { 0x2C87, 0x2C87 },
+ { 0x2C89, 0x2C89 },
+ { 0x2C8B, 0x2C8B },
+ { 0x2C8D, 0x2C8D },
+ { 0x2C8F, 0x2C8F },
+ { 0x2C91, 0x2C91 },
+ { 0x2C93, 0x2C93 },
+ { 0x2C95, 0x2C95 },
+ { 0x2C97, 0x2C97 },
+ { 0x2C99, 0x2C99 },
+ { 0x2C9B, 0x2C9B },
+ { 0x2C9D, 0x2C9D },
+ { 0x2C9F, 0x2C9F },
+ { 0x2CA1, 0x2CA1 },
+ { 0x2CA3, 0x2CA3 },
+ { 0x2CA5, 0x2CA5 },
+ { 0x2CA7, 0x2CA7 },
+ { 0x2CA9, 0x2CA9 },
+ { 0x2CAB, 0x2CAB },
+ { 0x2CAD, 0x2CAD },
+ { 0x2CAF, 0x2CAF },
+ { 0x2CB1, 0x2CB1 },
+ { 0x2CB3, 0x2CB3 },
+ { 0x2CB5, 0x2CB5 },
+ { 0x2CB7, 0x2CB7 },
+ { 0x2CB9, 0x2CB9 },
+ { 0x2CBB, 0x2CBB },
+ { 0x2CBD, 0x2CBD },
+ { 0x2CBF, 0x2CBF },
+ { 0x2CC1, 0x2CC1 },
+ { 0x2CC3, 0x2CC3 },
+ { 0x2CC5, 0x2CC5 },
+ { 0x2CC7, 0x2CC7 },
+ { 0x2CC9, 0x2CC9 },
+ { 0x2CCB, 0x2CCB },
+ { 0x2CCD, 0x2CCD },
+ { 0x2CCF, 0x2CCF },
+ { 0x2CD1, 0x2CD1 },
+ { 0x2CD3, 0x2CD3 },
+ { 0x2CD5, 0x2CD5 },
+ { 0x2CD7, 0x2CD7 },
+ { 0x2CD9, 0x2CD9 },
+ { 0x2CDB, 0x2CDB },
+ { 0x2CDD, 0x2CDD },
+ { 0x2CDF, 0x2CDF },
+ { 0x2CE1, 0x2CE1 },
+ { 0x2CE3, 0x2CE3 },
+ { 0x2D00, 0x2D25 },
+ { 0xA641, 0xA641 },
+ { 0xA643, 0xA643 },
+ { 0xA645, 0xA645 },
+ { 0xA647, 0xA647 },
+ { 0xA649, 0xA649 },
+ { 0xA64B, 0xA64B },
+ { 0xA64D, 0xA64D },
+ { 0xA64F, 0xA64F },
+ { 0xA651, 0xA651 },
+ { 0xA653, 0xA653 },
+ { 0xA655, 0xA655 },
+ { 0xA657, 0xA657 },
+ { 0xA659, 0xA659 },
+ { 0xA65B, 0xA65B },
+ { 0xA65D, 0xA65D },
+ { 0xA65F, 0xA65F },
+ { 0xA663, 0xA663 },
+ { 0xA665, 0xA665 },
+ { 0xA667, 0xA667 },
+ { 0xA669, 0xA669 },
+ { 0xA66B, 0xA66B },
+ { 0xA66D, 0xA66D },
+ { 0xA681, 0xA681 },
+ { 0xA683, 0xA683 },
+ { 0xA685, 0xA685 },
+ { 0xA687, 0xA687 },
+ { 0xA689, 0xA689 },
+ { 0xA68B, 0xA68B },
+ { 0xA68D, 0xA68D },
+ { 0xA68F, 0xA68F },
+ { 0xA691, 0xA691 },
+ { 0xA693, 0xA693 },
+ { 0xA695, 0xA695 },
+ { 0xA697, 0xA697 },
+ { 0xA723, 0xA723 },
+ { 0xA725, 0xA725 },
+ { 0xA727, 0xA727 },
+ { 0xA729, 0xA729 },
+ { 0xA72B, 0xA72B },
+ { 0xA72D, 0xA72D },
+ { 0xA72F, 0xA72F },
+ { 0xA733, 0xA733 },
+ { 0xA735, 0xA735 },
+ { 0xA737, 0xA737 },
+ { 0xA739, 0xA739 },
+ { 0xA73B, 0xA73B },
+ { 0xA73D, 0xA73D },
+ { 0xA73F, 0xA73F },
+ { 0xA741, 0xA741 },
+ { 0xA743, 0xA743 },
+ { 0xA745, 0xA745 },
+ { 0xA747, 0xA747 },
+ { 0xA749, 0xA749 },
+ { 0xA74B, 0xA74B },
+ { 0xA74D, 0xA74D },
+ { 0xA74F, 0xA74F },
+ { 0xA751, 0xA751 },
+ { 0xA753, 0xA753 },
+ { 0xA755, 0xA755 },
+ { 0xA757, 0xA757 },
+ { 0xA759, 0xA759 },
+ { 0xA75B, 0xA75B },
+ { 0xA75D, 0xA75D },
+ { 0xA75F, 0xA75F },
+ { 0xA761, 0xA761 },
+ { 0xA763, 0xA763 },
+ { 0xA765, 0xA765 },
+ { 0xA767, 0xA767 },
+ { 0xA769, 0xA769 },
+ { 0xA76B, 0xA76B },
+ { 0xA76D, 0xA76D },
+ { 0xA76F, 0xA76F },
+ { 0xA77A, 0xA77A },
+ { 0xA77C, 0xA77C },
+ { 0xA77F, 0xA77F },
+ { 0xA781, 0xA781 },
+ { 0xA783, 0xA783 },
+ { 0xA785, 0xA785 },
+ { 0xA787, 0xA787 },
+ { 0xA78C, 0xA78C },
+ { 0xFF41, 0xFF5A },
+ { 0x10428, 0x1044F }
+
+#define PREDICATE(c) uc_is_lower (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-ctype_print.c b/tests/unictype/test-ctype_print.c
new file mode 100644
index 00000000..7333d75e
--- /dev/null
+++ b/tests/unictype/test-ctype_print.c
@@ -0,0 +1,469 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0020, 0x007E },
+ { 0x00A0, 0x0377 },
+ { 0x037A, 0x037E },
+ { 0x0384, 0x038A },
+ { 0x038C, 0x038C },
+ { 0x038E, 0x03A1 },
+ { 0x03A3, 0x0523 },
+ { 0x0531, 0x0556 },
+ { 0x0559, 0x055F },
+ { 0x0561, 0x0587 },
+ { 0x0589, 0x058A },
+ { 0x0591, 0x05C7 },
+ { 0x05D0, 0x05EA },
+ { 0x05F0, 0x05F4 },
+ { 0x0600, 0x0603 },
+ { 0x0606, 0x061B },
+ { 0x061E, 0x061F },
+ { 0x0621, 0x065E },
+ { 0x0660, 0x070D },
+ { 0x070F, 0x074A },
+ { 0x074D, 0x07B1 },
+ { 0x07C0, 0x07FA },
+ { 0x0901, 0x0939 },
+ { 0x093C, 0x094D },
+ { 0x0950, 0x0954 },
+ { 0x0958, 0x0972 },
+ { 0x097B, 0x097F },
+ { 0x0981, 0x0983 },
+ { 0x0985, 0x098C },
+ { 0x098F, 0x0990 },
+ { 0x0993, 0x09A8 },
+ { 0x09AA, 0x09B0 },
+ { 0x09B2, 0x09B2 },
+ { 0x09B6, 0x09B9 },
+ { 0x09BC, 0x09C4 },
+ { 0x09C7, 0x09C8 },
+ { 0x09CB, 0x09CE },
+ { 0x09D7, 0x09D7 },
+ { 0x09DC, 0x09DD },
+ { 0x09DF, 0x09E3 },
+ { 0x09E6, 0x09FA },
+ { 0x0A01, 0x0A03 },
+ { 0x0A05, 0x0A0A },
+ { 0x0A0F, 0x0A10 },
+ { 0x0A13, 0x0A28 },
+ { 0x0A2A, 0x0A30 },
+ { 0x0A32, 0x0A33 },
+ { 0x0A35, 0x0A36 },
+ { 0x0A38, 0x0A39 },
+ { 0x0A3C, 0x0A3C },
+ { 0x0A3E, 0x0A42 },
+ { 0x0A47, 0x0A48 },
+ { 0x0A4B, 0x0A4D },
+ { 0x0A51, 0x0A51 },
+ { 0x0A59, 0x0A5C },
+ { 0x0A5E, 0x0A5E },
+ { 0x0A66, 0x0A75 },
+ { 0x0A81, 0x0A83 },
+ { 0x0A85, 0x0A8D },
+ { 0x0A8F, 0x0A91 },
+ { 0x0A93, 0x0AA8 },
+ { 0x0AAA, 0x0AB0 },
+ { 0x0AB2, 0x0AB3 },
+ { 0x0AB5, 0x0AB9 },
+ { 0x0ABC, 0x0AC5 },
+ { 0x0AC7, 0x0AC9 },
+ { 0x0ACB, 0x0ACD },
+ { 0x0AD0, 0x0AD0 },
+ { 0x0AE0, 0x0AE3 },
+ { 0x0AE6, 0x0AEF },
+ { 0x0AF1, 0x0AF1 },
+ { 0x0B01, 0x0B03 },
+ { 0x0B05, 0x0B0C },
+ { 0x0B0F, 0x0B10 },
+ { 0x0B13, 0x0B28 },
+ { 0x0B2A, 0x0B30 },
+ { 0x0B32, 0x0B33 },
+ { 0x0B35, 0x0B39 },
+ { 0x0B3C, 0x0B44 },
+ { 0x0B47, 0x0B48 },
+ { 0x0B4B, 0x0B4D },
+ { 0x0B56, 0x0B57 },
+ { 0x0B5C, 0x0B5D },
+ { 0x0B5F, 0x0B63 },
+ { 0x0B66, 0x0B71 },
+ { 0x0B82, 0x0B83 },
+ { 0x0B85, 0x0B8A },
+ { 0x0B8E, 0x0B90 },
+ { 0x0B92, 0x0B95 },
+ { 0x0B99, 0x0B9A },
+ { 0x0B9C, 0x0B9C },
+ { 0x0B9E, 0x0B9F },
+ { 0x0BA3, 0x0BA4 },
+ { 0x0BA8, 0x0BAA },
+ { 0x0BAE, 0x0BB9 },
+ { 0x0BBE, 0x0BC2 },
+ { 0x0BC6, 0x0BC8 },
+ { 0x0BCA, 0x0BCD },
+ { 0x0BD0, 0x0BD0 },
+ { 0x0BD7, 0x0BD7 },
+ { 0x0BE6, 0x0BFA },
+ { 0x0C01, 0x0C03 },
+ { 0x0C05, 0x0C0C },
+ { 0x0C0E, 0x0C10 },
+ { 0x0C12, 0x0C28 },
+ { 0x0C2A, 0x0C33 },
+ { 0x0C35, 0x0C39 },
+ { 0x0C3D, 0x0C44 },
+ { 0x0C46, 0x0C48 },
+ { 0x0C4A, 0x0C4D },
+ { 0x0C55, 0x0C56 },
+ { 0x0C58, 0x0C59 },
+ { 0x0C60, 0x0C63 },
+ { 0x0C66, 0x0C6F },
+ { 0x0C78, 0x0C7F },
+ { 0x0C82, 0x0C83 },
+ { 0x0C85, 0x0C8C },
+ { 0x0C8E, 0x0C90 },
+ { 0x0C92, 0x0CA8 },
+ { 0x0CAA, 0x0CB3 },
+ { 0x0CB5, 0x0CB9 },
+ { 0x0CBC, 0x0CC4 },
+ { 0x0CC6, 0x0CC8 },
+ { 0x0CCA, 0x0CCD },
+ { 0x0CD5, 0x0CD6 },
+ { 0x0CDE, 0x0CDE },
+ { 0x0CE0, 0x0CE3 },
+ { 0x0CE6, 0x0CEF },
+ { 0x0CF1, 0x0CF2 },
+ { 0x0D02, 0x0D03 },
+ { 0x0D05, 0x0D0C },
+ { 0x0D0E, 0x0D10 },
+ { 0x0D12, 0x0D28 },
+ { 0x0D2A, 0x0D39 },
+ { 0x0D3D, 0x0D44 },
+ { 0x0D46, 0x0D48 },
+ { 0x0D4A, 0x0D4D },
+ { 0x0D57, 0x0D57 },
+ { 0x0D60, 0x0D63 },
+ { 0x0D66, 0x0D75 },
+ { 0x0D79, 0x0D7F },
+ { 0x0D82, 0x0D83 },
+ { 0x0D85, 0x0D96 },
+ { 0x0D9A, 0x0DB1 },
+ { 0x0DB3, 0x0DBB },
+ { 0x0DBD, 0x0DBD },
+ { 0x0DC0, 0x0DC6 },
+ { 0x0DCA, 0x0DCA },
+ { 0x0DCF, 0x0DD4 },
+ { 0x0DD6, 0x0DD6 },
+ { 0x0DD8, 0x0DDF },
+ { 0x0DF2, 0x0DF4 },
+ { 0x0E01, 0x0E3A },
+ { 0x0E3F, 0x0E5B },
+ { 0x0E81, 0x0E82 },
+ { 0x0E84, 0x0E84 },
+ { 0x0E87, 0x0E88 },
+ { 0x0E8A, 0x0E8A },
+ { 0x0E8D, 0x0E8D },
+ { 0x0E94, 0x0E97 },
+ { 0x0E99, 0x0E9F },
+ { 0x0EA1, 0x0EA3 },
+ { 0x0EA5, 0x0EA5 },
+ { 0x0EA7, 0x0EA7 },
+ { 0x0EAA, 0x0EAB },
+ { 0x0EAD, 0x0EB9 },
+ { 0x0EBB, 0x0EBD },
+ { 0x0EC0, 0x0EC4 },
+ { 0x0EC6, 0x0EC6 },
+ { 0x0EC8, 0x0ECD },
+ { 0x0ED0, 0x0ED9 },
+ { 0x0EDC, 0x0EDD },
+ { 0x0F00, 0x0F47 },
+ { 0x0F49, 0x0F6C },
+ { 0x0F71, 0x0F8B },
+ { 0x0F90, 0x0F97 },
+ { 0x0F99, 0x0FBC },
+ { 0x0FBE, 0x0FCC },
+ { 0x0FCE, 0x0FD4 },
+ { 0x1000, 0x1099 },
+ { 0x109E, 0x10C5 },
+ { 0x10D0, 0x10FC },
+ { 0x1100, 0x1159 },
+ { 0x115F, 0x11A2 },
+ { 0x11A8, 0x11F9 },
+ { 0x1200, 0x1248 },
+ { 0x124A, 0x124D },
+ { 0x1250, 0x1256 },
+ { 0x1258, 0x1258 },
+ { 0x125A, 0x125D },
+ { 0x1260, 0x1288 },
+ { 0x128A, 0x128D },
+ { 0x1290, 0x12B0 },
+ { 0x12B2, 0x12B5 },
+ { 0x12B8, 0x12BE },
+ { 0x12C0, 0x12C0 },
+ { 0x12C2, 0x12C5 },
+ { 0x12C8, 0x12D6 },
+ { 0x12D8, 0x1310 },
+ { 0x1312, 0x1315 },
+ { 0x1318, 0x135A },
+ { 0x135F, 0x137C },
+ { 0x1380, 0x1399 },
+ { 0x13A0, 0x13F4 },
+ { 0x1401, 0x1676 },
+ { 0x1680, 0x169C },
+ { 0x16A0, 0x16F0 },
+ { 0x1700, 0x170C },
+ { 0x170E, 0x1714 },
+ { 0x1720, 0x1736 },
+ { 0x1740, 0x1753 },
+ { 0x1760, 0x176C },
+ { 0x176E, 0x1770 },
+ { 0x1772, 0x1773 },
+ { 0x1780, 0x17DD },
+ { 0x17E0, 0x17E9 },
+ { 0x17F0, 0x17F9 },
+ { 0x1800, 0x180E },
+ { 0x1810, 0x1819 },
+ { 0x1820, 0x1877 },
+ { 0x1880, 0x18AA },
+ { 0x1900, 0x191C },
+ { 0x1920, 0x192B },
+ { 0x1930, 0x193B },
+ { 0x1940, 0x1940 },
+ { 0x1944, 0x196D },
+ { 0x1970, 0x1974 },
+ { 0x1980, 0x19A9 },
+ { 0x19B0, 0x19C9 },
+ { 0x19D0, 0x19D9 },
+ { 0x19DE, 0x1A1B },
+ { 0x1A1E, 0x1A1F },
+ { 0x1B00, 0x1B4B },
+ { 0x1B50, 0x1B7C },
+ { 0x1B80, 0x1BAA },
+ { 0x1BAE, 0x1BB9 },
+ { 0x1C00, 0x1C37 },
+ { 0x1C3B, 0x1C49 },
+ { 0x1C4D, 0x1C7F },
+ { 0x1D00, 0x1DE6 },
+ { 0x1DFE, 0x1F15 },
+ { 0x1F18, 0x1F1D },
+ { 0x1F20, 0x1F45 },
+ { 0x1F48, 0x1F4D },
+ { 0x1F50, 0x1F57 },
+ { 0x1F59, 0x1F59 },
+ { 0x1F5B, 0x1F5B },
+ { 0x1F5D, 0x1F5D },
+ { 0x1F5F, 0x1F7D },
+ { 0x1F80, 0x1FB4 },
+ { 0x1FB6, 0x1FC4 },
+ { 0x1FC6, 0x1FD3 },
+ { 0x1FD6, 0x1FDB },
+ { 0x1FDD, 0x1FEF },
+ { 0x1FF2, 0x1FF4 },
+ { 0x1FF6, 0x1FFE },
+ { 0x2000, 0x2027 },
+ { 0x202A, 0x2064 },
+ { 0x206A, 0x2071 },
+ { 0x2074, 0x208E },
+ { 0x2090, 0x2094 },
+ { 0x20A0, 0x20B5 },
+ { 0x20D0, 0x20F0 },
+ { 0x2100, 0x214F },
+ { 0x2153, 0x2188 },
+ { 0x2190, 0x23E7 },
+ { 0x2400, 0x2426 },
+ { 0x2440, 0x244A },
+ { 0x2460, 0x269D },
+ { 0x26A0, 0x26BC },
+ { 0x26C0, 0x26C3 },
+ { 0x2701, 0x2704 },
+ { 0x2706, 0x2709 },
+ { 0x270C, 0x2727 },
+ { 0x2729, 0x274B },
+ { 0x274D, 0x274D },
+ { 0x274F, 0x2752 },
+ { 0x2756, 0x2756 },
+ { 0x2758, 0x275E },
+ { 0x2761, 0x2794 },
+ { 0x2798, 0x27AF },
+ { 0x27B1, 0x27BE },
+ { 0x27C0, 0x27CA },
+ { 0x27CC, 0x27CC },
+ { 0x27D0, 0x2B4C },
+ { 0x2B50, 0x2B54 },
+ { 0x2C00, 0x2C2E },
+ { 0x2C30, 0x2C5E },
+ { 0x2C60, 0x2C6F },
+ { 0x2C71, 0x2C7D },
+ { 0x2C80, 0x2CEA },
+ { 0x2CF9, 0x2D25 },
+ { 0x2D30, 0x2D65 },
+ { 0x2D6F, 0x2D6F },
+ { 0x2D80, 0x2D96 },
+ { 0x2DA0, 0x2DA6 },
+ { 0x2DA8, 0x2DAE },
+ { 0x2DB0, 0x2DB6 },
+ { 0x2DB8, 0x2DBE },
+ { 0x2DC0, 0x2DC6 },
+ { 0x2DC8, 0x2DCE },
+ { 0x2DD0, 0x2DD6 },
+ { 0x2DD8, 0x2DDE },
+ { 0x2DE0, 0x2E30 },
+ { 0x2E80, 0x2E99 },
+ { 0x2E9B, 0x2EF3 },
+ { 0x2F00, 0x2FD5 },
+ { 0x2FF0, 0x2FFB },
+ { 0x3000, 0x303F },
+ { 0x3041, 0x3096 },
+ { 0x3099, 0x30FF },
+ { 0x3105, 0x312D },
+ { 0x3131, 0x318E },
+ { 0x3190, 0x31B7 },
+ { 0x31C0, 0x31E3 },
+ { 0x31F0, 0x321E },
+ { 0x3220, 0x3243 },
+ { 0x3250, 0x32FE },
+ { 0x3300, 0x4DB5 },
+ { 0x4DC0, 0x9FC3 },
+ { 0xA000, 0xA48C },
+ { 0xA490, 0xA4C6 },
+ { 0xA500, 0xA62B },
+ { 0xA640, 0xA65F },
+ { 0xA662, 0xA673 },
+ { 0xA67C, 0xA697 },
+ { 0xA700, 0xA78C },
+ { 0xA7FB, 0xA82B },
+ { 0xA840, 0xA877 },
+ { 0xA880, 0xA8C4 },
+ { 0xA8CE, 0xA8D9 },
+ { 0xA900, 0xA953 },
+ { 0xA95F, 0xA95F },
+ { 0xAA00, 0xAA36 },
+ { 0xAA40, 0xAA4D },
+ { 0xAA50, 0xAA59 },
+ { 0xAA5C, 0xAA5F },
+ { 0xAC00, 0xD7A3 },
+ { 0xE000, 0xFA2D },
+ { 0xFA30, 0xFA6A },
+ { 0xFA70, 0xFAD9 },
+ { 0xFB00, 0xFB06 },
+ { 0xFB13, 0xFB17 },
+ { 0xFB1D, 0xFB36 },
+ { 0xFB38, 0xFB3C },
+ { 0xFB3E, 0xFB3E },
+ { 0xFB40, 0xFB41 },
+ { 0xFB43, 0xFB44 },
+ { 0xFB46, 0xFBB1 },
+ { 0xFBD3, 0xFD3F },
+ { 0xFD50, 0xFD8F },
+ { 0xFD92, 0xFDC7 },
+ { 0xFDF0, 0xFDFD },
+ { 0xFE00, 0xFE19 },
+ { 0xFE20, 0xFE26 },
+ { 0xFE30, 0xFE52 },
+ { 0xFE54, 0xFE66 },
+ { 0xFE68, 0xFE6B },
+ { 0xFE70, 0xFE74 },
+ { 0xFE76, 0xFEFC },
+ { 0xFEFF, 0xFEFF },
+ { 0xFF01, 0xFFBE },
+ { 0xFFC2, 0xFFC7 },
+ { 0xFFCA, 0xFFCF },
+ { 0xFFD2, 0xFFD7 },
+ { 0xFFDA, 0xFFDC },
+ { 0xFFE0, 0xFFE6 },
+ { 0xFFE8, 0xFFEE },
+ { 0xFFF9, 0xFFFD },
+ { 0x10000, 0x1000B },
+ { 0x1000D, 0x10026 },
+ { 0x10028, 0x1003A },
+ { 0x1003C, 0x1003D },
+ { 0x1003F, 0x1004D },
+ { 0x10050, 0x1005D },
+ { 0x10080, 0x100FA },
+ { 0x10100, 0x10102 },
+ { 0x10107, 0x10133 },
+ { 0x10137, 0x1018A },
+ { 0x10190, 0x1019B },
+ { 0x101D0, 0x101FD },
+ { 0x10280, 0x1029C },
+ { 0x102A0, 0x102D0 },
+ { 0x10300, 0x1031E },
+ { 0x10320, 0x10323 },
+ { 0x10330, 0x1034A },
+ { 0x10380, 0x1039D },
+ { 0x1039F, 0x103C3 },
+ { 0x103C8, 0x103D5 },
+ { 0x10400, 0x1049D },
+ { 0x104A0, 0x104A9 },
+ { 0x10800, 0x10805 },
+ { 0x10808, 0x10808 },
+ { 0x1080A, 0x10835 },
+ { 0x10837, 0x10838 },
+ { 0x1083C, 0x1083C },
+ { 0x1083F, 0x1083F },
+ { 0x10900, 0x10919 },
+ { 0x1091F, 0x10939 },
+ { 0x1093F, 0x1093F },
+ { 0x10A00, 0x10A03 },
+ { 0x10A05, 0x10A06 },
+ { 0x10A0C, 0x10A13 },
+ { 0x10A15, 0x10A17 },
+ { 0x10A19, 0x10A33 },
+ { 0x10A38, 0x10A3A },
+ { 0x10A3F, 0x10A47 },
+ { 0x10A50, 0x10A58 },
+ { 0x12000, 0x1236E },
+ { 0x12400, 0x12462 },
+ { 0x12470, 0x12473 },
+ { 0x1D000, 0x1D0F5 },
+ { 0x1D100, 0x1D126 },
+ { 0x1D129, 0x1D1DD },
+ { 0x1D200, 0x1D245 },
+ { 0x1D300, 0x1D356 },
+ { 0x1D360, 0x1D371 },
+ { 0x1D400, 0x1D454 },
+ { 0x1D456, 0x1D49C },
+ { 0x1D49E, 0x1D49F },
+ { 0x1D4A2, 0x1D4A2 },
+ { 0x1D4A5, 0x1D4A6 },
+ { 0x1D4A9, 0x1D4AC },
+ { 0x1D4AE, 0x1D4B9 },
+ { 0x1D4BB, 0x1D4BB },
+ { 0x1D4BD, 0x1D4C3 },
+ { 0x1D4C5, 0x1D505 },
+ { 0x1D507, 0x1D50A },
+ { 0x1D50D, 0x1D514 },
+ { 0x1D516, 0x1D51C },
+ { 0x1D51E, 0x1D539 },
+ { 0x1D53B, 0x1D53E },
+ { 0x1D540, 0x1D544 },
+ { 0x1D546, 0x1D546 },
+ { 0x1D54A, 0x1D550 },
+ { 0x1D552, 0x1D6A5 },
+ { 0x1D6A8, 0x1D7CB },
+ { 0x1D7CE, 0x1D7FF },
+ { 0x1F000, 0x1F02B },
+ { 0x1F030, 0x1F093 },
+ { 0x20000, 0x2A6D6 },
+ { 0x2F800, 0x2FA1D },
+ { 0xE0001, 0xE0001 },
+ { 0xE0020, 0xE007F },
+ { 0xE0100, 0xE01EF },
+ { 0xF0000, 0xFFFFD },
+ { 0x100000, 0x10FFFD }
+
+#define PREDICATE(c) uc_is_print (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-ctype_punct.c b/tests/unictype/test-ctype_punct.c
new file mode 100644
index 00000000..e9aa3f0b
--- /dev/null
+++ b/tests/unictype/test-ctype_punct.c
@@ -0,0 +1,354 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0021, 0x002F },
+ { 0x003A, 0x0040 },
+ { 0x005B, 0x0060 },
+ { 0x007B, 0x007E },
+ { 0x00A0, 0x00A9 },
+ { 0x00AB, 0x00B4 },
+ { 0x00B6, 0x00B9 },
+ { 0x00BB, 0x00BF },
+ { 0x00D7, 0x00D7 },
+ { 0x00F7, 0x00F7 },
+ { 0x02C2, 0x02C5 },
+ { 0x02D2, 0x02DF },
+ { 0x02E5, 0x02EB },
+ { 0x02ED, 0x02ED },
+ { 0x02EF, 0x0344 },
+ { 0x0346, 0x036F },
+ { 0x0375, 0x0375 },
+ { 0x037E, 0x037E },
+ { 0x0384, 0x0385 },
+ { 0x0387, 0x0387 },
+ { 0x03F6, 0x03F6 },
+ { 0x0482, 0x0489 },
+ { 0x055A, 0x055F },
+ { 0x0589, 0x058A },
+ { 0x0591, 0x05C7 },
+ { 0x05F3, 0x05F4 },
+ { 0x0600, 0x0603 },
+ { 0x0606, 0x061B },
+ { 0x061E, 0x061F },
+ { 0x064B, 0x065E },
+ { 0x066A, 0x066D },
+ { 0x0670, 0x0670 },
+ { 0x06D4, 0x06D4 },
+ { 0x06D6, 0x06E4 },
+ { 0x06E7, 0x06ED },
+ { 0x06FD, 0x06FE },
+ { 0x0700, 0x070D },
+ { 0x070F, 0x070F },
+ { 0x0711, 0x0711 },
+ { 0x0730, 0x074A },
+ { 0x07A6, 0x07B0 },
+ { 0x07EB, 0x07F3 },
+ { 0x07F6, 0x07F9 },
+ { 0x0901, 0x0903 },
+ { 0x093C, 0x093C },
+ { 0x093E, 0x094D },
+ { 0x0951, 0x0954 },
+ { 0x0962, 0x0965 },
+ { 0x0970, 0x0970 },
+ { 0x0981, 0x0983 },
+ { 0x09BC, 0x09BC },
+ { 0x09BE, 0x09C4 },
+ { 0x09C7, 0x09C8 },
+ { 0x09CB, 0x09CD },
+ { 0x09D7, 0x09D7 },
+ { 0x09E2, 0x09E3 },
+ { 0x09F2, 0x09FA },
+ { 0x0A01, 0x0A03 },
+ { 0x0A3C, 0x0A3C },
+ { 0x0A3E, 0x0A42 },
+ { 0x0A47, 0x0A48 },
+ { 0x0A4B, 0x0A4D },
+ { 0x0A51, 0x0A51 },
+ { 0x0A70, 0x0A71 },
+ { 0x0A75, 0x0A75 },
+ { 0x0A81, 0x0A83 },
+ { 0x0ABC, 0x0ABC },
+ { 0x0ABE, 0x0AC5 },
+ { 0x0AC7, 0x0AC9 },
+ { 0x0ACB, 0x0ACD },
+ { 0x0AE2, 0x0AE3 },
+ { 0x0AF1, 0x0AF1 },
+ { 0x0B01, 0x0B03 },
+ { 0x0B3C, 0x0B3C },
+ { 0x0B3E, 0x0B44 },
+ { 0x0B47, 0x0B48 },
+ { 0x0B4B, 0x0B4D },
+ { 0x0B56, 0x0B57 },
+ { 0x0B62, 0x0B63 },
+ { 0x0B70, 0x0B70 },
+ { 0x0B82, 0x0B82 },
+ { 0x0BBE, 0x0BC2 },
+ { 0x0BC6, 0x0BC8 },
+ { 0x0BCA, 0x0BCD },
+ { 0x0BD7, 0x0BD7 },
+ { 0x0BF0, 0x0BFA },
+ { 0x0C01, 0x0C03 },
+ { 0x0C3E, 0x0C44 },
+ { 0x0C46, 0x0C48 },
+ { 0x0C4A, 0x0C4D },
+ { 0x0C55, 0x0C56 },
+ { 0x0C62, 0x0C63 },
+ { 0x0C78, 0x0C7F },
+ { 0x0C82, 0x0C83 },
+ { 0x0CBC, 0x0CBC },
+ { 0x0CBE, 0x0CC4 },
+ { 0x0CC6, 0x0CC8 },
+ { 0x0CCA, 0x0CCD },
+ { 0x0CD5, 0x0CD6 },
+ { 0x0CE2, 0x0CE3 },
+ { 0x0CF1, 0x0CF2 },
+ { 0x0D02, 0x0D03 },
+ { 0x0D3E, 0x0D44 },
+ { 0x0D46, 0x0D48 },
+ { 0x0D4A, 0x0D4D },
+ { 0x0D57, 0x0D57 },
+ { 0x0D62, 0x0D63 },
+ { 0x0D70, 0x0D75 },
+ { 0x0D79, 0x0D79 },
+ { 0x0D82, 0x0D83 },
+ { 0x0DCA, 0x0DCA },
+ { 0x0DCF, 0x0DD4 },
+ { 0x0DD6, 0x0DD6 },
+ { 0x0DD8, 0x0DDF },
+ { 0x0DF2, 0x0DF4 },
+ { 0x0E2F, 0x0E2F },
+ { 0x0E3F, 0x0E3F },
+ { 0x0E46, 0x0E46 },
+ { 0x0E4F, 0x0E4F },
+ { 0x0E5A, 0x0E5B },
+ { 0x0EB1, 0x0EB1 },
+ { 0x0EB4, 0x0EB9 },
+ { 0x0EBB, 0x0EBC },
+ { 0x0EC8, 0x0ECD },
+ { 0x0F01, 0x0F1F },
+ { 0x0F2A, 0x0F3F },
+ { 0x0F71, 0x0F87 },
+ { 0x0F90, 0x0F97 },
+ { 0x0F99, 0x0FBC },
+ { 0x0FBE, 0x0FCC },
+ { 0x0FCE, 0x0FD4 },
+ { 0x102B, 0x103E },
+ { 0x104A, 0x104F },
+ { 0x1056, 0x1059 },
+ { 0x105E, 0x1060 },
+ { 0x1062, 0x1064 },
+ { 0x1067, 0x106D },
+ { 0x1071, 0x1074 },
+ { 0x1082, 0x108D },
+ { 0x108F, 0x108F },
+ { 0x109E, 0x109F },
+ { 0x10FB, 0x10FB },
+ { 0x135F, 0x137C },
+ { 0x1390, 0x1399 },
+ { 0x166D, 0x166E },
+ { 0x169B, 0x169C },
+ { 0x16EB, 0x16ED },
+ { 0x1712, 0x1714 },
+ { 0x1732, 0x1736 },
+ { 0x1752, 0x1753 },
+ { 0x1772, 0x1773 },
+ { 0x17B4, 0x17D6 },
+ { 0x17D8, 0x17DB },
+ { 0x17DD, 0x17DD },
+ { 0x17F0, 0x17F9 },
+ { 0x1800, 0x180D },
+ { 0x18A9, 0x18A9 },
+ { 0x1920, 0x192B },
+ { 0x1930, 0x193B },
+ { 0x1940, 0x1940 },
+ { 0x1944, 0x1945 },
+ { 0x19B0, 0x19C0 },
+ { 0x19C8, 0x19C9 },
+ { 0x19DE, 0x19FF },
+ { 0x1A17, 0x1A1B },
+ { 0x1A1E, 0x1A1F },
+ { 0x1B00, 0x1B04 },
+ { 0x1B34, 0x1B44 },
+ { 0x1B5A, 0x1B7C },
+ { 0x1B80, 0x1B82 },
+ { 0x1BA1, 0x1BAA },
+ { 0x1C24, 0x1C37 },
+ { 0x1C3B, 0x1C3F },
+ { 0x1C7E, 0x1C7F },
+ { 0x1DC0, 0x1DE6 },
+ { 0x1DFE, 0x1DFF },
+ { 0x1FBD, 0x1FBD },
+ { 0x1FBF, 0x1FC1 },
+ { 0x1FCD, 0x1FCF },
+ { 0x1FDD, 0x1FDF },
+ { 0x1FED, 0x1FEF },
+ { 0x1FFD, 0x1FFE },
+ { 0x2007, 0x2007 },
+ { 0x200B, 0x2027 },
+ { 0x202A, 0x205E },
+ { 0x2060, 0x2064 },
+ { 0x206A, 0x2070 },
+ { 0x2074, 0x207E },
+ { 0x2080, 0x208E },
+ { 0x20A0, 0x20B5 },
+ { 0x20D0, 0x20F0 },
+ { 0x2100, 0x2101 },
+ { 0x2103, 0x2106 },
+ { 0x2108, 0x2109 },
+ { 0x2114, 0x2114 },
+ { 0x2116, 0x2118 },
+ { 0x211E, 0x2123 },
+ { 0x2125, 0x2125 },
+ { 0x2127, 0x2127 },
+ { 0x212E, 0x212E },
+ { 0x213A, 0x213B },
+ { 0x2140, 0x2144 },
+ { 0x214A, 0x214D },
+ { 0x214F, 0x214F },
+ { 0x2153, 0x215F },
+ { 0x2190, 0x23E7 },
+ { 0x2400, 0x2426 },
+ { 0x2440, 0x244A },
+ { 0x2460, 0x249B },
+ { 0x24EA, 0x269D },
+ { 0x26A0, 0x26BC },
+ { 0x26C0, 0x26C3 },
+ { 0x2701, 0x2704 },
+ { 0x2706, 0x2709 },
+ { 0x270C, 0x2727 },
+ { 0x2729, 0x274B },
+ { 0x274D, 0x274D },
+ { 0x274F, 0x2752 },
+ { 0x2756, 0x2756 },
+ { 0x2758, 0x275E },
+ { 0x2761, 0x2794 },
+ { 0x2798, 0x27AF },
+ { 0x27B1, 0x27BE },
+ { 0x27C0, 0x27CA },
+ { 0x27CC, 0x27CC },
+ { 0x27D0, 0x2B4C },
+ { 0x2B50, 0x2B54 },
+ { 0x2CE5, 0x2CEA },
+ { 0x2CF9, 0x2CFF },
+ { 0x2DE0, 0x2E2E },
+ { 0x2E30, 0x2E30 },
+ { 0x2E80, 0x2E99 },
+ { 0x2E9B, 0x2EF3 },
+ { 0x2F00, 0x2FD5 },
+ { 0x2FF0, 0x2FFB },
+ { 0x3001, 0x3004 },
+ { 0x3008, 0x3020 },
+ { 0x302A, 0x3030 },
+ { 0x3036, 0x3037 },
+ { 0x303D, 0x303F },
+ { 0x3099, 0x309C },
+ { 0x30A0, 0x30A0 },
+ { 0x30FB, 0x30FB },
+ { 0x3190, 0x319F },
+ { 0x31C0, 0x31E3 },
+ { 0x3200, 0x321E },
+ { 0x3220, 0x3243 },
+ { 0x3250, 0x32FE },
+ { 0x3300, 0x33FF },
+ { 0x4DC0, 0x4DFF },
+ { 0xA490, 0xA4C6 },
+ { 0xA60D, 0xA60F },
+ { 0xA66F, 0xA673 },
+ { 0xA67C, 0xA67E },
+ { 0xA700, 0xA716 },
+ { 0xA720, 0xA721 },
+ { 0xA789, 0xA78A },
+ { 0xA802, 0xA802 },
+ { 0xA806, 0xA806 },
+ { 0xA80B, 0xA80B },
+ { 0xA823, 0xA82B },
+ { 0xA874, 0xA877 },
+ { 0xA880, 0xA881 },
+ { 0xA8B4, 0xA8C4 },
+ { 0xA8CE, 0xA8CF },
+ { 0xA926, 0xA92F },
+ { 0xA947, 0xA953 },
+ { 0xA95F, 0xA95F },
+ { 0xAA29, 0xAA36 },
+ { 0xAA43, 0xAA43 },
+ { 0xAA4C, 0xAA4D },
+ { 0xAA5C, 0xAA5F },
+ { 0xE000, 0xF8FF },
+ { 0xFB1E, 0xFB1E },
+ { 0xFB29, 0xFB29 },
+ { 0xFD3E, 0xFD3F },
+ { 0xFDFC, 0xFDFD },
+ { 0xFE00, 0xFE19 },
+ { 0xFE20, 0xFE26 },
+ { 0xFE30, 0xFE52 },
+ { 0xFE54, 0xFE66 },
+ { 0xFE68, 0xFE6B },
+ { 0xFEFF, 0xFEFF },
+ { 0xFF01, 0xFF0F },
+ { 0xFF1A, 0xFF20 },
+ { 0xFF3B, 0xFF40 },
+ { 0xFF5B, 0xFF65 },
+ { 0xFFE0, 0xFFE6 },
+ { 0xFFE8, 0xFFEE },
+ { 0xFFF9, 0xFFFD },
+ { 0x10100, 0x10102 },
+ { 0x10107, 0x10133 },
+ { 0x10137, 0x1013F },
+ { 0x10175, 0x1018A },
+ { 0x10190, 0x1019B },
+ { 0x101D0, 0x101FD },
+ { 0x10320, 0x10323 },
+ { 0x1039F, 0x1039F },
+ { 0x103D0, 0x103D0 },
+ { 0x10916, 0x10919 },
+ { 0x1091F, 0x1091F },
+ { 0x1093F, 0x1093F },
+ { 0x10A01, 0x10A03 },
+ { 0x10A05, 0x10A06 },
+ { 0x10A0C, 0x10A0F },
+ { 0x10A38, 0x10A3A },
+ { 0x10A3F, 0x10A47 },
+ { 0x10A50, 0x10A58 },
+ { 0x12470, 0x12473 },
+ { 0x1D000, 0x1D0F5 },
+ { 0x1D100, 0x1D126 },
+ { 0x1D129, 0x1D1DD },
+ { 0x1D200, 0x1D245 },
+ { 0x1D300, 0x1D356 },
+ { 0x1D360, 0x1D371 },
+ { 0x1D6C1, 0x1D6C1 },
+ { 0x1D6DB, 0x1D6DB },
+ { 0x1D6FB, 0x1D6FB },
+ { 0x1D715, 0x1D715 },
+ { 0x1D735, 0x1D735 },
+ { 0x1D74F, 0x1D74F },
+ { 0x1D76F, 0x1D76F },
+ { 0x1D789, 0x1D789 },
+ { 0x1D7A9, 0x1D7A9 },
+ { 0x1D7C3, 0x1D7C3 },
+ { 0x1F000, 0x1F02B },
+ { 0x1F030, 0x1F093 },
+ { 0xE0001, 0xE0001 },
+ { 0xE0020, 0xE007F },
+ { 0xE0100, 0xE01EF },
+ { 0xF0000, 0xFFFFD },
+ { 0x100000, 0x10FFFD }
+
+#define PREDICATE(c) uc_is_punct (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-ctype_space.c b/tests/unictype/test-ctype_space.c
new file mode 100644
index 00000000..c02fa963
--- /dev/null
+++ b/tests/unictype/test-ctype_space.c
@@ -0,0 +1,31 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0009, 0x000D },
+ { 0x0020, 0x0020 },
+ { 0x1680, 0x1680 },
+ { 0x180E, 0x180E },
+ { 0x2000, 0x2006 },
+ { 0x2008, 0x200A },
+ { 0x2028, 0x2029 },
+ { 0x205F, 0x205F },
+ { 0x3000, 0x3000 }
+
+#define PREDICATE(c) uc_is_space (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-ctype_upper.c b/tests/unictype/test-ctype_upper.c
new file mode 100644
index 00000000..d7f0c035
--- /dev/null
+++ b/tests/unictype/test-ctype_upper.c
@@ -0,0 +1,576 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0041, 0x005A },
+ { 0x00C0, 0x00D6 },
+ { 0x00D8, 0x00DE },
+ { 0x0100, 0x0100 },
+ { 0x0102, 0x0102 },
+ { 0x0104, 0x0104 },
+ { 0x0106, 0x0106 },
+ { 0x0108, 0x0108 },
+ { 0x010A, 0x010A },
+ { 0x010C, 0x010C },
+ { 0x010E, 0x010E },
+ { 0x0110, 0x0110 },
+ { 0x0112, 0x0112 },
+ { 0x0114, 0x0114 },
+ { 0x0116, 0x0116 },
+ { 0x0118, 0x0118 },
+ { 0x011A, 0x011A },
+ { 0x011C, 0x011C },
+ { 0x011E, 0x011E },
+ { 0x0120, 0x0120 },
+ { 0x0122, 0x0122 },
+ { 0x0124, 0x0124 },
+ { 0x0126, 0x0126 },
+ { 0x0128, 0x0128 },
+ { 0x012A, 0x012A },
+ { 0x012C, 0x012C },
+ { 0x012E, 0x012E },
+ { 0x0130, 0x0130 },
+ { 0x0132, 0x0132 },
+ { 0x0134, 0x0134 },
+ { 0x0136, 0x0136 },
+ { 0x0139, 0x0139 },
+ { 0x013B, 0x013B },
+ { 0x013D, 0x013D },
+ { 0x013F, 0x013F },
+ { 0x0141, 0x0141 },
+ { 0x0143, 0x0143 },
+ { 0x0145, 0x0145 },
+ { 0x0147, 0x0147 },
+ { 0x014A, 0x014A },
+ { 0x014C, 0x014C },
+ { 0x014E, 0x014E },
+ { 0x0150, 0x0150 },
+ { 0x0152, 0x0152 },
+ { 0x0154, 0x0154 },
+ { 0x0156, 0x0156 },
+ { 0x0158, 0x0158 },
+ { 0x015A, 0x015A },
+ { 0x015C, 0x015C },
+ { 0x015E, 0x015E },
+ { 0x0160, 0x0160 },
+ { 0x0162, 0x0162 },
+ { 0x0164, 0x0164 },
+ { 0x0166, 0x0166 },
+ { 0x0168, 0x0168 },
+ { 0x016A, 0x016A },
+ { 0x016C, 0x016C },
+ { 0x016E, 0x016E },
+ { 0x0170, 0x0170 },
+ { 0x0172, 0x0172 },
+ { 0x0174, 0x0174 },
+ { 0x0176, 0x0176 },
+ { 0x0178, 0x0179 },
+ { 0x017B, 0x017B },
+ { 0x017D, 0x017D },
+ { 0x0181, 0x0182 },
+ { 0x0184, 0x0184 },
+ { 0x0186, 0x0187 },
+ { 0x0189, 0x018B },
+ { 0x018E, 0x0191 },
+ { 0x0193, 0x0194 },
+ { 0x0196, 0x0198 },
+ { 0x019C, 0x019D },
+ { 0x019F, 0x01A0 },
+ { 0x01A2, 0x01A2 },
+ { 0x01A4, 0x01A4 },
+ { 0x01A6, 0x01A7 },
+ { 0x01A9, 0x01A9 },
+ { 0x01AC, 0x01AC },
+ { 0x01AE, 0x01AF },
+ { 0x01B1, 0x01B3 },
+ { 0x01B5, 0x01B5 },
+ { 0x01B7, 0x01B8 },
+ { 0x01BC, 0x01BC },
+ { 0x01C4, 0x01C5 },
+ { 0x01C7, 0x01C8 },
+ { 0x01CA, 0x01CB },
+ { 0x01CD, 0x01CD },
+ { 0x01CF, 0x01CF },
+ { 0x01D1, 0x01D1 },
+ { 0x01D3, 0x01D3 },
+ { 0x01D5, 0x01D5 },
+ { 0x01D7, 0x01D7 },
+ { 0x01D9, 0x01D9 },
+ { 0x01DB, 0x01DB },
+ { 0x01DE, 0x01DE },
+ { 0x01E0, 0x01E0 },
+ { 0x01E2, 0x01E2 },
+ { 0x01E4, 0x01E4 },
+ { 0x01E6, 0x01E6 },
+ { 0x01E8, 0x01E8 },
+ { 0x01EA, 0x01EA },
+ { 0x01EC, 0x01EC },
+ { 0x01EE, 0x01EE },
+ { 0x01F1, 0x01F2 },
+ { 0x01F4, 0x01F4 },
+ { 0x01F6, 0x01F8 },
+ { 0x01FA, 0x01FA },
+ { 0x01FC, 0x01FC },
+ { 0x01FE, 0x01FE },
+ { 0x0200, 0x0200 },
+ { 0x0202, 0x0202 },
+ { 0x0204, 0x0204 },
+ { 0x0206, 0x0206 },
+ { 0x0208, 0x0208 },
+ { 0x020A, 0x020A },
+ { 0x020C, 0x020C },
+ { 0x020E, 0x020E },
+ { 0x0210, 0x0210 },
+ { 0x0212, 0x0212 },
+ { 0x0214, 0x0214 },
+ { 0x0216, 0x0216 },
+ { 0x0218, 0x0218 },
+ { 0x021A, 0x021A },
+ { 0x021C, 0x021C },
+ { 0x021E, 0x021E },
+ { 0x0220, 0x0220 },
+ { 0x0222, 0x0222 },
+ { 0x0224, 0x0224 },
+ { 0x0226, 0x0226 },
+ { 0x0228, 0x0228 },
+ { 0x022A, 0x022A },
+ { 0x022C, 0x022C },
+ { 0x022E, 0x022E },
+ { 0x0230, 0x0230 },
+ { 0x0232, 0x0232 },
+ { 0x023A, 0x023B },
+ { 0x023D, 0x023E },
+ { 0x0241, 0x0241 },
+ { 0x0243, 0x0246 },
+ { 0x0248, 0x0248 },
+ { 0x024A, 0x024A },
+ { 0x024C, 0x024C },
+ { 0x024E, 0x024E },
+ { 0x0370, 0x0370 },
+ { 0x0372, 0x0372 },
+ { 0x0376, 0x0376 },
+ { 0x0386, 0x0386 },
+ { 0x0388, 0x038A },
+ { 0x038C, 0x038C },
+ { 0x038E, 0x038F },
+ { 0x0391, 0x03A1 },
+ { 0x03A3, 0x03AB },
+ { 0x03CF, 0x03CF },
+ { 0x03D8, 0x03D8 },
+ { 0x03DA, 0x03DA },
+ { 0x03DC, 0x03DC },
+ { 0x03DE, 0x03DE },
+ { 0x03E0, 0x03E0 },
+ { 0x03E2, 0x03E2 },
+ { 0x03E4, 0x03E4 },
+ { 0x03E6, 0x03E6 },
+ { 0x03E8, 0x03E8 },
+ { 0x03EA, 0x03EA },
+ { 0x03EC, 0x03EC },
+ { 0x03EE, 0x03EE },
+ { 0x03F4, 0x03F4 },
+ { 0x03F7, 0x03F7 },
+ { 0x03F9, 0x03FA },
+ { 0x03FD, 0x042F },
+ { 0x0460, 0x0460 },
+ { 0x0462, 0x0462 },
+ { 0x0464, 0x0464 },
+ { 0x0466, 0x0466 },
+ { 0x0468, 0x0468 },
+ { 0x046A, 0x046A },
+ { 0x046C, 0x046C },
+ { 0x046E, 0x046E },
+ { 0x0470, 0x0470 },
+ { 0x0472, 0x0472 },
+ { 0x0474, 0x0474 },
+ { 0x0476, 0x0476 },
+ { 0x0478, 0x0478 },
+ { 0x047A, 0x047A },
+ { 0x047C, 0x047C },
+ { 0x047E, 0x047E },
+ { 0x0480, 0x0480 },
+ { 0x048A, 0x048A },
+ { 0x048C, 0x048C },
+ { 0x048E, 0x048E },
+ { 0x0490, 0x0490 },
+ { 0x0492, 0x0492 },
+ { 0x0494, 0x0494 },
+ { 0x0496, 0x0496 },
+ { 0x0498, 0x0498 },
+ { 0x049A, 0x049A },
+ { 0x049C, 0x049C },
+ { 0x049E, 0x049E },
+ { 0x04A0, 0x04A0 },
+ { 0x04A2, 0x04A2 },
+ { 0x04A4, 0x04A4 },
+ { 0x04A6, 0x04A6 },
+ { 0x04A8, 0x04A8 },
+ { 0x04AA, 0x04AA },
+ { 0x04AC, 0x04AC },
+ { 0x04AE, 0x04AE },
+ { 0x04B0, 0x04B0 },
+ { 0x04B2, 0x04B2 },
+ { 0x04B4, 0x04B4 },
+ { 0x04B6, 0x04B6 },
+ { 0x04B8, 0x04B8 },
+ { 0x04BA, 0x04BA },
+ { 0x04BC, 0x04BC },
+ { 0x04BE, 0x04BE },
+ { 0x04C0, 0x04C1 },
+ { 0x04C3, 0x04C3 },
+ { 0x04C5, 0x04C5 },
+ { 0x04C7, 0x04C7 },
+ { 0x04C9, 0x04C9 },
+ { 0x04CB, 0x04CB },
+ { 0x04CD, 0x04CD },
+ { 0x04D0, 0x04D0 },
+ { 0x04D2, 0x04D2 },
+ { 0x04D4, 0x04D4 },
+ { 0x04D6, 0x04D6 },
+ { 0x04D8, 0x04D8 },
+ { 0x04DA, 0x04DA },
+ { 0x04DC, 0x04DC },
+ { 0x04DE, 0x04DE },
+ { 0x04E0, 0x04E0 },
+ { 0x04E2, 0x04E2 },
+ { 0x04E4, 0x04E4 },
+ { 0x04E6, 0x04E6 },
+ { 0x04E8, 0x04E8 },
+ { 0x04EA, 0x04EA },
+ { 0x04EC, 0x04EC },
+ { 0x04EE, 0x04EE },
+ { 0x04F0, 0x04F0 },
+ { 0x04F2, 0x04F2 },
+ { 0x04F4, 0x04F4 },
+ { 0x04F6, 0x04F6 },
+ { 0x04F8, 0x04F8 },
+ { 0x04FA, 0x04FA },
+ { 0x04FC, 0x04FC },
+ { 0x04FE, 0x04FE },
+ { 0x0500, 0x0500 },
+ { 0x0502, 0x0502 },
+ { 0x0504, 0x0504 },
+ { 0x0506, 0x0506 },
+ { 0x0508, 0x0508 },
+ { 0x050A, 0x050A },
+ { 0x050C, 0x050C },
+ { 0x050E, 0x050E },
+ { 0x0510, 0x0510 },
+ { 0x0512, 0x0512 },
+ { 0x0514, 0x0514 },
+ { 0x0516, 0x0516 },
+ { 0x0518, 0x0518 },
+ { 0x051A, 0x051A },
+ { 0x051C, 0x051C },
+ { 0x051E, 0x051E },
+ { 0x0520, 0x0520 },
+ { 0x0522, 0x0522 },
+ { 0x0531, 0x0556 },
+ { 0x10A0, 0x10C5 },
+ { 0x1E00, 0x1E00 },
+ { 0x1E02, 0x1E02 },
+ { 0x1E04, 0x1E04 },
+ { 0x1E06, 0x1E06 },
+ { 0x1E08, 0x1E08 },
+ { 0x1E0A, 0x1E0A },
+ { 0x1E0C, 0x1E0C },
+ { 0x1E0E, 0x1E0E },
+ { 0x1E10, 0x1E10 },
+ { 0x1E12, 0x1E12 },
+ { 0x1E14, 0x1E14 },
+ { 0x1E16, 0x1E16 },
+ { 0x1E18, 0x1E18 },
+ { 0x1E1A, 0x1E1A },
+ { 0x1E1C, 0x1E1C },
+ { 0x1E1E, 0x1E1E },
+ { 0x1E20, 0x1E20 },
+ { 0x1E22, 0x1E22 },
+ { 0x1E24, 0x1E24 },
+ { 0x1E26, 0x1E26 },
+ { 0x1E28, 0x1E28 },
+ { 0x1E2A, 0x1E2A },
+ { 0x1E2C, 0x1E2C },
+ { 0x1E2E, 0x1E2E },
+ { 0x1E30, 0x1E30 },
+ { 0x1E32, 0x1E32 },
+ { 0x1E34, 0x1E34 },
+ { 0x1E36, 0x1E36 },
+ { 0x1E38, 0x1E38 },
+ { 0x1E3A, 0x1E3A },
+ { 0x1E3C, 0x1E3C },
+ { 0x1E3E, 0x1E3E },
+ { 0x1E40, 0x1E40 },
+ { 0x1E42, 0x1E42 },
+ { 0x1E44, 0x1E44 },
+ { 0x1E46, 0x1E46 },
+ { 0x1E48, 0x1E48 },
+ { 0x1E4A, 0x1E4A },
+ { 0x1E4C, 0x1E4C },
+ { 0x1E4E, 0x1E4E },
+ { 0x1E50, 0x1E50 },
+ { 0x1E52, 0x1E52 },
+ { 0x1E54, 0x1E54 },
+ { 0x1E56, 0x1E56 },
+ { 0x1E58, 0x1E58 },
+ { 0x1E5A, 0x1E5A },
+ { 0x1E5C, 0x1E5C },
+ { 0x1E5E, 0x1E5E },
+ { 0x1E60, 0x1E60 },
+ { 0x1E62, 0x1E62 },
+ { 0x1E64, 0x1E64 },
+ { 0x1E66, 0x1E66 },
+ { 0x1E68, 0x1E68 },
+ { 0x1E6A, 0x1E6A },
+ { 0x1E6C, 0x1E6C },
+ { 0x1E6E, 0x1E6E },
+ { 0x1E70, 0x1E70 },
+ { 0x1E72, 0x1E72 },
+ { 0x1E74, 0x1E74 },
+ { 0x1E76, 0x1E76 },
+ { 0x1E78, 0x1E78 },
+ { 0x1E7A, 0x1E7A },
+ { 0x1E7C, 0x1E7C },
+ { 0x1E7E, 0x1E7E },
+ { 0x1E80, 0x1E80 },
+ { 0x1E82, 0x1E82 },
+ { 0x1E84, 0x1E84 },
+ { 0x1E86, 0x1E86 },
+ { 0x1E88, 0x1E88 },
+ { 0x1E8A, 0x1E8A },
+ { 0x1E8C, 0x1E8C },
+ { 0x1E8E, 0x1E8E },
+ { 0x1E90, 0x1E90 },
+ { 0x1E92, 0x1E92 },
+ { 0x1E94, 0x1E94 },
+ { 0x1E9E, 0x1E9E },
+ { 0x1EA0, 0x1EA0 },
+ { 0x1EA2, 0x1EA2 },
+ { 0x1EA4, 0x1EA4 },
+ { 0x1EA6, 0x1EA6 },
+ { 0x1EA8, 0x1EA8 },
+ { 0x1EAA, 0x1EAA },
+ { 0x1EAC, 0x1EAC },
+ { 0x1EAE, 0x1EAE },
+ { 0x1EB0, 0x1EB0 },
+ { 0x1EB2, 0x1EB2 },
+ { 0x1EB4, 0x1EB4 },
+ { 0x1EB6, 0x1EB6 },
+ { 0x1EB8, 0x1EB8 },
+ { 0x1EBA, 0x1EBA },
+ { 0x1EBC, 0x1EBC },
+ { 0x1EBE, 0x1EBE },
+ { 0x1EC0, 0x1EC0 },
+ { 0x1EC2, 0x1EC2 },
+ { 0x1EC4, 0x1EC4 },
+ { 0x1EC6, 0x1EC6 },
+ { 0x1EC8, 0x1EC8 },
+ { 0x1ECA, 0x1ECA },
+ { 0x1ECC, 0x1ECC },
+ { 0x1ECE, 0x1ECE },
+ { 0x1ED0, 0x1ED0 },
+ { 0x1ED2, 0x1ED2 },
+ { 0x1ED4, 0x1ED4 },
+ { 0x1ED6, 0x1ED6 },
+ { 0x1ED8, 0x1ED8 },
+ { 0x1EDA, 0x1EDA },
+ { 0x1EDC, 0x1EDC },
+ { 0x1EDE, 0x1EDE },
+ { 0x1EE0, 0x1EE0 },
+ { 0x1EE2, 0x1EE2 },
+ { 0x1EE4, 0x1EE4 },
+ { 0x1EE6, 0x1EE6 },
+ { 0x1EE8, 0x1EE8 },
+ { 0x1EEA, 0x1EEA },
+ { 0x1EEC, 0x1EEC },
+ { 0x1EEE, 0x1EEE },
+ { 0x1EF0, 0x1EF0 },
+ { 0x1EF2, 0x1EF2 },
+ { 0x1EF4, 0x1EF4 },
+ { 0x1EF6, 0x1EF6 },
+ { 0x1EF8, 0x1EF8 },
+ { 0x1EFA, 0x1EFA },
+ { 0x1EFC, 0x1EFC },
+ { 0x1EFE, 0x1EFE },
+ { 0x1F08, 0x1F0F },
+ { 0x1F18, 0x1F1D },
+ { 0x1F28, 0x1F2F },
+ { 0x1F38, 0x1F3F },
+ { 0x1F48, 0x1F4D },
+ { 0x1F59, 0x1F59 },
+ { 0x1F5B, 0x1F5B },
+ { 0x1F5D, 0x1F5D },
+ { 0x1F5F, 0x1F5F },
+ { 0x1F68, 0x1F6F },
+ { 0x1F88, 0x1F8F },
+ { 0x1F98, 0x1F9F },
+ { 0x1FA8, 0x1FAF },
+ { 0x1FB8, 0x1FBC },
+ { 0x1FC8, 0x1FCC },
+ { 0x1FD8, 0x1FDB },
+ { 0x1FE8, 0x1FEC },
+ { 0x1FF8, 0x1FFC },
+ { 0x2126, 0x2126 },
+ { 0x212A, 0x212B },
+ { 0x2132, 0x2132 },
+ { 0x2160, 0x216F },
+ { 0x2183, 0x2183 },
+ { 0x24B6, 0x24CF },
+ { 0x2C00, 0x2C2E },
+ { 0x2C60, 0x2C60 },
+ { 0x2C62, 0x2C64 },
+ { 0x2C67, 0x2C67 },
+ { 0x2C69, 0x2C69 },
+ { 0x2C6B, 0x2C6B },
+ { 0x2C6D, 0x2C6F },
+ { 0x2C72, 0x2C72 },
+ { 0x2C75, 0x2C75 },
+ { 0x2C80, 0x2C80 },
+ { 0x2C82, 0x2C82 },
+ { 0x2C84, 0x2C84 },
+ { 0x2C86, 0x2C86 },
+ { 0x2C88, 0x2C88 },
+ { 0x2C8A, 0x2C8A },
+ { 0x2C8C, 0x2C8C },
+ { 0x2C8E, 0x2C8E },
+ { 0x2C90, 0x2C90 },
+ { 0x2C92, 0x2C92 },
+ { 0x2C94, 0x2C94 },
+ { 0x2C96, 0x2C96 },
+ { 0x2C98, 0x2C98 },
+ { 0x2C9A, 0x2C9A },
+ { 0x2C9C, 0x2C9C },
+ { 0x2C9E, 0x2C9E },
+ { 0x2CA0, 0x2CA0 },
+ { 0x2CA2, 0x2CA2 },
+ { 0x2CA4, 0x2CA4 },
+ { 0x2CA6, 0x2CA6 },
+ { 0x2CA8, 0x2CA8 },
+ { 0x2CAA, 0x2CAA },
+ { 0x2CAC, 0x2CAC },
+ { 0x2CAE, 0x2CAE },
+ { 0x2CB0, 0x2CB0 },
+ { 0x2CB2, 0x2CB2 },
+ { 0x2CB4, 0x2CB4 },
+ { 0x2CB6, 0x2CB6 },
+ { 0x2CB8, 0x2CB8 },
+ { 0x2CBA, 0x2CBA },
+ { 0x2CBC, 0x2CBC },
+ { 0x2CBE, 0x2CBE },
+ { 0x2CC0, 0x2CC0 },
+ { 0x2CC2, 0x2CC2 },
+ { 0x2CC4, 0x2CC4 },
+ { 0x2CC6, 0x2CC6 },
+ { 0x2CC8, 0x2CC8 },
+ { 0x2CCA, 0x2CCA },
+ { 0x2CCC, 0x2CCC },
+ { 0x2CCE, 0x2CCE },
+ { 0x2CD0, 0x2CD0 },
+ { 0x2CD2, 0x2CD2 },
+ { 0x2CD4, 0x2CD4 },
+ { 0x2CD6, 0x2CD6 },
+ { 0x2CD8, 0x2CD8 },
+ { 0x2CDA, 0x2CDA },
+ { 0x2CDC, 0x2CDC },
+ { 0x2CDE, 0x2CDE },
+ { 0x2CE0, 0x2CE0 },
+ { 0x2CE2, 0x2CE2 },
+ { 0xA640, 0xA640 },
+ { 0xA642, 0xA642 },
+ { 0xA644, 0xA644 },
+ { 0xA646, 0xA646 },
+ { 0xA648, 0xA648 },
+ { 0xA64A, 0xA64A },
+ { 0xA64C, 0xA64C },
+ { 0xA64E, 0xA64E },
+ { 0xA650, 0xA650 },
+ { 0xA652, 0xA652 },
+ { 0xA654, 0xA654 },
+ { 0xA656, 0xA656 },
+ { 0xA658, 0xA658 },
+ { 0xA65A, 0xA65A },
+ { 0xA65C, 0xA65C },
+ { 0xA65E, 0xA65E },
+ { 0xA662, 0xA662 },
+ { 0xA664, 0xA664 },
+ { 0xA666, 0xA666 },
+ { 0xA668, 0xA668 },
+ { 0xA66A, 0xA66A },
+ { 0xA66C, 0xA66C },
+ { 0xA680, 0xA680 },
+ { 0xA682, 0xA682 },
+ { 0xA684, 0xA684 },
+ { 0xA686, 0xA686 },
+ { 0xA688, 0xA688 },
+ { 0xA68A, 0xA68A },
+ { 0xA68C, 0xA68C },
+ { 0xA68E, 0xA68E },
+ { 0xA690, 0xA690 },
+ { 0xA692, 0xA692 },
+ { 0xA694, 0xA694 },
+ { 0xA696, 0xA696 },
+ { 0xA722, 0xA722 },
+ { 0xA724, 0xA724 },
+ { 0xA726, 0xA726 },
+ { 0xA728, 0xA728 },
+ { 0xA72A, 0xA72A },
+ { 0xA72C, 0xA72C },
+ { 0xA72E, 0xA72E },
+ { 0xA732, 0xA732 },
+ { 0xA734, 0xA734 },
+ { 0xA736, 0xA736 },
+ { 0xA738, 0xA738 },
+ { 0xA73A, 0xA73A },
+ { 0xA73C, 0xA73C },
+ { 0xA73E, 0xA73E },
+ { 0xA740, 0xA740 },
+ { 0xA742, 0xA742 },
+ { 0xA744, 0xA744 },
+ { 0xA746, 0xA746 },
+ { 0xA748, 0xA748 },
+ { 0xA74A, 0xA74A },
+ { 0xA74C, 0xA74C },
+ { 0xA74E, 0xA74E },
+ { 0xA750, 0xA750 },
+ { 0xA752, 0xA752 },
+ { 0xA754, 0xA754 },
+ { 0xA756, 0xA756 },
+ { 0xA758, 0xA758 },
+ { 0xA75A, 0xA75A },
+ { 0xA75C, 0xA75C },
+ { 0xA75E, 0xA75E },
+ { 0xA760, 0xA760 },
+ { 0xA762, 0xA762 },
+ { 0xA764, 0xA764 },
+ { 0xA766, 0xA766 },
+ { 0xA768, 0xA768 },
+ { 0xA76A, 0xA76A },
+ { 0xA76C, 0xA76C },
+ { 0xA76E, 0xA76E },
+ { 0xA779, 0xA779 },
+ { 0xA77B, 0xA77B },
+ { 0xA77D, 0xA77E },
+ { 0xA780, 0xA780 },
+ { 0xA782, 0xA782 },
+ { 0xA784, 0xA784 },
+ { 0xA786, 0xA786 },
+ { 0xA78B, 0xA78B },
+ { 0xFF21, 0xFF3A },
+ { 0x10400, 0x10427 }
+
+#define PREDICATE(c) uc_is_upper (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-ctype_xdigit.c b/tests/unictype/test-ctype_xdigit.c
new file mode 100644
index 00000000..d4e57178
--- /dev/null
+++ b/tests/unictype/test-ctype_xdigit.c
@@ -0,0 +1,25 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0030, 0x0039 },
+ { 0x0041, 0x0046 },
+ { 0x0061, 0x0066 }
+
+#define PREDICATE(c) uc_is_xdigit (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-decdigit.c b/tests/unictype/test-decdigit.c
new file mode 100644
index 00000000..3d916908
--- /dev/null
+++ b/tests/unictype/test-decdigit.c
@@ -0,0 +1,62 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+#define SIZEOF(a) (sizeof(a) / sizeof(a[0]))
+
+static const struct { unsigned int ch; int value; } mapping[] =
+ {
+#include "test-decdigit.h"
+ };
+
+int
+main ()
+{
+ unsigned int c;
+ size_t i;
+
+ c = 0;
+ for (i = 0; i < SIZEOF (mapping); i++)
+ {
+ for (; c < mapping[i].ch; c++)
+ ASSERT (uc_decimal_value (c) == -1);
+ /* Here c = mapping[i].ch. */
+ ASSERT (uc_decimal_value (c) == mapping[i].value);
+ c++;
+ }
+ for (; c < 0x110000; c++)
+ ASSERT (uc_decimal_value (c) == -1);
+
+ return 0;
+}
diff --git a/tests/unictype/test-decdigit.h b/tests/unictype/test-decdigit.h
new file mode 100644
index 00000000..afa88de7
--- /dev/null
+++ b/tests/unictype/test-decdigit.h
@@ -0,0 +1,373 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Decimal digit values of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+ { 0x0030, 0 },
+ { 0x0031, 1 },
+ { 0x0032, 2 },
+ { 0x0033, 3 },
+ { 0x0034, 4 },
+ { 0x0035, 5 },
+ { 0x0036, 6 },
+ { 0x0037, 7 },
+ { 0x0038, 8 },
+ { 0x0039, 9 },
+ { 0x0660, 0 },
+ { 0x0661, 1 },
+ { 0x0662, 2 },
+ { 0x0663, 3 },
+ { 0x0664, 4 },
+ { 0x0665, 5 },
+ { 0x0666, 6 },
+ { 0x0667, 7 },
+ { 0x0668, 8 },
+ { 0x0669, 9 },
+ { 0x06F0, 0 },
+ { 0x06F1, 1 },
+ { 0x06F2, 2 },
+ { 0x06F3, 3 },
+ { 0x06F4, 4 },
+ { 0x06F5, 5 },
+ { 0x06F6, 6 },
+ { 0x06F7, 7 },
+ { 0x06F8, 8 },
+ { 0x06F9, 9 },
+ { 0x07C0, 0 },
+ { 0x07C1, 1 },
+ { 0x07C2, 2 },
+ { 0x07C3, 3 },
+ { 0x07C4, 4 },
+ { 0x07C5, 5 },
+ { 0x07C6, 6 },
+ { 0x07C7, 7 },
+ { 0x07C8, 8 },
+ { 0x07C9, 9 },
+ { 0x0966, 0 },
+ { 0x0967, 1 },
+ { 0x0968, 2 },
+ { 0x0969, 3 },
+ { 0x096A, 4 },
+ { 0x096B, 5 },
+ { 0x096C, 6 },
+ { 0x096D, 7 },
+ { 0x096E, 8 },
+ { 0x096F, 9 },
+ { 0x09E6, 0 },
+ { 0x09E7, 1 },
+ { 0x09E8, 2 },
+ { 0x09E9, 3 },
+ { 0x09EA, 4 },
+ { 0x09EB, 5 },
+ { 0x09EC, 6 },
+ { 0x09ED, 7 },
+ { 0x09EE, 8 },
+ { 0x09EF, 9 },
+ { 0x0A66, 0 },
+ { 0x0A67, 1 },
+ { 0x0A68, 2 },
+ { 0x0A69, 3 },
+ { 0x0A6A, 4 },
+ { 0x0A6B, 5 },
+ { 0x0A6C, 6 },
+ { 0x0A6D, 7 },
+ { 0x0A6E, 8 },
+ { 0x0A6F, 9 },
+ { 0x0AE6, 0 },
+ { 0x0AE7, 1 },
+ { 0x0AE8, 2 },
+ { 0x0AE9, 3 },
+ { 0x0AEA, 4 },
+ { 0x0AEB, 5 },
+ { 0x0AEC, 6 },
+ { 0x0AED, 7 },
+ { 0x0AEE, 8 },
+ { 0x0AEF, 9 },
+ { 0x0B66, 0 },
+ { 0x0B67, 1 },
+ { 0x0B68, 2 },
+ { 0x0B69, 3 },
+ { 0x0B6A, 4 },
+ { 0x0B6B, 5 },
+ { 0x0B6C, 6 },
+ { 0x0B6D, 7 },
+ { 0x0B6E, 8 },
+ { 0x0B6F, 9 },
+ { 0x0BE6, 0 },
+ { 0x0BE7, 1 },
+ { 0x0BE8, 2 },
+ { 0x0BE9, 3 },
+ { 0x0BEA, 4 },
+ { 0x0BEB, 5 },
+ { 0x0BEC, 6 },
+ { 0x0BED, 7 },
+ { 0x0BEE, 8 },
+ { 0x0BEF, 9 },
+ { 0x0C66, 0 },
+ { 0x0C67, 1 },
+ { 0x0C68, 2 },
+ { 0x0C69, 3 },
+ { 0x0C6A, 4 },
+ { 0x0C6B, 5 },
+ { 0x0C6C, 6 },
+ { 0x0C6D, 7 },
+ { 0x0C6E, 8 },
+ { 0x0C6F, 9 },
+ { 0x0CE6, 0 },
+ { 0x0CE7, 1 },
+ { 0x0CE8, 2 },
+ { 0x0CE9, 3 },
+ { 0x0CEA, 4 },
+ { 0x0CEB, 5 },
+ { 0x0CEC, 6 },
+ { 0x0CED, 7 },
+ { 0x0CEE, 8 },
+ { 0x0CEF, 9 },
+ { 0x0D66, 0 },
+ { 0x0D67, 1 },
+ { 0x0D68, 2 },
+ { 0x0D69, 3 },
+ { 0x0D6A, 4 },
+ { 0x0D6B, 5 },
+ { 0x0D6C, 6 },
+ { 0x0D6D, 7 },
+ { 0x0D6E, 8 },
+ { 0x0D6F, 9 },
+ { 0x0E50, 0 },
+ { 0x0E51, 1 },
+ { 0x0E52, 2 },
+ { 0x0E53, 3 },
+ { 0x0E54, 4 },
+ { 0x0E55, 5 },
+ { 0x0E56, 6 },
+ { 0x0E57, 7 },
+ { 0x0E58, 8 },
+ { 0x0E59, 9 },
+ { 0x0ED0, 0 },
+ { 0x0ED1, 1 },
+ { 0x0ED2, 2 },
+ { 0x0ED3, 3 },
+ { 0x0ED4, 4 },
+ { 0x0ED5, 5 },
+ { 0x0ED6, 6 },
+ { 0x0ED7, 7 },
+ { 0x0ED8, 8 },
+ { 0x0ED9, 9 },
+ { 0x0F20, 0 },
+ { 0x0F21, 1 },
+ { 0x0F22, 2 },
+ { 0x0F23, 3 },
+ { 0x0F24, 4 },
+ { 0x0F25, 5 },
+ { 0x0F26, 6 },
+ { 0x0F27, 7 },
+ { 0x0F28, 8 },
+ { 0x0F29, 9 },
+ { 0x1040, 0 },
+ { 0x1041, 1 },
+ { 0x1042, 2 },
+ { 0x1043, 3 },
+ { 0x1044, 4 },
+ { 0x1045, 5 },
+ { 0x1046, 6 },
+ { 0x1047, 7 },
+ { 0x1048, 8 },
+ { 0x1049, 9 },
+ { 0x1090, 0 },
+ { 0x1091, 1 },
+ { 0x1092, 2 },
+ { 0x1093, 3 },
+ { 0x1094, 4 },
+ { 0x1095, 5 },
+ { 0x1096, 6 },
+ { 0x1097, 7 },
+ { 0x1098, 8 },
+ { 0x1099, 9 },
+ { 0x17E0, 0 },
+ { 0x17E1, 1 },
+ { 0x17E2, 2 },
+ { 0x17E3, 3 },
+ { 0x17E4, 4 },
+ { 0x17E5, 5 },
+ { 0x17E6, 6 },
+ { 0x17E7, 7 },
+ { 0x17E8, 8 },
+ { 0x17E9, 9 },
+ { 0x1810, 0 },
+ { 0x1811, 1 },
+ { 0x1812, 2 },
+ { 0x1813, 3 },
+ { 0x1814, 4 },
+ { 0x1815, 5 },
+ { 0x1816, 6 },
+ { 0x1817, 7 },
+ { 0x1818, 8 },
+ { 0x1819, 9 },
+ { 0x1946, 0 },
+ { 0x1947, 1 },
+ { 0x1948, 2 },
+ { 0x1949, 3 },
+ { 0x194A, 4 },
+ { 0x194B, 5 },
+ { 0x194C, 6 },
+ { 0x194D, 7 },
+ { 0x194E, 8 },
+ { 0x194F, 9 },
+ { 0x19D0, 0 },
+ { 0x19D1, 1 },
+ { 0x19D2, 2 },
+ { 0x19D3, 3 },
+ { 0x19D4, 4 },
+ { 0x19D5, 5 },
+ { 0x19D6, 6 },
+ { 0x19D7, 7 },
+ { 0x19D8, 8 },
+ { 0x19D9, 9 },
+ { 0x1B50, 0 },
+ { 0x1B51, 1 },
+ { 0x1B52, 2 },
+ { 0x1B53, 3 },
+ { 0x1B54, 4 },
+ { 0x1B55, 5 },
+ { 0x1B56, 6 },
+ { 0x1B57, 7 },
+ { 0x1B58, 8 },
+ { 0x1B59, 9 },
+ { 0x1BB0, 0 },
+ { 0x1BB1, 1 },
+ { 0x1BB2, 2 },
+ { 0x1BB3, 3 },
+ { 0x1BB4, 4 },
+ { 0x1BB5, 5 },
+ { 0x1BB6, 6 },
+ { 0x1BB7, 7 },
+ { 0x1BB8, 8 },
+ { 0x1BB9, 9 },
+ { 0x1C40, 0 },
+ { 0x1C41, 1 },
+ { 0x1C42, 2 },
+ { 0x1C43, 3 },
+ { 0x1C44, 4 },
+ { 0x1C45, 5 },
+ { 0x1C46, 6 },
+ { 0x1C47, 7 },
+ { 0x1C48, 8 },
+ { 0x1C49, 9 },
+ { 0x1C50, 0 },
+ { 0x1C51, 1 },
+ { 0x1C52, 2 },
+ { 0x1C53, 3 },
+ { 0x1C54, 4 },
+ { 0x1C55, 5 },
+ { 0x1C56, 6 },
+ { 0x1C57, 7 },
+ { 0x1C58, 8 },
+ { 0x1C59, 9 },
+ { 0xA620, 0 },
+ { 0xA621, 1 },
+ { 0xA622, 2 },
+ { 0xA623, 3 },
+ { 0xA624, 4 },
+ { 0xA625, 5 },
+ { 0xA626, 6 },
+ { 0xA627, 7 },
+ { 0xA628, 8 },
+ { 0xA629, 9 },
+ { 0xA8D0, 0 },
+ { 0xA8D1, 1 },
+ { 0xA8D2, 2 },
+ { 0xA8D3, 3 },
+ { 0xA8D4, 4 },
+ { 0xA8D5, 5 },
+ { 0xA8D6, 6 },
+ { 0xA8D7, 7 },
+ { 0xA8D8, 8 },
+ { 0xA8D9, 9 },
+ { 0xA900, 0 },
+ { 0xA901, 1 },
+ { 0xA902, 2 },
+ { 0xA903, 3 },
+ { 0xA904, 4 },
+ { 0xA905, 5 },
+ { 0xA906, 6 },
+ { 0xA907, 7 },
+ { 0xA908, 8 },
+ { 0xA909, 9 },
+ { 0xAA50, 0 },
+ { 0xAA51, 1 },
+ { 0xAA52, 2 },
+ { 0xAA53, 3 },
+ { 0xAA54, 4 },
+ { 0xAA55, 5 },
+ { 0xAA56, 6 },
+ { 0xAA57, 7 },
+ { 0xAA58, 8 },
+ { 0xAA59, 9 },
+ { 0xFF10, 0 },
+ { 0xFF11, 1 },
+ { 0xFF12, 2 },
+ { 0xFF13, 3 },
+ { 0xFF14, 4 },
+ { 0xFF15, 5 },
+ { 0xFF16, 6 },
+ { 0xFF17, 7 },
+ { 0xFF18, 8 },
+ { 0xFF19, 9 },
+ { 0x104A0, 0 },
+ { 0x104A1, 1 },
+ { 0x104A2, 2 },
+ { 0x104A3, 3 },
+ { 0x104A4, 4 },
+ { 0x104A5, 5 },
+ { 0x104A6, 6 },
+ { 0x104A7, 7 },
+ { 0x104A8, 8 },
+ { 0x104A9, 9 },
+ { 0x1D7CE, 0 },
+ { 0x1D7CF, 1 },
+ { 0x1D7D0, 2 },
+ { 0x1D7D1, 3 },
+ { 0x1D7D2, 4 },
+ { 0x1D7D3, 5 },
+ { 0x1D7D4, 6 },
+ { 0x1D7D5, 7 },
+ { 0x1D7D6, 8 },
+ { 0x1D7D7, 9 },
+ { 0x1D7D8, 0 },
+ { 0x1D7D9, 1 },
+ { 0x1D7DA, 2 },
+ { 0x1D7DB, 3 },
+ { 0x1D7DC, 4 },
+ { 0x1D7DD, 5 },
+ { 0x1D7DE, 6 },
+ { 0x1D7DF, 7 },
+ { 0x1D7E0, 8 },
+ { 0x1D7E1, 9 },
+ { 0x1D7E2, 0 },
+ { 0x1D7E3, 1 },
+ { 0x1D7E4, 2 },
+ { 0x1D7E5, 3 },
+ { 0x1D7E6, 4 },
+ { 0x1D7E7, 5 },
+ { 0x1D7E8, 6 },
+ { 0x1D7E9, 7 },
+ { 0x1D7EA, 8 },
+ { 0x1D7EB, 9 },
+ { 0x1D7EC, 0 },
+ { 0x1D7ED, 1 },
+ { 0x1D7EE, 2 },
+ { 0x1D7EF, 3 },
+ { 0x1D7F0, 4 },
+ { 0x1D7F1, 5 },
+ { 0x1D7F2, 6 },
+ { 0x1D7F3, 7 },
+ { 0x1D7F4, 8 },
+ { 0x1D7F5, 9 },
+ { 0x1D7F6, 0 },
+ { 0x1D7F7, 1 },
+ { 0x1D7F8, 2 },
+ { 0x1D7F9, 3 },
+ { 0x1D7FA, 4 },
+ { 0x1D7FB, 5 },
+ { 0x1D7FC, 6 },
+ { 0x1D7FD, 7 },
+ { 0x1D7FE, 8 },
+ { 0x1D7FF, 9 }
diff --git a/tests/unictype/test-digit.c b/tests/unictype/test-digit.c
new file mode 100644
index 00000000..efecaaba
--- /dev/null
+++ b/tests/unictype/test-digit.c
@@ -0,0 +1,62 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+#define SIZEOF(a) (sizeof(a) / sizeof(a[0]))
+
+static const struct { unsigned int ch; int value; } mapping[] =
+ {
+#include "test-digit.h"
+ };
+
+int
+main ()
+{
+ unsigned int c;
+ size_t i;
+
+ c = 0;
+ for (i = 0; i < SIZEOF (mapping); i++)
+ {
+ for (; c < mapping[i].ch; c++)
+ ASSERT (uc_digit_value (c) == -1);
+ /* Here c = mapping[i].ch. */
+ ASSERT (uc_digit_value (c) == mapping[i].value);
+ c++;
+ }
+ for (; c < 0x110000; c++)
+ ASSERT (uc_digit_value (c) == -1);
+
+ return 0;
+}
diff --git a/tests/unictype/test-digit.h b/tests/unictype/test-digit.h
new file mode 100644
index 00000000..9902a7fe
--- /dev/null
+++ b/tests/unictype/test-digit.h
@@ -0,0 +1,471 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Digit values of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+ { 0x0030, 0 },
+ { 0x0031, 1 },
+ { 0x0032, 2 },
+ { 0x0033, 3 },
+ { 0x0034, 4 },
+ { 0x0035, 5 },
+ { 0x0036, 6 },
+ { 0x0037, 7 },
+ { 0x0038, 8 },
+ { 0x0039, 9 },
+ { 0x00B2, 2 },
+ { 0x00B3, 3 },
+ { 0x00B9, 1 },
+ { 0x0660, 0 },
+ { 0x0661, 1 },
+ { 0x0662, 2 },
+ { 0x0663, 3 },
+ { 0x0664, 4 },
+ { 0x0665, 5 },
+ { 0x0666, 6 },
+ { 0x0667, 7 },
+ { 0x0668, 8 },
+ { 0x0669, 9 },
+ { 0x06F0, 0 },
+ { 0x06F1, 1 },
+ { 0x06F2, 2 },
+ { 0x06F3, 3 },
+ { 0x06F4, 4 },
+ { 0x06F5, 5 },
+ { 0x06F6, 6 },
+ { 0x06F7, 7 },
+ { 0x06F8, 8 },
+ { 0x06F9, 9 },
+ { 0x07C0, 0 },
+ { 0x07C1, 1 },
+ { 0x07C2, 2 },
+ { 0x07C3, 3 },
+ { 0x07C4, 4 },
+ { 0x07C5, 5 },
+ { 0x07C6, 6 },
+ { 0x07C7, 7 },
+ { 0x07C8, 8 },
+ { 0x07C9, 9 },
+ { 0x0966, 0 },
+ { 0x0967, 1 },
+ { 0x0968, 2 },
+ { 0x0969, 3 },
+ { 0x096A, 4 },
+ { 0x096B, 5 },
+ { 0x096C, 6 },
+ { 0x096D, 7 },
+ { 0x096E, 8 },
+ { 0x096F, 9 },
+ { 0x09E6, 0 },
+ { 0x09E7, 1 },
+ { 0x09E8, 2 },
+ { 0x09E9, 3 },
+ { 0x09EA, 4 },
+ { 0x09EB, 5 },
+ { 0x09EC, 6 },
+ { 0x09ED, 7 },
+ { 0x09EE, 8 },
+ { 0x09EF, 9 },
+ { 0x0A66, 0 },
+ { 0x0A67, 1 },
+ { 0x0A68, 2 },
+ { 0x0A69, 3 },
+ { 0x0A6A, 4 },
+ { 0x0A6B, 5 },
+ { 0x0A6C, 6 },
+ { 0x0A6D, 7 },
+ { 0x0A6E, 8 },
+ { 0x0A6F, 9 },
+ { 0x0AE6, 0 },
+ { 0x0AE7, 1 },
+ { 0x0AE8, 2 },
+ { 0x0AE9, 3 },
+ { 0x0AEA, 4 },
+ { 0x0AEB, 5 },
+ { 0x0AEC, 6 },
+ { 0x0AED, 7 },
+ { 0x0AEE, 8 },
+ { 0x0AEF, 9 },
+ { 0x0B66, 0 },
+ { 0x0B67, 1 },
+ { 0x0B68, 2 },
+ { 0x0B69, 3 },
+ { 0x0B6A, 4 },
+ { 0x0B6B, 5 },
+ { 0x0B6C, 6 },
+ { 0x0B6D, 7 },
+ { 0x0B6E, 8 },
+ { 0x0B6F, 9 },
+ { 0x0BE6, 0 },
+ { 0x0BE7, 1 },
+ { 0x0BE8, 2 },
+ { 0x0BE9, 3 },
+ { 0x0BEA, 4 },
+ { 0x0BEB, 5 },
+ { 0x0BEC, 6 },
+ { 0x0BED, 7 },
+ { 0x0BEE, 8 },
+ { 0x0BEF, 9 },
+ { 0x0C66, 0 },
+ { 0x0C67, 1 },
+ { 0x0C68, 2 },
+ { 0x0C69, 3 },
+ { 0x0C6A, 4 },
+ { 0x0C6B, 5 },
+ { 0x0C6C, 6 },
+ { 0x0C6D, 7 },
+ { 0x0C6E, 8 },
+ { 0x0C6F, 9 },
+ { 0x0CE6, 0 },
+ { 0x0CE7, 1 },
+ { 0x0CE8, 2 },
+ { 0x0CE9, 3 },
+ { 0x0CEA, 4 },
+ { 0x0CEB, 5 },
+ { 0x0CEC, 6 },
+ { 0x0CED, 7 },
+ { 0x0CEE, 8 },
+ { 0x0CEF, 9 },
+ { 0x0D66, 0 },
+ { 0x0D67, 1 },
+ { 0x0D68, 2 },
+ { 0x0D69, 3 },
+ { 0x0D6A, 4 },
+ { 0x0D6B, 5 },
+ { 0x0D6C, 6 },
+ { 0x0D6D, 7 },
+ { 0x0D6E, 8 },
+ { 0x0D6F, 9 },
+ { 0x0E50, 0 },
+ { 0x0E51, 1 },
+ { 0x0E52, 2 },
+ { 0x0E53, 3 },
+ { 0x0E54, 4 },
+ { 0x0E55, 5 },
+ { 0x0E56, 6 },
+ { 0x0E57, 7 },
+ { 0x0E58, 8 },
+ { 0x0E59, 9 },
+ { 0x0ED0, 0 },
+ { 0x0ED1, 1 },
+ { 0x0ED2, 2 },
+ { 0x0ED3, 3 },
+ { 0x0ED4, 4 },
+ { 0x0ED5, 5 },
+ { 0x0ED6, 6 },
+ { 0x0ED7, 7 },
+ { 0x0ED8, 8 },
+ { 0x0ED9, 9 },
+ { 0x0F20, 0 },
+ { 0x0F21, 1 },
+ { 0x0F22, 2 },
+ { 0x0F23, 3 },
+ { 0x0F24, 4 },
+ { 0x0F25, 5 },
+ { 0x0F26, 6 },
+ { 0x0F27, 7 },
+ { 0x0F28, 8 },
+ { 0x0F29, 9 },
+ { 0x1040, 0 },
+ { 0x1041, 1 },
+ { 0x1042, 2 },
+ { 0x1043, 3 },
+ { 0x1044, 4 },
+ { 0x1045, 5 },
+ { 0x1046, 6 },
+ { 0x1047, 7 },
+ { 0x1048, 8 },
+ { 0x1049, 9 },
+ { 0x1090, 0 },
+ { 0x1091, 1 },
+ { 0x1092, 2 },
+ { 0x1093, 3 },
+ { 0x1094, 4 },
+ { 0x1095, 5 },
+ { 0x1096, 6 },
+ { 0x1097, 7 },
+ { 0x1098, 8 },
+ { 0x1099, 9 },
+ { 0x1369, 1 },
+ { 0x136A, 2 },
+ { 0x136B, 3 },
+ { 0x136C, 4 },
+ { 0x136D, 5 },
+ { 0x136E, 6 },
+ { 0x136F, 7 },
+ { 0x1370, 8 },
+ { 0x1371, 9 },
+ { 0x17E0, 0 },
+ { 0x17E1, 1 },
+ { 0x17E2, 2 },
+ { 0x17E3, 3 },
+ { 0x17E4, 4 },
+ { 0x17E5, 5 },
+ { 0x17E6, 6 },
+ { 0x17E7, 7 },
+ { 0x17E8, 8 },
+ { 0x17E9, 9 },
+ { 0x1810, 0 },
+ { 0x1811, 1 },
+ { 0x1812, 2 },
+ { 0x1813, 3 },
+ { 0x1814, 4 },
+ { 0x1815, 5 },
+ { 0x1816, 6 },
+ { 0x1817, 7 },
+ { 0x1818, 8 },
+ { 0x1819, 9 },
+ { 0x1946, 0 },
+ { 0x1947, 1 },
+ { 0x1948, 2 },
+ { 0x1949, 3 },
+ { 0x194A, 4 },
+ { 0x194B, 5 },
+ { 0x194C, 6 },
+ { 0x194D, 7 },
+ { 0x194E, 8 },
+ { 0x194F, 9 },
+ { 0x19D0, 0 },
+ { 0x19D1, 1 },
+ { 0x19D2, 2 },
+ { 0x19D3, 3 },
+ { 0x19D4, 4 },
+ { 0x19D5, 5 },
+ { 0x19D6, 6 },
+ { 0x19D7, 7 },
+ { 0x19D8, 8 },
+ { 0x19D9, 9 },
+ { 0x1B50, 0 },
+ { 0x1B51, 1 },
+ { 0x1B52, 2 },
+ { 0x1B53, 3 },
+ { 0x1B54, 4 },
+ { 0x1B55, 5 },
+ { 0x1B56, 6 },
+ { 0x1B57, 7 },
+ { 0x1B58, 8 },
+ { 0x1B59, 9 },
+ { 0x1BB0, 0 },
+ { 0x1BB1, 1 },
+ { 0x1BB2, 2 },
+ { 0x1BB3, 3 },
+ { 0x1BB4, 4 },
+ { 0x1BB5, 5 },
+ { 0x1BB6, 6 },
+ { 0x1BB7, 7 },
+ { 0x1BB8, 8 },
+ { 0x1BB9, 9 },
+ { 0x1C40, 0 },
+ { 0x1C41, 1 },
+ { 0x1C42, 2 },
+ { 0x1C43, 3 },
+ { 0x1C44, 4 },
+ { 0x1C45, 5 },
+ { 0x1C46, 6 },
+ { 0x1C47, 7 },
+ { 0x1C48, 8 },
+ { 0x1C49, 9 },
+ { 0x1C50, 0 },
+ { 0x1C51, 1 },
+ { 0x1C52, 2 },
+ { 0x1C53, 3 },
+ { 0x1C54, 4 },
+ { 0x1C55, 5 },
+ { 0x1C56, 6 },
+ { 0x1C57, 7 },
+ { 0x1C58, 8 },
+ { 0x1C59, 9 },
+ { 0x2070, 0 },
+ { 0x2074, 4 },
+ { 0x2075, 5 },
+ { 0x2076, 6 },
+ { 0x2077, 7 },
+ { 0x2078, 8 },
+ { 0x2079, 9 },
+ { 0x2080, 0 },
+ { 0x2081, 1 },
+ { 0x2082, 2 },
+ { 0x2083, 3 },
+ { 0x2084, 4 },
+ { 0x2085, 5 },
+ { 0x2086, 6 },
+ { 0x2087, 7 },
+ { 0x2088, 8 },
+ { 0x2089, 9 },
+ { 0x2460, 1 },
+ { 0x2461, 2 },
+ { 0x2462, 3 },
+ { 0x2463, 4 },
+ { 0x2464, 5 },
+ { 0x2465, 6 },
+ { 0x2466, 7 },
+ { 0x2467, 8 },
+ { 0x2468, 9 },
+ { 0x2474, 1 },
+ { 0x2475, 2 },
+ { 0x2476, 3 },
+ { 0x2477, 4 },
+ { 0x2478, 5 },
+ { 0x2479, 6 },
+ { 0x247A, 7 },
+ { 0x247B, 8 },
+ { 0x247C, 9 },
+ { 0x2488, 1 },
+ { 0x2489, 2 },
+ { 0x248A, 3 },
+ { 0x248B, 4 },
+ { 0x248C, 5 },
+ { 0x248D, 6 },
+ { 0x248E, 7 },
+ { 0x248F, 8 },
+ { 0x2490, 9 },
+ { 0x24EA, 0 },
+ { 0x24F5, 1 },
+ { 0x24F6, 2 },
+ { 0x24F7, 3 },
+ { 0x24F8, 4 },
+ { 0x24F9, 5 },
+ { 0x24FA, 6 },
+ { 0x24FB, 7 },
+ { 0x24FC, 8 },
+ { 0x24FD, 9 },
+ { 0x24FF, 0 },
+ { 0x2776, 1 },
+ { 0x2777, 2 },
+ { 0x2778, 3 },
+ { 0x2779, 4 },
+ { 0x277A, 5 },
+ { 0x277B, 6 },
+ { 0x277C, 7 },
+ { 0x277D, 8 },
+ { 0x277E, 9 },
+ { 0x2780, 1 },
+ { 0x2781, 2 },
+ { 0x2782, 3 },
+ { 0x2783, 4 },
+ { 0x2784, 5 },
+ { 0x2785, 6 },
+ { 0x2786, 7 },
+ { 0x2787, 8 },
+ { 0x2788, 9 },
+ { 0x278A, 1 },
+ { 0x278B, 2 },
+ { 0x278C, 3 },
+ { 0x278D, 4 },
+ { 0x278E, 5 },
+ { 0x278F, 6 },
+ { 0x2790, 7 },
+ { 0x2791, 8 },
+ { 0x2792, 9 },
+ { 0xA620, 0 },
+ { 0xA621, 1 },
+ { 0xA622, 2 },
+ { 0xA623, 3 },
+ { 0xA624, 4 },
+ { 0xA625, 5 },
+ { 0xA626, 6 },
+ { 0xA627, 7 },
+ { 0xA628, 8 },
+ { 0xA629, 9 },
+ { 0xA8D0, 0 },
+ { 0xA8D1, 1 },
+ { 0xA8D2, 2 },
+ { 0xA8D3, 3 },
+ { 0xA8D4, 4 },
+ { 0xA8D5, 5 },
+ { 0xA8D6, 6 },
+ { 0xA8D7, 7 },
+ { 0xA8D8, 8 },
+ { 0xA8D9, 9 },
+ { 0xA900, 0 },
+ { 0xA901, 1 },
+ { 0xA902, 2 },
+ { 0xA903, 3 },
+ { 0xA904, 4 },
+ { 0xA905, 5 },
+ { 0xA906, 6 },
+ { 0xA907, 7 },
+ { 0xA908, 8 },
+ { 0xA909, 9 },
+ { 0xAA50, 0 },
+ { 0xAA51, 1 },
+ { 0xAA52, 2 },
+ { 0xAA53, 3 },
+ { 0xAA54, 4 },
+ { 0xAA55, 5 },
+ { 0xAA56, 6 },
+ { 0xAA57, 7 },
+ { 0xAA58, 8 },
+ { 0xAA59, 9 },
+ { 0xFF10, 0 },
+ { 0xFF11, 1 },
+ { 0xFF12, 2 },
+ { 0xFF13, 3 },
+ { 0xFF14, 4 },
+ { 0xFF15, 5 },
+ { 0xFF16, 6 },
+ { 0xFF17, 7 },
+ { 0xFF18, 8 },
+ { 0xFF19, 9 },
+ { 0x104A0, 0 },
+ { 0x104A1, 1 },
+ { 0x104A2, 2 },
+ { 0x104A3, 3 },
+ { 0x104A4, 4 },
+ { 0x104A5, 5 },
+ { 0x104A6, 6 },
+ { 0x104A7, 7 },
+ { 0x104A8, 8 },
+ { 0x104A9, 9 },
+ { 0x10A40, 1 },
+ { 0x10A41, 2 },
+ { 0x10A42, 3 },
+ { 0x10A43, 4 },
+ { 0x1D7CE, 0 },
+ { 0x1D7CF, 1 },
+ { 0x1D7D0, 2 },
+ { 0x1D7D1, 3 },
+ { 0x1D7D2, 4 },
+ { 0x1D7D3, 5 },
+ { 0x1D7D4, 6 },
+ { 0x1D7D5, 7 },
+ { 0x1D7D6, 8 },
+ { 0x1D7D7, 9 },
+ { 0x1D7D8, 0 },
+ { 0x1D7D9, 1 },
+ { 0x1D7DA, 2 },
+ { 0x1D7DB, 3 },
+ { 0x1D7DC, 4 },
+ { 0x1D7DD, 5 },
+ { 0x1D7DE, 6 },
+ { 0x1D7DF, 7 },
+ { 0x1D7E0, 8 },
+ { 0x1D7E1, 9 },
+ { 0x1D7E2, 0 },
+ { 0x1D7E3, 1 },
+ { 0x1D7E4, 2 },
+ { 0x1D7E5, 3 },
+ { 0x1D7E6, 4 },
+ { 0x1D7E7, 5 },
+ { 0x1D7E8, 6 },
+ { 0x1D7E9, 7 },
+ { 0x1D7EA, 8 },
+ { 0x1D7EB, 9 },
+ { 0x1D7EC, 0 },
+ { 0x1D7ED, 1 },
+ { 0x1D7EE, 2 },
+ { 0x1D7EF, 3 },
+ { 0x1D7F0, 4 },
+ { 0x1D7F1, 5 },
+ { 0x1D7F2, 6 },
+ { 0x1D7F3, 7 },
+ { 0x1D7F4, 8 },
+ { 0x1D7F5, 9 },
+ { 0x1D7F6, 0 },
+ { 0x1D7F7, 1 },
+ { 0x1D7F8, 2 },
+ { 0x1D7F9, 3 },
+ { 0x1D7FA, 4 },
+ { 0x1D7FB, 5 },
+ { 0x1D7FC, 6 },
+ { 0x1D7FD, 7 },
+ { 0x1D7FE, 8 },
+ { 0x1D7FF, 9 }
diff --git a/tests/unictype/test-mirror.c b/tests/unictype/test-mirror.c
new file mode 100644
index 00000000..fb4402ff
--- /dev/null
+++ b/tests/unictype/test-mirror.c
@@ -0,0 +1,53 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ ucs4_t mirrored;
+
+ ASSERT (uc_mirror_char ('(', &mirrored) && mirrored == ')');
+ ASSERT (uc_mirror_char (')', &mirrored) && mirrored == '(');
+ ASSERT (uc_mirror_char ('<', &mirrored) && mirrored == '>');
+ ASSERT (uc_mirror_char ('>', &mirrored) && mirrored == '<');
+ ASSERT (uc_mirror_char ('[', &mirrored) && mirrored == ']');
+ ASSERT (uc_mirror_char (']', &mirrored) && mirrored == '[');
+ ASSERT (uc_mirror_char ('{', &mirrored) && mirrored == '}');
+ ASSERT (uc_mirror_char ('}', &mirrored) && mirrored == '{');
+ ASSERT (!uc_mirror_char ('X', &mirrored));
+
+ return 0;
+}
diff --git a/tests/unictype/test-numeric.c b/tests/unictype/test-numeric.c
new file mode 100644
index 00000000..5bca3638
--- /dev/null
+++ b/tests/unictype/test-numeric.c
@@ -0,0 +1,72 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+#define SIZEOF(a) (sizeof(a) / sizeof(a[0]))
+
+static const struct { unsigned int ch; int numerator; int denominator; }
+ mapping[] =
+ {
+#include "test-numeric.h"
+ };
+
+int
+main ()
+{
+ unsigned int c;
+ uc_fraction_t value;
+ size_t i;
+
+ c = 0;
+ for (i = 0; i < SIZEOF (mapping); i++)
+ {
+ for (; c < mapping[i].ch; c++)
+ {
+ value = uc_numeric_value (c);
+ ASSERT (value.numerator == 0 && value.denominator == 0);
+ }
+ /* Here c = mapping[i].ch. */
+ value = uc_numeric_value (c);
+ ASSERT (value.numerator == mapping[i].numerator
+ && value.denominator == mapping[i].denominator);
+ c++;
+ }
+ for (; c < 0x110000; c++)
+ {
+ value = uc_numeric_value (c);
+ ASSERT (value.numerator == 0 && value.denominator == 0);
+ }
+
+ return 0;
+}
diff --git a/tests/unictype/test-numeric.h b/tests/unictype/test-numeric.h
new file mode 100644
index 00000000..32679424
--- /dev/null
+++ b/tests/unictype/test-numeric.h
@@ -0,0 +1,939 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Numeric values of Unicode characters. */
+/* Generated automatically by gen-ctype.c for Unicode 5.1.0. */
+ { 0x0030, 0, 1 },
+ { 0x0031, 1, 1 },
+ { 0x0032, 2, 1 },
+ { 0x0033, 3, 1 },
+ { 0x0034, 4, 1 },
+ { 0x0035, 5, 1 },
+ { 0x0036, 6, 1 },
+ { 0x0037, 7, 1 },
+ { 0x0038, 8, 1 },
+ { 0x0039, 9, 1 },
+ { 0x00B2, 2, 1 },
+ { 0x00B3, 3, 1 },
+ { 0x00B9, 1, 1 },
+ { 0x00BC, 1, 4 },
+ { 0x00BD, 1, 2 },
+ { 0x00BE, 3, 4 },
+ { 0x0660, 0, 1 },
+ { 0x0661, 1, 1 },
+ { 0x0662, 2, 1 },
+ { 0x0663, 3, 1 },
+ { 0x0664, 4, 1 },
+ { 0x0665, 5, 1 },
+ { 0x0666, 6, 1 },
+ { 0x0667, 7, 1 },
+ { 0x0668, 8, 1 },
+ { 0x0669, 9, 1 },
+ { 0x06F0, 0, 1 },
+ { 0x06F1, 1, 1 },
+ { 0x06F2, 2, 1 },
+ { 0x06F3, 3, 1 },
+ { 0x06F4, 4, 1 },
+ { 0x06F5, 5, 1 },
+ { 0x06F6, 6, 1 },
+ { 0x06F7, 7, 1 },
+ { 0x06F8, 8, 1 },
+ { 0x06F9, 9, 1 },
+ { 0x07C0, 0, 1 },
+ { 0x07C1, 1, 1 },
+ { 0x07C2, 2, 1 },
+ { 0x07C3, 3, 1 },
+ { 0x07C4, 4, 1 },
+ { 0x07C5, 5, 1 },
+ { 0x07C6, 6, 1 },
+ { 0x07C7, 7, 1 },
+ { 0x07C8, 8, 1 },
+ { 0x07C9, 9, 1 },
+ { 0x0966, 0, 1 },
+ { 0x0967, 1, 1 },
+ { 0x0968, 2, 1 },
+ { 0x0969, 3, 1 },
+ { 0x096A, 4, 1 },
+ { 0x096B, 5, 1 },
+ { 0x096C, 6, 1 },
+ { 0x096D, 7, 1 },
+ { 0x096E, 8, 1 },
+ { 0x096F, 9, 1 },
+ { 0x09E6, 0, 1 },
+ { 0x09E7, 1, 1 },
+ { 0x09E8, 2, 1 },
+ { 0x09E9, 3, 1 },
+ { 0x09EA, 4, 1 },
+ { 0x09EB, 5, 1 },
+ { 0x09EC, 6, 1 },
+ { 0x09ED, 7, 1 },
+ { 0x09EE, 8, 1 },
+ { 0x09EF, 9, 1 },
+ { 0x09F4, 1, 1 },
+ { 0x09F5, 2, 1 },
+ { 0x09F6, 3, 1 },
+ { 0x09F7, 4, 1 },
+ { 0x09F9, 16, 1 },
+ { 0x0A66, 0, 1 },
+ { 0x0A67, 1, 1 },
+ { 0x0A68, 2, 1 },
+ { 0x0A69, 3, 1 },
+ { 0x0A6A, 4, 1 },
+ { 0x0A6B, 5, 1 },
+ { 0x0A6C, 6, 1 },
+ { 0x0A6D, 7, 1 },
+ { 0x0A6E, 8, 1 },
+ { 0x0A6F, 9, 1 },
+ { 0x0AE6, 0, 1 },
+ { 0x0AE7, 1, 1 },
+ { 0x0AE8, 2, 1 },
+ { 0x0AE9, 3, 1 },
+ { 0x0AEA, 4, 1 },
+ { 0x0AEB, 5, 1 },
+ { 0x0AEC, 6, 1 },
+ { 0x0AED, 7, 1 },
+ { 0x0AEE, 8, 1 },
+ { 0x0AEF, 9, 1 },
+ { 0x0B66, 0, 1 },
+ { 0x0B67, 1, 1 },
+ { 0x0B68, 2, 1 },
+ { 0x0B69, 3, 1 },
+ { 0x0B6A, 4, 1 },
+ { 0x0B6B, 5, 1 },
+ { 0x0B6C, 6, 1 },
+ { 0x0B6D, 7, 1 },
+ { 0x0B6E, 8, 1 },
+ { 0x0B6F, 9, 1 },
+ { 0x0BE6, 0, 1 },
+ { 0x0BE7, 1, 1 },
+ { 0x0BE8, 2, 1 },
+ { 0x0BE9, 3, 1 },
+ { 0x0BEA, 4, 1 },
+ { 0x0BEB, 5, 1 },
+ { 0x0BEC, 6, 1 },
+ { 0x0BED, 7, 1 },
+ { 0x0BEE, 8, 1 },
+ { 0x0BEF, 9, 1 },
+ { 0x0BF0, 10, 1 },
+ { 0x0BF1, 100, 1 },
+ { 0x0BF2, 1000, 1 },
+ { 0x0C66, 0, 1 },
+ { 0x0C67, 1, 1 },
+ { 0x0C68, 2, 1 },
+ { 0x0C69, 3, 1 },
+ { 0x0C6A, 4, 1 },
+ { 0x0C6B, 5, 1 },
+ { 0x0C6C, 6, 1 },
+ { 0x0C6D, 7, 1 },
+ { 0x0C6E, 8, 1 },
+ { 0x0C6F, 9, 1 },
+ { 0x0C78, 0, 1 },
+ { 0x0C79, 1, 1 },
+ { 0x0C7A, 2, 1 },
+ { 0x0C7B, 3, 1 },
+ { 0x0C7C, 1, 1 },
+ { 0x0C7D, 2, 1 },
+ { 0x0C7E, 3, 1 },
+ { 0x0CE6, 0, 1 },
+ { 0x0CE7, 1, 1 },
+ { 0x0CE8, 2, 1 },
+ { 0x0CE9, 3, 1 },
+ { 0x0CEA, 4, 1 },
+ { 0x0CEB, 5, 1 },
+ { 0x0CEC, 6, 1 },
+ { 0x0CED, 7, 1 },
+ { 0x0CEE, 8, 1 },
+ { 0x0CEF, 9, 1 },
+ { 0x0D66, 0, 1 },
+ { 0x0D67, 1, 1 },
+ { 0x0D68, 2, 1 },
+ { 0x0D69, 3, 1 },
+ { 0x0D6A, 4, 1 },
+ { 0x0D6B, 5, 1 },
+ { 0x0D6C, 6, 1 },
+ { 0x0D6D, 7, 1 },
+ { 0x0D6E, 8, 1 },
+ { 0x0D6F, 9, 1 },
+ { 0x0D70, 10, 1 },
+ { 0x0D71, 100, 1 },
+ { 0x0D72, 1000, 1 },
+ { 0x0D73, 1, 4 },
+ { 0x0D74, 1, 2 },
+ { 0x0D75, 3, 4 },
+ { 0x0E50, 0, 1 },
+ { 0x0E51, 1, 1 },
+ { 0x0E52, 2, 1 },
+ { 0x0E53, 3, 1 },
+ { 0x0E54, 4, 1 },
+ { 0x0E55, 5, 1 },
+ { 0x0E56, 6, 1 },
+ { 0x0E57, 7, 1 },
+ { 0x0E58, 8, 1 },
+ { 0x0E59, 9, 1 },
+ { 0x0ED0, 0, 1 },
+ { 0x0ED1, 1, 1 },
+ { 0x0ED2, 2, 1 },
+ { 0x0ED3, 3, 1 },
+ { 0x0ED4, 4, 1 },
+ { 0x0ED5, 5, 1 },
+ { 0x0ED6, 6, 1 },
+ { 0x0ED7, 7, 1 },
+ { 0x0ED8, 8, 1 },
+ { 0x0ED9, 9, 1 },
+ { 0x0F20, 0, 1 },
+ { 0x0F21, 1, 1 },
+ { 0x0F22, 2, 1 },
+ { 0x0F23, 3, 1 },
+ { 0x0F24, 4, 1 },
+ { 0x0F25, 5, 1 },
+ { 0x0F26, 6, 1 },
+ { 0x0F27, 7, 1 },
+ { 0x0F28, 8, 1 },
+ { 0x0F29, 9, 1 },
+ { 0x0F2A, 1, 2 },
+ { 0x0F2B, 3, 2 },
+ { 0x0F2C, 5, 2 },
+ { 0x0F2D, 7, 2 },
+ { 0x0F2E, 9, 2 },
+ { 0x0F2F, 11, 2 },
+ { 0x0F30, 13, 2 },
+ { 0x0F31, 15, 2 },
+ { 0x0F32, 17, 2 },
+ { 0x0F33, -1, 2 },
+ { 0x1040, 0, 1 },
+ { 0x1041, 1, 1 },
+ { 0x1042, 2, 1 },
+ { 0x1043, 3, 1 },
+ { 0x1044, 4, 1 },
+ { 0x1045, 5, 1 },
+ { 0x1046, 6, 1 },
+ { 0x1047, 7, 1 },
+ { 0x1048, 8, 1 },
+ { 0x1049, 9, 1 },
+ { 0x1090, 0, 1 },
+ { 0x1091, 1, 1 },
+ { 0x1092, 2, 1 },
+ { 0x1093, 3, 1 },
+ { 0x1094, 4, 1 },
+ { 0x1095, 5, 1 },
+ { 0x1096, 6, 1 },
+ { 0x1097, 7, 1 },
+ { 0x1098, 8, 1 },
+ { 0x1099, 9, 1 },
+ { 0x1369, 1, 1 },
+ { 0x136A, 2, 1 },
+ { 0x136B, 3, 1 },
+ { 0x136C, 4, 1 },
+ { 0x136D, 5, 1 },
+ { 0x136E, 6, 1 },
+ { 0x136F, 7, 1 },
+ { 0x1370, 8, 1 },
+ { 0x1371, 9, 1 },
+ { 0x1372, 10, 1 },
+ { 0x1373, 20, 1 },
+ { 0x1374, 30, 1 },
+ { 0x1375, 40, 1 },
+ { 0x1376, 50, 1 },
+ { 0x1377, 60, 1 },
+ { 0x1378, 70, 1 },
+ { 0x1379, 80, 1 },
+ { 0x137A, 90, 1 },
+ { 0x137B, 100, 1 },
+ { 0x137C, 10000, 1 },
+ { 0x16EE, 17, 1 },
+ { 0x16EF, 18, 1 },
+ { 0x16F0, 19, 1 },
+ { 0x17E0, 0, 1 },
+ { 0x17E1, 1, 1 },
+ { 0x17E2, 2, 1 },
+ { 0x17E3, 3, 1 },
+ { 0x17E4, 4, 1 },
+ { 0x17E5, 5, 1 },
+ { 0x17E6, 6, 1 },
+ { 0x17E7, 7, 1 },
+ { 0x17E8, 8, 1 },
+ { 0x17E9, 9, 1 },
+ { 0x17F0, 0, 1 },
+ { 0x17F1, 1, 1 },
+ { 0x17F2, 2, 1 },
+ { 0x17F3, 3, 1 },
+ { 0x17F4, 4, 1 },
+ { 0x17F5, 5, 1 },
+ { 0x17F6, 6, 1 },
+ { 0x17F7, 7, 1 },
+ { 0x17F8, 8, 1 },
+ { 0x17F9, 9, 1 },
+ { 0x1810, 0, 1 },
+ { 0x1811, 1, 1 },
+ { 0x1812, 2, 1 },
+ { 0x1813, 3, 1 },
+ { 0x1814, 4, 1 },
+ { 0x1815, 5, 1 },
+ { 0x1816, 6, 1 },
+ { 0x1817, 7, 1 },
+ { 0x1818, 8, 1 },
+ { 0x1819, 9, 1 },
+ { 0x1946, 0, 1 },
+ { 0x1947, 1, 1 },
+ { 0x1948, 2, 1 },
+ { 0x1949, 3, 1 },
+ { 0x194A, 4, 1 },
+ { 0x194B, 5, 1 },
+ { 0x194C, 6, 1 },
+ { 0x194D, 7, 1 },
+ { 0x194E, 8, 1 },
+ { 0x194F, 9, 1 },
+ { 0x19D0, 0, 1 },
+ { 0x19D1, 1, 1 },
+ { 0x19D2, 2, 1 },
+ { 0x19D3, 3, 1 },
+ { 0x19D4, 4, 1 },
+ { 0x19D5, 5, 1 },
+ { 0x19D6, 6, 1 },
+ { 0x19D7, 7, 1 },
+ { 0x19D8, 8, 1 },
+ { 0x19D9, 9, 1 },
+ { 0x1B50, 0, 1 },
+ { 0x1B51, 1, 1 },
+ { 0x1B52, 2, 1 },
+ { 0x1B53, 3, 1 },
+ { 0x1B54, 4, 1 },
+ { 0x1B55, 5, 1 },
+ { 0x1B56, 6, 1 },
+ { 0x1B57, 7, 1 },
+ { 0x1B58, 8, 1 },
+ { 0x1B59, 9, 1 },
+ { 0x1BB0, 0, 1 },
+ { 0x1BB1, 1, 1 },
+ { 0x1BB2, 2, 1 },
+ { 0x1BB3, 3, 1 },
+ { 0x1BB4, 4, 1 },
+ { 0x1BB5, 5, 1 },
+ { 0x1BB6, 6, 1 },
+ { 0x1BB7, 7, 1 },
+ { 0x1BB8, 8, 1 },
+ { 0x1BB9, 9, 1 },
+ { 0x1C40, 0, 1 },
+ { 0x1C41, 1, 1 },
+ { 0x1C42, 2, 1 },
+ { 0x1C43, 3, 1 },
+ { 0x1C44, 4, 1 },
+ { 0x1C45, 5, 1 },
+ { 0x1C46, 6, 1 },
+ { 0x1C47, 7, 1 },
+ { 0x1C48, 8, 1 },
+ { 0x1C49, 9, 1 },
+ { 0x1C50, 0, 1 },
+ { 0x1C51, 1, 1 },
+ { 0x1C52, 2, 1 },
+ { 0x1C53, 3, 1 },
+ { 0x1C54, 4, 1 },
+ { 0x1C55, 5, 1 },
+ { 0x1C56, 6, 1 },
+ { 0x1C57, 7, 1 },
+ { 0x1C58, 8, 1 },
+ { 0x1C59, 9, 1 },
+ { 0x2070, 0, 1 },
+ { 0x2074, 4, 1 },
+ { 0x2075, 5, 1 },
+ { 0x2076, 6, 1 },
+ { 0x2077, 7, 1 },
+ { 0x2078, 8, 1 },
+ { 0x2079, 9, 1 },
+ { 0x2080, 0, 1 },
+ { 0x2081, 1, 1 },
+ { 0x2082, 2, 1 },
+ { 0x2083, 3, 1 },
+ { 0x2084, 4, 1 },
+ { 0x2085, 5, 1 },
+ { 0x2086, 6, 1 },
+ { 0x2087, 7, 1 },
+ { 0x2088, 8, 1 },
+ { 0x2089, 9, 1 },
+ { 0x2153, 1, 3 },
+ { 0x2154, 2, 3 },
+ { 0x2155, 1, 5 },
+ { 0x2156, 2, 5 },
+ { 0x2157, 3, 5 },
+ { 0x2158, 4, 5 },
+ { 0x2159, 1, 6 },
+ { 0x215A, 5, 6 },
+ { 0x215B, 1, 8 },
+ { 0x215C, 3, 8 },
+ { 0x215D, 5, 8 },
+ { 0x215E, 7, 8 },
+ { 0x215F, 1, 1 },
+ { 0x2160, 1, 1 },
+ { 0x2161, 2, 1 },
+ { 0x2162, 3, 1 },
+ { 0x2163, 4, 1 },
+ { 0x2164, 5, 1 },
+ { 0x2165, 6, 1 },
+ { 0x2166, 7, 1 },
+ { 0x2167, 8, 1 },
+ { 0x2168, 9, 1 },
+ { 0x2169, 10, 1 },
+ { 0x216A, 11, 1 },
+ { 0x216B, 12, 1 },
+ { 0x216C, 50, 1 },
+ { 0x216D, 100, 1 },
+ { 0x216E, 500, 1 },
+ { 0x216F, 1000, 1 },
+ { 0x2170, 1, 1 },
+ { 0x2171, 2, 1 },
+ { 0x2172, 3, 1 },
+ { 0x2173, 4, 1 },
+ { 0x2174, 5, 1 },
+ { 0x2175, 6, 1 },
+ { 0x2176, 7, 1 },
+ { 0x2177, 8, 1 },
+ { 0x2178, 9, 1 },
+ { 0x2179, 10, 1 },
+ { 0x217A, 11, 1 },
+ { 0x217B, 12, 1 },
+ { 0x217C, 50, 1 },
+ { 0x217D, 100, 1 },
+ { 0x217E, 500, 1 },
+ { 0x217F, 1000, 1 },
+ { 0x2180, 1000, 1 },
+ { 0x2181, 5000, 1 },
+ { 0x2182, 10000, 1 },
+ { 0x2185, 6, 1 },
+ { 0x2186, 50, 1 },
+ { 0x2187, 50000, 1 },
+ { 0x2188, 100000, 1 },
+ { 0x2460, 1, 1 },
+ { 0x2461, 2, 1 },
+ { 0x2462, 3, 1 },
+ { 0x2463, 4, 1 },
+ { 0x2464, 5, 1 },
+ { 0x2465, 6, 1 },
+ { 0x2466, 7, 1 },
+ { 0x2467, 8, 1 },
+ { 0x2468, 9, 1 },
+ { 0x2469, 10, 1 },
+ { 0x246A, 11, 1 },
+ { 0x246B, 12, 1 },
+ { 0x246C, 13, 1 },
+ { 0x246D, 14, 1 },
+ { 0x246E, 15, 1 },
+ { 0x246F, 16, 1 },
+ { 0x2470, 17, 1 },
+ { 0x2471, 18, 1 },
+ { 0x2472, 19, 1 },
+ { 0x2473, 20, 1 },
+ { 0x2474, 1, 1 },
+ { 0x2475, 2, 1 },
+ { 0x2476, 3, 1 },
+ { 0x2477, 4, 1 },
+ { 0x2478, 5, 1 },
+ { 0x2479, 6, 1 },
+ { 0x247A, 7, 1 },
+ { 0x247B, 8, 1 },
+ { 0x247C, 9, 1 },
+ { 0x247D, 10, 1 },
+ { 0x247E, 11, 1 },
+ { 0x247F, 12, 1 },
+ { 0x2480, 13, 1 },
+ { 0x2481, 14, 1 },
+ { 0x2482, 15, 1 },
+ { 0x2483, 16, 1 },
+ { 0x2484, 17, 1 },
+ { 0x2485, 18, 1 },
+ { 0x2486, 19, 1 },
+ { 0x2487, 20, 1 },
+ { 0x2488, 1, 1 },
+ { 0x2489, 2, 1 },
+ { 0x248A, 3, 1 },
+ { 0x248B, 4, 1 },
+ { 0x248C, 5, 1 },
+ { 0x248D, 6, 1 },
+ { 0x248E, 7, 1 },
+ { 0x248F, 8, 1 },
+ { 0x2490, 9, 1 },
+ { 0x2491, 10, 1 },
+ { 0x2492, 11, 1 },
+ { 0x2493, 12, 1 },
+ { 0x2494, 13, 1 },
+ { 0x2495, 14, 1 },
+ { 0x2496, 15, 1 },
+ { 0x2497, 16, 1 },
+ { 0x2498, 17, 1 },
+ { 0x2499, 18, 1 },
+ { 0x249A, 19, 1 },
+ { 0x249B, 20, 1 },
+ { 0x24EA, 0, 1 },
+ { 0x24EB, 11, 1 },
+ { 0x24EC, 12, 1 },
+ { 0x24ED, 13, 1 },
+ { 0x24EE, 14, 1 },
+ { 0x24EF, 15, 1 },
+ { 0x24F0, 16, 1 },
+ { 0x24F1, 17, 1 },
+ { 0x24F2, 18, 1 },
+ { 0x24F3, 19, 1 },
+ { 0x24F4, 20, 1 },
+ { 0x24F5, 1, 1 },
+ { 0x24F6, 2, 1 },
+ { 0x24F7, 3, 1 },
+ { 0x24F8, 4, 1 },
+ { 0x24F9, 5, 1 },
+ { 0x24FA, 6, 1 },
+ { 0x24FB, 7, 1 },
+ { 0x24FC, 8, 1 },
+ { 0x24FD, 9, 1 },
+ { 0x24FE, 10, 1 },
+ { 0x24FF, 0, 1 },
+ { 0x2776, 1, 1 },
+ { 0x2777, 2, 1 },
+ { 0x2778, 3, 1 },
+ { 0x2779, 4, 1 },
+ { 0x277A, 5, 1 },
+ { 0x277B, 6, 1 },
+ { 0x277C, 7, 1 },
+ { 0x277D, 8, 1 },
+ { 0x277E, 9, 1 },
+ { 0x277F, 10, 1 },
+ { 0x2780, 1, 1 },
+ { 0x2781, 2, 1 },
+ { 0x2782, 3, 1 },
+ { 0x2783, 4, 1 },
+ { 0x2784, 5, 1 },
+ { 0x2785, 6, 1 },
+ { 0x2786, 7, 1 },
+ { 0x2787, 8, 1 },
+ { 0x2788, 9, 1 },
+ { 0x2789, 10, 1 },
+ { 0x278A, 1, 1 },
+ { 0x278B, 2, 1 },
+ { 0x278C, 3, 1 },
+ { 0x278D, 4, 1 },
+ { 0x278E, 5, 1 },
+ { 0x278F, 6, 1 },
+ { 0x2790, 7, 1 },
+ { 0x2791, 8, 1 },
+ { 0x2792, 9, 1 },
+ { 0x2793, 10, 1 },
+ { 0x2CFD, 1, 2 },
+ { 0x3007, 0, 1 },
+ { 0x3021, 1, 1 },
+ { 0x3022, 2, 1 },
+ { 0x3023, 3, 1 },
+ { 0x3024, 4, 1 },
+ { 0x3025, 5, 1 },
+ { 0x3026, 6, 1 },
+ { 0x3027, 7, 1 },
+ { 0x3028, 8, 1 },
+ { 0x3029, 9, 1 },
+ { 0x3038, 10, 1 },
+ { 0x3039, 20, 1 },
+ { 0x303A, 30, 1 },
+ { 0x3192, 1, 1 },
+ { 0x3193, 2, 1 },
+ { 0x3194, 3, 1 },
+ { 0x3195, 4, 1 },
+ { 0x3220, 1, 1 },
+ { 0x3221, 2, 1 },
+ { 0x3222, 3, 1 },
+ { 0x3223, 4, 1 },
+ { 0x3224, 5, 1 },
+ { 0x3225, 6, 1 },
+ { 0x3226, 7, 1 },
+ { 0x3227, 8, 1 },
+ { 0x3228, 9, 1 },
+ { 0x3229, 10, 1 },
+ { 0x3251, 21, 1 },
+ { 0x3252, 22, 1 },
+ { 0x3253, 23, 1 },
+ { 0x3254, 24, 1 },
+ { 0x3255, 25, 1 },
+ { 0x3256, 26, 1 },
+ { 0x3257, 27, 1 },
+ { 0x3258, 28, 1 },
+ { 0x3259, 29, 1 },
+ { 0x325A, 30, 1 },
+ { 0x325B, 31, 1 },
+ { 0x325C, 32, 1 },
+ { 0x325D, 33, 1 },
+ { 0x325E, 34, 1 },
+ { 0x325F, 35, 1 },
+ { 0x3280, 1, 1 },
+ { 0x3281, 2, 1 },
+ { 0x3282, 3, 1 },
+ { 0x3283, 4, 1 },
+ { 0x3284, 5, 1 },
+ { 0x3285, 6, 1 },
+ { 0x3286, 7, 1 },
+ { 0x3287, 8, 1 },
+ { 0x3288, 9, 1 },
+ { 0x3289, 10, 1 },
+ { 0x32B1, 36, 1 },
+ { 0x32B2, 37, 1 },
+ { 0x32B3, 38, 1 },
+ { 0x32B4, 39, 1 },
+ { 0x32B5, 40, 1 },
+ { 0x32B6, 41, 1 },
+ { 0x32B7, 42, 1 },
+ { 0x32B8, 43, 1 },
+ { 0x32B9, 44, 1 },
+ { 0x32BA, 45, 1 },
+ { 0x32BB, 46, 1 },
+ { 0x32BC, 47, 1 },
+ { 0x32BD, 48, 1 },
+ { 0x32BE, 49, 1 },
+ { 0x32BF, 50, 1 },
+ { 0xA620, 0, 1 },
+ { 0xA621, 1, 1 },
+ { 0xA622, 2, 1 },
+ { 0xA623, 3, 1 },
+ { 0xA624, 4, 1 },
+ { 0xA625, 5, 1 },
+ { 0xA626, 6, 1 },
+ { 0xA627, 7, 1 },
+ { 0xA628, 8, 1 },
+ { 0xA629, 9, 1 },
+ { 0xA8D0, 0, 1 },
+ { 0xA8D1, 1, 1 },
+ { 0xA8D2, 2, 1 },
+ { 0xA8D3, 3, 1 },
+ { 0xA8D4, 4, 1 },
+ { 0xA8D5, 5, 1 },
+ { 0xA8D6, 6, 1 },
+ { 0xA8D7, 7, 1 },
+ { 0xA8D8, 8, 1 },
+ { 0xA8D9, 9, 1 },
+ { 0xA900, 0, 1 },
+ { 0xA901, 1, 1 },
+ { 0xA902, 2, 1 },
+ { 0xA903, 3, 1 },
+ { 0xA904, 4, 1 },
+ { 0xA905, 5, 1 },
+ { 0xA906, 6, 1 },
+ { 0xA907, 7, 1 },
+ { 0xA908, 8, 1 },
+ { 0xA909, 9, 1 },
+ { 0xAA50, 0, 1 },
+ { 0xAA51, 1, 1 },
+ { 0xAA52, 2, 1 },
+ { 0xAA53, 3, 1 },
+ { 0xAA54, 4, 1 },
+ { 0xAA55, 5, 1 },
+ { 0xAA56, 6, 1 },
+ { 0xAA57, 7, 1 },
+ { 0xAA58, 8, 1 },
+ { 0xAA59, 9, 1 },
+ { 0xF96B, 3, 1 },
+ { 0xF973, 10, 1 },
+ { 0xF978, 2, 1 },
+ { 0xF9B2, 0, 1 },
+ { 0xF9D1, 6, 1 },
+ { 0xF9D3, 6, 1 },
+ { 0xF9FD, 10, 1 },
+ { 0xFF10, 0, 1 },
+ { 0xFF11, 1, 1 },
+ { 0xFF12, 2, 1 },
+ { 0xFF13, 3, 1 },
+ { 0xFF14, 4, 1 },
+ { 0xFF15, 5, 1 },
+ { 0xFF16, 6, 1 },
+ { 0xFF17, 7, 1 },
+ { 0xFF18, 8, 1 },
+ { 0xFF19, 9, 1 },
+ { 0x10107, 1, 1 },
+ { 0x10108, 2, 1 },
+ { 0x10109, 3, 1 },
+ { 0x1010A, 4, 1 },
+ { 0x1010B, 5, 1 },
+ { 0x1010C, 6, 1 },
+ { 0x1010D, 7, 1 },
+ { 0x1010E, 8, 1 },
+ { 0x1010F, 9, 1 },
+ { 0x10110, 10, 1 },
+ { 0x10111, 20, 1 },
+ { 0x10112, 30, 1 },
+ { 0x10113, 40, 1 },
+ { 0x10114, 50, 1 },
+ { 0x10115, 60, 1 },
+ { 0x10116, 70, 1 },
+ { 0x10117, 80, 1 },
+ { 0x10118, 90, 1 },
+ { 0x10119, 100, 1 },
+ { 0x1011A, 200, 1 },
+ { 0x1011B, 300, 1 },
+ { 0x1011C, 400, 1 },
+ { 0x1011D, 500, 1 },
+ { 0x1011E, 600, 1 },
+ { 0x1011F, 700, 1 },
+ { 0x10120, 800, 1 },
+ { 0x10121, 900, 1 },
+ { 0x10122, 1000, 1 },
+ { 0x10123, 2000, 1 },
+ { 0x10124, 3000, 1 },
+ { 0x10125, 4000, 1 },
+ { 0x10126, 5000, 1 },
+ { 0x10127, 6000, 1 },
+ { 0x10128, 7000, 1 },
+ { 0x10129, 8000, 1 },
+ { 0x1012A, 9000, 1 },
+ { 0x1012B, 10000, 1 },
+ { 0x1012C, 20000, 1 },
+ { 0x1012D, 30000, 1 },
+ { 0x1012E, 40000, 1 },
+ { 0x1012F, 50000, 1 },
+ { 0x10130, 60000, 1 },
+ { 0x10131, 70000, 1 },
+ { 0x10132, 80000, 1 },
+ { 0x10133, 90000, 1 },
+ { 0x10140, 1, 4 },
+ { 0x10141, 1, 2 },
+ { 0x10142, 1, 1 },
+ { 0x10143, 5, 1 },
+ { 0x10144, 50, 1 },
+ { 0x10145, 500, 1 },
+ { 0x10146, 5000, 1 },
+ { 0x10147, 50000, 1 },
+ { 0x10148, 5, 1 },
+ { 0x10149, 10, 1 },
+ { 0x1014A, 50, 1 },
+ { 0x1014B, 100, 1 },
+ { 0x1014C, 500, 1 },
+ { 0x1014D, 1000, 1 },
+ { 0x1014E, 5000, 1 },
+ { 0x1014F, 5, 1 },
+ { 0x10150, 10, 1 },
+ { 0x10151, 50, 1 },
+ { 0x10152, 100, 1 },
+ { 0x10153, 500, 1 },
+ { 0x10154, 1000, 1 },
+ { 0x10155, 10000, 1 },
+ { 0x10156, 50000, 1 },
+ { 0x10157, 10, 1 },
+ { 0x10158, 1, 1 },
+ { 0x10159, 1, 1 },
+ { 0x1015A, 1, 1 },
+ { 0x1015B, 2, 1 },
+ { 0x1015C, 2, 1 },
+ { 0x1015D, 2, 1 },
+ { 0x1015E, 2, 1 },
+ { 0x1015F, 5, 1 },
+ { 0x10160, 10, 1 },
+ { 0x10161, 10, 1 },
+ { 0x10162, 10, 1 },
+ { 0x10163, 10, 1 },
+ { 0x10164, 10, 1 },
+ { 0x10165, 30, 1 },
+ { 0x10166, 50, 1 },
+ { 0x10167, 50, 1 },
+ { 0x10168, 50, 1 },
+ { 0x10169, 50, 1 },
+ { 0x1016A, 100, 1 },
+ { 0x1016B, 300, 1 },
+ { 0x1016C, 500, 1 },
+ { 0x1016D, 500, 1 },
+ { 0x1016E, 500, 1 },
+ { 0x1016F, 500, 1 },
+ { 0x10170, 500, 1 },
+ { 0x10171, 1000, 1 },
+ { 0x10172, 5000, 1 },
+ { 0x10173, 5, 1 },
+ { 0x10174, 50, 1 },
+ { 0x10175, 1, 2 },
+ { 0x10176, 1, 2 },
+ { 0x10177, 2, 3 },
+ { 0x10178, 3, 4 },
+ { 0x1018A, 0, 1 },
+ { 0x10320, 1, 1 },
+ { 0x10321, 5, 1 },
+ { 0x10322, 10, 1 },
+ { 0x10323, 50, 1 },
+ { 0x10341, 90, 1 },
+ { 0x1034A, 900, 1 },
+ { 0x103D1, 1, 1 },
+ { 0x103D2, 2, 1 },
+ { 0x103D3, 10, 1 },
+ { 0x103D4, 20, 1 },
+ { 0x103D5, 100, 1 },
+ { 0x104A0, 0, 1 },
+ { 0x104A1, 1, 1 },
+ { 0x104A2, 2, 1 },
+ { 0x104A3, 3, 1 },
+ { 0x104A4, 4, 1 },
+ { 0x104A5, 5, 1 },
+ { 0x104A6, 6, 1 },
+ { 0x104A7, 7, 1 },
+ { 0x104A8, 8, 1 },
+ { 0x104A9, 9, 1 },
+ { 0x10916, 1, 1 },
+ { 0x10917, 10, 1 },
+ { 0x10918, 20, 1 },
+ { 0x10919, 100, 1 },
+ { 0x10A40, 1, 1 },
+ { 0x10A41, 2, 1 },
+ { 0x10A42, 3, 1 },
+ { 0x10A43, 4, 1 },
+ { 0x10A44, 10, 1 },
+ { 0x10A45, 20, 1 },
+ { 0x10A46, 100, 1 },
+ { 0x10A47, 1000, 1 },
+ { 0x12400, 2, 1 },
+ { 0x12401, 3, 1 },
+ { 0x12402, 4, 1 },
+ { 0x12403, 5, 1 },
+ { 0x12404, 6, 1 },
+ { 0x12405, 7, 1 },
+ { 0x12406, 8, 1 },
+ { 0x12407, 9, 1 },
+ { 0x12408, 3, 1 },
+ { 0x12409, 4, 1 },
+ { 0x1240A, 5, 1 },
+ { 0x1240B, 6, 1 },
+ { 0x1240C, 7, 1 },
+ { 0x1240D, 8, 1 },
+ { 0x1240E, 9, 1 },
+ { 0x1240F, 4, 1 },
+ { 0x12410, 5, 1 },
+ { 0x12411, 6, 1 },
+ { 0x12412, 7, 1 },
+ { 0x12413, 8, 1 },
+ { 0x12414, 9, 1 },
+ { 0x12415, 1, 1 },
+ { 0x12416, 2, 1 },
+ { 0x12417, 3, 1 },
+ { 0x12418, 4, 1 },
+ { 0x12419, 5, 1 },
+ { 0x1241A, 6, 1 },
+ { 0x1241B, 7, 1 },
+ { 0x1241C, 8, 1 },
+ { 0x1241D, 9, 1 },
+ { 0x1241E, 1, 1 },
+ { 0x1241F, 2, 1 },
+ { 0x12420, 3, 1 },
+ { 0x12421, 4, 1 },
+ { 0x12422, 5, 1 },
+ { 0x12423, 2, 1 },
+ { 0x12424, 3, 1 },
+ { 0x12425, 3, 1 },
+ { 0x12426, 4, 1 },
+ { 0x12427, 5, 1 },
+ { 0x12428, 6, 1 },
+ { 0x12429, 7, 1 },
+ { 0x1242A, 8, 1 },
+ { 0x1242B, 9, 1 },
+ { 0x1242C, 1, 1 },
+ { 0x1242D, 2, 1 },
+ { 0x1242E, 3, 1 },
+ { 0x1242F, 3, 1 },
+ { 0x12430, 4, 1 },
+ { 0x12431, 5, 1 },
+ { 0x12434, 1, 1 },
+ { 0x12435, 2, 1 },
+ { 0x12436, 3, 1 },
+ { 0x12437, 3, 1 },
+ { 0x12438, 4, 1 },
+ { 0x12439, 5, 1 },
+ { 0x1243A, 3, 1 },
+ { 0x1243B, 3, 1 },
+ { 0x1243C, 4, 1 },
+ { 0x1243D, 4, 1 },
+ { 0x1243E, 4, 1 },
+ { 0x1243F, 4, 1 },
+ { 0x12440, 6, 1 },
+ { 0x12441, 7, 1 },
+ { 0x12442, 7, 1 },
+ { 0x12443, 7, 1 },
+ { 0x12444, 8, 1 },
+ { 0x12445, 8, 1 },
+ { 0x12446, 9, 1 },
+ { 0x12447, 9, 1 },
+ { 0x12448, 9, 1 },
+ { 0x12449, 9, 1 },
+ { 0x1244A, 2, 1 },
+ { 0x1244B, 3, 1 },
+ { 0x1244C, 4, 1 },
+ { 0x1244D, 5, 1 },
+ { 0x1244E, 6, 1 },
+ { 0x1244F, 1, 1 },
+ { 0x12450, 2, 1 },
+ { 0x12451, 3, 1 },
+ { 0x12452, 4, 1 },
+ { 0x12453, 4, 1 },
+ { 0x12454, 5, 1 },
+ { 0x12455, 5, 1 },
+ { 0x12458, 1, 1 },
+ { 0x12459, 2, 1 },
+ { 0x1245A, 1, 3 },
+ { 0x1245B, 2, 3 },
+ { 0x1245C, 5, 6 },
+ { 0x1245D, 1, 3 },
+ { 0x1245E, 2, 3 },
+ { 0x1245F, 1, 8 },
+ { 0x12460, 1, 4 },
+ { 0x12461, 1, 6 },
+ { 0x12462, 1, 4 },
+ { 0x1D360, 1, 1 },
+ { 0x1D361, 2, 1 },
+ { 0x1D362, 3, 1 },
+ { 0x1D363, 4, 1 },
+ { 0x1D364, 5, 1 },
+ { 0x1D365, 6, 1 },
+ { 0x1D366, 7, 1 },
+ { 0x1D367, 8, 1 },
+ { 0x1D368, 9, 1 },
+ { 0x1D369, 10, 1 },
+ { 0x1D36A, 20, 1 },
+ { 0x1D36B, 30, 1 },
+ { 0x1D36C, 40, 1 },
+ { 0x1D36D, 50, 1 },
+ { 0x1D36E, 60, 1 },
+ { 0x1D36F, 70, 1 },
+ { 0x1D370, 80, 1 },
+ { 0x1D371, 90, 1 },
+ { 0x1D7CE, 0, 1 },
+ { 0x1D7CF, 1, 1 },
+ { 0x1D7D0, 2, 1 },
+ { 0x1D7D1, 3, 1 },
+ { 0x1D7D2, 4, 1 },
+ { 0x1D7D3, 5, 1 },
+ { 0x1D7D4, 6, 1 },
+ { 0x1D7D5, 7, 1 },
+ { 0x1D7D6, 8, 1 },
+ { 0x1D7D7, 9, 1 },
+ { 0x1D7D8, 0, 1 },
+ { 0x1D7D9, 1, 1 },
+ { 0x1D7DA, 2, 1 },
+ { 0x1D7DB, 3, 1 },
+ { 0x1D7DC, 4, 1 },
+ { 0x1D7DD, 5, 1 },
+ { 0x1D7DE, 6, 1 },
+ { 0x1D7DF, 7, 1 },
+ { 0x1D7E0, 8, 1 },
+ { 0x1D7E1, 9, 1 },
+ { 0x1D7E2, 0, 1 },
+ { 0x1D7E3, 1, 1 },
+ { 0x1D7E4, 2, 1 },
+ { 0x1D7E5, 3, 1 },
+ { 0x1D7E6, 4, 1 },
+ { 0x1D7E7, 5, 1 },
+ { 0x1D7E8, 6, 1 },
+ { 0x1D7E9, 7, 1 },
+ { 0x1D7EA, 8, 1 },
+ { 0x1D7EB, 9, 1 },
+ { 0x1D7EC, 0, 1 },
+ { 0x1D7ED, 1, 1 },
+ { 0x1D7EE, 2, 1 },
+ { 0x1D7EF, 3, 1 },
+ { 0x1D7F0, 4, 1 },
+ { 0x1D7F1, 5, 1 },
+ { 0x1D7F2, 6, 1 },
+ { 0x1D7F3, 7, 1 },
+ { 0x1D7F4, 8, 1 },
+ { 0x1D7F5, 9, 1 },
+ { 0x1D7F6, 0, 1 },
+ { 0x1D7F7, 1, 1 },
+ { 0x1D7F8, 2, 1 },
+ { 0x1D7F9, 3, 1 },
+ { 0x1D7FA, 4, 1 },
+ { 0x1D7FB, 5, 1 },
+ { 0x1D7FC, 6, 1 },
+ { 0x1D7FD, 7, 1 },
+ { 0x1D7FE, 8, 1 },
+ { 0x1D7FF, 9, 1 },
+ { 0x2F890, 9, 1 }
diff --git a/tests/unictype/test-pr_alphabetic.c b/tests/unictype/test-pr_alphabetic.c
new file mode 100644
index 00000000..b13da5d7
--- /dev/null
+++ b/tests/unictype/test-pr_alphabetic.c
@@ -0,0 +1,465 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0041, 0x005A },
+ { 0x0061, 0x007A },
+ { 0x00AA, 0x00AA },
+ { 0x00B5, 0x00B5 },
+ { 0x00BA, 0x00BA },
+ { 0x00C0, 0x00D6 },
+ { 0x00D8, 0x00F6 },
+ { 0x00F8, 0x02C1 },
+ { 0x02C6, 0x02D1 },
+ { 0x02E0, 0x02E4 },
+ { 0x02EC, 0x02EC },
+ { 0x02EE, 0x02EE },
+ { 0x0345, 0x0345 },
+ { 0x0370, 0x0374 },
+ { 0x0376, 0x0377 },
+ { 0x037A, 0x037D },
+ { 0x0386, 0x0386 },
+ { 0x0388, 0x038A },
+ { 0x038C, 0x038C },
+ { 0x038E, 0x03A1 },
+ { 0x03A3, 0x03F5 },
+ { 0x03F7, 0x0481 },
+ { 0x048A, 0x0523 },
+ { 0x0531, 0x0556 },
+ { 0x0559, 0x0559 },
+ { 0x0561, 0x0587 },
+ { 0x05B0, 0x05BD },
+ { 0x05BF, 0x05BF },
+ { 0x05C1, 0x05C2 },
+ { 0x05C4, 0x05C5 },
+ { 0x05C7, 0x05C7 },
+ { 0x05D0, 0x05EA },
+ { 0x05F0, 0x05F2 },
+ { 0x0610, 0x061A },
+ { 0x0621, 0x0657 },
+ { 0x0659, 0x065E },
+ { 0x066E, 0x06D3 },
+ { 0x06D5, 0x06DC },
+ { 0x06E1, 0x06E8 },
+ { 0x06ED, 0x06EF },
+ { 0x06FA, 0x06FC },
+ { 0x06FF, 0x06FF },
+ { 0x0710, 0x073F },
+ { 0x074D, 0x07B1 },
+ { 0x07CA, 0x07EA },
+ { 0x07F4, 0x07F5 },
+ { 0x07FA, 0x07FA },
+ { 0x0901, 0x0939 },
+ { 0x093D, 0x094C },
+ { 0x0950, 0x0950 },
+ { 0x0958, 0x0963 },
+ { 0x0971, 0x0972 },
+ { 0x097B, 0x097F },
+ { 0x0981, 0x0983 },
+ { 0x0985, 0x098C },
+ { 0x098F, 0x0990 },
+ { 0x0993, 0x09A8 },
+ { 0x09AA, 0x09B0 },
+ { 0x09B2, 0x09B2 },
+ { 0x09B6, 0x09B9 },
+ { 0x09BD, 0x09C4 },
+ { 0x09C7, 0x09C8 },
+ { 0x09CB, 0x09CC },
+ { 0x09CE, 0x09CE },
+ { 0x09D7, 0x09D7 },
+ { 0x09DC, 0x09DD },
+ { 0x09DF, 0x09E3 },
+ { 0x09F0, 0x09F1 },
+ { 0x0A01, 0x0A03 },
+ { 0x0A05, 0x0A0A },
+ { 0x0A0F, 0x0A10 },
+ { 0x0A13, 0x0A28 },
+ { 0x0A2A, 0x0A30 },
+ { 0x0A32, 0x0A33 },
+ { 0x0A35, 0x0A36 },
+ { 0x0A38, 0x0A39 },
+ { 0x0A3E, 0x0A42 },
+ { 0x0A47, 0x0A48 },
+ { 0x0A4B, 0x0A4C },
+ { 0x0A51, 0x0A51 },
+ { 0x0A59, 0x0A5C },
+ { 0x0A5E, 0x0A5E },
+ { 0x0A70, 0x0A75 },
+ { 0x0A81, 0x0A83 },
+ { 0x0A85, 0x0A8D },
+ { 0x0A8F, 0x0A91 },
+ { 0x0A93, 0x0AA8 },
+ { 0x0AAA, 0x0AB0 },
+ { 0x0AB2, 0x0AB3 },
+ { 0x0AB5, 0x0AB9 },
+ { 0x0ABD, 0x0AC5 },
+ { 0x0AC7, 0x0AC9 },
+ { 0x0ACB, 0x0ACC },
+ { 0x0AD0, 0x0AD0 },
+ { 0x0AE0, 0x0AE3 },
+ { 0x0B01, 0x0B03 },
+ { 0x0B05, 0x0B0C },
+ { 0x0B0F, 0x0B10 },
+ { 0x0B13, 0x0B28 },
+ { 0x0B2A, 0x0B30 },
+ { 0x0B32, 0x0B33 },
+ { 0x0B35, 0x0B39 },
+ { 0x0B3D, 0x0B44 },
+ { 0x0B47, 0x0B48 },
+ { 0x0B4B, 0x0B4C },
+ { 0x0B56, 0x0B57 },
+ { 0x0B5C, 0x0B5D },
+ { 0x0B5F, 0x0B63 },
+ { 0x0B71, 0x0B71 },
+ { 0x0B82, 0x0B83 },
+ { 0x0B85, 0x0B8A },
+ { 0x0B8E, 0x0B90 },
+ { 0x0B92, 0x0B95 },
+ { 0x0B99, 0x0B9A },
+ { 0x0B9C, 0x0B9C },
+ { 0x0B9E, 0x0B9F },
+ { 0x0BA3, 0x0BA4 },
+ { 0x0BA8, 0x0BAA },
+ { 0x0BAE, 0x0BB9 },
+ { 0x0BBE, 0x0BC2 },
+ { 0x0BC6, 0x0BC8 },
+ { 0x0BCA, 0x0BCC },
+ { 0x0BD0, 0x0BD0 },
+ { 0x0BD7, 0x0BD7 },
+ { 0x0C01, 0x0C03 },
+ { 0x0C05, 0x0C0C },
+ { 0x0C0E, 0x0C10 },
+ { 0x0C12, 0x0C28 },
+ { 0x0C2A, 0x0C33 },
+ { 0x0C35, 0x0C39 },
+ { 0x0C3D, 0x0C44 },
+ { 0x0C46, 0x0C48 },
+ { 0x0C4A, 0x0C4C },
+ { 0x0C55, 0x0C56 },
+ { 0x0C58, 0x0C59 },
+ { 0x0C60, 0x0C63 },
+ { 0x0C82, 0x0C83 },
+ { 0x0C85, 0x0C8C },
+ { 0x0C8E, 0x0C90 },
+ { 0x0C92, 0x0CA8 },
+ { 0x0CAA, 0x0CB3 },
+ { 0x0CB5, 0x0CB9 },
+ { 0x0CBD, 0x0CC4 },
+ { 0x0CC6, 0x0CC8 },
+ { 0x0CCA, 0x0CCC },
+ { 0x0CD5, 0x0CD6 },
+ { 0x0CDE, 0x0CDE },
+ { 0x0CE0, 0x0CE3 },
+ { 0x0D02, 0x0D03 },
+ { 0x0D05, 0x0D0C },
+ { 0x0D0E, 0x0D10 },
+ { 0x0D12, 0x0D28 },
+ { 0x0D2A, 0x0D39 },
+ { 0x0D3D, 0x0D44 },
+ { 0x0D46, 0x0D48 },
+ { 0x0D4A, 0x0D4C },
+ { 0x0D57, 0x0D57 },
+ { 0x0D60, 0x0D63 },
+ { 0x0D7A, 0x0D7F },
+ { 0x0D82, 0x0D83 },
+ { 0x0D85, 0x0D96 },
+ { 0x0D9A, 0x0DB1 },
+ { 0x0DB3, 0x0DBB },
+ { 0x0DBD, 0x0DBD },
+ { 0x0DC0, 0x0DC6 },
+ { 0x0DCF, 0x0DD4 },
+ { 0x0DD6, 0x0DD6 },
+ { 0x0DD8, 0x0DDF },
+ { 0x0DF2, 0x0DF3 },
+ { 0x0E01, 0x0E3A },
+ { 0x0E40, 0x0E46 },
+ { 0x0E4D, 0x0E4D },
+ { 0x0E81, 0x0E82 },
+ { 0x0E84, 0x0E84 },
+ { 0x0E87, 0x0E88 },
+ { 0x0E8A, 0x0E8A },
+ { 0x0E8D, 0x0E8D },
+ { 0x0E94, 0x0E97 },
+ { 0x0E99, 0x0E9F },
+ { 0x0EA1, 0x0EA3 },
+ { 0x0EA5, 0x0EA5 },
+ { 0x0EA7, 0x0EA7 },
+ { 0x0EAA, 0x0EAB },
+ { 0x0EAD, 0x0EB9 },
+ { 0x0EBB, 0x0EBD },
+ { 0x0EC0, 0x0EC4 },
+ { 0x0EC6, 0x0EC6 },
+ { 0x0ECD, 0x0ECD },
+ { 0x0EDC, 0x0EDD },
+ { 0x0F00, 0x0F00 },
+ { 0x0F40, 0x0F47 },
+ { 0x0F49, 0x0F6C },
+ { 0x0F71, 0x0F81 },
+ { 0x0F88, 0x0F8B },
+ { 0x0F90, 0x0F97 },
+ { 0x0F99, 0x0FBC },
+ { 0x1000, 0x1036 },
+ { 0x1038, 0x1038 },
+ { 0x103B, 0x103F },
+ { 0x1050, 0x1062 },
+ { 0x1065, 0x1068 },
+ { 0x106E, 0x1086 },
+ { 0x108E, 0x108E },
+ { 0x10A0, 0x10C5 },
+ { 0x10D0, 0x10FA },
+ { 0x10FC, 0x10FC },
+ { 0x1100, 0x1159 },
+ { 0x115F, 0x11A2 },
+ { 0x11A8, 0x11F9 },
+ { 0x1200, 0x1248 },
+ { 0x124A, 0x124D },
+ { 0x1250, 0x1256 },
+ { 0x1258, 0x1258 },
+ { 0x125A, 0x125D },
+ { 0x1260, 0x1288 },
+ { 0x128A, 0x128D },
+ { 0x1290, 0x12B0 },
+ { 0x12B2, 0x12B5 },
+ { 0x12B8, 0x12BE },
+ { 0x12C0, 0x12C0 },
+ { 0x12C2, 0x12C5 },
+ { 0x12C8, 0x12D6 },
+ { 0x12D8, 0x1310 },
+ { 0x1312, 0x1315 },
+ { 0x1318, 0x135A },
+ { 0x135F, 0x135F },
+ { 0x1380, 0x138F },
+ { 0x13A0, 0x13F4 },
+ { 0x1401, 0x166C },
+ { 0x166F, 0x1676 },
+ { 0x1681, 0x169A },
+ { 0x16A0, 0x16EA },
+ { 0x16EE, 0x16F0 },
+ { 0x1700, 0x170C },
+ { 0x170E, 0x1713 },
+ { 0x1720, 0x1733 },
+ { 0x1740, 0x1753 },
+ { 0x1760, 0x176C },
+ { 0x176E, 0x1770 },
+ { 0x1772, 0x1773 },
+ { 0x1780, 0x17B3 },
+ { 0x17B6, 0x17C8 },
+ { 0x17D7, 0x17D7 },
+ { 0x17DC, 0x17DC },
+ { 0x1820, 0x1877 },
+ { 0x1880, 0x18AA },
+ { 0x1900, 0x191C },
+ { 0x1920, 0x192B },
+ { 0x1930, 0x1938 },
+ { 0x1950, 0x196D },
+ { 0x1970, 0x1974 },
+ { 0x1980, 0x19A9 },
+ { 0x19B0, 0x19C9 },
+ { 0x1A00, 0x1A1B },
+ { 0x1B00, 0x1B33 },
+ { 0x1B35, 0x1B43 },
+ { 0x1B45, 0x1B4B },
+ { 0x1B80, 0x1BA9 },
+ { 0x1BAE, 0x1BAF },
+ { 0x1C00, 0x1C35 },
+ { 0x1C4D, 0x1C4F },
+ { 0x1C5A, 0x1C7D },
+ { 0x1D00, 0x1DBF },
+ { 0x1E00, 0x1F15 },
+ { 0x1F18, 0x1F1D },
+ { 0x1F20, 0x1F45 },
+ { 0x1F48, 0x1F4D },
+ { 0x1F50, 0x1F57 },
+ { 0x1F59, 0x1F59 },
+ { 0x1F5B, 0x1F5B },
+ { 0x1F5D, 0x1F5D },
+ { 0x1F5F, 0x1F7D },
+ { 0x1F80, 0x1FB4 },
+ { 0x1FB6, 0x1FBC },
+ { 0x1FBE, 0x1FBE },
+ { 0x1FC2, 0x1FC4 },
+ { 0x1FC6, 0x1FCC },
+ { 0x1FD0, 0x1FD3 },
+ { 0x1FD6, 0x1FDB },
+ { 0x1FE0, 0x1FEC },
+ { 0x1FF2, 0x1FF4 },
+ { 0x1FF6, 0x1FFC },
+ { 0x2071, 0x2071 },
+ { 0x207F, 0x207F },
+ { 0x2090, 0x2094 },
+ { 0x2102, 0x2102 },
+ { 0x2107, 0x2107 },
+ { 0x210A, 0x2113 },
+ { 0x2115, 0x2115 },
+ { 0x2119, 0x211D },
+ { 0x2124, 0x2124 },
+ { 0x2126, 0x2126 },
+ { 0x2128, 0x2128 },
+ { 0x212A, 0x212D },
+ { 0x212F, 0x2139 },
+ { 0x213C, 0x213F },
+ { 0x2145, 0x2149 },
+ { 0x214E, 0x214E },
+ { 0x2160, 0x2188 },
+ { 0x24B6, 0x24E9 },
+ { 0x2C00, 0x2C2E },
+ { 0x2C30, 0x2C5E },
+ { 0x2C60, 0x2C6F },
+ { 0x2C71, 0x2C7D },
+ { 0x2C80, 0x2CE4 },
+ { 0x2D00, 0x2D25 },
+ { 0x2D30, 0x2D65 },
+ { 0x2D6F, 0x2D6F },
+ { 0x2D80, 0x2D96 },
+ { 0x2DA0, 0x2DA6 },
+ { 0x2DA8, 0x2DAE },
+ { 0x2DB0, 0x2DB6 },
+ { 0x2DB8, 0x2DBE },
+ { 0x2DC0, 0x2DC6 },
+ { 0x2DC8, 0x2DCE },
+ { 0x2DD0, 0x2DD6 },
+ { 0x2DD8, 0x2DDE },
+ { 0x2DE0, 0x2DFF },
+ { 0x2E2F, 0x2E2F },
+ { 0x3005, 0x3007 },
+ { 0x3021, 0x3029 },
+ { 0x3031, 0x3035 },
+ { 0x3038, 0x303C },
+ { 0x3041, 0x3096 },
+ { 0x309D, 0x309F },
+ { 0x30A1, 0x30FA },
+ { 0x30FC, 0x30FF },
+ { 0x3105, 0x312D },
+ { 0x3131, 0x318E },
+ { 0x31A0, 0x31B7 },
+ { 0x31F0, 0x31FF },
+ { 0x3400, 0x4DB5 },
+ { 0x4E00, 0x9FC3 },
+ { 0xA000, 0xA48C },
+ { 0xA500, 0xA60C },
+ { 0xA610, 0xA61F },
+ { 0xA62A, 0xA62B },
+ { 0xA640, 0xA65F },
+ { 0xA662, 0xA66E },
+ { 0xA67F, 0xA697 },
+ { 0xA717, 0xA71F },
+ { 0xA722, 0xA788 },
+ { 0xA78B, 0xA78C },
+ { 0xA7FB, 0xA801 },
+ { 0xA803, 0xA805 },
+ { 0xA807, 0xA80A },
+ { 0xA80C, 0xA827 },
+ { 0xA840, 0xA873 },
+ { 0xA880, 0xA8C3 },
+ { 0xA90A, 0xA92A },
+ { 0xA930, 0xA952 },
+ { 0xAA00, 0xAA36 },
+ { 0xAA40, 0xAA4D },
+ { 0xAC00, 0xD7A3 },
+ { 0xF900, 0xFA2D },
+ { 0xFA30, 0xFA6A },
+ { 0xFA70, 0xFAD9 },
+ { 0xFB00, 0xFB06 },
+ { 0xFB13, 0xFB17 },
+ { 0xFB1D, 0xFB28 },
+ { 0xFB2A, 0xFB36 },
+ { 0xFB38, 0xFB3C },
+ { 0xFB3E, 0xFB3E },
+ { 0xFB40, 0xFB41 },
+ { 0xFB43, 0xFB44 },
+ { 0xFB46, 0xFBB1 },
+ { 0xFBD3, 0xFD3D },
+ { 0xFD50, 0xFD8F },
+ { 0xFD92, 0xFDC7 },
+ { 0xFDF0, 0xFDFB },
+ { 0xFE70, 0xFE74 },
+ { 0xFE76, 0xFEFC },
+ { 0xFF21, 0xFF3A },
+ { 0xFF41, 0xFF5A },
+ { 0xFF66, 0xFFBE },
+ { 0xFFC2, 0xFFC7 },
+ { 0xFFCA, 0xFFCF },
+ { 0xFFD2, 0xFFD7 },
+ { 0xFFDA, 0xFFDC },
+ { 0x10000, 0x1000B },
+ { 0x1000D, 0x10026 },
+ { 0x10028, 0x1003A },
+ { 0x1003C, 0x1003D },
+ { 0x1003F, 0x1004D },
+ { 0x10050, 0x1005D },
+ { 0x10080, 0x100FA },
+ { 0x10140, 0x10174 },
+ { 0x10280, 0x1029C },
+ { 0x102A0, 0x102D0 },
+ { 0x10300, 0x1031E },
+ { 0x10330, 0x1034A },
+ { 0x10380, 0x1039D },
+ { 0x103A0, 0x103C3 },
+ { 0x103C8, 0x103CF },
+ { 0x103D1, 0x103D5 },
+ { 0x10400, 0x1049D },
+ { 0x10800, 0x10805 },
+ { 0x10808, 0x10808 },
+ { 0x1080A, 0x10835 },
+ { 0x10837, 0x10838 },
+ { 0x1083C, 0x1083C },
+ { 0x1083F, 0x1083F },
+ { 0x10900, 0x10915 },
+ { 0x10920, 0x10939 },
+ { 0x10A00, 0x10A03 },
+ { 0x10A05, 0x10A06 },
+ { 0x10A0C, 0x10A13 },
+ { 0x10A15, 0x10A17 },
+ { 0x10A19, 0x10A33 },
+ { 0x12000, 0x1236E },
+ { 0x12400, 0x12462 },
+ { 0x1D400, 0x1D454 },
+ { 0x1D456, 0x1D49C },
+ { 0x1D49E, 0x1D49F },
+ { 0x1D4A2, 0x1D4A2 },
+ { 0x1D4A5, 0x1D4A6 },
+ { 0x1D4A9, 0x1D4AC },
+ { 0x1D4AE, 0x1D4B9 },
+ { 0x1D4BB, 0x1D4BB },
+ { 0x1D4BD, 0x1D4C3 },
+ { 0x1D4C5, 0x1D505 },
+ { 0x1D507, 0x1D50A },
+ { 0x1D50D, 0x1D514 },
+ { 0x1D516, 0x1D51C },
+ { 0x1D51E, 0x1D539 },
+ { 0x1D53B, 0x1D53E },
+ { 0x1D540, 0x1D544 },
+ { 0x1D546, 0x1D546 },
+ { 0x1D54A, 0x1D550 },
+ { 0x1D552, 0x1D6A5 },
+ { 0x1D6A8, 0x1D6C0 },
+ { 0x1D6C2, 0x1D6DA },
+ { 0x1D6DC, 0x1D6FA },
+ { 0x1D6FC, 0x1D714 },
+ { 0x1D716, 0x1D734 },
+ { 0x1D736, 0x1D74E },
+ { 0x1D750, 0x1D76E },
+ { 0x1D770, 0x1D788 },
+ { 0x1D78A, 0x1D7A8 },
+ { 0x1D7AA, 0x1D7C2 },
+ { 0x1D7C4, 0x1D7CB },
+ { 0x20000, 0x2A6D6 },
+ { 0x2F800, 0x2FA1D }
+
+#define PREDICATE(c) uc_is_property_alphabetic (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_ascii_hex_digit.c b/tests/unictype/test-pr_ascii_hex_digit.c
new file mode 100644
index 00000000..df600d7b
--- /dev/null
+++ b/tests/unictype/test-pr_ascii_hex_digit.c
@@ -0,0 +1,25 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0030, 0x0039 },
+ { 0x0041, 0x0046 },
+ { 0x0061, 0x0066 }
+
+#define PREDICATE(c) uc_is_property_ascii_hex_digit (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_bidi_arabic_digit.c b/tests/unictype/test-pr_bidi_arabic_digit.c
new file mode 100644
index 00000000..f4e4edb8
--- /dev/null
+++ b/tests/unictype/test-pr_bidi_arabic_digit.c
@@ -0,0 +1,26 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0600, 0x0603 },
+ { 0x0660, 0x0669 },
+ { 0x066B, 0x066C },
+ { 0x06DD, 0x06DD }
+
+#define PREDICATE(c) uc_is_property_bidi_arabic_digit (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_bidi_arabic_right_to_left.c b/tests/unictype/test-pr_bidi_arabic_right_to_left.c
new file mode 100644
index 00000000..f329ccf1
--- /dev/null
+++ b/tests/unictype/test-pr_bidi_arabic_right_to_left.c
@@ -0,0 +1,47 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0604, 0x0605 },
+ { 0x0608, 0x0608 },
+ { 0x060B, 0x060B },
+ { 0x060D, 0x060D },
+ { 0x061B, 0x064A },
+ { 0x065F, 0x065F },
+ { 0x066D, 0x066F },
+ { 0x0671, 0x06D5 },
+ { 0x06E5, 0x06E6 },
+ { 0x06EE, 0x06EF },
+ { 0x06FA, 0x070E },
+ { 0x0710, 0x0710 },
+ { 0x0712, 0x072F },
+ { 0x074B, 0x07A5 },
+ { 0x07B1, 0x07BF },
+ { 0x2065, 0x2069 },
+ { 0xFB50, 0xFD3D },
+ { 0xFD40, 0xFDCF },
+ { 0xFDF0, 0xFDFC },
+ { 0xFDFE, 0xFDFF },
+ { 0xFE1A, 0xFE1F },
+ { 0xFE27, 0xFE2F },
+ { 0xFE53, 0xFE53 },
+ { 0xFE67, 0xFE67 },
+ { 0xFE6C, 0xFEFE }
+
+#define PREDICATE(c) uc_is_property_bidi_arabic_right_to_left (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_bidi_block_separator.c b/tests/unictype/test-pr_bidi_block_separator.c
new file mode 100644
index 00000000..4b4353d2
--- /dev/null
+++ b/tests/unictype/test-pr_bidi_block_separator.c
@@ -0,0 +1,27 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x000A, 0x000A },
+ { 0x000D, 0x000D },
+ { 0x001C, 0x001E },
+ { 0x0085, 0x0085 },
+ { 0x2029, 0x2029 }
+
+#define PREDICATE(c) uc_is_property_bidi_block_separator (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_bidi_boundary_neutral.c b/tests/unictype/test-pr_bidi_boundary_neutral.c
new file mode 100644
index 00000000..19a67d1b
--- /dev/null
+++ b/tests/unictype/test-pr_bidi_boundary_neutral.c
@@ -0,0 +1,53 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0000, 0x0008 },
+ { 0x000E, 0x001B },
+ { 0x007F, 0x0084 },
+ { 0x0086, 0x009F },
+ { 0x00AD, 0x00AD },
+ { 0x070F, 0x070F },
+ { 0x200B, 0x200D },
+ { 0x2060, 0x2064 },
+ { 0x206A, 0x206F },
+ { 0xFDD0, 0xFDEF },
+ { 0xFEFF, 0xFEFF },
+ { 0xFFF0, 0xFFF8 },
+ { 0xFFFE, 0xFFFF },
+ { 0x1D173, 0x1D17A },
+ { 0x1FFFE, 0x1FFFF },
+ { 0x2FFFE, 0x2FFFF },
+ { 0x3FFFE, 0x3FFFF },
+ { 0x4FFFE, 0x4FFFF },
+ { 0x5FFFE, 0x5FFFF },
+ { 0x6FFFE, 0x6FFFF },
+ { 0x7FFFE, 0x7FFFF },
+ { 0x8FFFE, 0x8FFFF },
+ { 0x9FFFE, 0x9FFFF },
+ { 0xAFFFE, 0xAFFFF },
+ { 0xBFFFE, 0xBFFFF },
+ { 0xCFFFE, 0xCFFFF },
+ { 0xDFFFE, 0xE00FF },
+ { 0xE01F0, 0xE0FFF },
+ { 0xEFFFE, 0xEFFFF },
+ { 0xFFFFE, 0xFFFFF },
+ { 0x10FFFE, 0x10FFFF }
+
+#define PREDICATE(c) uc_is_property_bidi_boundary_neutral (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_bidi_common_separator.c b/tests/unictype/test-pr_bidi_common_separator.c
new file mode 100644
index 00000000..eeca1825
--- /dev/null
+++ b/tests/unictype/test-pr_bidi_common_separator.c
@@ -0,0 +1,35 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x002C, 0x002C },
+ { 0x002E, 0x002F },
+ { 0x003A, 0x003A },
+ { 0x00A0, 0x00A0 },
+ { 0x060C, 0x060C },
+ { 0x202F, 0x202F },
+ { 0x2044, 0x2044 },
+ { 0xFE50, 0xFE50 },
+ { 0xFE52, 0xFE52 },
+ { 0xFE55, 0xFE55 },
+ { 0xFF0C, 0xFF0C },
+ { 0xFF0E, 0xFF0F },
+ { 0xFF1A, 0xFF1A }
+
+#define PREDICATE(c) uc_is_property_bidi_common_separator (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_bidi_control.c b/tests/unictype/test-pr_bidi_control.c
new file mode 100644
index 00000000..151f116f
--- /dev/null
+++ b/tests/unictype/test-pr_bidi_control.c
@@ -0,0 +1,24 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x200E, 0x200F },
+ { 0x202A, 0x202E }
+
+#define PREDICATE(c) uc_is_property_bidi_control (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_bidi_embedding_or_override.c b/tests/unictype/test-pr_bidi_embedding_or_override.c
new file mode 100644
index 00000000..4a977170
--- /dev/null
+++ b/tests/unictype/test-pr_bidi_embedding_or_override.c
@@ -0,0 +1,24 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x202A, 0x202B },
+ { 0x202D, 0x202E }
+
+#define PREDICATE(c) uc_is_property_bidi_embedding_or_override (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_bidi_eur_num_separator.c b/tests/unictype/test-pr_bidi_eur_num_separator.c
new file mode 100644
index 00000000..9b984f6b
--- /dev/null
+++ b/tests/unictype/test-pr_bidi_eur_num_separator.c
@@ -0,0 +1,31 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x002B, 0x002B },
+ { 0x002D, 0x002D },
+ { 0x207A, 0x207B },
+ { 0x208A, 0x208B },
+ { 0x2212, 0x2212 },
+ { 0xFB29, 0xFB29 },
+ { 0xFE62, 0xFE63 },
+ { 0xFF0B, 0xFF0B },
+ { 0xFF0D, 0xFF0D }
+
+#define PREDICATE(c) uc_is_property_bidi_eur_num_separator (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_bidi_eur_num_terminator.c b/tests/unictype/test-pr_bidi_eur_num_terminator.c
new file mode 100644
index 00000000..22f28381
--- /dev/null
+++ b/tests/unictype/test-pr_bidi_eur_num_terminator.c
@@ -0,0 +1,41 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0023, 0x0025 },
+ { 0x00A2, 0x00A5 },
+ { 0x00B0, 0x00B1 },
+ { 0x0609, 0x060A },
+ { 0x066A, 0x066A },
+ { 0x09F2, 0x09F3 },
+ { 0x0AF1, 0x0AF1 },
+ { 0x0BF9, 0x0BF9 },
+ { 0x0E3F, 0x0E3F },
+ { 0x17DB, 0x17DB },
+ { 0x2030, 0x2034 },
+ { 0x20A0, 0x20B5 },
+ { 0x212E, 0x212E },
+ { 0x2213, 0x2213 },
+ { 0xFE5F, 0xFE5F },
+ { 0xFE69, 0xFE6A },
+ { 0xFF03, 0xFF05 },
+ { 0xFFE0, 0xFFE1 },
+ { 0xFFE5, 0xFFE6 }
+
+#define PREDICATE(c) uc_is_property_bidi_eur_num_terminator (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_bidi_european_digit.c b/tests/unictype/test-pr_bidi_european_digit.c
new file mode 100644
index 00000000..63a3a87c
--- /dev/null
+++ b/tests/unictype/test-pr_bidi_european_digit.c
@@ -0,0 +1,32 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0030, 0x0039 },
+ { 0x00B2, 0x00B3 },
+ { 0x00B9, 0x00B9 },
+ { 0x06F0, 0x06F9 },
+ { 0x2070, 0x2070 },
+ { 0x2074, 0x2079 },
+ { 0x2080, 0x2089 },
+ { 0x2488, 0x249B },
+ { 0xFF10, 0xFF19 },
+ { 0x1D7CE, 0x1D7FF }
+
+#define PREDICATE(c) uc_is_property_bidi_european_digit (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_bidi_hebrew_right_to_left.c b/tests/unictype/test-pr_bidi_hebrew_right_to_left.c
new file mode 100644
index 00000000..5a0a4e4b
--- /dev/null
+++ b/tests/unictype/test-pr_bidi_hebrew_right_to_left.c
@@ -0,0 +1,42 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0590, 0x0590 },
+ { 0x05BE, 0x05BE },
+ { 0x05C0, 0x05C0 },
+ { 0x05C3, 0x05C3 },
+ { 0x05C6, 0x05C6 },
+ { 0x05C8, 0x05FF },
+ { 0x07C0, 0x07EA },
+ { 0x07F4, 0x07F5 },
+ { 0x07FA, 0x08FF },
+ { 0x200F, 0x200F },
+ { 0xFB1D, 0xFB1D },
+ { 0xFB1F, 0xFB28 },
+ { 0xFB2A, 0xFB4F },
+ { 0x10800, 0x1091E },
+ { 0x10920, 0x10A00 },
+ { 0x10A04, 0x10A04 },
+ { 0x10A07, 0x10A0B },
+ { 0x10A10, 0x10A37 },
+ { 0x10A3B, 0x10A3E },
+ { 0x10A40, 0x10FFF }
+
+#define PREDICATE(c) uc_is_property_bidi_hebrew_right_to_left (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_bidi_left_to_right.c b/tests/unictype/test-pr_bidi_left_to_right.c
new file mode 100644
index 00000000..09617edb
--- /dev/null
+++ b/tests/unictype/test-pr_bidi_left_to_right.c
@@ -0,0 +1,295 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0041, 0x005A },
+ { 0x0061, 0x007A },
+ { 0x00AA, 0x00AA },
+ { 0x00B5, 0x00B5 },
+ { 0x00BA, 0x00BA },
+ { 0x00C0, 0x00D6 },
+ { 0x00D8, 0x00F6 },
+ { 0x00F8, 0x02B8 },
+ { 0x02BB, 0x02C1 },
+ { 0x02D0, 0x02D1 },
+ { 0x02E0, 0x02E4 },
+ { 0x02EE, 0x02EE },
+ { 0x0370, 0x0373 },
+ { 0x0376, 0x037D },
+ { 0x037F, 0x0383 },
+ { 0x0386, 0x0386 },
+ { 0x0388, 0x03F5 },
+ { 0x03F7, 0x0482 },
+ { 0x048A, 0x0589 },
+ { 0x058B, 0x058F },
+ { 0x0900, 0x0900 },
+ { 0x0903, 0x093B },
+ { 0x093D, 0x0940 },
+ { 0x0949, 0x094C },
+ { 0x094E, 0x0950 },
+ { 0x0955, 0x0961 },
+ { 0x0964, 0x0980 },
+ { 0x0982, 0x09BB },
+ { 0x09BD, 0x09C0 },
+ { 0x09C5, 0x09CC },
+ { 0x09CE, 0x09E1 },
+ { 0x09E4, 0x09F1 },
+ { 0x09F4, 0x0A00 },
+ { 0x0A03, 0x0A3B },
+ { 0x0A3D, 0x0A40 },
+ { 0x0A43, 0x0A46 },
+ { 0x0A49, 0x0A4A },
+ { 0x0A4E, 0x0A50 },
+ { 0x0A52, 0x0A6F },
+ { 0x0A72, 0x0A74 },
+ { 0x0A76, 0x0A80 },
+ { 0x0A83, 0x0ABB },
+ { 0x0ABD, 0x0AC0 },
+ { 0x0AC6, 0x0AC6 },
+ { 0x0AC9, 0x0ACC },
+ { 0x0ACE, 0x0AE1 },
+ { 0x0AE4, 0x0AF0 },
+ { 0x0AF2, 0x0B00 },
+ { 0x0B02, 0x0B3B },
+ { 0x0B3D, 0x0B3E },
+ { 0x0B40, 0x0B40 },
+ { 0x0B45, 0x0B4C },
+ { 0x0B4E, 0x0B55 },
+ { 0x0B57, 0x0B61 },
+ { 0x0B64, 0x0B81 },
+ { 0x0B83, 0x0BBF },
+ { 0x0BC1, 0x0BCC },
+ { 0x0BCE, 0x0BF2 },
+ { 0x0BFB, 0x0C3D },
+ { 0x0C41, 0x0C45 },
+ { 0x0C49, 0x0C49 },
+ { 0x0C4E, 0x0C54 },
+ { 0x0C57, 0x0C61 },
+ { 0x0C64, 0x0C77 },
+ { 0x0C7F, 0x0CBB },
+ { 0x0CBD, 0x0CCB },
+ { 0x0CCE, 0x0CE1 },
+ { 0x0CE4, 0x0CF0 },
+ { 0x0CF3, 0x0D40 },
+ { 0x0D45, 0x0D4C },
+ { 0x0D4E, 0x0D61 },
+ { 0x0D64, 0x0DC9 },
+ { 0x0DCB, 0x0DD1 },
+ { 0x0DD5, 0x0DD5 },
+ { 0x0DD7, 0x0E30 },
+ { 0x0E32, 0x0E33 },
+ { 0x0E3B, 0x0E3E },
+ { 0x0E40, 0x0E46 },
+ { 0x0E4F, 0x0EB0 },
+ { 0x0EB2, 0x0EB3 },
+ { 0x0EBA, 0x0EBA },
+ { 0x0EBD, 0x0EC7 },
+ { 0x0ECE, 0x0F17 },
+ { 0x0F1A, 0x0F34 },
+ { 0x0F36, 0x0F36 },
+ { 0x0F38, 0x0F38 },
+ { 0x0F3E, 0x0F70 },
+ { 0x0F7F, 0x0F7F },
+ { 0x0F85, 0x0F85 },
+ { 0x0F88, 0x0F8F },
+ { 0x0F98, 0x0F98 },
+ { 0x0FBD, 0x0FC5 },
+ { 0x0FC7, 0x102C },
+ { 0x1031, 0x1031 },
+ { 0x1038, 0x1038 },
+ { 0x103B, 0x103C },
+ { 0x103F, 0x1057 },
+ { 0x105A, 0x105D },
+ { 0x1061, 0x1070 },
+ { 0x1075, 0x1081 },
+ { 0x1083, 0x1084 },
+ { 0x1087, 0x108C },
+ { 0x108E, 0x135E },
+ { 0x1360, 0x138F },
+ { 0x139A, 0x167F },
+ { 0x1681, 0x169A },
+ { 0x169D, 0x1711 },
+ { 0x1715, 0x1731 },
+ { 0x1735, 0x1751 },
+ { 0x1754, 0x1771 },
+ { 0x1774, 0x17B6 },
+ { 0x17BE, 0x17C5 },
+ { 0x17C7, 0x17C8 },
+ { 0x17D4, 0x17DA },
+ { 0x17DC, 0x17DC },
+ { 0x17DE, 0x17EF },
+ { 0x17FA, 0x17FF },
+ { 0x180F, 0x18A8 },
+ { 0x18AA, 0x191F },
+ { 0x1923, 0x1926 },
+ { 0x1929, 0x1931 },
+ { 0x1933, 0x1938 },
+ { 0x193C, 0x193F },
+ { 0x1941, 0x1943 },
+ { 0x1946, 0x19DD },
+ { 0x1A00, 0x1A16 },
+ { 0x1A19, 0x1AFF },
+ { 0x1B04, 0x1B33 },
+ { 0x1B35, 0x1B35 },
+ { 0x1B3B, 0x1B3B },
+ { 0x1B3D, 0x1B41 },
+ { 0x1B43, 0x1B6A },
+ { 0x1B74, 0x1B7F },
+ { 0x1B82, 0x1BA1 },
+ { 0x1BA6, 0x1BA7 },
+ { 0x1BAA, 0x1C2B },
+ { 0x1C34, 0x1C35 },
+ { 0x1C38, 0x1DBF },
+ { 0x1DE7, 0x1DFD },
+ { 0x1E00, 0x1FBC },
+ { 0x1FBE, 0x1FBE },
+ { 0x1FC2, 0x1FCC },
+ { 0x1FD0, 0x1FDC },
+ { 0x1FE0, 0x1FEC },
+ { 0x1FF0, 0x1FFC },
+ { 0x1FFF, 0x1FFF },
+ { 0x200E, 0x200E },
+ { 0x2071, 0x2073 },
+ { 0x207F, 0x207F },
+ { 0x208F, 0x209F },
+ { 0x20B6, 0x20CF },
+ { 0x20F1, 0x20FF },
+ { 0x2102, 0x2102 },
+ { 0x2107, 0x2107 },
+ { 0x210A, 0x2113 },
+ { 0x2115, 0x2115 },
+ { 0x2119, 0x211D },
+ { 0x2124, 0x2124 },
+ { 0x2126, 0x2126 },
+ { 0x2128, 0x2128 },
+ { 0x212A, 0x212D },
+ { 0x212F, 0x2139 },
+ { 0x213C, 0x213F },
+ { 0x2145, 0x2149 },
+ { 0x214E, 0x2152 },
+ { 0x2160, 0x218F },
+ { 0x2336, 0x237A },
+ { 0x2395, 0x2395 },
+ { 0x23E8, 0x23FF },
+ { 0x2427, 0x243F },
+ { 0x244B, 0x245F },
+ { 0x249C, 0x24E9 },
+ { 0x269E, 0x269F },
+ { 0x26AC, 0x26AC },
+ { 0x26BD, 0x26BF },
+ { 0x26C4, 0x2700 },
+ { 0x2705, 0x2705 },
+ { 0x270A, 0x270B },
+ { 0x2728, 0x2728 },
+ { 0x274C, 0x274C },
+ { 0x274E, 0x274E },
+ { 0x2753, 0x2755 },
+ { 0x2757, 0x2757 },
+ { 0x275F, 0x2760 },
+ { 0x2795, 0x2797 },
+ { 0x27B0, 0x27B0 },
+ { 0x27BF, 0x27BF },
+ { 0x27CB, 0x27CB },
+ { 0x27CD, 0x27CF },
+ { 0x2800, 0x28FF },
+ { 0x2B4D, 0x2B4F },
+ { 0x2B55, 0x2CE4 },
+ { 0x2CEB, 0x2CF8 },
+ { 0x2D00, 0x2DDF },
+ { 0x2E31, 0x2E7F },
+ { 0x2E9A, 0x2E9A },
+ { 0x2EF4, 0x2EFF },
+ { 0x2FD6, 0x2FEF },
+ { 0x2FFC, 0x2FFF },
+ { 0x3005, 0x3007 },
+ { 0x3021, 0x3029 },
+ { 0x3031, 0x3035 },
+ { 0x3038, 0x303C },
+ { 0x3040, 0x3098 },
+ { 0x309D, 0x309F },
+ { 0x30A1, 0x30FA },
+ { 0x30FC, 0x31BF },
+ { 0x31E4, 0x321C },
+ { 0x321F, 0x324F },
+ { 0x3260, 0x327B },
+ { 0x327F, 0x32B0 },
+ { 0x32C0, 0x32CB },
+ { 0x32D0, 0x3376 },
+ { 0x337B, 0x33DD },
+ { 0x33E0, 0x33FE },
+ { 0x3400, 0x4DBF },
+ { 0x4E00, 0xA48F },
+ { 0xA4C7, 0xA60C },
+ { 0xA610, 0xA66E },
+ { 0xA674, 0xA67B },
+ { 0xA680, 0xA6FF },
+ { 0xA722, 0xA787 },
+ { 0xA789, 0xA801 },
+ { 0xA803, 0xA805 },
+ { 0xA807, 0xA80A },
+ { 0xA80C, 0xA824 },
+ { 0xA827, 0xA827 },
+ { 0xA82C, 0xA873 },
+ { 0xA878, 0xA8C3 },
+ { 0xA8C5, 0xA925 },
+ { 0xA92E, 0xA946 },
+ { 0xA952, 0xAA28 },
+ { 0xAA2F, 0xAA30 },
+ { 0xAA33, 0xAA34 },
+ { 0xAA37, 0xAA42 },
+ { 0xAA44, 0xAA4B },
+ { 0xAA4D, 0xFB1C },
+ { 0xFF00, 0xFF00 },
+ { 0xFF21, 0xFF3A },
+ { 0xFF41, 0xFF5A },
+ { 0xFF66, 0xFFDF },
+ { 0xFFE7, 0xFFE7 },
+ { 0xFFEF, 0xFFEF },
+ { 0x10000, 0x10100 },
+ { 0x10102, 0x1013F },
+ { 0x1018B, 0x1018F },
+ { 0x1019C, 0x101FC },
+ { 0x101FE, 0x107FF },
+ { 0x11000, 0x1D166 },
+ { 0x1D16A, 0x1D172 },
+ { 0x1D183, 0x1D184 },
+ { 0x1D18C, 0x1D1A9 },
+ { 0x1D1AE, 0x1D1FF },
+ { 0x1D246, 0x1D2FF },
+ { 0x1D357, 0x1D7CD },
+ { 0x1D800, 0x1EFFF },
+ { 0x1F02C, 0x1F02F },
+ { 0x1F094, 0x1FFFD },
+ { 0x20000, 0x2FFFD },
+ { 0x30000, 0x3FFFD },
+ { 0x40000, 0x4FFFD },
+ { 0x50000, 0x5FFFD },
+ { 0x60000, 0x6FFFD },
+ { 0x70000, 0x7FFFD },
+ { 0x80000, 0x8FFFD },
+ { 0x90000, 0x9FFFD },
+ { 0xA0000, 0xAFFFD },
+ { 0xB0000, 0xBFFFD },
+ { 0xC0000, 0xCFFFD },
+ { 0xD0000, 0xDFFFD },
+ { 0xE1000, 0xEFFFD },
+ { 0xF0000, 0xFFFFD },
+ { 0x100000, 0x10FFFD }
+
+#define PREDICATE(c) uc_is_property_bidi_left_to_right (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_bidi_non_spacing_mark.c b/tests/unictype/test-pr_bidi_non_spacing_mark.c
new file mode 100644
index 00000000..927ab845
--- /dev/null
+++ b/tests/unictype/test-pr_bidi_non_spacing_mark.c
@@ -0,0 +1,178 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0300, 0x036F },
+ { 0x0483, 0x0489 },
+ { 0x0591, 0x05BD },
+ { 0x05BF, 0x05BF },
+ { 0x05C1, 0x05C2 },
+ { 0x05C4, 0x05C5 },
+ { 0x05C7, 0x05C7 },
+ { 0x0610, 0x061A },
+ { 0x064B, 0x065E },
+ { 0x0670, 0x0670 },
+ { 0x06D6, 0x06DC },
+ { 0x06DE, 0x06E4 },
+ { 0x06E7, 0x06E8 },
+ { 0x06EA, 0x06ED },
+ { 0x0711, 0x0711 },
+ { 0x0730, 0x074A },
+ { 0x07A6, 0x07B0 },
+ { 0x07EB, 0x07F3 },
+ { 0x0901, 0x0902 },
+ { 0x093C, 0x093C },
+ { 0x0941, 0x0948 },
+ { 0x094D, 0x094D },
+ { 0x0951, 0x0954 },
+ { 0x0962, 0x0963 },
+ { 0x0981, 0x0981 },
+ { 0x09BC, 0x09BC },
+ { 0x09C1, 0x09C4 },
+ { 0x09CD, 0x09CD },
+ { 0x09E2, 0x09E3 },
+ { 0x0A01, 0x0A02 },
+ { 0x0A3C, 0x0A3C },
+ { 0x0A41, 0x0A42 },
+ { 0x0A47, 0x0A48 },
+ { 0x0A4B, 0x0A4D },
+ { 0x0A51, 0x0A51 },
+ { 0x0A70, 0x0A71 },
+ { 0x0A75, 0x0A75 },
+ { 0x0A81, 0x0A82 },
+ { 0x0ABC, 0x0ABC },
+ { 0x0AC1, 0x0AC5 },
+ { 0x0AC7, 0x0AC8 },
+ { 0x0ACD, 0x0ACD },
+ { 0x0AE2, 0x0AE3 },
+ { 0x0B01, 0x0B01 },
+ { 0x0B3C, 0x0B3C },
+ { 0x0B3F, 0x0B3F },
+ { 0x0B41, 0x0B44 },
+ { 0x0B4D, 0x0B4D },
+ { 0x0B56, 0x0B56 },
+ { 0x0B62, 0x0B63 },
+ { 0x0B82, 0x0B82 },
+ { 0x0BC0, 0x0BC0 },
+ { 0x0BCD, 0x0BCD },
+ { 0x0C3E, 0x0C40 },
+ { 0x0C46, 0x0C48 },
+ { 0x0C4A, 0x0C4D },
+ { 0x0C55, 0x0C56 },
+ { 0x0C62, 0x0C63 },
+ { 0x0CBC, 0x0CBC },
+ { 0x0CCC, 0x0CCD },
+ { 0x0CE2, 0x0CE3 },
+ { 0x0D41, 0x0D44 },
+ { 0x0D4D, 0x0D4D },
+ { 0x0D62, 0x0D63 },
+ { 0x0DCA, 0x0DCA },
+ { 0x0DD2, 0x0DD4 },
+ { 0x0DD6, 0x0DD6 },
+ { 0x0E31, 0x0E31 },
+ { 0x0E34, 0x0E3A },
+ { 0x0E47, 0x0E4E },
+ { 0x0EB1, 0x0EB1 },
+ { 0x0EB4, 0x0EB9 },
+ { 0x0EBB, 0x0EBC },
+ { 0x0EC8, 0x0ECD },
+ { 0x0F18, 0x0F19 },
+ { 0x0F35, 0x0F35 },
+ { 0x0F37, 0x0F37 },
+ { 0x0F39, 0x0F39 },
+ { 0x0F71, 0x0F7E },
+ { 0x0F80, 0x0F84 },
+ { 0x0F86, 0x0F87 },
+ { 0x0F90, 0x0F97 },
+ { 0x0F99, 0x0FBC },
+ { 0x0FC6, 0x0FC6 },
+ { 0x102D, 0x1030 },
+ { 0x1032, 0x1037 },
+ { 0x1039, 0x103A },
+ { 0x103D, 0x103E },
+ { 0x1058, 0x1059 },
+ { 0x105E, 0x1060 },
+ { 0x1071, 0x1074 },
+ { 0x1082, 0x1082 },
+ { 0x1085, 0x1086 },
+ { 0x108D, 0x108D },
+ { 0x135F, 0x135F },
+ { 0x1712, 0x1714 },
+ { 0x1732, 0x1734 },
+ { 0x1752, 0x1753 },
+ { 0x1772, 0x1773 },
+ { 0x17B7, 0x17BD },
+ { 0x17C6, 0x17C6 },
+ { 0x17C9, 0x17D3 },
+ { 0x17DD, 0x17DD },
+ { 0x180B, 0x180D },
+ { 0x18A9, 0x18A9 },
+ { 0x1920, 0x1922 },
+ { 0x1927, 0x1928 },
+ { 0x1932, 0x1932 },
+ { 0x1939, 0x193B },
+ { 0x1A17, 0x1A18 },
+ { 0x1B00, 0x1B03 },
+ { 0x1B34, 0x1B34 },
+ { 0x1B36, 0x1B3A },
+ { 0x1B3C, 0x1B3C },
+ { 0x1B42, 0x1B42 },
+ { 0x1B6B, 0x1B73 },
+ { 0x1B80, 0x1B81 },
+ { 0x1BA2, 0x1BA5 },
+ { 0x1BA8, 0x1BA9 },
+ { 0x1C2C, 0x1C33 },
+ { 0x1C36, 0x1C37 },
+ { 0x1DC0, 0x1DE6 },
+ { 0x1DFE, 0x1DFF },
+ { 0x20D0, 0x20F0 },
+ { 0x2DE0, 0x2DFF },
+ { 0x302A, 0x302F },
+ { 0x3099, 0x309A },
+ { 0xA66F, 0xA672 },
+ { 0xA67C, 0xA67D },
+ { 0xA802, 0xA802 },
+ { 0xA806, 0xA806 },
+ { 0xA80B, 0xA80B },
+ { 0xA825, 0xA826 },
+ { 0xA8C4, 0xA8C4 },
+ { 0xA926, 0xA92D },
+ { 0xA947, 0xA951 },
+ { 0xAA29, 0xAA2E },
+ { 0xAA31, 0xAA32 },
+ { 0xAA35, 0xAA36 },
+ { 0xAA43, 0xAA43 },
+ { 0xAA4C, 0xAA4C },
+ { 0xFB1E, 0xFB1E },
+ { 0xFE00, 0xFE0F },
+ { 0xFE20, 0xFE26 },
+ { 0x101FD, 0x101FD },
+ { 0x10A01, 0x10A03 },
+ { 0x10A05, 0x10A06 },
+ { 0x10A0C, 0x10A0F },
+ { 0x10A38, 0x10A3A },
+ { 0x10A3F, 0x10A3F },
+ { 0x1D167, 0x1D169 },
+ { 0x1D17B, 0x1D182 },
+ { 0x1D185, 0x1D18B },
+ { 0x1D1AA, 0x1D1AD },
+ { 0x1D242, 0x1D244 },
+ { 0xE0100, 0xE01EF }
+
+#define PREDICATE(c) uc_is_property_bidi_non_spacing_mark (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_bidi_other_neutral.c b/tests/unictype/test-pr_bidi_other_neutral.c
new file mode 100644
index 00000000..b3efed8b
--- /dev/null
+++ b/tests/unictype/test-pr_bidi_other_neutral.c
@@ -0,0 +1,175 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0021, 0x0022 },
+ { 0x0026, 0x002A },
+ { 0x003B, 0x0040 },
+ { 0x005B, 0x0060 },
+ { 0x007B, 0x007E },
+ { 0x00A1, 0x00A1 },
+ { 0x00A6, 0x00A9 },
+ { 0x00AB, 0x00AC },
+ { 0x00AE, 0x00AF },
+ { 0x00B4, 0x00B4 },
+ { 0x00B6, 0x00B8 },
+ { 0x00BB, 0x00BF },
+ { 0x00D7, 0x00D7 },
+ { 0x00F7, 0x00F7 },
+ { 0x02B9, 0x02BA },
+ { 0x02C2, 0x02CF },
+ { 0x02D2, 0x02DF },
+ { 0x02E5, 0x02ED },
+ { 0x02EF, 0x02FF },
+ { 0x0374, 0x0375 },
+ { 0x037E, 0x037E },
+ { 0x0384, 0x0385 },
+ { 0x0387, 0x0387 },
+ { 0x03F6, 0x03F6 },
+ { 0x058A, 0x058A },
+ { 0x0606, 0x0607 },
+ { 0x060E, 0x060F },
+ { 0x06E9, 0x06E9 },
+ { 0x07F6, 0x07F9 },
+ { 0x0BF3, 0x0BF8 },
+ { 0x0BFA, 0x0BFA },
+ { 0x0C78, 0x0C7E },
+ { 0x0CF1, 0x0CF2 },
+ { 0x0F3A, 0x0F3D },
+ { 0x1390, 0x1399 },
+ { 0x169B, 0x169C },
+ { 0x17F0, 0x17F9 },
+ { 0x1800, 0x180A },
+ { 0x1940, 0x1940 },
+ { 0x1944, 0x1945 },
+ { 0x19DE, 0x19FF },
+ { 0x1FBD, 0x1FBD },
+ { 0x1FBF, 0x1FC1 },
+ { 0x1FCD, 0x1FCF },
+ { 0x1FDD, 0x1FDF },
+ { 0x1FED, 0x1FEF },
+ { 0x1FFD, 0x1FFE },
+ { 0x2010, 0x2027 },
+ { 0x2035, 0x2043 },
+ { 0x2045, 0x205E },
+ { 0x207C, 0x207E },
+ { 0x208C, 0x208E },
+ { 0x2100, 0x2101 },
+ { 0x2103, 0x2106 },
+ { 0x2108, 0x2109 },
+ { 0x2114, 0x2114 },
+ { 0x2116, 0x2118 },
+ { 0x211E, 0x2123 },
+ { 0x2125, 0x2125 },
+ { 0x2127, 0x2127 },
+ { 0x2129, 0x2129 },
+ { 0x213A, 0x213B },
+ { 0x2140, 0x2144 },
+ { 0x214A, 0x214D },
+ { 0x2153, 0x215F },
+ { 0x2190, 0x2211 },
+ { 0x2214, 0x2335 },
+ { 0x237B, 0x2394 },
+ { 0x2396, 0x23E7 },
+ { 0x2400, 0x2426 },
+ { 0x2440, 0x244A },
+ { 0x2460, 0x2487 },
+ { 0x24EA, 0x269D },
+ { 0x26A0, 0x26AB },
+ { 0x26AD, 0x26BC },
+ { 0x26C0, 0x26C3 },
+ { 0x2701, 0x2704 },
+ { 0x2706, 0x2709 },
+ { 0x270C, 0x2727 },
+ { 0x2729, 0x274B },
+ { 0x274D, 0x274D },
+ { 0x274F, 0x2752 },
+ { 0x2756, 0x2756 },
+ { 0x2758, 0x275E },
+ { 0x2761, 0x2794 },
+ { 0x2798, 0x27AF },
+ { 0x27B1, 0x27BE },
+ { 0x27C0, 0x27CA },
+ { 0x27CC, 0x27CC },
+ { 0x27D0, 0x27FF },
+ { 0x2900, 0x2B4C },
+ { 0x2B50, 0x2B54 },
+ { 0x2CE5, 0x2CEA },
+ { 0x2CF9, 0x2CFF },
+ { 0x2E00, 0x2E30 },
+ { 0x2E80, 0x2E99 },
+ { 0x2E9B, 0x2EF3 },
+ { 0x2F00, 0x2FD5 },
+ { 0x2FF0, 0x2FFB },
+ { 0x3001, 0x3004 },
+ { 0x3008, 0x3020 },
+ { 0x3030, 0x3030 },
+ { 0x3036, 0x3037 },
+ { 0x303D, 0x303F },
+ { 0x309B, 0x309C },
+ { 0x30A0, 0x30A0 },
+ { 0x30FB, 0x30FB },
+ { 0x31C0, 0x31E3 },
+ { 0x321D, 0x321E },
+ { 0x3250, 0x325F },
+ { 0x327C, 0x327E },
+ { 0x32B1, 0x32BF },
+ { 0x32CC, 0x32CF },
+ { 0x3377, 0x337A },
+ { 0x33DE, 0x33DF },
+ { 0x33FF, 0x33FF },
+ { 0x4DC0, 0x4DFF },
+ { 0xA490, 0xA4C6 },
+ { 0xA60D, 0xA60F },
+ { 0xA673, 0xA673 },
+ { 0xA67E, 0xA67F },
+ { 0xA700, 0xA721 },
+ { 0xA788, 0xA788 },
+ { 0xA828, 0xA82B },
+ { 0xA874, 0xA877 },
+ { 0xFD3E, 0xFD3F },
+ { 0xFDFD, 0xFDFD },
+ { 0xFE10, 0xFE19 },
+ { 0xFE30, 0xFE4F },
+ { 0xFE51, 0xFE51 },
+ { 0xFE54, 0xFE54 },
+ { 0xFE56, 0xFE5E },
+ { 0xFE60, 0xFE61 },
+ { 0xFE64, 0xFE66 },
+ { 0xFE68, 0xFE68 },
+ { 0xFE6B, 0xFE6B },
+ { 0xFF01, 0xFF02 },
+ { 0xFF06, 0xFF0A },
+ { 0xFF1B, 0xFF20 },
+ { 0xFF3B, 0xFF40 },
+ { 0xFF5B, 0xFF65 },
+ { 0xFFE2, 0xFFE4 },
+ { 0xFFE8, 0xFFEE },
+ { 0xFFF9, 0xFFFD },
+ { 0x10101, 0x10101 },
+ { 0x10140, 0x1018A },
+ { 0x10190, 0x1019B },
+ { 0x1091F, 0x1091F },
+ { 0x1D200, 0x1D241 },
+ { 0x1D245, 0x1D245 },
+ { 0x1D300, 0x1D356 },
+ { 0x1F000, 0x1F02B },
+ { 0x1F030, 0x1F093 }
+
+#define PREDICATE(c) uc_is_property_bidi_other_neutral (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_bidi_pdf.c b/tests/unictype/test-pr_bidi_pdf.c
new file mode 100644
index 00000000..e8ff8dd8
--- /dev/null
+++ b/tests/unictype/test-pr_bidi_pdf.c
@@ -0,0 +1,23 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x202C, 0x202C }
+
+#define PREDICATE(c) uc_is_property_bidi_pdf (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_bidi_segment_separator.c b/tests/unictype/test-pr_bidi_segment_separator.c
new file mode 100644
index 00000000..86ba97b4
--- /dev/null
+++ b/tests/unictype/test-pr_bidi_segment_separator.c
@@ -0,0 +1,25 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0009, 0x0009 },
+ { 0x000B, 0x000B },
+ { 0x001F, 0x001F }
+
+#define PREDICATE(c) uc_is_property_bidi_segment_separator (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_bidi_whitespace.c b/tests/unictype/test-pr_bidi_whitespace.c
new file mode 100644
index 00000000..646ef4f4
--- /dev/null
+++ b/tests/unictype/test-pr_bidi_whitespace.c
@@ -0,0 +1,30 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x000C, 0x000C },
+ { 0x0020, 0x0020 },
+ { 0x1680, 0x1680 },
+ { 0x180E, 0x180E },
+ { 0x2000, 0x200A },
+ { 0x2028, 0x2028 },
+ { 0x205F, 0x205F },
+ { 0x3000, 0x3000 }
+
+#define PREDICATE(c) uc_is_property_bidi_whitespace (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_byname.c b/tests/unictype/test-pr_byname.c
new file mode 100644
index 00000000..770d4c8f
--- /dev/null
+++ b/tests/unictype/test-pr_byname.c
@@ -0,0 +1,54 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ {
+ uc_property_t pr = uc_property_byname ("composite");
+ unsigned int c;
+
+ for (c = 0; c < 0x110000; c++)
+ ASSERT (uc_is_property (c, pr) == uc_is_property_composite (c));
+ }
+
+ {
+ uc_property_t pr = uc_property_byname ("foobar");
+ ASSERT (! uc_property_is_valid (pr));
+ }
+
+ return 0;
+}
diff --git a/tests/unictype/test-pr_combining.c b/tests/unictype/test-pr_combining.c
new file mode 100644
index 00000000..2a8377a3
--- /dev/null
+++ b/tests/unictype/test-pr_combining.c
@@ -0,0 +1,183 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0300, 0x036F },
+ { 0x0483, 0x0489 },
+ { 0x0591, 0x05BD },
+ { 0x05BF, 0x05BF },
+ { 0x05C1, 0x05C2 },
+ { 0x05C4, 0x05C5 },
+ { 0x05C7, 0x05C7 },
+ { 0x0610, 0x061A },
+ { 0x064B, 0x065E },
+ { 0x0670, 0x0670 },
+ { 0x06D6, 0x06DC },
+ { 0x06DE, 0x06E4 },
+ { 0x06E7, 0x06E8 },
+ { 0x06EA, 0x06ED },
+ { 0x0711, 0x0711 },
+ { 0x0730, 0x074A },
+ { 0x07A6, 0x07B0 },
+ { 0x07EB, 0x07F3 },
+ { 0x0901, 0x0903 },
+ { 0x093C, 0x093C },
+ { 0x093E, 0x094D },
+ { 0x0951, 0x0954 },
+ { 0x0962, 0x0963 },
+ { 0x0981, 0x0983 },
+ { 0x09BC, 0x09BC },
+ { 0x09BE, 0x09C4 },
+ { 0x09C7, 0x09C8 },
+ { 0x09CB, 0x09CD },
+ { 0x09D7, 0x09D7 },
+ { 0x09E2, 0x09E3 },
+ { 0x0A01, 0x0A03 },
+ { 0x0A3C, 0x0A3C },
+ { 0x0A3E, 0x0A42 },
+ { 0x0A47, 0x0A48 },
+ { 0x0A4B, 0x0A4D },
+ { 0x0A51, 0x0A51 },
+ { 0x0A70, 0x0A71 },
+ { 0x0A75, 0x0A75 },
+ { 0x0A81, 0x0A83 },
+ { 0x0ABC, 0x0ABC },
+ { 0x0ABE, 0x0AC5 },
+ { 0x0AC7, 0x0AC9 },
+ { 0x0ACB, 0x0ACD },
+ { 0x0AE2, 0x0AE3 },
+ { 0x0B01, 0x0B03 },
+ { 0x0B3C, 0x0B3C },
+ { 0x0B3E, 0x0B44 },
+ { 0x0B47, 0x0B48 },
+ { 0x0B4B, 0x0B4D },
+ { 0x0B56, 0x0B57 },
+ { 0x0B62, 0x0B63 },
+ { 0x0B82, 0x0B82 },
+ { 0x0BBE, 0x0BC2 },
+ { 0x0BC6, 0x0BC8 },
+ { 0x0BCA, 0x0BCD },
+ { 0x0BD7, 0x0BD7 },
+ { 0x0C01, 0x0C03 },
+ { 0x0C3E, 0x0C44 },
+ { 0x0C46, 0x0C48 },
+ { 0x0C4A, 0x0C4D },
+ { 0x0C55, 0x0C56 },
+ { 0x0C62, 0x0C63 },
+ { 0x0C82, 0x0C83 },
+ { 0x0CBC, 0x0CBC },
+ { 0x0CBE, 0x0CC4 },
+ { 0x0CC6, 0x0CC8 },
+ { 0x0CCA, 0x0CCD },
+ { 0x0CD5, 0x0CD6 },
+ { 0x0CE2, 0x0CE3 },
+ { 0x0D02, 0x0D03 },
+ { 0x0D3E, 0x0D44 },
+ { 0x0D46, 0x0D48 },
+ { 0x0D4A, 0x0D4D },
+ { 0x0D57, 0x0D57 },
+ { 0x0D62, 0x0D63 },
+ { 0x0D82, 0x0D83 },
+ { 0x0DCA, 0x0DCA },
+ { 0x0DCF, 0x0DD4 },
+ { 0x0DD6, 0x0DD6 },
+ { 0x0DD8, 0x0DDF },
+ { 0x0DF2, 0x0DF3 },
+ { 0x0E31, 0x0E31 },
+ { 0x0E34, 0x0E3A },
+ { 0x0E47, 0x0E4E },
+ { 0x0EB1, 0x0EB1 },
+ { 0x0EB4, 0x0EB9 },
+ { 0x0EBB, 0x0EBC },
+ { 0x0EC8, 0x0ECD },
+ { 0x0F18, 0x0F19 },
+ { 0x0F35, 0x0F35 },
+ { 0x0F37, 0x0F37 },
+ { 0x0F39, 0x0F39 },
+ { 0x0F3E, 0x0F3F },
+ { 0x0F71, 0x0F84 },
+ { 0x0F86, 0x0F87 },
+ { 0x0F90, 0x0F97 },
+ { 0x0F99, 0x0FBC },
+ { 0x0FC6, 0x0FC6 },
+ { 0x102B, 0x103E },
+ { 0x1056, 0x1059 },
+ { 0x105E, 0x1060 },
+ { 0x1062, 0x1064 },
+ { 0x1067, 0x106D },
+ { 0x1071, 0x1074 },
+ { 0x1082, 0x108D },
+ { 0x108F, 0x108F },
+ { 0x135F, 0x135F },
+ { 0x1712, 0x1714 },
+ { 0x1732, 0x1734 },
+ { 0x1752, 0x1753 },
+ { 0x1772, 0x1773 },
+ { 0x17B6, 0x17D3 },
+ { 0x17DD, 0x17DD },
+ { 0x180B, 0x180D },
+ { 0x18A9, 0x18A9 },
+ { 0x1920, 0x192B },
+ { 0x1930, 0x193B },
+ { 0x19B0, 0x19C0 },
+ { 0x19C8, 0x19C9 },
+ { 0x1A17, 0x1A1B },
+ { 0x1B00, 0x1B04 },
+ { 0x1B34, 0x1B44 },
+ { 0x1B6B, 0x1B73 },
+ { 0x1B80, 0x1B82 },
+ { 0x1BA1, 0x1BAA },
+ { 0x1C24, 0x1C37 },
+ { 0x1DC0, 0x1DE6 },
+ { 0x1DFE, 0x1DFF },
+ { 0x20D0, 0x20F0 },
+ { 0x2DE0, 0x2DFF },
+ { 0x302A, 0x302F },
+ { 0x3099, 0x309A },
+ { 0xA66F, 0xA672 },
+ { 0xA67C, 0xA67D },
+ { 0xA802, 0xA802 },
+ { 0xA806, 0xA806 },
+ { 0xA80B, 0xA80B },
+ { 0xA823, 0xA827 },
+ { 0xA880, 0xA881 },
+ { 0xA8B4, 0xA8C4 },
+ { 0xA926, 0xA92D },
+ { 0xA947, 0xA953 },
+ { 0xAA29, 0xAA36 },
+ { 0xAA43, 0xAA43 },
+ { 0xAA4C, 0xAA4D },
+ { 0xFB1E, 0xFB1E },
+ { 0xFE00, 0xFE0F },
+ { 0xFE20, 0xFE26 },
+ { 0x101FD, 0x101FD },
+ { 0x10A01, 0x10A03 },
+ { 0x10A05, 0x10A06 },
+ { 0x10A0C, 0x10A0F },
+ { 0x10A38, 0x10A3A },
+ { 0x10A3F, 0x10A3F },
+ { 0x1D165, 0x1D169 },
+ { 0x1D16D, 0x1D172 },
+ { 0x1D17B, 0x1D182 },
+ { 0x1D185, 0x1D18B },
+ { 0x1D1AA, 0x1D1AD },
+ { 0x1D242, 0x1D244 },
+ { 0xE0100, 0xE01EF }
+
+#define PREDICATE(c) uc_is_property_combining (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_composite.c b/tests/unictype/test-pr_composite.c
new file mode 100644
index 00000000..c7aff1e8
--- /dev/null
+++ b/tests/unictype/test-pr_composite.c
@@ -0,0 +1,291 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x00BC, 0x00BE },
+ { 0x00C0, 0x00C5 },
+ { 0x00C7, 0x00CF },
+ { 0x00D1, 0x00D6 },
+ { 0x00D9, 0x00DD },
+ { 0x00E0, 0x00E5 },
+ { 0x00E7, 0x00EF },
+ { 0x00F1, 0x00F6 },
+ { 0x00F9, 0x00FD },
+ { 0x00FF, 0x010F },
+ { 0x0112, 0x0125 },
+ { 0x0128, 0x0130 },
+ { 0x0132, 0x0137 },
+ { 0x0139, 0x0140 },
+ { 0x0143, 0x0149 },
+ { 0x014C, 0x0151 },
+ { 0x0154, 0x0165 },
+ { 0x0168, 0x017E },
+ { 0x01A0, 0x01A1 },
+ { 0x01AF, 0x01B0 },
+ { 0x01C4, 0x01DC },
+ { 0x01DE, 0x01E3 },
+ { 0x01E6, 0x01F5 },
+ { 0x01F8, 0x021B },
+ { 0x021E, 0x021F },
+ { 0x0226, 0x0233 },
+ { 0x0344, 0x0344 },
+ { 0x0385, 0x0386 },
+ { 0x0388, 0x038A },
+ { 0x038C, 0x038C },
+ { 0x038E, 0x0390 },
+ { 0x03AA, 0x03B0 },
+ { 0x03CA, 0x03CE },
+ { 0x03D3, 0x03D4 },
+ { 0x0400, 0x0401 },
+ { 0x0403, 0x0403 },
+ { 0x0407, 0x0407 },
+ { 0x040C, 0x040E },
+ { 0x0419, 0x0419 },
+ { 0x0439, 0x0439 },
+ { 0x0450, 0x0451 },
+ { 0x0453, 0x0453 },
+ { 0x0457, 0x0457 },
+ { 0x045C, 0x045E },
+ { 0x0476, 0x0477 },
+ { 0x04C1, 0x04C2 },
+ { 0x04D0, 0x04D3 },
+ { 0x04D6, 0x04D7 },
+ { 0x04DA, 0x04DF },
+ { 0x04E2, 0x04E7 },
+ { 0x04EA, 0x04F5 },
+ { 0x04F8, 0x04F9 },
+ { 0x0587, 0x0587 },
+ { 0x0622, 0x0626 },
+ { 0x0675, 0x0678 },
+ { 0x06C0, 0x06C0 },
+ { 0x06C2, 0x06C2 },
+ { 0x06D3, 0x06D3 },
+ { 0x0929, 0x0929 },
+ { 0x0931, 0x0931 },
+ { 0x0934, 0x0934 },
+ { 0x0958, 0x095F },
+ { 0x09CB, 0x09CC },
+ { 0x09DC, 0x09DD },
+ { 0x09DF, 0x09DF },
+ { 0x0A33, 0x0A33 },
+ { 0x0A36, 0x0A36 },
+ { 0x0A59, 0x0A5B },
+ { 0x0A5E, 0x0A5E },
+ { 0x0B48, 0x0B48 },
+ { 0x0B4B, 0x0B4C },
+ { 0x0B5C, 0x0B5D },
+ { 0x0B94, 0x0B94 },
+ { 0x0BCA, 0x0BCC },
+ { 0x0C48, 0x0C48 },
+ { 0x0CC0, 0x0CC0 },
+ { 0x0CC7, 0x0CC8 },
+ { 0x0CCA, 0x0CCB },
+ { 0x0D4A, 0x0D4C },
+ { 0x0DDA, 0x0DDA },
+ { 0x0DDC, 0x0DDE },
+ { 0x0E33, 0x0E33 },
+ { 0x0EB3, 0x0EB3 },
+ { 0x0EDC, 0x0EDD },
+ { 0x0F43, 0x0F43 },
+ { 0x0F4D, 0x0F4D },
+ { 0x0F52, 0x0F52 },
+ { 0x0F57, 0x0F57 },
+ { 0x0F5C, 0x0F5C },
+ { 0x0F69, 0x0F69 },
+ { 0x0F73, 0x0F73 },
+ { 0x0F75, 0x0F79 },
+ { 0x0F81, 0x0F81 },
+ { 0x0F93, 0x0F93 },
+ { 0x0F9D, 0x0F9D },
+ { 0x0FA2, 0x0FA2 },
+ { 0x0FA7, 0x0FA7 },
+ { 0x0FAC, 0x0FAC },
+ { 0x0FB9, 0x0FB9 },
+ { 0x1026, 0x1026 },
+ { 0x1B06, 0x1B06 },
+ { 0x1B08, 0x1B08 },
+ { 0x1B0A, 0x1B0A },
+ { 0x1B0C, 0x1B0C },
+ { 0x1B0E, 0x1B0E },
+ { 0x1B12, 0x1B12 },
+ { 0x1B3B, 0x1B3B },
+ { 0x1B3D, 0x1B3D },
+ { 0x1B40, 0x1B41 },
+ { 0x1B43, 0x1B43 },
+ { 0x1E00, 0x1E9B },
+ { 0x1EA0, 0x1EF9 },
+ { 0x1F00, 0x1F15 },
+ { 0x1F18, 0x1F1D },
+ { 0x1F20, 0x1F45 },
+ { 0x1F48, 0x1F4D },
+ { 0x1F50, 0x1F57 },
+ { 0x1F59, 0x1F59 },
+ { 0x1F5B, 0x1F5B },
+ { 0x1F5D, 0x1F5D },
+ { 0x1F5F, 0x1F70 },
+ { 0x1F72, 0x1F72 },
+ { 0x1F74, 0x1F74 },
+ { 0x1F76, 0x1F76 },
+ { 0x1F78, 0x1F78 },
+ { 0x1F7A, 0x1F7A },
+ { 0x1F7C, 0x1F7C },
+ { 0x1F80, 0x1FB4 },
+ { 0x1FB6, 0x1FBA },
+ { 0x1FBC, 0x1FBC },
+ { 0x1FC1, 0x1FC4 },
+ { 0x1FC6, 0x1FC8 },
+ { 0x1FCA, 0x1FCA },
+ { 0x1FCC, 0x1FD2 },
+ { 0x1FD6, 0x1FDA },
+ { 0x1FDD, 0x1FE2 },
+ { 0x1FE4, 0x1FEA },
+ { 0x1FEC, 0x1FED },
+ { 0x1FF2, 0x1FF4 },
+ { 0x1FF6, 0x1FF8 },
+ { 0x1FFA, 0x1FFA },
+ { 0x1FFC, 0x1FFC },
+ { 0x2025, 0x2026 },
+ { 0x2033, 0x2034 },
+ { 0x2036, 0x2037 },
+ { 0x203C, 0x203C },
+ { 0x2047, 0x2049 },
+ { 0x2057, 0x2057 },
+ { 0x20A8, 0x20A8 },
+ { 0x2100, 0x2101 },
+ { 0x2103, 0x2103 },
+ { 0x2105, 0x2106 },
+ { 0x2109, 0x2109 },
+ { 0x2116, 0x2116 },
+ { 0x2120, 0x2122 },
+ { 0x213B, 0x213B },
+ { 0x2153, 0x215F },
+ { 0x2161, 0x2163 },
+ { 0x2165, 0x2168 },
+ { 0x216A, 0x216B },
+ { 0x2171, 0x2173 },
+ { 0x2175, 0x2178 },
+ { 0x217A, 0x217B },
+ { 0x219A, 0x219B },
+ { 0x21AE, 0x21AE },
+ { 0x21CD, 0x21CF },
+ { 0x2204, 0x2204 },
+ { 0x2209, 0x2209 },
+ { 0x220C, 0x220C },
+ { 0x2224, 0x2224 },
+ { 0x2226, 0x2226 },
+ { 0x222C, 0x222D },
+ { 0x222F, 0x2230 },
+ { 0x2241, 0x2241 },
+ { 0x2244, 0x2244 },
+ { 0x2247, 0x2247 },
+ { 0x2249, 0x2249 },
+ { 0x2260, 0x2260 },
+ { 0x2262, 0x2262 },
+ { 0x226D, 0x2271 },
+ { 0x2274, 0x2275 },
+ { 0x2278, 0x2279 },
+ { 0x2280, 0x2281 },
+ { 0x2284, 0x2285 },
+ { 0x2288, 0x2289 },
+ { 0x22AC, 0x22AF },
+ { 0x22E0, 0x22E3 },
+ { 0x22EA, 0x22ED },
+ { 0x2469, 0x24B5 },
+ { 0x2A0C, 0x2A0C },
+ { 0x2A74, 0x2A76 },
+ { 0x2ADC, 0x2ADC },
+ { 0x304C, 0x304C },
+ { 0x304E, 0x304E },
+ { 0x3050, 0x3050 },
+ { 0x3052, 0x3052 },
+ { 0x3054, 0x3054 },
+ { 0x3056, 0x3056 },
+ { 0x3058, 0x3058 },
+ { 0x305A, 0x305A },
+ { 0x305C, 0x305C },
+ { 0x305E, 0x305E },
+ { 0x3060, 0x3060 },
+ { 0x3062, 0x3062 },
+ { 0x3065, 0x3065 },
+ { 0x3067, 0x3067 },
+ { 0x3069, 0x3069 },
+ { 0x3070, 0x3071 },
+ { 0x3073, 0x3074 },
+ { 0x3076, 0x3077 },
+ { 0x3079, 0x307A },
+ { 0x307C, 0x307D },
+ { 0x3094, 0x3094 },
+ { 0x309E, 0x309F },
+ { 0x30AC, 0x30AC },
+ { 0x30AE, 0x30AE },
+ { 0x30B0, 0x30B0 },
+ { 0x30B2, 0x30B2 },
+ { 0x30B4, 0x30B4 },
+ { 0x30B6, 0x30B6 },
+ { 0x30B8, 0x30B8 },
+ { 0x30BA, 0x30BA },
+ { 0x30BC, 0x30BC },
+ { 0x30BE, 0x30BE },
+ { 0x30C0, 0x30C0 },
+ { 0x30C2, 0x30C2 },
+ { 0x30C5, 0x30C5 },
+ { 0x30C7, 0x30C7 },
+ { 0x30C9, 0x30C9 },
+ { 0x30D0, 0x30D1 },
+ { 0x30D3, 0x30D4 },
+ { 0x30D6, 0x30D7 },
+ { 0x30D9, 0x30DA },
+ { 0x30DC, 0x30DD },
+ { 0x30F4, 0x30F4 },
+ { 0x30F7, 0x30FA },
+ { 0x30FE, 0x30FF },
+ { 0x3200, 0x321E },
+ { 0x3220, 0x3243 },
+ { 0x3250, 0x325F },
+ { 0x326E, 0x327E },
+ { 0x32B1, 0x32CF },
+ { 0x3300, 0x33FF },
+ { 0xAC00, 0xD7A4 },
+ { 0xFB00, 0xFB06 },
+ { 0xFB13, 0xFB17 },
+ { 0xFB1D, 0xFB1D },
+ { 0xFB1F, 0xFB1F },
+ { 0xFB2A, 0xFB36 },
+ { 0xFB38, 0xFB3C },
+ { 0xFB3E, 0xFB3E },
+ { 0xFB40, 0xFB41 },
+ { 0xFB43, 0xFB44 },
+ { 0xFB46, 0xFB4F },
+ { 0xFBEA, 0xFBFB },
+ { 0xFC00, 0xFC5D },
+ { 0xFC64, 0xFD3D },
+ { 0xFD50, 0xFD8F },
+ { 0xFD92, 0xFDC7 },
+ { 0xFDF0, 0xFDFC },
+ { 0xFE71, 0xFE71 },
+ { 0xFE77, 0xFE77 },
+ { 0xFE79, 0xFE79 },
+ { 0xFE7B, 0xFE7B },
+ { 0xFE7D, 0xFE7D },
+ { 0xFE7F, 0xFE7F },
+ { 0xFEF5, 0xFEFC },
+ { 0x1D15E, 0x1D164 },
+ { 0x1D1BB, 0x1D1C0 }
+
+#define PREDICATE(c) uc_is_property_composite (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_currency_symbol.c b/tests/unictype/test-pr_currency_symbol.c
new file mode 100644
index 00000000..79a37068
--- /dev/null
+++ b/tests/unictype/test-pr_currency_symbol.c
@@ -0,0 +1,36 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0024, 0x0024 },
+ { 0x00A2, 0x00A5 },
+ { 0x060B, 0x060B },
+ { 0x09F2, 0x09F3 },
+ { 0x0AF1, 0x0AF1 },
+ { 0x0BF9, 0x0BF9 },
+ { 0x0E3F, 0x0E3F },
+ { 0x17DB, 0x17DB },
+ { 0x20A0, 0x20B5 },
+ { 0xFDFC, 0xFDFC },
+ { 0xFE69, 0xFE69 },
+ { 0xFF04, 0xFF04 },
+ { 0xFFE0, 0xFFE1 },
+ { 0xFFE5, 0xFFE6 }
+
+#define PREDICATE(c) uc_is_property_currency_symbol (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_dash.c b/tests/unictype/test-pr_dash.c
new file mode 100644
index 00000000..8089772a
--- /dev/null
+++ b/tests/unictype/test-pr_dash.c
@@ -0,0 +1,40 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x002D, 0x002D },
+ { 0x058A, 0x058A },
+ { 0x05BE, 0x05BE },
+ { 0x1806, 0x1806 },
+ { 0x2010, 0x2015 },
+ { 0x2053, 0x2053 },
+ { 0x207B, 0x207B },
+ { 0x208B, 0x208B },
+ { 0x2212, 0x2212 },
+ { 0x2E17, 0x2E17 },
+ { 0x2E1A, 0x2E1A },
+ { 0x301C, 0x301C },
+ { 0x3030, 0x3030 },
+ { 0x30A0, 0x30A0 },
+ { 0xFE31, 0xFE32 },
+ { 0xFE58, 0xFE58 },
+ { 0xFE63, 0xFE63 },
+ { 0xFF0D, 0xFF0D }
+
+#define PREDICATE(c) uc_is_property_dash (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_decimal_digit.c b/tests/unictype/test-pr_decimal_digit.c
new file mode 100644
index 00000000..8d6c284b
--- /dev/null
+++ b/tests/unictype/test-pr_decimal_digit.c
@@ -0,0 +1,55 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0030, 0x0039 },
+ { 0x0660, 0x0669 },
+ { 0x06F0, 0x06F9 },
+ { 0x07C0, 0x07C9 },
+ { 0x0966, 0x096F },
+ { 0x09E6, 0x09EF },
+ { 0x0A66, 0x0A6F },
+ { 0x0AE6, 0x0AEF },
+ { 0x0B66, 0x0B6F },
+ { 0x0BE6, 0x0BEF },
+ { 0x0C66, 0x0C6F },
+ { 0x0CE6, 0x0CEF },
+ { 0x0D66, 0x0D6F },
+ { 0x0E50, 0x0E59 },
+ { 0x0ED0, 0x0ED9 },
+ { 0x0F20, 0x0F29 },
+ { 0x1040, 0x1049 },
+ { 0x1090, 0x1099 },
+ { 0x17E0, 0x17E9 },
+ { 0x1810, 0x1819 },
+ { 0x1946, 0x194F },
+ { 0x19D0, 0x19D9 },
+ { 0x1B50, 0x1B59 },
+ { 0x1BB0, 0x1BB9 },
+ { 0x1C40, 0x1C49 },
+ { 0x1C50, 0x1C59 },
+ { 0xA620, 0xA629 },
+ { 0xA8D0, 0xA8D9 },
+ { 0xA900, 0xA909 },
+ { 0xAA50, 0xAA59 },
+ { 0xFF10, 0xFF19 },
+ { 0x104A0, 0x104A9 },
+ { 0x1D7CE, 0x1D7FF }
+
+#define PREDICATE(c) uc_is_property_decimal_digit (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_default_ignorable_code_point.c b/tests/unictype/test-pr_default_ignorable_code_point.c
new file mode 100644
index 00000000..894bc7fd
--- /dev/null
+++ b/tests/unictype/test-pr_default_ignorable_code_point.c
@@ -0,0 +1,37 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x00AD, 0x00AD },
+ { 0x034F, 0x034F },
+ { 0x115F, 0x1160 },
+ { 0x17B4, 0x17B5 },
+ { 0x180B, 0x180D },
+ { 0x200B, 0x200F },
+ { 0x202A, 0x202E },
+ { 0x2060, 0x206F },
+ { 0x3164, 0x3164 },
+ { 0xFE00, 0xFE0F },
+ { 0xFEFF, 0xFEFF },
+ { 0xFFA0, 0xFFA0 },
+ { 0xFFF0, 0xFFF8 },
+ { 0x1D173, 0x1D17A },
+ { 0xE0000, 0xE0FFF }
+
+#define PREDICATE(c) uc_is_property_default_ignorable_code_point (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_deprecated.c b/tests/unictype/test-pr_deprecated.c
new file mode 100644
index 00000000..f8af73d9
--- /dev/null
+++ b/tests/unictype/test-pr_deprecated.c
@@ -0,0 +1,28 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0340, 0x0341 },
+ { 0x17A3, 0x17A3 },
+ { 0x17D3, 0x17D3 },
+ { 0x206A, 0x206F },
+ { 0xE0001, 0xE0001 },
+ { 0xE0020, 0xE007F }
+
+#define PREDICATE(c) uc_is_property_deprecated (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_diacritic.c b/tests/unictype/test-pr_diacritic.c
new file mode 100644
index 00000000..ae21cd42
--- /dev/null
+++ b/tests/unictype/test-pr_diacritic.c
@@ -0,0 +1,124 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x005E, 0x005E },
+ { 0x0060, 0x0060 },
+ { 0x00A8, 0x00A8 },
+ { 0x00AF, 0x00AF },
+ { 0x00B4, 0x00B4 },
+ { 0x00B7, 0x00B8 },
+ { 0x02B0, 0x034E },
+ { 0x0350, 0x0357 },
+ { 0x035D, 0x0362 },
+ { 0x0374, 0x0375 },
+ { 0x037A, 0x037A },
+ { 0x0384, 0x0385 },
+ { 0x0483, 0x0487 },
+ { 0x0559, 0x0559 },
+ { 0x0591, 0x05A1 },
+ { 0x05A3, 0x05BD },
+ { 0x05BF, 0x05BF },
+ { 0x05C1, 0x05C2 },
+ { 0x05C4, 0x05C4 },
+ { 0x064B, 0x0652 },
+ { 0x0657, 0x0658 },
+ { 0x06DF, 0x06E0 },
+ { 0x06E5, 0x06E6 },
+ { 0x06EA, 0x06EC },
+ { 0x0730, 0x074A },
+ { 0x07A6, 0x07B0 },
+ { 0x07EB, 0x07F5 },
+ { 0x093C, 0x093C },
+ { 0x094D, 0x094D },
+ { 0x0951, 0x0954 },
+ { 0x0971, 0x0971 },
+ { 0x09BC, 0x09BC },
+ { 0x09CD, 0x09CD },
+ { 0x0A3C, 0x0A3C },
+ { 0x0A4D, 0x0A4D },
+ { 0x0ABC, 0x0ABC },
+ { 0x0ACD, 0x0ACD },
+ { 0x0B3C, 0x0B3C },
+ { 0x0B4D, 0x0B4D },
+ { 0x0BCD, 0x0BCD },
+ { 0x0C4D, 0x0C4D },
+ { 0x0CBC, 0x0CBC },
+ { 0x0CCD, 0x0CCD },
+ { 0x0D4D, 0x0D4D },
+ { 0x0DCA, 0x0DCA },
+ { 0x0E47, 0x0E4C },
+ { 0x0E4E, 0x0E4E },
+ { 0x0EC8, 0x0ECC },
+ { 0x0F18, 0x0F19 },
+ { 0x0F35, 0x0F35 },
+ { 0x0F37, 0x0F37 },
+ { 0x0F39, 0x0F39 },
+ { 0x0F3E, 0x0F3F },
+ { 0x0F82, 0x0F84 },
+ { 0x0F86, 0x0F87 },
+ { 0x0FC6, 0x0FC6 },
+ { 0x1037, 0x1037 },
+ { 0x1039, 0x103A },
+ { 0x1087, 0x108D },
+ { 0x108F, 0x108F },
+ { 0x17C9, 0x17D3 },
+ { 0x17DD, 0x17DD },
+ { 0x1939, 0x193B },
+ { 0x1B34, 0x1B34 },
+ { 0x1B44, 0x1B44 },
+ { 0x1B6B, 0x1B73 },
+ { 0x1BAA, 0x1BAA },
+ { 0x1C36, 0x1C37 },
+ { 0x1C78, 0x1C7D },
+ { 0x1D2C, 0x1D6A },
+ { 0x1DC4, 0x1DCF },
+ { 0x1DFE, 0x1DFF },
+ { 0x1FBD, 0x1FBD },
+ { 0x1FBF, 0x1FC1 },
+ { 0x1FCD, 0x1FCF },
+ { 0x1FDD, 0x1FDF },
+ { 0x1FED, 0x1FEF },
+ { 0x1FFD, 0x1FFE },
+ { 0x2E2F, 0x2E2F },
+ { 0x302A, 0x302F },
+ { 0x3099, 0x309C },
+ { 0x30FC, 0x30FC },
+ { 0xA66F, 0xA66F },
+ { 0xA67C, 0xA67D },
+ { 0xA67F, 0xA67F },
+ { 0xA717, 0xA721 },
+ { 0xA788, 0xA788 },
+ { 0xA8C4, 0xA8C4 },
+ { 0xA92B, 0xA92E },
+ { 0xA953, 0xA953 },
+ { 0xFB1E, 0xFB1E },
+ { 0xFE20, 0xFE26 },
+ { 0xFF3E, 0xFF3E },
+ { 0xFF40, 0xFF40 },
+ { 0xFF70, 0xFF70 },
+ { 0xFF9E, 0xFF9F },
+ { 0xFFE3, 0xFFE3 },
+ { 0x1D167, 0x1D169 },
+ { 0x1D16D, 0x1D172 },
+ { 0x1D17B, 0x1D182 },
+ { 0x1D185, 0x1D18B },
+ { 0x1D1AA, 0x1D1AD }
+
+#define PREDICATE(c) uc_is_property_diacritic (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_extender.c b/tests/unictype/test-pr_extender.c
new file mode 100644
index 00000000..acca2ed0
--- /dev/null
+++ b/tests/unictype/test-pr_extender.c
@@ -0,0 +1,38 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x00B7, 0x00B7 },
+ { 0x02D0, 0x02D1 },
+ { 0x0640, 0x0640 },
+ { 0x07FA, 0x07FA },
+ { 0x0E46, 0x0E46 },
+ { 0x0EC6, 0x0EC6 },
+ { 0x1843, 0x1843 },
+ { 0x1C36, 0x1C36 },
+ { 0x1C7B, 0x1C7B },
+ { 0x3005, 0x3005 },
+ { 0x3031, 0x3035 },
+ { 0x309D, 0x309E },
+ { 0x30FC, 0x30FE },
+ { 0xA015, 0xA015 },
+ { 0xA60C, 0xA60C },
+ { 0xFF70, 0xFF70 }
+
+#define PREDICATE(c) uc_is_property_extender (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_format_control.c b/tests/unictype/test-pr_format_control.c
new file mode 100644
index 00000000..258996bd
--- /dev/null
+++ b/tests/unictype/test-pr_format_control.c
@@ -0,0 +1,30 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x00AD, 0x00AD },
+ { 0x070F, 0x070F },
+ { 0x200B, 0x200B },
+ { 0x2060, 0x2064 },
+ { 0x206A, 0x206F },
+ { 0x1D173, 0x1D17A },
+ { 0xE0001, 0xE0001 },
+ { 0xE0020, 0xE007F }
+
+#define PREDICATE(c) uc_is_property_format_control (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_grapheme_base.c b/tests/unictype/test-pr_grapheme_base.c
new file mode 100644
index 00000000..2fe8bf24
--- /dev/null
+++ b/tests/unictype/test-pr_grapheme_base.c
@@ -0,0 +1,524 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0020, 0x007E },
+ { 0x00A0, 0x00AC },
+ { 0x00AE, 0x02FF },
+ { 0x0370, 0x0377 },
+ { 0x037A, 0x037E },
+ { 0x0384, 0x038A },
+ { 0x038C, 0x038C },
+ { 0x038E, 0x03A1 },
+ { 0x03A3, 0x0482 },
+ { 0x048A, 0x0523 },
+ { 0x0531, 0x0556 },
+ { 0x0559, 0x055F },
+ { 0x0561, 0x0587 },
+ { 0x0589, 0x058A },
+ { 0x05BE, 0x05BE },
+ { 0x05C0, 0x05C0 },
+ { 0x05C3, 0x05C3 },
+ { 0x05C6, 0x05C6 },
+ { 0x05D0, 0x05EA },
+ { 0x05F0, 0x05F4 },
+ { 0x0606, 0x060F },
+ { 0x061B, 0x061B },
+ { 0x061E, 0x061F },
+ { 0x0621, 0x064A },
+ { 0x0660, 0x066F },
+ { 0x0671, 0x06D5 },
+ { 0x06E5, 0x06E6 },
+ { 0x06E9, 0x06E9 },
+ { 0x06EE, 0x070D },
+ { 0x0710, 0x0710 },
+ { 0x0712, 0x072F },
+ { 0x074D, 0x07A5 },
+ { 0x07B1, 0x07B1 },
+ { 0x07C0, 0x07EA },
+ { 0x07F4, 0x07FA },
+ { 0x0903, 0x0939 },
+ { 0x093D, 0x0940 },
+ { 0x0949, 0x094C },
+ { 0x0950, 0x0950 },
+ { 0x0958, 0x0961 },
+ { 0x0964, 0x0972 },
+ { 0x097B, 0x097F },
+ { 0x0982, 0x0983 },
+ { 0x0985, 0x098C },
+ { 0x098F, 0x0990 },
+ { 0x0993, 0x09A8 },
+ { 0x09AA, 0x09B0 },
+ { 0x09B2, 0x09B2 },
+ { 0x09B6, 0x09B9 },
+ { 0x09BD, 0x09BD },
+ { 0x09BF, 0x09C0 },
+ { 0x09C7, 0x09C8 },
+ { 0x09CB, 0x09CC },
+ { 0x09CE, 0x09CE },
+ { 0x09DC, 0x09DD },
+ { 0x09DF, 0x09E1 },
+ { 0x09E6, 0x09FA },
+ { 0x0A03, 0x0A03 },
+ { 0x0A05, 0x0A0A },
+ { 0x0A0F, 0x0A10 },
+ { 0x0A13, 0x0A28 },
+ { 0x0A2A, 0x0A30 },
+ { 0x0A32, 0x0A33 },
+ { 0x0A35, 0x0A36 },
+ { 0x0A38, 0x0A39 },
+ { 0x0A3E, 0x0A40 },
+ { 0x0A59, 0x0A5C },
+ { 0x0A5E, 0x0A5E },
+ { 0x0A66, 0x0A6F },
+ { 0x0A72, 0x0A74 },
+ { 0x0A83, 0x0A83 },
+ { 0x0A85, 0x0A8D },
+ { 0x0A8F, 0x0A91 },
+ { 0x0A93, 0x0AA8 },
+ { 0x0AAA, 0x0AB0 },
+ { 0x0AB2, 0x0AB3 },
+ { 0x0AB5, 0x0AB9 },
+ { 0x0ABD, 0x0AC0 },
+ { 0x0AC9, 0x0AC9 },
+ { 0x0ACB, 0x0ACC },
+ { 0x0AD0, 0x0AD0 },
+ { 0x0AE0, 0x0AE1 },
+ { 0x0AE6, 0x0AEF },
+ { 0x0AF1, 0x0AF1 },
+ { 0x0B02, 0x0B03 },
+ { 0x0B05, 0x0B0C },
+ { 0x0B0F, 0x0B10 },
+ { 0x0B13, 0x0B28 },
+ { 0x0B2A, 0x0B30 },
+ { 0x0B32, 0x0B33 },
+ { 0x0B35, 0x0B39 },
+ { 0x0B3D, 0x0B3D },
+ { 0x0B40, 0x0B40 },
+ { 0x0B47, 0x0B48 },
+ { 0x0B4B, 0x0B4C },
+ { 0x0B5C, 0x0B5D },
+ { 0x0B5F, 0x0B61 },
+ { 0x0B66, 0x0B71 },
+ { 0x0B83, 0x0B83 },
+ { 0x0B85, 0x0B8A },
+ { 0x0B8E, 0x0B90 },
+ { 0x0B92, 0x0B95 },
+ { 0x0B99, 0x0B9A },
+ { 0x0B9C, 0x0B9C },
+ { 0x0B9E, 0x0B9F },
+ { 0x0BA3, 0x0BA4 },
+ { 0x0BA8, 0x0BAA },
+ { 0x0BAE, 0x0BB9 },
+ { 0x0BBF, 0x0BBF },
+ { 0x0BC1, 0x0BC2 },
+ { 0x0BC6, 0x0BC8 },
+ { 0x0BCA, 0x0BCC },
+ { 0x0BD0, 0x0BD0 },
+ { 0x0BE6, 0x0BFA },
+ { 0x0C01, 0x0C03 },
+ { 0x0C05, 0x0C0C },
+ { 0x0C0E, 0x0C10 },
+ { 0x0C12, 0x0C28 },
+ { 0x0C2A, 0x0C33 },
+ { 0x0C35, 0x0C39 },
+ { 0x0C3D, 0x0C3D },
+ { 0x0C41, 0x0C44 },
+ { 0x0C58, 0x0C59 },
+ { 0x0C60, 0x0C61 },
+ { 0x0C66, 0x0C6F },
+ { 0x0C78, 0x0C7F },
+ { 0x0C82, 0x0C83 },
+ { 0x0C85, 0x0C8C },
+ { 0x0C8E, 0x0C90 },
+ { 0x0C92, 0x0CA8 },
+ { 0x0CAA, 0x0CB3 },
+ { 0x0CB5, 0x0CB9 },
+ { 0x0CBD, 0x0CBE },
+ { 0x0CC0, 0x0CC1 },
+ { 0x0CC3, 0x0CC4 },
+ { 0x0CC7, 0x0CC8 },
+ { 0x0CCA, 0x0CCB },
+ { 0x0CDE, 0x0CDE },
+ { 0x0CE0, 0x0CE1 },
+ { 0x0CE6, 0x0CEF },
+ { 0x0CF1, 0x0CF2 },
+ { 0x0D02, 0x0D03 },
+ { 0x0D05, 0x0D0C },
+ { 0x0D0E, 0x0D10 },
+ { 0x0D12, 0x0D28 },
+ { 0x0D2A, 0x0D39 },
+ { 0x0D3D, 0x0D3D },
+ { 0x0D3F, 0x0D40 },
+ { 0x0D46, 0x0D48 },
+ { 0x0D4A, 0x0D4C },
+ { 0x0D60, 0x0D61 },
+ { 0x0D66, 0x0D75 },
+ { 0x0D79, 0x0D7F },
+ { 0x0D82, 0x0D83 },
+ { 0x0D85, 0x0D96 },
+ { 0x0D9A, 0x0DB1 },
+ { 0x0DB3, 0x0DBB },
+ { 0x0DBD, 0x0DBD },
+ { 0x0DC0, 0x0DC6 },
+ { 0x0DD0, 0x0DD1 },
+ { 0x0DD8, 0x0DDE },
+ { 0x0DF2, 0x0DF4 },
+ { 0x0E01, 0x0E30 },
+ { 0x0E32, 0x0E33 },
+ { 0x0E3F, 0x0E46 },
+ { 0x0E4F, 0x0E5B },
+ { 0x0E81, 0x0E82 },
+ { 0x0E84, 0x0E84 },
+ { 0x0E87, 0x0E88 },
+ { 0x0E8A, 0x0E8A },
+ { 0x0E8D, 0x0E8D },
+ { 0x0E94, 0x0E97 },
+ { 0x0E99, 0x0E9F },
+ { 0x0EA1, 0x0EA3 },
+ { 0x0EA5, 0x0EA5 },
+ { 0x0EA7, 0x0EA7 },
+ { 0x0EAA, 0x0EAB },
+ { 0x0EAD, 0x0EB0 },
+ { 0x0EB2, 0x0EB3 },
+ { 0x0EBD, 0x0EBD },
+ { 0x0EC0, 0x0EC4 },
+ { 0x0EC6, 0x0EC6 },
+ { 0x0ED0, 0x0ED9 },
+ { 0x0EDC, 0x0EDD },
+ { 0x0F00, 0x0F17 },
+ { 0x0F1A, 0x0F34 },
+ { 0x0F36, 0x0F36 },
+ { 0x0F38, 0x0F38 },
+ { 0x0F3A, 0x0F47 },
+ { 0x0F49, 0x0F6C },
+ { 0x0F7F, 0x0F7F },
+ { 0x0F85, 0x0F85 },
+ { 0x0F88, 0x0F8B },
+ { 0x0FBE, 0x0FC5 },
+ { 0x0FC7, 0x0FCC },
+ { 0x0FCE, 0x0FD4 },
+ { 0x1000, 0x102C },
+ { 0x1031, 0x1031 },
+ { 0x1038, 0x1038 },
+ { 0x103B, 0x103C },
+ { 0x103F, 0x1057 },
+ { 0x105A, 0x105D },
+ { 0x1061, 0x1070 },
+ { 0x1075, 0x1081 },
+ { 0x1083, 0x1084 },
+ { 0x1087, 0x108C },
+ { 0x108E, 0x1099 },
+ { 0x109E, 0x10C5 },
+ { 0x10D0, 0x10FC },
+ { 0x1100, 0x1159 },
+ { 0x115F, 0x11A2 },
+ { 0x11A8, 0x11F9 },
+ { 0x1200, 0x1248 },
+ { 0x124A, 0x124D },
+ { 0x1250, 0x1256 },
+ { 0x1258, 0x1258 },
+ { 0x125A, 0x125D },
+ { 0x1260, 0x1288 },
+ { 0x128A, 0x128D },
+ { 0x1290, 0x12B0 },
+ { 0x12B2, 0x12B5 },
+ { 0x12B8, 0x12BE },
+ { 0x12C0, 0x12C0 },
+ { 0x12C2, 0x12C5 },
+ { 0x12C8, 0x12D6 },
+ { 0x12D8, 0x1310 },
+ { 0x1312, 0x1315 },
+ { 0x1318, 0x135A },
+ { 0x1360, 0x137C },
+ { 0x1380, 0x1399 },
+ { 0x13A0, 0x13F4 },
+ { 0x1401, 0x1676 },
+ { 0x1680, 0x169C },
+ { 0x16A0, 0x16F0 },
+ { 0x1700, 0x170C },
+ { 0x170E, 0x1711 },
+ { 0x1720, 0x1731 },
+ { 0x1735, 0x1736 },
+ { 0x1740, 0x1751 },
+ { 0x1760, 0x176C },
+ { 0x176E, 0x1770 },
+ { 0x1780, 0x17B3 },
+ { 0x17B6, 0x17B6 },
+ { 0x17BE, 0x17C5 },
+ { 0x17C7, 0x17C8 },
+ { 0x17D4, 0x17DC },
+ { 0x17E0, 0x17E9 },
+ { 0x17F0, 0x17F9 },
+ { 0x1800, 0x180A },
+ { 0x180E, 0x180E },
+ { 0x1810, 0x1819 },
+ { 0x1820, 0x1877 },
+ { 0x1880, 0x18A8 },
+ { 0x18AA, 0x18AA },
+ { 0x1900, 0x191C },
+ { 0x1923, 0x1926 },
+ { 0x1929, 0x192B },
+ { 0x1930, 0x1931 },
+ { 0x1933, 0x1938 },
+ { 0x1940, 0x1940 },
+ { 0x1944, 0x196D },
+ { 0x1970, 0x1974 },
+ { 0x1980, 0x19A9 },
+ { 0x19B0, 0x19C9 },
+ { 0x19D0, 0x19D9 },
+ { 0x19DE, 0x1A16 },
+ { 0x1A19, 0x1A1B },
+ { 0x1A1E, 0x1A1F },
+ { 0x1B04, 0x1B33 },
+ { 0x1B35, 0x1B35 },
+ { 0x1B3B, 0x1B3B },
+ { 0x1B3D, 0x1B41 },
+ { 0x1B43, 0x1B4B },
+ { 0x1B50, 0x1B6A },
+ { 0x1B74, 0x1B7C },
+ { 0x1B82, 0x1BA1 },
+ { 0x1BA6, 0x1BA7 },
+ { 0x1BAA, 0x1BAA },
+ { 0x1BAE, 0x1BB9 },
+ { 0x1C00, 0x1C2B },
+ { 0x1C34, 0x1C35 },
+ { 0x1C3B, 0x1C49 },
+ { 0x1C4D, 0x1C7F },
+ { 0x1D00, 0x1DBF },
+ { 0x1E00, 0x1F15 },
+ { 0x1F18, 0x1F1D },
+ { 0x1F20, 0x1F45 },
+ { 0x1F48, 0x1F4D },
+ { 0x1F50, 0x1F57 },
+ { 0x1F59, 0x1F59 },
+ { 0x1F5B, 0x1F5B },
+ { 0x1F5D, 0x1F5D },
+ { 0x1F5F, 0x1F7D },
+ { 0x1F80, 0x1FB4 },
+ { 0x1FB6, 0x1FC4 },
+ { 0x1FC6, 0x1FD3 },
+ { 0x1FD6, 0x1FDB },
+ { 0x1FDD, 0x1FEF },
+ { 0x1FF2, 0x1FF4 },
+ { 0x1FF6, 0x1FFE },
+ { 0x2000, 0x200A },
+ { 0x2010, 0x2027 },
+ { 0x202F, 0x205F },
+ { 0x2070, 0x2071 },
+ { 0x2074, 0x208E },
+ { 0x2090, 0x2094 },
+ { 0x20A0, 0x20B5 },
+ { 0x2100, 0x214F },
+ { 0x2153, 0x2188 },
+ { 0x2190, 0x23E7 },
+ { 0x2400, 0x2426 },
+ { 0x2440, 0x244A },
+ { 0x2460, 0x269D },
+ { 0x26A0, 0x26BC },
+ { 0x26C0, 0x26C3 },
+ { 0x2701, 0x2704 },
+ { 0x2706, 0x2709 },
+ { 0x270C, 0x2727 },
+ { 0x2729, 0x274B },
+ { 0x274D, 0x274D },
+ { 0x274F, 0x2752 },
+ { 0x2756, 0x2756 },
+ { 0x2758, 0x275E },
+ { 0x2761, 0x2794 },
+ { 0x2798, 0x27AF },
+ { 0x27B1, 0x27BE },
+ { 0x27C0, 0x27CA },
+ { 0x27CC, 0x27CC },
+ { 0x27D0, 0x2B4C },
+ { 0x2B50, 0x2B54 },
+ { 0x2C00, 0x2C2E },
+ { 0x2C30, 0x2C5E },
+ { 0x2C60, 0x2C6F },
+ { 0x2C71, 0x2C7D },
+ { 0x2C80, 0x2CEA },
+ { 0x2CF9, 0x2D25 },
+ { 0x2D30, 0x2D65 },
+ { 0x2D6F, 0x2D6F },
+ { 0x2D80, 0x2D96 },
+ { 0x2DA0, 0x2DA6 },
+ { 0x2DA8, 0x2DAE },
+ { 0x2DB0, 0x2DB6 },
+ { 0x2DB8, 0x2DBE },
+ { 0x2DC0, 0x2DC6 },
+ { 0x2DC8, 0x2DCE },
+ { 0x2DD0, 0x2DD6 },
+ { 0x2DD8, 0x2DDE },
+ { 0x2E00, 0x2E30 },
+ { 0x2E80, 0x2E99 },
+ { 0x2E9B, 0x2EF3 },
+ { 0x2F00, 0x2FD5 },
+ { 0x2FF0, 0x2FFB },
+ { 0x3000, 0x3029 },
+ { 0x3030, 0x303F },
+ { 0x3041, 0x3096 },
+ { 0x309B, 0x30FF },
+ { 0x3105, 0x312D },
+ { 0x3131, 0x318E },
+ { 0x3190, 0x31B7 },
+ { 0x31C0, 0x31E3 },
+ { 0x31F0, 0x321E },
+ { 0x3220, 0x3243 },
+ { 0x3250, 0x32FE },
+ { 0x3300, 0x4DB5 },
+ { 0x4DC0, 0x9FC3 },
+ { 0xA000, 0xA48C },
+ { 0xA490, 0xA4C6 },
+ { 0xA500, 0xA62B },
+ { 0xA640, 0xA65F },
+ { 0xA662, 0xA66E },
+ { 0xA673, 0xA673 },
+ { 0xA67E, 0xA697 },
+ { 0xA700, 0xA78C },
+ { 0xA7FB, 0xA801 },
+ { 0xA803, 0xA805 },
+ { 0xA807, 0xA80A },
+ { 0xA80C, 0xA824 },
+ { 0xA827, 0xA82B },
+ { 0xA840, 0xA877 },
+ { 0xA880, 0xA8C3 },
+ { 0xA8CE, 0xA8D9 },
+ { 0xA900, 0xA925 },
+ { 0xA92E, 0xA946 },
+ { 0xA952, 0xA953 },
+ { 0xA95F, 0xA95F },
+ { 0xAA00, 0xAA28 },
+ { 0xAA2F, 0xAA30 },
+ { 0xAA33, 0xAA34 },
+ { 0xAA40, 0xAA42 },
+ { 0xAA44, 0xAA4B },
+ { 0xAA4D, 0xAA4D },
+ { 0xAA50, 0xAA59 },
+ { 0xAA5C, 0xAA5F },
+ { 0xAC00, 0xD7A3 },
+ { 0xF900, 0xFA2D },
+ { 0xFA30, 0xFA6A },
+ { 0xFA70, 0xFAD9 },
+ { 0xFB00, 0xFB06 },
+ { 0xFB13, 0xFB17 },
+ { 0xFB1D, 0xFB1D },
+ { 0xFB1F, 0xFB36 },
+ { 0xFB38, 0xFB3C },
+ { 0xFB3E, 0xFB3E },
+ { 0xFB40, 0xFB41 },
+ { 0xFB43, 0xFB44 },
+ { 0xFB46, 0xFBB1 },
+ { 0xFBD3, 0xFD3F },
+ { 0xFD50, 0xFD8F },
+ { 0xFD92, 0xFDC7 },
+ { 0xFDF0, 0xFDFD },
+ { 0xFE10, 0xFE19 },
+ { 0xFE30, 0xFE52 },
+ { 0xFE54, 0xFE66 },
+ { 0xFE68, 0xFE6B },
+ { 0xFE70, 0xFE74 },
+ { 0xFE76, 0xFEFC },
+ { 0xFF01, 0xFF9D },
+ { 0xFFA0, 0xFFBE },
+ { 0xFFC2, 0xFFC7 },
+ { 0xFFCA, 0xFFCF },
+ { 0xFFD2, 0xFFD7 },
+ { 0xFFDA, 0xFFDC },
+ { 0xFFE0, 0xFFE6 },
+ { 0xFFE8, 0xFFEE },
+ { 0xFFFC, 0xFFFD },
+ { 0x10000, 0x1000B },
+ { 0x1000D, 0x10026 },
+ { 0x10028, 0x1003A },
+ { 0x1003C, 0x1003D },
+ { 0x1003F, 0x1004D },
+ { 0x10050, 0x1005D },
+ { 0x10080, 0x100FA },
+ { 0x10100, 0x10102 },
+ { 0x10107, 0x10133 },
+ { 0x10137, 0x1018A },
+ { 0x10190, 0x1019B },
+ { 0x101D0, 0x101FC },
+ { 0x10280, 0x1029C },
+ { 0x102A0, 0x102D0 },
+ { 0x10300, 0x1031E },
+ { 0x10320, 0x10323 },
+ { 0x10330, 0x1034A },
+ { 0x10380, 0x1039D },
+ { 0x1039F, 0x103C3 },
+ { 0x103C8, 0x103D5 },
+ { 0x10400, 0x1049D },
+ { 0x104A0, 0x104A9 },
+ { 0x10800, 0x10805 },
+ { 0x10808, 0x10808 },
+ { 0x1080A, 0x10835 },
+ { 0x10837, 0x10838 },
+ { 0x1083C, 0x1083C },
+ { 0x1083F, 0x1083F },
+ { 0x10900, 0x10919 },
+ { 0x1091F, 0x10939 },
+ { 0x1093F, 0x1093F },
+ { 0x10A00, 0x10A00 },
+ { 0x10A10, 0x10A13 },
+ { 0x10A15, 0x10A17 },
+ { 0x10A19, 0x10A33 },
+ { 0x10A40, 0x10A47 },
+ { 0x10A50, 0x10A58 },
+ { 0x12000, 0x1236E },
+ { 0x12400, 0x12462 },
+ { 0x12470, 0x12473 },
+ { 0x1D000, 0x1D0F5 },
+ { 0x1D100, 0x1D126 },
+ { 0x1D129, 0x1D164 },
+ { 0x1D166, 0x1D166 },
+ { 0x1D16A, 0x1D16D },
+ { 0x1D183, 0x1D184 },
+ { 0x1D18C, 0x1D1A9 },
+ { 0x1D1AE, 0x1D1DD },
+ { 0x1D200, 0x1D241 },
+ { 0x1D245, 0x1D245 },
+ { 0x1D300, 0x1D356 },
+ { 0x1D360, 0x1D371 },
+ { 0x1D400, 0x1D454 },
+ { 0x1D456, 0x1D49C },
+ { 0x1D49E, 0x1D49F },
+ { 0x1D4A2, 0x1D4A2 },
+ { 0x1D4A5, 0x1D4A6 },
+ { 0x1D4A9, 0x1D4AC },
+ { 0x1D4AE, 0x1D4B9 },
+ { 0x1D4BB, 0x1D4BB },
+ { 0x1D4BD, 0x1D4C3 },
+ { 0x1D4C5, 0x1D505 },
+ { 0x1D507, 0x1D50A },
+ { 0x1D50D, 0x1D514 },
+ { 0x1D516, 0x1D51C },
+ { 0x1D51E, 0x1D539 },
+ { 0x1D53B, 0x1D53E },
+ { 0x1D540, 0x1D544 },
+ { 0x1D546, 0x1D546 },
+ { 0x1D54A, 0x1D550 },
+ { 0x1D552, 0x1D6A5 },
+ { 0x1D6A8, 0x1D7CB },
+ { 0x1D7CE, 0x1D7FF },
+ { 0x1F000, 0x1F02B },
+ { 0x1F030, 0x1F093 },
+ { 0x20000, 0x2A6D6 },
+ { 0x2F800, 0x2FA1D }
+
+#define PREDICATE(c) uc_is_property_grapheme_base (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_grapheme_extend.c b/tests/unictype/test-pr_grapheme_extend.c
new file mode 100644
index 00000000..fa859bbe
--- /dev/null
+++ b/tests/unictype/test-pr_grapheme_extend.c
@@ -0,0 +1,194 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0300, 0x036F },
+ { 0x0483, 0x0489 },
+ { 0x0591, 0x05BD },
+ { 0x05BF, 0x05BF },
+ { 0x05C1, 0x05C2 },
+ { 0x05C4, 0x05C5 },
+ { 0x05C7, 0x05C7 },
+ { 0x0610, 0x061A },
+ { 0x064B, 0x065E },
+ { 0x0670, 0x0670 },
+ { 0x06D6, 0x06DC },
+ { 0x06DE, 0x06E4 },
+ { 0x06E7, 0x06E8 },
+ { 0x06EA, 0x06ED },
+ { 0x0711, 0x0711 },
+ { 0x0730, 0x074A },
+ { 0x07A6, 0x07B0 },
+ { 0x07EB, 0x07F3 },
+ { 0x0901, 0x0902 },
+ { 0x093C, 0x093C },
+ { 0x0941, 0x0948 },
+ { 0x094D, 0x094D },
+ { 0x0951, 0x0954 },
+ { 0x0962, 0x0963 },
+ { 0x0981, 0x0981 },
+ { 0x09BC, 0x09BC },
+ { 0x09BE, 0x09BE },
+ { 0x09C1, 0x09C4 },
+ { 0x09CD, 0x09CD },
+ { 0x09D7, 0x09D7 },
+ { 0x09E2, 0x09E3 },
+ { 0x0A01, 0x0A02 },
+ { 0x0A3C, 0x0A3C },
+ { 0x0A41, 0x0A42 },
+ { 0x0A47, 0x0A48 },
+ { 0x0A4B, 0x0A4D },
+ { 0x0A51, 0x0A51 },
+ { 0x0A70, 0x0A71 },
+ { 0x0A75, 0x0A75 },
+ { 0x0A81, 0x0A82 },
+ { 0x0ABC, 0x0ABC },
+ { 0x0AC1, 0x0AC5 },
+ { 0x0AC7, 0x0AC8 },
+ { 0x0ACD, 0x0ACD },
+ { 0x0AE2, 0x0AE3 },
+ { 0x0B01, 0x0B01 },
+ { 0x0B3C, 0x0B3C },
+ { 0x0B3E, 0x0B3F },
+ { 0x0B41, 0x0B44 },
+ { 0x0B4D, 0x0B4D },
+ { 0x0B56, 0x0B57 },
+ { 0x0B62, 0x0B63 },
+ { 0x0B82, 0x0B82 },
+ { 0x0BBE, 0x0BBE },
+ { 0x0BC0, 0x0BC0 },
+ { 0x0BCD, 0x0BCD },
+ { 0x0BD7, 0x0BD7 },
+ { 0x0C3E, 0x0C40 },
+ { 0x0C46, 0x0C48 },
+ { 0x0C4A, 0x0C4D },
+ { 0x0C55, 0x0C56 },
+ { 0x0C62, 0x0C63 },
+ { 0x0CBC, 0x0CBC },
+ { 0x0CBF, 0x0CBF },
+ { 0x0CC2, 0x0CC2 },
+ { 0x0CC6, 0x0CC6 },
+ { 0x0CCC, 0x0CCD },
+ { 0x0CD5, 0x0CD6 },
+ { 0x0CE2, 0x0CE3 },
+ { 0x0D3E, 0x0D3E },
+ { 0x0D41, 0x0D44 },
+ { 0x0D4D, 0x0D4D },
+ { 0x0D57, 0x0D57 },
+ { 0x0D62, 0x0D63 },
+ { 0x0DCA, 0x0DCA },
+ { 0x0DCF, 0x0DCF },
+ { 0x0DD2, 0x0DD4 },
+ { 0x0DD6, 0x0DD6 },
+ { 0x0DDF, 0x0DDF },
+ { 0x0E31, 0x0E31 },
+ { 0x0E34, 0x0E3A },
+ { 0x0E47, 0x0E4E },
+ { 0x0EB1, 0x0EB1 },
+ { 0x0EB4, 0x0EB9 },
+ { 0x0EBB, 0x0EBC },
+ { 0x0EC8, 0x0ECD },
+ { 0x0F18, 0x0F19 },
+ { 0x0F35, 0x0F35 },
+ { 0x0F37, 0x0F37 },
+ { 0x0F39, 0x0F39 },
+ { 0x0F71, 0x0F7E },
+ { 0x0F80, 0x0F84 },
+ { 0x0F86, 0x0F87 },
+ { 0x0F90, 0x0F97 },
+ { 0x0F99, 0x0FBC },
+ { 0x0FC6, 0x0FC6 },
+ { 0x102D, 0x1030 },
+ { 0x1032, 0x1037 },
+ { 0x1039, 0x103A },
+ { 0x103D, 0x103E },
+ { 0x1058, 0x1059 },
+ { 0x105E, 0x1060 },
+ { 0x1071, 0x1074 },
+ { 0x1082, 0x1082 },
+ { 0x1085, 0x1086 },
+ { 0x108D, 0x108D },
+ { 0x135F, 0x135F },
+ { 0x1712, 0x1714 },
+ { 0x1732, 0x1734 },
+ { 0x1752, 0x1753 },
+ { 0x1772, 0x1773 },
+ { 0x17B7, 0x17BD },
+ { 0x17C6, 0x17C6 },
+ { 0x17C9, 0x17D3 },
+ { 0x17DD, 0x17DD },
+ { 0x180B, 0x180D },
+ { 0x18A9, 0x18A9 },
+ { 0x1920, 0x1922 },
+ { 0x1927, 0x1928 },
+ { 0x1932, 0x1932 },
+ { 0x1939, 0x193B },
+ { 0x1A17, 0x1A18 },
+ { 0x1B00, 0x1B03 },
+ { 0x1B34, 0x1B34 },
+ { 0x1B36, 0x1B3A },
+ { 0x1B3C, 0x1B3C },
+ { 0x1B42, 0x1B42 },
+ { 0x1B6B, 0x1B73 },
+ { 0x1B80, 0x1B81 },
+ { 0x1BA2, 0x1BA5 },
+ { 0x1BA8, 0x1BA9 },
+ { 0x1C2C, 0x1C33 },
+ { 0x1C36, 0x1C37 },
+ { 0x1DC0, 0x1DE6 },
+ { 0x1DFE, 0x1DFF },
+ { 0x200C, 0x200D },
+ { 0x20D0, 0x20F0 },
+ { 0x2DE0, 0x2DFF },
+ { 0x302A, 0x302F },
+ { 0x3099, 0x309A },
+ { 0xA66F, 0xA672 },
+ { 0xA67C, 0xA67D },
+ { 0xA802, 0xA802 },
+ { 0xA806, 0xA806 },
+ { 0xA80B, 0xA80B },
+ { 0xA825, 0xA826 },
+ { 0xA8C4, 0xA8C4 },
+ { 0xA926, 0xA92D },
+ { 0xA947, 0xA951 },
+ { 0xAA29, 0xAA2E },
+ { 0xAA31, 0xAA32 },
+ { 0xAA35, 0xAA36 },
+ { 0xAA43, 0xAA43 },
+ { 0xAA4C, 0xAA4C },
+ { 0xFB1E, 0xFB1E },
+ { 0xFE00, 0xFE0F },
+ { 0xFE20, 0xFE26 },
+ { 0xFF9E, 0xFF9F },
+ { 0x101FD, 0x101FD },
+ { 0x10A01, 0x10A03 },
+ { 0x10A05, 0x10A06 },
+ { 0x10A0C, 0x10A0F },
+ { 0x10A38, 0x10A3A },
+ { 0x10A3F, 0x10A3F },
+ { 0x1D165, 0x1D165 },
+ { 0x1D167, 0x1D169 },
+ { 0x1D16E, 0x1D172 },
+ { 0x1D17B, 0x1D182 },
+ { 0x1D185, 0x1D18B },
+ { 0x1D1AA, 0x1D1AD },
+ { 0x1D242, 0x1D244 },
+ { 0xE0100, 0xE01EF }
+
+#define PREDICATE(c) uc_is_property_grapheme_extend (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_grapheme_link.c b/tests/unictype/test-pr_grapheme_link.c
new file mode 100644
index 00000000..ff1fa5a4
--- /dev/null
+++ b/tests/unictype/test-pr_grapheme_link.c
@@ -0,0 +1,44 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x094D, 0x094D },
+ { 0x09CD, 0x09CD },
+ { 0x0A4D, 0x0A4D },
+ { 0x0ACD, 0x0ACD },
+ { 0x0B4D, 0x0B4D },
+ { 0x0BCD, 0x0BCD },
+ { 0x0C4D, 0x0C4D },
+ { 0x0CCD, 0x0CCD },
+ { 0x0D4D, 0x0D4D },
+ { 0x0DCA, 0x0DCA },
+ { 0x0E3A, 0x0E3A },
+ { 0x0F84, 0x0F84 },
+ { 0x1039, 0x103A },
+ { 0x1714, 0x1714 },
+ { 0x1734, 0x1734 },
+ { 0x17D2, 0x17D2 },
+ { 0x1B44, 0x1B44 },
+ { 0x1BAA, 0x1BAA },
+ { 0xA806, 0xA806 },
+ { 0xA8C4, 0xA8C4 },
+ { 0xA953, 0xA953 },
+ { 0x10A3F, 0x10A3F }
+
+#define PREDICATE(c) uc_is_property_grapheme_link (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_hex_digit.c b/tests/unictype/test-pr_hex_digit.c
new file mode 100644
index 00000000..1a761b83
--- /dev/null
+++ b/tests/unictype/test-pr_hex_digit.c
@@ -0,0 +1,28 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0030, 0x0039 },
+ { 0x0041, 0x0046 },
+ { 0x0061, 0x0066 },
+ { 0xFF10, 0xFF19 },
+ { 0xFF21, 0xFF26 },
+ { 0xFF41, 0xFF46 }
+
+#define PREDICATE(c) uc_is_property_hex_digit (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_hyphen.c b/tests/unictype/test-pr_hyphen.c
new file mode 100644
index 00000000..9557fbad
--- /dev/null
+++ b/tests/unictype/test-pr_hyphen.c
@@ -0,0 +1,32 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x002D, 0x002D },
+ { 0x00AD, 0x00AD },
+ { 0x058A, 0x058A },
+ { 0x1806, 0x1806 },
+ { 0x2010, 0x2011 },
+ { 0x2E17, 0x2E17 },
+ { 0x30FB, 0x30FB },
+ { 0xFE63, 0xFE63 },
+ { 0xFF0D, 0xFF0D },
+ { 0xFF65, 0xFF65 }
+
+#define PREDICATE(c) uc_is_property_hyphen (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_id_continue.c b/tests/unictype/test-pr_id_continue.c
new file mode 100644
index 00000000..a900ec93
--- /dev/null
+++ b/tests/unictype/test-pr_id_continue.c
@@ -0,0 +1,499 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0030, 0x0039 },
+ { 0x0041, 0x005A },
+ { 0x005F, 0x005F },
+ { 0x0061, 0x007A },
+ { 0x00AA, 0x00AA },
+ { 0x00B5, 0x00B5 },
+ { 0x00B7, 0x00B7 },
+ { 0x00BA, 0x00BA },
+ { 0x00C0, 0x00D6 },
+ { 0x00D8, 0x00F6 },
+ { 0x00F8, 0x02C1 },
+ { 0x02C6, 0x02D1 },
+ { 0x02E0, 0x02E4 },
+ { 0x02EC, 0x02EC },
+ { 0x02EE, 0x02EE },
+ { 0x0300, 0x0374 },
+ { 0x0376, 0x0377 },
+ { 0x037A, 0x037D },
+ { 0x0386, 0x038A },
+ { 0x038C, 0x038C },
+ { 0x038E, 0x03A1 },
+ { 0x03A3, 0x03F5 },
+ { 0x03F7, 0x0481 },
+ { 0x0483, 0x0487 },
+ { 0x048A, 0x0523 },
+ { 0x0531, 0x0556 },
+ { 0x0559, 0x0559 },
+ { 0x0561, 0x0587 },
+ { 0x0591, 0x05BD },
+ { 0x05BF, 0x05BF },
+ { 0x05C1, 0x05C2 },
+ { 0x05C4, 0x05C5 },
+ { 0x05C7, 0x05C7 },
+ { 0x05D0, 0x05EA },
+ { 0x05F0, 0x05F2 },
+ { 0x0610, 0x061A },
+ { 0x0621, 0x065E },
+ { 0x0660, 0x0669 },
+ { 0x066E, 0x06D3 },
+ { 0x06D5, 0x06DC },
+ { 0x06DF, 0x06E8 },
+ { 0x06EA, 0x06FC },
+ { 0x06FF, 0x06FF },
+ { 0x0710, 0x074A },
+ { 0x074D, 0x07B1 },
+ { 0x07C0, 0x07F5 },
+ { 0x07FA, 0x07FA },
+ { 0x0901, 0x0939 },
+ { 0x093C, 0x094D },
+ { 0x0950, 0x0954 },
+ { 0x0958, 0x0963 },
+ { 0x0966, 0x096F },
+ { 0x0971, 0x0972 },
+ { 0x097B, 0x097F },
+ { 0x0981, 0x0983 },
+ { 0x0985, 0x098C },
+ { 0x098F, 0x0990 },
+ { 0x0993, 0x09A8 },
+ { 0x09AA, 0x09B0 },
+ { 0x09B2, 0x09B2 },
+ { 0x09B6, 0x09B9 },
+ { 0x09BC, 0x09C4 },
+ { 0x09C7, 0x09C8 },
+ { 0x09CB, 0x09CE },
+ { 0x09D7, 0x09D7 },
+ { 0x09DC, 0x09DD },
+ { 0x09DF, 0x09E3 },
+ { 0x09E6, 0x09F1 },
+ { 0x0A01, 0x0A03 },
+ { 0x0A05, 0x0A0A },
+ { 0x0A0F, 0x0A10 },
+ { 0x0A13, 0x0A28 },
+ { 0x0A2A, 0x0A30 },
+ { 0x0A32, 0x0A33 },
+ { 0x0A35, 0x0A36 },
+ { 0x0A38, 0x0A39 },
+ { 0x0A3C, 0x0A3C },
+ { 0x0A3E, 0x0A42 },
+ { 0x0A47, 0x0A48 },
+ { 0x0A4B, 0x0A4D },
+ { 0x0A51, 0x0A51 },
+ { 0x0A59, 0x0A5C },
+ { 0x0A5E, 0x0A5E },
+ { 0x0A66, 0x0A75 },
+ { 0x0A81, 0x0A83 },
+ { 0x0A85, 0x0A8D },
+ { 0x0A8F, 0x0A91 },
+ { 0x0A93, 0x0AA8 },
+ { 0x0AAA, 0x0AB0 },
+ { 0x0AB2, 0x0AB3 },
+ { 0x0AB5, 0x0AB9 },
+ { 0x0ABC, 0x0AC5 },
+ { 0x0AC7, 0x0AC9 },
+ { 0x0ACB, 0x0ACD },
+ { 0x0AD0, 0x0AD0 },
+ { 0x0AE0, 0x0AE3 },
+ { 0x0AE6, 0x0AEF },
+ { 0x0B01, 0x0B03 },
+ { 0x0B05, 0x0B0C },
+ { 0x0B0F, 0x0B10 },
+ { 0x0B13, 0x0B28 },
+ { 0x0B2A, 0x0B30 },
+ { 0x0B32, 0x0B33 },
+ { 0x0B35, 0x0B39 },
+ { 0x0B3C, 0x0B44 },
+ { 0x0B47, 0x0B48 },
+ { 0x0B4B, 0x0B4D },
+ { 0x0B56, 0x0B57 },
+ { 0x0B5C, 0x0B5D },
+ { 0x0B5F, 0x0B63 },
+ { 0x0B66, 0x0B6F },
+ { 0x0B71, 0x0B71 },
+ { 0x0B82, 0x0B83 },
+ { 0x0B85, 0x0B8A },
+ { 0x0B8E, 0x0B90 },
+ { 0x0B92, 0x0B95 },
+ { 0x0B99, 0x0B9A },
+ { 0x0B9C, 0x0B9C },
+ { 0x0B9E, 0x0B9F },
+ { 0x0BA3, 0x0BA4 },
+ { 0x0BA8, 0x0BAA },
+ { 0x0BAE, 0x0BB9 },
+ { 0x0BBE, 0x0BC2 },
+ { 0x0BC6, 0x0BC8 },
+ { 0x0BCA, 0x0BCD },
+ { 0x0BD0, 0x0BD0 },
+ { 0x0BD7, 0x0BD7 },
+ { 0x0BE6, 0x0BEF },
+ { 0x0C01, 0x0C03 },
+ { 0x0C05, 0x0C0C },
+ { 0x0C0E, 0x0C10 },
+ { 0x0C12, 0x0C28 },
+ { 0x0C2A, 0x0C33 },
+ { 0x0C35, 0x0C39 },
+ { 0x0C3D, 0x0C44 },
+ { 0x0C46, 0x0C48 },
+ { 0x0C4A, 0x0C4D },
+ { 0x0C55, 0x0C56 },
+ { 0x0C58, 0x0C59 },
+ { 0x0C60, 0x0C63 },
+ { 0x0C66, 0x0C6F },
+ { 0x0C82, 0x0C83 },
+ { 0x0C85, 0x0C8C },
+ { 0x0C8E, 0x0C90 },
+ { 0x0C92, 0x0CA8 },
+ { 0x0CAA, 0x0CB3 },
+ { 0x0CB5, 0x0CB9 },
+ { 0x0CBC, 0x0CC4 },
+ { 0x0CC6, 0x0CC8 },
+ { 0x0CCA, 0x0CCD },
+ { 0x0CD5, 0x0CD6 },
+ { 0x0CDE, 0x0CDE },
+ { 0x0CE0, 0x0CE3 },
+ { 0x0CE6, 0x0CEF },
+ { 0x0D02, 0x0D03 },
+ { 0x0D05, 0x0D0C },
+ { 0x0D0E, 0x0D10 },
+ { 0x0D12, 0x0D28 },
+ { 0x0D2A, 0x0D39 },
+ { 0x0D3D, 0x0D44 },
+ { 0x0D46, 0x0D48 },
+ { 0x0D4A, 0x0D4D },
+ { 0x0D57, 0x0D57 },
+ { 0x0D60, 0x0D63 },
+ { 0x0D66, 0x0D6F },
+ { 0x0D7A, 0x0D7F },
+ { 0x0D82, 0x0D83 },
+ { 0x0D85, 0x0D96 },
+ { 0x0D9A, 0x0DB1 },
+ { 0x0DB3, 0x0DBB },
+ { 0x0DBD, 0x0DBD },
+ { 0x0DC0, 0x0DC6 },
+ { 0x0DCA, 0x0DCA },
+ { 0x0DCF, 0x0DD4 },
+ { 0x0DD6, 0x0DD6 },
+ { 0x0DD8, 0x0DDF },
+ { 0x0DF2, 0x0DF3 },
+ { 0x0E01, 0x0E3A },
+ { 0x0E40, 0x0E4E },
+ { 0x0E50, 0x0E59 },
+ { 0x0E81, 0x0E82 },
+ { 0x0E84, 0x0E84 },
+ { 0x0E87, 0x0E88 },
+ { 0x0E8A, 0x0E8A },
+ { 0x0E8D, 0x0E8D },
+ { 0x0E94, 0x0E97 },
+ { 0x0E99, 0x0E9F },
+ { 0x0EA1, 0x0EA3 },
+ { 0x0EA5, 0x0EA5 },
+ { 0x0EA7, 0x0EA7 },
+ { 0x0EAA, 0x0EAB },
+ { 0x0EAD, 0x0EB9 },
+ { 0x0EBB, 0x0EBD },
+ { 0x0EC0, 0x0EC4 },
+ { 0x0EC6, 0x0EC6 },
+ { 0x0EC8, 0x0ECD },
+ { 0x0ED0, 0x0ED9 },
+ { 0x0EDC, 0x0EDD },
+ { 0x0F00, 0x0F00 },
+ { 0x0F18, 0x0F19 },
+ { 0x0F20, 0x0F29 },
+ { 0x0F35, 0x0F35 },
+ { 0x0F37, 0x0F37 },
+ { 0x0F39, 0x0F39 },
+ { 0x0F3E, 0x0F47 },
+ { 0x0F49, 0x0F6C },
+ { 0x0F71, 0x0F84 },
+ { 0x0F86, 0x0F8B },
+ { 0x0F90, 0x0F97 },
+ { 0x0F99, 0x0FBC },
+ { 0x0FC6, 0x0FC6 },
+ { 0x1000, 0x1049 },
+ { 0x1050, 0x1099 },
+ { 0x10A0, 0x10C5 },
+ { 0x10D0, 0x10FA },
+ { 0x10FC, 0x10FC },
+ { 0x1100, 0x1159 },
+ { 0x115F, 0x11A2 },
+ { 0x11A8, 0x11F9 },
+ { 0x1200, 0x1248 },
+ { 0x124A, 0x124D },
+ { 0x1250, 0x1256 },
+ { 0x1258, 0x1258 },
+ { 0x125A, 0x125D },
+ { 0x1260, 0x1288 },
+ { 0x128A, 0x128D },
+ { 0x1290, 0x12B0 },
+ { 0x12B2, 0x12B5 },
+ { 0x12B8, 0x12BE },
+ { 0x12C0, 0x12C0 },
+ { 0x12C2, 0x12C5 },
+ { 0x12C8, 0x12D6 },
+ { 0x12D8, 0x1310 },
+ { 0x1312, 0x1315 },
+ { 0x1318, 0x135A },
+ { 0x135F, 0x135F },
+ { 0x1369, 0x1371 },
+ { 0x1380, 0x138F },
+ { 0x13A0, 0x13F4 },
+ { 0x1401, 0x166C },
+ { 0x166F, 0x1676 },
+ { 0x1681, 0x169A },
+ { 0x16A0, 0x16EA },
+ { 0x16EE, 0x16F0 },
+ { 0x1700, 0x170C },
+ { 0x170E, 0x1714 },
+ { 0x1720, 0x1734 },
+ { 0x1740, 0x1753 },
+ { 0x1760, 0x176C },
+ { 0x176E, 0x1770 },
+ { 0x1772, 0x1773 },
+ { 0x1780, 0x17B3 },
+ { 0x17B6, 0x17D3 },
+ { 0x17D7, 0x17D7 },
+ { 0x17DC, 0x17DD },
+ { 0x17E0, 0x17E9 },
+ { 0x180B, 0x180D },
+ { 0x1810, 0x1819 },
+ { 0x1820, 0x1877 },
+ { 0x1880, 0x18AA },
+ { 0x1900, 0x191C },
+ { 0x1920, 0x192B },
+ { 0x1930, 0x193B },
+ { 0x1946, 0x196D },
+ { 0x1970, 0x1974 },
+ { 0x1980, 0x19A9 },
+ { 0x19B0, 0x19C9 },
+ { 0x19D0, 0x19D9 },
+ { 0x1A00, 0x1A1B },
+ { 0x1B00, 0x1B4B },
+ { 0x1B50, 0x1B59 },
+ { 0x1B6B, 0x1B73 },
+ { 0x1B80, 0x1BAA },
+ { 0x1BAE, 0x1BB9 },
+ { 0x1C00, 0x1C37 },
+ { 0x1C40, 0x1C49 },
+ { 0x1C4D, 0x1C7D },
+ { 0x1D00, 0x1DE6 },
+ { 0x1DFE, 0x1F15 },
+ { 0x1F18, 0x1F1D },
+ { 0x1F20, 0x1F45 },
+ { 0x1F48, 0x1F4D },
+ { 0x1F50, 0x1F57 },
+ { 0x1F59, 0x1F59 },
+ { 0x1F5B, 0x1F5B },
+ { 0x1F5D, 0x1F5D },
+ { 0x1F5F, 0x1F7D },
+ { 0x1F80, 0x1FB4 },
+ { 0x1FB6, 0x1FBC },
+ { 0x1FBE, 0x1FBE },
+ { 0x1FC2, 0x1FC4 },
+ { 0x1FC6, 0x1FCC },
+ { 0x1FD0, 0x1FD3 },
+ { 0x1FD6, 0x1FDB },
+ { 0x1FE0, 0x1FEC },
+ { 0x1FF2, 0x1FF4 },
+ { 0x1FF6, 0x1FFC },
+ { 0x203F, 0x2040 },
+ { 0x2054, 0x2054 },
+ { 0x2071, 0x2071 },
+ { 0x207F, 0x207F },
+ { 0x2090, 0x2094 },
+ { 0x20D0, 0x20DC },
+ { 0x20E1, 0x20E1 },
+ { 0x20E5, 0x20F0 },
+ { 0x2102, 0x2102 },
+ { 0x2107, 0x2107 },
+ { 0x210A, 0x2113 },
+ { 0x2115, 0x2115 },
+ { 0x2118, 0x211D },
+ { 0x2124, 0x2124 },
+ { 0x2126, 0x2126 },
+ { 0x2128, 0x2128 },
+ { 0x212A, 0x2139 },
+ { 0x213C, 0x213F },
+ { 0x2145, 0x2149 },
+ { 0x214E, 0x214E },
+ { 0x2160, 0x2188 },
+ { 0x2C00, 0x2C2E },
+ { 0x2C30, 0x2C5E },
+ { 0x2C60, 0x2C6F },
+ { 0x2C71, 0x2C7D },
+ { 0x2C80, 0x2CE4 },
+ { 0x2D00, 0x2D25 },
+ { 0x2D30, 0x2D65 },
+ { 0x2D6F, 0x2D6F },
+ { 0x2D80, 0x2D96 },
+ { 0x2DA0, 0x2DA6 },
+ { 0x2DA8, 0x2DAE },
+ { 0x2DB0, 0x2DB6 },
+ { 0x2DB8, 0x2DBE },
+ { 0x2DC0, 0x2DC6 },
+ { 0x2DC8, 0x2DCE },
+ { 0x2DD0, 0x2DD6 },
+ { 0x2DD8, 0x2DDE },
+ { 0x2DE0, 0x2DFF },
+ { 0x3005, 0x3007 },
+ { 0x3021, 0x302F },
+ { 0x3031, 0x3035 },
+ { 0x3038, 0x303C },
+ { 0x3041, 0x3096 },
+ { 0x3099, 0x309F },
+ { 0x30A1, 0x30FA },
+ { 0x30FC, 0x30FF },
+ { 0x3105, 0x312D },
+ { 0x3131, 0x318E },
+ { 0x31A0, 0x31B7 },
+ { 0x31F0, 0x31FF },
+ { 0x3400, 0x4DB5 },
+ { 0x4E00, 0x9FC3 },
+ { 0xA000, 0xA48C },
+ { 0xA500, 0xA60C },
+ { 0xA610, 0xA62B },
+ { 0xA640, 0xA65F },
+ { 0xA662, 0xA66F },
+ { 0xA67C, 0xA67D },
+ { 0xA67F, 0xA697 },
+ { 0xA717, 0xA71F },
+ { 0xA722, 0xA788 },
+ { 0xA78B, 0xA78C },
+ { 0xA7FB, 0xA827 },
+ { 0xA840, 0xA873 },
+ { 0xA880, 0xA8C4 },
+ { 0xA8D0, 0xA8D9 },
+ { 0xA900, 0xA92D },
+ { 0xA930, 0xA953 },
+ { 0xAA00, 0xAA36 },
+ { 0xAA40, 0xAA4D },
+ { 0xAA50, 0xAA59 },
+ { 0xAC00, 0xD7A3 },
+ { 0xF900, 0xFA2D },
+ { 0xFA30, 0xFA6A },
+ { 0xFA70, 0xFAD9 },
+ { 0xFB00, 0xFB06 },
+ { 0xFB13, 0xFB17 },
+ { 0xFB1D, 0xFB28 },
+ { 0xFB2A, 0xFB36 },
+ { 0xFB38, 0xFB3C },
+ { 0xFB3E, 0xFB3E },
+ { 0xFB40, 0xFB41 },
+ { 0xFB43, 0xFB44 },
+ { 0xFB46, 0xFBB1 },
+ { 0xFBD3, 0xFD3D },
+ { 0xFD50, 0xFD8F },
+ { 0xFD92, 0xFDC7 },
+ { 0xFDF0, 0xFDFB },
+ { 0xFE00, 0xFE0F },
+ { 0xFE20, 0xFE26 },
+ { 0xFE33, 0xFE34 },
+ { 0xFE4D, 0xFE4F },
+ { 0xFE70, 0xFE74 },
+ { 0xFE76, 0xFEFC },
+ { 0xFF10, 0xFF19 },
+ { 0xFF21, 0xFF3A },
+ { 0xFF3F, 0xFF3F },
+ { 0xFF41, 0xFF5A },
+ { 0xFF66, 0xFFBE },
+ { 0xFFC2, 0xFFC7 },
+ { 0xFFCA, 0xFFCF },
+ { 0xFFD2, 0xFFD7 },
+ { 0xFFDA, 0xFFDC },
+ { 0x10000, 0x1000B },
+ { 0x1000D, 0x10026 },
+ { 0x10028, 0x1003A },
+ { 0x1003C, 0x1003D },
+ { 0x1003F, 0x1004D },
+ { 0x10050, 0x1005D },
+ { 0x10080, 0x100FA },
+ { 0x10140, 0x10174 },
+ { 0x101FD, 0x101FD },
+ { 0x10280, 0x1029C },
+ { 0x102A0, 0x102D0 },
+ { 0x10300, 0x1031E },
+ { 0x10330, 0x1034A },
+ { 0x10380, 0x1039D },
+ { 0x103A0, 0x103C3 },
+ { 0x103C8, 0x103CF },
+ { 0x103D1, 0x103D5 },
+ { 0x10400, 0x1049D },
+ { 0x104A0, 0x104A9 },
+ { 0x10800, 0x10805 },
+ { 0x10808, 0x10808 },
+ { 0x1080A, 0x10835 },
+ { 0x10837, 0x10838 },
+ { 0x1083C, 0x1083C },
+ { 0x1083F, 0x1083F },
+ { 0x10900, 0x10915 },
+ { 0x10920, 0x10939 },
+ { 0x10A00, 0x10A03 },
+ { 0x10A05, 0x10A06 },
+ { 0x10A0C, 0x10A13 },
+ { 0x10A15, 0x10A17 },
+ { 0x10A19, 0x10A33 },
+ { 0x10A38, 0x10A3A },
+ { 0x10A3F, 0x10A3F },
+ { 0x12000, 0x1236E },
+ { 0x12400, 0x12462 },
+ { 0x1D165, 0x1D169 },
+ { 0x1D16D, 0x1D172 },
+ { 0x1D17B, 0x1D182 },
+ { 0x1D185, 0x1D18B },
+ { 0x1D1AA, 0x1D1AD },
+ { 0x1D242, 0x1D244 },
+ { 0x1D400, 0x1D454 },
+ { 0x1D456, 0x1D49C },
+ { 0x1D49E, 0x1D49F },
+ { 0x1D4A2, 0x1D4A2 },
+ { 0x1D4A5, 0x1D4A6 },
+ { 0x1D4A9, 0x1D4AC },
+ { 0x1D4AE, 0x1D4B9 },
+ { 0x1D4BB, 0x1D4BB },
+ { 0x1D4BD, 0x1D4C3 },
+ { 0x1D4C5, 0x1D505 },
+ { 0x1D507, 0x1D50A },
+ { 0x1D50D, 0x1D514 },
+ { 0x1D516, 0x1D51C },
+ { 0x1D51E, 0x1D539 },
+ { 0x1D53B, 0x1D53E },
+ { 0x1D540, 0x1D544 },
+ { 0x1D546, 0x1D546 },
+ { 0x1D54A, 0x1D550 },
+ { 0x1D552, 0x1D6A5 },
+ { 0x1D6A8, 0x1D6C0 },
+ { 0x1D6C2, 0x1D6DA },
+ { 0x1D6DC, 0x1D6FA },
+ { 0x1D6FC, 0x1D714 },
+ { 0x1D716, 0x1D734 },
+ { 0x1D736, 0x1D74E },
+ { 0x1D750, 0x1D76E },
+ { 0x1D770, 0x1D788 },
+ { 0x1D78A, 0x1D7A8 },
+ { 0x1D7AA, 0x1D7C2 },
+ { 0x1D7C4, 0x1D7CB },
+ { 0x1D7CE, 0x1D7FF },
+ { 0x20000, 0x2A6D6 },
+ { 0x2F800, 0x2FA1D },
+ { 0xE0100, 0xE01EF }
+
+#define PREDICATE(c) uc_is_property_id_continue (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_id_start.c b/tests/unictype/test-pr_id_start.c
new file mode 100644
index 00000000..15b4bd9e
--- /dev/null
+++ b/tests/unictype/test-pr_id_start.c
@@ -0,0 +1,414 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0041, 0x005A },
+ { 0x0061, 0x007A },
+ { 0x00AA, 0x00AA },
+ { 0x00B5, 0x00B5 },
+ { 0x00BA, 0x00BA },
+ { 0x00C0, 0x00D6 },
+ { 0x00D8, 0x00F6 },
+ { 0x00F8, 0x02C1 },
+ { 0x02C6, 0x02D1 },
+ { 0x02E0, 0x02E4 },
+ { 0x02EC, 0x02EC },
+ { 0x02EE, 0x02EE },
+ { 0x0370, 0x0374 },
+ { 0x0376, 0x0377 },
+ { 0x037A, 0x037D },
+ { 0x0386, 0x0386 },
+ { 0x0388, 0x038A },
+ { 0x038C, 0x038C },
+ { 0x038E, 0x03A1 },
+ { 0x03A3, 0x03F5 },
+ { 0x03F7, 0x0481 },
+ { 0x048A, 0x0523 },
+ { 0x0531, 0x0556 },
+ { 0x0559, 0x0559 },
+ { 0x0561, 0x0587 },
+ { 0x05D0, 0x05EA },
+ { 0x05F0, 0x05F2 },
+ { 0x0621, 0x064A },
+ { 0x066E, 0x066F },
+ { 0x0671, 0x06D3 },
+ { 0x06D5, 0x06D5 },
+ { 0x06E5, 0x06E6 },
+ { 0x06EE, 0x06EF },
+ { 0x06FA, 0x06FC },
+ { 0x06FF, 0x06FF },
+ { 0x0710, 0x0710 },
+ { 0x0712, 0x072F },
+ { 0x074D, 0x07A5 },
+ { 0x07B1, 0x07B1 },
+ { 0x07CA, 0x07EA },
+ { 0x07F4, 0x07F5 },
+ { 0x07FA, 0x07FA },
+ { 0x0904, 0x0939 },
+ { 0x093D, 0x093D },
+ { 0x0950, 0x0950 },
+ { 0x0958, 0x0961 },
+ { 0x0971, 0x0972 },
+ { 0x097B, 0x097F },
+ { 0x0985, 0x098C },
+ { 0x098F, 0x0990 },
+ { 0x0993, 0x09A8 },
+ { 0x09AA, 0x09B0 },
+ { 0x09B2, 0x09B2 },
+ { 0x09B6, 0x09B9 },
+ { 0x09BD, 0x09BD },
+ { 0x09CE, 0x09CE },
+ { 0x09DC, 0x09DD },
+ { 0x09DF, 0x09E1 },
+ { 0x09F0, 0x09F1 },
+ { 0x0A05, 0x0A0A },
+ { 0x0A0F, 0x0A10 },
+ { 0x0A13, 0x0A28 },
+ { 0x0A2A, 0x0A30 },
+ { 0x0A32, 0x0A33 },
+ { 0x0A35, 0x0A36 },
+ { 0x0A38, 0x0A39 },
+ { 0x0A59, 0x0A5C },
+ { 0x0A5E, 0x0A5E },
+ { 0x0A72, 0x0A74 },
+ { 0x0A85, 0x0A8D },
+ { 0x0A8F, 0x0A91 },
+ { 0x0A93, 0x0AA8 },
+ { 0x0AAA, 0x0AB0 },
+ { 0x0AB2, 0x0AB3 },
+ { 0x0AB5, 0x0AB9 },
+ { 0x0ABD, 0x0ABD },
+ { 0x0AD0, 0x0AD0 },
+ { 0x0AE0, 0x0AE1 },
+ { 0x0B05, 0x0B0C },
+ { 0x0B0F, 0x0B10 },
+ { 0x0B13, 0x0B28 },
+ { 0x0B2A, 0x0B30 },
+ { 0x0B32, 0x0B33 },
+ { 0x0B35, 0x0B39 },
+ { 0x0B3D, 0x0B3D },
+ { 0x0B5C, 0x0B5D },
+ { 0x0B5F, 0x0B61 },
+ { 0x0B71, 0x0B71 },
+ { 0x0B83, 0x0B83 },
+ { 0x0B85, 0x0B8A },
+ { 0x0B8E, 0x0B90 },
+ { 0x0B92, 0x0B95 },
+ { 0x0B99, 0x0B9A },
+ { 0x0B9C, 0x0B9C },
+ { 0x0B9E, 0x0B9F },
+ { 0x0BA3, 0x0BA4 },
+ { 0x0BA8, 0x0BAA },
+ { 0x0BAE, 0x0BB9 },
+ { 0x0BD0, 0x0BD0 },
+ { 0x0C05, 0x0C0C },
+ { 0x0C0E, 0x0C10 },
+ { 0x0C12, 0x0C28 },
+ { 0x0C2A, 0x0C33 },
+ { 0x0C35, 0x0C39 },
+ { 0x0C3D, 0x0C3D },
+ { 0x0C58, 0x0C59 },
+ { 0x0C60, 0x0C61 },
+ { 0x0C85, 0x0C8C },
+ { 0x0C8E, 0x0C90 },
+ { 0x0C92, 0x0CA8 },
+ { 0x0CAA, 0x0CB3 },
+ { 0x0CB5, 0x0CB9 },
+ { 0x0CBD, 0x0CBD },
+ { 0x0CDE, 0x0CDE },
+ { 0x0CE0, 0x0CE1 },
+ { 0x0D05, 0x0D0C },
+ { 0x0D0E, 0x0D10 },
+ { 0x0D12, 0x0D28 },
+ { 0x0D2A, 0x0D39 },
+ { 0x0D3D, 0x0D3D },
+ { 0x0D60, 0x0D61 },
+ { 0x0D7A, 0x0D7F },
+ { 0x0D85, 0x0D96 },
+ { 0x0D9A, 0x0DB1 },
+ { 0x0DB3, 0x0DBB },
+ { 0x0DBD, 0x0DBD },
+ { 0x0DC0, 0x0DC6 },
+ { 0x0E01, 0x0E30 },
+ { 0x0E32, 0x0E33 },
+ { 0x0E40, 0x0E46 },
+ { 0x0E81, 0x0E82 },
+ { 0x0E84, 0x0E84 },
+ { 0x0E87, 0x0E88 },
+ { 0x0E8A, 0x0E8A },
+ { 0x0E8D, 0x0E8D },
+ { 0x0E94, 0x0E97 },
+ { 0x0E99, 0x0E9F },
+ { 0x0EA1, 0x0EA3 },
+ { 0x0EA5, 0x0EA5 },
+ { 0x0EA7, 0x0EA7 },
+ { 0x0EAA, 0x0EAB },
+ { 0x0EAD, 0x0EB0 },
+ { 0x0EB2, 0x0EB3 },
+ { 0x0EBD, 0x0EBD },
+ { 0x0EC0, 0x0EC4 },
+ { 0x0EC6, 0x0EC6 },
+ { 0x0EDC, 0x0EDD },
+ { 0x0F00, 0x0F00 },
+ { 0x0F40, 0x0F47 },
+ { 0x0F49, 0x0F6C },
+ { 0x0F88, 0x0F8B },
+ { 0x1000, 0x102A },
+ { 0x103F, 0x103F },
+ { 0x1050, 0x1055 },
+ { 0x105A, 0x105D },
+ { 0x1061, 0x1061 },
+ { 0x1065, 0x1066 },
+ { 0x106E, 0x1070 },
+ { 0x1075, 0x1081 },
+ { 0x108E, 0x108E },
+ { 0x10A0, 0x10C5 },
+ { 0x10D0, 0x10FA },
+ { 0x10FC, 0x10FC },
+ { 0x1100, 0x1159 },
+ { 0x115F, 0x11A2 },
+ { 0x11A8, 0x11F9 },
+ { 0x1200, 0x1248 },
+ { 0x124A, 0x124D },
+ { 0x1250, 0x1256 },
+ { 0x1258, 0x1258 },
+ { 0x125A, 0x125D },
+ { 0x1260, 0x1288 },
+ { 0x128A, 0x128D },
+ { 0x1290, 0x12B0 },
+ { 0x12B2, 0x12B5 },
+ { 0x12B8, 0x12BE },
+ { 0x12C0, 0x12C0 },
+ { 0x12C2, 0x12C5 },
+ { 0x12C8, 0x12D6 },
+ { 0x12D8, 0x1310 },
+ { 0x1312, 0x1315 },
+ { 0x1318, 0x135A },
+ { 0x1380, 0x138F },
+ { 0x13A0, 0x13F4 },
+ { 0x1401, 0x166C },
+ { 0x166F, 0x1676 },
+ { 0x1681, 0x169A },
+ { 0x16A0, 0x16EA },
+ { 0x16EE, 0x16F0 },
+ { 0x1700, 0x170C },
+ { 0x170E, 0x1711 },
+ { 0x1720, 0x1731 },
+ { 0x1740, 0x1751 },
+ { 0x1760, 0x176C },
+ { 0x176E, 0x1770 },
+ { 0x1780, 0x17B3 },
+ { 0x17D7, 0x17D7 },
+ { 0x17DC, 0x17DC },
+ { 0x1820, 0x1877 },
+ { 0x1880, 0x18A8 },
+ { 0x18AA, 0x18AA },
+ { 0x1900, 0x191C },
+ { 0x1950, 0x196D },
+ { 0x1970, 0x1974 },
+ { 0x1980, 0x19A9 },
+ { 0x19C1, 0x19C7 },
+ { 0x1A00, 0x1A16 },
+ { 0x1B05, 0x1B33 },
+ { 0x1B45, 0x1B4B },
+ { 0x1B83, 0x1BA0 },
+ { 0x1BAE, 0x1BAF },
+ { 0x1C00, 0x1C23 },
+ { 0x1C4D, 0x1C4F },
+ { 0x1C5A, 0x1C7D },
+ { 0x1D00, 0x1DBF },
+ { 0x1E00, 0x1F15 },
+ { 0x1F18, 0x1F1D },
+ { 0x1F20, 0x1F45 },
+ { 0x1F48, 0x1F4D },
+ { 0x1F50, 0x1F57 },
+ { 0x1F59, 0x1F59 },
+ { 0x1F5B, 0x1F5B },
+ { 0x1F5D, 0x1F5D },
+ { 0x1F5F, 0x1F7D },
+ { 0x1F80, 0x1FB4 },
+ { 0x1FB6, 0x1FBC },
+ { 0x1FBE, 0x1FBE },
+ { 0x1FC2, 0x1FC4 },
+ { 0x1FC6, 0x1FCC },
+ { 0x1FD0, 0x1FD3 },
+ { 0x1FD6, 0x1FDB },
+ { 0x1FE0, 0x1FEC },
+ { 0x1FF2, 0x1FF4 },
+ { 0x1FF6, 0x1FFC },
+ { 0x2071, 0x2071 },
+ { 0x207F, 0x207F },
+ { 0x2090, 0x2094 },
+ { 0x2102, 0x2102 },
+ { 0x2107, 0x2107 },
+ { 0x210A, 0x2113 },
+ { 0x2115, 0x2115 },
+ { 0x2118, 0x211D },
+ { 0x2124, 0x2124 },
+ { 0x2126, 0x2126 },
+ { 0x2128, 0x2128 },
+ { 0x212A, 0x2139 },
+ { 0x213C, 0x213F },
+ { 0x2145, 0x2149 },
+ { 0x214E, 0x214E },
+ { 0x2160, 0x2188 },
+ { 0x2C00, 0x2C2E },
+ { 0x2C30, 0x2C5E },
+ { 0x2C60, 0x2C6F },
+ { 0x2C71, 0x2C7D },
+ { 0x2C80, 0x2CE4 },
+ { 0x2D00, 0x2D25 },
+ { 0x2D30, 0x2D65 },
+ { 0x2D6F, 0x2D6F },
+ { 0x2D80, 0x2D96 },
+ { 0x2DA0, 0x2DA6 },
+ { 0x2DA8, 0x2DAE },
+ { 0x2DB0, 0x2DB6 },
+ { 0x2DB8, 0x2DBE },
+ { 0x2DC0, 0x2DC6 },
+ { 0x2DC8, 0x2DCE },
+ { 0x2DD0, 0x2DD6 },
+ { 0x2DD8, 0x2DDE },
+ { 0x3005, 0x3007 },
+ { 0x3021, 0x3029 },
+ { 0x3031, 0x3035 },
+ { 0x3038, 0x303C },
+ { 0x3041, 0x3096 },
+ { 0x309B, 0x309F },
+ { 0x30A1, 0x30FA },
+ { 0x30FC, 0x30FF },
+ { 0x3105, 0x312D },
+ { 0x3131, 0x318E },
+ { 0x31A0, 0x31B7 },
+ { 0x31F0, 0x31FF },
+ { 0x3400, 0x4DB5 },
+ { 0x4E00, 0x9FC3 },
+ { 0xA000, 0xA48C },
+ { 0xA500, 0xA60C },
+ { 0xA610, 0xA61F },
+ { 0xA62A, 0xA62B },
+ { 0xA640, 0xA65F },
+ { 0xA662, 0xA66E },
+ { 0xA67F, 0xA697 },
+ { 0xA717, 0xA71F },
+ { 0xA722, 0xA788 },
+ { 0xA78B, 0xA78C },
+ { 0xA7FB, 0xA801 },
+ { 0xA803, 0xA805 },
+ { 0xA807, 0xA80A },
+ { 0xA80C, 0xA822 },
+ { 0xA840, 0xA873 },
+ { 0xA882, 0xA8B3 },
+ { 0xA90A, 0xA925 },
+ { 0xA930, 0xA946 },
+ { 0xAA00, 0xAA28 },
+ { 0xAA40, 0xAA42 },
+ { 0xAA44, 0xAA4B },
+ { 0xAC00, 0xD7A3 },
+ { 0xF900, 0xFA2D },
+ { 0xFA30, 0xFA6A },
+ { 0xFA70, 0xFAD9 },
+ { 0xFB00, 0xFB06 },
+ { 0xFB13, 0xFB17 },
+ { 0xFB1D, 0xFB1D },
+ { 0xFB1F, 0xFB28 },
+ { 0xFB2A, 0xFB36 },
+ { 0xFB38, 0xFB3C },
+ { 0xFB3E, 0xFB3E },
+ { 0xFB40, 0xFB41 },
+ { 0xFB43, 0xFB44 },
+ { 0xFB46, 0xFBB1 },
+ { 0xFBD3, 0xFD3D },
+ { 0xFD50, 0xFD8F },
+ { 0xFD92, 0xFDC7 },
+ { 0xFDF0, 0xFDFB },
+ { 0xFE70, 0xFE74 },
+ { 0xFE76, 0xFEFC },
+ { 0xFF21, 0xFF3A },
+ { 0xFF41, 0xFF5A },
+ { 0xFF66, 0xFFBE },
+ { 0xFFC2, 0xFFC7 },
+ { 0xFFCA, 0xFFCF },
+ { 0xFFD2, 0xFFD7 },
+ { 0xFFDA, 0xFFDC },
+ { 0x10000, 0x1000B },
+ { 0x1000D, 0x10026 },
+ { 0x10028, 0x1003A },
+ { 0x1003C, 0x1003D },
+ { 0x1003F, 0x1004D },
+ { 0x10050, 0x1005D },
+ { 0x10080, 0x100FA },
+ { 0x10140, 0x10174 },
+ { 0x10280, 0x1029C },
+ { 0x102A0, 0x102D0 },
+ { 0x10300, 0x1031E },
+ { 0x10330, 0x1034A },
+ { 0x10380, 0x1039D },
+ { 0x103A0, 0x103C3 },
+ { 0x103C8, 0x103CF },
+ { 0x103D1, 0x103D5 },
+ { 0x10400, 0x1049D },
+ { 0x10800, 0x10805 },
+ { 0x10808, 0x10808 },
+ { 0x1080A, 0x10835 },
+ { 0x10837, 0x10838 },
+ { 0x1083C, 0x1083C },
+ { 0x1083F, 0x1083F },
+ { 0x10900, 0x10915 },
+ { 0x10920, 0x10939 },
+ { 0x10A00, 0x10A00 },
+ { 0x10A10, 0x10A13 },
+ { 0x10A15, 0x10A17 },
+ { 0x10A19, 0x10A33 },
+ { 0x12000, 0x1236E },
+ { 0x12400, 0x12462 },
+ { 0x1D400, 0x1D454 },
+ { 0x1D456, 0x1D49C },
+ { 0x1D49E, 0x1D49F },
+ { 0x1D4A2, 0x1D4A2 },
+ { 0x1D4A5, 0x1D4A6 },
+ { 0x1D4A9, 0x1D4AC },
+ { 0x1D4AE, 0x1D4B9 },
+ { 0x1D4BB, 0x1D4BB },
+ { 0x1D4BD, 0x1D4C3 },
+ { 0x1D4C5, 0x1D505 },
+ { 0x1D507, 0x1D50A },
+ { 0x1D50D, 0x1D514 },
+ { 0x1D516, 0x1D51C },
+ { 0x1D51E, 0x1D539 },
+ { 0x1D53B, 0x1D53E },
+ { 0x1D540, 0x1D544 },
+ { 0x1D546, 0x1D546 },
+ { 0x1D54A, 0x1D550 },
+ { 0x1D552, 0x1D6A5 },
+ { 0x1D6A8, 0x1D6C0 },
+ { 0x1D6C2, 0x1D6DA },
+ { 0x1D6DC, 0x1D6FA },
+ { 0x1D6FC, 0x1D714 },
+ { 0x1D716, 0x1D734 },
+ { 0x1D736, 0x1D74E },
+ { 0x1D750, 0x1D76E },
+ { 0x1D770, 0x1D788 },
+ { 0x1D78A, 0x1D7A8 },
+ { 0x1D7AA, 0x1D7C2 },
+ { 0x1D7C4, 0x1D7CB },
+ { 0x20000, 0x2A6D6 },
+ { 0x2F800, 0x2FA1D }
+
+#define PREDICATE(c) uc_is_property_id_start (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_ideographic.c b/tests/unictype/test-pr_ideographic.c
new file mode 100644
index 00000000..c61195db
--- /dev/null
+++ b/tests/unictype/test-pr_ideographic.c
@@ -0,0 +1,32 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x3006, 0x3007 },
+ { 0x3021, 0x3029 },
+ { 0x3038, 0x303A },
+ { 0x3400, 0x4DB5 },
+ { 0x4E00, 0x9FC3 },
+ { 0xF900, 0xFA2D },
+ { 0xFA30, 0xFA6A },
+ { 0xFA70, 0xFAD9 },
+ { 0x20000, 0x2A6D6 },
+ { 0x2F800, 0x2FA1D }
+
+#define PREDICATE(c) uc_is_property_ideographic (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_ids_binary_operator.c b/tests/unictype/test-pr_ids_binary_operator.c
new file mode 100644
index 00000000..cc6e39a6
--- /dev/null
+++ b/tests/unictype/test-pr_ids_binary_operator.c
@@ -0,0 +1,24 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x2FF0, 0x2FF1 },
+ { 0x2FF4, 0x2FFB }
+
+#define PREDICATE(c) uc_is_property_ids_binary_operator (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_ids_trinary_operator.c b/tests/unictype/test-pr_ids_trinary_operator.c
new file mode 100644
index 00000000..c95de7fe
--- /dev/null
+++ b/tests/unictype/test-pr_ids_trinary_operator.c
@@ -0,0 +1,23 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x2FF2, 0x2FF3 }
+
+#define PREDICATE(c) uc_is_property_ids_trinary_operator (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_ignorable_control.c b/tests/unictype/test-pr_ignorable_control.c
new file mode 100644
index 00000000..58d38b52
--- /dev/null
+++ b/tests/unictype/test-pr_ignorable_control.c
@@ -0,0 +1,40 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0001, 0x0008 },
+ { 0x000E, 0x001B },
+ { 0x007F, 0x0084 },
+ { 0x0086, 0x009F },
+ { 0x00AD, 0x00AD },
+ { 0x0600, 0x0603 },
+ { 0x06DD, 0x06DD },
+ { 0x070F, 0x070F },
+ { 0x17B4, 0x17B5 },
+ { 0x200B, 0x200F },
+ { 0x202A, 0x202E },
+ { 0x2060, 0x2064 },
+ { 0x206A, 0x206F },
+ { 0xFEFF, 0xFEFF },
+ { 0xFFF9, 0xFFFB },
+ { 0x1D173, 0x1D17A },
+ { 0xE0001, 0xE0001 },
+ { 0xE0020, 0xE007F }
+
+#define PREDICATE(c) uc_is_property_ignorable_control (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_iso_control.c b/tests/unictype/test-pr_iso_control.c
new file mode 100644
index 00000000..c7d26971
--- /dev/null
+++ b/tests/unictype/test-pr_iso_control.c
@@ -0,0 +1,24 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0000, 0x001F },
+ { 0x007F, 0x009F }
+
+#define PREDICATE(c) uc_is_property_iso_control (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_join_control.c b/tests/unictype/test-pr_join_control.c
new file mode 100644
index 00000000..a452700c
--- /dev/null
+++ b/tests/unictype/test-pr_join_control.c
@@ -0,0 +1,23 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x200C, 0x200D }
+
+#define PREDICATE(c) uc_is_property_join_control (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_left_of_pair.c b/tests/unictype/test-pr_left_of_pair.c
new file mode 100644
index 00000000..5aed7aa0
--- /dev/null
+++ b/tests/unictype/test-pr_left_of_pair.c
@@ -0,0 +1,63 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0028, 0x0028 },
+ { 0x005B, 0x005B },
+ { 0x007B, 0x007B },
+ { 0x00AB, 0x00AB },
+ { 0x0F3A, 0x0F3A },
+ { 0x0F3C, 0x0F3C },
+ { 0x169B, 0x169B },
+ { 0x2018, 0x2018 },
+ { 0x201A, 0x201C },
+ { 0x201E, 0x201F },
+ { 0x2039, 0x2039 },
+ { 0x2045, 0x2045 },
+ { 0x207D, 0x207D },
+ { 0x208D, 0x208D },
+ { 0x2329, 0x2329 },
+ { 0x3008, 0x3008 },
+ { 0x300A, 0x300A },
+ { 0x300C, 0x300C },
+ { 0x300E, 0x300E },
+ { 0x3010, 0x3010 },
+ { 0x3014, 0x3014 },
+ { 0x3016, 0x3016 },
+ { 0x3018, 0x3018 },
+ { 0x301A, 0x301A },
+ { 0x301D, 0x301D },
+ { 0xFD3E, 0xFD3E },
+ { 0xFE35, 0xFE35 },
+ { 0xFE37, 0xFE37 },
+ { 0xFE39, 0xFE39 },
+ { 0xFE3B, 0xFE3B },
+ { 0xFE3D, 0xFE3D },
+ { 0xFE3F, 0xFE3F },
+ { 0xFE41, 0xFE41 },
+ { 0xFE43, 0xFE43 },
+ { 0xFE59, 0xFE59 },
+ { 0xFE5B, 0xFE5B },
+ { 0xFE5D, 0xFE5D },
+ { 0xFF08, 0xFF08 },
+ { 0xFF3B, 0xFF3B },
+ { 0xFF5B, 0xFF5B },
+ { 0xFF62, 0xFF62 }
+
+#define PREDICATE(c) uc_is_property_left_of_pair (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_line_separator.c b/tests/unictype/test-pr_line_separator.c
new file mode 100644
index 00000000..2f16de13
--- /dev/null
+++ b/tests/unictype/test-pr_line_separator.c
@@ -0,0 +1,23 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x2028, 0x2028 }
+
+#define PREDICATE(c) uc_is_property_line_separator (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_logical_order_exception.c b/tests/unictype/test-pr_logical_order_exception.c
new file mode 100644
index 00000000..b9ca4327
--- /dev/null
+++ b/tests/unictype/test-pr_logical_order_exception.c
@@ -0,0 +1,24 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0E40, 0x0E44 },
+ { 0x0EC0, 0x0EC4 }
+
+#define PREDICATE(c) uc_is_property_logical_order_exception (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_lowercase.c b/tests/unictype/test-pr_lowercase.c
new file mode 100644
index 00000000..cac34e7d
--- /dev/null
+++ b/tests/unictype/test-pr_lowercase.c
@@ -0,0 +1,623 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0061, 0x007A },
+ { 0x00AA, 0x00AA },
+ { 0x00B5, 0x00B5 },
+ { 0x00BA, 0x00BA },
+ { 0x00DF, 0x00F6 },
+ { 0x00F8, 0x00FF },
+ { 0x0101, 0x0101 },
+ { 0x0103, 0x0103 },
+ { 0x0105, 0x0105 },
+ { 0x0107, 0x0107 },
+ { 0x0109, 0x0109 },
+ { 0x010B, 0x010B },
+ { 0x010D, 0x010D },
+ { 0x010F, 0x010F },
+ { 0x0111, 0x0111 },
+ { 0x0113, 0x0113 },
+ { 0x0115, 0x0115 },
+ { 0x0117, 0x0117 },
+ { 0x0119, 0x0119 },
+ { 0x011B, 0x011B },
+ { 0x011D, 0x011D },
+ { 0x011F, 0x011F },
+ { 0x0121, 0x0121 },
+ { 0x0123, 0x0123 },
+ { 0x0125, 0x0125 },
+ { 0x0127, 0x0127 },
+ { 0x0129, 0x0129 },
+ { 0x012B, 0x012B },
+ { 0x012D, 0x012D },
+ { 0x012F, 0x012F },
+ { 0x0131, 0x0131 },
+ { 0x0133, 0x0133 },
+ { 0x0135, 0x0135 },
+ { 0x0137, 0x0138 },
+ { 0x013A, 0x013A },
+ { 0x013C, 0x013C },
+ { 0x013E, 0x013E },
+ { 0x0140, 0x0140 },
+ { 0x0142, 0x0142 },
+ { 0x0144, 0x0144 },
+ { 0x0146, 0x0146 },
+ { 0x0148, 0x0149 },
+ { 0x014B, 0x014B },
+ { 0x014D, 0x014D },
+ { 0x014F, 0x014F },
+ { 0x0151, 0x0151 },
+ { 0x0153, 0x0153 },
+ { 0x0155, 0x0155 },
+ { 0x0157, 0x0157 },
+ { 0x0159, 0x0159 },
+ { 0x015B, 0x015B },
+ { 0x015D, 0x015D },
+ { 0x015F, 0x015F },
+ { 0x0161, 0x0161 },
+ { 0x0163, 0x0163 },
+ { 0x0165, 0x0165 },
+ { 0x0167, 0x0167 },
+ { 0x0169, 0x0169 },
+ { 0x016B, 0x016B },
+ { 0x016D, 0x016D },
+ { 0x016F, 0x016F },
+ { 0x0171, 0x0171 },
+ { 0x0173, 0x0173 },
+ { 0x0175, 0x0175 },
+ { 0x0177, 0x0177 },
+ { 0x017A, 0x017A },
+ { 0x017C, 0x017C },
+ { 0x017E, 0x0180 },
+ { 0x0183, 0x0183 },
+ { 0x0185, 0x0185 },
+ { 0x0188, 0x0188 },
+ { 0x018C, 0x018D },
+ { 0x0192, 0x0192 },
+ { 0x0195, 0x0195 },
+ { 0x0199, 0x019B },
+ { 0x019E, 0x019E },
+ { 0x01A1, 0x01A1 },
+ { 0x01A3, 0x01A3 },
+ { 0x01A5, 0x01A5 },
+ { 0x01A8, 0x01A8 },
+ { 0x01AA, 0x01AB },
+ { 0x01AD, 0x01AD },
+ { 0x01B0, 0x01B0 },
+ { 0x01B4, 0x01B4 },
+ { 0x01B6, 0x01B6 },
+ { 0x01B9, 0x01BA },
+ { 0x01BD, 0x01BF },
+ { 0x01C6, 0x01C6 },
+ { 0x01C9, 0x01C9 },
+ { 0x01CC, 0x01CC },
+ { 0x01CE, 0x01CE },
+ { 0x01D0, 0x01D0 },
+ { 0x01D2, 0x01D2 },
+ { 0x01D4, 0x01D4 },
+ { 0x01D6, 0x01D6 },
+ { 0x01D8, 0x01D8 },
+ { 0x01DA, 0x01DA },
+ { 0x01DC, 0x01DD },
+ { 0x01DF, 0x01DF },
+ { 0x01E1, 0x01E1 },
+ { 0x01E3, 0x01E3 },
+ { 0x01E5, 0x01E5 },
+ { 0x01E7, 0x01E7 },
+ { 0x01E9, 0x01E9 },
+ { 0x01EB, 0x01EB },
+ { 0x01ED, 0x01ED },
+ { 0x01EF, 0x01F0 },
+ { 0x01F3, 0x01F3 },
+ { 0x01F5, 0x01F5 },
+ { 0x01F9, 0x01F9 },
+ { 0x01FB, 0x01FB },
+ { 0x01FD, 0x01FD },
+ { 0x01FF, 0x01FF },
+ { 0x0201, 0x0201 },
+ { 0x0203, 0x0203 },
+ { 0x0205, 0x0205 },
+ { 0x0207, 0x0207 },
+ { 0x0209, 0x0209 },
+ { 0x020B, 0x020B },
+ { 0x020D, 0x020D },
+ { 0x020F, 0x020F },
+ { 0x0211, 0x0211 },
+ { 0x0213, 0x0213 },
+ { 0x0215, 0x0215 },
+ { 0x0217, 0x0217 },
+ { 0x0219, 0x0219 },
+ { 0x021B, 0x021B },
+ { 0x021D, 0x021D },
+ { 0x021F, 0x021F },
+ { 0x0221, 0x0221 },
+ { 0x0223, 0x0223 },
+ { 0x0225, 0x0225 },
+ { 0x0227, 0x0227 },
+ { 0x0229, 0x0229 },
+ { 0x022B, 0x022B },
+ { 0x022D, 0x022D },
+ { 0x022F, 0x022F },
+ { 0x0231, 0x0231 },
+ { 0x0233, 0x0239 },
+ { 0x023C, 0x023C },
+ { 0x023F, 0x0240 },
+ { 0x0242, 0x0242 },
+ { 0x0247, 0x0247 },
+ { 0x0249, 0x0249 },
+ { 0x024B, 0x024B },
+ { 0x024D, 0x024D },
+ { 0x024F, 0x0293 },
+ { 0x0295, 0x02B8 },
+ { 0x02C0, 0x02C1 },
+ { 0x02E0, 0x02E4 },
+ { 0x0345, 0x0345 },
+ { 0x0371, 0x0371 },
+ { 0x0373, 0x0373 },
+ { 0x0377, 0x0377 },
+ { 0x037A, 0x037D },
+ { 0x0390, 0x0390 },
+ { 0x03AC, 0x03CE },
+ { 0x03D0, 0x03D1 },
+ { 0x03D5, 0x03D7 },
+ { 0x03D9, 0x03D9 },
+ { 0x03DB, 0x03DB },
+ { 0x03DD, 0x03DD },
+ { 0x03DF, 0x03DF },
+ { 0x03E1, 0x03E1 },
+ { 0x03E3, 0x03E3 },
+ { 0x03E5, 0x03E5 },
+ { 0x03E7, 0x03E7 },
+ { 0x03E9, 0x03E9 },
+ { 0x03EB, 0x03EB },
+ { 0x03ED, 0x03ED },
+ { 0x03EF, 0x03F3 },
+ { 0x03F5, 0x03F5 },
+ { 0x03F8, 0x03F8 },
+ { 0x03FB, 0x03FC },
+ { 0x0430, 0x045F },
+ { 0x0461, 0x0461 },
+ { 0x0463, 0x0463 },
+ { 0x0465, 0x0465 },
+ { 0x0467, 0x0467 },
+ { 0x0469, 0x0469 },
+ { 0x046B, 0x046B },
+ { 0x046D, 0x046D },
+ { 0x046F, 0x046F },
+ { 0x0471, 0x0471 },
+ { 0x0473, 0x0473 },
+ { 0x0475, 0x0475 },
+ { 0x0477, 0x0477 },
+ { 0x0479, 0x0479 },
+ { 0x047B, 0x047B },
+ { 0x047D, 0x047D },
+ { 0x047F, 0x047F },
+ { 0x0481, 0x0481 },
+ { 0x048B, 0x048B },
+ { 0x048D, 0x048D },
+ { 0x048F, 0x048F },
+ { 0x0491, 0x0491 },
+ { 0x0493, 0x0493 },
+ { 0x0495, 0x0495 },
+ { 0x0497, 0x0497 },
+ { 0x0499, 0x0499 },
+ { 0x049B, 0x049B },
+ { 0x049D, 0x049D },
+ { 0x049F, 0x049F },
+ { 0x04A1, 0x04A1 },
+ { 0x04A3, 0x04A3 },
+ { 0x04A5, 0x04A5 },
+ { 0x04A7, 0x04A7 },
+ { 0x04A9, 0x04A9 },
+ { 0x04AB, 0x04AB },
+ { 0x04AD, 0x04AD },
+ { 0x04AF, 0x04AF },
+ { 0x04B1, 0x04B1 },
+ { 0x04B3, 0x04B3 },
+ { 0x04B5, 0x04B5 },
+ { 0x04B7, 0x04B7 },
+ { 0x04B9, 0x04B9 },
+ { 0x04BB, 0x04BB },
+ { 0x04BD, 0x04BD },
+ { 0x04BF, 0x04BF },
+ { 0x04C2, 0x04C2 },
+ { 0x04C4, 0x04C4 },
+ { 0x04C6, 0x04C6 },
+ { 0x04C8, 0x04C8 },
+ { 0x04CA, 0x04CA },
+ { 0x04CC, 0x04CC },
+ { 0x04CE, 0x04CF },
+ { 0x04D1, 0x04D1 },
+ { 0x04D3, 0x04D3 },
+ { 0x04D5, 0x04D5 },
+ { 0x04D7, 0x04D7 },
+ { 0x04D9, 0x04D9 },
+ { 0x04DB, 0x04DB },
+ { 0x04DD, 0x04DD },
+ { 0x04DF, 0x04DF },
+ { 0x04E1, 0x04E1 },
+ { 0x04E3, 0x04E3 },
+ { 0x04E5, 0x04E5 },
+ { 0x04E7, 0x04E7 },
+ { 0x04E9, 0x04E9 },
+ { 0x04EB, 0x04EB },
+ { 0x04ED, 0x04ED },
+ { 0x04EF, 0x04EF },
+ { 0x04F1, 0x04F1 },
+ { 0x04F3, 0x04F3 },
+ { 0x04F5, 0x04F5 },
+ { 0x04F7, 0x04F7 },
+ { 0x04F9, 0x04F9 },
+ { 0x04FB, 0x04FB },
+ { 0x04FD, 0x04FD },
+ { 0x04FF, 0x04FF },
+ { 0x0501, 0x0501 },
+ { 0x0503, 0x0503 },
+ { 0x0505, 0x0505 },
+ { 0x0507, 0x0507 },
+ { 0x0509, 0x0509 },
+ { 0x050B, 0x050B },
+ { 0x050D, 0x050D },
+ { 0x050F, 0x050F },
+ { 0x0511, 0x0511 },
+ { 0x0513, 0x0513 },
+ { 0x0515, 0x0515 },
+ { 0x0517, 0x0517 },
+ { 0x0519, 0x0519 },
+ { 0x051B, 0x051B },
+ { 0x051D, 0x051D },
+ { 0x051F, 0x051F },
+ { 0x0521, 0x0521 },
+ { 0x0523, 0x0523 },
+ { 0x0561, 0x0587 },
+ { 0x1D00, 0x1DBF },
+ { 0x1E01, 0x1E01 },
+ { 0x1E03, 0x1E03 },
+ { 0x1E05, 0x1E05 },
+ { 0x1E07, 0x1E07 },
+ { 0x1E09, 0x1E09 },
+ { 0x1E0B, 0x1E0B },
+ { 0x1E0D, 0x1E0D },
+ { 0x1E0F, 0x1E0F },
+ { 0x1E11, 0x1E11 },
+ { 0x1E13, 0x1E13 },
+ { 0x1E15, 0x1E15 },
+ { 0x1E17, 0x1E17 },
+ { 0x1E19, 0x1E19 },
+ { 0x1E1B, 0x1E1B },
+ { 0x1E1D, 0x1E1D },
+ { 0x1E1F, 0x1E1F },
+ { 0x1E21, 0x1E21 },
+ { 0x1E23, 0x1E23 },
+ { 0x1E25, 0x1E25 },
+ { 0x1E27, 0x1E27 },
+ { 0x1E29, 0x1E29 },
+ { 0x1E2B, 0x1E2B },
+ { 0x1E2D, 0x1E2D },
+ { 0x1E2F, 0x1E2F },
+ { 0x1E31, 0x1E31 },
+ { 0x1E33, 0x1E33 },
+ { 0x1E35, 0x1E35 },
+ { 0x1E37, 0x1E37 },
+ { 0x1E39, 0x1E39 },
+ { 0x1E3B, 0x1E3B },
+ { 0x1E3D, 0x1E3D },
+ { 0x1E3F, 0x1E3F },
+ { 0x1E41, 0x1E41 },
+ { 0x1E43, 0x1E43 },
+ { 0x1E45, 0x1E45 },
+ { 0x1E47, 0x1E47 },
+ { 0x1E49, 0x1E49 },
+ { 0x1E4B, 0x1E4B },
+ { 0x1E4D, 0x1E4D },
+ { 0x1E4F, 0x1E4F },
+ { 0x1E51, 0x1E51 },
+ { 0x1E53, 0x1E53 },
+ { 0x1E55, 0x1E55 },
+ { 0x1E57, 0x1E57 },
+ { 0x1E59, 0x1E59 },
+ { 0x1E5B, 0x1E5B },
+ { 0x1E5D, 0x1E5D },
+ { 0x1E5F, 0x1E5F },
+ { 0x1E61, 0x1E61 },
+ { 0x1E63, 0x1E63 },
+ { 0x1E65, 0x1E65 },
+ { 0x1E67, 0x1E67 },
+ { 0x1E69, 0x1E69 },
+ { 0x1E6B, 0x1E6B },
+ { 0x1E6D, 0x1E6D },
+ { 0x1E6F, 0x1E6F },
+ { 0x1E71, 0x1E71 },
+ { 0x1E73, 0x1E73 },
+ { 0x1E75, 0x1E75 },
+ { 0x1E77, 0x1E77 },
+ { 0x1E79, 0x1E79 },
+ { 0x1E7B, 0x1E7B },
+ { 0x1E7D, 0x1E7D },
+ { 0x1E7F, 0x1E7F },
+ { 0x1E81, 0x1E81 },
+ { 0x1E83, 0x1E83 },
+ { 0x1E85, 0x1E85 },
+ { 0x1E87, 0x1E87 },
+ { 0x1E89, 0x1E89 },
+ { 0x1E8B, 0x1E8B },
+ { 0x1E8D, 0x1E8D },
+ { 0x1E8F, 0x1E8F },
+ { 0x1E91, 0x1E91 },
+ { 0x1E93, 0x1E93 },
+ { 0x1E95, 0x1E9D },
+ { 0x1E9F, 0x1E9F },
+ { 0x1EA1, 0x1EA1 },
+ { 0x1EA3, 0x1EA3 },
+ { 0x1EA5, 0x1EA5 },
+ { 0x1EA7, 0x1EA7 },
+ { 0x1EA9, 0x1EA9 },
+ { 0x1EAB, 0x1EAB },
+ { 0x1EAD, 0x1EAD },
+ { 0x1EAF, 0x1EAF },
+ { 0x1EB1, 0x1EB1 },
+ { 0x1EB3, 0x1EB3 },
+ { 0x1EB5, 0x1EB5 },
+ { 0x1EB7, 0x1EB7 },
+ { 0x1EB9, 0x1EB9 },
+ { 0x1EBB, 0x1EBB },
+ { 0x1EBD, 0x1EBD },
+ { 0x1EBF, 0x1EBF },
+ { 0x1EC1, 0x1EC1 },
+ { 0x1EC3, 0x1EC3 },
+ { 0x1EC5, 0x1EC5 },
+ { 0x1EC7, 0x1EC7 },
+ { 0x1EC9, 0x1EC9 },
+ { 0x1ECB, 0x1ECB },
+ { 0x1ECD, 0x1ECD },
+ { 0x1ECF, 0x1ECF },
+ { 0x1ED1, 0x1ED1 },
+ { 0x1ED3, 0x1ED3 },
+ { 0x1ED5, 0x1ED5 },
+ { 0x1ED7, 0x1ED7 },
+ { 0x1ED9, 0x1ED9 },
+ { 0x1EDB, 0x1EDB },
+ { 0x1EDD, 0x1EDD },
+ { 0x1EDF, 0x1EDF },
+ { 0x1EE1, 0x1EE1 },
+ { 0x1EE3, 0x1EE3 },
+ { 0x1EE5, 0x1EE5 },
+ { 0x1EE7, 0x1EE7 },
+ { 0x1EE9, 0x1EE9 },
+ { 0x1EEB, 0x1EEB },
+ { 0x1EED, 0x1EED },
+ { 0x1EEF, 0x1EEF },
+ { 0x1EF1, 0x1EF1 },
+ { 0x1EF3, 0x1EF3 },
+ { 0x1EF5, 0x1EF5 },
+ { 0x1EF7, 0x1EF7 },
+ { 0x1EF9, 0x1EF9 },
+ { 0x1EFB, 0x1EFB },
+ { 0x1EFD, 0x1EFD },
+ { 0x1EFF, 0x1F07 },
+ { 0x1F10, 0x1F15 },
+ { 0x1F20, 0x1F27 },
+ { 0x1F30, 0x1F37 },
+ { 0x1F40, 0x1F45 },
+ { 0x1F50, 0x1F57 },
+ { 0x1F60, 0x1F67 },
+ { 0x1F70, 0x1F7D },
+ { 0x1F80, 0x1F87 },
+ { 0x1F90, 0x1F97 },
+ { 0x1FA0, 0x1FA7 },
+ { 0x1FB0, 0x1FB4 },
+ { 0x1FB6, 0x1FB7 },
+ { 0x1FBE, 0x1FBE },
+ { 0x1FC2, 0x1FC4 },
+ { 0x1FC6, 0x1FC7 },
+ { 0x1FD0, 0x1FD3 },
+ { 0x1FD6, 0x1FD7 },
+ { 0x1FE0, 0x1FE7 },
+ { 0x1FF2, 0x1FF4 },
+ { 0x1FF6, 0x1FF7 },
+ { 0x2071, 0x2071 },
+ { 0x207F, 0x207F },
+ { 0x2090, 0x2094 },
+ { 0x210A, 0x210A },
+ { 0x210E, 0x210F },
+ { 0x2113, 0x2113 },
+ { 0x212F, 0x212F },
+ { 0x2134, 0x2134 },
+ { 0x2139, 0x2139 },
+ { 0x213C, 0x213D },
+ { 0x2146, 0x2149 },
+ { 0x214E, 0x214E },
+ { 0x2170, 0x217F },
+ { 0x2184, 0x2184 },
+ { 0x24D0, 0x24E9 },
+ { 0x2C30, 0x2C5E },
+ { 0x2C61, 0x2C61 },
+ { 0x2C65, 0x2C66 },
+ { 0x2C68, 0x2C68 },
+ { 0x2C6A, 0x2C6A },
+ { 0x2C6C, 0x2C6C },
+ { 0x2C71, 0x2C71 },
+ { 0x2C73, 0x2C74 },
+ { 0x2C76, 0x2C7D },
+ { 0x2C81, 0x2C81 },
+ { 0x2C83, 0x2C83 },
+ { 0x2C85, 0x2C85 },
+ { 0x2C87, 0x2C87 },
+ { 0x2C89, 0x2C89 },
+ { 0x2C8B, 0x2C8B },
+ { 0x2C8D, 0x2C8D },
+ { 0x2C8F, 0x2C8F },
+ { 0x2C91, 0x2C91 },
+ { 0x2C93, 0x2C93 },
+ { 0x2C95, 0x2C95 },
+ { 0x2C97, 0x2C97 },
+ { 0x2C99, 0x2C99 },
+ { 0x2C9B, 0x2C9B },
+ { 0x2C9D, 0x2C9D },
+ { 0x2C9F, 0x2C9F },
+ { 0x2CA1, 0x2CA1 },
+ { 0x2CA3, 0x2CA3 },
+ { 0x2CA5, 0x2CA5 },
+ { 0x2CA7, 0x2CA7 },
+ { 0x2CA9, 0x2CA9 },
+ { 0x2CAB, 0x2CAB },
+ { 0x2CAD, 0x2CAD },
+ { 0x2CAF, 0x2CAF },
+ { 0x2CB1, 0x2CB1 },
+ { 0x2CB3, 0x2CB3 },
+ { 0x2CB5, 0x2CB5 },
+ { 0x2CB7, 0x2CB7 },
+ { 0x2CB9, 0x2CB9 },
+ { 0x2CBB, 0x2CBB },
+ { 0x2CBD, 0x2CBD },
+ { 0x2CBF, 0x2CBF },
+ { 0x2CC1, 0x2CC1 },
+ { 0x2CC3, 0x2CC3 },
+ { 0x2CC5, 0x2CC5 },
+ { 0x2CC7, 0x2CC7 },
+ { 0x2CC9, 0x2CC9 },
+ { 0x2CCB, 0x2CCB },
+ { 0x2CCD, 0x2CCD },
+ { 0x2CCF, 0x2CCF },
+ { 0x2CD1, 0x2CD1 },
+ { 0x2CD3, 0x2CD3 },
+ { 0x2CD5, 0x2CD5 },
+ { 0x2CD7, 0x2CD7 },
+ { 0x2CD9, 0x2CD9 },
+ { 0x2CDB, 0x2CDB },
+ { 0x2CDD, 0x2CDD },
+ { 0x2CDF, 0x2CDF },
+ { 0x2CE1, 0x2CE1 },
+ { 0x2CE3, 0x2CE4 },
+ { 0x2D00, 0x2D25 },
+ { 0xA641, 0xA641 },
+ { 0xA643, 0xA643 },
+ { 0xA645, 0xA645 },
+ { 0xA647, 0xA647 },
+ { 0xA649, 0xA649 },
+ { 0xA64B, 0xA64B },
+ { 0xA64D, 0xA64D },
+ { 0xA64F, 0xA64F },
+ { 0xA651, 0xA651 },
+ { 0xA653, 0xA653 },
+ { 0xA655, 0xA655 },
+ { 0xA657, 0xA657 },
+ { 0xA659, 0xA659 },
+ { 0xA65B, 0xA65B },
+ { 0xA65D, 0xA65D },
+ { 0xA65F, 0xA65F },
+ { 0xA663, 0xA663 },
+ { 0xA665, 0xA665 },
+ { 0xA667, 0xA667 },
+ { 0xA669, 0xA669 },
+ { 0xA66B, 0xA66B },
+ { 0xA66D, 0xA66D },
+ { 0xA681, 0xA681 },
+ { 0xA683, 0xA683 },
+ { 0xA685, 0xA685 },
+ { 0xA687, 0xA687 },
+ { 0xA689, 0xA689 },
+ { 0xA68B, 0xA68B },
+ { 0xA68D, 0xA68D },
+ { 0xA68F, 0xA68F },
+ { 0xA691, 0xA691 },
+ { 0xA693, 0xA693 },
+ { 0xA695, 0xA695 },
+ { 0xA697, 0xA697 },
+ { 0xA723, 0xA723 },
+ { 0xA725, 0xA725 },
+ { 0xA727, 0xA727 },
+ { 0xA729, 0xA729 },
+ { 0xA72B, 0xA72B },
+ { 0xA72D, 0xA72D },
+ { 0xA72F, 0xA731 },
+ { 0xA733, 0xA733 },
+ { 0xA735, 0xA735 },
+ { 0xA737, 0xA737 },
+ { 0xA739, 0xA739 },
+ { 0xA73B, 0xA73B },
+ { 0xA73D, 0xA73D },
+ { 0xA73F, 0xA73F },
+ { 0xA741, 0xA741 },
+ { 0xA743, 0xA743 },
+ { 0xA745, 0xA745 },
+ { 0xA747, 0xA747 },
+ { 0xA749, 0xA749 },
+ { 0xA74B, 0xA74B },
+ { 0xA74D, 0xA74D },
+ { 0xA74F, 0xA74F },
+ { 0xA751, 0xA751 },
+ { 0xA753, 0xA753 },
+ { 0xA755, 0xA755 },
+ { 0xA757, 0xA757 },
+ { 0xA759, 0xA759 },
+ { 0xA75B, 0xA75B },
+ { 0xA75D, 0xA75D },
+ { 0xA75F, 0xA75F },
+ { 0xA761, 0xA761 },
+ { 0xA763, 0xA763 },
+ { 0xA765, 0xA765 },
+ { 0xA767, 0xA767 },
+ { 0xA769, 0xA769 },
+ { 0xA76B, 0xA76B },
+ { 0xA76D, 0xA76D },
+ { 0xA76F, 0xA778 },
+ { 0xA77A, 0xA77A },
+ { 0xA77C, 0xA77C },
+ { 0xA77F, 0xA77F },
+ { 0xA781, 0xA781 },
+ { 0xA783, 0xA783 },
+ { 0xA785, 0xA785 },
+ { 0xA787, 0xA787 },
+ { 0xA78C, 0xA78C },
+ { 0xFB00, 0xFB06 },
+ { 0xFB13, 0xFB17 },
+ { 0xFF41, 0xFF5A },
+ { 0x10428, 0x1044F },
+ { 0x1D41A, 0x1D433 },
+ { 0x1D44E, 0x1D454 },
+ { 0x1D456, 0x1D467 },
+ { 0x1D482, 0x1D49B },
+ { 0x1D4B6, 0x1D4B9 },
+ { 0x1D4BB, 0x1D4BB },
+ { 0x1D4BD, 0x1D4C3 },
+ { 0x1D4C5, 0x1D4CF },
+ { 0x1D4EA, 0x1D503 },
+ { 0x1D51E, 0x1D537 },
+ { 0x1D552, 0x1D56B },
+ { 0x1D586, 0x1D59F },
+ { 0x1D5BA, 0x1D5D3 },
+ { 0x1D5EE, 0x1D607 },
+ { 0x1D622, 0x1D63B },
+ { 0x1D656, 0x1D66F },
+ { 0x1D68A, 0x1D6A5 },
+ { 0x1D6C2, 0x1D6DA },
+ { 0x1D6DC, 0x1D6E1 },
+ { 0x1D6FC, 0x1D714 },
+ { 0x1D716, 0x1D71B },
+ { 0x1D736, 0x1D74E },
+ { 0x1D750, 0x1D755 },
+ { 0x1D770, 0x1D788 },
+ { 0x1D78A, 0x1D78F },
+ { 0x1D7AA, 0x1D7C2 },
+ { 0x1D7C4, 0x1D7C9 },
+ { 0x1D7CB, 0x1D7CB }
+
+#define PREDICATE(c) uc_is_property_lowercase (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_math.c b/tests/unictype/test-pr_math.c
new file mode 100644
index 00000000..5f250871
--- /dev/null
+++ b/tests/unictype/test-pr_math.c
@@ -0,0 +1,127 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x002B, 0x002B },
+ { 0x003C, 0x003E },
+ { 0x005E, 0x005E },
+ { 0x007C, 0x007C },
+ { 0x007E, 0x007E },
+ { 0x00AC, 0x00AC },
+ { 0x00B1, 0x00B1 },
+ { 0x00D7, 0x00D7 },
+ { 0x00F7, 0x00F7 },
+ { 0x03D0, 0x03D2 },
+ { 0x03D5, 0x03D5 },
+ { 0x03F0, 0x03F1 },
+ { 0x03F4, 0x03F6 },
+ { 0x0606, 0x0608 },
+ { 0x2016, 0x2016 },
+ { 0x2032, 0x2034 },
+ { 0x2040, 0x2040 },
+ { 0x2044, 0x2044 },
+ { 0x2052, 0x2052 },
+ { 0x2061, 0x2064 },
+ { 0x207A, 0x207E },
+ { 0x208A, 0x208E },
+ { 0x20D0, 0x20DC },
+ { 0x20E1, 0x20E1 },
+ { 0x20E5, 0x20E6 },
+ { 0x20EB, 0x20EF },
+ { 0x2102, 0x2102 },
+ { 0x210A, 0x2113 },
+ { 0x2115, 0x2115 },
+ { 0x2119, 0x211D },
+ { 0x2124, 0x2124 },
+ { 0x2128, 0x2129 },
+ { 0x212C, 0x212D },
+ { 0x212F, 0x2131 },
+ { 0x2133, 0x2138 },
+ { 0x213C, 0x2149 },
+ { 0x214B, 0x214B },
+ { 0x2190, 0x21A7 },
+ { 0x21A9, 0x21AE },
+ { 0x21B0, 0x21B1 },
+ { 0x21B6, 0x21B7 },
+ { 0x21BC, 0x21DB },
+ { 0x21DD, 0x21DD },
+ { 0x21E4, 0x21E5 },
+ { 0x21F4, 0x22FF },
+ { 0x2308, 0x230B },
+ { 0x2320, 0x2321 },
+ { 0x237C, 0x237C },
+ { 0x239B, 0x23B5 },
+ { 0x23B7, 0x23B7 },
+ { 0x23D0, 0x23D0 },
+ { 0x23DC, 0x23E2 },
+ { 0x25A0, 0x25A1 },
+ { 0x25AE, 0x25B7 },
+ { 0x25BC, 0x25C1 },
+ { 0x25C6, 0x25C7 },
+ { 0x25CA, 0x25CB },
+ { 0x25CF, 0x25D3 },
+ { 0x25E2, 0x25E2 },
+ { 0x25E4, 0x25E4 },
+ { 0x25E7, 0x25EC },
+ { 0x25F8, 0x25FF },
+ { 0x2605, 0x2606 },
+ { 0x2640, 0x2640 },
+ { 0x2642, 0x2642 },
+ { 0x2660, 0x2663 },
+ { 0x266D, 0x266F },
+ { 0x27C0, 0x27CA },
+ { 0x27CC, 0x27CC },
+ { 0x27D0, 0x27FF },
+ { 0x2900, 0x2AFF },
+ { 0x2B30, 0x2B44 },
+ { 0x2B47, 0x2B4C },
+ { 0xFB29, 0xFB29 },
+ { 0xFE61, 0xFE66 },
+ { 0xFE68, 0xFE68 },
+ { 0xFF0B, 0xFF0B },
+ { 0xFF1C, 0xFF1E },
+ { 0xFF3C, 0xFF3C },
+ { 0xFF3E, 0xFF3E },
+ { 0xFF5C, 0xFF5C },
+ { 0xFF5E, 0xFF5E },
+ { 0xFFE2, 0xFFE2 },
+ { 0xFFE9, 0xFFEC },
+ { 0x1D400, 0x1D454 },
+ { 0x1D456, 0x1D49C },
+ { 0x1D49E, 0x1D49F },
+ { 0x1D4A2, 0x1D4A2 },
+ { 0x1D4A5, 0x1D4A6 },
+ { 0x1D4A9, 0x1D4AC },
+ { 0x1D4AE, 0x1D4B9 },
+ { 0x1D4BB, 0x1D4BB },
+ { 0x1D4BD, 0x1D4C3 },
+ { 0x1D4C5, 0x1D505 },
+ { 0x1D507, 0x1D50A },
+ { 0x1D50D, 0x1D514 },
+ { 0x1D516, 0x1D51C },
+ { 0x1D51E, 0x1D539 },
+ { 0x1D53B, 0x1D53E },
+ { 0x1D540, 0x1D544 },
+ { 0x1D546, 0x1D546 },
+ { 0x1D54A, 0x1D550 },
+ { 0x1D552, 0x1D6A5 },
+ { 0x1D6A8, 0x1D7CB },
+ { 0x1D7CE, 0x1D7FF }
+
+#define PREDICATE(c) uc_is_property_math (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_non_break.c b/tests/unictype/test-pr_non_break.c
new file mode 100644
index 00000000..06794c58
--- /dev/null
+++ b/tests/unictype/test-pr_non_break.c
@@ -0,0 +1,32 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x00A0, 0x00A0 },
+ { 0x034F, 0x034F },
+ { 0x035C, 0x0362 },
+ { 0x0F08, 0x0F08 },
+ { 0x0F0C, 0x0F0C },
+ { 0x0F12, 0x0F12 },
+ { 0x180E, 0x180E },
+ { 0x2007, 0x2007 },
+ { 0x2011, 0x2011 },
+ { 0x202F, 0x202F }
+
+#define PREDICATE(c) uc_is_property_non_break (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_not_a_character.c b/tests/unictype/test-pr_not_a_character.c
new file mode 100644
index 00000000..7ce96431
--- /dev/null
+++ b/tests/unictype/test-pr_not_a_character.c
@@ -0,0 +1,40 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0xFDD0, 0xFDEF },
+ { 0xFFFE, 0xFFFF },
+ { 0x1FFFE, 0x1FFFF },
+ { 0x2FFFE, 0x2FFFF },
+ { 0x3FFFE, 0x3FFFF },
+ { 0x4FFFE, 0x4FFFF },
+ { 0x5FFFE, 0x5FFFF },
+ { 0x6FFFE, 0x6FFFF },
+ { 0x7FFFE, 0x7FFFF },
+ { 0x8FFFE, 0x8FFFF },
+ { 0x9FFFE, 0x9FFFF },
+ { 0xAFFFE, 0xAFFFF },
+ { 0xBFFFE, 0xBFFFF },
+ { 0xCFFFE, 0xCFFFF },
+ { 0xDFFFE, 0xDFFFF },
+ { 0xEFFFE, 0xEFFFF },
+ { 0xFFFFE, 0xFFFFF },
+ { 0x10FFFE, 0x10FFFF }
+
+#define PREDICATE(c) uc_is_property_not_a_character (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_numeric.c b/tests/unictype/test-pr_numeric.c
new file mode 100644
index 00000000..4449802b
--- /dev/null
+++ b/tests/unictype/test-pr_numeric.c
@@ -0,0 +1,101 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0030, 0x0039 },
+ { 0x00B2, 0x00B3 },
+ { 0x00B9, 0x00B9 },
+ { 0x00BC, 0x00BE },
+ { 0x0660, 0x0669 },
+ { 0x06F0, 0x06F9 },
+ { 0x07C0, 0x07C9 },
+ { 0x0966, 0x096F },
+ { 0x09E6, 0x09EF },
+ { 0x09F4, 0x09F9 },
+ { 0x0A66, 0x0A6F },
+ { 0x0AE6, 0x0AEF },
+ { 0x0B66, 0x0B6F },
+ { 0x0BE6, 0x0BF2 },
+ { 0x0C66, 0x0C6F },
+ { 0x0C78, 0x0C7E },
+ { 0x0CE6, 0x0CEF },
+ { 0x0D66, 0x0D75 },
+ { 0x0E50, 0x0E59 },
+ { 0x0ED0, 0x0ED9 },
+ { 0x0F20, 0x0F33 },
+ { 0x1040, 0x1049 },
+ { 0x1090, 0x1099 },
+ { 0x1369, 0x137C },
+ { 0x16EE, 0x16F0 },
+ { 0x17E0, 0x17E9 },
+ { 0x17F0, 0x17F9 },
+ { 0x1810, 0x1819 },
+ { 0x1946, 0x194F },
+ { 0x19D0, 0x19D9 },
+ { 0x1B50, 0x1B59 },
+ { 0x1BB0, 0x1BB9 },
+ { 0x1C40, 0x1C49 },
+ { 0x1C50, 0x1C59 },
+ { 0x2070, 0x2070 },
+ { 0x2074, 0x2079 },
+ { 0x2080, 0x2089 },
+ { 0x2153, 0x2183 },
+ { 0x2185, 0x2188 },
+ { 0x2460, 0x249B },
+ { 0x24EA, 0x24FF },
+ { 0x2776, 0x2793 },
+ { 0x2CFD, 0x2CFD },
+ { 0x3007, 0x3007 },
+ { 0x3021, 0x3029 },
+ { 0x3038, 0x303A },
+ { 0x3192, 0x3195 },
+ { 0x3220, 0x3229 },
+ { 0x3251, 0x325F },
+ { 0x3280, 0x3289 },
+ { 0x32B1, 0x32BF },
+ { 0xA620, 0xA629 },
+ { 0xA8D0, 0xA8D9 },
+ { 0xA900, 0xA909 },
+ { 0xAA50, 0xAA59 },
+ { 0xF96B, 0xF96B },
+ { 0xF973, 0xF973 },
+ { 0xF978, 0xF978 },
+ { 0xF9B2, 0xF9B2 },
+ { 0xF9D1, 0xF9D1 },
+ { 0xF9D3, 0xF9D3 },
+ { 0xF9FD, 0xF9FD },
+ { 0xFF10, 0xFF19 },
+ { 0x10107, 0x10133 },
+ { 0x10140, 0x10178 },
+ { 0x1018A, 0x1018A },
+ { 0x10320, 0x10323 },
+ { 0x10341, 0x10341 },
+ { 0x1034A, 0x1034A },
+ { 0x103D1, 0x103D5 },
+ { 0x104A0, 0x104A9 },
+ { 0x10916, 0x10919 },
+ { 0x10A40, 0x10A47 },
+ { 0x12400, 0x12431 },
+ { 0x12434, 0x12455 },
+ { 0x12458, 0x12462 },
+ { 0x1D360, 0x1D371 },
+ { 0x1D7CE, 0x1D7FF },
+ { 0x2F890, 0x2F890 }
+
+#define PREDICATE(c) uc_is_property_numeric (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_other_alphabetic.c b/tests/unictype/test-pr_other_alphabetic.c
new file mode 100644
index 00000000..f603dee3
--- /dev/null
+++ b/tests/unictype/test-pr_other_alphabetic.c
@@ -0,0 +1,144 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0345, 0x0345 },
+ { 0x05B0, 0x05BD },
+ { 0x05BF, 0x05BF },
+ { 0x05C1, 0x05C2 },
+ { 0x05C4, 0x05C5 },
+ { 0x05C7, 0x05C7 },
+ { 0x0610, 0x061A },
+ { 0x064B, 0x0657 },
+ { 0x0659, 0x065E },
+ { 0x0670, 0x0670 },
+ { 0x06D6, 0x06DC },
+ { 0x06E1, 0x06E4 },
+ { 0x06E7, 0x06E8 },
+ { 0x06ED, 0x06ED },
+ { 0x0711, 0x0711 },
+ { 0x0730, 0x073F },
+ { 0x07A6, 0x07B0 },
+ { 0x0901, 0x0903 },
+ { 0x093E, 0x094C },
+ { 0x0962, 0x0963 },
+ { 0x0981, 0x0983 },
+ { 0x09BE, 0x09C4 },
+ { 0x09C7, 0x09C8 },
+ { 0x09CB, 0x09CC },
+ { 0x09D7, 0x09D7 },
+ { 0x09E2, 0x09E3 },
+ { 0x0A01, 0x0A03 },
+ { 0x0A3E, 0x0A42 },
+ { 0x0A47, 0x0A48 },
+ { 0x0A4B, 0x0A4C },
+ { 0x0A51, 0x0A51 },
+ { 0x0A70, 0x0A71 },
+ { 0x0A75, 0x0A75 },
+ { 0x0A81, 0x0A83 },
+ { 0x0ABE, 0x0AC5 },
+ { 0x0AC7, 0x0AC9 },
+ { 0x0ACB, 0x0ACC },
+ { 0x0AE2, 0x0AE3 },
+ { 0x0B01, 0x0B03 },
+ { 0x0B3E, 0x0B44 },
+ { 0x0B47, 0x0B48 },
+ { 0x0B4B, 0x0B4C },
+ { 0x0B56, 0x0B57 },
+ { 0x0B62, 0x0B63 },
+ { 0x0B82, 0x0B82 },
+ { 0x0BBE, 0x0BC2 },
+ { 0x0BC6, 0x0BC8 },
+ { 0x0BCA, 0x0BCC },
+ { 0x0BD7, 0x0BD7 },
+ { 0x0C01, 0x0C03 },
+ { 0x0C3E, 0x0C44 },
+ { 0x0C46, 0x0C48 },
+ { 0x0C4A, 0x0C4C },
+ { 0x0C55, 0x0C56 },
+ { 0x0C62, 0x0C63 },
+ { 0x0C82, 0x0C83 },
+ { 0x0CBE, 0x0CC4 },
+ { 0x0CC6, 0x0CC8 },
+ { 0x0CCA, 0x0CCC },
+ { 0x0CD5, 0x0CD6 },
+ { 0x0CE2, 0x0CE3 },
+ { 0x0D02, 0x0D03 },
+ { 0x0D3E, 0x0D44 },
+ { 0x0D46, 0x0D48 },
+ { 0x0D4A, 0x0D4C },
+ { 0x0D57, 0x0D57 },
+ { 0x0D62, 0x0D63 },
+ { 0x0D82, 0x0D83 },
+ { 0x0DCF, 0x0DD4 },
+ { 0x0DD6, 0x0DD6 },
+ { 0x0DD8, 0x0DDF },
+ { 0x0DF2, 0x0DF3 },
+ { 0x0E31, 0x0E31 },
+ { 0x0E34, 0x0E3A },
+ { 0x0E4D, 0x0E4D },
+ { 0x0EB1, 0x0EB1 },
+ { 0x0EB4, 0x0EB9 },
+ { 0x0EBB, 0x0EBC },
+ { 0x0ECD, 0x0ECD },
+ { 0x0F71, 0x0F81 },
+ { 0x0F90, 0x0F97 },
+ { 0x0F99, 0x0FBC },
+ { 0x102B, 0x1036 },
+ { 0x1038, 0x1038 },
+ { 0x103B, 0x103E },
+ { 0x1056, 0x1059 },
+ { 0x105E, 0x1060 },
+ { 0x1062, 0x1062 },
+ { 0x1067, 0x1068 },
+ { 0x1071, 0x1074 },
+ { 0x1082, 0x1086 },
+ { 0x135F, 0x135F },
+ { 0x1712, 0x1713 },
+ { 0x1732, 0x1733 },
+ { 0x1752, 0x1753 },
+ { 0x1772, 0x1773 },
+ { 0x17B6, 0x17C8 },
+ { 0x18A9, 0x18A9 },
+ { 0x1920, 0x192B },
+ { 0x1930, 0x1938 },
+ { 0x19B0, 0x19C0 },
+ { 0x19C8, 0x19C9 },
+ { 0x1A17, 0x1A1B },
+ { 0x1B00, 0x1B04 },
+ { 0x1B35, 0x1B43 },
+ { 0x1B80, 0x1B82 },
+ { 0x1BA1, 0x1BA9 },
+ { 0x1C24, 0x1C35 },
+ { 0x24B6, 0x24E9 },
+ { 0x2DE0, 0x2DFF },
+ { 0xA823, 0xA827 },
+ { 0xA880, 0xA881 },
+ { 0xA8B4, 0xA8C3 },
+ { 0xA926, 0xA92A },
+ { 0xA947, 0xA952 },
+ { 0xAA29, 0xAA36 },
+ { 0xAA43, 0xAA43 },
+ { 0xAA4C, 0xAA4D },
+ { 0xFB1E, 0xFB1E },
+ { 0x10A01, 0x10A03 },
+ { 0x10A05, 0x10A06 },
+ { 0x10A0C, 0x10A0F }
+
+#define PREDICATE(c) uc_is_property_other_alphabetic (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_other_default_ignorable_code_point.c b/tests/unictype/test-pr_other_default_ignorable_code_point.c
new file mode 100644
index 00000000..69068aa2
--- /dev/null
+++ b/tests/unictype/test-pr_other_default_ignorable_code_point.c
@@ -0,0 +1,32 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x034F, 0x034F },
+ { 0x115F, 0x1160 },
+ { 0x2065, 0x2069 },
+ { 0x3164, 0x3164 },
+ { 0xFFA0, 0xFFA0 },
+ { 0xFFF0, 0xFFF8 },
+ { 0xE0000, 0xE0000 },
+ { 0xE0002, 0xE001F },
+ { 0xE0080, 0xE00FF },
+ { 0xE01F0, 0xE0FFF }
+
+#define PREDICATE(c) uc_is_property_other_default_ignorable_code_point (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_other_grapheme_extend.c b/tests/unictype/test-pr_other_grapheme_extend.c
new file mode 100644
index 00000000..aff4377d
--- /dev/null
+++ b/tests/unictype/test-pr_other_grapheme_extend.c
@@ -0,0 +1,38 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x09BE, 0x09BE },
+ { 0x09D7, 0x09D7 },
+ { 0x0B3E, 0x0B3E },
+ { 0x0B57, 0x0B57 },
+ { 0x0BBE, 0x0BBE },
+ { 0x0BD7, 0x0BD7 },
+ { 0x0CC2, 0x0CC2 },
+ { 0x0CD5, 0x0CD6 },
+ { 0x0D3E, 0x0D3E },
+ { 0x0D57, 0x0D57 },
+ { 0x0DCF, 0x0DCF },
+ { 0x0DDF, 0x0DDF },
+ { 0x200C, 0x200D },
+ { 0xFF9E, 0xFF9F },
+ { 0x1D165, 0x1D165 },
+ { 0x1D16E, 0x1D172 }
+
+#define PREDICATE(c) uc_is_property_other_grapheme_extend (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_other_id_continue.c b/tests/unictype/test-pr_other_id_continue.c
new file mode 100644
index 00000000..b30a7df1
--- /dev/null
+++ b/tests/unictype/test-pr_other_id_continue.c
@@ -0,0 +1,25 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x00B7, 0x00B7 },
+ { 0x0387, 0x0387 },
+ { 0x1369, 0x1371 }
+
+#define PREDICATE(c) uc_is_property_other_id_continue (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_other_id_start.c b/tests/unictype/test-pr_other_id_start.c
new file mode 100644
index 00000000..d1cc5f09
--- /dev/null
+++ b/tests/unictype/test-pr_other_id_start.c
@@ -0,0 +1,25 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x2118, 0x2118 },
+ { 0x212E, 0x212E },
+ { 0x309B, 0x309C }
+
+#define PREDICATE(c) uc_is_property_other_id_start (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_other_lowercase.c b/tests/unictype/test-pr_other_lowercase.c
new file mode 100644
index 00000000..a2810dca
--- /dev/null
+++ b/tests/unictype/test-pr_other_lowercase.c
@@ -0,0 +1,35 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x02B0, 0x02B8 },
+ { 0x02C0, 0x02C1 },
+ { 0x02E0, 0x02E4 },
+ { 0x0345, 0x0345 },
+ { 0x037A, 0x037A },
+ { 0x1D2C, 0x1D61 },
+ { 0x1D78, 0x1D78 },
+ { 0x1D9B, 0x1DBF },
+ { 0x2090, 0x2094 },
+ { 0x2170, 0x217F },
+ { 0x24D0, 0x24E9 },
+ { 0x2C7D, 0x2C7D },
+ { 0xA770, 0xA770 }
+
+#define PREDICATE(c) uc_is_property_other_lowercase (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_other_math.c b/tests/unictype/test-pr_other_math.c
new file mode 100644
index 00000000..b563303b
--- /dev/null
+++ b/tests/unictype/test-pr_other_math.c
@@ -0,0 +1,121 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x005E, 0x005E },
+ { 0x03D0, 0x03D2 },
+ { 0x03D5, 0x03D5 },
+ { 0x03F0, 0x03F1 },
+ { 0x03F4, 0x03F5 },
+ { 0x2016, 0x2016 },
+ { 0x2032, 0x2034 },
+ { 0x2040, 0x2040 },
+ { 0x2061, 0x2064 },
+ { 0x207D, 0x207E },
+ { 0x208D, 0x208E },
+ { 0x20D0, 0x20DC },
+ { 0x20E1, 0x20E1 },
+ { 0x20E5, 0x20E6 },
+ { 0x20EB, 0x20EF },
+ { 0x2102, 0x2102 },
+ { 0x210A, 0x2113 },
+ { 0x2115, 0x2115 },
+ { 0x2119, 0x211D },
+ { 0x2124, 0x2124 },
+ { 0x2128, 0x2129 },
+ { 0x212C, 0x212D },
+ { 0x212F, 0x2131 },
+ { 0x2133, 0x2138 },
+ { 0x213C, 0x213F },
+ { 0x2145, 0x2149 },
+ { 0x2195, 0x2199 },
+ { 0x219C, 0x219F },
+ { 0x21A1, 0x21A2 },
+ { 0x21A4, 0x21A5 },
+ { 0x21A7, 0x21A7 },
+ { 0x21A9, 0x21AD },
+ { 0x21B0, 0x21B1 },
+ { 0x21B6, 0x21B7 },
+ { 0x21BC, 0x21CD },
+ { 0x21D0, 0x21D1 },
+ { 0x21D3, 0x21D3 },
+ { 0x21D5, 0x21DB },
+ { 0x21DD, 0x21DD },
+ { 0x21E4, 0x21E5 },
+ { 0x23B4, 0x23B5 },
+ { 0x23B7, 0x23B7 },
+ { 0x23D0, 0x23D0 },
+ { 0x23E2, 0x23E2 },
+ { 0x25A0, 0x25A1 },
+ { 0x25AE, 0x25B6 },
+ { 0x25BC, 0x25C0 },
+ { 0x25C6, 0x25C7 },
+ { 0x25CA, 0x25CB },
+ { 0x25CF, 0x25D3 },
+ { 0x25E2, 0x25E2 },
+ { 0x25E4, 0x25E4 },
+ { 0x25E7, 0x25EC },
+ { 0x2605, 0x2606 },
+ { 0x2640, 0x2640 },
+ { 0x2642, 0x2642 },
+ { 0x2660, 0x2663 },
+ { 0x266D, 0x266E },
+ { 0x27C5, 0x27C6 },
+ { 0x27E6, 0x27EF },
+ { 0x2983, 0x2998 },
+ { 0x29D8, 0x29DB },
+ { 0x29FC, 0x29FD },
+ { 0xFE61, 0xFE61 },
+ { 0xFE63, 0xFE63 },
+ { 0xFE68, 0xFE68 },
+ { 0xFF3C, 0xFF3C },
+ { 0xFF3E, 0xFF3E },
+ { 0x1D400, 0x1D454 },
+ { 0x1D456, 0x1D49C },
+ { 0x1D49E, 0x1D49F },
+ { 0x1D4A2, 0x1D4A2 },
+ { 0x1D4A5, 0x1D4A6 },
+ { 0x1D4A9, 0x1D4AC },
+ { 0x1D4AE, 0x1D4B9 },
+ { 0x1D4BB, 0x1D4BB },
+ { 0x1D4BD, 0x1D4C3 },
+ { 0x1D4C5, 0x1D505 },
+ { 0x1D507, 0x1D50A },
+ { 0x1D50D, 0x1D514 },
+ { 0x1D516, 0x1D51C },
+ { 0x1D51E, 0x1D539 },
+ { 0x1D53B, 0x1D53E },
+ { 0x1D540, 0x1D544 },
+ { 0x1D546, 0x1D546 },
+ { 0x1D54A, 0x1D550 },
+ { 0x1D552, 0x1D6A5 },
+ { 0x1D6A8, 0x1D6C0 },
+ { 0x1D6C2, 0x1D6DA },
+ { 0x1D6DC, 0x1D6FA },
+ { 0x1D6FC, 0x1D714 },
+ { 0x1D716, 0x1D734 },
+ { 0x1D736, 0x1D74E },
+ { 0x1D750, 0x1D76E },
+ { 0x1D770, 0x1D788 },
+ { 0x1D78A, 0x1D7A8 },
+ { 0x1D7AA, 0x1D7C2 },
+ { 0x1D7C4, 0x1D7CB },
+ { 0x1D7CE, 0x1D7FF }
+
+#define PREDICATE(c) uc_is_property_other_math (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_other_uppercase.c b/tests/unictype/test-pr_other_uppercase.c
new file mode 100644
index 00000000..a98cb44e
--- /dev/null
+++ b/tests/unictype/test-pr_other_uppercase.c
@@ -0,0 +1,24 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x2160, 0x216F },
+ { 0x24B6, 0x24CF }
+
+#define PREDICATE(c) uc_is_property_other_uppercase (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_paired_punctuation.c b/tests/unictype/test-pr_paired_punctuation.c
new file mode 100644
index 00000000..3df878cc
--- /dev/null
+++ b/tests/unictype/test-pr_paired_punctuation.c
@@ -0,0 +1,49 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0028, 0x0029 },
+ { 0x005B, 0x005B },
+ { 0x005D, 0x005D },
+ { 0x007B, 0x007B },
+ { 0x007D, 0x007D },
+ { 0x00AB, 0x00AB },
+ { 0x00BB, 0x00BB },
+ { 0x0F3A, 0x0F3D },
+ { 0x169B, 0x169C },
+ { 0x2018, 0x201F },
+ { 0x2039, 0x203A },
+ { 0x2045, 0x2046 },
+ { 0x207D, 0x207E },
+ { 0x208D, 0x208E },
+ { 0x2329, 0x232A },
+ { 0x3008, 0x3011 },
+ { 0x3014, 0x301B },
+ { 0x301D, 0x301F },
+ { 0xFD3E, 0xFD3F },
+ { 0xFE35, 0xFE44 },
+ { 0xFE59, 0xFE5E },
+ { 0xFF08, 0xFF09 },
+ { 0xFF3B, 0xFF3B },
+ { 0xFF3D, 0xFF3D },
+ { 0xFF5B, 0xFF5B },
+ { 0xFF5D, 0xFF5D },
+ { 0xFF62, 0xFF63 }
+
+#define PREDICATE(c) uc_is_property_paired_punctuation (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_paragraph_separator.c b/tests/unictype/test-pr_paragraph_separator.c
new file mode 100644
index 00000000..dca0b19a
--- /dev/null
+++ b/tests/unictype/test-pr_paragraph_separator.c
@@ -0,0 +1,23 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x2029, 0x2029 }
+
+#define PREDICATE(c) uc_is_property_paragraph_separator (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_pattern_syntax.c b/tests/unictype/test-pr_pattern_syntax.c
new file mode 100644
index 00000000..40a056b3
--- /dev/null
+++ b/tests/unictype/test-pr_pattern_syntax.c
@@ -0,0 +1,50 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0021, 0x002F },
+ { 0x003A, 0x0040 },
+ { 0x005B, 0x005E },
+ { 0x0060, 0x0060 },
+ { 0x007B, 0x007E },
+ { 0x00A1, 0x00A7 },
+ { 0x00A9, 0x00A9 },
+ { 0x00AB, 0x00AC },
+ { 0x00AE, 0x00AE },
+ { 0x00B0, 0x00B1 },
+ { 0x00B6, 0x00B6 },
+ { 0x00BB, 0x00BB },
+ { 0x00BF, 0x00BF },
+ { 0x00D7, 0x00D7 },
+ { 0x00F7, 0x00F7 },
+ { 0x2010, 0x2027 },
+ { 0x2030, 0x203E },
+ { 0x2041, 0x2053 },
+ { 0x2055, 0x205E },
+ { 0x2190, 0x245F },
+ { 0x2500, 0x2775 },
+ { 0x2794, 0x2BFF },
+ { 0x2E00, 0x2E7F },
+ { 0x3001, 0x3003 },
+ { 0x3008, 0x3020 },
+ { 0x3030, 0x3030 },
+ { 0xFD3E, 0xFD3F },
+ { 0xFE45, 0xFE46 }
+
+#define PREDICATE(c) uc_is_property_pattern_syntax (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_pattern_white_space.c b/tests/unictype/test-pr_pattern_white_space.c
new file mode 100644
index 00000000..347cb0b0
--- /dev/null
+++ b/tests/unictype/test-pr_pattern_white_space.c
@@ -0,0 +1,27 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0009, 0x000D },
+ { 0x0020, 0x0020 },
+ { 0x0085, 0x0085 },
+ { 0x200E, 0x200F },
+ { 0x2028, 0x2029 }
+
+#define PREDICATE(c) uc_is_property_pattern_white_space (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_private_use.c b/tests/unictype/test-pr_private_use.c
new file mode 100644
index 00000000..6cfa1929
--- /dev/null
+++ b/tests/unictype/test-pr_private_use.c
@@ -0,0 +1,25 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0xE000, 0xF8FF },
+ { 0xF0000, 0xFFFFD },
+ { 0x100000, 0x10FFFD }
+
+#define PREDICATE(c) uc_is_property_private_use (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_punctuation.c b/tests/unictype/test-pr_punctuation.c
new file mode 100644
index 00000000..936e62ce
--- /dev/null
+++ b/tests/unictype/test-pr_punctuation.c
@@ -0,0 +1,134 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0021, 0x0023 },
+ { 0x0025, 0x002A },
+ { 0x002C, 0x002F },
+ { 0x003A, 0x003B },
+ { 0x003F, 0x0040 },
+ { 0x005B, 0x005D },
+ { 0x005F, 0x005F },
+ { 0x007B, 0x007B },
+ { 0x007D, 0x007D },
+ { 0x00A1, 0x00A1 },
+ { 0x00AB, 0x00AB },
+ { 0x00B7, 0x00B7 },
+ { 0x00BB, 0x00BB },
+ { 0x00BF, 0x00BF },
+ { 0x037E, 0x037E },
+ { 0x0387, 0x0387 },
+ { 0x055A, 0x055F },
+ { 0x0589, 0x058A },
+ { 0x05BE, 0x05BE },
+ { 0x05C0, 0x05C0 },
+ { 0x05C3, 0x05C3 },
+ { 0x05C6, 0x05C6 },
+ { 0x05F3, 0x05F4 },
+ { 0x0609, 0x060A },
+ { 0x060C, 0x060D },
+ { 0x061B, 0x061B },
+ { 0x061E, 0x061F },
+ { 0x066A, 0x066D },
+ { 0x06D4, 0x06D4 },
+ { 0x0700, 0x070D },
+ { 0x07F7, 0x07F9 },
+ { 0x0964, 0x0965 },
+ { 0x0970, 0x0970 },
+ { 0x0DF4, 0x0DF4 },
+ { 0x0E4F, 0x0E4F },
+ { 0x0E5A, 0x0E5B },
+ { 0x0F04, 0x0F12 },
+ { 0x0F3A, 0x0F3D },
+ { 0x0F85, 0x0F85 },
+ { 0x0FD0, 0x0FD4 },
+ { 0x104A, 0x104F },
+ { 0x10FB, 0x10FB },
+ { 0x1361, 0x1368 },
+ { 0x166D, 0x166E },
+ { 0x169B, 0x169C },
+ { 0x16EB, 0x16ED },
+ { 0x1735, 0x1736 },
+ { 0x17D4, 0x17D6 },
+ { 0x17D8, 0x17DA },
+ { 0x1800, 0x180A },
+ { 0x1944, 0x1945 },
+ { 0x19DE, 0x19DF },
+ { 0x1A1E, 0x1A1F },
+ { 0x1B5A, 0x1B60 },
+ { 0x1C3B, 0x1C3F },
+ { 0x1C7E, 0x1C7F },
+ { 0x2010, 0x2027 },
+ { 0x2030, 0x2043 },
+ { 0x2045, 0x2051 },
+ { 0x2053, 0x205E },
+ { 0x207D, 0x207E },
+ { 0x208D, 0x208E },
+ { 0x2329, 0x232A },
+ { 0x2768, 0x2775 },
+ { 0x27C5, 0x27C6 },
+ { 0x27E6, 0x27EF },
+ { 0x2983, 0x2998 },
+ { 0x29D8, 0x29DB },
+ { 0x29FC, 0x29FD },
+ { 0x2CF9, 0x2CFC },
+ { 0x2CFE, 0x2CFF },
+ { 0x2E00, 0x2E2E },
+ { 0x2E30, 0x2E30 },
+ { 0x3001, 0x3003 },
+ { 0x3008, 0x3011 },
+ { 0x3014, 0x301F },
+ { 0x3030, 0x3030 },
+ { 0x303D, 0x303D },
+ { 0x30A0, 0x30A0 },
+ { 0x30FB, 0x30FB },
+ { 0xA60D, 0xA60F },
+ { 0xA673, 0xA673 },
+ { 0xA67E, 0xA67E },
+ { 0xA874, 0xA877 },
+ { 0xA8CE, 0xA8CF },
+ { 0xA92E, 0xA92F },
+ { 0xA95F, 0xA95F },
+ { 0xAA5C, 0xAA5F },
+ { 0xFD3E, 0xFD3F },
+ { 0xFE10, 0xFE19 },
+ { 0xFE30, 0xFE52 },
+ { 0xFE54, 0xFE61 },
+ { 0xFE63, 0xFE63 },
+ { 0xFE68, 0xFE68 },
+ { 0xFE6A, 0xFE6B },
+ { 0xFF01, 0xFF03 },
+ { 0xFF05, 0xFF0A },
+ { 0xFF0C, 0xFF0F },
+ { 0xFF1A, 0xFF1B },
+ { 0xFF1F, 0xFF20 },
+ { 0xFF3B, 0xFF3D },
+ { 0xFF3F, 0xFF3F },
+ { 0xFF5B, 0xFF5B },
+ { 0xFF5D, 0xFF5D },
+ { 0xFF5F, 0xFF65 },
+ { 0x10100, 0x10101 },
+ { 0x1039F, 0x1039F },
+ { 0x103D0, 0x103D0 },
+ { 0x1091F, 0x1091F },
+ { 0x1093F, 0x1093F },
+ { 0x10A50, 0x10A58 },
+ { 0x12470, 0x12473 }
+
+#define PREDICATE(c) uc_is_property_punctuation (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_quotation_mark.c b/tests/unictype/test-pr_quotation_mark.c
new file mode 100644
index 00000000..e592463f
--- /dev/null
+++ b/tests/unictype/test-pr_quotation_mark.c
@@ -0,0 +1,34 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0022, 0x0022 },
+ { 0x0027, 0x0027 },
+ { 0x00AB, 0x00AB },
+ { 0x00BB, 0x00BB },
+ { 0x2018, 0x201F },
+ { 0x2039, 0x203A },
+ { 0x300C, 0x300F },
+ { 0x301D, 0x301F },
+ { 0xFE41, 0xFE44 },
+ { 0xFF02, 0xFF02 },
+ { 0xFF07, 0xFF07 },
+ { 0xFF62, 0xFF63 }
+
+#define PREDICATE(c) uc_is_property_quotation_mark (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_radical.c b/tests/unictype/test-pr_radical.c
new file mode 100644
index 00000000..23c30260
--- /dev/null
+++ b/tests/unictype/test-pr_radical.c
@@ -0,0 +1,25 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x2E80, 0x2E99 },
+ { 0x2E9B, 0x2EF3 },
+ { 0x2F00, 0x2FD5 }
+
+#define PREDICATE(c) uc_is_property_radical (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_sentence_terminal.c b/tests/unictype/test-pr_sentence_terminal.c
new file mode 100644
index 00000000..107649e7
--- /dev/null
+++ b/tests/unictype/test-pr_sentence_terminal.c
@@ -0,0 +1,59 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0021, 0x0021 },
+ { 0x002E, 0x002E },
+ { 0x003F, 0x003F },
+ { 0x055C, 0x055C },
+ { 0x055E, 0x055E },
+ { 0x0589, 0x0589 },
+ { 0x061F, 0x061F },
+ { 0x06D4, 0x06D4 },
+ { 0x0700, 0x0702 },
+ { 0x07F9, 0x07F9 },
+ { 0x0964, 0x0965 },
+ { 0x104A, 0x104B },
+ { 0x1362, 0x1362 },
+ { 0x1367, 0x1368 },
+ { 0x166E, 0x166E },
+ { 0x1803, 0x1803 },
+ { 0x1809, 0x1809 },
+ { 0x1944, 0x1945 },
+ { 0x1B5A, 0x1B5B },
+ { 0x1B5E, 0x1B5F },
+ { 0x1C3B, 0x1C3C },
+ { 0x1C7E, 0x1C7F },
+ { 0x203C, 0x203D },
+ { 0x2047, 0x2049 },
+ { 0x2E2E, 0x2E2E },
+ { 0x3002, 0x3002 },
+ { 0xA60E, 0xA60F },
+ { 0xA876, 0xA877 },
+ { 0xA8CE, 0xA8CF },
+ { 0xA92F, 0xA92F },
+ { 0xAA5D, 0xAA5F },
+ { 0xFE52, 0xFE52 },
+ { 0xFE56, 0xFE57 },
+ { 0xFF01, 0xFF01 },
+ { 0xFF0E, 0xFF0E },
+ { 0xFF1F, 0xFF1F },
+ { 0xFF61, 0xFF61 }
+
+#define PREDICATE(c) uc_is_property_sentence_terminal (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_soft_dotted.c b/tests/unictype/test-pr_soft_dotted.c
new file mode 100644
index 00000000..ad8b0fb7
--- /dev/null
+++ b/tests/unictype/test-pr_soft_dotted.c
@@ -0,0 +1,53 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0069, 0x006A },
+ { 0x012F, 0x012F },
+ { 0x0249, 0x0249 },
+ { 0x0268, 0x0268 },
+ { 0x029D, 0x029D },
+ { 0x02B2, 0x02B2 },
+ { 0x03F3, 0x03F3 },
+ { 0x0456, 0x0456 },
+ { 0x0458, 0x0458 },
+ { 0x1D62, 0x1D62 },
+ { 0x1D96, 0x1D96 },
+ { 0x1DA4, 0x1DA4 },
+ { 0x1DA8, 0x1DA8 },
+ { 0x1E2D, 0x1E2D },
+ { 0x1ECB, 0x1ECB },
+ { 0x2071, 0x2071 },
+ { 0x2148, 0x2149 },
+ { 0x2C7C, 0x2C7C },
+ { 0x1D422, 0x1D423 },
+ { 0x1D456, 0x1D457 },
+ { 0x1D48A, 0x1D48B },
+ { 0x1D4BE, 0x1D4BF },
+ { 0x1D4F2, 0x1D4F3 },
+ { 0x1D526, 0x1D527 },
+ { 0x1D55A, 0x1D55B },
+ { 0x1D58E, 0x1D58F },
+ { 0x1D5C2, 0x1D5C3 },
+ { 0x1D5F6, 0x1D5F7 },
+ { 0x1D62A, 0x1D62B },
+ { 0x1D65E, 0x1D65F },
+ { 0x1D692, 0x1D693 }
+
+#define PREDICATE(c) uc_is_property_soft_dotted (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_space.c b/tests/unictype/test-pr_space.c
new file mode 100644
index 00000000..64a3e72c
--- /dev/null
+++ b/tests/unictype/test-pr_space.c
@@ -0,0 +1,30 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0020, 0x0020 },
+ { 0x00A0, 0x00A0 },
+ { 0x1680, 0x1680 },
+ { 0x180E, 0x180E },
+ { 0x2000, 0x200A },
+ { 0x202F, 0x202F },
+ { 0x205F, 0x205F },
+ { 0x3000, 0x3000 }
+
+#define PREDICATE(c) uc_is_property_space (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_terminal_punctuation.c b/tests/unictype/test-pr_terminal_punctuation.c
new file mode 100644
index 00000000..3ded06d9
--- /dev/null
+++ b/tests/unictype/test-pr_terminal_punctuation.c
@@ -0,0 +1,77 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0021, 0x0021 },
+ { 0x002C, 0x002C },
+ { 0x002E, 0x002E },
+ { 0x003A, 0x003B },
+ { 0x003F, 0x003F },
+ { 0x037E, 0x037E },
+ { 0x0387, 0x0387 },
+ { 0x0589, 0x0589 },
+ { 0x05C3, 0x05C3 },
+ { 0x060C, 0x060C },
+ { 0x061B, 0x061B },
+ { 0x061F, 0x061F },
+ { 0x06D4, 0x06D4 },
+ { 0x0700, 0x070A },
+ { 0x070C, 0x070C },
+ { 0x07F8, 0x07F9 },
+ { 0x0964, 0x0965 },
+ { 0x0E5A, 0x0E5B },
+ { 0x0F08, 0x0F08 },
+ { 0x0F0D, 0x0F12 },
+ { 0x104A, 0x104B },
+ { 0x1361, 0x1368 },
+ { 0x166D, 0x166E },
+ { 0x16EB, 0x16ED },
+ { 0x17D4, 0x17D6 },
+ { 0x17DA, 0x17DA },
+ { 0x1802, 0x1805 },
+ { 0x1808, 0x1809 },
+ { 0x1944, 0x1945 },
+ { 0x1B5A, 0x1B5B },
+ { 0x1B5D, 0x1B5F },
+ { 0x1C3B, 0x1C3F },
+ { 0x1C7E, 0x1C7F },
+ { 0x203C, 0x203D },
+ { 0x2047, 0x2049 },
+ { 0x2E2E, 0x2E2E },
+ { 0x3001, 0x3002 },
+ { 0xA60D, 0xA60F },
+ { 0xA876, 0xA877 },
+ { 0xA8CE, 0xA8CF },
+ { 0xA92F, 0xA92F },
+ { 0xAA5D, 0xAA5F },
+ { 0xFE50, 0xFE52 },
+ { 0xFE54, 0xFE57 },
+ { 0xFF01, 0xFF01 },
+ { 0xFF0C, 0xFF0C },
+ { 0xFF0E, 0xFF0E },
+ { 0xFF1A, 0xFF1B },
+ { 0xFF1F, 0xFF1F },
+ { 0xFF61, 0xFF61 },
+ { 0xFF64, 0xFF64 },
+ { 0x1039F, 0x1039F },
+ { 0x103D0, 0x103D0 },
+ { 0x1091F, 0x1091F },
+ { 0x12470, 0x12473 }
+
+#define PREDICATE(c) uc_is_property_terminal_punctuation (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_test.c b/tests/unictype/test-pr_test.c
new file mode 100644
index 00000000..388ae004
--- /dev/null
+++ b/tests/unictype/test-pr_test.c
@@ -0,0 +1,47 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ uc_property_t pr = UC_PROPERTY_COMPOSITE;
+ unsigned int c;
+
+ for (c = 0; c < 0x110000; c++)
+ ASSERT (uc_is_property (c, pr) == uc_is_property_composite (c));
+
+ return 0;
+}
diff --git a/tests/unictype/test-pr_titlecase.c b/tests/unictype/test-pr_titlecase.c
new file mode 100644
index 00000000..10043865
--- /dev/null
+++ b/tests/unictype/test-pr_titlecase.c
@@ -0,0 +1,32 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x01C5, 0x01C5 },
+ { 0x01C8, 0x01C8 },
+ { 0x01CB, 0x01CB },
+ { 0x01F2, 0x01F2 },
+ { 0x1F88, 0x1F8F },
+ { 0x1F98, 0x1F9F },
+ { 0x1FA8, 0x1FAF },
+ { 0x1FBC, 0x1FBC },
+ { 0x1FCC, 0x1FCC },
+ { 0x1FFC, 0x1FFC }
+
+#define PREDICATE(c) uc_is_property_titlecase (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_unassigned_code_value.c b/tests/unictype/test-pr_unassigned_code_value.c
new file mode 100644
index 00000000..91bd1611
--- /dev/null
+++ b/tests/unictype/test-pr_unassigned_code_value.c
@@ -0,0 +1,476 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0378, 0x0379 },
+ { 0x037F, 0x0383 },
+ { 0x038B, 0x038B },
+ { 0x038D, 0x038D },
+ { 0x03A2, 0x03A2 },
+ { 0x0524, 0x0530 },
+ { 0x0557, 0x0558 },
+ { 0x0560, 0x0560 },
+ { 0x0588, 0x0588 },
+ { 0x058B, 0x0590 },
+ { 0x05C8, 0x05CF },
+ { 0x05EB, 0x05EF },
+ { 0x05F5, 0x05FF },
+ { 0x0604, 0x0605 },
+ { 0x061C, 0x061D },
+ { 0x0620, 0x0620 },
+ { 0x065F, 0x065F },
+ { 0x070E, 0x070E },
+ { 0x074B, 0x074C },
+ { 0x07B2, 0x07BF },
+ { 0x07FB, 0x0900 },
+ { 0x093A, 0x093B },
+ { 0x094E, 0x094F },
+ { 0x0955, 0x0957 },
+ { 0x0973, 0x097A },
+ { 0x0980, 0x0980 },
+ { 0x0984, 0x0984 },
+ { 0x098D, 0x098E },
+ { 0x0991, 0x0992 },
+ { 0x09A9, 0x09A9 },
+ { 0x09B1, 0x09B1 },
+ { 0x09B3, 0x09B5 },
+ { 0x09BA, 0x09BB },
+ { 0x09C5, 0x09C6 },
+ { 0x09C9, 0x09CA },
+ { 0x09CF, 0x09D6 },
+ { 0x09D8, 0x09DB },
+ { 0x09DE, 0x09DE },
+ { 0x09E4, 0x09E5 },
+ { 0x09FB, 0x0A00 },
+ { 0x0A04, 0x0A04 },
+ { 0x0A0B, 0x0A0E },
+ { 0x0A11, 0x0A12 },
+ { 0x0A29, 0x0A29 },
+ { 0x0A31, 0x0A31 },
+ { 0x0A34, 0x0A34 },
+ { 0x0A37, 0x0A37 },
+ { 0x0A3A, 0x0A3B },
+ { 0x0A3D, 0x0A3D },
+ { 0x0A43, 0x0A46 },
+ { 0x0A49, 0x0A4A },
+ { 0x0A4E, 0x0A50 },
+ { 0x0A52, 0x0A58 },
+ { 0x0A5D, 0x0A5D },
+ { 0x0A5F, 0x0A65 },
+ { 0x0A76, 0x0A80 },
+ { 0x0A84, 0x0A84 },
+ { 0x0A8E, 0x0A8E },
+ { 0x0A92, 0x0A92 },
+ { 0x0AA9, 0x0AA9 },
+ { 0x0AB1, 0x0AB1 },
+ { 0x0AB4, 0x0AB4 },
+ { 0x0ABA, 0x0ABB },
+ { 0x0AC6, 0x0AC6 },
+ { 0x0ACA, 0x0ACA },
+ { 0x0ACE, 0x0ACF },
+ { 0x0AD1, 0x0ADF },
+ { 0x0AE4, 0x0AE5 },
+ { 0x0AF0, 0x0AF0 },
+ { 0x0AF2, 0x0B00 },
+ { 0x0B04, 0x0B04 },
+ { 0x0B0D, 0x0B0E },
+ { 0x0B11, 0x0B12 },
+ { 0x0B29, 0x0B29 },
+ { 0x0B31, 0x0B31 },
+ { 0x0B34, 0x0B34 },
+ { 0x0B3A, 0x0B3B },
+ { 0x0B45, 0x0B46 },
+ { 0x0B49, 0x0B4A },
+ { 0x0B4E, 0x0B55 },
+ { 0x0B58, 0x0B5B },
+ { 0x0B5E, 0x0B5E },
+ { 0x0B64, 0x0B65 },
+ { 0x0B72, 0x0B81 },
+ { 0x0B84, 0x0B84 },
+ { 0x0B8B, 0x0B8D },
+ { 0x0B91, 0x0B91 },
+ { 0x0B96, 0x0B98 },
+ { 0x0B9B, 0x0B9B },
+ { 0x0B9D, 0x0B9D },
+ { 0x0BA0, 0x0BA2 },
+ { 0x0BA5, 0x0BA7 },
+ { 0x0BAB, 0x0BAD },
+ { 0x0BBA, 0x0BBD },
+ { 0x0BC3, 0x0BC5 },
+ { 0x0BC9, 0x0BC9 },
+ { 0x0BCE, 0x0BCF },
+ { 0x0BD1, 0x0BD6 },
+ { 0x0BD8, 0x0BE5 },
+ { 0x0BFB, 0x0C00 },
+ { 0x0C04, 0x0C04 },
+ { 0x0C0D, 0x0C0D },
+ { 0x0C11, 0x0C11 },
+ { 0x0C29, 0x0C29 },
+ { 0x0C34, 0x0C34 },
+ { 0x0C3A, 0x0C3C },
+ { 0x0C45, 0x0C45 },
+ { 0x0C49, 0x0C49 },
+ { 0x0C4E, 0x0C54 },
+ { 0x0C57, 0x0C57 },
+ { 0x0C5A, 0x0C5F },
+ { 0x0C64, 0x0C65 },
+ { 0x0C70, 0x0C77 },
+ { 0x0C80, 0x0C81 },
+ { 0x0C84, 0x0C84 },
+ { 0x0C8D, 0x0C8D },
+ { 0x0C91, 0x0C91 },
+ { 0x0CA9, 0x0CA9 },
+ { 0x0CB4, 0x0CB4 },
+ { 0x0CBA, 0x0CBB },
+ { 0x0CC5, 0x0CC5 },
+ { 0x0CC9, 0x0CC9 },
+ { 0x0CCE, 0x0CD4 },
+ { 0x0CD7, 0x0CDD },
+ { 0x0CDF, 0x0CDF },
+ { 0x0CE4, 0x0CE5 },
+ { 0x0CF0, 0x0CF0 },
+ { 0x0CF3, 0x0D01 },
+ { 0x0D04, 0x0D04 },
+ { 0x0D0D, 0x0D0D },
+ { 0x0D11, 0x0D11 },
+ { 0x0D29, 0x0D29 },
+ { 0x0D3A, 0x0D3C },
+ { 0x0D45, 0x0D45 },
+ { 0x0D49, 0x0D49 },
+ { 0x0D4E, 0x0D56 },
+ { 0x0D58, 0x0D5F },
+ { 0x0D64, 0x0D65 },
+ { 0x0D76, 0x0D78 },
+ { 0x0D80, 0x0D81 },
+ { 0x0D84, 0x0D84 },
+ { 0x0D97, 0x0D99 },
+ { 0x0DB2, 0x0DB2 },
+ { 0x0DBC, 0x0DBC },
+ { 0x0DBE, 0x0DBF },
+ { 0x0DC7, 0x0DC9 },
+ { 0x0DCB, 0x0DCE },
+ { 0x0DD5, 0x0DD5 },
+ { 0x0DD7, 0x0DD7 },
+ { 0x0DE0, 0x0DF1 },
+ { 0x0DF5, 0x0E00 },
+ { 0x0E3B, 0x0E3E },
+ { 0x0E5C, 0x0E80 },
+ { 0x0E83, 0x0E83 },
+ { 0x0E85, 0x0E86 },
+ { 0x0E89, 0x0E89 },
+ { 0x0E8B, 0x0E8C },
+ { 0x0E8E, 0x0E93 },
+ { 0x0E98, 0x0E98 },
+ { 0x0EA0, 0x0EA0 },
+ { 0x0EA4, 0x0EA4 },
+ { 0x0EA6, 0x0EA6 },
+ { 0x0EA8, 0x0EA9 },
+ { 0x0EAC, 0x0EAC },
+ { 0x0EBA, 0x0EBA },
+ { 0x0EBE, 0x0EBF },
+ { 0x0EC5, 0x0EC5 },
+ { 0x0EC7, 0x0EC7 },
+ { 0x0ECE, 0x0ECF },
+ { 0x0EDA, 0x0EDB },
+ { 0x0EDE, 0x0EFF },
+ { 0x0F48, 0x0F48 },
+ { 0x0F6D, 0x0F70 },
+ { 0x0F8C, 0x0F8F },
+ { 0x0F98, 0x0F98 },
+ { 0x0FBD, 0x0FBD },
+ { 0x0FCD, 0x0FCD },
+ { 0x0FD5, 0x0FFF },
+ { 0x109A, 0x109D },
+ { 0x10C6, 0x10CF },
+ { 0x10FD, 0x10FF },
+ { 0x115A, 0x115E },
+ { 0x11A3, 0x11A7 },
+ { 0x11FA, 0x11FF },
+ { 0x1249, 0x1249 },
+ { 0x124E, 0x124F },
+ { 0x1257, 0x1257 },
+ { 0x1259, 0x1259 },
+ { 0x125E, 0x125F },
+ { 0x1289, 0x1289 },
+ { 0x128E, 0x128F },
+ { 0x12B1, 0x12B1 },
+ { 0x12B6, 0x12B7 },
+ { 0x12BF, 0x12BF },
+ { 0x12C1, 0x12C1 },
+ { 0x12C6, 0x12C7 },
+ { 0x12D7, 0x12D7 },
+ { 0x1311, 0x1311 },
+ { 0x1316, 0x1317 },
+ { 0x135B, 0x135E },
+ { 0x137D, 0x137F },
+ { 0x139A, 0x139F },
+ { 0x13F5, 0x1400 },
+ { 0x1677, 0x167F },
+ { 0x169D, 0x169F },
+ { 0x16F1, 0x16FF },
+ { 0x170D, 0x170D },
+ { 0x1715, 0x171F },
+ { 0x1737, 0x173F },
+ { 0x1754, 0x175F },
+ { 0x176D, 0x176D },
+ { 0x1771, 0x1771 },
+ { 0x1774, 0x177F },
+ { 0x17DE, 0x17DF },
+ { 0x17EA, 0x17EF },
+ { 0x17FA, 0x17FF },
+ { 0x180F, 0x180F },
+ { 0x181A, 0x181F },
+ { 0x1878, 0x187F },
+ { 0x18AB, 0x18FF },
+ { 0x191D, 0x191F },
+ { 0x192C, 0x192F },
+ { 0x193C, 0x193F },
+ { 0x1941, 0x1943 },
+ { 0x196E, 0x196F },
+ { 0x1975, 0x197F },
+ { 0x19AA, 0x19AF },
+ { 0x19CA, 0x19CF },
+ { 0x19DA, 0x19DD },
+ { 0x1A1C, 0x1A1D },
+ { 0x1A20, 0x1AFF },
+ { 0x1B4C, 0x1B4F },
+ { 0x1B7D, 0x1B7F },
+ { 0x1BAB, 0x1BAD },
+ { 0x1BBA, 0x1BFF },
+ { 0x1C38, 0x1C3A },
+ { 0x1C4A, 0x1C4C },
+ { 0x1C80, 0x1CFF },
+ { 0x1DE7, 0x1DFD },
+ { 0x1F16, 0x1F17 },
+ { 0x1F1E, 0x1F1F },
+ { 0x1F46, 0x1F47 },
+ { 0x1F4E, 0x1F4F },
+ { 0x1F58, 0x1F58 },
+ { 0x1F5A, 0x1F5A },
+ { 0x1F5C, 0x1F5C },
+ { 0x1F5E, 0x1F5E },
+ { 0x1F7E, 0x1F7F },
+ { 0x1FB5, 0x1FB5 },
+ { 0x1FC5, 0x1FC5 },
+ { 0x1FD4, 0x1FD5 },
+ { 0x1FDC, 0x1FDC },
+ { 0x1FF0, 0x1FF1 },
+ { 0x1FF5, 0x1FF5 },
+ { 0x1FFF, 0x1FFF },
+ { 0x2065, 0x2069 },
+ { 0x2072, 0x2073 },
+ { 0x208F, 0x208F },
+ { 0x2095, 0x209F },
+ { 0x20B6, 0x20CF },
+ { 0x20F1, 0x20FF },
+ { 0x2150, 0x2152 },
+ { 0x2189, 0x218F },
+ { 0x23E8, 0x23FF },
+ { 0x2427, 0x243F },
+ { 0x244B, 0x245F },
+ { 0x269E, 0x269F },
+ { 0x26BD, 0x26BF },
+ { 0x26C4, 0x2700 },
+ { 0x2705, 0x2705 },
+ { 0x270A, 0x270B },
+ { 0x2728, 0x2728 },
+ { 0x274C, 0x274C },
+ { 0x274E, 0x274E },
+ { 0x2753, 0x2755 },
+ { 0x2757, 0x2757 },
+ { 0x275F, 0x2760 },
+ { 0x2795, 0x2797 },
+ { 0x27B0, 0x27B0 },
+ { 0x27BF, 0x27BF },
+ { 0x27CB, 0x27CB },
+ { 0x27CD, 0x27CF },
+ { 0x2B4D, 0x2B4F },
+ { 0x2B55, 0x2BFF },
+ { 0x2C2F, 0x2C2F },
+ { 0x2C5F, 0x2C5F },
+ { 0x2C70, 0x2C70 },
+ { 0x2C7E, 0x2C7F },
+ { 0x2CEB, 0x2CF8 },
+ { 0x2D26, 0x2D2F },
+ { 0x2D66, 0x2D6E },
+ { 0x2D70, 0x2D7F },
+ { 0x2D97, 0x2D9F },
+ { 0x2DA7, 0x2DA7 },
+ { 0x2DAF, 0x2DAF },
+ { 0x2DB7, 0x2DB7 },
+ { 0x2DBF, 0x2DBF },
+ { 0x2DC7, 0x2DC7 },
+ { 0x2DCF, 0x2DCF },
+ { 0x2DD7, 0x2DD7 },
+ { 0x2DDF, 0x2DDF },
+ { 0x2E31, 0x2E7F },
+ { 0x2E9A, 0x2E9A },
+ { 0x2EF4, 0x2EFF },
+ { 0x2FD6, 0x2FEF },
+ { 0x2FFC, 0x2FFF },
+ { 0x3040, 0x3040 },
+ { 0x3097, 0x3098 },
+ { 0x3100, 0x3104 },
+ { 0x312E, 0x3130 },
+ { 0x318F, 0x318F },
+ { 0x31B8, 0x31BF },
+ { 0x31E4, 0x31EF },
+ { 0x321F, 0x321F },
+ { 0x3244, 0x324F },
+ { 0x32FF, 0x32FF },
+ { 0x4DB6, 0x4DBF },
+ { 0x9FC4, 0x9FFF },
+ { 0xA48D, 0xA48F },
+ { 0xA4C7, 0xA4FF },
+ { 0xA62C, 0xA63F },
+ { 0xA660, 0xA661 },
+ { 0xA674, 0xA67B },
+ { 0xA698, 0xA6FF },
+ { 0xA78D, 0xA7FA },
+ { 0xA82C, 0xA83F },
+ { 0xA878, 0xA87F },
+ { 0xA8C5, 0xA8CD },
+ { 0xA8DA, 0xA8FF },
+ { 0xA954, 0xA95E },
+ { 0xA960, 0xA9FF },
+ { 0xAA37, 0xAA3F },
+ { 0xAA4E, 0xAA4F },
+ { 0xAA5A, 0xAA5B },
+ { 0xAA60, 0xABFF },
+ { 0xD7A4, 0xD7FF },
+ { 0xFA2E, 0xFA2F },
+ { 0xFA6B, 0xFA6F },
+ { 0xFADA, 0xFAFF },
+ { 0xFB07, 0xFB12 },
+ { 0xFB18, 0xFB1C },
+ { 0xFB37, 0xFB37 },
+ { 0xFB3D, 0xFB3D },
+ { 0xFB3F, 0xFB3F },
+ { 0xFB42, 0xFB42 },
+ { 0xFB45, 0xFB45 },
+ { 0xFBB2, 0xFBD2 },
+ { 0xFD40, 0xFD4F },
+ { 0xFD90, 0xFD91 },
+ { 0xFDC8, 0xFDCF },
+ { 0xFDFE, 0xFDFF },
+ { 0xFE1A, 0xFE1F },
+ { 0xFE27, 0xFE2F },
+ { 0xFE53, 0xFE53 },
+ { 0xFE67, 0xFE67 },
+ { 0xFE6C, 0xFE6F },
+ { 0xFE75, 0xFE75 },
+ { 0xFEFD, 0xFEFE },
+ { 0xFF00, 0xFF00 },
+ { 0xFFBF, 0xFFC1 },
+ { 0xFFC8, 0xFFC9 },
+ { 0xFFD0, 0xFFD1 },
+ { 0xFFD8, 0xFFD9 },
+ { 0xFFDD, 0xFFDF },
+ { 0xFFE7, 0xFFE7 },
+ { 0xFFEF, 0xFFF8 },
+ { 0x1000C, 0x1000C },
+ { 0x10027, 0x10027 },
+ { 0x1003B, 0x1003B },
+ { 0x1003E, 0x1003E },
+ { 0x1004E, 0x1004F },
+ { 0x1005E, 0x1007F },
+ { 0x100FB, 0x100FF },
+ { 0x10103, 0x10106 },
+ { 0x10134, 0x10136 },
+ { 0x1018B, 0x1018F },
+ { 0x1019C, 0x101CF },
+ { 0x101FE, 0x1027F },
+ { 0x1029D, 0x1029F },
+ { 0x102D1, 0x102FF },
+ { 0x1031F, 0x1031F },
+ { 0x10324, 0x1032F },
+ { 0x1034B, 0x1037F },
+ { 0x1039E, 0x1039E },
+ { 0x103C4, 0x103C7 },
+ { 0x103D6, 0x103FF },
+ { 0x1049E, 0x1049F },
+ { 0x104AA, 0x107FF },
+ { 0x10806, 0x10807 },
+ { 0x10809, 0x10809 },
+ { 0x10836, 0x10836 },
+ { 0x10839, 0x1083B },
+ { 0x1083D, 0x1083E },
+ { 0x10840, 0x108FF },
+ { 0x1091A, 0x1091E },
+ { 0x1093A, 0x1093E },
+ { 0x10940, 0x109FF },
+ { 0x10A04, 0x10A04 },
+ { 0x10A07, 0x10A0B },
+ { 0x10A14, 0x10A14 },
+ { 0x10A18, 0x10A18 },
+ { 0x10A34, 0x10A37 },
+ { 0x10A3B, 0x10A3E },
+ { 0x10A48, 0x10A4F },
+ { 0x10A59, 0x11FFF },
+ { 0x1236F, 0x123FF },
+ { 0x12463, 0x1246F },
+ { 0x12474, 0x1CFFF },
+ { 0x1D0F6, 0x1D0FF },
+ { 0x1D127, 0x1D128 },
+ { 0x1D1DE, 0x1D1FF },
+ { 0x1D246, 0x1D2FF },
+ { 0x1D357, 0x1D35F },
+ { 0x1D372, 0x1D3FF },
+ { 0x1D455, 0x1D455 },
+ { 0x1D49D, 0x1D49D },
+ { 0x1D4A0, 0x1D4A1 },
+ { 0x1D4A3, 0x1D4A4 },
+ { 0x1D4A7, 0x1D4A8 },
+ { 0x1D4AD, 0x1D4AD },
+ { 0x1D4BA, 0x1D4BA },
+ { 0x1D4BC, 0x1D4BC },
+ { 0x1D4C4, 0x1D4C4 },
+ { 0x1D506, 0x1D506 },
+ { 0x1D50B, 0x1D50C },
+ { 0x1D515, 0x1D515 },
+ { 0x1D51D, 0x1D51D },
+ { 0x1D53A, 0x1D53A },
+ { 0x1D53F, 0x1D53F },
+ { 0x1D545, 0x1D545 },
+ { 0x1D547, 0x1D549 },
+ { 0x1D551, 0x1D551 },
+ { 0x1D6A6, 0x1D6A7 },
+ { 0x1D7CC, 0x1D7CD },
+ { 0x1D800, 0x1EFFF },
+ { 0x1F02C, 0x1F02F },
+ { 0x1F094, 0x1FFFD },
+ { 0x2A6D7, 0x2F7FF },
+ { 0x2FA1E, 0x2FFFD },
+ { 0x30000, 0x3FFFD },
+ { 0x40000, 0x4FFFD },
+ { 0x50000, 0x5FFFD },
+ { 0x60000, 0x6FFFD },
+ { 0x70000, 0x7FFFD },
+ { 0x80000, 0x8FFFD },
+ { 0x90000, 0x9FFFD },
+ { 0xA0000, 0xAFFFD },
+ { 0xB0000, 0xBFFFD },
+ { 0xC0000, 0xCFFFD },
+ { 0xD0000, 0xDFFFD },
+ { 0xE0000, 0xE0000 },
+ { 0xE0002, 0xE001F },
+ { 0xE0080, 0xE00FF },
+ { 0xE01F0, 0xEFFFD }
+
+#define PREDICATE(c) uc_is_property_unassigned_code_value (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_unified_ideograph.c b/tests/unictype/test-pr_unified_ideograph.c
new file mode 100644
index 00000000..e394751d
--- /dev/null
+++ b/tests/unictype/test-pr_unified_ideograph.c
@@ -0,0 +1,32 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x3400, 0x4DB5 },
+ { 0x4E00, 0x9FC3 },
+ { 0xFA0E, 0xFA0F },
+ { 0xFA11, 0xFA11 },
+ { 0xFA13, 0xFA14 },
+ { 0xFA1F, 0xFA1F },
+ { 0xFA21, 0xFA21 },
+ { 0xFA23, 0xFA24 },
+ { 0xFA27, 0xFA29 },
+ { 0x20000, 0x2A6D6 }
+
+#define PREDICATE(c) uc_is_property_unified_ideograph (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_uppercase.c b/tests/unictype/test-pr_uppercase.c
new file mode 100644
index 00000000..f44611ba
--- /dev/null
+++ b/tests/unictype/test-pr_uppercase.c
@@ -0,0 +1,615 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0041, 0x005A },
+ { 0x00C0, 0x00D6 },
+ { 0x00D8, 0x00DE },
+ { 0x0100, 0x0100 },
+ { 0x0102, 0x0102 },
+ { 0x0104, 0x0104 },
+ { 0x0106, 0x0106 },
+ { 0x0108, 0x0108 },
+ { 0x010A, 0x010A },
+ { 0x010C, 0x010C },
+ { 0x010E, 0x010E },
+ { 0x0110, 0x0110 },
+ { 0x0112, 0x0112 },
+ { 0x0114, 0x0114 },
+ { 0x0116, 0x0116 },
+ { 0x0118, 0x0118 },
+ { 0x011A, 0x011A },
+ { 0x011C, 0x011C },
+ { 0x011E, 0x011E },
+ { 0x0120, 0x0120 },
+ { 0x0122, 0x0122 },
+ { 0x0124, 0x0124 },
+ { 0x0126, 0x0126 },
+ { 0x0128, 0x0128 },
+ { 0x012A, 0x012A },
+ { 0x012C, 0x012C },
+ { 0x012E, 0x012E },
+ { 0x0130, 0x0130 },
+ { 0x0132, 0x0132 },
+ { 0x0134, 0x0134 },
+ { 0x0136, 0x0136 },
+ { 0x0139, 0x0139 },
+ { 0x013B, 0x013B },
+ { 0x013D, 0x013D },
+ { 0x013F, 0x013F },
+ { 0x0141, 0x0141 },
+ { 0x0143, 0x0143 },
+ { 0x0145, 0x0145 },
+ { 0x0147, 0x0147 },
+ { 0x014A, 0x014A },
+ { 0x014C, 0x014C },
+ { 0x014E, 0x014E },
+ { 0x0150, 0x0150 },
+ { 0x0152, 0x0152 },
+ { 0x0154, 0x0154 },
+ { 0x0156, 0x0156 },
+ { 0x0158, 0x0158 },
+ { 0x015A, 0x015A },
+ { 0x015C, 0x015C },
+ { 0x015E, 0x015E },
+ { 0x0160, 0x0160 },
+ { 0x0162, 0x0162 },
+ { 0x0164, 0x0164 },
+ { 0x0166, 0x0166 },
+ { 0x0168, 0x0168 },
+ { 0x016A, 0x016A },
+ { 0x016C, 0x016C },
+ { 0x016E, 0x016E },
+ { 0x0170, 0x0170 },
+ { 0x0172, 0x0172 },
+ { 0x0174, 0x0174 },
+ { 0x0176, 0x0176 },
+ { 0x0178, 0x0179 },
+ { 0x017B, 0x017B },
+ { 0x017D, 0x017D },
+ { 0x0181, 0x0182 },
+ { 0x0184, 0x0184 },
+ { 0x0186, 0x0187 },
+ { 0x0189, 0x018B },
+ { 0x018E, 0x0191 },
+ { 0x0193, 0x0194 },
+ { 0x0196, 0x0198 },
+ { 0x019C, 0x019D },
+ { 0x019F, 0x01A0 },
+ { 0x01A2, 0x01A2 },
+ { 0x01A4, 0x01A4 },
+ { 0x01A6, 0x01A7 },
+ { 0x01A9, 0x01A9 },
+ { 0x01AC, 0x01AC },
+ { 0x01AE, 0x01AF },
+ { 0x01B1, 0x01B3 },
+ { 0x01B5, 0x01B5 },
+ { 0x01B7, 0x01B8 },
+ { 0x01BC, 0x01BC },
+ { 0x01C4, 0x01C4 },
+ { 0x01C7, 0x01C7 },
+ { 0x01CA, 0x01CA },
+ { 0x01CD, 0x01CD },
+ { 0x01CF, 0x01CF },
+ { 0x01D1, 0x01D1 },
+ { 0x01D3, 0x01D3 },
+ { 0x01D5, 0x01D5 },
+ { 0x01D7, 0x01D7 },
+ { 0x01D9, 0x01D9 },
+ { 0x01DB, 0x01DB },
+ { 0x01DE, 0x01DE },
+ { 0x01E0, 0x01E0 },
+ { 0x01E2, 0x01E2 },
+ { 0x01E4, 0x01E4 },
+ { 0x01E6, 0x01E6 },
+ { 0x01E8, 0x01E8 },
+ { 0x01EA, 0x01EA },
+ { 0x01EC, 0x01EC },
+ { 0x01EE, 0x01EE },
+ { 0x01F1, 0x01F1 },
+ { 0x01F4, 0x01F4 },
+ { 0x01F6, 0x01F8 },
+ { 0x01FA, 0x01FA },
+ { 0x01FC, 0x01FC },
+ { 0x01FE, 0x01FE },
+ { 0x0200, 0x0200 },
+ { 0x0202, 0x0202 },
+ { 0x0204, 0x0204 },
+ { 0x0206, 0x0206 },
+ { 0x0208, 0x0208 },
+ { 0x020A, 0x020A },
+ { 0x020C, 0x020C },
+ { 0x020E, 0x020E },
+ { 0x0210, 0x0210 },
+ { 0x0212, 0x0212 },
+ { 0x0214, 0x0214 },
+ { 0x0216, 0x0216 },
+ { 0x0218, 0x0218 },
+ { 0x021A, 0x021A },
+ { 0x021C, 0x021C },
+ { 0x021E, 0x021E },
+ { 0x0220, 0x0220 },
+ { 0x0222, 0x0222 },
+ { 0x0224, 0x0224 },
+ { 0x0226, 0x0226 },
+ { 0x0228, 0x0228 },
+ { 0x022A, 0x022A },
+ { 0x022C, 0x022C },
+ { 0x022E, 0x022E },
+ { 0x0230, 0x0230 },
+ { 0x0232, 0x0232 },
+ { 0x023A, 0x023B },
+ { 0x023D, 0x023E },
+ { 0x0241, 0x0241 },
+ { 0x0243, 0x0246 },
+ { 0x0248, 0x0248 },
+ { 0x024A, 0x024A },
+ { 0x024C, 0x024C },
+ { 0x024E, 0x024E },
+ { 0x0370, 0x0370 },
+ { 0x0372, 0x0372 },
+ { 0x0376, 0x0376 },
+ { 0x0386, 0x0386 },
+ { 0x0388, 0x038A },
+ { 0x038C, 0x038C },
+ { 0x038E, 0x038F },
+ { 0x0391, 0x03A1 },
+ { 0x03A3, 0x03AB },
+ { 0x03CF, 0x03CF },
+ { 0x03D2, 0x03D4 },
+ { 0x03D8, 0x03D8 },
+ { 0x03DA, 0x03DA },
+ { 0x03DC, 0x03DC },
+ { 0x03DE, 0x03DE },
+ { 0x03E0, 0x03E0 },
+ { 0x03E2, 0x03E2 },
+ { 0x03E4, 0x03E4 },
+ { 0x03E6, 0x03E6 },
+ { 0x03E8, 0x03E8 },
+ { 0x03EA, 0x03EA },
+ { 0x03EC, 0x03EC },
+ { 0x03EE, 0x03EE },
+ { 0x03F4, 0x03F4 },
+ { 0x03F7, 0x03F7 },
+ { 0x03F9, 0x03FA },
+ { 0x03FD, 0x042F },
+ { 0x0460, 0x0460 },
+ { 0x0462, 0x0462 },
+ { 0x0464, 0x0464 },
+ { 0x0466, 0x0466 },
+ { 0x0468, 0x0468 },
+ { 0x046A, 0x046A },
+ { 0x046C, 0x046C },
+ { 0x046E, 0x046E },
+ { 0x0470, 0x0470 },
+ { 0x0472, 0x0472 },
+ { 0x0474, 0x0474 },
+ { 0x0476, 0x0476 },
+ { 0x0478, 0x0478 },
+ { 0x047A, 0x047A },
+ { 0x047C, 0x047C },
+ { 0x047E, 0x047E },
+ { 0x0480, 0x0480 },
+ { 0x048A, 0x048A },
+ { 0x048C, 0x048C },
+ { 0x048E, 0x048E },
+ { 0x0490, 0x0490 },
+ { 0x0492, 0x0492 },
+ { 0x0494, 0x0494 },
+ { 0x0496, 0x0496 },
+ { 0x0498, 0x0498 },
+ { 0x049A, 0x049A },
+ { 0x049C, 0x049C },
+ { 0x049E, 0x049E },
+ { 0x04A0, 0x04A0 },
+ { 0x04A2, 0x04A2 },
+ { 0x04A4, 0x04A4 },
+ { 0x04A6, 0x04A6 },
+ { 0x04A8, 0x04A8 },
+ { 0x04AA, 0x04AA },
+ { 0x04AC, 0x04AC },
+ { 0x04AE, 0x04AE },
+ { 0x04B0, 0x04B0 },
+ { 0x04B2, 0x04B2 },
+ { 0x04B4, 0x04B4 },
+ { 0x04B6, 0x04B6 },
+ { 0x04B8, 0x04B8 },
+ { 0x04BA, 0x04BA },
+ { 0x04BC, 0x04BC },
+ { 0x04BE, 0x04BE },
+ { 0x04C0, 0x04C1 },
+ { 0x04C3, 0x04C3 },
+ { 0x04C5, 0x04C5 },
+ { 0x04C7, 0x04C7 },
+ { 0x04C9, 0x04C9 },
+ { 0x04CB, 0x04CB },
+ { 0x04CD, 0x04CD },
+ { 0x04D0, 0x04D0 },
+ { 0x04D2, 0x04D2 },
+ { 0x04D4, 0x04D4 },
+ { 0x04D6, 0x04D6 },
+ { 0x04D8, 0x04D8 },
+ { 0x04DA, 0x04DA },
+ { 0x04DC, 0x04DC },
+ { 0x04DE, 0x04DE },
+ { 0x04E0, 0x04E0 },
+ { 0x04E2, 0x04E2 },
+ { 0x04E4, 0x04E4 },
+ { 0x04E6, 0x04E6 },
+ { 0x04E8, 0x04E8 },
+ { 0x04EA, 0x04EA },
+ { 0x04EC, 0x04EC },
+ { 0x04EE, 0x04EE },
+ { 0x04F0, 0x04F0 },
+ { 0x04F2, 0x04F2 },
+ { 0x04F4, 0x04F4 },
+ { 0x04F6, 0x04F6 },
+ { 0x04F8, 0x04F8 },
+ { 0x04FA, 0x04FA },
+ { 0x04FC, 0x04FC },
+ { 0x04FE, 0x04FE },
+ { 0x0500, 0x0500 },
+ { 0x0502, 0x0502 },
+ { 0x0504, 0x0504 },
+ { 0x0506, 0x0506 },
+ { 0x0508, 0x0508 },
+ { 0x050A, 0x050A },
+ { 0x050C, 0x050C },
+ { 0x050E, 0x050E },
+ { 0x0510, 0x0510 },
+ { 0x0512, 0x0512 },
+ { 0x0514, 0x0514 },
+ { 0x0516, 0x0516 },
+ { 0x0518, 0x0518 },
+ { 0x051A, 0x051A },
+ { 0x051C, 0x051C },
+ { 0x051E, 0x051E },
+ { 0x0520, 0x0520 },
+ { 0x0522, 0x0522 },
+ { 0x0531, 0x0556 },
+ { 0x10A0, 0x10C5 },
+ { 0x1E00, 0x1E00 },
+ { 0x1E02, 0x1E02 },
+ { 0x1E04, 0x1E04 },
+ { 0x1E06, 0x1E06 },
+ { 0x1E08, 0x1E08 },
+ { 0x1E0A, 0x1E0A },
+ { 0x1E0C, 0x1E0C },
+ { 0x1E0E, 0x1E0E },
+ { 0x1E10, 0x1E10 },
+ { 0x1E12, 0x1E12 },
+ { 0x1E14, 0x1E14 },
+ { 0x1E16, 0x1E16 },
+ { 0x1E18, 0x1E18 },
+ { 0x1E1A, 0x1E1A },
+ { 0x1E1C, 0x1E1C },
+ { 0x1E1E, 0x1E1E },
+ { 0x1E20, 0x1E20 },
+ { 0x1E22, 0x1E22 },
+ { 0x1E24, 0x1E24 },
+ { 0x1E26, 0x1E26 },
+ { 0x1E28, 0x1E28 },
+ { 0x1E2A, 0x1E2A },
+ { 0x1E2C, 0x1E2C },
+ { 0x1E2E, 0x1E2E },
+ { 0x1E30, 0x1E30 },
+ { 0x1E32, 0x1E32 },
+ { 0x1E34, 0x1E34 },
+ { 0x1E36, 0x1E36 },
+ { 0x1E38, 0x1E38 },
+ { 0x1E3A, 0x1E3A },
+ { 0x1E3C, 0x1E3C },
+ { 0x1E3E, 0x1E3E },
+ { 0x1E40, 0x1E40 },
+ { 0x1E42, 0x1E42 },
+ { 0x1E44, 0x1E44 },
+ { 0x1E46, 0x1E46 },
+ { 0x1E48, 0x1E48 },
+ { 0x1E4A, 0x1E4A },
+ { 0x1E4C, 0x1E4C },
+ { 0x1E4E, 0x1E4E },
+ { 0x1E50, 0x1E50 },
+ { 0x1E52, 0x1E52 },
+ { 0x1E54, 0x1E54 },
+ { 0x1E56, 0x1E56 },
+ { 0x1E58, 0x1E58 },
+ { 0x1E5A, 0x1E5A },
+ { 0x1E5C, 0x1E5C },
+ { 0x1E5E, 0x1E5E },
+ { 0x1E60, 0x1E60 },
+ { 0x1E62, 0x1E62 },
+ { 0x1E64, 0x1E64 },
+ { 0x1E66, 0x1E66 },
+ { 0x1E68, 0x1E68 },
+ { 0x1E6A, 0x1E6A },
+ { 0x1E6C, 0x1E6C },
+ { 0x1E6E, 0x1E6E },
+ { 0x1E70, 0x1E70 },
+ { 0x1E72, 0x1E72 },
+ { 0x1E74, 0x1E74 },
+ { 0x1E76, 0x1E76 },
+ { 0x1E78, 0x1E78 },
+ { 0x1E7A, 0x1E7A },
+ { 0x1E7C, 0x1E7C },
+ { 0x1E7E, 0x1E7E },
+ { 0x1E80, 0x1E80 },
+ { 0x1E82, 0x1E82 },
+ { 0x1E84, 0x1E84 },
+ { 0x1E86, 0x1E86 },
+ { 0x1E88, 0x1E88 },
+ { 0x1E8A, 0x1E8A },
+ { 0x1E8C, 0x1E8C },
+ { 0x1E8E, 0x1E8E },
+ { 0x1E90, 0x1E90 },
+ { 0x1E92, 0x1E92 },
+ { 0x1E94, 0x1E94 },
+ { 0x1E9E, 0x1E9E },
+ { 0x1EA0, 0x1EA0 },
+ { 0x1EA2, 0x1EA2 },
+ { 0x1EA4, 0x1EA4 },
+ { 0x1EA6, 0x1EA6 },
+ { 0x1EA8, 0x1EA8 },
+ { 0x1EAA, 0x1EAA },
+ { 0x1EAC, 0x1EAC },
+ { 0x1EAE, 0x1EAE },
+ { 0x1EB0, 0x1EB0 },
+ { 0x1EB2, 0x1EB2 },
+ { 0x1EB4, 0x1EB4 },
+ { 0x1EB6, 0x1EB6 },
+ { 0x1EB8, 0x1EB8 },
+ { 0x1EBA, 0x1EBA },
+ { 0x1EBC, 0x1EBC },
+ { 0x1EBE, 0x1EBE },
+ { 0x1EC0, 0x1EC0 },
+ { 0x1EC2, 0x1EC2 },
+ { 0x1EC4, 0x1EC4 },
+ { 0x1EC6, 0x1EC6 },
+ { 0x1EC8, 0x1EC8 },
+ { 0x1ECA, 0x1ECA },
+ { 0x1ECC, 0x1ECC },
+ { 0x1ECE, 0x1ECE },
+ { 0x1ED0, 0x1ED0 },
+ { 0x1ED2, 0x1ED2 },
+ { 0x1ED4, 0x1ED4 },
+ { 0x1ED6, 0x1ED6 },
+ { 0x1ED8, 0x1ED8 },
+ { 0x1EDA, 0x1EDA },
+ { 0x1EDC, 0x1EDC },
+ { 0x1EDE, 0x1EDE },
+ { 0x1EE0, 0x1EE0 },
+ { 0x1EE2, 0x1EE2 },
+ { 0x1EE4, 0x1EE4 },
+ { 0x1EE6, 0x1EE6 },
+ { 0x1EE8, 0x1EE8 },
+ { 0x1EEA, 0x1EEA },
+ { 0x1EEC, 0x1EEC },
+ { 0x1EEE, 0x1EEE },
+ { 0x1EF0, 0x1EF0 },
+ { 0x1EF2, 0x1EF2 },
+ { 0x1EF4, 0x1EF4 },
+ { 0x1EF6, 0x1EF6 },
+ { 0x1EF8, 0x1EF8 },
+ { 0x1EFA, 0x1EFA },
+ { 0x1EFC, 0x1EFC },
+ { 0x1EFE, 0x1EFE },
+ { 0x1F08, 0x1F0F },
+ { 0x1F18, 0x1F1D },
+ { 0x1F28, 0x1F2F },
+ { 0x1F38, 0x1F3F },
+ { 0x1F48, 0x1F4D },
+ { 0x1F59, 0x1F59 },
+ { 0x1F5B, 0x1F5B },
+ { 0x1F5D, 0x1F5D },
+ { 0x1F5F, 0x1F5F },
+ { 0x1F68, 0x1F6F },
+ { 0x1FB8, 0x1FBB },
+ { 0x1FC8, 0x1FCB },
+ { 0x1FD8, 0x1FDB },
+ { 0x1FE8, 0x1FEC },
+ { 0x1FF8, 0x1FFB },
+ { 0x2102, 0x2102 },
+ { 0x2107, 0x2107 },
+ { 0x210B, 0x210D },
+ { 0x2110, 0x2112 },
+ { 0x2115, 0x2115 },
+ { 0x2119, 0x211D },
+ { 0x2124, 0x2124 },
+ { 0x2126, 0x2126 },
+ { 0x2128, 0x2128 },
+ { 0x212A, 0x212D },
+ { 0x2130, 0x2133 },
+ { 0x213E, 0x213F },
+ { 0x2145, 0x2145 },
+ { 0x2160, 0x216F },
+ { 0x2183, 0x2183 },
+ { 0x24B6, 0x24CF },
+ { 0x2C00, 0x2C2E },
+ { 0x2C60, 0x2C60 },
+ { 0x2C62, 0x2C64 },
+ { 0x2C67, 0x2C67 },
+ { 0x2C69, 0x2C69 },
+ { 0x2C6B, 0x2C6B },
+ { 0x2C6D, 0x2C6F },
+ { 0x2C72, 0x2C72 },
+ { 0x2C75, 0x2C75 },
+ { 0x2C80, 0x2C80 },
+ { 0x2C82, 0x2C82 },
+ { 0x2C84, 0x2C84 },
+ { 0x2C86, 0x2C86 },
+ { 0x2C88, 0x2C88 },
+ { 0x2C8A, 0x2C8A },
+ { 0x2C8C, 0x2C8C },
+ { 0x2C8E, 0x2C8E },
+ { 0x2C90, 0x2C90 },
+ { 0x2C92, 0x2C92 },
+ { 0x2C94, 0x2C94 },
+ { 0x2C96, 0x2C96 },
+ { 0x2C98, 0x2C98 },
+ { 0x2C9A, 0x2C9A },
+ { 0x2C9C, 0x2C9C },
+ { 0x2C9E, 0x2C9E },
+ { 0x2CA0, 0x2CA0 },
+ { 0x2CA2, 0x2CA2 },
+ { 0x2CA4, 0x2CA4 },
+ { 0x2CA6, 0x2CA6 },
+ { 0x2CA8, 0x2CA8 },
+ { 0x2CAA, 0x2CAA },
+ { 0x2CAC, 0x2CAC },
+ { 0x2CAE, 0x2CAE },
+ { 0x2CB0, 0x2CB0 },
+ { 0x2CB2, 0x2CB2 },
+ { 0x2CB4, 0x2CB4 },
+ { 0x2CB6, 0x2CB6 },
+ { 0x2CB8, 0x2CB8 },
+ { 0x2CBA, 0x2CBA },
+ { 0x2CBC, 0x2CBC },
+ { 0x2CBE, 0x2CBE },
+ { 0x2CC0, 0x2CC0 },
+ { 0x2CC2, 0x2CC2 },
+ { 0x2CC4, 0x2CC4 },
+ { 0x2CC6, 0x2CC6 },
+ { 0x2CC8, 0x2CC8 },
+ { 0x2CCA, 0x2CCA },
+ { 0x2CCC, 0x2CCC },
+ { 0x2CCE, 0x2CCE },
+ { 0x2CD0, 0x2CD0 },
+ { 0x2CD2, 0x2CD2 },
+ { 0x2CD4, 0x2CD4 },
+ { 0x2CD6, 0x2CD6 },
+ { 0x2CD8, 0x2CD8 },
+ { 0x2CDA, 0x2CDA },
+ { 0x2CDC, 0x2CDC },
+ { 0x2CDE, 0x2CDE },
+ { 0x2CE0, 0x2CE0 },
+ { 0x2CE2, 0x2CE2 },
+ { 0xA640, 0xA640 },
+ { 0xA642, 0xA642 },
+ { 0xA644, 0xA644 },
+ { 0xA646, 0xA646 },
+ { 0xA648, 0xA648 },
+ { 0xA64A, 0xA64A },
+ { 0xA64C, 0xA64C },
+ { 0xA64E, 0xA64E },
+ { 0xA650, 0xA650 },
+ { 0xA652, 0xA652 },
+ { 0xA654, 0xA654 },
+ { 0xA656, 0xA656 },
+ { 0xA658, 0xA658 },
+ { 0xA65A, 0xA65A },
+ { 0xA65C, 0xA65C },
+ { 0xA65E, 0xA65E },
+ { 0xA662, 0xA662 },
+ { 0xA664, 0xA664 },
+ { 0xA666, 0xA666 },
+ { 0xA668, 0xA668 },
+ { 0xA66A, 0xA66A },
+ { 0xA66C, 0xA66C },
+ { 0xA680, 0xA680 },
+ { 0xA682, 0xA682 },
+ { 0xA684, 0xA684 },
+ { 0xA686, 0xA686 },
+ { 0xA688, 0xA688 },
+ { 0xA68A, 0xA68A },
+ { 0xA68C, 0xA68C },
+ { 0xA68E, 0xA68E },
+ { 0xA690, 0xA690 },
+ { 0xA692, 0xA692 },
+ { 0xA694, 0xA694 },
+ { 0xA696, 0xA696 },
+ { 0xA722, 0xA722 },
+ { 0xA724, 0xA724 },
+ { 0xA726, 0xA726 },
+ { 0xA728, 0xA728 },
+ { 0xA72A, 0xA72A },
+ { 0xA72C, 0xA72C },
+ { 0xA72E, 0xA72E },
+ { 0xA732, 0xA732 },
+ { 0xA734, 0xA734 },
+ { 0xA736, 0xA736 },
+ { 0xA738, 0xA738 },
+ { 0xA73A, 0xA73A },
+ { 0xA73C, 0xA73C },
+ { 0xA73E, 0xA73E },
+ { 0xA740, 0xA740 },
+ { 0xA742, 0xA742 },
+ { 0xA744, 0xA744 },
+ { 0xA746, 0xA746 },
+ { 0xA748, 0xA748 },
+ { 0xA74A, 0xA74A },
+ { 0xA74C, 0xA74C },
+ { 0xA74E, 0xA74E },
+ { 0xA750, 0xA750 },
+ { 0xA752, 0xA752 },
+ { 0xA754, 0xA754 },
+ { 0xA756, 0xA756 },
+ { 0xA758, 0xA758 },
+ { 0xA75A, 0xA75A },
+ { 0xA75C, 0xA75C },
+ { 0xA75E, 0xA75E },
+ { 0xA760, 0xA760 },
+ { 0xA762, 0xA762 },
+ { 0xA764, 0xA764 },
+ { 0xA766, 0xA766 },
+ { 0xA768, 0xA768 },
+ { 0xA76A, 0xA76A },
+ { 0xA76C, 0xA76C },
+ { 0xA76E, 0xA76E },
+ { 0xA779, 0xA779 },
+ { 0xA77B, 0xA77B },
+ { 0xA77D, 0xA77E },
+ { 0xA780, 0xA780 },
+ { 0xA782, 0xA782 },
+ { 0xA784, 0xA784 },
+ { 0xA786, 0xA786 },
+ { 0xA78B, 0xA78B },
+ { 0xFF21, 0xFF3A },
+ { 0x10400, 0x10427 },
+ { 0x1D400, 0x1D419 },
+ { 0x1D434, 0x1D44D },
+ { 0x1D468, 0x1D481 },
+ { 0x1D49C, 0x1D49C },
+ { 0x1D49E, 0x1D49F },
+ { 0x1D4A2, 0x1D4A2 },
+ { 0x1D4A5, 0x1D4A6 },
+ { 0x1D4A9, 0x1D4AC },
+ { 0x1D4AE, 0x1D4B5 },
+ { 0x1D4D0, 0x1D4E9 },
+ { 0x1D504, 0x1D505 },
+ { 0x1D507, 0x1D50A },
+ { 0x1D50D, 0x1D514 },
+ { 0x1D516, 0x1D51C },
+ { 0x1D538, 0x1D539 },
+ { 0x1D53B, 0x1D53E },
+ { 0x1D540, 0x1D544 },
+ { 0x1D546, 0x1D546 },
+ { 0x1D54A, 0x1D550 },
+ { 0x1D56C, 0x1D585 },
+ { 0x1D5A0, 0x1D5B9 },
+ { 0x1D5D4, 0x1D5ED },
+ { 0x1D608, 0x1D621 },
+ { 0x1D63C, 0x1D655 },
+ { 0x1D670, 0x1D689 },
+ { 0x1D6A8, 0x1D6C0 },
+ { 0x1D6E2, 0x1D6FA },
+ { 0x1D71C, 0x1D734 },
+ { 0x1D756, 0x1D76E },
+ { 0x1D790, 0x1D7A8 },
+ { 0x1D7CA, 0x1D7CA }
+
+#define PREDICATE(c) uc_is_property_uppercase (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_variation_selector.c b/tests/unictype/test-pr_variation_selector.c
new file mode 100644
index 00000000..50aaa434
--- /dev/null
+++ b/tests/unictype/test-pr_variation_selector.c
@@ -0,0 +1,25 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x180B, 0x180D },
+ { 0xFE00, 0xFE0F },
+ { 0xE0100, 0xE01EF }
+
+#define PREDICATE(c) uc_is_property_variation_selector (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_white_space.c b/tests/unictype/test-pr_white_space.c
new file mode 100644
index 00000000..a7d82173
--- /dev/null
+++ b/tests/unictype/test-pr_white_space.c
@@ -0,0 +1,33 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0009, 0x000D },
+ { 0x0020, 0x0020 },
+ { 0x0085, 0x0085 },
+ { 0x00A0, 0x00A0 },
+ { 0x1680, 0x1680 },
+ { 0x180E, 0x180E },
+ { 0x2000, 0x200A },
+ { 0x2028, 0x2029 },
+ { 0x202F, 0x202F },
+ { 0x205F, 0x205F },
+ { 0x3000, 0x3000 }
+
+#define PREDICATE(c) uc_is_property_white_space (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_xid_continue.c b/tests/unictype/test-pr_xid_continue.c
new file mode 100644
index 00000000..14148c52
--- /dev/null
+++ b/tests/unictype/test-pr_xid_continue.c
@@ -0,0 +1,506 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0030, 0x0039 },
+ { 0x0041, 0x005A },
+ { 0x005F, 0x005F },
+ { 0x0061, 0x007A },
+ { 0x00AA, 0x00AA },
+ { 0x00B5, 0x00B5 },
+ { 0x00B7, 0x00B7 },
+ { 0x00BA, 0x00BA },
+ { 0x00C0, 0x00D6 },
+ { 0x00D8, 0x00F6 },
+ { 0x00F8, 0x02C1 },
+ { 0x02C6, 0x02D1 },
+ { 0x02E0, 0x02E4 },
+ { 0x02EC, 0x02EC },
+ { 0x02EE, 0x02EE },
+ { 0x0300, 0x0374 },
+ { 0x0376, 0x0377 },
+ { 0x037B, 0x037D },
+ { 0x0386, 0x038A },
+ { 0x038C, 0x038C },
+ { 0x038E, 0x03A1 },
+ { 0x03A3, 0x03F5 },
+ { 0x03F7, 0x0481 },
+ { 0x0483, 0x0487 },
+ { 0x048A, 0x0523 },
+ { 0x0531, 0x0556 },
+ { 0x0559, 0x0559 },
+ { 0x0561, 0x0587 },
+ { 0x0591, 0x05BD },
+ { 0x05BF, 0x05BF },
+ { 0x05C1, 0x05C2 },
+ { 0x05C4, 0x05C5 },
+ { 0x05C7, 0x05C7 },
+ { 0x05D0, 0x05EA },
+ { 0x05F0, 0x05F2 },
+ { 0x0610, 0x061A },
+ { 0x0621, 0x065E },
+ { 0x0660, 0x0669 },
+ { 0x066E, 0x06D3 },
+ { 0x06D5, 0x06DC },
+ { 0x06DF, 0x06E8 },
+ { 0x06EA, 0x06FC },
+ { 0x06FF, 0x06FF },
+ { 0x0710, 0x074A },
+ { 0x074D, 0x07B1 },
+ { 0x07C0, 0x07F5 },
+ { 0x07FA, 0x07FA },
+ { 0x0901, 0x0939 },
+ { 0x093C, 0x094D },
+ { 0x0950, 0x0954 },
+ { 0x0958, 0x0963 },
+ { 0x0966, 0x096F },
+ { 0x0971, 0x0972 },
+ { 0x097B, 0x097F },
+ { 0x0981, 0x0983 },
+ { 0x0985, 0x098C },
+ { 0x098F, 0x0990 },
+ { 0x0993, 0x09A8 },
+ { 0x09AA, 0x09B0 },
+ { 0x09B2, 0x09B2 },
+ { 0x09B6, 0x09B9 },
+ { 0x09BC, 0x09C4 },
+ { 0x09C7, 0x09C8 },
+ { 0x09CB, 0x09CE },
+ { 0x09D7, 0x09D7 },
+ { 0x09DC, 0x09DD },
+ { 0x09DF, 0x09E3 },
+ { 0x09E6, 0x09F1 },
+ { 0x0A01, 0x0A03 },
+ { 0x0A05, 0x0A0A },
+ { 0x0A0F, 0x0A10 },
+ { 0x0A13, 0x0A28 },
+ { 0x0A2A, 0x0A30 },
+ { 0x0A32, 0x0A33 },
+ { 0x0A35, 0x0A36 },
+ { 0x0A38, 0x0A39 },
+ { 0x0A3C, 0x0A3C },
+ { 0x0A3E, 0x0A42 },
+ { 0x0A47, 0x0A48 },
+ { 0x0A4B, 0x0A4D },
+ { 0x0A51, 0x0A51 },
+ { 0x0A59, 0x0A5C },
+ { 0x0A5E, 0x0A5E },
+ { 0x0A66, 0x0A75 },
+ { 0x0A81, 0x0A83 },
+ { 0x0A85, 0x0A8D },
+ { 0x0A8F, 0x0A91 },
+ { 0x0A93, 0x0AA8 },
+ { 0x0AAA, 0x0AB0 },
+ { 0x0AB2, 0x0AB3 },
+ { 0x0AB5, 0x0AB9 },
+ { 0x0ABC, 0x0AC5 },
+ { 0x0AC7, 0x0AC9 },
+ { 0x0ACB, 0x0ACD },
+ { 0x0AD0, 0x0AD0 },
+ { 0x0AE0, 0x0AE3 },
+ { 0x0AE6, 0x0AEF },
+ { 0x0B01, 0x0B03 },
+ { 0x0B05, 0x0B0C },
+ { 0x0B0F, 0x0B10 },
+ { 0x0B13, 0x0B28 },
+ { 0x0B2A, 0x0B30 },
+ { 0x0B32, 0x0B33 },
+ { 0x0B35, 0x0B39 },
+ { 0x0B3C, 0x0B44 },
+ { 0x0B47, 0x0B48 },
+ { 0x0B4B, 0x0B4D },
+ { 0x0B56, 0x0B57 },
+ { 0x0B5C, 0x0B5D },
+ { 0x0B5F, 0x0B63 },
+ { 0x0B66, 0x0B6F },
+ { 0x0B71, 0x0B71 },
+ { 0x0B82, 0x0B83 },
+ { 0x0B85, 0x0B8A },
+ { 0x0B8E, 0x0B90 },
+ { 0x0B92, 0x0B95 },
+ { 0x0B99, 0x0B9A },
+ { 0x0B9C, 0x0B9C },
+ { 0x0B9E, 0x0B9F },
+ { 0x0BA3, 0x0BA4 },
+ { 0x0BA8, 0x0BAA },
+ { 0x0BAE, 0x0BB9 },
+ { 0x0BBE, 0x0BC2 },
+ { 0x0BC6, 0x0BC8 },
+ { 0x0BCA, 0x0BCD },
+ { 0x0BD0, 0x0BD0 },
+ { 0x0BD7, 0x0BD7 },
+ { 0x0BE6, 0x0BEF },
+ { 0x0C01, 0x0C03 },
+ { 0x0C05, 0x0C0C },
+ { 0x0C0E, 0x0C10 },
+ { 0x0C12, 0x0C28 },
+ { 0x0C2A, 0x0C33 },
+ { 0x0C35, 0x0C39 },
+ { 0x0C3D, 0x0C44 },
+ { 0x0C46, 0x0C48 },
+ { 0x0C4A, 0x0C4D },
+ { 0x0C55, 0x0C56 },
+ { 0x0C58, 0x0C59 },
+ { 0x0C60, 0x0C63 },
+ { 0x0C66, 0x0C6F },
+ { 0x0C82, 0x0C83 },
+ { 0x0C85, 0x0C8C },
+ { 0x0C8E, 0x0C90 },
+ { 0x0C92, 0x0CA8 },
+ { 0x0CAA, 0x0CB3 },
+ { 0x0CB5, 0x0CB9 },
+ { 0x0CBC, 0x0CC4 },
+ { 0x0CC6, 0x0CC8 },
+ { 0x0CCA, 0x0CCD },
+ { 0x0CD5, 0x0CD6 },
+ { 0x0CDE, 0x0CDE },
+ { 0x0CE0, 0x0CE3 },
+ { 0x0CE6, 0x0CEF },
+ { 0x0D02, 0x0D03 },
+ { 0x0D05, 0x0D0C },
+ { 0x0D0E, 0x0D10 },
+ { 0x0D12, 0x0D28 },
+ { 0x0D2A, 0x0D39 },
+ { 0x0D3D, 0x0D44 },
+ { 0x0D46, 0x0D48 },
+ { 0x0D4A, 0x0D4D },
+ { 0x0D57, 0x0D57 },
+ { 0x0D60, 0x0D63 },
+ { 0x0D66, 0x0D6F },
+ { 0x0D7A, 0x0D7F },
+ { 0x0D82, 0x0D83 },
+ { 0x0D85, 0x0D96 },
+ { 0x0D9A, 0x0DB1 },
+ { 0x0DB3, 0x0DBB },
+ { 0x0DBD, 0x0DBD },
+ { 0x0DC0, 0x0DC6 },
+ { 0x0DCA, 0x0DCA },
+ { 0x0DCF, 0x0DD4 },
+ { 0x0DD6, 0x0DD6 },
+ { 0x0DD8, 0x0DDF },
+ { 0x0DF2, 0x0DF3 },
+ { 0x0E01, 0x0E3A },
+ { 0x0E40, 0x0E4E },
+ { 0x0E50, 0x0E59 },
+ { 0x0E81, 0x0E82 },
+ { 0x0E84, 0x0E84 },
+ { 0x0E87, 0x0E88 },
+ { 0x0E8A, 0x0E8A },
+ { 0x0E8D, 0x0E8D },
+ { 0x0E94, 0x0E97 },
+ { 0x0E99, 0x0E9F },
+ { 0x0EA1, 0x0EA3 },
+ { 0x0EA5, 0x0EA5 },
+ { 0x0EA7, 0x0EA7 },
+ { 0x0EAA, 0x0EAB },
+ { 0x0EAD, 0x0EB9 },
+ { 0x0EBB, 0x0EBD },
+ { 0x0EC0, 0x0EC4 },
+ { 0x0EC6, 0x0EC6 },
+ { 0x0EC8, 0x0ECD },
+ { 0x0ED0, 0x0ED9 },
+ { 0x0EDC, 0x0EDD },
+ { 0x0F00, 0x0F00 },
+ { 0x0F18, 0x0F19 },
+ { 0x0F20, 0x0F29 },
+ { 0x0F35, 0x0F35 },
+ { 0x0F37, 0x0F37 },
+ { 0x0F39, 0x0F39 },
+ { 0x0F3E, 0x0F47 },
+ { 0x0F49, 0x0F6C },
+ { 0x0F71, 0x0F84 },
+ { 0x0F86, 0x0F8B },
+ { 0x0F90, 0x0F97 },
+ { 0x0F99, 0x0FBC },
+ { 0x0FC6, 0x0FC6 },
+ { 0x1000, 0x1049 },
+ { 0x1050, 0x1099 },
+ { 0x10A0, 0x10C5 },
+ { 0x10D0, 0x10FA },
+ { 0x10FC, 0x10FC },
+ { 0x1100, 0x1159 },
+ { 0x115F, 0x11A2 },
+ { 0x11A8, 0x11F9 },
+ { 0x1200, 0x1248 },
+ { 0x124A, 0x124D },
+ { 0x1250, 0x1256 },
+ { 0x1258, 0x1258 },
+ { 0x125A, 0x125D },
+ { 0x1260, 0x1288 },
+ { 0x128A, 0x128D },
+ { 0x1290, 0x12B0 },
+ { 0x12B2, 0x12B5 },
+ { 0x12B8, 0x12BE },
+ { 0x12C0, 0x12C0 },
+ { 0x12C2, 0x12C5 },
+ { 0x12C8, 0x12D6 },
+ { 0x12D8, 0x1310 },
+ { 0x1312, 0x1315 },
+ { 0x1318, 0x135A },
+ { 0x135F, 0x135F },
+ { 0x1369, 0x1371 },
+ { 0x1380, 0x138F },
+ { 0x13A0, 0x13F4 },
+ { 0x1401, 0x166C },
+ { 0x166F, 0x1676 },
+ { 0x1681, 0x169A },
+ { 0x16A0, 0x16EA },
+ { 0x16EE, 0x16F0 },
+ { 0x1700, 0x170C },
+ { 0x170E, 0x1714 },
+ { 0x1720, 0x1734 },
+ { 0x1740, 0x1753 },
+ { 0x1760, 0x176C },
+ { 0x176E, 0x1770 },
+ { 0x1772, 0x1773 },
+ { 0x1780, 0x17B3 },
+ { 0x17B6, 0x17D3 },
+ { 0x17D7, 0x17D7 },
+ { 0x17DC, 0x17DD },
+ { 0x17E0, 0x17E9 },
+ { 0x180B, 0x180D },
+ { 0x1810, 0x1819 },
+ { 0x1820, 0x1877 },
+ { 0x1880, 0x18AA },
+ { 0x1900, 0x191C },
+ { 0x1920, 0x192B },
+ { 0x1930, 0x193B },
+ { 0x1946, 0x196D },
+ { 0x1970, 0x1974 },
+ { 0x1980, 0x19A9 },
+ { 0x19B0, 0x19C9 },
+ { 0x19D0, 0x19D9 },
+ { 0x1A00, 0x1A1B },
+ { 0x1B00, 0x1B4B },
+ { 0x1B50, 0x1B59 },
+ { 0x1B6B, 0x1B73 },
+ { 0x1B80, 0x1BAA },
+ { 0x1BAE, 0x1BB9 },
+ { 0x1C00, 0x1C37 },
+ { 0x1C40, 0x1C49 },
+ { 0x1C4D, 0x1C7D },
+ { 0x1D00, 0x1DE6 },
+ { 0x1DFE, 0x1F15 },
+ { 0x1F18, 0x1F1D },
+ { 0x1F20, 0x1F45 },
+ { 0x1F48, 0x1F4D },
+ { 0x1F50, 0x1F57 },
+ { 0x1F59, 0x1F59 },
+ { 0x1F5B, 0x1F5B },
+ { 0x1F5D, 0x1F5D },
+ { 0x1F5F, 0x1F7D },
+ { 0x1F80, 0x1FB4 },
+ { 0x1FB6, 0x1FBC },
+ { 0x1FBE, 0x1FBE },
+ { 0x1FC2, 0x1FC4 },
+ { 0x1FC6, 0x1FCC },
+ { 0x1FD0, 0x1FD3 },
+ { 0x1FD6, 0x1FDB },
+ { 0x1FE0, 0x1FEC },
+ { 0x1FF2, 0x1FF4 },
+ { 0x1FF6, 0x1FFC },
+ { 0x203F, 0x2040 },
+ { 0x2054, 0x2054 },
+ { 0x2071, 0x2071 },
+ { 0x207F, 0x207F },
+ { 0x2090, 0x2094 },
+ { 0x20D0, 0x20DC },
+ { 0x20E1, 0x20E1 },
+ { 0x20E5, 0x20F0 },
+ { 0x2102, 0x2102 },
+ { 0x2107, 0x2107 },
+ { 0x210A, 0x2113 },
+ { 0x2115, 0x2115 },
+ { 0x2118, 0x211D },
+ { 0x2124, 0x2124 },
+ { 0x2126, 0x2126 },
+ { 0x2128, 0x2128 },
+ { 0x212A, 0x2139 },
+ { 0x213C, 0x213F },
+ { 0x2145, 0x2149 },
+ { 0x214E, 0x214E },
+ { 0x2160, 0x2188 },
+ { 0x2C00, 0x2C2E },
+ { 0x2C30, 0x2C5E },
+ { 0x2C60, 0x2C6F },
+ { 0x2C71, 0x2C7D },
+ { 0x2C80, 0x2CE4 },
+ { 0x2D00, 0x2D25 },
+ { 0x2D30, 0x2D65 },
+ { 0x2D6F, 0x2D6F },
+ { 0x2D80, 0x2D96 },
+ { 0x2DA0, 0x2DA6 },
+ { 0x2DA8, 0x2DAE },
+ { 0x2DB0, 0x2DB6 },
+ { 0x2DB8, 0x2DBE },
+ { 0x2DC0, 0x2DC6 },
+ { 0x2DC8, 0x2DCE },
+ { 0x2DD0, 0x2DD6 },
+ { 0x2DD8, 0x2DDE },
+ { 0x2DE0, 0x2DFF },
+ { 0x3005, 0x3007 },
+ { 0x3021, 0x302F },
+ { 0x3031, 0x3035 },
+ { 0x3038, 0x303C },
+ { 0x3041, 0x3096 },
+ { 0x3099, 0x309A },
+ { 0x309D, 0x309F },
+ { 0x30A1, 0x30FA },
+ { 0x30FC, 0x30FF },
+ { 0x3105, 0x312D },
+ { 0x3131, 0x318E },
+ { 0x31A0, 0x31B7 },
+ { 0x31F0, 0x31FF },
+ { 0x3400, 0x4DB5 },
+ { 0x4E00, 0x9FC3 },
+ { 0xA000, 0xA48C },
+ { 0xA500, 0xA60C },
+ { 0xA610, 0xA62B },
+ { 0xA640, 0xA65F },
+ { 0xA662, 0xA66F },
+ { 0xA67C, 0xA67D },
+ { 0xA67F, 0xA697 },
+ { 0xA717, 0xA71F },
+ { 0xA722, 0xA788 },
+ { 0xA78B, 0xA78C },
+ { 0xA7FB, 0xA827 },
+ { 0xA840, 0xA873 },
+ { 0xA880, 0xA8C4 },
+ { 0xA8D0, 0xA8D9 },
+ { 0xA900, 0xA92D },
+ { 0xA930, 0xA953 },
+ { 0xAA00, 0xAA36 },
+ { 0xAA40, 0xAA4D },
+ { 0xAA50, 0xAA59 },
+ { 0xAC00, 0xD7A3 },
+ { 0xF900, 0xFA2D },
+ { 0xFA30, 0xFA6A },
+ { 0xFA70, 0xFAD9 },
+ { 0xFB00, 0xFB06 },
+ { 0xFB13, 0xFB17 },
+ { 0xFB1D, 0xFB28 },
+ { 0xFB2A, 0xFB36 },
+ { 0xFB38, 0xFB3C },
+ { 0xFB3E, 0xFB3E },
+ { 0xFB40, 0xFB41 },
+ { 0xFB43, 0xFB44 },
+ { 0xFB46, 0xFBB1 },
+ { 0xFBD3, 0xFC5D },
+ { 0xFC64, 0xFD3D },
+ { 0xFD50, 0xFD8F },
+ { 0xFD92, 0xFDC7 },
+ { 0xFDF0, 0xFDF9 },
+ { 0xFE00, 0xFE0F },
+ { 0xFE20, 0xFE26 },
+ { 0xFE33, 0xFE34 },
+ { 0xFE4D, 0xFE4F },
+ { 0xFE71, 0xFE71 },
+ { 0xFE73, 0xFE73 },
+ { 0xFE77, 0xFE77 },
+ { 0xFE79, 0xFE79 },
+ { 0xFE7B, 0xFE7B },
+ { 0xFE7D, 0xFE7D },
+ { 0xFE7F, 0xFEFC },
+ { 0xFF10, 0xFF19 },
+ { 0xFF21, 0xFF3A },
+ { 0xFF3F, 0xFF3F },
+ { 0xFF41, 0xFF5A },
+ { 0xFF66, 0xFFBE },
+ { 0xFFC2, 0xFFC7 },
+ { 0xFFCA, 0xFFCF },
+ { 0xFFD2, 0xFFD7 },
+ { 0xFFDA, 0xFFDC },
+ { 0x10000, 0x1000B },
+ { 0x1000D, 0x10026 },
+ { 0x10028, 0x1003A },
+ { 0x1003C, 0x1003D },
+ { 0x1003F, 0x1004D },
+ { 0x10050, 0x1005D },
+ { 0x10080, 0x100FA },
+ { 0x10140, 0x10174 },
+ { 0x101FD, 0x101FD },
+ { 0x10280, 0x1029C },
+ { 0x102A0, 0x102D0 },
+ { 0x10300, 0x1031E },
+ { 0x10330, 0x1034A },
+ { 0x10380, 0x1039D },
+ { 0x103A0, 0x103C3 },
+ { 0x103C8, 0x103CF },
+ { 0x103D1, 0x103D5 },
+ { 0x10400, 0x1049D },
+ { 0x104A0, 0x104A9 },
+ { 0x10800, 0x10805 },
+ { 0x10808, 0x10808 },
+ { 0x1080A, 0x10835 },
+ { 0x10837, 0x10838 },
+ { 0x1083C, 0x1083C },
+ { 0x1083F, 0x1083F },
+ { 0x10900, 0x10915 },
+ { 0x10920, 0x10939 },
+ { 0x10A00, 0x10A03 },
+ { 0x10A05, 0x10A06 },
+ { 0x10A0C, 0x10A13 },
+ { 0x10A15, 0x10A17 },
+ { 0x10A19, 0x10A33 },
+ { 0x10A38, 0x10A3A },
+ { 0x10A3F, 0x10A3F },
+ { 0x12000, 0x1236E },
+ { 0x12400, 0x12462 },
+ { 0x1D165, 0x1D169 },
+ { 0x1D16D, 0x1D172 },
+ { 0x1D17B, 0x1D182 },
+ { 0x1D185, 0x1D18B },
+ { 0x1D1AA, 0x1D1AD },
+ { 0x1D242, 0x1D244 },
+ { 0x1D400, 0x1D454 },
+ { 0x1D456, 0x1D49C },
+ { 0x1D49E, 0x1D49F },
+ { 0x1D4A2, 0x1D4A2 },
+ { 0x1D4A5, 0x1D4A6 },
+ { 0x1D4A9, 0x1D4AC },
+ { 0x1D4AE, 0x1D4B9 },
+ { 0x1D4BB, 0x1D4BB },
+ { 0x1D4BD, 0x1D4C3 },
+ { 0x1D4C5, 0x1D505 },
+ { 0x1D507, 0x1D50A },
+ { 0x1D50D, 0x1D514 },
+ { 0x1D516, 0x1D51C },
+ { 0x1D51E, 0x1D539 },
+ { 0x1D53B, 0x1D53E },
+ { 0x1D540, 0x1D544 },
+ { 0x1D546, 0x1D546 },
+ { 0x1D54A, 0x1D550 },
+ { 0x1D552, 0x1D6A5 },
+ { 0x1D6A8, 0x1D6C0 },
+ { 0x1D6C2, 0x1D6DA },
+ { 0x1D6DC, 0x1D6FA },
+ { 0x1D6FC, 0x1D714 },
+ { 0x1D716, 0x1D734 },
+ { 0x1D736, 0x1D74E },
+ { 0x1D750, 0x1D76E },
+ { 0x1D770, 0x1D788 },
+ { 0x1D78A, 0x1D7A8 },
+ { 0x1D7AA, 0x1D7C2 },
+ { 0x1D7C4, 0x1D7CB },
+ { 0x1D7CE, 0x1D7FF },
+ { 0x20000, 0x2A6D6 },
+ { 0x2F800, 0x2FA1D },
+ { 0xE0100, 0xE01EF }
+
+#define PREDICATE(c) uc_is_property_xid_continue (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_xid_start.c b/tests/unictype/test-pr_xid_start.c
new file mode 100644
index 00000000..57326c0f
--- /dev/null
+++ b/tests/unictype/test-pr_xid_start.c
@@ -0,0 +1,421 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0041, 0x005A },
+ { 0x0061, 0x007A },
+ { 0x00AA, 0x00AA },
+ { 0x00B5, 0x00B5 },
+ { 0x00BA, 0x00BA },
+ { 0x00C0, 0x00D6 },
+ { 0x00D8, 0x00F6 },
+ { 0x00F8, 0x02C1 },
+ { 0x02C6, 0x02D1 },
+ { 0x02E0, 0x02E4 },
+ { 0x02EC, 0x02EC },
+ { 0x02EE, 0x02EE },
+ { 0x0370, 0x0374 },
+ { 0x0376, 0x0377 },
+ { 0x037B, 0x037D },
+ { 0x0386, 0x0386 },
+ { 0x0388, 0x038A },
+ { 0x038C, 0x038C },
+ { 0x038E, 0x03A1 },
+ { 0x03A3, 0x03F5 },
+ { 0x03F7, 0x0481 },
+ { 0x048A, 0x0523 },
+ { 0x0531, 0x0556 },
+ { 0x0559, 0x0559 },
+ { 0x0561, 0x0587 },
+ { 0x05D0, 0x05EA },
+ { 0x05F0, 0x05F2 },
+ { 0x0621, 0x064A },
+ { 0x066E, 0x066F },
+ { 0x0671, 0x06D3 },
+ { 0x06D5, 0x06D5 },
+ { 0x06E5, 0x06E6 },
+ { 0x06EE, 0x06EF },
+ { 0x06FA, 0x06FC },
+ { 0x06FF, 0x06FF },
+ { 0x0710, 0x0710 },
+ { 0x0712, 0x072F },
+ { 0x074D, 0x07A5 },
+ { 0x07B1, 0x07B1 },
+ { 0x07CA, 0x07EA },
+ { 0x07F4, 0x07F5 },
+ { 0x07FA, 0x07FA },
+ { 0x0904, 0x0939 },
+ { 0x093D, 0x093D },
+ { 0x0950, 0x0950 },
+ { 0x0958, 0x0961 },
+ { 0x0971, 0x0972 },
+ { 0x097B, 0x097F },
+ { 0x0985, 0x098C },
+ { 0x098F, 0x0990 },
+ { 0x0993, 0x09A8 },
+ { 0x09AA, 0x09B0 },
+ { 0x09B2, 0x09B2 },
+ { 0x09B6, 0x09B9 },
+ { 0x09BD, 0x09BD },
+ { 0x09CE, 0x09CE },
+ { 0x09DC, 0x09DD },
+ { 0x09DF, 0x09E1 },
+ { 0x09F0, 0x09F1 },
+ { 0x0A05, 0x0A0A },
+ { 0x0A0F, 0x0A10 },
+ { 0x0A13, 0x0A28 },
+ { 0x0A2A, 0x0A30 },
+ { 0x0A32, 0x0A33 },
+ { 0x0A35, 0x0A36 },
+ { 0x0A38, 0x0A39 },
+ { 0x0A59, 0x0A5C },
+ { 0x0A5E, 0x0A5E },
+ { 0x0A72, 0x0A74 },
+ { 0x0A85, 0x0A8D },
+ { 0x0A8F, 0x0A91 },
+ { 0x0A93, 0x0AA8 },
+ { 0x0AAA, 0x0AB0 },
+ { 0x0AB2, 0x0AB3 },
+ { 0x0AB5, 0x0AB9 },
+ { 0x0ABD, 0x0ABD },
+ { 0x0AD0, 0x0AD0 },
+ { 0x0AE0, 0x0AE1 },
+ { 0x0B05, 0x0B0C },
+ { 0x0B0F, 0x0B10 },
+ { 0x0B13, 0x0B28 },
+ { 0x0B2A, 0x0B30 },
+ { 0x0B32, 0x0B33 },
+ { 0x0B35, 0x0B39 },
+ { 0x0B3D, 0x0B3D },
+ { 0x0B5C, 0x0B5D },
+ { 0x0B5F, 0x0B61 },
+ { 0x0B71, 0x0B71 },
+ { 0x0B83, 0x0B83 },
+ { 0x0B85, 0x0B8A },
+ { 0x0B8E, 0x0B90 },
+ { 0x0B92, 0x0B95 },
+ { 0x0B99, 0x0B9A },
+ { 0x0B9C, 0x0B9C },
+ { 0x0B9E, 0x0B9F },
+ { 0x0BA3, 0x0BA4 },
+ { 0x0BA8, 0x0BAA },
+ { 0x0BAE, 0x0BB9 },
+ { 0x0BD0, 0x0BD0 },
+ { 0x0C05, 0x0C0C },
+ { 0x0C0E, 0x0C10 },
+ { 0x0C12, 0x0C28 },
+ { 0x0C2A, 0x0C33 },
+ { 0x0C35, 0x0C39 },
+ { 0x0C3D, 0x0C3D },
+ { 0x0C58, 0x0C59 },
+ { 0x0C60, 0x0C61 },
+ { 0x0C85, 0x0C8C },
+ { 0x0C8E, 0x0C90 },
+ { 0x0C92, 0x0CA8 },
+ { 0x0CAA, 0x0CB3 },
+ { 0x0CB5, 0x0CB9 },
+ { 0x0CBD, 0x0CBD },
+ { 0x0CDE, 0x0CDE },
+ { 0x0CE0, 0x0CE1 },
+ { 0x0D05, 0x0D0C },
+ { 0x0D0E, 0x0D10 },
+ { 0x0D12, 0x0D28 },
+ { 0x0D2A, 0x0D39 },
+ { 0x0D3D, 0x0D3D },
+ { 0x0D60, 0x0D61 },
+ { 0x0D7A, 0x0D7F },
+ { 0x0D85, 0x0D96 },
+ { 0x0D9A, 0x0DB1 },
+ { 0x0DB3, 0x0DBB },
+ { 0x0DBD, 0x0DBD },
+ { 0x0DC0, 0x0DC6 },
+ { 0x0E01, 0x0E30 },
+ { 0x0E32, 0x0E32 },
+ { 0x0E40, 0x0E46 },
+ { 0x0E81, 0x0E82 },
+ { 0x0E84, 0x0E84 },
+ { 0x0E87, 0x0E88 },
+ { 0x0E8A, 0x0E8A },
+ { 0x0E8D, 0x0E8D },
+ { 0x0E94, 0x0E97 },
+ { 0x0E99, 0x0E9F },
+ { 0x0EA1, 0x0EA3 },
+ { 0x0EA5, 0x0EA5 },
+ { 0x0EA7, 0x0EA7 },
+ { 0x0EAA, 0x0EAB },
+ { 0x0EAD, 0x0EB0 },
+ { 0x0EB2, 0x0EB2 },
+ { 0x0EBD, 0x0EBD },
+ { 0x0EC0, 0x0EC4 },
+ { 0x0EC6, 0x0EC6 },
+ { 0x0EDC, 0x0EDD },
+ { 0x0F00, 0x0F00 },
+ { 0x0F40, 0x0F47 },
+ { 0x0F49, 0x0F6C },
+ { 0x0F88, 0x0F8B },
+ { 0x1000, 0x102A },
+ { 0x103F, 0x103F },
+ { 0x1050, 0x1055 },
+ { 0x105A, 0x105D },
+ { 0x1061, 0x1061 },
+ { 0x1065, 0x1066 },
+ { 0x106E, 0x1070 },
+ { 0x1075, 0x1081 },
+ { 0x108E, 0x108E },
+ { 0x10A0, 0x10C5 },
+ { 0x10D0, 0x10FA },
+ { 0x10FC, 0x10FC },
+ { 0x1100, 0x1159 },
+ { 0x115F, 0x11A2 },
+ { 0x11A8, 0x11F9 },
+ { 0x1200, 0x1248 },
+ { 0x124A, 0x124D },
+ { 0x1250, 0x1256 },
+ { 0x1258, 0x1258 },
+ { 0x125A, 0x125D },
+ { 0x1260, 0x1288 },
+ { 0x128A, 0x128D },
+ { 0x1290, 0x12B0 },
+ { 0x12B2, 0x12B5 },
+ { 0x12B8, 0x12BE },
+ { 0x12C0, 0x12C0 },
+ { 0x12C2, 0x12C5 },
+ { 0x12C8, 0x12D6 },
+ { 0x12D8, 0x1310 },
+ { 0x1312, 0x1315 },
+ { 0x1318, 0x135A },
+ { 0x1380, 0x138F },
+ { 0x13A0, 0x13F4 },
+ { 0x1401, 0x166C },
+ { 0x166F, 0x1676 },
+ { 0x1681, 0x169A },
+ { 0x16A0, 0x16EA },
+ { 0x16EE, 0x16F0 },
+ { 0x1700, 0x170C },
+ { 0x170E, 0x1711 },
+ { 0x1720, 0x1731 },
+ { 0x1740, 0x1751 },
+ { 0x1760, 0x176C },
+ { 0x176E, 0x1770 },
+ { 0x1780, 0x17B3 },
+ { 0x17D7, 0x17D7 },
+ { 0x17DC, 0x17DC },
+ { 0x1820, 0x1877 },
+ { 0x1880, 0x18A8 },
+ { 0x18AA, 0x18AA },
+ { 0x1900, 0x191C },
+ { 0x1950, 0x196D },
+ { 0x1970, 0x1974 },
+ { 0x1980, 0x19A9 },
+ { 0x19C1, 0x19C7 },
+ { 0x1A00, 0x1A16 },
+ { 0x1B05, 0x1B33 },
+ { 0x1B45, 0x1B4B },
+ { 0x1B83, 0x1BA0 },
+ { 0x1BAE, 0x1BAF },
+ { 0x1C00, 0x1C23 },
+ { 0x1C4D, 0x1C4F },
+ { 0x1C5A, 0x1C7D },
+ { 0x1D00, 0x1DBF },
+ { 0x1E00, 0x1F15 },
+ { 0x1F18, 0x1F1D },
+ { 0x1F20, 0x1F45 },
+ { 0x1F48, 0x1F4D },
+ { 0x1F50, 0x1F57 },
+ { 0x1F59, 0x1F59 },
+ { 0x1F5B, 0x1F5B },
+ { 0x1F5D, 0x1F5D },
+ { 0x1F5F, 0x1F7D },
+ { 0x1F80, 0x1FB4 },
+ { 0x1FB6, 0x1FBC },
+ { 0x1FBE, 0x1FBE },
+ { 0x1FC2, 0x1FC4 },
+ { 0x1FC6, 0x1FCC },
+ { 0x1FD0, 0x1FD3 },
+ { 0x1FD6, 0x1FDB },
+ { 0x1FE0, 0x1FEC },
+ { 0x1FF2, 0x1FF4 },
+ { 0x1FF6, 0x1FFC },
+ { 0x2071, 0x2071 },
+ { 0x207F, 0x207F },
+ { 0x2090, 0x2094 },
+ { 0x2102, 0x2102 },
+ { 0x2107, 0x2107 },
+ { 0x210A, 0x2113 },
+ { 0x2115, 0x2115 },
+ { 0x2118, 0x211D },
+ { 0x2124, 0x2124 },
+ { 0x2126, 0x2126 },
+ { 0x2128, 0x2128 },
+ { 0x212A, 0x2139 },
+ { 0x213C, 0x213F },
+ { 0x2145, 0x2149 },
+ { 0x214E, 0x214E },
+ { 0x2160, 0x2188 },
+ { 0x2C00, 0x2C2E },
+ { 0x2C30, 0x2C5E },
+ { 0x2C60, 0x2C6F },
+ { 0x2C71, 0x2C7D },
+ { 0x2C80, 0x2CE4 },
+ { 0x2D00, 0x2D25 },
+ { 0x2D30, 0x2D65 },
+ { 0x2D6F, 0x2D6F },
+ { 0x2D80, 0x2D96 },
+ { 0x2DA0, 0x2DA6 },
+ { 0x2DA8, 0x2DAE },
+ { 0x2DB0, 0x2DB6 },
+ { 0x2DB8, 0x2DBE },
+ { 0x2DC0, 0x2DC6 },
+ { 0x2DC8, 0x2DCE },
+ { 0x2DD0, 0x2DD6 },
+ { 0x2DD8, 0x2DDE },
+ { 0x3005, 0x3007 },
+ { 0x3021, 0x3029 },
+ { 0x3031, 0x3035 },
+ { 0x3038, 0x303C },
+ { 0x3041, 0x3096 },
+ { 0x309D, 0x309F },
+ { 0x30A1, 0x30FA },
+ { 0x30FC, 0x30FF },
+ { 0x3105, 0x312D },
+ { 0x3131, 0x318E },
+ { 0x31A0, 0x31B7 },
+ { 0x31F0, 0x31FF },
+ { 0x3400, 0x4DB5 },
+ { 0x4E00, 0x9FC3 },
+ { 0xA000, 0xA48C },
+ { 0xA500, 0xA60C },
+ { 0xA610, 0xA61F },
+ { 0xA62A, 0xA62B },
+ { 0xA640, 0xA65F },
+ { 0xA662, 0xA66E },
+ { 0xA67F, 0xA697 },
+ { 0xA717, 0xA71F },
+ { 0xA722, 0xA788 },
+ { 0xA78B, 0xA78C },
+ { 0xA7FB, 0xA801 },
+ { 0xA803, 0xA805 },
+ { 0xA807, 0xA80A },
+ { 0xA80C, 0xA822 },
+ { 0xA840, 0xA873 },
+ { 0xA882, 0xA8B3 },
+ { 0xA90A, 0xA925 },
+ { 0xA930, 0xA946 },
+ { 0xAA00, 0xAA28 },
+ { 0xAA40, 0xAA42 },
+ { 0xAA44, 0xAA4B },
+ { 0xAC00, 0xD7A3 },
+ { 0xF900, 0xFA2D },
+ { 0xFA30, 0xFA6A },
+ { 0xFA70, 0xFAD9 },
+ { 0xFB00, 0xFB06 },
+ { 0xFB13, 0xFB17 },
+ { 0xFB1D, 0xFB1D },
+ { 0xFB1F, 0xFB28 },
+ { 0xFB2A, 0xFB36 },
+ { 0xFB38, 0xFB3C },
+ { 0xFB3E, 0xFB3E },
+ { 0xFB40, 0xFB41 },
+ { 0xFB43, 0xFB44 },
+ { 0xFB46, 0xFBB1 },
+ { 0xFBD3, 0xFC5D },
+ { 0xFC64, 0xFD3D },
+ { 0xFD50, 0xFD8F },
+ { 0xFD92, 0xFDC7 },
+ { 0xFDF0, 0xFDF9 },
+ { 0xFE71, 0xFE71 },
+ { 0xFE73, 0xFE73 },
+ { 0xFE77, 0xFE77 },
+ { 0xFE79, 0xFE79 },
+ { 0xFE7B, 0xFE7B },
+ { 0xFE7D, 0xFE7D },
+ { 0xFE7F, 0xFEFC },
+ { 0xFF21, 0xFF3A },
+ { 0xFF41, 0xFF5A },
+ { 0xFF66, 0xFF9D },
+ { 0xFFA0, 0xFFBE },
+ { 0xFFC2, 0xFFC7 },
+ { 0xFFCA, 0xFFCF },
+ { 0xFFD2, 0xFFD7 },
+ { 0xFFDA, 0xFFDC },
+ { 0x10000, 0x1000B },
+ { 0x1000D, 0x10026 },
+ { 0x10028, 0x1003A },
+ { 0x1003C, 0x1003D },
+ { 0x1003F, 0x1004D },
+ { 0x10050, 0x1005D },
+ { 0x10080, 0x100FA },
+ { 0x10140, 0x10174 },
+ { 0x10280, 0x1029C },
+ { 0x102A0, 0x102D0 },
+ { 0x10300, 0x1031E },
+ { 0x10330, 0x1034A },
+ { 0x10380, 0x1039D },
+ { 0x103A0, 0x103C3 },
+ { 0x103C8, 0x103CF },
+ { 0x103D1, 0x103D5 },
+ { 0x10400, 0x1049D },
+ { 0x10800, 0x10805 },
+ { 0x10808, 0x10808 },
+ { 0x1080A, 0x10835 },
+ { 0x10837, 0x10838 },
+ { 0x1083C, 0x1083C },
+ { 0x1083F, 0x1083F },
+ { 0x10900, 0x10915 },
+ { 0x10920, 0x10939 },
+ { 0x10A00, 0x10A00 },
+ { 0x10A10, 0x10A13 },
+ { 0x10A15, 0x10A17 },
+ { 0x10A19, 0x10A33 },
+ { 0x12000, 0x1236E },
+ { 0x12400, 0x12462 },
+ { 0x1D400, 0x1D454 },
+ { 0x1D456, 0x1D49C },
+ { 0x1D49E, 0x1D49F },
+ { 0x1D4A2, 0x1D4A2 },
+ { 0x1D4A5, 0x1D4A6 },
+ { 0x1D4A9, 0x1D4AC },
+ { 0x1D4AE, 0x1D4B9 },
+ { 0x1D4BB, 0x1D4BB },
+ { 0x1D4BD, 0x1D4C3 },
+ { 0x1D4C5, 0x1D505 },
+ { 0x1D507, 0x1D50A },
+ { 0x1D50D, 0x1D514 },
+ { 0x1D516, 0x1D51C },
+ { 0x1D51E, 0x1D539 },
+ { 0x1D53B, 0x1D53E },
+ { 0x1D540, 0x1D544 },
+ { 0x1D546, 0x1D546 },
+ { 0x1D54A, 0x1D550 },
+ { 0x1D552, 0x1D6A5 },
+ { 0x1D6A8, 0x1D6C0 },
+ { 0x1D6C2, 0x1D6DA },
+ { 0x1D6DC, 0x1D6FA },
+ { 0x1D6FC, 0x1D714 },
+ { 0x1D716, 0x1D734 },
+ { 0x1D736, 0x1D74E },
+ { 0x1D750, 0x1D76E },
+ { 0x1D770, 0x1D788 },
+ { 0x1D78A, 0x1D7A8 },
+ { 0x1D7AA, 0x1D7C2 },
+ { 0x1D7C4, 0x1D7CB },
+ { 0x20000, 0x2A6D6 },
+ { 0x2F800, 0x2FA1D }
+
+#define PREDICATE(c) uc_is_property_xid_start (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_zero_width.c b/tests/unictype/test-pr_zero_width.c
new file mode 100644
index 00000000..faefd5e4
--- /dev/null
+++ b/tests/unictype/test-pr_zero_width.c
@@ -0,0 +1,36 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x00AD, 0x00AD },
+ { 0x0600, 0x0603 },
+ { 0x06DD, 0x06DD },
+ { 0x070F, 0x070F },
+ { 0x17B4, 0x17B5 },
+ { 0x200B, 0x200F },
+ { 0x202A, 0x202E },
+ { 0x2060, 0x2064 },
+ { 0x206A, 0x206F },
+ { 0xFEFF, 0xFEFF },
+ { 0xFFF9, 0xFFFB },
+ { 0x1D173, 0x1D17A },
+ { 0xE0001, 0xE0001 },
+ { 0xE0020, 0xE007F }
+
+#define PREDICATE(c) uc_is_property_zero_width (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-predicate-part1.h b/tests/unictype/test-predicate-part1.h
new file mode 100644
index 00000000..e81de471
--- /dev/null
+++ b/tests/unictype/test-predicate-part1.h
@@ -0,0 +1,45 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed for c = 0x%04X\n", \
+ __FILE__, __LINE__, c); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+#define SIZEOF(a) (sizeof(a) / sizeof(a[0]))
+
+/* Interval of Unicode characters. */
+typedef struct { ucs4_t start; ucs4_t end; } interval_t;
+
+/* Set of Unicode characters, described as list of intervals, in increasing
+ order. */
+static const interval_t set[] =
+ {
diff --git a/tests/unictype/test-predicate-part2.h b/tests/unictype/test-predicate-part2.h
new file mode 100644
index 00000000..60b7c246
--- /dev/null
+++ b/tests/unictype/test-predicate-part2.h
@@ -0,0 +1,37 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+ };
+
+int
+main ()
+{
+ unsigned int c;
+ size_t i;
+
+ c = 0;
+ for (i = 0; i < SIZEOF (set); i++)
+ {
+ for (; c < set[i].start; c++)
+ ASSERT (!PREDICATE (c));
+ for (; c <= set[i].end; c++)
+ ASSERT (PREDICATE (c));
+ }
+ for (; c < 0x110000; c++)
+ ASSERT (!PREDICATE (c));
+
+ return 0;
+}
diff --git a/tests/unictype/test-scripts.c b/tests/unictype/test-scripts.c
new file mode 100644
index 00000000..4b4b0f92
--- /dev/null
+++ b/tests/unictype/test-scripts.c
@@ -0,0 +1,86 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ /* Test the uc_script function. */
+ ASSERT (strcmp (uc_script ('A')->name, "Latin") == 0);
+ ASSERT (strcmp (uc_script ('%')->name, "Common") == 0);
+ ASSERT (uc_script (0xE0000) == NULL);
+
+ /* Test the uc_script_byname function. */
+ ASSERT (strcmp (uc_script_byname ("Armenian")->name, "Armenian") == 0);
+ ASSERT (uc_script_byname ("Pekinese") == NULL);
+
+ /* Test the uc_is_script function. */
+ ASSERT (uc_is_script ('A', uc_script_byname ("Latin")));
+ ASSERT (!uc_is_script ('A', uc_script_byname ("Common")));
+ ASSERT (!uc_is_script (0x05DA, uc_script_byname ("Latin")));
+ ASSERT (uc_is_script (0x05DA, uc_script_byname ("Hebrew")));
+
+ {
+ unsigned int c;
+
+ for (c = 0; c < 0x110000; c++)
+ {
+ const uc_script_t *script = uc_script (c);
+ if (script != NULL)
+ ASSERT (uc_is_script (c, script));
+ }
+ }
+
+ /* Test the uc_all_scripts function. */
+ {
+ const uc_script_t *scripts;
+ size_t nscripts;
+ size_t i;
+ bool found;
+
+ uc_all_scripts (&scripts, &nscripts);
+
+ found = false;
+ for (i = 0; i < nscripts; i++)
+ {
+ ASSERT (scripts[i].name != NULL);
+ if (strcmp (scripts[i].name, "Hebrew") == 0)
+ found = true;
+ }
+ ASSERT (found);
+ }
+
+ return 0;
+}
diff --git a/tests/unictype/test-sy_c_ident.c b/tests/unictype/test-sy_c_ident.c
new file mode 100644
index 00000000..00688e13
--- /dev/null
+++ b/tests/unictype/test-sy_c_ident.c
@@ -0,0 +1,50 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ ASSERT (uc_c_ident_category ('0') == UC_IDENTIFIER_VALID);
+ ASSERT (uc_c_ident_category ('X') == UC_IDENTIFIER_START);
+ ASSERT (uc_c_ident_category ('+') == UC_IDENTIFIER_INVALID);
+ ASSERT (uc_c_ident_category (0x00B2) == UC_IDENTIFIER_INVALID);
+ ASSERT (uc_c_ident_category (0x05DA) == UC_IDENTIFIER_START);
+
+ ASSERT (uc_c_ident_category (0x001B) == UC_IDENTIFIER_INVALID);
+ ASSERT (uc_c_ident_category (0xE0001) == UC_IDENTIFIER_INVALID);
+
+ return 0;
+}
diff --git a/tests/unictype/test-sy_c_whitespace.c b/tests/unictype/test-sy_c_whitespace.c
new file mode 100644
index 00000000..45b9bc0e
--- /dev/null
+++ b/tests/unictype/test-sy_c_whitespace.c
@@ -0,0 +1,24 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0009, 0x000D },
+ { 0x0020, 0x0020 }
+
+#define PREDICATE(c) uc_is_c_whitespace (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-sy_java_ident.c b/tests/unictype/test-sy_java_ident.c
new file mode 100644
index 00000000..0a4eb0af
--- /dev/null
+++ b/tests/unictype/test-sy_java_ident.c
@@ -0,0 +1,50 @@
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "unictype.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ ASSERT (uc_java_ident_category ('0') == UC_IDENTIFIER_VALID);
+ ASSERT (uc_java_ident_category ('X') == UC_IDENTIFIER_START);
+ ASSERT (uc_java_ident_category ('+') == UC_IDENTIFIER_INVALID);
+ ASSERT (uc_java_ident_category (0x00B2) == UC_IDENTIFIER_INVALID);
+ ASSERT (uc_java_ident_category (0x05DA) == UC_IDENTIFIER_START);
+
+ ASSERT (uc_java_ident_category (0x001B) == UC_IDENTIFIER_IGNORABLE);
+ ASSERT (uc_java_ident_category (0xE0001) == UC_IDENTIFIER_IGNORABLE);
+
+ return 0;
+}
diff --git a/tests/unictype/test-sy_java_whitespace.c b/tests/unictype/test-sy_java_whitespace.c
new file mode 100644
index 00000000..9e2943bf
--- /dev/null
+++ b/tests/unictype/test-sy_java_whitespace.c
@@ -0,0 +1,25 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0009, 0x000A },
+ { 0x000C, 0x000D },
+ { 0x0020, 0x0020 }
+
+#define PREDICATE(c) uc_is_java_whitespace (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unilbrk/test-u16-possible-linebreaks.c b/tests/unilbrk/test-u16-possible-linebreaks.c
new file mode 100644
index 00000000..4e0ef34b
--- /dev/null
+++ b/tests/unilbrk/test-u16-possible-linebreaks.c
@@ -0,0 +1,96 @@
+/* Test of line breaking of UTF-16 strings.
+ Copyright (C) 2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+
+#include <config.h>
+
+#include "unilbrk.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ /* Test case n = 0. */
+ u16_possible_linebreaks (NULL, 0, "GB18030", NULL);
+
+ {
+ static const uint16_t input[61] =
+ /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+
+ {
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u16_possible_linebreaks (input, SIZEOF (input), "GB18030", p);
+ for (i = 0; i < 61; i++)
+ {
+ ASSERT (p[i] == (i == 60 ? UC_BREAK_MANDATORY :
+ i == 5
+ || i == 11 || i == 25
+ || i == 27 || i == 29 || i == 30 || i == 35
+ || i == 45 || i == 51
+ || i == 52 || i == 53 || i == 55 || i == 56
+ || i == 58 || i == 59 ? UC_BREAK_POSSIBLE :
+ UC_BREAK_PROHIBITED));
+ }
+ free (p);
+ }
+
+ {
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u16_possible_linebreaks (input, SIZEOF (input), "GB2312", p);
+ for (i = 0; i < 61; i++)
+ {
+ ASSERT (p[i] == (i == 60 ? UC_BREAK_MANDATORY :
+ i == 5
+ || i == 11 || i == 25
+ || i == 27 || i == 29 || i == 30 || i == 35
+ || i == 37 || i == 45 || i == 51
+ || i == 52 || i == 53 || i == 55 || i == 56
+ || i == 58 || i == 59 ? UC_BREAK_POSSIBLE :
+ UC_BREAK_PROHIBITED));
+ }
+ free (p);
+ }
+ }
+
+ return 0;
+}
diff --git a/tests/unilbrk/test-u16-width-linebreaks.c b/tests/unilbrk/test-u16-width-linebreaks.c
new file mode 100644
index 00000000..b62d596a
--- /dev/null
+++ b/tests/unilbrk/test-u16-width-linebreaks.c
@@ -0,0 +1,86 @@
+/* Test of line breaking of UTF-16 strings.
+ Copyright (C) 2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+
+#include <config.h>
+
+#include "unilbrk.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ /* Test case n = 0. */
+ u16_width_linebreaks (NULL, 0, 80, 0, 0, NULL, "GB18030", NULL);
+
+ {
+ static const uint16_t input[61] =
+ /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+
+ {
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u16_width_linebreaks (input, SIZEOF (input), 25, 0, 0, NULL, "GB18030", p);
+ for (i = 0; i < 61; i++)
+ {
+ ASSERT (p[i] == (i == 60 ? UC_BREAK_MANDATORY :
+ i == 25 || i == 45 ? UC_BREAK_POSSIBLE :
+ UC_BREAK_PROHIBITED));
+ }
+ free (p);
+ }
+
+ {
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u16_width_linebreaks (input, SIZEOF (input), 25, 0, 0, NULL, "GB2312", p);
+ for (i = 0; i < 61; i++)
+ {
+ ASSERT (p[i] == (i == 60 ? UC_BREAK_MANDATORY :
+ i == 11 || i == 25 || i == 45 ? UC_BREAK_POSSIBLE :
+ UC_BREAK_PROHIBITED));
+ }
+ free (p);
+ }
+ }
+
+ return 0;
+}
diff --git a/tests/unilbrk/test-u32-possible-linebreaks.c b/tests/unilbrk/test-u32-possible-linebreaks.c
new file mode 100644
index 00000000..94e276a3
--- /dev/null
+++ b/tests/unilbrk/test-u32-possible-linebreaks.c
@@ -0,0 +1,96 @@
+/* Test of line breaking of UTF-32 strings.
+ Copyright (C) 2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+
+#include <config.h>
+
+#include "unilbrk.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ /* Test case n = 0. */
+ u32_possible_linebreaks (NULL, 0, "GB18030", NULL);
+
+ {
+ static const uint32_t input[61] =
+ /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+
+ {
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u32_possible_linebreaks (input, SIZEOF (input), "GB18030", p);
+ for (i = 0; i < 61; i++)
+ {
+ ASSERT (p[i] == (i == 60 ? UC_BREAK_MANDATORY :
+ i == 5
+ || i == 11 || i == 25
+ || i == 27 || i == 29 || i == 30 || i == 35
+ || i == 45 || i == 51
+ || i == 52 || i == 53 || i == 55 || i == 56
+ || i == 58 || i == 59 ? UC_BREAK_POSSIBLE :
+ UC_BREAK_PROHIBITED));
+ }
+ free (p);
+ }
+
+ {
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u32_possible_linebreaks (input, SIZEOF (input), "GB2312", p);
+ for (i = 0; i < 61; i++)
+ {
+ ASSERT (p[i] == (i == 60 ? UC_BREAK_MANDATORY :
+ i == 5
+ || i == 11 || i == 25
+ || i == 27 || i == 29 || i == 30 || i == 35
+ || i == 37 || i == 45 || i == 51
+ || i == 52 || i == 53 || i == 55 || i == 56
+ || i == 58 || i == 59 ? UC_BREAK_POSSIBLE :
+ UC_BREAK_PROHIBITED));
+ }
+ free (p);
+ }
+ }
+
+ return 0;
+}
diff --git a/tests/unilbrk/test-u32-width-linebreaks.c b/tests/unilbrk/test-u32-width-linebreaks.c
new file mode 100644
index 00000000..f684dee7
--- /dev/null
+++ b/tests/unilbrk/test-u32-width-linebreaks.c
@@ -0,0 +1,86 @@
+/* Test of line breaking of UTF-32 strings.
+ Copyright (C) 2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+
+#include <config.h>
+
+#include "unilbrk.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ /* Test case n = 0. */
+ u32_width_linebreaks (NULL, 0, 80, 0, 0, NULL, "GB18030", NULL);
+
+ {
+ static const uint32_t input[61] =
+ /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+
+ {
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u32_width_linebreaks (input, SIZEOF (input), 25, 0, 0, NULL, "GB18030", p);
+ for (i = 0; i < 61; i++)
+ {
+ ASSERT (p[i] == (i == 60 ? UC_BREAK_MANDATORY :
+ i == 25 || i == 45 ? UC_BREAK_POSSIBLE :
+ UC_BREAK_PROHIBITED));
+ }
+ free (p);
+ }
+
+ {
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u32_width_linebreaks (input, SIZEOF (input), 25, 0, 0, NULL, "GB2312", p);
+ for (i = 0; i < 61; i++)
+ {
+ ASSERT (p[i] == (i == 60 ? UC_BREAK_MANDATORY :
+ i == 11 || i == 25 || i == 45 ? UC_BREAK_POSSIBLE :
+ UC_BREAK_PROHIBITED));
+ }
+ free (p);
+ }
+ }
+
+ return 0;
+}
diff --git a/tests/unilbrk/test-u8-possible-linebreaks.c b/tests/unilbrk/test-u8-possible-linebreaks.c
new file mode 100644
index 00000000..c3a091d6
--- /dev/null
+++ b/tests/unilbrk/test-u8-possible-linebreaks.c
@@ -0,0 +1,90 @@
+/* Test of line breaking of UTF-8 strings.
+ Copyright (C) 2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+
+#include <config.h>
+
+#include "unilbrk.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ /* Test case n = 0. */
+ u8_possible_linebreaks (NULL, 0, "GB18030", NULL);
+
+ {
+ static const uint8_t input[91] =
+ /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ "Gr\303\274\303\237 Gott. \320\227\320\264\321\200\320\260\320\262\321\201\321\202\320\262\321\203\320\271\321\202\320\265! x=(-b\302\261sqrt(b\302\262-4ac))/(2a) \346\227\245\346\234\254\350\252\236,\344\270\255\346\226\207,\355\225\234\352\270\200\n";
+
+ {
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u8_possible_linebreaks (input, SIZEOF (input), "GB18030", p);
+ for (i = 0; i < 91; i++)
+ {
+ ASSERT (p[i] == (i == 90 ? UC_BREAK_MANDATORY :
+ i == 7
+ || i == 13 || i == 39
+ || i == 41 || i == 43 || i == 44 || i == 50
+ || i == 61 || i == 67
+ || i == 70 || i == 73 || i == 77 || i == 80
+ || i == 84 || i == 87 ? UC_BREAK_POSSIBLE :
+ UC_BREAK_PROHIBITED));
+ }
+ free (p);
+ }
+
+ {
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u8_possible_linebreaks (input, SIZEOF (input), "GB2312", p);
+ for (i = 0; i < 91; i++)
+ {
+ ASSERT (p[i] == (i == 90 ? UC_BREAK_MANDATORY :
+ i == 7
+ || i == 13 || i == 39
+ || i == 41 || i == 43 || i == 44 || i == 50
+ || i == 52 || i == 61 || i == 67
+ || i == 70 || i == 73 || i == 77 || i == 80
+ || i == 84 || i == 87 ? UC_BREAK_POSSIBLE :
+ UC_BREAK_PROHIBITED));
+ }
+ free (p);
+ }
+ }
+
+ return 0;
+}
diff --git a/tests/unilbrk/test-u8-width-linebreaks.c b/tests/unilbrk/test-u8-width-linebreaks.c
new file mode 100644
index 00000000..6c176f15
--- /dev/null
+++ b/tests/unilbrk/test-u8-width-linebreaks.c
@@ -0,0 +1,80 @@
+/* Test of line breaking of UTF-8 strings.
+ Copyright (C) 2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+
+#include <config.h>
+
+#include "unilbrk.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ /* Test case n = 0. */
+ u8_width_linebreaks (NULL, 0, 80, 0, 0, NULL, "GB18030", NULL);
+
+ {
+ static const uint8_t input[91] =
+ /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ "Gr\303\274\303\237 Gott. \320\227\320\264\321\200\320\260\320\262\321\201\321\202\320\262\321\203\320\271\321\202\320\265! x=(-b\302\261sqrt(b\302\262-4ac))/(2a) \346\227\245\346\234\254\350\252\236,\344\270\255\346\226\207,\355\225\234\352\270\200\n";
+
+ {
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u8_width_linebreaks (input, SIZEOF (input), 25, 0, 0, NULL, "GB18030", p);
+ for (i = 0; i < 91; i++)
+ {
+ ASSERT (p[i] == (i == 90 ? UC_BREAK_MANDATORY :
+ i == 39 || i == 61 ? UC_BREAK_POSSIBLE :
+ UC_BREAK_PROHIBITED));
+ }
+ free (p);
+ }
+
+ {
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u8_width_linebreaks (input, SIZEOF (input), 25, 0, 0, NULL, "GB2312", p);
+ for (i = 0; i < 91; i++)
+ {
+ ASSERT (p[i] == (i == 90 ? UC_BREAK_MANDATORY :
+ i == 13 || i == 39 || i == 61 ? UC_BREAK_POSSIBLE :
+ UC_BREAK_PROHIBITED));
+ }
+ free (p);
+ }
+ }
+
+ return 0;
+}
diff --git a/tests/unilbrk/test-ulc-possible-linebreaks.c b/tests/unilbrk/test-ulc-possible-linebreaks.c
new file mode 100644
index 00000000..fdd73bee
--- /dev/null
+++ b/tests/unilbrk/test-ulc-possible-linebreaks.c
@@ -0,0 +1,66 @@
+/* Test of line breaking of strings.
+ Copyright (C) 2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+
+#include <config.h>
+
+#include "unilbrk.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ /* Test case n = 0. */
+ ulc_possible_linebreaks (NULL, 0, "GB18030", NULL);
+
+#if HAVE_ICONV
+ {
+ static const char input[36] =
+ /* "Grüß Gott. x=(-b±sqrt(b²-4ac))/(2a)" */
+ "Gr\374\337 Gott. x=(-b\261sqrt(b\262-4ac))/(2a)\n";
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ ulc_possible_linebreaks (input, SIZEOF (input), "ISO-8859-1", p);
+ for (i = 0; i < 36; i++)
+ {
+ ASSERT (p[i] == (i == 35 ? UC_BREAK_MANDATORY :
+ i == 5 || i == 11 || i == 13 || i == 15 || i == 16
+ || i == 21 || i == 31 ? UC_BREAK_POSSIBLE :
+ UC_BREAK_PROHIBITED));
+ }
+ free (p);
+ }
+#endif
+
+ return 0;
+}
diff --git a/tests/unilbrk/test-ulc-width-linebreaks.c b/tests/unilbrk/test-ulc-width-linebreaks.c
new file mode 100644
index 00000000..c0b23019
--- /dev/null
+++ b/tests/unilbrk/test-ulc-width-linebreaks.c
@@ -0,0 +1,65 @@
+/* Test of line breaking of strings.
+ Copyright (C) 2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+
+#include <config.h>
+
+#include "unilbrk.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ /* Test case n = 0. */
+ ulc_width_linebreaks (NULL, 0, 80, 0, 0, NULL, "GB18030", NULL);
+
+#if HAVE_ICONV
+ {
+ static const char input[36] =
+ /* "Grüß Gott. x=(-b±sqrt(b²-4ac))/(2a)" */
+ "Gr\374\337 Gott. x=(-b\261sqrt(b\262-4ac))/(2a)\n";
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ ulc_width_linebreaks (input, SIZEOF (input), 12, 0, 0, NULL, "ISO-8859-1", p);
+ for (i = 0; i < 36; i++)
+ {
+ ASSERT (p[i] == (i == 35 ? UC_BREAK_MANDATORY :
+ i == 11 || i == 21 || i == 31 ? UC_BREAK_POSSIBLE :
+ UC_BREAK_PROHIBITED));
+ }
+ free (p);
+ }
+#endif
+
+ return 0;
+}
diff --git a/tests/uniname/UnicodeDataNames.txt b/tests/uniname/UnicodeDataNames.txt
new file mode 100644
index 00000000..5a4cf1a4
--- /dev/null
+++ b/tests/uniname/UnicodeDataNames.txt
@@ -0,0 +1,30423 @@
+0020;SPACE;Zs;0;WS;;;;;N;;;;;
+0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
+0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
+0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
+0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
+0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
+0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
+0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
+002A;ASTERISK;Po;0;ON;;;;;N;;;;;
+002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;CS;;;;;N;SLASH;;;;
+0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
+0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
+0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
+0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
+0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
+0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
+0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
+0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
+0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
+0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
+003A;COLON;Po;0;CS;;;;;N;;;;;
+003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
+003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
+0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
+0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
+0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
+0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
+0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
+0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
+0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
+0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
+0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
+0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
+004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
+004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
+004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
+004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
+004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
+004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
+0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
+0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
+0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
+0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
+0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
+0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
+0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
+0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
+0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
+0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
+005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
+005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
+005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
+005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
+005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;
+005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
+0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;
+0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
+0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
+0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
+0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
+0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
+0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
+0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
+0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
+0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
+006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
+006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
+006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
+006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
+006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
+006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
+0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
+0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
+0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
+0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
+0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
+0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
+0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
+0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
+0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
+0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
+007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
+007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
+007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
+007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
+007E;TILDE;Sm;0;ON;;;;;N;;;;;
+00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
+00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
+00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
+00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
+00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
+00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
+00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
+00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
+00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
+00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;;
+00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
+00AD;SOFT HYPHEN;Cf;0;BN;;;;;N;;;;;
+00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
+00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
+00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
+00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
+00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
+00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
+00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C
+00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
+00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
+00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
+00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
+00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;;
+00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
+00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
+00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
+00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
+00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
+00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
+00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
+00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
+00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
+00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6;
+00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
+00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
+00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
+00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
+00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
+00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
+00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
+00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
+00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
+00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
+00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
+00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
+00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
+00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
+00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
+00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
+00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
+00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
+00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
+00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
+00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
+00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
+00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
+00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
+00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
+00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
+00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
+00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
+00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
+00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
+00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
+00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6
+00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
+00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
+00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
+00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
+00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
+00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
+00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
+00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
+00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
+00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
+00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
+00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
+00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
+00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
+00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
+00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
+00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
+00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
+00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
+00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
+00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
+00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
+00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
+00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
+0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
+0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
+0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
+0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
+0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
+0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
+0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
+0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
+0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
+0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
+010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
+010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
+010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
+010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
+010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
+010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
+0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
+0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
+0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
+0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
+0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
+0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
+0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
+0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
+0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
+0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
+011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
+011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
+011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
+011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
+011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
+011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
+0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
+0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
+0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
+0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
+0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
+0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
+0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
+0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
+0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
+0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
+012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
+012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
+012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
+012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
+012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
+012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
+0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
+0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
+0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
+0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
+0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
+0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
+0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
+0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
+0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
+0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
+013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
+013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
+013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
+013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
+013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
+013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
+0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
+0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
+0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
+0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
+0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
+0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
+0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
+0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
+0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
+0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
+014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
+014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
+014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
+014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
+014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
+014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
+0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
+0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
+0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
+0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
+0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
+0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
+0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
+0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
+0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
+0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
+015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
+015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
+015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
+015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
+015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F;
+015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E
+0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
+0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
+0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163;
+0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162
+0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
+0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
+0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
+0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
+0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
+0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
+016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
+016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
+016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
+016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
+016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
+016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
+0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
+0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
+0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
+0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
+0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
+0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
+0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
+0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
+0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
+0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
+017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
+017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
+017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
+017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
+017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
+017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
+0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;0243;;0243
+0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
+0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
+0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
+0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
+0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
+0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
+0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
+0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
+0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256;
+018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
+018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
+018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
+018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
+018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
+018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
+0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
+0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
+0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
+0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
+0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
+0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6
+0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
+0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
+0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
+0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
+019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;023D;;023D
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
+019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
+019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
+019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220
+019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275;
+01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
+01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
+01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2
+01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
+01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
+01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;*;;0280;
+01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
+01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
+01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
+01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;;
+01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
+01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
+01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
+01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
+01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
+01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
+01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
+01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
+01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
+01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
+01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
+01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
+01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
+01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
+01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
+01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
+01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
+01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
+01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
+01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
+01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7
+01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
+01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
+01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
+01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
+01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
+01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;01C5
+01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
+01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
+01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;01C8
+01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
+01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
+01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;01CB
+01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
+01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
+01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
+01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
+01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
+01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
+01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
+01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
+01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
+01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
+01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
+01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
+01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
+01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
+01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
+01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
+01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
+01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
+01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
+01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
+01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
+01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2
+01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
+01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
+01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
+01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
+01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
+01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
+01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
+01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
+01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
+01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
+01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
+01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
+01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
+01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
+01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;01F2
+01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
+01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
+01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
+01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195;
+01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF;
+01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9;
+01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8
+01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
+01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
+01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC
+01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
+01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
+0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
+0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
+0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
+0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
+0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
+0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
+0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
+0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
+0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
+0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
+020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
+020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
+020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
+020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
+020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
+020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
+0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
+0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
+0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
+0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
+0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
+0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
+0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
+0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
+0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219;
+0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218
+021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B;
+021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A
+021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D;
+021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C
+021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F;
+021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E
+0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E;
+0221;LATIN SMALL LETTER D WITH CURL;Ll;0;L;;;;;N;;;;;
+0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223;
+0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222
+0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225;
+0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224
+0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227;
+0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226
+0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229;
+0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228
+022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B;
+022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A
+022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D;
+022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C
+022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F;
+022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E
+0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231;
+0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230
+0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233;
+0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232
+0234;LATIN SMALL LETTER L WITH CURL;Ll;0;L;;;;;N;;;;;
+0235;LATIN SMALL LETTER N WITH CURL;Ll;0;L;;;;;N;;;;;
+0236;LATIN SMALL LETTER T WITH CURL;Ll;0;L;;;;;N;;;;;
+0237;LATIN SMALL LETTER DOTLESS J;Ll;0;L;;;;;N;;;;;
+0238;LATIN SMALL LETTER DB DIGRAPH;Ll;0;L;;;;;N;;;;;
+0239;LATIN SMALL LETTER QP DIGRAPH;Ll;0;L;;;;;N;;;;;
+023A;LATIN CAPITAL LETTER A WITH STROKE;Lu;0;L;;;;;N;;;;2C65;
+023B;LATIN CAPITAL LETTER C WITH STROKE;Lu;0;L;;;;;N;;;;023C;
+023C;LATIN SMALL LETTER C WITH STROKE;Ll;0;L;;;;;N;;;023B;;023B
+023D;LATIN CAPITAL LETTER L WITH BAR;Lu;0;L;;;;;N;;;;019A;
+023E;LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;2C66;
+023F;LATIN SMALL LETTER S WITH SWASH TAIL;Ll;0;L;;;;;N;;;;;
+0240;LATIN SMALL LETTER Z WITH SWASH TAIL;Ll;0;L;;;;;N;;;;;
+0241;LATIN CAPITAL LETTER GLOTTAL STOP;Lu;0;L;;;;;N;;;;0242;
+0242;LATIN SMALL LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;0241;;0241
+0243;LATIN CAPITAL LETTER B WITH STROKE;Lu;0;L;;;;;N;;;;0180;
+0244;LATIN CAPITAL LETTER U BAR;Lu;0;L;;;;;N;;;;0289;
+0245;LATIN CAPITAL LETTER TURNED V;Lu;0;L;;;;;N;;;;028C;
+0246;LATIN CAPITAL LETTER E WITH STROKE;Lu;0;L;;;;;N;;;;0247;
+0247;LATIN SMALL LETTER E WITH STROKE;Ll;0;L;;;;;N;;;0246;;0246
+0248;LATIN CAPITAL LETTER J WITH STROKE;Lu;0;L;;;;;N;;;;0249;
+0249;LATIN SMALL LETTER J WITH STROKE;Ll;0;L;;;;;N;;;0248;;0248
+024A;LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL;Lu;0;L;;;;;N;;;;024B;
+024B;LATIN SMALL LETTER Q WITH HOOK TAIL;Ll;0;L;;;;;N;;;024A;;024A
+024C;LATIN CAPITAL LETTER R WITH STROKE;Lu;0;L;;;;;N;;;;024D;
+024D;LATIN SMALL LETTER R WITH STROKE;Ll;0;L;;;;;N;;;024C;;024C
+024E;LATIN CAPITAL LETTER Y WITH STROKE;Lu;0;L;;;;;N;;;;024F;
+024F;LATIN SMALL LETTER Y WITH STROKE;Ll;0;L;;;;;N;;;024E;;024E
+0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;2C6F;;2C6F
+0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;2C6D;;2C6D
+0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;;
+0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
+0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
+0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
+0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
+0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
+0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
+0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
+025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
+025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
+025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
+025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
+025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
+025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
+0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
+0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
+0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
+0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
+0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
+0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
+0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
+0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
+0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
+026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
+026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;2C62;;2C62
+026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
+026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
+026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
+026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
+0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;2C6E;;2C6E
+0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
+0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
+0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
+0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
+0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
+0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
+0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
+0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
+027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
+027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;2C64;;2C64
+027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
+027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
+0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;*;01A6;;01A6
+0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
+0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
+0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
+0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
+0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
+0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
+0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
+0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
+0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;0244;;0244
+028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
+028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
+028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;0245;;0245
+028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
+028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
+028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
+0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
+0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
+0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
+0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
+0294;LATIN LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
+0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
+0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
+0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
+0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
+029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
+029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
+029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
+029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
+029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
+029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
+02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
+02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
+02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
+02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
+02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
+02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
+02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
+02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
+02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
+02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK;Ll;0;L;;;;;N;;;;;
+02AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;Ll;0;L;;;;;N;;;;;
+02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
+02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
+02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
+02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
+02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
+02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
+02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
+02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
+02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
+02B9;MODIFIER LETTER PRIME;Lm;0;ON;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Lm;0;ON;;;;;N;;;;;
+02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
+02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
+02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
+02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
+02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
+02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
+02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
+02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
+02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
+02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
+02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
+02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
+02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
+02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
+02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
+02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;;
+02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
+02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
+02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
+02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
+02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
+02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EC;MODIFIER LETTER VOICING;Lm;0;ON;;;;;N;;;;;
+02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;;
+02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;;
+02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
+02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
+02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;;
+02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;;
+02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;;
+02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;;
+02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;;
+02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;;
+02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;;
+02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;;
+02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;;
+02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia, Tonos;;;
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;;
+0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;
+0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;;
+0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;;
+0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;;
+0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
+0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;
+030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;;
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
+030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;;
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;;
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
+0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;;
+0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;;
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
+0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;;
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;;
+0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
+0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
+031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;;
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
+031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;;
+031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
+031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
+0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
+0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;
+0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
+0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;;
+0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;;
+0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;;
+0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;;
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
+032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;;
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
+032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;;
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
+032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;;
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
+0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;;
+0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;;
+0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;;
+0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
+0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;;
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
+033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;;
+033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;;
+033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;;
+033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;;
+033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
+0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
+0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;;
+0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;;
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399
+0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;
+0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;;
+034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;;
+034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;;
+034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;;
+034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;;
+0350;COMBINING RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;
+0351;COMBINING LEFT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;;
+0352;COMBINING FERMATA;Mn;230;NSM;;;;;N;;;;;
+0353;COMBINING X BELOW;Mn;220;NSM;;;;;N;;;;;
+0354;COMBINING LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
+0355;COMBINING RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
+0356;COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
+0357;COMBINING RIGHT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;;
+0358;COMBINING DOT ABOVE RIGHT;Mn;232;NSM;;;;;N;;;;;
+0359;COMBINING ASTERISK BELOW;Mn;220;NSM;;;;;N;;;;;
+035A;COMBINING DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;;
+035B;COMBINING ZIGZAG ABOVE;Mn;230;NSM;;;;;N;;;;;
+035C;COMBINING DOUBLE BREVE BELOW;Mn;233;NSM;;;;;N;;;;;
+035D;COMBINING DOUBLE BREVE;Mn;234;NSM;;;;;N;;;;;
+035E;COMBINING DOUBLE MACRON;Mn;234;NSM;;;;;N;;;;;
+035F;COMBINING DOUBLE MACRON BELOW;Mn;233;NSM;;;;;N;;;;;
+0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;;
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;;
+0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;;
+0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;;
+0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;;
+0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;;
+0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;;
+0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;;
+0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;;
+0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;;
+036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;;
+036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;;
+036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;;
+036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;;
+036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;;
+036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;;
+0370;GREEK CAPITAL LETTER HETA;Lu;0;L;;;;;N;;;;0371;
+0371;GREEK SMALL LETTER HETA;Ll;0;L;;;;;N;;;0370;;0370
+0372;GREEK CAPITAL LETTER ARCHAIC SAMPI;Lu;0;L;;;;;N;;;;0373;
+0373;GREEK SMALL LETTER ARCHAIC SAMPI;Ll;0;L;;;;;N;;;0372;;0372
+0374;GREEK NUMERAL SIGN;Lm;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;;
+0376;GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA;Lu;0;L;;;;;N;;;;0377;
+0377;GREEK SMALL LETTER PAMPHYLIAN DIGAMMA;Ll;0;L;;;;;N;;;0376;;0376
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+037B;GREEK SMALL REVERSED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FD;;03FD
+037C;GREEK SMALL DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FE;;03FE
+037D;GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FF;;03FF
+037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;;
+0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
+0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
+0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
+0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;
+0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
+0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
+038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
+038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
+038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
+038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
+0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
+0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
+0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
+0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
+0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
+0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
+0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
+0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
+0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
+0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
+039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
+039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
+039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
+039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
+039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
+039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
+03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
+03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
+03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
+03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
+03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
+03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
+03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
+03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
+03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
+03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
+03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
+03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
+03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
+03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
+03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
+03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
+03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
+03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
+03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
+03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
+03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
+03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
+03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
+03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
+03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
+03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
+03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
+03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
+03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
+03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
+03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
+03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
+03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
+03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
+03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
+03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
+03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
+03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
+03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
+03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
+03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
+03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
+03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
+03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
+03CF;GREEK CAPITAL KAI SYMBOL;Lu;0;L;;;;;N;;;;03D7;
+03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
+03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
+03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
+03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
+03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
+03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
+03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;03CF;;03CF
+03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;*;;03D9;
+03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;*;03D8;;03D8
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB;
+03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD;
+03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF;
+03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1;
+03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0
+03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
+03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
+03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
+03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
+03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
+03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
+03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
+03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
+03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
+03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
+03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
+03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
+03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
+03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
+03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
+03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03F9;;03F9
+03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;;
+03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;
+03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L;<compat> 03B5;;;;N;;;0395;;0395
+03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;;
+03F7;GREEK CAPITAL LETTER SHO;Lu;0;L;;;;;N;;;;03F8;
+03F8;GREEK SMALL LETTER SHO;Ll;0;L;;;;;N;;;03F7;;03F7
+03F9;GREEK CAPITAL LUNATE SIGMA SYMBOL;Lu;0;L;<compat> 03A3;;;;N;;;;03F2;
+03FA;GREEK CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;03FB;
+03FB;GREEK SMALL LETTER SAN;Ll;0;L;;;;;N;;;03FA;;03FA
+03FC;GREEK RHO WITH STROKE SYMBOL;Ll;0;L;;;;;N;;;;;
+03FD;GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037B;
+03FE;GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037C;
+03FF;GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037D;
+0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450;
+0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
+0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
+0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
+0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
+0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
+0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
+0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
+0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
+0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
+040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
+040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
+040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
+040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D;
+040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
+040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
+0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
+0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
+0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
+0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
+0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
+0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
+0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
+0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
+0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
+0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
+041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
+041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
+041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
+041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
+041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
+041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
+0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
+0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
+0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
+0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
+0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
+0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
+0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
+0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
+0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
+0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
+042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
+042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
+042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
+042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
+042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
+042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
+0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
+0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
+0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
+0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
+0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
+0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
+0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
+0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
+0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
+0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
+043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
+043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
+043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
+043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
+043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
+043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
+0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
+0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
+0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
+0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
+0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
+0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
+0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
+0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
+0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
+0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
+044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
+044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
+044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
+044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
+044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
+044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
+0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400
+0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
+0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
+0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
+0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
+0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
+0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
+0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
+0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
+0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
+045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
+045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
+045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
+045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D
+045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
+045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
+0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
+0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
+0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
+0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
+0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
+0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
+0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
+0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
+0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
+0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
+046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
+046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
+046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
+046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
+046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
+046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
+0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
+0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
+0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
+0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
+0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
+0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
+0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
+0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
+0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
+0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
+047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
+047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
+047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
+047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
+047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
+047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
+0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
+0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
+0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
+0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
+0487;COMBINING CYRILLIC POKRYTIE;Mn;230;NSM;;;;;N;;;;;
+0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;;
+0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B;
+048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A
+048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D;
+048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C
+048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F;
+048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E
+0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
+0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
+0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
+0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
+0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
+0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
+0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
+0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
+0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
+0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
+049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
+049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
+049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
+049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
+049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
+049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
+04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
+04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
+04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
+04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
+04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
+04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
+04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7;
+04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6
+04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
+04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
+04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
+04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
+04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
+04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
+04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
+04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
+04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
+04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
+04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
+04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
+04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5;
+04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4
+04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
+04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
+04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
+04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
+04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
+04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
+04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
+04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
+04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
+04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
+04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;04CF;
+04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
+04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
+04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
+04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
+04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6;
+04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5
+04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
+04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
+04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA;
+04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9
+04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
+04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
+04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE;
+04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD
+04CF;CYRILLIC SMALL LETTER PALOCHKA;Ll;0;L;;;;;N;;;04C0;;04C0
+04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
+04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
+04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
+04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
+04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
+04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
+04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
+04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
+04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
+04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
+04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
+04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
+04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
+04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
+04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
+04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
+04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
+04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
+04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
+04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
+04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
+04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
+04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
+04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
+04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
+04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
+04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
+04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
+04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED;
+04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC
+04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
+04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
+04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
+04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
+04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
+04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
+04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
+04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
+04F6;CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;Lu;0;L;;;;;N;;;;04F7;
+04F7;CYRILLIC SMALL LETTER GHE WITH DESCENDER;Ll;0;L;;;;;N;;;04F6;;04F6
+04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
+04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
+04FA;CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK;Lu;0;L;;;;;N;;;;04FB;
+04FB;CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK;Ll;0;L;;;;;N;;;04FA;;04FA
+04FC;CYRILLIC CAPITAL LETTER HA WITH HOOK;Lu;0;L;;;;;N;;;;04FD;
+04FD;CYRILLIC SMALL LETTER HA WITH HOOK;Ll;0;L;;;;;N;;;04FC;;04FC
+04FE;CYRILLIC CAPITAL LETTER HA WITH STROKE;Lu;0;L;;;;;N;;;;04FF;
+04FF;CYRILLIC SMALL LETTER HA WITH STROKE;Ll;0;L;;;;;N;;;04FE;;04FE
+0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501;
+0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500
+0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503;
+0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502
+0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505;
+0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504
+0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507;
+0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506
+0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509;
+0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508
+050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B;
+050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A
+050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D;
+050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C
+050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F;
+050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E
+0510;CYRILLIC CAPITAL LETTER REVERSED ZE;Lu;0;L;;;;;N;;;;0511;
+0511;CYRILLIC SMALL LETTER REVERSED ZE;Ll;0;L;;;;;N;;;0510;;0510
+0512;CYRILLIC CAPITAL LETTER EL WITH HOOK;Lu;0;L;;;;;N;;;;0513;
+0513;CYRILLIC SMALL LETTER EL WITH HOOK;Ll;0;L;;;;;N;;;0512;;0512
+0514;CYRILLIC CAPITAL LETTER LHA;Lu;0;L;;;;;N;;;;0515;
+0515;CYRILLIC SMALL LETTER LHA;Ll;0;L;;;;;N;;;0514;;0514
+0516;CYRILLIC CAPITAL LETTER RHA;Lu;0;L;;;;;N;;;;0517;
+0517;CYRILLIC SMALL LETTER RHA;Ll;0;L;;;;;N;;;0516;;0516
+0518;CYRILLIC CAPITAL LETTER YAE;Lu;0;L;;;;;N;;;;0519;
+0519;CYRILLIC SMALL LETTER YAE;Ll;0;L;;;;;N;;;0518;;0518
+051A;CYRILLIC CAPITAL LETTER QA;Lu;0;L;;;;;N;;;;051B;
+051B;CYRILLIC SMALL LETTER QA;Ll;0;L;;;;;N;;;051A;;051A
+051C;CYRILLIC CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;051D;
+051D;CYRILLIC SMALL LETTER WE;Ll;0;L;;;;;N;;;051C;;051C
+051E;CYRILLIC CAPITAL LETTER ALEUT KA;Lu;0;L;;;;;N;;;;051F;
+051F;CYRILLIC SMALL LETTER ALEUT KA;Ll;0;L;;;;;N;;;051E;;051E
+0520;CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0521;
+0521;CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0520;;0520
+0522;CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0523;
+0523;CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0522;;0522
+0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
+0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
+0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
+0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
+0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
+0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
+0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
+0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
+0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
+053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
+053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
+053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
+053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
+053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
+053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
+0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
+0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
+0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
+0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
+0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
+0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
+0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
+0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
+0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
+0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
+054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
+054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
+054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
+054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
+054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
+054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
+0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
+0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
+0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
+0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
+0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
+0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
+0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
+0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
+055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
+055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
+055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
+055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
+055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
+0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
+0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
+0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
+0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
+0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
+0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
+0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
+0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
+0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
+056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
+056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
+056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
+056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
+056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
+056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
+0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
+0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
+0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
+0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
+0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
+0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
+0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
+0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
+0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
+0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
+057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
+057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
+057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
+057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
+057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
+057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
+0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
+0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
+0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
+0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
+0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
+0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
+0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
+0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
+0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
+058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;
+0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;;
+0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;;
+0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;;
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;;
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;;
+0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;;
+0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;;
+0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;;
+0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;;
+059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;;
+059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;;
+059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;;
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;;
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;;
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;;
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;;
+05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;;
+05A2;HEBREW ACCENT ATNAH HAFUKH;Mn;220;NSM;;;;;N;;;;;
+05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;;
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;;
+05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;;
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;;
+05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;;
+05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;;
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;;
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;;
+05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;;
+05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;;
+05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;;
+05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;;
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;;
+05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;;
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;;
+05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;;
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;;
+05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;;
+05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;;
+05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;;
+05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;;
+05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;;
+05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;;
+05BA;HEBREW POINT HOLAM HASER FOR VAV;Mn;19;NSM;;;;;N;;;;;
+05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;;
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;;
+05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;;
+05BE;HEBREW PUNCTUATION MAQAF;Pd;0;R;;;;;N;;;;;
+05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;;
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;;
+05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;;
+05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;;
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;;
+05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;;
+05C5;HEBREW MARK LOWER DOT;Mn;220;NSM;;;;;N;;;;;
+05C6;HEBREW PUNCTUATION NUN HAFUKHA;Po;0;R;;;;;N;;;;;
+05C7;HEBREW POINT QAMATS QATAN;Mn;18;NSM;;;;;N;;;;;
+05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
+05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
+05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
+05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
+05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
+05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
+05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
+05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
+05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
+05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
+05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
+05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
+05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
+05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
+05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
+05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
+05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
+05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
+05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
+05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
+05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
+05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
+05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
+05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
+05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
+05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
+05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
+05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
+05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
+0600;ARABIC NUMBER SIGN;Cf;0;AN;;;;;N;;;;;
+0601;ARABIC SIGN SANAH;Cf;0;AN;;;;;N;;;;;
+0602;ARABIC FOOTNOTE MARKER;Cf;0;AN;;;;;N;;;;;
+0603;ARABIC SIGN SAFHA;Cf;0;AN;;;;;N;;;;;
+0606;ARABIC-INDIC CUBE ROOT;Sm;0;ON;;;;;N;;;;;
+0607;ARABIC-INDIC FOURTH ROOT;Sm;0;ON;;;;;N;;;;;
+0608;ARABIC RAY;Sm;0;AL;;;;;N;;;;;
+0609;ARABIC-INDIC PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+060A;ARABIC-INDIC PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
+060B;AFGHANI SIGN;Sc;0;AL;;;;;N;;;;;
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
+060D;ARABIC DATE SEPARATOR;Po;0;AL;;;;;N;;;;;
+060E;ARABIC POETIC VERSE SIGN;So;0;ON;;;;;N;;;;;
+060F;ARABIC SIGN MISRA;So;0;ON;;;;;N;;;;;
+0610;ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;Mn;230;NSM;;;;;N;;;;;
+0611;ARABIC SIGN ALAYHE ASSALLAM;Mn;230;NSM;;;;;N;;;;;
+0612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;;
+0613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;;
+0614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;;
+0615;ARABIC SMALL HIGH TAH;Mn;230;NSM;;;;;N;;;;;
+0616;ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH;Mn;230;NSM;;;;;N;;;;;
+0617;ARABIC SMALL HIGH ZAIN;Mn;230;NSM;;;;;N;;;;;
+0618;ARABIC SMALL FATHA;Mn;30;NSM;;;;;N;;;;;
+0619;ARABIC SMALL DAMMA;Mn;31;NSM;;;;;N;;;;;
+061A;ARABIC SMALL KASRA;Mn;32;NSM;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
+061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;;
+061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
+0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;;
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
+0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;;
+0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;;
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
+062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;;
+062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;;
+062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;;
+062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;;
+062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;;
+062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;;
+0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;;
+0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;;
+0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;;
+0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;;
+0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;;
+0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;;
+0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;;
+0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;;
+0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;;
+063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;;
+063B;ARABIC LETTER KEHEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+063C;ARABIC LETTER KEHEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+063D;ARABIC LETTER FARSI YEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+063E;ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+063F;ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;;
+0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;;
+0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;;
+0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;;
+0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;;
+0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;;
+0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;;
+0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;;
+0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
+064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;;
+064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;;
+064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;;
+064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;;
+064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;;
+064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;;
+0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;;
+0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;;
+0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;;
+0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;;
+0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;;
+0656;ARABIC SUBSCRIPT ALEF;Mn;220;NSM;;;;;N;;;;;
+0657;ARABIC INVERTED DAMMA;Mn;230;NSM;;;;;N;;;;;
+0658;ARABIC MARK NOON GHUNNA;Mn;230;NSM;;;;;N;;;;;
+0659;ARABIC ZWARAKAY;Mn;230;NSM;;;;;N;;;;;
+065A;ARABIC VOWEL SIGN SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;;
+065B;ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;;
+065C;ARABIC VOWEL SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;;
+065D;ARABIC REVERSED DAMMA;Mn;230;NSM;;;;;N;;;;;
+065E;ARABIC FATHA WITH TWO DOTS;Mn;230;NSM;;;;;N;;;;;
+0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
+066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;;
+066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;;
+066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;;
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;;
+0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
+0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
+067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
+067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
+067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;;
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
+067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
+067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
+0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
+0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
+0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
+0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
+0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
+0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
+0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;;
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
+068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
+068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
+068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
+0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;;
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
+0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;;
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
+06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
+06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;
+06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;;
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;;
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
+06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
+06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;;
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;;
+06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
+06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;;
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;
+06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
+06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;;
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
+06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
+06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
+06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
+06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;;
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
+06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;;
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
+06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
+06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;;
+06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;;
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;;
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;;
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;;
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;;
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;;
+06DD;ARABIC END OF AYAH;Cf;0;AN;;;;;N;;;;;
+06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;;
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;;
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;;
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;;
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;;
+06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;;
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;;
+06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;;
+06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;;
+06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;;
+06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;;
+06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;;
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;;
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;;
+06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;;
+06EE;ARABIC LETTER DAL WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+06EF;ARABIC LETTER REH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
+06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
+06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
+06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
+06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
+06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
+06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
+06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
+06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
+06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
+06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;;
+06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;;
+06FF;ARABIC LETTER HEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;;
+0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;;
+0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;;
+0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;;
+0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;;
+070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;;
+070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;;
+070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;;
+070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;;
+0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;;
+0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;;
+0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;;
+0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;;
+0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;;
+0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;;
+0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;;
+0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;;
+0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;;
+071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;;
+071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;;
+071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;;
+071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;;
+071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;;
+0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;;
+0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;;
+0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;;
+0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;;
+0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;;
+0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;;
+0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;;
+0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;;
+0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;;
+0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;;
+072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;;
+072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;;
+072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;;
+072D;SYRIAC LETTER PERSIAN BHETH;Lo;0;AL;;;;;N;;;;;
+072E;SYRIAC LETTER PERSIAN GHAMAL;Lo;0;AL;;;;;N;;;;;
+072F;SYRIAC LETTER PERSIAN DHALATH;Lo;0;AL;;;;;N;;;;;
+0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;;
+0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;;
+073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;;
+073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;;
+0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;;
+0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;;
+0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;;
+0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;;
+074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;;
+074D;SYRIAC LETTER SOGDIAN ZHAIN;Lo;0;AL;;;;;N;;;;;
+074E;SYRIAC LETTER SOGDIAN KHAPH;Lo;0;AL;;;;;N;;;;;
+074F;SYRIAC LETTER SOGDIAN FE;Lo;0;AL;;;;;N;;;;;
+0750;ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW;Lo;0;AL;;;;;N;;;;;
+0751;ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0752;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
+0753;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0754;ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+0755;ARABIC LETTER BEH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;;
+0756;ARABIC LETTER BEH WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+0757;ARABIC LETTER HAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0758;ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
+0759;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
+075A;ARABIC LETTER DAL WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;;
+075B;ARABIC LETTER REH WITH STROKE;Lo;0;AL;;;;;N;;;;;
+075C;ARABIC LETTER SEEN WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+075D;ARABIC LETTER AIN WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+075E;ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE;Lo;0;AL;;;;;N;;;;;
+075F;ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
+0760;ARABIC LETTER FEH WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+0761;ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
+0762;ARABIC LETTER KEHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+0763;ARABIC LETTER KEHEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0764;ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
+0765;ARABIC LETTER MEEM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+0766;ARABIC LETTER MEEM WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+0767;ARABIC LETTER NOON WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+0768;ARABIC LETTER NOON WITH SMALL TAH;Lo;0;AL;;;;;N;;;;;
+0769;ARABIC LETTER NOON WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+076A;ARABIC LETTER LAM WITH BAR;Lo;0;AL;;;;;N;;;;;
+076B;ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
+076C;ARABIC LETTER REH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;;
+076D;ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
+076E;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW;Lo;0;AL;;;;;N;;;;;
+076F;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;
+0770;ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;
+0771;ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;
+0772;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;;
+0773;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
+0774;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
+0775;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
+0776;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
+0777;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;;
+0778;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
+0779;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
+077A;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
+077B;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
+077C;ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;;
+077D;ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE;Lo;0;AL;;;;;N;;;;;
+077E;ARABIC LETTER SEEN WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+077F;ARABIC LETTER KAF WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;;
+0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;;
+0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;;
+0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;;
+0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;;
+0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;;
+0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;;
+0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;;
+078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;;
+078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;;
+078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;;
+078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;;
+078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;;
+078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;;
+0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;;
+0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;;
+0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;;
+0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;;
+0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;;
+0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;;
+0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;;
+0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;;
+0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;;
+079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;;
+079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;;
+079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;;
+079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;;
+079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;;
+079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;;
+07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;;
+07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;;
+07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;;
+07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;;
+07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;;
+07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;;
+07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;;
+07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;;
+07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;;
+07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;;
+07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;;
+07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;;
+07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;;
+07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;;
+07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;;
+07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;;
+07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;;
+07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;;
+07C0;NKO DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;;
+07C1;NKO DIGIT ONE;Nd;0;R;;1;1;1;N;;;;;
+07C2;NKO DIGIT TWO;Nd;0;R;;2;2;2;N;;;;;
+07C3;NKO DIGIT THREE;Nd;0;R;;3;3;3;N;;;;;
+07C4;NKO DIGIT FOUR;Nd;0;R;;4;4;4;N;;;;;
+07C5;NKO DIGIT FIVE;Nd;0;R;;5;5;5;N;;;;;
+07C6;NKO DIGIT SIX;Nd;0;R;;6;6;6;N;;;;;
+07C7;NKO DIGIT SEVEN;Nd;0;R;;7;7;7;N;;;;;
+07C8;NKO DIGIT EIGHT;Nd;0;R;;8;8;8;N;;;;;
+07C9;NKO DIGIT NINE;Nd;0;R;;9;9;9;N;;;;;
+07CA;NKO LETTER A;Lo;0;R;;;;;N;;;;;
+07CB;NKO LETTER EE;Lo;0;R;;;;;N;;;;;
+07CC;NKO LETTER I;Lo;0;R;;;;;N;;;;;
+07CD;NKO LETTER E;Lo;0;R;;;;;N;;;;;
+07CE;NKO LETTER U;Lo;0;R;;;;;N;;;;;
+07CF;NKO LETTER OO;Lo;0;R;;;;;N;;;;;
+07D0;NKO LETTER O;Lo;0;R;;;;;N;;;;;
+07D1;NKO LETTER DAGBASINNA;Lo;0;R;;;;;N;;;;;
+07D2;NKO LETTER N;Lo;0;R;;;;;N;;;;;
+07D3;NKO LETTER BA;Lo;0;R;;;;;N;;;;;
+07D4;NKO LETTER PA;Lo;0;R;;;;;N;;;;;
+07D5;NKO LETTER TA;Lo;0;R;;;;;N;;;;;
+07D6;NKO LETTER JA;Lo;0;R;;;;;N;;;;;
+07D7;NKO LETTER CHA;Lo;0;R;;;;;N;;;;;
+07D8;NKO LETTER DA;Lo;0;R;;;;;N;;;;;
+07D9;NKO LETTER RA;Lo;0;R;;;;;N;;;;;
+07DA;NKO LETTER RRA;Lo;0;R;;;;;N;;;;;
+07DB;NKO LETTER SA;Lo;0;R;;;;;N;;;;;
+07DC;NKO LETTER GBA;Lo;0;R;;;;;N;;;;;
+07DD;NKO LETTER FA;Lo;0;R;;;;;N;;;;;
+07DE;NKO LETTER KA;Lo;0;R;;;;;N;;;;;
+07DF;NKO LETTER LA;Lo;0;R;;;;;N;;;;;
+07E0;NKO LETTER NA WOLOSO;Lo;0;R;;;;;N;;;;;
+07E1;NKO LETTER MA;Lo;0;R;;;;;N;;;;;
+07E2;NKO LETTER NYA;Lo;0;R;;;;;N;;;;;
+07E3;NKO LETTER NA;Lo;0;R;;;;;N;;;;;
+07E4;NKO LETTER HA;Lo;0;R;;;;;N;;;;;
+07E5;NKO LETTER WA;Lo;0;R;;;;;N;;;;;
+07E6;NKO LETTER YA;Lo;0;R;;;;;N;;;;;
+07E7;NKO LETTER NYA WOLOSO;Lo;0;R;;;;;N;;;;;
+07E8;NKO LETTER JONA JA;Lo;0;R;;;;;N;;;;;
+07E9;NKO LETTER JONA CHA;Lo;0;R;;;;;N;;;;;
+07EA;NKO LETTER JONA RA;Lo;0;R;;;;;N;;;;;
+07EB;NKO COMBINING SHORT HIGH TONE;Mn;230;NSM;;;;;N;;;;;
+07EC;NKO COMBINING SHORT LOW TONE;Mn;230;NSM;;;;;N;;;;;
+07ED;NKO COMBINING SHORT RISING TONE;Mn;230;NSM;;;;;N;;;;;
+07EE;NKO COMBINING LONG DESCENDING TONE;Mn;230;NSM;;;;;N;;;;;
+07EF;NKO COMBINING LONG HIGH TONE;Mn;230;NSM;;;;;N;;;;;
+07F0;NKO COMBINING LONG LOW TONE;Mn;230;NSM;;;;;N;;;;;
+07F1;NKO COMBINING LONG RISING TONE;Mn;230;NSM;;;;;N;;;;;
+07F2;NKO COMBINING NASALIZATION MARK;Mn;220;NSM;;;;;N;;;;;
+07F3;NKO COMBINING DOUBLE DOT ABOVE;Mn;230;NSM;;;;;N;;;;;
+07F4;NKO HIGH TONE APOSTROPHE;Lm;0;R;;;;;N;;;;;
+07F5;NKO LOW TONE APOSTROPHE;Lm;0;R;;;;;N;;;;;
+07F6;NKO SYMBOL OO DENNEN;So;0;ON;;;;;N;;;;;
+07F7;NKO SYMBOL GBAKURUNEN;Po;0;ON;;;;;N;;;;;
+07F8;NKO COMMA;Po;0;ON;;;;;N;;;;;
+07F9;NKO EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+07FA;NKO LAJANYALAN;Lm;0;R;;;;;N;;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0904;DEVANAGARI LETTER SHORT A;Lo;0;L;;;;;N;;;;;
+0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
+0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
+0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
+0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
+0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
+090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
+090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
+090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
+090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
+0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
+0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
+0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
+0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
+0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
+0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
+0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
+0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
+091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
+091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
+091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
+091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
+091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
+091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
+0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
+0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
+0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
+0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
+092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
+092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
+092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
+092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
+092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
+092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
+0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
+0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
+0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
+0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
+0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
+0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
+0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
+093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;;
+0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
+094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;;
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;;
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
+0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
+095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
+095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
+095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
+095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
+095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
+095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
+0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
+0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+0971;DEVANAGARI SIGN HIGH SPACING DOT;Lm;0;L;;;;;N;;;;;
+0972;DEVANAGARI LETTER CANDRA A;Lo;0;L;;;;;N;;;;;
+097B;DEVANAGARI LETTER GGA;Lo;0;L;;;;;N;;;;;
+097C;DEVANAGARI LETTER JJA;Lo;0;L;;;;;N;;;;;
+097D;DEVANAGARI LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
+097E;DEVANAGARI LETTER DDDA;Lo;0;L;;;;;N;;;;;
+097F;DEVANAGARI LETTER BBA;Lo;0;L;;;;;N;;;;;
+0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
+0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
+0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
+0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
+0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
+098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
+098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
+0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
+0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
+0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
+0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
+0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
+0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
+099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
+099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
+099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
+099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
+099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
+099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
+09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
+09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
+09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
+09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
+09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
+09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
+09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
+09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
+09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
+09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
+09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
+09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
+09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
+09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;;
+09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
+09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
+09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
+09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
+09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
+09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+09BD;BENGALI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
+09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
+09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+09CE;BENGALI LETTER KHANDA TA;Lo;0;L;;;;;N;;;;;
+09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
+09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
+09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
+09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;;
+09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;;
+09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;;
+09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;;
+09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;;
+09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;;
+09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;;
+09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;
+0A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
+0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
+0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
+0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
+0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
+0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
+0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
+0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
+0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
+0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
+0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
+0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
+0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
+0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
+0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
+0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
+0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;;
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
+0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;;
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0A51;GURMUKHI SIGN UDAAT;Mn;0;NSM;;;;;N;;;;;
+0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
+0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
+0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
+0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;;
+0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
+0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;;
+0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;;
+0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
+0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
+0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
+0A75;GURMUKHI SIGN YAKASH;Mn;0;NSM;;;;;N;;;;;
+0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
+0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
+0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
+0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
+0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0A8C;GUJARATI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
+0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
+0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
+0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
+0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
+0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
+0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
+0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
+0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
+0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
+0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
+0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
+0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
+0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
+0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
+0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
+0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
+0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0AE1;GUJARATI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0AE2;GUJARATI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0AE3;GUJARATI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
+0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
+0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
+0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
+0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
+0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
+0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
+0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
+0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
+0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
+0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
+0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
+0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
+0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
+0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
+0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
+0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
+0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
+0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
+0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
+0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
+0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
+0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
+0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
+0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0B35;ORIYA LETTER VA;Lo;0;L;;;;;N;;;;;
+0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
+0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
+0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0B44;ORIYA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
+0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
+0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
+0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
+0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
+0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
+0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;;
+0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0B62;ORIYA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0B63;ORIYA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
+0B71;ORIYA LETTER WA;Lo;0;L;;;;;N;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;;
+0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
+0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
+0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
+0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
+0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
+0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
+0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
+0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
+0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
+0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
+0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
+0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
+0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
+0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
+0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
+0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
+0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
+0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
+0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
+0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
+0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
+0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
+0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
+0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
+0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
+0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
+0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
+0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
+0BB6;TAMIL LETTER SHA;Lo;0;L;;;;;N;;;;;
+0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
+0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
+0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
+0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
+0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
+0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
+0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0BD0;TAMIL OM;Lo;0;L;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0BE6;TAMIL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
+0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0BF3;TAMIL DAY SIGN;So;0;ON;;;;;N;;Naal;;;
+0BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;Maatham;;;
+0BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;Varudam;;;
+0BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;Patru;;;
+0BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;Varavu;;;
+0BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;Merpadi;;;
+0BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;Rupai;;;
+0BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;Enn;;;
+0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
+0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
+0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
+0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
+0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
+0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
+0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
+0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
+0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
+0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
+0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
+0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
+0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
+0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
+0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
+0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
+0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
+0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
+0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
+0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
+0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
+0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
+0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
+0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
+0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
+0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
+0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
+0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
+0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
+0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
+0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
+0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
+0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
+0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
+0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
+0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
+0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
+0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
+0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
+0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
+0C3D;TELUGU SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;;
+0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;;
+0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;;
+0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;;
+0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;;
+0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0C63;TELUGU VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0C78;TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR;No;0;ON;;;;0;N;;;;;
+0C79;TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR;No;0;ON;;;;1;N;;;;;
+0C7A;TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR;No;0;ON;;;;2;N;;;;;
+0C7B;TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR;No;0;ON;;;;3;N;;;;;
+0C7C;TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR;No;0;ON;;;;1;N;;;;;
+0C7D;TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR;No;0;ON;;;;2;N;;;;;
+0C7E;TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR;No;0;ON;;;;3;N;;;;;
+0C7F;TELUGU SIGN TUUMU;So;0;L;;;;;N;;;;;
+0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
+0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
+0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
+0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
+0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
+0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
+0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
+0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
+0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
+0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
+0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
+0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
+0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
+0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
+0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
+0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
+0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
+0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
+0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
+0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
+0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
+0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
+0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
+0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
+0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
+0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
+0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
+0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
+0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
+0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
+0CBC;KANNADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0CBD;KANNADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;0;L;;;;;N;;;;;
+0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
+0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0CC6;KANNADA VOWEL SIGN E;Mn;0;L;;;;;N;;;;;
+0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
+0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
+0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
+0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;
+0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
+0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0CE2;KANNADA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0CE3;KANNADA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0CF1;KANNADA SIGN JIHVAMULIYA;So;0;ON;;;;;N;;;;;
+0CF2;KANNADA SIGN UPADHMANIYA;So;0;ON;;;;;N;;;;;
+0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
+0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
+0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
+0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
+0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
+0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
+0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
+0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
+0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
+0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
+0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
+0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
+0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
+0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
+0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
+0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
+0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
+0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
+0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
+0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
+0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
+0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
+0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
+0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
+0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
+0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
+0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
+0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
+0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
+0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
+0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
+0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
+0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
+0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
+0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
+0D3D;MALAYALAM SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0D44;MALAYALAM VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
+0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
+0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
+0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0D62;MALAYALAM VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0D63;MALAYALAM VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D70;MALAYALAM NUMBER TEN;No;0;L;;;;10;N;;;;;
+0D71;MALAYALAM NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0D72;MALAYALAM NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0D73;MALAYALAM FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;;
+0D74;MALAYALAM FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;;
+0D75;MALAYALAM FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;;
+0D79;MALAYALAM DATE MARK;So;0;L;;;;;N;;;;;
+0D7A;MALAYALAM LETTER CHILLU NN;Lo;0;L;;;;;N;;;;;
+0D7B;MALAYALAM LETTER CHILLU N;Lo;0;L;;;;;N;;;;;
+0D7C;MALAYALAM LETTER CHILLU RR;Lo;0;L;;;;;N;;;;;
+0D7D;MALAYALAM LETTER CHILLU L;Lo;0;L;;;;;N;;;;;
+0D7E;MALAYALAM LETTER CHILLU LL;Lo;0;L;;;;;N;;;;;
+0D7F;MALAYALAM LETTER CHILLU K;Lo;0;L;;;;;N;;;;;
+0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;;
+0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;;
+0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;;
+0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;;
+0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;;
+0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;;
+0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;;
+0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;;
+0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;;
+0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;;
+0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;;
+0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;;
+0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;;
+0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;;
+0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;;
+0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;;
+0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;;
+0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;;
+0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;;
+0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;;
+0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;;
+0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;;
+0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;;
+0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;;
+0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;;
+0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;;
+0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;;
+0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;;
+0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;;
+0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;;
+0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;;
+0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;;
+0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;;
+0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;;
+0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;;
+0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
+0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
+0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
+0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
+0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
+0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
+0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
+0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
+0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
+0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
+0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
+0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
+0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
+0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
+0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
+0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
+0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
+0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
+0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
+0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
+0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
+0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
+0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
+0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
+0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
+0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
+0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
+0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
+0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
+0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
+0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
+0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
+0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
+0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
+0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
+0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
+0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
+0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
+0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
+0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
+0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
+0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
+0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
+0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
+0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
+0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
+0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;;
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
+0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
+0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
+0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;
+0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;
+0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;
+0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;;
+0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;
+0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;
+0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
+0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
+0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
+0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
+0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
+0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;;
+0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;
+0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;
+0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;
+0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;;
+0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;
+0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;
+0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
+0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
+0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
+0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
+0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
+0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
+0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
+0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
+0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
+0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
+0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
+0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
+0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
+0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
+0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
+0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
+0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
+0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
+0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
+0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
+0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
+0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
+0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
+0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
+0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
+0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
+0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
+0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
+0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
+0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
+0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
+0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;;
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;;
+0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;;
+0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;;
+0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;;
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;;
+0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
+0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
+0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
+0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
+0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
+0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
+0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
+0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;;
+0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;;
+0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;;
+0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
+0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
+0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
+0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
+0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
+0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
+0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;;
+0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;;
+0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;;
+0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;;
+0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;;
+0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;;
+0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;;
+0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;;
+0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;;
+0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;;
+0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;tsek tar;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;;
+0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;;
+0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;;
+0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;;
+0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;;
+0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;;
+0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;;
+0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;;
+0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;;
+0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;;
+0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;;
+0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;;
+0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;;
+0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;;
+0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;;
+0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;;
+0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;;
+0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;;
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;;
+0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;;
+0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;Y;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;Y;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;Y;TIBETAN LEFT BRACE;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;Y;TIBETAN RIGHT BRACE;ang kang ye;;;
+0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;;
+0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;;
+0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
+0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
+0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
+0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
+0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
+0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
+0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
+0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;;
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;;
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;;
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;;
+0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
+0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
+0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
+0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
+0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
+0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
+0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
+0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
+0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
+0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
+0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
+0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
+0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
+0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
+0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
+0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;;
+0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
+0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;;
+0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
+0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;;
+0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
+0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
+0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
+0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
+0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;;
+0F6B;TIBETAN LETTER KKA;Lo;0;L;;;;;N;;;;;
+0F6C;TIBETAN LETTER RRA;Lo;0;L;;;;;N;;;;;
+0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;;
+0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;;
+0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;;
+0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;;
+0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;;
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;;
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;;
+0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;;
+0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;;
+0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;;
+0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;;
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;;
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;;
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;;
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;;
+0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;;
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;;
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;;
+0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;;
+0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;;
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;;
+0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;;
+0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;;
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;
+0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;;
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;;
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;;
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;;
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;;
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;;
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;;
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;;
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;;
+0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;
+0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;
+0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;;
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;;
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;;
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;;
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;
+0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;;
+0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;;
+0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;;
+0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;;
+0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;;
+0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;;
+0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;;
+0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;;
+0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;;
+0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;;
+0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;;
+0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;;
+0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;;
+0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;;
+0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;;
+0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;;
+0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;;
+0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;;
+0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;;
+0FCE;TIBETAN SIGN RDEL NAG RDEL DKAR;So;0;L;;;;;N;;dena deka;;;
+0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;;
+0FD0;TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Po;0;L;;;;;N;;ka shog gi go gyen;;;
+0FD1;TIBETAN MARK MNYAM YIG GI MGO RGYAN;Po;0;L;;;;;N;;nyam yig gi go gyen;;;
+0FD2;TIBETAN MARK NYIS TSHEG;Po;0;L;;;;;N;;nyi tsek;;;
+0FD3;TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA;Po;0;L;;;;;N;;da nying yik go dun ma;;;
+0FD4;TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA;Po;0;L;;;;;N;;da nying yik go kab ma;;;
+1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;;
+1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;;
+1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;;
+1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;;
+1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;;
+1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;;
+1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;;
+1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;;
+1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;;
+1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;;
+100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;;
+100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;;
+100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;;
+100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;;
+100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;;
+100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;;
+1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;;
+1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;;
+1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;;
+1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;;
+1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;;
+1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;;
+1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;;
+1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;;
+1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;;
+1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;;
+101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;;
+101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;;
+101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;;
+101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;;
+101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;;
+101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;;
+1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;;
+1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;;
+1022;MYANMAR LETTER SHAN A;Lo;0;L;;;;;N;;;;;
+1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;;
+1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;;
+1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;;
+1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;;
+1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;;
+1028;MYANMAR LETTER MON E;Lo;0;L;;;;;N;;;;;
+1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;;
+102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;;
+102B;MYANMAR VOWEL SIGN TALL AA;Mc;0;L;;;;;N;;;;;
+102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+1033;MYANMAR VOWEL SIGN MON II;Mn;0;NSM;;;;;N;;;;;
+1034;MYANMAR VOWEL SIGN MON O;Mn;0;NSM;;;;;N;;;;;
+1035;MYANMAR VOWEL SIGN E ABOVE;Mn;0;NSM;;;;;N;;;;;
+1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;;
+1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+103A;MYANMAR SIGN ASAT;Mn;9;NSM;;;;;N;;;;;
+103B;MYANMAR CONSONANT SIGN MEDIAL YA;Mc;0;L;;;;;N;;;;;
+103C;MYANMAR CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;;
+103D;MYANMAR CONSONANT SIGN MEDIAL WA;Mn;0;NSM;;;;;N;;;;;
+103E;MYANMAR CONSONANT SIGN MEDIAL HA;Mn;0;NSM;;;;;N;;;;;
+103F;MYANMAR LETTER GREAT SA;Lo;0;L;;;;;N;;;;;
+1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;;
+104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;;
+104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;;
+104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;;
+104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;;
+104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;;
+1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;;
+1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;;
+1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+105A;MYANMAR LETTER MON NGA;Lo;0;L;;;;;N;;;;;
+105B;MYANMAR LETTER MON JHA;Lo;0;L;;;;;N;;;;;
+105C;MYANMAR LETTER MON BBA;Lo;0;L;;;;;N;;;;;
+105D;MYANMAR LETTER MON BBE;Lo;0;L;;;;;N;;;;;
+105E;MYANMAR CONSONANT SIGN MON MEDIAL NA;Mn;0;NSM;;;;;N;;;;;
+105F;MYANMAR CONSONANT SIGN MON MEDIAL MA;Mn;0;NSM;;;;;N;;;;;
+1060;MYANMAR CONSONANT SIGN MON MEDIAL LA;Mn;0;NSM;;;;;N;;;;;
+1061;MYANMAR LETTER SGAW KAREN SHA;Lo;0;L;;;;;N;;;;;
+1062;MYANMAR VOWEL SIGN SGAW KAREN EU;Mc;0;L;;;;;N;;;;;
+1063;MYANMAR TONE MARK SGAW KAREN HATHI;Mc;0;L;;;;;N;;;;;
+1064;MYANMAR TONE MARK SGAW KAREN KE PHO;Mc;0;L;;;;;N;;;;;
+1065;MYANMAR LETTER WESTERN PWO KAREN THA;Lo;0;L;;;;;N;;;;;
+1066;MYANMAR LETTER WESTERN PWO KAREN PWA;Lo;0;L;;;;;N;;;;;
+1067;MYANMAR VOWEL SIGN WESTERN PWO KAREN EU;Mc;0;L;;;;;N;;;;;
+1068;MYANMAR VOWEL SIGN WESTERN PWO KAREN UE;Mc;0;L;;;;;N;;;;;
+1069;MYANMAR SIGN WESTERN PWO KAREN TONE-1;Mc;0;L;;;;;N;;;;;
+106A;MYANMAR SIGN WESTERN PWO KAREN TONE-2;Mc;0;L;;;;;N;;;;;
+106B;MYANMAR SIGN WESTERN PWO KAREN TONE-3;Mc;0;L;;;;;N;;;;;
+106C;MYANMAR SIGN WESTERN PWO KAREN TONE-4;Mc;0;L;;;;;N;;;;;
+106D;MYANMAR SIGN WESTERN PWO KAREN TONE-5;Mc;0;L;;;;;N;;;;;
+106E;MYANMAR LETTER EASTERN PWO KAREN NNA;Lo;0;L;;;;;N;;;;;
+106F;MYANMAR LETTER EASTERN PWO KAREN YWA;Lo;0;L;;;;;N;;;;;
+1070;MYANMAR LETTER EASTERN PWO KAREN GHWA;Lo;0;L;;;;;N;;;;;
+1071;MYANMAR VOWEL SIGN GEBA KAREN I;Mn;0;NSM;;;;;N;;;;;
+1072;MYANMAR VOWEL SIGN KAYAH OE;Mn;0;NSM;;;;;N;;;;;
+1073;MYANMAR VOWEL SIGN KAYAH U;Mn;0;NSM;;;;;N;;;;;
+1074;MYANMAR VOWEL SIGN KAYAH EE;Mn;0;NSM;;;;;N;;;;;
+1075;MYANMAR LETTER SHAN KA;Lo;0;L;;;;;N;;;;;
+1076;MYANMAR LETTER SHAN KHA;Lo;0;L;;;;;N;;;;;
+1077;MYANMAR LETTER SHAN GA;Lo;0;L;;;;;N;;;;;
+1078;MYANMAR LETTER SHAN CA;Lo;0;L;;;;;N;;;;;
+1079;MYANMAR LETTER SHAN ZA;Lo;0;L;;;;;N;;;;;
+107A;MYANMAR LETTER SHAN NYA;Lo;0;L;;;;;N;;;;;
+107B;MYANMAR LETTER SHAN DA;Lo;0;L;;;;;N;;;;;
+107C;MYANMAR LETTER SHAN NA;Lo;0;L;;;;;N;;;;;
+107D;MYANMAR LETTER SHAN PHA;Lo;0;L;;;;;N;;;;;
+107E;MYANMAR LETTER SHAN FA;Lo;0;L;;;;;N;;;;;
+107F;MYANMAR LETTER SHAN BA;Lo;0;L;;;;;N;;;;;
+1080;MYANMAR LETTER SHAN THA;Lo;0;L;;;;;N;;;;;
+1081;MYANMAR LETTER SHAN HA;Lo;0;L;;;;;N;;;;;
+1082;MYANMAR CONSONANT SIGN SHAN MEDIAL WA;Mn;0;NSM;;;;;N;;;;;
+1083;MYANMAR VOWEL SIGN SHAN AA;Mc;0;L;;;;;N;;;;;
+1084;MYANMAR VOWEL SIGN SHAN E;Mc;0;L;;;;;N;;;;;
+1085;MYANMAR VOWEL SIGN SHAN E ABOVE;Mn;0;NSM;;;;;N;;;;;
+1086;MYANMAR VOWEL SIGN SHAN FINAL Y;Mn;0;NSM;;;;;N;;;;;
+1087;MYANMAR SIGN SHAN TONE-2;Mc;0;L;;;;;N;;;;;
+1088;MYANMAR SIGN SHAN TONE-3;Mc;0;L;;;;;N;;;;;
+1089;MYANMAR SIGN SHAN TONE-5;Mc;0;L;;;;;N;;;;;
+108A;MYANMAR SIGN SHAN TONE-6;Mc;0;L;;;;;N;;;;;
+108B;MYANMAR SIGN SHAN COUNCIL TONE-2;Mc;0;L;;;;;N;;;;;
+108C;MYANMAR SIGN SHAN COUNCIL TONE-3;Mc;0;L;;;;;N;;;;;
+108D;MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE;Mn;220;NSM;;;;;N;;;;;
+108E;MYANMAR LETTER RUMAI PALAUNG FA;Lo;0;L;;;;;N;;;;;
+108F;MYANMAR SIGN RUMAI PALAUNG TONE-5;Mc;0;L;;;;;N;;;;;
+1090;MYANMAR SHAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1091;MYANMAR SHAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1092;MYANMAR SHAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1093;MYANMAR SHAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1094;MYANMAR SHAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1095;MYANMAR SHAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1096;MYANMAR SHAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1097;MYANMAR SHAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1098;MYANMAR SHAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1099;MYANMAR SHAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+109E;MYANMAR SYMBOL SHAN ONE;So;0;L;;;;;N;;;;;
+109F;MYANMAR SYMBOL SHAN EXCLAMATION;So;0;L;;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;2D00;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;2D01;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;2D02;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;2D03;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;2D04;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;2D05;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;2D06;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;2D07;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;2D08;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;2D09;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;2D0A;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;2D0B;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;2D0C;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;2D0D;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;2D0E;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;2D0F;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;2D10;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;2D11;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;2D12;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;2D13;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;2D14;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;2D15;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;2D16;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;2D17;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;2D18;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;2D19;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;2D1A;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;2D1B;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;2D1C;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;2D1D;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;2D1E;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;2D1F;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;2D20;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;2D21;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;2D22;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;2D23;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;2D24;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;2D25;
+10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
+10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
+10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
+10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
+10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
+10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
+10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
+10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
+10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
+10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
+10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
+10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
+10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
+10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
+10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
+10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
+10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
+10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
+10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
+10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
+10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
+10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
+10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
+10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
+10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
+10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
+10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
+10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
+10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
+10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
+10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
+10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
+10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
+10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
+10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
+10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
+10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
+10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
+10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
+10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;;
+10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;;
+10F9;GEORGIAN LETTER TURNED GAN;Lo;0;L;;;;;N;;;;;
+10FA;GEORGIAN LETTER AIN;Lo;0;L;;;;;N;;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L;<super> 10DC;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;;
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;;
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;;
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;;
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;;
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;;
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;;
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;;
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;;
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;;
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;;
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;;
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;;
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;;
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;;
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;;
+1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;;
+1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
+1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;;
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;;
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
+1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;;
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
+1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;;
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
+116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;;
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;;
+116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;;
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;;
+1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;;
+1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;;
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
+1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;;
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;;
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;;
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;;
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;;
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;;
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;;
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;;
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;;
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;;
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;;
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;;
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;;
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;;
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;;
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;;
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;;
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;;
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;;
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;;
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;;
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;;
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;;
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;;
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;;
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;;
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;;
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;;
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;;
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;;
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;;
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;;
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;;
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;;
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;;
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;;
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;;
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;;
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;;
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;;
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;;
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;;
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;;
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;;
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;;
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;;
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;;
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;;
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;;
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;;
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;;
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;;
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;;
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;;
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;;
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;;
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;;
+1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;;
+1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;;
+1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
+1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+1207;ETHIOPIC SYLLABLE HOA;Lo;0;L;;;;;N;;;;;
+1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;;
+120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
+120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;;
+1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;;
+1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;;
+1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;;
+1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;;
+1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;;
+1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;;
+1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;;
+1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;;
+1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;;
+121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
+121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;;
+1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;;
+1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;;
+1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;;
+1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;;
+1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;;
+1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;;
+1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;;
+1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;;
+1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;;
+122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;;
+122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;;
+122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;;
+1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;;
+1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
+1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;;
+1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
+123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;;
+123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
+123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;;
+1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;;
+1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;;
+1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;;
+1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;;
+1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+1247;ETHIOPIC SYLLABLE QOA;Lo;0;L;;;;;N;;;;;
+1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;;
+124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;;
+124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;;
+124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;;
+124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;;
+1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;;
+1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;;
+1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;;
+1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;;
+1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;;
+1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;;
+1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;;
+1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;;
+125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;;
+125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;;
+125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;;
+125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;;
+1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;;
+1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
+1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;;
+1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;;
+126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
+126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;;
+126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;;
+1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;;
+1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
+1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;;
+1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;;
+127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
+127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;;
+1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;;
+1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;;
+1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;;
+1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;;
+1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;;
+1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+1287;ETHIOPIC SYLLABLE XOA;Lo;0;L;;;;;N;;;;;
+1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;;
+128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;;
+128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;;
+128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;;
+128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;;
+1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;;
+1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
+1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;;
+1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
+1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;;
+129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
+129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
+129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;;
+12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;;
+12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;;
+12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;;
+12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;;
+12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;;
+12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;;
+12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;;
+12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;;
+12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;;
+12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
+12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+12AF;ETHIOPIC SYLLABLE KOA;Lo;0;L;;;;;N;;;;;
+12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;;
+12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;;
+12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;;
+12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;;
+12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;;
+12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;;
+12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;;
+12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;;
+12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;;
+12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;;
+12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;;
+12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;;
+12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;;
+12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;;
+12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;;
+12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;;
+12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;;
+12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;;
+12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;;
+12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
+12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+12CF;ETHIOPIC SYLLABLE WOA;Lo;0;L;;;;;N;;;;;
+12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;;
+12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;;
+12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;;
+12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;;
+12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;;
+12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;;
+12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;;
+12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;;
+12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
+12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;;
+12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
+12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;;
+12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
+12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;;
+12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;;
+12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;;
+12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
+12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;;
+12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+12EF;ETHIOPIC SYLLABLE YOA;Lo;0;L;;;;;N;;;;;
+12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;;
+12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
+12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;;
+12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;;
+12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;;
+12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;;
+1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;;
+1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;;
+1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
+1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;;
+1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;;
+1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;;
+130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
+130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+130F;ETHIOPIC SYLLABLE GOA;Lo;0;L;;;;;N;;;;;
+1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;;
+1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;;
+1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;;
+1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;;
+1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;;
+1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;;
+131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;;
+131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+131F;ETHIOPIC SYLLABLE GGWAA;Lo;0;L;;;;;N;;;;;
+1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;;
+1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;;
+1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;;
+1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;;
+1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
+1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;;
+1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;;
+1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;;
+1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;;
+132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;;
+132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;;
+132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;;
+1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;;
+1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;;
+1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;;
+1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;;
+1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;;
+1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;;
+1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;;
+1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;;
+1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;;
+1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;;
+133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;;
+133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;;
+133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;;
+133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;;
+133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;;
+133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;;
+1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;;
+1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;;
+1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;;
+1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;;
+1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;;
+1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;;
+1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;;
+1347;ETHIOPIC SYLLABLE TZOA;Lo;0;L;;;;;N;;;;;
+1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;;
+134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
+134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;;
+134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;;
+1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;;
+1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
+1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;;
+1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;;
+1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;;
+1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;;
+135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;;
+135F;ETHIOPIC COMBINING GEMINATION MARK;Mn;230;NSM;;;;;N;;;;;
+1360;ETHIOPIC SECTION MARK;So;0;L;;;;;N;;;;;
+1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;;
+1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;;
+1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;;
+1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;;
+1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;;
+1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;;
+1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;;
+1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1369;ETHIOPIC DIGIT ONE;No;0;L;;;1;1;N;;;;;
+136A;ETHIOPIC DIGIT TWO;No;0;L;;;2;2;N;;;;;
+136B;ETHIOPIC DIGIT THREE;No;0;L;;;3;3;N;;;;;
+136C;ETHIOPIC DIGIT FOUR;No;0;L;;;4;4;N;;;;;
+136D;ETHIOPIC DIGIT FIVE;No;0;L;;;5;5;N;;;;;
+136E;ETHIOPIC DIGIT SIX;No;0;L;;;6;6;N;;;;;
+136F;ETHIOPIC DIGIT SEVEN;No;0;L;;;7;7;N;;;;;
+1370;ETHIOPIC DIGIT EIGHT;No;0;L;;;8;8;N;;;;;
+1371;ETHIOPIC DIGIT NINE;No;0;L;;;9;9;N;;;;;
+1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;;
+1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;;
+1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;;
+1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;;
+1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;;
+1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;;
+1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
+1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
+137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;;
+137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;;
+137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
+1380;ETHIOPIC SYLLABLE SEBATBEIT MWA;Lo;0;L;;;;;N;;;;;
+1381;ETHIOPIC SYLLABLE MWI;Lo;0;L;;;;;N;;;;;
+1382;ETHIOPIC SYLLABLE MWEE;Lo;0;L;;;;;N;;;;;
+1383;ETHIOPIC SYLLABLE MWE;Lo;0;L;;;;;N;;;;;
+1384;ETHIOPIC SYLLABLE SEBATBEIT BWA;Lo;0;L;;;;;N;;;;;
+1385;ETHIOPIC SYLLABLE BWI;Lo;0;L;;;;;N;;;;;
+1386;ETHIOPIC SYLLABLE BWEE;Lo;0;L;;;;;N;;;;;
+1387;ETHIOPIC SYLLABLE BWE;Lo;0;L;;;;;N;;;;;
+1388;ETHIOPIC SYLLABLE SEBATBEIT FWA;Lo;0;L;;;;;N;;;;;
+1389;ETHIOPIC SYLLABLE FWI;Lo;0;L;;;;;N;;;;;
+138A;ETHIOPIC SYLLABLE FWEE;Lo;0;L;;;;;N;;;;;
+138B;ETHIOPIC SYLLABLE FWE;Lo;0;L;;;;;N;;;;;
+138C;ETHIOPIC SYLLABLE SEBATBEIT PWA;Lo;0;L;;;;;N;;;;;
+138D;ETHIOPIC SYLLABLE PWI;Lo;0;L;;;;;N;;;;;
+138E;ETHIOPIC SYLLABLE PWEE;Lo;0;L;;;;;N;;;;;
+138F;ETHIOPIC SYLLABLE PWE;Lo;0;L;;;;;N;;;;;
+1390;ETHIOPIC TONAL MARK YIZET;So;0;ON;;;;;N;;;;;
+1391;ETHIOPIC TONAL MARK DERET;So;0;ON;;;;;N;;;;;
+1392;ETHIOPIC TONAL MARK RIKRIK;So;0;ON;;;;;N;;;;;
+1393;ETHIOPIC TONAL MARK SHORT RIKRIK;So;0;ON;;;;;N;;;;;
+1394;ETHIOPIC TONAL MARK DIFAT;So;0;ON;;;;;N;;;;;
+1395;ETHIOPIC TONAL MARK KENAT;So;0;ON;;;;;N;;;;;
+1396;ETHIOPIC TONAL MARK CHIRET;So;0;ON;;;;;N;;;;;
+1397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;;
+1398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;;
+1399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;N;;;;;
+13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;;
+13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;;
+13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;;
+13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;;
+13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;;
+13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;;
+13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;;
+13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;;
+13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;;
+13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;;
+13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;;
+13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;;
+13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;;
+13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;;
+13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;;
+13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;;
+13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;;
+13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;;
+13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;;
+13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;;
+13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;;
+13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;;
+13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;;
+13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;;
+13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;;
+13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;;
+13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;;
+13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;;
+13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;;
+13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;;
+13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;;
+13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;;
+13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;;
+13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;;
+13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;;
+13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;;
+13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;;
+13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;;
+13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;;
+13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;;
+13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;;
+13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;;
+13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;;
+13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;;
+13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;;
+13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;;
+13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;;
+13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;;
+13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;;
+13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;;
+13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;;
+13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;;
+13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;;
+13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;;
+13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;;
+13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;;
+13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;;
+13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;;
+13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;;
+13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;;
+13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;;
+13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;;
+13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;;
+13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;;
+13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;;
+13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;;
+13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;;
+13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;;
+13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;;
+13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;;
+13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;;
+13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;;
+13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;;
+13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;;
+13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;;
+13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;;
+13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;;
+13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;;
+13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;;
+13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;;
+13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;;
+13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;;
+13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;;
+13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;;
+13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;;
+1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;;
+1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;;
+1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;;
+1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;;
+1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;;
+1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;;
+1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;;
+1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;;
+1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;;
+140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;;
+140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;;
+140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;;
+140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;;
+140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;;
+140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;;
+1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;;
+1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;;
+1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;;
+1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;;
+1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;;
+1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;;
+1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;;
+1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;;
+1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;;
+1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;;
+141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;;
+141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;;
+141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;;
+141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;;
+141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
+141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;;
+1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;;
+1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;;
+1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;;
+1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;;
+1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;;
+1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;;
+1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;;
+1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;;
+1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;;
+1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;;
+142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;;
+142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;;
+142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;;
+142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;;
+142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;;
+142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;;
+1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;;
+1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;;
+1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;;
+1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;;
+1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;;
+1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;;
+1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;;
+1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;;
+1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;;
+1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;;
+143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;;
+143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;;
+143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;;
+143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;;
+143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;;
+143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;;
+1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;;
+1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;;
+1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;;
+1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;;
+1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;;
+1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;;
+1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;;
+1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;;
+144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;;
+144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;;
+144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;;
+144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;;
+144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;;
+144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;;
+1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;;
+1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;;
+1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;;
+1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;;
+1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;;
+1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;;
+1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;;
+1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;;
+1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;;
+1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;;
+145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;;
+145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;;
+145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;;
+145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;;
+145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;;
+145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;;
+1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;;
+1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;;
+1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;;
+1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;;
+1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;;
+1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;;
+1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;;
+1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;;
+1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;;
+1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;;
+146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;;
+146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;;
+146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;;
+146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;;
+146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;;
+146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;;
+1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;;
+1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;;
+1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;;
+1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;;
+1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;;
+1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;;
+1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;;
+1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;;
+1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;;
+1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;;
+147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;;
+147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;;
+147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;;
+147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;;
+147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;;
+147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;;
+1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;;
+1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;;
+1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;;
+1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;;
+1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;;
+1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;;
+1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;;
+1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;;
+1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;;
+1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;;
+148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;;
+148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;;
+148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;;
+148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;;
+148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;;
+148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;;
+1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;;
+1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;;
+1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;;
+1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;;
+1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;;
+1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;;
+1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;;
+1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;;
+1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;;
+1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;;
+149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;;
+149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;;
+149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;;
+149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;;
+149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;;
+149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;;
+14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;;
+14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;;
+14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;;
+14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;;
+14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;;
+14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;;
+14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;;
+14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;;
+14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;;
+14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;;
+14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;;
+14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;;
+14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;;
+14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;;
+14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;;
+14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;;
+14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;;
+14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;;
+14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;;
+14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;;
+14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;;
+14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;;
+14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;;
+14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;;
+14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;;
+14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;;
+14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;;
+14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;;
+14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;;
+14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;;
+14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;;
+14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;;
+14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;;
+14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;;
+14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;;
+14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;;
+14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;;
+14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;;
+14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;;
+14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;;
+14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;;
+14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;;
+14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;;
+14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;;
+14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;;
+14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;;
+14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;;
+14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;;
+14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;;
+14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;;
+14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;;
+14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;;
+14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;;
+14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;;
+14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;;
+14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;;
+14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;;
+14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;;
+14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;;
+14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;;
+14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;;
+14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;;
+14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;;
+14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;;
+14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;;
+14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;;
+14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;;
+14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;;
+14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;;
+14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;;
+14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;;
+14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;;
+14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;;
+14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;;
+14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;;
+14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;;
+14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;;
+14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;;
+14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;;
+14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;;
+14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;;
+14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;;
+14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;;
+14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;;
+14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;;
+14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;;
+14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;;
+14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;;
+14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;;
+14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;;
+14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;;
+14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;;
+14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;;
+14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;;
+14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;;
+14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;;
+1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;;
+1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;;
+1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;;
+1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;;
+1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;;
+1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;;
+1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;;
+1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;;
+1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;;
+1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;;
+150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;;
+150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;;
+150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;;
+150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;;
+150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;;
+150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;;
+1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;;
+1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;;
+1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;;
+1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;;
+1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;;
+1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;;
+1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;;
+1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;;
+1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;;
+1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;;
+151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;;
+151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;;
+151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;;
+151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;;
+151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;;
+151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;;
+1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;;
+1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;;
+1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;;
+1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;;
+1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;;
+1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;;
+1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;;
+1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;;
+1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;;
+1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;;
+152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;;
+152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;;
+152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;;
+152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;;
+152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;;
+152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;;
+1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;;
+1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;;
+1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;;
+1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;;
+1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;;
+1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;;
+1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;;
+1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;;
+1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;;
+1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;;
+153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;;
+153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;;
+153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;;
+153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;;
+153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;;
+153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;;
+1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;;
+1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;;
+1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;;
+1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;;
+1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;;
+1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;;
+1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;;
+1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;;
+1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;;
+1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;;
+154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;;
+154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;;
+154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;;
+154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;;
+154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;;
+154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;;
+1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;;
+1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;;
+1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;;
+1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;;
+1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;;
+1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;;
+1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;;
+1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;;
+1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;;
+1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;;
+155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;;
+155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;;
+155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;;
+155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;;
+155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;;
+155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;;
+1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;;
+1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;;
+1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;;
+1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;;
+1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;;
+1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;;
+1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;;
+1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;;
+1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;;
+1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;;
+156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;;
+156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;;
+156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;;
+156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;;
+156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;;
+156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;;
+1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;;
+1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;;
+1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;;
+1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;;
+1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;;
+1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;;
+1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;;
+1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;;
+1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;;
+1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;;
+157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;;
+157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;;
+157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;;
+157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;;
+157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;;
+157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;;
+1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;;
+1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;;
+1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;;
+1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;;
+1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;;
+1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;;
+1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;;
+1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;;
+1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;;
+1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;;
+158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;;
+158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;;
+158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;;
+158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;;
+158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;;
+158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;;
+1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;;
+1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;;
+1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;;
+1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;;
+1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;;
+1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;;
+1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;;
+1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;;
+1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;;
+1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;;
+159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;;
+159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;;
+159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;;
+159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;;
+159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;;
+159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;;
+15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;;
+15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;;
+15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;;
+15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;;
+15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;;
+15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;;
+15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;;
+15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;;
+15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;;
+15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;;
+15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;;
+15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;;
+15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;;
+15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;;
+15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;;
+15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;;
+15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;;
+15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;;
+15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;;
+15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;;
+15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;;
+15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;;
+15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;;
+15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;;
+15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;;
+15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;;
+15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;;
+15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;;
+15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;;
+15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;;
+15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;;
+15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;;
+15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;;
+15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;;
+15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;;
+15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;;
+15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;;
+15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;;
+15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;;
+15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;;
+15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;;
+15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;;
+15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;;
+15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;;
+15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;;
+15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;;
+15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;;
+15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;;
+15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;;
+15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;;
+15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;;
+15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;;
+15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;;
+15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;;
+15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;;
+15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;;
+15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;;
+15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;;
+15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;;
+15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;;
+15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;;
+15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;;
+15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;;
+15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;;
+15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;;
+15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;;
+15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;;
+15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;;
+15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;;
+15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;;
+15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;;
+15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;;
+15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;;
+15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;;
+15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;;
+15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;;
+15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;;
+15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;;
+15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;;
+15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;;
+15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;;
+15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;;
+15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;;
+15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;;
+15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;;
+15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;;
+15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;;
+15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;;
+15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;;
+15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;;
+15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;;
+15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;;
+15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;;
+15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;;
+15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;;
+15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;;
+1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;;
+1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;;
+1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;;
+1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;;
+1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;;
+1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;;
+1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;;
+1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;;
+1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;;
+1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;;
+160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;;
+160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;;
+160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;;
+160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;;
+160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;;
+160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;;
+1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;;
+1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;;
+1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;;
+1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;;
+1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;;
+1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;;
+1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;;
+1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;;
+1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;;
+1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;;
+161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;;
+161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;;
+161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;;
+161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;;
+161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;;
+161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;;
+1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;;
+1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;;
+1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;;
+1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;;
+1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;;
+1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;;
+1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;;
+1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;;
+1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;;
+1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;;
+162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;;
+162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;;
+162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;;
+162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;;
+162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;;
+162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;;
+1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;;
+1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;;
+1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;;
+1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;;
+1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;;
+1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;;
+1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;;
+1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;;
+1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;;
+1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;;
+163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;;
+163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;;
+163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;;
+163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;;
+163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;;
+163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;;
+1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;;
+1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;;
+1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;;
+1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;;
+1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;;
+1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;;
+1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;;
+1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;;
+1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;;
+1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;;
+164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;;
+164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;;
+164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;;
+164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;;
+164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;;
+164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;;
+1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;;
+1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;;
+1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;;
+1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;;
+1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;;
+1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;;
+1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;;
+1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;;
+1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;;
+1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;;
+165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;;
+165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;;
+165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;;
+165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;;
+165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;;
+165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;;
+1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;;
+1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;;
+1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;;
+1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;;
+1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;;
+1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;;
+1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;;
+1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;;
+1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;;
+1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;;
+166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;;
+166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;;
+166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;;
+166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;;
+166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;;
+166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;;
+1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;;
+1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;;
+1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;;
+1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;;
+1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;;
+1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;;
+1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;;
+1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;;
+1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;;
+1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;;
+1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;;
+1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;;
+1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;;
+1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;;
+1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;;
+1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;;
+1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;;
+168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;;
+168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;;
+168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;;
+168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;;
+168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;;
+168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;;
+1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;;
+1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;;
+1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;;
+1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;;
+1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;;
+1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;;
+1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;;
+1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;;
+1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;;
+1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;;
+169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;;
+169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;Y;;;;;
+169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;Y;;;;;
+16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;;
+16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;;
+16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;;
+16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;;
+16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;;
+16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;;
+16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;;
+16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;;
+16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;;
+16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;;
+16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;;
+16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;;
+16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;;
+16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;;
+16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;;
+16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;;
+16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;;
+16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;;
+16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;;
+16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;;
+16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;;
+16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;;
+16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;;
+16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;;
+16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;;
+16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;;
+16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;;
+16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;;
+16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;;
+16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;;
+16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;;
+16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;;
+16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;;
+16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;;
+16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;;
+16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;;
+16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;;
+16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;;
+16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;;
+16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;;
+16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;;
+16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;;
+16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;;
+16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;;
+16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;;
+16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;;
+16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;;
+16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;;
+16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;;
+16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;;
+16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;;
+16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;;
+16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;;
+16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;;
+16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;;
+16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;;
+16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;;
+16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;;
+16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;;
+16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;;
+16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;;
+16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;;
+16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;;
+16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;;
+16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;;
+16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;;
+16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;;
+16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;;
+16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;;
+16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;;
+16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;;
+16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;golden number 17;;;
+16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;golden number 18;;;
+16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;golden number 19;;;
+1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;;
+1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;;
+1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;;
+1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;;
+1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;;
+1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;;
+1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;;
+1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;;
+1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;;
+1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;;
+170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;;
+170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;;
+170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;;
+170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;;
+170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;;
+1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;;
+1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;;
+1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;;
+1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;;
+1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;;
+1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;;
+1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;;
+1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;;
+1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;;
+1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;;
+1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;;
+1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;;
+172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;;
+172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;;
+172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;;
+172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;;
+172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;;
+172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;;
+1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;;
+1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;;
+1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;;
+1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;;
+1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;;
+1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;;
+1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;;
+1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;;
+1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;;
+1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;;
+1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;;
+1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;;
+1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;;
+174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;;
+174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;;
+174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;;
+174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;;
+174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;;
+174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;;
+1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;;
+1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;;
+1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;;
+1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;;
+1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;;
+1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;;
+1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;;
+1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;;
+1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;;
+1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;;
+1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;;
+1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;;
+176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;;
+176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;;
+176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;;
+176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;;
+176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;;
+1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;;
+1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;;
+1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;;
+1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;;
+1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;;
+1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;;
+1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;;
+1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;;
+1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;;
+1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;;
+1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;;
+178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;;
+178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;;
+178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;;
+178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;;
+178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;;
+178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;;
+1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;;
+1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;;
+1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;;
+1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;;
+1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;;
+1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;;
+1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;;
+1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;;
+1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;;
+1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;;
+179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;;
+179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;;
+179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;;
+179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;;
+179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;;
+179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;;
+17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;;
+17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;;
+17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;;
+17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;*;;;
+17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;*;;;
+17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;;
+17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;;
+17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;;
+17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;;
+17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;;
+17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;;
+17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;;
+17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;;
+17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;;
+17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;;
+17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;;
+17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;;
+17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;;
+17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;;
+17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;;
+17B4;KHMER VOWEL INHERENT AQ;Cf;0;L;;;;;N;;*;;;
+17B5;KHMER VOWEL INHERENT AA;Cf;0;L;;;;;N;;*;;;
+17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;;
+17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;;
+17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;;
+17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;;
+17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;;
+17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;;
+17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;;
+17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;;
+17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;;
+17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;;
+17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;;
+17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;;
+17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;;
+17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;;
+17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;;
+17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;;
+17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;;
+17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;*;;;
+17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;;
+17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;;
+17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;;
+17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;;
+17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;*;;;
+17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;;
+17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;;
+17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;;
+17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;;
+17DD;KHMER SIGN ATTHACAN;Mn;230;NSM;;;;;N;;;;;
+17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+17F0;KHMER SYMBOL LEK ATTAK SON;No;0;ON;;;;0;N;;;;;
+17F1;KHMER SYMBOL LEK ATTAK MUOY;No;0;ON;;;;1;N;;;;;
+17F2;KHMER SYMBOL LEK ATTAK PII;No;0;ON;;;;2;N;;;;;
+17F3;KHMER SYMBOL LEK ATTAK BEI;No;0;ON;;;;3;N;;;;;
+17F4;KHMER SYMBOL LEK ATTAK BUON;No;0;ON;;;;4;N;;;;;
+17F5;KHMER SYMBOL LEK ATTAK PRAM;No;0;ON;;;;5;N;;;;;
+17F6;KHMER SYMBOL LEK ATTAK PRAM-MUOY;No;0;ON;;;;6;N;;;;;
+17F7;KHMER SYMBOL LEK ATTAK PRAM-PII;No;0;ON;;;;7;N;;;;;
+17F8;KHMER SYMBOL LEK ATTAK PRAM-BEI;No;0;ON;;;;8;N;;;;;
+17F9;KHMER SYMBOL LEK ATTAK PRAM-BUON;No;0;ON;;;;9;N;;;;;
+1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;;
+1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;;
+1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;;
+1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;;
+1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;;
+1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;;
+1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;;
+1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;;
+1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;;
+180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;;
+180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;;
+180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;;
+180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;;
+180E;MONGOLIAN VOWEL SEPARATOR;Zs;0;WS;;;;;N;;;;;
+1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;;
+1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;;
+1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;;
+1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;;
+1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;;
+1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;;
+1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;;
+1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;;
+1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;;
+1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;;
+182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;;
+182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;;
+182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;;
+182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;;
+182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;;
+182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;;
+1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;;
+1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;;
+1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;;
+1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;;
+1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;;
+1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;;
+1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;;
+1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;;
+183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;;
+183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;;
+183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;;
+1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;;
+1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;;
+1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;;
+1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;;
+1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;;
+1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;;
+1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;;
+1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;;
+1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;;
+1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;;
+184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;;
+184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;;
+184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;;
+184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;;
+184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;;
+184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;;
+1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;;
+1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;;
+1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;;
+1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;;
+1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;;
+1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;;
+1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;;
+1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;;
+1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;;
+1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;;
+185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;;
+185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;;
+185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;;
+185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;;
+185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;;
+185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;;
+1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;;
+1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;;
+1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;;
+1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;;
+1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;;
+1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;;
+1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;;
+1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;;
+1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;;
+1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;;
+186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;;
+186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;;
+186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;;
+186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;;
+186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;;
+186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;;
+1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;;
+1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;;
+1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;;
+1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;;
+1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;;
+1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;;
+1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;;
+1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;;
+1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;;
+1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;;
+1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;
+1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;;
+1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;;
+1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;;
+1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;;
+1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;;
+1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;;
+1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;;
+188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;;
+188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;;
+188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;;
+188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;;
+1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;;
+1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;;
+1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;;
+1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;;
+1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;;
+189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;;
+189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;;
+189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;;
+18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;;
+18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;;
+18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;;
+18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;;
+18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;;
+18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;;
+18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;;
+18AA;MONGOLIAN LETTER MANCHU ALI GALI LHA;Lo;0;L;;;;;N;;;;;
+1900;LIMBU VOWEL-CARRIER LETTER;Lo;0;L;;;;;N;;;;;
+1901;LIMBU LETTER KA;Lo;0;L;;;;;N;;;;;
+1902;LIMBU LETTER KHA;Lo;0;L;;;;;N;;;;;
+1903;LIMBU LETTER GA;Lo;0;L;;;;;N;;;;;
+1904;LIMBU LETTER GHA;Lo;0;L;;;;;N;;;;;
+1905;LIMBU LETTER NGA;Lo;0;L;;;;;N;;;;;
+1906;LIMBU LETTER CA;Lo;0;L;;;;;N;;;;;
+1907;LIMBU LETTER CHA;Lo;0;L;;;;;N;;;;;
+1908;LIMBU LETTER JA;Lo;0;L;;;;;N;;;;;
+1909;LIMBU LETTER JHA;Lo;0;L;;;;;N;;;;;
+190A;LIMBU LETTER YAN;Lo;0;L;;;;;N;;;;;
+190B;LIMBU LETTER TA;Lo;0;L;;;;;N;;;;;
+190C;LIMBU LETTER THA;Lo;0;L;;;;;N;;;;;
+190D;LIMBU LETTER DA;Lo;0;L;;;;;N;;;;;
+190E;LIMBU LETTER DHA;Lo;0;L;;;;;N;;;;;
+190F;LIMBU LETTER NA;Lo;0;L;;;;;N;;;;;
+1910;LIMBU LETTER PA;Lo;0;L;;;;;N;;;;;
+1911;LIMBU LETTER PHA;Lo;0;L;;;;;N;;;;;
+1912;LIMBU LETTER BA;Lo;0;L;;;;;N;;;;;
+1913;LIMBU LETTER BHA;Lo;0;L;;;;;N;;;;;
+1914;LIMBU LETTER MA;Lo;0;L;;;;;N;;;;;
+1915;LIMBU LETTER YA;Lo;0;L;;;;;N;;;;;
+1916;LIMBU LETTER RA;Lo;0;L;;;;;N;;;;;
+1917;LIMBU LETTER LA;Lo;0;L;;;;;N;;;;;
+1918;LIMBU LETTER WA;Lo;0;L;;;;;N;;;;;
+1919;LIMBU LETTER SHA;Lo;0;L;;;;;N;;;;;
+191A;LIMBU LETTER SSA;Lo;0;L;;;;;N;;;;;
+191B;LIMBU LETTER SA;Lo;0;L;;;;;N;;;;;
+191C;LIMBU LETTER HA;Lo;0;L;;;;;N;;;;;
+1920;LIMBU VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;;
+1921;LIMBU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1922;LIMBU VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1923;LIMBU VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+1924;LIMBU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+1925;LIMBU VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+1926;LIMBU VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+1927;LIMBU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+1928;LIMBU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+1929;LIMBU SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;;
+192A;LIMBU SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;;
+192B;LIMBU SUBJOINED LETTER WA;Mc;0;L;;;;;N;;;;;
+1930;LIMBU SMALL LETTER KA;Mc;0;L;;;;;N;;;;;
+1931;LIMBU SMALL LETTER NGA;Mc;0;L;;;;;N;;;;;
+1932;LIMBU SMALL LETTER ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1933;LIMBU SMALL LETTER TA;Mc;0;L;;;;;N;;;;;
+1934;LIMBU SMALL LETTER NA;Mc;0;L;;;;;N;;;;;
+1935;LIMBU SMALL LETTER PA;Mc;0;L;;;;;N;;;;;
+1936;LIMBU SMALL LETTER MA;Mc;0;L;;;;;N;;;;;
+1937;LIMBU SMALL LETTER RA;Mc;0;L;;;;;N;;;;;
+1938;LIMBU SMALL LETTER LA;Mc;0;L;;;;;N;;;;;
+1939;LIMBU SIGN MUKPHRENG;Mn;222;NSM;;;;;N;;;;;
+193A;LIMBU SIGN KEMPHRENG;Mn;230;NSM;;;;;N;;;;;
+193B;LIMBU SIGN SA-I;Mn;220;NSM;;;;;N;;;;;
+1940;LIMBU SIGN LOO;So;0;ON;;;;;N;;;;;
+1944;LIMBU EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+1945;LIMBU QUESTION MARK;Po;0;ON;;;;;N;;;;;
+1946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1950;TAI LE LETTER KA;Lo;0;L;;;;;N;;;;;
+1951;TAI LE LETTER XA;Lo;0;L;;;;;N;;;;;
+1952;TAI LE LETTER NGA;Lo;0;L;;;;;N;;;;;
+1953;TAI LE LETTER TSA;Lo;0;L;;;;;N;;;;;
+1954;TAI LE LETTER SA;Lo;0;L;;;;;N;;;;;
+1955;TAI LE LETTER YA;Lo;0;L;;;;;N;;;;;
+1956;TAI LE LETTER TA;Lo;0;L;;;;;N;;;;;
+1957;TAI LE LETTER THA;Lo;0;L;;;;;N;;;;;
+1958;TAI LE LETTER LA;Lo;0;L;;;;;N;;;;;
+1959;TAI LE LETTER PA;Lo;0;L;;;;;N;;;;;
+195A;TAI LE LETTER PHA;Lo;0;L;;;;;N;;;;;
+195B;TAI LE LETTER MA;Lo;0;L;;;;;N;;;;;
+195C;TAI LE LETTER FA;Lo;0;L;;;;;N;;;;;
+195D;TAI LE LETTER VA;Lo;0;L;;;;;N;;;;;
+195E;TAI LE LETTER HA;Lo;0;L;;;;;N;;;;;
+195F;TAI LE LETTER QA;Lo;0;L;;;;;N;;;;;
+1960;TAI LE LETTER KHA;Lo;0;L;;;;;N;;;;;
+1961;TAI LE LETTER TSHA;Lo;0;L;;;;;N;;;;;
+1962;TAI LE LETTER NA;Lo;0;L;;;;;N;;;;;
+1963;TAI LE LETTER A;Lo;0;L;;;;;N;;;;;
+1964;TAI LE LETTER I;Lo;0;L;;;;;N;;;;;
+1965;TAI LE LETTER EE;Lo;0;L;;;;;N;;;;;
+1966;TAI LE LETTER EH;Lo;0;L;;;;;N;;;;;
+1967;TAI LE LETTER U;Lo;0;L;;;;;N;;;;;
+1968;TAI LE LETTER OO;Lo;0;L;;;;;N;;;;;
+1969;TAI LE LETTER O;Lo;0;L;;;;;N;;;;;
+196A;TAI LE LETTER UE;Lo;0;L;;;;;N;;;;;
+196B;TAI LE LETTER E;Lo;0;L;;;;;N;;;;;
+196C;TAI LE LETTER AUE;Lo;0;L;;;;;N;;;;;
+196D;TAI LE LETTER AI;Lo;0;L;;;;;N;;;;;
+1970;TAI LE LETTER TONE-2;Lo;0;L;;;;;N;;;;;
+1971;TAI LE LETTER TONE-3;Lo;0;L;;;;;N;;;;;
+1972;TAI LE LETTER TONE-4;Lo;0;L;;;;;N;;;;;
+1973;TAI LE LETTER TONE-5;Lo;0;L;;;;;N;;;;;
+1974;TAI LE LETTER TONE-6;Lo;0;L;;;;;N;;;;;
+1980;NEW TAI LUE LETTER HIGH QA;Lo;0;L;;;;;N;;;;;
+1981;NEW TAI LUE LETTER LOW QA;Lo;0;L;;;;;N;;;;;
+1982;NEW TAI LUE LETTER HIGH KA;Lo;0;L;;;;;N;;;;;
+1983;NEW TAI LUE LETTER HIGH XA;Lo;0;L;;;;;N;;;;;
+1984;NEW TAI LUE LETTER HIGH NGA;Lo;0;L;;;;;N;;;;;
+1985;NEW TAI LUE LETTER LOW KA;Lo;0;L;;;;;N;;;;;
+1986;NEW TAI LUE LETTER LOW XA;Lo;0;L;;;;;N;;;;;
+1987;NEW TAI LUE LETTER LOW NGA;Lo;0;L;;;;;N;;;;;
+1988;NEW TAI LUE LETTER HIGH TSA;Lo;0;L;;;;;N;;;;;
+1989;NEW TAI LUE LETTER HIGH SA;Lo;0;L;;;;;N;;;;;
+198A;NEW TAI LUE LETTER HIGH YA;Lo;0;L;;;;;N;;;;;
+198B;NEW TAI LUE LETTER LOW TSA;Lo;0;L;;;;;N;;;;;
+198C;NEW TAI LUE LETTER LOW SA;Lo;0;L;;;;;N;;;;;
+198D;NEW TAI LUE LETTER LOW YA;Lo;0;L;;;;;N;;;;;
+198E;NEW TAI LUE LETTER HIGH TA;Lo;0;L;;;;;N;;;;;
+198F;NEW TAI LUE LETTER HIGH THA;Lo;0;L;;;;;N;;;;;
+1990;NEW TAI LUE LETTER HIGH NA;Lo;0;L;;;;;N;;;;;
+1991;NEW TAI LUE LETTER LOW TA;Lo;0;L;;;;;N;;;;;
+1992;NEW TAI LUE LETTER LOW THA;Lo;0;L;;;;;N;;;;;
+1993;NEW TAI LUE LETTER LOW NA;Lo;0;L;;;;;N;;;;;
+1994;NEW TAI LUE LETTER HIGH PA;Lo;0;L;;;;;N;;;;;
+1995;NEW TAI LUE LETTER HIGH PHA;Lo;0;L;;;;;N;;;;;
+1996;NEW TAI LUE LETTER HIGH MA;Lo;0;L;;;;;N;;;;;
+1997;NEW TAI LUE LETTER LOW PA;Lo;0;L;;;;;N;;;;;
+1998;NEW TAI LUE LETTER LOW PHA;Lo;0;L;;;;;N;;;;;
+1999;NEW TAI LUE LETTER LOW MA;Lo;0;L;;;;;N;;;;;
+199A;NEW TAI LUE LETTER HIGH FA;Lo;0;L;;;;;N;;;;;
+199B;NEW TAI LUE LETTER HIGH VA;Lo;0;L;;;;;N;;;;;
+199C;NEW TAI LUE LETTER HIGH LA;Lo;0;L;;;;;N;;;;;
+199D;NEW TAI LUE LETTER LOW FA;Lo;0;L;;;;;N;;;;;
+199E;NEW TAI LUE LETTER LOW VA;Lo;0;L;;;;;N;;;;;
+199F;NEW TAI LUE LETTER LOW LA;Lo;0;L;;;;;N;;;;;
+19A0;NEW TAI LUE LETTER HIGH HA;Lo;0;L;;;;;N;;;;;
+19A1;NEW TAI LUE LETTER HIGH DA;Lo;0;L;;;;;N;;;;;
+19A2;NEW TAI LUE LETTER HIGH BA;Lo;0;L;;;;;N;;;;;
+19A3;NEW TAI LUE LETTER LOW HA;Lo;0;L;;;;;N;;;;;
+19A4;NEW TAI LUE LETTER LOW DA;Lo;0;L;;;;;N;;;;;
+19A5;NEW TAI LUE LETTER LOW BA;Lo;0;L;;;;;N;;;;;
+19A6;NEW TAI LUE LETTER HIGH KVA;Lo;0;L;;;;;N;;;;;
+19A7;NEW TAI LUE LETTER HIGH XVA;Lo;0;L;;;;;N;;;;;
+19A8;NEW TAI LUE LETTER LOW KVA;Lo;0;L;;;;;N;;;;;
+19A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;;
+19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Mc;0;L;;;;;N;;;;;
+19B1;NEW TAI LUE VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+19B2;NEW TAI LUE VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+19B3;NEW TAI LUE VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+19B4;NEW TAI LUE VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+19B5;NEW TAI LUE VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+19B6;NEW TAI LUE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+19B7;NEW TAI LUE VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+19B8;NEW TAI LUE VOWEL SIGN OA;Mc;0;L;;;;;N;;;;;
+19B9;NEW TAI LUE VOWEL SIGN UE;Mc;0;L;;;;;N;;;;;
+19BA;NEW TAI LUE VOWEL SIGN AY;Mc;0;L;;;;;N;;;;;
+19BB;NEW TAI LUE VOWEL SIGN AAY;Mc;0;L;;;;;N;;;;;
+19BC;NEW TAI LUE VOWEL SIGN UY;Mc;0;L;;;;;N;;;;;
+19BD;NEW TAI LUE VOWEL SIGN OY;Mc;0;L;;;;;N;;;;;
+19BE;NEW TAI LUE VOWEL SIGN OAY;Mc;0;L;;;;;N;;;;;
+19BF;NEW TAI LUE VOWEL SIGN UEY;Mc;0;L;;;;;N;;;;;
+19C0;NEW TAI LUE VOWEL SIGN IY;Mc;0;L;;;;;N;;;;;
+19C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;;
+19C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;;
+19C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;;
+19C4;NEW TAI LUE LETTER FINAL M;Lo;0;L;;;;;N;;;;;
+19C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;;
+19C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;;
+19C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;;
+19C8;NEW TAI LUE TONE MARK-1;Mc;0;L;;;;;N;;;;;
+19C9;NEW TAI LUE TONE MARK-2;Mc;0;L;;;;;N;;;;;
+19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+19D3;NEW TAI LUE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+19D4;NEW TAI LUE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+19D5;NEW TAI LUE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+19D6;NEW TAI LUE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+19D7;NEW TAI LUE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+19D8;NEW TAI LUE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+19D9;NEW TAI LUE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+19DE;NEW TAI LUE SIGN LAE;Po;0;ON;;;;;N;;;;;
+19DF;NEW TAI LUE SIGN LAEV;Po;0;ON;;;;;N;;;;;
+19E0;KHMER SYMBOL PATHAMASAT;So;0;ON;;;;;N;;;;;
+19E1;KHMER SYMBOL MUOY KOET;So;0;ON;;;;;N;;;;;
+19E2;KHMER SYMBOL PII KOET;So;0;ON;;;;;N;;;;;
+19E3;KHMER SYMBOL BEI KOET;So;0;ON;;;;;N;;;;;
+19E4;KHMER SYMBOL BUON KOET;So;0;ON;;;;;N;;;;;
+19E5;KHMER SYMBOL PRAM KOET;So;0;ON;;;;;N;;;;;
+19E6;KHMER SYMBOL PRAM-MUOY KOET;So;0;ON;;;;;N;;;;;
+19E7;KHMER SYMBOL PRAM-PII KOET;So;0;ON;;;;;N;;;;;
+19E8;KHMER SYMBOL PRAM-BEI KOET;So;0;ON;;;;;N;;;;;
+19E9;KHMER SYMBOL PRAM-BUON KOET;So;0;ON;;;;;N;;;;;
+19EA;KHMER SYMBOL DAP KOET;So;0;ON;;;;;N;;;;;
+19EB;KHMER SYMBOL DAP-MUOY KOET;So;0;ON;;;;;N;;;;;
+19EC;KHMER SYMBOL DAP-PII KOET;So;0;ON;;;;;N;;;;;
+19ED;KHMER SYMBOL DAP-BEI KOET;So;0;ON;;;;;N;;;;;
+19EE;KHMER SYMBOL DAP-BUON KOET;So;0;ON;;;;;N;;;;;
+19EF;KHMER SYMBOL DAP-PRAM KOET;So;0;ON;;;;;N;;;;;
+19F0;KHMER SYMBOL TUTEYASAT;So;0;ON;;;;;N;;;;;
+19F1;KHMER SYMBOL MUOY ROC;So;0;ON;;;;;N;;;;;
+19F2;KHMER SYMBOL PII ROC;So;0;ON;;;;;N;;;;;
+19F3;KHMER SYMBOL BEI ROC;So;0;ON;;;;;N;;;;;
+19F4;KHMER SYMBOL BUON ROC;So;0;ON;;;;;N;;;;;
+19F5;KHMER SYMBOL PRAM ROC;So;0;ON;;;;;N;;;;;
+19F6;KHMER SYMBOL PRAM-MUOY ROC;So;0;ON;;;;;N;;;;;
+19F7;KHMER SYMBOL PRAM-PII ROC;So;0;ON;;;;;N;;;;;
+19F8;KHMER SYMBOL PRAM-BEI ROC;So;0;ON;;;;;N;;;;;
+19F9;KHMER SYMBOL PRAM-BUON ROC;So;0;ON;;;;;N;;;;;
+19FA;KHMER SYMBOL DAP ROC;So;0;ON;;;;;N;;;;;
+19FB;KHMER SYMBOL DAP-MUOY ROC;So;0;ON;;;;;N;;;;;
+19FC;KHMER SYMBOL DAP-PII ROC;So;0;ON;;;;;N;;;;;
+19FD;KHMER SYMBOL DAP-BEI ROC;So;0;ON;;;;;N;;;;;
+19FE;KHMER SYMBOL DAP-BUON ROC;So;0;ON;;;;;N;;;;;
+19FF;KHMER SYMBOL DAP-PRAM ROC;So;0;ON;;;;;N;;;;;
+1A00;BUGINESE LETTER KA;Lo;0;L;;;;;N;;;;;
+1A01;BUGINESE LETTER GA;Lo;0;L;;;;;N;;;;;
+1A02;BUGINESE LETTER NGA;Lo;0;L;;;;;N;;;;;
+1A03;BUGINESE LETTER NGKA;Lo;0;L;;;;;N;;;;;
+1A04;BUGINESE LETTER PA;Lo;0;L;;;;;N;;;;;
+1A05;BUGINESE LETTER BA;Lo;0;L;;;;;N;;;;;
+1A06;BUGINESE LETTER MA;Lo;0;L;;;;;N;;;;;
+1A07;BUGINESE LETTER MPA;Lo;0;L;;;;;N;;;;;
+1A08;BUGINESE LETTER TA;Lo;0;L;;;;;N;;;;;
+1A09;BUGINESE LETTER DA;Lo;0;L;;;;;N;;;;;
+1A0A;BUGINESE LETTER NA;Lo;0;L;;;;;N;;;;;
+1A0B;BUGINESE LETTER NRA;Lo;0;L;;;;;N;;;;;
+1A0C;BUGINESE LETTER CA;Lo;0;L;;;;;N;;;;;
+1A0D;BUGINESE LETTER JA;Lo;0;L;;;;;N;;;;;
+1A0E;BUGINESE LETTER NYA;Lo;0;L;;;;;N;;;;;
+1A0F;BUGINESE LETTER NYCA;Lo;0;L;;;;;N;;;;;
+1A10;BUGINESE LETTER YA;Lo;0;L;;;;;N;;;;;
+1A11;BUGINESE LETTER RA;Lo;0;L;;;;;N;;;;;
+1A12;BUGINESE LETTER LA;Lo;0;L;;;;;N;;;;;
+1A13;BUGINESE LETTER VA;Lo;0;L;;;;;N;;;;;
+1A14;BUGINESE LETTER SA;Lo;0;L;;;;;N;;;;;
+1A15;BUGINESE LETTER A;Lo;0;L;;;;;N;;;;;
+1A16;BUGINESE LETTER HA;Lo;0;L;;;;;N;;;;;
+1A17;BUGINESE VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;;
+1A18;BUGINESE VOWEL SIGN U;Mn;220;NSM;;;;;N;;;;;
+1A19;BUGINESE VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+1A1A;BUGINESE VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+1A1B;BUGINESE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+1A1E;BUGINESE PALLAWA;Po;0;L;;;;;N;;;;;
+1A1F;BUGINESE END OF SECTION;Po;0;L;;;;;N;;;;;
+1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;ardhacandra;;;
+1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;candrabindu;;;
+1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;anusvara;;;
+1B03;BALINESE SIGN SURANG;Mn;0;NSM;;;;;N;;repha;;;
+1B04;BALINESE SIGN BISAH;Mc;0;L;;;;;N;;visarga;;;
+1B05;BALINESE LETTER AKARA;Lo;0;L;;;;;N;;a;;;
+1B06;BALINESE LETTER AKARA TEDUNG;Lo;0;L;1B05 1B35;;;;N;;aa;;;
+1B07;BALINESE LETTER IKARA;Lo;0;L;;;;;N;;i;;;
+1B08;BALINESE LETTER IKARA TEDUNG;Lo;0;L;1B07 1B35;;;;N;;ii;;;
+1B09;BALINESE LETTER UKARA;Lo;0;L;;;;;N;;u;;;
+1B0A;BALINESE LETTER UKARA TEDUNG;Lo;0;L;1B09 1B35;;;;N;;uu;;;
+1B0B;BALINESE LETTER RA REPA;Lo;0;L;;;;;N;;vocalic r;;;
+1B0C;BALINESE LETTER RA REPA TEDUNG;Lo;0;L;1B0B 1B35;;;;N;;vocalic rr;;;
+1B0D;BALINESE LETTER LA LENGA;Lo;0;L;;;;;N;;vocalic l;;;
+1B0E;BALINESE LETTER LA LENGA TEDUNG;Lo;0;L;1B0D 1B35;;;;N;;vocalic ll;;;
+1B0F;BALINESE LETTER EKARA;Lo;0;L;;;;;N;;e;;;
+1B10;BALINESE LETTER AIKARA;Lo;0;L;;;;;N;;ai;;;
+1B11;BALINESE LETTER OKARA;Lo;0;L;;;;;N;;o;;;
+1B12;BALINESE LETTER OKARA TEDUNG;Lo;0;L;1B11 1B35;;;;N;;au;;;
+1B13;BALINESE LETTER KA;Lo;0;L;;;;;N;;;;;
+1B14;BALINESE LETTER KA MAHAPRANA;Lo;0;L;;;;;N;;kha;;;
+1B15;BALINESE LETTER GA;Lo;0;L;;;;;N;;;;;
+1B16;BALINESE LETTER GA GORA;Lo;0;L;;;;;N;;gha;;;
+1B17;BALINESE LETTER NGA;Lo;0;L;;;;;N;;;;;
+1B18;BALINESE LETTER CA;Lo;0;L;;;;;N;;;;;
+1B19;BALINESE LETTER CA LACA;Lo;0;L;;;;;N;;cha;;;
+1B1A;BALINESE LETTER JA;Lo;0;L;;;;;N;;;;;
+1B1B;BALINESE LETTER JA JERA;Lo;0;L;;;;;N;;jha;;;
+1B1C;BALINESE LETTER NYA;Lo;0;L;;;;;N;;;;;
+1B1D;BALINESE LETTER TA LATIK;Lo;0;L;;;;;N;;tta;;;
+1B1E;BALINESE LETTER TA MURDA MAHAPRANA;Lo;0;L;;;;;N;;ttha;;;
+1B1F;BALINESE LETTER DA MURDA ALPAPRANA;Lo;0;L;;;;;N;;dda;;;
+1B20;BALINESE LETTER DA MURDA MAHAPRANA;Lo;0;L;;;;;N;;ddha;;;
+1B21;BALINESE LETTER NA RAMBAT;Lo;0;L;;;;;N;;nna;;;
+1B22;BALINESE LETTER TA;Lo;0;L;;;;;N;;;;;
+1B23;BALINESE LETTER TA TAWA;Lo;0;L;;;;;N;;tha;;;
+1B24;BALINESE LETTER DA;Lo;0;L;;;;;N;;;;;
+1B25;BALINESE LETTER DA MADU;Lo;0;L;;;;;N;;dha;;;
+1B26;BALINESE LETTER NA;Lo;0;L;;;;;N;;;;;
+1B27;BALINESE LETTER PA;Lo;0;L;;;;;N;;;;;
+1B28;BALINESE LETTER PA KAPAL;Lo;0;L;;;;;N;;pha;;;
+1B29;BALINESE LETTER BA;Lo;0;L;;;;;N;;;;;
+1B2A;BALINESE LETTER BA KEMBANG;Lo;0;L;;;;;N;;bha;;;
+1B2B;BALINESE LETTER MA;Lo;0;L;;;;;N;;;;;
+1B2C;BALINESE LETTER YA;Lo;0;L;;;;;N;;;;;
+1B2D;BALINESE LETTER RA;Lo;0;L;;;;;N;;;;;
+1B2E;BALINESE LETTER LA;Lo;0;L;;;;;N;;;;;
+1B2F;BALINESE LETTER WA;Lo;0;L;;;;;N;;;;;
+1B30;BALINESE LETTER SA SAGA;Lo;0;L;;;;;N;;sha;;;
+1B31;BALINESE LETTER SA SAPA;Lo;0;L;;;;;N;;ssa;;;
+1B32;BALINESE LETTER SA;Lo;0;L;;;;;N;;;;;
+1B33;BALINESE LETTER HA;Lo;0;L;;;;;N;;;;;
+1B34;BALINESE SIGN REREKAN;Mn;7;NSM;;;;;N;;nukta;;;
+1B35;BALINESE VOWEL SIGN TEDUNG;Mc;0;L;;;;;N;;aa;;;
+1B36;BALINESE VOWEL SIGN ULU;Mn;0;NSM;;;;;N;;i;;;
+1B37;BALINESE VOWEL SIGN ULU SARI;Mn;0;NSM;;;;;N;;ii;;;
+1B38;BALINESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;u;;;
+1B39;BALINESE VOWEL SIGN SUKU ILUT;Mn;0;NSM;;;;;N;;uu;;;
+1B3A;BALINESE VOWEL SIGN RA REPA;Mn;0;NSM;;;;;N;;vocalic r;;;
+1B3B;BALINESE VOWEL SIGN RA REPA TEDUNG;Mc;0;L;1B3A 1B35;;;;N;;vocalic rr;;;
+1B3C;BALINESE VOWEL SIGN LA LENGA;Mn;0;NSM;;;;;N;;vocalic l;;;
+1B3D;BALINESE VOWEL SIGN LA LENGA TEDUNG;Mc;0;L;1B3C 1B35;;;;N;;vocalic ll;;;
+1B3E;BALINESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;e;;;
+1B3F;BALINESE VOWEL SIGN TALING REPA;Mc;0;L;;;;;N;;ai;;;
+1B40;BALINESE VOWEL SIGN TALING TEDUNG;Mc;0;L;1B3E 1B35;;;;N;;o;;;
+1B41;BALINESE VOWEL SIGN TALING REPA TEDUNG;Mc;0;L;1B3F 1B35;;;;N;;au;;;
+1B42;BALINESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;ae;;;
+1B43;BALINESE VOWEL SIGN PEPET TEDUNG;Mc;0;L;1B42 1B35;;;;N;;oe;;;
+1B44;BALINESE ADEG ADEG;Mc;9;L;;;;;N;;virama;;;
+1B45;BALINESE LETTER KAF SASAK;Lo;0;L;;;;;N;;;;;
+1B46;BALINESE LETTER KHOT SASAK;Lo;0;L;;;;;N;;;;;
+1B47;BALINESE LETTER TZIR SASAK;Lo;0;L;;;;;N;;;;;
+1B48;BALINESE LETTER EF SASAK;Lo;0;L;;;;;N;;;;;
+1B49;BALINESE LETTER VE SASAK;Lo;0;L;;;;;N;;;;;
+1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;;
+1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;;
+1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1B53;BALINESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1B54;BALINESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1B55;BALINESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1B56;BALINESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1B57;BALINESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1B58;BALINESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1B59;BALINESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1B5A;BALINESE PANTI;Po;0;L;;;;;N;;section;;;
+1B5B;BALINESE PAMADA;Po;0;L;;;;;N;;honorific section;;;
+1B5C;BALINESE WINDU;Po;0;L;;;;;N;;punctuation ring;;;
+1B5D;BALINESE CARIK PAMUNGKAH;Po;0;L;;;;;N;;colon;;;
+1B5E;BALINESE CARIK SIKI;Po;0;L;;;;;N;;danda;;;
+1B5F;BALINESE CARIK PAREREN;Po;0;L;;;;;N;;double danda;;;
+1B60;BALINESE PAMENENG;Po;0;L;;;;;N;;line-breaking hyphen;;;
+1B61;BALINESE MUSICAL SYMBOL DONG;So;0;L;;;;;N;;;;;
+1B62;BALINESE MUSICAL SYMBOL DENG;So;0;L;;;;;N;;;;;
+1B63;BALINESE MUSICAL SYMBOL DUNG;So;0;L;;;;;N;;;;;
+1B64;BALINESE MUSICAL SYMBOL DANG;So;0;L;;;;;N;;;;;
+1B65;BALINESE MUSICAL SYMBOL DANG SURANG;So;0;L;;;;;N;;;;;
+1B66;BALINESE MUSICAL SYMBOL DING;So;0;L;;;;;N;;;;;
+1B67;BALINESE MUSICAL SYMBOL DAENG;So;0;L;;;;;N;;;;;
+1B68;BALINESE MUSICAL SYMBOL DEUNG;So;0;L;;;;;N;;;;;
+1B69;BALINESE MUSICAL SYMBOL DAING;So;0;L;;;;;N;;;;;
+1B6A;BALINESE MUSICAL SYMBOL DANG GEDE;So;0;L;;;;;N;;;;;
+1B6B;BALINESE MUSICAL SYMBOL COMBINING TEGEH;Mn;230;NSM;;;;;N;;;;;
+1B6C;BALINESE MUSICAL SYMBOL COMBINING ENDEP;Mn;220;NSM;;;;;N;;;;;
+1B6D;BALINESE MUSICAL SYMBOL COMBINING KEMPUL;Mn;230;NSM;;;;;N;;;;;
+1B6E;BALINESE MUSICAL SYMBOL COMBINING KEMPLI;Mn;230;NSM;;;;;N;;;;;
+1B6F;BALINESE MUSICAL SYMBOL COMBINING JEGOGAN;Mn;230;NSM;;;;;N;;;;;
+1B70;BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;;
+1B71;BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;;
+1B72;BALINESE MUSICAL SYMBOL COMBINING BENDE;Mn;230;NSM;;;;;N;;;;;
+1B73;BALINESE MUSICAL SYMBOL COMBINING GONG;Mn;230;NSM;;;;;N;;;;;
+1B74;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG;So;0;L;;;;;N;;;;;
+1B75;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG;So;0;L;;;;;N;;;;;
+1B76;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK;So;0;L;;;;;N;;;;;
+1B77;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK;So;0;L;;;;;N;;;;;
+1B78;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG;So;0;L;;;;;N;;;;;
+1B79;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG;So;0;L;;;;;N;;;;;
+1B7A;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;So;0;L;;;;;N;;;;;
+1B7B;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;So;0;L;;;;;N;;;;;
+1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;;
+1B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;;
+1B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;;
+1B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;;
+1B83;SUNDANESE LETTER A;Lo;0;L;;;;;N;;;;;
+1B84;SUNDANESE LETTER I;Lo;0;L;;;;;N;;;;;
+1B85;SUNDANESE LETTER U;Lo;0;L;;;;;N;;;;;
+1B86;SUNDANESE LETTER AE;Lo;0;L;;;;;N;;;;;
+1B87;SUNDANESE LETTER O;Lo;0;L;;;;;N;;;;;
+1B88;SUNDANESE LETTER E;Lo;0;L;;;;;N;;;;;
+1B89;SUNDANESE LETTER EU;Lo;0;L;;;;;N;;;;;
+1B8A;SUNDANESE LETTER KA;Lo;0;L;;;;;N;;;;;
+1B8B;SUNDANESE LETTER QA;Lo;0;L;;;;;N;;;;;
+1B8C;SUNDANESE LETTER GA;Lo;0;L;;;;;N;;;;;
+1B8D;SUNDANESE LETTER NGA;Lo;0;L;;;;;N;;;;;
+1B8E;SUNDANESE LETTER CA;Lo;0;L;;;;;N;;;;;
+1B8F;SUNDANESE LETTER JA;Lo;0;L;;;;;N;;;;;
+1B90;SUNDANESE LETTER ZA;Lo;0;L;;;;;N;;;;;
+1B91;SUNDANESE LETTER NYA;Lo;0;L;;;;;N;;;;;
+1B92;SUNDANESE LETTER TA;Lo;0;L;;;;;N;;;;;
+1B93;SUNDANESE LETTER DA;Lo;0;L;;;;;N;;;;;
+1B94;SUNDANESE LETTER NA;Lo;0;L;;;;;N;;;;;
+1B95;SUNDANESE LETTER PA;Lo;0;L;;;;;N;;;;;
+1B96;SUNDANESE LETTER FA;Lo;0;L;;;;;N;;;;;
+1B97;SUNDANESE LETTER VA;Lo;0;L;;;;;N;;;;;
+1B98;SUNDANESE LETTER BA;Lo;0;L;;;;;N;;;;;
+1B99;SUNDANESE LETTER MA;Lo;0;L;;;;;N;;;;;
+1B9A;SUNDANESE LETTER YA;Lo;0;L;;;;;N;;;;;
+1B9B;SUNDANESE LETTER RA;Lo;0;L;;;;;N;;;;;
+1B9C;SUNDANESE LETTER LA;Lo;0;L;;;;;N;;;;;
+1B9D;SUNDANESE LETTER WA;Lo;0;L;;;;;N;;;;;
+1B9E;SUNDANESE LETTER SA;Lo;0;L;;;;;N;;;;;
+1B9F;SUNDANESE LETTER XA;Lo;0;L;;;;;N;;;;;
+1BA0;SUNDANESE LETTER HA;Lo;0;L;;;;;N;;;;;
+1BA1;SUNDANESE CONSONANT SIGN PAMINGKAL;Mc;0;L;;;;;N;;;;;
+1BA2;SUNDANESE CONSONANT SIGN PANYAKRA;Mn;0;NSM;;;;;N;;;;;
+1BA3;SUNDANESE CONSONANT SIGN PANYIKU;Mn;0;NSM;;;;;N;;;;;
+1BA4;SUNDANESE VOWEL SIGN PANGHULU;Mn;0;NSM;;;;;N;;;;;
+1BA5;SUNDANESE VOWEL SIGN PANYUKU;Mn;0;NSM;;;;;N;;;;;
+1BA6;SUNDANESE VOWEL SIGN PANAELAENG;Mc;0;L;;;;;N;;;;;
+1BA7;SUNDANESE VOWEL SIGN PANOLONG;Mc;0;L;;;;;N;;;;;
+1BA8;SUNDANESE VOWEL SIGN PAMEPET;Mn;0;NSM;;;;;N;;;;;
+1BA9;SUNDANESE VOWEL SIGN PANEULEUNG;Mn;0;NSM;;;;;N;;;;;
+1BAA;SUNDANESE SIGN PAMAAEH;Mc;9;L;;;;;N;;;;;
+1BAE;SUNDANESE LETTER KHA;Lo;0;L;;;;;N;;;;;
+1BAF;SUNDANESE LETTER SYA;Lo;0;L;;;;;N;;;;;
+1BB0;SUNDANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1BB1;SUNDANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1BB2;SUNDANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1BB3;SUNDANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1BB4;SUNDANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1BB5;SUNDANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1BB6;SUNDANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1BB7;SUNDANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1BB8;SUNDANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1BB9;SUNDANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1C00;LEPCHA LETTER KA;Lo;0;L;;;;;N;;;;;
+1C01;LEPCHA LETTER KLA;Lo;0;L;;;;;N;;;;;
+1C02;LEPCHA LETTER KHA;Lo;0;L;;;;;N;;;;;
+1C03;LEPCHA LETTER GA;Lo;0;L;;;;;N;;;;;
+1C04;LEPCHA LETTER GLA;Lo;0;L;;;;;N;;;;;
+1C05;LEPCHA LETTER NGA;Lo;0;L;;;;;N;;;;;
+1C06;LEPCHA LETTER CA;Lo;0;L;;;;;N;;;;;
+1C07;LEPCHA LETTER CHA;Lo;0;L;;;;;N;;;;;
+1C08;LEPCHA LETTER JA;Lo;0;L;;;;;N;;;;;
+1C09;LEPCHA LETTER NYA;Lo;0;L;;;;;N;;;;;
+1C0A;LEPCHA LETTER TA;Lo;0;L;;;;;N;;;;;
+1C0B;LEPCHA LETTER THA;Lo;0;L;;;;;N;;;;;
+1C0C;LEPCHA LETTER DA;Lo;0;L;;;;;N;;;;;
+1C0D;LEPCHA LETTER NA;Lo;0;L;;;;;N;;;;;
+1C0E;LEPCHA LETTER PA;Lo;0;L;;;;;N;;;;;
+1C0F;LEPCHA LETTER PLA;Lo;0;L;;;;;N;;;;;
+1C10;LEPCHA LETTER PHA;Lo;0;L;;;;;N;;;;;
+1C11;LEPCHA LETTER FA;Lo;0;L;;;;;N;;;;;
+1C12;LEPCHA LETTER FLA;Lo;0;L;;;;;N;;;;;
+1C13;LEPCHA LETTER BA;Lo;0;L;;;;;N;;;;;
+1C14;LEPCHA LETTER BLA;Lo;0;L;;;;;N;;;;;
+1C15;LEPCHA LETTER MA;Lo;0;L;;;;;N;;;;;
+1C16;LEPCHA LETTER MLA;Lo;0;L;;;;;N;;;;;
+1C17;LEPCHA LETTER TSA;Lo;0;L;;;;;N;;;;;
+1C18;LEPCHA LETTER TSHA;Lo;0;L;;;;;N;;;;;
+1C19;LEPCHA LETTER DZA;Lo;0;L;;;;;N;;;;;
+1C1A;LEPCHA LETTER YA;Lo;0;L;;;;;N;;;;;
+1C1B;LEPCHA LETTER RA;Lo;0;L;;;;;N;;;;;
+1C1C;LEPCHA LETTER LA;Lo;0;L;;;;;N;;;;;
+1C1D;LEPCHA LETTER HA;Lo;0;L;;;;;N;;;;;
+1C1E;LEPCHA LETTER HLA;Lo;0;L;;;;;N;;;;;
+1C1F;LEPCHA LETTER VA;Lo;0;L;;;;;N;;;;;
+1C20;LEPCHA LETTER SA;Lo;0;L;;;;;N;;;;;
+1C21;LEPCHA LETTER SHA;Lo;0;L;;;;;N;;;;;
+1C22;LEPCHA LETTER WA;Lo;0;L;;;;;N;;;;;
+1C23;LEPCHA LETTER A;Lo;0;L;;;;;N;;;;;
+1C24;LEPCHA SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;;
+1C25;LEPCHA SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;;
+1C26;LEPCHA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+1C27;LEPCHA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+1C28;LEPCHA VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+1C29;LEPCHA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+1C2A;LEPCHA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+1C2B;LEPCHA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+1C2C;LEPCHA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+1C2D;LEPCHA CONSONANT SIGN K;Mn;0;NSM;;;;;N;;;;;
+1C2E;LEPCHA CONSONANT SIGN M;Mn;0;NSM;;;;;N;;;;;
+1C2F;LEPCHA CONSONANT SIGN L;Mn;0;NSM;;;;;N;;;;;
+1C30;LEPCHA CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;;
+1C31;LEPCHA CONSONANT SIGN P;Mn;0;NSM;;;;;N;;;;;
+1C32;LEPCHA CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;;
+1C33;LEPCHA CONSONANT SIGN T;Mn;0;NSM;;;;;N;;;;;
+1C34;LEPCHA CONSONANT SIGN NYIN-DO;Mc;0;L;;;;;N;;;;;
+1C35;LEPCHA CONSONANT SIGN KANG;Mc;0;L;;;;;N;;;;;
+1C36;LEPCHA SIGN RAN;Mn;0;NSM;;;;;N;;;;;
+1C37;LEPCHA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+1C3B;LEPCHA PUNCTUATION TA-ROL;Po;0;L;;;;;N;;;;;
+1C3C;LEPCHA PUNCTUATION NYET THYOOM TA-ROL;Po;0;L;;;;;N;;;;;
+1C3D;LEPCHA PUNCTUATION CER-WA;Po;0;L;;;;;N;;;;;
+1C3E;LEPCHA PUNCTUATION TSHOOK CER-WA;Po;0;L;;;;;N;;;;;
+1C3F;LEPCHA PUNCTUATION TSHOOK;Po;0;L;;;;;N;;;;;
+1C40;LEPCHA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1C41;LEPCHA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1C42;LEPCHA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1C43;LEPCHA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1C44;LEPCHA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1C45;LEPCHA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1C46;LEPCHA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1C47;LEPCHA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1C48;LEPCHA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1C49;LEPCHA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1C4D;LEPCHA LETTER TTA;Lo;0;L;;;;;N;;;;;
+1C4E;LEPCHA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+1C4F;LEPCHA LETTER DDA;Lo;0;L;;;;;N;;;;;
+1C50;OL CHIKI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1C51;OL CHIKI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1C52;OL CHIKI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1C53;OL CHIKI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1C54;OL CHIKI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1C55;OL CHIKI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1C56;OL CHIKI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1C57;OL CHIKI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1C58;OL CHIKI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1C59;OL CHIKI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1C5A;OL CHIKI LETTER LA;Lo;0;L;;;;;N;;;;;
+1C5B;OL CHIKI LETTER AT;Lo;0;L;;;;;N;;;;;
+1C5C;OL CHIKI LETTER AG;Lo;0;L;;;;;N;;;;;
+1C5D;OL CHIKI LETTER ANG;Lo;0;L;;;;;N;;;;;
+1C5E;OL CHIKI LETTER AL;Lo;0;L;;;;;N;;;;;
+1C5F;OL CHIKI LETTER LAA;Lo;0;L;;;;;N;;;;;
+1C60;OL CHIKI LETTER AAK;Lo;0;L;;;;;N;;;;;
+1C61;OL CHIKI LETTER AAJ;Lo;0;L;;;;;N;;;;;
+1C62;OL CHIKI LETTER AAM;Lo;0;L;;;;;N;;;;;
+1C63;OL CHIKI LETTER AAW;Lo;0;L;;;;;N;;;;;
+1C64;OL CHIKI LETTER LI;Lo;0;L;;;;;N;;;;;
+1C65;OL CHIKI LETTER IS;Lo;0;L;;;;;N;;;;;
+1C66;OL CHIKI LETTER IH;Lo;0;L;;;;;N;;;;;
+1C67;OL CHIKI LETTER INY;Lo;0;L;;;;;N;;;;;
+1C68;OL CHIKI LETTER IR;Lo;0;L;;;;;N;;;;;
+1C69;OL CHIKI LETTER LU;Lo;0;L;;;;;N;;;;;
+1C6A;OL CHIKI LETTER UC;Lo;0;L;;;;;N;;;;;
+1C6B;OL CHIKI LETTER UD;Lo;0;L;;;;;N;;;;;
+1C6C;OL CHIKI LETTER UNN;Lo;0;L;;;;;N;;;;;
+1C6D;OL CHIKI LETTER UY;Lo;0;L;;;;;N;;;;;
+1C6E;OL CHIKI LETTER LE;Lo;0;L;;;;;N;;;;;
+1C6F;OL CHIKI LETTER EP;Lo;0;L;;;;;N;;;;;
+1C70;OL CHIKI LETTER EDD;Lo;0;L;;;;;N;;;;;
+1C71;OL CHIKI LETTER EN;Lo;0;L;;;;;N;;;;;
+1C72;OL CHIKI LETTER ERR;Lo;0;L;;;;;N;;;;;
+1C73;OL CHIKI LETTER LO;Lo;0;L;;;;;N;;;;;
+1C74;OL CHIKI LETTER OTT;Lo;0;L;;;;;N;;;;;
+1C75;OL CHIKI LETTER OB;Lo;0;L;;;;;N;;;;;
+1C76;OL CHIKI LETTER OV;Lo;0;L;;;;;N;;;;;
+1C77;OL CHIKI LETTER OH;Lo;0;L;;;;;N;;;;;
+1C78;OL CHIKI MU TTUDDAG;Lm;0;L;;;;;N;;;;;
+1C79;OL CHIKI GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;;
+1C7A;OL CHIKI MU-GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;;
+1C7B;OL CHIKI RELAA;Lm;0;L;;;;;N;;;;;
+1C7C;OL CHIKI PHAARKAA;Lm;0;L;;;;;N;;;;;
+1C7D;OL CHIKI AHAD;Lm;0;L;;;;;N;;;;;
+1C7E;OL CHIKI PUNCTUATION MUCAAD;Po;0;L;;;;;N;;;;;
+1C7F;OL CHIKI PUNCTUATION DOUBLE MUCAAD;Po;0;L;;;;;N;;;;;
+1D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;;
+1D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;;
+1D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;;
+1D03;LATIN LETTER SMALL CAPITAL BARRED B;Ll;0;L;;;;;N;;;;;
+1D04;LATIN LETTER SMALL CAPITAL C;Ll;0;L;;;;;N;;;;;
+1D05;LATIN LETTER SMALL CAPITAL D;Ll;0;L;;;;;N;;;;;
+1D06;LATIN LETTER SMALL CAPITAL ETH;Ll;0;L;;;;;N;;;;;
+1D07;LATIN LETTER SMALL CAPITAL E;Ll;0;L;;;;;N;;;;;
+1D08;LATIN SMALL LETTER TURNED OPEN E;Ll;0;L;;;;;N;;;;;
+1D09;LATIN SMALL LETTER TURNED I;Ll;0;L;;;;;N;;;;;
+1D0A;LATIN LETTER SMALL CAPITAL J;Ll;0;L;;;;;N;;;;;
+1D0B;LATIN LETTER SMALL CAPITAL K;Ll;0;L;;;;;N;;;;;
+1D0C;LATIN LETTER SMALL CAPITAL L WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D0D;LATIN LETTER SMALL CAPITAL M;Ll;0;L;;;;;N;;;;;
+1D0E;LATIN LETTER SMALL CAPITAL REVERSED N;Ll;0;L;;;;;N;;;;;
+1D0F;LATIN LETTER SMALL CAPITAL O;Ll;0;L;;;;;N;;;;;
+1D10;LATIN LETTER SMALL CAPITAL OPEN O;Ll;0;L;;;;;N;;;;;
+1D11;LATIN SMALL LETTER SIDEWAYS O;Ll;0;L;;;;;N;;;;;
+1D12;LATIN SMALL LETTER SIDEWAYS OPEN O;Ll;0;L;;;;;N;;;;;
+1D13;LATIN SMALL LETTER SIDEWAYS O WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D14;LATIN SMALL LETTER TURNED OE;Ll;0;L;;;;;N;;;;;
+1D15;LATIN LETTER SMALL CAPITAL OU;Ll;0;L;;;;;N;;;;;
+1D16;LATIN SMALL LETTER TOP HALF O;Ll;0;L;;;;;N;;;;;
+1D17;LATIN SMALL LETTER BOTTOM HALF O;Ll;0;L;;;;;N;;;;;
+1D18;LATIN LETTER SMALL CAPITAL P;Ll;0;L;;;;;N;;;;;
+1D19;LATIN LETTER SMALL CAPITAL REVERSED R;Ll;0;L;;;;;N;;;;;
+1D1A;LATIN LETTER SMALL CAPITAL TURNED R;Ll;0;L;;;;;N;;;;;
+1D1B;LATIN LETTER SMALL CAPITAL T;Ll;0;L;;;;;N;;;;;
+1D1C;LATIN LETTER SMALL CAPITAL U;Ll;0;L;;;;;N;;;;;
+1D1D;LATIN SMALL LETTER SIDEWAYS U;Ll;0;L;;;;;N;;;;;
+1D1E;LATIN SMALL LETTER SIDEWAYS DIAERESIZED U;Ll;0;L;;;;;N;;;;;
+1D1F;LATIN SMALL LETTER SIDEWAYS TURNED M;Ll;0;L;;;;;N;;;;;
+1D20;LATIN LETTER SMALL CAPITAL V;Ll;0;L;;;;;N;;;;;
+1D21;LATIN LETTER SMALL CAPITAL W;Ll;0;L;;;;;N;;;;;
+1D22;LATIN LETTER SMALL CAPITAL Z;Ll;0;L;;;;;N;;;;;
+1D23;LATIN LETTER SMALL CAPITAL EZH;Ll;0;L;;;;;N;;;;;
+1D24;LATIN LETTER VOICED LARYNGEAL SPIRANT;Ll;0;L;;;;;N;;;;;
+1D25;LATIN LETTER AIN;Ll;0;L;;;;;N;;;;;
+1D26;GREEK LETTER SMALL CAPITAL GAMMA;Ll;0;L;;;;;N;;;;;
+1D27;GREEK LETTER SMALL CAPITAL LAMDA;Ll;0;L;;;;;N;;;;;
+1D28;GREEK LETTER SMALL CAPITAL PI;Ll;0;L;;;;;N;;;;;
+1D29;GREEK LETTER SMALL CAPITAL RHO;Ll;0;L;;;;;N;;;;;
+1D2A;GREEK LETTER SMALL CAPITAL PSI;Ll;0;L;;;;;N;;;;;
+1D2B;CYRILLIC LETTER SMALL CAPITAL EL;Ll;0;L;;;;;N;;;;;
+1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L;<super> 0041;;;;N;;;;;
+1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L;<super> 00C6;;;;N;;;;;
+1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L;<super> 0042;;;;N;;;;;
+1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;;
+1D30;MODIFIER LETTER CAPITAL D;Lm;0;L;<super> 0044;;;;N;;;;;
+1D31;MODIFIER LETTER CAPITAL E;Lm;0;L;<super> 0045;;;;N;;;;;
+1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L;<super> 018E;;;;N;;;;;
+1D33;MODIFIER LETTER CAPITAL G;Lm;0;L;<super> 0047;;;;N;;;;;
+1D34;MODIFIER LETTER CAPITAL H;Lm;0;L;<super> 0048;;;;N;;;;;
+1D35;MODIFIER LETTER CAPITAL I;Lm;0;L;<super> 0049;;;;N;;;;;
+1D36;MODIFIER LETTER CAPITAL J;Lm;0;L;<super> 004A;;;;N;;;;;
+1D37;MODIFIER LETTER CAPITAL K;Lm;0;L;<super> 004B;;;;N;;;;;
+1D38;MODIFIER LETTER CAPITAL L;Lm;0;L;<super> 004C;;;;N;;;;;
+1D39;MODIFIER LETTER CAPITAL M;Lm;0;L;<super> 004D;;;;N;;;;;
+1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L;<super> 004E;;;;N;;;;;
+1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;;
+1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L;<super> 004F;;;;N;;;;;
+1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L;<super> 0222;;;;N;;;;;
+1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L;<super> 0050;;;;N;;;;;
+1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L;<super> 0052;;;;N;;;;;
+1D40;MODIFIER LETTER CAPITAL T;Lm;0;L;<super> 0054;;;;N;;;;;
+1D41;MODIFIER LETTER CAPITAL U;Lm;0;L;<super> 0055;;;;N;;;;;
+1D42;MODIFIER LETTER CAPITAL W;Lm;0;L;<super> 0057;;;;N;;;;;
+1D43;MODIFIER LETTER SMALL A;Lm;0;L;<super> 0061;;;;N;;;;;
+1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L;<super> 0250;;;;N;;;;;
+1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L;<super> 0251;;;;N;;;;;
+1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L;<super> 1D02;;;;N;;;;;
+1D47;MODIFIER LETTER SMALL B;Lm;0;L;<super> 0062;;;;N;;;;;
+1D48;MODIFIER LETTER SMALL D;Lm;0;L;<super> 0064;;;;N;;;;;
+1D49;MODIFIER LETTER SMALL E;Lm;0;L;<super> 0065;;;;N;;;;;
+1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L;<super> 0259;;;;N;;;;;
+1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L;<super> 025B;;;;N;;;;;
+1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
+1D4D;MODIFIER LETTER SMALL G;Lm;0;L;<super> 0067;;;;N;;;;;
+1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;;
+1D4F;MODIFIER LETTER SMALL K;Lm;0;L;<super> 006B;;;;N;;;;;
+1D50;MODIFIER LETTER SMALL M;Lm;0;L;<super> 006D;;;;N;;;;;
+1D51;MODIFIER LETTER SMALL ENG;Lm;0;L;<super> 014B;;;;N;;;;;
+1D52;MODIFIER LETTER SMALL O;Lm;0;L;<super> 006F;;;;N;;;;;
+1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L;<super> 0254;;;;N;;;;;
+1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L;<super> 1D16;;;;N;;;;;
+1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L;<super> 1D17;;;;N;;;;;
+1D56;MODIFIER LETTER SMALL P;Lm;0;L;<super> 0070;;;;N;;;;;
+1D57;MODIFIER LETTER SMALL T;Lm;0;L;<super> 0074;;;;N;;;;;
+1D58;MODIFIER LETTER SMALL U;Lm;0;L;<super> 0075;;;;N;;;;;
+1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L;<super> 1D1D;;;;N;;;;;
+1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L;<super> 026F;;;;N;;;;;
+1D5B;MODIFIER LETTER SMALL V;Lm;0;L;<super> 0076;;;;N;;;;;
+1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L;<super> 1D25;;;;N;;;;;
+1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L;<super> 03B2;;;;N;;;;;
+1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L;<super> 03B3;;;;N;;;;;
+1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L;<super> 03B4;;;;N;;;;;
+1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L;<super> 03C6;;;;N;;;;;
+1D61;MODIFIER LETTER SMALL CHI;Lm;0;L;<super> 03C7;;;;N;;;;;
+1D62;LATIN SUBSCRIPT SMALL LETTER I;Ll;0;L;<sub> 0069;;;;N;;;;;
+1D63;LATIN SUBSCRIPT SMALL LETTER R;Ll;0;L;<sub> 0072;;;;N;;;;;
+1D64;LATIN SUBSCRIPT SMALL LETTER U;Ll;0;L;<sub> 0075;;;;N;;;;;
+1D65;LATIN SUBSCRIPT SMALL LETTER V;Ll;0;L;<sub> 0076;;;;N;;;;;
+1D66;GREEK SUBSCRIPT SMALL LETTER BETA;Ll;0;L;<sub> 03B2;;;;N;;;;;
+1D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Ll;0;L;<sub> 03B3;;;;N;;;;;
+1D68;GREEK SUBSCRIPT SMALL LETTER RHO;Ll;0;L;<sub> 03C1;;;;N;;;;;
+1D69;GREEK SUBSCRIPT SMALL LETTER PHI;Ll;0;L;<sub> 03C6;;;;N;;;;;
+1D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Ll;0;L;<sub> 03C7;;;;N;;;;;
+1D6B;LATIN SMALL LETTER UE;Ll;0;L;;;;;N;;;;;
+1D6C;LATIN SMALL LETTER B WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D6D;LATIN SMALL LETTER D WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D6E;LATIN SMALL LETTER F WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D6F;LATIN SMALL LETTER M WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D70;LATIN SMALL LETTER N WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D71;LATIN SMALL LETTER P WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D72;LATIN SMALL LETTER R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D73;LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D74;LATIN SMALL LETTER S WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D75;LATIN SMALL LETTER T WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D76;LATIN SMALL LETTER Z WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D77;LATIN SMALL LETTER TURNED G;Ll;0;L;;;;;N;;;;;
+1D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L;<super> 043D;;;;N;;;;;
+1D79;LATIN SMALL LETTER INSULAR G;Ll;0;L;;;;;N;;;A77D;;A77D
+1D7A;LATIN SMALL LETTER TH WITH STRIKETHROUGH;Ll;0;L;;;;;N;;;;;
+1D7B;LATIN SMALL CAPITAL LETTER I WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D7C;LATIN SMALL LETTER IOTA WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D7D;LATIN SMALL LETTER P WITH STROKE;Ll;0;L;;;;;N;;;2C63;;2C63
+1D7E;LATIN SMALL CAPITAL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D7F;LATIN SMALL LETTER UPSILON WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D80;LATIN SMALL LETTER B WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D81;LATIN SMALL LETTER D WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D82;LATIN SMALL LETTER F WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D83;LATIN SMALL LETTER G WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D84;LATIN SMALL LETTER K WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D85;LATIN SMALL LETTER L WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D86;LATIN SMALL LETTER M WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D87;LATIN SMALL LETTER N WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D88;LATIN SMALL LETTER P WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D89;LATIN SMALL LETTER R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8A;LATIN SMALL LETTER S WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8B;LATIN SMALL LETTER ESH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8C;LATIN SMALL LETTER V WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8D;LATIN SMALL LETTER X WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8F;LATIN SMALL LETTER A WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D90;LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D91;LATIN SMALL LETTER D WITH HOOK AND TAIL;Ll;0;L;;;;;N;;;;;
+1D92;LATIN SMALL LETTER E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D93;LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D94;LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D95;LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D96;LATIN SMALL LETTER I WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D97;LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D98;LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D99;LATIN SMALL LETTER U WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D9A;LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L;<super> 0252;;;;N;;;;;
+1D9C;MODIFIER LETTER SMALL C;Lm;0;L;<super> 0063;;;;N;;;;;
+1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L;<super> 0255;;;;N;;;;;
+1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L;<super> 00F0;;;;N;;;;;
+1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
+1DA0;MODIFIER LETTER SMALL F;Lm;0;L;<super> 0066;;;;N;;;;;
+1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L;<super> 025F;;;;N;;;;;
+1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L;<super> 0261;;;;N;;;;;
+1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L;<super> 0265;;;;N;;;;;
+1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L;<super> 0268;;;;N;;;;;
+1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L;<super> 0269;;;;N;;;;;
+1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L;<super> 026A;;;;N;;;;;
+1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L;<super> 1D7B;;;;N;;;;;
+1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L;<super> 029D;;;;N;;;;;
+1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L;<super> 026D;;;;N;;;;;
+1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L;<super> 1D85;;;;N;;;;;
+1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L;<super> 029F;;;;N;;;;;
+1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L;<super> 0271;;;;N;;;;;
+1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L;<super> 0270;;;;N;;;;;
+1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L;<super> 0272;;;;N;;;;;
+1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L;<super> 0273;;;;N;;;;;
+1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L;<super> 0274;;;;N;;;;;
+1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L;<super> 0275;;;;N;;;;;
+1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L;<super> 0278;;;;N;;;;;
+1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L;<super> 0282;;;;N;;;;;
+1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L;<super> 0283;;;;N;;;;;
+1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L;<super> 01AB;;;;N;;;;;
+1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L;<super> 0289;;;;N;;;;;
+1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L;<super> 028A;;;;N;;;;;
+1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L;<super> 1D1C;;;;N;;;;;
+1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L;<super> 028B;;;;N;;;;;
+1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L;<super> 028C;;;;N;;;;;
+1DBB;MODIFIER LETTER SMALL Z;Lm;0;L;<super> 007A;;;;N;;;;;
+1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L;<super> 0290;;;;N;;;;;
+1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L;<super> 0291;;;;N;;;;;
+1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L;<super> 0292;;;;N;;;;;
+1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L;<super> 03B8;;;;N;;;;;
+1DC0;COMBINING DOTTED GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
+1DC1;COMBINING DOTTED ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
+1DC2;COMBINING SNAKE BELOW;Mn;220;NSM;;;;;N;;;;;
+1DC3;COMBINING SUSPENSION MARK;Mn;230;NSM;;;;;N;;;;;
+1DC4;COMBINING MACRON-ACUTE;Mn;230;NSM;;;;;N;;;;;
+1DC5;COMBINING GRAVE-MACRON;Mn;230;NSM;;;;;N;;;;;
+1DC6;COMBINING MACRON-GRAVE;Mn;230;NSM;;;;;N;;;;;
+1DC7;COMBINING ACUTE-MACRON;Mn;230;NSM;;;;;N;;;;;
+1DC8;COMBINING GRAVE-ACUTE-GRAVE;Mn;230;NSM;;;;;N;;;;;
+1DC9;COMBINING ACUTE-GRAVE-ACUTE;Mn;230;NSM;;;;;N;;;;;
+1DCA;COMBINING LATIN SMALL LETTER R BELOW;Mn;220;NSM;;;;;N;;;;;
+1DCB;COMBINING BREVE-MACRON;Mn;230;NSM;;;;;N;;;;;
+1DCC;COMBINING MACRON-BREVE;Mn;230;NSM;;;;;N;;;;;
+1DCD;COMBINING DOUBLE CIRCUMFLEX ABOVE;Mn;234;NSM;;;;;N;;;;;
+1DCE;COMBINING OGONEK ABOVE;Mn;214;NSM;;;;;N;;;;;
+1DCF;COMBINING ZIGZAG BELOW;Mn;220;NSM;;;;;N;;;;;
+1DD0;COMBINING IS BELOW;Mn;202;NSM;;;;;N;;;;;
+1DD1;COMBINING UR ABOVE;Mn;230;NSM;;;;;N;;;;;
+1DD2;COMBINING US ABOVE;Mn;230;NSM;;;;;N;;;;;
+1DD3;COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE;Mn;230;NSM;;;;;N;;;;;
+1DD4;COMBINING LATIN SMALL LETTER AE;Mn;230;NSM;;;;;N;;;;;
+1DD5;COMBINING LATIN SMALL LETTER AO;Mn;230;NSM;;;;;N;;;;;
+1DD6;COMBINING LATIN SMALL LETTER AV;Mn;230;NSM;;;;;N;;;;;
+1DD7;COMBINING LATIN SMALL LETTER C CEDILLA;Mn;230;NSM;;;;;N;;;;;
+1DD8;COMBINING LATIN SMALL LETTER INSULAR D;Mn;230;NSM;;;;;N;;;;;
+1DD9;COMBINING LATIN SMALL LETTER ETH;Mn;230;NSM;;;;;N;;;;;
+1DDA;COMBINING LATIN SMALL LETTER G;Mn;230;NSM;;;;;N;;;;;
+1DDB;COMBINING LATIN LETTER SMALL CAPITAL G;Mn;230;NSM;;;;;N;;;;;
+1DDC;COMBINING LATIN SMALL LETTER K;Mn;230;NSM;;;;;N;;;;;
+1DDD;COMBINING LATIN SMALL LETTER L;Mn;230;NSM;;;;;N;;;;;
+1DDE;COMBINING LATIN LETTER SMALL CAPITAL L;Mn;230;NSM;;;;;N;;;;;
+1DDF;COMBINING LATIN LETTER SMALL CAPITAL M;Mn;230;NSM;;;;;N;;;;;
+1DE0;COMBINING LATIN SMALL LETTER N;Mn;230;NSM;;;;;N;;;;;
+1DE1;COMBINING LATIN LETTER SMALL CAPITAL N;Mn;230;NSM;;;;;N;;;;;
+1DE2;COMBINING LATIN LETTER SMALL CAPITAL R;Mn;230;NSM;;;;;N;;;;;
+1DE3;COMBINING LATIN SMALL LETTER R ROTUNDA;Mn;230;NSM;;;;;N;;;;;
+1DE4;COMBINING LATIN SMALL LETTER S;Mn;230;NSM;;;;;N;;;;;
+1DE5;COMBINING LATIN SMALL LETTER LONG S;Mn;230;NSM;;;;;N;;;;;
+1DE6;COMBINING LATIN SMALL LETTER Z;Mn;230;NSM;;;;;N;;;;;
+1DFE;COMBINING LEFT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;
+1DFF;COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
+1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
+1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
+1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
+1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
+1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
+1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
+1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
+1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
+1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
+1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
+1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
+1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
+1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
+1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
+1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
+1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
+1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
+1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
+1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
+1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
+1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
+1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
+1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
+1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
+1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
+1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
+1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
+1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
+1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D;
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C
+1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
+1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
+1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
+1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
+1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
+1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
+1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
+1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
+1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
+1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
+1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
+1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
+1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
+1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
+1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
+1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
+1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
+1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
+1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
+1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
+1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
+1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
+1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
+1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
+1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
+1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
+1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
+1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
+1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
+1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
+1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
+1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
+1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
+1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
+1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
+1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
+1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
+1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
+1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
+1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
+1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
+1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
+1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
+1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
+1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
+1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
+1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
+1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
+1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
+1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
+1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
+1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
+1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
+1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
+1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
+1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
+1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
+1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
+1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
+1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
+1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
+1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
+1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
+1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
+1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
+1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
+1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
+1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
+1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
+1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
+1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
+1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
+1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
+1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
+1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
+1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
+1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
+1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
+1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
+1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
+1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
+1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
+1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
+1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
+1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
+1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
+1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
+1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
+1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
+1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
+1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
+1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
+1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
+1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
+1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
+1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
+1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
+1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
+1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
+1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
+1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
+1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
+1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
+1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
+1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
+1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
+1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
+1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
+1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
+1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
+1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
+1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
+1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
+1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
+1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
+1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
+1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
+1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
+1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
+1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
+1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
+1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
+1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
+1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
+1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;
+1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
+1E9C;LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;;;
+1E9D;LATIN SMALL LETTER LONG S WITH HIGH STROKE;Ll;0;L;;;;;N;;;;;
+1E9E;LATIN CAPITAL LETTER SHARP S;Lu;0;L;;;;;N;;;;00DF;
+1E9F;LATIN SMALL LETTER DELTA;Ll;0;L;;;;;N;;;;;
+1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
+1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
+1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
+1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
+1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
+1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
+1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
+1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
+1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
+1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
+1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
+1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
+1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD;
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC
+1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
+1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
+1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
+1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
+1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
+1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
+1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
+1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
+1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7;
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6
+1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
+1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
+1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
+1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
+1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
+1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
+1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
+1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
+1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
+1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
+1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
+1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
+1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
+1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
+1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7;
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6
+1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
+1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
+1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
+1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
+1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
+1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
+1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
+1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
+1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
+1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
+1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
+1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
+1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
+1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
+1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
+1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
+1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9;
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8
+1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
+1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
+1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
+1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
+1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
+1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
+1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
+1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
+1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
+1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
+1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
+1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
+1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
+1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
+1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
+1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
+1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
+1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
+1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
+1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
+1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
+1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
+1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
+1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
+1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
+1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
+1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
+1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
+1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
+1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
+1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
+1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
+1EFA;LATIN CAPITAL LETTER MIDDLE-WELSH LL;Lu;0;L;;;;;N;;;;1EFB;
+1EFB;LATIN SMALL LETTER MIDDLE-WELSH LL;Ll;0;L;;;;;N;;;1EFA;;1EFA
+1EFC;LATIN CAPITAL LETTER MIDDLE-WELSH V;Lu;0;L;;;;;N;;;;1EFD;
+1EFD;LATIN SMALL LETTER MIDDLE-WELSH V;Ll;0;L;;;;;N;;;1EFC;;1EFC
+1EFE;LATIN CAPITAL LETTER Y WITH LOOP;Lu;0;L;;;;;N;;;;1EFF;
+1EFF;LATIN SMALL LETTER Y WITH LOOP;Ll;0;L;;;;;N;;;1EFE;;1EFE
+1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
+1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
+1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
+1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
+1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
+1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
+1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
+1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
+1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
+1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
+1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
+1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
+1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
+1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
+1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
+1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
+1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
+1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
+1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
+1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
+1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
+1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
+1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
+1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
+1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
+1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
+1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
+1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
+1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
+1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
+1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
+1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
+1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
+1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
+1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
+1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
+1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
+1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
+1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
+1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
+1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
+1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
+1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
+1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
+1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
+1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
+1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
+1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
+1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
+1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
+1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
+1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
+1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
+1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
+1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
+1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
+1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
+1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
+1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
+1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
+1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
+1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
+1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
+1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
+1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
+1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
+1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
+1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
+1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
+1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
+1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
+1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
+1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
+1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
+1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
+1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
+1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
+1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
+1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
+1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
+1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
+1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
+1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
+1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
+1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
+1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
+1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
+1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
+1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
+1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
+1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
+1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
+1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
+1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
+1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
+1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
+1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
+1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
+1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
+1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
+1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
+1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB
+1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
+1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9
+1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
+1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB
+1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
+1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB
+1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
+1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9
+1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
+1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB
+1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
+1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB
+1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
+1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
+1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
+1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
+1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
+1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
+1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
+1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
+1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80;
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81;
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82;
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83;
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84;
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85;
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86;
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87;
+1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
+1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
+1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
+1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
+1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
+1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
+1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
+1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
+1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90;
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91;
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92;
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93;
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94;
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95;
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96;
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97;
+1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
+1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
+1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
+1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
+1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
+1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
+1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
+1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
+1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0;
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1;
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2;
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3;
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4;
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5;
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6;
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7;
+1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
+1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
+1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
+1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
+1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;;
+1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
+1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
+1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
+1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
+1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
+1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71;
+1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3;
+1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399
+1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;
+1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;
+1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
+1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
+1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;;
+1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
+1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
+1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
+1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73;
+1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
+1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75;
+1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3;
+1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;
+1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;
+1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;
+1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
+1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
+1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
+1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;;
+1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
+1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
+1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
+1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
+1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
+1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77;
+1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;
+1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;
+1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;
+1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
+1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
+1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
+1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;;
+1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
+1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
+1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
+1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
+1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
+1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
+1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
+1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B;
+1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
+1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;
+1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;;
+1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;
+1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
+1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
+1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;;
+1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
+1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
+1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
+1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79;
+1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
+1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D;
+1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3;
+1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;
+1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;
+2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
+2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
+2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200B;ZERO WIDTH SPACE;Cf;0;BN;;;;;N;;;;;
+200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;;
+200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;;
+200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
+200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
+2010;HYPHEN;Pd;0;ON;;;;;N;;;;;
+2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
+2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
+2013;EN DASH;Pd;0;ON;;;;;N;;;;;
+2014;EM DASH;Pd;0;ON;;;;;N;;;;;
+2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
+2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
+2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
+2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
+2020;DAGGER;Po;0;ON;;;;;N;;;;;
+2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
+2022;BULLET;Po;0;ON;;;;;N;;;;;
+2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
+2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
+2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
+2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
+2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
+2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;;
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;;
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;;
+202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;;
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;;
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;;
+202F;NARROW NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;;;;;
+2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
+2032;PRIME;Po;0;ET;;;;;N;;;;;
+2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
+2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
+2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
+2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
+2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
+2038;CARET;Po;0;ON;;;;;N;;;;;
+2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
+203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
+203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
+203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
+203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
+203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
+203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;;
+2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
+2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
+2042;ASTERISM;Po;0;ON;;;;;N;;;;;
+2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
+2044;FRACTION SLASH;Sm;0;CS;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+2047;DOUBLE QUESTION MARK;Po;0;ON;<compat> 003F 003F;;;;N;;;;;
+2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;;
+2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;;
+204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;;
+204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;;
+204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;;
+204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;;
+2050;CLOSE UP;Po;0;ON;;;;;N;;;;;
+2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;;
+2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;;
+2053;SWUNG DASH;Po;0;ON;;;;;N;;;;;
+2054;INVERTED UNDERTIE;Pc;0;ON;;;;;N;;;;;
+2055;FLOWER PUNCTUATION MARK;Po;0;ON;;;;;N;;;;;
+2056;THREE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2057;QUADRUPLE PRIME;Po;0;ON;<compat> 2032 2032 2032 2032;;;;N;;;;;
+2058;FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2059;FIVE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+205A;TWO DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+205B;FOUR DOT MARK;Po;0;ON;;;;;N;;;;;
+205C;DOTTED CROSS;Po;0;ON;;;;;N;;;;;
+205D;TRICOLON;Po;0;ON;;;;;N;;;;;
+205E;VERTICAL FOUR DOTS;Po;0;ON;;;;;N;;;;;
+205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2060;WORD JOINER;Cf;0;BN;;;;;N;;;;;
+2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;;
+2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;;
+2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;;
+2064;INVISIBLE PLUS;Cf;0;BN;;;;;N;;;;;
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2071;SUPERSCRIPT LATIN SMALL LETTER I;Ll;0;L;<super> 0069;;;;N;;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ES;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ES;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
+207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
+207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
+207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
+207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;;
+2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ES;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ES;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
+208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
+208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
+208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
+2090;LATIN SUBSCRIPT SMALL LETTER A;Lm;0;L;<sub> 0061;;;;N;;;;;
+2091;LATIN SUBSCRIPT SMALL LETTER E;Lm;0;L;<sub> 0065;;;;N;;;;;
+2092;LATIN SUBSCRIPT SMALL LETTER O;Lm;0;L;<sub> 006F;;;;N;;;;;
+2093;LATIN SUBSCRIPT SMALL LETTER X;Lm;0;L;<sub> 0078;;;;N;;;;;
+2094;LATIN SUBSCRIPT SMALL LETTER SCHWA;Lm;0;L;<sub> 0259;;;;N;;;;;
+20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
+20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
+20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
+20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
+20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
+20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
+20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
+20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
+20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
+20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
+20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;;
+20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;;
+20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;
+20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;;
+20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;;
+20B2;GUARANI SIGN;Sc;0;ET;;;;;N;;;;;
+20B3;AUSTRAL SIGN;Sc;0;ET;;;;;N;;;;;
+20B4;HRYVNIA SIGN;Sc;0;ET;;;;;N;;;;;
+20B5;CEDI SIGN;Sc;0;ET;;;;;N;;;;;
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
+20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;;
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;;
+20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;;
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;;
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;;
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
+20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;;
+20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;;
+20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;;
+20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;;
+20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;;
+20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
+20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20EB;COMBINING LONG DOUBLE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20EC;COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;;
+20ED;COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;;
+20EE;COMBINING LEFT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+20EF;COMBINING RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+20F0;COMBINING ASTERISK ABOVE;Mn;230;NSM;;;;;N;;;;;
+2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
+2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
+2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
+2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
+2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
+2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
+2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
+2108;SCRUPLE;So;0;ON;;;;;N;;;;;
+2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
+210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
+210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
+210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
+210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
+210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
+2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
+2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
+2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
+2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
+2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
+2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
+2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
+2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;;
+2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
+211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
+211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
+211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
+211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
+211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
+211F;RESPONSE;So;0;ON;;;;;N;;;;;
+2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
+2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
+2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
+2123;VERSICLE;So;0;ON;;;;;N;;;;;
+2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
+2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
+2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9;
+2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
+2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
+2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
+212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
+212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5;
+212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
+212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
+212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;;
+212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
+2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
+2132;TURNED CAPITAL F;Lu;0;L;;;;;N;TURNED F;;;214E;
+2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
+2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
+2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
+2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
+2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
+2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;;
+213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;;
+213B;FACSIMILE SIGN;So;0;ON;<compat> 0046 0041 0058;;;;N;;;;;
+213C;DOUBLE-STRUCK SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON;<font> 2211;;;;Y;;;;;
+2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;;
+2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
+2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
+2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;;
+2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+214A;PROPERTY LINE;So;0;ON;;;;;N;;;;;
+214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;;
+214C;PER SIGN;So;0;ON;;;;;N;;;;;
+214D;AKTIESELSKAB;So;0;ON;;;;;N;;;;;
+214E;TURNED SMALL F;Ll;0;L;;;;;N;;;2132;;2132
+214F;SYMBOL FOR SAMARITAN SOURCE;So;0;L;;;;;N;;;;;
+2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
+2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
+2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
+2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
+2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
+2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
+2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
+215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
+215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
+215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
+215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
+215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
+215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
+2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
+2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
+2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
+2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
+2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
+2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
+2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
+2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
+2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
+2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
+216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
+216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
+216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
+216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
+216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
+216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
+2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
+2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
+2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
+2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
+2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
+2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
+2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
+2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
+2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
+2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
+217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
+217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
+217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
+217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
+217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
+217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
+2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
+2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
+2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
+2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Lu;0;L;;;;;N;;;;2184;
+2184;LATIN SMALL LETTER REVERSED C;Ll;0;L;;;;;N;;;2183;;2183
+2185;ROMAN NUMERAL SIX LATE FORM;Nl;0;L;;;;6;N;;;;;
+2186;ROMAN NUMERAL FIFTY EARLY FORM;Nl;0;L;;;;50;N;;;;;
+2187;ROMAN NUMERAL FIFTY THOUSAND;Nl;0;L;;;;50000;N;;;;;
+2188;ROMAN NUMERAL ONE HUNDRED THOUSAND;Nl;0;L;;;;100000;N;;;;;
+2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
+2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
+2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
+2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
+2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
+2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
+2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
+2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
+2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
+219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;;
+219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;;
+219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
+219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
+219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
+219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
+21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
+21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
+21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
+21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
+21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
+21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
+21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
+21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
+21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
+21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
+21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
+21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
+21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
+21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
+21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;;
+21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
+21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
+21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
+21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
+21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
+21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
+21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
+21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
+21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
+21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
+21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
+21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
+21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
+21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
+21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
+21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
+21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
+21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
+21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
+21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
+21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
+21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
+21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
+21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
+21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
+21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
+21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;;
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
+21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
+21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
+21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
+21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
+21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
+21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
+21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
+21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
+21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
+21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
+21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
+21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
+21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
+21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
+21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
+21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
+21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
+21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
+21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
+21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
+21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
+21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
+21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
+21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
+21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
+21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
+21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;;
+21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;;
+21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;;
+21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;;
+21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
+2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
+2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
+2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
+2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
+2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
+2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
+2207;NABLA;Sm;0;ON;;;;;N;;;;;
+2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
+220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
+220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
+220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
+2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
+2212;MINUS SIGN;Sm;0;ES;;;;;N;;;;;
+2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
+2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
+2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
+221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
+221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
+221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
+221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
+221E;INFINITY;Sm;0;ON;;;;;N;;;;;
+221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
+2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
+2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
+2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
+2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
+2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
+2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
+222A;UNION;Sm;0;ON;;;;;N;;;;;
+222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
+222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
+222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
+2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
+2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
+2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
+2236;RATIO;Sm;0;ON;;;;;N;;;;;
+2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
+2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
+2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
+223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
+223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
+223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;;
+223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
+223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
+2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;;
+2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
+2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
+2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
+2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
+224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
+224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
+2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
+2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
+2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
+2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
+2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
+225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
+225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
+225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
+225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
+225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
+225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
+2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
+2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
+2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
+2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
+2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
+2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
+2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
+2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
+226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
+226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
+226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
+226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
+226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
+2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
+2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
+2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
+2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
+2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
+2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
+2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
+2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
+2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
+2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
+227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
+227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
+2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
+2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
+2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
+2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
+2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
+2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
+2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
+228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
+228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
+228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
+228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
+228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
+228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
+2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
+2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
+2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
+2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
+229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
+229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
+229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
+22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
+22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
+22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
+22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
+22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
+22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
+22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
+22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
+22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
+22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
+22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
+22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
+22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
+22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
+22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
+22BB;XOR;Sm;0;ON;;;;;N;;;;;
+22BC;NAND;Sm;0;ON;;;;;N;;;;;
+22BD;NOR;Sm;0;ON;;;;;N;;;;;
+22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
+22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
+22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
+22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
+22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
+22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
+22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
+22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
+22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
+22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
+22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
+22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
+22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
+22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
+22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
+22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
+22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
+22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
+22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
+22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
+22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
+22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
+22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
+22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
+22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
+22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
+22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
+22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;;
+22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;;
+2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
+2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;;
+2302;HOUSE;So;0;ON;;;;;N;;;;;
+2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
+2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
+2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
+2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
+2307;WAVY LINE;So;0;ON;;;;;N;;;;;
+2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
+2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
+230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
+230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
+230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
+230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
+2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
+2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
+2312;ARC;So;0;ON;;;;;N;;;;;
+2313;SEGMENT;So;0;ON;;;;;N;;;;;
+2314;SECTOR;So;0;ON;;;;;N;;;;;
+2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
+2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
+2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
+2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
+2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
+231A;WATCH;So;0;ON;;;;;N;;;;;
+231B;HOURGLASS;So;0;ON;;;;;N;;;;;
+231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
+231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
+231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
+231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
+2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2322;FROWN;So;0;ON;;;;;N;;;;;
+2323;SMILE;So;0;ON;;;;;N;;;;;
+2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
+2325;OPTION KEY;So;0;ON;;;;;N;;;;;
+2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
+2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
+2328;KEYBOARD;So;0;ON;;;;;N;;;;;
+2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
+232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
+232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
+232C;BENZENE RING;So;0;ON;;;;;N;;;;;
+232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
+232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
+232F;SYMMETRY;So;0;ON;;;;;N;;;;;
+2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
+2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
+2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
+2333;SLOPE;So;0;ON;;;;;N;;;;;
+2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
+2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
+2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
+2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
+2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
+2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
+233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
+233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
+233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
+233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
+233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
+233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
+2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
+2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
+2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
+2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
+2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
+2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
+2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
+2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
+2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
+2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
+234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;;
+234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
+234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
+234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
+234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;;
+234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
+2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
+2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;;
+2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
+2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
+2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
+2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;;
+2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
+2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
+2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
+2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
+235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
+235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
+235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
+235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
+235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
+235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
+2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
+2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;;
+2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
+2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
+2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
+2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
+2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
+2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
+2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
+2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
+236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
+236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
+236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
+236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
+236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
+236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
+2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
+2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
+2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
+2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
+2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
+2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
+2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
+2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
+2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
+2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
+237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
+237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;;
+237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;;
+237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;;
+237E;BELL SYMBOL;So;0;ON;;;;;N;;;;;
+237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;
+2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;;
+2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;;
+2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;;
+2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;;
+2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;;
+2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2388;HELM SYMBOL;So;0;ON;;;;;N;;;;;
+2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;;
+238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;;
+238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;;
+238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;;
+238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;;
+238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;;
+238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;;
+2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;;
+2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;;
+2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;;
+2398;NEXT PAGE;So;0;ON;;;;;N;;;;;
+2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
+239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
+23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
+23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
+23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
+23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
+23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
+23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;;
+23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;;
+23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
+23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
+23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;;
+23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;;
+23B4;TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;;
+23B5;BOTTOM SQUARE BRACKET;So;0;ON;;;;;N;;;;;
+23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;;
+23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;;
+23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
+23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
+23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;;
+23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;;
+23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;;
+23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;;
+23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;;
+23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;;
+23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;;
+23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
+23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
+23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;;
+23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;;
+23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;;
+23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;;
+23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;;
+23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;;
+23CF;EJECT SYMBOL;So;0;ON;;;;;N;;;;;
+23D0;VERTICAL LINE EXTENSION;So;0;ON;;;;;N;;;;;
+23D1;METRICAL BREVE;So;0;ON;;;;;N;;;;;
+23D2;METRICAL LONG OVER SHORT;So;0;ON;;;;;N;;;;;
+23D3;METRICAL SHORT OVER LONG;So;0;ON;;;;;N;;;;;
+23D4;METRICAL LONG OVER TWO SHORTS;So;0;ON;;;;;N;;;;;
+23D5;METRICAL TWO SHORTS OVER LONG;So;0;ON;;;;;N;;;;;
+23D6;METRICAL TWO SHORTS JOINED;So;0;ON;;;;;N;;;;;
+23D7;METRICAL TRISEME;So;0;ON;;;;;N;;;;;
+23D8;METRICAL TETRASEME;So;0;ON;;;;;N;;;;;
+23D9;METRICAL PENTASEME;So;0;ON;;;;;N;;;;;
+23DA;EARTH GROUND;So;0;ON;;;;;N;;;;;
+23DB;FUSE;So;0;ON;;;;;N;;;;;
+23DC;TOP PARENTHESIS;Sm;0;ON;;;;;N;;mathematical use;;;
+23DD;BOTTOM PARENTHESIS;Sm;0;ON;;;;;N;;mathematical use;;;
+23DE;TOP CURLY BRACKET;Sm;0;ON;;;;;N;;mathematical use;;;
+23DF;BOTTOM CURLY BRACKET;Sm;0;ON;;;;;N;;mathematical use;;;
+23E0;TOP TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;mathematical use;;;
+23E1;BOTTOM TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;mathematical use;;;
+23E2;WHITE TRAPEZIUM;So;0;ON;;;;;N;;;;;
+23E3;BENZENE RING WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23E4;STRAIGHTNESS;So;0;ON;;;;;N;;;;;
+23E5;FLATNESS;So;0;ON;;;;;N;;;;;
+23E6;AC CURRENT;So;0;ON;;;;;N;;;;;
+23E7;ELECTRICAL INTERSECTION;So;0;ON;;;;;N;;;;;
+2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
+2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
+2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
+2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
+2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
+2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
+2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
+2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
+2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
+2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
+240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
+240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
+240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
+240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
+240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
+240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
+2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
+2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
+2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
+2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
+2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
+2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
+2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
+2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
+2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
+2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
+241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
+241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
+241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
+241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
+241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
+241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
+2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
+2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
+2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
+2423;OPEN BOX;So;0;ON;;;;;N;;;;;
+2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
+2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;;
+2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;;
+2440;OCR HOOK;So;0;ON;;;;;N;;;;;
+2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
+2442;OCR FORK;So;0;ON;;;;;N;;;;;
+2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
+2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
+2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
+2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
+2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
+2448;OCR DASH;So;0;ON;;;;;N;;;;;
+2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
+244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
+2460;CIRCLED DIGIT ONE;No;0;ON;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;ON;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;ON;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;ON;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;ON;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;ON;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;ON;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;ON;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;ON;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;ON;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;ON;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;ON;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;ON;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;ON;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;ON;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;ON;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;ON;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;ON;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;ON;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;ON;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;ON;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;ON;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;ON;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;ON;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;ON;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;ON;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;ON;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;ON;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;ON;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;ON;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;ON;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;ON;<compat> 0028 0032 0030 0029;;;20;N;;;;;
+2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
+2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
+248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
+248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
+248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
+248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
+248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
+248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
+2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
+2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
+2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
+2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
+2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
+2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
+2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
+2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
+2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
+2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
+249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
+249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
+249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
+249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
+249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
+249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
+24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
+24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
+24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
+24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
+24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
+24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
+24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
+24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
+24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
+24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
+24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
+24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
+24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
+24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
+24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
+24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
+24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
+24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
+24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
+24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
+24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
+24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
+24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
+24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
+24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
+24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
+24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
+24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
+24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
+24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
+24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
+24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
+24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
+24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
+24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
+24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
+24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
+24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
+24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
+24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
+24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
+24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
+24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
+24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
+24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
+24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
+24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
+24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
+24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
+24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
+24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
+24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
+24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
+24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
+24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
+24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
+24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
+24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
+24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
+24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
+24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
+24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
+24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
+24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
+24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
+24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
+24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
+24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
+24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
+24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
+24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
+24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
+24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
+24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
+24EA;CIRCLED DIGIT ZERO;No;0;ON;<circle> 0030;;0;0;N;;;;;
+24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;;
+24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;;
+24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;;
+24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;;
+24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;;
+24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;;
+24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;;
+24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;;
+24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;;
+24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;;
+24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;;
+24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;;
+24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;;
+24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;;
+24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;;
+24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;;
+24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;;
+24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;;
+24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;;
+24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;;
+24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;0;0;N;;;;;
+2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
+2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
+2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
+2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
+2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
+2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
+2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
+2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
+2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
+2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
+250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
+250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
+250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
+250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
+250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
+250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
+2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
+2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
+2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
+2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
+2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
+2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
+2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
+2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
+2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
+2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
+251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
+251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
+251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
+251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
+251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
+251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
+2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
+2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
+2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
+2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
+2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
+2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
+2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
+2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
+2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
+252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
+252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
+252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
+252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
+252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
+252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
+2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
+2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
+2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
+2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
+2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
+2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
+2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
+2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
+2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
+2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
+253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
+253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
+253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
+253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
+253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
+253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
+2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
+2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
+2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
+2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
+2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
+2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
+2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
+2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
+2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
+254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
+254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
+254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
+254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
+254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
+254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
+2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
+2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
+2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
+2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
+2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
+2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
+2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
+2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
+2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
+2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
+255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
+255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
+255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
+255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
+255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
+255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
+2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
+2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
+2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
+2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
+2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
+2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
+2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
+2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
+2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
+2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
+256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
+256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
+256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
+256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
+256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
+256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
+2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
+2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
+2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
+2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
+2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
+2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
+2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
+2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
+2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
+2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
+257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
+257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
+257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
+257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
+257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
+257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
+2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
+2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
+2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
+258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
+258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
+2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
+2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+2593;DARK SHADE;So;0;ON;;;;;N;;;;;
+2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;;
+2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;;
+2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;;
+2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;;
+259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
+25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
+25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
+25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
+25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
+25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
+25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
+25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
+25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
+25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
+25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
+25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
+25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
+25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
+25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
+25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
+25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
+25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
+25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
+25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
+25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
+25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
+25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
+25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
+25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
+25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
+25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
+25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
+25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
+25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+25C9;FISHEYE;So;0;ON;;;;;N;;;;;
+25CA;LOZENGE;So;0;ON;;;;;N;;;;;
+25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
+25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
+25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
+25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
+25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
+25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
+25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
+25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
+25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
+25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
+25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
+25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
+25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+2601;CLOUD;So;0;ON;;;;;N;;;;;
+2602;UMBRELLA;So;0;ON;;;;;N;;;;;
+2603;SNOWMAN;So;0;ON;;;;;N;;;;;
+2604;COMET;So;0;ON;;;;;N;;;;;
+2605;BLACK STAR;So;0;ON;;;;;N;;;;;
+2606;WHITE STAR;So;0;ON;;;;;N;;;;;
+2607;LIGHTNING;So;0;ON;;;;;N;;;;;
+2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
+2609;SUN;So;0;ON;;;;;N;;;;;
+260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
+260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
+260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
+260D;OPPOSITION;So;0;ON;;;;;N;;;;;
+260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
+260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
+2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
+2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
+2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
+2613;SALTIRE;So;0;ON;;;;;N;;;;;
+2614;UMBRELLA WITH RAIN DROPS;So;0;ON;;;;;N;;;;;
+2615;HOT BEVERAGE;So;0;ON;;;;;N;;;;;
+2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;;
+2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;;
+2618;SHAMROCK;So;0;ON;;;;;N;;;;;
+2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
+261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
+2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
+2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
+2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
+2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
+2624;CADUCEUS;So;0;ON;;;;;N;;;;;
+2625;ANKH;So;0;ON;;;;;N;;;;;
+2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
+2627;CHI RHO;So;0;ON;;;;;N;;;;;
+2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
+2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
+262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
+262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
+262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
+262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
+262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
+262F;YIN YANG;So;0;ON;;;;;N;;;;;
+2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
+2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
+2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
+2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
+2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
+2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
+2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
+2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
+2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
+263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
+263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
+263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263F;MERCURY;So;0;ON;;;;;N;;;;;
+2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
+2641;EARTH;So;0;ON;;;;;N;;;;;
+2642;MALE SIGN;So;0;ON;;;;;N;;;;;
+2643;JUPITER;So;0;ON;;;;;N;;;;;
+2644;SATURN;So;0;ON;;;;;N;;;;;
+2645;URANUS;So;0;ON;;;;;N;;;;;
+2646;NEPTUNE;So;0;ON;;;;;N;;;;;
+2647;PLUTO;So;0;ON;;;;;N;;;;;
+2648;ARIES;So;0;ON;;;;;N;;;;;
+2649;TAURUS;So;0;ON;;;;;N;;;;;
+264A;GEMINI;So;0;ON;;;;;N;;;;;
+264B;CANCER;So;0;ON;;;;;N;;;;;
+264C;LEO;So;0;ON;;;;;N;;;;;
+264D;VIRGO;So;0;ON;;;;;N;;;;;
+264E;LIBRA;So;0;ON;;;;;N;;;;;
+264F;SCORPIUS;So;0;ON;;;;;N;;;;;
+2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
+2651;CAPRICORN;So;0;ON;;;;;N;;;;;
+2652;AQUARIUS;So;0;ON;;;;;N;;;;;
+2653;PISCES;So;0;ON;;;;;N;;;;;
+2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
+2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
+2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
+2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
+2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
+265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
+265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
+265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
+265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
+265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
+2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
+2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
+2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
+2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
+2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
+2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
+2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
+2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
+266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
+266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
+266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
+266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
+266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
+266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;;
+2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
+2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;pete;;;
+2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;hdpe;;;
+2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;pvc;;;
+2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;ldpe;;;
+2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;pp;;;
+2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;ps;;;
+2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;other;;;
+267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;;
+267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
+267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
+267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
+267E;PERMANENT PAPER SIGN;So;0;ON;;;;;N;;;;;
+267F;WHEELCHAIR SYMBOL;So;0;ON;;;;;N;;;;;
+2680;DIE FACE-1;So;0;ON;;;;;N;;;;;
+2681;DIE FACE-2;So;0;ON;;;;;N;;;;;
+2682;DIE FACE-3;So;0;ON;;;;;N;;;;;
+2683;DIE FACE-4;So;0;ON;;;;;N;;;;;
+2684;DIE FACE-5;So;0;ON;;;;;N;;;;;
+2685;DIE FACE-6;So;0;ON;;;;;N;;;;;
+2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;;
+2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;;
+2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;;
+2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;;
+268A;MONOGRAM FOR YANG;So;0;ON;;;;;N;;;;;
+268B;MONOGRAM FOR YIN;So;0;ON;;;;;N;;;;;
+268C;DIGRAM FOR GREATER YANG;So;0;ON;;;;;N;;;;;
+268D;DIGRAM FOR LESSER YIN;So;0;ON;;;;;N;;;;;
+268E;DIGRAM FOR LESSER YANG;So;0;ON;;;;;N;;;;;
+268F;DIGRAM FOR GREATER YIN;So;0;ON;;;;;N;;;;;
+2690;WHITE FLAG;So;0;ON;;;;;N;;;;;
+2691;BLACK FLAG;So;0;ON;;;;;N;;;;;
+2692;HAMMER AND PICK;So;0;ON;;;;;N;;;;;
+2693;ANCHOR;So;0;ON;;;;;N;;;;;
+2694;CROSSED SWORDS;So;0;ON;;;;;N;;;;;
+2695;STAFF OF AESCULAPIUS;So;0;ON;;;;;N;;;;;
+2696;SCALES;So;0;ON;;;;;N;;;;;
+2697;ALEMBIC;So;0;ON;;;;;N;;;;;
+2698;FLOWER;So;0;ON;;;;;N;;;;;
+2699;GEAR;So;0;ON;;;;;N;;;;;
+269A;STAFF OF HERMES;So;0;ON;;;;;N;;;;;
+269B;ATOM SYMBOL;So;0;ON;;;;;N;;;;;
+269C;FLEUR-DE-LIS;So;0;ON;;;;;N;;;;;
+269D;OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+26A0;WARNING SIGN;So;0;ON;;;;;N;;;;;
+26A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;;
+26A2;DOUBLED FEMALE SIGN;So;0;ON;;;;;N;;;;;
+26A3;DOUBLED MALE SIGN;So;0;ON;;;;;N;;;;;
+26A4;INTERLOCKED FEMALE AND MALE SIGN;So;0;ON;;;;;N;;;;;
+26A5;MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;;
+26A6;MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
+26A7;MALE WITH STROKE AND MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;;
+26A8;VERTICAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
+26A9;HORIZONTAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
+26AA;MEDIUM WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+26AB;MEDIUM BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+26AC;MEDIUM SMALL WHITE CIRCLE;So;0;L;;;;;N;;;;;
+26AD;MARRIAGE SYMBOL;So;0;ON;;;;;N;;;;;
+26AE;DIVORCE SYMBOL;So;0;ON;;;;;N;;;;;
+26AF;UNMARRIED PARTNERSHIP SYMBOL;So;0;ON;;;;;N;;;;;
+26B0;COFFIN;So;0;ON;;;;;N;;;;;
+26B1;FUNERAL URN;So;0;ON;;;;;N;;;;;
+26B2;NEUTER;So;0;ON;;;;;N;;;;;
+26B3;CERES;So;0;ON;;;;;N;;;;;
+26B4;PALLAS;So;0;ON;;;;;N;;;;;
+26B5;JUNO;So;0;ON;;;;;N;;;;;
+26B6;VESTA;So;0;ON;;;;;N;;;;;
+26B7;CHIRON;So;0;ON;;;;;N;;;;;
+26B8;BLACK MOON LILITH;So;0;ON;;;;;N;;;;;
+26B9;SEXTILE;So;0;ON;;;;;N;;;;;
+26BA;SEMISEXTILE;So;0;ON;;;;;N;;;;;
+26BB;QUINCUNX;So;0;ON;;;;;N;;;;;
+26BC;SESQUIQUADRATE;So;0;ON;;;;;N;;;;;
+26C0;WHITE DRAUGHTS MAN;So;0;ON;;;;;N;;;;;
+26C1;WHITE DRAUGHTS KING;So;0;ON;;;;;N;;;;;
+26C2;BLACK DRAUGHTS MAN;So;0;ON;;;;;N;;;;;
+26C3;BLACK DRAUGHTS KING;So;0;ON;;;;;N;;;;;
+2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
+2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
+2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
+2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
+2708;AIRPLANE;So;0;ON;;;;;N;;;;;
+2709;ENVELOPE;So;0;ON;;;;;N;;;;;
+270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
+270D;WRITING HAND;So;0;ON;;;;;N;;;;;
+270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+270F;PENCIL;So;0;ON;;;;;N;;;;;
+2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+2711;WHITE NIB;So;0;ON;;;;;N;;;;;
+2712;BLACK NIB;So;0;ON;;;;;N;;;;;
+2713;CHECK MARK;So;0;ON;;;;;N;;;;;
+2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
+2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2717;BALLOT X;So;0;ON;;;;;N;;;;;
+2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
+2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
+271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
+271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
+271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
+271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
+271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
+271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
+2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
+2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
+2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
+272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
+272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
+272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
+2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
+2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
+2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
+273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
+273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
+2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
+2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2747;SPARKLE;So;0;ON;;;;;N;;;;;
+2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
+2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
+2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
+2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
+2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
+2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
+2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
+2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
+2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
+2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
+2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
+277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
+277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
+277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
+277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
+277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
+277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
+2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
+2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
+2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
+2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
+2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
+2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
+2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
+2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
+278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
+278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
+278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
+278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
+278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
+278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
+2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
+2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
+2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
+2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
+2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
+279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
+279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
+279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
+279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
+279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
+279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
+27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
+27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
+27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
+27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
+27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
+27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
+27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
+27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
+27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
+27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
+27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
+27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
+27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
+27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
+27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
+27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
+27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
+27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
+27C0;THREE DIMENSIONAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+27C1;WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE;Sm;0;ON;;;;;N;;;;;
+27C2;PERPENDICULAR;Sm;0;ON;;;;;N;;;;;
+27C3;OPEN SUBSET;Sm;0;ON;;;;;Y;;;;;
+27C4;OPEN SUPERSET;Sm;0;ON;;;;;Y;;;;;
+27C5;LEFT S-SHAPED BAG DELIMITER;Ps;0;ON;;;;;Y;;;;;
+27C6;RIGHT S-SHAPED BAG DELIMITER;Pe;0;ON;;;;;Y;;;;;
+27C7;OR WITH DOT INSIDE;Sm;0;ON;;;;;N;;;;;
+27C8;REVERSE SOLIDUS PRECEDING SUBSET;Sm;0;ON;;;;;Y;;;;;
+27C9;SUPERSET PRECEDING SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+27CA;VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+27CC;LONG DIVISION;Sm;0;ON;;;;;Y;;;;;
+27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;;
+27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;;
+27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;;
+27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
+27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
+27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
+27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
+27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;;
+27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;;
+27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;;
+27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;;
+27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;;
+27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;;
+27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;;
+27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27EC;MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;;
+27ED;MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;;
+27EE;MATHEMATICAL LEFT FLATTENED PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+27EF;MATHEMATICAL RIGHT FLATTENED PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
+27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;;
+2800;BRAILLE PATTERN BLANK;So;0;L;;;;;N;;;;;
+2801;BRAILLE PATTERN DOTS-1;So;0;L;;;;;N;;;;;
+2802;BRAILLE PATTERN DOTS-2;So;0;L;;;;;N;;;;;
+2803;BRAILLE PATTERN DOTS-12;So;0;L;;;;;N;;;;;
+2804;BRAILLE PATTERN DOTS-3;So;0;L;;;;;N;;;;;
+2805;BRAILLE PATTERN DOTS-13;So;0;L;;;;;N;;;;;
+2806;BRAILLE PATTERN DOTS-23;So;0;L;;;;;N;;;;;
+2807;BRAILLE PATTERN DOTS-123;So;0;L;;;;;N;;;;;
+2808;BRAILLE PATTERN DOTS-4;So;0;L;;;;;N;;;;;
+2809;BRAILLE PATTERN DOTS-14;So;0;L;;;;;N;;;;;
+280A;BRAILLE PATTERN DOTS-24;So;0;L;;;;;N;;;;;
+280B;BRAILLE PATTERN DOTS-124;So;0;L;;;;;N;;;;;
+280C;BRAILLE PATTERN DOTS-34;So;0;L;;;;;N;;;;;
+280D;BRAILLE PATTERN DOTS-134;So;0;L;;;;;N;;;;;
+280E;BRAILLE PATTERN DOTS-234;So;0;L;;;;;N;;;;;
+280F;BRAILLE PATTERN DOTS-1234;So;0;L;;;;;N;;;;;
+2810;BRAILLE PATTERN DOTS-5;So;0;L;;;;;N;;;;;
+2811;BRAILLE PATTERN DOTS-15;So;0;L;;;;;N;;;;;
+2812;BRAILLE PATTERN DOTS-25;So;0;L;;;;;N;;;;;
+2813;BRAILLE PATTERN DOTS-125;So;0;L;;;;;N;;;;;
+2814;BRAILLE PATTERN DOTS-35;So;0;L;;;;;N;;;;;
+2815;BRAILLE PATTERN DOTS-135;So;0;L;;;;;N;;;;;
+2816;BRAILLE PATTERN DOTS-235;So;0;L;;;;;N;;;;;
+2817;BRAILLE PATTERN DOTS-1235;So;0;L;;;;;N;;;;;
+2818;BRAILLE PATTERN DOTS-45;So;0;L;;;;;N;;;;;
+2819;BRAILLE PATTERN DOTS-145;So;0;L;;;;;N;;;;;
+281A;BRAILLE PATTERN DOTS-245;So;0;L;;;;;N;;;;;
+281B;BRAILLE PATTERN DOTS-1245;So;0;L;;;;;N;;;;;
+281C;BRAILLE PATTERN DOTS-345;So;0;L;;;;;N;;;;;
+281D;BRAILLE PATTERN DOTS-1345;So;0;L;;;;;N;;;;;
+281E;BRAILLE PATTERN DOTS-2345;So;0;L;;;;;N;;;;;
+281F;BRAILLE PATTERN DOTS-12345;So;0;L;;;;;N;;;;;
+2820;BRAILLE PATTERN DOTS-6;So;0;L;;;;;N;;;;;
+2821;BRAILLE PATTERN DOTS-16;So;0;L;;;;;N;;;;;
+2822;BRAILLE PATTERN DOTS-26;So;0;L;;;;;N;;;;;
+2823;BRAILLE PATTERN DOTS-126;So;0;L;;;;;N;;;;;
+2824;BRAILLE PATTERN DOTS-36;So;0;L;;;;;N;;;;;
+2825;BRAILLE PATTERN DOTS-136;So;0;L;;;;;N;;;;;
+2826;BRAILLE PATTERN DOTS-236;So;0;L;;;;;N;;;;;
+2827;BRAILLE PATTERN DOTS-1236;So;0;L;;;;;N;;;;;
+2828;BRAILLE PATTERN DOTS-46;So;0;L;;;;;N;;;;;
+2829;BRAILLE PATTERN DOTS-146;So;0;L;;;;;N;;;;;
+282A;BRAILLE PATTERN DOTS-246;So;0;L;;;;;N;;;;;
+282B;BRAILLE PATTERN DOTS-1246;So;0;L;;;;;N;;;;;
+282C;BRAILLE PATTERN DOTS-346;So;0;L;;;;;N;;;;;
+282D;BRAILLE PATTERN DOTS-1346;So;0;L;;;;;N;;;;;
+282E;BRAILLE PATTERN DOTS-2346;So;0;L;;;;;N;;;;;
+282F;BRAILLE PATTERN DOTS-12346;So;0;L;;;;;N;;;;;
+2830;BRAILLE PATTERN DOTS-56;So;0;L;;;;;N;;;;;
+2831;BRAILLE PATTERN DOTS-156;So;0;L;;;;;N;;;;;
+2832;BRAILLE PATTERN DOTS-256;So;0;L;;;;;N;;;;;
+2833;BRAILLE PATTERN DOTS-1256;So;0;L;;;;;N;;;;;
+2834;BRAILLE PATTERN DOTS-356;So;0;L;;;;;N;;;;;
+2835;BRAILLE PATTERN DOTS-1356;So;0;L;;;;;N;;;;;
+2836;BRAILLE PATTERN DOTS-2356;So;0;L;;;;;N;;;;;
+2837;BRAILLE PATTERN DOTS-12356;So;0;L;;;;;N;;;;;
+2838;BRAILLE PATTERN DOTS-456;So;0;L;;;;;N;;;;;
+2839;BRAILLE PATTERN DOTS-1456;So;0;L;;;;;N;;;;;
+283A;BRAILLE PATTERN DOTS-2456;So;0;L;;;;;N;;;;;
+283B;BRAILLE PATTERN DOTS-12456;So;0;L;;;;;N;;;;;
+283C;BRAILLE PATTERN DOTS-3456;So;0;L;;;;;N;;;;;
+283D;BRAILLE PATTERN DOTS-13456;So;0;L;;;;;N;;;;;
+283E;BRAILLE PATTERN DOTS-23456;So;0;L;;;;;N;;;;;
+283F;BRAILLE PATTERN DOTS-123456;So;0;L;;;;;N;;;;;
+2840;BRAILLE PATTERN DOTS-7;So;0;L;;;;;N;;;;;
+2841;BRAILLE PATTERN DOTS-17;So;0;L;;;;;N;;;;;
+2842;BRAILLE PATTERN DOTS-27;So;0;L;;;;;N;;;;;
+2843;BRAILLE PATTERN DOTS-127;So;0;L;;;;;N;;;;;
+2844;BRAILLE PATTERN DOTS-37;So;0;L;;;;;N;;;;;
+2845;BRAILLE PATTERN DOTS-137;So;0;L;;;;;N;;;;;
+2846;BRAILLE PATTERN DOTS-237;So;0;L;;;;;N;;;;;
+2847;BRAILLE PATTERN DOTS-1237;So;0;L;;;;;N;;;;;
+2848;BRAILLE PATTERN DOTS-47;So;0;L;;;;;N;;;;;
+2849;BRAILLE PATTERN DOTS-147;So;0;L;;;;;N;;;;;
+284A;BRAILLE PATTERN DOTS-247;So;0;L;;;;;N;;;;;
+284B;BRAILLE PATTERN DOTS-1247;So;0;L;;;;;N;;;;;
+284C;BRAILLE PATTERN DOTS-347;So;0;L;;;;;N;;;;;
+284D;BRAILLE PATTERN DOTS-1347;So;0;L;;;;;N;;;;;
+284E;BRAILLE PATTERN DOTS-2347;So;0;L;;;;;N;;;;;
+284F;BRAILLE PATTERN DOTS-12347;So;0;L;;;;;N;;;;;
+2850;BRAILLE PATTERN DOTS-57;So;0;L;;;;;N;;;;;
+2851;BRAILLE PATTERN DOTS-157;So;0;L;;;;;N;;;;;
+2852;BRAILLE PATTERN DOTS-257;So;0;L;;;;;N;;;;;
+2853;BRAILLE PATTERN DOTS-1257;So;0;L;;;;;N;;;;;
+2854;BRAILLE PATTERN DOTS-357;So;0;L;;;;;N;;;;;
+2855;BRAILLE PATTERN DOTS-1357;So;0;L;;;;;N;;;;;
+2856;BRAILLE PATTERN DOTS-2357;So;0;L;;;;;N;;;;;
+2857;BRAILLE PATTERN DOTS-12357;So;0;L;;;;;N;;;;;
+2858;BRAILLE PATTERN DOTS-457;So;0;L;;;;;N;;;;;
+2859;BRAILLE PATTERN DOTS-1457;So;0;L;;;;;N;;;;;
+285A;BRAILLE PATTERN DOTS-2457;So;0;L;;;;;N;;;;;
+285B;BRAILLE PATTERN DOTS-12457;So;0;L;;;;;N;;;;;
+285C;BRAILLE PATTERN DOTS-3457;So;0;L;;;;;N;;;;;
+285D;BRAILLE PATTERN DOTS-13457;So;0;L;;;;;N;;;;;
+285E;BRAILLE PATTERN DOTS-23457;So;0;L;;;;;N;;;;;
+285F;BRAILLE PATTERN DOTS-123457;So;0;L;;;;;N;;;;;
+2860;BRAILLE PATTERN DOTS-67;So;0;L;;;;;N;;;;;
+2861;BRAILLE PATTERN DOTS-167;So;0;L;;;;;N;;;;;
+2862;BRAILLE PATTERN DOTS-267;So;0;L;;;;;N;;;;;
+2863;BRAILLE PATTERN DOTS-1267;So;0;L;;;;;N;;;;;
+2864;BRAILLE PATTERN DOTS-367;So;0;L;;;;;N;;;;;
+2865;BRAILLE PATTERN DOTS-1367;So;0;L;;;;;N;;;;;
+2866;BRAILLE PATTERN DOTS-2367;So;0;L;;;;;N;;;;;
+2867;BRAILLE PATTERN DOTS-12367;So;0;L;;;;;N;;;;;
+2868;BRAILLE PATTERN DOTS-467;So;0;L;;;;;N;;;;;
+2869;BRAILLE PATTERN DOTS-1467;So;0;L;;;;;N;;;;;
+286A;BRAILLE PATTERN DOTS-2467;So;0;L;;;;;N;;;;;
+286B;BRAILLE PATTERN DOTS-12467;So;0;L;;;;;N;;;;;
+286C;BRAILLE PATTERN DOTS-3467;So;0;L;;;;;N;;;;;
+286D;BRAILLE PATTERN DOTS-13467;So;0;L;;;;;N;;;;;
+286E;BRAILLE PATTERN DOTS-23467;So;0;L;;;;;N;;;;;
+286F;BRAILLE PATTERN DOTS-123467;So;0;L;;;;;N;;;;;
+2870;BRAILLE PATTERN DOTS-567;So;0;L;;;;;N;;;;;
+2871;BRAILLE PATTERN DOTS-1567;So;0;L;;;;;N;;;;;
+2872;BRAILLE PATTERN DOTS-2567;So;0;L;;;;;N;;;;;
+2873;BRAILLE PATTERN DOTS-12567;So;0;L;;;;;N;;;;;
+2874;BRAILLE PATTERN DOTS-3567;So;0;L;;;;;N;;;;;
+2875;BRAILLE PATTERN DOTS-13567;So;0;L;;;;;N;;;;;
+2876;BRAILLE PATTERN DOTS-23567;So;0;L;;;;;N;;;;;
+2877;BRAILLE PATTERN DOTS-123567;So;0;L;;;;;N;;;;;
+2878;BRAILLE PATTERN DOTS-4567;So;0;L;;;;;N;;;;;
+2879;BRAILLE PATTERN DOTS-14567;So;0;L;;;;;N;;;;;
+287A;BRAILLE PATTERN DOTS-24567;So;0;L;;;;;N;;;;;
+287B;BRAILLE PATTERN DOTS-124567;So;0;L;;;;;N;;;;;
+287C;BRAILLE PATTERN DOTS-34567;So;0;L;;;;;N;;;;;
+287D;BRAILLE PATTERN DOTS-134567;So;0;L;;;;;N;;;;;
+287E;BRAILLE PATTERN DOTS-234567;So;0;L;;;;;N;;;;;
+287F;BRAILLE PATTERN DOTS-1234567;So;0;L;;;;;N;;;;;
+2880;BRAILLE PATTERN DOTS-8;So;0;L;;;;;N;;;;;
+2881;BRAILLE PATTERN DOTS-18;So;0;L;;;;;N;;;;;
+2882;BRAILLE PATTERN DOTS-28;So;0;L;;;;;N;;;;;
+2883;BRAILLE PATTERN DOTS-128;So;0;L;;;;;N;;;;;
+2884;BRAILLE PATTERN DOTS-38;So;0;L;;;;;N;;;;;
+2885;BRAILLE PATTERN DOTS-138;So;0;L;;;;;N;;;;;
+2886;BRAILLE PATTERN DOTS-238;So;0;L;;;;;N;;;;;
+2887;BRAILLE PATTERN DOTS-1238;So;0;L;;;;;N;;;;;
+2888;BRAILLE PATTERN DOTS-48;So;0;L;;;;;N;;;;;
+2889;BRAILLE PATTERN DOTS-148;So;0;L;;;;;N;;;;;
+288A;BRAILLE PATTERN DOTS-248;So;0;L;;;;;N;;;;;
+288B;BRAILLE PATTERN DOTS-1248;So;0;L;;;;;N;;;;;
+288C;BRAILLE PATTERN DOTS-348;So;0;L;;;;;N;;;;;
+288D;BRAILLE PATTERN DOTS-1348;So;0;L;;;;;N;;;;;
+288E;BRAILLE PATTERN DOTS-2348;So;0;L;;;;;N;;;;;
+288F;BRAILLE PATTERN DOTS-12348;So;0;L;;;;;N;;;;;
+2890;BRAILLE PATTERN DOTS-58;So;0;L;;;;;N;;;;;
+2891;BRAILLE PATTERN DOTS-158;So;0;L;;;;;N;;;;;
+2892;BRAILLE PATTERN DOTS-258;So;0;L;;;;;N;;;;;
+2893;BRAILLE PATTERN DOTS-1258;So;0;L;;;;;N;;;;;
+2894;BRAILLE PATTERN DOTS-358;So;0;L;;;;;N;;;;;
+2895;BRAILLE PATTERN DOTS-1358;So;0;L;;;;;N;;;;;
+2896;BRAILLE PATTERN DOTS-2358;So;0;L;;;;;N;;;;;
+2897;BRAILLE PATTERN DOTS-12358;So;0;L;;;;;N;;;;;
+2898;BRAILLE PATTERN DOTS-458;So;0;L;;;;;N;;;;;
+2899;BRAILLE PATTERN DOTS-1458;So;0;L;;;;;N;;;;;
+289A;BRAILLE PATTERN DOTS-2458;So;0;L;;;;;N;;;;;
+289B;BRAILLE PATTERN DOTS-12458;So;0;L;;;;;N;;;;;
+289C;BRAILLE PATTERN DOTS-3458;So;0;L;;;;;N;;;;;
+289D;BRAILLE PATTERN DOTS-13458;So;0;L;;;;;N;;;;;
+289E;BRAILLE PATTERN DOTS-23458;So;0;L;;;;;N;;;;;
+289F;BRAILLE PATTERN DOTS-123458;So;0;L;;;;;N;;;;;
+28A0;BRAILLE PATTERN DOTS-68;So;0;L;;;;;N;;;;;
+28A1;BRAILLE PATTERN DOTS-168;So;0;L;;;;;N;;;;;
+28A2;BRAILLE PATTERN DOTS-268;So;0;L;;;;;N;;;;;
+28A3;BRAILLE PATTERN DOTS-1268;So;0;L;;;;;N;;;;;
+28A4;BRAILLE PATTERN DOTS-368;So;0;L;;;;;N;;;;;
+28A5;BRAILLE PATTERN DOTS-1368;So;0;L;;;;;N;;;;;
+28A6;BRAILLE PATTERN DOTS-2368;So;0;L;;;;;N;;;;;
+28A7;BRAILLE PATTERN DOTS-12368;So;0;L;;;;;N;;;;;
+28A8;BRAILLE PATTERN DOTS-468;So;0;L;;;;;N;;;;;
+28A9;BRAILLE PATTERN DOTS-1468;So;0;L;;;;;N;;;;;
+28AA;BRAILLE PATTERN DOTS-2468;So;0;L;;;;;N;;;;;
+28AB;BRAILLE PATTERN DOTS-12468;So;0;L;;;;;N;;;;;
+28AC;BRAILLE PATTERN DOTS-3468;So;0;L;;;;;N;;;;;
+28AD;BRAILLE PATTERN DOTS-13468;So;0;L;;;;;N;;;;;
+28AE;BRAILLE PATTERN DOTS-23468;So;0;L;;;;;N;;;;;
+28AF;BRAILLE PATTERN DOTS-123468;So;0;L;;;;;N;;;;;
+28B0;BRAILLE PATTERN DOTS-568;So;0;L;;;;;N;;;;;
+28B1;BRAILLE PATTERN DOTS-1568;So;0;L;;;;;N;;;;;
+28B2;BRAILLE PATTERN DOTS-2568;So;0;L;;;;;N;;;;;
+28B3;BRAILLE PATTERN DOTS-12568;So;0;L;;;;;N;;;;;
+28B4;BRAILLE PATTERN DOTS-3568;So;0;L;;;;;N;;;;;
+28B5;BRAILLE PATTERN DOTS-13568;So;0;L;;;;;N;;;;;
+28B6;BRAILLE PATTERN DOTS-23568;So;0;L;;;;;N;;;;;
+28B7;BRAILLE PATTERN DOTS-123568;So;0;L;;;;;N;;;;;
+28B8;BRAILLE PATTERN DOTS-4568;So;0;L;;;;;N;;;;;
+28B9;BRAILLE PATTERN DOTS-14568;So;0;L;;;;;N;;;;;
+28BA;BRAILLE PATTERN DOTS-24568;So;0;L;;;;;N;;;;;
+28BB;BRAILLE PATTERN DOTS-124568;So;0;L;;;;;N;;;;;
+28BC;BRAILLE PATTERN DOTS-34568;So;0;L;;;;;N;;;;;
+28BD;BRAILLE PATTERN DOTS-134568;So;0;L;;;;;N;;;;;
+28BE;BRAILLE PATTERN DOTS-234568;So;0;L;;;;;N;;;;;
+28BF;BRAILLE PATTERN DOTS-1234568;So;0;L;;;;;N;;;;;
+28C0;BRAILLE PATTERN DOTS-78;So;0;L;;;;;N;;;;;
+28C1;BRAILLE PATTERN DOTS-178;So;0;L;;;;;N;;;;;
+28C2;BRAILLE PATTERN DOTS-278;So;0;L;;;;;N;;;;;
+28C3;BRAILLE PATTERN DOTS-1278;So;0;L;;;;;N;;;;;
+28C4;BRAILLE PATTERN DOTS-378;So;0;L;;;;;N;;;;;
+28C5;BRAILLE PATTERN DOTS-1378;So;0;L;;;;;N;;;;;
+28C6;BRAILLE PATTERN DOTS-2378;So;0;L;;;;;N;;;;;
+28C7;BRAILLE PATTERN DOTS-12378;So;0;L;;;;;N;;;;;
+28C8;BRAILLE PATTERN DOTS-478;So;0;L;;;;;N;;;;;
+28C9;BRAILLE PATTERN DOTS-1478;So;0;L;;;;;N;;;;;
+28CA;BRAILLE PATTERN DOTS-2478;So;0;L;;;;;N;;;;;
+28CB;BRAILLE PATTERN DOTS-12478;So;0;L;;;;;N;;;;;
+28CC;BRAILLE PATTERN DOTS-3478;So;0;L;;;;;N;;;;;
+28CD;BRAILLE PATTERN DOTS-13478;So;0;L;;;;;N;;;;;
+28CE;BRAILLE PATTERN DOTS-23478;So;0;L;;;;;N;;;;;
+28CF;BRAILLE PATTERN DOTS-123478;So;0;L;;;;;N;;;;;
+28D0;BRAILLE PATTERN DOTS-578;So;0;L;;;;;N;;;;;
+28D1;BRAILLE PATTERN DOTS-1578;So;0;L;;;;;N;;;;;
+28D2;BRAILLE PATTERN DOTS-2578;So;0;L;;;;;N;;;;;
+28D3;BRAILLE PATTERN DOTS-12578;So;0;L;;;;;N;;;;;
+28D4;BRAILLE PATTERN DOTS-3578;So;0;L;;;;;N;;;;;
+28D5;BRAILLE PATTERN DOTS-13578;So;0;L;;;;;N;;;;;
+28D6;BRAILLE PATTERN DOTS-23578;So;0;L;;;;;N;;;;;
+28D7;BRAILLE PATTERN DOTS-123578;So;0;L;;;;;N;;;;;
+28D8;BRAILLE PATTERN DOTS-4578;So;0;L;;;;;N;;;;;
+28D9;BRAILLE PATTERN DOTS-14578;So;0;L;;;;;N;;;;;
+28DA;BRAILLE PATTERN DOTS-24578;So;0;L;;;;;N;;;;;
+28DB;BRAILLE PATTERN DOTS-124578;So;0;L;;;;;N;;;;;
+28DC;BRAILLE PATTERN DOTS-34578;So;0;L;;;;;N;;;;;
+28DD;BRAILLE PATTERN DOTS-134578;So;0;L;;;;;N;;;;;
+28DE;BRAILLE PATTERN DOTS-234578;So;0;L;;;;;N;;;;;
+28DF;BRAILLE PATTERN DOTS-1234578;So;0;L;;;;;N;;;;;
+28E0;BRAILLE PATTERN DOTS-678;So;0;L;;;;;N;;;;;
+28E1;BRAILLE PATTERN DOTS-1678;So;0;L;;;;;N;;;;;
+28E2;BRAILLE PATTERN DOTS-2678;So;0;L;;;;;N;;;;;
+28E3;BRAILLE PATTERN DOTS-12678;So;0;L;;;;;N;;;;;
+28E4;BRAILLE PATTERN DOTS-3678;So;0;L;;;;;N;;;;;
+28E5;BRAILLE PATTERN DOTS-13678;So;0;L;;;;;N;;;;;
+28E6;BRAILLE PATTERN DOTS-23678;So;0;L;;;;;N;;;;;
+28E7;BRAILLE PATTERN DOTS-123678;So;0;L;;;;;N;;;;;
+28E8;BRAILLE PATTERN DOTS-4678;So;0;L;;;;;N;;;;;
+28E9;BRAILLE PATTERN DOTS-14678;So;0;L;;;;;N;;;;;
+28EA;BRAILLE PATTERN DOTS-24678;So;0;L;;;;;N;;;;;
+28EB;BRAILLE PATTERN DOTS-124678;So;0;L;;;;;N;;;;;
+28EC;BRAILLE PATTERN DOTS-34678;So;0;L;;;;;N;;;;;
+28ED;BRAILLE PATTERN DOTS-134678;So;0;L;;;;;N;;;;;
+28EE;BRAILLE PATTERN DOTS-234678;So;0;L;;;;;N;;;;;
+28EF;BRAILLE PATTERN DOTS-1234678;So;0;L;;;;;N;;;;;
+28F0;BRAILLE PATTERN DOTS-5678;So;0;L;;;;;N;;;;;
+28F1;BRAILLE PATTERN DOTS-15678;So;0;L;;;;;N;;;;;
+28F2;BRAILLE PATTERN DOTS-25678;So;0;L;;;;;N;;;;;
+28F3;BRAILLE PATTERN DOTS-125678;So;0;L;;;;;N;;;;;
+28F4;BRAILLE PATTERN DOTS-35678;So;0;L;;;;;N;;;;;
+28F5;BRAILLE PATTERN DOTS-135678;So;0;L;;;;;N;;;;;
+28F6;BRAILLE PATTERN DOTS-235678;So;0;L;;;;;N;;;;;
+28F7;BRAILLE PATTERN DOTS-1235678;So;0;L;;;;;N;;;;;
+28F8;BRAILLE PATTERN DOTS-45678;So;0;L;;;;;N;;;;;
+28F9;BRAILLE PATTERN DOTS-145678;So;0;L;;;;;N;;;;;
+28FA;BRAILLE PATTERN DOTS-245678;So;0;L;;;;;N;;;;;
+28FB;BRAILLE PATTERN DOTS-1245678;So;0;L;;;;;N;;;;;
+28FC;BRAILLE PATTERN DOTS-345678;So;0;L;;;;;N;;;;;
+28FD;BRAILLE PATTERN DOTS-1345678;So;0;L;;;;;N;;;;;
+28FE;BRAILLE PATTERN DOTS-2345678;So;0;L;;;;;N;;;;;
+28FF;BRAILLE PATTERN DOTS-12345678;So;0;L;;;;;N;;;;;
+2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
+290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
+290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;;
+2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
+2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
+2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;;
+2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;;
+292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;;
+292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;;
+2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;;
+2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
+2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;;
+2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;;
+2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;;
+293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;;
+293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
+2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
+2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;;
+2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
+294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
+294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
+294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
+294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
+294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
+2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
+2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
+2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
+2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
+2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
+2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
+2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
+2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
+2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
+2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
+295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
+295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
+295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
+295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
+295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
+295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
+2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
+2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
+2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
+2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
+2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
+296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
+296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
+296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
+296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;;
+2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;;
+297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;;
+2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;;
+2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;;
+2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;;
+2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;;
+2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;;
+2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
+2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;;
+2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;;
+2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;;
+298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;;
+298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;;
+298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;;
+298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;;
+298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;;
+298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;;
+2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;;
+2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;;
+2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;;
+2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
+2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
+2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
+2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
+2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;;
+2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;;
+2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;;
+299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;;
+299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
+299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;;
+299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;;
+299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;;
+299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
+29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
+29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
+29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;;
+29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;;
+29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;;
+29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;;
+29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;;
+29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;;
+29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;;
+29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;;
+29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;;
+29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;;
+29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
+29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
+29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;;
+29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;;
+29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;;
+29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;;
+29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;;
+29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;;
+29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;;
+29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
+29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
+29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
+29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
+29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;;
+29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;;
+29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;;
+29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;;
+29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;;
+29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;;
+29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;;
+29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;;
+29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
+29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
+29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
+29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
+29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;;
+29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;;
+29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;;
+29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;;
+29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;;
+29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;;
+29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
+29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
+29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
+29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;;
+29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;;
+29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;;
+29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;;
+29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;;
+29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;;
+29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;;
+29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;;
+29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;;
+29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
+29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;;
+29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;;
+29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+29FE;TINY;Sm;0;ON;;;;;N;;;;;
+29FF;MINY;Sm;0;ON;;;;;N;;;;;
+2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;;
+2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;;
+2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;;
+2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON;<compat> 222B 222B 222B 222B;;;;Y;;;;;
+2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;;
+2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;;
+2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;;
+2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;;
+2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
+2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
+2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;;
+2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;;
+2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;;
+2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;;
+2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;;
+2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+2A1D;JOIN;Sm;0;ON;;;;;N;;;;;
+2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;;
+2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;;
+2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;;
+2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;;
+2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;;
+2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;;
+2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;;
+2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;;
+2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;;
+2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;;
+2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;;
+2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;;
+2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;;
+2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;;
+2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
+2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
+2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;;
+2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;;
+2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;;
+2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
+2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
+2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
+2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
+2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
+2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
+2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;;
+2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;;
+2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;;
+2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;;
+2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A74;DOUBLE COLON EQUAL;Sm;0;ON;<compat> 003A 003A 003D;;;;Y;;;;;
+2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D;;;;N;;;;;
+2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D 003D;;;;N;;;;;
+2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;;
+2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;;
+2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;;
+2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;;
+2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
+2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
+2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;;
+2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;;
+2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;;
+2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;;
+2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
+2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
+2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;;
+2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;;
+2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
+2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;;
+2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;not independent;;;
+2ADD;NONFORKING;Sm;0;ON;;;;;N;;independent;;;
+2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;;
+2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;;
+2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;;
+2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;;
+2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
+2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
+2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;;
+2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
+2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
+2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;;
+2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;;
+2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;;
+2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+2B00;NORTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B01;NORTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B02;SOUTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B03;SOUTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B04;LEFT RIGHT WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B05;LEFTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B06;UPWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B07;DOWNWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B08;NORTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B09;NORTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0A;SOUTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0B;SOUTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0C;LEFT RIGHT BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0D;UP DOWN BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0E;RIGHTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;;
+2B0F;RIGHTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;;
+2B10;LEFTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;;
+2B11;LEFTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;;
+2B12;SQUARE WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;;
+2B13;SQUARE WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;;
+2B14;SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+2B15;SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+2B16;DIAMOND WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+2B17;DIAMOND WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+2B18;DIAMOND WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;;
+2B19;DIAMOND WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;;
+2B1A;DOTTED SQUARE;So;0;ON;;;;;N;;;;;
+2B1B;BLACK LARGE SQUARE;So;0;ON;;;;;N;;;;;
+2B1C;WHITE LARGE SQUARE;So;0;ON;;;;;N;;;;;
+2B1D;BLACK VERY SMALL SQUARE;So;0;ON;;;;;N;;;;;
+2B1E;WHITE VERY SMALL SQUARE;So;0;ON;;;;;N;;;;;
+2B1F;BLACK PENTAGON;So;0;ON;;;;;N;;;;;
+2B20;WHITE PENTAGON;So;0;ON;;;;;N;;;;;
+2B21;WHITE HEXAGON;So;0;ON;;;;;N;;;;;
+2B22;BLACK HEXAGON;So;0;ON;;;;;N;;;;;
+2B23;HORIZONTAL BLACK HEXAGON;So;0;ON;;;;;N;;;;;
+2B24;BLACK LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+2B25;BLACK MEDIUM DIAMOND;So;0;ON;;;;;N;;;;;
+2B26;WHITE MEDIUM DIAMOND;So;0;ON;;;;;N;;;;;
+2B27;BLACK MEDIUM LOZENGE;So;0;ON;;;;;N;;;;;
+2B28;WHITE MEDIUM LOZENGE;So;0;ON;;;;;N;;;;;
+2B29;BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+2B2A;BLACK SMALL LOZENGE;So;0;ON;;;;;N;;;;;
+2B2B;WHITE SMALL LOZENGE;So;0;ON;;;;;N;;;;;
+2B2C;BLACK HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;;
+2B2D;WHITE HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;;
+2B2E;BLACK VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;;
+2B2F;WHITE VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;;
+2B30;LEFT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+2B31;THREE LEFTWARDS ARROWS;Sm;0;ON;;;;;N;;;;;
+2B32;LEFT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2B33;LONG LEFTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;;
+2B34;LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B35;LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B36;LEFTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2B37;LEFTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+2B38;LEFTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;;
+2B39;LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B3A;LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B3B;LEFTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;;
+2B3C;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B3D;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B3E;LEFTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;;
+2B3F;WAVE ARROW POINTING DIRECTLY LEFT;Sm;0;ON;;;;;N;;;;;
+2B40;EQUALS SIGN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2B41;REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2B42;LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2B43;RIGHTWARDS ARROW THROUGH GREATER-THAN;Sm;0;ON;;;;;N;;;;;
+2B44;RIGHTWARDS ARROW THROUGH SUPERSET;Sm;0;ON;;;;;N;;;;;
+2B45;LEFTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;;
+2B46;RIGHTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;;
+2B47;REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2B48;RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2B49;TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2B4A;LEFTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2B4B;LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2B4C;RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2B50;WHITE MEDIUM STAR;So;0;ON;;;;;N;;;;;
+2B51;BLACK SMALL STAR;So;0;ON;;;;;N;;;;;
+2B52;WHITE SMALL STAR;So;0;ON;;;;;N;;;;;
+2B53;BLACK RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;;
+2B54;WHITE RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;;
+2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30;
+2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31;
+2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32;
+2C03;GLAGOLITIC CAPITAL LETTER GLAGOLI;Lu;0;L;;;;;N;;;;2C33;
+2C04;GLAGOLITIC CAPITAL LETTER DOBRO;Lu;0;L;;;;;N;;;;2C34;
+2C05;GLAGOLITIC CAPITAL LETTER YESTU;Lu;0;L;;;;;N;;;;2C35;
+2C06;GLAGOLITIC CAPITAL LETTER ZHIVETE;Lu;0;L;;;;;N;;;;2C36;
+2C07;GLAGOLITIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;2C37;
+2C08;GLAGOLITIC CAPITAL LETTER ZEMLJA;Lu;0;L;;;;;N;;;;2C38;
+2C09;GLAGOLITIC CAPITAL LETTER IZHE;Lu;0;L;;;;;N;;;;2C39;
+2C0A;GLAGOLITIC CAPITAL LETTER INITIAL IZHE;Lu;0;L;;;;;N;;;;2C3A;
+2C0B;GLAGOLITIC CAPITAL LETTER I;Lu;0;L;;;;;N;;;;2C3B;
+2C0C;GLAGOLITIC CAPITAL LETTER DJERVI;Lu;0;L;;;;;N;;;;2C3C;
+2C0D;GLAGOLITIC CAPITAL LETTER KAKO;Lu;0;L;;;;;N;;;;2C3D;
+2C0E;GLAGOLITIC CAPITAL LETTER LJUDIJE;Lu;0;L;;;;;N;;;;2C3E;
+2C0F;GLAGOLITIC CAPITAL LETTER MYSLITE;Lu;0;L;;;;;N;;;;2C3F;
+2C10;GLAGOLITIC CAPITAL LETTER NASHI;Lu;0;L;;;;;N;;;;2C40;
+2C11;GLAGOLITIC CAPITAL LETTER ONU;Lu;0;L;;;;;N;;;;2C41;
+2C12;GLAGOLITIC CAPITAL LETTER POKOJI;Lu;0;L;;;;;N;;;;2C42;
+2C13;GLAGOLITIC CAPITAL LETTER RITSI;Lu;0;L;;;;;N;;;;2C43;
+2C14;GLAGOLITIC CAPITAL LETTER SLOVO;Lu;0;L;;;;;N;;;;2C44;
+2C15;GLAGOLITIC CAPITAL LETTER TVRIDO;Lu;0;L;;;;;N;;;;2C45;
+2C16;GLAGOLITIC CAPITAL LETTER UKU;Lu;0;L;;;;;N;;;;2C46;
+2C17;GLAGOLITIC CAPITAL LETTER FRITU;Lu;0;L;;;;;N;;;;2C47;
+2C18;GLAGOLITIC CAPITAL LETTER HERU;Lu;0;L;;;;;N;;;;2C48;
+2C19;GLAGOLITIC CAPITAL LETTER OTU;Lu;0;L;;;;;N;;;;2C49;
+2C1A;GLAGOLITIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;2C4A;
+2C1B;GLAGOLITIC CAPITAL LETTER SHTA;Lu;0;L;;;;;N;;;;2C4B;
+2C1C;GLAGOLITIC CAPITAL LETTER TSI;Lu;0;L;;;;;N;;;;2C4C;
+2C1D;GLAGOLITIC CAPITAL LETTER CHRIVI;Lu;0;L;;;;;N;;;;2C4D;
+2C1E;GLAGOLITIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;2C4E;
+2C1F;GLAGOLITIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;;;;2C4F;
+2C20;GLAGOLITIC CAPITAL LETTER YERI;Lu;0;L;;;;;N;;;;2C50;
+2C21;GLAGOLITIC CAPITAL LETTER YATI;Lu;0;L;;;;;N;;;;2C51;
+2C22;GLAGOLITIC CAPITAL LETTER SPIDERY HA;Lu;0;L;;;;;N;;;;2C52;
+2C23;GLAGOLITIC CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;2C53;
+2C24;GLAGOLITIC CAPITAL LETTER SMALL YUS;Lu;0;L;;;;;N;;;;2C54;
+2C25;GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;Lu;0;L;;;;;N;;;;2C55;
+2C26;GLAGOLITIC CAPITAL LETTER YO;Lu;0;L;;;;;N;;;;2C56;
+2C27;GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;Lu;0;L;;;;;N;;;;2C57;
+2C28;GLAGOLITIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;2C58;
+2C29;GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;Lu;0;L;;;;;N;;;;2C59;
+2C2A;GLAGOLITIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;2C5A;
+2C2B;GLAGOLITIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;2C5B;
+2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C;
+2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D;
+2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E;
+2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00
+2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01
+2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02
+2C33;GLAGOLITIC SMALL LETTER GLAGOLI;Ll;0;L;;;;;N;;;2C03;;2C03
+2C34;GLAGOLITIC SMALL LETTER DOBRO;Ll;0;L;;;;;N;;;2C04;;2C04
+2C35;GLAGOLITIC SMALL LETTER YESTU;Ll;0;L;;;;;N;;;2C05;;2C05
+2C36;GLAGOLITIC SMALL LETTER ZHIVETE;Ll;0;L;;;;;N;;;2C06;;2C06
+2C37;GLAGOLITIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;2C07;;2C07
+2C38;GLAGOLITIC SMALL LETTER ZEMLJA;Ll;0;L;;;;;N;;;2C08;;2C08
+2C39;GLAGOLITIC SMALL LETTER IZHE;Ll;0;L;;;;;N;;;2C09;;2C09
+2C3A;GLAGOLITIC SMALL LETTER INITIAL IZHE;Ll;0;L;;;;;N;;;2C0A;;2C0A
+2C3B;GLAGOLITIC SMALL LETTER I;Ll;0;L;;;;;N;;;2C0B;;2C0B
+2C3C;GLAGOLITIC SMALL LETTER DJERVI;Ll;0;L;;;;;N;;;2C0C;;2C0C
+2C3D;GLAGOLITIC SMALL LETTER KAKO;Ll;0;L;;;;;N;;;2C0D;;2C0D
+2C3E;GLAGOLITIC SMALL LETTER LJUDIJE;Ll;0;L;;;;;N;;;2C0E;;2C0E
+2C3F;GLAGOLITIC SMALL LETTER MYSLITE;Ll;0;L;;;;;N;;;2C0F;;2C0F
+2C40;GLAGOLITIC SMALL LETTER NASHI;Ll;0;L;;;;;N;;;2C10;;2C10
+2C41;GLAGOLITIC SMALL LETTER ONU;Ll;0;L;;;;;N;;;2C11;;2C11
+2C42;GLAGOLITIC SMALL LETTER POKOJI;Ll;0;L;;;;;N;;;2C12;;2C12
+2C43;GLAGOLITIC SMALL LETTER RITSI;Ll;0;L;;;;;N;;;2C13;;2C13
+2C44;GLAGOLITIC SMALL LETTER SLOVO;Ll;0;L;;;;;N;;;2C14;;2C14
+2C45;GLAGOLITIC SMALL LETTER TVRIDO;Ll;0;L;;;;;N;;;2C15;;2C15
+2C46;GLAGOLITIC SMALL LETTER UKU;Ll;0;L;;;;;N;;;2C16;;2C16
+2C47;GLAGOLITIC SMALL LETTER FRITU;Ll;0;L;;;;;N;;;2C17;;2C17
+2C48;GLAGOLITIC SMALL LETTER HERU;Ll;0;L;;;;;N;;;2C18;;2C18
+2C49;GLAGOLITIC SMALL LETTER OTU;Ll;0;L;;;;;N;;;2C19;;2C19
+2C4A;GLAGOLITIC SMALL LETTER PE;Ll;0;L;;;;;N;;;2C1A;;2C1A
+2C4B;GLAGOLITIC SMALL LETTER SHTA;Ll;0;L;;;;;N;;;2C1B;;2C1B
+2C4C;GLAGOLITIC SMALL LETTER TSI;Ll;0;L;;;;;N;;;2C1C;;2C1C
+2C4D;GLAGOLITIC SMALL LETTER CHRIVI;Ll;0;L;;;;;N;;;2C1D;;2C1D
+2C4E;GLAGOLITIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;2C1E;;2C1E
+2C4F;GLAGOLITIC SMALL LETTER YERU;Ll;0;L;;;;;N;;;2C1F;;2C1F
+2C50;GLAGOLITIC SMALL LETTER YERI;Ll;0;L;;;;;N;;;2C20;;2C20
+2C51;GLAGOLITIC SMALL LETTER YATI;Ll;0;L;;;;;N;;;2C21;;2C21
+2C52;GLAGOLITIC SMALL LETTER SPIDERY HA;Ll;0;L;;;;;N;;;2C22;;2C22
+2C53;GLAGOLITIC SMALL LETTER YU;Ll;0;L;;;;;N;;;2C23;;2C23
+2C54;GLAGOLITIC SMALL LETTER SMALL YUS;Ll;0;L;;;;;N;;;2C24;;2C24
+2C55;GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;Ll;0;L;;;;;N;;;2C25;;2C25
+2C56;GLAGOLITIC SMALL LETTER YO;Ll;0;L;;;;;N;;;2C26;;2C26
+2C57;GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;Ll;0;L;;;;;N;;;2C27;;2C27
+2C58;GLAGOLITIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;2C28;;2C28
+2C59;GLAGOLITIC SMALL LETTER IOTATED BIG YUS;Ll;0;L;;;;;N;;;2C29;;2C29
+2C5A;GLAGOLITIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;2C2A;;2C2A
+2C5B;GLAGOLITIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;2C2B;;2C2B
+2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C
+2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D
+2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E
+2C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR;Lu;0;L;;;;;N;;;;2C61;
+2C61;LATIN SMALL LETTER L WITH DOUBLE BAR;Ll;0;L;;;;;N;;;2C60;;2C60
+2C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE;Lu;0;L;;;;;N;;;;026B;
+2C63;LATIN CAPITAL LETTER P WITH STROKE;Lu;0;L;;;;;N;;;;1D7D;
+2C64;LATIN CAPITAL LETTER R WITH TAIL;Lu;0;L;;;;;N;;;;027D;
+2C65;LATIN SMALL LETTER A WITH STROKE;Ll;0;L;;;;;N;;;023A;;023A
+2C66;LATIN SMALL LETTER T WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;023E;;023E
+2C67;LATIN CAPITAL LETTER H WITH DESCENDER;Lu;0;L;;;;;N;;;;2C68;
+2C68;LATIN SMALL LETTER H WITH DESCENDER;Ll;0;L;;;;;N;;;2C67;;2C67
+2C69;LATIN CAPITAL LETTER K WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6A;
+2C6A;LATIN SMALL LETTER K WITH DESCENDER;Ll;0;L;;;;;N;;;2C69;;2C69
+2C6B;LATIN CAPITAL LETTER Z WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6C;
+2C6C;LATIN SMALL LETTER Z WITH DESCENDER;Ll;0;L;;;;;N;;;2C6B;;2C6B
+2C6D;LATIN CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;0251;
+2C6E;LATIN CAPITAL LETTER M WITH HOOK;Lu;0;L;;;;;N;;;;0271;
+2C6F;LATIN CAPITAL LETTER TURNED A;Lu;0;L;;;;;N;;;;0250;
+2C71;LATIN SMALL LETTER V WITH RIGHT HOOK;Ll;0;L;;;;;N;;;;;
+2C72;LATIN CAPITAL LETTER W WITH HOOK;Lu;0;L;;;;;N;;;;2C73;
+2C73;LATIN SMALL LETTER W WITH HOOK;Ll;0;L;;;;;N;;;2C72;;2C72
+2C74;LATIN SMALL LETTER V WITH CURL;Ll;0;L;;;;;N;;;;;
+2C75;LATIN CAPITAL LETTER HALF H;Lu;0;L;;;;;N;;;;2C76;
+2C76;LATIN SMALL LETTER HALF H;Ll;0;L;;;;;N;;;2C75;;2C75
+2C77;LATIN SMALL LETTER TAILLESS PHI;Ll;0;L;;;;;N;;;;;
+2C78;LATIN SMALL LETTER E WITH NOTCH;Ll;0;L;;;;;N;;;;;
+2C79;LATIN SMALL LETTER TURNED R WITH TAIL;Ll;0;L;;;;;N;;;;;
+2C7A;LATIN SMALL LETTER O WITH LOW RING INSIDE;Ll;0;L;;;;;N;;;;;
+2C7B;LATIN LETTER SMALL CAPITAL TURNED E;Ll;0;L;;;;;N;;;;;
+2C7C;LATIN SUBSCRIPT SMALL LETTER J;Ll;0;L;<sub> 006A;;;;N;;;;;
+2C7D;MODIFIER LETTER CAPITAL V;Lm;0;L;<super> 0056;;;;N;;;;;
+2C80;COPTIC CAPITAL LETTER ALFA;Lu;0;L;;;;;N;;;;2C81;
+2C81;COPTIC SMALL LETTER ALFA;Ll;0;L;;;;;N;;;2C80;;2C80
+2C82;COPTIC CAPITAL LETTER VIDA;Lu;0;L;;;;;N;;;;2C83;
+2C83;COPTIC SMALL LETTER VIDA;Ll;0;L;;;;;N;;;2C82;;2C82
+2C84;COPTIC CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;2C85;
+2C85;COPTIC SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;2C84;;2C84
+2C86;COPTIC CAPITAL LETTER DALDA;Lu;0;L;;;;;N;;;;2C87;
+2C87;COPTIC SMALL LETTER DALDA;Ll;0;L;;;;;N;;;2C86;;2C86
+2C88;COPTIC CAPITAL LETTER EIE;Lu;0;L;;;;;N;;;;2C89;
+2C89;COPTIC SMALL LETTER EIE;Ll;0;L;;;;;N;;;2C88;;2C88
+2C8A;COPTIC CAPITAL LETTER SOU;Lu;0;L;;;;;N;;;;2C8B;
+2C8B;COPTIC SMALL LETTER SOU;Ll;0;L;;;;;N;;;2C8A;;2C8A
+2C8C;COPTIC CAPITAL LETTER ZATA;Lu;0;L;;;;;N;;;;2C8D;
+2C8D;COPTIC SMALL LETTER ZATA;Ll;0;L;;;;;N;;;2C8C;;2C8C
+2C8E;COPTIC CAPITAL LETTER HATE;Lu;0;L;;;;;N;;;;2C8F;
+2C8F;COPTIC SMALL LETTER HATE;Ll;0;L;;;;;N;;;2C8E;;2C8E
+2C90;COPTIC CAPITAL LETTER THETHE;Lu;0;L;;;;;N;;;;2C91;
+2C91;COPTIC SMALL LETTER THETHE;Ll;0;L;;;;;N;;;2C90;;2C90
+2C92;COPTIC CAPITAL LETTER IAUDA;Lu;0;L;;;;;N;;;;2C93;
+2C93;COPTIC SMALL LETTER IAUDA;Ll;0;L;;;;;N;;;2C92;;2C92
+2C94;COPTIC CAPITAL LETTER KAPA;Lu;0;L;;;;;N;;;;2C95;
+2C95;COPTIC SMALL LETTER KAPA;Ll;0;L;;;;;N;;;2C94;;2C94
+2C96;COPTIC CAPITAL LETTER LAULA;Lu;0;L;;;;;N;;;;2C97;
+2C97;COPTIC SMALL LETTER LAULA;Ll;0;L;;;;;N;;;2C96;;2C96
+2C98;COPTIC CAPITAL LETTER MI;Lu;0;L;;;;;N;;;;2C99;
+2C99;COPTIC SMALL LETTER MI;Ll;0;L;;;;;N;;;2C98;;2C98
+2C9A;COPTIC CAPITAL LETTER NI;Lu;0;L;;;;;N;;;;2C9B;
+2C9B;COPTIC SMALL LETTER NI;Ll;0;L;;;;;N;;;2C9A;;2C9A
+2C9C;COPTIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;2C9D;
+2C9D;COPTIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;2C9C;;2C9C
+2C9E;COPTIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;2C9F;
+2C9F;COPTIC SMALL LETTER O;Ll;0;L;;;;;N;;;2C9E;;2C9E
+2CA0;COPTIC CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;2CA1;
+2CA1;COPTIC SMALL LETTER PI;Ll;0;L;;;;;N;;;2CA0;;2CA0
+2CA2;COPTIC CAPITAL LETTER RO;Lu;0;L;;;;;N;;;;2CA3;
+2CA3;COPTIC SMALL LETTER RO;Ll;0;L;;;;;N;;;2CA2;;2CA2
+2CA4;COPTIC CAPITAL LETTER SIMA;Lu;0;L;;;;;N;;;;2CA5;
+2CA5;COPTIC SMALL LETTER SIMA;Ll;0;L;;;;;N;;;2CA4;;2CA4
+2CA6;COPTIC CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;2CA7;
+2CA7;COPTIC SMALL LETTER TAU;Ll;0;L;;;;;N;;;2CA6;;2CA6
+2CA8;COPTIC CAPITAL LETTER UA;Lu;0;L;;;;;N;;;;2CA9;
+2CA9;COPTIC SMALL LETTER UA;Ll;0;L;;;;;N;;;2CA8;;2CA8
+2CAA;COPTIC CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;2CAB;
+2CAB;COPTIC SMALL LETTER FI;Ll;0;L;;;;;N;;;2CAA;;2CAA
+2CAC;COPTIC CAPITAL LETTER KHI;Lu;0;L;;;;;N;;;;2CAD;
+2CAD;COPTIC SMALL LETTER KHI;Ll;0;L;;;;;N;;;2CAC;;2CAC
+2CAE;COPTIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;2CAF;
+2CAF;COPTIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;2CAE;;2CAE
+2CB0;COPTIC CAPITAL LETTER OOU;Lu;0;L;;;;;N;;;;2CB1;
+2CB1;COPTIC SMALL LETTER OOU;Ll;0;L;;;;;N;;;2CB0;;2CB0
+2CB2;COPTIC CAPITAL LETTER DIALECT-P ALEF;Lu;0;L;;;;;N;;;;2CB3;
+2CB3;COPTIC SMALL LETTER DIALECT-P ALEF;Ll;0;L;;;;;N;;;2CB2;;2CB2
+2CB4;COPTIC CAPITAL LETTER OLD COPTIC AIN;Lu;0;L;;;;;N;;;;2CB5;
+2CB5;COPTIC SMALL LETTER OLD COPTIC AIN;Ll;0;L;;;;;N;;;2CB4;;2CB4
+2CB6;COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;Lu;0;L;;;;;N;;;;2CB7;
+2CB7;COPTIC SMALL LETTER CRYPTOGRAMMIC EIE;Ll;0;L;;;;;N;;;2CB6;;2CB6
+2CB8;COPTIC CAPITAL LETTER DIALECT-P KAPA;Lu;0;L;;;;;N;;;;2CB9;
+2CB9;COPTIC SMALL LETTER DIALECT-P KAPA;Ll;0;L;;;;;N;;;2CB8;;2CB8
+2CBA;COPTIC CAPITAL LETTER DIALECT-P NI;Lu;0;L;;;;;N;;;;2CBB;
+2CBB;COPTIC SMALL LETTER DIALECT-P NI;Ll;0;L;;;;;N;;;2CBA;;2CBA
+2CBC;COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;Lu;0;L;;;;;N;;;;2CBD;
+2CBD;COPTIC SMALL LETTER CRYPTOGRAMMIC NI;Ll;0;L;;;;;N;;;2CBC;;2CBC
+2CBE;COPTIC CAPITAL LETTER OLD COPTIC OOU;Lu;0;L;;;;;N;;;;2CBF;
+2CBF;COPTIC SMALL LETTER OLD COPTIC OOU;Ll;0;L;;;;;N;;;2CBE;;2CBE
+2CC0;COPTIC CAPITAL LETTER SAMPI;Lu;0;L;;;;;N;;;;2CC1;
+2CC1;COPTIC SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;2CC0;;2CC0
+2CC2;COPTIC CAPITAL LETTER CROSSED SHEI;Lu;0;L;;;;;N;;;;2CC3;
+2CC3;COPTIC SMALL LETTER CROSSED SHEI;Ll;0;L;;;;;N;;;2CC2;;2CC2
+2CC4;COPTIC CAPITAL LETTER OLD COPTIC SHEI;Lu;0;L;;;;;N;;;;2CC5;
+2CC5;COPTIC SMALL LETTER OLD COPTIC SHEI;Ll;0;L;;;;;N;;;2CC4;;2CC4
+2CC6;COPTIC CAPITAL LETTER OLD COPTIC ESH;Lu;0;L;;;;;N;;;;2CC7;
+2CC7;COPTIC SMALL LETTER OLD COPTIC ESH;Ll;0;L;;;;;N;;;2CC6;;2CC6
+2CC8;COPTIC CAPITAL LETTER AKHMIMIC KHEI;Lu;0;L;;;;;N;;;;2CC9;
+2CC9;COPTIC SMALL LETTER AKHMIMIC KHEI;Ll;0;L;;;;;N;;;2CC8;;2CC8
+2CCA;COPTIC CAPITAL LETTER DIALECT-P HORI;Lu;0;L;;;;;N;;;;2CCB;
+2CCB;COPTIC SMALL LETTER DIALECT-P HORI;Ll;0;L;;;;;N;;;2CCA;;2CCA
+2CCC;COPTIC CAPITAL LETTER OLD COPTIC HORI;Lu;0;L;;;;;N;;;;2CCD;
+2CCD;COPTIC SMALL LETTER OLD COPTIC HORI;Ll;0;L;;;;;N;;;2CCC;;2CCC
+2CCE;COPTIC CAPITAL LETTER OLD COPTIC HA;Lu;0;L;;;;;N;;;;2CCF;
+2CCF;COPTIC SMALL LETTER OLD COPTIC HA;Ll;0;L;;;;;N;;;2CCE;;2CCE
+2CD0;COPTIC CAPITAL LETTER L-SHAPED HA;Lu;0;L;;;;;N;;;;2CD1;
+2CD1;COPTIC SMALL LETTER L-SHAPED HA;Ll;0;L;;;;;N;;;2CD0;;2CD0
+2CD2;COPTIC CAPITAL LETTER OLD COPTIC HEI;Lu;0;L;;;;;N;;;;2CD3;
+2CD3;COPTIC SMALL LETTER OLD COPTIC HEI;Ll;0;L;;;;;N;;;2CD2;;2CD2
+2CD4;COPTIC CAPITAL LETTER OLD COPTIC HAT;Lu;0;L;;;;;N;;;;2CD5;
+2CD5;COPTIC SMALL LETTER OLD COPTIC HAT;Ll;0;L;;;;;N;;;2CD4;;2CD4
+2CD6;COPTIC CAPITAL LETTER OLD COPTIC GANGIA;Lu;0;L;;;;;N;;;;2CD7;
+2CD7;COPTIC SMALL LETTER OLD COPTIC GANGIA;Ll;0;L;;;;;N;;;2CD6;;2CD6
+2CD8;COPTIC CAPITAL LETTER OLD COPTIC DJA;Lu;0;L;;;;;N;;;;2CD9;
+2CD9;COPTIC SMALL LETTER OLD COPTIC DJA;Ll;0;L;;;;;N;;;2CD8;;2CD8
+2CDA;COPTIC CAPITAL LETTER OLD COPTIC SHIMA;Lu;0;L;;;;;N;;;;2CDB;
+2CDB;COPTIC SMALL LETTER OLD COPTIC SHIMA;Ll;0;L;;;;;N;;;2CDA;;2CDA
+2CDC;COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;Lu;0;L;;;;;N;;;;2CDD;
+2CDD;COPTIC SMALL LETTER OLD NUBIAN SHIMA;Ll;0;L;;;;;N;;;2CDC;;2CDC
+2CDE;COPTIC CAPITAL LETTER OLD NUBIAN NGI;Lu;0;L;;;;;N;;;;2CDF;
+2CDF;COPTIC SMALL LETTER OLD NUBIAN NGI;Ll;0;L;;;;;N;;;2CDE;;2CDE
+2CE0;COPTIC CAPITAL LETTER OLD NUBIAN NYI;Lu;0;L;;;;;N;;;;2CE1;
+2CE1;COPTIC SMALL LETTER OLD NUBIAN NYI;Ll;0;L;;;;;N;;;2CE0;;2CE0
+2CE2;COPTIC CAPITAL LETTER OLD NUBIAN WAU;Lu;0;L;;;;;N;;;;2CE3;
+2CE3;COPTIC SMALL LETTER OLD NUBIAN WAU;Ll;0;L;;;;;N;;;2CE2;;2CE2
+2CE4;COPTIC SYMBOL KAI;Ll;0;L;;;;;N;;;;;
+2CE5;COPTIC SYMBOL MI RO;So;0;ON;;;;;N;;;;;
+2CE6;COPTIC SYMBOL PI RO;So;0;ON;;;;;N;;;;;
+2CE7;COPTIC SYMBOL STAUROS;So;0;ON;;;;;N;;;;;
+2CE8;COPTIC SYMBOL TAU RO;So;0;ON;;;;;N;;;;;
+2CE9;COPTIC SYMBOL KHI RO;So;0;ON;;;;;N;;;;;
+2CEA;COPTIC SYMBOL SHIMA SIMA;So;0;ON;;;;;N;;;;;
+2CF9;COPTIC OLD NUBIAN FULL STOP;Po;0;ON;;;;;N;;;;;
+2CFA;COPTIC OLD NUBIAN DIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;;
+2CFB;COPTIC OLD NUBIAN INDIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;;
+2CFC;COPTIC OLD NUBIAN VERSE DIVIDER;Po;0;ON;;;;;N;;;;;
+2CFD;COPTIC FRACTION ONE HALF;No;0;ON;;;;1/2;N;;;;;
+2CFE;COPTIC FULL STOP;Po;0;ON;;;;;N;;;;;
+2CFF;COPTIC MORPHOLOGICAL DIVIDER;Po;0;ON;;;;;N;;;;;
+2D00;GEORGIAN SMALL LETTER AN;Ll;0;L;;;;;N;;Khutsuri;10A0;;10A0
+2D01;GEORGIAN SMALL LETTER BAN;Ll;0;L;;;;;N;;Khutsuri;10A1;;10A1
+2D02;GEORGIAN SMALL LETTER GAN;Ll;0;L;;;;;N;;Khutsuri;10A2;;10A2
+2D03;GEORGIAN SMALL LETTER DON;Ll;0;L;;;;;N;;Khutsuri;10A3;;10A3
+2D04;GEORGIAN SMALL LETTER EN;Ll;0;L;;;;;N;;Khutsuri;10A4;;10A4
+2D05;GEORGIAN SMALL LETTER VIN;Ll;0;L;;;;;N;;Khutsuri;10A5;;10A5
+2D06;GEORGIAN SMALL LETTER ZEN;Ll;0;L;;;;;N;;Khutsuri;10A6;;10A6
+2D07;GEORGIAN SMALL LETTER TAN;Ll;0;L;;;;;N;;Khutsuri;10A7;;10A7
+2D08;GEORGIAN SMALL LETTER IN;Ll;0;L;;;;;N;;Khutsuri;10A8;;10A8
+2D09;GEORGIAN SMALL LETTER KAN;Ll;0;L;;;;;N;;Khutsuri;10A9;;10A9
+2D0A;GEORGIAN SMALL LETTER LAS;Ll;0;L;;;;;N;;Khutsuri;10AA;;10AA
+2D0B;GEORGIAN SMALL LETTER MAN;Ll;0;L;;;;;N;;Khutsuri;10AB;;10AB
+2D0C;GEORGIAN SMALL LETTER NAR;Ll;0;L;;;;;N;;Khutsuri;10AC;;10AC
+2D0D;GEORGIAN SMALL LETTER ON;Ll;0;L;;;;;N;;Khutsuri;10AD;;10AD
+2D0E;GEORGIAN SMALL LETTER PAR;Ll;0;L;;;;;N;;Khutsuri;10AE;;10AE
+2D0F;GEORGIAN SMALL LETTER ZHAR;Ll;0;L;;;;;N;;Khutsuri;10AF;;10AF
+2D10;GEORGIAN SMALL LETTER RAE;Ll;0;L;;;;;N;;Khutsuri;10B0;;10B0
+2D11;GEORGIAN SMALL LETTER SAN;Ll;0;L;;;;;N;;Khutsuri;10B1;;10B1
+2D12;GEORGIAN SMALL LETTER TAR;Ll;0;L;;;;;N;;Khutsuri;10B2;;10B2
+2D13;GEORGIAN SMALL LETTER UN;Ll;0;L;;;;;N;;Khutsuri;10B3;;10B3
+2D14;GEORGIAN SMALL LETTER PHAR;Ll;0;L;;;;;N;;Khutsuri;10B4;;10B4
+2D15;GEORGIAN SMALL LETTER KHAR;Ll;0;L;;;;;N;;Khutsuri;10B5;;10B5
+2D16;GEORGIAN SMALL LETTER GHAN;Ll;0;L;;;;;N;;Khutsuri;10B6;;10B6
+2D17;GEORGIAN SMALL LETTER QAR;Ll;0;L;;;;;N;;Khutsuri;10B7;;10B7
+2D18;GEORGIAN SMALL LETTER SHIN;Ll;0;L;;;;;N;;Khutsuri;10B8;;10B8
+2D19;GEORGIAN SMALL LETTER CHIN;Ll;0;L;;;;;N;;Khutsuri;10B9;;10B9
+2D1A;GEORGIAN SMALL LETTER CAN;Ll;0;L;;;;;N;;Khutsuri;10BA;;10BA
+2D1B;GEORGIAN SMALL LETTER JIL;Ll;0;L;;;;;N;;Khutsuri;10BB;;10BB
+2D1C;GEORGIAN SMALL LETTER CIL;Ll;0;L;;;;;N;;Khutsuri;10BC;;10BC
+2D1D;GEORGIAN SMALL LETTER CHAR;Ll;0;L;;;;;N;;Khutsuri;10BD;;10BD
+2D1E;GEORGIAN SMALL LETTER XAN;Ll;0;L;;;;;N;;Khutsuri;10BE;;10BE
+2D1F;GEORGIAN SMALL LETTER JHAN;Ll;0;L;;;;;N;;Khutsuri;10BF;;10BF
+2D20;GEORGIAN SMALL LETTER HAE;Ll;0;L;;;;;N;;Khutsuri;10C0;;10C0
+2D21;GEORGIAN SMALL LETTER HE;Ll;0;L;;;;;N;;Khutsuri;10C1;;10C1
+2D22;GEORGIAN SMALL LETTER HIE;Ll;0;L;;;;;N;;Khutsuri;10C2;;10C2
+2D23;GEORGIAN SMALL LETTER WE;Ll;0;L;;;;;N;;Khutsuri;10C3;;10C3
+2D24;GEORGIAN SMALL LETTER HAR;Ll;0;L;;;;;N;;Khutsuri;10C4;;10C4
+2D25;GEORGIAN SMALL LETTER HOE;Ll;0;L;;;;;N;;Khutsuri;10C5;;10C5
+2D30;TIFINAGH LETTER YA;Lo;0;L;;;;;N;;;;;
+2D31;TIFINAGH LETTER YAB;Lo;0;L;;;;;N;;;;;
+2D32;TIFINAGH LETTER YABH;Lo;0;L;;;;;N;;;;;
+2D33;TIFINAGH LETTER YAG;Lo;0;L;;;;;N;;;;;
+2D34;TIFINAGH LETTER YAGHH;Lo;0;L;;;;;N;;;;;
+2D35;TIFINAGH LETTER BERBER ACADEMY YAJ;Lo;0;L;;;;;N;;;;;
+2D36;TIFINAGH LETTER YAJ;Lo;0;L;;;;;N;;;;;
+2D37;TIFINAGH LETTER YAD;Lo;0;L;;;;;N;;;;;
+2D38;TIFINAGH LETTER YADH;Lo;0;L;;;;;N;;;;;
+2D39;TIFINAGH LETTER YADD;Lo;0;L;;;;;N;;;;;
+2D3A;TIFINAGH LETTER YADDH;Lo;0;L;;;;;N;;;;;
+2D3B;TIFINAGH LETTER YEY;Lo;0;L;;;;;N;;;;;
+2D3C;TIFINAGH LETTER YAF;Lo;0;L;;;;;N;;;;;
+2D3D;TIFINAGH LETTER YAK;Lo;0;L;;;;;N;;;;;
+2D3E;TIFINAGH LETTER TUAREG YAK;Lo;0;L;;;;;N;;;;;
+2D3F;TIFINAGH LETTER YAKHH;Lo;0;L;;;;;N;;;;;
+2D40;TIFINAGH LETTER YAH;Lo;0;L;;;;;N;;Tuareg yab;;;
+2D41;TIFINAGH LETTER BERBER ACADEMY YAH;Lo;0;L;;;;;N;;;;;
+2D42;TIFINAGH LETTER TUAREG YAH;Lo;0;L;;;;;N;;;;;
+2D43;TIFINAGH LETTER YAHH;Lo;0;L;;;;;N;;;;;
+2D44;TIFINAGH LETTER YAA;Lo;0;L;;;;;N;;;;;
+2D45;TIFINAGH LETTER YAKH;Lo;0;L;;;;;N;;;;;
+2D46;TIFINAGH LETTER TUAREG YAKH;Lo;0;L;;;;;N;;;;;
+2D47;TIFINAGH LETTER YAQ;Lo;0;L;;;;;N;;;;;
+2D48;TIFINAGH LETTER TUAREG YAQ;Lo;0;L;;;;;N;;;;;
+2D49;TIFINAGH LETTER YI;Lo;0;L;;;;;N;;;;;
+2D4A;TIFINAGH LETTER YAZH;Lo;0;L;;;;;N;;;;;
+2D4B;TIFINAGH LETTER AHAGGAR YAZH;Lo;0;L;;;;;N;;;;;
+2D4C;TIFINAGH LETTER TUAREG YAZH;Lo;0;L;;;;;N;;;;;
+2D4D;TIFINAGH LETTER YAL;Lo;0;L;;;;;N;;;;;
+2D4E;TIFINAGH LETTER YAM;Lo;0;L;;;;;N;;;;;
+2D4F;TIFINAGH LETTER YAN;Lo;0;L;;;;;N;;;;;
+2D50;TIFINAGH LETTER TUAREG YAGN;Lo;0;L;;;;;N;;;;;
+2D51;TIFINAGH LETTER TUAREG YANG;Lo;0;L;;;;;N;;;;;
+2D52;TIFINAGH LETTER YAP;Lo;0;L;;;;;N;;;;;
+2D53;TIFINAGH LETTER YU;Lo;0;L;;;;;N;;Tuareg yaw;;;
+2D54;TIFINAGH LETTER YAR;Lo;0;L;;;;;N;;;;;
+2D55;TIFINAGH LETTER YARR;Lo;0;L;;;;;N;;;;;
+2D56;TIFINAGH LETTER YAGH;Lo;0;L;;;;;N;;;;;
+2D57;TIFINAGH LETTER TUAREG YAGH;Lo;0;L;;;;;N;;;;;
+2D58;TIFINAGH LETTER AYER YAGH;Lo;0;L;;;;;N;;Adrar yaj;;;
+2D59;TIFINAGH LETTER YAS;Lo;0;L;;;;;N;;;;;
+2D5A;TIFINAGH LETTER YASS;Lo;0;L;;;;;N;;;;;
+2D5B;TIFINAGH LETTER YASH;Lo;0;L;;;;;N;;;;;
+2D5C;TIFINAGH LETTER YAT;Lo;0;L;;;;;N;;;;;
+2D5D;TIFINAGH LETTER YATH;Lo;0;L;;;;;N;;;;;
+2D5E;TIFINAGH LETTER YACH;Lo;0;L;;;;;N;;;;;
+2D5F;TIFINAGH LETTER YATT;Lo;0;L;;;;;N;;;;;
+2D60;TIFINAGH LETTER YAV;Lo;0;L;;;;;N;;;;;
+2D61;TIFINAGH LETTER YAW;Lo;0;L;;;;;N;;;;;
+2D62;TIFINAGH LETTER YAY;Lo;0;L;;;;;N;;;;;
+2D63;TIFINAGH LETTER YAZ;Lo;0;L;;;;;N;;;;;
+2D64;TIFINAGH LETTER TAWELLEMET YAZ;Lo;0;L;;;;;N;;harpoon yaz;;;
+2D65;TIFINAGH LETTER YAZZ;Lo;0;L;;;;;N;;;;;
+2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L;<super> 2D61;;;;N;;tamatart;;;
+2D80;ETHIOPIC SYLLABLE LOA;Lo;0;L;;;;;N;;;;;
+2D81;ETHIOPIC SYLLABLE MOA;Lo;0;L;;;;;N;;;;;
+2D82;ETHIOPIC SYLLABLE ROA;Lo;0;L;;;;;N;;;;;
+2D83;ETHIOPIC SYLLABLE SOA;Lo;0;L;;;;;N;;;;;
+2D84;ETHIOPIC SYLLABLE SHOA;Lo;0;L;;;;;N;;;;;
+2D85;ETHIOPIC SYLLABLE BOA;Lo;0;L;;;;;N;;;;;
+2D86;ETHIOPIC SYLLABLE TOA;Lo;0;L;;;;;N;;;;;
+2D87;ETHIOPIC SYLLABLE COA;Lo;0;L;;;;;N;;;;;
+2D88;ETHIOPIC SYLLABLE NOA;Lo;0;L;;;;;N;;;;;
+2D89;ETHIOPIC SYLLABLE NYOA;Lo;0;L;;;;;N;;;;;
+2D8A;ETHIOPIC SYLLABLE GLOTTAL OA;Lo;0;L;;;;;N;;;;;
+2D8B;ETHIOPIC SYLLABLE ZOA;Lo;0;L;;;;;N;;;;;
+2D8C;ETHIOPIC SYLLABLE DOA;Lo;0;L;;;;;N;;;;;
+2D8D;ETHIOPIC SYLLABLE DDOA;Lo;0;L;;;;;N;;;;;
+2D8E;ETHIOPIC SYLLABLE JOA;Lo;0;L;;;;;N;;;;;
+2D8F;ETHIOPIC SYLLABLE THOA;Lo;0;L;;;;;N;;;;;
+2D90;ETHIOPIC SYLLABLE CHOA;Lo;0;L;;;;;N;;;;;
+2D91;ETHIOPIC SYLLABLE PHOA;Lo;0;L;;;;;N;;;;;
+2D92;ETHIOPIC SYLLABLE POA;Lo;0;L;;;;;N;;;;;
+2D93;ETHIOPIC SYLLABLE GGWA;Lo;0;L;;;;;N;;;;;
+2D94;ETHIOPIC SYLLABLE GGWI;Lo;0;L;;;;;N;;;;;
+2D95;ETHIOPIC SYLLABLE GGWEE;Lo;0;L;;;;;N;;;;;
+2D96;ETHIOPIC SYLLABLE GGWE;Lo;0;L;;;;;N;;;;;
+2DA0;ETHIOPIC SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
+2DA1;ETHIOPIC SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
+2DA2;ETHIOPIC SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
+2DA3;ETHIOPIC SYLLABLE SSAA;Lo;0;L;;;;;N;;;;;
+2DA4;ETHIOPIC SYLLABLE SSEE;Lo;0;L;;;;;N;;;;;
+2DA5;ETHIOPIC SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
+2DA6;ETHIOPIC SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
+2DA8;ETHIOPIC SYLLABLE CCA;Lo;0;L;;;;;N;;;;;
+2DA9;ETHIOPIC SYLLABLE CCU;Lo;0;L;;;;;N;;;;;
+2DAA;ETHIOPIC SYLLABLE CCI;Lo;0;L;;;;;N;;;;;
+2DAB;ETHIOPIC SYLLABLE CCAA;Lo;0;L;;;;;N;;;;;
+2DAC;ETHIOPIC SYLLABLE CCEE;Lo;0;L;;;;;N;;;;;
+2DAD;ETHIOPIC SYLLABLE CCE;Lo;0;L;;;;;N;;;;;
+2DAE;ETHIOPIC SYLLABLE CCO;Lo;0;L;;;;;N;;;;;
+2DB0;ETHIOPIC SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
+2DB1;ETHIOPIC SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
+2DB2;ETHIOPIC SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
+2DB3;ETHIOPIC SYLLABLE ZZAA;Lo;0;L;;;;;N;;;;;
+2DB4;ETHIOPIC SYLLABLE ZZEE;Lo;0;L;;;;;N;;;;;
+2DB5;ETHIOPIC SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
+2DB6;ETHIOPIC SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
+2DB8;ETHIOPIC SYLLABLE CCHA;Lo;0;L;;;;;N;;;;;
+2DB9;ETHIOPIC SYLLABLE CCHU;Lo;0;L;;;;;N;;;;;
+2DBA;ETHIOPIC SYLLABLE CCHI;Lo;0;L;;;;;N;;;;;
+2DBB;ETHIOPIC SYLLABLE CCHAA;Lo;0;L;;;;;N;;;;;
+2DBC;ETHIOPIC SYLLABLE CCHEE;Lo;0;L;;;;;N;;;;;
+2DBD;ETHIOPIC SYLLABLE CCHE;Lo;0;L;;;;;N;;;;;
+2DBE;ETHIOPIC SYLLABLE CCHO;Lo;0;L;;;;;N;;;;;
+2DC0;ETHIOPIC SYLLABLE QYA;Lo;0;L;;;;;N;;;;;
+2DC1;ETHIOPIC SYLLABLE QYU;Lo;0;L;;;;;N;;;;;
+2DC2;ETHIOPIC SYLLABLE QYI;Lo;0;L;;;;;N;;;;;
+2DC3;ETHIOPIC SYLLABLE QYAA;Lo;0;L;;;;;N;;;;;
+2DC4;ETHIOPIC SYLLABLE QYEE;Lo;0;L;;;;;N;;;;;
+2DC5;ETHIOPIC SYLLABLE QYE;Lo;0;L;;;;;N;;;;;
+2DC6;ETHIOPIC SYLLABLE QYO;Lo;0;L;;;;;N;;;;;
+2DC8;ETHIOPIC SYLLABLE KYA;Lo;0;L;;;;;N;;;;;
+2DC9;ETHIOPIC SYLLABLE KYU;Lo;0;L;;;;;N;;;;;
+2DCA;ETHIOPIC SYLLABLE KYI;Lo;0;L;;;;;N;;;;;
+2DCB;ETHIOPIC SYLLABLE KYAA;Lo;0;L;;;;;N;;;;;
+2DCC;ETHIOPIC SYLLABLE KYEE;Lo;0;L;;;;;N;;;;;
+2DCD;ETHIOPIC SYLLABLE KYE;Lo;0;L;;;;;N;;;;;
+2DCE;ETHIOPIC SYLLABLE KYO;Lo;0;L;;;;;N;;;;;
+2DD0;ETHIOPIC SYLLABLE XYA;Lo;0;L;;;;;N;;;;;
+2DD1;ETHIOPIC SYLLABLE XYU;Lo;0;L;;;;;N;;;;;
+2DD2;ETHIOPIC SYLLABLE XYI;Lo;0;L;;;;;N;;;;;
+2DD3;ETHIOPIC SYLLABLE XYAA;Lo;0;L;;;;;N;;;;;
+2DD4;ETHIOPIC SYLLABLE XYEE;Lo;0;L;;;;;N;;;;;
+2DD5;ETHIOPIC SYLLABLE XYE;Lo;0;L;;;;;N;;;;;
+2DD6;ETHIOPIC SYLLABLE XYO;Lo;0;L;;;;;N;;;;;
+2DD8;ETHIOPIC SYLLABLE GYA;Lo;0;L;;;;;N;;;;;
+2DD9;ETHIOPIC SYLLABLE GYU;Lo;0;L;;;;;N;;;;;
+2DDA;ETHIOPIC SYLLABLE GYI;Lo;0;L;;;;;N;;;;;
+2DDB;ETHIOPIC SYLLABLE GYAA;Lo;0;L;;;;;N;;;;;
+2DDC;ETHIOPIC SYLLABLE GYEE;Lo;0;L;;;;;N;;;;;
+2DDD;ETHIOPIC SYLLABLE GYE;Lo;0;L;;;;;N;;;;;
+2DDE;ETHIOPIC SYLLABLE GYO;Lo;0;L;;;;;N;;;;;
+2DE0;COMBINING CYRILLIC LETTER BE;Mn;230;NSM;;;;;N;;;;;
+2DE1;COMBINING CYRILLIC LETTER VE;Mn;230;NSM;;;;;N;;;;;
+2DE2;COMBINING CYRILLIC LETTER GHE;Mn;230;NSM;;;;;N;;;;;
+2DE3;COMBINING CYRILLIC LETTER DE;Mn;230;NSM;;;;;N;;;;;
+2DE4;COMBINING CYRILLIC LETTER ZHE;Mn;230;NSM;;;;;N;;;;;
+2DE5;COMBINING CYRILLIC LETTER ZE;Mn;230;NSM;;;;;N;;;;;
+2DE6;COMBINING CYRILLIC LETTER KA;Mn;230;NSM;;;;;N;;;;;
+2DE7;COMBINING CYRILLIC LETTER EL;Mn;230;NSM;;;;;N;;;;;
+2DE8;COMBINING CYRILLIC LETTER EM;Mn;230;NSM;;;;;N;;;;;
+2DE9;COMBINING CYRILLIC LETTER EN;Mn;230;NSM;;;;;N;;;;;
+2DEA;COMBINING CYRILLIC LETTER O;Mn;230;NSM;;;;;N;;;;;
+2DEB;COMBINING CYRILLIC LETTER PE;Mn;230;NSM;;;;;N;;;;;
+2DEC;COMBINING CYRILLIC LETTER ER;Mn;230;NSM;;;;;N;;;;;
+2DED;COMBINING CYRILLIC LETTER ES;Mn;230;NSM;;;;;N;;;;;
+2DEE;COMBINING CYRILLIC LETTER TE;Mn;230;NSM;;;;;N;;;;;
+2DEF;COMBINING CYRILLIC LETTER HA;Mn;230;NSM;;;;;N;;;;;
+2DF0;COMBINING CYRILLIC LETTER TSE;Mn;230;NSM;;;;;N;;;;;
+2DF1;COMBINING CYRILLIC LETTER CHE;Mn;230;NSM;;;;;N;;;;;
+2DF2;COMBINING CYRILLIC LETTER SHA;Mn;230;NSM;;;;;N;;;;;
+2DF3;COMBINING CYRILLIC LETTER SHCHA;Mn;230;NSM;;;;;N;;;;;
+2DF4;COMBINING CYRILLIC LETTER FITA;Mn;230;NSM;;;;;N;;;;;
+2DF5;COMBINING CYRILLIC LETTER ES-TE;Mn;230;NSM;;;;;N;;;;;
+2DF6;COMBINING CYRILLIC LETTER A;Mn;230;NSM;;;;;N;;;;;
+2DF7;COMBINING CYRILLIC LETTER IE;Mn;230;NSM;;;;;N;;;;;
+2DF8;COMBINING CYRILLIC LETTER DJERV;Mn;230;NSM;;;;;N;;;;;
+2DF9;COMBINING CYRILLIC LETTER MONOGRAPH UK;Mn;230;NSM;;;;;N;;;;;
+2DFA;COMBINING CYRILLIC LETTER YAT;Mn;230;NSM;;;;;N;;;;;
+2DFB;COMBINING CYRILLIC LETTER YU;Mn;230;NSM;;;;;N;;;;;
+2DFC;COMBINING CYRILLIC LETTER IOTIFIED A;Mn;230;NSM;;;;;N;;;;;
+2DFD;COMBINING CYRILLIC LETTER LITTLE YUS;Mn;230;NSM;;;;;N;;;;;
+2DFE;COMBINING CYRILLIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;;
+2DFF;COMBINING CYRILLIC LETTER IOTIFIED BIG YUS;Mn;230;NSM;;;;;N;;;;;
+2E00;RIGHT ANGLE SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;;
+2E01;RIGHT ANGLE DOTTED SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;;
+2E02;LEFT SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E03;RIGHT SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E04;LEFT DOTTED SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E05;RIGHT DOTTED SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E06;RAISED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;;
+2E07;RAISED DOTTED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;;
+2E08;DOTTED TRANSPOSITION MARKER;Po;0;ON;;;;;N;;;;;
+2E09;LEFT TRANSPOSITION BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E0A;RIGHT TRANSPOSITION BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E0B;RAISED SQUARE;Po;0;ON;;;;;N;;;;;
+2E0C;LEFT RAISED OMISSION BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E0D;RIGHT RAISED OMISSION BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E0E;EDITORIAL CORONIS;Po;0;ON;;;;;N;;;;;
+2E0F;PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
+2E10;FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
+2E11;REVERSED FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
+2E12;HYPODIASTOLE;Po;0;ON;;;;;N;;;;;
+2E13;DOTTED OBELOS;Po;0;ON;;;;;N;;;;;
+2E14;DOWNWARDS ANCORA;Po;0;ON;;;;;N;;;;;
+2E15;UPWARDS ANCORA;Po;0;ON;;;;;N;;;;;
+2E16;DOTTED RIGHT-POINTING ANGLE;Po;0;ON;;;;;N;;;;;
+2E17;DOUBLE OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;;
+2E18;INVERTED INTERROBANG;Po;0;ON;;;;;N;;;;;
+2E19;PALM BRANCH;Po;0;ON;;;;;N;;;;;
+2E1A;HYPHEN WITH DIAERESIS;Pd;0;ON;;;;;N;;;;;
+2E1B;TILDE WITH RING ABOVE;Po;0;ON;;;;;N;;;;;
+2E1C;LEFT LOW PARAPHRASE BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E1D;RIGHT LOW PARAPHRASE BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E1E;TILDE WITH DOT ABOVE;Po;0;ON;;;;;N;;;;;
+2E1F;TILDE WITH DOT BELOW;Po;0;ON;;;;;N;;;;;
+2E20;LEFT VERTICAL BAR WITH QUILL;Pi;0;ON;;;;;Y;;;;;
+2E21;RIGHT VERTICAL BAR WITH QUILL;Pf;0;ON;;;;;Y;;;;;
+2E22;TOP LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;;
+2E23;TOP RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;;
+2E24;BOTTOM LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;;
+2E25;BOTTOM RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;;
+2E26;LEFT SIDEWAYS U BRACKET;Ps;0;ON;;;;;Y;;;;;
+2E27;RIGHT SIDEWAYS U BRACKET;Pe;0;ON;;;;;Y;;;;;
+2E28;LEFT DOUBLE PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+2E29;RIGHT DOUBLE PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
+2E2A;TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2E2B;ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2E2C;SQUARED FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2E2D;FIVE DOT MARK;Po;0;ON;;;;;N;;;;;
+2E2E;REVERSED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+2E2F;VERTICAL TILDE;Lm;0;ON;;;;;N;;;;;
+2E30;RING POINT;Po;0;ON;;;;;N;;;;;
+2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
+2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
+2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
+2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;;
+2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;;
+2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;;
+2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;;
+2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;;
+2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;;
+2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;;
+2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;;
+2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;;
+2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;;
+2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;;
+2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;;
+2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;;
+2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;;
+2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;;
+2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;;
+2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;;
+2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;;
+2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;;
+2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;;
+2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;;
+2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;;
+2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;;
+2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;;
+2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;;
+2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;;
+2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;;
+2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;;
+2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;;
+2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;;
+2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;;
+2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;;
+2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;;
+2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;;
+2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;;
+2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;;
+2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;;
+2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;;
+2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;;
+2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;;
+2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;;
+2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;;
+2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;;
+2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;;
+2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;;
+2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;;
+2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;;
+2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;;
+2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;;
+2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;;
+2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;;
+2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;;
+2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;;
+2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;;
+2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;;
+2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;;
+2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;;
+2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;;
+2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;;
+2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;;
+2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;;
+2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;;
+2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;;
+2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;;
+2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;;
+2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;;
+2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;;
+2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;;
+2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;;
+2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;;
+2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;;
+2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;;
+2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;;
+2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;;
+2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;;
+2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;;
+2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;;
+2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;;
+2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;;
+2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;;
+2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;;
+2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;;
+2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;;
+2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;;
+2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;;
+2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;;
+2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;;
+2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;;
+2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;;
+2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;;
+2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;;
+2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;;
+2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;;
+2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;;
+2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;;
+2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;;
+2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;;
+2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;;
+2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;;
+2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;;
+2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;;
+2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;;
+2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;;
+2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;;
+2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;;
+2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;;
+2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;;
+2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;;
+2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;;
+2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;;
+2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;;
+2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;;
+2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;;
+2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;;
+2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;;
+2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;;
+2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;;
+2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;;
+2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;;
+2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;;
+2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;;
+2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;;
+2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;;
+2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;;
+2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;;
+2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;;
+2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;;
+2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;;
+2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;;
+2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;;
+2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;;
+2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;;
+2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;;
+2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;;
+2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;;
+2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;;
+2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;;
+2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;;
+2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;;
+2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;;
+2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;;
+2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;;
+2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;;
+2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;;
+2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;;
+2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;;
+2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;;
+2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;;
+2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;;
+2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;;
+2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;;
+2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;;
+2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;;
+2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;;
+2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;;
+2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;;
+2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;;
+2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;;
+2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;;
+2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;;
+2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;;
+2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;;
+2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;;
+2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;;
+2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;;
+2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;;
+2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;;
+2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;;
+2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;;
+2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;;
+2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;;
+2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;;
+2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;;
+2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;;
+2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;;
+2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;;
+2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;;
+2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;;
+2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;;
+2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;;
+2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;;
+2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;;
+2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;;
+2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;;
+2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;;
+2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;;
+2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;;
+2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;;
+2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;;
+2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;;
+2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;;
+2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;;
+2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;;
+2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;;
+2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;;
+2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;;
+2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;;
+2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;;
+2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;;
+2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;;
+2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;;
+2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;;
+2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;;
+2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;;
+2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;;
+2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;;
+2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;;
+2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;;
+2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;;
+2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;;
+2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;;
+2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;;
+2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;;
+2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;;
+2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;;
+2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;;
+2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;;
+2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;;
+2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;;
+2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;;
+2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;;
+2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;;
+2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;;
+2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;;
+2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;;
+2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;;
+2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;;
+2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;;
+2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;;
+2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;;
+2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;;
+2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;;
+2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;;
+2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;;
+2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;;
+2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;;
+2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;;
+2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;;
+2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;;
+2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;;
+2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;;
+2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;;
+2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;;
+2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;;
+2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;;
+2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;;
+2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;;
+2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;;
+2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;;
+2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;;
+2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;;
+2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;;
+2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;;
+2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;;
+2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;;
+2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;;
+2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;;
+2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;;
+2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;;
+2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;;
+2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;;
+2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;;
+2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;;
+2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;;
+2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;;
+2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;;
+2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;;
+2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;;
+2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;;
+2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;;
+2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;;
+2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;;
+2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;;
+2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;;
+2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;;
+2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;;
+2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;;
+2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;;
+2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;;
+2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;;
+2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;;
+2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;;
+2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;;
+2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;;
+2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;;
+2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;;
+2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;;
+2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;;
+2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;;
+2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;;
+2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;;
+2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;;
+2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;;
+2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;;
+2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;;
+2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;;
+2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;;
+2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;;
+2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;;
+2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;;
+2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;;
+2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;;
+2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;;
+2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;;
+2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;;
+2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;;
+2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;;
+2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;;
+2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;;
+2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;;
+2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;;
+2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;;
+2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;;
+2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;;
+2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;;
+2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;;
+2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;;
+2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;;
+2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;;
+2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;;
+2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;;
+2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;;
+2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;;
+2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;;
+2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;;
+2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;;
+2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;;
+2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;;
+2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;;
+2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;;
+2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;;
+2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;;
+3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
+3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
+3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
+3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
+3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
+3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
+3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;
+3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;
+3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
+3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
+300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
+300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
+300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
+300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
+300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
+300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
+3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
+3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
+3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
+3013;GETA MARK;So;0;ON;;;;;N;;;;;
+3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
+3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
+3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
+3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
+3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
+3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
+301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
+301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
+301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
+301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
+3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
+3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
+3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
+3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
+3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
+3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
+3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
+3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
+3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
+302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;;
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;;
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;;
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;;
+302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
+3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;;
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;;
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;;
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
+3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;;
+3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;;
+303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;;
+303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
+303C;MASU MARK;Lo;0;L;;;;;N;;;;;
+303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;;
+303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;;
+303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
+3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
+3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
+3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
+3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
+3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
+304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
+304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
+304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
+304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
+304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
+3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
+3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
+3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
+3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
+3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
+3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
+3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
+3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
+3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
+3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
+305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
+305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
+305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
+305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
+305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
+305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
+3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
+3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
+3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
+3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
+3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
+3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
+3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
+3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
+3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
+306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
+306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
+306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
+306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
+306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
+306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
+3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
+3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
+3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
+3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
+3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
+3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
+3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
+3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
+3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
+3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
+307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
+307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
+307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
+307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
+307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
+307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
+3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
+3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
+3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
+3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
+3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
+3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
+3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
+308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
+308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
+308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
+308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
+308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
+3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
+3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
+3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
+3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
+3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
+3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
+309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;
+309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
+309F;HIRAGANA DIGRAPH YORI;Lo;0;L;<vertical> 3088 308A;;;;N;;;;;
+30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;;
+30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
+30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
+30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
+30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
+30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
+30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
+30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
+30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
+30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
+30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
+30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
+30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
+30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
+30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
+30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
+30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
+30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
+30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
+30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
+30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
+30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
+30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
+30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
+30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
+30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
+30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
+30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
+30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
+30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
+30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
+30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
+30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
+30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
+30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
+30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
+30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
+30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
+30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
+30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
+30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
+30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
+30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
+30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
+30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
+30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
+30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
+30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
+30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
+30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
+30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
+30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
+30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
+30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
+30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
+30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
+30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
+30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
+30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
+30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
+30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
+30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
+30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
+30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
+30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
+30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
+30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
+30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
+30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
+30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
+30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
+30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
+30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
+30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
+30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
+30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
+30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
+30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
+30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
+30FB;KATAKANA MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
+30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
+30FF;KATAKANA DIGRAPH KOTO;Lo;0;L;<vertical> 30B3 30C8;;;;N;;;;;
+3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
+3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
+3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
+3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
+3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
+310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
+310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
+310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
+310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
+310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
+310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
+3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
+3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
+3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
+3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
+3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
+3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
+3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
+3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
+3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
+3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
+311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
+311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
+311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
+311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
+311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
+311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
+3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
+3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
+3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
+3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
+3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
+3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
+3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
+3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
+3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
+3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
+312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
+312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
+312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
+312D;BOPOMOFO LETTER IH;Lo;0;L;;;;;N;;;;;
+3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
+3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
+3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
+3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
+3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
+3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
+3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
+3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
+3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
+313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
+313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
+313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
+313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
+313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
+313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
+3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
+3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
+3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
+3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
+3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
+3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
+3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
+3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
+3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
+3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
+314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
+314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
+314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
+314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
+314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
+314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
+3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
+3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
+3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
+3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
+3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
+3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
+3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
+3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
+3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
+3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
+315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
+315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
+315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
+315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
+315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
+315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
+3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
+3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
+3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
+3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
+3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
+3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
+3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
+3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
+3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
+3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
+316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
+316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
+316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
+316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
+316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
+316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
+3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
+3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
+3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
+3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
+3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
+3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
+3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
+3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
+3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
+3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
+317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
+317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
+317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
+317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
+317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
+317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
+3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
+3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
+3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
+3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
+3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
+3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
+3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
+3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
+3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
+3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
+318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
+318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
+318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
+318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
+318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
+3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;;
+3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;;
+3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;1;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;2;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;3;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;4;N;KAERITEN SI;Kaeriten;;;
+3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;;
+3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;;
+3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;;
+3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;;
+319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;;
+319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;;
+319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;;
+319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;;
+319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;;
+319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;;
+31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;;
+31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;;
+31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;;
+31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;;
+31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;;
+31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;;
+31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;;
+31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;;
+31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;;
+31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;;
+31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;;
+31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;;
+31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;;
+31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;;
+31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;;
+31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;;
+31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;;
+31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;;
+31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;;
+31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;;
+31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;;
+31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;;
+31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;;
+31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;;
+31C0;CJK STROKE T;So;0;ON;;;;;N;;;;;
+31C1;CJK STROKE WG;So;0;ON;;;;;N;;;;;
+31C2;CJK STROKE XG;So;0;ON;;;;;N;;;;;
+31C3;CJK STROKE BXG;So;0;ON;;;;;N;;;;;
+31C4;CJK STROKE SW;So;0;ON;;;;;N;;;;;
+31C5;CJK STROKE HZZ;So;0;ON;;;;;N;;;;;
+31C6;CJK STROKE HZG;So;0;ON;;;;;N;;;;;
+31C7;CJK STROKE HP;So;0;ON;;;;;N;;;;;
+31C8;CJK STROKE HZWG;So;0;ON;;;;;N;;;;;
+31C9;CJK STROKE SZWG;So;0;ON;;;;;N;;;;;
+31CA;CJK STROKE HZT;So;0;ON;;;;;N;;;;;
+31CB;CJK STROKE HZZP;So;0;ON;;;;;N;;;;;
+31CC;CJK STROKE HPWG;So;0;ON;;;;;N;;;;;
+31CD;CJK STROKE HZW;So;0;ON;;;;;N;;;;;
+31CE;CJK STROKE HZZZ;So;0;ON;;;;;N;;;;;
+31CF;CJK STROKE N;So;0;ON;;;;;N;;;;;
+31D0;CJK STROKE H;So;0;ON;;;;;N;;;;;
+31D1;CJK STROKE S;So;0;ON;;;;;N;;;;;
+31D2;CJK STROKE P;So;0;ON;;;;;N;;;;;
+31D3;CJK STROKE SP;So;0;ON;;;;;N;;;;;
+31D4;CJK STROKE D;So;0;ON;;;;;N;;;;;
+31D5;CJK STROKE HZ;So;0;ON;;;;;N;;;;;
+31D6;CJK STROKE HG;So;0;ON;;;;;N;;;;;
+31D7;CJK STROKE SZ;So;0;ON;;;;;N;;;;;
+31D8;CJK STROKE SWZ;So;0;ON;;;;;N;;;;;
+31D9;CJK STROKE ST;So;0;ON;;;;;N;;;;;
+31DA;CJK STROKE SG;So;0;ON;;;;;N;;;;;
+31DB;CJK STROKE PD;So;0;ON;;;;;N;;;;;
+31DC;CJK STROKE PZ;So;0;ON;;;;;N;;;;;
+31DD;CJK STROKE TN;So;0;ON;;;;;N;;;;;
+31DE;CJK STROKE SZZ;So;0;ON;;;;;N;;;;;
+31DF;CJK STROKE SWG;So;0;ON;;;;;N;;;;;
+31E0;CJK STROKE HXWG;So;0;ON;;;;;N;;;;;
+31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;;
+31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;;
+31E3;CJK STROKE Q;So;0;ON;;;;;N;;;;;
+31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;;
+31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;;
+31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;;
+31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;;
+31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;;
+31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;;
+31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;;
+31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;;
+31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;;
+31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;;
+31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;;
+31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;;
+31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;;
+31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;;
+31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;;
+31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;;
+3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
+3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
+3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
+3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
+3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
+3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
+3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
+3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
+3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
+3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
+320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
+320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
+320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
+320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
+320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
+320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
+3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
+3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
+3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
+3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
+3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
+3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
+3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
+3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
+3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
+3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
+321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
+321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
+321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
+321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON;<compat> 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;;
+321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON;<compat> 0028 110B 1169 1112 116E 0029;;;;N;;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;1;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;2;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;3;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;4;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;5;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;6;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;7;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;8;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;9;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;10;N;;;;;
+322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
+322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
+322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
+322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
+322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
+322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
+3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
+3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
+3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
+3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
+3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
+3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
+3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
+3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
+3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
+3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
+323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
+323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
+323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
+323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
+323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
+323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
+3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
+3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
+3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
+3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
+3250;PARTNERSHIP SIGN;So;0;ON;<square> 0050 0054 0045;;;;N;;;;;
+3251;CIRCLED NUMBER TWENTY ONE;No;0;ON;<circle> 0032 0031;;;21;N;;;;;
+3252;CIRCLED NUMBER TWENTY TWO;No;0;ON;<circle> 0032 0032;;;22;N;;;;;
+3253;CIRCLED NUMBER TWENTY THREE;No;0;ON;<circle> 0032 0033;;;23;N;;;;;
+3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON;<circle> 0032 0034;;;24;N;;;;;
+3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON;<circle> 0032 0035;;;25;N;;;;;
+3256;CIRCLED NUMBER TWENTY SIX;No;0;ON;<circle> 0032 0036;;;26;N;;;;;
+3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON;<circle> 0032 0037;;;27;N;;;;;
+3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON;<circle> 0032 0038;;;28;N;;;;;
+3259;CIRCLED NUMBER TWENTY NINE;No;0;ON;<circle> 0032 0039;;;29;N;;;;;
+325A;CIRCLED NUMBER THIRTY;No;0;ON;<circle> 0033 0030;;;30;N;;;;;
+325B;CIRCLED NUMBER THIRTY ONE;No;0;ON;<circle> 0033 0031;;;31;N;;;;;
+325C;CIRCLED NUMBER THIRTY TWO;No;0;ON;<circle> 0033 0032;;;32;N;;;;;
+325D;CIRCLED NUMBER THIRTY THREE;No;0;ON;<circle> 0033 0033;;;33;N;;;;;
+325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON;<circle> 0033 0034;;;34;N;;;;;
+325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON;<circle> 0033 0035;;;35;N;;;;;
+3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
+3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
+3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
+3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
+3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
+3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
+3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
+3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
+3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
+3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
+326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
+326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
+326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
+326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
+326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
+326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
+3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
+3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
+3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
+3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
+3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
+3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
+3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
+3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
+3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
+3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
+327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
+327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
+327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON;<circle> 110E 1161 11B7 1100 1169;;;;N;;;;;
+327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON;<circle> 110C 116E 110B 1174;;;;N;;;;;
+327E;CIRCLED HANGUL IEUNG U;So;0;ON;<circle> 110B 116E;;;;N;;;;;
+327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
+3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
+3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
+3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
+3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
+3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
+3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
+3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
+3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
+3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
+3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
+328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
+328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
+328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
+328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
+328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
+328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
+3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
+3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
+3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
+3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
+3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
+3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
+3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
+3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
+3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
+3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
+329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
+329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
+329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
+329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
+329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
+329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
+32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
+32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
+32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
+32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
+32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
+32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
+32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
+32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
+32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
+32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
+32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
+32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
+32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
+32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
+32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
+32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
+32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
+32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON;<circle> 0033 0036;;;36;N;;;;;
+32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON;<circle> 0033 0037;;;37;N;;;;;
+32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON;<circle> 0033 0038;;;38;N;;;;;
+32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON;<circle> 0033 0039;;;39;N;;;;;
+32B5;CIRCLED NUMBER FORTY;No;0;ON;<circle> 0034 0030;;;40;N;;;;;
+32B6;CIRCLED NUMBER FORTY ONE;No;0;ON;<circle> 0034 0031;;;41;N;;;;;
+32B7;CIRCLED NUMBER FORTY TWO;No;0;ON;<circle> 0034 0032;;;42;N;;;;;
+32B8;CIRCLED NUMBER FORTY THREE;No;0;ON;<circle> 0034 0033;;;43;N;;;;;
+32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON;<circle> 0034 0034;;;44;N;;;;;
+32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON;<circle> 0034 0035;;;45;N;;;;;
+32BB;CIRCLED NUMBER FORTY SIX;No;0;ON;<circle> 0034 0036;;;46;N;;;;;
+32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON;<circle> 0034 0037;;;47;N;;;;;
+32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON;<circle> 0034 0038;;;48;N;;;;;
+32BE;CIRCLED NUMBER FORTY NINE;No;0;ON;<circle> 0034 0039;;;49;N;;;;;
+32BF;CIRCLED NUMBER FIFTY;No;0;ON;<circle> 0035 0030;;;50;N;;;;;
+32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
+32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
+32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
+32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
+32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
+32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
+32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
+32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
+32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
+32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
+32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
+32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
+32CC;SQUARE HG;So;0;ON;<square> 0048 0067;;;;N;;;;;
+32CD;SQUARE ERG;So;0;ON;<square> 0065 0072 0067;;;;N;;;;;
+32CE;SQUARE EV;So;0;ON;<square> 0065 0056;;;;N;;;;;
+32CF;LIMITED LIABILITY SIGN;So;0;ON;<square> 004C 0054 0044;;;;N;;;;;
+32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
+32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
+32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
+32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
+32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
+32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
+32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
+32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
+32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
+32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
+32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
+32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
+32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
+32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
+32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
+32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
+32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
+32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
+32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
+32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
+32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
+32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
+32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
+32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
+32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
+32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
+32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
+32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
+32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
+32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
+32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
+32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
+32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
+32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
+32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
+32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
+32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
+32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
+32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
+32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
+32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
+32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
+32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
+32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
+32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
+32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
+32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
+3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
+3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
+3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
+3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
+3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
+3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
+3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
+3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
+3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
+3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
+330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
+330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
+330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
+330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
+330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
+330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
+3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
+3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
+3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
+3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
+3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
+3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
+3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
+3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
+3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
+3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
+331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
+331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
+331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
+331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
+331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
+331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
+3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
+3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
+3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
+3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
+3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
+3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
+3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
+3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
+3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
+3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
+332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
+332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
+332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
+332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
+332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
+332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
+3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
+3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
+3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
+3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
+3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
+3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
+3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
+3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
+3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
+3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
+333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
+333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
+333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
+333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
+333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
+333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
+3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
+3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
+3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
+3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
+3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
+3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
+3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
+3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
+3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
+3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
+334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
+334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
+334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
+334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
+334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
+334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
+3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
+3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
+3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
+3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
+3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
+3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
+3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
+3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
+3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
+3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
+335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
+335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
+335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
+335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
+335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
+335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
+3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
+3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
+3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
+3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
+3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
+3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
+3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
+3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
+3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
+3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
+336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
+336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
+336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
+336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
+336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
+336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
+3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
+3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
+3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
+3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
+3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
+3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
+3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
+3377;SQUARE DM;So;0;ON;<square> 0064 006D;;;;N;;;;;
+3378;SQUARE DM SQUARED;So;0;ON;<square> 0064 006D 00B2;;;;N;;;;;
+3379;SQUARE DM CUBED;So;0;ON;<square> 0064 006D 00B3;;;;N;;;;;
+337A;SQUARE IU;So;0;ON;<square> 0049 0055;;;;N;;;;;
+337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
+337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
+337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
+337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
+337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
+3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
+3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
+3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
+3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
+3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
+3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
+3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
+3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
+3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
+3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
+338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
+338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
+338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
+338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
+338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
+338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
+3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
+3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
+3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
+3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
+3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
+3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
+3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
+3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
+3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
+3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
+339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
+339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
+339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
+339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
+339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
+339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
+33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
+33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
+33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
+33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
+33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
+33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
+33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
+33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
+33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
+33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
+33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
+33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
+33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
+33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
+33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
+33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
+33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
+33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
+33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
+33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
+33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
+33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
+33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
+33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
+33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
+33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
+33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
+33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
+33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
+33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
+33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
+33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
+33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
+33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
+33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
+33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
+33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
+33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
+33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
+33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
+33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
+33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
+33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
+33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
+33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
+33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
+33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
+33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
+33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
+33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
+33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
+33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
+33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
+33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
+33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
+33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
+33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
+33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
+33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
+33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
+33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
+33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
+33DE;SQUARE V OVER M;So;0;ON;<square> 0056 2215 006D;;;;N;;;;;
+33DF;SQUARE A OVER M;So;0;ON;<square> 0041 2215 006D;;;;N;;;;;
+33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
+33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
+33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
+33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
+33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
+33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
+33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
+33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
+33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
+33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
+33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
+33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
+33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
+33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
+33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
+33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
+33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
+33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
+33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
+33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
+33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
+33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
+33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
+33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
+33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
+33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
+33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
+33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
+33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
+33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
+33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
+33FF;SQUARE GAL;So;0;ON;<square> 0067 0061 006C;;;;N;;;;;
+4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;;
+4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;;
+4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;;
+4DC3;HEXAGRAM FOR YOUTHFUL FOLLY;So;0;ON;;;;;N;;;;;
+4DC4;HEXAGRAM FOR WAITING;So;0;ON;;;;;N;;;;;
+4DC5;HEXAGRAM FOR CONFLICT;So;0;ON;;;;;N;;;;;
+4DC6;HEXAGRAM FOR THE ARMY;So;0;ON;;;;;N;;;;;
+4DC7;HEXAGRAM FOR HOLDING TOGETHER;So;0;ON;;;;;N;;;;;
+4DC8;HEXAGRAM FOR SMALL TAMING;So;0;ON;;;;;N;;;;;
+4DC9;HEXAGRAM FOR TREADING;So;0;ON;;;;;N;;;;;
+4DCA;HEXAGRAM FOR PEACE;So;0;ON;;;;;N;;;;;
+4DCB;HEXAGRAM FOR STANDSTILL;So;0;ON;;;;;N;;;;;
+4DCC;HEXAGRAM FOR FELLOWSHIP;So;0;ON;;;;;N;;;;;
+4DCD;HEXAGRAM FOR GREAT POSSESSION;So;0;ON;;;;;N;;;;;
+4DCE;HEXAGRAM FOR MODESTY;So;0;ON;;;;;N;;;;;
+4DCF;HEXAGRAM FOR ENTHUSIASM;So;0;ON;;;;;N;;;;;
+4DD0;HEXAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;;
+4DD1;HEXAGRAM FOR WORK ON THE DECAYED;So;0;ON;;;;;N;;;;;
+4DD2;HEXAGRAM FOR APPROACH;So;0;ON;;;;;N;;;;;
+4DD3;HEXAGRAM FOR CONTEMPLATION;So;0;ON;;;;;N;;;;;
+4DD4;HEXAGRAM FOR BITING THROUGH;So;0;ON;;;;;N;;;;;
+4DD5;HEXAGRAM FOR GRACE;So;0;ON;;;;;N;;;;;
+4DD6;HEXAGRAM FOR SPLITTING APART;So;0;ON;;;;;N;;;;;
+4DD7;HEXAGRAM FOR RETURN;So;0;ON;;;;;N;;;;;
+4DD8;HEXAGRAM FOR INNOCENCE;So;0;ON;;;;;N;;;;;
+4DD9;HEXAGRAM FOR GREAT TAMING;So;0;ON;;;;;N;;;;;
+4DDA;HEXAGRAM FOR MOUTH CORNERS;So;0;ON;;;;;N;;;;;
+4DDB;HEXAGRAM FOR GREAT PREPONDERANCE;So;0;ON;;;;;N;;;;;
+4DDC;HEXAGRAM FOR THE ABYSMAL WATER;So;0;ON;;;;;N;;;;;
+4DDD;HEXAGRAM FOR THE CLINGING FIRE;So;0;ON;;;;;N;;;;;
+4DDE;HEXAGRAM FOR INFLUENCE;So;0;ON;;;;;N;;;;;
+4DDF;HEXAGRAM FOR DURATION;So;0;ON;;;;;N;;;;;
+4DE0;HEXAGRAM FOR RETREAT;So;0;ON;;;;;N;;;;;
+4DE1;HEXAGRAM FOR GREAT POWER;So;0;ON;;;;;N;;;;;
+4DE2;HEXAGRAM FOR PROGRESS;So;0;ON;;;;;N;;;;;
+4DE3;HEXAGRAM FOR DARKENING OF THE LIGHT;So;0;ON;;;;;N;;;;;
+4DE4;HEXAGRAM FOR THE FAMILY;So;0;ON;;;;;N;;;;;
+4DE5;HEXAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;;
+4DE6;HEXAGRAM FOR OBSTRUCTION;So;0;ON;;;;;N;;;;;
+4DE7;HEXAGRAM FOR DELIVERANCE;So;0;ON;;;;;N;;;;;
+4DE8;HEXAGRAM FOR DECREASE;So;0;ON;;;;;N;;;;;
+4DE9;HEXAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;;
+4DEA;HEXAGRAM FOR BREAKTHROUGH;So;0;ON;;;;;N;;;;;
+4DEB;HEXAGRAM FOR COMING TO MEET;So;0;ON;;;;;N;;;;;
+4DEC;HEXAGRAM FOR GATHERING TOGETHER;So;0;ON;;;;;N;;;;;
+4DED;HEXAGRAM FOR PUSHING UPWARD;So;0;ON;;;;;N;;;;;
+4DEE;HEXAGRAM FOR OPPRESSION;So;0;ON;;;;;N;;;;;
+4DEF;HEXAGRAM FOR THE WELL;So;0;ON;;;;;N;;;;;
+4DF0;HEXAGRAM FOR REVOLUTION;So;0;ON;;;;;N;;;;;
+4DF1;HEXAGRAM FOR THE CAULDRON;So;0;ON;;;;;N;;;;;
+4DF2;HEXAGRAM FOR THE AROUSING THUNDER;So;0;ON;;;;;N;;;;;
+4DF3;HEXAGRAM FOR THE KEEPING STILL MOUNTAIN;So;0;ON;;;;;N;;;;;
+4DF4;HEXAGRAM FOR DEVELOPMENT;So;0;ON;;;;;N;;;;;
+4DF5;HEXAGRAM FOR THE MARRYING MAIDEN;So;0;ON;;;;;N;;;;;
+4DF6;HEXAGRAM FOR ABUNDANCE;So;0;ON;;;;;N;;;;;
+4DF7;HEXAGRAM FOR THE WANDERER;So;0;ON;;;;;N;;;;;
+4DF8;HEXAGRAM FOR THE GENTLE WIND;So;0;ON;;;;;N;;;;;
+4DF9;HEXAGRAM FOR THE JOYOUS LAKE;So;0;ON;;;;;N;;;;;
+4DFA;HEXAGRAM FOR DISPERSION;So;0;ON;;;;;N;;;;;
+4DFB;HEXAGRAM FOR LIMITATION;So;0;ON;;;;;N;;;;;
+4DFC;HEXAGRAM FOR INNER TRUTH;So;0;ON;;;;;N;;;;;
+4DFD;HEXAGRAM FOR SMALL PREPONDERANCE;So;0;ON;;;;;N;;;;;
+4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;;
+4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;;
+A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
+A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
+A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
+A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;;
+A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;;
+A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;;
+A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;;
+A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;;
+A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;;
+A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;;
+A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;;
+A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;;
+A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;;
+A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;;
+A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;;
+A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;;
+A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;;
+A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;;
+A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;;
+A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;;
+A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;;
+A015;YI SYLLABLE WU;Lm;0;L;;;;;N;;;;;
+A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;;
+A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;;
+A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;;
+A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;;
+A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;;
+A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;;
+A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;;
+A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;;
+A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;;
+A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;;
+A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;;
+A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;;
+A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;;
+A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;;
+A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;;
+A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;;
+A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;;
+A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;;
+A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;;
+A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;;
+A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;;
+A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;;
+A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;;
+A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;;
+A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;;
+A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;;
+A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;;
+A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;;
+A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;;
+A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;;
+A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;;
+A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;;
+A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;;
+A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;;
+A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;;
+A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;;
+A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;;
+A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;;
+A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;;
+A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;;
+A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;;
+A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;;
+A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;;
+A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;;
+A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;;
+A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;;
+A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;;
+A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;;
+A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;;
+A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;;
+A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;;
+A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;;
+A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;;
+A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;;
+A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;;
+A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;;
+A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;;
+A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;;
+A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;;
+A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;;
+A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;;
+A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;;
+A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;;
+A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;;
+A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;;
+A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;;
+A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;;
+A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;;
+A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;;
+A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;;
+A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;;
+A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;;
+A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;;
+A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;;
+A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;;
+A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;;
+A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;;
+A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;;
+A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;;
+A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;;
+A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;;
+A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;;
+A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;;
+A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;;
+A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;;
+A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;;
+A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;;
+A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;;
+A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;;
+A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;;
+A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;;
+A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;;
+A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;;
+A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;;
+A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;;
+A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;;
+A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;;
+A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;;
+A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;;
+A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;;
+A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;;
+A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;;
+A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;;
+A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;;
+A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;;
+A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;;
+A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;;
+A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;;
+A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;;
+A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;;
+A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;;
+A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;;
+A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;;
+A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;;
+A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;;
+A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;;
+A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;;
+A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;;
+A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;;
+A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;;
+A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;;
+A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;;
+A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;;
+A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;;
+A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;;
+A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;;
+A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;;
+A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;;
+A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;;
+A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;;
+A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;;
+A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;;
+A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;;
+A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;;
+A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;;
+A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;;
+A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;;
+A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;;
+A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;;
+A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;;
+A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;;
+A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;;
+A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;;
+A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;;
+A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;;
+A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;;
+A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;;
+A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;;
+A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;;
+A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;;
+A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;;
+A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;;
+A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;;
+A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;;
+A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;;
+A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;;
+A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;;
+A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;;
+A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;;
+A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;;
+A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;;
+A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;;
+A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;;
+A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;;
+A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;;
+A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;;
+A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;;
+A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;;
+A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;;
+A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;;
+A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;;
+A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;;
+A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;;
+A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;;
+A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;;
+A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;;
+A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;;
+A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;;
+A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;;
+A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;;
+A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;;
+A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;;
+A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;;
+A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;;
+A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;;
+A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;;
+A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;;
+A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;;
+A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;;
+A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;;
+A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;;
+A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;;
+A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;;
+A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;;
+A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;;
+A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;;
+A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;;
+A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;;
+A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;;
+A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;;
+A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;;
+A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;;
+A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;;
+A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;;
+A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;;
+A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;;
+A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;;
+A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;;
+A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;;
+A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;;
+A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;;
+A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;;
+A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;;
+A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;;
+A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;;
+A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;;
+A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;;
+A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;;
+A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;;
+A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;;
+A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;;
+A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;;
+A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;;
+A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;;
+A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;;
+A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;;
+A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;;
+A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;;
+A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;;
+A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;;
+A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;;
+A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;;
+A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;;
+A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;;
+A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;;
+A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;;
+A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;;
+A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;;
+A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;;
+A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;;
+A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;;
+A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;;
+A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;;
+A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;;
+A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;;
+A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;;
+A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;;
+A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;;
+A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;;
+A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;;
+A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;;
+A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;;
+A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;;
+A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;;
+A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;;
+A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;;
+A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;;
+A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;;
+A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;;
+A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;;
+A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;;
+A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;;
+A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;;
+A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;;
+A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;;
+A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;;
+A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;;
+A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;;
+A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;;
+A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;;
+A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;;
+A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;;
+A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;;
+A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;;
+A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;;
+A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;;
+A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;;
+A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;;
+A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;;
+A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;;
+A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
+A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;;
+A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;;
+A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;;
+A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;;
+A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;;
+A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
+A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;;
+A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;;
+A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;;
+A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
+A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;;
+A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;;
+A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
+A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;;
+A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;;
+A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;;
+A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
+A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;;
+A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;;
+A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;;
+A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;;
+A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;;
+A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;;
+A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;;
+A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;;
+A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;;
+A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;;
+A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;;
+A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;;
+A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;;
+A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;;
+A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;;
+A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;;
+A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;;
+A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;;
+A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;;
+A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;;
+A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;;
+A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;;
+A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;;
+A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;;
+A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;;
+A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;;
+A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;;
+A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;;
+A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;;
+A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;;
+A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;;
+A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;;
+A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;;
+A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;;
+A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;;
+A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;;
+A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;;
+A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;;
+A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;;
+A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;;
+A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;;
+A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;;
+A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;;
+A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;;
+A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;;
+A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;;
+A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;;
+A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;;
+A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;;
+A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;;
+A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;;
+A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;;
+A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;;
+A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;;
+A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;;
+A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;;
+A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;;
+A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;;
+A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;;
+A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;;
+A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;;
+A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;;
+A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;;
+A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;;
+A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;;
+A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;;
+A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;;
+A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;;
+A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;;
+A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;;
+A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;;
+A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;;
+A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;;
+A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;;
+A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;;
+A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;;
+A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;;
+A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;;
+A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;;
+A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;;
+A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;;
+A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;;
+A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;;
+A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;;
+A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;;
+A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;;
+A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;;
+A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;;
+A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;;
+A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;;
+A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;;
+A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;;
+A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;;
+A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;;
+A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;;
+A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;;
+A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;;
+A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;;
+A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;;
+A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;;
+A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;;
+A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;;
+A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;;
+A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;;
+A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;;
+A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;;
+A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;;
+A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;;
+A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;;
+A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;;
+A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;;
+A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;;
+A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;;
+A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;;
+A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;;
+A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;;
+A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;;
+A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;;
+A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;;
+A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;;
+A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;;
+A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;;
+A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;;
+A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;;
+A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;;
+A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;;
+A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;;
+A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;;
+A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;;
+A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;;
+A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;;
+A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;;
+A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;;
+A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;;
+A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;;
+A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;;
+A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;;
+A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;;
+A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;;
+A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;;
+A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;;
+A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;;
+A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;;
+A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;;
+A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;;
+A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;;
+A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;;
+A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;;
+A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;;
+A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;;
+A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;;
+A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;;
+A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;;
+A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;;
+A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;;
+A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;;
+A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;;
+A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;;
+A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;;
+A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;;
+A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;;
+A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;;
+A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;;
+A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;;
+A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;;
+A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;;
+A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;;
+A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;;
+A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;;
+A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;;
+A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;;
+A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;;
+A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;;
+A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;;
+A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;;
+A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;;
+A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;;
+A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;;
+A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;;
+A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;;
+A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;;
+A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;;
+A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;;
+A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;;
+A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;;
+A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;;
+A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;;
+A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;;
+A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;;
+A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;;
+A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;;
+A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;;
+A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;;
+A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;;
+A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;;
+A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;;
+A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;;
+A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;;
+A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;;
+A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;;
+A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;;
+A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;;
+A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;;
+A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;;
+A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;;
+A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;;
+A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;;
+A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;;
+A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;;
+A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;;
+A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;;
+A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;;
+A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;;
+A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;;
+A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;;
+A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;;
+A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;;
+A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;;
+A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;;
+A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;;
+A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;;
+A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;;
+A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;;
+A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;;
+A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;;
+A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;;
+A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;;
+A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;;
+A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;;
+A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;;
+A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;;
+A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;;
+A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;;
+A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;;
+A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;;
+A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;;
+A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;;
+A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;;
+A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;;
+A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;;
+A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;;
+A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;;
+A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;;
+A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;;
+A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;;
+A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;;
+A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;;
+A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;;
+A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;;
+A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;;
+A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;;
+A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;;
+A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;;
+A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;;
+A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;;
+A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;;
+A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;;
+A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;;
+A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;;
+A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;;
+A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;;
+A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;;
+A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;;
+A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;;
+A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;;
+A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;;
+A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;;
+A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;;
+A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;;
+A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;;
+A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;;
+A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;;
+A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;;
+A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;;
+A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;;
+A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;;
+A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;;
+A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;;
+A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;;
+A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;;
+A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;;
+A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;;
+A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;;
+A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;;
+A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;;
+A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;;
+A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;;
+A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;;
+A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;;
+A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;;
+A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;;
+A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;;
+A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;;
+A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;;
+A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;;
+A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;;
+A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;;
+A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;;
+A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;;
+A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;;
+A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;;
+A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;;
+A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;;
+A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;;
+A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;;
+A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;;
+A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;;
+A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;;
+A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;;
+A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;;
+A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;;
+A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;;
+A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;;
+A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;;
+A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;;
+A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;;
+A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;;
+A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;;
+A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;;
+A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;;
+A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;;
+A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;;
+A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;;
+A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;;
+A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
+A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;;
+A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;;
+A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;;
+A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;;
+A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;;
+A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;;
+A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;;
+A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
+A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;;
+A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;;
+A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
+A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;;
+A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;;
+A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
+A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;;
+A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;;
+A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
+A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;;
+A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;;
+A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;;
+A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;;
+A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;;
+A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;;
+A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;;
+A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;;
+A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;;
+A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;;
+A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;;
+A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;;
+A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;;
+A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;;
+A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;;
+A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;;
+A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;;
+A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;;
+A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;;
+A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;;
+A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;;
+A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;;
+A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;;
+A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;;
+A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;;
+A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;;
+A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;;
+A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;;
+A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;;
+A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;;
+A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;;
+A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;;
+A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;;
+A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;;
+A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;;
+A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;;
+A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;;
+A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;;
+A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;;
+A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;;
+A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;;
+A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;;
+A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;;
+A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;;
+A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;;
+A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;;
+A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;;
+A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;;
+A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;;
+A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;;
+A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;;
+A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;;
+A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;;
+A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;;
+A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;;
+A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;;
+A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;;
+A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;;
+A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;;
+A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;;
+A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;;
+A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;;
+A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;;
+A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;;
+A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;;
+A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;;
+A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;;
+A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
+A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;;
+A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;;
+A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;;
+A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;;
+A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;;
+A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;;
+A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
+A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;;
+A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;;
+A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;;
+A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
+A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;;
+A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;;
+A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
+A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;;
+A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;;
+A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;;
+A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
+A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;;
+A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;;
+A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;;
+A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;;
+A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;;
+A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;;
+A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;;
+A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;;
+A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;;
+A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;;
+A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;;
+A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;;
+A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;;
+A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;;
+A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;;
+A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;;
+A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;;
+A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;;
+A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;;
+A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;;
+A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;;
+A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;;
+A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;;
+A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;;
+A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;;
+A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;;
+A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;;
+A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;;
+A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;;
+A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;;
+A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;;
+A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;;
+A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;;
+A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;;
+A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;;
+A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;;
+A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;;
+A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;;
+A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;;
+A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;;
+A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;;
+A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;;
+A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;;
+A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;;
+A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;;
+A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;;
+A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;;
+A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;;
+A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;;
+A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;;
+A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;;
+A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;;
+A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;;
+A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;;
+A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;;
+A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;;
+A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;;
+A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;;
+A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;;
+A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;;
+A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;;
+A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;;
+A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;;
+A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;;
+A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;;
+A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;;
+A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;;
+A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;;
+A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;;
+A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;;
+A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;;
+A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;;
+A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;;
+A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;;
+A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;;
+A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;;
+A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;;
+A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;;
+A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;;
+A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;;
+A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;;
+A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;;
+A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;;
+A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;;
+A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;;
+A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;;
+A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;;
+A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;;
+A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;;
+A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;;
+A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;;
+A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;;
+A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;;
+A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;;
+A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;;
+A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;;
+A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;;
+A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;;
+A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;;
+A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;;
+A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;;
+A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;;
+A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;;
+A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;;
+A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;;
+A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;;
+A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;;
+A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;;
+A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;;
+A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;;
+A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;;
+A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;;
+A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;;
+A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;;
+A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;;
+A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;;
+A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;;
+A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;;
+A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;;
+A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;;
+A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;;
+A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;;
+A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;;
+A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;;
+A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;;
+A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;;
+A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;;
+A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;;
+A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;;
+A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;;
+A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;;
+A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;;
+A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;;
+A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;;
+A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;;
+A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;;
+A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;;
+A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;;
+A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;;
+A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;;
+A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;;
+A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;;
+A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;;
+A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;;
+A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;;
+A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;;
+A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;;
+A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;;
+A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;;
+A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;;
+A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;;
+A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;;
+A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;;
+A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;;
+A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;;
+A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;;
+A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;;
+A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;;
+A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;;
+A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;;
+A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;;
+A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;;
+A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;;
+A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;;
+A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;;
+A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;;
+A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;;
+A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;;
+A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;;
+A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;;
+A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;;
+A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;;
+A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;;
+A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;;
+A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;;
+A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;;
+A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;;
+A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;;
+A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;;
+A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;;
+A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;;
+A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;;
+A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;;
+A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;;
+A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;;
+A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;;
+A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;;
+A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;;
+A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;;
+A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;;
+A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;;
+A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;;
+A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;;
+A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;;
+A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;;
+A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;;
+A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;;
+A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;;
+A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;;
+A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;;
+A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;;
+A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;;
+A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;;
+A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;;
+A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;;
+A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;;
+A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;;
+A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;;
+A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;;
+A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;;
+A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;;
+A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;;
+A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;;
+A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;;
+A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;;
+A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;;
+A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;;
+A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;;
+A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;;
+A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;;
+A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;;
+A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;;
+A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
+A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;;
+A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;;
+A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;;
+A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;;
+A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;;
+A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;;
+A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;;
+A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;;
+A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;;
+A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
+A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;;
+A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;;
+A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
+A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;;
+A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;;
+A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;;
+A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;;
+A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;;
+A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;;
+A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;;
+A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;;
+A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;;
+A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;;
+A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;;
+A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;;
+A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;;
+A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;;
+A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;;
+A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;;
+A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;;
+A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;;
+A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;;
+A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;;
+A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;;
+A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;;
+A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;;
+A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;;
+A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;;
+A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;;
+A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;;
+A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;;
+A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;;
+A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;;
+A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;;
+A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;;
+A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;;
+A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;;
+A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;;
+A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;;
+A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;;
+A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;;
+A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;;
+A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;;
+A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;;
+A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;;
+A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;;
+A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;;
+A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;;
+A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;;
+A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;;
+A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;;
+A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;;
+A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;;
+A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;;
+A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;;
+A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;;
+A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;;
+A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;;
+A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;;
+A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;;
+A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;;
+A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;;
+A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;;
+A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;;
+A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;;
+A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;;
+A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;;
+A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;;
+A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;;
+A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;;
+A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;;
+A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;;
+A491;YI RADICAL LI;So;0;ON;;;;;N;;;;;
+A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;;
+A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;;
+A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;;
+A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;;
+A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;;
+A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;;
+A498;YI RADICAL MI;So;0;ON;;;;;N;;;;;
+A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;;
+A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;;
+A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;;
+A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;;
+A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;;
+A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;;
+A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;;
+A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;;
+A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;;
+A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;;
+A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;;
+A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;;
+A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;;
+A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;;
+A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;;
+A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;;
+A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;;
+A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;;
+A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;;
+A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;;
+A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;;
+A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;;
+A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;;
+A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;;
+A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;;
+A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;;
+A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;;
+A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;;
+A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;;
+A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;;
+A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;;
+A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;;
+A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;;
+A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;;
+A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;;
+A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;;
+A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;;
+A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;;
+A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;;
+A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;;
+A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;;
+A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;
+A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;
+A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;
+A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;;
+A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;;
+A500;VAI SYLLABLE EE;Lo;0;L;;;;;N;;;;;
+A501;VAI SYLLABLE EEN;Lo;0;L;;;;;N;;;;;
+A502;VAI SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
+A503;VAI SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
+A504;VAI SYLLABLE WEEN;Lo;0;L;;;;;N;;;;;
+A505;VAI SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
+A506;VAI SYLLABLE BHEE;Lo;0;L;;;;;N;;;;;
+A507;VAI SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
+A508;VAI SYLLABLE MBEE;Lo;0;L;;;;;N;;;;;
+A509;VAI SYLLABLE KPEE;Lo;0;L;;;;;N;;;;;
+A50A;VAI SYLLABLE MGBEE;Lo;0;L;;;;;N;;;;;
+A50B;VAI SYLLABLE GBEE;Lo;0;L;;;;;N;;;;;
+A50C;VAI SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
+A50D;VAI SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
+A50E;VAI SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
+A50F;VAI SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
+A510;VAI SYLLABLE DHEE;Lo;0;L;;;;;N;;;;;
+A511;VAI SYLLABLE DHHEE;Lo;0;L;;;;;N;;;;;
+A512;VAI SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
+A513;VAI SYLLABLE REE;Lo;0;L;;;;;N;;;;;
+A514;VAI SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
+A515;VAI SYLLABLE NDEE;Lo;0;L;;;;;N;;;;;
+A516;VAI SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
+A517;VAI SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
+A518;VAI SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
+A519;VAI SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
+A51A;VAI SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
+A51B;VAI SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
+A51C;VAI SYLLABLE NJEE;Lo;0;L;;;;;N;;;;;
+A51D;VAI SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
+A51E;VAI SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
+A51F;VAI SYLLABLE NGGEE;Lo;0;L;;;;;N;;;;;
+A520;VAI SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
+A521;VAI SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
+A522;VAI SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
+A523;VAI SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
+A524;VAI SYLLABLE I;Lo;0;L;;;;;N;;;;;
+A525;VAI SYLLABLE IN;Lo;0;L;;;;;N;;;;;
+A526;VAI SYLLABLE HI;Lo;0;L;;;;;N;;;;;
+A527;VAI SYLLABLE HIN;Lo;0;L;;;;;N;;;;;
+A528;VAI SYLLABLE WI;Lo;0;L;;;;;N;;;;;
+A529;VAI SYLLABLE WIN;Lo;0;L;;;;;N;;;;;
+A52A;VAI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+A52B;VAI SYLLABLE BHI;Lo;0;L;;;;;N;;;;;
+A52C;VAI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+A52D;VAI SYLLABLE MBI;Lo;0;L;;;;;N;;;;;
+A52E;VAI SYLLABLE KPI;Lo;0;L;;;;;N;;;;;
+A52F;VAI SYLLABLE MGBI;Lo;0;L;;;;;N;;;;;
+A530;VAI SYLLABLE GBI;Lo;0;L;;;;;N;;;;;
+A531;VAI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+A532;VAI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+A533;VAI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+A534;VAI SYLLABLE THI;Lo;0;L;;;;;N;;;;;
+A535;VAI SYLLABLE DHI;Lo;0;L;;;;;N;;;;;
+A536;VAI SYLLABLE DHHI;Lo;0;L;;;;;N;;;;;
+A537;VAI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+A538;VAI SYLLABLE RI;Lo;0;L;;;;;N;;;;;
+A539;VAI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+A53A;VAI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
+A53B;VAI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+A53C;VAI SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
+A53D;VAI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+A53E;VAI SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
+A53F;VAI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+A540;VAI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+A541;VAI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
+A542;VAI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+A543;VAI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+A544;VAI SYLLABLE NGGI;Lo;0;L;;;;;N;;;;;
+A545;VAI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+A546;VAI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+A547;VAI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+A548;VAI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+A549;VAI SYLLABLE A;Lo;0;L;;;;;N;;;;;
+A54A;VAI SYLLABLE AN;Lo;0;L;;;;;N;;;;;
+A54B;VAI SYLLABLE NGAN;Lo;0;L;;;;;N;;;;;
+A54C;VAI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+A54D;VAI SYLLABLE HAN;Lo;0;L;;;;;N;;;;;
+A54E;VAI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+A54F;VAI SYLLABLE WAN;Lo;0;L;;;;;N;;;;;
+A550;VAI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+A551;VAI SYLLABLE BHA;Lo;0;L;;;;;N;;;;;
+A552;VAI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+A553;VAI SYLLABLE MBA;Lo;0;L;;;;;N;;;;;
+A554;VAI SYLLABLE KPA;Lo;0;L;;;;;N;;;;;
+A555;VAI SYLLABLE KPAN;Lo;0;L;;;;;N;;;;;
+A556;VAI SYLLABLE MGBA;Lo;0;L;;;;;N;;;;;
+A557;VAI SYLLABLE GBA;Lo;0;L;;;;;N;;;;;
+A558;VAI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+A559;VAI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+A55A;VAI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+A55B;VAI SYLLABLE THA;Lo;0;L;;;;;N;;;;;
+A55C;VAI SYLLABLE DHA;Lo;0;L;;;;;N;;;;;
+A55D;VAI SYLLABLE DHHA;Lo;0;L;;;;;N;;;;;
+A55E;VAI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+A55F;VAI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+A560;VAI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+A561;VAI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
+A562;VAI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+A563;VAI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+A564;VAI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+A565;VAI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+A566;VAI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+A567;VAI SYLLABLE JA;Lo;0;L;;;;;N;;;;;
+A568;VAI SYLLABLE NJA;Lo;0;L;;;;;N;;;;;
+A569;VAI SYLLABLE YA;Lo;0;L;;;;;N;;;;;
+A56A;VAI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+A56B;VAI SYLLABLE KAN;Lo;0;L;;;;;N;;;;;
+A56C;VAI SYLLABLE NGGA;Lo;0;L;;;;;N;;;;;
+A56D;VAI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+A56E;VAI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+A56F;VAI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+A570;VAI SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
+A571;VAI SYLLABLE OO;Lo;0;L;;;;;N;;;;;
+A572;VAI SYLLABLE OON;Lo;0;L;;;;;N;;;;;
+A573;VAI SYLLABLE HOO;Lo;0;L;;;;;N;;;;;
+A574;VAI SYLLABLE WOO;Lo;0;L;;;;;N;;;;;
+A575;VAI SYLLABLE WOON;Lo;0;L;;;;;N;;;;;
+A576;VAI SYLLABLE POO;Lo;0;L;;;;;N;;;;;
+A577;VAI SYLLABLE BHOO;Lo;0;L;;;;;N;;;;;
+A578;VAI SYLLABLE BOO;Lo;0;L;;;;;N;;;;;
+A579;VAI SYLLABLE MBOO;Lo;0;L;;;;;N;;;;;
+A57A;VAI SYLLABLE KPOO;Lo;0;L;;;;;N;;;;;
+A57B;VAI SYLLABLE MGBOO;Lo;0;L;;;;;N;;;;;
+A57C;VAI SYLLABLE GBOO;Lo;0;L;;;;;N;;;;;
+A57D;VAI SYLLABLE FOO;Lo;0;L;;;;;N;;;;;
+A57E;VAI SYLLABLE VOO;Lo;0;L;;;;;N;;;;;
+A57F;VAI SYLLABLE TOO;Lo;0;L;;;;;N;;;;;
+A580;VAI SYLLABLE THOO;Lo;0;L;;;;;N;;;;;
+A581;VAI SYLLABLE DHOO;Lo;0;L;;;;;N;;;;;
+A582;VAI SYLLABLE DHHOO;Lo;0;L;;;;;N;;;;;
+A583;VAI SYLLABLE LOO;Lo;0;L;;;;;N;;;;;
+A584;VAI SYLLABLE ROO;Lo;0;L;;;;;N;;;;;
+A585;VAI SYLLABLE DOO;Lo;0;L;;;;;N;;;;;
+A586;VAI SYLLABLE NDOO;Lo;0;L;;;;;N;;;;;
+A587;VAI SYLLABLE SOO;Lo;0;L;;;;;N;;;;;
+A588;VAI SYLLABLE SHOO;Lo;0;L;;;;;N;;;;;
+A589;VAI SYLLABLE ZOO;Lo;0;L;;;;;N;;;;;
+A58A;VAI SYLLABLE ZHOO;Lo;0;L;;;;;N;;;;;
+A58B;VAI SYLLABLE COO;Lo;0;L;;;;;N;;;;;
+A58C;VAI SYLLABLE JOO;Lo;0;L;;;;;N;;;;;
+A58D;VAI SYLLABLE NJOO;Lo;0;L;;;;;N;;;;;
+A58E;VAI SYLLABLE YOO;Lo;0;L;;;;;N;;;;;
+A58F;VAI SYLLABLE KOO;Lo;0;L;;;;;N;;;;;
+A590;VAI SYLLABLE NGGOO;Lo;0;L;;;;;N;;;;;
+A591;VAI SYLLABLE GOO;Lo;0;L;;;;;N;;;;;
+A592;VAI SYLLABLE MOO;Lo;0;L;;;;;N;;;;;
+A593;VAI SYLLABLE NOO;Lo;0;L;;;;;N;;;;;
+A594;VAI SYLLABLE NYOO;Lo;0;L;;;;;N;;;;;
+A595;VAI SYLLABLE U;Lo;0;L;;;;;N;;;;;
+A596;VAI SYLLABLE UN;Lo;0;L;;;;;N;;;;;
+A597;VAI SYLLABLE HU;Lo;0;L;;;;;N;;;;;
+A598;VAI SYLLABLE HUN;Lo;0;L;;;;;N;;;;;
+A599;VAI SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+A59A;VAI SYLLABLE WUN;Lo;0;L;;;;;N;;;;;
+A59B;VAI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+A59C;VAI SYLLABLE BHU;Lo;0;L;;;;;N;;;;;
+A59D;VAI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+A59E;VAI SYLLABLE MBU;Lo;0;L;;;;;N;;;;;
+A59F;VAI SYLLABLE KPU;Lo;0;L;;;;;N;;;;;
+A5A0;VAI SYLLABLE MGBU;Lo;0;L;;;;;N;;;;;
+A5A1;VAI SYLLABLE GBU;Lo;0;L;;;;;N;;;;;
+A5A2;VAI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+A5A3;VAI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+A5A4;VAI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+A5A5;VAI SYLLABLE THU;Lo;0;L;;;;;N;;;;;
+A5A6;VAI SYLLABLE DHU;Lo;0;L;;;;;N;;;;;
+A5A7;VAI SYLLABLE DHHU;Lo;0;L;;;;;N;;;;;
+A5A8;VAI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+A5A9;VAI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+A5AA;VAI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+A5AB;VAI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
+A5AC;VAI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+A5AD;VAI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+A5AE;VAI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+A5AF;VAI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+A5B0;VAI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+A5B1;VAI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+A5B2;VAI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
+A5B3;VAI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+A5B4;VAI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+A5B5;VAI SYLLABLE NGGU;Lo;0;L;;;;;N;;;;;
+A5B6;VAI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+A5B7;VAI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+A5B8;VAI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+A5B9;VAI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+A5BA;VAI SYLLABLE O;Lo;0;L;;;;;N;;;;;
+A5BB;VAI SYLLABLE ON;Lo;0;L;;;;;N;;;;;
+A5BC;VAI SYLLABLE NGON;Lo;0;L;;;;;N;;;;;
+A5BD;VAI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+A5BE;VAI SYLLABLE HON;Lo;0;L;;;;;N;;;;;
+A5BF;VAI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+A5C0;VAI SYLLABLE WON;Lo;0;L;;;;;N;;;;;
+A5C1;VAI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+A5C2;VAI SYLLABLE BHO;Lo;0;L;;;;;N;;;;;
+A5C3;VAI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+A5C4;VAI SYLLABLE MBO;Lo;0;L;;;;;N;;;;;
+A5C5;VAI SYLLABLE KPO;Lo;0;L;;;;;N;;;;;
+A5C6;VAI SYLLABLE MGBO;Lo;0;L;;;;;N;;;;;
+A5C7;VAI SYLLABLE GBO;Lo;0;L;;;;;N;;;;;
+A5C8;VAI SYLLABLE GBON;Lo;0;L;;;;;N;;;;;
+A5C9;VAI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+A5CA;VAI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+A5CB;VAI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+A5CC;VAI SYLLABLE THO;Lo;0;L;;;;;N;;;;;
+A5CD;VAI SYLLABLE DHO;Lo;0;L;;;;;N;;;;;
+A5CE;VAI SYLLABLE DHHO;Lo;0;L;;;;;N;;;;;
+A5CF;VAI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+A5D0;VAI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+A5D1;VAI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+A5D2;VAI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
+A5D3;VAI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+A5D4;VAI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+A5D5;VAI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+A5D6;VAI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+A5D7;VAI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+A5D8;VAI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+A5D9;VAI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
+A5DA;VAI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+A5DB;VAI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+A5DC;VAI SYLLABLE NGGO;Lo;0;L;;;;;N;;;;;
+A5DD;VAI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+A5DE;VAI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+A5DF;VAI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+A5E0;VAI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+A5E1;VAI SYLLABLE E;Lo;0;L;;;;;N;;;;;
+A5E2;VAI SYLLABLE EN;Lo;0;L;;;;;N;;;;;
+A5E3;VAI SYLLABLE NGEN;Lo;0;L;;;;;N;;;;;
+A5E4;VAI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+A5E5;VAI SYLLABLE HEN;Lo;0;L;;;;;N;;;;;
+A5E6;VAI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+A5E7;VAI SYLLABLE WEN;Lo;0;L;;;;;N;;;;;
+A5E8;VAI SYLLABLE PE;Lo;0;L;;;;;N;;;;;
+A5E9;VAI SYLLABLE BHE;Lo;0;L;;;;;N;;;;;
+A5EA;VAI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+A5EB;VAI SYLLABLE MBE;Lo;0;L;;;;;N;;;;;
+A5EC;VAI SYLLABLE KPE;Lo;0;L;;;;;N;;;;;
+A5ED;VAI SYLLABLE KPEN;Lo;0;L;;;;;N;;;;;
+A5EE;VAI SYLLABLE MGBE;Lo;0;L;;;;;N;;;;;
+A5EF;VAI SYLLABLE GBE;Lo;0;L;;;;;N;;;;;
+A5F0;VAI SYLLABLE GBEN;Lo;0;L;;;;;N;;;;;
+A5F1;VAI SYLLABLE FE;Lo;0;L;;;;;N;;;;;
+A5F2;VAI SYLLABLE VE;Lo;0;L;;;;;N;;;;;
+A5F3;VAI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+A5F4;VAI SYLLABLE THE;Lo;0;L;;;;;N;;;;;
+A5F5;VAI SYLLABLE DHE;Lo;0;L;;;;;N;;;;;
+A5F6;VAI SYLLABLE DHHE;Lo;0;L;;;;;N;;;;;
+A5F7;VAI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+A5F8;VAI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+A5F9;VAI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+A5FA;VAI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
+A5FB;VAI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+A5FC;VAI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+A5FD;VAI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+A5FE;VAI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+A5FF;VAI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+A600;VAI SYLLABLE JE;Lo;0;L;;;;;N;;;;;
+A601;VAI SYLLABLE NJE;Lo;0;L;;;;;N;;;;;
+A602;VAI SYLLABLE YE;Lo;0;L;;;;;N;;;;;
+A603;VAI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+A604;VAI SYLLABLE NGGE;Lo;0;L;;;;;N;;;;;
+A605;VAI SYLLABLE NGGEN;Lo;0;L;;;;;N;;;;;
+A606;VAI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+A607;VAI SYLLABLE GEN;Lo;0;L;;;;;N;;;;;
+A608;VAI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+A609;VAI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+A60A;VAI SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
+A60B;VAI SYLLABLE NG;Lo;0;L;;;;;N;;;;;
+A60C;VAI SYLLABLE LENGTHENER;Lm;0;L;;;;;N;;;;;
+A60D;VAI COMMA;Po;0;ON;;;;;N;;;;;
+A60E;VAI FULL STOP;Po;0;ON;;;;;N;;;;;
+A60F;VAI QUESTION MARK;Po;0;ON;;;;;N;;;;;
+A610;VAI SYLLABLE NDOLE FA;Lo;0;L;;;;;N;;;;;
+A611;VAI SYLLABLE NDOLE KA;Lo;0;L;;;;;N;;;;;
+A612;VAI SYLLABLE NDOLE SOO;Lo;0;L;;;;;N;;;;;
+A613;VAI SYMBOL FEENG;Lo;0;L;;;;;N;;;;;
+A614;VAI SYMBOL KEENG;Lo;0;L;;;;;N;;;;;
+A615;VAI SYMBOL TING;Lo;0;L;;;;;N;;;;;
+A616;VAI SYMBOL NII;Lo;0;L;;;;;N;;;;;
+A617;VAI SYMBOL BANG;Lo;0;L;;;;;N;;;;;
+A618;VAI SYMBOL FAA;Lo;0;L;;;;;N;;;;;
+A619;VAI SYMBOL TAA;Lo;0;L;;;;;N;;;;;
+A61A;VAI SYMBOL DANG;Lo;0;L;;;;;N;;;;;
+A61B;VAI SYMBOL DOONG;Lo;0;L;;;;;N;;;;;
+A61C;VAI SYMBOL KUNG;Lo;0;L;;;;;N;;;;;
+A61D;VAI SYMBOL TONG;Lo;0;L;;;;;N;;;;;
+A61E;VAI SYMBOL DO-O;Lo;0;L;;;;;N;;;;;
+A61F;VAI SYMBOL JONG;Lo;0;L;;;;;N;;;;;
+A620;VAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+A621;VAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+A622;VAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+A623;VAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+A624;VAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+A625;VAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+A626;VAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+A627;VAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+A628;VAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+A629;VAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+A62A;VAI SYLLABLE NDOLE MA;Lo;0;L;;;;;N;;;;;
+A62B;VAI SYLLABLE NDOLE DO;Lo;0;L;;;;;N;;;;;
+A640;CYRILLIC CAPITAL LETTER ZEMLYA;Lu;0;L;;;;;N;;;;A641;
+A641;CYRILLIC SMALL LETTER ZEMLYA;Ll;0;L;;;;;N;;;A640;;A640
+A642;CYRILLIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;A643;
+A643;CYRILLIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;A642;;A642
+A644;CYRILLIC CAPITAL LETTER REVERSED DZE;Lu;0;L;;;;;N;;;;A645;
+A645;CYRILLIC SMALL LETTER REVERSED DZE;Ll;0;L;;;;;N;;;A644;;A644
+A646;CYRILLIC CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;A647;
+A647;CYRILLIC SMALL LETTER IOTA;Ll;0;L;;;;;N;;;A646;;A646
+A648;CYRILLIC CAPITAL LETTER DJERV;Lu;0;L;;;;;N;;;;A649;
+A649;CYRILLIC SMALL LETTER DJERV;Ll;0;L;;;;;N;;;A648;;A648
+A64A;CYRILLIC CAPITAL LETTER MONOGRAPH UK;Lu;0;L;;;;;N;;;;A64B;
+A64B;CYRILLIC SMALL LETTER MONOGRAPH UK;Ll;0;L;;;;;N;;;A64A;;A64A
+A64C;CYRILLIC CAPITAL LETTER BROAD OMEGA;Lu;0;L;;;;;N;;;;A64D;
+A64D;CYRILLIC SMALL LETTER BROAD OMEGA;Ll;0;L;;;;;N;;;A64C;;A64C
+A64E;CYRILLIC CAPITAL LETTER NEUTRAL YER;Lu;0;L;;;;;N;;;;A64F;
+A64F;CYRILLIC SMALL LETTER NEUTRAL YER;Ll;0;L;;;;;N;;;A64E;;A64E
+A650;CYRILLIC CAPITAL LETTER YERU WITH BACK YER;Lu;0;L;;;;;N;;;;A651;
+A651;CYRILLIC SMALL LETTER YERU WITH BACK YER;Ll;0;L;;;;;N;;;A650;;A650
+A652;CYRILLIC CAPITAL LETTER IOTIFIED YAT;Lu;0;L;;;;;N;;;;A653;
+A653;CYRILLIC SMALL LETTER IOTIFIED YAT;Ll;0;L;;;;;N;;;A652;;A652
+A654;CYRILLIC CAPITAL LETTER REVERSED YU;Lu;0;L;;;;;N;;;;A655;
+A655;CYRILLIC SMALL LETTER REVERSED YU;Ll;0;L;;;;;N;;;A654;;A654
+A656;CYRILLIC CAPITAL LETTER IOTIFIED A;Lu;0;L;;;;;N;;;;A657;
+A657;CYRILLIC SMALL LETTER IOTIFIED A;Ll;0;L;;;;;N;;;A656;;A656
+A658;CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A659;
+A659;CYRILLIC SMALL LETTER CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A658;;A658
+A65A;CYRILLIC CAPITAL LETTER BLENDED YUS;Lu;0;L;;;;;N;;;;A65B;
+A65B;CYRILLIC SMALL LETTER BLENDED YUS;Ll;0;L;;;;;N;;;A65A;;A65A
+A65C;CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A65D;
+A65D;CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A65C;;A65C
+A65E;CYRILLIC CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;A65F;
+A65F;CYRILLIC SMALL LETTER YN;Ll;0;L;;;;;N;;;A65E;;A65E
+A662;CYRILLIC CAPITAL LETTER SOFT DE;Lu;0;L;;;;;N;;;;A663;
+A663;CYRILLIC SMALL LETTER SOFT DE;Ll;0;L;;;;;N;;;A662;;A662
+A664;CYRILLIC CAPITAL LETTER SOFT EL;Lu;0;L;;;;;N;;;;A665;
+A665;CYRILLIC SMALL LETTER SOFT EL;Ll;0;L;;;;;N;;;A664;;A664
+A666;CYRILLIC CAPITAL LETTER SOFT EM;Lu;0;L;;;;;N;;;;A667;
+A667;CYRILLIC SMALL LETTER SOFT EM;Ll;0;L;;;;;N;;;A666;;A666
+A668;CYRILLIC CAPITAL LETTER MONOCULAR O;Lu;0;L;;;;;N;;;;A669;
+A669;CYRILLIC SMALL LETTER MONOCULAR O;Ll;0;L;;;;;N;;;A668;;A668
+A66A;CYRILLIC CAPITAL LETTER BINOCULAR O;Lu;0;L;;;;;N;;;;A66B;
+A66B;CYRILLIC SMALL LETTER BINOCULAR O;Ll;0;L;;;;;N;;;A66A;;A66A
+A66C;CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O;Lu;0;L;;;;;N;;;;A66D;
+A66D;CYRILLIC SMALL LETTER DOUBLE MONOCULAR O;Ll;0;L;;;;;N;;;A66C;;A66C
+A66E;CYRILLIC LETTER MULTIOCULAR O;Lo;0;L;;;;;N;;;;;
+A66F;COMBINING CYRILLIC VZMET;Mn;230;NSM;;;;;N;;;;;
+A670;COMBINING CYRILLIC TEN MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+A671;COMBINING CYRILLIC HUNDRED MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+A672;COMBINING CYRILLIC THOUSAND MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+A673;SLAVONIC ASTERISK;Po;0;ON;;;;;N;;;;;
+A67C;COMBINING CYRILLIC KAVYKA;Mn;230;NSM;;;;;N;;;;;
+A67D;COMBINING CYRILLIC PAYEROK;Mn;230;NSM;;;;;N;;;;;
+A67E;CYRILLIC KAVYKA;Po;0;ON;;;;;N;;;;;
+A67F;CYRILLIC PAYEROK;Lm;0;ON;;;;;N;;;;;
+A680;CYRILLIC CAPITAL LETTER DWE;Lu;0;L;;;;;N;;;;A681;
+A681;CYRILLIC SMALL LETTER DWE;Ll;0;L;;;;;N;;;A680;;A680
+A682;CYRILLIC CAPITAL LETTER DZWE;Lu;0;L;;;;;N;;;;A683;
+A683;CYRILLIC SMALL LETTER DZWE;Ll;0;L;;;;;N;;;A682;;A682
+A684;CYRILLIC CAPITAL LETTER ZHWE;Lu;0;L;;;;;N;;;;A685;
+A685;CYRILLIC SMALL LETTER ZHWE;Ll;0;L;;;;;N;;;A684;;A684
+A686;CYRILLIC CAPITAL LETTER CCHE;Lu;0;L;;;;;N;;;;A687;
+A687;CYRILLIC SMALL LETTER CCHE;Ll;0;L;;;;;N;;;A686;;A686
+A688;CYRILLIC CAPITAL LETTER DZZE;Lu;0;L;;;;;N;;;;A689;
+A689;CYRILLIC SMALL LETTER DZZE;Ll;0;L;;;;;N;;;A688;;A688
+A68A;CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;A68B;
+A68B;CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;A68A;;A68A
+A68C;CYRILLIC CAPITAL LETTER TWE;Lu;0;L;;;;;N;;;;A68D;
+A68D;CYRILLIC SMALL LETTER TWE;Ll;0;L;;;;;N;;;A68C;;A68C
+A68E;CYRILLIC CAPITAL LETTER TSWE;Lu;0;L;;;;;N;;;;A68F;
+A68F;CYRILLIC SMALL LETTER TSWE;Ll;0;L;;;;;N;;;A68E;;A68E
+A690;CYRILLIC CAPITAL LETTER TSSE;Lu;0;L;;;;;N;;;;A691;
+A691;CYRILLIC SMALL LETTER TSSE;Ll;0;L;;;;;N;;;A690;;A690
+A692;CYRILLIC CAPITAL LETTER TCHE;Lu;0;L;;;;;N;;;;A693;
+A693;CYRILLIC SMALL LETTER TCHE;Ll;0;L;;;;;N;;;A692;;A692
+A694;CYRILLIC CAPITAL LETTER HWE;Lu;0;L;;;;;N;;;;A695;
+A695;CYRILLIC SMALL LETTER HWE;Ll;0;L;;;;;N;;;A694;;A694
+A696;CYRILLIC CAPITAL LETTER SHWE;Lu;0;L;;;;;N;;;;A697;
+A697;CYRILLIC SMALL LETTER SHWE;Ll;0;L;;;;;N;;;A696;;A696
+A700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;;
+A701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;;
+A702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;;
+A703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;;
+A704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;;
+A705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;;
+A706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;;
+A707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;;
+A708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A717;MODIFIER LETTER DOT VERTICAL BAR;Lm;0;ON;;;;;N;;;;;
+A718;MODIFIER LETTER DOT SLASH;Lm;0;ON;;;;;N;;;;;
+A719;MODIFIER LETTER DOT HORIZONTAL BAR;Lm;0;ON;;;;;N;;;;;
+A71A;MODIFIER LETTER LOWER RIGHT CORNER ANGLE;Lm;0;ON;;;;;N;;;;;
+A71B;MODIFIER LETTER RAISED UP ARROW;Lm;0;ON;;;;;N;;;;;
+A71C;MODIFIER LETTER RAISED DOWN ARROW;Lm;0;ON;;;;;N;;;;;
+A71D;MODIFIER LETTER RAISED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
+A71E;MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
+A71F;MODIFIER LETTER LOW INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
+A720;MODIFIER LETTER STRESS AND HIGH TONE;Sk;0;ON;;;;;N;;;;;
+A721;MODIFIER LETTER STRESS AND LOW TONE;Sk;0;ON;;;;;N;;;;;
+A722;LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;Lu;0;L;;;;;N;;;;A723;
+A723;LATIN SMALL LETTER EGYPTOLOGICAL ALEF;Ll;0;L;;;;;N;;;A722;;A722
+A724;LATIN CAPITAL LETTER EGYPTOLOGICAL AIN;Lu;0;L;;;;;N;;;;A725;
+A725;LATIN SMALL LETTER EGYPTOLOGICAL AIN;Ll;0;L;;;;;N;;;A724;;A724
+A726;LATIN CAPITAL LETTER HENG;Lu;0;L;;;;;N;;;;A727;
+A727;LATIN SMALL LETTER HENG;Ll;0;L;;;;;N;;;A726;;A726
+A728;LATIN CAPITAL LETTER TZ;Lu;0;L;;;;;N;;;;A729;
+A729;LATIN SMALL LETTER TZ;Ll;0;L;;;;;N;;;A728;;A728
+A72A;LATIN CAPITAL LETTER TRESILLO;Lu;0;L;;;;;N;;;;A72B;
+A72B;LATIN SMALL LETTER TRESILLO;Ll;0;L;;;;;N;;;A72A;;A72A
+A72C;LATIN CAPITAL LETTER CUATRILLO;Lu;0;L;;;;;N;;;;A72D;
+A72D;LATIN SMALL LETTER CUATRILLO;Ll;0;L;;;;;N;;;A72C;;A72C
+A72E;LATIN CAPITAL LETTER CUATRILLO WITH COMMA;Lu;0;L;;;;;N;;;;A72F;
+A72F;LATIN SMALL LETTER CUATRILLO WITH COMMA;Ll;0;L;;;;;N;;;A72E;;A72E
+A730;LATIN LETTER SMALL CAPITAL F;Ll;0;L;;;;;N;;;;;
+A731;LATIN LETTER SMALL CAPITAL S;Ll;0;L;;;;;N;;;;;
+A732;LATIN CAPITAL LETTER AA;Lu;0;L;;;;;N;;;;A733;
+A733;LATIN SMALL LETTER AA;Ll;0;L;;;;;N;;;A732;;A732
+A734;LATIN CAPITAL LETTER AO;Lu;0;L;;;;;N;;;;A735;
+A735;LATIN SMALL LETTER AO;Ll;0;L;;;;;N;;;A734;;A734
+A736;LATIN CAPITAL LETTER AU;Lu;0;L;;;;;N;;;;A737;
+A737;LATIN SMALL LETTER AU;Ll;0;L;;;;;N;;;A736;;A736
+A738;LATIN CAPITAL LETTER AV;Lu;0;L;;;;;N;;;;A739;
+A739;LATIN SMALL LETTER AV;Ll;0;L;;;;;N;;;A738;;A738
+A73A;LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR;Lu;0;L;;;;;N;;;;A73B;
+A73B;LATIN SMALL LETTER AV WITH HORIZONTAL BAR;Ll;0;L;;;;;N;;;A73A;;A73A
+A73C;LATIN CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;A73D;
+A73D;LATIN SMALL LETTER AY;Ll;0;L;;;;;N;;;A73C;;A73C
+A73E;LATIN CAPITAL LETTER REVERSED C WITH DOT;Lu;0;L;;;;;N;;;;A73F;
+A73F;LATIN SMALL LETTER REVERSED C WITH DOT;Ll;0;L;;;;;N;;;A73E;;A73E
+A740;LATIN CAPITAL LETTER K WITH STROKE;Lu;0;L;;;;;N;;;;A741;
+A741;LATIN SMALL LETTER K WITH STROKE;Ll;0;L;;;;;N;;;A740;;A740
+A742;LATIN CAPITAL LETTER K WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A743;
+A743;LATIN SMALL LETTER K WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A742;;A742
+A744;LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A745;
+A745;LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE;Ll;0;L;;;;;N;;;A744;;A744
+A746;LATIN CAPITAL LETTER BROKEN L;Lu;0;L;;;;;N;;;;A747;
+A747;LATIN SMALL LETTER BROKEN L;Ll;0;L;;;;;N;;;A746;;A746
+A748;LATIN CAPITAL LETTER L WITH HIGH STROKE;Lu;0;L;;;;;N;;;;A749;
+A749;LATIN SMALL LETTER L WITH HIGH STROKE;Ll;0;L;;;;;N;;;A748;;A748
+A74A;LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY;Lu;0;L;;;;;N;;;;A74B;
+A74B;LATIN SMALL LETTER O WITH LONG STROKE OVERLAY;Ll;0;L;;;;;N;;;A74A;;A74A
+A74C;LATIN CAPITAL LETTER O WITH LOOP;Lu;0;L;;;;;N;;;;A74D;
+A74D;LATIN SMALL LETTER O WITH LOOP;Ll;0;L;;;;;N;;;A74C;;A74C
+A74E;LATIN CAPITAL LETTER OO;Lu;0;L;;;;;N;;;;A74F;
+A74F;LATIN SMALL LETTER OO;Ll;0;L;;;;;N;;;A74E;;A74E
+A750;LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A751;
+A751;LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A750;;A750
+A752;LATIN CAPITAL LETTER P WITH FLOURISH;Lu;0;L;;;;;N;;;;A753;
+A753;LATIN SMALL LETTER P WITH FLOURISH;Ll;0;L;;;;;N;;;A752;;A752
+A754;LATIN CAPITAL LETTER P WITH SQUIRREL TAIL;Lu;0;L;;;;;N;;;;A755;
+A755;LATIN SMALL LETTER P WITH SQUIRREL TAIL;Ll;0;L;;;;;N;;;A754;;A754
+A756;LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A757;
+A757;LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A756;;A756
+A758;LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A759;
+A759;LATIN SMALL LETTER Q WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A758;;A758
+A75A;LATIN CAPITAL LETTER R ROTUNDA;Lu;0;L;;;;;N;;;;A75B;
+A75B;LATIN SMALL LETTER R ROTUNDA;Ll;0;L;;;;;N;;;A75A;;A75A
+A75C;LATIN CAPITAL LETTER RUM ROTUNDA;Lu;0;L;;;;;N;;;;A75D;
+A75D;LATIN SMALL LETTER RUM ROTUNDA;Ll;0;L;;;;;N;;;A75C;;A75C
+A75E;LATIN CAPITAL LETTER V WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A75F;
+A75F;LATIN SMALL LETTER V WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A75E;;A75E
+A760;LATIN CAPITAL LETTER VY;Lu;0;L;;;;;N;;;;A761;
+A761;LATIN SMALL LETTER VY;Ll;0;L;;;;;N;;;A760;;A760
+A762;LATIN CAPITAL LETTER VISIGOTHIC Z;Lu;0;L;;;;;N;;;;A763;
+A763;LATIN SMALL LETTER VISIGOTHIC Z;Ll;0;L;;;;;N;;;A762;;A762
+A764;LATIN CAPITAL LETTER THORN WITH STROKE;Lu;0;L;;;;;N;;;;A765;
+A765;LATIN SMALL LETTER THORN WITH STROKE;Ll;0;L;;;;;N;;;A764;;A764
+A766;LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A767;
+A767;LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A766;;A766
+A768;LATIN CAPITAL LETTER VEND;Lu;0;L;;;;;N;;;;A769;
+A769;LATIN SMALL LETTER VEND;Ll;0;L;;;;;N;;;A768;;A768
+A76A;LATIN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;A76B;
+A76B;LATIN SMALL LETTER ET;Ll;0;L;;;;;N;;;A76A;;A76A
+A76C;LATIN CAPITAL LETTER IS;Lu;0;L;;;;;N;;;;A76D;
+A76D;LATIN SMALL LETTER IS;Ll;0;L;;;;;N;;;A76C;;A76C
+A76E;LATIN CAPITAL LETTER CON;Lu;0;L;;;;;N;;;;A76F;
+A76F;LATIN SMALL LETTER CON;Ll;0;L;;;;;N;;;A76E;;A76E
+A770;MODIFIER LETTER US;Lm;0;L;<super> A76F;;;;N;;;;;
+A771;LATIN SMALL LETTER DUM;Ll;0;L;;;;;N;;;;;
+A772;LATIN SMALL LETTER LUM;Ll;0;L;;;;;N;;;;;
+A773;LATIN SMALL LETTER MUM;Ll;0;L;;;;;N;;;;;
+A774;LATIN SMALL LETTER NUM;Ll;0;L;;;;;N;;;;;
+A775;LATIN SMALL LETTER RUM;Ll;0;L;;;;;N;;;;;
+A776;LATIN LETTER SMALL CAPITAL RUM;Ll;0;L;;;;;N;;;;;
+A777;LATIN SMALL LETTER TUM;Ll;0;L;;;;;N;;;;;
+A778;LATIN SMALL LETTER UM;Ll;0;L;;;;;N;;;;;
+A779;LATIN CAPITAL LETTER INSULAR D;Lu;0;L;;;;;N;;;;A77A;
+A77A;LATIN SMALL LETTER INSULAR D;Ll;0;L;;;;;N;;;A779;;A779
+A77B;LATIN CAPITAL LETTER INSULAR F;Lu;0;L;;;;;N;;;;A77C;
+A77C;LATIN SMALL LETTER INSULAR F;Ll;0;L;;;;;N;;;A77B;;A77B
+A77D;LATIN CAPITAL LETTER INSULAR G;Lu;0;L;;;;;N;;;;1D79;
+A77E;LATIN CAPITAL LETTER TURNED INSULAR G;Lu;0;L;;;;;N;;;;A77F;
+A77F;LATIN SMALL LETTER TURNED INSULAR G;Ll;0;L;;;;;N;;;A77E;;A77E
+A780;LATIN CAPITAL LETTER TURNED L;Lu;0;L;;;;;N;;;;A781;
+A781;LATIN SMALL LETTER TURNED L;Ll;0;L;;;;;N;;;A780;;A780
+A782;LATIN CAPITAL LETTER INSULAR R;Lu;0;L;;;;;N;;;;A783;
+A783;LATIN SMALL LETTER INSULAR R;Ll;0;L;;;;;N;;;A782;;A782
+A784;LATIN CAPITAL LETTER INSULAR S;Lu;0;L;;;;;N;;;;A785;
+A785;LATIN SMALL LETTER INSULAR S;Ll;0;L;;;;;N;;;A784;;A784
+A786;LATIN CAPITAL LETTER INSULAR T;Lu;0;L;;;;;N;;;;A787;
+A787;LATIN SMALL LETTER INSULAR T;Ll;0;L;;;;;N;;;A786;;A786
+A788;MODIFIER LETTER LOW CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;;;;;
+A789;MODIFIER LETTER COLON;Sk;0;L;;;;;N;;;;;
+A78A;MODIFIER LETTER SHORT EQUALS SIGN;Sk;0;L;;;;;N;;;;;
+A78B;LATIN CAPITAL LETTER SALTILLO;Lu;0;L;;;;;N;;;;A78C;
+A78C;LATIN SMALL LETTER SALTILLO;Ll;0;L;;;;;N;;;A78B;;A78B
+A7FB;LATIN EPIGRAPHIC LETTER REVERSED F;Lo;0;L;;;;;N;;;;;
+A7FC;LATIN EPIGRAPHIC LETTER REVERSED P;Lo;0;L;;;;;N;;;;;
+A7FD;LATIN EPIGRAPHIC LETTER INVERTED M;Lo;0;L;;;;;N;;;;;
+A7FE;LATIN EPIGRAPHIC LETTER I LONGA;Lo;0;L;;;;;N;;;;;
+A7FF;LATIN EPIGRAPHIC LETTER ARCHAIC M;Lo;0;L;;;;;N;;;;;
+A800;SYLOTI NAGRI LETTER A;Lo;0;L;;;;;N;;;;;
+A801;SYLOTI NAGRI LETTER I;Lo;0;L;;;;;N;;;;;
+A802;SYLOTI NAGRI SIGN DVISVARA;Mn;0;NSM;;;;;N;;;;;
+A803;SYLOTI NAGRI LETTER U;Lo;0;L;;;;;N;;;;;
+A804;SYLOTI NAGRI LETTER E;Lo;0;L;;;;;N;;;;;
+A805;SYLOTI NAGRI LETTER O;Lo;0;L;;;;;N;;;;;
+A806;SYLOTI NAGRI SIGN HASANTA;Mn;9;NSM;;;;;N;;;;;
+A807;SYLOTI NAGRI LETTER KO;Lo;0;L;;;;;N;;;;;
+A808;SYLOTI NAGRI LETTER KHO;Lo;0;L;;;;;N;;;;;
+A809;SYLOTI NAGRI LETTER GO;Lo;0;L;;;;;N;;;;;
+A80A;SYLOTI NAGRI LETTER GHO;Lo;0;L;;;;;N;;;;;
+A80B;SYLOTI NAGRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+A80C;SYLOTI NAGRI LETTER CO;Lo;0;L;;;;;N;;;;;
+A80D;SYLOTI NAGRI LETTER CHO;Lo;0;L;;;;;N;;;;;
+A80E;SYLOTI NAGRI LETTER JO;Lo;0;L;;;;;N;;;;;
+A80F;SYLOTI NAGRI LETTER JHO;Lo;0;L;;;;;N;;;;;
+A810;SYLOTI NAGRI LETTER TTO;Lo;0;L;;;;;N;;;;;
+A811;SYLOTI NAGRI LETTER TTHO;Lo;0;L;;;;;N;;;;;
+A812;SYLOTI NAGRI LETTER DDO;Lo;0;L;;;;;N;;;;;
+A813;SYLOTI NAGRI LETTER DDHO;Lo;0;L;;;;;N;;;;;
+A814;SYLOTI NAGRI LETTER TO;Lo;0;L;;;;;N;;;;;
+A815;SYLOTI NAGRI LETTER THO;Lo;0;L;;;;;N;;;;;
+A816;SYLOTI NAGRI LETTER DO;Lo;0;L;;;;;N;;;;;
+A817;SYLOTI NAGRI LETTER DHO;Lo;0;L;;;;;N;;;;;
+A818;SYLOTI NAGRI LETTER NO;Lo;0;L;;;;;N;;;;;
+A819;SYLOTI NAGRI LETTER PO;Lo;0;L;;;;;N;;;;;
+A81A;SYLOTI NAGRI LETTER PHO;Lo;0;L;;;;;N;;;;;
+A81B;SYLOTI NAGRI LETTER BO;Lo;0;L;;;;;N;;;;;
+A81C;SYLOTI NAGRI LETTER BHO;Lo;0;L;;;;;N;;;;;
+A81D;SYLOTI NAGRI LETTER MO;Lo;0;L;;;;;N;;;;;
+A81E;SYLOTI NAGRI LETTER RO;Lo;0;L;;;;;N;;;;;
+A81F;SYLOTI NAGRI LETTER LO;Lo;0;L;;;;;N;;;;;
+A820;SYLOTI NAGRI LETTER RRO;Lo;0;L;;;;;N;;;;;
+A821;SYLOTI NAGRI LETTER SO;Lo;0;L;;;;;N;;;;;
+A822;SYLOTI NAGRI LETTER HO;Lo;0;L;;;;;N;;;;;
+A823;SYLOTI NAGRI VOWEL SIGN A;Mc;0;L;;;;;N;;;;;
+A824;SYLOTI NAGRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+A825;SYLOTI NAGRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+A826;SYLOTI NAGRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+A827;SYLOTI NAGRI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+A828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;;;;;N;;;;;
+A829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;;
+A82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;;
+A82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;;
+A840;PHAGS-PA LETTER KA;Lo;0;L;;;;;N;;;;;
+A841;PHAGS-PA LETTER KHA;Lo;0;L;;;;;N;;;;;
+A842;PHAGS-PA LETTER GA;Lo;0;L;;;;;N;;;;;
+A843;PHAGS-PA LETTER NGA;Lo;0;L;;;;;N;;;;;
+A844;PHAGS-PA LETTER CA;Lo;0;L;;;;;N;;;;;
+A845;PHAGS-PA LETTER CHA;Lo;0;L;;;;;N;;;;;
+A846;PHAGS-PA LETTER JA;Lo;0;L;;;;;N;;;;;
+A847;PHAGS-PA LETTER NYA;Lo;0;L;;;;;N;;;;;
+A848;PHAGS-PA LETTER TA;Lo;0;L;;;;;N;;;;;
+A849;PHAGS-PA LETTER THA;Lo;0;L;;;;;N;;;;;
+A84A;PHAGS-PA LETTER DA;Lo;0;L;;;;;N;;;;;
+A84B;PHAGS-PA LETTER NA;Lo;0;L;;;;;N;;;;;
+A84C;PHAGS-PA LETTER PA;Lo;0;L;;;;;N;;;;;
+A84D;PHAGS-PA LETTER PHA;Lo;0;L;;;;;N;;;;;
+A84E;PHAGS-PA LETTER BA;Lo;0;L;;;;;N;;;;;
+A84F;PHAGS-PA LETTER MA;Lo;0;L;;;;;N;;;;;
+A850;PHAGS-PA LETTER TSA;Lo;0;L;;;;;N;;;;;
+A851;PHAGS-PA LETTER TSHA;Lo;0;L;;;;;N;;;;;
+A852;PHAGS-PA LETTER DZA;Lo;0;L;;;;;N;;;;;
+A853;PHAGS-PA LETTER WA;Lo;0;L;;;;;N;;;;;
+A854;PHAGS-PA LETTER ZHA;Lo;0;L;;;;;N;;;;;
+A855;PHAGS-PA LETTER ZA;Lo;0;L;;;;;N;;;;;
+A856;PHAGS-PA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+A857;PHAGS-PA LETTER YA;Lo;0;L;;;;;N;;;;;
+A858;PHAGS-PA LETTER RA;Lo;0;L;;;;;N;;;;;
+A859;PHAGS-PA LETTER LA;Lo;0;L;;;;;N;;;;;
+A85A;PHAGS-PA LETTER SHA;Lo;0;L;;;;;N;;;;;
+A85B;PHAGS-PA LETTER SA;Lo;0;L;;;;;N;;;;;
+A85C;PHAGS-PA LETTER HA;Lo;0;L;;;;;N;;;;;
+A85D;PHAGS-PA LETTER A;Lo;0;L;;;;;N;;;;;
+A85E;PHAGS-PA LETTER I;Lo;0;L;;;;;N;;;;;
+A85F;PHAGS-PA LETTER U;Lo;0;L;;;;;N;;;;;
+A860;PHAGS-PA LETTER E;Lo;0;L;;;;;N;;;;;
+A861;PHAGS-PA LETTER O;Lo;0;L;;;;;N;;;;;
+A862;PHAGS-PA LETTER QA;Lo;0;L;;;;;N;;;;;
+A863;PHAGS-PA LETTER XA;Lo;0;L;;;;;N;;;;;
+A864;PHAGS-PA LETTER FA;Lo;0;L;;;;;N;;;;;
+A865;PHAGS-PA LETTER GGA;Lo;0;L;;;;;N;;;;;
+A866;PHAGS-PA LETTER EE;Lo;0;L;;;;;N;;;;;
+A867;PHAGS-PA SUBJOINED LETTER WA;Lo;0;L;;;;;N;;;;;
+A868;PHAGS-PA SUBJOINED LETTER YA;Lo;0;L;;;;;N;;;;;
+A869;PHAGS-PA LETTER TTA;Lo;0;L;;;;;N;;;;;
+A86A;PHAGS-PA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+A86B;PHAGS-PA LETTER DDA;Lo;0;L;;;;;N;;;;;
+A86C;PHAGS-PA LETTER NNA;Lo;0;L;;;;;N;;;;;
+A86D;PHAGS-PA LETTER ALTERNATE YA;Lo;0;L;;;;;N;;;;;
+A86E;PHAGS-PA LETTER VOICELESS SHA;Lo;0;L;;;;;N;;;;;
+A86F;PHAGS-PA LETTER VOICED HA;Lo;0;L;;;;;N;;;;;
+A870;PHAGS-PA LETTER ASPIRATED FA;Lo;0;L;;;;;N;;;;;
+A871;PHAGS-PA SUBJOINED LETTER RA;Lo;0;L;;;;;N;;;;;
+A872;PHAGS-PA SUPERFIXED LETTER RA;Lo;0;L;;;;;N;;;;;
+A873;PHAGS-PA LETTER CANDRABINDU;Lo;0;L;;;;;N;;;;;
+A874;PHAGS-PA SINGLE HEAD MARK;Po;0;ON;;;;;N;;;;;
+A875;PHAGS-PA DOUBLE HEAD MARK;Po;0;ON;;;;;N;;;;;
+A876;PHAGS-PA MARK SHAD;Po;0;ON;;;;;N;;;;;
+A877;PHAGS-PA MARK DOUBLE SHAD;Po;0;ON;;;;;N;;;;;
+A880;SAURASHTRA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+A881;SAURASHTRA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+A882;SAURASHTRA LETTER A;Lo;0;L;;;;;N;;;;;
+A883;SAURASHTRA LETTER AA;Lo;0;L;;;;;N;;;;;
+A884;SAURASHTRA LETTER I;Lo;0;L;;;;;N;;;;;
+A885;SAURASHTRA LETTER II;Lo;0;L;;;;;N;;;;;
+A886;SAURASHTRA LETTER U;Lo;0;L;;;;;N;;;;;
+A887;SAURASHTRA LETTER UU;Lo;0;L;;;;;N;;;;;
+A888;SAURASHTRA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+A889;SAURASHTRA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+A88A;SAURASHTRA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+A88B;SAURASHTRA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+A88C;SAURASHTRA LETTER E;Lo;0;L;;;;;N;;;;;
+A88D;SAURASHTRA LETTER EE;Lo;0;L;;;;;N;;;;;
+A88E;SAURASHTRA LETTER AI;Lo;0;L;;;;;N;;;;;
+A88F;SAURASHTRA LETTER O;Lo;0;L;;;;;N;;;;;
+A890;SAURASHTRA LETTER OO;Lo;0;L;;;;;N;;;;;
+A891;SAURASHTRA LETTER AU;Lo;0;L;;;;;N;;;;;
+A892;SAURASHTRA LETTER KA;Lo;0;L;;;;;N;;;;;
+A893;SAURASHTRA LETTER KHA;Lo;0;L;;;;;N;;;;;
+A894;SAURASHTRA LETTER GA;Lo;0;L;;;;;N;;;;;
+A895;SAURASHTRA LETTER GHA;Lo;0;L;;;;;N;;;;;
+A896;SAURASHTRA LETTER NGA;Lo;0;L;;;;;N;;;;;
+A897;SAURASHTRA LETTER CA;Lo;0;L;;;;;N;;;;;
+A898;SAURASHTRA LETTER CHA;Lo;0;L;;;;;N;;;;;
+A899;SAURASHTRA LETTER JA;Lo;0;L;;;;;N;;;;;
+A89A;SAURASHTRA LETTER JHA;Lo;0;L;;;;;N;;;;;
+A89B;SAURASHTRA LETTER NYA;Lo;0;L;;;;;N;;;;;
+A89C;SAURASHTRA LETTER TTA;Lo;0;L;;;;;N;;;;;
+A89D;SAURASHTRA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+A89E;SAURASHTRA LETTER DDA;Lo;0;L;;;;;N;;;;;
+A89F;SAURASHTRA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+A8A0;SAURASHTRA LETTER NNA;Lo;0;L;;;;;N;;;;;
+A8A1;SAURASHTRA LETTER TA;Lo;0;L;;;;;N;;;;;
+A8A2;SAURASHTRA LETTER THA;Lo;0;L;;;;;N;;;;;
+A8A3;SAURASHTRA LETTER DA;Lo;0;L;;;;;N;;;;;
+A8A4;SAURASHTRA LETTER DHA;Lo;0;L;;;;;N;;;;;
+A8A5;SAURASHTRA LETTER NA;Lo;0;L;;;;;N;;;;;
+A8A6;SAURASHTRA LETTER PA;Lo;0;L;;;;;N;;;;;
+A8A7;SAURASHTRA LETTER PHA;Lo;0;L;;;;;N;;;;;
+A8A8;SAURASHTRA LETTER BA;Lo;0;L;;;;;N;;;;;
+A8A9;SAURASHTRA LETTER BHA;Lo;0;L;;;;;N;;;;;
+A8AA;SAURASHTRA LETTER MA;Lo;0;L;;;;;N;;;;;
+A8AB;SAURASHTRA LETTER YA;Lo;0;L;;;;;N;;;;;
+A8AC;SAURASHTRA LETTER RA;Lo;0;L;;;;;N;;;;;
+A8AD;SAURASHTRA LETTER LA;Lo;0;L;;;;;N;;;;;
+A8AE;SAURASHTRA LETTER VA;Lo;0;L;;;;;N;;;;;
+A8AF;SAURASHTRA LETTER SHA;Lo;0;L;;;;;N;;;;;
+A8B0;SAURASHTRA LETTER SSA;Lo;0;L;;;;;N;;;;;
+A8B1;SAURASHTRA LETTER SA;Lo;0;L;;;;;N;;;;;
+A8B2;SAURASHTRA LETTER HA;Lo;0;L;;;;;N;;;;;
+A8B3;SAURASHTRA LETTER LLA;Lo;0;L;;;;;N;;;;;
+A8B4;SAURASHTRA CONSONANT SIGN HAARU;Mc;0;L;;;;;N;;;;;
+A8B5;SAURASHTRA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+A8B6;SAURASHTRA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+A8B7;SAURASHTRA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+A8B8;SAURASHTRA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+A8B9;SAURASHTRA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+A8BA;SAURASHTRA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+A8BB;SAURASHTRA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+A8BC;SAURASHTRA VOWEL SIGN VOCALIC L;Mc;0;L;;;;;N;;;;;
+A8BD;SAURASHTRA VOWEL SIGN VOCALIC LL;Mc;0;L;;;;;N;;;;;
+A8BE;SAURASHTRA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+A8BF;SAURASHTRA VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+A8C0;SAURASHTRA VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+A8C1;SAURASHTRA VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+A8C2;SAURASHTRA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+A8C3;SAURASHTRA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+A8C4;SAURASHTRA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+A8CE;SAURASHTRA DANDA;Po;0;L;;;;;N;;;;;
+A8CF;SAURASHTRA DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+A8D0;SAURASHTRA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+A8D1;SAURASHTRA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+A8D2;SAURASHTRA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+A8D3;SAURASHTRA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+A8D4;SAURASHTRA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+A8D5;SAURASHTRA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+A8D6;SAURASHTRA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+A8D7;SAURASHTRA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+A8D8;SAURASHTRA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+A8D9;SAURASHTRA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+A900;KAYAH LI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+A901;KAYAH LI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+A902;KAYAH LI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+A903;KAYAH LI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+A904;KAYAH LI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+A905;KAYAH LI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+A906;KAYAH LI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+A907;KAYAH LI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+A908;KAYAH LI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+A909;KAYAH LI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+A90A;KAYAH LI LETTER KA;Lo;0;L;;;;;N;;;;;
+A90B;KAYAH LI LETTER KHA;Lo;0;L;;;;;N;;;;;
+A90C;KAYAH LI LETTER GA;Lo;0;L;;;;;N;;;;;
+A90D;KAYAH LI LETTER NGA;Lo;0;L;;;;;N;;;;;
+A90E;KAYAH LI LETTER SA;Lo;0;L;;;;;N;;;;;
+A90F;KAYAH LI LETTER SHA;Lo;0;L;;;;;N;;;;;
+A910;KAYAH LI LETTER ZA;Lo;0;L;;;;;N;;;;;
+A911;KAYAH LI LETTER NYA;Lo;0;L;;;;;N;;;;;
+A912;KAYAH LI LETTER TA;Lo;0;L;;;;;N;;;;;
+A913;KAYAH LI LETTER HTA;Lo;0;L;;;;;N;;;;;
+A914;KAYAH LI LETTER NA;Lo;0;L;;;;;N;;;;;
+A915;KAYAH LI LETTER PA;Lo;0;L;;;;;N;;;;;
+A916;KAYAH LI LETTER PHA;Lo;0;L;;;;;N;;;;;
+A917;KAYAH LI LETTER MA;Lo;0;L;;;;;N;;;;;
+A918;KAYAH LI LETTER DA;Lo;0;L;;;;;N;;;;;
+A919;KAYAH LI LETTER BA;Lo;0;L;;;;;N;;;;;
+A91A;KAYAH LI LETTER RA;Lo;0;L;;;;;N;;;;;
+A91B;KAYAH LI LETTER YA;Lo;0;L;;;;;N;;;;;
+A91C;KAYAH LI LETTER LA;Lo;0;L;;;;;N;;;;;
+A91D;KAYAH LI LETTER WA;Lo;0;L;;;;;N;;;;;
+A91E;KAYAH LI LETTER THA;Lo;0;L;;;;;N;;;;;
+A91F;KAYAH LI LETTER HA;Lo;0;L;;;;;N;;;;;
+A920;KAYAH LI LETTER VA;Lo;0;L;;;;;N;;;;;
+A921;KAYAH LI LETTER CA;Lo;0;L;;;;;N;;;;;
+A922;KAYAH LI LETTER A;Lo;0;L;;;;;N;;;;;
+A923;KAYAH LI LETTER OE;Lo;0;L;;;;;N;;;;;
+A924;KAYAH LI LETTER I;Lo;0;L;;;;;N;;;;;
+A925;KAYAH LI LETTER OO;Lo;0;L;;;;;N;;;;;
+A926;KAYAH LI VOWEL UE;Mn;0;NSM;;;;;N;;;;;
+A927;KAYAH LI VOWEL E;Mn;0;NSM;;;;;N;;;;;
+A928;KAYAH LI VOWEL U;Mn;0;NSM;;;;;N;;;;;
+A929;KAYAH LI VOWEL EE;Mn;0;NSM;;;;;N;;;;;
+A92A;KAYAH LI VOWEL O;Mn;0;NSM;;;;;N;;;;;
+A92B;KAYAH LI TONE PLOPHU;Mn;220;NSM;;;;;N;;;;;
+A92C;KAYAH LI TONE CALYA;Mn;220;NSM;;;;;N;;;;;
+A92D;KAYAH LI TONE CALYA PLOPHU;Mn;220;NSM;;;;;N;;;;;
+A92E;KAYAH LI SIGN CWI;Po;0;L;;;;;N;;;;;
+A92F;KAYAH LI SIGN SHYA;Po;0;L;;;;;N;;;;;
+A930;REJANG LETTER KA;Lo;0;L;;;;;N;;;;;
+A931;REJANG LETTER GA;Lo;0;L;;;;;N;;;;;
+A932;REJANG LETTER NGA;Lo;0;L;;;;;N;;;;;
+A933;REJANG LETTER TA;Lo;0;L;;;;;N;;;;;
+A934;REJANG LETTER DA;Lo;0;L;;;;;N;;;;;
+A935;REJANG LETTER NA;Lo;0;L;;;;;N;;;;;
+A936;REJANG LETTER PA;Lo;0;L;;;;;N;;;;;
+A937;REJANG LETTER BA;Lo;0;L;;;;;N;;;;;
+A938;REJANG LETTER MA;Lo;0;L;;;;;N;;;;;
+A939;REJANG LETTER CA;Lo;0;L;;;;;N;;;;;
+A93A;REJANG LETTER JA;Lo;0;L;;;;;N;;;;;
+A93B;REJANG LETTER NYA;Lo;0;L;;;;;N;;;;;
+A93C;REJANG LETTER SA;Lo;0;L;;;;;N;;;;;
+A93D;REJANG LETTER RA;Lo;0;L;;;;;N;;;;;
+A93E;REJANG LETTER LA;Lo;0;L;;;;;N;;;;;
+A93F;REJANG LETTER YA;Lo;0;L;;;;;N;;;;;
+A940;REJANG LETTER WA;Lo;0;L;;;;;N;;;;;
+A941;REJANG LETTER HA;Lo;0;L;;;;;N;;;;;
+A942;REJANG LETTER MBA;Lo;0;L;;;;;N;;;;;
+A943;REJANG LETTER NGGA;Lo;0;L;;;;;N;;;;;
+A944;REJANG LETTER NDA;Lo;0;L;;;;;N;;;;;
+A945;REJANG LETTER NYJA;Lo;0;L;;;;;N;;;;;
+A946;REJANG LETTER A;Lo;0;L;;;;;N;;;;;
+A947;REJANG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+A948;REJANG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+A949;REJANG VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+A94A;REJANG VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+A94B;REJANG VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+A94C;REJANG VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+A94D;REJANG VOWEL SIGN EU;Mn;0;NSM;;;;;N;;;;;
+A94E;REJANG VOWEL SIGN EA;Mn;0;NSM;;;;;N;;;;;
+A94F;REJANG CONSONANT SIGN NG;Mn;0;NSM;;;;;N;;;;;
+A950;REJANG CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;;
+A951;REJANG CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;;
+A952;REJANG CONSONANT SIGN H;Mc;0;L;;;;;N;;;;;
+A953;REJANG VIRAMA;Mc;9;L;;;;;N;;;;;
+A95F;REJANG SECTION MARK;Po;0;L;;;;;N;;;;;
+AA00;CHAM LETTER A;Lo;0;L;;;;;N;;;;;
+AA01;CHAM LETTER I;Lo;0;L;;;;;N;;;;;
+AA02;CHAM LETTER U;Lo;0;L;;;;;N;;;;;
+AA03;CHAM LETTER E;Lo;0;L;;;;;N;;;;;
+AA04;CHAM LETTER AI;Lo;0;L;;;;;N;;;;;
+AA05;CHAM LETTER O;Lo;0;L;;;;;N;;;;;
+AA06;CHAM LETTER KA;Lo;0;L;;;;;N;;;;;
+AA07;CHAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+AA08;CHAM LETTER GA;Lo;0;L;;;;;N;;;;;
+AA09;CHAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+AA0A;CHAM LETTER NGUE;Lo;0;L;;;;;N;;;;;
+AA0B;CHAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+AA0C;CHAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+AA0D;CHAM LETTER CHHA;Lo;0;L;;;;;N;;;;;
+AA0E;CHAM LETTER JA;Lo;0;L;;;;;N;;;;;
+AA0F;CHAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+AA10;CHAM LETTER NHUE;Lo;0;L;;;;;N;;;;;
+AA11;CHAM LETTER NHA;Lo;0;L;;;;;N;;;;;
+AA12;CHAM LETTER NHJA;Lo;0;L;;;;;N;;;;;
+AA13;CHAM LETTER TA;Lo;0;L;;;;;N;;;;;
+AA14;CHAM LETTER THA;Lo;0;L;;;;;N;;;;;
+AA15;CHAM LETTER DA;Lo;0;L;;;;;N;;;;;
+AA16;CHAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+AA17;CHAM LETTER NUE;Lo;0;L;;;;;N;;;;;
+AA18;CHAM LETTER NA;Lo;0;L;;;;;N;;;;;
+AA19;CHAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+AA1A;CHAM LETTER PA;Lo;0;L;;;;;N;;;;;
+AA1B;CHAM LETTER PPA;Lo;0;L;;;;;N;;;;;
+AA1C;CHAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+AA1D;CHAM LETTER BA;Lo;0;L;;;;;N;;;;;
+AA1E;CHAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+AA1F;CHAM LETTER MUE;Lo;0;L;;;;;N;;;;;
+AA20;CHAM LETTER MA;Lo;0;L;;;;;N;;;;;
+AA21;CHAM LETTER BBA;Lo;0;L;;;;;N;;;;;
+AA22;CHAM LETTER YA;Lo;0;L;;;;;N;;;;;
+AA23;CHAM LETTER RA;Lo;0;L;;;;;N;;;;;
+AA24;CHAM LETTER LA;Lo;0;L;;;;;N;;;;;
+AA25;CHAM LETTER VA;Lo;0;L;;;;;N;;;;;
+AA26;CHAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+AA27;CHAM LETTER SA;Lo;0;L;;;;;N;;;;;
+AA28;CHAM LETTER HA;Lo;0;L;;;;;N;;;;;
+AA29;CHAM VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+AA2A;CHAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+AA2B;CHAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+AA2C;CHAM VOWEL SIGN EI;Mn;0;NSM;;;;;N;;;;;
+AA2D;CHAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+AA2E;CHAM VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;;
+AA2F;CHAM VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+AA30;CHAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+AA31;CHAM VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+AA32;CHAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;;
+AA33;CHAM CONSONANT SIGN YA;Mc;0;L;;;;;N;;;;;
+AA34;CHAM CONSONANT SIGN RA;Mc;0;L;;;;;N;;;;;
+AA35;CHAM CONSONANT SIGN LA;Mn;0;NSM;;;;;N;;;;;
+AA36;CHAM CONSONANT SIGN WA;Mn;0;NSM;;;;;N;;;;;
+AA40;CHAM LETTER FINAL K;Lo;0;L;;;;;N;;;;;
+AA41;CHAM LETTER FINAL G;Lo;0;L;;;;;N;;;;;
+AA42;CHAM LETTER FINAL NG;Lo;0;L;;;;;N;;;;;
+AA43;CHAM CONSONANT SIGN FINAL NG;Mn;0;NSM;;;;;N;;;;;
+AA44;CHAM LETTER FINAL CH;Lo;0;L;;;;;N;;;;;
+AA45;CHAM LETTER FINAL T;Lo;0;L;;;;;N;;;;;
+AA46;CHAM LETTER FINAL N;Lo;0;L;;;;;N;;;;;
+AA47;CHAM LETTER FINAL P;Lo;0;L;;;;;N;;;;;
+AA48;CHAM LETTER FINAL Y;Lo;0;L;;;;;N;;;;;
+AA49;CHAM LETTER FINAL R;Lo;0;L;;;;;N;;;;;
+AA4A;CHAM LETTER FINAL L;Lo;0;L;;;;;N;;;;;
+AA4B;CHAM LETTER FINAL SS;Lo;0;L;;;;;N;;;;;
+AA4C;CHAM CONSONANT SIGN FINAL M;Mn;0;NSM;;;;;N;;;;;
+AA4D;CHAM CONSONANT SIGN FINAL H;Mc;0;L;;;;;N;;;;;
+AA50;CHAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+AA51;CHAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+AA52;CHAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+AA53;CHAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+AA54;CHAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+AA55;CHAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+AA56;CHAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+AA57;CHAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+AA58;CHAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+AA59;CHAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+AA5C;CHAM PUNCTUATION SPIRAL;Po;0;L;;;;;N;;;;;
+AA5D;CHAM PUNCTUATION DANDA;Po;0;L;;;;;N;;;;;
+AA5E;CHAM PUNCTUATION DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+AA5F;CHAM PUNCTUATION TRIPLE DANDA;Po;0;L;;;;;N;;;;;
+AC00;HANGUL SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+AC01;HANGUL SYLLABLE GAG;Lo;0;L;;;;;N;;;;;
+AC02;HANGUL SYLLABLE GAGG;Lo;0;L;;;;;N;;;;;
+AC03;HANGUL SYLLABLE GAGS;Lo;0;L;;;;;N;;;;;
+AC04;HANGUL SYLLABLE GAN;Lo;0;L;;;;;N;;;;;
+AC05;HANGUL SYLLABLE GANI;Lo;0;L;;;;;N;;;;;
+AC06;HANGUL SYLLABLE GANH;Lo;0;L;;;;;N;;;;;
+AC07;HANGUL SYLLABLE GAD;Lo;0;L;;;;;N;;;;;
+AC08;HANGUL SYLLABLE GAL;Lo;0;L;;;;;N;;;;;
+AC09;HANGUL SYLLABLE GALG;Lo;0;L;;;;;N;;;;;
+AC0A;HANGUL SYLLABLE GALM;Lo;0;L;;;;;N;;;;;
+AC0B;HANGUL SYLLABLE GALB;Lo;0;L;;;;;N;;;;;
+AC0C;HANGUL SYLLABLE GALS;Lo;0;L;;;;;N;;;;;
+AC0D;HANGUL SYLLABLE GALT;Lo;0;L;;;;;N;;;;;
+AC0E;HANGUL SYLLABLE GALP;Lo;0;L;;;;;N;;;;;
+AC0F;HANGUL SYLLABLE GALH;Lo;0;L;;;;;N;;;;;
+AC10;HANGUL SYLLABLE GAM;Lo;0;L;;;;;N;;;;;
+AC11;HANGUL SYLLABLE GAB;Lo;0;L;;;;;N;;;;;
+AC12;HANGUL SYLLABLE GABS;Lo;0;L;;;;;N;;;;;
+AC13;HANGUL SYLLABLE GAS;Lo;0;L;;;;;N;;;;;
+AC14;HANGUL SYLLABLE GASS;Lo;0;L;;;;;N;;;;;
+AC15;HANGUL SYLLABLE GANG;Lo;0;L;;;;;N;;;;;
+AC16;HANGUL SYLLABLE GAJ;Lo;0;L;;;;;N;;;;;
+AC17;HANGUL SYLLABLE GAC;Lo;0;L;;;;;N;;;;;
+AC18;HANGUL SYLLABLE GAK;Lo;0;L;;;;;N;;;;;
+AC19;HANGUL SYLLABLE GAT;Lo;0;L;;;;;N;;;;;
+AC1A;HANGUL SYLLABLE GAP;Lo;0;L;;;;;N;;;;;
+AC1B;HANGUL SYLLABLE GAH;Lo;0;L;;;;;N;;;;;
+AC1C;HANGUL SYLLABLE GAE;Lo;0;L;;;;;N;;;;;
+AC1D;HANGUL SYLLABLE GAEG;Lo;0;L;;;;;N;;;;;
+AC1E;HANGUL SYLLABLE GAEGG;Lo;0;L;;;;;N;;;;;
+AC1F;HANGUL SYLLABLE GAEGS;Lo;0;L;;;;;N;;;;;
+AC20;HANGUL SYLLABLE GAEN;Lo;0;L;;;;;N;;;;;
+AC21;HANGUL SYLLABLE GAENI;Lo;0;L;;;;;N;;;;;
+AC22;HANGUL SYLLABLE GAENH;Lo;0;L;;;;;N;;;;;
+AC23;HANGUL SYLLABLE GAED;Lo;0;L;;;;;N;;;;;
+AC24;HANGUL SYLLABLE GAEL;Lo;0;L;;;;;N;;;;;
+AC25;HANGUL SYLLABLE GAELG;Lo;0;L;;;;;N;;;;;
+AC26;HANGUL SYLLABLE GAELM;Lo;0;L;;;;;N;;;;;
+AC27;HANGUL SYLLABLE GAELB;Lo;0;L;;;;;N;;;;;
+AC28;HANGUL SYLLABLE GAELS;Lo;0;L;;;;;N;;;;;
+AC29;HANGUL SYLLABLE GAELT;Lo;0;L;;;;;N;;;;;
+AC2A;HANGUL SYLLABLE GAELP;Lo;0;L;;;;;N;;;;;
+AC2B;HANGUL SYLLABLE GAELH;Lo;0;L;;;;;N;;;;;
+AC2C;HANGUL SYLLABLE GAEM;Lo;0;L;;;;;N;;;;;
+AC2D;HANGUL SYLLABLE GAEB;Lo;0;L;;;;;N;;;;;
+AC2E;HANGUL SYLLABLE GAEBS;Lo;0;L;;;;;N;;;;;
+AC2F;HANGUL SYLLABLE GAES;Lo;0;L;;;;;N;;;;;
+AC30;HANGUL SYLLABLE GAESS;Lo;0;L;;;;;N;;;;;
+AC31;HANGUL SYLLABLE GAENG;Lo;0;L;;;;;N;;;;;
+AC32;HANGUL SYLLABLE GAEJ;Lo;0;L;;;;;N;;;;;
+AC33;HANGUL SYLLABLE GAEC;Lo;0;L;;;;;N;;;;;
+AC34;HANGUL SYLLABLE GAEK;Lo;0;L;;;;;N;;;;;
+AC35;HANGUL SYLLABLE GAET;Lo;0;L;;;;;N;;;;;
+AC36;HANGUL SYLLABLE GAEP;Lo;0;L;;;;;N;;;;;
+AC37;HANGUL SYLLABLE GAEH;Lo;0;L;;;;;N;;;;;
+AC38;HANGUL SYLLABLE GYA;Lo;0;L;;;;;N;;;;;
+AC39;HANGUL SYLLABLE GYAG;Lo;0;L;;;;;N;;;;;
+AC3A;HANGUL SYLLABLE GYAGG;Lo;0;L;;;;;N;;;;;
+AC3B;HANGUL SYLLABLE GYAGS;Lo;0;L;;;;;N;;;;;
+AC3C;HANGUL SYLLABLE GYAN;Lo;0;L;;;;;N;;;;;
+AC3D;HANGUL SYLLABLE GYANI;Lo;0;L;;;;;N;;;;;
+AC3E;HANGUL SYLLABLE GYANH;Lo;0;L;;;;;N;;;;;
+AC3F;HANGUL SYLLABLE GYAD;Lo;0;L;;;;;N;;;;;
+AC40;HANGUL SYLLABLE GYAL;Lo;0;L;;;;;N;;;;;
+AC41;HANGUL SYLLABLE GYALG;Lo;0;L;;;;;N;;;;;
+AC42;HANGUL SYLLABLE GYALM;Lo;0;L;;;;;N;;;;;
+AC43;HANGUL SYLLABLE GYALB;Lo;0;L;;;;;N;;;;;
+AC44;HANGUL SYLLABLE GYALS;Lo;0;L;;;;;N;;;;;
+AC45;HANGUL SYLLABLE GYALT;Lo;0;L;;;;;N;;;;;
+AC46;HANGUL SYLLABLE GYALP;Lo;0;L;;;;;N;;;;;
+AC47;HANGUL SYLLABLE GYALH;Lo;0;L;;;;;N;;;;;
+AC48;HANGUL SYLLABLE GYAM;Lo;0;L;;;;;N;;;;;
+AC49;HANGUL SYLLABLE GYAB;Lo;0;L;;;;;N;;;;;
+AC4A;HANGUL SYLLABLE GYABS;Lo;0;L;;;;;N;;;;;
+AC4B;HANGUL SYLLABLE GYAS;Lo;0;L;;;;;N;;;;;
+AC4C;HANGUL SYLLABLE GYASS;Lo;0;L;;;;;N;;;;;
+AC4D;HANGUL SYLLABLE GYANG;Lo;0;L;;;;;N;;;;;
+AC4E;HANGUL SYLLABLE GYAJ;Lo;0;L;;;;;N;;;;;
+AC4F;HANGUL SYLLABLE GYAC;Lo;0;L;;;;;N;;;;;
+AC50;HANGUL SYLLABLE GYAK;Lo;0;L;;;;;N;;;;;
+AC51;HANGUL SYLLABLE GYAT;Lo;0;L;;;;;N;;;;;
+AC52;HANGUL SYLLABLE GYAP;Lo;0;L;;;;;N;;;;;
+AC53;HANGUL SYLLABLE GYAH;Lo;0;L;;;;;N;;;;;
+AC54;HANGUL SYLLABLE GYAE;Lo;0;L;;;;;N;;;;;
+AC55;HANGUL SYLLABLE GYAEG;Lo;0;L;;;;;N;;;;;
+AC56;HANGUL SYLLABLE GYAEGG;Lo;0;L;;;;;N;;;;;
+AC57;HANGUL SYLLABLE GYAEGS;Lo;0;L;;;;;N;;;;;
+AC58;HANGUL SYLLABLE GYAEN;Lo;0;L;;;;;N;;;;;
+AC59;HANGUL SYLLABLE GYAENI;Lo;0;L;;;;;N;;;;;
+AC5A;HANGUL SYLLABLE GYAENH;Lo;0;L;;;;;N;;;;;
+AC5B;HANGUL SYLLABLE GYAED;Lo;0;L;;;;;N;;;;;
+AC5C;HANGUL SYLLABLE GYAEL;Lo;0;L;;;;;N;;;;;
+AC5D;HANGUL SYLLABLE GYAELG;Lo;0;L;;;;;N;;;;;
+AC5E;HANGUL SYLLABLE GYAELM;Lo;0;L;;;;;N;;;;;
+AC5F;HANGUL SYLLABLE GYAELB;Lo;0;L;;;;;N;;;;;
+AC60;HANGUL SYLLABLE GYAELS;Lo;0;L;;;;;N;;;;;
+AC61;HANGUL SYLLABLE GYAELT;Lo;0;L;;;;;N;;;;;
+AC62;HANGUL SYLLABLE GYAELP;Lo;0;L;;;;;N;;;;;
+AC63;HANGUL SYLLABLE GYAELH;Lo;0;L;;;;;N;;;;;
+AC64;HANGUL SYLLABLE GYAEM;Lo;0;L;;;;;N;;;;;
+AC65;HANGUL SYLLABLE GYAEB;Lo;0;L;;;;;N;;;;;
+AC66;HANGUL SYLLABLE GYAEBS;Lo;0;L;;;;;N;;;;;
+AC67;HANGUL SYLLABLE GYAES;Lo;0;L;;;;;N;;;;;
+AC68;HANGUL SYLLABLE GYAESS;Lo;0;L;;;;;N;;;;;
+AC69;HANGUL SYLLABLE GYAENG;Lo;0;L;;;;;N;;;;;
+AC6A;HANGUL SYLLABLE GYAEJ;Lo;0;L;;;;;N;;;;;
+AC6B;HANGUL SYLLABLE GYAEC;Lo;0;L;;;;;N;;;;;
+AC6C;HANGUL SYLLABLE GYAEK;Lo;0;L;;;;;N;;;;;
+AC6D;HANGUL SYLLABLE GYAET;Lo;0;L;;;;;N;;;;;
+AC6E;HANGUL SYLLABLE GYAEP;Lo;0;L;;;;;N;;;;;
+AC6F;HANGUL SYLLABLE GYAEH;Lo;0;L;;;;;N;;;;;
+AC70;HANGUL SYLLABLE GEO;Lo;0;L;;;;;N;;;;;
+AC71;HANGUL SYLLABLE GEOG;Lo;0;L;;;;;N;;;;;
+AC72;HANGUL SYLLABLE GEOGG;Lo;0;L;;;;;N;;;;;
+AC73;HANGUL SYLLABLE GEOGS;Lo;0;L;;;;;N;;;;;
+AC74;HANGUL SYLLABLE GEON;Lo;0;L;;;;;N;;;;;
+AC75;HANGUL SYLLABLE GEONI;Lo;0;L;;;;;N;;;;;
+AC76;HANGUL SYLLABLE GEONH;Lo;0;L;;;;;N;;;;;
+AC77;HANGUL SYLLABLE GEOD;Lo;0;L;;;;;N;;;;;
+AC78;HANGUL SYLLABLE GEOL;Lo;0;L;;;;;N;;;;;
+AC79;HANGUL SYLLABLE GEOLG;Lo;0;L;;;;;N;;;;;
+AC7A;HANGUL SYLLABLE GEOLM;Lo;0;L;;;;;N;;;;;
+AC7B;HANGUL SYLLABLE GEOLB;Lo;0;L;;;;;N;;;;;
+AC7C;HANGUL SYLLABLE GEOLS;Lo;0;L;;;;;N;;;;;
+AC7D;HANGUL SYLLABLE GEOLT;Lo;0;L;;;;;N;;;;;
+AC7E;HANGUL SYLLABLE GEOLP;Lo;0;L;;;;;N;;;;;
+AC7F;HANGUL SYLLABLE GEOLH;Lo;0;L;;;;;N;;;;;
+AC80;HANGUL SYLLABLE GEOM;Lo;0;L;;;;;N;;;;;
+AC81;HANGUL SYLLABLE GEOB;Lo;0;L;;;;;N;;;;;
+AC82;HANGUL SYLLABLE GEOBS;Lo;0;L;;;;;N;;;;;
+AC83;HANGUL SYLLABLE GEOS;Lo;0;L;;;;;N;;;;;
+AC84;HANGUL SYLLABLE GEOSS;Lo;0;L;;;;;N;;;;;
+AC85;HANGUL SYLLABLE GEONG;Lo;0;L;;;;;N;;;;;
+AC86;HANGUL SYLLABLE GEOJ;Lo;0;L;;;;;N;;;;;
+AC87;HANGUL SYLLABLE GEOC;Lo;0;L;;;;;N;;;;;
+AC88;HANGUL SYLLABLE GEOK;Lo;0;L;;;;;N;;;;;
+AC89;HANGUL SYLLABLE GEOT;Lo;0;L;;;;;N;;;;;
+AC8A;HANGUL SYLLABLE GEOP;Lo;0;L;;;;;N;;;;;
+AC8B;HANGUL SYLLABLE GEOH;Lo;0;L;;;;;N;;;;;
+AC8C;HANGUL SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+AC8D;HANGUL SYLLABLE GEG;Lo;0;L;;;;;N;;;;;
+AC8E;HANGUL SYLLABLE GEGG;Lo;0;L;;;;;N;;;;;
+AC8F;HANGUL SYLLABLE GEGS;Lo;0;L;;;;;N;;;;;
+AC90;HANGUL SYLLABLE GEN;Lo;0;L;;;;;N;;;;;
+AC91;HANGUL SYLLABLE GENI;Lo;0;L;;;;;N;;;;;
+AC92;HANGUL SYLLABLE GENH;Lo;0;L;;;;;N;;;;;
+AC93;HANGUL SYLLABLE GED;Lo;0;L;;;;;N;;;;;
+AC94;HANGUL SYLLABLE GEL;Lo;0;L;;;;;N;;;;;
+AC95;HANGUL SYLLABLE GELG;Lo;0;L;;;;;N;;;;;
+AC96;HANGUL SYLLABLE GELM;Lo;0;L;;;;;N;;;;;
+AC97;HANGUL SYLLABLE GELB;Lo;0;L;;;;;N;;;;;
+AC98;HANGUL SYLLABLE GELS;Lo;0;L;;;;;N;;;;;
+AC99;HANGUL SYLLABLE GELT;Lo;0;L;;;;;N;;;;;
+AC9A;HANGUL SYLLABLE GELP;Lo;0;L;;;;;N;;;;;
+AC9B;HANGUL SYLLABLE GELH;Lo;0;L;;;;;N;;;;;
+AC9C;HANGUL SYLLABLE GEM;Lo;0;L;;;;;N;;;;;
+AC9D;HANGUL SYLLABLE GEB;Lo;0;L;;;;;N;;;;;
+AC9E;HANGUL SYLLABLE GEBS;Lo;0;L;;;;;N;;;;;
+AC9F;HANGUL SYLLABLE GES;Lo;0;L;;;;;N;;;;;
+ACA0;HANGUL SYLLABLE GESS;Lo;0;L;;;;;N;;;;;
+ACA1;HANGUL SYLLABLE GENG;Lo;0;L;;;;;N;;;;;
+ACA2;HANGUL SYLLABLE GEJ;Lo;0;L;;;;;N;;;;;
+ACA3;HANGUL SYLLABLE GEC;Lo;0;L;;;;;N;;;;;
+ACA4;HANGUL SYLLABLE GEK;Lo;0;L;;;;;N;;;;;
+ACA5;HANGUL SYLLABLE GET;Lo;0;L;;;;;N;;;;;
+ACA6;HANGUL SYLLABLE GEP;Lo;0;L;;;;;N;;;;;
+ACA7;HANGUL SYLLABLE GEH;Lo;0;L;;;;;N;;;;;
+ACA8;HANGUL SYLLABLE GYEO;Lo;0;L;;;;;N;;;;;
+ACA9;HANGUL SYLLABLE GYEOG;Lo;0;L;;;;;N;;;;;
+ACAA;HANGUL SYLLABLE GYEOGG;Lo;0;L;;;;;N;;;;;
+ACAB;HANGUL SYLLABLE GYEOGS;Lo;0;L;;;;;N;;;;;
+ACAC;HANGUL SYLLABLE GYEON;Lo;0;L;;;;;N;;;;;
+ACAD;HANGUL SYLLABLE GYEONI;Lo;0;L;;;;;N;;;;;
+ACAE;HANGUL SYLLABLE GYEONH;Lo;0;L;;;;;N;;;;;
+ACAF;HANGUL SYLLABLE GYEOD;Lo;0;L;;;;;N;;;;;
+ACB0;HANGUL SYLLABLE GYEOL;Lo;0;L;;;;;N;;;;;
+ACB1;HANGUL SYLLABLE GYEOLG;Lo;0;L;;;;;N;;;;;
+ACB2;HANGUL SYLLABLE GYEOLM;Lo;0;L;;;;;N;;;;;
+ACB3;HANGUL SYLLABLE GYEOLB;Lo;0;L;;;;;N;;;;;
+ACB4;HANGUL SYLLABLE GYEOLS;Lo;0;L;;;;;N;;;;;
+ACB5;HANGUL SYLLABLE GYEOLT;Lo;0;L;;;;;N;;;;;
+ACB6;HANGUL SYLLABLE GYEOLP;Lo;0;L;;;;;N;;;;;
+ACB7;HANGUL SYLLABLE GYEOLH;Lo;0;L;;;;;N;;;;;
+ACB8;HANGUL SYLLABLE GYEOM;Lo;0;L;;;;;N;;;;;
+ACB9;HANGUL SYLLABLE GYEOB;Lo;0;L;;;;;N;;;;;
+ACBA;HANGUL SYLLABLE GYEOBS;Lo;0;L;;;;;N;;;;;
+ACBB;HANGUL SYLLABLE GYEOS;Lo;0;L;;;;;N;;;;;
+ACBC;HANGUL SYLLABLE GYEOSS;Lo;0;L;;;;;N;;;;;
+ACBD;HANGUL SYLLABLE GYEONG;Lo;0;L;;;;;N;;;;;
+ACBE;HANGUL SYLLABLE GYEOJ;Lo;0;L;;;;;N;;;;;
+ACBF;HANGUL SYLLABLE GYEOC;Lo;0;L;;;;;N;;;;;
+ACC0;HANGUL SYLLABLE GYEOK;Lo;0;L;;;;;N;;;;;
+ACC1;HANGUL SYLLABLE GYEOT;Lo;0;L;;;;;N;;;;;
+ACC2;HANGUL SYLLABLE GYEOP;Lo;0;L;;;;;N;;;;;
+ACC3;HANGUL SYLLABLE GYEOH;Lo;0;L;;;;;N;;;;;
+ACC4;HANGUL SYLLABLE GYE;Lo;0;L;;;;;N;;;;;
+ACC5;HANGUL SYLLABLE GYEG;Lo;0;L;;;;;N;;;;;
+ACC6;HANGUL SYLLABLE GYEGG;Lo;0;L;;;;;N;;;;;
+ACC7;HANGUL SYLLABLE GYEGS;Lo;0;L;;;;;N;;;;;
+ACC8;HANGUL SYLLABLE GYEN;Lo;0;L;;;;;N;;;;;
+ACC9;HANGUL SYLLABLE GYENI;Lo;0;L;;;;;N;;;;;
+ACCA;HANGUL SYLLABLE GYENH;Lo;0;L;;;;;N;;;;;
+ACCB;HANGUL SYLLABLE GYED;Lo;0;L;;;;;N;;;;;
+ACCC;HANGUL SYLLABLE GYEL;Lo;0;L;;;;;N;;;;;
+ACCD;HANGUL SYLLABLE GYELG;Lo;0;L;;;;;N;;;;;
+ACCE;HANGUL SYLLABLE GYELM;Lo;0;L;;;;;N;;;;;
+ACCF;HANGUL SYLLABLE GYELB;Lo;0;L;;;;;N;;;;;
+ACD0;HANGUL SYLLABLE GYELS;Lo;0;L;;;;;N;;;;;
+ACD1;HANGUL SYLLABLE GYELT;Lo;0;L;;;;;N;;;;;
+ACD2;HANGUL SYLLABLE GYELP;Lo;0;L;;;;;N;;;;;
+ACD3;HANGUL SYLLABLE GYELH;Lo;0;L;;;;;N;;;;;
+ACD4;HANGUL SYLLABLE GYEM;Lo;0;L;;;;;N;;;;;
+ACD5;HANGUL SYLLABLE GYEB;Lo;0;L;;;;;N;;;;;
+ACD6;HANGUL SYLLABLE GYEBS;Lo;0;L;;;;;N;;;;;
+ACD7;HANGUL SYLLABLE GYES;Lo;0;L;;;;;N;;;;;
+ACD8;HANGUL SYLLABLE GYESS;Lo;0;L;;;;;N;;;;;
+ACD9;HANGUL SYLLABLE GYENG;Lo;0;L;;;;;N;;;;;
+ACDA;HANGUL SYLLABLE GYEJ;Lo;0;L;;;;;N;;;;;
+ACDB;HANGUL SYLLABLE GYEC;Lo;0;L;;;;;N;;;;;
+ACDC;HANGUL SYLLABLE GYEK;Lo;0;L;;;;;N;;;;;
+ACDD;HANGUL SYLLABLE GYET;Lo;0;L;;;;;N;;;;;
+ACDE;HANGUL SYLLABLE GYEP;Lo;0;L;;;;;N;;;;;
+ACDF;HANGUL SYLLABLE GYEH;Lo;0;L;;;;;N;;;;;
+ACE0;HANGUL SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+ACE1;HANGUL SYLLABLE GOG;Lo;0;L;;;;;N;;;;;
+ACE2;HANGUL SYLLABLE GOGG;Lo;0;L;;;;;N;;;;;
+ACE3;HANGUL SYLLABLE GOGS;Lo;0;L;;;;;N;;;;;
+ACE4;HANGUL SYLLABLE GON;Lo;0;L;;;;;N;;;;;
+ACE5;HANGUL SYLLABLE GONI;Lo;0;L;;;;;N;;;;;
+ACE6;HANGUL SYLLABLE GONH;Lo;0;L;;;;;N;;;;;
+ACE7;HANGUL SYLLABLE GOD;Lo;0;L;;;;;N;;;;;
+ACE8;HANGUL SYLLABLE GOL;Lo;0;L;;;;;N;;;;;
+ACE9;HANGUL SYLLABLE GOLG;Lo;0;L;;;;;N;;;;;
+ACEA;HANGUL SYLLABLE GOLM;Lo;0;L;;;;;N;;;;;
+ACEB;HANGUL SYLLABLE GOLB;Lo;0;L;;;;;N;;;;;
+ACEC;HANGUL SYLLABLE GOLS;Lo;0;L;;;;;N;;;;;
+ACED;HANGUL SYLLABLE GOLT;Lo;0;L;;;;;N;;;;;
+ACEE;HANGUL SYLLABLE GOLP;Lo;0;L;;;;;N;;;;;
+ACEF;HANGUL SYLLABLE GOLH;Lo;0;L;;;;;N;;;;;
+ACF0;HANGUL SYLLABLE GOM;Lo;0;L;;;;;N;;;;;
+ACF1;HANGUL SYLLABLE GOB;Lo;0;L;;;;;N;;;;;
+ACF2;HANGUL SYLLABLE GOBS;Lo;0;L;;;;;N;;;;;
+ACF3;HANGUL SYLLABLE GOS;Lo;0;L;;;;;N;;;;;
+ACF4;HANGUL SYLLABLE GOSS;Lo;0;L;;;;;N;;;;;
+ACF5;HANGUL SYLLABLE GONG;Lo;0;L;;;;;N;;;;;
+ACF6;HANGUL SYLLABLE GOJ;Lo;0;L;;;;;N;;;;;
+ACF7;HANGUL SYLLABLE GOC;Lo;0;L;;;;;N;;;;;
+ACF8;HANGUL SYLLABLE GOK;Lo;0;L;;;;;N;;;;;
+ACF9;HANGUL SYLLABLE GOT;Lo;0;L;;;;;N;;;;;
+ACFA;HANGUL SYLLABLE GOP;Lo;0;L;;;;;N;;;;;
+ACFB;HANGUL SYLLABLE GOH;Lo;0;L;;;;;N;;;;;
+ACFC;HANGUL SYLLABLE GWA;Lo;0;L;;;;;N;;;;;
+ACFD;HANGUL SYLLABLE GWAG;Lo;0;L;;;;;N;;;;;
+ACFE;HANGUL SYLLABLE GWAGG;Lo;0;L;;;;;N;;;;;
+ACFF;HANGUL SYLLABLE GWAGS;Lo;0;L;;;;;N;;;;;
+AD00;HANGUL SYLLABLE GWAN;Lo;0;L;;;;;N;;;;;
+AD01;HANGUL SYLLABLE GWANI;Lo;0;L;;;;;N;;;;;
+AD02;HANGUL SYLLABLE GWANH;Lo;0;L;;;;;N;;;;;
+AD03;HANGUL SYLLABLE GWAD;Lo;0;L;;;;;N;;;;;
+AD04;HANGUL SYLLABLE GWAL;Lo;0;L;;;;;N;;;;;
+AD05;HANGUL SYLLABLE GWALG;Lo;0;L;;;;;N;;;;;
+AD06;HANGUL SYLLABLE GWALM;Lo;0;L;;;;;N;;;;;
+AD07;HANGUL SYLLABLE GWALB;Lo;0;L;;;;;N;;;;;
+AD08;HANGUL SYLLABLE GWALS;Lo;0;L;;;;;N;;;;;
+AD09;HANGUL SYLLABLE GWALT;Lo;0;L;;;;;N;;;;;
+AD0A;HANGUL SYLLABLE GWALP;Lo;0;L;;;;;N;;;;;
+AD0B;HANGUL SYLLABLE GWALH;Lo;0;L;;;;;N;;;;;
+AD0C;HANGUL SYLLABLE GWAM;Lo;0;L;;;;;N;;;;;
+AD0D;HANGUL SYLLABLE GWAB;Lo;0;L;;;;;N;;;;;
+AD0E;HANGUL SYLLABLE GWABS;Lo;0;L;;;;;N;;;;;
+AD0F;HANGUL SYLLABLE GWAS;Lo;0;L;;;;;N;;;;;
+AD10;HANGUL SYLLABLE GWASS;Lo;0;L;;;;;N;;;;;
+AD11;HANGUL SYLLABLE GWANG;Lo;0;L;;;;;N;;;;;
+AD12;HANGUL SYLLABLE GWAJ;Lo;0;L;;;;;N;;;;;
+AD13;HANGUL SYLLABLE GWAC;Lo;0;L;;;;;N;;;;;
+AD14;HANGUL SYLLABLE GWAK;Lo;0;L;;;;;N;;;;;
+AD15;HANGUL SYLLABLE GWAT;Lo;0;L;;;;;N;;;;;
+AD16;HANGUL SYLLABLE GWAP;Lo;0;L;;;;;N;;;;;
+AD17;HANGUL SYLLABLE GWAH;Lo;0;L;;;;;N;;;;;
+AD18;HANGUL SYLLABLE GWAE;Lo;0;L;;;;;N;;;;;
+AD19;HANGUL SYLLABLE GWAEG;Lo;0;L;;;;;N;;;;;
+AD1A;HANGUL SYLLABLE GWAEGG;Lo;0;L;;;;;N;;;;;
+AD1B;HANGUL SYLLABLE GWAEGS;Lo;0;L;;;;;N;;;;;
+AD1C;HANGUL SYLLABLE GWAEN;Lo;0;L;;;;;N;;;;;
+AD1D;HANGUL SYLLABLE GWAENI;Lo;0;L;;;;;N;;;;;
+AD1E;HANGUL SYLLABLE GWAENH;Lo;0;L;;;;;N;;;;;
+AD1F;HANGUL SYLLABLE GWAED;Lo;0;L;;;;;N;;;;;
+AD20;HANGUL SYLLABLE GWAEL;Lo;0;L;;;;;N;;;;;
+AD21;HANGUL SYLLABLE GWAELG;Lo;0;L;;;;;N;;;;;
+AD22;HANGUL SYLLABLE GWAELM;Lo;0;L;;;;;N;;;;;
+AD23;HANGUL SYLLABLE GWAELB;Lo;0;L;;;;;N;;;;;
+AD24;HANGUL SYLLABLE GWAELS;Lo;0;L;;;;;N;;;;;
+AD25;HANGUL SYLLABLE GWAELT;Lo;0;L;;;;;N;;;;;
+AD26;HANGUL SYLLABLE GWAELP;Lo;0;L;;;;;N;;;;;
+AD27;HANGUL SYLLABLE GWAELH;Lo;0;L;;;;;N;;;;;
+AD28;HANGUL SYLLABLE GWAEM;Lo;0;L;;;;;N;;;;;
+AD29;HANGUL SYLLABLE GWAEB;Lo;0;L;;;;;N;;;;;
+AD2A;HANGUL SYLLABLE GWAEBS;Lo;0;L;;;;;N;;;;;
+AD2B;HANGUL SYLLABLE GWAES;Lo;0;L;;;;;N;;;;;
+AD2C;HANGUL SYLLABLE GWAESS;Lo;0;L;;;;;N;;;;;
+AD2D;HANGUL SYLLABLE GWAENG;Lo;0;L;;;;;N;;;;;
+AD2E;HANGUL SYLLABLE GWAEJ;Lo;0;L;;;;;N;;;;;
+AD2F;HANGUL SYLLABLE GWAEC;Lo;0;L;;;;;N;;;;;
+AD30;HANGUL SYLLABLE GWAEK;Lo;0;L;;;;;N;;;;;
+AD31;HANGUL SYLLABLE GWAET;Lo;0;L;;;;;N;;;;;
+AD32;HANGUL SYLLABLE GWAEP;Lo;0;L;;;;;N;;;;;
+AD33;HANGUL SYLLABLE GWAEH;Lo;0;L;;;;;N;;;;;
+AD34;HANGUL SYLLABLE GOE;Lo;0;L;;;;;N;;;;;
+AD35;HANGUL SYLLABLE GOEG;Lo;0;L;;;;;N;;;;;
+AD36;HANGUL SYLLABLE GOEGG;Lo;0;L;;;;;N;;;;;
+AD37;HANGUL SYLLABLE GOEGS;Lo;0;L;;;;;N;;;;;
+AD38;HANGUL SYLLABLE GOEN;Lo;0;L;;;;;N;;;;;
+AD39;HANGUL SYLLABLE GOENI;Lo;0;L;;;;;N;;;;;
+AD3A;HANGUL SYLLABLE GOENH;Lo;0;L;;;;;N;;;;;
+AD3B;HANGUL SYLLABLE GOED;Lo;0;L;;;;;N;;;;;
+AD3C;HANGUL SYLLABLE GOEL;Lo;0;L;;;;;N;;;;;
+AD3D;HANGUL SYLLABLE GOELG;Lo;0;L;;;;;N;;;;;
+AD3E;HANGUL SYLLABLE GOELM;Lo;0;L;;;;;N;;;;;
+AD3F;HANGUL SYLLABLE GOELB;Lo;0;L;;;;;N;;;;;
+AD40;HANGUL SYLLABLE GOELS;Lo;0;L;;;;;N;;;;;
+AD41;HANGUL SYLLABLE GOELT;Lo;0;L;;;;;N;;;;;
+AD42;HANGUL SYLLABLE GOELP;Lo;0;L;;;;;N;;;;;
+AD43;HANGUL SYLLABLE GOELH;Lo;0;L;;;;;N;;;;;
+AD44;HANGUL SYLLABLE GOEM;Lo;0;L;;;;;N;;;;;
+AD45;HANGUL SYLLABLE GOEB;Lo;0;L;;;;;N;;;;;
+AD46;HANGUL SYLLABLE GOEBS;Lo;0;L;;;;;N;;;;;
+AD47;HANGUL SYLLABLE GOES;Lo;0;L;;;;;N;;;;;
+AD48;HANGUL SYLLABLE GOESS;Lo;0;L;;;;;N;;;;;
+AD49;HANGUL SYLLABLE GOENG;Lo;0;L;;;;;N;;;;;
+AD4A;HANGUL SYLLABLE GOEJ;Lo;0;L;;;;;N;;;;;
+AD4B;HANGUL SYLLABLE GOEC;Lo;0;L;;;;;N;;;;;
+AD4C;HANGUL SYLLABLE GOEK;Lo;0;L;;;;;N;;;;;
+AD4D;HANGUL SYLLABLE GOET;Lo;0;L;;;;;N;;;;;
+AD4E;HANGUL SYLLABLE GOEP;Lo;0;L;;;;;N;;;;;
+AD4F;HANGUL SYLLABLE GOEH;Lo;0;L;;;;;N;;;;;
+AD50;HANGUL SYLLABLE GYO;Lo;0;L;;;;;N;;;;;
+AD51;HANGUL SYLLABLE GYOG;Lo;0;L;;;;;N;;;;;
+AD52;HANGUL SYLLABLE GYOGG;Lo;0;L;;;;;N;;;;;
+AD53;HANGUL SYLLABLE GYOGS;Lo;0;L;;;;;N;;;;;
+AD54;HANGUL SYLLABLE GYON;Lo;0;L;;;;;N;;;;;
+AD55;HANGUL SYLLABLE GYONI;Lo;0;L;;;;;N;;;;;
+AD56;HANGUL SYLLABLE GYONH;Lo;0;L;;;;;N;;;;;
+AD57;HANGUL SYLLABLE GYOD;Lo;0;L;;;;;N;;;;;
+AD58;HANGUL SYLLABLE GYOL;Lo;0;L;;;;;N;;;;;
+AD59;HANGUL SYLLABLE GYOLG;Lo;0;L;;;;;N;;;;;
+AD5A;HANGUL SYLLABLE GYOLM;Lo;0;L;;;;;N;;;;;
+AD5B;HANGUL SYLLABLE GYOLB;Lo;0;L;;;;;N;;;;;
+AD5C;HANGUL SYLLABLE GYOLS;Lo;0;L;;;;;N;;;;;
+AD5D;HANGUL SYLLABLE GYOLT;Lo;0;L;;;;;N;;;;;
+AD5E;HANGUL SYLLABLE GYOLP;Lo;0;L;;;;;N;;;;;
+AD5F;HANGUL SYLLABLE GYOLH;Lo;0;L;;;;;N;;;;;
+AD60;HANGUL SYLLABLE GYOM;Lo;0;L;;;;;N;;;;;
+AD61;HANGUL SYLLABLE GYOB;Lo;0;L;;;;;N;;;;;
+AD62;HANGUL SYLLABLE GYOBS;Lo;0;L;;;;;N;;;;;
+AD63;HANGUL SYLLABLE GYOS;Lo;0;L;;;;;N;;;;;
+AD64;HANGUL SYLLABLE GYOSS;Lo;0;L;;;;;N;;;;;
+AD65;HANGUL SYLLABLE GYONG;Lo;0;L;;;;;N;;;;;
+AD66;HANGUL SYLLABLE GYOJ;Lo;0;L;;;;;N;;;;;
+AD67;HANGUL SYLLABLE GYOC;Lo;0;L;;;;;N;;;;;
+AD68;HANGUL SYLLABLE GYOK;Lo;0;L;;;;;N;;;;;
+AD69;HANGUL SYLLABLE GYOT;Lo;0;L;;;;;N;;;;;
+AD6A;HANGUL SYLLABLE GYOP;Lo;0;L;;;;;N;;;;;
+AD6B;HANGUL SYLLABLE GYOH;Lo;0;L;;;;;N;;;;;
+AD6C;HANGUL SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+AD6D;HANGUL SYLLABLE GUG;Lo;0;L;;;;;N;;;;;
+AD6E;HANGUL SYLLABLE GUGG;Lo;0;L;;;;;N;;;;;
+AD6F;HANGUL SYLLABLE GUGS;Lo;0;L;;;;;N;;;;;
+AD70;HANGUL SYLLABLE GUN;Lo;0;L;;;;;N;;;;;
+AD71;HANGUL SYLLABLE GUNI;Lo;0;L;;;;;N;;;;;
+AD72;HANGUL SYLLABLE GUNH;Lo;0;L;;;;;N;;;;;
+AD73;HANGUL SYLLABLE GUD;Lo;0;L;;;;;N;;;;;
+AD74;HANGUL SYLLABLE GUL;Lo;0;L;;;;;N;;;;;
+AD75;HANGUL SYLLABLE GULG;Lo;0;L;;;;;N;;;;;
+AD76;HANGUL SYLLABLE GULM;Lo;0;L;;;;;N;;;;;
+AD77;HANGUL SYLLABLE GULB;Lo;0;L;;;;;N;;;;;
+AD78;HANGUL SYLLABLE GULS;Lo;0;L;;;;;N;;;;;
+AD79;HANGUL SYLLABLE GULT;Lo;0;L;;;;;N;;;;;
+AD7A;HANGUL SYLLABLE GULP;Lo;0;L;;;;;N;;;;;
+AD7B;HANGUL SYLLABLE GULH;Lo;0;L;;;;;N;;;;;
+AD7C;HANGUL SYLLABLE GUM;Lo;0;L;;;;;N;;;;;
+AD7D;HANGUL SYLLABLE GUB;Lo;0;L;;;;;N;;;;;
+AD7E;HANGUL SYLLABLE GUBS;Lo;0;L;;;;;N;;;;;
+AD7F;HANGUL SYLLABLE GUS;Lo;0;L;;;;;N;;;;;
+AD80;HANGUL SYLLABLE GUSS;Lo;0;L;;;;;N;;;;;
+AD81;HANGUL SYLLABLE GUNG;Lo;0;L;;;;;N;;;;;
+AD82;HANGUL SYLLABLE GUJ;Lo;0;L;;;;;N;;;;;
+AD83;HANGUL SYLLABLE GUC;Lo;0;L;;;;;N;;;;;
+AD84;HANGUL SYLLABLE GUK;Lo;0;L;;;;;N;;;;;
+AD85;HANGUL SYLLABLE GUT;Lo;0;L;;;;;N;;;;;
+AD86;HANGUL SYLLABLE GUP;Lo;0;L;;;;;N;;;;;
+AD87;HANGUL SYLLABLE GUH;Lo;0;L;;;;;N;;;;;
+AD88;HANGUL SYLLABLE GWEO;Lo;0;L;;;;;N;;;;;
+AD89;HANGUL SYLLABLE GWEOG;Lo;0;L;;;;;N;;;;;
+AD8A;HANGUL SYLLABLE GWEOGG;Lo;0;L;;;;;N;;;;;
+AD8B;HANGUL SYLLABLE GWEOGS;Lo;0;L;;;;;N;;;;;
+AD8C;HANGUL SYLLABLE GWEON;Lo;0;L;;;;;N;;;;;
+AD8D;HANGUL SYLLABLE GWEONI;Lo;0;L;;;;;N;;;;;
+AD8E;HANGUL SYLLABLE GWEONH;Lo;0;L;;;;;N;;;;;
+AD8F;HANGUL SYLLABLE GWEOD;Lo;0;L;;;;;N;;;;;
+AD90;HANGUL SYLLABLE GWEOL;Lo;0;L;;;;;N;;;;;
+AD91;HANGUL SYLLABLE GWEOLG;Lo;0;L;;;;;N;;;;;
+AD92;HANGUL SYLLABLE GWEOLM;Lo;0;L;;;;;N;;;;;
+AD93;HANGUL SYLLABLE GWEOLB;Lo;0;L;;;;;N;;;;;
+AD94;HANGUL SYLLABLE GWEOLS;Lo;0;L;;;;;N;;;;;
+AD95;HANGUL SYLLABLE GWEOLT;Lo;0;L;;;;;N;;;;;
+AD96;HANGUL SYLLABLE GWEOLP;Lo;0;L;;;;;N;;;;;
+AD97;HANGUL SYLLABLE GWEOLH;Lo;0;L;;;;;N;;;;;
+AD98;HANGUL SYLLABLE GWEOM;Lo;0;L;;;;;N;;;;;
+AD99;HANGUL SYLLABLE GWEOB;Lo;0;L;;;;;N;;;;;
+AD9A;HANGUL SYLLABLE GWEOBS;Lo;0;L;;;;;N;;;;;
+AD9B;HANGUL SYLLABLE GWEOS;Lo;0;L;;;;;N;;;;;
+AD9C;HANGUL SYLLABLE GWEOSS;Lo;0;L;;;;;N;;;;;
+AD9D;HANGUL SYLLABLE GWEONG;Lo;0;L;;;;;N;;;;;
+AD9E;HANGUL SYLLABLE GWEOJ;Lo;0;L;;;;;N;;;;;
+AD9F;HANGUL SYLLABLE GWEOC;Lo;0;L;;;;;N;;;;;
+ADA0;HANGUL SYLLABLE GWEOK;Lo;0;L;;;;;N;;;;;
+ADA1;HANGUL SYLLABLE GWEOT;Lo;0;L;;;;;N;;;;;
+ADA2;HANGUL SYLLABLE GWEOP;Lo;0;L;;;;;N;;;;;
+ADA3;HANGUL SYLLABLE GWEOH;Lo;0;L;;;;;N;;;;;
+ADA4;HANGUL SYLLABLE GWE;Lo;0;L;;;;;N;;;;;
+ADA5;HANGUL SYLLABLE GWEG;Lo;0;L;;;;;N;;;;;
+ADA6;HANGUL SYLLABLE GWEGG;Lo;0;L;;;;;N;;;;;
+ADA7;HANGUL SYLLABLE GWEGS;Lo;0;L;;;;;N;;;;;
+ADA8;HANGUL SYLLABLE GWEN;Lo;0;L;;;;;N;;;;;
+ADA9;HANGUL SYLLABLE GWENI;Lo;0;L;;;;;N;;;;;
+ADAA;HANGUL SYLLABLE GWENH;Lo;0;L;;;;;N;;;;;
+ADAB;HANGUL SYLLABLE GWED;Lo;0;L;;;;;N;;;;;
+ADAC;HANGUL SYLLABLE GWEL;Lo;0;L;;;;;N;;;;;
+ADAD;HANGUL SYLLABLE GWELG;Lo;0;L;;;;;N;;;;;
+ADAE;HANGUL SYLLABLE GWELM;Lo;0;L;;;;;N;;;;;
+ADAF;HANGUL SYLLABLE GWELB;Lo;0;L;;;;;N;;;;;
+ADB0;HANGUL SYLLABLE GWELS;Lo;0;L;;;;;N;;;;;
+ADB1;HANGUL SYLLABLE GWELT;Lo;0;L;;;;;N;;;;;
+ADB2;HANGUL SYLLABLE GWELP;Lo;0;L;;;;;N;;;;;
+ADB3;HANGUL SYLLABLE GWELH;Lo;0;L;;;;;N;;;;;
+ADB4;HANGUL SYLLABLE GWEM;Lo;0;L;;;;;N;;;;;
+ADB5;HANGUL SYLLABLE GWEB;Lo;0;L;;;;;N;;;;;
+ADB6;HANGUL SYLLABLE GWEBS;Lo;0;L;;;;;N;;;;;
+ADB7;HANGUL SYLLABLE GWES;Lo;0;L;;;;;N;;;;;
+ADB8;HANGUL SYLLABLE GWESS;Lo;0;L;;;;;N;;;;;
+ADB9;HANGUL SYLLABLE GWENG;Lo;0;L;;;;;N;;;;;
+ADBA;HANGUL SYLLABLE GWEJ;Lo;0;L;;;;;N;;;;;
+ADBB;HANGUL SYLLABLE GWEC;Lo;0;L;;;;;N;;;;;
+ADBC;HANGUL SYLLABLE GWEK;Lo;0;L;;;;;N;;;;;
+ADBD;HANGUL SYLLABLE GWET;Lo;0;L;;;;;N;;;;;
+ADBE;HANGUL SYLLABLE GWEP;Lo;0;L;;;;;N;;;;;
+ADBF;HANGUL SYLLABLE GWEH;Lo;0;L;;;;;N;;;;;
+ADC0;HANGUL SYLLABLE GWI;Lo;0;L;;;;;N;;;;;
+ADC1;HANGUL SYLLABLE GWIG;Lo;0;L;;;;;N;;;;;
+ADC2;HANGUL SYLLABLE GWIGG;Lo;0;L;;;;;N;;;;;
+ADC3;HANGUL SYLLABLE GWIGS;Lo;0;L;;;;;N;;;;;
+ADC4;HANGUL SYLLABLE GWIN;Lo;0;L;;;;;N;;;;;
+ADC5;HANGUL SYLLABLE GWINI;Lo;0;L;;;;;N;;;;;
+ADC6;HANGUL SYLLABLE GWINH;Lo;0;L;;;;;N;;;;;
+ADC7;HANGUL SYLLABLE GWID;Lo;0;L;;;;;N;;;;;
+ADC8;HANGUL SYLLABLE GWIL;Lo;0;L;;;;;N;;;;;
+ADC9;HANGUL SYLLABLE GWILG;Lo;0;L;;;;;N;;;;;
+ADCA;HANGUL SYLLABLE GWILM;Lo;0;L;;;;;N;;;;;
+ADCB;HANGUL SYLLABLE GWILB;Lo;0;L;;;;;N;;;;;
+ADCC;HANGUL SYLLABLE GWILS;Lo;0;L;;;;;N;;;;;
+ADCD;HANGUL SYLLABLE GWILT;Lo;0;L;;;;;N;;;;;
+ADCE;HANGUL SYLLABLE GWILP;Lo;0;L;;;;;N;;;;;
+ADCF;HANGUL SYLLABLE GWILH;Lo;0;L;;;;;N;;;;;
+ADD0;HANGUL SYLLABLE GWIM;Lo;0;L;;;;;N;;;;;
+ADD1;HANGUL SYLLABLE GWIB;Lo;0;L;;;;;N;;;;;
+ADD2;HANGUL SYLLABLE GWIBS;Lo;0;L;;;;;N;;;;;
+ADD3;HANGUL SYLLABLE GWIS;Lo;0;L;;;;;N;;;;;
+ADD4;HANGUL SYLLABLE GWISS;Lo;0;L;;;;;N;;;;;
+ADD5;HANGUL SYLLABLE GWING;Lo;0;L;;;;;N;;;;;
+ADD6;HANGUL SYLLABLE GWIJ;Lo;0;L;;;;;N;;;;;
+ADD7;HANGUL SYLLABLE GWIC;Lo;0;L;;;;;N;;;;;
+ADD8;HANGUL SYLLABLE GWIK;Lo;0;L;;;;;N;;;;;
+ADD9;HANGUL SYLLABLE GWIT;Lo;0;L;;;;;N;;;;;
+ADDA;HANGUL SYLLABLE GWIP;Lo;0;L;;;;;N;;;;;
+ADDB;HANGUL SYLLABLE GWIH;Lo;0;L;;;;;N;;;;;
+ADDC;HANGUL SYLLABLE GYU;Lo;0;L;;;;;N;;;;;
+ADDD;HANGUL SYLLABLE GYUG;Lo;0;L;;;;;N;;;;;
+ADDE;HANGUL SYLLABLE GYUGG;Lo;0;L;;;;;N;;;;;
+ADDF;HANGUL SYLLABLE GYUGS;Lo;0;L;;;;;N;;;;;
+ADE0;HANGUL SYLLABLE GYUN;Lo;0;L;;;;;N;;;;;
+ADE1;HANGUL SYLLABLE GYUNI;Lo;0;L;;;;;N;;;;;
+ADE2;HANGUL SYLLABLE GYUNH;Lo;0;L;;;;;N;;;;;
+ADE3;HANGUL SYLLABLE GYUD;Lo;0;L;;;;;N;;;;;
+ADE4;HANGUL SYLLABLE GYUL;Lo;0;L;;;;;N;;;;;
+ADE5;HANGUL SYLLABLE GYULG;Lo;0;L;;;;;N;;;;;
+ADE6;HANGUL SYLLABLE GYULM;Lo;0;L;;;;;N;;;;;
+ADE7;HANGUL SYLLABLE GYULB;Lo;0;L;;;;;N;;;;;
+ADE8;HANGUL SYLLABLE GYULS;Lo;0;L;;;;;N;;;;;
+ADE9;HANGUL SYLLABLE GYULT;Lo;0;L;;;;;N;;;;;
+ADEA;HANGUL SYLLABLE GYULP;Lo;0;L;;;;;N;;;;;
+ADEB;HANGUL SYLLABLE GYULH;Lo;0;L;;;;;N;;;;;
+ADEC;HANGUL SYLLABLE GYUM;Lo;0;L;;;;;N;;;;;
+ADED;HANGUL SYLLABLE GYUB;Lo;0;L;;;;;N;;;;;
+ADEE;HANGUL SYLLABLE GYUBS;Lo;0;L;;;;;N;;;;;
+ADEF;HANGUL SYLLABLE GYUS;Lo;0;L;;;;;N;;;;;
+ADF0;HANGUL SYLLABLE GYUSS;Lo;0;L;;;;;N;;;;;
+ADF1;HANGUL SYLLABLE GYUNG;Lo;0;L;;;;;N;;;;;
+ADF2;HANGUL SYLLABLE GYUJ;Lo;0;L;;;;;N;;;;;
+ADF3;HANGUL SYLLABLE GYUC;Lo;0;L;;;;;N;;;;;
+ADF4;HANGUL SYLLABLE GYUK;Lo;0;L;;;;;N;;;;;
+ADF5;HANGUL SYLLABLE GYUT;Lo;0;L;;;;;N;;;;;
+ADF6;HANGUL SYLLABLE GYUP;Lo;0;L;;;;;N;;;;;
+ADF7;HANGUL SYLLABLE GYUH;Lo;0;L;;;;;N;;;;;
+ADF8;HANGUL SYLLABLE GEU;Lo;0;L;;;;;N;;;;;
+ADF9;HANGUL SYLLABLE GEUG;Lo;0;L;;;;;N;;;;;
+ADFA;HANGUL SYLLABLE GEUGG;Lo;0;L;;;;;N;;;;;
+ADFB;HANGUL SYLLABLE GEUGS;Lo;0;L;;;;;N;;;;;
+ADFC;HANGUL SYLLABLE GEUN;Lo;0;L;;;;;N;;;;;
+ADFD;HANGUL SYLLABLE GEUNI;Lo;0;L;;;;;N;;;;;
+ADFE;HANGUL SYLLABLE GEUNH;Lo;0;L;;;;;N;;;;;
+ADFF;HANGUL SYLLABLE GEUD;Lo;0;L;;;;;N;;;;;
+AE00;HANGUL SYLLABLE GEUL;Lo;0;L;;;;;N;;;;;
+AE01;HANGUL SYLLABLE GEULG;Lo;0;L;;;;;N;;;;;
+AE02;HANGUL SYLLABLE GEULM;Lo;0;L;;;;;N;;;;;
+AE03;HANGUL SYLLABLE GEULB;Lo;0;L;;;;;N;;;;;
+AE04;HANGUL SYLLABLE GEULS;Lo;0;L;;;;;N;;;;;
+AE05;HANGUL SYLLABLE GEULT;Lo;0;L;;;;;N;;;;;
+AE06;HANGUL SYLLABLE GEULP;Lo;0;L;;;;;N;;;;;
+AE07;HANGUL SYLLABLE GEULH;Lo;0;L;;;;;N;;;;;
+AE08;HANGUL SYLLABLE GEUM;Lo;0;L;;;;;N;;;;;
+AE09;HANGUL SYLLABLE GEUB;Lo;0;L;;;;;N;;;;;
+AE0A;HANGUL SYLLABLE GEUBS;Lo;0;L;;;;;N;;;;;
+AE0B;HANGUL SYLLABLE GEUS;Lo;0;L;;;;;N;;;;;
+AE0C;HANGUL SYLLABLE GEUSS;Lo;0;L;;;;;N;;;;;
+AE0D;HANGUL SYLLABLE GEUNG;Lo;0;L;;;;;N;;;;;
+AE0E;HANGUL SYLLABLE GEUJ;Lo;0;L;;;;;N;;;;;
+AE0F;HANGUL SYLLABLE GEUC;Lo;0;L;;;;;N;;;;;
+AE10;HANGUL SYLLABLE GEUK;Lo;0;L;;;;;N;;;;;
+AE11;HANGUL SYLLABLE GEUT;Lo;0;L;;;;;N;;;;;
+AE12;HANGUL SYLLABLE GEUP;Lo;0;L;;;;;N;;;;;
+AE13;HANGUL SYLLABLE GEUH;Lo;0;L;;;;;N;;;;;
+AE14;HANGUL SYLLABLE GYI;Lo;0;L;;;;;N;;;;;
+AE15;HANGUL SYLLABLE GYIG;Lo;0;L;;;;;N;;;;;
+AE16;HANGUL SYLLABLE GYIGG;Lo;0;L;;;;;N;;;;;
+AE17;HANGUL SYLLABLE GYIGS;Lo;0;L;;;;;N;;;;;
+AE18;HANGUL SYLLABLE GYIN;Lo;0;L;;;;;N;;;;;
+AE19;HANGUL SYLLABLE GYINI;Lo;0;L;;;;;N;;;;;
+AE1A;HANGUL SYLLABLE GYINH;Lo;0;L;;;;;N;;;;;
+AE1B;HANGUL SYLLABLE GYID;Lo;0;L;;;;;N;;;;;
+AE1C;HANGUL SYLLABLE GYIL;Lo;0;L;;;;;N;;;;;
+AE1D;HANGUL SYLLABLE GYILG;Lo;0;L;;;;;N;;;;;
+AE1E;HANGUL SYLLABLE GYILM;Lo;0;L;;;;;N;;;;;
+AE1F;HANGUL SYLLABLE GYILB;Lo;0;L;;;;;N;;;;;
+AE20;HANGUL SYLLABLE GYILS;Lo;0;L;;;;;N;;;;;
+AE21;HANGUL SYLLABLE GYILT;Lo;0;L;;;;;N;;;;;
+AE22;HANGUL SYLLABLE GYILP;Lo;0;L;;;;;N;;;;;
+AE23;HANGUL SYLLABLE GYILH;Lo;0;L;;;;;N;;;;;
+AE24;HANGUL SYLLABLE GYIM;Lo;0;L;;;;;N;;;;;
+AE25;HANGUL SYLLABLE GYIB;Lo;0;L;;;;;N;;;;;
+AE26;HANGUL SYLLABLE GYIBS;Lo;0;L;;;;;N;;;;;
+AE27;HANGUL SYLLABLE GYIS;Lo;0;L;;;;;N;;;;;
+AE28;HANGUL SYLLABLE GYISS;Lo;0;L;;;;;N;;;;;
+AE29;HANGUL SYLLABLE GYING;Lo;0;L;;;;;N;;;;;
+AE2A;HANGUL SYLLABLE GYIJ;Lo;0;L;;;;;N;;;;;
+AE2B;HANGUL SYLLABLE GYIC;Lo;0;L;;;;;N;;;;;
+AE2C;HANGUL SYLLABLE GYIK;Lo;0;L;;;;;N;;;;;
+AE2D;HANGUL SYLLABLE GYIT;Lo;0;L;;;;;N;;;;;
+AE2E;HANGUL SYLLABLE GYIP;Lo;0;L;;;;;N;;;;;
+AE2F;HANGUL SYLLABLE GYIH;Lo;0;L;;;;;N;;;;;
+AE30;HANGUL SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+AE31;HANGUL SYLLABLE GIG;Lo;0;L;;;;;N;;;;;
+AE32;HANGUL SYLLABLE GIGG;Lo;0;L;;;;;N;;;;;
+AE33;HANGUL SYLLABLE GIGS;Lo;0;L;;;;;N;;;;;
+AE34;HANGUL SYLLABLE GIN;Lo;0;L;;;;;N;;;;;
+AE35;HANGUL SYLLABLE GINI;Lo;0;L;;;;;N;;;;;
+AE36;HANGUL SYLLABLE GINH;Lo;0;L;;;;;N;;;;;
+AE37;HANGUL SYLLABLE GID;Lo;0;L;;;;;N;;;;;
+AE38;HANGUL SYLLABLE GIL;Lo;0;L;;;;;N;;;;;
+AE39;HANGUL SYLLABLE GILG;Lo;0;L;;;;;N;;;;;
+AE3A;HANGUL SYLLABLE GILM;Lo;0;L;;;;;N;;;;;
+AE3B;HANGUL SYLLABLE GILB;Lo;0;L;;;;;N;;;;;
+AE3C;HANGUL SYLLABLE GILS;Lo;0;L;;;;;N;;;;;
+AE3D;HANGUL SYLLABLE GILT;Lo;0;L;;;;;N;;;;;
+AE3E;HANGUL SYLLABLE GILP;Lo;0;L;;;;;N;;;;;
+AE3F;HANGUL SYLLABLE GILH;Lo;0;L;;;;;N;;;;;
+AE40;HANGUL SYLLABLE GIM;Lo;0;L;;;;;N;;;;;
+AE41;HANGUL SYLLABLE GIB;Lo;0;L;;;;;N;;;;;
+AE42;HANGUL SYLLABLE GIBS;Lo;0;L;;;;;N;;;;;
+AE43;HANGUL SYLLABLE GIS;Lo;0;L;;;;;N;;;;;
+AE44;HANGUL SYLLABLE GISS;Lo;0;L;;;;;N;;;;;
+AE45;HANGUL SYLLABLE GING;Lo;0;L;;;;;N;;;;;
+AE46;HANGUL SYLLABLE GIJ;Lo;0;L;;;;;N;;;;;
+AE47;HANGUL SYLLABLE GIC;Lo;0;L;;;;;N;;;;;
+AE48;HANGUL SYLLABLE GIK;Lo;0;L;;;;;N;;;;;
+AE49;HANGUL SYLLABLE GIT;Lo;0;L;;;;;N;;;;;
+AE4A;HANGUL SYLLABLE GIP;Lo;0;L;;;;;N;;;;;
+AE4B;HANGUL SYLLABLE GIH;Lo;0;L;;;;;N;;;;;
+AE4C;HANGUL SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+AE4D;HANGUL SYLLABLE GGAG;Lo;0;L;;;;;N;;;;;
+AE4E;HANGUL SYLLABLE GGAGG;Lo;0;L;;;;;N;;;;;
+AE4F;HANGUL SYLLABLE GGAGS;Lo;0;L;;;;;N;;;;;
+AE50;HANGUL SYLLABLE GGAN;Lo;0;L;;;;;N;;;;;
+AE51;HANGUL SYLLABLE GGANI;Lo;0;L;;;;;N;;;;;
+AE52;HANGUL SYLLABLE GGANH;Lo;0;L;;;;;N;;;;;
+AE53;HANGUL SYLLABLE GGAD;Lo;0;L;;;;;N;;;;;
+AE54;HANGUL SYLLABLE GGAL;Lo;0;L;;;;;N;;;;;
+AE55;HANGUL SYLLABLE GGALG;Lo;0;L;;;;;N;;;;;
+AE56;HANGUL SYLLABLE GGALM;Lo;0;L;;;;;N;;;;;
+AE57;HANGUL SYLLABLE GGALB;Lo;0;L;;;;;N;;;;;
+AE58;HANGUL SYLLABLE GGALS;Lo;0;L;;;;;N;;;;;
+AE59;HANGUL SYLLABLE GGALT;Lo;0;L;;;;;N;;;;;
+AE5A;HANGUL SYLLABLE GGALP;Lo;0;L;;;;;N;;;;;
+AE5B;HANGUL SYLLABLE GGALH;Lo;0;L;;;;;N;;;;;
+AE5C;HANGUL SYLLABLE GGAM;Lo;0;L;;;;;N;;;;;
+AE5D;HANGUL SYLLABLE GGAB;Lo;0;L;;;;;N;;;;;
+AE5E;HANGUL SYLLABLE GGABS;Lo;0;L;;;;;N;;;;;
+AE5F;HANGUL SYLLABLE GGAS;Lo;0;L;;;;;N;;;;;
+AE60;HANGUL SYLLABLE GGASS;Lo;0;L;;;;;N;;;;;
+AE61;HANGUL SYLLABLE GGANG;Lo;0;L;;;;;N;;;;;
+AE62;HANGUL SYLLABLE GGAJ;Lo;0;L;;;;;N;;;;;
+AE63;HANGUL SYLLABLE GGAC;Lo;0;L;;;;;N;;;;;
+AE64;HANGUL SYLLABLE GGAK;Lo;0;L;;;;;N;;;;;
+AE65;HANGUL SYLLABLE GGAT;Lo;0;L;;;;;N;;;;;
+AE66;HANGUL SYLLABLE GGAP;Lo;0;L;;;;;N;;;;;
+AE67;HANGUL SYLLABLE GGAH;Lo;0;L;;;;;N;;;;;
+AE68;HANGUL SYLLABLE GGAE;Lo;0;L;;;;;N;;;;;
+AE69;HANGUL SYLLABLE GGAEG;Lo;0;L;;;;;N;;;;;
+AE6A;HANGUL SYLLABLE GGAEGG;Lo;0;L;;;;;N;;;;;
+AE6B;HANGUL SYLLABLE GGAEGS;Lo;0;L;;;;;N;;;;;
+AE6C;HANGUL SYLLABLE GGAEN;Lo;0;L;;;;;N;;;;;
+AE6D;HANGUL SYLLABLE GGAENI;Lo;0;L;;;;;N;;;;;
+AE6E;HANGUL SYLLABLE GGAENH;Lo;0;L;;;;;N;;;;;
+AE6F;HANGUL SYLLABLE GGAED;Lo;0;L;;;;;N;;;;;
+AE70;HANGUL SYLLABLE GGAEL;Lo;0;L;;;;;N;;;;;
+AE71;HANGUL SYLLABLE GGAELG;Lo;0;L;;;;;N;;;;;
+AE72;HANGUL SYLLABLE GGAELM;Lo;0;L;;;;;N;;;;;
+AE73;HANGUL SYLLABLE GGAELB;Lo;0;L;;;;;N;;;;;
+AE74;HANGUL SYLLABLE GGAELS;Lo;0;L;;;;;N;;;;;
+AE75;HANGUL SYLLABLE GGAELT;Lo;0;L;;;;;N;;;;;
+AE76;HANGUL SYLLABLE GGAELP;Lo;0;L;;;;;N;;;;;
+AE77;HANGUL SYLLABLE GGAELH;Lo;0;L;;;;;N;;;;;
+AE78;HANGUL SYLLABLE GGAEM;Lo;0;L;;;;;N;;;;;
+AE79;HANGUL SYLLABLE GGAEB;Lo;0;L;;;;;N;;;;;
+AE7A;HANGUL SYLLABLE GGAEBS;Lo;0;L;;;;;N;;;;;
+AE7B;HANGUL SYLLABLE GGAES;Lo;0;L;;;;;N;;;;;
+AE7C;HANGUL SYLLABLE GGAESS;Lo;0;L;;;;;N;;;;;
+AE7D;HANGUL SYLLABLE GGAENG;Lo;0;L;;;;;N;;;;;
+AE7E;HANGUL SYLLABLE GGAEJ;Lo;0;L;;;;;N;;;;;
+AE7F;HANGUL SYLLABLE GGAEC;Lo;0;L;;;;;N;;;;;
+AE80;HANGUL SYLLABLE GGAEK;Lo;0;L;;;;;N;;;;;
+AE81;HANGUL SYLLABLE GGAET;Lo;0;L;;;;;N;;;;;
+AE82;HANGUL SYLLABLE GGAEP;Lo;0;L;;;;;N;;;;;
+AE83;HANGUL SYLLABLE GGAEH;Lo;0;L;;;;;N;;;;;
+AE84;HANGUL SYLLABLE GGYA;Lo;0;L;;;;;N;;;;;
+AE85;HANGUL SYLLABLE GGYAG;Lo;0;L;;;;;N;;;;;
+AE86;HANGUL SYLLABLE GGYAGG;Lo;0;L;;;;;N;;;;;
+AE87;HANGUL SYLLABLE GGYAGS;Lo;0;L;;;;;N;;;;;
+AE88;HANGUL SYLLABLE GGYAN;Lo;0;L;;;;;N;;;;;
+AE89;HANGUL SYLLABLE GGYANI;Lo;0;L;;;;;N;;;;;
+AE8A;HANGUL SYLLABLE GGYANH;Lo;0;L;;;;;N;;;;;
+AE8B;HANGUL SYLLABLE GGYAD;Lo;0;L;;;;;N;;;;;
+AE8C;HANGUL SYLLABLE GGYAL;Lo;0;L;;;;;N;;;;;
+AE8D;HANGUL SYLLABLE GGYALG;Lo;0;L;;;;;N;;;;;
+AE8E;HANGUL SYLLABLE GGYALM;Lo;0;L;;;;;N;;;;;
+AE8F;HANGUL SYLLABLE GGYALB;Lo;0;L;;;;;N;;;;;
+AE90;HANGUL SYLLABLE GGYALS;Lo;0;L;;;;;N;;;;;
+AE91;HANGUL SYLLABLE GGYALT;Lo;0;L;;;;;N;;;;;
+AE92;HANGUL SYLLABLE GGYALP;Lo;0;L;;;;;N;;;;;
+AE93;HANGUL SYLLABLE GGYALH;Lo;0;L;;;;;N;;;;;
+AE94;HANGUL SYLLABLE GGYAM;Lo;0;L;;;;;N;;;;;
+AE95;HANGUL SYLLABLE GGYAB;Lo;0;L;;;;;N;;;;;
+AE96;HANGUL SYLLABLE GGYABS;Lo;0;L;;;;;N;;;;;
+AE97;HANGUL SYLLABLE GGYAS;Lo;0;L;;;;;N;;;;;
+AE98;HANGUL SYLLABLE GGYASS;Lo;0;L;;;;;N;;;;;
+AE99;HANGUL SYLLABLE GGYANG;Lo;0;L;;;;;N;;;;;
+AE9A;HANGUL SYLLABLE GGYAJ;Lo;0;L;;;;;N;;;;;
+AE9B;HANGUL SYLLABLE GGYAC;Lo;0;L;;;;;N;;;;;
+AE9C;HANGUL SYLLABLE GGYAK;Lo;0;L;;;;;N;;;;;
+AE9D;HANGUL SYLLABLE GGYAT;Lo;0;L;;;;;N;;;;;
+AE9E;HANGUL SYLLABLE GGYAP;Lo;0;L;;;;;N;;;;;
+AE9F;HANGUL SYLLABLE GGYAH;Lo;0;L;;;;;N;;;;;
+AEA0;HANGUL SYLLABLE GGYAE;Lo;0;L;;;;;N;;;;;
+AEA1;HANGUL SYLLABLE GGYAEG;Lo;0;L;;;;;N;;;;;
+AEA2;HANGUL SYLLABLE GGYAEGG;Lo;0;L;;;;;N;;;;;
+AEA3;HANGUL SYLLABLE GGYAEGS;Lo;0;L;;;;;N;;;;;
+AEA4;HANGUL SYLLABLE GGYAEN;Lo;0;L;;;;;N;;;;;
+AEA5;HANGUL SYLLABLE GGYAENI;Lo;0;L;;;;;N;;;;;
+AEA6;HANGUL SYLLABLE GGYAENH;Lo;0;L;;;;;N;;;;;
+AEA7;HANGUL SYLLABLE GGYAED;Lo;0;L;;;;;N;;;;;
+AEA8;HANGUL SYLLABLE GGYAEL;Lo;0;L;;;;;N;;;;;
+AEA9;HANGUL SYLLABLE GGYAELG;Lo;0;L;;;;;N;;;;;
+AEAA;HANGUL SYLLABLE GGYAELM;Lo;0;L;;;;;N;;;;;
+AEAB;HANGUL SYLLABLE GGYAELB;Lo;0;L;;;;;N;;;;;
+AEAC;HANGUL SYLLABLE GGYAELS;Lo;0;L;;;;;N;;;;;
+AEAD;HANGUL SYLLABLE GGYAELT;Lo;0;L;;;;;N;;;;;
+AEAE;HANGUL SYLLABLE GGYAELP;Lo;0;L;;;;;N;;;;;
+AEAF;HANGUL SYLLABLE GGYAELH;Lo;0;L;;;;;N;;;;;
+AEB0;HANGUL SYLLABLE GGYAEM;Lo;0;L;;;;;N;;;;;
+AEB1;HANGUL SYLLABLE GGYAEB;Lo;0;L;;;;;N;;;;;
+AEB2;HANGUL SYLLABLE GGYAEBS;Lo;0;L;;;;;N;;;;;
+AEB3;HANGUL SYLLABLE GGYAES;Lo;0;L;;;;;N;;;;;
+AEB4;HANGUL SYLLABLE GGYAESS;Lo;0;L;;;;;N;;;;;
+AEB5;HANGUL SYLLABLE GGYAENG;Lo;0;L;;;;;N;;;;;
+AEB6;HANGUL SYLLABLE GGYAEJ;Lo;0;L;;;;;N;;;;;
+AEB7;HANGUL SYLLABLE GGYAEC;Lo;0;L;;;;;N;;;;;
+AEB8;HANGUL SYLLABLE GGYAEK;Lo;0;L;;;;;N;;;;;
+AEB9;HANGUL SYLLABLE GGYAET;Lo;0;L;;;;;N;;;;;
+AEBA;HANGUL SYLLABLE GGYAEP;Lo;0;L;;;;;N;;;;;
+AEBB;HANGUL SYLLABLE GGYAEH;Lo;0;L;;;;;N;;;;;
+AEBC;HANGUL SYLLABLE GGEO;Lo;0;L;;;;;N;;;;;
+AEBD;HANGUL SYLLABLE GGEOG;Lo;0;L;;;;;N;;;;;
+AEBE;HANGUL SYLLABLE GGEOGG;Lo;0;L;;;;;N;;;;;
+AEBF;HANGUL SYLLABLE GGEOGS;Lo;0;L;;;;;N;;;;;
+AEC0;HANGUL SYLLABLE GGEON;Lo;0;L;;;;;N;;;;;
+AEC1;HANGUL SYLLABLE GGEONI;Lo;0;L;;;;;N;;;;;
+AEC2;HANGUL SYLLABLE GGEONH;Lo;0;L;;;;;N;;;;;
+AEC3;HANGUL SYLLABLE GGEOD;Lo;0;L;;;;;N;;;;;
+AEC4;HANGUL SYLLABLE GGEOL;Lo;0;L;;;;;N;;;;;
+AEC5;HANGUL SYLLABLE GGEOLG;Lo;0;L;;;;;N;;;;;
+AEC6;HANGUL SYLLABLE GGEOLM;Lo;0;L;;;;;N;;;;;
+AEC7;HANGUL SYLLABLE GGEOLB;Lo;0;L;;;;;N;;;;;
+AEC8;HANGUL SYLLABLE GGEOLS;Lo;0;L;;;;;N;;;;;
+AEC9;HANGUL SYLLABLE GGEOLT;Lo;0;L;;;;;N;;;;;
+AECA;HANGUL SYLLABLE GGEOLP;Lo;0;L;;;;;N;;;;;
+AECB;HANGUL SYLLABLE GGEOLH;Lo;0;L;;;;;N;;;;;
+AECC;HANGUL SYLLABLE GGEOM;Lo;0;L;;;;;N;;;;;
+AECD;HANGUL SYLLABLE GGEOB;Lo;0;L;;;;;N;;;;;
+AECE;HANGUL SYLLABLE GGEOBS;Lo;0;L;;;;;N;;;;;
+AECF;HANGUL SYLLABLE GGEOS;Lo;0;L;;;;;N;;;;;
+AED0;HANGUL SYLLABLE GGEOSS;Lo;0;L;;;;;N;;;;;
+AED1;HANGUL SYLLABLE GGEONG;Lo;0;L;;;;;N;;;;;
+AED2;HANGUL SYLLABLE GGEOJ;Lo;0;L;;;;;N;;;;;
+AED3;HANGUL SYLLABLE GGEOC;Lo;0;L;;;;;N;;;;;
+AED4;HANGUL SYLLABLE GGEOK;Lo;0;L;;;;;N;;;;;
+AED5;HANGUL SYLLABLE GGEOT;Lo;0;L;;;;;N;;;;;
+AED6;HANGUL SYLLABLE GGEOP;Lo;0;L;;;;;N;;;;;
+AED7;HANGUL SYLLABLE GGEOH;Lo;0;L;;;;;N;;;;;
+AED8;HANGUL SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+AED9;HANGUL SYLLABLE GGEG;Lo;0;L;;;;;N;;;;;
+AEDA;HANGUL SYLLABLE GGEGG;Lo;0;L;;;;;N;;;;;
+AEDB;HANGUL SYLLABLE GGEGS;Lo;0;L;;;;;N;;;;;
+AEDC;HANGUL SYLLABLE GGEN;Lo;0;L;;;;;N;;;;;
+AEDD;HANGUL SYLLABLE GGENI;Lo;0;L;;;;;N;;;;;
+AEDE;HANGUL SYLLABLE GGENH;Lo;0;L;;;;;N;;;;;
+AEDF;HANGUL SYLLABLE GGED;Lo;0;L;;;;;N;;;;;
+AEE0;HANGUL SYLLABLE GGEL;Lo;0;L;;;;;N;;;;;
+AEE1;HANGUL SYLLABLE GGELG;Lo;0;L;;;;;N;;;;;
+AEE2;HANGUL SYLLABLE GGELM;Lo;0;L;;;;;N;;;;;
+AEE3;HANGUL SYLLABLE GGELB;Lo;0;L;;;;;N;;;;;
+AEE4;HANGUL SYLLABLE GGELS;Lo;0;L;;;;;N;;;;;
+AEE5;HANGUL SYLLABLE GGELT;Lo;0;L;;;;;N;;;;;
+AEE6;HANGUL SYLLABLE GGELP;Lo;0;L;;;;;N;;;;;
+AEE7;HANGUL SYLLABLE GGELH;Lo;0;L;;;;;N;;;;;
+AEE8;HANGUL SYLLABLE GGEM;Lo;0;L;;;;;N;;;;;
+AEE9;HANGUL SYLLABLE GGEB;Lo;0;L;;;;;N;;;;;
+AEEA;HANGUL SYLLABLE GGEBS;Lo;0;L;;;;;N;;;;;
+AEEB;HANGUL SYLLABLE GGES;Lo;0;L;;;;;N;;;;;
+AEEC;HANGUL SYLLABLE GGESS;Lo;0;L;;;;;N;;;;;
+AEED;HANGUL SYLLABLE GGENG;Lo;0;L;;;;;N;;;;;
+AEEE;HANGUL SYLLABLE GGEJ;Lo;0;L;;;;;N;;;;;
+AEEF;HANGUL SYLLABLE GGEC;Lo;0;L;;;;;N;;;;;
+AEF0;HANGUL SYLLABLE GGEK;Lo;0;L;;;;;N;;;;;
+AEF1;HANGUL SYLLABLE GGET;Lo;0;L;;;;;N;;;;;
+AEF2;HANGUL SYLLABLE GGEP;Lo;0;L;;;;;N;;;;;
+AEF3;HANGUL SYLLABLE GGEH;Lo;0;L;;;;;N;;;;;
+AEF4;HANGUL SYLLABLE GGYEO;Lo;0;L;;;;;N;;;;;
+AEF5;HANGUL SYLLABLE GGYEOG;Lo;0;L;;;;;N;;;;;
+AEF6;HANGUL SYLLABLE GGYEOGG;Lo;0;L;;;;;N;;;;;
+AEF7;HANGUL SYLLABLE GGYEOGS;Lo;0;L;;;;;N;;;;;
+AEF8;HANGUL SYLLABLE GGYEON;Lo;0;L;;;;;N;;;;;
+AEF9;HANGUL SYLLABLE GGYEONI;Lo;0;L;;;;;N;;;;;
+AEFA;HANGUL SYLLABLE GGYEONH;Lo;0;L;;;;;N;;;;;
+AEFB;HANGUL SYLLABLE GGYEOD;Lo;0;L;;;;;N;;;;;
+AEFC;HANGUL SYLLABLE GGYEOL;Lo;0;L;;;;;N;;;;;
+AEFD;HANGUL SYLLABLE GGYEOLG;Lo;0;L;;;;;N;;;;;
+AEFE;HANGUL SYLLABLE GGYEOLM;Lo;0;L;;;;;N;;;;;
+AEFF;HANGUL SYLLABLE GGYEOLB;Lo;0;L;;;;;N;;;;;
+AF00;HANGUL SYLLABLE GGYEOLS;Lo;0;L;;;;;N;;;;;
+AF01;HANGUL SYLLABLE GGYEOLT;Lo;0;L;;;;;N;;;;;
+AF02;HANGUL SYLLABLE GGYEOLP;Lo;0;L;;;;;N;;;;;
+AF03;HANGUL SYLLABLE GGYEOLH;Lo;0;L;;;;;N;;;;;
+AF04;HANGUL SYLLABLE GGYEOM;Lo;0;L;;;;;N;;;;;
+AF05;HANGUL SYLLABLE GGYEOB;Lo;0;L;;;;;N;;;;;
+AF06;HANGUL SYLLABLE GGYEOBS;Lo;0;L;;;;;N;;;;;
+AF07;HANGUL SYLLABLE GGYEOS;Lo;0;L;;;;;N;;;;;
+AF08;HANGUL SYLLABLE GGYEOSS;Lo;0;L;;;;;N;;;;;
+AF09;HANGUL SYLLABLE GGYEONG;Lo;0;L;;;;;N;;;;;
+AF0A;HANGUL SYLLABLE GGYEOJ;Lo;0;L;;;;;N;;;;;
+AF0B;HANGUL SYLLABLE GGYEOC;Lo;0;L;;;;;N;;;;;
+AF0C;HANGUL SYLLABLE GGYEOK;Lo;0;L;;;;;N;;;;;
+AF0D;HANGUL SYLLABLE GGYEOT;Lo;0;L;;;;;N;;;;;
+AF0E;HANGUL SYLLABLE GGYEOP;Lo;0;L;;;;;N;;;;;
+AF0F;HANGUL SYLLABLE GGYEOH;Lo;0;L;;;;;N;;;;;
+AF10;HANGUL SYLLABLE GGYE;Lo;0;L;;;;;N;;;;;
+AF11;HANGUL SYLLABLE GGYEG;Lo;0;L;;;;;N;;;;;
+AF12;HANGUL SYLLABLE GGYEGG;Lo;0;L;;;;;N;;;;;
+AF13;HANGUL SYLLABLE GGYEGS;Lo;0;L;;;;;N;;;;;
+AF14;HANGUL SYLLABLE GGYEN;Lo;0;L;;;;;N;;;;;
+AF15;HANGUL SYLLABLE GGYENI;Lo;0;L;;;;;N;;;;;
+AF16;HANGUL SYLLABLE GGYENH;Lo;0;L;;;;;N;;;;;
+AF17;HANGUL SYLLABLE GGYED;Lo;0;L;;;;;N;;;;;
+AF18;HANGUL SYLLABLE GGYEL;Lo;0;L;;;;;N;;;;;
+AF19;HANGUL SYLLABLE GGYELG;Lo;0;L;;;;;N;;;;;
+AF1A;HANGUL SYLLABLE GGYELM;Lo;0;L;;;;;N;;;;;
+AF1B;HANGUL SYLLABLE GGYELB;Lo;0;L;;;;;N;;;;;
+AF1C;HANGUL SYLLABLE GGYELS;Lo;0;L;;;;;N;;;;;
+AF1D;HANGUL SYLLABLE GGYELT;Lo;0;L;;;;;N;;;;;
+AF1E;HANGUL SYLLABLE GGYELP;Lo;0;L;;;;;N;;;;;
+AF1F;HANGUL SYLLABLE GGYELH;Lo;0;L;;;;;N;;;;;
+AF20;HANGUL SYLLABLE GGYEM;Lo;0;L;;;;;N;;;;;
+AF21;HANGUL SYLLABLE GGYEB;Lo;0;L;;;;;N;;;;;
+AF22;HANGUL SYLLABLE GGYEBS;Lo;0;L;;;;;N;;;;;
+AF23;HANGUL SYLLABLE GGYES;Lo;0;L;;;;;N;;;;;
+AF24;HANGUL SYLLABLE GGYESS;Lo;0;L;;;;;N;;;;;
+AF25;HANGUL SYLLABLE GGYENG;Lo;0;L;;;;;N;;;;;
+AF26;HANGUL SYLLABLE GGYEJ;Lo;0;L;;;;;N;;;;;
+AF27;HANGUL SYLLABLE GGYEC;Lo;0;L;;;;;N;;;;;
+AF28;HANGUL SYLLABLE GGYEK;Lo;0;L;;;;;N;;;;;
+AF29;HANGUL SYLLABLE GGYET;Lo;0;L;;;;;N;;;;;
+AF2A;HANGUL SYLLABLE GGYEP;Lo;0;L;;;;;N;;;;;
+AF2B;HANGUL SYLLABLE GGYEH;Lo;0;L;;;;;N;;;;;
+AF2C;HANGUL SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+AF2D;HANGUL SYLLABLE GGOG;Lo;0;L;;;;;N;;;;;
+AF2E;HANGUL SYLLABLE GGOGG;Lo;0;L;;;;;N;;;;;
+AF2F;HANGUL SYLLABLE GGOGS;Lo;0;L;;;;;N;;;;;
+AF30;HANGUL SYLLABLE GGON;Lo;0;L;;;;;N;;;;;
+AF31;HANGUL SYLLABLE GGONI;Lo;0;L;;;;;N;;;;;
+AF32;HANGUL SYLLABLE GGONH;Lo;0;L;;;;;N;;;;;
+AF33;HANGUL SYLLABLE GGOD;Lo;0;L;;;;;N;;;;;
+AF34;HANGUL SYLLABLE GGOL;Lo;0;L;;;;;N;;;;;
+AF35;HANGUL SYLLABLE GGOLG;Lo;0;L;;;;;N;;;;;
+AF36;HANGUL SYLLABLE GGOLM;Lo;0;L;;;;;N;;;;;
+AF37;HANGUL SYLLABLE GGOLB;Lo;0;L;;;;;N;;;;;
+AF38;HANGUL SYLLABLE GGOLS;Lo;0;L;;;;;N;;;;;
+AF39;HANGUL SYLLABLE GGOLT;Lo;0;L;;;;;N;;;;;
+AF3A;HANGUL SYLLABLE GGOLP;Lo;0;L;;;;;N;;;;;
+AF3B;HANGUL SYLLABLE GGOLH;Lo;0;L;;;;;N;;;;;
+AF3C;HANGUL SYLLABLE GGOM;Lo;0;L;;;;;N;;;;;
+AF3D;HANGUL SYLLABLE GGOB;Lo;0;L;;;;;N;;;;;
+AF3E;HANGUL SYLLABLE GGOBS;Lo;0;L;;;;;N;;;;;
+AF3F;HANGUL SYLLABLE GGOS;Lo;0;L;;;;;N;;;;;
+AF40;HANGUL SYLLABLE GGOSS;Lo;0;L;;;;;N;;;;;
+AF41;HANGUL SYLLABLE GGONG;Lo;0;L;;;;;N;;;;;
+AF42;HANGUL SYLLABLE GGOJ;Lo;0;L;;;;;N;;;;;
+AF43;HANGUL SYLLABLE GGOC;Lo;0;L;;;;;N;;;;;
+AF44;HANGUL SYLLABLE GGOK;Lo;0;L;;;;;N;;;;;
+AF45;HANGUL SYLLABLE GGOT;Lo;0;L;;;;;N;;;;;
+AF46;HANGUL SYLLABLE GGOP;Lo;0;L;;;;;N;;;;;
+AF47;HANGUL SYLLABLE GGOH;Lo;0;L;;;;;N;;;;;
+AF48;HANGUL SYLLABLE GGWA;Lo;0;L;;;;;N;;;;;
+AF49;HANGUL SYLLABLE GGWAG;Lo;0;L;;;;;N;;;;;
+AF4A;HANGUL SYLLABLE GGWAGG;Lo;0;L;;;;;N;;;;;
+AF4B;HANGUL SYLLABLE GGWAGS;Lo;0;L;;;;;N;;;;;
+AF4C;HANGUL SYLLABLE GGWAN;Lo;0;L;;;;;N;;;;;
+AF4D;HANGUL SYLLABLE GGWANI;Lo;0;L;;;;;N;;;;;
+AF4E;HANGUL SYLLABLE GGWANH;Lo;0;L;;;;;N;;;;;
+AF4F;HANGUL SYLLABLE GGWAD;Lo;0;L;;;;;N;;;;;
+AF50;HANGUL SYLLABLE GGWAL;Lo;0;L;;;;;N;;;;;
+AF51;HANGUL SYLLABLE GGWALG;Lo;0;L;;;;;N;;;;;
+AF52;HANGUL SYLLABLE GGWALM;Lo;0;L;;;;;N;;;;;
+AF53;HANGUL SYLLABLE GGWALB;Lo;0;L;;;;;N;;;;;
+AF54;HANGUL SYLLABLE GGWALS;Lo;0;L;;;;;N;;;;;
+AF55;HANGUL SYLLABLE GGWALT;Lo;0;L;;;;;N;;;;;
+AF56;HANGUL SYLLABLE GGWALP;Lo;0;L;;;;;N;;;;;
+AF57;HANGUL SYLLABLE GGWALH;Lo;0;L;;;;;N;;;;;
+AF58;HANGUL SYLLABLE GGWAM;Lo;0;L;;;;;N;;;;;
+AF59;HANGUL SYLLABLE GGWAB;Lo;0;L;;;;;N;;;;;
+AF5A;HANGUL SYLLABLE GGWABS;Lo;0;L;;;;;N;;;;;
+AF5B;HANGUL SYLLABLE GGWAS;Lo;0;L;;;;;N;;;;;
+AF5C;HANGUL SYLLABLE GGWASS;Lo;0;L;;;;;N;;;;;
+AF5D;HANGUL SYLLABLE GGWANG;Lo;0;L;;;;;N;;;;;
+AF5E;HANGUL SYLLABLE GGWAJ;Lo;0;L;;;;;N;;;;;
+AF5F;HANGUL SYLLABLE GGWAC;Lo;0;L;;;;;N;;;;;
+AF60;HANGUL SYLLABLE GGWAK;Lo;0;L;;;;;N;;;;;
+AF61;HANGUL SYLLABLE GGWAT;Lo;0;L;;;;;N;;;;;
+AF62;HANGUL SYLLABLE GGWAP;Lo;0;L;;;;;N;;;;;
+AF63;HANGUL SYLLABLE GGWAH;Lo;0;L;;;;;N;;;;;
+AF64;HANGUL SYLLABLE GGWAE;Lo;0;L;;;;;N;;;;;
+AF65;HANGUL SYLLABLE GGWAEG;Lo;0;L;;;;;N;;;;;
+AF66;HANGUL SYLLABLE GGWAEGG;Lo;0;L;;;;;N;;;;;
+AF67;HANGUL SYLLABLE GGWAEGS;Lo;0;L;;;;;N;;;;;
+AF68;HANGUL SYLLABLE GGWAEN;Lo;0;L;;;;;N;;;;;
+AF69;HANGUL SYLLABLE GGWAENI;Lo;0;L;;;;;N;;;;;
+AF6A;HANGUL SYLLABLE GGWAENH;Lo;0;L;;;;;N;;;;;
+AF6B;HANGUL SYLLABLE GGWAED;Lo;0;L;;;;;N;;;;;
+AF6C;HANGUL SYLLABLE GGWAEL;Lo;0;L;;;;;N;;;;;
+AF6D;HANGUL SYLLABLE GGWAELG;Lo;0;L;;;;;N;;;;;
+AF6E;HANGUL SYLLABLE GGWAELM;Lo;0;L;;;;;N;;;;;
+AF6F;HANGUL SYLLABLE GGWAELB;Lo;0;L;;;;;N;;;;;
+AF70;HANGUL SYLLABLE GGWAELS;Lo;0;L;;;;;N;;;;;
+AF71;HANGUL SYLLABLE GGWAELT;Lo;0;L;;;;;N;;;;;
+AF72;HANGUL SYLLABLE GGWAELP;Lo;0;L;;;;;N;;;;;
+AF73;HANGUL SYLLABLE GGWAELH;Lo;0;L;;;;;N;;;;;
+AF74;HANGUL SYLLABLE GGWAEM;Lo;0;L;;;;;N;;;;;
+AF75;HANGUL SYLLABLE GGWAEB;Lo;0;L;;;;;N;;;;;
+AF76;HANGUL SYLLABLE GGWAEBS;Lo;0;L;;;;;N;;;;;
+AF77;HANGUL SYLLABLE GGWAES;Lo;0;L;;;;;N;;;;;
+AF78;HANGUL SYLLABLE GGWAESS;Lo;0;L;;;;;N;;;;;
+AF79;HANGUL SYLLABLE GGWAENG;Lo;0;L;;;;;N;;;;;
+AF7A;HANGUL SYLLABLE GGWAEJ;Lo;0;L;;;;;N;;;;;
+AF7B;HANGUL SYLLABLE GGWAEC;Lo;0;L;;;;;N;;;;;
+AF7C;HANGUL SYLLABLE GGWAEK;Lo;0;L;;;;;N;;;;;
+AF7D;HANGUL SYLLABLE GGWAET;Lo;0;L;;;;;N;;;;;
+AF7E;HANGUL SYLLABLE GGWAEP;Lo;0;L;;;;;N;;;;;
+AF7F;HANGUL SYLLABLE GGWAEH;Lo;0;L;;;;;N;;;;;
+AF80;HANGUL SYLLABLE GGOE;Lo;0;L;;;;;N;;;;;
+AF81;HANGUL SYLLABLE GGOEG;Lo;0;L;;;;;N;;;;;
+AF82;HANGUL SYLLABLE GGOEGG;Lo;0;L;;;;;N;;;;;
+AF83;HANGUL SYLLABLE GGOEGS;Lo;0;L;;;;;N;;;;;
+AF84;HANGUL SYLLABLE GGOEN;Lo;0;L;;;;;N;;;;;
+AF85;HANGUL SYLLABLE GGOENI;Lo;0;L;;;;;N;;;;;
+AF86;HANGUL SYLLABLE GGOENH;Lo;0;L;;;;;N;;;;;
+AF87;HANGUL SYLLABLE GGOED;Lo;0;L;;;;;N;;;;;
+AF88;HANGUL SYLLABLE GGOEL;Lo;0;L;;;;;N;;;;;
+AF89;HANGUL SYLLABLE GGOELG;Lo;0;L;;;;;N;;;;;
+AF8A;HANGUL SYLLABLE GGOELM;Lo;0;L;;;;;N;;;;;
+AF8B;HANGUL SYLLABLE GGOELB;Lo;0;L;;;;;N;;;;;
+AF8C;HANGUL SYLLABLE GGOELS;Lo;0;L;;;;;N;;;;;
+AF8D;HANGUL SYLLABLE GGOELT;Lo;0;L;;;;;N;;;;;
+AF8E;HANGUL SYLLABLE GGOELP;Lo;0;L;;;;;N;;;;;
+AF8F;HANGUL SYLLABLE GGOELH;Lo;0;L;;;;;N;;;;;
+AF90;HANGUL SYLLABLE GGOEM;Lo;0;L;;;;;N;;;;;
+AF91;HANGUL SYLLABLE GGOEB;Lo;0;L;;;;;N;;;;;
+AF92;HANGUL SYLLABLE GGOEBS;Lo;0;L;;;;;N;;;;;
+AF93;HANGUL SYLLABLE GGOES;Lo;0;L;;;;;N;;;;;
+AF94;HANGUL SYLLABLE GGOESS;Lo;0;L;;;;;N;;;;;
+AF95;HANGUL SYLLABLE GGOENG;Lo;0;L;;;;;N;;;;;
+AF96;HANGUL SYLLABLE GGOEJ;Lo;0;L;;;;;N;;;;;
+AF97;HANGUL SYLLABLE GGOEC;Lo;0;L;;;;;N;;;;;
+AF98;HANGUL SYLLABLE GGOEK;Lo;0;L;;;;;N;;;;;
+AF99;HANGUL SYLLABLE GGOET;Lo;0;L;;;;;N;;;;;
+AF9A;HANGUL SYLLABLE GGOEP;Lo;0;L;;;;;N;;;;;
+AF9B;HANGUL SYLLABLE GGOEH;Lo;0;L;;;;;N;;;;;
+AF9C;HANGUL SYLLABLE GGYO;Lo;0;L;;;;;N;;;;;
+AF9D;HANGUL SYLLABLE GGYOG;Lo;0;L;;;;;N;;;;;
+AF9E;HANGUL SYLLABLE GGYOGG;Lo;0;L;;;;;N;;;;;
+AF9F;HANGUL SYLLABLE GGYOGS;Lo;0;L;;;;;N;;;;;
+AFA0;HANGUL SYLLABLE GGYON;Lo;0;L;;;;;N;;;;;
+AFA1;HANGUL SYLLABLE GGYONI;Lo;0;L;;;;;N;;;;;
+AFA2;HANGUL SYLLABLE GGYONH;Lo;0;L;;;;;N;;;;;
+AFA3;HANGUL SYLLABLE GGYOD;Lo;0;L;;;;;N;;;;;
+AFA4;HANGUL SYLLABLE GGYOL;Lo;0;L;;;;;N;;;;;
+AFA5;HANGUL SYLLABLE GGYOLG;Lo;0;L;;;;;N;;;;;
+AFA6;HANGUL SYLLABLE GGYOLM;Lo;0;L;;;;;N;;;;;
+AFA7;HANGUL SYLLABLE GGYOLB;Lo;0;L;;;;;N;;;;;
+AFA8;HANGUL SYLLABLE GGYOLS;Lo;0;L;;;;;N;;;;;
+AFA9;HANGUL SYLLABLE GGYOLT;Lo;0;L;;;;;N;;;;;
+AFAA;HANGUL SYLLABLE GGYOLP;Lo;0;L;;;;;N;;;;;
+AFAB;HANGUL SYLLABLE GGYOLH;Lo;0;L;;;;;N;;;;;
+AFAC;HANGUL SYLLABLE GGYOM;Lo;0;L;;;;;N;;;;;
+AFAD;HANGUL SYLLABLE GGYOB;Lo;0;L;;;;;N;;;;;
+AFAE;HANGUL SYLLABLE GGYOBS;Lo;0;L;;;;;N;;;;;
+AFAF;HANGUL SYLLABLE GGYOS;Lo;0;L;;;;;N;;;;;
+AFB0;HANGUL SYLLABLE GGYOSS;Lo;0;L;;;;;N;;;;;
+AFB1;HANGUL SYLLABLE GGYONG;Lo;0;L;;;;;N;;;;;
+AFB2;HANGUL SYLLABLE GGYOJ;Lo;0;L;;;;;N;;;;;
+AFB3;HANGUL SYLLABLE GGYOC;Lo;0;L;;;;;N;;;;;
+AFB4;HANGUL SYLLABLE GGYOK;Lo;0;L;;;;;N;;;;;
+AFB5;HANGUL SYLLABLE GGYOT;Lo;0;L;;;;;N;;;;;
+AFB6;HANGUL SYLLABLE GGYOP;Lo;0;L;;;;;N;;;;;
+AFB7;HANGUL SYLLABLE GGYOH;Lo;0;L;;;;;N;;;;;
+AFB8;HANGUL SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+AFB9;HANGUL SYLLABLE GGUG;Lo;0;L;;;;;N;;;;;
+AFBA;HANGUL SYLLABLE GGUGG;Lo;0;L;;;;;N;;;;;
+AFBB;HANGUL SYLLABLE GGUGS;Lo;0;L;;;;;N;;;;;
+AFBC;HANGUL SYLLABLE GGUN;Lo;0;L;;;;;N;;;;;
+AFBD;HANGUL SYLLABLE GGUNI;Lo;0;L;;;;;N;;;;;
+AFBE;HANGUL SYLLABLE GGUNH;Lo;0;L;;;;;N;;;;;
+AFBF;HANGUL SYLLABLE GGUD;Lo;0;L;;;;;N;;;;;
+AFC0;HANGUL SYLLABLE GGUL;Lo;0;L;;;;;N;;;;;
+AFC1;HANGUL SYLLABLE GGULG;Lo;0;L;;;;;N;;;;;
+AFC2;HANGUL SYLLABLE GGULM;Lo;0;L;;;;;N;;;;;
+AFC3;HANGUL SYLLABLE GGULB;Lo;0;L;;;;;N;;;;;
+AFC4;HANGUL SYLLABLE GGULS;Lo;0;L;;;;;N;;;;;
+AFC5;HANGUL SYLLABLE GGULT;Lo;0;L;;;;;N;;;;;
+AFC6;HANGUL SYLLABLE GGULP;Lo;0;L;;;;;N;;;;;
+AFC7;HANGUL SYLLABLE GGULH;Lo;0;L;;;;;N;;;;;
+AFC8;HANGUL SYLLABLE GGUM;Lo;0;L;;;;;N;;;;;
+AFC9;HANGUL SYLLABLE GGUB;Lo;0;L;;;;;N;;;;;
+AFCA;HANGUL SYLLABLE GGUBS;Lo;0;L;;;;;N;;;;;
+AFCB;HANGUL SYLLABLE GGUS;Lo;0;L;;;;;N;;;;;
+AFCC;HANGUL SYLLABLE GGUSS;Lo;0;L;;;;;N;;;;;
+AFCD;HANGUL SYLLABLE GGUNG;Lo;0;L;;;;;N;;;;;
+AFCE;HANGUL SYLLABLE GGUJ;Lo;0;L;;;;;N;;;;;
+AFCF;HANGUL SYLLABLE GGUC;Lo;0;L;;;;;N;;;;;
+AFD0;HANGUL SYLLABLE GGUK;Lo;0;L;;;;;N;;;;;
+AFD1;HANGUL SYLLABLE GGUT;Lo;0;L;;;;;N;;;;;
+AFD2;HANGUL SYLLABLE GGUP;Lo;0;L;;;;;N;;;;;
+AFD3;HANGUL SYLLABLE GGUH;Lo;0;L;;;;;N;;;;;
+AFD4;HANGUL SYLLABLE GGWEO;Lo;0;L;;;;;N;;;;;
+AFD5;HANGUL SYLLABLE GGWEOG;Lo;0;L;;;;;N;;;;;
+AFD6;HANGUL SYLLABLE GGWEOGG;Lo;0;L;;;;;N;;;;;
+AFD7;HANGUL SYLLABLE GGWEOGS;Lo;0;L;;;;;N;;;;;
+AFD8;HANGUL SYLLABLE GGWEON;Lo;0;L;;;;;N;;;;;
+AFD9;HANGUL SYLLABLE GGWEONI;Lo;0;L;;;;;N;;;;;
+AFDA;HANGUL SYLLABLE GGWEONH;Lo;0;L;;;;;N;;;;;
+AFDB;HANGUL SYLLABLE GGWEOD;Lo;0;L;;;;;N;;;;;
+AFDC;HANGUL SYLLABLE GGWEOL;Lo;0;L;;;;;N;;;;;
+AFDD;HANGUL SYLLABLE GGWEOLG;Lo;0;L;;;;;N;;;;;
+AFDE;HANGUL SYLLABLE GGWEOLM;Lo;0;L;;;;;N;;;;;
+AFDF;HANGUL SYLLABLE GGWEOLB;Lo;0;L;;;;;N;;;;;
+AFE0;HANGUL SYLLABLE GGWEOLS;Lo;0;L;;;;;N;;;;;
+AFE1;HANGUL SYLLABLE GGWEOLT;Lo;0;L;;;;;N;;;;;
+AFE2;HANGUL SYLLABLE GGWEOLP;Lo;0;L;;;;;N;;;;;
+AFE3;HANGUL SYLLABLE GGWEOLH;Lo;0;L;;;;;N;;;;;
+AFE4;HANGUL SYLLABLE GGWEOM;Lo;0;L;;;;;N;;;;;
+AFE5;HANGUL SYLLABLE GGWEOB;Lo;0;L;;;;;N;;;;;
+AFE6;HANGUL SYLLABLE GGWEOBS;Lo;0;L;;;;;N;;;;;
+AFE7;HANGUL SYLLABLE GGWEOS;Lo;0;L;;;;;N;;;;;
+AFE8;HANGUL SYLLABLE GGWEOSS;Lo;0;L;;;;;N;;;;;
+AFE9;HANGUL SYLLABLE GGWEONG;Lo;0;L;;;;;N;;;;;
+AFEA;HANGUL SYLLABLE GGWEOJ;Lo;0;L;;;;;N;;;;;
+AFEB;HANGUL SYLLABLE GGWEOC;Lo;0;L;;;;;N;;;;;
+AFEC;HANGUL SYLLABLE GGWEOK;Lo;0;L;;;;;N;;;;;
+AFED;HANGUL SYLLABLE GGWEOT;Lo;0;L;;;;;N;;;;;
+AFEE;HANGUL SYLLABLE GGWEOP;Lo;0;L;;;;;N;;;;;
+AFEF;HANGUL SYLLABLE GGWEOH;Lo;0;L;;;;;N;;;;;
+AFF0;HANGUL SYLLABLE GGWE;Lo;0;L;;;;;N;;;;;
+AFF1;HANGUL SYLLABLE GGWEG;Lo;0;L;;;;;N;;;;;
+AFF2;HANGUL SYLLABLE GGWEGG;Lo;0;L;;;;;N;;;;;
+AFF3;HANGUL SYLLABLE GGWEGS;Lo;0;L;;;;;N;;;;;
+AFF4;HANGUL SYLLABLE GGWEN;Lo;0;L;;;;;N;;;;;
+AFF5;HANGUL SYLLABLE GGWENI;Lo;0;L;;;;;N;;;;;
+AFF6;HANGUL SYLLABLE GGWENH;Lo;0;L;;;;;N;;;;;
+AFF7;HANGUL SYLLABLE GGWED;Lo;0;L;;;;;N;;;;;
+AFF8;HANGUL SYLLABLE GGWEL;Lo;0;L;;;;;N;;;;;
+AFF9;HANGUL SYLLABLE GGWELG;Lo;0;L;;;;;N;;;;;
+AFFA;HANGUL SYLLABLE GGWELM;Lo;0;L;;;;;N;;;;;
+AFFB;HANGUL SYLLABLE GGWELB;Lo;0;L;;;;;N;;;;;
+AFFC;HANGUL SYLLABLE GGWELS;Lo;0;L;;;;;N;;;;;
+AFFD;HANGUL SYLLABLE GGWELT;Lo;0;L;;;;;N;;;;;
+AFFE;HANGUL SYLLABLE GGWELP;Lo;0;L;;;;;N;;;;;
+AFFF;HANGUL SYLLABLE GGWELH;Lo;0;L;;;;;N;;;;;
+B000;HANGUL SYLLABLE GGWEM;Lo;0;L;;;;;N;;;;;
+B001;HANGUL SYLLABLE GGWEB;Lo;0;L;;;;;N;;;;;
+B002;HANGUL SYLLABLE GGWEBS;Lo;0;L;;;;;N;;;;;
+B003;HANGUL SYLLABLE GGWES;Lo;0;L;;;;;N;;;;;
+B004;HANGUL SYLLABLE GGWESS;Lo;0;L;;;;;N;;;;;
+B005;HANGUL SYLLABLE GGWENG;Lo;0;L;;;;;N;;;;;
+B006;HANGUL SYLLABLE GGWEJ;Lo;0;L;;;;;N;;;;;
+B007;HANGUL SYLLABLE GGWEC;Lo;0;L;;;;;N;;;;;
+B008;HANGUL SYLLABLE GGWEK;Lo;0;L;;;;;N;;;;;
+B009;HANGUL SYLLABLE GGWET;Lo;0;L;;;;;N;;;;;
+B00A;HANGUL SYLLABLE GGWEP;Lo;0;L;;;;;N;;;;;
+B00B;HANGUL SYLLABLE GGWEH;Lo;0;L;;;;;N;;;;;
+B00C;HANGUL SYLLABLE GGWI;Lo;0;L;;;;;N;;;;;
+B00D;HANGUL SYLLABLE GGWIG;Lo;0;L;;;;;N;;;;;
+B00E;HANGUL SYLLABLE GGWIGG;Lo;0;L;;;;;N;;;;;
+B00F;HANGUL SYLLABLE GGWIGS;Lo;0;L;;;;;N;;;;;
+B010;HANGUL SYLLABLE GGWIN;Lo;0;L;;;;;N;;;;;
+B011;HANGUL SYLLABLE GGWINI;Lo;0;L;;;;;N;;;;;
+B012;HANGUL SYLLABLE GGWINH;Lo;0;L;;;;;N;;;;;
+B013;HANGUL SYLLABLE GGWID;Lo;0;L;;;;;N;;;;;
+B014;HANGUL SYLLABLE GGWIL;Lo;0;L;;;;;N;;;;;
+B015;HANGUL SYLLABLE GGWILG;Lo;0;L;;;;;N;;;;;
+B016;HANGUL SYLLABLE GGWILM;Lo;0;L;;;;;N;;;;;
+B017;HANGUL SYLLABLE GGWILB;Lo;0;L;;;;;N;;;;;
+B018;HANGUL SYLLABLE GGWILS;Lo;0;L;;;;;N;;;;;
+B019;HANGUL SYLLABLE GGWILT;Lo;0;L;;;;;N;;;;;
+B01A;HANGUL SYLLABLE GGWILP;Lo;0;L;;;;;N;;;;;
+B01B;HANGUL SYLLABLE GGWILH;Lo;0;L;;;;;N;;;;;
+B01C;HANGUL SYLLABLE GGWIM;Lo;0;L;;;;;N;;;;;
+B01D;HANGUL SYLLABLE GGWIB;Lo;0;L;;;;;N;;;;;
+B01E;HANGUL SYLLABLE GGWIBS;Lo;0;L;;;;;N;;;;;
+B01F;HANGUL SYLLABLE GGWIS;Lo;0;L;;;;;N;;;;;
+B020;HANGUL SYLLABLE GGWISS;Lo;0;L;;;;;N;;;;;
+B021;HANGUL SYLLABLE GGWING;Lo;0;L;;;;;N;;;;;
+B022;HANGUL SYLLABLE GGWIJ;Lo;0;L;;;;;N;;;;;
+B023;HANGUL SYLLABLE GGWIC;Lo;0;L;;;;;N;;;;;
+B024;HANGUL SYLLABLE GGWIK;Lo;0;L;;;;;N;;;;;
+B025;HANGUL SYLLABLE GGWIT;Lo;0;L;;;;;N;;;;;
+B026;HANGUL SYLLABLE GGWIP;Lo;0;L;;;;;N;;;;;
+B027;HANGUL SYLLABLE GGWIH;Lo;0;L;;;;;N;;;;;
+B028;HANGUL SYLLABLE GGYU;Lo;0;L;;;;;N;;;;;
+B029;HANGUL SYLLABLE GGYUG;Lo;0;L;;;;;N;;;;;
+B02A;HANGUL SYLLABLE GGYUGG;Lo;0;L;;;;;N;;;;;
+B02B;HANGUL SYLLABLE GGYUGS;Lo;0;L;;;;;N;;;;;
+B02C;HANGUL SYLLABLE GGYUN;Lo;0;L;;;;;N;;;;;
+B02D;HANGUL SYLLABLE GGYUNI;Lo;0;L;;;;;N;;;;;
+B02E;HANGUL SYLLABLE GGYUNH;Lo;0;L;;;;;N;;;;;
+B02F;HANGUL SYLLABLE GGYUD;Lo;0;L;;;;;N;;;;;
+B030;HANGUL SYLLABLE GGYUL;Lo;0;L;;;;;N;;;;;
+B031;HANGUL SYLLABLE GGYULG;Lo;0;L;;;;;N;;;;;
+B032;HANGUL SYLLABLE GGYULM;Lo;0;L;;;;;N;;;;;
+B033;HANGUL SYLLABLE GGYULB;Lo;0;L;;;;;N;;;;;
+B034;HANGUL SYLLABLE GGYULS;Lo;0;L;;;;;N;;;;;
+B035;HANGUL SYLLABLE GGYULT;Lo;0;L;;;;;N;;;;;
+B036;HANGUL SYLLABLE GGYULP;Lo;0;L;;;;;N;;;;;
+B037;HANGUL SYLLABLE GGYULH;Lo;0;L;;;;;N;;;;;
+B038;HANGUL SYLLABLE GGYUM;Lo;0;L;;;;;N;;;;;
+B039;HANGUL SYLLABLE GGYUB;Lo;0;L;;;;;N;;;;;
+B03A;HANGUL SYLLABLE GGYUBS;Lo;0;L;;;;;N;;;;;
+B03B;HANGUL SYLLABLE GGYUS;Lo;0;L;;;;;N;;;;;
+B03C;HANGUL SYLLABLE GGYUSS;Lo;0;L;;;;;N;;;;;
+B03D;HANGUL SYLLABLE GGYUNG;Lo;0;L;;;;;N;;;;;
+B03E;HANGUL SYLLABLE GGYUJ;Lo;0;L;;;;;N;;;;;
+B03F;HANGUL SYLLABLE GGYUC;Lo;0;L;;;;;N;;;;;
+B040;HANGUL SYLLABLE GGYUK;Lo;0;L;;;;;N;;;;;
+B041;HANGUL SYLLABLE GGYUT;Lo;0;L;;;;;N;;;;;
+B042;HANGUL SYLLABLE GGYUP;Lo;0;L;;;;;N;;;;;
+B043;HANGUL SYLLABLE GGYUH;Lo;0;L;;;;;N;;;;;
+B044;HANGUL SYLLABLE GGEU;Lo;0;L;;;;;N;;;;;
+B045;HANGUL SYLLABLE GGEUG;Lo;0;L;;;;;N;;;;;
+B046;HANGUL SYLLABLE GGEUGG;Lo;0;L;;;;;N;;;;;
+B047;HANGUL SYLLABLE GGEUGS;Lo;0;L;;;;;N;;;;;
+B048;HANGUL SYLLABLE GGEUN;Lo;0;L;;;;;N;;;;;
+B049;HANGUL SYLLABLE GGEUNI;Lo;0;L;;;;;N;;;;;
+B04A;HANGUL SYLLABLE GGEUNH;Lo;0;L;;;;;N;;;;;
+B04B;HANGUL SYLLABLE GGEUD;Lo;0;L;;;;;N;;;;;
+B04C;HANGUL SYLLABLE GGEUL;Lo;0;L;;;;;N;;;;;
+B04D;HANGUL SYLLABLE GGEULG;Lo;0;L;;;;;N;;;;;
+B04E;HANGUL SYLLABLE GGEULM;Lo;0;L;;;;;N;;;;;
+B04F;HANGUL SYLLABLE GGEULB;Lo;0;L;;;;;N;;;;;
+B050;HANGUL SYLLABLE GGEULS;Lo;0;L;;;;;N;;;;;
+B051;HANGUL SYLLABLE GGEULT;Lo;0;L;;;;;N;;;;;
+B052;HANGUL SYLLABLE GGEULP;Lo;0;L;;;;;N;;;;;
+B053;HANGUL SYLLABLE GGEULH;Lo;0;L;;;;;N;;;;;
+B054;HANGUL SYLLABLE GGEUM;Lo;0;L;;;;;N;;;;;
+B055;HANGUL SYLLABLE GGEUB;Lo;0;L;;;;;N;;;;;
+B056;HANGUL SYLLABLE GGEUBS;Lo;0;L;;;;;N;;;;;
+B057;HANGUL SYLLABLE GGEUS;Lo;0;L;;;;;N;;;;;
+B058;HANGUL SYLLABLE GGEUSS;Lo;0;L;;;;;N;;;;;
+B059;HANGUL SYLLABLE GGEUNG;Lo;0;L;;;;;N;;;;;
+B05A;HANGUL SYLLABLE GGEUJ;Lo;0;L;;;;;N;;;;;
+B05B;HANGUL SYLLABLE GGEUC;Lo;0;L;;;;;N;;;;;
+B05C;HANGUL SYLLABLE GGEUK;Lo;0;L;;;;;N;;;;;
+B05D;HANGUL SYLLABLE GGEUT;Lo;0;L;;;;;N;;;;;
+B05E;HANGUL SYLLABLE GGEUP;Lo;0;L;;;;;N;;;;;
+B05F;HANGUL SYLLABLE GGEUH;Lo;0;L;;;;;N;;;;;
+B060;HANGUL SYLLABLE GGYI;Lo;0;L;;;;;N;;;;;
+B061;HANGUL SYLLABLE GGYIG;Lo;0;L;;;;;N;;;;;
+B062;HANGUL SYLLABLE GGYIGG;Lo;0;L;;;;;N;;;;;
+B063;HANGUL SYLLABLE GGYIGS;Lo;0;L;;;;;N;;;;;
+B064;HANGUL SYLLABLE GGYIN;Lo;0;L;;;;;N;;;;;
+B065;HANGUL SYLLABLE GGYINI;Lo;0;L;;;;;N;;;;;
+B066;HANGUL SYLLABLE GGYINH;Lo;0;L;;;;;N;;;;;
+B067;HANGUL SYLLABLE GGYID;Lo;0;L;;;;;N;;;;;
+B068;HANGUL SYLLABLE GGYIL;Lo;0;L;;;;;N;;;;;
+B069;HANGUL SYLLABLE GGYILG;Lo;0;L;;;;;N;;;;;
+B06A;HANGUL SYLLABLE GGYILM;Lo;0;L;;;;;N;;;;;
+B06B;HANGUL SYLLABLE GGYILB;Lo;0;L;;;;;N;;;;;
+B06C;HANGUL SYLLABLE GGYILS;Lo;0;L;;;;;N;;;;;
+B06D;HANGUL SYLLABLE GGYILT;Lo;0;L;;;;;N;;;;;
+B06E;HANGUL SYLLABLE GGYILP;Lo;0;L;;;;;N;;;;;
+B06F;HANGUL SYLLABLE GGYILH;Lo;0;L;;;;;N;;;;;
+B070;HANGUL SYLLABLE GGYIM;Lo;0;L;;;;;N;;;;;
+B071;HANGUL SYLLABLE GGYIB;Lo;0;L;;;;;N;;;;;
+B072;HANGUL SYLLABLE GGYIBS;Lo;0;L;;;;;N;;;;;
+B073;HANGUL SYLLABLE GGYIS;Lo;0;L;;;;;N;;;;;
+B074;HANGUL SYLLABLE GGYISS;Lo;0;L;;;;;N;;;;;
+B075;HANGUL SYLLABLE GGYING;Lo;0;L;;;;;N;;;;;
+B076;HANGUL SYLLABLE GGYIJ;Lo;0;L;;;;;N;;;;;
+B077;HANGUL SYLLABLE GGYIC;Lo;0;L;;;;;N;;;;;
+B078;HANGUL SYLLABLE GGYIK;Lo;0;L;;;;;N;;;;;
+B079;HANGUL SYLLABLE GGYIT;Lo;0;L;;;;;N;;;;;
+B07A;HANGUL SYLLABLE GGYIP;Lo;0;L;;;;;N;;;;;
+B07B;HANGUL SYLLABLE GGYIH;Lo;0;L;;;;;N;;;;;
+B07C;HANGUL SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+B07D;HANGUL SYLLABLE GGIG;Lo;0;L;;;;;N;;;;;
+B07E;HANGUL SYLLABLE GGIGG;Lo;0;L;;;;;N;;;;;
+B07F;HANGUL SYLLABLE GGIGS;Lo;0;L;;;;;N;;;;;
+B080;HANGUL SYLLABLE GGIN;Lo;0;L;;;;;N;;;;;
+B081;HANGUL SYLLABLE GGINI;Lo;0;L;;;;;N;;;;;
+B082;HANGUL SYLLABLE GGINH;Lo;0;L;;;;;N;;;;;
+B083;HANGUL SYLLABLE GGID;Lo;0;L;;;;;N;;;;;
+B084;HANGUL SYLLABLE GGIL;Lo;0;L;;;;;N;;;;;
+B085;HANGUL SYLLABLE GGILG;Lo;0;L;;;;;N;;;;;
+B086;HANGUL SYLLABLE GGILM;Lo;0;L;;;;;N;;;;;
+B087;HANGUL SYLLABLE GGILB;Lo;0;L;;;;;N;;;;;
+B088;HANGUL SYLLABLE GGILS;Lo;0;L;;;;;N;;;;;
+B089;HANGUL SYLLABLE GGILT;Lo;0;L;;;;;N;;;;;
+B08A;HANGUL SYLLABLE GGILP;Lo;0;L;;;;;N;;;;;
+B08B;HANGUL SYLLABLE GGILH;Lo;0;L;;;;;N;;;;;
+B08C;HANGUL SYLLABLE GGIM;Lo;0;L;;;;;N;;;;;
+B08D;HANGUL SYLLABLE GGIB;Lo;0;L;;;;;N;;;;;
+B08E;HANGUL SYLLABLE GGIBS;Lo;0;L;;;;;N;;;;;
+B08F;HANGUL SYLLABLE GGIS;Lo;0;L;;;;;N;;;;;
+B090;HANGUL SYLLABLE GGISS;Lo;0;L;;;;;N;;;;;
+B091;HANGUL SYLLABLE GGING;Lo;0;L;;;;;N;;;;;
+B092;HANGUL SYLLABLE GGIJ;Lo;0;L;;;;;N;;;;;
+B093;HANGUL SYLLABLE GGIC;Lo;0;L;;;;;N;;;;;
+B094;HANGUL SYLLABLE GGIK;Lo;0;L;;;;;N;;;;;
+B095;HANGUL SYLLABLE GGIT;Lo;0;L;;;;;N;;;;;
+B096;HANGUL SYLLABLE GGIP;Lo;0;L;;;;;N;;;;;
+B097;HANGUL SYLLABLE GGIH;Lo;0;L;;;;;N;;;;;
+B098;HANGUL SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+B099;HANGUL SYLLABLE NAG;Lo;0;L;;;;;N;;;;;
+B09A;HANGUL SYLLABLE NAGG;Lo;0;L;;;;;N;;;;;
+B09B;HANGUL SYLLABLE NAGS;Lo;0;L;;;;;N;;;;;
+B09C;HANGUL SYLLABLE NAN;Lo;0;L;;;;;N;;;;;
+B09D;HANGUL SYLLABLE NANI;Lo;0;L;;;;;N;;;;;
+B09E;HANGUL SYLLABLE NANH;Lo;0;L;;;;;N;;;;;
+B09F;HANGUL SYLLABLE NAD;Lo;0;L;;;;;N;;;;;
+B0A0;HANGUL SYLLABLE NAL;Lo;0;L;;;;;N;;;;;
+B0A1;HANGUL SYLLABLE NALG;Lo;0;L;;;;;N;;;;;
+B0A2;HANGUL SYLLABLE NALM;Lo;0;L;;;;;N;;;;;
+B0A3;HANGUL SYLLABLE NALB;Lo;0;L;;;;;N;;;;;
+B0A4;HANGUL SYLLABLE NALS;Lo;0;L;;;;;N;;;;;
+B0A5;HANGUL SYLLABLE NALT;Lo;0;L;;;;;N;;;;;
+B0A6;HANGUL SYLLABLE NALP;Lo;0;L;;;;;N;;;;;
+B0A7;HANGUL SYLLABLE NALH;Lo;0;L;;;;;N;;;;;
+B0A8;HANGUL SYLLABLE NAM;Lo;0;L;;;;;N;;;;;
+B0A9;HANGUL SYLLABLE NAB;Lo;0;L;;;;;N;;;;;
+B0AA;HANGUL SYLLABLE NABS;Lo;0;L;;;;;N;;;;;
+B0AB;HANGUL SYLLABLE NAS;Lo;0;L;;;;;N;;;;;
+B0AC;HANGUL SYLLABLE NASS;Lo;0;L;;;;;N;;;;;
+B0AD;HANGUL SYLLABLE NANG;Lo;0;L;;;;;N;;;;;
+B0AE;HANGUL SYLLABLE NAJ;Lo;0;L;;;;;N;;;;;
+B0AF;HANGUL SYLLABLE NAC;Lo;0;L;;;;;N;;;;;
+B0B0;HANGUL SYLLABLE NAK;Lo;0;L;;;;;N;;;;;
+B0B1;HANGUL SYLLABLE NAT;Lo;0;L;;;;;N;;;;;
+B0B2;HANGUL SYLLABLE NAP;Lo;0;L;;;;;N;;;;;
+B0B3;HANGUL SYLLABLE NAH;Lo;0;L;;;;;N;;;;;
+B0B4;HANGUL SYLLABLE NAE;Lo;0;L;;;;;N;;;;;
+B0B5;HANGUL SYLLABLE NAEG;Lo;0;L;;;;;N;;;;;
+B0B6;HANGUL SYLLABLE NAEGG;Lo;0;L;;;;;N;;;;;
+B0B7;HANGUL SYLLABLE NAEGS;Lo;0;L;;;;;N;;;;;
+B0B8;HANGUL SYLLABLE NAEN;Lo;0;L;;;;;N;;;;;
+B0B9;HANGUL SYLLABLE NAENI;Lo;0;L;;;;;N;;;;;
+B0BA;HANGUL SYLLABLE NAENH;Lo;0;L;;;;;N;;;;;
+B0BB;HANGUL SYLLABLE NAED;Lo;0;L;;;;;N;;;;;
+B0BC;HANGUL SYLLABLE NAEL;Lo;0;L;;;;;N;;;;;
+B0BD;HANGUL SYLLABLE NAELG;Lo;0;L;;;;;N;;;;;
+B0BE;HANGUL SYLLABLE NAELM;Lo;0;L;;;;;N;;;;;
+B0BF;HANGUL SYLLABLE NAELB;Lo;0;L;;;;;N;;;;;
+B0C0;HANGUL SYLLABLE NAELS;Lo;0;L;;;;;N;;;;;
+B0C1;HANGUL SYLLABLE NAELT;Lo;0;L;;;;;N;;;;;
+B0C2;HANGUL SYLLABLE NAELP;Lo;0;L;;;;;N;;;;;
+B0C3;HANGUL SYLLABLE NAELH;Lo;0;L;;;;;N;;;;;
+B0C4;HANGUL SYLLABLE NAEM;Lo;0;L;;;;;N;;;;;
+B0C5;HANGUL SYLLABLE NAEB;Lo;0;L;;;;;N;;;;;
+B0C6;HANGUL SYLLABLE NAEBS;Lo;0;L;;;;;N;;;;;
+B0C7;HANGUL SYLLABLE NAES;Lo;0;L;;;;;N;;;;;
+B0C8;HANGUL SYLLABLE NAESS;Lo;0;L;;;;;N;;;;;
+B0C9;HANGUL SYLLABLE NAENG;Lo;0;L;;;;;N;;;;;
+B0CA;HANGUL SYLLABLE NAEJ;Lo;0;L;;;;;N;;;;;
+B0CB;HANGUL SYLLABLE NAEC;Lo;0;L;;;;;N;;;;;
+B0CC;HANGUL SYLLABLE NAEK;Lo;0;L;;;;;N;;;;;
+B0CD;HANGUL SYLLABLE NAET;Lo;0;L;;;;;N;;;;;
+B0CE;HANGUL SYLLABLE NAEP;Lo;0;L;;;;;N;;;;;
+B0CF;HANGUL SYLLABLE NAEH;Lo;0;L;;;;;N;;;;;
+B0D0;HANGUL SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
+B0D1;HANGUL SYLLABLE NYAG;Lo;0;L;;;;;N;;;;;
+B0D2;HANGUL SYLLABLE NYAGG;Lo;0;L;;;;;N;;;;;
+B0D3;HANGUL SYLLABLE NYAGS;Lo;0;L;;;;;N;;;;;
+B0D4;HANGUL SYLLABLE NYAN;Lo;0;L;;;;;N;;;;;
+B0D5;HANGUL SYLLABLE NYANI;Lo;0;L;;;;;N;;;;;
+B0D6;HANGUL SYLLABLE NYANH;Lo;0;L;;;;;N;;;;;
+B0D7;HANGUL SYLLABLE NYAD;Lo;0;L;;;;;N;;;;;
+B0D8;HANGUL SYLLABLE NYAL;Lo;0;L;;;;;N;;;;;
+B0D9;HANGUL SYLLABLE NYALG;Lo;0;L;;;;;N;;;;;
+B0DA;HANGUL SYLLABLE NYALM;Lo;0;L;;;;;N;;;;;
+B0DB;HANGUL SYLLABLE NYALB;Lo;0;L;;;;;N;;;;;
+B0DC;HANGUL SYLLABLE NYALS;Lo;0;L;;;;;N;;;;;
+B0DD;HANGUL SYLLABLE NYALT;Lo;0;L;;;;;N;;;;;
+B0DE;HANGUL SYLLABLE NYALP;Lo;0;L;;;;;N;;;;;
+B0DF;HANGUL SYLLABLE NYALH;Lo;0;L;;;;;N;;;;;
+B0E0;HANGUL SYLLABLE NYAM;Lo;0;L;;;;;N;;;;;
+B0E1;HANGUL SYLLABLE NYAB;Lo;0;L;;;;;N;;;;;
+B0E2;HANGUL SYLLABLE NYABS;Lo;0;L;;;;;N;;;;;
+B0E3;HANGUL SYLLABLE NYAS;Lo;0;L;;;;;N;;;;;
+B0E4;HANGUL SYLLABLE NYASS;Lo;0;L;;;;;N;;;;;
+B0E5;HANGUL SYLLABLE NYANG;Lo;0;L;;;;;N;;;;;
+B0E6;HANGUL SYLLABLE NYAJ;Lo;0;L;;;;;N;;;;;
+B0E7;HANGUL SYLLABLE NYAC;Lo;0;L;;;;;N;;;;;
+B0E8;HANGUL SYLLABLE NYAK;Lo;0;L;;;;;N;;;;;
+B0E9;HANGUL SYLLABLE NYAT;Lo;0;L;;;;;N;;;;;
+B0EA;HANGUL SYLLABLE NYAP;Lo;0;L;;;;;N;;;;;
+B0EB;HANGUL SYLLABLE NYAH;Lo;0;L;;;;;N;;;;;
+B0EC;HANGUL SYLLABLE NYAE;Lo;0;L;;;;;N;;;;;
+B0ED;HANGUL SYLLABLE NYAEG;Lo;0;L;;;;;N;;;;;
+B0EE;HANGUL SYLLABLE NYAEGG;Lo;0;L;;;;;N;;;;;
+B0EF;HANGUL SYLLABLE NYAEGS;Lo;0;L;;;;;N;;;;;
+B0F0;HANGUL SYLLABLE NYAEN;Lo;0;L;;;;;N;;;;;
+B0F1;HANGUL SYLLABLE NYAENI;Lo;0;L;;;;;N;;;;;
+B0F2;HANGUL SYLLABLE NYAENH;Lo;0;L;;;;;N;;;;;
+B0F3;HANGUL SYLLABLE NYAED;Lo;0;L;;;;;N;;;;;
+B0F4;HANGUL SYLLABLE NYAEL;Lo;0;L;;;;;N;;;;;
+B0F5;HANGUL SYLLABLE NYAELG;Lo;0;L;;;;;N;;;;;
+B0F6;HANGUL SYLLABLE NYAELM;Lo;0;L;;;;;N;;;;;
+B0F7;HANGUL SYLLABLE NYAELB;Lo;0;L;;;;;N;;;;;
+B0F8;HANGUL SYLLABLE NYAELS;Lo;0;L;;;;;N;;;;;
+B0F9;HANGUL SYLLABLE NYAELT;Lo;0;L;;;;;N;;;;;
+B0FA;HANGUL SYLLABLE NYAELP;Lo;0;L;;;;;N;;;;;
+B0FB;HANGUL SYLLABLE NYAELH;Lo;0;L;;;;;N;;;;;
+B0FC;HANGUL SYLLABLE NYAEM;Lo;0;L;;;;;N;;;;;
+B0FD;HANGUL SYLLABLE NYAEB;Lo;0;L;;;;;N;;;;;
+B0FE;HANGUL SYLLABLE NYAEBS;Lo;0;L;;;;;N;;;;;
+B0FF;HANGUL SYLLABLE NYAES;Lo;0;L;;;;;N;;;;;
+B100;HANGUL SYLLABLE NYAESS;Lo;0;L;;;;;N;;;;;
+B101;HANGUL SYLLABLE NYAENG;Lo;0;L;;;;;N;;;;;
+B102;HANGUL SYLLABLE NYAEJ;Lo;0;L;;;;;N;;;;;
+B103;HANGUL SYLLABLE NYAEC;Lo;0;L;;;;;N;;;;;
+B104;HANGUL SYLLABLE NYAEK;Lo;0;L;;;;;N;;;;;
+B105;HANGUL SYLLABLE NYAET;Lo;0;L;;;;;N;;;;;
+B106;HANGUL SYLLABLE NYAEP;Lo;0;L;;;;;N;;;;;
+B107;HANGUL SYLLABLE NYAEH;Lo;0;L;;;;;N;;;;;
+B108;HANGUL SYLLABLE NEO;Lo;0;L;;;;;N;;;;;
+B109;HANGUL SYLLABLE NEOG;Lo;0;L;;;;;N;;;;;
+B10A;HANGUL SYLLABLE NEOGG;Lo;0;L;;;;;N;;;;;
+B10B;HANGUL SYLLABLE NEOGS;Lo;0;L;;;;;N;;;;;
+B10C;HANGUL SYLLABLE NEON;Lo;0;L;;;;;N;;;;;
+B10D;HANGUL SYLLABLE NEONI;Lo;0;L;;;;;N;;;;;
+B10E;HANGUL SYLLABLE NEONH;Lo;0;L;;;;;N;;;;;
+B10F;HANGUL SYLLABLE NEOD;Lo;0;L;;;;;N;;;;;
+B110;HANGUL SYLLABLE NEOL;Lo;0;L;;;;;N;;;;;
+B111;HANGUL SYLLABLE NEOLG;Lo;0;L;;;;;N;;;;;
+B112;HANGUL SYLLABLE NEOLM;Lo;0;L;;;;;N;;;;;
+B113;HANGUL SYLLABLE NEOLB;Lo;0;L;;;;;N;;;;;
+B114;HANGUL SYLLABLE NEOLS;Lo;0;L;;;;;N;;;;;
+B115;HANGUL SYLLABLE NEOLT;Lo;0;L;;;;;N;;;;;
+B116;HANGUL SYLLABLE NEOLP;Lo;0;L;;;;;N;;;;;
+B117;HANGUL SYLLABLE NEOLH;Lo;0;L;;;;;N;;;;;
+B118;HANGUL SYLLABLE NEOM;Lo;0;L;;;;;N;;;;;
+B119;HANGUL SYLLABLE NEOB;Lo;0;L;;;;;N;;;;;
+B11A;HANGUL SYLLABLE NEOBS;Lo;0;L;;;;;N;;;;;
+B11B;HANGUL SYLLABLE NEOS;Lo;0;L;;;;;N;;;;;
+B11C;HANGUL SYLLABLE NEOSS;Lo;0;L;;;;;N;;;;;
+B11D;HANGUL SYLLABLE NEONG;Lo;0;L;;;;;N;;;;;
+B11E;HANGUL SYLLABLE NEOJ;Lo;0;L;;;;;N;;;;;
+B11F;HANGUL SYLLABLE NEOC;Lo;0;L;;;;;N;;;;;
+B120;HANGUL SYLLABLE NEOK;Lo;0;L;;;;;N;;;;;
+B121;HANGUL SYLLABLE NEOT;Lo;0;L;;;;;N;;;;;
+B122;HANGUL SYLLABLE NEOP;Lo;0;L;;;;;N;;;;;
+B123;HANGUL SYLLABLE NEOH;Lo;0;L;;;;;N;;;;;
+B124;HANGUL SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+B125;HANGUL SYLLABLE NEG;Lo;0;L;;;;;N;;;;;
+B126;HANGUL SYLLABLE NEGG;Lo;0;L;;;;;N;;;;;
+B127;HANGUL SYLLABLE NEGS;Lo;0;L;;;;;N;;;;;
+B128;HANGUL SYLLABLE NEN;Lo;0;L;;;;;N;;;;;
+B129;HANGUL SYLLABLE NENI;Lo;0;L;;;;;N;;;;;
+B12A;HANGUL SYLLABLE NENH;Lo;0;L;;;;;N;;;;;
+B12B;HANGUL SYLLABLE NED;Lo;0;L;;;;;N;;;;;
+B12C;HANGUL SYLLABLE NEL;Lo;0;L;;;;;N;;;;;
+B12D;HANGUL SYLLABLE NELG;Lo;0;L;;;;;N;;;;;
+B12E;HANGUL SYLLABLE NELM;Lo;0;L;;;;;N;;;;;
+B12F;HANGUL SYLLABLE NELB;Lo;0;L;;;;;N;;;;;
+B130;HANGUL SYLLABLE NELS;Lo;0;L;;;;;N;;;;;
+B131;HANGUL SYLLABLE NELT;Lo;0;L;;;;;N;;;;;
+B132;HANGUL SYLLABLE NELP;Lo;0;L;;;;;N;;;;;
+B133;HANGUL SYLLABLE NELH;Lo;0;L;;;;;N;;;;;
+B134;HANGUL SYLLABLE NEM;Lo;0;L;;;;;N;;;;;
+B135;HANGUL SYLLABLE NEB;Lo;0;L;;;;;N;;;;;
+B136;HANGUL SYLLABLE NEBS;Lo;0;L;;;;;N;;;;;
+B137;HANGUL SYLLABLE NES;Lo;0;L;;;;;N;;;;;
+B138;HANGUL SYLLABLE NESS;Lo;0;L;;;;;N;;;;;
+B139;HANGUL SYLLABLE NENG;Lo;0;L;;;;;N;;;;;
+B13A;HANGUL SYLLABLE NEJ;Lo;0;L;;;;;N;;;;;
+B13B;HANGUL SYLLABLE NEC;Lo;0;L;;;;;N;;;;;
+B13C;HANGUL SYLLABLE NEK;Lo;0;L;;;;;N;;;;;
+B13D;HANGUL SYLLABLE NET;Lo;0;L;;;;;N;;;;;
+B13E;HANGUL SYLLABLE NEP;Lo;0;L;;;;;N;;;;;
+B13F;HANGUL SYLLABLE NEH;Lo;0;L;;;;;N;;;;;
+B140;HANGUL SYLLABLE NYEO;Lo;0;L;;;;;N;;;;;
+B141;HANGUL SYLLABLE NYEOG;Lo;0;L;;;;;N;;;;;
+B142;HANGUL SYLLABLE NYEOGG;Lo;0;L;;;;;N;;;;;
+B143;HANGUL SYLLABLE NYEOGS;Lo;0;L;;;;;N;;;;;
+B144;HANGUL SYLLABLE NYEON;Lo;0;L;;;;;N;;;;;
+B145;HANGUL SYLLABLE NYEONI;Lo;0;L;;;;;N;;;;;
+B146;HANGUL SYLLABLE NYEONH;Lo;0;L;;;;;N;;;;;
+B147;HANGUL SYLLABLE NYEOD;Lo;0;L;;;;;N;;;;;
+B148;HANGUL SYLLABLE NYEOL;Lo;0;L;;;;;N;;;;;
+B149;HANGUL SYLLABLE NYEOLG;Lo;0;L;;;;;N;;;;;
+B14A;HANGUL SYLLABLE NYEOLM;Lo;0;L;;;;;N;;;;;
+B14B;HANGUL SYLLABLE NYEOLB;Lo;0;L;;;;;N;;;;;
+B14C;HANGUL SYLLABLE NYEOLS;Lo;0;L;;;;;N;;;;;
+B14D;HANGUL SYLLABLE NYEOLT;Lo;0;L;;;;;N;;;;;
+B14E;HANGUL SYLLABLE NYEOLP;Lo;0;L;;;;;N;;;;;
+B14F;HANGUL SYLLABLE NYEOLH;Lo;0;L;;;;;N;;;;;
+B150;HANGUL SYLLABLE NYEOM;Lo;0;L;;;;;N;;;;;
+B151;HANGUL SYLLABLE NYEOB;Lo;0;L;;;;;N;;;;;
+B152;HANGUL SYLLABLE NYEOBS;Lo;0;L;;;;;N;;;;;
+B153;HANGUL SYLLABLE NYEOS;Lo;0;L;;;;;N;;;;;
+B154;HANGUL SYLLABLE NYEOSS;Lo;0;L;;;;;N;;;;;
+B155;HANGUL SYLLABLE NYEONG;Lo;0;L;;;;;N;;;;;
+B156;HANGUL SYLLABLE NYEOJ;Lo;0;L;;;;;N;;;;;
+B157;HANGUL SYLLABLE NYEOC;Lo;0;L;;;;;N;;;;;
+B158;HANGUL SYLLABLE NYEOK;Lo;0;L;;;;;N;;;;;
+B159;HANGUL SYLLABLE NYEOT;Lo;0;L;;;;;N;;;;;
+B15A;HANGUL SYLLABLE NYEOP;Lo;0;L;;;;;N;;;;;
+B15B;HANGUL SYLLABLE NYEOH;Lo;0;L;;;;;N;;;;;
+B15C;HANGUL SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
+B15D;HANGUL SYLLABLE NYEG;Lo;0;L;;;;;N;;;;;
+B15E;HANGUL SYLLABLE NYEGG;Lo;0;L;;;;;N;;;;;
+B15F;HANGUL SYLLABLE NYEGS;Lo;0;L;;;;;N;;;;;
+B160;HANGUL SYLLABLE NYEN;Lo;0;L;;;;;N;;;;;
+B161;HANGUL SYLLABLE NYENI;Lo;0;L;;;;;N;;;;;
+B162;HANGUL SYLLABLE NYENH;Lo;0;L;;;;;N;;;;;
+B163;HANGUL SYLLABLE NYED;Lo;0;L;;;;;N;;;;;
+B164;HANGUL SYLLABLE NYEL;Lo;0;L;;;;;N;;;;;
+B165;HANGUL SYLLABLE NYELG;Lo;0;L;;;;;N;;;;;
+B166;HANGUL SYLLABLE NYELM;Lo;0;L;;;;;N;;;;;
+B167;HANGUL SYLLABLE NYELB;Lo;0;L;;;;;N;;;;;
+B168;HANGUL SYLLABLE NYELS;Lo;0;L;;;;;N;;;;;
+B169;HANGUL SYLLABLE NYELT;Lo;0;L;;;;;N;;;;;
+B16A;HANGUL SYLLABLE NYELP;Lo;0;L;;;;;N;;;;;
+B16B;HANGUL SYLLABLE NYELH;Lo;0;L;;;;;N;;;;;
+B16C;HANGUL SYLLABLE NYEM;Lo;0;L;;;;;N;;;;;
+B16D;HANGUL SYLLABLE NYEB;Lo;0;L;;;;;N;;;;;
+B16E;HANGUL SYLLABLE NYEBS;Lo;0;L;;;;;N;;;;;
+B16F;HANGUL SYLLABLE NYES;Lo;0;L;;;;;N;;;;;
+B170;HANGUL SYLLABLE NYESS;Lo;0;L;;;;;N;;;;;
+B171;HANGUL SYLLABLE NYENG;Lo;0;L;;;;;N;;;;;
+B172;HANGUL SYLLABLE NYEJ;Lo;0;L;;;;;N;;;;;
+B173;HANGUL SYLLABLE NYEC;Lo;0;L;;;;;N;;;;;
+B174;HANGUL SYLLABLE NYEK;Lo;0;L;;;;;N;;;;;
+B175;HANGUL SYLLABLE NYET;Lo;0;L;;;;;N;;;;;
+B176;HANGUL SYLLABLE NYEP;Lo;0;L;;;;;N;;;;;
+B177;HANGUL SYLLABLE NYEH;Lo;0;L;;;;;N;;;;;
+B178;HANGUL SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+B179;HANGUL SYLLABLE NOG;Lo;0;L;;;;;N;;;;;
+B17A;HANGUL SYLLABLE NOGG;Lo;0;L;;;;;N;;;;;
+B17B;HANGUL SYLLABLE NOGS;Lo;0;L;;;;;N;;;;;
+B17C;HANGUL SYLLABLE NON;Lo;0;L;;;;;N;;;;;
+B17D;HANGUL SYLLABLE NONI;Lo;0;L;;;;;N;;;;;
+B17E;HANGUL SYLLABLE NONH;Lo;0;L;;;;;N;;;;;
+B17F;HANGUL SYLLABLE NOD;Lo;0;L;;;;;N;;;;;
+B180;HANGUL SYLLABLE NOL;Lo;0;L;;;;;N;;;;;
+B181;HANGUL SYLLABLE NOLG;Lo;0;L;;;;;N;;;;;
+B182;HANGUL SYLLABLE NOLM;Lo;0;L;;;;;N;;;;;
+B183;HANGUL SYLLABLE NOLB;Lo;0;L;;;;;N;;;;;
+B184;HANGUL SYLLABLE NOLS;Lo;0;L;;;;;N;;;;;
+B185;HANGUL SYLLABLE NOLT;Lo;0;L;;;;;N;;;;;
+B186;HANGUL SYLLABLE NOLP;Lo;0;L;;;;;N;;;;;
+B187;HANGUL SYLLABLE NOLH;Lo;0;L;;;;;N;;;;;
+B188;HANGUL SYLLABLE NOM;Lo;0;L;;;;;N;;;;;
+B189;HANGUL SYLLABLE NOB;Lo;0;L;;;;;N;;;;;
+B18A;HANGUL SYLLABLE NOBS;Lo;0;L;;;;;N;;;;;
+B18B;HANGUL SYLLABLE NOS;Lo;0;L;;;;;N;;;;;
+B18C;HANGUL SYLLABLE NOSS;Lo;0;L;;;;;N;;;;;
+B18D;HANGUL SYLLABLE NONG;Lo;0;L;;;;;N;;;;;
+B18E;HANGUL SYLLABLE NOJ;Lo;0;L;;;;;N;;;;;
+B18F;HANGUL SYLLABLE NOC;Lo;0;L;;;;;N;;;;;
+B190;HANGUL SYLLABLE NOK;Lo;0;L;;;;;N;;;;;
+B191;HANGUL SYLLABLE NOT;Lo;0;L;;;;;N;;;;;
+B192;HANGUL SYLLABLE NOP;Lo;0;L;;;;;N;;;;;
+B193;HANGUL SYLLABLE NOH;Lo;0;L;;;;;N;;;;;
+B194;HANGUL SYLLABLE NWA;Lo;0;L;;;;;N;;;;;
+B195;HANGUL SYLLABLE NWAG;Lo;0;L;;;;;N;;;;;
+B196;HANGUL SYLLABLE NWAGG;Lo;0;L;;;;;N;;;;;
+B197;HANGUL SYLLABLE NWAGS;Lo;0;L;;;;;N;;;;;
+B198;HANGUL SYLLABLE NWAN;Lo;0;L;;;;;N;;;;;
+B199;HANGUL SYLLABLE NWANI;Lo;0;L;;;;;N;;;;;
+B19A;HANGUL SYLLABLE NWANH;Lo;0;L;;;;;N;;;;;
+B19B;HANGUL SYLLABLE NWAD;Lo;0;L;;;;;N;;;;;
+B19C;HANGUL SYLLABLE NWAL;Lo;0;L;;;;;N;;;;;
+B19D;HANGUL SYLLABLE NWALG;Lo;0;L;;;;;N;;;;;
+B19E;HANGUL SYLLABLE NWALM;Lo;0;L;;;;;N;;;;;
+B19F;HANGUL SYLLABLE NWALB;Lo;0;L;;;;;N;;;;;
+B1A0;HANGUL SYLLABLE NWALS;Lo;0;L;;;;;N;;;;;
+B1A1;HANGUL SYLLABLE NWALT;Lo;0;L;;;;;N;;;;;
+B1A2;HANGUL SYLLABLE NWALP;Lo;0;L;;;;;N;;;;;
+B1A3;HANGUL SYLLABLE NWALH;Lo;0;L;;;;;N;;;;;
+B1A4;HANGUL SYLLABLE NWAM;Lo;0;L;;;;;N;;;;;
+B1A5;HANGUL SYLLABLE NWAB;Lo;0;L;;;;;N;;;;;
+B1A6;HANGUL SYLLABLE NWABS;Lo;0;L;;;;;N;;;;;
+B1A7;HANGUL SYLLABLE NWAS;Lo;0;L;;;;;N;;;;;
+B1A8;HANGUL SYLLABLE NWASS;Lo;0;L;;;;;N;;;;;
+B1A9;HANGUL SYLLABLE NWANG;Lo;0;L;;;;;N;;;;;
+B1AA;HANGUL SYLLABLE NWAJ;Lo;0;L;;;;;N;;;;;
+B1AB;HANGUL SYLLABLE NWAC;Lo;0;L;;;;;N;;;;;
+B1AC;HANGUL SYLLABLE NWAK;Lo;0;L;;;;;N;;;;;
+B1AD;HANGUL SYLLABLE NWAT;Lo;0;L;;;;;N;;;;;
+B1AE;HANGUL SYLLABLE NWAP;Lo;0;L;;;;;N;;;;;
+B1AF;HANGUL SYLLABLE NWAH;Lo;0;L;;;;;N;;;;;
+B1B0;HANGUL SYLLABLE NWAE;Lo;0;L;;;;;N;;;;;
+B1B1;HANGUL SYLLABLE NWAEG;Lo;0;L;;;;;N;;;;;
+B1B2;HANGUL SYLLABLE NWAEGG;Lo;0;L;;;;;N;;;;;
+B1B3;HANGUL SYLLABLE NWAEGS;Lo;0;L;;;;;N;;;;;
+B1B4;HANGUL SYLLABLE NWAEN;Lo;0;L;;;;;N;;;;;
+B1B5;HANGUL SYLLABLE NWAENI;Lo;0;L;;;;;N;;;;;
+B1B6;HANGUL SYLLABLE NWAENH;Lo;0;L;;;;;N;;;;;
+B1B7;HANGUL SYLLABLE NWAED;Lo;0;L;;;;;N;;;;;
+B1B8;HANGUL SYLLABLE NWAEL;Lo;0;L;;;;;N;;;;;
+B1B9;HANGUL SYLLABLE NWAELG;Lo;0;L;;;;;N;;;;;
+B1BA;HANGUL SYLLABLE NWAELM;Lo;0;L;;;;;N;;;;;
+B1BB;HANGUL SYLLABLE NWAELB;Lo;0;L;;;;;N;;;;;
+B1BC;HANGUL SYLLABLE NWAELS;Lo;0;L;;;;;N;;;;;
+B1BD;HANGUL SYLLABLE NWAELT;Lo;0;L;;;;;N;;;;;
+B1BE;HANGUL SYLLABLE NWAELP;Lo;0;L;;;;;N;;;;;
+B1BF;HANGUL SYLLABLE NWAELH;Lo;0;L;;;;;N;;;;;
+B1C0;HANGUL SYLLABLE NWAEM;Lo;0;L;;;;;N;;;;;
+B1C1;HANGUL SYLLABLE NWAEB;Lo;0;L;;;;;N;;;;;
+B1C2;HANGUL SYLLABLE NWAEBS;Lo;0;L;;;;;N;;;;;
+B1C3;HANGUL SYLLABLE NWAES;Lo;0;L;;;;;N;;;;;
+B1C4;HANGUL SYLLABLE NWAESS;Lo;0;L;;;;;N;;;;;
+B1C5;HANGUL SYLLABLE NWAENG;Lo;0;L;;;;;N;;;;;
+B1C6;HANGUL SYLLABLE NWAEJ;Lo;0;L;;;;;N;;;;;
+B1C7;HANGUL SYLLABLE NWAEC;Lo;0;L;;;;;N;;;;;
+B1C8;HANGUL SYLLABLE NWAEK;Lo;0;L;;;;;N;;;;;
+B1C9;HANGUL SYLLABLE NWAET;Lo;0;L;;;;;N;;;;;
+B1CA;HANGUL SYLLABLE NWAEP;Lo;0;L;;;;;N;;;;;
+B1CB;HANGUL SYLLABLE NWAEH;Lo;0;L;;;;;N;;;;;
+B1CC;HANGUL SYLLABLE NOE;Lo;0;L;;;;;N;;;;;
+B1CD;HANGUL SYLLABLE NOEG;Lo;0;L;;;;;N;;;;;
+B1CE;HANGUL SYLLABLE NOEGG;Lo;0;L;;;;;N;;;;;
+B1CF;HANGUL SYLLABLE NOEGS;Lo;0;L;;;;;N;;;;;
+B1D0;HANGUL SYLLABLE NOEN;Lo;0;L;;;;;N;;;;;
+B1D1;HANGUL SYLLABLE NOENI;Lo;0;L;;;;;N;;;;;
+B1D2;HANGUL SYLLABLE NOENH;Lo;0;L;;;;;N;;;;;
+B1D3;HANGUL SYLLABLE NOED;Lo;0;L;;;;;N;;;;;
+B1D4;HANGUL SYLLABLE NOEL;Lo;0;L;;;;;N;;;;;
+B1D5;HANGUL SYLLABLE NOELG;Lo;0;L;;;;;N;;;;;
+B1D6;HANGUL SYLLABLE NOELM;Lo;0;L;;;;;N;;;;;
+B1D7;HANGUL SYLLABLE NOELB;Lo;0;L;;;;;N;;;;;
+B1D8;HANGUL SYLLABLE NOELS;Lo;0;L;;;;;N;;;;;
+B1D9;HANGUL SYLLABLE NOELT;Lo;0;L;;;;;N;;;;;
+B1DA;HANGUL SYLLABLE NOELP;Lo;0;L;;;;;N;;;;;
+B1DB;HANGUL SYLLABLE NOELH;Lo;0;L;;;;;N;;;;;
+B1DC;HANGUL SYLLABLE NOEM;Lo;0;L;;;;;N;;;;;
+B1DD;HANGUL SYLLABLE NOEB;Lo;0;L;;;;;N;;;;;
+B1DE;HANGUL SYLLABLE NOEBS;Lo;0;L;;;;;N;;;;;
+B1DF;HANGUL SYLLABLE NOES;Lo;0;L;;;;;N;;;;;
+B1E0;HANGUL SYLLABLE NOESS;Lo;0;L;;;;;N;;;;;
+B1E1;HANGUL SYLLABLE NOENG;Lo;0;L;;;;;N;;;;;
+B1E2;HANGUL SYLLABLE NOEJ;Lo;0;L;;;;;N;;;;;
+B1E3;HANGUL SYLLABLE NOEC;Lo;0;L;;;;;N;;;;;
+B1E4;HANGUL SYLLABLE NOEK;Lo;0;L;;;;;N;;;;;
+B1E5;HANGUL SYLLABLE NOET;Lo;0;L;;;;;N;;;;;
+B1E6;HANGUL SYLLABLE NOEP;Lo;0;L;;;;;N;;;;;
+B1E7;HANGUL SYLLABLE NOEH;Lo;0;L;;;;;N;;;;;
+B1E8;HANGUL SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+B1E9;HANGUL SYLLABLE NYOG;Lo;0;L;;;;;N;;;;;
+B1EA;HANGUL SYLLABLE NYOGG;Lo;0;L;;;;;N;;;;;
+B1EB;HANGUL SYLLABLE NYOGS;Lo;0;L;;;;;N;;;;;
+B1EC;HANGUL SYLLABLE NYON;Lo;0;L;;;;;N;;;;;
+B1ED;HANGUL SYLLABLE NYONI;Lo;0;L;;;;;N;;;;;
+B1EE;HANGUL SYLLABLE NYONH;Lo;0;L;;;;;N;;;;;
+B1EF;HANGUL SYLLABLE NYOD;Lo;0;L;;;;;N;;;;;
+B1F0;HANGUL SYLLABLE NYOL;Lo;0;L;;;;;N;;;;;
+B1F1;HANGUL SYLLABLE NYOLG;Lo;0;L;;;;;N;;;;;
+B1F2;HANGUL SYLLABLE NYOLM;Lo;0;L;;;;;N;;;;;
+B1F3;HANGUL SYLLABLE NYOLB;Lo;0;L;;;;;N;;;;;
+B1F4;HANGUL SYLLABLE NYOLS;Lo;0;L;;;;;N;;;;;
+B1F5;HANGUL SYLLABLE NYOLT;Lo;0;L;;;;;N;;;;;
+B1F6;HANGUL SYLLABLE NYOLP;Lo;0;L;;;;;N;;;;;
+B1F7;HANGUL SYLLABLE NYOLH;Lo;0;L;;;;;N;;;;;
+B1F8;HANGUL SYLLABLE NYOM;Lo;0;L;;;;;N;;;;;
+B1F9;HANGUL SYLLABLE NYOB;Lo;0;L;;;;;N;;;;;
+B1FA;HANGUL SYLLABLE NYOBS;Lo;0;L;;;;;N;;;;;
+B1FB;HANGUL SYLLABLE NYOS;Lo;0;L;;;;;N;;;;;
+B1FC;HANGUL SYLLABLE NYOSS;Lo;0;L;;;;;N;;;;;
+B1FD;HANGUL SYLLABLE NYONG;Lo;0;L;;;;;N;;;;;
+B1FE;HANGUL SYLLABLE NYOJ;Lo;0;L;;;;;N;;;;;
+B1FF;HANGUL SYLLABLE NYOC;Lo;0;L;;;;;N;;;;;
+B200;HANGUL SYLLABLE NYOK;Lo;0;L;;;;;N;;;;;
+B201;HANGUL SYLLABLE NYOT;Lo;0;L;;;;;N;;;;;
+B202;HANGUL SYLLABLE NYOP;Lo;0;L;;;;;N;;;;;
+B203;HANGUL SYLLABLE NYOH;Lo;0;L;;;;;N;;;;;
+B204;HANGUL SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+B205;HANGUL SYLLABLE NUG;Lo;0;L;;;;;N;;;;;
+B206;HANGUL SYLLABLE NUGG;Lo;0;L;;;;;N;;;;;
+B207;HANGUL SYLLABLE NUGS;Lo;0;L;;;;;N;;;;;
+B208;HANGUL SYLLABLE NUN;Lo;0;L;;;;;N;;;;;
+B209;HANGUL SYLLABLE NUNI;Lo;0;L;;;;;N;;;;;
+B20A;HANGUL SYLLABLE NUNH;Lo;0;L;;;;;N;;;;;
+B20B;HANGUL SYLLABLE NUD;Lo;0;L;;;;;N;;;;;
+B20C;HANGUL SYLLABLE NUL;Lo;0;L;;;;;N;;;;;
+B20D;HANGUL SYLLABLE NULG;Lo;0;L;;;;;N;;;;;
+B20E;HANGUL SYLLABLE NULM;Lo;0;L;;;;;N;;;;;
+B20F;HANGUL SYLLABLE NULB;Lo;0;L;;;;;N;;;;;
+B210;HANGUL SYLLABLE NULS;Lo;0;L;;;;;N;;;;;
+B211;HANGUL SYLLABLE NULT;Lo;0;L;;;;;N;;;;;
+B212;HANGUL SYLLABLE NULP;Lo;0;L;;;;;N;;;;;
+B213;HANGUL SYLLABLE NULH;Lo;0;L;;;;;N;;;;;
+B214;HANGUL SYLLABLE NUM;Lo;0;L;;;;;N;;;;;
+B215;HANGUL SYLLABLE NUB;Lo;0;L;;;;;N;;;;;
+B216;HANGUL SYLLABLE NUBS;Lo;0;L;;;;;N;;;;;
+B217;HANGUL SYLLABLE NUS;Lo;0;L;;;;;N;;;;;
+B218;HANGUL SYLLABLE NUSS;Lo;0;L;;;;;N;;;;;
+B219;HANGUL SYLLABLE NUNG;Lo;0;L;;;;;N;;;;;
+B21A;HANGUL SYLLABLE NUJ;Lo;0;L;;;;;N;;;;;
+B21B;HANGUL SYLLABLE NUC;Lo;0;L;;;;;N;;;;;
+B21C;HANGUL SYLLABLE NUK;Lo;0;L;;;;;N;;;;;
+B21D;HANGUL SYLLABLE NUT;Lo;0;L;;;;;N;;;;;
+B21E;HANGUL SYLLABLE NUP;Lo;0;L;;;;;N;;;;;
+B21F;HANGUL SYLLABLE NUH;Lo;0;L;;;;;N;;;;;
+B220;HANGUL SYLLABLE NWEO;Lo;0;L;;;;;N;;;;;
+B221;HANGUL SYLLABLE NWEOG;Lo;0;L;;;;;N;;;;;
+B222;HANGUL SYLLABLE NWEOGG;Lo;0;L;;;;;N;;;;;
+B223;HANGUL SYLLABLE NWEOGS;Lo;0;L;;;;;N;;;;;
+B224;HANGUL SYLLABLE NWEON;Lo;0;L;;;;;N;;;;;
+B225;HANGUL SYLLABLE NWEONI;Lo;0;L;;;;;N;;;;;
+B226;HANGUL SYLLABLE NWEONH;Lo;0;L;;;;;N;;;;;
+B227;HANGUL SYLLABLE NWEOD;Lo;0;L;;;;;N;;;;;
+B228;HANGUL SYLLABLE NWEOL;Lo;0;L;;;;;N;;;;;
+B229;HANGUL SYLLABLE NWEOLG;Lo;0;L;;;;;N;;;;;
+B22A;HANGUL SYLLABLE NWEOLM;Lo;0;L;;;;;N;;;;;
+B22B;HANGUL SYLLABLE NWEOLB;Lo;0;L;;;;;N;;;;;
+B22C;HANGUL SYLLABLE NWEOLS;Lo;0;L;;;;;N;;;;;
+B22D;HANGUL SYLLABLE NWEOLT;Lo;0;L;;;;;N;;;;;
+B22E;HANGUL SYLLABLE NWEOLP;Lo;0;L;;;;;N;;;;;
+B22F;HANGUL SYLLABLE NWEOLH;Lo;0;L;;;;;N;;;;;
+B230;HANGUL SYLLABLE NWEOM;Lo;0;L;;;;;N;;;;;
+B231;HANGUL SYLLABLE NWEOB;Lo;0;L;;;;;N;;;;;
+B232;HANGUL SYLLABLE NWEOBS;Lo;0;L;;;;;N;;;;;
+B233;HANGUL SYLLABLE NWEOS;Lo;0;L;;;;;N;;;;;
+B234;HANGUL SYLLABLE NWEOSS;Lo;0;L;;;;;N;;;;;
+B235;HANGUL SYLLABLE NWEONG;Lo;0;L;;;;;N;;;;;
+B236;HANGUL SYLLABLE NWEOJ;Lo;0;L;;;;;N;;;;;
+B237;HANGUL SYLLABLE NWEOC;Lo;0;L;;;;;N;;;;;
+B238;HANGUL SYLLABLE NWEOK;Lo;0;L;;;;;N;;;;;
+B239;HANGUL SYLLABLE NWEOT;Lo;0;L;;;;;N;;;;;
+B23A;HANGUL SYLLABLE NWEOP;Lo;0;L;;;;;N;;;;;
+B23B;HANGUL SYLLABLE NWEOH;Lo;0;L;;;;;N;;;;;
+B23C;HANGUL SYLLABLE NWE;Lo;0;L;;;;;N;;;;;
+B23D;HANGUL SYLLABLE NWEG;Lo;0;L;;;;;N;;;;;
+B23E;HANGUL SYLLABLE NWEGG;Lo;0;L;;;;;N;;;;;
+B23F;HANGUL SYLLABLE NWEGS;Lo;0;L;;;;;N;;;;;
+B240;HANGUL SYLLABLE NWEN;Lo;0;L;;;;;N;;;;;
+B241;HANGUL SYLLABLE NWENI;Lo;0;L;;;;;N;;;;;
+B242;HANGUL SYLLABLE NWENH;Lo;0;L;;;;;N;;;;;
+B243;HANGUL SYLLABLE NWED;Lo;0;L;;;;;N;;;;;
+B244;HANGUL SYLLABLE NWEL;Lo;0;L;;;;;N;;;;;
+B245;HANGUL SYLLABLE NWELG;Lo;0;L;;;;;N;;;;;
+B246;HANGUL SYLLABLE NWELM;Lo;0;L;;;;;N;;;;;
+B247;HANGUL SYLLABLE NWELB;Lo;0;L;;;;;N;;;;;
+B248;HANGUL SYLLABLE NWELS;Lo;0;L;;;;;N;;;;;
+B249;HANGUL SYLLABLE NWELT;Lo;0;L;;;;;N;;;;;
+B24A;HANGUL SYLLABLE NWELP;Lo;0;L;;;;;N;;;;;
+B24B;HANGUL SYLLABLE NWELH;Lo;0;L;;;;;N;;;;;
+B24C;HANGUL SYLLABLE NWEM;Lo;0;L;;;;;N;;;;;
+B24D;HANGUL SYLLABLE NWEB;Lo;0;L;;;;;N;;;;;
+B24E;HANGUL SYLLABLE NWEBS;Lo;0;L;;;;;N;;;;;
+B24F;HANGUL SYLLABLE NWES;Lo;0;L;;;;;N;;;;;
+B250;HANGUL SYLLABLE NWESS;Lo;0;L;;;;;N;;;;;
+B251;HANGUL SYLLABLE NWENG;Lo;0;L;;;;;N;;;;;
+B252;HANGUL SYLLABLE NWEJ;Lo;0;L;;;;;N;;;;;
+B253;HANGUL SYLLABLE NWEC;Lo;0;L;;;;;N;;;;;
+B254;HANGUL SYLLABLE NWEK;Lo;0;L;;;;;N;;;;;
+B255;HANGUL SYLLABLE NWET;Lo;0;L;;;;;N;;;;;
+B256;HANGUL SYLLABLE NWEP;Lo;0;L;;;;;N;;;;;
+B257;HANGUL SYLLABLE NWEH;Lo;0;L;;;;;N;;;;;
+B258;HANGUL SYLLABLE NWI;Lo;0;L;;;;;N;;;;;
+B259;HANGUL SYLLABLE NWIG;Lo;0;L;;;;;N;;;;;
+B25A;HANGUL SYLLABLE NWIGG;Lo;0;L;;;;;N;;;;;
+B25B;HANGUL SYLLABLE NWIGS;Lo;0;L;;;;;N;;;;;
+B25C;HANGUL SYLLABLE NWIN;Lo;0;L;;;;;N;;;;;
+B25D;HANGUL SYLLABLE NWINI;Lo;0;L;;;;;N;;;;;
+B25E;HANGUL SYLLABLE NWINH;Lo;0;L;;;;;N;;;;;
+B25F;HANGUL SYLLABLE NWID;Lo;0;L;;;;;N;;;;;
+B260;HANGUL SYLLABLE NWIL;Lo;0;L;;;;;N;;;;;
+B261;HANGUL SYLLABLE NWILG;Lo;0;L;;;;;N;;;;;
+B262;HANGUL SYLLABLE NWILM;Lo;0;L;;;;;N;;;;;
+B263;HANGUL SYLLABLE NWILB;Lo;0;L;;;;;N;;;;;
+B264;HANGUL SYLLABLE NWILS;Lo;0;L;;;;;N;;;;;
+B265;HANGUL SYLLABLE NWILT;Lo;0;L;;;;;N;;;;;
+B266;HANGUL SYLLABLE NWILP;Lo;0;L;;;;;N;;;;;
+B267;HANGUL SYLLABLE NWILH;Lo;0;L;;;;;N;;;;;
+B268;HANGUL SYLLABLE NWIM;Lo;0;L;;;;;N;;;;;
+B269;HANGUL SYLLABLE NWIB;Lo;0;L;;;;;N;;;;;
+B26A;HANGUL SYLLABLE NWIBS;Lo;0;L;;;;;N;;;;;
+B26B;HANGUL SYLLABLE NWIS;Lo;0;L;;;;;N;;;;;
+B26C;HANGUL SYLLABLE NWISS;Lo;0;L;;;;;N;;;;;
+B26D;HANGUL SYLLABLE NWING;Lo;0;L;;;;;N;;;;;
+B26E;HANGUL SYLLABLE NWIJ;Lo;0;L;;;;;N;;;;;
+B26F;HANGUL SYLLABLE NWIC;Lo;0;L;;;;;N;;;;;
+B270;HANGUL SYLLABLE NWIK;Lo;0;L;;;;;N;;;;;
+B271;HANGUL SYLLABLE NWIT;Lo;0;L;;;;;N;;;;;
+B272;HANGUL SYLLABLE NWIP;Lo;0;L;;;;;N;;;;;
+B273;HANGUL SYLLABLE NWIH;Lo;0;L;;;;;N;;;;;
+B274;HANGUL SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+B275;HANGUL SYLLABLE NYUG;Lo;0;L;;;;;N;;;;;
+B276;HANGUL SYLLABLE NYUGG;Lo;0;L;;;;;N;;;;;
+B277;HANGUL SYLLABLE NYUGS;Lo;0;L;;;;;N;;;;;
+B278;HANGUL SYLLABLE NYUN;Lo;0;L;;;;;N;;;;;
+B279;HANGUL SYLLABLE NYUNI;Lo;0;L;;;;;N;;;;;
+B27A;HANGUL SYLLABLE NYUNH;Lo;0;L;;;;;N;;;;;
+B27B;HANGUL SYLLABLE NYUD;Lo;0;L;;;;;N;;;;;
+B27C;HANGUL SYLLABLE NYUL;Lo;0;L;;;;;N;;;;;
+B27D;HANGUL SYLLABLE NYULG;Lo;0;L;;;;;N;;;;;
+B27E;HANGUL SYLLABLE NYULM;Lo;0;L;;;;;N;;;;;
+B27F;HANGUL SYLLABLE NYULB;Lo;0;L;;;;;N;;;;;
+B280;HANGUL SYLLABLE NYULS;Lo;0;L;;;;;N;;;;;
+B281;HANGUL SYLLABLE NYULT;Lo;0;L;;;;;N;;;;;
+B282;HANGUL SYLLABLE NYULP;Lo;0;L;;;;;N;;;;;
+B283;HANGUL SYLLABLE NYULH;Lo;0;L;;;;;N;;;;;
+B284;HANGUL SYLLABLE NYUM;Lo;0;L;;;;;N;;;;;
+B285;HANGUL SYLLABLE NYUB;Lo;0;L;;;;;N;;;;;
+B286;HANGUL SYLLABLE NYUBS;Lo;0;L;;;;;N;;;;;
+B287;HANGUL SYLLABLE NYUS;Lo;0;L;;;;;N;;;;;
+B288;HANGUL SYLLABLE NYUSS;Lo;0;L;;;;;N;;;;;
+B289;HANGUL SYLLABLE NYUNG;Lo;0;L;;;;;N;;;;;
+B28A;HANGUL SYLLABLE NYUJ;Lo;0;L;;;;;N;;;;;
+B28B;HANGUL SYLLABLE NYUC;Lo;0;L;;;;;N;;;;;
+B28C;HANGUL SYLLABLE NYUK;Lo;0;L;;;;;N;;;;;
+B28D;HANGUL SYLLABLE NYUT;Lo;0;L;;;;;N;;;;;
+B28E;HANGUL SYLLABLE NYUP;Lo;0;L;;;;;N;;;;;
+B28F;HANGUL SYLLABLE NYUH;Lo;0;L;;;;;N;;;;;
+B290;HANGUL SYLLABLE NEU;Lo;0;L;;;;;N;;;;;
+B291;HANGUL SYLLABLE NEUG;Lo;0;L;;;;;N;;;;;
+B292;HANGUL SYLLABLE NEUGG;Lo;0;L;;;;;N;;;;;
+B293;HANGUL SYLLABLE NEUGS;Lo;0;L;;;;;N;;;;;
+B294;HANGUL SYLLABLE NEUN;Lo;0;L;;;;;N;;;;;
+B295;HANGUL SYLLABLE NEUNI;Lo;0;L;;;;;N;;;;;
+B296;HANGUL SYLLABLE NEUNH;Lo;0;L;;;;;N;;;;;
+B297;HANGUL SYLLABLE NEUD;Lo;0;L;;;;;N;;;;;
+B298;HANGUL SYLLABLE NEUL;Lo;0;L;;;;;N;;;;;
+B299;HANGUL SYLLABLE NEULG;Lo;0;L;;;;;N;;;;;
+B29A;HANGUL SYLLABLE NEULM;Lo;0;L;;;;;N;;;;;
+B29B;HANGUL SYLLABLE NEULB;Lo;0;L;;;;;N;;;;;
+B29C;HANGUL SYLLABLE NEULS;Lo;0;L;;;;;N;;;;;
+B29D;HANGUL SYLLABLE NEULT;Lo;0;L;;;;;N;;;;;
+B29E;HANGUL SYLLABLE NEULP;Lo;0;L;;;;;N;;;;;
+B29F;HANGUL SYLLABLE NEULH;Lo;0;L;;;;;N;;;;;
+B2A0;HANGUL SYLLABLE NEUM;Lo;0;L;;;;;N;;;;;
+B2A1;HANGUL SYLLABLE NEUB;Lo;0;L;;;;;N;;;;;
+B2A2;HANGUL SYLLABLE NEUBS;Lo;0;L;;;;;N;;;;;
+B2A3;HANGUL SYLLABLE NEUS;Lo;0;L;;;;;N;;;;;
+B2A4;HANGUL SYLLABLE NEUSS;Lo;0;L;;;;;N;;;;;
+B2A5;HANGUL SYLLABLE NEUNG;Lo;0;L;;;;;N;;;;;
+B2A6;HANGUL SYLLABLE NEUJ;Lo;0;L;;;;;N;;;;;
+B2A7;HANGUL SYLLABLE NEUC;Lo;0;L;;;;;N;;;;;
+B2A8;HANGUL SYLLABLE NEUK;Lo;0;L;;;;;N;;;;;
+B2A9;HANGUL SYLLABLE NEUT;Lo;0;L;;;;;N;;;;;
+B2AA;HANGUL SYLLABLE NEUP;Lo;0;L;;;;;N;;;;;
+B2AB;HANGUL SYLLABLE NEUH;Lo;0;L;;;;;N;;;;;
+B2AC;HANGUL SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+B2AD;HANGUL SYLLABLE NYIG;Lo;0;L;;;;;N;;;;;
+B2AE;HANGUL SYLLABLE NYIGG;Lo;0;L;;;;;N;;;;;
+B2AF;HANGUL SYLLABLE NYIGS;Lo;0;L;;;;;N;;;;;
+B2B0;HANGUL SYLLABLE NYIN;Lo;0;L;;;;;N;;;;;
+B2B1;HANGUL SYLLABLE NYINI;Lo;0;L;;;;;N;;;;;
+B2B2;HANGUL SYLLABLE NYINH;Lo;0;L;;;;;N;;;;;
+B2B3;HANGUL SYLLABLE NYID;Lo;0;L;;;;;N;;;;;
+B2B4;HANGUL SYLLABLE NYIL;Lo;0;L;;;;;N;;;;;
+B2B5;HANGUL SYLLABLE NYILG;Lo;0;L;;;;;N;;;;;
+B2B6;HANGUL SYLLABLE NYILM;Lo;0;L;;;;;N;;;;;
+B2B7;HANGUL SYLLABLE NYILB;Lo;0;L;;;;;N;;;;;
+B2B8;HANGUL SYLLABLE NYILS;Lo;0;L;;;;;N;;;;;
+B2B9;HANGUL SYLLABLE NYILT;Lo;0;L;;;;;N;;;;;
+B2BA;HANGUL SYLLABLE NYILP;Lo;0;L;;;;;N;;;;;
+B2BB;HANGUL SYLLABLE NYILH;Lo;0;L;;;;;N;;;;;
+B2BC;HANGUL SYLLABLE NYIM;Lo;0;L;;;;;N;;;;;
+B2BD;HANGUL SYLLABLE NYIB;Lo;0;L;;;;;N;;;;;
+B2BE;HANGUL SYLLABLE NYIBS;Lo;0;L;;;;;N;;;;;
+B2BF;HANGUL SYLLABLE NYIS;Lo;0;L;;;;;N;;;;;
+B2C0;HANGUL SYLLABLE NYISS;Lo;0;L;;;;;N;;;;;
+B2C1;HANGUL SYLLABLE NYING;Lo;0;L;;;;;N;;;;;
+B2C2;HANGUL SYLLABLE NYIJ;Lo;0;L;;;;;N;;;;;
+B2C3;HANGUL SYLLABLE NYIC;Lo;0;L;;;;;N;;;;;
+B2C4;HANGUL SYLLABLE NYIK;Lo;0;L;;;;;N;;;;;
+B2C5;HANGUL SYLLABLE NYIT;Lo;0;L;;;;;N;;;;;
+B2C6;HANGUL SYLLABLE NYIP;Lo;0;L;;;;;N;;;;;
+B2C7;HANGUL SYLLABLE NYIH;Lo;0;L;;;;;N;;;;;
+B2C8;HANGUL SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+B2C9;HANGUL SYLLABLE NIG;Lo;0;L;;;;;N;;;;;
+B2CA;HANGUL SYLLABLE NIGG;Lo;0;L;;;;;N;;;;;
+B2CB;HANGUL SYLLABLE NIGS;Lo;0;L;;;;;N;;;;;
+B2CC;HANGUL SYLLABLE NIN;Lo;0;L;;;;;N;;;;;
+B2CD;HANGUL SYLLABLE NINI;Lo;0;L;;;;;N;;;;;
+B2CE;HANGUL SYLLABLE NINH;Lo;0;L;;;;;N;;;;;
+B2CF;HANGUL SYLLABLE NID;Lo;0;L;;;;;N;;;;;
+B2D0;HANGUL SYLLABLE NIL;Lo;0;L;;;;;N;;;;;
+B2D1;HANGUL SYLLABLE NILG;Lo;0;L;;;;;N;;;;;
+B2D2;HANGUL SYLLABLE NILM;Lo;0;L;;;;;N;;;;;
+B2D3;HANGUL SYLLABLE NILB;Lo;0;L;;;;;N;;;;;
+B2D4;HANGUL SYLLABLE NILS;Lo;0;L;;;;;N;;;;;
+B2D5;HANGUL SYLLABLE NILT;Lo;0;L;;;;;N;;;;;
+B2D6;HANGUL SYLLABLE NILP;Lo;0;L;;;;;N;;;;;
+B2D7;HANGUL SYLLABLE NILH;Lo;0;L;;;;;N;;;;;
+B2D8;HANGUL SYLLABLE NIM;Lo;0;L;;;;;N;;;;;
+B2D9;HANGUL SYLLABLE NIB;Lo;0;L;;;;;N;;;;;
+B2DA;HANGUL SYLLABLE NIBS;Lo;0;L;;;;;N;;;;;
+B2DB;HANGUL SYLLABLE NIS;Lo;0;L;;;;;N;;;;;
+B2DC;HANGUL SYLLABLE NISS;Lo;0;L;;;;;N;;;;;
+B2DD;HANGUL SYLLABLE NING;Lo;0;L;;;;;N;;;;;
+B2DE;HANGUL SYLLABLE NIJ;Lo;0;L;;;;;N;;;;;
+B2DF;HANGUL SYLLABLE NIC;Lo;0;L;;;;;N;;;;;
+B2E0;HANGUL SYLLABLE NIK;Lo;0;L;;;;;N;;;;;
+B2E1;HANGUL SYLLABLE NIT;Lo;0;L;;;;;N;;;;;
+B2E2;HANGUL SYLLABLE NIP;Lo;0;L;;;;;N;;;;;
+B2E3;HANGUL SYLLABLE NIH;Lo;0;L;;;;;N;;;;;
+B2E4;HANGUL SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+B2E5;HANGUL SYLLABLE DAG;Lo;0;L;;;;;N;;;;;
+B2E6;HANGUL SYLLABLE DAGG;Lo;0;L;;;;;N;;;;;
+B2E7;HANGUL SYLLABLE DAGS;Lo;0;L;;;;;N;;;;;
+B2E8;HANGUL SYLLABLE DAN;Lo;0;L;;;;;N;;;;;
+B2E9;HANGUL SYLLABLE DANI;Lo;0;L;;;;;N;;;;;
+B2EA;HANGUL SYLLABLE DANH;Lo;0;L;;;;;N;;;;;
+B2EB;HANGUL SYLLABLE DAD;Lo;0;L;;;;;N;;;;;
+B2EC;HANGUL SYLLABLE DAL;Lo;0;L;;;;;N;;;;;
+B2ED;HANGUL SYLLABLE DALG;Lo;0;L;;;;;N;;;;;
+B2EE;HANGUL SYLLABLE DALM;Lo;0;L;;;;;N;;;;;
+B2EF;HANGUL SYLLABLE DALB;Lo;0;L;;;;;N;;;;;
+B2F0;HANGUL SYLLABLE DALS;Lo;0;L;;;;;N;;;;;
+B2F1;HANGUL SYLLABLE DALT;Lo;0;L;;;;;N;;;;;
+B2F2;HANGUL SYLLABLE DALP;Lo;0;L;;;;;N;;;;;
+B2F3;HANGUL SYLLABLE DALH;Lo;0;L;;;;;N;;;;;
+B2F4;HANGUL SYLLABLE DAM;Lo;0;L;;;;;N;;;;;
+B2F5;HANGUL SYLLABLE DAB;Lo;0;L;;;;;N;;;;;
+B2F6;HANGUL SYLLABLE DABS;Lo;0;L;;;;;N;;;;;
+B2F7;HANGUL SYLLABLE DAS;Lo;0;L;;;;;N;;;;;
+B2F8;HANGUL SYLLABLE DASS;Lo;0;L;;;;;N;;;;;
+B2F9;HANGUL SYLLABLE DANG;Lo;0;L;;;;;N;;;;;
+B2FA;HANGUL SYLLABLE DAJ;Lo;0;L;;;;;N;;;;;
+B2FB;HANGUL SYLLABLE DAC;Lo;0;L;;;;;N;;;;;
+B2FC;HANGUL SYLLABLE DAK;Lo;0;L;;;;;N;;;;;
+B2FD;HANGUL SYLLABLE DAT;Lo;0;L;;;;;N;;;;;
+B2FE;HANGUL SYLLABLE DAP;Lo;0;L;;;;;N;;;;;
+B2FF;HANGUL SYLLABLE DAH;Lo;0;L;;;;;N;;;;;
+B300;HANGUL SYLLABLE DAE;Lo;0;L;;;;;N;;;;;
+B301;HANGUL SYLLABLE DAEG;Lo;0;L;;;;;N;;;;;
+B302;HANGUL SYLLABLE DAEGG;Lo;0;L;;;;;N;;;;;
+B303;HANGUL SYLLABLE DAEGS;Lo;0;L;;;;;N;;;;;
+B304;HANGUL SYLLABLE DAEN;Lo;0;L;;;;;N;;;;;
+B305;HANGUL SYLLABLE DAENI;Lo;0;L;;;;;N;;;;;
+B306;HANGUL SYLLABLE DAENH;Lo;0;L;;;;;N;;;;;
+B307;HANGUL SYLLABLE DAED;Lo;0;L;;;;;N;;;;;
+B308;HANGUL SYLLABLE DAEL;Lo;0;L;;;;;N;;;;;
+B309;HANGUL SYLLABLE DAELG;Lo;0;L;;;;;N;;;;;
+B30A;HANGUL SYLLABLE DAELM;Lo;0;L;;;;;N;;;;;
+B30B;HANGUL SYLLABLE DAELB;Lo;0;L;;;;;N;;;;;
+B30C;HANGUL SYLLABLE DAELS;Lo;0;L;;;;;N;;;;;
+B30D;HANGUL SYLLABLE DAELT;Lo;0;L;;;;;N;;;;;
+B30E;HANGUL SYLLABLE DAELP;Lo;0;L;;;;;N;;;;;
+B30F;HANGUL SYLLABLE DAELH;Lo;0;L;;;;;N;;;;;
+B310;HANGUL SYLLABLE DAEM;Lo;0;L;;;;;N;;;;;
+B311;HANGUL SYLLABLE DAEB;Lo;0;L;;;;;N;;;;;
+B312;HANGUL SYLLABLE DAEBS;Lo;0;L;;;;;N;;;;;
+B313;HANGUL SYLLABLE DAES;Lo;0;L;;;;;N;;;;;
+B314;HANGUL SYLLABLE DAESS;Lo;0;L;;;;;N;;;;;
+B315;HANGUL SYLLABLE DAENG;Lo;0;L;;;;;N;;;;;
+B316;HANGUL SYLLABLE DAEJ;Lo;0;L;;;;;N;;;;;
+B317;HANGUL SYLLABLE DAEC;Lo;0;L;;;;;N;;;;;
+B318;HANGUL SYLLABLE DAEK;Lo;0;L;;;;;N;;;;;
+B319;HANGUL SYLLABLE DAET;Lo;0;L;;;;;N;;;;;
+B31A;HANGUL SYLLABLE DAEP;Lo;0;L;;;;;N;;;;;
+B31B;HANGUL SYLLABLE DAEH;Lo;0;L;;;;;N;;;;;
+B31C;HANGUL SYLLABLE DYA;Lo;0;L;;;;;N;;;;;
+B31D;HANGUL SYLLABLE DYAG;Lo;0;L;;;;;N;;;;;
+B31E;HANGUL SYLLABLE DYAGG;Lo;0;L;;;;;N;;;;;
+B31F;HANGUL SYLLABLE DYAGS;Lo;0;L;;;;;N;;;;;
+B320;HANGUL SYLLABLE DYAN;Lo;0;L;;;;;N;;;;;
+B321;HANGUL SYLLABLE DYANI;Lo;0;L;;;;;N;;;;;
+B322;HANGUL SYLLABLE DYANH;Lo;0;L;;;;;N;;;;;
+B323;HANGUL SYLLABLE DYAD;Lo;0;L;;;;;N;;;;;
+B324;HANGUL SYLLABLE DYAL;Lo;0;L;;;;;N;;;;;
+B325;HANGUL SYLLABLE DYALG;Lo;0;L;;;;;N;;;;;
+B326;HANGUL SYLLABLE DYALM;Lo;0;L;;;;;N;;;;;
+B327;HANGUL SYLLABLE DYALB;Lo;0;L;;;;;N;;;;;
+B328;HANGUL SYLLABLE DYALS;Lo;0;L;;;;;N;;;;;
+B329;HANGUL SYLLABLE DYALT;Lo;0;L;;;;;N;;;;;
+B32A;HANGUL SYLLABLE DYALP;Lo;0;L;;;;;N;;;;;
+B32B;HANGUL SYLLABLE DYALH;Lo;0;L;;;;;N;;;;;
+B32C;HANGUL SYLLABLE DYAM;Lo;0;L;;;;;N;;;;;
+B32D;HANGUL SYLLABLE DYAB;Lo;0;L;;;;;N;;;;;
+B32E;HANGUL SYLLABLE DYABS;Lo;0;L;;;;;N;;;;;
+B32F;HANGUL SYLLABLE DYAS;Lo;0;L;;;;;N;;;;;
+B330;HANGUL SYLLABLE DYASS;Lo;0;L;;;;;N;;;;;
+B331;HANGUL SYLLABLE DYANG;Lo;0;L;;;;;N;;;;;
+B332;HANGUL SYLLABLE DYAJ;Lo;0;L;;;;;N;;;;;
+B333;HANGUL SYLLABLE DYAC;Lo;0;L;;;;;N;;;;;
+B334;HANGUL SYLLABLE DYAK;Lo;0;L;;;;;N;;;;;
+B335;HANGUL SYLLABLE DYAT;Lo;0;L;;;;;N;;;;;
+B336;HANGUL SYLLABLE DYAP;Lo;0;L;;;;;N;;;;;
+B337;HANGUL SYLLABLE DYAH;Lo;0;L;;;;;N;;;;;
+B338;HANGUL SYLLABLE DYAE;Lo;0;L;;;;;N;;;;;
+B339;HANGUL SYLLABLE DYAEG;Lo;0;L;;;;;N;;;;;
+B33A;HANGUL SYLLABLE DYAEGG;Lo;0;L;;;;;N;;;;;
+B33B;HANGUL SYLLABLE DYAEGS;Lo;0;L;;;;;N;;;;;
+B33C;HANGUL SYLLABLE DYAEN;Lo;0;L;;;;;N;;;;;
+B33D;HANGUL SYLLABLE DYAENI;Lo;0;L;;;;;N;;;;;
+B33E;HANGUL SYLLABLE DYAENH;Lo;0;L;;;;;N;;;;;
+B33F;HANGUL SYLLABLE DYAED;Lo;0;L;;;;;N;;;;;
+B340;HANGUL SYLLABLE DYAEL;Lo;0;L;;;;;N;;;;;
+B341;HANGUL SYLLABLE DYAELG;Lo;0;L;;;;;N;;;;;
+B342;HANGUL SYLLABLE DYAELM;Lo;0;L;;;;;N;;;;;
+B343;HANGUL SYLLABLE DYAELB;Lo;0;L;;;;;N;;;;;
+B344;HANGUL SYLLABLE DYAELS;Lo;0;L;;;;;N;;;;;
+B345;HANGUL SYLLABLE DYAELT;Lo;0;L;;;;;N;;;;;
+B346;HANGUL SYLLABLE DYAELP;Lo;0;L;;;;;N;;;;;
+B347;HANGUL SYLLABLE DYAELH;Lo;0;L;;;;;N;;;;;
+B348;HANGUL SYLLABLE DYAEM;Lo;0;L;;;;;N;;;;;
+B349;HANGUL SYLLABLE DYAEB;Lo;0;L;;;;;N;;;;;
+B34A;HANGUL SYLLABLE DYAEBS;Lo;0;L;;;;;N;;;;;
+B34B;HANGUL SYLLABLE DYAES;Lo;0;L;;;;;N;;;;;
+B34C;HANGUL SYLLABLE DYAESS;Lo;0;L;;;;;N;;;;;
+B34D;HANGUL SYLLABLE DYAENG;Lo;0;L;;;;;N;;;;;
+B34E;HANGUL SYLLABLE DYAEJ;Lo;0;L;;;;;N;;;;;
+B34F;HANGUL SYLLABLE DYAEC;Lo;0;L;;;;;N;;;;;
+B350;HANGUL SYLLABLE DYAEK;Lo;0;L;;;;;N;;;;;
+B351;HANGUL SYLLABLE DYAET;Lo;0;L;;;;;N;;;;;
+B352;HANGUL SYLLABLE DYAEP;Lo;0;L;;;;;N;;;;;
+B353;HANGUL SYLLABLE DYAEH;Lo;0;L;;;;;N;;;;;
+B354;HANGUL SYLLABLE DEO;Lo;0;L;;;;;N;;;;;
+B355;HANGUL SYLLABLE DEOG;Lo;0;L;;;;;N;;;;;
+B356;HANGUL SYLLABLE DEOGG;Lo;0;L;;;;;N;;;;;
+B357;HANGUL SYLLABLE DEOGS;Lo;0;L;;;;;N;;;;;
+B358;HANGUL SYLLABLE DEON;Lo;0;L;;;;;N;;;;;
+B359;HANGUL SYLLABLE DEONI;Lo;0;L;;;;;N;;;;;
+B35A;HANGUL SYLLABLE DEONH;Lo;0;L;;;;;N;;;;;
+B35B;HANGUL SYLLABLE DEOD;Lo;0;L;;;;;N;;;;;
+B35C;HANGUL SYLLABLE DEOL;Lo;0;L;;;;;N;;;;;
+B35D;HANGUL SYLLABLE DEOLG;Lo;0;L;;;;;N;;;;;
+B35E;HANGUL SYLLABLE DEOLM;Lo;0;L;;;;;N;;;;;
+B35F;HANGUL SYLLABLE DEOLB;Lo;0;L;;;;;N;;;;;
+B360;HANGUL SYLLABLE DEOLS;Lo;0;L;;;;;N;;;;;
+B361;HANGUL SYLLABLE DEOLT;Lo;0;L;;;;;N;;;;;
+B362;HANGUL SYLLABLE DEOLP;Lo;0;L;;;;;N;;;;;
+B363;HANGUL SYLLABLE DEOLH;Lo;0;L;;;;;N;;;;;
+B364;HANGUL SYLLABLE DEOM;Lo;0;L;;;;;N;;;;;
+B365;HANGUL SYLLABLE DEOB;Lo;0;L;;;;;N;;;;;
+B366;HANGUL SYLLABLE DEOBS;Lo;0;L;;;;;N;;;;;
+B367;HANGUL SYLLABLE DEOS;Lo;0;L;;;;;N;;;;;
+B368;HANGUL SYLLABLE DEOSS;Lo;0;L;;;;;N;;;;;
+B369;HANGUL SYLLABLE DEONG;Lo;0;L;;;;;N;;;;;
+B36A;HANGUL SYLLABLE DEOJ;Lo;0;L;;;;;N;;;;;
+B36B;HANGUL SYLLABLE DEOC;Lo;0;L;;;;;N;;;;;
+B36C;HANGUL SYLLABLE DEOK;Lo;0;L;;;;;N;;;;;
+B36D;HANGUL SYLLABLE DEOT;Lo;0;L;;;;;N;;;;;
+B36E;HANGUL SYLLABLE DEOP;Lo;0;L;;;;;N;;;;;
+B36F;HANGUL SYLLABLE DEOH;Lo;0;L;;;;;N;;;;;
+B370;HANGUL SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+B371;HANGUL SYLLABLE DEG;Lo;0;L;;;;;N;;;;;
+B372;HANGUL SYLLABLE DEGG;Lo;0;L;;;;;N;;;;;
+B373;HANGUL SYLLABLE DEGS;Lo;0;L;;;;;N;;;;;
+B374;HANGUL SYLLABLE DEN;Lo;0;L;;;;;N;;;;;
+B375;HANGUL SYLLABLE DENI;Lo;0;L;;;;;N;;;;;
+B376;HANGUL SYLLABLE DENH;Lo;0;L;;;;;N;;;;;
+B377;HANGUL SYLLABLE DED;Lo;0;L;;;;;N;;;;;
+B378;HANGUL SYLLABLE DEL;Lo;0;L;;;;;N;;;;;
+B379;HANGUL SYLLABLE DELG;Lo;0;L;;;;;N;;;;;
+B37A;HANGUL SYLLABLE DELM;Lo;0;L;;;;;N;;;;;
+B37B;HANGUL SYLLABLE DELB;Lo;0;L;;;;;N;;;;;
+B37C;HANGUL SYLLABLE DELS;Lo;0;L;;;;;N;;;;;
+B37D;HANGUL SYLLABLE DELT;Lo;0;L;;;;;N;;;;;
+B37E;HANGUL SYLLABLE DELP;Lo;0;L;;;;;N;;;;;
+B37F;HANGUL SYLLABLE DELH;Lo;0;L;;;;;N;;;;;
+B380;HANGUL SYLLABLE DEM;Lo;0;L;;;;;N;;;;;
+B381;HANGUL SYLLABLE DEB;Lo;0;L;;;;;N;;;;;
+B382;HANGUL SYLLABLE DEBS;Lo;0;L;;;;;N;;;;;
+B383;HANGUL SYLLABLE DES;Lo;0;L;;;;;N;;;;;
+B384;HANGUL SYLLABLE DESS;Lo;0;L;;;;;N;;;;;
+B385;HANGUL SYLLABLE DENG;Lo;0;L;;;;;N;;;;;
+B386;HANGUL SYLLABLE DEJ;Lo;0;L;;;;;N;;;;;
+B387;HANGUL SYLLABLE DEC;Lo;0;L;;;;;N;;;;;
+B388;HANGUL SYLLABLE DEK;Lo;0;L;;;;;N;;;;;
+B389;HANGUL SYLLABLE DET;Lo;0;L;;;;;N;;;;;
+B38A;HANGUL SYLLABLE DEP;Lo;0;L;;;;;N;;;;;
+B38B;HANGUL SYLLABLE DEH;Lo;0;L;;;;;N;;;;;
+B38C;HANGUL SYLLABLE DYEO;Lo;0;L;;;;;N;;;;;
+B38D;HANGUL SYLLABLE DYEOG;Lo;0;L;;;;;N;;;;;
+B38E;HANGUL SYLLABLE DYEOGG;Lo;0;L;;;;;N;;;;;
+B38F;HANGUL SYLLABLE DYEOGS;Lo;0;L;;;;;N;;;;;
+B390;HANGUL SYLLABLE DYEON;Lo;0;L;;;;;N;;;;;
+B391;HANGUL SYLLABLE DYEONI;Lo;0;L;;;;;N;;;;;
+B392;HANGUL SYLLABLE DYEONH;Lo;0;L;;;;;N;;;;;
+B393;HANGUL SYLLABLE DYEOD;Lo;0;L;;;;;N;;;;;
+B394;HANGUL SYLLABLE DYEOL;Lo;0;L;;;;;N;;;;;
+B395;HANGUL SYLLABLE DYEOLG;Lo;0;L;;;;;N;;;;;
+B396;HANGUL SYLLABLE DYEOLM;Lo;0;L;;;;;N;;;;;
+B397;HANGUL SYLLABLE DYEOLB;Lo;0;L;;;;;N;;;;;
+B398;HANGUL SYLLABLE DYEOLS;Lo;0;L;;;;;N;;;;;
+B399;HANGUL SYLLABLE DYEOLT;Lo;0;L;;;;;N;;;;;
+B39A;HANGUL SYLLABLE DYEOLP;Lo;0;L;;;;;N;;;;;
+B39B;HANGUL SYLLABLE DYEOLH;Lo;0;L;;;;;N;;;;;
+B39C;HANGUL SYLLABLE DYEOM;Lo;0;L;;;;;N;;;;;
+B39D;HANGUL SYLLABLE DYEOB;Lo;0;L;;;;;N;;;;;
+B39E;HANGUL SYLLABLE DYEOBS;Lo;0;L;;;;;N;;;;;
+B39F;HANGUL SYLLABLE DYEOS;Lo;0;L;;;;;N;;;;;
+B3A0;HANGUL SYLLABLE DYEOSS;Lo;0;L;;;;;N;;;;;
+B3A1;HANGUL SYLLABLE DYEONG;Lo;0;L;;;;;N;;;;;
+B3A2;HANGUL SYLLABLE DYEOJ;Lo;0;L;;;;;N;;;;;
+B3A3;HANGUL SYLLABLE DYEOC;Lo;0;L;;;;;N;;;;;
+B3A4;HANGUL SYLLABLE DYEOK;Lo;0;L;;;;;N;;;;;
+B3A5;HANGUL SYLLABLE DYEOT;Lo;0;L;;;;;N;;;;;
+B3A6;HANGUL SYLLABLE DYEOP;Lo;0;L;;;;;N;;;;;
+B3A7;HANGUL SYLLABLE DYEOH;Lo;0;L;;;;;N;;;;;
+B3A8;HANGUL SYLLABLE DYE;Lo;0;L;;;;;N;;;;;
+B3A9;HANGUL SYLLABLE DYEG;Lo;0;L;;;;;N;;;;;
+B3AA;HANGUL SYLLABLE DYEGG;Lo;0;L;;;;;N;;;;;
+B3AB;HANGUL SYLLABLE DYEGS;Lo;0;L;;;;;N;;;;;
+B3AC;HANGUL SYLLABLE DYEN;Lo;0;L;;;;;N;;;;;
+B3AD;HANGUL SYLLABLE DYENI;Lo;0;L;;;;;N;;;;;
+B3AE;HANGUL SYLLABLE DYENH;Lo;0;L;;;;;N;;;;;
+B3AF;HANGUL SYLLABLE DYED;Lo;0;L;;;;;N;;;;;
+B3B0;HANGUL SYLLABLE DYEL;Lo;0;L;;;;;N;;;;;
+B3B1;HANGUL SYLLABLE DYELG;Lo;0;L;;;;;N;;;;;
+B3B2;HANGUL SYLLABLE DYELM;Lo;0;L;;;;;N;;;;;
+B3B3;HANGUL SYLLABLE DYELB;Lo;0;L;;;;;N;;;;;
+B3B4;HANGUL SYLLABLE DYELS;Lo;0;L;;;;;N;;;;;
+B3B5;HANGUL SYLLABLE DYELT;Lo;0;L;;;;;N;;;;;
+B3B6;HANGUL SYLLABLE DYELP;Lo;0;L;;;;;N;;;;;
+B3B7;HANGUL SYLLABLE DYELH;Lo;0;L;;;;;N;;;;;
+B3B8;HANGUL SYLLABLE DYEM;Lo;0;L;;;;;N;;;;;
+B3B9;HANGUL SYLLABLE DYEB;Lo;0;L;;;;;N;;;;;
+B3BA;HANGUL SYLLABLE DYEBS;Lo;0;L;;;;;N;;;;;
+B3BB;HANGUL SYLLABLE DYES;Lo;0;L;;;;;N;;;;;
+B3BC;HANGUL SYLLABLE DYESS;Lo;0;L;;;;;N;;;;;
+B3BD;HANGUL SYLLABLE DYENG;Lo;0;L;;;;;N;;;;;
+B3BE;HANGUL SYLLABLE DYEJ;Lo;0;L;;;;;N;;;;;
+B3BF;HANGUL SYLLABLE DYEC;Lo;0;L;;;;;N;;;;;
+B3C0;HANGUL SYLLABLE DYEK;Lo;0;L;;;;;N;;;;;
+B3C1;HANGUL SYLLABLE DYET;Lo;0;L;;;;;N;;;;;
+B3C2;HANGUL SYLLABLE DYEP;Lo;0;L;;;;;N;;;;;
+B3C3;HANGUL SYLLABLE DYEH;Lo;0;L;;;;;N;;;;;
+B3C4;HANGUL SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+B3C5;HANGUL SYLLABLE DOG;Lo;0;L;;;;;N;;;;;
+B3C6;HANGUL SYLLABLE DOGG;Lo;0;L;;;;;N;;;;;
+B3C7;HANGUL SYLLABLE DOGS;Lo;0;L;;;;;N;;;;;
+B3C8;HANGUL SYLLABLE DON;Lo;0;L;;;;;N;;;;;
+B3C9;HANGUL SYLLABLE DONI;Lo;0;L;;;;;N;;;;;
+B3CA;HANGUL SYLLABLE DONH;Lo;0;L;;;;;N;;;;;
+B3CB;HANGUL SYLLABLE DOD;Lo;0;L;;;;;N;;;;;
+B3CC;HANGUL SYLLABLE DOL;Lo;0;L;;;;;N;;;;;
+B3CD;HANGUL SYLLABLE DOLG;Lo;0;L;;;;;N;;;;;
+B3CE;HANGUL SYLLABLE DOLM;Lo;0;L;;;;;N;;;;;
+B3CF;HANGUL SYLLABLE DOLB;Lo;0;L;;;;;N;;;;;
+B3D0;HANGUL SYLLABLE DOLS;Lo;0;L;;;;;N;;;;;
+B3D1;HANGUL SYLLABLE DOLT;Lo;0;L;;;;;N;;;;;
+B3D2;HANGUL SYLLABLE DOLP;Lo;0;L;;;;;N;;;;;
+B3D3;HANGUL SYLLABLE DOLH;Lo;0;L;;;;;N;;;;;
+B3D4;HANGUL SYLLABLE DOM;Lo;0;L;;;;;N;;;;;
+B3D5;HANGUL SYLLABLE DOB;Lo;0;L;;;;;N;;;;;
+B3D6;HANGUL SYLLABLE DOBS;Lo;0;L;;;;;N;;;;;
+B3D7;HANGUL SYLLABLE DOS;Lo;0;L;;;;;N;;;;;
+B3D8;HANGUL SYLLABLE DOSS;Lo;0;L;;;;;N;;;;;
+B3D9;HANGUL SYLLABLE DONG;Lo;0;L;;;;;N;;;;;
+B3DA;HANGUL SYLLABLE DOJ;Lo;0;L;;;;;N;;;;;
+B3DB;HANGUL SYLLABLE DOC;Lo;0;L;;;;;N;;;;;
+B3DC;HANGUL SYLLABLE DOK;Lo;0;L;;;;;N;;;;;
+B3DD;HANGUL SYLLABLE DOT;Lo;0;L;;;;;N;;;;;
+B3DE;HANGUL SYLLABLE DOP;Lo;0;L;;;;;N;;;;;
+B3DF;HANGUL SYLLABLE DOH;Lo;0;L;;;;;N;;;;;
+B3E0;HANGUL SYLLABLE DWA;Lo;0;L;;;;;N;;;;;
+B3E1;HANGUL SYLLABLE DWAG;Lo;0;L;;;;;N;;;;;
+B3E2;HANGUL SYLLABLE DWAGG;Lo;0;L;;;;;N;;;;;
+B3E3;HANGUL SYLLABLE DWAGS;Lo;0;L;;;;;N;;;;;
+B3E4;HANGUL SYLLABLE DWAN;Lo;0;L;;;;;N;;;;;
+B3E5;HANGUL SYLLABLE DWANI;Lo;0;L;;;;;N;;;;;
+B3E6;HANGUL SYLLABLE DWANH;Lo;0;L;;;;;N;;;;;
+B3E7;HANGUL SYLLABLE DWAD;Lo;0;L;;;;;N;;;;;
+B3E8;HANGUL SYLLABLE DWAL;Lo;0;L;;;;;N;;;;;
+B3E9;HANGUL SYLLABLE DWALG;Lo;0;L;;;;;N;;;;;
+B3EA;HANGUL SYLLABLE DWALM;Lo;0;L;;;;;N;;;;;
+B3EB;HANGUL SYLLABLE DWALB;Lo;0;L;;;;;N;;;;;
+B3EC;HANGUL SYLLABLE DWALS;Lo;0;L;;;;;N;;;;;
+B3ED;HANGUL SYLLABLE DWALT;Lo;0;L;;;;;N;;;;;
+B3EE;HANGUL SYLLABLE DWALP;Lo;0;L;;;;;N;;;;;
+B3EF;HANGUL SYLLABLE DWALH;Lo;0;L;;;;;N;;;;;
+B3F0;HANGUL SYLLABLE DWAM;Lo;0;L;;;;;N;;;;;
+B3F1;HANGUL SYLLABLE DWAB;Lo;0;L;;;;;N;;;;;
+B3F2;HANGUL SYLLABLE DWABS;Lo;0;L;;;;;N;;;;;
+B3F3;HANGUL SYLLABLE DWAS;Lo;0;L;;;;;N;;;;;
+B3F4;HANGUL SYLLABLE DWASS;Lo;0;L;;;;;N;;;;;
+B3F5;HANGUL SYLLABLE DWANG;Lo;0;L;;;;;N;;;;;
+B3F6;HANGUL SYLLABLE DWAJ;Lo;0;L;;;;;N;;;;;
+B3F7;HANGUL SYLLABLE DWAC;Lo;0;L;;;;;N;;;;;
+B3F8;HANGUL SYLLABLE DWAK;Lo;0;L;;;;;N;;;;;
+B3F9;HANGUL SYLLABLE DWAT;Lo;0;L;;;;;N;;;;;
+B3FA;HANGUL SYLLABLE DWAP;Lo;0;L;;;;;N;;;;;
+B3FB;HANGUL SYLLABLE DWAH;Lo;0;L;;;;;N;;;;;
+B3FC;HANGUL SYLLABLE DWAE;Lo;0;L;;;;;N;;;;;
+B3FD;HANGUL SYLLABLE DWAEG;Lo;0;L;;;;;N;;;;;
+B3FE;HANGUL SYLLABLE DWAEGG;Lo;0;L;;;;;N;;;;;
+B3FF;HANGUL SYLLABLE DWAEGS;Lo;0;L;;;;;N;;;;;
+B400;HANGUL SYLLABLE DWAEN;Lo;0;L;;;;;N;;;;;
+B401;HANGUL SYLLABLE DWAENI;Lo;0;L;;;;;N;;;;;
+B402;HANGUL SYLLABLE DWAENH;Lo;0;L;;;;;N;;;;;
+B403;HANGUL SYLLABLE DWAED;Lo;0;L;;;;;N;;;;;
+B404;HANGUL SYLLABLE DWAEL;Lo;0;L;;;;;N;;;;;
+B405;HANGUL SYLLABLE DWAELG;Lo;0;L;;;;;N;;;;;
+B406;HANGUL SYLLABLE DWAELM;Lo;0;L;;;;;N;;;;;
+B407;HANGUL SYLLABLE DWAELB;Lo;0;L;;;;;N;;;;;
+B408;HANGUL SYLLABLE DWAELS;Lo;0;L;;;;;N;;;;;
+B409;HANGUL SYLLABLE DWAELT;Lo;0;L;;;;;N;;;;;
+B40A;HANGUL SYLLABLE DWAELP;Lo;0;L;;;;;N;;;;;
+B40B;HANGUL SYLLABLE DWAELH;Lo;0;L;;;;;N;;;;;
+B40C;HANGUL SYLLABLE DWAEM;Lo;0;L;;;;;N;;;;;
+B40D;HANGUL SYLLABLE DWAEB;Lo;0;L;;;;;N;;;;;
+B40E;HANGUL SYLLABLE DWAEBS;Lo;0;L;;;;;N;;;;;
+B40F;HANGUL SYLLABLE DWAES;Lo;0;L;;;;;N;;;;;
+B410;HANGUL SYLLABLE DWAESS;Lo;0;L;;;;;N;;;;;
+B411;HANGUL SYLLABLE DWAENG;Lo;0;L;;;;;N;;;;;
+B412;HANGUL SYLLABLE DWAEJ;Lo;0;L;;;;;N;;;;;
+B413;HANGUL SYLLABLE DWAEC;Lo;0;L;;;;;N;;;;;
+B414;HANGUL SYLLABLE DWAEK;Lo;0;L;;;;;N;;;;;
+B415;HANGUL SYLLABLE DWAET;Lo;0;L;;;;;N;;;;;
+B416;HANGUL SYLLABLE DWAEP;Lo;0;L;;;;;N;;;;;
+B417;HANGUL SYLLABLE DWAEH;Lo;0;L;;;;;N;;;;;
+B418;HANGUL SYLLABLE DOE;Lo;0;L;;;;;N;;;;;
+B419;HANGUL SYLLABLE DOEG;Lo;0;L;;;;;N;;;;;
+B41A;HANGUL SYLLABLE DOEGG;Lo;0;L;;;;;N;;;;;
+B41B;HANGUL SYLLABLE DOEGS;Lo;0;L;;;;;N;;;;;
+B41C;HANGUL SYLLABLE DOEN;Lo;0;L;;;;;N;;;;;
+B41D;HANGUL SYLLABLE DOENI;Lo;0;L;;;;;N;;;;;
+B41E;HANGUL SYLLABLE DOENH;Lo;0;L;;;;;N;;;;;
+B41F;HANGUL SYLLABLE DOED;Lo;0;L;;;;;N;;;;;
+B420;HANGUL SYLLABLE DOEL;Lo;0;L;;;;;N;;;;;
+B421;HANGUL SYLLABLE DOELG;Lo;0;L;;;;;N;;;;;
+B422;HANGUL SYLLABLE DOELM;Lo;0;L;;;;;N;;;;;
+B423;HANGUL SYLLABLE DOELB;Lo;0;L;;;;;N;;;;;
+B424;HANGUL SYLLABLE DOELS;Lo;0;L;;;;;N;;;;;
+B425;HANGUL SYLLABLE DOELT;Lo;0;L;;;;;N;;;;;
+B426;HANGUL SYLLABLE DOELP;Lo;0;L;;;;;N;;;;;
+B427;HANGUL SYLLABLE DOELH;Lo;0;L;;;;;N;;;;;
+B428;HANGUL SYLLABLE DOEM;Lo;0;L;;;;;N;;;;;
+B429;HANGUL SYLLABLE DOEB;Lo;0;L;;;;;N;;;;;
+B42A;HANGUL SYLLABLE DOEBS;Lo;0;L;;;;;N;;;;;
+B42B;HANGUL SYLLABLE DOES;Lo;0;L;;;;;N;;;;;
+B42C;HANGUL SYLLABLE DOESS;Lo;0;L;;;;;N;;;;;
+B42D;HANGUL SYLLABLE DOENG;Lo;0;L;;;;;N;;;;;
+B42E;HANGUL SYLLABLE DOEJ;Lo;0;L;;;;;N;;;;;
+B42F;HANGUL SYLLABLE DOEC;Lo;0;L;;;;;N;;;;;
+B430;HANGUL SYLLABLE DOEK;Lo;0;L;;;;;N;;;;;
+B431;HANGUL SYLLABLE DOET;Lo;0;L;;;;;N;;;;;
+B432;HANGUL SYLLABLE DOEP;Lo;0;L;;;;;N;;;;;
+B433;HANGUL SYLLABLE DOEH;Lo;0;L;;;;;N;;;;;
+B434;HANGUL SYLLABLE DYO;Lo;0;L;;;;;N;;;;;
+B435;HANGUL SYLLABLE DYOG;Lo;0;L;;;;;N;;;;;
+B436;HANGUL SYLLABLE DYOGG;Lo;0;L;;;;;N;;;;;
+B437;HANGUL SYLLABLE DYOGS;Lo;0;L;;;;;N;;;;;
+B438;HANGUL SYLLABLE DYON;Lo;0;L;;;;;N;;;;;
+B439;HANGUL SYLLABLE DYONI;Lo;0;L;;;;;N;;;;;
+B43A;HANGUL SYLLABLE DYONH;Lo;0;L;;;;;N;;;;;
+B43B;HANGUL SYLLABLE DYOD;Lo;0;L;;;;;N;;;;;
+B43C;HANGUL SYLLABLE DYOL;Lo;0;L;;;;;N;;;;;
+B43D;HANGUL SYLLABLE DYOLG;Lo;0;L;;;;;N;;;;;
+B43E;HANGUL SYLLABLE DYOLM;Lo;0;L;;;;;N;;;;;
+B43F;HANGUL SYLLABLE DYOLB;Lo;0;L;;;;;N;;;;;
+B440;HANGUL SYLLABLE DYOLS;Lo;0;L;;;;;N;;;;;
+B441;HANGUL SYLLABLE DYOLT;Lo;0;L;;;;;N;;;;;
+B442;HANGUL SYLLABLE DYOLP;Lo;0;L;;;;;N;;;;;
+B443;HANGUL SYLLABLE DYOLH;Lo;0;L;;;;;N;;;;;
+B444;HANGUL SYLLABLE DYOM;Lo;0;L;;;;;N;;;;;
+B445;HANGUL SYLLABLE DYOB;Lo;0;L;;;;;N;;;;;
+B446;HANGUL SYLLABLE DYOBS;Lo;0;L;;;;;N;;;;;
+B447;HANGUL SYLLABLE DYOS;Lo;0;L;;;;;N;;;;;
+B448;HANGUL SYLLABLE DYOSS;Lo;0;L;;;;;N;;;;;
+B449;HANGUL SYLLABLE DYONG;Lo;0;L;;;;;N;;;;;
+B44A;HANGUL SYLLABLE DYOJ;Lo;0;L;;;;;N;;;;;
+B44B;HANGUL SYLLABLE DYOC;Lo;0;L;;;;;N;;;;;
+B44C;HANGUL SYLLABLE DYOK;Lo;0;L;;;;;N;;;;;
+B44D;HANGUL SYLLABLE DYOT;Lo;0;L;;;;;N;;;;;
+B44E;HANGUL SYLLABLE DYOP;Lo;0;L;;;;;N;;;;;
+B44F;HANGUL SYLLABLE DYOH;Lo;0;L;;;;;N;;;;;
+B450;HANGUL SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+B451;HANGUL SYLLABLE DUG;Lo;0;L;;;;;N;;;;;
+B452;HANGUL SYLLABLE DUGG;Lo;0;L;;;;;N;;;;;
+B453;HANGUL SYLLABLE DUGS;Lo;0;L;;;;;N;;;;;
+B454;HANGUL SYLLABLE DUN;Lo;0;L;;;;;N;;;;;
+B455;HANGUL SYLLABLE DUNI;Lo;0;L;;;;;N;;;;;
+B456;HANGUL SYLLABLE DUNH;Lo;0;L;;;;;N;;;;;
+B457;HANGUL SYLLABLE DUD;Lo;0;L;;;;;N;;;;;
+B458;HANGUL SYLLABLE DUL;Lo;0;L;;;;;N;;;;;
+B459;HANGUL SYLLABLE DULG;Lo;0;L;;;;;N;;;;;
+B45A;HANGUL SYLLABLE DULM;Lo;0;L;;;;;N;;;;;
+B45B;HANGUL SYLLABLE DULB;Lo;0;L;;;;;N;;;;;
+B45C;HANGUL SYLLABLE DULS;Lo;0;L;;;;;N;;;;;
+B45D;HANGUL SYLLABLE DULT;Lo;0;L;;;;;N;;;;;
+B45E;HANGUL SYLLABLE DULP;Lo;0;L;;;;;N;;;;;
+B45F;HANGUL SYLLABLE DULH;Lo;0;L;;;;;N;;;;;
+B460;HANGUL SYLLABLE DUM;Lo;0;L;;;;;N;;;;;
+B461;HANGUL SYLLABLE DUB;Lo;0;L;;;;;N;;;;;
+B462;HANGUL SYLLABLE DUBS;Lo;0;L;;;;;N;;;;;
+B463;HANGUL SYLLABLE DUS;Lo;0;L;;;;;N;;;;;
+B464;HANGUL SYLLABLE DUSS;Lo;0;L;;;;;N;;;;;
+B465;HANGUL SYLLABLE DUNG;Lo;0;L;;;;;N;;;;;
+B466;HANGUL SYLLABLE DUJ;Lo;0;L;;;;;N;;;;;
+B467;HANGUL SYLLABLE DUC;Lo;0;L;;;;;N;;;;;
+B468;HANGUL SYLLABLE DUK;Lo;0;L;;;;;N;;;;;
+B469;HANGUL SYLLABLE DUT;Lo;0;L;;;;;N;;;;;
+B46A;HANGUL SYLLABLE DUP;Lo;0;L;;;;;N;;;;;
+B46B;HANGUL SYLLABLE DUH;Lo;0;L;;;;;N;;;;;
+B46C;HANGUL SYLLABLE DWEO;Lo;0;L;;;;;N;;;;;
+B46D;HANGUL SYLLABLE DWEOG;Lo;0;L;;;;;N;;;;;
+B46E;HANGUL SYLLABLE DWEOGG;Lo;0;L;;;;;N;;;;;
+B46F;HANGUL SYLLABLE DWEOGS;Lo;0;L;;;;;N;;;;;
+B470;HANGUL SYLLABLE DWEON;Lo;0;L;;;;;N;;;;;
+B471;HANGUL SYLLABLE DWEONI;Lo;0;L;;;;;N;;;;;
+B472;HANGUL SYLLABLE DWEONH;Lo;0;L;;;;;N;;;;;
+B473;HANGUL SYLLABLE DWEOD;Lo;0;L;;;;;N;;;;;
+B474;HANGUL SYLLABLE DWEOL;Lo;0;L;;;;;N;;;;;
+B475;HANGUL SYLLABLE DWEOLG;Lo;0;L;;;;;N;;;;;
+B476;HANGUL SYLLABLE DWEOLM;Lo;0;L;;;;;N;;;;;
+B477;HANGUL SYLLABLE DWEOLB;Lo;0;L;;;;;N;;;;;
+B478;HANGUL SYLLABLE DWEOLS;Lo;0;L;;;;;N;;;;;
+B479;HANGUL SYLLABLE DWEOLT;Lo;0;L;;;;;N;;;;;
+B47A;HANGUL SYLLABLE DWEOLP;Lo;0;L;;;;;N;;;;;
+B47B;HANGUL SYLLABLE DWEOLH;Lo;0;L;;;;;N;;;;;
+B47C;HANGUL SYLLABLE DWEOM;Lo;0;L;;;;;N;;;;;
+B47D;HANGUL SYLLABLE DWEOB;Lo;0;L;;;;;N;;;;;
+B47E;HANGUL SYLLABLE DWEOBS;Lo;0;L;;;;;N;;;;;
+B47F;HANGUL SYLLABLE DWEOS;Lo;0;L;;;;;N;;;;;
+B480;HANGUL SYLLABLE DWEOSS;Lo;0;L;;;;;N;;;;;
+B481;HANGUL SYLLABLE DWEONG;Lo;0;L;;;;;N;;;;;
+B482;HANGUL SYLLABLE DWEOJ;Lo;0;L;;;;;N;;;;;
+B483;HANGUL SYLLABLE DWEOC;Lo;0;L;;;;;N;;;;;
+B484;HANGUL SYLLABLE DWEOK;Lo;0;L;;;;;N;;;;;
+B485;HANGUL SYLLABLE DWEOT;Lo;0;L;;;;;N;;;;;
+B486;HANGUL SYLLABLE DWEOP;Lo;0;L;;;;;N;;;;;
+B487;HANGUL SYLLABLE DWEOH;Lo;0;L;;;;;N;;;;;
+B488;HANGUL SYLLABLE DWE;Lo;0;L;;;;;N;;;;;
+B489;HANGUL SYLLABLE DWEG;Lo;0;L;;;;;N;;;;;
+B48A;HANGUL SYLLABLE DWEGG;Lo;0;L;;;;;N;;;;;
+B48B;HANGUL SYLLABLE DWEGS;Lo;0;L;;;;;N;;;;;
+B48C;HANGUL SYLLABLE DWEN;Lo;0;L;;;;;N;;;;;
+B48D;HANGUL SYLLABLE DWENI;Lo;0;L;;;;;N;;;;;
+B48E;HANGUL SYLLABLE DWENH;Lo;0;L;;;;;N;;;;;
+B48F;HANGUL SYLLABLE DWED;Lo;0;L;;;;;N;;;;;
+B490;HANGUL SYLLABLE DWEL;Lo;0;L;;;;;N;;;;;
+B491;HANGUL SYLLABLE DWELG;Lo;0;L;;;;;N;;;;;
+B492;HANGUL SYLLABLE DWELM;Lo;0;L;;;;;N;;;;;
+B493;HANGUL SYLLABLE DWELB;Lo;0;L;;;;;N;;;;;
+B494;HANGUL SYLLABLE DWELS;Lo;0;L;;;;;N;;;;;
+B495;HANGUL SYLLABLE DWELT;Lo;0;L;;;;;N;;;;;
+B496;HANGUL SYLLABLE DWELP;Lo;0;L;;;;;N;;;;;
+B497;HANGUL SYLLABLE DWELH;Lo;0;L;;;;;N;;;;;
+B498;HANGUL SYLLABLE DWEM;Lo;0;L;;;;;N;;;;;
+B499;HANGUL SYLLABLE DWEB;Lo;0;L;;;;;N;;;;;
+B49A;HANGUL SYLLABLE DWEBS;Lo;0;L;;;;;N;;;;;
+B49B;HANGUL SYLLABLE DWES;Lo;0;L;;;;;N;;;;;
+B49C;HANGUL SYLLABLE DWESS;Lo;0;L;;;;;N;;;;;
+B49D;HANGUL SYLLABLE DWENG;Lo;0;L;;;;;N;;;;;
+B49E;HANGUL SYLLABLE DWEJ;Lo;0;L;;;;;N;;;;;
+B49F;HANGUL SYLLABLE DWEC;Lo;0;L;;;;;N;;;;;
+B4A0;HANGUL SYLLABLE DWEK;Lo;0;L;;;;;N;;;;;
+B4A1;HANGUL SYLLABLE DWET;Lo;0;L;;;;;N;;;;;
+B4A2;HANGUL SYLLABLE DWEP;Lo;0;L;;;;;N;;;;;
+B4A3;HANGUL SYLLABLE DWEH;Lo;0;L;;;;;N;;;;;
+B4A4;HANGUL SYLLABLE DWI;Lo;0;L;;;;;N;;;;;
+B4A5;HANGUL SYLLABLE DWIG;Lo;0;L;;;;;N;;;;;
+B4A6;HANGUL SYLLABLE DWIGG;Lo;0;L;;;;;N;;;;;
+B4A7;HANGUL SYLLABLE DWIGS;Lo;0;L;;;;;N;;;;;
+B4A8;HANGUL SYLLABLE DWIN;Lo;0;L;;;;;N;;;;;
+B4A9;HANGUL SYLLABLE DWINI;Lo;0;L;;;;;N;;;;;
+B4AA;HANGUL SYLLABLE DWINH;Lo;0;L;;;;;N;;;;;
+B4AB;HANGUL SYLLABLE DWID;Lo;0;L;;;;;N;;;;;
+B4AC;HANGUL SYLLABLE DWIL;Lo;0;L;;;;;N;;;;;
+B4AD;HANGUL SYLLABLE DWILG;Lo;0;L;;;;;N;;;;;
+B4AE;HANGUL SYLLABLE DWILM;Lo;0;L;;;;;N;;;;;
+B4AF;HANGUL SYLLABLE DWILB;Lo;0;L;;;;;N;;;;;
+B4B0;HANGUL SYLLABLE DWILS;Lo;0;L;;;;;N;;;;;
+B4B1;HANGUL SYLLABLE DWILT;Lo;0;L;;;;;N;;;;;
+B4B2;HANGUL SYLLABLE DWILP;Lo;0;L;;;;;N;;;;;
+B4B3;HANGUL SYLLABLE DWILH;Lo;0;L;;;;;N;;;;;
+B4B4;HANGUL SYLLABLE DWIM;Lo;0;L;;;;;N;;;;;
+B4B5;HANGUL SYLLABLE DWIB;Lo;0;L;;;;;N;;;;;
+B4B6;HANGUL SYLLABLE DWIBS;Lo;0;L;;;;;N;;;;;
+B4B7;HANGUL SYLLABLE DWIS;Lo;0;L;;;;;N;;;;;
+B4B8;HANGUL SYLLABLE DWISS;Lo;0;L;;;;;N;;;;;
+B4B9;HANGUL SYLLABLE DWING;Lo;0;L;;;;;N;;;;;
+B4BA;HANGUL SYLLABLE DWIJ;Lo;0;L;;;;;N;;;;;
+B4BB;HANGUL SYLLABLE DWIC;Lo;0;L;;;;;N;;;;;
+B4BC;HANGUL SYLLABLE DWIK;Lo;0;L;;;;;N;;;;;
+B4BD;HANGUL SYLLABLE DWIT;Lo;0;L;;;;;N;;;;;
+B4BE;HANGUL SYLLABLE DWIP;Lo;0;L;;;;;N;;;;;
+B4BF;HANGUL SYLLABLE DWIH;Lo;0;L;;;;;N;;;;;
+B4C0;HANGUL SYLLABLE DYU;Lo;0;L;;;;;N;;;;;
+B4C1;HANGUL SYLLABLE DYUG;Lo;0;L;;;;;N;;;;;
+B4C2;HANGUL SYLLABLE DYUGG;Lo;0;L;;;;;N;;;;;
+B4C3;HANGUL SYLLABLE DYUGS;Lo;0;L;;;;;N;;;;;
+B4C4;HANGUL SYLLABLE DYUN;Lo;0;L;;;;;N;;;;;
+B4C5;HANGUL SYLLABLE DYUNI;Lo;0;L;;;;;N;;;;;
+B4C6;HANGUL SYLLABLE DYUNH;Lo;0;L;;;;;N;;;;;
+B4C7;HANGUL SYLLABLE DYUD;Lo;0;L;;;;;N;;;;;
+B4C8;HANGUL SYLLABLE DYUL;Lo;0;L;;;;;N;;;;;
+B4C9;HANGUL SYLLABLE DYULG;Lo;0;L;;;;;N;;;;;
+B4CA;HANGUL SYLLABLE DYULM;Lo;0;L;;;;;N;;;;;
+B4CB;HANGUL SYLLABLE DYULB;Lo;0;L;;;;;N;;;;;
+B4CC;HANGUL SYLLABLE DYULS;Lo;0;L;;;;;N;;;;;
+B4CD;HANGUL SYLLABLE DYULT;Lo;0;L;;;;;N;;;;;
+B4CE;HANGUL SYLLABLE DYULP;Lo;0;L;;;;;N;;;;;
+B4CF;HANGUL SYLLABLE DYULH;Lo;0;L;;;;;N;;;;;
+B4D0;HANGUL SYLLABLE DYUM;Lo;0;L;;;;;N;;;;;
+B4D1;HANGUL SYLLABLE DYUB;Lo;0;L;;;;;N;;;;;
+B4D2;HANGUL SYLLABLE DYUBS;Lo;0;L;;;;;N;;;;;
+B4D3;HANGUL SYLLABLE DYUS;Lo;0;L;;;;;N;;;;;
+B4D4;HANGUL SYLLABLE DYUSS;Lo;0;L;;;;;N;;;;;
+B4D5;HANGUL SYLLABLE DYUNG;Lo;0;L;;;;;N;;;;;
+B4D6;HANGUL SYLLABLE DYUJ;Lo;0;L;;;;;N;;;;;
+B4D7;HANGUL SYLLABLE DYUC;Lo;0;L;;;;;N;;;;;
+B4D8;HANGUL SYLLABLE DYUK;Lo;0;L;;;;;N;;;;;
+B4D9;HANGUL SYLLABLE DYUT;Lo;0;L;;;;;N;;;;;
+B4DA;HANGUL SYLLABLE DYUP;Lo;0;L;;;;;N;;;;;
+B4DB;HANGUL SYLLABLE DYUH;Lo;0;L;;;;;N;;;;;
+B4DC;HANGUL SYLLABLE DEU;Lo;0;L;;;;;N;;;;;
+B4DD;HANGUL SYLLABLE DEUG;Lo;0;L;;;;;N;;;;;
+B4DE;HANGUL SYLLABLE DEUGG;Lo;0;L;;;;;N;;;;;
+B4DF;HANGUL SYLLABLE DEUGS;Lo;0;L;;;;;N;;;;;
+B4E0;HANGUL SYLLABLE DEUN;Lo;0;L;;;;;N;;;;;
+B4E1;HANGUL SYLLABLE DEUNI;Lo;0;L;;;;;N;;;;;
+B4E2;HANGUL SYLLABLE DEUNH;Lo;0;L;;;;;N;;;;;
+B4E3;HANGUL SYLLABLE DEUD;Lo;0;L;;;;;N;;;;;
+B4E4;HANGUL SYLLABLE DEUL;Lo;0;L;;;;;N;;;;;
+B4E5;HANGUL SYLLABLE DEULG;Lo;0;L;;;;;N;;;;;
+B4E6;HANGUL SYLLABLE DEULM;Lo;0;L;;;;;N;;;;;
+B4E7;HANGUL SYLLABLE DEULB;Lo;0;L;;;;;N;;;;;
+B4E8;HANGUL SYLLABLE DEULS;Lo;0;L;;;;;N;;;;;
+B4E9;HANGUL SYLLABLE DEULT;Lo;0;L;;;;;N;;;;;
+B4EA;HANGUL SYLLABLE DEULP;Lo;0;L;;;;;N;;;;;
+B4EB;HANGUL SYLLABLE DEULH;Lo;0;L;;;;;N;;;;;
+B4EC;HANGUL SYLLABLE DEUM;Lo;0;L;;;;;N;;;;;
+B4ED;HANGUL SYLLABLE DEUB;Lo;0;L;;;;;N;;;;;
+B4EE;HANGUL SYLLABLE DEUBS;Lo;0;L;;;;;N;;;;;
+B4EF;HANGUL SYLLABLE DEUS;Lo;0;L;;;;;N;;;;;
+B4F0;HANGUL SYLLABLE DEUSS;Lo;0;L;;;;;N;;;;;
+B4F1;HANGUL SYLLABLE DEUNG;Lo;0;L;;;;;N;;;;;
+B4F2;HANGUL SYLLABLE DEUJ;Lo;0;L;;;;;N;;;;;
+B4F3;HANGUL SYLLABLE DEUC;Lo;0;L;;;;;N;;;;;
+B4F4;HANGUL SYLLABLE DEUK;Lo;0;L;;;;;N;;;;;
+B4F5;HANGUL SYLLABLE DEUT;Lo;0;L;;;;;N;;;;;
+B4F6;HANGUL SYLLABLE DEUP;Lo;0;L;;;;;N;;;;;
+B4F7;HANGUL SYLLABLE DEUH;Lo;0;L;;;;;N;;;;;
+B4F8;HANGUL SYLLABLE DYI;Lo;0;L;;;;;N;;;;;
+B4F9;HANGUL SYLLABLE DYIG;Lo;0;L;;;;;N;;;;;
+B4FA;HANGUL SYLLABLE DYIGG;Lo;0;L;;;;;N;;;;;
+B4FB;HANGUL SYLLABLE DYIGS;Lo;0;L;;;;;N;;;;;
+B4FC;HANGUL SYLLABLE DYIN;Lo;0;L;;;;;N;;;;;
+B4FD;HANGUL SYLLABLE DYINI;Lo;0;L;;;;;N;;;;;
+B4FE;HANGUL SYLLABLE DYINH;Lo;0;L;;;;;N;;;;;
+B4FF;HANGUL SYLLABLE DYID;Lo;0;L;;;;;N;;;;;
+B500;HANGUL SYLLABLE DYIL;Lo;0;L;;;;;N;;;;;
+B501;HANGUL SYLLABLE DYILG;Lo;0;L;;;;;N;;;;;
+B502;HANGUL SYLLABLE DYILM;Lo;0;L;;;;;N;;;;;
+B503;HANGUL SYLLABLE DYILB;Lo;0;L;;;;;N;;;;;
+B504;HANGUL SYLLABLE DYILS;Lo;0;L;;;;;N;;;;;
+B505;HANGUL SYLLABLE DYILT;Lo;0;L;;;;;N;;;;;
+B506;HANGUL SYLLABLE DYILP;Lo;0;L;;;;;N;;;;;
+B507;HANGUL SYLLABLE DYILH;Lo;0;L;;;;;N;;;;;
+B508;HANGUL SYLLABLE DYIM;Lo;0;L;;;;;N;;;;;
+B509;HANGUL SYLLABLE DYIB;Lo;0;L;;;;;N;;;;;
+B50A;HANGUL SYLLABLE DYIBS;Lo;0;L;;;;;N;;;;;
+B50B;HANGUL SYLLABLE DYIS;Lo;0;L;;;;;N;;;;;
+B50C;HANGUL SYLLABLE DYISS;Lo;0;L;;;;;N;;;;;
+B50D;HANGUL SYLLABLE DYING;Lo;0;L;;;;;N;;;;;
+B50E;HANGUL SYLLABLE DYIJ;Lo;0;L;;;;;N;;;;;
+B50F;HANGUL SYLLABLE DYIC;Lo;0;L;;;;;N;;;;;
+B510;HANGUL SYLLABLE DYIK;Lo;0;L;;;;;N;;;;;
+B511;HANGUL SYLLABLE DYIT;Lo;0;L;;;;;N;;;;;
+B512;HANGUL SYLLABLE DYIP;Lo;0;L;;;;;N;;;;;
+B513;HANGUL SYLLABLE DYIH;Lo;0;L;;;;;N;;;;;
+B514;HANGUL SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+B515;HANGUL SYLLABLE DIG;Lo;0;L;;;;;N;;;;;
+B516;HANGUL SYLLABLE DIGG;Lo;0;L;;;;;N;;;;;
+B517;HANGUL SYLLABLE DIGS;Lo;0;L;;;;;N;;;;;
+B518;HANGUL SYLLABLE DIN;Lo;0;L;;;;;N;;;;;
+B519;HANGUL SYLLABLE DINI;Lo;0;L;;;;;N;;;;;
+B51A;HANGUL SYLLABLE DINH;Lo;0;L;;;;;N;;;;;
+B51B;HANGUL SYLLABLE DID;Lo;0;L;;;;;N;;;;;
+B51C;HANGUL SYLLABLE DIL;Lo;0;L;;;;;N;;;;;
+B51D;HANGUL SYLLABLE DILG;Lo;0;L;;;;;N;;;;;
+B51E;HANGUL SYLLABLE DILM;Lo;0;L;;;;;N;;;;;
+B51F;HANGUL SYLLABLE DILB;Lo;0;L;;;;;N;;;;;
+B520;HANGUL SYLLABLE DILS;Lo;0;L;;;;;N;;;;;
+B521;HANGUL SYLLABLE DILT;Lo;0;L;;;;;N;;;;;
+B522;HANGUL SYLLABLE DILP;Lo;0;L;;;;;N;;;;;
+B523;HANGUL SYLLABLE DILH;Lo;0;L;;;;;N;;;;;
+B524;HANGUL SYLLABLE DIM;Lo;0;L;;;;;N;;;;;
+B525;HANGUL SYLLABLE DIB;Lo;0;L;;;;;N;;;;;
+B526;HANGUL SYLLABLE DIBS;Lo;0;L;;;;;N;;;;;
+B527;HANGUL SYLLABLE DIS;Lo;0;L;;;;;N;;;;;
+B528;HANGUL SYLLABLE DISS;Lo;0;L;;;;;N;;;;;
+B529;HANGUL SYLLABLE DING;Lo;0;L;;;;;N;;;;;
+B52A;HANGUL SYLLABLE DIJ;Lo;0;L;;;;;N;;;;;
+B52B;HANGUL SYLLABLE DIC;Lo;0;L;;;;;N;;;;;
+B52C;HANGUL SYLLABLE DIK;Lo;0;L;;;;;N;;;;;
+B52D;HANGUL SYLLABLE DIT;Lo;0;L;;;;;N;;;;;
+B52E;HANGUL SYLLABLE DIP;Lo;0;L;;;;;N;;;;;
+B52F;HANGUL SYLLABLE DIH;Lo;0;L;;;;;N;;;;;
+B530;HANGUL SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+B531;HANGUL SYLLABLE DDAG;Lo;0;L;;;;;N;;;;;
+B532;HANGUL SYLLABLE DDAGG;Lo;0;L;;;;;N;;;;;
+B533;HANGUL SYLLABLE DDAGS;Lo;0;L;;;;;N;;;;;
+B534;HANGUL SYLLABLE DDAN;Lo;0;L;;;;;N;;;;;
+B535;HANGUL SYLLABLE DDANI;Lo;0;L;;;;;N;;;;;
+B536;HANGUL SYLLABLE DDANH;Lo;0;L;;;;;N;;;;;
+B537;HANGUL SYLLABLE DDAD;Lo;0;L;;;;;N;;;;;
+B538;HANGUL SYLLABLE DDAL;Lo;0;L;;;;;N;;;;;
+B539;HANGUL SYLLABLE DDALG;Lo;0;L;;;;;N;;;;;
+B53A;HANGUL SYLLABLE DDALM;Lo;0;L;;;;;N;;;;;
+B53B;HANGUL SYLLABLE DDALB;Lo;0;L;;;;;N;;;;;
+B53C;HANGUL SYLLABLE DDALS;Lo;0;L;;;;;N;;;;;
+B53D;HANGUL SYLLABLE DDALT;Lo;0;L;;;;;N;;;;;
+B53E;HANGUL SYLLABLE DDALP;Lo;0;L;;;;;N;;;;;
+B53F;HANGUL SYLLABLE DDALH;Lo;0;L;;;;;N;;;;;
+B540;HANGUL SYLLABLE DDAM;Lo;0;L;;;;;N;;;;;
+B541;HANGUL SYLLABLE DDAB;Lo;0;L;;;;;N;;;;;
+B542;HANGUL SYLLABLE DDABS;Lo;0;L;;;;;N;;;;;
+B543;HANGUL SYLLABLE DDAS;Lo;0;L;;;;;N;;;;;
+B544;HANGUL SYLLABLE DDASS;Lo;0;L;;;;;N;;;;;
+B545;HANGUL SYLLABLE DDANG;Lo;0;L;;;;;N;;;;;
+B546;HANGUL SYLLABLE DDAJ;Lo;0;L;;;;;N;;;;;
+B547;HANGUL SYLLABLE DDAC;Lo;0;L;;;;;N;;;;;
+B548;HANGUL SYLLABLE DDAK;Lo;0;L;;;;;N;;;;;
+B549;HANGUL SYLLABLE DDAT;Lo;0;L;;;;;N;;;;;
+B54A;HANGUL SYLLABLE DDAP;Lo;0;L;;;;;N;;;;;
+B54B;HANGUL SYLLABLE DDAH;Lo;0;L;;;;;N;;;;;
+B54C;HANGUL SYLLABLE DDAE;Lo;0;L;;;;;N;;;;;
+B54D;HANGUL SYLLABLE DDAEG;Lo;0;L;;;;;N;;;;;
+B54E;HANGUL SYLLABLE DDAEGG;Lo;0;L;;;;;N;;;;;
+B54F;HANGUL SYLLABLE DDAEGS;Lo;0;L;;;;;N;;;;;
+B550;HANGUL SYLLABLE DDAEN;Lo;0;L;;;;;N;;;;;
+B551;HANGUL SYLLABLE DDAENI;Lo;0;L;;;;;N;;;;;
+B552;HANGUL SYLLABLE DDAENH;Lo;0;L;;;;;N;;;;;
+B553;HANGUL SYLLABLE DDAED;Lo;0;L;;;;;N;;;;;
+B554;HANGUL SYLLABLE DDAEL;Lo;0;L;;;;;N;;;;;
+B555;HANGUL SYLLABLE DDAELG;Lo;0;L;;;;;N;;;;;
+B556;HANGUL SYLLABLE DDAELM;Lo;0;L;;;;;N;;;;;
+B557;HANGUL SYLLABLE DDAELB;Lo;0;L;;;;;N;;;;;
+B558;HANGUL SYLLABLE DDAELS;Lo;0;L;;;;;N;;;;;
+B559;HANGUL SYLLABLE DDAELT;Lo;0;L;;;;;N;;;;;
+B55A;HANGUL SYLLABLE DDAELP;Lo;0;L;;;;;N;;;;;
+B55B;HANGUL SYLLABLE DDAELH;Lo;0;L;;;;;N;;;;;
+B55C;HANGUL SYLLABLE DDAEM;Lo;0;L;;;;;N;;;;;
+B55D;HANGUL SYLLABLE DDAEB;Lo;0;L;;;;;N;;;;;
+B55E;HANGUL SYLLABLE DDAEBS;Lo;0;L;;;;;N;;;;;
+B55F;HANGUL SYLLABLE DDAES;Lo;0;L;;;;;N;;;;;
+B560;HANGUL SYLLABLE DDAESS;Lo;0;L;;;;;N;;;;;
+B561;HANGUL SYLLABLE DDAENG;Lo;0;L;;;;;N;;;;;
+B562;HANGUL SYLLABLE DDAEJ;Lo;0;L;;;;;N;;;;;
+B563;HANGUL SYLLABLE DDAEC;Lo;0;L;;;;;N;;;;;
+B564;HANGUL SYLLABLE DDAEK;Lo;0;L;;;;;N;;;;;
+B565;HANGUL SYLLABLE DDAET;Lo;0;L;;;;;N;;;;;
+B566;HANGUL SYLLABLE DDAEP;Lo;0;L;;;;;N;;;;;
+B567;HANGUL SYLLABLE DDAEH;Lo;0;L;;;;;N;;;;;
+B568;HANGUL SYLLABLE DDYA;Lo;0;L;;;;;N;;;;;
+B569;HANGUL SYLLABLE DDYAG;Lo;0;L;;;;;N;;;;;
+B56A;HANGUL SYLLABLE DDYAGG;Lo;0;L;;;;;N;;;;;
+B56B;HANGUL SYLLABLE DDYAGS;Lo;0;L;;;;;N;;;;;
+B56C;HANGUL SYLLABLE DDYAN;Lo;0;L;;;;;N;;;;;
+B56D;HANGUL SYLLABLE DDYANI;Lo;0;L;;;;;N;;;;;
+B56E;HANGUL SYLLABLE DDYANH;Lo;0;L;;;;;N;;;;;
+B56F;HANGUL SYLLABLE DDYAD;Lo;0;L;;;;;N;;;;;
+B570;HANGUL SYLLABLE DDYAL;Lo;0;L;;;;;N;;;;;
+B571;HANGUL SYLLABLE DDYALG;Lo;0;L;;;;;N;;;;;
+B572;HANGUL SYLLABLE DDYALM;Lo;0;L;;;;;N;;;;;
+B573;HANGUL SYLLABLE DDYALB;Lo;0;L;;;;;N;;;;;
+B574;HANGUL SYLLABLE DDYALS;Lo;0;L;;;;;N;;;;;
+B575;HANGUL SYLLABLE DDYALT;Lo;0;L;;;;;N;;;;;
+B576;HANGUL SYLLABLE DDYALP;Lo;0;L;;;;;N;;;;;
+B577;HANGUL SYLLABLE DDYALH;Lo;0;L;;;;;N;;;;;
+B578;HANGUL SYLLABLE DDYAM;Lo;0;L;;;;;N;;;;;
+B579;HANGUL SYLLABLE DDYAB;Lo;0;L;;;;;N;;;;;
+B57A;HANGUL SYLLABLE DDYABS;Lo;0;L;;;;;N;;;;;
+B57B;HANGUL SYLLABLE DDYAS;Lo;0;L;;;;;N;;;;;
+B57C;HANGUL SYLLABLE DDYASS;Lo;0;L;;;;;N;;;;;
+B57D;HANGUL SYLLABLE DDYANG;Lo;0;L;;;;;N;;;;;
+B57E;HANGUL SYLLABLE DDYAJ;Lo;0;L;;;;;N;;;;;
+B57F;HANGUL SYLLABLE DDYAC;Lo;0;L;;;;;N;;;;;
+B580;HANGUL SYLLABLE DDYAK;Lo;0;L;;;;;N;;;;;
+B581;HANGUL SYLLABLE DDYAT;Lo;0;L;;;;;N;;;;;
+B582;HANGUL SYLLABLE DDYAP;Lo;0;L;;;;;N;;;;;
+B583;HANGUL SYLLABLE DDYAH;Lo;0;L;;;;;N;;;;;
+B584;HANGUL SYLLABLE DDYAE;Lo;0;L;;;;;N;;;;;
+B585;HANGUL SYLLABLE DDYAEG;Lo;0;L;;;;;N;;;;;
+B586;HANGUL SYLLABLE DDYAEGG;Lo;0;L;;;;;N;;;;;
+B587;HANGUL SYLLABLE DDYAEGS;Lo;0;L;;;;;N;;;;;
+B588;HANGUL SYLLABLE DDYAEN;Lo;0;L;;;;;N;;;;;
+B589;HANGUL SYLLABLE DDYAENI;Lo;0;L;;;;;N;;;;;
+B58A;HANGUL SYLLABLE DDYAENH;Lo;0;L;;;;;N;;;;;
+B58B;HANGUL SYLLABLE DDYAED;Lo;0;L;;;;;N;;;;;
+B58C;HANGUL SYLLABLE DDYAEL;Lo;0;L;;;;;N;;;;;
+B58D;HANGUL SYLLABLE DDYAELG;Lo;0;L;;;;;N;;;;;
+B58E;HANGUL SYLLABLE DDYAELM;Lo;0;L;;;;;N;;;;;
+B58F;HANGUL SYLLABLE DDYAELB;Lo;0;L;;;;;N;;;;;
+B590;HANGUL SYLLABLE DDYAELS;Lo;0;L;;;;;N;;;;;
+B591;HANGUL SYLLABLE DDYAELT;Lo;0;L;;;;;N;;;;;
+B592;HANGUL SYLLABLE DDYAELP;Lo;0;L;;;;;N;;;;;
+B593;HANGUL SYLLABLE DDYAELH;Lo;0;L;;;;;N;;;;;
+B594;HANGUL SYLLABLE DDYAEM;Lo;0;L;;;;;N;;;;;
+B595;HANGUL SYLLABLE DDYAEB;Lo;0;L;;;;;N;;;;;
+B596;HANGUL SYLLABLE DDYAEBS;Lo;0;L;;;;;N;;;;;
+B597;HANGUL SYLLABLE DDYAES;Lo;0;L;;;;;N;;;;;
+B598;HANGUL SYLLABLE DDYAESS;Lo;0;L;;;;;N;;;;;
+B599;HANGUL SYLLABLE DDYAENG;Lo;0;L;;;;;N;;;;;
+B59A;HANGUL SYLLABLE DDYAEJ;Lo;0;L;;;;;N;;;;;
+B59B;HANGUL SYLLABLE DDYAEC;Lo;0;L;;;;;N;;;;;
+B59C;HANGUL SYLLABLE DDYAEK;Lo;0;L;;;;;N;;;;;
+B59D;HANGUL SYLLABLE DDYAET;Lo;0;L;;;;;N;;;;;
+B59E;HANGUL SYLLABLE DDYAEP;Lo;0;L;;;;;N;;;;;
+B59F;HANGUL SYLLABLE DDYAEH;Lo;0;L;;;;;N;;;;;
+B5A0;HANGUL SYLLABLE DDEO;Lo;0;L;;;;;N;;;;;
+B5A1;HANGUL SYLLABLE DDEOG;Lo;0;L;;;;;N;;;;;
+B5A2;HANGUL SYLLABLE DDEOGG;Lo;0;L;;;;;N;;;;;
+B5A3;HANGUL SYLLABLE DDEOGS;Lo;0;L;;;;;N;;;;;
+B5A4;HANGUL SYLLABLE DDEON;Lo;0;L;;;;;N;;;;;
+B5A5;HANGUL SYLLABLE DDEONI;Lo;0;L;;;;;N;;;;;
+B5A6;HANGUL SYLLABLE DDEONH;Lo;0;L;;;;;N;;;;;
+B5A7;HANGUL SYLLABLE DDEOD;Lo;0;L;;;;;N;;;;;
+B5A8;HANGUL SYLLABLE DDEOL;Lo;0;L;;;;;N;;;;;
+B5A9;HANGUL SYLLABLE DDEOLG;Lo;0;L;;;;;N;;;;;
+B5AA;HANGUL SYLLABLE DDEOLM;Lo;0;L;;;;;N;;;;;
+B5AB;HANGUL SYLLABLE DDEOLB;Lo;0;L;;;;;N;;;;;
+B5AC;HANGUL SYLLABLE DDEOLS;Lo;0;L;;;;;N;;;;;
+B5AD;HANGUL SYLLABLE DDEOLT;Lo;0;L;;;;;N;;;;;
+B5AE;HANGUL SYLLABLE DDEOLP;Lo;0;L;;;;;N;;;;;
+B5AF;HANGUL SYLLABLE DDEOLH;Lo;0;L;;;;;N;;;;;
+B5B0;HANGUL SYLLABLE DDEOM;Lo;0;L;;;;;N;;;;;
+B5B1;HANGUL SYLLABLE DDEOB;Lo;0;L;;;;;N;;;;;
+B5B2;HANGUL SYLLABLE DDEOBS;Lo;0;L;;;;;N;;;;;
+B5B3;HANGUL SYLLABLE DDEOS;Lo;0;L;;;;;N;;;;;
+B5B4;HANGUL SYLLABLE DDEOSS;Lo;0;L;;;;;N;;;;;
+B5B5;HANGUL SYLLABLE DDEONG;Lo;0;L;;;;;N;;;;;
+B5B6;HANGUL SYLLABLE DDEOJ;Lo;0;L;;;;;N;;;;;
+B5B7;HANGUL SYLLABLE DDEOC;Lo;0;L;;;;;N;;;;;
+B5B8;HANGUL SYLLABLE DDEOK;Lo;0;L;;;;;N;;;;;
+B5B9;HANGUL SYLLABLE DDEOT;Lo;0;L;;;;;N;;;;;
+B5BA;HANGUL SYLLABLE DDEOP;Lo;0;L;;;;;N;;;;;
+B5BB;HANGUL SYLLABLE DDEOH;Lo;0;L;;;;;N;;;;;
+B5BC;HANGUL SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+B5BD;HANGUL SYLLABLE DDEG;Lo;0;L;;;;;N;;;;;
+B5BE;HANGUL SYLLABLE DDEGG;Lo;0;L;;;;;N;;;;;
+B5BF;HANGUL SYLLABLE DDEGS;Lo;0;L;;;;;N;;;;;
+B5C0;HANGUL SYLLABLE DDEN;Lo;0;L;;;;;N;;;;;
+B5C1;HANGUL SYLLABLE DDENI;Lo;0;L;;;;;N;;;;;
+B5C2;HANGUL SYLLABLE DDENH;Lo;0;L;;;;;N;;;;;
+B5C3;HANGUL SYLLABLE DDED;Lo;0;L;;;;;N;;;;;
+B5C4;HANGUL SYLLABLE DDEL;Lo;0;L;;;;;N;;;;;
+B5C5;HANGUL SYLLABLE DDELG;Lo;0;L;;;;;N;;;;;
+B5C6;HANGUL SYLLABLE DDELM;Lo;0;L;;;;;N;;;;;
+B5C7;HANGUL SYLLABLE DDELB;Lo;0;L;;;;;N;;;;;
+B5C8;HANGUL SYLLABLE DDELS;Lo;0;L;;;;;N;;;;;
+B5C9;HANGUL SYLLABLE DDELT;Lo;0;L;;;;;N;;;;;
+B5CA;HANGUL SYLLABLE DDELP;Lo;0;L;;;;;N;;;;;
+B5CB;HANGUL SYLLABLE DDELH;Lo;0;L;;;;;N;;;;;
+B5CC;HANGUL SYLLABLE DDEM;Lo;0;L;;;;;N;;;;;
+B5CD;HANGUL SYLLABLE DDEB;Lo;0;L;;;;;N;;;;;
+B5CE;HANGUL SYLLABLE DDEBS;Lo;0;L;;;;;N;;;;;
+B5CF;HANGUL SYLLABLE DDES;Lo;0;L;;;;;N;;;;;
+B5D0;HANGUL SYLLABLE DDESS;Lo;0;L;;;;;N;;;;;
+B5D1;HANGUL SYLLABLE DDENG;Lo;0;L;;;;;N;;;;;
+B5D2;HANGUL SYLLABLE DDEJ;Lo;0;L;;;;;N;;;;;
+B5D3;HANGUL SYLLABLE DDEC;Lo;0;L;;;;;N;;;;;
+B5D4;HANGUL SYLLABLE DDEK;Lo;0;L;;;;;N;;;;;
+B5D5;HANGUL SYLLABLE DDET;Lo;0;L;;;;;N;;;;;
+B5D6;HANGUL SYLLABLE DDEP;Lo;0;L;;;;;N;;;;;
+B5D7;HANGUL SYLLABLE DDEH;Lo;0;L;;;;;N;;;;;
+B5D8;HANGUL SYLLABLE DDYEO;Lo;0;L;;;;;N;;;;;
+B5D9;HANGUL SYLLABLE DDYEOG;Lo;0;L;;;;;N;;;;;
+B5DA;HANGUL SYLLABLE DDYEOGG;Lo;0;L;;;;;N;;;;;
+B5DB;HANGUL SYLLABLE DDYEOGS;Lo;0;L;;;;;N;;;;;
+B5DC;HANGUL SYLLABLE DDYEON;Lo;0;L;;;;;N;;;;;
+B5DD;HANGUL SYLLABLE DDYEONI;Lo;0;L;;;;;N;;;;;
+B5DE;HANGUL SYLLABLE DDYEONH;Lo;0;L;;;;;N;;;;;
+B5DF;HANGUL SYLLABLE DDYEOD;Lo;0;L;;;;;N;;;;;
+B5E0;HANGUL SYLLABLE DDYEOL;Lo;0;L;;;;;N;;;;;
+B5E1;HANGUL SYLLABLE DDYEOLG;Lo;0;L;;;;;N;;;;;
+B5E2;HANGUL SYLLABLE DDYEOLM;Lo;0;L;;;;;N;;;;;
+B5E3;HANGUL SYLLABLE DDYEOLB;Lo;0;L;;;;;N;;;;;
+B5E4;HANGUL SYLLABLE DDYEOLS;Lo;0;L;;;;;N;;;;;
+B5E5;HANGUL SYLLABLE DDYEOLT;Lo;0;L;;;;;N;;;;;
+B5E6;HANGUL SYLLABLE DDYEOLP;Lo;0;L;;;;;N;;;;;
+B5E7;HANGUL SYLLABLE DDYEOLH;Lo;0;L;;;;;N;;;;;
+B5E8;HANGUL SYLLABLE DDYEOM;Lo;0;L;;;;;N;;;;;
+B5E9;HANGUL SYLLABLE DDYEOB;Lo;0;L;;;;;N;;;;;
+B5EA;HANGUL SYLLABLE DDYEOBS;Lo;0;L;;;;;N;;;;;
+B5EB;HANGUL SYLLABLE DDYEOS;Lo;0;L;;;;;N;;;;;
+B5EC;HANGUL SYLLABLE DDYEOSS;Lo;0;L;;;;;N;;;;;
+B5ED;HANGUL SYLLABLE DDYEONG;Lo;0;L;;;;;N;;;;;
+B5EE;HANGUL SYLLABLE DDYEOJ;Lo;0;L;;;;;N;;;;;
+B5EF;HANGUL SYLLABLE DDYEOC;Lo;0;L;;;;;N;;;;;
+B5F0;HANGUL SYLLABLE DDYEOK;Lo;0;L;;;;;N;;;;;
+B5F1;HANGUL SYLLABLE DDYEOT;Lo;0;L;;;;;N;;;;;
+B5F2;HANGUL SYLLABLE DDYEOP;Lo;0;L;;;;;N;;;;;
+B5F3;HANGUL SYLLABLE DDYEOH;Lo;0;L;;;;;N;;;;;
+B5F4;HANGUL SYLLABLE DDYE;Lo;0;L;;;;;N;;;;;
+B5F5;HANGUL SYLLABLE DDYEG;Lo;0;L;;;;;N;;;;;
+B5F6;HANGUL SYLLABLE DDYEGG;Lo;0;L;;;;;N;;;;;
+B5F7;HANGUL SYLLABLE DDYEGS;Lo;0;L;;;;;N;;;;;
+B5F8;HANGUL SYLLABLE DDYEN;Lo;0;L;;;;;N;;;;;
+B5F9;HANGUL SYLLABLE DDYENI;Lo;0;L;;;;;N;;;;;
+B5FA;HANGUL SYLLABLE DDYENH;Lo;0;L;;;;;N;;;;;
+B5FB;HANGUL SYLLABLE DDYED;Lo;0;L;;;;;N;;;;;
+B5FC;HANGUL SYLLABLE DDYEL;Lo;0;L;;;;;N;;;;;
+B5FD;HANGUL SYLLABLE DDYELG;Lo;0;L;;;;;N;;;;;
+B5FE;HANGUL SYLLABLE DDYELM;Lo;0;L;;;;;N;;;;;
+B5FF;HANGUL SYLLABLE DDYELB;Lo;0;L;;;;;N;;;;;
+B600;HANGUL SYLLABLE DDYELS;Lo;0;L;;;;;N;;;;;
+B601;HANGUL SYLLABLE DDYELT;Lo;0;L;;;;;N;;;;;
+B602;HANGUL SYLLABLE DDYELP;Lo;0;L;;;;;N;;;;;
+B603;HANGUL SYLLABLE DDYELH;Lo;0;L;;;;;N;;;;;
+B604;HANGUL SYLLABLE DDYEM;Lo;0;L;;;;;N;;;;;
+B605;HANGUL SYLLABLE DDYEB;Lo;0;L;;;;;N;;;;;
+B606;HANGUL SYLLABLE DDYEBS;Lo;0;L;;;;;N;;;;;
+B607;HANGUL SYLLABLE DDYES;Lo;0;L;;;;;N;;;;;
+B608;HANGUL SYLLABLE DDYESS;Lo;0;L;;;;;N;;;;;
+B609;HANGUL SYLLABLE DDYENG;Lo;0;L;;;;;N;;;;;
+B60A;HANGUL SYLLABLE DDYEJ;Lo;0;L;;;;;N;;;;;
+B60B;HANGUL SYLLABLE DDYEC;Lo;0;L;;;;;N;;;;;
+B60C;HANGUL SYLLABLE DDYEK;Lo;0;L;;;;;N;;;;;
+B60D;HANGUL SYLLABLE DDYET;Lo;0;L;;;;;N;;;;;
+B60E;HANGUL SYLLABLE DDYEP;Lo;0;L;;;;;N;;;;;
+B60F;HANGUL SYLLABLE DDYEH;Lo;0;L;;;;;N;;;;;
+B610;HANGUL SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+B611;HANGUL SYLLABLE DDOG;Lo;0;L;;;;;N;;;;;
+B612;HANGUL SYLLABLE DDOGG;Lo;0;L;;;;;N;;;;;
+B613;HANGUL SYLLABLE DDOGS;Lo;0;L;;;;;N;;;;;
+B614;HANGUL SYLLABLE DDON;Lo;0;L;;;;;N;;;;;
+B615;HANGUL SYLLABLE DDONI;Lo;0;L;;;;;N;;;;;
+B616;HANGUL SYLLABLE DDONH;Lo;0;L;;;;;N;;;;;
+B617;HANGUL SYLLABLE DDOD;Lo;0;L;;;;;N;;;;;
+B618;HANGUL SYLLABLE DDOL;Lo;0;L;;;;;N;;;;;
+B619;HANGUL SYLLABLE DDOLG;Lo;0;L;;;;;N;;;;;
+B61A;HANGUL SYLLABLE DDOLM;Lo;0;L;;;;;N;;;;;
+B61B;HANGUL SYLLABLE DDOLB;Lo;0;L;;;;;N;;;;;
+B61C;HANGUL SYLLABLE DDOLS;Lo;0;L;;;;;N;;;;;
+B61D;HANGUL SYLLABLE DDOLT;Lo;0;L;;;;;N;;;;;
+B61E;HANGUL SYLLABLE DDOLP;Lo;0;L;;;;;N;;;;;
+B61F;HANGUL SYLLABLE DDOLH;Lo;0;L;;;;;N;;;;;
+B620;HANGUL SYLLABLE DDOM;Lo;0;L;;;;;N;;;;;
+B621;HANGUL SYLLABLE DDOB;Lo;0;L;;;;;N;;;;;
+B622;HANGUL SYLLABLE DDOBS;Lo;0;L;;;;;N;;;;;
+B623;HANGUL SYLLABLE DDOS;Lo;0;L;;;;;N;;;;;
+B624;HANGUL SYLLABLE DDOSS;Lo;0;L;;;;;N;;;;;
+B625;HANGUL SYLLABLE DDONG;Lo;0;L;;;;;N;;;;;
+B626;HANGUL SYLLABLE DDOJ;Lo;0;L;;;;;N;;;;;
+B627;HANGUL SYLLABLE DDOC;Lo;0;L;;;;;N;;;;;
+B628;HANGUL SYLLABLE DDOK;Lo;0;L;;;;;N;;;;;
+B629;HANGUL SYLLABLE DDOT;Lo;0;L;;;;;N;;;;;
+B62A;HANGUL SYLLABLE DDOP;Lo;0;L;;;;;N;;;;;
+B62B;HANGUL SYLLABLE DDOH;Lo;0;L;;;;;N;;;;;
+B62C;HANGUL SYLLABLE DDWA;Lo;0;L;;;;;N;;;;;
+B62D;HANGUL SYLLABLE DDWAG;Lo;0;L;;;;;N;;;;;
+B62E;HANGUL SYLLABLE DDWAGG;Lo;0;L;;;;;N;;;;;
+B62F;HANGUL SYLLABLE DDWAGS;Lo;0;L;;;;;N;;;;;
+B630;HANGUL SYLLABLE DDWAN;Lo;0;L;;;;;N;;;;;
+B631;HANGUL SYLLABLE DDWANI;Lo;0;L;;;;;N;;;;;
+B632;HANGUL SYLLABLE DDWANH;Lo;0;L;;;;;N;;;;;
+B633;HANGUL SYLLABLE DDWAD;Lo;0;L;;;;;N;;;;;
+B634;HANGUL SYLLABLE DDWAL;Lo;0;L;;;;;N;;;;;
+B635;HANGUL SYLLABLE DDWALG;Lo;0;L;;;;;N;;;;;
+B636;HANGUL SYLLABLE DDWALM;Lo;0;L;;;;;N;;;;;
+B637;HANGUL SYLLABLE DDWALB;Lo;0;L;;;;;N;;;;;
+B638;HANGUL SYLLABLE DDWALS;Lo;0;L;;;;;N;;;;;
+B639;HANGUL SYLLABLE DDWALT;Lo;0;L;;;;;N;;;;;
+B63A;HANGUL SYLLABLE DDWALP;Lo;0;L;;;;;N;;;;;
+B63B;HANGUL SYLLABLE DDWALH;Lo;0;L;;;;;N;;;;;
+B63C;HANGUL SYLLABLE DDWAM;Lo;0;L;;;;;N;;;;;
+B63D;HANGUL SYLLABLE DDWAB;Lo;0;L;;;;;N;;;;;
+B63E;HANGUL SYLLABLE DDWABS;Lo;0;L;;;;;N;;;;;
+B63F;HANGUL SYLLABLE DDWAS;Lo;0;L;;;;;N;;;;;
+B640;HANGUL SYLLABLE DDWASS;Lo;0;L;;;;;N;;;;;
+B641;HANGUL SYLLABLE DDWANG;Lo;0;L;;;;;N;;;;;
+B642;HANGUL SYLLABLE DDWAJ;Lo;0;L;;;;;N;;;;;
+B643;HANGUL SYLLABLE DDWAC;Lo;0;L;;;;;N;;;;;
+B644;HANGUL SYLLABLE DDWAK;Lo;0;L;;;;;N;;;;;
+B645;HANGUL SYLLABLE DDWAT;Lo;0;L;;;;;N;;;;;
+B646;HANGUL SYLLABLE DDWAP;Lo;0;L;;;;;N;;;;;
+B647;HANGUL SYLLABLE DDWAH;Lo;0;L;;;;;N;;;;;
+B648;HANGUL SYLLABLE DDWAE;Lo;0;L;;;;;N;;;;;
+B649;HANGUL SYLLABLE DDWAEG;Lo;0;L;;;;;N;;;;;
+B64A;HANGUL SYLLABLE DDWAEGG;Lo;0;L;;;;;N;;;;;
+B64B;HANGUL SYLLABLE DDWAEGS;Lo;0;L;;;;;N;;;;;
+B64C;HANGUL SYLLABLE DDWAEN;Lo;0;L;;;;;N;;;;;
+B64D;HANGUL SYLLABLE DDWAENI;Lo;0;L;;;;;N;;;;;
+B64E;HANGUL SYLLABLE DDWAENH;Lo;0;L;;;;;N;;;;;
+B64F;HANGUL SYLLABLE DDWAED;Lo;0;L;;;;;N;;;;;
+B650;HANGUL SYLLABLE DDWAEL;Lo;0;L;;;;;N;;;;;
+B651;HANGUL SYLLABLE DDWAELG;Lo;0;L;;;;;N;;;;;
+B652;HANGUL SYLLABLE DDWAELM;Lo;0;L;;;;;N;;;;;
+B653;HANGUL SYLLABLE DDWAELB;Lo;0;L;;;;;N;;;;;
+B654;HANGUL SYLLABLE DDWAELS;Lo;0;L;;;;;N;;;;;
+B655;HANGUL SYLLABLE DDWAELT;Lo;0;L;;;;;N;;;;;
+B656;HANGUL SYLLABLE DDWAELP;Lo;0;L;;;;;N;;;;;
+B657;HANGUL SYLLABLE DDWAELH;Lo;0;L;;;;;N;;;;;
+B658;HANGUL SYLLABLE DDWAEM;Lo;0;L;;;;;N;;;;;
+B659;HANGUL SYLLABLE DDWAEB;Lo;0;L;;;;;N;;;;;
+B65A;HANGUL SYLLABLE DDWAEBS;Lo;0;L;;;;;N;;;;;
+B65B;HANGUL SYLLABLE DDWAES;Lo;0;L;;;;;N;;;;;
+B65C;HANGUL SYLLABLE DDWAESS;Lo;0;L;;;;;N;;;;;
+B65D;HANGUL SYLLABLE DDWAENG;Lo;0;L;;;;;N;;;;;
+B65E;HANGUL SYLLABLE DDWAEJ;Lo;0;L;;;;;N;;;;;
+B65F;HANGUL SYLLABLE DDWAEC;Lo;0;L;;;;;N;;;;;
+B660;HANGUL SYLLABLE DDWAEK;Lo;0;L;;;;;N;;;;;
+B661;HANGUL SYLLABLE DDWAET;Lo;0;L;;;;;N;;;;;
+B662;HANGUL SYLLABLE DDWAEP;Lo;0;L;;;;;N;;;;;
+B663;HANGUL SYLLABLE DDWAEH;Lo;0;L;;;;;N;;;;;
+B664;HANGUL SYLLABLE DDOE;Lo;0;L;;;;;N;;;;;
+B665;HANGUL SYLLABLE DDOEG;Lo;0;L;;;;;N;;;;;
+B666;HANGUL SYLLABLE DDOEGG;Lo;0;L;;;;;N;;;;;
+B667;HANGUL SYLLABLE DDOEGS;Lo;0;L;;;;;N;;;;;
+B668;HANGUL SYLLABLE DDOEN;Lo;0;L;;;;;N;;;;;
+B669;HANGUL SYLLABLE DDOENI;Lo;0;L;;;;;N;;;;;
+B66A;HANGUL SYLLABLE DDOENH;Lo;0;L;;;;;N;;;;;
+B66B;HANGUL SYLLABLE DDOED;Lo;0;L;;;;;N;;;;;
+B66C;HANGUL SYLLABLE DDOEL;Lo;0;L;;;;;N;;;;;
+B66D;HANGUL SYLLABLE DDOELG;Lo;0;L;;;;;N;;;;;
+B66E;HANGUL SYLLABLE DDOELM;Lo;0;L;;;;;N;;;;;
+B66F;HANGUL SYLLABLE DDOELB;Lo;0;L;;;;;N;;;;;
+B670;HANGUL SYLLABLE DDOELS;Lo;0;L;;;;;N;;;;;
+B671;HANGUL SYLLABLE DDOELT;Lo;0;L;;;;;N;;;;;
+B672;HANGUL SYLLABLE DDOELP;Lo;0;L;;;;;N;;;;;
+B673;HANGUL SYLLABLE DDOELH;Lo;0;L;;;;;N;;;;;
+B674;HANGUL SYLLABLE DDOEM;Lo;0;L;;;;;N;;;;;
+B675;HANGUL SYLLABLE DDOEB;Lo;0;L;;;;;N;;;;;
+B676;HANGUL SYLLABLE DDOEBS;Lo;0;L;;;;;N;;;;;
+B677;HANGUL SYLLABLE DDOES;Lo;0;L;;;;;N;;;;;
+B678;HANGUL SYLLABLE DDOESS;Lo;0;L;;;;;N;;;;;
+B679;HANGUL SYLLABLE DDOENG;Lo;0;L;;;;;N;;;;;
+B67A;HANGUL SYLLABLE DDOEJ;Lo;0;L;;;;;N;;;;;
+B67B;HANGUL SYLLABLE DDOEC;Lo;0;L;;;;;N;;;;;
+B67C;HANGUL SYLLABLE DDOEK;Lo;0;L;;;;;N;;;;;
+B67D;HANGUL SYLLABLE DDOET;Lo;0;L;;;;;N;;;;;
+B67E;HANGUL SYLLABLE DDOEP;Lo;0;L;;;;;N;;;;;
+B67F;HANGUL SYLLABLE DDOEH;Lo;0;L;;;;;N;;;;;
+B680;HANGUL SYLLABLE DDYO;Lo;0;L;;;;;N;;;;;
+B681;HANGUL SYLLABLE DDYOG;Lo;0;L;;;;;N;;;;;
+B682;HANGUL SYLLABLE DDYOGG;Lo;0;L;;;;;N;;;;;
+B683;HANGUL SYLLABLE DDYOGS;Lo;0;L;;;;;N;;;;;
+B684;HANGUL SYLLABLE DDYON;Lo;0;L;;;;;N;;;;;
+B685;HANGUL SYLLABLE DDYONI;Lo;0;L;;;;;N;;;;;
+B686;HANGUL SYLLABLE DDYONH;Lo;0;L;;;;;N;;;;;
+B687;HANGUL SYLLABLE DDYOD;Lo;0;L;;;;;N;;;;;
+B688;HANGUL SYLLABLE DDYOL;Lo;0;L;;;;;N;;;;;
+B689;HANGUL SYLLABLE DDYOLG;Lo;0;L;;;;;N;;;;;
+B68A;HANGUL SYLLABLE DDYOLM;Lo;0;L;;;;;N;;;;;
+B68B;HANGUL SYLLABLE DDYOLB;Lo;0;L;;;;;N;;;;;
+B68C;HANGUL SYLLABLE DDYOLS;Lo;0;L;;;;;N;;;;;
+B68D;HANGUL SYLLABLE DDYOLT;Lo;0;L;;;;;N;;;;;
+B68E;HANGUL SYLLABLE DDYOLP;Lo;0;L;;;;;N;;;;;
+B68F;HANGUL SYLLABLE DDYOLH;Lo;0;L;;;;;N;;;;;
+B690;HANGUL SYLLABLE DDYOM;Lo;0;L;;;;;N;;;;;
+B691;HANGUL SYLLABLE DDYOB;Lo;0;L;;;;;N;;;;;
+B692;HANGUL SYLLABLE DDYOBS;Lo;0;L;;;;;N;;;;;
+B693;HANGUL SYLLABLE DDYOS;Lo;0;L;;;;;N;;;;;
+B694;HANGUL SYLLABLE DDYOSS;Lo;0;L;;;;;N;;;;;
+B695;HANGUL SYLLABLE DDYONG;Lo;0;L;;;;;N;;;;;
+B696;HANGUL SYLLABLE DDYOJ;Lo;0;L;;;;;N;;;;;
+B697;HANGUL SYLLABLE DDYOC;Lo;0;L;;;;;N;;;;;
+B698;HANGUL SYLLABLE DDYOK;Lo;0;L;;;;;N;;;;;
+B699;HANGUL SYLLABLE DDYOT;Lo;0;L;;;;;N;;;;;
+B69A;HANGUL SYLLABLE DDYOP;Lo;0;L;;;;;N;;;;;
+B69B;HANGUL SYLLABLE DDYOH;Lo;0;L;;;;;N;;;;;
+B69C;HANGUL SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+B69D;HANGUL SYLLABLE DDUG;Lo;0;L;;;;;N;;;;;
+B69E;HANGUL SYLLABLE DDUGG;Lo;0;L;;;;;N;;;;;
+B69F;HANGUL SYLLABLE DDUGS;Lo;0;L;;;;;N;;;;;
+B6A0;HANGUL SYLLABLE DDUN;Lo;0;L;;;;;N;;;;;
+B6A1;HANGUL SYLLABLE DDUNI;Lo;0;L;;;;;N;;;;;
+B6A2;HANGUL SYLLABLE DDUNH;Lo;0;L;;;;;N;;;;;
+B6A3;HANGUL SYLLABLE DDUD;Lo;0;L;;;;;N;;;;;
+B6A4;HANGUL SYLLABLE DDUL;Lo;0;L;;;;;N;;;;;
+B6A5;HANGUL SYLLABLE DDULG;Lo;0;L;;;;;N;;;;;
+B6A6;HANGUL SYLLABLE DDULM;Lo;0;L;;;;;N;;;;;
+B6A7;HANGUL SYLLABLE DDULB;Lo;0;L;;;;;N;;;;;
+B6A8;HANGUL SYLLABLE DDULS;Lo;0;L;;;;;N;;;;;
+B6A9;HANGUL SYLLABLE DDULT;Lo;0;L;;;;;N;;;;;
+B6AA;HANGUL SYLLABLE DDULP;Lo;0;L;;;;;N;;;;;
+B6AB;HANGUL SYLLABLE DDULH;Lo;0;L;;;;;N;;;;;
+B6AC;HANGUL SYLLABLE DDUM;Lo;0;L;;;;;N;;;;;
+B6AD;HANGUL SYLLABLE DDUB;Lo;0;L;;;;;N;;;;;
+B6AE;HANGUL SYLLABLE DDUBS;Lo;0;L;;;;;N;;;;;
+B6AF;HANGUL SYLLABLE DDUS;Lo;0;L;;;;;N;;;;;
+B6B0;HANGUL SYLLABLE DDUSS;Lo;0;L;;;;;N;;;;;
+B6B1;HANGUL SYLLABLE DDUNG;Lo;0;L;;;;;N;;;;;
+B6B2;HANGUL SYLLABLE DDUJ;Lo;0;L;;;;;N;;;;;
+B6B3;HANGUL SYLLABLE DDUC;Lo;0;L;;;;;N;;;;;
+B6B4;HANGUL SYLLABLE DDUK;Lo;0;L;;;;;N;;;;;
+B6B5;HANGUL SYLLABLE DDUT;Lo;0;L;;;;;N;;;;;
+B6B6;HANGUL SYLLABLE DDUP;Lo;0;L;;;;;N;;;;;
+B6B7;HANGUL SYLLABLE DDUH;Lo;0;L;;;;;N;;;;;
+B6B8;HANGUL SYLLABLE DDWEO;Lo;0;L;;;;;N;;;;;
+B6B9;HANGUL SYLLABLE DDWEOG;Lo;0;L;;;;;N;;;;;
+B6BA;HANGUL SYLLABLE DDWEOGG;Lo;0;L;;;;;N;;;;;
+B6BB;HANGUL SYLLABLE DDWEOGS;Lo;0;L;;;;;N;;;;;
+B6BC;HANGUL SYLLABLE DDWEON;Lo;0;L;;;;;N;;;;;
+B6BD;HANGUL SYLLABLE DDWEONI;Lo;0;L;;;;;N;;;;;
+B6BE;HANGUL SYLLABLE DDWEONH;Lo;0;L;;;;;N;;;;;
+B6BF;HANGUL SYLLABLE DDWEOD;Lo;0;L;;;;;N;;;;;
+B6C0;HANGUL SYLLABLE DDWEOL;Lo;0;L;;;;;N;;;;;
+B6C1;HANGUL SYLLABLE DDWEOLG;Lo;0;L;;;;;N;;;;;
+B6C2;HANGUL SYLLABLE DDWEOLM;Lo;0;L;;;;;N;;;;;
+B6C3;HANGUL SYLLABLE DDWEOLB;Lo;0;L;;;;;N;;;;;
+B6C4;HANGUL SYLLABLE DDWEOLS;Lo;0;L;;;;;N;;;;;
+B6C5;HANGUL SYLLABLE DDWEOLT;Lo;0;L;;;;;N;;;;;
+B6C6;HANGUL SYLLABLE DDWEOLP;Lo;0;L;;;;;N;;;;;
+B6C7;HANGUL SYLLABLE DDWEOLH;Lo;0;L;;;;;N;;;;;
+B6C8;HANGUL SYLLABLE DDWEOM;Lo;0;L;;;;;N;;;;;
+B6C9;HANGUL SYLLABLE DDWEOB;Lo;0;L;;;;;N;;;;;
+B6CA;HANGUL SYLLABLE DDWEOBS;Lo;0;L;;;;;N;;;;;
+B6CB;HANGUL SYLLABLE DDWEOS;Lo;0;L;;;;;N;;;;;
+B6CC;HANGUL SYLLABLE DDWEOSS;Lo;0;L;;;;;N;;;;;
+B6CD;HANGUL SYLLABLE DDWEONG;Lo;0;L;;;;;N;;;;;
+B6CE;HANGUL SYLLABLE DDWEOJ;Lo;0;L;;;;;N;;;;;
+B6CF;HANGUL SYLLABLE DDWEOC;Lo;0;L;;;;;N;;;;;
+B6D0;HANGUL SYLLABLE DDWEOK;Lo;0;L;;;;;N;;;;;
+B6D1;HANGUL SYLLABLE DDWEOT;Lo;0;L;;;;;N;;;;;
+B6D2;HANGUL SYLLABLE DDWEOP;Lo;0;L;;;;;N;;;;;
+B6D3;HANGUL SYLLABLE DDWEOH;Lo;0;L;;;;;N;;;;;
+B6D4;HANGUL SYLLABLE DDWE;Lo;0;L;;;;;N;;;;;
+B6D5;HANGUL SYLLABLE DDWEG;Lo;0;L;;;;;N;;;;;
+B6D6;HANGUL SYLLABLE DDWEGG;Lo;0;L;;;;;N;;;;;
+B6D7;HANGUL SYLLABLE DDWEGS;Lo;0;L;;;;;N;;;;;
+B6D8;HANGUL SYLLABLE DDWEN;Lo;0;L;;;;;N;;;;;
+B6D9;HANGUL SYLLABLE DDWENI;Lo;0;L;;;;;N;;;;;
+B6DA;HANGUL SYLLABLE DDWENH;Lo;0;L;;;;;N;;;;;
+B6DB;HANGUL SYLLABLE DDWED;Lo;0;L;;;;;N;;;;;
+B6DC;HANGUL SYLLABLE DDWEL;Lo;0;L;;;;;N;;;;;
+B6DD;HANGUL SYLLABLE DDWELG;Lo;0;L;;;;;N;;;;;
+B6DE;HANGUL SYLLABLE DDWELM;Lo;0;L;;;;;N;;;;;
+B6DF;HANGUL SYLLABLE DDWELB;Lo;0;L;;;;;N;;;;;
+B6E0;HANGUL SYLLABLE DDWELS;Lo;0;L;;;;;N;;;;;
+B6E1;HANGUL SYLLABLE DDWELT;Lo;0;L;;;;;N;;;;;
+B6E2;HANGUL SYLLABLE DDWELP;Lo;0;L;;;;;N;;;;;
+B6E3;HANGUL SYLLABLE DDWELH;Lo;0;L;;;;;N;;;;;
+B6E4;HANGUL SYLLABLE DDWEM;Lo;0;L;;;;;N;;;;;
+B6E5;HANGUL SYLLABLE DDWEB;Lo;0;L;;;;;N;;;;;
+B6E6;HANGUL SYLLABLE DDWEBS;Lo;0;L;;;;;N;;;;;
+B6E7;HANGUL SYLLABLE DDWES;Lo;0;L;;;;;N;;;;;
+B6E8;HANGUL SYLLABLE DDWESS;Lo;0;L;;;;;N;;;;;
+B6E9;HANGUL SYLLABLE DDWENG;Lo;0;L;;;;;N;;;;;
+B6EA;HANGUL SYLLABLE DDWEJ;Lo;0;L;;;;;N;;;;;
+B6EB;HANGUL SYLLABLE DDWEC;Lo;0;L;;;;;N;;;;;
+B6EC;HANGUL SYLLABLE DDWEK;Lo;0;L;;;;;N;;;;;
+B6ED;HANGUL SYLLABLE DDWET;Lo;0;L;;;;;N;;;;;
+B6EE;HANGUL SYLLABLE DDWEP;Lo;0;L;;;;;N;;;;;
+B6EF;HANGUL SYLLABLE DDWEH;Lo;0;L;;;;;N;;;;;
+B6F0;HANGUL SYLLABLE DDWI;Lo;0;L;;;;;N;;;;;
+B6F1;HANGUL SYLLABLE DDWIG;Lo;0;L;;;;;N;;;;;
+B6F2;HANGUL SYLLABLE DDWIGG;Lo;0;L;;;;;N;;;;;
+B6F3;HANGUL SYLLABLE DDWIGS;Lo;0;L;;;;;N;;;;;
+B6F4;HANGUL SYLLABLE DDWIN;Lo;0;L;;;;;N;;;;;
+B6F5;HANGUL SYLLABLE DDWINI;Lo;0;L;;;;;N;;;;;
+B6F6;HANGUL SYLLABLE DDWINH;Lo;0;L;;;;;N;;;;;
+B6F7;HANGUL SYLLABLE DDWID;Lo;0;L;;;;;N;;;;;
+B6F8;HANGUL SYLLABLE DDWIL;Lo;0;L;;;;;N;;;;;
+B6F9;HANGUL SYLLABLE DDWILG;Lo;0;L;;;;;N;;;;;
+B6FA;HANGUL SYLLABLE DDWILM;Lo;0;L;;;;;N;;;;;
+B6FB;HANGUL SYLLABLE DDWILB;Lo;0;L;;;;;N;;;;;
+B6FC;HANGUL SYLLABLE DDWILS;Lo;0;L;;;;;N;;;;;
+B6FD;HANGUL SYLLABLE DDWILT;Lo;0;L;;;;;N;;;;;
+B6FE;HANGUL SYLLABLE DDWILP;Lo;0;L;;;;;N;;;;;
+B6FF;HANGUL SYLLABLE DDWILH;Lo;0;L;;;;;N;;;;;
+B700;HANGUL SYLLABLE DDWIM;Lo;0;L;;;;;N;;;;;
+B701;HANGUL SYLLABLE DDWIB;Lo;0;L;;;;;N;;;;;
+B702;HANGUL SYLLABLE DDWIBS;Lo;0;L;;;;;N;;;;;
+B703;HANGUL SYLLABLE DDWIS;Lo;0;L;;;;;N;;;;;
+B704;HANGUL SYLLABLE DDWISS;Lo;0;L;;;;;N;;;;;
+B705;HANGUL SYLLABLE DDWING;Lo;0;L;;;;;N;;;;;
+B706;HANGUL SYLLABLE DDWIJ;Lo;0;L;;;;;N;;;;;
+B707;HANGUL SYLLABLE DDWIC;Lo;0;L;;;;;N;;;;;
+B708;HANGUL SYLLABLE DDWIK;Lo;0;L;;;;;N;;;;;
+B709;HANGUL SYLLABLE DDWIT;Lo;0;L;;;;;N;;;;;
+B70A;HANGUL SYLLABLE DDWIP;Lo;0;L;;;;;N;;;;;
+B70B;HANGUL SYLLABLE DDWIH;Lo;0;L;;;;;N;;;;;
+B70C;HANGUL SYLLABLE DDYU;Lo;0;L;;;;;N;;;;;
+B70D;HANGUL SYLLABLE DDYUG;Lo;0;L;;;;;N;;;;;
+B70E;HANGUL SYLLABLE DDYUGG;Lo;0;L;;;;;N;;;;;
+B70F;HANGUL SYLLABLE DDYUGS;Lo;0;L;;;;;N;;;;;
+B710;HANGUL SYLLABLE DDYUN;Lo;0;L;;;;;N;;;;;
+B711;HANGUL SYLLABLE DDYUNI;Lo;0;L;;;;;N;;;;;
+B712;HANGUL SYLLABLE DDYUNH;Lo;0;L;;;;;N;;;;;
+B713;HANGUL SYLLABLE DDYUD;Lo;0;L;;;;;N;;;;;
+B714;HANGUL SYLLABLE DDYUL;Lo;0;L;;;;;N;;;;;
+B715;HANGUL SYLLABLE DDYULG;Lo;0;L;;;;;N;;;;;
+B716;HANGUL SYLLABLE DDYULM;Lo;0;L;;;;;N;;;;;
+B717;HANGUL SYLLABLE DDYULB;Lo;0;L;;;;;N;;;;;
+B718;HANGUL SYLLABLE DDYULS;Lo;0;L;;;;;N;;;;;
+B719;HANGUL SYLLABLE DDYULT;Lo;0;L;;;;;N;;;;;
+B71A;HANGUL SYLLABLE DDYULP;Lo;0;L;;;;;N;;;;;
+B71B;HANGUL SYLLABLE DDYULH;Lo;0;L;;;;;N;;;;;
+B71C;HANGUL SYLLABLE DDYUM;Lo;0;L;;;;;N;;;;;
+B71D;HANGUL SYLLABLE DDYUB;Lo;0;L;;;;;N;;;;;
+B71E;HANGUL SYLLABLE DDYUBS;Lo;0;L;;;;;N;;;;;
+B71F;HANGUL SYLLABLE DDYUS;Lo;0;L;;;;;N;;;;;
+B720;HANGUL SYLLABLE DDYUSS;Lo;0;L;;;;;N;;;;;
+B721;HANGUL SYLLABLE DDYUNG;Lo;0;L;;;;;N;;;;;
+B722;HANGUL SYLLABLE DDYUJ;Lo;0;L;;;;;N;;;;;
+B723;HANGUL SYLLABLE DDYUC;Lo;0;L;;;;;N;;;;;
+B724;HANGUL SYLLABLE DDYUK;Lo;0;L;;;;;N;;;;;
+B725;HANGUL SYLLABLE DDYUT;Lo;0;L;;;;;N;;;;;
+B726;HANGUL SYLLABLE DDYUP;Lo;0;L;;;;;N;;;;;
+B727;HANGUL SYLLABLE DDYUH;Lo;0;L;;;;;N;;;;;
+B728;HANGUL SYLLABLE DDEU;Lo;0;L;;;;;N;;;;;
+B729;HANGUL SYLLABLE DDEUG;Lo;0;L;;;;;N;;;;;
+B72A;HANGUL SYLLABLE DDEUGG;Lo;0;L;;;;;N;;;;;
+B72B;HANGUL SYLLABLE DDEUGS;Lo;0;L;;;;;N;;;;;
+B72C;HANGUL SYLLABLE DDEUN;Lo;0;L;;;;;N;;;;;
+B72D;HANGUL SYLLABLE DDEUNI;Lo;0;L;;;;;N;;;;;
+B72E;HANGUL SYLLABLE DDEUNH;Lo;0;L;;;;;N;;;;;
+B72F;HANGUL SYLLABLE DDEUD;Lo;0;L;;;;;N;;;;;
+B730;HANGUL SYLLABLE DDEUL;Lo;0;L;;;;;N;;;;;
+B731;HANGUL SYLLABLE DDEULG;Lo;0;L;;;;;N;;;;;
+B732;HANGUL SYLLABLE DDEULM;Lo;0;L;;;;;N;;;;;
+B733;HANGUL SYLLABLE DDEULB;Lo;0;L;;;;;N;;;;;
+B734;HANGUL SYLLABLE DDEULS;Lo;0;L;;;;;N;;;;;
+B735;HANGUL SYLLABLE DDEULT;Lo;0;L;;;;;N;;;;;
+B736;HANGUL SYLLABLE DDEULP;Lo;0;L;;;;;N;;;;;
+B737;HANGUL SYLLABLE DDEULH;Lo;0;L;;;;;N;;;;;
+B738;HANGUL SYLLABLE DDEUM;Lo;0;L;;;;;N;;;;;
+B739;HANGUL SYLLABLE DDEUB;Lo;0;L;;;;;N;;;;;
+B73A;HANGUL SYLLABLE DDEUBS;Lo;0;L;;;;;N;;;;;
+B73B;HANGUL SYLLABLE DDEUS;Lo;0;L;;;;;N;;;;;
+B73C;HANGUL SYLLABLE DDEUSS;Lo;0;L;;;;;N;;;;;
+B73D;HANGUL SYLLABLE DDEUNG;Lo;0;L;;;;;N;;;;;
+B73E;HANGUL SYLLABLE DDEUJ;Lo;0;L;;;;;N;;;;;
+B73F;HANGUL SYLLABLE DDEUC;Lo;0;L;;;;;N;;;;;
+B740;HANGUL SYLLABLE DDEUK;Lo;0;L;;;;;N;;;;;
+B741;HANGUL SYLLABLE DDEUT;Lo;0;L;;;;;N;;;;;
+B742;HANGUL SYLLABLE DDEUP;Lo;0;L;;;;;N;;;;;
+B743;HANGUL SYLLABLE DDEUH;Lo;0;L;;;;;N;;;;;
+B744;HANGUL SYLLABLE DDYI;Lo;0;L;;;;;N;;;;;
+B745;HANGUL SYLLABLE DDYIG;Lo;0;L;;;;;N;;;;;
+B746;HANGUL SYLLABLE DDYIGG;Lo;0;L;;;;;N;;;;;
+B747;HANGUL SYLLABLE DDYIGS;Lo;0;L;;;;;N;;;;;
+B748;HANGUL SYLLABLE DDYIN;Lo;0;L;;;;;N;;;;;
+B749;HANGUL SYLLABLE DDYINI;Lo;0;L;;;;;N;;;;;
+B74A;HANGUL SYLLABLE DDYINH;Lo;0;L;;;;;N;;;;;
+B74B;HANGUL SYLLABLE DDYID;Lo;0;L;;;;;N;;;;;
+B74C;HANGUL SYLLABLE DDYIL;Lo;0;L;;;;;N;;;;;
+B74D;HANGUL SYLLABLE DDYILG;Lo;0;L;;;;;N;;;;;
+B74E;HANGUL SYLLABLE DDYILM;Lo;0;L;;;;;N;;;;;
+B74F;HANGUL SYLLABLE DDYILB;Lo;0;L;;;;;N;;;;;
+B750;HANGUL SYLLABLE DDYILS;Lo;0;L;;;;;N;;;;;
+B751;HANGUL SYLLABLE DDYILT;Lo;0;L;;;;;N;;;;;
+B752;HANGUL SYLLABLE DDYILP;Lo;0;L;;;;;N;;;;;
+B753;HANGUL SYLLABLE DDYILH;Lo;0;L;;;;;N;;;;;
+B754;HANGUL SYLLABLE DDYIM;Lo;0;L;;;;;N;;;;;
+B755;HANGUL SYLLABLE DDYIB;Lo;0;L;;;;;N;;;;;
+B756;HANGUL SYLLABLE DDYIBS;Lo;0;L;;;;;N;;;;;
+B757;HANGUL SYLLABLE DDYIS;Lo;0;L;;;;;N;;;;;
+B758;HANGUL SYLLABLE DDYISS;Lo;0;L;;;;;N;;;;;
+B759;HANGUL SYLLABLE DDYING;Lo;0;L;;;;;N;;;;;
+B75A;HANGUL SYLLABLE DDYIJ;Lo;0;L;;;;;N;;;;;
+B75B;HANGUL SYLLABLE DDYIC;Lo;0;L;;;;;N;;;;;
+B75C;HANGUL SYLLABLE DDYIK;Lo;0;L;;;;;N;;;;;
+B75D;HANGUL SYLLABLE DDYIT;Lo;0;L;;;;;N;;;;;
+B75E;HANGUL SYLLABLE DDYIP;Lo;0;L;;;;;N;;;;;
+B75F;HANGUL SYLLABLE DDYIH;Lo;0;L;;;;;N;;;;;
+B760;HANGUL SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+B761;HANGUL SYLLABLE DDIG;Lo;0;L;;;;;N;;;;;
+B762;HANGUL SYLLABLE DDIGG;Lo;0;L;;;;;N;;;;;
+B763;HANGUL SYLLABLE DDIGS;Lo;0;L;;;;;N;;;;;
+B764;HANGUL SYLLABLE DDIN;Lo;0;L;;;;;N;;;;;
+B765;HANGUL SYLLABLE DDINI;Lo;0;L;;;;;N;;;;;
+B766;HANGUL SYLLABLE DDINH;Lo;0;L;;;;;N;;;;;
+B767;HANGUL SYLLABLE DDID;Lo;0;L;;;;;N;;;;;
+B768;HANGUL SYLLABLE DDIL;Lo;0;L;;;;;N;;;;;
+B769;HANGUL SYLLABLE DDILG;Lo;0;L;;;;;N;;;;;
+B76A;HANGUL SYLLABLE DDILM;Lo;0;L;;;;;N;;;;;
+B76B;HANGUL SYLLABLE DDILB;Lo;0;L;;;;;N;;;;;
+B76C;HANGUL SYLLABLE DDILS;Lo;0;L;;;;;N;;;;;
+B76D;HANGUL SYLLABLE DDILT;Lo;0;L;;;;;N;;;;;
+B76E;HANGUL SYLLABLE DDILP;Lo;0;L;;;;;N;;;;;
+B76F;HANGUL SYLLABLE DDILH;Lo;0;L;;;;;N;;;;;
+B770;HANGUL SYLLABLE DDIM;Lo;0;L;;;;;N;;;;;
+B771;HANGUL SYLLABLE DDIB;Lo;0;L;;;;;N;;;;;
+B772;HANGUL SYLLABLE DDIBS;Lo;0;L;;;;;N;;;;;
+B773;HANGUL SYLLABLE DDIS;Lo;0;L;;;;;N;;;;;
+B774;HANGUL SYLLABLE DDISS;Lo;0;L;;;;;N;;;;;
+B775;HANGUL SYLLABLE DDING;Lo;0;L;;;;;N;;;;;
+B776;HANGUL SYLLABLE DDIJ;Lo;0;L;;;;;N;;;;;
+B777;HANGUL SYLLABLE DDIC;Lo;0;L;;;;;N;;;;;
+B778;HANGUL SYLLABLE DDIK;Lo;0;L;;;;;N;;;;;
+B779;HANGUL SYLLABLE DDIT;Lo;0;L;;;;;N;;;;;
+B77A;HANGUL SYLLABLE DDIP;Lo;0;L;;;;;N;;;;;
+B77B;HANGUL SYLLABLE DDIH;Lo;0;L;;;;;N;;;;;
+B77C;HANGUL SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+B77D;HANGUL SYLLABLE RAG;Lo;0;L;;;;;N;;;;;
+B77E;HANGUL SYLLABLE RAGG;Lo;0;L;;;;;N;;;;;
+B77F;HANGUL SYLLABLE RAGS;Lo;0;L;;;;;N;;;;;
+B780;HANGUL SYLLABLE RAN;Lo;0;L;;;;;N;;;;;
+B781;HANGUL SYLLABLE RANI;Lo;0;L;;;;;N;;;;;
+B782;HANGUL SYLLABLE RANH;Lo;0;L;;;;;N;;;;;
+B783;HANGUL SYLLABLE RAD;Lo;0;L;;;;;N;;;;;
+B784;HANGUL SYLLABLE RAL;Lo;0;L;;;;;N;;;;;
+B785;HANGUL SYLLABLE RALG;Lo;0;L;;;;;N;;;;;
+B786;HANGUL SYLLABLE RALM;Lo;0;L;;;;;N;;;;;
+B787;HANGUL SYLLABLE RALB;Lo;0;L;;;;;N;;;;;
+B788;HANGUL SYLLABLE RALS;Lo;0;L;;;;;N;;;;;
+B789;HANGUL SYLLABLE RALT;Lo;0;L;;;;;N;;;;;
+B78A;HANGUL SYLLABLE RALP;Lo;0;L;;;;;N;;;;;
+B78B;HANGUL SYLLABLE RALH;Lo;0;L;;;;;N;;;;;
+B78C;HANGUL SYLLABLE RAM;Lo;0;L;;;;;N;;;;;
+B78D;HANGUL SYLLABLE RAB;Lo;0;L;;;;;N;;;;;
+B78E;HANGUL SYLLABLE RABS;Lo;0;L;;;;;N;;;;;
+B78F;HANGUL SYLLABLE RAS;Lo;0;L;;;;;N;;;;;
+B790;HANGUL SYLLABLE RASS;Lo;0;L;;;;;N;;;;;
+B791;HANGUL SYLLABLE RANG;Lo;0;L;;;;;N;;;;;
+B792;HANGUL SYLLABLE RAJ;Lo;0;L;;;;;N;;;;;
+B793;HANGUL SYLLABLE RAC;Lo;0;L;;;;;N;;;;;
+B794;HANGUL SYLLABLE RAK;Lo;0;L;;;;;N;;;;;
+B795;HANGUL SYLLABLE RAT;Lo;0;L;;;;;N;;;;;
+B796;HANGUL SYLLABLE RAP;Lo;0;L;;;;;N;;;;;
+B797;HANGUL SYLLABLE RAH;Lo;0;L;;;;;N;;;;;
+B798;HANGUL SYLLABLE RAE;Lo;0;L;;;;;N;;;;;
+B799;HANGUL SYLLABLE RAEG;Lo;0;L;;;;;N;;;;;
+B79A;HANGUL SYLLABLE RAEGG;Lo;0;L;;;;;N;;;;;
+B79B;HANGUL SYLLABLE RAEGS;Lo;0;L;;;;;N;;;;;
+B79C;HANGUL SYLLABLE RAEN;Lo;0;L;;;;;N;;;;;
+B79D;HANGUL SYLLABLE RAENI;Lo;0;L;;;;;N;;;;;
+B79E;HANGUL SYLLABLE RAENH;Lo;0;L;;;;;N;;;;;
+B79F;HANGUL SYLLABLE RAED;Lo;0;L;;;;;N;;;;;
+B7A0;HANGUL SYLLABLE RAEL;Lo;0;L;;;;;N;;;;;
+B7A1;HANGUL SYLLABLE RAELG;Lo;0;L;;;;;N;;;;;
+B7A2;HANGUL SYLLABLE RAELM;Lo;0;L;;;;;N;;;;;
+B7A3;HANGUL SYLLABLE RAELB;Lo;0;L;;;;;N;;;;;
+B7A4;HANGUL SYLLABLE RAELS;Lo;0;L;;;;;N;;;;;
+B7A5;HANGUL SYLLABLE RAELT;Lo;0;L;;;;;N;;;;;
+B7A6;HANGUL SYLLABLE RAELP;Lo;0;L;;;;;N;;;;;
+B7A7;HANGUL SYLLABLE RAELH;Lo;0;L;;;;;N;;;;;
+B7A8;HANGUL SYLLABLE RAEM;Lo;0;L;;;;;N;;;;;
+B7A9;HANGUL SYLLABLE RAEB;Lo;0;L;;;;;N;;;;;
+B7AA;HANGUL SYLLABLE RAEBS;Lo;0;L;;;;;N;;;;;
+B7AB;HANGUL SYLLABLE RAES;Lo;0;L;;;;;N;;;;;
+B7AC;HANGUL SYLLABLE RAESS;Lo;0;L;;;;;N;;;;;
+B7AD;HANGUL SYLLABLE RAENG;Lo;0;L;;;;;N;;;;;
+B7AE;HANGUL SYLLABLE RAEJ;Lo;0;L;;;;;N;;;;;
+B7AF;HANGUL SYLLABLE RAEC;Lo;0;L;;;;;N;;;;;
+B7B0;HANGUL SYLLABLE RAEK;Lo;0;L;;;;;N;;;;;
+B7B1;HANGUL SYLLABLE RAET;Lo;0;L;;;;;N;;;;;
+B7B2;HANGUL SYLLABLE RAEP;Lo;0;L;;;;;N;;;;;
+B7B3;HANGUL SYLLABLE RAEH;Lo;0;L;;;;;N;;;;;
+B7B4;HANGUL SYLLABLE RYA;Lo;0;L;;;;;N;;;;;
+B7B5;HANGUL SYLLABLE RYAG;Lo;0;L;;;;;N;;;;;
+B7B6;HANGUL SYLLABLE RYAGG;Lo;0;L;;;;;N;;;;;
+B7B7;HANGUL SYLLABLE RYAGS;Lo;0;L;;;;;N;;;;;
+B7B8;HANGUL SYLLABLE RYAN;Lo;0;L;;;;;N;;;;;
+B7B9;HANGUL SYLLABLE RYANI;Lo;0;L;;;;;N;;;;;
+B7BA;HANGUL SYLLABLE RYANH;Lo;0;L;;;;;N;;;;;
+B7BB;HANGUL SYLLABLE RYAD;Lo;0;L;;;;;N;;;;;
+B7BC;HANGUL SYLLABLE RYAL;Lo;0;L;;;;;N;;;;;
+B7BD;HANGUL SYLLABLE RYALG;Lo;0;L;;;;;N;;;;;
+B7BE;HANGUL SYLLABLE RYALM;Lo;0;L;;;;;N;;;;;
+B7BF;HANGUL SYLLABLE RYALB;Lo;0;L;;;;;N;;;;;
+B7C0;HANGUL SYLLABLE RYALS;Lo;0;L;;;;;N;;;;;
+B7C1;HANGUL SYLLABLE RYALT;Lo;0;L;;;;;N;;;;;
+B7C2;HANGUL SYLLABLE RYALP;Lo;0;L;;;;;N;;;;;
+B7C3;HANGUL SYLLABLE RYALH;Lo;0;L;;;;;N;;;;;
+B7C4;HANGUL SYLLABLE RYAM;Lo;0;L;;;;;N;;;;;
+B7C5;HANGUL SYLLABLE RYAB;Lo;0;L;;;;;N;;;;;
+B7C6;HANGUL SYLLABLE RYABS;Lo;0;L;;;;;N;;;;;
+B7C7;HANGUL SYLLABLE RYAS;Lo;0;L;;;;;N;;;;;
+B7C8;HANGUL SYLLABLE RYASS;Lo;0;L;;;;;N;;;;;
+B7C9;HANGUL SYLLABLE RYANG;Lo;0;L;;;;;N;;;;;
+B7CA;HANGUL SYLLABLE RYAJ;Lo;0;L;;;;;N;;;;;
+B7CB;HANGUL SYLLABLE RYAC;Lo;0;L;;;;;N;;;;;
+B7CC;HANGUL SYLLABLE RYAK;Lo;0;L;;;;;N;;;;;
+B7CD;HANGUL SYLLABLE RYAT;Lo;0;L;;;;;N;;;;;
+B7CE;HANGUL SYLLABLE RYAP;Lo;0;L;;;;;N;;;;;
+B7CF;HANGUL SYLLABLE RYAH;Lo;0;L;;;;;N;;;;;
+B7D0;HANGUL SYLLABLE RYAE;Lo;0;L;;;;;N;;;;;
+B7D1;HANGUL SYLLABLE RYAEG;Lo;0;L;;;;;N;;;;;
+B7D2;HANGUL SYLLABLE RYAEGG;Lo;0;L;;;;;N;;;;;
+B7D3;HANGUL SYLLABLE RYAEGS;Lo;0;L;;;;;N;;;;;
+B7D4;HANGUL SYLLABLE RYAEN;Lo;0;L;;;;;N;;;;;
+B7D5;HANGUL SYLLABLE RYAENI;Lo;0;L;;;;;N;;;;;
+B7D6;HANGUL SYLLABLE RYAENH;Lo;0;L;;;;;N;;;;;
+B7D7;HANGUL SYLLABLE RYAED;Lo;0;L;;;;;N;;;;;
+B7D8;HANGUL SYLLABLE RYAEL;Lo;0;L;;;;;N;;;;;
+B7D9;HANGUL SYLLABLE RYAELG;Lo;0;L;;;;;N;;;;;
+B7DA;HANGUL SYLLABLE RYAELM;Lo;0;L;;;;;N;;;;;
+B7DB;HANGUL SYLLABLE RYAELB;Lo;0;L;;;;;N;;;;;
+B7DC;HANGUL SYLLABLE RYAELS;Lo;0;L;;;;;N;;;;;
+B7DD;HANGUL SYLLABLE RYAELT;Lo;0;L;;;;;N;;;;;
+B7DE;HANGUL SYLLABLE RYAELP;Lo;0;L;;;;;N;;;;;
+B7DF;HANGUL SYLLABLE RYAELH;Lo;0;L;;;;;N;;;;;
+B7E0;HANGUL SYLLABLE RYAEM;Lo;0;L;;;;;N;;;;;
+B7E1;HANGUL SYLLABLE RYAEB;Lo;0;L;;;;;N;;;;;
+B7E2;HANGUL SYLLABLE RYAEBS;Lo;0;L;;;;;N;;;;;
+B7E3;HANGUL SYLLABLE RYAES;Lo;0;L;;;;;N;;;;;
+B7E4;HANGUL SYLLABLE RYAESS;Lo;0;L;;;;;N;;;;;
+B7E5;HANGUL SYLLABLE RYAENG;Lo;0;L;;;;;N;;;;;
+B7E6;HANGUL SYLLABLE RYAEJ;Lo;0;L;;;;;N;;;;;
+B7E7;HANGUL SYLLABLE RYAEC;Lo;0;L;;;;;N;;;;;
+B7E8;HANGUL SYLLABLE RYAEK;Lo;0;L;;;;;N;;;;;
+B7E9;HANGUL SYLLABLE RYAET;Lo;0;L;;;;;N;;;;;
+B7EA;HANGUL SYLLABLE RYAEP;Lo;0;L;;;;;N;;;;;
+B7EB;HANGUL SYLLABLE RYAEH;Lo;0;L;;;;;N;;;;;
+B7EC;HANGUL SYLLABLE REO;Lo;0;L;;;;;N;;;;;
+B7ED;HANGUL SYLLABLE REOG;Lo;0;L;;;;;N;;;;;
+B7EE;HANGUL SYLLABLE REOGG;Lo;0;L;;;;;N;;;;;
+B7EF;HANGUL SYLLABLE REOGS;Lo;0;L;;;;;N;;;;;
+B7F0;HANGUL SYLLABLE REON;Lo;0;L;;;;;N;;;;;
+B7F1;HANGUL SYLLABLE REONI;Lo;0;L;;;;;N;;;;;
+B7F2;HANGUL SYLLABLE REONH;Lo;0;L;;;;;N;;;;;
+B7F3;HANGUL SYLLABLE REOD;Lo;0;L;;;;;N;;;;;
+B7F4;HANGUL SYLLABLE REOL;Lo;0;L;;;;;N;;;;;
+B7F5;HANGUL SYLLABLE REOLG;Lo;0;L;;;;;N;;;;;
+B7F6;HANGUL SYLLABLE REOLM;Lo;0;L;;;;;N;;;;;
+B7F7;HANGUL SYLLABLE REOLB;Lo;0;L;;;;;N;;;;;
+B7F8;HANGUL SYLLABLE REOLS;Lo;0;L;;;;;N;;;;;
+B7F9;HANGUL SYLLABLE REOLT;Lo;0;L;;;;;N;;;;;
+B7FA;HANGUL SYLLABLE REOLP;Lo;0;L;;;;;N;;;;;
+B7FB;HANGUL SYLLABLE REOLH;Lo;0;L;;;;;N;;;;;
+B7FC;HANGUL SYLLABLE REOM;Lo;0;L;;;;;N;;;;;
+B7FD;HANGUL SYLLABLE REOB;Lo;0;L;;;;;N;;;;;
+B7FE;HANGUL SYLLABLE REOBS;Lo;0;L;;;;;N;;;;;
+B7FF;HANGUL SYLLABLE REOS;Lo;0;L;;;;;N;;;;;
+B800;HANGUL SYLLABLE REOSS;Lo;0;L;;;;;N;;;;;
+B801;HANGUL SYLLABLE REONG;Lo;0;L;;;;;N;;;;;
+B802;HANGUL SYLLABLE REOJ;Lo;0;L;;;;;N;;;;;
+B803;HANGUL SYLLABLE REOC;Lo;0;L;;;;;N;;;;;
+B804;HANGUL SYLLABLE REOK;Lo;0;L;;;;;N;;;;;
+B805;HANGUL SYLLABLE REOT;Lo;0;L;;;;;N;;;;;
+B806;HANGUL SYLLABLE REOP;Lo;0;L;;;;;N;;;;;
+B807;HANGUL SYLLABLE REOH;Lo;0;L;;;;;N;;;;;
+B808;HANGUL SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+B809;HANGUL SYLLABLE REG;Lo;0;L;;;;;N;;;;;
+B80A;HANGUL SYLLABLE REGG;Lo;0;L;;;;;N;;;;;
+B80B;HANGUL SYLLABLE REGS;Lo;0;L;;;;;N;;;;;
+B80C;HANGUL SYLLABLE REN;Lo;0;L;;;;;N;;;;;
+B80D;HANGUL SYLLABLE RENI;Lo;0;L;;;;;N;;;;;
+B80E;HANGUL SYLLABLE RENH;Lo;0;L;;;;;N;;;;;
+B80F;HANGUL SYLLABLE RED;Lo;0;L;;;;;N;;;;;
+B810;HANGUL SYLLABLE REL;Lo;0;L;;;;;N;;;;;
+B811;HANGUL SYLLABLE RELG;Lo;0;L;;;;;N;;;;;
+B812;HANGUL SYLLABLE RELM;Lo;0;L;;;;;N;;;;;
+B813;HANGUL SYLLABLE RELB;Lo;0;L;;;;;N;;;;;
+B814;HANGUL SYLLABLE RELS;Lo;0;L;;;;;N;;;;;
+B815;HANGUL SYLLABLE RELT;Lo;0;L;;;;;N;;;;;
+B816;HANGUL SYLLABLE RELP;Lo;0;L;;;;;N;;;;;
+B817;HANGUL SYLLABLE RELH;Lo;0;L;;;;;N;;;;;
+B818;HANGUL SYLLABLE REM;Lo;0;L;;;;;N;;;;;
+B819;HANGUL SYLLABLE REB;Lo;0;L;;;;;N;;;;;
+B81A;HANGUL SYLLABLE REBS;Lo;0;L;;;;;N;;;;;
+B81B;HANGUL SYLLABLE RES;Lo;0;L;;;;;N;;;;;
+B81C;HANGUL SYLLABLE RESS;Lo;0;L;;;;;N;;;;;
+B81D;HANGUL SYLLABLE RENG;Lo;0;L;;;;;N;;;;;
+B81E;HANGUL SYLLABLE REJ;Lo;0;L;;;;;N;;;;;
+B81F;HANGUL SYLLABLE REC;Lo;0;L;;;;;N;;;;;
+B820;HANGUL SYLLABLE REK;Lo;0;L;;;;;N;;;;;
+B821;HANGUL SYLLABLE RET;Lo;0;L;;;;;N;;;;;
+B822;HANGUL SYLLABLE REP;Lo;0;L;;;;;N;;;;;
+B823;HANGUL SYLLABLE REH;Lo;0;L;;;;;N;;;;;
+B824;HANGUL SYLLABLE RYEO;Lo;0;L;;;;;N;;;;;
+B825;HANGUL SYLLABLE RYEOG;Lo;0;L;;;;;N;;;;;
+B826;HANGUL SYLLABLE RYEOGG;Lo;0;L;;;;;N;;;;;
+B827;HANGUL SYLLABLE RYEOGS;Lo;0;L;;;;;N;;;;;
+B828;HANGUL SYLLABLE RYEON;Lo;0;L;;;;;N;;;;;
+B829;HANGUL SYLLABLE RYEONI;Lo;0;L;;;;;N;;;;;
+B82A;HANGUL SYLLABLE RYEONH;Lo;0;L;;;;;N;;;;;
+B82B;HANGUL SYLLABLE RYEOD;Lo;0;L;;;;;N;;;;;
+B82C;HANGUL SYLLABLE RYEOL;Lo;0;L;;;;;N;;;;;
+B82D;HANGUL SYLLABLE RYEOLG;Lo;0;L;;;;;N;;;;;
+B82E;HANGUL SYLLABLE RYEOLM;Lo;0;L;;;;;N;;;;;
+B82F;HANGUL SYLLABLE RYEOLB;Lo;0;L;;;;;N;;;;;
+B830;HANGUL SYLLABLE RYEOLS;Lo;0;L;;;;;N;;;;;
+B831;HANGUL SYLLABLE RYEOLT;Lo;0;L;;;;;N;;;;;
+B832;HANGUL SYLLABLE RYEOLP;Lo;0;L;;;;;N;;;;;
+B833;HANGUL SYLLABLE RYEOLH;Lo;0;L;;;;;N;;;;;
+B834;HANGUL SYLLABLE RYEOM;Lo;0;L;;;;;N;;;;;
+B835;HANGUL SYLLABLE RYEOB;Lo;0;L;;;;;N;;;;;
+B836;HANGUL SYLLABLE RYEOBS;Lo;0;L;;;;;N;;;;;
+B837;HANGUL SYLLABLE RYEOS;Lo;0;L;;;;;N;;;;;
+B838;HANGUL SYLLABLE RYEOSS;Lo;0;L;;;;;N;;;;;
+B839;HANGUL SYLLABLE RYEONG;Lo;0;L;;;;;N;;;;;
+B83A;HANGUL SYLLABLE RYEOJ;Lo;0;L;;;;;N;;;;;
+B83B;HANGUL SYLLABLE RYEOC;Lo;0;L;;;;;N;;;;;
+B83C;HANGUL SYLLABLE RYEOK;Lo;0;L;;;;;N;;;;;
+B83D;HANGUL SYLLABLE RYEOT;Lo;0;L;;;;;N;;;;;
+B83E;HANGUL SYLLABLE RYEOP;Lo;0;L;;;;;N;;;;;
+B83F;HANGUL SYLLABLE RYEOH;Lo;0;L;;;;;N;;;;;
+B840;HANGUL SYLLABLE RYE;Lo;0;L;;;;;N;;;;;
+B841;HANGUL SYLLABLE RYEG;Lo;0;L;;;;;N;;;;;
+B842;HANGUL SYLLABLE RYEGG;Lo;0;L;;;;;N;;;;;
+B843;HANGUL SYLLABLE RYEGS;Lo;0;L;;;;;N;;;;;
+B844;HANGUL SYLLABLE RYEN;Lo;0;L;;;;;N;;;;;
+B845;HANGUL SYLLABLE RYENI;Lo;0;L;;;;;N;;;;;
+B846;HANGUL SYLLABLE RYENH;Lo;0;L;;;;;N;;;;;
+B847;HANGUL SYLLABLE RYED;Lo;0;L;;;;;N;;;;;
+B848;HANGUL SYLLABLE RYEL;Lo;0;L;;;;;N;;;;;
+B849;HANGUL SYLLABLE RYELG;Lo;0;L;;;;;N;;;;;
+B84A;HANGUL SYLLABLE RYELM;Lo;0;L;;;;;N;;;;;
+B84B;HANGUL SYLLABLE RYELB;Lo;0;L;;;;;N;;;;;
+B84C;HANGUL SYLLABLE RYELS;Lo;0;L;;;;;N;;;;;
+B84D;HANGUL SYLLABLE RYELT;Lo;0;L;;;;;N;;;;;
+B84E;HANGUL SYLLABLE RYELP;Lo;0;L;;;;;N;;;;;
+B84F;HANGUL SYLLABLE RYELH;Lo;0;L;;;;;N;;;;;
+B850;HANGUL SYLLABLE RYEM;Lo;0;L;;;;;N;;;;;
+B851;HANGUL SYLLABLE RYEB;Lo;0;L;;;;;N;;;;;
+B852;HANGUL SYLLABLE RYEBS;Lo;0;L;;;;;N;;;;;
+B853;HANGUL SYLLABLE RYES;Lo;0;L;;;;;N;;;;;
+B854;HANGUL SYLLABLE RYESS;Lo;0;L;;;;;N;;;;;
+B855;HANGUL SYLLABLE RYENG;Lo;0;L;;;;;N;;;;;
+B856;HANGUL SYLLABLE RYEJ;Lo;0;L;;;;;N;;;;;
+B857;HANGUL SYLLABLE RYEC;Lo;0;L;;;;;N;;;;;
+B858;HANGUL SYLLABLE RYEK;Lo;0;L;;;;;N;;;;;
+B859;HANGUL SYLLABLE RYET;Lo;0;L;;;;;N;;;;;
+B85A;HANGUL SYLLABLE RYEP;Lo;0;L;;;;;N;;;;;
+B85B;HANGUL SYLLABLE RYEH;Lo;0;L;;;;;N;;;;;
+B85C;HANGUL SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+B85D;HANGUL SYLLABLE ROG;Lo;0;L;;;;;N;;;;;
+B85E;HANGUL SYLLABLE ROGG;Lo;0;L;;;;;N;;;;;
+B85F;HANGUL SYLLABLE ROGS;Lo;0;L;;;;;N;;;;;
+B860;HANGUL SYLLABLE RON;Lo;0;L;;;;;N;;;;;
+B861;HANGUL SYLLABLE RONI;Lo;0;L;;;;;N;;;;;
+B862;HANGUL SYLLABLE RONH;Lo;0;L;;;;;N;;;;;
+B863;HANGUL SYLLABLE ROD;Lo;0;L;;;;;N;;;;;
+B864;HANGUL SYLLABLE ROL;Lo;0;L;;;;;N;;;;;
+B865;HANGUL SYLLABLE ROLG;Lo;0;L;;;;;N;;;;;
+B866;HANGUL SYLLABLE ROLM;Lo;0;L;;;;;N;;;;;
+B867;HANGUL SYLLABLE ROLB;Lo;0;L;;;;;N;;;;;
+B868;HANGUL SYLLABLE ROLS;Lo;0;L;;;;;N;;;;;
+B869;HANGUL SYLLABLE ROLT;Lo;0;L;;;;;N;;;;;
+B86A;HANGUL SYLLABLE ROLP;Lo;0;L;;;;;N;;;;;
+B86B;HANGUL SYLLABLE ROLH;Lo;0;L;;;;;N;;;;;
+B86C;HANGUL SYLLABLE ROM;Lo;0;L;;;;;N;;;;;
+B86D;HANGUL SYLLABLE ROB;Lo;0;L;;;;;N;;;;;
+B86E;HANGUL SYLLABLE ROBS;Lo;0;L;;;;;N;;;;;
+B86F;HANGUL SYLLABLE ROS;Lo;0;L;;;;;N;;;;;
+B870;HANGUL SYLLABLE ROSS;Lo;0;L;;;;;N;;;;;
+B871;HANGUL SYLLABLE RONG;Lo;0;L;;;;;N;;;;;
+B872;HANGUL SYLLABLE ROJ;Lo;0;L;;;;;N;;;;;
+B873;HANGUL SYLLABLE ROC;Lo;0;L;;;;;N;;;;;
+B874;HANGUL SYLLABLE ROK;Lo;0;L;;;;;N;;;;;
+B875;HANGUL SYLLABLE ROT;Lo;0;L;;;;;N;;;;;
+B876;HANGUL SYLLABLE ROP;Lo;0;L;;;;;N;;;;;
+B877;HANGUL SYLLABLE ROH;Lo;0;L;;;;;N;;;;;
+B878;HANGUL SYLLABLE RWA;Lo;0;L;;;;;N;;;;;
+B879;HANGUL SYLLABLE RWAG;Lo;0;L;;;;;N;;;;;
+B87A;HANGUL SYLLABLE RWAGG;Lo;0;L;;;;;N;;;;;
+B87B;HANGUL SYLLABLE RWAGS;Lo;0;L;;;;;N;;;;;
+B87C;HANGUL SYLLABLE RWAN;Lo;0;L;;;;;N;;;;;
+B87D;HANGUL SYLLABLE RWANI;Lo;0;L;;;;;N;;;;;
+B87E;HANGUL SYLLABLE RWANH;Lo;0;L;;;;;N;;;;;
+B87F;HANGUL SYLLABLE RWAD;Lo;0;L;;;;;N;;;;;
+B880;HANGUL SYLLABLE RWAL;Lo;0;L;;;;;N;;;;;
+B881;HANGUL SYLLABLE RWALG;Lo;0;L;;;;;N;;;;;
+B882;HANGUL SYLLABLE RWALM;Lo;0;L;;;;;N;;;;;
+B883;HANGUL SYLLABLE RWALB;Lo;0;L;;;;;N;;;;;
+B884;HANGUL SYLLABLE RWALS;Lo;0;L;;;;;N;;;;;
+B885;HANGUL SYLLABLE RWALT;Lo;0;L;;;;;N;;;;;
+B886;HANGUL SYLLABLE RWALP;Lo;0;L;;;;;N;;;;;
+B887;HANGUL SYLLABLE RWALH;Lo;0;L;;;;;N;;;;;
+B888;HANGUL SYLLABLE RWAM;Lo;0;L;;;;;N;;;;;
+B889;HANGUL SYLLABLE RWAB;Lo;0;L;;;;;N;;;;;
+B88A;HANGUL SYLLABLE RWABS;Lo;0;L;;;;;N;;;;;
+B88B;HANGUL SYLLABLE RWAS;Lo;0;L;;;;;N;;;;;
+B88C;HANGUL SYLLABLE RWASS;Lo;0;L;;;;;N;;;;;
+B88D;HANGUL SYLLABLE RWANG;Lo;0;L;;;;;N;;;;;
+B88E;HANGUL SYLLABLE RWAJ;Lo;0;L;;;;;N;;;;;
+B88F;HANGUL SYLLABLE RWAC;Lo;0;L;;;;;N;;;;;
+B890;HANGUL SYLLABLE RWAK;Lo;0;L;;;;;N;;;;;
+B891;HANGUL SYLLABLE RWAT;Lo;0;L;;;;;N;;;;;
+B892;HANGUL SYLLABLE RWAP;Lo;0;L;;;;;N;;;;;
+B893;HANGUL SYLLABLE RWAH;Lo;0;L;;;;;N;;;;;
+B894;HANGUL SYLLABLE RWAE;Lo;0;L;;;;;N;;;;;
+B895;HANGUL SYLLABLE RWAEG;Lo;0;L;;;;;N;;;;;
+B896;HANGUL SYLLABLE RWAEGG;Lo;0;L;;;;;N;;;;;
+B897;HANGUL SYLLABLE RWAEGS;Lo;0;L;;;;;N;;;;;
+B898;HANGUL SYLLABLE RWAEN;Lo;0;L;;;;;N;;;;;
+B899;HANGUL SYLLABLE RWAENI;Lo;0;L;;;;;N;;;;;
+B89A;HANGUL SYLLABLE RWAENH;Lo;0;L;;;;;N;;;;;
+B89B;HANGUL SYLLABLE RWAED;Lo;0;L;;;;;N;;;;;
+B89C;HANGUL SYLLABLE RWAEL;Lo;0;L;;;;;N;;;;;
+B89D;HANGUL SYLLABLE RWAELG;Lo;0;L;;;;;N;;;;;
+B89E;HANGUL SYLLABLE RWAELM;Lo;0;L;;;;;N;;;;;
+B89F;HANGUL SYLLABLE RWAELB;Lo;0;L;;;;;N;;;;;
+B8A0;HANGUL SYLLABLE RWAELS;Lo;0;L;;;;;N;;;;;
+B8A1;HANGUL SYLLABLE RWAELT;Lo;0;L;;;;;N;;;;;
+B8A2;HANGUL SYLLABLE RWAELP;Lo;0;L;;;;;N;;;;;
+B8A3;HANGUL SYLLABLE RWAELH;Lo;0;L;;;;;N;;;;;
+B8A4;HANGUL SYLLABLE RWAEM;Lo;0;L;;;;;N;;;;;
+B8A5;HANGUL SYLLABLE RWAEB;Lo;0;L;;;;;N;;;;;
+B8A6;HANGUL SYLLABLE RWAEBS;Lo;0;L;;;;;N;;;;;
+B8A7;HANGUL SYLLABLE RWAES;Lo;0;L;;;;;N;;;;;
+B8A8;HANGUL SYLLABLE RWAESS;Lo;0;L;;;;;N;;;;;
+B8A9;HANGUL SYLLABLE RWAENG;Lo;0;L;;;;;N;;;;;
+B8AA;HANGUL SYLLABLE RWAEJ;Lo;0;L;;;;;N;;;;;
+B8AB;HANGUL SYLLABLE RWAEC;Lo;0;L;;;;;N;;;;;
+B8AC;HANGUL SYLLABLE RWAEK;Lo;0;L;;;;;N;;;;;
+B8AD;HANGUL SYLLABLE RWAET;Lo;0;L;;;;;N;;;;;
+B8AE;HANGUL SYLLABLE RWAEP;Lo;0;L;;;;;N;;;;;
+B8AF;HANGUL SYLLABLE RWAEH;Lo;0;L;;;;;N;;;;;
+B8B0;HANGUL SYLLABLE ROE;Lo;0;L;;;;;N;;;;;
+B8B1;HANGUL SYLLABLE ROEG;Lo;0;L;;;;;N;;;;;
+B8B2;HANGUL SYLLABLE ROEGG;Lo;0;L;;;;;N;;;;;
+B8B3;HANGUL SYLLABLE ROEGS;Lo;0;L;;;;;N;;;;;
+B8B4;HANGUL SYLLABLE ROEN;Lo;0;L;;;;;N;;;;;
+B8B5;HANGUL SYLLABLE ROENI;Lo;0;L;;;;;N;;;;;
+B8B6;HANGUL SYLLABLE ROENH;Lo;0;L;;;;;N;;;;;
+B8B7;HANGUL SYLLABLE ROED;Lo;0;L;;;;;N;;;;;
+B8B8;HANGUL SYLLABLE ROEL;Lo;0;L;;;;;N;;;;;
+B8B9;HANGUL SYLLABLE ROELG;Lo;0;L;;;;;N;;;;;
+B8BA;HANGUL SYLLABLE ROELM;Lo;0;L;;;;;N;;;;;
+B8BB;HANGUL SYLLABLE ROELB;Lo;0;L;;;;;N;;;;;
+B8BC;HANGUL SYLLABLE ROELS;Lo;0;L;;;;;N;;;;;
+B8BD;HANGUL SYLLABLE ROELT;Lo;0;L;;;;;N;;;;;
+B8BE;HANGUL SYLLABLE ROELP;Lo;0;L;;;;;N;;;;;
+B8BF;HANGUL SYLLABLE ROELH;Lo;0;L;;;;;N;;;;;
+B8C0;HANGUL SYLLABLE ROEM;Lo;0;L;;;;;N;;;;;
+B8C1;HANGUL SYLLABLE ROEB;Lo;0;L;;;;;N;;;;;
+B8C2;HANGUL SYLLABLE ROEBS;Lo;0;L;;;;;N;;;;;
+B8C3;HANGUL SYLLABLE ROES;Lo;0;L;;;;;N;;;;;
+B8C4;HANGUL SYLLABLE ROESS;Lo;0;L;;;;;N;;;;;
+B8C5;HANGUL SYLLABLE ROENG;Lo;0;L;;;;;N;;;;;
+B8C6;HANGUL SYLLABLE ROEJ;Lo;0;L;;;;;N;;;;;
+B8C7;HANGUL SYLLABLE ROEC;Lo;0;L;;;;;N;;;;;
+B8C8;HANGUL SYLLABLE ROEK;Lo;0;L;;;;;N;;;;;
+B8C9;HANGUL SYLLABLE ROET;Lo;0;L;;;;;N;;;;;
+B8CA;HANGUL SYLLABLE ROEP;Lo;0;L;;;;;N;;;;;
+B8CB;HANGUL SYLLABLE ROEH;Lo;0;L;;;;;N;;;;;
+B8CC;HANGUL SYLLABLE RYO;Lo;0;L;;;;;N;;;;;
+B8CD;HANGUL SYLLABLE RYOG;Lo;0;L;;;;;N;;;;;
+B8CE;HANGUL SYLLABLE RYOGG;Lo;0;L;;;;;N;;;;;
+B8CF;HANGUL SYLLABLE RYOGS;Lo;0;L;;;;;N;;;;;
+B8D0;HANGUL SYLLABLE RYON;Lo;0;L;;;;;N;;;;;
+B8D1;HANGUL SYLLABLE RYONI;Lo;0;L;;;;;N;;;;;
+B8D2;HANGUL SYLLABLE RYONH;Lo;0;L;;;;;N;;;;;
+B8D3;HANGUL SYLLABLE RYOD;Lo;0;L;;;;;N;;;;;
+B8D4;HANGUL SYLLABLE RYOL;Lo;0;L;;;;;N;;;;;
+B8D5;HANGUL SYLLABLE RYOLG;Lo;0;L;;;;;N;;;;;
+B8D6;HANGUL SYLLABLE RYOLM;Lo;0;L;;;;;N;;;;;
+B8D7;HANGUL SYLLABLE RYOLB;Lo;0;L;;;;;N;;;;;
+B8D8;HANGUL SYLLABLE RYOLS;Lo;0;L;;;;;N;;;;;
+B8D9;HANGUL SYLLABLE RYOLT;Lo;0;L;;;;;N;;;;;
+B8DA;HANGUL SYLLABLE RYOLP;Lo;0;L;;;;;N;;;;;
+B8DB;HANGUL SYLLABLE RYOLH;Lo;0;L;;;;;N;;;;;
+B8DC;HANGUL SYLLABLE RYOM;Lo;0;L;;;;;N;;;;;
+B8DD;HANGUL SYLLABLE RYOB;Lo;0;L;;;;;N;;;;;
+B8DE;HANGUL SYLLABLE RYOBS;Lo;0;L;;;;;N;;;;;
+B8DF;HANGUL SYLLABLE RYOS;Lo;0;L;;;;;N;;;;;
+B8E0;HANGUL SYLLABLE RYOSS;Lo;0;L;;;;;N;;;;;
+B8E1;HANGUL SYLLABLE RYONG;Lo;0;L;;;;;N;;;;;
+B8E2;HANGUL SYLLABLE RYOJ;Lo;0;L;;;;;N;;;;;
+B8E3;HANGUL SYLLABLE RYOC;Lo;0;L;;;;;N;;;;;
+B8E4;HANGUL SYLLABLE RYOK;Lo;0;L;;;;;N;;;;;
+B8E5;HANGUL SYLLABLE RYOT;Lo;0;L;;;;;N;;;;;
+B8E6;HANGUL SYLLABLE RYOP;Lo;0;L;;;;;N;;;;;
+B8E7;HANGUL SYLLABLE RYOH;Lo;0;L;;;;;N;;;;;
+B8E8;HANGUL SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+B8E9;HANGUL SYLLABLE RUG;Lo;0;L;;;;;N;;;;;
+B8EA;HANGUL SYLLABLE RUGG;Lo;0;L;;;;;N;;;;;
+B8EB;HANGUL SYLLABLE RUGS;Lo;0;L;;;;;N;;;;;
+B8EC;HANGUL SYLLABLE RUN;Lo;0;L;;;;;N;;;;;
+B8ED;HANGUL SYLLABLE RUNI;Lo;0;L;;;;;N;;;;;
+B8EE;HANGUL SYLLABLE RUNH;Lo;0;L;;;;;N;;;;;
+B8EF;HANGUL SYLLABLE RUD;Lo;0;L;;;;;N;;;;;
+B8F0;HANGUL SYLLABLE RUL;Lo;0;L;;;;;N;;;;;
+B8F1;HANGUL SYLLABLE RULG;Lo;0;L;;;;;N;;;;;
+B8F2;HANGUL SYLLABLE RULM;Lo;0;L;;;;;N;;;;;
+B8F3;HANGUL SYLLABLE RULB;Lo;0;L;;;;;N;;;;;
+B8F4;HANGUL SYLLABLE RULS;Lo;0;L;;;;;N;;;;;
+B8F5;HANGUL SYLLABLE RULT;Lo;0;L;;;;;N;;;;;
+B8F6;HANGUL SYLLABLE RULP;Lo;0;L;;;;;N;;;;;
+B8F7;HANGUL SYLLABLE RULH;Lo;0;L;;;;;N;;;;;
+B8F8;HANGUL SYLLABLE RUM;Lo;0;L;;;;;N;;;;;
+B8F9;HANGUL SYLLABLE RUB;Lo;0;L;;;;;N;;;;;
+B8FA;HANGUL SYLLABLE RUBS;Lo;0;L;;;;;N;;;;;
+B8FB;HANGUL SYLLABLE RUS;Lo;0;L;;;;;N;;;;;
+B8FC;HANGUL SYLLABLE RUSS;Lo;0;L;;;;;N;;;;;
+B8FD;HANGUL SYLLABLE RUNG;Lo;0;L;;;;;N;;;;;
+B8FE;HANGUL SYLLABLE RUJ;Lo;0;L;;;;;N;;;;;
+B8FF;HANGUL SYLLABLE RUC;Lo;0;L;;;;;N;;;;;
+B900;HANGUL SYLLABLE RUK;Lo;0;L;;;;;N;;;;;
+B901;HANGUL SYLLABLE RUT;Lo;0;L;;;;;N;;;;;
+B902;HANGUL SYLLABLE RUP;Lo;0;L;;;;;N;;;;;
+B903;HANGUL SYLLABLE RUH;Lo;0;L;;;;;N;;;;;
+B904;HANGUL SYLLABLE RWEO;Lo;0;L;;;;;N;;;;;
+B905;HANGUL SYLLABLE RWEOG;Lo;0;L;;;;;N;;;;;
+B906;HANGUL SYLLABLE RWEOGG;Lo;0;L;;;;;N;;;;;
+B907;HANGUL SYLLABLE RWEOGS;Lo;0;L;;;;;N;;;;;
+B908;HANGUL SYLLABLE RWEON;Lo;0;L;;;;;N;;;;;
+B909;HANGUL SYLLABLE RWEONI;Lo;0;L;;;;;N;;;;;
+B90A;HANGUL SYLLABLE RWEONH;Lo;0;L;;;;;N;;;;;
+B90B;HANGUL SYLLABLE RWEOD;Lo;0;L;;;;;N;;;;;
+B90C;HANGUL SYLLABLE RWEOL;Lo;0;L;;;;;N;;;;;
+B90D;HANGUL SYLLABLE RWEOLG;Lo;0;L;;;;;N;;;;;
+B90E;HANGUL SYLLABLE RWEOLM;Lo;0;L;;;;;N;;;;;
+B90F;HANGUL SYLLABLE RWEOLB;Lo;0;L;;;;;N;;;;;
+B910;HANGUL SYLLABLE RWEOLS;Lo;0;L;;;;;N;;;;;
+B911;HANGUL SYLLABLE RWEOLT;Lo;0;L;;;;;N;;;;;
+B912;HANGUL SYLLABLE RWEOLP;Lo;0;L;;;;;N;;;;;
+B913;HANGUL SYLLABLE RWEOLH;Lo;0;L;;;;;N;;;;;
+B914;HANGUL SYLLABLE RWEOM;Lo;0;L;;;;;N;;;;;
+B915;HANGUL SYLLABLE RWEOB;Lo;0;L;;;;;N;;;;;
+B916;HANGUL SYLLABLE RWEOBS;Lo;0;L;;;;;N;;;;;
+B917;HANGUL SYLLABLE RWEOS;Lo;0;L;;;;;N;;;;;
+B918;HANGUL SYLLABLE RWEOSS;Lo;0;L;;;;;N;;;;;
+B919;HANGUL SYLLABLE RWEONG;Lo;0;L;;;;;N;;;;;
+B91A;HANGUL SYLLABLE RWEOJ;Lo;0;L;;;;;N;;;;;
+B91B;HANGUL SYLLABLE RWEOC;Lo;0;L;;;;;N;;;;;
+B91C;HANGUL SYLLABLE RWEOK;Lo;0;L;;;;;N;;;;;
+B91D;HANGUL SYLLABLE RWEOT;Lo;0;L;;;;;N;;;;;
+B91E;HANGUL SYLLABLE RWEOP;Lo;0;L;;;;;N;;;;;
+B91F;HANGUL SYLLABLE RWEOH;Lo;0;L;;;;;N;;;;;
+B920;HANGUL SYLLABLE RWE;Lo;0;L;;;;;N;;;;;
+B921;HANGUL SYLLABLE RWEG;Lo;0;L;;;;;N;;;;;
+B922;HANGUL SYLLABLE RWEGG;Lo;0;L;;;;;N;;;;;
+B923;HANGUL SYLLABLE RWEGS;Lo;0;L;;;;;N;;;;;
+B924;HANGUL SYLLABLE RWEN;Lo;0;L;;;;;N;;;;;
+B925;HANGUL SYLLABLE RWENI;Lo;0;L;;;;;N;;;;;
+B926;HANGUL SYLLABLE RWENH;Lo;0;L;;;;;N;;;;;
+B927;HANGUL SYLLABLE RWED;Lo;0;L;;;;;N;;;;;
+B928;HANGUL SYLLABLE RWEL;Lo;0;L;;;;;N;;;;;
+B929;HANGUL SYLLABLE RWELG;Lo;0;L;;;;;N;;;;;
+B92A;HANGUL SYLLABLE RWELM;Lo;0;L;;;;;N;;;;;
+B92B;HANGUL SYLLABLE RWELB;Lo;0;L;;;;;N;;;;;
+B92C;HANGUL SYLLABLE RWELS;Lo;0;L;;;;;N;;;;;
+B92D;HANGUL SYLLABLE RWELT;Lo;0;L;;;;;N;;;;;
+B92E;HANGUL SYLLABLE RWELP;Lo;0;L;;;;;N;;;;;
+B92F;HANGUL SYLLABLE RWELH;Lo;0;L;;;;;N;;;;;
+B930;HANGUL SYLLABLE RWEM;Lo;0;L;;;;;N;;;;;
+B931;HANGUL SYLLABLE RWEB;Lo;0;L;;;;;N;;;;;
+B932;HANGUL SYLLABLE RWEBS;Lo;0;L;;;;;N;;;;;
+B933;HANGUL SYLLABLE RWES;Lo;0;L;;;;;N;;;;;
+B934;HANGUL SYLLABLE RWESS;Lo;0;L;;;;;N;;;;;
+B935;HANGUL SYLLABLE RWENG;Lo;0;L;;;;;N;;;;;
+B936;HANGUL SYLLABLE RWEJ;Lo;0;L;;;;;N;;;;;
+B937;HANGUL SYLLABLE RWEC;Lo;0;L;;;;;N;;;;;
+B938;HANGUL SYLLABLE RWEK;Lo;0;L;;;;;N;;;;;
+B939;HANGUL SYLLABLE RWET;Lo;0;L;;;;;N;;;;;
+B93A;HANGUL SYLLABLE RWEP;Lo;0;L;;;;;N;;;;;
+B93B;HANGUL SYLLABLE RWEH;Lo;0;L;;;;;N;;;;;
+B93C;HANGUL SYLLABLE RWI;Lo;0;L;;;;;N;;;;;
+B93D;HANGUL SYLLABLE RWIG;Lo;0;L;;;;;N;;;;;
+B93E;HANGUL SYLLABLE RWIGG;Lo;0;L;;;;;N;;;;;
+B93F;HANGUL SYLLABLE RWIGS;Lo;0;L;;;;;N;;;;;
+B940;HANGUL SYLLABLE RWIN;Lo;0;L;;;;;N;;;;;
+B941;HANGUL SYLLABLE RWINI;Lo;0;L;;;;;N;;;;;
+B942;HANGUL SYLLABLE RWINH;Lo;0;L;;;;;N;;;;;
+B943;HANGUL SYLLABLE RWID;Lo;0;L;;;;;N;;;;;
+B944;HANGUL SYLLABLE RWIL;Lo;0;L;;;;;N;;;;;
+B945;HANGUL SYLLABLE RWILG;Lo;0;L;;;;;N;;;;;
+B946;HANGUL SYLLABLE RWILM;Lo;0;L;;;;;N;;;;;
+B947;HANGUL SYLLABLE RWILB;Lo;0;L;;;;;N;;;;;
+B948;HANGUL SYLLABLE RWILS;Lo;0;L;;;;;N;;;;;
+B949;HANGUL SYLLABLE RWILT;Lo;0;L;;;;;N;;;;;
+B94A;HANGUL SYLLABLE RWILP;Lo;0;L;;;;;N;;;;;
+B94B;HANGUL SYLLABLE RWILH;Lo;0;L;;;;;N;;;;;
+B94C;HANGUL SYLLABLE RWIM;Lo;0;L;;;;;N;;;;;
+B94D;HANGUL SYLLABLE RWIB;Lo;0;L;;;;;N;;;;;
+B94E;HANGUL SYLLABLE RWIBS;Lo;0;L;;;;;N;;;;;
+B94F;HANGUL SYLLABLE RWIS;Lo;0;L;;;;;N;;;;;
+B950;HANGUL SYLLABLE RWISS;Lo;0;L;;;;;N;;;;;
+B951;HANGUL SYLLABLE RWING;Lo;0;L;;;;;N;;;;;
+B952;HANGUL SYLLABLE RWIJ;Lo;0;L;;;;;N;;;;;
+B953;HANGUL SYLLABLE RWIC;Lo;0;L;;;;;N;;;;;
+B954;HANGUL SYLLABLE RWIK;Lo;0;L;;;;;N;;;;;
+B955;HANGUL SYLLABLE RWIT;Lo;0;L;;;;;N;;;;;
+B956;HANGUL SYLLABLE RWIP;Lo;0;L;;;;;N;;;;;
+B957;HANGUL SYLLABLE RWIH;Lo;0;L;;;;;N;;;;;
+B958;HANGUL SYLLABLE RYU;Lo;0;L;;;;;N;;;;;
+B959;HANGUL SYLLABLE RYUG;Lo;0;L;;;;;N;;;;;
+B95A;HANGUL SYLLABLE RYUGG;Lo;0;L;;;;;N;;;;;
+B95B;HANGUL SYLLABLE RYUGS;Lo;0;L;;;;;N;;;;;
+B95C;HANGUL SYLLABLE RYUN;Lo;0;L;;;;;N;;;;;
+B95D;HANGUL SYLLABLE RYUNI;Lo;0;L;;;;;N;;;;;
+B95E;HANGUL SYLLABLE RYUNH;Lo;0;L;;;;;N;;;;;
+B95F;HANGUL SYLLABLE RYUD;Lo;0;L;;;;;N;;;;;
+B960;HANGUL SYLLABLE RYUL;Lo;0;L;;;;;N;;;;;
+B961;HANGUL SYLLABLE RYULG;Lo;0;L;;;;;N;;;;;
+B962;HANGUL SYLLABLE RYULM;Lo;0;L;;;;;N;;;;;
+B963;HANGUL SYLLABLE RYULB;Lo;0;L;;;;;N;;;;;
+B964;HANGUL SYLLABLE RYULS;Lo;0;L;;;;;N;;;;;
+B965;HANGUL SYLLABLE RYULT;Lo;0;L;;;;;N;;;;;
+B966;HANGUL SYLLABLE RYULP;Lo;0;L;;;;;N;;;;;
+B967;HANGUL SYLLABLE RYULH;Lo;0;L;;;;;N;;;;;
+B968;HANGUL SYLLABLE RYUM;Lo;0;L;;;;;N;;;;;
+B969;HANGUL SYLLABLE RYUB;Lo;0;L;;;;;N;;;;;
+B96A;HANGUL SYLLABLE RYUBS;Lo;0;L;;;;;N;;;;;
+B96B;HANGUL SYLLABLE RYUS;Lo;0;L;;;;;N;;;;;
+B96C;HANGUL SYLLABLE RYUSS;Lo;0;L;;;;;N;;;;;
+B96D;HANGUL SYLLABLE RYUNG;Lo;0;L;;;;;N;;;;;
+B96E;HANGUL SYLLABLE RYUJ;Lo;0;L;;;;;N;;;;;
+B96F;HANGUL SYLLABLE RYUC;Lo;0;L;;;;;N;;;;;
+B970;HANGUL SYLLABLE RYUK;Lo;0;L;;;;;N;;;;;
+B971;HANGUL SYLLABLE RYUT;Lo;0;L;;;;;N;;;;;
+B972;HANGUL SYLLABLE RYUP;Lo;0;L;;;;;N;;;;;
+B973;HANGUL SYLLABLE RYUH;Lo;0;L;;;;;N;;;;;
+B974;HANGUL SYLLABLE REU;Lo;0;L;;;;;N;;;;;
+B975;HANGUL SYLLABLE REUG;Lo;0;L;;;;;N;;;;;
+B976;HANGUL SYLLABLE REUGG;Lo;0;L;;;;;N;;;;;
+B977;HANGUL SYLLABLE REUGS;Lo;0;L;;;;;N;;;;;
+B978;HANGUL SYLLABLE REUN;Lo;0;L;;;;;N;;;;;
+B979;HANGUL SYLLABLE REUNI;Lo;0;L;;;;;N;;;;;
+B97A;HANGUL SYLLABLE REUNH;Lo;0;L;;;;;N;;;;;
+B97B;HANGUL SYLLABLE REUD;Lo;0;L;;;;;N;;;;;
+B97C;HANGUL SYLLABLE REUL;Lo;0;L;;;;;N;;;;;
+B97D;HANGUL SYLLABLE REULG;Lo;0;L;;;;;N;;;;;
+B97E;HANGUL SYLLABLE REULM;Lo;0;L;;;;;N;;;;;
+B97F;HANGUL SYLLABLE REULB;Lo;0;L;;;;;N;;;;;
+B980;HANGUL SYLLABLE REULS;Lo;0;L;;;;;N;;;;;
+B981;HANGUL SYLLABLE REULT;Lo;0;L;;;;;N;;;;;
+B982;HANGUL SYLLABLE REULP;Lo;0;L;;;;;N;;;;;
+B983;HANGUL SYLLABLE REULH;Lo;0;L;;;;;N;;;;;
+B984;HANGUL SYLLABLE REUM;Lo;0;L;;;;;N;;;;;
+B985;HANGUL SYLLABLE REUB;Lo;0;L;;;;;N;;;;;
+B986;HANGUL SYLLABLE REUBS;Lo;0;L;;;;;N;;;;;
+B987;HANGUL SYLLABLE REUS;Lo;0;L;;;;;N;;;;;
+B988;HANGUL SYLLABLE REUSS;Lo;0;L;;;;;N;;;;;
+B989;HANGUL SYLLABLE REUNG;Lo;0;L;;;;;N;;;;;
+B98A;HANGUL SYLLABLE REUJ;Lo;0;L;;;;;N;;;;;
+B98B;HANGUL SYLLABLE REUC;Lo;0;L;;;;;N;;;;;
+B98C;HANGUL SYLLABLE REUK;Lo;0;L;;;;;N;;;;;
+B98D;HANGUL SYLLABLE REUT;Lo;0;L;;;;;N;;;;;
+B98E;HANGUL SYLLABLE REUP;Lo;0;L;;;;;N;;;;;
+B98F;HANGUL SYLLABLE REUH;Lo;0;L;;;;;N;;;;;
+B990;HANGUL SYLLABLE RYI;Lo;0;L;;;;;N;;;;;
+B991;HANGUL SYLLABLE RYIG;Lo;0;L;;;;;N;;;;;
+B992;HANGUL SYLLABLE RYIGG;Lo;0;L;;;;;N;;;;;
+B993;HANGUL SYLLABLE RYIGS;Lo;0;L;;;;;N;;;;;
+B994;HANGUL SYLLABLE RYIN;Lo;0;L;;;;;N;;;;;
+B995;HANGUL SYLLABLE RYINI;Lo;0;L;;;;;N;;;;;
+B996;HANGUL SYLLABLE RYINH;Lo;0;L;;;;;N;;;;;
+B997;HANGUL SYLLABLE RYID;Lo;0;L;;;;;N;;;;;
+B998;HANGUL SYLLABLE RYIL;Lo;0;L;;;;;N;;;;;
+B999;HANGUL SYLLABLE RYILG;Lo;0;L;;;;;N;;;;;
+B99A;HANGUL SYLLABLE RYILM;Lo;0;L;;;;;N;;;;;
+B99B;HANGUL SYLLABLE RYILB;Lo;0;L;;;;;N;;;;;
+B99C;HANGUL SYLLABLE RYILS;Lo;0;L;;;;;N;;;;;
+B99D;HANGUL SYLLABLE RYILT;Lo;0;L;;;;;N;;;;;
+B99E;HANGUL SYLLABLE RYILP;Lo;0;L;;;;;N;;;;;
+B99F;HANGUL SYLLABLE RYILH;Lo;0;L;;;;;N;;;;;
+B9A0;HANGUL SYLLABLE RYIM;Lo;0;L;;;;;N;;;;;
+B9A1;HANGUL SYLLABLE RYIB;Lo;0;L;;;;;N;;;;;
+B9A2;HANGUL SYLLABLE RYIBS;Lo;0;L;;;;;N;;;;;
+B9A3;HANGUL SYLLABLE RYIS;Lo;0;L;;;;;N;;;;;
+B9A4;HANGUL SYLLABLE RYISS;Lo;0;L;;;;;N;;;;;
+B9A5;HANGUL SYLLABLE RYING;Lo;0;L;;;;;N;;;;;
+B9A6;HANGUL SYLLABLE RYIJ;Lo;0;L;;;;;N;;;;;
+B9A7;HANGUL SYLLABLE RYIC;Lo;0;L;;;;;N;;;;;
+B9A8;HANGUL SYLLABLE RYIK;Lo;0;L;;;;;N;;;;;
+B9A9;HANGUL SYLLABLE RYIT;Lo;0;L;;;;;N;;;;;
+B9AA;HANGUL SYLLABLE RYIP;Lo;0;L;;;;;N;;;;;
+B9AB;HANGUL SYLLABLE RYIH;Lo;0;L;;;;;N;;;;;
+B9AC;HANGUL SYLLABLE RI;Lo;0;L;;;;;N;;;;;
+B9AD;HANGUL SYLLABLE RIG;Lo;0;L;;;;;N;;;;;
+B9AE;HANGUL SYLLABLE RIGG;Lo;0;L;;;;;N;;;;;
+B9AF;HANGUL SYLLABLE RIGS;Lo;0;L;;;;;N;;;;;
+B9B0;HANGUL SYLLABLE RIN;Lo;0;L;;;;;N;;;;;
+B9B1;HANGUL SYLLABLE RINI;Lo;0;L;;;;;N;;;;;
+B9B2;HANGUL SYLLABLE RINH;Lo;0;L;;;;;N;;;;;
+B9B3;HANGUL SYLLABLE RID;Lo;0;L;;;;;N;;;;;
+B9B4;HANGUL SYLLABLE RIL;Lo;0;L;;;;;N;;;;;
+B9B5;HANGUL SYLLABLE RILG;Lo;0;L;;;;;N;;;;;
+B9B6;HANGUL SYLLABLE RILM;Lo;0;L;;;;;N;;;;;
+B9B7;HANGUL SYLLABLE RILB;Lo;0;L;;;;;N;;;;;
+B9B8;HANGUL SYLLABLE RILS;Lo;0;L;;;;;N;;;;;
+B9B9;HANGUL SYLLABLE RILT;Lo;0;L;;;;;N;;;;;
+B9BA;HANGUL SYLLABLE RILP;Lo;0;L;;;;;N;;;;;
+B9BB;HANGUL SYLLABLE RILH;Lo;0;L;;;;;N;;;;;
+B9BC;HANGUL SYLLABLE RIM;Lo;0;L;;;;;N;;;;;
+B9BD;HANGUL SYLLABLE RIB;Lo;0;L;;;;;N;;;;;
+B9BE;HANGUL SYLLABLE RIBS;Lo;0;L;;;;;N;;;;;
+B9BF;HANGUL SYLLABLE RIS;Lo;0;L;;;;;N;;;;;
+B9C0;HANGUL SYLLABLE RISS;Lo;0;L;;;;;N;;;;;
+B9C1;HANGUL SYLLABLE RING;Lo;0;L;;;;;N;;;;;
+B9C2;HANGUL SYLLABLE RIJ;Lo;0;L;;;;;N;;;;;
+B9C3;HANGUL SYLLABLE RIC;Lo;0;L;;;;;N;;;;;
+B9C4;HANGUL SYLLABLE RIK;Lo;0;L;;;;;N;;;;;
+B9C5;HANGUL SYLLABLE RIT;Lo;0;L;;;;;N;;;;;
+B9C6;HANGUL SYLLABLE RIP;Lo;0;L;;;;;N;;;;;
+B9C7;HANGUL SYLLABLE RIH;Lo;0;L;;;;;N;;;;;
+B9C8;HANGUL SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+B9C9;HANGUL SYLLABLE MAG;Lo;0;L;;;;;N;;;;;
+B9CA;HANGUL SYLLABLE MAGG;Lo;0;L;;;;;N;;;;;
+B9CB;HANGUL SYLLABLE MAGS;Lo;0;L;;;;;N;;;;;
+B9CC;HANGUL SYLLABLE MAN;Lo;0;L;;;;;N;;;;;
+B9CD;HANGUL SYLLABLE MANI;Lo;0;L;;;;;N;;;;;
+B9CE;HANGUL SYLLABLE MANH;Lo;0;L;;;;;N;;;;;
+B9CF;HANGUL SYLLABLE MAD;Lo;0;L;;;;;N;;;;;
+B9D0;HANGUL SYLLABLE MAL;Lo;0;L;;;;;N;;;;;
+B9D1;HANGUL SYLLABLE MALG;Lo;0;L;;;;;N;;;;;
+B9D2;HANGUL SYLLABLE MALM;Lo;0;L;;;;;N;;;;;
+B9D3;HANGUL SYLLABLE MALB;Lo;0;L;;;;;N;;;;;
+B9D4;HANGUL SYLLABLE MALS;Lo;0;L;;;;;N;;;;;
+B9D5;HANGUL SYLLABLE MALT;Lo;0;L;;;;;N;;;;;
+B9D6;HANGUL SYLLABLE MALP;Lo;0;L;;;;;N;;;;;
+B9D7;HANGUL SYLLABLE MALH;Lo;0;L;;;;;N;;;;;
+B9D8;HANGUL SYLLABLE MAM;Lo;0;L;;;;;N;;;;;
+B9D9;HANGUL SYLLABLE MAB;Lo;0;L;;;;;N;;;;;
+B9DA;HANGUL SYLLABLE MABS;Lo;0;L;;;;;N;;;;;
+B9DB;HANGUL SYLLABLE MAS;Lo;0;L;;;;;N;;;;;
+B9DC;HANGUL SYLLABLE MASS;Lo;0;L;;;;;N;;;;;
+B9DD;HANGUL SYLLABLE MANG;Lo;0;L;;;;;N;;;;;
+B9DE;HANGUL SYLLABLE MAJ;Lo;0;L;;;;;N;;;;;
+B9DF;HANGUL SYLLABLE MAC;Lo;0;L;;;;;N;;;;;
+B9E0;HANGUL SYLLABLE MAK;Lo;0;L;;;;;N;;;;;
+B9E1;HANGUL SYLLABLE MAT;Lo;0;L;;;;;N;;;;;
+B9E2;HANGUL SYLLABLE MAP;Lo;0;L;;;;;N;;;;;
+B9E3;HANGUL SYLLABLE MAH;Lo;0;L;;;;;N;;;;;
+B9E4;HANGUL SYLLABLE MAE;Lo;0;L;;;;;N;;;;;
+B9E5;HANGUL SYLLABLE MAEG;Lo;0;L;;;;;N;;;;;
+B9E6;HANGUL SYLLABLE MAEGG;Lo;0;L;;;;;N;;;;;
+B9E7;HANGUL SYLLABLE MAEGS;Lo;0;L;;;;;N;;;;;
+B9E8;HANGUL SYLLABLE MAEN;Lo;0;L;;;;;N;;;;;
+B9E9;HANGUL SYLLABLE MAENI;Lo;0;L;;;;;N;;;;;
+B9EA;HANGUL SYLLABLE MAENH;Lo;0;L;;;;;N;;;;;
+B9EB;HANGUL SYLLABLE MAED;Lo;0;L;;;;;N;;;;;
+B9EC;HANGUL SYLLABLE MAEL;Lo;0;L;;;;;N;;;;;
+B9ED;HANGUL SYLLABLE MAELG;Lo;0;L;;;;;N;;;;;
+B9EE;HANGUL SYLLABLE MAELM;Lo;0;L;;;;;N;;;;;
+B9EF;HANGUL SYLLABLE MAELB;Lo;0;L;;;;;N;;;;;
+B9F0;HANGUL SYLLABLE MAELS;Lo;0;L;;;;;N;;;;;
+B9F1;HANGUL SYLLABLE MAELT;Lo;0;L;;;;;N;;;;;
+B9F2;HANGUL SYLLABLE MAELP;Lo;0;L;;;;;N;;;;;
+B9F3;HANGUL SYLLABLE MAELH;Lo;0;L;;;;;N;;;;;
+B9F4;HANGUL SYLLABLE MAEM;Lo;0;L;;;;;N;;;;;
+B9F5;HANGUL SYLLABLE MAEB;Lo;0;L;;;;;N;;;;;
+B9F6;HANGUL SYLLABLE MAEBS;Lo;0;L;;;;;N;;;;;
+B9F7;HANGUL SYLLABLE MAES;Lo;0;L;;;;;N;;;;;
+B9F8;HANGUL SYLLABLE MAESS;Lo;0;L;;;;;N;;;;;
+B9F9;HANGUL SYLLABLE MAENG;Lo;0;L;;;;;N;;;;;
+B9FA;HANGUL SYLLABLE MAEJ;Lo;0;L;;;;;N;;;;;
+B9FB;HANGUL SYLLABLE MAEC;Lo;0;L;;;;;N;;;;;
+B9FC;HANGUL SYLLABLE MAEK;Lo;0;L;;;;;N;;;;;
+B9FD;HANGUL SYLLABLE MAET;Lo;0;L;;;;;N;;;;;
+B9FE;HANGUL SYLLABLE MAEP;Lo;0;L;;;;;N;;;;;
+B9FF;HANGUL SYLLABLE MAEH;Lo;0;L;;;;;N;;;;;
+BA00;HANGUL SYLLABLE MYA;Lo;0;L;;;;;N;;;;;
+BA01;HANGUL SYLLABLE MYAG;Lo;0;L;;;;;N;;;;;
+BA02;HANGUL SYLLABLE MYAGG;Lo;0;L;;;;;N;;;;;
+BA03;HANGUL SYLLABLE MYAGS;Lo;0;L;;;;;N;;;;;
+BA04;HANGUL SYLLABLE MYAN;Lo;0;L;;;;;N;;;;;
+BA05;HANGUL SYLLABLE MYANI;Lo;0;L;;;;;N;;;;;
+BA06;HANGUL SYLLABLE MYANH;Lo;0;L;;;;;N;;;;;
+BA07;HANGUL SYLLABLE MYAD;Lo;0;L;;;;;N;;;;;
+BA08;HANGUL SYLLABLE MYAL;Lo;0;L;;;;;N;;;;;
+BA09;HANGUL SYLLABLE MYALG;Lo;0;L;;;;;N;;;;;
+BA0A;HANGUL SYLLABLE MYALM;Lo;0;L;;;;;N;;;;;
+BA0B;HANGUL SYLLABLE MYALB;Lo;0;L;;;;;N;;;;;
+BA0C;HANGUL SYLLABLE MYALS;Lo;0;L;;;;;N;;;;;
+BA0D;HANGUL SYLLABLE MYALT;Lo;0;L;;;;;N;;;;;
+BA0E;HANGUL SYLLABLE MYALP;Lo;0;L;;;;;N;;;;;
+BA0F;HANGUL SYLLABLE MYALH;Lo;0;L;;;;;N;;;;;
+BA10;HANGUL SYLLABLE MYAM;Lo;0;L;;;;;N;;;;;
+BA11;HANGUL SYLLABLE MYAB;Lo;0;L;;;;;N;;;;;
+BA12;HANGUL SYLLABLE MYABS;Lo;0;L;;;;;N;;;;;
+BA13;HANGUL SYLLABLE MYAS;Lo;0;L;;;;;N;;;;;
+BA14;HANGUL SYLLABLE MYASS;Lo;0;L;;;;;N;;;;;
+BA15;HANGUL SYLLABLE MYANG;Lo;0;L;;;;;N;;;;;
+BA16;HANGUL SYLLABLE MYAJ;Lo;0;L;;;;;N;;;;;
+BA17;HANGUL SYLLABLE MYAC;Lo;0;L;;;;;N;;;;;
+BA18;HANGUL SYLLABLE MYAK;Lo;0;L;;;;;N;;;;;
+BA19;HANGUL SYLLABLE MYAT;Lo;0;L;;;;;N;;;;;
+BA1A;HANGUL SYLLABLE MYAP;Lo;0;L;;;;;N;;;;;
+BA1B;HANGUL SYLLABLE MYAH;Lo;0;L;;;;;N;;;;;
+BA1C;HANGUL SYLLABLE MYAE;Lo;0;L;;;;;N;;;;;
+BA1D;HANGUL SYLLABLE MYAEG;Lo;0;L;;;;;N;;;;;
+BA1E;HANGUL SYLLABLE MYAEGG;Lo;0;L;;;;;N;;;;;
+BA1F;HANGUL SYLLABLE MYAEGS;Lo;0;L;;;;;N;;;;;
+BA20;HANGUL SYLLABLE MYAEN;Lo;0;L;;;;;N;;;;;
+BA21;HANGUL SYLLABLE MYAENI;Lo;0;L;;;;;N;;;;;
+BA22;HANGUL SYLLABLE MYAENH;Lo;0;L;;;;;N;;;;;
+BA23;HANGUL SYLLABLE MYAED;Lo;0;L;;;;;N;;;;;
+BA24;HANGUL SYLLABLE MYAEL;Lo;0;L;;;;;N;;;;;
+BA25;HANGUL SYLLABLE MYAELG;Lo;0;L;;;;;N;;;;;
+BA26;HANGUL SYLLABLE MYAELM;Lo;0;L;;;;;N;;;;;
+BA27;HANGUL SYLLABLE MYAELB;Lo;0;L;;;;;N;;;;;
+BA28;HANGUL SYLLABLE MYAELS;Lo;0;L;;;;;N;;;;;
+BA29;HANGUL SYLLABLE MYAELT;Lo;0;L;;;;;N;;;;;
+BA2A;HANGUL SYLLABLE MYAELP;Lo;0;L;;;;;N;;;;;
+BA2B;HANGUL SYLLABLE MYAELH;Lo;0;L;;;;;N;;;;;
+BA2C;HANGUL SYLLABLE MYAEM;Lo;0;L;;;;;N;;;;;
+BA2D;HANGUL SYLLABLE MYAEB;Lo;0;L;;;;;N;;;;;
+BA2E;HANGUL SYLLABLE MYAEBS;Lo;0;L;;;;;N;;;;;
+BA2F;HANGUL SYLLABLE MYAES;Lo;0;L;;;;;N;;;;;
+BA30;HANGUL SYLLABLE MYAESS;Lo;0;L;;;;;N;;;;;
+BA31;HANGUL SYLLABLE MYAENG;Lo;0;L;;;;;N;;;;;
+BA32;HANGUL SYLLABLE MYAEJ;Lo;0;L;;;;;N;;;;;
+BA33;HANGUL SYLLABLE MYAEC;Lo;0;L;;;;;N;;;;;
+BA34;HANGUL SYLLABLE MYAEK;Lo;0;L;;;;;N;;;;;
+BA35;HANGUL SYLLABLE MYAET;Lo;0;L;;;;;N;;;;;
+BA36;HANGUL SYLLABLE MYAEP;Lo;0;L;;;;;N;;;;;
+BA37;HANGUL SYLLABLE MYAEH;Lo;0;L;;;;;N;;;;;
+BA38;HANGUL SYLLABLE MEO;Lo;0;L;;;;;N;;;;;
+BA39;HANGUL SYLLABLE MEOG;Lo;0;L;;;;;N;;;;;
+BA3A;HANGUL SYLLABLE MEOGG;Lo;0;L;;;;;N;;;;;
+BA3B;HANGUL SYLLABLE MEOGS;Lo;0;L;;;;;N;;;;;
+BA3C;HANGUL SYLLABLE MEON;Lo;0;L;;;;;N;;;;;
+BA3D;HANGUL SYLLABLE MEONI;Lo;0;L;;;;;N;;;;;
+BA3E;HANGUL SYLLABLE MEONH;Lo;0;L;;;;;N;;;;;
+BA3F;HANGUL SYLLABLE MEOD;Lo;0;L;;;;;N;;;;;
+BA40;HANGUL SYLLABLE MEOL;Lo;0;L;;;;;N;;;;;
+BA41;HANGUL SYLLABLE MEOLG;Lo;0;L;;;;;N;;;;;
+BA42;HANGUL SYLLABLE MEOLM;Lo;0;L;;;;;N;;;;;
+BA43;HANGUL SYLLABLE MEOLB;Lo;0;L;;;;;N;;;;;
+BA44;HANGUL SYLLABLE MEOLS;Lo;0;L;;;;;N;;;;;
+BA45;HANGUL SYLLABLE MEOLT;Lo;0;L;;;;;N;;;;;
+BA46;HANGUL SYLLABLE MEOLP;Lo;0;L;;;;;N;;;;;
+BA47;HANGUL SYLLABLE MEOLH;Lo;0;L;;;;;N;;;;;
+BA48;HANGUL SYLLABLE MEOM;Lo;0;L;;;;;N;;;;;
+BA49;HANGUL SYLLABLE MEOB;Lo;0;L;;;;;N;;;;;
+BA4A;HANGUL SYLLABLE MEOBS;Lo;0;L;;;;;N;;;;;
+BA4B;HANGUL SYLLABLE MEOS;Lo;0;L;;;;;N;;;;;
+BA4C;HANGUL SYLLABLE MEOSS;Lo;0;L;;;;;N;;;;;
+BA4D;HANGUL SYLLABLE MEONG;Lo;0;L;;;;;N;;;;;
+BA4E;HANGUL SYLLABLE MEOJ;Lo;0;L;;;;;N;;;;;
+BA4F;HANGUL SYLLABLE MEOC;Lo;0;L;;;;;N;;;;;
+BA50;HANGUL SYLLABLE MEOK;Lo;0;L;;;;;N;;;;;
+BA51;HANGUL SYLLABLE MEOT;Lo;0;L;;;;;N;;;;;
+BA52;HANGUL SYLLABLE MEOP;Lo;0;L;;;;;N;;;;;
+BA53;HANGUL SYLLABLE MEOH;Lo;0;L;;;;;N;;;;;
+BA54;HANGUL SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+BA55;HANGUL SYLLABLE MEG;Lo;0;L;;;;;N;;;;;
+BA56;HANGUL SYLLABLE MEGG;Lo;0;L;;;;;N;;;;;
+BA57;HANGUL SYLLABLE MEGS;Lo;0;L;;;;;N;;;;;
+BA58;HANGUL SYLLABLE MEN;Lo;0;L;;;;;N;;;;;
+BA59;HANGUL SYLLABLE MENI;Lo;0;L;;;;;N;;;;;
+BA5A;HANGUL SYLLABLE MENH;Lo;0;L;;;;;N;;;;;
+BA5B;HANGUL SYLLABLE MED;Lo;0;L;;;;;N;;;;;
+BA5C;HANGUL SYLLABLE MEL;Lo;0;L;;;;;N;;;;;
+BA5D;HANGUL SYLLABLE MELG;Lo;0;L;;;;;N;;;;;
+BA5E;HANGUL SYLLABLE MELM;Lo;0;L;;;;;N;;;;;
+BA5F;HANGUL SYLLABLE MELB;Lo;0;L;;;;;N;;;;;
+BA60;HANGUL SYLLABLE MELS;Lo;0;L;;;;;N;;;;;
+BA61;HANGUL SYLLABLE MELT;Lo;0;L;;;;;N;;;;;
+BA62;HANGUL SYLLABLE MELP;Lo;0;L;;;;;N;;;;;
+BA63;HANGUL SYLLABLE MELH;Lo;0;L;;;;;N;;;;;
+BA64;HANGUL SYLLABLE MEM;Lo;0;L;;;;;N;;;;;
+BA65;HANGUL SYLLABLE MEB;Lo;0;L;;;;;N;;;;;
+BA66;HANGUL SYLLABLE MEBS;Lo;0;L;;;;;N;;;;;
+BA67;HANGUL SYLLABLE MES;Lo;0;L;;;;;N;;;;;
+BA68;HANGUL SYLLABLE MESS;Lo;0;L;;;;;N;;;;;
+BA69;HANGUL SYLLABLE MENG;Lo;0;L;;;;;N;;;;;
+BA6A;HANGUL SYLLABLE MEJ;Lo;0;L;;;;;N;;;;;
+BA6B;HANGUL SYLLABLE MEC;Lo;0;L;;;;;N;;;;;
+BA6C;HANGUL SYLLABLE MEK;Lo;0;L;;;;;N;;;;;
+BA6D;HANGUL SYLLABLE MET;Lo;0;L;;;;;N;;;;;
+BA6E;HANGUL SYLLABLE MEP;Lo;0;L;;;;;N;;;;;
+BA6F;HANGUL SYLLABLE MEH;Lo;0;L;;;;;N;;;;;
+BA70;HANGUL SYLLABLE MYEO;Lo;0;L;;;;;N;;;;;
+BA71;HANGUL SYLLABLE MYEOG;Lo;0;L;;;;;N;;;;;
+BA72;HANGUL SYLLABLE MYEOGG;Lo;0;L;;;;;N;;;;;
+BA73;HANGUL SYLLABLE MYEOGS;Lo;0;L;;;;;N;;;;;
+BA74;HANGUL SYLLABLE MYEON;Lo;0;L;;;;;N;;;;;
+BA75;HANGUL SYLLABLE MYEONI;Lo;0;L;;;;;N;;;;;
+BA76;HANGUL SYLLABLE MYEONH;Lo;0;L;;;;;N;;;;;
+BA77;HANGUL SYLLABLE MYEOD;Lo;0;L;;;;;N;;;;;
+BA78;HANGUL SYLLABLE MYEOL;Lo;0;L;;;;;N;;;;;
+BA79;HANGUL SYLLABLE MYEOLG;Lo;0;L;;;;;N;;;;;
+BA7A;HANGUL SYLLABLE MYEOLM;Lo;0;L;;;;;N;;;;;
+BA7B;HANGUL SYLLABLE MYEOLB;Lo;0;L;;;;;N;;;;;
+BA7C;HANGUL SYLLABLE MYEOLS;Lo;0;L;;;;;N;;;;;
+BA7D;HANGUL SYLLABLE MYEOLT;Lo;0;L;;;;;N;;;;;
+BA7E;HANGUL SYLLABLE MYEOLP;Lo;0;L;;;;;N;;;;;
+BA7F;HANGUL SYLLABLE MYEOLH;Lo;0;L;;;;;N;;;;;
+BA80;HANGUL SYLLABLE MYEOM;Lo;0;L;;;;;N;;;;;
+BA81;HANGUL SYLLABLE MYEOB;Lo;0;L;;;;;N;;;;;
+BA82;HANGUL SYLLABLE MYEOBS;Lo;0;L;;;;;N;;;;;
+BA83;HANGUL SYLLABLE MYEOS;Lo;0;L;;;;;N;;;;;
+BA84;HANGUL SYLLABLE MYEOSS;Lo;0;L;;;;;N;;;;;
+BA85;HANGUL SYLLABLE MYEONG;Lo;0;L;;;;;N;;;;;
+BA86;HANGUL SYLLABLE MYEOJ;Lo;0;L;;;;;N;;;;;
+BA87;HANGUL SYLLABLE MYEOC;Lo;0;L;;;;;N;;;;;
+BA88;HANGUL SYLLABLE MYEOK;Lo;0;L;;;;;N;;;;;
+BA89;HANGUL SYLLABLE MYEOT;Lo;0;L;;;;;N;;;;;
+BA8A;HANGUL SYLLABLE MYEOP;Lo;0;L;;;;;N;;;;;
+BA8B;HANGUL SYLLABLE MYEOH;Lo;0;L;;;;;N;;;;;
+BA8C;HANGUL SYLLABLE MYE;Lo;0;L;;;;;N;;;;;
+BA8D;HANGUL SYLLABLE MYEG;Lo;0;L;;;;;N;;;;;
+BA8E;HANGUL SYLLABLE MYEGG;Lo;0;L;;;;;N;;;;;
+BA8F;HANGUL SYLLABLE MYEGS;Lo;0;L;;;;;N;;;;;
+BA90;HANGUL SYLLABLE MYEN;Lo;0;L;;;;;N;;;;;
+BA91;HANGUL SYLLABLE MYENI;Lo;0;L;;;;;N;;;;;
+BA92;HANGUL SYLLABLE MYENH;Lo;0;L;;;;;N;;;;;
+BA93;HANGUL SYLLABLE MYED;Lo;0;L;;;;;N;;;;;
+BA94;HANGUL SYLLABLE MYEL;Lo;0;L;;;;;N;;;;;
+BA95;HANGUL SYLLABLE MYELG;Lo;0;L;;;;;N;;;;;
+BA96;HANGUL SYLLABLE MYELM;Lo;0;L;;;;;N;;;;;
+BA97;HANGUL SYLLABLE MYELB;Lo;0;L;;;;;N;;;;;
+BA98;HANGUL SYLLABLE MYELS;Lo;0;L;;;;;N;;;;;
+BA99;HANGUL SYLLABLE MYELT;Lo;0;L;;;;;N;;;;;
+BA9A;HANGUL SYLLABLE MYELP;Lo;0;L;;;;;N;;;;;
+BA9B;HANGUL SYLLABLE MYELH;Lo;0;L;;;;;N;;;;;
+BA9C;HANGUL SYLLABLE MYEM;Lo;0;L;;;;;N;;;;;
+BA9D;HANGUL SYLLABLE MYEB;Lo;0;L;;;;;N;;;;;
+BA9E;HANGUL SYLLABLE MYEBS;Lo;0;L;;;;;N;;;;;
+BA9F;HANGUL SYLLABLE MYES;Lo;0;L;;;;;N;;;;;
+BAA0;HANGUL SYLLABLE MYESS;Lo;0;L;;;;;N;;;;;
+BAA1;HANGUL SYLLABLE MYENG;Lo;0;L;;;;;N;;;;;
+BAA2;HANGUL SYLLABLE MYEJ;Lo;0;L;;;;;N;;;;;
+BAA3;HANGUL SYLLABLE MYEC;Lo;0;L;;;;;N;;;;;
+BAA4;HANGUL SYLLABLE MYEK;Lo;0;L;;;;;N;;;;;
+BAA5;HANGUL SYLLABLE MYET;Lo;0;L;;;;;N;;;;;
+BAA6;HANGUL SYLLABLE MYEP;Lo;0;L;;;;;N;;;;;
+BAA7;HANGUL SYLLABLE MYEH;Lo;0;L;;;;;N;;;;;
+BAA8;HANGUL SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+BAA9;HANGUL SYLLABLE MOG;Lo;0;L;;;;;N;;;;;
+BAAA;HANGUL SYLLABLE MOGG;Lo;0;L;;;;;N;;;;;
+BAAB;HANGUL SYLLABLE MOGS;Lo;0;L;;;;;N;;;;;
+BAAC;HANGUL SYLLABLE MON;Lo;0;L;;;;;N;;;;;
+BAAD;HANGUL SYLLABLE MONI;Lo;0;L;;;;;N;;;;;
+BAAE;HANGUL SYLLABLE MONH;Lo;0;L;;;;;N;;;;;
+BAAF;HANGUL SYLLABLE MOD;Lo;0;L;;;;;N;;;;;
+BAB0;HANGUL SYLLABLE MOL;Lo;0;L;;;;;N;;;;;
+BAB1;HANGUL SYLLABLE MOLG;Lo;0;L;;;;;N;;;;;
+BAB2;HANGUL SYLLABLE MOLM;Lo;0;L;;;;;N;;;;;
+BAB3;HANGUL SYLLABLE MOLB;Lo;0;L;;;;;N;;;;;
+BAB4;HANGUL SYLLABLE MOLS;Lo;0;L;;;;;N;;;;;
+BAB5;HANGUL SYLLABLE MOLT;Lo;0;L;;;;;N;;;;;
+BAB6;HANGUL SYLLABLE MOLP;Lo;0;L;;;;;N;;;;;
+BAB7;HANGUL SYLLABLE MOLH;Lo;0;L;;;;;N;;;;;
+BAB8;HANGUL SYLLABLE MOM;Lo;0;L;;;;;N;;;;;
+BAB9;HANGUL SYLLABLE MOB;Lo;0;L;;;;;N;;;;;
+BABA;HANGUL SYLLABLE MOBS;Lo;0;L;;;;;N;;;;;
+BABB;HANGUL SYLLABLE MOS;Lo;0;L;;;;;N;;;;;
+BABC;HANGUL SYLLABLE MOSS;Lo;0;L;;;;;N;;;;;
+BABD;HANGUL SYLLABLE MONG;Lo;0;L;;;;;N;;;;;
+BABE;HANGUL SYLLABLE MOJ;Lo;0;L;;;;;N;;;;;
+BABF;HANGUL SYLLABLE MOC;Lo;0;L;;;;;N;;;;;
+BAC0;HANGUL SYLLABLE MOK;Lo;0;L;;;;;N;;;;;
+BAC1;HANGUL SYLLABLE MOT;Lo;0;L;;;;;N;;;;;
+BAC2;HANGUL SYLLABLE MOP;Lo;0;L;;;;;N;;;;;
+BAC3;HANGUL SYLLABLE MOH;Lo;0;L;;;;;N;;;;;
+BAC4;HANGUL SYLLABLE MWA;Lo;0;L;;;;;N;;;;;
+BAC5;HANGUL SYLLABLE MWAG;Lo;0;L;;;;;N;;;;;
+BAC6;HANGUL SYLLABLE MWAGG;Lo;0;L;;;;;N;;;;;
+BAC7;HANGUL SYLLABLE MWAGS;Lo;0;L;;;;;N;;;;;
+BAC8;HANGUL SYLLABLE MWAN;Lo;0;L;;;;;N;;;;;
+BAC9;HANGUL SYLLABLE MWANI;Lo;0;L;;;;;N;;;;;
+BACA;HANGUL SYLLABLE MWANH;Lo;0;L;;;;;N;;;;;
+BACB;HANGUL SYLLABLE MWAD;Lo;0;L;;;;;N;;;;;
+BACC;HANGUL SYLLABLE MWAL;Lo;0;L;;;;;N;;;;;
+BACD;HANGUL SYLLABLE MWALG;Lo;0;L;;;;;N;;;;;
+BACE;HANGUL SYLLABLE MWALM;Lo;0;L;;;;;N;;;;;
+BACF;HANGUL SYLLABLE MWALB;Lo;0;L;;;;;N;;;;;
+BAD0;HANGUL SYLLABLE MWALS;Lo;0;L;;;;;N;;;;;
+BAD1;HANGUL SYLLABLE MWALT;Lo;0;L;;;;;N;;;;;
+BAD2;HANGUL SYLLABLE MWALP;Lo;0;L;;;;;N;;;;;
+BAD3;HANGUL SYLLABLE MWALH;Lo;0;L;;;;;N;;;;;
+BAD4;HANGUL SYLLABLE MWAM;Lo;0;L;;;;;N;;;;;
+BAD5;HANGUL SYLLABLE MWAB;Lo;0;L;;;;;N;;;;;
+BAD6;HANGUL SYLLABLE MWABS;Lo;0;L;;;;;N;;;;;
+BAD7;HANGUL SYLLABLE MWAS;Lo;0;L;;;;;N;;;;;
+BAD8;HANGUL SYLLABLE MWASS;Lo;0;L;;;;;N;;;;;
+BAD9;HANGUL SYLLABLE MWANG;Lo;0;L;;;;;N;;;;;
+BADA;HANGUL SYLLABLE MWAJ;Lo;0;L;;;;;N;;;;;
+BADB;HANGUL SYLLABLE MWAC;Lo;0;L;;;;;N;;;;;
+BADC;HANGUL SYLLABLE MWAK;Lo;0;L;;;;;N;;;;;
+BADD;HANGUL SYLLABLE MWAT;Lo;0;L;;;;;N;;;;;
+BADE;HANGUL SYLLABLE MWAP;Lo;0;L;;;;;N;;;;;
+BADF;HANGUL SYLLABLE MWAH;Lo;0;L;;;;;N;;;;;
+BAE0;HANGUL SYLLABLE MWAE;Lo;0;L;;;;;N;;;;;
+BAE1;HANGUL SYLLABLE MWAEG;Lo;0;L;;;;;N;;;;;
+BAE2;HANGUL SYLLABLE MWAEGG;Lo;0;L;;;;;N;;;;;
+BAE3;HANGUL SYLLABLE MWAEGS;Lo;0;L;;;;;N;;;;;
+BAE4;HANGUL SYLLABLE MWAEN;Lo;0;L;;;;;N;;;;;
+BAE5;HANGUL SYLLABLE MWAENI;Lo;0;L;;;;;N;;;;;
+BAE6;HANGUL SYLLABLE MWAENH;Lo;0;L;;;;;N;;;;;
+BAE7;HANGUL SYLLABLE MWAED;Lo;0;L;;;;;N;;;;;
+BAE8;HANGUL SYLLABLE MWAEL;Lo;0;L;;;;;N;;;;;
+BAE9;HANGUL SYLLABLE MWAELG;Lo;0;L;;;;;N;;;;;
+BAEA;HANGUL SYLLABLE MWAELM;Lo;0;L;;;;;N;;;;;
+BAEB;HANGUL SYLLABLE MWAELB;Lo;0;L;;;;;N;;;;;
+BAEC;HANGUL SYLLABLE MWAELS;Lo;0;L;;;;;N;;;;;
+BAED;HANGUL SYLLABLE MWAELT;Lo;0;L;;;;;N;;;;;
+BAEE;HANGUL SYLLABLE MWAELP;Lo;0;L;;;;;N;;;;;
+BAEF;HANGUL SYLLABLE MWAELH;Lo;0;L;;;;;N;;;;;
+BAF0;HANGUL SYLLABLE MWAEM;Lo;0;L;;;;;N;;;;;
+BAF1;HANGUL SYLLABLE MWAEB;Lo;0;L;;;;;N;;;;;
+BAF2;HANGUL SYLLABLE MWAEBS;Lo;0;L;;;;;N;;;;;
+BAF3;HANGUL SYLLABLE MWAES;Lo;0;L;;;;;N;;;;;
+BAF4;HANGUL SYLLABLE MWAESS;Lo;0;L;;;;;N;;;;;
+BAF5;HANGUL SYLLABLE MWAENG;Lo;0;L;;;;;N;;;;;
+BAF6;HANGUL SYLLABLE MWAEJ;Lo;0;L;;;;;N;;;;;
+BAF7;HANGUL SYLLABLE MWAEC;Lo;0;L;;;;;N;;;;;
+BAF8;HANGUL SYLLABLE MWAEK;Lo;0;L;;;;;N;;;;;
+BAF9;HANGUL SYLLABLE MWAET;Lo;0;L;;;;;N;;;;;
+BAFA;HANGUL SYLLABLE MWAEP;Lo;0;L;;;;;N;;;;;
+BAFB;HANGUL SYLLABLE MWAEH;Lo;0;L;;;;;N;;;;;
+BAFC;HANGUL SYLLABLE MOE;Lo;0;L;;;;;N;;;;;
+BAFD;HANGUL SYLLABLE MOEG;Lo;0;L;;;;;N;;;;;
+BAFE;HANGUL SYLLABLE MOEGG;Lo;0;L;;;;;N;;;;;
+BAFF;HANGUL SYLLABLE MOEGS;Lo;0;L;;;;;N;;;;;
+BB00;HANGUL SYLLABLE MOEN;Lo;0;L;;;;;N;;;;;
+BB01;HANGUL SYLLABLE MOENI;Lo;0;L;;;;;N;;;;;
+BB02;HANGUL SYLLABLE MOENH;Lo;0;L;;;;;N;;;;;
+BB03;HANGUL SYLLABLE MOED;Lo;0;L;;;;;N;;;;;
+BB04;HANGUL SYLLABLE MOEL;Lo;0;L;;;;;N;;;;;
+BB05;HANGUL SYLLABLE MOELG;Lo;0;L;;;;;N;;;;;
+BB06;HANGUL SYLLABLE MOELM;Lo;0;L;;;;;N;;;;;
+BB07;HANGUL SYLLABLE MOELB;Lo;0;L;;;;;N;;;;;
+BB08;HANGUL SYLLABLE MOELS;Lo;0;L;;;;;N;;;;;
+BB09;HANGUL SYLLABLE MOELT;Lo;0;L;;;;;N;;;;;
+BB0A;HANGUL SYLLABLE MOELP;Lo;0;L;;;;;N;;;;;
+BB0B;HANGUL SYLLABLE MOELH;Lo;0;L;;;;;N;;;;;
+BB0C;HANGUL SYLLABLE MOEM;Lo;0;L;;;;;N;;;;;
+BB0D;HANGUL SYLLABLE MOEB;Lo;0;L;;;;;N;;;;;
+BB0E;HANGUL SYLLABLE MOEBS;Lo;0;L;;;;;N;;;;;
+BB0F;HANGUL SYLLABLE MOES;Lo;0;L;;;;;N;;;;;
+BB10;HANGUL SYLLABLE MOESS;Lo;0;L;;;;;N;;;;;
+BB11;HANGUL SYLLABLE MOENG;Lo;0;L;;;;;N;;;;;
+BB12;HANGUL SYLLABLE MOEJ;Lo;0;L;;;;;N;;;;;
+BB13;HANGUL SYLLABLE MOEC;Lo;0;L;;;;;N;;;;;
+BB14;HANGUL SYLLABLE MOEK;Lo;0;L;;;;;N;;;;;
+BB15;HANGUL SYLLABLE MOET;Lo;0;L;;;;;N;;;;;
+BB16;HANGUL SYLLABLE MOEP;Lo;0;L;;;;;N;;;;;
+BB17;HANGUL SYLLABLE MOEH;Lo;0;L;;;;;N;;;;;
+BB18;HANGUL SYLLABLE MYO;Lo;0;L;;;;;N;;;;;
+BB19;HANGUL SYLLABLE MYOG;Lo;0;L;;;;;N;;;;;
+BB1A;HANGUL SYLLABLE MYOGG;Lo;0;L;;;;;N;;;;;
+BB1B;HANGUL SYLLABLE MYOGS;Lo;0;L;;;;;N;;;;;
+BB1C;HANGUL SYLLABLE MYON;Lo;0;L;;;;;N;;;;;
+BB1D;HANGUL SYLLABLE MYONI;Lo;0;L;;;;;N;;;;;
+BB1E;HANGUL SYLLABLE MYONH;Lo;0;L;;;;;N;;;;;
+BB1F;HANGUL SYLLABLE MYOD;Lo;0;L;;;;;N;;;;;
+BB20;HANGUL SYLLABLE MYOL;Lo;0;L;;;;;N;;;;;
+BB21;HANGUL SYLLABLE MYOLG;Lo;0;L;;;;;N;;;;;
+BB22;HANGUL SYLLABLE MYOLM;Lo;0;L;;;;;N;;;;;
+BB23;HANGUL SYLLABLE MYOLB;Lo;0;L;;;;;N;;;;;
+BB24;HANGUL SYLLABLE MYOLS;Lo;0;L;;;;;N;;;;;
+BB25;HANGUL SYLLABLE MYOLT;Lo;0;L;;;;;N;;;;;
+BB26;HANGUL SYLLABLE MYOLP;Lo;0;L;;;;;N;;;;;
+BB27;HANGUL SYLLABLE MYOLH;Lo;0;L;;;;;N;;;;;
+BB28;HANGUL SYLLABLE MYOM;Lo;0;L;;;;;N;;;;;
+BB29;HANGUL SYLLABLE MYOB;Lo;0;L;;;;;N;;;;;
+BB2A;HANGUL SYLLABLE MYOBS;Lo;0;L;;;;;N;;;;;
+BB2B;HANGUL SYLLABLE MYOS;Lo;0;L;;;;;N;;;;;
+BB2C;HANGUL SYLLABLE MYOSS;Lo;0;L;;;;;N;;;;;
+BB2D;HANGUL SYLLABLE MYONG;Lo;0;L;;;;;N;;;;;
+BB2E;HANGUL SYLLABLE MYOJ;Lo;0;L;;;;;N;;;;;
+BB2F;HANGUL SYLLABLE MYOC;Lo;0;L;;;;;N;;;;;
+BB30;HANGUL SYLLABLE MYOK;Lo;0;L;;;;;N;;;;;
+BB31;HANGUL SYLLABLE MYOT;Lo;0;L;;;;;N;;;;;
+BB32;HANGUL SYLLABLE MYOP;Lo;0;L;;;;;N;;;;;
+BB33;HANGUL SYLLABLE MYOH;Lo;0;L;;;;;N;;;;;
+BB34;HANGUL SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+BB35;HANGUL SYLLABLE MUG;Lo;0;L;;;;;N;;;;;
+BB36;HANGUL SYLLABLE MUGG;Lo;0;L;;;;;N;;;;;
+BB37;HANGUL SYLLABLE MUGS;Lo;0;L;;;;;N;;;;;
+BB38;HANGUL SYLLABLE MUN;Lo;0;L;;;;;N;;;;;
+BB39;HANGUL SYLLABLE MUNI;Lo;0;L;;;;;N;;;;;
+BB3A;HANGUL SYLLABLE MUNH;Lo;0;L;;;;;N;;;;;
+BB3B;HANGUL SYLLABLE MUD;Lo;0;L;;;;;N;;;;;
+BB3C;HANGUL SYLLABLE MUL;Lo;0;L;;;;;N;;;;;
+BB3D;HANGUL SYLLABLE MULG;Lo;0;L;;;;;N;;;;;
+BB3E;HANGUL SYLLABLE MULM;Lo;0;L;;;;;N;;;;;
+BB3F;HANGUL SYLLABLE MULB;Lo;0;L;;;;;N;;;;;
+BB40;HANGUL SYLLABLE MULS;Lo;0;L;;;;;N;;;;;
+BB41;HANGUL SYLLABLE MULT;Lo;0;L;;;;;N;;;;;
+BB42;HANGUL SYLLABLE MULP;Lo;0;L;;;;;N;;;;;
+BB43;HANGUL SYLLABLE MULH;Lo;0;L;;;;;N;;;;;
+BB44;HANGUL SYLLABLE MUM;Lo;0;L;;;;;N;;;;;
+BB45;HANGUL SYLLABLE MUB;Lo;0;L;;;;;N;;;;;
+BB46;HANGUL SYLLABLE MUBS;Lo;0;L;;;;;N;;;;;
+BB47;HANGUL SYLLABLE MUS;Lo;0;L;;;;;N;;;;;
+BB48;HANGUL SYLLABLE MUSS;Lo;0;L;;;;;N;;;;;
+BB49;HANGUL SYLLABLE MUNG;Lo;0;L;;;;;N;;;;;
+BB4A;HANGUL SYLLABLE MUJ;Lo;0;L;;;;;N;;;;;
+BB4B;HANGUL SYLLABLE MUC;Lo;0;L;;;;;N;;;;;
+BB4C;HANGUL SYLLABLE MUK;Lo;0;L;;;;;N;;;;;
+BB4D;HANGUL SYLLABLE MUT;Lo;0;L;;;;;N;;;;;
+BB4E;HANGUL SYLLABLE MUP;Lo;0;L;;;;;N;;;;;
+BB4F;HANGUL SYLLABLE MUH;Lo;0;L;;;;;N;;;;;
+BB50;HANGUL SYLLABLE MWEO;Lo;0;L;;;;;N;;;;;
+BB51;HANGUL SYLLABLE MWEOG;Lo;0;L;;;;;N;;;;;
+BB52;HANGUL SYLLABLE MWEOGG;Lo;0;L;;;;;N;;;;;
+BB53;HANGUL SYLLABLE MWEOGS;Lo;0;L;;;;;N;;;;;
+BB54;HANGUL SYLLABLE MWEON;Lo;0;L;;;;;N;;;;;
+BB55;HANGUL SYLLABLE MWEONI;Lo;0;L;;;;;N;;;;;
+BB56;HANGUL SYLLABLE MWEONH;Lo;0;L;;;;;N;;;;;
+BB57;HANGUL SYLLABLE MWEOD;Lo;0;L;;;;;N;;;;;
+BB58;HANGUL SYLLABLE MWEOL;Lo;0;L;;;;;N;;;;;
+BB59;HANGUL SYLLABLE MWEOLG;Lo;0;L;;;;;N;;;;;
+BB5A;HANGUL SYLLABLE MWEOLM;Lo;0;L;;;;;N;;;;;
+BB5B;HANGUL SYLLABLE MWEOLB;Lo;0;L;;;;;N;;;;;
+BB5C;HANGUL SYLLABLE MWEOLS;Lo;0;L;;;;;N;;;;;
+BB5D;HANGUL SYLLABLE MWEOLT;Lo;0;L;;;;;N;;;;;
+BB5E;HANGUL SYLLABLE MWEOLP;Lo;0;L;;;;;N;;;;;
+BB5F;HANGUL SYLLABLE MWEOLH;Lo;0;L;;;;;N;;;;;
+BB60;HANGUL SYLLABLE MWEOM;Lo;0;L;;;;;N;;;;;
+BB61;HANGUL SYLLABLE MWEOB;Lo;0;L;;;;;N;;;;;
+BB62;HANGUL SYLLABLE MWEOBS;Lo;0;L;;;;;N;;;;;
+BB63;HANGUL SYLLABLE MWEOS;Lo;0;L;;;;;N;;;;;
+BB64;HANGUL SYLLABLE MWEOSS;Lo;0;L;;;;;N;;;;;
+BB65;HANGUL SYLLABLE MWEONG;Lo;0;L;;;;;N;;;;;
+BB66;HANGUL SYLLABLE MWEOJ;Lo;0;L;;;;;N;;;;;
+BB67;HANGUL SYLLABLE MWEOC;Lo;0;L;;;;;N;;;;;
+BB68;HANGUL SYLLABLE MWEOK;Lo;0;L;;;;;N;;;;;
+BB69;HANGUL SYLLABLE MWEOT;Lo;0;L;;;;;N;;;;;
+BB6A;HANGUL SYLLABLE MWEOP;Lo;0;L;;;;;N;;;;;
+BB6B;HANGUL SYLLABLE MWEOH;Lo;0;L;;;;;N;;;;;
+BB6C;HANGUL SYLLABLE MWE;Lo;0;L;;;;;N;;;;;
+BB6D;HANGUL SYLLABLE MWEG;Lo;0;L;;;;;N;;;;;
+BB6E;HANGUL SYLLABLE MWEGG;Lo;0;L;;;;;N;;;;;
+BB6F;HANGUL SYLLABLE MWEGS;Lo;0;L;;;;;N;;;;;
+BB70;HANGUL SYLLABLE MWEN;Lo;0;L;;;;;N;;;;;
+BB71;HANGUL SYLLABLE MWENI;Lo;0;L;;;;;N;;;;;
+BB72;HANGUL SYLLABLE MWENH;Lo;0;L;;;;;N;;;;;
+BB73;HANGUL SYLLABLE MWED;Lo;0;L;;;;;N;;;;;
+BB74;HANGUL SYLLABLE MWEL;Lo;0;L;;;;;N;;;;;
+BB75;HANGUL SYLLABLE MWELG;Lo;0;L;;;;;N;;;;;
+BB76;HANGUL SYLLABLE MWELM;Lo;0;L;;;;;N;;;;;
+BB77;HANGUL SYLLABLE MWELB;Lo;0;L;;;;;N;;;;;
+BB78;HANGUL SYLLABLE MWELS;Lo;0;L;;;;;N;;;;;
+BB79;HANGUL SYLLABLE MWELT;Lo;0;L;;;;;N;;;;;
+BB7A;HANGUL SYLLABLE MWELP;Lo;0;L;;;;;N;;;;;
+BB7B;HANGUL SYLLABLE MWELH;Lo;0;L;;;;;N;;;;;
+BB7C;HANGUL SYLLABLE MWEM;Lo;0;L;;;;;N;;;;;
+BB7D;HANGUL SYLLABLE MWEB;Lo;0;L;;;;;N;;;;;
+BB7E;HANGUL SYLLABLE MWEBS;Lo;0;L;;;;;N;;;;;
+BB7F;HANGUL SYLLABLE MWES;Lo;0;L;;;;;N;;;;;
+BB80;HANGUL SYLLABLE MWESS;Lo;0;L;;;;;N;;;;;
+BB81;HANGUL SYLLABLE MWENG;Lo;0;L;;;;;N;;;;;
+BB82;HANGUL SYLLABLE MWEJ;Lo;0;L;;;;;N;;;;;
+BB83;HANGUL SYLLABLE MWEC;Lo;0;L;;;;;N;;;;;
+BB84;HANGUL SYLLABLE MWEK;Lo;0;L;;;;;N;;;;;
+BB85;HANGUL SYLLABLE MWET;Lo;0;L;;;;;N;;;;;
+BB86;HANGUL SYLLABLE MWEP;Lo;0;L;;;;;N;;;;;
+BB87;HANGUL SYLLABLE MWEH;Lo;0;L;;;;;N;;;;;
+BB88;HANGUL SYLLABLE MWI;Lo;0;L;;;;;N;;;;;
+BB89;HANGUL SYLLABLE MWIG;Lo;0;L;;;;;N;;;;;
+BB8A;HANGUL SYLLABLE MWIGG;Lo;0;L;;;;;N;;;;;
+BB8B;HANGUL SYLLABLE MWIGS;Lo;0;L;;;;;N;;;;;
+BB8C;HANGUL SYLLABLE MWIN;Lo;0;L;;;;;N;;;;;
+BB8D;HANGUL SYLLABLE MWINI;Lo;0;L;;;;;N;;;;;
+BB8E;HANGUL SYLLABLE MWINH;Lo;0;L;;;;;N;;;;;
+BB8F;HANGUL SYLLABLE MWID;Lo;0;L;;;;;N;;;;;
+BB90;HANGUL SYLLABLE MWIL;Lo;0;L;;;;;N;;;;;
+BB91;HANGUL SYLLABLE MWILG;Lo;0;L;;;;;N;;;;;
+BB92;HANGUL SYLLABLE MWILM;Lo;0;L;;;;;N;;;;;
+BB93;HANGUL SYLLABLE MWILB;Lo;0;L;;;;;N;;;;;
+BB94;HANGUL SYLLABLE MWILS;Lo;0;L;;;;;N;;;;;
+BB95;HANGUL SYLLABLE MWILT;Lo;0;L;;;;;N;;;;;
+BB96;HANGUL SYLLABLE MWILP;Lo;0;L;;;;;N;;;;;
+BB97;HANGUL SYLLABLE MWILH;Lo;0;L;;;;;N;;;;;
+BB98;HANGUL SYLLABLE MWIM;Lo;0;L;;;;;N;;;;;
+BB99;HANGUL SYLLABLE MWIB;Lo;0;L;;;;;N;;;;;
+BB9A;HANGUL SYLLABLE MWIBS;Lo;0;L;;;;;N;;;;;
+BB9B;HANGUL SYLLABLE MWIS;Lo;0;L;;;;;N;;;;;
+BB9C;HANGUL SYLLABLE MWISS;Lo;0;L;;;;;N;;;;;
+BB9D;HANGUL SYLLABLE MWING;Lo;0;L;;;;;N;;;;;
+BB9E;HANGUL SYLLABLE MWIJ;Lo;0;L;;;;;N;;;;;
+BB9F;HANGUL SYLLABLE MWIC;Lo;0;L;;;;;N;;;;;
+BBA0;HANGUL SYLLABLE MWIK;Lo;0;L;;;;;N;;;;;
+BBA1;HANGUL SYLLABLE MWIT;Lo;0;L;;;;;N;;;;;
+BBA2;HANGUL SYLLABLE MWIP;Lo;0;L;;;;;N;;;;;
+BBA3;HANGUL SYLLABLE MWIH;Lo;0;L;;;;;N;;;;;
+BBA4;HANGUL SYLLABLE MYU;Lo;0;L;;;;;N;;;;;
+BBA5;HANGUL SYLLABLE MYUG;Lo;0;L;;;;;N;;;;;
+BBA6;HANGUL SYLLABLE MYUGG;Lo;0;L;;;;;N;;;;;
+BBA7;HANGUL SYLLABLE MYUGS;Lo;0;L;;;;;N;;;;;
+BBA8;HANGUL SYLLABLE MYUN;Lo;0;L;;;;;N;;;;;
+BBA9;HANGUL SYLLABLE MYUNI;Lo;0;L;;;;;N;;;;;
+BBAA;HANGUL SYLLABLE MYUNH;Lo;0;L;;;;;N;;;;;
+BBAB;HANGUL SYLLABLE MYUD;Lo;0;L;;;;;N;;;;;
+BBAC;HANGUL SYLLABLE MYUL;Lo;0;L;;;;;N;;;;;
+BBAD;HANGUL SYLLABLE MYULG;Lo;0;L;;;;;N;;;;;
+BBAE;HANGUL SYLLABLE MYULM;Lo;0;L;;;;;N;;;;;
+BBAF;HANGUL SYLLABLE MYULB;Lo;0;L;;;;;N;;;;;
+BBB0;HANGUL SYLLABLE MYULS;Lo;0;L;;;;;N;;;;;
+BBB1;HANGUL SYLLABLE MYULT;Lo;0;L;;;;;N;;;;;
+BBB2;HANGUL SYLLABLE MYULP;Lo;0;L;;;;;N;;;;;
+BBB3;HANGUL SYLLABLE MYULH;Lo;0;L;;;;;N;;;;;
+BBB4;HANGUL SYLLABLE MYUM;Lo;0;L;;;;;N;;;;;
+BBB5;HANGUL SYLLABLE MYUB;Lo;0;L;;;;;N;;;;;
+BBB6;HANGUL SYLLABLE MYUBS;Lo;0;L;;;;;N;;;;;
+BBB7;HANGUL SYLLABLE MYUS;Lo;0;L;;;;;N;;;;;
+BBB8;HANGUL SYLLABLE MYUSS;Lo;0;L;;;;;N;;;;;
+BBB9;HANGUL SYLLABLE MYUNG;Lo;0;L;;;;;N;;;;;
+BBBA;HANGUL SYLLABLE MYUJ;Lo;0;L;;;;;N;;;;;
+BBBB;HANGUL SYLLABLE MYUC;Lo;0;L;;;;;N;;;;;
+BBBC;HANGUL SYLLABLE MYUK;Lo;0;L;;;;;N;;;;;
+BBBD;HANGUL SYLLABLE MYUT;Lo;0;L;;;;;N;;;;;
+BBBE;HANGUL SYLLABLE MYUP;Lo;0;L;;;;;N;;;;;
+BBBF;HANGUL SYLLABLE MYUH;Lo;0;L;;;;;N;;;;;
+BBC0;HANGUL SYLLABLE MEU;Lo;0;L;;;;;N;;;;;
+BBC1;HANGUL SYLLABLE MEUG;Lo;0;L;;;;;N;;;;;
+BBC2;HANGUL SYLLABLE MEUGG;Lo;0;L;;;;;N;;;;;
+BBC3;HANGUL SYLLABLE MEUGS;Lo;0;L;;;;;N;;;;;
+BBC4;HANGUL SYLLABLE MEUN;Lo;0;L;;;;;N;;;;;
+BBC5;HANGUL SYLLABLE MEUNI;Lo;0;L;;;;;N;;;;;
+BBC6;HANGUL SYLLABLE MEUNH;Lo;0;L;;;;;N;;;;;
+BBC7;HANGUL SYLLABLE MEUD;Lo;0;L;;;;;N;;;;;
+BBC8;HANGUL SYLLABLE MEUL;Lo;0;L;;;;;N;;;;;
+BBC9;HANGUL SYLLABLE MEULG;Lo;0;L;;;;;N;;;;;
+BBCA;HANGUL SYLLABLE MEULM;Lo;0;L;;;;;N;;;;;
+BBCB;HANGUL SYLLABLE MEULB;Lo;0;L;;;;;N;;;;;
+BBCC;HANGUL SYLLABLE MEULS;Lo;0;L;;;;;N;;;;;
+BBCD;HANGUL SYLLABLE MEULT;Lo;0;L;;;;;N;;;;;
+BBCE;HANGUL SYLLABLE MEULP;Lo;0;L;;;;;N;;;;;
+BBCF;HANGUL SYLLABLE MEULH;Lo;0;L;;;;;N;;;;;
+BBD0;HANGUL SYLLABLE MEUM;Lo;0;L;;;;;N;;;;;
+BBD1;HANGUL SYLLABLE MEUB;Lo;0;L;;;;;N;;;;;
+BBD2;HANGUL SYLLABLE MEUBS;Lo;0;L;;;;;N;;;;;
+BBD3;HANGUL SYLLABLE MEUS;Lo;0;L;;;;;N;;;;;
+BBD4;HANGUL SYLLABLE MEUSS;Lo;0;L;;;;;N;;;;;
+BBD5;HANGUL SYLLABLE MEUNG;Lo;0;L;;;;;N;;;;;
+BBD6;HANGUL SYLLABLE MEUJ;Lo;0;L;;;;;N;;;;;
+BBD7;HANGUL SYLLABLE MEUC;Lo;0;L;;;;;N;;;;;
+BBD8;HANGUL SYLLABLE MEUK;Lo;0;L;;;;;N;;;;;
+BBD9;HANGUL SYLLABLE MEUT;Lo;0;L;;;;;N;;;;;
+BBDA;HANGUL SYLLABLE MEUP;Lo;0;L;;;;;N;;;;;
+BBDB;HANGUL SYLLABLE MEUH;Lo;0;L;;;;;N;;;;;
+BBDC;HANGUL SYLLABLE MYI;Lo;0;L;;;;;N;;;;;
+BBDD;HANGUL SYLLABLE MYIG;Lo;0;L;;;;;N;;;;;
+BBDE;HANGUL SYLLABLE MYIGG;Lo;0;L;;;;;N;;;;;
+BBDF;HANGUL SYLLABLE MYIGS;Lo;0;L;;;;;N;;;;;
+BBE0;HANGUL SYLLABLE MYIN;Lo;0;L;;;;;N;;;;;
+BBE1;HANGUL SYLLABLE MYINI;Lo;0;L;;;;;N;;;;;
+BBE2;HANGUL SYLLABLE MYINH;Lo;0;L;;;;;N;;;;;
+BBE3;HANGUL SYLLABLE MYID;Lo;0;L;;;;;N;;;;;
+BBE4;HANGUL SYLLABLE MYIL;Lo;0;L;;;;;N;;;;;
+BBE5;HANGUL SYLLABLE MYILG;Lo;0;L;;;;;N;;;;;
+BBE6;HANGUL SYLLABLE MYILM;Lo;0;L;;;;;N;;;;;
+BBE7;HANGUL SYLLABLE MYILB;Lo;0;L;;;;;N;;;;;
+BBE8;HANGUL SYLLABLE MYILS;Lo;0;L;;;;;N;;;;;
+BBE9;HANGUL SYLLABLE MYILT;Lo;0;L;;;;;N;;;;;
+BBEA;HANGUL SYLLABLE MYILP;Lo;0;L;;;;;N;;;;;
+BBEB;HANGUL SYLLABLE MYILH;Lo;0;L;;;;;N;;;;;
+BBEC;HANGUL SYLLABLE MYIM;Lo;0;L;;;;;N;;;;;
+BBED;HANGUL SYLLABLE MYIB;Lo;0;L;;;;;N;;;;;
+BBEE;HANGUL SYLLABLE MYIBS;Lo;0;L;;;;;N;;;;;
+BBEF;HANGUL SYLLABLE MYIS;Lo;0;L;;;;;N;;;;;
+BBF0;HANGUL SYLLABLE MYISS;Lo;0;L;;;;;N;;;;;
+BBF1;HANGUL SYLLABLE MYING;Lo;0;L;;;;;N;;;;;
+BBF2;HANGUL SYLLABLE MYIJ;Lo;0;L;;;;;N;;;;;
+BBF3;HANGUL SYLLABLE MYIC;Lo;0;L;;;;;N;;;;;
+BBF4;HANGUL SYLLABLE MYIK;Lo;0;L;;;;;N;;;;;
+BBF5;HANGUL SYLLABLE MYIT;Lo;0;L;;;;;N;;;;;
+BBF6;HANGUL SYLLABLE MYIP;Lo;0;L;;;;;N;;;;;
+BBF7;HANGUL SYLLABLE MYIH;Lo;0;L;;;;;N;;;;;
+BBF8;HANGUL SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+BBF9;HANGUL SYLLABLE MIG;Lo;0;L;;;;;N;;;;;
+BBFA;HANGUL SYLLABLE MIGG;Lo;0;L;;;;;N;;;;;
+BBFB;HANGUL SYLLABLE MIGS;Lo;0;L;;;;;N;;;;;
+BBFC;HANGUL SYLLABLE MIN;Lo;0;L;;;;;N;;;;;
+BBFD;HANGUL SYLLABLE MINI;Lo;0;L;;;;;N;;;;;
+BBFE;HANGUL SYLLABLE MINH;Lo;0;L;;;;;N;;;;;
+BBFF;HANGUL SYLLABLE MID;Lo;0;L;;;;;N;;;;;
+BC00;HANGUL SYLLABLE MIL;Lo;0;L;;;;;N;;;;;
+BC01;HANGUL SYLLABLE MILG;Lo;0;L;;;;;N;;;;;
+BC02;HANGUL SYLLABLE MILM;Lo;0;L;;;;;N;;;;;
+BC03;HANGUL SYLLABLE MILB;Lo;0;L;;;;;N;;;;;
+BC04;HANGUL SYLLABLE MILS;Lo;0;L;;;;;N;;;;;
+BC05;HANGUL SYLLABLE MILT;Lo;0;L;;;;;N;;;;;
+BC06;HANGUL SYLLABLE MILP;Lo;0;L;;;;;N;;;;;
+BC07;HANGUL SYLLABLE MILH;Lo;0;L;;;;;N;;;;;
+BC08;HANGUL SYLLABLE MIM;Lo;0;L;;;;;N;;;;;
+BC09;HANGUL SYLLABLE MIB;Lo;0;L;;;;;N;;;;;
+BC0A;HANGUL SYLLABLE MIBS;Lo;0;L;;;;;N;;;;;
+BC0B;HANGUL SYLLABLE MIS;Lo;0;L;;;;;N;;;;;
+BC0C;HANGUL SYLLABLE MISS;Lo;0;L;;;;;N;;;;;
+BC0D;HANGUL SYLLABLE MING;Lo;0;L;;;;;N;;;;;
+BC0E;HANGUL SYLLABLE MIJ;Lo;0;L;;;;;N;;;;;
+BC0F;HANGUL SYLLABLE MIC;Lo;0;L;;;;;N;;;;;
+BC10;HANGUL SYLLABLE MIK;Lo;0;L;;;;;N;;;;;
+BC11;HANGUL SYLLABLE MIT;Lo;0;L;;;;;N;;;;;
+BC12;HANGUL SYLLABLE MIP;Lo;0;L;;;;;N;;;;;
+BC13;HANGUL SYLLABLE MIH;Lo;0;L;;;;;N;;;;;
+BC14;HANGUL SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+BC15;HANGUL SYLLABLE BAG;Lo;0;L;;;;;N;;;;;
+BC16;HANGUL SYLLABLE BAGG;Lo;0;L;;;;;N;;;;;
+BC17;HANGUL SYLLABLE BAGS;Lo;0;L;;;;;N;;;;;
+BC18;HANGUL SYLLABLE BAN;Lo;0;L;;;;;N;;;;;
+BC19;HANGUL SYLLABLE BANI;Lo;0;L;;;;;N;;;;;
+BC1A;HANGUL SYLLABLE BANH;Lo;0;L;;;;;N;;;;;
+BC1B;HANGUL SYLLABLE BAD;Lo;0;L;;;;;N;;;;;
+BC1C;HANGUL SYLLABLE BAL;Lo;0;L;;;;;N;;;;;
+BC1D;HANGUL SYLLABLE BALG;Lo;0;L;;;;;N;;;;;
+BC1E;HANGUL SYLLABLE BALM;Lo;0;L;;;;;N;;;;;
+BC1F;HANGUL SYLLABLE BALB;Lo;0;L;;;;;N;;;;;
+BC20;HANGUL SYLLABLE BALS;Lo;0;L;;;;;N;;;;;
+BC21;HANGUL SYLLABLE BALT;Lo;0;L;;;;;N;;;;;
+BC22;HANGUL SYLLABLE BALP;Lo;0;L;;;;;N;;;;;
+BC23;HANGUL SYLLABLE BALH;Lo;0;L;;;;;N;;;;;
+BC24;HANGUL SYLLABLE BAM;Lo;0;L;;;;;N;;;;;
+BC25;HANGUL SYLLABLE BAB;Lo;0;L;;;;;N;;;;;
+BC26;HANGUL SYLLABLE BABS;Lo;0;L;;;;;N;;;;;
+BC27;HANGUL SYLLABLE BAS;Lo;0;L;;;;;N;;;;;
+BC28;HANGUL SYLLABLE BASS;Lo;0;L;;;;;N;;;;;
+BC29;HANGUL SYLLABLE BANG;Lo;0;L;;;;;N;;;;;
+BC2A;HANGUL SYLLABLE BAJ;Lo;0;L;;;;;N;;;;;
+BC2B;HANGUL SYLLABLE BAC;Lo;0;L;;;;;N;;;;;
+BC2C;HANGUL SYLLABLE BAK;Lo;0;L;;;;;N;;;;;
+BC2D;HANGUL SYLLABLE BAT;Lo;0;L;;;;;N;;;;;
+BC2E;HANGUL SYLLABLE BAP;Lo;0;L;;;;;N;;;;;
+BC2F;HANGUL SYLLABLE BAH;Lo;0;L;;;;;N;;;;;
+BC30;HANGUL SYLLABLE BAE;Lo;0;L;;;;;N;;;;;
+BC31;HANGUL SYLLABLE BAEG;Lo;0;L;;;;;N;;;;;
+BC32;HANGUL SYLLABLE BAEGG;Lo;0;L;;;;;N;;;;;
+BC33;HANGUL SYLLABLE BAEGS;Lo;0;L;;;;;N;;;;;
+BC34;HANGUL SYLLABLE BAEN;Lo;0;L;;;;;N;;;;;
+BC35;HANGUL SYLLABLE BAENI;Lo;0;L;;;;;N;;;;;
+BC36;HANGUL SYLLABLE BAENH;Lo;0;L;;;;;N;;;;;
+BC37;HANGUL SYLLABLE BAED;Lo;0;L;;;;;N;;;;;
+BC38;HANGUL SYLLABLE BAEL;Lo;0;L;;;;;N;;;;;
+BC39;HANGUL SYLLABLE BAELG;Lo;0;L;;;;;N;;;;;
+BC3A;HANGUL SYLLABLE BAELM;Lo;0;L;;;;;N;;;;;
+BC3B;HANGUL SYLLABLE BAELB;Lo;0;L;;;;;N;;;;;
+BC3C;HANGUL SYLLABLE BAELS;Lo;0;L;;;;;N;;;;;
+BC3D;HANGUL SYLLABLE BAELT;Lo;0;L;;;;;N;;;;;
+BC3E;HANGUL SYLLABLE BAELP;Lo;0;L;;;;;N;;;;;
+BC3F;HANGUL SYLLABLE BAELH;Lo;0;L;;;;;N;;;;;
+BC40;HANGUL SYLLABLE BAEM;Lo;0;L;;;;;N;;;;;
+BC41;HANGUL SYLLABLE BAEB;Lo;0;L;;;;;N;;;;;
+BC42;HANGUL SYLLABLE BAEBS;Lo;0;L;;;;;N;;;;;
+BC43;HANGUL SYLLABLE BAES;Lo;0;L;;;;;N;;;;;
+BC44;HANGUL SYLLABLE BAESS;Lo;0;L;;;;;N;;;;;
+BC45;HANGUL SYLLABLE BAENG;Lo;0;L;;;;;N;;;;;
+BC46;HANGUL SYLLABLE BAEJ;Lo;0;L;;;;;N;;;;;
+BC47;HANGUL SYLLABLE BAEC;Lo;0;L;;;;;N;;;;;
+BC48;HANGUL SYLLABLE BAEK;Lo;0;L;;;;;N;;;;;
+BC49;HANGUL SYLLABLE BAET;Lo;0;L;;;;;N;;;;;
+BC4A;HANGUL SYLLABLE BAEP;Lo;0;L;;;;;N;;;;;
+BC4B;HANGUL SYLLABLE BAEH;Lo;0;L;;;;;N;;;;;
+BC4C;HANGUL SYLLABLE BYA;Lo;0;L;;;;;N;;;;;
+BC4D;HANGUL SYLLABLE BYAG;Lo;0;L;;;;;N;;;;;
+BC4E;HANGUL SYLLABLE BYAGG;Lo;0;L;;;;;N;;;;;
+BC4F;HANGUL SYLLABLE BYAGS;Lo;0;L;;;;;N;;;;;
+BC50;HANGUL SYLLABLE BYAN;Lo;0;L;;;;;N;;;;;
+BC51;HANGUL SYLLABLE BYANI;Lo;0;L;;;;;N;;;;;
+BC52;HANGUL SYLLABLE BYANH;Lo;0;L;;;;;N;;;;;
+BC53;HANGUL SYLLABLE BYAD;Lo;0;L;;;;;N;;;;;
+BC54;HANGUL SYLLABLE BYAL;Lo;0;L;;;;;N;;;;;
+BC55;HANGUL SYLLABLE BYALG;Lo;0;L;;;;;N;;;;;
+BC56;HANGUL SYLLABLE BYALM;Lo;0;L;;;;;N;;;;;
+BC57;HANGUL SYLLABLE BYALB;Lo;0;L;;;;;N;;;;;
+BC58;HANGUL SYLLABLE BYALS;Lo;0;L;;;;;N;;;;;
+BC59;HANGUL SYLLABLE BYALT;Lo;0;L;;;;;N;;;;;
+BC5A;HANGUL SYLLABLE BYALP;Lo;0;L;;;;;N;;;;;
+BC5B;HANGUL SYLLABLE BYALH;Lo;0;L;;;;;N;;;;;
+BC5C;HANGUL SYLLABLE BYAM;Lo;0;L;;;;;N;;;;;
+BC5D;HANGUL SYLLABLE BYAB;Lo;0;L;;;;;N;;;;;
+BC5E;HANGUL SYLLABLE BYABS;Lo;0;L;;;;;N;;;;;
+BC5F;HANGUL SYLLABLE BYAS;Lo;0;L;;;;;N;;;;;
+BC60;HANGUL SYLLABLE BYASS;Lo;0;L;;;;;N;;;;;
+BC61;HANGUL SYLLABLE BYANG;Lo;0;L;;;;;N;;;;;
+BC62;HANGUL SYLLABLE BYAJ;Lo;0;L;;;;;N;;;;;
+BC63;HANGUL SYLLABLE BYAC;Lo;0;L;;;;;N;;;;;
+BC64;HANGUL SYLLABLE BYAK;Lo;0;L;;;;;N;;;;;
+BC65;HANGUL SYLLABLE BYAT;Lo;0;L;;;;;N;;;;;
+BC66;HANGUL SYLLABLE BYAP;Lo;0;L;;;;;N;;;;;
+BC67;HANGUL SYLLABLE BYAH;Lo;0;L;;;;;N;;;;;
+BC68;HANGUL SYLLABLE BYAE;Lo;0;L;;;;;N;;;;;
+BC69;HANGUL SYLLABLE BYAEG;Lo;0;L;;;;;N;;;;;
+BC6A;HANGUL SYLLABLE BYAEGG;Lo;0;L;;;;;N;;;;;
+BC6B;HANGUL SYLLABLE BYAEGS;Lo;0;L;;;;;N;;;;;
+BC6C;HANGUL SYLLABLE BYAEN;Lo;0;L;;;;;N;;;;;
+BC6D;HANGUL SYLLABLE BYAENI;Lo;0;L;;;;;N;;;;;
+BC6E;HANGUL SYLLABLE BYAENH;Lo;0;L;;;;;N;;;;;
+BC6F;HANGUL SYLLABLE BYAED;Lo;0;L;;;;;N;;;;;
+BC70;HANGUL SYLLABLE BYAEL;Lo;0;L;;;;;N;;;;;
+BC71;HANGUL SYLLABLE BYAELG;Lo;0;L;;;;;N;;;;;
+BC72;HANGUL SYLLABLE BYAELM;Lo;0;L;;;;;N;;;;;
+BC73;HANGUL SYLLABLE BYAELB;Lo;0;L;;;;;N;;;;;
+BC74;HANGUL SYLLABLE BYAELS;Lo;0;L;;;;;N;;;;;
+BC75;HANGUL SYLLABLE BYAELT;Lo;0;L;;;;;N;;;;;
+BC76;HANGUL SYLLABLE BYAELP;Lo;0;L;;;;;N;;;;;
+BC77;HANGUL SYLLABLE BYAELH;Lo;0;L;;;;;N;;;;;
+BC78;HANGUL SYLLABLE BYAEM;Lo;0;L;;;;;N;;;;;
+BC79;HANGUL SYLLABLE BYAEB;Lo;0;L;;;;;N;;;;;
+BC7A;HANGUL SYLLABLE BYAEBS;Lo;0;L;;;;;N;;;;;
+BC7B;HANGUL SYLLABLE BYAES;Lo;0;L;;;;;N;;;;;
+BC7C;HANGUL SYLLABLE BYAESS;Lo;0;L;;;;;N;;;;;
+BC7D;HANGUL SYLLABLE BYAENG;Lo;0;L;;;;;N;;;;;
+BC7E;HANGUL SYLLABLE BYAEJ;Lo;0;L;;;;;N;;;;;
+BC7F;HANGUL SYLLABLE BYAEC;Lo;0;L;;;;;N;;;;;
+BC80;HANGUL SYLLABLE BYAEK;Lo;0;L;;;;;N;;;;;
+BC81;HANGUL SYLLABLE BYAET;Lo;0;L;;;;;N;;;;;
+BC82;HANGUL SYLLABLE BYAEP;Lo;0;L;;;;;N;;;;;
+BC83;HANGUL SYLLABLE BYAEH;Lo;0;L;;;;;N;;;;;
+BC84;HANGUL SYLLABLE BEO;Lo;0;L;;;;;N;;;;;
+BC85;HANGUL SYLLABLE BEOG;Lo;0;L;;;;;N;;;;;
+BC86;HANGUL SYLLABLE BEOGG;Lo;0;L;;;;;N;;;;;
+BC87;HANGUL SYLLABLE BEOGS;Lo;0;L;;;;;N;;;;;
+BC88;HANGUL SYLLABLE BEON;Lo;0;L;;;;;N;;;;;
+BC89;HANGUL SYLLABLE BEONI;Lo;0;L;;;;;N;;;;;
+BC8A;HANGUL SYLLABLE BEONH;Lo;0;L;;;;;N;;;;;
+BC8B;HANGUL SYLLABLE BEOD;Lo;0;L;;;;;N;;;;;
+BC8C;HANGUL SYLLABLE BEOL;Lo;0;L;;;;;N;;;;;
+BC8D;HANGUL SYLLABLE BEOLG;Lo;0;L;;;;;N;;;;;
+BC8E;HANGUL SYLLABLE BEOLM;Lo;0;L;;;;;N;;;;;
+BC8F;HANGUL SYLLABLE BEOLB;Lo;0;L;;;;;N;;;;;
+BC90;HANGUL SYLLABLE BEOLS;Lo;0;L;;;;;N;;;;;
+BC91;HANGUL SYLLABLE BEOLT;Lo;0;L;;;;;N;;;;;
+BC92;HANGUL SYLLABLE BEOLP;Lo;0;L;;;;;N;;;;;
+BC93;HANGUL SYLLABLE BEOLH;Lo;0;L;;;;;N;;;;;
+BC94;HANGUL SYLLABLE BEOM;Lo;0;L;;;;;N;;;;;
+BC95;HANGUL SYLLABLE BEOB;Lo;0;L;;;;;N;;;;;
+BC96;HANGUL SYLLABLE BEOBS;Lo;0;L;;;;;N;;;;;
+BC97;HANGUL SYLLABLE BEOS;Lo;0;L;;;;;N;;;;;
+BC98;HANGUL SYLLABLE BEOSS;Lo;0;L;;;;;N;;;;;
+BC99;HANGUL SYLLABLE BEONG;Lo;0;L;;;;;N;;;;;
+BC9A;HANGUL SYLLABLE BEOJ;Lo;0;L;;;;;N;;;;;
+BC9B;HANGUL SYLLABLE BEOC;Lo;0;L;;;;;N;;;;;
+BC9C;HANGUL SYLLABLE BEOK;Lo;0;L;;;;;N;;;;;
+BC9D;HANGUL SYLLABLE BEOT;Lo;0;L;;;;;N;;;;;
+BC9E;HANGUL SYLLABLE BEOP;Lo;0;L;;;;;N;;;;;
+BC9F;HANGUL SYLLABLE BEOH;Lo;0;L;;;;;N;;;;;
+BCA0;HANGUL SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+BCA1;HANGUL SYLLABLE BEG;Lo;0;L;;;;;N;;;;;
+BCA2;HANGUL SYLLABLE BEGG;Lo;0;L;;;;;N;;;;;
+BCA3;HANGUL SYLLABLE BEGS;Lo;0;L;;;;;N;;;;;
+BCA4;HANGUL SYLLABLE BEN;Lo;0;L;;;;;N;;;;;
+BCA5;HANGUL SYLLABLE BENI;Lo;0;L;;;;;N;;;;;
+BCA6;HANGUL SYLLABLE BENH;Lo;0;L;;;;;N;;;;;
+BCA7;HANGUL SYLLABLE BED;Lo;0;L;;;;;N;;;;;
+BCA8;HANGUL SYLLABLE BEL;Lo;0;L;;;;;N;;;;;
+BCA9;HANGUL SYLLABLE BELG;Lo;0;L;;;;;N;;;;;
+BCAA;HANGUL SYLLABLE BELM;Lo;0;L;;;;;N;;;;;
+BCAB;HANGUL SYLLABLE BELB;Lo;0;L;;;;;N;;;;;
+BCAC;HANGUL SYLLABLE BELS;Lo;0;L;;;;;N;;;;;
+BCAD;HANGUL SYLLABLE BELT;Lo;0;L;;;;;N;;;;;
+BCAE;HANGUL SYLLABLE BELP;Lo;0;L;;;;;N;;;;;
+BCAF;HANGUL SYLLABLE BELH;Lo;0;L;;;;;N;;;;;
+BCB0;HANGUL SYLLABLE BEM;Lo;0;L;;;;;N;;;;;
+BCB1;HANGUL SYLLABLE BEB;Lo;0;L;;;;;N;;;;;
+BCB2;HANGUL SYLLABLE BEBS;Lo;0;L;;;;;N;;;;;
+BCB3;HANGUL SYLLABLE BES;Lo;0;L;;;;;N;;;;;
+BCB4;HANGUL SYLLABLE BESS;Lo;0;L;;;;;N;;;;;
+BCB5;HANGUL SYLLABLE BENG;Lo;0;L;;;;;N;;;;;
+BCB6;HANGUL SYLLABLE BEJ;Lo;0;L;;;;;N;;;;;
+BCB7;HANGUL SYLLABLE BEC;Lo;0;L;;;;;N;;;;;
+BCB8;HANGUL SYLLABLE BEK;Lo;0;L;;;;;N;;;;;
+BCB9;HANGUL SYLLABLE BET;Lo;0;L;;;;;N;;;;;
+BCBA;HANGUL SYLLABLE BEP;Lo;0;L;;;;;N;;;;;
+BCBB;HANGUL SYLLABLE BEH;Lo;0;L;;;;;N;;;;;
+BCBC;HANGUL SYLLABLE BYEO;Lo;0;L;;;;;N;;;;;
+BCBD;HANGUL SYLLABLE BYEOG;Lo;0;L;;;;;N;;;;;
+BCBE;HANGUL SYLLABLE BYEOGG;Lo;0;L;;;;;N;;;;;
+BCBF;HANGUL SYLLABLE BYEOGS;Lo;0;L;;;;;N;;;;;
+BCC0;HANGUL SYLLABLE BYEON;Lo;0;L;;;;;N;;;;;
+BCC1;HANGUL SYLLABLE BYEONI;Lo;0;L;;;;;N;;;;;
+BCC2;HANGUL SYLLABLE BYEONH;Lo;0;L;;;;;N;;;;;
+BCC3;HANGUL SYLLABLE BYEOD;Lo;0;L;;;;;N;;;;;
+BCC4;HANGUL SYLLABLE BYEOL;Lo;0;L;;;;;N;;;;;
+BCC5;HANGUL SYLLABLE BYEOLG;Lo;0;L;;;;;N;;;;;
+BCC6;HANGUL SYLLABLE BYEOLM;Lo;0;L;;;;;N;;;;;
+BCC7;HANGUL SYLLABLE BYEOLB;Lo;0;L;;;;;N;;;;;
+BCC8;HANGUL SYLLABLE BYEOLS;Lo;0;L;;;;;N;;;;;
+BCC9;HANGUL SYLLABLE BYEOLT;Lo;0;L;;;;;N;;;;;
+BCCA;HANGUL SYLLABLE BYEOLP;Lo;0;L;;;;;N;;;;;
+BCCB;HANGUL SYLLABLE BYEOLH;Lo;0;L;;;;;N;;;;;
+BCCC;HANGUL SYLLABLE BYEOM;Lo;0;L;;;;;N;;;;;
+BCCD;HANGUL SYLLABLE BYEOB;Lo;0;L;;;;;N;;;;;
+BCCE;HANGUL SYLLABLE BYEOBS;Lo;0;L;;;;;N;;;;;
+BCCF;HANGUL SYLLABLE BYEOS;Lo;0;L;;;;;N;;;;;
+BCD0;HANGUL SYLLABLE BYEOSS;Lo;0;L;;;;;N;;;;;
+BCD1;HANGUL SYLLABLE BYEONG;Lo;0;L;;;;;N;;;;;
+BCD2;HANGUL SYLLABLE BYEOJ;Lo;0;L;;;;;N;;;;;
+BCD3;HANGUL SYLLABLE BYEOC;Lo;0;L;;;;;N;;;;;
+BCD4;HANGUL SYLLABLE BYEOK;Lo;0;L;;;;;N;;;;;
+BCD5;HANGUL SYLLABLE BYEOT;Lo;0;L;;;;;N;;;;;
+BCD6;HANGUL SYLLABLE BYEOP;Lo;0;L;;;;;N;;;;;
+BCD7;HANGUL SYLLABLE BYEOH;Lo;0;L;;;;;N;;;;;
+BCD8;HANGUL SYLLABLE BYE;Lo;0;L;;;;;N;;;;;
+BCD9;HANGUL SYLLABLE BYEG;Lo;0;L;;;;;N;;;;;
+BCDA;HANGUL SYLLABLE BYEGG;Lo;0;L;;;;;N;;;;;
+BCDB;HANGUL SYLLABLE BYEGS;Lo;0;L;;;;;N;;;;;
+BCDC;HANGUL SYLLABLE BYEN;Lo;0;L;;;;;N;;;;;
+BCDD;HANGUL SYLLABLE BYENI;Lo;0;L;;;;;N;;;;;
+BCDE;HANGUL SYLLABLE BYENH;Lo;0;L;;;;;N;;;;;
+BCDF;HANGUL SYLLABLE BYED;Lo;0;L;;;;;N;;;;;
+BCE0;HANGUL SYLLABLE BYEL;Lo;0;L;;;;;N;;;;;
+BCE1;HANGUL SYLLABLE BYELG;Lo;0;L;;;;;N;;;;;
+BCE2;HANGUL SYLLABLE BYELM;Lo;0;L;;;;;N;;;;;
+BCE3;HANGUL SYLLABLE BYELB;Lo;0;L;;;;;N;;;;;
+BCE4;HANGUL SYLLABLE BYELS;Lo;0;L;;;;;N;;;;;
+BCE5;HANGUL SYLLABLE BYELT;Lo;0;L;;;;;N;;;;;
+BCE6;HANGUL SYLLABLE BYELP;Lo;0;L;;;;;N;;;;;
+BCE7;HANGUL SYLLABLE BYELH;Lo;0;L;;;;;N;;;;;
+BCE8;HANGUL SYLLABLE BYEM;Lo;0;L;;;;;N;;;;;
+BCE9;HANGUL SYLLABLE BYEB;Lo;0;L;;;;;N;;;;;
+BCEA;HANGUL SYLLABLE BYEBS;Lo;0;L;;;;;N;;;;;
+BCEB;HANGUL SYLLABLE BYES;Lo;0;L;;;;;N;;;;;
+BCEC;HANGUL SYLLABLE BYESS;Lo;0;L;;;;;N;;;;;
+BCED;HANGUL SYLLABLE BYENG;Lo;0;L;;;;;N;;;;;
+BCEE;HANGUL SYLLABLE BYEJ;Lo;0;L;;;;;N;;;;;
+BCEF;HANGUL SYLLABLE BYEC;Lo;0;L;;;;;N;;;;;
+BCF0;HANGUL SYLLABLE BYEK;Lo;0;L;;;;;N;;;;;
+BCF1;HANGUL SYLLABLE BYET;Lo;0;L;;;;;N;;;;;
+BCF2;HANGUL SYLLABLE BYEP;Lo;0;L;;;;;N;;;;;
+BCF3;HANGUL SYLLABLE BYEH;Lo;0;L;;;;;N;;;;;
+BCF4;HANGUL SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+BCF5;HANGUL SYLLABLE BOG;Lo;0;L;;;;;N;;;;;
+BCF6;HANGUL SYLLABLE BOGG;Lo;0;L;;;;;N;;;;;
+BCF7;HANGUL SYLLABLE BOGS;Lo;0;L;;;;;N;;;;;
+BCF8;HANGUL SYLLABLE BON;Lo;0;L;;;;;N;;;;;
+BCF9;HANGUL SYLLABLE BONI;Lo;0;L;;;;;N;;;;;
+BCFA;HANGUL SYLLABLE BONH;Lo;0;L;;;;;N;;;;;
+BCFB;HANGUL SYLLABLE BOD;Lo;0;L;;;;;N;;;;;
+BCFC;HANGUL SYLLABLE BOL;Lo;0;L;;;;;N;;;;;
+BCFD;HANGUL SYLLABLE BOLG;Lo;0;L;;;;;N;;;;;
+BCFE;HANGUL SYLLABLE BOLM;Lo;0;L;;;;;N;;;;;
+BCFF;HANGUL SYLLABLE BOLB;Lo;0;L;;;;;N;;;;;
+BD00;HANGUL SYLLABLE BOLS;Lo;0;L;;;;;N;;;;;
+BD01;HANGUL SYLLABLE BOLT;Lo;0;L;;;;;N;;;;;
+BD02;HANGUL SYLLABLE BOLP;Lo;0;L;;;;;N;;;;;
+BD03;HANGUL SYLLABLE BOLH;Lo;0;L;;;;;N;;;;;
+BD04;HANGUL SYLLABLE BOM;Lo;0;L;;;;;N;;;;;
+BD05;HANGUL SYLLABLE BOB;Lo;0;L;;;;;N;;;;;
+BD06;HANGUL SYLLABLE BOBS;Lo;0;L;;;;;N;;;;;
+BD07;HANGUL SYLLABLE BOS;Lo;0;L;;;;;N;;;;;
+BD08;HANGUL SYLLABLE BOSS;Lo;0;L;;;;;N;;;;;
+BD09;HANGUL SYLLABLE BONG;Lo;0;L;;;;;N;;;;;
+BD0A;HANGUL SYLLABLE BOJ;Lo;0;L;;;;;N;;;;;
+BD0B;HANGUL SYLLABLE BOC;Lo;0;L;;;;;N;;;;;
+BD0C;HANGUL SYLLABLE BOK;Lo;0;L;;;;;N;;;;;
+BD0D;HANGUL SYLLABLE BOT;Lo;0;L;;;;;N;;;;;
+BD0E;HANGUL SYLLABLE BOP;Lo;0;L;;;;;N;;;;;
+BD0F;HANGUL SYLLABLE BOH;Lo;0;L;;;;;N;;;;;
+BD10;HANGUL SYLLABLE BWA;Lo;0;L;;;;;N;;;;;
+BD11;HANGUL SYLLABLE BWAG;Lo;0;L;;;;;N;;;;;
+BD12;HANGUL SYLLABLE BWAGG;Lo;0;L;;;;;N;;;;;
+BD13;HANGUL SYLLABLE BWAGS;Lo;0;L;;;;;N;;;;;
+BD14;HANGUL SYLLABLE BWAN;Lo;0;L;;;;;N;;;;;
+BD15;HANGUL SYLLABLE BWANI;Lo;0;L;;;;;N;;;;;
+BD16;HANGUL SYLLABLE BWANH;Lo;0;L;;;;;N;;;;;
+BD17;HANGUL SYLLABLE BWAD;Lo;0;L;;;;;N;;;;;
+BD18;HANGUL SYLLABLE BWAL;Lo;0;L;;;;;N;;;;;
+BD19;HANGUL SYLLABLE BWALG;Lo;0;L;;;;;N;;;;;
+BD1A;HANGUL SYLLABLE BWALM;Lo;0;L;;;;;N;;;;;
+BD1B;HANGUL SYLLABLE BWALB;Lo;0;L;;;;;N;;;;;
+BD1C;HANGUL SYLLABLE BWALS;Lo;0;L;;;;;N;;;;;
+BD1D;HANGUL SYLLABLE BWALT;Lo;0;L;;;;;N;;;;;
+BD1E;HANGUL SYLLABLE BWALP;Lo;0;L;;;;;N;;;;;
+BD1F;HANGUL SYLLABLE BWALH;Lo;0;L;;;;;N;;;;;
+BD20;HANGUL SYLLABLE BWAM;Lo;0;L;;;;;N;;;;;
+BD21;HANGUL SYLLABLE BWAB;Lo;0;L;;;;;N;;;;;
+BD22;HANGUL SYLLABLE BWABS;Lo;0;L;;;;;N;;;;;
+BD23;HANGUL SYLLABLE BWAS;Lo;0;L;;;;;N;;;;;
+BD24;HANGUL SYLLABLE BWASS;Lo;0;L;;;;;N;;;;;
+BD25;HANGUL SYLLABLE BWANG;Lo;0;L;;;;;N;;;;;
+BD26;HANGUL SYLLABLE BWAJ;Lo;0;L;;;;;N;;;;;
+BD27;HANGUL SYLLABLE BWAC;Lo;0;L;;;;;N;;;;;
+BD28;HANGUL SYLLABLE BWAK;Lo;0;L;;;;;N;;;;;
+BD29;HANGUL SYLLABLE BWAT;Lo;0;L;;;;;N;;;;;
+BD2A;HANGUL SYLLABLE BWAP;Lo;0;L;;;;;N;;;;;
+BD2B;HANGUL SYLLABLE BWAH;Lo;0;L;;;;;N;;;;;
+BD2C;HANGUL SYLLABLE BWAE;Lo;0;L;;;;;N;;;;;
+BD2D;HANGUL SYLLABLE BWAEG;Lo;0;L;;;;;N;;;;;
+BD2E;HANGUL SYLLABLE BWAEGG;Lo;0;L;;;;;N;;;;;
+BD2F;HANGUL SYLLABLE BWAEGS;Lo;0;L;;;;;N;;;;;
+BD30;HANGUL SYLLABLE BWAEN;Lo;0;L;;;;;N;;;;;
+BD31;HANGUL SYLLABLE BWAENI;Lo;0;L;;;;;N;;;;;
+BD32;HANGUL SYLLABLE BWAENH;Lo;0;L;;;;;N;;;;;
+BD33;HANGUL SYLLABLE BWAED;Lo;0;L;;;;;N;;;;;
+BD34;HANGUL SYLLABLE BWAEL;Lo;0;L;;;;;N;;;;;
+BD35;HANGUL SYLLABLE BWAELG;Lo;0;L;;;;;N;;;;;
+BD36;HANGUL SYLLABLE BWAELM;Lo;0;L;;;;;N;;;;;
+BD37;HANGUL SYLLABLE BWAELB;Lo;0;L;;;;;N;;;;;
+BD38;HANGUL SYLLABLE BWAELS;Lo;0;L;;;;;N;;;;;
+BD39;HANGUL SYLLABLE BWAELT;Lo;0;L;;;;;N;;;;;
+BD3A;HANGUL SYLLABLE BWAELP;Lo;0;L;;;;;N;;;;;
+BD3B;HANGUL SYLLABLE BWAELH;Lo;0;L;;;;;N;;;;;
+BD3C;HANGUL SYLLABLE BWAEM;Lo;0;L;;;;;N;;;;;
+BD3D;HANGUL SYLLABLE BWAEB;Lo;0;L;;;;;N;;;;;
+BD3E;HANGUL SYLLABLE BWAEBS;Lo;0;L;;;;;N;;;;;
+BD3F;HANGUL SYLLABLE BWAES;Lo;0;L;;;;;N;;;;;
+BD40;HANGUL SYLLABLE BWAESS;Lo;0;L;;;;;N;;;;;
+BD41;HANGUL SYLLABLE BWAENG;Lo;0;L;;;;;N;;;;;
+BD42;HANGUL SYLLABLE BWAEJ;Lo;0;L;;;;;N;;;;;
+BD43;HANGUL SYLLABLE BWAEC;Lo;0;L;;;;;N;;;;;
+BD44;HANGUL SYLLABLE BWAEK;Lo;0;L;;;;;N;;;;;
+BD45;HANGUL SYLLABLE BWAET;Lo;0;L;;;;;N;;;;;
+BD46;HANGUL SYLLABLE BWAEP;Lo;0;L;;;;;N;;;;;
+BD47;HANGUL SYLLABLE BWAEH;Lo;0;L;;;;;N;;;;;
+BD48;HANGUL SYLLABLE BOE;Lo;0;L;;;;;N;;;;;
+BD49;HANGUL SYLLABLE BOEG;Lo;0;L;;;;;N;;;;;
+BD4A;HANGUL SYLLABLE BOEGG;Lo;0;L;;;;;N;;;;;
+BD4B;HANGUL SYLLABLE BOEGS;Lo;0;L;;;;;N;;;;;
+BD4C;HANGUL SYLLABLE BOEN;Lo;0;L;;;;;N;;;;;
+BD4D;HANGUL SYLLABLE BOENI;Lo;0;L;;;;;N;;;;;
+BD4E;HANGUL SYLLABLE BOENH;Lo;0;L;;;;;N;;;;;
+BD4F;HANGUL SYLLABLE BOED;Lo;0;L;;;;;N;;;;;
+BD50;HANGUL SYLLABLE BOEL;Lo;0;L;;;;;N;;;;;
+BD51;HANGUL SYLLABLE BOELG;Lo;0;L;;;;;N;;;;;
+BD52;HANGUL SYLLABLE BOELM;Lo;0;L;;;;;N;;;;;
+BD53;HANGUL SYLLABLE BOELB;Lo;0;L;;;;;N;;;;;
+BD54;HANGUL SYLLABLE BOELS;Lo;0;L;;;;;N;;;;;
+BD55;HANGUL SYLLABLE BOELT;Lo;0;L;;;;;N;;;;;
+BD56;HANGUL SYLLABLE BOELP;Lo;0;L;;;;;N;;;;;
+BD57;HANGUL SYLLABLE BOELH;Lo;0;L;;;;;N;;;;;
+BD58;HANGUL SYLLABLE BOEM;Lo;0;L;;;;;N;;;;;
+BD59;HANGUL SYLLABLE BOEB;Lo;0;L;;;;;N;;;;;
+BD5A;HANGUL SYLLABLE BOEBS;Lo;0;L;;;;;N;;;;;
+BD5B;HANGUL SYLLABLE BOES;Lo;0;L;;;;;N;;;;;
+BD5C;HANGUL SYLLABLE BOESS;Lo;0;L;;;;;N;;;;;
+BD5D;HANGUL SYLLABLE BOENG;Lo;0;L;;;;;N;;;;;
+BD5E;HANGUL SYLLABLE BOEJ;Lo;0;L;;;;;N;;;;;
+BD5F;HANGUL SYLLABLE BOEC;Lo;0;L;;;;;N;;;;;
+BD60;HANGUL SYLLABLE BOEK;Lo;0;L;;;;;N;;;;;
+BD61;HANGUL SYLLABLE BOET;Lo;0;L;;;;;N;;;;;
+BD62;HANGUL SYLLABLE BOEP;Lo;0;L;;;;;N;;;;;
+BD63;HANGUL SYLLABLE BOEH;Lo;0;L;;;;;N;;;;;
+BD64;HANGUL SYLLABLE BYO;Lo;0;L;;;;;N;;;;;
+BD65;HANGUL SYLLABLE BYOG;Lo;0;L;;;;;N;;;;;
+BD66;HANGUL SYLLABLE BYOGG;Lo;0;L;;;;;N;;;;;
+BD67;HANGUL SYLLABLE BYOGS;Lo;0;L;;;;;N;;;;;
+BD68;HANGUL SYLLABLE BYON;Lo;0;L;;;;;N;;;;;
+BD69;HANGUL SYLLABLE BYONI;Lo;0;L;;;;;N;;;;;
+BD6A;HANGUL SYLLABLE BYONH;Lo;0;L;;;;;N;;;;;
+BD6B;HANGUL SYLLABLE BYOD;Lo;0;L;;;;;N;;;;;
+BD6C;HANGUL SYLLABLE BYOL;Lo;0;L;;;;;N;;;;;
+BD6D;HANGUL SYLLABLE BYOLG;Lo;0;L;;;;;N;;;;;
+BD6E;HANGUL SYLLABLE BYOLM;Lo;0;L;;;;;N;;;;;
+BD6F;HANGUL SYLLABLE BYOLB;Lo;0;L;;;;;N;;;;;
+BD70;HANGUL SYLLABLE BYOLS;Lo;0;L;;;;;N;;;;;
+BD71;HANGUL SYLLABLE BYOLT;Lo;0;L;;;;;N;;;;;
+BD72;HANGUL SYLLABLE BYOLP;Lo;0;L;;;;;N;;;;;
+BD73;HANGUL SYLLABLE BYOLH;Lo;0;L;;;;;N;;;;;
+BD74;HANGUL SYLLABLE BYOM;Lo;0;L;;;;;N;;;;;
+BD75;HANGUL SYLLABLE BYOB;Lo;0;L;;;;;N;;;;;
+BD76;HANGUL SYLLABLE BYOBS;Lo;0;L;;;;;N;;;;;
+BD77;HANGUL SYLLABLE BYOS;Lo;0;L;;;;;N;;;;;
+BD78;HANGUL SYLLABLE BYOSS;Lo;0;L;;;;;N;;;;;
+BD79;HANGUL SYLLABLE BYONG;Lo;0;L;;;;;N;;;;;
+BD7A;HANGUL SYLLABLE BYOJ;Lo;0;L;;;;;N;;;;;
+BD7B;HANGUL SYLLABLE BYOC;Lo;0;L;;;;;N;;;;;
+BD7C;HANGUL SYLLABLE BYOK;Lo;0;L;;;;;N;;;;;
+BD7D;HANGUL SYLLABLE BYOT;Lo;0;L;;;;;N;;;;;
+BD7E;HANGUL SYLLABLE BYOP;Lo;0;L;;;;;N;;;;;
+BD7F;HANGUL SYLLABLE BYOH;Lo;0;L;;;;;N;;;;;
+BD80;HANGUL SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+BD81;HANGUL SYLLABLE BUG;Lo;0;L;;;;;N;;;;;
+BD82;HANGUL SYLLABLE BUGG;Lo;0;L;;;;;N;;;;;
+BD83;HANGUL SYLLABLE BUGS;Lo;0;L;;;;;N;;;;;
+BD84;HANGUL SYLLABLE BUN;Lo;0;L;;;;;N;;;;;
+BD85;HANGUL SYLLABLE BUNI;Lo;0;L;;;;;N;;;;;
+BD86;HANGUL SYLLABLE BUNH;Lo;0;L;;;;;N;;;;;
+BD87;HANGUL SYLLABLE BUD;Lo;0;L;;;;;N;;;;;
+BD88;HANGUL SYLLABLE BUL;Lo;0;L;;;;;N;;;;;
+BD89;HANGUL SYLLABLE BULG;Lo;0;L;;;;;N;;;;;
+BD8A;HANGUL SYLLABLE BULM;Lo;0;L;;;;;N;;;;;
+BD8B;HANGUL SYLLABLE BULB;Lo;0;L;;;;;N;;;;;
+BD8C;HANGUL SYLLABLE BULS;Lo;0;L;;;;;N;;;;;
+BD8D;HANGUL SYLLABLE BULT;Lo;0;L;;;;;N;;;;;
+BD8E;HANGUL SYLLABLE BULP;Lo;0;L;;;;;N;;;;;
+BD8F;HANGUL SYLLABLE BULH;Lo;0;L;;;;;N;;;;;
+BD90;HANGUL SYLLABLE BUM;Lo;0;L;;;;;N;;;;;
+BD91;HANGUL SYLLABLE BUB;Lo;0;L;;;;;N;;;;;
+BD92;HANGUL SYLLABLE BUBS;Lo;0;L;;;;;N;;;;;
+BD93;HANGUL SYLLABLE BUS;Lo;0;L;;;;;N;;;;;
+BD94;HANGUL SYLLABLE BUSS;Lo;0;L;;;;;N;;;;;
+BD95;HANGUL SYLLABLE BUNG;Lo;0;L;;;;;N;;;;;
+BD96;HANGUL SYLLABLE BUJ;Lo;0;L;;;;;N;;;;;
+BD97;HANGUL SYLLABLE BUC;Lo;0;L;;;;;N;;;;;
+BD98;HANGUL SYLLABLE BUK;Lo;0;L;;;;;N;;;;;
+BD99;HANGUL SYLLABLE BUT;Lo;0;L;;;;;N;;;;;
+BD9A;HANGUL SYLLABLE BUP;Lo;0;L;;;;;N;;;;;
+BD9B;HANGUL SYLLABLE BUH;Lo;0;L;;;;;N;;;;;
+BD9C;HANGUL SYLLABLE BWEO;Lo;0;L;;;;;N;;;;;
+BD9D;HANGUL SYLLABLE BWEOG;Lo;0;L;;;;;N;;;;;
+BD9E;HANGUL SYLLABLE BWEOGG;Lo;0;L;;;;;N;;;;;
+BD9F;HANGUL SYLLABLE BWEOGS;Lo;0;L;;;;;N;;;;;
+BDA0;HANGUL SYLLABLE BWEON;Lo;0;L;;;;;N;;;;;
+BDA1;HANGUL SYLLABLE BWEONI;Lo;0;L;;;;;N;;;;;
+BDA2;HANGUL SYLLABLE BWEONH;Lo;0;L;;;;;N;;;;;
+BDA3;HANGUL SYLLABLE BWEOD;Lo;0;L;;;;;N;;;;;
+BDA4;HANGUL SYLLABLE BWEOL;Lo;0;L;;;;;N;;;;;
+BDA5;HANGUL SYLLABLE BWEOLG;Lo;0;L;;;;;N;;;;;
+BDA6;HANGUL SYLLABLE BWEOLM;Lo;0;L;;;;;N;;;;;
+BDA7;HANGUL SYLLABLE BWEOLB;Lo;0;L;;;;;N;;;;;
+BDA8;HANGUL SYLLABLE BWEOLS;Lo;0;L;;;;;N;;;;;
+BDA9;HANGUL SYLLABLE BWEOLT;Lo;0;L;;;;;N;;;;;
+BDAA;HANGUL SYLLABLE BWEOLP;Lo;0;L;;;;;N;;;;;
+BDAB;HANGUL SYLLABLE BWEOLH;Lo;0;L;;;;;N;;;;;
+BDAC;HANGUL SYLLABLE BWEOM;Lo;0;L;;;;;N;;;;;
+BDAD;HANGUL SYLLABLE BWEOB;Lo;0;L;;;;;N;;;;;
+BDAE;HANGUL SYLLABLE BWEOBS;Lo;0;L;;;;;N;;;;;
+BDAF;HANGUL SYLLABLE BWEOS;Lo;0;L;;;;;N;;;;;
+BDB0;HANGUL SYLLABLE BWEOSS;Lo;0;L;;;;;N;;;;;
+BDB1;HANGUL SYLLABLE BWEONG;Lo;0;L;;;;;N;;;;;
+BDB2;HANGUL SYLLABLE BWEOJ;Lo;0;L;;;;;N;;;;;
+BDB3;HANGUL SYLLABLE BWEOC;Lo;0;L;;;;;N;;;;;
+BDB4;HANGUL SYLLABLE BWEOK;Lo;0;L;;;;;N;;;;;
+BDB5;HANGUL SYLLABLE BWEOT;Lo;0;L;;;;;N;;;;;
+BDB6;HANGUL SYLLABLE BWEOP;Lo;0;L;;;;;N;;;;;
+BDB7;HANGUL SYLLABLE BWEOH;Lo;0;L;;;;;N;;;;;
+BDB8;HANGUL SYLLABLE BWE;Lo;0;L;;;;;N;;;;;
+BDB9;HANGUL SYLLABLE BWEG;Lo;0;L;;;;;N;;;;;
+BDBA;HANGUL SYLLABLE BWEGG;Lo;0;L;;;;;N;;;;;
+BDBB;HANGUL SYLLABLE BWEGS;Lo;0;L;;;;;N;;;;;
+BDBC;HANGUL SYLLABLE BWEN;Lo;0;L;;;;;N;;;;;
+BDBD;HANGUL SYLLABLE BWENI;Lo;0;L;;;;;N;;;;;
+BDBE;HANGUL SYLLABLE BWENH;Lo;0;L;;;;;N;;;;;
+BDBF;HANGUL SYLLABLE BWED;Lo;0;L;;;;;N;;;;;
+BDC0;HANGUL SYLLABLE BWEL;Lo;0;L;;;;;N;;;;;
+BDC1;HANGUL SYLLABLE BWELG;Lo;0;L;;;;;N;;;;;
+BDC2;HANGUL SYLLABLE BWELM;Lo;0;L;;;;;N;;;;;
+BDC3;HANGUL SYLLABLE BWELB;Lo;0;L;;;;;N;;;;;
+BDC4;HANGUL SYLLABLE BWELS;Lo;0;L;;;;;N;;;;;
+BDC5;HANGUL SYLLABLE BWELT;Lo;0;L;;;;;N;;;;;
+BDC6;HANGUL SYLLABLE BWELP;Lo;0;L;;;;;N;;;;;
+BDC7;HANGUL SYLLABLE BWELH;Lo;0;L;;;;;N;;;;;
+BDC8;HANGUL SYLLABLE BWEM;Lo;0;L;;;;;N;;;;;
+BDC9;HANGUL SYLLABLE BWEB;Lo;0;L;;;;;N;;;;;
+BDCA;HANGUL SYLLABLE BWEBS;Lo;0;L;;;;;N;;;;;
+BDCB;HANGUL SYLLABLE BWES;Lo;0;L;;;;;N;;;;;
+BDCC;HANGUL SYLLABLE BWESS;Lo;0;L;;;;;N;;;;;
+BDCD;HANGUL SYLLABLE BWENG;Lo;0;L;;;;;N;;;;;
+BDCE;HANGUL SYLLABLE BWEJ;Lo;0;L;;;;;N;;;;;
+BDCF;HANGUL SYLLABLE BWEC;Lo;0;L;;;;;N;;;;;
+BDD0;HANGUL SYLLABLE BWEK;Lo;0;L;;;;;N;;;;;
+BDD1;HANGUL SYLLABLE BWET;Lo;0;L;;;;;N;;;;;
+BDD2;HANGUL SYLLABLE BWEP;Lo;0;L;;;;;N;;;;;
+BDD3;HANGUL SYLLABLE BWEH;Lo;0;L;;;;;N;;;;;
+BDD4;HANGUL SYLLABLE BWI;Lo;0;L;;;;;N;;;;;
+BDD5;HANGUL SYLLABLE BWIG;Lo;0;L;;;;;N;;;;;
+BDD6;HANGUL SYLLABLE BWIGG;Lo;0;L;;;;;N;;;;;
+BDD7;HANGUL SYLLABLE BWIGS;Lo;0;L;;;;;N;;;;;
+BDD8;HANGUL SYLLABLE BWIN;Lo;0;L;;;;;N;;;;;
+BDD9;HANGUL SYLLABLE BWINI;Lo;0;L;;;;;N;;;;;
+BDDA;HANGUL SYLLABLE BWINH;Lo;0;L;;;;;N;;;;;
+BDDB;HANGUL SYLLABLE BWID;Lo;0;L;;;;;N;;;;;
+BDDC;HANGUL SYLLABLE BWIL;Lo;0;L;;;;;N;;;;;
+BDDD;HANGUL SYLLABLE BWILG;Lo;0;L;;;;;N;;;;;
+BDDE;HANGUL SYLLABLE BWILM;Lo;0;L;;;;;N;;;;;
+BDDF;HANGUL SYLLABLE BWILB;Lo;0;L;;;;;N;;;;;
+BDE0;HANGUL SYLLABLE BWILS;Lo;0;L;;;;;N;;;;;
+BDE1;HANGUL SYLLABLE BWILT;Lo;0;L;;;;;N;;;;;
+BDE2;HANGUL SYLLABLE BWILP;Lo;0;L;;;;;N;;;;;
+BDE3;HANGUL SYLLABLE BWILH;Lo;0;L;;;;;N;;;;;
+BDE4;HANGUL SYLLABLE BWIM;Lo;0;L;;;;;N;;;;;
+BDE5;HANGUL SYLLABLE BWIB;Lo;0;L;;;;;N;;;;;
+BDE6;HANGUL SYLLABLE BWIBS;Lo;0;L;;;;;N;;;;;
+BDE7;HANGUL SYLLABLE BWIS;Lo;0;L;;;;;N;;;;;
+BDE8;HANGUL SYLLABLE BWISS;Lo;0;L;;;;;N;;;;;
+BDE9;HANGUL SYLLABLE BWING;Lo;0;L;;;;;N;;;;;
+BDEA;HANGUL SYLLABLE BWIJ;Lo;0;L;;;;;N;;;;;
+BDEB;HANGUL SYLLABLE BWIC;Lo;0;L;;;;;N;;;;;
+BDEC;HANGUL SYLLABLE BWIK;Lo;0;L;;;;;N;;;;;
+BDED;HANGUL SYLLABLE BWIT;Lo;0;L;;;;;N;;;;;
+BDEE;HANGUL SYLLABLE BWIP;Lo;0;L;;;;;N;;;;;
+BDEF;HANGUL SYLLABLE BWIH;Lo;0;L;;;;;N;;;;;
+BDF0;HANGUL SYLLABLE BYU;Lo;0;L;;;;;N;;;;;
+BDF1;HANGUL SYLLABLE BYUG;Lo;0;L;;;;;N;;;;;
+BDF2;HANGUL SYLLABLE BYUGG;Lo;0;L;;;;;N;;;;;
+BDF3;HANGUL SYLLABLE BYUGS;Lo;0;L;;;;;N;;;;;
+BDF4;HANGUL SYLLABLE BYUN;Lo;0;L;;;;;N;;;;;
+BDF5;HANGUL SYLLABLE BYUNI;Lo;0;L;;;;;N;;;;;
+BDF6;HANGUL SYLLABLE BYUNH;Lo;0;L;;;;;N;;;;;
+BDF7;HANGUL SYLLABLE BYUD;Lo;0;L;;;;;N;;;;;
+BDF8;HANGUL SYLLABLE BYUL;Lo;0;L;;;;;N;;;;;
+BDF9;HANGUL SYLLABLE BYULG;Lo;0;L;;;;;N;;;;;
+BDFA;HANGUL SYLLABLE BYULM;Lo;0;L;;;;;N;;;;;
+BDFB;HANGUL SYLLABLE BYULB;Lo;0;L;;;;;N;;;;;
+BDFC;HANGUL SYLLABLE BYULS;Lo;0;L;;;;;N;;;;;
+BDFD;HANGUL SYLLABLE BYULT;Lo;0;L;;;;;N;;;;;
+BDFE;HANGUL SYLLABLE BYULP;Lo;0;L;;;;;N;;;;;
+BDFF;HANGUL SYLLABLE BYULH;Lo;0;L;;;;;N;;;;;
+BE00;HANGUL SYLLABLE BYUM;Lo;0;L;;;;;N;;;;;
+BE01;HANGUL SYLLABLE BYUB;Lo;0;L;;;;;N;;;;;
+BE02;HANGUL SYLLABLE BYUBS;Lo;0;L;;;;;N;;;;;
+BE03;HANGUL SYLLABLE BYUS;Lo;0;L;;;;;N;;;;;
+BE04;HANGUL SYLLABLE BYUSS;Lo;0;L;;;;;N;;;;;
+BE05;HANGUL SYLLABLE BYUNG;Lo;0;L;;;;;N;;;;;
+BE06;HANGUL SYLLABLE BYUJ;Lo;0;L;;;;;N;;;;;
+BE07;HANGUL SYLLABLE BYUC;Lo;0;L;;;;;N;;;;;
+BE08;HANGUL SYLLABLE BYUK;Lo;0;L;;;;;N;;;;;
+BE09;HANGUL SYLLABLE BYUT;Lo;0;L;;;;;N;;;;;
+BE0A;HANGUL SYLLABLE BYUP;Lo;0;L;;;;;N;;;;;
+BE0B;HANGUL SYLLABLE BYUH;Lo;0;L;;;;;N;;;;;
+BE0C;HANGUL SYLLABLE BEU;Lo;0;L;;;;;N;;;;;
+BE0D;HANGUL SYLLABLE BEUG;Lo;0;L;;;;;N;;;;;
+BE0E;HANGUL SYLLABLE BEUGG;Lo;0;L;;;;;N;;;;;
+BE0F;HANGUL SYLLABLE BEUGS;Lo;0;L;;;;;N;;;;;
+BE10;HANGUL SYLLABLE BEUN;Lo;0;L;;;;;N;;;;;
+BE11;HANGUL SYLLABLE BEUNI;Lo;0;L;;;;;N;;;;;
+BE12;HANGUL SYLLABLE BEUNH;Lo;0;L;;;;;N;;;;;
+BE13;HANGUL SYLLABLE BEUD;Lo;0;L;;;;;N;;;;;
+BE14;HANGUL SYLLABLE BEUL;Lo;0;L;;;;;N;;;;;
+BE15;HANGUL SYLLABLE BEULG;Lo;0;L;;;;;N;;;;;
+BE16;HANGUL SYLLABLE BEULM;Lo;0;L;;;;;N;;;;;
+BE17;HANGUL SYLLABLE BEULB;Lo;0;L;;;;;N;;;;;
+BE18;HANGUL SYLLABLE BEULS;Lo;0;L;;;;;N;;;;;
+BE19;HANGUL SYLLABLE BEULT;Lo;0;L;;;;;N;;;;;
+BE1A;HANGUL SYLLABLE BEULP;Lo;0;L;;;;;N;;;;;
+BE1B;HANGUL SYLLABLE BEULH;Lo;0;L;;;;;N;;;;;
+BE1C;HANGUL SYLLABLE BEUM;Lo;0;L;;;;;N;;;;;
+BE1D;HANGUL SYLLABLE BEUB;Lo;0;L;;;;;N;;;;;
+BE1E;HANGUL SYLLABLE BEUBS;Lo;0;L;;;;;N;;;;;
+BE1F;HANGUL SYLLABLE BEUS;Lo;0;L;;;;;N;;;;;
+BE20;HANGUL SYLLABLE BEUSS;Lo;0;L;;;;;N;;;;;
+BE21;HANGUL SYLLABLE BEUNG;Lo;0;L;;;;;N;;;;;
+BE22;HANGUL SYLLABLE BEUJ;Lo;0;L;;;;;N;;;;;
+BE23;HANGUL SYLLABLE BEUC;Lo;0;L;;;;;N;;;;;
+BE24;HANGUL SYLLABLE BEUK;Lo;0;L;;;;;N;;;;;
+BE25;HANGUL SYLLABLE BEUT;Lo;0;L;;;;;N;;;;;
+BE26;HANGUL SYLLABLE BEUP;Lo;0;L;;;;;N;;;;;
+BE27;HANGUL SYLLABLE BEUH;Lo;0;L;;;;;N;;;;;
+BE28;HANGUL SYLLABLE BYI;Lo;0;L;;;;;N;;;;;
+BE29;HANGUL SYLLABLE BYIG;Lo;0;L;;;;;N;;;;;
+BE2A;HANGUL SYLLABLE BYIGG;Lo;0;L;;;;;N;;;;;
+BE2B;HANGUL SYLLABLE BYIGS;Lo;0;L;;;;;N;;;;;
+BE2C;HANGUL SYLLABLE BYIN;Lo;0;L;;;;;N;;;;;
+BE2D;HANGUL SYLLABLE BYINI;Lo;0;L;;;;;N;;;;;
+BE2E;HANGUL SYLLABLE BYINH;Lo;0;L;;;;;N;;;;;
+BE2F;HANGUL SYLLABLE BYID;Lo;0;L;;;;;N;;;;;
+BE30;HANGUL SYLLABLE BYIL;Lo;0;L;;;;;N;;;;;
+BE31;HANGUL SYLLABLE BYILG;Lo;0;L;;;;;N;;;;;
+BE32;HANGUL SYLLABLE BYILM;Lo;0;L;;;;;N;;;;;
+BE33;HANGUL SYLLABLE BYILB;Lo;0;L;;;;;N;;;;;
+BE34;HANGUL SYLLABLE BYILS;Lo;0;L;;;;;N;;;;;
+BE35;HANGUL SYLLABLE BYILT;Lo;0;L;;;;;N;;;;;
+BE36;HANGUL SYLLABLE BYILP;Lo;0;L;;;;;N;;;;;
+BE37;HANGUL SYLLABLE BYILH;Lo;0;L;;;;;N;;;;;
+BE38;HANGUL SYLLABLE BYIM;Lo;0;L;;;;;N;;;;;
+BE39;HANGUL SYLLABLE BYIB;Lo;0;L;;;;;N;;;;;
+BE3A;HANGUL SYLLABLE BYIBS;Lo;0;L;;;;;N;;;;;
+BE3B;HANGUL SYLLABLE BYIS;Lo;0;L;;;;;N;;;;;
+BE3C;HANGUL SYLLABLE BYISS;Lo;0;L;;;;;N;;;;;
+BE3D;HANGUL SYLLABLE BYING;Lo;0;L;;;;;N;;;;;
+BE3E;HANGUL SYLLABLE BYIJ;Lo;0;L;;;;;N;;;;;
+BE3F;HANGUL SYLLABLE BYIC;Lo;0;L;;;;;N;;;;;
+BE40;HANGUL SYLLABLE BYIK;Lo;0;L;;;;;N;;;;;
+BE41;HANGUL SYLLABLE BYIT;Lo;0;L;;;;;N;;;;;
+BE42;HANGUL SYLLABLE BYIP;Lo;0;L;;;;;N;;;;;
+BE43;HANGUL SYLLABLE BYIH;Lo;0;L;;;;;N;;;;;
+BE44;HANGUL SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+BE45;HANGUL SYLLABLE BIG;Lo;0;L;;;;;N;;;;;
+BE46;HANGUL SYLLABLE BIGG;Lo;0;L;;;;;N;;;;;
+BE47;HANGUL SYLLABLE BIGS;Lo;0;L;;;;;N;;;;;
+BE48;HANGUL SYLLABLE BIN;Lo;0;L;;;;;N;;;;;
+BE49;HANGUL SYLLABLE BINI;Lo;0;L;;;;;N;;;;;
+BE4A;HANGUL SYLLABLE BINH;Lo;0;L;;;;;N;;;;;
+BE4B;HANGUL SYLLABLE BID;Lo;0;L;;;;;N;;;;;
+BE4C;HANGUL SYLLABLE BIL;Lo;0;L;;;;;N;;;;;
+BE4D;HANGUL SYLLABLE BILG;Lo;0;L;;;;;N;;;;;
+BE4E;HANGUL SYLLABLE BILM;Lo;0;L;;;;;N;;;;;
+BE4F;HANGUL SYLLABLE BILB;Lo;0;L;;;;;N;;;;;
+BE50;HANGUL SYLLABLE BILS;Lo;0;L;;;;;N;;;;;
+BE51;HANGUL SYLLABLE BILT;Lo;0;L;;;;;N;;;;;
+BE52;HANGUL SYLLABLE BILP;Lo;0;L;;;;;N;;;;;
+BE53;HANGUL SYLLABLE BILH;Lo;0;L;;;;;N;;;;;
+BE54;HANGUL SYLLABLE BIM;Lo;0;L;;;;;N;;;;;
+BE55;HANGUL SYLLABLE BIB;Lo;0;L;;;;;N;;;;;
+BE56;HANGUL SYLLABLE BIBS;Lo;0;L;;;;;N;;;;;
+BE57;HANGUL SYLLABLE BIS;Lo;0;L;;;;;N;;;;;
+BE58;HANGUL SYLLABLE BISS;Lo;0;L;;;;;N;;;;;
+BE59;HANGUL SYLLABLE BING;Lo;0;L;;;;;N;;;;;
+BE5A;HANGUL SYLLABLE BIJ;Lo;0;L;;;;;N;;;;;
+BE5B;HANGUL SYLLABLE BIC;Lo;0;L;;;;;N;;;;;
+BE5C;HANGUL SYLLABLE BIK;Lo;0;L;;;;;N;;;;;
+BE5D;HANGUL SYLLABLE BIT;Lo;0;L;;;;;N;;;;;
+BE5E;HANGUL SYLLABLE BIP;Lo;0;L;;;;;N;;;;;
+BE5F;HANGUL SYLLABLE BIH;Lo;0;L;;;;;N;;;;;
+BE60;HANGUL SYLLABLE BBA;Lo;0;L;;;;;N;;;;;
+BE61;HANGUL SYLLABLE BBAG;Lo;0;L;;;;;N;;;;;
+BE62;HANGUL SYLLABLE BBAGG;Lo;0;L;;;;;N;;;;;
+BE63;HANGUL SYLLABLE BBAGS;Lo;0;L;;;;;N;;;;;
+BE64;HANGUL SYLLABLE BBAN;Lo;0;L;;;;;N;;;;;
+BE65;HANGUL SYLLABLE BBANI;Lo;0;L;;;;;N;;;;;
+BE66;HANGUL SYLLABLE BBANH;Lo;0;L;;;;;N;;;;;
+BE67;HANGUL SYLLABLE BBAD;Lo;0;L;;;;;N;;;;;
+BE68;HANGUL SYLLABLE BBAL;Lo;0;L;;;;;N;;;;;
+BE69;HANGUL SYLLABLE BBALG;Lo;0;L;;;;;N;;;;;
+BE6A;HANGUL SYLLABLE BBALM;Lo;0;L;;;;;N;;;;;
+BE6B;HANGUL SYLLABLE BBALB;Lo;0;L;;;;;N;;;;;
+BE6C;HANGUL SYLLABLE BBALS;Lo;0;L;;;;;N;;;;;
+BE6D;HANGUL SYLLABLE BBALT;Lo;0;L;;;;;N;;;;;
+BE6E;HANGUL SYLLABLE BBALP;Lo;0;L;;;;;N;;;;;
+BE6F;HANGUL SYLLABLE BBALH;Lo;0;L;;;;;N;;;;;
+BE70;HANGUL SYLLABLE BBAM;Lo;0;L;;;;;N;;;;;
+BE71;HANGUL SYLLABLE BBAB;Lo;0;L;;;;;N;;;;;
+BE72;HANGUL SYLLABLE BBABS;Lo;0;L;;;;;N;;;;;
+BE73;HANGUL SYLLABLE BBAS;Lo;0;L;;;;;N;;;;;
+BE74;HANGUL SYLLABLE BBASS;Lo;0;L;;;;;N;;;;;
+BE75;HANGUL SYLLABLE BBANG;Lo;0;L;;;;;N;;;;;
+BE76;HANGUL SYLLABLE BBAJ;Lo;0;L;;;;;N;;;;;
+BE77;HANGUL SYLLABLE BBAC;Lo;0;L;;;;;N;;;;;
+BE78;HANGUL SYLLABLE BBAK;Lo;0;L;;;;;N;;;;;
+BE79;HANGUL SYLLABLE BBAT;Lo;0;L;;;;;N;;;;;
+BE7A;HANGUL SYLLABLE BBAP;Lo;0;L;;;;;N;;;;;
+BE7B;HANGUL SYLLABLE BBAH;Lo;0;L;;;;;N;;;;;
+BE7C;HANGUL SYLLABLE BBAE;Lo;0;L;;;;;N;;;;;
+BE7D;HANGUL SYLLABLE BBAEG;Lo;0;L;;;;;N;;;;;
+BE7E;HANGUL SYLLABLE BBAEGG;Lo;0;L;;;;;N;;;;;
+BE7F;HANGUL SYLLABLE BBAEGS;Lo;0;L;;;;;N;;;;;
+BE80;HANGUL SYLLABLE BBAEN;Lo;0;L;;;;;N;;;;;
+BE81;HANGUL SYLLABLE BBAENI;Lo;0;L;;;;;N;;;;;
+BE82;HANGUL SYLLABLE BBAENH;Lo;0;L;;;;;N;;;;;
+BE83;HANGUL SYLLABLE BBAED;Lo;0;L;;;;;N;;;;;
+BE84;HANGUL SYLLABLE BBAEL;Lo;0;L;;;;;N;;;;;
+BE85;HANGUL SYLLABLE BBAELG;Lo;0;L;;;;;N;;;;;
+BE86;HANGUL SYLLABLE BBAELM;Lo;0;L;;;;;N;;;;;
+BE87;HANGUL SYLLABLE BBAELB;Lo;0;L;;;;;N;;;;;
+BE88;HANGUL SYLLABLE BBAELS;Lo;0;L;;;;;N;;;;;
+BE89;HANGUL SYLLABLE BBAELT;Lo;0;L;;;;;N;;;;;
+BE8A;HANGUL SYLLABLE BBAELP;Lo;0;L;;;;;N;;;;;
+BE8B;HANGUL SYLLABLE BBAELH;Lo;0;L;;;;;N;;;;;
+BE8C;HANGUL SYLLABLE BBAEM;Lo;0;L;;;;;N;;;;;
+BE8D;HANGUL SYLLABLE BBAEB;Lo;0;L;;;;;N;;;;;
+BE8E;HANGUL SYLLABLE BBAEBS;Lo;0;L;;;;;N;;;;;
+BE8F;HANGUL SYLLABLE BBAES;Lo;0;L;;;;;N;;;;;
+BE90;HANGUL SYLLABLE BBAESS;Lo;0;L;;;;;N;;;;;
+BE91;HANGUL SYLLABLE BBAENG;Lo;0;L;;;;;N;;;;;
+BE92;HANGUL SYLLABLE BBAEJ;Lo;0;L;;;;;N;;;;;
+BE93;HANGUL SYLLABLE BBAEC;Lo;0;L;;;;;N;;;;;
+BE94;HANGUL SYLLABLE BBAEK;Lo;0;L;;;;;N;;;;;
+BE95;HANGUL SYLLABLE BBAET;Lo;0;L;;;;;N;;;;;
+BE96;HANGUL SYLLABLE BBAEP;Lo;0;L;;;;;N;;;;;
+BE97;HANGUL SYLLABLE BBAEH;Lo;0;L;;;;;N;;;;;
+BE98;HANGUL SYLLABLE BBYA;Lo;0;L;;;;;N;;;;;
+BE99;HANGUL SYLLABLE BBYAG;Lo;0;L;;;;;N;;;;;
+BE9A;HANGUL SYLLABLE BBYAGG;Lo;0;L;;;;;N;;;;;
+BE9B;HANGUL SYLLABLE BBYAGS;Lo;0;L;;;;;N;;;;;
+BE9C;HANGUL SYLLABLE BBYAN;Lo;0;L;;;;;N;;;;;
+BE9D;HANGUL SYLLABLE BBYANI;Lo;0;L;;;;;N;;;;;
+BE9E;HANGUL SYLLABLE BBYANH;Lo;0;L;;;;;N;;;;;
+BE9F;HANGUL SYLLABLE BBYAD;Lo;0;L;;;;;N;;;;;
+BEA0;HANGUL SYLLABLE BBYAL;Lo;0;L;;;;;N;;;;;
+BEA1;HANGUL SYLLABLE BBYALG;Lo;0;L;;;;;N;;;;;
+BEA2;HANGUL SYLLABLE BBYALM;Lo;0;L;;;;;N;;;;;
+BEA3;HANGUL SYLLABLE BBYALB;Lo;0;L;;;;;N;;;;;
+BEA4;HANGUL SYLLABLE BBYALS;Lo;0;L;;;;;N;;;;;
+BEA5;HANGUL SYLLABLE BBYALT;Lo;0;L;;;;;N;;;;;
+BEA6;HANGUL SYLLABLE BBYALP;Lo;0;L;;;;;N;;;;;
+BEA7;HANGUL SYLLABLE BBYALH;Lo;0;L;;;;;N;;;;;
+BEA8;HANGUL SYLLABLE BBYAM;Lo;0;L;;;;;N;;;;;
+BEA9;HANGUL SYLLABLE BBYAB;Lo;0;L;;;;;N;;;;;
+BEAA;HANGUL SYLLABLE BBYABS;Lo;0;L;;;;;N;;;;;
+BEAB;HANGUL SYLLABLE BBYAS;Lo;0;L;;;;;N;;;;;
+BEAC;HANGUL SYLLABLE BBYASS;Lo;0;L;;;;;N;;;;;
+BEAD;HANGUL SYLLABLE BBYANG;Lo;0;L;;;;;N;;;;;
+BEAE;HANGUL SYLLABLE BBYAJ;Lo;0;L;;;;;N;;;;;
+BEAF;HANGUL SYLLABLE BBYAC;Lo;0;L;;;;;N;;;;;
+BEB0;HANGUL SYLLABLE BBYAK;Lo;0;L;;;;;N;;;;;
+BEB1;HANGUL SYLLABLE BBYAT;Lo;0;L;;;;;N;;;;;
+BEB2;HANGUL SYLLABLE BBYAP;Lo;0;L;;;;;N;;;;;
+BEB3;HANGUL SYLLABLE BBYAH;Lo;0;L;;;;;N;;;;;
+BEB4;HANGUL SYLLABLE BBYAE;Lo;0;L;;;;;N;;;;;
+BEB5;HANGUL SYLLABLE BBYAEG;Lo;0;L;;;;;N;;;;;
+BEB6;HANGUL SYLLABLE BBYAEGG;Lo;0;L;;;;;N;;;;;
+BEB7;HANGUL SYLLABLE BBYAEGS;Lo;0;L;;;;;N;;;;;
+BEB8;HANGUL SYLLABLE BBYAEN;Lo;0;L;;;;;N;;;;;
+BEB9;HANGUL SYLLABLE BBYAENI;Lo;0;L;;;;;N;;;;;
+BEBA;HANGUL SYLLABLE BBYAENH;Lo;0;L;;;;;N;;;;;
+BEBB;HANGUL SYLLABLE BBYAED;Lo;0;L;;;;;N;;;;;
+BEBC;HANGUL SYLLABLE BBYAEL;Lo;0;L;;;;;N;;;;;
+BEBD;HANGUL SYLLABLE BBYAELG;Lo;0;L;;;;;N;;;;;
+BEBE;HANGUL SYLLABLE BBYAELM;Lo;0;L;;;;;N;;;;;
+BEBF;HANGUL SYLLABLE BBYAELB;Lo;0;L;;;;;N;;;;;
+BEC0;HANGUL SYLLABLE BBYAELS;Lo;0;L;;;;;N;;;;;
+BEC1;HANGUL SYLLABLE BBYAELT;Lo;0;L;;;;;N;;;;;
+BEC2;HANGUL SYLLABLE BBYAELP;Lo;0;L;;;;;N;;;;;
+BEC3;HANGUL SYLLABLE BBYAELH;Lo;0;L;;;;;N;;;;;
+BEC4;HANGUL SYLLABLE BBYAEM;Lo;0;L;;;;;N;;;;;
+BEC5;HANGUL SYLLABLE BBYAEB;Lo;0;L;;;;;N;;;;;
+BEC6;HANGUL SYLLABLE BBYAEBS;Lo;0;L;;;;;N;;;;;
+BEC7;HANGUL SYLLABLE BBYAES;Lo;0;L;;;;;N;;;;;
+BEC8;HANGUL SYLLABLE BBYAESS;Lo;0;L;;;;;N;;;;;
+BEC9;HANGUL SYLLABLE BBYAENG;Lo;0;L;;;;;N;;;;;
+BECA;HANGUL SYLLABLE BBYAEJ;Lo;0;L;;;;;N;;;;;
+BECB;HANGUL SYLLABLE BBYAEC;Lo;0;L;;;;;N;;;;;
+BECC;HANGUL SYLLABLE BBYAEK;Lo;0;L;;;;;N;;;;;
+BECD;HANGUL SYLLABLE BBYAET;Lo;0;L;;;;;N;;;;;
+BECE;HANGUL SYLLABLE BBYAEP;Lo;0;L;;;;;N;;;;;
+BECF;HANGUL SYLLABLE BBYAEH;Lo;0;L;;;;;N;;;;;
+BED0;HANGUL SYLLABLE BBEO;Lo;0;L;;;;;N;;;;;
+BED1;HANGUL SYLLABLE BBEOG;Lo;0;L;;;;;N;;;;;
+BED2;HANGUL SYLLABLE BBEOGG;Lo;0;L;;;;;N;;;;;
+BED3;HANGUL SYLLABLE BBEOGS;Lo;0;L;;;;;N;;;;;
+BED4;HANGUL SYLLABLE BBEON;Lo;0;L;;;;;N;;;;;
+BED5;HANGUL SYLLABLE BBEONI;Lo;0;L;;;;;N;;;;;
+BED6;HANGUL SYLLABLE BBEONH;Lo;0;L;;;;;N;;;;;
+BED7;HANGUL SYLLABLE BBEOD;Lo;0;L;;;;;N;;;;;
+BED8;HANGUL SYLLABLE BBEOL;Lo;0;L;;;;;N;;;;;
+BED9;HANGUL SYLLABLE BBEOLG;Lo;0;L;;;;;N;;;;;
+BEDA;HANGUL SYLLABLE BBEOLM;Lo;0;L;;;;;N;;;;;
+BEDB;HANGUL SYLLABLE BBEOLB;Lo;0;L;;;;;N;;;;;
+BEDC;HANGUL SYLLABLE BBEOLS;Lo;0;L;;;;;N;;;;;
+BEDD;HANGUL SYLLABLE BBEOLT;Lo;0;L;;;;;N;;;;;
+BEDE;HANGUL SYLLABLE BBEOLP;Lo;0;L;;;;;N;;;;;
+BEDF;HANGUL SYLLABLE BBEOLH;Lo;0;L;;;;;N;;;;;
+BEE0;HANGUL SYLLABLE BBEOM;Lo;0;L;;;;;N;;;;;
+BEE1;HANGUL SYLLABLE BBEOB;Lo;0;L;;;;;N;;;;;
+BEE2;HANGUL SYLLABLE BBEOBS;Lo;0;L;;;;;N;;;;;
+BEE3;HANGUL SYLLABLE BBEOS;Lo;0;L;;;;;N;;;;;
+BEE4;HANGUL SYLLABLE BBEOSS;Lo;0;L;;;;;N;;;;;
+BEE5;HANGUL SYLLABLE BBEONG;Lo;0;L;;;;;N;;;;;
+BEE6;HANGUL SYLLABLE BBEOJ;Lo;0;L;;;;;N;;;;;
+BEE7;HANGUL SYLLABLE BBEOC;Lo;0;L;;;;;N;;;;;
+BEE8;HANGUL SYLLABLE BBEOK;Lo;0;L;;;;;N;;;;;
+BEE9;HANGUL SYLLABLE BBEOT;Lo;0;L;;;;;N;;;;;
+BEEA;HANGUL SYLLABLE BBEOP;Lo;0;L;;;;;N;;;;;
+BEEB;HANGUL SYLLABLE BBEOH;Lo;0;L;;;;;N;;;;;
+BEEC;HANGUL SYLLABLE BBE;Lo;0;L;;;;;N;;;;;
+BEED;HANGUL SYLLABLE BBEG;Lo;0;L;;;;;N;;;;;
+BEEE;HANGUL SYLLABLE BBEGG;Lo;0;L;;;;;N;;;;;
+BEEF;HANGUL SYLLABLE BBEGS;Lo;0;L;;;;;N;;;;;
+BEF0;HANGUL SYLLABLE BBEN;Lo;0;L;;;;;N;;;;;
+BEF1;HANGUL SYLLABLE BBENI;Lo;0;L;;;;;N;;;;;
+BEF2;HANGUL SYLLABLE BBENH;Lo;0;L;;;;;N;;;;;
+BEF3;HANGUL SYLLABLE BBED;Lo;0;L;;;;;N;;;;;
+BEF4;HANGUL SYLLABLE BBEL;Lo;0;L;;;;;N;;;;;
+BEF5;HANGUL SYLLABLE BBELG;Lo;0;L;;;;;N;;;;;
+BEF6;HANGUL SYLLABLE BBELM;Lo;0;L;;;;;N;;;;;
+BEF7;HANGUL SYLLABLE BBELB;Lo;0;L;;;;;N;;;;;
+BEF8;HANGUL SYLLABLE BBELS;Lo;0;L;;;;;N;;;;;
+BEF9;HANGUL SYLLABLE BBELT;Lo;0;L;;;;;N;;;;;
+BEFA;HANGUL SYLLABLE BBELP;Lo;0;L;;;;;N;;;;;
+BEFB;HANGUL SYLLABLE BBELH;Lo;0;L;;;;;N;;;;;
+BEFC;HANGUL SYLLABLE BBEM;Lo;0;L;;;;;N;;;;;
+BEFD;HANGUL SYLLABLE BBEB;Lo;0;L;;;;;N;;;;;
+BEFE;HANGUL SYLLABLE BBEBS;Lo;0;L;;;;;N;;;;;
+BEFF;HANGUL SYLLABLE BBES;Lo;0;L;;;;;N;;;;;
+BF00;HANGUL SYLLABLE BBESS;Lo;0;L;;;;;N;;;;;
+BF01;HANGUL SYLLABLE BBENG;Lo;0;L;;;;;N;;;;;
+BF02;HANGUL SYLLABLE BBEJ;Lo;0;L;;;;;N;;;;;
+BF03;HANGUL SYLLABLE BBEC;Lo;0;L;;;;;N;;;;;
+BF04;HANGUL SYLLABLE BBEK;Lo;0;L;;;;;N;;;;;
+BF05;HANGUL SYLLABLE BBET;Lo;0;L;;;;;N;;;;;
+BF06;HANGUL SYLLABLE BBEP;Lo;0;L;;;;;N;;;;;
+BF07;HANGUL SYLLABLE BBEH;Lo;0;L;;;;;N;;;;;
+BF08;HANGUL SYLLABLE BBYEO;Lo;0;L;;;;;N;;;;;
+BF09;HANGUL SYLLABLE BBYEOG;Lo;0;L;;;;;N;;;;;
+BF0A;HANGUL SYLLABLE BBYEOGG;Lo;0;L;;;;;N;;;;;
+BF0B;HANGUL SYLLABLE BBYEOGS;Lo;0;L;;;;;N;;;;;
+BF0C;HANGUL SYLLABLE BBYEON;Lo;0;L;;;;;N;;;;;
+BF0D;HANGUL SYLLABLE BBYEONI;Lo;0;L;;;;;N;;;;;
+BF0E;HANGUL SYLLABLE BBYEONH;Lo;0;L;;;;;N;;;;;
+BF0F;HANGUL SYLLABLE BBYEOD;Lo;0;L;;;;;N;;;;;
+BF10;HANGUL SYLLABLE BBYEOL;Lo;0;L;;;;;N;;;;;
+BF11;HANGUL SYLLABLE BBYEOLG;Lo;0;L;;;;;N;;;;;
+BF12;HANGUL SYLLABLE BBYEOLM;Lo;0;L;;;;;N;;;;;
+BF13;HANGUL SYLLABLE BBYEOLB;Lo;0;L;;;;;N;;;;;
+BF14;HANGUL SYLLABLE BBYEOLS;Lo;0;L;;;;;N;;;;;
+BF15;HANGUL SYLLABLE BBYEOLT;Lo;0;L;;;;;N;;;;;
+BF16;HANGUL SYLLABLE BBYEOLP;Lo;0;L;;;;;N;;;;;
+BF17;HANGUL SYLLABLE BBYEOLH;Lo;0;L;;;;;N;;;;;
+BF18;HANGUL SYLLABLE BBYEOM;Lo;0;L;;;;;N;;;;;
+BF19;HANGUL SYLLABLE BBYEOB;Lo;0;L;;;;;N;;;;;
+BF1A;HANGUL SYLLABLE BBYEOBS;Lo;0;L;;;;;N;;;;;
+BF1B;HANGUL SYLLABLE BBYEOS;Lo;0;L;;;;;N;;;;;
+BF1C;HANGUL SYLLABLE BBYEOSS;Lo;0;L;;;;;N;;;;;
+BF1D;HANGUL SYLLABLE BBYEONG;Lo;0;L;;;;;N;;;;;
+BF1E;HANGUL SYLLABLE BBYEOJ;Lo;0;L;;;;;N;;;;;
+BF1F;HANGUL SYLLABLE BBYEOC;Lo;0;L;;;;;N;;;;;
+BF20;HANGUL SYLLABLE BBYEOK;Lo;0;L;;;;;N;;;;;
+BF21;HANGUL SYLLABLE BBYEOT;Lo;0;L;;;;;N;;;;;
+BF22;HANGUL SYLLABLE BBYEOP;Lo;0;L;;;;;N;;;;;
+BF23;HANGUL SYLLABLE BBYEOH;Lo;0;L;;;;;N;;;;;
+BF24;HANGUL SYLLABLE BBYE;Lo;0;L;;;;;N;;;;;
+BF25;HANGUL SYLLABLE BBYEG;Lo;0;L;;;;;N;;;;;
+BF26;HANGUL SYLLABLE BBYEGG;Lo;0;L;;;;;N;;;;;
+BF27;HANGUL SYLLABLE BBYEGS;Lo;0;L;;;;;N;;;;;
+BF28;HANGUL SYLLABLE BBYEN;Lo;0;L;;;;;N;;;;;
+BF29;HANGUL SYLLABLE BBYENI;Lo;0;L;;;;;N;;;;;
+BF2A;HANGUL SYLLABLE BBYENH;Lo;0;L;;;;;N;;;;;
+BF2B;HANGUL SYLLABLE BBYED;Lo;0;L;;;;;N;;;;;
+BF2C;HANGUL SYLLABLE BBYEL;Lo;0;L;;;;;N;;;;;
+BF2D;HANGUL SYLLABLE BBYELG;Lo;0;L;;;;;N;;;;;
+BF2E;HANGUL SYLLABLE BBYELM;Lo;0;L;;;;;N;;;;;
+BF2F;HANGUL SYLLABLE BBYELB;Lo;0;L;;;;;N;;;;;
+BF30;HANGUL SYLLABLE BBYELS;Lo;0;L;;;;;N;;;;;
+BF31;HANGUL SYLLABLE BBYELT;Lo;0;L;;;;;N;;;;;
+BF32;HANGUL SYLLABLE BBYELP;Lo;0;L;;;;;N;;;;;
+BF33;HANGUL SYLLABLE BBYELH;Lo;0;L;;;;;N;;;;;
+BF34;HANGUL SYLLABLE BBYEM;Lo;0;L;;;;;N;;;;;
+BF35;HANGUL SYLLABLE BBYEB;Lo;0;L;;;;;N;;;;;
+BF36;HANGUL SYLLABLE BBYEBS;Lo;0;L;;;;;N;;;;;
+BF37;HANGUL SYLLABLE BBYES;Lo;0;L;;;;;N;;;;;
+BF38;HANGUL SYLLABLE BBYESS;Lo;0;L;;;;;N;;;;;
+BF39;HANGUL SYLLABLE BBYENG;Lo;0;L;;;;;N;;;;;
+BF3A;HANGUL SYLLABLE BBYEJ;Lo;0;L;;;;;N;;;;;
+BF3B;HANGUL SYLLABLE BBYEC;Lo;0;L;;;;;N;;;;;
+BF3C;HANGUL SYLLABLE BBYEK;Lo;0;L;;;;;N;;;;;
+BF3D;HANGUL SYLLABLE BBYET;Lo;0;L;;;;;N;;;;;
+BF3E;HANGUL SYLLABLE BBYEP;Lo;0;L;;;;;N;;;;;
+BF3F;HANGUL SYLLABLE BBYEH;Lo;0;L;;;;;N;;;;;
+BF40;HANGUL SYLLABLE BBO;Lo;0;L;;;;;N;;;;;
+BF41;HANGUL SYLLABLE BBOG;Lo;0;L;;;;;N;;;;;
+BF42;HANGUL SYLLABLE BBOGG;Lo;0;L;;;;;N;;;;;
+BF43;HANGUL SYLLABLE BBOGS;Lo;0;L;;;;;N;;;;;
+BF44;HANGUL SYLLABLE BBON;Lo;0;L;;;;;N;;;;;
+BF45;HANGUL SYLLABLE BBONI;Lo;0;L;;;;;N;;;;;
+BF46;HANGUL SYLLABLE BBONH;Lo;0;L;;;;;N;;;;;
+BF47;HANGUL SYLLABLE BBOD;Lo;0;L;;;;;N;;;;;
+BF48;HANGUL SYLLABLE BBOL;Lo;0;L;;;;;N;;;;;
+BF49;HANGUL SYLLABLE BBOLG;Lo;0;L;;;;;N;;;;;
+BF4A;HANGUL SYLLABLE BBOLM;Lo;0;L;;;;;N;;;;;
+BF4B;HANGUL SYLLABLE BBOLB;Lo;0;L;;;;;N;;;;;
+BF4C;HANGUL SYLLABLE BBOLS;Lo;0;L;;;;;N;;;;;
+BF4D;HANGUL SYLLABLE BBOLT;Lo;0;L;;;;;N;;;;;
+BF4E;HANGUL SYLLABLE BBOLP;Lo;0;L;;;;;N;;;;;
+BF4F;HANGUL SYLLABLE BBOLH;Lo;0;L;;;;;N;;;;;
+BF50;HANGUL SYLLABLE BBOM;Lo;0;L;;;;;N;;;;;
+BF51;HANGUL SYLLABLE BBOB;Lo;0;L;;;;;N;;;;;
+BF52;HANGUL SYLLABLE BBOBS;Lo;0;L;;;;;N;;;;;
+BF53;HANGUL SYLLABLE BBOS;Lo;0;L;;;;;N;;;;;
+BF54;HANGUL SYLLABLE BBOSS;Lo;0;L;;;;;N;;;;;
+BF55;HANGUL SYLLABLE BBONG;Lo;0;L;;;;;N;;;;;
+BF56;HANGUL SYLLABLE BBOJ;Lo;0;L;;;;;N;;;;;
+BF57;HANGUL SYLLABLE BBOC;Lo;0;L;;;;;N;;;;;
+BF58;HANGUL SYLLABLE BBOK;Lo;0;L;;;;;N;;;;;
+BF59;HANGUL SYLLABLE BBOT;Lo;0;L;;;;;N;;;;;
+BF5A;HANGUL SYLLABLE BBOP;Lo;0;L;;;;;N;;;;;
+BF5B;HANGUL SYLLABLE BBOH;Lo;0;L;;;;;N;;;;;
+BF5C;HANGUL SYLLABLE BBWA;Lo;0;L;;;;;N;;;;;
+BF5D;HANGUL SYLLABLE BBWAG;Lo;0;L;;;;;N;;;;;
+BF5E;HANGUL SYLLABLE BBWAGG;Lo;0;L;;;;;N;;;;;
+BF5F;HANGUL SYLLABLE BBWAGS;Lo;0;L;;;;;N;;;;;
+BF60;HANGUL SYLLABLE BBWAN;Lo;0;L;;;;;N;;;;;
+BF61;HANGUL SYLLABLE BBWANI;Lo;0;L;;;;;N;;;;;
+BF62;HANGUL SYLLABLE BBWANH;Lo;0;L;;;;;N;;;;;
+BF63;HANGUL SYLLABLE BBWAD;Lo;0;L;;;;;N;;;;;
+BF64;HANGUL SYLLABLE BBWAL;Lo;0;L;;;;;N;;;;;
+BF65;HANGUL SYLLABLE BBWALG;Lo;0;L;;;;;N;;;;;
+BF66;HANGUL SYLLABLE BBWALM;Lo;0;L;;;;;N;;;;;
+BF67;HANGUL SYLLABLE BBWALB;Lo;0;L;;;;;N;;;;;
+BF68;HANGUL SYLLABLE BBWALS;Lo;0;L;;;;;N;;;;;
+BF69;HANGUL SYLLABLE BBWALT;Lo;0;L;;;;;N;;;;;
+BF6A;HANGUL SYLLABLE BBWALP;Lo;0;L;;;;;N;;;;;
+BF6B;HANGUL SYLLABLE BBWALH;Lo;0;L;;;;;N;;;;;
+BF6C;HANGUL SYLLABLE BBWAM;Lo;0;L;;;;;N;;;;;
+BF6D;HANGUL SYLLABLE BBWAB;Lo;0;L;;;;;N;;;;;
+BF6E;HANGUL SYLLABLE BBWABS;Lo;0;L;;;;;N;;;;;
+BF6F;HANGUL SYLLABLE BBWAS;Lo;0;L;;;;;N;;;;;
+BF70;HANGUL SYLLABLE BBWASS;Lo;0;L;;;;;N;;;;;
+BF71;HANGUL SYLLABLE BBWANG;Lo;0;L;;;;;N;;;;;
+BF72;HANGUL SYLLABLE BBWAJ;Lo;0;L;;;;;N;;;;;
+BF73;HANGUL SYLLABLE BBWAC;Lo;0;L;;;;;N;;;;;
+BF74;HANGUL SYLLABLE BBWAK;Lo;0;L;;;;;N;;;;;
+BF75;HANGUL SYLLABLE BBWAT;Lo;0;L;;;;;N;;;;;
+BF76;HANGUL SYLLABLE BBWAP;Lo;0;L;;;;;N;;;;;
+BF77;HANGUL SYLLABLE BBWAH;Lo;0;L;;;;;N;;;;;
+BF78;HANGUL SYLLABLE BBWAE;Lo;0;L;;;;;N;;;;;
+BF79;HANGUL SYLLABLE BBWAEG;Lo;0;L;;;;;N;;;;;
+BF7A;HANGUL SYLLABLE BBWAEGG;Lo;0;L;;;;;N;;;;;
+BF7B;HANGUL SYLLABLE BBWAEGS;Lo;0;L;;;;;N;;;;;
+BF7C;HANGUL SYLLABLE BBWAEN;Lo;0;L;;;;;N;;;;;
+BF7D;HANGUL SYLLABLE BBWAENI;Lo;0;L;;;;;N;;;;;
+BF7E;HANGUL SYLLABLE BBWAENH;Lo;0;L;;;;;N;;;;;
+BF7F;HANGUL SYLLABLE BBWAED;Lo;0;L;;;;;N;;;;;
+BF80;HANGUL SYLLABLE BBWAEL;Lo;0;L;;;;;N;;;;;
+BF81;HANGUL SYLLABLE BBWAELG;Lo;0;L;;;;;N;;;;;
+BF82;HANGUL SYLLABLE BBWAELM;Lo;0;L;;;;;N;;;;;
+BF83;HANGUL SYLLABLE BBWAELB;Lo;0;L;;;;;N;;;;;
+BF84;HANGUL SYLLABLE BBWAELS;Lo;0;L;;;;;N;;;;;
+BF85;HANGUL SYLLABLE BBWAELT;Lo;0;L;;;;;N;;;;;
+BF86;HANGUL SYLLABLE BBWAELP;Lo;0;L;;;;;N;;;;;
+BF87;HANGUL SYLLABLE BBWAELH;Lo;0;L;;;;;N;;;;;
+BF88;HANGUL SYLLABLE BBWAEM;Lo;0;L;;;;;N;;;;;
+BF89;HANGUL SYLLABLE BBWAEB;Lo;0;L;;;;;N;;;;;
+BF8A;HANGUL SYLLABLE BBWAEBS;Lo;0;L;;;;;N;;;;;
+BF8B;HANGUL SYLLABLE BBWAES;Lo;0;L;;;;;N;;;;;
+BF8C;HANGUL SYLLABLE BBWAESS;Lo;0;L;;;;;N;;;;;
+BF8D;HANGUL SYLLABLE BBWAENG;Lo;0;L;;;;;N;;;;;
+BF8E;HANGUL SYLLABLE BBWAEJ;Lo;0;L;;;;;N;;;;;
+BF8F;HANGUL SYLLABLE BBWAEC;Lo;0;L;;;;;N;;;;;
+BF90;HANGUL SYLLABLE BBWAEK;Lo;0;L;;;;;N;;;;;
+BF91;HANGUL SYLLABLE BBWAET;Lo;0;L;;;;;N;;;;;
+BF92;HANGUL SYLLABLE BBWAEP;Lo;0;L;;;;;N;;;;;
+BF93;HANGUL SYLLABLE BBWAEH;Lo;0;L;;;;;N;;;;;
+BF94;HANGUL SYLLABLE BBOE;Lo;0;L;;;;;N;;;;;
+BF95;HANGUL SYLLABLE BBOEG;Lo;0;L;;;;;N;;;;;
+BF96;HANGUL SYLLABLE BBOEGG;Lo;0;L;;;;;N;;;;;
+BF97;HANGUL SYLLABLE BBOEGS;Lo;0;L;;;;;N;;;;;
+BF98;HANGUL SYLLABLE BBOEN;Lo;0;L;;;;;N;;;;;
+BF99;HANGUL SYLLABLE BBOENI;Lo;0;L;;;;;N;;;;;
+BF9A;HANGUL SYLLABLE BBOENH;Lo;0;L;;;;;N;;;;;
+BF9B;HANGUL SYLLABLE BBOED;Lo;0;L;;;;;N;;;;;
+BF9C;HANGUL SYLLABLE BBOEL;Lo;0;L;;;;;N;;;;;
+BF9D;HANGUL SYLLABLE BBOELG;Lo;0;L;;;;;N;;;;;
+BF9E;HANGUL SYLLABLE BBOELM;Lo;0;L;;;;;N;;;;;
+BF9F;HANGUL SYLLABLE BBOELB;Lo;0;L;;;;;N;;;;;
+BFA0;HANGUL SYLLABLE BBOELS;Lo;0;L;;;;;N;;;;;
+BFA1;HANGUL SYLLABLE BBOELT;Lo;0;L;;;;;N;;;;;
+BFA2;HANGUL SYLLABLE BBOELP;Lo;0;L;;;;;N;;;;;
+BFA3;HANGUL SYLLABLE BBOELH;Lo;0;L;;;;;N;;;;;
+BFA4;HANGUL SYLLABLE BBOEM;Lo;0;L;;;;;N;;;;;
+BFA5;HANGUL SYLLABLE BBOEB;Lo;0;L;;;;;N;;;;;
+BFA6;HANGUL SYLLABLE BBOEBS;Lo;0;L;;;;;N;;;;;
+BFA7;HANGUL SYLLABLE BBOES;Lo;0;L;;;;;N;;;;;
+BFA8;HANGUL SYLLABLE BBOESS;Lo;0;L;;;;;N;;;;;
+BFA9;HANGUL SYLLABLE BBOENG;Lo;0;L;;;;;N;;;;;
+BFAA;HANGUL SYLLABLE BBOEJ;Lo;0;L;;;;;N;;;;;
+BFAB;HANGUL SYLLABLE BBOEC;Lo;0;L;;;;;N;;;;;
+BFAC;HANGUL SYLLABLE BBOEK;Lo;0;L;;;;;N;;;;;
+BFAD;HANGUL SYLLABLE BBOET;Lo;0;L;;;;;N;;;;;
+BFAE;HANGUL SYLLABLE BBOEP;Lo;0;L;;;;;N;;;;;
+BFAF;HANGUL SYLLABLE BBOEH;Lo;0;L;;;;;N;;;;;
+BFB0;HANGUL SYLLABLE BBYO;Lo;0;L;;;;;N;;;;;
+BFB1;HANGUL SYLLABLE BBYOG;Lo;0;L;;;;;N;;;;;
+BFB2;HANGUL SYLLABLE BBYOGG;Lo;0;L;;;;;N;;;;;
+BFB3;HANGUL SYLLABLE BBYOGS;Lo;0;L;;;;;N;;;;;
+BFB4;HANGUL SYLLABLE BBYON;Lo;0;L;;;;;N;;;;;
+BFB5;HANGUL SYLLABLE BBYONI;Lo;0;L;;;;;N;;;;;
+BFB6;HANGUL SYLLABLE BBYONH;Lo;0;L;;;;;N;;;;;
+BFB7;HANGUL SYLLABLE BBYOD;Lo;0;L;;;;;N;;;;;
+BFB8;HANGUL SYLLABLE BBYOL;Lo;0;L;;;;;N;;;;;
+BFB9;HANGUL SYLLABLE BBYOLG;Lo;0;L;;;;;N;;;;;
+BFBA;HANGUL SYLLABLE BBYOLM;Lo;0;L;;;;;N;;;;;
+BFBB;HANGUL SYLLABLE BBYOLB;Lo;0;L;;;;;N;;;;;
+BFBC;HANGUL SYLLABLE BBYOLS;Lo;0;L;;;;;N;;;;;
+BFBD;HANGUL SYLLABLE BBYOLT;Lo;0;L;;;;;N;;;;;
+BFBE;HANGUL SYLLABLE BBYOLP;Lo;0;L;;;;;N;;;;;
+BFBF;HANGUL SYLLABLE BBYOLH;Lo;0;L;;;;;N;;;;;
+BFC0;HANGUL SYLLABLE BBYOM;Lo;0;L;;;;;N;;;;;
+BFC1;HANGUL SYLLABLE BBYOB;Lo;0;L;;;;;N;;;;;
+BFC2;HANGUL SYLLABLE BBYOBS;Lo;0;L;;;;;N;;;;;
+BFC3;HANGUL SYLLABLE BBYOS;Lo;0;L;;;;;N;;;;;
+BFC4;HANGUL SYLLABLE BBYOSS;Lo;0;L;;;;;N;;;;;
+BFC5;HANGUL SYLLABLE BBYONG;Lo;0;L;;;;;N;;;;;
+BFC6;HANGUL SYLLABLE BBYOJ;Lo;0;L;;;;;N;;;;;
+BFC7;HANGUL SYLLABLE BBYOC;Lo;0;L;;;;;N;;;;;
+BFC8;HANGUL SYLLABLE BBYOK;Lo;0;L;;;;;N;;;;;
+BFC9;HANGUL SYLLABLE BBYOT;Lo;0;L;;;;;N;;;;;
+BFCA;HANGUL SYLLABLE BBYOP;Lo;0;L;;;;;N;;;;;
+BFCB;HANGUL SYLLABLE BBYOH;Lo;0;L;;;;;N;;;;;
+BFCC;HANGUL SYLLABLE BBU;Lo;0;L;;;;;N;;;;;
+BFCD;HANGUL SYLLABLE BBUG;Lo;0;L;;;;;N;;;;;
+BFCE;HANGUL SYLLABLE BBUGG;Lo;0;L;;;;;N;;;;;
+BFCF;HANGUL SYLLABLE BBUGS;Lo;0;L;;;;;N;;;;;
+BFD0;HANGUL SYLLABLE BBUN;Lo;0;L;;;;;N;;;;;
+BFD1;HANGUL SYLLABLE BBUNI;Lo;0;L;;;;;N;;;;;
+BFD2;HANGUL SYLLABLE BBUNH;Lo;0;L;;;;;N;;;;;
+BFD3;HANGUL SYLLABLE BBUD;Lo;0;L;;;;;N;;;;;
+BFD4;HANGUL SYLLABLE BBUL;Lo;0;L;;;;;N;;;;;
+BFD5;HANGUL SYLLABLE BBULG;Lo;0;L;;;;;N;;;;;
+BFD6;HANGUL SYLLABLE BBULM;Lo;0;L;;;;;N;;;;;
+BFD7;HANGUL SYLLABLE BBULB;Lo;0;L;;;;;N;;;;;
+BFD8;HANGUL SYLLABLE BBULS;Lo;0;L;;;;;N;;;;;
+BFD9;HANGUL SYLLABLE BBULT;Lo;0;L;;;;;N;;;;;
+BFDA;HANGUL SYLLABLE BBULP;Lo;0;L;;;;;N;;;;;
+BFDB;HANGUL SYLLABLE BBULH;Lo;0;L;;;;;N;;;;;
+BFDC;HANGUL SYLLABLE BBUM;Lo;0;L;;;;;N;;;;;
+BFDD;HANGUL SYLLABLE BBUB;Lo;0;L;;;;;N;;;;;
+BFDE;HANGUL SYLLABLE BBUBS;Lo;0;L;;;;;N;;;;;
+BFDF;HANGUL SYLLABLE BBUS;Lo;0;L;;;;;N;;;;;
+BFE0;HANGUL SYLLABLE BBUSS;Lo;0;L;;;;;N;;;;;
+BFE1;HANGUL SYLLABLE BBUNG;Lo;0;L;;;;;N;;;;;
+BFE2;HANGUL SYLLABLE BBUJ;Lo;0;L;;;;;N;;;;;
+BFE3;HANGUL SYLLABLE BBUC;Lo;0;L;;;;;N;;;;;
+BFE4;HANGUL SYLLABLE BBUK;Lo;0;L;;;;;N;;;;;
+BFE5;HANGUL SYLLABLE BBUT;Lo;0;L;;;;;N;;;;;
+BFE6;HANGUL SYLLABLE BBUP;Lo;0;L;;;;;N;;;;;
+BFE7;HANGUL SYLLABLE BBUH;Lo;0;L;;;;;N;;;;;
+BFE8;HANGUL SYLLABLE BBWEO;Lo;0;L;;;;;N;;;;;
+BFE9;HANGUL SYLLABLE BBWEOG;Lo;0;L;;;;;N;;;;;
+BFEA;HANGUL SYLLABLE BBWEOGG;Lo;0;L;;;;;N;;;;;
+BFEB;HANGUL SYLLABLE BBWEOGS;Lo;0;L;;;;;N;;;;;
+BFEC;HANGUL SYLLABLE BBWEON;Lo;0;L;;;;;N;;;;;
+BFED;HANGUL SYLLABLE BBWEONI;Lo;0;L;;;;;N;;;;;
+BFEE;HANGUL SYLLABLE BBWEONH;Lo;0;L;;;;;N;;;;;
+BFEF;HANGUL SYLLABLE BBWEOD;Lo;0;L;;;;;N;;;;;
+BFF0;HANGUL SYLLABLE BBWEOL;Lo;0;L;;;;;N;;;;;
+BFF1;HANGUL SYLLABLE BBWEOLG;Lo;0;L;;;;;N;;;;;
+BFF2;HANGUL SYLLABLE BBWEOLM;Lo;0;L;;;;;N;;;;;
+BFF3;HANGUL SYLLABLE BBWEOLB;Lo;0;L;;;;;N;;;;;
+BFF4;HANGUL SYLLABLE BBWEOLS;Lo;0;L;;;;;N;;;;;
+BFF5;HANGUL SYLLABLE BBWEOLT;Lo;0;L;;;;;N;;;;;
+BFF6;HANGUL SYLLABLE BBWEOLP;Lo;0;L;;;;;N;;;;;
+BFF7;HANGUL SYLLABLE BBWEOLH;Lo;0;L;;;;;N;;;;;
+BFF8;HANGUL SYLLABLE BBWEOM;Lo;0;L;;;;;N;;;;;
+BFF9;HANGUL SYLLABLE BBWEOB;Lo;0;L;;;;;N;;;;;
+BFFA;HANGUL SYLLABLE BBWEOBS;Lo;0;L;;;;;N;;;;;
+BFFB;HANGUL SYLLABLE BBWEOS;Lo;0;L;;;;;N;;;;;
+BFFC;HANGUL SYLLABLE BBWEOSS;Lo;0;L;;;;;N;;;;;
+BFFD;HANGUL SYLLABLE BBWEONG;Lo;0;L;;;;;N;;;;;
+BFFE;HANGUL SYLLABLE BBWEOJ;Lo;0;L;;;;;N;;;;;
+BFFF;HANGUL SYLLABLE BBWEOC;Lo;0;L;;;;;N;;;;;
+C000;HANGUL SYLLABLE BBWEOK;Lo;0;L;;;;;N;;;;;
+C001;HANGUL SYLLABLE BBWEOT;Lo;0;L;;;;;N;;;;;
+C002;HANGUL SYLLABLE BBWEOP;Lo;0;L;;;;;N;;;;;
+C003;HANGUL SYLLABLE BBWEOH;Lo;0;L;;;;;N;;;;;
+C004;HANGUL SYLLABLE BBWE;Lo;0;L;;;;;N;;;;;
+C005;HANGUL SYLLABLE BBWEG;Lo;0;L;;;;;N;;;;;
+C006;HANGUL SYLLABLE BBWEGG;Lo;0;L;;;;;N;;;;;
+C007;HANGUL SYLLABLE BBWEGS;Lo;0;L;;;;;N;;;;;
+C008;HANGUL SYLLABLE BBWEN;Lo;0;L;;;;;N;;;;;
+C009;HANGUL SYLLABLE BBWENI;Lo;0;L;;;;;N;;;;;
+C00A;HANGUL SYLLABLE BBWENH;Lo;0;L;;;;;N;;;;;
+C00B;HANGUL SYLLABLE BBWED;Lo;0;L;;;;;N;;;;;
+C00C;HANGUL SYLLABLE BBWEL;Lo;0;L;;;;;N;;;;;
+C00D;HANGUL SYLLABLE BBWELG;Lo;0;L;;;;;N;;;;;
+C00E;HANGUL SYLLABLE BBWELM;Lo;0;L;;;;;N;;;;;
+C00F;HANGUL SYLLABLE BBWELB;Lo;0;L;;;;;N;;;;;
+C010;HANGUL SYLLABLE BBWELS;Lo;0;L;;;;;N;;;;;
+C011;HANGUL SYLLABLE BBWELT;Lo;0;L;;;;;N;;;;;
+C012;HANGUL SYLLABLE BBWELP;Lo;0;L;;;;;N;;;;;
+C013;HANGUL SYLLABLE BBWELH;Lo;0;L;;;;;N;;;;;
+C014;HANGUL SYLLABLE BBWEM;Lo;0;L;;;;;N;;;;;
+C015;HANGUL SYLLABLE BBWEB;Lo;0;L;;;;;N;;;;;
+C016;HANGUL SYLLABLE BBWEBS;Lo;0;L;;;;;N;;;;;
+C017;HANGUL SYLLABLE BBWES;Lo;0;L;;;;;N;;;;;
+C018;HANGUL SYLLABLE BBWESS;Lo;0;L;;;;;N;;;;;
+C019;HANGUL SYLLABLE BBWENG;Lo;0;L;;;;;N;;;;;
+C01A;HANGUL SYLLABLE BBWEJ;Lo;0;L;;;;;N;;;;;
+C01B;HANGUL SYLLABLE BBWEC;Lo;0;L;;;;;N;;;;;
+C01C;HANGUL SYLLABLE BBWEK;Lo;0;L;;;;;N;;;;;
+C01D;HANGUL SYLLABLE BBWET;Lo;0;L;;;;;N;;;;;
+C01E;HANGUL SYLLABLE BBWEP;Lo;0;L;;;;;N;;;;;
+C01F;HANGUL SYLLABLE BBWEH;Lo;0;L;;;;;N;;;;;
+C020;HANGUL SYLLABLE BBWI;Lo;0;L;;;;;N;;;;;
+C021;HANGUL SYLLABLE BBWIG;Lo;0;L;;;;;N;;;;;
+C022;HANGUL SYLLABLE BBWIGG;Lo;0;L;;;;;N;;;;;
+C023;HANGUL SYLLABLE BBWIGS;Lo;0;L;;;;;N;;;;;
+C024;HANGUL SYLLABLE BBWIN;Lo;0;L;;;;;N;;;;;
+C025;HANGUL SYLLABLE BBWINI;Lo;0;L;;;;;N;;;;;
+C026;HANGUL SYLLABLE BBWINH;Lo;0;L;;;;;N;;;;;
+C027;HANGUL SYLLABLE BBWID;Lo;0;L;;;;;N;;;;;
+C028;HANGUL SYLLABLE BBWIL;Lo;0;L;;;;;N;;;;;
+C029;HANGUL SYLLABLE BBWILG;Lo;0;L;;;;;N;;;;;
+C02A;HANGUL SYLLABLE BBWILM;Lo;0;L;;;;;N;;;;;
+C02B;HANGUL SYLLABLE BBWILB;Lo;0;L;;;;;N;;;;;
+C02C;HANGUL SYLLABLE BBWILS;Lo;0;L;;;;;N;;;;;
+C02D;HANGUL SYLLABLE BBWILT;Lo;0;L;;;;;N;;;;;
+C02E;HANGUL SYLLABLE BBWILP;Lo;0;L;;;;;N;;;;;
+C02F;HANGUL SYLLABLE BBWILH;Lo;0;L;;;;;N;;;;;
+C030;HANGUL SYLLABLE BBWIM;Lo;0;L;;;;;N;;;;;
+C031;HANGUL SYLLABLE BBWIB;Lo;0;L;;;;;N;;;;;
+C032;HANGUL SYLLABLE BBWIBS;Lo;0;L;;;;;N;;;;;
+C033;HANGUL SYLLABLE BBWIS;Lo;0;L;;;;;N;;;;;
+C034;HANGUL SYLLABLE BBWISS;Lo;0;L;;;;;N;;;;;
+C035;HANGUL SYLLABLE BBWING;Lo;0;L;;;;;N;;;;;
+C036;HANGUL SYLLABLE BBWIJ;Lo;0;L;;;;;N;;;;;
+C037;HANGUL SYLLABLE BBWIC;Lo;0;L;;;;;N;;;;;
+C038;HANGUL SYLLABLE BBWIK;Lo;0;L;;;;;N;;;;;
+C039;HANGUL SYLLABLE BBWIT;Lo;0;L;;;;;N;;;;;
+C03A;HANGUL SYLLABLE BBWIP;Lo;0;L;;;;;N;;;;;
+C03B;HANGUL SYLLABLE BBWIH;Lo;0;L;;;;;N;;;;;
+C03C;HANGUL SYLLABLE BBYU;Lo;0;L;;;;;N;;;;;
+C03D;HANGUL SYLLABLE BBYUG;Lo;0;L;;;;;N;;;;;
+C03E;HANGUL SYLLABLE BBYUGG;Lo;0;L;;;;;N;;;;;
+C03F;HANGUL SYLLABLE BBYUGS;Lo;0;L;;;;;N;;;;;
+C040;HANGUL SYLLABLE BBYUN;Lo;0;L;;;;;N;;;;;
+C041;HANGUL SYLLABLE BBYUNI;Lo;0;L;;;;;N;;;;;
+C042;HANGUL SYLLABLE BBYUNH;Lo;0;L;;;;;N;;;;;
+C043;HANGUL SYLLABLE BBYUD;Lo;0;L;;;;;N;;;;;
+C044;HANGUL SYLLABLE BBYUL;Lo;0;L;;;;;N;;;;;
+C045;HANGUL SYLLABLE BBYULG;Lo;0;L;;;;;N;;;;;
+C046;HANGUL SYLLABLE BBYULM;Lo;0;L;;;;;N;;;;;
+C047;HANGUL SYLLABLE BBYULB;Lo;0;L;;;;;N;;;;;
+C048;HANGUL SYLLABLE BBYULS;Lo;0;L;;;;;N;;;;;
+C049;HANGUL SYLLABLE BBYULT;Lo;0;L;;;;;N;;;;;
+C04A;HANGUL SYLLABLE BBYULP;Lo;0;L;;;;;N;;;;;
+C04B;HANGUL SYLLABLE BBYULH;Lo;0;L;;;;;N;;;;;
+C04C;HANGUL SYLLABLE BBYUM;Lo;0;L;;;;;N;;;;;
+C04D;HANGUL SYLLABLE BBYUB;Lo;0;L;;;;;N;;;;;
+C04E;HANGUL SYLLABLE BBYUBS;Lo;0;L;;;;;N;;;;;
+C04F;HANGUL SYLLABLE BBYUS;Lo;0;L;;;;;N;;;;;
+C050;HANGUL SYLLABLE BBYUSS;Lo;0;L;;;;;N;;;;;
+C051;HANGUL SYLLABLE BBYUNG;Lo;0;L;;;;;N;;;;;
+C052;HANGUL SYLLABLE BBYUJ;Lo;0;L;;;;;N;;;;;
+C053;HANGUL SYLLABLE BBYUC;Lo;0;L;;;;;N;;;;;
+C054;HANGUL SYLLABLE BBYUK;Lo;0;L;;;;;N;;;;;
+C055;HANGUL SYLLABLE BBYUT;Lo;0;L;;;;;N;;;;;
+C056;HANGUL SYLLABLE BBYUP;Lo;0;L;;;;;N;;;;;
+C057;HANGUL SYLLABLE BBYUH;Lo;0;L;;;;;N;;;;;
+C058;HANGUL SYLLABLE BBEU;Lo;0;L;;;;;N;;;;;
+C059;HANGUL SYLLABLE BBEUG;Lo;0;L;;;;;N;;;;;
+C05A;HANGUL SYLLABLE BBEUGG;Lo;0;L;;;;;N;;;;;
+C05B;HANGUL SYLLABLE BBEUGS;Lo;0;L;;;;;N;;;;;
+C05C;HANGUL SYLLABLE BBEUN;Lo;0;L;;;;;N;;;;;
+C05D;HANGUL SYLLABLE BBEUNI;Lo;0;L;;;;;N;;;;;
+C05E;HANGUL SYLLABLE BBEUNH;Lo;0;L;;;;;N;;;;;
+C05F;HANGUL SYLLABLE BBEUD;Lo;0;L;;;;;N;;;;;
+C060;HANGUL SYLLABLE BBEUL;Lo;0;L;;;;;N;;;;;
+C061;HANGUL SYLLABLE BBEULG;Lo;0;L;;;;;N;;;;;
+C062;HANGUL SYLLABLE BBEULM;Lo;0;L;;;;;N;;;;;
+C063;HANGUL SYLLABLE BBEULB;Lo;0;L;;;;;N;;;;;
+C064;HANGUL SYLLABLE BBEULS;Lo;0;L;;;;;N;;;;;
+C065;HANGUL SYLLABLE BBEULT;Lo;0;L;;;;;N;;;;;
+C066;HANGUL SYLLABLE BBEULP;Lo;0;L;;;;;N;;;;;
+C067;HANGUL SYLLABLE BBEULH;Lo;0;L;;;;;N;;;;;
+C068;HANGUL SYLLABLE BBEUM;Lo;0;L;;;;;N;;;;;
+C069;HANGUL SYLLABLE BBEUB;Lo;0;L;;;;;N;;;;;
+C06A;HANGUL SYLLABLE BBEUBS;Lo;0;L;;;;;N;;;;;
+C06B;HANGUL SYLLABLE BBEUS;Lo;0;L;;;;;N;;;;;
+C06C;HANGUL SYLLABLE BBEUSS;Lo;0;L;;;;;N;;;;;
+C06D;HANGUL SYLLABLE BBEUNG;Lo;0;L;;;;;N;;;;;
+C06E;HANGUL SYLLABLE BBEUJ;Lo;0;L;;;;;N;;;;;
+C06F;HANGUL SYLLABLE BBEUC;Lo;0;L;;;;;N;;;;;
+C070;HANGUL SYLLABLE BBEUK;Lo;0;L;;;;;N;;;;;
+C071;HANGUL SYLLABLE BBEUT;Lo;0;L;;;;;N;;;;;
+C072;HANGUL SYLLABLE BBEUP;Lo;0;L;;;;;N;;;;;
+C073;HANGUL SYLLABLE BBEUH;Lo;0;L;;;;;N;;;;;
+C074;HANGUL SYLLABLE BBYI;Lo;0;L;;;;;N;;;;;
+C075;HANGUL SYLLABLE BBYIG;Lo;0;L;;;;;N;;;;;
+C076;HANGUL SYLLABLE BBYIGG;Lo;0;L;;;;;N;;;;;
+C077;HANGUL SYLLABLE BBYIGS;Lo;0;L;;;;;N;;;;;
+C078;HANGUL SYLLABLE BBYIN;Lo;0;L;;;;;N;;;;;
+C079;HANGUL SYLLABLE BBYINI;Lo;0;L;;;;;N;;;;;
+C07A;HANGUL SYLLABLE BBYINH;Lo;0;L;;;;;N;;;;;
+C07B;HANGUL SYLLABLE BBYID;Lo;0;L;;;;;N;;;;;
+C07C;HANGUL SYLLABLE BBYIL;Lo;0;L;;;;;N;;;;;
+C07D;HANGUL SYLLABLE BBYILG;Lo;0;L;;;;;N;;;;;
+C07E;HANGUL SYLLABLE BBYILM;Lo;0;L;;;;;N;;;;;
+C07F;HANGUL SYLLABLE BBYILB;Lo;0;L;;;;;N;;;;;
+C080;HANGUL SYLLABLE BBYILS;Lo;0;L;;;;;N;;;;;
+C081;HANGUL SYLLABLE BBYILT;Lo;0;L;;;;;N;;;;;
+C082;HANGUL SYLLABLE BBYILP;Lo;0;L;;;;;N;;;;;
+C083;HANGUL SYLLABLE BBYILH;Lo;0;L;;;;;N;;;;;
+C084;HANGUL SYLLABLE BBYIM;Lo;0;L;;;;;N;;;;;
+C085;HANGUL SYLLABLE BBYIB;Lo;0;L;;;;;N;;;;;
+C086;HANGUL SYLLABLE BBYIBS;Lo;0;L;;;;;N;;;;;
+C087;HANGUL SYLLABLE BBYIS;Lo;0;L;;;;;N;;;;;
+C088;HANGUL SYLLABLE BBYISS;Lo;0;L;;;;;N;;;;;
+C089;HANGUL SYLLABLE BBYING;Lo;0;L;;;;;N;;;;;
+C08A;HANGUL SYLLABLE BBYIJ;Lo;0;L;;;;;N;;;;;
+C08B;HANGUL SYLLABLE BBYIC;Lo;0;L;;;;;N;;;;;
+C08C;HANGUL SYLLABLE BBYIK;Lo;0;L;;;;;N;;;;;
+C08D;HANGUL SYLLABLE BBYIT;Lo;0;L;;;;;N;;;;;
+C08E;HANGUL SYLLABLE BBYIP;Lo;0;L;;;;;N;;;;;
+C08F;HANGUL SYLLABLE BBYIH;Lo;0;L;;;;;N;;;;;
+C090;HANGUL SYLLABLE BBI;Lo;0;L;;;;;N;;;;;
+C091;HANGUL SYLLABLE BBIG;Lo;0;L;;;;;N;;;;;
+C092;HANGUL SYLLABLE BBIGG;Lo;0;L;;;;;N;;;;;
+C093;HANGUL SYLLABLE BBIGS;Lo;0;L;;;;;N;;;;;
+C094;HANGUL SYLLABLE BBIN;Lo;0;L;;;;;N;;;;;
+C095;HANGUL SYLLABLE BBINI;Lo;0;L;;;;;N;;;;;
+C096;HANGUL SYLLABLE BBINH;Lo;0;L;;;;;N;;;;;
+C097;HANGUL SYLLABLE BBID;Lo;0;L;;;;;N;;;;;
+C098;HANGUL SYLLABLE BBIL;Lo;0;L;;;;;N;;;;;
+C099;HANGUL SYLLABLE BBILG;Lo;0;L;;;;;N;;;;;
+C09A;HANGUL SYLLABLE BBILM;Lo;0;L;;;;;N;;;;;
+C09B;HANGUL SYLLABLE BBILB;Lo;0;L;;;;;N;;;;;
+C09C;HANGUL SYLLABLE BBILS;Lo;0;L;;;;;N;;;;;
+C09D;HANGUL SYLLABLE BBILT;Lo;0;L;;;;;N;;;;;
+C09E;HANGUL SYLLABLE BBILP;Lo;0;L;;;;;N;;;;;
+C09F;HANGUL SYLLABLE BBILH;Lo;0;L;;;;;N;;;;;
+C0A0;HANGUL SYLLABLE BBIM;Lo;0;L;;;;;N;;;;;
+C0A1;HANGUL SYLLABLE BBIB;Lo;0;L;;;;;N;;;;;
+C0A2;HANGUL SYLLABLE BBIBS;Lo;0;L;;;;;N;;;;;
+C0A3;HANGUL SYLLABLE BBIS;Lo;0;L;;;;;N;;;;;
+C0A4;HANGUL SYLLABLE BBISS;Lo;0;L;;;;;N;;;;;
+C0A5;HANGUL SYLLABLE BBING;Lo;0;L;;;;;N;;;;;
+C0A6;HANGUL SYLLABLE BBIJ;Lo;0;L;;;;;N;;;;;
+C0A7;HANGUL SYLLABLE BBIC;Lo;0;L;;;;;N;;;;;
+C0A8;HANGUL SYLLABLE BBIK;Lo;0;L;;;;;N;;;;;
+C0A9;HANGUL SYLLABLE BBIT;Lo;0;L;;;;;N;;;;;
+C0AA;HANGUL SYLLABLE BBIP;Lo;0;L;;;;;N;;;;;
+C0AB;HANGUL SYLLABLE BBIH;Lo;0;L;;;;;N;;;;;
+C0AC;HANGUL SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+C0AD;HANGUL SYLLABLE SAG;Lo;0;L;;;;;N;;;;;
+C0AE;HANGUL SYLLABLE SAGG;Lo;0;L;;;;;N;;;;;
+C0AF;HANGUL SYLLABLE SAGS;Lo;0;L;;;;;N;;;;;
+C0B0;HANGUL SYLLABLE SAN;Lo;0;L;;;;;N;;;;;
+C0B1;HANGUL SYLLABLE SANI;Lo;0;L;;;;;N;;;;;
+C0B2;HANGUL SYLLABLE SANH;Lo;0;L;;;;;N;;;;;
+C0B3;HANGUL SYLLABLE SAD;Lo;0;L;;;;;N;;;;;
+C0B4;HANGUL SYLLABLE SAL;Lo;0;L;;;;;N;;;;;
+C0B5;HANGUL SYLLABLE SALG;Lo;0;L;;;;;N;;;;;
+C0B6;HANGUL SYLLABLE SALM;Lo;0;L;;;;;N;;;;;
+C0B7;HANGUL SYLLABLE SALB;Lo;0;L;;;;;N;;;;;
+C0B8;HANGUL SYLLABLE SALS;Lo;0;L;;;;;N;;;;;
+C0B9;HANGUL SYLLABLE SALT;Lo;0;L;;;;;N;;;;;
+C0BA;HANGUL SYLLABLE SALP;Lo;0;L;;;;;N;;;;;
+C0BB;HANGUL SYLLABLE SALH;Lo;0;L;;;;;N;;;;;
+C0BC;HANGUL SYLLABLE SAM;Lo;0;L;;;;;N;;;;;
+C0BD;HANGUL SYLLABLE SAB;Lo;0;L;;;;;N;;;;;
+C0BE;HANGUL SYLLABLE SABS;Lo;0;L;;;;;N;;;;;
+C0BF;HANGUL SYLLABLE SAS;Lo;0;L;;;;;N;;;;;
+C0C0;HANGUL SYLLABLE SASS;Lo;0;L;;;;;N;;;;;
+C0C1;HANGUL SYLLABLE SANG;Lo;0;L;;;;;N;;;;;
+C0C2;HANGUL SYLLABLE SAJ;Lo;0;L;;;;;N;;;;;
+C0C3;HANGUL SYLLABLE SAC;Lo;0;L;;;;;N;;;;;
+C0C4;HANGUL SYLLABLE SAK;Lo;0;L;;;;;N;;;;;
+C0C5;HANGUL SYLLABLE SAT;Lo;0;L;;;;;N;;;;;
+C0C6;HANGUL SYLLABLE SAP;Lo;0;L;;;;;N;;;;;
+C0C7;HANGUL SYLLABLE SAH;Lo;0;L;;;;;N;;;;;
+C0C8;HANGUL SYLLABLE SAE;Lo;0;L;;;;;N;;;;;
+C0C9;HANGUL SYLLABLE SAEG;Lo;0;L;;;;;N;;;;;
+C0CA;HANGUL SYLLABLE SAEGG;Lo;0;L;;;;;N;;;;;
+C0CB;HANGUL SYLLABLE SAEGS;Lo;0;L;;;;;N;;;;;
+C0CC;HANGUL SYLLABLE SAEN;Lo;0;L;;;;;N;;;;;
+C0CD;HANGUL SYLLABLE SAENI;Lo;0;L;;;;;N;;;;;
+C0CE;HANGUL SYLLABLE SAENH;Lo;0;L;;;;;N;;;;;
+C0CF;HANGUL SYLLABLE SAED;Lo;0;L;;;;;N;;;;;
+C0D0;HANGUL SYLLABLE SAEL;Lo;0;L;;;;;N;;;;;
+C0D1;HANGUL SYLLABLE SAELG;Lo;0;L;;;;;N;;;;;
+C0D2;HANGUL SYLLABLE SAELM;Lo;0;L;;;;;N;;;;;
+C0D3;HANGUL SYLLABLE SAELB;Lo;0;L;;;;;N;;;;;
+C0D4;HANGUL SYLLABLE SAELS;Lo;0;L;;;;;N;;;;;
+C0D5;HANGUL SYLLABLE SAELT;Lo;0;L;;;;;N;;;;;
+C0D6;HANGUL SYLLABLE SAELP;Lo;0;L;;;;;N;;;;;
+C0D7;HANGUL SYLLABLE SAELH;Lo;0;L;;;;;N;;;;;
+C0D8;HANGUL SYLLABLE SAEM;Lo;0;L;;;;;N;;;;;
+C0D9;HANGUL SYLLABLE SAEB;Lo;0;L;;;;;N;;;;;
+C0DA;HANGUL SYLLABLE SAEBS;Lo;0;L;;;;;N;;;;;
+C0DB;HANGUL SYLLABLE SAES;Lo;0;L;;;;;N;;;;;
+C0DC;HANGUL SYLLABLE SAESS;Lo;0;L;;;;;N;;;;;
+C0DD;HANGUL SYLLABLE SAENG;Lo;0;L;;;;;N;;;;;
+C0DE;HANGUL SYLLABLE SAEJ;Lo;0;L;;;;;N;;;;;
+C0DF;HANGUL SYLLABLE SAEC;Lo;0;L;;;;;N;;;;;
+C0E0;HANGUL SYLLABLE SAEK;Lo;0;L;;;;;N;;;;;
+C0E1;HANGUL SYLLABLE SAET;Lo;0;L;;;;;N;;;;;
+C0E2;HANGUL SYLLABLE SAEP;Lo;0;L;;;;;N;;;;;
+C0E3;HANGUL SYLLABLE SAEH;Lo;0;L;;;;;N;;;;;
+C0E4;HANGUL SYLLABLE SYA;Lo;0;L;;;;;N;;;;;
+C0E5;HANGUL SYLLABLE SYAG;Lo;0;L;;;;;N;;;;;
+C0E6;HANGUL SYLLABLE SYAGG;Lo;0;L;;;;;N;;;;;
+C0E7;HANGUL SYLLABLE SYAGS;Lo;0;L;;;;;N;;;;;
+C0E8;HANGUL SYLLABLE SYAN;Lo;0;L;;;;;N;;;;;
+C0E9;HANGUL SYLLABLE SYANI;Lo;0;L;;;;;N;;;;;
+C0EA;HANGUL SYLLABLE SYANH;Lo;0;L;;;;;N;;;;;
+C0EB;HANGUL SYLLABLE SYAD;Lo;0;L;;;;;N;;;;;
+C0EC;HANGUL SYLLABLE SYAL;Lo;0;L;;;;;N;;;;;
+C0ED;HANGUL SYLLABLE SYALG;Lo;0;L;;;;;N;;;;;
+C0EE;HANGUL SYLLABLE SYALM;Lo;0;L;;;;;N;;;;;
+C0EF;HANGUL SYLLABLE SYALB;Lo;0;L;;;;;N;;;;;
+C0F0;HANGUL SYLLABLE SYALS;Lo;0;L;;;;;N;;;;;
+C0F1;HANGUL SYLLABLE SYALT;Lo;0;L;;;;;N;;;;;
+C0F2;HANGUL SYLLABLE SYALP;Lo;0;L;;;;;N;;;;;
+C0F3;HANGUL SYLLABLE SYALH;Lo;0;L;;;;;N;;;;;
+C0F4;HANGUL SYLLABLE SYAM;Lo;0;L;;;;;N;;;;;
+C0F5;HANGUL SYLLABLE SYAB;Lo;0;L;;;;;N;;;;;
+C0F6;HANGUL SYLLABLE SYABS;Lo;0;L;;;;;N;;;;;
+C0F7;HANGUL SYLLABLE SYAS;Lo;0;L;;;;;N;;;;;
+C0F8;HANGUL SYLLABLE SYASS;Lo;0;L;;;;;N;;;;;
+C0F9;HANGUL SYLLABLE SYANG;Lo;0;L;;;;;N;;;;;
+C0FA;HANGUL SYLLABLE SYAJ;Lo;0;L;;;;;N;;;;;
+C0FB;HANGUL SYLLABLE SYAC;Lo;0;L;;;;;N;;;;;
+C0FC;HANGUL SYLLABLE SYAK;Lo;0;L;;;;;N;;;;;
+C0FD;HANGUL SYLLABLE SYAT;Lo;0;L;;;;;N;;;;;
+C0FE;HANGUL SYLLABLE SYAP;Lo;0;L;;;;;N;;;;;
+C0FF;HANGUL SYLLABLE SYAH;Lo;0;L;;;;;N;;;;;
+C100;HANGUL SYLLABLE SYAE;Lo;0;L;;;;;N;;;;;
+C101;HANGUL SYLLABLE SYAEG;Lo;0;L;;;;;N;;;;;
+C102;HANGUL SYLLABLE SYAEGG;Lo;0;L;;;;;N;;;;;
+C103;HANGUL SYLLABLE SYAEGS;Lo;0;L;;;;;N;;;;;
+C104;HANGUL SYLLABLE SYAEN;Lo;0;L;;;;;N;;;;;
+C105;HANGUL SYLLABLE SYAENI;Lo;0;L;;;;;N;;;;;
+C106;HANGUL SYLLABLE SYAENH;Lo;0;L;;;;;N;;;;;
+C107;HANGUL SYLLABLE SYAED;Lo;0;L;;;;;N;;;;;
+C108;HANGUL SYLLABLE SYAEL;Lo;0;L;;;;;N;;;;;
+C109;HANGUL SYLLABLE SYAELG;Lo;0;L;;;;;N;;;;;
+C10A;HANGUL SYLLABLE SYAELM;Lo;0;L;;;;;N;;;;;
+C10B;HANGUL SYLLABLE SYAELB;Lo;0;L;;;;;N;;;;;
+C10C;HANGUL SYLLABLE SYAELS;Lo;0;L;;;;;N;;;;;
+C10D;HANGUL SYLLABLE SYAELT;Lo;0;L;;;;;N;;;;;
+C10E;HANGUL SYLLABLE SYAELP;Lo;0;L;;;;;N;;;;;
+C10F;HANGUL SYLLABLE SYAELH;Lo;0;L;;;;;N;;;;;
+C110;HANGUL SYLLABLE SYAEM;Lo;0;L;;;;;N;;;;;
+C111;HANGUL SYLLABLE SYAEB;Lo;0;L;;;;;N;;;;;
+C112;HANGUL SYLLABLE SYAEBS;Lo;0;L;;;;;N;;;;;
+C113;HANGUL SYLLABLE SYAES;Lo;0;L;;;;;N;;;;;
+C114;HANGUL SYLLABLE SYAESS;Lo;0;L;;;;;N;;;;;
+C115;HANGUL SYLLABLE SYAENG;Lo;0;L;;;;;N;;;;;
+C116;HANGUL SYLLABLE SYAEJ;Lo;0;L;;;;;N;;;;;
+C117;HANGUL SYLLABLE SYAEC;Lo;0;L;;;;;N;;;;;
+C118;HANGUL SYLLABLE SYAEK;Lo;0;L;;;;;N;;;;;
+C119;HANGUL SYLLABLE SYAET;Lo;0;L;;;;;N;;;;;
+C11A;HANGUL SYLLABLE SYAEP;Lo;0;L;;;;;N;;;;;
+C11B;HANGUL SYLLABLE SYAEH;Lo;0;L;;;;;N;;;;;
+C11C;HANGUL SYLLABLE SEO;Lo;0;L;;;;;N;;;;;
+C11D;HANGUL SYLLABLE SEOG;Lo;0;L;;;;;N;;;;;
+C11E;HANGUL SYLLABLE SEOGG;Lo;0;L;;;;;N;;;;;
+C11F;HANGUL SYLLABLE SEOGS;Lo;0;L;;;;;N;;;;;
+C120;HANGUL SYLLABLE SEON;Lo;0;L;;;;;N;;;;;
+C121;HANGUL SYLLABLE SEONI;Lo;0;L;;;;;N;;;;;
+C122;HANGUL SYLLABLE SEONH;Lo;0;L;;;;;N;;;;;
+C123;HANGUL SYLLABLE SEOD;Lo;0;L;;;;;N;;;;;
+C124;HANGUL SYLLABLE SEOL;Lo;0;L;;;;;N;;;;;
+C125;HANGUL SYLLABLE SEOLG;Lo;0;L;;;;;N;;;;;
+C126;HANGUL SYLLABLE SEOLM;Lo;0;L;;;;;N;;;;;
+C127;HANGUL SYLLABLE SEOLB;Lo;0;L;;;;;N;;;;;
+C128;HANGUL SYLLABLE SEOLS;Lo;0;L;;;;;N;;;;;
+C129;HANGUL SYLLABLE SEOLT;Lo;0;L;;;;;N;;;;;
+C12A;HANGUL SYLLABLE SEOLP;Lo;0;L;;;;;N;;;;;
+C12B;HANGUL SYLLABLE SEOLH;Lo;0;L;;;;;N;;;;;
+C12C;HANGUL SYLLABLE SEOM;Lo;0;L;;;;;N;;;;;
+C12D;HANGUL SYLLABLE SEOB;Lo;0;L;;;;;N;;;;;
+C12E;HANGUL SYLLABLE SEOBS;Lo;0;L;;;;;N;;;;;
+C12F;HANGUL SYLLABLE SEOS;Lo;0;L;;;;;N;;;;;
+C130;HANGUL SYLLABLE SEOSS;Lo;0;L;;;;;N;;;;;
+C131;HANGUL SYLLABLE SEONG;Lo;0;L;;;;;N;;;;;
+C132;HANGUL SYLLABLE SEOJ;Lo;0;L;;;;;N;;;;;
+C133;HANGUL SYLLABLE SEOC;Lo;0;L;;;;;N;;;;;
+C134;HANGUL SYLLABLE SEOK;Lo;0;L;;;;;N;;;;;
+C135;HANGUL SYLLABLE SEOT;Lo;0;L;;;;;N;;;;;
+C136;HANGUL SYLLABLE SEOP;Lo;0;L;;;;;N;;;;;
+C137;HANGUL SYLLABLE SEOH;Lo;0;L;;;;;N;;;;;
+C138;HANGUL SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+C139;HANGUL SYLLABLE SEG;Lo;0;L;;;;;N;;;;;
+C13A;HANGUL SYLLABLE SEGG;Lo;0;L;;;;;N;;;;;
+C13B;HANGUL SYLLABLE SEGS;Lo;0;L;;;;;N;;;;;
+C13C;HANGUL SYLLABLE SEN;Lo;0;L;;;;;N;;;;;
+C13D;HANGUL SYLLABLE SENI;Lo;0;L;;;;;N;;;;;
+C13E;HANGUL SYLLABLE SENH;Lo;0;L;;;;;N;;;;;
+C13F;HANGUL SYLLABLE SED;Lo;0;L;;;;;N;;;;;
+C140;HANGUL SYLLABLE SEL;Lo;0;L;;;;;N;;;;;
+C141;HANGUL SYLLABLE SELG;Lo;0;L;;;;;N;;;;;
+C142;HANGUL SYLLABLE SELM;Lo;0;L;;;;;N;;;;;
+C143;HANGUL SYLLABLE SELB;Lo;0;L;;;;;N;;;;;
+C144;HANGUL SYLLABLE SELS;Lo;0;L;;;;;N;;;;;
+C145;HANGUL SYLLABLE SELT;Lo;0;L;;;;;N;;;;;
+C146;HANGUL SYLLABLE SELP;Lo;0;L;;;;;N;;;;;
+C147;HANGUL SYLLABLE SELH;Lo;0;L;;;;;N;;;;;
+C148;HANGUL SYLLABLE SEM;Lo;0;L;;;;;N;;;;;
+C149;HANGUL SYLLABLE SEB;Lo;0;L;;;;;N;;;;;
+C14A;HANGUL SYLLABLE SEBS;Lo;0;L;;;;;N;;;;;
+C14B;HANGUL SYLLABLE SES;Lo;0;L;;;;;N;;;;;
+C14C;HANGUL SYLLABLE SESS;Lo;0;L;;;;;N;;;;;
+C14D;HANGUL SYLLABLE SENG;Lo;0;L;;;;;N;;;;;
+C14E;HANGUL SYLLABLE SEJ;Lo;0;L;;;;;N;;;;;
+C14F;HANGUL SYLLABLE SEC;Lo;0;L;;;;;N;;;;;
+C150;HANGUL SYLLABLE SEK;Lo;0;L;;;;;N;;;;;
+C151;HANGUL SYLLABLE SET;Lo;0;L;;;;;N;;;;;
+C152;HANGUL SYLLABLE SEP;Lo;0;L;;;;;N;;;;;
+C153;HANGUL SYLLABLE SEH;Lo;0;L;;;;;N;;;;;
+C154;HANGUL SYLLABLE SYEO;Lo;0;L;;;;;N;;;;;
+C155;HANGUL SYLLABLE SYEOG;Lo;0;L;;;;;N;;;;;
+C156;HANGUL SYLLABLE SYEOGG;Lo;0;L;;;;;N;;;;;
+C157;HANGUL SYLLABLE SYEOGS;Lo;0;L;;;;;N;;;;;
+C158;HANGUL SYLLABLE SYEON;Lo;0;L;;;;;N;;;;;
+C159;HANGUL SYLLABLE SYEONI;Lo;0;L;;;;;N;;;;;
+C15A;HANGUL SYLLABLE SYEONH;Lo;0;L;;;;;N;;;;;
+C15B;HANGUL SYLLABLE SYEOD;Lo;0;L;;;;;N;;;;;
+C15C;HANGUL SYLLABLE SYEOL;Lo;0;L;;;;;N;;;;;
+C15D;HANGUL SYLLABLE SYEOLG;Lo;0;L;;;;;N;;;;;
+C15E;HANGUL SYLLABLE SYEOLM;Lo;0;L;;;;;N;;;;;
+C15F;HANGUL SYLLABLE SYEOLB;Lo;0;L;;;;;N;;;;;
+C160;HANGUL SYLLABLE SYEOLS;Lo;0;L;;;;;N;;;;;
+C161;HANGUL SYLLABLE SYEOLT;Lo;0;L;;;;;N;;;;;
+C162;HANGUL SYLLABLE SYEOLP;Lo;0;L;;;;;N;;;;;
+C163;HANGUL SYLLABLE SYEOLH;Lo;0;L;;;;;N;;;;;
+C164;HANGUL SYLLABLE SYEOM;Lo;0;L;;;;;N;;;;;
+C165;HANGUL SYLLABLE SYEOB;Lo;0;L;;;;;N;;;;;
+C166;HANGUL SYLLABLE SYEOBS;Lo;0;L;;;;;N;;;;;
+C167;HANGUL SYLLABLE SYEOS;Lo;0;L;;;;;N;;;;;
+C168;HANGUL SYLLABLE SYEOSS;Lo;0;L;;;;;N;;;;;
+C169;HANGUL SYLLABLE SYEONG;Lo;0;L;;;;;N;;;;;
+C16A;HANGUL SYLLABLE SYEOJ;Lo;0;L;;;;;N;;;;;
+C16B;HANGUL SYLLABLE SYEOC;Lo;0;L;;;;;N;;;;;
+C16C;HANGUL SYLLABLE SYEOK;Lo;0;L;;;;;N;;;;;
+C16D;HANGUL SYLLABLE SYEOT;Lo;0;L;;;;;N;;;;;
+C16E;HANGUL SYLLABLE SYEOP;Lo;0;L;;;;;N;;;;;
+C16F;HANGUL SYLLABLE SYEOH;Lo;0;L;;;;;N;;;;;
+C170;HANGUL SYLLABLE SYE;Lo;0;L;;;;;N;;;;;
+C171;HANGUL SYLLABLE SYEG;Lo;0;L;;;;;N;;;;;
+C172;HANGUL SYLLABLE SYEGG;Lo;0;L;;;;;N;;;;;
+C173;HANGUL SYLLABLE SYEGS;Lo;0;L;;;;;N;;;;;
+C174;HANGUL SYLLABLE SYEN;Lo;0;L;;;;;N;;;;;
+C175;HANGUL SYLLABLE SYENI;Lo;0;L;;;;;N;;;;;
+C176;HANGUL SYLLABLE SYENH;Lo;0;L;;;;;N;;;;;
+C177;HANGUL SYLLABLE SYED;Lo;0;L;;;;;N;;;;;
+C178;HANGUL SYLLABLE SYEL;Lo;0;L;;;;;N;;;;;
+C179;HANGUL SYLLABLE SYELG;Lo;0;L;;;;;N;;;;;
+C17A;HANGUL SYLLABLE SYELM;Lo;0;L;;;;;N;;;;;
+C17B;HANGUL SYLLABLE SYELB;Lo;0;L;;;;;N;;;;;
+C17C;HANGUL SYLLABLE SYELS;Lo;0;L;;;;;N;;;;;
+C17D;HANGUL SYLLABLE SYELT;Lo;0;L;;;;;N;;;;;
+C17E;HANGUL SYLLABLE SYELP;Lo;0;L;;;;;N;;;;;
+C17F;HANGUL SYLLABLE SYELH;Lo;0;L;;;;;N;;;;;
+C180;HANGUL SYLLABLE SYEM;Lo;0;L;;;;;N;;;;;
+C181;HANGUL SYLLABLE SYEB;Lo;0;L;;;;;N;;;;;
+C182;HANGUL SYLLABLE SYEBS;Lo;0;L;;;;;N;;;;;
+C183;HANGUL SYLLABLE SYES;Lo;0;L;;;;;N;;;;;
+C184;HANGUL SYLLABLE SYESS;Lo;0;L;;;;;N;;;;;
+C185;HANGUL SYLLABLE SYENG;Lo;0;L;;;;;N;;;;;
+C186;HANGUL SYLLABLE SYEJ;Lo;0;L;;;;;N;;;;;
+C187;HANGUL SYLLABLE SYEC;Lo;0;L;;;;;N;;;;;
+C188;HANGUL SYLLABLE SYEK;Lo;0;L;;;;;N;;;;;
+C189;HANGUL SYLLABLE SYET;Lo;0;L;;;;;N;;;;;
+C18A;HANGUL SYLLABLE SYEP;Lo;0;L;;;;;N;;;;;
+C18B;HANGUL SYLLABLE SYEH;Lo;0;L;;;;;N;;;;;
+C18C;HANGUL SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+C18D;HANGUL SYLLABLE SOG;Lo;0;L;;;;;N;;;;;
+C18E;HANGUL SYLLABLE SOGG;Lo;0;L;;;;;N;;;;;
+C18F;HANGUL SYLLABLE SOGS;Lo;0;L;;;;;N;;;;;
+C190;HANGUL SYLLABLE SON;Lo;0;L;;;;;N;;;;;
+C191;HANGUL SYLLABLE SONI;Lo;0;L;;;;;N;;;;;
+C192;HANGUL SYLLABLE SONH;Lo;0;L;;;;;N;;;;;
+C193;HANGUL SYLLABLE SOD;Lo;0;L;;;;;N;;;;;
+C194;HANGUL SYLLABLE SOL;Lo;0;L;;;;;N;;;;;
+C195;HANGUL SYLLABLE SOLG;Lo;0;L;;;;;N;;;;;
+C196;HANGUL SYLLABLE SOLM;Lo;0;L;;;;;N;;;;;
+C197;HANGUL SYLLABLE SOLB;Lo;0;L;;;;;N;;;;;
+C198;HANGUL SYLLABLE SOLS;Lo;0;L;;;;;N;;;;;
+C199;HANGUL SYLLABLE SOLT;Lo;0;L;;;;;N;;;;;
+C19A;HANGUL SYLLABLE SOLP;Lo;0;L;;;;;N;;;;;
+C19B;HANGUL SYLLABLE SOLH;Lo;0;L;;;;;N;;;;;
+C19C;HANGUL SYLLABLE SOM;Lo;0;L;;;;;N;;;;;
+C19D;HANGUL SYLLABLE SOB;Lo;0;L;;;;;N;;;;;
+C19E;HANGUL SYLLABLE SOBS;Lo;0;L;;;;;N;;;;;
+C19F;HANGUL SYLLABLE SOS;Lo;0;L;;;;;N;;;;;
+C1A0;HANGUL SYLLABLE SOSS;Lo;0;L;;;;;N;;;;;
+C1A1;HANGUL SYLLABLE SONG;Lo;0;L;;;;;N;;;;;
+C1A2;HANGUL SYLLABLE SOJ;Lo;0;L;;;;;N;;;;;
+C1A3;HANGUL SYLLABLE SOC;Lo;0;L;;;;;N;;;;;
+C1A4;HANGUL SYLLABLE SOK;Lo;0;L;;;;;N;;;;;
+C1A5;HANGUL SYLLABLE SOT;Lo;0;L;;;;;N;;;;;
+C1A6;HANGUL SYLLABLE SOP;Lo;0;L;;;;;N;;;;;
+C1A7;HANGUL SYLLABLE SOH;Lo;0;L;;;;;N;;;;;
+C1A8;HANGUL SYLLABLE SWA;Lo;0;L;;;;;N;;;;;
+C1A9;HANGUL SYLLABLE SWAG;Lo;0;L;;;;;N;;;;;
+C1AA;HANGUL SYLLABLE SWAGG;Lo;0;L;;;;;N;;;;;
+C1AB;HANGUL SYLLABLE SWAGS;Lo;0;L;;;;;N;;;;;
+C1AC;HANGUL SYLLABLE SWAN;Lo;0;L;;;;;N;;;;;
+C1AD;HANGUL SYLLABLE SWANI;Lo;0;L;;;;;N;;;;;
+C1AE;HANGUL SYLLABLE SWANH;Lo;0;L;;;;;N;;;;;
+C1AF;HANGUL SYLLABLE SWAD;Lo;0;L;;;;;N;;;;;
+C1B0;HANGUL SYLLABLE SWAL;Lo;0;L;;;;;N;;;;;
+C1B1;HANGUL SYLLABLE SWALG;Lo;0;L;;;;;N;;;;;
+C1B2;HANGUL SYLLABLE SWALM;Lo;0;L;;;;;N;;;;;
+C1B3;HANGUL SYLLABLE SWALB;Lo;0;L;;;;;N;;;;;
+C1B4;HANGUL SYLLABLE SWALS;Lo;0;L;;;;;N;;;;;
+C1B5;HANGUL SYLLABLE SWALT;Lo;0;L;;;;;N;;;;;
+C1B6;HANGUL SYLLABLE SWALP;Lo;0;L;;;;;N;;;;;
+C1B7;HANGUL SYLLABLE SWALH;Lo;0;L;;;;;N;;;;;
+C1B8;HANGUL SYLLABLE SWAM;Lo;0;L;;;;;N;;;;;
+C1B9;HANGUL SYLLABLE SWAB;Lo;0;L;;;;;N;;;;;
+C1BA;HANGUL SYLLABLE SWABS;Lo;0;L;;;;;N;;;;;
+C1BB;HANGUL SYLLABLE SWAS;Lo;0;L;;;;;N;;;;;
+C1BC;HANGUL SYLLABLE SWASS;Lo;0;L;;;;;N;;;;;
+C1BD;HANGUL SYLLABLE SWANG;Lo;0;L;;;;;N;;;;;
+C1BE;HANGUL SYLLABLE SWAJ;Lo;0;L;;;;;N;;;;;
+C1BF;HANGUL SYLLABLE SWAC;Lo;0;L;;;;;N;;;;;
+C1C0;HANGUL SYLLABLE SWAK;Lo;0;L;;;;;N;;;;;
+C1C1;HANGUL SYLLABLE SWAT;Lo;0;L;;;;;N;;;;;
+C1C2;HANGUL SYLLABLE SWAP;Lo;0;L;;;;;N;;;;;
+C1C3;HANGUL SYLLABLE SWAH;Lo;0;L;;;;;N;;;;;
+C1C4;HANGUL SYLLABLE SWAE;Lo;0;L;;;;;N;;;;;
+C1C5;HANGUL SYLLABLE SWAEG;Lo;0;L;;;;;N;;;;;
+C1C6;HANGUL SYLLABLE SWAEGG;Lo;0;L;;;;;N;;;;;
+C1C7;HANGUL SYLLABLE SWAEGS;Lo;0;L;;;;;N;;;;;
+C1C8;HANGUL SYLLABLE SWAEN;Lo;0;L;;;;;N;;;;;
+C1C9;HANGUL SYLLABLE SWAENI;Lo;0;L;;;;;N;;;;;
+C1CA;HANGUL SYLLABLE SWAENH;Lo;0;L;;;;;N;;;;;
+C1CB;HANGUL SYLLABLE SWAED;Lo;0;L;;;;;N;;;;;
+C1CC;HANGUL SYLLABLE SWAEL;Lo;0;L;;;;;N;;;;;
+C1CD;HANGUL SYLLABLE SWAELG;Lo;0;L;;;;;N;;;;;
+C1CE;HANGUL SYLLABLE SWAELM;Lo;0;L;;;;;N;;;;;
+C1CF;HANGUL SYLLABLE SWAELB;Lo;0;L;;;;;N;;;;;
+C1D0;HANGUL SYLLABLE SWAELS;Lo;0;L;;;;;N;;;;;
+C1D1;HANGUL SYLLABLE SWAELT;Lo;0;L;;;;;N;;;;;
+C1D2;HANGUL SYLLABLE SWAELP;Lo;0;L;;;;;N;;;;;
+C1D3;HANGUL SYLLABLE SWAELH;Lo;0;L;;;;;N;;;;;
+C1D4;HANGUL SYLLABLE SWAEM;Lo;0;L;;;;;N;;;;;
+C1D5;HANGUL SYLLABLE SWAEB;Lo;0;L;;;;;N;;;;;
+C1D6;HANGUL SYLLABLE SWAEBS;Lo;0;L;;;;;N;;;;;
+C1D7;HANGUL SYLLABLE SWAES;Lo;0;L;;;;;N;;;;;
+C1D8;HANGUL SYLLABLE SWAESS;Lo;0;L;;;;;N;;;;;
+C1D9;HANGUL SYLLABLE SWAENG;Lo;0;L;;;;;N;;;;;
+C1DA;HANGUL SYLLABLE SWAEJ;Lo;0;L;;;;;N;;;;;
+C1DB;HANGUL SYLLABLE SWAEC;Lo;0;L;;;;;N;;;;;
+C1DC;HANGUL SYLLABLE SWAEK;Lo;0;L;;;;;N;;;;;
+C1DD;HANGUL SYLLABLE SWAET;Lo;0;L;;;;;N;;;;;
+C1DE;HANGUL SYLLABLE SWAEP;Lo;0;L;;;;;N;;;;;
+C1DF;HANGUL SYLLABLE SWAEH;Lo;0;L;;;;;N;;;;;
+C1E0;HANGUL SYLLABLE SOE;Lo;0;L;;;;;N;;;;;
+C1E1;HANGUL SYLLABLE SOEG;Lo;0;L;;;;;N;;;;;
+C1E2;HANGUL SYLLABLE SOEGG;Lo;0;L;;;;;N;;;;;
+C1E3;HANGUL SYLLABLE SOEGS;Lo;0;L;;;;;N;;;;;
+C1E4;HANGUL SYLLABLE SOEN;Lo;0;L;;;;;N;;;;;
+C1E5;HANGUL SYLLABLE SOENI;Lo;0;L;;;;;N;;;;;
+C1E6;HANGUL SYLLABLE SOENH;Lo;0;L;;;;;N;;;;;
+C1E7;HANGUL SYLLABLE SOED;Lo;0;L;;;;;N;;;;;
+C1E8;HANGUL SYLLABLE SOEL;Lo;0;L;;;;;N;;;;;
+C1E9;HANGUL SYLLABLE SOELG;Lo;0;L;;;;;N;;;;;
+C1EA;HANGUL SYLLABLE SOELM;Lo;0;L;;;;;N;;;;;
+C1EB;HANGUL SYLLABLE SOELB;Lo;0;L;;;;;N;;;;;
+C1EC;HANGUL SYLLABLE SOELS;Lo;0;L;;;;;N;;;;;
+C1ED;HANGUL SYLLABLE SOELT;Lo;0;L;;;;;N;;;;;
+C1EE;HANGUL SYLLABLE SOELP;Lo;0;L;;;;;N;;;;;
+C1EF;HANGUL SYLLABLE SOELH;Lo;0;L;;;;;N;;;;;
+C1F0;HANGUL SYLLABLE SOEM;Lo;0;L;;;;;N;;;;;
+C1F1;HANGUL SYLLABLE SOEB;Lo;0;L;;;;;N;;;;;
+C1F2;HANGUL SYLLABLE SOEBS;Lo;0;L;;;;;N;;;;;
+C1F3;HANGUL SYLLABLE SOES;Lo;0;L;;;;;N;;;;;
+C1F4;HANGUL SYLLABLE SOESS;Lo;0;L;;;;;N;;;;;
+C1F5;HANGUL SYLLABLE SOENG;Lo;0;L;;;;;N;;;;;
+C1F6;HANGUL SYLLABLE SOEJ;Lo;0;L;;;;;N;;;;;
+C1F7;HANGUL SYLLABLE SOEC;Lo;0;L;;;;;N;;;;;
+C1F8;HANGUL SYLLABLE SOEK;Lo;0;L;;;;;N;;;;;
+C1F9;HANGUL SYLLABLE SOET;Lo;0;L;;;;;N;;;;;
+C1FA;HANGUL SYLLABLE SOEP;Lo;0;L;;;;;N;;;;;
+C1FB;HANGUL SYLLABLE SOEH;Lo;0;L;;;;;N;;;;;
+C1FC;HANGUL SYLLABLE SYO;Lo;0;L;;;;;N;;;;;
+C1FD;HANGUL SYLLABLE SYOG;Lo;0;L;;;;;N;;;;;
+C1FE;HANGUL SYLLABLE SYOGG;Lo;0;L;;;;;N;;;;;
+C1FF;HANGUL SYLLABLE SYOGS;Lo;0;L;;;;;N;;;;;
+C200;HANGUL SYLLABLE SYON;Lo;0;L;;;;;N;;;;;
+C201;HANGUL SYLLABLE SYONI;Lo;0;L;;;;;N;;;;;
+C202;HANGUL SYLLABLE SYONH;Lo;0;L;;;;;N;;;;;
+C203;HANGUL SYLLABLE SYOD;Lo;0;L;;;;;N;;;;;
+C204;HANGUL SYLLABLE SYOL;Lo;0;L;;;;;N;;;;;
+C205;HANGUL SYLLABLE SYOLG;Lo;0;L;;;;;N;;;;;
+C206;HANGUL SYLLABLE SYOLM;Lo;0;L;;;;;N;;;;;
+C207;HANGUL SYLLABLE SYOLB;Lo;0;L;;;;;N;;;;;
+C208;HANGUL SYLLABLE SYOLS;Lo;0;L;;;;;N;;;;;
+C209;HANGUL SYLLABLE SYOLT;Lo;0;L;;;;;N;;;;;
+C20A;HANGUL SYLLABLE SYOLP;Lo;0;L;;;;;N;;;;;
+C20B;HANGUL SYLLABLE SYOLH;Lo;0;L;;;;;N;;;;;
+C20C;HANGUL SYLLABLE SYOM;Lo;0;L;;;;;N;;;;;
+C20D;HANGUL SYLLABLE SYOB;Lo;0;L;;;;;N;;;;;
+C20E;HANGUL SYLLABLE SYOBS;Lo;0;L;;;;;N;;;;;
+C20F;HANGUL SYLLABLE SYOS;Lo;0;L;;;;;N;;;;;
+C210;HANGUL SYLLABLE SYOSS;Lo;0;L;;;;;N;;;;;
+C211;HANGUL SYLLABLE SYONG;Lo;0;L;;;;;N;;;;;
+C212;HANGUL SYLLABLE SYOJ;Lo;0;L;;;;;N;;;;;
+C213;HANGUL SYLLABLE SYOC;Lo;0;L;;;;;N;;;;;
+C214;HANGUL SYLLABLE SYOK;Lo;0;L;;;;;N;;;;;
+C215;HANGUL SYLLABLE SYOT;Lo;0;L;;;;;N;;;;;
+C216;HANGUL SYLLABLE SYOP;Lo;0;L;;;;;N;;;;;
+C217;HANGUL SYLLABLE SYOH;Lo;0;L;;;;;N;;;;;
+C218;HANGUL SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+C219;HANGUL SYLLABLE SUG;Lo;0;L;;;;;N;;;;;
+C21A;HANGUL SYLLABLE SUGG;Lo;0;L;;;;;N;;;;;
+C21B;HANGUL SYLLABLE SUGS;Lo;0;L;;;;;N;;;;;
+C21C;HANGUL SYLLABLE SUN;Lo;0;L;;;;;N;;;;;
+C21D;HANGUL SYLLABLE SUNI;Lo;0;L;;;;;N;;;;;
+C21E;HANGUL SYLLABLE SUNH;Lo;0;L;;;;;N;;;;;
+C21F;HANGUL SYLLABLE SUD;Lo;0;L;;;;;N;;;;;
+C220;HANGUL SYLLABLE SUL;Lo;0;L;;;;;N;;;;;
+C221;HANGUL SYLLABLE SULG;Lo;0;L;;;;;N;;;;;
+C222;HANGUL SYLLABLE SULM;Lo;0;L;;;;;N;;;;;
+C223;HANGUL SYLLABLE SULB;Lo;0;L;;;;;N;;;;;
+C224;HANGUL SYLLABLE SULS;Lo;0;L;;;;;N;;;;;
+C225;HANGUL SYLLABLE SULT;Lo;0;L;;;;;N;;;;;
+C226;HANGUL SYLLABLE SULP;Lo;0;L;;;;;N;;;;;
+C227;HANGUL SYLLABLE SULH;Lo;0;L;;;;;N;;;;;
+C228;HANGUL SYLLABLE SUM;Lo;0;L;;;;;N;;;;;
+C229;HANGUL SYLLABLE SUB;Lo;0;L;;;;;N;;;;;
+C22A;HANGUL SYLLABLE SUBS;Lo;0;L;;;;;N;;;;;
+C22B;HANGUL SYLLABLE SUS;Lo;0;L;;;;;N;;;;;
+C22C;HANGUL SYLLABLE SUSS;Lo;0;L;;;;;N;;;;;
+C22D;HANGUL SYLLABLE SUNG;Lo;0;L;;;;;N;;;;;
+C22E;HANGUL SYLLABLE SUJ;Lo;0;L;;;;;N;;;;;
+C22F;HANGUL SYLLABLE SUC;Lo;0;L;;;;;N;;;;;
+C230;HANGUL SYLLABLE SUK;Lo;0;L;;;;;N;;;;;
+C231;HANGUL SYLLABLE SUT;Lo;0;L;;;;;N;;;;;
+C232;HANGUL SYLLABLE SUP;Lo;0;L;;;;;N;;;;;
+C233;HANGUL SYLLABLE SUH;Lo;0;L;;;;;N;;;;;
+C234;HANGUL SYLLABLE SWEO;Lo;0;L;;;;;N;;;;;
+C235;HANGUL SYLLABLE SWEOG;Lo;0;L;;;;;N;;;;;
+C236;HANGUL SYLLABLE SWEOGG;Lo;0;L;;;;;N;;;;;
+C237;HANGUL SYLLABLE SWEOGS;Lo;0;L;;;;;N;;;;;
+C238;HANGUL SYLLABLE SWEON;Lo;0;L;;;;;N;;;;;
+C239;HANGUL SYLLABLE SWEONI;Lo;0;L;;;;;N;;;;;
+C23A;HANGUL SYLLABLE SWEONH;Lo;0;L;;;;;N;;;;;
+C23B;HANGUL SYLLABLE SWEOD;Lo;0;L;;;;;N;;;;;
+C23C;HANGUL SYLLABLE SWEOL;Lo;0;L;;;;;N;;;;;
+C23D;HANGUL SYLLABLE SWEOLG;Lo;0;L;;;;;N;;;;;
+C23E;HANGUL SYLLABLE SWEOLM;Lo;0;L;;;;;N;;;;;
+C23F;HANGUL SYLLABLE SWEOLB;Lo;0;L;;;;;N;;;;;
+C240;HANGUL SYLLABLE SWEOLS;Lo;0;L;;;;;N;;;;;
+C241;HANGUL SYLLABLE SWEOLT;Lo;0;L;;;;;N;;;;;
+C242;HANGUL SYLLABLE SWEOLP;Lo;0;L;;;;;N;;;;;
+C243;HANGUL SYLLABLE SWEOLH;Lo;0;L;;;;;N;;;;;
+C244;HANGUL SYLLABLE SWEOM;Lo;0;L;;;;;N;;;;;
+C245;HANGUL SYLLABLE SWEOB;Lo;0;L;;;;;N;;;;;
+C246;HANGUL SYLLABLE SWEOBS;Lo;0;L;;;;;N;;;;;
+C247;HANGUL SYLLABLE SWEOS;Lo;0;L;;;;;N;;;;;
+C248;HANGUL SYLLABLE SWEOSS;Lo;0;L;;;;;N;;;;;
+C249;HANGUL SYLLABLE SWEONG;Lo;0;L;;;;;N;;;;;
+C24A;HANGUL SYLLABLE SWEOJ;Lo;0;L;;;;;N;;;;;
+C24B;HANGUL SYLLABLE SWEOC;Lo;0;L;;;;;N;;;;;
+C24C;HANGUL SYLLABLE SWEOK;Lo;0;L;;;;;N;;;;;
+C24D;HANGUL SYLLABLE SWEOT;Lo;0;L;;;;;N;;;;;
+C24E;HANGUL SYLLABLE SWEOP;Lo;0;L;;;;;N;;;;;
+C24F;HANGUL SYLLABLE SWEOH;Lo;0;L;;;;;N;;;;;
+C250;HANGUL SYLLABLE SWE;Lo;0;L;;;;;N;;;;;
+C251;HANGUL SYLLABLE SWEG;Lo;0;L;;;;;N;;;;;
+C252;HANGUL SYLLABLE SWEGG;Lo;0;L;;;;;N;;;;;
+C253;HANGUL SYLLABLE SWEGS;Lo;0;L;;;;;N;;;;;
+C254;HANGUL SYLLABLE SWEN;Lo;0;L;;;;;N;;;;;
+C255;HANGUL SYLLABLE SWENI;Lo;0;L;;;;;N;;;;;
+C256;HANGUL SYLLABLE SWENH;Lo;0;L;;;;;N;;;;;
+C257;HANGUL SYLLABLE SWED;Lo;0;L;;;;;N;;;;;
+C258;HANGUL SYLLABLE SWEL;Lo;0;L;;;;;N;;;;;
+C259;HANGUL SYLLABLE SWELG;Lo;0;L;;;;;N;;;;;
+C25A;HANGUL SYLLABLE SWELM;Lo;0;L;;;;;N;;;;;
+C25B;HANGUL SYLLABLE SWELB;Lo;0;L;;;;;N;;;;;
+C25C;HANGUL SYLLABLE SWELS;Lo;0;L;;;;;N;;;;;
+C25D;HANGUL SYLLABLE SWELT;Lo;0;L;;;;;N;;;;;
+C25E;HANGUL SYLLABLE SWELP;Lo;0;L;;;;;N;;;;;
+C25F;HANGUL SYLLABLE SWELH;Lo;0;L;;;;;N;;;;;
+C260;HANGUL SYLLABLE SWEM;Lo;0;L;;;;;N;;;;;
+C261;HANGUL SYLLABLE SWEB;Lo;0;L;;;;;N;;;;;
+C262;HANGUL SYLLABLE SWEBS;Lo;0;L;;;;;N;;;;;
+C263;HANGUL SYLLABLE SWES;Lo;0;L;;;;;N;;;;;
+C264;HANGUL SYLLABLE SWESS;Lo;0;L;;;;;N;;;;;
+C265;HANGUL SYLLABLE SWENG;Lo;0;L;;;;;N;;;;;
+C266;HANGUL SYLLABLE SWEJ;Lo;0;L;;;;;N;;;;;
+C267;HANGUL SYLLABLE SWEC;Lo;0;L;;;;;N;;;;;
+C268;HANGUL SYLLABLE SWEK;Lo;0;L;;;;;N;;;;;
+C269;HANGUL SYLLABLE SWET;Lo;0;L;;;;;N;;;;;
+C26A;HANGUL SYLLABLE SWEP;Lo;0;L;;;;;N;;;;;
+C26B;HANGUL SYLLABLE SWEH;Lo;0;L;;;;;N;;;;;
+C26C;HANGUL SYLLABLE SWI;Lo;0;L;;;;;N;;;;;
+C26D;HANGUL SYLLABLE SWIG;Lo;0;L;;;;;N;;;;;
+C26E;HANGUL SYLLABLE SWIGG;Lo;0;L;;;;;N;;;;;
+C26F;HANGUL SYLLABLE SWIGS;Lo;0;L;;;;;N;;;;;
+C270;HANGUL SYLLABLE SWIN;Lo;0;L;;;;;N;;;;;
+C271;HANGUL SYLLABLE SWINI;Lo;0;L;;;;;N;;;;;
+C272;HANGUL SYLLABLE SWINH;Lo;0;L;;;;;N;;;;;
+C273;HANGUL SYLLABLE SWID;Lo;0;L;;;;;N;;;;;
+C274;HANGUL SYLLABLE SWIL;Lo;0;L;;;;;N;;;;;
+C275;HANGUL SYLLABLE SWILG;Lo;0;L;;;;;N;;;;;
+C276;HANGUL SYLLABLE SWILM;Lo;0;L;;;;;N;;;;;
+C277;HANGUL SYLLABLE SWILB;Lo;0;L;;;;;N;;;;;
+C278;HANGUL SYLLABLE SWILS;Lo;0;L;;;;;N;;;;;
+C279;HANGUL SYLLABLE SWILT;Lo;0;L;;;;;N;;;;;
+C27A;HANGUL SYLLABLE SWILP;Lo;0;L;;;;;N;;;;;
+C27B;HANGUL SYLLABLE SWILH;Lo;0;L;;;;;N;;;;;
+C27C;HANGUL SYLLABLE SWIM;Lo;0;L;;;;;N;;;;;
+C27D;HANGUL SYLLABLE SWIB;Lo;0;L;;;;;N;;;;;
+C27E;HANGUL SYLLABLE SWIBS;Lo;0;L;;;;;N;;;;;
+C27F;HANGUL SYLLABLE SWIS;Lo;0;L;;;;;N;;;;;
+C280;HANGUL SYLLABLE SWISS;Lo;0;L;;;;;N;;;;;
+C281;HANGUL SYLLABLE SWING;Lo;0;L;;;;;N;;;;;
+C282;HANGUL SYLLABLE SWIJ;Lo;0;L;;;;;N;;;;;
+C283;HANGUL SYLLABLE SWIC;Lo;0;L;;;;;N;;;;;
+C284;HANGUL SYLLABLE SWIK;Lo;0;L;;;;;N;;;;;
+C285;HANGUL SYLLABLE SWIT;Lo;0;L;;;;;N;;;;;
+C286;HANGUL SYLLABLE SWIP;Lo;0;L;;;;;N;;;;;
+C287;HANGUL SYLLABLE SWIH;Lo;0;L;;;;;N;;;;;
+C288;HANGUL SYLLABLE SYU;Lo;0;L;;;;;N;;;;;
+C289;HANGUL SYLLABLE SYUG;Lo;0;L;;;;;N;;;;;
+C28A;HANGUL SYLLABLE SYUGG;Lo;0;L;;;;;N;;;;;
+C28B;HANGUL SYLLABLE SYUGS;Lo;0;L;;;;;N;;;;;
+C28C;HANGUL SYLLABLE SYUN;Lo;0;L;;;;;N;;;;;
+C28D;HANGUL SYLLABLE SYUNI;Lo;0;L;;;;;N;;;;;
+C28E;HANGUL SYLLABLE SYUNH;Lo;0;L;;;;;N;;;;;
+C28F;HANGUL SYLLABLE SYUD;Lo;0;L;;;;;N;;;;;
+C290;HANGUL SYLLABLE SYUL;Lo;0;L;;;;;N;;;;;
+C291;HANGUL SYLLABLE SYULG;Lo;0;L;;;;;N;;;;;
+C292;HANGUL SYLLABLE SYULM;Lo;0;L;;;;;N;;;;;
+C293;HANGUL SYLLABLE SYULB;Lo;0;L;;;;;N;;;;;
+C294;HANGUL SYLLABLE SYULS;Lo;0;L;;;;;N;;;;;
+C295;HANGUL SYLLABLE SYULT;Lo;0;L;;;;;N;;;;;
+C296;HANGUL SYLLABLE SYULP;Lo;0;L;;;;;N;;;;;
+C297;HANGUL SYLLABLE SYULH;Lo;0;L;;;;;N;;;;;
+C298;HANGUL SYLLABLE SYUM;Lo;0;L;;;;;N;;;;;
+C299;HANGUL SYLLABLE SYUB;Lo;0;L;;;;;N;;;;;
+C29A;HANGUL SYLLABLE SYUBS;Lo;0;L;;;;;N;;;;;
+C29B;HANGUL SYLLABLE SYUS;Lo;0;L;;;;;N;;;;;
+C29C;HANGUL SYLLABLE SYUSS;Lo;0;L;;;;;N;;;;;
+C29D;HANGUL SYLLABLE SYUNG;Lo;0;L;;;;;N;;;;;
+C29E;HANGUL SYLLABLE SYUJ;Lo;0;L;;;;;N;;;;;
+C29F;HANGUL SYLLABLE SYUC;Lo;0;L;;;;;N;;;;;
+C2A0;HANGUL SYLLABLE SYUK;Lo;0;L;;;;;N;;;;;
+C2A1;HANGUL SYLLABLE SYUT;Lo;0;L;;;;;N;;;;;
+C2A2;HANGUL SYLLABLE SYUP;Lo;0;L;;;;;N;;;;;
+C2A3;HANGUL SYLLABLE SYUH;Lo;0;L;;;;;N;;;;;
+C2A4;HANGUL SYLLABLE SEU;Lo;0;L;;;;;N;;;;;
+C2A5;HANGUL SYLLABLE SEUG;Lo;0;L;;;;;N;;;;;
+C2A6;HANGUL SYLLABLE SEUGG;Lo;0;L;;;;;N;;;;;
+C2A7;HANGUL SYLLABLE SEUGS;Lo;0;L;;;;;N;;;;;
+C2A8;HANGUL SYLLABLE SEUN;Lo;0;L;;;;;N;;;;;
+C2A9;HANGUL SYLLABLE SEUNI;Lo;0;L;;;;;N;;;;;
+C2AA;HANGUL SYLLABLE SEUNH;Lo;0;L;;;;;N;;;;;
+C2AB;HANGUL SYLLABLE SEUD;Lo;0;L;;;;;N;;;;;
+C2AC;HANGUL SYLLABLE SEUL;Lo;0;L;;;;;N;;;;;
+C2AD;HANGUL SYLLABLE SEULG;Lo;0;L;;;;;N;;;;;
+C2AE;HANGUL SYLLABLE SEULM;Lo;0;L;;;;;N;;;;;
+C2AF;HANGUL SYLLABLE SEULB;Lo;0;L;;;;;N;;;;;
+C2B0;HANGUL SYLLABLE SEULS;Lo;0;L;;;;;N;;;;;
+C2B1;HANGUL SYLLABLE SEULT;Lo;0;L;;;;;N;;;;;
+C2B2;HANGUL SYLLABLE SEULP;Lo;0;L;;;;;N;;;;;
+C2B3;HANGUL SYLLABLE SEULH;Lo;0;L;;;;;N;;;;;
+C2B4;HANGUL SYLLABLE SEUM;Lo;0;L;;;;;N;;;;;
+C2B5;HANGUL SYLLABLE SEUB;Lo;0;L;;;;;N;;;;;
+C2B6;HANGUL SYLLABLE SEUBS;Lo;0;L;;;;;N;;;;;
+C2B7;HANGUL SYLLABLE SEUS;Lo;0;L;;;;;N;;;;;
+C2B8;HANGUL SYLLABLE SEUSS;Lo;0;L;;;;;N;;;;;
+C2B9;HANGUL SYLLABLE SEUNG;Lo;0;L;;;;;N;;;;;
+C2BA;HANGUL SYLLABLE SEUJ;Lo;0;L;;;;;N;;;;;
+C2BB;HANGUL SYLLABLE SEUC;Lo;0;L;;;;;N;;;;;
+C2BC;HANGUL SYLLABLE SEUK;Lo;0;L;;;;;N;;;;;
+C2BD;HANGUL SYLLABLE SEUT;Lo;0;L;;;;;N;;;;;
+C2BE;HANGUL SYLLABLE SEUP;Lo;0;L;;;;;N;;;;;
+C2BF;HANGUL SYLLABLE SEUH;Lo;0;L;;;;;N;;;;;
+C2C0;HANGUL SYLLABLE SYI;Lo;0;L;;;;;N;;;;;
+C2C1;HANGUL SYLLABLE SYIG;Lo;0;L;;;;;N;;;;;
+C2C2;HANGUL SYLLABLE SYIGG;Lo;0;L;;;;;N;;;;;
+C2C3;HANGUL SYLLABLE SYIGS;Lo;0;L;;;;;N;;;;;
+C2C4;HANGUL SYLLABLE SYIN;Lo;0;L;;;;;N;;;;;
+C2C5;HANGUL SYLLABLE SYINI;Lo;0;L;;;;;N;;;;;
+C2C6;HANGUL SYLLABLE SYINH;Lo;0;L;;;;;N;;;;;
+C2C7;HANGUL SYLLABLE SYID;Lo;0;L;;;;;N;;;;;
+C2C8;HANGUL SYLLABLE SYIL;Lo;0;L;;;;;N;;;;;
+C2C9;HANGUL SYLLABLE SYILG;Lo;0;L;;;;;N;;;;;
+C2CA;HANGUL SYLLABLE SYILM;Lo;0;L;;;;;N;;;;;
+C2CB;HANGUL SYLLABLE SYILB;Lo;0;L;;;;;N;;;;;
+C2CC;HANGUL SYLLABLE SYILS;Lo;0;L;;;;;N;;;;;
+C2CD;HANGUL SYLLABLE SYILT;Lo;0;L;;;;;N;;;;;
+C2CE;HANGUL SYLLABLE SYILP;Lo;0;L;;;;;N;;;;;
+C2CF;HANGUL SYLLABLE SYILH;Lo;0;L;;;;;N;;;;;
+C2D0;HANGUL SYLLABLE SYIM;Lo;0;L;;;;;N;;;;;
+C2D1;HANGUL SYLLABLE SYIB;Lo;0;L;;;;;N;;;;;
+C2D2;HANGUL SYLLABLE SYIBS;Lo;0;L;;;;;N;;;;;
+C2D3;HANGUL SYLLABLE SYIS;Lo;0;L;;;;;N;;;;;
+C2D4;HANGUL SYLLABLE SYISS;Lo;0;L;;;;;N;;;;;
+C2D5;HANGUL SYLLABLE SYING;Lo;0;L;;;;;N;;;;;
+C2D6;HANGUL SYLLABLE SYIJ;Lo;0;L;;;;;N;;;;;
+C2D7;HANGUL SYLLABLE SYIC;Lo;0;L;;;;;N;;;;;
+C2D8;HANGUL SYLLABLE SYIK;Lo;0;L;;;;;N;;;;;
+C2D9;HANGUL SYLLABLE SYIT;Lo;0;L;;;;;N;;;;;
+C2DA;HANGUL SYLLABLE SYIP;Lo;0;L;;;;;N;;;;;
+C2DB;HANGUL SYLLABLE SYIH;Lo;0;L;;;;;N;;;;;
+C2DC;HANGUL SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+C2DD;HANGUL SYLLABLE SIG;Lo;0;L;;;;;N;;;;;
+C2DE;HANGUL SYLLABLE SIGG;Lo;0;L;;;;;N;;;;;
+C2DF;HANGUL SYLLABLE SIGS;Lo;0;L;;;;;N;;;;;
+C2E0;HANGUL SYLLABLE SIN;Lo;0;L;;;;;N;;;;;
+C2E1;HANGUL SYLLABLE SINI;Lo;0;L;;;;;N;;;;;
+C2E2;HANGUL SYLLABLE SINH;Lo;0;L;;;;;N;;;;;
+C2E3;HANGUL SYLLABLE SID;Lo;0;L;;;;;N;;;;;
+C2E4;HANGUL SYLLABLE SIL;Lo;0;L;;;;;N;;;;;
+C2E5;HANGUL SYLLABLE SILG;Lo;0;L;;;;;N;;;;;
+C2E6;HANGUL SYLLABLE SILM;Lo;0;L;;;;;N;;;;;
+C2E7;HANGUL SYLLABLE SILB;Lo;0;L;;;;;N;;;;;
+C2E8;HANGUL SYLLABLE SILS;Lo;0;L;;;;;N;;;;;
+C2E9;HANGUL SYLLABLE SILT;Lo;0;L;;;;;N;;;;;
+C2EA;HANGUL SYLLABLE SILP;Lo;0;L;;;;;N;;;;;
+C2EB;HANGUL SYLLABLE SILH;Lo;0;L;;;;;N;;;;;
+C2EC;HANGUL SYLLABLE SIM;Lo;0;L;;;;;N;;;;;
+C2ED;HANGUL SYLLABLE SIB;Lo;0;L;;;;;N;;;;;
+C2EE;HANGUL SYLLABLE SIBS;Lo;0;L;;;;;N;;;;;
+C2EF;HANGUL SYLLABLE SIS;Lo;0;L;;;;;N;;;;;
+C2F0;HANGUL SYLLABLE SISS;Lo;0;L;;;;;N;;;;;
+C2F1;HANGUL SYLLABLE SING;Lo;0;L;;;;;N;;;;;
+C2F2;HANGUL SYLLABLE SIJ;Lo;0;L;;;;;N;;;;;
+C2F3;HANGUL SYLLABLE SIC;Lo;0;L;;;;;N;;;;;
+C2F4;HANGUL SYLLABLE SIK;Lo;0;L;;;;;N;;;;;
+C2F5;HANGUL SYLLABLE SIT;Lo;0;L;;;;;N;;;;;
+C2F6;HANGUL SYLLABLE SIP;Lo;0;L;;;;;N;;;;;
+C2F7;HANGUL SYLLABLE SIH;Lo;0;L;;;;;N;;;;;
+C2F8;HANGUL SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
+C2F9;HANGUL SYLLABLE SSAG;Lo;0;L;;;;;N;;;;;
+C2FA;HANGUL SYLLABLE SSAGG;Lo;0;L;;;;;N;;;;;
+C2FB;HANGUL SYLLABLE SSAGS;Lo;0;L;;;;;N;;;;;
+C2FC;HANGUL SYLLABLE SSAN;Lo;0;L;;;;;N;;;;;
+C2FD;HANGUL SYLLABLE SSANI;Lo;0;L;;;;;N;;;;;
+C2FE;HANGUL SYLLABLE SSANH;Lo;0;L;;;;;N;;;;;
+C2FF;HANGUL SYLLABLE SSAD;Lo;0;L;;;;;N;;;;;
+C300;HANGUL SYLLABLE SSAL;Lo;0;L;;;;;N;;;;;
+C301;HANGUL SYLLABLE SSALG;Lo;0;L;;;;;N;;;;;
+C302;HANGUL SYLLABLE SSALM;Lo;0;L;;;;;N;;;;;
+C303;HANGUL SYLLABLE SSALB;Lo;0;L;;;;;N;;;;;
+C304;HANGUL SYLLABLE SSALS;Lo;0;L;;;;;N;;;;;
+C305;HANGUL SYLLABLE SSALT;Lo;0;L;;;;;N;;;;;
+C306;HANGUL SYLLABLE SSALP;Lo;0;L;;;;;N;;;;;
+C307;HANGUL SYLLABLE SSALH;Lo;0;L;;;;;N;;;;;
+C308;HANGUL SYLLABLE SSAM;Lo;0;L;;;;;N;;;;;
+C309;HANGUL SYLLABLE SSAB;Lo;0;L;;;;;N;;;;;
+C30A;HANGUL SYLLABLE SSABS;Lo;0;L;;;;;N;;;;;
+C30B;HANGUL SYLLABLE SSAS;Lo;0;L;;;;;N;;;;;
+C30C;HANGUL SYLLABLE SSASS;Lo;0;L;;;;;N;;;;;
+C30D;HANGUL SYLLABLE SSANG;Lo;0;L;;;;;N;;;;;
+C30E;HANGUL SYLLABLE SSAJ;Lo;0;L;;;;;N;;;;;
+C30F;HANGUL SYLLABLE SSAC;Lo;0;L;;;;;N;;;;;
+C310;HANGUL SYLLABLE SSAK;Lo;0;L;;;;;N;;;;;
+C311;HANGUL SYLLABLE SSAT;Lo;0;L;;;;;N;;;;;
+C312;HANGUL SYLLABLE SSAP;Lo;0;L;;;;;N;;;;;
+C313;HANGUL SYLLABLE SSAH;Lo;0;L;;;;;N;;;;;
+C314;HANGUL SYLLABLE SSAE;Lo;0;L;;;;;N;;;;;
+C315;HANGUL SYLLABLE SSAEG;Lo;0;L;;;;;N;;;;;
+C316;HANGUL SYLLABLE SSAEGG;Lo;0;L;;;;;N;;;;;
+C317;HANGUL SYLLABLE SSAEGS;Lo;0;L;;;;;N;;;;;
+C318;HANGUL SYLLABLE SSAEN;Lo;0;L;;;;;N;;;;;
+C319;HANGUL SYLLABLE SSAENI;Lo;0;L;;;;;N;;;;;
+C31A;HANGUL SYLLABLE SSAENH;Lo;0;L;;;;;N;;;;;
+C31B;HANGUL SYLLABLE SSAED;Lo;0;L;;;;;N;;;;;
+C31C;HANGUL SYLLABLE SSAEL;Lo;0;L;;;;;N;;;;;
+C31D;HANGUL SYLLABLE SSAELG;Lo;0;L;;;;;N;;;;;
+C31E;HANGUL SYLLABLE SSAELM;Lo;0;L;;;;;N;;;;;
+C31F;HANGUL SYLLABLE SSAELB;Lo;0;L;;;;;N;;;;;
+C320;HANGUL SYLLABLE SSAELS;Lo;0;L;;;;;N;;;;;
+C321;HANGUL SYLLABLE SSAELT;Lo;0;L;;;;;N;;;;;
+C322;HANGUL SYLLABLE SSAELP;Lo;0;L;;;;;N;;;;;
+C323;HANGUL SYLLABLE SSAELH;Lo;0;L;;;;;N;;;;;
+C324;HANGUL SYLLABLE SSAEM;Lo;0;L;;;;;N;;;;;
+C325;HANGUL SYLLABLE SSAEB;Lo;0;L;;;;;N;;;;;
+C326;HANGUL SYLLABLE SSAEBS;Lo;0;L;;;;;N;;;;;
+C327;HANGUL SYLLABLE SSAES;Lo;0;L;;;;;N;;;;;
+C328;HANGUL SYLLABLE SSAESS;Lo;0;L;;;;;N;;;;;
+C329;HANGUL SYLLABLE SSAENG;Lo;0;L;;;;;N;;;;;
+C32A;HANGUL SYLLABLE SSAEJ;Lo;0;L;;;;;N;;;;;
+C32B;HANGUL SYLLABLE SSAEC;Lo;0;L;;;;;N;;;;;
+C32C;HANGUL SYLLABLE SSAEK;Lo;0;L;;;;;N;;;;;
+C32D;HANGUL SYLLABLE SSAET;Lo;0;L;;;;;N;;;;;
+C32E;HANGUL SYLLABLE SSAEP;Lo;0;L;;;;;N;;;;;
+C32F;HANGUL SYLLABLE SSAEH;Lo;0;L;;;;;N;;;;;
+C330;HANGUL SYLLABLE SSYA;Lo;0;L;;;;;N;;;;;
+C331;HANGUL SYLLABLE SSYAG;Lo;0;L;;;;;N;;;;;
+C332;HANGUL SYLLABLE SSYAGG;Lo;0;L;;;;;N;;;;;
+C333;HANGUL SYLLABLE SSYAGS;Lo;0;L;;;;;N;;;;;
+C334;HANGUL SYLLABLE SSYAN;Lo;0;L;;;;;N;;;;;
+C335;HANGUL SYLLABLE SSYANI;Lo;0;L;;;;;N;;;;;
+C336;HANGUL SYLLABLE SSYANH;Lo;0;L;;;;;N;;;;;
+C337;HANGUL SYLLABLE SSYAD;Lo;0;L;;;;;N;;;;;
+C338;HANGUL SYLLABLE SSYAL;Lo;0;L;;;;;N;;;;;
+C339;HANGUL SYLLABLE SSYALG;Lo;0;L;;;;;N;;;;;
+C33A;HANGUL SYLLABLE SSYALM;Lo;0;L;;;;;N;;;;;
+C33B;HANGUL SYLLABLE SSYALB;Lo;0;L;;;;;N;;;;;
+C33C;HANGUL SYLLABLE SSYALS;Lo;0;L;;;;;N;;;;;
+C33D;HANGUL SYLLABLE SSYALT;Lo;0;L;;;;;N;;;;;
+C33E;HANGUL SYLLABLE SSYALP;Lo;0;L;;;;;N;;;;;
+C33F;HANGUL SYLLABLE SSYALH;Lo;0;L;;;;;N;;;;;
+C340;HANGUL SYLLABLE SSYAM;Lo;0;L;;;;;N;;;;;
+C341;HANGUL SYLLABLE SSYAB;Lo;0;L;;;;;N;;;;;
+C342;HANGUL SYLLABLE SSYABS;Lo;0;L;;;;;N;;;;;
+C343;HANGUL SYLLABLE SSYAS;Lo;0;L;;;;;N;;;;;
+C344;HANGUL SYLLABLE SSYASS;Lo;0;L;;;;;N;;;;;
+C345;HANGUL SYLLABLE SSYANG;Lo;0;L;;;;;N;;;;;
+C346;HANGUL SYLLABLE SSYAJ;Lo;0;L;;;;;N;;;;;
+C347;HANGUL SYLLABLE SSYAC;Lo;0;L;;;;;N;;;;;
+C348;HANGUL SYLLABLE SSYAK;Lo;0;L;;;;;N;;;;;
+C349;HANGUL SYLLABLE SSYAT;Lo;0;L;;;;;N;;;;;
+C34A;HANGUL SYLLABLE SSYAP;Lo;0;L;;;;;N;;;;;
+C34B;HANGUL SYLLABLE SSYAH;Lo;0;L;;;;;N;;;;;
+C34C;HANGUL SYLLABLE SSYAE;Lo;0;L;;;;;N;;;;;
+C34D;HANGUL SYLLABLE SSYAEG;Lo;0;L;;;;;N;;;;;
+C34E;HANGUL SYLLABLE SSYAEGG;Lo;0;L;;;;;N;;;;;
+C34F;HANGUL SYLLABLE SSYAEGS;Lo;0;L;;;;;N;;;;;
+C350;HANGUL SYLLABLE SSYAEN;Lo;0;L;;;;;N;;;;;
+C351;HANGUL SYLLABLE SSYAENI;Lo;0;L;;;;;N;;;;;
+C352;HANGUL SYLLABLE SSYAENH;Lo;0;L;;;;;N;;;;;
+C353;HANGUL SYLLABLE SSYAED;Lo;0;L;;;;;N;;;;;
+C354;HANGUL SYLLABLE SSYAEL;Lo;0;L;;;;;N;;;;;
+C355;HANGUL SYLLABLE SSYAELG;Lo;0;L;;;;;N;;;;;
+C356;HANGUL SYLLABLE SSYAELM;Lo;0;L;;;;;N;;;;;
+C357;HANGUL SYLLABLE SSYAELB;Lo;0;L;;;;;N;;;;;
+C358;HANGUL SYLLABLE SSYAELS;Lo;0;L;;;;;N;;;;;
+C359;HANGUL SYLLABLE SSYAELT;Lo;0;L;;;;;N;;;;;
+C35A;HANGUL SYLLABLE SSYAELP;Lo;0;L;;;;;N;;;;;
+C35B;HANGUL SYLLABLE SSYAELH;Lo;0;L;;;;;N;;;;;
+C35C;HANGUL SYLLABLE SSYAEM;Lo;0;L;;;;;N;;;;;
+C35D;HANGUL SYLLABLE SSYAEB;Lo;0;L;;;;;N;;;;;
+C35E;HANGUL SYLLABLE SSYAEBS;Lo;0;L;;;;;N;;;;;
+C35F;HANGUL SYLLABLE SSYAES;Lo;0;L;;;;;N;;;;;
+C360;HANGUL SYLLABLE SSYAESS;Lo;0;L;;;;;N;;;;;
+C361;HANGUL SYLLABLE SSYAENG;Lo;0;L;;;;;N;;;;;
+C362;HANGUL SYLLABLE SSYAEJ;Lo;0;L;;;;;N;;;;;
+C363;HANGUL SYLLABLE SSYAEC;Lo;0;L;;;;;N;;;;;
+C364;HANGUL SYLLABLE SSYAEK;Lo;0;L;;;;;N;;;;;
+C365;HANGUL SYLLABLE SSYAET;Lo;0;L;;;;;N;;;;;
+C366;HANGUL SYLLABLE SSYAEP;Lo;0;L;;;;;N;;;;;
+C367;HANGUL SYLLABLE SSYAEH;Lo;0;L;;;;;N;;;;;
+C368;HANGUL SYLLABLE SSEO;Lo;0;L;;;;;N;;;;;
+C369;HANGUL SYLLABLE SSEOG;Lo;0;L;;;;;N;;;;;
+C36A;HANGUL SYLLABLE SSEOGG;Lo;0;L;;;;;N;;;;;
+C36B;HANGUL SYLLABLE SSEOGS;Lo;0;L;;;;;N;;;;;
+C36C;HANGUL SYLLABLE SSEON;Lo;0;L;;;;;N;;;;;
+C36D;HANGUL SYLLABLE SSEONI;Lo;0;L;;;;;N;;;;;
+C36E;HANGUL SYLLABLE SSEONH;Lo;0;L;;;;;N;;;;;
+C36F;HANGUL SYLLABLE SSEOD;Lo;0;L;;;;;N;;;;;
+C370;HANGUL SYLLABLE SSEOL;Lo;0;L;;;;;N;;;;;
+C371;HANGUL SYLLABLE SSEOLG;Lo;0;L;;;;;N;;;;;
+C372;HANGUL SYLLABLE SSEOLM;Lo;0;L;;;;;N;;;;;
+C373;HANGUL SYLLABLE SSEOLB;Lo;0;L;;;;;N;;;;;
+C374;HANGUL SYLLABLE SSEOLS;Lo;0;L;;;;;N;;;;;
+C375;HANGUL SYLLABLE SSEOLT;Lo;0;L;;;;;N;;;;;
+C376;HANGUL SYLLABLE SSEOLP;Lo;0;L;;;;;N;;;;;
+C377;HANGUL SYLLABLE SSEOLH;Lo;0;L;;;;;N;;;;;
+C378;HANGUL SYLLABLE SSEOM;Lo;0;L;;;;;N;;;;;
+C379;HANGUL SYLLABLE SSEOB;Lo;0;L;;;;;N;;;;;
+C37A;HANGUL SYLLABLE SSEOBS;Lo;0;L;;;;;N;;;;;
+C37B;HANGUL SYLLABLE SSEOS;Lo;0;L;;;;;N;;;;;
+C37C;HANGUL SYLLABLE SSEOSS;Lo;0;L;;;;;N;;;;;
+C37D;HANGUL SYLLABLE SSEONG;Lo;0;L;;;;;N;;;;;
+C37E;HANGUL SYLLABLE SSEOJ;Lo;0;L;;;;;N;;;;;
+C37F;HANGUL SYLLABLE SSEOC;Lo;0;L;;;;;N;;;;;
+C380;HANGUL SYLLABLE SSEOK;Lo;0;L;;;;;N;;;;;
+C381;HANGUL SYLLABLE SSEOT;Lo;0;L;;;;;N;;;;;
+C382;HANGUL SYLLABLE SSEOP;Lo;0;L;;;;;N;;;;;
+C383;HANGUL SYLLABLE SSEOH;Lo;0;L;;;;;N;;;;;
+C384;HANGUL SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
+C385;HANGUL SYLLABLE SSEG;Lo;0;L;;;;;N;;;;;
+C386;HANGUL SYLLABLE SSEGG;Lo;0;L;;;;;N;;;;;
+C387;HANGUL SYLLABLE SSEGS;Lo;0;L;;;;;N;;;;;
+C388;HANGUL SYLLABLE SSEN;Lo;0;L;;;;;N;;;;;
+C389;HANGUL SYLLABLE SSENI;Lo;0;L;;;;;N;;;;;
+C38A;HANGUL SYLLABLE SSENH;Lo;0;L;;;;;N;;;;;
+C38B;HANGUL SYLLABLE SSED;Lo;0;L;;;;;N;;;;;
+C38C;HANGUL SYLLABLE SSEL;Lo;0;L;;;;;N;;;;;
+C38D;HANGUL SYLLABLE SSELG;Lo;0;L;;;;;N;;;;;
+C38E;HANGUL SYLLABLE SSELM;Lo;0;L;;;;;N;;;;;
+C38F;HANGUL SYLLABLE SSELB;Lo;0;L;;;;;N;;;;;
+C390;HANGUL SYLLABLE SSELS;Lo;0;L;;;;;N;;;;;
+C391;HANGUL SYLLABLE SSELT;Lo;0;L;;;;;N;;;;;
+C392;HANGUL SYLLABLE SSELP;Lo;0;L;;;;;N;;;;;
+C393;HANGUL SYLLABLE SSELH;Lo;0;L;;;;;N;;;;;
+C394;HANGUL SYLLABLE SSEM;Lo;0;L;;;;;N;;;;;
+C395;HANGUL SYLLABLE SSEB;Lo;0;L;;;;;N;;;;;
+C396;HANGUL SYLLABLE SSEBS;Lo;0;L;;;;;N;;;;;
+C397;HANGUL SYLLABLE SSES;Lo;0;L;;;;;N;;;;;
+C398;HANGUL SYLLABLE SSESS;Lo;0;L;;;;;N;;;;;
+C399;HANGUL SYLLABLE SSENG;Lo;0;L;;;;;N;;;;;
+C39A;HANGUL SYLLABLE SSEJ;Lo;0;L;;;;;N;;;;;
+C39B;HANGUL SYLLABLE SSEC;Lo;0;L;;;;;N;;;;;
+C39C;HANGUL SYLLABLE SSEK;Lo;0;L;;;;;N;;;;;
+C39D;HANGUL SYLLABLE SSET;Lo;0;L;;;;;N;;;;;
+C39E;HANGUL SYLLABLE SSEP;Lo;0;L;;;;;N;;;;;
+C39F;HANGUL SYLLABLE SSEH;Lo;0;L;;;;;N;;;;;
+C3A0;HANGUL SYLLABLE SSYEO;Lo;0;L;;;;;N;;;;;
+C3A1;HANGUL SYLLABLE SSYEOG;Lo;0;L;;;;;N;;;;;
+C3A2;HANGUL SYLLABLE SSYEOGG;Lo;0;L;;;;;N;;;;;
+C3A3;HANGUL SYLLABLE SSYEOGS;Lo;0;L;;;;;N;;;;;
+C3A4;HANGUL SYLLABLE SSYEON;Lo;0;L;;;;;N;;;;;
+C3A5;HANGUL SYLLABLE SSYEONI;Lo;0;L;;;;;N;;;;;
+C3A6;HANGUL SYLLABLE SSYEONH;Lo;0;L;;;;;N;;;;;
+C3A7;HANGUL SYLLABLE SSYEOD;Lo;0;L;;;;;N;;;;;
+C3A8;HANGUL SYLLABLE SSYEOL;Lo;0;L;;;;;N;;;;;
+C3A9;HANGUL SYLLABLE SSYEOLG;Lo;0;L;;;;;N;;;;;
+C3AA;HANGUL SYLLABLE SSYEOLM;Lo;0;L;;;;;N;;;;;
+C3AB;HANGUL SYLLABLE SSYEOLB;Lo;0;L;;;;;N;;;;;
+C3AC;HANGUL SYLLABLE SSYEOLS;Lo;0;L;;;;;N;;;;;
+C3AD;HANGUL SYLLABLE SSYEOLT;Lo;0;L;;;;;N;;;;;
+C3AE;HANGUL SYLLABLE SSYEOLP;Lo;0;L;;;;;N;;;;;
+C3AF;HANGUL SYLLABLE SSYEOLH;Lo;0;L;;;;;N;;;;;
+C3B0;HANGUL SYLLABLE SSYEOM;Lo;0;L;;;;;N;;;;;
+C3B1;HANGUL SYLLABLE SSYEOB;Lo;0;L;;;;;N;;;;;
+C3B2;HANGUL SYLLABLE SSYEOBS;Lo;0;L;;;;;N;;;;;
+C3B3;HANGUL SYLLABLE SSYEOS;Lo;0;L;;;;;N;;;;;
+C3B4;HANGUL SYLLABLE SSYEOSS;Lo;0;L;;;;;N;;;;;
+C3B5;HANGUL SYLLABLE SSYEONG;Lo;0;L;;;;;N;;;;;
+C3B6;HANGUL SYLLABLE SSYEOJ;Lo;0;L;;;;;N;;;;;
+C3B7;HANGUL SYLLABLE SSYEOC;Lo;0;L;;;;;N;;;;;
+C3B8;HANGUL SYLLABLE SSYEOK;Lo;0;L;;;;;N;;;;;
+C3B9;HANGUL SYLLABLE SSYEOT;Lo;0;L;;;;;N;;;;;
+C3BA;HANGUL SYLLABLE SSYEOP;Lo;0;L;;;;;N;;;;;
+C3BB;HANGUL SYLLABLE SSYEOH;Lo;0;L;;;;;N;;;;;
+C3BC;HANGUL SYLLABLE SSYE;Lo;0;L;;;;;N;;;;;
+C3BD;HANGUL SYLLABLE SSYEG;Lo;0;L;;;;;N;;;;;
+C3BE;HANGUL SYLLABLE SSYEGG;Lo;0;L;;;;;N;;;;;
+C3BF;HANGUL SYLLABLE SSYEGS;Lo;0;L;;;;;N;;;;;
+C3C0;HANGUL SYLLABLE SSYEN;Lo;0;L;;;;;N;;;;;
+C3C1;HANGUL SYLLABLE SSYENI;Lo;0;L;;;;;N;;;;;
+C3C2;HANGUL SYLLABLE SSYENH;Lo;0;L;;;;;N;;;;;
+C3C3;HANGUL SYLLABLE SSYED;Lo;0;L;;;;;N;;;;;
+C3C4;HANGUL SYLLABLE SSYEL;Lo;0;L;;;;;N;;;;;
+C3C5;HANGUL SYLLABLE SSYELG;Lo;0;L;;;;;N;;;;;
+C3C6;HANGUL SYLLABLE SSYELM;Lo;0;L;;;;;N;;;;;
+C3C7;HANGUL SYLLABLE SSYELB;Lo;0;L;;;;;N;;;;;
+C3C8;HANGUL SYLLABLE SSYELS;Lo;0;L;;;;;N;;;;;
+C3C9;HANGUL SYLLABLE SSYELT;Lo;0;L;;;;;N;;;;;
+C3CA;HANGUL SYLLABLE SSYELP;Lo;0;L;;;;;N;;;;;
+C3CB;HANGUL SYLLABLE SSYELH;Lo;0;L;;;;;N;;;;;
+C3CC;HANGUL SYLLABLE SSYEM;Lo;0;L;;;;;N;;;;;
+C3CD;HANGUL SYLLABLE SSYEB;Lo;0;L;;;;;N;;;;;
+C3CE;HANGUL SYLLABLE SSYEBS;Lo;0;L;;;;;N;;;;;
+C3CF;HANGUL SYLLABLE SSYES;Lo;0;L;;;;;N;;;;;
+C3D0;HANGUL SYLLABLE SSYESS;Lo;0;L;;;;;N;;;;;
+C3D1;HANGUL SYLLABLE SSYENG;Lo;0;L;;;;;N;;;;;
+C3D2;HANGUL SYLLABLE SSYEJ;Lo;0;L;;;;;N;;;;;
+C3D3;HANGUL SYLLABLE SSYEC;Lo;0;L;;;;;N;;;;;
+C3D4;HANGUL SYLLABLE SSYEK;Lo;0;L;;;;;N;;;;;
+C3D5;HANGUL SYLLABLE SSYET;Lo;0;L;;;;;N;;;;;
+C3D6;HANGUL SYLLABLE SSYEP;Lo;0;L;;;;;N;;;;;
+C3D7;HANGUL SYLLABLE SSYEH;Lo;0;L;;;;;N;;;;;
+C3D8;HANGUL SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
+C3D9;HANGUL SYLLABLE SSOG;Lo;0;L;;;;;N;;;;;
+C3DA;HANGUL SYLLABLE SSOGG;Lo;0;L;;;;;N;;;;;
+C3DB;HANGUL SYLLABLE SSOGS;Lo;0;L;;;;;N;;;;;
+C3DC;HANGUL SYLLABLE SSON;Lo;0;L;;;;;N;;;;;
+C3DD;HANGUL SYLLABLE SSONI;Lo;0;L;;;;;N;;;;;
+C3DE;HANGUL SYLLABLE SSONH;Lo;0;L;;;;;N;;;;;
+C3DF;HANGUL SYLLABLE SSOD;Lo;0;L;;;;;N;;;;;
+C3E0;HANGUL SYLLABLE SSOL;Lo;0;L;;;;;N;;;;;
+C3E1;HANGUL SYLLABLE SSOLG;Lo;0;L;;;;;N;;;;;
+C3E2;HANGUL SYLLABLE SSOLM;Lo;0;L;;;;;N;;;;;
+C3E3;HANGUL SYLLABLE SSOLB;Lo;0;L;;;;;N;;;;;
+C3E4;HANGUL SYLLABLE SSOLS;Lo;0;L;;;;;N;;;;;
+C3E5;HANGUL SYLLABLE SSOLT;Lo;0;L;;;;;N;;;;;
+C3E6;HANGUL SYLLABLE SSOLP;Lo;0;L;;;;;N;;;;;
+C3E7;HANGUL SYLLABLE SSOLH;Lo;0;L;;;;;N;;;;;
+C3E8;HANGUL SYLLABLE SSOM;Lo;0;L;;;;;N;;;;;
+C3E9;HANGUL SYLLABLE SSOB;Lo;0;L;;;;;N;;;;;
+C3EA;HANGUL SYLLABLE SSOBS;Lo;0;L;;;;;N;;;;;
+C3EB;HANGUL SYLLABLE SSOS;Lo;0;L;;;;;N;;;;;
+C3EC;HANGUL SYLLABLE SSOSS;Lo;0;L;;;;;N;;;;;
+C3ED;HANGUL SYLLABLE SSONG;Lo;0;L;;;;;N;;;;;
+C3EE;HANGUL SYLLABLE SSOJ;Lo;0;L;;;;;N;;;;;
+C3EF;HANGUL SYLLABLE SSOC;Lo;0;L;;;;;N;;;;;
+C3F0;HANGUL SYLLABLE SSOK;Lo;0;L;;;;;N;;;;;
+C3F1;HANGUL SYLLABLE SSOT;Lo;0;L;;;;;N;;;;;
+C3F2;HANGUL SYLLABLE SSOP;Lo;0;L;;;;;N;;;;;
+C3F3;HANGUL SYLLABLE SSOH;Lo;0;L;;;;;N;;;;;
+C3F4;HANGUL SYLLABLE SSWA;Lo;0;L;;;;;N;;;;;
+C3F5;HANGUL SYLLABLE SSWAG;Lo;0;L;;;;;N;;;;;
+C3F6;HANGUL SYLLABLE SSWAGG;Lo;0;L;;;;;N;;;;;
+C3F7;HANGUL SYLLABLE SSWAGS;Lo;0;L;;;;;N;;;;;
+C3F8;HANGUL SYLLABLE SSWAN;Lo;0;L;;;;;N;;;;;
+C3F9;HANGUL SYLLABLE SSWANI;Lo;0;L;;;;;N;;;;;
+C3FA;HANGUL SYLLABLE SSWANH;Lo;0;L;;;;;N;;;;;
+C3FB;HANGUL SYLLABLE SSWAD;Lo;0;L;;;;;N;;;;;
+C3FC;HANGUL SYLLABLE SSWAL;Lo;0;L;;;;;N;;;;;
+C3FD;HANGUL SYLLABLE SSWALG;Lo;0;L;;;;;N;;;;;
+C3FE;HANGUL SYLLABLE SSWALM;Lo;0;L;;;;;N;;;;;
+C3FF;HANGUL SYLLABLE SSWALB;Lo;0;L;;;;;N;;;;;
+C400;HANGUL SYLLABLE SSWALS;Lo;0;L;;;;;N;;;;;
+C401;HANGUL SYLLABLE SSWALT;Lo;0;L;;;;;N;;;;;
+C402;HANGUL SYLLABLE SSWALP;Lo;0;L;;;;;N;;;;;
+C403;HANGUL SYLLABLE SSWALH;Lo;0;L;;;;;N;;;;;
+C404;HANGUL SYLLABLE SSWAM;Lo;0;L;;;;;N;;;;;
+C405;HANGUL SYLLABLE SSWAB;Lo;0;L;;;;;N;;;;;
+C406;HANGUL SYLLABLE SSWABS;Lo;0;L;;;;;N;;;;;
+C407;HANGUL SYLLABLE SSWAS;Lo;0;L;;;;;N;;;;;
+C408;HANGUL SYLLABLE SSWASS;Lo;0;L;;;;;N;;;;;
+C409;HANGUL SYLLABLE SSWANG;Lo;0;L;;;;;N;;;;;
+C40A;HANGUL SYLLABLE SSWAJ;Lo;0;L;;;;;N;;;;;
+C40B;HANGUL SYLLABLE SSWAC;Lo;0;L;;;;;N;;;;;
+C40C;HANGUL SYLLABLE SSWAK;Lo;0;L;;;;;N;;;;;
+C40D;HANGUL SYLLABLE SSWAT;Lo;0;L;;;;;N;;;;;
+C40E;HANGUL SYLLABLE SSWAP;Lo;0;L;;;;;N;;;;;
+C40F;HANGUL SYLLABLE SSWAH;Lo;0;L;;;;;N;;;;;
+C410;HANGUL SYLLABLE SSWAE;Lo;0;L;;;;;N;;;;;
+C411;HANGUL SYLLABLE SSWAEG;Lo;0;L;;;;;N;;;;;
+C412;HANGUL SYLLABLE SSWAEGG;Lo;0;L;;;;;N;;;;;
+C413;HANGUL SYLLABLE SSWAEGS;Lo;0;L;;;;;N;;;;;
+C414;HANGUL SYLLABLE SSWAEN;Lo;0;L;;;;;N;;;;;
+C415;HANGUL SYLLABLE SSWAENI;Lo;0;L;;;;;N;;;;;
+C416;HANGUL SYLLABLE SSWAENH;Lo;0;L;;;;;N;;;;;
+C417;HANGUL SYLLABLE SSWAED;Lo;0;L;;;;;N;;;;;
+C418;HANGUL SYLLABLE SSWAEL;Lo;0;L;;;;;N;;;;;
+C419;HANGUL SYLLABLE SSWAELG;Lo;0;L;;;;;N;;;;;
+C41A;HANGUL SYLLABLE SSWAELM;Lo;0;L;;;;;N;;;;;
+C41B;HANGUL SYLLABLE SSWAELB;Lo;0;L;;;;;N;;;;;
+C41C;HANGUL SYLLABLE SSWAELS;Lo;0;L;;;;;N;;;;;
+C41D;HANGUL SYLLABLE SSWAELT;Lo;0;L;;;;;N;;;;;
+C41E;HANGUL SYLLABLE SSWAELP;Lo;0;L;;;;;N;;;;;
+C41F;HANGUL SYLLABLE SSWAELH;Lo;0;L;;;;;N;;;;;
+C420;HANGUL SYLLABLE SSWAEM;Lo;0;L;;;;;N;;;;;
+C421;HANGUL SYLLABLE SSWAEB;Lo;0;L;;;;;N;;;;;
+C422;HANGUL SYLLABLE SSWAEBS;Lo;0;L;;;;;N;;;;;
+C423;HANGUL SYLLABLE SSWAES;Lo;0;L;;;;;N;;;;;
+C424;HANGUL SYLLABLE SSWAESS;Lo;0;L;;;;;N;;;;;
+C425;HANGUL SYLLABLE SSWAENG;Lo;0;L;;;;;N;;;;;
+C426;HANGUL SYLLABLE SSWAEJ;Lo;0;L;;;;;N;;;;;
+C427;HANGUL SYLLABLE SSWAEC;Lo;0;L;;;;;N;;;;;
+C428;HANGUL SYLLABLE SSWAEK;Lo;0;L;;;;;N;;;;;
+C429;HANGUL SYLLABLE SSWAET;Lo;0;L;;;;;N;;;;;
+C42A;HANGUL SYLLABLE SSWAEP;Lo;0;L;;;;;N;;;;;
+C42B;HANGUL SYLLABLE SSWAEH;Lo;0;L;;;;;N;;;;;
+C42C;HANGUL SYLLABLE SSOE;Lo;0;L;;;;;N;;;;;
+C42D;HANGUL SYLLABLE SSOEG;Lo;0;L;;;;;N;;;;;
+C42E;HANGUL SYLLABLE SSOEGG;Lo;0;L;;;;;N;;;;;
+C42F;HANGUL SYLLABLE SSOEGS;Lo;0;L;;;;;N;;;;;
+C430;HANGUL SYLLABLE SSOEN;Lo;0;L;;;;;N;;;;;
+C431;HANGUL SYLLABLE SSOENI;Lo;0;L;;;;;N;;;;;
+C432;HANGUL SYLLABLE SSOENH;Lo;0;L;;;;;N;;;;;
+C433;HANGUL SYLLABLE SSOED;Lo;0;L;;;;;N;;;;;
+C434;HANGUL SYLLABLE SSOEL;Lo;0;L;;;;;N;;;;;
+C435;HANGUL SYLLABLE SSOELG;Lo;0;L;;;;;N;;;;;
+C436;HANGUL SYLLABLE SSOELM;Lo;0;L;;;;;N;;;;;
+C437;HANGUL SYLLABLE SSOELB;Lo;0;L;;;;;N;;;;;
+C438;HANGUL SYLLABLE SSOELS;Lo;0;L;;;;;N;;;;;
+C439;HANGUL SYLLABLE SSOELT;Lo;0;L;;;;;N;;;;;
+C43A;HANGUL SYLLABLE SSOELP;Lo;0;L;;;;;N;;;;;
+C43B;HANGUL SYLLABLE SSOELH;Lo;0;L;;;;;N;;;;;
+C43C;HANGUL SYLLABLE SSOEM;Lo;0;L;;;;;N;;;;;
+C43D;HANGUL SYLLABLE SSOEB;Lo;0;L;;;;;N;;;;;
+C43E;HANGUL SYLLABLE SSOEBS;Lo;0;L;;;;;N;;;;;
+C43F;HANGUL SYLLABLE SSOES;Lo;0;L;;;;;N;;;;;
+C440;HANGUL SYLLABLE SSOESS;Lo;0;L;;;;;N;;;;;
+C441;HANGUL SYLLABLE SSOENG;Lo;0;L;;;;;N;;;;;
+C442;HANGUL SYLLABLE SSOEJ;Lo;0;L;;;;;N;;;;;
+C443;HANGUL SYLLABLE SSOEC;Lo;0;L;;;;;N;;;;;
+C444;HANGUL SYLLABLE SSOEK;Lo;0;L;;;;;N;;;;;
+C445;HANGUL SYLLABLE SSOET;Lo;0;L;;;;;N;;;;;
+C446;HANGUL SYLLABLE SSOEP;Lo;0;L;;;;;N;;;;;
+C447;HANGUL SYLLABLE SSOEH;Lo;0;L;;;;;N;;;;;
+C448;HANGUL SYLLABLE SSYO;Lo;0;L;;;;;N;;;;;
+C449;HANGUL SYLLABLE SSYOG;Lo;0;L;;;;;N;;;;;
+C44A;HANGUL SYLLABLE SSYOGG;Lo;0;L;;;;;N;;;;;
+C44B;HANGUL SYLLABLE SSYOGS;Lo;0;L;;;;;N;;;;;
+C44C;HANGUL SYLLABLE SSYON;Lo;0;L;;;;;N;;;;;
+C44D;HANGUL SYLLABLE SSYONI;Lo;0;L;;;;;N;;;;;
+C44E;HANGUL SYLLABLE SSYONH;Lo;0;L;;;;;N;;;;;
+C44F;HANGUL SYLLABLE SSYOD;Lo;0;L;;;;;N;;;;;
+C450;HANGUL SYLLABLE SSYOL;Lo;0;L;;;;;N;;;;;
+C451;HANGUL SYLLABLE SSYOLG;Lo;0;L;;;;;N;;;;;
+C452;HANGUL SYLLABLE SSYOLM;Lo;0;L;;;;;N;;;;;
+C453;HANGUL SYLLABLE SSYOLB;Lo;0;L;;;;;N;;;;;
+C454;HANGUL SYLLABLE SSYOLS;Lo;0;L;;;;;N;;;;;
+C455;HANGUL SYLLABLE SSYOLT;Lo;0;L;;;;;N;;;;;
+C456;HANGUL SYLLABLE SSYOLP;Lo;0;L;;;;;N;;;;;
+C457;HANGUL SYLLABLE SSYOLH;Lo;0;L;;;;;N;;;;;
+C458;HANGUL SYLLABLE SSYOM;Lo;0;L;;;;;N;;;;;
+C459;HANGUL SYLLABLE SSYOB;Lo;0;L;;;;;N;;;;;
+C45A;HANGUL SYLLABLE SSYOBS;Lo;0;L;;;;;N;;;;;
+C45B;HANGUL SYLLABLE SSYOS;Lo;0;L;;;;;N;;;;;
+C45C;HANGUL SYLLABLE SSYOSS;Lo;0;L;;;;;N;;;;;
+C45D;HANGUL SYLLABLE SSYONG;Lo;0;L;;;;;N;;;;;
+C45E;HANGUL SYLLABLE SSYOJ;Lo;0;L;;;;;N;;;;;
+C45F;HANGUL SYLLABLE SSYOC;Lo;0;L;;;;;N;;;;;
+C460;HANGUL SYLLABLE SSYOK;Lo;0;L;;;;;N;;;;;
+C461;HANGUL SYLLABLE SSYOT;Lo;0;L;;;;;N;;;;;
+C462;HANGUL SYLLABLE SSYOP;Lo;0;L;;;;;N;;;;;
+C463;HANGUL SYLLABLE SSYOH;Lo;0;L;;;;;N;;;;;
+C464;HANGUL SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
+C465;HANGUL SYLLABLE SSUG;Lo;0;L;;;;;N;;;;;
+C466;HANGUL SYLLABLE SSUGG;Lo;0;L;;;;;N;;;;;
+C467;HANGUL SYLLABLE SSUGS;Lo;0;L;;;;;N;;;;;
+C468;HANGUL SYLLABLE SSUN;Lo;0;L;;;;;N;;;;;
+C469;HANGUL SYLLABLE SSUNI;Lo;0;L;;;;;N;;;;;
+C46A;HANGUL SYLLABLE SSUNH;Lo;0;L;;;;;N;;;;;
+C46B;HANGUL SYLLABLE SSUD;Lo;0;L;;;;;N;;;;;
+C46C;HANGUL SYLLABLE SSUL;Lo;0;L;;;;;N;;;;;
+C46D;HANGUL SYLLABLE SSULG;Lo;0;L;;;;;N;;;;;
+C46E;HANGUL SYLLABLE SSULM;Lo;0;L;;;;;N;;;;;
+C46F;HANGUL SYLLABLE SSULB;Lo;0;L;;;;;N;;;;;
+C470;HANGUL SYLLABLE SSULS;Lo;0;L;;;;;N;;;;;
+C471;HANGUL SYLLABLE SSULT;Lo;0;L;;;;;N;;;;;
+C472;HANGUL SYLLABLE SSULP;Lo;0;L;;;;;N;;;;;
+C473;HANGUL SYLLABLE SSULH;Lo;0;L;;;;;N;;;;;
+C474;HANGUL SYLLABLE SSUM;Lo;0;L;;;;;N;;;;;
+C475;HANGUL SYLLABLE SSUB;Lo;0;L;;;;;N;;;;;
+C476;HANGUL SYLLABLE SSUBS;Lo;0;L;;;;;N;;;;;
+C477;HANGUL SYLLABLE SSUS;Lo;0;L;;;;;N;;;;;
+C478;HANGUL SYLLABLE SSUSS;Lo;0;L;;;;;N;;;;;
+C479;HANGUL SYLLABLE SSUNG;Lo;0;L;;;;;N;;;;;
+C47A;HANGUL SYLLABLE SSUJ;Lo;0;L;;;;;N;;;;;
+C47B;HANGUL SYLLABLE SSUC;Lo;0;L;;;;;N;;;;;
+C47C;HANGUL SYLLABLE SSUK;Lo;0;L;;;;;N;;;;;
+C47D;HANGUL SYLLABLE SSUT;Lo;0;L;;;;;N;;;;;
+C47E;HANGUL SYLLABLE SSUP;Lo;0;L;;;;;N;;;;;
+C47F;HANGUL SYLLABLE SSUH;Lo;0;L;;;;;N;;;;;
+C480;HANGUL SYLLABLE SSWEO;Lo;0;L;;;;;N;;;;;
+C481;HANGUL SYLLABLE SSWEOG;Lo;0;L;;;;;N;;;;;
+C482;HANGUL SYLLABLE SSWEOGG;Lo;0;L;;;;;N;;;;;
+C483;HANGUL SYLLABLE SSWEOGS;Lo;0;L;;;;;N;;;;;
+C484;HANGUL SYLLABLE SSWEON;Lo;0;L;;;;;N;;;;;
+C485;HANGUL SYLLABLE SSWEONI;Lo;0;L;;;;;N;;;;;
+C486;HANGUL SYLLABLE SSWEONH;Lo;0;L;;;;;N;;;;;
+C487;HANGUL SYLLABLE SSWEOD;Lo;0;L;;;;;N;;;;;
+C488;HANGUL SYLLABLE SSWEOL;Lo;0;L;;;;;N;;;;;
+C489;HANGUL SYLLABLE SSWEOLG;Lo;0;L;;;;;N;;;;;
+C48A;HANGUL SYLLABLE SSWEOLM;Lo;0;L;;;;;N;;;;;
+C48B;HANGUL SYLLABLE SSWEOLB;Lo;0;L;;;;;N;;;;;
+C48C;HANGUL SYLLABLE SSWEOLS;Lo;0;L;;;;;N;;;;;
+C48D;HANGUL SYLLABLE SSWEOLT;Lo;0;L;;;;;N;;;;;
+C48E;HANGUL SYLLABLE SSWEOLP;Lo;0;L;;;;;N;;;;;
+C48F;HANGUL SYLLABLE SSWEOLH;Lo;0;L;;;;;N;;;;;
+C490;HANGUL SYLLABLE SSWEOM;Lo;0;L;;;;;N;;;;;
+C491;HANGUL SYLLABLE SSWEOB;Lo;0;L;;;;;N;;;;;
+C492;HANGUL SYLLABLE SSWEOBS;Lo;0;L;;;;;N;;;;;
+C493;HANGUL SYLLABLE SSWEOS;Lo;0;L;;;;;N;;;;;
+C494;HANGUL SYLLABLE SSWEOSS;Lo;0;L;;;;;N;;;;;
+C495;HANGUL SYLLABLE SSWEONG;Lo;0;L;;;;;N;;;;;
+C496;HANGUL SYLLABLE SSWEOJ;Lo;0;L;;;;;N;;;;;
+C497;HANGUL SYLLABLE SSWEOC;Lo;0;L;;;;;N;;;;;
+C498;HANGUL SYLLABLE SSWEOK;Lo;0;L;;;;;N;;;;;
+C499;HANGUL SYLLABLE SSWEOT;Lo;0;L;;;;;N;;;;;
+C49A;HANGUL SYLLABLE SSWEOP;Lo;0;L;;;;;N;;;;;
+C49B;HANGUL SYLLABLE SSWEOH;Lo;0;L;;;;;N;;;;;
+C49C;HANGUL SYLLABLE SSWE;Lo;0;L;;;;;N;;;;;
+C49D;HANGUL SYLLABLE SSWEG;Lo;0;L;;;;;N;;;;;
+C49E;HANGUL SYLLABLE SSWEGG;Lo;0;L;;;;;N;;;;;
+C49F;HANGUL SYLLABLE SSWEGS;Lo;0;L;;;;;N;;;;;
+C4A0;HANGUL SYLLABLE SSWEN;Lo;0;L;;;;;N;;;;;
+C4A1;HANGUL SYLLABLE SSWENI;Lo;0;L;;;;;N;;;;;
+C4A2;HANGUL SYLLABLE SSWENH;Lo;0;L;;;;;N;;;;;
+C4A3;HANGUL SYLLABLE SSWED;Lo;0;L;;;;;N;;;;;
+C4A4;HANGUL SYLLABLE SSWEL;Lo;0;L;;;;;N;;;;;
+C4A5;HANGUL SYLLABLE SSWELG;Lo;0;L;;;;;N;;;;;
+C4A6;HANGUL SYLLABLE SSWELM;Lo;0;L;;;;;N;;;;;
+C4A7;HANGUL SYLLABLE SSWELB;Lo;0;L;;;;;N;;;;;
+C4A8;HANGUL SYLLABLE SSWELS;Lo;0;L;;;;;N;;;;;
+C4A9;HANGUL SYLLABLE SSWELT;Lo;0;L;;;;;N;;;;;
+C4AA;HANGUL SYLLABLE SSWELP;Lo;0;L;;;;;N;;;;;
+C4AB;HANGUL SYLLABLE SSWELH;Lo;0;L;;;;;N;;;;;
+C4AC;HANGUL SYLLABLE SSWEM;Lo;0;L;;;;;N;;;;;
+C4AD;HANGUL SYLLABLE SSWEB;Lo;0;L;;;;;N;;;;;
+C4AE;HANGUL SYLLABLE SSWEBS;Lo;0;L;;;;;N;;;;;
+C4AF;HANGUL SYLLABLE SSWES;Lo;0;L;;;;;N;;;;;
+C4B0;HANGUL SYLLABLE SSWESS;Lo;0;L;;;;;N;;;;;
+C4B1;HANGUL SYLLABLE SSWENG;Lo;0;L;;;;;N;;;;;
+C4B2;HANGUL SYLLABLE SSWEJ;Lo;0;L;;;;;N;;;;;
+C4B3;HANGUL SYLLABLE SSWEC;Lo;0;L;;;;;N;;;;;
+C4B4;HANGUL SYLLABLE SSWEK;Lo;0;L;;;;;N;;;;;
+C4B5;HANGUL SYLLABLE SSWET;Lo;0;L;;;;;N;;;;;
+C4B6;HANGUL SYLLABLE SSWEP;Lo;0;L;;;;;N;;;;;
+C4B7;HANGUL SYLLABLE SSWEH;Lo;0;L;;;;;N;;;;;
+C4B8;HANGUL SYLLABLE SSWI;Lo;0;L;;;;;N;;;;;
+C4B9;HANGUL SYLLABLE SSWIG;Lo;0;L;;;;;N;;;;;
+C4BA;HANGUL SYLLABLE SSWIGG;Lo;0;L;;;;;N;;;;;
+C4BB;HANGUL SYLLABLE SSWIGS;Lo;0;L;;;;;N;;;;;
+C4BC;HANGUL SYLLABLE SSWIN;Lo;0;L;;;;;N;;;;;
+C4BD;HANGUL SYLLABLE SSWINI;Lo;0;L;;;;;N;;;;;
+C4BE;HANGUL SYLLABLE SSWINH;Lo;0;L;;;;;N;;;;;
+C4BF;HANGUL SYLLABLE SSWID;Lo;0;L;;;;;N;;;;;
+C4C0;HANGUL SYLLABLE SSWIL;Lo;0;L;;;;;N;;;;;
+C4C1;HANGUL SYLLABLE SSWILG;Lo;0;L;;;;;N;;;;;
+C4C2;HANGUL SYLLABLE SSWILM;Lo;0;L;;;;;N;;;;;
+C4C3;HANGUL SYLLABLE SSWILB;Lo;0;L;;;;;N;;;;;
+C4C4;HANGUL SYLLABLE SSWILS;Lo;0;L;;;;;N;;;;;
+C4C5;HANGUL SYLLABLE SSWILT;Lo;0;L;;;;;N;;;;;
+C4C6;HANGUL SYLLABLE SSWILP;Lo;0;L;;;;;N;;;;;
+C4C7;HANGUL SYLLABLE SSWILH;Lo;0;L;;;;;N;;;;;
+C4C8;HANGUL SYLLABLE SSWIM;Lo;0;L;;;;;N;;;;;
+C4C9;HANGUL SYLLABLE SSWIB;Lo;0;L;;;;;N;;;;;
+C4CA;HANGUL SYLLABLE SSWIBS;Lo;0;L;;;;;N;;;;;
+C4CB;HANGUL SYLLABLE SSWIS;Lo;0;L;;;;;N;;;;;
+C4CC;HANGUL SYLLABLE SSWISS;Lo;0;L;;;;;N;;;;;
+C4CD;HANGUL SYLLABLE SSWING;Lo;0;L;;;;;N;;;;;
+C4CE;HANGUL SYLLABLE SSWIJ;Lo;0;L;;;;;N;;;;;
+C4CF;HANGUL SYLLABLE SSWIC;Lo;0;L;;;;;N;;;;;
+C4D0;HANGUL SYLLABLE SSWIK;Lo;0;L;;;;;N;;;;;
+C4D1;HANGUL SYLLABLE SSWIT;Lo;0;L;;;;;N;;;;;
+C4D2;HANGUL SYLLABLE SSWIP;Lo;0;L;;;;;N;;;;;
+C4D3;HANGUL SYLLABLE SSWIH;Lo;0;L;;;;;N;;;;;
+C4D4;HANGUL SYLLABLE SSYU;Lo;0;L;;;;;N;;;;;
+C4D5;HANGUL SYLLABLE SSYUG;Lo;0;L;;;;;N;;;;;
+C4D6;HANGUL SYLLABLE SSYUGG;Lo;0;L;;;;;N;;;;;
+C4D7;HANGUL SYLLABLE SSYUGS;Lo;0;L;;;;;N;;;;;
+C4D8;HANGUL SYLLABLE SSYUN;Lo;0;L;;;;;N;;;;;
+C4D9;HANGUL SYLLABLE SSYUNI;Lo;0;L;;;;;N;;;;;
+C4DA;HANGUL SYLLABLE SSYUNH;Lo;0;L;;;;;N;;;;;
+C4DB;HANGUL SYLLABLE SSYUD;Lo;0;L;;;;;N;;;;;
+C4DC;HANGUL SYLLABLE SSYUL;Lo;0;L;;;;;N;;;;;
+C4DD;HANGUL SYLLABLE SSYULG;Lo;0;L;;;;;N;;;;;
+C4DE;HANGUL SYLLABLE SSYULM;Lo;0;L;;;;;N;;;;;
+C4DF;HANGUL SYLLABLE SSYULB;Lo;0;L;;;;;N;;;;;
+C4E0;HANGUL SYLLABLE SSYULS;Lo;0;L;;;;;N;;;;;
+C4E1;HANGUL SYLLABLE SSYULT;Lo;0;L;;;;;N;;;;;
+C4E2;HANGUL SYLLABLE SSYULP;Lo;0;L;;;;;N;;;;;
+C4E3;HANGUL SYLLABLE SSYULH;Lo;0;L;;;;;N;;;;;
+C4E4;HANGUL SYLLABLE SSYUM;Lo;0;L;;;;;N;;;;;
+C4E5;HANGUL SYLLABLE SSYUB;Lo;0;L;;;;;N;;;;;
+C4E6;HANGUL SYLLABLE SSYUBS;Lo;0;L;;;;;N;;;;;
+C4E7;HANGUL SYLLABLE SSYUS;Lo;0;L;;;;;N;;;;;
+C4E8;HANGUL SYLLABLE SSYUSS;Lo;0;L;;;;;N;;;;;
+C4E9;HANGUL SYLLABLE SSYUNG;Lo;0;L;;;;;N;;;;;
+C4EA;HANGUL SYLLABLE SSYUJ;Lo;0;L;;;;;N;;;;;
+C4EB;HANGUL SYLLABLE SSYUC;Lo;0;L;;;;;N;;;;;
+C4EC;HANGUL SYLLABLE SSYUK;Lo;0;L;;;;;N;;;;;
+C4ED;HANGUL SYLLABLE SSYUT;Lo;0;L;;;;;N;;;;;
+C4EE;HANGUL SYLLABLE SSYUP;Lo;0;L;;;;;N;;;;;
+C4EF;HANGUL SYLLABLE SSYUH;Lo;0;L;;;;;N;;;;;
+C4F0;HANGUL SYLLABLE SSEU;Lo;0;L;;;;;N;;;;;
+C4F1;HANGUL SYLLABLE SSEUG;Lo;0;L;;;;;N;;;;;
+C4F2;HANGUL SYLLABLE SSEUGG;Lo;0;L;;;;;N;;;;;
+C4F3;HANGUL SYLLABLE SSEUGS;Lo;0;L;;;;;N;;;;;
+C4F4;HANGUL SYLLABLE SSEUN;Lo;0;L;;;;;N;;;;;
+C4F5;HANGUL SYLLABLE SSEUNI;Lo;0;L;;;;;N;;;;;
+C4F6;HANGUL SYLLABLE SSEUNH;Lo;0;L;;;;;N;;;;;
+C4F7;HANGUL SYLLABLE SSEUD;Lo;0;L;;;;;N;;;;;
+C4F8;HANGUL SYLLABLE SSEUL;Lo;0;L;;;;;N;;;;;
+C4F9;HANGUL SYLLABLE SSEULG;Lo;0;L;;;;;N;;;;;
+C4FA;HANGUL SYLLABLE SSEULM;Lo;0;L;;;;;N;;;;;
+C4FB;HANGUL SYLLABLE SSEULB;Lo;0;L;;;;;N;;;;;
+C4FC;HANGUL SYLLABLE SSEULS;Lo;0;L;;;;;N;;;;;
+C4FD;HANGUL SYLLABLE SSEULT;Lo;0;L;;;;;N;;;;;
+C4FE;HANGUL SYLLABLE SSEULP;Lo;0;L;;;;;N;;;;;
+C4FF;HANGUL SYLLABLE SSEULH;Lo;0;L;;;;;N;;;;;
+C500;HANGUL SYLLABLE SSEUM;Lo;0;L;;;;;N;;;;;
+C501;HANGUL SYLLABLE SSEUB;Lo;0;L;;;;;N;;;;;
+C502;HANGUL SYLLABLE SSEUBS;Lo;0;L;;;;;N;;;;;
+C503;HANGUL SYLLABLE SSEUS;Lo;0;L;;;;;N;;;;;
+C504;HANGUL SYLLABLE SSEUSS;Lo;0;L;;;;;N;;;;;
+C505;HANGUL SYLLABLE SSEUNG;Lo;0;L;;;;;N;;;;;
+C506;HANGUL SYLLABLE SSEUJ;Lo;0;L;;;;;N;;;;;
+C507;HANGUL SYLLABLE SSEUC;Lo;0;L;;;;;N;;;;;
+C508;HANGUL SYLLABLE SSEUK;Lo;0;L;;;;;N;;;;;
+C509;HANGUL SYLLABLE SSEUT;Lo;0;L;;;;;N;;;;;
+C50A;HANGUL SYLLABLE SSEUP;Lo;0;L;;;;;N;;;;;
+C50B;HANGUL SYLLABLE SSEUH;Lo;0;L;;;;;N;;;;;
+C50C;HANGUL SYLLABLE SSYI;Lo;0;L;;;;;N;;;;;
+C50D;HANGUL SYLLABLE SSYIG;Lo;0;L;;;;;N;;;;;
+C50E;HANGUL SYLLABLE SSYIGG;Lo;0;L;;;;;N;;;;;
+C50F;HANGUL SYLLABLE SSYIGS;Lo;0;L;;;;;N;;;;;
+C510;HANGUL SYLLABLE SSYIN;Lo;0;L;;;;;N;;;;;
+C511;HANGUL SYLLABLE SSYINI;Lo;0;L;;;;;N;;;;;
+C512;HANGUL SYLLABLE SSYINH;Lo;0;L;;;;;N;;;;;
+C513;HANGUL SYLLABLE SSYID;Lo;0;L;;;;;N;;;;;
+C514;HANGUL SYLLABLE SSYIL;Lo;0;L;;;;;N;;;;;
+C515;HANGUL SYLLABLE SSYILG;Lo;0;L;;;;;N;;;;;
+C516;HANGUL SYLLABLE SSYILM;Lo;0;L;;;;;N;;;;;
+C517;HANGUL SYLLABLE SSYILB;Lo;0;L;;;;;N;;;;;
+C518;HANGUL SYLLABLE SSYILS;Lo;0;L;;;;;N;;;;;
+C519;HANGUL SYLLABLE SSYILT;Lo;0;L;;;;;N;;;;;
+C51A;HANGUL SYLLABLE SSYILP;Lo;0;L;;;;;N;;;;;
+C51B;HANGUL SYLLABLE SSYILH;Lo;0;L;;;;;N;;;;;
+C51C;HANGUL SYLLABLE SSYIM;Lo;0;L;;;;;N;;;;;
+C51D;HANGUL SYLLABLE SSYIB;Lo;0;L;;;;;N;;;;;
+C51E;HANGUL SYLLABLE SSYIBS;Lo;0;L;;;;;N;;;;;
+C51F;HANGUL SYLLABLE SSYIS;Lo;0;L;;;;;N;;;;;
+C520;HANGUL SYLLABLE SSYISS;Lo;0;L;;;;;N;;;;;
+C521;HANGUL SYLLABLE SSYING;Lo;0;L;;;;;N;;;;;
+C522;HANGUL SYLLABLE SSYIJ;Lo;0;L;;;;;N;;;;;
+C523;HANGUL SYLLABLE SSYIC;Lo;0;L;;;;;N;;;;;
+C524;HANGUL SYLLABLE SSYIK;Lo;0;L;;;;;N;;;;;
+C525;HANGUL SYLLABLE SSYIT;Lo;0;L;;;;;N;;;;;
+C526;HANGUL SYLLABLE SSYIP;Lo;0;L;;;;;N;;;;;
+C527;HANGUL SYLLABLE SSYIH;Lo;0;L;;;;;N;;;;;
+C528;HANGUL SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
+C529;HANGUL SYLLABLE SSIG;Lo;0;L;;;;;N;;;;;
+C52A;HANGUL SYLLABLE SSIGG;Lo;0;L;;;;;N;;;;;
+C52B;HANGUL SYLLABLE SSIGS;Lo;0;L;;;;;N;;;;;
+C52C;HANGUL SYLLABLE SSIN;Lo;0;L;;;;;N;;;;;
+C52D;HANGUL SYLLABLE SSINI;Lo;0;L;;;;;N;;;;;
+C52E;HANGUL SYLLABLE SSINH;Lo;0;L;;;;;N;;;;;
+C52F;HANGUL SYLLABLE SSID;Lo;0;L;;;;;N;;;;;
+C530;HANGUL SYLLABLE SSIL;Lo;0;L;;;;;N;;;;;
+C531;HANGUL SYLLABLE SSILG;Lo;0;L;;;;;N;;;;;
+C532;HANGUL SYLLABLE SSILM;Lo;0;L;;;;;N;;;;;
+C533;HANGUL SYLLABLE SSILB;Lo;0;L;;;;;N;;;;;
+C534;HANGUL SYLLABLE SSILS;Lo;0;L;;;;;N;;;;;
+C535;HANGUL SYLLABLE SSILT;Lo;0;L;;;;;N;;;;;
+C536;HANGUL SYLLABLE SSILP;Lo;0;L;;;;;N;;;;;
+C537;HANGUL SYLLABLE SSILH;Lo;0;L;;;;;N;;;;;
+C538;HANGUL SYLLABLE SSIM;Lo;0;L;;;;;N;;;;;
+C539;HANGUL SYLLABLE SSIB;Lo;0;L;;;;;N;;;;;
+C53A;HANGUL SYLLABLE SSIBS;Lo;0;L;;;;;N;;;;;
+C53B;HANGUL SYLLABLE SSIS;Lo;0;L;;;;;N;;;;;
+C53C;HANGUL SYLLABLE SSISS;Lo;0;L;;;;;N;;;;;
+C53D;HANGUL SYLLABLE SSING;Lo;0;L;;;;;N;;;;;
+C53E;HANGUL SYLLABLE SSIJ;Lo;0;L;;;;;N;;;;;
+C53F;HANGUL SYLLABLE SSIC;Lo;0;L;;;;;N;;;;;
+C540;HANGUL SYLLABLE SSIK;Lo;0;L;;;;;N;;;;;
+C541;HANGUL SYLLABLE SSIT;Lo;0;L;;;;;N;;;;;
+C542;HANGUL SYLLABLE SSIP;Lo;0;L;;;;;N;;;;;
+C543;HANGUL SYLLABLE SSIH;Lo;0;L;;;;;N;;;;;
+C544;HANGUL SYLLABLE A;Lo;0;L;;;;;N;;;;;
+C545;HANGUL SYLLABLE AG;Lo;0;L;;;;;N;;;;;
+C546;HANGUL SYLLABLE AGG;Lo;0;L;;;;;N;;;;;
+C547;HANGUL SYLLABLE AGS;Lo;0;L;;;;;N;;;;;
+C548;HANGUL SYLLABLE AN;Lo;0;L;;;;;N;;;;;
+C549;HANGUL SYLLABLE ANI;Lo;0;L;;;;;N;;;;;
+C54A;HANGUL SYLLABLE ANH;Lo;0;L;;;;;N;;;;;
+C54B;HANGUL SYLLABLE AD;Lo;0;L;;;;;N;;;;;
+C54C;HANGUL SYLLABLE AL;Lo;0;L;;;;;N;;;;;
+C54D;HANGUL SYLLABLE ALG;Lo;0;L;;;;;N;;;;;
+C54E;HANGUL SYLLABLE ALM;Lo;0;L;;;;;N;;;;;
+C54F;HANGUL SYLLABLE ALB;Lo;0;L;;;;;N;;;;;
+C550;HANGUL SYLLABLE ALS;Lo;0;L;;;;;N;;;;;
+C551;HANGUL SYLLABLE ALT;Lo;0;L;;;;;N;;;;;
+C552;HANGUL SYLLABLE ALP;Lo;0;L;;;;;N;;;;;
+C553;HANGUL SYLLABLE ALH;Lo;0;L;;;;;N;;;;;
+C554;HANGUL SYLLABLE AM;Lo;0;L;;;;;N;;;;;
+C555;HANGUL SYLLABLE AB;Lo;0;L;;;;;N;;;;;
+C556;HANGUL SYLLABLE ABS;Lo;0;L;;;;;N;;;;;
+C557;HANGUL SYLLABLE AS;Lo;0;L;;;;;N;;;;;
+C558;HANGUL SYLLABLE ASS;Lo;0;L;;;;;N;;;;;
+C559;HANGUL SYLLABLE ANG;Lo;0;L;;;;;N;;;;;
+C55A;HANGUL SYLLABLE AJ;Lo;0;L;;;;;N;;;;;
+C55B;HANGUL SYLLABLE AC;Lo;0;L;;;;;N;;;;;
+C55C;HANGUL SYLLABLE AK;Lo;0;L;;;;;N;;;;;
+C55D;HANGUL SYLLABLE AT;Lo;0;L;;;;;N;;;;;
+C55E;HANGUL SYLLABLE AP;Lo;0;L;;;;;N;;;;;
+C55F;HANGUL SYLLABLE AH;Lo;0;L;;;;;N;;;;;
+C560;HANGUL SYLLABLE AE;Lo;0;L;;;;;N;;;;;
+C561;HANGUL SYLLABLE AEG;Lo;0;L;;;;;N;;;;;
+C562;HANGUL SYLLABLE AEGG;Lo;0;L;;;;;N;;;;;
+C563;HANGUL SYLLABLE AEGS;Lo;0;L;;;;;N;;;;;
+C564;HANGUL SYLLABLE AEN;Lo;0;L;;;;;N;;;;;
+C565;HANGUL SYLLABLE AENI;Lo;0;L;;;;;N;;;;;
+C566;HANGUL SYLLABLE AENH;Lo;0;L;;;;;N;;;;;
+C567;HANGUL SYLLABLE AED;Lo;0;L;;;;;N;;;;;
+C568;HANGUL SYLLABLE AEL;Lo;0;L;;;;;N;;;;;
+C569;HANGUL SYLLABLE AELG;Lo;0;L;;;;;N;;;;;
+C56A;HANGUL SYLLABLE AELM;Lo;0;L;;;;;N;;;;;
+C56B;HANGUL SYLLABLE AELB;Lo;0;L;;;;;N;;;;;
+C56C;HANGUL SYLLABLE AELS;Lo;0;L;;;;;N;;;;;
+C56D;HANGUL SYLLABLE AELT;Lo;0;L;;;;;N;;;;;
+C56E;HANGUL SYLLABLE AELP;Lo;0;L;;;;;N;;;;;
+C56F;HANGUL SYLLABLE AELH;Lo;0;L;;;;;N;;;;;
+C570;HANGUL SYLLABLE AEM;Lo;0;L;;;;;N;;;;;
+C571;HANGUL SYLLABLE AEB;Lo;0;L;;;;;N;;;;;
+C572;HANGUL SYLLABLE AEBS;Lo;0;L;;;;;N;;;;;
+C573;HANGUL SYLLABLE AES;Lo;0;L;;;;;N;;;;;
+C574;HANGUL SYLLABLE AESS;Lo;0;L;;;;;N;;;;;
+C575;HANGUL SYLLABLE AENG;Lo;0;L;;;;;N;;;;;
+C576;HANGUL SYLLABLE AEJ;Lo;0;L;;;;;N;;;;;
+C577;HANGUL SYLLABLE AEC;Lo;0;L;;;;;N;;;;;
+C578;HANGUL SYLLABLE AEK;Lo;0;L;;;;;N;;;;;
+C579;HANGUL SYLLABLE AET;Lo;0;L;;;;;N;;;;;
+C57A;HANGUL SYLLABLE AEP;Lo;0;L;;;;;N;;;;;
+C57B;HANGUL SYLLABLE AEH;Lo;0;L;;;;;N;;;;;
+C57C;HANGUL SYLLABLE YA;Lo;0;L;;;;;N;;;;;
+C57D;HANGUL SYLLABLE YAG;Lo;0;L;;;;;N;;;;;
+C57E;HANGUL SYLLABLE YAGG;Lo;0;L;;;;;N;;;;;
+C57F;HANGUL SYLLABLE YAGS;Lo;0;L;;;;;N;;;;;
+C580;HANGUL SYLLABLE YAN;Lo;0;L;;;;;N;;;;;
+C581;HANGUL SYLLABLE YANI;Lo;0;L;;;;;N;;;;;
+C582;HANGUL SYLLABLE YANH;Lo;0;L;;;;;N;;;;;
+C583;HANGUL SYLLABLE YAD;Lo;0;L;;;;;N;;;;;
+C584;HANGUL SYLLABLE YAL;Lo;0;L;;;;;N;;;;;
+C585;HANGUL SYLLABLE YALG;Lo;0;L;;;;;N;;;;;
+C586;HANGUL SYLLABLE YALM;Lo;0;L;;;;;N;;;;;
+C587;HANGUL SYLLABLE YALB;Lo;0;L;;;;;N;;;;;
+C588;HANGUL SYLLABLE YALS;Lo;0;L;;;;;N;;;;;
+C589;HANGUL SYLLABLE YALT;Lo;0;L;;;;;N;;;;;
+C58A;HANGUL SYLLABLE YALP;Lo;0;L;;;;;N;;;;;
+C58B;HANGUL SYLLABLE YALH;Lo;0;L;;;;;N;;;;;
+C58C;HANGUL SYLLABLE YAM;Lo;0;L;;;;;N;;;;;
+C58D;HANGUL SYLLABLE YAB;Lo;0;L;;;;;N;;;;;
+C58E;HANGUL SYLLABLE YABS;Lo;0;L;;;;;N;;;;;
+C58F;HANGUL SYLLABLE YAS;Lo;0;L;;;;;N;;;;;
+C590;HANGUL SYLLABLE YASS;Lo;0;L;;;;;N;;;;;
+C591;HANGUL SYLLABLE YANG;Lo;0;L;;;;;N;;;;;
+C592;HANGUL SYLLABLE YAJ;Lo;0;L;;;;;N;;;;;
+C593;HANGUL SYLLABLE YAC;Lo;0;L;;;;;N;;;;;
+C594;HANGUL SYLLABLE YAK;Lo;0;L;;;;;N;;;;;
+C595;HANGUL SYLLABLE YAT;Lo;0;L;;;;;N;;;;;
+C596;HANGUL SYLLABLE YAP;Lo;0;L;;;;;N;;;;;
+C597;HANGUL SYLLABLE YAH;Lo;0;L;;;;;N;;;;;
+C598;HANGUL SYLLABLE YAE;Lo;0;L;;;;;N;;;;;
+C599;HANGUL SYLLABLE YAEG;Lo;0;L;;;;;N;;;;;
+C59A;HANGUL SYLLABLE YAEGG;Lo;0;L;;;;;N;;;;;
+C59B;HANGUL SYLLABLE YAEGS;Lo;0;L;;;;;N;;;;;
+C59C;HANGUL SYLLABLE YAEN;Lo;0;L;;;;;N;;;;;
+C59D;HANGUL SYLLABLE YAENI;Lo;0;L;;;;;N;;;;;
+C59E;HANGUL SYLLABLE YAENH;Lo;0;L;;;;;N;;;;;
+C59F;HANGUL SYLLABLE YAED;Lo;0;L;;;;;N;;;;;
+C5A0;HANGUL SYLLABLE YAEL;Lo;0;L;;;;;N;;;;;
+C5A1;HANGUL SYLLABLE YAELG;Lo;0;L;;;;;N;;;;;
+C5A2;HANGUL SYLLABLE YAELM;Lo;0;L;;;;;N;;;;;
+C5A3;HANGUL SYLLABLE YAELB;Lo;0;L;;;;;N;;;;;
+C5A4;HANGUL SYLLABLE YAELS;Lo;0;L;;;;;N;;;;;
+C5A5;HANGUL SYLLABLE YAELT;Lo;0;L;;;;;N;;;;;
+C5A6;HANGUL SYLLABLE YAELP;Lo;0;L;;;;;N;;;;;
+C5A7;HANGUL SYLLABLE YAELH;Lo;0;L;;;;;N;;;;;
+C5A8;HANGUL SYLLABLE YAEM;Lo;0;L;;;;;N;;;;;
+C5A9;HANGUL SYLLABLE YAEB;Lo;0;L;;;;;N;;;;;
+C5AA;HANGUL SYLLABLE YAEBS;Lo;0;L;;;;;N;;;;;
+C5AB;HANGUL SYLLABLE YAES;Lo;0;L;;;;;N;;;;;
+C5AC;HANGUL SYLLABLE YAESS;Lo;0;L;;;;;N;;;;;
+C5AD;HANGUL SYLLABLE YAENG;Lo;0;L;;;;;N;;;;;
+C5AE;HANGUL SYLLABLE YAEJ;Lo;0;L;;;;;N;;;;;
+C5AF;HANGUL SYLLABLE YAEC;Lo;0;L;;;;;N;;;;;
+C5B0;HANGUL SYLLABLE YAEK;Lo;0;L;;;;;N;;;;;
+C5B1;HANGUL SYLLABLE YAET;Lo;0;L;;;;;N;;;;;
+C5B2;HANGUL SYLLABLE YAEP;Lo;0;L;;;;;N;;;;;
+C5B3;HANGUL SYLLABLE YAEH;Lo;0;L;;;;;N;;;;;
+C5B4;HANGUL SYLLABLE EO;Lo;0;L;;;;;N;;;;;
+C5B5;HANGUL SYLLABLE EOG;Lo;0;L;;;;;N;;;;;
+C5B6;HANGUL SYLLABLE EOGG;Lo;0;L;;;;;N;;;;;
+C5B7;HANGUL SYLLABLE EOGS;Lo;0;L;;;;;N;;;;;
+C5B8;HANGUL SYLLABLE EON;Lo;0;L;;;;;N;;;;;
+C5B9;HANGUL SYLLABLE EONI;Lo;0;L;;;;;N;;;;;
+C5BA;HANGUL SYLLABLE EONH;Lo;0;L;;;;;N;;;;;
+C5BB;HANGUL SYLLABLE EOD;Lo;0;L;;;;;N;;;;;
+C5BC;HANGUL SYLLABLE EOL;Lo;0;L;;;;;N;;;;;
+C5BD;HANGUL SYLLABLE EOLG;Lo;0;L;;;;;N;;;;;
+C5BE;HANGUL SYLLABLE EOLM;Lo;0;L;;;;;N;;;;;
+C5BF;HANGUL SYLLABLE EOLB;Lo;0;L;;;;;N;;;;;
+C5C0;HANGUL SYLLABLE EOLS;Lo;0;L;;;;;N;;;;;
+C5C1;HANGUL SYLLABLE EOLT;Lo;0;L;;;;;N;;;;;
+C5C2;HANGUL SYLLABLE EOLP;Lo;0;L;;;;;N;;;;;
+C5C3;HANGUL SYLLABLE EOLH;Lo;0;L;;;;;N;;;;;
+C5C4;HANGUL SYLLABLE EOM;Lo;0;L;;;;;N;;;;;
+C5C5;HANGUL SYLLABLE EOB;Lo;0;L;;;;;N;;;;;
+C5C6;HANGUL SYLLABLE EOBS;Lo;0;L;;;;;N;;;;;
+C5C7;HANGUL SYLLABLE EOS;Lo;0;L;;;;;N;;;;;
+C5C8;HANGUL SYLLABLE EOSS;Lo;0;L;;;;;N;;;;;
+C5C9;HANGUL SYLLABLE EONG;Lo;0;L;;;;;N;;;;;
+C5CA;HANGUL SYLLABLE EOJ;Lo;0;L;;;;;N;;;;;
+C5CB;HANGUL SYLLABLE EOC;Lo;0;L;;;;;N;;;;;
+C5CC;HANGUL SYLLABLE EOK;Lo;0;L;;;;;N;;;;;
+C5CD;HANGUL SYLLABLE EOT;Lo;0;L;;;;;N;;;;;
+C5CE;HANGUL SYLLABLE EOP;Lo;0;L;;;;;N;;;;;
+C5CF;HANGUL SYLLABLE EOH;Lo;0;L;;;;;N;;;;;
+C5D0;HANGUL SYLLABLE E;Lo;0;L;;;;;N;;;;;
+C5D1;HANGUL SYLLABLE EG;Lo;0;L;;;;;N;;;;;
+C5D2;HANGUL SYLLABLE EGG;Lo;0;L;;;;;N;;;;;
+C5D3;HANGUL SYLLABLE EGS;Lo;0;L;;;;;N;;;;;
+C5D4;HANGUL SYLLABLE EN;Lo;0;L;;;;;N;;;;;
+C5D5;HANGUL SYLLABLE ENI;Lo;0;L;;;;;N;;;;;
+C5D6;HANGUL SYLLABLE ENH;Lo;0;L;;;;;N;;;;;
+C5D7;HANGUL SYLLABLE ED;Lo;0;L;;;;;N;;;;;
+C5D8;HANGUL SYLLABLE EL;Lo;0;L;;;;;N;;;;;
+C5D9;HANGUL SYLLABLE ELG;Lo;0;L;;;;;N;;;;;
+C5DA;HANGUL SYLLABLE ELM;Lo;0;L;;;;;N;;;;;
+C5DB;HANGUL SYLLABLE ELB;Lo;0;L;;;;;N;;;;;
+C5DC;HANGUL SYLLABLE ELS;Lo;0;L;;;;;N;;;;;
+C5DD;HANGUL SYLLABLE ELT;Lo;0;L;;;;;N;;;;;
+C5DE;HANGUL SYLLABLE ELP;Lo;0;L;;;;;N;;;;;
+C5DF;HANGUL SYLLABLE ELH;Lo;0;L;;;;;N;;;;;
+C5E0;HANGUL SYLLABLE EM;Lo;0;L;;;;;N;;;;;
+C5E1;HANGUL SYLLABLE EB;Lo;0;L;;;;;N;;;;;
+C5E2;HANGUL SYLLABLE EBS;Lo;0;L;;;;;N;;;;;
+C5E3;HANGUL SYLLABLE ES;Lo;0;L;;;;;N;;;;;
+C5E4;HANGUL SYLLABLE ESS;Lo;0;L;;;;;N;;;;;
+C5E5;HANGUL SYLLABLE ENG;Lo;0;L;;;;;N;;;;;
+C5E6;HANGUL SYLLABLE EJ;Lo;0;L;;;;;N;;;;;
+C5E7;HANGUL SYLLABLE EC;Lo;0;L;;;;;N;;;;;
+C5E8;HANGUL SYLLABLE EK;Lo;0;L;;;;;N;;;;;
+C5E9;HANGUL SYLLABLE ET;Lo;0;L;;;;;N;;;;;
+C5EA;HANGUL SYLLABLE EP;Lo;0;L;;;;;N;;;;;
+C5EB;HANGUL SYLLABLE EH;Lo;0;L;;;;;N;;;;;
+C5EC;HANGUL SYLLABLE YEO;Lo;0;L;;;;;N;;;;;
+C5ED;HANGUL SYLLABLE YEOG;Lo;0;L;;;;;N;;;;;
+C5EE;HANGUL SYLLABLE YEOGG;Lo;0;L;;;;;N;;;;;
+C5EF;HANGUL SYLLABLE YEOGS;Lo;0;L;;;;;N;;;;;
+C5F0;HANGUL SYLLABLE YEON;Lo;0;L;;;;;N;;;;;
+C5F1;HANGUL SYLLABLE YEONI;Lo;0;L;;;;;N;;;;;
+C5F2;HANGUL SYLLABLE YEONH;Lo;0;L;;;;;N;;;;;
+C5F3;HANGUL SYLLABLE YEOD;Lo;0;L;;;;;N;;;;;
+C5F4;HANGUL SYLLABLE YEOL;Lo;0;L;;;;;N;;;;;
+C5F5;HANGUL SYLLABLE YEOLG;Lo;0;L;;;;;N;;;;;
+C5F6;HANGUL SYLLABLE YEOLM;Lo;0;L;;;;;N;;;;;
+C5F7;HANGUL SYLLABLE YEOLB;Lo;0;L;;;;;N;;;;;
+C5F8;HANGUL SYLLABLE YEOLS;Lo;0;L;;;;;N;;;;;
+C5F9;HANGUL SYLLABLE YEOLT;Lo;0;L;;;;;N;;;;;
+C5FA;HANGUL SYLLABLE YEOLP;Lo;0;L;;;;;N;;;;;
+C5FB;HANGUL SYLLABLE YEOLH;Lo;0;L;;;;;N;;;;;
+C5FC;HANGUL SYLLABLE YEOM;Lo;0;L;;;;;N;;;;;
+C5FD;HANGUL SYLLABLE YEOB;Lo;0;L;;;;;N;;;;;
+C5FE;HANGUL SYLLABLE YEOBS;Lo;0;L;;;;;N;;;;;
+C5FF;HANGUL SYLLABLE YEOS;Lo;0;L;;;;;N;;;;;
+C600;HANGUL SYLLABLE YEOSS;Lo;0;L;;;;;N;;;;;
+C601;HANGUL SYLLABLE YEONG;Lo;0;L;;;;;N;;;;;
+C602;HANGUL SYLLABLE YEOJ;Lo;0;L;;;;;N;;;;;
+C603;HANGUL SYLLABLE YEOC;Lo;0;L;;;;;N;;;;;
+C604;HANGUL SYLLABLE YEOK;Lo;0;L;;;;;N;;;;;
+C605;HANGUL SYLLABLE YEOT;Lo;0;L;;;;;N;;;;;
+C606;HANGUL SYLLABLE YEOP;Lo;0;L;;;;;N;;;;;
+C607;HANGUL SYLLABLE YEOH;Lo;0;L;;;;;N;;;;;
+C608;HANGUL SYLLABLE YE;Lo;0;L;;;;;N;;;;;
+C609;HANGUL SYLLABLE YEG;Lo;0;L;;;;;N;;;;;
+C60A;HANGUL SYLLABLE YEGG;Lo;0;L;;;;;N;;;;;
+C60B;HANGUL SYLLABLE YEGS;Lo;0;L;;;;;N;;;;;
+C60C;HANGUL SYLLABLE YEN;Lo;0;L;;;;;N;;;;;
+C60D;HANGUL SYLLABLE YENI;Lo;0;L;;;;;N;;;;;
+C60E;HANGUL SYLLABLE YENH;Lo;0;L;;;;;N;;;;;
+C60F;HANGUL SYLLABLE YED;Lo;0;L;;;;;N;;;;;
+C610;HANGUL SYLLABLE YEL;Lo;0;L;;;;;N;;;;;
+C611;HANGUL SYLLABLE YELG;Lo;0;L;;;;;N;;;;;
+C612;HANGUL SYLLABLE YELM;Lo;0;L;;;;;N;;;;;
+C613;HANGUL SYLLABLE YELB;Lo;0;L;;;;;N;;;;;
+C614;HANGUL SYLLABLE YELS;Lo;0;L;;;;;N;;;;;
+C615;HANGUL SYLLABLE YELT;Lo;0;L;;;;;N;;;;;
+C616;HANGUL SYLLABLE YELP;Lo;0;L;;;;;N;;;;;
+C617;HANGUL SYLLABLE YELH;Lo;0;L;;;;;N;;;;;
+C618;HANGUL SYLLABLE YEM;Lo;0;L;;;;;N;;;;;
+C619;HANGUL SYLLABLE YEB;Lo;0;L;;;;;N;;;;;
+C61A;HANGUL SYLLABLE YEBS;Lo;0;L;;;;;N;;;;;
+C61B;HANGUL SYLLABLE YES;Lo;0;L;;;;;N;;;;;
+C61C;HANGUL SYLLABLE YESS;Lo;0;L;;;;;N;;;;;
+C61D;HANGUL SYLLABLE YENG;Lo;0;L;;;;;N;;;;;
+C61E;HANGUL SYLLABLE YEJ;Lo;0;L;;;;;N;;;;;
+C61F;HANGUL SYLLABLE YEC;Lo;0;L;;;;;N;;;;;
+C620;HANGUL SYLLABLE YEK;Lo;0;L;;;;;N;;;;;
+C621;HANGUL SYLLABLE YET;Lo;0;L;;;;;N;;;;;
+C622;HANGUL SYLLABLE YEP;Lo;0;L;;;;;N;;;;;
+C623;HANGUL SYLLABLE YEH;Lo;0;L;;;;;N;;;;;
+C624;HANGUL SYLLABLE O;Lo;0;L;;;;;N;;;;;
+C625;HANGUL SYLLABLE OG;Lo;0;L;;;;;N;;;;;
+C626;HANGUL SYLLABLE OGG;Lo;0;L;;;;;N;;;;;
+C627;HANGUL SYLLABLE OGS;Lo;0;L;;;;;N;;;;;
+C628;HANGUL SYLLABLE ON;Lo;0;L;;;;;N;;;;;
+C629;HANGUL SYLLABLE ONI;Lo;0;L;;;;;N;;;;;
+C62A;HANGUL SYLLABLE ONH;Lo;0;L;;;;;N;;;;;
+C62B;HANGUL SYLLABLE OD;Lo;0;L;;;;;N;;;;;
+C62C;HANGUL SYLLABLE OL;Lo;0;L;;;;;N;;;;;
+C62D;HANGUL SYLLABLE OLG;Lo;0;L;;;;;N;;;;;
+C62E;HANGUL SYLLABLE OLM;Lo;0;L;;;;;N;;;;;
+C62F;HANGUL SYLLABLE OLB;Lo;0;L;;;;;N;;;;;
+C630;HANGUL SYLLABLE OLS;Lo;0;L;;;;;N;;;;;
+C631;HANGUL SYLLABLE OLT;Lo;0;L;;;;;N;;;;;
+C632;HANGUL SYLLABLE OLP;Lo;0;L;;;;;N;;;;;
+C633;HANGUL SYLLABLE OLH;Lo;0;L;;;;;N;;;;;
+C634;HANGUL SYLLABLE OM;Lo;0;L;;;;;N;;;;;
+C635;HANGUL SYLLABLE OB;Lo;0;L;;;;;N;;;;;
+C636;HANGUL SYLLABLE OBS;Lo;0;L;;;;;N;;;;;
+C637;HANGUL SYLLABLE OS;Lo;0;L;;;;;N;;;;;
+C638;HANGUL SYLLABLE OSS;Lo;0;L;;;;;N;;;;;
+C639;HANGUL SYLLABLE ONG;Lo;0;L;;;;;N;;;;;
+C63A;HANGUL SYLLABLE OJ;Lo;0;L;;;;;N;;;;;
+C63B;HANGUL SYLLABLE OC;Lo;0;L;;;;;N;;;;;
+C63C;HANGUL SYLLABLE OK;Lo;0;L;;;;;N;;;;;
+C63D;HANGUL SYLLABLE OT;Lo;0;L;;;;;N;;;;;
+C63E;HANGUL SYLLABLE OP;Lo;0;L;;;;;N;;;;;
+C63F;HANGUL SYLLABLE OH;Lo;0;L;;;;;N;;;;;
+C640;HANGUL SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+C641;HANGUL SYLLABLE WAG;Lo;0;L;;;;;N;;;;;
+C642;HANGUL SYLLABLE WAGG;Lo;0;L;;;;;N;;;;;
+C643;HANGUL SYLLABLE WAGS;Lo;0;L;;;;;N;;;;;
+C644;HANGUL SYLLABLE WAN;Lo;0;L;;;;;N;;;;;
+C645;HANGUL SYLLABLE WANI;Lo;0;L;;;;;N;;;;;
+C646;HANGUL SYLLABLE WANH;Lo;0;L;;;;;N;;;;;
+C647;HANGUL SYLLABLE WAD;Lo;0;L;;;;;N;;;;;
+C648;HANGUL SYLLABLE WAL;Lo;0;L;;;;;N;;;;;
+C649;HANGUL SYLLABLE WALG;Lo;0;L;;;;;N;;;;;
+C64A;HANGUL SYLLABLE WALM;Lo;0;L;;;;;N;;;;;
+C64B;HANGUL SYLLABLE WALB;Lo;0;L;;;;;N;;;;;
+C64C;HANGUL SYLLABLE WALS;Lo;0;L;;;;;N;;;;;
+C64D;HANGUL SYLLABLE WALT;Lo;0;L;;;;;N;;;;;
+C64E;HANGUL SYLLABLE WALP;Lo;0;L;;;;;N;;;;;
+C64F;HANGUL SYLLABLE WALH;Lo;0;L;;;;;N;;;;;
+C650;HANGUL SYLLABLE WAM;Lo;0;L;;;;;N;;;;;
+C651;HANGUL SYLLABLE WAB;Lo;0;L;;;;;N;;;;;
+C652;HANGUL SYLLABLE WABS;Lo;0;L;;;;;N;;;;;
+C653;HANGUL SYLLABLE WAS;Lo;0;L;;;;;N;;;;;
+C654;HANGUL SYLLABLE WASS;Lo;0;L;;;;;N;;;;;
+C655;HANGUL SYLLABLE WANG;Lo;0;L;;;;;N;;;;;
+C656;HANGUL SYLLABLE WAJ;Lo;0;L;;;;;N;;;;;
+C657;HANGUL SYLLABLE WAC;Lo;0;L;;;;;N;;;;;
+C658;HANGUL SYLLABLE WAK;Lo;0;L;;;;;N;;;;;
+C659;HANGUL SYLLABLE WAT;Lo;0;L;;;;;N;;;;;
+C65A;HANGUL SYLLABLE WAP;Lo;0;L;;;;;N;;;;;
+C65B;HANGUL SYLLABLE WAH;Lo;0;L;;;;;N;;;;;
+C65C;HANGUL SYLLABLE WAE;Lo;0;L;;;;;N;;;;;
+C65D;HANGUL SYLLABLE WAEG;Lo;0;L;;;;;N;;;;;
+C65E;HANGUL SYLLABLE WAEGG;Lo;0;L;;;;;N;;;;;
+C65F;HANGUL SYLLABLE WAEGS;Lo;0;L;;;;;N;;;;;
+C660;HANGUL SYLLABLE WAEN;Lo;0;L;;;;;N;;;;;
+C661;HANGUL SYLLABLE WAENI;Lo;0;L;;;;;N;;;;;
+C662;HANGUL SYLLABLE WAENH;Lo;0;L;;;;;N;;;;;
+C663;HANGUL SYLLABLE WAED;Lo;0;L;;;;;N;;;;;
+C664;HANGUL SYLLABLE WAEL;Lo;0;L;;;;;N;;;;;
+C665;HANGUL SYLLABLE WAELG;Lo;0;L;;;;;N;;;;;
+C666;HANGUL SYLLABLE WAELM;Lo;0;L;;;;;N;;;;;
+C667;HANGUL SYLLABLE WAELB;Lo;0;L;;;;;N;;;;;
+C668;HANGUL SYLLABLE WAELS;Lo;0;L;;;;;N;;;;;
+C669;HANGUL SYLLABLE WAELT;Lo;0;L;;;;;N;;;;;
+C66A;HANGUL SYLLABLE WAELP;Lo;0;L;;;;;N;;;;;
+C66B;HANGUL SYLLABLE WAELH;Lo;0;L;;;;;N;;;;;
+C66C;HANGUL SYLLABLE WAEM;Lo;0;L;;;;;N;;;;;
+C66D;HANGUL SYLLABLE WAEB;Lo;0;L;;;;;N;;;;;
+C66E;HANGUL SYLLABLE WAEBS;Lo;0;L;;;;;N;;;;;
+C66F;HANGUL SYLLABLE WAES;Lo;0;L;;;;;N;;;;;
+C670;HANGUL SYLLABLE WAESS;Lo;0;L;;;;;N;;;;;
+C671;HANGUL SYLLABLE WAENG;Lo;0;L;;;;;N;;;;;
+C672;HANGUL SYLLABLE WAEJ;Lo;0;L;;;;;N;;;;;
+C673;HANGUL SYLLABLE WAEC;Lo;0;L;;;;;N;;;;;
+C674;HANGUL SYLLABLE WAEK;Lo;0;L;;;;;N;;;;;
+C675;HANGUL SYLLABLE WAET;Lo;0;L;;;;;N;;;;;
+C676;HANGUL SYLLABLE WAEP;Lo;0;L;;;;;N;;;;;
+C677;HANGUL SYLLABLE WAEH;Lo;0;L;;;;;N;;;;;
+C678;HANGUL SYLLABLE OE;Lo;0;L;;;;;N;;;;;
+C679;HANGUL SYLLABLE OEG;Lo;0;L;;;;;N;;;;;
+C67A;HANGUL SYLLABLE OEGG;Lo;0;L;;;;;N;;;;;
+C67B;HANGUL SYLLABLE OEGS;Lo;0;L;;;;;N;;;;;
+C67C;HANGUL SYLLABLE OEN;Lo;0;L;;;;;N;;;;;
+C67D;HANGUL SYLLABLE OENI;Lo;0;L;;;;;N;;;;;
+C67E;HANGUL SYLLABLE OENH;Lo;0;L;;;;;N;;;;;
+C67F;HANGUL SYLLABLE OED;Lo;0;L;;;;;N;;;;;
+C680;HANGUL SYLLABLE OEL;Lo;0;L;;;;;N;;;;;
+C681;HANGUL SYLLABLE OELG;Lo;0;L;;;;;N;;;;;
+C682;HANGUL SYLLABLE OELM;Lo;0;L;;;;;N;;;;;
+C683;HANGUL SYLLABLE OELB;Lo;0;L;;;;;N;;;;;
+C684;HANGUL SYLLABLE OELS;Lo;0;L;;;;;N;;;;;
+C685;HANGUL SYLLABLE OELT;Lo;0;L;;;;;N;;;;;
+C686;HANGUL SYLLABLE OELP;Lo;0;L;;;;;N;;;;;
+C687;HANGUL SYLLABLE OELH;Lo;0;L;;;;;N;;;;;
+C688;HANGUL SYLLABLE OEM;Lo;0;L;;;;;N;;;;;
+C689;HANGUL SYLLABLE OEB;Lo;0;L;;;;;N;;;;;
+C68A;HANGUL SYLLABLE OEBS;Lo;0;L;;;;;N;;;;;
+C68B;HANGUL SYLLABLE OES;Lo;0;L;;;;;N;;;;;
+C68C;HANGUL SYLLABLE OESS;Lo;0;L;;;;;N;;;;;
+C68D;HANGUL SYLLABLE OENG;Lo;0;L;;;;;N;;;;;
+C68E;HANGUL SYLLABLE OEJ;Lo;0;L;;;;;N;;;;;
+C68F;HANGUL SYLLABLE OEC;Lo;0;L;;;;;N;;;;;
+C690;HANGUL SYLLABLE OEK;Lo;0;L;;;;;N;;;;;
+C691;HANGUL SYLLABLE OET;Lo;0;L;;;;;N;;;;;
+C692;HANGUL SYLLABLE OEP;Lo;0;L;;;;;N;;;;;
+C693;HANGUL SYLLABLE OEH;Lo;0;L;;;;;N;;;;;
+C694;HANGUL SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+C695;HANGUL SYLLABLE YOG;Lo;0;L;;;;;N;;;;;
+C696;HANGUL SYLLABLE YOGG;Lo;0;L;;;;;N;;;;;
+C697;HANGUL SYLLABLE YOGS;Lo;0;L;;;;;N;;;;;
+C698;HANGUL SYLLABLE YON;Lo;0;L;;;;;N;;;;;
+C699;HANGUL SYLLABLE YONI;Lo;0;L;;;;;N;;;;;
+C69A;HANGUL SYLLABLE YONH;Lo;0;L;;;;;N;;;;;
+C69B;HANGUL SYLLABLE YOD;Lo;0;L;;;;;N;;;;;
+C69C;HANGUL SYLLABLE YOL;Lo;0;L;;;;;N;;;;;
+C69D;HANGUL SYLLABLE YOLG;Lo;0;L;;;;;N;;;;;
+C69E;HANGUL SYLLABLE YOLM;Lo;0;L;;;;;N;;;;;
+C69F;HANGUL SYLLABLE YOLB;Lo;0;L;;;;;N;;;;;
+C6A0;HANGUL SYLLABLE YOLS;Lo;0;L;;;;;N;;;;;
+C6A1;HANGUL SYLLABLE YOLT;Lo;0;L;;;;;N;;;;;
+C6A2;HANGUL SYLLABLE YOLP;Lo;0;L;;;;;N;;;;;
+C6A3;HANGUL SYLLABLE YOLH;Lo;0;L;;;;;N;;;;;
+C6A4;HANGUL SYLLABLE YOM;Lo;0;L;;;;;N;;;;;
+C6A5;HANGUL SYLLABLE YOB;Lo;0;L;;;;;N;;;;;
+C6A6;HANGUL SYLLABLE YOBS;Lo;0;L;;;;;N;;;;;
+C6A7;HANGUL SYLLABLE YOS;Lo;0;L;;;;;N;;;;;
+C6A8;HANGUL SYLLABLE YOSS;Lo;0;L;;;;;N;;;;;
+C6A9;HANGUL SYLLABLE YONG;Lo;0;L;;;;;N;;;;;
+C6AA;HANGUL SYLLABLE YOJ;Lo;0;L;;;;;N;;;;;
+C6AB;HANGUL SYLLABLE YOC;Lo;0;L;;;;;N;;;;;
+C6AC;HANGUL SYLLABLE YOK;Lo;0;L;;;;;N;;;;;
+C6AD;HANGUL SYLLABLE YOT;Lo;0;L;;;;;N;;;;;
+C6AE;HANGUL SYLLABLE YOP;Lo;0;L;;;;;N;;;;;
+C6AF;HANGUL SYLLABLE YOH;Lo;0;L;;;;;N;;;;;
+C6B0;HANGUL SYLLABLE U;Lo;0;L;;;;;N;;;;;
+C6B1;HANGUL SYLLABLE UG;Lo;0;L;;;;;N;;;;;
+C6B2;HANGUL SYLLABLE UGG;Lo;0;L;;;;;N;;;;;
+C6B3;HANGUL SYLLABLE UGS;Lo;0;L;;;;;N;;;;;
+C6B4;HANGUL SYLLABLE UN;Lo;0;L;;;;;N;;;;;
+C6B5;HANGUL SYLLABLE UNI;Lo;0;L;;;;;N;;;;;
+C6B6;HANGUL SYLLABLE UNH;Lo;0;L;;;;;N;;;;;
+C6B7;HANGUL SYLLABLE UD;Lo;0;L;;;;;N;;;;;
+C6B8;HANGUL SYLLABLE UL;Lo;0;L;;;;;N;;;;;
+C6B9;HANGUL SYLLABLE ULG;Lo;0;L;;;;;N;;;;;
+C6BA;HANGUL SYLLABLE ULM;Lo;0;L;;;;;N;;;;;
+C6BB;HANGUL SYLLABLE ULB;Lo;0;L;;;;;N;;;;;
+C6BC;HANGUL SYLLABLE ULS;Lo;0;L;;;;;N;;;;;
+C6BD;HANGUL SYLLABLE ULT;Lo;0;L;;;;;N;;;;;
+C6BE;HANGUL SYLLABLE ULP;Lo;0;L;;;;;N;;;;;
+C6BF;HANGUL SYLLABLE ULH;Lo;0;L;;;;;N;;;;;
+C6C0;HANGUL SYLLABLE UM;Lo;0;L;;;;;N;;;;;
+C6C1;HANGUL SYLLABLE UB;Lo;0;L;;;;;N;;;;;
+C6C2;HANGUL SYLLABLE UBS;Lo;0;L;;;;;N;;;;;
+C6C3;HANGUL SYLLABLE US;Lo;0;L;;;;;N;;;;;
+C6C4;HANGUL SYLLABLE USS;Lo;0;L;;;;;N;;;;;
+C6C5;HANGUL SYLLABLE UNG;Lo;0;L;;;;;N;;;;;
+C6C6;HANGUL SYLLABLE UJ;Lo;0;L;;;;;N;;;;;
+C6C7;HANGUL SYLLABLE UC;Lo;0;L;;;;;N;;;;;
+C6C8;HANGUL SYLLABLE UK;Lo;0;L;;;;;N;;;;;
+C6C9;HANGUL SYLLABLE UT;Lo;0;L;;;;;N;;;;;
+C6CA;HANGUL SYLLABLE UP;Lo;0;L;;;;;N;;;;;
+C6CB;HANGUL SYLLABLE UH;Lo;0;L;;;;;N;;;;;
+C6CC;HANGUL SYLLABLE WEO;Lo;0;L;;;;;N;;;;;
+C6CD;HANGUL SYLLABLE WEOG;Lo;0;L;;;;;N;;;;;
+C6CE;HANGUL SYLLABLE WEOGG;Lo;0;L;;;;;N;;;;;
+C6CF;HANGUL SYLLABLE WEOGS;Lo;0;L;;;;;N;;;;;
+C6D0;HANGUL SYLLABLE WEON;Lo;0;L;;;;;N;;;;;
+C6D1;HANGUL SYLLABLE WEONI;Lo;0;L;;;;;N;;;;;
+C6D2;HANGUL SYLLABLE WEONH;Lo;0;L;;;;;N;;;;;
+C6D3;HANGUL SYLLABLE WEOD;Lo;0;L;;;;;N;;;;;
+C6D4;HANGUL SYLLABLE WEOL;Lo;0;L;;;;;N;;;;;
+C6D5;HANGUL SYLLABLE WEOLG;Lo;0;L;;;;;N;;;;;
+C6D6;HANGUL SYLLABLE WEOLM;Lo;0;L;;;;;N;;;;;
+C6D7;HANGUL SYLLABLE WEOLB;Lo;0;L;;;;;N;;;;;
+C6D8;HANGUL SYLLABLE WEOLS;Lo;0;L;;;;;N;;;;;
+C6D9;HANGUL SYLLABLE WEOLT;Lo;0;L;;;;;N;;;;;
+C6DA;HANGUL SYLLABLE WEOLP;Lo;0;L;;;;;N;;;;;
+C6DB;HANGUL SYLLABLE WEOLH;Lo;0;L;;;;;N;;;;;
+C6DC;HANGUL SYLLABLE WEOM;Lo;0;L;;;;;N;;;;;
+C6DD;HANGUL SYLLABLE WEOB;Lo;0;L;;;;;N;;;;;
+C6DE;HANGUL SYLLABLE WEOBS;Lo;0;L;;;;;N;;;;;
+C6DF;HANGUL SYLLABLE WEOS;Lo;0;L;;;;;N;;;;;
+C6E0;HANGUL SYLLABLE WEOSS;Lo;0;L;;;;;N;;;;;
+C6E1;HANGUL SYLLABLE WEONG;Lo;0;L;;;;;N;;;;;
+C6E2;HANGUL SYLLABLE WEOJ;Lo;0;L;;;;;N;;;;;
+C6E3;HANGUL SYLLABLE WEOC;Lo;0;L;;;;;N;;;;;
+C6E4;HANGUL SYLLABLE WEOK;Lo;0;L;;;;;N;;;;;
+C6E5;HANGUL SYLLABLE WEOT;Lo;0;L;;;;;N;;;;;
+C6E6;HANGUL SYLLABLE WEOP;Lo;0;L;;;;;N;;;;;
+C6E7;HANGUL SYLLABLE WEOH;Lo;0;L;;;;;N;;;;;
+C6E8;HANGUL SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+C6E9;HANGUL SYLLABLE WEG;Lo;0;L;;;;;N;;;;;
+C6EA;HANGUL SYLLABLE WEGG;Lo;0;L;;;;;N;;;;;
+C6EB;HANGUL SYLLABLE WEGS;Lo;0;L;;;;;N;;;;;
+C6EC;HANGUL SYLLABLE WEN;Lo;0;L;;;;;N;;;;;
+C6ED;HANGUL SYLLABLE WENI;Lo;0;L;;;;;N;;;;;
+C6EE;HANGUL SYLLABLE WENH;Lo;0;L;;;;;N;;;;;
+C6EF;HANGUL SYLLABLE WED;Lo;0;L;;;;;N;;;;;
+C6F0;HANGUL SYLLABLE WEL;Lo;0;L;;;;;N;;;;;
+C6F1;HANGUL SYLLABLE WELG;Lo;0;L;;;;;N;;;;;
+C6F2;HANGUL SYLLABLE WELM;Lo;0;L;;;;;N;;;;;
+C6F3;HANGUL SYLLABLE WELB;Lo;0;L;;;;;N;;;;;
+C6F4;HANGUL SYLLABLE WELS;Lo;0;L;;;;;N;;;;;
+C6F5;HANGUL SYLLABLE WELT;Lo;0;L;;;;;N;;;;;
+C6F6;HANGUL SYLLABLE WELP;Lo;0;L;;;;;N;;;;;
+C6F7;HANGUL SYLLABLE WELH;Lo;0;L;;;;;N;;;;;
+C6F8;HANGUL SYLLABLE WEM;Lo;0;L;;;;;N;;;;;
+C6F9;HANGUL SYLLABLE WEB;Lo;0;L;;;;;N;;;;;
+C6FA;HANGUL SYLLABLE WEBS;Lo;0;L;;;;;N;;;;;
+C6FB;HANGUL SYLLABLE WES;Lo;0;L;;;;;N;;;;;
+C6FC;HANGUL SYLLABLE WESS;Lo;0;L;;;;;N;;;;;
+C6FD;HANGUL SYLLABLE WENG;Lo;0;L;;;;;N;;;;;
+C6FE;HANGUL SYLLABLE WEJ;Lo;0;L;;;;;N;;;;;
+C6FF;HANGUL SYLLABLE WEC;Lo;0;L;;;;;N;;;;;
+C700;HANGUL SYLLABLE WEK;Lo;0;L;;;;;N;;;;;
+C701;HANGUL SYLLABLE WET;Lo;0;L;;;;;N;;;;;
+C702;HANGUL SYLLABLE WEP;Lo;0;L;;;;;N;;;;;
+C703;HANGUL SYLLABLE WEH;Lo;0;L;;;;;N;;;;;
+C704;HANGUL SYLLABLE WI;Lo;0;L;;;;;N;;;;;
+C705;HANGUL SYLLABLE WIG;Lo;0;L;;;;;N;;;;;
+C706;HANGUL SYLLABLE WIGG;Lo;0;L;;;;;N;;;;;
+C707;HANGUL SYLLABLE WIGS;Lo;0;L;;;;;N;;;;;
+C708;HANGUL SYLLABLE WIN;Lo;0;L;;;;;N;;;;;
+C709;HANGUL SYLLABLE WINI;Lo;0;L;;;;;N;;;;;
+C70A;HANGUL SYLLABLE WINH;Lo;0;L;;;;;N;;;;;
+C70B;HANGUL SYLLABLE WID;Lo;0;L;;;;;N;;;;;
+C70C;HANGUL SYLLABLE WIL;Lo;0;L;;;;;N;;;;;
+C70D;HANGUL SYLLABLE WILG;Lo;0;L;;;;;N;;;;;
+C70E;HANGUL SYLLABLE WILM;Lo;0;L;;;;;N;;;;;
+C70F;HANGUL SYLLABLE WILB;Lo;0;L;;;;;N;;;;;
+C710;HANGUL SYLLABLE WILS;Lo;0;L;;;;;N;;;;;
+C711;HANGUL SYLLABLE WILT;Lo;0;L;;;;;N;;;;;
+C712;HANGUL SYLLABLE WILP;Lo;0;L;;;;;N;;;;;
+C713;HANGUL SYLLABLE WILH;Lo;0;L;;;;;N;;;;;
+C714;HANGUL SYLLABLE WIM;Lo;0;L;;;;;N;;;;;
+C715;HANGUL SYLLABLE WIB;Lo;0;L;;;;;N;;;;;
+C716;HANGUL SYLLABLE WIBS;Lo;0;L;;;;;N;;;;;
+C717;HANGUL SYLLABLE WIS;Lo;0;L;;;;;N;;;;;
+C718;HANGUL SYLLABLE WISS;Lo;0;L;;;;;N;;;;;
+C719;HANGUL SYLLABLE WING;Lo;0;L;;;;;N;;;;;
+C71A;HANGUL SYLLABLE WIJ;Lo;0;L;;;;;N;;;;;
+C71B;HANGUL SYLLABLE WIC;Lo;0;L;;;;;N;;;;;
+C71C;HANGUL SYLLABLE WIK;Lo;0;L;;;;;N;;;;;
+C71D;HANGUL SYLLABLE WIT;Lo;0;L;;;;;N;;;;;
+C71E;HANGUL SYLLABLE WIP;Lo;0;L;;;;;N;;;;;
+C71F;HANGUL SYLLABLE WIH;Lo;0;L;;;;;N;;;;;
+C720;HANGUL SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+C721;HANGUL SYLLABLE YUG;Lo;0;L;;;;;N;;;;;
+C722;HANGUL SYLLABLE YUGG;Lo;0;L;;;;;N;;;;;
+C723;HANGUL SYLLABLE YUGS;Lo;0;L;;;;;N;;;;;
+C724;HANGUL SYLLABLE YUN;Lo;0;L;;;;;N;;;;;
+C725;HANGUL SYLLABLE YUNI;Lo;0;L;;;;;N;;;;;
+C726;HANGUL SYLLABLE YUNH;Lo;0;L;;;;;N;;;;;
+C727;HANGUL SYLLABLE YUD;Lo;0;L;;;;;N;;;;;
+C728;HANGUL SYLLABLE YUL;Lo;0;L;;;;;N;;;;;
+C729;HANGUL SYLLABLE YULG;Lo;0;L;;;;;N;;;;;
+C72A;HANGUL SYLLABLE YULM;Lo;0;L;;;;;N;;;;;
+C72B;HANGUL SYLLABLE YULB;Lo;0;L;;;;;N;;;;;
+C72C;HANGUL SYLLABLE YULS;Lo;0;L;;;;;N;;;;;
+C72D;HANGUL SYLLABLE YULT;Lo;0;L;;;;;N;;;;;
+C72E;HANGUL SYLLABLE YULP;Lo;0;L;;;;;N;;;;;
+C72F;HANGUL SYLLABLE YULH;Lo;0;L;;;;;N;;;;;
+C730;HANGUL SYLLABLE YUM;Lo;0;L;;;;;N;;;;;
+C731;HANGUL SYLLABLE YUB;Lo;0;L;;;;;N;;;;;
+C732;HANGUL SYLLABLE YUBS;Lo;0;L;;;;;N;;;;;
+C733;HANGUL SYLLABLE YUS;Lo;0;L;;;;;N;;;;;
+C734;HANGUL SYLLABLE YUSS;Lo;0;L;;;;;N;;;;;
+C735;HANGUL SYLLABLE YUNG;Lo;0;L;;;;;N;;;;;
+C736;HANGUL SYLLABLE YUJ;Lo;0;L;;;;;N;;;;;
+C737;HANGUL SYLLABLE YUC;Lo;0;L;;;;;N;;;;;
+C738;HANGUL SYLLABLE YUK;Lo;0;L;;;;;N;;;;;
+C739;HANGUL SYLLABLE YUT;Lo;0;L;;;;;N;;;;;
+C73A;HANGUL SYLLABLE YUP;Lo;0;L;;;;;N;;;;;
+C73B;HANGUL SYLLABLE YUH;Lo;0;L;;;;;N;;;;;
+C73C;HANGUL SYLLABLE EU;Lo;0;L;;;;;N;;;;;
+C73D;HANGUL SYLLABLE EUG;Lo;0;L;;;;;N;;;;;
+C73E;HANGUL SYLLABLE EUGG;Lo;0;L;;;;;N;;;;;
+C73F;HANGUL SYLLABLE EUGS;Lo;0;L;;;;;N;;;;;
+C740;HANGUL SYLLABLE EUN;Lo;0;L;;;;;N;;;;;
+C741;HANGUL SYLLABLE EUNI;Lo;0;L;;;;;N;;;;;
+C742;HANGUL SYLLABLE EUNH;Lo;0;L;;;;;N;;;;;
+C743;HANGUL SYLLABLE EUD;Lo;0;L;;;;;N;;;;;
+C744;HANGUL SYLLABLE EUL;Lo;0;L;;;;;N;;;;;
+C745;HANGUL SYLLABLE EULG;Lo;0;L;;;;;N;;;;;
+C746;HANGUL SYLLABLE EULM;Lo;0;L;;;;;N;;;;;
+C747;HANGUL SYLLABLE EULB;Lo;0;L;;;;;N;;;;;
+C748;HANGUL SYLLABLE EULS;Lo;0;L;;;;;N;;;;;
+C749;HANGUL SYLLABLE EULT;Lo;0;L;;;;;N;;;;;
+C74A;HANGUL SYLLABLE EULP;Lo;0;L;;;;;N;;;;;
+C74B;HANGUL SYLLABLE EULH;Lo;0;L;;;;;N;;;;;
+C74C;HANGUL SYLLABLE EUM;Lo;0;L;;;;;N;;;;;
+C74D;HANGUL SYLLABLE EUB;Lo;0;L;;;;;N;;;;;
+C74E;HANGUL SYLLABLE EUBS;Lo;0;L;;;;;N;;;;;
+C74F;HANGUL SYLLABLE EUS;Lo;0;L;;;;;N;;;;;
+C750;HANGUL SYLLABLE EUSS;Lo;0;L;;;;;N;;;;;
+C751;HANGUL SYLLABLE EUNG;Lo;0;L;;;;;N;;;;;
+C752;HANGUL SYLLABLE EUJ;Lo;0;L;;;;;N;;;;;
+C753;HANGUL SYLLABLE EUC;Lo;0;L;;;;;N;;;;;
+C754;HANGUL SYLLABLE EUK;Lo;0;L;;;;;N;;;;;
+C755;HANGUL SYLLABLE EUT;Lo;0;L;;;;;N;;;;;
+C756;HANGUL SYLLABLE EUP;Lo;0;L;;;;;N;;;;;
+C757;HANGUL SYLLABLE EUH;Lo;0;L;;;;;N;;;;;
+C758;HANGUL SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+C759;HANGUL SYLLABLE YIG;Lo;0;L;;;;;N;;;;;
+C75A;HANGUL SYLLABLE YIGG;Lo;0;L;;;;;N;;;;;
+C75B;HANGUL SYLLABLE YIGS;Lo;0;L;;;;;N;;;;;
+C75C;HANGUL SYLLABLE YIN;Lo;0;L;;;;;N;;;;;
+C75D;HANGUL SYLLABLE YINI;Lo;0;L;;;;;N;;;;;
+C75E;HANGUL SYLLABLE YINH;Lo;0;L;;;;;N;;;;;
+C75F;HANGUL SYLLABLE YID;Lo;0;L;;;;;N;;;;;
+C760;HANGUL SYLLABLE YIL;Lo;0;L;;;;;N;;;;;
+C761;HANGUL SYLLABLE YILG;Lo;0;L;;;;;N;;;;;
+C762;HANGUL SYLLABLE YILM;Lo;0;L;;;;;N;;;;;
+C763;HANGUL SYLLABLE YILB;Lo;0;L;;;;;N;;;;;
+C764;HANGUL SYLLABLE YILS;Lo;0;L;;;;;N;;;;;
+C765;HANGUL SYLLABLE YILT;Lo;0;L;;;;;N;;;;;
+C766;HANGUL SYLLABLE YILP;Lo;0;L;;;;;N;;;;;
+C767;HANGUL SYLLABLE YILH;Lo;0;L;;;;;N;;;;;
+C768;HANGUL SYLLABLE YIM;Lo;0;L;;;;;N;;;;;
+C769;HANGUL SYLLABLE YIB;Lo;0;L;;;;;N;;;;;
+C76A;HANGUL SYLLABLE YIBS;Lo;0;L;;;;;N;;;;;
+C76B;HANGUL SYLLABLE YIS;Lo;0;L;;;;;N;;;;;
+C76C;HANGUL SYLLABLE YISS;Lo;0;L;;;;;N;;;;;
+C76D;HANGUL SYLLABLE YING;Lo;0;L;;;;;N;;;;;
+C76E;HANGUL SYLLABLE YIJ;Lo;0;L;;;;;N;;;;;
+C76F;HANGUL SYLLABLE YIC;Lo;0;L;;;;;N;;;;;
+C770;HANGUL SYLLABLE YIK;Lo;0;L;;;;;N;;;;;
+C771;HANGUL SYLLABLE YIT;Lo;0;L;;;;;N;;;;;
+C772;HANGUL SYLLABLE YIP;Lo;0;L;;;;;N;;;;;
+C773;HANGUL SYLLABLE YIH;Lo;0;L;;;;;N;;;;;
+C774;HANGUL SYLLABLE I;Lo;0;L;;;;;N;;;;;
+C775;HANGUL SYLLABLE IG;Lo;0;L;;;;;N;;;;;
+C776;HANGUL SYLLABLE IGG;Lo;0;L;;;;;N;;;;;
+C777;HANGUL SYLLABLE IGS;Lo;0;L;;;;;N;;;;;
+C778;HANGUL SYLLABLE IN;Lo;0;L;;;;;N;;;;;
+C779;HANGUL SYLLABLE INI;Lo;0;L;;;;;N;;;;;
+C77A;HANGUL SYLLABLE INH;Lo;0;L;;;;;N;;;;;
+C77B;HANGUL SYLLABLE ID;Lo;0;L;;;;;N;;;;;
+C77C;HANGUL SYLLABLE IL;Lo;0;L;;;;;N;;;;;
+C77D;HANGUL SYLLABLE ILG;Lo;0;L;;;;;N;;;;;
+C77E;HANGUL SYLLABLE ILM;Lo;0;L;;;;;N;;;;;
+C77F;HANGUL SYLLABLE ILB;Lo;0;L;;;;;N;;;;;
+C780;HANGUL SYLLABLE ILS;Lo;0;L;;;;;N;;;;;
+C781;HANGUL SYLLABLE ILT;Lo;0;L;;;;;N;;;;;
+C782;HANGUL SYLLABLE ILP;Lo;0;L;;;;;N;;;;;
+C783;HANGUL SYLLABLE ILH;Lo;0;L;;;;;N;;;;;
+C784;HANGUL SYLLABLE IM;Lo;0;L;;;;;N;;;;;
+C785;HANGUL SYLLABLE IB;Lo;0;L;;;;;N;;;;;
+C786;HANGUL SYLLABLE IBS;Lo;0;L;;;;;N;;;;;
+C787;HANGUL SYLLABLE IS;Lo;0;L;;;;;N;;;;;
+C788;HANGUL SYLLABLE ISS;Lo;0;L;;;;;N;;;;;
+C789;HANGUL SYLLABLE ING;Lo;0;L;;;;;N;;;;;
+C78A;HANGUL SYLLABLE IJ;Lo;0;L;;;;;N;;;;;
+C78B;HANGUL SYLLABLE IC;Lo;0;L;;;;;N;;;;;
+C78C;HANGUL SYLLABLE IK;Lo;0;L;;;;;N;;;;;
+C78D;HANGUL SYLLABLE IT;Lo;0;L;;;;;N;;;;;
+C78E;HANGUL SYLLABLE IP;Lo;0;L;;;;;N;;;;;
+C78F;HANGUL SYLLABLE IH;Lo;0;L;;;;;N;;;;;
+C790;HANGUL SYLLABLE JA;Lo;0;L;;;;;N;;;;;
+C791;HANGUL SYLLABLE JAG;Lo;0;L;;;;;N;;;;;
+C792;HANGUL SYLLABLE JAGG;Lo;0;L;;;;;N;;;;;
+C793;HANGUL SYLLABLE JAGS;Lo;0;L;;;;;N;;;;;
+C794;HANGUL SYLLABLE JAN;Lo;0;L;;;;;N;;;;;
+C795;HANGUL SYLLABLE JANI;Lo;0;L;;;;;N;;;;;
+C796;HANGUL SYLLABLE JANH;Lo;0;L;;;;;N;;;;;
+C797;HANGUL SYLLABLE JAD;Lo;0;L;;;;;N;;;;;
+C798;HANGUL SYLLABLE JAL;Lo;0;L;;;;;N;;;;;
+C799;HANGUL SYLLABLE JALG;Lo;0;L;;;;;N;;;;;
+C79A;HANGUL SYLLABLE JALM;Lo;0;L;;;;;N;;;;;
+C79B;HANGUL SYLLABLE JALB;Lo;0;L;;;;;N;;;;;
+C79C;HANGUL SYLLABLE JALS;Lo;0;L;;;;;N;;;;;
+C79D;HANGUL SYLLABLE JALT;Lo;0;L;;;;;N;;;;;
+C79E;HANGUL SYLLABLE JALP;Lo;0;L;;;;;N;;;;;
+C79F;HANGUL SYLLABLE JALH;Lo;0;L;;;;;N;;;;;
+C7A0;HANGUL SYLLABLE JAM;Lo;0;L;;;;;N;;;;;
+C7A1;HANGUL SYLLABLE JAB;Lo;0;L;;;;;N;;;;;
+C7A2;HANGUL SYLLABLE JABS;Lo;0;L;;;;;N;;;;;
+C7A3;HANGUL SYLLABLE JAS;Lo;0;L;;;;;N;;;;;
+C7A4;HANGUL SYLLABLE JASS;Lo;0;L;;;;;N;;;;;
+C7A5;HANGUL SYLLABLE JANG;Lo;0;L;;;;;N;;;;;
+C7A6;HANGUL SYLLABLE JAJ;Lo;0;L;;;;;N;;;;;
+C7A7;HANGUL SYLLABLE JAC;Lo;0;L;;;;;N;;;;;
+C7A8;HANGUL SYLLABLE JAK;Lo;0;L;;;;;N;;;;;
+C7A9;HANGUL SYLLABLE JAT;Lo;0;L;;;;;N;;;;;
+C7AA;HANGUL SYLLABLE JAP;Lo;0;L;;;;;N;;;;;
+C7AB;HANGUL SYLLABLE JAH;Lo;0;L;;;;;N;;;;;
+C7AC;HANGUL SYLLABLE JAE;Lo;0;L;;;;;N;;;;;
+C7AD;HANGUL SYLLABLE JAEG;Lo;0;L;;;;;N;;;;;
+C7AE;HANGUL SYLLABLE JAEGG;Lo;0;L;;;;;N;;;;;
+C7AF;HANGUL SYLLABLE JAEGS;Lo;0;L;;;;;N;;;;;
+C7B0;HANGUL SYLLABLE JAEN;Lo;0;L;;;;;N;;;;;
+C7B1;HANGUL SYLLABLE JAENI;Lo;0;L;;;;;N;;;;;
+C7B2;HANGUL SYLLABLE JAENH;Lo;0;L;;;;;N;;;;;
+C7B3;HANGUL SYLLABLE JAED;Lo;0;L;;;;;N;;;;;
+C7B4;HANGUL SYLLABLE JAEL;Lo;0;L;;;;;N;;;;;
+C7B5;HANGUL SYLLABLE JAELG;Lo;0;L;;;;;N;;;;;
+C7B6;HANGUL SYLLABLE JAELM;Lo;0;L;;;;;N;;;;;
+C7B7;HANGUL SYLLABLE JAELB;Lo;0;L;;;;;N;;;;;
+C7B8;HANGUL SYLLABLE JAELS;Lo;0;L;;;;;N;;;;;
+C7B9;HANGUL SYLLABLE JAELT;Lo;0;L;;;;;N;;;;;
+C7BA;HANGUL SYLLABLE JAELP;Lo;0;L;;;;;N;;;;;
+C7BB;HANGUL SYLLABLE JAELH;Lo;0;L;;;;;N;;;;;
+C7BC;HANGUL SYLLABLE JAEM;Lo;0;L;;;;;N;;;;;
+C7BD;HANGUL SYLLABLE JAEB;Lo;0;L;;;;;N;;;;;
+C7BE;HANGUL SYLLABLE JAEBS;Lo;0;L;;;;;N;;;;;
+C7BF;HANGUL SYLLABLE JAES;Lo;0;L;;;;;N;;;;;
+C7C0;HANGUL SYLLABLE JAESS;Lo;0;L;;;;;N;;;;;
+C7C1;HANGUL SYLLABLE JAENG;Lo;0;L;;;;;N;;;;;
+C7C2;HANGUL SYLLABLE JAEJ;Lo;0;L;;;;;N;;;;;
+C7C3;HANGUL SYLLABLE JAEC;Lo;0;L;;;;;N;;;;;
+C7C4;HANGUL SYLLABLE JAEK;Lo;0;L;;;;;N;;;;;
+C7C5;HANGUL SYLLABLE JAET;Lo;0;L;;;;;N;;;;;
+C7C6;HANGUL SYLLABLE JAEP;Lo;0;L;;;;;N;;;;;
+C7C7;HANGUL SYLLABLE JAEH;Lo;0;L;;;;;N;;;;;
+C7C8;HANGUL SYLLABLE JYA;Lo;0;L;;;;;N;;;;;
+C7C9;HANGUL SYLLABLE JYAG;Lo;0;L;;;;;N;;;;;
+C7CA;HANGUL SYLLABLE JYAGG;Lo;0;L;;;;;N;;;;;
+C7CB;HANGUL SYLLABLE JYAGS;Lo;0;L;;;;;N;;;;;
+C7CC;HANGUL SYLLABLE JYAN;Lo;0;L;;;;;N;;;;;
+C7CD;HANGUL SYLLABLE JYANI;Lo;0;L;;;;;N;;;;;
+C7CE;HANGUL SYLLABLE JYANH;Lo;0;L;;;;;N;;;;;
+C7CF;HANGUL SYLLABLE JYAD;Lo;0;L;;;;;N;;;;;
+C7D0;HANGUL SYLLABLE JYAL;Lo;0;L;;;;;N;;;;;
+C7D1;HANGUL SYLLABLE JYALG;Lo;0;L;;;;;N;;;;;
+C7D2;HANGUL SYLLABLE JYALM;Lo;0;L;;;;;N;;;;;
+C7D3;HANGUL SYLLABLE JYALB;Lo;0;L;;;;;N;;;;;
+C7D4;HANGUL SYLLABLE JYALS;Lo;0;L;;;;;N;;;;;
+C7D5;HANGUL SYLLABLE JYALT;Lo;0;L;;;;;N;;;;;
+C7D6;HANGUL SYLLABLE JYALP;Lo;0;L;;;;;N;;;;;
+C7D7;HANGUL SYLLABLE JYALH;Lo;0;L;;;;;N;;;;;
+C7D8;HANGUL SYLLABLE JYAM;Lo;0;L;;;;;N;;;;;
+C7D9;HANGUL SYLLABLE JYAB;Lo;0;L;;;;;N;;;;;
+C7DA;HANGUL SYLLABLE JYABS;Lo;0;L;;;;;N;;;;;
+C7DB;HANGUL SYLLABLE JYAS;Lo;0;L;;;;;N;;;;;
+C7DC;HANGUL SYLLABLE JYASS;Lo;0;L;;;;;N;;;;;
+C7DD;HANGUL SYLLABLE JYANG;Lo;0;L;;;;;N;;;;;
+C7DE;HANGUL SYLLABLE JYAJ;Lo;0;L;;;;;N;;;;;
+C7DF;HANGUL SYLLABLE JYAC;Lo;0;L;;;;;N;;;;;
+C7E0;HANGUL SYLLABLE JYAK;Lo;0;L;;;;;N;;;;;
+C7E1;HANGUL SYLLABLE JYAT;Lo;0;L;;;;;N;;;;;
+C7E2;HANGUL SYLLABLE JYAP;Lo;0;L;;;;;N;;;;;
+C7E3;HANGUL SYLLABLE JYAH;Lo;0;L;;;;;N;;;;;
+C7E4;HANGUL SYLLABLE JYAE;Lo;0;L;;;;;N;;;;;
+C7E5;HANGUL SYLLABLE JYAEG;Lo;0;L;;;;;N;;;;;
+C7E6;HANGUL SYLLABLE JYAEGG;Lo;0;L;;;;;N;;;;;
+C7E7;HANGUL SYLLABLE JYAEGS;Lo;0;L;;;;;N;;;;;
+C7E8;HANGUL SYLLABLE JYAEN;Lo;0;L;;;;;N;;;;;
+C7E9;HANGUL SYLLABLE JYAENI;Lo;0;L;;;;;N;;;;;
+C7EA;HANGUL SYLLABLE JYAENH;Lo;0;L;;;;;N;;;;;
+C7EB;HANGUL SYLLABLE JYAED;Lo;0;L;;;;;N;;;;;
+C7EC;HANGUL SYLLABLE JYAEL;Lo;0;L;;;;;N;;;;;
+C7ED;HANGUL SYLLABLE JYAELG;Lo;0;L;;;;;N;;;;;
+C7EE;HANGUL SYLLABLE JYAELM;Lo;0;L;;;;;N;;;;;
+C7EF;HANGUL SYLLABLE JYAELB;Lo;0;L;;;;;N;;;;;
+C7F0;HANGUL SYLLABLE JYAELS;Lo;0;L;;;;;N;;;;;
+C7F1;HANGUL SYLLABLE JYAELT;Lo;0;L;;;;;N;;;;;
+C7F2;HANGUL SYLLABLE JYAELP;Lo;0;L;;;;;N;;;;;
+C7F3;HANGUL SYLLABLE JYAELH;Lo;0;L;;;;;N;;;;;
+C7F4;HANGUL SYLLABLE JYAEM;Lo;0;L;;;;;N;;;;;
+C7F5;HANGUL SYLLABLE JYAEB;Lo;0;L;;;;;N;;;;;
+C7F6;HANGUL SYLLABLE JYAEBS;Lo;0;L;;;;;N;;;;;
+C7F7;HANGUL SYLLABLE JYAES;Lo;0;L;;;;;N;;;;;
+C7F8;HANGUL SYLLABLE JYAESS;Lo;0;L;;;;;N;;;;;
+C7F9;HANGUL SYLLABLE JYAENG;Lo;0;L;;;;;N;;;;;
+C7FA;HANGUL SYLLABLE JYAEJ;Lo;0;L;;;;;N;;;;;
+C7FB;HANGUL SYLLABLE JYAEC;Lo;0;L;;;;;N;;;;;
+C7FC;HANGUL SYLLABLE JYAEK;Lo;0;L;;;;;N;;;;;
+C7FD;HANGUL SYLLABLE JYAET;Lo;0;L;;;;;N;;;;;
+C7FE;HANGUL SYLLABLE JYAEP;Lo;0;L;;;;;N;;;;;
+C7FF;HANGUL SYLLABLE JYAEH;Lo;0;L;;;;;N;;;;;
+C800;HANGUL SYLLABLE JEO;Lo;0;L;;;;;N;;;;;
+C801;HANGUL SYLLABLE JEOG;Lo;0;L;;;;;N;;;;;
+C802;HANGUL SYLLABLE JEOGG;Lo;0;L;;;;;N;;;;;
+C803;HANGUL SYLLABLE JEOGS;Lo;0;L;;;;;N;;;;;
+C804;HANGUL SYLLABLE JEON;Lo;0;L;;;;;N;;;;;
+C805;HANGUL SYLLABLE JEONI;Lo;0;L;;;;;N;;;;;
+C806;HANGUL SYLLABLE JEONH;Lo;0;L;;;;;N;;;;;
+C807;HANGUL SYLLABLE JEOD;Lo;0;L;;;;;N;;;;;
+C808;HANGUL SYLLABLE JEOL;Lo;0;L;;;;;N;;;;;
+C809;HANGUL SYLLABLE JEOLG;Lo;0;L;;;;;N;;;;;
+C80A;HANGUL SYLLABLE JEOLM;Lo;0;L;;;;;N;;;;;
+C80B;HANGUL SYLLABLE JEOLB;Lo;0;L;;;;;N;;;;;
+C80C;HANGUL SYLLABLE JEOLS;Lo;0;L;;;;;N;;;;;
+C80D;HANGUL SYLLABLE JEOLT;Lo;0;L;;;;;N;;;;;
+C80E;HANGUL SYLLABLE JEOLP;Lo;0;L;;;;;N;;;;;
+C80F;HANGUL SYLLABLE JEOLH;Lo;0;L;;;;;N;;;;;
+C810;HANGUL SYLLABLE JEOM;Lo;0;L;;;;;N;;;;;
+C811;HANGUL SYLLABLE JEOB;Lo;0;L;;;;;N;;;;;
+C812;HANGUL SYLLABLE JEOBS;Lo;0;L;;;;;N;;;;;
+C813;HANGUL SYLLABLE JEOS;Lo;0;L;;;;;N;;;;;
+C814;HANGUL SYLLABLE JEOSS;Lo;0;L;;;;;N;;;;;
+C815;HANGUL SYLLABLE JEONG;Lo;0;L;;;;;N;;;;;
+C816;HANGUL SYLLABLE JEOJ;Lo;0;L;;;;;N;;;;;
+C817;HANGUL SYLLABLE JEOC;Lo;0;L;;;;;N;;;;;
+C818;HANGUL SYLLABLE JEOK;Lo;0;L;;;;;N;;;;;
+C819;HANGUL SYLLABLE JEOT;Lo;0;L;;;;;N;;;;;
+C81A;HANGUL SYLLABLE JEOP;Lo;0;L;;;;;N;;;;;
+C81B;HANGUL SYLLABLE JEOH;Lo;0;L;;;;;N;;;;;
+C81C;HANGUL SYLLABLE JE;Lo;0;L;;;;;N;;;;;
+C81D;HANGUL SYLLABLE JEG;Lo;0;L;;;;;N;;;;;
+C81E;HANGUL SYLLABLE JEGG;Lo;0;L;;;;;N;;;;;
+C81F;HANGUL SYLLABLE JEGS;Lo;0;L;;;;;N;;;;;
+C820;HANGUL SYLLABLE JEN;Lo;0;L;;;;;N;;;;;
+C821;HANGUL SYLLABLE JENI;Lo;0;L;;;;;N;;;;;
+C822;HANGUL SYLLABLE JENH;Lo;0;L;;;;;N;;;;;
+C823;HANGUL SYLLABLE JED;Lo;0;L;;;;;N;;;;;
+C824;HANGUL SYLLABLE JEL;Lo;0;L;;;;;N;;;;;
+C825;HANGUL SYLLABLE JELG;Lo;0;L;;;;;N;;;;;
+C826;HANGUL SYLLABLE JELM;Lo;0;L;;;;;N;;;;;
+C827;HANGUL SYLLABLE JELB;Lo;0;L;;;;;N;;;;;
+C828;HANGUL SYLLABLE JELS;Lo;0;L;;;;;N;;;;;
+C829;HANGUL SYLLABLE JELT;Lo;0;L;;;;;N;;;;;
+C82A;HANGUL SYLLABLE JELP;Lo;0;L;;;;;N;;;;;
+C82B;HANGUL SYLLABLE JELH;Lo;0;L;;;;;N;;;;;
+C82C;HANGUL SYLLABLE JEM;Lo;0;L;;;;;N;;;;;
+C82D;HANGUL SYLLABLE JEB;Lo;0;L;;;;;N;;;;;
+C82E;HANGUL SYLLABLE JEBS;Lo;0;L;;;;;N;;;;;
+C82F;HANGUL SYLLABLE JES;Lo;0;L;;;;;N;;;;;
+C830;HANGUL SYLLABLE JESS;Lo;0;L;;;;;N;;;;;
+C831;HANGUL SYLLABLE JENG;Lo;0;L;;;;;N;;;;;
+C832;HANGUL SYLLABLE JEJ;Lo;0;L;;;;;N;;;;;
+C833;HANGUL SYLLABLE JEC;Lo;0;L;;;;;N;;;;;
+C834;HANGUL SYLLABLE JEK;Lo;0;L;;;;;N;;;;;
+C835;HANGUL SYLLABLE JET;Lo;0;L;;;;;N;;;;;
+C836;HANGUL SYLLABLE JEP;Lo;0;L;;;;;N;;;;;
+C837;HANGUL SYLLABLE JEH;Lo;0;L;;;;;N;;;;;
+C838;HANGUL SYLLABLE JYEO;Lo;0;L;;;;;N;;;;;
+C839;HANGUL SYLLABLE JYEOG;Lo;0;L;;;;;N;;;;;
+C83A;HANGUL SYLLABLE JYEOGG;Lo;0;L;;;;;N;;;;;
+C83B;HANGUL SYLLABLE JYEOGS;Lo;0;L;;;;;N;;;;;
+C83C;HANGUL SYLLABLE JYEON;Lo;0;L;;;;;N;;;;;
+C83D;HANGUL SYLLABLE JYEONI;Lo;0;L;;;;;N;;;;;
+C83E;HANGUL SYLLABLE JYEONH;Lo;0;L;;;;;N;;;;;
+C83F;HANGUL SYLLABLE JYEOD;Lo;0;L;;;;;N;;;;;
+C840;HANGUL SYLLABLE JYEOL;Lo;0;L;;;;;N;;;;;
+C841;HANGUL SYLLABLE JYEOLG;Lo;0;L;;;;;N;;;;;
+C842;HANGUL SYLLABLE JYEOLM;Lo;0;L;;;;;N;;;;;
+C843;HANGUL SYLLABLE JYEOLB;Lo;0;L;;;;;N;;;;;
+C844;HANGUL SYLLABLE JYEOLS;Lo;0;L;;;;;N;;;;;
+C845;HANGUL SYLLABLE JYEOLT;Lo;0;L;;;;;N;;;;;
+C846;HANGUL SYLLABLE JYEOLP;Lo;0;L;;;;;N;;;;;
+C847;HANGUL SYLLABLE JYEOLH;Lo;0;L;;;;;N;;;;;
+C848;HANGUL SYLLABLE JYEOM;Lo;0;L;;;;;N;;;;;
+C849;HANGUL SYLLABLE JYEOB;Lo;0;L;;;;;N;;;;;
+C84A;HANGUL SYLLABLE JYEOBS;Lo;0;L;;;;;N;;;;;
+C84B;HANGUL SYLLABLE JYEOS;Lo;0;L;;;;;N;;;;;
+C84C;HANGUL SYLLABLE JYEOSS;Lo;0;L;;;;;N;;;;;
+C84D;HANGUL SYLLABLE JYEONG;Lo;0;L;;;;;N;;;;;
+C84E;HANGUL SYLLABLE JYEOJ;Lo;0;L;;;;;N;;;;;
+C84F;HANGUL SYLLABLE JYEOC;Lo;0;L;;;;;N;;;;;
+C850;HANGUL SYLLABLE JYEOK;Lo;0;L;;;;;N;;;;;
+C851;HANGUL SYLLABLE JYEOT;Lo;0;L;;;;;N;;;;;
+C852;HANGUL SYLLABLE JYEOP;Lo;0;L;;;;;N;;;;;
+C853;HANGUL SYLLABLE JYEOH;Lo;0;L;;;;;N;;;;;
+C854;HANGUL SYLLABLE JYE;Lo;0;L;;;;;N;;;;;
+C855;HANGUL SYLLABLE JYEG;Lo;0;L;;;;;N;;;;;
+C856;HANGUL SYLLABLE JYEGG;Lo;0;L;;;;;N;;;;;
+C857;HANGUL SYLLABLE JYEGS;Lo;0;L;;;;;N;;;;;
+C858;HANGUL SYLLABLE JYEN;Lo;0;L;;;;;N;;;;;
+C859;HANGUL SYLLABLE JYENI;Lo;0;L;;;;;N;;;;;
+C85A;HANGUL SYLLABLE JYENH;Lo;0;L;;;;;N;;;;;
+C85B;HANGUL SYLLABLE JYED;Lo;0;L;;;;;N;;;;;
+C85C;HANGUL SYLLABLE JYEL;Lo;0;L;;;;;N;;;;;
+C85D;HANGUL SYLLABLE JYELG;Lo;0;L;;;;;N;;;;;
+C85E;HANGUL SYLLABLE JYELM;Lo;0;L;;;;;N;;;;;
+C85F;HANGUL SYLLABLE JYELB;Lo;0;L;;;;;N;;;;;
+C860;HANGUL SYLLABLE JYELS;Lo;0;L;;;;;N;;;;;
+C861;HANGUL SYLLABLE JYELT;Lo;0;L;;;;;N;;;;;
+C862;HANGUL SYLLABLE JYELP;Lo;0;L;;;;;N;;;;;
+C863;HANGUL SYLLABLE JYELH;Lo;0;L;;;;;N;;;;;
+C864;HANGUL SYLLABLE JYEM;Lo;0;L;;;;;N;;;;;
+C865;HANGUL SYLLABLE JYEB;Lo;0;L;;;;;N;;;;;
+C866;HANGUL SYLLABLE JYEBS;Lo;0;L;;;;;N;;;;;
+C867;HANGUL SYLLABLE JYES;Lo;0;L;;;;;N;;;;;
+C868;HANGUL SYLLABLE JYESS;Lo;0;L;;;;;N;;;;;
+C869;HANGUL SYLLABLE JYENG;Lo;0;L;;;;;N;;;;;
+C86A;HANGUL SYLLABLE JYEJ;Lo;0;L;;;;;N;;;;;
+C86B;HANGUL SYLLABLE JYEC;Lo;0;L;;;;;N;;;;;
+C86C;HANGUL SYLLABLE JYEK;Lo;0;L;;;;;N;;;;;
+C86D;HANGUL SYLLABLE JYET;Lo;0;L;;;;;N;;;;;
+C86E;HANGUL SYLLABLE JYEP;Lo;0;L;;;;;N;;;;;
+C86F;HANGUL SYLLABLE JYEH;Lo;0;L;;;;;N;;;;;
+C870;HANGUL SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+C871;HANGUL SYLLABLE JOG;Lo;0;L;;;;;N;;;;;
+C872;HANGUL SYLLABLE JOGG;Lo;0;L;;;;;N;;;;;
+C873;HANGUL SYLLABLE JOGS;Lo;0;L;;;;;N;;;;;
+C874;HANGUL SYLLABLE JON;Lo;0;L;;;;;N;;;;;
+C875;HANGUL SYLLABLE JONI;Lo;0;L;;;;;N;;;;;
+C876;HANGUL SYLLABLE JONH;Lo;0;L;;;;;N;;;;;
+C877;HANGUL SYLLABLE JOD;Lo;0;L;;;;;N;;;;;
+C878;HANGUL SYLLABLE JOL;Lo;0;L;;;;;N;;;;;
+C879;HANGUL SYLLABLE JOLG;Lo;0;L;;;;;N;;;;;
+C87A;HANGUL SYLLABLE JOLM;Lo;0;L;;;;;N;;;;;
+C87B;HANGUL SYLLABLE JOLB;Lo;0;L;;;;;N;;;;;
+C87C;HANGUL SYLLABLE JOLS;Lo;0;L;;;;;N;;;;;
+C87D;HANGUL SYLLABLE JOLT;Lo;0;L;;;;;N;;;;;
+C87E;HANGUL SYLLABLE JOLP;Lo;0;L;;;;;N;;;;;
+C87F;HANGUL SYLLABLE JOLH;Lo;0;L;;;;;N;;;;;
+C880;HANGUL SYLLABLE JOM;Lo;0;L;;;;;N;;;;;
+C881;HANGUL SYLLABLE JOB;Lo;0;L;;;;;N;;;;;
+C882;HANGUL SYLLABLE JOBS;Lo;0;L;;;;;N;;;;;
+C883;HANGUL SYLLABLE JOS;Lo;0;L;;;;;N;;;;;
+C884;HANGUL SYLLABLE JOSS;Lo;0;L;;;;;N;;;;;
+C885;HANGUL SYLLABLE JONG;Lo;0;L;;;;;N;;;;;
+C886;HANGUL SYLLABLE JOJ;Lo;0;L;;;;;N;;;;;
+C887;HANGUL SYLLABLE JOC;Lo;0;L;;;;;N;;;;;
+C888;HANGUL SYLLABLE JOK;Lo;0;L;;;;;N;;;;;
+C889;HANGUL SYLLABLE JOT;Lo;0;L;;;;;N;;;;;
+C88A;HANGUL SYLLABLE JOP;Lo;0;L;;;;;N;;;;;
+C88B;HANGUL SYLLABLE JOH;Lo;0;L;;;;;N;;;;;
+C88C;HANGUL SYLLABLE JWA;Lo;0;L;;;;;N;;;;;
+C88D;HANGUL SYLLABLE JWAG;Lo;0;L;;;;;N;;;;;
+C88E;HANGUL SYLLABLE JWAGG;Lo;0;L;;;;;N;;;;;
+C88F;HANGUL SYLLABLE JWAGS;Lo;0;L;;;;;N;;;;;
+C890;HANGUL SYLLABLE JWAN;Lo;0;L;;;;;N;;;;;
+C891;HANGUL SYLLABLE JWANI;Lo;0;L;;;;;N;;;;;
+C892;HANGUL SYLLABLE JWANH;Lo;0;L;;;;;N;;;;;
+C893;HANGUL SYLLABLE JWAD;Lo;0;L;;;;;N;;;;;
+C894;HANGUL SYLLABLE JWAL;Lo;0;L;;;;;N;;;;;
+C895;HANGUL SYLLABLE JWALG;Lo;0;L;;;;;N;;;;;
+C896;HANGUL SYLLABLE JWALM;Lo;0;L;;;;;N;;;;;
+C897;HANGUL SYLLABLE JWALB;Lo;0;L;;;;;N;;;;;
+C898;HANGUL SYLLABLE JWALS;Lo;0;L;;;;;N;;;;;
+C899;HANGUL SYLLABLE JWALT;Lo;0;L;;;;;N;;;;;
+C89A;HANGUL SYLLABLE JWALP;Lo;0;L;;;;;N;;;;;
+C89B;HANGUL SYLLABLE JWALH;Lo;0;L;;;;;N;;;;;
+C89C;HANGUL SYLLABLE JWAM;Lo;0;L;;;;;N;;;;;
+C89D;HANGUL SYLLABLE JWAB;Lo;0;L;;;;;N;;;;;
+C89E;HANGUL SYLLABLE JWABS;Lo;0;L;;;;;N;;;;;
+C89F;HANGUL SYLLABLE JWAS;Lo;0;L;;;;;N;;;;;
+C8A0;HANGUL SYLLABLE JWASS;Lo;0;L;;;;;N;;;;;
+C8A1;HANGUL SYLLABLE JWANG;Lo;0;L;;;;;N;;;;;
+C8A2;HANGUL SYLLABLE JWAJ;Lo;0;L;;;;;N;;;;;
+C8A3;HANGUL SYLLABLE JWAC;Lo;0;L;;;;;N;;;;;
+C8A4;HANGUL SYLLABLE JWAK;Lo;0;L;;;;;N;;;;;
+C8A5;HANGUL SYLLABLE JWAT;Lo;0;L;;;;;N;;;;;
+C8A6;HANGUL SYLLABLE JWAP;Lo;0;L;;;;;N;;;;;
+C8A7;HANGUL SYLLABLE JWAH;Lo;0;L;;;;;N;;;;;
+C8A8;HANGUL SYLLABLE JWAE;Lo;0;L;;;;;N;;;;;
+C8A9;HANGUL SYLLABLE JWAEG;Lo;0;L;;;;;N;;;;;
+C8AA;HANGUL SYLLABLE JWAEGG;Lo;0;L;;;;;N;;;;;
+C8AB;HANGUL SYLLABLE JWAEGS;Lo;0;L;;;;;N;;;;;
+C8AC;HANGUL SYLLABLE JWAEN;Lo;0;L;;;;;N;;;;;
+C8AD;HANGUL SYLLABLE JWAENI;Lo;0;L;;;;;N;;;;;
+C8AE;HANGUL SYLLABLE JWAENH;Lo;0;L;;;;;N;;;;;
+C8AF;HANGUL SYLLABLE JWAED;Lo;0;L;;;;;N;;;;;
+C8B0;HANGUL SYLLABLE JWAEL;Lo;0;L;;;;;N;;;;;
+C8B1;HANGUL SYLLABLE JWAELG;Lo;0;L;;;;;N;;;;;
+C8B2;HANGUL SYLLABLE JWAELM;Lo;0;L;;;;;N;;;;;
+C8B3;HANGUL SYLLABLE JWAELB;Lo;0;L;;;;;N;;;;;
+C8B4;HANGUL SYLLABLE JWAELS;Lo;0;L;;;;;N;;;;;
+C8B5;HANGUL SYLLABLE JWAELT;Lo;0;L;;;;;N;;;;;
+C8B6;HANGUL SYLLABLE JWAELP;Lo;0;L;;;;;N;;;;;
+C8B7;HANGUL SYLLABLE JWAELH;Lo;0;L;;;;;N;;;;;
+C8B8;HANGUL SYLLABLE JWAEM;Lo;0;L;;;;;N;;;;;
+C8B9;HANGUL SYLLABLE JWAEB;Lo;0;L;;;;;N;;;;;
+C8BA;HANGUL SYLLABLE JWAEBS;Lo;0;L;;;;;N;;;;;
+C8BB;HANGUL SYLLABLE JWAES;Lo;0;L;;;;;N;;;;;
+C8BC;HANGUL SYLLABLE JWAESS;Lo;0;L;;;;;N;;;;;
+C8BD;HANGUL SYLLABLE JWAENG;Lo;0;L;;;;;N;;;;;
+C8BE;HANGUL SYLLABLE JWAEJ;Lo;0;L;;;;;N;;;;;
+C8BF;HANGUL SYLLABLE JWAEC;Lo;0;L;;;;;N;;;;;
+C8C0;HANGUL SYLLABLE JWAEK;Lo;0;L;;;;;N;;;;;
+C8C1;HANGUL SYLLABLE JWAET;Lo;0;L;;;;;N;;;;;
+C8C2;HANGUL SYLLABLE JWAEP;Lo;0;L;;;;;N;;;;;
+C8C3;HANGUL SYLLABLE JWAEH;Lo;0;L;;;;;N;;;;;
+C8C4;HANGUL SYLLABLE JOE;Lo;0;L;;;;;N;;;;;
+C8C5;HANGUL SYLLABLE JOEG;Lo;0;L;;;;;N;;;;;
+C8C6;HANGUL SYLLABLE JOEGG;Lo;0;L;;;;;N;;;;;
+C8C7;HANGUL SYLLABLE JOEGS;Lo;0;L;;;;;N;;;;;
+C8C8;HANGUL SYLLABLE JOEN;Lo;0;L;;;;;N;;;;;
+C8C9;HANGUL SYLLABLE JOENI;Lo;0;L;;;;;N;;;;;
+C8CA;HANGUL SYLLABLE JOENH;Lo;0;L;;;;;N;;;;;
+C8CB;HANGUL SYLLABLE JOED;Lo;0;L;;;;;N;;;;;
+C8CC;HANGUL SYLLABLE JOEL;Lo;0;L;;;;;N;;;;;
+C8CD;HANGUL SYLLABLE JOELG;Lo;0;L;;;;;N;;;;;
+C8CE;HANGUL SYLLABLE JOELM;Lo;0;L;;;;;N;;;;;
+C8CF;HANGUL SYLLABLE JOELB;Lo;0;L;;;;;N;;;;;
+C8D0;HANGUL SYLLABLE JOELS;Lo;0;L;;;;;N;;;;;
+C8D1;HANGUL SYLLABLE JOELT;Lo;0;L;;;;;N;;;;;
+C8D2;HANGUL SYLLABLE JOELP;Lo;0;L;;;;;N;;;;;
+C8D3;HANGUL SYLLABLE JOELH;Lo;0;L;;;;;N;;;;;
+C8D4;HANGUL SYLLABLE JOEM;Lo;0;L;;;;;N;;;;;
+C8D5;HANGUL SYLLABLE JOEB;Lo;0;L;;;;;N;;;;;
+C8D6;HANGUL SYLLABLE JOEBS;Lo;0;L;;;;;N;;;;;
+C8D7;HANGUL SYLLABLE JOES;Lo;0;L;;;;;N;;;;;
+C8D8;HANGUL SYLLABLE JOESS;Lo;0;L;;;;;N;;;;;
+C8D9;HANGUL SYLLABLE JOENG;Lo;0;L;;;;;N;;;;;
+C8DA;HANGUL SYLLABLE JOEJ;Lo;0;L;;;;;N;;;;;
+C8DB;HANGUL SYLLABLE JOEC;Lo;0;L;;;;;N;;;;;
+C8DC;HANGUL SYLLABLE JOEK;Lo;0;L;;;;;N;;;;;
+C8DD;HANGUL SYLLABLE JOET;Lo;0;L;;;;;N;;;;;
+C8DE;HANGUL SYLLABLE JOEP;Lo;0;L;;;;;N;;;;;
+C8DF;HANGUL SYLLABLE JOEH;Lo;0;L;;;;;N;;;;;
+C8E0;HANGUL SYLLABLE JYO;Lo;0;L;;;;;N;;;;;
+C8E1;HANGUL SYLLABLE JYOG;Lo;0;L;;;;;N;;;;;
+C8E2;HANGUL SYLLABLE JYOGG;Lo;0;L;;;;;N;;;;;
+C8E3;HANGUL SYLLABLE JYOGS;Lo;0;L;;;;;N;;;;;
+C8E4;HANGUL SYLLABLE JYON;Lo;0;L;;;;;N;;;;;
+C8E5;HANGUL SYLLABLE JYONI;Lo;0;L;;;;;N;;;;;
+C8E6;HANGUL SYLLABLE JYONH;Lo;0;L;;;;;N;;;;;
+C8E7;HANGUL SYLLABLE JYOD;Lo;0;L;;;;;N;;;;;
+C8E8;HANGUL SYLLABLE JYOL;Lo;0;L;;;;;N;;;;;
+C8E9;HANGUL SYLLABLE JYOLG;Lo;0;L;;;;;N;;;;;
+C8EA;HANGUL SYLLABLE JYOLM;Lo;0;L;;;;;N;;;;;
+C8EB;HANGUL SYLLABLE JYOLB;Lo;0;L;;;;;N;;;;;
+C8EC;HANGUL SYLLABLE JYOLS;Lo;0;L;;;;;N;;;;;
+C8ED;HANGUL SYLLABLE JYOLT;Lo;0;L;;;;;N;;;;;
+C8EE;HANGUL SYLLABLE JYOLP;Lo;0;L;;;;;N;;;;;
+C8EF;HANGUL SYLLABLE JYOLH;Lo;0;L;;;;;N;;;;;
+C8F0;HANGUL SYLLABLE JYOM;Lo;0;L;;;;;N;;;;;
+C8F1;HANGUL SYLLABLE JYOB;Lo;0;L;;;;;N;;;;;
+C8F2;HANGUL SYLLABLE JYOBS;Lo;0;L;;;;;N;;;;;
+C8F3;HANGUL SYLLABLE JYOS;Lo;0;L;;;;;N;;;;;
+C8F4;HANGUL SYLLABLE JYOSS;Lo;0;L;;;;;N;;;;;
+C8F5;HANGUL SYLLABLE JYONG;Lo;0;L;;;;;N;;;;;
+C8F6;HANGUL SYLLABLE JYOJ;Lo;0;L;;;;;N;;;;;
+C8F7;HANGUL SYLLABLE JYOC;Lo;0;L;;;;;N;;;;;
+C8F8;HANGUL SYLLABLE JYOK;Lo;0;L;;;;;N;;;;;
+C8F9;HANGUL SYLLABLE JYOT;Lo;0;L;;;;;N;;;;;
+C8FA;HANGUL SYLLABLE JYOP;Lo;0;L;;;;;N;;;;;
+C8FB;HANGUL SYLLABLE JYOH;Lo;0;L;;;;;N;;;;;
+C8FC;HANGUL SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+C8FD;HANGUL SYLLABLE JUG;Lo;0;L;;;;;N;;;;;
+C8FE;HANGUL SYLLABLE JUGG;Lo;0;L;;;;;N;;;;;
+C8FF;HANGUL SYLLABLE JUGS;Lo;0;L;;;;;N;;;;;
+C900;HANGUL SYLLABLE JUN;Lo;0;L;;;;;N;;;;;
+C901;HANGUL SYLLABLE JUNI;Lo;0;L;;;;;N;;;;;
+C902;HANGUL SYLLABLE JUNH;Lo;0;L;;;;;N;;;;;
+C903;HANGUL SYLLABLE JUD;Lo;0;L;;;;;N;;;;;
+C904;HANGUL SYLLABLE JUL;Lo;0;L;;;;;N;;;;;
+C905;HANGUL SYLLABLE JULG;Lo;0;L;;;;;N;;;;;
+C906;HANGUL SYLLABLE JULM;Lo;0;L;;;;;N;;;;;
+C907;HANGUL SYLLABLE JULB;Lo;0;L;;;;;N;;;;;
+C908;HANGUL SYLLABLE JULS;Lo;0;L;;;;;N;;;;;
+C909;HANGUL SYLLABLE JULT;Lo;0;L;;;;;N;;;;;
+C90A;HANGUL SYLLABLE JULP;Lo;0;L;;;;;N;;;;;
+C90B;HANGUL SYLLABLE JULH;Lo;0;L;;;;;N;;;;;
+C90C;HANGUL SYLLABLE JUM;Lo;0;L;;;;;N;;;;;
+C90D;HANGUL SYLLABLE JUB;Lo;0;L;;;;;N;;;;;
+C90E;HANGUL SYLLABLE JUBS;Lo;0;L;;;;;N;;;;;
+C90F;HANGUL SYLLABLE JUS;Lo;0;L;;;;;N;;;;;
+C910;HANGUL SYLLABLE JUSS;Lo;0;L;;;;;N;;;;;
+C911;HANGUL SYLLABLE JUNG;Lo;0;L;;;;;N;;;;;
+C912;HANGUL SYLLABLE JUJ;Lo;0;L;;;;;N;;;;;
+C913;HANGUL SYLLABLE JUC;Lo;0;L;;;;;N;;;;;
+C914;HANGUL SYLLABLE JUK;Lo;0;L;;;;;N;;;;;
+C915;HANGUL SYLLABLE JUT;Lo;0;L;;;;;N;;;;;
+C916;HANGUL SYLLABLE JUP;Lo;0;L;;;;;N;;;;;
+C917;HANGUL SYLLABLE JUH;Lo;0;L;;;;;N;;;;;
+C918;HANGUL SYLLABLE JWEO;Lo;0;L;;;;;N;;;;;
+C919;HANGUL SYLLABLE JWEOG;Lo;0;L;;;;;N;;;;;
+C91A;HANGUL SYLLABLE JWEOGG;Lo;0;L;;;;;N;;;;;
+C91B;HANGUL SYLLABLE JWEOGS;Lo;0;L;;;;;N;;;;;
+C91C;HANGUL SYLLABLE JWEON;Lo;0;L;;;;;N;;;;;
+C91D;HANGUL SYLLABLE JWEONI;Lo;0;L;;;;;N;;;;;
+C91E;HANGUL SYLLABLE JWEONH;Lo;0;L;;;;;N;;;;;
+C91F;HANGUL SYLLABLE JWEOD;Lo;0;L;;;;;N;;;;;
+C920;HANGUL SYLLABLE JWEOL;Lo;0;L;;;;;N;;;;;
+C921;HANGUL SYLLABLE JWEOLG;Lo;0;L;;;;;N;;;;;
+C922;HANGUL SYLLABLE JWEOLM;Lo;0;L;;;;;N;;;;;
+C923;HANGUL SYLLABLE JWEOLB;Lo;0;L;;;;;N;;;;;
+C924;HANGUL SYLLABLE JWEOLS;Lo;0;L;;;;;N;;;;;
+C925;HANGUL SYLLABLE JWEOLT;Lo;0;L;;;;;N;;;;;
+C926;HANGUL SYLLABLE JWEOLP;Lo;0;L;;;;;N;;;;;
+C927;HANGUL SYLLABLE JWEOLH;Lo;0;L;;;;;N;;;;;
+C928;HANGUL SYLLABLE JWEOM;Lo;0;L;;;;;N;;;;;
+C929;HANGUL SYLLABLE JWEOB;Lo;0;L;;;;;N;;;;;
+C92A;HANGUL SYLLABLE JWEOBS;Lo;0;L;;;;;N;;;;;
+C92B;HANGUL SYLLABLE JWEOS;Lo;0;L;;;;;N;;;;;
+C92C;HANGUL SYLLABLE JWEOSS;Lo;0;L;;;;;N;;;;;
+C92D;HANGUL SYLLABLE JWEONG;Lo;0;L;;;;;N;;;;;
+C92E;HANGUL SYLLABLE JWEOJ;Lo;0;L;;;;;N;;;;;
+C92F;HANGUL SYLLABLE JWEOC;Lo;0;L;;;;;N;;;;;
+C930;HANGUL SYLLABLE JWEOK;Lo;0;L;;;;;N;;;;;
+C931;HANGUL SYLLABLE JWEOT;Lo;0;L;;;;;N;;;;;
+C932;HANGUL SYLLABLE JWEOP;Lo;0;L;;;;;N;;;;;
+C933;HANGUL SYLLABLE JWEOH;Lo;0;L;;;;;N;;;;;
+C934;HANGUL SYLLABLE JWE;Lo;0;L;;;;;N;;;;;
+C935;HANGUL SYLLABLE JWEG;Lo;0;L;;;;;N;;;;;
+C936;HANGUL SYLLABLE JWEGG;Lo;0;L;;;;;N;;;;;
+C937;HANGUL SYLLABLE JWEGS;Lo;0;L;;;;;N;;;;;
+C938;HANGUL SYLLABLE JWEN;Lo;0;L;;;;;N;;;;;
+C939;HANGUL SYLLABLE JWENI;Lo;0;L;;;;;N;;;;;
+C93A;HANGUL SYLLABLE JWENH;Lo;0;L;;;;;N;;;;;
+C93B;HANGUL SYLLABLE JWED;Lo;0;L;;;;;N;;;;;
+C93C;HANGUL SYLLABLE JWEL;Lo;0;L;;;;;N;;;;;
+C93D;HANGUL SYLLABLE JWELG;Lo;0;L;;;;;N;;;;;
+C93E;HANGUL SYLLABLE JWELM;Lo;0;L;;;;;N;;;;;
+C93F;HANGUL SYLLABLE JWELB;Lo;0;L;;;;;N;;;;;
+C940;HANGUL SYLLABLE JWELS;Lo;0;L;;;;;N;;;;;
+C941;HANGUL SYLLABLE JWELT;Lo;0;L;;;;;N;;;;;
+C942;HANGUL SYLLABLE JWELP;Lo;0;L;;;;;N;;;;;
+C943;HANGUL SYLLABLE JWELH;Lo;0;L;;;;;N;;;;;
+C944;HANGUL SYLLABLE JWEM;Lo;0;L;;;;;N;;;;;
+C945;HANGUL SYLLABLE JWEB;Lo;0;L;;;;;N;;;;;
+C946;HANGUL SYLLABLE JWEBS;Lo;0;L;;;;;N;;;;;
+C947;HANGUL SYLLABLE JWES;Lo;0;L;;;;;N;;;;;
+C948;HANGUL SYLLABLE JWESS;Lo;0;L;;;;;N;;;;;
+C949;HANGUL SYLLABLE JWENG;Lo;0;L;;;;;N;;;;;
+C94A;HANGUL SYLLABLE JWEJ;Lo;0;L;;;;;N;;;;;
+C94B;HANGUL SYLLABLE JWEC;Lo;0;L;;;;;N;;;;;
+C94C;HANGUL SYLLABLE JWEK;Lo;0;L;;;;;N;;;;;
+C94D;HANGUL SYLLABLE JWET;Lo;0;L;;;;;N;;;;;
+C94E;HANGUL SYLLABLE JWEP;Lo;0;L;;;;;N;;;;;
+C94F;HANGUL SYLLABLE JWEH;Lo;0;L;;;;;N;;;;;
+C950;HANGUL SYLLABLE JWI;Lo;0;L;;;;;N;;;;;
+C951;HANGUL SYLLABLE JWIG;Lo;0;L;;;;;N;;;;;
+C952;HANGUL SYLLABLE JWIGG;Lo;0;L;;;;;N;;;;;
+C953;HANGUL SYLLABLE JWIGS;Lo;0;L;;;;;N;;;;;
+C954;HANGUL SYLLABLE JWIN;Lo;0;L;;;;;N;;;;;
+C955;HANGUL SYLLABLE JWINI;Lo;0;L;;;;;N;;;;;
+C956;HANGUL SYLLABLE JWINH;Lo;0;L;;;;;N;;;;;
+C957;HANGUL SYLLABLE JWID;Lo;0;L;;;;;N;;;;;
+C958;HANGUL SYLLABLE JWIL;Lo;0;L;;;;;N;;;;;
+C959;HANGUL SYLLABLE JWILG;Lo;0;L;;;;;N;;;;;
+C95A;HANGUL SYLLABLE JWILM;Lo;0;L;;;;;N;;;;;
+C95B;HANGUL SYLLABLE JWILB;Lo;0;L;;;;;N;;;;;
+C95C;HANGUL SYLLABLE JWILS;Lo;0;L;;;;;N;;;;;
+C95D;HANGUL SYLLABLE JWILT;Lo;0;L;;;;;N;;;;;
+C95E;HANGUL SYLLABLE JWILP;Lo;0;L;;;;;N;;;;;
+C95F;HANGUL SYLLABLE JWILH;Lo;0;L;;;;;N;;;;;
+C960;HANGUL SYLLABLE JWIM;Lo;0;L;;;;;N;;;;;
+C961;HANGUL SYLLABLE JWIB;Lo;0;L;;;;;N;;;;;
+C962;HANGUL SYLLABLE JWIBS;Lo;0;L;;;;;N;;;;;
+C963;HANGUL SYLLABLE JWIS;Lo;0;L;;;;;N;;;;;
+C964;HANGUL SYLLABLE JWISS;Lo;0;L;;;;;N;;;;;
+C965;HANGUL SYLLABLE JWING;Lo;0;L;;;;;N;;;;;
+C966;HANGUL SYLLABLE JWIJ;Lo;0;L;;;;;N;;;;;
+C967;HANGUL SYLLABLE JWIC;Lo;0;L;;;;;N;;;;;
+C968;HANGUL SYLLABLE JWIK;Lo;0;L;;;;;N;;;;;
+C969;HANGUL SYLLABLE JWIT;Lo;0;L;;;;;N;;;;;
+C96A;HANGUL SYLLABLE JWIP;Lo;0;L;;;;;N;;;;;
+C96B;HANGUL SYLLABLE JWIH;Lo;0;L;;;;;N;;;;;
+C96C;HANGUL SYLLABLE JYU;Lo;0;L;;;;;N;;;;;
+C96D;HANGUL SYLLABLE JYUG;Lo;0;L;;;;;N;;;;;
+C96E;HANGUL SYLLABLE JYUGG;Lo;0;L;;;;;N;;;;;
+C96F;HANGUL SYLLABLE JYUGS;Lo;0;L;;;;;N;;;;;
+C970;HANGUL SYLLABLE JYUN;Lo;0;L;;;;;N;;;;;
+C971;HANGUL SYLLABLE JYUNI;Lo;0;L;;;;;N;;;;;
+C972;HANGUL SYLLABLE JYUNH;Lo;0;L;;;;;N;;;;;
+C973;HANGUL SYLLABLE JYUD;Lo;0;L;;;;;N;;;;;
+C974;HANGUL SYLLABLE JYUL;Lo;0;L;;;;;N;;;;;
+C975;HANGUL SYLLABLE JYULG;Lo;0;L;;;;;N;;;;;
+C976;HANGUL SYLLABLE JYULM;Lo;0;L;;;;;N;;;;;
+C977;HANGUL SYLLABLE JYULB;Lo;0;L;;;;;N;;;;;
+C978;HANGUL SYLLABLE JYULS;Lo;0;L;;;;;N;;;;;
+C979;HANGUL SYLLABLE JYULT;Lo;0;L;;;;;N;;;;;
+C97A;HANGUL SYLLABLE JYULP;Lo;0;L;;;;;N;;;;;
+C97B;HANGUL SYLLABLE JYULH;Lo;0;L;;;;;N;;;;;
+C97C;HANGUL SYLLABLE JYUM;Lo;0;L;;;;;N;;;;;
+C97D;HANGUL SYLLABLE JYUB;Lo;0;L;;;;;N;;;;;
+C97E;HANGUL SYLLABLE JYUBS;Lo;0;L;;;;;N;;;;;
+C97F;HANGUL SYLLABLE JYUS;Lo;0;L;;;;;N;;;;;
+C980;HANGUL SYLLABLE JYUSS;Lo;0;L;;;;;N;;;;;
+C981;HANGUL SYLLABLE JYUNG;Lo;0;L;;;;;N;;;;;
+C982;HANGUL SYLLABLE JYUJ;Lo;0;L;;;;;N;;;;;
+C983;HANGUL SYLLABLE JYUC;Lo;0;L;;;;;N;;;;;
+C984;HANGUL SYLLABLE JYUK;Lo;0;L;;;;;N;;;;;
+C985;HANGUL SYLLABLE JYUT;Lo;0;L;;;;;N;;;;;
+C986;HANGUL SYLLABLE JYUP;Lo;0;L;;;;;N;;;;;
+C987;HANGUL SYLLABLE JYUH;Lo;0;L;;;;;N;;;;;
+C988;HANGUL SYLLABLE JEU;Lo;0;L;;;;;N;;;;;
+C989;HANGUL SYLLABLE JEUG;Lo;0;L;;;;;N;;;;;
+C98A;HANGUL SYLLABLE JEUGG;Lo;0;L;;;;;N;;;;;
+C98B;HANGUL SYLLABLE JEUGS;Lo;0;L;;;;;N;;;;;
+C98C;HANGUL SYLLABLE JEUN;Lo;0;L;;;;;N;;;;;
+C98D;HANGUL SYLLABLE JEUNI;Lo;0;L;;;;;N;;;;;
+C98E;HANGUL SYLLABLE JEUNH;Lo;0;L;;;;;N;;;;;
+C98F;HANGUL SYLLABLE JEUD;Lo;0;L;;;;;N;;;;;
+C990;HANGUL SYLLABLE JEUL;Lo;0;L;;;;;N;;;;;
+C991;HANGUL SYLLABLE JEULG;Lo;0;L;;;;;N;;;;;
+C992;HANGUL SYLLABLE JEULM;Lo;0;L;;;;;N;;;;;
+C993;HANGUL SYLLABLE JEULB;Lo;0;L;;;;;N;;;;;
+C994;HANGUL SYLLABLE JEULS;Lo;0;L;;;;;N;;;;;
+C995;HANGUL SYLLABLE JEULT;Lo;0;L;;;;;N;;;;;
+C996;HANGUL SYLLABLE JEULP;Lo;0;L;;;;;N;;;;;
+C997;HANGUL SYLLABLE JEULH;Lo;0;L;;;;;N;;;;;
+C998;HANGUL SYLLABLE JEUM;Lo;0;L;;;;;N;;;;;
+C999;HANGUL SYLLABLE JEUB;Lo;0;L;;;;;N;;;;;
+C99A;HANGUL SYLLABLE JEUBS;Lo;0;L;;;;;N;;;;;
+C99B;HANGUL SYLLABLE JEUS;Lo;0;L;;;;;N;;;;;
+C99C;HANGUL SYLLABLE JEUSS;Lo;0;L;;;;;N;;;;;
+C99D;HANGUL SYLLABLE JEUNG;Lo;0;L;;;;;N;;;;;
+C99E;HANGUL SYLLABLE JEUJ;Lo;0;L;;;;;N;;;;;
+C99F;HANGUL SYLLABLE JEUC;Lo;0;L;;;;;N;;;;;
+C9A0;HANGUL SYLLABLE JEUK;Lo;0;L;;;;;N;;;;;
+C9A1;HANGUL SYLLABLE JEUT;Lo;0;L;;;;;N;;;;;
+C9A2;HANGUL SYLLABLE JEUP;Lo;0;L;;;;;N;;;;;
+C9A3;HANGUL SYLLABLE JEUH;Lo;0;L;;;;;N;;;;;
+C9A4;HANGUL SYLLABLE JYI;Lo;0;L;;;;;N;;;;;
+C9A5;HANGUL SYLLABLE JYIG;Lo;0;L;;;;;N;;;;;
+C9A6;HANGUL SYLLABLE JYIGG;Lo;0;L;;;;;N;;;;;
+C9A7;HANGUL SYLLABLE JYIGS;Lo;0;L;;;;;N;;;;;
+C9A8;HANGUL SYLLABLE JYIN;Lo;0;L;;;;;N;;;;;
+C9A9;HANGUL SYLLABLE JYINI;Lo;0;L;;;;;N;;;;;
+C9AA;HANGUL SYLLABLE JYINH;Lo;0;L;;;;;N;;;;;
+C9AB;HANGUL SYLLABLE JYID;Lo;0;L;;;;;N;;;;;
+C9AC;HANGUL SYLLABLE JYIL;Lo;0;L;;;;;N;;;;;
+C9AD;HANGUL SYLLABLE JYILG;Lo;0;L;;;;;N;;;;;
+C9AE;HANGUL SYLLABLE JYILM;Lo;0;L;;;;;N;;;;;
+C9AF;HANGUL SYLLABLE JYILB;Lo;0;L;;;;;N;;;;;
+C9B0;HANGUL SYLLABLE JYILS;Lo;0;L;;;;;N;;;;;
+C9B1;HANGUL SYLLABLE JYILT;Lo;0;L;;;;;N;;;;;
+C9B2;HANGUL SYLLABLE JYILP;Lo;0;L;;;;;N;;;;;
+C9B3;HANGUL SYLLABLE JYILH;Lo;0;L;;;;;N;;;;;
+C9B4;HANGUL SYLLABLE JYIM;Lo;0;L;;;;;N;;;;;
+C9B5;HANGUL SYLLABLE JYIB;Lo;0;L;;;;;N;;;;;
+C9B6;HANGUL SYLLABLE JYIBS;Lo;0;L;;;;;N;;;;;
+C9B7;HANGUL SYLLABLE JYIS;Lo;0;L;;;;;N;;;;;
+C9B8;HANGUL SYLLABLE JYISS;Lo;0;L;;;;;N;;;;;
+C9B9;HANGUL SYLLABLE JYING;Lo;0;L;;;;;N;;;;;
+C9BA;HANGUL SYLLABLE JYIJ;Lo;0;L;;;;;N;;;;;
+C9BB;HANGUL SYLLABLE JYIC;Lo;0;L;;;;;N;;;;;
+C9BC;HANGUL SYLLABLE JYIK;Lo;0;L;;;;;N;;;;;
+C9BD;HANGUL SYLLABLE JYIT;Lo;0;L;;;;;N;;;;;
+C9BE;HANGUL SYLLABLE JYIP;Lo;0;L;;;;;N;;;;;
+C9BF;HANGUL SYLLABLE JYIH;Lo;0;L;;;;;N;;;;;
+C9C0;HANGUL SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+C9C1;HANGUL SYLLABLE JIG;Lo;0;L;;;;;N;;;;;
+C9C2;HANGUL SYLLABLE JIGG;Lo;0;L;;;;;N;;;;;
+C9C3;HANGUL SYLLABLE JIGS;Lo;0;L;;;;;N;;;;;
+C9C4;HANGUL SYLLABLE JIN;Lo;0;L;;;;;N;;;;;
+C9C5;HANGUL SYLLABLE JINI;Lo;0;L;;;;;N;;;;;
+C9C6;HANGUL SYLLABLE JINH;Lo;0;L;;;;;N;;;;;
+C9C7;HANGUL SYLLABLE JID;Lo;0;L;;;;;N;;;;;
+C9C8;HANGUL SYLLABLE JIL;Lo;0;L;;;;;N;;;;;
+C9C9;HANGUL SYLLABLE JILG;Lo;0;L;;;;;N;;;;;
+C9CA;HANGUL SYLLABLE JILM;Lo;0;L;;;;;N;;;;;
+C9CB;HANGUL SYLLABLE JILB;Lo;0;L;;;;;N;;;;;
+C9CC;HANGUL SYLLABLE JILS;Lo;0;L;;;;;N;;;;;
+C9CD;HANGUL SYLLABLE JILT;Lo;0;L;;;;;N;;;;;
+C9CE;HANGUL SYLLABLE JILP;Lo;0;L;;;;;N;;;;;
+C9CF;HANGUL SYLLABLE JILH;Lo;0;L;;;;;N;;;;;
+C9D0;HANGUL SYLLABLE JIM;Lo;0;L;;;;;N;;;;;
+C9D1;HANGUL SYLLABLE JIB;Lo;0;L;;;;;N;;;;;
+C9D2;HANGUL SYLLABLE JIBS;Lo;0;L;;;;;N;;;;;
+C9D3;HANGUL SYLLABLE JIS;Lo;0;L;;;;;N;;;;;
+C9D4;HANGUL SYLLABLE JISS;Lo;0;L;;;;;N;;;;;
+C9D5;HANGUL SYLLABLE JING;Lo;0;L;;;;;N;;;;;
+C9D6;HANGUL SYLLABLE JIJ;Lo;0;L;;;;;N;;;;;
+C9D7;HANGUL SYLLABLE JIC;Lo;0;L;;;;;N;;;;;
+C9D8;HANGUL SYLLABLE JIK;Lo;0;L;;;;;N;;;;;
+C9D9;HANGUL SYLLABLE JIT;Lo;0;L;;;;;N;;;;;
+C9DA;HANGUL SYLLABLE JIP;Lo;0;L;;;;;N;;;;;
+C9DB;HANGUL SYLLABLE JIH;Lo;0;L;;;;;N;;;;;
+C9DC;HANGUL SYLLABLE JJA;Lo;0;L;;;;;N;;;;;
+C9DD;HANGUL SYLLABLE JJAG;Lo;0;L;;;;;N;;;;;
+C9DE;HANGUL SYLLABLE JJAGG;Lo;0;L;;;;;N;;;;;
+C9DF;HANGUL SYLLABLE JJAGS;Lo;0;L;;;;;N;;;;;
+C9E0;HANGUL SYLLABLE JJAN;Lo;0;L;;;;;N;;;;;
+C9E1;HANGUL SYLLABLE JJANI;Lo;0;L;;;;;N;;;;;
+C9E2;HANGUL SYLLABLE JJANH;Lo;0;L;;;;;N;;;;;
+C9E3;HANGUL SYLLABLE JJAD;Lo;0;L;;;;;N;;;;;
+C9E4;HANGUL SYLLABLE JJAL;Lo;0;L;;;;;N;;;;;
+C9E5;HANGUL SYLLABLE JJALG;Lo;0;L;;;;;N;;;;;
+C9E6;HANGUL SYLLABLE JJALM;Lo;0;L;;;;;N;;;;;
+C9E7;HANGUL SYLLABLE JJALB;Lo;0;L;;;;;N;;;;;
+C9E8;HANGUL SYLLABLE JJALS;Lo;0;L;;;;;N;;;;;
+C9E9;HANGUL SYLLABLE JJALT;Lo;0;L;;;;;N;;;;;
+C9EA;HANGUL SYLLABLE JJALP;Lo;0;L;;;;;N;;;;;
+C9EB;HANGUL SYLLABLE JJALH;Lo;0;L;;;;;N;;;;;
+C9EC;HANGUL SYLLABLE JJAM;Lo;0;L;;;;;N;;;;;
+C9ED;HANGUL SYLLABLE JJAB;Lo;0;L;;;;;N;;;;;
+C9EE;HANGUL SYLLABLE JJABS;Lo;0;L;;;;;N;;;;;
+C9EF;HANGUL SYLLABLE JJAS;Lo;0;L;;;;;N;;;;;
+C9F0;HANGUL SYLLABLE JJASS;Lo;0;L;;;;;N;;;;;
+C9F1;HANGUL SYLLABLE JJANG;Lo;0;L;;;;;N;;;;;
+C9F2;HANGUL SYLLABLE JJAJ;Lo;0;L;;;;;N;;;;;
+C9F3;HANGUL SYLLABLE JJAC;Lo;0;L;;;;;N;;;;;
+C9F4;HANGUL SYLLABLE JJAK;Lo;0;L;;;;;N;;;;;
+C9F5;HANGUL SYLLABLE JJAT;Lo;0;L;;;;;N;;;;;
+C9F6;HANGUL SYLLABLE JJAP;Lo;0;L;;;;;N;;;;;
+C9F7;HANGUL SYLLABLE JJAH;Lo;0;L;;;;;N;;;;;
+C9F8;HANGUL SYLLABLE JJAE;Lo;0;L;;;;;N;;;;;
+C9F9;HANGUL SYLLABLE JJAEG;Lo;0;L;;;;;N;;;;;
+C9FA;HANGUL SYLLABLE JJAEGG;Lo;0;L;;;;;N;;;;;
+C9FB;HANGUL SYLLABLE JJAEGS;Lo;0;L;;;;;N;;;;;
+C9FC;HANGUL SYLLABLE JJAEN;Lo;0;L;;;;;N;;;;;
+C9FD;HANGUL SYLLABLE JJAENI;Lo;0;L;;;;;N;;;;;
+C9FE;HANGUL SYLLABLE JJAENH;Lo;0;L;;;;;N;;;;;
+C9FF;HANGUL SYLLABLE JJAED;Lo;0;L;;;;;N;;;;;
+CA00;HANGUL SYLLABLE JJAEL;Lo;0;L;;;;;N;;;;;
+CA01;HANGUL SYLLABLE JJAELG;Lo;0;L;;;;;N;;;;;
+CA02;HANGUL SYLLABLE JJAELM;Lo;0;L;;;;;N;;;;;
+CA03;HANGUL SYLLABLE JJAELB;Lo;0;L;;;;;N;;;;;
+CA04;HANGUL SYLLABLE JJAELS;Lo;0;L;;;;;N;;;;;
+CA05;HANGUL SYLLABLE JJAELT;Lo;0;L;;;;;N;;;;;
+CA06;HANGUL SYLLABLE JJAELP;Lo;0;L;;;;;N;;;;;
+CA07;HANGUL SYLLABLE JJAELH;Lo;0;L;;;;;N;;;;;
+CA08;HANGUL SYLLABLE JJAEM;Lo;0;L;;;;;N;;;;;
+CA09;HANGUL SYLLABLE JJAEB;Lo;0;L;;;;;N;;;;;
+CA0A;HANGUL SYLLABLE JJAEBS;Lo;0;L;;;;;N;;;;;
+CA0B;HANGUL SYLLABLE JJAES;Lo;0;L;;;;;N;;;;;
+CA0C;HANGUL SYLLABLE JJAESS;Lo;0;L;;;;;N;;;;;
+CA0D;HANGUL SYLLABLE JJAENG;Lo;0;L;;;;;N;;;;;
+CA0E;HANGUL SYLLABLE JJAEJ;Lo;0;L;;;;;N;;;;;
+CA0F;HANGUL SYLLABLE JJAEC;Lo;0;L;;;;;N;;;;;
+CA10;HANGUL SYLLABLE JJAEK;Lo;0;L;;;;;N;;;;;
+CA11;HANGUL SYLLABLE JJAET;Lo;0;L;;;;;N;;;;;
+CA12;HANGUL SYLLABLE JJAEP;Lo;0;L;;;;;N;;;;;
+CA13;HANGUL SYLLABLE JJAEH;Lo;0;L;;;;;N;;;;;
+CA14;HANGUL SYLLABLE JJYA;Lo;0;L;;;;;N;;;;;
+CA15;HANGUL SYLLABLE JJYAG;Lo;0;L;;;;;N;;;;;
+CA16;HANGUL SYLLABLE JJYAGG;Lo;0;L;;;;;N;;;;;
+CA17;HANGUL SYLLABLE JJYAGS;Lo;0;L;;;;;N;;;;;
+CA18;HANGUL SYLLABLE JJYAN;Lo;0;L;;;;;N;;;;;
+CA19;HANGUL SYLLABLE JJYANI;Lo;0;L;;;;;N;;;;;
+CA1A;HANGUL SYLLABLE JJYANH;Lo;0;L;;;;;N;;;;;
+CA1B;HANGUL SYLLABLE JJYAD;Lo;0;L;;;;;N;;;;;
+CA1C;HANGUL SYLLABLE JJYAL;Lo;0;L;;;;;N;;;;;
+CA1D;HANGUL SYLLABLE JJYALG;Lo;0;L;;;;;N;;;;;
+CA1E;HANGUL SYLLABLE JJYALM;Lo;0;L;;;;;N;;;;;
+CA1F;HANGUL SYLLABLE JJYALB;Lo;0;L;;;;;N;;;;;
+CA20;HANGUL SYLLABLE JJYALS;Lo;0;L;;;;;N;;;;;
+CA21;HANGUL SYLLABLE JJYALT;Lo;0;L;;;;;N;;;;;
+CA22;HANGUL SYLLABLE JJYALP;Lo;0;L;;;;;N;;;;;
+CA23;HANGUL SYLLABLE JJYALH;Lo;0;L;;;;;N;;;;;
+CA24;HANGUL SYLLABLE JJYAM;Lo;0;L;;;;;N;;;;;
+CA25;HANGUL SYLLABLE JJYAB;Lo;0;L;;;;;N;;;;;
+CA26;HANGUL SYLLABLE JJYABS;Lo;0;L;;;;;N;;;;;
+CA27;HANGUL SYLLABLE JJYAS;Lo;0;L;;;;;N;;;;;
+CA28;HANGUL SYLLABLE JJYASS;Lo;0;L;;;;;N;;;;;
+CA29;HANGUL SYLLABLE JJYANG;Lo;0;L;;;;;N;;;;;
+CA2A;HANGUL SYLLABLE JJYAJ;Lo;0;L;;;;;N;;;;;
+CA2B;HANGUL SYLLABLE JJYAC;Lo;0;L;;;;;N;;;;;
+CA2C;HANGUL SYLLABLE JJYAK;Lo;0;L;;;;;N;;;;;
+CA2D;HANGUL SYLLABLE JJYAT;Lo;0;L;;;;;N;;;;;
+CA2E;HANGUL SYLLABLE JJYAP;Lo;0;L;;;;;N;;;;;
+CA2F;HANGUL SYLLABLE JJYAH;Lo;0;L;;;;;N;;;;;
+CA30;HANGUL SYLLABLE JJYAE;Lo;0;L;;;;;N;;;;;
+CA31;HANGUL SYLLABLE JJYAEG;Lo;0;L;;;;;N;;;;;
+CA32;HANGUL SYLLABLE JJYAEGG;Lo;0;L;;;;;N;;;;;
+CA33;HANGUL SYLLABLE JJYAEGS;Lo;0;L;;;;;N;;;;;
+CA34;HANGUL SYLLABLE JJYAEN;Lo;0;L;;;;;N;;;;;
+CA35;HANGUL SYLLABLE JJYAENI;Lo;0;L;;;;;N;;;;;
+CA36;HANGUL SYLLABLE JJYAENH;Lo;0;L;;;;;N;;;;;
+CA37;HANGUL SYLLABLE JJYAED;Lo;0;L;;;;;N;;;;;
+CA38;HANGUL SYLLABLE JJYAEL;Lo;0;L;;;;;N;;;;;
+CA39;HANGUL SYLLABLE JJYAELG;Lo;0;L;;;;;N;;;;;
+CA3A;HANGUL SYLLABLE JJYAELM;Lo;0;L;;;;;N;;;;;
+CA3B;HANGUL SYLLABLE JJYAELB;Lo;0;L;;;;;N;;;;;
+CA3C;HANGUL SYLLABLE JJYAELS;Lo;0;L;;;;;N;;;;;
+CA3D;HANGUL SYLLABLE JJYAELT;Lo;0;L;;;;;N;;;;;
+CA3E;HANGUL SYLLABLE JJYAELP;Lo;0;L;;;;;N;;;;;
+CA3F;HANGUL SYLLABLE JJYAELH;Lo;0;L;;;;;N;;;;;
+CA40;HANGUL SYLLABLE JJYAEM;Lo;0;L;;;;;N;;;;;
+CA41;HANGUL SYLLABLE JJYAEB;Lo;0;L;;;;;N;;;;;
+CA42;HANGUL SYLLABLE JJYAEBS;Lo;0;L;;;;;N;;;;;
+CA43;HANGUL SYLLABLE JJYAES;Lo;0;L;;;;;N;;;;;
+CA44;HANGUL SYLLABLE JJYAESS;Lo;0;L;;;;;N;;;;;
+CA45;HANGUL SYLLABLE JJYAENG;Lo;0;L;;;;;N;;;;;
+CA46;HANGUL SYLLABLE JJYAEJ;Lo;0;L;;;;;N;;;;;
+CA47;HANGUL SYLLABLE JJYAEC;Lo;0;L;;;;;N;;;;;
+CA48;HANGUL SYLLABLE JJYAEK;Lo;0;L;;;;;N;;;;;
+CA49;HANGUL SYLLABLE JJYAET;Lo;0;L;;;;;N;;;;;
+CA4A;HANGUL SYLLABLE JJYAEP;Lo;0;L;;;;;N;;;;;
+CA4B;HANGUL SYLLABLE JJYAEH;Lo;0;L;;;;;N;;;;;
+CA4C;HANGUL SYLLABLE JJEO;Lo;0;L;;;;;N;;;;;
+CA4D;HANGUL SYLLABLE JJEOG;Lo;0;L;;;;;N;;;;;
+CA4E;HANGUL SYLLABLE JJEOGG;Lo;0;L;;;;;N;;;;;
+CA4F;HANGUL SYLLABLE JJEOGS;Lo;0;L;;;;;N;;;;;
+CA50;HANGUL SYLLABLE JJEON;Lo;0;L;;;;;N;;;;;
+CA51;HANGUL SYLLABLE JJEONI;Lo;0;L;;;;;N;;;;;
+CA52;HANGUL SYLLABLE JJEONH;Lo;0;L;;;;;N;;;;;
+CA53;HANGUL SYLLABLE JJEOD;Lo;0;L;;;;;N;;;;;
+CA54;HANGUL SYLLABLE JJEOL;Lo;0;L;;;;;N;;;;;
+CA55;HANGUL SYLLABLE JJEOLG;Lo;0;L;;;;;N;;;;;
+CA56;HANGUL SYLLABLE JJEOLM;Lo;0;L;;;;;N;;;;;
+CA57;HANGUL SYLLABLE JJEOLB;Lo;0;L;;;;;N;;;;;
+CA58;HANGUL SYLLABLE JJEOLS;Lo;0;L;;;;;N;;;;;
+CA59;HANGUL SYLLABLE JJEOLT;Lo;0;L;;;;;N;;;;;
+CA5A;HANGUL SYLLABLE JJEOLP;Lo;0;L;;;;;N;;;;;
+CA5B;HANGUL SYLLABLE JJEOLH;Lo;0;L;;;;;N;;;;;
+CA5C;HANGUL SYLLABLE JJEOM;Lo;0;L;;;;;N;;;;;
+CA5D;HANGUL SYLLABLE JJEOB;Lo;0;L;;;;;N;;;;;
+CA5E;HANGUL SYLLABLE JJEOBS;Lo;0;L;;;;;N;;;;;
+CA5F;HANGUL SYLLABLE JJEOS;Lo;0;L;;;;;N;;;;;
+CA60;HANGUL SYLLABLE JJEOSS;Lo;0;L;;;;;N;;;;;
+CA61;HANGUL SYLLABLE JJEONG;Lo;0;L;;;;;N;;;;;
+CA62;HANGUL SYLLABLE JJEOJ;Lo;0;L;;;;;N;;;;;
+CA63;HANGUL SYLLABLE JJEOC;Lo;0;L;;;;;N;;;;;
+CA64;HANGUL SYLLABLE JJEOK;Lo;0;L;;;;;N;;;;;
+CA65;HANGUL SYLLABLE JJEOT;Lo;0;L;;;;;N;;;;;
+CA66;HANGUL SYLLABLE JJEOP;Lo;0;L;;;;;N;;;;;
+CA67;HANGUL SYLLABLE JJEOH;Lo;0;L;;;;;N;;;;;
+CA68;HANGUL SYLLABLE JJE;Lo;0;L;;;;;N;;;;;
+CA69;HANGUL SYLLABLE JJEG;Lo;0;L;;;;;N;;;;;
+CA6A;HANGUL SYLLABLE JJEGG;Lo;0;L;;;;;N;;;;;
+CA6B;HANGUL SYLLABLE JJEGS;Lo;0;L;;;;;N;;;;;
+CA6C;HANGUL SYLLABLE JJEN;Lo;0;L;;;;;N;;;;;
+CA6D;HANGUL SYLLABLE JJENI;Lo;0;L;;;;;N;;;;;
+CA6E;HANGUL SYLLABLE JJENH;Lo;0;L;;;;;N;;;;;
+CA6F;HANGUL SYLLABLE JJED;Lo;0;L;;;;;N;;;;;
+CA70;HANGUL SYLLABLE JJEL;Lo;0;L;;;;;N;;;;;
+CA71;HANGUL SYLLABLE JJELG;Lo;0;L;;;;;N;;;;;
+CA72;HANGUL SYLLABLE JJELM;Lo;0;L;;;;;N;;;;;
+CA73;HANGUL SYLLABLE JJELB;Lo;0;L;;;;;N;;;;;
+CA74;HANGUL SYLLABLE JJELS;Lo;0;L;;;;;N;;;;;
+CA75;HANGUL SYLLABLE JJELT;Lo;0;L;;;;;N;;;;;
+CA76;HANGUL SYLLABLE JJELP;Lo;0;L;;;;;N;;;;;
+CA77;HANGUL SYLLABLE JJELH;Lo;0;L;;;;;N;;;;;
+CA78;HANGUL SYLLABLE JJEM;Lo;0;L;;;;;N;;;;;
+CA79;HANGUL SYLLABLE JJEB;Lo;0;L;;;;;N;;;;;
+CA7A;HANGUL SYLLABLE JJEBS;Lo;0;L;;;;;N;;;;;
+CA7B;HANGUL SYLLABLE JJES;Lo;0;L;;;;;N;;;;;
+CA7C;HANGUL SYLLABLE JJESS;Lo;0;L;;;;;N;;;;;
+CA7D;HANGUL SYLLABLE JJENG;Lo;0;L;;;;;N;;;;;
+CA7E;HANGUL SYLLABLE JJEJ;Lo;0;L;;;;;N;;;;;
+CA7F;HANGUL SYLLABLE JJEC;Lo;0;L;;;;;N;;;;;
+CA80;HANGUL SYLLABLE JJEK;Lo;0;L;;;;;N;;;;;
+CA81;HANGUL SYLLABLE JJET;Lo;0;L;;;;;N;;;;;
+CA82;HANGUL SYLLABLE JJEP;Lo;0;L;;;;;N;;;;;
+CA83;HANGUL SYLLABLE JJEH;Lo;0;L;;;;;N;;;;;
+CA84;HANGUL SYLLABLE JJYEO;Lo;0;L;;;;;N;;;;;
+CA85;HANGUL SYLLABLE JJYEOG;Lo;0;L;;;;;N;;;;;
+CA86;HANGUL SYLLABLE JJYEOGG;Lo;0;L;;;;;N;;;;;
+CA87;HANGUL SYLLABLE JJYEOGS;Lo;0;L;;;;;N;;;;;
+CA88;HANGUL SYLLABLE JJYEON;Lo;0;L;;;;;N;;;;;
+CA89;HANGUL SYLLABLE JJYEONI;Lo;0;L;;;;;N;;;;;
+CA8A;HANGUL SYLLABLE JJYEONH;Lo;0;L;;;;;N;;;;;
+CA8B;HANGUL SYLLABLE JJYEOD;Lo;0;L;;;;;N;;;;;
+CA8C;HANGUL SYLLABLE JJYEOL;Lo;0;L;;;;;N;;;;;
+CA8D;HANGUL SYLLABLE JJYEOLG;Lo;0;L;;;;;N;;;;;
+CA8E;HANGUL SYLLABLE JJYEOLM;Lo;0;L;;;;;N;;;;;
+CA8F;HANGUL SYLLABLE JJYEOLB;Lo;0;L;;;;;N;;;;;
+CA90;HANGUL SYLLABLE JJYEOLS;Lo;0;L;;;;;N;;;;;
+CA91;HANGUL SYLLABLE JJYEOLT;Lo;0;L;;;;;N;;;;;
+CA92;HANGUL SYLLABLE JJYEOLP;Lo;0;L;;;;;N;;;;;
+CA93;HANGUL SYLLABLE JJYEOLH;Lo;0;L;;;;;N;;;;;
+CA94;HANGUL SYLLABLE JJYEOM;Lo;0;L;;;;;N;;;;;
+CA95;HANGUL SYLLABLE JJYEOB;Lo;0;L;;;;;N;;;;;
+CA96;HANGUL SYLLABLE JJYEOBS;Lo;0;L;;;;;N;;;;;
+CA97;HANGUL SYLLABLE JJYEOS;Lo;0;L;;;;;N;;;;;
+CA98;HANGUL SYLLABLE JJYEOSS;Lo;0;L;;;;;N;;;;;
+CA99;HANGUL SYLLABLE JJYEONG;Lo;0;L;;;;;N;;;;;
+CA9A;HANGUL SYLLABLE JJYEOJ;Lo;0;L;;;;;N;;;;;
+CA9B;HANGUL SYLLABLE JJYEOC;Lo;0;L;;;;;N;;;;;
+CA9C;HANGUL SYLLABLE JJYEOK;Lo;0;L;;;;;N;;;;;
+CA9D;HANGUL SYLLABLE JJYEOT;Lo;0;L;;;;;N;;;;;
+CA9E;HANGUL SYLLABLE JJYEOP;Lo;0;L;;;;;N;;;;;
+CA9F;HANGUL SYLLABLE JJYEOH;Lo;0;L;;;;;N;;;;;
+CAA0;HANGUL SYLLABLE JJYE;Lo;0;L;;;;;N;;;;;
+CAA1;HANGUL SYLLABLE JJYEG;Lo;0;L;;;;;N;;;;;
+CAA2;HANGUL SYLLABLE JJYEGG;Lo;0;L;;;;;N;;;;;
+CAA3;HANGUL SYLLABLE JJYEGS;Lo;0;L;;;;;N;;;;;
+CAA4;HANGUL SYLLABLE JJYEN;Lo;0;L;;;;;N;;;;;
+CAA5;HANGUL SYLLABLE JJYENI;Lo;0;L;;;;;N;;;;;
+CAA6;HANGUL SYLLABLE JJYENH;Lo;0;L;;;;;N;;;;;
+CAA7;HANGUL SYLLABLE JJYED;Lo;0;L;;;;;N;;;;;
+CAA8;HANGUL SYLLABLE JJYEL;Lo;0;L;;;;;N;;;;;
+CAA9;HANGUL SYLLABLE JJYELG;Lo;0;L;;;;;N;;;;;
+CAAA;HANGUL SYLLABLE JJYELM;Lo;0;L;;;;;N;;;;;
+CAAB;HANGUL SYLLABLE JJYELB;Lo;0;L;;;;;N;;;;;
+CAAC;HANGUL SYLLABLE JJYELS;Lo;0;L;;;;;N;;;;;
+CAAD;HANGUL SYLLABLE JJYELT;Lo;0;L;;;;;N;;;;;
+CAAE;HANGUL SYLLABLE JJYELP;Lo;0;L;;;;;N;;;;;
+CAAF;HANGUL SYLLABLE JJYELH;Lo;0;L;;;;;N;;;;;
+CAB0;HANGUL SYLLABLE JJYEM;Lo;0;L;;;;;N;;;;;
+CAB1;HANGUL SYLLABLE JJYEB;Lo;0;L;;;;;N;;;;;
+CAB2;HANGUL SYLLABLE JJYEBS;Lo;0;L;;;;;N;;;;;
+CAB3;HANGUL SYLLABLE JJYES;Lo;0;L;;;;;N;;;;;
+CAB4;HANGUL SYLLABLE JJYESS;Lo;0;L;;;;;N;;;;;
+CAB5;HANGUL SYLLABLE JJYENG;Lo;0;L;;;;;N;;;;;
+CAB6;HANGUL SYLLABLE JJYEJ;Lo;0;L;;;;;N;;;;;
+CAB7;HANGUL SYLLABLE JJYEC;Lo;0;L;;;;;N;;;;;
+CAB8;HANGUL SYLLABLE JJYEK;Lo;0;L;;;;;N;;;;;
+CAB9;HANGUL SYLLABLE JJYET;Lo;0;L;;;;;N;;;;;
+CABA;HANGUL SYLLABLE JJYEP;Lo;0;L;;;;;N;;;;;
+CABB;HANGUL SYLLABLE JJYEH;Lo;0;L;;;;;N;;;;;
+CABC;HANGUL SYLLABLE JJO;Lo;0;L;;;;;N;;;;;
+CABD;HANGUL SYLLABLE JJOG;Lo;0;L;;;;;N;;;;;
+CABE;HANGUL SYLLABLE JJOGG;Lo;0;L;;;;;N;;;;;
+CABF;HANGUL SYLLABLE JJOGS;Lo;0;L;;;;;N;;;;;
+CAC0;HANGUL SYLLABLE JJON;Lo;0;L;;;;;N;;;;;
+CAC1;HANGUL SYLLABLE JJONI;Lo;0;L;;;;;N;;;;;
+CAC2;HANGUL SYLLABLE JJONH;Lo;0;L;;;;;N;;;;;
+CAC3;HANGUL SYLLABLE JJOD;Lo;0;L;;;;;N;;;;;
+CAC4;HANGUL SYLLABLE JJOL;Lo;0;L;;;;;N;;;;;
+CAC5;HANGUL SYLLABLE JJOLG;Lo;0;L;;;;;N;;;;;
+CAC6;HANGUL SYLLABLE JJOLM;Lo;0;L;;;;;N;;;;;
+CAC7;HANGUL SYLLABLE JJOLB;Lo;0;L;;;;;N;;;;;
+CAC8;HANGUL SYLLABLE JJOLS;Lo;0;L;;;;;N;;;;;
+CAC9;HANGUL SYLLABLE JJOLT;Lo;0;L;;;;;N;;;;;
+CACA;HANGUL SYLLABLE JJOLP;Lo;0;L;;;;;N;;;;;
+CACB;HANGUL SYLLABLE JJOLH;Lo;0;L;;;;;N;;;;;
+CACC;HANGUL SYLLABLE JJOM;Lo;0;L;;;;;N;;;;;
+CACD;HANGUL SYLLABLE JJOB;Lo;0;L;;;;;N;;;;;
+CACE;HANGUL SYLLABLE JJOBS;Lo;0;L;;;;;N;;;;;
+CACF;HANGUL SYLLABLE JJOS;Lo;0;L;;;;;N;;;;;
+CAD0;HANGUL SYLLABLE JJOSS;Lo;0;L;;;;;N;;;;;
+CAD1;HANGUL SYLLABLE JJONG;Lo;0;L;;;;;N;;;;;
+CAD2;HANGUL SYLLABLE JJOJ;Lo;0;L;;;;;N;;;;;
+CAD3;HANGUL SYLLABLE JJOC;Lo;0;L;;;;;N;;;;;
+CAD4;HANGUL SYLLABLE JJOK;Lo;0;L;;;;;N;;;;;
+CAD5;HANGUL SYLLABLE JJOT;Lo;0;L;;;;;N;;;;;
+CAD6;HANGUL SYLLABLE JJOP;Lo;0;L;;;;;N;;;;;
+CAD7;HANGUL SYLLABLE JJOH;Lo;0;L;;;;;N;;;;;
+CAD8;HANGUL SYLLABLE JJWA;Lo;0;L;;;;;N;;;;;
+CAD9;HANGUL SYLLABLE JJWAG;Lo;0;L;;;;;N;;;;;
+CADA;HANGUL SYLLABLE JJWAGG;Lo;0;L;;;;;N;;;;;
+CADB;HANGUL SYLLABLE JJWAGS;Lo;0;L;;;;;N;;;;;
+CADC;HANGUL SYLLABLE JJWAN;Lo;0;L;;;;;N;;;;;
+CADD;HANGUL SYLLABLE JJWANI;Lo;0;L;;;;;N;;;;;
+CADE;HANGUL SYLLABLE JJWANH;Lo;0;L;;;;;N;;;;;
+CADF;HANGUL SYLLABLE JJWAD;Lo;0;L;;;;;N;;;;;
+CAE0;HANGUL SYLLABLE JJWAL;Lo;0;L;;;;;N;;;;;
+CAE1;HANGUL SYLLABLE JJWALG;Lo;0;L;;;;;N;;;;;
+CAE2;HANGUL SYLLABLE JJWALM;Lo;0;L;;;;;N;;;;;
+CAE3;HANGUL SYLLABLE JJWALB;Lo;0;L;;;;;N;;;;;
+CAE4;HANGUL SYLLABLE JJWALS;Lo;0;L;;;;;N;;;;;
+CAE5;HANGUL SYLLABLE JJWALT;Lo;0;L;;;;;N;;;;;
+CAE6;HANGUL SYLLABLE JJWALP;Lo;0;L;;;;;N;;;;;
+CAE7;HANGUL SYLLABLE JJWALH;Lo;0;L;;;;;N;;;;;
+CAE8;HANGUL SYLLABLE JJWAM;Lo;0;L;;;;;N;;;;;
+CAE9;HANGUL SYLLABLE JJWAB;Lo;0;L;;;;;N;;;;;
+CAEA;HANGUL SYLLABLE JJWABS;Lo;0;L;;;;;N;;;;;
+CAEB;HANGUL SYLLABLE JJWAS;Lo;0;L;;;;;N;;;;;
+CAEC;HANGUL SYLLABLE JJWASS;Lo;0;L;;;;;N;;;;;
+CAED;HANGUL SYLLABLE JJWANG;Lo;0;L;;;;;N;;;;;
+CAEE;HANGUL SYLLABLE JJWAJ;Lo;0;L;;;;;N;;;;;
+CAEF;HANGUL SYLLABLE JJWAC;Lo;0;L;;;;;N;;;;;
+CAF0;HANGUL SYLLABLE JJWAK;Lo;0;L;;;;;N;;;;;
+CAF1;HANGUL SYLLABLE JJWAT;Lo;0;L;;;;;N;;;;;
+CAF2;HANGUL SYLLABLE JJWAP;Lo;0;L;;;;;N;;;;;
+CAF3;HANGUL SYLLABLE JJWAH;Lo;0;L;;;;;N;;;;;
+CAF4;HANGUL SYLLABLE JJWAE;Lo;0;L;;;;;N;;;;;
+CAF5;HANGUL SYLLABLE JJWAEG;Lo;0;L;;;;;N;;;;;
+CAF6;HANGUL SYLLABLE JJWAEGG;Lo;0;L;;;;;N;;;;;
+CAF7;HANGUL SYLLABLE JJWAEGS;Lo;0;L;;;;;N;;;;;
+CAF8;HANGUL SYLLABLE JJWAEN;Lo;0;L;;;;;N;;;;;
+CAF9;HANGUL SYLLABLE JJWAENI;Lo;0;L;;;;;N;;;;;
+CAFA;HANGUL SYLLABLE JJWAENH;Lo;0;L;;;;;N;;;;;
+CAFB;HANGUL SYLLABLE JJWAED;Lo;0;L;;;;;N;;;;;
+CAFC;HANGUL SYLLABLE JJWAEL;Lo;0;L;;;;;N;;;;;
+CAFD;HANGUL SYLLABLE JJWAELG;Lo;0;L;;;;;N;;;;;
+CAFE;HANGUL SYLLABLE JJWAELM;Lo;0;L;;;;;N;;;;;
+CAFF;HANGUL SYLLABLE JJWAELB;Lo;0;L;;;;;N;;;;;
+CB00;HANGUL SYLLABLE JJWAELS;Lo;0;L;;;;;N;;;;;
+CB01;HANGUL SYLLABLE JJWAELT;Lo;0;L;;;;;N;;;;;
+CB02;HANGUL SYLLABLE JJWAELP;Lo;0;L;;;;;N;;;;;
+CB03;HANGUL SYLLABLE JJWAELH;Lo;0;L;;;;;N;;;;;
+CB04;HANGUL SYLLABLE JJWAEM;Lo;0;L;;;;;N;;;;;
+CB05;HANGUL SYLLABLE JJWAEB;Lo;0;L;;;;;N;;;;;
+CB06;HANGUL SYLLABLE JJWAEBS;Lo;0;L;;;;;N;;;;;
+CB07;HANGUL SYLLABLE JJWAES;Lo;0;L;;;;;N;;;;;
+CB08;HANGUL SYLLABLE JJWAESS;Lo;0;L;;;;;N;;;;;
+CB09;HANGUL SYLLABLE JJWAENG;Lo;0;L;;;;;N;;;;;
+CB0A;HANGUL SYLLABLE JJWAEJ;Lo;0;L;;;;;N;;;;;
+CB0B;HANGUL SYLLABLE JJWAEC;Lo;0;L;;;;;N;;;;;
+CB0C;HANGUL SYLLABLE JJWAEK;Lo;0;L;;;;;N;;;;;
+CB0D;HANGUL SYLLABLE JJWAET;Lo;0;L;;;;;N;;;;;
+CB0E;HANGUL SYLLABLE JJWAEP;Lo;0;L;;;;;N;;;;;
+CB0F;HANGUL SYLLABLE JJWAEH;Lo;0;L;;;;;N;;;;;
+CB10;HANGUL SYLLABLE JJOE;Lo;0;L;;;;;N;;;;;
+CB11;HANGUL SYLLABLE JJOEG;Lo;0;L;;;;;N;;;;;
+CB12;HANGUL SYLLABLE JJOEGG;Lo;0;L;;;;;N;;;;;
+CB13;HANGUL SYLLABLE JJOEGS;Lo;0;L;;;;;N;;;;;
+CB14;HANGUL SYLLABLE JJOEN;Lo;0;L;;;;;N;;;;;
+CB15;HANGUL SYLLABLE JJOENI;Lo;0;L;;;;;N;;;;;
+CB16;HANGUL SYLLABLE JJOENH;Lo;0;L;;;;;N;;;;;
+CB17;HANGUL SYLLABLE JJOED;Lo;0;L;;;;;N;;;;;
+CB18;HANGUL SYLLABLE JJOEL;Lo;0;L;;;;;N;;;;;
+CB19;HANGUL SYLLABLE JJOELG;Lo;0;L;;;;;N;;;;;
+CB1A;HANGUL SYLLABLE JJOELM;Lo;0;L;;;;;N;;;;;
+CB1B;HANGUL SYLLABLE JJOELB;Lo;0;L;;;;;N;;;;;
+CB1C;HANGUL SYLLABLE JJOELS;Lo;0;L;;;;;N;;;;;
+CB1D;HANGUL SYLLABLE JJOELT;Lo;0;L;;;;;N;;;;;
+CB1E;HANGUL SYLLABLE JJOELP;Lo;0;L;;;;;N;;;;;
+CB1F;HANGUL SYLLABLE JJOELH;Lo;0;L;;;;;N;;;;;
+CB20;HANGUL SYLLABLE JJOEM;Lo;0;L;;;;;N;;;;;
+CB21;HANGUL SYLLABLE JJOEB;Lo;0;L;;;;;N;;;;;
+CB22;HANGUL SYLLABLE JJOEBS;Lo;0;L;;;;;N;;;;;
+CB23;HANGUL SYLLABLE JJOES;Lo;0;L;;;;;N;;;;;
+CB24;HANGUL SYLLABLE JJOESS;Lo;0;L;;;;;N;;;;;
+CB25;HANGUL SYLLABLE JJOENG;Lo;0;L;;;;;N;;;;;
+CB26;HANGUL SYLLABLE JJOEJ;Lo;0;L;;;;;N;;;;;
+CB27;HANGUL SYLLABLE JJOEC;Lo;0;L;;;;;N;;;;;
+CB28;HANGUL SYLLABLE JJOEK;Lo;0;L;;;;;N;;;;;
+CB29;HANGUL SYLLABLE JJOET;Lo;0;L;;;;;N;;;;;
+CB2A;HANGUL SYLLABLE JJOEP;Lo;0;L;;;;;N;;;;;
+CB2B;HANGUL SYLLABLE JJOEH;Lo;0;L;;;;;N;;;;;
+CB2C;HANGUL SYLLABLE JJYO;Lo;0;L;;;;;N;;;;;
+CB2D;HANGUL SYLLABLE JJYOG;Lo;0;L;;;;;N;;;;;
+CB2E;HANGUL SYLLABLE JJYOGG;Lo;0;L;;;;;N;;;;;
+CB2F;HANGUL SYLLABLE JJYOGS;Lo;0;L;;;;;N;;;;;
+CB30;HANGUL SYLLABLE JJYON;Lo;0;L;;;;;N;;;;;
+CB31;HANGUL SYLLABLE JJYONI;Lo;0;L;;;;;N;;;;;
+CB32;HANGUL SYLLABLE JJYONH;Lo;0;L;;;;;N;;;;;
+CB33;HANGUL SYLLABLE JJYOD;Lo;0;L;;;;;N;;;;;
+CB34;HANGUL SYLLABLE JJYOL;Lo;0;L;;;;;N;;;;;
+CB35;HANGUL SYLLABLE JJYOLG;Lo;0;L;;;;;N;;;;;
+CB36;HANGUL SYLLABLE JJYOLM;Lo;0;L;;;;;N;;;;;
+CB37;HANGUL SYLLABLE JJYOLB;Lo;0;L;;;;;N;;;;;
+CB38;HANGUL SYLLABLE JJYOLS;Lo;0;L;;;;;N;;;;;
+CB39;HANGUL SYLLABLE JJYOLT;Lo;0;L;;;;;N;;;;;
+CB3A;HANGUL SYLLABLE JJYOLP;Lo;0;L;;;;;N;;;;;
+CB3B;HANGUL SYLLABLE JJYOLH;Lo;0;L;;;;;N;;;;;
+CB3C;HANGUL SYLLABLE JJYOM;Lo;0;L;;;;;N;;;;;
+CB3D;HANGUL SYLLABLE JJYOB;Lo;0;L;;;;;N;;;;;
+CB3E;HANGUL SYLLABLE JJYOBS;Lo;0;L;;;;;N;;;;;
+CB3F;HANGUL SYLLABLE JJYOS;Lo;0;L;;;;;N;;;;;
+CB40;HANGUL SYLLABLE JJYOSS;Lo;0;L;;;;;N;;;;;
+CB41;HANGUL SYLLABLE JJYONG;Lo;0;L;;;;;N;;;;;
+CB42;HANGUL SYLLABLE JJYOJ;Lo;0;L;;;;;N;;;;;
+CB43;HANGUL SYLLABLE JJYOC;Lo;0;L;;;;;N;;;;;
+CB44;HANGUL SYLLABLE JJYOK;Lo;0;L;;;;;N;;;;;
+CB45;HANGUL SYLLABLE JJYOT;Lo;0;L;;;;;N;;;;;
+CB46;HANGUL SYLLABLE JJYOP;Lo;0;L;;;;;N;;;;;
+CB47;HANGUL SYLLABLE JJYOH;Lo;0;L;;;;;N;;;;;
+CB48;HANGUL SYLLABLE JJU;Lo;0;L;;;;;N;;;;;
+CB49;HANGUL SYLLABLE JJUG;Lo;0;L;;;;;N;;;;;
+CB4A;HANGUL SYLLABLE JJUGG;Lo;0;L;;;;;N;;;;;
+CB4B;HANGUL SYLLABLE JJUGS;Lo;0;L;;;;;N;;;;;
+CB4C;HANGUL SYLLABLE JJUN;Lo;0;L;;;;;N;;;;;
+CB4D;HANGUL SYLLABLE JJUNI;Lo;0;L;;;;;N;;;;;
+CB4E;HANGUL SYLLABLE JJUNH;Lo;0;L;;;;;N;;;;;
+CB4F;HANGUL SYLLABLE JJUD;Lo;0;L;;;;;N;;;;;
+CB50;HANGUL SYLLABLE JJUL;Lo;0;L;;;;;N;;;;;
+CB51;HANGUL SYLLABLE JJULG;Lo;0;L;;;;;N;;;;;
+CB52;HANGUL SYLLABLE JJULM;Lo;0;L;;;;;N;;;;;
+CB53;HANGUL SYLLABLE JJULB;Lo;0;L;;;;;N;;;;;
+CB54;HANGUL SYLLABLE JJULS;Lo;0;L;;;;;N;;;;;
+CB55;HANGUL SYLLABLE JJULT;Lo;0;L;;;;;N;;;;;
+CB56;HANGUL SYLLABLE JJULP;Lo;0;L;;;;;N;;;;;
+CB57;HANGUL SYLLABLE JJULH;Lo;0;L;;;;;N;;;;;
+CB58;HANGUL SYLLABLE JJUM;Lo;0;L;;;;;N;;;;;
+CB59;HANGUL SYLLABLE JJUB;Lo;0;L;;;;;N;;;;;
+CB5A;HANGUL SYLLABLE JJUBS;Lo;0;L;;;;;N;;;;;
+CB5B;HANGUL SYLLABLE JJUS;Lo;0;L;;;;;N;;;;;
+CB5C;HANGUL SYLLABLE JJUSS;Lo;0;L;;;;;N;;;;;
+CB5D;HANGUL SYLLABLE JJUNG;Lo;0;L;;;;;N;;;;;
+CB5E;HANGUL SYLLABLE JJUJ;Lo;0;L;;;;;N;;;;;
+CB5F;HANGUL SYLLABLE JJUC;Lo;0;L;;;;;N;;;;;
+CB60;HANGUL SYLLABLE JJUK;Lo;0;L;;;;;N;;;;;
+CB61;HANGUL SYLLABLE JJUT;Lo;0;L;;;;;N;;;;;
+CB62;HANGUL SYLLABLE JJUP;Lo;0;L;;;;;N;;;;;
+CB63;HANGUL SYLLABLE JJUH;Lo;0;L;;;;;N;;;;;
+CB64;HANGUL SYLLABLE JJWEO;Lo;0;L;;;;;N;;;;;
+CB65;HANGUL SYLLABLE JJWEOG;Lo;0;L;;;;;N;;;;;
+CB66;HANGUL SYLLABLE JJWEOGG;Lo;0;L;;;;;N;;;;;
+CB67;HANGUL SYLLABLE JJWEOGS;Lo;0;L;;;;;N;;;;;
+CB68;HANGUL SYLLABLE JJWEON;Lo;0;L;;;;;N;;;;;
+CB69;HANGUL SYLLABLE JJWEONI;Lo;0;L;;;;;N;;;;;
+CB6A;HANGUL SYLLABLE JJWEONH;Lo;0;L;;;;;N;;;;;
+CB6B;HANGUL SYLLABLE JJWEOD;Lo;0;L;;;;;N;;;;;
+CB6C;HANGUL SYLLABLE JJWEOL;Lo;0;L;;;;;N;;;;;
+CB6D;HANGUL SYLLABLE JJWEOLG;Lo;0;L;;;;;N;;;;;
+CB6E;HANGUL SYLLABLE JJWEOLM;Lo;0;L;;;;;N;;;;;
+CB6F;HANGUL SYLLABLE JJWEOLB;Lo;0;L;;;;;N;;;;;
+CB70;HANGUL SYLLABLE JJWEOLS;Lo;0;L;;;;;N;;;;;
+CB71;HANGUL SYLLABLE JJWEOLT;Lo;0;L;;;;;N;;;;;
+CB72;HANGUL SYLLABLE JJWEOLP;Lo;0;L;;;;;N;;;;;
+CB73;HANGUL SYLLABLE JJWEOLH;Lo;0;L;;;;;N;;;;;
+CB74;HANGUL SYLLABLE JJWEOM;Lo;0;L;;;;;N;;;;;
+CB75;HANGUL SYLLABLE JJWEOB;Lo;0;L;;;;;N;;;;;
+CB76;HANGUL SYLLABLE JJWEOBS;Lo;0;L;;;;;N;;;;;
+CB77;HANGUL SYLLABLE JJWEOS;Lo;0;L;;;;;N;;;;;
+CB78;HANGUL SYLLABLE JJWEOSS;Lo;0;L;;;;;N;;;;;
+CB79;HANGUL SYLLABLE JJWEONG;Lo;0;L;;;;;N;;;;;
+CB7A;HANGUL SYLLABLE JJWEOJ;Lo;0;L;;;;;N;;;;;
+CB7B;HANGUL SYLLABLE JJWEOC;Lo;0;L;;;;;N;;;;;
+CB7C;HANGUL SYLLABLE JJWEOK;Lo;0;L;;;;;N;;;;;
+CB7D;HANGUL SYLLABLE JJWEOT;Lo;0;L;;;;;N;;;;;
+CB7E;HANGUL SYLLABLE JJWEOP;Lo;0;L;;;;;N;;;;;
+CB7F;HANGUL SYLLABLE JJWEOH;Lo;0;L;;;;;N;;;;;
+CB80;HANGUL SYLLABLE JJWE;Lo;0;L;;;;;N;;;;;
+CB81;HANGUL SYLLABLE JJWEG;Lo;0;L;;;;;N;;;;;
+CB82;HANGUL SYLLABLE JJWEGG;Lo;0;L;;;;;N;;;;;
+CB83;HANGUL SYLLABLE JJWEGS;Lo;0;L;;;;;N;;;;;
+CB84;HANGUL SYLLABLE JJWEN;Lo;0;L;;;;;N;;;;;
+CB85;HANGUL SYLLABLE JJWENI;Lo;0;L;;;;;N;;;;;
+CB86;HANGUL SYLLABLE JJWENH;Lo;0;L;;;;;N;;;;;
+CB87;HANGUL SYLLABLE JJWED;Lo;0;L;;;;;N;;;;;
+CB88;HANGUL SYLLABLE JJWEL;Lo;0;L;;;;;N;;;;;
+CB89;HANGUL SYLLABLE JJWELG;Lo;0;L;;;;;N;;;;;
+CB8A;HANGUL SYLLABLE JJWELM;Lo;0;L;;;;;N;;;;;
+CB8B;HANGUL SYLLABLE JJWELB;Lo;0;L;;;;;N;;;;;
+CB8C;HANGUL SYLLABLE JJWELS;Lo;0;L;;;;;N;;;;;
+CB8D;HANGUL SYLLABLE JJWELT;Lo;0;L;;;;;N;;;;;
+CB8E;HANGUL SYLLABLE JJWELP;Lo;0;L;;;;;N;;;;;
+CB8F;HANGUL SYLLABLE JJWELH;Lo;0;L;;;;;N;;;;;
+CB90;HANGUL SYLLABLE JJWEM;Lo;0;L;;;;;N;;;;;
+CB91;HANGUL SYLLABLE JJWEB;Lo;0;L;;;;;N;;;;;
+CB92;HANGUL SYLLABLE JJWEBS;Lo;0;L;;;;;N;;;;;
+CB93;HANGUL SYLLABLE JJWES;Lo;0;L;;;;;N;;;;;
+CB94;HANGUL SYLLABLE JJWESS;Lo;0;L;;;;;N;;;;;
+CB95;HANGUL SYLLABLE JJWENG;Lo;0;L;;;;;N;;;;;
+CB96;HANGUL SYLLABLE JJWEJ;Lo;0;L;;;;;N;;;;;
+CB97;HANGUL SYLLABLE JJWEC;Lo;0;L;;;;;N;;;;;
+CB98;HANGUL SYLLABLE JJWEK;Lo;0;L;;;;;N;;;;;
+CB99;HANGUL SYLLABLE JJWET;Lo;0;L;;;;;N;;;;;
+CB9A;HANGUL SYLLABLE JJWEP;Lo;0;L;;;;;N;;;;;
+CB9B;HANGUL SYLLABLE JJWEH;Lo;0;L;;;;;N;;;;;
+CB9C;HANGUL SYLLABLE JJWI;Lo;0;L;;;;;N;;;;;
+CB9D;HANGUL SYLLABLE JJWIG;Lo;0;L;;;;;N;;;;;
+CB9E;HANGUL SYLLABLE JJWIGG;Lo;0;L;;;;;N;;;;;
+CB9F;HANGUL SYLLABLE JJWIGS;Lo;0;L;;;;;N;;;;;
+CBA0;HANGUL SYLLABLE JJWIN;Lo;0;L;;;;;N;;;;;
+CBA1;HANGUL SYLLABLE JJWINI;Lo;0;L;;;;;N;;;;;
+CBA2;HANGUL SYLLABLE JJWINH;Lo;0;L;;;;;N;;;;;
+CBA3;HANGUL SYLLABLE JJWID;Lo;0;L;;;;;N;;;;;
+CBA4;HANGUL SYLLABLE JJWIL;Lo;0;L;;;;;N;;;;;
+CBA5;HANGUL SYLLABLE JJWILG;Lo;0;L;;;;;N;;;;;
+CBA6;HANGUL SYLLABLE JJWILM;Lo;0;L;;;;;N;;;;;
+CBA7;HANGUL SYLLABLE JJWILB;Lo;0;L;;;;;N;;;;;
+CBA8;HANGUL SYLLABLE JJWILS;Lo;0;L;;;;;N;;;;;
+CBA9;HANGUL SYLLABLE JJWILT;Lo;0;L;;;;;N;;;;;
+CBAA;HANGUL SYLLABLE JJWILP;Lo;0;L;;;;;N;;;;;
+CBAB;HANGUL SYLLABLE JJWILH;Lo;0;L;;;;;N;;;;;
+CBAC;HANGUL SYLLABLE JJWIM;Lo;0;L;;;;;N;;;;;
+CBAD;HANGUL SYLLABLE JJWIB;Lo;0;L;;;;;N;;;;;
+CBAE;HANGUL SYLLABLE JJWIBS;Lo;0;L;;;;;N;;;;;
+CBAF;HANGUL SYLLABLE JJWIS;Lo;0;L;;;;;N;;;;;
+CBB0;HANGUL SYLLABLE JJWISS;Lo;0;L;;;;;N;;;;;
+CBB1;HANGUL SYLLABLE JJWING;Lo;0;L;;;;;N;;;;;
+CBB2;HANGUL SYLLABLE JJWIJ;Lo;0;L;;;;;N;;;;;
+CBB3;HANGUL SYLLABLE JJWIC;Lo;0;L;;;;;N;;;;;
+CBB4;HANGUL SYLLABLE JJWIK;Lo;0;L;;;;;N;;;;;
+CBB5;HANGUL SYLLABLE JJWIT;Lo;0;L;;;;;N;;;;;
+CBB6;HANGUL SYLLABLE JJWIP;Lo;0;L;;;;;N;;;;;
+CBB7;HANGUL SYLLABLE JJWIH;Lo;0;L;;;;;N;;;;;
+CBB8;HANGUL SYLLABLE JJYU;Lo;0;L;;;;;N;;;;;
+CBB9;HANGUL SYLLABLE JJYUG;Lo;0;L;;;;;N;;;;;
+CBBA;HANGUL SYLLABLE JJYUGG;Lo;0;L;;;;;N;;;;;
+CBBB;HANGUL SYLLABLE JJYUGS;Lo;0;L;;;;;N;;;;;
+CBBC;HANGUL SYLLABLE JJYUN;Lo;0;L;;;;;N;;;;;
+CBBD;HANGUL SYLLABLE JJYUNI;Lo;0;L;;;;;N;;;;;
+CBBE;HANGUL SYLLABLE JJYUNH;Lo;0;L;;;;;N;;;;;
+CBBF;HANGUL SYLLABLE JJYUD;Lo;0;L;;;;;N;;;;;
+CBC0;HANGUL SYLLABLE JJYUL;Lo;0;L;;;;;N;;;;;
+CBC1;HANGUL SYLLABLE JJYULG;Lo;0;L;;;;;N;;;;;
+CBC2;HANGUL SYLLABLE JJYULM;Lo;0;L;;;;;N;;;;;
+CBC3;HANGUL SYLLABLE JJYULB;Lo;0;L;;;;;N;;;;;
+CBC4;HANGUL SYLLABLE JJYULS;Lo;0;L;;;;;N;;;;;
+CBC5;HANGUL SYLLABLE JJYULT;Lo;0;L;;;;;N;;;;;
+CBC6;HANGUL SYLLABLE JJYULP;Lo;0;L;;;;;N;;;;;
+CBC7;HANGUL SYLLABLE JJYULH;Lo;0;L;;;;;N;;;;;
+CBC8;HANGUL SYLLABLE JJYUM;Lo;0;L;;;;;N;;;;;
+CBC9;HANGUL SYLLABLE JJYUB;Lo;0;L;;;;;N;;;;;
+CBCA;HANGUL SYLLABLE JJYUBS;Lo;0;L;;;;;N;;;;;
+CBCB;HANGUL SYLLABLE JJYUS;Lo;0;L;;;;;N;;;;;
+CBCC;HANGUL SYLLABLE JJYUSS;Lo;0;L;;;;;N;;;;;
+CBCD;HANGUL SYLLABLE JJYUNG;Lo;0;L;;;;;N;;;;;
+CBCE;HANGUL SYLLABLE JJYUJ;Lo;0;L;;;;;N;;;;;
+CBCF;HANGUL SYLLABLE JJYUC;Lo;0;L;;;;;N;;;;;
+CBD0;HANGUL SYLLABLE JJYUK;Lo;0;L;;;;;N;;;;;
+CBD1;HANGUL SYLLABLE JJYUT;Lo;0;L;;;;;N;;;;;
+CBD2;HANGUL SYLLABLE JJYUP;Lo;0;L;;;;;N;;;;;
+CBD3;HANGUL SYLLABLE JJYUH;Lo;0;L;;;;;N;;;;;
+CBD4;HANGUL SYLLABLE JJEU;Lo;0;L;;;;;N;;;;;
+CBD5;HANGUL SYLLABLE JJEUG;Lo;0;L;;;;;N;;;;;
+CBD6;HANGUL SYLLABLE JJEUGG;Lo;0;L;;;;;N;;;;;
+CBD7;HANGUL SYLLABLE JJEUGS;Lo;0;L;;;;;N;;;;;
+CBD8;HANGUL SYLLABLE JJEUN;Lo;0;L;;;;;N;;;;;
+CBD9;HANGUL SYLLABLE JJEUNI;Lo;0;L;;;;;N;;;;;
+CBDA;HANGUL SYLLABLE JJEUNH;Lo;0;L;;;;;N;;;;;
+CBDB;HANGUL SYLLABLE JJEUD;Lo;0;L;;;;;N;;;;;
+CBDC;HANGUL SYLLABLE JJEUL;Lo;0;L;;;;;N;;;;;
+CBDD;HANGUL SYLLABLE JJEULG;Lo;0;L;;;;;N;;;;;
+CBDE;HANGUL SYLLABLE JJEULM;Lo;0;L;;;;;N;;;;;
+CBDF;HANGUL SYLLABLE JJEULB;Lo;0;L;;;;;N;;;;;
+CBE0;HANGUL SYLLABLE JJEULS;Lo;0;L;;;;;N;;;;;
+CBE1;HANGUL SYLLABLE JJEULT;Lo;0;L;;;;;N;;;;;
+CBE2;HANGUL SYLLABLE JJEULP;Lo;0;L;;;;;N;;;;;
+CBE3;HANGUL SYLLABLE JJEULH;Lo;0;L;;;;;N;;;;;
+CBE4;HANGUL SYLLABLE JJEUM;Lo;0;L;;;;;N;;;;;
+CBE5;HANGUL SYLLABLE JJEUB;Lo;0;L;;;;;N;;;;;
+CBE6;HANGUL SYLLABLE JJEUBS;Lo;0;L;;;;;N;;;;;
+CBE7;HANGUL SYLLABLE JJEUS;Lo;0;L;;;;;N;;;;;
+CBE8;HANGUL SYLLABLE JJEUSS;Lo;0;L;;;;;N;;;;;
+CBE9;HANGUL SYLLABLE JJEUNG;Lo;0;L;;;;;N;;;;;
+CBEA;HANGUL SYLLABLE JJEUJ;Lo;0;L;;;;;N;;;;;
+CBEB;HANGUL SYLLABLE JJEUC;Lo;0;L;;;;;N;;;;;
+CBEC;HANGUL SYLLABLE JJEUK;Lo;0;L;;;;;N;;;;;
+CBED;HANGUL SYLLABLE JJEUT;Lo;0;L;;;;;N;;;;;
+CBEE;HANGUL SYLLABLE JJEUP;Lo;0;L;;;;;N;;;;;
+CBEF;HANGUL SYLLABLE JJEUH;Lo;0;L;;;;;N;;;;;
+CBF0;HANGUL SYLLABLE JJYI;Lo;0;L;;;;;N;;;;;
+CBF1;HANGUL SYLLABLE JJYIG;Lo;0;L;;;;;N;;;;;
+CBF2;HANGUL SYLLABLE JJYIGG;Lo;0;L;;;;;N;;;;;
+CBF3;HANGUL SYLLABLE JJYIGS;Lo;0;L;;;;;N;;;;;
+CBF4;HANGUL SYLLABLE JJYIN;Lo;0;L;;;;;N;;;;;
+CBF5;HANGUL SYLLABLE JJYINI;Lo;0;L;;;;;N;;;;;
+CBF6;HANGUL SYLLABLE JJYINH;Lo;0;L;;;;;N;;;;;
+CBF7;HANGUL SYLLABLE JJYID;Lo;0;L;;;;;N;;;;;
+CBF8;HANGUL SYLLABLE JJYIL;Lo;0;L;;;;;N;;;;;
+CBF9;HANGUL SYLLABLE JJYILG;Lo;0;L;;;;;N;;;;;
+CBFA;HANGUL SYLLABLE JJYILM;Lo;0;L;;;;;N;;;;;
+CBFB;HANGUL SYLLABLE JJYILB;Lo;0;L;;;;;N;;;;;
+CBFC;HANGUL SYLLABLE JJYILS;Lo;0;L;;;;;N;;;;;
+CBFD;HANGUL SYLLABLE JJYILT;Lo;0;L;;;;;N;;;;;
+CBFE;HANGUL SYLLABLE JJYILP;Lo;0;L;;;;;N;;;;;
+CBFF;HANGUL SYLLABLE JJYILH;Lo;0;L;;;;;N;;;;;
+CC00;HANGUL SYLLABLE JJYIM;Lo;0;L;;;;;N;;;;;
+CC01;HANGUL SYLLABLE JJYIB;Lo;0;L;;;;;N;;;;;
+CC02;HANGUL SYLLABLE JJYIBS;Lo;0;L;;;;;N;;;;;
+CC03;HANGUL SYLLABLE JJYIS;Lo;0;L;;;;;N;;;;;
+CC04;HANGUL SYLLABLE JJYISS;Lo;0;L;;;;;N;;;;;
+CC05;HANGUL SYLLABLE JJYING;Lo;0;L;;;;;N;;;;;
+CC06;HANGUL SYLLABLE JJYIJ;Lo;0;L;;;;;N;;;;;
+CC07;HANGUL SYLLABLE JJYIC;Lo;0;L;;;;;N;;;;;
+CC08;HANGUL SYLLABLE JJYIK;Lo;0;L;;;;;N;;;;;
+CC09;HANGUL SYLLABLE JJYIT;Lo;0;L;;;;;N;;;;;
+CC0A;HANGUL SYLLABLE JJYIP;Lo;0;L;;;;;N;;;;;
+CC0B;HANGUL SYLLABLE JJYIH;Lo;0;L;;;;;N;;;;;
+CC0C;HANGUL SYLLABLE JJI;Lo;0;L;;;;;N;;;;;
+CC0D;HANGUL SYLLABLE JJIG;Lo;0;L;;;;;N;;;;;
+CC0E;HANGUL SYLLABLE JJIGG;Lo;0;L;;;;;N;;;;;
+CC0F;HANGUL SYLLABLE JJIGS;Lo;0;L;;;;;N;;;;;
+CC10;HANGUL SYLLABLE JJIN;Lo;0;L;;;;;N;;;;;
+CC11;HANGUL SYLLABLE JJINI;Lo;0;L;;;;;N;;;;;
+CC12;HANGUL SYLLABLE JJINH;Lo;0;L;;;;;N;;;;;
+CC13;HANGUL SYLLABLE JJID;Lo;0;L;;;;;N;;;;;
+CC14;HANGUL SYLLABLE JJIL;Lo;0;L;;;;;N;;;;;
+CC15;HANGUL SYLLABLE JJILG;Lo;0;L;;;;;N;;;;;
+CC16;HANGUL SYLLABLE JJILM;Lo;0;L;;;;;N;;;;;
+CC17;HANGUL SYLLABLE JJILB;Lo;0;L;;;;;N;;;;;
+CC18;HANGUL SYLLABLE JJILS;Lo;0;L;;;;;N;;;;;
+CC19;HANGUL SYLLABLE JJILT;Lo;0;L;;;;;N;;;;;
+CC1A;HANGUL SYLLABLE JJILP;Lo;0;L;;;;;N;;;;;
+CC1B;HANGUL SYLLABLE JJILH;Lo;0;L;;;;;N;;;;;
+CC1C;HANGUL SYLLABLE JJIM;Lo;0;L;;;;;N;;;;;
+CC1D;HANGUL SYLLABLE JJIB;Lo;0;L;;;;;N;;;;;
+CC1E;HANGUL SYLLABLE JJIBS;Lo;0;L;;;;;N;;;;;
+CC1F;HANGUL SYLLABLE JJIS;Lo;0;L;;;;;N;;;;;
+CC20;HANGUL SYLLABLE JJISS;Lo;0;L;;;;;N;;;;;
+CC21;HANGUL SYLLABLE JJING;Lo;0;L;;;;;N;;;;;
+CC22;HANGUL SYLLABLE JJIJ;Lo;0;L;;;;;N;;;;;
+CC23;HANGUL SYLLABLE JJIC;Lo;0;L;;;;;N;;;;;
+CC24;HANGUL SYLLABLE JJIK;Lo;0;L;;;;;N;;;;;
+CC25;HANGUL SYLLABLE JJIT;Lo;0;L;;;;;N;;;;;
+CC26;HANGUL SYLLABLE JJIP;Lo;0;L;;;;;N;;;;;
+CC27;HANGUL SYLLABLE JJIH;Lo;0;L;;;;;N;;;;;
+CC28;HANGUL SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+CC29;HANGUL SYLLABLE CAG;Lo;0;L;;;;;N;;;;;
+CC2A;HANGUL SYLLABLE CAGG;Lo;0;L;;;;;N;;;;;
+CC2B;HANGUL SYLLABLE CAGS;Lo;0;L;;;;;N;;;;;
+CC2C;HANGUL SYLLABLE CAN;Lo;0;L;;;;;N;;;;;
+CC2D;HANGUL SYLLABLE CANI;Lo;0;L;;;;;N;;;;;
+CC2E;HANGUL SYLLABLE CANH;Lo;0;L;;;;;N;;;;;
+CC2F;HANGUL SYLLABLE CAD;Lo;0;L;;;;;N;;;;;
+CC30;HANGUL SYLLABLE CAL;Lo;0;L;;;;;N;;;;;
+CC31;HANGUL SYLLABLE CALG;Lo;0;L;;;;;N;;;;;
+CC32;HANGUL SYLLABLE CALM;Lo;0;L;;;;;N;;;;;
+CC33;HANGUL SYLLABLE CALB;Lo;0;L;;;;;N;;;;;
+CC34;HANGUL SYLLABLE CALS;Lo;0;L;;;;;N;;;;;
+CC35;HANGUL SYLLABLE CALT;Lo;0;L;;;;;N;;;;;
+CC36;HANGUL SYLLABLE CALP;Lo;0;L;;;;;N;;;;;
+CC37;HANGUL SYLLABLE CALH;Lo;0;L;;;;;N;;;;;
+CC38;HANGUL SYLLABLE CAM;Lo;0;L;;;;;N;;;;;
+CC39;HANGUL SYLLABLE CAB;Lo;0;L;;;;;N;;;;;
+CC3A;HANGUL SYLLABLE CABS;Lo;0;L;;;;;N;;;;;
+CC3B;HANGUL SYLLABLE CAS;Lo;0;L;;;;;N;;;;;
+CC3C;HANGUL SYLLABLE CASS;Lo;0;L;;;;;N;;;;;
+CC3D;HANGUL SYLLABLE CANG;Lo;0;L;;;;;N;;;;;
+CC3E;HANGUL SYLLABLE CAJ;Lo;0;L;;;;;N;;;;;
+CC3F;HANGUL SYLLABLE CAC;Lo;0;L;;;;;N;;;;;
+CC40;HANGUL SYLLABLE CAK;Lo;0;L;;;;;N;;;;;
+CC41;HANGUL SYLLABLE CAT;Lo;0;L;;;;;N;;;;;
+CC42;HANGUL SYLLABLE CAP;Lo;0;L;;;;;N;;;;;
+CC43;HANGUL SYLLABLE CAH;Lo;0;L;;;;;N;;;;;
+CC44;HANGUL SYLLABLE CAE;Lo;0;L;;;;;N;;;;;
+CC45;HANGUL SYLLABLE CAEG;Lo;0;L;;;;;N;;;;;
+CC46;HANGUL SYLLABLE CAEGG;Lo;0;L;;;;;N;;;;;
+CC47;HANGUL SYLLABLE CAEGS;Lo;0;L;;;;;N;;;;;
+CC48;HANGUL SYLLABLE CAEN;Lo;0;L;;;;;N;;;;;
+CC49;HANGUL SYLLABLE CAENI;Lo;0;L;;;;;N;;;;;
+CC4A;HANGUL SYLLABLE CAENH;Lo;0;L;;;;;N;;;;;
+CC4B;HANGUL SYLLABLE CAED;Lo;0;L;;;;;N;;;;;
+CC4C;HANGUL SYLLABLE CAEL;Lo;0;L;;;;;N;;;;;
+CC4D;HANGUL SYLLABLE CAELG;Lo;0;L;;;;;N;;;;;
+CC4E;HANGUL SYLLABLE CAELM;Lo;0;L;;;;;N;;;;;
+CC4F;HANGUL SYLLABLE CAELB;Lo;0;L;;;;;N;;;;;
+CC50;HANGUL SYLLABLE CAELS;Lo;0;L;;;;;N;;;;;
+CC51;HANGUL SYLLABLE CAELT;Lo;0;L;;;;;N;;;;;
+CC52;HANGUL SYLLABLE CAELP;Lo;0;L;;;;;N;;;;;
+CC53;HANGUL SYLLABLE CAELH;Lo;0;L;;;;;N;;;;;
+CC54;HANGUL SYLLABLE CAEM;Lo;0;L;;;;;N;;;;;
+CC55;HANGUL SYLLABLE CAEB;Lo;0;L;;;;;N;;;;;
+CC56;HANGUL SYLLABLE CAEBS;Lo;0;L;;;;;N;;;;;
+CC57;HANGUL SYLLABLE CAES;Lo;0;L;;;;;N;;;;;
+CC58;HANGUL SYLLABLE CAESS;Lo;0;L;;;;;N;;;;;
+CC59;HANGUL SYLLABLE CAENG;Lo;0;L;;;;;N;;;;;
+CC5A;HANGUL SYLLABLE CAEJ;Lo;0;L;;;;;N;;;;;
+CC5B;HANGUL SYLLABLE CAEC;Lo;0;L;;;;;N;;;;;
+CC5C;HANGUL SYLLABLE CAEK;Lo;0;L;;;;;N;;;;;
+CC5D;HANGUL SYLLABLE CAET;Lo;0;L;;;;;N;;;;;
+CC5E;HANGUL SYLLABLE CAEP;Lo;0;L;;;;;N;;;;;
+CC5F;HANGUL SYLLABLE CAEH;Lo;0;L;;;;;N;;;;;
+CC60;HANGUL SYLLABLE CYA;Lo;0;L;;;;;N;;;;;
+CC61;HANGUL SYLLABLE CYAG;Lo;0;L;;;;;N;;;;;
+CC62;HANGUL SYLLABLE CYAGG;Lo;0;L;;;;;N;;;;;
+CC63;HANGUL SYLLABLE CYAGS;Lo;0;L;;;;;N;;;;;
+CC64;HANGUL SYLLABLE CYAN;Lo;0;L;;;;;N;;;;;
+CC65;HANGUL SYLLABLE CYANI;Lo;0;L;;;;;N;;;;;
+CC66;HANGUL SYLLABLE CYANH;Lo;0;L;;;;;N;;;;;
+CC67;HANGUL SYLLABLE CYAD;Lo;0;L;;;;;N;;;;;
+CC68;HANGUL SYLLABLE CYAL;Lo;0;L;;;;;N;;;;;
+CC69;HANGUL SYLLABLE CYALG;Lo;0;L;;;;;N;;;;;
+CC6A;HANGUL SYLLABLE CYALM;Lo;0;L;;;;;N;;;;;
+CC6B;HANGUL SYLLABLE CYALB;Lo;0;L;;;;;N;;;;;
+CC6C;HANGUL SYLLABLE CYALS;Lo;0;L;;;;;N;;;;;
+CC6D;HANGUL SYLLABLE CYALT;Lo;0;L;;;;;N;;;;;
+CC6E;HANGUL SYLLABLE CYALP;Lo;0;L;;;;;N;;;;;
+CC6F;HANGUL SYLLABLE CYALH;Lo;0;L;;;;;N;;;;;
+CC70;HANGUL SYLLABLE CYAM;Lo;0;L;;;;;N;;;;;
+CC71;HANGUL SYLLABLE CYAB;Lo;0;L;;;;;N;;;;;
+CC72;HANGUL SYLLABLE CYABS;Lo;0;L;;;;;N;;;;;
+CC73;HANGUL SYLLABLE CYAS;Lo;0;L;;;;;N;;;;;
+CC74;HANGUL SYLLABLE CYASS;Lo;0;L;;;;;N;;;;;
+CC75;HANGUL SYLLABLE CYANG;Lo;0;L;;;;;N;;;;;
+CC76;HANGUL SYLLABLE CYAJ;Lo;0;L;;;;;N;;;;;
+CC77;HANGUL SYLLABLE CYAC;Lo;0;L;;;;;N;;;;;
+CC78;HANGUL SYLLABLE CYAK;Lo;0;L;;;;;N;;;;;
+CC79;HANGUL SYLLABLE CYAT;Lo;0;L;;;;;N;;;;;
+CC7A;HANGUL SYLLABLE CYAP;Lo;0;L;;;;;N;;;;;
+CC7B;HANGUL SYLLABLE CYAH;Lo;0;L;;;;;N;;;;;
+CC7C;HANGUL SYLLABLE CYAE;Lo;0;L;;;;;N;;;;;
+CC7D;HANGUL SYLLABLE CYAEG;Lo;0;L;;;;;N;;;;;
+CC7E;HANGUL SYLLABLE CYAEGG;Lo;0;L;;;;;N;;;;;
+CC7F;HANGUL SYLLABLE CYAEGS;Lo;0;L;;;;;N;;;;;
+CC80;HANGUL SYLLABLE CYAEN;Lo;0;L;;;;;N;;;;;
+CC81;HANGUL SYLLABLE CYAENI;Lo;0;L;;;;;N;;;;;
+CC82;HANGUL SYLLABLE CYAENH;Lo;0;L;;;;;N;;;;;
+CC83;HANGUL SYLLABLE CYAED;Lo;0;L;;;;;N;;;;;
+CC84;HANGUL SYLLABLE CYAEL;Lo;0;L;;;;;N;;;;;
+CC85;HANGUL SYLLABLE CYAELG;Lo;0;L;;;;;N;;;;;
+CC86;HANGUL SYLLABLE CYAELM;Lo;0;L;;;;;N;;;;;
+CC87;HANGUL SYLLABLE CYAELB;Lo;0;L;;;;;N;;;;;
+CC88;HANGUL SYLLABLE CYAELS;Lo;0;L;;;;;N;;;;;
+CC89;HANGUL SYLLABLE CYAELT;Lo;0;L;;;;;N;;;;;
+CC8A;HANGUL SYLLABLE CYAELP;Lo;0;L;;;;;N;;;;;
+CC8B;HANGUL SYLLABLE CYAELH;Lo;0;L;;;;;N;;;;;
+CC8C;HANGUL SYLLABLE CYAEM;Lo;0;L;;;;;N;;;;;
+CC8D;HANGUL SYLLABLE CYAEB;Lo;0;L;;;;;N;;;;;
+CC8E;HANGUL SYLLABLE CYAEBS;Lo;0;L;;;;;N;;;;;
+CC8F;HANGUL SYLLABLE CYAES;Lo;0;L;;;;;N;;;;;
+CC90;HANGUL SYLLABLE CYAESS;Lo;0;L;;;;;N;;;;;
+CC91;HANGUL SYLLABLE CYAENG;Lo;0;L;;;;;N;;;;;
+CC92;HANGUL SYLLABLE CYAEJ;Lo;0;L;;;;;N;;;;;
+CC93;HANGUL SYLLABLE CYAEC;Lo;0;L;;;;;N;;;;;
+CC94;HANGUL SYLLABLE CYAEK;Lo;0;L;;;;;N;;;;;
+CC95;HANGUL SYLLABLE CYAET;Lo;0;L;;;;;N;;;;;
+CC96;HANGUL SYLLABLE CYAEP;Lo;0;L;;;;;N;;;;;
+CC97;HANGUL SYLLABLE CYAEH;Lo;0;L;;;;;N;;;;;
+CC98;HANGUL SYLLABLE CEO;Lo;0;L;;;;;N;;;;;
+CC99;HANGUL SYLLABLE CEOG;Lo;0;L;;;;;N;;;;;
+CC9A;HANGUL SYLLABLE CEOGG;Lo;0;L;;;;;N;;;;;
+CC9B;HANGUL SYLLABLE CEOGS;Lo;0;L;;;;;N;;;;;
+CC9C;HANGUL SYLLABLE CEON;Lo;0;L;;;;;N;;;;;
+CC9D;HANGUL SYLLABLE CEONI;Lo;0;L;;;;;N;;;;;
+CC9E;HANGUL SYLLABLE CEONH;Lo;0;L;;;;;N;;;;;
+CC9F;HANGUL SYLLABLE CEOD;Lo;0;L;;;;;N;;;;;
+CCA0;HANGUL SYLLABLE CEOL;Lo;0;L;;;;;N;;;;;
+CCA1;HANGUL SYLLABLE CEOLG;Lo;0;L;;;;;N;;;;;
+CCA2;HANGUL SYLLABLE CEOLM;Lo;0;L;;;;;N;;;;;
+CCA3;HANGUL SYLLABLE CEOLB;Lo;0;L;;;;;N;;;;;
+CCA4;HANGUL SYLLABLE CEOLS;Lo;0;L;;;;;N;;;;;
+CCA5;HANGUL SYLLABLE CEOLT;Lo;0;L;;;;;N;;;;;
+CCA6;HANGUL SYLLABLE CEOLP;Lo;0;L;;;;;N;;;;;
+CCA7;HANGUL SYLLABLE CEOLH;Lo;0;L;;;;;N;;;;;
+CCA8;HANGUL SYLLABLE CEOM;Lo;0;L;;;;;N;;;;;
+CCA9;HANGUL SYLLABLE CEOB;Lo;0;L;;;;;N;;;;;
+CCAA;HANGUL SYLLABLE CEOBS;Lo;0;L;;;;;N;;;;;
+CCAB;HANGUL SYLLABLE CEOS;Lo;0;L;;;;;N;;;;;
+CCAC;HANGUL SYLLABLE CEOSS;Lo;0;L;;;;;N;;;;;
+CCAD;HANGUL SYLLABLE CEONG;Lo;0;L;;;;;N;;;;;
+CCAE;HANGUL SYLLABLE CEOJ;Lo;0;L;;;;;N;;;;;
+CCAF;HANGUL SYLLABLE CEOC;Lo;0;L;;;;;N;;;;;
+CCB0;HANGUL SYLLABLE CEOK;Lo;0;L;;;;;N;;;;;
+CCB1;HANGUL SYLLABLE CEOT;Lo;0;L;;;;;N;;;;;
+CCB2;HANGUL SYLLABLE CEOP;Lo;0;L;;;;;N;;;;;
+CCB3;HANGUL SYLLABLE CEOH;Lo;0;L;;;;;N;;;;;
+CCB4;HANGUL SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+CCB5;HANGUL SYLLABLE CEG;Lo;0;L;;;;;N;;;;;
+CCB6;HANGUL SYLLABLE CEGG;Lo;0;L;;;;;N;;;;;
+CCB7;HANGUL SYLLABLE CEGS;Lo;0;L;;;;;N;;;;;
+CCB8;HANGUL SYLLABLE CEN;Lo;0;L;;;;;N;;;;;
+CCB9;HANGUL SYLLABLE CENI;Lo;0;L;;;;;N;;;;;
+CCBA;HANGUL SYLLABLE CENH;Lo;0;L;;;;;N;;;;;
+CCBB;HANGUL SYLLABLE CED;Lo;0;L;;;;;N;;;;;
+CCBC;HANGUL SYLLABLE CEL;Lo;0;L;;;;;N;;;;;
+CCBD;HANGUL SYLLABLE CELG;Lo;0;L;;;;;N;;;;;
+CCBE;HANGUL SYLLABLE CELM;Lo;0;L;;;;;N;;;;;
+CCBF;HANGUL SYLLABLE CELB;Lo;0;L;;;;;N;;;;;
+CCC0;HANGUL SYLLABLE CELS;Lo;0;L;;;;;N;;;;;
+CCC1;HANGUL SYLLABLE CELT;Lo;0;L;;;;;N;;;;;
+CCC2;HANGUL SYLLABLE CELP;Lo;0;L;;;;;N;;;;;
+CCC3;HANGUL SYLLABLE CELH;Lo;0;L;;;;;N;;;;;
+CCC4;HANGUL SYLLABLE CEM;Lo;0;L;;;;;N;;;;;
+CCC5;HANGUL SYLLABLE CEB;Lo;0;L;;;;;N;;;;;
+CCC6;HANGUL SYLLABLE CEBS;Lo;0;L;;;;;N;;;;;
+CCC7;HANGUL SYLLABLE CES;Lo;0;L;;;;;N;;;;;
+CCC8;HANGUL SYLLABLE CESS;Lo;0;L;;;;;N;;;;;
+CCC9;HANGUL SYLLABLE CENG;Lo;0;L;;;;;N;;;;;
+CCCA;HANGUL SYLLABLE CEJ;Lo;0;L;;;;;N;;;;;
+CCCB;HANGUL SYLLABLE CEC;Lo;0;L;;;;;N;;;;;
+CCCC;HANGUL SYLLABLE CEK;Lo;0;L;;;;;N;;;;;
+CCCD;HANGUL SYLLABLE CET;Lo;0;L;;;;;N;;;;;
+CCCE;HANGUL SYLLABLE CEP;Lo;0;L;;;;;N;;;;;
+CCCF;HANGUL SYLLABLE CEH;Lo;0;L;;;;;N;;;;;
+CCD0;HANGUL SYLLABLE CYEO;Lo;0;L;;;;;N;;;;;
+CCD1;HANGUL SYLLABLE CYEOG;Lo;0;L;;;;;N;;;;;
+CCD2;HANGUL SYLLABLE CYEOGG;Lo;0;L;;;;;N;;;;;
+CCD3;HANGUL SYLLABLE CYEOGS;Lo;0;L;;;;;N;;;;;
+CCD4;HANGUL SYLLABLE CYEON;Lo;0;L;;;;;N;;;;;
+CCD5;HANGUL SYLLABLE CYEONI;Lo;0;L;;;;;N;;;;;
+CCD6;HANGUL SYLLABLE CYEONH;Lo;0;L;;;;;N;;;;;
+CCD7;HANGUL SYLLABLE CYEOD;Lo;0;L;;;;;N;;;;;
+CCD8;HANGUL SYLLABLE CYEOL;Lo;0;L;;;;;N;;;;;
+CCD9;HANGUL SYLLABLE CYEOLG;Lo;0;L;;;;;N;;;;;
+CCDA;HANGUL SYLLABLE CYEOLM;Lo;0;L;;;;;N;;;;;
+CCDB;HANGUL SYLLABLE CYEOLB;Lo;0;L;;;;;N;;;;;
+CCDC;HANGUL SYLLABLE CYEOLS;Lo;0;L;;;;;N;;;;;
+CCDD;HANGUL SYLLABLE CYEOLT;Lo;0;L;;;;;N;;;;;
+CCDE;HANGUL SYLLABLE CYEOLP;Lo;0;L;;;;;N;;;;;
+CCDF;HANGUL SYLLABLE CYEOLH;Lo;0;L;;;;;N;;;;;
+CCE0;HANGUL SYLLABLE CYEOM;Lo;0;L;;;;;N;;;;;
+CCE1;HANGUL SYLLABLE CYEOB;Lo;0;L;;;;;N;;;;;
+CCE2;HANGUL SYLLABLE CYEOBS;Lo;0;L;;;;;N;;;;;
+CCE3;HANGUL SYLLABLE CYEOS;Lo;0;L;;;;;N;;;;;
+CCE4;HANGUL SYLLABLE CYEOSS;Lo;0;L;;;;;N;;;;;
+CCE5;HANGUL SYLLABLE CYEONG;Lo;0;L;;;;;N;;;;;
+CCE6;HANGUL SYLLABLE CYEOJ;Lo;0;L;;;;;N;;;;;
+CCE7;HANGUL SYLLABLE CYEOC;Lo;0;L;;;;;N;;;;;
+CCE8;HANGUL SYLLABLE CYEOK;Lo;0;L;;;;;N;;;;;
+CCE9;HANGUL SYLLABLE CYEOT;Lo;0;L;;;;;N;;;;;
+CCEA;HANGUL SYLLABLE CYEOP;Lo;0;L;;;;;N;;;;;
+CCEB;HANGUL SYLLABLE CYEOH;Lo;0;L;;;;;N;;;;;
+CCEC;HANGUL SYLLABLE CYE;Lo;0;L;;;;;N;;;;;
+CCED;HANGUL SYLLABLE CYEG;Lo;0;L;;;;;N;;;;;
+CCEE;HANGUL SYLLABLE CYEGG;Lo;0;L;;;;;N;;;;;
+CCEF;HANGUL SYLLABLE CYEGS;Lo;0;L;;;;;N;;;;;
+CCF0;HANGUL SYLLABLE CYEN;Lo;0;L;;;;;N;;;;;
+CCF1;HANGUL SYLLABLE CYENI;Lo;0;L;;;;;N;;;;;
+CCF2;HANGUL SYLLABLE CYENH;Lo;0;L;;;;;N;;;;;
+CCF3;HANGUL SYLLABLE CYED;Lo;0;L;;;;;N;;;;;
+CCF4;HANGUL SYLLABLE CYEL;Lo;0;L;;;;;N;;;;;
+CCF5;HANGUL SYLLABLE CYELG;Lo;0;L;;;;;N;;;;;
+CCF6;HANGUL SYLLABLE CYELM;Lo;0;L;;;;;N;;;;;
+CCF7;HANGUL SYLLABLE CYELB;Lo;0;L;;;;;N;;;;;
+CCF8;HANGUL SYLLABLE CYELS;Lo;0;L;;;;;N;;;;;
+CCF9;HANGUL SYLLABLE CYELT;Lo;0;L;;;;;N;;;;;
+CCFA;HANGUL SYLLABLE CYELP;Lo;0;L;;;;;N;;;;;
+CCFB;HANGUL SYLLABLE CYELH;Lo;0;L;;;;;N;;;;;
+CCFC;HANGUL SYLLABLE CYEM;Lo;0;L;;;;;N;;;;;
+CCFD;HANGUL SYLLABLE CYEB;Lo;0;L;;;;;N;;;;;
+CCFE;HANGUL SYLLABLE CYEBS;Lo;0;L;;;;;N;;;;;
+CCFF;HANGUL SYLLABLE CYES;Lo;0;L;;;;;N;;;;;
+CD00;HANGUL SYLLABLE CYESS;Lo;0;L;;;;;N;;;;;
+CD01;HANGUL SYLLABLE CYENG;Lo;0;L;;;;;N;;;;;
+CD02;HANGUL SYLLABLE CYEJ;Lo;0;L;;;;;N;;;;;
+CD03;HANGUL SYLLABLE CYEC;Lo;0;L;;;;;N;;;;;
+CD04;HANGUL SYLLABLE CYEK;Lo;0;L;;;;;N;;;;;
+CD05;HANGUL SYLLABLE CYET;Lo;0;L;;;;;N;;;;;
+CD06;HANGUL SYLLABLE CYEP;Lo;0;L;;;;;N;;;;;
+CD07;HANGUL SYLLABLE CYEH;Lo;0;L;;;;;N;;;;;
+CD08;HANGUL SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+CD09;HANGUL SYLLABLE COG;Lo;0;L;;;;;N;;;;;
+CD0A;HANGUL SYLLABLE COGG;Lo;0;L;;;;;N;;;;;
+CD0B;HANGUL SYLLABLE COGS;Lo;0;L;;;;;N;;;;;
+CD0C;HANGUL SYLLABLE CON;Lo;0;L;;;;;N;;;;;
+CD0D;HANGUL SYLLABLE CONI;Lo;0;L;;;;;N;;;;;
+CD0E;HANGUL SYLLABLE CONH;Lo;0;L;;;;;N;;;;;
+CD0F;HANGUL SYLLABLE COD;Lo;0;L;;;;;N;;;;;
+CD10;HANGUL SYLLABLE COL;Lo;0;L;;;;;N;;;;;
+CD11;HANGUL SYLLABLE COLG;Lo;0;L;;;;;N;;;;;
+CD12;HANGUL SYLLABLE COLM;Lo;0;L;;;;;N;;;;;
+CD13;HANGUL SYLLABLE COLB;Lo;0;L;;;;;N;;;;;
+CD14;HANGUL SYLLABLE COLS;Lo;0;L;;;;;N;;;;;
+CD15;HANGUL SYLLABLE COLT;Lo;0;L;;;;;N;;;;;
+CD16;HANGUL SYLLABLE COLP;Lo;0;L;;;;;N;;;;;
+CD17;HANGUL SYLLABLE COLH;Lo;0;L;;;;;N;;;;;
+CD18;HANGUL SYLLABLE COM;Lo;0;L;;;;;N;;;;;
+CD19;HANGUL SYLLABLE COB;Lo;0;L;;;;;N;;;;;
+CD1A;HANGUL SYLLABLE COBS;Lo;0;L;;;;;N;;;;;
+CD1B;HANGUL SYLLABLE COS;Lo;0;L;;;;;N;;;;;
+CD1C;HANGUL SYLLABLE COSS;Lo;0;L;;;;;N;;;;;
+CD1D;HANGUL SYLLABLE CONG;Lo;0;L;;;;;N;;;;;
+CD1E;HANGUL SYLLABLE COJ;Lo;0;L;;;;;N;;;;;
+CD1F;HANGUL SYLLABLE COC;Lo;0;L;;;;;N;;;;;
+CD20;HANGUL SYLLABLE COK;Lo;0;L;;;;;N;;;;;
+CD21;HANGUL SYLLABLE COT;Lo;0;L;;;;;N;;;;;
+CD22;HANGUL SYLLABLE COP;Lo;0;L;;;;;N;;;;;
+CD23;HANGUL SYLLABLE COH;Lo;0;L;;;;;N;;;;;
+CD24;HANGUL SYLLABLE CWA;Lo;0;L;;;;;N;;;;;
+CD25;HANGUL SYLLABLE CWAG;Lo;0;L;;;;;N;;;;;
+CD26;HANGUL SYLLABLE CWAGG;Lo;0;L;;;;;N;;;;;
+CD27;HANGUL SYLLABLE CWAGS;Lo;0;L;;;;;N;;;;;
+CD28;HANGUL SYLLABLE CWAN;Lo;0;L;;;;;N;;;;;
+CD29;HANGUL SYLLABLE CWANI;Lo;0;L;;;;;N;;;;;
+CD2A;HANGUL SYLLABLE CWANH;Lo;0;L;;;;;N;;;;;
+CD2B;HANGUL SYLLABLE CWAD;Lo;0;L;;;;;N;;;;;
+CD2C;HANGUL SYLLABLE CWAL;Lo;0;L;;;;;N;;;;;
+CD2D;HANGUL SYLLABLE CWALG;Lo;0;L;;;;;N;;;;;
+CD2E;HANGUL SYLLABLE CWALM;Lo;0;L;;;;;N;;;;;
+CD2F;HANGUL SYLLABLE CWALB;Lo;0;L;;;;;N;;;;;
+CD30;HANGUL SYLLABLE CWALS;Lo;0;L;;;;;N;;;;;
+CD31;HANGUL SYLLABLE CWALT;Lo;0;L;;;;;N;;;;;
+CD32;HANGUL SYLLABLE CWALP;Lo;0;L;;;;;N;;;;;
+CD33;HANGUL SYLLABLE CWALH;Lo;0;L;;;;;N;;;;;
+CD34;HANGUL SYLLABLE CWAM;Lo;0;L;;;;;N;;;;;
+CD35;HANGUL SYLLABLE CWAB;Lo;0;L;;;;;N;;;;;
+CD36;HANGUL SYLLABLE CWABS;Lo;0;L;;;;;N;;;;;
+CD37;HANGUL SYLLABLE CWAS;Lo;0;L;;;;;N;;;;;
+CD38;HANGUL SYLLABLE CWASS;Lo;0;L;;;;;N;;;;;
+CD39;HANGUL SYLLABLE CWANG;Lo;0;L;;;;;N;;;;;
+CD3A;HANGUL SYLLABLE CWAJ;Lo;0;L;;;;;N;;;;;
+CD3B;HANGUL SYLLABLE CWAC;Lo;0;L;;;;;N;;;;;
+CD3C;HANGUL SYLLABLE CWAK;Lo;0;L;;;;;N;;;;;
+CD3D;HANGUL SYLLABLE CWAT;Lo;0;L;;;;;N;;;;;
+CD3E;HANGUL SYLLABLE CWAP;Lo;0;L;;;;;N;;;;;
+CD3F;HANGUL SYLLABLE CWAH;Lo;0;L;;;;;N;;;;;
+CD40;HANGUL SYLLABLE CWAE;Lo;0;L;;;;;N;;;;;
+CD41;HANGUL SYLLABLE CWAEG;Lo;0;L;;;;;N;;;;;
+CD42;HANGUL SYLLABLE CWAEGG;Lo;0;L;;;;;N;;;;;
+CD43;HANGUL SYLLABLE CWAEGS;Lo;0;L;;;;;N;;;;;
+CD44;HANGUL SYLLABLE CWAEN;Lo;0;L;;;;;N;;;;;
+CD45;HANGUL SYLLABLE CWAENI;Lo;0;L;;;;;N;;;;;
+CD46;HANGUL SYLLABLE CWAENH;Lo;0;L;;;;;N;;;;;
+CD47;HANGUL SYLLABLE CWAED;Lo;0;L;;;;;N;;;;;
+CD48;HANGUL SYLLABLE CWAEL;Lo;0;L;;;;;N;;;;;
+CD49;HANGUL SYLLABLE CWAELG;Lo;0;L;;;;;N;;;;;
+CD4A;HANGUL SYLLABLE CWAELM;Lo;0;L;;;;;N;;;;;
+CD4B;HANGUL SYLLABLE CWAELB;Lo;0;L;;;;;N;;;;;
+CD4C;HANGUL SYLLABLE CWAELS;Lo;0;L;;;;;N;;;;;
+CD4D;HANGUL SYLLABLE CWAELT;Lo;0;L;;;;;N;;;;;
+CD4E;HANGUL SYLLABLE CWAELP;Lo;0;L;;;;;N;;;;;
+CD4F;HANGUL SYLLABLE CWAELH;Lo;0;L;;;;;N;;;;;
+CD50;HANGUL SYLLABLE CWAEM;Lo;0;L;;;;;N;;;;;
+CD51;HANGUL SYLLABLE CWAEB;Lo;0;L;;;;;N;;;;;
+CD52;HANGUL SYLLABLE CWAEBS;Lo;0;L;;;;;N;;;;;
+CD53;HANGUL SYLLABLE CWAES;Lo;0;L;;;;;N;;;;;
+CD54;HANGUL SYLLABLE CWAESS;Lo;0;L;;;;;N;;;;;
+CD55;HANGUL SYLLABLE CWAENG;Lo;0;L;;;;;N;;;;;
+CD56;HANGUL SYLLABLE CWAEJ;Lo;0;L;;;;;N;;;;;
+CD57;HANGUL SYLLABLE CWAEC;Lo;0;L;;;;;N;;;;;
+CD58;HANGUL SYLLABLE CWAEK;Lo;0;L;;;;;N;;;;;
+CD59;HANGUL SYLLABLE CWAET;Lo;0;L;;;;;N;;;;;
+CD5A;HANGUL SYLLABLE CWAEP;Lo;0;L;;;;;N;;;;;
+CD5B;HANGUL SYLLABLE CWAEH;Lo;0;L;;;;;N;;;;;
+CD5C;HANGUL SYLLABLE COE;Lo;0;L;;;;;N;;;;;
+CD5D;HANGUL SYLLABLE COEG;Lo;0;L;;;;;N;;;;;
+CD5E;HANGUL SYLLABLE COEGG;Lo;0;L;;;;;N;;;;;
+CD5F;HANGUL SYLLABLE COEGS;Lo;0;L;;;;;N;;;;;
+CD60;HANGUL SYLLABLE COEN;Lo;0;L;;;;;N;;;;;
+CD61;HANGUL SYLLABLE COENI;Lo;0;L;;;;;N;;;;;
+CD62;HANGUL SYLLABLE COENH;Lo;0;L;;;;;N;;;;;
+CD63;HANGUL SYLLABLE COED;Lo;0;L;;;;;N;;;;;
+CD64;HANGUL SYLLABLE COEL;Lo;0;L;;;;;N;;;;;
+CD65;HANGUL SYLLABLE COELG;Lo;0;L;;;;;N;;;;;
+CD66;HANGUL SYLLABLE COELM;Lo;0;L;;;;;N;;;;;
+CD67;HANGUL SYLLABLE COELB;Lo;0;L;;;;;N;;;;;
+CD68;HANGUL SYLLABLE COELS;Lo;0;L;;;;;N;;;;;
+CD69;HANGUL SYLLABLE COELT;Lo;0;L;;;;;N;;;;;
+CD6A;HANGUL SYLLABLE COELP;Lo;0;L;;;;;N;;;;;
+CD6B;HANGUL SYLLABLE COELH;Lo;0;L;;;;;N;;;;;
+CD6C;HANGUL SYLLABLE COEM;Lo;0;L;;;;;N;;;;;
+CD6D;HANGUL SYLLABLE COEB;Lo;0;L;;;;;N;;;;;
+CD6E;HANGUL SYLLABLE COEBS;Lo;0;L;;;;;N;;;;;
+CD6F;HANGUL SYLLABLE COES;Lo;0;L;;;;;N;;;;;
+CD70;HANGUL SYLLABLE COESS;Lo;0;L;;;;;N;;;;;
+CD71;HANGUL SYLLABLE COENG;Lo;0;L;;;;;N;;;;;
+CD72;HANGUL SYLLABLE COEJ;Lo;0;L;;;;;N;;;;;
+CD73;HANGUL SYLLABLE COEC;Lo;0;L;;;;;N;;;;;
+CD74;HANGUL SYLLABLE COEK;Lo;0;L;;;;;N;;;;;
+CD75;HANGUL SYLLABLE COET;Lo;0;L;;;;;N;;;;;
+CD76;HANGUL SYLLABLE COEP;Lo;0;L;;;;;N;;;;;
+CD77;HANGUL SYLLABLE COEH;Lo;0;L;;;;;N;;;;;
+CD78;HANGUL SYLLABLE CYO;Lo;0;L;;;;;N;;;;;
+CD79;HANGUL SYLLABLE CYOG;Lo;0;L;;;;;N;;;;;
+CD7A;HANGUL SYLLABLE CYOGG;Lo;0;L;;;;;N;;;;;
+CD7B;HANGUL SYLLABLE CYOGS;Lo;0;L;;;;;N;;;;;
+CD7C;HANGUL SYLLABLE CYON;Lo;0;L;;;;;N;;;;;
+CD7D;HANGUL SYLLABLE CYONI;Lo;0;L;;;;;N;;;;;
+CD7E;HANGUL SYLLABLE CYONH;Lo;0;L;;;;;N;;;;;
+CD7F;HANGUL SYLLABLE CYOD;Lo;0;L;;;;;N;;;;;
+CD80;HANGUL SYLLABLE CYOL;Lo;0;L;;;;;N;;;;;
+CD81;HANGUL SYLLABLE CYOLG;Lo;0;L;;;;;N;;;;;
+CD82;HANGUL SYLLABLE CYOLM;Lo;0;L;;;;;N;;;;;
+CD83;HANGUL SYLLABLE CYOLB;Lo;0;L;;;;;N;;;;;
+CD84;HANGUL SYLLABLE CYOLS;Lo;0;L;;;;;N;;;;;
+CD85;HANGUL SYLLABLE CYOLT;Lo;0;L;;;;;N;;;;;
+CD86;HANGUL SYLLABLE CYOLP;Lo;0;L;;;;;N;;;;;
+CD87;HANGUL SYLLABLE CYOLH;Lo;0;L;;;;;N;;;;;
+CD88;HANGUL SYLLABLE CYOM;Lo;0;L;;;;;N;;;;;
+CD89;HANGUL SYLLABLE CYOB;Lo;0;L;;;;;N;;;;;
+CD8A;HANGUL SYLLABLE CYOBS;Lo;0;L;;;;;N;;;;;
+CD8B;HANGUL SYLLABLE CYOS;Lo;0;L;;;;;N;;;;;
+CD8C;HANGUL SYLLABLE CYOSS;Lo;0;L;;;;;N;;;;;
+CD8D;HANGUL SYLLABLE CYONG;Lo;0;L;;;;;N;;;;;
+CD8E;HANGUL SYLLABLE CYOJ;Lo;0;L;;;;;N;;;;;
+CD8F;HANGUL SYLLABLE CYOC;Lo;0;L;;;;;N;;;;;
+CD90;HANGUL SYLLABLE CYOK;Lo;0;L;;;;;N;;;;;
+CD91;HANGUL SYLLABLE CYOT;Lo;0;L;;;;;N;;;;;
+CD92;HANGUL SYLLABLE CYOP;Lo;0;L;;;;;N;;;;;
+CD93;HANGUL SYLLABLE CYOH;Lo;0;L;;;;;N;;;;;
+CD94;HANGUL SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+CD95;HANGUL SYLLABLE CUG;Lo;0;L;;;;;N;;;;;
+CD96;HANGUL SYLLABLE CUGG;Lo;0;L;;;;;N;;;;;
+CD97;HANGUL SYLLABLE CUGS;Lo;0;L;;;;;N;;;;;
+CD98;HANGUL SYLLABLE CUN;Lo;0;L;;;;;N;;;;;
+CD99;HANGUL SYLLABLE CUNI;Lo;0;L;;;;;N;;;;;
+CD9A;HANGUL SYLLABLE CUNH;Lo;0;L;;;;;N;;;;;
+CD9B;HANGUL SYLLABLE CUD;Lo;0;L;;;;;N;;;;;
+CD9C;HANGUL SYLLABLE CUL;Lo;0;L;;;;;N;;;;;
+CD9D;HANGUL SYLLABLE CULG;Lo;0;L;;;;;N;;;;;
+CD9E;HANGUL SYLLABLE CULM;Lo;0;L;;;;;N;;;;;
+CD9F;HANGUL SYLLABLE CULB;Lo;0;L;;;;;N;;;;;
+CDA0;HANGUL SYLLABLE CULS;Lo;0;L;;;;;N;;;;;
+CDA1;HANGUL SYLLABLE CULT;Lo;0;L;;;;;N;;;;;
+CDA2;HANGUL SYLLABLE CULP;Lo;0;L;;;;;N;;;;;
+CDA3;HANGUL SYLLABLE CULH;Lo;0;L;;;;;N;;;;;
+CDA4;HANGUL SYLLABLE CUM;Lo;0;L;;;;;N;;;;;
+CDA5;HANGUL SYLLABLE CUB;Lo;0;L;;;;;N;;;;;
+CDA6;HANGUL SYLLABLE CUBS;Lo;0;L;;;;;N;;;;;
+CDA7;HANGUL SYLLABLE CUS;Lo;0;L;;;;;N;;;;;
+CDA8;HANGUL SYLLABLE CUSS;Lo;0;L;;;;;N;;;;;
+CDA9;HANGUL SYLLABLE CUNG;Lo;0;L;;;;;N;;;;;
+CDAA;HANGUL SYLLABLE CUJ;Lo;0;L;;;;;N;;;;;
+CDAB;HANGUL SYLLABLE CUC;Lo;0;L;;;;;N;;;;;
+CDAC;HANGUL SYLLABLE CUK;Lo;0;L;;;;;N;;;;;
+CDAD;HANGUL SYLLABLE CUT;Lo;0;L;;;;;N;;;;;
+CDAE;HANGUL SYLLABLE CUP;Lo;0;L;;;;;N;;;;;
+CDAF;HANGUL SYLLABLE CUH;Lo;0;L;;;;;N;;;;;
+CDB0;HANGUL SYLLABLE CWEO;Lo;0;L;;;;;N;;;;;
+CDB1;HANGUL SYLLABLE CWEOG;Lo;0;L;;;;;N;;;;;
+CDB2;HANGUL SYLLABLE CWEOGG;Lo;0;L;;;;;N;;;;;
+CDB3;HANGUL SYLLABLE CWEOGS;Lo;0;L;;;;;N;;;;;
+CDB4;HANGUL SYLLABLE CWEON;Lo;0;L;;;;;N;;;;;
+CDB5;HANGUL SYLLABLE CWEONI;Lo;0;L;;;;;N;;;;;
+CDB6;HANGUL SYLLABLE CWEONH;Lo;0;L;;;;;N;;;;;
+CDB7;HANGUL SYLLABLE CWEOD;Lo;0;L;;;;;N;;;;;
+CDB8;HANGUL SYLLABLE CWEOL;Lo;0;L;;;;;N;;;;;
+CDB9;HANGUL SYLLABLE CWEOLG;Lo;0;L;;;;;N;;;;;
+CDBA;HANGUL SYLLABLE CWEOLM;Lo;0;L;;;;;N;;;;;
+CDBB;HANGUL SYLLABLE CWEOLB;Lo;0;L;;;;;N;;;;;
+CDBC;HANGUL SYLLABLE CWEOLS;Lo;0;L;;;;;N;;;;;
+CDBD;HANGUL SYLLABLE CWEOLT;Lo;0;L;;;;;N;;;;;
+CDBE;HANGUL SYLLABLE CWEOLP;Lo;0;L;;;;;N;;;;;
+CDBF;HANGUL SYLLABLE CWEOLH;Lo;0;L;;;;;N;;;;;
+CDC0;HANGUL SYLLABLE CWEOM;Lo;0;L;;;;;N;;;;;
+CDC1;HANGUL SYLLABLE CWEOB;Lo;0;L;;;;;N;;;;;
+CDC2;HANGUL SYLLABLE CWEOBS;Lo;0;L;;;;;N;;;;;
+CDC3;HANGUL SYLLABLE CWEOS;Lo;0;L;;;;;N;;;;;
+CDC4;HANGUL SYLLABLE CWEOSS;Lo;0;L;;;;;N;;;;;
+CDC5;HANGUL SYLLABLE CWEONG;Lo;0;L;;;;;N;;;;;
+CDC6;HANGUL SYLLABLE CWEOJ;Lo;0;L;;;;;N;;;;;
+CDC7;HANGUL SYLLABLE CWEOC;Lo;0;L;;;;;N;;;;;
+CDC8;HANGUL SYLLABLE CWEOK;Lo;0;L;;;;;N;;;;;
+CDC9;HANGUL SYLLABLE CWEOT;Lo;0;L;;;;;N;;;;;
+CDCA;HANGUL SYLLABLE CWEOP;Lo;0;L;;;;;N;;;;;
+CDCB;HANGUL SYLLABLE CWEOH;Lo;0;L;;;;;N;;;;;
+CDCC;HANGUL SYLLABLE CWE;Lo;0;L;;;;;N;;;;;
+CDCD;HANGUL SYLLABLE CWEG;Lo;0;L;;;;;N;;;;;
+CDCE;HANGUL SYLLABLE CWEGG;Lo;0;L;;;;;N;;;;;
+CDCF;HANGUL SYLLABLE CWEGS;Lo;0;L;;;;;N;;;;;
+CDD0;HANGUL SYLLABLE CWEN;Lo;0;L;;;;;N;;;;;
+CDD1;HANGUL SYLLABLE CWENI;Lo;0;L;;;;;N;;;;;
+CDD2;HANGUL SYLLABLE CWENH;Lo;0;L;;;;;N;;;;;
+CDD3;HANGUL SYLLABLE CWED;Lo;0;L;;;;;N;;;;;
+CDD4;HANGUL SYLLABLE CWEL;Lo;0;L;;;;;N;;;;;
+CDD5;HANGUL SYLLABLE CWELG;Lo;0;L;;;;;N;;;;;
+CDD6;HANGUL SYLLABLE CWELM;Lo;0;L;;;;;N;;;;;
+CDD7;HANGUL SYLLABLE CWELB;Lo;0;L;;;;;N;;;;;
+CDD8;HANGUL SYLLABLE CWELS;Lo;0;L;;;;;N;;;;;
+CDD9;HANGUL SYLLABLE CWELT;Lo;0;L;;;;;N;;;;;
+CDDA;HANGUL SYLLABLE CWELP;Lo;0;L;;;;;N;;;;;
+CDDB;HANGUL SYLLABLE CWELH;Lo;0;L;;;;;N;;;;;
+CDDC;HANGUL SYLLABLE CWEM;Lo;0;L;;;;;N;;;;;
+CDDD;HANGUL SYLLABLE CWEB;Lo;0;L;;;;;N;;;;;
+CDDE;HANGUL SYLLABLE CWEBS;Lo;0;L;;;;;N;;;;;
+CDDF;HANGUL SYLLABLE CWES;Lo;0;L;;;;;N;;;;;
+CDE0;HANGUL SYLLABLE CWESS;Lo;0;L;;;;;N;;;;;
+CDE1;HANGUL SYLLABLE CWENG;Lo;0;L;;;;;N;;;;;
+CDE2;HANGUL SYLLABLE CWEJ;Lo;0;L;;;;;N;;;;;
+CDE3;HANGUL SYLLABLE CWEC;Lo;0;L;;;;;N;;;;;
+CDE4;HANGUL SYLLABLE CWEK;Lo;0;L;;;;;N;;;;;
+CDE5;HANGUL SYLLABLE CWET;Lo;0;L;;;;;N;;;;;
+CDE6;HANGUL SYLLABLE CWEP;Lo;0;L;;;;;N;;;;;
+CDE7;HANGUL SYLLABLE CWEH;Lo;0;L;;;;;N;;;;;
+CDE8;HANGUL SYLLABLE CWI;Lo;0;L;;;;;N;;;;;
+CDE9;HANGUL SYLLABLE CWIG;Lo;0;L;;;;;N;;;;;
+CDEA;HANGUL SYLLABLE CWIGG;Lo;0;L;;;;;N;;;;;
+CDEB;HANGUL SYLLABLE CWIGS;Lo;0;L;;;;;N;;;;;
+CDEC;HANGUL SYLLABLE CWIN;Lo;0;L;;;;;N;;;;;
+CDED;HANGUL SYLLABLE CWINI;Lo;0;L;;;;;N;;;;;
+CDEE;HANGUL SYLLABLE CWINH;Lo;0;L;;;;;N;;;;;
+CDEF;HANGUL SYLLABLE CWID;Lo;0;L;;;;;N;;;;;
+CDF0;HANGUL SYLLABLE CWIL;Lo;0;L;;;;;N;;;;;
+CDF1;HANGUL SYLLABLE CWILG;Lo;0;L;;;;;N;;;;;
+CDF2;HANGUL SYLLABLE CWILM;Lo;0;L;;;;;N;;;;;
+CDF3;HANGUL SYLLABLE CWILB;Lo;0;L;;;;;N;;;;;
+CDF4;HANGUL SYLLABLE CWILS;Lo;0;L;;;;;N;;;;;
+CDF5;HANGUL SYLLABLE CWILT;Lo;0;L;;;;;N;;;;;
+CDF6;HANGUL SYLLABLE CWILP;Lo;0;L;;;;;N;;;;;
+CDF7;HANGUL SYLLABLE CWILH;Lo;0;L;;;;;N;;;;;
+CDF8;HANGUL SYLLABLE CWIM;Lo;0;L;;;;;N;;;;;
+CDF9;HANGUL SYLLABLE CWIB;Lo;0;L;;;;;N;;;;;
+CDFA;HANGUL SYLLABLE CWIBS;Lo;0;L;;;;;N;;;;;
+CDFB;HANGUL SYLLABLE CWIS;Lo;0;L;;;;;N;;;;;
+CDFC;HANGUL SYLLABLE CWISS;Lo;0;L;;;;;N;;;;;
+CDFD;HANGUL SYLLABLE CWING;Lo;0;L;;;;;N;;;;;
+CDFE;HANGUL SYLLABLE CWIJ;Lo;0;L;;;;;N;;;;;
+CDFF;HANGUL SYLLABLE CWIC;Lo;0;L;;;;;N;;;;;
+CE00;HANGUL SYLLABLE CWIK;Lo;0;L;;;;;N;;;;;
+CE01;HANGUL SYLLABLE CWIT;Lo;0;L;;;;;N;;;;;
+CE02;HANGUL SYLLABLE CWIP;Lo;0;L;;;;;N;;;;;
+CE03;HANGUL SYLLABLE CWIH;Lo;0;L;;;;;N;;;;;
+CE04;HANGUL SYLLABLE CYU;Lo;0;L;;;;;N;;;;;
+CE05;HANGUL SYLLABLE CYUG;Lo;0;L;;;;;N;;;;;
+CE06;HANGUL SYLLABLE CYUGG;Lo;0;L;;;;;N;;;;;
+CE07;HANGUL SYLLABLE CYUGS;Lo;0;L;;;;;N;;;;;
+CE08;HANGUL SYLLABLE CYUN;Lo;0;L;;;;;N;;;;;
+CE09;HANGUL SYLLABLE CYUNI;Lo;0;L;;;;;N;;;;;
+CE0A;HANGUL SYLLABLE CYUNH;Lo;0;L;;;;;N;;;;;
+CE0B;HANGUL SYLLABLE CYUD;Lo;0;L;;;;;N;;;;;
+CE0C;HANGUL SYLLABLE CYUL;Lo;0;L;;;;;N;;;;;
+CE0D;HANGUL SYLLABLE CYULG;Lo;0;L;;;;;N;;;;;
+CE0E;HANGUL SYLLABLE CYULM;Lo;0;L;;;;;N;;;;;
+CE0F;HANGUL SYLLABLE CYULB;Lo;0;L;;;;;N;;;;;
+CE10;HANGUL SYLLABLE CYULS;Lo;0;L;;;;;N;;;;;
+CE11;HANGUL SYLLABLE CYULT;Lo;0;L;;;;;N;;;;;
+CE12;HANGUL SYLLABLE CYULP;Lo;0;L;;;;;N;;;;;
+CE13;HANGUL SYLLABLE CYULH;Lo;0;L;;;;;N;;;;;
+CE14;HANGUL SYLLABLE CYUM;Lo;0;L;;;;;N;;;;;
+CE15;HANGUL SYLLABLE CYUB;Lo;0;L;;;;;N;;;;;
+CE16;HANGUL SYLLABLE CYUBS;Lo;0;L;;;;;N;;;;;
+CE17;HANGUL SYLLABLE CYUS;Lo;0;L;;;;;N;;;;;
+CE18;HANGUL SYLLABLE CYUSS;Lo;0;L;;;;;N;;;;;
+CE19;HANGUL SYLLABLE CYUNG;Lo;0;L;;;;;N;;;;;
+CE1A;HANGUL SYLLABLE CYUJ;Lo;0;L;;;;;N;;;;;
+CE1B;HANGUL SYLLABLE CYUC;Lo;0;L;;;;;N;;;;;
+CE1C;HANGUL SYLLABLE CYUK;Lo;0;L;;;;;N;;;;;
+CE1D;HANGUL SYLLABLE CYUT;Lo;0;L;;;;;N;;;;;
+CE1E;HANGUL SYLLABLE CYUP;Lo;0;L;;;;;N;;;;;
+CE1F;HANGUL SYLLABLE CYUH;Lo;0;L;;;;;N;;;;;
+CE20;HANGUL SYLLABLE CEU;Lo;0;L;;;;;N;;;;;
+CE21;HANGUL SYLLABLE CEUG;Lo;0;L;;;;;N;;;;;
+CE22;HANGUL SYLLABLE CEUGG;Lo;0;L;;;;;N;;;;;
+CE23;HANGUL SYLLABLE CEUGS;Lo;0;L;;;;;N;;;;;
+CE24;HANGUL SYLLABLE CEUN;Lo;0;L;;;;;N;;;;;
+CE25;HANGUL SYLLABLE CEUNI;Lo;0;L;;;;;N;;;;;
+CE26;HANGUL SYLLABLE CEUNH;Lo;0;L;;;;;N;;;;;
+CE27;HANGUL SYLLABLE CEUD;Lo;0;L;;;;;N;;;;;
+CE28;HANGUL SYLLABLE CEUL;Lo;0;L;;;;;N;;;;;
+CE29;HANGUL SYLLABLE CEULG;Lo;0;L;;;;;N;;;;;
+CE2A;HANGUL SYLLABLE CEULM;Lo;0;L;;;;;N;;;;;
+CE2B;HANGUL SYLLABLE CEULB;Lo;0;L;;;;;N;;;;;
+CE2C;HANGUL SYLLABLE CEULS;Lo;0;L;;;;;N;;;;;
+CE2D;HANGUL SYLLABLE CEULT;Lo;0;L;;;;;N;;;;;
+CE2E;HANGUL SYLLABLE CEULP;Lo;0;L;;;;;N;;;;;
+CE2F;HANGUL SYLLABLE CEULH;Lo;0;L;;;;;N;;;;;
+CE30;HANGUL SYLLABLE CEUM;Lo;0;L;;;;;N;;;;;
+CE31;HANGUL SYLLABLE CEUB;Lo;0;L;;;;;N;;;;;
+CE32;HANGUL SYLLABLE CEUBS;Lo;0;L;;;;;N;;;;;
+CE33;HANGUL SYLLABLE CEUS;Lo;0;L;;;;;N;;;;;
+CE34;HANGUL SYLLABLE CEUSS;Lo;0;L;;;;;N;;;;;
+CE35;HANGUL SYLLABLE CEUNG;Lo;0;L;;;;;N;;;;;
+CE36;HANGUL SYLLABLE CEUJ;Lo;0;L;;;;;N;;;;;
+CE37;HANGUL SYLLABLE CEUC;Lo;0;L;;;;;N;;;;;
+CE38;HANGUL SYLLABLE CEUK;Lo;0;L;;;;;N;;;;;
+CE39;HANGUL SYLLABLE CEUT;Lo;0;L;;;;;N;;;;;
+CE3A;HANGUL SYLLABLE CEUP;Lo;0;L;;;;;N;;;;;
+CE3B;HANGUL SYLLABLE CEUH;Lo;0;L;;;;;N;;;;;
+CE3C;HANGUL SYLLABLE CYI;Lo;0;L;;;;;N;;;;;
+CE3D;HANGUL SYLLABLE CYIG;Lo;0;L;;;;;N;;;;;
+CE3E;HANGUL SYLLABLE CYIGG;Lo;0;L;;;;;N;;;;;
+CE3F;HANGUL SYLLABLE CYIGS;Lo;0;L;;;;;N;;;;;
+CE40;HANGUL SYLLABLE CYIN;Lo;0;L;;;;;N;;;;;
+CE41;HANGUL SYLLABLE CYINI;Lo;0;L;;;;;N;;;;;
+CE42;HANGUL SYLLABLE CYINH;Lo;0;L;;;;;N;;;;;
+CE43;HANGUL SYLLABLE CYID;Lo;0;L;;;;;N;;;;;
+CE44;HANGUL SYLLABLE CYIL;Lo;0;L;;;;;N;;;;;
+CE45;HANGUL SYLLABLE CYILG;Lo;0;L;;;;;N;;;;;
+CE46;HANGUL SYLLABLE CYILM;Lo;0;L;;;;;N;;;;;
+CE47;HANGUL SYLLABLE CYILB;Lo;0;L;;;;;N;;;;;
+CE48;HANGUL SYLLABLE CYILS;Lo;0;L;;;;;N;;;;;
+CE49;HANGUL SYLLABLE CYILT;Lo;0;L;;;;;N;;;;;
+CE4A;HANGUL SYLLABLE CYILP;Lo;0;L;;;;;N;;;;;
+CE4B;HANGUL SYLLABLE CYILH;Lo;0;L;;;;;N;;;;;
+CE4C;HANGUL SYLLABLE CYIM;Lo;0;L;;;;;N;;;;;
+CE4D;HANGUL SYLLABLE CYIB;Lo;0;L;;;;;N;;;;;
+CE4E;HANGUL SYLLABLE CYIBS;Lo;0;L;;;;;N;;;;;
+CE4F;HANGUL SYLLABLE CYIS;Lo;0;L;;;;;N;;;;;
+CE50;HANGUL SYLLABLE CYISS;Lo;0;L;;;;;N;;;;;
+CE51;HANGUL SYLLABLE CYING;Lo;0;L;;;;;N;;;;;
+CE52;HANGUL SYLLABLE CYIJ;Lo;0;L;;;;;N;;;;;
+CE53;HANGUL SYLLABLE CYIC;Lo;0;L;;;;;N;;;;;
+CE54;HANGUL SYLLABLE CYIK;Lo;0;L;;;;;N;;;;;
+CE55;HANGUL SYLLABLE CYIT;Lo;0;L;;;;;N;;;;;
+CE56;HANGUL SYLLABLE CYIP;Lo;0;L;;;;;N;;;;;
+CE57;HANGUL SYLLABLE CYIH;Lo;0;L;;;;;N;;;;;
+CE58;HANGUL SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+CE59;HANGUL SYLLABLE CIG;Lo;0;L;;;;;N;;;;;
+CE5A;HANGUL SYLLABLE CIGG;Lo;0;L;;;;;N;;;;;
+CE5B;HANGUL SYLLABLE CIGS;Lo;0;L;;;;;N;;;;;
+CE5C;HANGUL SYLLABLE CIN;Lo;0;L;;;;;N;;;;;
+CE5D;HANGUL SYLLABLE CINI;Lo;0;L;;;;;N;;;;;
+CE5E;HANGUL SYLLABLE CINH;Lo;0;L;;;;;N;;;;;
+CE5F;HANGUL SYLLABLE CID;Lo;0;L;;;;;N;;;;;
+CE60;HANGUL SYLLABLE CIL;Lo;0;L;;;;;N;;;;;
+CE61;HANGUL SYLLABLE CILG;Lo;0;L;;;;;N;;;;;
+CE62;HANGUL SYLLABLE CILM;Lo;0;L;;;;;N;;;;;
+CE63;HANGUL SYLLABLE CILB;Lo;0;L;;;;;N;;;;;
+CE64;HANGUL SYLLABLE CILS;Lo;0;L;;;;;N;;;;;
+CE65;HANGUL SYLLABLE CILT;Lo;0;L;;;;;N;;;;;
+CE66;HANGUL SYLLABLE CILP;Lo;0;L;;;;;N;;;;;
+CE67;HANGUL SYLLABLE CILH;Lo;0;L;;;;;N;;;;;
+CE68;HANGUL SYLLABLE CIM;Lo;0;L;;;;;N;;;;;
+CE69;HANGUL SYLLABLE CIB;Lo;0;L;;;;;N;;;;;
+CE6A;HANGUL SYLLABLE CIBS;Lo;0;L;;;;;N;;;;;
+CE6B;HANGUL SYLLABLE CIS;Lo;0;L;;;;;N;;;;;
+CE6C;HANGUL SYLLABLE CISS;Lo;0;L;;;;;N;;;;;
+CE6D;HANGUL SYLLABLE CING;Lo;0;L;;;;;N;;;;;
+CE6E;HANGUL SYLLABLE CIJ;Lo;0;L;;;;;N;;;;;
+CE6F;HANGUL SYLLABLE CIC;Lo;0;L;;;;;N;;;;;
+CE70;HANGUL SYLLABLE CIK;Lo;0;L;;;;;N;;;;;
+CE71;HANGUL SYLLABLE CIT;Lo;0;L;;;;;N;;;;;
+CE72;HANGUL SYLLABLE CIP;Lo;0;L;;;;;N;;;;;
+CE73;HANGUL SYLLABLE CIH;Lo;0;L;;;;;N;;;;;
+CE74;HANGUL SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+CE75;HANGUL SYLLABLE KAG;Lo;0;L;;;;;N;;;;;
+CE76;HANGUL SYLLABLE KAGG;Lo;0;L;;;;;N;;;;;
+CE77;HANGUL SYLLABLE KAGS;Lo;0;L;;;;;N;;;;;
+CE78;HANGUL SYLLABLE KAN;Lo;0;L;;;;;N;;;;;
+CE79;HANGUL SYLLABLE KANI;Lo;0;L;;;;;N;;;;;
+CE7A;HANGUL SYLLABLE KANH;Lo;0;L;;;;;N;;;;;
+CE7B;HANGUL SYLLABLE KAD;Lo;0;L;;;;;N;;;;;
+CE7C;HANGUL SYLLABLE KAL;Lo;0;L;;;;;N;;;;;
+CE7D;HANGUL SYLLABLE KALG;Lo;0;L;;;;;N;;;;;
+CE7E;HANGUL SYLLABLE KALM;Lo;0;L;;;;;N;;;;;
+CE7F;HANGUL SYLLABLE KALB;Lo;0;L;;;;;N;;;;;
+CE80;HANGUL SYLLABLE KALS;Lo;0;L;;;;;N;;;;;
+CE81;HANGUL SYLLABLE KALT;Lo;0;L;;;;;N;;;;;
+CE82;HANGUL SYLLABLE KALP;Lo;0;L;;;;;N;;;;;
+CE83;HANGUL SYLLABLE KALH;Lo;0;L;;;;;N;;;;;
+CE84;HANGUL SYLLABLE KAM;Lo;0;L;;;;;N;;;;;
+CE85;HANGUL SYLLABLE KAB;Lo;0;L;;;;;N;;;;;
+CE86;HANGUL SYLLABLE KABS;Lo;0;L;;;;;N;;;;;
+CE87;HANGUL SYLLABLE KAS;Lo;0;L;;;;;N;;;;;
+CE88;HANGUL SYLLABLE KASS;Lo;0;L;;;;;N;;;;;
+CE89;HANGUL SYLLABLE KANG;Lo;0;L;;;;;N;;;;;
+CE8A;HANGUL SYLLABLE KAJ;Lo;0;L;;;;;N;;;;;
+CE8B;HANGUL SYLLABLE KAC;Lo;0;L;;;;;N;;;;;
+CE8C;HANGUL SYLLABLE KAK;Lo;0;L;;;;;N;;;;;
+CE8D;HANGUL SYLLABLE KAT;Lo;0;L;;;;;N;;;;;
+CE8E;HANGUL SYLLABLE KAP;Lo;0;L;;;;;N;;;;;
+CE8F;HANGUL SYLLABLE KAH;Lo;0;L;;;;;N;;;;;
+CE90;HANGUL SYLLABLE KAE;Lo;0;L;;;;;N;;;;;
+CE91;HANGUL SYLLABLE KAEG;Lo;0;L;;;;;N;;;;;
+CE92;HANGUL SYLLABLE KAEGG;Lo;0;L;;;;;N;;;;;
+CE93;HANGUL SYLLABLE KAEGS;Lo;0;L;;;;;N;;;;;
+CE94;HANGUL SYLLABLE KAEN;Lo;0;L;;;;;N;;;;;
+CE95;HANGUL SYLLABLE KAENI;Lo;0;L;;;;;N;;;;;
+CE96;HANGUL SYLLABLE KAENH;Lo;0;L;;;;;N;;;;;
+CE97;HANGUL SYLLABLE KAED;Lo;0;L;;;;;N;;;;;
+CE98;HANGUL SYLLABLE KAEL;Lo;0;L;;;;;N;;;;;
+CE99;HANGUL SYLLABLE KAELG;Lo;0;L;;;;;N;;;;;
+CE9A;HANGUL SYLLABLE KAELM;Lo;0;L;;;;;N;;;;;
+CE9B;HANGUL SYLLABLE KAELB;Lo;0;L;;;;;N;;;;;
+CE9C;HANGUL SYLLABLE KAELS;Lo;0;L;;;;;N;;;;;
+CE9D;HANGUL SYLLABLE KAELT;Lo;0;L;;;;;N;;;;;
+CE9E;HANGUL SYLLABLE KAELP;Lo;0;L;;;;;N;;;;;
+CE9F;HANGUL SYLLABLE KAELH;Lo;0;L;;;;;N;;;;;
+CEA0;HANGUL SYLLABLE KAEM;Lo;0;L;;;;;N;;;;;
+CEA1;HANGUL SYLLABLE KAEB;Lo;0;L;;;;;N;;;;;
+CEA2;HANGUL SYLLABLE KAEBS;Lo;0;L;;;;;N;;;;;
+CEA3;HANGUL SYLLABLE KAES;Lo;0;L;;;;;N;;;;;
+CEA4;HANGUL SYLLABLE KAESS;Lo;0;L;;;;;N;;;;;
+CEA5;HANGUL SYLLABLE KAENG;Lo;0;L;;;;;N;;;;;
+CEA6;HANGUL SYLLABLE KAEJ;Lo;0;L;;;;;N;;;;;
+CEA7;HANGUL SYLLABLE KAEC;Lo;0;L;;;;;N;;;;;
+CEA8;HANGUL SYLLABLE KAEK;Lo;0;L;;;;;N;;;;;
+CEA9;HANGUL SYLLABLE KAET;Lo;0;L;;;;;N;;;;;
+CEAA;HANGUL SYLLABLE KAEP;Lo;0;L;;;;;N;;;;;
+CEAB;HANGUL SYLLABLE KAEH;Lo;0;L;;;;;N;;;;;
+CEAC;HANGUL SYLLABLE KYA;Lo;0;L;;;;;N;;;;;
+CEAD;HANGUL SYLLABLE KYAG;Lo;0;L;;;;;N;;;;;
+CEAE;HANGUL SYLLABLE KYAGG;Lo;0;L;;;;;N;;;;;
+CEAF;HANGUL SYLLABLE KYAGS;Lo;0;L;;;;;N;;;;;
+CEB0;HANGUL SYLLABLE KYAN;Lo;0;L;;;;;N;;;;;
+CEB1;HANGUL SYLLABLE KYANI;Lo;0;L;;;;;N;;;;;
+CEB2;HANGUL SYLLABLE KYANH;Lo;0;L;;;;;N;;;;;
+CEB3;HANGUL SYLLABLE KYAD;Lo;0;L;;;;;N;;;;;
+CEB4;HANGUL SYLLABLE KYAL;Lo;0;L;;;;;N;;;;;
+CEB5;HANGUL SYLLABLE KYALG;Lo;0;L;;;;;N;;;;;
+CEB6;HANGUL SYLLABLE KYALM;Lo;0;L;;;;;N;;;;;
+CEB7;HANGUL SYLLABLE KYALB;Lo;0;L;;;;;N;;;;;
+CEB8;HANGUL SYLLABLE KYALS;Lo;0;L;;;;;N;;;;;
+CEB9;HANGUL SYLLABLE KYALT;Lo;0;L;;;;;N;;;;;
+CEBA;HANGUL SYLLABLE KYALP;Lo;0;L;;;;;N;;;;;
+CEBB;HANGUL SYLLABLE KYALH;Lo;0;L;;;;;N;;;;;
+CEBC;HANGUL SYLLABLE KYAM;Lo;0;L;;;;;N;;;;;
+CEBD;HANGUL SYLLABLE KYAB;Lo;0;L;;;;;N;;;;;
+CEBE;HANGUL SYLLABLE KYABS;Lo;0;L;;;;;N;;;;;
+CEBF;HANGUL SYLLABLE KYAS;Lo;0;L;;;;;N;;;;;
+CEC0;HANGUL SYLLABLE KYASS;Lo;0;L;;;;;N;;;;;
+CEC1;HANGUL SYLLABLE KYANG;Lo;0;L;;;;;N;;;;;
+CEC2;HANGUL SYLLABLE KYAJ;Lo;0;L;;;;;N;;;;;
+CEC3;HANGUL SYLLABLE KYAC;Lo;0;L;;;;;N;;;;;
+CEC4;HANGUL SYLLABLE KYAK;Lo;0;L;;;;;N;;;;;
+CEC5;HANGUL SYLLABLE KYAT;Lo;0;L;;;;;N;;;;;
+CEC6;HANGUL SYLLABLE KYAP;Lo;0;L;;;;;N;;;;;
+CEC7;HANGUL SYLLABLE KYAH;Lo;0;L;;;;;N;;;;;
+CEC8;HANGUL SYLLABLE KYAE;Lo;0;L;;;;;N;;;;;
+CEC9;HANGUL SYLLABLE KYAEG;Lo;0;L;;;;;N;;;;;
+CECA;HANGUL SYLLABLE KYAEGG;Lo;0;L;;;;;N;;;;;
+CECB;HANGUL SYLLABLE KYAEGS;Lo;0;L;;;;;N;;;;;
+CECC;HANGUL SYLLABLE KYAEN;Lo;0;L;;;;;N;;;;;
+CECD;HANGUL SYLLABLE KYAENI;Lo;0;L;;;;;N;;;;;
+CECE;HANGUL SYLLABLE KYAENH;Lo;0;L;;;;;N;;;;;
+CECF;HANGUL SYLLABLE KYAED;Lo;0;L;;;;;N;;;;;
+CED0;HANGUL SYLLABLE KYAEL;Lo;0;L;;;;;N;;;;;
+CED1;HANGUL SYLLABLE KYAELG;Lo;0;L;;;;;N;;;;;
+CED2;HANGUL SYLLABLE KYAELM;Lo;0;L;;;;;N;;;;;
+CED3;HANGUL SYLLABLE KYAELB;Lo;0;L;;;;;N;;;;;
+CED4;HANGUL SYLLABLE KYAELS;Lo;0;L;;;;;N;;;;;
+CED5;HANGUL SYLLABLE KYAELT;Lo;0;L;;;;;N;;;;;
+CED6;HANGUL SYLLABLE KYAELP;Lo;0;L;;;;;N;;;;;
+CED7;HANGUL SYLLABLE KYAELH;Lo;0;L;;;;;N;;;;;
+CED8;HANGUL SYLLABLE KYAEM;Lo;0;L;;;;;N;;;;;
+CED9;HANGUL SYLLABLE KYAEB;Lo;0;L;;;;;N;;;;;
+CEDA;HANGUL SYLLABLE KYAEBS;Lo;0;L;;;;;N;;;;;
+CEDB;HANGUL SYLLABLE KYAES;Lo;0;L;;;;;N;;;;;
+CEDC;HANGUL SYLLABLE KYAESS;Lo;0;L;;;;;N;;;;;
+CEDD;HANGUL SYLLABLE KYAENG;Lo;0;L;;;;;N;;;;;
+CEDE;HANGUL SYLLABLE KYAEJ;Lo;0;L;;;;;N;;;;;
+CEDF;HANGUL SYLLABLE KYAEC;Lo;0;L;;;;;N;;;;;
+CEE0;HANGUL SYLLABLE KYAEK;Lo;0;L;;;;;N;;;;;
+CEE1;HANGUL SYLLABLE KYAET;Lo;0;L;;;;;N;;;;;
+CEE2;HANGUL SYLLABLE KYAEP;Lo;0;L;;;;;N;;;;;
+CEE3;HANGUL SYLLABLE KYAEH;Lo;0;L;;;;;N;;;;;
+CEE4;HANGUL SYLLABLE KEO;Lo;0;L;;;;;N;;;;;
+CEE5;HANGUL SYLLABLE KEOG;Lo;0;L;;;;;N;;;;;
+CEE6;HANGUL SYLLABLE KEOGG;Lo;0;L;;;;;N;;;;;
+CEE7;HANGUL SYLLABLE KEOGS;Lo;0;L;;;;;N;;;;;
+CEE8;HANGUL SYLLABLE KEON;Lo;0;L;;;;;N;;;;;
+CEE9;HANGUL SYLLABLE KEONI;Lo;0;L;;;;;N;;;;;
+CEEA;HANGUL SYLLABLE KEONH;Lo;0;L;;;;;N;;;;;
+CEEB;HANGUL SYLLABLE KEOD;Lo;0;L;;;;;N;;;;;
+CEEC;HANGUL SYLLABLE KEOL;Lo;0;L;;;;;N;;;;;
+CEED;HANGUL SYLLABLE KEOLG;Lo;0;L;;;;;N;;;;;
+CEEE;HANGUL SYLLABLE KEOLM;Lo;0;L;;;;;N;;;;;
+CEEF;HANGUL SYLLABLE KEOLB;Lo;0;L;;;;;N;;;;;
+CEF0;HANGUL SYLLABLE KEOLS;Lo;0;L;;;;;N;;;;;
+CEF1;HANGUL SYLLABLE KEOLT;Lo;0;L;;;;;N;;;;;
+CEF2;HANGUL SYLLABLE KEOLP;Lo;0;L;;;;;N;;;;;
+CEF3;HANGUL SYLLABLE KEOLH;Lo;0;L;;;;;N;;;;;
+CEF4;HANGUL SYLLABLE KEOM;Lo;0;L;;;;;N;;;;;
+CEF5;HANGUL SYLLABLE KEOB;Lo;0;L;;;;;N;;;;;
+CEF6;HANGUL SYLLABLE KEOBS;Lo;0;L;;;;;N;;;;;
+CEF7;HANGUL SYLLABLE KEOS;Lo;0;L;;;;;N;;;;;
+CEF8;HANGUL SYLLABLE KEOSS;Lo;0;L;;;;;N;;;;;
+CEF9;HANGUL SYLLABLE KEONG;Lo;0;L;;;;;N;;;;;
+CEFA;HANGUL SYLLABLE KEOJ;Lo;0;L;;;;;N;;;;;
+CEFB;HANGUL SYLLABLE KEOC;Lo;0;L;;;;;N;;;;;
+CEFC;HANGUL SYLLABLE KEOK;Lo;0;L;;;;;N;;;;;
+CEFD;HANGUL SYLLABLE KEOT;Lo;0;L;;;;;N;;;;;
+CEFE;HANGUL SYLLABLE KEOP;Lo;0;L;;;;;N;;;;;
+CEFF;HANGUL SYLLABLE KEOH;Lo;0;L;;;;;N;;;;;
+CF00;HANGUL SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+CF01;HANGUL SYLLABLE KEG;Lo;0;L;;;;;N;;;;;
+CF02;HANGUL SYLLABLE KEGG;Lo;0;L;;;;;N;;;;;
+CF03;HANGUL SYLLABLE KEGS;Lo;0;L;;;;;N;;;;;
+CF04;HANGUL SYLLABLE KEN;Lo;0;L;;;;;N;;;;;
+CF05;HANGUL SYLLABLE KENI;Lo;0;L;;;;;N;;;;;
+CF06;HANGUL SYLLABLE KENH;Lo;0;L;;;;;N;;;;;
+CF07;HANGUL SYLLABLE KED;Lo;0;L;;;;;N;;;;;
+CF08;HANGUL SYLLABLE KEL;Lo;0;L;;;;;N;;;;;
+CF09;HANGUL SYLLABLE KELG;Lo;0;L;;;;;N;;;;;
+CF0A;HANGUL SYLLABLE KELM;Lo;0;L;;;;;N;;;;;
+CF0B;HANGUL SYLLABLE KELB;Lo;0;L;;;;;N;;;;;
+CF0C;HANGUL SYLLABLE KELS;Lo;0;L;;;;;N;;;;;
+CF0D;HANGUL SYLLABLE KELT;Lo;0;L;;;;;N;;;;;
+CF0E;HANGUL SYLLABLE KELP;Lo;0;L;;;;;N;;;;;
+CF0F;HANGUL SYLLABLE KELH;Lo;0;L;;;;;N;;;;;
+CF10;HANGUL SYLLABLE KEM;Lo;0;L;;;;;N;;;;;
+CF11;HANGUL SYLLABLE KEB;Lo;0;L;;;;;N;;;;;
+CF12;HANGUL SYLLABLE KEBS;Lo;0;L;;;;;N;;;;;
+CF13;HANGUL SYLLABLE KES;Lo;0;L;;;;;N;;;;;
+CF14;HANGUL SYLLABLE KESS;Lo;0;L;;;;;N;;;;;
+CF15;HANGUL SYLLABLE KENG;Lo;0;L;;;;;N;;;;;
+CF16;HANGUL SYLLABLE KEJ;Lo;0;L;;;;;N;;;;;
+CF17;HANGUL SYLLABLE KEC;Lo;0;L;;;;;N;;;;;
+CF18;HANGUL SYLLABLE KEK;Lo;0;L;;;;;N;;;;;
+CF19;HANGUL SYLLABLE KET;Lo;0;L;;;;;N;;;;;
+CF1A;HANGUL SYLLABLE KEP;Lo;0;L;;;;;N;;;;;
+CF1B;HANGUL SYLLABLE KEH;Lo;0;L;;;;;N;;;;;
+CF1C;HANGUL SYLLABLE KYEO;Lo;0;L;;;;;N;;;;;
+CF1D;HANGUL SYLLABLE KYEOG;Lo;0;L;;;;;N;;;;;
+CF1E;HANGUL SYLLABLE KYEOGG;Lo;0;L;;;;;N;;;;;
+CF1F;HANGUL SYLLABLE KYEOGS;Lo;0;L;;;;;N;;;;;
+CF20;HANGUL SYLLABLE KYEON;Lo;0;L;;;;;N;;;;;
+CF21;HANGUL SYLLABLE KYEONI;Lo;0;L;;;;;N;;;;;
+CF22;HANGUL SYLLABLE KYEONH;Lo;0;L;;;;;N;;;;;
+CF23;HANGUL SYLLABLE KYEOD;Lo;0;L;;;;;N;;;;;
+CF24;HANGUL SYLLABLE KYEOL;Lo;0;L;;;;;N;;;;;
+CF25;HANGUL SYLLABLE KYEOLG;Lo;0;L;;;;;N;;;;;
+CF26;HANGUL SYLLABLE KYEOLM;Lo;0;L;;;;;N;;;;;
+CF27;HANGUL SYLLABLE KYEOLB;Lo;0;L;;;;;N;;;;;
+CF28;HANGUL SYLLABLE KYEOLS;Lo;0;L;;;;;N;;;;;
+CF29;HANGUL SYLLABLE KYEOLT;Lo;0;L;;;;;N;;;;;
+CF2A;HANGUL SYLLABLE KYEOLP;Lo;0;L;;;;;N;;;;;
+CF2B;HANGUL SYLLABLE KYEOLH;Lo;0;L;;;;;N;;;;;
+CF2C;HANGUL SYLLABLE KYEOM;Lo;0;L;;;;;N;;;;;
+CF2D;HANGUL SYLLABLE KYEOB;Lo;0;L;;;;;N;;;;;
+CF2E;HANGUL SYLLABLE KYEOBS;Lo;0;L;;;;;N;;;;;
+CF2F;HANGUL SYLLABLE KYEOS;Lo;0;L;;;;;N;;;;;
+CF30;HANGUL SYLLABLE KYEOSS;Lo;0;L;;;;;N;;;;;
+CF31;HANGUL SYLLABLE KYEONG;Lo;0;L;;;;;N;;;;;
+CF32;HANGUL SYLLABLE KYEOJ;Lo;0;L;;;;;N;;;;;
+CF33;HANGUL SYLLABLE KYEOC;Lo;0;L;;;;;N;;;;;
+CF34;HANGUL SYLLABLE KYEOK;Lo;0;L;;;;;N;;;;;
+CF35;HANGUL SYLLABLE KYEOT;Lo;0;L;;;;;N;;;;;
+CF36;HANGUL SYLLABLE KYEOP;Lo;0;L;;;;;N;;;;;
+CF37;HANGUL SYLLABLE KYEOH;Lo;0;L;;;;;N;;;;;
+CF38;HANGUL SYLLABLE KYE;Lo;0;L;;;;;N;;;;;
+CF39;HANGUL SYLLABLE KYEG;Lo;0;L;;;;;N;;;;;
+CF3A;HANGUL SYLLABLE KYEGG;Lo;0;L;;;;;N;;;;;
+CF3B;HANGUL SYLLABLE KYEGS;Lo;0;L;;;;;N;;;;;
+CF3C;HANGUL SYLLABLE KYEN;Lo;0;L;;;;;N;;;;;
+CF3D;HANGUL SYLLABLE KYENI;Lo;0;L;;;;;N;;;;;
+CF3E;HANGUL SYLLABLE KYENH;Lo;0;L;;;;;N;;;;;
+CF3F;HANGUL SYLLABLE KYED;Lo;0;L;;;;;N;;;;;
+CF40;HANGUL SYLLABLE KYEL;Lo;0;L;;;;;N;;;;;
+CF41;HANGUL SYLLABLE KYELG;Lo;0;L;;;;;N;;;;;
+CF42;HANGUL SYLLABLE KYELM;Lo;0;L;;;;;N;;;;;
+CF43;HANGUL SYLLABLE KYELB;Lo;0;L;;;;;N;;;;;
+CF44;HANGUL SYLLABLE KYELS;Lo;0;L;;;;;N;;;;;
+CF45;HANGUL SYLLABLE KYELT;Lo;0;L;;;;;N;;;;;
+CF46;HANGUL SYLLABLE KYELP;Lo;0;L;;;;;N;;;;;
+CF47;HANGUL SYLLABLE KYELH;Lo;0;L;;;;;N;;;;;
+CF48;HANGUL SYLLABLE KYEM;Lo;0;L;;;;;N;;;;;
+CF49;HANGUL SYLLABLE KYEB;Lo;0;L;;;;;N;;;;;
+CF4A;HANGUL SYLLABLE KYEBS;Lo;0;L;;;;;N;;;;;
+CF4B;HANGUL SYLLABLE KYES;Lo;0;L;;;;;N;;;;;
+CF4C;HANGUL SYLLABLE KYESS;Lo;0;L;;;;;N;;;;;
+CF4D;HANGUL SYLLABLE KYENG;Lo;0;L;;;;;N;;;;;
+CF4E;HANGUL SYLLABLE KYEJ;Lo;0;L;;;;;N;;;;;
+CF4F;HANGUL SYLLABLE KYEC;Lo;0;L;;;;;N;;;;;
+CF50;HANGUL SYLLABLE KYEK;Lo;0;L;;;;;N;;;;;
+CF51;HANGUL SYLLABLE KYET;Lo;0;L;;;;;N;;;;;
+CF52;HANGUL SYLLABLE KYEP;Lo;0;L;;;;;N;;;;;
+CF53;HANGUL SYLLABLE KYEH;Lo;0;L;;;;;N;;;;;
+CF54;HANGUL SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+CF55;HANGUL SYLLABLE KOG;Lo;0;L;;;;;N;;;;;
+CF56;HANGUL SYLLABLE KOGG;Lo;0;L;;;;;N;;;;;
+CF57;HANGUL SYLLABLE KOGS;Lo;0;L;;;;;N;;;;;
+CF58;HANGUL SYLLABLE KON;Lo;0;L;;;;;N;;;;;
+CF59;HANGUL SYLLABLE KONI;Lo;0;L;;;;;N;;;;;
+CF5A;HANGUL SYLLABLE KONH;Lo;0;L;;;;;N;;;;;
+CF5B;HANGUL SYLLABLE KOD;Lo;0;L;;;;;N;;;;;
+CF5C;HANGUL SYLLABLE KOL;Lo;0;L;;;;;N;;;;;
+CF5D;HANGUL SYLLABLE KOLG;Lo;0;L;;;;;N;;;;;
+CF5E;HANGUL SYLLABLE KOLM;Lo;0;L;;;;;N;;;;;
+CF5F;HANGUL SYLLABLE KOLB;Lo;0;L;;;;;N;;;;;
+CF60;HANGUL SYLLABLE KOLS;Lo;0;L;;;;;N;;;;;
+CF61;HANGUL SYLLABLE KOLT;Lo;0;L;;;;;N;;;;;
+CF62;HANGUL SYLLABLE KOLP;Lo;0;L;;;;;N;;;;;
+CF63;HANGUL SYLLABLE KOLH;Lo;0;L;;;;;N;;;;;
+CF64;HANGUL SYLLABLE KOM;Lo;0;L;;;;;N;;;;;
+CF65;HANGUL SYLLABLE KOB;Lo;0;L;;;;;N;;;;;
+CF66;HANGUL SYLLABLE KOBS;Lo;0;L;;;;;N;;;;;
+CF67;HANGUL SYLLABLE KOS;Lo;0;L;;;;;N;;;;;
+CF68;HANGUL SYLLABLE KOSS;Lo;0;L;;;;;N;;;;;
+CF69;HANGUL SYLLABLE KONG;Lo;0;L;;;;;N;;;;;
+CF6A;HANGUL SYLLABLE KOJ;Lo;0;L;;;;;N;;;;;
+CF6B;HANGUL SYLLABLE KOC;Lo;0;L;;;;;N;;;;;
+CF6C;HANGUL SYLLABLE KOK;Lo;0;L;;;;;N;;;;;
+CF6D;HANGUL SYLLABLE KOT;Lo;0;L;;;;;N;;;;;
+CF6E;HANGUL SYLLABLE KOP;Lo;0;L;;;;;N;;;;;
+CF6F;HANGUL SYLLABLE KOH;Lo;0;L;;;;;N;;;;;
+CF70;HANGUL SYLLABLE KWA;Lo;0;L;;;;;N;;;;;
+CF71;HANGUL SYLLABLE KWAG;Lo;0;L;;;;;N;;;;;
+CF72;HANGUL SYLLABLE KWAGG;Lo;0;L;;;;;N;;;;;
+CF73;HANGUL SYLLABLE KWAGS;Lo;0;L;;;;;N;;;;;
+CF74;HANGUL SYLLABLE KWAN;Lo;0;L;;;;;N;;;;;
+CF75;HANGUL SYLLABLE KWANI;Lo;0;L;;;;;N;;;;;
+CF76;HANGUL SYLLABLE KWANH;Lo;0;L;;;;;N;;;;;
+CF77;HANGUL SYLLABLE KWAD;Lo;0;L;;;;;N;;;;;
+CF78;HANGUL SYLLABLE KWAL;Lo;0;L;;;;;N;;;;;
+CF79;HANGUL SYLLABLE KWALG;Lo;0;L;;;;;N;;;;;
+CF7A;HANGUL SYLLABLE KWALM;Lo;0;L;;;;;N;;;;;
+CF7B;HANGUL SYLLABLE KWALB;Lo;0;L;;;;;N;;;;;
+CF7C;HANGUL SYLLABLE KWALS;Lo;0;L;;;;;N;;;;;
+CF7D;HANGUL SYLLABLE KWALT;Lo;0;L;;;;;N;;;;;
+CF7E;HANGUL SYLLABLE KWALP;Lo;0;L;;;;;N;;;;;
+CF7F;HANGUL SYLLABLE KWALH;Lo;0;L;;;;;N;;;;;
+CF80;HANGUL SYLLABLE KWAM;Lo;0;L;;;;;N;;;;;
+CF81;HANGUL SYLLABLE KWAB;Lo;0;L;;;;;N;;;;;
+CF82;HANGUL SYLLABLE KWABS;Lo;0;L;;;;;N;;;;;
+CF83;HANGUL SYLLABLE KWAS;Lo;0;L;;;;;N;;;;;
+CF84;HANGUL SYLLABLE KWASS;Lo;0;L;;;;;N;;;;;
+CF85;HANGUL SYLLABLE KWANG;Lo;0;L;;;;;N;;;;;
+CF86;HANGUL SYLLABLE KWAJ;Lo;0;L;;;;;N;;;;;
+CF87;HANGUL SYLLABLE KWAC;Lo;0;L;;;;;N;;;;;
+CF88;HANGUL SYLLABLE KWAK;Lo;0;L;;;;;N;;;;;
+CF89;HANGUL SYLLABLE KWAT;Lo;0;L;;;;;N;;;;;
+CF8A;HANGUL SYLLABLE KWAP;Lo;0;L;;;;;N;;;;;
+CF8B;HANGUL SYLLABLE KWAH;Lo;0;L;;;;;N;;;;;
+CF8C;HANGUL SYLLABLE KWAE;Lo;0;L;;;;;N;;;;;
+CF8D;HANGUL SYLLABLE KWAEG;Lo;0;L;;;;;N;;;;;
+CF8E;HANGUL SYLLABLE KWAEGG;Lo;0;L;;;;;N;;;;;
+CF8F;HANGUL SYLLABLE KWAEGS;Lo;0;L;;;;;N;;;;;
+CF90;HANGUL SYLLABLE KWAEN;Lo;0;L;;;;;N;;;;;
+CF91;HANGUL SYLLABLE KWAENI;Lo;0;L;;;;;N;;;;;
+CF92;HANGUL SYLLABLE KWAENH;Lo;0;L;;;;;N;;;;;
+CF93;HANGUL SYLLABLE KWAED;Lo;0;L;;;;;N;;;;;
+CF94;HANGUL SYLLABLE KWAEL;Lo;0;L;;;;;N;;;;;
+CF95;HANGUL SYLLABLE KWAELG;Lo;0;L;;;;;N;;;;;
+CF96;HANGUL SYLLABLE KWAELM;Lo;0;L;;;;;N;;;;;
+CF97;HANGUL SYLLABLE KWAELB;Lo;0;L;;;;;N;;;;;
+CF98;HANGUL SYLLABLE KWAELS;Lo;0;L;;;;;N;;;;;
+CF99;HANGUL SYLLABLE KWAELT;Lo;0;L;;;;;N;;;;;
+CF9A;HANGUL SYLLABLE KWAELP;Lo;0;L;;;;;N;;;;;
+CF9B;HANGUL SYLLABLE KWAELH;Lo;0;L;;;;;N;;;;;
+CF9C;HANGUL SYLLABLE KWAEM;Lo;0;L;;;;;N;;;;;
+CF9D;HANGUL SYLLABLE KWAEB;Lo;0;L;;;;;N;;;;;
+CF9E;HANGUL SYLLABLE KWAEBS;Lo;0;L;;;;;N;;;;;
+CF9F;HANGUL SYLLABLE KWAES;Lo;0;L;;;;;N;;;;;
+CFA0;HANGUL SYLLABLE KWAESS;Lo;0;L;;;;;N;;;;;
+CFA1;HANGUL SYLLABLE KWAENG;Lo;0;L;;;;;N;;;;;
+CFA2;HANGUL SYLLABLE KWAEJ;Lo;0;L;;;;;N;;;;;
+CFA3;HANGUL SYLLABLE KWAEC;Lo;0;L;;;;;N;;;;;
+CFA4;HANGUL SYLLABLE KWAEK;Lo;0;L;;;;;N;;;;;
+CFA5;HANGUL SYLLABLE KWAET;Lo;0;L;;;;;N;;;;;
+CFA6;HANGUL SYLLABLE KWAEP;Lo;0;L;;;;;N;;;;;
+CFA7;HANGUL SYLLABLE KWAEH;Lo;0;L;;;;;N;;;;;
+CFA8;HANGUL SYLLABLE KOE;Lo;0;L;;;;;N;;;;;
+CFA9;HANGUL SYLLABLE KOEG;Lo;0;L;;;;;N;;;;;
+CFAA;HANGUL SYLLABLE KOEGG;Lo;0;L;;;;;N;;;;;
+CFAB;HANGUL SYLLABLE KOEGS;Lo;0;L;;;;;N;;;;;
+CFAC;HANGUL SYLLABLE KOEN;Lo;0;L;;;;;N;;;;;
+CFAD;HANGUL SYLLABLE KOENI;Lo;0;L;;;;;N;;;;;
+CFAE;HANGUL SYLLABLE KOENH;Lo;0;L;;;;;N;;;;;
+CFAF;HANGUL SYLLABLE KOED;Lo;0;L;;;;;N;;;;;
+CFB0;HANGUL SYLLABLE KOEL;Lo;0;L;;;;;N;;;;;
+CFB1;HANGUL SYLLABLE KOELG;Lo;0;L;;;;;N;;;;;
+CFB2;HANGUL SYLLABLE KOELM;Lo;0;L;;;;;N;;;;;
+CFB3;HANGUL SYLLABLE KOELB;Lo;0;L;;;;;N;;;;;
+CFB4;HANGUL SYLLABLE KOELS;Lo;0;L;;;;;N;;;;;
+CFB5;HANGUL SYLLABLE KOELT;Lo;0;L;;;;;N;;;;;
+CFB6;HANGUL SYLLABLE KOELP;Lo;0;L;;;;;N;;;;;
+CFB7;HANGUL SYLLABLE KOELH;Lo;0;L;;;;;N;;;;;
+CFB8;HANGUL SYLLABLE KOEM;Lo;0;L;;;;;N;;;;;
+CFB9;HANGUL SYLLABLE KOEB;Lo;0;L;;;;;N;;;;;
+CFBA;HANGUL SYLLABLE KOEBS;Lo;0;L;;;;;N;;;;;
+CFBB;HANGUL SYLLABLE KOES;Lo;0;L;;;;;N;;;;;
+CFBC;HANGUL SYLLABLE KOESS;Lo;0;L;;;;;N;;;;;
+CFBD;HANGUL SYLLABLE KOENG;Lo;0;L;;;;;N;;;;;
+CFBE;HANGUL SYLLABLE KOEJ;Lo;0;L;;;;;N;;;;;
+CFBF;HANGUL SYLLABLE KOEC;Lo;0;L;;;;;N;;;;;
+CFC0;HANGUL SYLLABLE KOEK;Lo;0;L;;;;;N;;;;;
+CFC1;HANGUL SYLLABLE KOET;Lo;0;L;;;;;N;;;;;
+CFC2;HANGUL SYLLABLE KOEP;Lo;0;L;;;;;N;;;;;
+CFC3;HANGUL SYLLABLE KOEH;Lo;0;L;;;;;N;;;;;
+CFC4;HANGUL SYLLABLE KYO;Lo;0;L;;;;;N;;;;;
+CFC5;HANGUL SYLLABLE KYOG;Lo;0;L;;;;;N;;;;;
+CFC6;HANGUL SYLLABLE KYOGG;Lo;0;L;;;;;N;;;;;
+CFC7;HANGUL SYLLABLE KYOGS;Lo;0;L;;;;;N;;;;;
+CFC8;HANGUL SYLLABLE KYON;Lo;0;L;;;;;N;;;;;
+CFC9;HANGUL SYLLABLE KYONI;Lo;0;L;;;;;N;;;;;
+CFCA;HANGUL SYLLABLE KYONH;Lo;0;L;;;;;N;;;;;
+CFCB;HANGUL SYLLABLE KYOD;Lo;0;L;;;;;N;;;;;
+CFCC;HANGUL SYLLABLE KYOL;Lo;0;L;;;;;N;;;;;
+CFCD;HANGUL SYLLABLE KYOLG;Lo;0;L;;;;;N;;;;;
+CFCE;HANGUL SYLLABLE KYOLM;Lo;0;L;;;;;N;;;;;
+CFCF;HANGUL SYLLABLE KYOLB;Lo;0;L;;;;;N;;;;;
+CFD0;HANGUL SYLLABLE KYOLS;Lo;0;L;;;;;N;;;;;
+CFD1;HANGUL SYLLABLE KYOLT;Lo;0;L;;;;;N;;;;;
+CFD2;HANGUL SYLLABLE KYOLP;Lo;0;L;;;;;N;;;;;
+CFD3;HANGUL SYLLABLE KYOLH;Lo;0;L;;;;;N;;;;;
+CFD4;HANGUL SYLLABLE KYOM;Lo;0;L;;;;;N;;;;;
+CFD5;HANGUL SYLLABLE KYOB;Lo;0;L;;;;;N;;;;;
+CFD6;HANGUL SYLLABLE KYOBS;Lo;0;L;;;;;N;;;;;
+CFD7;HANGUL SYLLABLE KYOS;Lo;0;L;;;;;N;;;;;
+CFD8;HANGUL SYLLABLE KYOSS;Lo;0;L;;;;;N;;;;;
+CFD9;HANGUL SYLLABLE KYONG;Lo;0;L;;;;;N;;;;;
+CFDA;HANGUL SYLLABLE KYOJ;Lo;0;L;;;;;N;;;;;
+CFDB;HANGUL SYLLABLE KYOC;Lo;0;L;;;;;N;;;;;
+CFDC;HANGUL SYLLABLE KYOK;Lo;0;L;;;;;N;;;;;
+CFDD;HANGUL SYLLABLE KYOT;Lo;0;L;;;;;N;;;;;
+CFDE;HANGUL SYLLABLE KYOP;Lo;0;L;;;;;N;;;;;
+CFDF;HANGUL SYLLABLE KYOH;Lo;0;L;;;;;N;;;;;
+CFE0;HANGUL SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+CFE1;HANGUL SYLLABLE KUG;Lo;0;L;;;;;N;;;;;
+CFE2;HANGUL SYLLABLE KUGG;Lo;0;L;;;;;N;;;;;
+CFE3;HANGUL SYLLABLE KUGS;Lo;0;L;;;;;N;;;;;
+CFE4;HANGUL SYLLABLE KUN;Lo;0;L;;;;;N;;;;;
+CFE5;HANGUL SYLLABLE KUNI;Lo;0;L;;;;;N;;;;;
+CFE6;HANGUL SYLLABLE KUNH;Lo;0;L;;;;;N;;;;;
+CFE7;HANGUL SYLLABLE KUD;Lo;0;L;;;;;N;;;;;
+CFE8;HANGUL SYLLABLE KUL;Lo;0;L;;;;;N;;;;;
+CFE9;HANGUL SYLLABLE KULG;Lo;0;L;;;;;N;;;;;
+CFEA;HANGUL SYLLABLE KULM;Lo;0;L;;;;;N;;;;;
+CFEB;HANGUL SYLLABLE KULB;Lo;0;L;;;;;N;;;;;
+CFEC;HANGUL SYLLABLE KULS;Lo;0;L;;;;;N;;;;;
+CFED;HANGUL SYLLABLE KULT;Lo;0;L;;;;;N;;;;;
+CFEE;HANGUL SYLLABLE KULP;Lo;0;L;;;;;N;;;;;
+CFEF;HANGUL SYLLABLE KULH;Lo;0;L;;;;;N;;;;;
+CFF0;HANGUL SYLLABLE KUM;Lo;0;L;;;;;N;;;;;
+CFF1;HANGUL SYLLABLE KUB;Lo;0;L;;;;;N;;;;;
+CFF2;HANGUL SYLLABLE KUBS;Lo;0;L;;;;;N;;;;;
+CFF3;HANGUL SYLLABLE KUS;Lo;0;L;;;;;N;;;;;
+CFF4;HANGUL SYLLABLE KUSS;Lo;0;L;;;;;N;;;;;
+CFF5;HANGUL SYLLABLE KUNG;Lo;0;L;;;;;N;;;;;
+CFF6;HANGUL SYLLABLE KUJ;Lo;0;L;;;;;N;;;;;
+CFF7;HANGUL SYLLABLE KUC;Lo;0;L;;;;;N;;;;;
+CFF8;HANGUL SYLLABLE KUK;Lo;0;L;;;;;N;;;;;
+CFF9;HANGUL SYLLABLE KUT;Lo;0;L;;;;;N;;;;;
+CFFA;HANGUL SYLLABLE KUP;Lo;0;L;;;;;N;;;;;
+CFFB;HANGUL SYLLABLE KUH;Lo;0;L;;;;;N;;;;;
+CFFC;HANGUL SYLLABLE KWEO;Lo;0;L;;;;;N;;;;;
+CFFD;HANGUL SYLLABLE KWEOG;Lo;0;L;;;;;N;;;;;
+CFFE;HANGUL SYLLABLE KWEOGG;Lo;0;L;;;;;N;;;;;
+CFFF;HANGUL SYLLABLE KWEOGS;Lo;0;L;;;;;N;;;;;
+D000;HANGUL SYLLABLE KWEON;Lo;0;L;;;;;N;;;;;
+D001;HANGUL SYLLABLE KWEONI;Lo;0;L;;;;;N;;;;;
+D002;HANGUL SYLLABLE KWEONH;Lo;0;L;;;;;N;;;;;
+D003;HANGUL SYLLABLE KWEOD;Lo;0;L;;;;;N;;;;;
+D004;HANGUL SYLLABLE KWEOL;Lo;0;L;;;;;N;;;;;
+D005;HANGUL SYLLABLE KWEOLG;Lo;0;L;;;;;N;;;;;
+D006;HANGUL SYLLABLE KWEOLM;Lo;0;L;;;;;N;;;;;
+D007;HANGUL SYLLABLE KWEOLB;Lo;0;L;;;;;N;;;;;
+D008;HANGUL SYLLABLE KWEOLS;Lo;0;L;;;;;N;;;;;
+D009;HANGUL SYLLABLE KWEOLT;Lo;0;L;;;;;N;;;;;
+D00A;HANGUL SYLLABLE KWEOLP;Lo;0;L;;;;;N;;;;;
+D00B;HANGUL SYLLABLE KWEOLH;Lo;0;L;;;;;N;;;;;
+D00C;HANGUL SYLLABLE KWEOM;Lo;0;L;;;;;N;;;;;
+D00D;HANGUL SYLLABLE KWEOB;Lo;0;L;;;;;N;;;;;
+D00E;HANGUL SYLLABLE KWEOBS;Lo;0;L;;;;;N;;;;;
+D00F;HANGUL SYLLABLE KWEOS;Lo;0;L;;;;;N;;;;;
+D010;HANGUL SYLLABLE KWEOSS;Lo;0;L;;;;;N;;;;;
+D011;HANGUL SYLLABLE KWEONG;Lo;0;L;;;;;N;;;;;
+D012;HANGUL SYLLABLE KWEOJ;Lo;0;L;;;;;N;;;;;
+D013;HANGUL SYLLABLE KWEOC;Lo;0;L;;;;;N;;;;;
+D014;HANGUL SYLLABLE KWEOK;Lo;0;L;;;;;N;;;;;
+D015;HANGUL SYLLABLE KWEOT;Lo;0;L;;;;;N;;;;;
+D016;HANGUL SYLLABLE KWEOP;Lo;0;L;;;;;N;;;;;
+D017;HANGUL SYLLABLE KWEOH;Lo;0;L;;;;;N;;;;;
+D018;HANGUL SYLLABLE KWE;Lo;0;L;;;;;N;;;;;
+D019;HANGUL SYLLABLE KWEG;Lo;0;L;;;;;N;;;;;
+D01A;HANGUL SYLLABLE KWEGG;Lo;0;L;;;;;N;;;;;
+D01B;HANGUL SYLLABLE KWEGS;Lo;0;L;;;;;N;;;;;
+D01C;HANGUL SYLLABLE KWEN;Lo;0;L;;;;;N;;;;;
+D01D;HANGUL SYLLABLE KWENI;Lo;0;L;;;;;N;;;;;
+D01E;HANGUL SYLLABLE KWENH;Lo;0;L;;;;;N;;;;;
+D01F;HANGUL SYLLABLE KWED;Lo;0;L;;;;;N;;;;;
+D020;HANGUL SYLLABLE KWEL;Lo;0;L;;;;;N;;;;;
+D021;HANGUL SYLLABLE KWELG;Lo;0;L;;;;;N;;;;;
+D022;HANGUL SYLLABLE KWELM;Lo;0;L;;;;;N;;;;;
+D023;HANGUL SYLLABLE KWELB;Lo;0;L;;;;;N;;;;;
+D024;HANGUL SYLLABLE KWELS;Lo;0;L;;;;;N;;;;;
+D025;HANGUL SYLLABLE KWELT;Lo;0;L;;;;;N;;;;;
+D026;HANGUL SYLLABLE KWELP;Lo;0;L;;;;;N;;;;;
+D027;HANGUL SYLLABLE KWELH;Lo;0;L;;;;;N;;;;;
+D028;HANGUL SYLLABLE KWEM;Lo;0;L;;;;;N;;;;;
+D029;HANGUL SYLLABLE KWEB;Lo;0;L;;;;;N;;;;;
+D02A;HANGUL SYLLABLE KWEBS;Lo;0;L;;;;;N;;;;;
+D02B;HANGUL SYLLABLE KWES;Lo;0;L;;;;;N;;;;;
+D02C;HANGUL SYLLABLE KWESS;Lo;0;L;;;;;N;;;;;
+D02D;HANGUL SYLLABLE KWENG;Lo;0;L;;;;;N;;;;;
+D02E;HANGUL SYLLABLE KWEJ;Lo;0;L;;;;;N;;;;;
+D02F;HANGUL SYLLABLE KWEC;Lo;0;L;;;;;N;;;;;
+D030;HANGUL SYLLABLE KWEK;Lo;0;L;;;;;N;;;;;
+D031;HANGUL SYLLABLE KWET;Lo;0;L;;;;;N;;;;;
+D032;HANGUL SYLLABLE KWEP;Lo;0;L;;;;;N;;;;;
+D033;HANGUL SYLLABLE KWEH;Lo;0;L;;;;;N;;;;;
+D034;HANGUL SYLLABLE KWI;Lo;0;L;;;;;N;;;;;
+D035;HANGUL SYLLABLE KWIG;Lo;0;L;;;;;N;;;;;
+D036;HANGUL SYLLABLE KWIGG;Lo;0;L;;;;;N;;;;;
+D037;HANGUL SYLLABLE KWIGS;Lo;0;L;;;;;N;;;;;
+D038;HANGUL SYLLABLE KWIN;Lo;0;L;;;;;N;;;;;
+D039;HANGUL SYLLABLE KWINI;Lo;0;L;;;;;N;;;;;
+D03A;HANGUL SYLLABLE KWINH;Lo;0;L;;;;;N;;;;;
+D03B;HANGUL SYLLABLE KWID;Lo;0;L;;;;;N;;;;;
+D03C;HANGUL SYLLABLE KWIL;Lo;0;L;;;;;N;;;;;
+D03D;HANGUL SYLLABLE KWILG;Lo;0;L;;;;;N;;;;;
+D03E;HANGUL SYLLABLE KWILM;Lo;0;L;;;;;N;;;;;
+D03F;HANGUL SYLLABLE KWILB;Lo;0;L;;;;;N;;;;;
+D040;HANGUL SYLLABLE KWILS;Lo;0;L;;;;;N;;;;;
+D041;HANGUL SYLLABLE KWILT;Lo;0;L;;;;;N;;;;;
+D042;HANGUL SYLLABLE KWILP;Lo;0;L;;;;;N;;;;;
+D043;HANGUL SYLLABLE KWILH;Lo;0;L;;;;;N;;;;;
+D044;HANGUL SYLLABLE KWIM;Lo;0;L;;;;;N;;;;;
+D045;HANGUL SYLLABLE KWIB;Lo;0;L;;;;;N;;;;;
+D046;HANGUL SYLLABLE KWIBS;Lo;0;L;;;;;N;;;;;
+D047;HANGUL SYLLABLE KWIS;Lo;0;L;;;;;N;;;;;
+D048;HANGUL SYLLABLE KWISS;Lo;0;L;;;;;N;;;;;
+D049;HANGUL SYLLABLE KWING;Lo;0;L;;;;;N;;;;;
+D04A;HANGUL SYLLABLE KWIJ;Lo;0;L;;;;;N;;;;;
+D04B;HANGUL SYLLABLE KWIC;Lo;0;L;;;;;N;;;;;
+D04C;HANGUL SYLLABLE KWIK;Lo;0;L;;;;;N;;;;;
+D04D;HANGUL SYLLABLE KWIT;Lo;0;L;;;;;N;;;;;
+D04E;HANGUL SYLLABLE KWIP;Lo;0;L;;;;;N;;;;;
+D04F;HANGUL SYLLABLE KWIH;Lo;0;L;;;;;N;;;;;
+D050;HANGUL SYLLABLE KYU;Lo;0;L;;;;;N;;;;;
+D051;HANGUL SYLLABLE KYUG;Lo;0;L;;;;;N;;;;;
+D052;HANGUL SYLLABLE KYUGG;Lo;0;L;;;;;N;;;;;
+D053;HANGUL SYLLABLE KYUGS;Lo;0;L;;;;;N;;;;;
+D054;HANGUL SYLLABLE KYUN;Lo;0;L;;;;;N;;;;;
+D055;HANGUL SYLLABLE KYUNI;Lo;0;L;;;;;N;;;;;
+D056;HANGUL SYLLABLE KYUNH;Lo;0;L;;;;;N;;;;;
+D057;HANGUL SYLLABLE KYUD;Lo;0;L;;;;;N;;;;;
+D058;HANGUL SYLLABLE KYUL;Lo;0;L;;;;;N;;;;;
+D059;HANGUL SYLLABLE KYULG;Lo;0;L;;;;;N;;;;;
+D05A;HANGUL SYLLABLE KYULM;Lo;0;L;;;;;N;;;;;
+D05B;HANGUL SYLLABLE KYULB;Lo;0;L;;;;;N;;;;;
+D05C;HANGUL SYLLABLE KYULS;Lo;0;L;;;;;N;;;;;
+D05D;HANGUL SYLLABLE KYULT;Lo;0;L;;;;;N;;;;;
+D05E;HANGUL SYLLABLE KYULP;Lo;0;L;;;;;N;;;;;
+D05F;HANGUL SYLLABLE KYULH;Lo;0;L;;;;;N;;;;;
+D060;HANGUL SYLLABLE KYUM;Lo;0;L;;;;;N;;;;;
+D061;HANGUL SYLLABLE KYUB;Lo;0;L;;;;;N;;;;;
+D062;HANGUL SYLLABLE KYUBS;Lo;0;L;;;;;N;;;;;
+D063;HANGUL SYLLABLE KYUS;Lo;0;L;;;;;N;;;;;
+D064;HANGUL SYLLABLE KYUSS;Lo;0;L;;;;;N;;;;;
+D065;HANGUL SYLLABLE KYUNG;Lo;0;L;;;;;N;;;;;
+D066;HANGUL SYLLABLE KYUJ;Lo;0;L;;;;;N;;;;;
+D067;HANGUL SYLLABLE KYUC;Lo;0;L;;;;;N;;;;;
+D068;HANGUL SYLLABLE KYUK;Lo;0;L;;;;;N;;;;;
+D069;HANGUL SYLLABLE KYUT;Lo;0;L;;;;;N;;;;;
+D06A;HANGUL SYLLABLE KYUP;Lo;0;L;;;;;N;;;;;
+D06B;HANGUL SYLLABLE KYUH;Lo;0;L;;;;;N;;;;;
+D06C;HANGUL SYLLABLE KEU;Lo;0;L;;;;;N;;;;;
+D06D;HANGUL SYLLABLE KEUG;Lo;0;L;;;;;N;;;;;
+D06E;HANGUL SYLLABLE KEUGG;Lo;0;L;;;;;N;;;;;
+D06F;HANGUL SYLLABLE KEUGS;Lo;0;L;;;;;N;;;;;
+D070;HANGUL SYLLABLE KEUN;Lo;0;L;;;;;N;;;;;
+D071;HANGUL SYLLABLE KEUNI;Lo;0;L;;;;;N;;;;;
+D072;HANGUL SYLLABLE KEUNH;Lo;0;L;;;;;N;;;;;
+D073;HANGUL SYLLABLE KEUD;Lo;0;L;;;;;N;;;;;
+D074;HANGUL SYLLABLE KEUL;Lo;0;L;;;;;N;;;;;
+D075;HANGUL SYLLABLE KEULG;Lo;0;L;;;;;N;;;;;
+D076;HANGUL SYLLABLE KEULM;Lo;0;L;;;;;N;;;;;
+D077;HANGUL SYLLABLE KEULB;Lo;0;L;;;;;N;;;;;
+D078;HANGUL SYLLABLE KEULS;Lo;0;L;;;;;N;;;;;
+D079;HANGUL SYLLABLE KEULT;Lo;0;L;;;;;N;;;;;
+D07A;HANGUL SYLLABLE KEULP;Lo;0;L;;;;;N;;;;;
+D07B;HANGUL SYLLABLE KEULH;Lo;0;L;;;;;N;;;;;
+D07C;HANGUL SYLLABLE KEUM;Lo;0;L;;;;;N;;;;;
+D07D;HANGUL SYLLABLE KEUB;Lo;0;L;;;;;N;;;;;
+D07E;HANGUL SYLLABLE KEUBS;Lo;0;L;;;;;N;;;;;
+D07F;HANGUL SYLLABLE KEUS;Lo;0;L;;;;;N;;;;;
+D080;HANGUL SYLLABLE KEUSS;Lo;0;L;;;;;N;;;;;
+D081;HANGUL SYLLABLE KEUNG;Lo;0;L;;;;;N;;;;;
+D082;HANGUL SYLLABLE KEUJ;Lo;0;L;;;;;N;;;;;
+D083;HANGUL SYLLABLE KEUC;Lo;0;L;;;;;N;;;;;
+D084;HANGUL SYLLABLE KEUK;Lo;0;L;;;;;N;;;;;
+D085;HANGUL SYLLABLE KEUT;Lo;0;L;;;;;N;;;;;
+D086;HANGUL SYLLABLE KEUP;Lo;0;L;;;;;N;;;;;
+D087;HANGUL SYLLABLE KEUH;Lo;0;L;;;;;N;;;;;
+D088;HANGUL SYLLABLE KYI;Lo;0;L;;;;;N;;;;;
+D089;HANGUL SYLLABLE KYIG;Lo;0;L;;;;;N;;;;;
+D08A;HANGUL SYLLABLE KYIGG;Lo;0;L;;;;;N;;;;;
+D08B;HANGUL SYLLABLE KYIGS;Lo;0;L;;;;;N;;;;;
+D08C;HANGUL SYLLABLE KYIN;Lo;0;L;;;;;N;;;;;
+D08D;HANGUL SYLLABLE KYINI;Lo;0;L;;;;;N;;;;;
+D08E;HANGUL SYLLABLE KYINH;Lo;0;L;;;;;N;;;;;
+D08F;HANGUL SYLLABLE KYID;Lo;0;L;;;;;N;;;;;
+D090;HANGUL SYLLABLE KYIL;Lo;0;L;;;;;N;;;;;
+D091;HANGUL SYLLABLE KYILG;Lo;0;L;;;;;N;;;;;
+D092;HANGUL SYLLABLE KYILM;Lo;0;L;;;;;N;;;;;
+D093;HANGUL SYLLABLE KYILB;Lo;0;L;;;;;N;;;;;
+D094;HANGUL SYLLABLE KYILS;Lo;0;L;;;;;N;;;;;
+D095;HANGUL SYLLABLE KYILT;Lo;0;L;;;;;N;;;;;
+D096;HANGUL SYLLABLE KYILP;Lo;0;L;;;;;N;;;;;
+D097;HANGUL SYLLABLE KYILH;Lo;0;L;;;;;N;;;;;
+D098;HANGUL SYLLABLE KYIM;Lo;0;L;;;;;N;;;;;
+D099;HANGUL SYLLABLE KYIB;Lo;0;L;;;;;N;;;;;
+D09A;HANGUL SYLLABLE KYIBS;Lo;0;L;;;;;N;;;;;
+D09B;HANGUL SYLLABLE KYIS;Lo;0;L;;;;;N;;;;;
+D09C;HANGUL SYLLABLE KYISS;Lo;0;L;;;;;N;;;;;
+D09D;HANGUL SYLLABLE KYING;Lo;0;L;;;;;N;;;;;
+D09E;HANGUL SYLLABLE KYIJ;Lo;0;L;;;;;N;;;;;
+D09F;HANGUL SYLLABLE KYIC;Lo;0;L;;;;;N;;;;;
+D0A0;HANGUL SYLLABLE KYIK;Lo;0;L;;;;;N;;;;;
+D0A1;HANGUL SYLLABLE KYIT;Lo;0;L;;;;;N;;;;;
+D0A2;HANGUL SYLLABLE KYIP;Lo;0;L;;;;;N;;;;;
+D0A3;HANGUL SYLLABLE KYIH;Lo;0;L;;;;;N;;;;;
+D0A4;HANGUL SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+D0A5;HANGUL SYLLABLE KIG;Lo;0;L;;;;;N;;;;;
+D0A6;HANGUL SYLLABLE KIGG;Lo;0;L;;;;;N;;;;;
+D0A7;HANGUL SYLLABLE KIGS;Lo;0;L;;;;;N;;;;;
+D0A8;HANGUL SYLLABLE KIN;Lo;0;L;;;;;N;;;;;
+D0A9;HANGUL SYLLABLE KINI;Lo;0;L;;;;;N;;;;;
+D0AA;HANGUL SYLLABLE KINH;Lo;0;L;;;;;N;;;;;
+D0AB;HANGUL SYLLABLE KID;Lo;0;L;;;;;N;;;;;
+D0AC;HANGUL SYLLABLE KIL;Lo;0;L;;;;;N;;;;;
+D0AD;HANGUL SYLLABLE KILG;Lo;0;L;;;;;N;;;;;
+D0AE;HANGUL SYLLABLE KILM;Lo;0;L;;;;;N;;;;;
+D0AF;HANGUL SYLLABLE KILB;Lo;0;L;;;;;N;;;;;
+D0B0;HANGUL SYLLABLE KILS;Lo;0;L;;;;;N;;;;;
+D0B1;HANGUL SYLLABLE KILT;Lo;0;L;;;;;N;;;;;
+D0B2;HANGUL SYLLABLE KILP;Lo;0;L;;;;;N;;;;;
+D0B3;HANGUL SYLLABLE KILH;Lo;0;L;;;;;N;;;;;
+D0B4;HANGUL SYLLABLE KIM;Lo;0;L;;;;;N;;;;;
+D0B5;HANGUL SYLLABLE KIB;Lo;0;L;;;;;N;;;;;
+D0B6;HANGUL SYLLABLE KIBS;Lo;0;L;;;;;N;;;;;
+D0B7;HANGUL SYLLABLE KIS;Lo;0;L;;;;;N;;;;;
+D0B8;HANGUL SYLLABLE KISS;Lo;0;L;;;;;N;;;;;
+D0B9;HANGUL SYLLABLE KING;Lo;0;L;;;;;N;;;;;
+D0BA;HANGUL SYLLABLE KIJ;Lo;0;L;;;;;N;;;;;
+D0BB;HANGUL SYLLABLE KIC;Lo;0;L;;;;;N;;;;;
+D0BC;HANGUL SYLLABLE KIK;Lo;0;L;;;;;N;;;;;
+D0BD;HANGUL SYLLABLE KIT;Lo;0;L;;;;;N;;;;;
+D0BE;HANGUL SYLLABLE KIP;Lo;0;L;;;;;N;;;;;
+D0BF;HANGUL SYLLABLE KIH;Lo;0;L;;;;;N;;;;;
+D0C0;HANGUL SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+D0C1;HANGUL SYLLABLE TAG;Lo;0;L;;;;;N;;;;;
+D0C2;HANGUL SYLLABLE TAGG;Lo;0;L;;;;;N;;;;;
+D0C3;HANGUL SYLLABLE TAGS;Lo;0;L;;;;;N;;;;;
+D0C4;HANGUL SYLLABLE TAN;Lo;0;L;;;;;N;;;;;
+D0C5;HANGUL SYLLABLE TANI;Lo;0;L;;;;;N;;;;;
+D0C6;HANGUL SYLLABLE TANH;Lo;0;L;;;;;N;;;;;
+D0C7;HANGUL SYLLABLE TAD;Lo;0;L;;;;;N;;;;;
+D0C8;HANGUL SYLLABLE TAL;Lo;0;L;;;;;N;;;;;
+D0C9;HANGUL SYLLABLE TALG;Lo;0;L;;;;;N;;;;;
+D0CA;HANGUL SYLLABLE TALM;Lo;0;L;;;;;N;;;;;
+D0CB;HANGUL SYLLABLE TALB;Lo;0;L;;;;;N;;;;;
+D0CC;HANGUL SYLLABLE TALS;Lo;0;L;;;;;N;;;;;
+D0CD;HANGUL SYLLABLE TALT;Lo;0;L;;;;;N;;;;;
+D0CE;HANGUL SYLLABLE TALP;Lo;0;L;;;;;N;;;;;
+D0CF;HANGUL SYLLABLE TALH;Lo;0;L;;;;;N;;;;;
+D0D0;HANGUL SYLLABLE TAM;Lo;0;L;;;;;N;;;;;
+D0D1;HANGUL SYLLABLE TAB;Lo;0;L;;;;;N;;;;;
+D0D2;HANGUL SYLLABLE TABS;Lo;0;L;;;;;N;;;;;
+D0D3;HANGUL SYLLABLE TAS;Lo;0;L;;;;;N;;;;;
+D0D4;HANGUL SYLLABLE TASS;Lo;0;L;;;;;N;;;;;
+D0D5;HANGUL SYLLABLE TANG;Lo;0;L;;;;;N;;;;;
+D0D6;HANGUL SYLLABLE TAJ;Lo;0;L;;;;;N;;;;;
+D0D7;HANGUL SYLLABLE TAC;Lo;0;L;;;;;N;;;;;
+D0D8;HANGUL SYLLABLE TAK;Lo;0;L;;;;;N;;;;;
+D0D9;HANGUL SYLLABLE TAT;Lo;0;L;;;;;N;;;;;
+D0DA;HANGUL SYLLABLE TAP;Lo;0;L;;;;;N;;;;;
+D0DB;HANGUL SYLLABLE TAH;Lo;0;L;;;;;N;;;;;
+D0DC;HANGUL SYLLABLE TAE;Lo;0;L;;;;;N;;;;;
+D0DD;HANGUL SYLLABLE TAEG;Lo;0;L;;;;;N;;;;;
+D0DE;HANGUL SYLLABLE TAEGG;Lo;0;L;;;;;N;;;;;
+D0DF;HANGUL SYLLABLE TAEGS;Lo;0;L;;;;;N;;;;;
+D0E0;HANGUL SYLLABLE TAEN;Lo;0;L;;;;;N;;;;;
+D0E1;HANGUL SYLLABLE TAENI;Lo;0;L;;;;;N;;;;;
+D0E2;HANGUL SYLLABLE TAENH;Lo;0;L;;;;;N;;;;;
+D0E3;HANGUL SYLLABLE TAED;Lo;0;L;;;;;N;;;;;
+D0E4;HANGUL SYLLABLE TAEL;Lo;0;L;;;;;N;;;;;
+D0E5;HANGUL SYLLABLE TAELG;Lo;0;L;;;;;N;;;;;
+D0E6;HANGUL SYLLABLE TAELM;Lo;0;L;;;;;N;;;;;
+D0E7;HANGUL SYLLABLE TAELB;Lo;0;L;;;;;N;;;;;
+D0E8;HANGUL SYLLABLE TAELS;Lo;0;L;;;;;N;;;;;
+D0E9;HANGUL SYLLABLE TAELT;Lo;0;L;;;;;N;;;;;
+D0EA;HANGUL SYLLABLE TAELP;Lo;0;L;;;;;N;;;;;
+D0EB;HANGUL SYLLABLE TAELH;Lo;0;L;;;;;N;;;;;
+D0EC;HANGUL SYLLABLE TAEM;Lo;0;L;;;;;N;;;;;
+D0ED;HANGUL SYLLABLE TAEB;Lo;0;L;;;;;N;;;;;
+D0EE;HANGUL SYLLABLE TAEBS;Lo;0;L;;;;;N;;;;;
+D0EF;HANGUL SYLLABLE TAES;Lo;0;L;;;;;N;;;;;
+D0F0;HANGUL SYLLABLE TAESS;Lo;0;L;;;;;N;;;;;
+D0F1;HANGUL SYLLABLE TAENG;Lo;0;L;;;;;N;;;;;
+D0F2;HANGUL SYLLABLE TAEJ;Lo;0;L;;;;;N;;;;;
+D0F3;HANGUL SYLLABLE TAEC;Lo;0;L;;;;;N;;;;;
+D0F4;HANGUL SYLLABLE TAEK;Lo;0;L;;;;;N;;;;;
+D0F5;HANGUL SYLLABLE TAET;Lo;0;L;;;;;N;;;;;
+D0F6;HANGUL SYLLABLE TAEP;Lo;0;L;;;;;N;;;;;
+D0F7;HANGUL SYLLABLE TAEH;Lo;0;L;;;;;N;;;;;
+D0F8;HANGUL SYLLABLE TYA;Lo;0;L;;;;;N;;;;;
+D0F9;HANGUL SYLLABLE TYAG;Lo;0;L;;;;;N;;;;;
+D0FA;HANGUL SYLLABLE TYAGG;Lo;0;L;;;;;N;;;;;
+D0FB;HANGUL SYLLABLE TYAGS;Lo;0;L;;;;;N;;;;;
+D0FC;HANGUL SYLLABLE TYAN;Lo;0;L;;;;;N;;;;;
+D0FD;HANGUL SYLLABLE TYANI;Lo;0;L;;;;;N;;;;;
+D0FE;HANGUL SYLLABLE TYANH;Lo;0;L;;;;;N;;;;;
+D0FF;HANGUL SYLLABLE TYAD;Lo;0;L;;;;;N;;;;;
+D100;HANGUL SYLLABLE TYAL;Lo;0;L;;;;;N;;;;;
+D101;HANGUL SYLLABLE TYALG;Lo;0;L;;;;;N;;;;;
+D102;HANGUL SYLLABLE TYALM;Lo;0;L;;;;;N;;;;;
+D103;HANGUL SYLLABLE TYALB;Lo;0;L;;;;;N;;;;;
+D104;HANGUL SYLLABLE TYALS;Lo;0;L;;;;;N;;;;;
+D105;HANGUL SYLLABLE TYALT;Lo;0;L;;;;;N;;;;;
+D106;HANGUL SYLLABLE TYALP;Lo;0;L;;;;;N;;;;;
+D107;HANGUL SYLLABLE TYALH;Lo;0;L;;;;;N;;;;;
+D108;HANGUL SYLLABLE TYAM;Lo;0;L;;;;;N;;;;;
+D109;HANGUL SYLLABLE TYAB;Lo;0;L;;;;;N;;;;;
+D10A;HANGUL SYLLABLE TYABS;Lo;0;L;;;;;N;;;;;
+D10B;HANGUL SYLLABLE TYAS;Lo;0;L;;;;;N;;;;;
+D10C;HANGUL SYLLABLE TYASS;Lo;0;L;;;;;N;;;;;
+D10D;HANGUL SYLLABLE TYANG;Lo;0;L;;;;;N;;;;;
+D10E;HANGUL SYLLABLE TYAJ;Lo;0;L;;;;;N;;;;;
+D10F;HANGUL SYLLABLE TYAC;Lo;0;L;;;;;N;;;;;
+D110;HANGUL SYLLABLE TYAK;Lo;0;L;;;;;N;;;;;
+D111;HANGUL SYLLABLE TYAT;Lo;0;L;;;;;N;;;;;
+D112;HANGUL SYLLABLE TYAP;Lo;0;L;;;;;N;;;;;
+D113;HANGUL SYLLABLE TYAH;Lo;0;L;;;;;N;;;;;
+D114;HANGUL SYLLABLE TYAE;Lo;0;L;;;;;N;;;;;
+D115;HANGUL SYLLABLE TYAEG;Lo;0;L;;;;;N;;;;;
+D116;HANGUL SYLLABLE TYAEGG;Lo;0;L;;;;;N;;;;;
+D117;HANGUL SYLLABLE TYAEGS;Lo;0;L;;;;;N;;;;;
+D118;HANGUL SYLLABLE TYAEN;Lo;0;L;;;;;N;;;;;
+D119;HANGUL SYLLABLE TYAENI;Lo;0;L;;;;;N;;;;;
+D11A;HANGUL SYLLABLE TYAENH;Lo;0;L;;;;;N;;;;;
+D11B;HANGUL SYLLABLE TYAED;Lo;0;L;;;;;N;;;;;
+D11C;HANGUL SYLLABLE TYAEL;Lo;0;L;;;;;N;;;;;
+D11D;HANGUL SYLLABLE TYAELG;Lo;0;L;;;;;N;;;;;
+D11E;HANGUL SYLLABLE TYAELM;Lo;0;L;;;;;N;;;;;
+D11F;HANGUL SYLLABLE TYAELB;Lo;0;L;;;;;N;;;;;
+D120;HANGUL SYLLABLE TYAELS;Lo;0;L;;;;;N;;;;;
+D121;HANGUL SYLLABLE TYAELT;Lo;0;L;;;;;N;;;;;
+D122;HANGUL SYLLABLE TYAELP;Lo;0;L;;;;;N;;;;;
+D123;HANGUL SYLLABLE TYAELH;Lo;0;L;;;;;N;;;;;
+D124;HANGUL SYLLABLE TYAEM;Lo;0;L;;;;;N;;;;;
+D125;HANGUL SYLLABLE TYAEB;Lo;0;L;;;;;N;;;;;
+D126;HANGUL SYLLABLE TYAEBS;Lo;0;L;;;;;N;;;;;
+D127;HANGUL SYLLABLE TYAES;Lo;0;L;;;;;N;;;;;
+D128;HANGUL SYLLABLE TYAESS;Lo;0;L;;;;;N;;;;;
+D129;HANGUL SYLLABLE TYAENG;Lo;0;L;;;;;N;;;;;
+D12A;HANGUL SYLLABLE TYAEJ;Lo;0;L;;;;;N;;;;;
+D12B;HANGUL SYLLABLE TYAEC;Lo;0;L;;;;;N;;;;;
+D12C;HANGUL SYLLABLE TYAEK;Lo;0;L;;;;;N;;;;;
+D12D;HANGUL SYLLABLE TYAET;Lo;0;L;;;;;N;;;;;
+D12E;HANGUL SYLLABLE TYAEP;Lo;0;L;;;;;N;;;;;
+D12F;HANGUL SYLLABLE TYAEH;Lo;0;L;;;;;N;;;;;
+D130;HANGUL SYLLABLE TEO;Lo;0;L;;;;;N;;;;;
+D131;HANGUL SYLLABLE TEOG;Lo;0;L;;;;;N;;;;;
+D132;HANGUL SYLLABLE TEOGG;Lo;0;L;;;;;N;;;;;
+D133;HANGUL SYLLABLE TEOGS;Lo;0;L;;;;;N;;;;;
+D134;HANGUL SYLLABLE TEON;Lo;0;L;;;;;N;;;;;
+D135;HANGUL SYLLABLE TEONI;Lo;0;L;;;;;N;;;;;
+D136;HANGUL SYLLABLE TEONH;Lo;0;L;;;;;N;;;;;
+D137;HANGUL SYLLABLE TEOD;Lo;0;L;;;;;N;;;;;
+D138;HANGUL SYLLABLE TEOL;Lo;0;L;;;;;N;;;;;
+D139;HANGUL SYLLABLE TEOLG;Lo;0;L;;;;;N;;;;;
+D13A;HANGUL SYLLABLE TEOLM;Lo;0;L;;;;;N;;;;;
+D13B;HANGUL SYLLABLE TEOLB;Lo;0;L;;;;;N;;;;;
+D13C;HANGUL SYLLABLE TEOLS;Lo;0;L;;;;;N;;;;;
+D13D;HANGUL SYLLABLE TEOLT;Lo;0;L;;;;;N;;;;;
+D13E;HANGUL SYLLABLE TEOLP;Lo;0;L;;;;;N;;;;;
+D13F;HANGUL SYLLABLE TEOLH;Lo;0;L;;;;;N;;;;;
+D140;HANGUL SYLLABLE TEOM;Lo;0;L;;;;;N;;;;;
+D141;HANGUL SYLLABLE TEOB;Lo;0;L;;;;;N;;;;;
+D142;HANGUL SYLLABLE TEOBS;Lo;0;L;;;;;N;;;;;
+D143;HANGUL SYLLABLE TEOS;Lo;0;L;;;;;N;;;;;
+D144;HANGUL SYLLABLE TEOSS;Lo;0;L;;;;;N;;;;;
+D145;HANGUL SYLLABLE TEONG;Lo;0;L;;;;;N;;;;;
+D146;HANGUL SYLLABLE TEOJ;Lo;0;L;;;;;N;;;;;
+D147;HANGUL SYLLABLE TEOC;Lo;0;L;;;;;N;;;;;
+D148;HANGUL SYLLABLE TEOK;Lo;0;L;;;;;N;;;;;
+D149;HANGUL SYLLABLE TEOT;Lo;0;L;;;;;N;;;;;
+D14A;HANGUL SYLLABLE TEOP;Lo;0;L;;;;;N;;;;;
+D14B;HANGUL SYLLABLE TEOH;Lo;0;L;;;;;N;;;;;
+D14C;HANGUL SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+D14D;HANGUL SYLLABLE TEG;Lo;0;L;;;;;N;;;;;
+D14E;HANGUL SYLLABLE TEGG;Lo;0;L;;;;;N;;;;;
+D14F;HANGUL SYLLABLE TEGS;Lo;0;L;;;;;N;;;;;
+D150;HANGUL SYLLABLE TEN;Lo;0;L;;;;;N;;;;;
+D151;HANGUL SYLLABLE TENI;Lo;0;L;;;;;N;;;;;
+D152;HANGUL SYLLABLE TENH;Lo;0;L;;;;;N;;;;;
+D153;HANGUL SYLLABLE TED;Lo;0;L;;;;;N;;;;;
+D154;HANGUL SYLLABLE TEL;Lo;0;L;;;;;N;;;;;
+D155;HANGUL SYLLABLE TELG;Lo;0;L;;;;;N;;;;;
+D156;HANGUL SYLLABLE TELM;Lo;0;L;;;;;N;;;;;
+D157;HANGUL SYLLABLE TELB;Lo;0;L;;;;;N;;;;;
+D158;HANGUL SYLLABLE TELS;Lo;0;L;;;;;N;;;;;
+D159;HANGUL SYLLABLE TELT;Lo;0;L;;;;;N;;;;;
+D15A;HANGUL SYLLABLE TELP;Lo;0;L;;;;;N;;;;;
+D15B;HANGUL SYLLABLE TELH;Lo;0;L;;;;;N;;;;;
+D15C;HANGUL SYLLABLE TEM;Lo;0;L;;;;;N;;;;;
+D15D;HANGUL SYLLABLE TEB;Lo;0;L;;;;;N;;;;;
+D15E;HANGUL SYLLABLE TEBS;Lo;0;L;;;;;N;;;;;
+D15F;HANGUL SYLLABLE TES;Lo;0;L;;;;;N;;;;;
+D160;HANGUL SYLLABLE TESS;Lo;0;L;;;;;N;;;;;
+D161;HANGUL SYLLABLE TENG;Lo;0;L;;;;;N;;;;;
+D162;HANGUL SYLLABLE TEJ;Lo;0;L;;;;;N;;;;;
+D163;HANGUL SYLLABLE TEC;Lo;0;L;;;;;N;;;;;
+D164;HANGUL SYLLABLE TEK;Lo;0;L;;;;;N;;;;;
+D165;HANGUL SYLLABLE TET;Lo;0;L;;;;;N;;;;;
+D166;HANGUL SYLLABLE TEP;Lo;0;L;;;;;N;;;;;
+D167;HANGUL SYLLABLE TEH;Lo;0;L;;;;;N;;;;;
+D168;HANGUL SYLLABLE TYEO;Lo;0;L;;;;;N;;;;;
+D169;HANGUL SYLLABLE TYEOG;Lo;0;L;;;;;N;;;;;
+D16A;HANGUL SYLLABLE TYEOGG;Lo;0;L;;;;;N;;;;;
+D16B;HANGUL SYLLABLE TYEOGS;Lo;0;L;;;;;N;;;;;
+D16C;HANGUL SYLLABLE TYEON;Lo;0;L;;;;;N;;;;;
+D16D;HANGUL SYLLABLE TYEONI;Lo;0;L;;;;;N;;;;;
+D16E;HANGUL SYLLABLE TYEONH;Lo;0;L;;;;;N;;;;;
+D16F;HANGUL SYLLABLE TYEOD;Lo;0;L;;;;;N;;;;;
+D170;HANGUL SYLLABLE TYEOL;Lo;0;L;;;;;N;;;;;
+D171;HANGUL SYLLABLE TYEOLG;Lo;0;L;;;;;N;;;;;
+D172;HANGUL SYLLABLE TYEOLM;Lo;0;L;;;;;N;;;;;
+D173;HANGUL SYLLABLE TYEOLB;Lo;0;L;;;;;N;;;;;
+D174;HANGUL SYLLABLE TYEOLS;Lo;0;L;;;;;N;;;;;
+D175;HANGUL SYLLABLE TYEOLT;Lo;0;L;;;;;N;;;;;
+D176;HANGUL SYLLABLE TYEOLP;Lo;0;L;;;;;N;;;;;
+D177;HANGUL SYLLABLE TYEOLH;Lo;0;L;;;;;N;;;;;
+D178;HANGUL SYLLABLE TYEOM;Lo;0;L;;;;;N;;;;;
+D179;HANGUL SYLLABLE TYEOB;Lo;0;L;;;;;N;;;;;
+D17A;HANGUL SYLLABLE TYEOBS;Lo;0;L;;;;;N;;;;;
+D17B;HANGUL SYLLABLE TYEOS;Lo;0;L;;;;;N;;;;;
+D17C;HANGUL SYLLABLE TYEOSS;Lo;0;L;;;;;N;;;;;
+D17D;HANGUL SYLLABLE TYEONG;Lo;0;L;;;;;N;;;;;
+D17E;HANGUL SYLLABLE TYEOJ;Lo;0;L;;;;;N;;;;;
+D17F;HANGUL SYLLABLE TYEOC;Lo;0;L;;;;;N;;;;;
+D180;HANGUL SYLLABLE TYEOK;Lo;0;L;;;;;N;;;;;
+D181;HANGUL SYLLABLE TYEOT;Lo;0;L;;;;;N;;;;;
+D182;HANGUL SYLLABLE TYEOP;Lo;0;L;;;;;N;;;;;
+D183;HANGUL SYLLABLE TYEOH;Lo;0;L;;;;;N;;;;;
+D184;HANGUL SYLLABLE TYE;Lo;0;L;;;;;N;;;;;
+D185;HANGUL SYLLABLE TYEG;Lo;0;L;;;;;N;;;;;
+D186;HANGUL SYLLABLE TYEGG;Lo;0;L;;;;;N;;;;;
+D187;HANGUL SYLLABLE TYEGS;Lo;0;L;;;;;N;;;;;
+D188;HANGUL SYLLABLE TYEN;Lo;0;L;;;;;N;;;;;
+D189;HANGUL SYLLABLE TYENI;Lo;0;L;;;;;N;;;;;
+D18A;HANGUL SYLLABLE TYENH;Lo;0;L;;;;;N;;;;;
+D18B;HANGUL SYLLABLE TYED;Lo;0;L;;;;;N;;;;;
+D18C;HANGUL SYLLABLE TYEL;Lo;0;L;;;;;N;;;;;
+D18D;HANGUL SYLLABLE TYELG;Lo;0;L;;;;;N;;;;;
+D18E;HANGUL SYLLABLE TYELM;Lo;0;L;;;;;N;;;;;
+D18F;HANGUL SYLLABLE TYELB;Lo;0;L;;;;;N;;;;;
+D190;HANGUL SYLLABLE TYELS;Lo;0;L;;;;;N;;;;;
+D191;HANGUL SYLLABLE TYELT;Lo;0;L;;;;;N;;;;;
+D192;HANGUL SYLLABLE TYELP;Lo;0;L;;;;;N;;;;;
+D193;HANGUL SYLLABLE TYELH;Lo;0;L;;;;;N;;;;;
+D194;HANGUL SYLLABLE TYEM;Lo;0;L;;;;;N;;;;;
+D195;HANGUL SYLLABLE TYEB;Lo;0;L;;;;;N;;;;;
+D196;HANGUL SYLLABLE TYEBS;Lo;0;L;;;;;N;;;;;
+D197;HANGUL SYLLABLE TYES;Lo;0;L;;;;;N;;;;;
+D198;HANGUL SYLLABLE TYESS;Lo;0;L;;;;;N;;;;;
+D199;HANGUL SYLLABLE TYENG;Lo;0;L;;;;;N;;;;;
+D19A;HANGUL SYLLABLE TYEJ;Lo;0;L;;;;;N;;;;;
+D19B;HANGUL SYLLABLE TYEC;Lo;0;L;;;;;N;;;;;
+D19C;HANGUL SYLLABLE TYEK;Lo;0;L;;;;;N;;;;;
+D19D;HANGUL SYLLABLE TYET;Lo;0;L;;;;;N;;;;;
+D19E;HANGUL SYLLABLE TYEP;Lo;0;L;;;;;N;;;;;
+D19F;HANGUL SYLLABLE TYEH;Lo;0;L;;;;;N;;;;;
+D1A0;HANGUL SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+D1A1;HANGUL SYLLABLE TOG;Lo;0;L;;;;;N;;;;;
+D1A2;HANGUL SYLLABLE TOGG;Lo;0;L;;;;;N;;;;;
+D1A3;HANGUL SYLLABLE TOGS;Lo;0;L;;;;;N;;;;;
+D1A4;HANGUL SYLLABLE TON;Lo;0;L;;;;;N;;;;;
+D1A5;HANGUL SYLLABLE TONI;Lo;0;L;;;;;N;;;;;
+D1A6;HANGUL SYLLABLE TONH;Lo;0;L;;;;;N;;;;;
+D1A7;HANGUL SYLLABLE TOD;Lo;0;L;;;;;N;;;;;
+D1A8;HANGUL SYLLABLE TOL;Lo;0;L;;;;;N;;;;;
+D1A9;HANGUL SYLLABLE TOLG;Lo;0;L;;;;;N;;;;;
+D1AA;HANGUL SYLLABLE TOLM;Lo;0;L;;;;;N;;;;;
+D1AB;HANGUL SYLLABLE TOLB;Lo;0;L;;;;;N;;;;;
+D1AC;HANGUL SYLLABLE TOLS;Lo;0;L;;;;;N;;;;;
+D1AD;HANGUL SYLLABLE TOLT;Lo;0;L;;;;;N;;;;;
+D1AE;HANGUL SYLLABLE TOLP;Lo;0;L;;;;;N;;;;;
+D1AF;HANGUL SYLLABLE TOLH;Lo;0;L;;;;;N;;;;;
+D1B0;HANGUL SYLLABLE TOM;Lo;0;L;;;;;N;;;;;
+D1B1;HANGUL SYLLABLE TOB;Lo;0;L;;;;;N;;;;;
+D1B2;HANGUL SYLLABLE TOBS;Lo;0;L;;;;;N;;;;;
+D1B3;HANGUL SYLLABLE TOS;Lo;0;L;;;;;N;;;;;
+D1B4;HANGUL SYLLABLE TOSS;Lo;0;L;;;;;N;;;;;
+D1B5;HANGUL SYLLABLE TONG;Lo;0;L;;;;;N;;;;;
+D1B6;HANGUL SYLLABLE TOJ;Lo;0;L;;;;;N;;;;;
+D1B7;HANGUL SYLLABLE TOC;Lo;0;L;;;;;N;;;;;
+D1B8;HANGUL SYLLABLE TOK;Lo;0;L;;;;;N;;;;;
+D1B9;HANGUL SYLLABLE TOT;Lo;0;L;;;;;N;;;;;
+D1BA;HANGUL SYLLABLE TOP;Lo;0;L;;;;;N;;;;;
+D1BB;HANGUL SYLLABLE TOH;Lo;0;L;;;;;N;;;;;
+D1BC;HANGUL SYLLABLE TWA;Lo;0;L;;;;;N;;;;;
+D1BD;HANGUL SYLLABLE TWAG;Lo;0;L;;;;;N;;;;;
+D1BE;HANGUL SYLLABLE TWAGG;Lo;0;L;;;;;N;;;;;
+D1BF;HANGUL SYLLABLE TWAGS;Lo;0;L;;;;;N;;;;;
+D1C0;HANGUL SYLLABLE TWAN;Lo;0;L;;;;;N;;;;;
+D1C1;HANGUL SYLLABLE TWANI;Lo;0;L;;;;;N;;;;;
+D1C2;HANGUL SYLLABLE TWANH;Lo;0;L;;;;;N;;;;;
+D1C3;HANGUL SYLLABLE TWAD;Lo;0;L;;;;;N;;;;;
+D1C4;HANGUL SYLLABLE TWAL;Lo;0;L;;;;;N;;;;;
+D1C5;HANGUL SYLLABLE TWALG;Lo;0;L;;;;;N;;;;;
+D1C6;HANGUL SYLLABLE TWALM;Lo;0;L;;;;;N;;;;;
+D1C7;HANGUL SYLLABLE TWALB;Lo;0;L;;;;;N;;;;;
+D1C8;HANGUL SYLLABLE TWALS;Lo;0;L;;;;;N;;;;;
+D1C9;HANGUL SYLLABLE TWALT;Lo;0;L;;;;;N;;;;;
+D1CA;HANGUL SYLLABLE TWALP;Lo;0;L;;;;;N;;;;;
+D1CB;HANGUL SYLLABLE TWALH;Lo;0;L;;;;;N;;;;;
+D1CC;HANGUL SYLLABLE TWAM;Lo;0;L;;;;;N;;;;;
+D1CD;HANGUL SYLLABLE TWAB;Lo;0;L;;;;;N;;;;;
+D1CE;HANGUL SYLLABLE TWABS;Lo;0;L;;;;;N;;;;;
+D1CF;HANGUL SYLLABLE TWAS;Lo;0;L;;;;;N;;;;;
+D1D0;HANGUL SYLLABLE TWASS;Lo;0;L;;;;;N;;;;;
+D1D1;HANGUL SYLLABLE TWANG;Lo;0;L;;;;;N;;;;;
+D1D2;HANGUL SYLLABLE TWAJ;Lo;0;L;;;;;N;;;;;
+D1D3;HANGUL SYLLABLE TWAC;Lo;0;L;;;;;N;;;;;
+D1D4;HANGUL SYLLABLE TWAK;Lo;0;L;;;;;N;;;;;
+D1D5;HANGUL SYLLABLE TWAT;Lo;0;L;;;;;N;;;;;
+D1D6;HANGUL SYLLABLE TWAP;Lo;0;L;;;;;N;;;;;
+D1D7;HANGUL SYLLABLE TWAH;Lo;0;L;;;;;N;;;;;
+D1D8;HANGUL SYLLABLE TWAE;Lo;0;L;;;;;N;;;;;
+D1D9;HANGUL SYLLABLE TWAEG;Lo;0;L;;;;;N;;;;;
+D1DA;HANGUL SYLLABLE TWAEGG;Lo;0;L;;;;;N;;;;;
+D1DB;HANGUL SYLLABLE TWAEGS;Lo;0;L;;;;;N;;;;;
+D1DC;HANGUL SYLLABLE TWAEN;Lo;0;L;;;;;N;;;;;
+D1DD;HANGUL SYLLABLE TWAENI;Lo;0;L;;;;;N;;;;;
+D1DE;HANGUL SYLLABLE TWAENH;Lo;0;L;;;;;N;;;;;
+D1DF;HANGUL SYLLABLE TWAED;Lo;0;L;;;;;N;;;;;
+D1E0;HANGUL SYLLABLE TWAEL;Lo;0;L;;;;;N;;;;;
+D1E1;HANGUL SYLLABLE TWAELG;Lo;0;L;;;;;N;;;;;
+D1E2;HANGUL SYLLABLE TWAELM;Lo;0;L;;;;;N;;;;;
+D1E3;HANGUL SYLLABLE TWAELB;Lo;0;L;;;;;N;;;;;
+D1E4;HANGUL SYLLABLE TWAELS;Lo;0;L;;;;;N;;;;;
+D1E5;HANGUL SYLLABLE TWAELT;Lo;0;L;;;;;N;;;;;
+D1E6;HANGUL SYLLABLE TWAELP;Lo;0;L;;;;;N;;;;;
+D1E7;HANGUL SYLLABLE TWAELH;Lo;0;L;;;;;N;;;;;
+D1E8;HANGUL SYLLABLE TWAEM;Lo;0;L;;;;;N;;;;;
+D1E9;HANGUL SYLLABLE TWAEB;Lo;0;L;;;;;N;;;;;
+D1EA;HANGUL SYLLABLE TWAEBS;Lo;0;L;;;;;N;;;;;
+D1EB;HANGUL SYLLABLE TWAES;Lo;0;L;;;;;N;;;;;
+D1EC;HANGUL SYLLABLE TWAESS;Lo;0;L;;;;;N;;;;;
+D1ED;HANGUL SYLLABLE TWAENG;Lo;0;L;;;;;N;;;;;
+D1EE;HANGUL SYLLABLE TWAEJ;Lo;0;L;;;;;N;;;;;
+D1EF;HANGUL SYLLABLE TWAEC;Lo;0;L;;;;;N;;;;;
+D1F0;HANGUL SYLLABLE TWAEK;Lo;0;L;;;;;N;;;;;
+D1F1;HANGUL SYLLABLE TWAET;Lo;0;L;;;;;N;;;;;
+D1F2;HANGUL SYLLABLE TWAEP;Lo;0;L;;;;;N;;;;;
+D1F3;HANGUL SYLLABLE TWAEH;Lo;0;L;;;;;N;;;;;
+D1F4;HANGUL SYLLABLE TOE;Lo;0;L;;;;;N;;;;;
+D1F5;HANGUL SYLLABLE TOEG;Lo;0;L;;;;;N;;;;;
+D1F6;HANGUL SYLLABLE TOEGG;Lo;0;L;;;;;N;;;;;
+D1F7;HANGUL SYLLABLE TOEGS;Lo;0;L;;;;;N;;;;;
+D1F8;HANGUL SYLLABLE TOEN;Lo;0;L;;;;;N;;;;;
+D1F9;HANGUL SYLLABLE TOENI;Lo;0;L;;;;;N;;;;;
+D1FA;HANGUL SYLLABLE TOENH;Lo;0;L;;;;;N;;;;;
+D1FB;HANGUL SYLLABLE TOED;Lo;0;L;;;;;N;;;;;
+D1FC;HANGUL SYLLABLE TOEL;Lo;0;L;;;;;N;;;;;
+D1FD;HANGUL SYLLABLE TOELG;Lo;0;L;;;;;N;;;;;
+D1FE;HANGUL SYLLABLE TOELM;Lo;0;L;;;;;N;;;;;
+D1FF;HANGUL SYLLABLE TOELB;Lo;0;L;;;;;N;;;;;
+D200;HANGUL SYLLABLE TOELS;Lo;0;L;;;;;N;;;;;
+D201;HANGUL SYLLABLE TOELT;Lo;0;L;;;;;N;;;;;
+D202;HANGUL SYLLABLE TOELP;Lo;0;L;;;;;N;;;;;
+D203;HANGUL SYLLABLE TOELH;Lo;0;L;;;;;N;;;;;
+D204;HANGUL SYLLABLE TOEM;Lo;0;L;;;;;N;;;;;
+D205;HANGUL SYLLABLE TOEB;Lo;0;L;;;;;N;;;;;
+D206;HANGUL SYLLABLE TOEBS;Lo;0;L;;;;;N;;;;;
+D207;HANGUL SYLLABLE TOES;Lo;0;L;;;;;N;;;;;
+D208;HANGUL SYLLABLE TOESS;Lo;0;L;;;;;N;;;;;
+D209;HANGUL SYLLABLE TOENG;Lo;0;L;;;;;N;;;;;
+D20A;HANGUL SYLLABLE TOEJ;Lo;0;L;;;;;N;;;;;
+D20B;HANGUL SYLLABLE TOEC;Lo;0;L;;;;;N;;;;;
+D20C;HANGUL SYLLABLE TOEK;Lo;0;L;;;;;N;;;;;
+D20D;HANGUL SYLLABLE TOET;Lo;0;L;;;;;N;;;;;
+D20E;HANGUL SYLLABLE TOEP;Lo;0;L;;;;;N;;;;;
+D20F;HANGUL SYLLABLE TOEH;Lo;0;L;;;;;N;;;;;
+D210;HANGUL SYLLABLE TYO;Lo;0;L;;;;;N;;;;;
+D211;HANGUL SYLLABLE TYOG;Lo;0;L;;;;;N;;;;;
+D212;HANGUL SYLLABLE TYOGG;Lo;0;L;;;;;N;;;;;
+D213;HANGUL SYLLABLE TYOGS;Lo;0;L;;;;;N;;;;;
+D214;HANGUL SYLLABLE TYON;Lo;0;L;;;;;N;;;;;
+D215;HANGUL SYLLABLE TYONI;Lo;0;L;;;;;N;;;;;
+D216;HANGUL SYLLABLE TYONH;Lo;0;L;;;;;N;;;;;
+D217;HANGUL SYLLABLE TYOD;Lo;0;L;;;;;N;;;;;
+D218;HANGUL SYLLABLE TYOL;Lo;0;L;;;;;N;;;;;
+D219;HANGUL SYLLABLE TYOLG;Lo;0;L;;;;;N;;;;;
+D21A;HANGUL SYLLABLE TYOLM;Lo;0;L;;;;;N;;;;;
+D21B;HANGUL SYLLABLE TYOLB;Lo;0;L;;;;;N;;;;;
+D21C;HANGUL SYLLABLE TYOLS;Lo;0;L;;;;;N;;;;;
+D21D;HANGUL SYLLABLE TYOLT;Lo;0;L;;;;;N;;;;;
+D21E;HANGUL SYLLABLE TYOLP;Lo;0;L;;;;;N;;;;;
+D21F;HANGUL SYLLABLE TYOLH;Lo;0;L;;;;;N;;;;;
+D220;HANGUL SYLLABLE TYOM;Lo;0;L;;;;;N;;;;;
+D221;HANGUL SYLLABLE TYOB;Lo;0;L;;;;;N;;;;;
+D222;HANGUL SYLLABLE TYOBS;Lo;0;L;;;;;N;;;;;
+D223;HANGUL SYLLABLE TYOS;Lo;0;L;;;;;N;;;;;
+D224;HANGUL SYLLABLE TYOSS;Lo;0;L;;;;;N;;;;;
+D225;HANGUL SYLLABLE TYONG;Lo;0;L;;;;;N;;;;;
+D226;HANGUL SYLLABLE TYOJ;Lo;0;L;;;;;N;;;;;
+D227;HANGUL SYLLABLE TYOC;Lo;0;L;;;;;N;;;;;
+D228;HANGUL SYLLABLE TYOK;Lo;0;L;;;;;N;;;;;
+D229;HANGUL SYLLABLE TYOT;Lo;0;L;;;;;N;;;;;
+D22A;HANGUL SYLLABLE TYOP;Lo;0;L;;;;;N;;;;;
+D22B;HANGUL SYLLABLE TYOH;Lo;0;L;;;;;N;;;;;
+D22C;HANGUL SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+D22D;HANGUL SYLLABLE TUG;Lo;0;L;;;;;N;;;;;
+D22E;HANGUL SYLLABLE TUGG;Lo;0;L;;;;;N;;;;;
+D22F;HANGUL SYLLABLE TUGS;Lo;0;L;;;;;N;;;;;
+D230;HANGUL SYLLABLE TUN;Lo;0;L;;;;;N;;;;;
+D231;HANGUL SYLLABLE TUNI;Lo;0;L;;;;;N;;;;;
+D232;HANGUL SYLLABLE TUNH;Lo;0;L;;;;;N;;;;;
+D233;HANGUL SYLLABLE TUD;Lo;0;L;;;;;N;;;;;
+D234;HANGUL SYLLABLE TUL;Lo;0;L;;;;;N;;;;;
+D235;HANGUL SYLLABLE TULG;Lo;0;L;;;;;N;;;;;
+D236;HANGUL SYLLABLE TULM;Lo;0;L;;;;;N;;;;;
+D237;HANGUL SYLLABLE TULB;Lo;0;L;;;;;N;;;;;
+D238;HANGUL SYLLABLE TULS;Lo;0;L;;;;;N;;;;;
+D239;HANGUL SYLLABLE TULT;Lo;0;L;;;;;N;;;;;
+D23A;HANGUL SYLLABLE TULP;Lo;0;L;;;;;N;;;;;
+D23B;HANGUL SYLLABLE TULH;Lo;0;L;;;;;N;;;;;
+D23C;HANGUL SYLLABLE TUM;Lo;0;L;;;;;N;;;;;
+D23D;HANGUL SYLLABLE TUB;Lo;0;L;;;;;N;;;;;
+D23E;HANGUL SYLLABLE TUBS;Lo;0;L;;;;;N;;;;;
+D23F;HANGUL SYLLABLE TUS;Lo;0;L;;;;;N;;;;;
+D240;HANGUL SYLLABLE TUSS;Lo;0;L;;;;;N;;;;;
+D241;HANGUL SYLLABLE TUNG;Lo;0;L;;;;;N;;;;;
+D242;HANGUL SYLLABLE TUJ;Lo;0;L;;;;;N;;;;;
+D243;HANGUL SYLLABLE TUC;Lo;0;L;;;;;N;;;;;
+D244;HANGUL SYLLABLE TUK;Lo;0;L;;;;;N;;;;;
+D245;HANGUL SYLLABLE TUT;Lo;0;L;;;;;N;;;;;
+D246;HANGUL SYLLABLE TUP;Lo;0;L;;;;;N;;;;;
+D247;HANGUL SYLLABLE TUH;Lo;0;L;;;;;N;;;;;
+D248;HANGUL SYLLABLE TWEO;Lo;0;L;;;;;N;;;;;
+D249;HANGUL SYLLABLE TWEOG;Lo;0;L;;;;;N;;;;;
+D24A;HANGUL SYLLABLE TWEOGG;Lo;0;L;;;;;N;;;;;
+D24B;HANGUL SYLLABLE TWEOGS;Lo;0;L;;;;;N;;;;;
+D24C;HANGUL SYLLABLE TWEON;Lo;0;L;;;;;N;;;;;
+D24D;HANGUL SYLLABLE TWEONI;Lo;0;L;;;;;N;;;;;
+D24E;HANGUL SYLLABLE TWEONH;Lo;0;L;;;;;N;;;;;
+D24F;HANGUL SYLLABLE TWEOD;Lo;0;L;;;;;N;;;;;
+D250;HANGUL SYLLABLE TWEOL;Lo;0;L;;;;;N;;;;;
+D251;HANGUL SYLLABLE TWEOLG;Lo;0;L;;;;;N;;;;;
+D252;HANGUL SYLLABLE TWEOLM;Lo;0;L;;;;;N;;;;;
+D253;HANGUL SYLLABLE TWEOLB;Lo;0;L;;;;;N;;;;;
+D254;HANGUL SYLLABLE TWEOLS;Lo;0;L;;;;;N;;;;;
+D255;HANGUL SYLLABLE TWEOLT;Lo;0;L;;;;;N;;;;;
+D256;HANGUL SYLLABLE TWEOLP;Lo;0;L;;;;;N;;;;;
+D257;HANGUL SYLLABLE TWEOLH;Lo;0;L;;;;;N;;;;;
+D258;HANGUL SYLLABLE TWEOM;Lo;0;L;;;;;N;;;;;
+D259;HANGUL SYLLABLE TWEOB;Lo;0;L;;;;;N;;;;;
+D25A;HANGUL SYLLABLE TWEOBS;Lo;0;L;;;;;N;;;;;
+D25B;HANGUL SYLLABLE TWEOS;Lo;0;L;;;;;N;;;;;
+D25C;HANGUL SYLLABLE TWEOSS;Lo;0;L;;;;;N;;;;;
+D25D;HANGUL SYLLABLE TWEONG;Lo;0;L;;;;;N;;;;;
+D25E;HANGUL SYLLABLE TWEOJ;Lo;0;L;;;;;N;;;;;
+D25F;HANGUL SYLLABLE TWEOC;Lo;0;L;;;;;N;;;;;
+D260;HANGUL SYLLABLE TWEOK;Lo;0;L;;;;;N;;;;;
+D261;HANGUL SYLLABLE TWEOT;Lo;0;L;;;;;N;;;;;
+D262;HANGUL SYLLABLE TWEOP;Lo;0;L;;;;;N;;;;;
+D263;HANGUL SYLLABLE TWEOH;Lo;0;L;;;;;N;;;;;
+D264;HANGUL SYLLABLE TWE;Lo;0;L;;;;;N;;;;;
+D265;HANGUL SYLLABLE TWEG;Lo;0;L;;;;;N;;;;;
+D266;HANGUL SYLLABLE TWEGG;Lo;0;L;;;;;N;;;;;
+D267;HANGUL SYLLABLE TWEGS;Lo;0;L;;;;;N;;;;;
+D268;HANGUL SYLLABLE TWEN;Lo;0;L;;;;;N;;;;;
+D269;HANGUL SYLLABLE TWENI;Lo;0;L;;;;;N;;;;;
+D26A;HANGUL SYLLABLE TWENH;Lo;0;L;;;;;N;;;;;
+D26B;HANGUL SYLLABLE TWED;Lo;0;L;;;;;N;;;;;
+D26C;HANGUL SYLLABLE TWEL;Lo;0;L;;;;;N;;;;;
+D26D;HANGUL SYLLABLE TWELG;Lo;0;L;;;;;N;;;;;
+D26E;HANGUL SYLLABLE TWELM;Lo;0;L;;;;;N;;;;;
+D26F;HANGUL SYLLABLE TWELB;Lo;0;L;;;;;N;;;;;
+D270;HANGUL SYLLABLE TWELS;Lo;0;L;;;;;N;;;;;
+D271;HANGUL SYLLABLE TWELT;Lo;0;L;;;;;N;;;;;
+D272;HANGUL SYLLABLE TWELP;Lo;0;L;;;;;N;;;;;
+D273;HANGUL SYLLABLE TWELH;Lo;0;L;;;;;N;;;;;
+D274;HANGUL SYLLABLE TWEM;Lo;0;L;;;;;N;;;;;
+D275;HANGUL SYLLABLE TWEB;Lo;0;L;;;;;N;;;;;
+D276;HANGUL SYLLABLE TWEBS;Lo;0;L;;;;;N;;;;;
+D277;HANGUL SYLLABLE TWES;Lo;0;L;;;;;N;;;;;
+D278;HANGUL SYLLABLE TWESS;Lo;0;L;;;;;N;;;;;
+D279;HANGUL SYLLABLE TWENG;Lo;0;L;;;;;N;;;;;
+D27A;HANGUL SYLLABLE TWEJ;Lo;0;L;;;;;N;;;;;
+D27B;HANGUL SYLLABLE TWEC;Lo;0;L;;;;;N;;;;;
+D27C;HANGUL SYLLABLE TWEK;Lo;0;L;;;;;N;;;;;
+D27D;HANGUL SYLLABLE TWET;Lo;0;L;;;;;N;;;;;
+D27E;HANGUL SYLLABLE TWEP;Lo;0;L;;;;;N;;;;;
+D27F;HANGUL SYLLABLE TWEH;Lo;0;L;;;;;N;;;;;
+D280;HANGUL SYLLABLE TWI;Lo;0;L;;;;;N;;;;;
+D281;HANGUL SYLLABLE TWIG;Lo;0;L;;;;;N;;;;;
+D282;HANGUL SYLLABLE TWIGG;Lo;0;L;;;;;N;;;;;
+D283;HANGUL SYLLABLE TWIGS;Lo;0;L;;;;;N;;;;;
+D284;HANGUL SYLLABLE TWIN;Lo;0;L;;;;;N;;;;;
+D285;HANGUL SYLLABLE TWINI;Lo;0;L;;;;;N;;;;;
+D286;HANGUL SYLLABLE TWINH;Lo;0;L;;;;;N;;;;;
+D287;HANGUL SYLLABLE TWID;Lo;0;L;;;;;N;;;;;
+D288;HANGUL SYLLABLE TWIL;Lo;0;L;;;;;N;;;;;
+D289;HANGUL SYLLABLE TWILG;Lo;0;L;;;;;N;;;;;
+D28A;HANGUL SYLLABLE TWILM;Lo;0;L;;;;;N;;;;;
+D28B;HANGUL SYLLABLE TWILB;Lo;0;L;;;;;N;;;;;
+D28C;HANGUL SYLLABLE TWILS;Lo;0;L;;;;;N;;;;;
+D28D;HANGUL SYLLABLE TWILT;Lo;0;L;;;;;N;;;;;
+D28E;HANGUL SYLLABLE TWILP;Lo;0;L;;;;;N;;;;;
+D28F;HANGUL SYLLABLE TWILH;Lo;0;L;;;;;N;;;;;
+D290;HANGUL SYLLABLE TWIM;Lo;0;L;;;;;N;;;;;
+D291;HANGUL SYLLABLE TWIB;Lo;0;L;;;;;N;;;;;
+D292;HANGUL SYLLABLE TWIBS;Lo;0;L;;;;;N;;;;;
+D293;HANGUL SYLLABLE TWIS;Lo;0;L;;;;;N;;;;;
+D294;HANGUL SYLLABLE TWISS;Lo;0;L;;;;;N;;;;;
+D295;HANGUL SYLLABLE TWING;Lo;0;L;;;;;N;;;;;
+D296;HANGUL SYLLABLE TWIJ;Lo;0;L;;;;;N;;;;;
+D297;HANGUL SYLLABLE TWIC;Lo;0;L;;;;;N;;;;;
+D298;HANGUL SYLLABLE TWIK;Lo;0;L;;;;;N;;;;;
+D299;HANGUL SYLLABLE TWIT;Lo;0;L;;;;;N;;;;;
+D29A;HANGUL SYLLABLE TWIP;Lo;0;L;;;;;N;;;;;
+D29B;HANGUL SYLLABLE TWIH;Lo;0;L;;;;;N;;;;;
+D29C;HANGUL SYLLABLE TYU;Lo;0;L;;;;;N;;;;;
+D29D;HANGUL SYLLABLE TYUG;Lo;0;L;;;;;N;;;;;
+D29E;HANGUL SYLLABLE TYUGG;Lo;0;L;;;;;N;;;;;
+D29F;HANGUL SYLLABLE TYUGS;Lo;0;L;;;;;N;;;;;
+D2A0;HANGUL SYLLABLE TYUN;Lo;0;L;;;;;N;;;;;
+D2A1;HANGUL SYLLABLE TYUNI;Lo;0;L;;;;;N;;;;;
+D2A2;HANGUL SYLLABLE TYUNH;Lo;0;L;;;;;N;;;;;
+D2A3;HANGUL SYLLABLE TYUD;Lo;0;L;;;;;N;;;;;
+D2A4;HANGUL SYLLABLE TYUL;Lo;0;L;;;;;N;;;;;
+D2A5;HANGUL SYLLABLE TYULG;Lo;0;L;;;;;N;;;;;
+D2A6;HANGUL SYLLABLE TYULM;Lo;0;L;;;;;N;;;;;
+D2A7;HANGUL SYLLABLE TYULB;Lo;0;L;;;;;N;;;;;
+D2A8;HANGUL SYLLABLE TYULS;Lo;0;L;;;;;N;;;;;
+D2A9;HANGUL SYLLABLE TYULT;Lo;0;L;;;;;N;;;;;
+D2AA;HANGUL SYLLABLE TYULP;Lo;0;L;;;;;N;;;;;
+D2AB;HANGUL SYLLABLE TYULH;Lo;0;L;;;;;N;;;;;
+D2AC;HANGUL SYLLABLE TYUM;Lo;0;L;;;;;N;;;;;
+D2AD;HANGUL SYLLABLE TYUB;Lo;0;L;;;;;N;;;;;
+D2AE;HANGUL SYLLABLE TYUBS;Lo;0;L;;;;;N;;;;;
+D2AF;HANGUL SYLLABLE TYUS;Lo;0;L;;;;;N;;;;;
+D2B0;HANGUL SYLLABLE TYUSS;Lo;0;L;;;;;N;;;;;
+D2B1;HANGUL SYLLABLE TYUNG;Lo;0;L;;;;;N;;;;;
+D2B2;HANGUL SYLLABLE TYUJ;Lo;0;L;;;;;N;;;;;
+D2B3;HANGUL SYLLABLE TYUC;Lo;0;L;;;;;N;;;;;
+D2B4;HANGUL SYLLABLE TYUK;Lo;0;L;;;;;N;;;;;
+D2B5;HANGUL SYLLABLE TYUT;Lo;0;L;;;;;N;;;;;
+D2B6;HANGUL SYLLABLE TYUP;Lo;0;L;;;;;N;;;;;
+D2B7;HANGUL SYLLABLE TYUH;Lo;0;L;;;;;N;;;;;
+D2B8;HANGUL SYLLABLE TEU;Lo;0;L;;;;;N;;;;;
+D2B9;HANGUL SYLLABLE TEUG;Lo;0;L;;;;;N;;;;;
+D2BA;HANGUL SYLLABLE TEUGG;Lo;0;L;;;;;N;;;;;
+D2BB;HANGUL SYLLABLE TEUGS;Lo;0;L;;;;;N;;;;;
+D2BC;HANGUL SYLLABLE TEUN;Lo;0;L;;;;;N;;;;;
+D2BD;HANGUL SYLLABLE TEUNI;Lo;0;L;;;;;N;;;;;
+D2BE;HANGUL SYLLABLE TEUNH;Lo;0;L;;;;;N;;;;;
+D2BF;HANGUL SYLLABLE TEUD;Lo;0;L;;;;;N;;;;;
+D2C0;HANGUL SYLLABLE TEUL;Lo;0;L;;;;;N;;;;;
+D2C1;HANGUL SYLLABLE TEULG;Lo;0;L;;;;;N;;;;;
+D2C2;HANGUL SYLLABLE TEULM;Lo;0;L;;;;;N;;;;;
+D2C3;HANGUL SYLLABLE TEULB;Lo;0;L;;;;;N;;;;;
+D2C4;HANGUL SYLLABLE TEULS;Lo;0;L;;;;;N;;;;;
+D2C5;HANGUL SYLLABLE TEULT;Lo;0;L;;;;;N;;;;;
+D2C6;HANGUL SYLLABLE TEULP;Lo;0;L;;;;;N;;;;;
+D2C7;HANGUL SYLLABLE TEULH;Lo;0;L;;;;;N;;;;;
+D2C8;HANGUL SYLLABLE TEUM;Lo;0;L;;;;;N;;;;;
+D2C9;HANGUL SYLLABLE TEUB;Lo;0;L;;;;;N;;;;;
+D2CA;HANGUL SYLLABLE TEUBS;Lo;0;L;;;;;N;;;;;
+D2CB;HANGUL SYLLABLE TEUS;Lo;0;L;;;;;N;;;;;
+D2CC;HANGUL SYLLABLE TEUSS;Lo;0;L;;;;;N;;;;;
+D2CD;HANGUL SYLLABLE TEUNG;Lo;0;L;;;;;N;;;;;
+D2CE;HANGUL SYLLABLE TEUJ;Lo;0;L;;;;;N;;;;;
+D2CF;HANGUL SYLLABLE TEUC;Lo;0;L;;;;;N;;;;;
+D2D0;HANGUL SYLLABLE TEUK;Lo;0;L;;;;;N;;;;;
+D2D1;HANGUL SYLLABLE TEUT;Lo;0;L;;;;;N;;;;;
+D2D2;HANGUL SYLLABLE TEUP;Lo;0;L;;;;;N;;;;;
+D2D3;HANGUL SYLLABLE TEUH;Lo;0;L;;;;;N;;;;;
+D2D4;HANGUL SYLLABLE TYI;Lo;0;L;;;;;N;;;;;
+D2D5;HANGUL SYLLABLE TYIG;Lo;0;L;;;;;N;;;;;
+D2D6;HANGUL SYLLABLE TYIGG;Lo;0;L;;;;;N;;;;;
+D2D7;HANGUL SYLLABLE TYIGS;Lo;0;L;;;;;N;;;;;
+D2D8;HANGUL SYLLABLE TYIN;Lo;0;L;;;;;N;;;;;
+D2D9;HANGUL SYLLABLE TYINI;Lo;0;L;;;;;N;;;;;
+D2DA;HANGUL SYLLABLE TYINH;Lo;0;L;;;;;N;;;;;
+D2DB;HANGUL SYLLABLE TYID;Lo;0;L;;;;;N;;;;;
+D2DC;HANGUL SYLLABLE TYIL;Lo;0;L;;;;;N;;;;;
+D2DD;HANGUL SYLLABLE TYILG;Lo;0;L;;;;;N;;;;;
+D2DE;HANGUL SYLLABLE TYILM;Lo;0;L;;;;;N;;;;;
+D2DF;HANGUL SYLLABLE TYILB;Lo;0;L;;;;;N;;;;;
+D2E0;HANGUL SYLLABLE TYILS;Lo;0;L;;;;;N;;;;;
+D2E1;HANGUL SYLLABLE TYILT;Lo;0;L;;;;;N;;;;;
+D2E2;HANGUL SYLLABLE TYILP;Lo;0;L;;;;;N;;;;;
+D2E3;HANGUL SYLLABLE TYILH;Lo;0;L;;;;;N;;;;;
+D2E4;HANGUL SYLLABLE TYIM;Lo;0;L;;;;;N;;;;;
+D2E5;HANGUL SYLLABLE TYIB;Lo;0;L;;;;;N;;;;;
+D2E6;HANGUL SYLLABLE TYIBS;Lo;0;L;;;;;N;;;;;
+D2E7;HANGUL SYLLABLE TYIS;Lo;0;L;;;;;N;;;;;
+D2E8;HANGUL SYLLABLE TYISS;Lo;0;L;;;;;N;;;;;
+D2E9;HANGUL SYLLABLE TYING;Lo;0;L;;;;;N;;;;;
+D2EA;HANGUL SYLLABLE TYIJ;Lo;0;L;;;;;N;;;;;
+D2EB;HANGUL SYLLABLE TYIC;Lo;0;L;;;;;N;;;;;
+D2EC;HANGUL SYLLABLE TYIK;Lo;0;L;;;;;N;;;;;
+D2ED;HANGUL SYLLABLE TYIT;Lo;0;L;;;;;N;;;;;
+D2EE;HANGUL SYLLABLE TYIP;Lo;0;L;;;;;N;;;;;
+D2EF;HANGUL SYLLABLE TYIH;Lo;0;L;;;;;N;;;;;
+D2F0;HANGUL SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+D2F1;HANGUL SYLLABLE TIG;Lo;0;L;;;;;N;;;;;
+D2F2;HANGUL SYLLABLE TIGG;Lo;0;L;;;;;N;;;;;
+D2F3;HANGUL SYLLABLE TIGS;Lo;0;L;;;;;N;;;;;
+D2F4;HANGUL SYLLABLE TIN;Lo;0;L;;;;;N;;;;;
+D2F5;HANGUL SYLLABLE TINI;Lo;0;L;;;;;N;;;;;
+D2F6;HANGUL SYLLABLE TINH;Lo;0;L;;;;;N;;;;;
+D2F7;HANGUL SYLLABLE TID;Lo;0;L;;;;;N;;;;;
+D2F8;HANGUL SYLLABLE TIL;Lo;0;L;;;;;N;;;;;
+D2F9;HANGUL SYLLABLE TILG;Lo;0;L;;;;;N;;;;;
+D2FA;HANGUL SYLLABLE TILM;Lo;0;L;;;;;N;;;;;
+D2FB;HANGUL SYLLABLE TILB;Lo;0;L;;;;;N;;;;;
+D2FC;HANGUL SYLLABLE TILS;Lo;0;L;;;;;N;;;;;
+D2FD;HANGUL SYLLABLE TILT;Lo;0;L;;;;;N;;;;;
+D2FE;HANGUL SYLLABLE TILP;Lo;0;L;;;;;N;;;;;
+D2FF;HANGUL SYLLABLE TILH;Lo;0;L;;;;;N;;;;;
+D300;HANGUL SYLLABLE TIM;Lo;0;L;;;;;N;;;;;
+D301;HANGUL SYLLABLE TIB;Lo;0;L;;;;;N;;;;;
+D302;HANGUL SYLLABLE TIBS;Lo;0;L;;;;;N;;;;;
+D303;HANGUL SYLLABLE TIS;Lo;0;L;;;;;N;;;;;
+D304;HANGUL SYLLABLE TISS;Lo;0;L;;;;;N;;;;;
+D305;HANGUL SYLLABLE TING;Lo;0;L;;;;;N;;;;;
+D306;HANGUL SYLLABLE TIJ;Lo;0;L;;;;;N;;;;;
+D307;HANGUL SYLLABLE TIC;Lo;0;L;;;;;N;;;;;
+D308;HANGUL SYLLABLE TIK;Lo;0;L;;;;;N;;;;;
+D309;HANGUL SYLLABLE TIT;Lo;0;L;;;;;N;;;;;
+D30A;HANGUL SYLLABLE TIP;Lo;0;L;;;;;N;;;;;
+D30B;HANGUL SYLLABLE TIH;Lo;0;L;;;;;N;;;;;
+D30C;HANGUL SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+D30D;HANGUL SYLLABLE PAG;Lo;0;L;;;;;N;;;;;
+D30E;HANGUL SYLLABLE PAGG;Lo;0;L;;;;;N;;;;;
+D30F;HANGUL SYLLABLE PAGS;Lo;0;L;;;;;N;;;;;
+D310;HANGUL SYLLABLE PAN;Lo;0;L;;;;;N;;;;;
+D311;HANGUL SYLLABLE PANI;Lo;0;L;;;;;N;;;;;
+D312;HANGUL SYLLABLE PANH;Lo;0;L;;;;;N;;;;;
+D313;HANGUL SYLLABLE PAD;Lo;0;L;;;;;N;;;;;
+D314;HANGUL SYLLABLE PAL;Lo;0;L;;;;;N;;;;;
+D315;HANGUL SYLLABLE PALG;Lo;0;L;;;;;N;;;;;
+D316;HANGUL SYLLABLE PALM;Lo;0;L;;;;;N;;;;;
+D317;HANGUL SYLLABLE PALB;Lo;0;L;;;;;N;;;;;
+D318;HANGUL SYLLABLE PALS;Lo;0;L;;;;;N;;;;;
+D319;HANGUL SYLLABLE PALT;Lo;0;L;;;;;N;;;;;
+D31A;HANGUL SYLLABLE PALP;Lo;0;L;;;;;N;;;;;
+D31B;HANGUL SYLLABLE PALH;Lo;0;L;;;;;N;;;;;
+D31C;HANGUL SYLLABLE PAM;Lo;0;L;;;;;N;;;;;
+D31D;HANGUL SYLLABLE PAB;Lo;0;L;;;;;N;;;;;
+D31E;HANGUL SYLLABLE PABS;Lo;0;L;;;;;N;;;;;
+D31F;HANGUL SYLLABLE PAS;Lo;0;L;;;;;N;;;;;
+D320;HANGUL SYLLABLE PASS;Lo;0;L;;;;;N;;;;;
+D321;HANGUL SYLLABLE PANG;Lo;0;L;;;;;N;;;;;
+D322;HANGUL SYLLABLE PAJ;Lo;0;L;;;;;N;;;;;
+D323;HANGUL SYLLABLE PAC;Lo;0;L;;;;;N;;;;;
+D324;HANGUL SYLLABLE PAK;Lo;0;L;;;;;N;;;;;
+D325;HANGUL SYLLABLE PAT;Lo;0;L;;;;;N;;;;;
+D326;HANGUL SYLLABLE PAP;Lo;0;L;;;;;N;;;;;
+D327;HANGUL SYLLABLE PAH;Lo;0;L;;;;;N;;;;;
+D328;HANGUL SYLLABLE PAE;Lo;0;L;;;;;N;;;;;
+D329;HANGUL SYLLABLE PAEG;Lo;0;L;;;;;N;;;;;
+D32A;HANGUL SYLLABLE PAEGG;Lo;0;L;;;;;N;;;;;
+D32B;HANGUL SYLLABLE PAEGS;Lo;0;L;;;;;N;;;;;
+D32C;HANGUL SYLLABLE PAEN;Lo;0;L;;;;;N;;;;;
+D32D;HANGUL SYLLABLE PAENI;Lo;0;L;;;;;N;;;;;
+D32E;HANGUL SYLLABLE PAENH;Lo;0;L;;;;;N;;;;;
+D32F;HANGUL SYLLABLE PAED;Lo;0;L;;;;;N;;;;;
+D330;HANGUL SYLLABLE PAEL;Lo;0;L;;;;;N;;;;;
+D331;HANGUL SYLLABLE PAELG;Lo;0;L;;;;;N;;;;;
+D332;HANGUL SYLLABLE PAELM;Lo;0;L;;;;;N;;;;;
+D333;HANGUL SYLLABLE PAELB;Lo;0;L;;;;;N;;;;;
+D334;HANGUL SYLLABLE PAELS;Lo;0;L;;;;;N;;;;;
+D335;HANGUL SYLLABLE PAELT;Lo;0;L;;;;;N;;;;;
+D336;HANGUL SYLLABLE PAELP;Lo;0;L;;;;;N;;;;;
+D337;HANGUL SYLLABLE PAELH;Lo;0;L;;;;;N;;;;;
+D338;HANGUL SYLLABLE PAEM;Lo;0;L;;;;;N;;;;;
+D339;HANGUL SYLLABLE PAEB;Lo;0;L;;;;;N;;;;;
+D33A;HANGUL SYLLABLE PAEBS;Lo;0;L;;;;;N;;;;;
+D33B;HANGUL SYLLABLE PAES;Lo;0;L;;;;;N;;;;;
+D33C;HANGUL SYLLABLE PAESS;Lo;0;L;;;;;N;;;;;
+D33D;HANGUL SYLLABLE PAENG;Lo;0;L;;;;;N;;;;;
+D33E;HANGUL SYLLABLE PAEJ;Lo;0;L;;;;;N;;;;;
+D33F;HANGUL SYLLABLE PAEC;Lo;0;L;;;;;N;;;;;
+D340;HANGUL SYLLABLE PAEK;Lo;0;L;;;;;N;;;;;
+D341;HANGUL SYLLABLE PAET;Lo;0;L;;;;;N;;;;;
+D342;HANGUL SYLLABLE PAEP;Lo;0;L;;;;;N;;;;;
+D343;HANGUL SYLLABLE PAEH;Lo;0;L;;;;;N;;;;;
+D344;HANGUL SYLLABLE PYA;Lo;0;L;;;;;N;;;;;
+D345;HANGUL SYLLABLE PYAG;Lo;0;L;;;;;N;;;;;
+D346;HANGUL SYLLABLE PYAGG;Lo;0;L;;;;;N;;;;;
+D347;HANGUL SYLLABLE PYAGS;Lo;0;L;;;;;N;;;;;
+D348;HANGUL SYLLABLE PYAN;Lo;0;L;;;;;N;;;;;
+D349;HANGUL SYLLABLE PYANI;Lo;0;L;;;;;N;;;;;
+D34A;HANGUL SYLLABLE PYANH;Lo;0;L;;;;;N;;;;;
+D34B;HANGUL SYLLABLE PYAD;Lo;0;L;;;;;N;;;;;
+D34C;HANGUL SYLLABLE PYAL;Lo;0;L;;;;;N;;;;;
+D34D;HANGUL SYLLABLE PYALG;Lo;0;L;;;;;N;;;;;
+D34E;HANGUL SYLLABLE PYALM;Lo;0;L;;;;;N;;;;;
+D34F;HANGUL SYLLABLE PYALB;Lo;0;L;;;;;N;;;;;
+D350;HANGUL SYLLABLE PYALS;Lo;0;L;;;;;N;;;;;
+D351;HANGUL SYLLABLE PYALT;Lo;0;L;;;;;N;;;;;
+D352;HANGUL SYLLABLE PYALP;Lo;0;L;;;;;N;;;;;
+D353;HANGUL SYLLABLE PYALH;Lo;0;L;;;;;N;;;;;
+D354;HANGUL SYLLABLE PYAM;Lo;0;L;;;;;N;;;;;
+D355;HANGUL SYLLABLE PYAB;Lo;0;L;;;;;N;;;;;
+D356;HANGUL SYLLABLE PYABS;Lo;0;L;;;;;N;;;;;
+D357;HANGUL SYLLABLE PYAS;Lo;0;L;;;;;N;;;;;
+D358;HANGUL SYLLABLE PYASS;Lo;0;L;;;;;N;;;;;
+D359;HANGUL SYLLABLE PYANG;Lo;0;L;;;;;N;;;;;
+D35A;HANGUL SYLLABLE PYAJ;Lo;0;L;;;;;N;;;;;
+D35B;HANGUL SYLLABLE PYAC;Lo;0;L;;;;;N;;;;;
+D35C;HANGUL SYLLABLE PYAK;Lo;0;L;;;;;N;;;;;
+D35D;HANGUL SYLLABLE PYAT;Lo;0;L;;;;;N;;;;;
+D35E;HANGUL SYLLABLE PYAP;Lo;0;L;;;;;N;;;;;
+D35F;HANGUL SYLLABLE PYAH;Lo;0;L;;;;;N;;;;;
+D360;HANGUL SYLLABLE PYAE;Lo;0;L;;;;;N;;;;;
+D361;HANGUL SYLLABLE PYAEG;Lo;0;L;;;;;N;;;;;
+D362;HANGUL SYLLABLE PYAEGG;Lo;0;L;;;;;N;;;;;
+D363;HANGUL SYLLABLE PYAEGS;Lo;0;L;;;;;N;;;;;
+D364;HANGUL SYLLABLE PYAEN;Lo;0;L;;;;;N;;;;;
+D365;HANGUL SYLLABLE PYAENI;Lo;0;L;;;;;N;;;;;
+D366;HANGUL SYLLABLE PYAENH;Lo;0;L;;;;;N;;;;;
+D367;HANGUL SYLLABLE PYAED;Lo;0;L;;;;;N;;;;;
+D368;HANGUL SYLLABLE PYAEL;Lo;0;L;;;;;N;;;;;
+D369;HANGUL SYLLABLE PYAELG;Lo;0;L;;;;;N;;;;;
+D36A;HANGUL SYLLABLE PYAELM;Lo;0;L;;;;;N;;;;;
+D36B;HANGUL SYLLABLE PYAELB;Lo;0;L;;;;;N;;;;;
+D36C;HANGUL SYLLABLE PYAELS;Lo;0;L;;;;;N;;;;;
+D36D;HANGUL SYLLABLE PYAELT;Lo;0;L;;;;;N;;;;;
+D36E;HANGUL SYLLABLE PYAELP;Lo;0;L;;;;;N;;;;;
+D36F;HANGUL SYLLABLE PYAELH;Lo;0;L;;;;;N;;;;;
+D370;HANGUL SYLLABLE PYAEM;Lo;0;L;;;;;N;;;;;
+D371;HANGUL SYLLABLE PYAEB;Lo;0;L;;;;;N;;;;;
+D372;HANGUL SYLLABLE PYAEBS;Lo;0;L;;;;;N;;;;;
+D373;HANGUL SYLLABLE PYAES;Lo;0;L;;;;;N;;;;;
+D374;HANGUL SYLLABLE PYAESS;Lo;0;L;;;;;N;;;;;
+D375;HANGUL SYLLABLE PYAENG;Lo;0;L;;;;;N;;;;;
+D376;HANGUL SYLLABLE PYAEJ;Lo;0;L;;;;;N;;;;;
+D377;HANGUL SYLLABLE PYAEC;Lo;0;L;;;;;N;;;;;
+D378;HANGUL SYLLABLE PYAEK;Lo;0;L;;;;;N;;;;;
+D379;HANGUL SYLLABLE PYAET;Lo;0;L;;;;;N;;;;;
+D37A;HANGUL SYLLABLE PYAEP;Lo;0;L;;;;;N;;;;;
+D37B;HANGUL SYLLABLE PYAEH;Lo;0;L;;;;;N;;;;;
+D37C;HANGUL SYLLABLE PEO;Lo;0;L;;;;;N;;;;;
+D37D;HANGUL SYLLABLE PEOG;Lo;0;L;;;;;N;;;;;
+D37E;HANGUL SYLLABLE PEOGG;Lo;0;L;;;;;N;;;;;
+D37F;HANGUL SYLLABLE PEOGS;Lo;0;L;;;;;N;;;;;
+D380;HANGUL SYLLABLE PEON;Lo;0;L;;;;;N;;;;;
+D381;HANGUL SYLLABLE PEONI;Lo;0;L;;;;;N;;;;;
+D382;HANGUL SYLLABLE PEONH;Lo;0;L;;;;;N;;;;;
+D383;HANGUL SYLLABLE PEOD;Lo;0;L;;;;;N;;;;;
+D384;HANGUL SYLLABLE PEOL;Lo;0;L;;;;;N;;;;;
+D385;HANGUL SYLLABLE PEOLG;Lo;0;L;;;;;N;;;;;
+D386;HANGUL SYLLABLE PEOLM;Lo;0;L;;;;;N;;;;;
+D387;HANGUL SYLLABLE PEOLB;Lo;0;L;;;;;N;;;;;
+D388;HANGUL SYLLABLE PEOLS;Lo;0;L;;;;;N;;;;;
+D389;HANGUL SYLLABLE PEOLT;Lo;0;L;;;;;N;;;;;
+D38A;HANGUL SYLLABLE PEOLP;Lo;0;L;;;;;N;;;;;
+D38B;HANGUL SYLLABLE PEOLH;Lo;0;L;;;;;N;;;;;
+D38C;HANGUL SYLLABLE PEOM;Lo;0;L;;;;;N;;;;;
+D38D;HANGUL SYLLABLE PEOB;Lo;0;L;;;;;N;;;;;
+D38E;HANGUL SYLLABLE PEOBS;Lo;0;L;;;;;N;;;;;
+D38F;HANGUL SYLLABLE PEOS;Lo;0;L;;;;;N;;;;;
+D390;HANGUL SYLLABLE PEOSS;Lo;0;L;;;;;N;;;;;
+D391;HANGUL SYLLABLE PEONG;Lo;0;L;;;;;N;;;;;
+D392;HANGUL SYLLABLE PEOJ;Lo;0;L;;;;;N;;;;;
+D393;HANGUL SYLLABLE PEOC;Lo;0;L;;;;;N;;;;;
+D394;HANGUL SYLLABLE PEOK;Lo;0;L;;;;;N;;;;;
+D395;HANGUL SYLLABLE PEOT;Lo;0;L;;;;;N;;;;;
+D396;HANGUL SYLLABLE PEOP;Lo;0;L;;;;;N;;;;;
+D397;HANGUL SYLLABLE PEOH;Lo;0;L;;;;;N;;;;;
+D398;HANGUL SYLLABLE PE;Lo;0;L;;;;;N;;;;;
+D399;HANGUL SYLLABLE PEG;Lo;0;L;;;;;N;;;;;
+D39A;HANGUL SYLLABLE PEGG;Lo;0;L;;;;;N;;;;;
+D39B;HANGUL SYLLABLE PEGS;Lo;0;L;;;;;N;;;;;
+D39C;HANGUL SYLLABLE PEN;Lo;0;L;;;;;N;;;;;
+D39D;HANGUL SYLLABLE PENI;Lo;0;L;;;;;N;;;;;
+D39E;HANGUL SYLLABLE PENH;Lo;0;L;;;;;N;;;;;
+D39F;HANGUL SYLLABLE PED;Lo;0;L;;;;;N;;;;;
+D3A0;HANGUL SYLLABLE PEL;Lo;0;L;;;;;N;;;;;
+D3A1;HANGUL SYLLABLE PELG;Lo;0;L;;;;;N;;;;;
+D3A2;HANGUL SYLLABLE PELM;Lo;0;L;;;;;N;;;;;
+D3A3;HANGUL SYLLABLE PELB;Lo;0;L;;;;;N;;;;;
+D3A4;HANGUL SYLLABLE PELS;Lo;0;L;;;;;N;;;;;
+D3A5;HANGUL SYLLABLE PELT;Lo;0;L;;;;;N;;;;;
+D3A6;HANGUL SYLLABLE PELP;Lo;0;L;;;;;N;;;;;
+D3A7;HANGUL SYLLABLE PELH;Lo;0;L;;;;;N;;;;;
+D3A8;HANGUL SYLLABLE PEM;Lo;0;L;;;;;N;;;;;
+D3A9;HANGUL SYLLABLE PEB;Lo;0;L;;;;;N;;;;;
+D3AA;HANGUL SYLLABLE PEBS;Lo;0;L;;;;;N;;;;;
+D3AB;HANGUL SYLLABLE PES;Lo;0;L;;;;;N;;;;;
+D3AC;HANGUL SYLLABLE PESS;Lo;0;L;;;;;N;;;;;
+D3AD;HANGUL SYLLABLE PENG;Lo;0;L;;;;;N;;;;;
+D3AE;HANGUL SYLLABLE PEJ;Lo;0;L;;;;;N;;;;;
+D3AF;HANGUL SYLLABLE PEC;Lo;0;L;;;;;N;;;;;
+D3B0;HANGUL SYLLABLE PEK;Lo;0;L;;;;;N;;;;;
+D3B1;HANGUL SYLLABLE PET;Lo;0;L;;;;;N;;;;;
+D3B2;HANGUL SYLLABLE PEP;Lo;0;L;;;;;N;;;;;
+D3B3;HANGUL SYLLABLE PEH;Lo;0;L;;;;;N;;;;;
+D3B4;HANGUL SYLLABLE PYEO;Lo;0;L;;;;;N;;;;;
+D3B5;HANGUL SYLLABLE PYEOG;Lo;0;L;;;;;N;;;;;
+D3B6;HANGUL SYLLABLE PYEOGG;Lo;0;L;;;;;N;;;;;
+D3B7;HANGUL SYLLABLE PYEOGS;Lo;0;L;;;;;N;;;;;
+D3B8;HANGUL SYLLABLE PYEON;Lo;0;L;;;;;N;;;;;
+D3B9;HANGUL SYLLABLE PYEONI;Lo;0;L;;;;;N;;;;;
+D3BA;HANGUL SYLLABLE PYEONH;Lo;0;L;;;;;N;;;;;
+D3BB;HANGUL SYLLABLE PYEOD;Lo;0;L;;;;;N;;;;;
+D3BC;HANGUL SYLLABLE PYEOL;Lo;0;L;;;;;N;;;;;
+D3BD;HANGUL SYLLABLE PYEOLG;Lo;0;L;;;;;N;;;;;
+D3BE;HANGUL SYLLABLE PYEOLM;Lo;0;L;;;;;N;;;;;
+D3BF;HANGUL SYLLABLE PYEOLB;Lo;0;L;;;;;N;;;;;
+D3C0;HANGUL SYLLABLE PYEOLS;Lo;0;L;;;;;N;;;;;
+D3C1;HANGUL SYLLABLE PYEOLT;Lo;0;L;;;;;N;;;;;
+D3C2;HANGUL SYLLABLE PYEOLP;Lo;0;L;;;;;N;;;;;
+D3C3;HANGUL SYLLABLE PYEOLH;Lo;0;L;;;;;N;;;;;
+D3C4;HANGUL SYLLABLE PYEOM;Lo;0;L;;;;;N;;;;;
+D3C5;HANGUL SYLLABLE PYEOB;Lo;0;L;;;;;N;;;;;
+D3C6;HANGUL SYLLABLE PYEOBS;Lo;0;L;;;;;N;;;;;
+D3C7;HANGUL SYLLABLE PYEOS;Lo;0;L;;;;;N;;;;;
+D3C8;HANGUL SYLLABLE PYEOSS;Lo;0;L;;;;;N;;;;;
+D3C9;HANGUL SYLLABLE PYEONG;Lo;0;L;;;;;N;;;;;
+D3CA;HANGUL SYLLABLE PYEOJ;Lo;0;L;;;;;N;;;;;
+D3CB;HANGUL SYLLABLE PYEOC;Lo;0;L;;;;;N;;;;;
+D3CC;HANGUL SYLLABLE PYEOK;Lo;0;L;;;;;N;;;;;
+D3CD;HANGUL SYLLABLE PYEOT;Lo;0;L;;;;;N;;;;;
+D3CE;HANGUL SYLLABLE PYEOP;Lo;0;L;;;;;N;;;;;
+D3CF;HANGUL SYLLABLE PYEOH;Lo;0;L;;;;;N;;;;;
+D3D0;HANGUL SYLLABLE PYE;Lo;0;L;;;;;N;;;;;
+D3D1;HANGUL SYLLABLE PYEG;Lo;0;L;;;;;N;;;;;
+D3D2;HANGUL SYLLABLE PYEGG;Lo;0;L;;;;;N;;;;;
+D3D3;HANGUL SYLLABLE PYEGS;Lo;0;L;;;;;N;;;;;
+D3D4;HANGUL SYLLABLE PYEN;Lo;0;L;;;;;N;;;;;
+D3D5;HANGUL SYLLABLE PYENI;Lo;0;L;;;;;N;;;;;
+D3D6;HANGUL SYLLABLE PYENH;Lo;0;L;;;;;N;;;;;
+D3D7;HANGUL SYLLABLE PYED;Lo;0;L;;;;;N;;;;;
+D3D8;HANGUL SYLLABLE PYEL;Lo;0;L;;;;;N;;;;;
+D3D9;HANGUL SYLLABLE PYELG;Lo;0;L;;;;;N;;;;;
+D3DA;HANGUL SYLLABLE PYELM;Lo;0;L;;;;;N;;;;;
+D3DB;HANGUL SYLLABLE PYELB;Lo;0;L;;;;;N;;;;;
+D3DC;HANGUL SYLLABLE PYELS;Lo;0;L;;;;;N;;;;;
+D3DD;HANGUL SYLLABLE PYELT;Lo;0;L;;;;;N;;;;;
+D3DE;HANGUL SYLLABLE PYELP;Lo;0;L;;;;;N;;;;;
+D3DF;HANGUL SYLLABLE PYELH;Lo;0;L;;;;;N;;;;;
+D3E0;HANGUL SYLLABLE PYEM;Lo;0;L;;;;;N;;;;;
+D3E1;HANGUL SYLLABLE PYEB;Lo;0;L;;;;;N;;;;;
+D3E2;HANGUL SYLLABLE PYEBS;Lo;0;L;;;;;N;;;;;
+D3E3;HANGUL SYLLABLE PYES;Lo;0;L;;;;;N;;;;;
+D3E4;HANGUL SYLLABLE PYESS;Lo;0;L;;;;;N;;;;;
+D3E5;HANGUL SYLLABLE PYENG;Lo;0;L;;;;;N;;;;;
+D3E6;HANGUL SYLLABLE PYEJ;Lo;0;L;;;;;N;;;;;
+D3E7;HANGUL SYLLABLE PYEC;Lo;0;L;;;;;N;;;;;
+D3E8;HANGUL SYLLABLE PYEK;Lo;0;L;;;;;N;;;;;
+D3E9;HANGUL SYLLABLE PYET;Lo;0;L;;;;;N;;;;;
+D3EA;HANGUL SYLLABLE PYEP;Lo;0;L;;;;;N;;;;;
+D3EB;HANGUL SYLLABLE PYEH;Lo;0;L;;;;;N;;;;;
+D3EC;HANGUL SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+D3ED;HANGUL SYLLABLE POG;Lo;0;L;;;;;N;;;;;
+D3EE;HANGUL SYLLABLE POGG;Lo;0;L;;;;;N;;;;;
+D3EF;HANGUL SYLLABLE POGS;Lo;0;L;;;;;N;;;;;
+D3F0;HANGUL SYLLABLE PON;Lo;0;L;;;;;N;;;;;
+D3F1;HANGUL SYLLABLE PONI;Lo;0;L;;;;;N;;;;;
+D3F2;HANGUL SYLLABLE PONH;Lo;0;L;;;;;N;;;;;
+D3F3;HANGUL SYLLABLE POD;Lo;0;L;;;;;N;;;;;
+D3F4;HANGUL SYLLABLE POL;Lo;0;L;;;;;N;;;;;
+D3F5;HANGUL SYLLABLE POLG;Lo;0;L;;;;;N;;;;;
+D3F6;HANGUL SYLLABLE POLM;Lo;0;L;;;;;N;;;;;
+D3F7;HANGUL SYLLABLE POLB;Lo;0;L;;;;;N;;;;;
+D3F8;HANGUL SYLLABLE POLS;Lo;0;L;;;;;N;;;;;
+D3F9;HANGUL SYLLABLE POLT;Lo;0;L;;;;;N;;;;;
+D3FA;HANGUL SYLLABLE POLP;Lo;0;L;;;;;N;;;;;
+D3FB;HANGUL SYLLABLE POLH;Lo;0;L;;;;;N;;;;;
+D3FC;HANGUL SYLLABLE POM;Lo;0;L;;;;;N;;;;;
+D3FD;HANGUL SYLLABLE POB;Lo;0;L;;;;;N;;;;;
+D3FE;HANGUL SYLLABLE POBS;Lo;0;L;;;;;N;;;;;
+D3FF;HANGUL SYLLABLE POS;Lo;0;L;;;;;N;;;;;
+D400;HANGUL SYLLABLE POSS;Lo;0;L;;;;;N;;;;;
+D401;HANGUL SYLLABLE PONG;Lo;0;L;;;;;N;;;;;
+D402;HANGUL SYLLABLE POJ;Lo;0;L;;;;;N;;;;;
+D403;HANGUL SYLLABLE POC;Lo;0;L;;;;;N;;;;;
+D404;HANGUL SYLLABLE POK;Lo;0;L;;;;;N;;;;;
+D405;HANGUL SYLLABLE POT;Lo;0;L;;;;;N;;;;;
+D406;HANGUL SYLLABLE POP;Lo;0;L;;;;;N;;;;;
+D407;HANGUL SYLLABLE POH;Lo;0;L;;;;;N;;;;;
+D408;HANGUL SYLLABLE PWA;Lo;0;L;;;;;N;;;;;
+D409;HANGUL SYLLABLE PWAG;Lo;0;L;;;;;N;;;;;
+D40A;HANGUL SYLLABLE PWAGG;Lo;0;L;;;;;N;;;;;
+D40B;HANGUL SYLLABLE PWAGS;Lo;0;L;;;;;N;;;;;
+D40C;HANGUL SYLLABLE PWAN;Lo;0;L;;;;;N;;;;;
+D40D;HANGUL SYLLABLE PWANI;Lo;0;L;;;;;N;;;;;
+D40E;HANGUL SYLLABLE PWANH;Lo;0;L;;;;;N;;;;;
+D40F;HANGUL SYLLABLE PWAD;Lo;0;L;;;;;N;;;;;
+D410;HANGUL SYLLABLE PWAL;Lo;0;L;;;;;N;;;;;
+D411;HANGUL SYLLABLE PWALG;Lo;0;L;;;;;N;;;;;
+D412;HANGUL SYLLABLE PWALM;Lo;0;L;;;;;N;;;;;
+D413;HANGUL SYLLABLE PWALB;Lo;0;L;;;;;N;;;;;
+D414;HANGUL SYLLABLE PWALS;Lo;0;L;;;;;N;;;;;
+D415;HANGUL SYLLABLE PWALT;Lo;0;L;;;;;N;;;;;
+D416;HANGUL SYLLABLE PWALP;Lo;0;L;;;;;N;;;;;
+D417;HANGUL SYLLABLE PWALH;Lo;0;L;;;;;N;;;;;
+D418;HANGUL SYLLABLE PWAM;Lo;0;L;;;;;N;;;;;
+D419;HANGUL SYLLABLE PWAB;Lo;0;L;;;;;N;;;;;
+D41A;HANGUL SYLLABLE PWABS;Lo;0;L;;;;;N;;;;;
+D41B;HANGUL SYLLABLE PWAS;Lo;0;L;;;;;N;;;;;
+D41C;HANGUL SYLLABLE PWASS;Lo;0;L;;;;;N;;;;;
+D41D;HANGUL SYLLABLE PWANG;Lo;0;L;;;;;N;;;;;
+D41E;HANGUL SYLLABLE PWAJ;Lo;0;L;;;;;N;;;;;
+D41F;HANGUL SYLLABLE PWAC;Lo;0;L;;;;;N;;;;;
+D420;HANGUL SYLLABLE PWAK;Lo;0;L;;;;;N;;;;;
+D421;HANGUL SYLLABLE PWAT;Lo;0;L;;;;;N;;;;;
+D422;HANGUL SYLLABLE PWAP;Lo;0;L;;;;;N;;;;;
+D423;HANGUL SYLLABLE PWAH;Lo;0;L;;;;;N;;;;;
+D424;HANGUL SYLLABLE PWAE;Lo;0;L;;;;;N;;;;;
+D425;HANGUL SYLLABLE PWAEG;Lo;0;L;;;;;N;;;;;
+D426;HANGUL SYLLABLE PWAEGG;Lo;0;L;;;;;N;;;;;
+D427;HANGUL SYLLABLE PWAEGS;Lo;0;L;;;;;N;;;;;
+D428;HANGUL SYLLABLE PWAEN;Lo;0;L;;;;;N;;;;;
+D429;HANGUL SYLLABLE PWAENI;Lo;0;L;;;;;N;;;;;
+D42A;HANGUL SYLLABLE PWAENH;Lo;0;L;;;;;N;;;;;
+D42B;HANGUL SYLLABLE PWAED;Lo;0;L;;;;;N;;;;;
+D42C;HANGUL SYLLABLE PWAEL;Lo;0;L;;;;;N;;;;;
+D42D;HANGUL SYLLABLE PWAELG;Lo;0;L;;;;;N;;;;;
+D42E;HANGUL SYLLABLE PWAELM;Lo;0;L;;;;;N;;;;;
+D42F;HANGUL SYLLABLE PWAELB;Lo;0;L;;;;;N;;;;;
+D430;HANGUL SYLLABLE PWAELS;Lo;0;L;;;;;N;;;;;
+D431;HANGUL SYLLABLE PWAELT;Lo;0;L;;;;;N;;;;;
+D432;HANGUL SYLLABLE PWAELP;Lo;0;L;;;;;N;;;;;
+D433;HANGUL SYLLABLE PWAELH;Lo;0;L;;;;;N;;;;;
+D434;HANGUL SYLLABLE PWAEM;Lo;0;L;;;;;N;;;;;
+D435;HANGUL SYLLABLE PWAEB;Lo;0;L;;;;;N;;;;;
+D436;HANGUL SYLLABLE PWAEBS;Lo;0;L;;;;;N;;;;;
+D437;HANGUL SYLLABLE PWAES;Lo;0;L;;;;;N;;;;;
+D438;HANGUL SYLLABLE PWAESS;Lo;0;L;;;;;N;;;;;
+D439;HANGUL SYLLABLE PWAENG;Lo;0;L;;;;;N;;;;;
+D43A;HANGUL SYLLABLE PWAEJ;Lo;0;L;;;;;N;;;;;
+D43B;HANGUL SYLLABLE PWAEC;Lo;0;L;;;;;N;;;;;
+D43C;HANGUL SYLLABLE PWAEK;Lo;0;L;;;;;N;;;;;
+D43D;HANGUL SYLLABLE PWAET;Lo;0;L;;;;;N;;;;;
+D43E;HANGUL SYLLABLE PWAEP;Lo;0;L;;;;;N;;;;;
+D43F;HANGUL SYLLABLE PWAEH;Lo;0;L;;;;;N;;;;;
+D440;HANGUL SYLLABLE POE;Lo;0;L;;;;;N;;;;;
+D441;HANGUL SYLLABLE POEG;Lo;0;L;;;;;N;;;;;
+D442;HANGUL SYLLABLE POEGG;Lo;0;L;;;;;N;;;;;
+D443;HANGUL SYLLABLE POEGS;Lo;0;L;;;;;N;;;;;
+D444;HANGUL SYLLABLE POEN;Lo;0;L;;;;;N;;;;;
+D445;HANGUL SYLLABLE POENI;Lo;0;L;;;;;N;;;;;
+D446;HANGUL SYLLABLE POENH;Lo;0;L;;;;;N;;;;;
+D447;HANGUL SYLLABLE POED;Lo;0;L;;;;;N;;;;;
+D448;HANGUL SYLLABLE POEL;Lo;0;L;;;;;N;;;;;
+D449;HANGUL SYLLABLE POELG;Lo;0;L;;;;;N;;;;;
+D44A;HANGUL SYLLABLE POELM;Lo;0;L;;;;;N;;;;;
+D44B;HANGUL SYLLABLE POELB;Lo;0;L;;;;;N;;;;;
+D44C;HANGUL SYLLABLE POELS;Lo;0;L;;;;;N;;;;;
+D44D;HANGUL SYLLABLE POELT;Lo;0;L;;;;;N;;;;;
+D44E;HANGUL SYLLABLE POELP;Lo;0;L;;;;;N;;;;;
+D44F;HANGUL SYLLABLE POELH;Lo;0;L;;;;;N;;;;;
+D450;HANGUL SYLLABLE POEM;Lo;0;L;;;;;N;;;;;
+D451;HANGUL SYLLABLE POEB;Lo;0;L;;;;;N;;;;;
+D452;HANGUL SYLLABLE POEBS;Lo;0;L;;;;;N;;;;;
+D453;HANGUL SYLLABLE POES;Lo;0;L;;;;;N;;;;;
+D454;HANGUL SYLLABLE POESS;Lo;0;L;;;;;N;;;;;
+D455;HANGUL SYLLABLE POENG;Lo;0;L;;;;;N;;;;;
+D456;HANGUL SYLLABLE POEJ;Lo;0;L;;;;;N;;;;;
+D457;HANGUL SYLLABLE POEC;Lo;0;L;;;;;N;;;;;
+D458;HANGUL SYLLABLE POEK;Lo;0;L;;;;;N;;;;;
+D459;HANGUL SYLLABLE POET;Lo;0;L;;;;;N;;;;;
+D45A;HANGUL SYLLABLE POEP;Lo;0;L;;;;;N;;;;;
+D45B;HANGUL SYLLABLE POEH;Lo;0;L;;;;;N;;;;;
+D45C;HANGUL SYLLABLE PYO;Lo;0;L;;;;;N;;;;;
+D45D;HANGUL SYLLABLE PYOG;Lo;0;L;;;;;N;;;;;
+D45E;HANGUL SYLLABLE PYOGG;Lo;0;L;;;;;N;;;;;
+D45F;HANGUL SYLLABLE PYOGS;Lo;0;L;;;;;N;;;;;
+D460;HANGUL SYLLABLE PYON;Lo;0;L;;;;;N;;;;;
+D461;HANGUL SYLLABLE PYONI;Lo;0;L;;;;;N;;;;;
+D462;HANGUL SYLLABLE PYONH;Lo;0;L;;;;;N;;;;;
+D463;HANGUL SYLLABLE PYOD;Lo;0;L;;;;;N;;;;;
+D464;HANGUL SYLLABLE PYOL;Lo;0;L;;;;;N;;;;;
+D465;HANGUL SYLLABLE PYOLG;Lo;0;L;;;;;N;;;;;
+D466;HANGUL SYLLABLE PYOLM;Lo;0;L;;;;;N;;;;;
+D467;HANGUL SYLLABLE PYOLB;Lo;0;L;;;;;N;;;;;
+D468;HANGUL SYLLABLE PYOLS;Lo;0;L;;;;;N;;;;;
+D469;HANGUL SYLLABLE PYOLT;Lo;0;L;;;;;N;;;;;
+D46A;HANGUL SYLLABLE PYOLP;Lo;0;L;;;;;N;;;;;
+D46B;HANGUL SYLLABLE PYOLH;Lo;0;L;;;;;N;;;;;
+D46C;HANGUL SYLLABLE PYOM;Lo;0;L;;;;;N;;;;;
+D46D;HANGUL SYLLABLE PYOB;Lo;0;L;;;;;N;;;;;
+D46E;HANGUL SYLLABLE PYOBS;Lo;0;L;;;;;N;;;;;
+D46F;HANGUL SYLLABLE PYOS;Lo;0;L;;;;;N;;;;;
+D470;HANGUL SYLLABLE PYOSS;Lo;0;L;;;;;N;;;;;
+D471;HANGUL SYLLABLE PYONG;Lo;0;L;;;;;N;;;;;
+D472;HANGUL SYLLABLE PYOJ;Lo;0;L;;;;;N;;;;;
+D473;HANGUL SYLLABLE PYOC;Lo;0;L;;;;;N;;;;;
+D474;HANGUL SYLLABLE PYOK;Lo;0;L;;;;;N;;;;;
+D475;HANGUL SYLLABLE PYOT;Lo;0;L;;;;;N;;;;;
+D476;HANGUL SYLLABLE PYOP;Lo;0;L;;;;;N;;;;;
+D477;HANGUL SYLLABLE PYOH;Lo;0;L;;;;;N;;;;;
+D478;HANGUL SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+D479;HANGUL SYLLABLE PUG;Lo;0;L;;;;;N;;;;;
+D47A;HANGUL SYLLABLE PUGG;Lo;0;L;;;;;N;;;;;
+D47B;HANGUL SYLLABLE PUGS;Lo;0;L;;;;;N;;;;;
+D47C;HANGUL SYLLABLE PUN;Lo;0;L;;;;;N;;;;;
+D47D;HANGUL SYLLABLE PUNI;Lo;0;L;;;;;N;;;;;
+D47E;HANGUL SYLLABLE PUNH;Lo;0;L;;;;;N;;;;;
+D47F;HANGUL SYLLABLE PUD;Lo;0;L;;;;;N;;;;;
+D480;HANGUL SYLLABLE PUL;Lo;0;L;;;;;N;;;;;
+D481;HANGUL SYLLABLE PULG;Lo;0;L;;;;;N;;;;;
+D482;HANGUL SYLLABLE PULM;Lo;0;L;;;;;N;;;;;
+D483;HANGUL SYLLABLE PULB;Lo;0;L;;;;;N;;;;;
+D484;HANGUL SYLLABLE PULS;Lo;0;L;;;;;N;;;;;
+D485;HANGUL SYLLABLE PULT;Lo;0;L;;;;;N;;;;;
+D486;HANGUL SYLLABLE PULP;Lo;0;L;;;;;N;;;;;
+D487;HANGUL SYLLABLE PULH;Lo;0;L;;;;;N;;;;;
+D488;HANGUL SYLLABLE PUM;Lo;0;L;;;;;N;;;;;
+D489;HANGUL SYLLABLE PUB;Lo;0;L;;;;;N;;;;;
+D48A;HANGUL SYLLABLE PUBS;Lo;0;L;;;;;N;;;;;
+D48B;HANGUL SYLLABLE PUS;Lo;0;L;;;;;N;;;;;
+D48C;HANGUL SYLLABLE PUSS;Lo;0;L;;;;;N;;;;;
+D48D;HANGUL SYLLABLE PUNG;Lo;0;L;;;;;N;;;;;
+D48E;HANGUL SYLLABLE PUJ;Lo;0;L;;;;;N;;;;;
+D48F;HANGUL SYLLABLE PUC;Lo;0;L;;;;;N;;;;;
+D490;HANGUL SYLLABLE PUK;Lo;0;L;;;;;N;;;;;
+D491;HANGUL SYLLABLE PUT;Lo;0;L;;;;;N;;;;;
+D492;HANGUL SYLLABLE PUP;Lo;0;L;;;;;N;;;;;
+D493;HANGUL SYLLABLE PUH;Lo;0;L;;;;;N;;;;;
+D494;HANGUL SYLLABLE PWEO;Lo;0;L;;;;;N;;;;;
+D495;HANGUL SYLLABLE PWEOG;Lo;0;L;;;;;N;;;;;
+D496;HANGUL SYLLABLE PWEOGG;Lo;0;L;;;;;N;;;;;
+D497;HANGUL SYLLABLE PWEOGS;Lo;0;L;;;;;N;;;;;
+D498;HANGUL SYLLABLE PWEON;Lo;0;L;;;;;N;;;;;
+D499;HANGUL SYLLABLE PWEONI;Lo;0;L;;;;;N;;;;;
+D49A;HANGUL SYLLABLE PWEONH;Lo;0;L;;;;;N;;;;;
+D49B;HANGUL SYLLABLE PWEOD;Lo;0;L;;;;;N;;;;;
+D49C;HANGUL SYLLABLE PWEOL;Lo;0;L;;;;;N;;;;;
+D49D;HANGUL SYLLABLE PWEOLG;Lo;0;L;;;;;N;;;;;
+D49E;HANGUL SYLLABLE PWEOLM;Lo;0;L;;;;;N;;;;;
+D49F;HANGUL SYLLABLE PWEOLB;Lo;0;L;;;;;N;;;;;
+D4A0;HANGUL SYLLABLE PWEOLS;Lo;0;L;;;;;N;;;;;
+D4A1;HANGUL SYLLABLE PWEOLT;Lo;0;L;;;;;N;;;;;
+D4A2;HANGUL SYLLABLE PWEOLP;Lo;0;L;;;;;N;;;;;
+D4A3;HANGUL SYLLABLE PWEOLH;Lo;0;L;;;;;N;;;;;
+D4A4;HANGUL SYLLABLE PWEOM;Lo;0;L;;;;;N;;;;;
+D4A5;HANGUL SYLLABLE PWEOB;Lo;0;L;;;;;N;;;;;
+D4A6;HANGUL SYLLABLE PWEOBS;Lo;0;L;;;;;N;;;;;
+D4A7;HANGUL SYLLABLE PWEOS;Lo;0;L;;;;;N;;;;;
+D4A8;HANGUL SYLLABLE PWEOSS;Lo;0;L;;;;;N;;;;;
+D4A9;HANGUL SYLLABLE PWEONG;Lo;0;L;;;;;N;;;;;
+D4AA;HANGUL SYLLABLE PWEOJ;Lo;0;L;;;;;N;;;;;
+D4AB;HANGUL SYLLABLE PWEOC;Lo;0;L;;;;;N;;;;;
+D4AC;HANGUL SYLLABLE PWEOK;Lo;0;L;;;;;N;;;;;
+D4AD;HANGUL SYLLABLE PWEOT;Lo;0;L;;;;;N;;;;;
+D4AE;HANGUL SYLLABLE PWEOP;Lo;0;L;;;;;N;;;;;
+D4AF;HANGUL SYLLABLE PWEOH;Lo;0;L;;;;;N;;;;;
+D4B0;HANGUL SYLLABLE PWE;Lo;0;L;;;;;N;;;;;
+D4B1;HANGUL SYLLABLE PWEG;Lo;0;L;;;;;N;;;;;
+D4B2;HANGUL SYLLABLE PWEGG;Lo;0;L;;;;;N;;;;;
+D4B3;HANGUL SYLLABLE PWEGS;Lo;0;L;;;;;N;;;;;
+D4B4;HANGUL SYLLABLE PWEN;Lo;0;L;;;;;N;;;;;
+D4B5;HANGUL SYLLABLE PWENI;Lo;0;L;;;;;N;;;;;
+D4B6;HANGUL SYLLABLE PWENH;Lo;0;L;;;;;N;;;;;
+D4B7;HANGUL SYLLABLE PWED;Lo;0;L;;;;;N;;;;;
+D4B8;HANGUL SYLLABLE PWEL;Lo;0;L;;;;;N;;;;;
+D4B9;HANGUL SYLLABLE PWELG;Lo;0;L;;;;;N;;;;;
+D4BA;HANGUL SYLLABLE PWELM;Lo;0;L;;;;;N;;;;;
+D4BB;HANGUL SYLLABLE PWELB;Lo;0;L;;;;;N;;;;;
+D4BC;HANGUL SYLLABLE PWELS;Lo;0;L;;;;;N;;;;;
+D4BD;HANGUL SYLLABLE PWELT;Lo;0;L;;;;;N;;;;;
+D4BE;HANGUL SYLLABLE PWELP;Lo;0;L;;;;;N;;;;;
+D4BF;HANGUL SYLLABLE PWELH;Lo;0;L;;;;;N;;;;;
+D4C0;HANGUL SYLLABLE PWEM;Lo;0;L;;;;;N;;;;;
+D4C1;HANGUL SYLLABLE PWEB;Lo;0;L;;;;;N;;;;;
+D4C2;HANGUL SYLLABLE PWEBS;Lo;0;L;;;;;N;;;;;
+D4C3;HANGUL SYLLABLE PWES;Lo;0;L;;;;;N;;;;;
+D4C4;HANGUL SYLLABLE PWESS;Lo;0;L;;;;;N;;;;;
+D4C5;HANGUL SYLLABLE PWENG;Lo;0;L;;;;;N;;;;;
+D4C6;HANGUL SYLLABLE PWEJ;Lo;0;L;;;;;N;;;;;
+D4C7;HANGUL SYLLABLE PWEC;Lo;0;L;;;;;N;;;;;
+D4C8;HANGUL SYLLABLE PWEK;Lo;0;L;;;;;N;;;;;
+D4C9;HANGUL SYLLABLE PWET;Lo;0;L;;;;;N;;;;;
+D4CA;HANGUL SYLLABLE PWEP;Lo;0;L;;;;;N;;;;;
+D4CB;HANGUL SYLLABLE PWEH;Lo;0;L;;;;;N;;;;;
+D4CC;HANGUL SYLLABLE PWI;Lo;0;L;;;;;N;;;;;
+D4CD;HANGUL SYLLABLE PWIG;Lo;0;L;;;;;N;;;;;
+D4CE;HANGUL SYLLABLE PWIGG;Lo;0;L;;;;;N;;;;;
+D4CF;HANGUL SYLLABLE PWIGS;Lo;0;L;;;;;N;;;;;
+D4D0;HANGUL SYLLABLE PWIN;Lo;0;L;;;;;N;;;;;
+D4D1;HANGUL SYLLABLE PWINI;Lo;0;L;;;;;N;;;;;
+D4D2;HANGUL SYLLABLE PWINH;Lo;0;L;;;;;N;;;;;
+D4D3;HANGUL SYLLABLE PWID;Lo;0;L;;;;;N;;;;;
+D4D4;HANGUL SYLLABLE PWIL;Lo;0;L;;;;;N;;;;;
+D4D5;HANGUL SYLLABLE PWILG;Lo;0;L;;;;;N;;;;;
+D4D6;HANGUL SYLLABLE PWILM;Lo;0;L;;;;;N;;;;;
+D4D7;HANGUL SYLLABLE PWILB;Lo;0;L;;;;;N;;;;;
+D4D8;HANGUL SYLLABLE PWILS;Lo;0;L;;;;;N;;;;;
+D4D9;HANGUL SYLLABLE PWILT;Lo;0;L;;;;;N;;;;;
+D4DA;HANGUL SYLLABLE PWILP;Lo;0;L;;;;;N;;;;;
+D4DB;HANGUL SYLLABLE PWILH;Lo;0;L;;;;;N;;;;;
+D4DC;HANGUL SYLLABLE PWIM;Lo;0;L;;;;;N;;;;;
+D4DD;HANGUL SYLLABLE PWIB;Lo;0;L;;;;;N;;;;;
+D4DE;HANGUL SYLLABLE PWIBS;Lo;0;L;;;;;N;;;;;
+D4DF;HANGUL SYLLABLE PWIS;Lo;0;L;;;;;N;;;;;
+D4E0;HANGUL SYLLABLE PWISS;Lo;0;L;;;;;N;;;;;
+D4E1;HANGUL SYLLABLE PWING;Lo;0;L;;;;;N;;;;;
+D4E2;HANGUL SYLLABLE PWIJ;Lo;0;L;;;;;N;;;;;
+D4E3;HANGUL SYLLABLE PWIC;Lo;0;L;;;;;N;;;;;
+D4E4;HANGUL SYLLABLE PWIK;Lo;0;L;;;;;N;;;;;
+D4E5;HANGUL SYLLABLE PWIT;Lo;0;L;;;;;N;;;;;
+D4E6;HANGUL SYLLABLE PWIP;Lo;0;L;;;;;N;;;;;
+D4E7;HANGUL SYLLABLE PWIH;Lo;0;L;;;;;N;;;;;
+D4E8;HANGUL SYLLABLE PYU;Lo;0;L;;;;;N;;;;;
+D4E9;HANGUL SYLLABLE PYUG;Lo;0;L;;;;;N;;;;;
+D4EA;HANGUL SYLLABLE PYUGG;Lo;0;L;;;;;N;;;;;
+D4EB;HANGUL SYLLABLE PYUGS;Lo;0;L;;;;;N;;;;;
+D4EC;HANGUL SYLLABLE PYUN;Lo;0;L;;;;;N;;;;;
+D4ED;HANGUL SYLLABLE PYUNI;Lo;0;L;;;;;N;;;;;
+D4EE;HANGUL SYLLABLE PYUNH;Lo;0;L;;;;;N;;;;;
+D4EF;HANGUL SYLLABLE PYUD;Lo;0;L;;;;;N;;;;;
+D4F0;HANGUL SYLLABLE PYUL;Lo;0;L;;;;;N;;;;;
+D4F1;HANGUL SYLLABLE PYULG;Lo;0;L;;;;;N;;;;;
+D4F2;HANGUL SYLLABLE PYULM;Lo;0;L;;;;;N;;;;;
+D4F3;HANGUL SYLLABLE PYULB;Lo;0;L;;;;;N;;;;;
+D4F4;HANGUL SYLLABLE PYULS;Lo;0;L;;;;;N;;;;;
+D4F5;HANGUL SYLLABLE PYULT;Lo;0;L;;;;;N;;;;;
+D4F6;HANGUL SYLLABLE PYULP;Lo;0;L;;;;;N;;;;;
+D4F7;HANGUL SYLLABLE PYULH;Lo;0;L;;;;;N;;;;;
+D4F8;HANGUL SYLLABLE PYUM;Lo;0;L;;;;;N;;;;;
+D4F9;HANGUL SYLLABLE PYUB;Lo;0;L;;;;;N;;;;;
+D4FA;HANGUL SYLLABLE PYUBS;Lo;0;L;;;;;N;;;;;
+D4FB;HANGUL SYLLABLE PYUS;Lo;0;L;;;;;N;;;;;
+D4FC;HANGUL SYLLABLE PYUSS;Lo;0;L;;;;;N;;;;;
+D4FD;HANGUL SYLLABLE PYUNG;Lo;0;L;;;;;N;;;;;
+D4FE;HANGUL SYLLABLE PYUJ;Lo;0;L;;;;;N;;;;;
+D4FF;HANGUL SYLLABLE PYUC;Lo;0;L;;;;;N;;;;;
+D500;HANGUL SYLLABLE PYUK;Lo;0;L;;;;;N;;;;;
+D501;HANGUL SYLLABLE PYUT;Lo;0;L;;;;;N;;;;;
+D502;HANGUL SYLLABLE PYUP;Lo;0;L;;;;;N;;;;;
+D503;HANGUL SYLLABLE PYUH;Lo;0;L;;;;;N;;;;;
+D504;HANGUL SYLLABLE PEU;Lo;0;L;;;;;N;;;;;
+D505;HANGUL SYLLABLE PEUG;Lo;0;L;;;;;N;;;;;
+D506;HANGUL SYLLABLE PEUGG;Lo;0;L;;;;;N;;;;;
+D507;HANGUL SYLLABLE PEUGS;Lo;0;L;;;;;N;;;;;
+D508;HANGUL SYLLABLE PEUN;Lo;0;L;;;;;N;;;;;
+D509;HANGUL SYLLABLE PEUNI;Lo;0;L;;;;;N;;;;;
+D50A;HANGUL SYLLABLE PEUNH;Lo;0;L;;;;;N;;;;;
+D50B;HANGUL SYLLABLE PEUD;Lo;0;L;;;;;N;;;;;
+D50C;HANGUL SYLLABLE PEUL;Lo;0;L;;;;;N;;;;;
+D50D;HANGUL SYLLABLE PEULG;Lo;0;L;;;;;N;;;;;
+D50E;HANGUL SYLLABLE PEULM;Lo;0;L;;;;;N;;;;;
+D50F;HANGUL SYLLABLE PEULB;Lo;0;L;;;;;N;;;;;
+D510;HANGUL SYLLABLE PEULS;Lo;0;L;;;;;N;;;;;
+D511;HANGUL SYLLABLE PEULT;Lo;0;L;;;;;N;;;;;
+D512;HANGUL SYLLABLE PEULP;Lo;0;L;;;;;N;;;;;
+D513;HANGUL SYLLABLE PEULH;Lo;0;L;;;;;N;;;;;
+D514;HANGUL SYLLABLE PEUM;Lo;0;L;;;;;N;;;;;
+D515;HANGUL SYLLABLE PEUB;Lo;0;L;;;;;N;;;;;
+D516;HANGUL SYLLABLE PEUBS;Lo;0;L;;;;;N;;;;;
+D517;HANGUL SYLLABLE PEUS;Lo;0;L;;;;;N;;;;;
+D518;HANGUL SYLLABLE PEUSS;Lo;0;L;;;;;N;;;;;
+D519;HANGUL SYLLABLE PEUNG;Lo;0;L;;;;;N;;;;;
+D51A;HANGUL SYLLABLE PEUJ;Lo;0;L;;;;;N;;;;;
+D51B;HANGUL SYLLABLE PEUC;Lo;0;L;;;;;N;;;;;
+D51C;HANGUL SYLLABLE PEUK;Lo;0;L;;;;;N;;;;;
+D51D;HANGUL SYLLABLE PEUT;Lo;0;L;;;;;N;;;;;
+D51E;HANGUL SYLLABLE PEUP;Lo;0;L;;;;;N;;;;;
+D51F;HANGUL SYLLABLE PEUH;Lo;0;L;;;;;N;;;;;
+D520;HANGUL SYLLABLE PYI;Lo;0;L;;;;;N;;;;;
+D521;HANGUL SYLLABLE PYIG;Lo;0;L;;;;;N;;;;;
+D522;HANGUL SYLLABLE PYIGG;Lo;0;L;;;;;N;;;;;
+D523;HANGUL SYLLABLE PYIGS;Lo;0;L;;;;;N;;;;;
+D524;HANGUL SYLLABLE PYIN;Lo;0;L;;;;;N;;;;;
+D525;HANGUL SYLLABLE PYINI;Lo;0;L;;;;;N;;;;;
+D526;HANGUL SYLLABLE PYINH;Lo;0;L;;;;;N;;;;;
+D527;HANGUL SYLLABLE PYID;Lo;0;L;;;;;N;;;;;
+D528;HANGUL SYLLABLE PYIL;Lo;0;L;;;;;N;;;;;
+D529;HANGUL SYLLABLE PYILG;Lo;0;L;;;;;N;;;;;
+D52A;HANGUL SYLLABLE PYILM;Lo;0;L;;;;;N;;;;;
+D52B;HANGUL SYLLABLE PYILB;Lo;0;L;;;;;N;;;;;
+D52C;HANGUL SYLLABLE PYILS;Lo;0;L;;;;;N;;;;;
+D52D;HANGUL SYLLABLE PYILT;Lo;0;L;;;;;N;;;;;
+D52E;HANGUL SYLLABLE PYILP;Lo;0;L;;;;;N;;;;;
+D52F;HANGUL SYLLABLE PYILH;Lo;0;L;;;;;N;;;;;
+D530;HANGUL SYLLABLE PYIM;Lo;0;L;;;;;N;;;;;
+D531;HANGUL SYLLABLE PYIB;Lo;0;L;;;;;N;;;;;
+D532;HANGUL SYLLABLE PYIBS;Lo;0;L;;;;;N;;;;;
+D533;HANGUL SYLLABLE PYIS;Lo;0;L;;;;;N;;;;;
+D534;HANGUL SYLLABLE PYISS;Lo;0;L;;;;;N;;;;;
+D535;HANGUL SYLLABLE PYING;Lo;0;L;;;;;N;;;;;
+D536;HANGUL SYLLABLE PYIJ;Lo;0;L;;;;;N;;;;;
+D537;HANGUL SYLLABLE PYIC;Lo;0;L;;;;;N;;;;;
+D538;HANGUL SYLLABLE PYIK;Lo;0;L;;;;;N;;;;;
+D539;HANGUL SYLLABLE PYIT;Lo;0;L;;;;;N;;;;;
+D53A;HANGUL SYLLABLE PYIP;Lo;0;L;;;;;N;;;;;
+D53B;HANGUL SYLLABLE PYIH;Lo;0;L;;;;;N;;;;;
+D53C;HANGUL SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+D53D;HANGUL SYLLABLE PIG;Lo;0;L;;;;;N;;;;;
+D53E;HANGUL SYLLABLE PIGG;Lo;0;L;;;;;N;;;;;
+D53F;HANGUL SYLLABLE PIGS;Lo;0;L;;;;;N;;;;;
+D540;HANGUL SYLLABLE PIN;Lo;0;L;;;;;N;;;;;
+D541;HANGUL SYLLABLE PINI;Lo;0;L;;;;;N;;;;;
+D542;HANGUL SYLLABLE PINH;Lo;0;L;;;;;N;;;;;
+D543;HANGUL SYLLABLE PID;Lo;0;L;;;;;N;;;;;
+D544;HANGUL SYLLABLE PIL;Lo;0;L;;;;;N;;;;;
+D545;HANGUL SYLLABLE PILG;Lo;0;L;;;;;N;;;;;
+D546;HANGUL SYLLABLE PILM;Lo;0;L;;;;;N;;;;;
+D547;HANGUL SYLLABLE PILB;Lo;0;L;;;;;N;;;;;
+D548;HANGUL SYLLABLE PILS;Lo;0;L;;;;;N;;;;;
+D549;HANGUL SYLLABLE PILT;Lo;0;L;;;;;N;;;;;
+D54A;HANGUL SYLLABLE PILP;Lo;0;L;;;;;N;;;;;
+D54B;HANGUL SYLLABLE PILH;Lo;0;L;;;;;N;;;;;
+D54C;HANGUL SYLLABLE PIM;Lo;0;L;;;;;N;;;;;
+D54D;HANGUL SYLLABLE PIB;Lo;0;L;;;;;N;;;;;
+D54E;HANGUL SYLLABLE PIBS;Lo;0;L;;;;;N;;;;;
+D54F;HANGUL SYLLABLE PIS;Lo;0;L;;;;;N;;;;;
+D550;HANGUL SYLLABLE PISS;Lo;0;L;;;;;N;;;;;
+D551;HANGUL SYLLABLE PING;Lo;0;L;;;;;N;;;;;
+D552;HANGUL SYLLABLE PIJ;Lo;0;L;;;;;N;;;;;
+D553;HANGUL SYLLABLE PIC;Lo;0;L;;;;;N;;;;;
+D554;HANGUL SYLLABLE PIK;Lo;0;L;;;;;N;;;;;
+D555;HANGUL SYLLABLE PIT;Lo;0;L;;;;;N;;;;;
+D556;HANGUL SYLLABLE PIP;Lo;0;L;;;;;N;;;;;
+D557;HANGUL SYLLABLE PIH;Lo;0;L;;;;;N;;;;;
+D558;HANGUL SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+D559;HANGUL SYLLABLE HAG;Lo;0;L;;;;;N;;;;;
+D55A;HANGUL SYLLABLE HAGG;Lo;0;L;;;;;N;;;;;
+D55B;HANGUL SYLLABLE HAGS;Lo;0;L;;;;;N;;;;;
+D55C;HANGUL SYLLABLE HAN;Lo;0;L;;;;;N;;;;;
+D55D;HANGUL SYLLABLE HANI;Lo;0;L;;;;;N;;;;;
+D55E;HANGUL SYLLABLE HANH;Lo;0;L;;;;;N;;;;;
+D55F;HANGUL SYLLABLE HAD;Lo;0;L;;;;;N;;;;;
+D560;HANGUL SYLLABLE HAL;Lo;0;L;;;;;N;;;;;
+D561;HANGUL SYLLABLE HALG;Lo;0;L;;;;;N;;;;;
+D562;HANGUL SYLLABLE HALM;Lo;0;L;;;;;N;;;;;
+D563;HANGUL SYLLABLE HALB;Lo;0;L;;;;;N;;;;;
+D564;HANGUL SYLLABLE HALS;Lo;0;L;;;;;N;;;;;
+D565;HANGUL SYLLABLE HALT;Lo;0;L;;;;;N;;;;;
+D566;HANGUL SYLLABLE HALP;Lo;0;L;;;;;N;;;;;
+D567;HANGUL SYLLABLE HALH;Lo;0;L;;;;;N;;;;;
+D568;HANGUL SYLLABLE HAM;Lo;0;L;;;;;N;;;;;
+D569;HANGUL SYLLABLE HAB;Lo;0;L;;;;;N;;;;;
+D56A;HANGUL SYLLABLE HABS;Lo;0;L;;;;;N;;;;;
+D56B;HANGUL SYLLABLE HAS;Lo;0;L;;;;;N;;;;;
+D56C;HANGUL SYLLABLE HASS;Lo;0;L;;;;;N;;;;;
+D56D;HANGUL SYLLABLE HANG;Lo;0;L;;;;;N;;;;;
+D56E;HANGUL SYLLABLE HAJ;Lo;0;L;;;;;N;;;;;
+D56F;HANGUL SYLLABLE HAC;Lo;0;L;;;;;N;;;;;
+D570;HANGUL SYLLABLE HAK;Lo;0;L;;;;;N;;;;;
+D571;HANGUL SYLLABLE HAT;Lo;0;L;;;;;N;;;;;
+D572;HANGUL SYLLABLE HAP;Lo;0;L;;;;;N;;;;;
+D573;HANGUL SYLLABLE HAH;Lo;0;L;;;;;N;;;;;
+D574;HANGUL SYLLABLE HAE;Lo;0;L;;;;;N;;;;;
+D575;HANGUL SYLLABLE HAEG;Lo;0;L;;;;;N;;;;;
+D576;HANGUL SYLLABLE HAEGG;Lo;0;L;;;;;N;;;;;
+D577;HANGUL SYLLABLE HAEGS;Lo;0;L;;;;;N;;;;;
+D578;HANGUL SYLLABLE HAEN;Lo;0;L;;;;;N;;;;;
+D579;HANGUL SYLLABLE HAENI;Lo;0;L;;;;;N;;;;;
+D57A;HANGUL SYLLABLE HAENH;Lo;0;L;;;;;N;;;;;
+D57B;HANGUL SYLLABLE HAED;Lo;0;L;;;;;N;;;;;
+D57C;HANGUL SYLLABLE HAEL;Lo;0;L;;;;;N;;;;;
+D57D;HANGUL SYLLABLE HAELG;Lo;0;L;;;;;N;;;;;
+D57E;HANGUL SYLLABLE HAELM;Lo;0;L;;;;;N;;;;;
+D57F;HANGUL SYLLABLE HAELB;Lo;0;L;;;;;N;;;;;
+D580;HANGUL SYLLABLE HAELS;Lo;0;L;;;;;N;;;;;
+D581;HANGUL SYLLABLE HAELT;Lo;0;L;;;;;N;;;;;
+D582;HANGUL SYLLABLE HAELP;Lo;0;L;;;;;N;;;;;
+D583;HANGUL SYLLABLE HAELH;Lo;0;L;;;;;N;;;;;
+D584;HANGUL SYLLABLE HAEM;Lo;0;L;;;;;N;;;;;
+D585;HANGUL SYLLABLE HAEB;Lo;0;L;;;;;N;;;;;
+D586;HANGUL SYLLABLE HAEBS;Lo;0;L;;;;;N;;;;;
+D587;HANGUL SYLLABLE HAES;Lo;0;L;;;;;N;;;;;
+D588;HANGUL SYLLABLE HAESS;Lo;0;L;;;;;N;;;;;
+D589;HANGUL SYLLABLE HAENG;Lo;0;L;;;;;N;;;;;
+D58A;HANGUL SYLLABLE HAEJ;Lo;0;L;;;;;N;;;;;
+D58B;HANGUL SYLLABLE HAEC;Lo;0;L;;;;;N;;;;;
+D58C;HANGUL SYLLABLE HAEK;Lo;0;L;;;;;N;;;;;
+D58D;HANGUL SYLLABLE HAET;Lo;0;L;;;;;N;;;;;
+D58E;HANGUL SYLLABLE HAEP;Lo;0;L;;;;;N;;;;;
+D58F;HANGUL SYLLABLE HAEH;Lo;0;L;;;;;N;;;;;
+D590;HANGUL SYLLABLE HYA;Lo;0;L;;;;;N;;;;;
+D591;HANGUL SYLLABLE HYAG;Lo;0;L;;;;;N;;;;;
+D592;HANGUL SYLLABLE HYAGG;Lo;0;L;;;;;N;;;;;
+D593;HANGUL SYLLABLE HYAGS;Lo;0;L;;;;;N;;;;;
+D594;HANGUL SYLLABLE HYAN;Lo;0;L;;;;;N;;;;;
+D595;HANGUL SYLLABLE HYANI;Lo;0;L;;;;;N;;;;;
+D596;HANGUL SYLLABLE HYANH;Lo;0;L;;;;;N;;;;;
+D597;HANGUL SYLLABLE HYAD;Lo;0;L;;;;;N;;;;;
+D598;HANGUL SYLLABLE HYAL;Lo;0;L;;;;;N;;;;;
+D599;HANGUL SYLLABLE HYALG;Lo;0;L;;;;;N;;;;;
+D59A;HANGUL SYLLABLE HYALM;Lo;0;L;;;;;N;;;;;
+D59B;HANGUL SYLLABLE HYALB;Lo;0;L;;;;;N;;;;;
+D59C;HANGUL SYLLABLE HYALS;Lo;0;L;;;;;N;;;;;
+D59D;HANGUL SYLLABLE HYALT;Lo;0;L;;;;;N;;;;;
+D59E;HANGUL SYLLABLE HYALP;Lo;0;L;;;;;N;;;;;
+D59F;HANGUL SYLLABLE HYALH;Lo;0;L;;;;;N;;;;;
+D5A0;HANGUL SYLLABLE HYAM;Lo;0;L;;;;;N;;;;;
+D5A1;HANGUL SYLLABLE HYAB;Lo;0;L;;;;;N;;;;;
+D5A2;HANGUL SYLLABLE HYABS;Lo;0;L;;;;;N;;;;;
+D5A3;HANGUL SYLLABLE HYAS;Lo;0;L;;;;;N;;;;;
+D5A4;HANGUL SYLLABLE HYASS;Lo;0;L;;;;;N;;;;;
+D5A5;HANGUL SYLLABLE HYANG;Lo;0;L;;;;;N;;;;;
+D5A6;HANGUL SYLLABLE HYAJ;Lo;0;L;;;;;N;;;;;
+D5A7;HANGUL SYLLABLE HYAC;Lo;0;L;;;;;N;;;;;
+D5A8;HANGUL SYLLABLE HYAK;Lo;0;L;;;;;N;;;;;
+D5A9;HANGUL SYLLABLE HYAT;Lo;0;L;;;;;N;;;;;
+D5AA;HANGUL SYLLABLE HYAP;Lo;0;L;;;;;N;;;;;
+D5AB;HANGUL SYLLABLE HYAH;Lo;0;L;;;;;N;;;;;
+D5AC;HANGUL SYLLABLE HYAE;Lo;0;L;;;;;N;;;;;
+D5AD;HANGUL SYLLABLE HYAEG;Lo;0;L;;;;;N;;;;;
+D5AE;HANGUL SYLLABLE HYAEGG;Lo;0;L;;;;;N;;;;;
+D5AF;HANGUL SYLLABLE HYAEGS;Lo;0;L;;;;;N;;;;;
+D5B0;HANGUL SYLLABLE HYAEN;Lo;0;L;;;;;N;;;;;
+D5B1;HANGUL SYLLABLE HYAENI;Lo;0;L;;;;;N;;;;;
+D5B2;HANGUL SYLLABLE HYAENH;Lo;0;L;;;;;N;;;;;
+D5B3;HANGUL SYLLABLE HYAED;Lo;0;L;;;;;N;;;;;
+D5B4;HANGUL SYLLABLE HYAEL;Lo;0;L;;;;;N;;;;;
+D5B5;HANGUL SYLLABLE HYAELG;Lo;0;L;;;;;N;;;;;
+D5B6;HANGUL SYLLABLE HYAELM;Lo;0;L;;;;;N;;;;;
+D5B7;HANGUL SYLLABLE HYAELB;Lo;0;L;;;;;N;;;;;
+D5B8;HANGUL SYLLABLE HYAELS;Lo;0;L;;;;;N;;;;;
+D5B9;HANGUL SYLLABLE HYAELT;Lo;0;L;;;;;N;;;;;
+D5BA;HANGUL SYLLABLE HYAELP;Lo;0;L;;;;;N;;;;;
+D5BB;HANGUL SYLLABLE HYAELH;Lo;0;L;;;;;N;;;;;
+D5BC;HANGUL SYLLABLE HYAEM;Lo;0;L;;;;;N;;;;;
+D5BD;HANGUL SYLLABLE HYAEB;Lo;0;L;;;;;N;;;;;
+D5BE;HANGUL SYLLABLE HYAEBS;Lo;0;L;;;;;N;;;;;
+D5BF;HANGUL SYLLABLE HYAES;Lo;0;L;;;;;N;;;;;
+D5C0;HANGUL SYLLABLE HYAESS;Lo;0;L;;;;;N;;;;;
+D5C1;HANGUL SYLLABLE HYAENG;Lo;0;L;;;;;N;;;;;
+D5C2;HANGUL SYLLABLE HYAEJ;Lo;0;L;;;;;N;;;;;
+D5C3;HANGUL SYLLABLE HYAEC;Lo;0;L;;;;;N;;;;;
+D5C4;HANGUL SYLLABLE HYAEK;Lo;0;L;;;;;N;;;;;
+D5C5;HANGUL SYLLABLE HYAET;Lo;0;L;;;;;N;;;;;
+D5C6;HANGUL SYLLABLE HYAEP;Lo;0;L;;;;;N;;;;;
+D5C7;HANGUL SYLLABLE HYAEH;Lo;0;L;;;;;N;;;;;
+D5C8;HANGUL SYLLABLE HEO;Lo;0;L;;;;;N;;;;;
+D5C9;HANGUL SYLLABLE HEOG;Lo;0;L;;;;;N;;;;;
+D5CA;HANGUL SYLLABLE HEOGG;Lo;0;L;;;;;N;;;;;
+D5CB;HANGUL SYLLABLE HEOGS;Lo;0;L;;;;;N;;;;;
+D5CC;HANGUL SYLLABLE HEON;Lo;0;L;;;;;N;;;;;
+D5CD;HANGUL SYLLABLE HEONI;Lo;0;L;;;;;N;;;;;
+D5CE;HANGUL SYLLABLE HEONH;Lo;0;L;;;;;N;;;;;
+D5CF;HANGUL SYLLABLE HEOD;Lo;0;L;;;;;N;;;;;
+D5D0;HANGUL SYLLABLE HEOL;Lo;0;L;;;;;N;;;;;
+D5D1;HANGUL SYLLABLE HEOLG;Lo;0;L;;;;;N;;;;;
+D5D2;HANGUL SYLLABLE HEOLM;Lo;0;L;;;;;N;;;;;
+D5D3;HANGUL SYLLABLE HEOLB;Lo;0;L;;;;;N;;;;;
+D5D4;HANGUL SYLLABLE HEOLS;Lo;0;L;;;;;N;;;;;
+D5D5;HANGUL SYLLABLE HEOLT;Lo;0;L;;;;;N;;;;;
+D5D6;HANGUL SYLLABLE HEOLP;Lo;0;L;;;;;N;;;;;
+D5D7;HANGUL SYLLABLE HEOLH;Lo;0;L;;;;;N;;;;;
+D5D8;HANGUL SYLLABLE HEOM;Lo;0;L;;;;;N;;;;;
+D5D9;HANGUL SYLLABLE HEOB;Lo;0;L;;;;;N;;;;;
+D5DA;HANGUL SYLLABLE HEOBS;Lo;0;L;;;;;N;;;;;
+D5DB;HANGUL SYLLABLE HEOS;Lo;0;L;;;;;N;;;;;
+D5DC;HANGUL SYLLABLE HEOSS;Lo;0;L;;;;;N;;;;;
+D5DD;HANGUL SYLLABLE HEONG;Lo;0;L;;;;;N;;;;;
+D5DE;HANGUL SYLLABLE HEOJ;Lo;0;L;;;;;N;;;;;
+D5DF;HANGUL SYLLABLE HEOC;Lo;0;L;;;;;N;;;;;
+D5E0;HANGUL SYLLABLE HEOK;Lo;0;L;;;;;N;;;;;
+D5E1;HANGUL SYLLABLE HEOT;Lo;0;L;;;;;N;;;;;
+D5E2;HANGUL SYLLABLE HEOP;Lo;0;L;;;;;N;;;;;
+D5E3;HANGUL SYLLABLE HEOH;Lo;0;L;;;;;N;;;;;
+D5E4;HANGUL SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+D5E5;HANGUL SYLLABLE HEG;Lo;0;L;;;;;N;;;;;
+D5E6;HANGUL SYLLABLE HEGG;Lo;0;L;;;;;N;;;;;
+D5E7;HANGUL SYLLABLE HEGS;Lo;0;L;;;;;N;;;;;
+D5E8;HANGUL SYLLABLE HEN;Lo;0;L;;;;;N;;;;;
+D5E9;HANGUL SYLLABLE HENI;Lo;0;L;;;;;N;;;;;
+D5EA;HANGUL SYLLABLE HENH;Lo;0;L;;;;;N;;;;;
+D5EB;HANGUL SYLLABLE HED;Lo;0;L;;;;;N;;;;;
+D5EC;HANGUL SYLLABLE HEL;Lo;0;L;;;;;N;;;;;
+D5ED;HANGUL SYLLABLE HELG;Lo;0;L;;;;;N;;;;;
+D5EE;HANGUL SYLLABLE HELM;Lo;0;L;;;;;N;;;;;
+D5EF;HANGUL SYLLABLE HELB;Lo;0;L;;;;;N;;;;;
+D5F0;HANGUL SYLLABLE HELS;Lo;0;L;;;;;N;;;;;
+D5F1;HANGUL SYLLABLE HELT;Lo;0;L;;;;;N;;;;;
+D5F2;HANGUL SYLLABLE HELP;Lo;0;L;;;;;N;;;;;
+D5F3;HANGUL SYLLABLE HELH;Lo;0;L;;;;;N;;;;;
+D5F4;HANGUL SYLLABLE HEM;Lo;0;L;;;;;N;;;;;
+D5F5;HANGUL SYLLABLE HEB;Lo;0;L;;;;;N;;;;;
+D5F6;HANGUL SYLLABLE HEBS;Lo;0;L;;;;;N;;;;;
+D5F7;HANGUL SYLLABLE HES;Lo;0;L;;;;;N;;;;;
+D5F8;HANGUL SYLLABLE HESS;Lo;0;L;;;;;N;;;;;
+D5F9;HANGUL SYLLABLE HENG;Lo;0;L;;;;;N;;;;;
+D5FA;HANGUL SYLLABLE HEJ;Lo;0;L;;;;;N;;;;;
+D5FB;HANGUL SYLLABLE HEC;Lo;0;L;;;;;N;;;;;
+D5FC;HANGUL SYLLABLE HEK;Lo;0;L;;;;;N;;;;;
+D5FD;HANGUL SYLLABLE HET;Lo;0;L;;;;;N;;;;;
+D5FE;HANGUL SYLLABLE HEP;Lo;0;L;;;;;N;;;;;
+D5FF;HANGUL SYLLABLE HEH;Lo;0;L;;;;;N;;;;;
+D600;HANGUL SYLLABLE HYEO;Lo;0;L;;;;;N;;;;;
+D601;HANGUL SYLLABLE HYEOG;Lo;0;L;;;;;N;;;;;
+D602;HANGUL SYLLABLE HYEOGG;Lo;0;L;;;;;N;;;;;
+D603;HANGUL SYLLABLE HYEOGS;Lo;0;L;;;;;N;;;;;
+D604;HANGUL SYLLABLE HYEON;Lo;0;L;;;;;N;;;;;
+D605;HANGUL SYLLABLE HYEONI;Lo;0;L;;;;;N;;;;;
+D606;HANGUL SYLLABLE HYEONH;Lo;0;L;;;;;N;;;;;
+D607;HANGUL SYLLABLE HYEOD;Lo;0;L;;;;;N;;;;;
+D608;HANGUL SYLLABLE HYEOL;Lo;0;L;;;;;N;;;;;
+D609;HANGUL SYLLABLE HYEOLG;Lo;0;L;;;;;N;;;;;
+D60A;HANGUL SYLLABLE HYEOLM;Lo;0;L;;;;;N;;;;;
+D60B;HANGUL SYLLABLE HYEOLB;Lo;0;L;;;;;N;;;;;
+D60C;HANGUL SYLLABLE HYEOLS;Lo;0;L;;;;;N;;;;;
+D60D;HANGUL SYLLABLE HYEOLT;Lo;0;L;;;;;N;;;;;
+D60E;HANGUL SYLLABLE HYEOLP;Lo;0;L;;;;;N;;;;;
+D60F;HANGUL SYLLABLE HYEOLH;Lo;0;L;;;;;N;;;;;
+D610;HANGUL SYLLABLE HYEOM;Lo;0;L;;;;;N;;;;;
+D611;HANGUL SYLLABLE HYEOB;Lo;0;L;;;;;N;;;;;
+D612;HANGUL SYLLABLE HYEOBS;Lo;0;L;;;;;N;;;;;
+D613;HANGUL SYLLABLE HYEOS;Lo;0;L;;;;;N;;;;;
+D614;HANGUL SYLLABLE HYEOSS;Lo;0;L;;;;;N;;;;;
+D615;HANGUL SYLLABLE HYEONG;Lo;0;L;;;;;N;;;;;
+D616;HANGUL SYLLABLE HYEOJ;Lo;0;L;;;;;N;;;;;
+D617;HANGUL SYLLABLE HYEOC;Lo;0;L;;;;;N;;;;;
+D618;HANGUL SYLLABLE HYEOK;Lo;0;L;;;;;N;;;;;
+D619;HANGUL SYLLABLE HYEOT;Lo;0;L;;;;;N;;;;;
+D61A;HANGUL SYLLABLE HYEOP;Lo;0;L;;;;;N;;;;;
+D61B;HANGUL SYLLABLE HYEOH;Lo;0;L;;;;;N;;;;;
+D61C;HANGUL SYLLABLE HYE;Lo;0;L;;;;;N;;;;;
+D61D;HANGUL SYLLABLE HYEG;Lo;0;L;;;;;N;;;;;
+D61E;HANGUL SYLLABLE HYEGG;Lo;0;L;;;;;N;;;;;
+D61F;HANGUL SYLLABLE HYEGS;Lo;0;L;;;;;N;;;;;
+D620;HANGUL SYLLABLE HYEN;Lo;0;L;;;;;N;;;;;
+D621;HANGUL SYLLABLE HYENI;Lo;0;L;;;;;N;;;;;
+D622;HANGUL SYLLABLE HYENH;Lo;0;L;;;;;N;;;;;
+D623;HANGUL SYLLABLE HYED;Lo;0;L;;;;;N;;;;;
+D624;HANGUL SYLLABLE HYEL;Lo;0;L;;;;;N;;;;;
+D625;HANGUL SYLLABLE HYELG;Lo;0;L;;;;;N;;;;;
+D626;HANGUL SYLLABLE HYELM;Lo;0;L;;;;;N;;;;;
+D627;HANGUL SYLLABLE HYELB;Lo;0;L;;;;;N;;;;;
+D628;HANGUL SYLLABLE HYELS;Lo;0;L;;;;;N;;;;;
+D629;HANGUL SYLLABLE HYELT;Lo;0;L;;;;;N;;;;;
+D62A;HANGUL SYLLABLE HYELP;Lo;0;L;;;;;N;;;;;
+D62B;HANGUL SYLLABLE HYELH;Lo;0;L;;;;;N;;;;;
+D62C;HANGUL SYLLABLE HYEM;Lo;0;L;;;;;N;;;;;
+D62D;HANGUL SYLLABLE HYEB;Lo;0;L;;;;;N;;;;;
+D62E;HANGUL SYLLABLE HYEBS;Lo;0;L;;;;;N;;;;;
+D62F;HANGUL SYLLABLE HYES;Lo;0;L;;;;;N;;;;;
+D630;HANGUL SYLLABLE HYESS;Lo;0;L;;;;;N;;;;;
+D631;HANGUL SYLLABLE HYENG;Lo;0;L;;;;;N;;;;;
+D632;HANGUL SYLLABLE HYEJ;Lo;0;L;;;;;N;;;;;
+D633;HANGUL SYLLABLE HYEC;Lo;0;L;;;;;N;;;;;
+D634;HANGUL SYLLABLE HYEK;Lo;0;L;;;;;N;;;;;
+D635;HANGUL SYLLABLE HYET;Lo;0;L;;;;;N;;;;;
+D636;HANGUL SYLLABLE HYEP;Lo;0;L;;;;;N;;;;;
+D637;HANGUL SYLLABLE HYEH;Lo;0;L;;;;;N;;;;;
+D638;HANGUL SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+D639;HANGUL SYLLABLE HOG;Lo;0;L;;;;;N;;;;;
+D63A;HANGUL SYLLABLE HOGG;Lo;0;L;;;;;N;;;;;
+D63B;HANGUL SYLLABLE HOGS;Lo;0;L;;;;;N;;;;;
+D63C;HANGUL SYLLABLE HON;Lo;0;L;;;;;N;;;;;
+D63D;HANGUL SYLLABLE HONI;Lo;0;L;;;;;N;;;;;
+D63E;HANGUL SYLLABLE HONH;Lo;0;L;;;;;N;;;;;
+D63F;HANGUL SYLLABLE HOD;Lo;0;L;;;;;N;;;;;
+D640;HANGUL SYLLABLE HOL;Lo;0;L;;;;;N;;;;;
+D641;HANGUL SYLLABLE HOLG;Lo;0;L;;;;;N;;;;;
+D642;HANGUL SYLLABLE HOLM;Lo;0;L;;;;;N;;;;;
+D643;HANGUL SYLLABLE HOLB;Lo;0;L;;;;;N;;;;;
+D644;HANGUL SYLLABLE HOLS;Lo;0;L;;;;;N;;;;;
+D645;HANGUL SYLLABLE HOLT;Lo;0;L;;;;;N;;;;;
+D646;HANGUL SYLLABLE HOLP;Lo;0;L;;;;;N;;;;;
+D647;HANGUL SYLLABLE HOLH;Lo;0;L;;;;;N;;;;;
+D648;HANGUL SYLLABLE HOM;Lo;0;L;;;;;N;;;;;
+D649;HANGUL SYLLABLE HOB;Lo;0;L;;;;;N;;;;;
+D64A;HANGUL SYLLABLE HOBS;Lo;0;L;;;;;N;;;;;
+D64B;HANGUL SYLLABLE HOS;Lo;0;L;;;;;N;;;;;
+D64C;HANGUL SYLLABLE HOSS;Lo;0;L;;;;;N;;;;;
+D64D;HANGUL SYLLABLE HONG;Lo;0;L;;;;;N;;;;;
+D64E;HANGUL SYLLABLE HOJ;Lo;0;L;;;;;N;;;;;
+D64F;HANGUL SYLLABLE HOC;Lo;0;L;;;;;N;;;;;
+D650;HANGUL SYLLABLE HOK;Lo;0;L;;;;;N;;;;;
+D651;HANGUL SYLLABLE HOT;Lo;0;L;;;;;N;;;;;
+D652;HANGUL SYLLABLE HOP;Lo;0;L;;;;;N;;;;;
+D653;HANGUL SYLLABLE HOH;Lo;0;L;;;;;N;;;;;
+D654;HANGUL SYLLABLE HWA;Lo;0;L;;;;;N;;;;;
+D655;HANGUL SYLLABLE HWAG;Lo;0;L;;;;;N;;;;;
+D656;HANGUL SYLLABLE HWAGG;Lo;0;L;;;;;N;;;;;
+D657;HANGUL SYLLABLE HWAGS;Lo;0;L;;;;;N;;;;;
+D658;HANGUL SYLLABLE HWAN;Lo;0;L;;;;;N;;;;;
+D659;HANGUL SYLLABLE HWANI;Lo;0;L;;;;;N;;;;;
+D65A;HANGUL SYLLABLE HWANH;Lo;0;L;;;;;N;;;;;
+D65B;HANGUL SYLLABLE HWAD;Lo;0;L;;;;;N;;;;;
+D65C;HANGUL SYLLABLE HWAL;Lo;0;L;;;;;N;;;;;
+D65D;HANGUL SYLLABLE HWALG;Lo;0;L;;;;;N;;;;;
+D65E;HANGUL SYLLABLE HWALM;Lo;0;L;;;;;N;;;;;
+D65F;HANGUL SYLLABLE HWALB;Lo;0;L;;;;;N;;;;;
+D660;HANGUL SYLLABLE HWALS;Lo;0;L;;;;;N;;;;;
+D661;HANGUL SYLLABLE HWALT;Lo;0;L;;;;;N;;;;;
+D662;HANGUL SYLLABLE HWALP;Lo;0;L;;;;;N;;;;;
+D663;HANGUL SYLLABLE HWALH;Lo;0;L;;;;;N;;;;;
+D664;HANGUL SYLLABLE HWAM;Lo;0;L;;;;;N;;;;;
+D665;HANGUL SYLLABLE HWAB;Lo;0;L;;;;;N;;;;;
+D666;HANGUL SYLLABLE HWABS;Lo;0;L;;;;;N;;;;;
+D667;HANGUL SYLLABLE HWAS;Lo;0;L;;;;;N;;;;;
+D668;HANGUL SYLLABLE HWASS;Lo;0;L;;;;;N;;;;;
+D669;HANGUL SYLLABLE HWANG;Lo;0;L;;;;;N;;;;;
+D66A;HANGUL SYLLABLE HWAJ;Lo;0;L;;;;;N;;;;;
+D66B;HANGUL SYLLABLE HWAC;Lo;0;L;;;;;N;;;;;
+D66C;HANGUL SYLLABLE HWAK;Lo;0;L;;;;;N;;;;;
+D66D;HANGUL SYLLABLE HWAT;Lo;0;L;;;;;N;;;;;
+D66E;HANGUL SYLLABLE HWAP;Lo;0;L;;;;;N;;;;;
+D66F;HANGUL SYLLABLE HWAH;Lo;0;L;;;;;N;;;;;
+D670;HANGUL SYLLABLE HWAE;Lo;0;L;;;;;N;;;;;
+D671;HANGUL SYLLABLE HWAEG;Lo;0;L;;;;;N;;;;;
+D672;HANGUL SYLLABLE HWAEGG;Lo;0;L;;;;;N;;;;;
+D673;HANGUL SYLLABLE HWAEGS;Lo;0;L;;;;;N;;;;;
+D674;HANGUL SYLLABLE HWAEN;Lo;0;L;;;;;N;;;;;
+D675;HANGUL SYLLABLE HWAENI;Lo;0;L;;;;;N;;;;;
+D676;HANGUL SYLLABLE HWAENH;Lo;0;L;;;;;N;;;;;
+D677;HANGUL SYLLABLE HWAED;Lo;0;L;;;;;N;;;;;
+D678;HANGUL SYLLABLE HWAEL;Lo;0;L;;;;;N;;;;;
+D679;HANGUL SYLLABLE HWAELG;Lo;0;L;;;;;N;;;;;
+D67A;HANGUL SYLLABLE HWAELM;Lo;0;L;;;;;N;;;;;
+D67B;HANGUL SYLLABLE HWAELB;Lo;0;L;;;;;N;;;;;
+D67C;HANGUL SYLLABLE HWAELS;Lo;0;L;;;;;N;;;;;
+D67D;HANGUL SYLLABLE HWAELT;Lo;0;L;;;;;N;;;;;
+D67E;HANGUL SYLLABLE HWAELP;Lo;0;L;;;;;N;;;;;
+D67F;HANGUL SYLLABLE HWAELH;Lo;0;L;;;;;N;;;;;
+D680;HANGUL SYLLABLE HWAEM;Lo;0;L;;;;;N;;;;;
+D681;HANGUL SYLLABLE HWAEB;Lo;0;L;;;;;N;;;;;
+D682;HANGUL SYLLABLE HWAEBS;Lo;0;L;;;;;N;;;;;
+D683;HANGUL SYLLABLE HWAES;Lo;0;L;;;;;N;;;;;
+D684;HANGUL SYLLABLE HWAESS;Lo;0;L;;;;;N;;;;;
+D685;HANGUL SYLLABLE HWAENG;Lo;0;L;;;;;N;;;;;
+D686;HANGUL SYLLABLE HWAEJ;Lo;0;L;;;;;N;;;;;
+D687;HANGUL SYLLABLE HWAEC;Lo;0;L;;;;;N;;;;;
+D688;HANGUL SYLLABLE HWAEK;Lo;0;L;;;;;N;;;;;
+D689;HANGUL SYLLABLE HWAET;Lo;0;L;;;;;N;;;;;
+D68A;HANGUL SYLLABLE HWAEP;Lo;0;L;;;;;N;;;;;
+D68B;HANGUL SYLLABLE HWAEH;Lo;0;L;;;;;N;;;;;
+D68C;HANGUL SYLLABLE HOE;Lo;0;L;;;;;N;;;;;
+D68D;HANGUL SYLLABLE HOEG;Lo;0;L;;;;;N;;;;;
+D68E;HANGUL SYLLABLE HOEGG;Lo;0;L;;;;;N;;;;;
+D68F;HANGUL SYLLABLE HOEGS;Lo;0;L;;;;;N;;;;;
+D690;HANGUL SYLLABLE HOEN;Lo;0;L;;;;;N;;;;;
+D691;HANGUL SYLLABLE HOENI;Lo;0;L;;;;;N;;;;;
+D692;HANGUL SYLLABLE HOENH;Lo;0;L;;;;;N;;;;;
+D693;HANGUL SYLLABLE HOED;Lo;0;L;;;;;N;;;;;
+D694;HANGUL SYLLABLE HOEL;Lo;0;L;;;;;N;;;;;
+D695;HANGUL SYLLABLE HOELG;Lo;0;L;;;;;N;;;;;
+D696;HANGUL SYLLABLE HOELM;Lo;0;L;;;;;N;;;;;
+D697;HANGUL SYLLABLE HOELB;Lo;0;L;;;;;N;;;;;
+D698;HANGUL SYLLABLE HOELS;Lo;0;L;;;;;N;;;;;
+D699;HANGUL SYLLABLE HOELT;Lo;0;L;;;;;N;;;;;
+D69A;HANGUL SYLLABLE HOELP;Lo;0;L;;;;;N;;;;;
+D69B;HANGUL SYLLABLE HOELH;Lo;0;L;;;;;N;;;;;
+D69C;HANGUL SYLLABLE HOEM;Lo;0;L;;;;;N;;;;;
+D69D;HANGUL SYLLABLE HOEB;Lo;0;L;;;;;N;;;;;
+D69E;HANGUL SYLLABLE HOEBS;Lo;0;L;;;;;N;;;;;
+D69F;HANGUL SYLLABLE HOES;Lo;0;L;;;;;N;;;;;
+D6A0;HANGUL SYLLABLE HOESS;Lo;0;L;;;;;N;;;;;
+D6A1;HANGUL SYLLABLE HOENG;Lo;0;L;;;;;N;;;;;
+D6A2;HANGUL SYLLABLE HOEJ;Lo;0;L;;;;;N;;;;;
+D6A3;HANGUL SYLLABLE HOEC;Lo;0;L;;;;;N;;;;;
+D6A4;HANGUL SYLLABLE HOEK;Lo;0;L;;;;;N;;;;;
+D6A5;HANGUL SYLLABLE HOET;Lo;0;L;;;;;N;;;;;
+D6A6;HANGUL SYLLABLE HOEP;Lo;0;L;;;;;N;;;;;
+D6A7;HANGUL SYLLABLE HOEH;Lo;0;L;;;;;N;;;;;
+D6A8;HANGUL SYLLABLE HYO;Lo;0;L;;;;;N;;;;;
+D6A9;HANGUL SYLLABLE HYOG;Lo;0;L;;;;;N;;;;;
+D6AA;HANGUL SYLLABLE HYOGG;Lo;0;L;;;;;N;;;;;
+D6AB;HANGUL SYLLABLE HYOGS;Lo;0;L;;;;;N;;;;;
+D6AC;HANGUL SYLLABLE HYON;Lo;0;L;;;;;N;;;;;
+D6AD;HANGUL SYLLABLE HYONI;Lo;0;L;;;;;N;;;;;
+D6AE;HANGUL SYLLABLE HYONH;Lo;0;L;;;;;N;;;;;
+D6AF;HANGUL SYLLABLE HYOD;Lo;0;L;;;;;N;;;;;
+D6B0;HANGUL SYLLABLE HYOL;Lo;0;L;;;;;N;;;;;
+D6B1;HANGUL SYLLABLE HYOLG;Lo;0;L;;;;;N;;;;;
+D6B2;HANGUL SYLLABLE HYOLM;Lo;0;L;;;;;N;;;;;
+D6B3;HANGUL SYLLABLE HYOLB;Lo;0;L;;;;;N;;;;;
+D6B4;HANGUL SYLLABLE HYOLS;Lo;0;L;;;;;N;;;;;
+D6B5;HANGUL SYLLABLE HYOLT;Lo;0;L;;;;;N;;;;;
+D6B6;HANGUL SYLLABLE HYOLP;Lo;0;L;;;;;N;;;;;
+D6B7;HANGUL SYLLABLE HYOLH;Lo;0;L;;;;;N;;;;;
+D6B8;HANGUL SYLLABLE HYOM;Lo;0;L;;;;;N;;;;;
+D6B9;HANGUL SYLLABLE HYOB;Lo;0;L;;;;;N;;;;;
+D6BA;HANGUL SYLLABLE HYOBS;Lo;0;L;;;;;N;;;;;
+D6BB;HANGUL SYLLABLE HYOS;Lo;0;L;;;;;N;;;;;
+D6BC;HANGUL SYLLABLE HYOSS;Lo;0;L;;;;;N;;;;;
+D6BD;HANGUL SYLLABLE HYONG;Lo;0;L;;;;;N;;;;;
+D6BE;HANGUL SYLLABLE HYOJ;Lo;0;L;;;;;N;;;;;
+D6BF;HANGUL SYLLABLE HYOC;Lo;0;L;;;;;N;;;;;
+D6C0;HANGUL SYLLABLE HYOK;Lo;0;L;;;;;N;;;;;
+D6C1;HANGUL SYLLABLE HYOT;Lo;0;L;;;;;N;;;;;
+D6C2;HANGUL SYLLABLE HYOP;Lo;0;L;;;;;N;;;;;
+D6C3;HANGUL SYLLABLE HYOH;Lo;0;L;;;;;N;;;;;
+D6C4;HANGUL SYLLABLE HU;Lo;0;L;;;;;N;;;;;
+D6C5;HANGUL SYLLABLE HUG;Lo;0;L;;;;;N;;;;;
+D6C6;HANGUL SYLLABLE HUGG;Lo;0;L;;;;;N;;;;;
+D6C7;HANGUL SYLLABLE HUGS;Lo;0;L;;;;;N;;;;;
+D6C8;HANGUL SYLLABLE HUN;Lo;0;L;;;;;N;;;;;
+D6C9;HANGUL SYLLABLE HUNI;Lo;0;L;;;;;N;;;;;
+D6CA;HANGUL SYLLABLE HUNH;Lo;0;L;;;;;N;;;;;
+D6CB;HANGUL SYLLABLE HUD;Lo;0;L;;;;;N;;;;;
+D6CC;HANGUL SYLLABLE HUL;Lo;0;L;;;;;N;;;;;
+D6CD;HANGUL SYLLABLE HULG;Lo;0;L;;;;;N;;;;;
+D6CE;HANGUL SYLLABLE HULM;Lo;0;L;;;;;N;;;;;
+D6CF;HANGUL SYLLABLE HULB;Lo;0;L;;;;;N;;;;;
+D6D0;HANGUL SYLLABLE HULS;Lo;0;L;;;;;N;;;;;
+D6D1;HANGUL SYLLABLE HULT;Lo;0;L;;;;;N;;;;;
+D6D2;HANGUL SYLLABLE HULP;Lo;0;L;;;;;N;;;;;
+D6D3;HANGUL SYLLABLE HULH;Lo;0;L;;;;;N;;;;;
+D6D4;HANGUL SYLLABLE HUM;Lo;0;L;;;;;N;;;;;
+D6D5;HANGUL SYLLABLE HUB;Lo;0;L;;;;;N;;;;;
+D6D6;HANGUL SYLLABLE HUBS;Lo;0;L;;;;;N;;;;;
+D6D7;HANGUL SYLLABLE HUS;Lo;0;L;;;;;N;;;;;
+D6D8;HANGUL SYLLABLE HUSS;Lo;0;L;;;;;N;;;;;
+D6D9;HANGUL SYLLABLE HUNG;Lo;0;L;;;;;N;;;;;
+D6DA;HANGUL SYLLABLE HUJ;Lo;0;L;;;;;N;;;;;
+D6DB;HANGUL SYLLABLE HUC;Lo;0;L;;;;;N;;;;;
+D6DC;HANGUL SYLLABLE HUK;Lo;0;L;;;;;N;;;;;
+D6DD;HANGUL SYLLABLE HUT;Lo;0;L;;;;;N;;;;;
+D6DE;HANGUL SYLLABLE HUP;Lo;0;L;;;;;N;;;;;
+D6DF;HANGUL SYLLABLE HUH;Lo;0;L;;;;;N;;;;;
+D6E0;HANGUL SYLLABLE HWEO;Lo;0;L;;;;;N;;;;;
+D6E1;HANGUL SYLLABLE HWEOG;Lo;0;L;;;;;N;;;;;
+D6E2;HANGUL SYLLABLE HWEOGG;Lo;0;L;;;;;N;;;;;
+D6E3;HANGUL SYLLABLE HWEOGS;Lo;0;L;;;;;N;;;;;
+D6E4;HANGUL SYLLABLE HWEON;Lo;0;L;;;;;N;;;;;
+D6E5;HANGUL SYLLABLE HWEONI;Lo;0;L;;;;;N;;;;;
+D6E6;HANGUL SYLLABLE HWEONH;Lo;0;L;;;;;N;;;;;
+D6E7;HANGUL SYLLABLE HWEOD;Lo;0;L;;;;;N;;;;;
+D6E8;HANGUL SYLLABLE HWEOL;Lo;0;L;;;;;N;;;;;
+D6E9;HANGUL SYLLABLE HWEOLG;Lo;0;L;;;;;N;;;;;
+D6EA;HANGUL SYLLABLE HWEOLM;Lo;0;L;;;;;N;;;;;
+D6EB;HANGUL SYLLABLE HWEOLB;Lo;0;L;;;;;N;;;;;
+D6EC;HANGUL SYLLABLE HWEOLS;Lo;0;L;;;;;N;;;;;
+D6ED;HANGUL SYLLABLE HWEOLT;Lo;0;L;;;;;N;;;;;
+D6EE;HANGUL SYLLABLE HWEOLP;Lo;0;L;;;;;N;;;;;
+D6EF;HANGUL SYLLABLE HWEOLH;Lo;0;L;;;;;N;;;;;
+D6F0;HANGUL SYLLABLE HWEOM;Lo;0;L;;;;;N;;;;;
+D6F1;HANGUL SYLLABLE HWEOB;Lo;0;L;;;;;N;;;;;
+D6F2;HANGUL SYLLABLE HWEOBS;Lo;0;L;;;;;N;;;;;
+D6F3;HANGUL SYLLABLE HWEOS;Lo;0;L;;;;;N;;;;;
+D6F4;HANGUL SYLLABLE HWEOSS;Lo;0;L;;;;;N;;;;;
+D6F5;HANGUL SYLLABLE HWEONG;Lo;0;L;;;;;N;;;;;
+D6F6;HANGUL SYLLABLE HWEOJ;Lo;0;L;;;;;N;;;;;
+D6F7;HANGUL SYLLABLE HWEOC;Lo;0;L;;;;;N;;;;;
+D6F8;HANGUL SYLLABLE HWEOK;Lo;0;L;;;;;N;;;;;
+D6F9;HANGUL SYLLABLE HWEOT;Lo;0;L;;;;;N;;;;;
+D6FA;HANGUL SYLLABLE HWEOP;Lo;0;L;;;;;N;;;;;
+D6FB;HANGUL SYLLABLE HWEOH;Lo;0;L;;;;;N;;;;;
+D6FC;HANGUL SYLLABLE HWE;Lo;0;L;;;;;N;;;;;
+D6FD;HANGUL SYLLABLE HWEG;Lo;0;L;;;;;N;;;;;
+D6FE;HANGUL SYLLABLE HWEGG;Lo;0;L;;;;;N;;;;;
+D6FF;HANGUL SYLLABLE HWEGS;Lo;0;L;;;;;N;;;;;
+D700;HANGUL SYLLABLE HWEN;Lo;0;L;;;;;N;;;;;
+D701;HANGUL SYLLABLE HWENI;Lo;0;L;;;;;N;;;;;
+D702;HANGUL SYLLABLE HWENH;Lo;0;L;;;;;N;;;;;
+D703;HANGUL SYLLABLE HWED;Lo;0;L;;;;;N;;;;;
+D704;HANGUL SYLLABLE HWEL;Lo;0;L;;;;;N;;;;;
+D705;HANGUL SYLLABLE HWELG;Lo;0;L;;;;;N;;;;;
+D706;HANGUL SYLLABLE HWELM;Lo;0;L;;;;;N;;;;;
+D707;HANGUL SYLLABLE HWELB;Lo;0;L;;;;;N;;;;;
+D708;HANGUL SYLLABLE HWELS;Lo;0;L;;;;;N;;;;;
+D709;HANGUL SYLLABLE HWELT;Lo;0;L;;;;;N;;;;;
+D70A;HANGUL SYLLABLE HWELP;Lo;0;L;;;;;N;;;;;
+D70B;HANGUL SYLLABLE HWELH;Lo;0;L;;;;;N;;;;;
+D70C;HANGUL SYLLABLE HWEM;Lo;0;L;;;;;N;;;;;
+D70D;HANGUL SYLLABLE HWEB;Lo;0;L;;;;;N;;;;;
+D70E;HANGUL SYLLABLE HWEBS;Lo;0;L;;;;;N;;;;;
+D70F;HANGUL SYLLABLE HWES;Lo;0;L;;;;;N;;;;;
+D710;HANGUL SYLLABLE HWESS;Lo;0;L;;;;;N;;;;;
+D711;HANGUL SYLLABLE HWENG;Lo;0;L;;;;;N;;;;;
+D712;HANGUL SYLLABLE HWEJ;Lo;0;L;;;;;N;;;;;
+D713;HANGUL SYLLABLE HWEC;Lo;0;L;;;;;N;;;;;
+D714;HANGUL SYLLABLE HWEK;Lo;0;L;;;;;N;;;;;
+D715;HANGUL SYLLABLE HWET;Lo;0;L;;;;;N;;;;;
+D716;HANGUL SYLLABLE HWEP;Lo;0;L;;;;;N;;;;;
+D717;HANGUL SYLLABLE HWEH;Lo;0;L;;;;;N;;;;;
+D718;HANGUL SYLLABLE HWI;Lo;0;L;;;;;N;;;;;
+D719;HANGUL SYLLABLE HWIG;Lo;0;L;;;;;N;;;;;
+D71A;HANGUL SYLLABLE HWIGG;Lo;0;L;;;;;N;;;;;
+D71B;HANGUL SYLLABLE HWIGS;Lo;0;L;;;;;N;;;;;
+D71C;HANGUL SYLLABLE HWIN;Lo;0;L;;;;;N;;;;;
+D71D;HANGUL SYLLABLE HWINI;Lo;0;L;;;;;N;;;;;
+D71E;HANGUL SYLLABLE HWINH;Lo;0;L;;;;;N;;;;;
+D71F;HANGUL SYLLABLE HWID;Lo;0;L;;;;;N;;;;;
+D720;HANGUL SYLLABLE HWIL;Lo;0;L;;;;;N;;;;;
+D721;HANGUL SYLLABLE HWILG;Lo;0;L;;;;;N;;;;;
+D722;HANGUL SYLLABLE HWILM;Lo;0;L;;;;;N;;;;;
+D723;HANGUL SYLLABLE HWILB;Lo;0;L;;;;;N;;;;;
+D724;HANGUL SYLLABLE HWILS;Lo;0;L;;;;;N;;;;;
+D725;HANGUL SYLLABLE HWILT;Lo;0;L;;;;;N;;;;;
+D726;HANGUL SYLLABLE HWILP;Lo;0;L;;;;;N;;;;;
+D727;HANGUL SYLLABLE HWILH;Lo;0;L;;;;;N;;;;;
+D728;HANGUL SYLLABLE HWIM;Lo;0;L;;;;;N;;;;;
+D729;HANGUL SYLLABLE HWIB;Lo;0;L;;;;;N;;;;;
+D72A;HANGUL SYLLABLE HWIBS;Lo;0;L;;;;;N;;;;;
+D72B;HANGUL SYLLABLE HWIS;Lo;0;L;;;;;N;;;;;
+D72C;HANGUL SYLLABLE HWISS;Lo;0;L;;;;;N;;;;;
+D72D;HANGUL SYLLABLE HWING;Lo;0;L;;;;;N;;;;;
+D72E;HANGUL SYLLABLE HWIJ;Lo;0;L;;;;;N;;;;;
+D72F;HANGUL SYLLABLE HWIC;Lo;0;L;;;;;N;;;;;
+D730;HANGUL SYLLABLE HWIK;Lo;0;L;;;;;N;;;;;
+D731;HANGUL SYLLABLE HWIT;Lo;0;L;;;;;N;;;;;
+D732;HANGUL SYLLABLE HWIP;Lo;0;L;;;;;N;;;;;
+D733;HANGUL SYLLABLE HWIH;Lo;0;L;;;;;N;;;;;
+D734;HANGUL SYLLABLE HYU;Lo;0;L;;;;;N;;;;;
+D735;HANGUL SYLLABLE HYUG;Lo;0;L;;;;;N;;;;;
+D736;HANGUL SYLLABLE HYUGG;Lo;0;L;;;;;N;;;;;
+D737;HANGUL SYLLABLE HYUGS;Lo;0;L;;;;;N;;;;;
+D738;HANGUL SYLLABLE HYUN;Lo;0;L;;;;;N;;;;;
+D739;HANGUL SYLLABLE HYUNI;Lo;0;L;;;;;N;;;;;
+D73A;HANGUL SYLLABLE HYUNH;Lo;0;L;;;;;N;;;;;
+D73B;HANGUL SYLLABLE HYUD;Lo;0;L;;;;;N;;;;;
+D73C;HANGUL SYLLABLE HYUL;Lo;0;L;;;;;N;;;;;
+D73D;HANGUL SYLLABLE HYULG;Lo;0;L;;;;;N;;;;;
+D73E;HANGUL SYLLABLE HYULM;Lo;0;L;;;;;N;;;;;
+D73F;HANGUL SYLLABLE HYULB;Lo;0;L;;;;;N;;;;;
+D740;HANGUL SYLLABLE HYULS;Lo;0;L;;;;;N;;;;;
+D741;HANGUL SYLLABLE HYULT;Lo;0;L;;;;;N;;;;;
+D742;HANGUL SYLLABLE HYULP;Lo;0;L;;;;;N;;;;;
+D743;HANGUL SYLLABLE HYULH;Lo;0;L;;;;;N;;;;;
+D744;HANGUL SYLLABLE HYUM;Lo;0;L;;;;;N;;;;;
+D745;HANGUL SYLLABLE HYUB;Lo;0;L;;;;;N;;;;;
+D746;HANGUL SYLLABLE HYUBS;Lo;0;L;;;;;N;;;;;
+D747;HANGUL SYLLABLE HYUS;Lo;0;L;;;;;N;;;;;
+D748;HANGUL SYLLABLE HYUSS;Lo;0;L;;;;;N;;;;;
+D749;HANGUL SYLLABLE HYUNG;Lo;0;L;;;;;N;;;;;
+D74A;HANGUL SYLLABLE HYUJ;Lo;0;L;;;;;N;;;;;
+D74B;HANGUL SYLLABLE HYUC;Lo;0;L;;;;;N;;;;;
+D74C;HANGUL SYLLABLE HYUK;Lo;0;L;;;;;N;;;;;
+D74D;HANGUL SYLLABLE HYUT;Lo;0;L;;;;;N;;;;;
+D74E;HANGUL SYLLABLE HYUP;Lo;0;L;;;;;N;;;;;
+D74F;HANGUL SYLLABLE HYUH;Lo;0;L;;;;;N;;;;;
+D750;HANGUL SYLLABLE HEU;Lo;0;L;;;;;N;;;;;
+D751;HANGUL SYLLABLE HEUG;Lo;0;L;;;;;N;;;;;
+D752;HANGUL SYLLABLE HEUGG;Lo;0;L;;;;;N;;;;;
+D753;HANGUL SYLLABLE HEUGS;Lo;0;L;;;;;N;;;;;
+D754;HANGUL SYLLABLE HEUN;Lo;0;L;;;;;N;;;;;
+D755;HANGUL SYLLABLE HEUNI;Lo;0;L;;;;;N;;;;;
+D756;HANGUL SYLLABLE HEUNH;Lo;0;L;;;;;N;;;;;
+D757;HANGUL SYLLABLE HEUD;Lo;0;L;;;;;N;;;;;
+D758;HANGUL SYLLABLE HEUL;Lo;0;L;;;;;N;;;;;
+D759;HANGUL SYLLABLE HEULG;Lo;0;L;;;;;N;;;;;
+D75A;HANGUL SYLLABLE HEULM;Lo;0;L;;;;;N;;;;;
+D75B;HANGUL SYLLABLE HEULB;Lo;0;L;;;;;N;;;;;
+D75C;HANGUL SYLLABLE HEULS;Lo;0;L;;;;;N;;;;;
+D75D;HANGUL SYLLABLE HEULT;Lo;0;L;;;;;N;;;;;
+D75E;HANGUL SYLLABLE HEULP;Lo;0;L;;;;;N;;;;;
+D75F;HANGUL SYLLABLE HEULH;Lo;0;L;;;;;N;;;;;
+D760;HANGUL SYLLABLE HEUM;Lo;0;L;;;;;N;;;;;
+D761;HANGUL SYLLABLE HEUB;Lo;0;L;;;;;N;;;;;
+D762;HANGUL SYLLABLE HEUBS;Lo;0;L;;;;;N;;;;;
+D763;HANGUL SYLLABLE HEUS;Lo;0;L;;;;;N;;;;;
+D764;HANGUL SYLLABLE HEUSS;Lo;0;L;;;;;N;;;;;
+D765;HANGUL SYLLABLE HEUNG;Lo;0;L;;;;;N;;;;;
+D766;HANGUL SYLLABLE HEUJ;Lo;0;L;;;;;N;;;;;
+D767;HANGUL SYLLABLE HEUC;Lo;0;L;;;;;N;;;;;
+D768;HANGUL SYLLABLE HEUK;Lo;0;L;;;;;N;;;;;
+D769;HANGUL SYLLABLE HEUT;Lo;0;L;;;;;N;;;;;
+D76A;HANGUL SYLLABLE HEUP;Lo;0;L;;;;;N;;;;;
+D76B;HANGUL SYLLABLE HEUH;Lo;0;L;;;;;N;;;;;
+D76C;HANGUL SYLLABLE HYI;Lo;0;L;;;;;N;;;;;
+D76D;HANGUL SYLLABLE HYIG;Lo;0;L;;;;;N;;;;;
+D76E;HANGUL SYLLABLE HYIGG;Lo;0;L;;;;;N;;;;;
+D76F;HANGUL SYLLABLE HYIGS;Lo;0;L;;;;;N;;;;;
+D770;HANGUL SYLLABLE HYIN;Lo;0;L;;;;;N;;;;;
+D771;HANGUL SYLLABLE HYINI;Lo;0;L;;;;;N;;;;;
+D772;HANGUL SYLLABLE HYINH;Lo;0;L;;;;;N;;;;;
+D773;HANGUL SYLLABLE HYID;Lo;0;L;;;;;N;;;;;
+D774;HANGUL SYLLABLE HYIL;Lo;0;L;;;;;N;;;;;
+D775;HANGUL SYLLABLE HYILG;Lo;0;L;;;;;N;;;;;
+D776;HANGUL SYLLABLE HYILM;Lo;0;L;;;;;N;;;;;
+D777;HANGUL SYLLABLE HYILB;Lo;0;L;;;;;N;;;;;
+D778;HANGUL SYLLABLE HYILS;Lo;0;L;;;;;N;;;;;
+D779;HANGUL SYLLABLE HYILT;Lo;0;L;;;;;N;;;;;
+D77A;HANGUL SYLLABLE HYILP;Lo;0;L;;;;;N;;;;;
+D77B;HANGUL SYLLABLE HYILH;Lo;0;L;;;;;N;;;;;
+D77C;HANGUL SYLLABLE HYIM;Lo;0;L;;;;;N;;;;;
+D77D;HANGUL SYLLABLE HYIB;Lo;0;L;;;;;N;;;;;
+D77E;HANGUL SYLLABLE HYIBS;Lo;0;L;;;;;N;;;;;
+D77F;HANGUL SYLLABLE HYIS;Lo;0;L;;;;;N;;;;;
+D780;HANGUL SYLLABLE HYISS;Lo;0;L;;;;;N;;;;;
+D781;HANGUL SYLLABLE HYING;Lo;0;L;;;;;N;;;;;
+D782;HANGUL SYLLABLE HYIJ;Lo;0;L;;;;;N;;;;;
+D783;HANGUL SYLLABLE HYIC;Lo;0;L;;;;;N;;;;;
+D784;HANGUL SYLLABLE HYIK;Lo;0;L;;;;;N;;;;;
+D785;HANGUL SYLLABLE HYIT;Lo;0;L;;;;;N;;;;;
+D786;HANGUL SYLLABLE HYIP;Lo;0;L;;;;;N;;;;;
+D787;HANGUL SYLLABLE HYIH;Lo;0;L;;;;;N;;;;;
+D788;HANGUL SYLLABLE HI;Lo;0;L;;;;;N;;;;;
+D789;HANGUL SYLLABLE HIG;Lo;0;L;;;;;N;;;;;
+D78A;HANGUL SYLLABLE HIGG;Lo;0;L;;;;;N;;;;;
+D78B;HANGUL SYLLABLE HIGS;Lo;0;L;;;;;N;;;;;
+D78C;HANGUL SYLLABLE HIN;Lo;0;L;;;;;N;;;;;
+D78D;HANGUL SYLLABLE HINI;Lo;0;L;;;;;N;;;;;
+D78E;HANGUL SYLLABLE HINH;Lo;0;L;;;;;N;;;;;
+D78F;HANGUL SYLLABLE HID;Lo;0;L;;;;;N;;;;;
+D790;HANGUL SYLLABLE HIL;Lo;0;L;;;;;N;;;;;
+D791;HANGUL SYLLABLE HILG;Lo;0;L;;;;;N;;;;;
+D792;HANGUL SYLLABLE HILM;Lo;0;L;;;;;N;;;;;
+D793;HANGUL SYLLABLE HILB;Lo;0;L;;;;;N;;;;;
+D794;HANGUL SYLLABLE HILS;Lo;0;L;;;;;N;;;;;
+D795;HANGUL SYLLABLE HILT;Lo;0;L;;;;;N;;;;;
+D796;HANGUL SYLLABLE HILP;Lo;0;L;;;;;N;;;;;
+D797;HANGUL SYLLABLE HILH;Lo;0;L;;;;;N;;;;;
+D798;HANGUL SYLLABLE HIM;Lo;0;L;;;;;N;;;;;
+D799;HANGUL SYLLABLE HIB;Lo;0;L;;;;;N;;;;;
+D79A;HANGUL SYLLABLE HIBS;Lo;0;L;;;;;N;;;;;
+D79B;HANGUL SYLLABLE HIS;Lo;0;L;;;;;N;;;;;
+D79C;HANGUL SYLLABLE HISS;Lo;0;L;;;;;N;;;;;
+D79D;HANGUL SYLLABLE HING;Lo;0;L;;;;;N;;;;;
+D79E;HANGUL SYLLABLE HIJ;Lo;0;L;;;;;N;;;;;
+D79F;HANGUL SYLLABLE HIC;Lo;0;L;;;;;N;;;;;
+D7A0;HANGUL SYLLABLE HIK;Lo;0;L;;;;;N;;;;;
+D7A1;HANGUL SYLLABLE HIT;Lo;0;L;;;;;N;;;;;
+D7A2;HANGUL SYLLABLE HIP;Lo;0;L;;;;;N;;;;;
+D7A3;HANGUL SYLLABLE HIH;Lo;0;L;;;;;N;;;;;
+F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
+F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
+F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
+F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
+F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
+F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
+F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
+F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
+F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
+F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
+F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
+F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
+F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
+F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
+F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
+F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
+F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
+F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
+F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
+F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
+F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
+F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
+F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
+F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
+F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
+F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
+F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
+F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
+F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
+F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
+F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
+F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
+F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
+F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
+F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
+F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
+F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
+F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
+F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
+F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
+F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
+F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
+F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
+F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
+F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
+F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
+F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
+F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
+F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
+F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
+F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
+F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
+F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
+F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
+F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
+F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
+F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
+F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
+F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
+F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
+F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
+F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
+F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
+F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
+F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
+F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
+F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
+F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
+F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
+F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
+F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
+F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
+F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
+F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
+F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
+F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
+F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
+F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
+F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
+F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
+F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
+F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;;
+F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
+F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
+F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
+F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
+F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
+F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
+F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
+F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
+F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
+F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
+F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
+F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
+F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
+F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
+F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
+F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
+F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
+F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
+F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
+F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
+F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
+F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
+F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
+F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
+F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
+F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;3;N;;;;;
+F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
+F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
+F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
+F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
+F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
+F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
+F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
+F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;10;N;;;;;
+F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
+F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
+F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
+F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
+F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;2;N;;;;;
+F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
+F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
+F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
+F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
+F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
+F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
+F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
+F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
+F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
+F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
+F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
+F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
+F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
+F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
+F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
+F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
+F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
+F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
+F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
+F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
+F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
+F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
+F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
+F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
+F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
+F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
+F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
+F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
+F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
+F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
+F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
+F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
+F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
+F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
+F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
+F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
+F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
+F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
+F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
+F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
+F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
+F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
+F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
+F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
+F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
+F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
+F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
+F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
+F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
+F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
+F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
+F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
+F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
+F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
+F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
+F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
+F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
+F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;0;N;;;;;
+F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
+F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
+F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
+F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
+F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
+F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
+F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
+F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
+F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
+F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
+F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
+F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
+F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
+F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
+F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
+F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
+F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
+F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
+F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
+F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
+F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
+F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
+F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
+F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
+F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
+F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
+F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
+F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
+F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
+F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
+F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;6;N;;;;;
+F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
+F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;6;N;;;;;
+F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
+F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
+F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
+F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
+F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
+F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
+F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
+F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
+F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
+F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
+F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
+F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
+F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
+F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
+F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
+F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
+F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
+F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
+F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
+F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
+F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
+F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
+F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
+F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
+F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
+F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
+F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
+F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
+F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
+F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
+F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
+F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
+F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
+F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
+F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
+F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
+F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
+F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
+F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
+F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
+F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
+F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;10;N;;;;;
+F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
+F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
+FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
+FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
+FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
+FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
+FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
+FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
+FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
+FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
+FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
+FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
+FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
+FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
+FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
+FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
+FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
+FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
+FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
+FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
+FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
+FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
+FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
+FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
+FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
+FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
+FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
+FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
+FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
+FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
+FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
+FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
+FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
+FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;;
+FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
+FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
+FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
+FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;;
+FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
+FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
+FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
+FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
+FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
+FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
+FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
+FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
+FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
+FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
+FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;;
+FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;;
+FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;;
+FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;;
+FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;;
+FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;;
+FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;;
+FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;;
+FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;;
+FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;;
+FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;;
+FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;;
+FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;;
+FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;;
+FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;;
+FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;;
+FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;;
+FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;;
+FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;;
+FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;;
+FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;;
+FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;;
+FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;;
+FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;;
+FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;;
+FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;;
+FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;;
+FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;;
+FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;;
+FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;;
+FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;;
+FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;;
+FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;;
+FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;;
+FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;;
+FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;;
+FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;;
+FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;;
+FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;;
+FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;;
+FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;;
+FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;;
+FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;;
+FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;;
+FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;;
+FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;;
+FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;;
+FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;;
+FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;;
+FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;;
+FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;;
+FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;;
+FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;;
+FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;;
+FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;;
+FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;;
+FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;;
+FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;;
+FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;;
+FA70;CJK COMPATIBILITY IDEOGRAPH-FA70;Lo;0;L;4E26;;;;N;;;;;
+FA71;CJK COMPATIBILITY IDEOGRAPH-FA71;Lo;0;L;51B5;;;;N;;;;;
+FA72;CJK COMPATIBILITY IDEOGRAPH-FA72;Lo;0;L;5168;;;;N;;;;;
+FA73;CJK COMPATIBILITY IDEOGRAPH-FA73;Lo;0;L;4F80;;;;N;;;;;
+FA74;CJK COMPATIBILITY IDEOGRAPH-FA74;Lo;0;L;5145;;;;N;;;;;
+FA75;CJK COMPATIBILITY IDEOGRAPH-FA75;Lo;0;L;5180;;;;N;;;;;
+FA76;CJK COMPATIBILITY IDEOGRAPH-FA76;Lo;0;L;52C7;;;;N;;;;;
+FA77;CJK COMPATIBILITY IDEOGRAPH-FA77;Lo;0;L;52FA;;;;N;;;;;
+FA78;CJK COMPATIBILITY IDEOGRAPH-FA78;Lo;0;L;559D;;;;N;;;;;
+FA79;CJK COMPATIBILITY IDEOGRAPH-FA79;Lo;0;L;5555;;;;N;;;;;
+FA7A;CJK COMPATIBILITY IDEOGRAPH-FA7A;Lo;0;L;5599;;;;N;;;;;
+FA7B;CJK COMPATIBILITY IDEOGRAPH-FA7B;Lo;0;L;55E2;;;;N;;;;;
+FA7C;CJK COMPATIBILITY IDEOGRAPH-FA7C;Lo;0;L;585A;;;;N;;;;;
+FA7D;CJK COMPATIBILITY IDEOGRAPH-FA7D;Lo;0;L;58B3;;;;N;;;;;
+FA7E;CJK COMPATIBILITY IDEOGRAPH-FA7E;Lo;0;L;5944;;;;N;;;;;
+FA7F;CJK COMPATIBILITY IDEOGRAPH-FA7F;Lo;0;L;5954;;;;N;;;;;
+FA80;CJK COMPATIBILITY IDEOGRAPH-FA80;Lo;0;L;5A62;;;;N;;;;;
+FA81;CJK COMPATIBILITY IDEOGRAPH-FA81;Lo;0;L;5B28;;;;N;;;;;
+FA82;CJK COMPATIBILITY IDEOGRAPH-FA82;Lo;0;L;5ED2;;;;N;;;;;
+FA83;CJK COMPATIBILITY IDEOGRAPH-FA83;Lo;0;L;5ED9;;;;N;;;;;
+FA84;CJK COMPATIBILITY IDEOGRAPH-FA84;Lo;0;L;5F69;;;;N;;;;;
+FA85;CJK COMPATIBILITY IDEOGRAPH-FA85;Lo;0;L;5FAD;;;;N;;;;;
+FA86;CJK COMPATIBILITY IDEOGRAPH-FA86;Lo;0;L;60D8;;;;N;;;;;
+FA87;CJK COMPATIBILITY IDEOGRAPH-FA87;Lo;0;L;614E;;;;N;;;;;
+FA88;CJK COMPATIBILITY IDEOGRAPH-FA88;Lo;0;L;6108;;;;N;;;;;
+FA89;CJK COMPATIBILITY IDEOGRAPH-FA89;Lo;0;L;618E;;;;N;;;;;
+FA8A;CJK COMPATIBILITY IDEOGRAPH-FA8A;Lo;0;L;6160;;;;N;;;;;
+FA8B;CJK COMPATIBILITY IDEOGRAPH-FA8B;Lo;0;L;61F2;;;;N;;;;;
+FA8C;CJK COMPATIBILITY IDEOGRAPH-FA8C;Lo;0;L;6234;;;;N;;;;;
+FA8D;CJK COMPATIBILITY IDEOGRAPH-FA8D;Lo;0;L;63C4;;;;N;;;;;
+FA8E;CJK COMPATIBILITY IDEOGRAPH-FA8E;Lo;0;L;641C;;;;N;;;;;
+FA8F;CJK COMPATIBILITY IDEOGRAPH-FA8F;Lo;0;L;6452;;;;N;;;;;
+FA90;CJK COMPATIBILITY IDEOGRAPH-FA90;Lo;0;L;6556;;;;N;;;;;
+FA91;CJK COMPATIBILITY IDEOGRAPH-FA91;Lo;0;L;6674;;;;N;;;;;
+FA92;CJK COMPATIBILITY IDEOGRAPH-FA92;Lo;0;L;6717;;;;N;;;;;
+FA93;CJK COMPATIBILITY IDEOGRAPH-FA93;Lo;0;L;671B;;;;N;;;;;
+FA94;CJK COMPATIBILITY IDEOGRAPH-FA94;Lo;0;L;6756;;;;N;;;;;
+FA95;CJK COMPATIBILITY IDEOGRAPH-FA95;Lo;0;L;6B79;;;;N;;;;;
+FA96;CJK COMPATIBILITY IDEOGRAPH-FA96;Lo;0;L;6BBA;;;;N;;;;;
+FA97;CJK COMPATIBILITY IDEOGRAPH-FA97;Lo;0;L;6D41;;;;N;;;;;
+FA98;CJK COMPATIBILITY IDEOGRAPH-FA98;Lo;0;L;6EDB;;;;N;;;;;
+FA99;CJK COMPATIBILITY IDEOGRAPH-FA99;Lo;0;L;6ECB;;;;N;;;;;
+FA9A;CJK COMPATIBILITY IDEOGRAPH-FA9A;Lo;0;L;6F22;;;;N;;;;;
+FA9B;CJK COMPATIBILITY IDEOGRAPH-FA9B;Lo;0;L;701E;;;;N;;;;;
+FA9C;CJK COMPATIBILITY IDEOGRAPH-FA9C;Lo;0;L;716E;;;;N;;;;;
+FA9D;CJK COMPATIBILITY IDEOGRAPH-FA9D;Lo;0;L;77A7;;;;N;;;;;
+FA9E;CJK COMPATIBILITY IDEOGRAPH-FA9E;Lo;0;L;7235;;;;N;;;;;
+FA9F;CJK COMPATIBILITY IDEOGRAPH-FA9F;Lo;0;L;72AF;;;;N;;;;;
+FAA0;CJK COMPATIBILITY IDEOGRAPH-FAA0;Lo;0;L;732A;;;;N;;;;;
+FAA1;CJK COMPATIBILITY IDEOGRAPH-FAA1;Lo;0;L;7471;;;;N;;;;;
+FAA2;CJK COMPATIBILITY IDEOGRAPH-FAA2;Lo;0;L;7506;;;;N;;;;;
+FAA3;CJK COMPATIBILITY IDEOGRAPH-FAA3;Lo;0;L;753B;;;;N;;;;;
+FAA4;CJK COMPATIBILITY IDEOGRAPH-FAA4;Lo;0;L;761D;;;;N;;;;;
+FAA5;CJK COMPATIBILITY IDEOGRAPH-FAA5;Lo;0;L;761F;;;;N;;;;;
+FAA6;CJK COMPATIBILITY IDEOGRAPH-FAA6;Lo;0;L;76CA;;;;N;;;;;
+FAA7;CJK COMPATIBILITY IDEOGRAPH-FAA7;Lo;0;L;76DB;;;;N;;;;;
+FAA8;CJK COMPATIBILITY IDEOGRAPH-FAA8;Lo;0;L;76F4;;;;N;;;;;
+FAA9;CJK COMPATIBILITY IDEOGRAPH-FAA9;Lo;0;L;774A;;;;N;;;;;
+FAAA;CJK COMPATIBILITY IDEOGRAPH-FAAA;Lo;0;L;7740;;;;N;;;;;
+FAAB;CJK COMPATIBILITY IDEOGRAPH-FAAB;Lo;0;L;78CC;;;;N;;;;;
+FAAC;CJK COMPATIBILITY IDEOGRAPH-FAAC;Lo;0;L;7AB1;;;;N;;;;;
+FAAD;CJK COMPATIBILITY IDEOGRAPH-FAAD;Lo;0;L;7BC0;;;;N;;;;;
+FAAE;CJK COMPATIBILITY IDEOGRAPH-FAAE;Lo;0;L;7C7B;;;;N;;;;;
+FAAF;CJK COMPATIBILITY IDEOGRAPH-FAAF;Lo;0;L;7D5B;;;;N;;;;;
+FAB0;CJK COMPATIBILITY IDEOGRAPH-FAB0;Lo;0;L;7DF4;;;;N;;;;;
+FAB1;CJK COMPATIBILITY IDEOGRAPH-FAB1;Lo;0;L;7F3E;;;;N;;;;;
+FAB2;CJK COMPATIBILITY IDEOGRAPH-FAB2;Lo;0;L;8005;;;;N;;;;;
+FAB3;CJK COMPATIBILITY IDEOGRAPH-FAB3;Lo;0;L;8352;;;;N;;;;;
+FAB4;CJK COMPATIBILITY IDEOGRAPH-FAB4;Lo;0;L;83EF;;;;N;;;;;
+FAB5;CJK COMPATIBILITY IDEOGRAPH-FAB5;Lo;0;L;8779;;;;N;;;;;
+FAB6;CJK COMPATIBILITY IDEOGRAPH-FAB6;Lo;0;L;8941;;;;N;;;;;
+FAB7;CJK COMPATIBILITY IDEOGRAPH-FAB7;Lo;0;L;8986;;;;N;;;;;
+FAB8;CJK COMPATIBILITY IDEOGRAPH-FAB8;Lo;0;L;8996;;;;N;;;;;
+FAB9;CJK COMPATIBILITY IDEOGRAPH-FAB9;Lo;0;L;8ABF;;;;N;;;;;
+FABA;CJK COMPATIBILITY IDEOGRAPH-FABA;Lo;0;L;8AF8;;;;N;;;;;
+FABB;CJK COMPATIBILITY IDEOGRAPH-FABB;Lo;0;L;8ACB;;;;N;;;;;
+FABC;CJK COMPATIBILITY IDEOGRAPH-FABC;Lo;0;L;8B01;;;;N;;;;;
+FABD;CJK COMPATIBILITY IDEOGRAPH-FABD;Lo;0;L;8AFE;;;;N;;;;;
+FABE;CJK COMPATIBILITY IDEOGRAPH-FABE;Lo;0;L;8AED;;;;N;;;;;
+FABF;CJK COMPATIBILITY IDEOGRAPH-FABF;Lo;0;L;8B39;;;;N;;;;;
+FAC0;CJK COMPATIBILITY IDEOGRAPH-FAC0;Lo;0;L;8B8A;;;;N;;;;;
+FAC1;CJK COMPATIBILITY IDEOGRAPH-FAC1;Lo;0;L;8D08;;;;N;;;;;
+FAC2;CJK COMPATIBILITY IDEOGRAPH-FAC2;Lo;0;L;8F38;;;;N;;;;;
+FAC3;CJK COMPATIBILITY IDEOGRAPH-FAC3;Lo;0;L;9072;;;;N;;;;;
+FAC4;CJK COMPATIBILITY IDEOGRAPH-FAC4;Lo;0;L;9199;;;;N;;;;;
+FAC5;CJK COMPATIBILITY IDEOGRAPH-FAC5;Lo;0;L;9276;;;;N;;;;;
+FAC6;CJK COMPATIBILITY IDEOGRAPH-FAC6;Lo;0;L;967C;;;;N;;;;;
+FAC7;CJK COMPATIBILITY IDEOGRAPH-FAC7;Lo;0;L;96E3;;;;N;;;;;
+FAC8;CJK COMPATIBILITY IDEOGRAPH-FAC8;Lo;0;L;9756;;;;N;;;;;
+FAC9;CJK COMPATIBILITY IDEOGRAPH-FAC9;Lo;0;L;97DB;;;;N;;;;;
+FACA;CJK COMPATIBILITY IDEOGRAPH-FACA;Lo;0;L;97FF;;;;N;;;;;
+FACB;CJK COMPATIBILITY IDEOGRAPH-FACB;Lo;0;L;980B;;;;N;;;;;
+FACC;CJK COMPATIBILITY IDEOGRAPH-FACC;Lo;0;L;983B;;;;N;;;;;
+FACD;CJK COMPATIBILITY IDEOGRAPH-FACD;Lo;0;L;9B12;;;;N;;;;;
+FACE;CJK COMPATIBILITY IDEOGRAPH-FACE;Lo;0;L;9F9C;;;;N;;;;;
+FACF;CJK COMPATIBILITY IDEOGRAPH-FACF;Lo;0;L;2284A;;;;N;;;;;
+FAD0;CJK COMPATIBILITY IDEOGRAPH-FAD0;Lo;0;L;22844;;;;N;;;;;
+FAD1;CJK COMPATIBILITY IDEOGRAPH-FAD1;Lo;0;L;233D5;;;;N;;;;;
+FAD2;CJK COMPATIBILITY IDEOGRAPH-FAD2;Lo;0;L;3B9D;;;;N;;;;;
+FAD3;CJK COMPATIBILITY IDEOGRAPH-FAD3;Lo;0;L;4018;;;;N;;;;;
+FAD4;CJK COMPATIBILITY IDEOGRAPH-FAD4;Lo;0;L;4039;;;;N;;;;;
+FAD5;CJK COMPATIBILITY IDEOGRAPH-FAD5;Lo;0;L;25249;;;;N;;;;;
+FAD6;CJK COMPATIBILITY IDEOGRAPH-FAD6;Lo;0;L;25CD0;;;;N;;;;;
+FAD7;CJK COMPATIBILITY IDEOGRAPH-FAD7;Lo;0;L;27ED3;;;;N;;;;;
+FAD8;CJK COMPATIBILITY IDEOGRAPH-FAD8;Lo;0;L;9F43;;;;N;;;;;
+FAD9;CJK COMPATIBILITY IDEOGRAPH-FAD9;Lo;0;L;9F8E;;;;N;;;;;
+FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
+FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
+FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
+FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
+FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
+FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
+FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
+FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
+FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
+FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
+FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
+FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
+FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;;
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;;
+FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
+FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
+FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
+FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
+FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
+FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
+FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
+FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
+FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
+FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
+FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ES;<font> 002B;;;;N;;;;;
+FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
+FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
+FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;
+FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;
+FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
+FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
+FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
+FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
+FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
+FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
+FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
+FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
+FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
+FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
+FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
+FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
+FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
+FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
+FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
+FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
+FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
+FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
+FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
+FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
+FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
+FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
+FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
+FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
+FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
+FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
+FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
+FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
+FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
+FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;
+FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
+FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
+FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
+FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FDFC;RIAL SIGN;Sc;0;AL;<isolated> 0631 06CC 0627 0644;;;;N;;;;;
+FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;;
+FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;;
+FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;;
+FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;;
+FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;;
+FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;;
+FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;;
+FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;;
+FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;;
+FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;;
+FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;;
+FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;;
+FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;;
+FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;;
+FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;;
+FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;;
+FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;;
+FE10;PRESENTATION FORM FOR VERTICAL COMMA;Po;0;ON;<vertical> 002C;;;;N;;;;;
+FE11;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;Po;0;ON;<vertical> 3001;;;;N;;;;;
+FE12;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;Po;0;ON;<vertical> 3002;;;;N;;;;;
+FE13;PRESENTATION FORM FOR VERTICAL COLON;Po;0;ON;<vertical> 003A;;;;N;;;;;
+FE14;PRESENTATION FORM FOR VERTICAL SEMICOLON;Po;0;ON;<vertical> 003B;;;;N;;;;;
+FE15;PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;Po;0;ON;<vertical> 0021;;;;N;;;;;
+FE16;PRESENTATION FORM FOR VERTICAL QUESTION MARK;Po;0;ON;<vertical> 003F;;;;N;;;;;
+FE17;PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;<vertical> 3016;;;;N;;;;;
+FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Pe;0;ON;<vertical> 3017;;;;N;;;;;
+FE19;PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;Po;0;ON;<vertical> 2026;;;;N;;;;;
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE24;COMBINING MACRON LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE25;COMBINING MACRON RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE26;COMBINING CONJOINING MACRON;Mn;230;NSM;;;;;N;;;;;
+FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
+FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
+FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
+FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
+FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
+FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
+FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
+FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
+FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
+FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
+FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
+FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
+FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
+FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
+FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
+FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
+FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
+FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
+FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
+FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
+FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
+FE45;SESAME DOT;Po;0;ON;;;;;N;;;;;
+FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;;
+FE47;PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;Ps;0;ON;<vertical> 005B;;;;N;;;;;
+FE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON;<vertical> 005D;;;;N;;;;;
+FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
+FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
+FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
+FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
+FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
+FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
+FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
+FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
+FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
+FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
+FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
+FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
+FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
+FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
+FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
+FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;Y;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;Y;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;Y;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;Y;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;Y;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;Y;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
+FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
+FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
+FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
+FE62;SMALL PLUS SIGN;Sm;0;ES;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ES;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;Y;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;Y;;;;;
+FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
+FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
+FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
+FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
+FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
+FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;;
+FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
+FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
+FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
+FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
+FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
+FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
+FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
+FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ES;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ES;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;CS;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
+FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
+FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
+FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
+FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
+FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
+FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
+FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
+FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
+FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
+FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
+FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
+FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
+FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;Y;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;Y;;;;;
+FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
+FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
+FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
+FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
+FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
+FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
+FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
+FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
+FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
+FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
+FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
+FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
+FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
+FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
+FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
+FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
+FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
+FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
+FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
+FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
+FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
+FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
+FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
+FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
+FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
+FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
+FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
+FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
+FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;;
+FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
+FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;;
+FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
+FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
+FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
+FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
+FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
+FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
+FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
+FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
+FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
+FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
+FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
+FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
+FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
+FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
+FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
+FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
+FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
+FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
+FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
+FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
+FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
+FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
+FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
+FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
+FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
+FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
+FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
+FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
+FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
+FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;;
+FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
+FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON;<wide> 2985;;;;Y;;*;;;
+FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON;<wide> 2986;;;;Y;;*;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;ON;<narrow> 30FB;;;;N;;;;;
+FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
+FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
+FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
+FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
+FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
+FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
+FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
+FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
+FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
+FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
+FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
+FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
+FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
+FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
+FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
+FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
+FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
+FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
+FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
+FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
+FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
+FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
+FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
+FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
+FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
+FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
+FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
+FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
+FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
+FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
+FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
+FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
+FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
+FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
+FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
+FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
+FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
+FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
+FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
+FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
+FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
+FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
+FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
+FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
+FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
+FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
+FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
+FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
+FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
+FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
+FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
+FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
+FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
+FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
+FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
+FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
+FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;;
+FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
+FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
+FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
+FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
+FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
+FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
+FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
+FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
+FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
+FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
+FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
+FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
+FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
+FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
+FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
+FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
+FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
+FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
+FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
+FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
+FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
+FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
+FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
+FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
+FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
+FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
+FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
+FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
+FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
+FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
+FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
+FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
+FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
+FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
+FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
+FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
+FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
+FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
+FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
+FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
+FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
+FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
+FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
+FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
+FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
+FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
+FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
+FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
+FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
+FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
+FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
+FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
+FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
+FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
+FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
+FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;;
+FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
+FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
+FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
+FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;;
+FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
+FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
+FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
+FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
+FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
+FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
+FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;ON;;;;;N;;;;;
+FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;ON;;;;;N;;;;;
+FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;ON;;;;;N;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+10000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;;
+10001;LINEAR B SYLLABLE B038 E;Lo;0;L;;;;;N;;;;;
+10002;LINEAR B SYLLABLE B028 I;Lo;0;L;;;;;N;;;;;
+10003;LINEAR B SYLLABLE B061 O;Lo;0;L;;;;;N;;;;;
+10004;LINEAR B SYLLABLE B010 U;Lo;0;L;;;;;N;;;;;
+10005;LINEAR B SYLLABLE B001 DA;Lo;0;L;;;;;N;;;;;
+10006;LINEAR B SYLLABLE B045 DE;Lo;0;L;;;;;N;;;;;
+10007;LINEAR B SYLLABLE B007 DI;Lo;0;L;;;;;N;;;;;
+10008;LINEAR B SYLLABLE B014 DO;Lo;0;L;;;;;N;;;;;
+10009;LINEAR B SYLLABLE B051 DU;Lo;0;L;;;;;N;;;;;
+1000A;LINEAR B SYLLABLE B057 JA;Lo;0;L;;;;;N;;;;;
+1000B;LINEAR B SYLLABLE B046 JE;Lo;0;L;;;;;N;;;;;
+1000D;LINEAR B SYLLABLE B036 JO;Lo;0;L;;;;;N;;;;;
+1000E;LINEAR B SYLLABLE B065 JU;Lo;0;L;;;;;N;;;;;
+1000F;LINEAR B SYLLABLE B077 KA;Lo;0;L;;;;;N;;;;;
+10010;LINEAR B SYLLABLE B044 KE;Lo;0;L;;;;;N;;;;;
+10011;LINEAR B SYLLABLE B067 KI;Lo;0;L;;;;;N;;;;;
+10012;LINEAR B SYLLABLE B070 KO;Lo;0;L;;;;;N;;;;;
+10013;LINEAR B SYLLABLE B081 KU;Lo;0;L;;;;;N;;;;;
+10014;LINEAR B SYLLABLE B080 MA;Lo;0;L;;;;;N;;;;;
+10015;LINEAR B SYLLABLE B013 ME;Lo;0;L;;;;;N;;;;;
+10016;LINEAR B SYLLABLE B073 MI;Lo;0;L;;;;;N;;;;;
+10017;LINEAR B SYLLABLE B015 MO;Lo;0;L;;;;;N;;;;;
+10018;LINEAR B SYLLABLE B023 MU;Lo;0;L;;;;;N;;;;;
+10019;LINEAR B SYLLABLE B006 NA;Lo;0;L;;;;;N;;;;;
+1001A;LINEAR B SYLLABLE B024 NE;Lo;0;L;;;;;N;;;;;
+1001B;LINEAR B SYLLABLE B030 NI;Lo;0;L;;;;;N;;;;;
+1001C;LINEAR B SYLLABLE B052 NO;Lo;0;L;;;;;N;;;;;
+1001D;LINEAR B SYLLABLE B055 NU;Lo;0;L;;;;;N;;;;;
+1001E;LINEAR B SYLLABLE B003 PA;Lo;0;L;;;;;N;;;;;
+1001F;LINEAR B SYLLABLE B072 PE;Lo;0;L;;;;;N;;;;;
+10020;LINEAR B SYLLABLE B039 PI;Lo;0;L;;;;;N;;;;;
+10021;LINEAR B SYLLABLE B011 PO;Lo;0;L;;;;;N;;;;;
+10022;LINEAR B SYLLABLE B050 PU;Lo;0;L;;;;;N;;;;;
+10023;LINEAR B SYLLABLE B016 QA;Lo;0;L;;;;;N;;;;;
+10024;LINEAR B SYLLABLE B078 QE;Lo;0;L;;;;;N;;;;;
+10025;LINEAR B SYLLABLE B021 QI;Lo;0;L;;;;;N;;;;;
+10026;LINEAR B SYLLABLE B032 QO;Lo;0;L;;;;;N;;;;;
+10028;LINEAR B SYLLABLE B060 RA;Lo;0;L;;;;;N;;;;;
+10029;LINEAR B SYLLABLE B027 RE;Lo;0;L;;;;;N;;;;;
+1002A;LINEAR B SYLLABLE B053 RI;Lo;0;L;;;;;N;;;;;
+1002B;LINEAR B SYLLABLE B002 RO;Lo;0;L;;;;;N;;;;;
+1002C;LINEAR B SYLLABLE B026 RU;Lo;0;L;;;;;N;;;;;
+1002D;LINEAR B SYLLABLE B031 SA;Lo;0;L;;;;;N;;;;;
+1002E;LINEAR B SYLLABLE B009 SE;Lo;0;L;;;;;N;;;;;
+1002F;LINEAR B SYLLABLE B041 SI;Lo;0;L;;;;;N;;;;;
+10030;LINEAR B SYLLABLE B012 SO;Lo;0;L;;;;;N;;;;;
+10031;LINEAR B SYLLABLE B058 SU;Lo;0;L;;;;;N;;;;;
+10032;LINEAR B SYLLABLE B059 TA;Lo;0;L;;;;;N;;;;;
+10033;LINEAR B SYLLABLE B004 TE;Lo;0;L;;;;;N;;;;;
+10034;LINEAR B SYLLABLE B037 TI;Lo;0;L;;;;;N;;;;;
+10035;LINEAR B SYLLABLE B005 TO;Lo;0;L;;;;;N;;;;;
+10036;LINEAR B SYLLABLE B069 TU;Lo;0;L;;;;;N;;;;;
+10037;LINEAR B SYLLABLE B054 WA;Lo;0;L;;;;;N;;;;;
+10038;LINEAR B SYLLABLE B075 WE;Lo;0;L;;;;;N;;;;;
+10039;LINEAR B SYLLABLE B040 WI;Lo;0;L;;;;;N;;;;;
+1003A;LINEAR B SYLLABLE B042 WO;Lo;0;L;;;;;N;;;;;
+1003C;LINEAR B SYLLABLE B017 ZA;Lo;0;L;;;;;N;;;;;
+1003D;LINEAR B SYLLABLE B074 ZE;Lo;0;L;;;;;N;;;;;
+1003F;LINEAR B SYLLABLE B020 ZO;Lo;0;L;;;;;N;;;;;
+10040;LINEAR B SYLLABLE B025 A2;Lo;0;L;;;;;N;;;;;
+10041;LINEAR B SYLLABLE B043 A3;Lo;0;L;;;;;N;;;;;
+10042;LINEAR B SYLLABLE B085 AU;Lo;0;L;;;;;N;;;;;
+10043;LINEAR B SYLLABLE B071 DWE;Lo;0;L;;;;;N;;;;;
+10044;LINEAR B SYLLABLE B090 DWO;Lo;0;L;;;;;N;;;;;
+10045;LINEAR B SYLLABLE B048 NWA;Lo;0;L;;;;;N;;;;;
+10046;LINEAR B SYLLABLE B029 PU2;Lo;0;L;;;;;N;;;;;
+10047;LINEAR B SYLLABLE B062 PTE;Lo;0;L;;;;;N;;;;;
+10048;LINEAR B SYLLABLE B076 RA2;Lo;0;L;;;;;N;;;;;
+10049;LINEAR B SYLLABLE B033 RA3;Lo;0;L;;;;;N;;;;;
+1004A;LINEAR B SYLLABLE B068 RO2;Lo;0;L;;;;;N;;;;;
+1004B;LINEAR B SYLLABLE B066 TA2;Lo;0;L;;;;;N;;;;;
+1004C;LINEAR B SYLLABLE B087 TWE;Lo;0;L;;;;;N;;;;;
+1004D;LINEAR B SYLLABLE B091 TWO;Lo;0;L;;;;;N;;;;;
+10050;LINEAR B SYMBOL B018;Lo;0;L;;;;;N;;;;;
+10051;LINEAR B SYMBOL B019;Lo;0;L;;;;;N;;;;;
+10052;LINEAR B SYMBOL B022;Lo;0;L;;;;;N;;;;;
+10053;LINEAR B SYMBOL B034;Lo;0;L;;;;;N;;;;;
+10054;LINEAR B SYMBOL B047;Lo;0;L;;;;;N;;;;;
+10055;LINEAR B SYMBOL B049;Lo;0;L;;;;;N;;;;;
+10056;LINEAR B SYMBOL B056;Lo;0;L;;;;;N;;;;;
+10057;LINEAR B SYMBOL B063;Lo;0;L;;;;;N;;;;;
+10058;LINEAR B SYMBOL B064;Lo;0;L;;;;;N;;;;;
+10059;LINEAR B SYMBOL B079;Lo;0;L;;;;;N;;;;;
+1005A;LINEAR B SYMBOL B082;Lo;0;L;;;;;N;;;;;
+1005B;LINEAR B SYMBOL B083;Lo;0;L;;;;;N;;;;;
+1005C;LINEAR B SYMBOL B086;Lo;0;L;;;;;N;;;;;
+1005D;LINEAR B SYMBOL B089;Lo;0;L;;;;;N;;;;;
+10080;LINEAR B IDEOGRAM B100 MAN;Lo;0;L;;;;;N;;;;;
+10081;LINEAR B IDEOGRAM B102 WOMAN;Lo;0;L;;;;;N;;;;;
+10082;LINEAR B IDEOGRAM B104 DEER;Lo;0;L;;;;;N;;;;;
+10083;LINEAR B IDEOGRAM B105 EQUID;Lo;0;L;;;;;N;;;;;
+10084;LINEAR B IDEOGRAM B105F MARE;Lo;0;L;;;;;N;;;;;
+10085;LINEAR B IDEOGRAM B105M STALLION;Lo;0;L;;;;;N;;;;;
+10086;LINEAR B IDEOGRAM B106F EWE;Lo;0;L;;;;;N;;;;;
+10087;LINEAR B IDEOGRAM B106M RAM;Lo;0;L;;;;;N;;;;;
+10088;LINEAR B IDEOGRAM B107F SHE-GOAT;Lo;0;L;;;;;N;;;;;
+10089;LINEAR B IDEOGRAM B107M HE-GOAT;Lo;0;L;;;;;N;;;;;
+1008A;LINEAR B IDEOGRAM B108F SOW;Lo;0;L;;;;;N;;;;;
+1008B;LINEAR B IDEOGRAM B108M BOAR;Lo;0;L;;;;;N;;;;;
+1008C;LINEAR B IDEOGRAM B109F COW;Lo;0;L;;;;;N;;;;;
+1008D;LINEAR B IDEOGRAM B109M BULL;Lo;0;L;;;;;N;;;;;
+1008E;LINEAR B IDEOGRAM B120 WHEAT;Lo;0;L;;;;;N;;;;;
+1008F;LINEAR B IDEOGRAM B121 BARLEY;Lo;0;L;;;;;N;;;;;
+10090;LINEAR B IDEOGRAM B122 OLIVE;Lo;0;L;;;;;N;;;;;
+10091;LINEAR B IDEOGRAM B123 SPICE;Lo;0;L;;;;;N;;;;;
+10092;LINEAR B IDEOGRAM B125 CYPERUS;Lo;0;L;;;;;N;;;;;
+10093;LINEAR B MONOGRAM B127 KAPO;Lo;0;L;;;;;N;;;;;
+10094;LINEAR B MONOGRAM B128 KANAKO;Lo;0;L;;;;;N;;;;;
+10095;LINEAR B IDEOGRAM B130 OIL;Lo;0;L;;;;;N;;;;;
+10096;LINEAR B IDEOGRAM B131 WINE;Lo;0;L;;;;;N;;;;;
+10097;LINEAR B IDEOGRAM B132;Lo;0;L;;;;;N;;;;;
+10098;LINEAR B MONOGRAM B133 AREPA;Lo;0;L;;;;;N;;;;;
+10099;LINEAR B MONOGRAM B135 MERI;Lo;0;L;;;;;N;;;;;
+1009A;LINEAR B IDEOGRAM B140 BRONZE;Lo;0;L;;;;;N;;;;;
+1009B;LINEAR B IDEOGRAM B141 GOLD;Lo;0;L;;;;;N;;;;;
+1009C;LINEAR B IDEOGRAM B142;Lo;0;L;;;;;N;;;;;
+1009D;LINEAR B IDEOGRAM B145 WOOL;Lo;0;L;;;;;N;;;;;
+1009E;LINEAR B IDEOGRAM B146;Lo;0;L;;;;;N;;;;;
+1009F;LINEAR B IDEOGRAM B150;Lo;0;L;;;;;N;;;;;
+100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;;
+100A1;LINEAR B IDEOGRAM B152;Lo;0;L;;;;;N;;;;;
+100A2;LINEAR B IDEOGRAM B153;Lo;0;L;;;;;N;;;;;
+100A3;LINEAR B IDEOGRAM B154;Lo;0;L;;;;;N;;;;;
+100A4;LINEAR B MONOGRAM B156 TURO2;Lo;0;L;;;;;N;;;;;
+100A5;LINEAR B IDEOGRAM B157;Lo;0;L;;;;;N;;;;;
+100A6;LINEAR B IDEOGRAM B158;Lo;0;L;;;;;N;;;;;
+100A7;LINEAR B IDEOGRAM B159 CLOTH;Lo;0;L;;;;;N;;;;;
+100A8;LINEAR B IDEOGRAM B160;Lo;0;L;;;;;N;;;;;
+100A9;LINEAR B IDEOGRAM B161;Lo;0;L;;;;;N;;;;;
+100AA;LINEAR B IDEOGRAM B162 GARMENT;Lo;0;L;;;;;N;;;;;
+100AB;LINEAR B IDEOGRAM B163 ARMOUR;Lo;0;L;;;;;N;;;;;
+100AC;LINEAR B IDEOGRAM B164;Lo;0;L;;;;;N;;;;;
+100AD;LINEAR B IDEOGRAM B165;Lo;0;L;;;;;N;;;;;
+100AE;LINEAR B IDEOGRAM B166;Lo;0;L;;;;;N;;;;;
+100AF;LINEAR B IDEOGRAM B167;Lo;0;L;;;;;N;;;;;
+100B0;LINEAR B IDEOGRAM B168;Lo;0;L;;;;;N;;;;;
+100B1;LINEAR B IDEOGRAM B169;Lo;0;L;;;;;N;;;;;
+100B2;LINEAR B IDEOGRAM B170;Lo;0;L;;;;;N;;;;;
+100B3;LINEAR B IDEOGRAM B171;Lo;0;L;;;;;N;;;;;
+100B4;LINEAR B IDEOGRAM B172;Lo;0;L;;;;;N;;;;;
+100B5;LINEAR B IDEOGRAM B173 MONTH;Lo;0;L;;;;;N;;;;;
+100B6;LINEAR B IDEOGRAM B174;Lo;0;L;;;;;N;;;;;
+100B7;LINEAR B IDEOGRAM B176 TREE;Lo;0;L;;;;;N;;;;;
+100B8;LINEAR B IDEOGRAM B177;Lo;0;L;;;;;N;;;;;
+100B9;LINEAR B IDEOGRAM B178;Lo;0;L;;;;;N;;;;;
+100BA;LINEAR B IDEOGRAM B179;Lo;0;L;;;;;N;;;;;
+100BB;LINEAR B IDEOGRAM B180;Lo;0;L;;;;;N;;;;;
+100BC;LINEAR B IDEOGRAM B181;Lo;0;L;;;;;N;;;;;
+100BD;LINEAR B IDEOGRAM B182;Lo;0;L;;;;;N;;;;;
+100BE;LINEAR B IDEOGRAM B183;Lo;0;L;;;;;N;;;;;
+100BF;LINEAR B IDEOGRAM B184;Lo;0;L;;;;;N;;;;;
+100C0;LINEAR B IDEOGRAM B185;Lo;0;L;;;;;N;;;;;
+100C1;LINEAR B IDEOGRAM B189;Lo;0;L;;;;;N;;;;;
+100C2;LINEAR B IDEOGRAM B190;Lo;0;L;;;;;N;;;;;
+100C3;LINEAR B IDEOGRAM B191 HELMET;Lo;0;L;;;;;N;;;;;
+100C4;LINEAR B IDEOGRAM B220 FOOTSTOOL;Lo;0;L;;;;;N;;;;;
+100C5;LINEAR B IDEOGRAM B225 BATHTUB;Lo;0;L;;;;;N;;;;;
+100C6;LINEAR B IDEOGRAM B230 SPEAR;Lo;0;L;;;;;N;;;;;
+100C7;LINEAR B IDEOGRAM B231 ARROW;Lo;0;L;;;;;N;;;;;
+100C8;LINEAR B IDEOGRAM B232;Lo;0;L;;;;;N;;;;;
+100C9;LINEAR B IDEOGRAM B233 SWORD;Lo;0;L;;;;;N;;pug;;;
+100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;;
+100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;gup;;;
+100CC;LINEAR B IDEOGRAM B240 WHEELED CHARIOT;Lo;0;L;;;;;N;;;;;
+100CD;LINEAR B IDEOGRAM B241 CHARIOT;Lo;0;L;;;;;N;;;;;
+100CE;LINEAR B IDEOGRAM B242 CHARIOT FRAME;Lo;0;L;;;;;N;;;;;
+100CF;LINEAR B IDEOGRAM B243 WHEEL;Lo;0;L;;;;;N;;;;;
+100D0;LINEAR B IDEOGRAM B245;Lo;0;L;;;;;N;;;;;
+100D1;LINEAR B IDEOGRAM B246;Lo;0;L;;;;;N;;;;;
+100D2;LINEAR B MONOGRAM B247 DIPTE;Lo;0;L;;;;;N;;;;;
+100D3;LINEAR B IDEOGRAM B248;Lo;0;L;;;;;N;;;;;
+100D4;LINEAR B IDEOGRAM B249;Lo;0;L;;;;;N;;;;;
+100D5;LINEAR B IDEOGRAM B251;Lo;0;L;;;;;N;;;;;
+100D6;LINEAR B IDEOGRAM B252;Lo;0;L;;;;;N;;;;;
+100D7;LINEAR B IDEOGRAM B253;Lo;0;L;;;;;N;;;;;
+100D8;LINEAR B IDEOGRAM B254 DART;Lo;0;L;;;;;N;;;;;
+100D9;LINEAR B IDEOGRAM B255;Lo;0;L;;;;;N;;;;;
+100DA;LINEAR B IDEOGRAM B256;Lo;0;L;;;;;N;;;;;
+100DB;LINEAR B IDEOGRAM B257;Lo;0;L;;;;;N;;;;;
+100DC;LINEAR B IDEOGRAM B258;Lo;0;L;;;;;N;;;;;
+100DD;LINEAR B IDEOGRAM B259;Lo;0;L;;;;;N;;;;;
+100DE;LINEAR B IDEOGRAM VESSEL B155;Lo;0;L;;;;;N;;;;;
+100DF;LINEAR B IDEOGRAM VESSEL B200;Lo;0;L;;;;;N;;;;;
+100E0;LINEAR B IDEOGRAM VESSEL B201;Lo;0;L;;;;;N;;;;;
+100E1;LINEAR B IDEOGRAM VESSEL B202;Lo;0;L;;;;;N;;;;;
+100E2;LINEAR B IDEOGRAM VESSEL B203;Lo;0;L;;;;;N;;;;;
+100E3;LINEAR B IDEOGRAM VESSEL B204;Lo;0;L;;;;;N;;;;;
+100E4;LINEAR B IDEOGRAM VESSEL B205;Lo;0;L;;;;;N;;;;;
+100E5;LINEAR B IDEOGRAM VESSEL B206;Lo;0;L;;;;;N;;;;;
+100E6;LINEAR B IDEOGRAM VESSEL B207;Lo;0;L;;;;;N;;;;;
+100E7;LINEAR B IDEOGRAM VESSEL B208;Lo;0;L;;;;;N;;;;;
+100E8;LINEAR B IDEOGRAM VESSEL B209;Lo;0;L;;;;;N;;;;;
+100E9;LINEAR B IDEOGRAM VESSEL B210;Lo;0;L;;;;;N;;;;;
+100EA;LINEAR B IDEOGRAM VESSEL B211;Lo;0;L;;;;;N;;;;;
+100EB;LINEAR B IDEOGRAM VESSEL B212;Lo;0;L;;;;;N;;;;;
+100EC;LINEAR B IDEOGRAM VESSEL B213;Lo;0;L;;;;;N;;;;;
+100ED;LINEAR B IDEOGRAM VESSEL B214;Lo;0;L;;;;;N;;;;;
+100EE;LINEAR B IDEOGRAM VESSEL B215;Lo;0;L;;;;;N;;;;;
+100EF;LINEAR B IDEOGRAM VESSEL B216;Lo;0;L;;;;;N;;;;;
+100F0;LINEAR B IDEOGRAM VESSEL B217;Lo;0;L;;;;;N;;;;;
+100F1;LINEAR B IDEOGRAM VESSEL B218;Lo;0;L;;;;;N;;;;;
+100F2;LINEAR B IDEOGRAM VESSEL B219;Lo;0;L;;;;;N;;;;;
+100F3;LINEAR B IDEOGRAM VESSEL B221;Lo;0;L;;;;;N;;;;;
+100F4;LINEAR B IDEOGRAM VESSEL B222;Lo;0;L;;;;;N;;;;;
+100F5;LINEAR B IDEOGRAM VESSEL B226;Lo;0;L;;;;;N;;;;;
+100F6;LINEAR B IDEOGRAM VESSEL B227;Lo;0;L;;;;;N;;;;;
+100F7;LINEAR B IDEOGRAM VESSEL B228;Lo;0;L;;;;;N;;;;;
+100F8;LINEAR B IDEOGRAM VESSEL B229;Lo;0;L;;;;;N;;;;;
+100F9;LINEAR B IDEOGRAM VESSEL B250;Lo;0;L;;;;;N;;;;;
+100FA;LINEAR B IDEOGRAM VESSEL B305;Lo;0;L;;;;;N;;;;;
+10100;AEGEAN WORD SEPARATOR LINE;Po;0;L;;;;;N;;;;;
+10101;AEGEAN WORD SEPARATOR DOT;Po;0;ON;;;;;N;;;;;
+10102;AEGEAN CHECK MARK;So;0;L;;;;;N;;;;;
+10107;AEGEAN NUMBER ONE;No;0;L;;;;1;N;;;;;
+10108;AEGEAN NUMBER TWO;No;0;L;;;;2;N;;;;;
+10109;AEGEAN NUMBER THREE;No;0;L;;;;3;N;;;;;
+1010A;AEGEAN NUMBER FOUR;No;0;L;;;;4;N;;;;;
+1010B;AEGEAN NUMBER FIVE;No;0;L;;;;5;N;;;;;
+1010C;AEGEAN NUMBER SIX;No;0;L;;;;6;N;;;;;
+1010D;AEGEAN NUMBER SEVEN;No;0;L;;;;7;N;;;;;
+1010E;AEGEAN NUMBER EIGHT;No;0;L;;;;8;N;;;;;
+1010F;AEGEAN NUMBER NINE;No;0;L;;;;9;N;;;;;
+10110;AEGEAN NUMBER TEN;No;0;L;;;;10;N;;;;;
+10111;AEGEAN NUMBER TWENTY;No;0;L;;;;20;N;;;;;
+10112;AEGEAN NUMBER THIRTY;No;0;L;;;;30;N;;;;;
+10113;AEGEAN NUMBER FORTY;No;0;L;;;;40;N;;;;;
+10114;AEGEAN NUMBER FIFTY;No;0;L;;;;50;N;;;;;
+10115;AEGEAN NUMBER SIXTY;No;0;L;;;;60;N;;;;;
+10116;AEGEAN NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
+10117;AEGEAN NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
+10118;AEGEAN NUMBER NINETY;No;0;L;;;;90;N;;;;;
+10119;AEGEAN NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+1011A;AEGEAN NUMBER TWO HUNDRED;No;0;L;;;;200;N;;;;;
+1011B;AEGEAN NUMBER THREE HUNDRED;No;0;L;;;;300;N;;;;;
+1011C;AEGEAN NUMBER FOUR HUNDRED;No;0;L;;;;400;N;;;;;
+1011D;AEGEAN NUMBER FIVE HUNDRED;No;0;L;;;;500;N;;;;;
+1011E;AEGEAN NUMBER SIX HUNDRED;No;0;L;;;;600;N;;;;;
+1011F;AEGEAN NUMBER SEVEN HUNDRED;No;0;L;;;;700;N;;;;;
+10120;AEGEAN NUMBER EIGHT HUNDRED;No;0;L;;;;800;N;;;;;
+10121;AEGEAN NUMBER NINE HUNDRED;No;0;L;;;;900;N;;;;;
+10122;AEGEAN NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+10123;AEGEAN NUMBER TWO THOUSAND;No;0;L;;;;2000;N;;;;;
+10124;AEGEAN NUMBER THREE THOUSAND;No;0;L;;;;3000;N;;;;;
+10125;AEGEAN NUMBER FOUR THOUSAND;No;0;L;;;;4000;N;;;;;
+10126;AEGEAN NUMBER FIVE THOUSAND;No;0;L;;;;5000;N;;;;;
+10127;AEGEAN NUMBER SIX THOUSAND;No;0;L;;;;6000;N;;;;;
+10128;AEGEAN NUMBER SEVEN THOUSAND;No;0;L;;;;7000;N;;;;;
+10129;AEGEAN NUMBER EIGHT THOUSAND;No;0;L;;;;8000;N;;;;;
+1012A;AEGEAN NUMBER NINE THOUSAND;No;0;L;;;;9000;N;;;;;
+1012B;AEGEAN NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
+1012C;AEGEAN NUMBER TWENTY THOUSAND;No;0;L;;;;20000;N;;;;;
+1012D;AEGEAN NUMBER THIRTY THOUSAND;No;0;L;;;;30000;N;;;;;
+1012E;AEGEAN NUMBER FORTY THOUSAND;No;0;L;;;;40000;N;;;;;
+1012F;AEGEAN NUMBER FIFTY THOUSAND;No;0;L;;;;50000;N;;;;;
+10130;AEGEAN NUMBER SIXTY THOUSAND;No;0;L;;;;60000;N;;;;;
+10131;AEGEAN NUMBER SEVENTY THOUSAND;No;0;L;;;;70000;N;;;;;
+10132;AEGEAN NUMBER EIGHTY THOUSAND;No;0;L;;;;80000;N;;;;;
+10133;AEGEAN NUMBER NINETY THOUSAND;No;0;L;;;;90000;N;;;;;
+10137;AEGEAN WEIGHT BASE UNIT;So;0;L;;;;;N;;;;;
+10138;AEGEAN WEIGHT FIRST SUBUNIT;So;0;L;;;;;N;;;;;
+10139;AEGEAN WEIGHT SECOND SUBUNIT;So;0;L;;;;;N;;;;;
+1013A;AEGEAN WEIGHT THIRD SUBUNIT;So;0;L;;;;;N;;;;;
+1013B;AEGEAN WEIGHT FOURTH SUBUNIT;So;0;L;;;;;N;;;;;
+1013C;AEGEAN DRY MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;;
+1013D;AEGEAN LIQUID MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;;
+1013E;AEGEAN MEASURE SECOND SUBUNIT;So;0;L;;;;;N;;;;;
+1013F;AEGEAN MEASURE THIRD SUBUNIT;So;0;L;;;;;N;;;;;
+10140;GREEK ACROPHONIC ATTIC ONE QUARTER;Nl;0;ON;;;;1/4;N;;;;;
+10141;GREEK ACROPHONIC ATTIC ONE HALF;Nl;0;ON;;;;1/2;N;;;;;
+10142;GREEK ACROPHONIC ATTIC ONE DRACHMA;Nl;0;ON;;;;1;N;;;;;
+10143;GREEK ACROPHONIC ATTIC FIVE;Nl;0;ON;;;;5;N;;;;;
+10144;GREEK ACROPHONIC ATTIC FIFTY;Nl;0;ON;;;;50;N;;;;;
+10145;GREEK ACROPHONIC ATTIC FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+10146;GREEK ACROPHONIC ATTIC FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;;
+10147;GREEK ACROPHONIC ATTIC FIFTY THOUSAND;Nl;0;ON;;;;50000;N;;;;;
+10148;GREEK ACROPHONIC ATTIC FIVE TALENTS;Nl;0;ON;;;;5;N;;;;;
+10149;GREEK ACROPHONIC ATTIC TEN TALENTS;Nl;0;ON;;;;10;N;;;;;
+1014A;GREEK ACROPHONIC ATTIC FIFTY TALENTS;Nl;0;ON;;;;50;N;;;;;
+1014B;GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS;Nl;0;ON;;;;100;N;;;;;
+1014C;GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS;Nl;0;ON;;;;500;N;;;;;
+1014D;GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS;Nl;0;ON;;;;1000;N;;;;;
+1014E;GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS;Nl;0;ON;;;;5000;N;;;;;
+1014F;GREEK ACROPHONIC ATTIC FIVE STATERS;Nl;0;ON;;;;5;N;;;;;
+10150;GREEK ACROPHONIC ATTIC TEN STATERS;Nl;0;ON;;;;10;N;;;;;
+10151;GREEK ACROPHONIC ATTIC FIFTY STATERS;Nl;0;ON;;;;50;N;;;;;
+10152;GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS;Nl;0;ON;;;;100;N;;;;;
+10153;GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS;Nl;0;ON;;;;500;N;;;;;
+10154;GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS;Nl;0;ON;;;;1000;N;;;;;
+10155;GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS;Nl;0;ON;;;;10000;N;;;;;
+10156;GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS;Nl;0;ON;;;;50000;N;;;;;
+10157;GREEK ACROPHONIC ATTIC TEN MNAS;Nl;0;ON;;;;10;N;;;;;
+10158;GREEK ACROPHONIC HERAEUM ONE PLETHRON;Nl;0;ON;;;;1;N;;;;;
+10159;GREEK ACROPHONIC THESPIAN ONE;Nl;0;ON;;;;1;N;;;;;
+1015A;GREEK ACROPHONIC HERMIONIAN ONE;Nl;0;ON;;;;1;N;;;;;
+1015B;GREEK ACROPHONIC EPIDAUREAN TWO;Nl;0;ON;;;;2;N;;;;;
+1015C;GREEK ACROPHONIC THESPIAN TWO;Nl;0;ON;;;;2;N;;;;;
+1015D;GREEK ACROPHONIC CYRENAIC TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;;
+1015E;GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;;
+1015F;GREEK ACROPHONIC TROEZENIAN FIVE;Nl;0;ON;;;;5;N;;;;;
+10160;GREEK ACROPHONIC TROEZENIAN TEN;Nl;0;ON;;;;10;N;;;;;
+10161;GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM;Nl;0;ON;;;;10;N;;;;;
+10162;GREEK ACROPHONIC HERMIONIAN TEN;Nl;0;ON;;;;10;N;;;;;
+10163;GREEK ACROPHONIC MESSENIAN TEN;Nl;0;ON;;;;10;N;;;;;
+10164;GREEK ACROPHONIC THESPIAN TEN;Nl;0;ON;;;;10;N;;;;;
+10165;GREEK ACROPHONIC THESPIAN THIRTY;Nl;0;ON;;;;30;N;;;;;
+10166;GREEK ACROPHONIC TROEZENIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
+10167;GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM;Nl;0;ON;;;;50;N;;;;;
+10168;GREEK ACROPHONIC HERMIONIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
+10169;GREEK ACROPHONIC THESPIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
+1016A;GREEK ACROPHONIC THESPIAN ONE HUNDRED;Nl;0;ON;;;;100;N;;;;;
+1016B;GREEK ACROPHONIC THESPIAN THREE HUNDRED;Nl;0;ON;;;;300;N;;;;;
+1016C;GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+1016D;GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+1016E;GREEK ACROPHONIC THESPIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+1016F;GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+10170;GREEK ACROPHONIC NAXIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+10171;GREEK ACROPHONIC THESPIAN ONE THOUSAND;Nl;0;ON;;;;1000;N;;;;;
+10172;GREEK ACROPHONIC THESPIAN FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;;
+10173;GREEK ACROPHONIC DELPHIC FIVE MNAS;Nl;0;ON;;;;5;N;;;;;
+10174;GREEK ACROPHONIC STRATIAN FIFTY MNAS;Nl;0;ON;;;;50;N;;;;;
+10175;GREEK ONE HALF SIGN;No;0;ON;;;;1/2;N;;;;;
+10176;GREEK ONE HALF SIGN ALTERNATE FORM;No;0;ON;;;;1/2;N;;;;;
+10177;GREEK TWO THIRDS SIGN;No;0;ON;;;;2/3;N;;;;;
+10178;GREEK THREE QUARTERS SIGN;No;0;ON;;;;3/4;N;;;;;
+10179;GREEK YEAR SIGN;So;0;ON;;;;;N;;;;;
+1017A;GREEK TALENT SIGN;So;0;ON;;;;;N;;;;;
+1017B;GREEK DRACHMA SIGN;So;0;ON;;;;;N;;;;;
+1017C;GREEK OBOL SIGN;So;0;ON;;;;;N;;;;;
+1017D;GREEK TWO OBOLS SIGN;So;0;ON;;;;;N;;;;;
+1017E;GREEK THREE OBOLS SIGN;So;0;ON;;;;;N;;;;;
+1017F;GREEK FOUR OBOLS SIGN;So;0;ON;;;;;N;;;;;
+10180;GREEK FIVE OBOLS SIGN;So;0;ON;;;;;N;;;;;
+10181;GREEK METRETES SIGN;So;0;ON;;;;;N;;;;;
+10182;GREEK KYATHOS BASE SIGN;So;0;ON;;;;;N;;;;;
+10183;GREEK LITRA SIGN;So;0;ON;;;;;N;;;;;
+10184;GREEK OUNKIA SIGN;So;0;ON;;;;;N;;;;;
+10185;GREEK XESTES SIGN;So;0;ON;;;;;N;;;;;
+10186;GREEK ARTABE SIGN;So;0;ON;;;;;N;;;;;
+10187;GREEK AROURA SIGN;So;0;ON;;;;;N;;;;;
+10188;GREEK GRAMMA SIGN;So;0;ON;;;;;N;;;;;
+10189;GREEK TRYBLION BASE SIGN;So;0;ON;;;;;N;;;;;
+1018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;;
+10190;ROMAN SEXTANS SIGN;So;0;ON;;;;;N;;;;;
+10191;ROMAN UNCIA SIGN;So;0;ON;;;;;N;;;;;
+10192;ROMAN SEMUNCIA SIGN;So;0;ON;;;;;N;;;;;
+10193;ROMAN SEXTULA SIGN;So;0;ON;;;;;N;;;;;
+10194;ROMAN DIMIDIA SEXTULA SIGN;So;0;ON;;;;;N;;;;;
+10195;ROMAN SILIQUA SIGN;So;0;ON;;;;;N;;;;;
+10196;ROMAN DENARIUS SIGN;So;0;ON;;;;;N;;;;;
+10197;ROMAN QUINARIUS SIGN;So;0;ON;;;;;N;;;;;
+10198;ROMAN SESTERTIUS SIGN;So;0;ON;;;;;N;;;;;
+10199;ROMAN DUPONDIUS SIGN;So;0;ON;;;;;N;;;;;
+1019A;ROMAN AS SIGN;So;0;ON;;;;;N;;;;;
+1019B;ROMAN CENTURIAL SIGN;So;0;ON;;;;;N;;;;;
+101D0;PHAISTOS DISC SIGN PEDESTRIAN;So;0;L;;;;;N;;;;;
+101D1;PHAISTOS DISC SIGN PLUMED HEAD;So;0;L;;;;;N;;;;;
+101D2;PHAISTOS DISC SIGN TATTOOED HEAD;So;0;L;;;;;N;;;;;
+101D3;PHAISTOS DISC SIGN CAPTIVE;So;0;L;;;;;N;;;;;
+101D4;PHAISTOS DISC SIGN CHILD;So;0;L;;;;;N;;;;;
+101D5;PHAISTOS DISC SIGN WOMAN;So;0;L;;;;;N;;;;;
+101D6;PHAISTOS DISC SIGN HELMET;So;0;L;;;;;N;;;;;
+101D7;PHAISTOS DISC SIGN GAUNTLET;So;0;L;;;;;N;;;;;
+101D8;PHAISTOS DISC SIGN TIARA;So;0;L;;;;;N;;;;;
+101D9;PHAISTOS DISC SIGN ARROW;So;0;L;;;;;N;;;;;
+101DA;PHAISTOS DISC SIGN BOW;So;0;L;;;;;N;;;;;
+101DB;PHAISTOS DISC SIGN SHIELD;So;0;L;;;;;N;;;;;
+101DC;PHAISTOS DISC SIGN CLUB;So;0;L;;;;;N;;;;;
+101DD;PHAISTOS DISC SIGN MANACLES;So;0;L;;;;;N;;;;;
+101DE;PHAISTOS DISC SIGN MATTOCK;So;0;L;;;;;N;;;;;
+101DF;PHAISTOS DISC SIGN SAW;So;0;L;;;;;N;;;;;
+101E0;PHAISTOS DISC SIGN LID;So;0;L;;;;;N;;;;;
+101E1;PHAISTOS DISC SIGN BOOMERANG;So;0;L;;;;;N;;;;;
+101E2;PHAISTOS DISC SIGN CARPENTRY PLANE;So;0;L;;;;;N;;;;;
+101E3;PHAISTOS DISC SIGN DOLIUM;So;0;L;;;;;N;;;;;
+101E4;PHAISTOS DISC SIGN COMB;So;0;L;;;;;N;;;;;
+101E5;PHAISTOS DISC SIGN SLING;So;0;L;;;;;N;;;;;
+101E6;PHAISTOS DISC SIGN COLUMN;So;0;L;;;;;N;;;;;
+101E7;PHAISTOS DISC SIGN BEEHIVE;So;0;L;;;;;N;;;;;
+101E8;PHAISTOS DISC SIGN SHIP;So;0;L;;;;;N;;;;;
+101E9;PHAISTOS DISC SIGN HORN;So;0;L;;;;;N;;;;;
+101EA;PHAISTOS DISC SIGN HIDE;So;0;L;;;;;N;;;;;
+101EB;PHAISTOS DISC SIGN BULLS LEG;So;0;L;;;;;N;;;;;
+101EC;PHAISTOS DISC SIGN CAT;So;0;L;;;;;N;;;;;
+101ED;PHAISTOS DISC SIGN RAM;So;0;L;;;;;N;;;;;
+101EE;PHAISTOS DISC SIGN EAGLE;So;0;L;;;;;N;;;;;
+101EF;PHAISTOS DISC SIGN DOVE;So;0;L;;;;;N;;;;;
+101F0;PHAISTOS DISC SIGN TUNNY;So;0;L;;;;;N;;;;;
+101F1;PHAISTOS DISC SIGN BEE;So;0;L;;;;;N;;;;;
+101F2;PHAISTOS DISC SIGN PLANE TREE;So;0;L;;;;;N;;;;;
+101F3;PHAISTOS DISC SIGN VINE;So;0;L;;;;;N;;;;;
+101F4;PHAISTOS DISC SIGN PAPYRUS;So;0;L;;;;;N;;;;;
+101F5;PHAISTOS DISC SIGN ROSETTE;So;0;L;;;;;N;;;;;
+101F6;PHAISTOS DISC SIGN LILY;So;0;L;;;;;N;;;;;
+101F7;PHAISTOS DISC SIGN OX BACK;So;0;L;;;;;N;;;;;
+101F8;PHAISTOS DISC SIGN FLUTE;So;0;L;;;;;N;;;;;
+101F9;PHAISTOS DISC SIGN GRATER;So;0;L;;;;;N;;;;;
+101FA;PHAISTOS DISC SIGN STRAINER;So;0;L;;;;;N;;;;;
+101FB;PHAISTOS DISC SIGN SMALL AXE;So;0;L;;;;;N;;;;;
+101FC;PHAISTOS DISC SIGN WAVY BAND;So;0;L;;;;;N;;;;;
+101FD;PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE;Mn;220;NSM;;;;;N;;;;;
+10280;LYCIAN LETTER A;Lo;0;L;;;;;N;;;;;
+10281;LYCIAN LETTER E;Lo;0;L;;;;;N;;;;;
+10282;LYCIAN LETTER B;Lo;0;L;;;;;N;;;;;
+10283;LYCIAN LETTER BH;Lo;0;L;;;;;N;;;;;
+10284;LYCIAN LETTER G;Lo;0;L;;;;;N;;;;;
+10285;LYCIAN LETTER D;Lo;0;L;;;;;N;;;;;
+10286;LYCIAN LETTER I;Lo;0;L;;;;;N;;;;;
+10287;LYCIAN LETTER W;Lo;0;L;;;;;N;;;;;
+10288;LYCIAN LETTER Z;Lo;0;L;;;;;N;;;;;
+10289;LYCIAN LETTER TH;Lo;0;L;;;;;N;;;;;
+1028A;LYCIAN LETTER J;Lo;0;L;;;;;N;;;;;
+1028B;LYCIAN LETTER K;Lo;0;L;;;;;N;;;;;
+1028C;LYCIAN LETTER Q;Lo;0;L;;;;;N;;;;;
+1028D;LYCIAN LETTER L;Lo;0;L;;;;;N;;;;;
+1028E;LYCIAN LETTER M;Lo;0;L;;;;;N;;;;;
+1028F;LYCIAN LETTER N;Lo;0;L;;;;;N;;;;;
+10290;LYCIAN LETTER MM;Lo;0;L;;;;;N;;;;;
+10291;LYCIAN LETTER NN;Lo;0;L;;;;;N;;;;;
+10292;LYCIAN LETTER U;Lo;0;L;;;;;N;;;;;
+10293;LYCIAN LETTER P;Lo;0;L;;;;;N;;;;;
+10294;LYCIAN LETTER KK;Lo;0;L;;;;;N;;;;;
+10295;LYCIAN LETTER R;Lo;0;L;;;;;N;;;;;
+10296;LYCIAN LETTER S;Lo;0;L;;;;;N;;;;;
+10297;LYCIAN LETTER T;Lo;0;L;;;;;N;;;;;
+10298;LYCIAN LETTER TT;Lo;0;L;;;;;N;;;;;
+10299;LYCIAN LETTER AN;Lo;0;L;;;;;N;;;;;
+1029A;LYCIAN LETTER EN;Lo;0;L;;;;;N;;;;;
+1029B;LYCIAN LETTER H;Lo;0;L;;;;;N;;;;;
+1029C;LYCIAN LETTER X;Lo;0;L;;;;;N;;;;;
+102A0;CARIAN LETTER A;Lo;0;L;;;;;N;;;;;
+102A1;CARIAN LETTER P2;Lo;0;L;;;;;N;;;;;
+102A2;CARIAN LETTER D;Lo;0;L;;;;;N;;;;;
+102A3;CARIAN LETTER L;Lo;0;L;;;;;N;;;;;
+102A4;CARIAN LETTER UUU;Lo;0;L;;;;;N;;;;;
+102A5;CARIAN LETTER R;Lo;0;L;;;;;N;;;;;
+102A6;CARIAN LETTER LD;Lo;0;L;;;;;N;;;;;
+102A7;CARIAN LETTER A2;Lo;0;L;;;;;N;;;;;
+102A8;CARIAN LETTER Q;Lo;0;L;;;;;N;;;;;
+102A9;CARIAN LETTER B;Lo;0;L;;;;;N;;;;;
+102AA;CARIAN LETTER M;Lo;0;L;;;;;N;;;;;
+102AB;CARIAN LETTER O;Lo;0;L;;;;;N;;;;;
+102AC;CARIAN LETTER D2;Lo;0;L;;;;;N;;;;;
+102AD;CARIAN LETTER T;Lo;0;L;;;;;N;;;;;
+102AE;CARIAN LETTER SH;Lo;0;L;;;;;N;;;;;
+102AF;CARIAN LETTER SH2;Lo;0;L;;;;;N;;;;;
+102B0;CARIAN LETTER S;Lo;0;L;;;;;N;;;;;
+102B1;CARIAN LETTER C-18;Lo;0;L;;;;;N;;;;;
+102B2;CARIAN LETTER U;Lo;0;L;;;;;N;;;;;
+102B3;CARIAN LETTER NN;Lo;0;L;;;;;N;;;;;
+102B4;CARIAN LETTER X;Lo;0;L;;;;;N;;;;;
+102B5;CARIAN LETTER N;Lo;0;L;;;;;N;;;;;
+102B6;CARIAN LETTER TT2;Lo;0;L;;;;;N;;;;;
+102B7;CARIAN LETTER P;Lo;0;L;;;;;N;;;;;
+102B8;CARIAN LETTER SS;Lo;0;L;;;;;N;;;;;
+102B9;CARIAN LETTER I;Lo;0;L;;;;;N;;;;;
+102BA;CARIAN LETTER E;Lo;0;L;;;;;N;;;;;
+102BB;CARIAN LETTER UUUU;Lo;0;L;;;;;N;;;;;
+102BC;CARIAN LETTER K;Lo;0;L;;;;;N;;;;;
+102BD;CARIAN LETTER K2;Lo;0;L;;;;;N;;;;;
+102BE;CARIAN LETTER ND;Lo;0;L;;;;;N;;;;;
+102BF;CARIAN LETTER UU;Lo;0;L;;;;;N;;;;;
+102C0;CARIAN LETTER G;Lo;0;L;;;;;N;;;;;
+102C1;CARIAN LETTER G2;Lo;0;L;;;;;N;;;;;
+102C2;CARIAN LETTER ST;Lo;0;L;;;;;N;;;;;
+102C3;CARIAN LETTER ST2;Lo;0;L;;;;;N;;;;;
+102C4;CARIAN LETTER NG;Lo;0;L;;;;;N;;;;;
+102C5;CARIAN LETTER II;Lo;0;L;;;;;N;;;;;
+102C6;CARIAN LETTER C-39;Lo;0;L;;;;;N;;;;;
+102C7;CARIAN LETTER TT;Lo;0;L;;;;;N;;;;;
+102C8;CARIAN LETTER UUU2;Lo;0;L;;;;;N;;;;;
+102C9;CARIAN LETTER RR;Lo;0;L;;;;;N;;;;;
+102CA;CARIAN LETTER MB;Lo;0;L;;;;;N;;;;;
+102CB;CARIAN LETTER MB2;Lo;0;L;;;;;N;;;;;
+102CC;CARIAN LETTER MB3;Lo;0;L;;;;;N;;;;;
+102CD;CARIAN LETTER MB4;Lo;0;L;;;;;N;;;;;
+102CE;CARIAN LETTER LD2;Lo;0;L;;;;;N;;;;;
+102CF;CARIAN LETTER E2;Lo;0;L;;;;;N;;;;;
+102D0;CARIAN LETTER UUU3;Lo;0;L;;;;;N;;;;;
+10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;;
+10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;;
+10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;;
+10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;;
+10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;;
+10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;;
+10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;;
+10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;;
+10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;;
+10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;;
+1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;;
+1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;;
+1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;;
+1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;;
+1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;;
+1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;Faliscan;;;
+10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;;
+10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;;
+10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;;
+10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;;
+10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;;
+10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;;
+10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;;
+10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;Faliscan;;;
+10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;;
+10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;;
+1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;;
+1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;Umbrian;;;
+1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;Umbrian;;;
+1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;Oscan;;;
+1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;Oscan;;;
+10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;;
+10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;;
+10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;;
+10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;;
+10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;;
+10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;;
+10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;;
+10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;;
+10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;;
+10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;;
+10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;;
+10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;;
+10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;;
+10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;;
+1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;;
+1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;;
+1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;;
+1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;;
+1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;;
+1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;;
+10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;;
+10341;GOTHIC LETTER NINETY;Nl;0;L;;;;90;N;;;;;
+10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;;
+10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;;
+10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;;
+10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;;
+10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;;
+10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;;
+10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;;
+10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;;
+1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;900;N;;;;;
+10380;UGARITIC LETTER ALPA;Lo;0;L;;;;;N;;;;;
+10381;UGARITIC LETTER BETA;Lo;0;L;;;;;N;;;;;
+10382;UGARITIC LETTER GAMLA;Lo;0;L;;;;;N;;;;;
+10383;UGARITIC LETTER KHA;Lo;0;L;;;;;N;;;;;
+10384;UGARITIC LETTER DELTA;Lo;0;L;;;;;N;;;;;
+10385;UGARITIC LETTER HO;Lo;0;L;;;;;N;;;;;
+10386;UGARITIC LETTER WO;Lo;0;L;;;;;N;;;;;
+10387;UGARITIC LETTER ZETA;Lo;0;L;;;;;N;;;;;
+10388;UGARITIC LETTER HOTA;Lo;0;L;;;;;N;;;;;
+10389;UGARITIC LETTER TET;Lo;0;L;;;;;N;;;;;
+1038A;UGARITIC LETTER YOD;Lo;0;L;;;;;N;;;;;
+1038B;UGARITIC LETTER KAF;Lo;0;L;;;;;N;;;;;
+1038C;UGARITIC LETTER SHIN;Lo;0;L;;;;;N;;;;;
+1038D;UGARITIC LETTER LAMDA;Lo;0;L;;;;;N;;;;;
+1038E;UGARITIC LETTER MEM;Lo;0;L;;;;;N;;;;;
+1038F;UGARITIC LETTER DHAL;Lo;0;L;;;;;N;;;;;
+10390;UGARITIC LETTER NUN;Lo;0;L;;;;;N;;;;;
+10391;UGARITIC LETTER ZU;Lo;0;L;;;;;N;;;;;
+10392;UGARITIC LETTER SAMKA;Lo;0;L;;;;;N;;;;;
+10393;UGARITIC LETTER AIN;Lo;0;L;;;;;N;;;;;
+10394;UGARITIC LETTER PU;Lo;0;L;;;;;N;;;;;
+10395;UGARITIC LETTER SADE;Lo;0;L;;;;;N;;;;;
+10396;UGARITIC LETTER QOPA;Lo;0;L;;;;;N;;;;;
+10397;UGARITIC LETTER RASHA;Lo;0;L;;;;;N;;;;;
+10398;UGARITIC LETTER THANNA;Lo;0;L;;;;;N;;;;;
+10399;UGARITIC LETTER GHAIN;Lo;0;L;;;;;N;;;;;
+1039A;UGARITIC LETTER TO;Lo;0;L;;;;;N;;;;;
+1039B;UGARITIC LETTER I;Lo;0;L;;;;;N;;;;;
+1039C;UGARITIC LETTER U;Lo;0;L;;;;;N;;;;;
+1039D;UGARITIC LETTER SSU;Lo;0;L;;;;;N;;;;;
+1039F;UGARITIC WORD DIVIDER;Po;0;L;;;;;N;;;;;
+103A0;OLD PERSIAN SIGN A;Lo;0;L;;;;;N;;;;;
+103A1;OLD PERSIAN SIGN I;Lo;0;L;;;;;N;;;;;
+103A2;OLD PERSIAN SIGN U;Lo;0;L;;;;;N;;;;;
+103A3;OLD PERSIAN SIGN KA;Lo;0;L;;;;;N;;;;;
+103A4;OLD PERSIAN SIGN KU;Lo;0;L;;;;;N;;;;;
+103A5;OLD PERSIAN SIGN GA;Lo;0;L;;;;;N;;;;;
+103A6;OLD PERSIAN SIGN GU;Lo;0;L;;;;;N;;;;;
+103A7;OLD PERSIAN SIGN XA;Lo;0;L;;;;;N;;;;;
+103A8;OLD PERSIAN SIGN CA;Lo;0;L;;;;;N;;;;;
+103A9;OLD PERSIAN SIGN JA;Lo;0;L;;;;;N;;;;;
+103AA;OLD PERSIAN SIGN JI;Lo;0;L;;;;;N;;;;;
+103AB;OLD PERSIAN SIGN TA;Lo;0;L;;;;;N;;;;;
+103AC;OLD PERSIAN SIGN TU;Lo;0;L;;;;;N;;;;;
+103AD;OLD PERSIAN SIGN DA;Lo;0;L;;;;;N;;;;;
+103AE;OLD PERSIAN SIGN DI;Lo;0;L;;;;;N;;;;;
+103AF;OLD PERSIAN SIGN DU;Lo;0;L;;;;;N;;;;;
+103B0;OLD PERSIAN SIGN THA;Lo;0;L;;;;;N;;;;;
+103B1;OLD PERSIAN SIGN PA;Lo;0;L;;;;;N;;;;;
+103B2;OLD PERSIAN SIGN BA;Lo;0;L;;;;;N;;;;;
+103B3;OLD PERSIAN SIGN FA;Lo;0;L;;;;;N;;;;;
+103B4;OLD PERSIAN SIGN NA;Lo;0;L;;;;;N;;;;;
+103B5;OLD PERSIAN SIGN NU;Lo;0;L;;;;;N;;;;;
+103B6;OLD PERSIAN SIGN MA;Lo;0;L;;;;;N;;;;;
+103B7;OLD PERSIAN SIGN MI;Lo;0;L;;;;;N;;;;;
+103B8;OLD PERSIAN SIGN MU;Lo;0;L;;;;;N;;;;;
+103B9;OLD PERSIAN SIGN YA;Lo;0;L;;;;;N;;;;;
+103BA;OLD PERSIAN SIGN VA;Lo;0;L;;;;;N;;;;;
+103BB;OLD PERSIAN SIGN VI;Lo;0;L;;;;;N;;;;;
+103BC;OLD PERSIAN SIGN RA;Lo;0;L;;;;;N;;;;;
+103BD;OLD PERSIAN SIGN RU;Lo;0;L;;;;;N;;;;;
+103BE;OLD PERSIAN SIGN LA;Lo;0;L;;;;;N;;;;;
+103BF;OLD PERSIAN SIGN SA;Lo;0;L;;;;;N;;;;;
+103C0;OLD PERSIAN SIGN ZA;Lo;0;L;;;;;N;;;;;
+103C1;OLD PERSIAN SIGN SHA;Lo;0;L;;;;;N;;;;;
+103C2;OLD PERSIAN SIGN SSA;Lo;0;L;;;;;N;;;;;
+103C3;OLD PERSIAN SIGN HA;Lo;0;L;;;;;N;;;;;
+103C8;OLD PERSIAN SIGN AURAMAZDAA;Lo;0;L;;;;;N;;;;;
+103C9;OLD PERSIAN SIGN AURAMAZDAA-2;Lo;0;L;;;;;N;;;;;
+103CA;OLD PERSIAN SIGN AURAMAZDAAHA;Lo;0;L;;;;;N;;;;;
+103CB;OLD PERSIAN SIGN XSHAAYATHIYA;Lo;0;L;;;;;N;;;;;
+103CC;OLD PERSIAN SIGN DAHYAAUSH;Lo;0;L;;;;;N;;;;;
+103CD;OLD PERSIAN SIGN DAHYAAUSH-2;Lo;0;L;;;;;N;;;;;
+103CE;OLD PERSIAN SIGN BAGA;Lo;0;L;;;;;N;;;;;
+103CF;OLD PERSIAN SIGN BUUMISH;Lo;0;L;;;;;N;;;;;
+103D0;OLD PERSIAN WORD DIVIDER;Po;0;L;;;;;N;;;;;
+103D1;OLD PERSIAN NUMBER ONE;Nl;0;L;;;;1;N;;;;;
+103D2;OLD PERSIAN NUMBER TWO;Nl;0;L;;;;2;N;;;;;
+103D3;OLD PERSIAN NUMBER TEN;Nl;0;L;;;;10;N;;;;;
+103D4;OLD PERSIAN NUMBER TWENTY;Nl;0;L;;;;20;N;;;;;
+103D5;OLD PERSIAN NUMBER HUNDRED;Nl;0;L;;;;100;N;;;;;
+10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428;
+10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429;
+10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A;
+10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B;
+10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C;
+10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D;
+10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E;
+10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F;
+10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430;
+10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431;
+1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432;
+1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433;
+1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434;
+1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435;
+1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436;
+1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437;
+10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438;
+10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439;
+10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A;
+10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B;
+10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C;
+10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D;
+10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E;
+10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F;
+10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440;
+10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441;
+1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442;
+1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443;
+1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444;
+1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445;
+1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446;
+1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447;
+10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448;
+10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449;
+10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A;
+10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B;
+10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C;
+10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D;
+10426;DESERET CAPITAL LETTER OI;Lu;0;L;;;;;N;;;;1044E;
+10427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F;
+10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400
+10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401
+1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402
+1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403
+1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404
+1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405
+1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406
+1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407
+10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408
+10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409
+10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A
+10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B
+10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C
+10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D
+10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E
+10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F
+10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410
+10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411
+1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412
+1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413
+1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414
+1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415
+1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416
+1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417
+10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418
+10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419
+10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A
+10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B
+10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C
+10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D
+10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E
+10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F
+10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420
+10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421
+1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422
+1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423
+1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424
+1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425
+1044E;DESERET SMALL LETTER OI;Ll;0;L;;;;;N;;;10426;;10426
+1044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427
+10450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;;
+10451;SHAVIAN LETTER TOT;Lo;0;L;;;;;N;;;;;
+10452;SHAVIAN LETTER KICK;Lo;0;L;;;;;N;;;;;
+10453;SHAVIAN LETTER FEE;Lo;0;L;;;;;N;;;;;
+10454;SHAVIAN LETTER THIGH;Lo;0;L;;;;;N;;;;;
+10455;SHAVIAN LETTER SO;Lo;0;L;;;;;N;;;;;
+10456;SHAVIAN LETTER SURE;Lo;0;L;;;;;N;;;;;
+10457;SHAVIAN LETTER CHURCH;Lo;0;L;;;;;N;;;;;
+10458;SHAVIAN LETTER YEA;Lo;0;L;;;;;N;;;;;
+10459;SHAVIAN LETTER HUNG;Lo;0;L;;;;;N;;;;;
+1045A;SHAVIAN LETTER BIB;Lo;0;L;;;;;N;;;;;
+1045B;SHAVIAN LETTER DEAD;Lo;0;L;;;;;N;;;;;
+1045C;SHAVIAN LETTER GAG;Lo;0;L;;;;;N;;;;;
+1045D;SHAVIAN LETTER VOW;Lo;0;L;;;;;N;;;;;
+1045E;SHAVIAN LETTER THEY;Lo;0;L;;;;;N;;;;;
+1045F;SHAVIAN LETTER ZOO;Lo;0;L;;;;;N;;;;;
+10460;SHAVIAN LETTER MEASURE;Lo;0;L;;;;;N;;;;;
+10461;SHAVIAN LETTER JUDGE;Lo;0;L;;;;;N;;;;;
+10462;SHAVIAN LETTER WOE;Lo;0;L;;;;;N;;;;;
+10463;SHAVIAN LETTER HA-HA;Lo;0;L;;;;;N;;;;;
+10464;SHAVIAN LETTER LOLL;Lo;0;L;;;;;N;;;;;
+10465;SHAVIAN LETTER MIME;Lo;0;L;;;;;N;;;;;
+10466;SHAVIAN LETTER IF;Lo;0;L;;;;;N;;;;;
+10467;SHAVIAN LETTER EGG;Lo;0;L;;;;;N;;;;;
+10468;SHAVIAN LETTER ASH;Lo;0;L;;;;;N;;;;;
+10469;SHAVIAN LETTER ADO;Lo;0;L;;;;;N;;;;;
+1046A;SHAVIAN LETTER ON;Lo;0;L;;;;;N;;;;;
+1046B;SHAVIAN LETTER WOOL;Lo;0;L;;;;;N;;;;;
+1046C;SHAVIAN LETTER OUT;Lo;0;L;;;;;N;;;;;
+1046D;SHAVIAN LETTER AH;Lo;0;L;;;;;N;;;;;
+1046E;SHAVIAN LETTER ROAR;Lo;0;L;;;;;N;;;;;
+1046F;SHAVIAN LETTER NUN;Lo;0;L;;;;;N;;;;;
+10470;SHAVIAN LETTER EAT;Lo;0;L;;;;;N;;;;;
+10471;SHAVIAN LETTER AGE;Lo;0;L;;;;;N;;;;;
+10472;SHAVIAN LETTER ICE;Lo;0;L;;;;;N;;;;;
+10473;SHAVIAN LETTER UP;Lo;0;L;;;;;N;;;;;
+10474;SHAVIAN LETTER OAK;Lo;0;L;;;;;N;;;;;
+10475;SHAVIAN LETTER OOZE;Lo;0;L;;;;;N;;;;;
+10476;SHAVIAN LETTER OIL;Lo;0;L;;;;;N;;;;;
+10477;SHAVIAN LETTER AWE;Lo;0;L;;;;;N;;;;;
+10478;SHAVIAN LETTER ARE;Lo;0;L;;;;;N;;;;;
+10479;SHAVIAN LETTER OR;Lo;0;L;;;;;N;;;;;
+1047A;SHAVIAN LETTER AIR;Lo;0;L;;;;;N;;;;;
+1047B;SHAVIAN LETTER ERR;Lo;0;L;;;;;N;;;;;
+1047C;SHAVIAN LETTER ARRAY;Lo;0;L;;;;;N;;;;;
+1047D;SHAVIAN LETTER EAR;Lo;0;L;;;;;N;;;;;
+1047E;SHAVIAN LETTER IAN;Lo;0;L;;;;;N;;;;;
+1047F;SHAVIAN LETTER YEW;Lo;0;L;;;;;N;;;;;
+10480;OSMANYA LETTER ALEF;Lo;0;L;;;;;N;;;;;
+10481;OSMANYA LETTER BA;Lo;0;L;;;;;N;;;;;
+10482;OSMANYA LETTER TA;Lo;0;L;;;;;N;;;;;
+10483;OSMANYA LETTER JA;Lo;0;L;;;;;N;;;;;
+10484;OSMANYA LETTER XA;Lo;0;L;;;;;N;;;;;
+10485;OSMANYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+10486;OSMANYA LETTER DEEL;Lo;0;L;;;;;N;;;;;
+10487;OSMANYA LETTER RA;Lo;0;L;;;;;N;;;;;
+10488;OSMANYA LETTER SA;Lo;0;L;;;;;N;;;;;
+10489;OSMANYA LETTER SHIIN;Lo;0;L;;;;;N;;;;;
+1048A;OSMANYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+1048B;OSMANYA LETTER CAYN;Lo;0;L;;;;;N;;;;;
+1048C;OSMANYA LETTER GA;Lo;0;L;;;;;N;;;;;
+1048D;OSMANYA LETTER FA;Lo;0;L;;;;;N;;;;;
+1048E;OSMANYA LETTER QAAF;Lo;0;L;;;;;N;;;;;
+1048F;OSMANYA LETTER KAAF;Lo;0;L;;;;;N;;;;;
+10490;OSMANYA LETTER LAAN;Lo;0;L;;;;;N;;;;;
+10491;OSMANYA LETTER MIIN;Lo;0;L;;;;;N;;;;;
+10492;OSMANYA LETTER NUUN;Lo;0;L;;;;;N;;;;;
+10493;OSMANYA LETTER WAW;Lo;0;L;;;;;N;;;;;
+10494;OSMANYA LETTER HA;Lo;0;L;;;;;N;;;;;
+10495;OSMANYA LETTER YA;Lo;0;L;;;;;N;;;;;
+10496;OSMANYA LETTER A;Lo;0;L;;;;;N;;;;;
+10497;OSMANYA LETTER E;Lo;0;L;;;;;N;;;;;
+10498;OSMANYA LETTER I;Lo;0;L;;;;;N;;;;;
+10499;OSMANYA LETTER O;Lo;0;L;;;;;N;;;;;
+1049A;OSMANYA LETTER U;Lo;0;L;;;;;N;;;;;
+1049B;OSMANYA LETTER AA;Lo;0;L;;;;;N;;;;;
+1049C;OSMANYA LETTER EE;Lo;0;L;;;;;N;;;;;
+1049D;OSMANYA LETTER OO;Lo;0;L;;;;;N;;;;;
+104A0;OSMANYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+104A1;OSMANYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+104A2;OSMANYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+104A3;OSMANYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+104A4;OSMANYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+104A5;OSMANYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+104A6;OSMANYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;;
+10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;;
+10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;;
+10803;CYPRIOT SYLLABLE O;Lo;0;R;;;;;N;;;;;
+10804;CYPRIOT SYLLABLE U;Lo;0;R;;;;;N;;;;;
+10805;CYPRIOT SYLLABLE JA;Lo;0;R;;;;;N;;;;;
+10808;CYPRIOT SYLLABLE JO;Lo;0;R;;;;;N;;;;;
+1080A;CYPRIOT SYLLABLE KA;Lo;0;R;;;;;N;;;;;
+1080B;CYPRIOT SYLLABLE KE;Lo;0;R;;;;;N;;;;;
+1080C;CYPRIOT SYLLABLE KI;Lo;0;R;;;;;N;;;;;
+1080D;CYPRIOT SYLLABLE KO;Lo;0;R;;;;;N;;;;;
+1080E;CYPRIOT SYLLABLE KU;Lo;0;R;;;;;N;;;;;
+1080F;CYPRIOT SYLLABLE LA;Lo;0;R;;;;;N;;;;;
+10810;CYPRIOT SYLLABLE LE;Lo;0;R;;;;;N;;;;;
+10811;CYPRIOT SYLLABLE LI;Lo;0;R;;;;;N;;;;;
+10812;CYPRIOT SYLLABLE LO;Lo;0;R;;;;;N;;;;;
+10813;CYPRIOT SYLLABLE LU;Lo;0;R;;;;;N;;;;;
+10814;CYPRIOT SYLLABLE MA;Lo;0;R;;;;;N;;;;;
+10815;CYPRIOT SYLLABLE ME;Lo;0;R;;;;;N;;;;;
+10816;CYPRIOT SYLLABLE MI;Lo;0;R;;;;;N;;;;;
+10817;CYPRIOT SYLLABLE MO;Lo;0;R;;;;;N;;;;;
+10818;CYPRIOT SYLLABLE MU;Lo;0;R;;;;;N;;;;;
+10819;CYPRIOT SYLLABLE NA;Lo;0;R;;;;;N;;;;;
+1081A;CYPRIOT SYLLABLE NE;Lo;0;R;;;;;N;;;;;
+1081B;CYPRIOT SYLLABLE NI;Lo;0;R;;;;;N;;;;;
+1081C;CYPRIOT SYLLABLE NO;Lo;0;R;;;;;N;;;;;
+1081D;CYPRIOT SYLLABLE NU;Lo;0;R;;;;;N;;;;;
+1081E;CYPRIOT SYLLABLE PA;Lo;0;R;;;;;N;;;;;
+1081F;CYPRIOT SYLLABLE PE;Lo;0;R;;;;;N;;;;;
+10820;CYPRIOT SYLLABLE PI;Lo;0;R;;;;;N;;;;;
+10821;CYPRIOT SYLLABLE PO;Lo;0;R;;;;;N;;;;;
+10822;CYPRIOT SYLLABLE PU;Lo;0;R;;;;;N;;;;;
+10823;CYPRIOT SYLLABLE RA;Lo;0;R;;;;;N;;;;;
+10824;CYPRIOT SYLLABLE RE;Lo;0;R;;;;;N;;;;;
+10825;CYPRIOT SYLLABLE RI;Lo;0;R;;;;;N;;;;;
+10826;CYPRIOT SYLLABLE RO;Lo;0;R;;;;;N;;;;;
+10827;CYPRIOT SYLLABLE RU;Lo;0;R;;;;;N;;;;;
+10828;CYPRIOT SYLLABLE SA;Lo;0;R;;;;;N;;;;;
+10829;CYPRIOT SYLLABLE SE;Lo;0;R;;;;;N;;;;;
+1082A;CYPRIOT SYLLABLE SI;Lo;0;R;;;;;N;;;;;
+1082B;CYPRIOT SYLLABLE SO;Lo;0;R;;;;;N;;;;;
+1082C;CYPRIOT SYLLABLE SU;Lo;0;R;;;;;N;;;;;
+1082D;CYPRIOT SYLLABLE TA;Lo;0;R;;;;;N;;;;;
+1082E;CYPRIOT SYLLABLE TE;Lo;0;R;;;;;N;;;;;
+1082F;CYPRIOT SYLLABLE TI;Lo;0;R;;;;;N;;;;;
+10830;CYPRIOT SYLLABLE TO;Lo;0;R;;;;;N;;;;;
+10831;CYPRIOT SYLLABLE TU;Lo;0;R;;;;;N;;;;;
+10832;CYPRIOT SYLLABLE WA;Lo;0;R;;;;;N;;;;;
+10833;CYPRIOT SYLLABLE WE;Lo;0;R;;;;;N;;;;;
+10834;CYPRIOT SYLLABLE WI;Lo;0;R;;;;;N;;;;;
+10835;CYPRIOT SYLLABLE WO;Lo;0;R;;;;;N;;;;;
+10837;CYPRIOT SYLLABLE XA;Lo;0;R;;;;;N;;;;;
+10838;CYPRIOT SYLLABLE XE;Lo;0;R;;;;;N;;;;;
+1083C;CYPRIOT SYLLABLE ZA;Lo;0;R;;;;;N;;;;;
+1083F;CYPRIOT SYLLABLE ZO;Lo;0;R;;;;;N;;;;;
+10900;PHOENICIAN LETTER ALF;Lo;0;R;;;;;N;;;;;
+10901;PHOENICIAN LETTER BET;Lo;0;R;;;;;N;;;;;
+10902;PHOENICIAN LETTER GAML;Lo;0;R;;;;;N;;;;;
+10903;PHOENICIAN LETTER DELT;Lo;0;R;;;;;N;;;;;
+10904;PHOENICIAN LETTER HE;Lo;0;R;;;;;N;;;;;
+10905;PHOENICIAN LETTER WAU;Lo;0;R;;;;;N;;;;;
+10906;PHOENICIAN LETTER ZAI;Lo;0;R;;;;;N;;;;;
+10907;PHOENICIAN LETTER HET;Lo;0;R;;;;;N;;;;;
+10908;PHOENICIAN LETTER TET;Lo;0;R;;;;;N;;;;;
+10909;PHOENICIAN LETTER YOD;Lo;0;R;;;;;N;;;;;
+1090A;PHOENICIAN LETTER KAF;Lo;0;R;;;;;N;;;;;
+1090B;PHOENICIAN LETTER LAMD;Lo;0;R;;;;;N;;;;;
+1090C;PHOENICIAN LETTER MEM;Lo;0;R;;;;;N;;;;;
+1090D;PHOENICIAN LETTER NUN;Lo;0;R;;;;;N;;;;;
+1090E;PHOENICIAN LETTER SEMK;Lo;0;R;;;;;N;;;;;
+1090F;PHOENICIAN LETTER AIN;Lo;0;R;;;;;N;;;;;
+10910;PHOENICIAN LETTER PE;Lo;0;R;;;;;N;;;;;
+10911;PHOENICIAN LETTER SADE;Lo;0;R;;;;;N;;;;;
+10912;PHOENICIAN LETTER QOF;Lo;0;R;;;;;N;;;;;
+10913;PHOENICIAN LETTER ROSH;Lo;0;R;;;;;N;;;;;
+10914;PHOENICIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;
+10915;PHOENICIAN LETTER TAU;Lo;0;R;;;;;N;;;;;
+10916;PHOENICIAN NUMBER ONE;No;0;R;;;;1;N;;;;;
+10917;PHOENICIAN NUMBER TEN;No;0;R;;;;10;N;;;;;
+10918;PHOENICIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;
+10919;PHOENICIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
+1091F;PHOENICIAN WORD SEPARATOR;Po;0;ON;;;;;N;;;;;
+10920;LYDIAN LETTER A;Lo;0;R;;;;;N;;;;;
+10921;LYDIAN LETTER B;Lo;0;R;;;;;N;;;;;
+10922;LYDIAN LETTER G;Lo;0;R;;;;;N;;;;;
+10923;LYDIAN LETTER D;Lo;0;R;;;;;N;;;;;
+10924;LYDIAN LETTER E;Lo;0;R;;;;;N;;;;;
+10925;LYDIAN LETTER V;Lo;0;R;;;;;N;;;;;
+10926;LYDIAN LETTER I;Lo;0;R;;;;;N;;;;;
+10927;LYDIAN LETTER Y;Lo;0;R;;;;;N;;;;;
+10928;LYDIAN LETTER K;Lo;0;R;;;;;N;;;;;
+10929;LYDIAN LETTER L;Lo;0;R;;;;;N;;;;;
+1092A;LYDIAN LETTER M;Lo;0;R;;;;;N;;;;;
+1092B;LYDIAN LETTER N;Lo;0;R;;;;;N;;;;;
+1092C;LYDIAN LETTER O;Lo;0;R;;;;;N;;;;;
+1092D;LYDIAN LETTER R;Lo;0;R;;;;;N;;;;;
+1092E;LYDIAN LETTER SS;Lo;0;R;;;;;N;;;;;
+1092F;LYDIAN LETTER T;Lo;0;R;;;;;N;;;;;
+10930;LYDIAN LETTER U;Lo;0;R;;;;;N;;;;;
+10931;LYDIAN LETTER F;Lo;0;R;;;;;N;;;;;
+10932;LYDIAN LETTER Q;Lo;0;R;;;;;N;;;;;
+10933;LYDIAN LETTER S;Lo;0;R;;;;;N;;;;;
+10934;LYDIAN LETTER TT;Lo;0;R;;;;;N;;;;;
+10935;LYDIAN LETTER AN;Lo;0;R;;;;;N;;;;;
+10936;LYDIAN LETTER EN;Lo;0;R;;;;;N;;;;;
+10937;LYDIAN LETTER LY;Lo;0;R;;;;;N;;;;;
+10938;LYDIAN LETTER NN;Lo;0;R;;;;;N;;;;;
+10939;LYDIAN LETTER C;Lo;0;R;;;;;N;;;;;
+1093F;LYDIAN TRIANGULAR MARK;Po;0;R;;;;;N;;;;;
+10A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;;
+10A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+10A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+10A03;KHAROSHTHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+10A05;KHAROSHTHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+10A06;KHAROSHTHI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+10A0C;KHAROSHTHI VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
+10A0D;KHAROSHTHI SIGN DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;;
+10A0E;KHAROSHTHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+10A0F;KHAROSHTHI SIGN VISARGA;Mn;230;NSM;;;;;N;;;;;
+10A10;KHAROSHTHI LETTER KA;Lo;0;R;;;;;N;;;;;
+10A11;KHAROSHTHI LETTER KHA;Lo;0;R;;;;;N;;;;;
+10A12;KHAROSHTHI LETTER GA;Lo;0;R;;;;;N;;;;;
+10A13;KHAROSHTHI LETTER GHA;Lo;0;R;;;;;N;;;;;
+10A15;KHAROSHTHI LETTER CA;Lo;0;R;;;;;N;;;;;
+10A16;KHAROSHTHI LETTER CHA;Lo;0;R;;;;;N;;;;;
+10A17;KHAROSHTHI LETTER JA;Lo;0;R;;;;;N;;;;;
+10A19;KHAROSHTHI LETTER NYA;Lo;0;R;;;;;N;;;;;
+10A1A;KHAROSHTHI LETTER TTA;Lo;0;R;;;;;N;;;;;
+10A1B;KHAROSHTHI LETTER TTHA;Lo;0;R;;;;;N;;;;;
+10A1C;KHAROSHTHI LETTER DDA;Lo;0;R;;;;;N;;;;;
+10A1D;KHAROSHTHI LETTER DDHA;Lo;0;R;;;;;N;;;;;
+10A1E;KHAROSHTHI LETTER NNA;Lo;0;R;;;;;N;;;;;
+10A1F;KHAROSHTHI LETTER TA;Lo;0;R;;;;;N;;;;;
+10A20;KHAROSHTHI LETTER THA;Lo;0;R;;;;;N;;;;;
+10A21;KHAROSHTHI LETTER DA;Lo;0;R;;;;;N;;;;;
+10A22;KHAROSHTHI LETTER DHA;Lo;0;R;;;;;N;;;;;
+10A23;KHAROSHTHI LETTER NA;Lo;0;R;;;;;N;;;;;
+10A24;KHAROSHTHI LETTER PA;Lo;0;R;;;;;N;;;;;
+10A25;KHAROSHTHI LETTER PHA;Lo;0;R;;;;;N;;;;;
+10A26;KHAROSHTHI LETTER BA;Lo;0;R;;;;;N;;;;;
+10A27;KHAROSHTHI LETTER BHA;Lo;0;R;;;;;N;;;;;
+10A28;KHAROSHTHI LETTER MA;Lo;0;R;;;;;N;;;;;
+10A29;KHAROSHTHI LETTER YA;Lo;0;R;;;;;N;;;;;
+10A2A;KHAROSHTHI LETTER RA;Lo;0;R;;;;;N;;;;;
+10A2B;KHAROSHTHI LETTER LA;Lo;0;R;;;;;N;;;;;
+10A2C;KHAROSHTHI LETTER VA;Lo;0;R;;;;;N;;;;;
+10A2D;KHAROSHTHI LETTER SHA;Lo;0;R;;;;;N;;;;;
+10A2E;KHAROSHTHI LETTER SSA;Lo;0;R;;;;;N;;;;;
+10A2F;KHAROSHTHI LETTER SA;Lo;0;R;;;;;N;;;;;
+10A30;KHAROSHTHI LETTER ZA;Lo;0;R;;;;;N;;;;;
+10A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;;
+10A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;;
+10A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;;
+10A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;;
+10A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;;
+10A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;;
+10A3F;KHAROSHTHI VIRAMA;Mn;9;NSM;;;;;N;;;;;
+10A40;KHAROSHTHI DIGIT ONE;No;0;R;;;1;1;N;;;;;
+10A41;KHAROSHTHI DIGIT TWO;No;0;R;;;2;2;N;;;;;
+10A42;KHAROSHTHI DIGIT THREE;No;0;R;;;3;3;N;;;;;
+10A43;KHAROSHTHI DIGIT FOUR;No;0;R;;;4;4;N;;;;;
+10A44;KHAROSHTHI NUMBER TEN;No;0;R;;;;10;N;;;;;
+10A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;;
+10A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
+10A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
+10A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;;
+10A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;;
+10A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;;
+10A53;KHAROSHTHI PUNCTUATION CRESCENT BAR;Po;0;R;;;;;N;;;;;
+10A54;KHAROSHTHI PUNCTUATION MANGALAM;Po;0;R;;;;;N;;;;;
+10A55;KHAROSHTHI PUNCTUATION LOTUS;Po;0;R;;;;;N;;;;;
+10A56;KHAROSHTHI PUNCTUATION DANDA;Po;0;R;;;;;N;;;;;
+10A57;KHAROSHTHI PUNCTUATION DOUBLE DANDA;Po;0;R;;;;;N;;;;;
+10A58;KHAROSHTHI PUNCTUATION LINES;Po;0;R;;;;;N;;;;;
+12000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;;
+12001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;;
+12002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;;
+12003;CUNEIFORM SIGN A TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12004;CUNEIFORM SIGN A TIMES HA;Lo;0;L;;;;;N;;;;;
+12005;CUNEIFORM SIGN A TIMES IGI;Lo;0;L;;;;;N;;;;;
+12006;CUNEIFORM SIGN A TIMES LAGAR GUNU;Lo;0;L;;;;;N;;;;;
+12007;CUNEIFORM SIGN A TIMES MUSH;Lo;0;L;;;;;N;;;;;
+12008;CUNEIFORM SIGN A TIMES SAG;Lo;0;L;;;;;N;;;;;
+12009;CUNEIFORM SIGN A2;Lo;0;L;;;;;N;;;;;
+1200A;CUNEIFORM SIGN AB;Lo;0;L;;;;;N;;;;;
+1200B;CUNEIFORM SIGN AB TIMES ASH2;Lo;0;L;;;;;N;;;;;
+1200C;CUNEIFORM SIGN AB TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;;
+1200D;CUNEIFORM SIGN AB TIMES GAL;Lo;0;L;;;;;N;;;;;
+1200E;CUNEIFORM SIGN AB TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1200F;CUNEIFORM SIGN AB TIMES HA;Lo;0;L;;;;;N;;;;;
+12010;CUNEIFORM SIGN AB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+12011;CUNEIFORM SIGN AB TIMES IMIN;Lo;0;L;;;;;N;;;;;
+12012;CUNEIFORM SIGN AB TIMES LAGAB;Lo;0;L;;;;;N;;;;;
+12013;CUNEIFORM SIGN AB TIMES SHESH;Lo;0;L;;;;;N;;;;;
+12014;CUNEIFORM SIGN AB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;
+12015;CUNEIFORM SIGN AB GUNU;Lo;0;L;;;;;N;;;;;
+12016;CUNEIFORM SIGN AB2;Lo;0;L;;;;;N;;;;;
+12017;CUNEIFORM SIGN AB2 TIMES BALAG;Lo;0;L;;;;;N;;;;;
+12018;CUNEIFORM SIGN AB2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12019;CUNEIFORM SIGN AB2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
+1201A;CUNEIFORM SIGN AB2 TIMES SHA3;Lo;0;L;;;;;N;;;;;
+1201B;CUNEIFORM SIGN AB2 TIMES TAK4;Lo;0;L;;;;;N;;;;;
+1201C;CUNEIFORM SIGN AD;Lo;0;L;;;;;N;;;;;
+1201D;CUNEIFORM SIGN AK;Lo;0;L;;;;;N;;;;;
+1201E;CUNEIFORM SIGN AK TIMES ERIN2;Lo;0;L;;;;;N;;;;;
+1201F;CUNEIFORM SIGN AK TIMES SHITA PLUS GISH;Lo;0;L;;;;;N;;;;;
+12020;CUNEIFORM SIGN AL;Lo;0;L;;;;;N;;;;;
+12021;CUNEIFORM SIGN AL TIMES AL;Lo;0;L;;;;;N;;;;;
+12022;CUNEIFORM SIGN AL TIMES DIM2;Lo;0;L;;;;;N;;;;;
+12023;CUNEIFORM SIGN AL TIMES GISH;Lo;0;L;;;;;N;;;;;
+12024;CUNEIFORM SIGN AL TIMES HA;Lo;0;L;;;;;N;;;;;
+12025;CUNEIFORM SIGN AL TIMES KAD3;Lo;0;L;;;;;N;;;;;
+12026;CUNEIFORM SIGN AL TIMES KI;Lo;0;L;;;;;N;;;;;
+12027;CUNEIFORM SIGN AL TIMES SHE;Lo;0;L;;;;;N;;;;;
+12028;CUNEIFORM SIGN AL TIMES USH;Lo;0;L;;;;;N;;;;;
+12029;CUNEIFORM SIGN ALAN;Lo;0;L;;;;;N;;;;;
+1202A;CUNEIFORM SIGN ALEPH;Lo;0;L;;;;;N;;;;;
+1202B;CUNEIFORM SIGN AMAR;Lo;0;L;;;;;N;;;;;
+1202C;CUNEIFORM SIGN AMAR TIMES SHE;Lo;0;L;;;;;N;;;;;
+1202D;CUNEIFORM SIGN AN;Lo;0;L;;;;;N;;;;;
+1202E;CUNEIFORM SIGN AN OVER AN;Lo;0;L;;;;;N;;;;;
+1202F;CUNEIFORM SIGN AN THREE TIMES;Lo;0;L;;;;;N;;;;;
+12030;CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA;Lo;0;L;;;;;N;;;;;
+12031;CUNEIFORM SIGN AN PLUS NAGA SQUARED;Lo;0;L;;;;;N;;;;;
+12032;CUNEIFORM SIGN ANSHE;Lo;0;L;;;;;N;;;;;
+12033;CUNEIFORM SIGN APIN;Lo;0;L;;;;;N;;;;;
+12034;CUNEIFORM SIGN ARAD;Lo;0;L;;;;;N;;;;;
+12035;CUNEIFORM SIGN ARAD TIMES KUR;Lo;0;L;;;;;N;;;;;
+12036;CUNEIFORM SIGN ARKAB;Lo;0;L;;;;;N;;;;;
+12037;CUNEIFORM SIGN ASAL2;Lo;0;L;;;;;N;;;;;
+12038;CUNEIFORM SIGN ASH;Lo;0;L;;;;;N;;;;;
+12039;CUNEIFORM SIGN ASH ZIDA TENU;Lo;0;L;;;;;N;;;;;
+1203A;CUNEIFORM SIGN ASH KABA TENU;Lo;0;L;;;;;N;;;;;
+1203B;CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP;Lo;0;L;;;;;N;;;;;
+1203C;CUNEIFORM SIGN ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;;
+1203D;CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;;
+1203E;CUNEIFORM SIGN ASH2;Lo;0;L;;;;;N;;;;;
+1203F;CUNEIFORM SIGN ASHGAB;Lo;0;L;;;;;N;;;;;
+12040;CUNEIFORM SIGN BA;Lo;0;L;;;;;N;;;;;
+12041;CUNEIFORM SIGN BAD;Lo;0;L;;;;;N;;;;;
+12042;CUNEIFORM SIGN BAG3;Lo;0;L;;;;;N;;;;;
+12043;CUNEIFORM SIGN BAHAR2;Lo;0;L;;;;;N;;;;;
+12044;CUNEIFORM SIGN BAL;Lo;0;L;;;;;N;;;;;
+12045;CUNEIFORM SIGN BAL OVER BAL;Lo;0;L;;;;;N;;;;;
+12046;CUNEIFORM SIGN BALAG;Lo;0;L;;;;;N;;;;;
+12047;CUNEIFORM SIGN BAR;Lo;0;L;;;;;N;;;;;
+12048;CUNEIFORM SIGN BARA2;Lo;0;L;;;;;N;;;;;
+12049;CUNEIFORM SIGN BI;Lo;0;L;;;;;N;;;;;
+1204A;CUNEIFORM SIGN BI TIMES A;Lo;0;L;;;;;N;;;;;
+1204B;CUNEIFORM SIGN BI TIMES GAR;Lo;0;L;;;;;N;;;;;
+1204C;CUNEIFORM SIGN BI TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+1204D;CUNEIFORM SIGN BU;Lo;0;L;;;;;N;;;;;
+1204E;CUNEIFORM SIGN BU OVER BU AB;Lo;0;L;;;;;N;;;;;
+1204F;CUNEIFORM SIGN BU OVER BU UN;Lo;0;L;;;;;N;;;;;
+12050;CUNEIFORM SIGN BU CROSSING BU;Lo;0;L;;;;;N;;;;;
+12051;CUNEIFORM SIGN BULUG;Lo;0;L;;;;;N;;;;;
+12052;CUNEIFORM SIGN BULUG OVER BULUG;Lo;0;L;;;;;N;;;;;
+12053;CUNEIFORM SIGN BUR;Lo;0;L;;;;;N;;;;;
+12054;CUNEIFORM SIGN BUR2;Lo;0;L;;;;;N;;;;;
+12055;CUNEIFORM SIGN DA;Lo;0;L;;;;;N;;;;;
+12056;CUNEIFORM SIGN DAG;Lo;0;L;;;;;N;;;;;
+12057;CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH;Lo;0;L;;;;;N;;;;;
+12058;CUNEIFORM SIGN DAG KISIM5 TIMES AMAR;Lo;0;L;;;;;N;;;;;
+12059;CUNEIFORM SIGN DAG KISIM5 TIMES BALAG;Lo;0;L;;;;;N;;;;;
+1205A;CUNEIFORM SIGN DAG KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;;
+1205B;CUNEIFORM SIGN DAG KISIM5 TIMES GA;Lo;0;L;;;;;N;;;;;
+1205C;CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH;Lo;0;L;;;;;N;;;;;
+1205D;CUNEIFORM SIGN DAG KISIM5 TIMES GI;Lo;0;L;;;;;N;;;;;
+1205E;CUNEIFORM SIGN DAG KISIM5 TIMES GIR2;Lo;0;L;;;;;N;;;;;
+1205F;CUNEIFORM SIGN DAG KISIM5 TIMES GUD;Lo;0;L;;;;;N;;;;;
+12060;CUNEIFORM SIGN DAG KISIM5 TIMES HA;Lo;0;L;;;;;N;;;;;
+12061;CUNEIFORM SIGN DAG KISIM5 TIMES IR;Lo;0;L;;;;;N;;;;;
+12062;CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU;Lo;0;L;;;;;N;;;;;
+12063;CUNEIFORM SIGN DAG KISIM5 TIMES KAK;Lo;0;L;;;;;N;;;;;
+12064;CUNEIFORM SIGN DAG KISIM5 TIMES LA;Lo;0;L;;;;;N;;;;;
+12065;CUNEIFORM SIGN DAG KISIM5 TIMES LU;Lo;0;L;;;;;N;;;;;
+12066;CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2;Lo;0;L;;;;;N;;;;;
+12067;CUNEIFORM SIGN DAG KISIM5 TIMES LUM;Lo;0;L;;;;;N;;;;;
+12068;CUNEIFORM SIGN DAG KISIM5 TIMES NE;Lo;0;L;;;;;N;;;;;
+12069;CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP;Lo;0;L;;;;;N;;;;;
+1206A;CUNEIFORM SIGN DAG KISIM5 TIMES SI;Lo;0;L;;;;;N;;;;;
+1206B;CUNEIFORM SIGN DAG KISIM5 TIMES TAK4;Lo;0;L;;;;;N;;;;;
+1206C;CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2;Lo;0;L;;;;;N;;;;;
+1206D;CUNEIFORM SIGN DAG KISIM5 TIMES USH;Lo;0;L;;;;;N;;;;;
+1206E;CUNEIFORM SIGN DAM;Lo;0;L;;;;;N;;;;;
+1206F;CUNEIFORM SIGN DAR;Lo;0;L;;;;;N;;;;;
+12070;CUNEIFORM SIGN DARA3;Lo;0;L;;;;;N;;;;;
+12071;CUNEIFORM SIGN DARA4;Lo;0;L;;;;;N;;;;;
+12072;CUNEIFORM SIGN DI;Lo;0;L;;;;;N;;;;;
+12073;CUNEIFORM SIGN DIB;Lo;0;L;;;;;N;;;;;
+12074;CUNEIFORM SIGN DIM;Lo;0;L;;;;;N;;;;;
+12075;CUNEIFORM SIGN DIM TIMES SHE;Lo;0;L;;;;;N;;;;;
+12076;CUNEIFORM SIGN DIM2;Lo;0;L;;;;;N;;;;;
+12077;CUNEIFORM SIGN DIN;Lo;0;L;;;;;N;;;;;
+12078;CUNEIFORM SIGN DIN KASKAL U GUNU DISH;Lo;0;L;;;;;N;;;;;
+12079;CUNEIFORM SIGN DISH;Lo;0;L;;;;;N;;;;;
+1207A;CUNEIFORM SIGN DU;Lo;0;L;;;;;N;;;;;
+1207B;CUNEIFORM SIGN DU OVER DU;Lo;0;L;;;;;N;;;;;
+1207C;CUNEIFORM SIGN DU GUNU;Lo;0;L;;;;;N;;;;;
+1207D;CUNEIFORM SIGN DU SHESHIG;Lo;0;L;;;;;N;;;;;
+1207E;CUNEIFORM SIGN DUB;Lo;0;L;;;;;N;;;;;
+1207F;CUNEIFORM SIGN DUB TIMES ESH2;Lo;0;L;;;;;N;;;;;
+12080;CUNEIFORM SIGN DUB2;Lo;0;L;;;;;N;;;;;
+12081;CUNEIFORM SIGN DUG;Lo;0;L;;;;;N;;;;;
+12082;CUNEIFORM SIGN DUGUD;Lo;0;L;;;;;N;;;;;
+12083;CUNEIFORM SIGN DUH;Lo;0;L;;;;;N;;;;;
+12084;CUNEIFORM SIGN DUN;Lo;0;L;;;;;N;;;;;
+12085;CUNEIFORM SIGN DUN3;Lo;0;L;;;;;N;;;;;
+12086;CUNEIFORM SIGN DUN3 GUNU;Lo;0;L;;;;;N;;;;;
+12087;CUNEIFORM SIGN DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;;
+12088;CUNEIFORM SIGN DUN4;Lo;0;L;;;;;N;;;;;
+12089;CUNEIFORM SIGN DUR2;Lo;0;L;;;;;N;;;;;
+1208A;CUNEIFORM SIGN E;Lo;0;L;;;;;N;;;;;
+1208B;CUNEIFORM SIGN E TIMES PAP;Lo;0;L;;;;;N;;;;;
+1208C;CUNEIFORM SIGN E OVER E NUN OVER NUN;Lo;0;L;;;;;N;;;;;
+1208D;CUNEIFORM SIGN E2;Lo;0;L;;;;;N;;;;;
+1208E;CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA;Lo;0;L;;;;;N;;;;;
+1208F;CUNEIFORM SIGN E2 TIMES GAR;Lo;0;L;;;;;N;;;;;
+12090;CUNEIFORM SIGN E2 TIMES MI;Lo;0;L;;;;;N;;;;;
+12091;CUNEIFORM SIGN E2 TIMES SAL;Lo;0;L;;;;;N;;;;;
+12092;CUNEIFORM SIGN E2 TIMES SHE;Lo;0;L;;;;;N;;;;;
+12093;CUNEIFORM SIGN E2 TIMES U;Lo;0;L;;;;;N;;;;;
+12094;CUNEIFORM SIGN EDIN;Lo;0;L;;;;;N;;;;;
+12095;CUNEIFORM SIGN EGIR;Lo;0;L;;;;;N;;;;;
+12096;CUNEIFORM SIGN EL;Lo;0;L;;;;;N;;;;;
+12097;CUNEIFORM SIGN EN;Lo;0;L;;;;;N;;;;;
+12098;CUNEIFORM SIGN EN TIMES GAN2;Lo;0;L;;;;;N;;;;;
+12099;CUNEIFORM SIGN EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1209A;CUNEIFORM SIGN EN TIMES ME;Lo;0;L;;;;;N;;;;;
+1209B;CUNEIFORM SIGN EN CROSSING EN;Lo;0;L;;;;;N;;;;;
+1209C;CUNEIFORM SIGN EN OPPOSING EN;Lo;0;L;;;;;N;;;;;
+1209D;CUNEIFORM SIGN EN SQUARED;Lo;0;L;;;;;N;;;;;
+1209E;CUNEIFORM SIGN EREN;Lo;0;L;;;;;N;;;;;
+1209F;CUNEIFORM SIGN ERIN2;Lo;0;L;;;;;N;;;;;
+120A0;CUNEIFORM SIGN ESH2;Lo;0;L;;;;;N;;;;;
+120A1;CUNEIFORM SIGN EZEN;Lo;0;L;;;;;N;;;;;
+120A2;CUNEIFORM SIGN EZEN TIMES A;Lo;0;L;;;;;N;;;;;
+120A3;CUNEIFORM SIGN EZEN TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;;
+120A4;CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL;Lo;0;L;;;;;N;;;;;
+120A5;CUNEIFORM SIGN EZEN TIMES AN;Lo;0;L;;;;;N;;;;;
+120A6;CUNEIFORM SIGN EZEN TIMES BAD;Lo;0;L;;;;;N;;;;;
+120A7;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;;
+120A8;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;;
+120A9;CUNEIFORM SIGN EZEN TIMES HA;Lo;0;L;;;;;N;;;;;
+120AA;CUNEIFORM SIGN EZEN TIMES HA GUNU;Lo;0;L;;;;;N;;;;;
+120AB;CUNEIFORM SIGN EZEN TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+120AC;CUNEIFORM SIGN EZEN TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+120AD;CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED;Lo;0;L;;;;;N;;;;;
+120AE;CUNEIFORM SIGN EZEN TIMES KU3;Lo;0;L;;;;;N;;;;;
+120AF;CUNEIFORM SIGN EZEN TIMES LA;Lo;0;L;;;;;N;;;;;
+120B0;CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL;Lo;0;L;;;;;N;;;;;
+120B1;CUNEIFORM SIGN EZEN TIMES LI;Lo;0;L;;;;;N;;;;;
+120B2;CUNEIFORM SIGN EZEN TIMES LU;Lo;0;L;;;;;N;;;;;
+120B3;CUNEIFORM SIGN EZEN TIMES U2;Lo;0;L;;;;;N;;;;;
+120B4;CUNEIFORM SIGN EZEN TIMES UD;Lo;0;L;;;;;N;;;;;
+120B5;CUNEIFORM SIGN GA;Lo;0;L;;;;;N;;;;;
+120B6;CUNEIFORM SIGN GA GUNU;Lo;0;L;;;;;N;;;;;
+120B7;CUNEIFORM SIGN GA2;Lo;0;L;;;;;N;;;;;
+120B8;CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;;
+120B9;CUNEIFORM SIGN GA2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;;
+120BA;CUNEIFORM SIGN GA2 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;;
+120BB;CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB;Lo;0;L;;;;;N;;;;;
+120BC;CUNEIFORM SIGN GA2 TIMES AN;Lo;0;L;;;;;N;;;;;
+120BD;CUNEIFORM SIGN GA2 TIMES ASH;Lo;0;L;;;;;N;;;;;
+120BE;CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL;Lo;0;L;;;;;N;;;;;
+120BF;CUNEIFORM SIGN GA2 TIMES BAD;Lo;0;L;;;;;N;;;;;
+120C0;CUNEIFORM SIGN GA2 TIMES BAR PLUS RA;Lo;0;L;;;;;N;;;;;
+120C1;CUNEIFORM SIGN GA2 TIMES BUR;Lo;0;L;;;;;N;;;;;
+120C2;CUNEIFORM SIGN GA2 TIMES BUR PLUS RA;Lo;0;L;;;;;N;;;;;
+120C3;CUNEIFORM SIGN GA2 TIMES DA;Lo;0;L;;;;;N;;;;;
+120C4;CUNEIFORM SIGN GA2 TIMES DI;Lo;0;L;;;;;N;;;;;
+120C5;CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE;Lo;0;L;;;;;N;;;;;
+120C6;CUNEIFORM SIGN GA2 TIMES DUB;Lo;0;L;;;;;N;;;;;
+120C7;CUNEIFORM SIGN GA2 TIMES EL;Lo;0;L;;;;;N;;;;;
+120C8;CUNEIFORM SIGN GA2 TIMES EL PLUS LA;Lo;0;L;;;;;N;;;;;
+120C9;CUNEIFORM SIGN GA2 TIMES EN;Lo;0;L;;;;;N;;;;;
+120CA;CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+120CB;CUNEIFORM SIGN GA2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+120CC;CUNEIFORM SIGN GA2 TIMES GAR;Lo;0;L;;;;;N;;;;;
+120CD;CUNEIFORM SIGN GA2 TIMES GI;Lo;0;L;;;;;N;;;;;
+120CE;CUNEIFORM SIGN GA2 TIMES GI4;Lo;0;L;;;;;N;;;;;
+120CF;CUNEIFORM SIGN GA2 TIMES GI4 PLUS A;Lo;0;L;;;;;N;;;;;
+120D0;CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU;Lo;0;L;;;;;N;;;;;
+120D1;CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2;Lo;0;L;;;;;N;;;;;
+120D2;CUNEIFORM SIGN GA2 TIMES HAL;Lo;0;L;;;;;N;;;;;
+120D3;CUNEIFORM SIGN GA2 TIMES HAL PLUS LA;Lo;0;L;;;;;N;;;;;
+120D4;CUNEIFORM SIGN GA2 TIMES HI PLUS LI;Lo;0;L;;;;;N;;;;;
+120D5;CUNEIFORM SIGN GA2 TIMES HUB2;Lo;0;L;;;;;N;;;;;
+120D6;CUNEIFORM SIGN GA2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+120D7;CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH;Lo;0;L;;;;;N;;;;;
+120D8;CUNEIFORM SIGN GA2 TIMES KAK;Lo;0;L;;;;;N;;;;;
+120D9;CUNEIFORM SIGN GA2 TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+120DA;CUNEIFORM SIGN GA2 TIMES KID;Lo;0;L;;;;;N;;;;;
+120DB;CUNEIFORM SIGN GA2 TIMES KID PLUS LAL;Lo;0;L;;;;;N;;;;;
+120DC;CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN;Lo;0;L;;;;;N;;;;;
+120DD;CUNEIFORM SIGN GA2 TIMES LA;Lo;0;L;;;;;N;;;;;
+120DE;CUNEIFORM SIGN GA2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
+120DF;CUNEIFORM SIGN GA2 TIMES MI;Lo;0;L;;;;;N;;;;;
+120E0;CUNEIFORM SIGN GA2 TIMES NUN;Lo;0;L;;;;;N;;;;;
+120E1;CUNEIFORM SIGN GA2 TIMES NUN OVER NUN;Lo;0;L;;;;;N;;;;;
+120E2;CUNEIFORM SIGN GA2 TIMES PA;Lo;0;L;;;;;N;;;;;
+120E3;CUNEIFORM SIGN GA2 TIMES SAL;Lo;0;L;;;;;N;;;;;
+120E4;CUNEIFORM SIGN GA2 TIMES SAR;Lo;0;L;;;;;N;;;;;
+120E5;CUNEIFORM SIGN GA2 TIMES SHE;Lo;0;L;;;;;N;;;;;
+120E6;CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR;Lo;0;L;;;;;N;;;;;
+120E7;CUNEIFORM SIGN GA2 TIMES SHID;Lo;0;L;;;;;N;;;;;
+120E8;CUNEIFORM SIGN GA2 TIMES SUM;Lo;0;L;;;;;N;;;;;
+120E9;CUNEIFORM SIGN GA2 TIMES TAK4;Lo;0;L;;;;;N;;;;;
+120EA;CUNEIFORM SIGN GA2 TIMES U;Lo;0;L;;;;;N;;;;;
+120EB;CUNEIFORM SIGN GA2 TIMES UD;Lo;0;L;;;;;N;;;;;
+120EC;CUNEIFORM SIGN GA2 TIMES UD PLUS DU;Lo;0;L;;;;;N;;;;;
+120ED;CUNEIFORM SIGN GA2 OVER GA2;Lo;0;L;;;;;N;;;;;
+120EE;CUNEIFORM SIGN GABA;Lo;0;L;;;;;N;;;;;
+120EF;CUNEIFORM SIGN GABA CROSSING GABA;Lo;0;L;;;;;N;;;;;
+120F0;CUNEIFORM SIGN GAD;Lo;0;L;;;;;N;;;;;
+120F1;CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+120F2;CUNEIFORM SIGN GAL;Lo;0;L;;;;;N;;;;;
+120F3;CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+120F4;CUNEIFORM SIGN GALAM;Lo;0;L;;;;;N;;;;;
+120F5;CUNEIFORM SIGN GAM;Lo;0;L;;;;;N;;;;;
+120F6;CUNEIFORM SIGN GAN;Lo;0;L;;;;;N;;;;;
+120F7;CUNEIFORM SIGN GAN2;Lo;0;L;;;;;N;;;;;
+120F8;CUNEIFORM SIGN GAN2 TENU;Lo;0;L;;;;;N;;;;;
+120F9;CUNEIFORM SIGN GAN2 OVER GAN2;Lo;0;L;;;;;N;;;;;
+120FA;CUNEIFORM SIGN GAN2 CROSSING GAN2;Lo;0;L;;;;;N;;;;;
+120FB;CUNEIFORM SIGN GAR;Lo;0;L;;;;;N;;;;;
+120FC;CUNEIFORM SIGN GAR3;Lo;0;L;;;;;N;;;;;
+120FD;CUNEIFORM SIGN GASHAN;Lo;0;L;;;;;N;;;;;
+120FE;CUNEIFORM SIGN GESHTIN;Lo;0;L;;;;;N;;;;;
+120FF;CUNEIFORM SIGN GESHTIN TIMES KUR;Lo;0;L;;;;;N;;;;;
+12100;CUNEIFORM SIGN GI;Lo;0;L;;;;;N;;;;;
+12101;CUNEIFORM SIGN GI TIMES E;Lo;0;L;;;;;N;;;;;
+12102;CUNEIFORM SIGN GI TIMES U;Lo;0;L;;;;;N;;;;;
+12103;CUNEIFORM SIGN GI CROSSING GI;Lo;0;L;;;;;N;;;;;
+12104;CUNEIFORM SIGN GI4;Lo;0;L;;;;;N;;;;;
+12105;CUNEIFORM SIGN GI4 OVER GI4;Lo;0;L;;;;;N;;;;;
+12106;CUNEIFORM SIGN GI4 CROSSING GI4;Lo;0;L;;;;;N;;;;;
+12107;CUNEIFORM SIGN GIDIM;Lo;0;L;;;;;N;;;;;
+12108;CUNEIFORM SIGN GIR2;Lo;0;L;;;;;N;;;;;
+12109;CUNEIFORM SIGN GIR2 GUNU;Lo;0;L;;;;;N;;;;;
+1210A;CUNEIFORM SIGN GIR3;Lo;0;L;;;;;N;;;;;
+1210B;CUNEIFORM SIGN GIR3 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;;
+1210C;CUNEIFORM SIGN GIR3 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1210D;CUNEIFORM SIGN GIR3 TIMES IGI;Lo;0;L;;;;;N;;;;;
+1210E;CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI;Lo;0;L;;;;;N;;;;;
+1210F;CUNEIFORM SIGN GIR3 TIMES PA;Lo;0;L;;;;;N;;;;;
+12110;CUNEIFORM SIGN GISAL;Lo;0;L;;;;;N;;;;;
+12111;CUNEIFORM SIGN GISH;Lo;0;L;;;;;N;;;;;
+12112;CUNEIFORM SIGN GISH CROSSING GISH;Lo;0;L;;;;;N;;;;;
+12113;CUNEIFORM SIGN GISH TIMES BAD;Lo;0;L;;;;;N;;;;;
+12114;CUNEIFORM SIGN GISH TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12115;CUNEIFORM SIGN GISH TENU;Lo;0;L;;;;;N;;;;;
+12116;CUNEIFORM SIGN GU;Lo;0;L;;;;;N;;;;;
+12117;CUNEIFORM SIGN GU CROSSING GU;Lo;0;L;;;;;N;;;;;
+12118;CUNEIFORM SIGN GU2;Lo;0;L;;;;;N;;;;;
+12119;CUNEIFORM SIGN GU2 TIMES KAK;Lo;0;L;;;;;N;;;;;
+1211A;CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+1211B;CUNEIFORM SIGN GU2 TIMES NUN;Lo;0;L;;;;;N;;;;;
+1211C;CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2;Lo;0;L;;;;;N;;;;;
+1211D;CUNEIFORM SIGN GU2 GUNU;Lo;0;L;;;;;N;;;;;
+1211E;CUNEIFORM SIGN GUD;Lo;0;L;;;;;N;;;;;
+1211F;CUNEIFORM SIGN GUD TIMES A PLUS KUR;Lo;0;L;;;;;N;;;;;
+12120;CUNEIFORM SIGN GUD TIMES KUR;Lo;0;L;;;;;N;;;;;
+12121;CUNEIFORM SIGN GUD OVER GUD LUGAL;Lo;0;L;;;;;N;;;;;
+12122;CUNEIFORM SIGN GUL;Lo;0;L;;;;;N;;;;;
+12123;CUNEIFORM SIGN GUM;Lo;0;L;;;;;N;;;;;
+12124;CUNEIFORM SIGN GUM TIMES SHE;Lo;0;L;;;;;N;;;;;
+12125;CUNEIFORM SIGN GUR;Lo;0;L;;;;;N;;;;;
+12126;CUNEIFORM SIGN GUR7;Lo;0;L;;;;;N;;;;;
+12127;CUNEIFORM SIGN GURUN;Lo;0;L;;;;;N;;;;;
+12128;CUNEIFORM SIGN GURUSH;Lo;0;L;;;;;N;;;;;
+12129;CUNEIFORM SIGN HA;Lo;0;L;;;;;N;;;;;
+1212A;CUNEIFORM SIGN HA TENU;Lo;0;L;;;;;N;;;;;
+1212B;CUNEIFORM SIGN HA GUNU;Lo;0;L;;;;;N;;;;;
+1212C;CUNEIFORM SIGN HAL;Lo;0;L;;;;;N;;;;;
+1212D;CUNEIFORM SIGN HI;Lo;0;L;;;;;N;;;;;
+1212E;CUNEIFORM SIGN HI TIMES ASH;Lo;0;L;;;;;N;;;;;
+1212F;CUNEIFORM SIGN HI TIMES ASH2;Lo;0;L;;;;;N;;;;;
+12130;CUNEIFORM SIGN HI TIMES BAD;Lo;0;L;;;;;N;;;;;
+12131;CUNEIFORM SIGN HI TIMES DISH;Lo;0;L;;;;;N;;;;;
+12132;CUNEIFORM SIGN HI TIMES GAD;Lo;0;L;;;;;N;;;;;
+12133;CUNEIFORM SIGN HI TIMES KIN;Lo;0;L;;;;;N;;;;;
+12134;CUNEIFORM SIGN HI TIMES NUN;Lo;0;L;;;;;N;;;;;
+12135;CUNEIFORM SIGN HI TIMES SHE;Lo;0;L;;;;;N;;;;;
+12136;CUNEIFORM SIGN HI TIMES U;Lo;0;L;;;;;N;;;;;
+12137;CUNEIFORM SIGN HU;Lo;0;L;;;;;N;;;;;
+12138;CUNEIFORM SIGN HUB2;Lo;0;L;;;;;N;;;;;
+12139;CUNEIFORM SIGN HUB2 TIMES AN;Lo;0;L;;;;;N;;;;;
+1213A;CUNEIFORM SIGN HUB2 TIMES HAL;Lo;0;L;;;;;N;;;;;
+1213B;CUNEIFORM SIGN HUB2 TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+1213C;CUNEIFORM SIGN HUB2 TIMES LISH;Lo;0;L;;;;;N;;;;;
+1213D;CUNEIFORM SIGN HUB2 TIMES UD;Lo;0;L;;;;;N;;;;;
+1213E;CUNEIFORM SIGN HUL2;Lo;0;L;;;;;N;;;;;
+1213F;CUNEIFORM SIGN I;Lo;0;L;;;;;N;;;;;
+12140;CUNEIFORM SIGN I A;Lo;0;L;;;;;N;;;;;
+12141;CUNEIFORM SIGN IB;Lo;0;L;;;;;N;;;;;
+12142;CUNEIFORM SIGN IDIM;Lo;0;L;;;;;N;;;;;
+12143;CUNEIFORM SIGN IDIM OVER IDIM BUR;Lo;0;L;;;;;N;;;;;
+12144;CUNEIFORM SIGN IDIM OVER IDIM SQUARED;Lo;0;L;;;;;N;;;;;
+12145;CUNEIFORM SIGN IG;Lo;0;L;;;;;N;;;;;
+12146;CUNEIFORM SIGN IGI;Lo;0;L;;;;;N;;;;;
+12147;CUNEIFORM SIGN IGI DIB;Lo;0;L;;;;;N;;;;;
+12148;CUNEIFORM SIGN IGI RI;Lo;0;L;;;;;N;;;;;
+12149;CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD;Lo;0;L;;;;;N;;;;;
+1214A;CUNEIFORM SIGN IGI GUNU;Lo;0;L;;;;;N;;;;;
+1214B;CUNEIFORM SIGN IL;Lo;0;L;;;;;N;;;;;
+1214C;CUNEIFORM SIGN IL TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1214D;CUNEIFORM SIGN IL2;Lo;0;L;;;;;N;;;;;
+1214E;CUNEIFORM SIGN IM;Lo;0;L;;;;;N;;;;;
+1214F;CUNEIFORM SIGN IM TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12150;CUNEIFORM SIGN IM CROSSING IM;Lo;0;L;;;;;N;;;;;
+12151;CUNEIFORM SIGN IM OPPOSING IM;Lo;0;L;;;;;N;;;;;
+12152;CUNEIFORM SIGN IM SQUARED;Lo;0;L;;;;;N;;;;;
+12153;CUNEIFORM SIGN IMIN;Lo;0;L;;;;;N;;;;;
+12154;CUNEIFORM SIGN IN;Lo;0;L;;;;;N;;;;;
+12155;CUNEIFORM SIGN IR;Lo;0;L;;;;;N;;;;;
+12156;CUNEIFORM SIGN ISH;Lo;0;L;;;;;N;;;;;
+12157;CUNEIFORM SIGN KA;Lo;0;L;;;;;N;;;;;
+12158;CUNEIFORM SIGN KA TIMES A;Lo;0;L;;;;;N;;;;;
+12159;CUNEIFORM SIGN KA TIMES AD;Lo;0;L;;;;;N;;;;;
+1215A;CUNEIFORM SIGN KA TIMES AD PLUS KU3;Lo;0;L;;;;;N;;;;;
+1215B;CUNEIFORM SIGN KA TIMES ASH2;Lo;0;L;;;;;N;;;;;
+1215C;CUNEIFORM SIGN KA TIMES BAD;Lo;0;L;;;;;N;;;;;
+1215D;CUNEIFORM SIGN KA TIMES BALAG;Lo;0;L;;;;;N;;;;;
+1215E;CUNEIFORM SIGN KA TIMES BAR;Lo;0;L;;;;;N;;;;;
+1215F;CUNEIFORM SIGN KA TIMES BI;Lo;0;L;;;;;N;;;;;
+12160;CUNEIFORM SIGN KA TIMES ERIN2;Lo;0;L;;;;;N;;;;;
+12161;CUNEIFORM SIGN KA TIMES ESH2;Lo;0;L;;;;;N;;;;;
+12162;CUNEIFORM SIGN KA TIMES GA;Lo;0;L;;;;;N;;;;;
+12163;CUNEIFORM SIGN KA TIMES GAL;Lo;0;L;;;;;N;;;;;
+12164;CUNEIFORM SIGN KA TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12165;CUNEIFORM SIGN KA TIMES GAR;Lo;0;L;;;;;N;;;;;
+12166;CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A;Lo;0;L;;;;;N;;;;;
+12167;CUNEIFORM SIGN KA TIMES GI;Lo;0;L;;;;;N;;;;;
+12168;CUNEIFORM SIGN KA TIMES GIR2;Lo;0;L;;;;;N;;;;;
+12169;CUNEIFORM SIGN KA TIMES GISH PLUS SAR;Lo;0;L;;;;;N;;;;;
+1216A;CUNEIFORM SIGN KA TIMES GISH CROSSING GISH;Lo;0;L;;;;;N;;;;;
+1216B;CUNEIFORM SIGN KA TIMES GU;Lo;0;L;;;;;N;;;;;
+1216C;CUNEIFORM SIGN KA TIMES GUR7;Lo;0;L;;;;;N;;;;;
+1216D;CUNEIFORM SIGN KA TIMES IGI;Lo;0;L;;;;;N;;;;;
+1216E;CUNEIFORM SIGN KA TIMES IM;Lo;0;L;;;;;N;;;;;
+1216F;CUNEIFORM SIGN KA TIMES KAK;Lo;0;L;;;;;N;;;;;
+12170;CUNEIFORM SIGN KA TIMES KI;Lo;0;L;;;;;N;;;;;
+12171;CUNEIFORM SIGN KA TIMES KID;Lo;0;L;;;;;N;;;;;
+12172;CUNEIFORM SIGN KA TIMES LI;Lo;0;L;;;;;N;;;;;
+12173;CUNEIFORM SIGN KA TIMES LU;Lo;0;L;;;;;N;;;;;
+12174;CUNEIFORM SIGN KA TIMES ME;Lo;0;L;;;;;N;;;;;
+12175;CUNEIFORM SIGN KA TIMES ME PLUS DU;Lo;0;L;;;;;N;;;;;
+12176;CUNEIFORM SIGN KA TIMES ME PLUS GI;Lo;0;L;;;;;N;;;;;
+12177;CUNEIFORM SIGN KA TIMES ME PLUS TE;Lo;0;L;;;;;N;;;;;
+12178;CUNEIFORM SIGN KA TIMES MI;Lo;0;L;;;;;N;;;;;
+12179;CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ;Lo;0;L;;;;;N;;;;;
+1217A;CUNEIFORM SIGN KA TIMES NE;Lo;0;L;;;;;N;;;;;
+1217B;CUNEIFORM SIGN KA TIMES NUN;Lo;0;L;;;;;N;;;;;
+1217C;CUNEIFORM SIGN KA TIMES PI;Lo;0;L;;;;;N;;;;;
+1217D;CUNEIFORM SIGN KA TIMES RU;Lo;0;L;;;;;N;;;;;
+1217E;CUNEIFORM SIGN KA TIMES SA;Lo;0;L;;;;;N;;;;;
+1217F;CUNEIFORM SIGN KA TIMES SAR;Lo;0;L;;;;;N;;;;;
+12180;CUNEIFORM SIGN KA TIMES SHA;Lo;0;L;;;;;N;;;;;
+12181;CUNEIFORM SIGN KA TIMES SHE;Lo;0;L;;;;;N;;;;;
+12182;CUNEIFORM SIGN KA TIMES SHID;Lo;0;L;;;;;N;;;;;
+12183;CUNEIFORM SIGN KA TIMES SHU;Lo;0;L;;;;;N;;;;;
+12184;CUNEIFORM SIGN KA TIMES SIG;Lo;0;L;;;;;N;;;;;
+12185;CUNEIFORM SIGN KA TIMES SUHUR;Lo;0;L;;;;;N;;;;;
+12186;CUNEIFORM SIGN KA TIMES TAR;Lo;0;L;;;;;N;;;;;
+12187;CUNEIFORM SIGN KA TIMES U;Lo;0;L;;;;;N;;;;;
+12188;CUNEIFORM SIGN KA TIMES U2;Lo;0;L;;;;;N;;;;;
+12189;CUNEIFORM SIGN KA TIMES UD;Lo;0;L;;;;;N;;;;;
+1218A;CUNEIFORM SIGN KA TIMES UMUM TIMES PA;Lo;0;L;;;;;N;;;;;
+1218B;CUNEIFORM SIGN KA TIMES USH;Lo;0;L;;;;;N;;;;;
+1218C;CUNEIFORM SIGN KA TIMES ZI;Lo;0;L;;;;;N;;;;;
+1218D;CUNEIFORM SIGN KA2;Lo;0;L;;;;;N;;;;;
+1218E;CUNEIFORM SIGN KA2 CROSSING KA2;Lo;0;L;;;;;N;;;;;
+1218F;CUNEIFORM SIGN KAB;Lo;0;L;;;;;N;;;;;
+12190;CUNEIFORM SIGN KAD2;Lo;0;L;;;;;N;;;;;
+12191;CUNEIFORM SIGN KAD3;Lo;0;L;;;;;N;;;;;
+12192;CUNEIFORM SIGN KAD4;Lo;0;L;;;;;N;;;;;
+12193;CUNEIFORM SIGN KAD5;Lo;0;L;;;;;N;;;;;
+12194;CUNEIFORM SIGN KAD5 OVER KAD5;Lo;0;L;;;;;N;;;;;
+12195;CUNEIFORM SIGN KAK;Lo;0;L;;;;;N;;;;;
+12196;CUNEIFORM SIGN KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+12197;CUNEIFORM SIGN KAL;Lo;0;L;;;;;N;;;;;
+12198;CUNEIFORM SIGN KAL TIMES BAD;Lo;0;L;;;;;N;;;;;
+12199;CUNEIFORM SIGN KAL CROSSING KAL;Lo;0;L;;;;;N;;;;;
+1219A;CUNEIFORM SIGN KAM2;Lo;0;L;;;;;N;;;;;
+1219B;CUNEIFORM SIGN KAM4;Lo;0;L;;;;;N;;;;;
+1219C;CUNEIFORM SIGN KASKAL;Lo;0;L;;;;;N;;;;;
+1219D;CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;;
+1219E;CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;;
+1219F;CUNEIFORM SIGN KESH2;Lo;0;L;;;;;N;;;;;
+121A0;CUNEIFORM SIGN KI;Lo;0;L;;;;;N;;;;;
+121A1;CUNEIFORM SIGN KI TIMES BAD;Lo;0;L;;;;;N;;;;;
+121A2;CUNEIFORM SIGN KI TIMES U;Lo;0;L;;;;;N;;;;;
+121A3;CUNEIFORM SIGN KI TIMES UD;Lo;0;L;;;;;N;;;;;
+121A4;CUNEIFORM SIGN KID;Lo;0;L;;;;;N;;;;;
+121A5;CUNEIFORM SIGN KIN;Lo;0;L;;;;;N;;;;;
+121A6;CUNEIFORM SIGN KISAL;Lo;0;L;;;;;N;;;;;
+121A7;CUNEIFORM SIGN KISH;Lo;0;L;;;;;N;;;;;
+121A8;CUNEIFORM SIGN KISIM5;Lo;0;L;;;;;N;;;;;
+121A9;CUNEIFORM SIGN KISIM5 OVER KISIM5;Lo;0;L;;;;;N;;;;;
+121AA;CUNEIFORM SIGN KU;Lo;0;L;;;;;N;;;;;
+121AB;CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2;Lo;0;L;;;;;N;;;;;
+121AC;CUNEIFORM SIGN KU3;Lo;0;L;;;;;N;;;;;
+121AD;CUNEIFORM SIGN KU4;Lo;0;L;;;;;N;;;;;
+121AE;CUNEIFORM SIGN KU4 VARIANT FORM;Lo;0;L;;;;;N;;;;;
+121AF;CUNEIFORM SIGN KU7;Lo;0;L;;;;;N;;;;;
+121B0;CUNEIFORM SIGN KUL;Lo;0;L;;;;;N;;;;;
+121B1;CUNEIFORM SIGN KUL GUNU;Lo;0;L;;;;;N;;;;;
+121B2;CUNEIFORM SIGN KUN;Lo;0;L;;;;;N;;;;;
+121B3;CUNEIFORM SIGN KUR;Lo;0;L;;;;;N;;;;;
+121B4;CUNEIFORM SIGN KUR OPPOSING KUR;Lo;0;L;;;;;N;;;;;
+121B5;CUNEIFORM SIGN KUSHU2;Lo;0;L;;;;;N;;;;;
+121B6;CUNEIFORM SIGN KWU318;Lo;0;L;;;;;N;;;;;
+121B7;CUNEIFORM SIGN LA;Lo;0;L;;;;;N;;;;;
+121B8;CUNEIFORM SIGN LAGAB;Lo;0;L;;;;;N;;;;;
+121B9;CUNEIFORM SIGN LAGAB TIMES A;Lo;0;L;;;;;N;;;;;
+121BA;CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;;
+121BB;CUNEIFORM SIGN LAGAB TIMES A PLUS GAR;Lo;0;L;;;;;N;;;;;
+121BC;CUNEIFORM SIGN LAGAB TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;;
+121BD;CUNEIFORM SIGN LAGAB TIMES AL;Lo;0;L;;;;;N;;;;;
+121BE;CUNEIFORM SIGN LAGAB TIMES AN;Lo;0;L;;;;;N;;;;;
+121BF;CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU;Lo;0;L;;;;;N;;;;;
+121C0;CUNEIFORM SIGN LAGAB TIMES BAD;Lo;0;L;;;;;N;;;;;
+121C1;CUNEIFORM SIGN LAGAB TIMES BI;Lo;0;L;;;;;N;;;;;
+121C2;CUNEIFORM SIGN LAGAB TIMES DAR;Lo;0;L;;;;;N;;;;;
+121C3;CUNEIFORM SIGN LAGAB TIMES EN;Lo;0;L;;;;;N;;;;;
+121C4;CUNEIFORM SIGN LAGAB TIMES GA;Lo;0;L;;;;;N;;;;;
+121C5;CUNEIFORM SIGN LAGAB TIMES GAR;Lo;0;L;;;;;N;;;;;
+121C6;CUNEIFORM SIGN LAGAB TIMES GUD;Lo;0;L;;;;;N;;;;;
+121C7;CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD;Lo;0;L;;;;;N;;;;;
+121C8;CUNEIFORM SIGN LAGAB TIMES HA;Lo;0;L;;;;;N;;;;;
+121C9;CUNEIFORM SIGN LAGAB TIMES HAL;Lo;0;L;;;;;N;;;;;
+121CA;CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN;Lo;0;L;;;;;N;;;;;
+121CB;CUNEIFORM SIGN LAGAB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+121CC;CUNEIFORM SIGN LAGAB TIMES IM;Lo;0;L;;;;;N;;;;;
+121CD;CUNEIFORM SIGN LAGAB TIMES IM PLUS HA;Lo;0;L;;;;;N;;;;;
+121CE;CUNEIFORM SIGN LAGAB TIMES IM PLUS LU;Lo;0;L;;;;;N;;;;;
+121CF;CUNEIFORM SIGN LAGAB TIMES KI;Lo;0;L;;;;;N;;;;;
+121D0;CUNEIFORM SIGN LAGAB TIMES KIN;Lo;0;L;;;;;N;;;;;
+121D1;CUNEIFORM SIGN LAGAB TIMES KU3;Lo;0;L;;;;;N;;;;;
+121D2;CUNEIFORM SIGN LAGAB TIMES KUL;Lo;0;L;;;;;N;;;;;
+121D3;CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A;Lo;0;L;;;;;N;;;;;
+121D4;CUNEIFORM SIGN LAGAB TIMES LAGAB;Lo;0;L;;;;;N;;;;;
+121D5;CUNEIFORM SIGN LAGAB TIMES LISH;Lo;0;L;;;;;N;;;;;
+121D6;CUNEIFORM SIGN LAGAB TIMES LU;Lo;0;L;;;;;N;;;;;
+121D7;CUNEIFORM SIGN LAGAB TIMES LUL;Lo;0;L;;;;;N;;;;;
+121D8;CUNEIFORM SIGN LAGAB TIMES ME;Lo;0;L;;;;;N;;;;;
+121D9;CUNEIFORM SIGN LAGAB TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
+121DA;CUNEIFORM SIGN LAGAB TIMES MUSH;Lo;0;L;;;;;N;;;;;
+121DB;CUNEIFORM SIGN LAGAB TIMES NE;Lo;0;L;;;;;N;;;;;
+121DC;CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;;
+121DD;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2;Lo;0;L;;;;;N;;;;;
+121DE;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU;Lo;0;L;;;;;N;;;;;
+121DF;CUNEIFORM SIGN LAGAB TIMES SHU2;Lo;0;L;;;;;N;;;;;
+121E0;CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2;Lo;0;L;;;;;N;;;;;
+121E1;CUNEIFORM SIGN LAGAB TIMES SUM;Lo;0;L;;;;;N;;;;;
+121E2;CUNEIFORM SIGN LAGAB TIMES TAG;Lo;0;L;;;;;N;;;;;
+121E3;CUNEIFORM SIGN LAGAB TIMES TAK4;Lo;0;L;;;;;N;;;;;
+121E4;CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA;Lo;0;L;;;;;N;;;;;
+121E5;CUNEIFORM SIGN LAGAB TIMES U;Lo;0;L;;;;;N;;;;;
+121E6;CUNEIFORM SIGN LAGAB TIMES U PLUS A;Lo;0;L;;;;;N;;;;;
+121E7;CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;
+121E8;CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;
+121E9;CUNEIFORM SIGN LAGAB TIMES UD;Lo;0;L;;;;;N;;;;;
+121EA;CUNEIFORM SIGN LAGAB TIMES USH;Lo;0;L;;;;;N;;;;;
+121EB;CUNEIFORM SIGN LAGAB SQUARED;Lo;0;L;;;;;N;;;;;
+121EC;CUNEIFORM SIGN LAGAR;Lo;0;L;;;;;N;;;;;
+121ED;CUNEIFORM SIGN LAGAR TIMES SHE;Lo;0;L;;;;;N;;;;;
+121EE;CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;;
+121EF;CUNEIFORM SIGN LAGAR GUNU;Lo;0;L;;;;;N;;;;;
+121F0;CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE;Lo;0;L;;;;;N;;;;;
+121F1;CUNEIFORM SIGN LAHSHU;Lo;0;L;;;;;N;;;;;
+121F2;CUNEIFORM SIGN LAL;Lo;0;L;;;;;N;;;;;
+121F3;CUNEIFORM SIGN LAL TIMES LAL;Lo;0;L;;;;;N;;;;;
+121F4;CUNEIFORM SIGN LAM;Lo;0;L;;;;;N;;;;;
+121F5;CUNEIFORM SIGN LAM TIMES KUR;Lo;0;L;;;;;N;;;;;
+121F6;CUNEIFORM SIGN LAM TIMES KUR PLUS RU;Lo;0;L;;;;;N;;;;;
+121F7;CUNEIFORM SIGN LI;Lo;0;L;;;;;N;;;;;
+121F8;CUNEIFORM SIGN LIL;Lo;0;L;;;;;N;;;;;
+121F9;CUNEIFORM SIGN LIMMU2;Lo;0;L;;;;;N;;;;;
+121FA;CUNEIFORM SIGN LISH;Lo;0;L;;;;;N;;;;;
+121FB;CUNEIFORM SIGN LU;Lo;0;L;;;;;N;;;;;
+121FC;CUNEIFORM SIGN LU TIMES BAD;Lo;0;L;;;;;N;;;;;
+121FD;CUNEIFORM SIGN LU2;Lo;0;L;;;;;N;;;;;
+121FE;CUNEIFORM SIGN LU2 TIMES AL;Lo;0;L;;;;;N;;;;;
+121FF;CUNEIFORM SIGN LU2 TIMES BAD;Lo;0;L;;;;;N;;;;;
+12200;CUNEIFORM SIGN LU2 TIMES ESH2;Lo;0;L;;;;;N;;;;;
+12201;CUNEIFORM SIGN LU2 TIMES ESH2 TENU;Lo;0;L;;;;;N;;;;;
+12202;CUNEIFORM SIGN LU2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12203;CUNEIFORM SIGN LU2 TIMES HI TIMES BAD;Lo;0;L;;;;;N;;;;;
+12204;CUNEIFORM SIGN LU2 TIMES IM;Lo;0;L;;;;;N;;;;;
+12205;CUNEIFORM SIGN LU2 TIMES KAD2;Lo;0;L;;;;;N;;;;;
+12206;CUNEIFORM SIGN LU2 TIMES KAD3;Lo;0;L;;;;;N;;;;;
+12207;CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH;Lo;0;L;;;;;N;;;;;
+12208;CUNEIFORM SIGN LU2 TIMES KI;Lo;0;L;;;;;N;;;;;
+12209;CUNEIFORM SIGN LU2 TIMES LA PLUS ASH;Lo;0;L;;;;;N;;;;;
+1220A;CUNEIFORM SIGN LU2 TIMES LAGAB;Lo;0;L;;;;;N;;;;;
+1220B;CUNEIFORM SIGN LU2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
+1220C;CUNEIFORM SIGN LU2 TIMES NE;Lo;0;L;;;;;N;;;;;
+1220D;CUNEIFORM SIGN LU2 TIMES NU;Lo;0;L;;;;;N;;;;;
+1220E;CUNEIFORM SIGN LU2 TIMES SI PLUS ASH;Lo;0;L;;;;;N;;;;;
+1220F;CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU;Lo;0;L;;;;;N;;;;;
+12210;CUNEIFORM SIGN LU2 TIMES TUG2;Lo;0;L;;;;;N;;;;;
+12211;CUNEIFORM SIGN LU2 TENU;Lo;0;L;;;;;N;;;;;
+12212;CUNEIFORM SIGN LU2 CROSSING LU2;Lo;0;L;;;;;N;;;;;
+12213;CUNEIFORM SIGN LU2 OPPOSING LU2;Lo;0;L;;;;;N;;;;;
+12214;CUNEIFORM SIGN LU2 SQUARED;Lo;0;L;;;;;N;;;;;
+12215;CUNEIFORM SIGN LU2 SHESHIG;Lo;0;L;;;;;N;;;;;
+12216;CUNEIFORM SIGN LU3;Lo;0;L;;;;;N;;;;;
+12217;CUNEIFORM SIGN LUGAL;Lo;0;L;;;;;N;;;;;
+12218;CUNEIFORM SIGN LUGAL OVER LUGAL;Lo;0;L;;;;;N;;;;;
+12219;CUNEIFORM SIGN LUGAL OPPOSING LUGAL;Lo;0;L;;;;;N;;;;;
+1221A;CUNEIFORM SIGN LUGAL SHESHIG;Lo;0;L;;;;;N;;;;;
+1221B;CUNEIFORM SIGN LUH;Lo;0;L;;;;;N;;;;;
+1221C;CUNEIFORM SIGN LUL;Lo;0;L;;;;;N;;;;;
+1221D;CUNEIFORM SIGN LUM;Lo;0;L;;;;;N;;;;;
+1221E;CUNEIFORM SIGN LUM OVER LUM;Lo;0;L;;;;;N;;;;;
+1221F;CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+12220;CUNEIFORM SIGN MA;Lo;0;L;;;;;N;;;;;
+12221;CUNEIFORM SIGN MA TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12222;CUNEIFORM SIGN MA GUNU;Lo;0;L;;;;;N;;;;;
+12223;CUNEIFORM SIGN MA2;Lo;0;L;;;;;N;;;;;
+12224;CUNEIFORM SIGN MAH;Lo;0;L;;;;;N;;;;;
+12225;CUNEIFORM SIGN MAR;Lo;0;L;;;;;N;;;;;
+12226;CUNEIFORM SIGN MASH;Lo;0;L;;;;;N;;;;;
+12227;CUNEIFORM SIGN MASH2;Lo;0;L;;;;;N;;;;;
+12228;CUNEIFORM SIGN ME;Lo;0;L;;;;;N;;;;;
+12229;CUNEIFORM SIGN MES;Lo;0;L;;;;;N;;;;;
+1222A;CUNEIFORM SIGN MI;Lo;0;L;;;;;N;;;;;
+1222B;CUNEIFORM SIGN MIN;Lo;0;L;;;;;N;;;;;
+1222C;CUNEIFORM SIGN MU;Lo;0;L;;;;;N;;;;;
+1222D;CUNEIFORM SIGN MU OVER MU;Lo;0;L;;;;;N;;;;;
+1222E;CUNEIFORM SIGN MUG;Lo;0;L;;;;;N;;;;;
+1222F;CUNEIFORM SIGN MUG GUNU;Lo;0;L;;;;;N;;;;;
+12230;CUNEIFORM SIGN MUNSUB;Lo;0;L;;;;;N;;;;;
+12231;CUNEIFORM SIGN MURGU2;Lo;0;L;;;;;N;;;;;
+12232;CUNEIFORM SIGN MUSH;Lo;0;L;;;;;N;;;;;
+12233;CUNEIFORM SIGN MUSH TIMES A;Lo;0;L;;;;;N;;;;;
+12234;CUNEIFORM SIGN MUSH TIMES KUR;Lo;0;L;;;;;N;;;;;
+12235;CUNEIFORM SIGN MUSH TIMES ZA;Lo;0;L;;;;;N;;;;;
+12236;CUNEIFORM SIGN MUSH OVER MUSH;Lo;0;L;;;;;N;;;;;
+12237;CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA;Lo;0;L;;;;;N;;;;;
+12238;CUNEIFORM SIGN MUSH CROSSING MUSH;Lo;0;L;;;;;N;;;;;
+12239;CUNEIFORM SIGN MUSH3;Lo;0;L;;;;;N;;;;;
+1223A;CUNEIFORM SIGN MUSH3 TIMES A;Lo;0;L;;;;;N;;;;;
+1223B;CUNEIFORM SIGN MUSH3 TIMES A PLUS DI;Lo;0;L;;;;;N;;;;;
+1223C;CUNEIFORM SIGN MUSH3 TIMES DI;Lo;0;L;;;;;N;;;;;
+1223D;CUNEIFORM SIGN MUSH3 GUNU;Lo;0;L;;;;;N;;;;;
+1223E;CUNEIFORM SIGN NA;Lo;0;L;;;;;N;;;;;
+1223F;CUNEIFORM SIGN NA2;Lo;0;L;;;;;N;;;;;
+12240;CUNEIFORM SIGN NAGA;Lo;0;L;;;;;N;;;;;
+12241;CUNEIFORM SIGN NAGA INVERTED;Lo;0;L;;;;;N;;;;;
+12242;CUNEIFORM SIGN NAGA TIMES SHU TENU;Lo;0;L;;;;;N;;;;;
+12243;CUNEIFORM SIGN NAGA OPPOSING NAGA;Lo;0;L;;;;;N;;;;;
+12244;CUNEIFORM SIGN NAGAR;Lo;0;L;;;;;N;;;;;
+12245;CUNEIFORM SIGN NAM NUTILLU;Lo;0;L;;;;;N;;;;;
+12246;CUNEIFORM SIGN NAM;Lo;0;L;;;;;N;;;;;
+12247;CUNEIFORM SIGN NAM2;Lo;0;L;;;;;N;;;;;
+12248;CUNEIFORM SIGN NE;Lo;0;L;;;;;N;;;;;
+12249;CUNEIFORM SIGN NE TIMES A;Lo;0;L;;;;;N;;;;;
+1224A;CUNEIFORM SIGN NE TIMES UD;Lo;0;L;;;;;N;;;;;
+1224B;CUNEIFORM SIGN NE SHESHIG;Lo;0;L;;;;;N;;;;;
+1224C;CUNEIFORM SIGN NI;Lo;0;L;;;;;N;;;;;
+1224D;CUNEIFORM SIGN NI TIMES E;Lo;0;L;;;;;N;;;;;
+1224E;CUNEIFORM SIGN NI2;Lo;0;L;;;;;N;;;;;
+1224F;CUNEIFORM SIGN NIM;Lo;0;L;;;;;N;;;;;
+12250;CUNEIFORM SIGN NIM TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12251;CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12252;CUNEIFORM SIGN NINDA2;Lo;0;L;;;;;N;;;;;
+12253;CUNEIFORM SIGN NINDA2 TIMES AN;Lo;0;L;;;;;N;;;;;
+12254;CUNEIFORM SIGN NINDA2 TIMES ASH;Lo;0;L;;;;;N;;;;;
+12255;CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH;Lo;0;L;;;;;N;;;;;
+12256;CUNEIFORM SIGN NINDA2 TIMES GUD;Lo;0;L;;;;;N;;;;;
+12257;CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12258;CUNEIFORM SIGN NINDA2 TIMES NE;Lo;0;L;;;;;N;;;;;
+12259;CUNEIFORM SIGN NINDA2 TIMES NUN;Lo;0;L;;;;;N;;;;;
+1225A;CUNEIFORM SIGN NINDA2 TIMES SHE;Lo;0;L;;;;;N;;;;;
+1225B;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN;Lo;0;L;;;;;N;;;;;
+1225C;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH;Lo;0;L;;;;;N;;;;;
+1225D;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH;Lo;0;L;;;;;N;;;;;
+1225E;CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;
+1225F;CUNEIFORM SIGN NINDA2 TIMES USH;Lo;0;L;;;;;N;;;;;
+12260;CUNEIFORM SIGN NISAG;Lo;0;L;;;;;N;;;;;
+12261;CUNEIFORM SIGN NU;Lo;0;L;;;;;N;;;;;
+12262;CUNEIFORM SIGN NU11;Lo;0;L;;;;;N;;;;;
+12263;CUNEIFORM SIGN NUN;Lo;0;L;;;;;N;;;;;
+12264;CUNEIFORM SIGN NUN LAGAR TIMES GAR;Lo;0;L;;;;;N;;;;;
+12265;CUNEIFORM SIGN NUN LAGAR TIMES MASH;Lo;0;L;;;;;N;;;;;
+12266;CUNEIFORM SIGN NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;;
+12267;CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;;
+12268;CUNEIFORM SIGN NUN LAGAR TIMES USH;Lo;0;L;;;;;N;;;;;
+12269;CUNEIFORM SIGN NUN TENU;Lo;0;L;;;;;N;;;;;
+1226A;CUNEIFORM SIGN NUN OVER NUN;Lo;0;L;;;;;N;;;;;
+1226B;CUNEIFORM SIGN NUN CROSSING NUN;Lo;0;L;;;;;N;;;;;
+1226C;CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR;Lo;0;L;;;;;N;;;;;
+1226D;CUNEIFORM SIGN NUNUZ;Lo;0;L;;;;;N;;;;;
+1226E;CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB;Lo;0;L;;;;;N;;;;;
+1226F;CUNEIFORM SIGN NUNUZ AB2 TIMES BI;Lo;0;L;;;;;N;;;;;
+12270;CUNEIFORM SIGN NUNUZ AB2 TIMES DUG;Lo;0;L;;;;;N;;;;;
+12271;CUNEIFORM SIGN NUNUZ AB2 TIMES GUD;Lo;0;L;;;;;N;;;;;
+12272;CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+12273;CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3;Lo;0;L;;;;;N;;;;;
+12274;CUNEIFORM SIGN NUNUZ AB2 TIMES LA;Lo;0;L;;;;;N;;;;;
+12275;CUNEIFORM SIGN NUNUZ AB2 TIMES NE;Lo;0;L;;;;;N;;;;;
+12276;CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3;Lo;0;L;;;;;N;;;;;
+12277;CUNEIFORM SIGN NUNUZ AB2 TIMES U2;Lo;0;L;;;;;N;;;;;
+12278;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;;
+12279;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U;Lo;0;L;;;;;N;;;;;
+1227A;CUNEIFORM SIGN PA;Lo;0;L;;;;;N;;;;;
+1227B;CUNEIFORM SIGN PAD;Lo;0;L;;;;;N;;;;;
+1227C;CUNEIFORM SIGN PAN;Lo;0;L;;;;;N;;;;;
+1227D;CUNEIFORM SIGN PAP;Lo;0;L;;;;;N;;;;;
+1227E;CUNEIFORM SIGN PESH2;Lo;0;L;;;;;N;;;;;
+1227F;CUNEIFORM SIGN PI;Lo;0;L;;;;;N;;;;;
+12280;CUNEIFORM SIGN PI TIMES A;Lo;0;L;;;;;N;;;;;
+12281;CUNEIFORM SIGN PI TIMES AB;Lo;0;L;;;;;N;;;;;
+12282;CUNEIFORM SIGN PI TIMES BI;Lo;0;L;;;;;N;;;;;
+12283;CUNEIFORM SIGN PI TIMES BU;Lo;0;L;;;;;N;;;;;
+12284;CUNEIFORM SIGN PI TIMES E;Lo;0;L;;;;;N;;;;;
+12285;CUNEIFORM SIGN PI TIMES I;Lo;0;L;;;;;N;;;;;
+12286;CUNEIFORM SIGN PI TIMES IB;Lo;0;L;;;;;N;;;;;
+12287;CUNEIFORM SIGN PI TIMES U;Lo;0;L;;;;;N;;;;;
+12288;CUNEIFORM SIGN PI TIMES U2;Lo;0;L;;;;;N;;;;;
+12289;CUNEIFORM SIGN PI CROSSING PI;Lo;0;L;;;;;N;;;;;
+1228A;CUNEIFORM SIGN PIRIG;Lo;0;L;;;;;N;;;;;
+1228B;CUNEIFORM SIGN PIRIG TIMES KAL;Lo;0;L;;;;;N;;;;;
+1228C;CUNEIFORM SIGN PIRIG TIMES UD;Lo;0;L;;;;;N;;;;;
+1228D;CUNEIFORM SIGN PIRIG TIMES ZA;Lo;0;L;;;;;N;;;;;
+1228E;CUNEIFORM SIGN PIRIG OPPOSING PIRIG;Lo;0;L;;;;;N;;;;;
+1228F;CUNEIFORM SIGN RA;Lo;0;L;;;;;N;;;;;
+12290;CUNEIFORM SIGN RAB;Lo;0;L;;;;;N;;;;;
+12291;CUNEIFORM SIGN RI;Lo;0;L;;;;;N;;;;;
+12292;CUNEIFORM SIGN RU;Lo;0;L;;;;;N;;;;;
+12293;CUNEIFORM SIGN SA;Lo;0;L;;;;;N;;;;;
+12294;CUNEIFORM SIGN SAG NUTILLU;Lo;0;L;;;;;N;;;;;
+12295;CUNEIFORM SIGN SAG;Lo;0;L;;;;;N;;;;;
+12296;CUNEIFORM SIGN SAG TIMES A;Lo;0;L;;;;;N;;;;;
+12297;CUNEIFORM SIGN SAG TIMES DU;Lo;0;L;;;;;N;;;;;
+12298;CUNEIFORM SIGN SAG TIMES DUB;Lo;0;L;;;;;N;;;;;
+12299;CUNEIFORM SIGN SAG TIMES HA;Lo;0;L;;;;;N;;;;;
+1229A;CUNEIFORM SIGN SAG TIMES KAK;Lo;0;L;;;;;N;;;;;
+1229B;CUNEIFORM SIGN SAG TIMES KUR;Lo;0;L;;;;;N;;;;;
+1229C;CUNEIFORM SIGN SAG TIMES LUM;Lo;0;L;;;;;N;;;;;
+1229D;CUNEIFORM SIGN SAG TIMES MI;Lo;0;L;;;;;N;;;;;
+1229E;CUNEIFORM SIGN SAG TIMES NUN;Lo;0;L;;;;;N;;;;;
+1229F;CUNEIFORM SIGN SAG TIMES SAL;Lo;0;L;;;;;N;;;;;
+122A0;CUNEIFORM SIGN SAG TIMES SHID;Lo;0;L;;;;;N;;;;;
+122A1;CUNEIFORM SIGN SAG TIMES TAB;Lo;0;L;;;;;N;;;;;
+122A2;CUNEIFORM SIGN SAG TIMES U2;Lo;0;L;;;;;N;;;;;
+122A3;CUNEIFORM SIGN SAG TIMES UB;Lo;0;L;;;;;N;;;;;
+122A4;CUNEIFORM SIGN SAG TIMES UM;Lo;0;L;;;;;N;;;;;
+122A5;CUNEIFORM SIGN SAG TIMES UR;Lo;0;L;;;;;N;;;;;
+122A6;CUNEIFORM SIGN SAG TIMES USH;Lo;0;L;;;;;N;;;;;
+122A7;CUNEIFORM SIGN SAG OVER SAG;Lo;0;L;;;;;N;;;;;
+122A8;CUNEIFORM SIGN SAG GUNU;Lo;0;L;;;;;N;;;;;
+122A9;CUNEIFORM SIGN SAL;Lo;0;L;;;;;N;;;;;
+122AA;CUNEIFORM SIGN SAL LAGAB TIMES ASH2;Lo;0;L;;;;;N;;;;;
+122AB;CUNEIFORM SIGN SANGA2;Lo;0;L;;;;;N;;;;;
+122AC;CUNEIFORM SIGN SAR;Lo;0;L;;;;;N;;;;;
+122AD;CUNEIFORM SIGN SHA;Lo;0;L;;;;;N;;;;;
+122AE;CUNEIFORM SIGN SHA3;Lo;0;L;;;;;N;;;;;
+122AF;CUNEIFORM SIGN SHA3 TIMES A;Lo;0;L;;;;;N;;;;;
+122B0;CUNEIFORM SIGN SHA3 TIMES BAD;Lo;0;L;;;;;N;;;;;
+122B1;CUNEIFORM SIGN SHA3 TIMES GISH;Lo;0;L;;;;;N;;;;;
+122B2;CUNEIFORM SIGN SHA3 TIMES NE;Lo;0;L;;;;;N;;;;;
+122B3;CUNEIFORM SIGN SHA3 TIMES SHU2;Lo;0;L;;;;;N;;;;;
+122B4;CUNEIFORM SIGN SHA3 TIMES TUR;Lo;0;L;;;;;N;;;;;
+122B5;CUNEIFORM SIGN SHA3 TIMES U;Lo;0;L;;;;;N;;;;;
+122B6;CUNEIFORM SIGN SHA3 TIMES U PLUS A;Lo;0;L;;;;;N;;;;;
+122B7;CUNEIFORM SIGN SHA6;Lo;0;L;;;;;N;;;;;
+122B8;CUNEIFORM SIGN SHAB6;Lo;0;L;;;;;N;;;;;
+122B9;CUNEIFORM SIGN SHAR2;Lo;0;L;;;;;N;;;;;
+122BA;CUNEIFORM SIGN SHE;Lo;0;L;;;;;N;;;;;
+122BB;CUNEIFORM SIGN SHE HU;Lo;0;L;;;;;N;;;;;
+122BC;CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+122BD;CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+122BE;CUNEIFORM SIGN SHEG9;Lo;0;L;;;;;N;;;;;
+122BF;CUNEIFORM SIGN SHEN;Lo;0;L;;;;;N;;;;;
+122C0;CUNEIFORM SIGN SHESH;Lo;0;L;;;;;N;;;;;
+122C1;CUNEIFORM SIGN SHESH2;Lo;0;L;;;;;N;;;;;
+122C2;CUNEIFORM SIGN SHESHLAM;Lo;0;L;;;;;N;;;;;
+122C3;CUNEIFORM SIGN SHID;Lo;0;L;;;;;N;;;;;
+122C4;CUNEIFORM SIGN SHID TIMES A;Lo;0;L;;;;;N;;;;;
+122C5;CUNEIFORM SIGN SHID TIMES IM;Lo;0;L;;;;;N;;;;;
+122C6;CUNEIFORM SIGN SHIM;Lo;0;L;;;;;N;;;;;
+122C7;CUNEIFORM SIGN SHIM TIMES A;Lo;0;L;;;;;N;;;;;
+122C8;CUNEIFORM SIGN SHIM TIMES BAL;Lo;0;L;;;;;N;;;;;
+122C9;CUNEIFORM SIGN SHIM TIMES BULUG;Lo;0;L;;;;;N;;;;;
+122CA;CUNEIFORM SIGN SHIM TIMES DIN;Lo;0;L;;;;;N;;;;;
+122CB;CUNEIFORM SIGN SHIM TIMES GAR;Lo;0;L;;;;;N;;;;;
+122CC;CUNEIFORM SIGN SHIM TIMES IGI;Lo;0;L;;;;;N;;;;;
+122CD;CUNEIFORM SIGN SHIM TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+122CE;CUNEIFORM SIGN SHIM TIMES KUSHU2;Lo;0;L;;;;;N;;;;;
+122CF;CUNEIFORM SIGN SHIM TIMES LUL;Lo;0;L;;;;;N;;;;;
+122D0;CUNEIFORM SIGN SHIM TIMES MUG;Lo;0;L;;;;;N;;;;;
+122D1;CUNEIFORM SIGN SHIM TIMES SAL;Lo;0;L;;;;;N;;;;;
+122D2;CUNEIFORM SIGN SHINIG;Lo;0;L;;;;;N;;;;;
+122D3;CUNEIFORM SIGN SHIR;Lo;0;L;;;;;N;;;;;
+122D4;CUNEIFORM SIGN SHIR TENU;Lo;0;L;;;;;N;;;;;
+122D5;CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR;Lo;0;L;;;;;N;;;;;
+122D6;CUNEIFORM SIGN SHITA;Lo;0;L;;;;;N;;;;;
+122D7;CUNEIFORM SIGN SHU;Lo;0;L;;;;;N;;;;;
+122D8;CUNEIFORM SIGN SHU OVER INVERTED SHU;Lo;0;L;;;;;N;;;;;
+122D9;CUNEIFORM SIGN SHU2;Lo;0;L;;;;;N;;;;;
+122DA;CUNEIFORM SIGN SHUBUR;Lo;0;L;;;;;N;;;;;
+122DB;CUNEIFORM SIGN SI;Lo;0;L;;;;;N;;;;;
+122DC;CUNEIFORM SIGN SI GUNU;Lo;0;L;;;;;N;;;;;
+122DD;CUNEIFORM SIGN SIG;Lo;0;L;;;;;N;;;;;
+122DE;CUNEIFORM SIGN SIG4;Lo;0;L;;;;;N;;;;;
+122DF;CUNEIFORM SIGN SIG4 OVER SIG4 SHU2;Lo;0;L;;;;;N;;;;;
+122E0;CUNEIFORM SIGN SIK2;Lo;0;L;;;;;N;;;;;
+122E1;CUNEIFORM SIGN SILA3;Lo;0;L;;;;;N;;;;;
+122E2;CUNEIFORM SIGN SU;Lo;0;L;;;;;N;;;;;
+122E3;CUNEIFORM SIGN SU OVER SU;Lo;0;L;;;;;N;;;;;
+122E4;CUNEIFORM SIGN SUD;Lo;0;L;;;;;N;;;;;
+122E5;CUNEIFORM SIGN SUD2;Lo;0;L;;;;;N;;;;;
+122E6;CUNEIFORM SIGN SUHUR;Lo;0;L;;;;;N;;;;;
+122E7;CUNEIFORM SIGN SUM;Lo;0;L;;;;;N;;;;;
+122E8;CUNEIFORM SIGN SUMASH;Lo;0;L;;;;;N;;;;;
+122E9;CUNEIFORM SIGN SUR;Lo;0;L;;;;;N;;;;;
+122EA;CUNEIFORM SIGN SUR9;Lo;0;L;;;;;N;;;;;
+122EB;CUNEIFORM SIGN TA;Lo;0;L;;;;;N;;;;;
+122EC;CUNEIFORM SIGN TA ASTERISK;Lo;0;L;;;;;N;;;;;
+122ED;CUNEIFORM SIGN TA TIMES HI;Lo;0;L;;;;;N;;;;;
+122EE;CUNEIFORM SIGN TA TIMES MI;Lo;0;L;;;;;N;;;;;
+122EF;CUNEIFORM SIGN TA GUNU;Lo;0;L;;;;;N;;;;;
+122F0;CUNEIFORM SIGN TAB;Lo;0;L;;;;;N;;;;;
+122F1;CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH;Lo;0;L;;;;;N;;;;;
+122F2;CUNEIFORM SIGN TAB SQUARED;Lo;0;L;;;;;N;;;;;
+122F3;CUNEIFORM SIGN TAG;Lo;0;L;;;;;N;;;;;
+122F4;CUNEIFORM SIGN TAG TIMES BI;Lo;0;L;;;;;N;;;;;
+122F5;CUNEIFORM SIGN TAG TIMES GUD;Lo;0;L;;;;;N;;;;;
+122F6;CUNEIFORM SIGN TAG TIMES SHE;Lo;0;L;;;;;N;;;;;
+122F7;CUNEIFORM SIGN TAG TIMES SHU;Lo;0;L;;;;;N;;;;;
+122F8;CUNEIFORM SIGN TAG TIMES TUG2;Lo;0;L;;;;;N;;;;;
+122F9;CUNEIFORM SIGN TAG TIMES UD;Lo;0;L;;;;;N;;;;;
+122FA;CUNEIFORM SIGN TAK4;Lo;0;L;;;;;N;;;;;
+122FB;CUNEIFORM SIGN TAR;Lo;0;L;;;;;N;;;;;
+122FC;CUNEIFORM SIGN TE;Lo;0;L;;;;;N;;;;;
+122FD;CUNEIFORM SIGN TE GUNU;Lo;0;L;;;;;N;;;;;
+122FE;CUNEIFORM SIGN TI;Lo;0;L;;;;;N;;;;;
+122FF;CUNEIFORM SIGN TI TENU;Lo;0;L;;;;;N;;;;;
+12300;CUNEIFORM SIGN TIL;Lo;0;L;;;;;N;;;;;
+12301;CUNEIFORM SIGN TIR;Lo;0;L;;;;;N;;;;;
+12302;CUNEIFORM SIGN TIR TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12303;CUNEIFORM SIGN TIR OVER TIR;Lo;0;L;;;;;N;;;;;
+12304;CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+12305;CUNEIFORM SIGN TU;Lo;0;L;;;;;N;;;;;
+12306;CUNEIFORM SIGN TUG2;Lo;0;L;;;;;N;;;;;
+12307;CUNEIFORM SIGN TUK;Lo;0;L;;;;;N;;;;;
+12308;CUNEIFORM SIGN TUM;Lo;0;L;;;;;N;;;;;
+12309;CUNEIFORM SIGN TUR;Lo;0;L;;;;;N;;;;;
+1230A;CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA;Lo;0;L;;;;;N;;;;;
+1230B;CUNEIFORM SIGN U;Lo;0;L;;;;;N;;;;;
+1230C;CUNEIFORM SIGN U GUD;Lo;0;L;;;;;N;;;;;
+1230D;CUNEIFORM SIGN U U U;Lo;0;L;;;;;N;;;;;
+1230E;CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+1230F;CUNEIFORM SIGN U OVER U SUR OVER SUR;Lo;0;L;;;;;N;;;;;
+12310;CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED;Lo;0;L;;;;;N;;;;;
+12311;CUNEIFORM SIGN U2;Lo;0;L;;;;;N;;;;;
+12312;CUNEIFORM SIGN UB;Lo;0;L;;;;;N;;;;;
+12313;CUNEIFORM SIGN UD;Lo;0;L;;;;;N;;;;;
+12314;CUNEIFORM SIGN UD KUSHU2;Lo;0;L;;;;;N;;;;;
+12315;CUNEIFORM SIGN UD TIMES BAD;Lo;0;L;;;;;N;;;;;
+12316;CUNEIFORM SIGN UD TIMES MI;Lo;0;L;;;;;N;;;;;
+12317;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;
+12318;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU;Lo;0;L;;;;;N;;;;;
+12319;CUNEIFORM SIGN UD GUNU;Lo;0;L;;;;;N;;;;;
+1231A;CUNEIFORM SIGN UD SHESHIG;Lo;0;L;;;;;N;;;;;
+1231B;CUNEIFORM SIGN UD SHESHIG TIMES BAD;Lo;0;L;;;;;N;;;;;
+1231C;CUNEIFORM SIGN UDUG;Lo;0;L;;;;;N;;;;;
+1231D;CUNEIFORM SIGN UM;Lo;0;L;;;;;N;;;;;
+1231E;CUNEIFORM SIGN UM TIMES LAGAB;Lo;0;L;;;;;N;;;;;
+1231F;CUNEIFORM SIGN UM TIMES ME PLUS DA;Lo;0;L;;;;;N;;;;;
+12320;CUNEIFORM SIGN UM TIMES SHA3;Lo;0;L;;;;;N;;;;;
+12321;CUNEIFORM SIGN UM TIMES U;Lo;0;L;;;;;N;;;;;
+12322;CUNEIFORM SIGN UMBIN;Lo;0;L;;;;;N;;;;;
+12323;CUNEIFORM SIGN UMUM;Lo;0;L;;;;;N;;;;;
+12324;CUNEIFORM SIGN UMUM TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+12325;CUNEIFORM SIGN UMUM TIMES PA;Lo;0;L;;;;;N;;;;;
+12326;CUNEIFORM SIGN UN;Lo;0;L;;;;;N;;;;;
+12327;CUNEIFORM SIGN UN GUNU;Lo;0;L;;;;;N;;;;;
+12328;CUNEIFORM SIGN UR;Lo;0;L;;;;;N;;;;;
+12329;CUNEIFORM SIGN UR CROSSING UR;Lo;0;L;;;;;N;;;;;
+1232A;CUNEIFORM SIGN UR SHESHIG;Lo;0;L;;;;;N;;;;;
+1232B;CUNEIFORM SIGN UR2;Lo;0;L;;;;;N;;;;;
+1232C;CUNEIFORM SIGN UR2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;;
+1232D;CUNEIFORM SIGN UR2 TIMES A PLUS NA;Lo;0;L;;;;;N;;;;;
+1232E;CUNEIFORM SIGN UR2 TIMES AL;Lo;0;L;;;;;N;;;;;
+1232F;CUNEIFORM SIGN UR2 TIMES HA;Lo;0;L;;;;;N;;;;;
+12330;CUNEIFORM SIGN UR2 TIMES NUN;Lo;0;L;;;;;N;;;;;
+12331;CUNEIFORM SIGN UR2 TIMES U2;Lo;0;L;;;;;N;;;;;
+12332;CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;
+12333;CUNEIFORM SIGN UR2 TIMES U2 PLUS BI;Lo;0;L;;;;;N;;;;;
+12334;CUNEIFORM SIGN UR4;Lo;0;L;;;;;N;;;;;
+12335;CUNEIFORM SIGN URI;Lo;0;L;;;;;N;;;;;
+12336;CUNEIFORM SIGN URI3;Lo;0;L;;;;;N;;;;;
+12337;CUNEIFORM SIGN URU;Lo;0;L;;;;;N;;;;;
+12338;CUNEIFORM SIGN URU TIMES A;Lo;0;L;;;;;N;;;;;
+12339;CUNEIFORM SIGN URU TIMES ASHGAB;Lo;0;L;;;;;N;;;;;
+1233A;CUNEIFORM SIGN URU TIMES BAR;Lo;0;L;;;;;N;;;;;
+1233B;CUNEIFORM SIGN URU TIMES DUN;Lo;0;L;;;;;N;;;;;
+1233C;CUNEIFORM SIGN URU TIMES GA;Lo;0;L;;;;;N;;;;;
+1233D;CUNEIFORM SIGN URU TIMES GAL;Lo;0;L;;;;;N;;;;;
+1233E;CUNEIFORM SIGN URU TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1233F;CUNEIFORM SIGN URU TIMES GAR;Lo;0;L;;;;;N;;;;;
+12340;CUNEIFORM SIGN URU TIMES GU;Lo;0;L;;;;;N;;;;;
+12341;CUNEIFORM SIGN URU TIMES HA;Lo;0;L;;;;;N;;;;;
+12342;CUNEIFORM SIGN URU TIMES IGI;Lo;0;L;;;;;N;;;;;
+12343;CUNEIFORM SIGN URU TIMES IM;Lo;0;L;;;;;N;;;;;
+12344;CUNEIFORM SIGN URU TIMES ISH;Lo;0;L;;;;;N;;;;;
+12345;CUNEIFORM SIGN URU TIMES KI;Lo;0;L;;;;;N;;;;;
+12346;CUNEIFORM SIGN URU TIMES LUM;Lo;0;L;;;;;N;;;;;
+12347;CUNEIFORM SIGN URU TIMES MIN;Lo;0;L;;;;;N;;;;;
+12348;CUNEIFORM SIGN URU TIMES PA;Lo;0;L;;;;;N;;;;;
+12349;CUNEIFORM SIGN URU TIMES SHE;Lo;0;L;;;;;N;;;;;
+1234A;CUNEIFORM SIGN URU TIMES SIG4;Lo;0;L;;;;;N;;;;;
+1234B;CUNEIFORM SIGN URU TIMES TU;Lo;0;L;;;;;N;;;;;
+1234C;CUNEIFORM SIGN URU TIMES U PLUS GUD;Lo;0;L;;;;;N;;;;;
+1234D;CUNEIFORM SIGN URU TIMES UD;Lo;0;L;;;;;N;;;;;
+1234E;CUNEIFORM SIGN URU TIMES URUDA;Lo;0;L;;;;;N;;;;;
+1234F;CUNEIFORM SIGN URUDA;Lo;0;L;;;;;N;;;;;
+12350;CUNEIFORM SIGN URUDA TIMES U;Lo;0;L;;;;;N;;;;;
+12351;CUNEIFORM SIGN USH;Lo;0;L;;;;;N;;;;;
+12352;CUNEIFORM SIGN USH TIMES A;Lo;0;L;;;;;N;;;;;
+12353;CUNEIFORM SIGN USH TIMES KU;Lo;0;L;;;;;N;;;;;
+12354;CUNEIFORM SIGN USH TIMES KUR;Lo;0;L;;;;;N;;;;;
+12355;CUNEIFORM SIGN USH TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12356;CUNEIFORM SIGN USHX;Lo;0;L;;;;;N;;;;;
+12357;CUNEIFORM SIGN USH2;Lo;0;L;;;;;N;;;;;
+12358;CUNEIFORM SIGN USHUMX;Lo;0;L;;;;;N;;;;;
+12359;CUNEIFORM SIGN UTUKI;Lo;0;L;;;;;N;;;;;
+1235A;CUNEIFORM SIGN UZ3;Lo;0;L;;;;;N;;;;;
+1235B;CUNEIFORM SIGN UZ3 TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+1235C;CUNEIFORM SIGN UZU;Lo;0;L;;;;;N;;;;;
+1235D;CUNEIFORM SIGN ZA;Lo;0;L;;;;;N;;;;;
+1235E;CUNEIFORM SIGN ZA TENU;Lo;0;L;;;;;N;;;;;
+1235F;CUNEIFORM SIGN ZA SQUARED TIMES KUR;Lo;0;L;;;;;N;;;;;
+12360;CUNEIFORM SIGN ZAG;Lo;0;L;;;;;N;;;;;
+12361;CUNEIFORM SIGN ZAMX;Lo;0;L;;;;;N;;;;;
+12362;CUNEIFORM SIGN ZE2;Lo;0;L;;;;;N;;;;;
+12363;CUNEIFORM SIGN ZI;Lo;0;L;;;;;N;;;;;
+12364;CUNEIFORM SIGN ZI OVER ZI;Lo;0;L;;;;;N;;;;;
+12365;CUNEIFORM SIGN ZI3;Lo;0;L;;;;;N;;;;;
+12366;CUNEIFORM SIGN ZIB;Lo;0;L;;;;;N;;;;;
+12367;CUNEIFORM SIGN ZIB KABA TENU;Lo;0;L;;;;;N;;;;;
+12368;CUNEIFORM SIGN ZIG;Lo;0;L;;;;;N;;;;;
+12369;CUNEIFORM SIGN ZIZ2;Lo;0;L;;;;;N;;;;;
+1236A;CUNEIFORM SIGN ZU;Lo;0;L;;;;;N;;;;;
+1236B;CUNEIFORM SIGN ZU5;Lo;0;L;;;;;N;;;;;
+1236C;CUNEIFORM SIGN ZU5 TIMES A;Lo;0;L;;;;;N;;;;;
+1236D;CUNEIFORM SIGN ZUBUR;Lo;0;L;;;;;N;;;;;
+1236E;CUNEIFORM SIGN ZUM;Lo;0;L;;;;;N;;;;;
+12400;CUNEIFORM NUMERIC SIGN TWO ASH;Nl;0;L;;;;2;N;;;;;
+12401;CUNEIFORM NUMERIC SIGN THREE ASH;Nl;0;L;;;;3;N;;;;;
+12402;CUNEIFORM NUMERIC SIGN FOUR ASH;Nl;0;L;;;;4;N;;;;;
+12403;CUNEIFORM NUMERIC SIGN FIVE ASH;Nl;0;L;;;;5;N;;;;;
+12404;CUNEIFORM NUMERIC SIGN SIX ASH;Nl;0;L;;;;6;N;;;;;
+12405;CUNEIFORM NUMERIC SIGN SEVEN ASH;Nl;0;L;;;;7;N;;;;;
+12406;CUNEIFORM NUMERIC SIGN EIGHT ASH;Nl;0;L;;;;8;N;;;;;
+12407;CUNEIFORM NUMERIC SIGN NINE ASH;Nl;0;L;;;;9;N;;;;;
+12408;CUNEIFORM NUMERIC SIGN THREE DISH;Nl;0;L;;;;3;N;;;;;
+12409;CUNEIFORM NUMERIC SIGN FOUR DISH;Nl;0;L;;;;4;N;;;;;
+1240A;CUNEIFORM NUMERIC SIGN FIVE DISH;Nl;0;L;;;;5;N;;;;;
+1240B;CUNEIFORM NUMERIC SIGN SIX DISH;Nl;0;L;;;;6;N;;;;;
+1240C;CUNEIFORM NUMERIC SIGN SEVEN DISH;Nl;0;L;;;;7;N;;;;;
+1240D;CUNEIFORM NUMERIC SIGN EIGHT DISH;Nl;0;L;;;;8;N;;;;;
+1240E;CUNEIFORM NUMERIC SIGN NINE DISH;Nl;0;L;;;;9;N;;;;;
+1240F;CUNEIFORM NUMERIC SIGN FOUR U;Nl;0;L;;;;4;N;;;;;
+12410;CUNEIFORM NUMERIC SIGN FIVE U;Nl;0;L;;;;5;N;;;;;
+12411;CUNEIFORM NUMERIC SIGN SIX U;Nl;0;L;;;;6;N;;;;;
+12412;CUNEIFORM NUMERIC SIGN SEVEN U;Nl;0;L;;;;7;N;;;;;
+12413;CUNEIFORM NUMERIC SIGN EIGHT U;Nl;0;L;;;;8;N;;;;;
+12414;CUNEIFORM NUMERIC SIGN NINE U;Nl;0;L;;;;9;N;;;;;
+12415;CUNEIFORM NUMERIC SIGN ONE GESH2;Nl;0;L;;;;1;N;;;;;
+12416;CUNEIFORM NUMERIC SIGN TWO GESH2;Nl;0;L;;;;2;N;;;;;
+12417;CUNEIFORM NUMERIC SIGN THREE GESH2;Nl;0;L;;;;3;N;;;;;
+12418;CUNEIFORM NUMERIC SIGN FOUR GESH2;Nl;0;L;;;;4;N;;;;;
+12419;CUNEIFORM NUMERIC SIGN FIVE GESH2;Nl;0;L;;;;5;N;;;;;
+1241A;CUNEIFORM NUMERIC SIGN SIX GESH2;Nl;0;L;;;;6;N;;;;;
+1241B;CUNEIFORM NUMERIC SIGN SEVEN GESH2;Nl;0;L;;;;7;N;;;;;
+1241C;CUNEIFORM NUMERIC SIGN EIGHT GESH2;Nl;0;L;;;;8;N;;;;;
+1241D;CUNEIFORM NUMERIC SIGN NINE GESH2;Nl;0;L;;;;9;N;;;;;
+1241E;CUNEIFORM NUMERIC SIGN ONE GESHU;Nl;0;L;;;;1;N;;;;;
+1241F;CUNEIFORM NUMERIC SIGN TWO GESHU;Nl;0;L;;;;2;N;;;;;
+12420;CUNEIFORM NUMERIC SIGN THREE GESHU;Nl;0;L;;;;3;N;;;;;
+12421;CUNEIFORM NUMERIC SIGN FOUR GESHU;Nl;0;L;;;;4;N;;;;;
+12422;CUNEIFORM NUMERIC SIGN FIVE GESHU;Nl;0;L;;;;5;N;;;;;
+12423;CUNEIFORM NUMERIC SIGN TWO SHAR2;Nl;0;L;;;;2;N;;;;;
+12424;CUNEIFORM NUMERIC SIGN THREE SHAR2;Nl;0;L;;;;3;N;;;;;
+12425;CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM;Nl;0;L;;;;3;N;;;;;
+12426;CUNEIFORM NUMERIC SIGN FOUR SHAR2;Nl;0;L;;;;4;N;;;;;
+12427;CUNEIFORM NUMERIC SIGN FIVE SHAR2;Nl;0;L;;;;5;N;;;;;
+12428;CUNEIFORM NUMERIC SIGN SIX SHAR2;Nl;0;L;;;;6;N;;;;;
+12429;CUNEIFORM NUMERIC SIGN SEVEN SHAR2;Nl;0;L;;;;7;N;;;;;
+1242A;CUNEIFORM NUMERIC SIGN EIGHT SHAR2;Nl;0;L;;;;8;N;;;;;
+1242B;CUNEIFORM NUMERIC SIGN NINE SHAR2;Nl;0;L;;;;9;N;;;;;
+1242C;CUNEIFORM NUMERIC SIGN ONE SHARU;Nl;0;L;;;;1;N;;;;;
+1242D;CUNEIFORM NUMERIC SIGN TWO SHARU;Nl;0;L;;;;2;N;;;;;
+1242E;CUNEIFORM NUMERIC SIGN THREE SHARU;Nl;0;L;;;;3;N;;;;;
+1242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;;
+12430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;;
+12431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;;
+12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;;N;;;;;
+12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;;N;;;;;
+12434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;;
+12435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;;
+12436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;;
+12437;CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM;Nl;0;L;;;;3;N;;;;;
+12438;CUNEIFORM NUMERIC SIGN FOUR BURU;Nl;0;L;;;;4;N;;;;;
+12439;CUNEIFORM NUMERIC SIGN FIVE BURU;Nl;0;L;;;;5;N;;;;;
+1243A;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16;Nl;0;L;;;;3;N;;;;;
+1243B;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21;Nl;0;L;;;;3;N;;;;;
+1243C;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU;Nl;0;L;;;;4;N;;;;;
+1243D;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4;Nl;0;L;;;;4;N;;;;;
+1243E;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A;Nl;0;L;;;;4;N;;;;;
+1243F;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B;Nl;0;L;;;;4;N;;;;;
+12440;CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9;Nl;0;L;;;;6;N;;;;;
+12441;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3;Nl;0;L;;;;7;N;;;;;
+12442;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A;Nl;0;L;;;;7;N;;;;;
+12443;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B;Nl;0;L;;;;7;N;;;;;
+12444;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU;Nl;0;L;;;;8;N;;;;;
+12445;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3;Nl;0;L;;;;8;N;;;;;
+12446;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU;Nl;0;L;;;;9;N;;;;;
+12447;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3;Nl;0;L;;;;9;N;;;;;
+12448;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4;Nl;0;L;;;;9;N;;;;;
+12449;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A;Nl;0;L;;;;9;N;;;;;
+1244A;CUNEIFORM NUMERIC SIGN TWO ASH TENU;Nl;0;L;;;;2;N;;;;;
+1244B;CUNEIFORM NUMERIC SIGN THREE ASH TENU;Nl;0;L;;;;3;N;;;;;
+1244C;CUNEIFORM NUMERIC SIGN FOUR ASH TENU;Nl;0;L;;;;4;N;;;;;
+1244D;CUNEIFORM NUMERIC SIGN FIVE ASH TENU;Nl;0;L;;;;5;N;;;;;
+1244E;CUNEIFORM NUMERIC SIGN SIX ASH TENU;Nl;0;L;;;;6;N;;;;;
+1244F;CUNEIFORM NUMERIC SIGN ONE BAN2;Nl;0;L;;;;1;N;;;;;
+12450;CUNEIFORM NUMERIC SIGN TWO BAN2;Nl;0;L;;;;2;N;;;;;
+12451;CUNEIFORM NUMERIC SIGN THREE BAN2;Nl;0;L;;;;3;N;;;;;
+12452;CUNEIFORM NUMERIC SIGN FOUR BAN2;Nl;0;L;;;;4;N;;;;;
+12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;;
+12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;;
+12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;;
+12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;;N;;;;;
+12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;;N;;;;;
+12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;;
+12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;;
+1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;;
+1245B;CUNEIFORM NUMERIC SIGN TWO THIRDS DISH;Nl;0;L;;;;2/3;N;;;;;
+1245C;CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH;Nl;0;L;;;;5/6;N;;;;;
+1245D;CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A;Nl;0;L;;;;1/3;N;;;;;
+1245E;CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A;Nl;0;L;;;;2/3;N;;;;;
+1245F;CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH;Nl;0;L;;;;1/8;N;;;;;
+12460;CUNEIFORM NUMERIC SIGN ONE QUARTER ASH;Nl;0;L;;;;1/4;N;;;;;
+12461;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH;Nl;0;L;;;;1/6;N;;;;;
+12462;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER;Nl;0;L;;;;1/4;N;;;;;
+12470;CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER;Po;0;L;;;;;N;;;;;
+12471;CUNEIFORM PUNCTUATION SIGN VERTICAL COLON;Po;0;L;;;;;N;;;;;
+12472;CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON;Po;0;L;;;;;N;;;;;
+12473;CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON;Po;0;L;;;;;N;;;;;
+1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;;
+1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;;
+1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;;
+1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;;
+1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;;
+1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;;
+1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;;
+1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;;
+1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;;
+1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;;
+1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;;
+1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;;
+1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;;
+1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;;
+1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;;
+1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;;
+1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;;
+1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;;
+1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;;
+1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;;
+1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;;
+1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;;
+1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;;
+1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;;
+1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;;
+1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;;
+1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;;
+1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;;
+1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;;
+1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;;
+1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;;
+1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;;
+1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;;
+1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;;
+1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;;
+1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;;
+1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;;
+1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;;
+1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;;
+1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;;
+1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;;
+1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;;
+1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;;
+1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;;
+1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;;
+1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;;
+1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;;
+1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;;
+1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;;
+1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;;
+1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;;
+1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;;
+1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;;
+1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;;
+1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;;
+1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;;
+1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;;
+1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;;
+1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;;
+1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;;
+1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;;
+1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;;
+1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;;
+1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;;
+1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;;
+1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;;
+1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;;
+1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;;
+1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;;
+1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;;
+1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;;
+1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;;
+1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;;
+1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;;
+1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;;
+1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;;
+1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;;
+1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;;
+1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;;
+1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;;
+1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;;
+1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;;
+1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;;
+1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;;
+1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;;
+1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;;
+1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;;
+1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;;
+1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;;
+1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;;
+1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;;
+1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;;
+1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;;
+1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;;
+1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;;
+1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;;
+1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;;
+1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;;
+1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;;
+1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;;
+1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;;
+1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;;
+1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;;
+1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;;
+1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;;
+1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;;
+1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;;
+1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;;
+1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;;
+1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;;
+1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;;
+1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;;
+1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;;
+1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;;
+1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;;
+1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;;
+1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;;
+1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;;
+1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;;
+1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;;
+1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;;
+1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;;
+1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;;
+1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;;
+1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;;
+1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;;
+1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;;
+1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;;
+1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;;
+1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;;
+1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;;
+1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;;
+1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;;
+1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;;
+1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;;
+1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;;
+1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;;
+1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;;
+1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;;
+1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;;
+1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;;
+1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;;
+1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
+1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;;
+1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;;
+1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;;
+1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
+1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;;
+1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;;
+1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;;
+1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;;
+1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;;
+1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;;
+1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;;
+1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;;
+1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;;
+1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;;
+1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;;
+1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;;
+1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
+1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
+1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;;
+1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
+1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
+1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;;
+1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;;
+1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;;
+1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;;
+1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;;
+1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;;
+1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;;
+1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;;
+1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;;
+1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;;
+1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;;
+1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;;
+1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;;
+1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;;
+1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;;
+1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;;
+1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;;
+1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;;
+1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;;
+1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;;
+1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;;
+1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;;
+1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;;
+1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;;
+1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;;
+1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;;
+1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;;
+1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;;
+1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;;
+1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;;
+1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;;
+1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;;
+1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;;
+1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
+1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
+1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
+1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
+1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;;
+1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;;
+1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;;
+1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;;
+1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;;
+1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;;
+1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;;
+1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;;
+1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;;
+1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;;
+1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;;
+1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;;
+1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;;
+1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;;
+1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;;
+1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;;
+1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;;
+1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;;
+1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;;
+1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;;
+1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;;
+1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;;
+1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;;
+1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;;
+1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;;
+1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;;
+1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;;
+1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;;
+1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;;
+1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;;
+1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;;
+1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;;
+1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;;
+1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;;
+1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;;
+1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;;
+1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;;
+1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;;
+1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;;
+1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;;
+1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;;
+1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;;
+1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;;
+1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;;
+1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;;
+1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;;
+1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;;
+1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;;
+1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;;
+1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;;
+1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;;
+1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;;
+1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;;
+1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;;
+1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;;
+1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;;
+1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;;
+1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;;
+1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;;
+1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;;
+1D129;MUSICAL SYMBOL MULTIPLE MEASURE REST;So;0;L;;;;;N;;;;;
+1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;;
+1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;;
+1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;;
+1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;;
+1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;;
+1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;;
+1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;;
+1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;;
+1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;;
+1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;;
+1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;;
+1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;;
+1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;;
+1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;;
+1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;;
+1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;;
+1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;;
+1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;;
+1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;;
+1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;;
+1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;;
+1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;;
+1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;;
+1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;;
+1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;;
+1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;;
+1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;;
+1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;;
+1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;;
+1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;;
+1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;;
+1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;;
+1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
+1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
+1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;;
+1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;;
+1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
+1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
+1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;;
+1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;;
+1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;;
+1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;;
+1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;;
+1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;;
+1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;;
+1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;;
+1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;;
+1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;;
+1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;;
+1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;;
+1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;;
+1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;;
+1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;;
+1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;;
+1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;;
+1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;;
+1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;;
+1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;;
+1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;;
+1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;;
+1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;;
+1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;;
+1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;;
+1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;;
+1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;;
+1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;;
+1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;;
+1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;;
+1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;;
+1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;;
+1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;;
+1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;;
+1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;;
+1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;;
+1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;;
+1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;;
+1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;;
+1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;;
+1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;;
+1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;;
+1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;;
+1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;;
+1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;;
+1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;;
+1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;;
+1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;;
+1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;;
+1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;;
+1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;;
+1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;;
+1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;;
+1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;;
+1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;;
+1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;;
+1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;;
+1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;;
+1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;;
+1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;;
+1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;;
+1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;;
+1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;;
+1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;;
+1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;;
+1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;;
+1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;;
+1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;;
+1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;;
+1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;;
+1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;;
+1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;;
+1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;;
+1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;;
+1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;;
+1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;;
+1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;;
+1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;;
+1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;;
+1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;;
+1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;;
+1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;;
+1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;;
+1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;;
+1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;;
+1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;;
+1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;;
+1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;;
+1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;;
+1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;;
+1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;;
+1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;;
+1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;;
+1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;;
+1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;;
+1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;;
+1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;;
+1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;;
+1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;;
+1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;;
+1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;;
+1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;;
+1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;;
+1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;;
+1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;;
+1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;;
+1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;;
+1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
+1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
+1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
+1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
+1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
+1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
+1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;;
+1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;;
+1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;;
+1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;;
+1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;;
+1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;;
+1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;;
+1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;;
+1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;;
+1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;;
+1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;;
+1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;;
+1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;;
+1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;;
+1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;;
+1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;;
+1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;;
+1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;;
+1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;;
+1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;;
+1D203;GREEK VOCAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;;
+1D204;GREEK VOCAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;;
+1D205;GREEK VOCAL NOTATION SYMBOL-6;So;0;ON;;;;;N;;;;;
+1D206;GREEK VOCAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;;
+1D207;GREEK VOCAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;;
+1D208;GREEK VOCAL NOTATION SYMBOL-9;So;0;ON;;;;;N;;;;;
+1D209;GREEK VOCAL NOTATION SYMBOL-10;So;0;ON;;;;;N;;;;;
+1D20A;GREEK VOCAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;;
+1D20B;GREEK VOCAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;;
+1D20C;GREEK VOCAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;;
+1D20D;GREEK VOCAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;;
+1D20E;GREEK VOCAL NOTATION SYMBOL-15;So;0;ON;;;;;N;;;;;
+1D20F;GREEK VOCAL NOTATION SYMBOL-16;So;0;ON;;;;;N;;;;;
+1D210;GREEK VOCAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;;
+1D211;GREEK VOCAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;;
+1D212;GREEK VOCAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;;
+1D213;GREEK VOCAL NOTATION SYMBOL-20;So;0;ON;;;;;N;;;;;
+1D214;GREEK VOCAL NOTATION SYMBOL-21;So;0;ON;;;;;N;;;;;
+1D215;GREEK VOCAL NOTATION SYMBOL-22;So;0;ON;;;;;N;;;;;
+1D216;GREEK VOCAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;;
+1D217;GREEK VOCAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;;
+1D218;GREEK VOCAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;;
+1D219;GREEK VOCAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;;
+1D21A;GREEK VOCAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;;
+1D21B;GREEK VOCAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;;
+1D21C;GREEK VOCAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;;
+1D21D;GREEK INSTRUMENTAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;;
+1D21E;GREEK INSTRUMENTAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;;
+1D21F;GREEK INSTRUMENTAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;;
+1D220;GREEK INSTRUMENTAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;;
+1D221;GREEK INSTRUMENTAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;;
+1D222;GREEK INSTRUMENTAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;;
+1D223;GREEK INSTRUMENTAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;;
+1D224;GREEK INSTRUMENTAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;;
+1D225;GREEK INSTRUMENTAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;;
+1D226;GREEK INSTRUMENTAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;;
+1D227;GREEK INSTRUMENTAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;;
+1D228;GREEK INSTRUMENTAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;;
+1D229;GREEK INSTRUMENTAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;;
+1D22A;GREEK INSTRUMENTAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;;
+1D22B;GREEK INSTRUMENTAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;;
+1D22C;GREEK INSTRUMENTAL NOTATION SYMBOL-25;So;0;ON;;;;;N;;;;;
+1D22D;GREEK INSTRUMENTAL NOTATION SYMBOL-26;So;0;ON;;;;;N;;;;;
+1D22E;GREEK INSTRUMENTAL NOTATION SYMBOL-27;So;0;ON;;;;;N;;;;;
+1D22F;GREEK INSTRUMENTAL NOTATION SYMBOL-29;So;0;ON;;;;;N;;;;;
+1D230;GREEK INSTRUMENTAL NOTATION SYMBOL-30;So;0;ON;;;;;N;;;;;
+1D231;GREEK INSTRUMENTAL NOTATION SYMBOL-32;So;0;ON;;;;;N;;;;;
+1D232;GREEK INSTRUMENTAL NOTATION SYMBOL-36;So;0;ON;;;;;N;;;;;
+1D233;GREEK INSTRUMENTAL NOTATION SYMBOL-37;So;0;ON;;;;;N;;;;;
+1D234;GREEK INSTRUMENTAL NOTATION SYMBOL-38;So;0;ON;;;;;N;;;;;
+1D235;GREEK INSTRUMENTAL NOTATION SYMBOL-39;So;0;ON;;;;;N;;;;;
+1D236;GREEK INSTRUMENTAL NOTATION SYMBOL-40;So;0;ON;;;;;N;;;;;
+1D237;GREEK INSTRUMENTAL NOTATION SYMBOL-42;So;0;ON;;;;;N;;;;;
+1D238;GREEK INSTRUMENTAL NOTATION SYMBOL-43;So;0;ON;;;;;N;;;;;
+1D239;GREEK INSTRUMENTAL NOTATION SYMBOL-45;So;0;ON;;;;;N;;;;;
+1D23A;GREEK INSTRUMENTAL NOTATION SYMBOL-47;So;0;ON;;;;;N;;;;;
+1D23B;GREEK INSTRUMENTAL NOTATION SYMBOL-48;So;0;ON;;;;;N;;;;;
+1D23C;GREEK INSTRUMENTAL NOTATION SYMBOL-49;So;0;ON;;;;;N;;;;;
+1D23D;GREEK INSTRUMENTAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;;
+1D23E;GREEK INSTRUMENTAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;;
+1D23F;GREEK INSTRUMENTAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;;
+1D240;GREEK INSTRUMENTAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;;
+1D241;GREEK INSTRUMENTAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;;
+1D242;COMBINING GREEK MUSICAL TRISEME;Mn;230;NSM;;;;;N;;;;;
+1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;;
+1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;;
+1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;;
+1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;ren *;;;
+1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;tian ren *;;;
+1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;di ren *;;;
+1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;ren tian *;;;
+1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;ren di *;;;
+1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;ren ren *;;;
+1D306;TETRAGRAM FOR CENTRE;So;0;ON;;;;;N;;;;;
+1D307;TETRAGRAM FOR FULL CIRCLE;So;0;ON;;;;;N;;;;;
+1D308;TETRAGRAM FOR MIRED;So;0;ON;;;;;N;;;;;
+1D309;TETRAGRAM FOR BARRIER;So;0;ON;;;;;N;;;;;
+1D30A;TETRAGRAM FOR KEEPING SMALL;So;0;ON;;;;;N;;;;;
+1D30B;TETRAGRAM FOR CONTRARIETY;So;0;ON;;;;;N;;;;;
+1D30C;TETRAGRAM FOR ASCENT;So;0;ON;;;;;N;;;;;
+1D30D;TETRAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;;
+1D30E;TETRAGRAM FOR BRANCHING OUT;So;0;ON;;;;;N;;;;;
+1D30F;TETRAGRAM FOR DEFECTIVENESS OR DISTORTION;So;0;ON;;;;;N;;;;;
+1D310;TETRAGRAM FOR DIVERGENCE;So;0;ON;;;;;N;;;;;
+1D311;TETRAGRAM FOR YOUTHFULNESS;So;0;ON;;;;;N;;;;;
+1D312;TETRAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;;
+1D313;TETRAGRAM FOR PENETRATION;So;0;ON;;;;;N;;;;;
+1D314;TETRAGRAM FOR REACH;So;0;ON;;;;;N;;;;;
+1D315;TETRAGRAM FOR CONTACT;So;0;ON;;;;;N;;;;;
+1D316;TETRAGRAM FOR HOLDING BACK;So;0;ON;;;;;N;;;;;
+1D317;TETRAGRAM FOR WAITING;So;0;ON;;;;;N;;;;;
+1D318;TETRAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;;
+1D319;TETRAGRAM FOR ADVANCE;So;0;ON;;;;;N;;;;;
+1D31A;TETRAGRAM FOR RELEASE;So;0;ON;;;;;N;;;;;
+1D31B;TETRAGRAM FOR RESISTANCE;So;0;ON;;;;;N;;;;;
+1D31C;TETRAGRAM FOR EASE;So;0;ON;;;;;N;;;;;
+1D31D;TETRAGRAM FOR JOY;So;0;ON;;;;;N;;;;;
+1D31E;TETRAGRAM FOR CONTENTION;So;0;ON;;;;;N;;;;;
+1D31F;TETRAGRAM FOR ENDEAVOUR;So;0;ON;;;;;N;;;;;
+1D320;TETRAGRAM FOR DUTIES;So;0;ON;;;;;N;;;;;
+1D321;TETRAGRAM FOR CHANGE;So;0;ON;;;;;N;;;;;
+1D322;TETRAGRAM FOR DECISIVENESS;So;0;ON;;;;;N;;;;;
+1D323;TETRAGRAM FOR BOLD RESOLUTION;So;0;ON;;;;;N;;;;;
+1D324;TETRAGRAM FOR PACKING;So;0;ON;;;;;N;;;;;
+1D325;TETRAGRAM FOR LEGION;So;0;ON;;;;;N;;;;;
+1D326;TETRAGRAM FOR CLOSENESS;So;0;ON;;;;;N;;;;;
+1D327;TETRAGRAM FOR KINSHIP;So;0;ON;;;;;N;;;;;
+1D328;TETRAGRAM FOR GATHERING;So;0;ON;;;;;N;;;;;
+1D329;TETRAGRAM FOR STRENGTH;So;0;ON;;;;;N;;;;;
+1D32A;TETRAGRAM FOR PURITY;So;0;ON;;;;;N;;;;;
+1D32B;TETRAGRAM FOR FULLNESS;So;0;ON;;;;;N;;;;;
+1D32C;TETRAGRAM FOR RESIDENCE;So;0;ON;;;;;N;;;;;
+1D32D;TETRAGRAM FOR LAW OR MODEL;So;0;ON;;;;;N;;;;;
+1D32E;TETRAGRAM FOR RESPONSE;So;0;ON;;;;;N;;;;;
+1D32F;TETRAGRAM FOR GOING TO MEET;So;0;ON;;;;;N;;;;;
+1D330;TETRAGRAM FOR ENCOUNTERS;So;0;ON;;;;;N;;;;;
+1D331;TETRAGRAM FOR STOVE;So;0;ON;;;;;N;;;;;
+1D332;TETRAGRAM FOR GREATNESS;So;0;ON;;;;;N;;;;;
+1D333;TETRAGRAM FOR ENLARGEMENT;So;0;ON;;;;;N;;;;;
+1D334;TETRAGRAM FOR PATTERN;So;0;ON;;;;;N;;;;;
+1D335;TETRAGRAM FOR RITUAL;So;0;ON;;;;;N;;;;;
+1D336;TETRAGRAM FOR FLIGHT;So;0;ON;;;;;N;;;;;
+1D337;TETRAGRAM FOR VASTNESS OR WASTING;So;0;ON;;;;;N;;;;;
+1D338;TETRAGRAM FOR CONSTANCY;So;0;ON;;;;;N;;;;;
+1D339;TETRAGRAM FOR MEASURE;So;0;ON;;;;;N;;;;;
+1D33A;TETRAGRAM FOR ETERNITY;So;0;ON;;;;;N;;;;;
+1D33B;TETRAGRAM FOR UNITY;So;0;ON;;;;;N;;;;;
+1D33C;TETRAGRAM FOR DIMINISHMENT;So;0;ON;;;;;N;;;;;
+1D33D;TETRAGRAM FOR CLOSED MOUTH;So;0;ON;;;;;N;;;;;
+1D33E;TETRAGRAM FOR GUARDEDNESS;So;0;ON;;;;;N;;;;;
+1D33F;TETRAGRAM FOR GATHERING IN;So;0;ON;;;;;N;;;;;
+1D340;TETRAGRAM FOR MASSING;So;0;ON;;;;;N;;;;;
+1D341;TETRAGRAM FOR ACCUMULATION;So;0;ON;;;;;N;;;;;
+1D342;TETRAGRAM FOR EMBELLISHMENT;So;0;ON;;;;;N;;;;;
+1D343;TETRAGRAM FOR DOUBT;So;0;ON;;;;;N;;;;;
+1D344;TETRAGRAM FOR WATCH;So;0;ON;;;;;N;;;;;
+1D345;TETRAGRAM FOR SINKING;So;0;ON;;;;;N;;;;;
+1D346;TETRAGRAM FOR INNER;So;0;ON;;;;;N;;;;;
+1D347;TETRAGRAM FOR DEPARTURE;So;0;ON;;;;;N;;;;;
+1D348;TETRAGRAM FOR DARKENING;So;0;ON;;;;;N;;;;;
+1D349;TETRAGRAM FOR DIMMING;So;0;ON;;;;;N;;;;;
+1D34A;TETRAGRAM FOR EXHAUSTION;So;0;ON;;;;;N;;;;;
+1D34B;TETRAGRAM FOR SEVERANCE;So;0;ON;;;;;N;;;;;
+1D34C;TETRAGRAM FOR STOPPAGE;So;0;ON;;;;;N;;;;;
+1D34D;TETRAGRAM FOR HARDNESS;So;0;ON;;;;;N;;;;;
+1D34E;TETRAGRAM FOR COMPLETION;So;0;ON;;;;;N;;;;;
+1D34F;TETRAGRAM FOR CLOSURE;So;0;ON;;;;;N;;;;;
+1D350;TETRAGRAM FOR FAILURE;So;0;ON;;;;;N;;;;;
+1D351;TETRAGRAM FOR AGGRAVATION;So;0;ON;;;;;N;;;;;
+1D352;TETRAGRAM FOR COMPLIANCE;So;0;ON;;;;;N;;;;;
+1D353;TETRAGRAM FOR ON THE VERGE;So;0;ON;;;;;N;;;;;
+1D354;TETRAGRAM FOR DIFFICULTIES;So;0;ON;;;;;N;;;;;
+1D355;TETRAGRAM FOR LABOURING;So;0;ON;;;;;N;;;;;
+1D356;TETRAGRAM FOR FOSTERING;So;0;ON;;;;;N;;;;;
+1D360;COUNTING ROD UNIT DIGIT ONE;No;0;L;;;;1;N;;;;;
+1D361;COUNTING ROD UNIT DIGIT TWO;No;0;L;;;;2;N;;;;;
+1D362;COUNTING ROD UNIT DIGIT THREE;No;0;L;;;;3;N;;;;;
+1D363;COUNTING ROD UNIT DIGIT FOUR;No;0;L;;;;4;N;;;;;
+1D364;COUNTING ROD UNIT DIGIT FIVE;No;0;L;;;;5;N;;;;;
+1D365;COUNTING ROD UNIT DIGIT SIX;No;0;L;;;;6;N;;;;;
+1D366;COUNTING ROD UNIT DIGIT SEVEN;No;0;L;;;;7;N;;;;;
+1D367;COUNTING ROD UNIT DIGIT EIGHT;No;0;L;;;;8;N;;;;;
+1D368;COUNTING ROD UNIT DIGIT NINE;No;0;L;;;;9;N;;;;;
+1D369;COUNTING ROD TENS DIGIT ONE;No;0;L;;;;10;N;;;;;
+1D36A;COUNTING ROD TENS DIGIT TWO;No;0;L;;;;20;N;;;;;
+1D36B;COUNTING ROD TENS DIGIT THREE;No;0;L;;;;30;N;;;;;
+1D36C;COUNTING ROD TENS DIGIT FOUR;No;0;L;;;;40;N;;;;;
+1D36D;COUNTING ROD TENS DIGIT FIVE;No;0;L;;;;50;N;;;;;
+1D36E;COUNTING ROD TENS DIGIT SIX;No;0;L;;;;60;N;;;;;
+1D36F;COUNTING ROD TENS DIGIT SEVEN;No;0;L;;;;70;N;;;;;
+1D370;COUNTING ROD TENS DIGIT EIGHT;No;0;L;;;;80;N;;;;;
+1D371;COUNTING ROD TENS DIGIT NINE;No;0;L;;;;90;N;;;;;
+1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D6A4;MATHEMATICAL ITALIC SMALL DOTLESS I;Ll;0;L;<font> 0131;;;;N;;;;;
+1D6A5;MATHEMATICAL ITALIC SMALL DOTLESS J;Ll;0;L;<font> 0237;;;;N;;;;;
+1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;;
+1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;;
+1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;;
+1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;;
+1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;;
+1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D7CA;MATHEMATICAL BOLD CAPITAL DIGAMMA;Lu;0;L;<font> 03DC;;;;N;;;;;
+1D7CB;MATHEMATICAL BOLD SMALL DIGAMMA;Ll;0;L;<font> 03DD;;;;N;;;;;
+1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1F000;MAHJONG TILE EAST WIND;So;0;ON;;;;;N;;;;;
+1F001;MAHJONG TILE SOUTH WIND;So;0;ON;;;;;N;;;;;
+1F002;MAHJONG TILE WEST WIND;So;0;ON;;;;;N;;;;;
+1F003;MAHJONG TILE NORTH WIND;So;0;ON;;;;;N;;;;;
+1F004;MAHJONG TILE RED DRAGON;So;0;ON;;;;;N;;;;;
+1F005;MAHJONG TILE GREEN DRAGON;So;0;ON;;;;;N;;;;;
+1F006;MAHJONG TILE WHITE DRAGON;So;0;ON;;;;;N;;;;;
+1F007;MAHJONG TILE ONE OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F008;MAHJONG TILE TWO OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F009;MAHJONG TILE THREE OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00A;MAHJONG TILE FOUR OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00B;MAHJONG TILE FIVE OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00C;MAHJONG TILE SIX OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00D;MAHJONG TILE SEVEN OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00E;MAHJONG TILE EIGHT OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00F;MAHJONG TILE NINE OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F010;MAHJONG TILE ONE OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F011;MAHJONG TILE TWO OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F012;MAHJONG TILE THREE OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F013;MAHJONG TILE FOUR OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F014;MAHJONG TILE FIVE OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F015;MAHJONG TILE SIX OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F016;MAHJONG TILE SEVEN OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F017;MAHJONG TILE EIGHT OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F018;MAHJONG TILE NINE OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F019;MAHJONG TILE ONE OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01A;MAHJONG TILE TWO OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01B;MAHJONG TILE THREE OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01C;MAHJONG TILE FOUR OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01D;MAHJONG TILE FIVE OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01E;MAHJONG TILE SIX OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01F;MAHJONG TILE SEVEN OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F020;MAHJONG TILE EIGHT OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F021;MAHJONG TILE NINE OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F022;MAHJONG TILE PLUM;So;0;ON;;;;;N;;;;;
+1F023;MAHJONG TILE ORCHID;So;0;ON;;;;;N;;;;;
+1F024;MAHJONG TILE BAMBOO;So;0;ON;;;;;N;;;;;
+1F025;MAHJONG TILE CHRYSANTHEMUM;So;0;ON;;;;;N;;;;;
+1F026;MAHJONG TILE SPRING;So;0;ON;;;;;N;;;;;
+1F027;MAHJONG TILE SUMMER;So;0;ON;;;;;N;;;;;
+1F028;MAHJONG TILE AUTUMN;So;0;ON;;;;;N;;;;;
+1F029;MAHJONG TILE WINTER;So;0;ON;;;;;N;;;;;
+1F02A;MAHJONG TILE JOKER;So;0;ON;;;;;N;;;;;
+1F02B;MAHJONG TILE BACK;So;0;ON;;;;;N;;;;;
+1F030;DOMINO TILE HORIZONTAL BACK;So;0;ON;;;;;N;;;;;
+1F031;DOMINO TILE HORIZONTAL-00-00;So;0;ON;;;;;N;;;;;
+1F032;DOMINO TILE HORIZONTAL-00-01;So;0;ON;;;;;N;;;;;
+1F033;DOMINO TILE HORIZONTAL-00-02;So;0;ON;;;;;N;;;;;
+1F034;DOMINO TILE HORIZONTAL-00-03;So;0;ON;;;;;N;;;;;
+1F035;DOMINO TILE HORIZONTAL-00-04;So;0;ON;;;;;N;;;;;
+1F036;DOMINO TILE HORIZONTAL-00-05;So;0;ON;;;;;N;;;;;
+1F037;DOMINO TILE HORIZONTAL-00-06;So;0;ON;;;;;N;;;;;
+1F038;DOMINO TILE HORIZONTAL-01-00;So;0;ON;;;;;N;;;;;
+1F039;DOMINO TILE HORIZONTAL-01-01;So;0;ON;;;;;N;;;;;
+1F03A;DOMINO TILE HORIZONTAL-01-02;So;0;ON;;;;;N;;;;;
+1F03B;DOMINO TILE HORIZONTAL-01-03;So;0;ON;;;;;N;;;;;
+1F03C;DOMINO TILE HORIZONTAL-01-04;So;0;ON;;;;;N;;;;;
+1F03D;DOMINO TILE HORIZONTAL-01-05;So;0;ON;;;;;N;;;;;
+1F03E;DOMINO TILE HORIZONTAL-01-06;So;0;ON;;;;;N;;;;;
+1F03F;DOMINO TILE HORIZONTAL-02-00;So;0;ON;;;;;N;;;;;
+1F040;DOMINO TILE HORIZONTAL-02-01;So;0;ON;;;;;N;;;;;
+1F041;DOMINO TILE HORIZONTAL-02-02;So;0;ON;;;;;N;;;;;
+1F042;DOMINO TILE HORIZONTAL-02-03;So;0;ON;;;;;N;;;;;
+1F043;DOMINO TILE HORIZONTAL-02-04;So;0;ON;;;;;N;;;;;
+1F044;DOMINO TILE HORIZONTAL-02-05;So;0;ON;;;;;N;;;;;
+1F045;DOMINO TILE HORIZONTAL-02-06;So;0;ON;;;;;N;;;;;
+1F046;DOMINO TILE HORIZONTAL-03-00;So;0;ON;;;;;N;;;;;
+1F047;DOMINO TILE HORIZONTAL-03-01;So;0;ON;;;;;N;;;;;
+1F048;DOMINO TILE HORIZONTAL-03-02;So;0;ON;;;;;N;;;;;
+1F049;DOMINO TILE HORIZONTAL-03-03;So;0;ON;;;;;N;;;;;
+1F04A;DOMINO TILE HORIZONTAL-03-04;So;0;ON;;;;;N;;;;;
+1F04B;DOMINO TILE HORIZONTAL-03-05;So;0;ON;;;;;N;;;;;
+1F04C;DOMINO TILE HORIZONTAL-03-06;So;0;ON;;;;;N;;;;;
+1F04D;DOMINO TILE HORIZONTAL-04-00;So;0;ON;;;;;N;;;;;
+1F04E;DOMINO TILE HORIZONTAL-04-01;So;0;ON;;;;;N;;;;;
+1F04F;DOMINO TILE HORIZONTAL-04-02;So;0;ON;;;;;N;;;;;
+1F050;DOMINO TILE HORIZONTAL-04-03;So;0;ON;;;;;N;;;;;
+1F051;DOMINO TILE HORIZONTAL-04-04;So;0;ON;;;;;N;;;;;
+1F052;DOMINO TILE HORIZONTAL-04-05;So;0;ON;;;;;N;;;;;
+1F053;DOMINO TILE HORIZONTAL-04-06;So;0;ON;;;;;N;;;;;
+1F054;DOMINO TILE HORIZONTAL-05-00;So;0;ON;;;;;N;;;;;
+1F055;DOMINO TILE HORIZONTAL-05-01;So;0;ON;;;;;N;;;;;
+1F056;DOMINO TILE HORIZONTAL-05-02;So;0;ON;;;;;N;;;;;
+1F057;DOMINO TILE HORIZONTAL-05-03;So;0;ON;;;;;N;;;;;
+1F058;DOMINO TILE HORIZONTAL-05-04;So;0;ON;;;;;N;;;;;
+1F059;DOMINO TILE HORIZONTAL-05-05;So;0;ON;;;;;N;;;;;
+1F05A;DOMINO TILE HORIZONTAL-05-06;So;0;ON;;;;;N;;;;;
+1F05B;DOMINO TILE HORIZONTAL-06-00;So;0;ON;;;;;N;;;;;
+1F05C;DOMINO TILE HORIZONTAL-06-01;So;0;ON;;;;;N;;;;;
+1F05D;DOMINO TILE HORIZONTAL-06-02;So;0;ON;;;;;N;;;;;
+1F05E;DOMINO TILE HORIZONTAL-06-03;So;0;ON;;;;;N;;;;;
+1F05F;DOMINO TILE HORIZONTAL-06-04;So;0;ON;;;;;N;;;;;
+1F060;DOMINO TILE HORIZONTAL-06-05;So;0;ON;;;;;N;;;;;
+1F061;DOMINO TILE HORIZONTAL-06-06;So;0;ON;;;;;N;;;;;
+1F062;DOMINO TILE VERTICAL BACK;So;0;ON;;;;;N;;;;;
+1F063;DOMINO TILE VERTICAL-00-00;So;0;ON;;;;;N;;;;;
+1F064;DOMINO TILE VERTICAL-00-01;So;0;ON;;;;;N;;;;;
+1F065;DOMINO TILE VERTICAL-00-02;So;0;ON;;;;;N;;;;;
+1F066;DOMINO TILE VERTICAL-00-03;So;0;ON;;;;;N;;;;;
+1F067;DOMINO TILE VERTICAL-00-04;So;0;ON;;;;;N;;;;;
+1F068;DOMINO TILE VERTICAL-00-05;So;0;ON;;;;;N;;;;;
+1F069;DOMINO TILE VERTICAL-00-06;So;0;ON;;;;;N;;;;;
+1F06A;DOMINO TILE VERTICAL-01-00;So;0;ON;;;;;N;;;;;
+1F06B;DOMINO TILE VERTICAL-01-01;So;0;ON;;;;;N;;;;;
+1F06C;DOMINO TILE VERTICAL-01-02;So;0;ON;;;;;N;;;;;
+1F06D;DOMINO TILE VERTICAL-01-03;So;0;ON;;;;;N;;;;;
+1F06E;DOMINO TILE VERTICAL-01-04;So;0;ON;;;;;N;;;;;
+1F06F;DOMINO TILE VERTICAL-01-05;So;0;ON;;;;;N;;;;;
+1F070;DOMINO TILE VERTICAL-01-06;So;0;ON;;;;;N;;;;;
+1F071;DOMINO TILE VERTICAL-02-00;So;0;ON;;;;;N;;;;;
+1F072;DOMINO TILE VERTICAL-02-01;So;0;ON;;;;;N;;;;;
+1F073;DOMINO TILE VERTICAL-02-02;So;0;ON;;;;;N;;;;;
+1F074;DOMINO TILE VERTICAL-02-03;So;0;ON;;;;;N;;;;;
+1F075;DOMINO TILE VERTICAL-02-04;So;0;ON;;;;;N;;;;;
+1F076;DOMINO TILE VERTICAL-02-05;So;0;ON;;;;;N;;;;;
+1F077;DOMINO TILE VERTICAL-02-06;So;0;ON;;;;;N;;;;;
+1F078;DOMINO TILE VERTICAL-03-00;So;0;ON;;;;;N;;;;;
+1F079;DOMINO TILE VERTICAL-03-01;So;0;ON;;;;;N;;;;;
+1F07A;DOMINO TILE VERTICAL-03-02;So;0;ON;;;;;N;;;;;
+1F07B;DOMINO TILE VERTICAL-03-03;So;0;ON;;;;;N;;;;;
+1F07C;DOMINO TILE VERTICAL-03-04;So;0;ON;;;;;N;;;;;
+1F07D;DOMINO TILE VERTICAL-03-05;So;0;ON;;;;;N;;;;;
+1F07E;DOMINO TILE VERTICAL-03-06;So;0;ON;;;;;N;;;;;
+1F07F;DOMINO TILE VERTICAL-04-00;So;0;ON;;;;;N;;;;;
+1F080;DOMINO TILE VERTICAL-04-01;So;0;ON;;;;;N;;;;;
+1F081;DOMINO TILE VERTICAL-04-02;So;0;ON;;;;;N;;;;;
+1F082;DOMINO TILE VERTICAL-04-03;So;0;ON;;;;;N;;;;;
+1F083;DOMINO TILE VERTICAL-04-04;So;0;ON;;;;;N;;;;;
+1F084;DOMINO TILE VERTICAL-04-05;So;0;ON;;;;;N;;;;;
+1F085;DOMINO TILE VERTICAL-04-06;So;0;ON;;;;;N;;;;;
+1F086;DOMINO TILE VERTICAL-05-00;So;0;ON;;;;;N;;;;;
+1F087;DOMINO TILE VERTICAL-05-01;So;0;ON;;;;;N;;;;;
+1F088;DOMINO TILE VERTICAL-05-02;So;0;ON;;;;;N;;;;;
+1F089;DOMINO TILE VERTICAL-05-03;So;0;ON;;;;;N;;;;;
+1F08A;DOMINO TILE VERTICAL-05-04;So;0;ON;;;;;N;;;;;
+1F08B;DOMINO TILE VERTICAL-05-05;So;0;ON;;;;;N;;;;;
+1F08C;DOMINO TILE VERTICAL-05-06;So;0;ON;;;;;N;;;;;
+1F08D;DOMINO TILE VERTICAL-06-00;So;0;ON;;;;;N;;;;;
+1F08E;DOMINO TILE VERTICAL-06-01;So;0;ON;;;;;N;;;;;
+1F08F;DOMINO TILE VERTICAL-06-02;So;0;ON;;;;;N;;;;;
+1F090;DOMINO TILE VERTICAL-06-03;So;0;ON;;;;;N;;;;;
+1F091;DOMINO TILE VERTICAL-06-04;So;0;ON;;;;;N;;;;;
+1F092;DOMINO TILE VERTICAL-06-05;So;0;ON;;;;;N;;;;;
+1F093;DOMINO TILE VERTICAL-06-06;So;0;ON;;;;;N;;;;;
+2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;;
+2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;;
+2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;;
+2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;;
+2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;;
+2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;;
+2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;;
+2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;;
+2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;;
+2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;;
+2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;;
+2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;;
+2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;;
+2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;;
+2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;;
+2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;;
+2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;;
+2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;;
+2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;;
+2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;;
+2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;;
+2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;;
+2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;;
+2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;;
+2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;;
+2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;;
+2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;;
+2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;;
+2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;;
+2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;;
+2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;;
+2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;;
+2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;;
+2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;;
+2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;;
+2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;;
+2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;;
+2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;;
+2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;;
+2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;;
+2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;;
+2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;;
+2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;;
+2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;;
+2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;;
+2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;;
+2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;;
+2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;;
+2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;;
+2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;;
+2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;;
+2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;;
+2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;;
+2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;;
+2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;;
+2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;;
+2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;;
+2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;;
+2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;;
+2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;;
+2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;;
+2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;;
+2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;;
+2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;;
+2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;;
+2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;;
+2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;;
+2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;;
+2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;;
+2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;;
+2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;;
+2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;;
+2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;;
+2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;;
+2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;;
+2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;;
+2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;;
+2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;;
+2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;;
+2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;;
+2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;;
+2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;;
+2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;;
+2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;;
+2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;;
+2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;;
+2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;;
+2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;;
+2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;;
+2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;;
+2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;;
+2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;;
+2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;;
+2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;;
+2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;;
+2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;;
+2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;;
+2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;;
+2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;;
+2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;;
+2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;;
+2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;;
+2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;;
+2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;;
+2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;36FC;;;;N;;;;;
+2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;;
+2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;;
+2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;;
+2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;;
+2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;;
+2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;;
+2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;;
+2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;;
+2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;;
+2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;;
+2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;;
+2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F53;;;;N;;;;;
+2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;;
+2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;;
+2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;;
+2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;;
+2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;;
+2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;;
+2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;;
+2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;;
+2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;;
+2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;;
+2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;;
+2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;;
+2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;;
+2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;;
+2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;;
+2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;;
+2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;;
+2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;;
+2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;;
+2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;;
+2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;;
+2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;;
+2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;;
+2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;;
+2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;;
+2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;;
+2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;;
+2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;9;N;;;;;
+2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;;
+2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;;
+2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;;
+2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;;
+2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;;
+2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;;
+2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;;
+2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;;
+2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;;
+2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;;
+2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;;
+2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;;
+2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;;
+2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;;
+2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;;
+2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;;
+2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;;
+2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;;
+2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;;
+2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;;
+2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;;
+2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;;
+2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;;
+2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;;
+2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;;
+2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;;
+2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;;
+2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;;
+2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;;
+2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;;
+2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;;
+2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;;
+2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;;
+2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;;
+2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;;
+2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;;
+2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;;
+2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;;
+2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;;
+2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;;
+2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;;
+2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;;
+2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;;
+2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;;
+2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;;
+2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;;
+2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;;
+2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;;
+2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;;
+2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;;
+2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;;
+2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;;
+2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;;
+2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;;
+2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;;
+2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;;
+2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;;
+2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;;
+2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;;
+2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;;
+2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;;
+2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;;
+2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;;
+2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;;
+2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;;
+2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;;
+2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;;
+2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;;
+2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;;
+2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;;
+2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;;
+2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;;
+2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;;
+2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;;
+2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;;
+2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;;
+2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;;
+2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;;
+2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;;
+2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;;
+2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;;
+2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;;
+2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;;
+2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;;
+2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;;
+2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;;
+2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;;
+2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;;
+2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;;
+2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;;
+2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;;
+2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;;
+2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;;
+2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;;
+2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;;
+2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;;
+2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;;
+2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;;
+2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;;
+2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;;
+2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;;
+2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;;
+2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;;
+2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;;
+2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;;
+2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;;
+2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;;
+2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;;
+2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;;
+2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;;
+2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;;
+2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;;
+2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;;
+2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;;
+2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;;
+2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;;
+2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;;
+2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;;
+2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;;
+2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;;
+2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;;
+2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;;
+2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;;
+2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;;
+2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;;
+2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;;
+2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;;
+2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;;
+2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;;
+2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;;
+2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;;
+2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;;
+2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;;
+2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;;
+2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;;
+2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;;
+2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;;
+2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;;
+2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;;
+2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;;
+2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;;
+2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;;
+2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;243AB;;;;N;;;;;
+2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;;
+2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;;
+2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;;
+2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;;
+2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;;
+2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;;
+2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;;
+2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;;
+2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;;
+2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;;
+2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;;
+2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;;
+2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;;
+2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;;
+2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;;
+2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;;
+2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;;
+2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;;
+2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;;
+2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;;
+2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;;
+2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;;
+2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;;
+2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;;
+2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;;
+2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;;
+2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;;
+2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;;
+2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;;
+2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;;
+2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;;
+2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;;
+2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;;
+2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;;
+2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;;
+2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;;
+2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;;
+2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;;
+2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;;
+2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;;
+2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;;
+2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;;
+2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;;
+2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;;
+2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;;
+2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;;
+2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;;
+2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;;
+2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;;
+2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;;
+2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;;
+2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;;
+2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;;
+2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;;
+2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;;
+2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;;
+2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;;
+2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;;
+2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;;
+2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;;
+2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;;
+2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;;
+2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;;
+2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AEE;;;;N;;;;;
+2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;;
+2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;;
+2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;;
+2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;;
+2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;;
+2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;;
+2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;;
+2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;;
+2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;;
+2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;;
+2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;;
+2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;;
+2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;;
+2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;;
+2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;;
+2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;;
+2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;;
+2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;;
+2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;;
+2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;;
+2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;;
+2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;;
+2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;;
+2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;;
+2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;;
+2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;;
+2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;;
+2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;;
+2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;;
+2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;;
+2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;;
+2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;;
+2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;;
+2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;;
+2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;;
+2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;;
+2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;;
+2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;;
+2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;;
+2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;;
+2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;;
+2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;;
+2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;;
+2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;;
+2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;;
+2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;;
+2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;;
+2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;;
+2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;;
+2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;;
+2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;;
+2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;;
+2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;;
+2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;;
+2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;;
+2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;;
+2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;;
+2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;;
+2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;;
+2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;;
+2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;;
+2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;;
+2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;;
+2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;;
+2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;;
+2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;;
+2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;;
+2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;;
+2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;;
+2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;;
+2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;;
+2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;;
+2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;;
+2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;;
+2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;;
+2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;;
+2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;;
+2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;;
+2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;;
+2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;;
+2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;;
+2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;;
+2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;;
+2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;;
+2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;;
+2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;;
+2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;;
+2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;;
+2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;;
+2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;;
+2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;;
+2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;;
+2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;;
+2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;;
+2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;;
+2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;45D7;;;;N;;;;;
+2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;;
+2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;;
+2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;;
+2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;;
+2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;;
+2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;;
+2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;;
+2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;;
+2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;;
+2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;;
+2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;;
+2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;;
+2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;;
+2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;;
+2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;;
+2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;;
+2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;;
+2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;;
+2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;;
+2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;;
+2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;;
+2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;;
+2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;;
+2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;;
+2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;;
+2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;;
+2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;;
+2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;;
+2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;;
+2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;;
+2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;;
+2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;;
+2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;;
+2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;;
+2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;;
+2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;;
+2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;;
+2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;;
+2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;;
+2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;;
+2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;;
+2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;;
+2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;;
+2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;;
+2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;;
+2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;;
+2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;;
+2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;;
+2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;;
+2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;;
+2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;;
+2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;;
+2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;;
+2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;;
+2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;;
+2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;;
+2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;;
+2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;;
+2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;;
+2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;;
+2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;;
+2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;;
+2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;;
+2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;;
+2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;;
+2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;;
+2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;;
+2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;;
+2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;;
+2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;;
+2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;;
+2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;;
+2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;;
+2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;;
+2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;;
+2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;;
+2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;;
+2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;;
+2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;;
+2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;;
+2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;;
+2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;;
+2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;;
+2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;;
+2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;;
+2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;;
+2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;;
+2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;;
+2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;;
+2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;;
+2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;;
+2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;;
+2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;;
+2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;;
+E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;;
+E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;;
+E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;;
+E0022;TAG QUOTATION MARK;Cf;0;BN;;;;;N;;;;;
+E0023;TAG NUMBER SIGN;Cf;0;BN;;;;;N;;;;;
+E0024;TAG DOLLAR SIGN;Cf;0;BN;;;;;N;;;;;
+E0025;TAG PERCENT SIGN;Cf;0;BN;;;;;N;;;;;
+E0026;TAG AMPERSAND;Cf;0;BN;;;;;N;;;;;
+E0027;TAG APOSTROPHE;Cf;0;BN;;;;;N;;;;;
+E0028;TAG LEFT PARENTHESIS;Cf;0;BN;;;;;N;;;;;
+E0029;TAG RIGHT PARENTHESIS;Cf;0;BN;;;;;N;;;;;
+E002A;TAG ASTERISK;Cf;0;BN;;;;;N;;;;;
+E002B;TAG PLUS SIGN;Cf;0;BN;;;;;N;;;;;
+E002C;TAG COMMA;Cf;0;BN;;;;;N;;;;;
+E002D;TAG HYPHEN-MINUS;Cf;0;BN;;;;;N;;;;;
+E002E;TAG FULL STOP;Cf;0;BN;;;;;N;;;;;
+E002F;TAG SOLIDUS;Cf;0;BN;;;;;N;;;;;
+E0030;TAG DIGIT ZERO;Cf;0;BN;;;;;N;;;;;
+E0031;TAG DIGIT ONE;Cf;0;BN;;;;;N;;;;;
+E0032;TAG DIGIT TWO;Cf;0;BN;;;;;N;;;;;
+E0033;TAG DIGIT THREE;Cf;0;BN;;;;;N;;;;;
+E0034;TAG DIGIT FOUR;Cf;0;BN;;;;;N;;;;;
+E0035;TAG DIGIT FIVE;Cf;0;BN;;;;;N;;;;;
+E0036;TAG DIGIT SIX;Cf;0;BN;;;;;N;;;;;
+E0037;TAG DIGIT SEVEN;Cf;0;BN;;;;;N;;;;;
+E0038;TAG DIGIT EIGHT;Cf;0;BN;;;;;N;;;;;
+E0039;TAG DIGIT NINE;Cf;0;BN;;;;;N;;;;;
+E003A;TAG COLON;Cf;0;BN;;;;;N;;;;;
+E003B;TAG SEMICOLON;Cf;0;BN;;;;;N;;;;;
+E003C;TAG LESS-THAN SIGN;Cf;0;BN;;;;;N;;;;;
+E003D;TAG EQUALS SIGN;Cf;0;BN;;;;;N;;;;;
+E003E;TAG GREATER-THAN SIGN;Cf;0;BN;;;;;N;;;;;
+E003F;TAG QUESTION MARK;Cf;0;BN;;;;;N;;;;;
+E0040;TAG COMMERCIAL AT;Cf;0;BN;;;;;N;;;;;
+E0041;TAG LATIN CAPITAL LETTER A;Cf;0;BN;;;;;N;;;;;
+E0042;TAG LATIN CAPITAL LETTER B;Cf;0;BN;;;;;N;;;;;
+E0043;TAG LATIN CAPITAL LETTER C;Cf;0;BN;;;;;N;;;;;
+E0044;TAG LATIN CAPITAL LETTER D;Cf;0;BN;;;;;N;;;;;
+E0045;TAG LATIN CAPITAL LETTER E;Cf;0;BN;;;;;N;;;;;
+E0046;TAG LATIN CAPITAL LETTER F;Cf;0;BN;;;;;N;;;;;
+E0047;TAG LATIN CAPITAL LETTER G;Cf;0;BN;;;;;N;;;;;
+E0048;TAG LATIN CAPITAL LETTER H;Cf;0;BN;;;;;N;;;;;
+E0049;TAG LATIN CAPITAL LETTER I;Cf;0;BN;;;;;N;;;;;
+E004A;TAG LATIN CAPITAL LETTER J;Cf;0;BN;;;;;N;;;;;
+E004B;TAG LATIN CAPITAL LETTER K;Cf;0;BN;;;;;N;;;;;
+E004C;TAG LATIN CAPITAL LETTER L;Cf;0;BN;;;;;N;;;;;
+E004D;TAG LATIN CAPITAL LETTER M;Cf;0;BN;;;;;N;;;;;
+E004E;TAG LATIN CAPITAL LETTER N;Cf;0;BN;;;;;N;;;;;
+E004F;TAG LATIN CAPITAL LETTER O;Cf;0;BN;;;;;N;;;;;
+E0050;TAG LATIN CAPITAL LETTER P;Cf;0;BN;;;;;N;;;;;
+E0051;TAG LATIN CAPITAL LETTER Q;Cf;0;BN;;;;;N;;;;;
+E0052;TAG LATIN CAPITAL LETTER R;Cf;0;BN;;;;;N;;;;;
+E0053;TAG LATIN CAPITAL LETTER S;Cf;0;BN;;;;;N;;;;;
+E0054;TAG LATIN CAPITAL LETTER T;Cf;0;BN;;;;;N;;;;;
+E0055;TAG LATIN CAPITAL LETTER U;Cf;0;BN;;;;;N;;;;;
+E0056;TAG LATIN CAPITAL LETTER V;Cf;0;BN;;;;;N;;;;;
+E0057;TAG LATIN CAPITAL LETTER W;Cf;0;BN;;;;;N;;;;;
+E0058;TAG LATIN CAPITAL LETTER X;Cf;0;BN;;;;;N;;;;;
+E0059;TAG LATIN CAPITAL LETTER Y;Cf;0;BN;;;;;N;;;;;
+E005A;TAG LATIN CAPITAL LETTER Z;Cf;0;BN;;;;;N;;;;;
+E005B;TAG LEFT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;
+E005C;TAG REVERSE SOLIDUS;Cf;0;BN;;;;;N;;;;;
+E005D;TAG RIGHT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;
+E005E;TAG CIRCUMFLEX ACCENT;Cf;0;BN;;;;;N;;;;;
+E005F;TAG LOW LINE;Cf;0;BN;;;;;N;;;;;
+E0060;TAG GRAVE ACCENT;Cf;0;BN;;;;;N;;;;;
+E0061;TAG LATIN SMALL LETTER A;Cf;0;BN;;;;;N;;;;;
+E0062;TAG LATIN SMALL LETTER B;Cf;0;BN;;;;;N;;;;;
+E0063;TAG LATIN SMALL LETTER C;Cf;0;BN;;;;;N;;;;;
+E0064;TAG LATIN SMALL LETTER D;Cf;0;BN;;;;;N;;;;;
+E0065;TAG LATIN SMALL LETTER E;Cf;0;BN;;;;;N;;;;;
+E0066;TAG LATIN SMALL LETTER F;Cf;0;BN;;;;;N;;;;;
+E0067;TAG LATIN SMALL LETTER G;Cf;0;BN;;;;;N;;;;;
+E0068;TAG LATIN SMALL LETTER H;Cf;0;BN;;;;;N;;;;;
+E0069;TAG LATIN SMALL LETTER I;Cf;0;BN;;;;;N;;;;;
+E006A;TAG LATIN SMALL LETTER J;Cf;0;BN;;;;;N;;;;;
+E006B;TAG LATIN SMALL LETTER K;Cf;0;BN;;;;;N;;;;;
+E006C;TAG LATIN SMALL LETTER L;Cf;0;BN;;;;;N;;;;;
+E006D;TAG LATIN SMALL LETTER M;Cf;0;BN;;;;;N;;;;;
+E006E;TAG LATIN SMALL LETTER N;Cf;0;BN;;;;;N;;;;;
+E006F;TAG LATIN SMALL LETTER O;Cf;0;BN;;;;;N;;;;;
+E0070;TAG LATIN SMALL LETTER P;Cf;0;BN;;;;;N;;;;;
+E0071;TAG LATIN SMALL LETTER Q;Cf;0;BN;;;;;N;;;;;
+E0072;TAG LATIN SMALL LETTER R;Cf;0;BN;;;;;N;;;;;
+E0073;TAG LATIN SMALL LETTER S;Cf;0;BN;;;;;N;;;;;
+E0074;TAG LATIN SMALL LETTER T;Cf;0;BN;;;;;N;;;;;
+E0075;TAG LATIN SMALL LETTER U;Cf;0;BN;;;;;N;;;;;
+E0076;TAG LATIN SMALL LETTER V;Cf;0;BN;;;;;N;;;;;
+E0077;TAG LATIN SMALL LETTER W;Cf;0;BN;;;;;N;;;;;
+E0078;TAG LATIN SMALL LETTER X;Cf;0;BN;;;;;N;;;;;
+E0079;TAG LATIN SMALL LETTER Y;Cf;0;BN;;;;;N;;;;;
+E007A;TAG LATIN SMALL LETTER Z;Cf;0;BN;;;;;N;;;;;
+E007B;TAG LEFT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;
+E007C;TAG VERTICAL LINE;Cf;0;BN;;;;;N;;;;;
+E007D;TAG RIGHT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;
+E007E;TAG TILDE;Cf;0;BN;;;;;N;;;;;
+E007F;CANCEL TAG;Cf;0;BN;;;;;N;;;;;
+E0100;VARIATION SELECTOR-17;Mn;0;NSM;;;;;N;;;;;
+E0101;VARIATION SELECTOR-18;Mn;0;NSM;;;;;N;;;;;
+E0102;VARIATION SELECTOR-19;Mn;0;NSM;;;;;N;;;;;
+E0103;VARIATION SELECTOR-20;Mn;0;NSM;;;;;N;;;;;
+E0104;VARIATION SELECTOR-21;Mn;0;NSM;;;;;N;;;;;
+E0105;VARIATION SELECTOR-22;Mn;0;NSM;;;;;N;;;;;
+E0106;VARIATION SELECTOR-23;Mn;0;NSM;;;;;N;;;;;
+E0107;VARIATION SELECTOR-24;Mn;0;NSM;;;;;N;;;;;
+E0108;VARIATION SELECTOR-25;Mn;0;NSM;;;;;N;;;;;
+E0109;VARIATION SELECTOR-26;Mn;0;NSM;;;;;N;;;;;
+E010A;VARIATION SELECTOR-27;Mn;0;NSM;;;;;N;;;;;
+E010B;VARIATION SELECTOR-28;Mn;0;NSM;;;;;N;;;;;
+E010C;VARIATION SELECTOR-29;Mn;0;NSM;;;;;N;;;;;
+E010D;VARIATION SELECTOR-30;Mn;0;NSM;;;;;N;;;;;
+E010E;VARIATION SELECTOR-31;Mn;0;NSM;;;;;N;;;;;
+E010F;VARIATION SELECTOR-32;Mn;0;NSM;;;;;N;;;;;
+E0110;VARIATION SELECTOR-33;Mn;0;NSM;;;;;N;;;;;
+E0111;VARIATION SELECTOR-34;Mn;0;NSM;;;;;N;;;;;
+E0112;VARIATION SELECTOR-35;Mn;0;NSM;;;;;N;;;;;
+E0113;VARIATION SELECTOR-36;Mn;0;NSM;;;;;N;;;;;
+E0114;VARIATION SELECTOR-37;Mn;0;NSM;;;;;N;;;;;
+E0115;VARIATION SELECTOR-38;Mn;0;NSM;;;;;N;;;;;
+E0116;VARIATION SELECTOR-39;Mn;0;NSM;;;;;N;;;;;
+E0117;VARIATION SELECTOR-40;Mn;0;NSM;;;;;N;;;;;
+E0118;VARIATION SELECTOR-41;Mn;0;NSM;;;;;N;;;;;
+E0119;VARIATION SELECTOR-42;Mn;0;NSM;;;;;N;;;;;
+E011A;VARIATION SELECTOR-43;Mn;0;NSM;;;;;N;;;;;
+E011B;VARIATION SELECTOR-44;Mn;0;NSM;;;;;N;;;;;
+E011C;VARIATION SELECTOR-45;Mn;0;NSM;;;;;N;;;;;
+E011D;VARIATION SELECTOR-46;Mn;0;NSM;;;;;N;;;;;
+E011E;VARIATION SELECTOR-47;Mn;0;NSM;;;;;N;;;;;
+E011F;VARIATION SELECTOR-48;Mn;0;NSM;;;;;N;;;;;
+E0120;VARIATION SELECTOR-49;Mn;0;NSM;;;;;N;;;;;
+E0121;VARIATION SELECTOR-50;Mn;0;NSM;;;;;N;;;;;
+E0122;VARIATION SELECTOR-51;Mn;0;NSM;;;;;N;;;;;
+E0123;VARIATION SELECTOR-52;Mn;0;NSM;;;;;N;;;;;
+E0124;VARIATION SELECTOR-53;Mn;0;NSM;;;;;N;;;;;
+E0125;VARIATION SELECTOR-54;Mn;0;NSM;;;;;N;;;;;
+E0126;VARIATION SELECTOR-55;Mn;0;NSM;;;;;N;;;;;
+E0127;VARIATION SELECTOR-56;Mn;0;NSM;;;;;N;;;;;
+E0128;VARIATION SELECTOR-57;Mn;0;NSM;;;;;N;;;;;
+E0129;VARIATION SELECTOR-58;Mn;0;NSM;;;;;N;;;;;
+E012A;VARIATION SELECTOR-59;Mn;0;NSM;;;;;N;;;;;
+E012B;VARIATION SELECTOR-60;Mn;0;NSM;;;;;N;;;;;
+E012C;VARIATION SELECTOR-61;Mn;0;NSM;;;;;N;;;;;
+E012D;VARIATION SELECTOR-62;Mn;0;NSM;;;;;N;;;;;
+E012E;VARIATION SELECTOR-63;Mn;0;NSM;;;;;N;;;;;
+E012F;VARIATION SELECTOR-64;Mn;0;NSM;;;;;N;;;;;
+E0130;VARIATION SELECTOR-65;Mn;0;NSM;;;;;N;;;;;
+E0131;VARIATION SELECTOR-66;Mn;0;NSM;;;;;N;;;;;
+E0132;VARIATION SELECTOR-67;Mn;0;NSM;;;;;N;;;;;
+E0133;VARIATION SELECTOR-68;Mn;0;NSM;;;;;N;;;;;
+E0134;VARIATION SELECTOR-69;Mn;0;NSM;;;;;N;;;;;
+E0135;VARIATION SELECTOR-70;Mn;0;NSM;;;;;N;;;;;
+E0136;VARIATION SELECTOR-71;Mn;0;NSM;;;;;N;;;;;
+E0137;VARIATION SELECTOR-72;Mn;0;NSM;;;;;N;;;;;
+E0138;VARIATION SELECTOR-73;Mn;0;NSM;;;;;N;;;;;
+E0139;VARIATION SELECTOR-74;Mn;0;NSM;;;;;N;;;;;
+E013A;VARIATION SELECTOR-75;Mn;0;NSM;;;;;N;;;;;
+E013B;VARIATION SELECTOR-76;Mn;0;NSM;;;;;N;;;;;
+E013C;VARIATION SELECTOR-77;Mn;0;NSM;;;;;N;;;;;
+E013D;VARIATION SELECTOR-78;Mn;0;NSM;;;;;N;;;;;
+E013E;VARIATION SELECTOR-79;Mn;0;NSM;;;;;N;;;;;
+E013F;VARIATION SELECTOR-80;Mn;0;NSM;;;;;N;;;;;
+E0140;VARIATION SELECTOR-81;Mn;0;NSM;;;;;N;;;;;
+E0141;VARIATION SELECTOR-82;Mn;0;NSM;;;;;N;;;;;
+E0142;VARIATION SELECTOR-83;Mn;0;NSM;;;;;N;;;;;
+E0143;VARIATION SELECTOR-84;Mn;0;NSM;;;;;N;;;;;
+E0144;VARIATION SELECTOR-85;Mn;0;NSM;;;;;N;;;;;
+E0145;VARIATION SELECTOR-86;Mn;0;NSM;;;;;N;;;;;
+E0146;VARIATION SELECTOR-87;Mn;0;NSM;;;;;N;;;;;
+E0147;VARIATION SELECTOR-88;Mn;0;NSM;;;;;N;;;;;
+E0148;VARIATION SELECTOR-89;Mn;0;NSM;;;;;N;;;;;
+E0149;VARIATION SELECTOR-90;Mn;0;NSM;;;;;N;;;;;
+E014A;VARIATION SELECTOR-91;Mn;0;NSM;;;;;N;;;;;
+E014B;VARIATION SELECTOR-92;Mn;0;NSM;;;;;N;;;;;
+E014C;VARIATION SELECTOR-93;Mn;0;NSM;;;;;N;;;;;
+E014D;VARIATION SELECTOR-94;Mn;0;NSM;;;;;N;;;;;
+E014E;VARIATION SELECTOR-95;Mn;0;NSM;;;;;N;;;;;
+E014F;VARIATION SELECTOR-96;Mn;0;NSM;;;;;N;;;;;
+E0150;VARIATION SELECTOR-97;Mn;0;NSM;;;;;N;;;;;
+E0151;VARIATION SELECTOR-98;Mn;0;NSM;;;;;N;;;;;
+E0152;VARIATION SELECTOR-99;Mn;0;NSM;;;;;N;;;;;
+E0153;VARIATION SELECTOR-100;Mn;0;NSM;;;;;N;;;;;
+E0154;VARIATION SELECTOR-101;Mn;0;NSM;;;;;N;;;;;
+E0155;VARIATION SELECTOR-102;Mn;0;NSM;;;;;N;;;;;
+E0156;VARIATION SELECTOR-103;Mn;0;NSM;;;;;N;;;;;
+E0157;VARIATION SELECTOR-104;Mn;0;NSM;;;;;N;;;;;
+E0158;VARIATION SELECTOR-105;Mn;0;NSM;;;;;N;;;;;
+E0159;VARIATION SELECTOR-106;Mn;0;NSM;;;;;N;;;;;
+E015A;VARIATION SELECTOR-107;Mn;0;NSM;;;;;N;;;;;
+E015B;VARIATION SELECTOR-108;Mn;0;NSM;;;;;N;;;;;
+E015C;VARIATION SELECTOR-109;Mn;0;NSM;;;;;N;;;;;
+E015D;VARIATION SELECTOR-110;Mn;0;NSM;;;;;N;;;;;
+E015E;VARIATION SELECTOR-111;Mn;0;NSM;;;;;N;;;;;
+E015F;VARIATION SELECTOR-112;Mn;0;NSM;;;;;N;;;;;
+E0160;VARIATION SELECTOR-113;Mn;0;NSM;;;;;N;;;;;
+E0161;VARIATION SELECTOR-114;Mn;0;NSM;;;;;N;;;;;
+E0162;VARIATION SELECTOR-115;Mn;0;NSM;;;;;N;;;;;
+E0163;VARIATION SELECTOR-116;Mn;0;NSM;;;;;N;;;;;
+E0164;VARIATION SELECTOR-117;Mn;0;NSM;;;;;N;;;;;
+E0165;VARIATION SELECTOR-118;Mn;0;NSM;;;;;N;;;;;
+E0166;VARIATION SELECTOR-119;Mn;0;NSM;;;;;N;;;;;
+E0167;VARIATION SELECTOR-120;Mn;0;NSM;;;;;N;;;;;
+E0168;VARIATION SELECTOR-121;Mn;0;NSM;;;;;N;;;;;
+E0169;VARIATION SELECTOR-122;Mn;0;NSM;;;;;N;;;;;
+E016A;VARIATION SELECTOR-123;Mn;0;NSM;;;;;N;;;;;
+E016B;VARIATION SELECTOR-124;Mn;0;NSM;;;;;N;;;;;
+E016C;VARIATION SELECTOR-125;Mn;0;NSM;;;;;N;;;;;
+E016D;VARIATION SELECTOR-126;Mn;0;NSM;;;;;N;;;;;
+E016E;VARIATION SELECTOR-127;Mn;0;NSM;;;;;N;;;;;
+E016F;VARIATION SELECTOR-128;Mn;0;NSM;;;;;N;;;;;
+E0170;VARIATION SELECTOR-129;Mn;0;NSM;;;;;N;;;;;
+E0171;VARIATION SELECTOR-130;Mn;0;NSM;;;;;N;;;;;
+E0172;VARIATION SELECTOR-131;Mn;0;NSM;;;;;N;;;;;
+E0173;VARIATION SELECTOR-132;Mn;0;NSM;;;;;N;;;;;
+E0174;VARIATION SELECTOR-133;Mn;0;NSM;;;;;N;;;;;
+E0175;VARIATION SELECTOR-134;Mn;0;NSM;;;;;N;;;;;
+E0176;VARIATION SELECTOR-135;Mn;0;NSM;;;;;N;;;;;
+E0177;VARIATION SELECTOR-136;Mn;0;NSM;;;;;N;;;;;
+E0178;VARIATION SELECTOR-137;Mn;0;NSM;;;;;N;;;;;
+E0179;VARIATION SELECTOR-138;Mn;0;NSM;;;;;N;;;;;
+E017A;VARIATION SELECTOR-139;Mn;0;NSM;;;;;N;;;;;
+E017B;VARIATION SELECTOR-140;Mn;0;NSM;;;;;N;;;;;
+E017C;VARIATION SELECTOR-141;Mn;0;NSM;;;;;N;;;;;
+E017D;VARIATION SELECTOR-142;Mn;0;NSM;;;;;N;;;;;
+E017E;VARIATION SELECTOR-143;Mn;0;NSM;;;;;N;;;;;
+E017F;VARIATION SELECTOR-144;Mn;0;NSM;;;;;N;;;;;
+E0180;VARIATION SELECTOR-145;Mn;0;NSM;;;;;N;;;;;
+E0181;VARIATION SELECTOR-146;Mn;0;NSM;;;;;N;;;;;
+E0182;VARIATION SELECTOR-147;Mn;0;NSM;;;;;N;;;;;
+E0183;VARIATION SELECTOR-148;Mn;0;NSM;;;;;N;;;;;
+E0184;VARIATION SELECTOR-149;Mn;0;NSM;;;;;N;;;;;
+E0185;VARIATION SELECTOR-150;Mn;0;NSM;;;;;N;;;;;
+E0186;VARIATION SELECTOR-151;Mn;0;NSM;;;;;N;;;;;
+E0187;VARIATION SELECTOR-152;Mn;0;NSM;;;;;N;;;;;
+E0188;VARIATION SELECTOR-153;Mn;0;NSM;;;;;N;;;;;
+E0189;VARIATION SELECTOR-154;Mn;0;NSM;;;;;N;;;;;
+E018A;VARIATION SELECTOR-155;Mn;0;NSM;;;;;N;;;;;
+E018B;VARIATION SELECTOR-156;Mn;0;NSM;;;;;N;;;;;
+E018C;VARIATION SELECTOR-157;Mn;0;NSM;;;;;N;;;;;
+E018D;VARIATION SELECTOR-158;Mn;0;NSM;;;;;N;;;;;
+E018E;VARIATION SELECTOR-159;Mn;0;NSM;;;;;N;;;;;
+E018F;VARIATION SELECTOR-160;Mn;0;NSM;;;;;N;;;;;
+E0190;VARIATION SELECTOR-161;Mn;0;NSM;;;;;N;;;;;
+E0191;VARIATION SELECTOR-162;Mn;0;NSM;;;;;N;;;;;
+E0192;VARIATION SELECTOR-163;Mn;0;NSM;;;;;N;;;;;
+E0193;VARIATION SELECTOR-164;Mn;0;NSM;;;;;N;;;;;
+E0194;VARIATION SELECTOR-165;Mn;0;NSM;;;;;N;;;;;
+E0195;VARIATION SELECTOR-166;Mn;0;NSM;;;;;N;;;;;
+E0196;VARIATION SELECTOR-167;Mn;0;NSM;;;;;N;;;;;
+E0197;VARIATION SELECTOR-168;Mn;0;NSM;;;;;N;;;;;
+E0198;VARIATION SELECTOR-169;Mn;0;NSM;;;;;N;;;;;
+E0199;VARIATION SELECTOR-170;Mn;0;NSM;;;;;N;;;;;
+E019A;VARIATION SELECTOR-171;Mn;0;NSM;;;;;N;;;;;
+E019B;VARIATION SELECTOR-172;Mn;0;NSM;;;;;N;;;;;
+E019C;VARIATION SELECTOR-173;Mn;0;NSM;;;;;N;;;;;
+E019D;VARIATION SELECTOR-174;Mn;0;NSM;;;;;N;;;;;
+E019E;VARIATION SELECTOR-175;Mn;0;NSM;;;;;N;;;;;
+E019F;VARIATION SELECTOR-176;Mn;0;NSM;;;;;N;;;;;
+E01A0;VARIATION SELECTOR-177;Mn;0;NSM;;;;;N;;;;;
+E01A1;VARIATION SELECTOR-178;Mn;0;NSM;;;;;N;;;;;
+E01A2;VARIATION SELECTOR-179;Mn;0;NSM;;;;;N;;;;;
+E01A3;VARIATION SELECTOR-180;Mn;0;NSM;;;;;N;;;;;
+E01A4;VARIATION SELECTOR-181;Mn;0;NSM;;;;;N;;;;;
+E01A5;VARIATION SELECTOR-182;Mn;0;NSM;;;;;N;;;;;
+E01A6;VARIATION SELECTOR-183;Mn;0;NSM;;;;;N;;;;;
+E01A7;VARIATION SELECTOR-184;Mn;0;NSM;;;;;N;;;;;
+E01A8;VARIATION SELECTOR-185;Mn;0;NSM;;;;;N;;;;;
+E01A9;VARIATION SELECTOR-186;Mn;0;NSM;;;;;N;;;;;
+E01AA;VARIATION SELECTOR-187;Mn;0;NSM;;;;;N;;;;;
+E01AB;VARIATION SELECTOR-188;Mn;0;NSM;;;;;N;;;;;
+E01AC;VARIATION SELECTOR-189;Mn;0;NSM;;;;;N;;;;;
+E01AD;VARIATION SELECTOR-190;Mn;0;NSM;;;;;N;;;;;
+E01AE;VARIATION SELECTOR-191;Mn;0;NSM;;;;;N;;;;;
+E01AF;VARIATION SELECTOR-192;Mn;0;NSM;;;;;N;;;;;
+E01B0;VARIATION SELECTOR-193;Mn;0;NSM;;;;;N;;;;;
+E01B1;VARIATION SELECTOR-194;Mn;0;NSM;;;;;N;;;;;
+E01B2;VARIATION SELECTOR-195;Mn;0;NSM;;;;;N;;;;;
+E01B3;VARIATION SELECTOR-196;Mn;0;NSM;;;;;N;;;;;
+E01B4;VARIATION SELECTOR-197;Mn;0;NSM;;;;;N;;;;;
+E01B5;VARIATION SELECTOR-198;Mn;0;NSM;;;;;N;;;;;
+E01B6;VARIATION SELECTOR-199;Mn;0;NSM;;;;;N;;;;;
+E01B7;VARIATION SELECTOR-200;Mn;0;NSM;;;;;N;;;;;
+E01B8;VARIATION SELECTOR-201;Mn;0;NSM;;;;;N;;;;;
+E01B9;VARIATION SELECTOR-202;Mn;0;NSM;;;;;N;;;;;
+E01BA;VARIATION SELECTOR-203;Mn;0;NSM;;;;;N;;;;;
+E01BB;VARIATION SELECTOR-204;Mn;0;NSM;;;;;N;;;;;
+E01BC;VARIATION SELECTOR-205;Mn;0;NSM;;;;;N;;;;;
+E01BD;VARIATION SELECTOR-206;Mn;0;NSM;;;;;N;;;;;
+E01BE;VARIATION SELECTOR-207;Mn;0;NSM;;;;;N;;;;;
+E01BF;VARIATION SELECTOR-208;Mn;0;NSM;;;;;N;;;;;
+E01C0;VARIATION SELECTOR-209;Mn;0;NSM;;;;;N;;;;;
+E01C1;VARIATION SELECTOR-210;Mn;0;NSM;;;;;N;;;;;
+E01C2;VARIATION SELECTOR-211;Mn;0;NSM;;;;;N;;;;;
+E01C3;VARIATION SELECTOR-212;Mn;0;NSM;;;;;N;;;;;
+E01C4;VARIATION SELECTOR-213;Mn;0;NSM;;;;;N;;;;;
+E01C5;VARIATION SELECTOR-214;Mn;0;NSM;;;;;N;;;;;
+E01C6;VARIATION SELECTOR-215;Mn;0;NSM;;;;;N;;;;;
+E01C7;VARIATION SELECTOR-216;Mn;0;NSM;;;;;N;;;;;
+E01C8;VARIATION SELECTOR-217;Mn;0;NSM;;;;;N;;;;;
+E01C9;VARIATION SELECTOR-218;Mn;0;NSM;;;;;N;;;;;
+E01CA;VARIATION SELECTOR-219;Mn;0;NSM;;;;;N;;;;;
+E01CB;VARIATION SELECTOR-220;Mn;0;NSM;;;;;N;;;;;
+E01CC;VARIATION SELECTOR-221;Mn;0;NSM;;;;;N;;;;;
+E01CD;VARIATION SELECTOR-222;Mn;0;NSM;;;;;N;;;;;
+E01CE;VARIATION SELECTOR-223;Mn;0;NSM;;;;;N;;;;;
+E01CF;VARIATION SELECTOR-224;Mn;0;NSM;;;;;N;;;;;
+E01D0;VARIATION SELECTOR-225;Mn;0;NSM;;;;;N;;;;;
+E01D1;VARIATION SELECTOR-226;Mn;0;NSM;;;;;N;;;;;
+E01D2;VARIATION SELECTOR-227;Mn;0;NSM;;;;;N;;;;;
+E01D3;VARIATION SELECTOR-228;Mn;0;NSM;;;;;N;;;;;
+E01D4;VARIATION SELECTOR-229;Mn;0;NSM;;;;;N;;;;;
+E01D5;VARIATION SELECTOR-230;Mn;0;NSM;;;;;N;;;;;
+E01D6;VARIATION SELECTOR-231;Mn;0;NSM;;;;;N;;;;;
+E01D7;VARIATION SELECTOR-232;Mn;0;NSM;;;;;N;;;;;
+E01D8;VARIATION SELECTOR-233;Mn;0;NSM;;;;;N;;;;;
+E01D9;VARIATION SELECTOR-234;Mn;0;NSM;;;;;N;;;;;
+E01DA;VARIATION SELECTOR-235;Mn;0;NSM;;;;;N;;;;;
+E01DB;VARIATION SELECTOR-236;Mn;0;NSM;;;;;N;;;;;
+E01DC;VARIATION SELECTOR-237;Mn;0;NSM;;;;;N;;;;;
+E01DD;VARIATION SELECTOR-238;Mn;0;NSM;;;;;N;;;;;
+E01DE;VARIATION SELECTOR-239;Mn;0;NSM;;;;;N;;;;;
+E01DF;VARIATION SELECTOR-240;Mn;0;NSM;;;;;N;;;;;
+E01E0;VARIATION SELECTOR-241;Mn;0;NSM;;;;;N;;;;;
+E01E1;VARIATION SELECTOR-242;Mn;0;NSM;;;;;N;;;;;
+E01E2;VARIATION SELECTOR-243;Mn;0;NSM;;;;;N;;;;;
+E01E3;VARIATION SELECTOR-244;Mn;0;NSM;;;;;N;;;;;
+E01E4;VARIATION SELECTOR-245;Mn;0;NSM;;;;;N;;;;;
+E01E5;VARIATION SELECTOR-246;Mn;0;NSM;;;;;N;;;;;
+E01E6;VARIATION SELECTOR-247;Mn;0;NSM;;;;;N;;;;;
+E01E7;VARIATION SELECTOR-248;Mn;0;NSM;;;;;N;;;;;
+E01E8;VARIATION SELECTOR-249;Mn;0;NSM;;;;;N;;;;;
+E01E9;VARIATION SELECTOR-250;Mn;0;NSM;;;;;N;;;;;
+E01EA;VARIATION SELECTOR-251;Mn;0;NSM;;;;;N;;;;;
+E01EB;VARIATION SELECTOR-252;Mn;0;NSM;;;;;N;;;;;
+E01EC;VARIATION SELECTOR-253;Mn;0;NSM;;;;;N;;;;;
+E01ED;VARIATION SELECTOR-254;Mn;0;NSM;;;;;N;;;;;
+E01EE;VARIATION SELECTOR-255;Mn;0;NSM;;;;;N;;;;;
+E01EF;VARIATION SELECTOR-256;Mn;0;NSM;;;;;N;;;;;
diff --git a/tests/uniname/test-uninames.c b/tests/uniname/test-uninames.c
new file mode 100644
index 00000000..1408434b
--- /dev/null
+++ b/tests/uniname/test-uninames.c
@@ -0,0 +1,261 @@
+/* Test the Unicode character name functions.
+ Copyright (C) 2000-2003, 2005, 2007, 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "xalloc.h"
+#include "uniname.h"
+#include "progname.h"
+
+/* The names according to the UnicodeData.txt file, modified to contain the
+ Hangul syllable names, as described in the Unicode 3.0 book. */
+const char * unicode_names [0x110000];
+
+/* Maximum length of a field in the UnicodeData.txt file. */
+#define FIELDLEN 120
+
+/* Reads the next field from STREAM. The buffer BUFFER has size FIELDLEN.
+ Reads up to (but excluding) DELIM.
+ Returns 1 when a field was successfully read, otherwise 0. */
+static int
+getfield (FILE *stream, char *buffer, int delim)
+{
+ int count = 0;
+ int c;
+
+ for (; (c = getc (stream)), (c != EOF && c != delim); )
+ {
+ /* Put c into the buffer. */
+ if (++count >= FIELDLEN - 1)
+ {
+ fprintf (stderr, "field too long\n");
+ exit (EXIT_FAILURE);
+ }
+ *buffer++ = c;
+ }
+
+ if (c == EOF)
+ return 0;
+
+ *buffer = '\0';
+ return 1;
+}
+
+/* Stores in unicode_names[] the relevant contents of the UnicodeData.txt
+ file. */
+static void
+fill_names (const char *unicodedata_filename)
+{
+ unsigned int i;
+ FILE *stream;
+ char field0[FIELDLEN];
+ char field1[FIELDLEN];
+ int lineno = 0;
+
+ for (i = 0; i < 0x110000; i++)
+ unicode_names[i] = NULL;
+
+ stream = fopen (unicodedata_filename, "r");
+ if (stream == NULL)
+ {
+ fprintf (stderr, "error during fopen of '%s'\n", unicodedata_filename);
+ exit (EXIT_FAILURE);
+ }
+
+ for (;;)
+ {
+ int n;
+ int c;
+
+ lineno++;
+ n = getfield (stream, field0, ';');
+ n += getfield (stream, field1, ';');
+ if (n == 0)
+ break;
+ if (n != 2)
+ {
+ fprintf (stderr, "short line in '%s':%d\n",
+ unicodedata_filename, lineno);
+ exit (EXIT_FAILURE);
+ }
+ for (; (c = getc (stream)), (c != EOF && c != '\n'); )
+ ;
+ i = strtoul (field0, NULL, 16);
+ if (i >= 0x110000)
+ {
+ fprintf (stderr, "index too large\n");
+ exit (EXIT_FAILURE);
+ }
+ unicode_names[i] = xstrdup (field1);
+ }
+ if (ferror (stream) || fclose (stream))
+ {
+ fprintf (stderr, "error reading from '%s'\n", unicodedata_filename);
+ exit (1);
+ }
+}
+
+/* Perform an exhaustive test of the unicode_character_name function. */
+static int
+test_name_lookup ()
+{
+ int error = 0;
+ unsigned int i;
+ char buf[UNINAME_MAX];
+
+ for (i = 0; i < 0x11000; i++)
+ {
+ char *result = unicode_character_name (i, buf);
+
+ if (unicode_names[i] != NULL)
+ {
+ if (result == NULL)
+ {
+ fprintf (stderr, "\\u%04X name lookup failed!\n", i);
+ error = 1;
+ }
+ else if (strcmp (result, unicode_names[i]) != 0)
+ {
+ fprintf (stderr, "\\u%04X name lookup returned wrong name: %s\n",
+ i, result);
+ error = 1;
+ }
+ }
+ else
+ {
+ if (result != NULL)
+ {
+ fprintf (stderr, "\\u%04X name lookup returned wrong name: %s\n",
+ i, result);
+ error = 1;
+ }
+ }
+ }
+
+ for (i = 0x110000; i < 0x1000000; i++)
+ {
+ char *result = unicode_character_name (i, buf);
+
+ if (result != NULL)
+ {
+ fprintf (stderr, "\\u%04X name lookup returned wrong name: %s\n",
+ i, result);
+ error = 1;
+ }
+ }
+
+ return error;
+}
+
+/* Perform a test of the unicode_name_character function. */
+static int
+test_inverse_lookup ()
+{
+ int error = 0;
+ unsigned int i;
+
+ /* First, verify all valid character names are recognized. */
+ for (i = 0; i < 0x110000; i++)
+ if (unicode_names[i] != NULL)
+ {
+ unsigned int result = unicode_name_character (unicode_names[i]);
+ if (result != i)
+ {
+ if (result == UNINAME_INVALID)
+ fprintf (stderr, "inverse name lookup of \"%s\" failed\n",
+ unicode_names[i]);
+ else
+ fprintf (stderr,
+ "inverse name lookup of \"%s\" returned 0x%04X\n",
+ unicode_names[i], result);
+ error = 1;
+ }
+ }
+
+ /* Second, generate random but likely names and verify they are not
+ recognized unless really valid. */
+ for (i = 0; i < 10000; i++)
+ {
+ unsigned int i1, i2;
+ const char *s1;
+ const char *s2;
+ unsigned int l1, l2, j1, j2;
+ char buf[2*UNINAME_MAX];
+ unsigned int result;
+
+ do i1 = ((rand () % 0x11) << 16)
+ + ((rand () & 0xff) << 8)
+ + (rand () & 0xff);
+ while (unicode_names[i1] == NULL);
+
+ do i2 = ((rand () % 0x11) << 16)
+ + ((rand () & 0xff) << 8)
+ + (rand () & 0xff);
+ while (unicode_names[i2] == NULL);
+
+ s1 = unicode_names[i1];
+ l1 = strlen (s1);
+ s2 = unicode_names[i2];
+ l2 = strlen (s2);
+
+ /* Concatenate a starting piece of s1 with an ending piece of s2. */
+ for (j1 = 1; j1 <= l1; j1++)
+ if (j1 == l1 || s1[j1] == ' ')
+ for (j2 = 0; j2 < l2; j2++)
+ if (j2 == 0 || s2[j2-1] == ' ')
+ {
+ memcpy (buf, s1, j1);
+ buf[j1] = ' ';
+ memcpy (buf + j1 + 1, s2 + j2, l2 - j2 + 1);
+
+ result = unicode_name_character (buf);
+ if (result != UNINAME_INVALID
+ && !(unicode_names[result] != NULL
+ && strcmp (unicode_names[result], buf) == 0))
+ {
+ fprintf (stderr,
+ "inverse name lookup of \"%s\" returned 0x%04X\n",
+ unicode_names[i], result);
+ error = 1;
+ }
+ }
+ }
+
+ /* Third, some extreme case that used to loop. */
+ if (unicode_name_character ("A A") != UNINAME_INVALID)
+ error = 1;
+
+ return error;
+}
+
+int
+main (int argc, char *argv[])
+{
+ int error = 0;
+
+ set_program_name (argv[0]);
+
+ fill_names (argv[1]);
+
+ error |= test_name_lookup ();
+ error |= test_inverse_lookup ();
+
+ return error;
+}
diff --git a/tests/uniname/test-uninames.sh b/tests/uniname/test-uninames.sh
new file mode 100755
index 00000000..f26c275e
--- /dev/null
+++ b/tests/uniname/test-uninames.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec ./test-uninames${EXEEXT} "$srcdir/uniname/UnicodeDataNames.txt"
diff --git a/tests/uninorm/NormalizationTest.txt b/tests/uninorm/NormalizationTest.txt
new file mode 100644
index 00000000..0bb97659
--- /dev/null
+++ b/tests/uninorm/NormalizationTest.txt
@@ -0,0 +1,17819 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@Part0
+
+1E0A;1E0A;0044 0307;1E0A;0044 0307;
+1E0C;1E0C;0044 0323;1E0C;0044 0323;
+1E0A 0323;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+1E0C 0307;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+0044 0307 0323;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+0044 0323 0307;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+1E0A 031B;1E0A 031B;0044 031B 0307;1E0A 031B;0044 031B 0307;
+1E0C 031B;1E0C 031B;0044 031B 0323;1E0C 031B;0044 031B 0323;
+1E0A 031B 0323;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+1E0C 031B 0307;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+0044 031B 0307 0323;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+00C8;00C8;0045 0300;00C8;0045 0300;
+0112;0112;0045 0304;0112;0045 0304;
+0045 0300;00C8;0045 0300;00C8;0045 0300;
+0045 0304;0112;0045 0304;0112;0045 0304;
+1E14;1E14;0045 0304 0300;1E14;0045 0304 0300;
+0112 0300;1E14;0045 0304 0300;1E14;0045 0304 0300;
+1E14 0304;1E14 0304;0045 0304 0300 0304;1E14 0304;0045 0304 0300 0304;
+0045 0304 0300;1E14;0045 0304 0300;1E14;0045 0304 0300;
+0045 0300 0304;00C8 0304;0045 0300 0304;00C8 0304;0045 0300 0304;
+05B8 05B9 05B1 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;
+0592 05B7 05BC 05A5 05B0 05C0 05C4 05AD;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;
+
+@Part1
+
+
+00A0;00A0;00A0;0020;0020;
+00A8;00A8;00A8;0020 0308;0020 0308;
+00AA;00AA;00AA;0061;0061;
+00AF;00AF;00AF;0020 0304;0020 0304;
+00B2;00B2;00B2;0032;0032;
+00B3;00B3;00B3;0033;0033;
+00B4;00B4;00B4;0020 0301;0020 0301;
+00B5;00B5;00B5;03BC;03BC;
+00B8;00B8;00B8;0020 0327;0020 0327;
+00B9;00B9;00B9;0031;0031;
+00BA;00BA;00BA;006F;006F;
+00BC;00BC;00BC;0031 2044 0034;0031 2044 0034;
+00BD;00BD;00BD;0031 2044 0032;0031 2044 0032;
+00BE;00BE;00BE;0033 2044 0034;0033 2044 0034;
+00C0;00C0;0041 0300;00C0;0041 0300;
+00C1;00C1;0041 0301;00C1;0041 0301;
+00C2;00C2;0041 0302;00C2;0041 0302;
+00C3;00C3;0041 0303;00C3;0041 0303;
+00C4;00C4;0041 0308;00C4;0041 0308;
+00C5;00C5;0041 030A;00C5;0041 030A;
+00C7;00C7;0043 0327;00C7;0043 0327;
+00C8;00C8;0045 0300;00C8;0045 0300;
+00C9;00C9;0045 0301;00C9;0045 0301;
+00CA;00CA;0045 0302;00CA;0045 0302;
+00CB;00CB;0045 0308;00CB;0045 0308;
+00CC;00CC;0049 0300;00CC;0049 0300;
+00CD;00CD;0049 0301;00CD;0049 0301;
+00CE;00CE;0049 0302;00CE;0049 0302;
+00CF;00CF;0049 0308;00CF;0049 0308;
+00D1;00D1;004E 0303;00D1;004E 0303;
+00D2;00D2;004F 0300;00D2;004F 0300;
+00D3;00D3;004F 0301;00D3;004F 0301;
+00D4;00D4;004F 0302;00D4;004F 0302;
+00D5;00D5;004F 0303;00D5;004F 0303;
+00D6;00D6;004F 0308;00D6;004F 0308;
+00D9;00D9;0055 0300;00D9;0055 0300;
+00DA;00DA;0055 0301;00DA;0055 0301;
+00DB;00DB;0055 0302;00DB;0055 0302;
+00DC;00DC;0055 0308;00DC;0055 0308;
+00DD;00DD;0059 0301;00DD;0059 0301;
+00E0;00E0;0061 0300;00E0;0061 0300;
+00E1;00E1;0061 0301;00E1;0061 0301;
+00E2;00E2;0061 0302;00E2;0061 0302;
+00E3;00E3;0061 0303;00E3;0061 0303;
+00E4;00E4;0061 0308;00E4;0061 0308;
+00E5;00E5;0061 030A;00E5;0061 030A;
+00E7;00E7;0063 0327;00E7;0063 0327;
+00E8;00E8;0065 0300;00E8;0065 0300;
+00E9;00E9;0065 0301;00E9;0065 0301;
+00EA;00EA;0065 0302;00EA;0065 0302;
+00EB;00EB;0065 0308;00EB;0065 0308;
+00EC;00EC;0069 0300;00EC;0069 0300;
+00ED;00ED;0069 0301;00ED;0069 0301;
+00EE;00EE;0069 0302;00EE;0069 0302;
+00EF;00EF;0069 0308;00EF;0069 0308;
+00F1;00F1;006E 0303;00F1;006E 0303;
+00F2;00F2;006F 0300;00F2;006F 0300;
+00F3;00F3;006F 0301;00F3;006F 0301;
+00F4;00F4;006F 0302;00F4;006F 0302;
+00F5;00F5;006F 0303;00F5;006F 0303;
+00F6;00F6;006F 0308;00F6;006F 0308;
+00F9;00F9;0075 0300;00F9;0075 0300;
+00FA;00FA;0075 0301;00FA;0075 0301;
+00FB;00FB;0075 0302;00FB;0075 0302;
+00FC;00FC;0075 0308;00FC;0075 0308;
+00FD;00FD;0079 0301;00FD;0079 0301;
+00FF;00FF;0079 0308;00FF;0079 0308;
+0100;0100;0041 0304;0100;0041 0304;
+0101;0101;0061 0304;0101;0061 0304;
+0102;0102;0041 0306;0102;0041 0306;
+0103;0103;0061 0306;0103;0061 0306;
+0104;0104;0041 0328;0104;0041 0328;
+0105;0105;0061 0328;0105;0061 0328;
+0106;0106;0043 0301;0106;0043 0301;
+0107;0107;0063 0301;0107;0063 0301;
+0108;0108;0043 0302;0108;0043 0302;
+0109;0109;0063 0302;0109;0063 0302;
+010A;010A;0043 0307;010A;0043 0307;
+010B;010B;0063 0307;010B;0063 0307;
+010C;010C;0043 030C;010C;0043 030C;
+010D;010D;0063 030C;010D;0063 030C;
+010E;010E;0044 030C;010E;0044 030C;
+010F;010F;0064 030C;010F;0064 030C;
+0112;0112;0045 0304;0112;0045 0304;
+0113;0113;0065 0304;0113;0065 0304;
+0114;0114;0045 0306;0114;0045 0306;
+0115;0115;0065 0306;0115;0065 0306;
+0116;0116;0045 0307;0116;0045 0307;
+0117;0117;0065 0307;0117;0065 0307;
+0118;0118;0045 0328;0118;0045 0328;
+0119;0119;0065 0328;0119;0065 0328;
+011A;011A;0045 030C;011A;0045 030C;
+011B;011B;0065 030C;011B;0065 030C;
+011C;011C;0047 0302;011C;0047 0302;
+011D;011D;0067 0302;011D;0067 0302;
+011E;011E;0047 0306;011E;0047 0306;
+011F;011F;0067 0306;011F;0067 0306;
+0120;0120;0047 0307;0120;0047 0307;
+0121;0121;0067 0307;0121;0067 0307;
+0122;0122;0047 0327;0122;0047 0327;
+0123;0123;0067 0327;0123;0067 0327;
+0124;0124;0048 0302;0124;0048 0302;
+0125;0125;0068 0302;0125;0068 0302;
+0128;0128;0049 0303;0128;0049 0303;
+0129;0129;0069 0303;0129;0069 0303;
+012A;012A;0049 0304;012A;0049 0304;
+012B;012B;0069 0304;012B;0069 0304;
+012C;012C;0049 0306;012C;0049 0306;
+012D;012D;0069 0306;012D;0069 0306;
+012E;012E;0049 0328;012E;0049 0328;
+012F;012F;0069 0328;012F;0069 0328;
+0130;0130;0049 0307;0130;0049 0307;
+0132;0132;0132;0049 004A;0049 004A;
+0133;0133;0133;0069 006A;0069 006A;
+0134;0134;004A 0302;0134;004A 0302;
+0135;0135;006A 0302;0135;006A 0302;
+0136;0136;004B 0327;0136;004B 0327;
+0137;0137;006B 0327;0137;006B 0327;
+0139;0139;004C 0301;0139;004C 0301;
+013A;013A;006C 0301;013A;006C 0301;
+013B;013B;004C 0327;013B;004C 0327;
+013C;013C;006C 0327;013C;006C 0327;
+013D;013D;004C 030C;013D;004C 030C;
+013E;013E;006C 030C;013E;006C 030C;
+013F;013F;013F;004C 00B7;004C 00B7;
+0140;0140;0140;006C 00B7;006C 00B7;
+0143;0143;004E 0301;0143;004E 0301;
+0144;0144;006E 0301;0144;006E 0301;
+0145;0145;004E 0327;0145;004E 0327;
+0146;0146;006E 0327;0146;006E 0327;
+0147;0147;004E 030C;0147;004E 030C;
+0148;0148;006E 030C;0148;006E 030C;
+0149;0149;0149;02BC 006E;02BC 006E;
+014C;014C;004F 0304;014C;004F 0304;
+014D;014D;006F 0304;014D;006F 0304;
+014E;014E;004F 0306;014E;004F 0306;
+014F;014F;006F 0306;014F;006F 0306;
+0150;0150;004F 030B;0150;004F 030B;
+0151;0151;006F 030B;0151;006F 030B;
+0154;0154;0052 0301;0154;0052 0301;
+0155;0155;0072 0301;0155;0072 0301;
+0156;0156;0052 0327;0156;0052 0327;
+0157;0157;0072 0327;0157;0072 0327;
+0158;0158;0052 030C;0158;0052 030C;
+0159;0159;0072 030C;0159;0072 030C;
+015A;015A;0053 0301;015A;0053 0301;
+015B;015B;0073 0301;015B;0073 0301;
+015C;015C;0053 0302;015C;0053 0302;
+015D;015D;0073 0302;015D;0073 0302;
+015E;015E;0053 0327;015E;0053 0327;
+015F;015F;0073 0327;015F;0073 0327;
+0160;0160;0053 030C;0160;0053 030C;
+0161;0161;0073 030C;0161;0073 030C;
+0162;0162;0054 0327;0162;0054 0327;
+0163;0163;0074 0327;0163;0074 0327;
+0164;0164;0054 030C;0164;0054 030C;
+0165;0165;0074 030C;0165;0074 030C;
+0168;0168;0055 0303;0168;0055 0303;
+0169;0169;0075 0303;0169;0075 0303;
+016A;016A;0055 0304;016A;0055 0304;
+016B;016B;0075 0304;016B;0075 0304;
+016C;016C;0055 0306;016C;0055 0306;
+016D;016D;0075 0306;016D;0075 0306;
+016E;016E;0055 030A;016E;0055 030A;
+016F;016F;0075 030A;016F;0075 030A;
+0170;0170;0055 030B;0170;0055 030B;
+0171;0171;0075 030B;0171;0075 030B;
+0172;0172;0055 0328;0172;0055 0328;
+0173;0173;0075 0328;0173;0075 0328;
+0174;0174;0057 0302;0174;0057 0302;
+0175;0175;0077 0302;0175;0077 0302;
+0176;0176;0059 0302;0176;0059 0302;
+0177;0177;0079 0302;0177;0079 0302;
+0178;0178;0059 0308;0178;0059 0308;
+0179;0179;005A 0301;0179;005A 0301;
+017A;017A;007A 0301;017A;007A 0301;
+017B;017B;005A 0307;017B;005A 0307;
+017C;017C;007A 0307;017C;007A 0307;
+017D;017D;005A 030C;017D;005A 030C;
+017E;017E;007A 030C;017E;007A 030C;
+017F;017F;017F;0073;0073;
+01A0;01A0;004F 031B;01A0;004F 031B;
+01A1;01A1;006F 031B;01A1;006F 031B;
+01AF;01AF;0055 031B;01AF;0055 031B;
+01B0;01B0;0075 031B;01B0;0075 031B;
+01C4;01C4;01C4;0044 017D;0044 005A 030C;
+01C5;01C5;01C5;0044 017E;0044 007A 030C;
+01C6;01C6;01C6;0064 017E;0064 007A 030C;
+01C7;01C7;01C7;004C 004A;004C 004A;
+01C8;01C8;01C8;004C 006A;004C 006A;
+01C9;01C9;01C9;006C 006A;006C 006A;
+01CA;01CA;01CA;004E 004A;004E 004A;
+01CB;01CB;01CB;004E 006A;004E 006A;
+01CC;01CC;01CC;006E 006A;006E 006A;
+01CD;01CD;0041 030C;01CD;0041 030C;
+01CE;01CE;0061 030C;01CE;0061 030C;
+01CF;01CF;0049 030C;01CF;0049 030C;
+01D0;01D0;0069 030C;01D0;0069 030C;
+01D1;01D1;004F 030C;01D1;004F 030C;
+01D2;01D2;006F 030C;01D2;006F 030C;
+01D3;01D3;0055 030C;01D3;0055 030C;
+01D4;01D4;0075 030C;01D4;0075 030C;
+01D5;01D5;0055 0308 0304;01D5;0055 0308 0304;
+01D6;01D6;0075 0308 0304;01D6;0075 0308 0304;
+01D7;01D7;0055 0308 0301;01D7;0055 0308 0301;
+01D8;01D8;0075 0308 0301;01D8;0075 0308 0301;
+01D9;01D9;0055 0308 030C;01D9;0055 0308 030C;
+01DA;01DA;0075 0308 030C;01DA;0075 0308 030C;
+01DB;01DB;0055 0308 0300;01DB;0055 0308 0300;
+01DC;01DC;0075 0308 0300;01DC;0075 0308 0300;
+01DE;01DE;0041 0308 0304;01DE;0041 0308 0304;
+01DF;01DF;0061 0308 0304;01DF;0061 0308 0304;
+01E0;01E0;0041 0307 0304;01E0;0041 0307 0304;
+01E1;01E1;0061 0307 0304;01E1;0061 0307 0304;
+01E2;01E2;00C6 0304;01E2;00C6 0304;
+01E3;01E3;00E6 0304;01E3;00E6 0304;
+01E6;01E6;0047 030C;01E6;0047 030C;
+01E7;01E7;0067 030C;01E7;0067 030C;
+01E8;01E8;004B 030C;01E8;004B 030C;
+01E9;01E9;006B 030C;01E9;006B 030C;
+01EA;01EA;004F 0328;01EA;004F 0328;
+01EB;01EB;006F 0328;01EB;006F 0328;
+01EC;01EC;004F 0328 0304;01EC;004F 0328 0304;
+01ED;01ED;006F 0328 0304;01ED;006F 0328 0304;
+01EE;01EE;01B7 030C;01EE;01B7 030C;
+01EF;01EF;0292 030C;01EF;0292 030C;
+01F0;01F0;006A 030C;01F0;006A 030C;
+01F1;01F1;01F1;0044 005A;0044 005A;
+01F2;01F2;01F2;0044 007A;0044 007A;
+01F3;01F3;01F3;0064 007A;0064 007A;
+01F4;01F4;0047 0301;01F4;0047 0301;
+01F5;01F5;0067 0301;01F5;0067 0301;
+01F8;01F8;004E 0300;01F8;004E 0300;
+01F9;01F9;006E 0300;01F9;006E 0300;
+01FA;01FA;0041 030A 0301;01FA;0041 030A 0301;
+01FB;01FB;0061 030A 0301;01FB;0061 030A 0301;
+01FC;01FC;00C6 0301;01FC;00C6 0301;
+01FD;01FD;00E6 0301;01FD;00E6 0301;
+01FE;01FE;00D8 0301;01FE;00D8 0301;
+01FF;01FF;00F8 0301;01FF;00F8 0301;
+0200;0200;0041 030F;0200;0041 030F;
+0201;0201;0061 030F;0201;0061 030F;
+0202;0202;0041 0311;0202;0041 0311;
+0203;0203;0061 0311;0203;0061 0311;
+0204;0204;0045 030F;0204;0045 030F;
+0205;0205;0065 030F;0205;0065 030F;
+0206;0206;0045 0311;0206;0045 0311;
+0207;0207;0065 0311;0207;0065 0311;
+0208;0208;0049 030F;0208;0049 030F;
+0209;0209;0069 030F;0209;0069 030F;
+020A;020A;0049 0311;020A;0049 0311;
+020B;020B;0069 0311;020B;0069 0311;
+020C;020C;004F 030F;020C;004F 030F;
+020D;020D;006F 030F;020D;006F 030F;
+020E;020E;004F 0311;020E;004F 0311;
+020F;020F;006F 0311;020F;006F 0311;
+0210;0210;0052 030F;0210;0052 030F;
+0211;0211;0072 030F;0211;0072 030F;
+0212;0212;0052 0311;0212;0052 0311;
+0213;0213;0072 0311;0213;0072 0311;
+0214;0214;0055 030F;0214;0055 030F;
+0215;0215;0075 030F;0215;0075 030F;
+0216;0216;0055 0311;0216;0055 0311;
+0217;0217;0075 0311;0217;0075 0311;
+0218;0218;0053 0326;0218;0053 0326;
+0219;0219;0073 0326;0219;0073 0326;
+021A;021A;0054 0326;021A;0054 0326;
+021B;021B;0074 0326;021B;0074 0326;
+021E;021E;0048 030C;021E;0048 030C;
+021F;021F;0068 030C;021F;0068 030C;
+0226;0226;0041 0307;0226;0041 0307;
+0227;0227;0061 0307;0227;0061 0307;
+0228;0228;0045 0327;0228;0045 0327;
+0229;0229;0065 0327;0229;0065 0327;
+022A;022A;004F 0308 0304;022A;004F 0308 0304;
+022B;022B;006F 0308 0304;022B;006F 0308 0304;
+022C;022C;004F 0303 0304;022C;004F 0303 0304;
+022D;022D;006F 0303 0304;022D;006F 0303 0304;
+022E;022E;004F 0307;022E;004F 0307;
+022F;022F;006F 0307;022F;006F 0307;
+0230;0230;004F 0307 0304;0230;004F 0307 0304;
+0231;0231;006F 0307 0304;0231;006F 0307 0304;
+0232;0232;0059 0304;0232;0059 0304;
+0233;0233;0079 0304;0233;0079 0304;
+02B0;02B0;02B0;0068;0068;
+02B1;02B1;02B1;0266;0266;
+02B2;02B2;02B2;006A;006A;
+02B3;02B3;02B3;0072;0072;
+02B4;02B4;02B4;0279;0279;
+02B5;02B5;02B5;027B;027B;
+02B6;02B6;02B6;0281;0281;
+02B7;02B7;02B7;0077;0077;
+02B8;02B8;02B8;0079;0079;
+02D8;02D8;02D8;0020 0306;0020 0306;
+02D9;02D9;02D9;0020 0307;0020 0307;
+02DA;02DA;02DA;0020 030A;0020 030A;
+02DB;02DB;02DB;0020 0328;0020 0328;
+02DC;02DC;02DC;0020 0303;0020 0303;
+02DD;02DD;02DD;0020 030B;0020 030B;
+02E0;02E0;02E0;0263;0263;
+02E1;02E1;02E1;006C;006C;
+02E2;02E2;02E2;0073;0073;
+02E3;02E3;02E3;0078;0078;
+02E4;02E4;02E4;0295;0295;
+0340;0300;0300;0300;0300;
+0341;0301;0301;0301;0301;
+0343;0313;0313;0313;0313;
+0344;0308 0301;0308 0301;0308 0301;0308 0301;
+0374;02B9;02B9;02B9;02B9;
+037A;037A;037A;0020 0345;0020 0345;
+037E;003B;003B;003B;003B;
+0384;0384;0384;0020 0301;0020 0301;
+0385;0385;00A8 0301;0020 0308 0301;0020 0308 0301;
+0386;0386;0391 0301;0386;0391 0301;
+0387;00B7;00B7;00B7;00B7;
+0388;0388;0395 0301;0388;0395 0301;
+0389;0389;0397 0301;0389;0397 0301;
+038A;038A;0399 0301;038A;0399 0301;
+038C;038C;039F 0301;038C;039F 0301;
+038E;038E;03A5 0301;038E;03A5 0301;
+038F;038F;03A9 0301;038F;03A9 0301;
+0390;0390;03B9 0308 0301;0390;03B9 0308 0301;
+03AA;03AA;0399 0308;03AA;0399 0308;
+03AB;03AB;03A5 0308;03AB;03A5 0308;
+03AC;03AC;03B1 0301;03AC;03B1 0301;
+03AD;03AD;03B5 0301;03AD;03B5 0301;
+03AE;03AE;03B7 0301;03AE;03B7 0301;
+03AF;03AF;03B9 0301;03AF;03B9 0301;
+03B0;03B0;03C5 0308 0301;03B0;03C5 0308 0301;
+03CA;03CA;03B9 0308;03CA;03B9 0308;
+03CB;03CB;03C5 0308;03CB;03C5 0308;
+03CC;03CC;03BF 0301;03CC;03BF 0301;
+03CD;03CD;03C5 0301;03CD;03C5 0301;
+03CE;03CE;03C9 0301;03CE;03C9 0301;
+03D0;03D0;03D0;03B2;03B2;
+03D1;03D1;03D1;03B8;03B8;
+03D2;03D2;03D2;03A5;03A5;
+03D3;03D3;03D2 0301;038E;03A5 0301;
+03D4;03D4;03D2 0308;03AB;03A5 0308;
+03D5;03D5;03D5;03C6;03C6;
+03D6;03D6;03D6;03C0;03C0;
+03F0;03F0;03F0;03BA;03BA;
+03F1;03F1;03F1;03C1;03C1;
+03F2;03F2;03F2;03C2;03C2;
+03F4;03F4;03F4;0398;0398;
+03F5;03F5;03F5;03B5;03B5;
+03F9;03F9;03F9;03A3;03A3;
+0400;0400;0415 0300;0400;0415 0300;
+0401;0401;0415 0308;0401;0415 0308;
+0403;0403;0413 0301;0403;0413 0301;
+0407;0407;0406 0308;0407;0406 0308;
+040C;040C;041A 0301;040C;041A 0301;
+040D;040D;0418 0300;040D;0418 0300;
+040E;040E;0423 0306;040E;0423 0306;
+0419;0419;0418 0306;0419;0418 0306;
+0439;0439;0438 0306;0439;0438 0306;
+0450;0450;0435 0300;0450;0435 0300;
+0451;0451;0435 0308;0451;0435 0308;
+0453;0453;0433 0301;0453;0433 0301;
+0457;0457;0456 0308;0457;0456 0308;
+045C;045C;043A 0301;045C;043A 0301;
+045D;045D;0438 0300;045D;0438 0300;
+045E;045E;0443 0306;045E;0443 0306;
+0476;0476;0474 030F;0476;0474 030F;
+0477;0477;0475 030F;0477;0475 030F;
+04C1;04C1;0416 0306;04C1;0416 0306;
+04C2;04C2;0436 0306;04C2;0436 0306;
+04D0;04D0;0410 0306;04D0;0410 0306;
+04D1;04D1;0430 0306;04D1;0430 0306;
+04D2;04D2;0410 0308;04D2;0410 0308;
+04D3;04D3;0430 0308;04D3;0430 0308;
+04D6;04D6;0415 0306;04D6;0415 0306;
+04D7;04D7;0435 0306;04D7;0435 0306;
+04DA;04DA;04D8 0308;04DA;04D8 0308;
+04DB;04DB;04D9 0308;04DB;04D9 0308;
+04DC;04DC;0416 0308;04DC;0416 0308;
+04DD;04DD;0436 0308;04DD;0436 0308;
+04DE;04DE;0417 0308;04DE;0417 0308;
+04DF;04DF;0437 0308;04DF;0437 0308;
+04E2;04E2;0418 0304;04E2;0418 0304;
+04E3;04E3;0438 0304;04E3;0438 0304;
+04E4;04E4;0418 0308;04E4;0418 0308;
+04E5;04E5;0438 0308;04E5;0438 0308;
+04E6;04E6;041E 0308;04E6;041E 0308;
+04E7;04E7;043E 0308;04E7;043E 0308;
+04EA;04EA;04E8 0308;04EA;04E8 0308;
+04EB;04EB;04E9 0308;04EB;04E9 0308;
+04EC;04EC;042D 0308;04EC;042D 0308;
+04ED;04ED;044D 0308;04ED;044D 0308;
+04EE;04EE;0423 0304;04EE;0423 0304;
+04EF;04EF;0443 0304;04EF;0443 0304;
+04F0;04F0;0423 0308;04F0;0423 0308;
+04F1;04F1;0443 0308;04F1;0443 0308;
+04F2;04F2;0423 030B;04F2;0423 030B;
+04F3;04F3;0443 030B;04F3;0443 030B;
+04F4;04F4;0427 0308;04F4;0427 0308;
+04F5;04F5;0447 0308;04F5;0447 0308;
+04F8;04F8;042B 0308;04F8;042B 0308;
+04F9;04F9;044B 0308;04F9;044B 0308;
+0587;0587;0587;0565 0582;0565 0582;
+0622;0622;0627 0653;0622;0627 0653;
+0623;0623;0627 0654;0623;0627 0654;
+0624;0624;0648 0654;0624;0648 0654;
+0625;0625;0627 0655;0625;0627 0655;
+0626;0626;064A 0654;0626;064A 0654;
+0675;0675;0675;0627 0674;0627 0674;
+0676;0676;0676;0648 0674;0648 0674;
+0677;0677;0677;06C7 0674;06C7 0674;
+0678;0678;0678;064A 0674;064A 0674;
+06C0;06C0;06D5 0654;06C0;06D5 0654;
+06C2;06C2;06C1 0654;06C2;06C1 0654;
+06D3;06D3;06D2 0654;06D3;06D2 0654;
+0929;0929;0928 093C;0929;0928 093C;
+0931;0931;0930 093C;0931;0930 093C;
+0934;0934;0933 093C;0934;0933 093C;
+0958;0915 093C;0915 093C;0915 093C;0915 093C;
+0959;0916 093C;0916 093C;0916 093C;0916 093C;
+095A;0917 093C;0917 093C;0917 093C;0917 093C;
+095B;091C 093C;091C 093C;091C 093C;091C 093C;
+095C;0921 093C;0921 093C;0921 093C;0921 093C;
+095D;0922 093C;0922 093C;0922 093C;0922 093C;
+095E;092B 093C;092B 093C;092B 093C;092B 093C;
+095F;092F 093C;092F 093C;092F 093C;092F 093C;
+09CB;09CB;09C7 09BE;09CB;09C7 09BE;
+09CC;09CC;09C7 09D7;09CC;09C7 09D7;
+09DC;09A1 09BC;09A1 09BC;09A1 09BC;09A1 09BC;
+09DD;09A2 09BC;09A2 09BC;09A2 09BC;09A2 09BC;
+09DF;09AF 09BC;09AF 09BC;09AF 09BC;09AF 09BC;
+0A33;0A32 0A3C;0A32 0A3C;0A32 0A3C;0A32 0A3C;
+0A36;0A38 0A3C;0A38 0A3C;0A38 0A3C;0A38 0A3C;
+0A59;0A16 0A3C;0A16 0A3C;0A16 0A3C;0A16 0A3C;
+0A5A;0A17 0A3C;0A17 0A3C;0A17 0A3C;0A17 0A3C;
+0A5B;0A1C 0A3C;0A1C 0A3C;0A1C 0A3C;0A1C 0A3C;
+0A5E;0A2B 0A3C;0A2B 0A3C;0A2B 0A3C;0A2B 0A3C;
+0B48;0B48;0B47 0B56;0B48;0B47 0B56;
+0B4B;0B4B;0B47 0B3E;0B4B;0B47 0B3E;
+0B4C;0B4C;0B47 0B57;0B4C;0B47 0B57;
+0B5C;0B21 0B3C;0B21 0B3C;0B21 0B3C;0B21 0B3C;
+0B5D;0B22 0B3C;0B22 0B3C;0B22 0B3C;0B22 0B3C;
+0B94;0B94;0B92 0BD7;0B94;0B92 0BD7;
+0BCA;0BCA;0BC6 0BBE;0BCA;0BC6 0BBE;
+0BCB;0BCB;0BC7 0BBE;0BCB;0BC7 0BBE;
+0BCC;0BCC;0BC6 0BD7;0BCC;0BC6 0BD7;
+0C48;0C48;0C46 0C56;0C48;0C46 0C56;
+0CC0;0CC0;0CBF 0CD5;0CC0;0CBF 0CD5;
+0CC7;0CC7;0CC6 0CD5;0CC7;0CC6 0CD5;
+0CC8;0CC8;0CC6 0CD6;0CC8;0CC6 0CD6;
+0CCA;0CCA;0CC6 0CC2;0CCA;0CC6 0CC2;
+0CCB;0CCB;0CC6 0CC2 0CD5;0CCB;0CC6 0CC2 0CD5;
+0D4A;0D4A;0D46 0D3E;0D4A;0D46 0D3E;
+0D4B;0D4B;0D47 0D3E;0D4B;0D47 0D3E;
+0D4C;0D4C;0D46 0D57;0D4C;0D46 0D57;
+0DDA;0DDA;0DD9 0DCA;0DDA;0DD9 0DCA;
+0DDC;0DDC;0DD9 0DCF;0DDC;0DD9 0DCF;
+0DDD;0DDD;0DD9 0DCF 0DCA;0DDD;0DD9 0DCF 0DCA;
+0DDE;0DDE;0DD9 0DDF;0DDE;0DD9 0DDF;
+0E33;0E33;0E33;0E4D 0E32;0E4D 0E32;
+0EB3;0EB3;0EB3;0ECD 0EB2;0ECD 0EB2;
+0EDC;0EDC;0EDC;0EAB 0E99;0EAB 0E99;
+0EDD;0EDD;0EDD;0EAB 0EA1;0EAB 0EA1;
+0F0C;0F0C;0F0C;0F0B;0F0B;
+0F43;0F42 0FB7;0F42 0FB7;0F42 0FB7;0F42 0FB7;
+0F4D;0F4C 0FB7;0F4C 0FB7;0F4C 0FB7;0F4C 0FB7;
+0F52;0F51 0FB7;0F51 0FB7;0F51 0FB7;0F51 0FB7;
+0F57;0F56 0FB7;0F56 0FB7;0F56 0FB7;0F56 0FB7;
+0F5C;0F5B 0FB7;0F5B 0FB7;0F5B 0FB7;0F5B 0FB7;
+0F69;0F40 0FB5;0F40 0FB5;0F40 0FB5;0F40 0FB5;
+0F73;0F71 0F72;0F71 0F72;0F71 0F72;0F71 0F72;
+0F75;0F71 0F74;0F71 0F74;0F71 0F74;0F71 0F74;
+0F76;0FB2 0F80;0FB2 0F80;0FB2 0F80;0FB2 0F80;
+0F77;0F77;0F77;0FB2 0F71 0F80;0FB2 0F71 0F80;
+0F78;0FB3 0F80;0FB3 0F80;0FB3 0F80;0FB3 0F80;
+0F79;0F79;0F79;0FB3 0F71 0F80;0FB3 0F71 0F80;
+0F81;0F71 0F80;0F71 0F80;0F71 0F80;0F71 0F80;
+0F93;0F92 0FB7;0F92 0FB7;0F92 0FB7;0F92 0FB7;
+0F9D;0F9C 0FB7;0F9C 0FB7;0F9C 0FB7;0F9C 0FB7;
+0FA2;0FA1 0FB7;0FA1 0FB7;0FA1 0FB7;0FA1 0FB7;
+0FA7;0FA6 0FB7;0FA6 0FB7;0FA6 0FB7;0FA6 0FB7;
+0FAC;0FAB 0FB7;0FAB 0FB7;0FAB 0FB7;0FAB 0FB7;
+0FB9;0F90 0FB5;0F90 0FB5;0F90 0FB5;0F90 0FB5;
+1026;1026;1025 102E;1026;1025 102E;
+10FC;10FC;10FC;10DC;10DC;
+1B06;1B06;1B05 1B35;1B06;1B05 1B35;
+1B08;1B08;1B07 1B35;1B08;1B07 1B35;
+1B0A;1B0A;1B09 1B35;1B0A;1B09 1B35;
+1B0C;1B0C;1B0B 1B35;1B0C;1B0B 1B35;
+1B0E;1B0E;1B0D 1B35;1B0E;1B0D 1B35;
+1B12;1B12;1B11 1B35;1B12;1B11 1B35;
+1B3B;1B3B;1B3A 1B35;1B3B;1B3A 1B35;
+1B3D;1B3D;1B3C 1B35;1B3D;1B3C 1B35;
+1B40;1B40;1B3E 1B35;1B40;1B3E 1B35;
+1B41;1B41;1B3F 1B35;1B41;1B3F 1B35;
+1B43;1B43;1B42 1B35;1B43;1B42 1B35;
+1D2C;1D2C;1D2C;0041;0041;
+1D2D;1D2D;1D2D;00C6;00C6;
+1D2E;1D2E;1D2E;0042;0042;
+1D30;1D30;1D30;0044;0044;
+1D31;1D31;1D31;0045;0045;
+1D32;1D32;1D32;018E;018E;
+1D33;1D33;1D33;0047;0047;
+1D34;1D34;1D34;0048;0048;
+1D35;1D35;1D35;0049;0049;
+1D36;1D36;1D36;004A;004A;
+1D37;1D37;1D37;004B;004B;
+1D38;1D38;1D38;004C;004C;
+1D39;1D39;1D39;004D;004D;
+1D3A;1D3A;1D3A;004E;004E;
+1D3C;1D3C;1D3C;004F;004F;
+1D3D;1D3D;1D3D;0222;0222;
+1D3E;1D3E;1D3E;0050;0050;
+1D3F;1D3F;1D3F;0052;0052;
+1D40;1D40;1D40;0054;0054;
+1D41;1D41;1D41;0055;0055;
+1D42;1D42;1D42;0057;0057;
+1D43;1D43;1D43;0061;0061;
+1D44;1D44;1D44;0250;0250;
+1D45;1D45;1D45;0251;0251;
+1D46;1D46;1D46;1D02;1D02;
+1D47;1D47;1D47;0062;0062;
+1D48;1D48;1D48;0064;0064;
+1D49;1D49;1D49;0065;0065;
+1D4A;1D4A;1D4A;0259;0259;
+1D4B;1D4B;1D4B;025B;025B;
+1D4C;1D4C;1D4C;025C;025C;
+1D4D;1D4D;1D4D;0067;0067;
+1D4F;1D4F;1D4F;006B;006B;
+1D50;1D50;1D50;006D;006D;
+1D51;1D51;1D51;014B;014B;
+1D52;1D52;1D52;006F;006F;
+1D53;1D53;1D53;0254;0254;
+1D54;1D54;1D54;1D16;1D16;
+1D55;1D55;1D55;1D17;1D17;
+1D56;1D56;1D56;0070;0070;
+1D57;1D57;1D57;0074;0074;
+1D58;1D58;1D58;0075;0075;
+1D59;1D59;1D59;1D1D;1D1D;
+1D5A;1D5A;1D5A;026F;026F;
+1D5B;1D5B;1D5B;0076;0076;
+1D5C;1D5C;1D5C;1D25;1D25;
+1D5D;1D5D;1D5D;03B2;03B2;
+1D5E;1D5E;1D5E;03B3;03B3;
+1D5F;1D5F;1D5F;03B4;03B4;
+1D60;1D60;1D60;03C6;03C6;
+1D61;1D61;1D61;03C7;03C7;
+1D62;1D62;1D62;0069;0069;
+1D63;1D63;1D63;0072;0072;
+1D64;1D64;1D64;0075;0075;
+1D65;1D65;1D65;0076;0076;
+1D66;1D66;1D66;03B2;03B2;
+1D67;1D67;1D67;03B3;03B3;
+1D68;1D68;1D68;03C1;03C1;
+1D69;1D69;1D69;03C6;03C6;
+1D6A;1D6A;1D6A;03C7;03C7;
+1D78;1D78;1D78;043D;043D;
+1D9B;1D9B;1D9B;0252;0252;
+1D9C;1D9C;1D9C;0063;0063;
+1D9D;1D9D;1D9D;0255;0255;
+1D9E;1D9E;1D9E;00F0;00F0;
+1D9F;1D9F;1D9F;025C;025C;
+1DA0;1DA0;1DA0;0066;0066;
+1DA1;1DA1;1DA1;025F;025F;
+1DA2;1DA2;1DA2;0261;0261;
+1DA3;1DA3;1DA3;0265;0265;
+1DA4;1DA4;1DA4;0268;0268;
+1DA5;1DA5;1DA5;0269;0269;
+1DA6;1DA6;1DA6;026A;026A;
+1DA7;1DA7;1DA7;1D7B;1D7B;
+1DA8;1DA8;1DA8;029D;029D;
+1DA9;1DA9;1DA9;026D;026D;
+1DAA;1DAA;1DAA;1D85;1D85;
+1DAB;1DAB;1DAB;029F;029F;
+1DAC;1DAC;1DAC;0271;0271;
+1DAD;1DAD;1DAD;0270;0270;
+1DAE;1DAE;1DAE;0272;0272;
+1DAF;1DAF;1DAF;0273;0273;
+1DB0;1DB0;1DB0;0274;0274;
+1DB1;1DB1;1DB1;0275;0275;
+1DB2;1DB2;1DB2;0278;0278;
+1DB3;1DB3;1DB3;0282;0282;
+1DB4;1DB4;1DB4;0283;0283;
+1DB5;1DB5;1DB5;01AB;01AB;
+1DB6;1DB6;1DB6;0289;0289;
+1DB7;1DB7;1DB7;028A;028A;
+1DB8;1DB8;1DB8;1D1C;1D1C;
+1DB9;1DB9;1DB9;028B;028B;
+1DBA;1DBA;1DBA;028C;028C;
+1DBB;1DBB;1DBB;007A;007A;
+1DBC;1DBC;1DBC;0290;0290;
+1DBD;1DBD;1DBD;0291;0291;
+1DBE;1DBE;1DBE;0292;0292;
+1DBF;1DBF;1DBF;03B8;03B8;
+1E00;1E00;0041 0325;1E00;0041 0325;
+1E01;1E01;0061 0325;1E01;0061 0325;
+1E02;1E02;0042 0307;1E02;0042 0307;
+1E03;1E03;0062 0307;1E03;0062 0307;
+1E04;1E04;0042 0323;1E04;0042 0323;
+1E05;1E05;0062 0323;1E05;0062 0323;
+1E06;1E06;0042 0331;1E06;0042 0331;
+1E07;1E07;0062 0331;1E07;0062 0331;
+1E08;1E08;0043 0327 0301;1E08;0043 0327 0301;
+1E09;1E09;0063 0327 0301;1E09;0063 0327 0301;
+1E0A;1E0A;0044 0307;1E0A;0044 0307;
+1E0B;1E0B;0064 0307;1E0B;0064 0307;
+1E0C;1E0C;0044 0323;1E0C;0044 0323;
+1E0D;1E0D;0064 0323;1E0D;0064 0323;
+1E0E;1E0E;0044 0331;1E0E;0044 0331;
+1E0F;1E0F;0064 0331;1E0F;0064 0331;
+1E10;1E10;0044 0327;1E10;0044 0327;
+1E11;1E11;0064 0327;1E11;0064 0327;
+1E12;1E12;0044 032D;1E12;0044 032D;
+1E13;1E13;0064 032D;1E13;0064 032D;
+1E14;1E14;0045 0304 0300;1E14;0045 0304 0300;
+1E15;1E15;0065 0304 0300;1E15;0065 0304 0300;
+1E16;1E16;0045 0304 0301;1E16;0045 0304 0301;
+1E17;1E17;0065 0304 0301;1E17;0065 0304 0301;
+1E18;1E18;0045 032D;1E18;0045 032D;
+1E19;1E19;0065 032D;1E19;0065 032D;
+1E1A;1E1A;0045 0330;1E1A;0045 0330;
+1E1B;1E1B;0065 0330;1E1B;0065 0330;
+1E1C;1E1C;0045 0327 0306;1E1C;0045 0327 0306;
+1E1D;1E1D;0065 0327 0306;1E1D;0065 0327 0306;
+1E1E;1E1E;0046 0307;1E1E;0046 0307;
+1E1F;1E1F;0066 0307;1E1F;0066 0307;
+1E20;1E20;0047 0304;1E20;0047 0304;
+1E21;1E21;0067 0304;1E21;0067 0304;
+1E22;1E22;0048 0307;1E22;0048 0307;
+1E23;1E23;0068 0307;1E23;0068 0307;
+1E24;1E24;0048 0323;1E24;0048 0323;
+1E25;1E25;0068 0323;1E25;0068 0323;
+1E26;1E26;0048 0308;1E26;0048 0308;
+1E27;1E27;0068 0308;1E27;0068 0308;
+1E28;1E28;0048 0327;1E28;0048 0327;
+1E29;1E29;0068 0327;1E29;0068 0327;
+1E2A;1E2A;0048 032E;1E2A;0048 032E;
+1E2B;1E2B;0068 032E;1E2B;0068 032E;
+1E2C;1E2C;0049 0330;1E2C;0049 0330;
+1E2D;1E2D;0069 0330;1E2D;0069 0330;
+1E2E;1E2E;0049 0308 0301;1E2E;0049 0308 0301;
+1E2F;1E2F;0069 0308 0301;1E2F;0069 0308 0301;
+1E30;1E30;004B 0301;1E30;004B 0301;
+1E31;1E31;006B 0301;1E31;006B 0301;
+1E32;1E32;004B 0323;1E32;004B 0323;
+1E33;1E33;006B 0323;1E33;006B 0323;
+1E34;1E34;004B 0331;1E34;004B 0331;
+1E35;1E35;006B 0331;1E35;006B 0331;
+1E36;1E36;004C 0323;1E36;004C 0323;
+1E37;1E37;006C 0323;1E37;006C 0323;
+1E38;1E38;004C 0323 0304;1E38;004C 0323 0304;
+1E39;1E39;006C 0323 0304;1E39;006C 0323 0304;
+1E3A;1E3A;004C 0331;1E3A;004C 0331;
+1E3B;1E3B;006C 0331;1E3B;006C 0331;
+1E3C;1E3C;004C 032D;1E3C;004C 032D;
+1E3D;1E3D;006C 032D;1E3D;006C 032D;
+1E3E;1E3E;004D 0301;1E3E;004D 0301;
+1E3F;1E3F;006D 0301;1E3F;006D 0301;
+1E40;1E40;004D 0307;1E40;004D 0307;
+1E41;1E41;006D 0307;1E41;006D 0307;
+1E42;1E42;004D 0323;1E42;004D 0323;
+1E43;1E43;006D 0323;1E43;006D 0323;
+1E44;1E44;004E 0307;1E44;004E 0307;
+1E45;1E45;006E 0307;1E45;006E 0307;
+1E46;1E46;004E 0323;1E46;004E 0323;
+1E47;1E47;006E 0323;1E47;006E 0323;
+1E48;1E48;004E 0331;1E48;004E 0331;
+1E49;1E49;006E 0331;1E49;006E 0331;
+1E4A;1E4A;004E 032D;1E4A;004E 032D;
+1E4B;1E4B;006E 032D;1E4B;006E 032D;
+1E4C;1E4C;004F 0303 0301;1E4C;004F 0303 0301;
+1E4D;1E4D;006F 0303 0301;1E4D;006F 0303 0301;
+1E4E;1E4E;004F 0303 0308;1E4E;004F 0303 0308;
+1E4F;1E4F;006F 0303 0308;1E4F;006F 0303 0308;
+1E50;1E50;004F 0304 0300;1E50;004F 0304 0300;
+1E51;1E51;006F 0304 0300;1E51;006F 0304 0300;
+1E52;1E52;004F 0304 0301;1E52;004F 0304 0301;
+1E53;1E53;006F 0304 0301;1E53;006F 0304 0301;
+1E54;1E54;0050 0301;1E54;0050 0301;
+1E55;1E55;0070 0301;1E55;0070 0301;
+1E56;1E56;0050 0307;1E56;0050 0307;
+1E57;1E57;0070 0307;1E57;0070 0307;
+1E58;1E58;0052 0307;1E58;0052 0307;
+1E59;1E59;0072 0307;1E59;0072 0307;
+1E5A;1E5A;0052 0323;1E5A;0052 0323;
+1E5B;1E5B;0072 0323;1E5B;0072 0323;
+1E5C;1E5C;0052 0323 0304;1E5C;0052 0323 0304;
+1E5D;1E5D;0072 0323 0304;1E5D;0072 0323 0304;
+1E5E;1E5E;0052 0331;1E5E;0052 0331;
+1E5F;1E5F;0072 0331;1E5F;0072 0331;
+1E60;1E60;0053 0307;1E60;0053 0307;
+1E61;1E61;0073 0307;1E61;0073 0307;
+1E62;1E62;0053 0323;1E62;0053 0323;
+1E63;1E63;0073 0323;1E63;0073 0323;
+1E64;1E64;0053 0301 0307;1E64;0053 0301 0307;
+1E65;1E65;0073 0301 0307;1E65;0073 0301 0307;
+1E66;1E66;0053 030C 0307;1E66;0053 030C 0307;
+1E67;1E67;0073 030C 0307;1E67;0073 030C 0307;
+1E68;1E68;0053 0323 0307;1E68;0053 0323 0307;
+1E69;1E69;0073 0323 0307;1E69;0073 0323 0307;
+1E6A;1E6A;0054 0307;1E6A;0054 0307;
+1E6B;1E6B;0074 0307;1E6B;0074 0307;
+1E6C;1E6C;0054 0323;1E6C;0054 0323;
+1E6D;1E6D;0074 0323;1E6D;0074 0323;
+1E6E;1E6E;0054 0331;1E6E;0054 0331;
+1E6F;1E6F;0074 0331;1E6F;0074 0331;
+1E70;1E70;0054 032D;1E70;0054 032D;
+1E71;1E71;0074 032D;1E71;0074 032D;
+1E72;1E72;0055 0324;1E72;0055 0324;
+1E73;1E73;0075 0324;1E73;0075 0324;
+1E74;1E74;0055 0330;1E74;0055 0330;
+1E75;1E75;0075 0330;1E75;0075 0330;
+1E76;1E76;0055 032D;1E76;0055 032D;
+1E77;1E77;0075 032D;1E77;0075 032D;
+1E78;1E78;0055 0303 0301;1E78;0055 0303 0301;
+1E79;1E79;0075 0303 0301;1E79;0075 0303 0301;
+1E7A;1E7A;0055 0304 0308;1E7A;0055 0304 0308;
+1E7B;1E7B;0075 0304 0308;1E7B;0075 0304 0308;
+1E7C;1E7C;0056 0303;1E7C;0056 0303;
+1E7D;1E7D;0076 0303;1E7D;0076 0303;
+1E7E;1E7E;0056 0323;1E7E;0056 0323;
+1E7F;1E7F;0076 0323;1E7F;0076 0323;
+1E80;1E80;0057 0300;1E80;0057 0300;
+1E81;1E81;0077 0300;1E81;0077 0300;
+1E82;1E82;0057 0301;1E82;0057 0301;
+1E83;1E83;0077 0301;1E83;0077 0301;
+1E84;1E84;0057 0308;1E84;0057 0308;
+1E85;1E85;0077 0308;1E85;0077 0308;
+1E86;1E86;0057 0307;1E86;0057 0307;
+1E87;1E87;0077 0307;1E87;0077 0307;
+1E88;1E88;0057 0323;1E88;0057 0323;
+1E89;1E89;0077 0323;1E89;0077 0323;
+1E8A;1E8A;0058 0307;1E8A;0058 0307;
+1E8B;1E8B;0078 0307;1E8B;0078 0307;
+1E8C;1E8C;0058 0308;1E8C;0058 0308;
+1E8D;1E8D;0078 0308;1E8D;0078 0308;
+1E8E;1E8E;0059 0307;1E8E;0059 0307;
+1E8F;1E8F;0079 0307;1E8F;0079 0307;
+1E90;1E90;005A 0302;1E90;005A 0302;
+1E91;1E91;007A 0302;1E91;007A 0302;
+1E92;1E92;005A 0323;1E92;005A 0323;
+1E93;1E93;007A 0323;1E93;007A 0323;
+1E94;1E94;005A 0331;1E94;005A 0331;
+1E95;1E95;007A 0331;1E95;007A 0331;
+1E96;1E96;0068 0331;1E96;0068 0331;
+1E97;1E97;0074 0308;1E97;0074 0308;
+1E98;1E98;0077 030A;1E98;0077 030A;
+1E99;1E99;0079 030A;1E99;0079 030A;
+1E9A;1E9A;1E9A;0061 02BE;0061 02BE;
+1E9B;1E9B;017F 0307;1E61;0073 0307;
+1EA0;1EA0;0041 0323;1EA0;0041 0323;
+1EA1;1EA1;0061 0323;1EA1;0061 0323;
+1EA2;1EA2;0041 0309;1EA2;0041 0309;
+1EA3;1EA3;0061 0309;1EA3;0061 0309;
+1EA4;1EA4;0041 0302 0301;1EA4;0041 0302 0301;
+1EA5;1EA5;0061 0302 0301;1EA5;0061 0302 0301;
+1EA6;1EA6;0041 0302 0300;1EA6;0041 0302 0300;
+1EA7;1EA7;0061 0302 0300;1EA7;0061 0302 0300;
+1EA8;1EA8;0041 0302 0309;1EA8;0041 0302 0309;
+1EA9;1EA9;0061 0302 0309;1EA9;0061 0302 0309;
+1EAA;1EAA;0041 0302 0303;1EAA;0041 0302 0303;
+1EAB;1EAB;0061 0302 0303;1EAB;0061 0302 0303;
+1EAC;1EAC;0041 0323 0302;1EAC;0041 0323 0302;
+1EAD;1EAD;0061 0323 0302;1EAD;0061 0323 0302;
+1EAE;1EAE;0041 0306 0301;1EAE;0041 0306 0301;
+1EAF;1EAF;0061 0306 0301;1EAF;0061 0306 0301;
+1EB0;1EB0;0041 0306 0300;1EB0;0041 0306 0300;
+1EB1;1EB1;0061 0306 0300;1EB1;0061 0306 0300;
+1EB2;1EB2;0041 0306 0309;1EB2;0041 0306 0309;
+1EB3;1EB3;0061 0306 0309;1EB3;0061 0306 0309;
+1EB4;1EB4;0041 0306 0303;1EB4;0041 0306 0303;
+1EB5;1EB5;0061 0306 0303;1EB5;0061 0306 0303;
+1EB6;1EB6;0041 0323 0306;1EB6;0041 0323 0306;
+1EB7;1EB7;0061 0323 0306;1EB7;0061 0323 0306;
+1EB8;1EB8;0045 0323;1EB8;0045 0323;
+1EB9;1EB9;0065 0323;1EB9;0065 0323;
+1EBA;1EBA;0045 0309;1EBA;0045 0309;
+1EBB;1EBB;0065 0309;1EBB;0065 0309;
+1EBC;1EBC;0045 0303;1EBC;0045 0303;
+1EBD;1EBD;0065 0303;1EBD;0065 0303;
+1EBE;1EBE;0045 0302 0301;1EBE;0045 0302 0301;
+1EBF;1EBF;0065 0302 0301;1EBF;0065 0302 0301;
+1EC0;1EC0;0045 0302 0300;1EC0;0045 0302 0300;
+1EC1;1EC1;0065 0302 0300;1EC1;0065 0302 0300;
+1EC2;1EC2;0045 0302 0309;1EC2;0045 0302 0309;
+1EC3;1EC3;0065 0302 0309;1EC3;0065 0302 0309;
+1EC4;1EC4;0045 0302 0303;1EC4;0045 0302 0303;
+1EC5;1EC5;0065 0302 0303;1EC5;0065 0302 0303;
+1EC6;1EC6;0045 0323 0302;1EC6;0045 0323 0302;
+1EC7;1EC7;0065 0323 0302;1EC7;0065 0323 0302;
+1EC8;1EC8;0049 0309;1EC8;0049 0309;
+1EC9;1EC9;0069 0309;1EC9;0069 0309;
+1ECA;1ECA;0049 0323;1ECA;0049 0323;
+1ECB;1ECB;0069 0323;1ECB;0069 0323;
+1ECC;1ECC;004F 0323;1ECC;004F 0323;
+1ECD;1ECD;006F 0323;1ECD;006F 0323;
+1ECE;1ECE;004F 0309;1ECE;004F 0309;
+1ECF;1ECF;006F 0309;1ECF;006F 0309;
+1ED0;1ED0;004F 0302 0301;1ED0;004F 0302 0301;
+1ED1;1ED1;006F 0302 0301;1ED1;006F 0302 0301;
+1ED2;1ED2;004F 0302 0300;1ED2;004F 0302 0300;
+1ED3;1ED3;006F 0302 0300;1ED3;006F 0302 0300;
+1ED4;1ED4;004F 0302 0309;1ED4;004F 0302 0309;
+1ED5;1ED5;006F 0302 0309;1ED5;006F 0302 0309;
+1ED6;1ED6;004F 0302 0303;1ED6;004F 0302 0303;
+1ED7;1ED7;006F 0302 0303;1ED7;006F 0302 0303;
+1ED8;1ED8;004F 0323 0302;1ED8;004F 0323 0302;
+1ED9;1ED9;006F 0323 0302;1ED9;006F 0323 0302;
+1EDA;1EDA;004F 031B 0301;1EDA;004F 031B 0301;
+1EDB;1EDB;006F 031B 0301;1EDB;006F 031B 0301;
+1EDC;1EDC;004F 031B 0300;1EDC;004F 031B 0300;
+1EDD;1EDD;006F 031B 0300;1EDD;006F 031B 0300;
+1EDE;1EDE;004F 031B 0309;1EDE;004F 031B 0309;
+1EDF;1EDF;006F 031B 0309;1EDF;006F 031B 0309;
+1EE0;1EE0;004F 031B 0303;1EE0;004F 031B 0303;
+1EE1;1EE1;006F 031B 0303;1EE1;006F 031B 0303;
+1EE2;1EE2;004F 031B 0323;1EE2;004F 031B 0323;
+1EE3;1EE3;006F 031B 0323;1EE3;006F 031B 0323;
+1EE4;1EE4;0055 0323;1EE4;0055 0323;
+1EE5;1EE5;0075 0323;1EE5;0075 0323;
+1EE6;1EE6;0055 0309;1EE6;0055 0309;
+1EE7;1EE7;0075 0309;1EE7;0075 0309;
+1EE8;1EE8;0055 031B 0301;1EE8;0055 031B 0301;
+1EE9;1EE9;0075 031B 0301;1EE9;0075 031B 0301;
+1EEA;1EEA;0055 031B 0300;1EEA;0055 031B 0300;
+1EEB;1EEB;0075 031B 0300;1EEB;0075 031B 0300;
+1EEC;1EEC;0055 031B 0309;1EEC;0055 031B 0309;
+1EED;1EED;0075 031B 0309;1EED;0075 031B 0309;
+1EEE;1EEE;0055 031B 0303;1EEE;0055 031B 0303;
+1EEF;1EEF;0075 031B 0303;1EEF;0075 031B 0303;
+1EF0;1EF0;0055 031B 0323;1EF0;0055 031B 0323;
+1EF1;1EF1;0075 031B 0323;1EF1;0075 031B 0323;
+1EF2;1EF2;0059 0300;1EF2;0059 0300;
+1EF3;1EF3;0079 0300;1EF3;0079 0300;
+1EF4;1EF4;0059 0323;1EF4;0059 0323;
+1EF5;1EF5;0079 0323;1EF5;0079 0323;
+1EF6;1EF6;0059 0309;1EF6;0059 0309;
+1EF7;1EF7;0079 0309;1EF7;0079 0309;
+1EF8;1EF8;0059 0303;1EF8;0059 0303;
+1EF9;1EF9;0079 0303;1EF9;0079 0303;
+1F00;1F00;03B1 0313;1F00;03B1 0313;
+1F01;1F01;03B1 0314;1F01;03B1 0314;
+1F02;1F02;03B1 0313 0300;1F02;03B1 0313 0300;
+1F03;1F03;03B1 0314 0300;1F03;03B1 0314 0300;
+1F04;1F04;03B1 0313 0301;1F04;03B1 0313 0301;
+1F05;1F05;03B1 0314 0301;1F05;03B1 0314 0301;
+1F06;1F06;03B1 0313 0342;1F06;03B1 0313 0342;
+1F07;1F07;03B1 0314 0342;1F07;03B1 0314 0342;
+1F08;1F08;0391 0313;1F08;0391 0313;
+1F09;1F09;0391 0314;1F09;0391 0314;
+1F0A;1F0A;0391 0313 0300;1F0A;0391 0313 0300;
+1F0B;1F0B;0391 0314 0300;1F0B;0391 0314 0300;
+1F0C;1F0C;0391 0313 0301;1F0C;0391 0313 0301;
+1F0D;1F0D;0391 0314 0301;1F0D;0391 0314 0301;
+1F0E;1F0E;0391 0313 0342;1F0E;0391 0313 0342;
+1F0F;1F0F;0391 0314 0342;1F0F;0391 0314 0342;
+1F10;1F10;03B5 0313;1F10;03B5 0313;
+1F11;1F11;03B5 0314;1F11;03B5 0314;
+1F12;1F12;03B5 0313 0300;1F12;03B5 0313 0300;
+1F13;1F13;03B5 0314 0300;1F13;03B5 0314 0300;
+1F14;1F14;03B5 0313 0301;1F14;03B5 0313 0301;
+1F15;1F15;03B5 0314 0301;1F15;03B5 0314 0301;
+1F18;1F18;0395 0313;1F18;0395 0313;
+1F19;1F19;0395 0314;1F19;0395 0314;
+1F1A;1F1A;0395 0313 0300;1F1A;0395 0313 0300;
+1F1B;1F1B;0395 0314 0300;1F1B;0395 0314 0300;
+1F1C;1F1C;0395 0313 0301;1F1C;0395 0313 0301;
+1F1D;1F1D;0395 0314 0301;1F1D;0395 0314 0301;
+1F20;1F20;03B7 0313;1F20;03B7 0313;
+1F21;1F21;03B7 0314;1F21;03B7 0314;
+1F22;1F22;03B7 0313 0300;1F22;03B7 0313 0300;
+1F23;1F23;03B7 0314 0300;1F23;03B7 0314 0300;
+1F24;1F24;03B7 0313 0301;1F24;03B7 0313 0301;
+1F25;1F25;03B7 0314 0301;1F25;03B7 0314 0301;
+1F26;1F26;03B7 0313 0342;1F26;03B7 0313 0342;
+1F27;1F27;03B7 0314 0342;1F27;03B7 0314 0342;
+1F28;1F28;0397 0313;1F28;0397 0313;
+1F29;1F29;0397 0314;1F29;0397 0314;
+1F2A;1F2A;0397 0313 0300;1F2A;0397 0313 0300;
+1F2B;1F2B;0397 0314 0300;1F2B;0397 0314 0300;
+1F2C;1F2C;0397 0313 0301;1F2C;0397 0313 0301;
+1F2D;1F2D;0397 0314 0301;1F2D;0397 0314 0301;
+1F2E;1F2E;0397 0313 0342;1F2E;0397 0313 0342;
+1F2F;1F2F;0397 0314 0342;1F2F;0397 0314 0342;
+1F30;1F30;03B9 0313;1F30;03B9 0313;
+1F31;1F31;03B9 0314;1F31;03B9 0314;
+1F32;1F32;03B9 0313 0300;1F32;03B9 0313 0300;
+1F33;1F33;03B9 0314 0300;1F33;03B9 0314 0300;
+1F34;1F34;03B9 0313 0301;1F34;03B9 0313 0301;
+1F35;1F35;03B9 0314 0301;1F35;03B9 0314 0301;
+1F36;1F36;03B9 0313 0342;1F36;03B9 0313 0342;
+1F37;1F37;03B9 0314 0342;1F37;03B9 0314 0342;
+1F38;1F38;0399 0313;1F38;0399 0313;
+1F39;1F39;0399 0314;1F39;0399 0314;
+1F3A;1F3A;0399 0313 0300;1F3A;0399 0313 0300;
+1F3B;1F3B;0399 0314 0300;1F3B;0399 0314 0300;
+1F3C;1F3C;0399 0313 0301;1F3C;0399 0313 0301;
+1F3D;1F3D;0399 0314 0301;1F3D;0399 0314 0301;
+1F3E;1F3E;0399 0313 0342;1F3E;0399 0313 0342;
+1F3F;1F3F;0399 0314 0342;1F3F;0399 0314 0342;
+1F40;1F40;03BF 0313;1F40;03BF 0313;
+1F41;1F41;03BF 0314;1F41;03BF 0314;
+1F42;1F42;03BF 0313 0300;1F42;03BF 0313 0300;
+1F43;1F43;03BF 0314 0300;1F43;03BF 0314 0300;
+1F44;1F44;03BF 0313 0301;1F44;03BF 0313 0301;
+1F45;1F45;03BF 0314 0301;1F45;03BF 0314 0301;
+1F48;1F48;039F 0313;1F48;039F 0313;
+1F49;1F49;039F 0314;1F49;039F 0314;
+1F4A;1F4A;039F 0313 0300;1F4A;039F 0313 0300;
+1F4B;1F4B;039F 0314 0300;1F4B;039F 0314 0300;
+1F4C;1F4C;039F 0313 0301;1F4C;039F 0313 0301;
+1F4D;1F4D;039F 0314 0301;1F4D;039F 0314 0301;
+1F50;1F50;03C5 0313;1F50;03C5 0313;
+1F51;1F51;03C5 0314;1F51;03C5 0314;
+1F52;1F52;03C5 0313 0300;1F52;03C5 0313 0300;
+1F53;1F53;03C5 0314 0300;1F53;03C5 0314 0300;
+1F54;1F54;03C5 0313 0301;1F54;03C5 0313 0301;
+1F55;1F55;03C5 0314 0301;1F55;03C5 0314 0301;
+1F56;1F56;03C5 0313 0342;1F56;03C5 0313 0342;
+1F57;1F57;03C5 0314 0342;1F57;03C5 0314 0342;
+1F59;1F59;03A5 0314;1F59;03A5 0314;
+1F5B;1F5B;03A5 0314 0300;1F5B;03A5 0314 0300;
+1F5D;1F5D;03A5 0314 0301;1F5D;03A5 0314 0301;
+1F5F;1F5F;03A5 0314 0342;1F5F;03A5 0314 0342;
+1F60;1F60;03C9 0313;1F60;03C9 0313;
+1F61;1F61;03C9 0314;1F61;03C9 0314;
+1F62;1F62;03C9 0313 0300;1F62;03C9 0313 0300;
+1F63;1F63;03C9 0314 0300;1F63;03C9 0314 0300;
+1F64;1F64;03C9 0313 0301;1F64;03C9 0313 0301;
+1F65;1F65;03C9 0314 0301;1F65;03C9 0314 0301;
+1F66;1F66;03C9 0313 0342;1F66;03C9 0313 0342;
+1F67;1F67;03C9 0314 0342;1F67;03C9 0314 0342;
+1F68;1F68;03A9 0313;1F68;03A9 0313;
+1F69;1F69;03A9 0314;1F69;03A9 0314;
+1F6A;1F6A;03A9 0313 0300;1F6A;03A9 0313 0300;
+1F6B;1F6B;03A9 0314 0300;1F6B;03A9 0314 0300;
+1F6C;1F6C;03A9 0313 0301;1F6C;03A9 0313 0301;
+1F6D;1F6D;03A9 0314 0301;1F6D;03A9 0314 0301;
+1F6E;1F6E;03A9 0313 0342;1F6E;03A9 0313 0342;
+1F6F;1F6F;03A9 0314 0342;1F6F;03A9 0314 0342;
+1F70;1F70;03B1 0300;1F70;03B1 0300;
+1F71;03AC;03B1 0301;03AC;03B1 0301;
+1F72;1F72;03B5 0300;1F72;03B5 0300;
+1F73;03AD;03B5 0301;03AD;03B5 0301;
+1F74;1F74;03B7 0300;1F74;03B7 0300;
+1F75;03AE;03B7 0301;03AE;03B7 0301;
+1F76;1F76;03B9 0300;1F76;03B9 0300;
+1F77;03AF;03B9 0301;03AF;03B9 0301;
+1F78;1F78;03BF 0300;1F78;03BF 0300;
+1F79;03CC;03BF 0301;03CC;03BF 0301;
+1F7A;1F7A;03C5 0300;1F7A;03C5 0300;
+1F7B;03CD;03C5 0301;03CD;03C5 0301;
+1F7C;1F7C;03C9 0300;1F7C;03C9 0300;
+1F7D;03CE;03C9 0301;03CE;03C9 0301;
+1F80;1F80;03B1 0313 0345;1F80;03B1 0313 0345;
+1F81;1F81;03B1 0314 0345;1F81;03B1 0314 0345;
+1F82;1F82;03B1 0313 0300 0345;1F82;03B1 0313 0300 0345;
+1F83;1F83;03B1 0314 0300 0345;1F83;03B1 0314 0300 0345;
+1F84;1F84;03B1 0313 0301 0345;1F84;03B1 0313 0301 0345;
+1F85;1F85;03B1 0314 0301 0345;1F85;03B1 0314 0301 0345;
+1F86;1F86;03B1 0313 0342 0345;1F86;03B1 0313 0342 0345;
+1F87;1F87;03B1 0314 0342 0345;1F87;03B1 0314 0342 0345;
+1F88;1F88;0391 0313 0345;1F88;0391 0313 0345;
+1F89;1F89;0391 0314 0345;1F89;0391 0314 0345;
+1F8A;1F8A;0391 0313 0300 0345;1F8A;0391 0313 0300 0345;
+1F8B;1F8B;0391 0314 0300 0345;1F8B;0391 0314 0300 0345;
+1F8C;1F8C;0391 0313 0301 0345;1F8C;0391 0313 0301 0345;
+1F8D;1F8D;0391 0314 0301 0345;1F8D;0391 0314 0301 0345;
+1F8E;1F8E;0391 0313 0342 0345;1F8E;0391 0313 0342 0345;
+1F8F;1F8F;0391 0314 0342 0345;1F8F;0391 0314 0342 0345;
+1F90;1F90;03B7 0313 0345;1F90;03B7 0313 0345;
+1F91;1F91;03B7 0314 0345;1F91;03B7 0314 0345;
+1F92;1F92;03B7 0313 0300 0345;1F92;03B7 0313 0300 0345;
+1F93;1F93;03B7 0314 0300 0345;1F93;03B7 0314 0300 0345;
+1F94;1F94;03B7 0313 0301 0345;1F94;03B7 0313 0301 0345;
+1F95;1F95;03B7 0314 0301 0345;1F95;03B7 0314 0301 0345;
+1F96;1F96;03B7 0313 0342 0345;1F96;03B7 0313 0342 0345;
+1F97;1F97;03B7 0314 0342 0345;1F97;03B7 0314 0342 0345;
+1F98;1F98;0397 0313 0345;1F98;0397 0313 0345;
+1F99;1F99;0397 0314 0345;1F99;0397 0314 0345;
+1F9A;1F9A;0397 0313 0300 0345;1F9A;0397 0313 0300 0345;
+1F9B;1F9B;0397 0314 0300 0345;1F9B;0397 0314 0300 0345;
+1F9C;1F9C;0397 0313 0301 0345;1F9C;0397 0313 0301 0345;
+1F9D;1F9D;0397 0314 0301 0345;1F9D;0397 0314 0301 0345;
+1F9E;1F9E;0397 0313 0342 0345;1F9E;0397 0313 0342 0345;
+1F9F;1F9F;0397 0314 0342 0345;1F9F;0397 0314 0342 0345;
+1FA0;1FA0;03C9 0313 0345;1FA0;03C9 0313 0345;
+1FA1;1FA1;03C9 0314 0345;1FA1;03C9 0314 0345;
+1FA2;1FA2;03C9 0313 0300 0345;1FA2;03C9 0313 0300 0345;
+1FA3;1FA3;03C9 0314 0300 0345;1FA3;03C9 0314 0300 0345;
+1FA4;1FA4;03C9 0313 0301 0345;1FA4;03C9 0313 0301 0345;
+1FA5;1FA5;03C9 0314 0301 0345;1FA5;03C9 0314 0301 0345;
+1FA6;1FA6;03C9 0313 0342 0345;1FA6;03C9 0313 0342 0345;
+1FA7;1FA7;03C9 0314 0342 0345;1FA7;03C9 0314 0342 0345;
+1FA8;1FA8;03A9 0313 0345;1FA8;03A9 0313 0345;
+1FA9;1FA9;03A9 0314 0345;1FA9;03A9 0314 0345;
+1FAA;1FAA;03A9 0313 0300 0345;1FAA;03A9 0313 0300 0345;
+1FAB;1FAB;03A9 0314 0300 0345;1FAB;03A9 0314 0300 0345;
+1FAC;1FAC;03A9 0313 0301 0345;1FAC;03A9 0313 0301 0345;
+1FAD;1FAD;03A9 0314 0301 0345;1FAD;03A9 0314 0301 0345;
+1FAE;1FAE;03A9 0313 0342 0345;1FAE;03A9 0313 0342 0345;
+1FAF;1FAF;03A9 0314 0342 0345;1FAF;03A9 0314 0342 0345;
+1FB0;1FB0;03B1 0306;1FB0;03B1 0306;
+1FB1;1FB1;03B1 0304;1FB1;03B1 0304;
+1FB2;1FB2;03B1 0300 0345;1FB2;03B1 0300 0345;
+1FB3;1FB3;03B1 0345;1FB3;03B1 0345;
+1FB4;1FB4;03B1 0301 0345;1FB4;03B1 0301 0345;
+1FB6;1FB6;03B1 0342;1FB6;03B1 0342;
+1FB7;1FB7;03B1 0342 0345;1FB7;03B1 0342 0345;
+1FB8;1FB8;0391 0306;1FB8;0391 0306;
+1FB9;1FB9;0391 0304;1FB9;0391 0304;
+1FBA;1FBA;0391 0300;1FBA;0391 0300;
+1FBB;0386;0391 0301;0386;0391 0301;
+1FBC;1FBC;0391 0345;1FBC;0391 0345;
+1FBD;1FBD;1FBD;0020 0313;0020 0313;
+1FBE;03B9;03B9;03B9;03B9;
+1FBF;1FBF;1FBF;0020 0313;0020 0313;
+1FC0;1FC0;1FC0;0020 0342;0020 0342;
+1FC1;1FC1;00A8 0342;0020 0308 0342;0020 0308 0342;
+1FC2;1FC2;03B7 0300 0345;1FC2;03B7 0300 0345;
+1FC3;1FC3;03B7 0345;1FC3;03B7 0345;
+1FC4;1FC4;03B7 0301 0345;1FC4;03B7 0301 0345;
+1FC6;1FC6;03B7 0342;1FC6;03B7 0342;
+1FC7;1FC7;03B7 0342 0345;1FC7;03B7 0342 0345;
+1FC8;1FC8;0395 0300;1FC8;0395 0300;
+1FC9;0388;0395 0301;0388;0395 0301;
+1FCA;1FCA;0397 0300;1FCA;0397 0300;
+1FCB;0389;0397 0301;0389;0397 0301;
+1FCC;1FCC;0397 0345;1FCC;0397 0345;
+1FCD;1FCD;1FBF 0300;0020 0313 0300;0020 0313 0300;
+1FCE;1FCE;1FBF 0301;0020 0313 0301;0020 0313 0301;
+1FCF;1FCF;1FBF 0342;0020 0313 0342;0020 0313 0342;
+1FD0;1FD0;03B9 0306;1FD0;03B9 0306;
+1FD1;1FD1;03B9 0304;1FD1;03B9 0304;
+1FD2;1FD2;03B9 0308 0300;1FD2;03B9 0308 0300;
+1FD3;0390;03B9 0308 0301;0390;03B9 0308 0301;
+1FD6;1FD6;03B9 0342;1FD6;03B9 0342;
+1FD7;1FD7;03B9 0308 0342;1FD7;03B9 0308 0342;
+1FD8;1FD8;0399 0306;1FD8;0399 0306;
+1FD9;1FD9;0399 0304;1FD9;0399 0304;
+1FDA;1FDA;0399 0300;1FDA;0399 0300;
+1FDB;038A;0399 0301;038A;0399 0301;
+1FDD;1FDD;1FFE 0300;0020 0314 0300;0020 0314 0300;
+1FDE;1FDE;1FFE 0301;0020 0314 0301;0020 0314 0301;
+1FDF;1FDF;1FFE 0342;0020 0314 0342;0020 0314 0342;
+1FE0;1FE0;03C5 0306;1FE0;03C5 0306;
+1FE1;1FE1;03C5 0304;1FE1;03C5 0304;
+1FE2;1FE2;03C5 0308 0300;1FE2;03C5 0308 0300;
+1FE3;03B0;03C5 0308 0301;03B0;03C5 0308 0301;
+1FE4;1FE4;03C1 0313;1FE4;03C1 0313;
+1FE5;1FE5;03C1 0314;1FE5;03C1 0314;
+1FE6;1FE6;03C5 0342;1FE6;03C5 0342;
+1FE7;1FE7;03C5 0308 0342;1FE7;03C5 0308 0342;
+1FE8;1FE8;03A5 0306;1FE8;03A5 0306;
+1FE9;1FE9;03A5 0304;1FE9;03A5 0304;
+1FEA;1FEA;03A5 0300;1FEA;03A5 0300;
+1FEB;038E;03A5 0301;038E;03A5 0301;
+1FEC;1FEC;03A1 0314;1FEC;03A1 0314;
+1FED;1FED;00A8 0300;0020 0308 0300;0020 0308 0300;
+1FEE;0385;00A8 0301;0020 0308 0301;0020 0308 0301;
+1FEF;0060;0060;0060;0060;
+1FF2;1FF2;03C9 0300 0345;1FF2;03C9 0300 0345;
+1FF3;1FF3;03C9 0345;1FF3;03C9 0345;
+1FF4;1FF4;03C9 0301 0345;1FF4;03C9 0301 0345;
+1FF6;1FF6;03C9 0342;1FF6;03C9 0342;
+1FF7;1FF7;03C9 0342 0345;1FF7;03C9 0342 0345;
+1FF8;1FF8;039F 0300;1FF8;039F 0300;
+1FF9;038C;039F 0301;038C;039F 0301;
+1FFA;1FFA;03A9 0300;1FFA;03A9 0300;
+1FFB;038F;03A9 0301;038F;03A9 0301;
+1FFC;1FFC;03A9 0345;1FFC;03A9 0345;
+1FFD;00B4;00B4;0020 0301;0020 0301;
+1FFE;1FFE;1FFE;0020 0314;0020 0314;
+2000;2002;2002;0020;0020;
+2001;2003;2003;0020;0020;
+2002;2002;2002;0020;0020;
+2003;2003;2003;0020;0020;
+2004;2004;2004;0020;0020;
+2005;2005;2005;0020;0020;
+2006;2006;2006;0020;0020;
+2007;2007;2007;0020;0020;
+2008;2008;2008;0020;0020;
+2009;2009;2009;0020;0020;
+200A;200A;200A;0020;0020;
+2011;2011;2011;2010;2010;
+2017;2017;2017;0020 0333;0020 0333;
+2024;2024;2024;002E;002E;
+2025;2025;2025;002E 002E;002E 002E;
+2026;2026;2026;002E 002E 002E;002E 002E 002E;
+202F;202F;202F;0020;0020;
+2033;2033;2033;2032 2032;2032 2032;
+2034;2034;2034;2032 2032 2032;2032 2032 2032;
+2036;2036;2036;2035 2035;2035 2035;
+2037;2037;2037;2035 2035 2035;2035 2035 2035;
+203C;203C;203C;0021 0021;0021 0021;
+203E;203E;203E;0020 0305;0020 0305;
+2047;2047;2047;003F 003F;003F 003F;
+2048;2048;2048;003F 0021;003F 0021;
+2049;2049;2049;0021 003F;0021 003F;
+2057;2057;2057;2032 2032 2032 2032;2032 2032 2032 2032;
+205F;205F;205F;0020;0020;
+2070;2070;2070;0030;0030;
+2071;2071;2071;0069;0069;
+2074;2074;2074;0034;0034;
+2075;2075;2075;0035;0035;
+2076;2076;2076;0036;0036;
+2077;2077;2077;0037;0037;
+2078;2078;2078;0038;0038;
+2079;2079;2079;0039;0039;
+207A;207A;207A;002B;002B;
+207B;207B;207B;2212;2212;
+207C;207C;207C;003D;003D;
+207D;207D;207D;0028;0028;
+207E;207E;207E;0029;0029;
+207F;207F;207F;006E;006E;
+2080;2080;2080;0030;0030;
+2081;2081;2081;0031;0031;
+2082;2082;2082;0032;0032;
+2083;2083;2083;0033;0033;
+2084;2084;2084;0034;0034;
+2085;2085;2085;0035;0035;
+2086;2086;2086;0036;0036;
+2087;2087;2087;0037;0037;
+2088;2088;2088;0038;0038;
+2089;2089;2089;0039;0039;
+208A;208A;208A;002B;002B;
+208B;208B;208B;2212;2212;
+208C;208C;208C;003D;003D;
+208D;208D;208D;0028;0028;
+208E;208E;208E;0029;0029;
+2090;2090;2090;0061;0061;
+2091;2091;2091;0065;0065;
+2092;2092;2092;006F;006F;
+2093;2093;2093;0078;0078;
+2094;2094;2094;0259;0259;
+20A8;20A8;20A8;0052 0073;0052 0073;
+2100;2100;2100;0061 002F 0063;0061 002F 0063;
+2101;2101;2101;0061 002F 0073;0061 002F 0073;
+2102;2102;2102;0043;0043;
+2103;2103;2103;00B0 0043;00B0 0043;
+2105;2105;2105;0063 002F 006F;0063 002F 006F;
+2106;2106;2106;0063 002F 0075;0063 002F 0075;
+2107;2107;2107;0190;0190;
+2109;2109;2109;00B0 0046;00B0 0046;
+210A;210A;210A;0067;0067;
+210B;210B;210B;0048;0048;
+210C;210C;210C;0048;0048;
+210D;210D;210D;0048;0048;
+210E;210E;210E;0068;0068;
+210F;210F;210F;0127;0127;
+2110;2110;2110;0049;0049;
+2111;2111;2111;0049;0049;
+2112;2112;2112;004C;004C;
+2113;2113;2113;006C;006C;
+2115;2115;2115;004E;004E;
+2116;2116;2116;004E 006F;004E 006F;
+2119;2119;2119;0050;0050;
+211A;211A;211A;0051;0051;
+211B;211B;211B;0052;0052;
+211C;211C;211C;0052;0052;
+211D;211D;211D;0052;0052;
+2120;2120;2120;0053 004D;0053 004D;
+2121;2121;2121;0054 0045 004C;0054 0045 004C;
+2122;2122;2122;0054 004D;0054 004D;
+2124;2124;2124;005A;005A;
+2126;03A9;03A9;03A9;03A9;
+2128;2128;2128;005A;005A;
+212A;004B;004B;004B;004B;
+212B;00C5;0041 030A;00C5;0041 030A;
+212C;212C;212C;0042;0042;
+212D;212D;212D;0043;0043;
+212F;212F;212F;0065;0065;
+2130;2130;2130;0045;0045;
+2131;2131;2131;0046;0046;
+2133;2133;2133;004D;004D;
+2134;2134;2134;006F;006F;
+2135;2135;2135;05D0;05D0;
+2136;2136;2136;05D1;05D1;
+2137;2137;2137;05D2;05D2;
+2138;2138;2138;05D3;05D3;
+2139;2139;2139;0069;0069;
+213B;213B;213B;0046 0041 0058;0046 0041 0058;
+213C;213C;213C;03C0;03C0;
+213D;213D;213D;03B3;03B3;
+213E;213E;213E;0393;0393;
+213F;213F;213F;03A0;03A0;
+2140;2140;2140;2211;2211;
+2145;2145;2145;0044;0044;
+2146;2146;2146;0064;0064;
+2147;2147;2147;0065;0065;
+2148;2148;2148;0069;0069;
+2149;2149;2149;006A;006A;
+2153;2153;2153;0031 2044 0033;0031 2044 0033;
+2154;2154;2154;0032 2044 0033;0032 2044 0033;
+2155;2155;2155;0031 2044 0035;0031 2044 0035;
+2156;2156;2156;0032 2044 0035;0032 2044 0035;
+2157;2157;2157;0033 2044 0035;0033 2044 0035;
+2158;2158;2158;0034 2044 0035;0034 2044 0035;
+2159;2159;2159;0031 2044 0036;0031 2044 0036;
+215A;215A;215A;0035 2044 0036;0035 2044 0036;
+215B;215B;215B;0031 2044 0038;0031 2044 0038;
+215C;215C;215C;0033 2044 0038;0033 2044 0038;
+215D;215D;215D;0035 2044 0038;0035 2044 0038;
+215E;215E;215E;0037 2044 0038;0037 2044 0038;
+215F;215F;215F;0031 2044;0031 2044;
+2160;2160;2160;0049;0049;
+2161;2161;2161;0049 0049;0049 0049;
+2162;2162;2162;0049 0049 0049;0049 0049 0049;
+2163;2163;2163;0049 0056;0049 0056;
+2164;2164;2164;0056;0056;
+2165;2165;2165;0056 0049;0056 0049;
+2166;2166;2166;0056 0049 0049;0056 0049 0049;
+2167;2167;2167;0056 0049 0049 0049;0056 0049 0049 0049;
+2168;2168;2168;0049 0058;0049 0058;
+2169;2169;2169;0058;0058;
+216A;216A;216A;0058 0049;0058 0049;
+216B;216B;216B;0058 0049 0049;0058 0049 0049;
+216C;216C;216C;004C;004C;
+216D;216D;216D;0043;0043;
+216E;216E;216E;0044;0044;
+216F;216F;216F;004D;004D;
+2170;2170;2170;0069;0069;
+2171;2171;2171;0069 0069;0069 0069;
+2172;2172;2172;0069 0069 0069;0069 0069 0069;
+2173;2173;2173;0069 0076;0069 0076;
+2174;2174;2174;0076;0076;
+2175;2175;2175;0076 0069;0076 0069;
+2176;2176;2176;0076 0069 0069;0076 0069 0069;
+2177;2177;2177;0076 0069 0069 0069;0076 0069 0069 0069;
+2178;2178;2178;0069 0078;0069 0078;
+2179;2179;2179;0078;0078;
+217A;217A;217A;0078 0069;0078 0069;
+217B;217B;217B;0078 0069 0069;0078 0069 0069;
+217C;217C;217C;006C;006C;
+217D;217D;217D;0063;0063;
+217E;217E;217E;0064;0064;
+217F;217F;217F;006D;006D;
+219A;219A;2190 0338;219A;2190 0338;
+219B;219B;2192 0338;219B;2192 0338;
+21AE;21AE;2194 0338;21AE;2194 0338;
+21CD;21CD;21D0 0338;21CD;21D0 0338;
+21CE;21CE;21D4 0338;21CE;21D4 0338;
+21CF;21CF;21D2 0338;21CF;21D2 0338;
+2204;2204;2203 0338;2204;2203 0338;
+2209;2209;2208 0338;2209;2208 0338;
+220C;220C;220B 0338;220C;220B 0338;
+2224;2224;2223 0338;2224;2223 0338;
+2226;2226;2225 0338;2226;2225 0338;
+222C;222C;222C;222B 222B;222B 222B;
+222D;222D;222D;222B 222B 222B;222B 222B 222B;
+222F;222F;222F;222E 222E;222E 222E;
+2230;2230;2230;222E 222E 222E;222E 222E 222E;
+2241;2241;223C 0338;2241;223C 0338;
+2244;2244;2243 0338;2244;2243 0338;
+2247;2247;2245 0338;2247;2245 0338;
+2249;2249;2248 0338;2249;2248 0338;
+2260;2260;003D 0338;2260;003D 0338;
+2262;2262;2261 0338;2262;2261 0338;
+226D;226D;224D 0338;226D;224D 0338;
+226E;226E;003C 0338;226E;003C 0338;
+226F;226F;003E 0338;226F;003E 0338;
+2270;2270;2264 0338;2270;2264 0338;
+2271;2271;2265 0338;2271;2265 0338;
+2274;2274;2272 0338;2274;2272 0338;
+2275;2275;2273 0338;2275;2273 0338;
+2278;2278;2276 0338;2278;2276 0338;
+2279;2279;2277 0338;2279;2277 0338;
+2280;2280;227A 0338;2280;227A 0338;
+2281;2281;227B 0338;2281;227B 0338;
+2284;2284;2282 0338;2284;2282 0338;
+2285;2285;2283 0338;2285;2283 0338;
+2288;2288;2286 0338;2288;2286 0338;
+2289;2289;2287 0338;2289;2287 0338;
+22AC;22AC;22A2 0338;22AC;22A2 0338;
+22AD;22AD;22A8 0338;22AD;22A8 0338;
+22AE;22AE;22A9 0338;22AE;22A9 0338;
+22AF;22AF;22AB 0338;22AF;22AB 0338;
+22E0;22E0;227C 0338;22E0;227C 0338;
+22E1;22E1;227D 0338;22E1;227D 0338;
+22E2;22E2;2291 0338;22E2;2291 0338;
+22E3;22E3;2292 0338;22E3;2292 0338;
+22EA;22EA;22B2 0338;22EA;22B2 0338;
+22EB;22EB;22B3 0338;22EB;22B3 0338;
+22EC;22EC;22B4 0338;22EC;22B4 0338;
+22ED;22ED;22B5 0338;22ED;22B5 0338;
+2329;3008;3008;3008;3008;
+232A;3009;3009;3009;3009;
+2460;2460;2460;0031;0031;
+2461;2461;2461;0032;0032;
+2462;2462;2462;0033;0033;
+2463;2463;2463;0034;0034;
+2464;2464;2464;0035;0035;
+2465;2465;2465;0036;0036;
+2466;2466;2466;0037;0037;
+2467;2467;2467;0038;0038;
+2468;2468;2468;0039;0039;
+2469;2469;2469;0031 0030;0031 0030;
+246A;246A;246A;0031 0031;0031 0031;
+246B;246B;246B;0031 0032;0031 0032;
+246C;246C;246C;0031 0033;0031 0033;
+246D;246D;246D;0031 0034;0031 0034;
+246E;246E;246E;0031 0035;0031 0035;
+246F;246F;246F;0031 0036;0031 0036;
+2470;2470;2470;0031 0037;0031 0037;
+2471;2471;2471;0031 0038;0031 0038;
+2472;2472;2472;0031 0039;0031 0039;
+2473;2473;2473;0032 0030;0032 0030;
+2474;2474;2474;0028 0031 0029;0028 0031 0029;
+2475;2475;2475;0028 0032 0029;0028 0032 0029;
+2476;2476;2476;0028 0033 0029;0028 0033 0029;
+2477;2477;2477;0028 0034 0029;0028 0034 0029;
+2478;2478;2478;0028 0035 0029;0028 0035 0029;
+2479;2479;2479;0028 0036 0029;0028 0036 0029;
+247A;247A;247A;0028 0037 0029;0028 0037 0029;
+247B;247B;247B;0028 0038 0029;0028 0038 0029;
+247C;247C;247C;0028 0039 0029;0028 0039 0029;
+247D;247D;247D;0028 0031 0030 0029;0028 0031 0030 0029;
+247E;247E;247E;0028 0031 0031 0029;0028 0031 0031 0029;
+247F;247F;247F;0028 0031 0032 0029;0028 0031 0032 0029;
+2480;2480;2480;0028 0031 0033 0029;0028 0031 0033 0029;
+2481;2481;2481;0028 0031 0034 0029;0028 0031 0034 0029;
+2482;2482;2482;0028 0031 0035 0029;0028 0031 0035 0029;
+2483;2483;2483;0028 0031 0036 0029;0028 0031 0036 0029;
+2484;2484;2484;0028 0031 0037 0029;0028 0031 0037 0029;
+2485;2485;2485;0028 0031 0038 0029;0028 0031 0038 0029;
+2486;2486;2486;0028 0031 0039 0029;0028 0031 0039 0029;
+2487;2487;2487;0028 0032 0030 0029;0028 0032 0030 0029;
+2488;2488;2488;0031 002E;0031 002E;
+2489;2489;2489;0032 002E;0032 002E;
+248A;248A;248A;0033 002E;0033 002E;
+248B;248B;248B;0034 002E;0034 002E;
+248C;248C;248C;0035 002E;0035 002E;
+248D;248D;248D;0036 002E;0036 002E;
+248E;248E;248E;0037 002E;0037 002E;
+248F;248F;248F;0038 002E;0038 002E;
+2490;2490;2490;0039 002E;0039 002E;
+2491;2491;2491;0031 0030 002E;0031 0030 002E;
+2492;2492;2492;0031 0031 002E;0031 0031 002E;
+2493;2493;2493;0031 0032 002E;0031 0032 002E;
+2494;2494;2494;0031 0033 002E;0031 0033 002E;
+2495;2495;2495;0031 0034 002E;0031 0034 002E;
+2496;2496;2496;0031 0035 002E;0031 0035 002E;
+2497;2497;2497;0031 0036 002E;0031 0036 002E;
+2498;2498;2498;0031 0037 002E;0031 0037 002E;
+2499;2499;2499;0031 0038 002E;0031 0038 002E;
+249A;249A;249A;0031 0039 002E;0031 0039 002E;
+249B;249B;249B;0032 0030 002E;0032 0030 002E;
+249C;249C;249C;0028 0061 0029;0028 0061 0029;
+249D;249D;249D;0028 0062 0029;0028 0062 0029;
+249E;249E;249E;0028 0063 0029;0028 0063 0029;
+249F;249F;249F;0028 0064 0029;0028 0064 0029;
+24A0;24A0;24A0;0028 0065 0029;0028 0065 0029;
+24A1;24A1;24A1;0028 0066 0029;0028 0066 0029;
+24A2;24A2;24A2;0028 0067 0029;0028 0067 0029;
+24A3;24A3;24A3;0028 0068 0029;0028 0068 0029;
+24A4;24A4;24A4;0028 0069 0029;0028 0069 0029;
+24A5;24A5;24A5;0028 006A 0029;0028 006A 0029;
+24A6;24A6;24A6;0028 006B 0029;0028 006B 0029;
+24A7;24A7;24A7;0028 006C 0029;0028 006C 0029;
+24A8;24A8;24A8;0028 006D 0029;0028 006D 0029;
+24A9;24A9;24A9;0028 006E 0029;0028 006E 0029;
+24AA;24AA;24AA;0028 006F 0029;0028 006F 0029;
+24AB;24AB;24AB;0028 0070 0029;0028 0070 0029;
+24AC;24AC;24AC;0028 0071 0029;0028 0071 0029;
+24AD;24AD;24AD;0028 0072 0029;0028 0072 0029;
+24AE;24AE;24AE;0028 0073 0029;0028 0073 0029;
+24AF;24AF;24AF;0028 0074 0029;0028 0074 0029;
+24B0;24B0;24B0;0028 0075 0029;0028 0075 0029;
+24B1;24B1;24B1;0028 0076 0029;0028 0076 0029;
+24B2;24B2;24B2;0028 0077 0029;0028 0077 0029;
+24B3;24B3;24B3;0028 0078 0029;0028 0078 0029;
+24B4;24B4;24B4;0028 0079 0029;0028 0079 0029;
+24B5;24B5;24B5;0028 007A 0029;0028 007A 0029;
+24B6;24B6;24B6;0041;0041;
+24B7;24B7;24B7;0042;0042;
+24B8;24B8;24B8;0043;0043;
+24B9;24B9;24B9;0044;0044;
+24BA;24BA;24BA;0045;0045;
+24BB;24BB;24BB;0046;0046;
+24BC;24BC;24BC;0047;0047;
+24BD;24BD;24BD;0048;0048;
+24BE;24BE;24BE;0049;0049;
+24BF;24BF;24BF;004A;004A;
+24C0;24C0;24C0;004B;004B;
+24C1;24C1;24C1;004C;004C;
+24C2;24C2;24C2;004D;004D;
+24C3;24C3;24C3;004E;004E;
+24C4;24C4;24C4;004F;004F;
+24C5;24C5;24C5;0050;0050;
+24C6;24C6;24C6;0051;0051;
+24C7;24C7;24C7;0052;0052;
+24C8;24C8;24C8;0053;0053;
+24C9;24C9;24C9;0054;0054;
+24CA;24CA;24CA;0055;0055;
+24CB;24CB;24CB;0056;0056;
+24CC;24CC;24CC;0057;0057;
+24CD;24CD;24CD;0058;0058;
+24CE;24CE;24CE;0059;0059;
+24CF;24CF;24CF;005A;005A;
+24D0;24D0;24D0;0061;0061;
+24D1;24D1;24D1;0062;0062;
+24D2;24D2;24D2;0063;0063;
+24D3;24D3;24D3;0064;0064;
+24D4;24D4;24D4;0065;0065;
+24D5;24D5;24D5;0066;0066;
+24D6;24D6;24D6;0067;0067;
+24D7;24D7;24D7;0068;0068;
+24D8;24D8;24D8;0069;0069;
+24D9;24D9;24D9;006A;006A;
+24DA;24DA;24DA;006B;006B;
+24DB;24DB;24DB;006C;006C;
+24DC;24DC;24DC;006D;006D;
+24DD;24DD;24DD;006E;006E;
+24DE;24DE;24DE;006F;006F;
+24DF;24DF;24DF;0070;0070;
+24E0;24E0;24E0;0071;0071;
+24E1;24E1;24E1;0072;0072;
+24E2;24E2;24E2;0073;0073;
+24E3;24E3;24E3;0074;0074;
+24E4;24E4;24E4;0075;0075;
+24E5;24E5;24E5;0076;0076;
+24E6;24E6;24E6;0077;0077;
+24E7;24E7;24E7;0078;0078;
+24E8;24E8;24E8;0079;0079;
+24E9;24E9;24E9;007A;007A;
+24EA;24EA;24EA;0030;0030;
+2A0C;2A0C;2A0C;222B 222B 222B 222B;222B 222B 222B 222B;
+2A74;2A74;2A74;003A 003A 003D;003A 003A 003D;
+2A75;2A75;2A75;003D 003D;003D 003D;
+2A76;2A76;2A76;003D 003D 003D;003D 003D 003D;
+2ADC;2ADD 0338;2ADD 0338;2ADD 0338;2ADD 0338;
+2C7C;2C7C;2C7C;006A;006A;
+2C7D;2C7D;2C7D;0056;0056;
+2D6F;2D6F;2D6F;2D61;2D61;
+2E9F;2E9F;2E9F;6BCD;6BCD;
+2EF3;2EF3;2EF3;9F9F;9F9F;
+2F00;2F00;2F00;4E00;4E00;
+2F01;2F01;2F01;4E28;4E28;
+2F02;2F02;2F02;4E36;4E36;
+2F03;2F03;2F03;4E3F;4E3F;
+2F04;2F04;2F04;4E59;4E59;
+2F05;2F05;2F05;4E85;4E85;
+2F06;2F06;2F06;4E8C;4E8C;
+2F07;2F07;2F07;4EA0;4EA0;
+2F08;2F08;2F08;4EBA;4EBA;
+2F09;2F09;2F09;513F;513F;
+2F0A;2F0A;2F0A;5165;5165;
+2F0B;2F0B;2F0B;516B;516B;
+2F0C;2F0C;2F0C;5182;5182;
+2F0D;2F0D;2F0D;5196;5196;
+2F0E;2F0E;2F0E;51AB;51AB;
+2F0F;2F0F;2F0F;51E0;51E0;
+2F10;2F10;2F10;51F5;51F5;
+2F11;2F11;2F11;5200;5200;
+2F12;2F12;2F12;529B;529B;
+2F13;2F13;2F13;52F9;52F9;
+2F14;2F14;2F14;5315;5315;
+2F15;2F15;2F15;531A;531A;
+2F16;2F16;2F16;5338;5338;
+2F17;2F17;2F17;5341;5341;
+2F18;2F18;2F18;535C;535C;
+2F19;2F19;2F19;5369;5369;
+2F1A;2F1A;2F1A;5382;5382;
+2F1B;2F1B;2F1B;53B6;53B6;
+2F1C;2F1C;2F1C;53C8;53C8;
+2F1D;2F1D;2F1D;53E3;53E3;
+2F1E;2F1E;2F1E;56D7;56D7;
+2F1F;2F1F;2F1F;571F;571F;
+2F20;2F20;2F20;58EB;58EB;
+2F21;2F21;2F21;5902;5902;
+2F22;2F22;2F22;590A;590A;
+2F23;2F23;2F23;5915;5915;
+2F24;2F24;2F24;5927;5927;
+2F25;2F25;2F25;5973;5973;
+2F26;2F26;2F26;5B50;5B50;
+2F27;2F27;2F27;5B80;5B80;
+2F28;2F28;2F28;5BF8;5BF8;
+2F29;2F29;2F29;5C0F;5C0F;
+2F2A;2F2A;2F2A;5C22;5C22;
+2F2B;2F2B;2F2B;5C38;5C38;
+2F2C;2F2C;2F2C;5C6E;5C6E;
+2F2D;2F2D;2F2D;5C71;5C71;
+2F2E;2F2E;2F2E;5DDB;5DDB;
+2F2F;2F2F;2F2F;5DE5;5DE5;
+2F30;2F30;2F30;5DF1;5DF1;
+2F31;2F31;2F31;5DFE;5DFE;
+2F32;2F32;2F32;5E72;5E72;
+2F33;2F33;2F33;5E7A;5E7A;
+2F34;2F34;2F34;5E7F;5E7F;
+2F35;2F35;2F35;5EF4;5EF4;
+2F36;2F36;2F36;5EFE;5EFE;
+2F37;2F37;2F37;5F0B;5F0B;
+2F38;2F38;2F38;5F13;5F13;
+2F39;2F39;2F39;5F50;5F50;
+2F3A;2F3A;2F3A;5F61;5F61;
+2F3B;2F3B;2F3B;5F73;5F73;
+2F3C;2F3C;2F3C;5FC3;5FC3;
+2F3D;2F3D;2F3D;6208;6208;
+2F3E;2F3E;2F3E;6236;6236;
+2F3F;2F3F;2F3F;624B;624B;
+2F40;2F40;2F40;652F;652F;
+2F41;2F41;2F41;6534;6534;
+2F42;2F42;2F42;6587;6587;
+2F43;2F43;2F43;6597;6597;
+2F44;2F44;2F44;65A4;65A4;
+2F45;2F45;2F45;65B9;65B9;
+2F46;2F46;2F46;65E0;65E0;
+2F47;2F47;2F47;65E5;65E5;
+2F48;2F48;2F48;66F0;66F0;
+2F49;2F49;2F49;6708;6708;
+2F4A;2F4A;2F4A;6728;6728;
+2F4B;2F4B;2F4B;6B20;6B20;
+2F4C;2F4C;2F4C;6B62;6B62;
+2F4D;2F4D;2F4D;6B79;6B79;
+2F4E;2F4E;2F4E;6BB3;6BB3;
+2F4F;2F4F;2F4F;6BCB;6BCB;
+2F50;2F50;2F50;6BD4;6BD4;
+2F51;2F51;2F51;6BDB;6BDB;
+2F52;2F52;2F52;6C0F;6C0F;
+2F53;2F53;2F53;6C14;6C14;
+2F54;2F54;2F54;6C34;6C34;
+2F55;2F55;2F55;706B;706B;
+2F56;2F56;2F56;722A;722A;
+2F57;2F57;2F57;7236;7236;
+2F58;2F58;2F58;723B;723B;
+2F59;2F59;2F59;723F;723F;
+2F5A;2F5A;2F5A;7247;7247;
+2F5B;2F5B;2F5B;7259;7259;
+2F5C;2F5C;2F5C;725B;725B;
+2F5D;2F5D;2F5D;72AC;72AC;
+2F5E;2F5E;2F5E;7384;7384;
+2F5F;2F5F;2F5F;7389;7389;
+2F60;2F60;2F60;74DC;74DC;
+2F61;2F61;2F61;74E6;74E6;
+2F62;2F62;2F62;7518;7518;
+2F63;2F63;2F63;751F;751F;
+2F64;2F64;2F64;7528;7528;
+2F65;2F65;2F65;7530;7530;
+2F66;2F66;2F66;758B;758B;
+2F67;2F67;2F67;7592;7592;
+2F68;2F68;2F68;7676;7676;
+2F69;2F69;2F69;767D;767D;
+2F6A;2F6A;2F6A;76AE;76AE;
+2F6B;2F6B;2F6B;76BF;76BF;
+2F6C;2F6C;2F6C;76EE;76EE;
+2F6D;2F6D;2F6D;77DB;77DB;
+2F6E;2F6E;2F6E;77E2;77E2;
+2F6F;2F6F;2F6F;77F3;77F3;
+2F70;2F70;2F70;793A;793A;
+2F71;2F71;2F71;79B8;79B8;
+2F72;2F72;2F72;79BE;79BE;
+2F73;2F73;2F73;7A74;7A74;
+2F74;2F74;2F74;7ACB;7ACB;
+2F75;2F75;2F75;7AF9;7AF9;
+2F76;2F76;2F76;7C73;7C73;
+2F77;2F77;2F77;7CF8;7CF8;
+2F78;2F78;2F78;7F36;7F36;
+2F79;2F79;2F79;7F51;7F51;
+2F7A;2F7A;2F7A;7F8A;7F8A;
+2F7B;2F7B;2F7B;7FBD;7FBD;
+2F7C;2F7C;2F7C;8001;8001;
+2F7D;2F7D;2F7D;800C;800C;
+2F7E;2F7E;2F7E;8012;8012;
+2F7F;2F7F;2F7F;8033;8033;
+2F80;2F80;2F80;807F;807F;
+2F81;2F81;2F81;8089;8089;
+2F82;2F82;2F82;81E3;81E3;
+2F83;2F83;2F83;81EA;81EA;
+2F84;2F84;2F84;81F3;81F3;
+2F85;2F85;2F85;81FC;81FC;
+2F86;2F86;2F86;820C;820C;
+2F87;2F87;2F87;821B;821B;
+2F88;2F88;2F88;821F;821F;
+2F89;2F89;2F89;826E;826E;
+2F8A;2F8A;2F8A;8272;8272;
+2F8B;2F8B;2F8B;8278;8278;
+2F8C;2F8C;2F8C;864D;864D;
+2F8D;2F8D;2F8D;866B;866B;
+2F8E;2F8E;2F8E;8840;8840;
+2F8F;2F8F;2F8F;884C;884C;
+2F90;2F90;2F90;8863;8863;
+2F91;2F91;2F91;897E;897E;
+2F92;2F92;2F92;898B;898B;
+2F93;2F93;2F93;89D2;89D2;
+2F94;2F94;2F94;8A00;8A00;
+2F95;2F95;2F95;8C37;8C37;
+2F96;2F96;2F96;8C46;8C46;
+2F97;2F97;2F97;8C55;8C55;
+2F98;2F98;2F98;8C78;8C78;
+2F99;2F99;2F99;8C9D;8C9D;
+2F9A;2F9A;2F9A;8D64;8D64;
+2F9B;2F9B;2F9B;8D70;8D70;
+2F9C;2F9C;2F9C;8DB3;8DB3;
+2F9D;2F9D;2F9D;8EAB;8EAB;
+2F9E;2F9E;2F9E;8ECA;8ECA;
+2F9F;2F9F;2F9F;8F9B;8F9B;
+2FA0;2FA0;2FA0;8FB0;8FB0;
+2FA1;2FA1;2FA1;8FB5;8FB5;
+2FA2;2FA2;2FA2;9091;9091;
+2FA3;2FA3;2FA3;9149;9149;
+2FA4;2FA4;2FA4;91C6;91C6;
+2FA5;2FA5;2FA5;91CC;91CC;
+2FA6;2FA6;2FA6;91D1;91D1;
+2FA7;2FA7;2FA7;9577;9577;
+2FA8;2FA8;2FA8;9580;9580;
+2FA9;2FA9;2FA9;961C;961C;
+2FAA;2FAA;2FAA;96B6;96B6;
+2FAB;2FAB;2FAB;96B9;96B9;
+2FAC;2FAC;2FAC;96E8;96E8;
+2FAD;2FAD;2FAD;9751;9751;
+2FAE;2FAE;2FAE;975E;975E;
+2FAF;2FAF;2FAF;9762;9762;
+2FB0;2FB0;2FB0;9769;9769;
+2FB1;2FB1;2FB1;97CB;97CB;
+2FB2;2FB2;2FB2;97ED;97ED;
+2FB3;2FB3;2FB3;97F3;97F3;
+2FB4;2FB4;2FB4;9801;9801;
+2FB5;2FB5;2FB5;98A8;98A8;
+2FB6;2FB6;2FB6;98DB;98DB;
+2FB7;2FB7;2FB7;98DF;98DF;
+2FB8;2FB8;2FB8;9996;9996;
+2FB9;2FB9;2FB9;9999;9999;
+2FBA;2FBA;2FBA;99AC;99AC;
+2FBB;2FBB;2FBB;9AA8;9AA8;
+2FBC;2FBC;2FBC;9AD8;9AD8;
+2FBD;2FBD;2FBD;9ADF;9ADF;
+2FBE;2FBE;2FBE;9B25;9B25;
+2FBF;2FBF;2FBF;9B2F;9B2F;
+2FC0;2FC0;2FC0;9B32;9B32;
+2FC1;2FC1;2FC1;9B3C;9B3C;
+2FC2;2FC2;2FC2;9B5A;9B5A;
+2FC3;2FC3;2FC3;9CE5;9CE5;
+2FC4;2FC4;2FC4;9E75;9E75;
+2FC5;2FC5;2FC5;9E7F;9E7F;
+2FC6;2FC6;2FC6;9EA5;9EA5;
+2FC7;2FC7;2FC7;9EBB;9EBB;
+2FC8;2FC8;2FC8;9EC3;9EC3;
+2FC9;2FC9;2FC9;9ECD;9ECD;
+2FCA;2FCA;2FCA;9ED1;9ED1;
+2FCB;2FCB;2FCB;9EF9;9EF9;
+2FCC;2FCC;2FCC;9EFD;9EFD;
+2FCD;2FCD;2FCD;9F0E;9F0E;
+2FCE;2FCE;2FCE;9F13;9F13;
+2FCF;2FCF;2FCF;9F20;9F20;
+2FD0;2FD0;2FD0;9F3B;9F3B;
+2FD1;2FD1;2FD1;9F4A;9F4A;
+2FD2;2FD2;2FD2;9F52;9F52;
+2FD3;2FD3;2FD3;9F8D;9F8D;
+2FD4;2FD4;2FD4;9F9C;9F9C;
+2FD5;2FD5;2FD5;9FA0;9FA0;
+3000;3000;3000;0020;0020;
+3036;3036;3036;3012;3012;
+3038;3038;3038;5341;5341;
+3039;3039;3039;5344;5344;
+303A;303A;303A;5345;5345;
+304C;304C;304B 3099;304C;304B 3099;
+304E;304E;304D 3099;304E;304D 3099;
+3050;3050;304F 3099;3050;304F 3099;
+3052;3052;3051 3099;3052;3051 3099;
+3054;3054;3053 3099;3054;3053 3099;
+3056;3056;3055 3099;3056;3055 3099;
+3058;3058;3057 3099;3058;3057 3099;
+305A;305A;3059 3099;305A;3059 3099;
+305C;305C;305B 3099;305C;305B 3099;
+305E;305E;305D 3099;305E;305D 3099;
+3060;3060;305F 3099;3060;305F 3099;
+3062;3062;3061 3099;3062;3061 3099;
+3065;3065;3064 3099;3065;3064 3099;
+3067;3067;3066 3099;3067;3066 3099;
+3069;3069;3068 3099;3069;3068 3099;
+3070;3070;306F 3099;3070;306F 3099;
+3071;3071;306F 309A;3071;306F 309A;
+3073;3073;3072 3099;3073;3072 3099;
+3074;3074;3072 309A;3074;3072 309A;
+3076;3076;3075 3099;3076;3075 3099;
+3077;3077;3075 309A;3077;3075 309A;
+3079;3079;3078 3099;3079;3078 3099;
+307A;307A;3078 309A;307A;3078 309A;
+307C;307C;307B 3099;307C;307B 3099;
+307D;307D;307B 309A;307D;307B 309A;
+3094;3094;3046 3099;3094;3046 3099;
+309B;309B;309B;0020 3099;0020 3099;
+309C;309C;309C;0020 309A;0020 309A;
+309E;309E;309D 3099;309E;309D 3099;
+309F;309F;309F;3088 308A;3088 308A;
+30AC;30AC;30AB 3099;30AC;30AB 3099;
+30AE;30AE;30AD 3099;30AE;30AD 3099;
+30B0;30B0;30AF 3099;30B0;30AF 3099;
+30B2;30B2;30B1 3099;30B2;30B1 3099;
+30B4;30B4;30B3 3099;30B4;30B3 3099;
+30B6;30B6;30B5 3099;30B6;30B5 3099;
+30B8;30B8;30B7 3099;30B8;30B7 3099;
+30BA;30BA;30B9 3099;30BA;30B9 3099;
+30BC;30BC;30BB 3099;30BC;30BB 3099;
+30BE;30BE;30BD 3099;30BE;30BD 3099;
+30C0;30C0;30BF 3099;30C0;30BF 3099;
+30C2;30C2;30C1 3099;30C2;30C1 3099;
+30C5;30C5;30C4 3099;30C5;30C4 3099;
+30C7;30C7;30C6 3099;30C7;30C6 3099;
+30C9;30C9;30C8 3099;30C9;30C8 3099;
+30D0;30D0;30CF 3099;30D0;30CF 3099;
+30D1;30D1;30CF 309A;30D1;30CF 309A;
+30D3;30D3;30D2 3099;30D3;30D2 3099;
+30D4;30D4;30D2 309A;30D4;30D2 309A;
+30D6;30D6;30D5 3099;30D6;30D5 3099;
+30D7;30D7;30D5 309A;30D7;30D5 309A;
+30D9;30D9;30D8 3099;30D9;30D8 3099;
+30DA;30DA;30D8 309A;30DA;30D8 309A;
+30DC;30DC;30DB 3099;30DC;30DB 3099;
+30DD;30DD;30DB 309A;30DD;30DB 309A;
+30F4;30F4;30A6 3099;30F4;30A6 3099;
+30F7;30F7;30EF 3099;30F7;30EF 3099;
+30F8;30F8;30F0 3099;30F8;30F0 3099;
+30F9;30F9;30F1 3099;30F9;30F1 3099;
+30FA;30FA;30F2 3099;30FA;30F2 3099;
+30FE;30FE;30FD 3099;30FE;30FD 3099;
+30FF;30FF;30FF;30B3 30C8;30B3 30C8;
+3131;3131;3131;1100;1100;
+3132;3132;3132;1101;1101;
+3133;3133;3133;11AA;11AA;
+3134;3134;3134;1102;1102;
+3135;3135;3135;11AC;11AC;
+3136;3136;3136;11AD;11AD;
+3137;3137;3137;1103;1103;
+3138;3138;3138;1104;1104;
+3139;3139;3139;1105;1105;
+313A;313A;313A;11B0;11B0;
+313B;313B;313B;11B1;11B1;
+313C;313C;313C;11B2;11B2;
+313D;313D;313D;11B3;11B3;
+313E;313E;313E;11B4;11B4;
+313F;313F;313F;11B5;11B5;
+3140;3140;3140;111A;111A;
+3141;3141;3141;1106;1106;
+3142;3142;3142;1107;1107;
+3143;3143;3143;1108;1108;
+3144;3144;3144;1121;1121;
+3145;3145;3145;1109;1109;
+3146;3146;3146;110A;110A;
+3147;3147;3147;110B;110B;
+3148;3148;3148;110C;110C;
+3149;3149;3149;110D;110D;
+314A;314A;314A;110E;110E;
+314B;314B;314B;110F;110F;
+314C;314C;314C;1110;1110;
+314D;314D;314D;1111;1111;
+314E;314E;314E;1112;1112;
+314F;314F;314F;1161;1161;
+3150;3150;3150;1162;1162;
+3151;3151;3151;1163;1163;
+3152;3152;3152;1164;1164;
+3153;3153;3153;1165;1165;
+3154;3154;3154;1166;1166;
+3155;3155;3155;1167;1167;
+3156;3156;3156;1168;1168;
+3157;3157;3157;1169;1169;
+3158;3158;3158;116A;116A;
+3159;3159;3159;116B;116B;
+315A;315A;315A;116C;116C;
+315B;315B;315B;116D;116D;
+315C;315C;315C;116E;116E;
+315D;315D;315D;116F;116F;
+315E;315E;315E;1170;1170;
+315F;315F;315F;1171;1171;
+3160;3160;3160;1172;1172;
+3161;3161;3161;1173;1173;
+3162;3162;3162;1174;1174;
+3163;3163;3163;1175;1175;
+3164;3164;3164;1160;1160;
+3165;3165;3165;1114;1114;
+3166;3166;3166;1115;1115;
+3167;3167;3167;11C7;11C7;
+3168;3168;3168;11C8;11C8;
+3169;3169;3169;11CC;11CC;
+316A;316A;316A;11CE;11CE;
+316B;316B;316B;11D3;11D3;
+316C;316C;316C;11D7;11D7;
+316D;316D;316D;11D9;11D9;
+316E;316E;316E;111C;111C;
+316F;316F;316F;11DD;11DD;
+3170;3170;3170;11DF;11DF;
+3171;3171;3171;111D;111D;
+3172;3172;3172;111E;111E;
+3173;3173;3173;1120;1120;
+3174;3174;3174;1122;1122;
+3175;3175;3175;1123;1123;
+3176;3176;3176;1127;1127;
+3177;3177;3177;1129;1129;
+3178;3178;3178;112B;112B;
+3179;3179;3179;112C;112C;
+317A;317A;317A;112D;112D;
+317B;317B;317B;112E;112E;
+317C;317C;317C;112F;112F;
+317D;317D;317D;1132;1132;
+317E;317E;317E;1136;1136;
+317F;317F;317F;1140;1140;
+3180;3180;3180;1147;1147;
+3181;3181;3181;114C;114C;
+3182;3182;3182;11F1;11F1;
+3183;3183;3183;11F2;11F2;
+3184;3184;3184;1157;1157;
+3185;3185;3185;1158;1158;
+3186;3186;3186;1159;1159;
+3187;3187;3187;1184;1184;
+3188;3188;3188;1185;1185;
+3189;3189;3189;1188;1188;
+318A;318A;318A;1191;1191;
+318B;318B;318B;1192;1192;
+318C;318C;318C;1194;1194;
+318D;318D;318D;119E;119E;
+318E;318E;318E;11A1;11A1;
+3192;3192;3192;4E00;4E00;
+3193;3193;3193;4E8C;4E8C;
+3194;3194;3194;4E09;4E09;
+3195;3195;3195;56DB;56DB;
+3196;3196;3196;4E0A;4E0A;
+3197;3197;3197;4E2D;4E2D;
+3198;3198;3198;4E0B;4E0B;
+3199;3199;3199;7532;7532;
+319A;319A;319A;4E59;4E59;
+319B;319B;319B;4E19;4E19;
+319C;319C;319C;4E01;4E01;
+319D;319D;319D;5929;5929;
+319E;319E;319E;5730;5730;
+319F;319F;319F;4EBA;4EBA;
+3200;3200;3200;0028 1100 0029;0028 1100 0029;
+3201;3201;3201;0028 1102 0029;0028 1102 0029;
+3202;3202;3202;0028 1103 0029;0028 1103 0029;
+3203;3203;3203;0028 1105 0029;0028 1105 0029;
+3204;3204;3204;0028 1106 0029;0028 1106 0029;
+3205;3205;3205;0028 1107 0029;0028 1107 0029;
+3206;3206;3206;0028 1109 0029;0028 1109 0029;
+3207;3207;3207;0028 110B 0029;0028 110B 0029;
+3208;3208;3208;0028 110C 0029;0028 110C 0029;
+3209;3209;3209;0028 110E 0029;0028 110E 0029;
+320A;320A;320A;0028 110F 0029;0028 110F 0029;
+320B;320B;320B;0028 1110 0029;0028 1110 0029;
+320C;320C;320C;0028 1111 0029;0028 1111 0029;
+320D;320D;320D;0028 1112 0029;0028 1112 0029;
+320E;320E;320E;0028 AC00 0029;0028 1100 1161 0029;
+320F;320F;320F;0028 B098 0029;0028 1102 1161 0029;
+3210;3210;3210;0028 B2E4 0029;0028 1103 1161 0029;
+3211;3211;3211;0028 B77C 0029;0028 1105 1161 0029;
+3212;3212;3212;0028 B9C8 0029;0028 1106 1161 0029;
+3213;3213;3213;0028 BC14 0029;0028 1107 1161 0029;
+3214;3214;3214;0028 C0AC 0029;0028 1109 1161 0029;
+3215;3215;3215;0028 C544 0029;0028 110B 1161 0029;
+3216;3216;3216;0028 C790 0029;0028 110C 1161 0029;
+3217;3217;3217;0028 CC28 0029;0028 110E 1161 0029;
+3218;3218;3218;0028 CE74 0029;0028 110F 1161 0029;
+3219;3219;3219;0028 D0C0 0029;0028 1110 1161 0029;
+321A;321A;321A;0028 D30C 0029;0028 1111 1161 0029;
+321B;321B;321B;0028 D558 0029;0028 1112 1161 0029;
+321C;321C;321C;0028 C8FC 0029;0028 110C 116E 0029;
+321D;321D;321D;0028 C624 C804 0029;0028 110B 1169 110C 1165 11AB 0029;
+321E;321E;321E;0028 C624 D6C4 0029;0028 110B 1169 1112 116E 0029;
+3220;3220;3220;0028 4E00 0029;0028 4E00 0029;
+3221;3221;3221;0028 4E8C 0029;0028 4E8C 0029;
+3222;3222;3222;0028 4E09 0029;0028 4E09 0029;
+3223;3223;3223;0028 56DB 0029;0028 56DB 0029;
+3224;3224;3224;0028 4E94 0029;0028 4E94 0029;
+3225;3225;3225;0028 516D 0029;0028 516D 0029;
+3226;3226;3226;0028 4E03 0029;0028 4E03 0029;
+3227;3227;3227;0028 516B 0029;0028 516B 0029;
+3228;3228;3228;0028 4E5D 0029;0028 4E5D 0029;
+3229;3229;3229;0028 5341 0029;0028 5341 0029;
+322A;322A;322A;0028 6708 0029;0028 6708 0029;
+322B;322B;322B;0028 706B 0029;0028 706B 0029;
+322C;322C;322C;0028 6C34 0029;0028 6C34 0029;
+322D;322D;322D;0028 6728 0029;0028 6728 0029;
+322E;322E;322E;0028 91D1 0029;0028 91D1 0029;
+322F;322F;322F;0028 571F 0029;0028 571F 0029;
+3230;3230;3230;0028 65E5 0029;0028 65E5 0029;
+3231;3231;3231;0028 682A 0029;0028 682A 0029;
+3232;3232;3232;0028 6709 0029;0028 6709 0029;
+3233;3233;3233;0028 793E 0029;0028 793E 0029;
+3234;3234;3234;0028 540D 0029;0028 540D 0029;
+3235;3235;3235;0028 7279 0029;0028 7279 0029;
+3236;3236;3236;0028 8CA1 0029;0028 8CA1 0029;
+3237;3237;3237;0028 795D 0029;0028 795D 0029;
+3238;3238;3238;0028 52B4 0029;0028 52B4 0029;
+3239;3239;3239;0028 4EE3 0029;0028 4EE3 0029;
+323A;323A;323A;0028 547C 0029;0028 547C 0029;
+323B;323B;323B;0028 5B66 0029;0028 5B66 0029;
+323C;323C;323C;0028 76E3 0029;0028 76E3 0029;
+323D;323D;323D;0028 4F01 0029;0028 4F01 0029;
+323E;323E;323E;0028 8CC7 0029;0028 8CC7 0029;
+323F;323F;323F;0028 5354 0029;0028 5354 0029;
+3240;3240;3240;0028 796D 0029;0028 796D 0029;
+3241;3241;3241;0028 4F11 0029;0028 4F11 0029;
+3242;3242;3242;0028 81EA 0029;0028 81EA 0029;
+3243;3243;3243;0028 81F3 0029;0028 81F3 0029;
+3250;3250;3250;0050 0054 0045;0050 0054 0045;
+3251;3251;3251;0032 0031;0032 0031;
+3252;3252;3252;0032 0032;0032 0032;
+3253;3253;3253;0032 0033;0032 0033;
+3254;3254;3254;0032 0034;0032 0034;
+3255;3255;3255;0032 0035;0032 0035;
+3256;3256;3256;0032 0036;0032 0036;
+3257;3257;3257;0032 0037;0032 0037;
+3258;3258;3258;0032 0038;0032 0038;
+3259;3259;3259;0032 0039;0032 0039;
+325A;325A;325A;0033 0030;0033 0030;
+325B;325B;325B;0033 0031;0033 0031;
+325C;325C;325C;0033 0032;0033 0032;
+325D;325D;325D;0033 0033;0033 0033;
+325E;325E;325E;0033 0034;0033 0034;
+325F;325F;325F;0033 0035;0033 0035;
+3260;3260;3260;1100;1100;
+3261;3261;3261;1102;1102;
+3262;3262;3262;1103;1103;
+3263;3263;3263;1105;1105;
+3264;3264;3264;1106;1106;
+3265;3265;3265;1107;1107;
+3266;3266;3266;1109;1109;
+3267;3267;3267;110B;110B;
+3268;3268;3268;110C;110C;
+3269;3269;3269;110E;110E;
+326A;326A;326A;110F;110F;
+326B;326B;326B;1110;1110;
+326C;326C;326C;1111;1111;
+326D;326D;326D;1112;1112;
+326E;326E;326E;AC00;1100 1161;
+326F;326F;326F;B098;1102 1161;
+3270;3270;3270;B2E4;1103 1161;
+3271;3271;3271;B77C;1105 1161;
+3272;3272;3272;B9C8;1106 1161;
+3273;3273;3273;BC14;1107 1161;
+3274;3274;3274;C0AC;1109 1161;
+3275;3275;3275;C544;110B 1161;
+3276;3276;3276;C790;110C 1161;
+3277;3277;3277;CC28;110E 1161;
+3278;3278;3278;CE74;110F 1161;
+3279;3279;3279;D0C0;1110 1161;
+327A;327A;327A;D30C;1111 1161;
+327B;327B;327B;D558;1112 1161;
+327C;327C;327C;CC38 ACE0;110E 1161 11B7 1100 1169;
+327D;327D;327D;C8FC C758;110C 116E 110B 1174;
+327E;327E;327E;C6B0;110B 116E;
+3280;3280;3280;4E00;4E00;
+3281;3281;3281;4E8C;4E8C;
+3282;3282;3282;4E09;4E09;
+3283;3283;3283;56DB;56DB;
+3284;3284;3284;4E94;4E94;
+3285;3285;3285;516D;516D;
+3286;3286;3286;4E03;4E03;
+3287;3287;3287;516B;516B;
+3288;3288;3288;4E5D;4E5D;
+3289;3289;3289;5341;5341;
+328A;328A;328A;6708;6708;
+328B;328B;328B;706B;706B;
+328C;328C;328C;6C34;6C34;
+328D;328D;328D;6728;6728;
+328E;328E;328E;91D1;91D1;
+328F;328F;328F;571F;571F;
+3290;3290;3290;65E5;65E5;
+3291;3291;3291;682A;682A;
+3292;3292;3292;6709;6709;
+3293;3293;3293;793E;793E;
+3294;3294;3294;540D;540D;
+3295;3295;3295;7279;7279;
+3296;3296;3296;8CA1;8CA1;
+3297;3297;3297;795D;795D;
+3298;3298;3298;52B4;52B4;
+3299;3299;3299;79D8;79D8;
+329A;329A;329A;7537;7537;
+329B;329B;329B;5973;5973;
+329C;329C;329C;9069;9069;
+329D;329D;329D;512A;512A;
+329E;329E;329E;5370;5370;
+329F;329F;329F;6CE8;6CE8;
+32A0;32A0;32A0;9805;9805;
+32A1;32A1;32A1;4F11;4F11;
+32A2;32A2;32A2;5199;5199;
+32A3;32A3;32A3;6B63;6B63;
+32A4;32A4;32A4;4E0A;4E0A;
+32A5;32A5;32A5;4E2D;4E2D;
+32A6;32A6;32A6;4E0B;4E0B;
+32A7;32A7;32A7;5DE6;5DE6;
+32A8;32A8;32A8;53F3;53F3;
+32A9;32A9;32A9;533B;533B;
+32AA;32AA;32AA;5B97;5B97;
+32AB;32AB;32AB;5B66;5B66;
+32AC;32AC;32AC;76E3;76E3;
+32AD;32AD;32AD;4F01;4F01;
+32AE;32AE;32AE;8CC7;8CC7;
+32AF;32AF;32AF;5354;5354;
+32B0;32B0;32B0;591C;591C;
+32B1;32B1;32B1;0033 0036;0033 0036;
+32B2;32B2;32B2;0033 0037;0033 0037;
+32B3;32B3;32B3;0033 0038;0033 0038;
+32B4;32B4;32B4;0033 0039;0033 0039;
+32B5;32B5;32B5;0034 0030;0034 0030;
+32B6;32B6;32B6;0034 0031;0034 0031;
+32B7;32B7;32B7;0034 0032;0034 0032;
+32B8;32B8;32B8;0034 0033;0034 0033;
+32B9;32B9;32B9;0034 0034;0034 0034;
+32BA;32BA;32BA;0034 0035;0034 0035;
+32BB;32BB;32BB;0034 0036;0034 0036;
+32BC;32BC;32BC;0034 0037;0034 0037;
+32BD;32BD;32BD;0034 0038;0034 0038;
+32BE;32BE;32BE;0034 0039;0034 0039;
+32BF;32BF;32BF;0035 0030;0035 0030;
+32C0;32C0;32C0;0031 6708;0031 6708;
+32C1;32C1;32C1;0032 6708;0032 6708;
+32C2;32C2;32C2;0033 6708;0033 6708;
+32C3;32C3;32C3;0034 6708;0034 6708;
+32C4;32C4;32C4;0035 6708;0035 6708;
+32C5;32C5;32C5;0036 6708;0036 6708;
+32C6;32C6;32C6;0037 6708;0037 6708;
+32C7;32C7;32C7;0038 6708;0038 6708;
+32C8;32C8;32C8;0039 6708;0039 6708;
+32C9;32C9;32C9;0031 0030 6708;0031 0030 6708;
+32CA;32CA;32CA;0031 0031 6708;0031 0031 6708;
+32CB;32CB;32CB;0031 0032 6708;0031 0032 6708;
+32CC;32CC;32CC;0048 0067;0048 0067;
+32CD;32CD;32CD;0065 0072 0067;0065 0072 0067;
+32CE;32CE;32CE;0065 0056;0065 0056;
+32CF;32CF;32CF;004C 0054 0044;004C 0054 0044;
+32D0;32D0;32D0;30A2;30A2;
+32D1;32D1;32D1;30A4;30A4;
+32D2;32D2;32D2;30A6;30A6;
+32D3;32D3;32D3;30A8;30A8;
+32D4;32D4;32D4;30AA;30AA;
+32D5;32D5;32D5;30AB;30AB;
+32D6;32D6;32D6;30AD;30AD;
+32D7;32D7;32D7;30AF;30AF;
+32D8;32D8;32D8;30B1;30B1;
+32D9;32D9;32D9;30B3;30B3;
+32DA;32DA;32DA;30B5;30B5;
+32DB;32DB;32DB;30B7;30B7;
+32DC;32DC;32DC;30B9;30B9;
+32DD;32DD;32DD;30BB;30BB;
+32DE;32DE;32DE;30BD;30BD;
+32DF;32DF;32DF;30BF;30BF;
+32E0;32E0;32E0;30C1;30C1;
+32E1;32E1;32E1;30C4;30C4;
+32E2;32E2;32E2;30C6;30C6;
+32E3;32E3;32E3;30C8;30C8;
+32E4;32E4;32E4;30CA;30CA;
+32E5;32E5;32E5;30CB;30CB;
+32E6;32E6;32E6;30CC;30CC;
+32E7;32E7;32E7;30CD;30CD;
+32E8;32E8;32E8;30CE;30CE;
+32E9;32E9;32E9;30CF;30CF;
+32EA;32EA;32EA;30D2;30D2;
+32EB;32EB;32EB;30D5;30D5;
+32EC;32EC;32EC;30D8;30D8;
+32ED;32ED;32ED;30DB;30DB;
+32EE;32EE;32EE;30DE;30DE;
+32EF;32EF;32EF;30DF;30DF;
+32F0;32F0;32F0;30E0;30E0;
+32F1;32F1;32F1;30E1;30E1;
+32F2;32F2;32F2;30E2;30E2;
+32F3;32F3;32F3;30E4;30E4;
+32F4;32F4;32F4;30E6;30E6;
+32F5;32F5;32F5;30E8;30E8;
+32F6;32F6;32F6;30E9;30E9;
+32F7;32F7;32F7;30EA;30EA;
+32F8;32F8;32F8;30EB;30EB;
+32F9;32F9;32F9;30EC;30EC;
+32FA;32FA;32FA;30ED;30ED;
+32FB;32FB;32FB;30EF;30EF;
+32FC;32FC;32FC;30F0;30F0;
+32FD;32FD;32FD;30F1;30F1;
+32FE;32FE;32FE;30F2;30F2;
+3300;3300;3300;30A2 30D1 30FC 30C8;30A2 30CF 309A 30FC 30C8;
+3301;3301;3301;30A2 30EB 30D5 30A1;30A2 30EB 30D5 30A1;
+3302;3302;3302;30A2 30F3 30DA 30A2;30A2 30F3 30D8 309A 30A2;
+3303;3303;3303;30A2 30FC 30EB;30A2 30FC 30EB;
+3304;3304;3304;30A4 30CB 30F3 30B0;30A4 30CB 30F3 30AF 3099;
+3305;3305;3305;30A4 30F3 30C1;30A4 30F3 30C1;
+3306;3306;3306;30A6 30A9 30F3;30A6 30A9 30F3;
+3307;3307;3307;30A8 30B9 30AF 30FC 30C9;30A8 30B9 30AF 30FC 30C8 3099;
+3308;3308;3308;30A8 30FC 30AB 30FC;30A8 30FC 30AB 30FC;
+3309;3309;3309;30AA 30F3 30B9;30AA 30F3 30B9;
+330A;330A;330A;30AA 30FC 30E0;30AA 30FC 30E0;
+330B;330B;330B;30AB 30A4 30EA;30AB 30A4 30EA;
+330C;330C;330C;30AB 30E9 30C3 30C8;30AB 30E9 30C3 30C8;
+330D;330D;330D;30AB 30ED 30EA 30FC;30AB 30ED 30EA 30FC;
+330E;330E;330E;30AC 30ED 30F3;30AB 3099 30ED 30F3;
+330F;330F;330F;30AC 30F3 30DE;30AB 3099 30F3 30DE;
+3310;3310;3310;30AE 30AC;30AD 3099 30AB 3099;
+3311;3311;3311;30AE 30CB 30FC;30AD 3099 30CB 30FC;
+3312;3312;3312;30AD 30E5 30EA 30FC;30AD 30E5 30EA 30FC;
+3313;3313;3313;30AE 30EB 30C0 30FC;30AD 3099 30EB 30BF 3099 30FC;
+3314;3314;3314;30AD 30ED;30AD 30ED;
+3315;3315;3315;30AD 30ED 30B0 30E9 30E0;30AD 30ED 30AF 3099 30E9 30E0;
+3316;3316;3316;30AD 30ED 30E1 30FC 30C8 30EB;30AD 30ED 30E1 30FC 30C8 30EB;
+3317;3317;3317;30AD 30ED 30EF 30C3 30C8;30AD 30ED 30EF 30C3 30C8;
+3318;3318;3318;30B0 30E9 30E0;30AF 3099 30E9 30E0;
+3319;3319;3319;30B0 30E9 30E0 30C8 30F3;30AF 3099 30E9 30E0 30C8 30F3;
+331A;331A;331A;30AF 30EB 30BC 30A4 30ED;30AF 30EB 30BB 3099 30A4 30ED;
+331B;331B;331B;30AF 30ED 30FC 30CD;30AF 30ED 30FC 30CD;
+331C;331C;331C;30B1 30FC 30B9;30B1 30FC 30B9;
+331D;331D;331D;30B3 30EB 30CA;30B3 30EB 30CA;
+331E;331E;331E;30B3 30FC 30DD;30B3 30FC 30DB 309A;
+331F;331F;331F;30B5 30A4 30AF 30EB;30B5 30A4 30AF 30EB;
+3320;3320;3320;30B5 30F3 30C1 30FC 30E0;30B5 30F3 30C1 30FC 30E0;
+3321;3321;3321;30B7 30EA 30F3 30B0;30B7 30EA 30F3 30AF 3099;
+3322;3322;3322;30BB 30F3 30C1;30BB 30F3 30C1;
+3323;3323;3323;30BB 30F3 30C8;30BB 30F3 30C8;
+3324;3324;3324;30C0 30FC 30B9;30BF 3099 30FC 30B9;
+3325;3325;3325;30C7 30B7;30C6 3099 30B7;
+3326;3326;3326;30C9 30EB;30C8 3099 30EB;
+3327;3327;3327;30C8 30F3;30C8 30F3;
+3328;3328;3328;30CA 30CE;30CA 30CE;
+3329;3329;3329;30CE 30C3 30C8;30CE 30C3 30C8;
+332A;332A;332A;30CF 30A4 30C4;30CF 30A4 30C4;
+332B;332B;332B;30D1 30FC 30BB 30F3 30C8;30CF 309A 30FC 30BB 30F3 30C8;
+332C;332C;332C;30D1 30FC 30C4;30CF 309A 30FC 30C4;
+332D;332D;332D;30D0 30FC 30EC 30EB;30CF 3099 30FC 30EC 30EB;
+332E;332E;332E;30D4 30A2 30B9 30C8 30EB;30D2 309A 30A2 30B9 30C8 30EB;
+332F;332F;332F;30D4 30AF 30EB;30D2 309A 30AF 30EB;
+3330;3330;3330;30D4 30B3;30D2 309A 30B3;
+3331;3331;3331;30D3 30EB;30D2 3099 30EB;
+3332;3332;3332;30D5 30A1 30E9 30C3 30C9;30D5 30A1 30E9 30C3 30C8 3099;
+3333;3333;3333;30D5 30A3 30FC 30C8;30D5 30A3 30FC 30C8;
+3334;3334;3334;30D6 30C3 30B7 30A7 30EB;30D5 3099 30C3 30B7 30A7 30EB;
+3335;3335;3335;30D5 30E9 30F3;30D5 30E9 30F3;
+3336;3336;3336;30D8 30AF 30BF 30FC 30EB;30D8 30AF 30BF 30FC 30EB;
+3337;3337;3337;30DA 30BD;30D8 309A 30BD;
+3338;3338;3338;30DA 30CB 30D2;30D8 309A 30CB 30D2;
+3339;3339;3339;30D8 30EB 30C4;30D8 30EB 30C4;
+333A;333A;333A;30DA 30F3 30B9;30D8 309A 30F3 30B9;
+333B;333B;333B;30DA 30FC 30B8;30D8 309A 30FC 30B7 3099;
+333C;333C;333C;30D9 30FC 30BF;30D8 3099 30FC 30BF;
+333D;333D;333D;30DD 30A4 30F3 30C8;30DB 309A 30A4 30F3 30C8;
+333E;333E;333E;30DC 30EB 30C8;30DB 3099 30EB 30C8;
+333F;333F;333F;30DB 30F3;30DB 30F3;
+3340;3340;3340;30DD 30F3 30C9;30DB 309A 30F3 30C8 3099;
+3341;3341;3341;30DB 30FC 30EB;30DB 30FC 30EB;
+3342;3342;3342;30DB 30FC 30F3;30DB 30FC 30F3;
+3343;3343;3343;30DE 30A4 30AF 30ED;30DE 30A4 30AF 30ED;
+3344;3344;3344;30DE 30A4 30EB;30DE 30A4 30EB;
+3345;3345;3345;30DE 30C3 30CF;30DE 30C3 30CF;
+3346;3346;3346;30DE 30EB 30AF;30DE 30EB 30AF;
+3347;3347;3347;30DE 30F3 30B7 30E7 30F3;30DE 30F3 30B7 30E7 30F3;
+3348;3348;3348;30DF 30AF 30ED 30F3;30DF 30AF 30ED 30F3;
+3349;3349;3349;30DF 30EA;30DF 30EA;
+334A;334A;334A;30DF 30EA 30D0 30FC 30EB;30DF 30EA 30CF 3099 30FC 30EB;
+334B;334B;334B;30E1 30AC;30E1 30AB 3099;
+334C;334C;334C;30E1 30AC 30C8 30F3;30E1 30AB 3099 30C8 30F3;
+334D;334D;334D;30E1 30FC 30C8 30EB;30E1 30FC 30C8 30EB;
+334E;334E;334E;30E4 30FC 30C9;30E4 30FC 30C8 3099;
+334F;334F;334F;30E4 30FC 30EB;30E4 30FC 30EB;
+3350;3350;3350;30E6 30A2 30F3;30E6 30A2 30F3;
+3351;3351;3351;30EA 30C3 30C8 30EB;30EA 30C3 30C8 30EB;
+3352;3352;3352;30EA 30E9;30EA 30E9;
+3353;3353;3353;30EB 30D4 30FC;30EB 30D2 309A 30FC;
+3354;3354;3354;30EB 30FC 30D6 30EB;30EB 30FC 30D5 3099 30EB;
+3355;3355;3355;30EC 30E0;30EC 30E0;
+3356;3356;3356;30EC 30F3 30C8 30B2 30F3;30EC 30F3 30C8 30B1 3099 30F3;
+3357;3357;3357;30EF 30C3 30C8;30EF 30C3 30C8;
+3358;3358;3358;0030 70B9;0030 70B9;
+3359;3359;3359;0031 70B9;0031 70B9;
+335A;335A;335A;0032 70B9;0032 70B9;
+335B;335B;335B;0033 70B9;0033 70B9;
+335C;335C;335C;0034 70B9;0034 70B9;
+335D;335D;335D;0035 70B9;0035 70B9;
+335E;335E;335E;0036 70B9;0036 70B9;
+335F;335F;335F;0037 70B9;0037 70B9;
+3360;3360;3360;0038 70B9;0038 70B9;
+3361;3361;3361;0039 70B9;0039 70B9;
+3362;3362;3362;0031 0030 70B9;0031 0030 70B9;
+3363;3363;3363;0031 0031 70B9;0031 0031 70B9;
+3364;3364;3364;0031 0032 70B9;0031 0032 70B9;
+3365;3365;3365;0031 0033 70B9;0031 0033 70B9;
+3366;3366;3366;0031 0034 70B9;0031 0034 70B9;
+3367;3367;3367;0031 0035 70B9;0031 0035 70B9;
+3368;3368;3368;0031 0036 70B9;0031 0036 70B9;
+3369;3369;3369;0031 0037 70B9;0031 0037 70B9;
+336A;336A;336A;0031 0038 70B9;0031 0038 70B9;
+336B;336B;336B;0031 0039 70B9;0031 0039 70B9;
+336C;336C;336C;0032 0030 70B9;0032 0030 70B9;
+336D;336D;336D;0032 0031 70B9;0032 0031 70B9;
+336E;336E;336E;0032 0032 70B9;0032 0032 70B9;
+336F;336F;336F;0032 0033 70B9;0032 0033 70B9;
+3370;3370;3370;0032 0034 70B9;0032 0034 70B9;
+3371;3371;3371;0068 0050 0061;0068 0050 0061;
+3372;3372;3372;0064 0061;0064 0061;
+3373;3373;3373;0041 0055;0041 0055;
+3374;3374;3374;0062 0061 0072;0062 0061 0072;
+3375;3375;3375;006F 0056;006F 0056;
+3376;3376;3376;0070 0063;0070 0063;
+3377;3377;3377;0064 006D;0064 006D;
+3378;3378;3378;0064 006D 0032;0064 006D 0032;
+3379;3379;3379;0064 006D 0033;0064 006D 0033;
+337A;337A;337A;0049 0055;0049 0055;
+337B;337B;337B;5E73 6210;5E73 6210;
+337C;337C;337C;662D 548C;662D 548C;
+337D;337D;337D;5927 6B63;5927 6B63;
+337E;337E;337E;660E 6CBB;660E 6CBB;
+337F;337F;337F;682A 5F0F 4F1A 793E;682A 5F0F 4F1A 793E;
+3380;3380;3380;0070 0041;0070 0041;
+3381;3381;3381;006E 0041;006E 0041;
+3382;3382;3382;03BC 0041;03BC 0041;
+3383;3383;3383;006D 0041;006D 0041;
+3384;3384;3384;006B 0041;006B 0041;
+3385;3385;3385;004B 0042;004B 0042;
+3386;3386;3386;004D 0042;004D 0042;
+3387;3387;3387;0047 0042;0047 0042;
+3388;3388;3388;0063 0061 006C;0063 0061 006C;
+3389;3389;3389;006B 0063 0061 006C;006B 0063 0061 006C;
+338A;338A;338A;0070 0046;0070 0046;
+338B;338B;338B;006E 0046;006E 0046;
+338C;338C;338C;03BC 0046;03BC 0046;
+338D;338D;338D;03BC 0067;03BC 0067;
+338E;338E;338E;006D 0067;006D 0067;
+338F;338F;338F;006B 0067;006B 0067;
+3390;3390;3390;0048 007A;0048 007A;
+3391;3391;3391;006B 0048 007A;006B 0048 007A;
+3392;3392;3392;004D 0048 007A;004D 0048 007A;
+3393;3393;3393;0047 0048 007A;0047 0048 007A;
+3394;3394;3394;0054 0048 007A;0054 0048 007A;
+3395;3395;3395;03BC 006C;03BC 006C;
+3396;3396;3396;006D 006C;006D 006C;
+3397;3397;3397;0064 006C;0064 006C;
+3398;3398;3398;006B 006C;006B 006C;
+3399;3399;3399;0066 006D;0066 006D;
+339A;339A;339A;006E 006D;006E 006D;
+339B;339B;339B;03BC 006D;03BC 006D;
+339C;339C;339C;006D 006D;006D 006D;
+339D;339D;339D;0063 006D;0063 006D;
+339E;339E;339E;006B 006D;006B 006D;
+339F;339F;339F;006D 006D 0032;006D 006D 0032;
+33A0;33A0;33A0;0063 006D 0032;0063 006D 0032;
+33A1;33A1;33A1;006D 0032;006D 0032;
+33A2;33A2;33A2;006B 006D 0032;006B 006D 0032;
+33A3;33A3;33A3;006D 006D 0033;006D 006D 0033;
+33A4;33A4;33A4;0063 006D 0033;0063 006D 0033;
+33A5;33A5;33A5;006D 0033;006D 0033;
+33A6;33A6;33A6;006B 006D 0033;006B 006D 0033;
+33A7;33A7;33A7;006D 2215 0073;006D 2215 0073;
+33A8;33A8;33A8;006D 2215 0073 0032;006D 2215 0073 0032;
+33A9;33A9;33A9;0050 0061;0050 0061;
+33AA;33AA;33AA;006B 0050 0061;006B 0050 0061;
+33AB;33AB;33AB;004D 0050 0061;004D 0050 0061;
+33AC;33AC;33AC;0047 0050 0061;0047 0050 0061;
+33AD;33AD;33AD;0072 0061 0064;0072 0061 0064;
+33AE;33AE;33AE;0072 0061 0064 2215 0073;0072 0061 0064 2215 0073;
+33AF;33AF;33AF;0072 0061 0064 2215 0073 0032;0072 0061 0064 2215 0073 0032;
+33B0;33B0;33B0;0070 0073;0070 0073;
+33B1;33B1;33B1;006E 0073;006E 0073;
+33B2;33B2;33B2;03BC 0073;03BC 0073;
+33B3;33B3;33B3;006D 0073;006D 0073;
+33B4;33B4;33B4;0070 0056;0070 0056;
+33B5;33B5;33B5;006E 0056;006E 0056;
+33B6;33B6;33B6;03BC 0056;03BC 0056;
+33B7;33B7;33B7;006D 0056;006D 0056;
+33B8;33B8;33B8;006B 0056;006B 0056;
+33B9;33B9;33B9;004D 0056;004D 0056;
+33BA;33BA;33BA;0070 0057;0070 0057;
+33BB;33BB;33BB;006E 0057;006E 0057;
+33BC;33BC;33BC;03BC 0057;03BC 0057;
+33BD;33BD;33BD;006D 0057;006D 0057;
+33BE;33BE;33BE;006B 0057;006B 0057;
+33BF;33BF;33BF;004D 0057;004D 0057;
+33C0;33C0;33C0;006B 03A9;006B 03A9;
+33C1;33C1;33C1;004D 03A9;004D 03A9;
+33C2;33C2;33C2;0061 002E 006D 002E;0061 002E 006D 002E;
+33C3;33C3;33C3;0042 0071;0042 0071;
+33C4;33C4;33C4;0063 0063;0063 0063;
+33C5;33C5;33C5;0063 0064;0063 0064;
+33C6;33C6;33C6;0043 2215 006B 0067;0043 2215 006B 0067;
+33C7;33C7;33C7;0043 006F 002E;0043 006F 002E;
+33C8;33C8;33C8;0064 0042;0064 0042;
+33C9;33C9;33C9;0047 0079;0047 0079;
+33CA;33CA;33CA;0068 0061;0068 0061;
+33CB;33CB;33CB;0048 0050;0048 0050;
+33CC;33CC;33CC;0069 006E;0069 006E;
+33CD;33CD;33CD;004B 004B;004B 004B;
+33CE;33CE;33CE;004B 004D;004B 004D;
+33CF;33CF;33CF;006B 0074;006B 0074;
+33D0;33D0;33D0;006C 006D;006C 006D;
+33D1;33D1;33D1;006C 006E;006C 006E;
+33D2;33D2;33D2;006C 006F 0067;006C 006F 0067;
+33D3;33D3;33D3;006C 0078;006C 0078;
+33D4;33D4;33D4;006D 0062;006D 0062;
+33D5;33D5;33D5;006D 0069 006C;006D 0069 006C;
+33D6;33D6;33D6;006D 006F 006C;006D 006F 006C;
+33D7;33D7;33D7;0050 0048;0050 0048;
+33D8;33D8;33D8;0070 002E 006D 002E;0070 002E 006D 002E;
+33D9;33D9;33D9;0050 0050 004D;0050 0050 004D;
+33DA;33DA;33DA;0050 0052;0050 0052;
+33DB;33DB;33DB;0073 0072;0073 0072;
+33DC;33DC;33DC;0053 0076;0053 0076;
+33DD;33DD;33DD;0057 0062;0057 0062;
+33DE;33DE;33DE;0056 2215 006D;0056 2215 006D;
+33DF;33DF;33DF;0041 2215 006D;0041 2215 006D;
+33E0;33E0;33E0;0031 65E5;0031 65E5;
+33E1;33E1;33E1;0032 65E5;0032 65E5;
+33E2;33E2;33E2;0033 65E5;0033 65E5;
+33E3;33E3;33E3;0034 65E5;0034 65E5;
+33E4;33E4;33E4;0035 65E5;0035 65E5;
+33E5;33E5;33E5;0036 65E5;0036 65E5;
+33E6;33E6;33E6;0037 65E5;0037 65E5;
+33E7;33E7;33E7;0038 65E5;0038 65E5;
+33E8;33E8;33E8;0039 65E5;0039 65E5;
+33E9;33E9;33E9;0031 0030 65E5;0031 0030 65E5;
+33EA;33EA;33EA;0031 0031 65E5;0031 0031 65E5;
+33EB;33EB;33EB;0031 0032 65E5;0031 0032 65E5;
+33EC;33EC;33EC;0031 0033 65E5;0031 0033 65E5;
+33ED;33ED;33ED;0031 0034 65E5;0031 0034 65E5;
+33EE;33EE;33EE;0031 0035 65E5;0031 0035 65E5;
+33EF;33EF;33EF;0031 0036 65E5;0031 0036 65E5;
+33F0;33F0;33F0;0031 0037 65E5;0031 0037 65E5;
+33F1;33F1;33F1;0031 0038 65E5;0031 0038 65E5;
+33F2;33F2;33F2;0031 0039 65E5;0031 0039 65E5;
+33F3;33F3;33F3;0032 0030 65E5;0032 0030 65E5;
+33F4;33F4;33F4;0032 0031 65E5;0032 0031 65E5;
+33F5;33F5;33F5;0032 0032 65E5;0032 0032 65E5;
+33F6;33F6;33F6;0032 0033 65E5;0032 0033 65E5;
+33F7;33F7;33F7;0032 0034 65E5;0032 0034 65E5;
+33F8;33F8;33F8;0032 0035 65E5;0032 0035 65E5;
+33F9;33F9;33F9;0032 0036 65E5;0032 0036 65E5;
+33FA;33FA;33FA;0032 0037 65E5;0032 0037 65E5;
+33FB;33FB;33FB;0032 0038 65E5;0032 0038 65E5;
+33FC;33FC;33FC;0032 0039 65E5;0032 0039 65E5;
+33FD;33FD;33FD;0033 0030 65E5;0033 0030 65E5;
+33FE;33FE;33FE;0033 0031 65E5;0033 0031 65E5;
+33FF;33FF;33FF;0067 0061 006C;0067 0061 006C;
+A770;A770;A770;A76F;A76F;
+AC00;AC00;1100 1161;AC00;1100 1161;
+AC01;AC01;1100 1161 11A8;AC01;1100 1161 11A8;
+AC02;AC02;1100 1161 11A9;AC02;1100 1161 11A9;
+AC03;AC03;1100 1161 11AA;AC03;1100 1161 11AA;
+AC04;AC04;1100 1161 11AB;AC04;1100 1161 11AB;
+AC05;AC05;1100 1161 11AC;AC05;1100 1161 11AC;
+AC06;AC06;1100 1161 11AD;AC06;1100 1161 11AD;
+AC07;AC07;1100 1161 11AE;AC07;1100 1161 11AE;
+AC08;AC08;1100 1161 11AF;AC08;1100 1161 11AF;
+AC09;AC09;1100 1161 11B0;AC09;1100 1161 11B0;
+AC0A;AC0A;1100 1161 11B1;AC0A;1100 1161 11B1;
+AC0B;AC0B;1100 1161 11B2;AC0B;1100 1161 11B2;
+AC0C;AC0C;1100 1161 11B3;AC0C;1100 1161 11B3;
+AC0D;AC0D;1100 1161 11B4;AC0D;1100 1161 11B4;
+AC0E;AC0E;1100 1161 11B5;AC0E;1100 1161 11B5;
+AC0F;AC0F;1100 1161 11B6;AC0F;1100 1161 11B6;
+AC10;AC10;1100 1161 11B7;AC10;1100 1161 11B7;
+AC11;AC11;1100 1161 11B8;AC11;1100 1161 11B8;
+AC12;AC12;1100 1161 11B9;AC12;1100 1161 11B9;
+AC13;AC13;1100 1161 11BA;AC13;1100 1161 11BA;
+AC14;AC14;1100 1161 11BB;AC14;1100 1161 11BB;
+AC15;AC15;1100 1161 11BC;AC15;1100 1161 11BC;
+AC16;AC16;1100 1161 11BD;AC16;1100 1161 11BD;
+AC17;AC17;1100 1161 11BE;AC17;1100 1161 11BE;
+AC18;AC18;1100 1161 11BF;AC18;1100 1161 11BF;
+AC19;AC19;1100 1161 11C0;AC19;1100 1161 11C0;
+AC1A;AC1A;1100 1161 11C1;AC1A;1100 1161 11C1;
+AC1B;AC1B;1100 1161 11C2;AC1B;1100 1161 11C2;
+AC1C;AC1C;1100 1162;AC1C;1100 1162;
+AC1D;AC1D;1100 1162 11A8;AC1D;1100 1162 11A8;
+AC1E;AC1E;1100 1162 11A9;AC1E;1100 1162 11A9;
+AC1F;AC1F;1100 1162 11AA;AC1F;1100 1162 11AA;
+AC20;AC20;1100 1162 11AB;AC20;1100 1162 11AB;
+AC21;AC21;1100 1162 11AC;AC21;1100 1162 11AC;
+AC22;AC22;1100 1162 11AD;AC22;1100 1162 11AD;
+AC23;AC23;1100 1162 11AE;AC23;1100 1162 11AE;
+AC24;AC24;1100 1162 11AF;AC24;1100 1162 11AF;
+AC25;AC25;1100 1162 11B0;AC25;1100 1162 11B0;
+AC26;AC26;1100 1162 11B1;AC26;1100 1162 11B1;
+AC27;AC27;1100 1162 11B2;AC27;1100 1162 11B2;
+AC28;AC28;1100 1162 11B3;AC28;1100 1162 11B3;
+AC29;AC29;1100 1162 11B4;AC29;1100 1162 11B4;
+AC2A;AC2A;1100 1162 11B5;AC2A;1100 1162 11B5;
+AC2B;AC2B;1100 1162 11B6;AC2B;1100 1162 11B6;
+AC2C;AC2C;1100 1162 11B7;AC2C;1100 1162 11B7;
+AC2D;AC2D;1100 1162 11B8;AC2D;1100 1162 11B8;
+AC2E;AC2E;1100 1162 11B9;AC2E;1100 1162 11B9;
+AC2F;AC2F;1100 1162 11BA;AC2F;1100 1162 11BA;
+AC30;AC30;1100 1162 11BB;AC30;1100 1162 11BB;
+AC31;AC31;1100 1162 11BC;AC31;1100 1162 11BC;
+AC32;AC32;1100 1162 11BD;AC32;1100 1162 11BD;
+AC33;AC33;1100 1162 11BE;AC33;1100 1162 11BE;
+AC34;AC34;1100 1162 11BF;AC34;1100 1162 11BF;
+AC35;AC35;1100 1162 11C0;AC35;1100 1162 11C0;
+AC36;AC36;1100 1162 11C1;AC36;1100 1162 11C1;
+AC37;AC37;1100 1162 11C2;AC37;1100 1162 11C2;
+AC38;AC38;1100 1163;AC38;1100 1163;
+AC39;AC39;1100 1163 11A8;AC39;1100 1163 11A8;
+AC3A;AC3A;1100 1163 11A9;AC3A;1100 1163 11A9;
+AC3B;AC3B;1100 1163 11AA;AC3B;1100 1163 11AA;
+AC3C;AC3C;1100 1163 11AB;AC3C;1100 1163 11AB;
+AC3D;AC3D;1100 1163 11AC;AC3D;1100 1163 11AC;
+AC3E;AC3E;1100 1163 11AD;AC3E;1100 1163 11AD;
+AC3F;AC3F;1100 1163 11AE;AC3F;1100 1163 11AE;
+AC40;AC40;1100 1163 11AF;AC40;1100 1163 11AF;
+AC41;AC41;1100 1163 11B0;AC41;1100 1163 11B0;
+AC42;AC42;1100 1163 11B1;AC42;1100 1163 11B1;
+AC43;AC43;1100 1163 11B2;AC43;1100 1163 11B2;
+AC44;AC44;1100 1163 11B3;AC44;1100 1163 11B3;
+AC45;AC45;1100 1163 11B4;AC45;1100 1163 11B4;
+AC46;AC46;1100 1163 11B5;AC46;1100 1163 11B5;
+AC47;AC47;1100 1163 11B6;AC47;1100 1163 11B6;
+AC48;AC48;1100 1163 11B7;AC48;1100 1163 11B7;
+AC49;AC49;1100 1163 11B8;AC49;1100 1163 11B8;
+AC4A;AC4A;1100 1163 11B9;AC4A;1100 1163 11B9;
+AC4B;AC4B;1100 1163 11BA;AC4B;1100 1163 11BA;
+AC4C;AC4C;1100 1163 11BB;AC4C;1100 1163 11BB;
+AC4D;AC4D;1100 1163 11BC;AC4D;1100 1163 11BC;
+AC4E;AC4E;1100 1163 11BD;AC4E;1100 1163 11BD;
+AC4F;AC4F;1100 1163 11BE;AC4F;1100 1163 11BE;
+AC50;AC50;1100 1163 11BF;AC50;1100 1163 11BF;
+AC51;AC51;1100 1163 11C0;AC51;1100 1163 11C0;
+AC52;AC52;1100 1163 11C1;AC52;1100 1163 11C1;
+AC53;AC53;1100 1163 11C2;AC53;1100 1163 11C2;
+AC54;AC54;1100 1164;AC54;1100 1164;
+AC55;AC55;1100 1164 11A8;AC55;1100 1164 11A8;
+AC56;AC56;1100 1164 11A9;AC56;1100 1164 11A9;
+AC57;AC57;1100 1164 11AA;AC57;1100 1164 11AA;
+AC58;AC58;1100 1164 11AB;AC58;1100 1164 11AB;
+AC59;AC59;1100 1164 11AC;AC59;1100 1164 11AC;
+AC5A;AC5A;1100 1164 11AD;AC5A;1100 1164 11AD;
+AC5B;AC5B;1100 1164 11AE;AC5B;1100 1164 11AE;
+AC5C;AC5C;1100 1164 11AF;AC5C;1100 1164 11AF;
+AC5D;AC5D;1100 1164 11B0;AC5D;1100 1164 11B0;
+AC5E;AC5E;1100 1164 11B1;AC5E;1100 1164 11B1;
+AC5F;AC5F;1100 1164 11B2;AC5F;1100 1164 11B2;
+AC60;AC60;1100 1164 11B3;AC60;1100 1164 11B3;
+AC61;AC61;1100 1164 11B4;AC61;1100 1164 11B4;
+AC62;AC62;1100 1164 11B5;AC62;1100 1164 11B5;
+AC63;AC63;1100 1164 11B6;AC63;1100 1164 11B6;
+AC64;AC64;1100 1164 11B7;AC64;1100 1164 11B7;
+AC65;AC65;1100 1164 11B8;AC65;1100 1164 11B8;
+AC66;AC66;1100 1164 11B9;AC66;1100 1164 11B9;
+AC67;AC67;1100 1164 11BA;AC67;1100 1164 11BA;
+AC68;AC68;1100 1164 11BB;AC68;1100 1164 11BB;
+AC69;AC69;1100 1164 11BC;AC69;1100 1164 11BC;
+AC6A;AC6A;1100 1164 11BD;AC6A;1100 1164 11BD;
+AC6B;AC6B;1100 1164 11BE;AC6B;1100 1164 11BE;
+AC6C;AC6C;1100 1164 11BF;AC6C;1100 1164 11BF;
+AC6D;AC6D;1100 1164 11C0;AC6D;1100 1164 11C0;
+AC6E;AC6E;1100 1164 11C1;AC6E;1100 1164 11C1;
+AC6F;AC6F;1100 1164 11C2;AC6F;1100 1164 11C2;
+AC70;AC70;1100 1165;AC70;1100 1165;
+AC71;AC71;1100 1165 11A8;AC71;1100 1165 11A8;
+AC72;AC72;1100 1165 11A9;AC72;1100 1165 11A9;
+AC73;AC73;1100 1165 11AA;AC73;1100 1165 11AA;
+AC74;AC74;1100 1165 11AB;AC74;1100 1165 11AB;
+AC75;AC75;1100 1165 11AC;AC75;1100 1165 11AC;
+AC76;AC76;1100 1165 11AD;AC76;1100 1165 11AD;
+AC77;AC77;1100 1165 11AE;AC77;1100 1165 11AE;
+AC78;AC78;1100 1165 11AF;AC78;1100 1165 11AF;
+AC79;AC79;1100 1165 11B0;AC79;1100 1165 11B0;
+AC7A;AC7A;1100 1165 11B1;AC7A;1100 1165 11B1;
+AC7B;AC7B;1100 1165 11B2;AC7B;1100 1165 11B2;
+AC7C;AC7C;1100 1165 11B3;AC7C;1100 1165 11B3;
+AC7D;AC7D;1100 1165 11B4;AC7D;1100 1165 11B4;
+AC7E;AC7E;1100 1165 11B5;AC7E;1100 1165 11B5;
+AC7F;AC7F;1100 1165 11B6;AC7F;1100 1165 11B6;
+AC80;AC80;1100 1165 11B7;AC80;1100 1165 11B7;
+AC81;AC81;1100 1165 11B8;AC81;1100 1165 11B8;
+AC82;AC82;1100 1165 11B9;AC82;1100 1165 11B9;
+AC83;AC83;1100 1165 11BA;AC83;1100 1165 11BA;
+AC84;AC84;1100 1165 11BB;AC84;1100 1165 11BB;
+AC85;AC85;1100 1165 11BC;AC85;1100 1165 11BC;
+AC86;AC86;1100 1165 11BD;AC86;1100 1165 11BD;
+AC87;AC87;1100 1165 11BE;AC87;1100 1165 11BE;
+AC88;AC88;1100 1165 11BF;AC88;1100 1165 11BF;
+AC89;AC89;1100 1165 11C0;AC89;1100 1165 11C0;
+AC8A;AC8A;1100 1165 11C1;AC8A;1100 1165 11C1;
+AC8B;AC8B;1100 1165 11C2;AC8B;1100 1165 11C2;
+AC8C;AC8C;1100 1166;AC8C;1100 1166;
+AC8D;AC8D;1100 1166 11A8;AC8D;1100 1166 11A8;
+AC8E;AC8E;1100 1166 11A9;AC8E;1100 1166 11A9;
+AC8F;AC8F;1100 1166 11AA;AC8F;1100 1166 11AA;
+AC90;AC90;1100 1166 11AB;AC90;1100 1166 11AB;
+AC91;AC91;1100 1166 11AC;AC91;1100 1166 11AC;
+AC92;AC92;1100 1166 11AD;AC92;1100 1166 11AD;
+AC93;AC93;1100 1166 11AE;AC93;1100 1166 11AE;
+AC94;AC94;1100 1166 11AF;AC94;1100 1166 11AF;
+AC95;AC95;1100 1166 11B0;AC95;1100 1166 11B0;
+AC96;AC96;1100 1166 11B1;AC96;1100 1166 11B1;
+AC97;AC97;1100 1166 11B2;AC97;1100 1166 11B2;
+AC98;AC98;1100 1166 11B3;AC98;1100 1166 11B3;
+AC99;AC99;1100 1166 11B4;AC99;1100 1166 11B4;
+AC9A;AC9A;1100 1166 11B5;AC9A;1100 1166 11B5;
+AC9B;AC9B;1100 1166 11B6;AC9B;1100 1166 11B6;
+AC9C;AC9C;1100 1166 11B7;AC9C;1100 1166 11B7;
+AC9D;AC9D;1100 1166 11B8;AC9D;1100 1166 11B8;
+AC9E;AC9E;1100 1166 11B9;AC9E;1100 1166 11B9;
+AC9F;AC9F;1100 1166 11BA;AC9F;1100 1166 11BA;
+ACA0;ACA0;1100 1166 11BB;ACA0;1100 1166 11BB;
+ACA1;ACA1;1100 1166 11BC;ACA1;1100 1166 11BC;
+ACA2;ACA2;1100 1166 11BD;ACA2;1100 1166 11BD;
+ACA3;ACA3;1100 1166 11BE;ACA3;1100 1166 11BE;
+ACA4;ACA4;1100 1166 11BF;ACA4;1100 1166 11BF;
+ACA5;ACA5;1100 1166 11C0;ACA5;1100 1166 11C0;
+ACA6;ACA6;1100 1166 11C1;ACA6;1100 1166 11C1;
+ACA7;ACA7;1100 1166 11C2;ACA7;1100 1166 11C2;
+ACA8;ACA8;1100 1167;ACA8;1100 1167;
+ACA9;ACA9;1100 1167 11A8;ACA9;1100 1167 11A8;
+ACAA;ACAA;1100 1167 11A9;ACAA;1100 1167 11A9;
+ACAB;ACAB;1100 1167 11AA;ACAB;1100 1167 11AA;
+ACAC;ACAC;1100 1167 11AB;ACAC;1100 1167 11AB;
+ACAD;ACAD;1100 1167 11AC;ACAD;1100 1167 11AC;
+ACAE;ACAE;1100 1167 11AD;ACAE;1100 1167 11AD;
+ACAF;ACAF;1100 1167 11AE;ACAF;1100 1167 11AE;
+ACB0;ACB0;1100 1167 11AF;ACB0;1100 1167 11AF;
+ACB1;ACB1;1100 1167 11B0;ACB1;1100 1167 11B0;
+ACB2;ACB2;1100 1167 11B1;ACB2;1100 1167 11B1;
+ACB3;ACB3;1100 1167 11B2;ACB3;1100 1167 11B2;
+ACB4;ACB4;1100 1167 11B3;ACB4;1100 1167 11B3;
+ACB5;ACB5;1100 1167 11B4;ACB5;1100 1167 11B4;
+ACB6;ACB6;1100 1167 11B5;ACB6;1100 1167 11B5;
+ACB7;ACB7;1100 1167 11B6;ACB7;1100 1167 11B6;
+ACB8;ACB8;1100 1167 11B7;ACB8;1100 1167 11B7;
+ACB9;ACB9;1100 1167 11B8;ACB9;1100 1167 11B8;
+ACBA;ACBA;1100 1167 11B9;ACBA;1100 1167 11B9;
+ACBB;ACBB;1100 1167 11BA;ACBB;1100 1167 11BA;
+ACBC;ACBC;1100 1167 11BB;ACBC;1100 1167 11BB;
+ACBD;ACBD;1100 1167 11BC;ACBD;1100 1167 11BC;
+ACBE;ACBE;1100 1167 11BD;ACBE;1100 1167 11BD;
+ACBF;ACBF;1100 1167 11BE;ACBF;1100 1167 11BE;
+ACC0;ACC0;1100 1167 11BF;ACC0;1100 1167 11BF;
+ACC1;ACC1;1100 1167 11C0;ACC1;1100 1167 11C0;
+ACC2;ACC2;1100 1167 11C1;ACC2;1100 1167 11C1;
+ACC3;ACC3;1100 1167 11C2;ACC3;1100 1167 11C2;
+ACC4;ACC4;1100 1168;ACC4;1100 1168;
+ACC5;ACC5;1100 1168 11A8;ACC5;1100 1168 11A8;
+ACC6;ACC6;1100 1168 11A9;ACC6;1100 1168 11A9;
+ACC7;ACC7;1100 1168 11AA;ACC7;1100 1168 11AA;
+ACC8;ACC8;1100 1168 11AB;ACC8;1100 1168 11AB;
+ACC9;ACC9;1100 1168 11AC;ACC9;1100 1168 11AC;
+ACCA;ACCA;1100 1168 11AD;ACCA;1100 1168 11AD;
+ACCB;ACCB;1100 1168 11AE;ACCB;1100 1168 11AE;
+ACCC;ACCC;1100 1168 11AF;ACCC;1100 1168 11AF;
+ACCD;ACCD;1100 1168 11B0;ACCD;1100 1168 11B0;
+ACCE;ACCE;1100 1168 11B1;ACCE;1100 1168 11B1;
+ACCF;ACCF;1100 1168 11B2;ACCF;1100 1168 11B2;
+ACD0;ACD0;1100 1168 11B3;ACD0;1100 1168 11B3;
+ACD1;ACD1;1100 1168 11B4;ACD1;1100 1168 11B4;
+ACD2;ACD2;1100 1168 11B5;ACD2;1100 1168 11B5;
+ACD3;ACD3;1100 1168 11B6;ACD3;1100 1168 11B6;
+ACD4;ACD4;1100 1168 11B7;ACD4;1100 1168 11B7;
+ACD5;ACD5;1100 1168 11B8;ACD5;1100 1168 11B8;
+ACD6;ACD6;1100 1168 11B9;ACD6;1100 1168 11B9;
+ACD7;ACD7;1100 1168 11BA;ACD7;1100 1168 11BA;
+ACD8;ACD8;1100 1168 11BB;ACD8;1100 1168 11BB;
+ACD9;ACD9;1100 1168 11BC;ACD9;1100 1168 11BC;
+ACDA;ACDA;1100 1168 11BD;ACDA;1100 1168 11BD;
+ACDB;ACDB;1100 1168 11BE;ACDB;1100 1168 11BE;
+ACDC;ACDC;1100 1168 11BF;ACDC;1100 1168 11BF;
+ACDD;ACDD;1100 1168 11C0;ACDD;1100 1168 11C0;
+ACDE;ACDE;1100 1168 11C1;ACDE;1100 1168 11C1;
+ACDF;ACDF;1100 1168 11C2;ACDF;1100 1168 11C2;
+ACE0;ACE0;1100 1169;ACE0;1100 1169;
+ACE1;ACE1;1100 1169 11A8;ACE1;1100 1169 11A8;
+ACE2;ACE2;1100 1169 11A9;ACE2;1100 1169 11A9;
+ACE3;ACE3;1100 1169 11AA;ACE3;1100 1169 11AA;
+ACE4;ACE4;1100 1169 11AB;ACE4;1100 1169 11AB;
+ACE5;ACE5;1100 1169 11AC;ACE5;1100 1169 11AC;
+ACE6;ACE6;1100 1169 11AD;ACE6;1100 1169 11AD;
+ACE7;ACE7;1100 1169 11AE;ACE7;1100 1169 11AE;
+ACE8;ACE8;1100 1169 11AF;ACE8;1100 1169 11AF;
+ACE9;ACE9;1100 1169 11B0;ACE9;1100 1169 11B0;
+ACEA;ACEA;1100 1169 11B1;ACEA;1100 1169 11B1;
+ACEB;ACEB;1100 1169 11B2;ACEB;1100 1169 11B2;
+ACEC;ACEC;1100 1169 11B3;ACEC;1100 1169 11B3;
+ACED;ACED;1100 1169 11B4;ACED;1100 1169 11B4;
+ACEE;ACEE;1100 1169 11B5;ACEE;1100 1169 11B5;
+ACEF;ACEF;1100 1169 11B6;ACEF;1100 1169 11B6;
+ACF0;ACF0;1100 1169 11B7;ACF0;1100 1169 11B7;
+ACF1;ACF1;1100 1169 11B8;ACF1;1100 1169 11B8;
+ACF2;ACF2;1100 1169 11B9;ACF2;1100 1169 11B9;
+ACF3;ACF3;1100 1169 11BA;ACF3;1100 1169 11BA;
+ACF4;ACF4;1100 1169 11BB;ACF4;1100 1169 11BB;
+ACF5;ACF5;1100 1169 11BC;ACF5;1100 1169 11BC;
+ACF6;ACF6;1100 1169 11BD;ACF6;1100 1169 11BD;
+ACF7;ACF7;1100 1169 11BE;ACF7;1100 1169 11BE;
+ACF8;ACF8;1100 1169 11BF;ACF8;1100 1169 11BF;
+ACF9;ACF9;1100 1169 11C0;ACF9;1100 1169 11C0;
+ACFA;ACFA;1100 1169 11C1;ACFA;1100 1169 11C1;
+ACFB;ACFB;1100 1169 11C2;ACFB;1100 1169 11C2;
+ACFC;ACFC;1100 116A;ACFC;1100 116A;
+ACFD;ACFD;1100 116A 11A8;ACFD;1100 116A 11A8;
+ACFE;ACFE;1100 116A 11A9;ACFE;1100 116A 11A9;
+ACFF;ACFF;1100 116A 11AA;ACFF;1100 116A 11AA;
+AD00;AD00;1100 116A 11AB;AD00;1100 116A 11AB;
+AD01;AD01;1100 116A 11AC;AD01;1100 116A 11AC;
+AD02;AD02;1100 116A 11AD;AD02;1100 116A 11AD;
+AD03;AD03;1100 116A 11AE;AD03;1100 116A 11AE;
+AD04;AD04;1100 116A 11AF;AD04;1100 116A 11AF;
+AD05;AD05;1100 116A 11B0;AD05;1100 116A 11B0;
+AD06;AD06;1100 116A 11B1;AD06;1100 116A 11B1;
+AD07;AD07;1100 116A 11B2;AD07;1100 116A 11B2;
+AD08;AD08;1100 116A 11B3;AD08;1100 116A 11B3;
+AD09;AD09;1100 116A 11B4;AD09;1100 116A 11B4;
+AD0A;AD0A;1100 116A 11B5;AD0A;1100 116A 11B5;
+AD0B;AD0B;1100 116A 11B6;AD0B;1100 116A 11B6;
+AD0C;AD0C;1100 116A 11B7;AD0C;1100 116A 11B7;
+AD0D;AD0D;1100 116A 11B8;AD0D;1100 116A 11B8;
+AD0E;AD0E;1100 116A 11B9;AD0E;1100 116A 11B9;
+AD0F;AD0F;1100 116A 11BA;AD0F;1100 116A 11BA;
+AD10;AD10;1100 116A 11BB;AD10;1100 116A 11BB;
+AD11;AD11;1100 116A 11BC;AD11;1100 116A 11BC;
+AD12;AD12;1100 116A 11BD;AD12;1100 116A 11BD;
+AD13;AD13;1100 116A 11BE;AD13;1100 116A 11BE;
+AD14;AD14;1100 116A 11BF;AD14;1100 116A 11BF;
+AD15;AD15;1100 116A 11C0;AD15;1100 116A 11C0;
+AD16;AD16;1100 116A 11C1;AD16;1100 116A 11C1;
+AD17;AD17;1100 116A 11C2;AD17;1100 116A 11C2;
+AD18;AD18;1100 116B;AD18;1100 116B;
+AD19;AD19;1100 116B 11A8;AD19;1100 116B 11A8;
+AD1A;AD1A;1100 116B 11A9;AD1A;1100 116B 11A9;
+AD1B;AD1B;1100 116B 11AA;AD1B;1100 116B 11AA;
+AD1C;AD1C;1100 116B 11AB;AD1C;1100 116B 11AB;
+AD1D;AD1D;1100 116B 11AC;AD1D;1100 116B 11AC;
+AD1E;AD1E;1100 116B 11AD;AD1E;1100 116B 11AD;
+AD1F;AD1F;1100 116B 11AE;AD1F;1100 116B 11AE;
+AD20;AD20;1100 116B 11AF;AD20;1100 116B 11AF;
+AD21;AD21;1100 116B 11B0;AD21;1100 116B 11B0;
+AD22;AD22;1100 116B 11B1;AD22;1100 116B 11B1;
+AD23;AD23;1100 116B 11B2;AD23;1100 116B 11B2;
+AD24;AD24;1100 116B 11B3;AD24;1100 116B 11B3;
+AD25;AD25;1100 116B 11B4;AD25;1100 116B 11B4;
+AD26;AD26;1100 116B 11B5;AD26;1100 116B 11B5;
+AD27;AD27;1100 116B 11B6;AD27;1100 116B 11B6;
+AD28;AD28;1100 116B 11B7;AD28;1100 116B 11B7;
+AD29;AD29;1100 116B 11B8;AD29;1100 116B 11B8;
+AD2A;AD2A;1100 116B 11B9;AD2A;1100 116B 11B9;
+AD2B;AD2B;1100 116B 11BA;AD2B;1100 116B 11BA;
+AD2C;AD2C;1100 116B 11BB;AD2C;1100 116B 11BB;
+AD2D;AD2D;1100 116B 11BC;AD2D;1100 116B 11BC;
+AD2E;AD2E;1100 116B 11BD;AD2E;1100 116B 11BD;
+AD2F;AD2F;1100 116B 11BE;AD2F;1100 116B 11BE;
+AD30;AD30;1100 116B 11BF;AD30;1100 116B 11BF;
+AD31;AD31;1100 116B 11C0;AD31;1100 116B 11C0;
+AD32;AD32;1100 116B 11C1;AD32;1100 116B 11C1;
+AD33;AD33;1100 116B 11C2;AD33;1100 116B 11C2;
+AD34;AD34;1100 116C;AD34;1100 116C;
+AD35;AD35;1100 116C 11A8;AD35;1100 116C 11A8;
+AD36;AD36;1100 116C 11A9;AD36;1100 116C 11A9;
+AD37;AD37;1100 116C 11AA;AD37;1100 116C 11AA;
+AD38;AD38;1100 116C 11AB;AD38;1100 116C 11AB;
+AD39;AD39;1100 116C 11AC;AD39;1100 116C 11AC;
+AD3A;AD3A;1100 116C 11AD;AD3A;1100 116C 11AD;
+AD3B;AD3B;1100 116C 11AE;AD3B;1100 116C 11AE;
+AD3C;AD3C;1100 116C 11AF;AD3C;1100 116C 11AF;
+AD3D;AD3D;1100 116C 11B0;AD3D;1100 116C 11B0;
+AD3E;AD3E;1100 116C 11B1;AD3E;1100 116C 11B1;
+AD3F;AD3F;1100 116C 11B2;AD3F;1100 116C 11B2;
+AD40;AD40;1100 116C 11B3;AD40;1100 116C 11B3;
+AD41;AD41;1100 116C 11B4;AD41;1100 116C 11B4;
+AD42;AD42;1100 116C 11B5;AD42;1100 116C 11B5;
+AD43;AD43;1100 116C 11B6;AD43;1100 116C 11B6;
+AD44;AD44;1100 116C 11B7;AD44;1100 116C 11B7;
+AD45;AD45;1100 116C 11B8;AD45;1100 116C 11B8;
+AD46;AD46;1100 116C 11B9;AD46;1100 116C 11B9;
+AD47;AD47;1100 116C 11BA;AD47;1100 116C 11BA;
+AD48;AD48;1100 116C 11BB;AD48;1100 116C 11BB;
+AD49;AD49;1100 116C 11BC;AD49;1100 116C 11BC;
+AD4A;AD4A;1100 116C 11BD;AD4A;1100 116C 11BD;
+AD4B;AD4B;1100 116C 11BE;AD4B;1100 116C 11BE;
+AD4C;AD4C;1100 116C 11BF;AD4C;1100 116C 11BF;
+AD4D;AD4D;1100 116C 11C0;AD4D;1100 116C 11C0;
+AD4E;AD4E;1100 116C 11C1;AD4E;1100 116C 11C1;
+AD4F;AD4F;1100 116C 11C2;AD4F;1100 116C 11C2;
+AD50;AD50;1100 116D;AD50;1100 116D;
+AD51;AD51;1100 116D 11A8;AD51;1100 116D 11A8;
+AD52;AD52;1100 116D 11A9;AD52;1100 116D 11A9;
+AD53;AD53;1100 116D 11AA;AD53;1100 116D 11AA;
+AD54;AD54;1100 116D 11AB;AD54;1100 116D 11AB;
+AD55;AD55;1100 116D 11AC;AD55;1100 116D 11AC;
+AD56;AD56;1100 116D 11AD;AD56;1100 116D 11AD;
+AD57;AD57;1100 116D 11AE;AD57;1100 116D 11AE;
+AD58;AD58;1100 116D 11AF;AD58;1100 116D 11AF;
+AD59;AD59;1100 116D 11B0;AD59;1100 116D 11B0;
+AD5A;AD5A;1100 116D 11B1;AD5A;1100 116D 11B1;
+AD5B;AD5B;1100 116D 11B2;AD5B;1100 116D 11B2;
+AD5C;AD5C;1100 116D 11B3;AD5C;1100 116D 11B3;
+AD5D;AD5D;1100 116D 11B4;AD5D;1100 116D 11B4;
+AD5E;AD5E;1100 116D 11B5;AD5E;1100 116D 11B5;
+AD5F;AD5F;1100 116D 11B6;AD5F;1100 116D 11B6;
+AD60;AD60;1100 116D 11B7;AD60;1100 116D 11B7;
+AD61;AD61;1100 116D 11B8;AD61;1100 116D 11B8;
+AD62;AD62;1100 116D 11B9;AD62;1100 116D 11B9;
+AD63;AD63;1100 116D 11BA;AD63;1100 116D 11BA;
+AD64;AD64;1100 116D 11BB;AD64;1100 116D 11BB;
+AD65;AD65;1100 116D 11BC;AD65;1100 116D 11BC;
+AD66;AD66;1100 116D 11BD;AD66;1100 116D 11BD;
+AD67;AD67;1100 116D 11BE;AD67;1100 116D 11BE;
+AD68;AD68;1100 116D 11BF;AD68;1100 116D 11BF;
+AD69;AD69;1100 116D 11C0;AD69;1100 116D 11C0;
+AD6A;AD6A;1100 116D 11C1;AD6A;1100 116D 11C1;
+AD6B;AD6B;1100 116D 11C2;AD6B;1100 116D 11C2;
+AD6C;AD6C;1100 116E;AD6C;1100 116E;
+AD6D;AD6D;1100 116E 11A8;AD6D;1100 116E 11A8;
+AD6E;AD6E;1100 116E 11A9;AD6E;1100 116E 11A9;
+AD6F;AD6F;1100 116E 11AA;AD6F;1100 116E 11AA;
+AD70;AD70;1100 116E 11AB;AD70;1100 116E 11AB;
+AD71;AD71;1100 116E 11AC;AD71;1100 116E 11AC;
+AD72;AD72;1100 116E 11AD;AD72;1100 116E 11AD;
+AD73;AD73;1100 116E 11AE;AD73;1100 116E 11AE;
+AD74;AD74;1100 116E 11AF;AD74;1100 116E 11AF;
+AD75;AD75;1100 116E 11B0;AD75;1100 116E 11B0;
+AD76;AD76;1100 116E 11B1;AD76;1100 116E 11B1;
+AD77;AD77;1100 116E 11B2;AD77;1100 116E 11B2;
+AD78;AD78;1100 116E 11B3;AD78;1100 116E 11B3;
+AD79;AD79;1100 116E 11B4;AD79;1100 116E 11B4;
+AD7A;AD7A;1100 116E 11B5;AD7A;1100 116E 11B5;
+AD7B;AD7B;1100 116E 11B6;AD7B;1100 116E 11B6;
+AD7C;AD7C;1100 116E 11B7;AD7C;1100 116E 11B7;
+AD7D;AD7D;1100 116E 11B8;AD7D;1100 116E 11B8;
+AD7E;AD7E;1100 116E 11B9;AD7E;1100 116E 11B9;
+AD7F;AD7F;1100 116E 11BA;AD7F;1100 116E 11BA;
+AD80;AD80;1100 116E 11BB;AD80;1100 116E 11BB;
+AD81;AD81;1100 116E 11BC;AD81;1100 116E 11BC;
+AD82;AD82;1100 116E 11BD;AD82;1100 116E 11BD;
+AD83;AD83;1100 116E 11BE;AD83;1100 116E 11BE;
+AD84;AD84;1100 116E 11BF;AD84;1100 116E 11BF;
+AD85;AD85;1100 116E 11C0;AD85;1100 116E 11C0;
+AD86;AD86;1100 116E 11C1;AD86;1100 116E 11C1;
+AD87;AD87;1100 116E 11C2;AD87;1100 116E 11C2;
+AD88;AD88;1100 116F;AD88;1100 116F;
+AD89;AD89;1100 116F 11A8;AD89;1100 116F 11A8;
+AD8A;AD8A;1100 116F 11A9;AD8A;1100 116F 11A9;
+AD8B;AD8B;1100 116F 11AA;AD8B;1100 116F 11AA;
+AD8C;AD8C;1100 116F 11AB;AD8C;1100 116F 11AB;
+AD8D;AD8D;1100 116F 11AC;AD8D;1100 116F 11AC;
+AD8E;AD8E;1100 116F 11AD;AD8E;1100 116F 11AD;
+AD8F;AD8F;1100 116F 11AE;AD8F;1100 116F 11AE;
+AD90;AD90;1100 116F 11AF;AD90;1100 116F 11AF;
+AD91;AD91;1100 116F 11B0;AD91;1100 116F 11B0;
+AD92;AD92;1100 116F 11B1;AD92;1100 116F 11B1;
+AD93;AD93;1100 116F 11B2;AD93;1100 116F 11B2;
+AD94;AD94;1100 116F 11B3;AD94;1100 116F 11B3;
+AD95;AD95;1100 116F 11B4;AD95;1100 116F 11B4;
+AD96;AD96;1100 116F 11B5;AD96;1100 116F 11B5;
+AD97;AD97;1100 116F 11B6;AD97;1100 116F 11B6;
+AD98;AD98;1100 116F 11B7;AD98;1100 116F 11B7;
+AD99;AD99;1100 116F 11B8;AD99;1100 116F 11B8;
+AD9A;AD9A;1100 116F 11B9;AD9A;1100 116F 11B9;
+AD9B;AD9B;1100 116F 11BA;AD9B;1100 116F 11BA;
+AD9C;AD9C;1100 116F 11BB;AD9C;1100 116F 11BB;
+AD9D;AD9D;1100 116F 11BC;AD9D;1100 116F 11BC;
+AD9E;AD9E;1100 116F 11BD;AD9E;1100 116F 11BD;
+AD9F;AD9F;1100 116F 11BE;AD9F;1100 116F 11BE;
+ADA0;ADA0;1100 116F 11BF;ADA0;1100 116F 11BF;
+ADA1;ADA1;1100 116F 11C0;ADA1;1100 116F 11C0;
+ADA2;ADA2;1100 116F 11C1;ADA2;1100 116F 11C1;
+ADA3;ADA3;1100 116F 11C2;ADA3;1100 116F 11C2;
+ADA4;ADA4;1100 1170;ADA4;1100 1170;
+ADA5;ADA5;1100 1170 11A8;ADA5;1100 1170 11A8;
+ADA6;ADA6;1100 1170 11A9;ADA6;1100 1170 11A9;
+ADA7;ADA7;1100 1170 11AA;ADA7;1100 1170 11AA;
+ADA8;ADA8;1100 1170 11AB;ADA8;1100 1170 11AB;
+ADA9;ADA9;1100 1170 11AC;ADA9;1100 1170 11AC;
+ADAA;ADAA;1100 1170 11AD;ADAA;1100 1170 11AD;
+ADAB;ADAB;1100 1170 11AE;ADAB;1100 1170 11AE;
+ADAC;ADAC;1100 1170 11AF;ADAC;1100 1170 11AF;
+ADAD;ADAD;1100 1170 11B0;ADAD;1100 1170 11B0;
+ADAE;ADAE;1100 1170 11B1;ADAE;1100 1170 11B1;
+ADAF;ADAF;1100 1170 11B2;ADAF;1100 1170 11B2;
+ADB0;ADB0;1100 1170 11B3;ADB0;1100 1170 11B3;
+ADB1;ADB1;1100 1170 11B4;ADB1;1100 1170 11B4;
+ADB2;ADB2;1100 1170 11B5;ADB2;1100 1170 11B5;
+ADB3;ADB3;1100 1170 11B6;ADB3;1100 1170 11B6;
+ADB4;ADB4;1100 1170 11B7;ADB4;1100 1170 11B7;
+ADB5;ADB5;1100 1170 11B8;ADB5;1100 1170 11B8;
+ADB6;ADB6;1100 1170 11B9;ADB6;1100 1170 11B9;
+ADB7;ADB7;1100 1170 11BA;ADB7;1100 1170 11BA;
+ADB8;ADB8;1100 1170 11BB;ADB8;1100 1170 11BB;
+ADB9;ADB9;1100 1170 11BC;ADB9;1100 1170 11BC;
+ADBA;ADBA;1100 1170 11BD;ADBA;1100 1170 11BD;
+ADBB;ADBB;1100 1170 11BE;ADBB;1100 1170 11BE;
+ADBC;ADBC;1100 1170 11BF;ADBC;1100 1170 11BF;
+ADBD;ADBD;1100 1170 11C0;ADBD;1100 1170 11C0;
+ADBE;ADBE;1100 1170 11C1;ADBE;1100 1170 11C1;
+ADBF;ADBF;1100 1170 11C2;ADBF;1100 1170 11C2;
+ADC0;ADC0;1100 1171;ADC0;1100 1171;
+ADC1;ADC1;1100 1171 11A8;ADC1;1100 1171 11A8;
+ADC2;ADC2;1100 1171 11A9;ADC2;1100 1171 11A9;
+ADC3;ADC3;1100 1171 11AA;ADC3;1100 1171 11AA;
+ADC4;ADC4;1100 1171 11AB;ADC4;1100 1171 11AB;
+ADC5;ADC5;1100 1171 11AC;ADC5;1100 1171 11AC;
+ADC6;ADC6;1100 1171 11AD;ADC6;1100 1171 11AD;
+ADC7;ADC7;1100 1171 11AE;ADC7;1100 1171 11AE;
+ADC8;ADC8;1100 1171 11AF;ADC8;1100 1171 11AF;
+ADC9;ADC9;1100 1171 11B0;ADC9;1100 1171 11B0;
+ADCA;ADCA;1100 1171 11B1;ADCA;1100 1171 11B1;
+ADCB;ADCB;1100 1171 11B2;ADCB;1100 1171 11B2;
+ADCC;ADCC;1100 1171 11B3;ADCC;1100 1171 11B3;
+ADCD;ADCD;1100 1171 11B4;ADCD;1100 1171 11B4;
+ADCE;ADCE;1100 1171 11B5;ADCE;1100 1171 11B5;
+ADCF;ADCF;1100 1171 11B6;ADCF;1100 1171 11B6;
+ADD0;ADD0;1100 1171 11B7;ADD0;1100 1171 11B7;
+ADD1;ADD1;1100 1171 11B8;ADD1;1100 1171 11B8;
+ADD2;ADD2;1100 1171 11B9;ADD2;1100 1171 11B9;
+ADD3;ADD3;1100 1171 11BA;ADD3;1100 1171 11BA;
+ADD4;ADD4;1100 1171 11BB;ADD4;1100 1171 11BB;
+ADD5;ADD5;1100 1171 11BC;ADD5;1100 1171 11BC;
+ADD6;ADD6;1100 1171 11BD;ADD6;1100 1171 11BD;
+ADD7;ADD7;1100 1171 11BE;ADD7;1100 1171 11BE;
+ADD8;ADD8;1100 1171 11BF;ADD8;1100 1171 11BF;
+ADD9;ADD9;1100 1171 11C0;ADD9;1100 1171 11C0;
+ADDA;ADDA;1100 1171 11C1;ADDA;1100 1171 11C1;
+ADDB;ADDB;1100 1171 11C2;ADDB;1100 1171 11C2;
+ADDC;ADDC;1100 1172;ADDC;1100 1172;
+ADDD;ADDD;1100 1172 11A8;ADDD;1100 1172 11A8;
+ADDE;ADDE;1100 1172 11A9;ADDE;1100 1172 11A9;
+ADDF;ADDF;1100 1172 11AA;ADDF;1100 1172 11AA;
+ADE0;ADE0;1100 1172 11AB;ADE0;1100 1172 11AB;
+ADE1;ADE1;1100 1172 11AC;ADE1;1100 1172 11AC;
+ADE2;ADE2;1100 1172 11AD;ADE2;1100 1172 11AD;
+ADE3;ADE3;1100 1172 11AE;ADE3;1100 1172 11AE;
+ADE4;ADE4;1100 1172 11AF;ADE4;1100 1172 11AF;
+ADE5;ADE5;1100 1172 11B0;ADE5;1100 1172 11B0;
+ADE6;ADE6;1100 1172 11B1;ADE6;1100 1172 11B1;
+ADE7;ADE7;1100 1172 11B2;ADE7;1100 1172 11B2;
+ADE8;ADE8;1100 1172 11B3;ADE8;1100 1172 11B3;
+ADE9;ADE9;1100 1172 11B4;ADE9;1100 1172 11B4;
+ADEA;ADEA;1100 1172 11B5;ADEA;1100 1172 11B5;
+ADEB;ADEB;1100 1172 11B6;ADEB;1100 1172 11B6;
+ADEC;ADEC;1100 1172 11B7;ADEC;1100 1172 11B7;
+ADED;ADED;1100 1172 11B8;ADED;1100 1172 11B8;
+ADEE;ADEE;1100 1172 11B9;ADEE;1100 1172 11B9;
+ADEF;ADEF;1100 1172 11BA;ADEF;1100 1172 11BA;
+ADF0;ADF0;1100 1172 11BB;ADF0;1100 1172 11BB;
+ADF1;ADF1;1100 1172 11BC;ADF1;1100 1172 11BC;
+ADF2;ADF2;1100 1172 11BD;ADF2;1100 1172 11BD;
+ADF3;ADF3;1100 1172 11BE;ADF3;1100 1172 11BE;
+ADF4;ADF4;1100 1172 11BF;ADF4;1100 1172 11BF;
+ADF5;ADF5;1100 1172 11C0;ADF5;1100 1172 11C0;
+ADF6;ADF6;1100 1172 11C1;ADF6;1100 1172 11C1;
+ADF7;ADF7;1100 1172 11C2;ADF7;1100 1172 11C2;
+ADF8;ADF8;1100 1173;ADF8;1100 1173;
+ADF9;ADF9;1100 1173 11A8;ADF9;1100 1173 11A8;
+ADFA;ADFA;1100 1173 11A9;ADFA;1100 1173 11A9;
+ADFB;ADFB;1100 1173 11AA;ADFB;1100 1173 11AA;
+ADFC;ADFC;1100 1173 11AB;ADFC;1100 1173 11AB;
+ADFD;ADFD;1100 1173 11AC;ADFD;1100 1173 11AC;
+ADFE;ADFE;1100 1173 11AD;ADFE;1100 1173 11AD;
+ADFF;ADFF;1100 1173 11AE;ADFF;1100 1173 11AE;
+AE00;AE00;1100 1173 11AF;AE00;1100 1173 11AF;
+AE01;AE01;1100 1173 11B0;AE01;1100 1173 11B0;
+AE02;AE02;1100 1173 11B1;AE02;1100 1173 11B1;
+AE03;AE03;1100 1173 11B2;AE03;1100 1173 11B2;
+AE04;AE04;1100 1173 11B3;AE04;1100 1173 11B3;
+AE05;AE05;1100 1173 11B4;AE05;1100 1173 11B4;
+AE06;AE06;1100 1173 11B5;AE06;1100 1173 11B5;
+AE07;AE07;1100 1173 11B6;AE07;1100 1173 11B6;
+AE08;AE08;1100 1173 11B7;AE08;1100 1173 11B7;
+AE09;AE09;1100 1173 11B8;AE09;1100 1173 11B8;
+AE0A;AE0A;1100 1173 11B9;AE0A;1100 1173 11B9;
+AE0B;AE0B;1100 1173 11BA;AE0B;1100 1173 11BA;
+AE0C;AE0C;1100 1173 11BB;AE0C;1100 1173 11BB;
+AE0D;AE0D;1100 1173 11BC;AE0D;1100 1173 11BC;
+AE0E;AE0E;1100 1173 11BD;AE0E;1100 1173 11BD;
+AE0F;AE0F;1100 1173 11BE;AE0F;1100 1173 11BE;
+AE10;AE10;1100 1173 11BF;AE10;1100 1173 11BF;
+AE11;AE11;1100 1173 11C0;AE11;1100 1173 11C0;
+AE12;AE12;1100 1173 11C1;AE12;1100 1173 11C1;
+AE13;AE13;1100 1173 11C2;AE13;1100 1173 11C2;
+AE14;AE14;1100 1174;AE14;1100 1174;
+AE15;AE15;1100 1174 11A8;AE15;1100 1174 11A8;
+AE16;AE16;1100 1174 11A9;AE16;1100 1174 11A9;
+AE17;AE17;1100 1174 11AA;AE17;1100 1174 11AA;
+AE18;AE18;1100 1174 11AB;AE18;1100 1174 11AB;
+AE19;AE19;1100 1174 11AC;AE19;1100 1174 11AC;
+AE1A;AE1A;1100 1174 11AD;AE1A;1100 1174 11AD;
+AE1B;AE1B;1100 1174 11AE;AE1B;1100 1174 11AE;
+AE1C;AE1C;1100 1174 11AF;AE1C;1100 1174 11AF;
+AE1D;AE1D;1100 1174 11B0;AE1D;1100 1174 11B0;
+AE1E;AE1E;1100 1174 11B1;AE1E;1100 1174 11B1;
+AE1F;AE1F;1100 1174 11B2;AE1F;1100 1174 11B2;
+AE20;AE20;1100 1174 11B3;AE20;1100 1174 11B3;
+AE21;AE21;1100 1174 11B4;AE21;1100 1174 11B4;
+AE22;AE22;1100 1174 11B5;AE22;1100 1174 11B5;
+AE23;AE23;1100 1174 11B6;AE23;1100 1174 11B6;
+AE24;AE24;1100 1174 11B7;AE24;1100 1174 11B7;
+AE25;AE25;1100 1174 11B8;AE25;1100 1174 11B8;
+AE26;AE26;1100 1174 11B9;AE26;1100 1174 11B9;
+AE27;AE27;1100 1174 11BA;AE27;1100 1174 11BA;
+AE28;AE28;1100 1174 11BB;AE28;1100 1174 11BB;
+AE29;AE29;1100 1174 11BC;AE29;1100 1174 11BC;
+AE2A;AE2A;1100 1174 11BD;AE2A;1100 1174 11BD;
+AE2B;AE2B;1100 1174 11BE;AE2B;1100 1174 11BE;
+AE2C;AE2C;1100 1174 11BF;AE2C;1100 1174 11BF;
+AE2D;AE2D;1100 1174 11C0;AE2D;1100 1174 11C0;
+AE2E;AE2E;1100 1174 11C1;AE2E;1100 1174 11C1;
+AE2F;AE2F;1100 1174 11C2;AE2F;1100 1174 11C2;
+AE30;AE30;1100 1175;AE30;1100 1175;
+AE31;AE31;1100 1175 11A8;AE31;1100 1175 11A8;
+AE32;AE32;1100 1175 11A9;AE32;1100 1175 11A9;
+AE33;AE33;1100 1175 11AA;AE33;1100 1175 11AA;
+AE34;AE34;1100 1175 11AB;AE34;1100 1175 11AB;
+AE35;AE35;1100 1175 11AC;AE35;1100 1175 11AC;
+AE36;AE36;1100 1175 11AD;AE36;1100 1175 11AD;
+AE37;AE37;1100 1175 11AE;AE37;1100 1175 11AE;
+AE38;AE38;1100 1175 11AF;AE38;1100 1175 11AF;
+AE39;AE39;1100 1175 11B0;AE39;1100 1175 11B0;
+AE3A;AE3A;1100 1175 11B1;AE3A;1100 1175 11B1;
+AE3B;AE3B;1100 1175 11B2;AE3B;1100 1175 11B2;
+AE3C;AE3C;1100 1175 11B3;AE3C;1100 1175 11B3;
+AE3D;AE3D;1100 1175 11B4;AE3D;1100 1175 11B4;
+AE3E;AE3E;1100 1175 11B5;AE3E;1100 1175 11B5;
+AE3F;AE3F;1100 1175 11B6;AE3F;1100 1175 11B6;
+AE40;AE40;1100 1175 11B7;AE40;1100 1175 11B7;
+AE41;AE41;1100 1175 11B8;AE41;1100 1175 11B8;
+AE42;AE42;1100 1175 11B9;AE42;1100 1175 11B9;
+AE43;AE43;1100 1175 11BA;AE43;1100 1175 11BA;
+AE44;AE44;1100 1175 11BB;AE44;1100 1175 11BB;
+AE45;AE45;1100 1175 11BC;AE45;1100 1175 11BC;
+AE46;AE46;1100 1175 11BD;AE46;1100 1175 11BD;
+AE47;AE47;1100 1175 11BE;AE47;1100 1175 11BE;
+AE48;AE48;1100 1175 11BF;AE48;1100 1175 11BF;
+AE49;AE49;1100 1175 11C0;AE49;1100 1175 11C0;
+AE4A;AE4A;1100 1175 11C1;AE4A;1100 1175 11C1;
+AE4B;AE4B;1100 1175 11C2;AE4B;1100 1175 11C2;
+AE4C;AE4C;1101 1161;AE4C;1101 1161;
+AE4D;AE4D;1101 1161 11A8;AE4D;1101 1161 11A8;
+AE4E;AE4E;1101 1161 11A9;AE4E;1101 1161 11A9;
+AE4F;AE4F;1101 1161 11AA;AE4F;1101 1161 11AA;
+AE50;AE50;1101 1161 11AB;AE50;1101 1161 11AB;
+AE51;AE51;1101 1161 11AC;AE51;1101 1161 11AC;
+AE52;AE52;1101 1161 11AD;AE52;1101 1161 11AD;
+AE53;AE53;1101 1161 11AE;AE53;1101 1161 11AE;
+AE54;AE54;1101 1161 11AF;AE54;1101 1161 11AF;
+AE55;AE55;1101 1161 11B0;AE55;1101 1161 11B0;
+AE56;AE56;1101 1161 11B1;AE56;1101 1161 11B1;
+AE57;AE57;1101 1161 11B2;AE57;1101 1161 11B2;
+AE58;AE58;1101 1161 11B3;AE58;1101 1161 11B3;
+AE59;AE59;1101 1161 11B4;AE59;1101 1161 11B4;
+AE5A;AE5A;1101 1161 11B5;AE5A;1101 1161 11B5;
+AE5B;AE5B;1101 1161 11B6;AE5B;1101 1161 11B6;
+AE5C;AE5C;1101 1161 11B7;AE5C;1101 1161 11B7;
+AE5D;AE5D;1101 1161 11B8;AE5D;1101 1161 11B8;
+AE5E;AE5E;1101 1161 11B9;AE5E;1101 1161 11B9;
+AE5F;AE5F;1101 1161 11BA;AE5F;1101 1161 11BA;
+AE60;AE60;1101 1161 11BB;AE60;1101 1161 11BB;
+AE61;AE61;1101 1161 11BC;AE61;1101 1161 11BC;
+AE62;AE62;1101 1161 11BD;AE62;1101 1161 11BD;
+AE63;AE63;1101 1161 11BE;AE63;1101 1161 11BE;
+AE64;AE64;1101 1161 11BF;AE64;1101 1161 11BF;
+AE65;AE65;1101 1161 11C0;AE65;1101 1161 11C0;
+AE66;AE66;1101 1161 11C1;AE66;1101 1161 11C1;
+AE67;AE67;1101 1161 11C2;AE67;1101 1161 11C2;
+AE68;AE68;1101 1162;AE68;1101 1162;
+AE69;AE69;1101 1162 11A8;AE69;1101 1162 11A8;
+AE6A;AE6A;1101 1162 11A9;AE6A;1101 1162 11A9;
+AE6B;AE6B;1101 1162 11AA;AE6B;1101 1162 11AA;
+AE6C;AE6C;1101 1162 11AB;AE6C;1101 1162 11AB;
+AE6D;AE6D;1101 1162 11AC;AE6D;1101 1162 11AC;
+AE6E;AE6E;1101 1162 11AD;AE6E;1101 1162 11AD;
+AE6F;AE6F;1101 1162 11AE;AE6F;1101 1162 11AE;
+AE70;AE70;1101 1162 11AF;AE70;1101 1162 11AF;
+AE71;AE71;1101 1162 11B0;AE71;1101 1162 11B0;
+AE72;AE72;1101 1162 11B1;AE72;1101 1162 11B1;
+AE73;AE73;1101 1162 11B2;AE73;1101 1162 11B2;
+AE74;AE74;1101 1162 11B3;AE74;1101 1162 11B3;
+AE75;AE75;1101 1162 11B4;AE75;1101 1162 11B4;
+AE76;AE76;1101 1162 11B5;AE76;1101 1162 11B5;
+AE77;AE77;1101 1162 11B6;AE77;1101 1162 11B6;
+AE78;AE78;1101 1162 11B7;AE78;1101 1162 11B7;
+AE79;AE79;1101 1162 11B8;AE79;1101 1162 11B8;
+AE7A;AE7A;1101 1162 11B9;AE7A;1101 1162 11B9;
+AE7B;AE7B;1101 1162 11BA;AE7B;1101 1162 11BA;
+AE7C;AE7C;1101 1162 11BB;AE7C;1101 1162 11BB;
+AE7D;AE7D;1101 1162 11BC;AE7D;1101 1162 11BC;
+AE7E;AE7E;1101 1162 11BD;AE7E;1101 1162 11BD;
+AE7F;AE7F;1101 1162 11BE;AE7F;1101 1162 11BE;
+AE80;AE80;1101 1162 11BF;AE80;1101 1162 11BF;
+AE81;AE81;1101 1162 11C0;AE81;1101 1162 11C0;
+AE82;AE82;1101 1162 11C1;AE82;1101 1162 11C1;
+AE83;AE83;1101 1162 11C2;AE83;1101 1162 11C2;
+AE84;AE84;1101 1163;AE84;1101 1163;
+AE85;AE85;1101 1163 11A8;AE85;1101 1163 11A8;
+AE86;AE86;1101 1163 11A9;AE86;1101 1163 11A9;
+AE87;AE87;1101 1163 11AA;AE87;1101 1163 11AA;
+AE88;AE88;1101 1163 11AB;AE88;1101 1163 11AB;
+AE89;AE89;1101 1163 11AC;AE89;1101 1163 11AC;
+AE8A;AE8A;1101 1163 11AD;AE8A;1101 1163 11AD;
+AE8B;AE8B;1101 1163 11AE;AE8B;1101 1163 11AE;
+AE8C;AE8C;1101 1163 11AF;AE8C;1101 1163 11AF;
+AE8D;AE8D;1101 1163 11B0;AE8D;1101 1163 11B0;
+AE8E;AE8E;1101 1163 11B1;AE8E;1101 1163 11B1;
+AE8F;AE8F;1101 1163 11B2;AE8F;1101 1163 11B2;
+AE90;AE90;1101 1163 11B3;AE90;1101 1163 11B3;
+AE91;AE91;1101 1163 11B4;AE91;1101 1163 11B4;
+AE92;AE92;1101 1163 11B5;AE92;1101 1163 11B5;
+AE93;AE93;1101 1163 11B6;AE93;1101 1163 11B6;
+AE94;AE94;1101 1163 11B7;AE94;1101 1163 11B7;
+AE95;AE95;1101 1163 11B8;AE95;1101 1163 11B8;
+AE96;AE96;1101 1163 11B9;AE96;1101 1163 11B9;
+AE97;AE97;1101 1163 11BA;AE97;1101 1163 11BA;
+AE98;AE98;1101 1163 11BB;AE98;1101 1163 11BB;
+AE99;AE99;1101 1163 11BC;AE99;1101 1163 11BC;
+AE9A;AE9A;1101 1163 11BD;AE9A;1101 1163 11BD;
+AE9B;AE9B;1101 1163 11BE;AE9B;1101 1163 11BE;
+AE9C;AE9C;1101 1163 11BF;AE9C;1101 1163 11BF;
+AE9D;AE9D;1101 1163 11C0;AE9D;1101 1163 11C0;
+AE9E;AE9E;1101 1163 11C1;AE9E;1101 1163 11C1;
+AE9F;AE9F;1101 1163 11C2;AE9F;1101 1163 11C2;
+AEA0;AEA0;1101 1164;AEA0;1101 1164;
+AEA1;AEA1;1101 1164 11A8;AEA1;1101 1164 11A8;
+AEA2;AEA2;1101 1164 11A9;AEA2;1101 1164 11A9;
+AEA3;AEA3;1101 1164 11AA;AEA3;1101 1164 11AA;
+AEA4;AEA4;1101 1164 11AB;AEA4;1101 1164 11AB;
+AEA5;AEA5;1101 1164 11AC;AEA5;1101 1164 11AC;
+AEA6;AEA6;1101 1164 11AD;AEA6;1101 1164 11AD;
+AEA7;AEA7;1101 1164 11AE;AEA7;1101 1164 11AE;
+AEA8;AEA8;1101 1164 11AF;AEA8;1101 1164 11AF;
+AEA9;AEA9;1101 1164 11B0;AEA9;1101 1164 11B0;
+AEAA;AEAA;1101 1164 11B1;AEAA;1101 1164 11B1;
+AEAB;AEAB;1101 1164 11B2;AEAB;1101 1164 11B2;
+AEAC;AEAC;1101 1164 11B3;AEAC;1101 1164 11B3;
+AEAD;AEAD;1101 1164 11B4;AEAD;1101 1164 11B4;
+AEAE;AEAE;1101 1164 11B5;AEAE;1101 1164 11B5;
+AEAF;AEAF;1101 1164 11B6;AEAF;1101 1164 11B6;
+AEB0;AEB0;1101 1164 11B7;AEB0;1101 1164 11B7;
+AEB1;AEB1;1101 1164 11B8;AEB1;1101 1164 11B8;
+AEB2;AEB2;1101 1164 11B9;AEB2;1101 1164 11B9;
+AEB3;AEB3;1101 1164 11BA;AEB3;1101 1164 11BA;
+AEB4;AEB4;1101 1164 11BB;AEB4;1101 1164 11BB;
+AEB5;AEB5;1101 1164 11BC;AEB5;1101 1164 11BC;
+AEB6;AEB6;1101 1164 11BD;AEB6;1101 1164 11BD;
+AEB7;AEB7;1101 1164 11BE;AEB7;1101 1164 11BE;
+AEB8;AEB8;1101 1164 11BF;AEB8;1101 1164 11BF;
+AEB9;AEB9;1101 1164 11C0;AEB9;1101 1164 11C0;
+AEBA;AEBA;1101 1164 11C1;AEBA;1101 1164 11C1;
+AEBB;AEBB;1101 1164 11C2;AEBB;1101 1164 11C2;
+AEBC;AEBC;1101 1165;AEBC;1101 1165;
+AEBD;AEBD;1101 1165 11A8;AEBD;1101 1165 11A8;
+AEBE;AEBE;1101 1165 11A9;AEBE;1101 1165 11A9;
+AEBF;AEBF;1101 1165 11AA;AEBF;1101 1165 11AA;
+AEC0;AEC0;1101 1165 11AB;AEC0;1101 1165 11AB;
+AEC1;AEC1;1101 1165 11AC;AEC1;1101 1165 11AC;
+AEC2;AEC2;1101 1165 11AD;AEC2;1101 1165 11AD;
+AEC3;AEC3;1101 1165 11AE;AEC3;1101 1165 11AE;
+AEC4;AEC4;1101 1165 11AF;AEC4;1101 1165 11AF;
+AEC5;AEC5;1101 1165 11B0;AEC5;1101 1165 11B0;
+AEC6;AEC6;1101 1165 11B1;AEC6;1101 1165 11B1;
+AEC7;AEC7;1101 1165 11B2;AEC7;1101 1165 11B2;
+AEC8;AEC8;1101 1165 11B3;AEC8;1101 1165 11B3;
+AEC9;AEC9;1101 1165 11B4;AEC9;1101 1165 11B4;
+AECA;AECA;1101 1165 11B5;AECA;1101 1165 11B5;
+AECB;AECB;1101 1165 11B6;AECB;1101 1165 11B6;
+AECC;AECC;1101 1165 11B7;AECC;1101 1165 11B7;
+AECD;AECD;1101 1165 11B8;AECD;1101 1165 11B8;
+AECE;AECE;1101 1165 11B9;AECE;1101 1165 11B9;
+AECF;AECF;1101 1165 11BA;AECF;1101 1165 11BA;
+AED0;AED0;1101 1165 11BB;AED0;1101 1165 11BB;
+AED1;AED1;1101 1165 11BC;AED1;1101 1165 11BC;
+AED2;AED2;1101 1165 11BD;AED2;1101 1165 11BD;
+AED3;AED3;1101 1165 11BE;AED3;1101 1165 11BE;
+AED4;AED4;1101 1165 11BF;AED4;1101 1165 11BF;
+AED5;AED5;1101 1165 11C0;AED5;1101 1165 11C0;
+AED6;AED6;1101 1165 11C1;AED6;1101 1165 11C1;
+AED7;AED7;1101 1165 11C2;AED7;1101 1165 11C2;
+AED8;AED8;1101 1166;AED8;1101 1166;
+AED9;AED9;1101 1166 11A8;AED9;1101 1166 11A8;
+AEDA;AEDA;1101 1166 11A9;AEDA;1101 1166 11A9;
+AEDB;AEDB;1101 1166 11AA;AEDB;1101 1166 11AA;
+AEDC;AEDC;1101 1166 11AB;AEDC;1101 1166 11AB;
+AEDD;AEDD;1101 1166 11AC;AEDD;1101 1166 11AC;
+AEDE;AEDE;1101 1166 11AD;AEDE;1101 1166 11AD;
+AEDF;AEDF;1101 1166 11AE;AEDF;1101 1166 11AE;
+AEE0;AEE0;1101 1166 11AF;AEE0;1101 1166 11AF;
+AEE1;AEE1;1101 1166 11B0;AEE1;1101 1166 11B0;
+AEE2;AEE2;1101 1166 11B1;AEE2;1101 1166 11B1;
+AEE3;AEE3;1101 1166 11B2;AEE3;1101 1166 11B2;
+AEE4;AEE4;1101 1166 11B3;AEE4;1101 1166 11B3;
+AEE5;AEE5;1101 1166 11B4;AEE5;1101 1166 11B4;
+AEE6;AEE6;1101 1166 11B5;AEE6;1101 1166 11B5;
+AEE7;AEE7;1101 1166 11B6;AEE7;1101 1166 11B6;
+AEE8;AEE8;1101 1166 11B7;AEE8;1101 1166 11B7;
+AEE9;AEE9;1101 1166 11B8;AEE9;1101 1166 11B8;
+AEEA;AEEA;1101 1166 11B9;AEEA;1101 1166 11B9;
+AEEB;AEEB;1101 1166 11BA;AEEB;1101 1166 11BA;
+AEEC;AEEC;1101 1166 11BB;AEEC;1101 1166 11BB;
+AEED;AEED;1101 1166 11BC;AEED;1101 1166 11BC;
+AEEE;AEEE;1101 1166 11BD;AEEE;1101 1166 11BD;
+AEEF;AEEF;1101 1166 11BE;AEEF;1101 1166 11BE;
+AEF0;AEF0;1101 1166 11BF;AEF0;1101 1166 11BF;
+AEF1;AEF1;1101 1166 11C0;AEF1;1101 1166 11C0;
+AEF2;AEF2;1101 1166 11C1;AEF2;1101 1166 11C1;
+AEF3;AEF3;1101 1166 11C2;AEF3;1101 1166 11C2;
+AEF4;AEF4;1101 1167;AEF4;1101 1167;
+AEF5;AEF5;1101 1167 11A8;AEF5;1101 1167 11A8;
+AEF6;AEF6;1101 1167 11A9;AEF6;1101 1167 11A9;
+AEF7;AEF7;1101 1167 11AA;AEF7;1101 1167 11AA;
+AEF8;AEF8;1101 1167 11AB;AEF8;1101 1167 11AB;
+AEF9;AEF9;1101 1167 11AC;AEF9;1101 1167 11AC;
+AEFA;AEFA;1101 1167 11AD;AEFA;1101 1167 11AD;
+AEFB;AEFB;1101 1167 11AE;AEFB;1101 1167 11AE;
+AEFC;AEFC;1101 1167 11AF;AEFC;1101 1167 11AF;
+AEFD;AEFD;1101 1167 11B0;AEFD;1101 1167 11B0;
+AEFE;AEFE;1101 1167 11B1;AEFE;1101 1167 11B1;
+AEFF;AEFF;1101 1167 11B2;AEFF;1101 1167 11B2;
+AF00;AF00;1101 1167 11B3;AF00;1101 1167 11B3;
+AF01;AF01;1101 1167 11B4;AF01;1101 1167 11B4;
+AF02;AF02;1101 1167 11B5;AF02;1101 1167 11B5;
+AF03;AF03;1101 1167 11B6;AF03;1101 1167 11B6;
+AF04;AF04;1101 1167 11B7;AF04;1101 1167 11B7;
+AF05;AF05;1101 1167 11B8;AF05;1101 1167 11B8;
+AF06;AF06;1101 1167 11B9;AF06;1101 1167 11B9;
+AF07;AF07;1101 1167 11BA;AF07;1101 1167 11BA;
+AF08;AF08;1101 1167 11BB;AF08;1101 1167 11BB;
+AF09;AF09;1101 1167 11BC;AF09;1101 1167 11BC;
+AF0A;AF0A;1101 1167 11BD;AF0A;1101 1167 11BD;
+AF0B;AF0B;1101 1167 11BE;AF0B;1101 1167 11BE;
+AF0C;AF0C;1101 1167 11BF;AF0C;1101 1167 11BF;
+AF0D;AF0D;1101 1167 11C0;AF0D;1101 1167 11C0;
+AF0E;AF0E;1101 1167 11C1;AF0E;1101 1167 11C1;
+AF0F;AF0F;1101 1167 11C2;AF0F;1101 1167 11C2;
+AF10;AF10;1101 1168;AF10;1101 1168;
+AF11;AF11;1101 1168 11A8;AF11;1101 1168 11A8;
+AF12;AF12;1101 1168 11A9;AF12;1101 1168 11A9;
+AF13;AF13;1101 1168 11AA;AF13;1101 1168 11AA;
+AF14;AF14;1101 1168 11AB;AF14;1101 1168 11AB;
+AF15;AF15;1101 1168 11AC;AF15;1101 1168 11AC;
+AF16;AF16;1101 1168 11AD;AF16;1101 1168 11AD;
+AF17;AF17;1101 1168 11AE;AF17;1101 1168 11AE;
+AF18;AF18;1101 1168 11AF;AF18;1101 1168 11AF;
+AF19;AF19;1101 1168 11B0;AF19;1101 1168 11B0;
+AF1A;AF1A;1101 1168 11B1;AF1A;1101 1168 11B1;
+AF1B;AF1B;1101 1168 11B2;AF1B;1101 1168 11B2;
+AF1C;AF1C;1101 1168 11B3;AF1C;1101 1168 11B3;
+AF1D;AF1D;1101 1168 11B4;AF1D;1101 1168 11B4;
+AF1E;AF1E;1101 1168 11B5;AF1E;1101 1168 11B5;
+AF1F;AF1F;1101 1168 11B6;AF1F;1101 1168 11B6;
+AF20;AF20;1101 1168 11B7;AF20;1101 1168 11B7;
+AF21;AF21;1101 1168 11B8;AF21;1101 1168 11B8;
+AF22;AF22;1101 1168 11B9;AF22;1101 1168 11B9;
+AF23;AF23;1101 1168 11BA;AF23;1101 1168 11BA;
+AF24;AF24;1101 1168 11BB;AF24;1101 1168 11BB;
+AF25;AF25;1101 1168 11BC;AF25;1101 1168 11BC;
+AF26;AF26;1101 1168 11BD;AF26;1101 1168 11BD;
+AF27;AF27;1101 1168 11BE;AF27;1101 1168 11BE;
+AF28;AF28;1101 1168 11BF;AF28;1101 1168 11BF;
+AF29;AF29;1101 1168 11C0;AF29;1101 1168 11C0;
+AF2A;AF2A;1101 1168 11C1;AF2A;1101 1168 11C1;
+AF2B;AF2B;1101 1168 11C2;AF2B;1101 1168 11C2;
+AF2C;AF2C;1101 1169;AF2C;1101 1169;
+AF2D;AF2D;1101 1169 11A8;AF2D;1101 1169 11A8;
+AF2E;AF2E;1101 1169 11A9;AF2E;1101 1169 11A9;
+AF2F;AF2F;1101 1169 11AA;AF2F;1101 1169 11AA;
+AF30;AF30;1101 1169 11AB;AF30;1101 1169 11AB;
+AF31;AF31;1101 1169 11AC;AF31;1101 1169 11AC;
+AF32;AF32;1101 1169 11AD;AF32;1101 1169 11AD;
+AF33;AF33;1101 1169 11AE;AF33;1101 1169 11AE;
+AF34;AF34;1101 1169 11AF;AF34;1101 1169 11AF;
+AF35;AF35;1101 1169 11B0;AF35;1101 1169 11B0;
+AF36;AF36;1101 1169 11B1;AF36;1101 1169 11B1;
+AF37;AF37;1101 1169 11B2;AF37;1101 1169 11B2;
+AF38;AF38;1101 1169 11B3;AF38;1101 1169 11B3;
+AF39;AF39;1101 1169 11B4;AF39;1101 1169 11B4;
+AF3A;AF3A;1101 1169 11B5;AF3A;1101 1169 11B5;
+AF3B;AF3B;1101 1169 11B6;AF3B;1101 1169 11B6;
+AF3C;AF3C;1101 1169 11B7;AF3C;1101 1169 11B7;
+AF3D;AF3D;1101 1169 11B8;AF3D;1101 1169 11B8;
+AF3E;AF3E;1101 1169 11B9;AF3E;1101 1169 11B9;
+AF3F;AF3F;1101 1169 11BA;AF3F;1101 1169 11BA;
+AF40;AF40;1101 1169 11BB;AF40;1101 1169 11BB;
+AF41;AF41;1101 1169 11BC;AF41;1101 1169 11BC;
+AF42;AF42;1101 1169 11BD;AF42;1101 1169 11BD;
+AF43;AF43;1101 1169 11BE;AF43;1101 1169 11BE;
+AF44;AF44;1101 1169 11BF;AF44;1101 1169 11BF;
+AF45;AF45;1101 1169 11C0;AF45;1101 1169 11C0;
+AF46;AF46;1101 1169 11C1;AF46;1101 1169 11C1;
+AF47;AF47;1101 1169 11C2;AF47;1101 1169 11C2;
+AF48;AF48;1101 116A;AF48;1101 116A;
+AF49;AF49;1101 116A 11A8;AF49;1101 116A 11A8;
+AF4A;AF4A;1101 116A 11A9;AF4A;1101 116A 11A9;
+AF4B;AF4B;1101 116A 11AA;AF4B;1101 116A 11AA;
+AF4C;AF4C;1101 116A 11AB;AF4C;1101 116A 11AB;
+AF4D;AF4D;1101 116A 11AC;AF4D;1101 116A 11AC;
+AF4E;AF4E;1101 116A 11AD;AF4E;1101 116A 11AD;
+AF4F;AF4F;1101 116A 11AE;AF4F;1101 116A 11AE;
+AF50;AF50;1101 116A 11AF;AF50;1101 116A 11AF;
+AF51;AF51;1101 116A 11B0;AF51;1101 116A 11B0;
+AF52;AF52;1101 116A 11B1;AF52;1101 116A 11B1;
+AF53;AF53;1101 116A 11B2;AF53;1101 116A 11B2;
+AF54;AF54;1101 116A 11B3;AF54;1101 116A 11B3;
+AF55;AF55;1101 116A 11B4;AF55;1101 116A 11B4;
+AF56;AF56;1101 116A 11B5;AF56;1101 116A 11B5;
+AF57;AF57;1101 116A 11B6;AF57;1101 116A 11B6;
+AF58;AF58;1101 116A 11B7;AF58;1101 116A 11B7;
+AF59;AF59;1101 116A 11B8;AF59;1101 116A 11B8;
+AF5A;AF5A;1101 116A 11B9;AF5A;1101 116A 11B9;
+AF5B;AF5B;1101 116A 11BA;AF5B;1101 116A 11BA;
+AF5C;AF5C;1101 116A 11BB;AF5C;1101 116A 11BB;
+AF5D;AF5D;1101 116A 11BC;AF5D;1101 116A 11BC;
+AF5E;AF5E;1101 116A 11BD;AF5E;1101 116A 11BD;
+AF5F;AF5F;1101 116A 11BE;AF5F;1101 116A 11BE;
+AF60;AF60;1101 116A 11BF;AF60;1101 116A 11BF;
+AF61;AF61;1101 116A 11C0;AF61;1101 116A 11C0;
+AF62;AF62;1101 116A 11C1;AF62;1101 116A 11C1;
+AF63;AF63;1101 116A 11C2;AF63;1101 116A 11C2;
+AF64;AF64;1101 116B;AF64;1101 116B;
+AF65;AF65;1101 116B 11A8;AF65;1101 116B 11A8;
+AF66;AF66;1101 116B 11A9;AF66;1101 116B 11A9;
+AF67;AF67;1101 116B 11AA;AF67;1101 116B 11AA;
+AF68;AF68;1101 116B 11AB;AF68;1101 116B 11AB;
+AF69;AF69;1101 116B 11AC;AF69;1101 116B 11AC;
+AF6A;AF6A;1101 116B 11AD;AF6A;1101 116B 11AD;
+AF6B;AF6B;1101 116B 11AE;AF6B;1101 116B 11AE;
+AF6C;AF6C;1101 116B 11AF;AF6C;1101 116B 11AF;
+AF6D;AF6D;1101 116B 11B0;AF6D;1101 116B 11B0;
+AF6E;AF6E;1101 116B 11B1;AF6E;1101 116B 11B1;
+AF6F;AF6F;1101 116B 11B2;AF6F;1101 116B 11B2;
+AF70;AF70;1101 116B 11B3;AF70;1101 116B 11B3;
+AF71;AF71;1101 116B 11B4;AF71;1101 116B 11B4;
+AF72;AF72;1101 116B 11B5;AF72;1101 116B 11B5;
+AF73;AF73;1101 116B 11B6;AF73;1101 116B 11B6;
+AF74;AF74;1101 116B 11B7;AF74;1101 116B 11B7;
+AF75;AF75;1101 116B 11B8;AF75;1101 116B 11B8;
+AF76;AF76;1101 116B 11B9;AF76;1101 116B 11B9;
+AF77;AF77;1101 116B 11BA;AF77;1101 116B 11BA;
+AF78;AF78;1101 116B 11BB;AF78;1101 116B 11BB;
+AF79;AF79;1101 116B 11BC;AF79;1101 116B 11BC;
+AF7A;AF7A;1101 116B 11BD;AF7A;1101 116B 11BD;
+AF7B;AF7B;1101 116B 11BE;AF7B;1101 116B 11BE;
+AF7C;AF7C;1101 116B 11BF;AF7C;1101 116B 11BF;
+AF7D;AF7D;1101 116B 11C0;AF7D;1101 116B 11C0;
+AF7E;AF7E;1101 116B 11C1;AF7E;1101 116B 11C1;
+AF7F;AF7F;1101 116B 11C2;AF7F;1101 116B 11C2;
+AF80;AF80;1101 116C;AF80;1101 116C;
+AF81;AF81;1101 116C 11A8;AF81;1101 116C 11A8;
+AF82;AF82;1101 116C 11A9;AF82;1101 116C 11A9;
+AF83;AF83;1101 116C 11AA;AF83;1101 116C 11AA;
+AF84;AF84;1101 116C 11AB;AF84;1101 116C 11AB;
+AF85;AF85;1101 116C 11AC;AF85;1101 116C 11AC;
+AF86;AF86;1101 116C 11AD;AF86;1101 116C 11AD;
+AF87;AF87;1101 116C 11AE;AF87;1101 116C 11AE;
+AF88;AF88;1101 116C 11AF;AF88;1101 116C 11AF;
+AF89;AF89;1101 116C 11B0;AF89;1101 116C 11B0;
+AF8A;AF8A;1101 116C 11B1;AF8A;1101 116C 11B1;
+AF8B;AF8B;1101 116C 11B2;AF8B;1101 116C 11B2;
+AF8C;AF8C;1101 116C 11B3;AF8C;1101 116C 11B3;
+AF8D;AF8D;1101 116C 11B4;AF8D;1101 116C 11B4;
+AF8E;AF8E;1101 116C 11B5;AF8E;1101 116C 11B5;
+AF8F;AF8F;1101 116C 11B6;AF8F;1101 116C 11B6;
+AF90;AF90;1101 116C 11B7;AF90;1101 116C 11B7;
+AF91;AF91;1101 116C 11B8;AF91;1101 116C 11B8;
+AF92;AF92;1101 116C 11B9;AF92;1101 116C 11B9;
+AF93;AF93;1101 116C 11BA;AF93;1101 116C 11BA;
+AF94;AF94;1101 116C 11BB;AF94;1101 116C 11BB;
+AF95;AF95;1101 116C 11BC;AF95;1101 116C 11BC;
+AF96;AF96;1101 116C 11BD;AF96;1101 116C 11BD;
+AF97;AF97;1101 116C 11BE;AF97;1101 116C 11BE;
+AF98;AF98;1101 116C 11BF;AF98;1101 116C 11BF;
+AF99;AF99;1101 116C 11C0;AF99;1101 116C 11C0;
+AF9A;AF9A;1101 116C 11C1;AF9A;1101 116C 11C1;
+AF9B;AF9B;1101 116C 11C2;AF9B;1101 116C 11C2;
+AF9C;AF9C;1101 116D;AF9C;1101 116D;
+AF9D;AF9D;1101 116D 11A8;AF9D;1101 116D 11A8;
+AF9E;AF9E;1101 116D 11A9;AF9E;1101 116D 11A9;
+AF9F;AF9F;1101 116D 11AA;AF9F;1101 116D 11AA;
+AFA0;AFA0;1101 116D 11AB;AFA0;1101 116D 11AB;
+AFA1;AFA1;1101 116D 11AC;AFA1;1101 116D 11AC;
+AFA2;AFA2;1101 116D 11AD;AFA2;1101 116D 11AD;
+AFA3;AFA3;1101 116D 11AE;AFA3;1101 116D 11AE;
+AFA4;AFA4;1101 116D 11AF;AFA4;1101 116D 11AF;
+AFA5;AFA5;1101 116D 11B0;AFA5;1101 116D 11B0;
+AFA6;AFA6;1101 116D 11B1;AFA6;1101 116D 11B1;
+AFA7;AFA7;1101 116D 11B2;AFA7;1101 116D 11B2;
+AFA8;AFA8;1101 116D 11B3;AFA8;1101 116D 11B3;
+AFA9;AFA9;1101 116D 11B4;AFA9;1101 116D 11B4;
+AFAA;AFAA;1101 116D 11B5;AFAA;1101 116D 11B5;
+AFAB;AFAB;1101 116D 11B6;AFAB;1101 116D 11B6;
+AFAC;AFAC;1101 116D 11B7;AFAC;1101 116D 11B7;
+AFAD;AFAD;1101 116D 11B8;AFAD;1101 116D 11B8;
+AFAE;AFAE;1101 116D 11B9;AFAE;1101 116D 11B9;
+AFAF;AFAF;1101 116D 11BA;AFAF;1101 116D 11BA;
+AFB0;AFB0;1101 116D 11BB;AFB0;1101 116D 11BB;
+AFB1;AFB1;1101 116D 11BC;AFB1;1101 116D 11BC;
+AFB2;AFB2;1101 116D 11BD;AFB2;1101 116D 11BD;
+AFB3;AFB3;1101 116D 11BE;AFB3;1101 116D 11BE;
+AFB4;AFB4;1101 116D 11BF;AFB4;1101 116D 11BF;
+AFB5;AFB5;1101 116D 11C0;AFB5;1101 116D 11C0;
+AFB6;AFB6;1101 116D 11C1;AFB6;1101 116D 11C1;
+AFB7;AFB7;1101 116D 11C2;AFB7;1101 116D 11C2;
+AFB8;AFB8;1101 116E;AFB8;1101 116E;
+AFB9;AFB9;1101 116E 11A8;AFB9;1101 116E 11A8;
+AFBA;AFBA;1101 116E 11A9;AFBA;1101 116E 11A9;
+AFBB;AFBB;1101 116E 11AA;AFBB;1101 116E 11AA;
+AFBC;AFBC;1101 116E 11AB;AFBC;1101 116E 11AB;
+AFBD;AFBD;1101 116E 11AC;AFBD;1101 116E 11AC;
+AFBE;AFBE;1101 116E 11AD;AFBE;1101 116E 11AD;
+AFBF;AFBF;1101 116E 11AE;AFBF;1101 116E 11AE;
+AFC0;AFC0;1101 116E 11AF;AFC0;1101 116E 11AF;
+AFC1;AFC1;1101 116E 11B0;AFC1;1101 116E 11B0;
+AFC2;AFC2;1101 116E 11B1;AFC2;1101 116E 11B1;
+AFC3;AFC3;1101 116E 11B2;AFC3;1101 116E 11B2;
+AFC4;AFC4;1101 116E 11B3;AFC4;1101 116E 11B3;
+AFC5;AFC5;1101 116E 11B4;AFC5;1101 116E 11B4;
+AFC6;AFC6;1101 116E 11B5;AFC6;1101 116E 11B5;
+AFC7;AFC7;1101 116E 11B6;AFC7;1101 116E 11B6;
+AFC8;AFC8;1101 116E 11B7;AFC8;1101 116E 11B7;
+AFC9;AFC9;1101 116E 11B8;AFC9;1101 116E 11B8;
+AFCA;AFCA;1101 116E 11B9;AFCA;1101 116E 11B9;
+AFCB;AFCB;1101 116E 11BA;AFCB;1101 116E 11BA;
+AFCC;AFCC;1101 116E 11BB;AFCC;1101 116E 11BB;
+AFCD;AFCD;1101 116E 11BC;AFCD;1101 116E 11BC;
+AFCE;AFCE;1101 116E 11BD;AFCE;1101 116E 11BD;
+AFCF;AFCF;1101 116E 11BE;AFCF;1101 116E 11BE;
+AFD0;AFD0;1101 116E 11BF;AFD0;1101 116E 11BF;
+AFD1;AFD1;1101 116E 11C0;AFD1;1101 116E 11C0;
+AFD2;AFD2;1101 116E 11C1;AFD2;1101 116E 11C1;
+AFD3;AFD3;1101 116E 11C2;AFD3;1101 116E 11C2;
+AFD4;AFD4;1101 116F;AFD4;1101 116F;
+AFD5;AFD5;1101 116F 11A8;AFD5;1101 116F 11A8;
+AFD6;AFD6;1101 116F 11A9;AFD6;1101 116F 11A9;
+AFD7;AFD7;1101 116F 11AA;AFD7;1101 116F 11AA;
+AFD8;AFD8;1101 116F 11AB;AFD8;1101 116F 11AB;
+AFD9;AFD9;1101 116F 11AC;AFD9;1101 116F 11AC;
+AFDA;AFDA;1101 116F 11AD;AFDA;1101 116F 11AD;
+AFDB;AFDB;1101 116F 11AE;AFDB;1101 116F 11AE;
+AFDC;AFDC;1101 116F 11AF;AFDC;1101 116F 11AF;
+AFDD;AFDD;1101 116F 11B0;AFDD;1101 116F 11B0;
+AFDE;AFDE;1101 116F 11B1;AFDE;1101 116F 11B1;
+AFDF;AFDF;1101 116F 11B2;AFDF;1101 116F 11B2;
+AFE0;AFE0;1101 116F 11B3;AFE0;1101 116F 11B3;
+AFE1;AFE1;1101 116F 11B4;AFE1;1101 116F 11B4;
+AFE2;AFE2;1101 116F 11B5;AFE2;1101 116F 11B5;
+AFE3;AFE3;1101 116F 11B6;AFE3;1101 116F 11B6;
+AFE4;AFE4;1101 116F 11B7;AFE4;1101 116F 11B7;
+AFE5;AFE5;1101 116F 11B8;AFE5;1101 116F 11B8;
+AFE6;AFE6;1101 116F 11B9;AFE6;1101 116F 11B9;
+AFE7;AFE7;1101 116F 11BA;AFE7;1101 116F 11BA;
+AFE8;AFE8;1101 116F 11BB;AFE8;1101 116F 11BB;
+AFE9;AFE9;1101 116F 11BC;AFE9;1101 116F 11BC;
+AFEA;AFEA;1101 116F 11BD;AFEA;1101 116F 11BD;
+AFEB;AFEB;1101 116F 11BE;AFEB;1101 116F 11BE;
+AFEC;AFEC;1101 116F 11BF;AFEC;1101 116F 11BF;
+AFED;AFED;1101 116F 11C0;AFED;1101 116F 11C0;
+AFEE;AFEE;1101 116F 11C1;AFEE;1101 116F 11C1;
+AFEF;AFEF;1101 116F 11C2;AFEF;1101 116F 11C2;
+AFF0;AFF0;1101 1170;AFF0;1101 1170;
+AFF1;AFF1;1101 1170 11A8;AFF1;1101 1170 11A8;
+AFF2;AFF2;1101 1170 11A9;AFF2;1101 1170 11A9;
+AFF3;AFF3;1101 1170 11AA;AFF3;1101 1170 11AA;
+AFF4;AFF4;1101 1170 11AB;AFF4;1101 1170 11AB;
+AFF5;AFF5;1101 1170 11AC;AFF5;1101 1170 11AC;
+AFF6;AFF6;1101 1170 11AD;AFF6;1101 1170 11AD;
+AFF7;AFF7;1101 1170 11AE;AFF7;1101 1170 11AE;
+AFF8;AFF8;1101 1170 11AF;AFF8;1101 1170 11AF;
+AFF9;AFF9;1101 1170 11B0;AFF9;1101 1170 11B0;
+AFFA;AFFA;1101 1170 11B1;AFFA;1101 1170 11B1;
+AFFB;AFFB;1101 1170 11B2;AFFB;1101 1170 11B2;
+AFFC;AFFC;1101 1170 11B3;AFFC;1101 1170 11B3;
+AFFD;AFFD;1101 1170 11B4;AFFD;1101 1170 11B4;
+AFFE;AFFE;1101 1170 11B5;AFFE;1101 1170 11B5;
+AFFF;AFFF;1101 1170 11B6;AFFF;1101 1170 11B6;
+B000;B000;1101 1170 11B7;B000;1101 1170 11B7;
+B001;B001;1101 1170 11B8;B001;1101 1170 11B8;
+B002;B002;1101 1170 11B9;B002;1101 1170 11B9;
+B003;B003;1101 1170 11BA;B003;1101 1170 11BA;
+B004;B004;1101 1170 11BB;B004;1101 1170 11BB;
+B005;B005;1101 1170 11BC;B005;1101 1170 11BC;
+B006;B006;1101 1170 11BD;B006;1101 1170 11BD;
+B007;B007;1101 1170 11BE;B007;1101 1170 11BE;
+B008;B008;1101 1170 11BF;B008;1101 1170 11BF;
+B009;B009;1101 1170 11C0;B009;1101 1170 11C0;
+B00A;B00A;1101 1170 11C1;B00A;1101 1170 11C1;
+B00B;B00B;1101 1170 11C2;B00B;1101 1170 11C2;
+B00C;B00C;1101 1171;B00C;1101 1171;
+B00D;B00D;1101 1171 11A8;B00D;1101 1171 11A8;
+B00E;B00E;1101 1171 11A9;B00E;1101 1171 11A9;
+B00F;B00F;1101 1171 11AA;B00F;1101 1171 11AA;
+B010;B010;1101 1171 11AB;B010;1101 1171 11AB;
+B011;B011;1101 1171 11AC;B011;1101 1171 11AC;
+B012;B012;1101 1171 11AD;B012;1101 1171 11AD;
+B013;B013;1101 1171 11AE;B013;1101 1171 11AE;
+B014;B014;1101 1171 11AF;B014;1101 1171 11AF;
+B015;B015;1101 1171 11B0;B015;1101 1171 11B0;
+B016;B016;1101 1171 11B1;B016;1101 1171 11B1;
+B017;B017;1101 1171 11B2;B017;1101 1171 11B2;
+B018;B018;1101 1171 11B3;B018;1101 1171 11B3;
+B019;B019;1101 1171 11B4;B019;1101 1171 11B4;
+B01A;B01A;1101 1171 11B5;B01A;1101 1171 11B5;
+B01B;B01B;1101 1171 11B6;B01B;1101 1171 11B6;
+B01C;B01C;1101 1171 11B7;B01C;1101 1171 11B7;
+B01D;B01D;1101 1171 11B8;B01D;1101 1171 11B8;
+B01E;B01E;1101 1171 11B9;B01E;1101 1171 11B9;
+B01F;B01F;1101 1171 11BA;B01F;1101 1171 11BA;
+B020;B020;1101 1171 11BB;B020;1101 1171 11BB;
+B021;B021;1101 1171 11BC;B021;1101 1171 11BC;
+B022;B022;1101 1171 11BD;B022;1101 1171 11BD;
+B023;B023;1101 1171 11BE;B023;1101 1171 11BE;
+B024;B024;1101 1171 11BF;B024;1101 1171 11BF;
+B025;B025;1101 1171 11C0;B025;1101 1171 11C0;
+B026;B026;1101 1171 11C1;B026;1101 1171 11C1;
+B027;B027;1101 1171 11C2;B027;1101 1171 11C2;
+B028;B028;1101 1172;B028;1101 1172;
+B029;B029;1101 1172 11A8;B029;1101 1172 11A8;
+B02A;B02A;1101 1172 11A9;B02A;1101 1172 11A9;
+B02B;B02B;1101 1172 11AA;B02B;1101 1172 11AA;
+B02C;B02C;1101 1172 11AB;B02C;1101 1172 11AB;
+B02D;B02D;1101 1172 11AC;B02D;1101 1172 11AC;
+B02E;B02E;1101 1172 11AD;B02E;1101 1172 11AD;
+B02F;B02F;1101 1172 11AE;B02F;1101 1172 11AE;
+B030;B030;1101 1172 11AF;B030;1101 1172 11AF;
+B031;B031;1101 1172 11B0;B031;1101 1172 11B0;
+B032;B032;1101 1172 11B1;B032;1101 1172 11B1;
+B033;B033;1101 1172 11B2;B033;1101 1172 11B2;
+B034;B034;1101 1172 11B3;B034;1101 1172 11B3;
+B035;B035;1101 1172 11B4;B035;1101 1172 11B4;
+B036;B036;1101 1172 11B5;B036;1101 1172 11B5;
+B037;B037;1101 1172 11B6;B037;1101 1172 11B6;
+B038;B038;1101 1172 11B7;B038;1101 1172 11B7;
+B039;B039;1101 1172 11B8;B039;1101 1172 11B8;
+B03A;B03A;1101 1172 11B9;B03A;1101 1172 11B9;
+B03B;B03B;1101 1172 11BA;B03B;1101 1172 11BA;
+B03C;B03C;1101 1172 11BB;B03C;1101 1172 11BB;
+B03D;B03D;1101 1172 11BC;B03D;1101 1172 11BC;
+B03E;B03E;1101 1172 11BD;B03E;1101 1172 11BD;
+B03F;B03F;1101 1172 11BE;B03F;1101 1172 11BE;
+B040;B040;1101 1172 11BF;B040;1101 1172 11BF;
+B041;B041;1101 1172 11C0;B041;1101 1172 11C0;
+B042;B042;1101 1172 11C1;B042;1101 1172 11C1;
+B043;B043;1101 1172 11C2;B043;1101 1172 11C2;
+B044;B044;1101 1173;B044;1101 1173;
+B045;B045;1101 1173 11A8;B045;1101 1173 11A8;
+B046;B046;1101 1173 11A9;B046;1101 1173 11A9;
+B047;B047;1101 1173 11AA;B047;1101 1173 11AA;
+B048;B048;1101 1173 11AB;B048;1101 1173 11AB;
+B049;B049;1101 1173 11AC;B049;1101 1173 11AC;
+B04A;B04A;1101 1173 11AD;B04A;1101 1173 11AD;
+B04B;B04B;1101 1173 11AE;B04B;1101 1173 11AE;
+B04C;B04C;1101 1173 11AF;B04C;1101 1173 11AF;
+B04D;B04D;1101 1173 11B0;B04D;1101 1173 11B0;
+B04E;B04E;1101 1173 11B1;B04E;1101 1173 11B1;
+B04F;B04F;1101 1173 11B2;B04F;1101 1173 11B2;
+B050;B050;1101 1173 11B3;B050;1101 1173 11B3;
+B051;B051;1101 1173 11B4;B051;1101 1173 11B4;
+B052;B052;1101 1173 11B5;B052;1101 1173 11B5;
+B053;B053;1101 1173 11B6;B053;1101 1173 11B6;
+B054;B054;1101 1173 11B7;B054;1101 1173 11B7;
+B055;B055;1101 1173 11B8;B055;1101 1173 11B8;
+B056;B056;1101 1173 11B9;B056;1101 1173 11B9;
+B057;B057;1101 1173 11BA;B057;1101 1173 11BA;
+B058;B058;1101 1173 11BB;B058;1101 1173 11BB;
+B059;B059;1101 1173 11BC;B059;1101 1173 11BC;
+B05A;B05A;1101 1173 11BD;B05A;1101 1173 11BD;
+B05B;B05B;1101 1173 11BE;B05B;1101 1173 11BE;
+B05C;B05C;1101 1173 11BF;B05C;1101 1173 11BF;
+B05D;B05D;1101 1173 11C0;B05D;1101 1173 11C0;
+B05E;B05E;1101 1173 11C1;B05E;1101 1173 11C1;
+B05F;B05F;1101 1173 11C2;B05F;1101 1173 11C2;
+B060;B060;1101 1174;B060;1101 1174;
+B061;B061;1101 1174 11A8;B061;1101 1174 11A8;
+B062;B062;1101 1174 11A9;B062;1101 1174 11A9;
+B063;B063;1101 1174 11AA;B063;1101 1174 11AA;
+B064;B064;1101 1174 11AB;B064;1101 1174 11AB;
+B065;B065;1101 1174 11AC;B065;1101 1174 11AC;
+B066;B066;1101 1174 11AD;B066;1101 1174 11AD;
+B067;B067;1101 1174 11AE;B067;1101 1174 11AE;
+B068;B068;1101 1174 11AF;B068;1101 1174 11AF;
+B069;B069;1101 1174 11B0;B069;1101 1174 11B0;
+B06A;B06A;1101 1174 11B1;B06A;1101 1174 11B1;
+B06B;B06B;1101 1174 11B2;B06B;1101 1174 11B2;
+B06C;B06C;1101 1174 11B3;B06C;1101 1174 11B3;
+B06D;B06D;1101 1174 11B4;B06D;1101 1174 11B4;
+B06E;B06E;1101 1174 11B5;B06E;1101 1174 11B5;
+B06F;B06F;1101 1174 11B6;B06F;1101 1174 11B6;
+B070;B070;1101 1174 11B7;B070;1101 1174 11B7;
+B071;B071;1101 1174 11B8;B071;1101 1174 11B8;
+B072;B072;1101 1174 11B9;B072;1101 1174 11B9;
+B073;B073;1101 1174 11BA;B073;1101 1174 11BA;
+B074;B074;1101 1174 11BB;B074;1101 1174 11BB;
+B075;B075;1101 1174 11BC;B075;1101 1174 11BC;
+B076;B076;1101 1174 11BD;B076;1101 1174 11BD;
+B077;B077;1101 1174 11BE;B077;1101 1174 11BE;
+B078;B078;1101 1174 11BF;B078;1101 1174 11BF;
+B079;B079;1101 1174 11C0;B079;1101 1174 11C0;
+B07A;B07A;1101 1174 11C1;B07A;1101 1174 11C1;
+B07B;B07B;1101 1174 11C2;B07B;1101 1174 11C2;
+B07C;B07C;1101 1175;B07C;1101 1175;
+B07D;B07D;1101 1175 11A8;B07D;1101 1175 11A8;
+B07E;B07E;1101 1175 11A9;B07E;1101 1175 11A9;
+B07F;B07F;1101 1175 11AA;B07F;1101 1175 11AA;
+B080;B080;1101 1175 11AB;B080;1101 1175 11AB;
+B081;B081;1101 1175 11AC;B081;1101 1175 11AC;
+B082;B082;1101 1175 11AD;B082;1101 1175 11AD;
+B083;B083;1101 1175 11AE;B083;1101 1175 11AE;
+B084;B084;1101 1175 11AF;B084;1101 1175 11AF;
+B085;B085;1101 1175 11B0;B085;1101 1175 11B0;
+B086;B086;1101 1175 11B1;B086;1101 1175 11B1;
+B087;B087;1101 1175 11B2;B087;1101 1175 11B2;
+B088;B088;1101 1175 11B3;B088;1101 1175 11B3;
+B089;B089;1101 1175 11B4;B089;1101 1175 11B4;
+B08A;B08A;1101 1175 11B5;B08A;1101 1175 11B5;
+B08B;B08B;1101 1175 11B6;B08B;1101 1175 11B6;
+B08C;B08C;1101 1175 11B7;B08C;1101 1175 11B7;
+B08D;B08D;1101 1175 11B8;B08D;1101 1175 11B8;
+B08E;B08E;1101 1175 11B9;B08E;1101 1175 11B9;
+B08F;B08F;1101 1175 11BA;B08F;1101 1175 11BA;
+B090;B090;1101 1175 11BB;B090;1101 1175 11BB;
+B091;B091;1101 1175 11BC;B091;1101 1175 11BC;
+B092;B092;1101 1175 11BD;B092;1101 1175 11BD;
+B093;B093;1101 1175 11BE;B093;1101 1175 11BE;
+B094;B094;1101 1175 11BF;B094;1101 1175 11BF;
+B095;B095;1101 1175 11C0;B095;1101 1175 11C0;
+B096;B096;1101 1175 11C1;B096;1101 1175 11C1;
+B097;B097;1101 1175 11C2;B097;1101 1175 11C2;
+B098;B098;1102 1161;B098;1102 1161;
+B099;B099;1102 1161 11A8;B099;1102 1161 11A8;
+B09A;B09A;1102 1161 11A9;B09A;1102 1161 11A9;
+B09B;B09B;1102 1161 11AA;B09B;1102 1161 11AA;
+B09C;B09C;1102 1161 11AB;B09C;1102 1161 11AB;
+B09D;B09D;1102 1161 11AC;B09D;1102 1161 11AC;
+B09E;B09E;1102 1161 11AD;B09E;1102 1161 11AD;
+B09F;B09F;1102 1161 11AE;B09F;1102 1161 11AE;
+B0A0;B0A0;1102 1161 11AF;B0A0;1102 1161 11AF;
+B0A1;B0A1;1102 1161 11B0;B0A1;1102 1161 11B0;
+B0A2;B0A2;1102 1161 11B1;B0A2;1102 1161 11B1;
+B0A3;B0A3;1102 1161 11B2;B0A3;1102 1161 11B2;
+B0A4;B0A4;1102 1161 11B3;B0A4;1102 1161 11B3;
+B0A5;B0A5;1102 1161 11B4;B0A5;1102 1161 11B4;
+B0A6;B0A6;1102 1161 11B5;B0A6;1102 1161 11B5;
+B0A7;B0A7;1102 1161 11B6;B0A7;1102 1161 11B6;
+B0A8;B0A8;1102 1161 11B7;B0A8;1102 1161 11B7;
+B0A9;B0A9;1102 1161 11B8;B0A9;1102 1161 11B8;
+B0AA;B0AA;1102 1161 11B9;B0AA;1102 1161 11B9;
+B0AB;B0AB;1102 1161 11BA;B0AB;1102 1161 11BA;
+B0AC;B0AC;1102 1161 11BB;B0AC;1102 1161 11BB;
+B0AD;B0AD;1102 1161 11BC;B0AD;1102 1161 11BC;
+B0AE;B0AE;1102 1161 11BD;B0AE;1102 1161 11BD;
+B0AF;B0AF;1102 1161 11BE;B0AF;1102 1161 11BE;
+B0B0;B0B0;1102 1161 11BF;B0B0;1102 1161 11BF;
+B0B1;B0B1;1102 1161 11C0;B0B1;1102 1161 11C0;
+B0B2;B0B2;1102 1161 11C1;B0B2;1102 1161 11C1;
+B0B3;B0B3;1102 1161 11C2;B0B3;1102 1161 11C2;
+B0B4;B0B4;1102 1162;B0B4;1102 1162;
+B0B5;B0B5;1102 1162 11A8;B0B5;1102 1162 11A8;
+B0B6;B0B6;1102 1162 11A9;B0B6;1102 1162 11A9;
+B0B7;B0B7;1102 1162 11AA;B0B7;1102 1162 11AA;
+B0B8;B0B8;1102 1162 11AB;B0B8;1102 1162 11AB;
+B0B9;B0B9;1102 1162 11AC;B0B9;1102 1162 11AC;
+B0BA;B0BA;1102 1162 11AD;B0BA;1102 1162 11AD;
+B0BB;B0BB;1102 1162 11AE;B0BB;1102 1162 11AE;
+B0BC;B0BC;1102 1162 11AF;B0BC;1102 1162 11AF;
+B0BD;B0BD;1102 1162 11B0;B0BD;1102 1162 11B0;
+B0BE;B0BE;1102 1162 11B1;B0BE;1102 1162 11B1;
+B0BF;B0BF;1102 1162 11B2;B0BF;1102 1162 11B2;
+B0C0;B0C0;1102 1162 11B3;B0C0;1102 1162 11B3;
+B0C1;B0C1;1102 1162 11B4;B0C1;1102 1162 11B4;
+B0C2;B0C2;1102 1162 11B5;B0C2;1102 1162 11B5;
+B0C3;B0C3;1102 1162 11B6;B0C3;1102 1162 11B6;
+B0C4;B0C4;1102 1162 11B7;B0C4;1102 1162 11B7;
+B0C5;B0C5;1102 1162 11B8;B0C5;1102 1162 11B8;
+B0C6;B0C6;1102 1162 11B9;B0C6;1102 1162 11B9;
+B0C7;B0C7;1102 1162 11BA;B0C7;1102 1162 11BA;
+B0C8;B0C8;1102 1162 11BB;B0C8;1102 1162 11BB;
+B0C9;B0C9;1102 1162 11BC;B0C9;1102 1162 11BC;
+B0CA;B0CA;1102 1162 11BD;B0CA;1102 1162 11BD;
+B0CB;B0CB;1102 1162 11BE;B0CB;1102 1162 11BE;
+B0CC;B0CC;1102 1162 11BF;B0CC;1102 1162 11BF;
+B0CD;B0CD;1102 1162 11C0;B0CD;1102 1162 11C0;
+B0CE;B0CE;1102 1162 11C1;B0CE;1102 1162 11C1;
+B0CF;B0CF;1102 1162 11C2;B0CF;1102 1162 11C2;
+B0D0;B0D0;1102 1163;B0D0;1102 1163;
+B0D1;B0D1;1102 1163 11A8;B0D1;1102 1163 11A8;
+B0D2;B0D2;1102 1163 11A9;B0D2;1102 1163 11A9;
+B0D3;B0D3;1102 1163 11AA;B0D3;1102 1163 11AA;
+B0D4;B0D4;1102 1163 11AB;B0D4;1102 1163 11AB;
+B0D5;B0D5;1102 1163 11AC;B0D5;1102 1163 11AC;
+B0D6;B0D6;1102 1163 11AD;B0D6;1102 1163 11AD;
+B0D7;B0D7;1102 1163 11AE;B0D7;1102 1163 11AE;
+B0D8;B0D8;1102 1163 11AF;B0D8;1102 1163 11AF;
+B0D9;B0D9;1102 1163 11B0;B0D9;1102 1163 11B0;
+B0DA;B0DA;1102 1163 11B1;B0DA;1102 1163 11B1;
+B0DB;B0DB;1102 1163 11B2;B0DB;1102 1163 11B2;
+B0DC;B0DC;1102 1163 11B3;B0DC;1102 1163 11B3;
+B0DD;B0DD;1102 1163 11B4;B0DD;1102 1163 11B4;
+B0DE;B0DE;1102 1163 11B5;B0DE;1102 1163 11B5;
+B0DF;B0DF;1102 1163 11B6;B0DF;1102 1163 11B6;
+B0E0;B0E0;1102 1163 11B7;B0E0;1102 1163 11B7;
+B0E1;B0E1;1102 1163 11B8;B0E1;1102 1163 11B8;
+B0E2;B0E2;1102 1163 11B9;B0E2;1102 1163 11B9;
+B0E3;B0E3;1102 1163 11BA;B0E3;1102 1163 11BA;
+B0E4;B0E4;1102 1163 11BB;B0E4;1102 1163 11BB;
+B0E5;B0E5;1102 1163 11BC;B0E5;1102 1163 11BC;
+B0E6;B0E6;1102 1163 11BD;B0E6;1102 1163 11BD;
+B0E7;B0E7;1102 1163 11BE;B0E7;1102 1163 11BE;
+B0E8;B0E8;1102 1163 11BF;B0E8;1102 1163 11BF;
+B0E9;B0E9;1102 1163 11C0;B0E9;1102 1163 11C0;
+B0EA;B0EA;1102 1163 11C1;B0EA;1102 1163 11C1;
+B0EB;B0EB;1102 1163 11C2;B0EB;1102 1163 11C2;
+B0EC;B0EC;1102 1164;B0EC;1102 1164;
+B0ED;B0ED;1102 1164 11A8;B0ED;1102 1164 11A8;
+B0EE;B0EE;1102 1164 11A9;B0EE;1102 1164 11A9;
+B0EF;B0EF;1102 1164 11AA;B0EF;1102 1164 11AA;
+B0F0;B0F0;1102 1164 11AB;B0F0;1102 1164 11AB;
+B0F1;B0F1;1102 1164 11AC;B0F1;1102 1164 11AC;
+B0F2;B0F2;1102 1164 11AD;B0F2;1102 1164 11AD;
+B0F3;B0F3;1102 1164 11AE;B0F3;1102 1164 11AE;
+B0F4;B0F4;1102 1164 11AF;B0F4;1102 1164 11AF;
+B0F5;B0F5;1102 1164 11B0;B0F5;1102 1164 11B0;
+B0F6;B0F6;1102 1164 11B1;B0F6;1102 1164 11B1;
+B0F7;B0F7;1102 1164 11B2;B0F7;1102 1164 11B2;
+B0F8;B0F8;1102 1164 11B3;B0F8;1102 1164 11B3;
+B0F9;B0F9;1102 1164 11B4;B0F9;1102 1164 11B4;
+B0FA;B0FA;1102 1164 11B5;B0FA;1102 1164 11B5;
+B0FB;B0FB;1102 1164 11B6;B0FB;1102 1164 11B6;
+B0FC;B0FC;1102 1164 11B7;B0FC;1102 1164 11B7;
+B0FD;B0FD;1102 1164 11B8;B0FD;1102 1164 11B8;
+B0FE;B0FE;1102 1164 11B9;B0FE;1102 1164 11B9;
+B0FF;B0FF;1102 1164 11BA;B0FF;1102 1164 11BA;
+B100;B100;1102 1164 11BB;B100;1102 1164 11BB;
+B101;B101;1102 1164 11BC;B101;1102 1164 11BC;
+B102;B102;1102 1164 11BD;B102;1102 1164 11BD;
+B103;B103;1102 1164 11BE;B103;1102 1164 11BE;
+B104;B104;1102 1164 11BF;B104;1102 1164 11BF;
+B105;B105;1102 1164 11C0;B105;1102 1164 11C0;
+B106;B106;1102 1164 11C1;B106;1102 1164 11C1;
+B107;B107;1102 1164 11C2;B107;1102 1164 11C2;
+B108;B108;1102 1165;B108;1102 1165;
+B109;B109;1102 1165 11A8;B109;1102 1165 11A8;
+B10A;B10A;1102 1165 11A9;B10A;1102 1165 11A9;
+B10B;B10B;1102 1165 11AA;B10B;1102 1165 11AA;
+B10C;B10C;1102 1165 11AB;B10C;1102 1165 11AB;
+B10D;B10D;1102 1165 11AC;B10D;1102 1165 11AC;
+B10E;B10E;1102 1165 11AD;B10E;1102 1165 11AD;
+B10F;B10F;1102 1165 11AE;B10F;1102 1165 11AE;
+B110;B110;1102 1165 11AF;B110;1102 1165 11AF;
+B111;B111;1102 1165 11B0;B111;1102 1165 11B0;
+B112;B112;1102 1165 11B1;B112;1102 1165 11B1;
+B113;B113;1102 1165 11B2;B113;1102 1165 11B2;
+B114;B114;1102 1165 11B3;B114;1102 1165 11B3;
+B115;B115;1102 1165 11B4;B115;1102 1165 11B4;
+B116;B116;1102 1165 11B5;B116;1102 1165 11B5;
+B117;B117;1102 1165 11B6;B117;1102 1165 11B6;
+B118;B118;1102 1165 11B7;B118;1102 1165 11B7;
+B119;B119;1102 1165 11B8;B119;1102 1165 11B8;
+B11A;B11A;1102 1165 11B9;B11A;1102 1165 11B9;
+B11B;B11B;1102 1165 11BA;B11B;1102 1165 11BA;
+B11C;B11C;1102 1165 11BB;B11C;1102 1165 11BB;
+B11D;B11D;1102 1165 11BC;B11D;1102 1165 11BC;
+B11E;B11E;1102 1165 11BD;B11E;1102 1165 11BD;
+B11F;B11F;1102 1165 11BE;B11F;1102 1165 11BE;
+B120;B120;1102 1165 11BF;B120;1102 1165 11BF;
+B121;B121;1102 1165 11C0;B121;1102 1165 11C0;
+B122;B122;1102 1165 11C1;B122;1102 1165 11C1;
+B123;B123;1102 1165 11C2;B123;1102 1165 11C2;
+B124;B124;1102 1166;B124;1102 1166;
+B125;B125;1102 1166 11A8;B125;1102 1166 11A8;
+B126;B126;1102 1166 11A9;B126;1102 1166 11A9;
+B127;B127;1102 1166 11AA;B127;1102 1166 11AA;
+B128;B128;1102 1166 11AB;B128;1102 1166 11AB;
+B129;B129;1102 1166 11AC;B129;1102 1166 11AC;
+B12A;B12A;1102 1166 11AD;B12A;1102 1166 11AD;
+B12B;B12B;1102 1166 11AE;B12B;1102 1166 11AE;
+B12C;B12C;1102 1166 11AF;B12C;1102 1166 11AF;
+B12D;B12D;1102 1166 11B0;B12D;1102 1166 11B0;
+B12E;B12E;1102 1166 11B1;B12E;1102 1166 11B1;
+B12F;B12F;1102 1166 11B2;B12F;1102 1166 11B2;
+B130;B130;1102 1166 11B3;B130;1102 1166 11B3;
+B131;B131;1102 1166 11B4;B131;1102 1166 11B4;
+B132;B132;1102 1166 11B5;B132;1102 1166 11B5;
+B133;B133;1102 1166 11B6;B133;1102 1166 11B6;
+B134;B134;1102 1166 11B7;B134;1102 1166 11B7;
+B135;B135;1102 1166 11B8;B135;1102 1166 11B8;
+B136;B136;1102 1166 11B9;B136;1102 1166 11B9;
+B137;B137;1102 1166 11BA;B137;1102 1166 11BA;
+B138;B138;1102 1166 11BB;B138;1102 1166 11BB;
+B139;B139;1102 1166 11BC;B139;1102 1166 11BC;
+B13A;B13A;1102 1166 11BD;B13A;1102 1166 11BD;
+B13B;B13B;1102 1166 11BE;B13B;1102 1166 11BE;
+B13C;B13C;1102 1166 11BF;B13C;1102 1166 11BF;
+B13D;B13D;1102 1166 11C0;B13D;1102 1166 11C0;
+B13E;B13E;1102 1166 11C1;B13E;1102 1166 11C1;
+B13F;B13F;1102 1166 11C2;B13F;1102 1166 11C2;
+B140;B140;1102 1167;B140;1102 1167;
+B141;B141;1102 1167 11A8;B141;1102 1167 11A8;
+B142;B142;1102 1167 11A9;B142;1102 1167 11A9;
+B143;B143;1102 1167 11AA;B143;1102 1167 11AA;
+B144;B144;1102 1167 11AB;B144;1102 1167 11AB;
+B145;B145;1102 1167 11AC;B145;1102 1167 11AC;
+B146;B146;1102 1167 11AD;B146;1102 1167 11AD;
+B147;B147;1102 1167 11AE;B147;1102 1167 11AE;
+B148;B148;1102 1167 11AF;B148;1102 1167 11AF;
+B149;B149;1102 1167 11B0;B149;1102 1167 11B0;
+B14A;B14A;1102 1167 11B1;B14A;1102 1167 11B1;
+B14B;B14B;1102 1167 11B2;B14B;1102 1167 11B2;
+B14C;B14C;1102 1167 11B3;B14C;1102 1167 11B3;
+B14D;B14D;1102 1167 11B4;B14D;1102 1167 11B4;
+B14E;B14E;1102 1167 11B5;B14E;1102 1167 11B5;
+B14F;B14F;1102 1167 11B6;B14F;1102 1167 11B6;
+B150;B150;1102 1167 11B7;B150;1102 1167 11B7;
+B151;B151;1102 1167 11B8;B151;1102 1167 11B8;
+B152;B152;1102 1167 11B9;B152;1102 1167 11B9;
+B153;B153;1102 1167 11BA;B153;1102 1167 11BA;
+B154;B154;1102 1167 11BB;B154;1102 1167 11BB;
+B155;B155;1102 1167 11BC;B155;1102 1167 11BC;
+B156;B156;1102 1167 11BD;B156;1102 1167 11BD;
+B157;B157;1102 1167 11BE;B157;1102 1167 11BE;
+B158;B158;1102 1167 11BF;B158;1102 1167 11BF;
+B159;B159;1102 1167 11C0;B159;1102 1167 11C0;
+B15A;B15A;1102 1167 11C1;B15A;1102 1167 11C1;
+B15B;B15B;1102 1167 11C2;B15B;1102 1167 11C2;
+B15C;B15C;1102 1168;B15C;1102 1168;
+B15D;B15D;1102 1168 11A8;B15D;1102 1168 11A8;
+B15E;B15E;1102 1168 11A9;B15E;1102 1168 11A9;
+B15F;B15F;1102 1168 11AA;B15F;1102 1168 11AA;
+B160;B160;1102 1168 11AB;B160;1102 1168 11AB;
+B161;B161;1102 1168 11AC;B161;1102 1168 11AC;
+B162;B162;1102 1168 11AD;B162;1102 1168 11AD;
+B163;B163;1102 1168 11AE;B163;1102 1168 11AE;
+B164;B164;1102 1168 11AF;B164;1102 1168 11AF;
+B165;B165;1102 1168 11B0;B165;1102 1168 11B0;
+B166;B166;1102 1168 11B1;B166;1102 1168 11B1;
+B167;B167;1102 1168 11B2;B167;1102 1168 11B2;
+B168;B168;1102 1168 11B3;B168;1102 1168 11B3;
+B169;B169;1102 1168 11B4;B169;1102 1168 11B4;
+B16A;B16A;1102 1168 11B5;B16A;1102 1168 11B5;
+B16B;B16B;1102 1168 11B6;B16B;1102 1168 11B6;
+B16C;B16C;1102 1168 11B7;B16C;1102 1168 11B7;
+B16D;B16D;1102 1168 11B8;B16D;1102 1168 11B8;
+B16E;B16E;1102 1168 11B9;B16E;1102 1168 11B9;
+B16F;B16F;1102 1168 11BA;B16F;1102 1168 11BA;
+B170;B170;1102 1168 11BB;B170;1102 1168 11BB;
+B171;B171;1102 1168 11BC;B171;1102 1168 11BC;
+B172;B172;1102 1168 11BD;B172;1102 1168 11BD;
+B173;B173;1102 1168 11BE;B173;1102 1168 11BE;
+B174;B174;1102 1168 11BF;B174;1102 1168 11BF;
+B175;B175;1102 1168 11C0;B175;1102 1168 11C0;
+B176;B176;1102 1168 11C1;B176;1102 1168 11C1;
+B177;B177;1102 1168 11C2;B177;1102 1168 11C2;
+B178;B178;1102 1169;B178;1102 1169;
+B179;B179;1102 1169 11A8;B179;1102 1169 11A8;
+B17A;B17A;1102 1169 11A9;B17A;1102 1169 11A9;
+B17B;B17B;1102 1169 11AA;B17B;1102 1169 11AA;
+B17C;B17C;1102 1169 11AB;B17C;1102 1169 11AB;
+B17D;B17D;1102 1169 11AC;B17D;1102 1169 11AC;
+B17E;B17E;1102 1169 11AD;B17E;1102 1169 11AD;
+B17F;B17F;1102 1169 11AE;B17F;1102 1169 11AE;
+B180;B180;1102 1169 11AF;B180;1102 1169 11AF;
+B181;B181;1102 1169 11B0;B181;1102 1169 11B0;
+B182;B182;1102 1169 11B1;B182;1102 1169 11B1;
+B183;B183;1102 1169 11B2;B183;1102 1169 11B2;
+B184;B184;1102 1169 11B3;B184;1102 1169 11B3;
+B185;B185;1102 1169 11B4;B185;1102 1169 11B4;
+B186;B186;1102 1169 11B5;B186;1102 1169 11B5;
+B187;B187;1102 1169 11B6;B187;1102 1169 11B6;
+B188;B188;1102 1169 11B7;B188;1102 1169 11B7;
+B189;B189;1102 1169 11B8;B189;1102 1169 11B8;
+B18A;B18A;1102 1169 11B9;B18A;1102 1169 11B9;
+B18B;B18B;1102 1169 11BA;B18B;1102 1169 11BA;
+B18C;B18C;1102 1169 11BB;B18C;1102 1169 11BB;
+B18D;B18D;1102 1169 11BC;B18D;1102 1169 11BC;
+B18E;B18E;1102 1169 11BD;B18E;1102 1169 11BD;
+B18F;B18F;1102 1169 11BE;B18F;1102 1169 11BE;
+B190;B190;1102 1169 11BF;B190;1102 1169 11BF;
+B191;B191;1102 1169 11C0;B191;1102 1169 11C0;
+B192;B192;1102 1169 11C1;B192;1102 1169 11C1;
+B193;B193;1102 1169 11C2;B193;1102 1169 11C2;
+B194;B194;1102 116A;B194;1102 116A;
+B195;B195;1102 116A 11A8;B195;1102 116A 11A8;
+B196;B196;1102 116A 11A9;B196;1102 116A 11A9;
+B197;B197;1102 116A 11AA;B197;1102 116A 11AA;
+B198;B198;1102 116A 11AB;B198;1102 116A 11AB;
+B199;B199;1102 116A 11AC;B199;1102 116A 11AC;
+B19A;B19A;1102 116A 11AD;B19A;1102 116A 11AD;
+B19B;B19B;1102 116A 11AE;B19B;1102 116A 11AE;
+B19C;B19C;1102 116A 11AF;B19C;1102 116A 11AF;
+B19D;B19D;1102 116A 11B0;B19D;1102 116A 11B0;
+B19E;B19E;1102 116A 11B1;B19E;1102 116A 11B1;
+B19F;B19F;1102 116A 11B2;B19F;1102 116A 11B2;
+B1A0;B1A0;1102 116A 11B3;B1A0;1102 116A 11B3;
+B1A1;B1A1;1102 116A 11B4;B1A1;1102 116A 11B4;
+B1A2;B1A2;1102 116A 11B5;B1A2;1102 116A 11B5;
+B1A3;B1A3;1102 116A 11B6;B1A3;1102 116A 11B6;
+B1A4;B1A4;1102 116A 11B7;B1A4;1102 116A 11B7;
+B1A5;B1A5;1102 116A 11B8;B1A5;1102 116A 11B8;
+B1A6;B1A6;1102 116A 11B9;B1A6;1102 116A 11B9;
+B1A7;B1A7;1102 116A 11BA;B1A7;1102 116A 11BA;
+B1A8;B1A8;1102 116A 11BB;B1A8;1102 116A 11BB;
+B1A9;B1A9;1102 116A 11BC;B1A9;1102 116A 11BC;
+B1AA;B1AA;1102 116A 11BD;B1AA;1102 116A 11BD;
+B1AB;B1AB;1102 116A 11BE;B1AB;1102 116A 11BE;
+B1AC;B1AC;1102 116A 11BF;B1AC;1102 116A 11BF;
+B1AD;B1AD;1102 116A 11C0;B1AD;1102 116A 11C0;
+B1AE;B1AE;1102 116A 11C1;B1AE;1102 116A 11C1;
+B1AF;B1AF;1102 116A 11C2;B1AF;1102 116A 11C2;
+B1B0;B1B0;1102 116B;B1B0;1102 116B;
+B1B1;B1B1;1102 116B 11A8;B1B1;1102 116B 11A8;
+B1B2;B1B2;1102 116B 11A9;B1B2;1102 116B 11A9;
+B1B3;B1B3;1102 116B 11AA;B1B3;1102 116B 11AA;
+B1B4;B1B4;1102 116B 11AB;B1B4;1102 116B 11AB;
+B1B5;B1B5;1102 116B 11AC;B1B5;1102 116B 11AC;
+B1B6;B1B6;1102 116B 11AD;B1B6;1102 116B 11AD;
+B1B7;B1B7;1102 116B 11AE;B1B7;1102 116B 11AE;
+B1B8;B1B8;1102 116B 11AF;B1B8;1102 116B 11AF;
+B1B9;B1B9;1102 116B 11B0;B1B9;1102 116B 11B0;
+B1BA;B1BA;1102 116B 11B1;B1BA;1102 116B 11B1;
+B1BB;B1BB;1102 116B 11B2;B1BB;1102 116B 11B2;
+B1BC;B1BC;1102 116B 11B3;B1BC;1102 116B 11B3;
+B1BD;B1BD;1102 116B 11B4;B1BD;1102 116B 11B4;
+B1BE;B1BE;1102 116B 11B5;B1BE;1102 116B 11B5;
+B1BF;B1BF;1102 116B 11B6;B1BF;1102 116B 11B6;
+B1C0;B1C0;1102 116B 11B7;B1C0;1102 116B 11B7;
+B1C1;B1C1;1102 116B 11B8;B1C1;1102 116B 11B8;
+B1C2;B1C2;1102 116B 11B9;B1C2;1102 116B 11B9;
+B1C3;B1C3;1102 116B 11BA;B1C3;1102 116B 11BA;
+B1C4;B1C4;1102 116B 11BB;B1C4;1102 116B 11BB;
+B1C5;B1C5;1102 116B 11BC;B1C5;1102 116B 11BC;
+B1C6;B1C6;1102 116B 11BD;B1C6;1102 116B 11BD;
+B1C7;B1C7;1102 116B 11BE;B1C7;1102 116B 11BE;
+B1C8;B1C8;1102 116B 11BF;B1C8;1102 116B 11BF;
+B1C9;B1C9;1102 116B 11C0;B1C9;1102 116B 11C0;
+B1CA;B1CA;1102 116B 11C1;B1CA;1102 116B 11C1;
+B1CB;B1CB;1102 116B 11C2;B1CB;1102 116B 11C2;
+B1CC;B1CC;1102 116C;B1CC;1102 116C;
+B1CD;B1CD;1102 116C 11A8;B1CD;1102 116C 11A8;
+B1CE;B1CE;1102 116C 11A9;B1CE;1102 116C 11A9;
+B1CF;B1CF;1102 116C 11AA;B1CF;1102 116C 11AA;
+B1D0;B1D0;1102 116C 11AB;B1D0;1102 116C 11AB;
+B1D1;B1D1;1102 116C 11AC;B1D1;1102 116C 11AC;
+B1D2;B1D2;1102 116C 11AD;B1D2;1102 116C 11AD;
+B1D3;B1D3;1102 116C 11AE;B1D3;1102 116C 11AE;
+B1D4;B1D4;1102 116C 11AF;B1D4;1102 116C 11AF;
+B1D5;B1D5;1102 116C 11B0;B1D5;1102 116C 11B0;
+B1D6;B1D6;1102 116C 11B1;B1D6;1102 116C 11B1;
+B1D7;B1D7;1102 116C 11B2;B1D7;1102 116C 11B2;
+B1D8;B1D8;1102 116C 11B3;B1D8;1102 116C 11B3;
+B1D9;B1D9;1102 116C 11B4;B1D9;1102 116C 11B4;
+B1DA;B1DA;1102 116C 11B5;B1DA;1102 116C 11B5;
+B1DB;B1DB;1102 116C 11B6;B1DB;1102 116C 11B6;
+B1DC;B1DC;1102 116C 11B7;B1DC;1102 116C 11B7;
+B1DD;B1DD;1102 116C 11B8;B1DD;1102 116C 11B8;
+B1DE;B1DE;1102 116C 11B9;B1DE;1102 116C 11B9;
+B1DF;B1DF;1102 116C 11BA;B1DF;1102 116C 11BA;
+B1E0;B1E0;1102 116C 11BB;B1E0;1102 116C 11BB;
+B1E1;B1E1;1102 116C 11BC;B1E1;1102 116C 11BC;
+B1E2;B1E2;1102 116C 11BD;B1E2;1102 116C 11BD;
+B1E3;B1E3;1102 116C 11BE;B1E3;1102 116C 11BE;
+B1E4;B1E4;1102 116C 11BF;B1E4;1102 116C 11BF;
+B1E5;B1E5;1102 116C 11C0;B1E5;1102 116C 11C0;
+B1E6;B1E6;1102 116C 11C1;B1E6;1102 116C 11C1;
+B1E7;B1E7;1102 116C 11C2;B1E7;1102 116C 11C2;
+B1E8;B1E8;1102 116D;B1E8;1102 116D;
+B1E9;B1E9;1102 116D 11A8;B1E9;1102 116D 11A8;
+B1EA;B1EA;1102 116D 11A9;B1EA;1102 116D 11A9;
+B1EB;B1EB;1102 116D 11AA;B1EB;1102 116D 11AA;
+B1EC;B1EC;1102 116D 11AB;B1EC;1102 116D 11AB;
+B1ED;B1ED;1102 116D 11AC;B1ED;1102 116D 11AC;
+B1EE;B1EE;1102 116D 11AD;B1EE;1102 116D 11AD;
+B1EF;B1EF;1102 116D 11AE;B1EF;1102 116D 11AE;
+B1F0;B1F0;1102 116D 11AF;B1F0;1102 116D 11AF;
+B1F1;B1F1;1102 116D 11B0;B1F1;1102 116D 11B0;
+B1F2;B1F2;1102 116D 11B1;B1F2;1102 116D 11B1;
+B1F3;B1F3;1102 116D 11B2;B1F3;1102 116D 11B2;
+B1F4;B1F4;1102 116D 11B3;B1F4;1102 116D 11B3;
+B1F5;B1F5;1102 116D 11B4;B1F5;1102 116D 11B4;
+B1F6;B1F6;1102 116D 11B5;B1F6;1102 116D 11B5;
+B1F7;B1F7;1102 116D 11B6;B1F7;1102 116D 11B6;
+B1F8;B1F8;1102 116D 11B7;B1F8;1102 116D 11B7;
+B1F9;B1F9;1102 116D 11B8;B1F9;1102 116D 11B8;
+B1FA;B1FA;1102 116D 11B9;B1FA;1102 116D 11B9;
+B1FB;B1FB;1102 116D 11BA;B1FB;1102 116D 11BA;
+B1FC;B1FC;1102 116D 11BB;B1FC;1102 116D 11BB;
+B1FD;B1FD;1102 116D 11BC;B1FD;1102 116D 11BC;
+B1FE;B1FE;1102 116D 11BD;B1FE;1102 116D 11BD;
+B1FF;B1FF;1102 116D 11BE;B1FF;1102 116D 11BE;
+B200;B200;1102 116D 11BF;B200;1102 116D 11BF;
+B201;B201;1102 116D 11C0;B201;1102 116D 11C0;
+B202;B202;1102 116D 11C1;B202;1102 116D 11C1;
+B203;B203;1102 116D 11C2;B203;1102 116D 11C2;
+B204;B204;1102 116E;B204;1102 116E;
+B205;B205;1102 116E 11A8;B205;1102 116E 11A8;
+B206;B206;1102 116E 11A9;B206;1102 116E 11A9;
+B207;B207;1102 116E 11AA;B207;1102 116E 11AA;
+B208;B208;1102 116E 11AB;B208;1102 116E 11AB;
+B209;B209;1102 116E 11AC;B209;1102 116E 11AC;
+B20A;B20A;1102 116E 11AD;B20A;1102 116E 11AD;
+B20B;B20B;1102 116E 11AE;B20B;1102 116E 11AE;
+B20C;B20C;1102 116E 11AF;B20C;1102 116E 11AF;
+B20D;B20D;1102 116E 11B0;B20D;1102 116E 11B0;
+B20E;B20E;1102 116E 11B1;B20E;1102 116E 11B1;
+B20F;B20F;1102 116E 11B2;B20F;1102 116E 11B2;
+B210;B210;1102 116E 11B3;B210;1102 116E 11B3;
+B211;B211;1102 116E 11B4;B211;1102 116E 11B4;
+B212;B212;1102 116E 11B5;B212;1102 116E 11B5;
+B213;B213;1102 116E 11B6;B213;1102 116E 11B6;
+B214;B214;1102 116E 11B7;B214;1102 116E 11B7;
+B215;B215;1102 116E 11B8;B215;1102 116E 11B8;
+B216;B216;1102 116E 11B9;B216;1102 116E 11B9;
+B217;B217;1102 116E 11BA;B217;1102 116E 11BA;
+B218;B218;1102 116E 11BB;B218;1102 116E 11BB;
+B219;B219;1102 116E 11BC;B219;1102 116E 11BC;
+B21A;B21A;1102 116E 11BD;B21A;1102 116E 11BD;
+B21B;B21B;1102 116E 11BE;B21B;1102 116E 11BE;
+B21C;B21C;1102 116E 11BF;B21C;1102 116E 11BF;
+B21D;B21D;1102 116E 11C0;B21D;1102 116E 11C0;
+B21E;B21E;1102 116E 11C1;B21E;1102 116E 11C1;
+B21F;B21F;1102 116E 11C2;B21F;1102 116E 11C2;
+B220;B220;1102 116F;B220;1102 116F;
+B221;B221;1102 116F 11A8;B221;1102 116F 11A8;
+B222;B222;1102 116F 11A9;B222;1102 116F 11A9;
+B223;B223;1102 116F 11AA;B223;1102 116F 11AA;
+B224;B224;1102 116F 11AB;B224;1102 116F 11AB;
+B225;B225;1102 116F 11AC;B225;1102 116F 11AC;
+B226;B226;1102 116F 11AD;B226;1102 116F 11AD;
+B227;B227;1102 116F 11AE;B227;1102 116F 11AE;
+B228;B228;1102 116F 11AF;B228;1102 116F 11AF;
+B229;B229;1102 116F 11B0;B229;1102 116F 11B0;
+B22A;B22A;1102 116F 11B1;B22A;1102 116F 11B1;
+B22B;B22B;1102 116F 11B2;B22B;1102 116F 11B2;
+B22C;B22C;1102 116F 11B3;B22C;1102 116F 11B3;
+B22D;B22D;1102 116F 11B4;B22D;1102 116F 11B4;
+B22E;B22E;1102 116F 11B5;B22E;1102 116F 11B5;
+B22F;B22F;1102 116F 11B6;B22F;1102 116F 11B6;
+B230;B230;1102 116F 11B7;B230;1102 116F 11B7;
+B231;B231;1102 116F 11B8;B231;1102 116F 11B8;
+B232;B232;1102 116F 11B9;B232;1102 116F 11B9;
+B233;B233;1102 116F 11BA;B233;1102 116F 11BA;
+B234;B234;1102 116F 11BB;B234;1102 116F 11BB;
+B235;B235;1102 116F 11BC;B235;1102 116F 11BC;
+B236;B236;1102 116F 11BD;B236;1102 116F 11BD;
+B237;B237;1102 116F 11BE;B237;1102 116F 11BE;
+B238;B238;1102 116F 11BF;B238;1102 116F 11BF;
+B239;B239;1102 116F 11C0;B239;1102 116F 11C0;
+B23A;B23A;1102 116F 11C1;B23A;1102 116F 11C1;
+B23B;B23B;1102 116F 11C2;B23B;1102 116F 11C2;
+B23C;B23C;1102 1170;B23C;1102 1170;
+B23D;B23D;1102 1170 11A8;B23D;1102 1170 11A8;
+B23E;B23E;1102 1170 11A9;B23E;1102 1170 11A9;
+B23F;B23F;1102 1170 11AA;B23F;1102 1170 11AA;
+B240;B240;1102 1170 11AB;B240;1102 1170 11AB;
+B241;B241;1102 1170 11AC;B241;1102 1170 11AC;
+B242;B242;1102 1170 11AD;B242;1102 1170 11AD;
+B243;B243;1102 1170 11AE;B243;1102 1170 11AE;
+B244;B244;1102 1170 11AF;B244;1102 1170 11AF;
+B245;B245;1102 1170 11B0;B245;1102 1170 11B0;
+B246;B246;1102 1170 11B1;B246;1102 1170 11B1;
+B247;B247;1102 1170 11B2;B247;1102 1170 11B2;
+B248;B248;1102 1170 11B3;B248;1102 1170 11B3;
+B249;B249;1102 1170 11B4;B249;1102 1170 11B4;
+B24A;B24A;1102 1170 11B5;B24A;1102 1170 11B5;
+B24B;B24B;1102 1170 11B6;B24B;1102 1170 11B6;
+B24C;B24C;1102 1170 11B7;B24C;1102 1170 11B7;
+B24D;B24D;1102 1170 11B8;B24D;1102 1170 11B8;
+B24E;B24E;1102 1170 11B9;B24E;1102 1170 11B9;
+B24F;B24F;1102 1170 11BA;B24F;1102 1170 11BA;
+B250;B250;1102 1170 11BB;B250;1102 1170 11BB;
+B251;B251;1102 1170 11BC;B251;1102 1170 11BC;
+B252;B252;1102 1170 11BD;B252;1102 1170 11BD;
+B253;B253;1102 1170 11BE;B253;1102 1170 11BE;
+B254;B254;1102 1170 11BF;B254;1102 1170 11BF;
+B255;B255;1102 1170 11C0;B255;1102 1170 11C0;
+B256;B256;1102 1170 11C1;B256;1102 1170 11C1;
+B257;B257;1102 1170 11C2;B257;1102 1170 11C2;
+B258;B258;1102 1171;B258;1102 1171;
+B259;B259;1102 1171 11A8;B259;1102 1171 11A8;
+B25A;B25A;1102 1171 11A9;B25A;1102 1171 11A9;
+B25B;B25B;1102 1171 11AA;B25B;1102 1171 11AA;
+B25C;B25C;1102 1171 11AB;B25C;1102 1171 11AB;
+B25D;B25D;1102 1171 11AC;B25D;1102 1171 11AC;
+B25E;B25E;1102 1171 11AD;B25E;1102 1171 11AD;
+B25F;B25F;1102 1171 11AE;B25F;1102 1171 11AE;
+B260;B260;1102 1171 11AF;B260;1102 1171 11AF;
+B261;B261;1102 1171 11B0;B261;1102 1171 11B0;
+B262;B262;1102 1171 11B1;B262;1102 1171 11B1;
+B263;B263;1102 1171 11B2;B263;1102 1171 11B2;
+B264;B264;1102 1171 11B3;B264;1102 1171 11B3;
+B265;B265;1102 1171 11B4;B265;1102 1171 11B4;
+B266;B266;1102 1171 11B5;B266;1102 1171 11B5;
+B267;B267;1102 1171 11B6;B267;1102 1171 11B6;
+B268;B268;1102 1171 11B7;B268;1102 1171 11B7;
+B269;B269;1102 1171 11B8;B269;1102 1171 11B8;
+B26A;B26A;1102 1171 11B9;B26A;1102 1171 11B9;
+B26B;B26B;1102 1171 11BA;B26B;1102 1171 11BA;
+B26C;B26C;1102 1171 11BB;B26C;1102 1171 11BB;
+B26D;B26D;1102 1171 11BC;B26D;1102 1171 11BC;
+B26E;B26E;1102 1171 11BD;B26E;1102 1171 11BD;
+B26F;B26F;1102 1171 11BE;B26F;1102 1171 11BE;
+B270;B270;1102 1171 11BF;B270;1102 1171 11BF;
+B271;B271;1102 1171 11C0;B271;1102 1171 11C0;
+B272;B272;1102 1171 11C1;B272;1102 1171 11C1;
+B273;B273;1102 1171 11C2;B273;1102 1171 11C2;
+B274;B274;1102 1172;B274;1102 1172;
+B275;B275;1102 1172 11A8;B275;1102 1172 11A8;
+B276;B276;1102 1172 11A9;B276;1102 1172 11A9;
+B277;B277;1102 1172 11AA;B277;1102 1172 11AA;
+B278;B278;1102 1172 11AB;B278;1102 1172 11AB;
+B279;B279;1102 1172 11AC;B279;1102 1172 11AC;
+B27A;B27A;1102 1172 11AD;B27A;1102 1172 11AD;
+B27B;B27B;1102 1172 11AE;B27B;1102 1172 11AE;
+B27C;B27C;1102 1172 11AF;B27C;1102 1172 11AF;
+B27D;B27D;1102 1172 11B0;B27D;1102 1172 11B0;
+B27E;B27E;1102 1172 11B1;B27E;1102 1172 11B1;
+B27F;B27F;1102 1172 11B2;B27F;1102 1172 11B2;
+B280;B280;1102 1172 11B3;B280;1102 1172 11B3;
+B281;B281;1102 1172 11B4;B281;1102 1172 11B4;
+B282;B282;1102 1172 11B5;B282;1102 1172 11B5;
+B283;B283;1102 1172 11B6;B283;1102 1172 11B6;
+B284;B284;1102 1172 11B7;B284;1102 1172 11B7;
+B285;B285;1102 1172 11B8;B285;1102 1172 11B8;
+B286;B286;1102 1172 11B9;B286;1102 1172 11B9;
+B287;B287;1102 1172 11BA;B287;1102 1172 11BA;
+B288;B288;1102 1172 11BB;B288;1102 1172 11BB;
+B289;B289;1102 1172 11BC;B289;1102 1172 11BC;
+B28A;B28A;1102 1172 11BD;B28A;1102 1172 11BD;
+B28B;B28B;1102 1172 11BE;B28B;1102 1172 11BE;
+B28C;B28C;1102 1172 11BF;B28C;1102 1172 11BF;
+B28D;B28D;1102 1172 11C0;B28D;1102 1172 11C0;
+B28E;B28E;1102 1172 11C1;B28E;1102 1172 11C1;
+B28F;B28F;1102 1172 11C2;B28F;1102 1172 11C2;
+B290;B290;1102 1173;B290;1102 1173;
+B291;B291;1102 1173 11A8;B291;1102 1173 11A8;
+B292;B292;1102 1173 11A9;B292;1102 1173 11A9;
+B293;B293;1102 1173 11AA;B293;1102 1173 11AA;
+B294;B294;1102 1173 11AB;B294;1102 1173 11AB;
+B295;B295;1102 1173 11AC;B295;1102 1173 11AC;
+B296;B296;1102 1173 11AD;B296;1102 1173 11AD;
+B297;B297;1102 1173 11AE;B297;1102 1173 11AE;
+B298;B298;1102 1173 11AF;B298;1102 1173 11AF;
+B299;B299;1102 1173 11B0;B299;1102 1173 11B0;
+B29A;B29A;1102 1173 11B1;B29A;1102 1173 11B1;
+B29B;B29B;1102 1173 11B2;B29B;1102 1173 11B2;
+B29C;B29C;1102 1173 11B3;B29C;1102 1173 11B3;
+B29D;B29D;1102 1173 11B4;B29D;1102 1173 11B4;
+B29E;B29E;1102 1173 11B5;B29E;1102 1173 11B5;
+B29F;B29F;1102 1173 11B6;B29F;1102 1173 11B6;
+B2A0;B2A0;1102 1173 11B7;B2A0;1102 1173 11B7;
+B2A1;B2A1;1102 1173 11B8;B2A1;1102 1173 11B8;
+B2A2;B2A2;1102 1173 11B9;B2A2;1102 1173 11B9;
+B2A3;B2A3;1102 1173 11BA;B2A3;1102 1173 11BA;
+B2A4;B2A4;1102 1173 11BB;B2A4;1102 1173 11BB;
+B2A5;B2A5;1102 1173 11BC;B2A5;1102 1173 11BC;
+B2A6;B2A6;1102 1173 11BD;B2A6;1102 1173 11BD;
+B2A7;B2A7;1102 1173 11BE;B2A7;1102 1173 11BE;
+B2A8;B2A8;1102 1173 11BF;B2A8;1102 1173 11BF;
+B2A9;B2A9;1102 1173 11C0;B2A9;1102 1173 11C0;
+B2AA;B2AA;1102 1173 11C1;B2AA;1102 1173 11C1;
+B2AB;B2AB;1102 1173 11C2;B2AB;1102 1173 11C2;
+B2AC;B2AC;1102 1174;B2AC;1102 1174;
+B2AD;B2AD;1102 1174 11A8;B2AD;1102 1174 11A8;
+B2AE;B2AE;1102 1174 11A9;B2AE;1102 1174 11A9;
+B2AF;B2AF;1102 1174 11AA;B2AF;1102 1174 11AA;
+B2B0;B2B0;1102 1174 11AB;B2B0;1102 1174 11AB;
+B2B1;B2B1;1102 1174 11AC;B2B1;1102 1174 11AC;
+B2B2;B2B2;1102 1174 11AD;B2B2;1102 1174 11AD;
+B2B3;B2B3;1102 1174 11AE;B2B3;1102 1174 11AE;
+B2B4;B2B4;1102 1174 11AF;B2B4;1102 1174 11AF;
+B2B5;B2B5;1102 1174 11B0;B2B5;1102 1174 11B0;
+B2B6;B2B6;1102 1174 11B1;B2B6;1102 1174 11B1;
+B2B7;B2B7;1102 1174 11B2;B2B7;1102 1174 11B2;
+B2B8;B2B8;1102 1174 11B3;B2B8;1102 1174 11B3;
+B2B9;B2B9;1102 1174 11B4;B2B9;1102 1174 11B4;
+B2BA;B2BA;1102 1174 11B5;B2BA;1102 1174 11B5;
+B2BB;B2BB;1102 1174 11B6;B2BB;1102 1174 11B6;
+B2BC;B2BC;1102 1174 11B7;B2BC;1102 1174 11B7;
+B2BD;B2BD;1102 1174 11B8;B2BD;1102 1174 11B8;
+B2BE;B2BE;1102 1174 11B9;B2BE;1102 1174 11B9;
+B2BF;B2BF;1102 1174 11BA;B2BF;1102 1174 11BA;
+B2C0;B2C0;1102 1174 11BB;B2C0;1102 1174 11BB;
+B2C1;B2C1;1102 1174 11BC;B2C1;1102 1174 11BC;
+B2C2;B2C2;1102 1174 11BD;B2C2;1102 1174 11BD;
+B2C3;B2C3;1102 1174 11BE;B2C3;1102 1174 11BE;
+B2C4;B2C4;1102 1174 11BF;B2C4;1102 1174 11BF;
+B2C5;B2C5;1102 1174 11C0;B2C5;1102 1174 11C0;
+B2C6;B2C6;1102 1174 11C1;B2C6;1102 1174 11C1;
+B2C7;B2C7;1102 1174 11C2;B2C7;1102 1174 11C2;
+B2C8;B2C8;1102 1175;B2C8;1102 1175;
+B2C9;B2C9;1102 1175 11A8;B2C9;1102 1175 11A8;
+B2CA;B2CA;1102 1175 11A9;B2CA;1102 1175 11A9;
+B2CB;B2CB;1102 1175 11AA;B2CB;1102 1175 11AA;
+B2CC;B2CC;1102 1175 11AB;B2CC;1102 1175 11AB;
+B2CD;B2CD;1102 1175 11AC;B2CD;1102 1175 11AC;
+B2CE;B2CE;1102 1175 11AD;B2CE;1102 1175 11AD;
+B2CF;B2CF;1102 1175 11AE;B2CF;1102 1175 11AE;
+B2D0;B2D0;1102 1175 11AF;B2D0;1102 1175 11AF;
+B2D1;B2D1;1102 1175 11B0;B2D1;1102 1175 11B0;
+B2D2;B2D2;1102 1175 11B1;B2D2;1102 1175 11B1;
+B2D3;B2D3;1102 1175 11B2;B2D3;1102 1175 11B2;
+B2D4;B2D4;1102 1175 11B3;B2D4;1102 1175 11B3;
+B2D5;B2D5;1102 1175 11B4;B2D5;1102 1175 11B4;
+B2D6;B2D6;1102 1175 11B5;B2D6;1102 1175 11B5;
+B2D7;B2D7;1102 1175 11B6;B2D7;1102 1175 11B6;
+B2D8;B2D8;1102 1175 11B7;B2D8;1102 1175 11B7;
+B2D9;B2D9;1102 1175 11B8;B2D9;1102 1175 11B8;
+B2DA;B2DA;1102 1175 11B9;B2DA;1102 1175 11B9;
+B2DB;B2DB;1102 1175 11BA;B2DB;1102 1175 11BA;
+B2DC;B2DC;1102 1175 11BB;B2DC;1102 1175 11BB;
+B2DD;B2DD;1102 1175 11BC;B2DD;1102 1175 11BC;
+B2DE;B2DE;1102 1175 11BD;B2DE;1102 1175 11BD;
+B2DF;B2DF;1102 1175 11BE;B2DF;1102 1175 11BE;
+B2E0;B2E0;1102 1175 11BF;B2E0;1102 1175 11BF;
+B2E1;B2E1;1102 1175 11C0;B2E1;1102 1175 11C0;
+B2E2;B2E2;1102 1175 11C1;B2E2;1102 1175 11C1;
+B2E3;B2E3;1102 1175 11C2;B2E3;1102 1175 11C2;
+B2E4;B2E4;1103 1161;B2E4;1103 1161;
+B2E5;B2E5;1103 1161 11A8;B2E5;1103 1161 11A8;
+B2E6;B2E6;1103 1161 11A9;B2E6;1103 1161 11A9;
+B2E7;B2E7;1103 1161 11AA;B2E7;1103 1161 11AA;
+B2E8;B2E8;1103 1161 11AB;B2E8;1103 1161 11AB;
+B2E9;B2E9;1103 1161 11AC;B2E9;1103 1161 11AC;
+B2EA;B2EA;1103 1161 11AD;B2EA;1103 1161 11AD;
+B2EB;B2EB;1103 1161 11AE;B2EB;1103 1161 11AE;
+B2EC;B2EC;1103 1161 11AF;B2EC;1103 1161 11AF;
+B2ED;B2ED;1103 1161 11B0;B2ED;1103 1161 11B0;
+B2EE;B2EE;1103 1161 11B1;B2EE;1103 1161 11B1;
+B2EF;B2EF;1103 1161 11B2;B2EF;1103 1161 11B2;
+B2F0;B2F0;1103 1161 11B3;B2F0;1103 1161 11B3;
+B2F1;B2F1;1103 1161 11B4;B2F1;1103 1161 11B4;
+B2F2;B2F2;1103 1161 11B5;B2F2;1103 1161 11B5;
+B2F3;B2F3;1103 1161 11B6;B2F3;1103 1161 11B6;
+B2F4;B2F4;1103 1161 11B7;B2F4;1103 1161 11B7;
+B2F5;B2F5;1103 1161 11B8;B2F5;1103 1161 11B8;
+B2F6;B2F6;1103 1161 11B9;B2F6;1103 1161 11B9;
+B2F7;B2F7;1103 1161 11BA;B2F7;1103 1161 11BA;
+B2F8;B2F8;1103 1161 11BB;B2F8;1103 1161 11BB;
+B2F9;B2F9;1103 1161 11BC;B2F9;1103 1161 11BC;
+B2FA;B2FA;1103 1161 11BD;B2FA;1103 1161 11BD;
+B2FB;B2FB;1103 1161 11BE;B2FB;1103 1161 11BE;
+B2FC;B2FC;1103 1161 11BF;B2FC;1103 1161 11BF;
+B2FD;B2FD;1103 1161 11C0;B2FD;1103 1161 11C0;
+B2FE;B2FE;1103 1161 11C1;B2FE;1103 1161 11C1;
+B2FF;B2FF;1103 1161 11C2;B2FF;1103 1161 11C2;
+B300;B300;1103 1162;B300;1103 1162;
+B301;B301;1103 1162 11A8;B301;1103 1162 11A8;
+B302;B302;1103 1162 11A9;B302;1103 1162 11A9;
+B303;B303;1103 1162 11AA;B303;1103 1162 11AA;
+B304;B304;1103 1162 11AB;B304;1103 1162 11AB;
+B305;B305;1103 1162 11AC;B305;1103 1162 11AC;
+B306;B306;1103 1162 11AD;B306;1103 1162 11AD;
+B307;B307;1103 1162 11AE;B307;1103 1162 11AE;
+B308;B308;1103 1162 11AF;B308;1103 1162 11AF;
+B309;B309;1103 1162 11B0;B309;1103 1162 11B0;
+B30A;B30A;1103 1162 11B1;B30A;1103 1162 11B1;
+B30B;B30B;1103 1162 11B2;B30B;1103 1162 11B2;
+B30C;B30C;1103 1162 11B3;B30C;1103 1162 11B3;
+B30D;B30D;1103 1162 11B4;B30D;1103 1162 11B4;
+B30E;B30E;1103 1162 11B5;B30E;1103 1162 11B5;
+B30F;B30F;1103 1162 11B6;B30F;1103 1162 11B6;
+B310;B310;1103 1162 11B7;B310;1103 1162 11B7;
+B311;B311;1103 1162 11B8;B311;1103 1162 11B8;
+B312;B312;1103 1162 11B9;B312;1103 1162 11B9;
+B313;B313;1103 1162 11BA;B313;1103 1162 11BA;
+B314;B314;1103 1162 11BB;B314;1103 1162 11BB;
+B315;B315;1103 1162 11BC;B315;1103 1162 11BC;
+B316;B316;1103 1162 11BD;B316;1103 1162 11BD;
+B317;B317;1103 1162 11BE;B317;1103 1162 11BE;
+B318;B318;1103 1162 11BF;B318;1103 1162 11BF;
+B319;B319;1103 1162 11C0;B319;1103 1162 11C0;
+B31A;B31A;1103 1162 11C1;B31A;1103 1162 11C1;
+B31B;B31B;1103 1162 11C2;B31B;1103 1162 11C2;
+B31C;B31C;1103 1163;B31C;1103 1163;
+B31D;B31D;1103 1163 11A8;B31D;1103 1163 11A8;
+B31E;B31E;1103 1163 11A9;B31E;1103 1163 11A9;
+B31F;B31F;1103 1163 11AA;B31F;1103 1163 11AA;
+B320;B320;1103 1163 11AB;B320;1103 1163 11AB;
+B321;B321;1103 1163 11AC;B321;1103 1163 11AC;
+B322;B322;1103 1163 11AD;B322;1103 1163 11AD;
+B323;B323;1103 1163 11AE;B323;1103 1163 11AE;
+B324;B324;1103 1163 11AF;B324;1103 1163 11AF;
+B325;B325;1103 1163 11B0;B325;1103 1163 11B0;
+B326;B326;1103 1163 11B1;B326;1103 1163 11B1;
+B327;B327;1103 1163 11B2;B327;1103 1163 11B2;
+B328;B328;1103 1163 11B3;B328;1103 1163 11B3;
+B329;B329;1103 1163 11B4;B329;1103 1163 11B4;
+B32A;B32A;1103 1163 11B5;B32A;1103 1163 11B5;
+B32B;B32B;1103 1163 11B6;B32B;1103 1163 11B6;
+B32C;B32C;1103 1163 11B7;B32C;1103 1163 11B7;
+B32D;B32D;1103 1163 11B8;B32D;1103 1163 11B8;
+B32E;B32E;1103 1163 11B9;B32E;1103 1163 11B9;
+B32F;B32F;1103 1163 11BA;B32F;1103 1163 11BA;
+B330;B330;1103 1163 11BB;B330;1103 1163 11BB;
+B331;B331;1103 1163 11BC;B331;1103 1163 11BC;
+B332;B332;1103 1163 11BD;B332;1103 1163 11BD;
+B333;B333;1103 1163 11BE;B333;1103 1163 11BE;
+B334;B334;1103 1163 11BF;B334;1103 1163 11BF;
+B335;B335;1103 1163 11C0;B335;1103 1163 11C0;
+B336;B336;1103 1163 11C1;B336;1103 1163 11C1;
+B337;B337;1103 1163 11C2;B337;1103 1163 11C2;
+B338;B338;1103 1164;B338;1103 1164;
+B339;B339;1103 1164 11A8;B339;1103 1164 11A8;
+B33A;B33A;1103 1164 11A9;B33A;1103 1164 11A9;
+B33B;B33B;1103 1164 11AA;B33B;1103 1164 11AA;
+B33C;B33C;1103 1164 11AB;B33C;1103 1164 11AB;
+B33D;B33D;1103 1164 11AC;B33D;1103 1164 11AC;
+B33E;B33E;1103 1164 11AD;B33E;1103 1164 11AD;
+B33F;B33F;1103 1164 11AE;B33F;1103 1164 11AE;
+B340;B340;1103 1164 11AF;B340;1103 1164 11AF;
+B341;B341;1103 1164 11B0;B341;1103 1164 11B0;
+B342;B342;1103 1164 11B1;B342;1103 1164 11B1;
+B343;B343;1103 1164 11B2;B343;1103 1164 11B2;
+B344;B344;1103 1164 11B3;B344;1103 1164 11B3;
+B345;B345;1103 1164 11B4;B345;1103 1164 11B4;
+B346;B346;1103 1164 11B5;B346;1103 1164 11B5;
+B347;B347;1103 1164 11B6;B347;1103 1164 11B6;
+B348;B348;1103 1164 11B7;B348;1103 1164 11B7;
+B349;B349;1103 1164 11B8;B349;1103 1164 11B8;
+B34A;B34A;1103 1164 11B9;B34A;1103 1164 11B9;
+B34B;B34B;1103 1164 11BA;B34B;1103 1164 11BA;
+B34C;B34C;1103 1164 11BB;B34C;1103 1164 11BB;
+B34D;B34D;1103 1164 11BC;B34D;1103 1164 11BC;
+B34E;B34E;1103 1164 11BD;B34E;1103 1164 11BD;
+B34F;B34F;1103 1164 11BE;B34F;1103 1164 11BE;
+B350;B350;1103 1164 11BF;B350;1103 1164 11BF;
+B351;B351;1103 1164 11C0;B351;1103 1164 11C0;
+B352;B352;1103 1164 11C1;B352;1103 1164 11C1;
+B353;B353;1103 1164 11C2;B353;1103 1164 11C2;
+B354;B354;1103 1165;B354;1103 1165;
+B355;B355;1103 1165 11A8;B355;1103 1165 11A8;
+B356;B356;1103 1165 11A9;B356;1103 1165 11A9;
+B357;B357;1103 1165 11AA;B357;1103 1165 11AA;
+B358;B358;1103 1165 11AB;B358;1103 1165 11AB;
+B359;B359;1103 1165 11AC;B359;1103 1165 11AC;
+B35A;B35A;1103 1165 11AD;B35A;1103 1165 11AD;
+B35B;B35B;1103 1165 11AE;B35B;1103 1165 11AE;
+B35C;B35C;1103 1165 11AF;B35C;1103 1165 11AF;
+B35D;B35D;1103 1165 11B0;B35D;1103 1165 11B0;
+B35E;B35E;1103 1165 11B1;B35E;1103 1165 11B1;
+B35F;B35F;1103 1165 11B2;B35F;1103 1165 11B2;
+B360;B360;1103 1165 11B3;B360;1103 1165 11B3;
+B361;B361;1103 1165 11B4;B361;1103 1165 11B4;
+B362;B362;1103 1165 11B5;B362;1103 1165 11B5;
+B363;B363;1103 1165 11B6;B363;1103 1165 11B6;
+B364;B364;1103 1165 11B7;B364;1103 1165 11B7;
+B365;B365;1103 1165 11B8;B365;1103 1165 11B8;
+B366;B366;1103 1165 11B9;B366;1103 1165 11B9;
+B367;B367;1103 1165 11BA;B367;1103 1165 11BA;
+B368;B368;1103 1165 11BB;B368;1103 1165 11BB;
+B369;B369;1103 1165 11BC;B369;1103 1165 11BC;
+B36A;B36A;1103 1165 11BD;B36A;1103 1165 11BD;
+B36B;B36B;1103 1165 11BE;B36B;1103 1165 11BE;
+B36C;B36C;1103 1165 11BF;B36C;1103 1165 11BF;
+B36D;B36D;1103 1165 11C0;B36D;1103 1165 11C0;
+B36E;B36E;1103 1165 11C1;B36E;1103 1165 11C1;
+B36F;B36F;1103 1165 11C2;B36F;1103 1165 11C2;
+B370;B370;1103 1166;B370;1103 1166;
+B371;B371;1103 1166 11A8;B371;1103 1166 11A8;
+B372;B372;1103 1166 11A9;B372;1103 1166 11A9;
+B373;B373;1103 1166 11AA;B373;1103 1166 11AA;
+B374;B374;1103 1166 11AB;B374;1103 1166 11AB;
+B375;B375;1103 1166 11AC;B375;1103 1166 11AC;
+B376;B376;1103 1166 11AD;B376;1103 1166 11AD;
+B377;B377;1103 1166 11AE;B377;1103 1166 11AE;
+B378;B378;1103 1166 11AF;B378;1103 1166 11AF;
+B379;B379;1103 1166 11B0;B379;1103 1166 11B0;
+B37A;B37A;1103 1166 11B1;B37A;1103 1166 11B1;
+B37B;B37B;1103 1166 11B2;B37B;1103 1166 11B2;
+B37C;B37C;1103 1166 11B3;B37C;1103 1166 11B3;
+B37D;B37D;1103 1166 11B4;B37D;1103 1166 11B4;
+B37E;B37E;1103 1166 11B5;B37E;1103 1166 11B5;
+B37F;B37F;1103 1166 11B6;B37F;1103 1166 11B6;
+B380;B380;1103 1166 11B7;B380;1103 1166 11B7;
+B381;B381;1103 1166 11B8;B381;1103 1166 11B8;
+B382;B382;1103 1166 11B9;B382;1103 1166 11B9;
+B383;B383;1103 1166 11BA;B383;1103 1166 11BA;
+B384;B384;1103 1166 11BB;B384;1103 1166 11BB;
+B385;B385;1103 1166 11BC;B385;1103 1166 11BC;
+B386;B386;1103 1166 11BD;B386;1103 1166 11BD;
+B387;B387;1103 1166 11BE;B387;1103 1166 11BE;
+B388;B388;1103 1166 11BF;B388;1103 1166 11BF;
+B389;B389;1103 1166 11C0;B389;1103 1166 11C0;
+B38A;B38A;1103 1166 11C1;B38A;1103 1166 11C1;
+B38B;B38B;1103 1166 11C2;B38B;1103 1166 11C2;
+B38C;B38C;1103 1167;B38C;1103 1167;
+B38D;B38D;1103 1167 11A8;B38D;1103 1167 11A8;
+B38E;B38E;1103 1167 11A9;B38E;1103 1167 11A9;
+B38F;B38F;1103 1167 11AA;B38F;1103 1167 11AA;
+B390;B390;1103 1167 11AB;B390;1103 1167 11AB;
+B391;B391;1103 1167 11AC;B391;1103 1167 11AC;
+B392;B392;1103 1167 11AD;B392;1103 1167 11AD;
+B393;B393;1103 1167 11AE;B393;1103 1167 11AE;
+B394;B394;1103 1167 11AF;B394;1103 1167 11AF;
+B395;B395;1103 1167 11B0;B395;1103 1167 11B0;
+B396;B396;1103 1167 11B1;B396;1103 1167 11B1;
+B397;B397;1103 1167 11B2;B397;1103 1167 11B2;
+B398;B398;1103 1167 11B3;B398;1103 1167 11B3;
+B399;B399;1103 1167 11B4;B399;1103 1167 11B4;
+B39A;B39A;1103 1167 11B5;B39A;1103 1167 11B5;
+B39B;B39B;1103 1167 11B6;B39B;1103 1167 11B6;
+B39C;B39C;1103 1167 11B7;B39C;1103 1167 11B7;
+B39D;B39D;1103 1167 11B8;B39D;1103 1167 11B8;
+B39E;B39E;1103 1167 11B9;B39E;1103 1167 11B9;
+B39F;B39F;1103 1167 11BA;B39F;1103 1167 11BA;
+B3A0;B3A0;1103 1167 11BB;B3A0;1103 1167 11BB;
+B3A1;B3A1;1103 1167 11BC;B3A1;1103 1167 11BC;
+B3A2;B3A2;1103 1167 11BD;B3A2;1103 1167 11BD;
+B3A3;B3A3;1103 1167 11BE;B3A3;1103 1167 11BE;
+B3A4;B3A4;1103 1167 11BF;B3A4;1103 1167 11BF;
+B3A5;B3A5;1103 1167 11C0;B3A5;1103 1167 11C0;
+B3A6;B3A6;1103 1167 11C1;B3A6;1103 1167 11C1;
+B3A7;B3A7;1103 1167 11C2;B3A7;1103 1167 11C2;
+B3A8;B3A8;1103 1168;B3A8;1103 1168;
+B3A9;B3A9;1103 1168 11A8;B3A9;1103 1168 11A8;
+B3AA;B3AA;1103 1168 11A9;B3AA;1103 1168 11A9;
+B3AB;B3AB;1103 1168 11AA;B3AB;1103 1168 11AA;
+B3AC;B3AC;1103 1168 11AB;B3AC;1103 1168 11AB;
+B3AD;B3AD;1103 1168 11AC;B3AD;1103 1168 11AC;
+B3AE;B3AE;1103 1168 11AD;B3AE;1103 1168 11AD;
+B3AF;B3AF;1103 1168 11AE;B3AF;1103 1168 11AE;
+B3B0;B3B0;1103 1168 11AF;B3B0;1103 1168 11AF;
+B3B1;B3B1;1103 1168 11B0;B3B1;1103 1168 11B0;
+B3B2;B3B2;1103 1168 11B1;B3B2;1103 1168 11B1;
+B3B3;B3B3;1103 1168 11B2;B3B3;1103 1168 11B2;
+B3B4;B3B4;1103 1168 11B3;B3B4;1103 1168 11B3;
+B3B5;B3B5;1103 1168 11B4;B3B5;1103 1168 11B4;
+B3B6;B3B6;1103 1168 11B5;B3B6;1103 1168 11B5;
+B3B7;B3B7;1103 1168 11B6;B3B7;1103 1168 11B6;
+B3B8;B3B8;1103 1168 11B7;B3B8;1103 1168 11B7;
+B3B9;B3B9;1103 1168 11B8;B3B9;1103 1168 11B8;
+B3BA;B3BA;1103 1168 11B9;B3BA;1103 1168 11B9;
+B3BB;B3BB;1103 1168 11BA;B3BB;1103 1168 11BA;
+B3BC;B3BC;1103 1168 11BB;B3BC;1103 1168 11BB;
+B3BD;B3BD;1103 1168 11BC;B3BD;1103 1168 11BC;
+B3BE;B3BE;1103 1168 11BD;B3BE;1103 1168 11BD;
+B3BF;B3BF;1103 1168 11BE;B3BF;1103 1168 11BE;
+B3C0;B3C0;1103 1168 11BF;B3C0;1103 1168 11BF;
+B3C1;B3C1;1103 1168 11C0;B3C1;1103 1168 11C0;
+B3C2;B3C2;1103 1168 11C1;B3C2;1103 1168 11C1;
+B3C3;B3C3;1103 1168 11C2;B3C3;1103 1168 11C2;
+B3C4;B3C4;1103 1169;B3C4;1103 1169;
+B3C5;B3C5;1103 1169 11A8;B3C5;1103 1169 11A8;
+B3C6;B3C6;1103 1169 11A9;B3C6;1103 1169 11A9;
+B3C7;B3C7;1103 1169 11AA;B3C7;1103 1169 11AA;
+B3C8;B3C8;1103 1169 11AB;B3C8;1103 1169 11AB;
+B3C9;B3C9;1103 1169 11AC;B3C9;1103 1169 11AC;
+B3CA;B3CA;1103 1169 11AD;B3CA;1103 1169 11AD;
+B3CB;B3CB;1103 1169 11AE;B3CB;1103 1169 11AE;
+B3CC;B3CC;1103 1169 11AF;B3CC;1103 1169 11AF;
+B3CD;B3CD;1103 1169 11B0;B3CD;1103 1169 11B0;
+B3CE;B3CE;1103 1169 11B1;B3CE;1103 1169 11B1;
+B3CF;B3CF;1103 1169 11B2;B3CF;1103 1169 11B2;
+B3D0;B3D0;1103 1169 11B3;B3D0;1103 1169 11B3;
+B3D1;B3D1;1103 1169 11B4;B3D1;1103 1169 11B4;
+B3D2;B3D2;1103 1169 11B5;B3D2;1103 1169 11B5;
+B3D3;B3D3;1103 1169 11B6;B3D3;1103 1169 11B6;
+B3D4;B3D4;1103 1169 11B7;B3D4;1103 1169 11B7;
+B3D5;B3D5;1103 1169 11B8;B3D5;1103 1169 11B8;
+B3D6;B3D6;1103 1169 11B9;B3D6;1103 1169 11B9;
+B3D7;B3D7;1103 1169 11BA;B3D7;1103 1169 11BA;
+B3D8;B3D8;1103 1169 11BB;B3D8;1103 1169 11BB;
+B3D9;B3D9;1103 1169 11BC;B3D9;1103 1169 11BC;
+B3DA;B3DA;1103 1169 11BD;B3DA;1103 1169 11BD;
+B3DB;B3DB;1103 1169 11BE;B3DB;1103 1169 11BE;
+B3DC;B3DC;1103 1169 11BF;B3DC;1103 1169 11BF;
+B3DD;B3DD;1103 1169 11C0;B3DD;1103 1169 11C0;
+B3DE;B3DE;1103 1169 11C1;B3DE;1103 1169 11C1;
+B3DF;B3DF;1103 1169 11C2;B3DF;1103 1169 11C2;
+B3E0;B3E0;1103 116A;B3E0;1103 116A;
+B3E1;B3E1;1103 116A 11A8;B3E1;1103 116A 11A8;
+B3E2;B3E2;1103 116A 11A9;B3E2;1103 116A 11A9;
+B3E3;B3E3;1103 116A 11AA;B3E3;1103 116A 11AA;
+B3E4;B3E4;1103 116A 11AB;B3E4;1103 116A 11AB;
+B3E5;B3E5;1103 116A 11AC;B3E5;1103 116A 11AC;
+B3E6;B3E6;1103 116A 11AD;B3E6;1103 116A 11AD;
+B3E7;B3E7;1103 116A 11AE;B3E7;1103 116A 11AE;
+B3E8;B3E8;1103 116A 11AF;B3E8;1103 116A 11AF;
+B3E9;B3E9;1103 116A 11B0;B3E9;1103 116A 11B0;
+B3EA;B3EA;1103 116A 11B1;B3EA;1103 116A 11B1;
+B3EB;B3EB;1103 116A 11B2;B3EB;1103 116A 11B2;
+B3EC;B3EC;1103 116A 11B3;B3EC;1103 116A 11B3;
+B3ED;B3ED;1103 116A 11B4;B3ED;1103 116A 11B4;
+B3EE;B3EE;1103 116A 11B5;B3EE;1103 116A 11B5;
+B3EF;B3EF;1103 116A 11B6;B3EF;1103 116A 11B6;
+B3F0;B3F0;1103 116A 11B7;B3F0;1103 116A 11B7;
+B3F1;B3F1;1103 116A 11B8;B3F1;1103 116A 11B8;
+B3F2;B3F2;1103 116A 11B9;B3F2;1103 116A 11B9;
+B3F3;B3F3;1103 116A 11BA;B3F3;1103 116A 11BA;
+B3F4;B3F4;1103 116A 11BB;B3F4;1103 116A 11BB;
+B3F5;B3F5;1103 116A 11BC;B3F5;1103 116A 11BC;
+B3F6;B3F6;1103 116A 11BD;B3F6;1103 116A 11BD;
+B3F7;B3F7;1103 116A 11BE;B3F7;1103 116A 11BE;
+B3F8;B3F8;1103 116A 11BF;B3F8;1103 116A 11BF;
+B3F9;B3F9;1103 116A 11C0;B3F9;1103 116A 11C0;
+B3FA;B3FA;1103 116A 11C1;B3FA;1103 116A 11C1;
+B3FB;B3FB;1103 116A 11C2;B3FB;1103 116A 11C2;
+B3FC;B3FC;1103 116B;B3FC;1103 116B;
+B3FD;B3FD;1103 116B 11A8;B3FD;1103 116B 11A8;
+B3FE;B3FE;1103 116B 11A9;B3FE;1103 116B 11A9;
+B3FF;B3FF;1103 116B 11AA;B3FF;1103 116B 11AA;
+B400;B400;1103 116B 11AB;B400;1103 116B 11AB;
+B401;B401;1103 116B 11AC;B401;1103 116B 11AC;
+B402;B402;1103 116B 11AD;B402;1103 116B 11AD;
+B403;B403;1103 116B 11AE;B403;1103 116B 11AE;
+B404;B404;1103 116B 11AF;B404;1103 116B 11AF;
+B405;B405;1103 116B 11B0;B405;1103 116B 11B0;
+B406;B406;1103 116B 11B1;B406;1103 116B 11B1;
+B407;B407;1103 116B 11B2;B407;1103 116B 11B2;
+B408;B408;1103 116B 11B3;B408;1103 116B 11B3;
+B409;B409;1103 116B 11B4;B409;1103 116B 11B4;
+B40A;B40A;1103 116B 11B5;B40A;1103 116B 11B5;
+B40B;B40B;1103 116B 11B6;B40B;1103 116B 11B6;
+B40C;B40C;1103 116B 11B7;B40C;1103 116B 11B7;
+B40D;B40D;1103 116B 11B8;B40D;1103 116B 11B8;
+B40E;B40E;1103 116B 11B9;B40E;1103 116B 11B9;
+B40F;B40F;1103 116B 11BA;B40F;1103 116B 11BA;
+B410;B410;1103 116B 11BB;B410;1103 116B 11BB;
+B411;B411;1103 116B 11BC;B411;1103 116B 11BC;
+B412;B412;1103 116B 11BD;B412;1103 116B 11BD;
+B413;B413;1103 116B 11BE;B413;1103 116B 11BE;
+B414;B414;1103 116B 11BF;B414;1103 116B 11BF;
+B415;B415;1103 116B 11C0;B415;1103 116B 11C0;
+B416;B416;1103 116B 11C1;B416;1103 116B 11C1;
+B417;B417;1103 116B 11C2;B417;1103 116B 11C2;
+B418;B418;1103 116C;B418;1103 116C;
+B419;B419;1103 116C 11A8;B419;1103 116C 11A8;
+B41A;B41A;1103 116C 11A9;B41A;1103 116C 11A9;
+B41B;B41B;1103 116C 11AA;B41B;1103 116C 11AA;
+B41C;B41C;1103 116C 11AB;B41C;1103 116C 11AB;
+B41D;B41D;1103 116C 11AC;B41D;1103 116C 11AC;
+B41E;B41E;1103 116C 11AD;B41E;1103 116C 11AD;
+B41F;B41F;1103 116C 11AE;B41F;1103 116C 11AE;
+B420;B420;1103 116C 11AF;B420;1103 116C 11AF;
+B421;B421;1103 116C 11B0;B421;1103 116C 11B0;
+B422;B422;1103 116C 11B1;B422;1103 116C 11B1;
+B423;B423;1103 116C 11B2;B423;1103 116C 11B2;
+B424;B424;1103 116C 11B3;B424;1103 116C 11B3;
+B425;B425;1103 116C 11B4;B425;1103 116C 11B4;
+B426;B426;1103 116C 11B5;B426;1103 116C 11B5;
+B427;B427;1103 116C 11B6;B427;1103 116C 11B6;
+B428;B428;1103 116C 11B7;B428;1103 116C 11B7;
+B429;B429;1103 116C 11B8;B429;1103 116C 11B8;
+B42A;B42A;1103 116C 11B9;B42A;1103 116C 11B9;
+B42B;B42B;1103 116C 11BA;B42B;1103 116C 11BA;
+B42C;B42C;1103 116C 11BB;B42C;1103 116C 11BB;
+B42D;B42D;1103 116C 11BC;B42D;1103 116C 11BC;
+B42E;B42E;1103 116C 11BD;B42E;1103 116C 11BD;
+B42F;B42F;1103 116C 11BE;B42F;1103 116C 11BE;
+B430;B430;1103 116C 11BF;B430;1103 116C 11BF;
+B431;B431;1103 116C 11C0;B431;1103 116C 11C0;
+B432;B432;1103 116C 11C1;B432;1103 116C 11C1;
+B433;B433;1103 116C 11C2;B433;1103 116C 11C2;
+B434;B434;1103 116D;B434;1103 116D;
+B435;B435;1103 116D 11A8;B435;1103 116D 11A8;
+B436;B436;1103 116D 11A9;B436;1103 116D 11A9;
+B437;B437;1103 116D 11AA;B437;1103 116D 11AA;
+B438;B438;1103 116D 11AB;B438;1103 116D 11AB;
+B439;B439;1103 116D 11AC;B439;1103 116D 11AC;
+B43A;B43A;1103 116D 11AD;B43A;1103 116D 11AD;
+B43B;B43B;1103 116D 11AE;B43B;1103 116D 11AE;
+B43C;B43C;1103 116D 11AF;B43C;1103 116D 11AF;
+B43D;B43D;1103 116D 11B0;B43D;1103 116D 11B0;
+B43E;B43E;1103 116D 11B1;B43E;1103 116D 11B1;
+B43F;B43F;1103 116D 11B2;B43F;1103 116D 11B2;
+B440;B440;1103 116D 11B3;B440;1103 116D 11B3;
+B441;B441;1103 116D 11B4;B441;1103 116D 11B4;
+B442;B442;1103 116D 11B5;B442;1103 116D 11B5;
+B443;B443;1103 116D 11B6;B443;1103 116D 11B6;
+B444;B444;1103 116D 11B7;B444;1103 116D 11B7;
+B445;B445;1103 116D 11B8;B445;1103 116D 11B8;
+B446;B446;1103 116D 11B9;B446;1103 116D 11B9;
+B447;B447;1103 116D 11BA;B447;1103 116D 11BA;
+B448;B448;1103 116D 11BB;B448;1103 116D 11BB;
+B449;B449;1103 116D 11BC;B449;1103 116D 11BC;
+B44A;B44A;1103 116D 11BD;B44A;1103 116D 11BD;
+B44B;B44B;1103 116D 11BE;B44B;1103 116D 11BE;
+B44C;B44C;1103 116D 11BF;B44C;1103 116D 11BF;
+B44D;B44D;1103 116D 11C0;B44D;1103 116D 11C0;
+B44E;B44E;1103 116D 11C1;B44E;1103 116D 11C1;
+B44F;B44F;1103 116D 11C2;B44F;1103 116D 11C2;
+B450;B450;1103 116E;B450;1103 116E;
+B451;B451;1103 116E 11A8;B451;1103 116E 11A8;
+B452;B452;1103 116E 11A9;B452;1103 116E 11A9;
+B453;B453;1103 116E 11AA;B453;1103 116E 11AA;
+B454;B454;1103 116E 11AB;B454;1103 116E 11AB;
+B455;B455;1103 116E 11AC;B455;1103 116E 11AC;
+B456;B456;1103 116E 11AD;B456;1103 116E 11AD;
+B457;B457;1103 116E 11AE;B457;1103 116E 11AE;
+B458;B458;1103 116E 11AF;B458;1103 116E 11AF;
+B459;B459;1103 116E 11B0;B459;1103 116E 11B0;
+B45A;B45A;1103 116E 11B1;B45A;1103 116E 11B1;
+B45B;B45B;1103 116E 11B2;B45B;1103 116E 11B2;
+B45C;B45C;1103 116E 11B3;B45C;1103 116E 11B3;
+B45D;B45D;1103 116E 11B4;B45D;1103 116E 11B4;
+B45E;B45E;1103 116E 11B5;B45E;1103 116E 11B5;
+B45F;B45F;1103 116E 11B6;B45F;1103 116E 11B6;
+B460;B460;1103 116E 11B7;B460;1103 116E 11B7;
+B461;B461;1103 116E 11B8;B461;1103 116E 11B8;
+B462;B462;1103 116E 11B9;B462;1103 116E 11B9;
+B463;B463;1103 116E 11BA;B463;1103 116E 11BA;
+B464;B464;1103 116E 11BB;B464;1103 116E 11BB;
+B465;B465;1103 116E 11BC;B465;1103 116E 11BC;
+B466;B466;1103 116E 11BD;B466;1103 116E 11BD;
+B467;B467;1103 116E 11BE;B467;1103 116E 11BE;
+B468;B468;1103 116E 11BF;B468;1103 116E 11BF;
+B469;B469;1103 116E 11C0;B469;1103 116E 11C0;
+B46A;B46A;1103 116E 11C1;B46A;1103 116E 11C1;
+B46B;B46B;1103 116E 11C2;B46B;1103 116E 11C2;
+B46C;B46C;1103 116F;B46C;1103 116F;
+B46D;B46D;1103 116F 11A8;B46D;1103 116F 11A8;
+B46E;B46E;1103 116F 11A9;B46E;1103 116F 11A9;
+B46F;B46F;1103 116F 11AA;B46F;1103 116F 11AA;
+B470;B470;1103 116F 11AB;B470;1103 116F 11AB;
+B471;B471;1103 116F 11AC;B471;1103 116F 11AC;
+B472;B472;1103 116F 11AD;B472;1103 116F 11AD;
+B473;B473;1103 116F 11AE;B473;1103 116F 11AE;
+B474;B474;1103 116F 11AF;B474;1103 116F 11AF;
+B475;B475;1103 116F 11B0;B475;1103 116F 11B0;
+B476;B476;1103 116F 11B1;B476;1103 116F 11B1;
+B477;B477;1103 116F 11B2;B477;1103 116F 11B2;
+B478;B478;1103 116F 11B3;B478;1103 116F 11B3;
+B479;B479;1103 116F 11B4;B479;1103 116F 11B4;
+B47A;B47A;1103 116F 11B5;B47A;1103 116F 11B5;
+B47B;B47B;1103 116F 11B6;B47B;1103 116F 11B6;
+B47C;B47C;1103 116F 11B7;B47C;1103 116F 11B7;
+B47D;B47D;1103 116F 11B8;B47D;1103 116F 11B8;
+B47E;B47E;1103 116F 11B9;B47E;1103 116F 11B9;
+B47F;B47F;1103 116F 11BA;B47F;1103 116F 11BA;
+B480;B480;1103 116F 11BB;B480;1103 116F 11BB;
+B481;B481;1103 116F 11BC;B481;1103 116F 11BC;
+B482;B482;1103 116F 11BD;B482;1103 116F 11BD;
+B483;B483;1103 116F 11BE;B483;1103 116F 11BE;
+B484;B484;1103 116F 11BF;B484;1103 116F 11BF;
+B485;B485;1103 116F 11C0;B485;1103 116F 11C0;
+B486;B486;1103 116F 11C1;B486;1103 116F 11C1;
+B487;B487;1103 116F 11C2;B487;1103 116F 11C2;
+B488;B488;1103 1170;B488;1103 1170;
+B489;B489;1103 1170 11A8;B489;1103 1170 11A8;
+B48A;B48A;1103 1170 11A9;B48A;1103 1170 11A9;
+B48B;B48B;1103 1170 11AA;B48B;1103 1170 11AA;
+B48C;B48C;1103 1170 11AB;B48C;1103 1170 11AB;
+B48D;B48D;1103 1170 11AC;B48D;1103 1170 11AC;
+B48E;B48E;1103 1170 11AD;B48E;1103 1170 11AD;
+B48F;B48F;1103 1170 11AE;B48F;1103 1170 11AE;
+B490;B490;1103 1170 11AF;B490;1103 1170 11AF;
+B491;B491;1103 1170 11B0;B491;1103 1170 11B0;
+B492;B492;1103 1170 11B1;B492;1103 1170 11B1;
+B493;B493;1103 1170 11B2;B493;1103 1170 11B2;
+B494;B494;1103 1170 11B3;B494;1103 1170 11B3;
+B495;B495;1103 1170 11B4;B495;1103 1170 11B4;
+B496;B496;1103 1170 11B5;B496;1103 1170 11B5;
+B497;B497;1103 1170 11B6;B497;1103 1170 11B6;
+B498;B498;1103 1170 11B7;B498;1103 1170 11B7;
+B499;B499;1103 1170 11B8;B499;1103 1170 11B8;
+B49A;B49A;1103 1170 11B9;B49A;1103 1170 11B9;
+B49B;B49B;1103 1170 11BA;B49B;1103 1170 11BA;
+B49C;B49C;1103 1170 11BB;B49C;1103 1170 11BB;
+B49D;B49D;1103 1170 11BC;B49D;1103 1170 11BC;
+B49E;B49E;1103 1170 11BD;B49E;1103 1170 11BD;
+B49F;B49F;1103 1170 11BE;B49F;1103 1170 11BE;
+B4A0;B4A0;1103 1170 11BF;B4A0;1103 1170 11BF;
+B4A1;B4A1;1103 1170 11C0;B4A1;1103 1170 11C0;
+B4A2;B4A2;1103 1170 11C1;B4A2;1103 1170 11C1;
+B4A3;B4A3;1103 1170 11C2;B4A3;1103 1170 11C2;
+B4A4;B4A4;1103 1171;B4A4;1103 1171;
+B4A5;B4A5;1103 1171 11A8;B4A5;1103 1171 11A8;
+B4A6;B4A6;1103 1171 11A9;B4A6;1103 1171 11A9;
+B4A7;B4A7;1103 1171 11AA;B4A7;1103 1171 11AA;
+B4A8;B4A8;1103 1171 11AB;B4A8;1103 1171 11AB;
+B4A9;B4A9;1103 1171 11AC;B4A9;1103 1171 11AC;
+B4AA;B4AA;1103 1171 11AD;B4AA;1103 1171 11AD;
+B4AB;B4AB;1103 1171 11AE;B4AB;1103 1171 11AE;
+B4AC;B4AC;1103 1171 11AF;B4AC;1103 1171 11AF;
+B4AD;B4AD;1103 1171 11B0;B4AD;1103 1171 11B0;
+B4AE;B4AE;1103 1171 11B1;B4AE;1103 1171 11B1;
+B4AF;B4AF;1103 1171 11B2;B4AF;1103 1171 11B2;
+B4B0;B4B0;1103 1171 11B3;B4B0;1103 1171 11B3;
+B4B1;B4B1;1103 1171 11B4;B4B1;1103 1171 11B4;
+B4B2;B4B2;1103 1171 11B5;B4B2;1103 1171 11B5;
+B4B3;B4B3;1103 1171 11B6;B4B3;1103 1171 11B6;
+B4B4;B4B4;1103 1171 11B7;B4B4;1103 1171 11B7;
+B4B5;B4B5;1103 1171 11B8;B4B5;1103 1171 11B8;
+B4B6;B4B6;1103 1171 11B9;B4B6;1103 1171 11B9;
+B4B7;B4B7;1103 1171 11BA;B4B7;1103 1171 11BA;
+B4B8;B4B8;1103 1171 11BB;B4B8;1103 1171 11BB;
+B4B9;B4B9;1103 1171 11BC;B4B9;1103 1171 11BC;
+B4BA;B4BA;1103 1171 11BD;B4BA;1103 1171 11BD;
+B4BB;B4BB;1103 1171 11BE;B4BB;1103 1171 11BE;
+B4BC;B4BC;1103 1171 11BF;B4BC;1103 1171 11BF;
+B4BD;B4BD;1103 1171 11C0;B4BD;1103 1171 11C0;
+B4BE;B4BE;1103 1171 11C1;B4BE;1103 1171 11C1;
+B4BF;B4BF;1103 1171 11C2;B4BF;1103 1171 11C2;
+B4C0;B4C0;1103 1172;B4C0;1103 1172;
+B4C1;B4C1;1103 1172 11A8;B4C1;1103 1172 11A8;
+B4C2;B4C2;1103 1172 11A9;B4C2;1103 1172 11A9;
+B4C3;B4C3;1103 1172 11AA;B4C3;1103 1172 11AA;
+B4C4;B4C4;1103 1172 11AB;B4C4;1103 1172 11AB;
+B4C5;B4C5;1103 1172 11AC;B4C5;1103 1172 11AC;
+B4C6;B4C6;1103 1172 11AD;B4C6;1103 1172 11AD;
+B4C7;B4C7;1103 1172 11AE;B4C7;1103 1172 11AE;
+B4C8;B4C8;1103 1172 11AF;B4C8;1103 1172 11AF;
+B4C9;B4C9;1103 1172 11B0;B4C9;1103 1172 11B0;
+B4CA;B4CA;1103 1172 11B1;B4CA;1103 1172 11B1;
+B4CB;B4CB;1103 1172 11B2;B4CB;1103 1172 11B2;
+B4CC;B4CC;1103 1172 11B3;B4CC;1103 1172 11B3;
+B4CD;B4CD;1103 1172 11B4;B4CD;1103 1172 11B4;
+B4CE;B4CE;1103 1172 11B5;B4CE;1103 1172 11B5;
+B4CF;B4CF;1103 1172 11B6;B4CF;1103 1172 11B6;
+B4D0;B4D0;1103 1172 11B7;B4D0;1103 1172 11B7;
+B4D1;B4D1;1103 1172 11B8;B4D1;1103 1172 11B8;
+B4D2;B4D2;1103 1172 11B9;B4D2;1103 1172 11B9;
+B4D3;B4D3;1103 1172 11BA;B4D3;1103 1172 11BA;
+B4D4;B4D4;1103 1172 11BB;B4D4;1103 1172 11BB;
+B4D5;B4D5;1103 1172 11BC;B4D5;1103 1172 11BC;
+B4D6;B4D6;1103 1172 11BD;B4D6;1103 1172 11BD;
+B4D7;B4D7;1103 1172 11BE;B4D7;1103 1172 11BE;
+B4D8;B4D8;1103 1172 11BF;B4D8;1103 1172 11BF;
+B4D9;B4D9;1103 1172 11C0;B4D9;1103 1172 11C0;
+B4DA;B4DA;1103 1172 11C1;B4DA;1103 1172 11C1;
+B4DB;B4DB;1103 1172 11C2;B4DB;1103 1172 11C2;
+B4DC;B4DC;1103 1173;B4DC;1103 1173;
+B4DD;B4DD;1103 1173 11A8;B4DD;1103 1173 11A8;
+B4DE;B4DE;1103 1173 11A9;B4DE;1103 1173 11A9;
+B4DF;B4DF;1103 1173 11AA;B4DF;1103 1173 11AA;
+B4E0;B4E0;1103 1173 11AB;B4E0;1103 1173 11AB;
+B4E1;B4E1;1103 1173 11AC;B4E1;1103 1173 11AC;
+B4E2;B4E2;1103 1173 11AD;B4E2;1103 1173 11AD;
+B4E3;B4E3;1103 1173 11AE;B4E3;1103 1173 11AE;
+B4E4;B4E4;1103 1173 11AF;B4E4;1103 1173 11AF;
+B4E5;B4E5;1103 1173 11B0;B4E5;1103 1173 11B0;
+B4E6;B4E6;1103 1173 11B1;B4E6;1103 1173 11B1;
+B4E7;B4E7;1103 1173 11B2;B4E7;1103 1173 11B2;
+B4E8;B4E8;1103 1173 11B3;B4E8;1103 1173 11B3;
+B4E9;B4E9;1103 1173 11B4;B4E9;1103 1173 11B4;
+B4EA;B4EA;1103 1173 11B5;B4EA;1103 1173 11B5;
+B4EB;B4EB;1103 1173 11B6;B4EB;1103 1173 11B6;
+B4EC;B4EC;1103 1173 11B7;B4EC;1103 1173 11B7;
+B4ED;B4ED;1103 1173 11B8;B4ED;1103 1173 11B8;
+B4EE;B4EE;1103 1173 11B9;B4EE;1103 1173 11B9;
+B4EF;B4EF;1103 1173 11BA;B4EF;1103 1173 11BA;
+B4F0;B4F0;1103 1173 11BB;B4F0;1103 1173 11BB;
+B4F1;B4F1;1103 1173 11BC;B4F1;1103 1173 11BC;
+B4F2;B4F2;1103 1173 11BD;B4F2;1103 1173 11BD;
+B4F3;B4F3;1103 1173 11BE;B4F3;1103 1173 11BE;
+B4F4;B4F4;1103 1173 11BF;B4F4;1103 1173 11BF;
+B4F5;B4F5;1103 1173 11C0;B4F5;1103 1173 11C0;
+B4F6;B4F6;1103 1173 11C1;B4F6;1103 1173 11C1;
+B4F7;B4F7;1103 1173 11C2;B4F7;1103 1173 11C2;
+B4F8;B4F8;1103 1174;B4F8;1103 1174;
+B4F9;B4F9;1103 1174 11A8;B4F9;1103 1174 11A8;
+B4FA;B4FA;1103 1174 11A9;B4FA;1103 1174 11A9;
+B4FB;B4FB;1103 1174 11AA;B4FB;1103 1174 11AA;
+B4FC;B4FC;1103 1174 11AB;B4FC;1103 1174 11AB;
+B4FD;B4FD;1103 1174 11AC;B4FD;1103 1174 11AC;
+B4FE;B4FE;1103 1174 11AD;B4FE;1103 1174 11AD;
+B4FF;B4FF;1103 1174 11AE;B4FF;1103 1174 11AE;
+B500;B500;1103 1174 11AF;B500;1103 1174 11AF;
+B501;B501;1103 1174 11B0;B501;1103 1174 11B0;
+B502;B502;1103 1174 11B1;B502;1103 1174 11B1;
+B503;B503;1103 1174 11B2;B503;1103 1174 11B2;
+B504;B504;1103 1174 11B3;B504;1103 1174 11B3;
+B505;B505;1103 1174 11B4;B505;1103 1174 11B4;
+B506;B506;1103 1174 11B5;B506;1103 1174 11B5;
+B507;B507;1103 1174 11B6;B507;1103 1174 11B6;
+B508;B508;1103 1174 11B7;B508;1103 1174 11B7;
+B509;B509;1103 1174 11B8;B509;1103 1174 11B8;
+B50A;B50A;1103 1174 11B9;B50A;1103 1174 11B9;
+B50B;B50B;1103 1174 11BA;B50B;1103 1174 11BA;
+B50C;B50C;1103 1174 11BB;B50C;1103 1174 11BB;
+B50D;B50D;1103 1174 11BC;B50D;1103 1174 11BC;
+B50E;B50E;1103 1174 11BD;B50E;1103 1174 11BD;
+B50F;B50F;1103 1174 11BE;B50F;1103 1174 11BE;
+B510;B510;1103 1174 11BF;B510;1103 1174 11BF;
+B511;B511;1103 1174 11C0;B511;1103 1174 11C0;
+B512;B512;1103 1174 11C1;B512;1103 1174 11C1;
+B513;B513;1103 1174 11C2;B513;1103 1174 11C2;
+B514;B514;1103 1175;B514;1103 1175;
+B515;B515;1103 1175 11A8;B515;1103 1175 11A8;
+B516;B516;1103 1175 11A9;B516;1103 1175 11A9;
+B517;B517;1103 1175 11AA;B517;1103 1175 11AA;
+B518;B518;1103 1175 11AB;B518;1103 1175 11AB;
+B519;B519;1103 1175 11AC;B519;1103 1175 11AC;
+B51A;B51A;1103 1175 11AD;B51A;1103 1175 11AD;
+B51B;B51B;1103 1175 11AE;B51B;1103 1175 11AE;
+B51C;B51C;1103 1175 11AF;B51C;1103 1175 11AF;
+B51D;B51D;1103 1175 11B0;B51D;1103 1175 11B0;
+B51E;B51E;1103 1175 11B1;B51E;1103 1175 11B1;
+B51F;B51F;1103 1175 11B2;B51F;1103 1175 11B2;
+B520;B520;1103 1175 11B3;B520;1103 1175 11B3;
+B521;B521;1103 1175 11B4;B521;1103 1175 11B4;
+B522;B522;1103 1175 11B5;B522;1103 1175 11B5;
+B523;B523;1103 1175 11B6;B523;1103 1175 11B6;
+B524;B524;1103 1175 11B7;B524;1103 1175 11B7;
+B525;B525;1103 1175 11B8;B525;1103 1175 11B8;
+B526;B526;1103 1175 11B9;B526;1103 1175 11B9;
+B527;B527;1103 1175 11BA;B527;1103 1175 11BA;
+B528;B528;1103 1175 11BB;B528;1103 1175 11BB;
+B529;B529;1103 1175 11BC;B529;1103 1175 11BC;
+B52A;B52A;1103 1175 11BD;B52A;1103 1175 11BD;
+B52B;B52B;1103 1175 11BE;B52B;1103 1175 11BE;
+B52C;B52C;1103 1175 11BF;B52C;1103 1175 11BF;
+B52D;B52D;1103 1175 11C0;B52D;1103 1175 11C0;
+B52E;B52E;1103 1175 11C1;B52E;1103 1175 11C1;
+B52F;B52F;1103 1175 11C2;B52F;1103 1175 11C2;
+B530;B530;1104 1161;B530;1104 1161;
+B531;B531;1104 1161 11A8;B531;1104 1161 11A8;
+B532;B532;1104 1161 11A9;B532;1104 1161 11A9;
+B533;B533;1104 1161 11AA;B533;1104 1161 11AA;
+B534;B534;1104 1161 11AB;B534;1104 1161 11AB;
+B535;B535;1104 1161 11AC;B535;1104 1161 11AC;
+B536;B536;1104 1161 11AD;B536;1104 1161 11AD;
+B537;B537;1104 1161 11AE;B537;1104 1161 11AE;
+B538;B538;1104 1161 11AF;B538;1104 1161 11AF;
+B539;B539;1104 1161 11B0;B539;1104 1161 11B0;
+B53A;B53A;1104 1161 11B1;B53A;1104 1161 11B1;
+B53B;B53B;1104 1161 11B2;B53B;1104 1161 11B2;
+B53C;B53C;1104 1161 11B3;B53C;1104 1161 11B3;
+B53D;B53D;1104 1161 11B4;B53D;1104 1161 11B4;
+B53E;B53E;1104 1161 11B5;B53E;1104 1161 11B5;
+B53F;B53F;1104 1161 11B6;B53F;1104 1161 11B6;
+B540;B540;1104 1161 11B7;B540;1104 1161 11B7;
+B541;B541;1104 1161 11B8;B541;1104 1161 11B8;
+B542;B542;1104 1161 11B9;B542;1104 1161 11B9;
+B543;B543;1104 1161 11BA;B543;1104 1161 11BA;
+B544;B544;1104 1161 11BB;B544;1104 1161 11BB;
+B545;B545;1104 1161 11BC;B545;1104 1161 11BC;
+B546;B546;1104 1161 11BD;B546;1104 1161 11BD;
+B547;B547;1104 1161 11BE;B547;1104 1161 11BE;
+B548;B548;1104 1161 11BF;B548;1104 1161 11BF;
+B549;B549;1104 1161 11C0;B549;1104 1161 11C0;
+B54A;B54A;1104 1161 11C1;B54A;1104 1161 11C1;
+B54B;B54B;1104 1161 11C2;B54B;1104 1161 11C2;
+B54C;B54C;1104 1162;B54C;1104 1162;
+B54D;B54D;1104 1162 11A8;B54D;1104 1162 11A8;
+B54E;B54E;1104 1162 11A9;B54E;1104 1162 11A9;
+B54F;B54F;1104 1162 11AA;B54F;1104 1162 11AA;
+B550;B550;1104 1162 11AB;B550;1104 1162 11AB;
+B551;B551;1104 1162 11AC;B551;1104 1162 11AC;
+B552;B552;1104 1162 11AD;B552;1104 1162 11AD;
+B553;B553;1104 1162 11AE;B553;1104 1162 11AE;
+B554;B554;1104 1162 11AF;B554;1104 1162 11AF;
+B555;B555;1104 1162 11B0;B555;1104 1162 11B0;
+B556;B556;1104 1162 11B1;B556;1104 1162 11B1;
+B557;B557;1104 1162 11B2;B557;1104 1162 11B2;
+B558;B558;1104 1162 11B3;B558;1104 1162 11B3;
+B559;B559;1104 1162 11B4;B559;1104 1162 11B4;
+B55A;B55A;1104 1162 11B5;B55A;1104 1162 11B5;
+B55B;B55B;1104 1162 11B6;B55B;1104 1162 11B6;
+B55C;B55C;1104 1162 11B7;B55C;1104 1162 11B7;
+B55D;B55D;1104 1162 11B8;B55D;1104 1162 11B8;
+B55E;B55E;1104 1162 11B9;B55E;1104 1162 11B9;
+B55F;B55F;1104 1162 11BA;B55F;1104 1162 11BA;
+B560;B560;1104 1162 11BB;B560;1104 1162 11BB;
+B561;B561;1104 1162 11BC;B561;1104 1162 11BC;
+B562;B562;1104 1162 11BD;B562;1104 1162 11BD;
+B563;B563;1104 1162 11BE;B563;1104 1162 11BE;
+B564;B564;1104 1162 11BF;B564;1104 1162 11BF;
+B565;B565;1104 1162 11C0;B565;1104 1162 11C0;
+B566;B566;1104 1162 11C1;B566;1104 1162 11C1;
+B567;B567;1104 1162 11C2;B567;1104 1162 11C2;
+B568;B568;1104 1163;B568;1104 1163;
+B569;B569;1104 1163 11A8;B569;1104 1163 11A8;
+B56A;B56A;1104 1163 11A9;B56A;1104 1163 11A9;
+B56B;B56B;1104 1163 11AA;B56B;1104 1163 11AA;
+B56C;B56C;1104 1163 11AB;B56C;1104 1163 11AB;
+B56D;B56D;1104 1163 11AC;B56D;1104 1163 11AC;
+B56E;B56E;1104 1163 11AD;B56E;1104 1163 11AD;
+B56F;B56F;1104 1163 11AE;B56F;1104 1163 11AE;
+B570;B570;1104 1163 11AF;B570;1104 1163 11AF;
+B571;B571;1104 1163 11B0;B571;1104 1163 11B0;
+B572;B572;1104 1163 11B1;B572;1104 1163 11B1;
+B573;B573;1104 1163 11B2;B573;1104 1163 11B2;
+B574;B574;1104 1163 11B3;B574;1104 1163 11B3;
+B575;B575;1104 1163 11B4;B575;1104 1163 11B4;
+B576;B576;1104 1163 11B5;B576;1104 1163 11B5;
+B577;B577;1104 1163 11B6;B577;1104 1163 11B6;
+B578;B578;1104 1163 11B7;B578;1104 1163 11B7;
+B579;B579;1104 1163 11B8;B579;1104 1163 11B8;
+B57A;B57A;1104 1163 11B9;B57A;1104 1163 11B9;
+B57B;B57B;1104 1163 11BA;B57B;1104 1163 11BA;
+B57C;B57C;1104 1163 11BB;B57C;1104 1163 11BB;
+B57D;B57D;1104 1163 11BC;B57D;1104 1163 11BC;
+B57E;B57E;1104 1163 11BD;B57E;1104 1163 11BD;
+B57F;B57F;1104 1163 11BE;B57F;1104 1163 11BE;
+B580;B580;1104 1163 11BF;B580;1104 1163 11BF;
+B581;B581;1104 1163 11C0;B581;1104 1163 11C0;
+B582;B582;1104 1163 11C1;B582;1104 1163 11C1;
+B583;B583;1104 1163 11C2;B583;1104 1163 11C2;
+B584;B584;1104 1164;B584;1104 1164;
+B585;B585;1104 1164 11A8;B585;1104 1164 11A8;
+B586;B586;1104 1164 11A9;B586;1104 1164 11A9;
+B587;B587;1104 1164 11AA;B587;1104 1164 11AA;
+B588;B588;1104 1164 11AB;B588;1104 1164 11AB;
+B589;B589;1104 1164 11AC;B589;1104 1164 11AC;
+B58A;B58A;1104 1164 11AD;B58A;1104 1164 11AD;
+B58B;B58B;1104 1164 11AE;B58B;1104 1164 11AE;
+B58C;B58C;1104 1164 11AF;B58C;1104 1164 11AF;
+B58D;B58D;1104 1164 11B0;B58D;1104 1164 11B0;
+B58E;B58E;1104 1164 11B1;B58E;1104 1164 11B1;
+B58F;B58F;1104 1164 11B2;B58F;1104 1164 11B2;
+B590;B590;1104 1164 11B3;B590;1104 1164 11B3;
+B591;B591;1104 1164 11B4;B591;1104 1164 11B4;
+B592;B592;1104 1164 11B5;B592;1104 1164 11B5;
+B593;B593;1104 1164 11B6;B593;1104 1164 11B6;
+B594;B594;1104 1164 11B7;B594;1104 1164 11B7;
+B595;B595;1104 1164 11B8;B595;1104 1164 11B8;
+B596;B596;1104 1164 11B9;B596;1104 1164 11B9;
+B597;B597;1104 1164 11BA;B597;1104 1164 11BA;
+B598;B598;1104 1164 11BB;B598;1104 1164 11BB;
+B599;B599;1104 1164 11BC;B599;1104 1164 11BC;
+B59A;B59A;1104 1164 11BD;B59A;1104 1164 11BD;
+B59B;B59B;1104 1164 11BE;B59B;1104 1164 11BE;
+B59C;B59C;1104 1164 11BF;B59C;1104 1164 11BF;
+B59D;B59D;1104 1164 11C0;B59D;1104 1164 11C0;
+B59E;B59E;1104 1164 11C1;B59E;1104 1164 11C1;
+B59F;B59F;1104 1164 11C2;B59F;1104 1164 11C2;
+B5A0;B5A0;1104 1165;B5A0;1104 1165;
+B5A1;B5A1;1104 1165 11A8;B5A1;1104 1165 11A8;
+B5A2;B5A2;1104 1165 11A9;B5A2;1104 1165 11A9;
+B5A3;B5A3;1104 1165 11AA;B5A3;1104 1165 11AA;
+B5A4;B5A4;1104 1165 11AB;B5A4;1104 1165 11AB;
+B5A5;B5A5;1104 1165 11AC;B5A5;1104 1165 11AC;
+B5A6;B5A6;1104 1165 11AD;B5A6;1104 1165 11AD;
+B5A7;B5A7;1104 1165 11AE;B5A7;1104 1165 11AE;
+B5A8;B5A8;1104 1165 11AF;B5A8;1104 1165 11AF;
+B5A9;B5A9;1104 1165 11B0;B5A9;1104 1165 11B0;
+B5AA;B5AA;1104 1165 11B1;B5AA;1104 1165 11B1;
+B5AB;B5AB;1104 1165 11B2;B5AB;1104 1165 11B2;
+B5AC;B5AC;1104 1165 11B3;B5AC;1104 1165 11B3;
+B5AD;B5AD;1104 1165 11B4;B5AD;1104 1165 11B4;
+B5AE;B5AE;1104 1165 11B5;B5AE;1104 1165 11B5;
+B5AF;B5AF;1104 1165 11B6;B5AF;1104 1165 11B6;
+B5B0;B5B0;1104 1165 11B7;B5B0;1104 1165 11B7;
+B5B1;B5B1;1104 1165 11B8;B5B1;1104 1165 11B8;
+B5B2;B5B2;1104 1165 11B9;B5B2;1104 1165 11B9;
+B5B3;B5B3;1104 1165 11BA;B5B3;1104 1165 11BA;
+B5B4;B5B4;1104 1165 11BB;B5B4;1104 1165 11BB;
+B5B5;B5B5;1104 1165 11BC;B5B5;1104 1165 11BC;
+B5B6;B5B6;1104 1165 11BD;B5B6;1104 1165 11BD;
+B5B7;B5B7;1104 1165 11BE;B5B7;1104 1165 11BE;
+B5B8;B5B8;1104 1165 11BF;B5B8;1104 1165 11BF;
+B5B9;B5B9;1104 1165 11C0;B5B9;1104 1165 11C0;
+B5BA;B5BA;1104 1165 11C1;B5BA;1104 1165 11C1;
+B5BB;B5BB;1104 1165 11C2;B5BB;1104 1165 11C2;
+B5BC;B5BC;1104 1166;B5BC;1104 1166;
+B5BD;B5BD;1104 1166 11A8;B5BD;1104 1166 11A8;
+B5BE;B5BE;1104 1166 11A9;B5BE;1104 1166 11A9;
+B5BF;B5BF;1104 1166 11AA;B5BF;1104 1166 11AA;
+B5C0;B5C0;1104 1166 11AB;B5C0;1104 1166 11AB;
+B5C1;B5C1;1104 1166 11AC;B5C1;1104 1166 11AC;
+B5C2;B5C2;1104 1166 11AD;B5C2;1104 1166 11AD;
+B5C3;B5C3;1104 1166 11AE;B5C3;1104 1166 11AE;
+B5C4;B5C4;1104 1166 11AF;B5C4;1104 1166 11AF;
+B5C5;B5C5;1104 1166 11B0;B5C5;1104 1166 11B0;
+B5C6;B5C6;1104 1166 11B1;B5C6;1104 1166 11B1;
+B5C7;B5C7;1104 1166 11B2;B5C7;1104 1166 11B2;
+B5C8;B5C8;1104 1166 11B3;B5C8;1104 1166 11B3;
+B5C9;B5C9;1104 1166 11B4;B5C9;1104 1166 11B4;
+B5CA;B5CA;1104 1166 11B5;B5CA;1104 1166 11B5;
+B5CB;B5CB;1104 1166 11B6;B5CB;1104 1166 11B6;
+B5CC;B5CC;1104 1166 11B7;B5CC;1104 1166 11B7;
+B5CD;B5CD;1104 1166 11B8;B5CD;1104 1166 11B8;
+B5CE;B5CE;1104 1166 11B9;B5CE;1104 1166 11B9;
+B5CF;B5CF;1104 1166 11BA;B5CF;1104 1166 11BA;
+B5D0;B5D0;1104 1166 11BB;B5D0;1104 1166 11BB;
+B5D1;B5D1;1104 1166 11BC;B5D1;1104 1166 11BC;
+B5D2;B5D2;1104 1166 11BD;B5D2;1104 1166 11BD;
+B5D3;B5D3;1104 1166 11BE;B5D3;1104 1166 11BE;
+B5D4;B5D4;1104 1166 11BF;B5D4;1104 1166 11BF;
+B5D5;B5D5;1104 1166 11C0;B5D5;1104 1166 11C0;
+B5D6;B5D6;1104 1166 11C1;B5D6;1104 1166 11C1;
+B5D7;B5D7;1104 1166 11C2;B5D7;1104 1166 11C2;
+B5D8;B5D8;1104 1167;B5D8;1104 1167;
+B5D9;B5D9;1104 1167 11A8;B5D9;1104 1167 11A8;
+B5DA;B5DA;1104 1167 11A9;B5DA;1104 1167 11A9;
+B5DB;B5DB;1104 1167 11AA;B5DB;1104 1167 11AA;
+B5DC;B5DC;1104 1167 11AB;B5DC;1104 1167 11AB;
+B5DD;B5DD;1104 1167 11AC;B5DD;1104 1167 11AC;
+B5DE;B5DE;1104 1167 11AD;B5DE;1104 1167 11AD;
+B5DF;B5DF;1104 1167 11AE;B5DF;1104 1167 11AE;
+B5E0;B5E0;1104 1167 11AF;B5E0;1104 1167 11AF;
+B5E1;B5E1;1104 1167 11B0;B5E1;1104 1167 11B0;
+B5E2;B5E2;1104 1167 11B1;B5E2;1104 1167 11B1;
+B5E3;B5E3;1104 1167 11B2;B5E3;1104 1167 11B2;
+B5E4;B5E4;1104 1167 11B3;B5E4;1104 1167 11B3;
+B5E5;B5E5;1104 1167 11B4;B5E5;1104 1167 11B4;
+B5E6;B5E6;1104 1167 11B5;B5E6;1104 1167 11B5;
+B5E7;B5E7;1104 1167 11B6;B5E7;1104 1167 11B6;
+B5E8;B5E8;1104 1167 11B7;B5E8;1104 1167 11B7;
+B5E9;B5E9;1104 1167 11B8;B5E9;1104 1167 11B8;
+B5EA;B5EA;1104 1167 11B9;B5EA;1104 1167 11B9;
+B5EB;B5EB;1104 1167 11BA;B5EB;1104 1167 11BA;
+B5EC;B5EC;1104 1167 11BB;B5EC;1104 1167 11BB;
+B5ED;B5ED;1104 1167 11BC;B5ED;1104 1167 11BC;
+B5EE;B5EE;1104 1167 11BD;B5EE;1104 1167 11BD;
+B5EF;B5EF;1104 1167 11BE;B5EF;1104 1167 11BE;
+B5F0;B5F0;1104 1167 11BF;B5F0;1104 1167 11BF;
+B5F1;B5F1;1104 1167 11C0;B5F1;1104 1167 11C0;
+B5F2;B5F2;1104 1167 11C1;B5F2;1104 1167 11C1;
+B5F3;B5F3;1104 1167 11C2;B5F3;1104 1167 11C2;
+B5F4;B5F4;1104 1168;B5F4;1104 1168;
+B5F5;B5F5;1104 1168 11A8;B5F5;1104 1168 11A8;
+B5F6;B5F6;1104 1168 11A9;B5F6;1104 1168 11A9;
+B5F7;B5F7;1104 1168 11AA;B5F7;1104 1168 11AA;
+B5F8;B5F8;1104 1168 11AB;B5F8;1104 1168 11AB;
+B5F9;B5F9;1104 1168 11AC;B5F9;1104 1168 11AC;
+B5FA;B5FA;1104 1168 11AD;B5FA;1104 1168 11AD;
+B5FB;B5FB;1104 1168 11AE;B5FB;1104 1168 11AE;
+B5FC;B5FC;1104 1168 11AF;B5FC;1104 1168 11AF;
+B5FD;B5FD;1104 1168 11B0;B5FD;1104 1168 11B0;
+B5FE;B5FE;1104 1168 11B1;B5FE;1104 1168 11B1;
+B5FF;B5FF;1104 1168 11B2;B5FF;1104 1168 11B2;
+B600;B600;1104 1168 11B3;B600;1104 1168 11B3;
+B601;B601;1104 1168 11B4;B601;1104 1168 11B4;
+B602;B602;1104 1168 11B5;B602;1104 1168 11B5;
+B603;B603;1104 1168 11B6;B603;1104 1168 11B6;
+B604;B604;1104 1168 11B7;B604;1104 1168 11B7;
+B605;B605;1104 1168 11B8;B605;1104 1168 11B8;
+B606;B606;1104 1168 11B9;B606;1104 1168 11B9;
+B607;B607;1104 1168 11BA;B607;1104 1168 11BA;
+B608;B608;1104 1168 11BB;B608;1104 1168 11BB;
+B609;B609;1104 1168 11BC;B609;1104 1168 11BC;
+B60A;B60A;1104 1168 11BD;B60A;1104 1168 11BD;
+B60B;B60B;1104 1168 11BE;B60B;1104 1168 11BE;
+B60C;B60C;1104 1168 11BF;B60C;1104 1168 11BF;
+B60D;B60D;1104 1168 11C0;B60D;1104 1168 11C0;
+B60E;B60E;1104 1168 11C1;B60E;1104 1168 11C1;
+B60F;B60F;1104 1168 11C2;B60F;1104 1168 11C2;
+B610;B610;1104 1169;B610;1104 1169;
+B611;B611;1104 1169 11A8;B611;1104 1169 11A8;
+B612;B612;1104 1169 11A9;B612;1104 1169 11A9;
+B613;B613;1104 1169 11AA;B613;1104 1169 11AA;
+B614;B614;1104 1169 11AB;B614;1104 1169 11AB;
+B615;B615;1104 1169 11AC;B615;1104 1169 11AC;
+B616;B616;1104 1169 11AD;B616;1104 1169 11AD;
+B617;B617;1104 1169 11AE;B617;1104 1169 11AE;
+B618;B618;1104 1169 11AF;B618;1104 1169 11AF;
+B619;B619;1104 1169 11B0;B619;1104 1169 11B0;
+B61A;B61A;1104 1169 11B1;B61A;1104 1169 11B1;
+B61B;B61B;1104 1169 11B2;B61B;1104 1169 11B2;
+B61C;B61C;1104 1169 11B3;B61C;1104 1169 11B3;
+B61D;B61D;1104 1169 11B4;B61D;1104 1169 11B4;
+B61E;B61E;1104 1169 11B5;B61E;1104 1169 11B5;
+B61F;B61F;1104 1169 11B6;B61F;1104 1169 11B6;
+B620;B620;1104 1169 11B7;B620;1104 1169 11B7;
+B621;B621;1104 1169 11B8;B621;1104 1169 11B8;
+B622;B622;1104 1169 11B9;B622;1104 1169 11B9;
+B623;B623;1104 1169 11BA;B623;1104 1169 11BA;
+B624;B624;1104 1169 11BB;B624;1104 1169 11BB;
+B625;B625;1104 1169 11BC;B625;1104 1169 11BC;
+B626;B626;1104 1169 11BD;B626;1104 1169 11BD;
+B627;B627;1104 1169 11BE;B627;1104 1169 11BE;
+B628;B628;1104 1169 11BF;B628;1104 1169 11BF;
+B629;B629;1104 1169 11C0;B629;1104 1169 11C0;
+B62A;B62A;1104 1169 11C1;B62A;1104 1169 11C1;
+B62B;B62B;1104 1169 11C2;B62B;1104 1169 11C2;
+B62C;B62C;1104 116A;B62C;1104 116A;
+B62D;B62D;1104 116A 11A8;B62D;1104 116A 11A8;
+B62E;B62E;1104 116A 11A9;B62E;1104 116A 11A9;
+B62F;B62F;1104 116A 11AA;B62F;1104 116A 11AA;
+B630;B630;1104 116A 11AB;B630;1104 116A 11AB;
+B631;B631;1104 116A 11AC;B631;1104 116A 11AC;
+B632;B632;1104 116A 11AD;B632;1104 116A 11AD;
+B633;B633;1104 116A 11AE;B633;1104 116A 11AE;
+B634;B634;1104 116A 11AF;B634;1104 116A 11AF;
+B635;B635;1104 116A 11B0;B635;1104 116A 11B0;
+B636;B636;1104 116A 11B1;B636;1104 116A 11B1;
+B637;B637;1104 116A 11B2;B637;1104 116A 11B2;
+B638;B638;1104 116A 11B3;B638;1104 116A 11B3;
+B639;B639;1104 116A 11B4;B639;1104 116A 11B4;
+B63A;B63A;1104 116A 11B5;B63A;1104 116A 11B5;
+B63B;B63B;1104 116A 11B6;B63B;1104 116A 11B6;
+B63C;B63C;1104 116A 11B7;B63C;1104 116A 11B7;
+B63D;B63D;1104 116A 11B8;B63D;1104 116A 11B8;
+B63E;B63E;1104 116A 11B9;B63E;1104 116A 11B9;
+B63F;B63F;1104 116A 11BA;B63F;1104 116A 11BA;
+B640;B640;1104 116A 11BB;B640;1104 116A 11BB;
+B641;B641;1104 116A 11BC;B641;1104 116A 11BC;
+B642;B642;1104 116A 11BD;B642;1104 116A 11BD;
+B643;B643;1104 116A 11BE;B643;1104 116A 11BE;
+B644;B644;1104 116A 11BF;B644;1104 116A 11BF;
+B645;B645;1104 116A 11C0;B645;1104 116A 11C0;
+B646;B646;1104 116A 11C1;B646;1104 116A 11C1;
+B647;B647;1104 116A 11C2;B647;1104 116A 11C2;
+B648;B648;1104 116B;B648;1104 116B;
+B649;B649;1104 116B 11A8;B649;1104 116B 11A8;
+B64A;B64A;1104 116B 11A9;B64A;1104 116B 11A9;
+B64B;B64B;1104 116B 11AA;B64B;1104 116B 11AA;
+B64C;B64C;1104 116B 11AB;B64C;1104 116B 11AB;
+B64D;B64D;1104 116B 11AC;B64D;1104 116B 11AC;
+B64E;B64E;1104 116B 11AD;B64E;1104 116B 11AD;
+B64F;B64F;1104 116B 11AE;B64F;1104 116B 11AE;
+B650;B650;1104 116B 11AF;B650;1104 116B 11AF;
+B651;B651;1104 116B 11B0;B651;1104 116B 11B0;
+B652;B652;1104 116B 11B1;B652;1104 116B 11B1;
+B653;B653;1104 116B 11B2;B653;1104 116B 11B2;
+B654;B654;1104 116B 11B3;B654;1104 116B 11B3;
+B655;B655;1104 116B 11B4;B655;1104 116B 11B4;
+B656;B656;1104 116B 11B5;B656;1104 116B 11B5;
+B657;B657;1104 116B 11B6;B657;1104 116B 11B6;
+B658;B658;1104 116B 11B7;B658;1104 116B 11B7;
+B659;B659;1104 116B 11B8;B659;1104 116B 11B8;
+B65A;B65A;1104 116B 11B9;B65A;1104 116B 11B9;
+B65B;B65B;1104 116B 11BA;B65B;1104 116B 11BA;
+B65C;B65C;1104 116B 11BB;B65C;1104 116B 11BB;
+B65D;B65D;1104 116B 11BC;B65D;1104 116B 11BC;
+B65E;B65E;1104 116B 11BD;B65E;1104 116B 11BD;
+B65F;B65F;1104 116B 11BE;B65F;1104 116B 11BE;
+B660;B660;1104 116B 11BF;B660;1104 116B 11BF;
+B661;B661;1104 116B 11C0;B661;1104 116B 11C0;
+B662;B662;1104 116B 11C1;B662;1104 116B 11C1;
+B663;B663;1104 116B 11C2;B663;1104 116B 11C2;
+B664;B664;1104 116C;B664;1104 116C;
+B665;B665;1104 116C 11A8;B665;1104 116C 11A8;
+B666;B666;1104 116C 11A9;B666;1104 116C 11A9;
+B667;B667;1104 116C 11AA;B667;1104 116C 11AA;
+B668;B668;1104 116C 11AB;B668;1104 116C 11AB;
+B669;B669;1104 116C 11AC;B669;1104 116C 11AC;
+B66A;B66A;1104 116C 11AD;B66A;1104 116C 11AD;
+B66B;B66B;1104 116C 11AE;B66B;1104 116C 11AE;
+B66C;B66C;1104 116C 11AF;B66C;1104 116C 11AF;
+B66D;B66D;1104 116C 11B0;B66D;1104 116C 11B0;
+B66E;B66E;1104 116C 11B1;B66E;1104 116C 11B1;
+B66F;B66F;1104 116C 11B2;B66F;1104 116C 11B2;
+B670;B670;1104 116C 11B3;B670;1104 116C 11B3;
+B671;B671;1104 116C 11B4;B671;1104 116C 11B4;
+B672;B672;1104 116C 11B5;B672;1104 116C 11B5;
+B673;B673;1104 116C 11B6;B673;1104 116C 11B6;
+B674;B674;1104 116C 11B7;B674;1104 116C 11B7;
+B675;B675;1104 116C 11B8;B675;1104 116C 11B8;
+B676;B676;1104 116C 11B9;B676;1104 116C 11B9;
+B677;B677;1104 116C 11BA;B677;1104 116C 11BA;
+B678;B678;1104 116C 11BB;B678;1104 116C 11BB;
+B679;B679;1104 116C 11BC;B679;1104 116C 11BC;
+B67A;B67A;1104 116C 11BD;B67A;1104 116C 11BD;
+B67B;B67B;1104 116C 11BE;B67B;1104 116C 11BE;
+B67C;B67C;1104 116C 11BF;B67C;1104 116C 11BF;
+B67D;B67D;1104 116C 11C0;B67D;1104 116C 11C0;
+B67E;B67E;1104 116C 11C1;B67E;1104 116C 11C1;
+B67F;B67F;1104 116C 11C2;B67F;1104 116C 11C2;
+B680;B680;1104 116D;B680;1104 116D;
+B681;B681;1104 116D 11A8;B681;1104 116D 11A8;
+B682;B682;1104 116D 11A9;B682;1104 116D 11A9;
+B683;B683;1104 116D 11AA;B683;1104 116D 11AA;
+B684;B684;1104 116D 11AB;B684;1104 116D 11AB;
+B685;B685;1104 116D 11AC;B685;1104 116D 11AC;
+B686;B686;1104 116D 11AD;B686;1104 116D 11AD;
+B687;B687;1104 116D 11AE;B687;1104 116D 11AE;
+B688;B688;1104 116D 11AF;B688;1104 116D 11AF;
+B689;B689;1104 116D 11B0;B689;1104 116D 11B0;
+B68A;B68A;1104 116D 11B1;B68A;1104 116D 11B1;
+B68B;B68B;1104 116D 11B2;B68B;1104 116D 11B2;
+B68C;B68C;1104 116D 11B3;B68C;1104 116D 11B3;
+B68D;B68D;1104 116D 11B4;B68D;1104 116D 11B4;
+B68E;B68E;1104 116D 11B5;B68E;1104 116D 11B5;
+B68F;B68F;1104 116D 11B6;B68F;1104 116D 11B6;
+B690;B690;1104 116D 11B7;B690;1104 116D 11B7;
+B691;B691;1104 116D 11B8;B691;1104 116D 11B8;
+B692;B692;1104 116D 11B9;B692;1104 116D 11B9;
+B693;B693;1104 116D 11BA;B693;1104 116D 11BA;
+B694;B694;1104 116D 11BB;B694;1104 116D 11BB;
+B695;B695;1104 116D 11BC;B695;1104 116D 11BC;
+B696;B696;1104 116D 11BD;B696;1104 116D 11BD;
+B697;B697;1104 116D 11BE;B697;1104 116D 11BE;
+B698;B698;1104 116D 11BF;B698;1104 116D 11BF;
+B699;B699;1104 116D 11C0;B699;1104 116D 11C0;
+B69A;B69A;1104 116D 11C1;B69A;1104 116D 11C1;
+B69B;B69B;1104 116D 11C2;B69B;1104 116D 11C2;
+B69C;B69C;1104 116E;B69C;1104 116E;
+B69D;B69D;1104 116E 11A8;B69D;1104 116E 11A8;
+B69E;B69E;1104 116E 11A9;B69E;1104 116E 11A9;
+B69F;B69F;1104 116E 11AA;B69F;1104 116E 11AA;
+B6A0;B6A0;1104 116E 11AB;B6A0;1104 116E 11AB;
+B6A1;B6A1;1104 116E 11AC;B6A1;1104 116E 11AC;
+B6A2;B6A2;1104 116E 11AD;B6A2;1104 116E 11AD;
+B6A3;B6A3;1104 116E 11AE;B6A3;1104 116E 11AE;
+B6A4;B6A4;1104 116E 11AF;B6A4;1104 116E 11AF;
+B6A5;B6A5;1104 116E 11B0;B6A5;1104 116E 11B0;
+B6A6;B6A6;1104 116E 11B1;B6A6;1104 116E 11B1;
+B6A7;B6A7;1104 116E 11B2;B6A7;1104 116E 11B2;
+B6A8;B6A8;1104 116E 11B3;B6A8;1104 116E 11B3;
+B6A9;B6A9;1104 116E 11B4;B6A9;1104 116E 11B4;
+B6AA;B6AA;1104 116E 11B5;B6AA;1104 116E 11B5;
+B6AB;B6AB;1104 116E 11B6;B6AB;1104 116E 11B6;
+B6AC;B6AC;1104 116E 11B7;B6AC;1104 116E 11B7;
+B6AD;B6AD;1104 116E 11B8;B6AD;1104 116E 11B8;
+B6AE;B6AE;1104 116E 11B9;B6AE;1104 116E 11B9;
+B6AF;B6AF;1104 116E 11BA;B6AF;1104 116E 11BA;
+B6B0;B6B0;1104 116E 11BB;B6B0;1104 116E 11BB;
+B6B1;B6B1;1104 116E 11BC;B6B1;1104 116E 11BC;
+B6B2;B6B2;1104 116E 11BD;B6B2;1104 116E 11BD;
+B6B3;B6B3;1104 116E 11BE;B6B3;1104 116E 11BE;
+B6B4;B6B4;1104 116E 11BF;B6B4;1104 116E 11BF;
+B6B5;B6B5;1104 116E 11C0;B6B5;1104 116E 11C0;
+B6B6;B6B6;1104 116E 11C1;B6B6;1104 116E 11C1;
+B6B7;B6B7;1104 116E 11C2;B6B7;1104 116E 11C2;
+B6B8;B6B8;1104 116F;B6B8;1104 116F;
+B6B9;B6B9;1104 116F 11A8;B6B9;1104 116F 11A8;
+B6BA;B6BA;1104 116F 11A9;B6BA;1104 116F 11A9;
+B6BB;B6BB;1104 116F 11AA;B6BB;1104 116F 11AA;
+B6BC;B6BC;1104 116F 11AB;B6BC;1104 116F 11AB;
+B6BD;B6BD;1104 116F 11AC;B6BD;1104 116F 11AC;
+B6BE;B6BE;1104 116F 11AD;B6BE;1104 116F 11AD;
+B6BF;B6BF;1104 116F 11AE;B6BF;1104 116F 11AE;
+B6C0;B6C0;1104 116F 11AF;B6C0;1104 116F 11AF;
+B6C1;B6C1;1104 116F 11B0;B6C1;1104 116F 11B0;
+B6C2;B6C2;1104 116F 11B1;B6C2;1104 116F 11B1;
+B6C3;B6C3;1104 116F 11B2;B6C3;1104 116F 11B2;
+B6C4;B6C4;1104 116F 11B3;B6C4;1104 116F 11B3;
+B6C5;B6C5;1104 116F 11B4;B6C5;1104 116F 11B4;
+B6C6;B6C6;1104 116F 11B5;B6C6;1104 116F 11B5;
+B6C7;B6C7;1104 116F 11B6;B6C7;1104 116F 11B6;
+B6C8;B6C8;1104 116F 11B7;B6C8;1104 116F 11B7;
+B6C9;B6C9;1104 116F 11B8;B6C9;1104 116F 11B8;
+B6CA;B6CA;1104 116F 11B9;B6CA;1104 116F 11B9;
+B6CB;B6CB;1104 116F 11BA;B6CB;1104 116F 11BA;
+B6CC;B6CC;1104 116F 11BB;B6CC;1104 116F 11BB;
+B6CD;B6CD;1104 116F 11BC;B6CD;1104 116F 11BC;
+B6CE;B6CE;1104 116F 11BD;B6CE;1104 116F 11BD;
+B6CF;B6CF;1104 116F 11BE;B6CF;1104 116F 11BE;
+B6D0;B6D0;1104 116F 11BF;B6D0;1104 116F 11BF;
+B6D1;B6D1;1104 116F 11C0;B6D1;1104 116F 11C0;
+B6D2;B6D2;1104 116F 11C1;B6D2;1104 116F 11C1;
+B6D3;B6D3;1104 116F 11C2;B6D3;1104 116F 11C2;
+B6D4;B6D4;1104 1170;B6D4;1104 1170;
+B6D5;B6D5;1104 1170 11A8;B6D5;1104 1170 11A8;
+B6D6;B6D6;1104 1170 11A9;B6D6;1104 1170 11A9;
+B6D7;B6D7;1104 1170 11AA;B6D7;1104 1170 11AA;
+B6D8;B6D8;1104 1170 11AB;B6D8;1104 1170 11AB;
+B6D9;B6D9;1104 1170 11AC;B6D9;1104 1170 11AC;
+B6DA;B6DA;1104 1170 11AD;B6DA;1104 1170 11AD;
+B6DB;B6DB;1104 1170 11AE;B6DB;1104 1170 11AE;
+B6DC;B6DC;1104 1170 11AF;B6DC;1104 1170 11AF;
+B6DD;B6DD;1104 1170 11B0;B6DD;1104 1170 11B0;
+B6DE;B6DE;1104 1170 11B1;B6DE;1104 1170 11B1;
+B6DF;B6DF;1104 1170 11B2;B6DF;1104 1170 11B2;
+B6E0;B6E0;1104 1170 11B3;B6E0;1104 1170 11B3;
+B6E1;B6E1;1104 1170 11B4;B6E1;1104 1170 11B4;
+B6E2;B6E2;1104 1170 11B5;B6E2;1104 1170 11B5;
+B6E3;B6E3;1104 1170 11B6;B6E3;1104 1170 11B6;
+B6E4;B6E4;1104 1170 11B7;B6E4;1104 1170 11B7;
+B6E5;B6E5;1104 1170 11B8;B6E5;1104 1170 11B8;
+B6E6;B6E6;1104 1170 11B9;B6E6;1104 1170 11B9;
+B6E7;B6E7;1104 1170 11BA;B6E7;1104 1170 11BA;
+B6E8;B6E8;1104 1170 11BB;B6E8;1104 1170 11BB;
+B6E9;B6E9;1104 1170 11BC;B6E9;1104 1170 11BC;
+B6EA;B6EA;1104 1170 11BD;B6EA;1104 1170 11BD;
+B6EB;B6EB;1104 1170 11BE;B6EB;1104 1170 11BE;
+B6EC;B6EC;1104 1170 11BF;B6EC;1104 1170 11BF;
+B6ED;B6ED;1104 1170 11C0;B6ED;1104 1170 11C0;
+B6EE;B6EE;1104 1170 11C1;B6EE;1104 1170 11C1;
+B6EF;B6EF;1104 1170 11C2;B6EF;1104 1170 11C2;
+B6F0;B6F0;1104 1171;B6F0;1104 1171;
+B6F1;B6F1;1104 1171 11A8;B6F1;1104 1171 11A8;
+B6F2;B6F2;1104 1171 11A9;B6F2;1104 1171 11A9;
+B6F3;B6F3;1104 1171 11AA;B6F3;1104 1171 11AA;
+B6F4;B6F4;1104 1171 11AB;B6F4;1104 1171 11AB;
+B6F5;B6F5;1104 1171 11AC;B6F5;1104 1171 11AC;
+B6F6;B6F6;1104 1171 11AD;B6F6;1104 1171 11AD;
+B6F7;B6F7;1104 1171 11AE;B6F7;1104 1171 11AE;
+B6F8;B6F8;1104 1171 11AF;B6F8;1104 1171 11AF;
+B6F9;B6F9;1104 1171 11B0;B6F9;1104 1171 11B0;
+B6FA;B6FA;1104 1171 11B1;B6FA;1104 1171 11B1;
+B6FB;B6FB;1104 1171 11B2;B6FB;1104 1171 11B2;
+B6FC;B6FC;1104 1171 11B3;B6FC;1104 1171 11B3;
+B6FD;B6FD;1104 1171 11B4;B6FD;1104 1171 11B4;
+B6FE;B6FE;1104 1171 11B5;B6FE;1104 1171 11B5;
+B6FF;B6FF;1104 1171 11B6;B6FF;1104 1171 11B6;
+B700;B700;1104 1171 11B7;B700;1104 1171 11B7;
+B701;B701;1104 1171 11B8;B701;1104 1171 11B8;
+B702;B702;1104 1171 11B9;B702;1104 1171 11B9;
+B703;B703;1104 1171 11BA;B703;1104 1171 11BA;
+B704;B704;1104 1171 11BB;B704;1104 1171 11BB;
+B705;B705;1104 1171 11BC;B705;1104 1171 11BC;
+B706;B706;1104 1171 11BD;B706;1104 1171 11BD;
+B707;B707;1104 1171 11BE;B707;1104 1171 11BE;
+B708;B708;1104 1171 11BF;B708;1104 1171 11BF;
+B709;B709;1104 1171 11C0;B709;1104 1171 11C0;
+B70A;B70A;1104 1171 11C1;B70A;1104 1171 11C1;
+B70B;B70B;1104 1171 11C2;B70B;1104 1171 11C2;
+B70C;B70C;1104 1172;B70C;1104 1172;
+B70D;B70D;1104 1172 11A8;B70D;1104 1172 11A8;
+B70E;B70E;1104 1172 11A9;B70E;1104 1172 11A9;
+B70F;B70F;1104 1172 11AA;B70F;1104 1172 11AA;
+B710;B710;1104 1172 11AB;B710;1104 1172 11AB;
+B711;B711;1104 1172 11AC;B711;1104 1172 11AC;
+B712;B712;1104 1172 11AD;B712;1104 1172 11AD;
+B713;B713;1104 1172 11AE;B713;1104 1172 11AE;
+B714;B714;1104 1172 11AF;B714;1104 1172 11AF;
+B715;B715;1104 1172 11B0;B715;1104 1172 11B0;
+B716;B716;1104 1172 11B1;B716;1104 1172 11B1;
+B717;B717;1104 1172 11B2;B717;1104 1172 11B2;
+B718;B718;1104 1172 11B3;B718;1104 1172 11B3;
+B719;B719;1104 1172 11B4;B719;1104 1172 11B4;
+B71A;B71A;1104 1172 11B5;B71A;1104 1172 11B5;
+B71B;B71B;1104 1172 11B6;B71B;1104 1172 11B6;
+B71C;B71C;1104 1172 11B7;B71C;1104 1172 11B7;
+B71D;B71D;1104 1172 11B8;B71D;1104 1172 11B8;
+B71E;B71E;1104 1172 11B9;B71E;1104 1172 11B9;
+B71F;B71F;1104 1172 11BA;B71F;1104 1172 11BA;
+B720;B720;1104 1172 11BB;B720;1104 1172 11BB;
+B721;B721;1104 1172 11BC;B721;1104 1172 11BC;
+B722;B722;1104 1172 11BD;B722;1104 1172 11BD;
+B723;B723;1104 1172 11BE;B723;1104 1172 11BE;
+B724;B724;1104 1172 11BF;B724;1104 1172 11BF;
+B725;B725;1104 1172 11C0;B725;1104 1172 11C0;
+B726;B726;1104 1172 11C1;B726;1104 1172 11C1;
+B727;B727;1104 1172 11C2;B727;1104 1172 11C2;
+B728;B728;1104 1173;B728;1104 1173;
+B729;B729;1104 1173 11A8;B729;1104 1173 11A8;
+B72A;B72A;1104 1173 11A9;B72A;1104 1173 11A9;
+B72B;B72B;1104 1173 11AA;B72B;1104 1173 11AA;
+B72C;B72C;1104 1173 11AB;B72C;1104 1173 11AB;
+B72D;B72D;1104 1173 11AC;B72D;1104 1173 11AC;
+B72E;B72E;1104 1173 11AD;B72E;1104 1173 11AD;
+B72F;B72F;1104 1173 11AE;B72F;1104 1173 11AE;
+B730;B730;1104 1173 11AF;B730;1104 1173 11AF;
+B731;B731;1104 1173 11B0;B731;1104 1173 11B0;
+B732;B732;1104 1173 11B1;B732;1104 1173 11B1;
+B733;B733;1104 1173 11B2;B733;1104 1173 11B2;
+B734;B734;1104 1173 11B3;B734;1104 1173 11B3;
+B735;B735;1104 1173 11B4;B735;1104 1173 11B4;
+B736;B736;1104 1173 11B5;B736;1104 1173 11B5;
+B737;B737;1104 1173 11B6;B737;1104 1173 11B6;
+B738;B738;1104 1173 11B7;B738;1104 1173 11B7;
+B739;B739;1104 1173 11B8;B739;1104 1173 11B8;
+B73A;B73A;1104 1173 11B9;B73A;1104 1173 11B9;
+B73B;B73B;1104 1173 11BA;B73B;1104 1173 11BA;
+B73C;B73C;1104 1173 11BB;B73C;1104 1173 11BB;
+B73D;B73D;1104 1173 11BC;B73D;1104 1173 11BC;
+B73E;B73E;1104 1173 11BD;B73E;1104 1173 11BD;
+B73F;B73F;1104 1173 11BE;B73F;1104 1173 11BE;
+B740;B740;1104 1173 11BF;B740;1104 1173 11BF;
+B741;B741;1104 1173 11C0;B741;1104 1173 11C0;
+B742;B742;1104 1173 11C1;B742;1104 1173 11C1;
+B743;B743;1104 1173 11C2;B743;1104 1173 11C2;
+B744;B744;1104 1174;B744;1104 1174;
+B745;B745;1104 1174 11A8;B745;1104 1174 11A8;
+B746;B746;1104 1174 11A9;B746;1104 1174 11A9;
+B747;B747;1104 1174 11AA;B747;1104 1174 11AA;
+B748;B748;1104 1174 11AB;B748;1104 1174 11AB;
+B749;B749;1104 1174 11AC;B749;1104 1174 11AC;
+B74A;B74A;1104 1174 11AD;B74A;1104 1174 11AD;
+B74B;B74B;1104 1174 11AE;B74B;1104 1174 11AE;
+B74C;B74C;1104 1174 11AF;B74C;1104 1174 11AF;
+B74D;B74D;1104 1174 11B0;B74D;1104 1174 11B0;
+B74E;B74E;1104 1174 11B1;B74E;1104 1174 11B1;
+B74F;B74F;1104 1174 11B2;B74F;1104 1174 11B2;
+B750;B750;1104 1174 11B3;B750;1104 1174 11B3;
+B751;B751;1104 1174 11B4;B751;1104 1174 11B4;
+B752;B752;1104 1174 11B5;B752;1104 1174 11B5;
+B753;B753;1104 1174 11B6;B753;1104 1174 11B6;
+B754;B754;1104 1174 11B7;B754;1104 1174 11B7;
+B755;B755;1104 1174 11B8;B755;1104 1174 11B8;
+B756;B756;1104 1174 11B9;B756;1104 1174 11B9;
+B757;B757;1104 1174 11BA;B757;1104 1174 11BA;
+B758;B758;1104 1174 11BB;B758;1104 1174 11BB;
+B759;B759;1104 1174 11BC;B759;1104 1174 11BC;
+B75A;B75A;1104 1174 11BD;B75A;1104 1174 11BD;
+B75B;B75B;1104 1174 11BE;B75B;1104 1174 11BE;
+B75C;B75C;1104 1174 11BF;B75C;1104 1174 11BF;
+B75D;B75D;1104 1174 11C0;B75D;1104 1174 11C0;
+B75E;B75E;1104 1174 11C1;B75E;1104 1174 11C1;
+B75F;B75F;1104 1174 11C2;B75F;1104 1174 11C2;
+B760;B760;1104 1175;B760;1104 1175;
+B761;B761;1104 1175 11A8;B761;1104 1175 11A8;
+B762;B762;1104 1175 11A9;B762;1104 1175 11A9;
+B763;B763;1104 1175 11AA;B763;1104 1175 11AA;
+B764;B764;1104 1175 11AB;B764;1104 1175 11AB;
+B765;B765;1104 1175 11AC;B765;1104 1175 11AC;
+B766;B766;1104 1175 11AD;B766;1104 1175 11AD;
+B767;B767;1104 1175 11AE;B767;1104 1175 11AE;
+B768;B768;1104 1175 11AF;B768;1104 1175 11AF;
+B769;B769;1104 1175 11B0;B769;1104 1175 11B0;
+B76A;B76A;1104 1175 11B1;B76A;1104 1175 11B1;
+B76B;B76B;1104 1175 11B2;B76B;1104 1175 11B2;
+B76C;B76C;1104 1175 11B3;B76C;1104 1175 11B3;
+B76D;B76D;1104 1175 11B4;B76D;1104 1175 11B4;
+B76E;B76E;1104 1175 11B5;B76E;1104 1175 11B5;
+B76F;B76F;1104 1175 11B6;B76F;1104 1175 11B6;
+B770;B770;1104 1175 11B7;B770;1104 1175 11B7;
+B771;B771;1104 1175 11B8;B771;1104 1175 11B8;
+B772;B772;1104 1175 11B9;B772;1104 1175 11B9;
+B773;B773;1104 1175 11BA;B773;1104 1175 11BA;
+B774;B774;1104 1175 11BB;B774;1104 1175 11BB;
+B775;B775;1104 1175 11BC;B775;1104 1175 11BC;
+B776;B776;1104 1175 11BD;B776;1104 1175 11BD;
+B777;B777;1104 1175 11BE;B777;1104 1175 11BE;
+B778;B778;1104 1175 11BF;B778;1104 1175 11BF;
+B779;B779;1104 1175 11C0;B779;1104 1175 11C0;
+B77A;B77A;1104 1175 11C1;B77A;1104 1175 11C1;
+B77B;B77B;1104 1175 11C2;B77B;1104 1175 11C2;
+B77C;B77C;1105 1161;B77C;1105 1161;
+B77D;B77D;1105 1161 11A8;B77D;1105 1161 11A8;
+B77E;B77E;1105 1161 11A9;B77E;1105 1161 11A9;
+B77F;B77F;1105 1161 11AA;B77F;1105 1161 11AA;
+B780;B780;1105 1161 11AB;B780;1105 1161 11AB;
+B781;B781;1105 1161 11AC;B781;1105 1161 11AC;
+B782;B782;1105 1161 11AD;B782;1105 1161 11AD;
+B783;B783;1105 1161 11AE;B783;1105 1161 11AE;
+B784;B784;1105 1161 11AF;B784;1105 1161 11AF;
+B785;B785;1105 1161 11B0;B785;1105 1161 11B0;
+B786;B786;1105 1161 11B1;B786;1105 1161 11B1;
+B787;B787;1105 1161 11B2;B787;1105 1161 11B2;
+B788;B788;1105 1161 11B3;B788;1105 1161 11B3;
+B789;B789;1105 1161 11B4;B789;1105 1161 11B4;
+B78A;B78A;1105 1161 11B5;B78A;1105 1161 11B5;
+B78B;B78B;1105 1161 11B6;B78B;1105 1161 11B6;
+B78C;B78C;1105 1161 11B7;B78C;1105 1161 11B7;
+B78D;B78D;1105 1161 11B8;B78D;1105 1161 11B8;
+B78E;B78E;1105 1161 11B9;B78E;1105 1161 11B9;
+B78F;B78F;1105 1161 11BA;B78F;1105 1161 11BA;
+B790;B790;1105 1161 11BB;B790;1105 1161 11BB;
+B791;B791;1105 1161 11BC;B791;1105 1161 11BC;
+B792;B792;1105 1161 11BD;B792;1105 1161 11BD;
+B793;B793;1105 1161 11BE;B793;1105 1161 11BE;
+B794;B794;1105 1161 11BF;B794;1105 1161 11BF;
+B795;B795;1105 1161 11C0;B795;1105 1161 11C0;
+B796;B796;1105 1161 11C1;B796;1105 1161 11C1;
+B797;B797;1105 1161 11C2;B797;1105 1161 11C2;
+B798;B798;1105 1162;B798;1105 1162;
+B799;B799;1105 1162 11A8;B799;1105 1162 11A8;
+B79A;B79A;1105 1162 11A9;B79A;1105 1162 11A9;
+B79B;B79B;1105 1162 11AA;B79B;1105 1162 11AA;
+B79C;B79C;1105 1162 11AB;B79C;1105 1162 11AB;
+B79D;B79D;1105 1162 11AC;B79D;1105 1162 11AC;
+B79E;B79E;1105 1162 11AD;B79E;1105 1162 11AD;
+B79F;B79F;1105 1162 11AE;B79F;1105 1162 11AE;
+B7A0;B7A0;1105 1162 11AF;B7A0;1105 1162 11AF;
+B7A1;B7A1;1105 1162 11B0;B7A1;1105 1162 11B0;
+B7A2;B7A2;1105 1162 11B1;B7A2;1105 1162 11B1;
+B7A3;B7A3;1105 1162 11B2;B7A3;1105 1162 11B2;
+B7A4;B7A4;1105 1162 11B3;B7A4;1105 1162 11B3;
+B7A5;B7A5;1105 1162 11B4;B7A5;1105 1162 11B4;
+B7A6;B7A6;1105 1162 11B5;B7A6;1105 1162 11B5;
+B7A7;B7A7;1105 1162 11B6;B7A7;1105 1162 11B6;
+B7A8;B7A8;1105 1162 11B7;B7A8;1105 1162 11B7;
+B7A9;B7A9;1105 1162 11B8;B7A9;1105 1162 11B8;
+B7AA;B7AA;1105 1162 11B9;B7AA;1105 1162 11B9;
+B7AB;B7AB;1105 1162 11BA;B7AB;1105 1162 11BA;
+B7AC;B7AC;1105 1162 11BB;B7AC;1105 1162 11BB;
+B7AD;B7AD;1105 1162 11BC;B7AD;1105 1162 11BC;
+B7AE;B7AE;1105 1162 11BD;B7AE;1105 1162 11BD;
+B7AF;B7AF;1105 1162 11BE;B7AF;1105 1162 11BE;
+B7B0;B7B0;1105 1162 11BF;B7B0;1105 1162 11BF;
+B7B1;B7B1;1105 1162 11C0;B7B1;1105 1162 11C0;
+B7B2;B7B2;1105 1162 11C1;B7B2;1105 1162 11C1;
+B7B3;B7B3;1105 1162 11C2;B7B3;1105 1162 11C2;
+B7B4;B7B4;1105 1163;B7B4;1105 1163;
+B7B5;B7B5;1105 1163 11A8;B7B5;1105 1163 11A8;
+B7B6;B7B6;1105 1163 11A9;B7B6;1105 1163 11A9;
+B7B7;B7B7;1105 1163 11AA;B7B7;1105 1163 11AA;
+B7B8;B7B8;1105 1163 11AB;B7B8;1105 1163 11AB;
+B7B9;B7B9;1105 1163 11AC;B7B9;1105 1163 11AC;
+B7BA;B7BA;1105 1163 11AD;B7BA;1105 1163 11AD;
+B7BB;B7BB;1105 1163 11AE;B7BB;1105 1163 11AE;
+B7BC;B7BC;1105 1163 11AF;B7BC;1105 1163 11AF;
+B7BD;B7BD;1105 1163 11B0;B7BD;1105 1163 11B0;
+B7BE;B7BE;1105 1163 11B1;B7BE;1105 1163 11B1;
+B7BF;B7BF;1105 1163 11B2;B7BF;1105 1163 11B2;
+B7C0;B7C0;1105 1163 11B3;B7C0;1105 1163 11B3;
+B7C1;B7C1;1105 1163 11B4;B7C1;1105 1163 11B4;
+B7C2;B7C2;1105 1163 11B5;B7C2;1105 1163 11B5;
+B7C3;B7C3;1105 1163 11B6;B7C3;1105 1163 11B6;
+B7C4;B7C4;1105 1163 11B7;B7C4;1105 1163 11B7;
+B7C5;B7C5;1105 1163 11B8;B7C5;1105 1163 11B8;
+B7C6;B7C6;1105 1163 11B9;B7C6;1105 1163 11B9;
+B7C7;B7C7;1105 1163 11BA;B7C7;1105 1163 11BA;
+B7C8;B7C8;1105 1163 11BB;B7C8;1105 1163 11BB;
+B7C9;B7C9;1105 1163 11BC;B7C9;1105 1163 11BC;
+B7CA;B7CA;1105 1163 11BD;B7CA;1105 1163 11BD;
+B7CB;B7CB;1105 1163 11BE;B7CB;1105 1163 11BE;
+B7CC;B7CC;1105 1163 11BF;B7CC;1105 1163 11BF;
+B7CD;B7CD;1105 1163 11C0;B7CD;1105 1163 11C0;
+B7CE;B7CE;1105 1163 11C1;B7CE;1105 1163 11C1;
+B7CF;B7CF;1105 1163 11C2;B7CF;1105 1163 11C2;
+B7D0;B7D0;1105 1164;B7D0;1105 1164;
+B7D1;B7D1;1105 1164 11A8;B7D1;1105 1164 11A8;
+B7D2;B7D2;1105 1164 11A9;B7D2;1105 1164 11A9;
+B7D3;B7D3;1105 1164 11AA;B7D3;1105 1164 11AA;
+B7D4;B7D4;1105 1164 11AB;B7D4;1105 1164 11AB;
+B7D5;B7D5;1105 1164 11AC;B7D5;1105 1164 11AC;
+B7D6;B7D6;1105 1164 11AD;B7D6;1105 1164 11AD;
+B7D7;B7D7;1105 1164 11AE;B7D7;1105 1164 11AE;
+B7D8;B7D8;1105 1164 11AF;B7D8;1105 1164 11AF;
+B7D9;B7D9;1105 1164 11B0;B7D9;1105 1164 11B0;
+B7DA;B7DA;1105 1164 11B1;B7DA;1105 1164 11B1;
+B7DB;B7DB;1105 1164 11B2;B7DB;1105 1164 11B2;
+B7DC;B7DC;1105 1164 11B3;B7DC;1105 1164 11B3;
+B7DD;B7DD;1105 1164 11B4;B7DD;1105 1164 11B4;
+B7DE;B7DE;1105 1164 11B5;B7DE;1105 1164 11B5;
+B7DF;B7DF;1105 1164 11B6;B7DF;1105 1164 11B6;
+B7E0;B7E0;1105 1164 11B7;B7E0;1105 1164 11B7;
+B7E1;B7E1;1105 1164 11B8;B7E1;1105 1164 11B8;
+B7E2;B7E2;1105 1164 11B9;B7E2;1105 1164 11B9;
+B7E3;B7E3;1105 1164 11BA;B7E3;1105 1164 11BA;
+B7E4;B7E4;1105 1164 11BB;B7E4;1105 1164 11BB;
+B7E5;B7E5;1105 1164 11BC;B7E5;1105 1164 11BC;
+B7E6;B7E6;1105 1164 11BD;B7E6;1105 1164 11BD;
+B7E7;B7E7;1105 1164 11BE;B7E7;1105 1164 11BE;
+B7E8;B7E8;1105 1164 11BF;B7E8;1105 1164 11BF;
+B7E9;B7E9;1105 1164 11C0;B7E9;1105 1164 11C0;
+B7EA;B7EA;1105 1164 11C1;B7EA;1105 1164 11C1;
+B7EB;B7EB;1105 1164 11C2;B7EB;1105 1164 11C2;
+B7EC;B7EC;1105 1165;B7EC;1105 1165;
+B7ED;B7ED;1105 1165 11A8;B7ED;1105 1165 11A8;
+B7EE;B7EE;1105 1165 11A9;B7EE;1105 1165 11A9;
+B7EF;B7EF;1105 1165 11AA;B7EF;1105 1165 11AA;
+B7F0;B7F0;1105 1165 11AB;B7F0;1105 1165 11AB;
+B7F1;B7F1;1105 1165 11AC;B7F1;1105 1165 11AC;
+B7F2;B7F2;1105 1165 11AD;B7F2;1105 1165 11AD;
+B7F3;B7F3;1105 1165 11AE;B7F3;1105 1165 11AE;
+B7F4;B7F4;1105 1165 11AF;B7F4;1105 1165 11AF;
+B7F5;B7F5;1105 1165 11B0;B7F5;1105 1165 11B0;
+B7F6;B7F6;1105 1165 11B1;B7F6;1105 1165 11B1;
+B7F7;B7F7;1105 1165 11B2;B7F7;1105 1165 11B2;
+B7F8;B7F8;1105 1165 11B3;B7F8;1105 1165 11B3;
+B7F9;B7F9;1105 1165 11B4;B7F9;1105 1165 11B4;
+B7FA;B7FA;1105 1165 11B5;B7FA;1105 1165 11B5;
+B7FB;B7FB;1105 1165 11B6;B7FB;1105 1165 11B6;
+B7FC;B7FC;1105 1165 11B7;B7FC;1105 1165 11B7;
+B7FD;B7FD;1105 1165 11B8;B7FD;1105 1165 11B8;
+B7FE;B7FE;1105 1165 11B9;B7FE;1105 1165 11B9;
+B7FF;B7FF;1105 1165 11BA;B7FF;1105 1165 11BA;
+B800;B800;1105 1165 11BB;B800;1105 1165 11BB;
+B801;B801;1105 1165 11BC;B801;1105 1165 11BC;
+B802;B802;1105 1165 11BD;B802;1105 1165 11BD;
+B803;B803;1105 1165 11BE;B803;1105 1165 11BE;
+B804;B804;1105 1165 11BF;B804;1105 1165 11BF;
+B805;B805;1105 1165 11C0;B805;1105 1165 11C0;
+B806;B806;1105 1165 11C1;B806;1105 1165 11C1;
+B807;B807;1105 1165 11C2;B807;1105 1165 11C2;
+B808;B808;1105 1166;B808;1105 1166;
+B809;B809;1105 1166 11A8;B809;1105 1166 11A8;
+B80A;B80A;1105 1166 11A9;B80A;1105 1166 11A9;
+B80B;B80B;1105 1166 11AA;B80B;1105 1166 11AA;
+B80C;B80C;1105 1166 11AB;B80C;1105 1166 11AB;
+B80D;B80D;1105 1166 11AC;B80D;1105 1166 11AC;
+B80E;B80E;1105 1166 11AD;B80E;1105 1166 11AD;
+B80F;B80F;1105 1166 11AE;B80F;1105 1166 11AE;
+B810;B810;1105 1166 11AF;B810;1105 1166 11AF;
+B811;B811;1105 1166 11B0;B811;1105 1166 11B0;
+B812;B812;1105 1166 11B1;B812;1105 1166 11B1;
+B813;B813;1105 1166 11B2;B813;1105 1166 11B2;
+B814;B814;1105 1166 11B3;B814;1105 1166 11B3;
+B815;B815;1105 1166 11B4;B815;1105 1166 11B4;
+B816;B816;1105 1166 11B5;B816;1105 1166 11B5;
+B817;B817;1105 1166 11B6;B817;1105 1166 11B6;
+B818;B818;1105 1166 11B7;B818;1105 1166 11B7;
+B819;B819;1105 1166 11B8;B819;1105 1166 11B8;
+B81A;B81A;1105 1166 11B9;B81A;1105 1166 11B9;
+B81B;B81B;1105 1166 11BA;B81B;1105 1166 11BA;
+B81C;B81C;1105 1166 11BB;B81C;1105 1166 11BB;
+B81D;B81D;1105 1166 11BC;B81D;1105 1166 11BC;
+B81E;B81E;1105 1166 11BD;B81E;1105 1166 11BD;
+B81F;B81F;1105 1166 11BE;B81F;1105 1166 11BE;
+B820;B820;1105 1166 11BF;B820;1105 1166 11BF;
+B821;B821;1105 1166 11C0;B821;1105 1166 11C0;
+B822;B822;1105 1166 11C1;B822;1105 1166 11C1;
+B823;B823;1105 1166 11C2;B823;1105 1166 11C2;
+B824;B824;1105 1167;B824;1105 1167;
+B825;B825;1105 1167 11A8;B825;1105 1167 11A8;
+B826;B826;1105 1167 11A9;B826;1105 1167 11A9;
+B827;B827;1105 1167 11AA;B827;1105 1167 11AA;
+B828;B828;1105 1167 11AB;B828;1105 1167 11AB;
+B829;B829;1105 1167 11AC;B829;1105 1167 11AC;
+B82A;B82A;1105 1167 11AD;B82A;1105 1167 11AD;
+B82B;B82B;1105 1167 11AE;B82B;1105 1167 11AE;
+B82C;B82C;1105 1167 11AF;B82C;1105 1167 11AF;
+B82D;B82D;1105 1167 11B0;B82D;1105 1167 11B0;
+B82E;B82E;1105 1167 11B1;B82E;1105 1167 11B1;
+B82F;B82F;1105 1167 11B2;B82F;1105 1167 11B2;
+B830;B830;1105 1167 11B3;B830;1105 1167 11B3;
+B831;B831;1105 1167 11B4;B831;1105 1167 11B4;
+B832;B832;1105 1167 11B5;B832;1105 1167 11B5;
+B833;B833;1105 1167 11B6;B833;1105 1167 11B6;
+B834;B834;1105 1167 11B7;B834;1105 1167 11B7;
+B835;B835;1105 1167 11B8;B835;1105 1167 11B8;
+B836;B836;1105 1167 11B9;B836;1105 1167 11B9;
+B837;B837;1105 1167 11BA;B837;1105 1167 11BA;
+B838;B838;1105 1167 11BB;B838;1105 1167 11BB;
+B839;B839;1105 1167 11BC;B839;1105 1167 11BC;
+B83A;B83A;1105 1167 11BD;B83A;1105 1167 11BD;
+B83B;B83B;1105 1167 11BE;B83B;1105 1167 11BE;
+B83C;B83C;1105 1167 11BF;B83C;1105 1167 11BF;
+B83D;B83D;1105 1167 11C0;B83D;1105 1167 11C0;
+B83E;B83E;1105 1167 11C1;B83E;1105 1167 11C1;
+B83F;B83F;1105 1167 11C2;B83F;1105 1167 11C2;
+B840;B840;1105 1168;B840;1105 1168;
+B841;B841;1105 1168 11A8;B841;1105 1168 11A8;
+B842;B842;1105 1168 11A9;B842;1105 1168 11A9;
+B843;B843;1105 1168 11AA;B843;1105 1168 11AA;
+B844;B844;1105 1168 11AB;B844;1105 1168 11AB;
+B845;B845;1105 1168 11AC;B845;1105 1168 11AC;
+B846;B846;1105 1168 11AD;B846;1105 1168 11AD;
+B847;B847;1105 1168 11AE;B847;1105 1168 11AE;
+B848;B848;1105 1168 11AF;B848;1105 1168 11AF;
+B849;B849;1105 1168 11B0;B849;1105 1168 11B0;
+B84A;B84A;1105 1168 11B1;B84A;1105 1168 11B1;
+B84B;B84B;1105 1168 11B2;B84B;1105 1168 11B2;
+B84C;B84C;1105 1168 11B3;B84C;1105 1168 11B3;
+B84D;B84D;1105 1168 11B4;B84D;1105 1168 11B4;
+B84E;B84E;1105 1168 11B5;B84E;1105 1168 11B5;
+B84F;B84F;1105 1168 11B6;B84F;1105 1168 11B6;
+B850;B850;1105 1168 11B7;B850;1105 1168 11B7;
+B851;B851;1105 1168 11B8;B851;1105 1168 11B8;
+B852;B852;1105 1168 11B9;B852;1105 1168 11B9;
+B853;B853;1105 1168 11BA;B853;1105 1168 11BA;
+B854;B854;1105 1168 11BB;B854;1105 1168 11BB;
+B855;B855;1105 1168 11BC;B855;1105 1168 11BC;
+B856;B856;1105 1168 11BD;B856;1105 1168 11BD;
+B857;B857;1105 1168 11BE;B857;1105 1168 11BE;
+B858;B858;1105 1168 11BF;B858;1105 1168 11BF;
+B859;B859;1105 1168 11C0;B859;1105 1168 11C0;
+B85A;B85A;1105 1168 11C1;B85A;1105 1168 11C1;
+B85B;B85B;1105 1168 11C2;B85B;1105 1168 11C2;
+B85C;B85C;1105 1169;B85C;1105 1169;
+B85D;B85D;1105 1169 11A8;B85D;1105 1169 11A8;
+B85E;B85E;1105 1169 11A9;B85E;1105 1169 11A9;
+B85F;B85F;1105 1169 11AA;B85F;1105 1169 11AA;
+B860;B860;1105 1169 11AB;B860;1105 1169 11AB;
+B861;B861;1105 1169 11AC;B861;1105 1169 11AC;
+B862;B862;1105 1169 11AD;B862;1105 1169 11AD;
+B863;B863;1105 1169 11AE;B863;1105 1169 11AE;
+B864;B864;1105 1169 11AF;B864;1105 1169 11AF;
+B865;B865;1105 1169 11B0;B865;1105 1169 11B0;
+B866;B866;1105 1169 11B1;B866;1105 1169 11B1;
+B867;B867;1105 1169 11B2;B867;1105 1169 11B2;
+B868;B868;1105 1169 11B3;B868;1105 1169 11B3;
+B869;B869;1105 1169 11B4;B869;1105 1169 11B4;
+B86A;B86A;1105 1169 11B5;B86A;1105 1169 11B5;
+B86B;B86B;1105 1169 11B6;B86B;1105 1169 11B6;
+B86C;B86C;1105 1169 11B7;B86C;1105 1169 11B7;
+B86D;B86D;1105 1169 11B8;B86D;1105 1169 11B8;
+B86E;B86E;1105 1169 11B9;B86E;1105 1169 11B9;
+B86F;B86F;1105 1169 11BA;B86F;1105 1169 11BA;
+B870;B870;1105 1169 11BB;B870;1105 1169 11BB;
+B871;B871;1105 1169 11BC;B871;1105 1169 11BC;
+B872;B872;1105 1169 11BD;B872;1105 1169 11BD;
+B873;B873;1105 1169 11BE;B873;1105 1169 11BE;
+B874;B874;1105 1169 11BF;B874;1105 1169 11BF;
+B875;B875;1105 1169 11C0;B875;1105 1169 11C0;
+B876;B876;1105 1169 11C1;B876;1105 1169 11C1;
+B877;B877;1105 1169 11C2;B877;1105 1169 11C2;
+B878;B878;1105 116A;B878;1105 116A;
+B879;B879;1105 116A 11A8;B879;1105 116A 11A8;
+B87A;B87A;1105 116A 11A9;B87A;1105 116A 11A9;
+B87B;B87B;1105 116A 11AA;B87B;1105 116A 11AA;
+B87C;B87C;1105 116A 11AB;B87C;1105 116A 11AB;
+B87D;B87D;1105 116A 11AC;B87D;1105 116A 11AC;
+B87E;B87E;1105 116A 11AD;B87E;1105 116A 11AD;
+B87F;B87F;1105 116A 11AE;B87F;1105 116A 11AE;
+B880;B880;1105 116A 11AF;B880;1105 116A 11AF;
+B881;B881;1105 116A 11B0;B881;1105 116A 11B0;
+B882;B882;1105 116A 11B1;B882;1105 116A 11B1;
+B883;B883;1105 116A 11B2;B883;1105 116A 11B2;
+B884;B884;1105 116A 11B3;B884;1105 116A 11B3;
+B885;B885;1105 116A 11B4;B885;1105 116A 11B4;
+B886;B886;1105 116A 11B5;B886;1105 116A 11B5;
+B887;B887;1105 116A 11B6;B887;1105 116A 11B6;
+B888;B888;1105 116A 11B7;B888;1105 116A 11B7;
+B889;B889;1105 116A 11B8;B889;1105 116A 11B8;
+B88A;B88A;1105 116A 11B9;B88A;1105 116A 11B9;
+B88B;B88B;1105 116A 11BA;B88B;1105 116A 11BA;
+B88C;B88C;1105 116A 11BB;B88C;1105 116A 11BB;
+B88D;B88D;1105 116A 11BC;B88D;1105 116A 11BC;
+B88E;B88E;1105 116A 11BD;B88E;1105 116A 11BD;
+B88F;B88F;1105 116A 11BE;B88F;1105 116A 11BE;
+B890;B890;1105 116A 11BF;B890;1105 116A 11BF;
+B891;B891;1105 116A 11C0;B891;1105 116A 11C0;
+B892;B892;1105 116A 11C1;B892;1105 116A 11C1;
+B893;B893;1105 116A 11C2;B893;1105 116A 11C2;
+B894;B894;1105 116B;B894;1105 116B;
+B895;B895;1105 116B 11A8;B895;1105 116B 11A8;
+B896;B896;1105 116B 11A9;B896;1105 116B 11A9;
+B897;B897;1105 116B 11AA;B897;1105 116B 11AA;
+B898;B898;1105 116B 11AB;B898;1105 116B 11AB;
+B899;B899;1105 116B 11AC;B899;1105 116B 11AC;
+B89A;B89A;1105 116B 11AD;B89A;1105 116B 11AD;
+B89B;B89B;1105 116B 11AE;B89B;1105 116B 11AE;
+B89C;B89C;1105 116B 11AF;B89C;1105 116B 11AF;
+B89D;B89D;1105 116B 11B0;B89D;1105 116B 11B0;
+B89E;B89E;1105 116B 11B1;B89E;1105 116B 11B1;
+B89F;B89F;1105 116B 11B2;B89F;1105 116B 11B2;
+B8A0;B8A0;1105 116B 11B3;B8A0;1105 116B 11B3;
+B8A1;B8A1;1105 116B 11B4;B8A1;1105 116B 11B4;
+B8A2;B8A2;1105 116B 11B5;B8A2;1105 116B 11B5;
+B8A3;B8A3;1105 116B 11B6;B8A3;1105 116B 11B6;
+B8A4;B8A4;1105 116B 11B7;B8A4;1105 116B 11B7;
+B8A5;B8A5;1105 116B 11B8;B8A5;1105 116B 11B8;
+B8A6;B8A6;1105 116B 11B9;B8A6;1105 116B 11B9;
+B8A7;B8A7;1105 116B 11BA;B8A7;1105 116B 11BA;
+B8A8;B8A8;1105 116B 11BB;B8A8;1105 116B 11BB;
+B8A9;B8A9;1105 116B 11BC;B8A9;1105 116B 11BC;
+B8AA;B8AA;1105 116B 11BD;B8AA;1105 116B 11BD;
+B8AB;B8AB;1105 116B 11BE;B8AB;1105 116B 11BE;
+B8AC;B8AC;1105 116B 11BF;B8AC;1105 116B 11BF;
+B8AD;B8AD;1105 116B 11C0;B8AD;1105 116B 11C0;
+B8AE;B8AE;1105 116B 11C1;B8AE;1105 116B 11C1;
+B8AF;B8AF;1105 116B 11C2;B8AF;1105 116B 11C2;
+B8B0;B8B0;1105 116C;B8B0;1105 116C;
+B8B1;B8B1;1105 116C 11A8;B8B1;1105 116C 11A8;
+B8B2;B8B2;1105 116C 11A9;B8B2;1105 116C 11A9;
+B8B3;B8B3;1105 116C 11AA;B8B3;1105 116C 11AA;
+B8B4;B8B4;1105 116C 11AB;B8B4;1105 116C 11AB;
+B8B5;B8B5;1105 116C 11AC;B8B5;1105 116C 11AC;
+B8B6;B8B6;1105 116C 11AD;B8B6;1105 116C 11AD;
+B8B7;B8B7;1105 116C 11AE;B8B7;1105 116C 11AE;
+B8B8;B8B8;1105 116C 11AF;B8B8;1105 116C 11AF;
+B8B9;B8B9;1105 116C 11B0;B8B9;1105 116C 11B0;
+B8BA;B8BA;1105 116C 11B1;B8BA;1105 116C 11B1;
+B8BB;B8BB;1105 116C 11B2;B8BB;1105 116C 11B2;
+B8BC;B8BC;1105 116C 11B3;B8BC;1105 116C 11B3;
+B8BD;B8BD;1105 116C 11B4;B8BD;1105 116C 11B4;
+B8BE;B8BE;1105 116C 11B5;B8BE;1105 116C 11B5;
+B8BF;B8BF;1105 116C 11B6;B8BF;1105 116C 11B6;
+B8C0;B8C0;1105 116C 11B7;B8C0;1105 116C 11B7;
+B8C1;B8C1;1105 116C 11B8;B8C1;1105 116C 11B8;
+B8C2;B8C2;1105 116C 11B9;B8C2;1105 116C 11B9;
+B8C3;B8C3;1105 116C 11BA;B8C3;1105 116C 11BA;
+B8C4;B8C4;1105 116C 11BB;B8C4;1105 116C 11BB;
+B8C5;B8C5;1105 116C 11BC;B8C5;1105 116C 11BC;
+B8C6;B8C6;1105 116C 11BD;B8C6;1105 116C 11BD;
+B8C7;B8C7;1105 116C 11BE;B8C7;1105 116C 11BE;
+B8C8;B8C8;1105 116C 11BF;B8C8;1105 116C 11BF;
+B8C9;B8C9;1105 116C 11C0;B8C9;1105 116C 11C0;
+B8CA;B8CA;1105 116C 11C1;B8CA;1105 116C 11C1;
+B8CB;B8CB;1105 116C 11C2;B8CB;1105 116C 11C2;
+B8CC;B8CC;1105 116D;B8CC;1105 116D;
+B8CD;B8CD;1105 116D 11A8;B8CD;1105 116D 11A8;
+B8CE;B8CE;1105 116D 11A9;B8CE;1105 116D 11A9;
+B8CF;B8CF;1105 116D 11AA;B8CF;1105 116D 11AA;
+B8D0;B8D0;1105 116D 11AB;B8D0;1105 116D 11AB;
+B8D1;B8D1;1105 116D 11AC;B8D1;1105 116D 11AC;
+B8D2;B8D2;1105 116D 11AD;B8D2;1105 116D 11AD;
+B8D3;B8D3;1105 116D 11AE;B8D3;1105 116D 11AE;
+B8D4;B8D4;1105 116D 11AF;B8D4;1105 116D 11AF;
+B8D5;B8D5;1105 116D 11B0;B8D5;1105 116D 11B0;
+B8D6;B8D6;1105 116D 11B1;B8D6;1105 116D 11B1;
+B8D7;B8D7;1105 116D 11B2;B8D7;1105 116D 11B2;
+B8D8;B8D8;1105 116D 11B3;B8D8;1105 116D 11B3;
+B8D9;B8D9;1105 116D 11B4;B8D9;1105 116D 11B4;
+B8DA;B8DA;1105 116D 11B5;B8DA;1105 116D 11B5;
+B8DB;B8DB;1105 116D 11B6;B8DB;1105 116D 11B6;
+B8DC;B8DC;1105 116D 11B7;B8DC;1105 116D 11B7;
+B8DD;B8DD;1105 116D 11B8;B8DD;1105 116D 11B8;
+B8DE;B8DE;1105 116D 11B9;B8DE;1105 116D 11B9;
+B8DF;B8DF;1105 116D 11BA;B8DF;1105 116D 11BA;
+B8E0;B8E0;1105 116D 11BB;B8E0;1105 116D 11BB;
+B8E1;B8E1;1105 116D 11BC;B8E1;1105 116D 11BC;
+B8E2;B8E2;1105 116D 11BD;B8E2;1105 116D 11BD;
+B8E3;B8E3;1105 116D 11BE;B8E3;1105 116D 11BE;
+B8E4;B8E4;1105 116D 11BF;B8E4;1105 116D 11BF;
+B8E5;B8E5;1105 116D 11C0;B8E5;1105 116D 11C0;
+B8E6;B8E6;1105 116D 11C1;B8E6;1105 116D 11C1;
+B8E7;B8E7;1105 116D 11C2;B8E7;1105 116D 11C2;
+B8E8;B8E8;1105 116E;B8E8;1105 116E;
+B8E9;B8E9;1105 116E 11A8;B8E9;1105 116E 11A8;
+B8EA;B8EA;1105 116E 11A9;B8EA;1105 116E 11A9;
+B8EB;B8EB;1105 116E 11AA;B8EB;1105 116E 11AA;
+B8EC;B8EC;1105 116E 11AB;B8EC;1105 116E 11AB;
+B8ED;B8ED;1105 116E 11AC;B8ED;1105 116E 11AC;
+B8EE;B8EE;1105 116E 11AD;B8EE;1105 116E 11AD;
+B8EF;B8EF;1105 116E 11AE;B8EF;1105 116E 11AE;
+B8F0;B8F0;1105 116E 11AF;B8F0;1105 116E 11AF;
+B8F1;B8F1;1105 116E 11B0;B8F1;1105 116E 11B0;
+B8F2;B8F2;1105 116E 11B1;B8F2;1105 116E 11B1;
+B8F3;B8F3;1105 116E 11B2;B8F3;1105 116E 11B2;
+B8F4;B8F4;1105 116E 11B3;B8F4;1105 116E 11B3;
+B8F5;B8F5;1105 116E 11B4;B8F5;1105 116E 11B4;
+B8F6;B8F6;1105 116E 11B5;B8F6;1105 116E 11B5;
+B8F7;B8F7;1105 116E 11B6;B8F7;1105 116E 11B6;
+B8F8;B8F8;1105 116E 11B7;B8F8;1105 116E 11B7;
+B8F9;B8F9;1105 116E 11B8;B8F9;1105 116E 11B8;
+B8FA;B8FA;1105 116E 11B9;B8FA;1105 116E 11B9;
+B8FB;B8FB;1105 116E 11BA;B8FB;1105 116E 11BA;
+B8FC;B8FC;1105 116E 11BB;B8FC;1105 116E 11BB;
+B8FD;B8FD;1105 116E 11BC;B8FD;1105 116E 11BC;
+B8FE;B8FE;1105 116E 11BD;B8FE;1105 116E 11BD;
+B8FF;B8FF;1105 116E 11BE;B8FF;1105 116E 11BE;
+B900;B900;1105 116E 11BF;B900;1105 116E 11BF;
+B901;B901;1105 116E 11C0;B901;1105 116E 11C0;
+B902;B902;1105 116E 11C1;B902;1105 116E 11C1;
+B903;B903;1105 116E 11C2;B903;1105 116E 11C2;
+B904;B904;1105 116F;B904;1105 116F;
+B905;B905;1105 116F 11A8;B905;1105 116F 11A8;
+B906;B906;1105 116F 11A9;B906;1105 116F 11A9;
+B907;B907;1105 116F 11AA;B907;1105 116F 11AA;
+B908;B908;1105 116F 11AB;B908;1105 116F 11AB;
+B909;B909;1105 116F 11AC;B909;1105 116F 11AC;
+B90A;B90A;1105 116F 11AD;B90A;1105 116F 11AD;
+B90B;B90B;1105 116F 11AE;B90B;1105 116F 11AE;
+B90C;B90C;1105 116F 11AF;B90C;1105 116F 11AF;
+B90D;B90D;1105 116F 11B0;B90D;1105 116F 11B0;
+B90E;B90E;1105 116F 11B1;B90E;1105 116F 11B1;
+B90F;B90F;1105 116F 11B2;B90F;1105 116F 11B2;
+B910;B910;1105 116F 11B3;B910;1105 116F 11B3;
+B911;B911;1105 116F 11B4;B911;1105 116F 11B4;
+B912;B912;1105 116F 11B5;B912;1105 116F 11B5;
+B913;B913;1105 116F 11B6;B913;1105 116F 11B6;
+B914;B914;1105 116F 11B7;B914;1105 116F 11B7;
+B915;B915;1105 116F 11B8;B915;1105 116F 11B8;
+B916;B916;1105 116F 11B9;B916;1105 116F 11B9;
+B917;B917;1105 116F 11BA;B917;1105 116F 11BA;
+B918;B918;1105 116F 11BB;B918;1105 116F 11BB;
+B919;B919;1105 116F 11BC;B919;1105 116F 11BC;
+B91A;B91A;1105 116F 11BD;B91A;1105 116F 11BD;
+B91B;B91B;1105 116F 11BE;B91B;1105 116F 11BE;
+B91C;B91C;1105 116F 11BF;B91C;1105 116F 11BF;
+B91D;B91D;1105 116F 11C0;B91D;1105 116F 11C0;
+B91E;B91E;1105 116F 11C1;B91E;1105 116F 11C1;
+B91F;B91F;1105 116F 11C2;B91F;1105 116F 11C2;
+B920;B920;1105 1170;B920;1105 1170;
+B921;B921;1105 1170 11A8;B921;1105 1170 11A8;
+B922;B922;1105 1170 11A9;B922;1105 1170 11A9;
+B923;B923;1105 1170 11AA;B923;1105 1170 11AA;
+B924;B924;1105 1170 11AB;B924;1105 1170 11AB;
+B925;B925;1105 1170 11AC;B925;1105 1170 11AC;
+B926;B926;1105 1170 11AD;B926;1105 1170 11AD;
+B927;B927;1105 1170 11AE;B927;1105 1170 11AE;
+B928;B928;1105 1170 11AF;B928;1105 1170 11AF;
+B929;B929;1105 1170 11B0;B929;1105 1170 11B0;
+B92A;B92A;1105 1170 11B1;B92A;1105 1170 11B1;
+B92B;B92B;1105 1170 11B2;B92B;1105 1170 11B2;
+B92C;B92C;1105 1170 11B3;B92C;1105 1170 11B3;
+B92D;B92D;1105 1170 11B4;B92D;1105 1170 11B4;
+B92E;B92E;1105 1170 11B5;B92E;1105 1170 11B5;
+B92F;B92F;1105 1170 11B6;B92F;1105 1170 11B6;
+B930;B930;1105 1170 11B7;B930;1105 1170 11B7;
+B931;B931;1105 1170 11B8;B931;1105 1170 11B8;
+B932;B932;1105 1170 11B9;B932;1105 1170 11B9;
+B933;B933;1105 1170 11BA;B933;1105 1170 11BA;
+B934;B934;1105 1170 11BB;B934;1105 1170 11BB;
+B935;B935;1105 1170 11BC;B935;1105 1170 11BC;
+B936;B936;1105 1170 11BD;B936;1105 1170 11BD;
+B937;B937;1105 1170 11BE;B937;1105 1170 11BE;
+B938;B938;1105 1170 11BF;B938;1105 1170 11BF;
+B939;B939;1105 1170 11C0;B939;1105 1170 11C0;
+B93A;B93A;1105 1170 11C1;B93A;1105 1170 11C1;
+B93B;B93B;1105 1170 11C2;B93B;1105 1170 11C2;
+B93C;B93C;1105 1171;B93C;1105 1171;
+B93D;B93D;1105 1171 11A8;B93D;1105 1171 11A8;
+B93E;B93E;1105 1171 11A9;B93E;1105 1171 11A9;
+B93F;B93F;1105 1171 11AA;B93F;1105 1171 11AA;
+B940;B940;1105 1171 11AB;B940;1105 1171 11AB;
+B941;B941;1105 1171 11AC;B941;1105 1171 11AC;
+B942;B942;1105 1171 11AD;B942;1105 1171 11AD;
+B943;B943;1105 1171 11AE;B943;1105 1171 11AE;
+B944;B944;1105 1171 11AF;B944;1105 1171 11AF;
+B945;B945;1105 1171 11B0;B945;1105 1171 11B0;
+B946;B946;1105 1171 11B1;B946;1105 1171 11B1;
+B947;B947;1105 1171 11B2;B947;1105 1171 11B2;
+B948;B948;1105 1171 11B3;B948;1105 1171 11B3;
+B949;B949;1105 1171 11B4;B949;1105 1171 11B4;
+B94A;B94A;1105 1171 11B5;B94A;1105 1171 11B5;
+B94B;B94B;1105 1171 11B6;B94B;1105 1171 11B6;
+B94C;B94C;1105 1171 11B7;B94C;1105 1171 11B7;
+B94D;B94D;1105 1171 11B8;B94D;1105 1171 11B8;
+B94E;B94E;1105 1171 11B9;B94E;1105 1171 11B9;
+B94F;B94F;1105 1171 11BA;B94F;1105 1171 11BA;
+B950;B950;1105 1171 11BB;B950;1105 1171 11BB;
+B951;B951;1105 1171 11BC;B951;1105 1171 11BC;
+B952;B952;1105 1171 11BD;B952;1105 1171 11BD;
+B953;B953;1105 1171 11BE;B953;1105 1171 11BE;
+B954;B954;1105 1171 11BF;B954;1105 1171 11BF;
+B955;B955;1105 1171 11C0;B955;1105 1171 11C0;
+B956;B956;1105 1171 11C1;B956;1105 1171 11C1;
+B957;B957;1105 1171 11C2;B957;1105 1171 11C2;
+B958;B958;1105 1172;B958;1105 1172;
+B959;B959;1105 1172 11A8;B959;1105 1172 11A8;
+B95A;B95A;1105 1172 11A9;B95A;1105 1172 11A9;
+B95B;B95B;1105 1172 11AA;B95B;1105 1172 11AA;
+B95C;B95C;1105 1172 11AB;B95C;1105 1172 11AB;
+B95D;B95D;1105 1172 11AC;B95D;1105 1172 11AC;
+B95E;B95E;1105 1172 11AD;B95E;1105 1172 11AD;
+B95F;B95F;1105 1172 11AE;B95F;1105 1172 11AE;
+B960;B960;1105 1172 11AF;B960;1105 1172 11AF;
+B961;B961;1105 1172 11B0;B961;1105 1172 11B0;
+B962;B962;1105 1172 11B1;B962;1105 1172 11B1;
+B963;B963;1105 1172 11B2;B963;1105 1172 11B2;
+B964;B964;1105 1172 11B3;B964;1105 1172 11B3;
+B965;B965;1105 1172 11B4;B965;1105 1172 11B4;
+B966;B966;1105 1172 11B5;B966;1105 1172 11B5;
+B967;B967;1105 1172 11B6;B967;1105 1172 11B6;
+B968;B968;1105 1172 11B7;B968;1105 1172 11B7;
+B969;B969;1105 1172 11B8;B969;1105 1172 11B8;
+B96A;B96A;1105 1172 11B9;B96A;1105 1172 11B9;
+B96B;B96B;1105 1172 11BA;B96B;1105 1172 11BA;
+B96C;B96C;1105 1172 11BB;B96C;1105 1172 11BB;
+B96D;B96D;1105 1172 11BC;B96D;1105 1172 11BC;
+B96E;B96E;1105 1172 11BD;B96E;1105 1172 11BD;
+B96F;B96F;1105 1172 11BE;B96F;1105 1172 11BE;
+B970;B970;1105 1172 11BF;B970;1105 1172 11BF;
+B971;B971;1105 1172 11C0;B971;1105 1172 11C0;
+B972;B972;1105 1172 11C1;B972;1105 1172 11C1;
+B973;B973;1105 1172 11C2;B973;1105 1172 11C2;
+B974;B974;1105 1173;B974;1105 1173;
+B975;B975;1105 1173 11A8;B975;1105 1173 11A8;
+B976;B976;1105 1173 11A9;B976;1105 1173 11A9;
+B977;B977;1105 1173 11AA;B977;1105 1173 11AA;
+B978;B978;1105 1173 11AB;B978;1105 1173 11AB;
+B979;B979;1105 1173 11AC;B979;1105 1173 11AC;
+B97A;B97A;1105 1173 11AD;B97A;1105 1173 11AD;
+B97B;B97B;1105 1173 11AE;B97B;1105 1173 11AE;
+B97C;B97C;1105 1173 11AF;B97C;1105 1173 11AF;
+B97D;B97D;1105 1173 11B0;B97D;1105 1173 11B0;
+B97E;B97E;1105 1173 11B1;B97E;1105 1173 11B1;
+B97F;B97F;1105 1173 11B2;B97F;1105 1173 11B2;
+B980;B980;1105 1173 11B3;B980;1105 1173 11B3;
+B981;B981;1105 1173 11B4;B981;1105 1173 11B4;
+B982;B982;1105 1173 11B5;B982;1105 1173 11B5;
+B983;B983;1105 1173 11B6;B983;1105 1173 11B6;
+B984;B984;1105 1173 11B7;B984;1105 1173 11B7;
+B985;B985;1105 1173 11B8;B985;1105 1173 11B8;
+B986;B986;1105 1173 11B9;B986;1105 1173 11B9;
+B987;B987;1105 1173 11BA;B987;1105 1173 11BA;
+B988;B988;1105 1173 11BB;B988;1105 1173 11BB;
+B989;B989;1105 1173 11BC;B989;1105 1173 11BC;
+B98A;B98A;1105 1173 11BD;B98A;1105 1173 11BD;
+B98B;B98B;1105 1173 11BE;B98B;1105 1173 11BE;
+B98C;B98C;1105 1173 11BF;B98C;1105 1173 11BF;
+B98D;B98D;1105 1173 11C0;B98D;1105 1173 11C0;
+B98E;B98E;1105 1173 11C1;B98E;1105 1173 11C1;
+B98F;B98F;1105 1173 11C2;B98F;1105 1173 11C2;
+B990;B990;1105 1174;B990;1105 1174;
+B991;B991;1105 1174 11A8;B991;1105 1174 11A8;
+B992;B992;1105 1174 11A9;B992;1105 1174 11A9;
+B993;B993;1105 1174 11AA;B993;1105 1174 11AA;
+B994;B994;1105 1174 11AB;B994;1105 1174 11AB;
+B995;B995;1105 1174 11AC;B995;1105 1174 11AC;
+B996;B996;1105 1174 11AD;B996;1105 1174 11AD;
+B997;B997;1105 1174 11AE;B997;1105 1174 11AE;
+B998;B998;1105 1174 11AF;B998;1105 1174 11AF;
+B999;B999;1105 1174 11B0;B999;1105 1174 11B0;
+B99A;B99A;1105 1174 11B1;B99A;1105 1174 11B1;
+B99B;B99B;1105 1174 11B2;B99B;1105 1174 11B2;
+B99C;B99C;1105 1174 11B3;B99C;1105 1174 11B3;
+B99D;B99D;1105 1174 11B4;B99D;1105 1174 11B4;
+B99E;B99E;1105 1174 11B5;B99E;1105 1174 11B5;
+B99F;B99F;1105 1174 11B6;B99F;1105 1174 11B6;
+B9A0;B9A0;1105 1174 11B7;B9A0;1105 1174 11B7;
+B9A1;B9A1;1105 1174 11B8;B9A1;1105 1174 11B8;
+B9A2;B9A2;1105 1174 11B9;B9A2;1105 1174 11B9;
+B9A3;B9A3;1105 1174 11BA;B9A3;1105 1174 11BA;
+B9A4;B9A4;1105 1174 11BB;B9A4;1105 1174 11BB;
+B9A5;B9A5;1105 1174 11BC;B9A5;1105 1174 11BC;
+B9A6;B9A6;1105 1174 11BD;B9A6;1105 1174 11BD;
+B9A7;B9A7;1105 1174 11BE;B9A7;1105 1174 11BE;
+B9A8;B9A8;1105 1174 11BF;B9A8;1105 1174 11BF;
+B9A9;B9A9;1105 1174 11C0;B9A9;1105 1174 11C0;
+B9AA;B9AA;1105 1174 11C1;B9AA;1105 1174 11C1;
+B9AB;B9AB;1105 1174 11C2;B9AB;1105 1174 11C2;
+B9AC;B9AC;1105 1175;B9AC;1105 1175;
+B9AD;B9AD;1105 1175 11A8;B9AD;1105 1175 11A8;
+B9AE;B9AE;1105 1175 11A9;B9AE;1105 1175 11A9;
+B9AF;B9AF;1105 1175 11AA;B9AF;1105 1175 11AA;
+B9B0;B9B0;1105 1175 11AB;B9B0;1105 1175 11AB;
+B9B1;B9B1;1105 1175 11AC;B9B1;1105 1175 11AC;
+B9B2;B9B2;1105 1175 11AD;B9B2;1105 1175 11AD;
+B9B3;B9B3;1105 1175 11AE;B9B3;1105 1175 11AE;
+B9B4;B9B4;1105 1175 11AF;B9B4;1105 1175 11AF;
+B9B5;B9B5;1105 1175 11B0;B9B5;1105 1175 11B0;
+B9B6;B9B6;1105 1175 11B1;B9B6;1105 1175 11B1;
+B9B7;B9B7;1105 1175 11B2;B9B7;1105 1175 11B2;
+B9B8;B9B8;1105 1175 11B3;B9B8;1105 1175 11B3;
+B9B9;B9B9;1105 1175 11B4;B9B9;1105 1175 11B4;
+B9BA;B9BA;1105 1175 11B5;B9BA;1105 1175 11B5;
+B9BB;B9BB;1105 1175 11B6;B9BB;1105 1175 11B6;
+B9BC;B9BC;1105 1175 11B7;B9BC;1105 1175 11B7;
+B9BD;B9BD;1105 1175 11B8;B9BD;1105 1175 11B8;
+B9BE;B9BE;1105 1175 11B9;B9BE;1105 1175 11B9;
+B9BF;B9BF;1105 1175 11BA;B9BF;1105 1175 11BA;
+B9C0;B9C0;1105 1175 11BB;B9C0;1105 1175 11BB;
+B9C1;B9C1;1105 1175 11BC;B9C1;1105 1175 11BC;
+B9C2;B9C2;1105 1175 11BD;B9C2;1105 1175 11BD;
+B9C3;B9C3;1105 1175 11BE;B9C3;1105 1175 11BE;
+B9C4;B9C4;1105 1175 11BF;B9C4;1105 1175 11BF;
+B9C5;B9C5;1105 1175 11C0;B9C5;1105 1175 11C0;
+B9C6;B9C6;1105 1175 11C1;B9C6;1105 1175 11C1;
+B9C7;B9C7;1105 1175 11C2;B9C7;1105 1175 11C2;
+B9C8;B9C8;1106 1161;B9C8;1106 1161;
+B9C9;B9C9;1106 1161 11A8;B9C9;1106 1161 11A8;
+B9CA;B9CA;1106 1161 11A9;B9CA;1106 1161 11A9;
+B9CB;B9CB;1106 1161 11AA;B9CB;1106 1161 11AA;
+B9CC;B9CC;1106 1161 11AB;B9CC;1106 1161 11AB;
+B9CD;B9CD;1106 1161 11AC;B9CD;1106 1161 11AC;
+B9CE;B9CE;1106 1161 11AD;B9CE;1106 1161 11AD;
+B9CF;B9CF;1106 1161 11AE;B9CF;1106 1161 11AE;
+B9D0;B9D0;1106 1161 11AF;B9D0;1106 1161 11AF;
+B9D1;B9D1;1106 1161 11B0;B9D1;1106 1161 11B0;
+B9D2;B9D2;1106 1161 11B1;B9D2;1106 1161 11B1;
+B9D3;B9D3;1106 1161 11B2;B9D3;1106 1161 11B2;
+B9D4;B9D4;1106 1161 11B3;B9D4;1106 1161 11B3;
+B9D5;B9D5;1106 1161 11B4;B9D5;1106 1161 11B4;
+B9D6;B9D6;1106 1161 11B5;B9D6;1106 1161 11B5;
+B9D7;B9D7;1106 1161 11B6;B9D7;1106 1161 11B6;
+B9D8;B9D8;1106 1161 11B7;B9D8;1106 1161 11B7;
+B9D9;B9D9;1106 1161 11B8;B9D9;1106 1161 11B8;
+B9DA;B9DA;1106 1161 11B9;B9DA;1106 1161 11B9;
+B9DB;B9DB;1106 1161 11BA;B9DB;1106 1161 11BA;
+B9DC;B9DC;1106 1161 11BB;B9DC;1106 1161 11BB;
+B9DD;B9DD;1106 1161 11BC;B9DD;1106 1161 11BC;
+B9DE;B9DE;1106 1161 11BD;B9DE;1106 1161 11BD;
+B9DF;B9DF;1106 1161 11BE;B9DF;1106 1161 11BE;
+B9E0;B9E0;1106 1161 11BF;B9E0;1106 1161 11BF;
+B9E1;B9E1;1106 1161 11C0;B9E1;1106 1161 11C0;
+B9E2;B9E2;1106 1161 11C1;B9E2;1106 1161 11C1;
+B9E3;B9E3;1106 1161 11C2;B9E3;1106 1161 11C2;
+B9E4;B9E4;1106 1162;B9E4;1106 1162;
+B9E5;B9E5;1106 1162 11A8;B9E5;1106 1162 11A8;
+B9E6;B9E6;1106 1162 11A9;B9E6;1106 1162 11A9;
+B9E7;B9E7;1106 1162 11AA;B9E7;1106 1162 11AA;
+B9E8;B9E8;1106 1162 11AB;B9E8;1106 1162 11AB;
+B9E9;B9E9;1106 1162 11AC;B9E9;1106 1162 11AC;
+B9EA;B9EA;1106 1162 11AD;B9EA;1106 1162 11AD;
+B9EB;B9EB;1106 1162 11AE;B9EB;1106 1162 11AE;
+B9EC;B9EC;1106 1162 11AF;B9EC;1106 1162 11AF;
+B9ED;B9ED;1106 1162 11B0;B9ED;1106 1162 11B0;
+B9EE;B9EE;1106 1162 11B1;B9EE;1106 1162 11B1;
+B9EF;B9EF;1106 1162 11B2;B9EF;1106 1162 11B2;
+B9F0;B9F0;1106 1162 11B3;B9F0;1106 1162 11B3;
+B9F1;B9F1;1106 1162 11B4;B9F1;1106 1162 11B4;
+B9F2;B9F2;1106 1162 11B5;B9F2;1106 1162 11B5;
+B9F3;B9F3;1106 1162 11B6;B9F3;1106 1162 11B6;
+B9F4;B9F4;1106 1162 11B7;B9F4;1106 1162 11B7;
+B9F5;B9F5;1106 1162 11B8;B9F5;1106 1162 11B8;
+B9F6;B9F6;1106 1162 11B9;B9F6;1106 1162 11B9;
+B9F7;B9F7;1106 1162 11BA;B9F7;1106 1162 11BA;
+B9F8;B9F8;1106 1162 11BB;B9F8;1106 1162 11BB;
+B9F9;B9F9;1106 1162 11BC;B9F9;1106 1162 11BC;
+B9FA;B9FA;1106 1162 11BD;B9FA;1106 1162 11BD;
+B9FB;B9FB;1106 1162 11BE;B9FB;1106 1162 11BE;
+B9FC;B9FC;1106 1162 11BF;B9FC;1106 1162 11BF;
+B9FD;B9FD;1106 1162 11C0;B9FD;1106 1162 11C0;
+B9FE;B9FE;1106 1162 11C1;B9FE;1106 1162 11C1;
+B9FF;B9FF;1106 1162 11C2;B9FF;1106 1162 11C2;
+BA00;BA00;1106 1163;BA00;1106 1163;
+BA01;BA01;1106 1163 11A8;BA01;1106 1163 11A8;
+BA02;BA02;1106 1163 11A9;BA02;1106 1163 11A9;
+BA03;BA03;1106 1163 11AA;BA03;1106 1163 11AA;
+BA04;BA04;1106 1163 11AB;BA04;1106 1163 11AB;
+BA05;BA05;1106 1163 11AC;BA05;1106 1163 11AC;
+BA06;BA06;1106 1163 11AD;BA06;1106 1163 11AD;
+BA07;BA07;1106 1163 11AE;BA07;1106 1163 11AE;
+BA08;BA08;1106 1163 11AF;BA08;1106 1163 11AF;
+BA09;BA09;1106 1163 11B0;BA09;1106 1163 11B0;
+BA0A;BA0A;1106 1163 11B1;BA0A;1106 1163 11B1;
+BA0B;BA0B;1106 1163 11B2;BA0B;1106 1163 11B2;
+BA0C;BA0C;1106 1163 11B3;BA0C;1106 1163 11B3;
+BA0D;BA0D;1106 1163 11B4;BA0D;1106 1163 11B4;
+BA0E;BA0E;1106 1163 11B5;BA0E;1106 1163 11B5;
+BA0F;BA0F;1106 1163 11B6;BA0F;1106 1163 11B6;
+BA10;BA10;1106 1163 11B7;BA10;1106 1163 11B7;
+BA11;BA11;1106 1163 11B8;BA11;1106 1163 11B8;
+BA12;BA12;1106 1163 11B9;BA12;1106 1163 11B9;
+BA13;BA13;1106 1163 11BA;BA13;1106 1163 11BA;
+BA14;BA14;1106 1163 11BB;BA14;1106 1163 11BB;
+BA15;BA15;1106 1163 11BC;BA15;1106 1163 11BC;
+BA16;BA16;1106 1163 11BD;BA16;1106 1163 11BD;
+BA17;BA17;1106 1163 11BE;BA17;1106 1163 11BE;
+BA18;BA18;1106 1163 11BF;BA18;1106 1163 11BF;
+BA19;BA19;1106 1163 11C0;BA19;1106 1163 11C0;
+BA1A;BA1A;1106 1163 11C1;BA1A;1106 1163 11C1;
+BA1B;BA1B;1106 1163 11C2;BA1B;1106 1163 11C2;
+BA1C;BA1C;1106 1164;BA1C;1106 1164;
+BA1D;BA1D;1106 1164 11A8;BA1D;1106 1164 11A8;
+BA1E;BA1E;1106 1164 11A9;BA1E;1106 1164 11A9;
+BA1F;BA1F;1106 1164 11AA;BA1F;1106 1164 11AA;
+BA20;BA20;1106 1164 11AB;BA20;1106 1164 11AB;
+BA21;BA21;1106 1164 11AC;BA21;1106 1164 11AC;
+BA22;BA22;1106 1164 11AD;BA22;1106 1164 11AD;
+BA23;BA23;1106 1164 11AE;BA23;1106 1164 11AE;
+BA24;BA24;1106 1164 11AF;BA24;1106 1164 11AF;
+BA25;BA25;1106 1164 11B0;BA25;1106 1164 11B0;
+BA26;BA26;1106 1164 11B1;BA26;1106 1164 11B1;
+BA27;BA27;1106 1164 11B2;BA27;1106 1164 11B2;
+BA28;BA28;1106 1164 11B3;BA28;1106 1164 11B3;
+BA29;BA29;1106 1164 11B4;BA29;1106 1164 11B4;
+BA2A;BA2A;1106 1164 11B5;BA2A;1106 1164 11B5;
+BA2B;BA2B;1106 1164 11B6;BA2B;1106 1164 11B6;
+BA2C;BA2C;1106 1164 11B7;BA2C;1106 1164 11B7;
+BA2D;BA2D;1106 1164 11B8;BA2D;1106 1164 11B8;
+BA2E;BA2E;1106 1164 11B9;BA2E;1106 1164 11B9;
+BA2F;BA2F;1106 1164 11BA;BA2F;1106 1164 11BA;
+BA30;BA30;1106 1164 11BB;BA30;1106 1164 11BB;
+BA31;BA31;1106 1164 11BC;BA31;1106 1164 11BC;
+BA32;BA32;1106 1164 11BD;BA32;1106 1164 11BD;
+BA33;BA33;1106 1164 11BE;BA33;1106 1164 11BE;
+BA34;BA34;1106 1164 11BF;BA34;1106 1164 11BF;
+BA35;BA35;1106 1164 11C0;BA35;1106 1164 11C0;
+BA36;BA36;1106 1164 11C1;BA36;1106 1164 11C1;
+BA37;BA37;1106 1164 11C2;BA37;1106 1164 11C2;
+BA38;BA38;1106 1165;BA38;1106 1165;
+BA39;BA39;1106 1165 11A8;BA39;1106 1165 11A8;
+BA3A;BA3A;1106 1165 11A9;BA3A;1106 1165 11A9;
+BA3B;BA3B;1106 1165 11AA;BA3B;1106 1165 11AA;
+BA3C;BA3C;1106 1165 11AB;BA3C;1106 1165 11AB;
+BA3D;BA3D;1106 1165 11AC;BA3D;1106 1165 11AC;
+BA3E;BA3E;1106 1165 11AD;BA3E;1106 1165 11AD;
+BA3F;BA3F;1106 1165 11AE;BA3F;1106 1165 11AE;
+BA40;BA40;1106 1165 11AF;BA40;1106 1165 11AF;
+BA41;BA41;1106 1165 11B0;BA41;1106 1165 11B0;
+BA42;BA42;1106 1165 11B1;BA42;1106 1165 11B1;
+BA43;BA43;1106 1165 11B2;BA43;1106 1165 11B2;
+BA44;BA44;1106 1165 11B3;BA44;1106 1165 11B3;
+BA45;BA45;1106 1165 11B4;BA45;1106 1165 11B4;
+BA46;BA46;1106 1165 11B5;BA46;1106 1165 11B5;
+BA47;BA47;1106 1165 11B6;BA47;1106 1165 11B6;
+BA48;BA48;1106 1165 11B7;BA48;1106 1165 11B7;
+BA49;BA49;1106 1165 11B8;BA49;1106 1165 11B8;
+BA4A;BA4A;1106 1165 11B9;BA4A;1106 1165 11B9;
+BA4B;BA4B;1106 1165 11BA;BA4B;1106 1165 11BA;
+BA4C;BA4C;1106 1165 11BB;BA4C;1106 1165 11BB;
+BA4D;BA4D;1106 1165 11BC;BA4D;1106 1165 11BC;
+BA4E;BA4E;1106 1165 11BD;BA4E;1106 1165 11BD;
+BA4F;BA4F;1106 1165 11BE;BA4F;1106 1165 11BE;
+BA50;BA50;1106 1165 11BF;BA50;1106 1165 11BF;
+BA51;BA51;1106 1165 11C0;BA51;1106 1165 11C0;
+BA52;BA52;1106 1165 11C1;BA52;1106 1165 11C1;
+BA53;BA53;1106 1165 11C2;BA53;1106 1165 11C2;
+BA54;BA54;1106 1166;BA54;1106 1166;
+BA55;BA55;1106 1166 11A8;BA55;1106 1166 11A8;
+BA56;BA56;1106 1166 11A9;BA56;1106 1166 11A9;
+BA57;BA57;1106 1166 11AA;BA57;1106 1166 11AA;
+BA58;BA58;1106 1166 11AB;BA58;1106 1166 11AB;
+BA59;BA59;1106 1166 11AC;BA59;1106 1166 11AC;
+BA5A;BA5A;1106 1166 11AD;BA5A;1106 1166 11AD;
+BA5B;BA5B;1106 1166 11AE;BA5B;1106 1166 11AE;
+BA5C;BA5C;1106 1166 11AF;BA5C;1106 1166 11AF;
+BA5D;BA5D;1106 1166 11B0;BA5D;1106 1166 11B0;
+BA5E;BA5E;1106 1166 11B1;BA5E;1106 1166 11B1;
+BA5F;BA5F;1106 1166 11B2;BA5F;1106 1166 11B2;
+BA60;BA60;1106 1166 11B3;BA60;1106 1166 11B3;
+BA61;BA61;1106 1166 11B4;BA61;1106 1166 11B4;
+BA62;BA62;1106 1166 11B5;BA62;1106 1166 11B5;
+BA63;BA63;1106 1166 11B6;BA63;1106 1166 11B6;
+BA64;BA64;1106 1166 11B7;BA64;1106 1166 11B7;
+BA65;BA65;1106 1166 11B8;BA65;1106 1166 11B8;
+BA66;BA66;1106 1166 11B9;BA66;1106 1166 11B9;
+BA67;BA67;1106 1166 11BA;BA67;1106 1166 11BA;
+BA68;BA68;1106 1166 11BB;BA68;1106 1166 11BB;
+BA69;BA69;1106 1166 11BC;BA69;1106 1166 11BC;
+BA6A;BA6A;1106 1166 11BD;BA6A;1106 1166 11BD;
+BA6B;BA6B;1106 1166 11BE;BA6B;1106 1166 11BE;
+BA6C;BA6C;1106 1166 11BF;BA6C;1106 1166 11BF;
+BA6D;BA6D;1106 1166 11C0;BA6D;1106 1166 11C0;
+BA6E;BA6E;1106 1166 11C1;BA6E;1106 1166 11C1;
+BA6F;BA6F;1106 1166 11C2;BA6F;1106 1166 11C2;
+BA70;BA70;1106 1167;BA70;1106 1167;
+BA71;BA71;1106 1167 11A8;BA71;1106 1167 11A8;
+BA72;BA72;1106 1167 11A9;BA72;1106 1167 11A9;
+BA73;BA73;1106 1167 11AA;BA73;1106 1167 11AA;
+BA74;BA74;1106 1167 11AB;BA74;1106 1167 11AB;
+BA75;BA75;1106 1167 11AC;BA75;1106 1167 11AC;
+BA76;BA76;1106 1167 11AD;BA76;1106 1167 11AD;
+BA77;BA77;1106 1167 11AE;BA77;1106 1167 11AE;
+BA78;BA78;1106 1167 11AF;BA78;1106 1167 11AF;
+BA79;BA79;1106 1167 11B0;BA79;1106 1167 11B0;
+BA7A;BA7A;1106 1167 11B1;BA7A;1106 1167 11B1;
+BA7B;BA7B;1106 1167 11B2;BA7B;1106 1167 11B2;
+BA7C;BA7C;1106 1167 11B3;BA7C;1106 1167 11B3;
+BA7D;BA7D;1106 1167 11B4;BA7D;1106 1167 11B4;
+BA7E;BA7E;1106 1167 11B5;BA7E;1106 1167 11B5;
+BA7F;BA7F;1106 1167 11B6;BA7F;1106 1167 11B6;
+BA80;BA80;1106 1167 11B7;BA80;1106 1167 11B7;
+BA81;BA81;1106 1167 11B8;BA81;1106 1167 11B8;
+BA82;BA82;1106 1167 11B9;BA82;1106 1167 11B9;
+BA83;BA83;1106 1167 11BA;BA83;1106 1167 11BA;
+BA84;BA84;1106 1167 11BB;BA84;1106 1167 11BB;
+BA85;BA85;1106 1167 11BC;BA85;1106 1167 11BC;
+BA86;BA86;1106 1167 11BD;BA86;1106 1167 11BD;
+BA87;BA87;1106 1167 11BE;BA87;1106 1167 11BE;
+BA88;BA88;1106 1167 11BF;BA88;1106 1167 11BF;
+BA89;BA89;1106 1167 11C0;BA89;1106 1167 11C0;
+BA8A;BA8A;1106 1167 11C1;BA8A;1106 1167 11C1;
+BA8B;BA8B;1106 1167 11C2;BA8B;1106 1167 11C2;
+BA8C;BA8C;1106 1168;BA8C;1106 1168;
+BA8D;BA8D;1106 1168 11A8;BA8D;1106 1168 11A8;
+BA8E;BA8E;1106 1168 11A9;BA8E;1106 1168 11A9;
+BA8F;BA8F;1106 1168 11AA;BA8F;1106 1168 11AA;
+BA90;BA90;1106 1168 11AB;BA90;1106 1168 11AB;
+BA91;BA91;1106 1168 11AC;BA91;1106 1168 11AC;
+BA92;BA92;1106 1168 11AD;BA92;1106 1168 11AD;
+BA93;BA93;1106 1168 11AE;BA93;1106 1168 11AE;
+BA94;BA94;1106 1168 11AF;BA94;1106 1168 11AF;
+BA95;BA95;1106 1168 11B0;BA95;1106 1168 11B0;
+BA96;BA96;1106 1168 11B1;BA96;1106 1168 11B1;
+BA97;BA97;1106 1168 11B2;BA97;1106 1168 11B2;
+BA98;BA98;1106 1168 11B3;BA98;1106 1168 11B3;
+BA99;BA99;1106 1168 11B4;BA99;1106 1168 11B4;
+BA9A;BA9A;1106 1168 11B5;BA9A;1106 1168 11B5;
+BA9B;BA9B;1106 1168 11B6;BA9B;1106 1168 11B6;
+BA9C;BA9C;1106 1168 11B7;BA9C;1106 1168 11B7;
+BA9D;BA9D;1106 1168 11B8;BA9D;1106 1168 11B8;
+BA9E;BA9E;1106 1168 11B9;BA9E;1106 1168 11B9;
+BA9F;BA9F;1106 1168 11BA;BA9F;1106 1168 11BA;
+BAA0;BAA0;1106 1168 11BB;BAA0;1106 1168 11BB;
+BAA1;BAA1;1106 1168 11BC;BAA1;1106 1168 11BC;
+BAA2;BAA2;1106 1168 11BD;BAA2;1106 1168 11BD;
+BAA3;BAA3;1106 1168 11BE;BAA3;1106 1168 11BE;
+BAA4;BAA4;1106 1168 11BF;BAA4;1106 1168 11BF;
+BAA5;BAA5;1106 1168 11C0;BAA5;1106 1168 11C0;
+BAA6;BAA6;1106 1168 11C1;BAA6;1106 1168 11C1;
+BAA7;BAA7;1106 1168 11C2;BAA7;1106 1168 11C2;
+BAA8;BAA8;1106 1169;BAA8;1106 1169;
+BAA9;BAA9;1106 1169 11A8;BAA9;1106 1169 11A8;
+BAAA;BAAA;1106 1169 11A9;BAAA;1106 1169 11A9;
+BAAB;BAAB;1106 1169 11AA;BAAB;1106 1169 11AA;
+BAAC;BAAC;1106 1169 11AB;BAAC;1106 1169 11AB;
+BAAD;BAAD;1106 1169 11AC;BAAD;1106 1169 11AC;
+BAAE;BAAE;1106 1169 11AD;BAAE;1106 1169 11AD;
+BAAF;BAAF;1106 1169 11AE;BAAF;1106 1169 11AE;
+BAB0;BAB0;1106 1169 11AF;BAB0;1106 1169 11AF;
+BAB1;BAB1;1106 1169 11B0;BAB1;1106 1169 11B0;
+BAB2;BAB2;1106 1169 11B1;BAB2;1106 1169 11B1;
+BAB3;BAB3;1106 1169 11B2;BAB3;1106 1169 11B2;
+BAB4;BAB4;1106 1169 11B3;BAB4;1106 1169 11B3;
+BAB5;BAB5;1106 1169 11B4;BAB5;1106 1169 11B4;
+BAB6;BAB6;1106 1169 11B5;BAB6;1106 1169 11B5;
+BAB7;BAB7;1106 1169 11B6;BAB7;1106 1169 11B6;
+BAB8;BAB8;1106 1169 11B7;BAB8;1106 1169 11B7;
+BAB9;BAB9;1106 1169 11B8;BAB9;1106 1169 11B8;
+BABA;BABA;1106 1169 11B9;BABA;1106 1169 11B9;
+BABB;BABB;1106 1169 11BA;BABB;1106 1169 11BA;
+BABC;BABC;1106 1169 11BB;BABC;1106 1169 11BB;
+BABD;BABD;1106 1169 11BC;BABD;1106 1169 11BC;
+BABE;BABE;1106 1169 11BD;BABE;1106 1169 11BD;
+BABF;BABF;1106 1169 11BE;BABF;1106 1169 11BE;
+BAC0;BAC0;1106 1169 11BF;BAC0;1106 1169 11BF;
+BAC1;BAC1;1106 1169 11C0;BAC1;1106 1169 11C0;
+BAC2;BAC2;1106 1169 11C1;BAC2;1106 1169 11C1;
+BAC3;BAC3;1106 1169 11C2;BAC3;1106 1169 11C2;
+BAC4;BAC4;1106 116A;BAC4;1106 116A;
+BAC5;BAC5;1106 116A 11A8;BAC5;1106 116A 11A8;
+BAC6;BAC6;1106 116A 11A9;BAC6;1106 116A 11A9;
+BAC7;BAC7;1106 116A 11AA;BAC7;1106 116A 11AA;
+BAC8;BAC8;1106 116A 11AB;BAC8;1106 116A 11AB;
+BAC9;BAC9;1106 116A 11AC;BAC9;1106 116A 11AC;
+BACA;BACA;1106 116A 11AD;BACA;1106 116A 11AD;
+BACB;BACB;1106 116A 11AE;BACB;1106 116A 11AE;
+BACC;BACC;1106 116A 11AF;BACC;1106 116A 11AF;
+BACD;BACD;1106 116A 11B0;BACD;1106 116A 11B0;
+BACE;BACE;1106 116A 11B1;BACE;1106 116A 11B1;
+BACF;BACF;1106 116A 11B2;BACF;1106 116A 11B2;
+BAD0;BAD0;1106 116A 11B3;BAD0;1106 116A 11B3;
+BAD1;BAD1;1106 116A 11B4;BAD1;1106 116A 11B4;
+BAD2;BAD2;1106 116A 11B5;BAD2;1106 116A 11B5;
+BAD3;BAD3;1106 116A 11B6;BAD3;1106 116A 11B6;
+BAD4;BAD4;1106 116A 11B7;BAD4;1106 116A 11B7;
+BAD5;BAD5;1106 116A 11B8;BAD5;1106 116A 11B8;
+BAD6;BAD6;1106 116A 11B9;BAD6;1106 116A 11B9;
+BAD7;BAD7;1106 116A 11BA;BAD7;1106 116A 11BA;
+BAD8;BAD8;1106 116A 11BB;BAD8;1106 116A 11BB;
+BAD9;BAD9;1106 116A 11BC;BAD9;1106 116A 11BC;
+BADA;BADA;1106 116A 11BD;BADA;1106 116A 11BD;
+BADB;BADB;1106 116A 11BE;BADB;1106 116A 11BE;
+BADC;BADC;1106 116A 11BF;BADC;1106 116A 11BF;
+BADD;BADD;1106 116A 11C0;BADD;1106 116A 11C0;
+BADE;BADE;1106 116A 11C1;BADE;1106 116A 11C1;
+BADF;BADF;1106 116A 11C2;BADF;1106 116A 11C2;
+BAE0;BAE0;1106 116B;BAE0;1106 116B;
+BAE1;BAE1;1106 116B 11A8;BAE1;1106 116B 11A8;
+BAE2;BAE2;1106 116B 11A9;BAE2;1106 116B 11A9;
+BAE3;BAE3;1106 116B 11AA;BAE3;1106 116B 11AA;
+BAE4;BAE4;1106 116B 11AB;BAE4;1106 116B 11AB;
+BAE5;BAE5;1106 116B 11AC;BAE5;1106 116B 11AC;
+BAE6;BAE6;1106 116B 11AD;BAE6;1106 116B 11AD;
+BAE7;BAE7;1106 116B 11AE;BAE7;1106 116B 11AE;
+BAE8;BAE8;1106 116B 11AF;BAE8;1106 116B 11AF;
+BAE9;BAE9;1106 116B 11B0;BAE9;1106 116B 11B0;
+BAEA;BAEA;1106 116B 11B1;BAEA;1106 116B 11B1;
+BAEB;BAEB;1106 116B 11B2;BAEB;1106 116B 11B2;
+BAEC;BAEC;1106 116B 11B3;BAEC;1106 116B 11B3;
+BAED;BAED;1106 116B 11B4;BAED;1106 116B 11B4;
+BAEE;BAEE;1106 116B 11B5;BAEE;1106 116B 11B5;
+BAEF;BAEF;1106 116B 11B6;BAEF;1106 116B 11B6;
+BAF0;BAF0;1106 116B 11B7;BAF0;1106 116B 11B7;
+BAF1;BAF1;1106 116B 11B8;BAF1;1106 116B 11B8;
+BAF2;BAF2;1106 116B 11B9;BAF2;1106 116B 11B9;
+BAF3;BAF3;1106 116B 11BA;BAF3;1106 116B 11BA;
+BAF4;BAF4;1106 116B 11BB;BAF4;1106 116B 11BB;
+BAF5;BAF5;1106 116B 11BC;BAF5;1106 116B 11BC;
+BAF6;BAF6;1106 116B 11BD;BAF6;1106 116B 11BD;
+BAF7;BAF7;1106 116B 11BE;BAF7;1106 116B 11BE;
+BAF8;BAF8;1106 116B 11BF;BAF8;1106 116B 11BF;
+BAF9;BAF9;1106 116B 11C0;BAF9;1106 116B 11C0;
+BAFA;BAFA;1106 116B 11C1;BAFA;1106 116B 11C1;
+BAFB;BAFB;1106 116B 11C2;BAFB;1106 116B 11C2;
+BAFC;BAFC;1106 116C;BAFC;1106 116C;
+BAFD;BAFD;1106 116C 11A8;BAFD;1106 116C 11A8;
+BAFE;BAFE;1106 116C 11A9;BAFE;1106 116C 11A9;
+BAFF;BAFF;1106 116C 11AA;BAFF;1106 116C 11AA;
+BB00;BB00;1106 116C 11AB;BB00;1106 116C 11AB;
+BB01;BB01;1106 116C 11AC;BB01;1106 116C 11AC;
+BB02;BB02;1106 116C 11AD;BB02;1106 116C 11AD;
+BB03;BB03;1106 116C 11AE;BB03;1106 116C 11AE;
+BB04;BB04;1106 116C 11AF;BB04;1106 116C 11AF;
+BB05;BB05;1106 116C 11B0;BB05;1106 116C 11B0;
+BB06;BB06;1106 116C 11B1;BB06;1106 116C 11B1;
+BB07;BB07;1106 116C 11B2;BB07;1106 116C 11B2;
+BB08;BB08;1106 116C 11B3;BB08;1106 116C 11B3;
+BB09;BB09;1106 116C 11B4;BB09;1106 116C 11B4;
+BB0A;BB0A;1106 116C 11B5;BB0A;1106 116C 11B5;
+BB0B;BB0B;1106 116C 11B6;BB0B;1106 116C 11B6;
+BB0C;BB0C;1106 116C 11B7;BB0C;1106 116C 11B7;
+BB0D;BB0D;1106 116C 11B8;BB0D;1106 116C 11B8;
+BB0E;BB0E;1106 116C 11B9;BB0E;1106 116C 11B9;
+BB0F;BB0F;1106 116C 11BA;BB0F;1106 116C 11BA;
+BB10;BB10;1106 116C 11BB;BB10;1106 116C 11BB;
+BB11;BB11;1106 116C 11BC;BB11;1106 116C 11BC;
+BB12;BB12;1106 116C 11BD;BB12;1106 116C 11BD;
+BB13;BB13;1106 116C 11BE;BB13;1106 116C 11BE;
+BB14;BB14;1106 116C 11BF;BB14;1106 116C 11BF;
+BB15;BB15;1106 116C 11C0;BB15;1106 116C 11C0;
+BB16;BB16;1106 116C 11C1;BB16;1106 116C 11C1;
+BB17;BB17;1106 116C 11C2;BB17;1106 116C 11C2;
+BB18;BB18;1106 116D;BB18;1106 116D;
+BB19;BB19;1106 116D 11A8;BB19;1106 116D 11A8;
+BB1A;BB1A;1106 116D 11A9;BB1A;1106 116D 11A9;
+BB1B;BB1B;1106 116D 11AA;BB1B;1106 116D 11AA;
+BB1C;BB1C;1106 116D 11AB;BB1C;1106 116D 11AB;
+BB1D;BB1D;1106 116D 11AC;BB1D;1106 116D 11AC;
+BB1E;BB1E;1106 116D 11AD;BB1E;1106 116D 11AD;
+BB1F;BB1F;1106 116D 11AE;BB1F;1106 116D 11AE;
+BB20;BB20;1106 116D 11AF;BB20;1106 116D 11AF;
+BB21;BB21;1106 116D 11B0;BB21;1106 116D 11B0;
+BB22;BB22;1106 116D 11B1;BB22;1106 116D 11B1;
+BB23;BB23;1106 116D 11B2;BB23;1106 116D 11B2;
+BB24;BB24;1106 116D 11B3;BB24;1106 116D 11B3;
+BB25;BB25;1106 116D 11B4;BB25;1106 116D 11B4;
+BB26;BB26;1106 116D 11B5;BB26;1106 116D 11B5;
+BB27;BB27;1106 116D 11B6;BB27;1106 116D 11B6;
+BB28;BB28;1106 116D 11B7;BB28;1106 116D 11B7;
+BB29;BB29;1106 116D 11B8;BB29;1106 116D 11B8;
+BB2A;BB2A;1106 116D 11B9;BB2A;1106 116D 11B9;
+BB2B;BB2B;1106 116D 11BA;BB2B;1106 116D 11BA;
+BB2C;BB2C;1106 116D 11BB;BB2C;1106 116D 11BB;
+BB2D;BB2D;1106 116D 11BC;BB2D;1106 116D 11BC;
+BB2E;BB2E;1106 116D 11BD;BB2E;1106 116D 11BD;
+BB2F;BB2F;1106 116D 11BE;BB2F;1106 116D 11BE;
+BB30;BB30;1106 116D 11BF;BB30;1106 116D 11BF;
+BB31;BB31;1106 116D 11C0;BB31;1106 116D 11C0;
+BB32;BB32;1106 116D 11C1;BB32;1106 116D 11C1;
+BB33;BB33;1106 116D 11C2;BB33;1106 116D 11C2;
+BB34;BB34;1106 116E;BB34;1106 116E;
+BB35;BB35;1106 116E 11A8;BB35;1106 116E 11A8;
+BB36;BB36;1106 116E 11A9;BB36;1106 116E 11A9;
+BB37;BB37;1106 116E 11AA;BB37;1106 116E 11AA;
+BB38;BB38;1106 116E 11AB;BB38;1106 116E 11AB;
+BB39;BB39;1106 116E 11AC;BB39;1106 116E 11AC;
+BB3A;BB3A;1106 116E 11AD;BB3A;1106 116E 11AD;
+BB3B;BB3B;1106 116E 11AE;BB3B;1106 116E 11AE;
+BB3C;BB3C;1106 116E 11AF;BB3C;1106 116E 11AF;
+BB3D;BB3D;1106 116E 11B0;BB3D;1106 116E 11B0;
+BB3E;BB3E;1106 116E 11B1;BB3E;1106 116E 11B1;
+BB3F;BB3F;1106 116E 11B2;BB3F;1106 116E 11B2;
+BB40;BB40;1106 116E 11B3;BB40;1106 116E 11B3;
+BB41;BB41;1106 116E 11B4;BB41;1106 116E 11B4;
+BB42;BB42;1106 116E 11B5;BB42;1106 116E 11B5;
+BB43;BB43;1106 116E 11B6;BB43;1106 116E 11B6;
+BB44;BB44;1106 116E 11B7;BB44;1106 116E 11B7;
+BB45;BB45;1106 116E 11B8;BB45;1106 116E 11B8;
+BB46;BB46;1106 116E 11B9;BB46;1106 116E 11B9;
+BB47;BB47;1106 116E 11BA;BB47;1106 116E 11BA;
+BB48;BB48;1106 116E 11BB;BB48;1106 116E 11BB;
+BB49;BB49;1106 116E 11BC;BB49;1106 116E 11BC;
+BB4A;BB4A;1106 116E 11BD;BB4A;1106 116E 11BD;
+BB4B;BB4B;1106 116E 11BE;BB4B;1106 116E 11BE;
+BB4C;BB4C;1106 116E 11BF;BB4C;1106 116E 11BF;
+BB4D;BB4D;1106 116E 11C0;BB4D;1106 116E 11C0;
+BB4E;BB4E;1106 116E 11C1;BB4E;1106 116E 11C1;
+BB4F;BB4F;1106 116E 11C2;BB4F;1106 116E 11C2;
+BB50;BB50;1106 116F;BB50;1106 116F;
+BB51;BB51;1106 116F 11A8;BB51;1106 116F 11A8;
+BB52;BB52;1106 116F 11A9;BB52;1106 116F 11A9;
+BB53;BB53;1106 116F 11AA;BB53;1106 116F 11AA;
+BB54;BB54;1106 116F 11AB;BB54;1106 116F 11AB;
+BB55;BB55;1106 116F 11AC;BB55;1106 116F 11AC;
+BB56;BB56;1106 116F 11AD;BB56;1106 116F 11AD;
+BB57;BB57;1106 116F 11AE;BB57;1106 116F 11AE;
+BB58;BB58;1106 116F 11AF;BB58;1106 116F 11AF;
+BB59;BB59;1106 116F 11B0;BB59;1106 116F 11B0;
+BB5A;BB5A;1106 116F 11B1;BB5A;1106 116F 11B1;
+BB5B;BB5B;1106 116F 11B2;BB5B;1106 116F 11B2;
+BB5C;BB5C;1106 116F 11B3;BB5C;1106 116F 11B3;
+BB5D;BB5D;1106 116F 11B4;BB5D;1106 116F 11B4;
+BB5E;BB5E;1106 116F 11B5;BB5E;1106 116F 11B5;
+BB5F;BB5F;1106 116F 11B6;BB5F;1106 116F 11B6;
+BB60;BB60;1106 116F 11B7;BB60;1106 116F 11B7;
+BB61;BB61;1106 116F 11B8;BB61;1106 116F 11B8;
+BB62;BB62;1106 116F 11B9;BB62;1106 116F 11B9;
+BB63;BB63;1106 116F 11BA;BB63;1106 116F 11BA;
+BB64;BB64;1106 116F 11BB;BB64;1106 116F 11BB;
+BB65;BB65;1106 116F 11BC;BB65;1106 116F 11BC;
+BB66;BB66;1106 116F 11BD;BB66;1106 116F 11BD;
+BB67;BB67;1106 116F 11BE;BB67;1106 116F 11BE;
+BB68;BB68;1106 116F 11BF;BB68;1106 116F 11BF;
+BB69;BB69;1106 116F 11C0;BB69;1106 116F 11C0;
+BB6A;BB6A;1106 116F 11C1;BB6A;1106 116F 11C1;
+BB6B;BB6B;1106 116F 11C2;BB6B;1106 116F 11C2;
+BB6C;BB6C;1106 1170;BB6C;1106 1170;
+BB6D;BB6D;1106 1170 11A8;BB6D;1106 1170 11A8;
+BB6E;BB6E;1106 1170 11A9;BB6E;1106 1170 11A9;
+BB6F;BB6F;1106 1170 11AA;BB6F;1106 1170 11AA;
+BB70;BB70;1106 1170 11AB;BB70;1106 1170 11AB;
+BB71;BB71;1106 1170 11AC;BB71;1106 1170 11AC;
+BB72;BB72;1106 1170 11AD;BB72;1106 1170 11AD;
+BB73;BB73;1106 1170 11AE;BB73;1106 1170 11AE;
+BB74;BB74;1106 1170 11AF;BB74;1106 1170 11AF;
+BB75;BB75;1106 1170 11B0;BB75;1106 1170 11B0;
+BB76;BB76;1106 1170 11B1;BB76;1106 1170 11B1;
+BB77;BB77;1106 1170 11B2;BB77;1106 1170 11B2;
+BB78;BB78;1106 1170 11B3;BB78;1106 1170 11B3;
+BB79;BB79;1106 1170 11B4;BB79;1106 1170 11B4;
+BB7A;BB7A;1106 1170 11B5;BB7A;1106 1170 11B5;
+BB7B;BB7B;1106 1170 11B6;BB7B;1106 1170 11B6;
+BB7C;BB7C;1106 1170 11B7;BB7C;1106 1170 11B7;
+BB7D;BB7D;1106 1170 11B8;BB7D;1106 1170 11B8;
+BB7E;BB7E;1106 1170 11B9;BB7E;1106 1170 11B9;
+BB7F;BB7F;1106 1170 11BA;BB7F;1106 1170 11BA;
+BB80;BB80;1106 1170 11BB;BB80;1106 1170 11BB;
+BB81;BB81;1106 1170 11BC;BB81;1106 1170 11BC;
+BB82;BB82;1106 1170 11BD;BB82;1106 1170 11BD;
+BB83;BB83;1106 1170 11BE;BB83;1106 1170 11BE;
+BB84;BB84;1106 1170 11BF;BB84;1106 1170 11BF;
+BB85;BB85;1106 1170 11C0;BB85;1106 1170 11C0;
+BB86;BB86;1106 1170 11C1;BB86;1106 1170 11C1;
+BB87;BB87;1106 1170 11C2;BB87;1106 1170 11C2;
+BB88;BB88;1106 1171;BB88;1106 1171;
+BB89;BB89;1106 1171 11A8;BB89;1106 1171 11A8;
+BB8A;BB8A;1106 1171 11A9;BB8A;1106 1171 11A9;
+BB8B;BB8B;1106 1171 11AA;BB8B;1106 1171 11AA;
+BB8C;BB8C;1106 1171 11AB;BB8C;1106 1171 11AB;
+BB8D;BB8D;1106 1171 11AC;BB8D;1106 1171 11AC;
+BB8E;BB8E;1106 1171 11AD;BB8E;1106 1171 11AD;
+BB8F;BB8F;1106 1171 11AE;BB8F;1106 1171 11AE;
+BB90;BB90;1106 1171 11AF;BB90;1106 1171 11AF;
+BB91;BB91;1106 1171 11B0;BB91;1106 1171 11B0;
+BB92;BB92;1106 1171 11B1;BB92;1106 1171 11B1;
+BB93;BB93;1106 1171 11B2;BB93;1106 1171 11B2;
+BB94;BB94;1106 1171 11B3;BB94;1106 1171 11B3;
+BB95;BB95;1106 1171 11B4;BB95;1106 1171 11B4;
+BB96;BB96;1106 1171 11B5;BB96;1106 1171 11B5;
+BB97;BB97;1106 1171 11B6;BB97;1106 1171 11B6;
+BB98;BB98;1106 1171 11B7;BB98;1106 1171 11B7;
+BB99;BB99;1106 1171 11B8;BB99;1106 1171 11B8;
+BB9A;BB9A;1106 1171 11B9;BB9A;1106 1171 11B9;
+BB9B;BB9B;1106 1171 11BA;BB9B;1106 1171 11BA;
+BB9C;BB9C;1106 1171 11BB;BB9C;1106 1171 11BB;
+BB9D;BB9D;1106 1171 11BC;BB9D;1106 1171 11BC;
+BB9E;BB9E;1106 1171 11BD;BB9E;1106 1171 11BD;
+BB9F;BB9F;1106 1171 11BE;BB9F;1106 1171 11BE;
+BBA0;BBA0;1106 1171 11BF;BBA0;1106 1171 11BF;
+BBA1;BBA1;1106 1171 11C0;BBA1;1106 1171 11C0;
+BBA2;BBA2;1106 1171 11C1;BBA2;1106 1171 11C1;
+BBA3;BBA3;1106 1171 11C2;BBA3;1106 1171 11C2;
+BBA4;BBA4;1106 1172;BBA4;1106 1172;
+BBA5;BBA5;1106 1172 11A8;BBA5;1106 1172 11A8;
+BBA6;BBA6;1106 1172 11A9;BBA6;1106 1172 11A9;
+BBA7;BBA7;1106 1172 11AA;BBA7;1106 1172 11AA;
+BBA8;BBA8;1106 1172 11AB;BBA8;1106 1172 11AB;
+BBA9;BBA9;1106 1172 11AC;BBA9;1106 1172 11AC;
+BBAA;BBAA;1106 1172 11AD;BBAA;1106 1172 11AD;
+BBAB;BBAB;1106 1172 11AE;BBAB;1106 1172 11AE;
+BBAC;BBAC;1106 1172 11AF;BBAC;1106 1172 11AF;
+BBAD;BBAD;1106 1172 11B0;BBAD;1106 1172 11B0;
+BBAE;BBAE;1106 1172 11B1;BBAE;1106 1172 11B1;
+BBAF;BBAF;1106 1172 11B2;BBAF;1106 1172 11B2;
+BBB0;BBB0;1106 1172 11B3;BBB0;1106 1172 11B3;
+BBB1;BBB1;1106 1172 11B4;BBB1;1106 1172 11B4;
+BBB2;BBB2;1106 1172 11B5;BBB2;1106 1172 11B5;
+BBB3;BBB3;1106 1172 11B6;BBB3;1106 1172 11B6;
+BBB4;BBB4;1106 1172 11B7;BBB4;1106 1172 11B7;
+BBB5;BBB5;1106 1172 11B8;BBB5;1106 1172 11B8;
+BBB6;BBB6;1106 1172 11B9;BBB6;1106 1172 11B9;
+BBB7;BBB7;1106 1172 11BA;BBB7;1106 1172 11BA;
+BBB8;BBB8;1106 1172 11BB;BBB8;1106 1172 11BB;
+BBB9;BBB9;1106 1172 11BC;BBB9;1106 1172 11BC;
+BBBA;BBBA;1106 1172 11BD;BBBA;1106 1172 11BD;
+BBBB;BBBB;1106 1172 11BE;BBBB;1106 1172 11BE;
+BBBC;BBBC;1106 1172 11BF;BBBC;1106 1172 11BF;
+BBBD;BBBD;1106 1172 11C0;BBBD;1106 1172 11C0;
+BBBE;BBBE;1106 1172 11C1;BBBE;1106 1172 11C1;
+BBBF;BBBF;1106 1172 11C2;BBBF;1106 1172 11C2;
+BBC0;BBC0;1106 1173;BBC0;1106 1173;
+BBC1;BBC1;1106 1173 11A8;BBC1;1106 1173 11A8;
+BBC2;BBC2;1106 1173 11A9;BBC2;1106 1173 11A9;
+BBC3;BBC3;1106 1173 11AA;BBC3;1106 1173 11AA;
+BBC4;BBC4;1106 1173 11AB;BBC4;1106 1173 11AB;
+BBC5;BBC5;1106 1173 11AC;BBC5;1106 1173 11AC;
+BBC6;BBC6;1106 1173 11AD;BBC6;1106 1173 11AD;
+BBC7;BBC7;1106 1173 11AE;BBC7;1106 1173 11AE;
+BBC8;BBC8;1106 1173 11AF;BBC8;1106 1173 11AF;
+BBC9;BBC9;1106 1173 11B0;BBC9;1106 1173 11B0;
+BBCA;BBCA;1106 1173 11B1;BBCA;1106 1173 11B1;
+BBCB;BBCB;1106 1173 11B2;BBCB;1106 1173 11B2;
+BBCC;BBCC;1106 1173 11B3;BBCC;1106 1173 11B3;
+BBCD;BBCD;1106 1173 11B4;BBCD;1106 1173 11B4;
+BBCE;BBCE;1106 1173 11B5;BBCE;1106 1173 11B5;
+BBCF;BBCF;1106 1173 11B6;BBCF;1106 1173 11B6;
+BBD0;BBD0;1106 1173 11B7;BBD0;1106 1173 11B7;
+BBD1;BBD1;1106 1173 11B8;BBD1;1106 1173 11B8;
+BBD2;BBD2;1106 1173 11B9;BBD2;1106 1173 11B9;
+BBD3;BBD3;1106 1173 11BA;BBD3;1106 1173 11BA;
+BBD4;BBD4;1106 1173 11BB;BBD4;1106 1173 11BB;
+BBD5;BBD5;1106 1173 11BC;BBD5;1106 1173 11BC;
+BBD6;BBD6;1106 1173 11BD;BBD6;1106 1173 11BD;
+BBD7;BBD7;1106 1173 11BE;BBD7;1106 1173 11BE;
+BBD8;BBD8;1106 1173 11BF;BBD8;1106 1173 11BF;
+BBD9;BBD9;1106 1173 11C0;BBD9;1106 1173 11C0;
+BBDA;BBDA;1106 1173 11C1;BBDA;1106 1173 11C1;
+BBDB;BBDB;1106 1173 11C2;BBDB;1106 1173 11C2;
+BBDC;BBDC;1106 1174;BBDC;1106 1174;
+BBDD;BBDD;1106 1174 11A8;BBDD;1106 1174 11A8;
+BBDE;BBDE;1106 1174 11A9;BBDE;1106 1174 11A9;
+BBDF;BBDF;1106 1174 11AA;BBDF;1106 1174 11AA;
+BBE0;BBE0;1106 1174 11AB;BBE0;1106 1174 11AB;
+BBE1;BBE1;1106 1174 11AC;BBE1;1106 1174 11AC;
+BBE2;BBE2;1106 1174 11AD;BBE2;1106 1174 11AD;
+BBE3;BBE3;1106 1174 11AE;BBE3;1106 1174 11AE;
+BBE4;BBE4;1106 1174 11AF;BBE4;1106 1174 11AF;
+BBE5;BBE5;1106 1174 11B0;BBE5;1106 1174 11B0;
+BBE6;BBE6;1106 1174 11B1;BBE6;1106 1174 11B1;
+BBE7;BBE7;1106 1174 11B2;BBE7;1106 1174 11B2;
+BBE8;BBE8;1106 1174 11B3;BBE8;1106 1174 11B3;
+BBE9;BBE9;1106 1174 11B4;BBE9;1106 1174 11B4;
+BBEA;BBEA;1106 1174 11B5;BBEA;1106 1174 11B5;
+BBEB;BBEB;1106 1174 11B6;BBEB;1106 1174 11B6;
+BBEC;BBEC;1106 1174 11B7;BBEC;1106 1174 11B7;
+BBED;BBED;1106 1174 11B8;BBED;1106 1174 11B8;
+BBEE;BBEE;1106 1174 11B9;BBEE;1106 1174 11B9;
+BBEF;BBEF;1106 1174 11BA;BBEF;1106 1174 11BA;
+BBF0;BBF0;1106 1174 11BB;BBF0;1106 1174 11BB;
+BBF1;BBF1;1106 1174 11BC;BBF1;1106 1174 11BC;
+BBF2;BBF2;1106 1174 11BD;BBF2;1106 1174 11BD;
+BBF3;BBF3;1106 1174 11BE;BBF3;1106 1174 11BE;
+BBF4;BBF4;1106 1174 11BF;BBF4;1106 1174 11BF;
+BBF5;BBF5;1106 1174 11C0;BBF5;1106 1174 11C0;
+BBF6;BBF6;1106 1174 11C1;BBF6;1106 1174 11C1;
+BBF7;BBF7;1106 1174 11C2;BBF7;1106 1174 11C2;
+BBF8;BBF8;1106 1175;BBF8;1106 1175;
+BBF9;BBF9;1106 1175 11A8;BBF9;1106 1175 11A8;
+BBFA;BBFA;1106 1175 11A9;BBFA;1106 1175 11A9;
+BBFB;BBFB;1106 1175 11AA;BBFB;1106 1175 11AA;
+BBFC;BBFC;1106 1175 11AB;BBFC;1106 1175 11AB;
+BBFD;BBFD;1106 1175 11AC;BBFD;1106 1175 11AC;
+BBFE;BBFE;1106 1175 11AD;BBFE;1106 1175 11AD;
+BBFF;BBFF;1106 1175 11AE;BBFF;1106 1175 11AE;
+BC00;BC00;1106 1175 11AF;BC00;1106 1175 11AF;
+BC01;BC01;1106 1175 11B0;BC01;1106 1175 11B0;
+BC02;BC02;1106 1175 11B1;BC02;1106 1175 11B1;
+BC03;BC03;1106 1175 11B2;BC03;1106 1175 11B2;
+BC04;BC04;1106 1175 11B3;BC04;1106 1175 11B3;
+BC05;BC05;1106 1175 11B4;BC05;1106 1175 11B4;
+BC06;BC06;1106 1175 11B5;BC06;1106 1175 11B5;
+BC07;BC07;1106 1175 11B6;BC07;1106 1175 11B6;
+BC08;BC08;1106 1175 11B7;BC08;1106 1175 11B7;
+BC09;BC09;1106 1175 11B8;BC09;1106 1175 11B8;
+BC0A;BC0A;1106 1175 11B9;BC0A;1106 1175 11B9;
+BC0B;BC0B;1106 1175 11BA;BC0B;1106 1175 11BA;
+BC0C;BC0C;1106 1175 11BB;BC0C;1106 1175 11BB;
+BC0D;BC0D;1106 1175 11BC;BC0D;1106 1175 11BC;
+BC0E;BC0E;1106 1175 11BD;BC0E;1106 1175 11BD;
+BC0F;BC0F;1106 1175 11BE;BC0F;1106 1175 11BE;
+BC10;BC10;1106 1175 11BF;BC10;1106 1175 11BF;
+BC11;BC11;1106 1175 11C0;BC11;1106 1175 11C0;
+BC12;BC12;1106 1175 11C1;BC12;1106 1175 11C1;
+BC13;BC13;1106 1175 11C2;BC13;1106 1175 11C2;
+BC14;BC14;1107 1161;BC14;1107 1161;
+BC15;BC15;1107 1161 11A8;BC15;1107 1161 11A8;
+BC16;BC16;1107 1161 11A9;BC16;1107 1161 11A9;
+BC17;BC17;1107 1161 11AA;BC17;1107 1161 11AA;
+BC18;BC18;1107 1161 11AB;BC18;1107 1161 11AB;
+BC19;BC19;1107 1161 11AC;BC19;1107 1161 11AC;
+BC1A;BC1A;1107 1161 11AD;BC1A;1107 1161 11AD;
+BC1B;BC1B;1107 1161 11AE;BC1B;1107 1161 11AE;
+BC1C;BC1C;1107 1161 11AF;BC1C;1107 1161 11AF;
+BC1D;BC1D;1107 1161 11B0;BC1D;1107 1161 11B0;
+BC1E;BC1E;1107 1161 11B1;BC1E;1107 1161 11B1;
+BC1F;BC1F;1107 1161 11B2;BC1F;1107 1161 11B2;
+BC20;BC20;1107 1161 11B3;BC20;1107 1161 11B3;
+BC21;BC21;1107 1161 11B4;BC21;1107 1161 11B4;
+BC22;BC22;1107 1161 11B5;BC22;1107 1161 11B5;
+BC23;BC23;1107 1161 11B6;BC23;1107 1161 11B6;
+BC24;BC24;1107 1161 11B7;BC24;1107 1161 11B7;
+BC25;BC25;1107 1161 11B8;BC25;1107 1161 11B8;
+BC26;BC26;1107 1161 11B9;BC26;1107 1161 11B9;
+BC27;BC27;1107 1161 11BA;BC27;1107 1161 11BA;
+BC28;BC28;1107 1161 11BB;BC28;1107 1161 11BB;
+BC29;BC29;1107 1161 11BC;BC29;1107 1161 11BC;
+BC2A;BC2A;1107 1161 11BD;BC2A;1107 1161 11BD;
+BC2B;BC2B;1107 1161 11BE;BC2B;1107 1161 11BE;
+BC2C;BC2C;1107 1161 11BF;BC2C;1107 1161 11BF;
+BC2D;BC2D;1107 1161 11C0;BC2D;1107 1161 11C0;
+BC2E;BC2E;1107 1161 11C1;BC2E;1107 1161 11C1;
+BC2F;BC2F;1107 1161 11C2;BC2F;1107 1161 11C2;
+BC30;BC30;1107 1162;BC30;1107 1162;
+BC31;BC31;1107 1162 11A8;BC31;1107 1162 11A8;
+BC32;BC32;1107 1162 11A9;BC32;1107 1162 11A9;
+BC33;BC33;1107 1162 11AA;BC33;1107 1162 11AA;
+BC34;BC34;1107 1162 11AB;BC34;1107 1162 11AB;
+BC35;BC35;1107 1162 11AC;BC35;1107 1162 11AC;
+BC36;BC36;1107 1162 11AD;BC36;1107 1162 11AD;
+BC37;BC37;1107 1162 11AE;BC37;1107 1162 11AE;
+BC38;BC38;1107 1162 11AF;BC38;1107 1162 11AF;
+BC39;BC39;1107 1162 11B0;BC39;1107 1162 11B0;
+BC3A;BC3A;1107 1162 11B1;BC3A;1107 1162 11B1;
+BC3B;BC3B;1107 1162 11B2;BC3B;1107 1162 11B2;
+BC3C;BC3C;1107 1162 11B3;BC3C;1107 1162 11B3;
+BC3D;BC3D;1107 1162 11B4;BC3D;1107 1162 11B4;
+BC3E;BC3E;1107 1162 11B5;BC3E;1107 1162 11B5;
+BC3F;BC3F;1107 1162 11B6;BC3F;1107 1162 11B6;
+BC40;BC40;1107 1162 11B7;BC40;1107 1162 11B7;
+BC41;BC41;1107 1162 11B8;BC41;1107 1162 11B8;
+BC42;BC42;1107 1162 11B9;BC42;1107 1162 11B9;
+BC43;BC43;1107 1162 11BA;BC43;1107 1162 11BA;
+BC44;BC44;1107 1162 11BB;BC44;1107 1162 11BB;
+BC45;BC45;1107 1162 11BC;BC45;1107 1162 11BC;
+BC46;BC46;1107 1162 11BD;BC46;1107 1162 11BD;
+BC47;BC47;1107 1162 11BE;BC47;1107 1162 11BE;
+BC48;BC48;1107 1162 11BF;BC48;1107 1162 11BF;
+BC49;BC49;1107 1162 11C0;BC49;1107 1162 11C0;
+BC4A;BC4A;1107 1162 11C1;BC4A;1107 1162 11C1;
+BC4B;BC4B;1107 1162 11C2;BC4B;1107 1162 11C2;
+BC4C;BC4C;1107 1163;BC4C;1107 1163;
+BC4D;BC4D;1107 1163 11A8;BC4D;1107 1163 11A8;
+BC4E;BC4E;1107 1163 11A9;BC4E;1107 1163 11A9;
+BC4F;BC4F;1107 1163 11AA;BC4F;1107 1163 11AA;
+BC50;BC50;1107 1163 11AB;BC50;1107 1163 11AB;
+BC51;BC51;1107 1163 11AC;BC51;1107 1163 11AC;
+BC52;BC52;1107 1163 11AD;BC52;1107 1163 11AD;
+BC53;BC53;1107 1163 11AE;BC53;1107 1163 11AE;
+BC54;BC54;1107 1163 11AF;BC54;1107 1163 11AF;
+BC55;BC55;1107 1163 11B0;BC55;1107 1163 11B0;
+BC56;BC56;1107 1163 11B1;BC56;1107 1163 11B1;
+BC57;BC57;1107 1163 11B2;BC57;1107 1163 11B2;
+BC58;BC58;1107 1163 11B3;BC58;1107 1163 11B3;
+BC59;BC59;1107 1163 11B4;BC59;1107 1163 11B4;
+BC5A;BC5A;1107 1163 11B5;BC5A;1107 1163 11B5;
+BC5B;BC5B;1107 1163 11B6;BC5B;1107 1163 11B6;
+BC5C;BC5C;1107 1163 11B7;BC5C;1107 1163 11B7;
+BC5D;BC5D;1107 1163 11B8;BC5D;1107 1163 11B8;
+BC5E;BC5E;1107 1163 11B9;BC5E;1107 1163 11B9;
+BC5F;BC5F;1107 1163 11BA;BC5F;1107 1163 11BA;
+BC60;BC60;1107 1163 11BB;BC60;1107 1163 11BB;
+BC61;BC61;1107 1163 11BC;BC61;1107 1163 11BC;
+BC62;BC62;1107 1163 11BD;BC62;1107 1163 11BD;
+BC63;BC63;1107 1163 11BE;BC63;1107 1163 11BE;
+BC64;BC64;1107 1163 11BF;BC64;1107 1163 11BF;
+BC65;BC65;1107 1163 11C0;BC65;1107 1163 11C0;
+BC66;BC66;1107 1163 11C1;BC66;1107 1163 11C1;
+BC67;BC67;1107 1163 11C2;BC67;1107 1163 11C2;
+BC68;BC68;1107 1164;BC68;1107 1164;
+BC69;BC69;1107 1164 11A8;BC69;1107 1164 11A8;
+BC6A;BC6A;1107 1164 11A9;BC6A;1107 1164 11A9;
+BC6B;BC6B;1107 1164 11AA;BC6B;1107 1164 11AA;
+BC6C;BC6C;1107 1164 11AB;BC6C;1107 1164 11AB;
+BC6D;BC6D;1107 1164 11AC;BC6D;1107 1164 11AC;
+BC6E;BC6E;1107 1164 11AD;BC6E;1107 1164 11AD;
+BC6F;BC6F;1107 1164 11AE;BC6F;1107 1164 11AE;
+BC70;BC70;1107 1164 11AF;BC70;1107 1164 11AF;
+BC71;BC71;1107 1164 11B0;BC71;1107 1164 11B0;
+BC72;BC72;1107 1164 11B1;BC72;1107 1164 11B1;
+BC73;BC73;1107 1164 11B2;BC73;1107 1164 11B2;
+BC74;BC74;1107 1164 11B3;BC74;1107 1164 11B3;
+BC75;BC75;1107 1164 11B4;BC75;1107 1164 11B4;
+BC76;BC76;1107 1164 11B5;BC76;1107 1164 11B5;
+BC77;BC77;1107 1164 11B6;BC77;1107 1164 11B6;
+BC78;BC78;1107 1164 11B7;BC78;1107 1164 11B7;
+BC79;BC79;1107 1164 11B8;BC79;1107 1164 11B8;
+BC7A;BC7A;1107 1164 11B9;BC7A;1107 1164 11B9;
+BC7B;BC7B;1107 1164 11BA;BC7B;1107 1164 11BA;
+BC7C;BC7C;1107 1164 11BB;BC7C;1107 1164 11BB;
+BC7D;BC7D;1107 1164 11BC;BC7D;1107 1164 11BC;
+BC7E;BC7E;1107 1164 11BD;BC7E;1107 1164 11BD;
+BC7F;BC7F;1107 1164 11BE;BC7F;1107 1164 11BE;
+BC80;BC80;1107 1164 11BF;BC80;1107 1164 11BF;
+BC81;BC81;1107 1164 11C0;BC81;1107 1164 11C0;
+BC82;BC82;1107 1164 11C1;BC82;1107 1164 11C1;
+BC83;BC83;1107 1164 11C2;BC83;1107 1164 11C2;
+BC84;BC84;1107 1165;BC84;1107 1165;
+BC85;BC85;1107 1165 11A8;BC85;1107 1165 11A8;
+BC86;BC86;1107 1165 11A9;BC86;1107 1165 11A9;
+BC87;BC87;1107 1165 11AA;BC87;1107 1165 11AA;
+BC88;BC88;1107 1165 11AB;BC88;1107 1165 11AB;
+BC89;BC89;1107 1165 11AC;BC89;1107 1165 11AC;
+BC8A;BC8A;1107 1165 11AD;BC8A;1107 1165 11AD;
+BC8B;BC8B;1107 1165 11AE;BC8B;1107 1165 11AE;
+BC8C;BC8C;1107 1165 11AF;BC8C;1107 1165 11AF;
+BC8D;BC8D;1107 1165 11B0;BC8D;1107 1165 11B0;
+BC8E;BC8E;1107 1165 11B1;BC8E;1107 1165 11B1;
+BC8F;BC8F;1107 1165 11B2;BC8F;1107 1165 11B2;
+BC90;BC90;1107 1165 11B3;BC90;1107 1165 11B3;
+BC91;BC91;1107 1165 11B4;BC91;1107 1165 11B4;
+BC92;BC92;1107 1165 11B5;BC92;1107 1165 11B5;
+BC93;BC93;1107 1165 11B6;BC93;1107 1165 11B6;
+BC94;BC94;1107 1165 11B7;BC94;1107 1165 11B7;
+BC95;BC95;1107 1165 11B8;BC95;1107 1165 11B8;
+BC96;BC96;1107 1165 11B9;BC96;1107 1165 11B9;
+BC97;BC97;1107 1165 11BA;BC97;1107 1165 11BA;
+BC98;BC98;1107 1165 11BB;BC98;1107 1165 11BB;
+BC99;BC99;1107 1165 11BC;BC99;1107 1165 11BC;
+BC9A;BC9A;1107 1165 11BD;BC9A;1107 1165 11BD;
+BC9B;BC9B;1107 1165 11BE;BC9B;1107 1165 11BE;
+BC9C;BC9C;1107 1165 11BF;BC9C;1107 1165 11BF;
+BC9D;BC9D;1107 1165 11C0;BC9D;1107 1165 11C0;
+BC9E;BC9E;1107 1165 11C1;BC9E;1107 1165 11C1;
+BC9F;BC9F;1107 1165 11C2;BC9F;1107 1165 11C2;
+BCA0;BCA0;1107 1166;BCA0;1107 1166;
+BCA1;BCA1;1107 1166 11A8;BCA1;1107 1166 11A8;
+BCA2;BCA2;1107 1166 11A9;BCA2;1107 1166 11A9;
+BCA3;BCA3;1107 1166 11AA;BCA3;1107 1166 11AA;
+BCA4;BCA4;1107 1166 11AB;BCA4;1107 1166 11AB;
+BCA5;BCA5;1107 1166 11AC;BCA5;1107 1166 11AC;
+BCA6;BCA6;1107 1166 11AD;BCA6;1107 1166 11AD;
+BCA7;BCA7;1107 1166 11AE;BCA7;1107 1166 11AE;
+BCA8;BCA8;1107 1166 11AF;BCA8;1107 1166 11AF;
+BCA9;BCA9;1107 1166 11B0;BCA9;1107 1166 11B0;
+BCAA;BCAA;1107 1166 11B1;BCAA;1107 1166 11B1;
+BCAB;BCAB;1107 1166 11B2;BCAB;1107 1166 11B2;
+BCAC;BCAC;1107 1166 11B3;BCAC;1107 1166 11B3;
+BCAD;BCAD;1107 1166 11B4;BCAD;1107 1166 11B4;
+BCAE;BCAE;1107 1166 11B5;BCAE;1107 1166 11B5;
+BCAF;BCAF;1107 1166 11B6;BCAF;1107 1166 11B6;
+BCB0;BCB0;1107 1166 11B7;BCB0;1107 1166 11B7;
+BCB1;BCB1;1107 1166 11B8;BCB1;1107 1166 11B8;
+BCB2;BCB2;1107 1166 11B9;BCB2;1107 1166 11B9;
+BCB3;BCB3;1107 1166 11BA;BCB3;1107 1166 11BA;
+BCB4;BCB4;1107 1166 11BB;BCB4;1107 1166 11BB;
+BCB5;BCB5;1107 1166 11BC;BCB5;1107 1166 11BC;
+BCB6;BCB6;1107 1166 11BD;BCB6;1107 1166 11BD;
+BCB7;BCB7;1107 1166 11BE;BCB7;1107 1166 11BE;
+BCB8;BCB8;1107 1166 11BF;BCB8;1107 1166 11BF;
+BCB9;BCB9;1107 1166 11C0;BCB9;1107 1166 11C0;
+BCBA;BCBA;1107 1166 11C1;BCBA;1107 1166 11C1;
+BCBB;BCBB;1107 1166 11C2;BCBB;1107 1166 11C2;
+BCBC;BCBC;1107 1167;BCBC;1107 1167;
+BCBD;BCBD;1107 1167 11A8;BCBD;1107 1167 11A8;
+BCBE;BCBE;1107 1167 11A9;BCBE;1107 1167 11A9;
+BCBF;BCBF;1107 1167 11AA;BCBF;1107 1167 11AA;
+BCC0;BCC0;1107 1167 11AB;BCC0;1107 1167 11AB;
+BCC1;BCC1;1107 1167 11AC;BCC1;1107 1167 11AC;
+BCC2;BCC2;1107 1167 11AD;BCC2;1107 1167 11AD;
+BCC3;BCC3;1107 1167 11AE;BCC3;1107 1167 11AE;
+BCC4;BCC4;1107 1167 11AF;BCC4;1107 1167 11AF;
+BCC5;BCC5;1107 1167 11B0;BCC5;1107 1167 11B0;
+BCC6;BCC6;1107 1167 11B1;BCC6;1107 1167 11B1;
+BCC7;BCC7;1107 1167 11B2;BCC7;1107 1167 11B2;
+BCC8;BCC8;1107 1167 11B3;BCC8;1107 1167 11B3;
+BCC9;BCC9;1107 1167 11B4;BCC9;1107 1167 11B4;
+BCCA;BCCA;1107 1167 11B5;BCCA;1107 1167 11B5;
+BCCB;BCCB;1107 1167 11B6;BCCB;1107 1167 11B6;
+BCCC;BCCC;1107 1167 11B7;BCCC;1107 1167 11B7;
+BCCD;BCCD;1107 1167 11B8;BCCD;1107 1167 11B8;
+BCCE;BCCE;1107 1167 11B9;BCCE;1107 1167 11B9;
+BCCF;BCCF;1107 1167 11BA;BCCF;1107 1167 11BA;
+BCD0;BCD0;1107 1167 11BB;BCD0;1107 1167 11BB;
+BCD1;BCD1;1107 1167 11BC;BCD1;1107 1167 11BC;
+BCD2;BCD2;1107 1167 11BD;BCD2;1107 1167 11BD;
+BCD3;BCD3;1107 1167 11BE;BCD3;1107 1167 11BE;
+BCD4;BCD4;1107 1167 11BF;BCD4;1107 1167 11BF;
+BCD5;BCD5;1107 1167 11C0;BCD5;1107 1167 11C0;
+BCD6;BCD6;1107 1167 11C1;BCD6;1107 1167 11C1;
+BCD7;BCD7;1107 1167 11C2;BCD7;1107 1167 11C2;
+BCD8;BCD8;1107 1168;BCD8;1107 1168;
+BCD9;BCD9;1107 1168 11A8;BCD9;1107 1168 11A8;
+BCDA;BCDA;1107 1168 11A9;BCDA;1107 1168 11A9;
+BCDB;BCDB;1107 1168 11AA;BCDB;1107 1168 11AA;
+BCDC;BCDC;1107 1168 11AB;BCDC;1107 1168 11AB;
+BCDD;BCDD;1107 1168 11AC;BCDD;1107 1168 11AC;
+BCDE;BCDE;1107 1168 11AD;BCDE;1107 1168 11AD;
+BCDF;BCDF;1107 1168 11AE;BCDF;1107 1168 11AE;
+BCE0;BCE0;1107 1168 11AF;BCE0;1107 1168 11AF;
+BCE1;BCE1;1107 1168 11B0;BCE1;1107 1168 11B0;
+BCE2;BCE2;1107 1168 11B1;BCE2;1107 1168 11B1;
+BCE3;BCE3;1107 1168 11B2;BCE3;1107 1168 11B2;
+BCE4;BCE4;1107 1168 11B3;BCE4;1107 1168 11B3;
+BCE5;BCE5;1107 1168 11B4;BCE5;1107 1168 11B4;
+BCE6;BCE6;1107 1168 11B5;BCE6;1107 1168 11B5;
+BCE7;BCE7;1107 1168 11B6;BCE7;1107 1168 11B6;
+BCE8;BCE8;1107 1168 11B7;BCE8;1107 1168 11B7;
+BCE9;BCE9;1107 1168 11B8;BCE9;1107 1168 11B8;
+BCEA;BCEA;1107 1168 11B9;BCEA;1107 1168 11B9;
+BCEB;BCEB;1107 1168 11BA;BCEB;1107 1168 11BA;
+BCEC;BCEC;1107 1168 11BB;BCEC;1107 1168 11BB;
+BCED;BCED;1107 1168 11BC;BCED;1107 1168 11BC;
+BCEE;BCEE;1107 1168 11BD;BCEE;1107 1168 11BD;
+BCEF;BCEF;1107 1168 11BE;BCEF;1107 1168 11BE;
+BCF0;BCF0;1107 1168 11BF;BCF0;1107 1168 11BF;
+BCF1;BCF1;1107 1168 11C0;BCF1;1107 1168 11C0;
+BCF2;BCF2;1107 1168 11C1;BCF2;1107 1168 11C1;
+BCF3;BCF3;1107 1168 11C2;BCF3;1107 1168 11C2;
+BCF4;BCF4;1107 1169;BCF4;1107 1169;
+BCF5;BCF5;1107 1169 11A8;BCF5;1107 1169 11A8;
+BCF6;BCF6;1107 1169 11A9;BCF6;1107 1169 11A9;
+BCF7;BCF7;1107 1169 11AA;BCF7;1107 1169 11AA;
+BCF8;BCF8;1107 1169 11AB;BCF8;1107 1169 11AB;
+BCF9;BCF9;1107 1169 11AC;BCF9;1107 1169 11AC;
+BCFA;BCFA;1107 1169 11AD;BCFA;1107 1169 11AD;
+BCFB;BCFB;1107 1169 11AE;BCFB;1107 1169 11AE;
+BCFC;BCFC;1107 1169 11AF;BCFC;1107 1169 11AF;
+BCFD;BCFD;1107 1169 11B0;BCFD;1107 1169 11B0;
+BCFE;BCFE;1107 1169 11B1;BCFE;1107 1169 11B1;
+BCFF;BCFF;1107 1169 11B2;BCFF;1107 1169 11B2;
+BD00;BD00;1107 1169 11B3;BD00;1107 1169 11B3;
+BD01;BD01;1107 1169 11B4;BD01;1107 1169 11B4;
+BD02;BD02;1107 1169 11B5;BD02;1107 1169 11B5;
+BD03;BD03;1107 1169 11B6;BD03;1107 1169 11B6;
+BD04;BD04;1107 1169 11B7;BD04;1107 1169 11B7;
+BD05;BD05;1107 1169 11B8;BD05;1107 1169 11B8;
+BD06;BD06;1107 1169 11B9;BD06;1107 1169 11B9;
+BD07;BD07;1107 1169 11BA;BD07;1107 1169 11BA;
+BD08;BD08;1107 1169 11BB;BD08;1107 1169 11BB;
+BD09;BD09;1107 1169 11BC;BD09;1107 1169 11BC;
+BD0A;BD0A;1107 1169 11BD;BD0A;1107 1169 11BD;
+BD0B;BD0B;1107 1169 11BE;BD0B;1107 1169 11BE;
+BD0C;BD0C;1107 1169 11BF;BD0C;1107 1169 11BF;
+BD0D;BD0D;1107 1169 11C0;BD0D;1107 1169 11C0;
+BD0E;BD0E;1107 1169 11C1;BD0E;1107 1169 11C1;
+BD0F;BD0F;1107 1169 11C2;BD0F;1107 1169 11C2;
+BD10;BD10;1107 116A;BD10;1107 116A;
+BD11;BD11;1107 116A 11A8;BD11;1107 116A 11A8;
+BD12;BD12;1107 116A 11A9;BD12;1107 116A 11A9;
+BD13;BD13;1107 116A 11AA;BD13;1107 116A 11AA;
+BD14;BD14;1107 116A 11AB;BD14;1107 116A 11AB;
+BD15;BD15;1107 116A 11AC;BD15;1107 116A 11AC;
+BD16;BD16;1107 116A 11AD;BD16;1107 116A 11AD;
+BD17;BD17;1107 116A 11AE;BD17;1107 116A 11AE;
+BD18;BD18;1107 116A 11AF;BD18;1107 116A 11AF;
+BD19;BD19;1107 116A 11B0;BD19;1107 116A 11B0;
+BD1A;BD1A;1107 116A 11B1;BD1A;1107 116A 11B1;
+BD1B;BD1B;1107 116A 11B2;BD1B;1107 116A 11B2;
+BD1C;BD1C;1107 116A 11B3;BD1C;1107 116A 11B3;
+BD1D;BD1D;1107 116A 11B4;BD1D;1107 116A 11B4;
+BD1E;BD1E;1107 116A 11B5;BD1E;1107 116A 11B5;
+BD1F;BD1F;1107 116A 11B6;BD1F;1107 116A 11B6;
+BD20;BD20;1107 116A 11B7;BD20;1107 116A 11B7;
+BD21;BD21;1107 116A 11B8;BD21;1107 116A 11B8;
+BD22;BD22;1107 116A 11B9;BD22;1107 116A 11B9;
+BD23;BD23;1107 116A 11BA;BD23;1107 116A 11BA;
+BD24;BD24;1107 116A 11BB;BD24;1107 116A 11BB;
+BD25;BD25;1107 116A 11BC;BD25;1107 116A 11BC;
+BD26;BD26;1107 116A 11BD;BD26;1107 116A 11BD;
+BD27;BD27;1107 116A 11BE;BD27;1107 116A 11BE;
+BD28;BD28;1107 116A 11BF;BD28;1107 116A 11BF;
+BD29;BD29;1107 116A 11C0;BD29;1107 116A 11C0;
+BD2A;BD2A;1107 116A 11C1;BD2A;1107 116A 11C1;
+BD2B;BD2B;1107 116A 11C2;BD2B;1107 116A 11C2;
+BD2C;BD2C;1107 116B;BD2C;1107 116B;
+BD2D;BD2D;1107 116B 11A8;BD2D;1107 116B 11A8;
+BD2E;BD2E;1107 116B 11A9;BD2E;1107 116B 11A9;
+BD2F;BD2F;1107 116B 11AA;BD2F;1107 116B 11AA;
+BD30;BD30;1107 116B 11AB;BD30;1107 116B 11AB;
+BD31;BD31;1107 116B 11AC;BD31;1107 116B 11AC;
+BD32;BD32;1107 116B 11AD;BD32;1107 116B 11AD;
+BD33;BD33;1107 116B 11AE;BD33;1107 116B 11AE;
+BD34;BD34;1107 116B 11AF;BD34;1107 116B 11AF;
+BD35;BD35;1107 116B 11B0;BD35;1107 116B 11B0;
+BD36;BD36;1107 116B 11B1;BD36;1107 116B 11B1;
+BD37;BD37;1107 116B 11B2;BD37;1107 116B 11B2;
+BD38;BD38;1107 116B 11B3;BD38;1107 116B 11B3;
+BD39;BD39;1107 116B 11B4;BD39;1107 116B 11B4;
+BD3A;BD3A;1107 116B 11B5;BD3A;1107 116B 11B5;
+BD3B;BD3B;1107 116B 11B6;BD3B;1107 116B 11B6;
+BD3C;BD3C;1107 116B 11B7;BD3C;1107 116B 11B7;
+BD3D;BD3D;1107 116B 11B8;BD3D;1107 116B 11B8;
+BD3E;BD3E;1107 116B 11B9;BD3E;1107 116B 11B9;
+BD3F;BD3F;1107 116B 11BA;BD3F;1107 116B 11BA;
+BD40;BD40;1107 116B 11BB;BD40;1107 116B 11BB;
+BD41;BD41;1107 116B 11BC;BD41;1107 116B 11BC;
+BD42;BD42;1107 116B 11BD;BD42;1107 116B 11BD;
+BD43;BD43;1107 116B 11BE;BD43;1107 116B 11BE;
+BD44;BD44;1107 116B 11BF;BD44;1107 116B 11BF;
+BD45;BD45;1107 116B 11C0;BD45;1107 116B 11C0;
+BD46;BD46;1107 116B 11C1;BD46;1107 116B 11C1;
+BD47;BD47;1107 116B 11C2;BD47;1107 116B 11C2;
+BD48;BD48;1107 116C;BD48;1107 116C;
+BD49;BD49;1107 116C 11A8;BD49;1107 116C 11A8;
+BD4A;BD4A;1107 116C 11A9;BD4A;1107 116C 11A9;
+BD4B;BD4B;1107 116C 11AA;BD4B;1107 116C 11AA;
+BD4C;BD4C;1107 116C 11AB;BD4C;1107 116C 11AB;
+BD4D;BD4D;1107 116C 11AC;BD4D;1107 116C 11AC;
+BD4E;BD4E;1107 116C 11AD;BD4E;1107 116C 11AD;
+BD4F;BD4F;1107 116C 11AE;BD4F;1107 116C 11AE;
+BD50;BD50;1107 116C 11AF;BD50;1107 116C 11AF;
+BD51;BD51;1107 116C 11B0;BD51;1107 116C 11B0;
+BD52;BD52;1107 116C 11B1;BD52;1107 116C 11B1;
+BD53;BD53;1107 116C 11B2;BD53;1107 116C 11B2;
+BD54;BD54;1107 116C 11B3;BD54;1107 116C 11B3;
+BD55;BD55;1107 116C 11B4;BD55;1107 116C 11B4;
+BD56;BD56;1107 116C 11B5;BD56;1107 116C 11B5;
+BD57;BD57;1107 116C 11B6;BD57;1107 116C 11B6;
+BD58;BD58;1107 116C 11B7;BD58;1107 116C 11B7;
+BD59;BD59;1107 116C 11B8;BD59;1107 116C 11B8;
+BD5A;BD5A;1107 116C 11B9;BD5A;1107 116C 11B9;
+BD5B;BD5B;1107 116C 11BA;BD5B;1107 116C 11BA;
+BD5C;BD5C;1107 116C 11BB;BD5C;1107 116C 11BB;
+BD5D;BD5D;1107 116C 11BC;BD5D;1107 116C 11BC;
+BD5E;BD5E;1107 116C 11BD;BD5E;1107 116C 11BD;
+BD5F;BD5F;1107 116C 11BE;BD5F;1107 116C 11BE;
+BD60;BD60;1107 116C 11BF;BD60;1107 116C 11BF;
+BD61;BD61;1107 116C 11C0;BD61;1107 116C 11C0;
+BD62;BD62;1107 116C 11C1;BD62;1107 116C 11C1;
+BD63;BD63;1107 116C 11C2;BD63;1107 116C 11C2;
+BD64;BD64;1107 116D;BD64;1107 116D;
+BD65;BD65;1107 116D 11A8;BD65;1107 116D 11A8;
+BD66;BD66;1107 116D 11A9;BD66;1107 116D 11A9;
+BD67;BD67;1107 116D 11AA;BD67;1107 116D 11AA;
+BD68;BD68;1107 116D 11AB;BD68;1107 116D 11AB;
+BD69;BD69;1107 116D 11AC;BD69;1107 116D 11AC;
+BD6A;BD6A;1107 116D 11AD;BD6A;1107 116D 11AD;
+BD6B;BD6B;1107 116D 11AE;BD6B;1107 116D 11AE;
+BD6C;BD6C;1107 116D 11AF;BD6C;1107 116D 11AF;
+BD6D;BD6D;1107 116D 11B0;BD6D;1107 116D 11B0;
+BD6E;BD6E;1107 116D 11B1;BD6E;1107 116D 11B1;
+BD6F;BD6F;1107 116D 11B2;BD6F;1107 116D 11B2;
+BD70;BD70;1107 116D 11B3;BD70;1107 116D 11B3;
+BD71;BD71;1107 116D 11B4;BD71;1107 116D 11B4;
+BD72;BD72;1107 116D 11B5;BD72;1107 116D 11B5;
+BD73;BD73;1107 116D 11B6;BD73;1107 116D 11B6;
+BD74;BD74;1107 116D 11B7;BD74;1107 116D 11B7;
+BD75;BD75;1107 116D 11B8;BD75;1107 116D 11B8;
+BD76;BD76;1107 116D 11B9;BD76;1107 116D 11B9;
+BD77;BD77;1107 116D 11BA;BD77;1107 116D 11BA;
+BD78;BD78;1107 116D 11BB;BD78;1107 116D 11BB;
+BD79;BD79;1107 116D 11BC;BD79;1107 116D 11BC;
+BD7A;BD7A;1107 116D 11BD;BD7A;1107 116D 11BD;
+BD7B;BD7B;1107 116D 11BE;BD7B;1107 116D 11BE;
+BD7C;BD7C;1107 116D 11BF;BD7C;1107 116D 11BF;
+BD7D;BD7D;1107 116D 11C0;BD7D;1107 116D 11C0;
+BD7E;BD7E;1107 116D 11C1;BD7E;1107 116D 11C1;
+BD7F;BD7F;1107 116D 11C2;BD7F;1107 116D 11C2;
+BD80;BD80;1107 116E;BD80;1107 116E;
+BD81;BD81;1107 116E 11A8;BD81;1107 116E 11A8;
+BD82;BD82;1107 116E 11A9;BD82;1107 116E 11A9;
+BD83;BD83;1107 116E 11AA;BD83;1107 116E 11AA;
+BD84;BD84;1107 116E 11AB;BD84;1107 116E 11AB;
+BD85;BD85;1107 116E 11AC;BD85;1107 116E 11AC;
+BD86;BD86;1107 116E 11AD;BD86;1107 116E 11AD;
+BD87;BD87;1107 116E 11AE;BD87;1107 116E 11AE;
+BD88;BD88;1107 116E 11AF;BD88;1107 116E 11AF;
+BD89;BD89;1107 116E 11B0;BD89;1107 116E 11B0;
+BD8A;BD8A;1107 116E 11B1;BD8A;1107 116E 11B1;
+BD8B;BD8B;1107 116E 11B2;BD8B;1107 116E 11B2;
+BD8C;BD8C;1107 116E 11B3;BD8C;1107 116E 11B3;
+BD8D;BD8D;1107 116E 11B4;BD8D;1107 116E 11B4;
+BD8E;BD8E;1107 116E 11B5;BD8E;1107 116E 11B5;
+BD8F;BD8F;1107 116E 11B6;BD8F;1107 116E 11B6;
+BD90;BD90;1107 116E 11B7;BD90;1107 116E 11B7;
+BD91;BD91;1107 116E 11B8;BD91;1107 116E 11B8;
+BD92;BD92;1107 116E 11B9;BD92;1107 116E 11B9;
+BD93;BD93;1107 116E 11BA;BD93;1107 116E 11BA;
+BD94;BD94;1107 116E 11BB;BD94;1107 116E 11BB;
+BD95;BD95;1107 116E 11BC;BD95;1107 116E 11BC;
+BD96;BD96;1107 116E 11BD;BD96;1107 116E 11BD;
+BD97;BD97;1107 116E 11BE;BD97;1107 116E 11BE;
+BD98;BD98;1107 116E 11BF;BD98;1107 116E 11BF;
+BD99;BD99;1107 116E 11C0;BD99;1107 116E 11C0;
+BD9A;BD9A;1107 116E 11C1;BD9A;1107 116E 11C1;
+BD9B;BD9B;1107 116E 11C2;BD9B;1107 116E 11C2;
+BD9C;BD9C;1107 116F;BD9C;1107 116F;
+BD9D;BD9D;1107 116F 11A8;BD9D;1107 116F 11A8;
+BD9E;BD9E;1107 116F 11A9;BD9E;1107 116F 11A9;
+BD9F;BD9F;1107 116F 11AA;BD9F;1107 116F 11AA;
+BDA0;BDA0;1107 116F 11AB;BDA0;1107 116F 11AB;
+BDA1;BDA1;1107 116F 11AC;BDA1;1107 116F 11AC;
+BDA2;BDA2;1107 116F 11AD;BDA2;1107 116F 11AD;
+BDA3;BDA3;1107 116F 11AE;BDA3;1107 116F 11AE;
+BDA4;BDA4;1107 116F 11AF;BDA4;1107 116F 11AF;
+BDA5;BDA5;1107 116F 11B0;BDA5;1107 116F 11B0;
+BDA6;BDA6;1107 116F 11B1;BDA6;1107 116F 11B1;
+BDA7;BDA7;1107 116F 11B2;BDA7;1107 116F 11B2;
+BDA8;BDA8;1107 116F 11B3;BDA8;1107 116F 11B3;
+BDA9;BDA9;1107 116F 11B4;BDA9;1107 116F 11B4;
+BDAA;BDAA;1107 116F 11B5;BDAA;1107 116F 11B5;
+BDAB;BDAB;1107 116F 11B6;BDAB;1107 116F 11B6;
+BDAC;BDAC;1107 116F 11B7;BDAC;1107 116F 11B7;
+BDAD;BDAD;1107 116F 11B8;BDAD;1107 116F 11B8;
+BDAE;BDAE;1107 116F 11B9;BDAE;1107 116F 11B9;
+BDAF;BDAF;1107 116F 11BA;BDAF;1107 116F 11BA;
+BDB0;BDB0;1107 116F 11BB;BDB0;1107 116F 11BB;
+BDB1;BDB1;1107 116F 11BC;BDB1;1107 116F 11BC;
+BDB2;BDB2;1107 116F 11BD;BDB2;1107 116F 11BD;
+BDB3;BDB3;1107 116F 11BE;BDB3;1107 116F 11BE;
+BDB4;BDB4;1107 116F 11BF;BDB4;1107 116F 11BF;
+BDB5;BDB5;1107 116F 11C0;BDB5;1107 116F 11C0;
+BDB6;BDB6;1107 116F 11C1;BDB6;1107 116F 11C1;
+BDB7;BDB7;1107 116F 11C2;BDB7;1107 116F 11C2;
+BDB8;BDB8;1107 1170;BDB8;1107 1170;
+BDB9;BDB9;1107 1170 11A8;BDB9;1107 1170 11A8;
+BDBA;BDBA;1107 1170 11A9;BDBA;1107 1170 11A9;
+BDBB;BDBB;1107 1170 11AA;BDBB;1107 1170 11AA;
+BDBC;BDBC;1107 1170 11AB;BDBC;1107 1170 11AB;
+BDBD;BDBD;1107 1170 11AC;BDBD;1107 1170 11AC;
+BDBE;BDBE;1107 1170 11AD;BDBE;1107 1170 11AD;
+BDBF;BDBF;1107 1170 11AE;BDBF;1107 1170 11AE;
+BDC0;BDC0;1107 1170 11AF;BDC0;1107 1170 11AF;
+BDC1;BDC1;1107 1170 11B0;BDC1;1107 1170 11B0;
+BDC2;BDC2;1107 1170 11B1;BDC2;1107 1170 11B1;
+BDC3;BDC3;1107 1170 11B2;BDC3;1107 1170 11B2;
+BDC4;BDC4;1107 1170 11B3;BDC4;1107 1170 11B3;
+BDC5;BDC5;1107 1170 11B4;BDC5;1107 1170 11B4;
+BDC6;BDC6;1107 1170 11B5;BDC6;1107 1170 11B5;
+BDC7;BDC7;1107 1170 11B6;BDC7;1107 1170 11B6;
+BDC8;BDC8;1107 1170 11B7;BDC8;1107 1170 11B7;
+BDC9;BDC9;1107 1170 11B8;BDC9;1107 1170 11B8;
+BDCA;BDCA;1107 1170 11B9;BDCA;1107 1170 11B9;
+BDCB;BDCB;1107 1170 11BA;BDCB;1107 1170 11BA;
+BDCC;BDCC;1107 1170 11BB;BDCC;1107 1170 11BB;
+BDCD;BDCD;1107 1170 11BC;BDCD;1107 1170 11BC;
+BDCE;BDCE;1107 1170 11BD;BDCE;1107 1170 11BD;
+BDCF;BDCF;1107 1170 11BE;BDCF;1107 1170 11BE;
+BDD0;BDD0;1107 1170 11BF;BDD0;1107 1170 11BF;
+BDD1;BDD1;1107 1170 11C0;BDD1;1107 1170 11C0;
+BDD2;BDD2;1107 1170 11C1;BDD2;1107 1170 11C1;
+BDD3;BDD3;1107 1170 11C2;BDD3;1107 1170 11C2;
+BDD4;BDD4;1107 1171;BDD4;1107 1171;
+BDD5;BDD5;1107 1171 11A8;BDD5;1107 1171 11A8;
+BDD6;BDD6;1107 1171 11A9;BDD6;1107 1171 11A9;
+BDD7;BDD7;1107 1171 11AA;BDD7;1107 1171 11AA;
+BDD8;BDD8;1107 1171 11AB;BDD8;1107 1171 11AB;
+BDD9;BDD9;1107 1171 11AC;BDD9;1107 1171 11AC;
+BDDA;BDDA;1107 1171 11AD;BDDA;1107 1171 11AD;
+BDDB;BDDB;1107 1171 11AE;BDDB;1107 1171 11AE;
+BDDC;BDDC;1107 1171 11AF;BDDC;1107 1171 11AF;
+BDDD;BDDD;1107 1171 11B0;BDDD;1107 1171 11B0;
+BDDE;BDDE;1107 1171 11B1;BDDE;1107 1171 11B1;
+BDDF;BDDF;1107 1171 11B2;BDDF;1107 1171 11B2;
+BDE0;BDE0;1107 1171 11B3;BDE0;1107 1171 11B3;
+BDE1;BDE1;1107 1171 11B4;BDE1;1107 1171 11B4;
+BDE2;BDE2;1107 1171 11B5;BDE2;1107 1171 11B5;
+BDE3;BDE3;1107 1171 11B6;BDE3;1107 1171 11B6;
+BDE4;BDE4;1107 1171 11B7;BDE4;1107 1171 11B7;
+BDE5;BDE5;1107 1171 11B8;BDE5;1107 1171 11B8;
+BDE6;BDE6;1107 1171 11B9;BDE6;1107 1171 11B9;
+BDE7;BDE7;1107 1171 11BA;BDE7;1107 1171 11BA;
+BDE8;BDE8;1107 1171 11BB;BDE8;1107 1171 11BB;
+BDE9;BDE9;1107 1171 11BC;BDE9;1107 1171 11BC;
+BDEA;BDEA;1107 1171 11BD;BDEA;1107 1171 11BD;
+BDEB;BDEB;1107 1171 11BE;BDEB;1107 1171 11BE;
+BDEC;BDEC;1107 1171 11BF;BDEC;1107 1171 11BF;
+BDED;BDED;1107 1171 11C0;BDED;1107 1171 11C0;
+BDEE;BDEE;1107 1171 11C1;BDEE;1107 1171 11C1;
+BDEF;BDEF;1107 1171 11C2;BDEF;1107 1171 11C2;
+BDF0;BDF0;1107 1172;BDF0;1107 1172;
+BDF1;BDF1;1107 1172 11A8;BDF1;1107 1172 11A8;
+BDF2;BDF2;1107 1172 11A9;BDF2;1107 1172 11A9;
+BDF3;BDF3;1107 1172 11AA;BDF3;1107 1172 11AA;
+BDF4;BDF4;1107 1172 11AB;BDF4;1107 1172 11AB;
+BDF5;BDF5;1107 1172 11AC;BDF5;1107 1172 11AC;
+BDF6;BDF6;1107 1172 11AD;BDF6;1107 1172 11AD;
+BDF7;BDF7;1107 1172 11AE;BDF7;1107 1172 11AE;
+BDF8;BDF8;1107 1172 11AF;BDF8;1107 1172 11AF;
+BDF9;BDF9;1107 1172 11B0;BDF9;1107 1172 11B0;
+BDFA;BDFA;1107 1172 11B1;BDFA;1107 1172 11B1;
+BDFB;BDFB;1107 1172 11B2;BDFB;1107 1172 11B2;
+BDFC;BDFC;1107 1172 11B3;BDFC;1107 1172 11B3;
+BDFD;BDFD;1107 1172 11B4;BDFD;1107 1172 11B4;
+BDFE;BDFE;1107 1172 11B5;BDFE;1107 1172 11B5;
+BDFF;BDFF;1107 1172 11B6;BDFF;1107 1172 11B6;
+BE00;BE00;1107 1172 11B7;BE00;1107 1172 11B7;
+BE01;BE01;1107 1172 11B8;BE01;1107 1172 11B8;
+BE02;BE02;1107 1172 11B9;BE02;1107 1172 11B9;
+BE03;BE03;1107 1172 11BA;BE03;1107 1172 11BA;
+BE04;BE04;1107 1172 11BB;BE04;1107 1172 11BB;
+BE05;BE05;1107 1172 11BC;BE05;1107 1172 11BC;
+BE06;BE06;1107 1172 11BD;BE06;1107 1172 11BD;
+BE07;BE07;1107 1172 11BE;BE07;1107 1172 11BE;
+BE08;BE08;1107 1172 11BF;BE08;1107 1172 11BF;
+BE09;BE09;1107 1172 11C0;BE09;1107 1172 11C0;
+BE0A;BE0A;1107 1172 11C1;BE0A;1107 1172 11C1;
+BE0B;BE0B;1107 1172 11C2;BE0B;1107 1172 11C2;
+BE0C;BE0C;1107 1173;BE0C;1107 1173;
+BE0D;BE0D;1107 1173 11A8;BE0D;1107 1173 11A8;
+BE0E;BE0E;1107 1173 11A9;BE0E;1107 1173 11A9;
+BE0F;BE0F;1107 1173 11AA;BE0F;1107 1173 11AA;
+BE10;BE10;1107 1173 11AB;BE10;1107 1173 11AB;
+BE11;BE11;1107 1173 11AC;BE11;1107 1173 11AC;
+BE12;BE12;1107 1173 11AD;BE12;1107 1173 11AD;
+BE13;BE13;1107 1173 11AE;BE13;1107 1173 11AE;
+BE14;BE14;1107 1173 11AF;BE14;1107 1173 11AF;
+BE15;BE15;1107 1173 11B0;BE15;1107 1173 11B0;
+BE16;BE16;1107 1173 11B1;BE16;1107 1173 11B1;
+BE17;BE17;1107 1173 11B2;BE17;1107 1173 11B2;
+BE18;BE18;1107 1173 11B3;BE18;1107 1173 11B3;
+BE19;BE19;1107 1173 11B4;BE19;1107 1173 11B4;
+BE1A;BE1A;1107 1173 11B5;BE1A;1107 1173 11B5;
+BE1B;BE1B;1107 1173 11B6;BE1B;1107 1173 11B6;
+BE1C;BE1C;1107 1173 11B7;BE1C;1107 1173 11B7;
+BE1D;BE1D;1107 1173 11B8;BE1D;1107 1173 11B8;
+BE1E;BE1E;1107 1173 11B9;BE1E;1107 1173 11B9;
+BE1F;BE1F;1107 1173 11BA;BE1F;1107 1173 11BA;
+BE20;BE20;1107 1173 11BB;BE20;1107 1173 11BB;
+BE21;BE21;1107 1173 11BC;BE21;1107 1173 11BC;
+BE22;BE22;1107 1173 11BD;BE22;1107 1173 11BD;
+BE23;BE23;1107 1173 11BE;BE23;1107 1173 11BE;
+BE24;BE24;1107 1173 11BF;BE24;1107 1173 11BF;
+BE25;BE25;1107 1173 11C0;BE25;1107 1173 11C0;
+BE26;BE26;1107 1173 11C1;BE26;1107 1173 11C1;
+BE27;BE27;1107 1173 11C2;BE27;1107 1173 11C2;
+BE28;BE28;1107 1174;BE28;1107 1174;
+BE29;BE29;1107 1174 11A8;BE29;1107 1174 11A8;
+BE2A;BE2A;1107 1174 11A9;BE2A;1107 1174 11A9;
+BE2B;BE2B;1107 1174 11AA;BE2B;1107 1174 11AA;
+BE2C;BE2C;1107 1174 11AB;BE2C;1107 1174 11AB;
+BE2D;BE2D;1107 1174 11AC;BE2D;1107 1174 11AC;
+BE2E;BE2E;1107 1174 11AD;BE2E;1107 1174 11AD;
+BE2F;BE2F;1107 1174 11AE;BE2F;1107 1174 11AE;
+BE30;BE30;1107 1174 11AF;BE30;1107 1174 11AF;
+BE31;BE31;1107 1174 11B0;BE31;1107 1174 11B0;
+BE32;BE32;1107 1174 11B1;BE32;1107 1174 11B1;
+BE33;BE33;1107 1174 11B2;BE33;1107 1174 11B2;
+BE34;BE34;1107 1174 11B3;BE34;1107 1174 11B3;
+BE35;BE35;1107 1174 11B4;BE35;1107 1174 11B4;
+BE36;BE36;1107 1174 11B5;BE36;1107 1174 11B5;
+BE37;BE37;1107 1174 11B6;BE37;1107 1174 11B6;
+BE38;BE38;1107 1174 11B7;BE38;1107 1174 11B7;
+BE39;BE39;1107 1174 11B8;BE39;1107 1174 11B8;
+BE3A;BE3A;1107 1174 11B9;BE3A;1107 1174 11B9;
+BE3B;BE3B;1107 1174 11BA;BE3B;1107 1174 11BA;
+BE3C;BE3C;1107 1174 11BB;BE3C;1107 1174 11BB;
+BE3D;BE3D;1107 1174 11BC;BE3D;1107 1174 11BC;
+BE3E;BE3E;1107 1174 11BD;BE3E;1107 1174 11BD;
+BE3F;BE3F;1107 1174 11BE;BE3F;1107 1174 11BE;
+BE40;BE40;1107 1174 11BF;BE40;1107 1174 11BF;
+BE41;BE41;1107 1174 11C0;BE41;1107 1174 11C0;
+BE42;BE42;1107 1174 11C1;BE42;1107 1174 11C1;
+BE43;BE43;1107 1174 11C2;BE43;1107 1174 11C2;
+BE44;BE44;1107 1175;BE44;1107 1175;
+BE45;BE45;1107 1175 11A8;BE45;1107 1175 11A8;
+BE46;BE46;1107 1175 11A9;BE46;1107 1175 11A9;
+BE47;BE47;1107 1175 11AA;BE47;1107 1175 11AA;
+BE48;BE48;1107 1175 11AB;BE48;1107 1175 11AB;
+BE49;BE49;1107 1175 11AC;BE49;1107 1175 11AC;
+BE4A;BE4A;1107 1175 11AD;BE4A;1107 1175 11AD;
+BE4B;BE4B;1107 1175 11AE;BE4B;1107 1175 11AE;
+BE4C;BE4C;1107 1175 11AF;BE4C;1107 1175 11AF;
+BE4D;BE4D;1107 1175 11B0;BE4D;1107 1175 11B0;
+BE4E;BE4E;1107 1175 11B1;BE4E;1107 1175 11B1;
+BE4F;BE4F;1107 1175 11B2;BE4F;1107 1175 11B2;
+BE50;BE50;1107 1175 11B3;BE50;1107 1175 11B3;
+BE51;BE51;1107 1175 11B4;BE51;1107 1175 11B4;
+BE52;BE52;1107 1175 11B5;BE52;1107 1175 11B5;
+BE53;BE53;1107 1175 11B6;BE53;1107 1175 11B6;
+BE54;BE54;1107 1175 11B7;BE54;1107 1175 11B7;
+BE55;BE55;1107 1175 11B8;BE55;1107 1175 11B8;
+BE56;BE56;1107 1175 11B9;BE56;1107 1175 11B9;
+BE57;BE57;1107 1175 11BA;BE57;1107 1175 11BA;
+BE58;BE58;1107 1175 11BB;BE58;1107 1175 11BB;
+BE59;BE59;1107 1175 11BC;BE59;1107 1175 11BC;
+BE5A;BE5A;1107 1175 11BD;BE5A;1107 1175 11BD;
+BE5B;BE5B;1107 1175 11BE;BE5B;1107 1175 11BE;
+BE5C;BE5C;1107 1175 11BF;BE5C;1107 1175 11BF;
+BE5D;BE5D;1107 1175 11C0;BE5D;1107 1175 11C0;
+BE5E;BE5E;1107 1175 11C1;BE5E;1107 1175 11C1;
+BE5F;BE5F;1107 1175 11C2;BE5F;1107 1175 11C2;
+BE60;BE60;1108 1161;BE60;1108 1161;
+BE61;BE61;1108 1161 11A8;BE61;1108 1161 11A8;
+BE62;BE62;1108 1161 11A9;BE62;1108 1161 11A9;
+BE63;BE63;1108 1161 11AA;BE63;1108 1161 11AA;
+BE64;BE64;1108 1161 11AB;BE64;1108 1161 11AB;
+BE65;BE65;1108 1161 11AC;BE65;1108 1161 11AC;
+BE66;BE66;1108 1161 11AD;BE66;1108 1161 11AD;
+BE67;BE67;1108 1161 11AE;BE67;1108 1161 11AE;
+BE68;BE68;1108 1161 11AF;BE68;1108 1161 11AF;
+BE69;BE69;1108 1161 11B0;BE69;1108 1161 11B0;
+BE6A;BE6A;1108 1161 11B1;BE6A;1108 1161 11B1;
+BE6B;BE6B;1108 1161 11B2;BE6B;1108 1161 11B2;
+BE6C;BE6C;1108 1161 11B3;BE6C;1108 1161 11B3;
+BE6D;BE6D;1108 1161 11B4;BE6D;1108 1161 11B4;
+BE6E;BE6E;1108 1161 11B5;BE6E;1108 1161 11B5;
+BE6F;BE6F;1108 1161 11B6;BE6F;1108 1161 11B6;
+BE70;BE70;1108 1161 11B7;BE70;1108 1161 11B7;
+BE71;BE71;1108 1161 11B8;BE71;1108 1161 11B8;
+BE72;BE72;1108 1161 11B9;BE72;1108 1161 11B9;
+BE73;BE73;1108 1161 11BA;BE73;1108 1161 11BA;
+BE74;BE74;1108 1161 11BB;BE74;1108 1161 11BB;
+BE75;BE75;1108 1161 11BC;BE75;1108 1161 11BC;
+BE76;BE76;1108 1161 11BD;BE76;1108 1161 11BD;
+BE77;BE77;1108 1161 11BE;BE77;1108 1161 11BE;
+BE78;BE78;1108 1161 11BF;BE78;1108 1161 11BF;
+BE79;BE79;1108 1161 11C0;BE79;1108 1161 11C0;
+BE7A;BE7A;1108 1161 11C1;BE7A;1108 1161 11C1;
+BE7B;BE7B;1108 1161 11C2;BE7B;1108 1161 11C2;
+BE7C;BE7C;1108 1162;BE7C;1108 1162;
+BE7D;BE7D;1108 1162 11A8;BE7D;1108 1162 11A8;
+BE7E;BE7E;1108 1162 11A9;BE7E;1108 1162 11A9;
+BE7F;BE7F;1108 1162 11AA;BE7F;1108 1162 11AA;
+BE80;BE80;1108 1162 11AB;BE80;1108 1162 11AB;
+BE81;BE81;1108 1162 11AC;BE81;1108 1162 11AC;
+BE82;BE82;1108 1162 11AD;BE82;1108 1162 11AD;
+BE83;BE83;1108 1162 11AE;BE83;1108 1162 11AE;
+BE84;BE84;1108 1162 11AF;BE84;1108 1162 11AF;
+BE85;BE85;1108 1162 11B0;BE85;1108 1162 11B0;
+BE86;BE86;1108 1162 11B1;BE86;1108 1162 11B1;
+BE87;BE87;1108 1162 11B2;BE87;1108 1162 11B2;
+BE88;BE88;1108 1162 11B3;BE88;1108 1162 11B3;
+BE89;BE89;1108 1162 11B4;BE89;1108 1162 11B4;
+BE8A;BE8A;1108 1162 11B5;BE8A;1108 1162 11B5;
+BE8B;BE8B;1108 1162 11B6;BE8B;1108 1162 11B6;
+BE8C;BE8C;1108 1162 11B7;BE8C;1108 1162 11B7;
+BE8D;BE8D;1108 1162 11B8;BE8D;1108 1162 11B8;
+BE8E;BE8E;1108 1162 11B9;BE8E;1108 1162 11B9;
+BE8F;BE8F;1108 1162 11BA;BE8F;1108 1162 11BA;
+BE90;BE90;1108 1162 11BB;BE90;1108 1162 11BB;
+BE91;BE91;1108 1162 11BC;BE91;1108 1162 11BC;
+BE92;BE92;1108 1162 11BD;BE92;1108 1162 11BD;
+BE93;BE93;1108 1162 11BE;BE93;1108 1162 11BE;
+BE94;BE94;1108 1162 11BF;BE94;1108 1162 11BF;
+BE95;BE95;1108 1162 11C0;BE95;1108 1162 11C0;
+BE96;BE96;1108 1162 11C1;BE96;1108 1162 11C1;
+BE97;BE97;1108 1162 11C2;BE97;1108 1162 11C2;
+BE98;BE98;1108 1163;BE98;1108 1163;
+BE99;BE99;1108 1163 11A8;BE99;1108 1163 11A8;
+BE9A;BE9A;1108 1163 11A9;BE9A;1108 1163 11A9;
+BE9B;BE9B;1108 1163 11AA;BE9B;1108 1163 11AA;
+BE9C;BE9C;1108 1163 11AB;BE9C;1108 1163 11AB;
+BE9D;BE9D;1108 1163 11AC;BE9D;1108 1163 11AC;
+BE9E;BE9E;1108 1163 11AD;BE9E;1108 1163 11AD;
+BE9F;BE9F;1108 1163 11AE;BE9F;1108 1163 11AE;
+BEA0;BEA0;1108 1163 11AF;BEA0;1108 1163 11AF;
+BEA1;BEA1;1108 1163 11B0;BEA1;1108 1163 11B0;
+BEA2;BEA2;1108 1163 11B1;BEA2;1108 1163 11B1;
+BEA3;BEA3;1108 1163 11B2;BEA3;1108 1163 11B2;
+BEA4;BEA4;1108 1163 11B3;BEA4;1108 1163 11B3;
+BEA5;BEA5;1108 1163 11B4;BEA5;1108 1163 11B4;
+BEA6;BEA6;1108 1163 11B5;BEA6;1108 1163 11B5;
+BEA7;BEA7;1108 1163 11B6;BEA7;1108 1163 11B6;
+BEA8;BEA8;1108 1163 11B7;BEA8;1108 1163 11B7;
+BEA9;BEA9;1108 1163 11B8;BEA9;1108 1163 11B8;
+BEAA;BEAA;1108 1163 11B9;BEAA;1108 1163 11B9;
+BEAB;BEAB;1108 1163 11BA;BEAB;1108 1163 11BA;
+BEAC;BEAC;1108 1163 11BB;BEAC;1108 1163 11BB;
+BEAD;BEAD;1108 1163 11BC;BEAD;1108 1163 11BC;
+BEAE;BEAE;1108 1163 11BD;BEAE;1108 1163 11BD;
+BEAF;BEAF;1108 1163 11BE;BEAF;1108 1163 11BE;
+BEB0;BEB0;1108 1163 11BF;BEB0;1108 1163 11BF;
+BEB1;BEB1;1108 1163 11C0;BEB1;1108 1163 11C0;
+BEB2;BEB2;1108 1163 11C1;BEB2;1108 1163 11C1;
+BEB3;BEB3;1108 1163 11C2;BEB3;1108 1163 11C2;
+BEB4;BEB4;1108 1164;BEB4;1108 1164;
+BEB5;BEB5;1108 1164 11A8;BEB5;1108 1164 11A8;
+BEB6;BEB6;1108 1164 11A9;BEB6;1108 1164 11A9;
+BEB7;BEB7;1108 1164 11AA;BEB7;1108 1164 11AA;
+BEB8;BEB8;1108 1164 11AB;BEB8;1108 1164 11AB;
+BEB9;BEB9;1108 1164 11AC;BEB9;1108 1164 11AC;
+BEBA;BEBA;1108 1164 11AD;BEBA;1108 1164 11AD;
+BEBB;BEBB;1108 1164 11AE;BEBB;1108 1164 11AE;
+BEBC;BEBC;1108 1164 11AF;BEBC;1108 1164 11AF;
+BEBD;BEBD;1108 1164 11B0;BEBD;1108 1164 11B0;
+BEBE;BEBE;1108 1164 11B1;BEBE;1108 1164 11B1;
+BEBF;BEBF;1108 1164 11B2;BEBF;1108 1164 11B2;
+BEC0;BEC0;1108 1164 11B3;BEC0;1108 1164 11B3;
+BEC1;BEC1;1108 1164 11B4;BEC1;1108 1164 11B4;
+BEC2;BEC2;1108 1164 11B5;BEC2;1108 1164 11B5;
+BEC3;BEC3;1108 1164 11B6;BEC3;1108 1164 11B6;
+BEC4;BEC4;1108 1164 11B7;BEC4;1108 1164 11B7;
+BEC5;BEC5;1108 1164 11B8;BEC5;1108 1164 11B8;
+BEC6;BEC6;1108 1164 11B9;BEC6;1108 1164 11B9;
+BEC7;BEC7;1108 1164 11BA;BEC7;1108 1164 11BA;
+BEC8;BEC8;1108 1164 11BB;BEC8;1108 1164 11BB;
+BEC9;BEC9;1108 1164 11BC;BEC9;1108 1164 11BC;
+BECA;BECA;1108 1164 11BD;BECA;1108 1164 11BD;
+BECB;BECB;1108 1164 11BE;BECB;1108 1164 11BE;
+BECC;BECC;1108 1164 11BF;BECC;1108 1164 11BF;
+BECD;BECD;1108 1164 11C0;BECD;1108 1164 11C0;
+BECE;BECE;1108 1164 11C1;BECE;1108 1164 11C1;
+BECF;BECF;1108 1164 11C2;BECF;1108 1164 11C2;
+BED0;BED0;1108 1165;BED0;1108 1165;
+BED1;BED1;1108 1165 11A8;BED1;1108 1165 11A8;
+BED2;BED2;1108 1165 11A9;BED2;1108 1165 11A9;
+BED3;BED3;1108 1165 11AA;BED3;1108 1165 11AA;
+BED4;BED4;1108 1165 11AB;BED4;1108 1165 11AB;
+BED5;BED5;1108 1165 11AC;BED5;1108 1165 11AC;
+BED6;BED6;1108 1165 11AD;BED6;1108 1165 11AD;
+BED7;BED7;1108 1165 11AE;BED7;1108 1165 11AE;
+BED8;BED8;1108 1165 11AF;BED8;1108 1165 11AF;
+BED9;BED9;1108 1165 11B0;BED9;1108 1165 11B0;
+BEDA;BEDA;1108 1165 11B1;BEDA;1108 1165 11B1;
+BEDB;BEDB;1108 1165 11B2;BEDB;1108 1165 11B2;
+BEDC;BEDC;1108 1165 11B3;BEDC;1108 1165 11B3;
+BEDD;BEDD;1108 1165 11B4;BEDD;1108 1165 11B4;
+BEDE;BEDE;1108 1165 11B5;BEDE;1108 1165 11B5;
+BEDF;BEDF;1108 1165 11B6;BEDF;1108 1165 11B6;
+BEE0;BEE0;1108 1165 11B7;BEE0;1108 1165 11B7;
+BEE1;BEE1;1108 1165 11B8;BEE1;1108 1165 11B8;
+BEE2;BEE2;1108 1165 11B9;BEE2;1108 1165 11B9;
+BEE3;BEE3;1108 1165 11BA;BEE3;1108 1165 11BA;
+BEE4;BEE4;1108 1165 11BB;BEE4;1108 1165 11BB;
+BEE5;BEE5;1108 1165 11BC;BEE5;1108 1165 11BC;
+BEE6;BEE6;1108 1165 11BD;BEE6;1108 1165 11BD;
+BEE7;BEE7;1108 1165 11BE;BEE7;1108 1165 11BE;
+BEE8;BEE8;1108 1165 11BF;BEE8;1108 1165 11BF;
+BEE9;BEE9;1108 1165 11C0;BEE9;1108 1165 11C0;
+BEEA;BEEA;1108 1165 11C1;BEEA;1108 1165 11C1;
+BEEB;BEEB;1108 1165 11C2;BEEB;1108 1165 11C2;
+BEEC;BEEC;1108 1166;BEEC;1108 1166;
+BEED;BEED;1108 1166 11A8;BEED;1108 1166 11A8;
+BEEE;BEEE;1108 1166 11A9;BEEE;1108 1166 11A9;
+BEEF;BEEF;1108 1166 11AA;BEEF;1108 1166 11AA;
+BEF0;BEF0;1108 1166 11AB;BEF0;1108 1166 11AB;
+BEF1;BEF1;1108 1166 11AC;BEF1;1108 1166 11AC;
+BEF2;BEF2;1108 1166 11AD;BEF2;1108 1166 11AD;
+BEF3;BEF3;1108 1166 11AE;BEF3;1108 1166 11AE;
+BEF4;BEF4;1108 1166 11AF;BEF4;1108 1166 11AF;
+BEF5;BEF5;1108 1166 11B0;BEF5;1108 1166 11B0;
+BEF6;BEF6;1108 1166 11B1;BEF6;1108 1166 11B1;
+BEF7;BEF7;1108 1166 11B2;BEF7;1108 1166 11B2;
+BEF8;BEF8;1108 1166 11B3;BEF8;1108 1166 11B3;
+BEF9;BEF9;1108 1166 11B4;BEF9;1108 1166 11B4;
+BEFA;BEFA;1108 1166 11B5;BEFA;1108 1166 11B5;
+BEFB;BEFB;1108 1166 11B6;BEFB;1108 1166 11B6;
+BEFC;BEFC;1108 1166 11B7;BEFC;1108 1166 11B7;
+BEFD;BEFD;1108 1166 11B8;BEFD;1108 1166 11B8;
+BEFE;BEFE;1108 1166 11B9;BEFE;1108 1166 11B9;
+BEFF;BEFF;1108 1166 11BA;BEFF;1108 1166 11BA;
+BF00;BF00;1108 1166 11BB;BF00;1108 1166 11BB;
+BF01;BF01;1108 1166 11BC;BF01;1108 1166 11BC;
+BF02;BF02;1108 1166 11BD;BF02;1108 1166 11BD;
+BF03;BF03;1108 1166 11BE;BF03;1108 1166 11BE;
+BF04;BF04;1108 1166 11BF;BF04;1108 1166 11BF;
+BF05;BF05;1108 1166 11C0;BF05;1108 1166 11C0;
+BF06;BF06;1108 1166 11C1;BF06;1108 1166 11C1;
+BF07;BF07;1108 1166 11C2;BF07;1108 1166 11C2;
+BF08;BF08;1108 1167;BF08;1108 1167;
+BF09;BF09;1108 1167 11A8;BF09;1108 1167 11A8;
+BF0A;BF0A;1108 1167 11A9;BF0A;1108 1167 11A9;
+BF0B;BF0B;1108 1167 11AA;BF0B;1108 1167 11AA;
+BF0C;BF0C;1108 1167 11AB;BF0C;1108 1167 11AB;
+BF0D;BF0D;1108 1167 11AC;BF0D;1108 1167 11AC;
+BF0E;BF0E;1108 1167 11AD;BF0E;1108 1167 11AD;
+BF0F;BF0F;1108 1167 11AE;BF0F;1108 1167 11AE;
+BF10;BF10;1108 1167 11AF;BF10;1108 1167 11AF;
+BF11;BF11;1108 1167 11B0;BF11;1108 1167 11B0;
+BF12;BF12;1108 1167 11B1;BF12;1108 1167 11B1;
+BF13;BF13;1108 1167 11B2;BF13;1108 1167 11B2;
+BF14;BF14;1108 1167 11B3;BF14;1108 1167 11B3;
+BF15;BF15;1108 1167 11B4;BF15;1108 1167 11B4;
+BF16;BF16;1108 1167 11B5;BF16;1108 1167 11B5;
+BF17;BF17;1108 1167 11B6;BF17;1108 1167 11B6;
+BF18;BF18;1108 1167 11B7;BF18;1108 1167 11B7;
+BF19;BF19;1108 1167 11B8;BF19;1108 1167 11B8;
+BF1A;BF1A;1108 1167 11B9;BF1A;1108 1167 11B9;
+BF1B;BF1B;1108 1167 11BA;BF1B;1108 1167 11BA;
+BF1C;BF1C;1108 1167 11BB;BF1C;1108 1167 11BB;
+BF1D;BF1D;1108 1167 11BC;BF1D;1108 1167 11BC;
+BF1E;BF1E;1108 1167 11BD;BF1E;1108 1167 11BD;
+BF1F;BF1F;1108 1167 11BE;BF1F;1108 1167 11BE;
+BF20;BF20;1108 1167 11BF;BF20;1108 1167 11BF;
+BF21;BF21;1108 1167 11C0;BF21;1108 1167 11C0;
+BF22;BF22;1108 1167 11C1;BF22;1108 1167 11C1;
+BF23;BF23;1108 1167 11C2;BF23;1108 1167 11C2;
+BF24;BF24;1108 1168;BF24;1108 1168;
+BF25;BF25;1108 1168 11A8;BF25;1108 1168 11A8;
+BF26;BF26;1108 1168 11A9;BF26;1108 1168 11A9;
+BF27;BF27;1108 1168 11AA;BF27;1108 1168 11AA;
+BF28;BF28;1108 1168 11AB;BF28;1108 1168 11AB;
+BF29;BF29;1108 1168 11AC;BF29;1108 1168 11AC;
+BF2A;BF2A;1108 1168 11AD;BF2A;1108 1168 11AD;
+BF2B;BF2B;1108 1168 11AE;BF2B;1108 1168 11AE;
+BF2C;BF2C;1108 1168 11AF;BF2C;1108 1168 11AF;
+BF2D;BF2D;1108 1168 11B0;BF2D;1108 1168 11B0;
+BF2E;BF2E;1108 1168 11B1;BF2E;1108 1168 11B1;
+BF2F;BF2F;1108 1168 11B2;BF2F;1108 1168 11B2;
+BF30;BF30;1108 1168 11B3;BF30;1108 1168 11B3;
+BF31;BF31;1108 1168 11B4;BF31;1108 1168 11B4;
+BF32;BF32;1108 1168 11B5;BF32;1108 1168 11B5;
+BF33;BF33;1108 1168 11B6;BF33;1108 1168 11B6;
+BF34;BF34;1108 1168 11B7;BF34;1108 1168 11B7;
+BF35;BF35;1108 1168 11B8;BF35;1108 1168 11B8;
+BF36;BF36;1108 1168 11B9;BF36;1108 1168 11B9;
+BF37;BF37;1108 1168 11BA;BF37;1108 1168 11BA;
+BF38;BF38;1108 1168 11BB;BF38;1108 1168 11BB;
+BF39;BF39;1108 1168 11BC;BF39;1108 1168 11BC;
+BF3A;BF3A;1108 1168 11BD;BF3A;1108 1168 11BD;
+BF3B;BF3B;1108 1168 11BE;BF3B;1108 1168 11BE;
+BF3C;BF3C;1108 1168 11BF;BF3C;1108 1168 11BF;
+BF3D;BF3D;1108 1168 11C0;BF3D;1108 1168 11C0;
+BF3E;BF3E;1108 1168 11C1;BF3E;1108 1168 11C1;
+BF3F;BF3F;1108 1168 11C2;BF3F;1108 1168 11C2;
+BF40;BF40;1108 1169;BF40;1108 1169;
+BF41;BF41;1108 1169 11A8;BF41;1108 1169 11A8;
+BF42;BF42;1108 1169 11A9;BF42;1108 1169 11A9;
+BF43;BF43;1108 1169 11AA;BF43;1108 1169 11AA;
+BF44;BF44;1108 1169 11AB;BF44;1108 1169 11AB;
+BF45;BF45;1108 1169 11AC;BF45;1108 1169 11AC;
+BF46;BF46;1108 1169 11AD;BF46;1108 1169 11AD;
+BF47;BF47;1108 1169 11AE;BF47;1108 1169 11AE;
+BF48;BF48;1108 1169 11AF;BF48;1108 1169 11AF;
+BF49;BF49;1108 1169 11B0;BF49;1108 1169 11B0;
+BF4A;BF4A;1108 1169 11B1;BF4A;1108 1169 11B1;
+BF4B;BF4B;1108 1169 11B2;BF4B;1108 1169 11B2;
+BF4C;BF4C;1108 1169 11B3;BF4C;1108 1169 11B3;
+BF4D;BF4D;1108 1169 11B4;BF4D;1108 1169 11B4;
+BF4E;BF4E;1108 1169 11B5;BF4E;1108 1169 11B5;
+BF4F;BF4F;1108 1169 11B6;BF4F;1108 1169 11B6;
+BF50;BF50;1108 1169 11B7;BF50;1108 1169 11B7;
+BF51;BF51;1108 1169 11B8;BF51;1108 1169 11B8;
+BF52;BF52;1108 1169 11B9;BF52;1108 1169 11B9;
+BF53;BF53;1108 1169 11BA;BF53;1108 1169 11BA;
+BF54;BF54;1108 1169 11BB;BF54;1108 1169 11BB;
+BF55;BF55;1108 1169 11BC;BF55;1108 1169 11BC;
+BF56;BF56;1108 1169 11BD;BF56;1108 1169 11BD;
+BF57;BF57;1108 1169 11BE;BF57;1108 1169 11BE;
+BF58;BF58;1108 1169 11BF;BF58;1108 1169 11BF;
+BF59;BF59;1108 1169 11C0;BF59;1108 1169 11C0;
+BF5A;BF5A;1108 1169 11C1;BF5A;1108 1169 11C1;
+BF5B;BF5B;1108 1169 11C2;BF5B;1108 1169 11C2;
+BF5C;BF5C;1108 116A;BF5C;1108 116A;
+BF5D;BF5D;1108 116A 11A8;BF5D;1108 116A 11A8;
+BF5E;BF5E;1108 116A 11A9;BF5E;1108 116A 11A9;
+BF5F;BF5F;1108 116A 11AA;BF5F;1108 116A 11AA;
+BF60;BF60;1108 116A 11AB;BF60;1108 116A 11AB;
+BF61;BF61;1108 116A 11AC;BF61;1108 116A 11AC;
+BF62;BF62;1108 116A 11AD;BF62;1108 116A 11AD;
+BF63;BF63;1108 116A 11AE;BF63;1108 116A 11AE;
+BF64;BF64;1108 116A 11AF;BF64;1108 116A 11AF;
+BF65;BF65;1108 116A 11B0;BF65;1108 116A 11B0;
+BF66;BF66;1108 116A 11B1;BF66;1108 116A 11B1;
+BF67;BF67;1108 116A 11B2;BF67;1108 116A 11B2;
+BF68;BF68;1108 116A 11B3;BF68;1108 116A 11B3;
+BF69;BF69;1108 116A 11B4;BF69;1108 116A 11B4;
+BF6A;BF6A;1108 116A 11B5;BF6A;1108 116A 11B5;
+BF6B;BF6B;1108 116A 11B6;BF6B;1108 116A 11B6;
+BF6C;BF6C;1108 116A 11B7;BF6C;1108 116A 11B7;
+BF6D;BF6D;1108 116A 11B8;BF6D;1108 116A 11B8;
+BF6E;BF6E;1108 116A 11B9;BF6E;1108 116A 11B9;
+BF6F;BF6F;1108 116A 11BA;BF6F;1108 116A 11BA;
+BF70;BF70;1108 116A 11BB;BF70;1108 116A 11BB;
+BF71;BF71;1108 116A 11BC;BF71;1108 116A 11BC;
+BF72;BF72;1108 116A 11BD;BF72;1108 116A 11BD;
+BF73;BF73;1108 116A 11BE;BF73;1108 116A 11BE;
+BF74;BF74;1108 116A 11BF;BF74;1108 116A 11BF;
+BF75;BF75;1108 116A 11C0;BF75;1108 116A 11C0;
+BF76;BF76;1108 116A 11C1;BF76;1108 116A 11C1;
+BF77;BF77;1108 116A 11C2;BF77;1108 116A 11C2;
+BF78;BF78;1108 116B;BF78;1108 116B;
+BF79;BF79;1108 116B 11A8;BF79;1108 116B 11A8;
+BF7A;BF7A;1108 116B 11A9;BF7A;1108 116B 11A9;
+BF7B;BF7B;1108 116B 11AA;BF7B;1108 116B 11AA;
+BF7C;BF7C;1108 116B 11AB;BF7C;1108 116B 11AB;
+BF7D;BF7D;1108 116B 11AC;BF7D;1108 116B 11AC;
+BF7E;BF7E;1108 116B 11AD;BF7E;1108 116B 11AD;
+BF7F;BF7F;1108 116B 11AE;BF7F;1108 116B 11AE;
+BF80;BF80;1108 116B 11AF;BF80;1108 116B 11AF;
+BF81;BF81;1108 116B 11B0;BF81;1108 116B 11B0;
+BF82;BF82;1108 116B 11B1;BF82;1108 116B 11B1;
+BF83;BF83;1108 116B 11B2;BF83;1108 116B 11B2;
+BF84;BF84;1108 116B 11B3;BF84;1108 116B 11B3;
+BF85;BF85;1108 116B 11B4;BF85;1108 116B 11B4;
+BF86;BF86;1108 116B 11B5;BF86;1108 116B 11B5;
+BF87;BF87;1108 116B 11B6;BF87;1108 116B 11B6;
+BF88;BF88;1108 116B 11B7;BF88;1108 116B 11B7;
+BF89;BF89;1108 116B 11B8;BF89;1108 116B 11B8;
+BF8A;BF8A;1108 116B 11B9;BF8A;1108 116B 11B9;
+BF8B;BF8B;1108 116B 11BA;BF8B;1108 116B 11BA;
+BF8C;BF8C;1108 116B 11BB;BF8C;1108 116B 11BB;
+BF8D;BF8D;1108 116B 11BC;BF8D;1108 116B 11BC;
+BF8E;BF8E;1108 116B 11BD;BF8E;1108 116B 11BD;
+BF8F;BF8F;1108 116B 11BE;BF8F;1108 116B 11BE;
+BF90;BF90;1108 116B 11BF;BF90;1108 116B 11BF;
+BF91;BF91;1108 116B 11C0;BF91;1108 116B 11C0;
+BF92;BF92;1108 116B 11C1;BF92;1108 116B 11C1;
+BF93;BF93;1108 116B 11C2;BF93;1108 116B 11C2;
+BF94;BF94;1108 116C;BF94;1108 116C;
+BF95;BF95;1108 116C 11A8;BF95;1108 116C 11A8;
+BF96;BF96;1108 116C 11A9;BF96;1108 116C 11A9;
+BF97;BF97;1108 116C 11AA;BF97;1108 116C 11AA;
+BF98;BF98;1108 116C 11AB;BF98;1108 116C 11AB;
+BF99;BF99;1108 116C 11AC;BF99;1108 116C 11AC;
+BF9A;BF9A;1108 116C 11AD;BF9A;1108 116C 11AD;
+BF9B;BF9B;1108 116C 11AE;BF9B;1108 116C 11AE;
+BF9C;BF9C;1108 116C 11AF;BF9C;1108 116C 11AF;
+BF9D;BF9D;1108 116C 11B0;BF9D;1108 116C 11B0;
+BF9E;BF9E;1108 116C 11B1;BF9E;1108 116C 11B1;
+BF9F;BF9F;1108 116C 11B2;BF9F;1108 116C 11B2;
+BFA0;BFA0;1108 116C 11B3;BFA0;1108 116C 11B3;
+BFA1;BFA1;1108 116C 11B4;BFA1;1108 116C 11B4;
+BFA2;BFA2;1108 116C 11B5;BFA2;1108 116C 11B5;
+BFA3;BFA3;1108 116C 11B6;BFA3;1108 116C 11B6;
+BFA4;BFA4;1108 116C 11B7;BFA4;1108 116C 11B7;
+BFA5;BFA5;1108 116C 11B8;BFA5;1108 116C 11B8;
+BFA6;BFA6;1108 116C 11B9;BFA6;1108 116C 11B9;
+BFA7;BFA7;1108 116C 11BA;BFA7;1108 116C 11BA;
+BFA8;BFA8;1108 116C 11BB;BFA8;1108 116C 11BB;
+BFA9;BFA9;1108 116C 11BC;BFA9;1108 116C 11BC;
+BFAA;BFAA;1108 116C 11BD;BFAA;1108 116C 11BD;
+BFAB;BFAB;1108 116C 11BE;BFAB;1108 116C 11BE;
+BFAC;BFAC;1108 116C 11BF;BFAC;1108 116C 11BF;
+BFAD;BFAD;1108 116C 11C0;BFAD;1108 116C 11C0;
+BFAE;BFAE;1108 116C 11C1;BFAE;1108 116C 11C1;
+BFAF;BFAF;1108 116C 11C2;BFAF;1108 116C 11C2;
+BFB0;BFB0;1108 116D;BFB0;1108 116D;
+BFB1;BFB1;1108 116D 11A8;BFB1;1108 116D 11A8;
+BFB2;BFB2;1108 116D 11A9;BFB2;1108 116D 11A9;
+BFB3;BFB3;1108 116D 11AA;BFB3;1108 116D 11AA;
+BFB4;BFB4;1108 116D 11AB;BFB4;1108 116D 11AB;
+BFB5;BFB5;1108 116D 11AC;BFB5;1108 116D 11AC;
+BFB6;BFB6;1108 116D 11AD;BFB6;1108 116D 11AD;
+BFB7;BFB7;1108 116D 11AE;BFB7;1108 116D 11AE;
+BFB8;BFB8;1108 116D 11AF;BFB8;1108 116D 11AF;
+BFB9;BFB9;1108 116D 11B0;BFB9;1108 116D 11B0;
+BFBA;BFBA;1108 116D 11B1;BFBA;1108 116D 11B1;
+BFBB;BFBB;1108 116D 11B2;BFBB;1108 116D 11B2;
+BFBC;BFBC;1108 116D 11B3;BFBC;1108 116D 11B3;
+BFBD;BFBD;1108 116D 11B4;BFBD;1108 116D 11B4;
+BFBE;BFBE;1108 116D 11B5;BFBE;1108 116D 11B5;
+BFBF;BFBF;1108 116D 11B6;BFBF;1108 116D 11B6;
+BFC0;BFC0;1108 116D 11B7;BFC0;1108 116D 11B7;
+BFC1;BFC1;1108 116D 11B8;BFC1;1108 116D 11B8;
+BFC2;BFC2;1108 116D 11B9;BFC2;1108 116D 11B9;
+BFC3;BFC3;1108 116D 11BA;BFC3;1108 116D 11BA;
+BFC4;BFC4;1108 116D 11BB;BFC4;1108 116D 11BB;
+BFC5;BFC5;1108 116D 11BC;BFC5;1108 116D 11BC;
+BFC6;BFC6;1108 116D 11BD;BFC6;1108 116D 11BD;
+BFC7;BFC7;1108 116D 11BE;BFC7;1108 116D 11BE;
+BFC8;BFC8;1108 116D 11BF;BFC8;1108 116D 11BF;
+BFC9;BFC9;1108 116D 11C0;BFC9;1108 116D 11C0;
+BFCA;BFCA;1108 116D 11C1;BFCA;1108 116D 11C1;
+BFCB;BFCB;1108 116D 11C2;BFCB;1108 116D 11C2;
+BFCC;BFCC;1108 116E;BFCC;1108 116E;
+BFCD;BFCD;1108 116E 11A8;BFCD;1108 116E 11A8;
+BFCE;BFCE;1108 116E 11A9;BFCE;1108 116E 11A9;
+BFCF;BFCF;1108 116E 11AA;BFCF;1108 116E 11AA;
+BFD0;BFD0;1108 116E 11AB;BFD0;1108 116E 11AB;
+BFD1;BFD1;1108 116E 11AC;BFD1;1108 116E 11AC;
+BFD2;BFD2;1108 116E 11AD;BFD2;1108 116E 11AD;
+BFD3;BFD3;1108 116E 11AE;BFD3;1108 116E 11AE;
+BFD4;BFD4;1108 116E 11AF;BFD4;1108 116E 11AF;
+BFD5;BFD5;1108 116E 11B0;BFD5;1108 116E 11B0;
+BFD6;BFD6;1108 116E 11B1;BFD6;1108 116E 11B1;
+BFD7;BFD7;1108 116E 11B2;BFD7;1108 116E 11B2;
+BFD8;BFD8;1108 116E 11B3;BFD8;1108 116E 11B3;
+BFD9;BFD9;1108 116E 11B4;BFD9;1108 116E 11B4;
+BFDA;BFDA;1108 116E 11B5;BFDA;1108 116E 11B5;
+BFDB;BFDB;1108 116E 11B6;BFDB;1108 116E 11B6;
+BFDC;BFDC;1108 116E 11B7;BFDC;1108 116E 11B7;
+BFDD;BFDD;1108 116E 11B8;BFDD;1108 116E 11B8;
+BFDE;BFDE;1108 116E 11B9;BFDE;1108 116E 11B9;
+BFDF;BFDF;1108 116E 11BA;BFDF;1108 116E 11BA;
+BFE0;BFE0;1108 116E 11BB;BFE0;1108 116E 11BB;
+BFE1;BFE1;1108 116E 11BC;BFE1;1108 116E 11BC;
+BFE2;BFE2;1108 116E 11BD;BFE2;1108 116E 11BD;
+BFE3;BFE3;1108 116E 11BE;BFE3;1108 116E 11BE;
+BFE4;BFE4;1108 116E 11BF;BFE4;1108 116E 11BF;
+BFE5;BFE5;1108 116E 11C0;BFE5;1108 116E 11C0;
+BFE6;BFE6;1108 116E 11C1;BFE6;1108 116E 11C1;
+BFE7;BFE7;1108 116E 11C2;BFE7;1108 116E 11C2;
+BFE8;BFE8;1108 116F;BFE8;1108 116F;
+BFE9;BFE9;1108 116F 11A8;BFE9;1108 116F 11A8;
+BFEA;BFEA;1108 116F 11A9;BFEA;1108 116F 11A9;
+BFEB;BFEB;1108 116F 11AA;BFEB;1108 116F 11AA;
+BFEC;BFEC;1108 116F 11AB;BFEC;1108 116F 11AB;
+BFED;BFED;1108 116F 11AC;BFED;1108 116F 11AC;
+BFEE;BFEE;1108 116F 11AD;BFEE;1108 116F 11AD;
+BFEF;BFEF;1108 116F 11AE;BFEF;1108 116F 11AE;
+BFF0;BFF0;1108 116F 11AF;BFF0;1108 116F 11AF;
+BFF1;BFF1;1108 116F 11B0;BFF1;1108 116F 11B0;
+BFF2;BFF2;1108 116F 11B1;BFF2;1108 116F 11B1;
+BFF3;BFF3;1108 116F 11B2;BFF3;1108 116F 11B2;
+BFF4;BFF4;1108 116F 11B3;BFF4;1108 116F 11B3;
+BFF5;BFF5;1108 116F 11B4;BFF5;1108 116F 11B4;
+BFF6;BFF6;1108 116F 11B5;BFF6;1108 116F 11B5;
+BFF7;BFF7;1108 116F 11B6;BFF7;1108 116F 11B6;
+BFF8;BFF8;1108 116F 11B7;BFF8;1108 116F 11B7;
+BFF9;BFF9;1108 116F 11B8;BFF9;1108 116F 11B8;
+BFFA;BFFA;1108 116F 11B9;BFFA;1108 116F 11B9;
+BFFB;BFFB;1108 116F 11BA;BFFB;1108 116F 11BA;
+BFFC;BFFC;1108 116F 11BB;BFFC;1108 116F 11BB;
+BFFD;BFFD;1108 116F 11BC;BFFD;1108 116F 11BC;
+BFFE;BFFE;1108 116F 11BD;BFFE;1108 116F 11BD;
+BFFF;BFFF;1108 116F 11BE;BFFF;1108 116F 11BE;
+C000;C000;1108 116F 11BF;C000;1108 116F 11BF;
+C001;C001;1108 116F 11C0;C001;1108 116F 11C0;
+C002;C002;1108 116F 11C1;C002;1108 116F 11C1;
+C003;C003;1108 116F 11C2;C003;1108 116F 11C2;
+C004;C004;1108 1170;C004;1108 1170;
+C005;C005;1108 1170 11A8;C005;1108 1170 11A8;
+C006;C006;1108 1170 11A9;C006;1108 1170 11A9;
+C007;C007;1108 1170 11AA;C007;1108 1170 11AA;
+C008;C008;1108 1170 11AB;C008;1108 1170 11AB;
+C009;C009;1108 1170 11AC;C009;1108 1170 11AC;
+C00A;C00A;1108 1170 11AD;C00A;1108 1170 11AD;
+C00B;C00B;1108 1170 11AE;C00B;1108 1170 11AE;
+C00C;C00C;1108 1170 11AF;C00C;1108 1170 11AF;
+C00D;C00D;1108 1170 11B0;C00D;1108 1170 11B0;
+C00E;C00E;1108 1170 11B1;C00E;1108 1170 11B1;
+C00F;C00F;1108 1170 11B2;C00F;1108 1170 11B2;
+C010;C010;1108 1170 11B3;C010;1108 1170 11B3;
+C011;C011;1108 1170 11B4;C011;1108 1170 11B4;
+C012;C012;1108 1170 11B5;C012;1108 1170 11B5;
+C013;C013;1108 1170 11B6;C013;1108 1170 11B6;
+C014;C014;1108 1170 11B7;C014;1108 1170 11B7;
+C015;C015;1108 1170 11B8;C015;1108 1170 11B8;
+C016;C016;1108 1170 11B9;C016;1108 1170 11B9;
+C017;C017;1108 1170 11BA;C017;1108 1170 11BA;
+C018;C018;1108 1170 11BB;C018;1108 1170 11BB;
+C019;C019;1108 1170 11BC;C019;1108 1170 11BC;
+C01A;C01A;1108 1170 11BD;C01A;1108 1170 11BD;
+C01B;C01B;1108 1170 11BE;C01B;1108 1170 11BE;
+C01C;C01C;1108 1170 11BF;C01C;1108 1170 11BF;
+C01D;C01D;1108 1170 11C0;C01D;1108 1170 11C0;
+C01E;C01E;1108 1170 11C1;C01E;1108 1170 11C1;
+C01F;C01F;1108 1170 11C2;C01F;1108 1170 11C2;
+C020;C020;1108 1171;C020;1108 1171;
+C021;C021;1108 1171 11A8;C021;1108 1171 11A8;
+C022;C022;1108 1171 11A9;C022;1108 1171 11A9;
+C023;C023;1108 1171 11AA;C023;1108 1171 11AA;
+C024;C024;1108 1171 11AB;C024;1108 1171 11AB;
+C025;C025;1108 1171 11AC;C025;1108 1171 11AC;
+C026;C026;1108 1171 11AD;C026;1108 1171 11AD;
+C027;C027;1108 1171 11AE;C027;1108 1171 11AE;
+C028;C028;1108 1171 11AF;C028;1108 1171 11AF;
+C029;C029;1108 1171 11B0;C029;1108 1171 11B0;
+C02A;C02A;1108 1171 11B1;C02A;1108 1171 11B1;
+C02B;C02B;1108 1171 11B2;C02B;1108 1171 11B2;
+C02C;C02C;1108 1171 11B3;C02C;1108 1171 11B3;
+C02D;C02D;1108 1171 11B4;C02D;1108 1171 11B4;
+C02E;C02E;1108 1171 11B5;C02E;1108 1171 11B5;
+C02F;C02F;1108 1171 11B6;C02F;1108 1171 11B6;
+C030;C030;1108 1171 11B7;C030;1108 1171 11B7;
+C031;C031;1108 1171 11B8;C031;1108 1171 11B8;
+C032;C032;1108 1171 11B9;C032;1108 1171 11B9;
+C033;C033;1108 1171 11BA;C033;1108 1171 11BA;
+C034;C034;1108 1171 11BB;C034;1108 1171 11BB;
+C035;C035;1108 1171 11BC;C035;1108 1171 11BC;
+C036;C036;1108 1171 11BD;C036;1108 1171 11BD;
+C037;C037;1108 1171 11BE;C037;1108 1171 11BE;
+C038;C038;1108 1171 11BF;C038;1108 1171 11BF;
+C039;C039;1108 1171 11C0;C039;1108 1171 11C0;
+C03A;C03A;1108 1171 11C1;C03A;1108 1171 11C1;
+C03B;C03B;1108 1171 11C2;C03B;1108 1171 11C2;
+C03C;C03C;1108 1172;C03C;1108 1172;
+C03D;C03D;1108 1172 11A8;C03D;1108 1172 11A8;
+C03E;C03E;1108 1172 11A9;C03E;1108 1172 11A9;
+C03F;C03F;1108 1172 11AA;C03F;1108 1172 11AA;
+C040;C040;1108 1172 11AB;C040;1108 1172 11AB;
+C041;C041;1108 1172 11AC;C041;1108 1172 11AC;
+C042;C042;1108 1172 11AD;C042;1108 1172 11AD;
+C043;C043;1108 1172 11AE;C043;1108 1172 11AE;
+C044;C044;1108 1172 11AF;C044;1108 1172 11AF;
+C045;C045;1108 1172 11B0;C045;1108 1172 11B0;
+C046;C046;1108 1172 11B1;C046;1108 1172 11B1;
+C047;C047;1108 1172 11B2;C047;1108 1172 11B2;
+C048;C048;1108 1172 11B3;C048;1108 1172 11B3;
+C049;C049;1108 1172 11B4;C049;1108 1172 11B4;
+C04A;C04A;1108 1172 11B5;C04A;1108 1172 11B5;
+C04B;C04B;1108 1172 11B6;C04B;1108 1172 11B6;
+C04C;C04C;1108 1172 11B7;C04C;1108 1172 11B7;
+C04D;C04D;1108 1172 11B8;C04D;1108 1172 11B8;
+C04E;C04E;1108 1172 11B9;C04E;1108 1172 11B9;
+C04F;C04F;1108 1172 11BA;C04F;1108 1172 11BA;
+C050;C050;1108 1172 11BB;C050;1108 1172 11BB;
+C051;C051;1108 1172 11BC;C051;1108 1172 11BC;
+C052;C052;1108 1172 11BD;C052;1108 1172 11BD;
+C053;C053;1108 1172 11BE;C053;1108 1172 11BE;
+C054;C054;1108 1172 11BF;C054;1108 1172 11BF;
+C055;C055;1108 1172 11C0;C055;1108 1172 11C0;
+C056;C056;1108 1172 11C1;C056;1108 1172 11C1;
+C057;C057;1108 1172 11C2;C057;1108 1172 11C2;
+C058;C058;1108 1173;C058;1108 1173;
+C059;C059;1108 1173 11A8;C059;1108 1173 11A8;
+C05A;C05A;1108 1173 11A9;C05A;1108 1173 11A9;
+C05B;C05B;1108 1173 11AA;C05B;1108 1173 11AA;
+C05C;C05C;1108 1173 11AB;C05C;1108 1173 11AB;
+C05D;C05D;1108 1173 11AC;C05D;1108 1173 11AC;
+C05E;C05E;1108 1173 11AD;C05E;1108 1173 11AD;
+C05F;C05F;1108 1173 11AE;C05F;1108 1173 11AE;
+C060;C060;1108 1173 11AF;C060;1108 1173 11AF;
+C061;C061;1108 1173 11B0;C061;1108 1173 11B0;
+C062;C062;1108 1173 11B1;C062;1108 1173 11B1;
+C063;C063;1108 1173 11B2;C063;1108 1173 11B2;
+C064;C064;1108 1173 11B3;C064;1108 1173 11B3;
+C065;C065;1108 1173 11B4;C065;1108 1173 11B4;
+C066;C066;1108 1173 11B5;C066;1108 1173 11B5;
+C067;C067;1108 1173 11B6;C067;1108 1173 11B6;
+C068;C068;1108 1173 11B7;C068;1108 1173 11B7;
+C069;C069;1108 1173 11B8;C069;1108 1173 11B8;
+C06A;C06A;1108 1173 11B9;C06A;1108 1173 11B9;
+C06B;C06B;1108 1173 11BA;C06B;1108 1173 11BA;
+C06C;C06C;1108 1173 11BB;C06C;1108 1173 11BB;
+C06D;C06D;1108 1173 11BC;C06D;1108 1173 11BC;
+C06E;C06E;1108 1173 11BD;C06E;1108 1173 11BD;
+C06F;C06F;1108 1173 11BE;C06F;1108 1173 11BE;
+C070;C070;1108 1173 11BF;C070;1108 1173 11BF;
+C071;C071;1108 1173 11C0;C071;1108 1173 11C0;
+C072;C072;1108 1173 11C1;C072;1108 1173 11C1;
+C073;C073;1108 1173 11C2;C073;1108 1173 11C2;
+C074;C074;1108 1174;C074;1108 1174;
+C075;C075;1108 1174 11A8;C075;1108 1174 11A8;
+C076;C076;1108 1174 11A9;C076;1108 1174 11A9;
+C077;C077;1108 1174 11AA;C077;1108 1174 11AA;
+C078;C078;1108 1174 11AB;C078;1108 1174 11AB;
+C079;C079;1108 1174 11AC;C079;1108 1174 11AC;
+C07A;C07A;1108 1174 11AD;C07A;1108 1174 11AD;
+C07B;C07B;1108 1174 11AE;C07B;1108 1174 11AE;
+C07C;C07C;1108 1174 11AF;C07C;1108 1174 11AF;
+C07D;C07D;1108 1174 11B0;C07D;1108 1174 11B0;
+C07E;C07E;1108 1174 11B1;C07E;1108 1174 11B1;
+C07F;C07F;1108 1174 11B2;C07F;1108 1174 11B2;
+C080;C080;1108 1174 11B3;C080;1108 1174 11B3;
+C081;C081;1108 1174 11B4;C081;1108 1174 11B4;
+C082;C082;1108 1174 11B5;C082;1108 1174 11B5;
+C083;C083;1108 1174 11B6;C083;1108 1174 11B6;
+C084;C084;1108 1174 11B7;C084;1108 1174 11B7;
+C085;C085;1108 1174 11B8;C085;1108 1174 11B8;
+C086;C086;1108 1174 11B9;C086;1108 1174 11B9;
+C087;C087;1108 1174 11BA;C087;1108 1174 11BA;
+C088;C088;1108 1174 11BB;C088;1108 1174 11BB;
+C089;C089;1108 1174 11BC;C089;1108 1174 11BC;
+C08A;C08A;1108 1174 11BD;C08A;1108 1174 11BD;
+C08B;C08B;1108 1174 11BE;C08B;1108 1174 11BE;
+C08C;C08C;1108 1174 11BF;C08C;1108 1174 11BF;
+C08D;C08D;1108 1174 11C0;C08D;1108 1174 11C0;
+C08E;C08E;1108 1174 11C1;C08E;1108 1174 11C1;
+C08F;C08F;1108 1174 11C2;C08F;1108 1174 11C2;
+C090;C090;1108 1175;C090;1108 1175;
+C091;C091;1108 1175 11A8;C091;1108 1175 11A8;
+C092;C092;1108 1175 11A9;C092;1108 1175 11A9;
+C093;C093;1108 1175 11AA;C093;1108 1175 11AA;
+C094;C094;1108 1175 11AB;C094;1108 1175 11AB;
+C095;C095;1108 1175 11AC;C095;1108 1175 11AC;
+C096;C096;1108 1175 11AD;C096;1108 1175 11AD;
+C097;C097;1108 1175 11AE;C097;1108 1175 11AE;
+C098;C098;1108 1175 11AF;C098;1108 1175 11AF;
+C099;C099;1108 1175 11B0;C099;1108 1175 11B0;
+C09A;C09A;1108 1175 11B1;C09A;1108 1175 11B1;
+C09B;C09B;1108 1175 11B2;C09B;1108 1175 11B2;
+C09C;C09C;1108 1175 11B3;C09C;1108 1175 11B3;
+C09D;C09D;1108 1175 11B4;C09D;1108 1175 11B4;
+C09E;C09E;1108 1175 11B5;C09E;1108 1175 11B5;
+C09F;C09F;1108 1175 11B6;C09F;1108 1175 11B6;
+C0A0;C0A0;1108 1175 11B7;C0A0;1108 1175 11B7;
+C0A1;C0A1;1108 1175 11B8;C0A1;1108 1175 11B8;
+C0A2;C0A2;1108 1175 11B9;C0A2;1108 1175 11B9;
+C0A3;C0A3;1108 1175 11BA;C0A3;1108 1175 11BA;
+C0A4;C0A4;1108 1175 11BB;C0A4;1108 1175 11BB;
+C0A5;C0A5;1108 1175 11BC;C0A5;1108 1175 11BC;
+C0A6;C0A6;1108 1175 11BD;C0A6;1108 1175 11BD;
+C0A7;C0A7;1108 1175 11BE;C0A7;1108 1175 11BE;
+C0A8;C0A8;1108 1175 11BF;C0A8;1108 1175 11BF;
+C0A9;C0A9;1108 1175 11C0;C0A9;1108 1175 11C0;
+C0AA;C0AA;1108 1175 11C1;C0AA;1108 1175 11C1;
+C0AB;C0AB;1108 1175 11C2;C0AB;1108 1175 11C2;
+C0AC;C0AC;1109 1161;C0AC;1109 1161;
+C0AD;C0AD;1109 1161 11A8;C0AD;1109 1161 11A8;
+C0AE;C0AE;1109 1161 11A9;C0AE;1109 1161 11A9;
+C0AF;C0AF;1109 1161 11AA;C0AF;1109 1161 11AA;
+C0B0;C0B0;1109 1161 11AB;C0B0;1109 1161 11AB;
+C0B1;C0B1;1109 1161 11AC;C0B1;1109 1161 11AC;
+C0B2;C0B2;1109 1161 11AD;C0B2;1109 1161 11AD;
+C0B3;C0B3;1109 1161 11AE;C0B3;1109 1161 11AE;
+C0B4;C0B4;1109 1161 11AF;C0B4;1109 1161 11AF;
+C0B5;C0B5;1109 1161 11B0;C0B5;1109 1161 11B0;
+C0B6;C0B6;1109 1161 11B1;C0B6;1109 1161 11B1;
+C0B7;C0B7;1109 1161 11B2;C0B7;1109 1161 11B2;
+C0B8;C0B8;1109 1161 11B3;C0B8;1109 1161 11B3;
+C0B9;C0B9;1109 1161 11B4;C0B9;1109 1161 11B4;
+C0BA;C0BA;1109 1161 11B5;C0BA;1109 1161 11B5;
+C0BB;C0BB;1109 1161 11B6;C0BB;1109 1161 11B6;
+C0BC;C0BC;1109 1161 11B7;C0BC;1109 1161 11B7;
+C0BD;C0BD;1109 1161 11B8;C0BD;1109 1161 11B8;
+C0BE;C0BE;1109 1161 11B9;C0BE;1109 1161 11B9;
+C0BF;C0BF;1109 1161 11BA;C0BF;1109 1161 11BA;
+C0C0;C0C0;1109 1161 11BB;C0C0;1109 1161 11BB;
+C0C1;C0C1;1109 1161 11BC;C0C1;1109 1161 11BC;
+C0C2;C0C2;1109 1161 11BD;C0C2;1109 1161 11BD;
+C0C3;C0C3;1109 1161 11BE;C0C3;1109 1161 11BE;
+C0C4;C0C4;1109 1161 11BF;C0C4;1109 1161 11BF;
+C0C5;C0C5;1109 1161 11C0;C0C5;1109 1161 11C0;
+C0C6;C0C6;1109 1161 11C1;C0C6;1109 1161 11C1;
+C0C7;C0C7;1109 1161 11C2;C0C7;1109 1161 11C2;
+C0C8;C0C8;1109 1162;C0C8;1109 1162;
+C0C9;C0C9;1109 1162 11A8;C0C9;1109 1162 11A8;
+C0CA;C0CA;1109 1162 11A9;C0CA;1109 1162 11A9;
+C0CB;C0CB;1109 1162 11AA;C0CB;1109 1162 11AA;
+C0CC;C0CC;1109 1162 11AB;C0CC;1109 1162 11AB;
+C0CD;C0CD;1109 1162 11AC;C0CD;1109 1162 11AC;
+C0CE;C0CE;1109 1162 11AD;C0CE;1109 1162 11AD;
+C0CF;C0CF;1109 1162 11AE;C0CF;1109 1162 11AE;
+C0D0;C0D0;1109 1162 11AF;C0D0;1109 1162 11AF;
+C0D1;C0D1;1109 1162 11B0;C0D1;1109 1162 11B0;
+C0D2;C0D2;1109 1162 11B1;C0D2;1109 1162 11B1;
+C0D3;C0D3;1109 1162 11B2;C0D3;1109 1162 11B2;
+C0D4;C0D4;1109 1162 11B3;C0D4;1109 1162 11B3;
+C0D5;C0D5;1109 1162 11B4;C0D5;1109 1162 11B4;
+C0D6;C0D6;1109 1162 11B5;C0D6;1109 1162 11B5;
+C0D7;C0D7;1109 1162 11B6;C0D7;1109 1162 11B6;
+C0D8;C0D8;1109 1162 11B7;C0D8;1109 1162 11B7;
+C0D9;C0D9;1109 1162 11B8;C0D9;1109 1162 11B8;
+C0DA;C0DA;1109 1162 11B9;C0DA;1109 1162 11B9;
+C0DB;C0DB;1109 1162 11BA;C0DB;1109 1162 11BA;
+C0DC;C0DC;1109 1162 11BB;C0DC;1109 1162 11BB;
+C0DD;C0DD;1109 1162 11BC;C0DD;1109 1162 11BC;
+C0DE;C0DE;1109 1162 11BD;C0DE;1109 1162 11BD;
+C0DF;C0DF;1109 1162 11BE;C0DF;1109 1162 11BE;
+C0E0;C0E0;1109 1162 11BF;C0E0;1109 1162 11BF;
+C0E1;C0E1;1109 1162 11C0;C0E1;1109 1162 11C0;
+C0E2;C0E2;1109 1162 11C1;C0E2;1109 1162 11C1;
+C0E3;C0E3;1109 1162 11C2;C0E3;1109 1162 11C2;
+C0E4;C0E4;1109 1163;C0E4;1109 1163;
+C0E5;C0E5;1109 1163 11A8;C0E5;1109 1163 11A8;
+C0E6;C0E6;1109 1163 11A9;C0E6;1109 1163 11A9;
+C0E7;C0E7;1109 1163 11AA;C0E7;1109 1163 11AA;
+C0E8;C0E8;1109 1163 11AB;C0E8;1109 1163 11AB;
+C0E9;C0E9;1109 1163 11AC;C0E9;1109 1163 11AC;
+C0EA;C0EA;1109 1163 11AD;C0EA;1109 1163 11AD;
+C0EB;C0EB;1109 1163 11AE;C0EB;1109 1163 11AE;
+C0EC;C0EC;1109 1163 11AF;C0EC;1109 1163 11AF;
+C0ED;C0ED;1109 1163 11B0;C0ED;1109 1163 11B0;
+C0EE;C0EE;1109 1163 11B1;C0EE;1109 1163 11B1;
+C0EF;C0EF;1109 1163 11B2;C0EF;1109 1163 11B2;
+C0F0;C0F0;1109 1163 11B3;C0F0;1109 1163 11B3;
+C0F1;C0F1;1109 1163 11B4;C0F1;1109 1163 11B4;
+C0F2;C0F2;1109 1163 11B5;C0F2;1109 1163 11B5;
+C0F3;C0F3;1109 1163 11B6;C0F3;1109 1163 11B6;
+C0F4;C0F4;1109 1163 11B7;C0F4;1109 1163 11B7;
+C0F5;C0F5;1109 1163 11B8;C0F5;1109 1163 11B8;
+C0F6;C0F6;1109 1163 11B9;C0F6;1109 1163 11B9;
+C0F7;C0F7;1109 1163 11BA;C0F7;1109 1163 11BA;
+C0F8;C0F8;1109 1163 11BB;C0F8;1109 1163 11BB;
+C0F9;C0F9;1109 1163 11BC;C0F9;1109 1163 11BC;
+C0FA;C0FA;1109 1163 11BD;C0FA;1109 1163 11BD;
+C0FB;C0FB;1109 1163 11BE;C0FB;1109 1163 11BE;
+C0FC;C0FC;1109 1163 11BF;C0FC;1109 1163 11BF;
+C0FD;C0FD;1109 1163 11C0;C0FD;1109 1163 11C0;
+C0FE;C0FE;1109 1163 11C1;C0FE;1109 1163 11C1;
+C0FF;C0FF;1109 1163 11C2;C0FF;1109 1163 11C2;
+C100;C100;1109 1164;C100;1109 1164;
+C101;C101;1109 1164 11A8;C101;1109 1164 11A8;
+C102;C102;1109 1164 11A9;C102;1109 1164 11A9;
+C103;C103;1109 1164 11AA;C103;1109 1164 11AA;
+C104;C104;1109 1164 11AB;C104;1109 1164 11AB;
+C105;C105;1109 1164 11AC;C105;1109 1164 11AC;
+C106;C106;1109 1164 11AD;C106;1109 1164 11AD;
+C107;C107;1109 1164 11AE;C107;1109 1164 11AE;
+C108;C108;1109 1164 11AF;C108;1109 1164 11AF;
+C109;C109;1109 1164 11B0;C109;1109 1164 11B0;
+C10A;C10A;1109 1164 11B1;C10A;1109 1164 11B1;
+C10B;C10B;1109 1164 11B2;C10B;1109 1164 11B2;
+C10C;C10C;1109 1164 11B3;C10C;1109 1164 11B3;
+C10D;C10D;1109 1164 11B4;C10D;1109 1164 11B4;
+C10E;C10E;1109 1164 11B5;C10E;1109 1164 11B5;
+C10F;C10F;1109 1164 11B6;C10F;1109 1164 11B6;
+C110;C110;1109 1164 11B7;C110;1109 1164 11B7;
+C111;C111;1109 1164 11B8;C111;1109 1164 11B8;
+C112;C112;1109 1164 11B9;C112;1109 1164 11B9;
+C113;C113;1109 1164 11BA;C113;1109 1164 11BA;
+C114;C114;1109 1164 11BB;C114;1109 1164 11BB;
+C115;C115;1109 1164 11BC;C115;1109 1164 11BC;
+C116;C116;1109 1164 11BD;C116;1109 1164 11BD;
+C117;C117;1109 1164 11BE;C117;1109 1164 11BE;
+C118;C118;1109 1164 11BF;C118;1109 1164 11BF;
+C119;C119;1109 1164 11C0;C119;1109 1164 11C0;
+C11A;C11A;1109 1164 11C1;C11A;1109 1164 11C1;
+C11B;C11B;1109 1164 11C2;C11B;1109 1164 11C2;
+C11C;C11C;1109 1165;C11C;1109 1165;
+C11D;C11D;1109 1165 11A8;C11D;1109 1165 11A8;
+C11E;C11E;1109 1165 11A9;C11E;1109 1165 11A9;
+C11F;C11F;1109 1165 11AA;C11F;1109 1165 11AA;
+C120;C120;1109 1165 11AB;C120;1109 1165 11AB;
+C121;C121;1109 1165 11AC;C121;1109 1165 11AC;
+C122;C122;1109 1165 11AD;C122;1109 1165 11AD;
+C123;C123;1109 1165 11AE;C123;1109 1165 11AE;
+C124;C124;1109 1165 11AF;C124;1109 1165 11AF;
+C125;C125;1109 1165 11B0;C125;1109 1165 11B0;
+C126;C126;1109 1165 11B1;C126;1109 1165 11B1;
+C127;C127;1109 1165 11B2;C127;1109 1165 11B2;
+C128;C128;1109 1165 11B3;C128;1109 1165 11B3;
+C129;C129;1109 1165 11B4;C129;1109 1165 11B4;
+C12A;C12A;1109 1165 11B5;C12A;1109 1165 11B5;
+C12B;C12B;1109 1165 11B6;C12B;1109 1165 11B6;
+C12C;C12C;1109 1165 11B7;C12C;1109 1165 11B7;
+C12D;C12D;1109 1165 11B8;C12D;1109 1165 11B8;
+C12E;C12E;1109 1165 11B9;C12E;1109 1165 11B9;
+C12F;C12F;1109 1165 11BA;C12F;1109 1165 11BA;
+C130;C130;1109 1165 11BB;C130;1109 1165 11BB;
+C131;C131;1109 1165 11BC;C131;1109 1165 11BC;
+C132;C132;1109 1165 11BD;C132;1109 1165 11BD;
+C133;C133;1109 1165 11BE;C133;1109 1165 11BE;
+C134;C134;1109 1165 11BF;C134;1109 1165 11BF;
+C135;C135;1109 1165 11C0;C135;1109 1165 11C0;
+C136;C136;1109 1165 11C1;C136;1109 1165 11C1;
+C137;C137;1109 1165 11C2;C137;1109 1165 11C2;
+C138;C138;1109 1166;C138;1109 1166;
+C139;C139;1109 1166 11A8;C139;1109 1166 11A8;
+C13A;C13A;1109 1166 11A9;C13A;1109 1166 11A9;
+C13B;C13B;1109 1166 11AA;C13B;1109 1166 11AA;
+C13C;C13C;1109 1166 11AB;C13C;1109 1166 11AB;
+C13D;C13D;1109 1166 11AC;C13D;1109 1166 11AC;
+C13E;C13E;1109 1166 11AD;C13E;1109 1166 11AD;
+C13F;C13F;1109 1166 11AE;C13F;1109 1166 11AE;
+C140;C140;1109 1166 11AF;C140;1109 1166 11AF;
+C141;C141;1109 1166 11B0;C141;1109 1166 11B0;
+C142;C142;1109 1166 11B1;C142;1109 1166 11B1;
+C143;C143;1109 1166 11B2;C143;1109 1166 11B2;
+C144;C144;1109 1166 11B3;C144;1109 1166 11B3;
+C145;C145;1109 1166 11B4;C145;1109 1166 11B4;
+C146;C146;1109 1166 11B5;C146;1109 1166 11B5;
+C147;C147;1109 1166 11B6;C147;1109 1166 11B6;
+C148;C148;1109 1166 11B7;C148;1109 1166 11B7;
+C149;C149;1109 1166 11B8;C149;1109 1166 11B8;
+C14A;C14A;1109 1166 11B9;C14A;1109 1166 11B9;
+C14B;C14B;1109 1166 11BA;C14B;1109 1166 11BA;
+C14C;C14C;1109 1166 11BB;C14C;1109 1166 11BB;
+C14D;C14D;1109 1166 11BC;C14D;1109 1166 11BC;
+C14E;C14E;1109 1166 11BD;C14E;1109 1166 11BD;
+C14F;C14F;1109 1166 11BE;C14F;1109 1166 11BE;
+C150;C150;1109 1166 11BF;C150;1109 1166 11BF;
+C151;C151;1109 1166 11C0;C151;1109 1166 11C0;
+C152;C152;1109 1166 11C1;C152;1109 1166 11C1;
+C153;C153;1109 1166 11C2;C153;1109 1166 11C2;
+C154;C154;1109 1167;C154;1109 1167;
+C155;C155;1109 1167 11A8;C155;1109 1167 11A8;
+C156;C156;1109 1167 11A9;C156;1109 1167 11A9;
+C157;C157;1109 1167 11AA;C157;1109 1167 11AA;
+C158;C158;1109 1167 11AB;C158;1109 1167 11AB;
+C159;C159;1109 1167 11AC;C159;1109 1167 11AC;
+C15A;C15A;1109 1167 11AD;C15A;1109 1167 11AD;
+C15B;C15B;1109 1167 11AE;C15B;1109 1167 11AE;
+C15C;C15C;1109 1167 11AF;C15C;1109 1167 11AF;
+C15D;C15D;1109 1167 11B0;C15D;1109 1167 11B0;
+C15E;C15E;1109 1167 11B1;C15E;1109 1167 11B1;
+C15F;C15F;1109 1167 11B2;C15F;1109 1167 11B2;
+C160;C160;1109 1167 11B3;C160;1109 1167 11B3;
+C161;C161;1109 1167 11B4;C161;1109 1167 11B4;
+C162;C162;1109 1167 11B5;C162;1109 1167 11B5;
+C163;C163;1109 1167 11B6;C163;1109 1167 11B6;
+C164;C164;1109 1167 11B7;C164;1109 1167 11B7;
+C165;C165;1109 1167 11B8;C165;1109 1167 11B8;
+C166;C166;1109 1167 11B9;C166;1109 1167 11B9;
+C167;C167;1109 1167 11BA;C167;1109 1167 11BA;
+C168;C168;1109 1167 11BB;C168;1109 1167 11BB;
+C169;C169;1109 1167 11BC;C169;1109 1167 11BC;
+C16A;C16A;1109 1167 11BD;C16A;1109 1167 11BD;
+C16B;C16B;1109 1167 11BE;C16B;1109 1167 11BE;
+C16C;C16C;1109 1167 11BF;C16C;1109 1167 11BF;
+C16D;C16D;1109 1167 11C0;C16D;1109 1167 11C0;
+C16E;C16E;1109 1167 11C1;C16E;1109 1167 11C1;
+C16F;C16F;1109 1167 11C2;C16F;1109 1167 11C2;
+C170;C170;1109 1168;C170;1109 1168;
+C171;C171;1109 1168 11A8;C171;1109 1168 11A8;
+C172;C172;1109 1168 11A9;C172;1109 1168 11A9;
+C173;C173;1109 1168 11AA;C173;1109 1168 11AA;
+C174;C174;1109 1168 11AB;C174;1109 1168 11AB;
+C175;C175;1109 1168 11AC;C175;1109 1168 11AC;
+C176;C176;1109 1168 11AD;C176;1109 1168 11AD;
+C177;C177;1109 1168 11AE;C177;1109 1168 11AE;
+C178;C178;1109 1168 11AF;C178;1109 1168 11AF;
+C179;C179;1109 1168 11B0;C179;1109 1168 11B0;
+C17A;C17A;1109 1168 11B1;C17A;1109 1168 11B1;
+C17B;C17B;1109 1168 11B2;C17B;1109 1168 11B2;
+C17C;C17C;1109 1168 11B3;C17C;1109 1168 11B3;
+C17D;C17D;1109 1168 11B4;C17D;1109 1168 11B4;
+C17E;C17E;1109 1168 11B5;C17E;1109 1168 11B5;
+C17F;C17F;1109 1168 11B6;C17F;1109 1168 11B6;
+C180;C180;1109 1168 11B7;C180;1109 1168 11B7;
+C181;C181;1109 1168 11B8;C181;1109 1168 11B8;
+C182;C182;1109 1168 11B9;C182;1109 1168 11B9;
+C183;C183;1109 1168 11BA;C183;1109 1168 11BA;
+C184;C184;1109 1168 11BB;C184;1109 1168 11BB;
+C185;C185;1109 1168 11BC;C185;1109 1168 11BC;
+C186;C186;1109 1168 11BD;C186;1109 1168 11BD;
+C187;C187;1109 1168 11BE;C187;1109 1168 11BE;
+C188;C188;1109 1168 11BF;C188;1109 1168 11BF;
+C189;C189;1109 1168 11C0;C189;1109 1168 11C0;
+C18A;C18A;1109 1168 11C1;C18A;1109 1168 11C1;
+C18B;C18B;1109 1168 11C2;C18B;1109 1168 11C2;
+C18C;C18C;1109 1169;C18C;1109 1169;
+C18D;C18D;1109 1169 11A8;C18D;1109 1169 11A8;
+C18E;C18E;1109 1169 11A9;C18E;1109 1169 11A9;
+C18F;C18F;1109 1169 11AA;C18F;1109 1169 11AA;
+C190;C190;1109 1169 11AB;C190;1109 1169 11AB;
+C191;C191;1109 1169 11AC;C191;1109 1169 11AC;
+C192;C192;1109 1169 11AD;C192;1109 1169 11AD;
+C193;C193;1109 1169 11AE;C193;1109 1169 11AE;
+C194;C194;1109 1169 11AF;C194;1109 1169 11AF;
+C195;C195;1109 1169 11B0;C195;1109 1169 11B0;
+C196;C196;1109 1169 11B1;C196;1109 1169 11B1;
+C197;C197;1109 1169 11B2;C197;1109 1169 11B2;
+C198;C198;1109 1169 11B3;C198;1109 1169 11B3;
+C199;C199;1109 1169 11B4;C199;1109 1169 11B4;
+C19A;C19A;1109 1169 11B5;C19A;1109 1169 11B5;
+C19B;C19B;1109 1169 11B6;C19B;1109 1169 11B6;
+C19C;C19C;1109 1169 11B7;C19C;1109 1169 11B7;
+C19D;C19D;1109 1169 11B8;C19D;1109 1169 11B8;
+C19E;C19E;1109 1169 11B9;C19E;1109 1169 11B9;
+C19F;C19F;1109 1169 11BA;C19F;1109 1169 11BA;
+C1A0;C1A0;1109 1169 11BB;C1A0;1109 1169 11BB;
+C1A1;C1A1;1109 1169 11BC;C1A1;1109 1169 11BC;
+C1A2;C1A2;1109 1169 11BD;C1A2;1109 1169 11BD;
+C1A3;C1A3;1109 1169 11BE;C1A3;1109 1169 11BE;
+C1A4;C1A4;1109 1169 11BF;C1A4;1109 1169 11BF;
+C1A5;C1A5;1109 1169 11C0;C1A5;1109 1169 11C0;
+C1A6;C1A6;1109 1169 11C1;C1A6;1109 1169 11C1;
+C1A7;C1A7;1109 1169 11C2;C1A7;1109 1169 11C2;
+C1A8;C1A8;1109 116A;C1A8;1109 116A;
+C1A9;C1A9;1109 116A 11A8;C1A9;1109 116A 11A8;
+C1AA;C1AA;1109 116A 11A9;C1AA;1109 116A 11A9;
+C1AB;C1AB;1109 116A 11AA;C1AB;1109 116A 11AA;
+C1AC;C1AC;1109 116A 11AB;C1AC;1109 116A 11AB;
+C1AD;C1AD;1109 116A 11AC;C1AD;1109 116A 11AC;
+C1AE;C1AE;1109 116A 11AD;C1AE;1109 116A 11AD;
+C1AF;C1AF;1109 116A 11AE;C1AF;1109 116A 11AE;
+C1B0;C1B0;1109 116A 11AF;C1B0;1109 116A 11AF;
+C1B1;C1B1;1109 116A 11B0;C1B1;1109 116A 11B0;
+C1B2;C1B2;1109 116A 11B1;C1B2;1109 116A 11B1;
+C1B3;C1B3;1109 116A 11B2;C1B3;1109 116A 11B2;
+C1B4;C1B4;1109 116A 11B3;C1B4;1109 116A 11B3;
+C1B5;C1B5;1109 116A 11B4;C1B5;1109 116A 11B4;
+C1B6;C1B6;1109 116A 11B5;C1B6;1109 116A 11B5;
+C1B7;C1B7;1109 116A 11B6;C1B7;1109 116A 11B6;
+C1B8;C1B8;1109 116A 11B7;C1B8;1109 116A 11B7;
+C1B9;C1B9;1109 116A 11B8;C1B9;1109 116A 11B8;
+C1BA;C1BA;1109 116A 11B9;C1BA;1109 116A 11B9;
+C1BB;C1BB;1109 116A 11BA;C1BB;1109 116A 11BA;
+C1BC;C1BC;1109 116A 11BB;C1BC;1109 116A 11BB;
+C1BD;C1BD;1109 116A 11BC;C1BD;1109 116A 11BC;
+C1BE;C1BE;1109 116A 11BD;C1BE;1109 116A 11BD;
+C1BF;C1BF;1109 116A 11BE;C1BF;1109 116A 11BE;
+C1C0;C1C0;1109 116A 11BF;C1C0;1109 116A 11BF;
+C1C1;C1C1;1109 116A 11C0;C1C1;1109 116A 11C0;
+C1C2;C1C2;1109 116A 11C1;C1C2;1109 116A 11C1;
+C1C3;C1C3;1109 116A 11C2;C1C3;1109 116A 11C2;
+C1C4;C1C4;1109 116B;C1C4;1109 116B;
+C1C5;C1C5;1109 116B 11A8;C1C5;1109 116B 11A8;
+C1C6;C1C6;1109 116B 11A9;C1C6;1109 116B 11A9;
+C1C7;C1C7;1109 116B 11AA;C1C7;1109 116B 11AA;
+C1C8;C1C8;1109 116B 11AB;C1C8;1109 116B 11AB;
+C1C9;C1C9;1109 116B 11AC;C1C9;1109 116B 11AC;
+C1CA;C1CA;1109 116B 11AD;C1CA;1109 116B 11AD;
+C1CB;C1CB;1109 116B 11AE;C1CB;1109 116B 11AE;
+C1CC;C1CC;1109 116B 11AF;C1CC;1109 116B 11AF;
+C1CD;C1CD;1109 116B 11B0;C1CD;1109 116B 11B0;
+C1CE;C1CE;1109 116B 11B1;C1CE;1109 116B 11B1;
+C1CF;C1CF;1109 116B 11B2;C1CF;1109 116B 11B2;
+C1D0;C1D0;1109 116B 11B3;C1D0;1109 116B 11B3;
+C1D1;C1D1;1109 116B 11B4;C1D1;1109 116B 11B4;
+C1D2;C1D2;1109 116B 11B5;C1D2;1109 116B 11B5;
+C1D3;C1D3;1109 116B 11B6;C1D3;1109 116B 11B6;
+C1D4;C1D4;1109 116B 11B7;C1D4;1109 116B 11B7;
+C1D5;C1D5;1109 116B 11B8;C1D5;1109 116B 11B8;
+C1D6;C1D6;1109 116B 11B9;C1D6;1109 116B 11B9;
+C1D7;C1D7;1109 116B 11BA;C1D7;1109 116B 11BA;
+C1D8;C1D8;1109 116B 11BB;C1D8;1109 116B 11BB;
+C1D9;C1D9;1109 116B 11BC;C1D9;1109 116B 11BC;
+C1DA;C1DA;1109 116B 11BD;C1DA;1109 116B 11BD;
+C1DB;C1DB;1109 116B 11BE;C1DB;1109 116B 11BE;
+C1DC;C1DC;1109 116B 11BF;C1DC;1109 116B 11BF;
+C1DD;C1DD;1109 116B 11C0;C1DD;1109 116B 11C0;
+C1DE;C1DE;1109 116B 11C1;C1DE;1109 116B 11C1;
+C1DF;C1DF;1109 116B 11C2;C1DF;1109 116B 11C2;
+C1E0;C1E0;1109 116C;C1E0;1109 116C;
+C1E1;C1E1;1109 116C 11A8;C1E1;1109 116C 11A8;
+C1E2;C1E2;1109 116C 11A9;C1E2;1109 116C 11A9;
+C1E3;C1E3;1109 116C 11AA;C1E3;1109 116C 11AA;
+C1E4;C1E4;1109 116C 11AB;C1E4;1109 116C 11AB;
+C1E5;C1E5;1109 116C 11AC;C1E5;1109 116C 11AC;
+C1E6;C1E6;1109 116C 11AD;C1E6;1109 116C 11AD;
+C1E7;C1E7;1109 116C 11AE;C1E7;1109 116C 11AE;
+C1E8;C1E8;1109 116C 11AF;C1E8;1109 116C 11AF;
+C1E9;C1E9;1109 116C 11B0;C1E9;1109 116C 11B0;
+C1EA;C1EA;1109 116C 11B1;C1EA;1109 116C 11B1;
+C1EB;C1EB;1109 116C 11B2;C1EB;1109 116C 11B2;
+C1EC;C1EC;1109 116C 11B3;C1EC;1109 116C 11B3;
+C1ED;C1ED;1109 116C 11B4;C1ED;1109 116C 11B4;
+C1EE;C1EE;1109 116C 11B5;C1EE;1109 116C 11B5;
+C1EF;C1EF;1109 116C 11B6;C1EF;1109 116C 11B6;
+C1F0;C1F0;1109 116C 11B7;C1F0;1109 116C 11B7;
+C1F1;C1F1;1109 116C 11B8;C1F1;1109 116C 11B8;
+C1F2;C1F2;1109 116C 11B9;C1F2;1109 116C 11B9;
+C1F3;C1F3;1109 116C 11BA;C1F3;1109 116C 11BA;
+C1F4;C1F4;1109 116C 11BB;C1F4;1109 116C 11BB;
+C1F5;C1F5;1109 116C 11BC;C1F5;1109 116C 11BC;
+C1F6;C1F6;1109 116C 11BD;C1F6;1109 116C 11BD;
+C1F7;C1F7;1109 116C 11BE;C1F7;1109 116C 11BE;
+C1F8;C1F8;1109 116C 11BF;C1F8;1109 116C 11BF;
+C1F9;C1F9;1109 116C 11C0;C1F9;1109 116C 11C0;
+C1FA;C1FA;1109 116C 11C1;C1FA;1109 116C 11C1;
+C1FB;C1FB;1109 116C 11C2;C1FB;1109 116C 11C2;
+C1FC;C1FC;1109 116D;C1FC;1109 116D;
+C1FD;C1FD;1109 116D 11A8;C1FD;1109 116D 11A8;
+C1FE;C1FE;1109 116D 11A9;C1FE;1109 116D 11A9;
+C1FF;C1FF;1109 116D 11AA;C1FF;1109 116D 11AA;
+C200;C200;1109 116D 11AB;C200;1109 116D 11AB;
+C201;C201;1109 116D 11AC;C201;1109 116D 11AC;
+C202;C202;1109 116D 11AD;C202;1109 116D 11AD;
+C203;C203;1109 116D 11AE;C203;1109 116D 11AE;
+C204;C204;1109 116D 11AF;C204;1109 116D 11AF;
+C205;C205;1109 116D 11B0;C205;1109 116D 11B0;
+C206;C206;1109 116D 11B1;C206;1109 116D 11B1;
+C207;C207;1109 116D 11B2;C207;1109 116D 11B2;
+C208;C208;1109 116D 11B3;C208;1109 116D 11B3;
+C209;C209;1109 116D 11B4;C209;1109 116D 11B4;
+C20A;C20A;1109 116D 11B5;C20A;1109 116D 11B5;
+C20B;C20B;1109 116D 11B6;C20B;1109 116D 11B6;
+C20C;C20C;1109 116D 11B7;C20C;1109 116D 11B7;
+C20D;C20D;1109 116D 11B8;C20D;1109 116D 11B8;
+C20E;C20E;1109 116D 11B9;C20E;1109 116D 11B9;
+C20F;C20F;1109 116D 11BA;C20F;1109 116D 11BA;
+C210;C210;1109 116D 11BB;C210;1109 116D 11BB;
+C211;C211;1109 116D 11BC;C211;1109 116D 11BC;
+C212;C212;1109 116D 11BD;C212;1109 116D 11BD;
+C213;C213;1109 116D 11BE;C213;1109 116D 11BE;
+C214;C214;1109 116D 11BF;C214;1109 116D 11BF;
+C215;C215;1109 116D 11C0;C215;1109 116D 11C0;
+C216;C216;1109 116D 11C1;C216;1109 116D 11C1;
+C217;C217;1109 116D 11C2;C217;1109 116D 11C2;
+C218;C218;1109 116E;C218;1109 116E;
+C219;C219;1109 116E 11A8;C219;1109 116E 11A8;
+C21A;C21A;1109 116E 11A9;C21A;1109 116E 11A9;
+C21B;C21B;1109 116E 11AA;C21B;1109 116E 11AA;
+C21C;C21C;1109 116E 11AB;C21C;1109 116E 11AB;
+C21D;C21D;1109 116E 11AC;C21D;1109 116E 11AC;
+C21E;C21E;1109 116E 11AD;C21E;1109 116E 11AD;
+C21F;C21F;1109 116E 11AE;C21F;1109 116E 11AE;
+C220;C220;1109 116E 11AF;C220;1109 116E 11AF;
+C221;C221;1109 116E 11B0;C221;1109 116E 11B0;
+C222;C222;1109 116E 11B1;C222;1109 116E 11B1;
+C223;C223;1109 116E 11B2;C223;1109 116E 11B2;
+C224;C224;1109 116E 11B3;C224;1109 116E 11B3;
+C225;C225;1109 116E 11B4;C225;1109 116E 11B4;
+C226;C226;1109 116E 11B5;C226;1109 116E 11B5;
+C227;C227;1109 116E 11B6;C227;1109 116E 11B6;
+C228;C228;1109 116E 11B7;C228;1109 116E 11B7;
+C229;C229;1109 116E 11B8;C229;1109 116E 11B8;
+C22A;C22A;1109 116E 11B9;C22A;1109 116E 11B9;
+C22B;C22B;1109 116E 11BA;C22B;1109 116E 11BA;
+C22C;C22C;1109 116E 11BB;C22C;1109 116E 11BB;
+C22D;C22D;1109 116E 11BC;C22D;1109 116E 11BC;
+C22E;C22E;1109 116E 11BD;C22E;1109 116E 11BD;
+C22F;C22F;1109 116E 11BE;C22F;1109 116E 11BE;
+C230;C230;1109 116E 11BF;C230;1109 116E 11BF;
+C231;C231;1109 116E 11C0;C231;1109 116E 11C0;
+C232;C232;1109 116E 11C1;C232;1109 116E 11C1;
+C233;C233;1109 116E 11C2;C233;1109 116E 11C2;
+C234;C234;1109 116F;C234;1109 116F;
+C235;C235;1109 116F 11A8;C235;1109 116F 11A8;
+C236;C236;1109 116F 11A9;C236;1109 116F 11A9;
+C237;C237;1109 116F 11AA;C237;1109 116F 11AA;
+C238;C238;1109 116F 11AB;C238;1109 116F 11AB;
+C239;C239;1109 116F 11AC;C239;1109 116F 11AC;
+C23A;C23A;1109 116F 11AD;C23A;1109 116F 11AD;
+C23B;C23B;1109 116F 11AE;C23B;1109 116F 11AE;
+C23C;C23C;1109 116F 11AF;C23C;1109 116F 11AF;
+C23D;C23D;1109 116F 11B0;C23D;1109 116F 11B0;
+C23E;C23E;1109 116F 11B1;C23E;1109 116F 11B1;
+C23F;C23F;1109 116F 11B2;C23F;1109 116F 11B2;
+C240;C240;1109 116F 11B3;C240;1109 116F 11B3;
+C241;C241;1109 116F 11B4;C241;1109 116F 11B4;
+C242;C242;1109 116F 11B5;C242;1109 116F 11B5;
+C243;C243;1109 116F 11B6;C243;1109 116F 11B6;
+C244;C244;1109 116F 11B7;C244;1109 116F 11B7;
+C245;C245;1109 116F 11B8;C245;1109 116F 11B8;
+C246;C246;1109 116F 11B9;C246;1109 116F 11B9;
+C247;C247;1109 116F 11BA;C247;1109 116F 11BA;
+C248;C248;1109 116F 11BB;C248;1109 116F 11BB;
+C249;C249;1109 116F 11BC;C249;1109 116F 11BC;
+C24A;C24A;1109 116F 11BD;C24A;1109 116F 11BD;
+C24B;C24B;1109 116F 11BE;C24B;1109 116F 11BE;
+C24C;C24C;1109 116F 11BF;C24C;1109 116F 11BF;
+C24D;C24D;1109 116F 11C0;C24D;1109 116F 11C0;
+C24E;C24E;1109 116F 11C1;C24E;1109 116F 11C1;
+C24F;C24F;1109 116F 11C2;C24F;1109 116F 11C2;
+C250;C250;1109 1170;C250;1109 1170;
+C251;C251;1109 1170 11A8;C251;1109 1170 11A8;
+C252;C252;1109 1170 11A9;C252;1109 1170 11A9;
+C253;C253;1109 1170 11AA;C253;1109 1170 11AA;
+C254;C254;1109 1170 11AB;C254;1109 1170 11AB;
+C255;C255;1109 1170 11AC;C255;1109 1170 11AC;
+C256;C256;1109 1170 11AD;C256;1109 1170 11AD;
+C257;C257;1109 1170 11AE;C257;1109 1170 11AE;
+C258;C258;1109 1170 11AF;C258;1109 1170 11AF;
+C259;C259;1109 1170 11B0;C259;1109 1170 11B0;
+C25A;C25A;1109 1170 11B1;C25A;1109 1170 11B1;
+C25B;C25B;1109 1170 11B2;C25B;1109 1170 11B2;
+C25C;C25C;1109 1170 11B3;C25C;1109 1170 11B3;
+C25D;C25D;1109 1170 11B4;C25D;1109 1170 11B4;
+C25E;C25E;1109 1170 11B5;C25E;1109 1170 11B5;
+C25F;C25F;1109 1170 11B6;C25F;1109 1170 11B6;
+C260;C260;1109 1170 11B7;C260;1109 1170 11B7;
+C261;C261;1109 1170 11B8;C261;1109 1170 11B8;
+C262;C262;1109 1170 11B9;C262;1109 1170 11B9;
+C263;C263;1109 1170 11BA;C263;1109 1170 11BA;
+C264;C264;1109 1170 11BB;C264;1109 1170 11BB;
+C265;C265;1109 1170 11BC;C265;1109 1170 11BC;
+C266;C266;1109 1170 11BD;C266;1109 1170 11BD;
+C267;C267;1109 1170 11BE;C267;1109 1170 11BE;
+C268;C268;1109 1170 11BF;C268;1109 1170 11BF;
+C269;C269;1109 1170 11C0;C269;1109 1170 11C0;
+C26A;C26A;1109 1170 11C1;C26A;1109 1170 11C1;
+C26B;C26B;1109 1170 11C2;C26B;1109 1170 11C2;
+C26C;C26C;1109 1171;C26C;1109 1171;
+C26D;C26D;1109 1171 11A8;C26D;1109 1171 11A8;
+C26E;C26E;1109 1171 11A9;C26E;1109 1171 11A9;
+C26F;C26F;1109 1171 11AA;C26F;1109 1171 11AA;
+C270;C270;1109 1171 11AB;C270;1109 1171 11AB;
+C271;C271;1109 1171 11AC;C271;1109 1171 11AC;
+C272;C272;1109 1171 11AD;C272;1109 1171 11AD;
+C273;C273;1109 1171 11AE;C273;1109 1171 11AE;
+C274;C274;1109 1171 11AF;C274;1109 1171 11AF;
+C275;C275;1109 1171 11B0;C275;1109 1171 11B0;
+C276;C276;1109 1171 11B1;C276;1109 1171 11B1;
+C277;C277;1109 1171 11B2;C277;1109 1171 11B2;
+C278;C278;1109 1171 11B3;C278;1109 1171 11B3;
+C279;C279;1109 1171 11B4;C279;1109 1171 11B4;
+C27A;C27A;1109 1171 11B5;C27A;1109 1171 11B5;
+C27B;C27B;1109 1171 11B6;C27B;1109 1171 11B6;
+C27C;C27C;1109 1171 11B7;C27C;1109 1171 11B7;
+C27D;C27D;1109 1171 11B8;C27D;1109 1171 11B8;
+C27E;C27E;1109 1171 11B9;C27E;1109 1171 11B9;
+C27F;C27F;1109 1171 11BA;C27F;1109 1171 11BA;
+C280;C280;1109 1171 11BB;C280;1109 1171 11BB;
+C281;C281;1109 1171 11BC;C281;1109 1171 11BC;
+C282;C282;1109 1171 11BD;C282;1109 1171 11BD;
+C283;C283;1109 1171 11BE;C283;1109 1171 11BE;
+C284;C284;1109 1171 11BF;C284;1109 1171 11BF;
+C285;C285;1109 1171 11C0;C285;1109 1171 11C0;
+C286;C286;1109 1171 11C1;C286;1109 1171 11C1;
+C287;C287;1109 1171 11C2;C287;1109 1171 11C2;
+C288;C288;1109 1172;C288;1109 1172;
+C289;C289;1109 1172 11A8;C289;1109 1172 11A8;
+C28A;C28A;1109 1172 11A9;C28A;1109 1172 11A9;
+C28B;C28B;1109 1172 11AA;C28B;1109 1172 11AA;
+C28C;C28C;1109 1172 11AB;C28C;1109 1172 11AB;
+C28D;C28D;1109 1172 11AC;C28D;1109 1172 11AC;
+C28E;C28E;1109 1172 11AD;C28E;1109 1172 11AD;
+C28F;C28F;1109 1172 11AE;C28F;1109 1172 11AE;
+C290;C290;1109 1172 11AF;C290;1109 1172 11AF;
+C291;C291;1109 1172 11B0;C291;1109 1172 11B0;
+C292;C292;1109 1172 11B1;C292;1109 1172 11B1;
+C293;C293;1109 1172 11B2;C293;1109 1172 11B2;
+C294;C294;1109 1172 11B3;C294;1109 1172 11B3;
+C295;C295;1109 1172 11B4;C295;1109 1172 11B4;
+C296;C296;1109 1172 11B5;C296;1109 1172 11B5;
+C297;C297;1109 1172 11B6;C297;1109 1172 11B6;
+C298;C298;1109 1172 11B7;C298;1109 1172 11B7;
+C299;C299;1109 1172 11B8;C299;1109 1172 11B8;
+C29A;C29A;1109 1172 11B9;C29A;1109 1172 11B9;
+C29B;C29B;1109 1172 11BA;C29B;1109 1172 11BA;
+C29C;C29C;1109 1172 11BB;C29C;1109 1172 11BB;
+C29D;C29D;1109 1172 11BC;C29D;1109 1172 11BC;
+C29E;C29E;1109 1172 11BD;C29E;1109 1172 11BD;
+C29F;C29F;1109 1172 11BE;C29F;1109 1172 11BE;
+C2A0;C2A0;1109 1172 11BF;C2A0;1109 1172 11BF;
+C2A1;C2A1;1109 1172 11C0;C2A1;1109 1172 11C0;
+C2A2;C2A2;1109 1172 11C1;C2A2;1109 1172 11C1;
+C2A3;C2A3;1109 1172 11C2;C2A3;1109 1172 11C2;
+C2A4;C2A4;1109 1173;C2A4;1109 1173;
+C2A5;C2A5;1109 1173 11A8;C2A5;1109 1173 11A8;
+C2A6;C2A6;1109 1173 11A9;C2A6;1109 1173 11A9;
+C2A7;C2A7;1109 1173 11AA;C2A7;1109 1173 11AA;
+C2A8;C2A8;1109 1173 11AB;C2A8;1109 1173 11AB;
+C2A9;C2A9;1109 1173 11AC;C2A9;1109 1173 11AC;
+C2AA;C2AA;1109 1173 11AD;C2AA;1109 1173 11AD;
+C2AB;C2AB;1109 1173 11AE;C2AB;1109 1173 11AE;
+C2AC;C2AC;1109 1173 11AF;C2AC;1109 1173 11AF;
+C2AD;C2AD;1109 1173 11B0;C2AD;1109 1173 11B0;
+C2AE;C2AE;1109 1173 11B1;C2AE;1109 1173 11B1;
+C2AF;C2AF;1109 1173 11B2;C2AF;1109 1173 11B2;
+C2B0;C2B0;1109 1173 11B3;C2B0;1109 1173 11B3;
+C2B1;C2B1;1109 1173 11B4;C2B1;1109 1173 11B4;
+C2B2;C2B2;1109 1173 11B5;C2B2;1109 1173 11B5;
+C2B3;C2B3;1109 1173 11B6;C2B3;1109 1173 11B6;
+C2B4;C2B4;1109 1173 11B7;C2B4;1109 1173 11B7;
+C2B5;C2B5;1109 1173 11B8;C2B5;1109 1173 11B8;
+C2B6;C2B6;1109 1173 11B9;C2B6;1109 1173 11B9;
+C2B7;C2B7;1109 1173 11BA;C2B7;1109 1173 11BA;
+C2B8;C2B8;1109 1173 11BB;C2B8;1109 1173 11BB;
+C2B9;C2B9;1109 1173 11BC;C2B9;1109 1173 11BC;
+C2BA;C2BA;1109 1173 11BD;C2BA;1109 1173 11BD;
+C2BB;C2BB;1109 1173 11BE;C2BB;1109 1173 11BE;
+C2BC;C2BC;1109 1173 11BF;C2BC;1109 1173 11BF;
+C2BD;C2BD;1109 1173 11C0;C2BD;1109 1173 11C0;
+C2BE;C2BE;1109 1173 11C1;C2BE;1109 1173 11C1;
+C2BF;C2BF;1109 1173 11C2;C2BF;1109 1173 11C2;
+C2C0;C2C0;1109 1174;C2C0;1109 1174;
+C2C1;C2C1;1109 1174 11A8;C2C1;1109 1174 11A8;
+C2C2;C2C2;1109 1174 11A9;C2C2;1109 1174 11A9;
+C2C3;C2C3;1109 1174 11AA;C2C3;1109 1174 11AA;
+C2C4;C2C4;1109 1174 11AB;C2C4;1109 1174 11AB;
+C2C5;C2C5;1109 1174 11AC;C2C5;1109 1174 11AC;
+C2C6;C2C6;1109 1174 11AD;C2C6;1109 1174 11AD;
+C2C7;C2C7;1109 1174 11AE;C2C7;1109 1174 11AE;
+C2C8;C2C8;1109 1174 11AF;C2C8;1109 1174 11AF;
+C2C9;C2C9;1109 1174 11B0;C2C9;1109 1174 11B0;
+C2CA;C2CA;1109 1174 11B1;C2CA;1109 1174 11B1;
+C2CB;C2CB;1109 1174 11B2;C2CB;1109 1174 11B2;
+C2CC;C2CC;1109 1174 11B3;C2CC;1109 1174 11B3;
+C2CD;C2CD;1109 1174 11B4;C2CD;1109 1174 11B4;
+C2CE;C2CE;1109 1174 11B5;C2CE;1109 1174 11B5;
+C2CF;C2CF;1109 1174 11B6;C2CF;1109 1174 11B6;
+C2D0;C2D0;1109 1174 11B7;C2D0;1109 1174 11B7;
+C2D1;C2D1;1109 1174 11B8;C2D1;1109 1174 11B8;
+C2D2;C2D2;1109 1174 11B9;C2D2;1109 1174 11B9;
+C2D3;C2D3;1109 1174 11BA;C2D3;1109 1174 11BA;
+C2D4;C2D4;1109 1174 11BB;C2D4;1109 1174 11BB;
+C2D5;C2D5;1109 1174 11BC;C2D5;1109 1174 11BC;
+C2D6;C2D6;1109 1174 11BD;C2D6;1109 1174 11BD;
+C2D7;C2D7;1109 1174 11BE;C2D7;1109 1174 11BE;
+C2D8;C2D8;1109 1174 11BF;C2D8;1109 1174 11BF;
+C2D9;C2D9;1109 1174 11C0;C2D9;1109 1174 11C0;
+C2DA;C2DA;1109 1174 11C1;C2DA;1109 1174 11C1;
+C2DB;C2DB;1109 1174 11C2;C2DB;1109 1174 11C2;
+C2DC;C2DC;1109 1175;C2DC;1109 1175;
+C2DD;C2DD;1109 1175 11A8;C2DD;1109 1175 11A8;
+C2DE;C2DE;1109 1175 11A9;C2DE;1109 1175 11A9;
+C2DF;C2DF;1109 1175 11AA;C2DF;1109 1175 11AA;
+C2E0;C2E0;1109 1175 11AB;C2E0;1109 1175 11AB;
+C2E1;C2E1;1109 1175 11AC;C2E1;1109 1175 11AC;
+C2E2;C2E2;1109 1175 11AD;C2E2;1109 1175 11AD;
+C2E3;C2E3;1109 1175 11AE;C2E3;1109 1175 11AE;
+C2E4;C2E4;1109 1175 11AF;C2E4;1109 1175 11AF;
+C2E5;C2E5;1109 1175 11B0;C2E5;1109 1175 11B0;
+C2E6;C2E6;1109 1175 11B1;C2E6;1109 1175 11B1;
+C2E7;C2E7;1109 1175 11B2;C2E7;1109 1175 11B2;
+C2E8;C2E8;1109 1175 11B3;C2E8;1109 1175 11B3;
+C2E9;C2E9;1109 1175 11B4;C2E9;1109 1175 11B4;
+C2EA;C2EA;1109 1175 11B5;C2EA;1109 1175 11B5;
+C2EB;C2EB;1109 1175 11B6;C2EB;1109 1175 11B6;
+C2EC;C2EC;1109 1175 11B7;C2EC;1109 1175 11B7;
+C2ED;C2ED;1109 1175 11B8;C2ED;1109 1175 11B8;
+C2EE;C2EE;1109 1175 11B9;C2EE;1109 1175 11B9;
+C2EF;C2EF;1109 1175 11BA;C2EF;1109 1175 11BA;
+C2F0;C2F0;1109 1175 11BB;C2F0;1109 1175 11BB;
+C2F1;C2F1;1109 1175 11BC;C2F1;1109 1175 11BC;
+C2F2;C2F2;1109 1175 11BD;C2F2;1109 1175 11BD;
+C2F3;C2F3;1109 1175 11BE;C2F3;1109 1175 11BE;
+C2F4;C2F4;1109 1175 11BF;C2F4;1109 1175 11BF;
+C2F5;C2F5;1109 1175 11C0;C2F5;1109 1175 11C0;
+C2F6;C2F6;1109 1175 11C1;C2F6;1109 1175 11C1;
+C2F7;C2F7;1109 1175 11C2;C2F7;1109 1175 11C2;
+C2F8;C2F8;110A 1161;C2F8;110A 1161;
+C2F9;C2F9;110A 1161 11A8;C2F9;110A 1161 11A8;
+C2FA;C2FA;110A 1161 11A9;C2FA;110A 1161 11A9;
+C2FB;C2FB;110A 1161 11AA;C2FB;110A 1161 11AA;
+C2FC;C2FC;110A 1161 11AB;C2FC;110A 1161 11AB;
+C2FD;C2FD;110A 1161 11AC;C2FD;110A 1161 11AC;
+C2FE;C2FE;110A 1161 11AD;C2FE;110A 1161 11AD;
+C2FF;C2FF;110A 1161 11AE;C2FF;110A 1161 11AE;
+C300;C300;110A 1161 11AF;C300;110A 1161 11AF;
+C301;C301;110A 1161 11B0;C301;110A 1161 11B0;
+C302;C302;110A 1161 11B1;C302;110A 1161 11B1;
+C303;C303;110A 1161 11B2;C303;110A 1161 11B2;
+C304;C304;110A 1161 11B3;C304;110A 1161 11B3;
+C305;C305;110A 1161 11B4;C305;110A 1161 11B4;
+C306;C306;110A 1161 11B5;C306;110A 1161 11B5;
+C307;C307;110A 1161 11B6;C307;110A 1161 11B6;
+C308;C308;110A 1161 11B7;C308;110A 1161 11B7;
+C309;C309;110A 1161 11B8;C309;110A 1161 11B8;
+C30A;C30A;110A 1161 11B9;C30A;110A 1161 11B9;
+C30B;C30B;110A 1161 11BA;C30B;110A 1161 11BA;
+C30C;C30C;110A 1161 11BB;C30C;110A 1161 11BB;
+C30D;C30D;110A 1161 11BC;C30D;110A 1161 11BC;
+C30E;C30E;110A 1161 11BD;C30E;110A 1161 11BD;
+C30F;C30F;110A 1161 11BE;C30F;110A 1161 11BE;
+C310;C310;110A 1161 11BF;C310;110A 1161 11BF;
+C311;C311;110A 1161 11C0;C311;110A 1161 11C0;
+C312;C312;110A 1161 11C1;C312;110A 1161 11C1;
+C313;C313;110A 1161 11C2;C313;110A 1161 11C2;
+C314;C314;110A 1162;C314;110A 1162;
+C315;C315;110A 1162 11A8;C315;110A 1162 11A8;
+C316;C316;110A 1162 11A9;C316;110A 1162 11A9;
+C317;C317;110A 1162 11AA;C317;110A 1162 11AA;
+C318;C318;110A 1162 11AB;C318;110A 1162 11AB;
+C319;C319;110A 1162 11AC;C319;110A 1162 11AC;
+C31A;C31A;110A 1162 11AD;C31A;110A 1162 11AD;
+C31B;C31B;110A 1162 11AE;C31B;110A 1162 11AE;
+C31C;C31C;110A 1162 11AF;C31C;110A 1162 11AF;
+C31D;C31D;110A 1162 11B0;C31D;110A 1162 11B0;
+C31E;C31E;110A 1162 11B1;C31E;110A 1162 11B1;
+C31F;C31F;110A 1162 11B2;C31F;110A 1162 11B2;
+C320;C320;110A 1162 11B3;C320;110A 1162 11B3;
+C321;C321;110A 1162 11B4;C321;110A 1162 11B4;
+C322;C322;110A 1162 11B5;C322;110A 1162 11B5;
+C323;C323;110A 1162 11B6;C323;110A 1162 11B6;
+C324;C324;110A 1162 11B7;C324;110A 1162 11B7;
+C325;C325;110A 1162 11B8;C325;110A 1162 11B8;
+C326;C326;110A 1162 11B9;C326;110A 1162 11B9;
+C327;C327;110A 1162 11BA;C327;110A 1162 11BA;
+C328;C328;110A 1162 11BB;C328;110A 1162 11BB;
+C329;C329;110A 1162 11BC;C329;110A 1162 11BC;
+C32A;C32A;110A 1162 11BD;C32A;110A 1162 11BD;
+C32B;C32B;110A 1162 11BE;C32B;110A 1162 11BE;
+C32C;C32C;110A 1162 11BF;C32C;110A 1162 11BF;
+C32D;C32D;110A 1162 11C0;C32D;110A 1162 11C0;
+C32E;C32E;110A 1162 11C1;C32E;110A 1162 11C1;
+C32F;C32F;110A 1162 11C2;C32F;110A 1162 11C2;
+C330;C330;110A 1163;C330;110A 1163;
+C331;C331;110A 1163 11A8;C331;110A 1163 11A8;
+C332;C332;110A 1163 11A9;C332;110A 1163 11A9;
+C333;C333;110A 1163 11AA;C333;110A 1163 11AA;
+C334;C334;110A 1163 11AB;C334;110A 1163 11AB;
+C335;C335;110A 1163 11AC;C335;110A 1163 11AC;
+C336;C336;110A 1163 11AD;C336;110A 1163 11AD;
+C337;C337;110A 1163 11AE;C337;110A 1163 11AE;
+C338;C338;110A 1163 11AF;C338;110A 1163 11AF;
+C339;C339;110A 1163 11B0;C339;110A 1163 11B0;
+C33A;C33A;110A 1163 11B1;C33A;110A 1163 11B1;
+C33B;C33B;110A 1163 11B2;C33B;110A 1163 11B2;
+C33C;C33C;110A 1163 11B3;C33C;110A 1163 11B3;
+C33D;C33D;110A 1163 11B4;C33D;110A 1163 11B4;
+C33E;C33E;110A 1163 11B5;C33E;110A 1163 11B5;
+C33F;C33F;110A 1163 11B6;C33F;110A 1163 11B6;
+C340;C340;110A 1163 11B7;C340;110A 1163 11B7;
+C341;C341;110A 1163 11B8;C341;110A 1163 11B8;
+C342;C342;110A 1163 11B9;C342;110A 1163 11B9;
+C343;C343;110A 1163 11BA;C343;110A 1163 11BA;
+C344;C344;110A 1163 11BB;C344;110A 1163 11BB;
+C345;C345;110A 1163 11BC;C345;110A 1163 11BC;
+C346;C346;110A 1163 11BD;C346;110A 1163 11BD;
+C347;C347;110A 1163 11BE;C347;110A 1163 11BE;
+C348;C348;110A 1163 11BF;C348;110A 1163 11BF;
+C349;C349;110A 1163 11C0;C349;110A 1163 11C0;
+C34A;C34A;110A 1163 11C1;C34A;110A 1163 11C1;
+C34B;C34B;110A 1163 11C2;C34B;110A 1163 11C2;
+C34C;C34C;110A 1164;C34C;110A 1164;
+C34D;C34D;110A 1164 11A8;C34D;110A 1164 11A8;
+C34E;C34E;110A 1164 11A9;C34E;110A 1164 11A9;
+C34F;C34F;110A 1164 11AA;C34F;110A 1164 11AA;
+C350;C350;110A 1164 11AB;C350;110A 1164 11AB;
+C351;C351;110A 1164 11AC;C351;110A 1164 11AC;
+C352;C352;110A 1164 11AD;C352;110A 1164 11AD;
+C353;C353;110A 1164 11AE;C353;110A 1164 11AE;
+C354;C354;110A 1164 11AF;C354;110A 1164 11AF;
+C355;C355;110A 1164 11B0;C355;110A 1164 11B0;
+C356;C356;110A 1164 11B1;C356;110A 1164 11B1;
+C357;C357;110A 1164 11B2;C357;110A 1164 11B2;
+C358;C358;110A 1164 11B3;C358;110A 1164 11B3;
+C359;C359;110A 1164 11B4;C359;110A 1164 11B4;
+C35A;C35A;110A 1164 11B5;C35A;110A 1164 11B5;
+C35B;C35B;110A 1164 11B6;C35B;110A 1164 11B6;
+C35C;C35C;110A 1164 11B7;C35C;110A 1164 11B7;
+C35D;C35D;110A 1164 11B8;C35D;110A 1164 11B8;
+C35E;C35E;110A 1164 11B9;C35E;110A 1164 11B9;
+C35F;C35F;110A 1164 11BA;C35F;110A 1164 11BA;
+C360;C360;110A 1164 11BB;C360;110A 1164 11BB;
+C361;C361;110A 1164 11BC;C361;110A 1164 11BC;
+C362;C362;110A 1164 11BD;C362;110A 1164 11BD;
+C363;C363;110A 1164 11BE;C363;110A 1164 11BE;
+C364;C364;110A 1164 11BF;C364;110A 1164 11BF;
+C365;C365;110A 1164 11C0;C365;110A 1164 11C0;
+C366;C366;110A 1164 11C1;C366;110A 1164 11C1;
+C367;C367;110A 1164 11C2;C367;110A 1164 11C2;
+C368;C368;110A 1165;C368;110A 1165;
+C369;C369;110A 1165 11A8;C369;110A 1165 11A8;
+C36A;C36A;110A 1165 11A9;C36A;110A 1165 11A9;
+C36B;C36B;110A 1165 11AA;C36B;110A 1165 11AA;
+C36C;C36C;110A 1165 11AB;C36C;110A 1165 11AB;
+C36D;C36D;110A 1165 11AC;C36D;110A 1165 11AC;
+C36E;C36E;110A 1165 11AD;C36E;110A 1165 11AD;
+C36F;C36F;110A 1165 11AE;C36F;110A 1165 11AE;
+C370;C370;110A 1165 11AF;C370;110A 1165 11AF;
+C371;C371;110A 1165 11B0;C371;110A 1165 11B0;
+C372;C372;110A 1165 11B1;C372;110A 1165 11B1;
+C373;C373;110A 1165 11B2;C373;110A 1165 11B2;
+C374;C374;110A 1165 11B3;C374;110A 1165 11B3;
+C375;C375;110A 1165 11B4;C375;110A 1165 11B4;
+C376;C376;110A 1165 11B5;C376;110A 1165 11B5;
+C377;C377;110A 1165 11B6;C377;110A 1165 11B6;
+C378;C378;110A 1165 11B7;C378;110A 1165 11B7;
+C379;C379;110A 1165 11B8;C379;110A 1165 11B8;
+C37A;C37A;110A 1165 11B9;C37A;110A 1165 11B9;
+C37B;C37B;110A 1165 11BA;C37B;110A 1165 11BA;
+C37C;C37C;110A 1165 11BB;C37C;110A 1165 11BB;
+C37D;C37D;110A 1165 11BC;C37D;110A 1165 11BC;
+C37E;C37E;110A 1165 11BD;C37E;110A 1165 11BD;
+C37F;C37F;110A 1165 11BE;C37F;110A 1165 11BE;
+C380;C380;110A 1165 11BF;C380;110A 1165 11BF;
+C381;C381;110A 1165 11C0;C381;110A 1165 11C0;
+C382;C382;110A 1165 11C1;C382;110A 1165 11C1;
+C383;C383;110A 1165 11C2;C383;110A 1165 11C2;
+C384;C384;110A 1166;C384;110A 1166;
+C385;C385;110A 1166 11A8;C385;110A 1166 11A8;
+C386;C386;110A 1166 11A9;C386;110A 1166 11A9;
+C387;C387;110A 1166 11AA;C387;110A 1166 11AA;
+C388;C388;110A 1166 11AB;C388;110A 1166 11AB;
+C389;C389;110A 1166 11AC;C389;110A 1166 11AC;
+C38A;C38A;110A 1166 11AD;C38A;110A 1166 11AD;
+C38B;C38B;110A 1166 11AE;C38B;110A 1166 11AE;
+C38C;C38C;110A 1166 11AF;C38C;110A 1166 11AF;
+C38D;C38D;110A 1166 11B0;C38D;110A 1166 11B0;
+C38E;C38E;110A 1166 11B1;C38E;110A 1166 11B1;
+C38F;C38F;110A 1166 11B2;C38F;110A 1166 11B2;
+C390;C390;110A 1166 11B3;C390;110A 1166 11B3;
+C391;C391;110A 1166 11B4;C391;110A 1166 11B4;
+C392;C392;110A 1166 11B5;C392;110A 1166 11B5;
+C393;C393;110A 1166 11B6;C393;110A 1166 11B6;
+C394;C394;110A 1166 11B7;C394;110A 1166 11B7;
+C395;C395;110A 1166 11B8;C395;110A 1166 11B8;
+C396;C396;110A 1166 11B9;C396;110A 1166 11B9;
+C397;C397;110A 1166 11BA;C397;110A 1166 11BA;
+C398;C398;110A 1166 11BB;C398;110A 1166 11BB;
+C399;C399;110A 1166 11BC;C399;110A 1166 11BC;
+C39A;C39A;110A 1166 11BD;C39A;110A 1166 11BD;
+C39B;C39B;110A 1166 11BE;C39B;110A 1166 11BE;
+C39C;C39C;110A 1166 11BF;C39C;110A 1166 11BF;
+C39D;C39D;110A 1166 11C0;C39D;110A 1166 11C0;
+C39E;C39E;110A 1166 11C1;C39E;110A 1166 11C1;
+C39F;C39F;110A 1166 11C2;C39F;110A 1166 11C2;
+C3A0;C3A0;110A 1167;C3A0;110A 1167;
+C3A1;C3A1;110A 1167 11A8;C3A1;110A 1167 11A8;
+C3A2;C3A2;110A 1167 11A9;C3A2;110A 1167 11A9;
+C3A3;C3A3;110A 1167 11AA;C3A3;110A 1167 11AA;
+C3A4;C3A4;110A 1167 11AB;C3A4;110A 1167 11AB;
+C3A5;C3A5;110A 1167 11AC;C3A5;110A 1167 11AC;
+C3A6;C3A6;110A 1167 11AD;C3A6;110A 1167 11AD;
+C3A7;C3A7;110A 1167 11AE;C3A7;110A 1167 11AE;
+C3A8;C3A8;110A 1167 11AF;C3A8;110A 1167 11AF;
+C3A9;C3A9;110A 1167 11B0;C3A9;110A 1167 11B0;
+C3AA;C3AA;110A 1167 11B1;C3AA;110A 1167 11B1;
+C3AB;C3AB;110A 1167 11B2;C3AB;110A 1167 11B2;
+C3AC;C3AC;110A 1167 11B3;C3AC;110A 1167 11B3;
+C3AD;C3AD;110A 1167 11B4;C3AD;110A 1167 11B4;
+C3AE;C3AE;110A 1167 11B5;C3AE;110A 1167 11B5;
+C3AF;C3AF;110A 1167 11B6;C3AF;110A 1167 11B6;
+C3B0;C3B0;110A 1167 11B7;C3B0;110A 1167 11B7;
+C3B1;C3B1;110A 1167 11B8;C3B1;110A 1167 11B8;
+C3B2;C3B2;110A 1167 11B9;C3B2;110A 1167 11B9;
+C3B3;C3B3;110A 1167 11BA;C3B3;110A 1167 11BA;
+C3B4;C3B4;110A 1167 11BB;C3B4;110A 1167 11BB;
+C3B5;C3B5;110A 1167 11BC;C3B5;110A 1167 11BC;
+C3B6;C3B6;110A 1167 11BD;C3B6;110A 1167 11BD;
+C3B7;C3B7;110A 1167 11BE;C3B7;110A 1167 11BE;
+C3B8;C3B8;110A 1167 11BF;C3B8;110A 1167 11BF;
+C3B9;C3B9;110A 1167 11C0;C3B9;110A 1167 11C0;
+C3BA;C3BA;110A 1167 11C1;C3BA;110A 1167 11C1;
+C3BB;C3BB;110A 1167 11C2;C3BB;110A 1167 11C2;
+C3BC;C3BC;110A 1168;C3BC;110A 1168;
+C3BD;C3BD;110A 1168 11A8;C3BD;110A 1168 11A8;
+C3BE;C3BE;110A 1168 11A9;C3BE;110A 1168 11A9;
+C3BF;C3BF;110A 1168 11AA;C3BF;110A 1168 11AA;
+C3C0;C3C0;110A 1168 11AB;C3C0;110A 1168 11AB;
+C3C1;C3C1;110A 1168 11AC;C3C1;110A 1168 11AC;
+C3C2;C3C2;110A 1168 11AD;C3C2;110A 1168 11AD;
+C3C3;C3C3;110A 1168 11AE;C3C3;110A 1168 11AE;
+C3C4;C3C4;110A 1168 11AF;C3C4;110A 1168 11AF;
+C3C5;C3C5;110A 1168 11B0;C3C5;110A 1168 11B0;
+C3C6;C3C6;110A 1168 11B1;C3C6;110A 1168 11B1;
+C3C7;C3C7;110A 1168 11B2;C3C7;110A 1168 11B2;
+C3C8;C3C8;110A 1168 11B3;C3C8;110A 1168 11B3;
+C3C9;C3C9;110A 1168 11B4;C3C9;110A 1168 11B4;
+C3CA;C3CA;110A 1168 11B5;C3CA;110A 1168 11B5;
+C3CB;C3CB;110A 1168 11B6;C3CB;110A 1168 11B6;
+C3CC;C3CC;110A 1168 11B7;C3CC;110A 1168 11B7;
+C3CD;C3CD;110A 1168 11B8;C3CD;110A 1168 11B8;
+C3CE;C3CE;110A 1168 11B9;C3CE;110A 1168 11B9;
+C3CF;C3CF;110A 1168 11BA;C3CF;110A 1168 11BA;
+C3D0;C3D0;110A 1168 11BB;C3D0;110A 1168 11BB;
+C3D1;C3D1;110A 1168 11BC;C3D1;110A 1168 11BC;
+C3D2;C3D2;110A 1168 11BD;C3D2;110A 1168 11BD;
+C3D3;C3D3;110A 1168 11BE;C3D3;110A 1168 11BE;
+C3D4;C3D4;110A 1168 11BF;C3D4;110A 1168 11BF;
+C3D5;C3D5;110A 1168 11C0;C3D5;110A 1168 11C0;
+C3D6;C3D6;110A 1168 11C1;C3D6;110A 1168 11C1;
+C3D7;C3D7;110A 1168 11C2;C3D7;110A 1168 11C2;
+C3D8;C3D8;110A 1169;C3D8;110A 1169;
+C3D9;C3D9;110A 1169 11A8;C3D9;110A 1169 11A8;
+C3DA;C3DA;110A 1169 11A9;C3DA;110A 1169 11A9;
+C3DB;C3DB;110A 1169 11AA;C3DB;110A 1169 11AA;
+C3DC;C3DC;110A 1169 11AB;C3DC;110A 1169 11AB;
+C3DD;C3DD;110A 1169 11AC;C3DD;110A 1169 11AC;
+C3DE;C3DE;110A 1169 11AD;C3DE;110A 1169 11AD;
+C3DF;C3DF;110A 1169 11AE;C3DF;110A 1169 11AE;
+C3E0;C3E0;110A 1169 11AF;C3E0;110A 1169 11AF;
+C3E1;C3E1;110A 1169 11B0;C3E1;110A 1169 11B0;
+C3E2;C3E2;110A 1169 11B1;C3E2;110A 1169 11B1;
+C3E3;C3E3;110A 1169 11B2;C3E3;110A 1169 11B2;
+C3E4;C3E4;110A 1169 11B3;C3E4;110A 1169 11B3;
+C3E5;C3E5;110A 1169 11B4;C3E5;110A 1169 11B4;
+C3E6;C3E6;110A 1169 11B5;C3E6;110A 1169 11B5;
+C3E7;C3E7;110A 1169 11B6;C3E7;110A 1169 11B6;
+C3E8;C3E8;110A 1169 11B7;C3E8;110A 1169 11B7;
+C3E9;C3E9;110A 1169 11B8;C3E9;110A 1169 11B8;
+C3EA;C3EA;110A 1169 11B9;C3EA;110A 1169 11B9;
+C3EB;C3EB;110A 1169 11BA;C3EB;110A 1169 11BA;
+C3EC;C3EC;110A 1169 11BB;C3EC;110A 1169 11BB;
+C3ED;C3ED;110A 1169 11BC;C3ED;110A 1169 11BC;
+C3EE;C3EE;110A 1169 11BD;C3EE;110A 1169 11BD;
+C3EF;C3EF;110A 1169 11BE;C3EF;110A 1169 11BE;
+C3F0;C3F0;110A 1169 11BF;C3F0;110A 1169 11BF;
+C3F1;C3F1;110A 1169 11C0;C3F1;110A 1169 11C0;
+C3F2;C3F2;110A 1169 11C1;C3F2;110A 1169 11C1;
+C3F3;C3F3;110A 1169 11C2;C3F3;110A 1169 11C2;
+C3F4;C3F4;110A 116A;C3F4;110A 116A;
+C3F5;C3F5;110A 116A 11A8;C3F5;110A 116A 11A8;
+C3F6;C3F6;110A 116A 11A9;C3F6;110A 116A 11A9;
+C3F7;C3F7;110A 116A 11AA;C3F7;110A 116A 11AA;
+C3F8;C3F8;110A 116A 11AB;C3F8;110A 116A 11AB;
+C3F9;C3F9;110A 116A 11AC;C3F9;110A 116A 11AC;
+C3FA;C3FA;110A 116A 11AD;C3FA;110A 116A 11AD;
+C3FB;C3FB;110A 116A 11AE;C3FB;110A 116A 11AE;
+C3FC;C3FC;110A 116A 11AF;C3FC;110A 116A 11AF;
+C3FD;C3FD;110A 116A 11B0;C3FD;110A 116A 11B0;
+C3FE;C3FE;110A 116A 11B1;C3FE;110A 116A 11B1;
+C3FF;C3FF;110A 116A 11B2;C3FF;110A 116A 11B2;
+C400;C400;110A 116A 11B3;C400;110A 116A 11B3;
+C401;C401;110A 116A 11B4;C401;110A 116A 11B4;
+C402;C402;110A 116A 11B5;C402;110A 116A 11B5;
+C403;C403;110A 116A 11B6;C403;110A 116A 11B6;
+C404;C404;110A 116A 11B7;C404;110A 116A 11B7;
+C405;C405;110A 116A 11B8;C405;110A 116A 11B8;
+C406;C406;110A 116A 11B9;C406;110A 116A 11B9;
+C407;C407;110A 116A 11BA;C407;110A 116A 11BA;
+C408;C408;110A 116A 11BB;C408;110A 116A 11BB;
+C409;C409;110A 116A 11BC;C409;110A 116A 11BC;
+C40A;C40A;110A 116A 11BD;C40A;110A 116A 11BD;
+C40B;C40B;110A 116A 11BE;C40B;110A 116A 11BE;
+C40C;C40C;110A 116A 11BF;C40C;110A 116A 11BF;
+C40D;C40D;110A 116A 11C0;C40D;110A 116A 11C0;
+C40E;C40E;110A 116A 11C1;C40E;110A 116A 11C1;
+C40F;C40F;110A 116A 11C2;C40F;110A 116A 11C2;
+C410;C410;110A 116B;C410;110A 116B;
+C411;C411;110A 116B 11A8;C411;110A 116B 11A8;
+C412;C412;110A 116B 11A9;C412;110A 116B 11A9;
+C413;C413;110A 116B 11AA;C413;110A 116B 11AA;
+C414;C414;110A 116B 11AB;C414;110A 116B 11AB;
+C415;C415;110A 116B 11AC;C415;110A 116B 11AC;
+C416;C416;110A 116B 11AD;C416;110A 116B 11AD;
+C417;C417;110A 116B 11AE;C417;110A 116B 11AE;
+C418;C418;110A 116B 11AF;C418;110A 116B 11AF;
+C419;C419;110A 116B 11B0;C419;110A 116B 11B0;
+C41A;C41A;110A 116B 11B1;C41A;110A 116B 11B1;
+C41B;C41B;110A 116B 11B2;C41B;110A 116B 11B2;
+C41C;C41C;110A 116B 11B3;C41C;110A 116B 11B3;
+C41D;C41D;110A 116B 11B4;C41D;110A 116B 11B4;
+C41E;C41E;110A 116B 11B5;C41E;110A 116B 11B5;
+C41F;C41F;110A 116B 11B6;C41F;110A 116B 11B6;
+C420;C420;110A 116B 11B7;C420;110A 116B 11B7;
+C421;C421;110A 116B 11B8;C421;110A 116B 11B8;
+C422;C422;110A 116B 11B9;C422;110A 116B 11B9;
+C423;C423;110A 116B 11BA;C423;110A 116B 11BA;
+C424;C424;110A 116B 11BB;C424;110A 116B 11BB;
+C425;C425;110A 116B 11BC;C425;110A 116B 11BC;
+C426;C426;110A 116B 11BD;C426;110A 116B 11BD;
+C427;C427;110A 116B 11BE;C427;110A 116B 11BE;
+C428;C428;110A 116B 11BF;C428;110A 116B 11BF;
+C429;C429;110A 116B 11C0;C429;110A 116B 11C0;
+C42A;C42A;110A 116B 11C1;C42A;110A 116B 11C1;
+C42B;C42B;110A 116B 11C2;C42B;110A 116B 11C2;
+C42C;C42C;110A 116C;C42C;110A 116C;
+C42D;C42D;110A 116C 11A8;C42D;110A 116C 11A8;
+C42E;C42E;110A 116C 11A9;C42E;110A 116C 11A9;
+C42F;C42F;110A 116C 11AA;C42F;110A 116C 11AA;
+C430;C430;110A 116C 11AB;C430;110A 116C 11AB;
+C431;C431;110A 116C 11AC;C431;110A 116C 11AC;
+C432;C432;110A 116C 11AD;C432;110A 116C 11AD;
+C433;C433;110A 116C 11AE;C433;110A 116C 11AE;
+C434;C434;110A 116C 11AF;C434;110A 116C 11AF;
+C435;C435;110A 116C 11B0;C435;110A 116C 11B0;
+C436;C436;110A 116C 11B1;C436;110A 116C 11B1;
+C437;C437;110A 116C 11B2;C437;110A 116C 11B2;
+C438;C438;110A 116C 11B3;C438;110A 116C 11B3;
+C439;C439;110A 116C 11B4;C439;110A 116C 11B4;
+C43A;C43A;110A 116C 11B5;C43A;110A 116C 11B5;
+C43B;C43B;110A 116C 11B6;C43B;110A 116C 11B6;
+C43C;C43C;110A 116C 11B7;C43C;110A 116C 11B7;
+C43D;C43D;110A 116C 11B8;C43D;110A 116C 11B8;
+C43E;C43E;110A 116C 11B9;C43E;110A 116C 11B9;
+C43F;C43F;110A 116C 11BA;C43F;110A 116C 11BA;
+C440;C440;110A 116C 11BB;C440;110A 116C 11BB;
+C441;C441;110A 116C 11BC;C441;110A 116C 11BC;
+C442;C442;110A 116C 11BD;C442;110A 116C 11BD;
+C443;C443;110A 116C 11BE;C443;110A 116C 11BE;
+C444;C444;110A 116C 11BF;C444;110A 116C 11BF;
+C445;C445;110A 116C 11C0;C445;110A 116C 11C0;
+C446;C446;110A 116C 11C1;C446;110A 116C 11C1;
+C447;C447;110A 116C 11C2;C447;110A 116C 11C2;
+C448;C448;110A 116D;C448;110A 116D;
+C449;C449;110A 116D 11A8;C449;110A 116D 11A8;
+C44A;C44A;110A 116D 11A9;C44A;110A 116D 11A9;
+C44B;C44B;110A 116D 11AA;C44B;110A 116D 11AA;
+C44C;C44C;110A 116D 11AB;C44C;110A 116D 11AB;
+C44D;C44D;110A 116D 11AC;C44D;110A 116D 11AC;
+C44E;C44E;110A 116D 11AD;C44E;110A 116D 11AD;
+C44F;C44F;110A 116D 11AE;C44F;110A 116D 11AE;
+C450;C450;110A 116D 11AF;C450;110A 116D 11AF;
+C451;C451;110A 116D 11B0;C451;110A 116D 11B0;
+C452;C452;110A 116D 11B1;C452;110A 116D 11B1;
+C453;C453;110A 116D 11B2;C453;110A 116D 11B2;
+C454;C454;110A 116D 11B3;C454;110A 116D 11B3;
+C455;C455;110A 116D 11B4;C455;110A 116D 11B4;
+C456;C456;110A 116D 11B5;C456;110A 116D 11B5;
+C457;C457;110A 116D 11B6;C457;110A 116D 11B6;
+C458;C458;110A 116D 11B7;C458;110A 116D 11B7;
+C459;C459;110A 116D 11B8;C459;110A 116D 11B8;
+C45A;C45A;110A 116D 11B9;C45A;110A 116D 11B9;
+C45B;C45B;110A 116D 11BA;C45B;110A 116D 11BA;
+C45C;C45C;110A 116D 11BB;C45C;110A 116D 11BB;
+C45D;C45D;110A 116D 11BC;C45D;110A 116D 11BC;
+C45E;C45E;110A 116D 11BD;C45E;110A 116D 11BD;
+C45F;C45F;110A 116D 11BE;C45F;110A 116D 11BE;
+C460;C460;110A 116D 11BF;C460;110A 116D 11BF;
+C461;C461;110A 116D 11C0;C461;110A 116D 11C0;
+C462;C462;110A 116D 11C1;C462;110A 116D 11C1;
+C463;C463;110A 116D 11C2;C463;110A 116D 11C2;
+C464;C464;110A 116E;C464;110A 116E;
+C465;C465;110A 116E 11A8;C465;110A 116E 11A8;
+C466;C466;110A 116E 11A9;C466;110A 116E 11A9;
+C467;C467;110A 116E 11AA;C467;110A 116E 11AA;
+C468;C468;110A 116E 11AB;C468;110A 116E 11AB;
+C469;C469;110A 116E 11AC;C469;110A 116E 11AC;
+C46A;C46A;110A 116E 11AD;C46A;110A 116E 11AD;
+C46B;C46B;110A 116E 11AE;C46B;110A 116E 11AE;
+C46C;C46C;110A 116E 11AF;C46C;110A 116E 11AF;
+C46D;C46D;110A 116E 11B0;C46D;110A 116E 11B0;
+C46E;C46E;110A 116E 11B1;C46E;110A 116E 11B1;
+C46F;C46F;110A 116E 11B2;C46F;110A 116E 11B2;
+C470;C470;110A 116E 11B3;C470;110A 116E 11B3;
+C471;C471;110A 116E 11B4;C471;110A 116E 11B4;
+C472;C472;110A 116E 11B5;C472;110A 116E 11B5;
+C473;C473;110A 116E 11B6;C473;110A 116E 11B6;
+C474;C474;110A 116E 11B7;C474;110A 116E 11B7;
+C475;C475;110A 116E 11B8;C475;110A 116E 11B8;
+C476;C476;110A 116E 11B9;C476;110A 116E 11B9;
+C477;C477;110A 116E 11BA;C477;110A 116E 11BA;
+C478;C478;110A 116E 11BB;C478;110A 116E 11BB;
+C479;C479;110A 116E 11BC;C479;110A 116E 11BC;
+C47A;C47A;110A 116E 11BD;C47A;110A 116E 11BD;
+C47B;C47B;110A 116E 11BE;C47B;110A 116E 11BE;
+C47C;C47C;110A 116E 11BF;C47C;110A 116E 11BF;
+C47D;C47D;110A 116E 11C0;C47D;110A 116E 11C0;
+C47E;C47E;110A 116E 11C1;C47E;110A 116E 11C1;
+C47F;C47F;110A 116E 11C2;C47F;110A 116E 11C2;
+C480;C480;110A 116F;C480;110A 116F;
+C481;C481;110A 116F 11A8;C481;110A 116F 11A8;
+C482;C482;110A 116F 11A9;C482;110A 116F 11A9;
+C483;C483;110A 116F 11AA;C483;110A 116F 11AA;
+C484;C484;110A 116F 11AB;C484;110A 116F 11AB;
+C485;C485;110A 116F 11AC;C485;110A 116F 11AC;
+C486;C486;110A 116F 11AD;C486;110A 116F 11AD;
+C487;C487;110A 116F 11AE;C487;110A 116F 11AE;
+C488;C488;110A 116F 11AF;C488;110A 116F 11AF;
+C489;C489;110A 116F 11B0;C489;110A 116F 11B0;
+C48A;C48A;110A 116F 11B1;C48A;110A 116F 11B1;
+C48B;C48B;110A 116F 11B2;C48B;110A 116F 11B2;
+C48C;C48C;110A 116F 11B3;C48C;110A 116F 11B3;
+C48D;C48D;110A 116F 11B4;C48D;110A 116F 11B4;
+C48E;C48E;110A 116F 11B5;C48E;110A 116F 11B5;
+C48F;C48F;110A 116F 11B6;C48F;110A 116F 11B6;
+C490;C490;110A 116F 11B7;C490;110A 116F 11B7;
+C491;C491;110A 116F 11B8;C491;110A 116F 11B8;
+C492;C492;110A 116F 11B9;C492;110A 116F 11B9;
+C493;C493;110A 116F 11BA;C493;110A 116F 11BA;
+C494;C494;110A 116F 11BB;C494;110A 116F 11BB;
+C495;C495;110A 116F 11BC;C495;110A 116F 11BC;
+C496;C496;110A 116F 11BD;C496;110A 116F 11BD;
+C497;C497;110A 116F 11BE;C497;110A 116F 11BE;
+C498;C498;110A 116F 11BF;C498;110A 116F 11BF;
+C499;C499;110A 116F 11C0;C499;110A 116F 11C0;
+C49A;C49A;110A 116F 11C1;C49A;110A 116F 11C1;
+C49B;C49B;110A 116F 11C2;C49B;110A 116F 11C2;
+C49C;C49C;110A 1170;C49C;110A 1170;
+C49D;C49D;110A 1170 11A8;C49D;110A 1170 11A8;
+C49E;C49E;110A 1170 11A9;C49E;110A 1170 11A9;
+C49F;C49F;110A 1170 11AA;C49F;110A 1170 11AA;
+C4A0;C4A0;110A 1170 11AB;C4A0;110A 1170 11AB;
+C4A1;C4A1;110A 1170 11AC;C4A1;110A 1170 11AC;
+C4A2;C4A2;110A 1170 11AD;C4A2;110A 1170 11AD;
+C4A3;C4A3;110A 1170 11AE;C4A3;110A 1170 11AE;
+C4A4;C4A4;110A 1170 11AF;C4A4;110A 1170 11AF;
+C4A5;C4A5;110A 1170 11B0;C4A5;110A 1170 11B0;
+C4A6;C4A6;110A 1170 11B1;C4A6;110A 1170 11B1;
+C4A7;C4A7;110A 1170 11B2;C4A7;110A 1170 11B2;
+C4A8;C4A8;110A 1170 11B3;C4A8;110A 1170 11B3;
+C4A9;C4A9;110A 1170 11B4;C4A9;110A 1170 11B4;
+C4AA;C4AA;110A 1170 11B5;C4AA;110A 1170 11B5;
+C4AB;C4AB;110A 1170 11B6;C4AB;110A 1170 11B6;
+C4AC;C4AC;110A 1170 11B7;C4AC;110A 1170 11B7;
+C4AD;C4AD;110A 1170 11B8;C4AD;110A 1170 11B8;
+C4AE;C4AE;110A 1170 11B9;C4AE;110A 1170 11B9;
+C4AF;C4AF;110A 1170 11BA;C4AF;110A 1170 11BA;
+C4B0;C4B0;110A 1170 11BB;C4B0;110A 1170 11BB;
+C4B1;C4B1;110A 1170 11BC;C4B1;110A 1170 11BC;
+C4B2;C4B2;110A 1170 11BD;C4B2;110A 1170 11BD;
+C4B3;C4B3;110A 1170 11BE;C4B3;110A 1170 11BE;
+C4B4;C4B4;110A 1170 11BF;C4B4;110A 1170 11BF;
+C4B5;C4B5;110A 1170 11C0;C4B5;110A 1170 11C0;
+C4B6;C4B6;110A 1170 11C1;C4B6;110A 1170 11C1;
+C4B7;C4B7;110A 1170 11C2;C4B7;110A 1170 11C2;
+C4B8;C4B8;110A 1171;C4B8;110A 1171;
+C4B9;C4B9;110A 1171 11A8;C4B9;110A 1171 11A8;
+C4BA;C4BA;110A 1171 11A9;C4BA;110A 1171 11A9;
+C4BB;C4BB;110A 1171 11AA;C4BB;110A 1171 11AA;
+C4BC;C4BC;110A 1171 11AB;C4BC;110A 1171 11AB;
+C4BD;C4BD;110A 1171 11AC;C4BD;110A 1171 11AC;
+C4BE;C4BE;110A 1171 11AD;C4BE;110A 1171 11AD;
+C4BF;C4BF;110A 1171 11AE;C4BF;110A 1171 11AE;
+C4C0;C4C0;110A 1171 11AF;C4C0;110A 1171 11AF;
+C4C1;C4C1;110A 1171 11B0;C4C1;110A 1171 11B0;
+C4C2;C4C2;110A 1171 11B1;C4C2;110A 1171 11B1;
+C4C3;C4C3;110A 1171 11B2;C4C3;110A 1171 11B2;
+C4C4;C4C4;110A 1171 11B3;C4C4;110A 1171 11B3;
+C4C5;C4C5;110A 1171 11B4;C4C5;110A 1171 11B4;
+C4C6;C4C6;110A 1171 11B5;C4C6;110A 1171 11B5;
+C4C7;C4C7;110A 1171 11B6;C4C7;110A 1171 11B6;
+C4C8;C4C8;110A 1171 11B7;C4C8;110A 1171 11B7;
+C4C9;C4C9;110A 1171 11B8;C4C9;110A 1171 11B8;
+C4CA;C4CA;110A 1171 11B9;C4CA;110A 1171 11B9;
+C4CB;C4CB;110A 1171 11BA;C4CB;110A 1171 11BA;
+C4CC;C4CC;110A 1171 11BB;C4CC;110A 1171 11BB;
+C4CD;C4CD;110A 1171 11BC;C4CD;110A 1171 11BC;
+C4CE;C4CE;110A 1171 11BD;C4CE;110A 1171 11BD;
+C4CF;C4CF;110A 1171 11BE;C4CF;110A 1171 11BE;
+C4D0;C4D0;110A 1171 11BF;C4D0;110A 1171 11BF;
+C4D1;C4D1;110A 1171 11C0;C4D1;110A 1171 11C0;
+C4D2;C4D2;110A 1171 11C1;C4D2;110A 1171 11C1;
+C4D3;C4D3;110A 1171 11C2;C4D3;110A 1171 11C2;
+C4D4;C4D4;110A 1172;C4D4;110A 1172;
+C4D5;C4D5;110A 1172 11A8;C4D5;110A 1172 11A8;
+C4D6;C4D6;110A 1172 11A9;C4D6;110A 1172 11A9;
+C4D7;C4D7;110A 1172 11AA;C4D7;110A 1172 11AA;
+C4D8;C4D8;110A 1172 11AB;C4D8;110A 1172 11AB;
+C4D9;C4D9;110A 1172 11AC;C4D9;110A 1172 11AC;
+C4DA;C4DA;110A 1172 11AD;C4DA;110A 1172 11AD;
+C4DB;C4DB;110A 1172 11AE;C4DB;110A 1172 11AE;
+C4DC;C4DC;110A 1172 11AF;C4DC;110A 1172 11AF;
+C4DD;C4DD;110A 1172 11B0;C4DD;110A 1172 11B0;
+C4DE;C4DE;110A 1172 11B1;C4DE;110A 1172 11B1;
+C4DF;C4DF;110A 1172 11B2;C4DF;110A 1172 11B2;
+C4E0;C4E0;110A 1172 11B3;C4E0;110A 1172 11B3;
+C4E1;C4E1;110A 1172 11B4;C4E1;110A 1172 11B4;
+C4E2;C4E2;110A 1172 11B5;C4E2;110A 1172 11B5;
+C4E3;C4E3;110A 1172 11B6;C4E3;110A 1172 11B6;
+C4E4;C4E4;110A 1172 11B7;C4E4;110A 1172 11B7;
+C4E5;C4E5;110A 1172 11B8;C4E5;110A 1172 11B8;
+C4E6;C4E6;110A 1172 11B9;C4E6;110A 1172 11B9;
+C4E7;C4E7;110A 1172 11BA;C4E7;110A 1172 11BA;
+C4E8;C4E8;110A 1172 11BB;C4E8;110A 1172 11BB;
+C4E9;C4E9;110A 1172 11BC;C4E9;110A 1172 11BC;
+C4EA;C4EA;110A 1172 11BD;C4EA;110A 1172 11BD;
+C4EB;C4EB;110A 1172 11BE;C4EB;110A 1172 11BE;
+C4EC;C4EC;110A 1172 11BF;C4EC;110A 1172 11BF;
+C4ED;C4ED;110A 1172 11C0;C4ED;110A 1172 11C0;
+C4EE;C4EE;110A 1172 11C1;C4EE;110A 1172 11C1;
+C4EF;C4EF;110A 1172 11C2;C4EF;110A 1172 11C2;
+C4F0;C4F0;110A 1173;C4F0;110A 1173;
+C4F1;C4F1;110A 1173 11A8;C4F1;110A 1173 11A8;
+C4F2;C4F2;110A 1173 11A9;C4F2;110A 1173 11A9;
+C4F3;C4F3;110A 1173 11AA;C4F3;110A 1173 11AA;
+C4F4;C4F4;110A 1173 11AB;C4F4;110A 1173 11AB;
+C4F5;C4F5;110A 1173 11AC;C4F5;110A 1173 11AC;
+C4F6;C4F6;110A 1173 11AD;C4F6;110A 1173 11AD;
+C4F7;C4F7;110A 1173 11AE;C4F7;110A 1173 11AE;
+C4F8;C4F8;110A 1173 11AF;C4F8;110A 1173 11AF;
+C4F9;C4F9;110A 1173 11B0;C4F9;110A 1173 11B0;
+C4FA;C4FA;110A 1173 11B1;C4FA;110A 1173 11B1;
+C4FB;C4FB;110A 1173 11B2;C4FB;110A 1173 11B2;
+C4FC;C4FC;110A 1173 11B3;C4FC;110A 1173 11B3;
+C4FD;C4FD;110A 1173 11B4;C4FD;110A 1173 11B4;
+C4FE;C4FE;110A 1173 11B5;C4FE;110A 1173 11B5;
+C4FF;C4FF;110A 1173 11B6;C4FF;110A 1173 11B6;
+C500;C500;110A 1173 11B7;C500;110A 1173 11B7;
+C501;C501;110A 1173 11B8;C501;110A 1173 11B8;
+C502;C502;110A 1173 11B9;C502;110A 1173 11B9;
+C503;C503;110A 1173 11BA;C503;110A 1173 11BA;
+C504;C504;110A 1173 11BB;C504;110A 1173 11BB;
+C505;C505;110A 1173 11BC;C505;110A 1173 11BC;
+C506;C506;110A 1173 11BD;C506;110A 1173 11BD;
+C507;C507;110A 1173 11BE;C507;110A 1173 11BE;
+C508;C508;110A 1173 11BF;C508;110A 1173 11BF;
+C509;C509;110A 1173 11C0;C509;110A 1173 11C0;
+C50A;C50A;110A 1173 11C1;C50A;110A 1173 11C1;
+C50B;C50B;110A 1173 11C2;C50B;110A 1173 11C2;
+C50C;C50C;110A 1174;C50C;110A 1174;
+C50D;C50D;110A 1174 11A8;C50D;110A 1174 11A8;
+C50E;C50E;110A 1174 11A9;C50E;110A 1174 11A9;
+C50F;C50F;110A 1174 11AA;C50F;110A 1174 11AA;
+C510;C510;110A 1174 11AB;C510;110A 1174 11AB;
+C511;C511;110A 1174 11AC;C511;110A 1174 11AC;
+C512;C512;110A 1174 11AD;C512;110A 1174 11AD;
+C513;C513;110A 1174 11AE;C513;110A 1174 11AE;
+C514;C514;110A 1174 11AF;C514;110A 1174 11AF;
+C515;C515;110A 1174 11B0;C515;110A 1174 11B0;
+C516;C516;110A 1174 11B1;C516;110A 1174 11B1;
+C517;C517;110A 1174 11B2;C517;110A 1174 11B2;
+C518;C518;110A 1174 11B3;C518;110A 1174 11B3;
+C519;C519;110A 1174 11B4;C519;110A 1174 11B4;
+C51A;C51A;110A 1174 11B5;C51A;110A 1174 11B5;
+C51B;C51B;110A 1174 11B6;C51B;110A 1174 11B6;
+C51C;C51C;110A 1174 11B7;C51C;110A 1174 11B7;
+C51D;C51D;110A 1174 11B8;C51D;110A 1174 11B8;
+C51E;C51E;110A 1174 11B9;C51E;110A 1174 11B9;
+C51F;C51F;110A 1174 11BA;C51F;110A 1174 11BA;
+C520;C520;110A 1174 11BB;C520;110A 1174 11BB;
+C521;C521;110A 1174 11BC;C521;110A 1174 11BC;
+C522;C522;110A 1174 11BD;C522;110A 1174 11BD;
+C523;C523;110A 1174 11BE;C523;110A 1174 11BE;
+C524;C524;110A 1174 11BF;C524;110A 1174 11BF;
+C525;C525;110A 1174 11C0;C525;110A 1174 11C0;
+C526;C526;110A 1174 11C1;C526;110A 1174 11C1;
+C527;C527;110A 1174 11C2;C527;110A 1174 11C2;
+C528;C528;110A 1175;C528;110A 1175;
+C529;C529;110A 1175 11A8;C529;110A 1175 11A8;
+C52A;C52A;110A 1175 11A9;C52A;110A 1175 11A9;
+C52B;C52B;110A 1175 11AA;C52B;110A 1175 11AA;
+C52C;C52C;110A 1175 11AB;C52C;110A 1175 11AB;
+C52D;C52D;110A 1175 11AC;C52D;110A 1175 11AC;
+C52E;C52E;110A 1175 11AD;C52E;110A 1175 11AD;
+C52F;C52F;110A 1175 11AE;C52F;110A 1175 11AE;
+C530;C530;110A 1175 11AF;C530;110A 1175 11AF;
+C531;C531;110A 1175 11B0;C531;110A 1175 11B0;
+C532;C532;110A 1175 11B1;C532;110A 1175 11B1;
+C533;C533;110A 1175 11B2;C533;110A 1175 11B2;
+C534;C534;110A 1175 11B3;C534;110A 1175 11B3;
+C535;C535;110A 1175 11B4;C535;110A 1175 11B4;
+C536;C536;110A 1175 11B5;C536;110A 1175 11B5;
+C537;C537;110A 1175 11B6;C537;110A 1175 11B6;
+C538;C538;110A 1175 11B7;C538;110A 1175 11B7;
+C539;C539;110A 1175 11B8;C539;110A 1175 11B8;
+C53A;C53A;110A 1175 11B9;C53A;110A 1175 11B9;
+C53B;C53B;110A 1175 11BA;C53B;110A 1175 11BA;
+C53C;C53C;110A 1175 11BB;C53C;110A 1175 11BB;
+C53D;C53D;110A 1175 11BC;C53D;110A 1175 11BC;
+C53E;C53E;110A 1175 11BD;C53E;110A 1175 11BD;
+C53F;C53F;110A 1175 11BE;C53F;110A 1175 11BE;
+C540;C540;110A 1175 11BF;C540;110A 1175 11BF;
+C541;C541;110A 1175 11C0;C541;110A 1175 11C0;
+C542;C542;110A 1175 11C1;C542;110A 1175 11C1;
+C543;C543;110A 1175 11C2;C543;110A 1175 11C2;
+C544;C544;110B 1161;C544;110B 1161;
+C545;C545;110B 1161 11A8;C545;110B 1161 11A8;
+C546;C546;110B 1161 11A9;C546;110B 1161 11A9;
+C547;C547;110B 1161 11AA;C547;110B 1161 11AA;
+C548;C548;110B 1161 11AB;C548;110B 1161 11AB;
+C549;C549;110B 1161 11AC;C549;110B 1161 11AC;
+C54A;C54A;110B 1161 11AD;C54A;110B 1161 11AD;
+C54B;C54B;110B 1161 11AE;C54B;110B 1161 11AE;
+C54C;C54C;110B 1161 11AF;C54C;110B 1161 11AF;
+C54D;C54D;110B 1161 11B0;C54D;110B 1161 11B0;
+C54E;C54E;110B 1161 11B1;C54E;110B 1161 11B1;
+C54F;C54F;110B 1161 11B2;C54F;110B 1161 11B2;
+C550;C550;110B 1161 11B3;C550;110B 1161 11B3;
+C551;C551;110B 1161 11B4;C551;110B 1161 11B4;
+C552;C552;110B 1161 11B5;C552;110B 1161 11B5;
+C553;C553;110B 1161 11B6;C553;110B 1161 11B6;
+C554;C554;110B 1161 11B7;C554;110B 1161 11B7;
+C555;C555;110B 1161 11B8;C555;110B 1161 11B8;
+C556;C556;110B 1161 11B9;C556;110B 1161 11B9;
+C557;C557;110B 1161 11BA;C557;110B 1161 11BA;
+C558;C558;110B 1161 11BB;C558;110B 1161 11BB;
+C559;C559;110B 1161 11BC;C559;110B 1161 11BC;
+C55A;C55A;110B 1161 11BD;C55A;110B 1161 11BD;
+C55B;C55B;110B 1161 11BE;C55B;110B 1161 11BE;
+C55C;C55C;110B 1161 11BF;C55C;110B 1161 11BF;
+C55D;C55D;110B 1161 11C0;C55D;110B 1161 11C0;
+C55E;C55E;110B 1161 11C1;C55E;110B 1161 11C1;
+C55F;C55F;110B 1161 11C2;C55F;110B 1161 11C2;
+C560;C560;110B 1162;C560;110B 1162;
+C561;C561;110B 1162 11A8;C561;110B 1162 11A8;
+C562;C562;110B 1162 11A9;C562;110B 1162 11A9;
+C563;C563;110B 1162 11AA;C563;110B 1162 11AA;
+C564;C564;110B 1162 11AB;C564;110B 1162 11AB;
+C565;C565;110B 1162 11AC;C565;110B 1162 11AC;
+C566;C566;110B 1162 11AD;C566;110B 1162 11AD;
+C567;C567;110B 1162 11AE;C567;110B 1162 11AE;
+C568;C568;110B 1162 11AF;C568;110B 1162 11AF;
+C569;C569;110B 1162 11B0;C569;110B 1162 11B0;
+C56A;C56A;110B 1162 11B1;C56A;110B 1162 11B1;
+C56B;C56B;110B 1162 11B2;C56B;110B 1162 11B2;
+C56C;C56C;110B 1162 11B3;C56C;110B 1162 11B3;
+C56D;C56D;110B 1162 11B4;C56D;110B 1162 11B4;
+C56E;C56E;110B 1162 11B5;C56E;110B 1162 11B5;
+C56F;C56F;110B 1162 11B6;C56F;110B 1162 11B6;
+C570;C570;110B 1162 11B7;C570;110B 1162 11B7;
+C571;C571;110B 1162 11B8;C571;110B 1162 11B8;
+C572;C572;110B 1162 11B9;C572;110B 1162 11B9;
+C573;C573;110B 1162 11BA;C573;110B 1162 11BA;
+C574;C574;110B 1162 11BB;C574;110B 1162 11BB;
+C575;C575;110B 1162 11BC;C575;110B 1162 11BC;
+C576;C576;110B 1162 11BD;C576;110B 1162 11BD;
+C577;C577;110B 1162 11BE;C577;110B 1162 11BE;
+C578;C578;110B 1162 11BF;C578;110B 1162 11BF;
+C579;C579;110B 1162 11C0;C579;110B 1162 11C0;
+C57A;C57A;110B 1162 11C1;C57A;110B 1162 11C1;
+C57B;C57B;110B 1162 11C2;C57B;110B 1162 11C2;
+C57C;C57C;110B 1163;C57C;110B 1163;
+C57D;C57D;110B 1163 11A8;C57D;110B 1163 11A8;
+C57E;C57E;110B 1163 11A9;C57E;110B 1163 11A9;
+C57F;C57F;110B 1163 11AA;C57F;110B 1163 11AA;
+C580;C580;110B 1163 11AB;C580;110B 1163 11AB;
+C581;C581;110B 1163 11AC;C581;110B 1163 11AC;
+C582;C582;110B 1163 11AD;C582;110B 1163 11AD;
+C583;C583;110B 1163 11AE;C583;110B 1163 11AE;
+C584;C584;110B 1163 11AF;C584;110B 1163 11AF;
+C585;C585;110B 1163 11B0;C585;110B 1163 11B0;
+C586;C586;110B 1163 11B1;C586;110B 1163 11B1;
+C587;C587;110B 1163 11B2;C587;110B 1163 11B2;
+C588;C588;110B 1163 11B3;C588;110B 1163 11B3;
+C589;C589;110B 1163 11B4;C589;110B 1163 11B4;
+C58A;C58A;110B 1163 11B5;C58A;110B 1163 11B5;
+C58B;C58B;110B 1163 11B6;C58B;110B 1163 11B6;
+C58C;C58C;110B 1163 11B7;C58C;110B 1163 11B7;
+C58D;C58D;110B 1163 11B8;C58D;110B 1163 11B8;
+C58E;C58E;110B 1163 11B9;C58E;110B 1163 11B9;
+C58F;C58F;110B 1163 11BA;C58F;110B 1163 11BA;
+C590;C590;110B 1163 11BB;C590;110B 1163 11BB;
+C591;C591;110B 1163 11BC;C591;110B 1163 11BC;
+C592;C592;110B 1163 11BD;C592;110B 1163 11BD;
+C593;C593;110B 1163 11BE;C593;110B 1163 11BE;
+C594;C594;110B 1163 11BF;C594;110B 1163 11BF;
+C595;C595;110B 1163 11C0;C595;110B 1163 11C0;
+C596;C596;110B 1163 11C1;C596;110B 1163 11C1;
+C597;C597;110B 1163 11C2;C597;110B 1163 11C2;
+C598;C598;110B 1164;C598;110B 1164;
+C599;C599;110B 1164 11A8;C599;110B 1164 11A8;
+C59A;C59A;110B 1164 11A9;C59A;110B 1164 11A9;
+C59B;C59B;110B 1164 11AA;C59B;110B 1164 11AA;
+C59C;C59C;110B 1164 11AB;C59C;110B 1164 11AB;
+C59D;C59D;110B 1164 11AC;C59D;110B 1164 11AC;
+C59E;C59E;110B 1164 11AD;C59E;110B 1164 11AD;
+C59F;C59F;110B 1164 11AE;C59F;110B 1164 11AE;
+C5A0;C5A0;110B 1164 11AF;C5A0;110B 1164 11AF;
+C5A1;C5A1;110B 1164 11B0;C5A1;110B 1164 11B0;
+C5A2;C5A2;110B 1164 11B1;C5A2;110B 1164 11B1;
+C5A3;C5A3;110B 1164 11B2;C5A3;110B 1164 11B2;
+C5A4;C5A4;110B 1164 11B3;C5A4;110B 1164 11B3;
+C5A5;C5A5;110B 1164 11B4;C5A5;110B 1164 11B4;
+C5A6;C5A6;110B 1164 11B5;C5A6;110B 1164 11B5;
+C5A7;C5A7;110B 1164 11B6;C5A7;110B 1164 11B6;
+C5A8;C5A8;110B 1164 11B7;C5A8;110B 1164 11B7;
+C5A9;C5A9;110B 1164 11B8;C5A9;110B 1164 11B8;
+C5AA;C5AA;110B 1164 11B9;C5AA;110B 1164 11B9;
+C5AB;C5AB;110B 1164 11BA;C5AB;110B 1164 11BA;
+C5AC;C5AC;110B 1164 11BB;C5AC;110B 1164 11BB;
+C5AD;C5AD;110B 1164 11BC;C5AD;110B 1164 11BC;
+C5AE;C5AE;110B 1164 11BD;C5AE;110B 1164 11BD;
+C5AF;C5AF;110B 1164 11BE;C5AF;110B 1164 11BE;
+C5B0;C5B0;110B 1164 11BF;C5B0;110B 1164 11BF;
+C5B1;C5B1;110B 1164 11C0;C5B1;110B 1164 11C0;
+C5B2;C5B2;110B 1164 11C1;C5B2;110B 1164 11C1;
+C5B3;C5B3;110B 1164 11C2;C5B3;110B 1164 11C2;
+C5B4;C5B4;110B 1165;C5B4;110B 1165;
+C5B5;C5B5;110B 1165 11A8;C5B5;110B 1165 11A8;
+C5B6;C5B6;110B 1165 11A9;C5B6;110B 1165 11A9;
+C5B7;C5B7;110B 1165 11AA;C5B7;110B 1165 11AA;
+C5B8;C5B8;110B 1165 11AB;C5B8;110B 1165 11AB;
+C5B9;C5B9;110B 1165 11AC;C5B9;110B 1165 11AC;
+C5BA;C5BA;110B 1165 11AD;C5BA;110B 1165 11AD;
+C5BB;C5BB;110B 1165 11AE;C5BB;110B 1165 11AE;
+C5BC;C5BC;110B 1165 11AF;C5BC;110B 1165 11AF;
+C5BD;C5BD;110B 1165 11B0;C5BD;110B 1165 11B0;
+C5BE;C5BE;110B 1165 11B1;C5BE;110B 1165 11B1;
+C5BF;C5BF;110B 1165 11B2;C5BF;110B 1165 11B2;
+C5C0;C5C0;110B 1165 11B3;C5C0;110B 1165 11B3;
+C5C1;C5C1;110B 1165 11B4;C5C1;110B 1165 11B4;
+C5C2;C5C2;110B 1165 11B5;C5C2;110B 1165 11B5;
+C5C3;C5C3;110B 1165 11B6;C5C3;110B 1165 11B6;
+C5C4;C5C4;110B 1165 11B7;C5C4;110B 1165 11B7;
+C5C5;C5C5;110B 1165 11B8;C5C5;110B 1165 11B8;
+C5C6;C5C6;110B 1165 11B9;C5C6;110B 1165 11B9;
+C5C7;C5C7;110B 1165 11BA;C5C7;110B 1165 11BA;
+C5C8;C5C8;110B 1165 11BB;C5C8;110B 1165 11BB;
+C5C9;C5C9;110B 1165 11BC;C5C9;110B 1165 11BC;
+C5CA;C5CA;110B 1165 11BD;C5CA;110B 1165 11BD;
+C5CB;C5CB;110B 1165 11BE;C5CB;110B 1165 11BE;
+C5CC;C5CC;110B 1165 11BF;C5CC;110B 1165 11BF;
+C5CD;C5CD;110B 1165 11C0;C5CD;110B 1165 11C0;
+C5CE;C5CE;110B 1165 11C1;C5CE;110B 1165 11C1;
+C5CF;C5CF;110B 1165 11C2;C5CF;110B 1165 11C2;
+C5D0;C5D0;110B 1166;C5D0;110B 1166;
+C5D1;C5D1;110B 1166 11A8;C5D1;110B 1166 11A8;
+C5D2;C5D2;110B 1166 11A9;C5D2;110B 1166 11A9;
+C5D3;C5D3;110B 1166 11AA;C5D3;110B 1166 11AA;
+C5D4;C5D4;110B 1166 11AB;C5D4;110B 1166 11AB;
+C5D5;C5D5;110B 1166 11AC;C5D5;110B 1166 11AC;
+C5D6;C5D6;110B 1166 11AD;C5D6;110B 1166 11AD;
+C5D7;C5D7;110B 1166 11AE;C5D7;110B 1166 11AE;
+C5D8;C5D8;110B 1166 11AF;C5D8;110B 1166 11AF;
+C5D9;C5D9;110B 1166 11B0;C5D9;110B 1166 11B0;
+C5DA;C5DA;110B 1166 11B1;C5DA;110B 1166 11B1;
+C5DB;C5DB;110B 1166 11B2;C5DB;110B 1166 11B2;
+C5DC;C5DC;110B 1166 11B3;C5DC;110B 1166 11B3;
+C5DD;C5DD;110B 1166 11B4;C5DD;110B 1166 11B4;
+C5DE;C5DE;110B 1166 11B5;C5DE;110B 1166 11B5;
+C5DF;C5DF;110B 1166 11B6;C5DF;110B 1166 11B6;
+C5E0;C5E0;110B 1166 11B7;C5E0;110B 1166 11B7;
+C5E1;C5E1;110B 1166 11B8;C5E1;110B 1166 11B8;
+C5E2;C5E2;110B 1166 11B9;C5E2;110B 1166 11B9;
+C5E3;C5E3;110B 1166 11BA;C5E3;110B 1166 11BA;
+C5E4;C5E4;110B 1166 11BB;C5E4;110B 1166 11BB;
+C5E5;C5E5;110B 1166 11BC;C5E5;110B 1166 11BC;
+C5E6;C5E6;110B 1166 11BD;C5E6;110B 1166 11BD;
+C5E7;C5E7;110B 1166 11BE;C5E7;110B 1166 11BE;
+C5E8;C5E8;110B 1166 11BF;C5E8;110B 1166 11BF;
+C5E9;C5E9;110B 1166 11C0;C5E9;110B 1166 11C0;
+C5EA;C5EA;110B 1166 11C1;C5EA;110B 1166 11C1;
+C5EB;C5EB;110B 1166 11C2;C5EB;110B 1166 11C2;
+C5EC;C5EC;110B 1167;C5EC;110B 1167;
+C5ED;C5ED;110B 1167 11A8;C5ED;110B 1167 11A8;
+C5EE;C5EE;110B 1167 11A9;C5EE;110B 1167 11A9;
+C5EF;C5EF;110B 1167 11AA;C5EF;110B 1167 11AA;
+C5F0;C5F0;110B 1167 11AB;C5F0;110B 1167 11AB;
+C5F1;C5F1;110B 1167 11AC;C5F1;110B 1167 11AC;
+C5F2;C5F2;110B 1167 11AD;C5F2;110B 1167 11AD;
+C5F3;C5F3;110B 1167 11AE;C5F3;110B 1167 11AE;
+C5F4;C5F4;110B 1167 11AF;C5F4;110B 1167 11AF;
+C5F5;C5F5;110B 1167 11B0;C5F5;110B 1167 11B0;
+C5F6;C5F6;110B 1167 11B1;C5F6;110B 1167 11B1;
+C5F7;C5F7;110B 1167 11B2;C5F7;110B 1167 11B2;
+C5F8;C5F8;110B 1167 11B3;C5F8;110B 1167 11B3;
+C5F9;C5F9;110B 1167 11B4;C5F9;110B 1167 11B4;
+C5FA;C5FA;110B 1167 11B5;C5FA;110B 1167 11B5;
+C5FB;C5FB;110B 1167 11B6;C5FB;110B 1167 11B6;
+C5FC;C5FC;110B 1167 11B7;C5FC;110B 1167 11B7;
+C5FD;C5FD;110B 1167 11B8;C5FD;110B 1167 11B8;
+C5FE;C5FE;110B 1167 11B9;C5FE;110B 1167 11B9;
+C5FF;C5FF;110B 1167 11BA;C5FF;110B 1167 11BA;
+C600;C600;110B 1167 11BB;C600;110B 1167 11BB;
+C601;C601;110B 1167 11BC;C601;110B 1167 11BC;
+C602;C602;110B 1167 11BD;C602;110B 1167 11BD;
+C603;C603;110B 1167 11BE;C603;110B 1167 11BE;
+C604;C604;110B 1167 11BF;C604;110B 1167 11BF;
+C605;C605;110B 1167 11C0;C605;110B 1167 11C0;
+C606;C606;110B 1167 11C1;C606;110B 1167 11C1;
+C607;C607;110B 1167 11C2;C607;110B 1167 11C2;
+C608;C608;110B 1168;C608;110B 1168;
+C609;C609;110B 1168 11A8;C609;110B 1168 11A8;
+C60A;C60A;110B 1168 11A9;C60A;110B 1168 11A9;
+C60B;C60B;110B 1168 11AA;C60B;110B 1168 11AA;
+C60C;C60C;110B 1168 11AB;C60C;110B 1168 11AB;
+C60D;C60D;110B 1168 11AC;C60D;110B 1168 11AC;
+C60E;C60E;110B 1168 11AD;C60E;110B 1168 11AD;
+C60F;C60F;110B 1168 11AE;C60F;110B 1168 11AE;
+C610;C610;110B 1168 11AF;C610;110B 1168 11AF;
+C611;C611;110B 1168 11B0;C611;110B 1168 11B0;
+C612;C612;110B 1168 11B1;C612;110B 1168 11B1;
+C613;C613;110B 1168 11B2;C613;110B 1168 11B2;
+C614;C614;110B 1168 11B3;C614;110B 1168 11B3;
+C615;C615;110B 1168 11B4;C615;110B 1168 11B4;
+C616;C616;110B 1168 11B5;C616;110B 1168 11B5;
+C617;C617;110B 1168 11B6;C617;110B 1168 11B6;
+C618;C618;110B 1168 11B7;C618;110B 1168 11B7;
+C619;C619;110B 1168 11B8;C619;110B 1168 11B8;
+C61A;C61A;110B 1168 11B9;C61A;110B 1168 11B9;
+C61B;C61B;110B 1168 11BA;C61B;110B 1168 11BA;
+C61C;C61C;110B 1168 11BB;C61C;110B 1168 11BB;
+C61D;C61D;110B 1168 11BC;C61D;110B 1168 11BC;
+C61E;C61E;110B 1168 11BD;C61E;110B 1168 11BD;
+C61F;C61F;110B 1168 11BE;C61F;110B 1168 11BE;
+C620;C620;110B 1168 11BF;C620;110B 1168 11BF;
+C621;C621;110B 1168 11C0;C621;110B 1168 11C0;
+C622;C622;110B 1168 11C1;C622;110B 1168 11C1;
+C623;C623;110B 1168 11C2;C623;110B 1168 11C2;
+C624;C624;110B 1169;C624;110B 1169;
+C625;C625;110B 1169 11A8;C625;110B 1169 11A8;
+C626;C626;110B 1169 11A9;C626;110B 1169 11A9;
+C627;C627;110B 1169 11AA;C627;110B 1169 11AA;
+C628;C628;110B 1169 11AB;C628;110B 1169 11AB;
+C629;C629;110B 1169 11AC;C629;110B 1169 11AC;
+C62A;C62A;110B 1169 11AD;C62A;110B 1169 11AD;
+C62B;C62B;110B 1169 11AE;C62B;110B 1169 11AE;
+C62C;C62C;110B 1169 11AF;C62C;110B 1169 11AF;
+C62D;C62D;110B 1169 11B0;C62D;110B 1169 11B0;
+C62E;C62E;110B 1169 11B1;C62E;110B 1169 11B1;
+C62F;C62F;110B 1169 11B2;C62F;110B 1169 11B2;
+C630;C630;110B 1169 11B3;C630;110B 1169 11B3;
+C631;C631;110B 1169 11B4;C631;110B 1169 11B4;
+C632;C632;110B 1169 11B5;C632;110B 1169 11B5;
+C633;C633;110B 1169 11B6;C633;110B 1169 11B6;
+C634;C634;110B 1169 11B7;C634;110B 1169 11B7;
+C635;C635;110B 1169 11B8;C635;110B 1169 11B8;
+C636;C636;110B 1169 11B9;C636;110B 1169 11B9;
+C637;C637;110B 1169 11BA;C637;110B 1169 11BA;
+C638;C638;110B 1169 11BB;C638;110B 1169 11BB;
+C639;C639;110B 1169 11BC;C639;110B 1169 11BC;
+C63A;C63A;110B 1169 11BD;C63A;110B 1169 11BD;
+C63B;C63B;110B 1169 11BE;C63B;110B 1169 11BE;
+C63C;C63C;110B 1169 11BF;C63C;110B 1169 11BF;
+C63D;C63D;110B 1169 11C0;C63D;110B 1169 11C0;
+C63E;C63E;110B 1169 11C1;C63E;110B 1169 11C1;
+C63F;C63F;110B 1169 11C2;C63F;110B 1169 11C2;
+C640;C640;110B 116A;C640;110B 116A;
+C641;C641;110B 116A 11A8;C641;110B 116A 11A8;
+C642;C642;110B 116A 11A9;C642;110B 116A 11A9;
+C643;C643;110B 116A 11AA;C643;110B 116A 11AA;
+C644;C644;110B 116A 11AB;C644;110B 116A 11AB;
+C645;C645;110B 116A 11AC;C645;110B 116A 11AC;
+C646;C646;110B 116A 11AD;C646;110B 116A 11AD;
+C647;C647;110B 116A 11AE;C647;110B 116A 11AE;
+C648;C648;110B 116A 11AF;C648;110B 116A 11AF;
+C649;C649;110B 116A 11B0;C649;110B 116A 11B0;
+C64A;C64A;110B 116A 11B1;C64A;110B 116A 11B1;
+C64B;C64B;110B 116A 11B2;C64B;110B 116A 11B2;
+C64C;C64C;110B 116A 11B3;C64C;110B 116A 11B3;
+C64D;C64D;110B 116A 11B4;C64D;110B 116A 11B4;
+C64E;C64E;110B 116A 11B5;C64E;110B 116A 11B5;
+C64F;C64F;110B 116A 11B6;C64F;110B 116A 11B6;
+C650;C650;110B 116A 11B7;C650;110B 116A 11B7;
+C651;C651;110B 116A 11B8;C651;110B 116A 11B8;
+C652;C652;110B 116A 11B9;C652;110B 116A 11B9;
+C653;C653;110B 116A 11BA;C653;110B 116A 11BA;
+C654;C654;110B 116A 11BB;C654;110B 116A 11BB;
+C655;C655;110B 116A 11BC;C655;110B 116A 11BC;
+C656;C656;110B 116A 11BD;C656;110B 116A 11BD;
+C657;C657;110B 116A 11BE;C657;110B 116A 11BE;
+C658;C658;110B 116A 11BF;C658;110B 116A 11BF;
+C659;C659;110B 116A 11C0;C659;110B 116A 11C0;
+C65A;C65A;110B 116A 11C1;C65A;110B 116A 11C1;
+C65B;C65B;110B 116A 11C2;C65B;110B 116A 11C2;
+C65C;C65C;110B 116B;C65C;110B 116B;
+C65D;C65D;110B 116B 11A8;C65D;110B 116B 11A8;
+C65E;C65E;110B 116B 11A9;C65E;110B 116B 11A9;
+C65F;C65F;110B 116B 11AA;C65F;110B 116B 11AA;
+C660;C660;110B 116B 11AB;C660;110B 116B 11AB;
+C661;C661;110B 116B 11AC;C661;110B 116B 11AC;
+C662;C662;110B 116B 11AD;C662;110B 116B 11AD;
+C663;C663;110B 116B 11AE;C663;110B 116B 11AE;
+C664;C664;110B 116B 11AF;C664;110B 116B 11AF;
+C665;C665;110B 116B 11B0;C665;110B 116B 11B0;
+C666;C666;110B 116B 11B1;C666;110B 116B 11B1;
+C667;C667;110B 116B 11B2;C667;110B 116B 11B2;
+C668;C668;110B 116B 11B3;C668;110B 116B 11B3;
+C669;C669;110B 116B 11B4;C669;110B 116B 11B4;
+C66A;C66A;110B 116B 11B5;C66A;110B 116B 11B5;
+C66B;C66B;110B 116B 11B6;C66B;110B 116B 11B6;
+C66C;C66C;110B 116B 11B7;C66C;110B 116B 11B7;
+C66D;C66D;110B 116B 11B8;C66D;110B 116B 11B8;
+C66E;C66E;110B 116B 11B9;C66E;110B 116B 11B9;
+C66F;C66F;110B 116B 11BA;C66F;110B 116B 11BA;
+C670;C670;110B 116B 11BB;C670;110B 116B 11BB;
+C671;C671;110B 116B 11BC;C671;110B 116B 11BC;
+C672;C672;110B 116B 11BD;C672;110B 116B 11BD;
+C673;C673;110B 116B 11BE;C673;110B 116B 11BE;
+C674;C674;110B 116B 11BF;C674;110B 116B 11BF;
+C675;C675;110B 116B 11C0;C675;110B 116B 11C0;
+C676;C676;110B 116B 11C1;C676;110B 116B 11C1;
+C677;C677;110B 116B 11C2;C677;110B 116B 11C2;
+C678;C678;110B 116C;C678;110B 116C;
+C679;C679;110B 116C 11A8;C679;110B 116C 11A8;
+C67A;C67A;110B 116C 11A9;C67A;110B 116C 11A9;
+C67B;C67B;110B 116C 11AA;C67B;110B 116C 11AA;
+C67C;C67C;110B 116C 11AB;C67C;110B 116C 11AB;
+C67D;C67D;110B 116C 11AC;C67D;110B 116C 11AC;
+C67E;C67E;110B 116C 11AD;C67E;110B 116C 11AD;
+C67F;C67F;110B 116C 11AE;C67F;110B 116C 11AE;
+C680;C680;110B 116C 11AF;C680;110B 116C 11AF;
+C681;C681;110B 116C 11B0;C681;110B 116C 11B0;
+C682;C682;110B 116C 11B1;C682;110B 116C 11B1;
+C683;C683;110B 116C 11B2;C683;110B 116C 11B2;
+C684;C684;110B 116C 11B3;C684;110B 116C 11B3;
+C685;C685;110B 116C 11B4;C685;110B 116C 11B4;
+C686;C686;110B 116C 11B5;C686;110B 116C 11B5;
+C687;C687;110B 116C 11B6;C687;110B 116C 11B6;
+C688;C688;110B 116C 11B7;C688;110B 116C 11B7;
+C689;C689;110B 116C 11B8;C689;110B 116C 11B8;
+C68A;C68A;110B 116C 11B9;C68A;110B 116C 11B9;
+C68B;C68B;110B 116C 11BA;C68B;110B 116C 11BA;
+C68C;C68C;110B 116C 11BB;C68C;110B 116C 11BB;
+C68D;C68D;110B 116C 11BC;C68D;110B 116C 11BC;
+C68E;C68E;110B 116C 11BD;C68E;110B 116C 11BD;
+C68F;C68F;110B 116C 11BE;C68F;110B 116C 11BE;
+C690;C690;110B 116C 11BF;C690;110B 116C 11BF;
+C691;C691;110B 116C 11C0;C691;110B 116C 11C0;
+C692;C692;110B 116C 11C1;C692;110B 116C 11C1;
+C693;C693;110B 116C 11C2;C693;110B 116C 11C2;
+C694;C694;110B 116D;C694;110B 116D;
+C695;C695;110B 116D 11A8;C695;110B 116D 11A8;
+C696;C696;110B 116D 11A9;C696;110B 116D 11A9;
+C697;C697;110B 116D 11AA;C697;110B 116D 11AA;
+C698;C698;110B 116D 11AB;C698;110B 116D 11AB;
+C699;C699;110B 116D 11AC;C699;110B 116D 11AC;
+C69A;C69A;110B 116D 11AD;C69A;110B 116D 11AD;
+C69B;C69B;110B 116D 11AE;C69B;110B 116D 11AE;
+C69C;C69C;110B 116D 11AF;C69C;110B 116D 11AF;
+C69D;C69D;110B 116D 11B0;C69D;110B 116D 11B0;
+C69E;C69E;110B 116D 11B1;C69E;110B 116D 11B1;
+C69F;C69F;110B 116D 11B2;C69F;110B 116D 11B2;
+C6A0;C6A0;110B 116D 11B3;C6A0;110B 116D 11B3;
+C6A1;C6A1;110B 116D 11B4;C6A1;110B 116D 11B4;
+C6A2;C6A2;110B 116D 11B5;C6A2;110B 116D 11B5;
+C6A3;C6A3;110B 116D 11B6;C6A3;110B 116D 11B6;
+C6A4;C6A4;110B 116D 11B7;C6A4;110B 116D 11B7;
+C6A5;C6A5;110B 116D 11B8;C6A5;110B 116D 11B8;
+C6A6;C6A6;110B 116D 11B9;C6A6;110B 116D 11B9;
+C6A7;C6A7;110B 116D 11BA;C6A7;110B 116D 11BA;
+C6A8;C6A8;110B 116D 11BB;C6A8;110B 116D 11BB;
+C6A9;C6A9;110B 116D 11BC;C6A9;110B 116D 11BC;
+C6AA;C6AA;110B 116D 11BD;C6AA;110B 116D 11BD;
+C6AB;C6AB;110B 116D 11BE;C6AB;110B 116D 11BE;
+C6AC;C6AC;110B 116D 11BF;C6AC;110B 116D 11BF;
+C6AD;C6AD;110B 116D 11C0;C6AD;110B 116D 11C0;
+C6AE;C6AE;110B 116D 11C1;C6AE;110B 116D 11C1;
+C6AF;C6AF;110B 116D 11C2;C6AF;110B 116D 11C2;
+C6B0;C6B0;110B 116E;C6B0;110B 116E;
+C6B1;C6B1;110B 116E 11A8;C6B1;110B 116E 11A8;
+C6B2;C6B2;110B 116E 11A9;C6B2;110B 116E 11A9;
+C6B3;C6B3;110B 116E 11AA;C6B3;110B 116E 11AA;
+C6B4;C6B4;110B 116E 11AB;C6B4;110B 116E 11AB;
+C6B5;C6B5;110B 116E 11AC;C6B5;110B 116E 11AC;
+C6B6;C6B6;110B 116E 11AD;C6B6;110B 116E 11AD;
+C6B7;C6B7;110B 116E 11AE;C6B7;110B 116E 11AE;
+C6B8;C6B8;110B 116E 11AF;C6B8;110B 116E 11AF;
+C6B9;C6B9;110B 116E 11B0;C6B9;110B 116E 11B0;
+C6BA;C6BA;110B 116E 11B1;C6BA;110B 116E 11B1;
+C6BB;C6BB;110B 116E 11B2;C6BB;110B 116E 11B2;
+C6BC;C6BC;110B 116E 11B3;C6BC;110B 116E 11B3;
+C6BD;C6BD;110B 116E 11B4;C6BD;110B 116E 11B4;
+C6BE;C6BE;110B 116E 11B5;C6BE;110B 116E 11B5;
+C6BF;C6BF;110B 116E 11B6;C6BF;110B 116E 11B6;
+C6C0;C6C0;110B 116E 11B7;C6C0;110B 116E 11B7;
+C6C1;C6C1;110B 116E 11B8;C6C1;110B 116E 11B8;
+C6C2;C6C2;110B 116E 11B9;C6C2;110B 116E 11B9;
+C6C3;C6C3;110B 116E 11BA;C6C3;110B 116E 11BA;
+C6C4;C6C4;110B 116E 11BB;C6C4;110B 116E 11BB;
+C6C5;C6C5;110B 116E 11BC;C6C5;110B 116E 11BC;
+C6C6;C6C6;110B 116E 11BD;C6C6;110B 116E 11BD;
+C6C7;C6C7;110B 116E 11BE;C6C7;110B 116E 11BE;
+C6C8;C6C8;110B 116E 11BF;C6C8;110B 116E 11BF;
+C6C9;C6C9;110B 116E 11C0;C6C9;110B 116E 11C0;
+C6CA;C6CA;110B 116E 11C1;C6CA;110B 116E 11C1;
+C6CB;C6CB;110B 116E 11C2;C6CB;110B 116E 11C2;
+C6CC;C6CC;110B 116F;C6CC;110B 116F;
+C6CD;C6CD;110B 116F 11A8;C6CD;110B 116F 11A8;
+C6CE;C6CE;110B 116F 11A9;C6CE;110B 116F 11A9;
+C6CF;C6CF;110B 116F 11AA;C6CF;110B 116F 11AA;
+C6D0;C6D0;110B 116F 11AB;C6D0;110B 116F 11AB;
+C6D1;C6D1;110B 116F 11AC;C6D1;110B 116F 11AC;
+C6D2;C6D2;110B 116F 11AD;C6D2;110B 116F 11AD;
+C6D3;C6D3;110B 116F 11AE;C6D3;110B 116F 11AE;
+C6D4;C6D4;110B 116F 11AF;C6D4;110B 116F 11AF;
+C6D5;C6D5;110B 116F 11B0;C6D5;110B 116F 11B0;
+C6D6;C6D6;110B 116F 11B1;C6D6;110B 116F 11B1;
+C6D7;C6D7;110B 116F 11B2;C6D7;110B 116F 11B2;
+C6D8;C6D8;110B 116F 11B3;C6D8;110B 116F 11B3;
+C6D9;C6D9;110B 116F 11B4;C6D9;110B 116F 11B4;
+C6DA;C6DA;110B 116F 11B5;C6DA;110B 116F 11B5;
+C6DB;C6DB;110B 116F 11B6;C6DB;110B 116F 11B6;
+C6DC;C6DC;110B 116F 11B7;C6DC;110B 116F 11B7;
+C6DD;C6DD;110B 116F 11B8;C6DD;110B 116F 11B8;
+C6DE;C6DE;110B 116F 11B9;C6DE;110B 116F 11B9;
+C6DF;C6DF;110B 116F 11BA;C6DF;110B 116F 11BA;
+C6E0;C6E0;110B 116F 11BB;C6E0;110B 116F 11BB;
+C6E1;C6E1;110B 116F 11BC;C6E1;110B 116F 11BC;
+C6E2;C6E2;110B 116F 11BD;C6E2;110B 116F 11BD;
+C6E3;C6E3;110B 116F 11BE;C6E3;110B 116F 11BE;
+C6E4;C6E4;110B 116F 11BF;C6E4;110B 116F 11BF;
+C6E5;C6E5;110B 116F 11C0;C6E5;110B 116F 11C0;
+C6E6;C6E6;110B 116F 11C1;C6E6;110B 116F 11C1;
+C6E7;C6E7;110B 116F 11C2;C6E7;110B 116F 11C2;
+C6E8;C6E8;110B 1170;C6E8;110B 1170;
+C6E9;C6E9;110B 1170 11A8;C6E9;110B 1170 11A8;
+C6EA;C6EA;110B 1170 11A9;C6EA;110B 1170 11A9;
+C6EB;C6EB;110B 1170 11AA;C6EB;110B 1170 11AA;
+C6EC;C6EC;110B 1170 11AB;C6EC;110B 1170 11AB;
+C6ED;C6ED;110B 1170 11AC;C6ED;110B 1170 11AC;
+C6EE;C6EE;110B 1170 11AD;C6EE;110B 1170 11AD;
+C6EF;C6EF;110B 1170 11AE;C6EF;110B 1170 11AE;
+C6F0;C6F0;110B 1170 11AF;C6F0;110B 1170 11AF;
+C6F1;C6F1;110B 1170 11B0;C6F1;110B 1170 11B0;
+C6F2;C6F2;110B 1170 11B1;C6F2;110B 1170 11B1;
+C6F3;C6F3;110B 1170 11B2;C6F3;110B 1170 11B2;
+C6F4;C6F4;110B 1170 11B3;C6F4;110B 1170 11B3;
+C6F5;C6F5;110B 1170 11B4;C6F5;110B 1170 11B4;
+C6F6;C6F6;110B 1170 11B5;C6F6;110B 1170 11B5;
+C6F7;C6F7;110B 1170 11B6;C6F7;110B 1170 11B6;
+C6F8;C6F8;110B 1170 11B7;C6F8;110B 1170 11B7;
+C6F9;C6F9;110B 1170 11B8;C6F9;110B 1170 11B8;
+C6FA;C6FA;110B 1170 11B9;C6FA;110B 1170 11B9;
+C6FB;C6FB;110B 1170 11BA;C6FB;110B 1170 11BA;
+C6FC;C6FC;110B 1170 11BB;C6FC;110B 1170 11BB;
+C6FD;C6FD;110B 1170 11BC;C6FD;110B 1170 11BC;
+C6FE;C6FE;110B 1170 11BD;C6FE;110B 1170 11BD;
+C6FF;C6FF;110B 1170 11BE;C6FF;110B 1170 11BE;
+C700;C700;110B 1170 11BF;C700;110B 1170 11BF;
+C701;C701;110B 1170 11C0;C701;110B 1170 11C0;
+C702;C702;110B 1170 11C1;C702;110B 1170 11C1;
+C703;C703;110B 1170 11C2;C703;110B 1170 11C2;
+C704;C704;110B 1171;C704;110B 1171;
+C705;C705;110B 1171 11A8;C705;110B 1171 11A8;
+C706;C706;110B 1171 11A9;C706;110B 1171 11A9;
+C707;C707;110B 1171 11AA;C707;110B 1171 11AA;
+C708;C708;110B 1171 11AB;C708;110B 1171 11AB;
+C709;C709;110B 1171 11AC;C709;110B 1171 11AC;
+C70A;C70A;110B 1171 11AD;C70A;110B 1171 11AD;
+C70B;C70B;110B 1171 11AE;C70B;110B 1171 11AE;
+C70C;C70C;110B 1171 11AF;C70C;110B 1171 11AF;
+C70D;C70D;110B 1171 11B0;C70D;110B 1171 11B0;
+C70E;C70E;110B 1171 11B1;C70E;110B 1171 11B1;
+C70F;C70F;110B 1171 11B2;C70F;110B 1171 11B2;
+C710;C710;110B 1171 11B3;C710;110B 1171 11B3;
+C711;C711;110B 1171 11B4;C711;110B 1171 11B4;
+C712;C712;110B 1171 11B5;C712;110B 1171 11B5;
+C713;C713;110B 1171 11B6;C713;110B 1171 11B6;
+C714;C714;110B 1171 11B7;C714;110B 1171 11B7;
+C715;C715;110B 1171 11B8;C715;110B 1171 11B8;
+C716;C716;110B 1171 11B9;C716;110B 1171 11B9;
+C717;C717;110B 1171 11BA;C717;110B 1171 11BA;
+C718;C718;110B 1171 11BB;C718;110B 1171 11BB;
+C719;C719;110B 1171 11BC;C719;110B 1171 11BC;
+C71A;C71A;110B 1171 11BD;C71A;110B 1171 11BD;
+C71B;C71B;110B 1171 11BE;C71B;110B 1171 11BE;
+C71C;C71C;110B 1171 11BF;C71C;110B 1171 11BF;
+C71D;C71D;110B 1171 11C0;C71D;110B 1171 11C0;
+C71E;C71E;110B 1171 11C1;C71E;110B 1171 11C1;
+C71F;C71F;110B 1171 11C2;C71F;110B 1171 11C2;
+C720;C720;110B 1172;C720;110B 1172;
+C721;C721;110B 1172 11A8;C721;110B 1172 11A8;
+C722;C722;110B 1172 11A9;C722;110B 1172 11A9;
+C723;C723;110B 1172 11AA;C723;110B 1172 11AA;
+C724;C724;110B 1172 11AB;C724;110B 1172 11AB;
+C725;C725;110B 1172 11AC;C725;110B 1172 11AC;
+C726;C726;110B 1172 11AD;C726;110B 1172 11AD;
+C727;C727;110B 1172 11AE;C727;110B 1172 11AE;
+C728;C728;110B 1172 11AF;C728;110B 1172 11AF;
+C729;C729;110B 1172 11B0;C729;110B 1172 11B0;
+C72A;C72A;110B 1172 11B1;C72A;110B 1172 11B1;
+C72B;C72B;110B 1172 11B2;C72B;110B 1172 11B2;
+C72C;C72C;110B 1172 11B3;C72C;110B 1172 11B3;
+C72D;C72D;110B 1172 11B4;C72D;110B 1172 11B4;
+C72E;C72E;110B 1172 11B5;C72E;110B 1172 11B5;
+C72F;C72F;110B 1172 11B6;C72F;110B 1172 11B6;
+C730;C730;110B 1172 11B7;C730;110B 1172 11B7;
+C731;C731;110B 1172 11B8;C731;110B 1172 11B8;
+C732;C732;110B 1172 11B9;C732;110B 1172 11B9;
+C733;C733;110B 1172 11BA;C733;110B 1172 11BA;
+C734;C734;110B 1172 11BB;C734;110B 1172 11BB;
+C735;C735;110B 1172 11BC;C735;110B 1172 11BC;
+C736;C736;110B 1172 11BD;C736;110B 1172 11BD;
+C737;C737;110B 1172 11BE;C737;110B 1172 11BE;
+C738;C738;110B 1172 11BF;C738;110B 1172 11BF;
+C739;C739;110B 1172 11C0;C739;110B 1172 11C0;
+C73A;C73A;110B 1172 11C1;C73A;110B 1172 11C1;
+C73B;C73B;110B 1172 11C2;C73B;110B 1172 11C2;
+C73C;C73C;110B 1173;C73C;110B 1173;
+C73D;C73D;110B 1173 11A8;C73D;110B 1173 11A8;
+C73E;C73E;110B 1173 11A9;C73E;110B 1173 11A9;
+C73F;C73F;110B 1173 11AA;C73F;110B 1173 11AA;
+C740;C740;110B 1173 11AB;C740;110B 1173 11AB;
+C741;C741;110B 1173 11AC;C741;110B 1173 11AC;
+C742;C742;110B 1173 11AD;C742;110B 1173 11AD;
+C743;C743;110B 1173 11AE;C743;110B 1173 11AE;
+C744;C744;110B 1173 11AF;C744;110B 1173 11AF;
+C745;C745;110B 1173 11B0;C745;110B 1173 11B0;
+C746;C746;110B 1173 11B1;C746;110B 1173 11B1;
+C747;C747;110B 1173 11B2;C747;110B 1173 11B2;
+C748;C748;110B 1173 11B3;C748;110B 1173 11B3;
+C749;C749;110B 1173 11B4;C749;110B 1173 11B4;
+C74A;C74A;110B 1173 11B5;C74A;110B 1173 11B5;
+C74B;C74B;110B 1173 11B6;C74B;110B 1173 11B6;
+C74C;C74C;110B 1173 11B7;C74C;110B 1173 11B7;
+C74D;C74D;110B 1173 11B8;C74D;110B 1173 11B8;
+C74E;C74E;110B 1173 11B9;C74E;110B 1173 11B9;
+C74F;C74F;110B 1173 11BA;C74F;110B 1173 11BA;
+C750;C750;110B 1173 11BB;C750;110B 1173 11BB;
+C751;C751;110B 1173 11BC;C751;110B 1173 11BC;
+C752;C752;110B 1173 11BD;C752;110B 1173 11BD;
+C753;C753;110B 1173 11BE;C753;110B 1173 11BE;
+C754;C754;110B 1173 11BF;C754;110B 1173 11BF;
+C755;C755;110B 1173 11C0;C755;110B 1173 11C0;
+C756;C756;110B 1173 11C1;C756;110B 1173 11C1;
+C757;C757;110B 1173 11C2;C757;110B 1173 11C2;
+C758;C758;110B 1174;C758;110B 1174;
+C759;C759;110B 1174 11A8;C759;110B 1174 11A8;
+C75A;C75A;110B 1174 11A9;C75A;110B 1174 11A9;
+C75B;C75B;110B 1174 11AA;C75B;110B 1174 11AA;
+C75C;C75C;110B 1174 11AB;C75C;110B 1174 11AB;
+C75D;C75D;110B 1174 11AC;C75D;110B 1174 11AC;
+C75E;C75E;110B 1174 11AD;C75E;110B 1174 11AD;
+C75F;C75F;110B 1174 11AE;C75F;110B 1174 11AE;
+C760;C760;110B 1174 11AF;C760;110B 1174 11AF;
+C761;C761;110B 1174 11B0;C761;110B 1174 11B0;
+C762;C762;110B 1174 11B1;C762;110B 1174 11B1;
+C763;C763;110B 1174 11B2;C763;110B 1174 11B2;
+C764;C764;110B 1174 11B3;C764;110B 1174 11B3;
+C765;C765;110B 1174 11B4;C765;110B 1174 11B4;
+C766;C766;110B 1174 11B5;C766;110B 1174 11B5;
+C767;C767;110B 1174 11B6;C767;110B 1174 11B6;
+C768;C768;110B 1174 11B7;C768;110B 1174 11B7;
+C769;C769;110B 1174 11B8;C769;110B 1174 11B8;
+C76A;C76A;110B 1174 11B9;C76A;110B 1174 11B9;
+C76B;C76B;110B 1174 11BA;C76B;110B 1174 11BA;
+C76C;C76C;110B 1174 11BB;C76C;110B 1174 11BB;
+C76D;C76D;110B 1174 11BC;C76D;110B 1174 11BC;
+C76E;C76E;110B 1174 11BD;C76E;110B 1174 11BD;
+C76F;C76F;110B 1174 11BE;C76F;110B 1174 11BE;
+C770;C770;110B 1174 11BF;C770;110B 1174 11BF;
+C771;C771;110B 1174 11C0;C771;110B 1174 11C0;
+C772;C772;110B 1174 11C1;C772;110B 1174 11C1;
+C773;C773;110B 1174 11C2;C773;110B 1174 11C2;
+C774;C774;110B 1175;C774;110B 1175;
+C775;C775;110B 1175 11A8;C775;110B 1175 11A8;
+C776;C776;110B 1175 11A9;C776;110B 1175 11A9;
+C777;C777;110B 1175 11AA;C777;110B 1175 11AA;
+C778;C778;110B 1175 11AB;C778;110B 1175 11AB;
+C779;C779;110B 1175 11AC;C779;110B 1175 11AC;
+C77A;C77A;110B 1175 11AD;C77A;110B 1175 11AD;
+C77B;C77B;110B 1175 11AE;C77B;110B 1175 11AE;
+C77C;C77C;110B 1175 11AF;C77C;110B 1175 11AF;
+C77D;C77D;110B 1175 11B0;C77D;110B 1175 11B0;
+C77E;C77E;110B 1175 11B1;C77E;110B 1175 11B1;
+C77F;C77F;110B 1175 11B2;C77F;110B 1175 11B2;
+C780;C780;110B 1175 11B3;C780;110B 1175 11B3;
+C781;C781;110B 1175 11B4;C781;110B 1175 11B4;
+C782;C782;110B 1175 11B5;C782;110B 1175 11B5;
+C783;C783;110B 1175 11B6;C783;110B 1175 11B6;
+C784;C784;110B 1175 11B7;C784;110B 1175 11B7;
+C785;C785;110B 1175 11B8;C785;110B 1175 11B8;
+C786;C786;110B 1175 11B9;C786;110B 1175 11B9;
+C787;C787;110B 1175 11BA;C787;110B 1175 11BA;
+C788;C788;110B 1175 11BB;C788;110B 1175 11BB;
+C789;C789;110B 1175 11BC;C789;110B 1175 11BC;
+C78A;C78A;110B 1175 11BD;C78A;110B 1175 11BD;
+C78B;C78B;110B 1175 11BE;C78B;110B 1175 11BE;
+C78C;C78C;110B 1175 11BF;C78C;110B 1175 11BF;
+C78D;C78D;110B 1175 11C0;C78D;110B 1175 11C0;
+C78E;C78E;110B 1175 11C1;C78E;110B 1175 11C1;
+C78F;C78F;110B 1175 11C2;C78F;110B 1175 11C2;
+C790;C790;110C 1161;C790;110C 1161;
+C791;C791;110C 1161 11A8;C791;110C 1161 11A8;
+C792;C792;110C 1161 11A9;C792;110C 1161 11A9;
+C793;C793;110C 1161 11AA;C793;110C 1161 11AA;
+C794;C794;110C 1161 11AB;C794;110C 1161 11AB;
+C795;C795;110C 1161 11AC;C795;110C 1161 11AC;
+C796;C796;110C 1161 11AD;C796;110C 1161 11AD;
+C797;C797;110C 1161 11AE;C797;110C 1161 11AE;
+C798;C798;110C 1161 11AF;C798;110C 1161 11AF;
+C799;C799;110C 1161 11B0;C799;110C 1161 11B0;
+C79A;C79A;110C 1161 11B1;C79A;110C 1161 11B1;
+C79B;C79B;110C 1161 11B2;C79B;110C 1161 11B2;
+C79C;C79C;110C 1161 11B3;C79C;110C 1161 11B3;
+C79D;C79D;110C 1161 11B4;C79D;110C 1161 11B4;
+C79E;C79E;110C 1161 11B5;C79E;110C 1161 11B5;
+C79F;C79F;110C 1161 11B6;C79F;110C 1161 11B6;
+C7A0;C7A0;110C 1161 11B7;C7A0;110C 1161 11B7;
+C7A1;C7A1;110C 1161 11B8;C7A1;110C 1161 11B8;
+C7A2;C7A2;110C 1161 11B9;C7A2;110C 1161 11B9;
+C7A3;C7A3;110C 1161 11BA;C7A3;110C 1161 11BA;
+C7A4;C7A4;110C 1161 11BB;C7A4;110C 1161 11BB;
+C7A5;C7A5;110C 1161 11BC;C7A5;110C 1161 11BC;
+C7A6;C7A6;110C 1161 11BD;C7A6;110C 1161 11BD;
+C7A7;C7A7;110C 1161 11BE;C7A7;110C 1161 11BE;
+C7A8;C7A8;110C 1161 11BF;C7A8;110C 1161 11BF;
+C7A9;C7A9;110C 1161 11C0;C7A9;110C 1161 11C0;
+C7AA;C7AA;110C 1161 11C1;C7AA;110C 1161 11C1;
+C7AB;C7AB;110C 1161 11C2;C7AB;110C 1161 11C2;
+C7AC;C7AC;110C 1162;C7AC;110C 1162;
+C7AD;C7AD;110C 1162 11A8;C7AD;110C 1162 11A8;
+C7AE;C7AE;110C 1162 11A9;C7AE;110C 1162 11A9;
+C7AF;C7AF;110C 1162 11AA;C7AF;110C 1162 11AA;
+C7B0;C7B0;110C 1162 11AB;C7B0;110C 1162 11AB;
+C7B1;C7B1;110C 1162 11AC;C7B1;110C 1162 11AC;
+C7B2;C7B2;110C 1162 11AD;C7B2;110C 1162 11AD;
+C7B3;C7B3;110C 1162 11AE;C7B3;110C 1162 11AE;
+C7B4;C7B4;110C 1162 11AF;C7B4;110C 1162 11AF;
+C7B5;C7B5;110C 1162 11B0;C7B5;110C 1162 11B0;
+C7B6;C7B6;110C 1162 11B1;C7B6;110C 1162 11B1;
+C7B7;C7B7;110C 1162 11B2;C7B7;110C 1162 11B2;
+C7B8;C7B8;110C 1162 11B3;C7B8;110C 1162 11B3;
+C7B9;C7B9;110C 1162 11B4;C7B9;110C 1162 11B4;
+C7BA;C7BA;110C 1162 11B5;C7BA;110C 1162 11B5;
+C7BB;C7BB;110C 1162 11B6;C7BB;110C 1162 11B6;
+C7BC;C7BC;110C 1162 11B7;C7BC;110C 1162 11B7;
+C7BD;C7BD;110C 1162 11B8;C7BD;110C 1162 11B8;
+C7BE;C7BE;110C 1162 11B9;C7BE;110C 1162 11B9;
+C7BF;C7BF;110C 1162 11BA;C7BF;110C 1162 11BA;
+C7C0;C7C0;110C 1162 11BB;C7C0;110C 1162 11BB;
+C7C1;C7C1;110C 1162 11BC;C7C1;110C 1162 11BC;
+C7C2;C7C2;110C 1162 11BD;C7C2;110C 1162 11BD;
+C7C3;C7C3;110C 1162 11BE;C7C3;110C 1162 11BE;
+C7C4;C7C4;110C 1162 11BF;C7C4;110C 1162 11BF;
+C7C5;C7C5;110C 1162 11C0;C7C5;110C 1162 11C0;
+C7C6;C7C6;110C 1162 11C1;C7C6;110C 1162 11C1;
+C7C7;C7C7;110C 1162 11C2;C7C7;110C 1162 11C2;
+C7C8;C7C8;110C 1163;C7C8;110C 1163;
+C7C9;C7C9;110C 1163 11A8;C7C9;110C 1163 11A8;
+C7CA;C7CA;110C 1163 11A9;C7CA;110C 1163 11A9;
+C7CB;C7CB;110C 1163 11AA;C7CB;110C 1163 11AA;
+C7CC;C7CC;110C 1163 11AB;C7CC;110C 1163 11AB;
+C7CD;C7CD;110C 1163 11AC;C7CD;110C 1163 11AC;
+C7CE;C7CE;110C 1163 11AD;C7CE;110C 1163 11AD;
+C7CF;C7CF;110C 1163 11AE;C7CF;110C 1163 11AE;
+C7D0;C7D0;110C 1163 11AF;C7D0;110C 1163 11AF;
+C7D1;C7D1;110C 1163 11B0;C7D1;110C 1163 11B0;
+C7D2;C7D2;110C 1163 11B1;C7D2;110C 1163 11B1;
+C7D3;C7D3;110C 1163 11B2;C7D3;110C 1163 11B2;
+C7D4;C7D4;110C 1163 11B3;C7D4;110C 1163 11B3;
+C7D5;C7D5;110C 1163 11B4;C7D5;110C 1163 11B4;
+C7D6;C7D6;110C 1163 11B5;C7D6;110C 1163 11B5;
+C7D7;C7D7;110C 1163 11B6;C7D7;110C 1163 11B6;
+C7D8;C7D8;110C 1163 11B7;C7D8;110C 1163 11B7;
+C7D9;C7D9;110C 1163 11B8;C7D9;110C 1163 11B8;
+C7DA;C7DA;110C 1163 11B9;C7DA;110C 1163 11B9;
+C7DB;C7DB;110C 1163 11BA;C7DB;110C 1163 11BA;
+C7DC;C7DC;110C 1163 11BB;C7DC;110C 1163 11BB;
+C7DD;C7DD;110C 1163 11BC;C7DD;110C 1163 11BC;
+C7DE;C7DE;110C 1163 11BD;C7DE;110C 1163 11BD;
+C7DF;C7DF;110C 1163 11BE;C7DF;110C 1163 11BE;
+C7E0;C7E0;110C 1163 11BF;C7E0;110C 1163 11BF;
+C7E1;C7E1;110C 1163 11C0;C7E1;110C 1163 11C0;
+C7E2;C7E2;110C 1163 11C1;C7E2;110C 1163 11C1;
+C7E3;C7E3;110C 1163 11C2;C7E3;110C 1163 11C2;
+C7E4;C7E4;110C 1164;C7E4;110C 1164;
+C7E5;C7E5;110C 1164 11A8;C7E5;110C 1164 11A8;
+C7E6;C7E6;110C 1164 11A9;C7E6;110C 1164 11A9;
+C7E7;C7E7;110C 1164 11AA;C7E7;110C 1164 11AA;
+C7E8;C7E8;110C 1164 11AB;C7E8;110C 1164 11AB;
+C7E9;C7E9;110C 1164 11AC;C7E9;110C 1164 11AC;
+C7EA;C7EA;110C 1164 11AD;C7EA;110C 1164 11AD;
+C7EB;C7EB;110C 1164 11AE;C7EB;110C 1164 11AE;
+C7EC;C7EC;110C 1164 11AF;C7EC;110C 1164 11AF;
+C7ED;C7ED;110C 1164 11B0;C7ED;110C 1164 11B0;
+C7EE;C7EE;110C 1164 11B1;C7EE;110C 1164 11B1;
+C7EF;C7EF;110C 1164 11B2;C7EF;110C 1164 11B2;
+C7F0;C7F0;110C 1164 11B3;C7F0;110C 1164 11B3;
+C7F1;C7F1;110C 1164 11B4;C7F1;110C 1164 11B4;
+C7F2;C7F2;110C 1164 11B5;C7F2;110C 1164 11B5;
+C7F3;C7F3;110C 1164 11B6;C7F3;110C 1164 11B6;
+C7F4;C7F4;110C 1164 11B7;C7F4;110C 1164 11B7;
+C7F5;C7F5;110C 1164 11B8;C7F5;110C 1164 11B8;
+C7F6;C7F6;110C 1164 11B9;C7F6;110C 1164 11B9;
+C7F7;C7F7;110C 1164 11BA;C7F7;110C 1164 11BA;
+C7F8;C7F8;110C 1164 11BB;C7F8;110C 1164 11BB;
+C7F9;C7F9;110C 1164 11BC;C7F9;110C 1164 11BC;
+C7FA;C7FA;110C 1164 11BD;C7FA;110C 1164 11BD;
+C7FB;C7FB;110C 1164 11BE;C7FB;110C 1164 11BE;
+C7FC;C7FC;110C 1164 11BF;C7FC;110C 1164 11BF;
+C7FD;C7FD;110C 1164 11C0;C7FD;110C 1164 11C0;
+C7FE;C7FE;110C 1164 11C1;C7FE;110C 1164 11C1;
+C7FF;C7FF;110C 1164 11C2;C7FF;110C 1164 11C2;
+C800;C800;110C 1165;C800;110C 1165;
+C801;C801;110C 1165 11A8;C801;110C 1165 11A8;
+C802;C802;110C 1165 11A9;C802;110C 1165 11A9;
+C803;C803;110C 1165 11AA;C803;110C 1165 11AA;
+C804;C804;110C 1165 11AB;C804;110C 1165 11AB;
+C805;C805;110C 1165 11AC;C805;110C 1165 11AC;
+C806;C806;110C 1165 11AD;C806;110C 1165 11AD;
+C807;C807;110C 1165 11AE;C807;110C 1165 11AE;
+C808;C808;110C 1165 11AF;C808;110C 1165 11AF;
+C809;C809;110C 1165 11B0;C809;110C 1165 11B0;
+C80A;C80A;110C 1165 11B1;C80A;110C 1165 11B1;
+C80B;C80B;110C 1165 11B2;C80B;110C 1165 11B2;
+C80C;C80C;110C 1165 11B3;C80C;110C 1165 11B3;
+C80D;C80D;110C 1165 11B4;C80D;110C 1165 11B4;
+C80E;C80E;110C 1165 11B5;C80E;110C 1165 11B5;
+C80F;C80F;110C 1165 11B6;C80F;110C 1165 11B6;
+C810;C810;110C 1165 11B7;C810;110C 1165 11B7;
+C811;C811;110C 1165 11B8;C811;110C 1165 11B8;
+C812;C812;110C 1165 11B9;C812;110C 1165 11B9;
+C813;C813;110C 1165 11BA;C813;110C 1165 11BA;
+C814;C814;110C 1165 11BB;C814;110C 1165 11BB;
+C815;C815;110C 1165 11BC;C815;110C 1165 11BC;
+C816;C816;110C 1165 11BD;C816;110C 1165 11BD;
+C817;C817;110C 1165 11BE;C817;110C 1165 11BE;
+C818;C818;110C 1165 11BF;C818;110C 1165 11BF;
+C819;C819;110C 1165 11C0;C819;110C 1165 11C0;
+C81A;C81A;110C 1165 11C1;C81A;110C 1165 11C1;
+C81B;C81B;110C 1165 11C2;C81B;110C 1165 11C2;
+C81C;C81C;110C 1166;C81C;110C 1166;
+C81D;C81D;110C 1166 11A8;C81D;110C 1166 11A8;
+C81E;C81E;110C 1166 11A9;C81E;110C 1166 11A9;
+C81F;C81F;110C 1166 11AA;C81F;110C 1166 11AA;
+C820;C820;110C 1166 11AB;C820;110C 1166 11AB;
+C821;C821;110C 1166 11AC;C821;110C 1166 11AC;
+C822;C822;110C 1166 11AD;C822;110C 1166 11AD;
+C823;C823;110C 1166 11AE;C823;110C 1166 11AE;
+C824;C824;110C 1166 11AF;C824;110C 1166 11AF;
+C825;C825;110C 1166 11B0;C825;110C 1166 11B0;
+C826;C826;110C 1166 11B1;C826;110C 1166 11B1;
+C827;C827;110C 1166 11B2;C827;110C 1166 11B2;
+C828;C828;110C 1166 11B3;C828;110C 1166 11B3;
+C829;C829;110C 1166 11B4;C829;110C 1166 11B4;
+C82A;C82A;110C 1166 11B5;C82A;110C 1166 11B5;
+C82B;C82B;110C 1166 11B6;C82B;110C 1166 11B6;
+C82C;C82C;110C 1166 11B7;C82C;110C 1166 11B7;
+C82D;C82D;110C 1166 11B8;C82D;110C 1166 11B8;
+C82E;C82E;110C 1166 11B9;C82E;110C 1166 11B9;
+C82F;C82F;110C 1166 11BA;C82F;110C 1166 11BA;
+C830;C830;110C 1166 11BB;C830;110C 1166 11BB;
+C831;C831;110C 1166 11BC;C831;110C 1166 11BC;
+C832;C832;110C 1166 11BD;C832;110C 1166 11BD;
+C833;C833;110C 1166 11BE;C833;110C 1166 11BE;
+C834;C834;110C 1166 11BF;C834;110C 1166 11BF;
+C835;C835;110C 1166 11C0;C835;110C 1166 11C0;
+C836;C836;110C 1166 11C1;C836;110C 1166 11C1;
+C837;C837;110C 1166 11C2;C837;110C 1166 11C2;
+C838;C838;110C 1167;C838;110C 1167;
+C839;C839;110C 1167 11A8;C839;110C 1167 11A8;
+C83A;C83A;110C 1167 11A9;C83A;110C 1167 11A9;
+C83B;C83B;110C 1167 11AA;C83B;110C 1167 11AA;
+C83C;C83C;110C 1167 11AB;C83C;110C 1167 11AB;
+C83D;C83D;110C 1167 11AC;C83D;110C 1167 11AC;
+C83E;C83E;110C 1167 11AD;C83E;110C 1167 11AD;
+C83F;C83F;110C 1167 11AE;C83F;110C 1167 11AE;
+C840;C840;110C 1167 11AF;C840;110C 1167 11AF;
+C841;C841;110C 1167 11B0;C841;110C 1167 11B0;
+C842;C842;110C 1167 11B1;C842;110C 1167 11B1;
+C843;C843;110C 1167 11B2;C843;110C 1167 11B2;
+C844;C844;110C 1167 11B3;C844;110C 1167 11B3;
+C845;C845;110C 1167 11B4;C845;110C 1167 11B4;
+C846;C846;110C 1167 11B5;C846;110C 1167 11B5;
+C847;C847;110C 1167 11B6;C847;110C 1167 11B6;
+C848;C848;110C 1167 11B7;C848;110C 1167 11B7;
+C849;C849;110C 1167 11B8;C849;110C 1167 11B8;
+C84A;C84A;110C 1167 11B9;C84A;110C 1167 11B9;
+C84B;C84B;110C 1167 11BA;C84B;110C 1167 11BA;
+C84C;C84C;110C 1167 11BB;C84C;110C 1167 11BB;
+C84D;C84D;110C 1167 11BC;C84D;110C 1167 11BC;
+C84E;C84E;110C 1167 11BD;C84E;110C 1167 11BD;
+C84F;C84F;110C 1167 11BE;C84F;110C 1167 11BE;
+C850;C850;110C 1167 11BF;C850;110C 1167 11BF;
+C851;C851;110C 1167 11C0;C851;110C 1167 11C0;
+C852;C852;110C 1167 11C1;C852;110C 1167 11C1;
+C853;C853;110C 1167 11C2;C853;110C 1167 11C2;
+C854;C854;110C 1168;C854;110C 1168;
+C855;C855;110C 1168 11A8;C855;110C 1168 11A8;
+C856;C856;110C 1168 11A9;C856;110C 1168 11A9;
+C857;C857;110C 1168 11AA;C857;110C 1168 11AA;
+C858;C858;110C 1168 11AB;C858;110C 1168 11AB;
+C859;C859;110C 1168 11AC;C859;110C 1168 11AC;
+C85A;C85A;110C 1168 11AD;C85A;110C 1168 11AD;
+C85B;C85B;110C 1168 11AE;C85B;110C 1168 11AE;
+C85C;C85C;110C 1168 11AF;C85C;110C 1168 11AF;
+C85D;C85D;110C 1168 11B0;C85D;110C 1168 11B0;
+C85E;C85E;110C 1168 11B1;C85E;110C 1168 11B1;
+C85F;C85F;110C 1168 11B2;C85F;110C 1168 11B2;
+C860;C860;110C 1168 11B3;C860;110C 1168 11B3;
+C861;C861;110C 1168 11B4;C861;110C 1168 11B4;
+C862;C862;110C 1168 11B5;C862;110C 1168 11B5;
+C863;C863;110C 1168 11B6;C863;110C 1168 11B6;
+C864;C864;110C 1168 11B7;C864;110C 1168 11B7;
+C865;C865;110C 1168 11B8;C865;110C 1168 11B8;
+C866;C866;110C 1168 11B9;C866;110C 1168 11B9;
+C867;C867;110C 1168 11BA;C867;110C 1168 11BA;
+C868;C868;110C 1168 11BB;C868;110C 1168 11BB;
+C869;C869;110C 1168 11BC;C869;110C 1168 11BC;
+C86A;C86A;110C 1168 11BD;C86A;110C 1168 11BD;
+C86B;C86B;110C 1168 11BE;C86B;110C 1168 11BE;
+C86C;C86C;110C 1168 11BF;C86C;110C 1168 11BF;
+C86D;C86D;110C 1168 11C0;C86D;110C 1168 11C0;
+C86E;C86E;110C 1168 11C1;C86E;110C 1168 11C1;
+C86F;C86F;110C 1168 11C2;C86F;110C 1168 11C2;
+C870;C870;110C 1169;C870;110C 1169;
+C871;C871;110C 1169 11A8;C871;110C 1169 11A8;
+C872;C872;110C 1169 11A9;C872;110C 1169 11A9;
+C873;C873;110C 1169 11AA;C873;110C 1169 11AA;
+C874;C874;110C 1169 11AB;C874;110C 1169 11AB;
+C875;C875;110C 1169 11AC;C875;110C 1169 11AC;
+C876;C876;110C 1169 11AD;C876;110C 1169 11AD;
+C877;C877;110C 1169 11AE;C877;110C 1169 11AE;
+C878;C878;110C 1169 11AF;C878;110C 1169 11AF;
+C879;C879;110C 1169 11B0;C879;110C 1169 11B0;
+C87A;C87A;110C 1169 11B1;C87A;110C 1169 11B1;
+C87B;C87B;110C 1169 11B2;C87B;110C 1169 11B2;
+C87C;C87C;110C 1169 11B3;C87C;110C 1169 11B3;
+C87D;C87D;110C 1169 11B4;C87D;110C 1169 11B4;
+C87E;C87E;110C 1169 11B5;C87E;110C 1169 11B5;
+C87F;C87F;110C 1169 11B6;C87F;110C 1169 11B6;
+C880;C880;110C 1169 11B7;C880;110C 1169 11B7;
+C881;C881;110C 1169 11B8;C881;110C 1169 11B8;
+C882;C882;110C 1169 11B9;C882;110C 1169 11B9;
+C883;C883;110C 1169 11BA;C883;110C 1169 11BA;
+C884;C884;110C 1169 11BB;C884;110C 1169 11BB;
+C885;C885;110C 1169 11BC;C885;110C 1169 11BC;
+C886;C886;110C 1169 11BD;C886;110C 1169 11BD;
+C887;C887;110C 1169 11BE;C887;110C 1169 11BE;
+C888;C888;110C 1169 11BF;C888;110C 1169 11BF;
+C889;C889;110C 1169 11C0;C889;110C 1169 11C0;
+C88A;C88A;110C 1169 11C1;C88A;110C 1169 11C1;
+C88B;C88B;110C 1169 11C2;C88B;110C 1169 11C2;
+C88C;C88C;110C 116A;C88C;110C 116A;
+C88D;C88D;110C 116A 11A8;C88D;110C 116A 11A8;
+C88E;C88E;110C 116A 11A9;C88E;110C 116A 11A9;
+C88F;C88F;110C 116A 11AA;C88F;110C 116A 11AA;
+C890;C890;110C 116A 11AB;C890;110C 116A 11AB;
+C891;C891;110C 116A 11AC;C891;110C 116A 11AC;
+C892;C892;110C 116A 11AD;C892;110C 116A 11AD;
+C893;C893;110C 116A 11AE;C893;110C 116A 11AE;
+C894;C894;110C 116A 11AF;C894;110C 116A 11AF;
+C895;C895;110C 116A 11B0;C895;110C 116A 11B0;
+C896;C896;110C 116A 11B1;C896;110C 116A 11B1;
+C897;C897;110C 116A 11B2;C897;110C 116A 11B2;
+C898;C898;110C 116A 11B3;C898;110C 116A 11B3;
+C899;C899;110C 116A 11B4;C899;110C 116A 11B4;
+C89A;C89A;110C 116A 11B5;C89A;110C 116A 11B5;
+C89B;C89B;110C 116A 11B6;C89B;110C 116A 11B6;
+C89C;C89C;110C 116A 11B7;C89C;110C 116A 11B7;
+C89D;C89D;110C 116A 11B8;C89D;110C 116A 11B8;
+C89E;C89E;110C 116A 11B9;C89E;110C 116A 11B9;
+C89F;C89F;110C 116A 11BA;C89F;110C 116A 11BA;
+C8A0;C8A0;110C 116A 11BB;C8A0;110C 116A 11BB;
+C8A1;C8A1;110C 116A 11BC;C8A1;110C 116A 11BC;
+C8A2;C8A2;110C 116A 11BD;C8A2;110C 116A 11BD;
+C8A3;C8A3;110C 116A 11BE;C8A3;110C 116A 11BE;
+C8A4;C8A4;110C 116A 11BF;C8A4;110C 116A 11BF;
+C8A5;C8A5;110C 116A 11C0;C8A5;110C 116A 11C0;
+C8A6;C8A6;110C 116A 11C1;C8A6;110C 116A 11C1;
+C8A7;C8A7;110C 116A 11C2;C8A7;110C 116A 11C2;
+C8A8;C8A8;110C 116B;C8A8;110C 116B;
+C8A9;C8A9;110C 116B 11A8;C8A9;110C 116B 11A8;
+C8AA;C8AA;110C 116B 11A9;C8AA;110C 116B 11A9;
+C8AB;C8AB;110C 116B 11AA;C8AB;110C 116B 11AA;
+C8AC;C8AC;110C 116B 11AB;C8AC;110C 116B 11AB;
+C8AD;C8AD;110C 116B 11AC;C8AD;110C 116B 11AC;
+C8AE;C8AE;110C 116B 11AD;C8AE;110C 116B 11AD;
+C8AF;C8AF;110C 116B 11AE;C8AF;110C 116B 11AE;
+C8B0;C8B0;110C 116B 11AF;C8B0;110C 116B 11AF;
+C8B1;C8B1;110C 116B 11B0;C8B1;110C 116B 11B0;
+C8B2;C8B2;110C 116B 11B1;C8B2;110C 116B 11B1;
+C8B3;C8B3;110C 116B 11B2;C8B3;110C 116B 11B2;
+C8B4;C8B4;110C 116B 11B3;C8B4;110C 116B 11B3;
+C8B5;C8B5;110C 116B 11B4;C8B5;110C 116B 11B4;
+C8B6;C8B6;110C 116B 11B5;C8B6;110C 116B 11B5;
+C8B7;C8B7;110C 116B 11B6;C8B7;110C 116B 11B6;
+C8B8;C8B8;110C 116B 11B7;C8B8;110C 116B 11B7;
+C8B9;C8B9;110C 116B 11B8;C8B9;110C 116B 11B8;
+C8BA;C8BA;110C 116B 11B9;C8BA;110C 116B 11B9;
+C8BB;C8BB;110C 116B 11BA;C8BB;110C 116B 11BA;
+C8BC;C8BC;110C 116B 11BB;C8BC;110C 116B 11BB;
+C8BD;C8BD;110C 116B 11BC;C8BD;110C 116B 11BC;
+C8BE;C8BE;110C 116B 11BD;C8BE;110C 116B 11BD;
+C8BF;C8BF;110C 116B 11BE;C8BF;110C 116B 11BE;
+C8C0;C8C0;110C 116B 11BF;C8C0;110C 116B 11BF;
+C8C1;C8C1;110C 116B 11C0;C8C1;110C 116B 11C0;
+C8C2;C8C2;110C 116B 11C1;C8C2;110C 116B 11C1;
+C8C3;C8C3;110C 116B 11C2;C8C3;110C 116B 11C2;
+C8C4;C8C4;110C 116C;C8C4;110C 116C;
+C8C5;C8C5;110C 116C 11A8;C8C5;110C 116C 11A8;
+C8C6;C8C6;110C 116C 11A9;C8C6;110C 116C 11A9;
+C8C7;C8C7;110C 116C 11AA;C8C7;110C 116C 11AA;
+C8C8;C8C8;110C 116C 11AB;C8C8;110C 116C 11AB;
+C8C9;C8C9;110C 116C 11AC;C8C9;110C 116C 11AC;
+C8CA;C8CA;110C 116C 11AD;C8CA;110C 116C 11AD;
+C8CB;C8CB;110C 116C 11AE;C8CB;110C 116C 11AE;
+C8CC;C8CC;110C 116C 11AF;C8CC;110C 116C 11AF;
+C8CD;C8CD;110C 116C 11B0;C8CD;110C 116C 11B0;
+C8CE;C8CE;110C 116C 11B1;C8CE;110C 116C 11B1;
+C8CF;C8CF;110C 116C 11B2;C8CF;110C 116C 11B2;
+C8D0;C8D0;110C 116C 11B3;C8D0;110C 116C 11B3;
+C8D1;C8D1;110C 116C 11B4;C8D1;110C 116C 11B4;
+C8D2;C8D2;110C 116C 11B5;C8D2;110C 116C 11B5;
+C8D3;C8D3;110C 116C 11B6;C8D3;110C 116C 11B6;
+C8D4;C8D4;110C 116C 11B7;C8D4;110C 116C 11B7;
+C8D5;C8D5;110C 116C 11B8;C8D5;110C 116C 11B8;
+C8D6;C8D6;110C 116C 11B9;C8D6;110C 116C 11B9;
+C8D7;C8D7;110C 116C 11BA;C8D7;110C 116C 11BA;
+C8D8;C8D8;110C 116C 11BB;C8D8;110C 116C 11BB;
+C8D9;C8D9;110C 116C 11BC;C8D9;110C 116C 11BC;
+C8DA;C8DA;110C 116C 11BD;C8DA;110C 116C 11BD;
+C8DB;C8DB;110C 116C 11BE;C8DB;110C 116C 11BE;
+C8DC;C8DC;110C 116C 11BF;C8DC;110C 116C 11BF;
+C8DD;C8DD;110C 116C 11C0;C8DD;110C 116C 11C0;
+C8DE;C8DE;110C 116C 11C1;C8DE;110C 116C 11C1;
+C8DF;C8DF;110C 116C 11C2;C8DF;110C 116C 11C2;
+C8E0;C8E0;110C 116D;C8E0;110C 116D;
+C8E1;C8E1;110C 116D 11A8;C8E1;110C 116D 11A8;
+C8E2;C8E2;110C 116D 11A9;C8E2;110C 116D 11A9;
+C8E3;C8E3;110C 116D 11AA;C8E3;110C 116D 11AA;
+C8E4;C8E4;110C 116D 11AB;C8E4;110C 116D 11AB;
+C8E5;C8E5;110C 116D 11AC;C8E5;110C 116D 11AC;
+C8E6;C8E6;110C 116D 11AD;C8E6;110C 116D 11AD;
+C8E7;C8E7;110C 116D 11AE;C8E7;110C 116D 11AE;
+C8E8;C8E8;110C 116D 11AF;C8E8;110C 116D 11AF;
+C8E9;C8E9;110C 116D 11B0;C8E9;110C 116D 11B0;
+C8EA;C8EA;110C 116D 11B1;C8EA;110C 116D 11B1;
+C8EB;C8EB;110C 116D 11B2;C8EB;110C 116D 11B2;
+C8EC;C8EC;110C 116D 11B3;C8EC;110C 116D 11B3;
+C8ED;C8ED;110C 116D 11B4;C8ED;110C 116D 11B4;
+C8EE;C8EE;110C 116D 11B5;C8EE;110C 116D 11B5;
+C8EF;C8EF;110C 116D 11B6;C8EF;110C 116D 11B6;
+C8F0;C8F0;110C 116D 11B7;C8F0;110C 116D 11B7;
+C8F1;C8F1;110C 116D 11B8;C8F1;110C 116D 11B8;
+C8F2;C8F2;110C 116D 11B9;C8F2;110C 116D 11B9;
+C8F3;C8F3;110C 116D 11BA;C8F3;110C 116D 11BA;
+C8F4;C8F4;110C 116D 11BB;C8F4;110C 116D 11BB;
+C8F5;C8F5;110C 116D 11BC;C8F5;110C 116D 11BC;
+C8F6;C8F6;110C 116D 11BD;C8F6;110C 116D 11BD;
+C8F7;C8F7;110C 116D 11BE;C8F7;110C 116D 11BE;
+C8F8;C8F8;110C 116D 11BF;C8F8;110C 116D 11BF;
+C8F9;C8F9;110C 116D 11C0;C8F9;110C 116D 11C0;
+C8FA;C8FA;110C 116D 11C1;C8FA;110C 116D 11C1;
+C8FB;C8FB;110C 116D 11C2;C8FB;110C 116D 11C2;
+C8FC;C8FC;110C 116E;C8FC;110C 116E;
+C8FD;C8FD;110C 116E 11A8;C8FD;110C 116E 11A8;
+C8FE;C8FE;110C 116E 11A9;C8FE;110C 116E 11A9;
+C8FF;C8FF;110C 116E 11AA;C8FF;110C 116E 11AA;
+C900;C900;110C 116E 11AB;C900;110C 116E 11AB;
+C901;C901;110C 116E 11AC;C901;110C 116E 11AC;
+C902;C902;110C 116E 11AD;C902;110C 116E 11AD;
+C903;C903;110C 116E 11AE;C903;110C 116E 11AE;
+C904;C904;110C 116E 11AF;C904;110C 116E 11AF;
+C905;C905;110C 116E 11B0;C905;110C 116E 11B0;
+C906;C906;110C 116E 11B1;C906;110C 116E 11B1;
+C907;C907;110C 116E 11B2;C907;110C 116E 11B2;
+C908;C908;110C 116E 11B3;C908;110C 116E 11B3;
+C909;C909;110C 116E 11B4;C909;110C 116E 11B4;
+C90A;C90A;110C 116E 11B5;C90A;110C 116E 11B5;
+C90B;C90B;110C 116E 11B6;C90B;110C 116E 11B6;
+C90C;C90C;110C 116E 11B7;C90C;110C 116E 11B7;
+C90D;C90D;110C 116E 11B8;C90D;110C 116E 11B8;
+C90E;C90E;110C 116E 11B9;C90E;110C 116E 11B9;
+C90F;C90F;110C 116E 11BA;C90F;110C 116E 11BA;
+C910;C910;110C 116E 11BB;C910;110C 116E 11BB;
+C911;C911;110C 116E 11BC;C911;110C 116E 11BC;
+C912;C912;110C 116E 11BD;C912;110C 116E 11BD;
+C913;C913;110C 116E 11BE;C913;110C 116E 11BE;
+C914;C914;110C 116E 11BF;C914;110C 116E 11BF;
+C915;C915;110C 116E 11C0;C915;110C 116E 11C0;
+C916;C916;110C 116E 11C1;C916;110C 116E 11C1;
+C917;C917;110C 116E 11C2;C917;110C 116E 11C2;
+C918;C918;110C 116F;C918;110C 116F;
+C919;C919;110C 116F 11A8;C919;110C 116F 11A8;
+C91A;C91A;110C 116F 11A9;C91A;110C 116F 11A9;
+C91B;C91B;110C 116F 11AA;C91B;110C 116F 11AA;
+C91C;C91C;110C 116F 11AB;C91C;110C 116F 11AB;
+C91D;C91D;110C 116F 11AC;C91D;110C 116F 11AC;
+C91E;C91E;110C 116F 11AD;C91E;110C 116F 11AD;
+C91F;C91F;110C 116F 11AE;C91F;110C 116F 11AE;
+C920;C920;110C 116F 11AF;C920;110C 116F 11AF;
+C921;C921;110C 116F 11B0;C921;110C 116F 11B0;
+C922;C922;110C 116F 11B1;C922;110C 116F 11B1;
+C923;C923;110C 116F 11B2;C923;110C 116F 11B2;
+C924;C924;110C 116F 11B3;C924;110C 116F 11B3;
+C925;C925;110C 116F 11B4;C925;110C 116F 11B4;
+C926;C926;110C 116F 11B5;C926;110C 116F 11B5;
+C927;C927;110C 116F 11B6;C927;110C 116F 11B6;
+C928;C928;110C 116F 11B7;C928;110C 116F 11B7;
+C929;C929;110C 116F 11B8;C929;110C 116F 11B8;
+C92A;C92A;110C 116F 11B9;C92A;110C 116F 11B9;
+C92B;C92B;110C 116F 11BA;C92B;110C 116F 11BA;
+C92C;C92C;110C 116F 11BB;C92C;110C 116F 11BB;
+C92D;C92D;110C 116F 11BC;C92D;110C 116F 11BC;
+C92E;C92E;110C 116F 11BD;C92E;110C 116F 11BD;
+C92F;C92F;110C 116F 11BE;C92F;110C 116F 11BE;
+C930;C930;110C 116F 11BF;C930;110C 116F 11BF;
+C931;C931;110C 116F 11C0;C931;110C 116F 11C0;
+C932;C932;110C 116F 11C1;C932;110C 116F 11C1;
+C933;C933;110C 116F 11C2;C933;110C 116F 11C2;
+C934;C934;110C 1170;C934;110C 1170;
+C935;C935;110C 1170 11A8;C935;110C 1170 11A8;
+C936;C936;110C 1170 11A9;C936;110C 1170 11A9;
+C937;C937;110C 1170 11AA;C937;110C 1170 11AA;
+C938;C938;110C 1170 11AB;C938;110C 1170 11AB;
+C939;C939;110C 1170 11AC;C939;110C 1170 11AC;
+C93A;C93A;110C 1170 11AD;C93A;110C 1170 11AD;
+C93B;C93B;110C 1170 11AE;C93B;110C 1170 11AE;
+C93C;C93C;110C 1170 11AF;C93C;110C 1170 11AF;
+C93D;C93D;110C 1170 11B0;C93D;110C 1170 11B0;
+C93E;C93E;110C 1170 11B1;C93E;110C 1170 11B1;
+C93F;C93F;110C 1170 11B2;C93F;110C 1170 11B2;
+C940;C940;110C 1170 11B3;C940;110C 1170 11B3;
+C941;C941;110C 1170 11B4;C941;110C 1170 11B4;
+C942;C942;110C 1170 11B5;C942;110C 1170 11B5;
+C943;C943;110C 1170 11B6;C943;110C 1170 11B6;
+C944;C944;110C 1170 11B7;C944;110C 1170 11B7;
+C945;C945;110C 1170 11B8;C945;110C 1170 11B8;
+C946;C946;110C 1170 11B9;C946;110C 1170 11B9;
+C947;C947;110C 1170 11BA;C947;110C 1170 11BA;
+C948;C948;110C 1170 11BB;C948;110C 1170 11BB;
+C949;C949;110C 1170 11BC;C949;110C 1170 11BC;
+C94A;C94A;110C 1170 11BD;C94A;110C 1170 11BD;
+C94B;C94B;110C 1170 11BE;C94B;110C 1170 11BE;
+C94C;C94C;110C 1170 11BF;C94C;110C 1170 11BF;
+C94D;C94D;110C 1170 11C0;C94D;110C 1170 11C0;
+C94E;C94E;110C 1170 11C1;C94E;110C 1170 11C1;
+C94F;C94F;110C 1170 11C2;C94F;110C 1170 11C2;
+C950;C950;110C 1171;C950;110C 1171;
+C951;C951;110C 1171 11A8;C951;110C 1171 11A8;
+C952;C952;110C 1171 11A9;C952;110C 1171 11A9;
+C953;C953;110C 1171 11AA;C953;110C 1171 11AA;
+C954;C954;110C 1171 11AB;C954;110C 1171 11AB;
+C955;C955;110C 1171 11AC;C955;110C 1171 11AC;
+C956;C956;110C 1171 11AD;C956;110C 1171 11AD;
+C957;C957;110C 1171 11AE;C957;110C 1171 11AE;
+C958;C958;110C 1171 11AF;C958;110C 1171 11AF;
+C959;C959;110C 1171 11B0;C959;110C 1171 11B0;
+C95A;C95A;110C 1171 11B1;C95A;110C 1171 11B1;
+C95B;C95B;110C 1171 11B2;C95B;110C 1171 11B2;
+C95C;C95C;110C 1171 11B3;C95C;110C 1171 11B3;
+C95D;C95D;110C 1171 11B4;C95D;110C 1171 11B4;
+C95E;C95E;110C 1171 11B5;C95E;110C 1171 11B5;
+C95F;C95F;110C 1171 11B6;C95F;110C 1171 11B6;
+C960;C960;110C 1171 11B7;C960;110C 1171 11B7;
+C961;C961;110C 1171 11B8;C961;110C 1171 11B8;
+C962;C962;110C 1171 11B9;C962;110C 1171 11B9;
+C963;C963;110C 1171 11BA;C963;110C 1171 11BA;
+C964;C964;110C 1171 11BB;C964;110C 1171 11BB;
+C965;C965;110C 1171 11BC;C965;110C 1171 11BC;
+C966;C966;110C 1171 11BD;C966;110C 1171 11BD;
+C967;C967;110C 1171 11BE;C967;110C 1171 11BE;
+C968;C968;110C 1171 11BF;C968;110C 1171 11BF;
+C969;C969;110C 1171 11C0;C969;110C 1171 11C0;
+C96A;C96A;110C 1171 11C1;C96A;110C 1171 11C1;
+C96B;C96B;110C 1171 11C2;C96B;110C 1171 11C2;
+C96C;C96C;110C 1172;C96C;110C 1172;
+C96D;C96D;110C 1172 11A8;C96D;110C 1172 11A8;
+C96E;C96E;110C 1172 11A9;C96E;110C 1172 11A9;
+C96F;C96F;110C 1172 11AA;C96F;110C 1172 11AA;
+C970;C970;110C 1172 11AB;C970;110C 1172 11AB;
+C971;C971;110C 1172 11AC;C971;110C 1172 11AC;
+C972;C972;110C 1172 11AD;C972;110C 1172 11AD;
+C973;C973;110C 1172 11AE;C973;110C 1172 11AE;
+C974;C974;110C 1172 11AF;C974;110C 1172 11AF;
+C975;C975;110C 1172 11B0;C975;110C 1172 11B0;
+C976;C976;110C 1172 11B1;C976;110C 1172 11B1;
+C977;C977;110C 1172 11B2;C977;110C 1172 11B2;
+C978;C978;110C 1172 11B3;C978;110C 1172 11B3;
+C979;C979;110C 1172 11B4;C979;110C 1172 11B4;
+C97A;C97A;110C 1172 11B5;C97A;110C 1172 11B5;
+C97B;C97B;110C 1172 11B6;C97B;110C 1172 11B6;
+C97C;C97C;110C 1172 11B7;C97C;110C 1172 11B7;
+C97D;C97D;110C 1172 11B8;C97D;110C 1172 11B8;
+C97E;C97E;110C 1172 11B9;C97E;110C 1172 11B9;
+C97F;C97F;110C 1172 11BA;C97F;110C 1172 11BA;
+C980;C980;110C 1172 11BB;C980;110C 1172 11BB;
+C981;C981;110C 1172 11BC;C981;110C 1172 11BC;
+C982;C982;110C 1172 11BD;C982;110C 1172 11BD;
+C983;C983;110C 1172 11BE;C983;110C 1172 11BE;
+C984;C984;110C 1172 11BF;C984;110C 1172 11BF;
+C985;C985;110C 1172 11C0;C985;110C 1172 11C0;
+C986;C986;110C 1172 11C1;C986;110C 1172 11C1;
+C987;C987;110C 1172 11C2;C987;110C 1172 11C2;
+C988;C988;110C 1173;C988;110C 1173;
+C989;C989;110C 1173 11A8;C989;110C 1173 11A8;
+C98A;C98A;110C 1173 11A9;C98A;110C 1173 11A9;
+C98B;C98B;110C 1173 11AA;C98B;110C 1173 11AA;
+C98C;C98C;110C 1173 11AB;C98C;110C 1173 11AB;
+C98D;C98D;110C 1173 11AC;C98D;110C 1173 11AC;
+C98E;C98E;110C 1173 11AD;C98E;110C 1173 11AD;
+C98F;C98F;110C 1173 11AE;C98F;110C 1173 11AE;
+C990;C990;110C 1173 11AF;C990;110C 1173 11AF;
+C991;C991;110C 1173 11B0;C991;110C 1173 11B0;
+C992;C992;110C 1173 11B1;C992;110C 1173 11B1;
+C993;C993;110C 1173 11B2;C993;110C 1173 11B2;
+C994;C994;110C 1173 11B3;C994;110C 1173 11B3;
+C995;C995;110C 1173 11B4;C995;110C 1173 11B4;
+C996;C996;110C 1173 11B5;C996;110C 1173 11B5;
+C997;C997;110C 1173 11B6;C997;110C 1173 11B6;
+C998;C998;110C 1173 11B7;C998;110C 1173 11B7;
+C999;C999;110C 1173 11B8;C999;110C 1173 11B8;
+C99A;C99A;110C 1173 11B9;C99A;110C 1173 11B9;
+C99B;C99B;110C 1173 11BA;C99B;110C 1173 11BA;
+C99C;C99C;110C 1173 11BB;C99C;110C 1173 11BB;
+C99D;C99D;110C 1173 11BC;C99D;110C 1173 11BC;
+C99E;C99E;110C 1173 11BD;C99E;110C 1173 11BD;
+C99F;C99F;110C 1173 11BE;C99F;110C 1173 11BE;
+C9A0;C9A0;110C 1173 11BF;C9A0;110C 1173 11BF;
+C9A1;C9A1;110C 1173 11C0;C9A1;110C 1173 11C0;
+C9A2;C9A2;110C 1173 11C1;C9A2;110C 1173 11C1;
+C9A3;C9A3;110C 1173 11C2;C9A3;110C 1173 11C2;
+C9A4;C9A4;110C 1174;C9A4;110C 1174;
+C9A5;C9A5;110C 1174 11A8;C9A5;110C 1174 11A8;
+C9A6;C9A6;110C 1174 11A9;C9A6;110C 1174 11A9;
+C9A7;C9A7;110C 1174 11AA;C9A7;110C 1174 11AA;
+C9A8;C9A8;110C 1174 11AB;C9A8;110C 1174 11AB;
+C9A9;C9A9;110C 1174 11AC;C9A9;110C 1174 11AC;
+C9AA;C9AA;110C 1174 11AD;C9AA;110C 1174 11AD;
+C9AB;C9AB;110C 1174 11AE;C9AB;110C 1174 11AE;
+C9AC;C9AC;110C 1174 11AF;C9AC;110C 1174 11AF;
+C9AD;C9AD;110C 1174 11B0;C9AD;110C 1174 11B0;
+C9AE;C9AE;110C 1174 11B1;C9AE;110C 1174 11B1;
+C9AF;C9AF;110C 1174 11B2;C9AF;110C 1174 11B2;
+C9B0;C9B0;110C 1174 11B3;C9B0;110C 1174 11B3;
+C9B1;C9B1;110C 1174 11B4;C9B1;110C 1174 11B4;
+C9B2;C9B2;110C 1174 11B5;C9B2;110C 1174 11B5;
+C9B3;C9B3;110C 1174 11B6;C9B3;110C 1174 11B6;
+C9B4;C9B4;110C 1174 11B7;C9B4;110C 1174 11B7;
+C9B5;C9B5;110C 1174 11B8;C9B5;110C 1174 11B8;
+C9B6;C9B6;110C 1174 11B9;C9B6;110C 1174 11B9;
+C9B7;C9B7;110C 1174 11BA;C9B7;110C 1174 11BA;
+C9B8;C9B8;110C 1174 11BB;C9B8;110C 1174 11BB;
+C9B9;C9B9;110C 1174 11BC;C9B9;110C 1174 11BC;
+C9BA;C9BA;110C 1174 11BD;C9BA;110C 1174 11BD;
+C9BB;C9BB;110C 1174 11BE;C9BB;110C 1174 11BE;
+C9BC;C9BC;110C 1174 11BF;C9BC;110C 1174 11BF;
+C9BD;C9BD;110C 1174 11C0;C9BD;110C 1174 11C0;
+C9BE;C9BE;110C 1174 11C1;C9BE;110C 1174 11C1;
+C9BF;C9BF;110C 1174 11C2;C9BF;110C 1174 11C2;
+C9C0;C9C0;110C 1175;C9C0;110C 1175;
+C9C1;C9C1;110C 1175 11A8;C9C1;110C 1175 11A8;
+C9C2;C9C2;110C 1175 11A9;C9C2;110C 1175 11A9;
+C9C3;C9C3;110C 1175 11AA;C9C3;110C 1175 11AA;
+C9C4;C9C4;110C 1175 11AB;C9C4;110C 1175 11AB;
+C9C5;C9C5;110C 1175 11AC;C9C5;110C 1175 11AC;
+C9C6;C9C6;110C 1175 11AD;C9C6;110C 1175 11AD;
+C9C7;C9C7;110C 1175 11AE;C9C7;110C 1175 11AE;
+C9C8;C9C8;110C 1175 11AF;C9C8;110C 1175 11AF;
+C9C9;C9C9;110C 1175 11B0;C9C9;110C 1175 11B0;
+C9CA;C9CA;110C 1175 11B1;C9CA;110C 1175 11B1;
+C9CB;C9CB;110C 1175 11B2;C9CB;110C 1175 11B2;
+C9CC;C9CC;110C 1175 11B3;C9CC;110C 1175 11B3;
+C9CD;C9CD;110C 1175 11B4;C9CD;110C 1175 11B4;
+C9CE;C9CE;110C 1175 11B5;C9CE;110C 1175 11B5;
+C9CF;C9CF;110C 1175 11B6;C9CF;110C 1175 11B6;
+C9D0;C9D0;110C 1175 11B7;C9D0;110C 1175 11B7;
+C9D1;C9D1;110C 1175 11B8;C9D1;110C 1175 11B8;
+C9D2;C9D2;110C 1175 11B9;C9D2;110C 1175 11B9;
+C9D3;C9D3;110C 1175 11BA;C9D3;110C 1175 11BA;
+C9D4;C9D4;110C 1175 11BB;C9D4;110C 1175 11BB;
+C9D5;C9D5;110C 1175 11BC;C9D5;110C 1175 11BC;
+C9D6;C9D6;110C 1175 11BD;C9D6;110C 1175 11BD;
+C9D7;C9D7;110C 1175 11BE;C9D7;110C 1175 11BE;
+C9D8;C9D8;110C 1175 11BF;C9D8;110C 1175 11BF;
+C9D9;C9D9;110C 1175 11C0;C9D9;110C 1175 11C0;
+C9DA;C9DA;110C 1175 11C1;C9DA;110C 1175 11C1;
+C9DB;C9DB;110C 1175 11C2;C9DB;110C 1175 11C2;
+C9DC;C9DC;110D 1161;C9DC;110D 1161;
+C9DD;C9DD;110D 1161 11A8;C9DD;110D 1161 11A8;
+C9DE;C9DE;110D 1161 11A9;C9DE;110D 1161 11A9;
+C9DF;C9DF;110D 1161 11AA;C9DF;110D 1161 11AA;
+C9E0;C9E0;110D 1161 11AB;C9E0;110D 1161 11AB;
+C9E1;C9E1;110D 1161 11AC;C9E1;110D 1161 11AC;
+C9E2;C9E2;110D 1161 11AD;C9E2;110D 1161 11AD;
+C9E3;C9E3;110D 1161 11AE;C9E3;110D 1161 11AE;
+C9E4;C9E4;110D 1161 11AF;C9E4;110D 1161 11AF;
+C9E5;C9E5;110D 1161 11B0;C9E5;110D 1161 11B0;
+C9E6;C9E6;110D 1161 11B1;C9E6;110D 1161 11B1;
+C9E7;C9E7;110D 1161 11B2;C9E7;110D 1161 11B2;
+C9E8;C9E8;110D 1161 11B3;C9E8;110D 1161 11B3;
+C9E9;C9E9;110D 1161 11B4;C9E9;110D 1161 11B4;
+C9EA;C9EA;110D 1161 11B5;C9EA;110D 1161 11B5;
+C9EB;C9EB;110D 1161 11B6;C9EB;110D 1161 11B6;
+C9EC;C9EC;110D 1161 11B7;C9EC;110D 1161 11B7;
+C9ED;C9ED;110D 1161 11B8;C9ED;110D 1161 11B8;
+C9EE;C9EE;110D 1161 11B9;C9EE;110D 1161 11B9;
+C9EF;C9EF;110D 1161 11BA;C9EF;110D 1161 11BA;
+C9F0;C9F0;110D 1161 11BB;C9F0;110D 1161 11BB;
+C9F1;C9F1;110D 1161 11BC;C9F1;110D 1161 11BC;
+C9F2;C9F2;110D 1161 11BD;C9F2;110D 1161 11BD;
+C9F3;C9F3;110D 1161 11BE;C9F3;110D 1161 11BE;
+C9F4;C9F4;110D 1161 11BF;C9F4;110D 1161 11BF;
+C9F5;C9F5;110D 1161 11C0;C9F5;110D 1161 11C0;
+C9F6;C9F6;110D 1161 11C1;C9F6;110D 1161 11C1;
+C9F7;C9F7;110D 1161 11C2;C9F7;110D 1161 11C2;
+C9F8;C9F8;110D 1162;C9F8;110D 1162;
+C9F9;C9F9;110D 1162 11A8;C9F9;110D 1162 11A8;
+C9FA;C9FA;110D 1162 11A9;C9FA;110D 1162 11A9;
+C9FB;C9FB;110D 1162 11AA;C9FB;110D 1162 11AA;
+C9FC;C9FC;110D 1162 11AB;C9FC;110D 1162 11AB;
+C9FD;C9FD;110D 1162 11AC;C9FD;110D 1162 11AC;
+C9FE;C9FE;110D 1162 11AD;C9FE;110D 1162 11AD;
+C9FF;C9FF;110D 1162 11AE;C9FF;110D 1162 11AE;
+CA00;CA00;110D 1162 11AF;CA00;110D 1162 11AF;
+CA01;CA01;110D 1162 11B0;CA01;110D 1162 11B0;
+CA02;CA02;110D 1162 11B1;CA02;110D 1162 11B1;
+CA03;CA03;110D 1162 11B2;CA03;110D 1162 11B2;
+CA04;CA04;110D 1162 11B3;CA04;110D 1162 11B3;
+CA05;CA05;110D 1162 11B4;CA05;110D 1162 11B4;
+CA06;CA06;110D 1162 11B5;CA06;110D 1162 11B5;
+CA07;CA07;110D 1162 11B6;CA07;110D 1162 11B6;
+CA08;CA08;110D 1162 11B7;CA08;110D 1162 11B7;
+CA09;CA09;110D 1162 11B8;CA09;110D 1162 11B8;
+CA0A;CA0A;110D 1162 11B9;CA0A;110D 1162 11B9;
+CA0B;CA0B;110D 1162 11BA;CA0B;110D 1162 11BA;
+CA0C;CA0C;110D 1162 11BB;CA0C;110D 1162 11BB;
+CA0D;CA0D;110D 1162 11BC;CA0D;110D 1162 11BC;
+CA0E;CA0E;110D 1162 11BD;CA0E;110D 1162 11BD;
+CA0F;CA0F;110D 1162 11BE;CA0F;110D 1162 11BE;
+CA10;CA10;110D 1162 11BF;CA10;110D 1162 11BF;
+CA11;CA11;110D 1162 11C0;CA11;110D 1162 11C0;
+CA12;CA12;110D 1162 11C1;CA12;110D 1162 11C1;
+CA13;CA13;110D 1162 11C2;CA13;110D 1162 11C2;
+CA14;CA14;110D 1163;CA14;110D 1163;
+CA15;CA15;110D 1163 11A8;CA15;110D 1163 11A8;
+CA16;CA16;110D 1163 11A9;CA16;110D 1163 11A9;
+CA17;CA17;110D 1163 11AA;CA17;110D 1163 11AA;
+CA18;CA18;110D 1163 11AB;CA18;110D 1163 11AB;
+CA19;CA19;110D 1163 11AC;CA19;110D 1163 11AC;
+CA1A;CA1A;110D 1163 11AD;CA1A;110D 1163 11AD;
+CA1B;CA1B;110D 1163 11AE;CA1B;110D 1163 11AE;
+CA1C;CA1C;110D 1163 11AF;CA1C;110D 1163 11AF;
+CA1D;CA1D;110D 1163 11B0;CA1D;110D 1163 11B0;
+CA1E;CA1E;110D 1163 11B1;CA1E;110D 1163 11B1;
+CA1F;CA1F;110D 1163 11B2;CA1F;110D 1163 11B2;
+CA20;CA20;110D 1163 11B3;CA20;110D 1163 11B3;
+CA21;CA21;110D 1163 11B4;CA21;110D 1163 11B4;
+CA22;CA22;110D 1163 11B5;CA22;110D 1163 11B5;
+CA23;CA23;110D 1163 11B6;CA23;110D 1163 11B6;
+CA24;CA24;110D 1163 11B7;CA24;110D 1163 11B7;
+CA25;CA25;110D 1163 11B8;CA25;110D 1163 11B8;
+CA26;CA26;110D 1163 11B9;CA26;110D 1163 11B9;
+CA27;CA27;110D 1163 11BA;CA27;110D 1163 11BA;
+CA28;CA28;110D 1163 11BB;CA28;110D 1163 11BB;
+CA29;CA29;110D 1163 11BC;CA29;110D 1163 11BC;
+CA2A;CA2A;110D 1163 11BD;CA2A;110D 1163 11BD;
+CA2B;CA2B;110D 1163 11BE;CA2B;110D 1163 11BE;
+CA2C;CA2C;110D 1163 11BF;CA2C;110D 1163 11BF;
+CA2D;CA2D;110D 1163 11C0;CA2D;110D 1163 11C0;
+CA2E;CA2E;110D 1163 11C1;CA2E;110D 1163 11C1;
+CA2F;CA2F;110D 1163 11C2;CA2F;110D 1163 11C2;
+CA30;CA30;110D 1164;CA30;110D 1164;
+CA31;CA31;110D 1164 11A8;CA31;110D 1164 11A8;
+CA32;CA32;110D 1164 11A9;CA32;110D 1164 11A9;
+CA33;CA33;110D 1164 11AA;CA33;110D 1164 11AA;
+CA34;CA34;110D 1164 11AB;CA34;110D 1164 11AB;
+CA35;CA35;110D 1164 11AC;CA35;110D 1164 11AC;
+CA36;CA36;110D 1164 11AD;CA36;110D 1164 11AD;
+CA37;CA37;110D 1164 11AE;CA37;110D 1164 11AE;
+CA38;CA38;110D 1164 11AF;CA38;110D 1164 11AF;
+CA39;CA39;110D 1164 11B0;CA39;110D 1164 11B0;
+CA3A;CA3A;110D 1164 11B1;CA3A;110D 1164 11B1;
+CA3B;CA3B;110D 1164 11B2;CA3B;110D 1164 11B2;
+CA3C;CA3C;110D 1164 11B3;CA3C;110D 1164 11B3;
+CA3D;CA3D;110D 1164 11B4;CA3D;110D 1164 11B4;
+CA3E;CA3E;110D 1164 11B5;CA3E;110D 1164 11B5;
+CA3F;CA3F;110D 1164 11B6;CA3F;110D 1164 11B6;
+CA40;CA40;110D 1164 11B7;CA40;110D 1164 11B7;
+CA41;CA41;110D 1164 11B8;CA41;110D 1164 11B8;
+CA42;CA42;110D 1164 11B9;CA42;110D 1164 11B9;
+CA43;CA43;110D 1164 11BA;CA43;110D 1164 11BA;
+CA44;CA44;110D 1164 11BB;CA44;110D 1164 11BB;
+CA45;CA45;110D 1164 11BC;CA45;110D 1164 11BC;
+CA46;CA46;110D 1164 11BD;CA46;110D 1164 11BD;
+CA47;CA47;110D 1164 11BE;CA47;110D 1164 11BE;
+CA48;CA48;110D 1164 11BF;CA48;110D 1164 11BF;
+CA49;CA49;110D 1164 11C0;CA49;110D 1164 11C0;
+CA4A;CA4A;110D 1164 11C1;CA4A;110D 1164 11C1;
+CA4B;CA4B;110D 1164 11C2;CA4B;110D 1164 11C2;
+CA4C;CA4C;110D 1165;CA4C;110D 1165;
+CA4D;CA4D;110D 1165 11A8;CA4D;110D 1165 11A8;
+CA4E;CA4E;110D 1165 11A9;CA4E;110D 1165 11A9;
+CA4F;CA4F;110D 1165 11AA;CA4F;110D 1165 11AA;
+CA50;CA50;110D 1165 11AB;CA50;110D 1165 11AB;
+CA51;CA51;110D 1165 11AC;CA51;110D 1165 11AC;
+CA52;CA52;110D 1165 11AD;CA52;110D 1165 11AD;
+CA53;CA53;110D 1165 11AE;CA53;110D 1165 11AE;
+CA54;CA54;110D 1165 11AF;CA54;110D 1165 11AF;
+CA55;CA55;110D 1165 11B0;CA55;110D 1165 11B0;
+CA56;CA56;110D 1165 11B1;CA56;110D 1165 11B1;
+CA57;CA57;110D 1165 11B2;CA57;110D 1165 11B2;
+CA58;CA58;110D 1165 11B3;CA58;110D 1165 11B3;
+CA59;CA59;110D 1165 11B4;CA59;110D 1165 11B4;
+CA5A;CA5A;110D 1165 11B5;CA5A;110D 1165 11B5;
+CA5B;CA5B;110D 1165 11B6;CA5B;110D 1165 11B6;
+CA5C;CA5C;110D 1165 11B7;CA5C;110D 1165 11B7;
+CA5D;CA5D;110D 1165 11B8;CA5D;110D 1165 11B8;
+CA5E;CA5E;110D 1165 11B9;CA5E;110D 1165 11B9;
+CA5F;CA5F;110D 1165 11BA;CA5F;110D 1165 11BA;
+CA60;CA60;110D 1165 11BB;CA60;110D 1165 11BB;
+CA61;CA61;110D 1165 11BC;CA61;110D 1165 11BC;
+CA62;CA62;110D 1165 11BD;CA62;110D 1165 11BD;
+CA63;CA63;110D 1165 11BE;CA63;110D 1165 11BE;
+CA64;CA64;110D 1165 11BF;CA64;110D 1165 11BF;
+CA65;CA65;110D 1165 11C0;CA65;110D 1165 11C0;
+CA66;CA66;110D 1165 11C1;CA66;110D 1165 11C1;
+CA67;CA67;110D 1165 11C2;CA67;110D 1165 11C2;
+CA68;CA68;110D 1166;CA68;110D 1166;
+CA69;CA69;110D 1166 11A8;CA69;110D 1166 11A8;
+CA6A;CA6A;110D 1166 11A9;CA6A;110D 1166 11A9;
+CA6B;CA6B;110D 1166 11AA;CA6B;110D 1166 11AA;
+CA6C;CA6C;110D 1166 11AB;CA6C;110D 1166 11AB;
+CA6D;CA6D;110D 1166 11AC;CA6D;110D 1166 11AC;
+CA6E;CA6E;110D 1166 11AD;CA6E;110D 1166 11AD;
+CA6F;CA6F;110D 1166 11AE;CA6F;110D 1166 11AE;
+CA70;CA70;110D 1166 11AF;CA70;110D 1166 11AF;
+CA71;CA71;110D 1166 11B0;CA71;110D 1166 11B0;
+CA72;CA72;110D 1166 11B1;CA72;110D 1166 11B1;
+CA73;CA73;110D 1166 11B2;CA73;110D 1166 11B2;
+CA74;CA74;110D 1166 11B3;CA74;110D 1166 11B3;
+CA75;CA75;110D 1166 11B4;CA75;110D 1166 11B4;
+CA76;CA76;110D 1166 11B5;CA76;110D 1166 11B5;
+CA77;CA77;110D 1166 11B6;CA77;110D 1166 11B6;
+CA78;CA78;110D 1166 11B7;CA78;110D 1166 11B7;
+CA79;CA79;110D 1166 11B8;CA79;110D 1166 11B8;
+CA7A;CA7A;110D 1166 11B9;CA7A;110D 1166 11B9;
+CA7B;CA7B;110D 1166 11BA;CA7B;110D 1166 11BA;
+CA7C;CA7C;110D 1166 11BB;CA7C;110D 1166 11BB;
+CA7D;CA7D;110D 1166 11BC;CA7D;110D 1166 11BC;
+CA7E;CA7E;110D 1166 11BD;CA7E;110D 1166 11BD;
+CA7F;CA7F;110D 1166 11BE;CA7F;110D 1166 11BE;
+CA80;CA80;110D 1166 11BF;CA80;110D 1166 11BF;
+CA81;CA81;110D 1166 11C0;CA81;110D 1166 11C0;
+CA82;CA82;110D 1166 11C1;CA82;110D 1166 11C1;
+CA83;CA83;110D 1166 11C2;CA83;110D 1166 11C2;
+CA84;CA84;110D 1167;CA84;110D 1167;
+CA85;CA85;110D 1167 11A8;CA85;110D 1167 11A8;
+CA86;CA86;110D 1167 11A9;CA86;110D 1167 11A9;
+CA87;CA87;110D 1167 11AA;CA87;110D 1167 11AA;
+CA88;CA88;110D 1167 11AB;CA88;110D 1167 11AB;
+CA89;CA89;110D 1167 11AC;CA89;110D 1167 11AC;
+CA8A;CA8A;110D 1167 11AD;CA8A;110D 1167 11AD;
+CA8B;CA8B;110D 1167 11AE;CA8B;110D 1167 11AE;
+CA8C;CA8C;110D 1167 11AF;CA8C;110D 1167 11AF;
+CA8D;CA8D;110D 1167 11B0;CA8D;110D 1167 11B0;
+CA8E;CA8E;110D 1167 11B1;CA8E;110D 1167 11B1;
+CA8F;CA8F;110D 1167 11B2;CA8F;110D 1167 11B2;
+CA90;CA90;110D 1167 11B3;CA90;110D 1167 11B3;
+CA91;CA91;110D 1167 11B4;CA91;110D 1167 11B4;
+CA92;CA92;110D 1167 11B5;CA92;110D 1167 11B5;
+CA93;CA93;110D 1167 11B6;CA93;110D 1167 11B6;
+CA94;CA94;110D 1167 11B7;CA94;110D 1167 11B7;
+CA95;CA95;110D 1167 11B8;CA95;110D 1167 11B8;
+CA96;CA96;110D 1167 11B9;CA96;110D 1167 11B9;
+CA97;CA97;110D 1167 11BA;CA97;110D 1167 11BA;
+CA98;CA98;110D 1167 11BB;CA98;110D 1167 11BB;
+CA99;CA99;110D 1167 11BC;CA99;110D 1167 11BC;
+CA9A;CA9A;110D 1167 11BD;CA9A;110D 1167 11BD;
+CA9B;CA9B;110D 1167 11BE;CA9B;110D 1167 11BE;
+CA9C;CA9C;110D 1167 11BF;CA9C;110D 1167 11BF;
+CA9D;CA9D;110D 1167 11C0;CA9D;110D 1167 11C0;
+CA9E;CA9E;110D 1167 11C1;CA9E;110D 1167 11C1;
+CA9F;CA9F;110D 1167 11C2;CA9F;110D 1167 11C2;
+CAA0;CAA0;110D 1168;CAA0;110D 1168;
+CAA1;CAA1;110D 1168 11A8;CAA1;110D 1168 11A8;
+CAA2;CAA2;110D 1168 11A9;CAA2;110D 1168 11A9;
+CAA3;CAA3;110D 1168 11AA;CAA3;110D 1168 11AA;
+CAA4;CAA4;110D 1168 11AB;CAA4;110D 1168 11AB;
+CAA5;CAA5;110D 1168 11AC;CAA5;110D 1168 11AC;
+CAA6;CAA6;110D 1168 11AD;CAA6;110D 1168 11AD;
+CAA7;CAA7;110D 1168 11AE;CAA7;110D 1168 11AE;
+CAA8;CAA8;110D 1168 11AF;CAA8;110D 1168 11AF;
+CAA9;CAA9;110D 1168 11B0;CAA9;110D 1168 11B0;
+CAAA;CAAA;110D 1168 11B1;CAAA;110D 1168 11B1;
+CAAB;CAAB;110D 1168 11B2;CAAB;110D 1168 11B2;
+CAAC;CAAC;110D 1168 11B3;CAAC;110D 1168 11B3;
+CAAD;CAAD;110D 1168 11B4;CAAD;110D 1168 11B4;
+CAAE;CAAE;110D 1168 11B5;CAAE;110D 1168 11B5;
+CAAF;CAAF;110D 1168 11B6;CAAF;110D 1168 11B6;
+CAB0;CAB0;110D 1168 11B7;CAB0;110D 1168 11B7;
+CAB1;CAB1;110D 1168 11B8;CAB1;110D 1168 11B8;
+CAB2;CAB2;110D 1168 11B9;CAB2;110D 1168 11B9;
+CAB3;CAB3;110D 1168 11BA;CAB3;110D 1168 11BA;
+CAB4;CAB4;110D 1168 11BB;CAB4;110D 1168 11BB;
+CAB5;CAB5;110D 1168 11BC;CAB5;110D 1168 11BC;
+CAB6;CAB6;110D 1168 11BD;CAB6;110D 1168 11BD;
+CAB7;CAB7;110D 1168 11BE;CAB7;110D 1168 11BE;
+CAB8;CAB8;110D 1168 11BF;CAB8;110D 1168 11BF;
+CAB9;CAB9;110D 1168 11C0;CAB9;110D 1168 11C0;
+CABA;CABA;110D 1168 11C1;CABA;110D 1168 11C1;
+CABB;CABB;110D 1168 11C2;CABB;110D 1168 11C2;
+CABC;CABC;110D 1169;CABC;110D 1169;
+CABD;CABD;110D 1169 11A8;CABD;110D 1169 11A8;
+CABE;CABE;110D 1169 11A9;CABE;110D 1169 11A9;
+CABF;CABF;110D 1169 11AA;CABF;110D 1169 11AA;
+CAC0;CAC0;110D 1169 11AB;CAC0;110D 1169 11AB;
+CAC1;CAC1;110D 1169 11AC;CAC1;110D 1169 11AC;
+CAC2;CAC2;110D 1169 11AD;CAC2;110D 1169 11AD;
+CAC3;CAC3;110D 1169 11AE;CAC3;110D 1169 11AE;
+CAC4;CAC4;110D 1169 11AF;CAC4;110D 1169 11AF;
+CAC5;CAC5;110D 1169 11B0;CAC5;110D 1169 11B0;
+CAC6;CAC6;110D 1169 11B1;CAC6;110D 1169 11B1;
+CAC7;CAC7;110D 1169 11B2;CAC7;110D 1169 11B2;
+CAC8;CAC8;110D 1169 11B3;CAC8;110D 1169 11B3;
+CAC9;CAC9;110D 1169 11B4;CAC9;110D 1169 11B4;
+CACA;CACA;110D 1169 11B5;CACA;110D 1169 11B5;
+CACB;CACB;110D 1169 11B6;CACB;110D 1169 11B6;
+CACC;CACC;110D 1169 11B7;CACC;110D 1169 11B7;
+CACD;CACD;110D 1169 11B8;CACD;110D 1169 11B8;
+CACE;CACE;110D 1169 11B9;CACE;110D 1169 11B9;
+CACF;CACF;110D 1169 11BA;CACF;110D 1169 11BA;
+CAD0;CAD0;110D 1169 11BB;CAD0;110D 1169 11BB;
+CAD1;CAD1;110D 1169 11BC;CAD1;110D 1169 11BC;
+CAD2;CAD2;110D 1169 11BD;CAD2;110D 1169 11BD;
+CAD3;CAD3;110D 1169 11BE;CAD3;110D 1169 11BE;
+CAD4;CAD4;110D 1169 11BF;CAD4;110D 1169 11BF;
+CAD5;CAD5;110D 1169 11C0;CAD5;110D 1169 11C0;
+CAD6;CAD6;110D 1169 11C1;CAD6;110D 1169 11C1;
+CAD7;CAD7;110D 1169 11C2;CAD7;110D 1169 11C2;
+CAD8;CAD8;110D 116A;CAD8;110D 116A;
+CAD9;CAD9;110D 116A 11A8;CAD9;110D 116A 11A8;
+CADA;CADA;110D 116A 11A9;CADA;110D 116A 11A9;
+CADB;CADB;110D 116A 11AA;CADB;110D 116A 11AA;
+CADC;CADC;110D 116A 11AB;CADC;110D 116A 11AB;
+CADD;CADD;110D 116A 11AC;CADD;110D 116A 11AC;
+CADE;CADE;110D 116A 11AD;CADE;110D 116A 11AD;
+CADF;CADF;110D 116A 11AE;CADF;110D 116A 11AE;
+CAE0;CAE0;110D 116A 11AF;CAE0;110D 116A 11AF;
+CAE1;CAE1;110D 116A 11B0;CAE1;110D 116A 11B0;
+CAE2;CAE2;110D 116A 11B1;CAE2;110D 116A 11B1;
+CAE3;CAE3;110D 116A 11B2;CAE3;110D 116A 11B2;
+CAE4;CAE4;110D 116A 11B3;CAE4;110D 116A 11B3;
+CAE5;CAE5;110D 116A 11B4;CAE5;110D 116A 11B4;
+CAE6;CAE6;110D 116A 11B5;CAE6;110D 116A 11B5;
+CAE7;CAE7;110D 116A 11B6;CAE7;110D 116A 11B6;
+CAE8;CAE8;110D 116A 11B7;CAE8;110D 116A 11B7;
+CAE9;CAE9;110D 116A 11B8;CAE9;110D 116A 11B8;
+CAEA;CAEA;110D 116A 11B9;CAEA;110D 116A 11B9;
+CAEB;CAEB;110D 116A 11BA;CAEB;110D 116A 11BA;
+CAEC;CAEC;110D 116A 11BB;CAEC;110D 116A 11BB;
+CAED;CAED;110D 116A 11BC;CAED;110D 116A 11BC;
+CAEE;CAEE;110D 116A 11BD;CAEE;110D 116A 11BD;
+CAEF;CAEF;110D 116A 11BE;CAEF;110D 116A 11BE;
+CAF0;CAF0;110D 116A 11BF;CAF0;110D 116A 11BF;
+CAF1;CAF1;110D 116A 11C0;CAF1;110D 116A 11C0;
+CAF2;CAF2;110D 116A 11C1;CAF2;110D 116A 11C1;
+CAF3;CAF3;110D 116A 11C2;CAF3;110D 116A 11C2;
+CAF4;CAF4;110D 116B;CAF4;110D 116B;
+CAF5;CAF5;110D 116B 11A8;CAF5;110D 116B 11A8;
+CAF6;CAF6;110D 116B 11A9;CAF6;110D 116B 11A9;
+CAF7;CAF7;110D 116B 11AA;CAF7;110D 116B 11AA;
+CAF8;CAF8;110D 116B 11AB;CAF8;110D 116B 11AB;
+CAF9;CAF9;110D 116B 11AC;CAF9;110D 116B 11AC;
+CAFA;CAFA;110D 116B 11AD;CAFA;110D 116B 11AD;
+CAFB;CAFB;110D 116B 11AE;CAFB;110D 116B 11AE;
+CAFC;CAFC;110D 116B 11AF;CAFC;110D 116B 11AF;
+CAFD;CAFD;110D 116B 11B0;CAFD;110D 116B 11B0;
+CAFE;CAFE;110D 116B 11B1;CAFE;110D 116B 11B1;
+CAFF;CAFF;110D 116B 11B2;CAFF;110D 116B 11B2;
+CB00;CB00;110D 116B 11B3;CB00;110D 116B 11B3;
+CB01;CB01;110D 116B 11B4;CB01;110D 116B 11B4;
+CB02;CB02;110D 116B 11B5;CB02;110D 116B 11B5;
+CB03;CB03;110D 116B 11B6;CB03;110D 116B 11B6;
+CB04;CB04;110D 116B 11B7;CB04;110D 116B 11B7;
+CB05;CB05;110D 116B 11B8;CB05;110D 116B 11B8;
+CB06;CB06;110D 116B 11B9;CB06;110D 116B 11B9;
+CB07;CB07;110D 116B 11BA;CB07;110D 116B 11BA;
+CB08;CB08;110D 116B 11BB;CB08;110D 116B 11BB;
+CB09;CB09;110D 116B 11BC;CB09;110D 116B 11BC;
+CB0A;CB0A;110D 116B 11BD;CB0A;110D 116B 11BD;
+CB0B;CB0B;110D 116B 11BE;CB0B;110D 116B 11BE;
+CB0C;CB0C;110D 116B 11BF;CB0C;110D 116B 11BF;
+CB0D;CB0D;110D 116B 11C0;CB0D;110D 116B 11C0;
+CB0E;CB0E;110D 116B 11C1;CB0E;110D 116B 11C1;
+CB0F;CB0F;110D 116B 11C2;CB0F;110D 116B 11C2;
+CB10;CB10;110D 116C;CB10;110D 116C;
+CB11;CB11;110D 116C 11A8;CB11;110D 116C 11A8;
+CB12;CB12;110D 116C 11A9;CB12;110D 116C 11A9;
+CB13;CB13;110D 116C 11AA;CB13;110D 116C 11AA;
+CB14;CB14;110D 116C 11AB;CB14;110D 116C 11AB;
+CB15;CB15;110D 116C 11AC;CB15;110D 116C 11AC;
+CB16;CB16;110D 116C 11AD;CB16;110D 116C 11AD;
+CB17;CB17;110D 116C 11AE;CB17;110D 116C 11AE;
+CB18;CB18;110D 116C 11AF;CB18;110D 116C 11AF;
+CB19;CB19;110D 116C 11B0;CB19;110D 116C 11B0;
+CB1A;CB1A;110D 116C 11B1;CB1A;110D 116C 11B1;
+CB1B;CB1B;110D 116C 11B2;CB1B;110D 116C 11B2;
+CB1C;CB1C;110D 116C 11B3;CB1C;110D 116C 11B3;
+CB1D;CB1D;110D 116C 11B4;CB1D;110D 116C 11B4;
+CB1E;CB1E;110D 116C 11B5;CB1E;110D 116C 11B5;
+CB1F;CB1F;110D 116C 11B6;CB1F;110D 116C 11B6;
+CB20;CB20;110D 116C 11B7;CB20;110D 116C 11B7;
+CB21;CB21;110D 116C 11B8;CB21;110D 116C 11B8;
+CB22;CB22;110D 116C 11B9;CB22;110D 116C 11B9;
+CB23;CB23;110D 116C 11BA;CB23;110D 116C 11BA;
+CB24;CB24;110D 116C 11BB;CB24;110D 116C 11BB;
+CB25;CB25;110D 116C 11BC;CB25;110D 116C 11BC;
+CB26;CB26;110D 116C 11BD;CB26;110D 116C 11BD;
+CB27;CB27;110D 116C 11BE;CB27;110D 116C 11BE;
+CB28;CB28;110D 116C 11BF;CB28;110D 116C 11BF;
+CB29;CB29;110D 116C 11C0;CB29;110D 116C 11C0;
+CB2A;CB2A;110D 116C 11C1;CB2A;110D 116C 11C1;
+CB2B;CB2B;110D 116C 11C2;CB2B;110D 116C 11C2;
+CB2C;CB2C;110D 116D;CB2C;110D 116D;
+CB2D;CB2D;110D 116D 11A8;CB2D;110D 116D 11A8;
+CB2E;CB2E;110D 116D 11A9;CB2E;110D 116D 11A9;
+CB2F;CB2F;110D 116D 11AA;CB2F;110D 116D 11AA;
+CB30;CB30;110D 116D 11AB;CB30;110D 116D 11AB;
+CB31;CB31;110D 116D 11AC;CB31;110D 116D 11AC;
+CB32;CB32;110D 116D 11AD;CB32;110D 116D 11AD;
+CB33;CB33;110D 116D 11AE;CB33;110D 116D 11AE;
+CB34;CB34;110D 116D 11AF;CB34;110D 116D 11AF;
+CB35;CB35;110D 116D 11B0;CB35;110D 116D 11B0;
+CB36;CB36;110D 116D 11B1;CB36;110D 116D 11B1;
+CB37;CB37;110D 116D 11B2;CB37;110D 116D 11B2;
+CB38;CB38;110D 116D 11B3;CB38;110D 116D 11B3;
+CB39;CB39;110D 116D 11B4;CB39;110D 116D 11B4;
+CB3A;CB3A;110D 116D 11B5;CB3A;110D 116D 11B5;
+CB3B;CB3B;110D 116D 11B6;CB3B;110D 116D 11B6;
+CB3C;CB3C;110D 116D 11B7;CB3C;110D 116D 11B7;
+CB3D;CB3D;110D 116D 11B8;CB3D;110D 116D 11B8;
+CB3E;CB3E;110D 116D 11B9;CB3E;110D 116D 11B9;
+CB3F;CB3F;110D 116D 11BA;CB3F;110D 116D 11BA;
+CB40;CB40;110D 116D 11BB;CB40;110D 116D 11BB;
+CB41;CB41;110D 116D 11BC;CB41;110D 116D 11BC;
+CB42;CB42;110D 116D 11BD;CB42;110D 116D 11BD;
+CB43;CB43;110D 116D 11BE;CB43;110D 116D 11BE;
+CB44;CB44;110D 116D 11BF;CB44;110D 116D 11BF;
+CB45;CB45;110D 116D 11C0;CB45;110D 116D 11C0;
+CB46;CB46;110D 116D 11C1;CB46;110D 116D 11C1;
+CB47;CB47;110D 116D 11C2;CB47;110D 116D 11C2;
+CB48;CB48;110D 116E;CB48;110D 116E;
+CB49;CB49;110D 116E 11A8;CB49;110D 116E 11A8;
+CB4A;CB4A;110D 116E 11A9;CB4A;110D 116E 11A9;
+CB4B;CB4B;110D 116E 11AA;CB4B;110D 116E 11AA;
+CB4C;CB4C;110D 116E 11AB;CB4C;110D 116E 11AB;
+CB4D;CB4D;110D 116E 11AC;CB4D;110D 116E 11AC;
+CB4E;CB4E;110D 116E 11AD;CB4E;110D 116E 11AD;
+CB4F;CB4F;110D 116E 11AE;CB4F;110D 116E 11AE;
+CB50;CB50;110D 116E 11AF;CB50;110D 116E 11AF;
+CB51;CB51;110D 116E 11B0;CB51;110D 116E 11B0;
+CB52;CB52;110D 116E 11B1;CB52;110D 116E 11B1;
+CB53;CB53;110D 116E 11B2;CB53;110D 116E 11B2;
+CB54;CB54;110D 116E 11B3;CB54;110D 116E 11B3;
+CB55;CB55;110D 116E 11B4;CB55;110D 116E 11B4;
+CB56;CB56;110D 116E 11B5;CB56;110D 116E 11B5;
+CB57;CB57;110D 116E 11B6;CB57;110D 116E 11B6;
+CB58;CB58;110D 116E 11B7;CB58;110D 116E 11B7;
+CB59;CB59;110D 116E 11B8;CB59;110D 116E 11B8;
+CB5A;CB5A;110D 116E 11B9;CB5A;110D 116E 11B9;
+CB5B;CB5B;110D 116E 11BA;CB5B;110D 116E 11BA;
+CB5C;CB5C;110D 116E 11BB;CB5C;110D 116E 11BB;
+CB5D;CB5D;110D 116E 11BC;CB5D;110D 116E 11BC;
+CB5E;CB5E;110D 116E 11BD;CB5E;110D 116E 11BD;
+CB5F;CB5F;110D 116E 11BE;CB5F;110D 116E 11BE;
+CB60;CB60;110D 116E 11BF;CB60;110D 116E 11BF;
+CB61;CB61;110D 116E 11C0;CB61;110D 116E 11C0;
+CB62;CB62;110D 116E 11C1;CB62;110D 116E 11C1;
+CB63;CB63;110D 116E 11C2;CB63;110D 116E 11C2;
+CB64;CB64;110D 116F;CB64;110D 116F;
+CB65;CB65;110D 116F 11A8;CB65;110D 116F 11A8;
+CB66;CB66;110D 116F 11A9;CB66;110D 116F 11A9;
+CB67;CB67;110D 116F 11AA;CB67;110D 116F 11AA;
+CB68;CB68;110D 116F 11AB;CB68;110D 116F 11AB;
+CB69;CB69;110D 116F 11AC;CB69;110D 116F 11AC;
+CB6A;CB6A;110D 116F 11AD;CB6A;110D 116F 11AD;
+CB6B;CB6B;110D 116F 11AE;CB6B;110D 116F 11AE;
+CB6C;CB6C;110D 116F 11AF;CB6C;110D 116F 11AF;
+CB6D;CB6D;110D 116F 11B0;CB6D;110D 116F 11B0;
+CB6E;CB6E;110D 116F 11B1;CB6E;110D 116F 11B1;
+CB6F;CB6F;110D 116F 11B2;CB6F;110D 116F 11B2;
+CB70;CB70;110D 116F 11B3;CB70;110D 116F 11B3;
+CB71;CB71;110D 116F 11B4;CB71;110D 116F 11B4;
+CB72;CB72;110D 116F 11B5;CB72;110D 116F 11B5;
+CB73;CB73;110D 116F 11B6;CB73;110D 116F 11B6;
+CB74;CB74;110D 116F 11B7;CB74;110D 116F 11B7;
+CB75;CB75;110D 116F 11B8;CB75;110D 116F 11B8;
+CB76;CB76;110D 116F 11B9;CB76;110D 116F 11B9;
+CB77;CB77;110D 116F 11BA;CB77;110D 116F 11BA;
+CB78;CB78;110D 116F 11BB;CB78;110D 116F 11BB;
+CB79;CB79;110D 116F 11BC;CB79;110D 116F 11BC;
+CB7A;CB7A;110D 116F 11BD;CB7A;110D 116F 11BD;
+CB7B;CB7B;110D 116F 11BE;CB7B;110D 116F 11BE;
+CB7C;CB7C;110D 116F 11BF;CB7C;110D 116F 11BF;
+CB7D;CB7D;110D 116F 11C0;CB7D;110D 116F 11C0;
+CB7E;CB7E;110D 116F 11C1;CB7E;110D 116F 11C1;
+CB7F;CB7F;110D 116F 11C2;CB7F;110D 116F 11C2;
+CB80;CB80;110D 1170;CB80;110D 1170;
+CB81;CB81;110D 1170 11A8;CB81;110D 1170 11A8;
+CB82;CB82;110D 1170 11A9;CB82;110D 1170 11A9;
+CB83;CB83;110D 1170 11AA;CB83;110D 1170 11AA;
+CB84;CB84;110D 1170 11AB;CB84;110D 1170 11AB;
+CB85;CB85;110D 1170 11AC;CB85;110D 1170 11AC;
+CB86;CB86;110D 1170 11AD;CB86;110D 1170 11AD;
+CB87;CB87;110D 1170 11AE;CB87;110D 1170 11AE;
+CB88;CB88;110D 1170 11AF;CB88;110D 1170 11AF;
+CB89;CB89;110D 1170 11B0;CB89;110D 1170 11B0;
+CB8A;CB8A;110D 1170 11B1;CB8A;110D 1170 11B1;
+CB8B;CB8B;110D 1170 11B2;CB8B;110D 1170 11B2;
+CB8C;CB8C;110D 1170 11B3;CB8C;110D 1170 11B3;
+CB8D;CB8D;110D 1170 11B4;CB8D;110D 1170 11B4;
+CB8E;CB8E;110D 1170 11B5;CB8E;110D 1170 11B5;
+CB8F;CB8F;110D 1170 11B6;CB8F;110D 1170 11B6;
+CB90;CB90;110D 1170 11B7;CB90;110D 1170 11B7;
+CB91;CB91;110D 1170 11B8;CB91;110D 1170 11B8;
+CB92;CB92;110D 1170 11B9;CB92;110D 1170 11B9;
+CB93;CB93;110D 1170 11BA;CB93;110D 1170 11BA;
+CB94;CB94;110D 1170 11BB;CB94;110D 1170 11BB;
+CB95;CB95;110D 1170 11BC;CB95;110D 1170 11BC;
+CB96;CB96;110D 1170 11BD;CB96;110D 1170 11BD;
+CB97;CB97;110D 1170 11BE;CB97;110D 1170 11BE;
+CB98;CB98;110D 1170 11BF;CB98;110D 1170 11BF;
+CB99;CB99;110D 1170 11C0;CB99;110D 1170 11C0;
+CB9A;CB9A;110D 1170 11C1;CB9A;110D 1170 11C1;
+CB9B;CB9B;110D 1170 11C2;CB9B;110D 1170 11C2;
+CB9C;CB9C;110D 1171;CB9C;110D 1171;
+CB9D;CB9D;110D 1171 11A8;CB9D;110D 1171 11A8;
+CB9E;CB9E;110D 1171 11A9;CB9E;110D 1171 11A9;
+CB9F;CB9F;110D 1171 11AA;CB9F;110D 1171 11AA;
+CBA0;CBA0;110D 1171 11AB;CBA0;110D 1171 11AB;
+CBA1;CBA1;110D 1171 11AC;CBA1;110D 1171 11AC;
+CBA2;CBA2;110D 1171 11AD;CBA2;110D 1171 11AD;
+CBA3;CBA3;110D 1171 11AE;CBA3;110D 1171 11AE;
+CBA4;CBA4;110D 1171 11AF;CBA4;110D 1171 11AF;
+CBA5;CBA5;110D 1171 11B0;CBA5;110D 1171 11B0;
+CBA6;CBA6;110D 1171 11B1;CBA6;110D 1171 11B1;
+CBA7;CBA7;110D 1171 11B2;CBA7;110D 1171 11B2;
+CBA8;CBA8;110D 1171 11B3;CBA8;110D 1171 11B3;
+CBA9;CBA9;110D 1171 11B4;CBA9;110D 1171 11B4;
+CBAA;CBAA;110D 1171 11B5;CBAA;110D 1171 11B5;
+CBAB;CBAB;110D 1171 11B6;CBAB;110D 1171 11B6;
+CBAC;CBAC;110D 1171 11B7;CBAC;110D 1171 11B7;
+CBAD;CBAD;110D 1171 11B8;CBAD;110D 1171 11B8;
+CBAE;CBAE;110D 1171 11B9;CBAE;110D 1171 11B9;
+CBAF;CBAF;110D 1171 11BA;CBAF;110D 1171 11BA;
+CBB0;CBB0;110D 1171 11BB;CBB0;110D 1171 11BB;
+CBB1;CBB1;110D 1171 11BC;CBB1;110D 1171 11BC;
+CBB2;CBB2;110D 1171 11BD;CBB2;110D 1171 11BD;
+CBB3;CBB3;110D 1171 11BE;CBB3;110D 1171 11BE;
+CBB4;CBB4;110D 1171 11BF;CBB4;110D 1171 11BF;
+CBB5;CBB5;110D 1171 11C0;CBB5;110D 1171 11C0;
+CBB6;CBB6;110D 1171 11C1;CBB6;110D 1171 11C1;
+CBB7;CBB7;110D 1171 11C2;CBB7;110D 1171 11C2;
+CBB8;CBB8;110D 1172;CBB8;110D 1172;
+CBB9;CBB9;110D 1172 11A8;CBB9;110D 1172 11A8;
+CBBA;CBBA;110D 1172 11A9;CBBA;110D 1172 11A9;
+CBBB;CBBB;110D 1172 11AA;CBBB;110D 1172 11AA;
+CBBC;CBBC;110D 1172 11AB;CBBC;110D 1172 11AB;
+CBBD;CBBD;110D 1172 11AC;CBBD;110D 1172 11AC;
+CBBE;CBBE;110D 1172 11AD;CBBE;110D 1172 11AD;
+CBBF;CBBF;110D 1172 11AE;CBBF;110D 1172 11AE;
+CBC0;CBC0;110D 1172 11AF;CBC0;110D 1172 11AF;
+CBC1;CBC1;110D 1172 11B0;CBC1;110D 1172 11B0;
+CBC2;CBC2;110D 1172 11B1;CBC2;110D 1172 11B1;
+CBC3;CBC3;110D 1172 11B2;CBC3;110D 1172 11B2;
+CBC4;CBC4;110D 1172 11B3;CBC4;110D 1172 11B3;
+CBC5;CBC5;110D 1172 11B4;CBC5;110D 1172 11B4;
+CBC6;CBC6;110D 1172 11B5;CBC6;110D 1172 11B5;
+CBC7;CBC7;110D 1172 11B6;CBC7;110D 1172 11B6;
+CBC8;CBC8;110D 1172 11B7;CBC8;110D 1172 11B7;
+CBC9;CBC9;110D 1172 11B8;CBC9;110D 1172 11B8;
+CBCA;CBCA;110D 1172 11B9;CBCA;110D 1172 11B9;
+CBCB;CBCB;110D 1172 11BA;CBCB;110D 1172 11BA;
+CBCC;CBCC;110D 1172 11BB;CBCC;110D 1172 11BB;
+CBCD;CBCD;110D 1172 11BC;CBCD;110D 1172 11BC;
+CBCE;CBCE;110D 1172 11BD;CBCE;110D 1172 11BD;
+CBCF;CBCF;110D 1172 11BE;CBCF;110D 1172 11BE;
+CBD0;CBD0;110D 1172 11BF;CBD0;110D 1172 11BF;
+CBD1;CBD1;110D 1172 11C0;CBD1;110D 1172 11C0;
+CBD2;CBD2;110D 1172 11C1;CBD2;110D 1172 11C1;
+CBD3;CBD3;110D 1172 11C2;CBD3;110D 1172 11C2;
+CBD4;CBD4;110D 1173;CBD4;110D 1173;
+CBD5;CBD5;110D 1173 11A8;CBD5;110D 1173 11A8;
+CBD6;CBD6;110D 1173 11A9;CBD6;110D 1173 11A9;
+CBD7;CBD7;110D 1173 11AA;CBD7;110D 1173 11AA;
+CBD8;CBD8;110D 1173 11AB;CBD8;110D 1173 11AB;
+CBD9;CBD9;110D 1173 11AC;CBD9;110D 1173 11AC;
+CBDA;CBDA;110D 1173 11AD;CBDA;110D 1173 11AD;
+CBDB;CBDB;110D 1173 11AE;CBDB;110D 1173 11AE;
+CBDC;CBDC;110D 1173 11AF;CBDC;110D 1173 11AF;
+CBDD;CBDD;110D 1173 11B0;CBDD;110D 1173 11B0;
+CBDE;CBDE;110D 1173 11B1;CBDE;110D 1173 11B1;
+CBDF;CBDF;110D 1173 11B2;CBDF;110D 1173 11B2;
+CBE0;CBE0;110D 1173 11B3;CBE0;110D 1173 11B3;
+CBE1;CBE1;110D 1173 11B4;CBE1;110D 1173 11B4;
+CBE2;CBE2;110D 1173 11B5;CBE2;110D 1173 11B5;
+CBE3;CBE3;110D 1173 11B6;CBE3;110D 1173 11B6;
+CBE4;CBE4;110D 1173 11B7;CBE4;110D 1173 11B7;
+CBE5;CBE5;110D 1173 11B8;CBE5;110D 1173 11B8;
+CBE6;CBE6;110D 1173 11B9;CBE6;110D 1173 11B9;
+CBE7;CBE7;110D 1173 11BA;CBE7;110D 1173 11BA;
+CBE8;CBE8;110D 1173 11BB;CBE8;110D 1173 11BB;
+CBE9;CBE9;110D 1173 11BC;CBE9;110D 1173 11BC;
+CBEA;CBEA;110D 1173 11BD;CBEA;110D 1173 11BD;
+CBEB;CBEB;110D 1173 11BE;CBEB;110D 1173 11BE;
+CBEC;CBEC;110D 1173 11BF;CBEC;110D 1173 11BF;
+CBED;CBED;110D 1173 11C0;CBED;110D 1173 11C0;
+CBEE;CBEE;110D 1173 11C1;CBEE;110D 1173 11C1;
+CBEF;CBEF;110D 1173 11C2;CBEF;110D 1173 11C2;
+CBF0;CBF0;110D 1174;CBF0;110D 1174;
+CBF1;CBF1;110D 1174 11A8;CBF1;110D 1174 11A8;
+CBF2;CBF2;110D 1174 11A9;CBF2;110D 1174 11A9;
+CBF3;CBF3;110D 1174 11AA;CBF3;110D 1174 11AA;
+CBF4;CBF4;110D 1174 11AB;CBF4;110D 1174 11AB;
+CBF5;CBF5;110D 1174 11AC;CBF5;110D 1174 11AC;
+CBF6;CBF6;110D 1174 11AD;CBF6;110D 1174 11AD;
+CBF7;CBF7;110D 1174 11AE;CBF7;110D 1174 11AE;
+CBF8;CBF8;110D 1174 11AF;CBF8;110D 1174 11AF;
+CBF9;CBF9;110D 1174 11B0;CBF9;110D 1174 11B0;
+CBFA;CBFA;110D 1174 11B1;CBFA;110D 1174 11B1;
+CBFB;CBFB;110D 1174 11B2;CBFB;110D 1174 11B2;
+CBFC;CBFC;110D 1174 11B3;CBFC;110D 1174 11B3;
+CBFD;CBFD;110D 1174 11B4;CBFD;110D 1174 11B4;
+CBFE;CBFE;110D 1174 11B5;CBFE;110D 1174 11B5;
+CBFF;CBFF;110D 1174 11B6;CBFF;110D 1174 11B6;
+CC00;CC00;110D 1174 11B7;CC00;110D 1174 11B7;
+CC01;CC01;110D 1174 11B8;CC01;110D 1174 11B8;
+CC02;CC02;110D 1174 11B9;CC02;110D 1174 11B9;
+CC03;CC03;110D 1174 11BA;CC03;110D 1174 11BA;
+CC04;CC04;110D 1174 11BB;CC04;110D 1174 11BB;
+CC05;CC05;110D 1174 11BC;CC05;110D 1174 11BC;
+CC06;CC06;110D 1174 11BD;CC06;110D 1174 11BD;
+CC07;CC07;110D 1174 11BE;CC07;110D 1174 11BE;
+CC08;CC08;110D 1174 11BF;CC08;110D 1174 11BF;
+CC09;CC09;110D 1174 11C0;CC09;110D 1174 11C0;
+CC0A;CC0A;110D 1174 11C1;CC0A;110D 1174 11C1;
+CC0B;CC0B;110D 1174 11C2;CC0B;110D 1174 11C2;
+CC0C;CC0C;110D 1175;CC0C;110D 1175;
+CC0D;CC0D;110D 1175 11A8;CC0D;110D 1175 11A8;
+CC0E;CC0E;110D 1175 11A9;CC0E;110D 1175 11A9;
+CC0F;CC0F;110D 1175 11AA;CC0F;110D 1175 11AA;
+CC10;CC10;110D 1175 11AB;CC10;110D 1175 11AB;
+CC11;CC11;110D 1175 11AC;CC11;110D 1175 11AC;
+CC12;CC12;110D 1175 11AD;CC12;110D 1175 11AD;
+CC13;CC13;110D 1175 11AE;CC13;110D 1175 11AE;
+CC14;CC14;110D 1175 11AF;CC14;110D 1175 11AF;
+CC15;CC15;110D 1175 11B0;CC15;110D 1175 11B0;
+CC16;CC16;110D 1175 11B1;CC16;110D 1175 11B1;
+CC17;CC17;110D 1175 11B2;CC17;110D 1175 11B2;
+CC18;CC18;110D 1175 11B3;CC18;110D 1175 11B3;
+CC19;CC19;110D 1175 11B4;CC19;110D 1175 11B4;
+CC1A;CC1A;110D 1175 11B5;CC1A;110D 1175 11B5;
+CC1B;CC1B;110D 1175 11B6;CC1B;110D 1175 11B6;
+CC1C;CC1C;110D 1175 11B7;CC1C;110D 1175 11B7;
+CC1D;CC1D;110D 1175 11B8;CC1D;110D 1175 11B8;
+CC1E;CC1E;110D 1175 11B9;CC1E;110D 1175 11B9;
+CC1F;CC1F;110D 1175 11BA;CC1F;110D 1175 11BA;
+CC20;CC20;110D 1175 11BB;CC20;110D 1175 11BB;
+CC21;CC21;110D 1175 11BC;CC21;110D 1175 11BC;
+CC22;CC22;110D 1175 11BD;CC22;110D 1175 11BD;
+CC23;CC23;110D 1175 11BE;CC23;110D 1175 11BE;
+CC24;CC24;110D 1175 11BF;CC24;110D 1175 11BF;
+CC25;CC25;110D 1175 11C0;CC25;110D 1175 11C0;
+CC26;CC26;110D 1175 11C1;CC26;110D 1175 11C1;
+CC27;CC27;110D 1175 11C2;CC27;110D 1175 11C2;
+CC28;CC28;110E 1161;CC28;110E 1161;
+CC29;CC29;110E 1161 11A8;CC29;110E 1161 11A8;
+CC2A;CC2A;110E 1161 11A9;CC2A;110E 1161 11A9;
+CC2B;CC2B;110E 1161 11AA;CC2B;110E 1161 11AA;
+CC2C;CC2C;110E 1161 11AB;CC2C;110E 1161 11AB;
+CC2D;CC2D;110E 1161 11AC;CC2D;110E 1161 11AC;
+CC2E;CC2E;110E 1161 11AD;CC2E;110E 1161 11AD;
+CC2F;CC2F;110E 1161 11AE;CC2F;110E 1161 11AE;
+CC30;CC30;110E 1161 11AF;CC30;110E 1161 11AF;
+CC31;CC31;110E 1161 11B0;CC31;110E 1161 11B0;
+CC32;CC32;110E 1161 11B1;CC32;110E 1161 11B1;
+CC33;CC33;110E 1161 11B2;CC33;110E 1161 11B2;
+CC34;CC34;110E 1161 11B3;CC34;110E 1161 11B3;
+CC35;CC35;110E 1161 11B4;CC35;110E 1161 11B4;
+CC36;CC36;110E 1161 11B5;CC36;110E 1161 11B5;
+CC37;CC37;110E 1161 11B6;CC37;110E 1161 11B6;
+CC38;CC38;110E 1161 11B7;CC38;110E 1161 11B7;
+CC39;CC39;110E 1161 11B8;CC39;110E 1161 11B8;
+CC3A;CC3A;110E 1161 11B9;CC3A;110E 1161 11B9;
+CC3B;CC3B;110E 1161 11BA;CC3B;110E 1161 11BA;
+CC3C;CC3C;110E 1161 11BB;CC3C;110E 1161 11BB;
+CC3D;CC3D;110E 1161 11BC;CC3D;110E 1161 11BC;
+CC3E;CC3E;110E 1161 11BD;CC3E;110E 1161 11BD;
+CC3F;CC3F;110E 1161 11BE;CC3F;110E 1161 11BE;
+CC40;CC40;110E 1161 11BF;CC40;110E 1161 11BF;
+CC41;CC41;110E 1161 11C0;CC41;110E 1161 11C0;
+CC42;CC42;110E 1161 11C1;CC42;110E 1161 11C1;
+CC43;CC43;110E 1161 11C2;CC43;110E 1161 11C2;
+CC44;CC44;110E 1162;CC44;110E 1162;
+CC45;CC45;110E 1162 11A8;CC45;110E 1162 11A8;
+CC46;CC46;110E 1162 11A9;CC46;110E 1162 11A9;
+CC47;CC47;110E 1162 11AA;CC47;110E 1162 11AA;
+CC48;CC48;110E 1162 11AB;CC48;110E 1162 11AB;
+CC49;CC49;110E 1162 11AC;CC49;110E 1162 11AC;
+CC4A;CC4A;110E 1162 11AD;CC4A;110E 1162 11AD;
+CC4B;CC4B;110E 1162 11AE;CC4B;110E 1162 11AE;
+CC4C;CC4C;110E 1162 11AF;CC4C;110E 1162 11AF;
+CC4D;CC4D;110E 1162 11B0;CC4D;110E 1162 11B0;
+CC4E;CC4E;110E 1162 11B1;CC4E;110E 1162 11B1;
+CC4F;CC4F;110E 1162 11B2;CC4F;110E 1162 11B2;
+CC50;CC50;110E 1162 11B3;CC50;110E 1162 11B3;
+CC51;CC51;110E 1162 11B4;CC51;110E 1162 11B4;
+CC52;CC52;110E 1162 11B5;CC52;110E 1162 11B5;
+CC53;CC53;110E 1162 11B6;CC53;110E 1162 11B6;
+CC54;CC54;110E 1162 11B7;CC54;110E 1162 11B7;
+CC55;CC55;110E 1162 11B8;CC55;110E 1162 11B8;
+CC56;CC56;110E 1162 11B9;CC56;110E 1162 11B9;
+CC57;CC57;110E 1162 11BA;CC57;110E 1162 11BA;
+CC58;CC58;110E 1162 11BB;CC58;110E 1162 11BB;
+CC59;CC59;110E 1162 11BC;CC59;110E 1162 11BC;
+CC5A;CC5A;110E 1162 11BD;CC5A;110E 1162 11BD;
+CC5B;CC5B;110E 1162 11BE;CC5B;110E 1162 11BE;
+CC5C;CC5C;110E 1162 11BF;CC5C;110E 1162 11BF;
+CC5D;CC5D;110E 1162 11C0;CC5D;110E 1162 11C0;
+CC5E;CC5E;110E 1162 11C1;CC5E;110E 1162 11C1;
+CC5F;CC5F;110E 1162 11C2;CC5F;110E 1162 11C2;
+CC60;CC60;110E 1163;CC60;110E 1163;
+CC61;CC61;110E 1163 11A8;CC61;110E 1163 11A8;
+CC62;CC62;110E 1163 11A9;CC62;110E 1163 11A9;
+CC63;CC63;110E 1163 11AA;CC63;110E 1163 11AA;
+CC64;CC64;110E 1163 11AB;CC64;110E 1163 11AB;
+CC65;CC65;110E 1163 11AC;CC65;110E 1163 11AC;
+CC66;CC66;110E 1163 11AD;CC66;110E 1163 11AD;
+CC67;CC67;110E 1163 11AE;CC67;110E 1163 11AE;
+CC68;CC68;110E 1163 11AF;CC68;110E 1163 11AF;
+CC69;CC69;110E 1163 11B0;CC69;110E 1163 11B0;
+CC6A;CC6A;110E 1163 11B1;CC6A;110E 1163 11B1;
+CC6B;CC6B;110E 1163 11B2;CC6B;110E 1163 11B2;
+CC6C;CC6C;110E 1163 11B3;CC6C;110E 1163 11B3;
+CC6D;CC6D;110E 1163 11B4;CC6D;110E 1163 11B4;
+CC6E;CC6E;110E 1163 11B5;CC6E;110E 1163 11B5;
+CC6F;CC6F;110E 1163 11B6;CC6F;110E 1163 11B6;
+CC70;CC70;110E 1163 11B7;CC70;110E 1163 11B7;
+CC71;CC71;110E 1163 11B8;CC71;110E 1163 11B8;
+CC72;CC72;110E 1163 11B9;CC72;110E 1163 11B9;
+CC73;CC73;110E 1163 11BA;CC73;110E 1163 11BA;
+CC74;CC74;110E 1163 11BB;CC74;110E 1163 11BB;
+CC75;CC75;110E 1163 11BC;CC75;110E 1163 11BC;
+CC76;CC76;110E 1163 11BD;CC76;110E 1163 11BD;
+CC77;CC77;110E 1163 11BE;CC77;110E 1163 11BE;
+CC78;CC78;110E 1163 11BF;CC78;110E 1163 11BF;
+CC79;CC79;110E 1163 11C0;CC79;110E 1163 11C0;
+CC7A;CC7A;110E 1163 11C1;CC7A;110E 1163 11C1;
+CC7B;CC7B;110E 1163 11C2;CC7B;110E 1163 11C2;
+CC7C;CC7C;110E 1164;CC7C;110E 1164;
+CC7D;CC7D;110E 1164 11A8;CC7D;110E 1164 11A8;
+CC7E;CC7E;110E 1164 11A9;CC7E;110E 1164 11A9;
+CC7F;CC7F;110E 1164 11AA;CC7F;110E 1164 11AA;
+CC80;CC80;110E 1164 11AB;CC80;110E 1164 11AB;
+CC81;CC81;110E 1164 11AC;CC81;110E 1164 11AC;
+CC82;CC82;110E 1164 11AD;CC82;110E 1164 11AD;
+CC83;CC83;110E 1164 11AE;CC83;110E 1164 11AE;
+CC84;CC84;110E 1164 11AF;CC84;110E 1164 11AF;
+CC85;CC85;110E 1164 11B0;CC85;110E 1164 11B0;
+CC86;CC86;110E 1164 11B1;CC86;110E 1164 11B1;
+CC87;CC87;110E 1164 11B2;CC87;110E 1164 11B2;
+CC88;CC88;110E 1164 11B3;CC88;110E 1164 11B3;
+CC89;CC89;110E 1164 11B4;CC89;110E 1164 11B4;
+CC8A;CC8A;110E 1164 11B5;CC8A;110E 1164 11B5;
+CC8B;CC8B;110E 1164 11B6;CC8B;110E 1164 11B6;
+CC8C;CC8C;110E 1164 11B7;CC8C;110E 1164 11B7;
+CC8D;CC8D;110E 1164 11B8;CC8D;110E 1164 11B8;
+CC8E;CC8E;110E 1164 11B9;CC8E;110E 1164 11B9;
+CC8F;CC8F;110E 1164 11BA;CC8F;110E 1164 11BA;
+CC90;CC90;110E 1164 11BB;CC90;110E 1164 11BB;
+CC91;CC91;110E 1164 11BC;CC91;110E 1164 11BC;
+CC92;CC92;110E 1164 11BD;CC92;110E 1164 11BD;
+CC93;CC93;110E 1164 11BE;CC93;110E 1164 11BE;
+CC94;CC94;110E 1164 11BF;CC94;110E 1164 11BF;
+CC95;CC95;110E 1164 11C0;CC95;110E 1164 11C0;
+CC96;CC96;110E 1164 11C1;CC96;110E 1164 11C1;
+CC97;CC97;110E 1164 11C2;CC97;110E 1164 11C2;
+CC98;CC98;110E 1165;CC98;110E 1165;
+CC99;CC99;110E 1165 11A8;CC99;110E 1165 11A8;
+CC9A;CC9A;110E 1165 11A9;CC9A;110E 1165 11A9;
+CC9B;CC9B;110E 1165 11AA;CC9B;110E 1165 11AA;
+CC9C;CC9C;110E 1165 11AB;CC9C;110E 1165 11AB;
+CC9D;CC9D;110E 1165 11AC;CC9D;110E 1165 11AC;
+CC9E;CC9E;110E 1165 11AD;CC9E;110E 1165 11AD;
+CC9F;CC9F;110E 1165 11AE;CC9F;110E 1165 11AE;
+CCA0;CCA0;110E 1165 11AF;CCA0;110E 1165 11AF;
+CCA1;CCA1;110E 1165 11B0;CCA1;110E 1165 11B0;
+CCA2;CCA2;110E 1165 11B1;CCA2;110E 1165 11B1;
+CCA3;CCA3;110E 1165 11B2;CCA3;110E 1165 11B2;
+CCA4;CCA4;110E 1165 11B3;CCA4;110E 1165 11B3;
+CCA5;CCA5;110E 1165 11B4;CCA5;110E 1165 11B4;
+CCA6;CCA6;110E 1165 11B5;CCA6;110E 1165 11B5;
+CCA7;CCA7;110E 1165 11B6;CCA7;110E 1165 11B6;
+CCA8;CCA8;110E 1165 11B7;CCA8;110E 1165 11B7;
+CCA9;CCA9;110E 1165 11B8;CCA9;110E 1165 11B8;
+CCAA;CCAA;110E 1165 11B9;CCAA;110E 1165 11B9;
+CCAB;CCAB;110E 1165 11BA;CCAB;110E 1165 11BA;
+CCAC;CCAC;110E 1165 11BB;CCAC;110E 1165 11BB;
+CCAD;CCAD;110E 1165 11BC;CCAD;110E 1165 11BC;
+CCAE;CCAE;110E 1165 11BD;CCAE;110E 1165 11BD;
+CCAF;CCAF;110E 1165 11BE;CCAF;110E 1165 11BE;
+CCB0;CCB0;110E 1165 11BF;CCB0;110E 1165 11BF;
+CCB1;CCB1;110E 1165 11C0;CCB1;110E 1165 11C0;
+CCB2;CCB2;110E 1165 11C1;CCB2;110E 1165 11C1;
+CCB3;CCB3;110E 1165 11C2;CCB3;110E 1165 11C2;
+CCB4;CCB4;110E 1166;CCB4;110E 1166;
+CCB5;CCB5;110E 1166 11A8;CCB5;110E 1166 11A8;
+CCB6;CCB6;110E 1166 11A9;CCB6;110E 1166 11A9;
+CCB7;CCB7;110E 1166 11AA;CCB7;110E 1166 11AA;
+CCB8;CCB8;110E 1166 11AB;CCB8;110E 1166 11AB;
+CCB9;CCB9;110E 1166 11AC;CCB9;110E 1166 11AC;
+CCBA;CCBA;110E 1166 11AD;CCBA;110E 1166 11AD;
+CCBB;CCBB;110E 1166 11AE;CCBB;110E 1166 11AE;
+CCBC;CCBC;110E 1166 11AF;CCBC;110E 1166 11AF;
+CCBD;CCBD;110E 1166 11B0;CCBD;110E 1166 11B0;
+CCBE;CCBE;110E 1166 11B1;CCBE;110E 1166 11B1;
+CCBF;CCBF;110E 1166 11B2;CCBF;110E 1166 11B2;
+CCC0;CCC0;110E 1166 11B3;CCC0;110E 1166 11B3;
+CCC1;CCC1;110E 1166 11B4;CCC1;110E 1166 11B4;
+CCC2;CCC2;110E 1166 11B5;CCC2;110E 1166 11B5;
+CCC3;CCC3;110E 1166 11B6;CCC3;110E 1166 11B6;
+CCC4;CCC4;110E 1166 11B7;CCC4;110E 1166 11B7;
+CCC5;CCC5;110E 1166 11B8;CCC5;110E 1166 11B8;
+CCC6;CCC6;110E 1166 11B9;CCC6;110E 1166 11B9;
+CCC7;CCC7;110E 1166 11BA;CCC7;110E 1166 11BA;
+CCC8;CCC8;110E 1166 11BB;CCC8;110E 1166 11BB;
+CCC9;CCC9;110E 1166 11BC;CCC9;110E 1166 11BC;
+CCCA;CCCA;110E 1166 11BD;CCCA;110E 1166 11BD;
+CCCB;CCCB;110E 1166 11BE;CCCB;110E 1166 11BE;
+CCCC;CCCC;110E 1166 11BF;CCCC;110E 1166 11BF;
+CCCD;CCCD;110E 1166 11C0;CCCD;110E 1166 11C0;
+CCCE;CCCE;110E 1166 11C1;CCCE;110E 1166 11C1;
+CCCF;CCCF;110E 1166 11C2;CCCF;110E 1166 11C2;
+CCD0;CCD0;110E 1167;CCD0;110E 1167;
+CCD1;CCD1;110E 1167 11A8;CCD1;110E 1167 11A8;
+CCD2;CCD2;110E 1167 11A9;CCD2;110E 1167 11A9;
+CCD3;CCD3;110E 1167 11AA;CCD3;110E 1167 11AA;
+CCD4;CCD4;110E 1167 11AB;CCD4;110E 1167 11AB;
+CCD5;CCD5;110E 1167 11AC;CCD5;110E 1167 11AC;
+CCD6;CCD6;110E 1167 11AD;CCD6;110E 1167 11AD;
+CCD7;CCD7;110E 1167 11AE;CCD7;110E 1167 11AE;
+CCD8;CCD8;110E 1167 11AF;CCD8;110E 1167 11AF;
+CCD9;CCD9;110E 1167 11B0;CCD9;110E 1167 11B0;
+CCDA;CCDA;110E 1167 11B1;CCDA;110E 1167 11B1;
+CCDB;CCDB;110E 1167 11B2;CCDB;110E 1167 11B2;
+CCDC;CCDC;110E 1167 11B3;CCDC;110E 1167 11B3;
+CCDD;CCDD;110E 1167 11B4;CCDD;110E 1167 11B4;
+CCDE;CCDE;110E 1167 11B5;CCDE;110E 1167 11B5;
+CCDF;CCDF;110E 1167 11B6;CCDF;110E 1167 11B6;
+CCE0;CCE0;110E 1167 11B7;CCE0;110E 1167 11B7;
+CCE1;CCE1;110E 1167 11B8;CCE1;110E 1167 11B8;
+CCE2;CCE2;110E 1167 11B9;CCE2;110E 1167 11B9;
+CCE3;CCE3;110E 1167 11BA;CCE3;110E 1167 11BA;
+CCE4;CCE4;110E 1167 11BB;CCE4;110E 1167 11BB;
+CCE5;CCE5;110E 1167 11BC;CCE5;110E 1167 11BC;
+CCE6;CCE6;110E 1167 11BD;CCE6;110E 1167 11BD;
+CCE7;CCE7;110E 1167 11BE;CCE7;110E 1167 11BE;
+CCE8;CCE8;110E 1167 11BF;CCE8;110E 1167 11BF;
+CCE9;CCE9;110E 1167 11C0;CCE9;110E 1167 11C0;
+CCEA;CCEA;110E 1167 11C1;CCEA;110E 1167 11C1;
+CCEB;CCEB;110E 1167 11C2;CCEB;110E 1167 11C2;
+CCEC;CCEC;110E 1168;CCEC;110E 1168;
+CCED;CCED;110E 1168 11A8;CCED;110E 1168 11A8;
+CCEE;CCEE;110E 1168 11A9;CCEE;110E 1168 11A9;
+CCEF;CCEF;110E 1168 11AA;CCEF;110E 1168 11AA;
+CCF0;CCF0;110E 1168 11AB;CCF0;110E 1168 11AB;
+CCF1;CCF1;110E 1168 11AC;CCF1;110E 1168 11AC;
+CCF2;CCF2;110E 1168 11AD;CCF2;110E 1168 11AD;
+CCF3;CCF3;110E 1168 11AE;CCF3;110E 1168 11AE;
+CCF4;CCF4;110E 1168 11AF;CCF4;110E 1168 11AF;
+CCF5;CCF5;110E 1168 11B0;CCF5;110E 1168 11B0;
+CCF6;CCF6;110E 1168 11B1;CCF6;110E 1168 11B1;
+CCF7;CCF7;110E 1168 11B2;CCF7;110E 1168 11B2;
+CCF8;CCF8;110E 1168 11B3;CCF8;110E 1168 11B3;
+CCF9;CCF9;110E 1168 11B4;CCF9;110E 1168 11B4;
+CCFA;CCFA;110E 1168 11B5;CCFA;110E 1168 11B5;
+CCFB;CCFB;110E 1168 11B6;CCFB;110E 1168 11B6;
+CCFC;CCFC;110E 1168 11B7;CCFC;110E 1168 11B7;
+CCFD;CCFD;110E 1168 11B8;CCFD;110E 1168 11B8;
+CCFE;CCFE;110E 1168 11B9;CCFE;110E 1168 11B9;
+CCFF;CCFF;110E 1168 11BA;CCFF;110E 1168 11BA;
+CD00;CD00;110E 1168 11BB;CD00;110E 1168 11BB;
+CD01;CD01;110E 1168 11BC;CD01;110E 1168 11BC;
+CD02;CD02;110E 1168 11BD;CD02;110E 1168 11BD;
+CD03;CD03;110E 1168 11BE;CD03;110E 1168 11BE;
+CD04;CD04;110E 1168 11BF;CD04;110E 1168 11BF;
+CD05;CD05;110E 1168 11C0;CD05;110E 1168 11C0;
+CD06;CD06;110E 1168 11C1;CD06;110E 1168 11C1;
+CD07;CD07;110E 1168 11C2;CD07;110E 1168 11C2;
+CD08;CD08;110E 1169;CD08;110E 1169;
+CD09;CD09;110E 1169 11A8;CD09;110E 1169 11A8;
+CD0A;CD0A;110E 1169 11A9;CD0A;110E 1169 11A9;
+CD0B;CD0B;110E 1169 11AA;CD0B;110E 1169 11AA;
+CD0C;CD0C;110E 1169 11AB;CD0C;110E 1169 11AB;
+CD0D;CD0D;110E 1169 11AC;CD0D;110E 1169 11AC;
+CD0E;CD0E;110E 1169 11AD;CD0E;110E 1169 11AD;
+CD0F;CD0F;110E 1169 11AE;CD0F;110E 1169 11AE;
+CD10;CD10;110E 1169 11AF;CD10;110E 1169 11AF;
+CD11;CD11;110E 1169 11B0;CD11;110E 1169 11B0;
+CD12;CD12;110E 1169 11B1;CD12;110E 1169 11B1;
+CD13;CD13;110E 1169 11B2;CD13;110E 1169 11B2;
+CD14;CD14;110E 1169 11B3;CD14;110E 1169 11B3;
+CD15;CD15;110E 1169 11B4;CD15;110E 1169 11B4;
+CD16;CD16;110E 1169 11B5;CD16;110E 1169 11B5;
+CD17;CD17;110E 1169 11B6;CD17;110E 1169 11B6;
+CD18;CD18;110E 1169 11B7;CD18;110E 1169 11B7;
+CD19;CD19;110E 1169 11B8;CD19;110E 1169 11B8;
+CD1A;CD1A;110E 1169 11B9;CD1A;110E 1169 11B9;
+CD1B;CD1B;110E 1169 11BA;CD1B;110E 1169 11BA;
+CD1C;CD1C;110E 1169 11BB;CD1C;110E 1169 11BB;
+CD1D;CD1D;110E 1169 11BC;CD1D;110E 1169 11BC;
+CD1E;CD1E;110E 1169 11BD;CD1E;110E 1169 11BD;
+CD1F;CD1F;110E 1169 11BE;CD1F;110E 1169 11BE;
+CD20;CD20;110E 1169 11BF;CD20;110E 1169 11BF;
+CD21;CD21;110E 1169 11C0;CD21;110E 1169 11C0;
+CD22;CD22;110E 1169 11C1;CD22;110E 1169 11C1;
+CD23;CD23;110E 1169 11C2;CD23;110E 1169 11C2;
+CD24;CD24;110E 116A;CD24;110E 116A;
+CD25;CD25;110E 116A 11A8;CD25;110E 116A 11A8;
+CD26;CD26;110E 116A 11A9;CD26;110E 116A 11A9;
+CD27;CD27;110E 116A 11AA;CD27;110E 116A 11AA;
+CD28;CD28;110E 116A 11AB;CD28;110E 116A 11AB;
+CD29;CD29;110E 116A 11AC;CD29;110E 116A 11AC;
+CD2A;CD2A;110E 116A 11AD;CD2A;110E 116A 11AD;
+CD2B;CD2B;110E 116A 11AE;CD2B;110E 116A 11AE;
+CD2C;CD2C;110E 116A 11AF;CD2C;110E 116A 11AF;
+CD2D;CD2D;110E 116A 11B0;CD2D;110E 116A 11B0;
+CD2E;CD2E;110E 116A 11B1;CD2E;110E 116A 11B1;
+CD2F;CD2F;110E 116A 11B2;CD2F;110E 116A 11B2;
+CD30;CD30;110E 116A 11B3;CD30;110E 116A 11B3;
+CD31;CD31;110E 116A 11B4;CD31;110E 116A 11B4;
+CD32;CD32;110E 116A 11B5;CD32;110E 116A 11B5;
+CD33;CD33;110E 116A 11B6;CD33;110E 116A 11B6;
+CD34;CD34;110E 116A 11B7;CD34;110E 116A 11B7;
+CD35;CD35;110E 116A 11B8;CD35;110E 116A 11B8;
+CD36;CD36;110E 116A 11B9;CD36;110E 116A 11B9;
+CD37;CD37;110E 116A 11BA;CD37;110E 116A 11BA;
+CD38;CD38;110E 116A 11BB;CD38;110E 116A 11BB;
+CD39;CD39;110E 116A 11BC;CD39;110E 116A 11BC;
+CD3A;CD3A;110E 116A 11BD;CD3A;110E 116A 11BD;
+CD3B;CD3B;110E 116A 11BE;CD3B;110E 116A 11BE;
+CD3C;CD3C;110E 116A 11BF;CD3C;110E 116A 11BF;
+CD3D;CD3D;110E 116A 11C0;CD3D;110E 116A 11C0;
+CD3E;CD3E;110E 116A 11C1;CD3E;110E 116A 11C1;
+CD3F;CD3F;110E 116A 11C2;CD3F;110E 116A 11C2;
+CD40;CD40;110E 116B;CD40;110E 116B;
+CD41;CD41;110E 116B 11A8;CD41;110E 116B 11A8;
+CD42;CD42;110E 116B 11A9;CD42;110E 116B 11A9;
+CD43;CD43;110E 116B 11AA;CD43;110E 116B 11AA;
+CD44;CD44;110E 116B 11AB;CD44;110E 116B 11AB;
+CD45;CD45;110E 116B 11AC;CD45;110E 116B 11AC;
+CD46;CD46;110E 116B 11AD;CD46;110E 116B 11AD;
+CD47;CD47;110E 116B 11AE;CD47;110E 116B 11AE;
+CD48;CD48;110E 116B 11AF;CD48;110E 116B 11AF;
+CD49;CD49;110E 116B 11B0;CD49;110E 116B 11B0;
+CD4A;CD4A;110E 116B 11B1;CD4A;110E 116B 11B1;
+CD4B;CD4B;110E 116B 11B2;CD4B;110E 116B 11B2;
+CD4C;CD4C;110E 116B 11B3;CD4C;110E 116B 11B3;
+CD4D;CD4D;110E 116B 11B4;CD4D;110E 116B 11B4;
+CD4E;CD4E;110E 116B 11B5;CD4E;110E 116B 11B5;
+CD4F;CD4F;110E 116B 11B6;CD4F;110E 116B 11B6;
+CD50;CD50;110E 116B 11B7;CD50;110E 116B 11B7;
+CD51;CD51;110E 116B 11B8;CD51;110E 116B 11B8;
+CD52;CD52;110E 116B 11B9;CD52;110E 116B 11B9;
+CD53;CD53;110E 116B 11BA;CD53;110E 116B 11BA;
+CD54;CD54;110E 116B 11BB;CD54;110E 116B 11BB;
+CD55;CD55;110E 116B 11BC;CD55;110E 116B 11BC;
+CD56;CD56;110E 116B 11BD;CD56;110E 116B 11BD;
+CD57;CD57;110E 116B 11BE;CD57;110E 116B 11BE;
+CD58;CD58;110E 116B 11BF;CD58;110E 116B 11BF;
+CD59;CD59;110E 116B 11C0;CD59;110E 116B 11C0;
+CD5A;CD5A;110E 116B 11C1;CD5A;110E 116B 11C1;
+CD5B;CD5B;110E 116B 11C2;CD5B;110E 116B 11C2;
+CD5C;CD5C;110E 116C;CD5C;110E 116C;
+CD5D;CD5D;110E 116C 11A8;CD5D;110E 116C 11A8;
+CD5E;CD5E;110E 116C 11A9;CD5E;110E 116C 11A9;
+CD5F;CD5F;110E 116C 11AA;CD5F;110E 116C 11AA;
+CD60;CD60;110E 116C 11AB;CD60;110E 116C 11AB;
+CD61;CD61;110E 116C 11AC;CD61;110E 116C 11AC;
+CD62;CD62;110E 116C 11AD;CD62;110E 116C 11AD;
+CD63;CD63;110E 116C 11AE;CD63;110E 116C 11AE;
+CD64;CD64;110E 116C 11AF;CD64;110E 116C 11AF;
+CD65;CD65;110E 116C 11B0;CD65;110E 116C 11B0;
+CD66;CD66;110E 116C 11B1;CD66;110E 116C 11B1;
+CD67;CD67;110E 116C 11B2;CD67;110E 116C 11B2;
+CD68;CD68;110E 116C 11B3;CD68;110E 116C 11B3;
+CD69;CD69;110E 116C 11B4;CD69;110E 116C 11B4;
+CD6A;CD6A;110E 116C 11B5;CD6A;110E 116C 11B5;
+CD6B;CD6B;110E 116C 11B6;CD6B;110E 116C 11B6;
+CD6C;CD6C;110E 116C 11B7;CD6C;110E 116C 11B7;
+CD6D;CD6D;110E 116C 11B8;CD6D;110E 116C 11B8;
+CD6E;CD6E;110E 116C 11B9;CD6E;110E 116C 11B9;
+CD6F;CD6F;110E 116C 11BA;CD6F;110E 116C 11BA;
+CD70;CD70;110E 116C 11BB;CD70;110E 116C 11BB;
+CD71;CD71;110E 116C 11BC;CD71;110E 116C 11BC;
+CD72;CD72;110E 116C 11BD;CD72;110E 116C 11BD;
+CD73;CD73;110E 116C 11BE;CD73;110E 116C 11BE;
+CD74;CD74;110E 116C 11BF;CD74;110E 116C 11BF;
+CD75;CD75;110E 116C 11C0;CD75;110E 116C 11C0;
+CD76;CD76;110E 116C 11C1;CD76;110E 116C 11C1;
+CD77;CD77;110E 116C 11C2;CD77;110E 116C 11C2;
+CD78;CD78;110E 116D;CD78;110E 116D;
+CD79;CD79;110E 116D 11A8;CD79;110E 116D 11A8;
+CD7A;CD7A;110E 116D 11A9;CD7A;110E 116D 11A9;
+CD7B;CD7B;110E 116D 11AA;CD7B;110E 116D 11AA;
+CD7C;CD7C;110E 116D 11AB;CD7C;110E 116D 11AB;
+CD7D;CD7D;110E 116D 11AC;CD7D;110E 116D 11AC;
+CD7E;CD7E;110E 116D 11AD;CD7E;110E 116D 11AD;
+CD7F;CD7F;110E 116D 11AE;CD7F;110E 116D 11AE;
+CD80;CD80;110E 116D 11AF;CD80;110E 116D 11AF;
+CD81;CD81;110E 116D 11B0;CD81;110E 116D 11B0;
+CD82;CD82;110E 116D 11B1;CD82;110E 116D 11B1;
+CD83;CD83;110E 116D 11B2;CD83;110E 116D 11B2;
+CD84;CD84;110E 116D 11B3;CD84;110E 116D 11B3;
+CD85;CD85;110E 116D 11B4;CD85;110E 116D 11B4;
+CD86;CD86;110E 116D 11B5;CD86;110E 116D 11B5;
+CD87;CD87;110E 116D 11B6;CD87;110E 116D 11B6;
+CD88;CD88;110E 116D 11B7;CD88;110E 116D 11B7;
+CD89;CD89;110E 116D 11B8;CD89;110E 116D 11B8;
+CD8A;CD8A;110E 116D 11B9;CD8A;110E 116D 11B9;
+CD8B;CD8B;110E 116D 11BA;CD8B;110E 116D 11BA;
+CD8C;CD8C;110E 116D 11BB;CD8C;110E 116D 11BB;
+CD8D;CD8D;110E 116D 11BC;CD8D;110E 116D 11BC;
+CD8E;CD8E;110E 116D 11BD;CD8E;110E 116D 11BD;
+CD8F;CD8F;110E 116D 11BE;CD8F;110E 116D 11BE;
+CD90;CD90;110E 116D 11BF;CD90;110E 116D 11BF;
+CD91;CD91;110E 116D 11C0;CD91;110E 116D 11C0;
+CD92;CD92;110E 116D 11C1;CD92;110E 116D 11C1;
+CD93;CD93;110E 116D 11C2;CD93;110E 116D 11C2;
+CD94;CD94;110E 116E;CD94;110E 116E;
+CD95;CD95;110E 116E 11A8;CD95;110E 116E 11A8;
+CD96;CD96;110E 116E 11A9;CD96;110E 116E 11A9;
+CD97;CD97;110E 116E 11AA;CD97;110E 116E 11AA;
+CD98;CD98;110E 116E 11AB;CD98;110E 116E 11AB;
+CD99;CD99;110E 116E 11AC;CD99;110E 116E 11AC;
+CD9A;CD9A;110E 116E 11AD;CD9A;110E 116E 11AD;
+CD9B;CD9B;110E 116E 11AE;CD9B;110E 116E 11AE;
+CD9C;CD9C;110E 116E 11AF;CD9C;110E 116E 11AF;
+CD9D;CD9D;110E 116E 11B0;CD9D;110E 116E 11B0;
+CD9E;CD9E;110E 116E 11B1;CD9E;110E 116E 11B1;
+CD9F;CD9F;110E 116E 11B2;CD9F;110E 116E 11B2;
+CDA0;CDA0;110E 116E 11B3;CDA0;110E 116E 11B3;
+CDA1;CDA1;110E 116E 11B4;CDA1;110E 116E 11B4;
+CDA2;CDA2;110E 116E 11B5;CDA2;110E 116E 11B5;
+CDA3;CDA3;110E 116E 11B6;CDA3;110E 116E 11B6;
+CDA4;CDA4;110E 116E 11B7;CDA4;110E 116E 11B7;
+CDA5;CDA5;110E 116E 11B8;CDA5;110E 116E 11B8;
+CDA6;CDA6;110E 116E 11B9;CDA6;110E 116E 11B9;
+CDA7;CDA7;110E 116E 11BA;CDA7;110E 116E 11BA;
+CDA8;CDA8;110E 116E 11BB;CDA8;110E 116E 11BB;
+CDA9;CDA9;110E 116E 11BC;CDA9;110E 116E 11BC;
+CDAA;CDAA;110E 116E 11BD;CDAA;110E 116E 11BD;
+CDAB;CDAB;110E 116E 11BE;CDAB;110E 116E 11BE;
+CDAC;CDAC;110E 116E 11BF;CDAC;110E 116E 11BF;
+CDAD;CDAD;110E 116E 11C0;CDAD;110E 116E 11C0;
+CDAE;CDAE;110E 116E 11C1;CDAE;110E 116E 11C1;
+CDAF;CDAF;110E 116E 11C2;CDAF;110E 116E 11C2;
+CDB0;CDB0;110E 116F;CDB0;110E 116F;
+CDB1;CDB1;110E 116F 11A8;CDB1;110E 116F 11A8;
+CDB2;CDB2;110E 116F 11A9;CDB2;110E 116F 11A9;
+CDB3;CDB3;110E 116F 11AA;CDB3;110E 116F 11AA;
+CDB4;CDB4;110E 116F 11AB;CDB4;110E 116F 11AB;
+CDB5;CDB5;110E 116F 11AC;CDB5;110E 116F 11AC;
+CDB6;CDB6;110E 116F 11AD;CDB6;110E 116F 11AD;
+CDB7;CDB7;110E 116F 11AE;CDB7;110E 116F 11AE;
+CDB8;CDB8;110E 116F 11AF;CDB8;110E 116F 11AF;
+CDB9;CDB9;110E 116F 11B0;CDB9;110E 116F 11B0;
+CDBA;CDBA;110E 116F 11B1;CDBA;110E 116F 11B1;
+CDBB;CDBB;110E 116F 11B2;CDBB;110E 116F 11B2;
+CDBC;CDBC;110E 116F 11B3;CDBC;110E 116F 11B3;
+CDBD;CDBD;110E 116F 11B4;CDBD;110E 116F 11B4;
+CDBE;CDBE;110E 116F 11B5;CDBE;110E 116F 11B5;
+CDBF;CDBF;110E 116F 11B6;CDBF;110E 116F 11B6;
+CDC0;CDC0;110E 116F 11B7;CDC0;110E 116F 11B7;
+CDC1;CDC1;110E 116F 11B8;CDC1;110E 116F 11B8;
+CDC2;CDC2;110E 116F 11B9;CDC2;110E 116F 11B9;
+CDC3;CDC3;110E 116F 11BA;CDC3;110E 116F 11BA;
+CDC4;CDC4;110E 116F 11BB;CDC4;110E 116F 11BB;
+CDC5;CDC5;110E 116F 11BC;CDC5;110E 116F 11BC;
+CDC6;CDC6;110E 116F 11BD;CDC6;110E 116F 11BD;
+CDC7;CDC7;110E 116F 11BE;CDC7;110E 116F 11BE;
+CDC8;CDC8;110E 116F 11BF;CDC8;110E 116F 11BF;
+CDC9;CDC9;110E 116F 11C0;CDC9;110E 116F 11C0;
+CDCA;CDCA;110E 116F 11C1;CDCA;110E 116F 11C1;
+CDCB;CDCB;110E 116F 11C2;CDCB;110E 116F 11C2;
+CDCC;CDCC;110E 1170;CDCC;110E 1170;
+CDCD;CDCD;110E 1170 11A8;CDCD;110E 1170 11A8;
+CDCE;CDCE;110E 1170 11A9;CDCE;110E 1170 11A9;
+CDCF;CDCF;110E 1170 11AA;CDCF;110E 1170 11AA;
+CDD0;CDD0;110E 1170 11AB;CDD0;110E 1170 11AB;
+CDD1;CDD1;110E 1170 11AC;CDD1;110E 1170 11AC;
+CDD2;CDD2;110E 1170 11AD;CDD2;110E 1170 11AD;
+CDD3;CDD3;110E 1170 11AE;CDD3;110E 1170 11AE;
+CDD4;CDD4;110E 1170 11AF;CDD4;110E 1170 11AF;
+CDD5;CDD5;110E 1170 11B0;CDD5;110E 1170 11B0;
+CDD6;CDD6;110E 1170 11B1;CDD6;110E 1170 11B1;
+CDD7;CDD7;110E 1170 11B2;CDD7;110E 1170 11B2;
+CDD8;CDD8;110E 1170 11B3;CDD8;110E 1170 11B3;
+CDD9;CDD9;110E 1170 11B4;CDD9;110E 1170 11B4;
+CDDA;CDDA;110E 1170 11B5;CDDA;110E 1170 11B5;
+CDDB;CDDB;110E 1170 11B6;CDDB;110E 1170 11B6;
+CDDC;CDDC;110E 1170 11B7;CDDC;110E 1170 11B7;
+CDDD;CDDD;110E 1170 11B8;CDDD;110E 1170 11B8;
+CDDE;CDDE;110E 1170 11B9;CDDE;110E 1170 11B9;
+CDDF;CDDF;110E 1170 11BA;CDDF;110E 1170 11BA;
+CDE0;CDE0;110E 1170 11BB;CDE0;110E 1170 11BB;
+CDE1;CDE1;110E 1170 11BC;CDE1;110E 1170 11BC;
+CDE2;CDE2;110E 1170 11BD;CDE2;110E 1170 11BD;
+CDE3;CDE3;110E 1170 11BE;CDE3;110E 1170 11BE;
+CDE4;CDE4;110E 1170 11BF;CDE4;110E 1170 11BF;
+CDE5;CDE5;110E 1170 11C0;CDE5;110E 1170 11C0;
+CDE6;CDE6;110E 1170 11C1;CDE6;110E 1170 11C1;
+CDE7;CDE7;110E 1170 11C2;CDE7;110E 1170 11C2;
+CDE8;CDE8;110E 1171;CDE8;110E 1171;
+CDE9;CDE9;110E 1171 11A8;CDE9;110E 1171 11A8;
+CDEA;CDEA;110E 1171 11A9;CDEA;110E 1171 11A9;
+CDEB;CDEB;110E 1171 11AA;CDEB;110E 1171 11AA;
+CDEC;CDEC;110E 1171 11AB;CDEC;110E 1171 11AB;
+CDED;CDED;110E 1171 11AC;CDED;110E 1171 11AC;
+CDEE;CDEE;110E 1171 11AD;CDEE;110E 1171 11AD;
+CDEF;CDEF;110E 1171 11AE;CDEF;110E 1171 11AE;
+CDF0;CDF0;110E 1171 11AF;CDF0;110E 1171 11AF;
+CDF1;CDF1;110E 1171 11B0;CDF1;110E 1171 11B0;
+CDF2;CDF2;110E 1171 11B1;CDF2;110E 1171 11B1;
+CDF3;CDF3;110E 1171 11B2;CDF3;110E 1171 11B2;
+CDF4;CDF4;110E 1171 11B3;CDF4;110E 1171 11B3;
+CDF5;CDF5;110E 1171 11B4;CDF5;110E 1171 11B4;
+CDF6;CDF6;110E 1171 11B5;CDF6;110E 1171 11B5;
+CDF7;CDF7;110E 1171 11B6;CDF7;110E 1171 11B6;
+CDF8;CDF8;110E 1171 11B7;CDF8;110E 1171 11B7;
+CDF9;CDF9;110E 1171 11B8;CDF9;110E 1171 11B8;
+CDFA;CDFA;110E 1171 11B9;CDFA;110E 1171 11B9;
+CDFB;CDFB;110E 1171 11BA;CDFB;110E 1171 11BA;
+CDFC;CDFC;110E 1171 11BB;CDFC;110E 1171 11BB;
+CDFD;CDFD;110E 1171 11BC;CDFD;110E 1171 11BC;
+CDFE;CDFE;110E 1171 11BD;CDFE;110E 1171 11BD;
+CDFF;CDFF;110E 1171 11BE;CDFF;110E 1171 11BE;
+CE00;CE00;110E 1171 11BF;CE00;110E 1171 11BF;
+CE01;CE01;110E 1171 11C0;CE01;110E 1171 11C0;
+CE02;CE02;110E 1171 11C1;CE02;110E 1171 11C1;
+CE03;CE03;110E 1171 11C2;CE03;110E 1171 11C2;
+CE04;CE04;110E 1172;CE04;110E 1172;
+CE05;CE05;110E 1172 11A8;CE05;110E 1172 11A8;
+CE06;CE06;110E 1172 11A9;CE06;110E 1172 11A9;
+CE07;CE07;110E 1172 11AA;CE07;110E 1172 11AA;
+CE08;CE08;110E 1172 11AB;CE08;110E 1172 11AB;
+CE09;CE09;110E 1172 11AC;CE09;110E 1172 11AC;
+CE0A;CE0A;110E 1172 11AD;CE0A;110E 1172 11AD;
+CE0B;CE0B;110E 1172 11AE;CE0B;110E 1172 11AE;
+CE0C;CE0C;110E 1172 11AF;CE0C;110E 1172 11AF;
+CE0D;CE0D;110E 1172 11B0;CE0D;110E 1172 11B0;
+CE0E;CE0E;110E 1172 11B1;CE0E;110E 1172 11B1;
+CE0F;CE0F;110E 1172 11B2;CE0F;110E 1172 11B2;
+CE10;CE10;110E 1172 11B3;CE10;110E 1172 11B3;
+CE11;CE11;110E 1172 11B4;CE11;110E 1172 11B4;
+CE12;CE12;110E 1172 11B5;CE12;110E 1172 11B5;
+CE13;CE13;110E 1172 11B6;CE13;110E 1172 11B6;
+CE14;CE14;110E 1172 11B7;CE14;110E 1172 11B7;
+CE15;CE15;110E 1172 11B8;CE15;110E 1172 11B8;
+CE16;CE16;110E 1172 11B9;CE16;110E 1172 11B9;
+CE17;CE17;110E 1172 11BA;CE17;110E 1172 11BA;
+CE18;CE18;110E 1172 11BB;CE18;110E 1172 11BB;
+CE19;CE19;110E 1172 11BC;CE19;110E 1172 11BC;
+CE1A;CE1A;110E 1172 11BD;CE1A;110E 1172 11BD;
+CE1B;CE1B;110E 1172 11BE;CE1B;110E 1172 11BE;
+CE1C;CE1C;110E 1172 11BF;CE1C;110E 1172 11BF;
+CE1D;CE1D;110E 1172 11C0;CE1D;110E 1172 11C0;
+CE1E;CE1E;110E 1172 11C1;CE1E;110E 1172 11C1;
+CE1F;CE1F;110E 1172 11C2;CE1F;110E 1172 11C2;
+CE20;CE20;110E 1173;CE20;110E 1173;
+CE21;CE21;110E 1173 11A8;CE21;110E 1173 11A8;
+CE22;CE22;110E 1173 11A9;CE22;110E 1173 11A9;
+CE23;CE23;110E 1173 11AA;CE23;110E 1173 11AA;
+CE24;CE24;110E 1173 11AB;CE24;110E 1173 11AB;
+CE25;CE25;110E 1173 11AC;CE25;110E 1173 11AC;
+CE26;CE26;110E 1173 11AD;CE26;110E 1173 11AD;
+CE27;CE27;110E 1173 11AE;CE27;110E 1173 11AE;
+CE28;CE28;110E 1173 11AF;CE28;110E 1173 11AF;
+CE29;CE29;110E 1173 11B0;CE29;110E 1173 11B0;
+CE2A;CE2A;110E 1173 11B1;CE2A;110E 1173 11B1;
+CE2B;CE2B;110E 1173 11B2;CE2B;110E 1173 11B2;
+CE2C;CE2C;110E 1173 11B3;CE2C;110E 1173 11B3;
+CE2D;CE2D;110E 1173 11B4;CE2D;110E 1173 11B4;
+CE2E;CE2E;110E 1173 11B5;CE2E;110E 1173 11B5;
+CE2F;CE2F;110E 1173 11B6;CE2F;110E 1173 11B6;
+CE30;CE30;110E 1173 11B7;CE30;110E 1173 11B7;
+CE31;CE31;110E 1173 11B8;CE31;110E 1173 11B8;
+CE32;CE32;110E 1173 11B9;CE32;110E 1173 11B9;
+CE33;CE33;110E 1173 11BA;CE33;110E 1173 11BA;
+CE34;CE34;110E 1173 11BB;CE34;110E 1173 11BB;
+CE35;CE35;110E 1173 11BC;CE35;110E 1173 11BC;
+CE36;CE36;110E 1173 11BD;CE36;110E 1173 11BD;
+CE37;CE37;110E 1173 11BE;CE37;110E 1173 11BE;
+CE38;CE38;110E 1173 11BF;CE38;110E 1173 11BF;
+CE39;CE39;110E 1173 11C0;CE39;110E 1173 11C0;
+CE3A;CE3A;110E 1173 11C1;CE3A;110E 1173 11C1;
+CE3B;CE3B;110E 1173 11C2;CE3B;110E 1173 11C2;
+CE3C;CE3C;110E 1174;CE3C;110E 1174;
+CE3D;CE3D;110E 1174 11A8;CE3D;110E 1174 11A8;
+CE3E;CE3E;110E 1174 11A9;CE3E;110E 1174 11A9;
+CE3F;CE3F;110E 1174 11AA;CE3F;110E 1174 11AA;
+CE40;CE40;110E 1174 11AB;CE40;110E 1174 11AB;
+CE41;CE41;110E 1174 11AC;CE41;110E 1174 11AC;
+CE42;CE42;110E 1174 11AD;CE42;110E 1174 11AD;
+CE43;CE43;110E 1174 11AE;CE43;110E 1174 11AE;
+CE44;CE44;110E 1174 11AF;CE44;110E 1174 11AF;
+CE45;CE45;110E 1174 11B0;CE45;110E 1174 11B0;
+CE46;CE46;110E 1174 11B1;CE46;110E 1174 11B1;
+CE47;CE47;110E 1174 11B2;CE47;110E 1174 11B2;
+CE48;CE48;110E 1174 11B3;CE48;110E 1174 11B3;
+CE49;CE49;110E 1174 11B4;CE49;110E 1174 11B4;
+CE4A;CE4A;110E 1174 11B5;CE4A;110E 1174 11B5;
+CE4B;CE4B;110E 1174 11B6;CE4B;110E 1174 11B6;
+CE4C;CE4C;110E 1174 11B7;CE4C;110E 1174 11B7;
+CE4D;CE4D;110E 1174 11B8;CE4D;110E 1174 11B8;
+CE4E;CE4E;110E 1174 11B9;CE4E;110E 1174 11B9;
+CE4F;CE4F;110E 1174 11BA;CE4F;110E 1174 11BA;
+CE50;CE50;110E 1174 11BB;CE50;110E 1174 11BB;
+CE51;CE51;110E 1174 11BC;CE51;110E 1174 11BC;
+CE52;CE52;110E 1174 11BD;CE52;110E 1174 11BD;
+CE53;CE53;110E 1174 11BE;CE53;110E 1174 11BE;
+CE54;CE54;110E 1174 11BF;CE54;110E 1174 11BF;
+CE55;CE55;110E 1174 11C0;CE55;110E 1174 11C0;
+CE56;CE56;110E 1174 11C1;CE56;110E 1174 11C1;
+CE57;CE57;110E 1174 11C2;CE57;110E 1174 11C2;
+CE58;CE58;110E 1175;CE58;110E 1175;
+CE59;CE59;110E 1175 11A8;CE59;110E 1175 11A8;
+CE5A;CE5A;110E 1175 11A9;CE5A;110E 1175 11A9;
+CE5B;CE5B;110E 1175 11AA;CE5B;110E 1175 11AA;
+CE5C;CE5C;110E 1175 11AB;CE5C;110E 1175 11AB;
+CE5D;CE5D;110E 1175 11AC;CE5D;110E 1175 11AC;
+CE5E;CE5E;110E 1175 11AD;CE5E;110E 1175 11AD;
+CE5F;CE5F;110E 1175 11AE;CE5F;110E 1175 11AE;
+CE60;CE60;110E 1175 11AF;CE60;110E 1175 11AF;
+CE61;CE61;110E 1175 11B0;CE61;110E 1175 11B0;
+CE62;CE62;110E 1175 11B1;CE62;110E 1175 11B1;
+CE63;CE63;110E 1175 11B2;CE63;110E 1175 11B2;
+CE64;CE64;110E 1175 11B3;CE64;110E 1175 11B3;
+CE65;CE65;110E 1175 11B4;CE65;110E 1175 11B4;
+CE66;CE66;110E 1175 11B5;CE66;110E 1175 11B5;
+CE67;CE67;110E 1175 11B6;CE67;110E 1175 11B6;
+CE68;CE68;110E 1175 11B7;CE68;110E 1175 11B7;
+CE69;CE69;110E 1175 11B8;CE69;110E 1175 11B8;
+CE6A;CE6A;110E 1175 11B9;CE6A;110E 1175 11B9;
+CE6B;CE6B;110E 1175 11BA;CE6B;110E 1175 11BA;
+CE6C;CE6C;110E 1175 11BB;CE6C;110E 1175 11BB;
+CE6D;CE6D;110E 1175 11BC;CE6D;110E 1175 11BC;
+CE6E;CE6E;110E 1175 11BD;CE6E;110E 1175 11BD;
+CE6F;CE6F;110E 1175 11BE;CE6F;110E 1175 11BE;
+CE70;CE70;110E 1175 11BF;CE70;110E 1175 11BF;
+CE71;CE71;110E 1175 11C0;CE71;110E 1175 11C0;
+CE72;CE72;110E 1175 11C1;CE72;110E 1175 11C1;
+CE73;CE73;110E 1175 11C2;CE73;110E 1175 11C2;
+CE74;CE74;110F 1161;CE74;110F 1161;
+CE75;CE75;110F 1161 11A8;CE75;110F 1161 11A8;
+CE76;CE76;110F 1161 11A9;CE76;110F 1161 11A9;
+CE77;CE77;110F 1161 11AA;CE77;110F 1161 11AA;
+CE78;CE78;110F 1161 11AB;CE78;110F 1161 11AB;
+CE79;CE79;110F 1161 11AC;CE79;110F 1161 11AC;
+CE7A;CE7A;110F 1161 11AD;CE7A;110F 1161 11AD;
+CE7B;CE7B;110F 1161 11AE;CE7B;110F 1161 11AE;
+CE7C;CE7C;110F 1161 11AF;CE7C;110F 1161 11AF;
+CE7D;CE7D;110F 1161 11B0;CE7D;110F 1161 11B0;
+CE7E;CE7E;110F 1161 11B1;CE7E;110F 1161 11B1;
+CE7F;CE7F;110F 1161 11B2;CE7F;110F 1161 11B2;
+CE80;CE80;110F 1161 11B3;CE80;110F 1161 11B3;
+CE81;CE81;110F 1161 11B4;CE81;110F 1161 11B4;
+CE82;CE82;110F 1161 11B5;CE82;110F 1161 11B5;
+CE83;CE83;110F 1161 11B6;CE83;110F 1161 11B6;
+CE84;CE84;110F 1161 11B7;CE84;110F 1161 11B7;
+CE85;CE85;110F 1161 11B8;CE85;110F 1161 11B8;
+CE86;CE86;110F 1161 11B9;CE86;110F 1161 11B9;
+CE87;CE87;110F 1161 11BA;CE87;110F 1161 11BA;
+CE88;CE88;110F 1161 11BB;CE88;110F 1161 11BB;
+CE89;CE89;110F 1161 11BC;CE89;110F 1161 11BC;
+CE8A;CE8A;110F 1161 11BD;CE8A;110F 1161 11BD;
+CE8B;CE8B;110F 1161 11BE;CE8B;110F 1161 11BE;
+CE8C;CE8C;110F 1161 11BF;CE8C;110F 1161 11BF;
+CE8D;CE8D;110F 1161 11C0;CE8D;110F 1161 11C0;
+CE8E;CE8E;110F 1161 11C1;CE8E;110F 1161 11C1;
+CE8F;CE8F;110F 1161 11C2;CE8F;110F 1161 11C2;
+CE90;CE90;110F 1162;CE90;110F 1162;
+CE91;CE91;110F 1162 11A8;CE91;110F 1162 11A8;
+CE92;CE92;110F 1162 11A9;CE92;110F 1162 11A9;
+CE93;CE93;110F 1162 11AA;CE93;110F 1162 11AA;
+CE94;CE94;110F 1162 11AB;CE94;110F 1162 11AB;
+CE95;CE95;110F 1162 11AC;CE95;110F 1162 11AC;
+CE96;CE96;110F 1162 11AD;CE96;110F 1162 11AD;
+CE97;CE97;110F 1162 11AE;CE97;110F 1162 11AE;
+CE98;CE98;110F 1162 11AF;CE98;110F 1162 11AF;
+CE99;CE99;110F 1162 11B0;CE99;110F 1162 11B0;
+CE9A;CE9A;110F 1162 11B1;CE9A;110F 1162 11B1;
+CE9B;CE9B;110F 1162 11B2;CE9B;110F 1162 11B2;
+CE9C;CE9C;110F 1162 11B3;CE9C;110F 1162 11B3;
+CE9D;CE9D;110F 1162 11B4;CE9D;110F 1162 11B4;
+CE9E;CE9E;110F 1162 11B5;CE9E;110F 1162 11B5;
+CE9F;CE9F;110F 1162 11B6;CE9F;110F 1162 11B6;
+CEA0;CEA0;110F 1162 11B7;CEA0;110F 1162 11B7;
+CEA1;CEA1;110F 1162 11B8;CEA1;110F 1162 11B8;
+CEA2;CEA2;110F 1162 11B9;CEA2;110F 1162 11B9;
+CEA3;CEA3;110F 1162 11BA;CEA3;110F 1162 11BA;
+CEA4;CEA4;110F 1162 11BB;CEA4;110F 1162 11BB;
+CEA5;CEA5;110F 1162 11BC;CEA5;110F 1162 11BC;
+CEA6;CEA6;110F 1162 11BD;CEA6;110F 1162 11BD;
+CEA7;CEA7;110F 1162 11BE;CEA7;110F 1162 11BE;
+CEA8;CEA8;110F 1162 11BF;CEA8;110F 1162 11BF;
+CEA9;CEA9;110F 1162 11C0;CEA9;110F 1162 11C0;
+CEAA;CEAA;110F 1162 11C1;CEAA;110F 1162 11C1;
+CEAB;CEAB;110F 1162 11C2;CEAB;110F 1162 11C2;
+CEAC;CEAC;110F 1163;CEAC;110F 1163;
+CEAD;CEAD;110F 1163 11A8;CEAD;110F 1163 11A8;
+CEAE;CEAE;110F 1163 11A9;CEAE;110F 1163 11A9;
+CEAF;CEAF;110F 1163 11AA;CEAF;110F 1163 11AA;
+CEB0;CEB0;110F 1163 11AB;CEB0;110F 1163 11AB;
+CEB1;CEB1;110F 1163 11AC;CEB1;110F 1163 11AC;
+CEB2;CEB2;110F 1163 11AD;CEB2;110F 1163 11AD;
+CEB3;CEB3;110F 1163 11AE;CEB3;110F 1163 11AE;
+CEB4;CEB4;110F 1163 11AF;CEB4;110F 1163 11AF;
+CEB5;CEB5;110F 1163 11B0;CEB5;110F 1163 11B0;
+CEB6;CEB6;110F 1163 11B1;CEB6;110F 1163 11B1;
+CEB7;CEB7;110F 1163 11B2;CEB7;110F 1163 11B2;
+CEB8;CEB8;110F 1163 11B3;CEB8;110F 1163 11B3;
+CEB9;CEB9;110F 1163 11B4;CEB9;110F 1163 11B4;
+CEBA;CEBA;110F 1163 11B5;CEBA;110F 1163 11B5;
+CEBB;CEBB;110F 1163 11B6;CEBB;110F 1163 11B6;
+CEBC;CEBC;110F 1163 11B7;CEBC;110F 1163 11B7;
+CEBD;CEBD;110F 1163 11B8;CEBD;110F 1163 11B8;
+CEBE;CEBE;110F 1163 11B9;CEBE;110F 1163 11B9;
+CEBF;CEBF;110F 1163 11BA;CEBF;110F 1163 11BA;
+CEC0;CEC0;110F 1163 11BB;CEC0;110F 1163 11BB;
+CEC1;CEC1;110F 1163 11BC;CEC1;110F 1163 11BC;
+CEC2;CEC2;110F 1163 11BD;CEC2;110F 1163 11BD;
+CEC3;CEC3;110F 1163 11BE;CEC3;110F 1163 11BE;
+CEC4;CEC4;110F 1163 11BF;CEC4;110F 1163 11BF;
+CEC5;CEC5;110F 1163 11C0;CEC5;110F 1163 11C0;
+CEC6;CEC6;110F 1163 11C1;CEC6;110F 1163 11C1;
+CEC7;CEC7;110F 1163 11C2;CEC7;110F 1163 11C2;
+CEC8;CEC8;110F 1164;CEC8;110F 1164;
+CEC9;CEC9;110F 1164 11A8;CEC9;110F 1164 11A8;
+CECA;CECA;110F 1164 11A9;CECA;110F 1164 11A9;
+CECB;CECB;110F 1164 11AA;CECB;110F 1164 11AA;
+CECC;CECC;110F 1164 11AB;CECC;110F 1164 11AB;
+CECD;CECD;110F 1164 11AC;CECD;110F 1164 11AC;
+CECE;CECE;110F 1164 11AD;CECE;110F 1164 11AD;
+CECF;CECF;110F 1164 11AE;CECF;110F 1164 11AE;
+CED0;CED0;110F 1164 11AF;CED0;110F 1164 11AF;
+CED1;CED1;110F 1164 11B0;CED1;110F 1164 11B0;
+CED2;CED2;110F 1164 11B1;CED2;110F 1164 11B1;
+CED3;CED3;110F 1164 11B2;CED3;110F 1164 11B2;
+CED4;CED4;110F 1164 11B3;CED4;110F 1164 11B3;
+CED5;CED5;110F 1164 11B4;CED5;110F 1164 11B4;
+CED6;CED6;110F 1164 11B5;CED6;110F 1164 11B5;
+CED7;CED7;110F 1164 11B6;CED7;110F 1164 11B6;
+CED8;CED8;110F 1164 11B7;CED8;110F 1164 11B7;
+CED9;CED9;110F 1164 11B8;CED9;110F 1164 11B8;
+CEDA;CEDA;110F 1164 11B9;CEDA;110F 1164 11B9;
+CEDB;CEDB;110F 1164 11BA;CEDB;110F 1164 11BA;
+CEDC;CEDC;110F 1164 11BB;CEDC;110F 1164 11BB;
+CEDD;CEDD;110F 1164 11BC;CEDD;110F 1164 11BC;
+CEDE;CEDE;110F 1164 11BD;CEDE;110F 1164 11BD;
+CEDF;CEDF;110F 1164 11BE;CEDF;110F 1164 11BE;
+CEE0;CEE0;110F 1164 11BF;CEE0;110F 1164 11BF;
+CEE1;CEE1;110F 1164 11C0;CEE1;110F 1164 11C0;
+CEE2;CEE2;110F 1164 11C1;CEE2;110F 1164 11C1;
+CEE3;CEE3;110F 1164 11C2;CEE3;110F 1164 11C2;
+CEE4;CEE4;110F 1165;CEE4;110F 1165;
+CEE5;CEE5;110F 1165 11A8;CEE5;110F 1165 11A8;
+CEE6;CEE6;110F 1165 11A9;CEE6;110F 1165 11A9;
+CEE7;CEE7;110F 1165 11AA;CEE7;110F 1165 11AA;
+CEE8;CEE8;110F 1165 11AB;CEE8;110F 1165 11AB;
+CEE9;CEE9;110F 1165 11AC;CEE9;110F 1165 11AC;
+CEEA;CEEA;110F 1165 11AD;CEEA;110F 1165 11AD;
+CEEB;CEEB;110F 1165 11AE;CEEB;110F 1165 11AE;
+CEEC;CEEC;110F 1165 11AF;CEEC;110F 1165 11AF;
+CEED;CEED;110F 1165 11B0;CEED;110F 1165 11B0;
+CEEE;CEEE;110F 1165 11B1;CEEE;110F 1165 11B1;
+CEEF;CEEF;110F 1165 11B2;CEEF;110F 1165 11B2;
+CEF0;CEF0;110F 1165 11B3;CEF0;110F 1165 11B3;
+CEF1;CEF1;110F 1165 11B4;CEF1;110F 1165 11B4;
+CEF2;CEF2;110F 1165 11B5;CEF2;110F 1165 11B5;
+CEF3;CEF3;110F 1165 11B6;CEF3;110F 1165 11B6;
+CEF4;CEF4;110F 1165 11B7;CEF4;110F 1165 11B7;
+CEF5;CEF5;110F 1165 11B8;CEF5;110F 1165 11B8;
+CEF6;CEF6;110F 1165 11B9;CEF6;110F 1165 11B9;
+CEF7;CEF7;110F 1165 11BA;CEF7;110F 1165 11BA;
+CEF8;CEF8;110F 1165 11BB;CEF8;110F 1165 11BB;
+CEF9;CEF9;110F 1165 11BC;CEF9;110F 1165 11BC;
+CEFA;CEFA;110F 1165 11BD;CEFA;110F 1165 11BD;
+CEFB;CEFB;110F 1165 11BE;CEFB;110F 1165 11BE;
+CEFC;CEFC;110F 1165 11BF;CEFC;110F 1165 11BF;
+CEFD;CEFD;110F 1165 11C0;CEFD;110F 1165 11C0;
+CEFE;CEFE;110F 1165 11C1;CEFE;110F 1165 11C1;
+CEFF;CEFF;110F 1165 11C2;CEFF;110F 1165 11C2;
+CF00;CF00;110F 1166;CF00;110F 1166;
+CF01;CF01;110F 1166 11A8;CF01;110F 1166 11A8;
+CF02;CF02;110F 1166 11A9;CF02;110F 1166 11A9;
+CF03;CF03;110F 1166 11AA;CF03;110F 1166 11AA;
+CF04;CF04;110F 1166 11AB;CF04;110F 1166 11AB;
+CF05;CF05;110F 1166 11AC;CF05;110F 1166 11AC;
+CF06;CF06;110F 1166 11AD;CF06;110F 1166 11AD;
+CF07;CF07;110F 1166 11AE;CF07;110F 1166 11AE;
+CF08;CF08;110F 1166 11AF;CF08;110F 1166 11AF;
+CF09;CF09;110F 1166 11B0;CF09;110F 1166 11B0;
+CF0A;CF0A;110F 1166 11B1;CF0A;110F 1166 11B1;
+CF0B;CF0B;110F 1166 11B2;CF0B;110F 1166 11B2;
+CF0C;CF0C;110F 1166 11B3;CF0C;110F 1166 11B3;
+CF0D;CF0D;110F 1166 11B4;CF0D;110F 1166 11B4;
+CF0E;CF0E;110F 1166 11B5;CF0E;110F 1166 11B5;
+CF0F;CF0F;110F 1166 11B6;CF0F;110F 1166 11B6;
+CF10;CF10;110F 1166 11B7;CF10;110F 1166 11B7;
+CF11;CF11;110F 1166 11B8;CF11;110F 1166 11B8;
+CF12;CF12;110F 1166 11B9;CF12;110F 1166 11B9;
+CF13;CF13;110F 1166 11BA;CF13;110F 1166 11BA;
+CF14;CF14;110F 1166 11BB;CF14;110F 1166 11BB;
+CF15;CF15;110F 1166 11BC;CF15;110F 1166 11BC;
+CF16;CF16;110F 1166 11BD;CF16;110F 1166 11BD;
+CF17;CF17;110F 1166 11BE;CF17;110F 1166 11BE;
+CF18;CF18;110F 1166 11BF;CF18;110F 1166 11BF;
+CF19;CF19;110F 1166 11C0;CF19;110F 1166 11C0;
+CF1A;CF1A;110F 1166 11C1;CF1A;110F 1166 11C1;
+CF1B;CF1B;110F 1166 11C2;CF1B;110F 1166 11C2;
+CF1C;CF1C;110F 1167;CF1C;110F 1167;
+CF1D;CF1D;110F 1167 11A8;CF1D;110F 1167 11A8;
+CF1E;CF1E;110F 1167 11A9;CF1E;110F 1167 11A9;
+CF1F;CF1F;110F 1167 11AA;CF1F;110F 1167 11AA;
+CF20;CF20;110F 1167 11AB;CF20;110F 1167 11AB;
+CF21;CF21;110F 1167 11AC;CF21;110F 1167 11AC;
+CF22;CF22;110F 1167 11AD;CF22;110F 1167 11AD;
+CF23;CF23;110F 1167 11AE;CF23;110F 1167 11AE;
+CF24;CF24;110F 1167 11AF;CF24;110F 1167 11AF;
+CF25;CF25;110F 1167 11B0;CF25;110F 1167 11B0;
+CF26;CF26;110F 1167 11B1;CF26;110F 1167 11B1;
+CF27;CF27;110F 1167 11B2;CF27;110F 1167 11B2;
+CF28;CF28;110F 1167 11B3;CF28;110F 1167 11B3;
+CF29;CF29;110F 1167 11B4;CF29;110F 1167 11B4;
+CF2A;CF2A;110F 1167 11B5;CF2A;110F 1167 11B5;
+CF2B;CF2B;110F 1167 11B6;CF2B;110F 1167 11B6;
+CF2C;CF2C;110F 1167 11B7;CF2C;110F 1167 11B7;
+CF2D;CF2D;110F 1167 11B8;CF2D;110F 1167 11B8;
+CF2E;CF2E;110F 1167 11B9;CF2E;110F 1167 11B9;
+CF2F;CF2F;110F 1167 11BA;CF2F;110F 1167 11BA;
+CF30;CF30;110F 1167 11BB;CF30;110F 1167 11BB;
+CF31;CF31;110F 1167 11BC;CF31;110F 1167 11BC;
+CF32;CF32;110F 1167 11BD;CF32;110F 1167 11BD;
+CF33;CF33;110F 1167 11BE;CF33;110F 1167 11BE;
+CF34;CF34;110F 1167 11BF;CF34;110F 1167 11BF;
+CF35;CF35;110F 1167 11C0;CF35;110F 1167 11C0;
+CF36;CF36;110F 1167 11C1;CF36;110F 1167 11C1;
+CF37;CF37;110F 1167 11C2;CF37;110F 1167 11C2;
+CF38;CF38;110F 1168;CF38;110F 1168;
+CF39;CF39;110F 1168 11A8;CF39;110F 1168 11A8;
+CF3A;CF3A;110F 1168 11A9;CF3A;110F 1168 11A9;
+CF3B;CF3B;110F 1168 11AA;CF3B;110F 1168 11AA;
+CF3C;CF3C;110F 1168 11AB;CF3C;110F 1168 11AB;
+CF3D;CF3D;110F 1168 11AC;CF3D;110F 1168 11AC;
+CF3E;CF3E;110F 1168 11AD;CF3E;110F 1168 11AD;
+CF3F;CF3F;110F 1168 11AE;CF3F;110F 1168 11AE;
+CF40;CF40;110F 1168 11AF;CF40;110F 1168 11AF;
+CF41;CF41;110F 1168 11B0;CF41;110F 1168 11B0;
+CF42;CF42;110F 1168 11B1;CF42;110F 1168 11B1;
+CF43;CF43;110F 1168 11B2;CF43;110F 1168 11B2;
+CF44;CF44;110F 1168 11B3;CF44;110F 1168 11B3;
+CF45;CF45;110F 1168 11B4;CF45;110F 1168 11B4;
+CF46;CF46;110F 1168 11B5;CF46;110F 1168 11B5;
+CF47;CF47;110F 1168 11B6;CF47;110F 1168 11B6;
+CF48;CF48;110F 1168 11B7;CF48;110F 1168 11B7;
+CF49;CF49;110F 1168 11B8;CF49;110F 1168 11B8;
+CF4A;CF4A;110F 1168 11B9;CF4A;110F 1168 11B9;
+CF4B;CF4B;110F 1168 11BA;CF4B;110F 1168 11BA;
+CF4C;CF4C;110F 1168 11BB;CF4C;110F 1168 11BB;
+CF4D;CF4D;110F 1168 11BC;CF4D;110F 1168 11BC;
+CF4E;CF4E;110F 1168 11BD;CF4E;110F 1168 11BD;
+CF4F;CF4F;110F 1168 11BE;CF4F;110F 1168 11BE;
+CF50;CF50;110F 1168 11BF;CF50;110F 1168 11BF;
+CF51;CF51;110F 1168 11C0;CF51;110F 1168 11C0;
+CF52;CF52;110F 1168 11C1;CF52;110F 1168 11C1;
+CF53;CF53;110F 1168 11C2;CF53;110F 1168 11C2;
+CF54;CF54;110F 1169;CF54;110F 1169;
+CF55;CF55;110F 1169 11A8;CF55;110F 1169 11A8;
+CF56;CF56;110F 1169 11A9;CF56;110F 1169 11A9;
+CF57;CF57;110F 1169 11AA;CF57;110F 1169 11AA;
+CF58;CF58;110F 1169 11AB;CF58;110F 1169 11AB;
+CF59;CF59;110F 1169 11AC;CF59;110F 1169 11AC;
+CF5A;CF5A;110F 1169 11AD;CF5A;110F 1169 11AD;
+CF5B;CF5B;110F 1169 11AE;CF5B;110F 1169 11AE;
+CF5C;CF5C;110F 1169 11AF;CF5C;110F 1169 11AF;
+CF5D;CF5D;110F 1169 11B0;CF5D;110F 1169 11B0;
+CF5E;CF5E;110F 1169 11B1;CF5E;110F 1169 11B1;
+CF5F;CF5F;110F 1169 11B2;CF5F;110F 1169 11B2;
+CF60;CF60;110F 1169 11B3;CF60;110F 1169 11B3;
+CF61;CF61;110F 1169 11B4;CF61;110F 1169 11B4;
+CF62;CF62;110F 1169 11B5;CF62;110F 1169 11B5;
+CF63;CF63;110F 1169 11B6;CF63;110F 1169 11B6;
+CF64;CF64;110F 1169 11B7;CF64;110F 1169 11B7;
+CF65;CF65;110F 1169 11B8;CF65;110F 1169 11B8;
+CF66;CF66;110F 1169 11B9;CF66;110F 1169 11B9;
+CF67;CF67;110F 1169 11BA;CF67;110F 1169 11BA;
+CF68;CF68;110F 1169 11BB;CF68;110F 1169 11BB;
+CF69;CF69;110F 1169 11BC;CF69;110F 1169 11BC;
+CF6A;CF6A;110F 1169 11BD;CF6A;110F 1169 11BD;
+CF6B;CF6B;110F 1169 11BE;CF6B;110F 1169 11BE;
+CF6C;CF6C;110F 1169 11BF;CF6C;110F 1169 11BF;
+CF6D;CF6D;110F 1169 11C0;CF6D;110F 1169 11C0;
+CF6E;CF6E;110F 1169 11C1;CF6E;110F 1169 11C1;
+CF6F;CF6F;110F 1169 11C2;CF6F;110F 1169 11C2;
+CF70;CF70;110F 116A;CF70;110F 116A;
+CF71;CF71;110F 116A 11A8;CF71;110F 116A 11A8;
+CF72;CF72;110F 116A 11A9;CF72;110F 116A 11A9;
+CF73;CF73;110F 116A 11AA;CF73;110F 116A 11AA;
+CF74;CF74;110F 116A 11AB;CF74;110F 116A 11AB;
+CF75;CF75;110F 116A 11AC;CF75;110F 116A 11AC;
+CF76;CF76;110F 116A 11AD;CF76;110F 116A 11AD;
+CF77;CF77;110F 116A 11AE;CF77;110F 116A 11AE;
+CF78;CF78;110F 116A 11AF;CF78;110F 116A 11AF;
+CF79;CF79;110F 116A 11B0;CF79;110F 116A 11B0;
+CF7A;CF7A;110F 116A 11B1;CF7A;110F 116A 11B1;
+CF7B;CF7B;110F 116A 11B2;CF7B;110F 116A 11B2;
+CF7C;CF7C;110F 116A 11B3;CF7C;110F 116A 11B3;
+CF7D;CF7D;110F 116A 11B4;CF7D;110F 116A 11B4;
+CF7E;CF7E;110F 116A 11B5;CF7E;110F 116A 11B5;
+CF7F;CF7F;110F 116A 11B6;CF7F;110F 116A 11B6;
+CF80;CF80;110F 116A 11B7;CF80;110F 116A 11B7;
+CF81;CF81;110F 116A 11B8;CF81;110F 116A 11B8;
+CF82;CF82;110F 116A 11B9;CF82;110F 116A 11B9;
+CF83;CF83;110F 116A 11BA;CF83;110F 116A 11BA;
+CF84;CF84;110F 116A 11BB;CF84;110F 116A 11BB;
+CF85;CF85;110F 116A 11BC;CF85;110F 116A 11BC;
+CF86;CF86;110F 116A 11BD;CF86;110F 116A 11BD;
+CF87;CF87;110F 116A 11BE;CF87;110F 116A 11BE;
+CF88;CF88;110F 116A 11BF;CF88;110F 116A 11BF;
+CF89;CF89;110F 116A 11C0;CF89;110F 116A 11C0;
+CF8A;CF8A;110F 116A 11C1;CF8A;110F 116A 11C1;
+CF8B;CF8B;110F 116A 11C2;CF8B;110F 116A 11C2;
+CF8C;CF8C;110F 116B;CF8C;110F 116B;
+CF8D;CF8D;110F 116B 11A8;CF8D;110F 116B 11A8;
+CF8E;CF8E;110F 116B 11A9;CF8E;110F 116B 11A9;
+CF8F;CF8F;110F 116B 11AA;CF8F;110F 116B 11AA;
+CF90;CF90;110F 116B 11AB;CF90;110F 116B 11AB;
+CF91;CF91;110F 116B 11AC;CF91;110F 116B 11AC;
+CF92;CF92;110F 116B 11AD;CF92;110F 116B 11AD;
+CF93;CF93;110F 116B 11AE;CF93;110F 116B 11AE;
+CF94;CF94;110F 116B 11AF;CF94;110F 116B 11AF;
+CF95;CF95;110F 116B 11B0;CF95;110F 116B 11B0;
+CF96;CF96;110F 116B 11B1;CF96;110F 116B 11B1;
+CF97;CF97;110F 116B 11B2;CF97;110F 116B 11B2;
+CF98;CF98;110F 116B 11B3;CF98;110F 116B 11B3;
+CF99;CF99;110F 116B 11B4;CF99;110F 116B 11B4;
+CF9A;CF9A;110F 116B 11B5;CF9A;110F 116B 11B5;
+CF9B;CF9B;110F 116B 11B6;CF9B;110F 116B 11B6;
+CF9C;CF9C;110F 116B 11B7;CF9C;110F 116B 11B7;
+CF9D;CF9D;110F 116B 11B8;CF9D;110F 116B 11B8;
+CF9E;CF9E;110F 116B 11B9;CF9E;110F 116B 11B9;
+CF9F;CF9F;110F 116B 11BA;CF9F;110F 116B 11BA;
+CFA0;CFA0;110F 116B 11BB;CFA0;110F 116B 11BB;
+CFA1;CFA1;110F 116B 11BC;CFA1;110F 116B 11BC;
+CFA2;CFA2;110F 116B 11BD;CFA2;110F 116B 11BD;
+CFA3;CFA3;110F 116B 11BE;CFA3;110F 116B 11BE;
+CFA4;CFA4;110F 116B 11BF;CFA4;110F 116B 11BF;
+CFA5;CFA5;110F 116B 11C0;CFA5;110F 116B 11C0;
+CFA6;CFA6;110F 116B 11C1;CFA6;110F 116B 11C1;
+CFA7;CFA7;110F 116B 11C2;CFA7;110F 116B 11C2;
+CFA8;CFA8;110F 116C;CFA8;110F 116C;
+CFA9;CFA9;110F 116C 11A8;CFA9;110F 116C 11A8;
+CFAA;CFAA;110F 116C 11A9;CFAA;110F 116C 11A9;
+CFAB;CFAB;110F 116C 11AA;CFAB;110F 116C 11AA;
+CFAC;CFAC;110F 116C 11AB;CFAC;110F 116C 11AB;
+CFAD;CFAD;110F 116C 11AC;CFAD;110F 116C 11AC;
+CFAE;CFAE;110F 116C 11AD;CFAE;110F 116C 11AD;
+CFAF;CFAF;110F 116C 11AE;CFAF;110F 116C 11AE;
+CFB0;CFB0;110F 116C 11AF;CFB0;110F 116C 11AF;
+CFB1;CFB1;110F 116C 11B0;CFB1;110F 116C 11B0;
+CFB2;CFB2;110F 116C 11B1;CFB2;110F 116C 11B1;
+CFB3;CFB3;110F 116C 11B2;CFB3;110F 116C 11B2;
+CFB4;CFB4;110F 116C 11B3;CFB4;110F 116C 11B3;
+CFB5;CFB5;110F 116C 11B4;CFB5;110F 116C 11B4;
+CFB6;CFB6;110F 116C 11B5;CFB6;110F 116C 11B5;
+CFB7;CFB7;110F 116C 11B6;CFB7;110F 116C 11B6;
+CFB8;CFB8;110F 116C 11B7;CFB8;110F 116C 11B7;
+CFB9;CFB9;110F 116C 11B8;CFB9;110F 116C 11B8;
+CFBA;CFBA;110F 116C 11B9;CFBA;110F 116C 11B9;
+CFBB;CFBB;110F 116C 11BA;CFBB;110F 116C 11BA;
+CFBC;CFBC;110F 116C 11BB;CFBC;110F 116C 11BB;
+CFBD;CFBD;110F 116C 11BC;CFBD;110F 116C 11BC;
+CFBE;CFBE;110F 116C 11BD;CFBE;110F 116C 11BD;
+CFBF;CFBF;110F 116C 11BE;CFBF;110F 116C 11BE;
+CFC0;CFC0;110F 116C 11BF;CFC0;110F 116C 11BF;
+CFC1;CFC1;110F 116C 11C0;CFC1;110F 116C 11C0;
+CFC2;CFC2;110F 116C 11C1;CFC2;110F 116C 11C1;
+CFC3;CFC3;110F 116C 11C2;CFC3;110F 116C 11C2;
+CFC4;CFC4;110F 116D;CFC4;110F 116D;
+CFC5;CFC5;110F 116D 11A8;CFC5;110F 116D 11A8;
+CFC6;CFC6;110F 116D 11A9;CFC6;110F 116D 11A9;
+CFC7;CFC7;110F 116D 11AA;CFC7;110F 116D 11AA;
+CFC8;CFC8;110F 116D 11AB;CFC8;110F 116D 11AB;
+CFC9;CFC9;110F 116D 11AC;CFC9;110F 116D 11AC;
+CFCA;CFCA;110F 116D 11AD;CFCA;110F 116D 11AD;
+CFCB;CFCB;110F 116D 11AE;CFCB;110F 116D 11AE;
+CFCC;CFCC;110F 116D 11AF;CFCC;110F 116D 11AF;
+CFCD;CFCD;110F 116D 11B0;CFCD;110F 116D 11B0;
+CFCE;CFCE;110F 116D 11B1;CFCE;110F 116D 11B1;
+CFCF;CFCF;110F 116D 11B2;CFCF;110F 116D 11B2;
+CFD0;CFD0;110F 116D 11B3;CFD0;110F 116D 11B3;
+CFD1;CFD1;110F 116D 11B4;CFD1;110F 116D 11B4;
+CFD2;CFD2;110F 116D 11B5;CFD2;110F 116D 11B5;
+CFD3;CFD3;110F 116D 11B6;CFD3;110F 116D 11B6;
+CFD4;CFD4;110F 116D 11B7;CFD4;110F 116D 11B7;
+CFD5;CFD5;110F 116D 11B8;CFD5;110F 116D 11B8;
+CFD6;CFD6;110F 116D 11B9;CFD6;110F 116D 11B9;
+CFD7;CFD7;110F 116D 11BA;CFD7;110F 116D 11BA;
+CFD8;CFD8;110F 116D 11BB;CFD8;110F 116D 11BB;
+CFD9;CFD9;110F 116D 11BC;CFD9;110F 116D 11BC;
+CFDA;CFDA;110F 116D 11BD;CFDA;110F 116D 11BD;
+CFDB;CFDB;110F 116D 11BE;CFDB;110F 116D 11BE;
+CFDC;CFDC;110F 116D 11BF;CFDC;110F 116D 11BF;
+CFDD;CFDD;110F 116D 11C0;CFDD;110F 116D 11C0;
+CFDE;CFDE;110F 116D 11C1;CFDE;110F 116D 11C1;
+CFDF;CFDF;110F 116D 11C2;CFDF;110F 116D 11C2;
+CFE0;CFE0;110F 116E;CFE0;110F 116E;
+CFE1;CFE1;110F 116E 11A8;CFE1;110F 116E 11A8;
+CFE2;CFE2;110F 116E 11A9;CFE2;110F 116E 11A9;
+CFE3;CFE3;110F 116E 11AA;CFE3;110F 116E 11AA;
+CFE4;CFE4;110F 116E 11AB;CFE4;110F 116E 11AB;
+CFE5;CFE5;110F 116E 11AC;CFE5;110F 116E 11AC;
+CFE6;CFE6;110F 116E 11AD;CFE6;110F 116E 11AD;
+CFE7;CFE7;110F 116E 11AE;CFE7;110F 116E 11AE;
+CFE8;CFE8;110F 116E 11AF;CFE8;110F 116E 11AF;
+CFE9;CFE9;110F 116E 11B0;CFE9;110F 116E 11B0;
+CFEA;CFEA;110F 116E 11B1;CFEA;110F 116E 11B1;
+CFEB;CFEB;110F 116E 11B2;CFEB;110F 116E 11B2;
+CFEC;CFEC;110F 116E 11B3;CFEC;110F 116E 11B3;
+CFED;CFED;110F 116E 11B4;CFED;110F 116E 11B4;
+CFEE;CFEE;110F 116E 11B5;CFEE;110F 116E 11B5;
+CFEF;CFEF;110F 116E 11B6;CFEF;110F 116E 11B6;
+CFF0;CFF0;110F 116E 11B7;CFF0;110F 116E 11B7;
+CFF1;CFF1;110F 116E 11B8;CFF1;110F 116E 11B8;
+CFF2;CFF2;110F 116E 11B9;CFF2;110F 116E 11B9;
+CFF3;CFF3;110F 116E 11BA;CFF3;110F 116E 11BA;
+CFF4;CFF4;110F 116E 11BB;CFF4;110F 116E 11BB;
+CFF5;CFF5;110F 116E 11BC;CFF5;110F 116E 11BC;
+CFF6;CFF6;110F 116E 11BD;CFF6;110F 116E 11BD;
+CFF7;CFF7;110F 116E 11BE;CFF7;110F 116E 11BE;
+CFF8;CFF8;110F 116E 11BF;CFF8;110F 116E 11BF;
+CFF9;CFF9;110F 116E 11C0;CFF9;110F 116E 11C0;
+CFFA;CFFA;110F 116E 11C1;CFFA;110F 116E 11C1;
+CFFB;CFFB;110F 116E 11C2;CFFB;110F 116E 11C2;
+CFFC;CFFC;110F 116F;CFFC;110F 116F;
+CFFD;CFFD;110F 116F 11A8;CFFD;110F 116F 11A8;
+CFFE;CFFE;110F 116F 11A9;CFFE;110F 116F 11A9;
+CFFF;CFFF;110F 116F 11AA;CFFF;110F 116F 11AA;
+D000;D000;110F 116F 11AB;D000;110F 116F 11AB;
+D001;D001;110F 116F 11AC;D001;110F 116F 11AC;
+D002;D002;110F 116F 11AD;D002;110F 116F 11AD;
+D003;D003;110F 116F 11AE;D003;110F 116F 11AE;
+D004;D004;110F 116F 11AF;D004;110F 116F 11AF;
+D005;D005;110F 116F 11B0;D005;110F 116F 11B0;
+D006;D006;110F 116F 11B1;D006;110F 116F 11B1;
+D007;D007;110F 116F 11B2;D007;110F 116F 11B2;
+D008;D008;110F 116F 11B3;D008;110F 116F 11B3;
+D009;D009;110F 116F 11B4;D009;110F 116F 11B4;
+D00A;D00A;110F 116F 11B5;D00A;110F 116F 11B5;
+D00B;D00B;110F 116F 11B6;D00B;110F 116F 11B6;
+D00C;D00C;110F 116F 11B7;D00C;110F 116F 11B7;
+D00D;D00D;110F 116F 11B8;D00D;110F 116F 11B8;
+D00E;D00E;110F 116F 11B9;D00E;110F 116F 11B9;
+D00F;D00F;110F 116F 11BA;D00F;110F 116F 11BA;
+D010;D010;110F 116F 11BB;D010;110F 116F 11BB;
+D011;D011;110F 116F 11BC;D011;110F 116F 11BC;
+D012;D012;110F 116F 11BD;D012;110F 116F 11BD;
+D013;D013;110F 116F 11BE;D013;110F 116F 11BE;
+D014;D014;110F 116F 11BF;D014;110F 116F 11BF;
+D015;D015;110F 116F 11C0;D015;110F 116F 11C0;
+D016;D016;110F 116F 11C1;D016;110F 116F 11C1;
+D017;D017;110F 116F 11C2;D017;110F 116F 11C2;
+D018;D018;110F 1170;D018;110F 1170;
+D019;D019;110F 1170 11A8;D019;110F 1170 11A8;
+D01A;D01A;110F 1170 11A9;D01A;110F 1170 11A9;
+D01B;D01B;110F 1170 11AA;D01B;110F 1170 11AA;
+D01C;D01C;110F 1170 11AB;D01C;110F 1170 11AB;
+D01D;D01D;110F 1170 11AC;D01D;110F 1170 11AC;
+D01E;D01E;110F 1170 11AD;D01E;110F 1170 11AD;
+D01F;D01F;110F 1170 11AE;D01F;110F 1170 11AE;
+D020;D020;110F 1170 11AF;D020;110F 1170 11AF;
+D021;D021;110F 1170 11B0;D021;110F 1170 11B0;
+D022;D022;110F 1170 11B1;D022;110F 1170 11B1;
+D023;D023;110F 1170 11B2;D023;110F 1170 11B2;
+D024;D024;110F 1170 11B3;D024;110F 1170 11B3;
+D025;D025;110F 1170 11B4;D025;110F 1170 11B4;
+D026;D026;110F 1170 11B5;D026;110F 1170 11B5;
+D027;D027;110F 1170 11B6;D027;110F 1170 11B6;
+D028;D028;110F 1170 11B7;D028;110F 1170 11B7;
+D029;D029;110F 1170 11B8;D029;110F 1170 11B8;
+D02A;D02A;110F 1170 11B9;D02A;110F 1170 11B9;
+D02B;D02B;110F 1170 11BA;D02B;110F 1170 11BA;
+D02C;D02C;110F 1170 11BB;D02C;110F 1170 11BB;
+D02D;D02D;110F 1170 11BC;D02D;110F 1170 11BC;
+D02E;D02E;110F 1170 11BD;D02E;110F 1170 11BD;
+D02F;D02F;110F 1170 11BE;D02F;110F 1170 11BE;
+D030;D030;110F 1170 11BF;D030;110F 1170 11BF;
+D031;D031;110F 1170 11C0;D031;110F 1170 11C0;
+D032;D032;110F 1170 11C1;D032;110F 1170 11C1;
+D033;D033;110F 1170 11C2;D033;110F 1170 11C2;
+D034;D034;110F 1171;D034;110F 1171;
+D035;D035;110F 1171 11A8;D035;110F 1171 11A8;
+D036;D036;110F 1171 11A9;D036;110F 1171 11A9;
+D037;D037;110F 1171 11AA;D037;110F 1171 11AA;
+D038;D038;110F 1171 11AB;D038;110F 1171 11AB;
+D039;D039;110F 1171 11AC;D039;110F 1171 11AC;
+D03A;D03A;110F 1171 11AD;D03A;110F 1171 11AD;
+D03B;D03B;110F 1171 11AE;D03B;110F 1171 11AE;
+D03C;D03C;110F 1171 11AF;D03C;110F 1171 11AF;
+D03D;D03D;110F 1171 11B0;D03D;110F 1171 11B0;
+D03E;D03E;110F 1171 11B1;D03E;110F 1171 11B1;
+D03F;D03F;110F 1171 11B2;D03F;110F 1171 11B2;
+D040;D040;110F 1171 11B3;D040;110F 1171 11B3;
+D041;D041;110F 1171 11B4;D041;110F 1171 11B4;
+D042;D042;110F 1171 11B5;D042;110F 1171 11B5;
+D043;D043;110F 1171 11B6;D043;110F 1171 11B6;
+D044;D044;110F 1171 11B7;D044;110F 1171 11B7;
+D045;D045;110F 1171 11B8;D045;110F 1171 11B8;
+D046;D046;110F 1171 11B9;D046;110F 1171 11B9;
+D047;D047;110F 1171 11BA;D047;110F 1171 11BA;
+D048;D048;110F 1171 11BB;D048;110F 1171 11BB;
+D049;D049;110F 1171 11BC;D049;110F 1171 11BC;
+D04A;D04A;110F 1171 11BD;D04A;110F 1171 11BD;
+D04B;D04B;110F 1171 11BE;D04B;110F 1171 11BE;
+D04C;D04C;110F 1171 11BF;D04C;110F 1171 11BF;
+D04D;D04D;110F 1171 11C0;D04D;110F 1171 11C0;
+D04E;D04E;110F 1171 11C1;D04E;110F 1171 11C1;
+D04F;D04F;110F 1171 11C2;D04F;110F 1171 11C2;
+D050;D050;110F 1172;D050;110F 1172;
+D051;D051;110F 1172 11A8;D051;110F 1172 11A8;
+D052;D052;110F 1172 11A9;D052;110F 1172 11A9;
+D053;D053;110F 1172 11AA;D053;110F 1172 11AA;
+D054;D054;110F 1172 11AB;D054;110F 1172 11AB;
+D055;D055;110F 1172 11AC;D055;110F 1172 11AC;
+D056;D056;110F 1172 11AD;D056;110F 1172 11AD;
+D057;D057;110F 1172 11AE;D057;110F 1172 11AE;
+D058;D058;110F 1172 11AF;D058;110F 1172 11AF;
+D059;D059;110F 1172 11B0;D059;110F 1172 11B0;
+D05A;D05A;110F 1172 11B1;D05A;110F 1172 11B1;
+D05B;D05B;110F 1172 11B2;D05B;110F 1172 11B2;
+D05C;D05C;110F 1172 11B3;D05C;110F 1172 11B3;
+D05D;D05D;110F 1172 11B4;D05D;110F 1172 11B4;
+D05E;D05E;110F 1172 11B5;D05E;110F 1172 11B5;
+D05F;D05F;110F 1172 11B6;D05F;110F 1172 11B6;
+D060;D060;110F 1172 11B7;D060;110F 1172 11B7;
+D061;D061;110F 1172 11B8;D061;110F 1172 11B8;
+D062;D062;110F 1172 11B9;D062;110F 1172 11B9;
+D063;D063;110F 1172 11BA;D063;110F 1172 11BA;
+D064;D064;110F 1172 11BB;D064;110F 1172 11BB;
+D065;D065;110F 1172 11BC;D065;110F 1172 11BC;
+D066;D066;110F 1172 11BD;D066;110F 1172 11BD;
+D067;D067;110F 1172 11BE;D067;110F 1172 11BE;
+D068;D068;110F 1172 11BF;D068;110F 1172 11BF;
+D069;D069;110F 1172 11C0;D069;110F 1172 11C0;
+D06A;D06A;110F 1172 11C1;D06A;110F 1172 11C1;
+D06B;D06B;110F 1172 11C2;D06B;110F 1172 11C2;
+D06C;D06C;110F 1173;D06C;110F 1173;
+D06D;D06D;110F 1173 11A8;D06D;110F 1173 11A8;
+D06E;D06E;110F 1173 11A9;D06E;110F 1173 11A9;
+D06F;D06F;110F 1173 11AA;D06F;110F 1173 11AA;
+D070;D070;110F 1173 11AB;D070;110F 1173 11AB;
+D071;D071;110F 1173 11AC;D071;110F 1173 11AC;
+D072;D072;110F 1173 11AD;D072;110F 1173 11AD;
+D073;D073;110F 1173 11AE;D073;110F 1173 11AE;
+D074;D074;110F 1173 11AF;D074;110F 1173 11AF;
+D075;D075;110F 1173 11B0;D075;110F 1173 11B0;
+D076;D076;110F 1173 11B1;D076;110F 1173 11B1;
+D077;D077;110F 1173 11B2;D077;110F 1173 11B2;
+D078;D078;110F 1173 11B3;D078;110F 1173 11B3;
+D079;D079;110F 1173 11B4;D079;110F 1173 11B4;
+D07A;D07A;110F 1173 11B5;D07A;110F 1173 11B5;
+D07B;D07B;110F 1173 11B6;D07B;110F 1173 11B6;
+D07C;D07C;110F 1173 11B7;D07C;110F 1173 11B7;
+D07D;D07D;110F 1173 11B8;D07D;110F 1173 11B8;
+D07E;D07E;110F 1173 11B9;D07E;110F 1173 11B9;
+D07F;D07F;110F 1173 11BA;D07F;110F 1173 11BA;
+D080;D080;110F 1173 11BB;D080;110F 1173 11BB;
+D081;D081;110F 1173 11BC;D081;110F 1173 11BC;
+D082;D082;110F 1173 11BD;D082;110F 1173 11BD;
+D083;D083;110F 1173 11BE;D083;110F 1173 11BE;
+D084;D084;110F 1173 11BF;D084;110F 1173 11BF;
+D085;D085;110F 1173 11C0;D085;110F 1173 11C0;
+D086;D086;110F 1173 11C1;D086;110F 1173 11C1;
+D087;D087;110F 1173 11C2;D087;110F 1173 11C2;
+D088;D088;110F 1174;D088;110F 1174;
+D089;D089;110F 1174 11A8;D089;110F 1174 11A8;
+D08A;D08A;110F 1174 11A9;D08A;110F 1174 11A9;
+D08B;D08B;110F 1174 11AA;D08B;110F 1174 11AA;
+D08C;D08C;110F 1174 11AB;D08C;110F 1174 11AB;
+D08D;D08D;110F 1174 11AC;D08D;110F 1174 11AC;
+D08E;D08E;110F 1174 11AD;D08E;110F 1174 11AD;
+D08F;D08F;110F 1174 11AE;D08F;110F 1174 11AE;
+D090;D090;110F 1174 11AF;D090;110F 1174 11AF;
+D091;D091;110F 1174 11B0;D091;110F 1174 11B0;
+D092;D092;110F 1174 11B1;D092;110F 1174 11B1;
+D093;D093;110F 1174 11B2;D093;110F 1174 11B2;
+D094;D094;110F 1174 11B3;D094;110F 1174 11B3;
+D095;D095;110F 1174 11B4;D095;110F 1174 11B4;
+D096;D096;110F 1174 11B5;D096;110F 1174 11B5;
+D097;D097;110F 1174 11B6;D097;110F 1174 11B6;
+D098;D098;110F 1174 11B7;D098;110F 1174 11B7;
+D099;D099;110F 1174 11B8;D099;110F 1174 11B8;
+D09A;D09A;110F 1174 11B9;D09A;110F 1174 11B9;
+D09B;D09B;110F 1174 11BA;D09B;110F 1174 11BA;
+D09C;D09C;110F 1174 11BB;D09C;110F 1174 11BB;
+D09D;D09D;110F 1174 11BC;D09D;110F 1174 11BC;
+D09E;D09E;110F 1174 11BD;D09E;110F 1174 11BD;
+D09F;D09F;110F 1174 11BE;D09F;110F 1174 11BE;
+D0A0;D0A0;110F 1174 11BF;D0A0;110F 1174 11BF;
+D0A1;D0A1;110F 1174 11C0;D0A1;110F 1174 11C0;
+D0A2;D0A2;110F 1174 11C1;D0A2;110F 1174 11C1;
+D0A3;D0A3;110F 1174 11C2;D0A3;110F 1174 11C2;
+D0A4;D0A4;110F 1175;D0A4;110F 1175;
+D0A5;D0A5;110F 1175 11A8;D0A5;110F 1175 11A8;
+D0A6;D0A6;110F 1175 11A9;D0A6;110F 1175 11A9;
+D0A7;D0A7;110F 1175 11AA;D0A7;110F 1175 11AA;
+D0A8;D0A8;110F 1175 11AB;D0A8;110F 1175 11AB;
+D0A9;D0A9;110F 1175 11AC;D0A9;110F 1175 11AC;
+D0AA;D0AA;110F 1175 11AD;D0AA;110F 1175 11AD;
+D0AB;D0AB;110F 1175 11AE;D0AB;110F 1175 11AE;
+D0AC;D0AC;110F 1175 11AF;D0AC;110F 1175 11AF;
+D0AD;D0AD;110F 1175 11B0;D0AD;110F 1175 11B0;
+D0AE;D0AE;110F 1175 11B1;D0AE;110F 1175 11B1;
+D0AF;D0AF;110F 1175 11B2;D0AF;110F 1175 11B2;
+D0B0;D0B0;110F 1175 11B3;D0B0;110F 1175 11B3;
+D0B1;D0B1;110F 1175 11B4;D0B1;110F 1175 11B4;
+D0B2;D0B2;110F 1175 11B5;D0B2;110F 1175 11B5;
+D0B3;D0B3;110F 1175 11B6;D0B3;110F 1175 11B6;
+D0B4;D0B4;110F 1175 11B7;D0B4;110F 1175 11B7;
+D0B5;D0B5;110F 1175 11B8;D0B5;110F 1175 11B8;
+D0B6;D0B6;110F 1175 11B9;D0B6;110F 1175 11B9;
+D0B7;D0B7;110F 1175 11BA;D0B7;110F 1175 11BA;
+D0B8;D0B8;110F 1175 11BB;D0B8;110F 1175 11BB;
+D0B9;D0B9;110F 1175 11BC;D0B9;110F 1175 11BC;
+D0BA;D0BA;110F 1175 11BD;D0BA;110F 1175 11BD;
+D0BB;D0BB;110F 1175 11BE;D0BB;110F 1175 11BE;
+D0BC;D0BC;110F 1175 11BF;D0BC;110F 1175 11BF;
+D0BD;D0BD;110F 1175 11C0;D0BD;110F 1175 11C0;
+D0BE;D0BE;110F 1175 11C1;D0BE;110F 1175 11C1;
+D0BF;D0BF;110F 1175 11C2;D0BF;110F 1175 11C2;
+D0C0;D0C0;1110 1161;D0C0;1110 1161;
+D0C1;D0C1;1110 1161 11A8;D0C1;1110 1161 11A8;
+D0C2;D0C2;1110 1161 11A9;D0C2;1110 1161 11A9;
+D0C3;D0C3;1110 1161 11AA;D0C3;1110 1161 11AA;
+D0C4;D0C4;1110 1161 11AB;D0C4;1110 1161 11AB;
+D0C5;D0C5;1110 1161 11AC;D0C5;1110 1161 11AC;
+D0C6;D0C6;1110 1161 11AD;D0C6;1110 1161 11AD;
+D0C7;D0C7;1110 1161 11AE;D0C7;1110 1161 11AE;
+D0C8;D0C8;1110 1161 11AF;D0C8;1110 1161 11AF;
+D0C9;D0C9;1110 1161 11B0;D0C9;1110 1161 11B0;
+D0CA;D0CA;1110 1161 11B1;D0CA;1110 1161 11B1;
+D0CB;D0CB;1110 1161 11B2;D0CB;1110 1161 11B2;
+D0CC;D0CC;1110 1161 11B3;D0CC;1110 1161 11B3;
+D0CD;D0CD;1110 1161 11B4;D0CD;1110 1161 11B4;
+D0CE;D0CE;1110 1161 11B5;D0CE;1110 1161 11B5;
+D0CF;D0CF;1110 1161 11B6;D0CF;1110 1161 11B6;
+D0D0;D0D0;1110 1161 11B7;D0D0;1110 1161 11B7;
+D0D1;D0D1;1110 1161 11B8;D0D1;1110 1161 11B8;
+D0D2;D0D2;1110 1161 11B9;D0D2;1110 1161 11B9;
+D0D3;D0D3;1110 1161 11BA;D0D3;1110 1161 11BA;
+D0D4;D0D4;1110 1161 11BB;D0D4;1110 1161 11BB;
+D0D5;D0D5;1110 1161 11BC;D0D5;1110 1161 11BC;
+D0D6;D0D6;1110 1161 11BD;D0D6;1110 1161 11BD;
+D0D7;D0D7;1110 1161 11BE;D0D7;1110 1161 11BE;
+D0D8;D0D8;1110 1161 11BF;D0D8;1110 1161 11BF;
+D0D9;D0D9;1110 1161 11C0;D0D9;1110 1161 11C0;
+D0DA;D0DA;1110 1161 11C1;D0DA;1110 1161 11C1;
+D0DB;D0DB;1110 1161 11C2;D0DB;1110 1161 11C2;
+D0DC;D0DC;1110 1162;D0DC;1110 1162;
+D0DD;D0DD;1110 1162 11A8;D0DD;1110 1162 11A8;
+D0DE;D0DE;1110 1162 11A9;D0DE;1110 1162 11A9;
+D0DF;D0DF;1110 1162 11AA;D0DF;1110 1162 11AA;
+D0E0;D0E0;1110 1162 11AB;D0E0;1110 1162 11AB;
+D0E1;D0E1;1110 1162 11AC;D0E1;1110 1162 11AC;
+D0E2;D0E2;1110 1162 11AD;D0E2;1110 1162 11AD;
+D0E3;D0E3;1110 1162 11AE;D0E3;1110 1162 11AE;
+D0E4;D0E4;1110 1162 11AF;D0E4;1110 1162 11AF;
+D0E5;D0E5;1110 1162 11B0;D0E5;1110 1162 11B0;
+D0E6;D0E6;1110 1162 11B1;D0E6;1110 1162 11B1;
+D0E7;D0E7;1110 1162 11B2;D0E7;1110 1162 11B2;
+D0E8;D0E8;1110 1162 11B3;D0E8;1110 1162 11B3;
+D0E9;D0E9;1110 1162 11B4;D0E9;1110 1162 11B4;
+D0EA;D0EA;1110 1162 11B5;D0EA;1110 1162 11B5;
+D0EB;D0EB;1110 1162 11B6;D0EB;1110 1162 11B6;
+D0EC;D0EC;1110 1162 11B7;D0EC;1110 1162 11B7;
+D0ED;D0ED;1110 1162 11B8;D0ED;1110 1162 11B8;
+D0EE;D0EE;1110 1162 11B9;D0EE;1110 1162 11B9;
+D0EF;D0EF;1110 1162 11BA;D0EF;1110 1162 11BA;
+D0F0;D0F0;1110 1162 11BB;D0F0;1110 1162 11BB;
+D0F1;D0F1;1110 1162 11BC;D0F1;1110 1162 11BC;
+D0F2;D0F2;1110 1162 11BD;D0F2;1110 1162 11BD;
+D0F3;D0F3;1110 1162 11BE;D0F3;1110 1162 11BE;
+D0F4;D0F4;1110 1162 11BF;D0F4;1110 1162 11BF;
+D0F5;D0F5;1110 1162 11C0;D0F5;1110 1162 11C0;
+D0F6;D0F6;1110 1162 11C1;D0F6;1110 1162 11C1;
+D0F7;D0F7;1110 1162 11C2;D0F7;1110 1162 11C2;
+D0F8;D0F8;1110 1163;D0F8;1110 1163;
+D0F9;D0F9;1110 1163 11A8;D0F9;1110 1163 11A8;
+D0FA;D0FA;1110 1163 11A9;D0FA;1110 1163 11A9;
+D0FB;D0FB;1110 1163 11AA;D0FB;1110 1163 11AA;
+D0FC;D0FC;1110 1163 11AB;D0FC;1110 1163 11AB;
+D0FD;D0FD;1110 1163 11AC;D0FD;1110 1163 11AC;
+D0FE;D0FE;1110 1163 11AD;D0FE;1110 1163 11AD;
+D0FF;D0FF;1110 1163 11AE;D0FF;1110 1163 11AE;
+D100;D100;1110 1163 11AF;D100;1110 1163 11AF;
+D101;D101;1110 1163 11B0;D101;1110 1163 11B0;
+D102;D102;1110 1163 11B1;D102;1110 1163 11B1;
+D103;D103;1110 1163 11B2;D103;1110 1163 11B2;
+D104;D104;1110 1163 11B3;D104;1110 1163 11B3;
+D105;D105;1110 1163 11B4;D105;1110 1163 11B4;
+D106;D106;1110 1163 11B5;D106;1110 1163 11B5;
+D107;D107;1110 1163 11B6;D107;1110 1163 11B6;
+D108;D108;1110 1163 11B7;D108;1110 1163 11B7;
+D109;D109;1110 1163 11B8;D109;1110 1163 11B8;
+D10A;D10A;1110 1163 11B9;D10A;1110 1163 11B9;
+D10B;D10B;1110 1163 11BA;D10B;1110 1163 11BA;
+D10C;D10C;1110 1163 11BB;D10C;1110 1163 11BB;
+D10D;D10D;1110 1163 11BC;D10D;1110 1163 11BC;
+D10E;D10E;1110 1163 11BD;D10E;1110 1163 11BD;
+D10F;D10F;1110 1163 11BE;D10F;1110 1163 11BE;
+D110;D110;1110 1163 11BF;D110;1110 1163 11BF;
+D111;D111;1110 1163 11C0;D111;1110 1163 11C0;
+D112;D112;1110 1163 11C1;D112;1110 1163 11C1;
+D113;D113;1110 1163 11C2;D113;1110 1163 11C2;
+D114;D114;1110 1164;D114;1110 1164;
+D115;D115;1110 1164 11A8;D115;1110 1164 11A8;
+D116;D116;1110 1164 11A9;D116;1110 1164 11A9;
+D117;D117;1110 1164 11AA;D117;1110 1164 11AA;
+D118;D118;1110 1164 11AB;D118;1110 1164 11AB;
+D119;D119;1110 1164 11AC;D119;1110 1164 11AC;
+D11A;D11A;1110 1164 11AD;D11A;1110 1164 11AD;
+D11B;D11B;1110 1164 11AE;D11B;1110 1164 11AE;
+D11C;D11C;1110 1164 11AF;D11C;1110 1164 11AF;
+D11D;D11D;1110 1164 11B0;D11D;1110 1164 11B0;
+D11E;D11E;1110 1164 11B1;D11E;1110 1164 11B1;
+D11F;D11F;1110 1164 11B2;D11F;1110 1164 11B2;
+D120;D120;1110 1164 11B3;D120;1110 1164 11B3;
+D121;D121;1110 1164 11B4;D121;1110 1164 11B4;
+D122;D122;1110 1164 11B5;D122;1110 1164 11B5;
+D123;D123;1110 1164 11B6;D123;1110 1164 11B6;
+D124;D124;1110 1164 11B7;D124;1110 1164 11B7;
+D125;D125;1110 1164 11B8;D125;1110 1164 11B8;
+D126;D126;1110 1164 11B9;D126;1110 1164 11B9;
+D127;D127;1110 1164 11BA;D127;1110 1164 11BA;
+D128;D128;1110 1164 11BB;D128;1110 1164 11BB;
+D129;D129;1110 1164 11BC;D129;1110 1164 11BC;
+D12A;D12A;1110 1164 11BD;D12A;1110 1164 11BD;
+D12B;D12B;1110 1164 11BE;D12B;1110 1164 11BE;
+D12C;D12C;1110 1164 11BF;D12C;1110 1164 11BF;
+D12D;D12D;1110 1164 11C0;D12D;1110 1164 11C0;
+D12E;D12E;1110 1164 11C1;D12E;1110 1164 11C1;
+D12F;D12F;1110 1164 11C2;D12F;1110 1164 11C2;
+D130;D130;1110 1165;D130;1110 1165;
+D131;D131;1110 1165 11A8;D131;1110 1165 11A8;
+D132;D132;1110 1165 11A9;D132;1110 1165 11A9;
+D133;D133;1110 1165 11AA;D133;1110 1165 11AA;
+D134;D134;1110 1165 11AB;D134;1110 1165 11AB;
+D135;D135;1110 1165 11AC;D135;1110 1165 11AC;
+D136;D136;1110 1165 11AD;D136;1110 1165 11AD;
+D137;D137;1110 1165 11AE;D137;1110 1165 11AE;
+D138;D138;1110 1165 11AF;D138;1110 1165 11AF;
+D139;D139;1110 1165 11B0;D139;1110 1165 11B0;
+D13A;D13A;1110 1165 11B1;D13A;1110 1165 11B1;
+D13B;D13B;1110 1165 11B2;D13B;1110 1165 11B2;
+D13C;D13C;1110 1165 11B3;D13C;1110 1165 11B3;
+D13D;D13D;1110 1165 11B4;D13D;1110 1165 11B4;
+D13E;D13E;1110 1165 11B5;D13E;1110 1165 11B5;
+D13F;D13F;1110 1165 11B6;D13F;1110 1165 11B6;
+D140;D140;1110 1165 11B7;D140;1110 1165 11B7;
+D141;D141;1110 1165 11B8;D141;1110 1165 11B8;
+D142;D142;1110 1165 11B9;D142;1110 1165 11B9;
+D143;D143;1110 1165 11BA;D143;1110 1165 11BA;
+D144;D144;1110 1165 11BB;D144;1110 1165 11BB;
+D145;D145;1110 1165 11BC;D145;1110 1165 11BC;
+D146;D146;1110 1165 11BD;D146;1110 1165 11BD;
+D147;D147;1110 1165 11BE;D147;1110 1165 11BE;
+D148;D148;1110 1165 11BF;D148;1110 1165 11BF;
+D149;D149;1110 1165 11C0;D149;1110 1165 11C0;
+D14A;D14A;1110 1165 11C1;D14A;1110 1165 11C1;
+D14B;D14B;1110 1165 11C2;D14B;1110 1165 11C2;
+D14C;D14C;1110 1166;D14C;1110 1166;
+D14D;D14D;1110 1166 11A8;D14D;1110 1166 11A8;
+D14E;D14E;1110 1166 11A9;D14E;1110 1166 11A9;
+D14F;D14F;1110 1166 11AA;D14F;1110 1166 11AA;
+D150;D150;1110 1166 11AB;D150;1110 1166 11AB;
+D151;D151;1110 1166 11AC;D151;1110 1166 11AC;
+D152;D152;1110 1166 11AD;D152;1110 1166 11AD;
+D153;D153;1110 1166 11AE;D153;1110 1166 11AE;
+D154;D154;1110 1166 11AF;D154;1110 1166 11AF;
+D155;D155;1110 1166 11B0;D155;1110 1166 11B0;
+D156;D156;1110 1166 11B1;D156;1110 1166 11B1;
+D157;D157;1110 1166 11B2;D157;1110 1166 11B2;
+D158;D158;1110 1166 11B3;D158;1110 1166 11B3;
+D159;D159;1110 1166 11B4;D159;1110 1166 11B4;
+D15A;D15A;1110 1166 11B5;D15A;1110 1166 11B5;
+D15B;D15B;1110 1166 11B6;D15B;1110 1166 11B6;
+D15C;D15C;1110 1166 11B7;D15C;1110 1166 11B7;
+D15D;D15D;1110 1166 11B8;D15D;1110 1166 11B8;
+D15E;D15E;1110 1166 11B9;D15E;1110 1166 11B9;
+D15F;D15F;1110 1166 11BA;D15F;1110 1166 11BA;
+D160;D160;1110 1166 11BB;D160;1110 1166 11BB;
+D161;D161;1110 1166 11BC;D161;1110 1166 11BC;
+D162;D162;1110 1166 11BD;D162;1110 1166 11BD;
+D163;D163;1110 1166 11BE;D163;1110 1166 11BE;
+D164;D164;1110 1166 11BF;D164;1110 1166 11BF;
+D165;D165;1110 1166 11C0;D165;1110 1166 11C0;
+D166;D166;1110 1166 11C1;D166;1110 1166 11C1;
+D167;D167;1110 1166 11C2;D167;1110 1166 11C2;
+D168;D168;1110 1167;D168;1110 1167;
+D169;D169;1110 1167 11A8;D169;1110 1167 11A8;
+D16A;D16A;1110 1167 11A9;D16A;1110 1167 11A9;
+D16B;D16B;1110 1167 11AA;D16B;1110 1167 11AA;
+D16C;D16C;1110 1167 11AB;D16C;1110 1167 11AB;
+D16D;D16D;1110 1167 11AC;D16D;1110 1167 11AC;
+D16E;D16E;1110 1167 11AD;D16E;1110 1167 11AD;
+D16F;D16F;1110 1167 11AE;D16F;1110 1167 11AE;
+D170;D170;1110 1167 11AF;D170;1110 1167 11AF;
+D171;D171;1110 1167 11B0;D171;1110 1167 11B0;
+D172;D172;1110 1167 11B1;D172;1110 1167 11B1;
+D173;D173;1110 1167 11B2;D173;1110 1167 11B2;
+D174;D174;1110 1167 11B3;D174;1110 1167 11B3;
+D175;D175;1110 1167 11B4;D175;1110 1167 11B4;
+D176;D176;1110 1167 11B5;D176;1110 1167 11B5;
+D177;D177;1110 1167 11B6;D177;1110 1167 11B6;
+D178;D178;1110 1167 11B7;D178;1110 1167 11B7;
+D179;D179;1110 1167 11B8;D179;1110 1167 11B8;
+D17A;D17A;1110 1167 11B9;D17A;1110 1167 11B9;
+D17B;D17B;1110 1167 11BA;D17B;1110 1167 11BA;
+D17C;D17C;1110 1167 11BB;D17C;1110 1167 11BB;
+D17D;D17D;1110 1167 11BC;D17D;1110 1167 11BC;
+D17E;D17E;1110 1167 11BD;D17E;1110 1167 11BD;
+D17F;D17F;1110 1167 11BE;D17F;1110 1167 11BE;
+D180;D180;1110 1167 11BF;D180;1110 1167 11BF;
+D181;D181;1110 1167 11C0;D181;1110 1167 11C0;
+D182;D182;1110 1167 11C1;D182;1110 1167 11C1;
+D183;D183;1110 1167 11C2;D183;1110 1167 11C2;
+D184;D184;1110 1168;D184;1110 1168;
+D185;D185;1110 1168 11A8;D185;1110 1168 11A8;
+D186;D186;1110 1168 11A9;D186;1110 1168 11A9;
+D187;D187;1110 1168 11AA;D187;1110 1168 11AA;
+D188;D188;1110 1168 11AB;D188;1110 1168 11AB;
+D189;D189;1110 1168 11AC;D189;1110 1168 11AC;
+D18A;D18A;1110 1168 11AD;D18A;1110 1168 11AD;
+D18B;D18B;1110 1168 11AE;D18B;1110 1168 11AE;
+D18C;D18C;1110 1168 11AF;D18C;1110 1168 11AF;
+D18D;D18D;1110 1168 11B0;D18D;1110 1168 11B0;
+D18E;D18E;1110 1168 11B1;D18E;1110 1168 11B1;
+D18F;D18F;1110 1168 11B2;D18F;1110 1168 11B2;
+D190;D190;1110 1168 11B3;D190;1110 1168 11B3;
+D191;D191;1110 1168 11B4;D191;1110 1168 11B4;
+D192;D192;1110 1168 11B5;D192;1110 1168 11B5;
+D193;D193;1110 1168 11B6;D193;1110 1168 11B6;
+D194;D194;1110 1168 11B7;D194;1110 1168 11B7;
+D195;D195;1110 1168 11B8;D195;1110 1168 11B8;
+D196;D196;1110 1168 11B9;D196;1110 1168 11B9;
+D197;D197;1110 1168 11BA;D197;1110 1168 11BA;
+D198;D198;1110 1168 11BB;D198;1110 1168 11BB;
+D199;D199;1110 1168 11BC;D199;1110 1168 11BC;
+D19A;D19A;1110 1168 11BD;D19A;1110 1168 11BD;
+D19B;D19B;1110 1168 11BE;D19B;1110 1168 11BE;
+D19C;D19C;1110 1168 11BF;D19C;1110 1168 11BF;
+D19D;D19D;1110 1168 11C0;D19D;1110 1168 11C0;
+D19E;D19E;1110 1168 11C1;D19E;1110 1168 11C1;
+D19F;D19F;1110 1168 11C2;D19F;1110 1168 11C2;
+D1A0;D1A0;1110 1169;D1A0;1110 1169;
+D1A1;D1A1;1110 1169 11A8;D1A1;1110 1169 11A8;
+D1A2;D1A2;1110 1169 11A9;D1A2;1110 1169 11A9;
+D1A3;D1A3;1110 1169 11AA;D1A3;1110 1169 11AA;
+D1A4;D1A4;1110 1169 11AB;D1A4;1110 1169 11AB;
+D1A5;D1A5;1110 1169 11AC;D1A5;1110 1169 11AC;
+D1A6;D1A6;1110 1169 11AD;D1A6;1110 1169 11AD;
+D1A7;D1A7;1110 1169 11AE;D1A7;1110 1169 11AE;
+D1A8;D1A8;1110 1169 11AF;D1A8;1110 1169 11AF;
+D1A9;D1A9;1110 1169 11B0;D1A9;1110 1169 11B0;
+D1AA;D1AA;1110 1169 11B1;D1AA;1110 1169 11B1;
+D1AB;D1AB;1110 1169 11B2;D1AB;1110 1169 11B2;
+D1AC;D1AC;1110 1169 11B3;D1AC;1110 1169 11B3;
+D1AD;D1AD;1110 1169 11B4;D1AD;1110 1169 11B4;
+D1AE;D1AE;1110 1169 11B5;D1AE;1110 1169 11B5;
+D1AF;D1AF;1110 1169 11B6;D1AF;1110 1169 11B6;
+D1B0;D1B0;1110 1169 11B7;D1B0;1110 1169 11B7;
+D1B1;D1B1;1110 1169 11B8;D1B1;1110 1169 11B8;
+D1B2;D1B2;1110 1169 11B9;D1B2;1110 1169 11B9;
+D1B3;D1B3;1110 1169 11BA;D1B3;1110 1169 11BA;
+D1B4;D1B4;1110 1169 11BB;D1B4;1110 1169 11BB;
+D1B5;D1B5;1110 1169 11BC;D1B5;1110 1169 11BC;
+D1B6;D1B6;1110 1169 11BD;D1B6;1110 1169 11BD;
+D1B7;D1B7;1110 1169 11BE;D1B7;1110 1169 11BE;
+D1B8;D1B8;1110 1169 11BF;D1B8;1110 1169 11BF;
+D1B9;D1B9;1110 1169 11C0;D1B9;1110 1169 11C0;
+D1BA;D1BA;1110 1169 11C1;D1BA;1110 1169 11C1;
+D1BB;D1BB;1110 1169 11C2;D1BB;1110 1169 11C2;
+D1BC;D1BC;1110 116A;D1BC;1110 116A;
+D1BD;D1BD;1110 116A 11A8;D1BD;1110 116A 11A8;
+D1BE;D1BE;1110 116A 11A9;D1BE;1110 116A 11A9;
+D1BF;D1BF;1110 116A 11AA;D1BF;1110 116A 11AA;
+D1C0;D1C0;1110 116A 11AB;D1C0;1110 116A 11AB;
+D1C1;D1C1;1110 116A 11AC;D1C1;1110 116A 11AC;
+D1C2;D1C2;1110 116A 11AD;D1C2;1110 116A 11AD;
+D1C3;D1C3;1110 116A 11AE;D1C3;1110 116A 11AE;
+D1C4;D1C4;1110 116A 11AF;D1C4;1110 116A 11AF;
+D1C5;D1C5;1110 116A 11B0;D1C5;1110 116A 11B0;
+D1C6;D1C6;1110 116A 11B1;D1C6;1110 116A 11B1;
+D1C7;D1C7;1110 116A 11B2;D1C7;1110 116A 11B2;
+D1C8;D1C8;1110 116A 11B3;D1C8;1110 116A 11B3;
+D1C9;D1C9;1110 116A 11B4;D1C9;1110 116A 11B4;
+D1CA;D1CA;1110 116A 11B5;D1CA;1110 116A 11B5;
+D1CB;D1CB;1110 116A 11B6;D1CB;1110 116A 11B6;
+D1CC;D1CC;1110 116A 11B7;D1CC;1110 116A 11B7;
+D1CD;D1CD;1110 116A 11B8;D1CD;1110 116A 11B8;
+D1CE;D1CE;1110 116A 11B9;D1CE;1110 116A 11B9;
+D1CF;D1CF;1110 116A 11BA;D1CF;1110 116A 11BA;
+D1D0;D1D0;1110 116A 11BB;D1D0;1110 116A 11BB;
+D1D1;D1D1;1110 116A 11BC;D1D1;1110 116A 11BC;
+D1D2;D1D2;1110 116A 11BD;D1D2;1110 116A 11BD;
+D1D3;D1D3;1110 116A 11BE;D1D3;1110 116A 11BE;
+D1D4;D1D4;1110 116A 11BF;D1D4;1110 116A 11BF;
+D1D5;D1D5;1110 116A 11C0;D1D5;1110 116A 11C0;
+D1D6;D1D6;1110 116A 11C1;D1D6;1110 116A 11C1;
+D1D7;D1D7;1110 116A 11C2;D1D7;1110 116A 11C2;
+D1D8;D1D8;1110 116B;D1D8;1110 116B;
+D1D9;D1D9;1110 116B 11A8;D1D9;1110 116B 11A8;
+D1DA;D1DA;1110 116B 11A9;D1DA;1110 116B 11A9;
+D1DB;D1DB;1110 116B 11AA;D1DB;1110 116B 11AA;
+D1DC;D1DC;1110 116B 11AB;D1DC;1110 116B 11AB;
+D1DD;D1DD;1110 116B 11AC;D1DD;1110 116B 11AC;
+D1DE;D1DE;1110 116B 11AD;D1DE;1110 116B 11AD;
+D1DF;D1DF;1110 116B 11AE;D1DF;1110 116B 11AE;
+D1E0;D1E0;1110 116B 11AF;D1E0;1110 116B 11AF;
+D1E1;D1E1;1110 116B 11B0;D1E1;1110 116B 11B0;
+D1E2;D1E2;1110 116B 11B1;D1E2;1110 116B 11B1;
+D1E3;D1E3;1110 116B 11B2;D1E3;1110 116B 11B2;
+D1E4;D1E4;1110 116B 11B3;D1E4;1110 116B 11B3;
+D1E5;D1E5;1110 116B 11B4;D1E5;1110 116B 11B4;
+D1E6;D1E6;1110 116B 11B5;D1E6;1110 116B 11B5;
+D1E7;D1E7;1110 116B 11B6;D1E7;1110 116B 11B6;
+D1E8;D1E8;1110 116B 11B7;D1E8;1110 116B 11B7;
+D1E9;D1E9;1110 116B 11B8;D1E9;1110 116B 11B8;
+D1EA;D1EA;1110 116B 11B9;D1EA;1110 116B 11B9;
+D1EB;D1EB;1110 116B 11BA;D1EB;1110 116B 11BA;
+D1EC;D1EC;1110 116B 11BB;D1EC;1110 116B 11BB;
+D1ED;D1ED;1110 116B 11BC;D1ED;1110 116B 11BC;
+D1EE;D1EE;1110 116B 11BD;D1EE;1110 116B 11BD;
+D1EF;D1EF;1110 116B 11BE;D1EF;1110 116B 11BE;
+D1F0;D1F0;1110 116B 11BF;D1F0;1110 116B 11BF;
+D1F1;D1F1;1110 116B 11C0;D1F1;1110 116B 11C0;
+D1F2;D1F2;1110 116B 11C1;D1F2;1110 116B 11C1;
+D1F3;D1F3;1110 116B 11C2;D1F3;1110 116B 11C2;
+D1F4;D1F4;1110 116C;D1F4;1110 116C;
+D1F5;D1F5;1110 116C 11A8;D1F5;1110 116C 11A8;
+D1F6;D1F6;1110 116C 11A9;D1F6;1110 116C 11A9;
+D1F7;D1F7;1110 116C 11AA;D1F7;1110 116C 11AA;
+D1F8;D1F8;1110 116C 11AB;D1F8;1110 116C 11AB;
+D1F9;D1F9;1110 116C 11AC;D1F9;1110 116C 11AC;
+D1FA;D1FA;1110 116C 11AD;D1FA;1110 116C 11AD;
+D1FB;D1FB;1110 116C 11AE;D1FB;1110 116C 11AE;
+D1FC;D1FC;1110 116C 11AF;D1FC;1110 116C 11AF;
+D1FD;D1FD;1110 116C 11B0;D1FD;1110 116C 11B0;
+D1FE;D1FE;1110 116C 11B1;D1FE;1110 116C 11B1;
+D1FF;D1FF;1110 116C 11B2;D1FF;1110 116C 11B2;
+D200;D200;1110 116C 11B3;D200;1110 116C 11B3;
+D201;D201;1110 116C 11B4;D201;1110 116C 11B4;
+D202;D202;1110 116C 11B5;D202;1110 116C 11B5;
+D203;D203;1110 116C 11B6;D203;1110 116C 11B6;
+D204;D204;1110 116C 11B7;D204;1110 116C 11B7;
+D205;D205;1110 116C 11B8;D205;1110 116C 11B8;
+D206;D206;1110 116C 11B9;D206;1110 116C 11B9;
+D207;D207;1110 116C 11BA;D207;1110 116C 11BA;
+D208;D208;1110 116C 11BB;D208;1110 116C 11BB;
+D209;D209;1110 116C 11BC;D209;1110 116C 11BC;
+D20A;D20A;1110 116C 11BD;D20A;1110 116C 11BD;
+D20B;D20B;1110 116C 11BE;D20B;1110 116C 11BE;
+D20C;D20C;1110 116C 11BF;D20C;1110 116C 11BF;
+D20D;D20D;1110 116C 11C0;D20D;1110 116C 11C0;
+D20E;D20E;1110 116C 11C1;D20E;1110 116C 11C1;
+D20F;D20F;1110 116C 11C2;D20F;1110 116C 11C2;
+D210;D210;1110 116D;D210;1110 116D;
+D211;D211;1110 116D 11A8;D211;1110 116D 11A8;
+D212;D212;1110 116D 11A9;D212;1110 116D 11A9;
+D213;D213;1110 116D 11AA;D213;1110 116D 11AA;
+D214;D214;1110 116D 11AB;D214;1110 116D 11AB;
+D215;D215;1110 116D 11AC;D215;1110 116D 11AC;
+D216;D216;1110 116D 11AD;D216;1110 116D 11AD;
+D217;D217;1110 116D 11AE;D217;1110 116D 11AE;
+D218;D218;1110 116D 11AF;D218;1110 116D 11AF;
+D219;D219;1110 116D 11B0;D219;1110 116D 11B0;
+D21A;D21A;1110 116D 11B1;D21A;1110 116D 11B1;
+D21B;D21B;1110 116D 11B2;D21B;1110 116D 11B2;
+D21C;D21C;1110 116D 11B3;D21C;1110 116D 11B3;
+D21D;D21D;1110 116D 11B4;D21D;1110 116D 11B4;
+D21E;D21E;1110 116D 11B5;D21E;1110 116D 11B5;
+D21F;D21F;1110 116D 11B6;D21F;1110 116D 11B6;
+D220;D220;1110 116D 11B7;D220;1110 116D 11B7;
+D221;D221;1110 116D 11B8;D221;1110 116D 11B8;
+D222;D222;1110 116D 11B9;D222;1110 116D 11B9;
+D223;D223;1110 116D 11BA;D223;1110 116D 11BA;
+D224;D224;1110 116D 11BB;D224;1110 116D 11BB;
+D225;D225;1110 116D 11BC;D225;1110 116D 11BC;
+D226;D226;1110 116D 11BD;D226;1110 116D 11BD;
+D227;D227;1110 116D 11BE;D227;1110 116D 11BE;
+D228;D228;1110 116D 11BF;D228;1110 116D 11BF;
+D229;D229;1110 116D 11C0;D229;1110 116D 11C0;
+D22A;D22A;1110 116D 11C1;D22A;1110 116D 11C1;
+D22B;D22B;1110 116D 11C2;D22B;1110 116D 11C2;
+D22C;D22C;1110 116E;D22C;1110 116E;
+D22D;D22D;1110 116E 11A8;D22D;1110 116E 11A8;
+D22E;D22E;1110 116E 11A9;D22E;1110 116E 11A9;
+D22F;D22F;1110 116E 11AA;D22F;1110 116E 11AA;
+D230;D230;1110 116E 11AB;D230;1110 116E 11AB;
+D231;D231;1110 116E 11AC;D231;1110 116E 11AC;
+D232;D232;1110 116E 11AD;D232;1110 116E 11AD;
+D233;D233;1110 116E 11AE;D233;1110 116E 11AE;
+D234;D234;1110 116E 11AF;D234;1110 116E 11AF;
+D235;D235;1110 116E 11B0;D235;1110 116E 11B0;
+D236;D236;1110 116E 11B1;D236;1110 116E 11B1;
+D237;D237;1110 116E 11B2;D237;1110 116E 11B2;
+D238;D238;1110 116E 11B3;D238;1110 116E 11B3;
+D239;D239;1110 116E 11B4;D239;1110 116E 11B4;
+D23A;D23A;1110 116E 11B5;D23A;1110 116E 11B5;
+D23B;D23B;1110 116E 11B6;D23B;1110 116E 11B6;
+D23C;D23C;1110 116E 11B7;D23C;1110 116E 11B7;
+D23D;D23D;1110 116E 11B8;D23D;1110 116E 11B8;
+D23E;D23E;1110 116E 11B9;D23E;1110 116E 11B9;
+D23F;D23F;1110 116E 11BA;D23F;1110 116E 11BA;
+D240;D240;1110 116E 11BB;D240;1110 116E 11BB;
+D241;D241;1110 116E 11BC;D241;1110 116E 11BC;
+D242;D242;1110 116E 11BD;D242;1110 116E 11BD;
+D243;D243;1110 116E 11BE;D243;1110 116E 11BE;
+D244;D244;1110 116E 11BF;D244;1110 116E 11BF;
+D245;D245;1110 116E 11C0;D245;1110 116E 11C0;
+D246;D246;1110 116E 11C1;D246;1110 116E 11C1;
+D247;D247;1110 116E 11C2;D247;1110 116E 11C2;
+D248;D248;1110 116F;D248;1110 116F;
+D249;D249;1110 116F 11A8;D249;1110 116F 11A8;
+D24A;D24A;1110 116F 11A9;D24A;1110 116F 11A9;
+D24B;D24B;1110 116F 11AA;D24B;1110 116F 11AA;
+D24C;D24C;1110 116F 11AB;D24C;1110 116F 11AB;
+D24D;D24D;1110 116F 11AC;D24D;1110 116F 11AC;
+D24E;D24E;1110 116F 11AD;D24E;1110 116F 11AD;
+D24F;D24F;1110 116F 11AE;D24F;1110 116F 11AE;
+D250;D250;1110 116F 11AF;D250;1110 116F 11AF;
+D251;D251;1110 116F 11B0;D251;1110 116F 11B0;
+D252;D252;1110 116F 11B1;D252;1110 116F 11B1;
+D253;D253;1110 116F 11B2;D253;1110 116F 11B2;
+D254;D254;1110 116F 11B3;D254;1110 116F 11B3;
+D255;D255;1110 116F 11B4;D255;1110 116F 11B4;
+D256;D256;1110 116F 11B5;D256;1110 116F 11B5;
+D257;D257;1110 116F 11B6;D257;1110 116F 11B6;
+D258;D258;1110 116F 11B7;D258;1110 116F 11B7;
+D259;D259;1110 116F 11B8;D259;1110 116F 11B8;
+D25A;D25A;1110 116F 11B9;D25A;1110 116F 11B9;
+D25B;D25B;1110 116F 11BA;D25B;1110 116F 11BA;
+D25C;D25C;1110 116F 11BB;D25C;1110 116F 11BB;
+D25D;D25D;1110 116F 11BC;D25D;1110 116F 11BC;
+D25E;D25E;1110 116F 11BD;D25E;1110 116F 11BD;
+D25F;D25F;1110 116F 11BE;D25F;1110 116F 11BE;
+D260;D260;1110 116F 11BF;D260;1110 116F 11BF;
+D261;D261;1110 116F 11C0;D261;1110 116F 11C0;
+D262;D262;1110 116F 11C1;D262;1110 116F 11C1;
+D263;D263;1110 116F 11C2;D263;1110 116F 11C2;
+D264;D264;1110 1170;D264;1110 1170;
+D265;D265;1110 1170 11A8;D265;1110 1170 11A8;
+D266;D266;1110 1170 11A9;D266;1110 1170 11A9;
+D267;D267;1110 1170 11AA;D267;1110 1170 11AA;
+D268;D268;1110 1170 11AB;D268;1110 1170 11AB;
+D269;D269;1110 1170 11AC;D269;1110 1170 11AC;
+D26A;D26A;1110 1170 11AD;D26A;1110 1170 11AD;
+D26B;D26B;1110 1170 11AE;D26B;1110 1170 11AE;
+D26C;D26C;1110 1170 11AF;D26C;1110 1170 11AF;
+D26D;D26D;1110 1170 11B0;D26D;1110 1170 11B0;
+D26E;D26E;1110 1170 11B1;D26E;1110 1170 11B1;
+D26F;D26F;1110 1170 11B2;D26F;1110 1170 11B2;
+D270;D270;1110 1170 11B3;D270;1110 1170 11B3;
+D271;D271;1110 1170 11B4;D271;1110 1170 11B4;
+D272;D272;1110 1170 11B5;D272;1110 1170 11B5;
+D273;D273;1110 1170 11B6;D273;1110 1170 11B6;
+D274;D274;1110 1170 11B7;D274;1110 1170 11B7;
+D275;D275;1110 1170 11B8;D275;1110 1170 11B8;
+D276;D276;1110 1170 11B9;D276;1110 1170 11B9;
+D277;D277;1110 1170 11BA;D277;1110 1170 11BA;
+D278;D278;1110 1170 11BB;D278;1110 1170 11BB;
+D279;D279;1110 1170 11BC;D279;1110 1170 11BC;
+D27A;D27A;1110 1170 11BD;D27A;1110 1170 11BD;
+D27B;D27B;1110 1170 11BE;D27B;1110 1170 11BE;
+D27C;D27C;1110 1170 11BF;D27C;1110 1170 11BF;
+D27D;D27D;1110 1170 11C0;D27D;1110 1170 11C0;
+D27E;D27E;1110 1170 11C1;D27E;1110 1170 11C1;
+D27F;D27F;1110 1170 11C2;D27F;1110 1170 11C2;
+D280;D280;1110 1171;D280;1110 1171;
+D281;D281;1110 1171 11A8;D281;1110 1171 11A8;
+D282;D282;1110 1171 11A9;D282;1110 1171 11A9;
+D283;D283;1110 1171 11AA;D283;1110 1171 11AA;
+D284;D284;1110 1171 11AB;D284;1110 1171 11AB;
+D285;D285;1110 1171 11AC;D285;1110 1171 11AC;
+D286;D286;1110 1171 11AD;D286;1110 1171 11AD;
+D287;D287;1110 1171 11AE;D287;1110 1171 11AE;
+D288;D288;1110 1171 11AF;D288;1110 1171 11AF;
+D289;D289;1110 1171 11B0;D289;1110 1171 11B0;
+D28A;D28A;1110 1171 11B1;D28A;1110 1171 11B1;
+D28B;D28B;1110 1171 11B2;D28B;1110 1171 11B2;
+D28C;D28C;1110 1171 11B3;D28C;1110 1171 11B3;
+D28D;D28D;1110 1171 11B4;D28D;1110 1171 11B4;
+D28E;D28E;1110 1171 11B5;D28E;1110 1171 11B5;
+D28F;D28F;1110 1171 11B6;D28F;1110 1171 11B6;
+D290;D290;1110 1171 11B7;D290;1110 1171 11B7;
+D291;D291;1110 1171 11B8;D291;1110 1171 11B8;
+D292;D292;1110 1171 11B9;D292;1110 1171 11B9;
+D293;D293;1110 1171 11BA;D293;1110 1171 11BA;
+D294;D294;1110 1171 11BB;D294;1110 1171 11BB;
+D295;D295;1110 1171 11BC;D295;1110 1171 11BC;
+D296;D296;1110 1171 11BD;D296;1110 1171 11BD;
+D297;D297;1110 1171 11BE;D297;1110 1171 11BE;
+D298;D298;1110 1171 11BF;D298;1110 1171 11BF;
+D299;D299;1110 1171 11C0;D299;1110 1171 11C0;
+D29A;D29A;1110 1171 11C1;D29A;1110 1171 11C1;
+D29B;D29B;1110 1171 11C2;D29B;1110 1171 11C2;
+D29C;D29C;1110 1172;D29C;1110 1172;
+D29D;D29D;1110 1172 11A8;D29D;1110 1172 11A8;
+D29E;D29E;1110 1172 11A9;D29E;1110 1172 11A9;
+D29F;D29F;1110 1172 11AA;D29F;1110 1172 11AA;
+D2A0;D2A0;1110 1172 11AB;D2A0;1110 1172 11AB;
+D2A1;D2A1;1110 1172 11AC;D2A1;1110 1172 11AC;
+D2A2;D2A2;1110 1172 11AD;D2A2;1110 1172 11AD;
+D2A3;D2A3;1110 1172 11AE;D2A3;1110 1172 11AE;
+D2A4;D2A4;1110 1172 11AF;D2A4;1110 1172 11AF;
+D2A5;D2A5;1110 1172 11B0;D2A5;1110 1172 11B0;
+D2A6;D2A6;1110 1172 11B1;D2A6;1110 1172 11B1;
+D2A7;D2A7;1110 1172 11B2;D2A7;1110 1172 11B2;
+D2A8;D2A8;1110 1172 11B3;D2A8;1110 1172 11B3;
+D2A9;D2A9;1110 1172 11B4;D2A9;1110 1172 11B4;
+D2AA;D2AA;1110 1172 11B5;D2AA;1110 1172 11B5;
+D2AB;D2AB;1110 1172 11B6;D2AB;1110 1172 11B6;
+D2AC;D2AC;1110 1172 11B7;D2AC;1110 1172 11B7;
+D2AD;D2AD;1110 1172 11B8;D2AD;1110 1172 11B8;
+D2AE;D2AE;1110 1172 11B9;D2AE;1110 1172 11B9;
+D2AF;D2AF;1110 1172 11BA;D2AF;1110 1172 11BA;
+D2B0;D2B0;1110 1172 11BB;D2B0;1110 1172 11BB;
+D2B1;D2B1;1110 1172 11BC;D2B1;1110 1172 11BC;
+D2B2;D2B2;1110 1172 11BD;D2B2;1110 1172 11BD;
+D2B3;D2B3;1110 1172 11BE;D2B3;1110 1172 11BE;
+D2B4;D2B4;1110 1172 11BF;D2B4;1110 1172 11BF;
+D2B5;D2B5;1110 1172 11C0;D2B5;1110 1172 11C0;
+D2B6;D2B6;1110 1172 11C1;D2B6;1110 1172 11C1;
+D2B7;D2B7;1110 1172 11C2;D2B7;1110 1172 11C2;
+D2B8;D2B8;1110 1173;D2B8;1110 1173;
+D2B9;D2B9;1110 1173 11A8;D2B9;1110 1173 11A8;
+D2BA;D2BA;1110 1173 11A9;D2BA;1110 1173 11A9;
+D2BB;D2BB;1110 1173 11AA;D2BB;1110 1173 11AA;
+D2BC;D2BC;1110 1173 11AB;D2BC;1110 1173 11AB;
+D2BD;D2BD;1110 1173 11AC;D2BD;1110 1173 11AC;
+D2BE;D2BE;1110 1173 11AD;D2BE;1110 1173 11AD;
+D2BF;D2BF;1110 1173 11AE;D2BF;1110 1173 11AE;
+D2C0;D2C0;1110 1173 11AF;D2C0;1110 1173 11AF;
+D2C1;D2C1;1110 1173 11B0;D2C1;1110 1173 11B0;
+D2C2;D2C2;1110 1173 11B1;D2C2;1110 1173 11B1;
+D2C3;D2C3;1110 1173 11B2;D2C3;1110 1173 11B2;
+D2C4;D2C4;1110 1173 11B3;D2C4;1110 1173 11B3;
+D2C5;D2C5;1110 1173 11B4;D2C5;1110 1173 11B4;
+D2C6;D2C6;1110 1173 11B5;D2C6;1110 1173 11B5;
+D2C7;D2C7;1110 1173 11B6;D2C7;1110 1173 11B6;
+D2C8;D2C8;1110 1173 11B7;D2C8;1110 1173 11B7;
+D2C9;D2C9;1110 1173 11B8;D2C9;1110 1173 11B8;
+D2CA;D2CA;1110 1173 11B9;D2CA;1110 1173 11B9;
+D2CB;D2CB;1110 1173 11BA;D2CB;1110 1173 11BA;
+D2CC;D2CC;1110 1173 11BB;D2CC;1110 1173 11BB;
+D2CD;D2CD;1110 1173 11BC;D2CD;1110 1173 11BC;
+D2CE;D2CE;1110 1173 11BD;D2CE;1110 1173 11BD;
+D2CF;D2CF;1110 1173 11BE;D2CF;1110 1173 11BE;
+D2D0;D2D0;1110 1173 11BF;D2D0;1110 1173 11BF;
+D2D1;D2D1;1110 1173 11C0;D2D1;1110 1173 11C0;
+D2D2;D2D2;1110 1173 11C1;D2D2;1110 1173 11C1;
+D2D3;D2D3;1110 1173 11C2;D2D3;1110 1173 11C2;
+D2D4;D2D4;1110 1174;D2D4;1110 1174;
+D2D5;D2D5;1110 1174 11A8;D2D5;1110 1174 11A8;
+D2D6;D2D6;1110 1174 11A9;D2D6;1110 1174 11A9;
+D2D7;D2D7;1110 1174 11AA;D2D7;1110 1174 11AA;
+D2D8;D2D8;1110 1174 11AB;D2D8;1110 1174 11AB;
+D2D9;D2D9;1110 1174 11AC;D2D9;1110 1174 11AC;
+D2DA;D2DA;1110 1174 11AD;D2DA;1110 1174 11AD;
+D2DB;D2DB;1110 1174 11AE;D2DB;1110 1174 11AE;
+D2DC;D2DC;1110 1174 11AF;D2DC;1110 1174 11AF;
+D2DD;D2DD;1110 1174 11B0;D2DD;1110 1174 11B0;
+D2DE;D2DE;1110 1174 11B1;D2DE;1110 1174 11B1;
+D2DF;D2DF;1110 1174 11B2;D2DF;1110 1174 11B2;
+D2E0;D2E0;1110 1174 11B3;D2E0;1110 1174 11B3;
+D2E1;D2E1;1110 1174 11B4;D2E1;1110 1174 11B4;
+D2E2;D2E2;1110 1174 11B5;D2E2;1110 1174 11B5;
+D2E3;D2E3;1110 1174 11B6;D2E3;1110 1174 11B6;
+D2E4;D2E4;1110 1174 11B7;D2E4;1110 1174 11B7;
+D2E5;D2E5;1110 1174 11B8;D2E5;1110 1174 11B8;
+D2E6;D2E6;1110 1174 11B9;D2E6;1110 1174 11B9;
+D2E7;D2E7;1110 1174 11BA;D2E7;1110 1174 11BA;
+D2E8;D2E8;1110 1174 11BB;D2E8;1110 1174 11BB;
+D2E9;D2E9;1110 1174 11BC;D2E9;1110 1174 11BC;
+D2EA;D2EA;1110 1174 11BD;D2EA;1110 1174 11BD;
+D2EB;D2EB;1110 1174 11BE;D2EB;1110 1174 11BE;
+D2EC;D2EC;1110 1174 11BF;D2EC;1110 1174 11BF;
+D2ED;D2ED;1110 1174 11C0;D2ED;1110 1174 11C0;
+D2EE;D2EE;1110 1174 11C1;D2EE;1110 1174 11C1;
+D2EF;D2EF;1110 1174 11C2;D2EF;1110 1174 11C2;
+D2F0;D2F0;1110 1175;D2F0;1110 1175;
+D2F1;D2F1;1110 1175 11A8;D2F1;1110 1175 11A8;
+D2F2;D2F2;1110 1175 11A9;D2F2;1110 1175 11A9;
+D2F3;D2F3;1110 1175 11AA;D2F3;1110 1175 11AA;
+D2F4;D2F4;1110 1175 11AB;D2F4;1110 1175 11AB;
+D2F5;D2F5;1110 1175 11AC;D2F5;1110 1175 11AC;
+D2F6;D2F6;1110 1175 11AD;D2F6;1110 1175 11AD;
+D2F7;D2F7;1110 1175 11AE;D2F7;1110 1175 11AE;
+D2F8;D2F8;1110 1175 11AF;D2F8;1110 1175 11AF;
+D2F9;D2F9;1110 1175 11B0;D2F9;1110 1175 11B0;
+D2FA;D2FA;1110 1175 11B1;D2FA;1110 1175 11B1;
+D2FB;D2FB;1110 1175 11B2;D2FB;1110 1175 11B2;
+D2FC;D2FC;1110 1175 11B3;D2FC;1110 1175 11B3;
+D2FD;D2FD;1110 1175 11B4;D2FD;1110 1175 11B4;
+D2FE;D2FE;1110 1175 11B5;D2FE;1110 1175 11B5;
+D2FF;D2FF;1110 1175 11B6;D2FF;1110 1175 11B6;
+D300;D300;1110 1175 11B7;D300;1110 1175 11B7;
+D301;D301;1110 1175 11B8;D301;1110 1175 11B8;
+D302;D302;1110 1175 11B9;D302;1110 1175 11B9;
+D303;D303;1110 1175 11BA;D303;1110 1175 11BA;
+D304;D304;1110 1175 11BB;D304;1110 1175 11BB;
+D305;D305;1110 1175 11BC;D305;1110 1175 11BC;
+D306;D306;1110 1175 11BD;D306;1110 1175 11BD;
+D307;D307;1110 1175 11BE;D307;1110 1175 11BE;
+D308;D308;1110 1175 11BF;D308;1110 1175 11BF;
+D309;D309;1110 1175 11C0;D309;1110 1175 11C0;
+D30A;D30A;1110 1175 11C1;D30A;1110 1175 11C1;
+D30B;D30B;1110 1175 11C2;D30B;1110 1175 11C2;
+D30C;D30C;1111 1161;D30C;1111 1161;
+D30D;D30D;1111 1161 11A8;D30D;1111 1161 11A8;
+D30E;D30E;1111 1161 11A9;D30E;1111 1161 11A9;
+D30F;D30F;1111 1161 11AA;D30F;1111 1161 11AA;
+D310;D310;1111 1161 11AB;D310;1111 1161 11AB;
+D311;D311;1111 1161 11AC;D311;1111 1161 11AC;
+D312;D312;1111 1161 11AD;D312;1111 1161 11AD;
+D313;D313;1111 1161 11AE;D313;1111 1161 11AE;
+D314;D314;1111 1161 11AF;D314;1111 1161 11AF;
+D315;D315;1111 1161 11B0;D315;1111 1161 11B0;
+D316;D316;1111 1161 11B1;D316;1111 1161 11B1;
+D317;D317;1111 1161 11B2;D317;1111 1161 11B2;
+D318;D318;1111 1161 11B3;D318;1111 1161 11B3;
+D319;D319;1111 1161 11B4;D319;1111 1161 11B4;
+D31A;D31A;1111 1161 11B5;D31A;1111 1161 11B5;
+D31B;D31B;1111 1161 11B6;D31B;1111 1161 11B6;
+D31C;D31C;1111 1161 11B7;D31C;1111 1161 11B7;
+D31D;D31D;1111 1161 11B8;D31D;1111 1161 11B8;
+D31E;D31E;1111 1161 11B9;D31E;1111 1161 11B9;
+D31F;D31F;1111 1161 11BA;D31F;1111 1161 11BA;
+D320;D320;1111 1161 11BB;D320;1111 1161 11BB;
+D321;D321;1111 1161 11BC;D321;1111 1161 11BC;
+D322;D322;1111 1161 11BD;D322;1111 1161 11BD;
+D323;D323;1111 1161 11BE;D323;1111 1161 11BE;
+D324;D324;1111 1161 11BF;D324;1111 1161 11BF;
+D325;D325;1111 1161 11C0;D325;1111 1161 11C0;
+D326;D326;1111 1161 11C1;D326;1111 1161 11C1;
+D327;D327;1111 1161 11C2;D327;1111 1161 11C2;
+D328;D328;1111 1162;D328;1111 1162;
+D329;D329;1111 1162 11A8;D329;1111 1162 11A8;
+D32A;D32A;1111 1162 11A9;D32A;1111 1162 11A9;
+D32B;D32B;1111 1162 11AA;D32B;1111 1162 11AA;
+D32C;D32C;1111 1162 11AB;D32C;1111 1162 11AB;
+D32D;D32D;1111 1162 11AC;D32D;1111 1162 11AC;
+D32E;D32E;1111 1162 11AD;D32E;1111 1162 11AD;
+D32F;D32F;1111 1162 11AE;D32F;1111 1162 11AE;
+D330;D330;1111 1162 11AF;D330;1111 1162 11AF;
+D331;D331;1111 1162 11B0;D331;1111 1162 11B0;
+D332;D332;1111 1162 11B1;D332;1111 1162 11B1;
+D333;D333;1111 1162 11B2;D333;1111 1162 11B2;
+D334;D334;1111 1162 11B3;D334;1111 1162 11B3;
+D335;D335;1111 1162 11B4;D335;1111 1162 11B4;
+D336;D336;1111 1162 11B5;D336;1111 1162 11B5;
+D337;D337;1111 1162 11B6;D337;1111 1162 11B6;
+D338;D338;1111 1162 11B7;D338;1111 1162 11B7;
+D339;D339;1111 1162 11B8;D339;1111 1162 11B8;
+D33A;D33A;1111 1162 11B9;D33A;1111 1162 11B9;
+D33B;D33B;1111 1162 11BA;D33B;1111 1162 11BA;
+D33C;D33C;1111 1162 11BB;D33C;1111 1162 11BB;
+D33D;D33D;1111 1162 11BC;D33D;1111 1162 11BC;
+D33E;D33E;1111 1162 11BD;D33E;1111 1162 11BD;
+D33F;D33F;1111 1162 11BE;D33F;1111 1162 11BE;
+D340;D340;1111 1162 11BF;D340;1111 1162 11BF;
+D341;D341;1111 1162 11C0;D341;1111 1162 11C0;
+D342;D342;1111 1162 11C1;D342;1111 1162 11C1;
+D343;D343;1111 1162 11C2;D343;1111 1162 11C2;
+D344;D344;1111 1163;D344;1111 1163;
+D345;D345;1111 1163 11A8;D345;1111 1163 11A8;
+D346;D346;1111 1163 11A9;D346;1111 1163 11A9;
+D347;D347;1111 1163 11AA;D347;1111 1163 11AA;
+D348;D348;1111 1163 11AB;D348;1111 1163 11AB;
+D349;D349;1111 1163 11AC;D349;1111 1163 11AC;
+D34A;D34A;1111 1163 11AD;D34A;1111 1163 11AD;
+D34B;D34B;1111 1163 11AE;D34B;1111 1163 11AE;
+D34C;D34C;1111 1163 11AF;D34C;1111 1163 11AF;
+D34D;D34D;1111 1163 11B0;D34D;1111 1163 11B0;
+D34E;D34E;1111 1163 11B1;D34E;1111 1163 11B1;
+D34F;D34F;1111 1163 11B2;D34F;1111 1163 11B2;
+D350;D350;1111 1163 11B3;D350;1111 1163 11B3;
+D351;D351;1111 1163 11B4;D351;1111 1163 11B4;
+D352;D352;1111 1163 11B5;D352;1111 1163 11B5;
+D353;D353;1111 1163 11B6;D353;1111 1163 11B6;
+D354;D354;1111 1163 11B7;D354;1111 1163 11B7;
+D355;D355;1111 1163 11B8;D355;1111 1163 11B8;
+D356;D356;1111 1163 11B9;D356;1111 1163 11B9;
+D357;D357;1111 1163 11BA;D357;1111 1163 11BA;
+D358;D358;1111 1163 11BB;D358;1111 1163 11BB;
+D359;D359;1111 1163 11BC;D359;1111 1163 11BC;
+D35A;D35A;1111 1163 11BD;D35A;1111 1163 11BD;
+D35B;D35B;1111 1163 11BE;D35B;1111 1163 11BE;
+D35C;D35C;1111 1163 11BF;D35C;1111 1163 11BF;
+D35D;D35D;1111 1163 11C0;D35D;1111 1163 11C0;
+D35E;D35E;1111 1163 11C1;D35E;1111 1163 11C1;
+D35F;D35F;1111 1163 11C2;D35F;1111 1163 11C2;
+D360;D360;1111 1164;D360;1111 1164;
+D361;D361;1111 1164 11A8;D361;1111 1164 11A8;
+D362;D362;1111 1164 11A9;D362;1111 1164 11A9;
+D363;D363;1111 1164 11AA;D363;1111 1164 11AA;
+D364;D364;1111 1164 11AB;D364;1111 1164 11AB;
+D365;D365;1111 1164 11AC;D365;1111 1164 11AC;
+D366;D366;1111 1164 11AD;D366;1111 1164 11AD;
+D367;D367;1111 1164 11AE;D367;1111 1164 11AE;
+D368;D368;1111 1164 11AF;D368;1111 1164 11AF;
+D369;D369;1111 1164 11B0;D369;1111 1164 11B0;
+D36A;D36A;1111 1164 11B1;D36A;1111 1164 11B1;
+D36B;D36B;1111 1164 11B2;D36B;1111 1164 11B2;
+D36C;D36C;1111 1164 11B3;D36C;1111 1164 11B3;
+D36D;D36D;1111 1164 11B4;D36D;1111 1164 11B4;
+D36E;D36E;1111 1164 11B5;D36E;1111 1164 11B5;
+D36F;D36F;1111 1164 11B6;D36F;1111 1164 11B6;
+D370;D370;1111 1164 11B7;D370;1111 1164 11B7;
+D371;D371;1111 1164 11B8;D371;1111 1164 11B8;
+D372;D372;1111 1164 11B9;D372;1111 1164 11B9;
+D373;D373;1111 1164 11BA;D373;1111 1164 11BA;
+D374;D374;1111 1164 11BB;D374;1111 1164 11BB;
+D375;D375;1111 1164 11BC;D375;1111 1164 11BC;
+D376;D376;1111 1164 11BD;D376;1111 1164 11BD;
+D377;D377;1111 1164 11BE;D377;1111 1164 11BE;
+D378;D378;1111 1164 11BF;D378;1111 1164 11BF;
+D379;D379;1111 1164 11C0;D379;1111 1164 11C0;
+D37A;D37A;1111 1164 11C1;D37A;1111 1164 11C1;
+D37B;D37B;1111 1164 11C2;D37B;1111 1164 11C2;
+D37C;D37C;1111 1165;D37C;1111 1165;
+D37D;D37D;1111 1165 11A8;D37D;1111 1165 11A8;
+D37E;D37E;1111 1165 11A9;D37E;1111 1165 11A9;
+D37F;D37F;1111 1165 11AA;D37F;1111 1165 11AA;
+D380;D380;1111 1165 11AB;D380;1111 1165 11AB;
+D381;D381;1111 1165 11AC;D381;1111 1165 11AC;
+D382;D382;1111 1165 11AD;D382;1111 1165 11AD;
+D383;D383;1111 1165 11AE;D383;1111 1165 11AE;
+D384;D384;1111 1165 11AF;D384;1111 1165 11AF;
+D385;D385;1111 1165 11B0;D385;1111 1165 11B0;
+D386;D386;1111 1165 11B1;D386;1111 1165 11B1;
+D387;D387;1111 1165 11B2;D387;1111 1165 11B2;
+D388;D388;1111 1165 11B3;D388;1111 1165 11B3;
+D389;D389;1111 1165 11B4;D389;1111 1165 11B4;
+D38A;D38A;1111 1165 11B5;D38A;1111 1165 11B5;
+D38B;D38B;1111 1165 11B6;D38B;1111 1165 11B6;
+D38C;D38C;1111 1165 11B7;D38C;1111 1165 11B7;
+D38D;D38D;1111 1165 11B8;D38D;1111 1165 11B8;
+D38E;D38E;1111 1165 11B9;D38E;1111 1165 11B9;
+D38F;D38F;1111 1165 11BA;D38F;1111 1165 11BA;
+D390;D390;1111 1165 11BB;D390;1111 1165 11BB;
+D391;D391;1111 1165 11BC;D391;1111 1165 11BC;
+D392;D392;1111 1165 11BD;D392;1111 1165 11BD;
+D393;D393;1111 1165 11BE;D393;1111 1165 11BE;
+D394;D394;1111 1165 11BF;D394;1111 1165 11BF;
+D395;D395;1111 1165 11C0;D395;1111 1165 11C0;
+D396;D396;1111 1165 11C1;D396;1111 1165 11C1;
+D397;D397;1111 1165 11C2;D397;1111 1165 11C2;
+D398;D398;1111 1166;D398;1111 1166;
+D399;D399;1111 1166 11A8;D399;1111 1166 11A8;
+D39A;D39A;1111 1166 11A9;D39A;1111 1166 11A9;
+D39B;D39B;1111 1166 11AA;D39B;1111 1166 11AA;
+D39C;D39C;1111 1166 11AB;D39C;1111 1166 11AB;
+D39D;D39D;1111 1166 11AC;D39D;1111 1166 11AC;
+D39E;D39E;1111 1166 11AD;D39E;1111 1166 11AD;
+D39F;D39F;1111 1166 11AE;D39F;1111 1166 11AE;
+D3A0;D3A0;1111 1166 11AF;D3A0;1111 1166 11AF;
+D3A1;D3A1;1111 1166 11B0;D3A1;1111 1166 11B0;
+D3A2;D3A2;1111 1166 11B1;D3A2;1111 1166 11B1;
+D3A3;D3A3;1111 1166 11B2;D3A3;1111 1166 11B2;
+D3A4;D3A4;1111 1166 11B3;D3A4;1111 1166 11B3;
+D3A5;D3A5;1111 1166 11B4;D3A5;1111 1166 11B4;
+D3A6;D3A6;1111 1166 11B5;D3A6;1111 1166 11B5;
+D3A7;D3A7;1111 1166 11B6;D3A7;1111 1166 11B6;
+D3A8;D3A8;1111 1166 11B7;D3A8;1111 1166 11B7;
+D3A9;D3A9;1111 1166 11B8;D3A9;1111 1166 11B8;
+D3AA;D3AA;1111 1166 11B9;D3AA;1111 1166 11B9;
+D3AB;D3AB;1111 1166 11BA;D3AB;1111 1166 11BA;
+D3AC;D3AC;1111 1166 11BB;D3AC;1111 1166 11BB;
+D3AD;D3AD;1111 1166 11BC;D3AD;1111 1166 11BC;
+D3AE;D3AE;1111 1166 11BD;D3AE;1111 1166 11BD;
+D3AF;D3AF;1111 1166 11BE;D3AF;1111 1166 11BE;
+D3B0;D3B0;1111 1166 11BF;D3B0;1111 1166 11BF;
+D3B1;D3B1;1111 1166 11C0;D3B1;1111 1166 11C0;
+D3B2;D3B2;1111 1166 11C1;D3B2;1111 1166 11C1;
+D3B3;D3B3;1111 1166 11C2;D3B3;1111 1166 11C2;
+D3B4;D3B4;1111 1167;D3B4;1111 1167;
+D3B5;D3B5;1111 1167 11A8;D3B5;1111 1167 11A8;
+D3B6;D3B6;1111 1167 11A9;D3B6;1111 1167 11A9;
+D3B7;D3B7;1111 1167 11AA;D3B7;1111 1167 11AA;
+D3B8;D3B8;1111 1167 11AB;D3B8;1111 1167 11AB;
+D3B9;D3B9;1111 1167 11AC;D3B9;1111 1167 11AC;
+D3BA;D3BA;1111 1167 11AD;D3BA;1111 1167 11AD;
+D3BB;D3BB;1111 1167 11AE;D3BB;1111 1167 11AE;
+D3BC;D3BC;1111 1167 11AF;D3BC;1111 1167 11AF;
+D3BD;D3BD;1111 1167 11B0;D3BD;1111 1167 11B0;
+D3BE;D3BE;1111 1167 11B1;D3BE;1111 1167 11B1;
+D3BF;D3BF;1111 1167 11B2;D3BF;1111 1167 11B2;
+D3C0;D3C0;1111 1167 11B3;D3C0;1111 1167 11B3;
+D3C1;D3C1;1111 1167 11B4;D3C1;1111 1167 11B4;
+D3C2;D3C2;1111 1167 11B5;D3C2;1111 1167 11B5;
+D3C3;D3C3;1111 1167 11B6;D3C3;1111 1167 11B6;
+D3C4;D3C4;1111 1167 11B7;D3C4;1111 1167 11B7;
+D3C5;D3C5;1111 1167 11B8;D3C5;1111 1167 11B8;
+D3C6;D3C6;1111 1167 11B9;D3C6;1111 1167 11B9;
+D3C7;D3C7;1111 1167 11BA;D3C7;1111 1167 11BA;
+D3C8;D3C8;1111 1167 11BB;D3C8;1111 1167 11BB;
+D3C9;D3C9;1111 1167 11BC;D3C9;1111 1167 11BC;
+D3CA;D3CA;1111 1167 11BD;D3CA;1111 1167 11BD;
+D3CB;D3CB;1111 1167 11BE;D3CB;1111 1167 11BE;
+D3CC;D3CC;1111 1167 11BF;D3CC;1111 1167 11BF;
+D3CD;D3CD;1111 1167 11C0;D3CD;1111 1167 11C0;
+D3CE;D3CE;1111 1167 11C1;D3CE;1111 1167 11C1;
+D3CF;D3CF;1111 1167 11C2;D3CF;1111 1167 11C2;
+D3D0;D3D0;1111 1168;D3D0;1111 1168;
+D3D1;D3D1;1111 1168 11A8;D3D1;1111 1168 11A8;
+D3D2;D3D2;1111 1168 11A9;D3D2;1111 1168 11A9;
+D3D3;D3D3;1111 1168 11AA;D3D3;1111 1168 11AA;
+D3D4;D3D4;1111 1168 11AB;D3D4;1111 1168 11AB;
+D3D5;D3D5;1111 1168 11AC;D3D5;1111 1168 11AC;
+D3D6;D3D6;1111 1168 11AD;D3D6;1111 1168 11AD;
+D3D7;D3D7;1111 1168 11AE;D3D7;1111 1168 11AE;
+D3D8;D3D8;1111 1168 11AF;D3D8;1111 1168 11AF;
+D3D9;D3D9;1111 1168 11B0;D3D9;1111 1168 11B0;
+D3DA;D3DA;1111 1168 11B1;D3DA;1111 1168 11B1;
+D3DB;D3DB;1111 1168 11B2;D3DB;1111 1168 11B2;
+D3DC;D3DC;1111 1168 11B3;D3DC;1111 1168 11B3;
+D3DD;D3DD;1111 1168 11B4;D3DD;1111 1168 11B4;
+D3DE;D3DE;1111 1168 11B5;D3DE;1111 1168 11B5;
+D3DF;D3DF;1111 1168 11B6;D3DF;1111 1168 11B6;
+D3E0;D3E0;1111 1168 11B7;D3E0;1111 1168 11B7;
+D3E1;D3E1;1111 1168 11B8;D3E1;1111 1168 11B8;
+D3E2;D3E2;1111 1168 11B9;D3E2;1111 1168 11B9;
+D3E3;D3E3;1111 1168 11BA;D3E3;1111 1168 11BA;
+D3E4;D3E4;1111 1168 11BB;D3E4;1111 1168 11BB;
+D3E5;D3E5;1111 1168 11BC;D3E5;1111 1168 11BC;
+D3E6;D3E6;1111 1168 11BD;D3E6;1111 1168 11BD;
+D3E7;D3E7;1111 1168 11BE;D3E7;1111 1168 11BE;
+D3E8;D3E8;1111 1168 11BF;D3E8;1111 1168 11BF;
+D3E9;D3E9;1111 1168 11C0;D3E9;1111 1168 11C0;
+D3EA;D3EA;1111 1168 11C1;D3EA;1111 1168 11C1;
+D3EB;D3EB;1111 1168 11C2;D3EB;1111 1168 11C2;
+D3EC;D3EC;1111 1169;D3EC;1111 1169;
+D3ED;D3ED;1111 1169 11A8;D3ED;1111 1169 11A8;
+D3EE;D3EE;1111 1169 11A9;D3EE;1111 1169 11A9;
+D3EF;D3EF;1111 1169 11AA;D3EF;1111 1169 11AA;
+D3F0;D3F0;1111 1169 11AB;D3F0;1111 1169 11AB;
+D3F1;D3F1;1111 1169 11AC;D3F1;1111 1169 11AC;
+D3F2;D3F2;1111 1169 11AD;D3F2;1111 1169 11AD;
+D3F3;D3F3;1111 1169 11AE;D3F3;1111 1169 11AE;
+D3F4;D3F4;1111 1169 11AF;D3F4;1111 1169 11AF;
+D3F5;D3F5;1111 1169 11B0;D3F5;1111 1169 11B0;
+D3F6;D3F6;1111 1169 11B1;D3F6;1111 1169 11B1;
+D3F7;D3F7;1111 1169 11B2;D3F7;1111 1169 11B2;
+D3F8;D3F8;1111 1169 11B3;D3F8;1111 1169 11B3;
+D3F9;D3F9;1111 1169 11B4;D3F9;1111 1169 11B4;
+D3FA;D3FA;1111 1169 11B5;D3FA;1111 1169 11B5;
+D3FB;D3FB;1111 1169 11B6;D3FB;1111 1169 11B6;
+D3FC;D3FC;1111 1169 11B7;D3FC;1111 1169 11B7;
+D3FD;D3FD;1111 1169 11B8;D3FD;1111 1169 11B8;
+D3FE;D3FE;1111 1169 11B9;D3FE;1111 1169 11B9;
+D3FF;D3FF;1111 1169 11BA;D3FF;1111 1169 11BA;
+D400;D400;1111 1169 11BB;D400;1111 1169 11BB;
+D401;D401;1111 1169 11BC;D401;1111 1169 11BC;
+D402;D402;1111 1169 11BD;D402;1111 1169 11BD;
+D403;D403;1111 1169 11BE;D403;1111 1169 11BE;
+D404;D404;1111 1169 11BF;D404;1111 1169 11BF;
+D405;D405;1111 1169 11C0;D405;1111 1169 11C0;
+D406;D406;1111 1169 11C1;D406;1111 1169 11C1;
+D407;D407;1111 1169 11C2;D407;1111 1169 11C2;
+D408;D408;1111 116A;D408;1111 116A;
+D409;D409;1111 116A 11A8;D409;1111 116A 11A8;
+D40A;D40A;1111 116A 11A9;D40A;1111 116A 11A9;
+D40B;D40B;1111 116A 11AA;D40B;1111 116A 11AA;
+D40C;D40C;1111 116A 11AB;D40C;1111 116A 11AB;
+D40D;D40D;1111 116A 11AC;D40D;1111 116A 11AC;
+D40E;D40E;1111 116A 11AD;D40E;1111 116A 11AD;
+D40F;D40F;1111 116A 11AE;D40F;1111 116A 11AE;
+D410;D410;1111 116A 11AF;D410;1111 116A 11AF;
+D411;D411;1111 116A 11B0;D411;1111 116A 11B0;
+D412;D412;1111 116A 11B1;D412;1111 116A 11B1;
+D413;D413;1111 116A 11B2;D413;1111 116A 11B2;
+D414;D414;1111 116A 11B3;D414;1111 116A 11B3;
+D415;D415;1111 116A 11B4;D415;1111 116A 11B4;
+D416;D416;1111 116A 11B5;D416;1111 116A 11B5;
+D417;D417;1111 116A 11B6;D417;1111 116A 11B6;
+D418;D418;1111 116A 11B7;D418;1111 116A 11B7;
+D419;D419;1111 116A 11B8;D419;1111 116A 11B8;
+D41A;D41A;1111 116A 11B9;D41A;1111 116A 11B9;
+D41B;D41B;1111 116A 11BA;D41B;1111 116A 11BA;
+D41C;D41C;1111 116A 11BB;D41C;1111 116A 11BB;
+D41D;D41D;1111 116A 11BC;D41D;1111 116A 11BC;
+D41E;D41E;1111 116A 11BD;D41E;1111 116A 11BD;
+D41F;D41F;1111 116A 11BE;D41F;1111 116A 11BE;
+D420;D420;1111 116A 11BF;D420;1111 116A 11BF;
+D421;D421;1111 116A 11C0;D421;1111 116A 11C0;
+D422;D422;1111 116A 11C1;D422;1111 116A 11C1;
+D423;D423;1111 116A 11C2;D423;1111 116A 11C2;
+D424;D424;1111 116B;D424;1111 116B;
+D425;D425;1111 116B 11A8;D425;1111 116B 11A8;
+D426;D426;1111 116B 11A9;D426;1111 116B 11A9;
+D427;D427;1111 116B 11AA;D427;1111 116B 11AA;
+D428;D428;1111 116B 11AB;D428;1111 116B 11AB;
+D429;D429;1111 116B 11AC;D429;1111 116B 11AC;
+D42A;D42A;1111 116B 11AD;D42A;1111 116B 11AD;
+D42B;D42B;1111 116B 11AE;D42B;1111 116B 11AE;
+D42C;D42C;1111 116B 11AF;D42C;1111 116B 11AF;
+D42D;D42D;1111 116B 11B0;D42D;1111 116B 11B0;
+D42E;D42E;1111 116B 11B1;D42E;1111 116B 11B1;
+D42F;D42F;1111 116B 11B2;D42F;1111 116B 11B2;
+D430;D430;1111 116B 11B3;D430;1111 116B 11B3;
+D431;D431;1111 116B 11B4;D431;1111 116B 11B4;
+D432;D432;1111 116B 11B5;D432;1111 116B 11B5;
+D433;D433;1111 116B 11B6;D433;1111 116B 11B6;
+D434;D434;1111 116B 11B7;D434;1111 116B 11B7;
+D435;D435;1111 116B 11B8;D435;1111 116B 11B8;
+D436;D436;1111 116B 11B9;D436;1111 116B 11B9;
+D437;D437;1111 116B 11BA;D437;1111 116B 11BA;
+D438;D438;1111 116B 11BB;D438;1111 116B 11BB;
+D439;D439;1111 116B 11BC;D439;1111 116B 11BC;
+D43A;D43A;1111 116B 11BD;D43A;1111 116B 11BD;
+D43B;D43B;1111 116B 11BE;D43B;1111 116B 11BE;
+D43C;D43C;1111 116B 11BF;D43C;1111 116B 11BF;
+D43D;D43D;1111 116B 11C0;D43D;1111 116B 11C0;
+D43E;D43E;1111 116B 11C1;D43E;1111 116B 11C1;
+D43F;D43F;1111 116B 11C2;D43F;1111 116B 11C2;
+D440;D440;1111 116C;D440;1111 116C;
+D441;D441;1111 116C 11A8;D441;1111 116C 11A8;
+D442;D442;1111 116C 11A9;D442;1111 116C 11A9;
+D443;D443;1111 116C 11AA;D443;1111 116C 11AA;
+D444;D444;1111 116C 11AB;D444;1111 116C 11AB;
+D445;D445;1111 116C 11AC;D445;1111 116C 11AC;
+D446;D446;1111 116C 11AD;D446;1111 116C 11AD;
+D447;D447;1111 116C 11AE;D447;1111 116C 11AE;
+D448;D448;1111 116C 11AF;D448;1111 116C 11AF;
+D449;D449;1111 116C 11B0;D449;1111 116C 11B0;
+D44A;D44A;1111 116C 11B1;D44A;1111 116C 11B1;
+D44B;D44B;1111 116C 11B2;D44B;1111 116C 11B2;
+D44C;D44C;1111 116C 11B3;D44C;1111 116C 11B3;
+D44D;D44D;1111 116C 11B4;D44D;1111 116C 11B4;
+D44E;D44E;1111 116C 11B5;D44E;1111 116C 11B5;
+D44F;D44F;1111 116C 11B6;D44F;1111 116C 11B6;
+D450;D450;1111 116C 11B7;D450;1111 116C 11B7;
+D451;D451;1111 116C 11B8;D451;1111 116C 11B8;
+D452;D452;1111 116C 11B9;D452;1111 116C 11B9;
+D453;D453;1111 116C 11BA;D453;1111 116C 11BA;
+D454;D454;1111 116C 11BB;D454;1111 116C 11BB;
+D455;D455;1111 116C 11BC;D455;1111 116C 11BC;
+D456;D456;1111 116C 11BD;D456;1111 116C 11BD;
+D457;D457;1111 116C 11BE;D457;1111 116C 11BE;
+D458;D458;1111 116C 11BF;D458;1111 116C 11BF;
+D459;D459;1111 116C 11C0;D459;1111 116C 11C0;
+D45A;D45A;1111 116C 11C1;D45A;1111 116C 11C1;
+D45B;D45B;1111 116C 11C2;D45B;1111 116C 11C2;
+D45C;D45C;1111 116D;D45C;1111 116D;
+D45D;D45D;1111 116D 11A8;D45D;1111 116D 11A8;
+D45E;D45E;1111 116D 11A9;D45E;1111 116D 11A9;
+D45F;D45F;1111 116D 11AA;D45F;1111 116D 11AA;
+D460;D460;1111 116D 11AB;D460;1111 116D 11AB;
+D461;D461;1111 116D 11AC;D461;1111 116D 11AC;
+D462;D462;1111 116D 11AD;D462;1111 116D 11AD;
+D463;D463;1111 116D 11AE;D463;1111 116D 11AE;
+D464;D464;1111 116D 11AF;D464;1111 116D 11AF;
+D465;D465;1111 116D 11B0;D465;1111 116D 11B0;
+D466;D466;1111 116D 11B1;D466;1111 116D 11B1;
+D467;D467;1111 116D 11B2;D467;1111 116D 11B2;
+D468;D468;1111 116D 11B3;D468;1111 116D 11B3;
+D469;D469;1111 116D 11B4;D469;1111 116D 11B4;
+D46A;D46A;1111 116D 11B5;D46A;1111 116D 11B5;
+D46B;D46B;1111 116D 11B6;D46B;1111 116D 11B6;
+D46C;D46C;1111 116D 11B7;D46C;1111 116D 11B7;
+D46D;D46D;1111 116D 11B8;D46D;1111 116D 11B8;
+D46E;D46E;1111 116D 11B9;D46E;1111 116D 11B9;
+D46F;D46F;1111 116D 11BA;D46F;1111 116D 11BA;
+D470;D470;1111 116D 11BB;D470;1111 116D 11BB;
+D471;D471;1111 116D 11BC;D471;1111 116D 11BC;
+D472;D472;1111 116D 11BD;D472;1111 116D 11BD;
+D473;D473;1111 116D 11BE;D473;1111 116D 11BE;
+D474;D474;1111 116D 11BF;D474;1111 116D 11BF;
+D475;D475;1111 116D 11C0;D475;1111 116D 11C0;
+D476;D476;1111 116D 11C1;D476;1111 116D 11C1;
+D477;D477;1111 116D 11C2;D477;1111 116D 11C2;
+D478;D478;1111 116E;D478;1111 116E;
+D479;D479;1111 116E 11A8;D479;1111 116E 11A8;
+D47A;D47A;1111 116E 11A9;D47A;1111 116E 11A9;
+D47B;D47B;1111 116E 11AA;D47B;1111 116E 11AA;
+D47C;D47C;1111 116E 11AB;D47C;1111 116E 11AB;
+D47D;D47D;1111 116E 11AC;D47D;1111 116E 11AC;
+D47E;D47E;1111 116E 11AD;D47E;1111 116E 11AD;
+D47F;D47F;1111 116E 11AE;D47F;1111 116E 11AE;
+D480;D480;1111 116E 11AF;D480;1111 116E 11AF;
+D481;D481;1111 116E 11B0;D481;1111 116E 11B0;
+D482;D482;1111 116E 11B1;D482;1111 116E 11B1;
+D483;D483;1111 116E 11B2;D483;1111 116E 11B2;
+D484;D484;1111 116E 11B3;D484;1111 116E 11B3;
+D485;D485;1111 116E 11B4;D485;1111 116E 11B4;
+D486;D486;1111 116E 11B5;D486;1111 116E 11B5;
+D487;D487;1111 116E 11B6;D487;1111 116E 11B6;
+D488;D488;1111 116E 11B7;D488;1111 116E 11B7;
+D489;D489;1111 116E 11B8;D489;1111 116E 11B8;
+D48A;D48A;1111 116E 11B9;D48A;1111 116E 11B9;
+D48B;D48B;1111 116E 11BA;D48B;1111 116E 11BA;
+D48C;D48C;1111 116E 11BB;D48C;1111 116E 11BB;
+D48D;D48D;1111 116E 11BC;D48D;1111 116E 11BC;
+D48E;D48E;1111 116E 11BD;D48E;1111 116E 11BD;
+D48F;D48F;1111 116E 11BE;D48F;1111 116E 11BE;
+D490;D490;1111 116E 11BF;D490;1111 116E 11BF;
+D491;D491;1111 116E 11C0;D491;1111 116E 11C0;
+D492;D492;1111 116E 11C1;D492;1111 116E 11C1;
+D493;D493;1111 116E 11C2;D493;1111 116E 11C2;
+D494;D494;1111 116F;D494;1111 116F;
+D495;D495;1111 116F 11A8;D495;1111 116F 11A8;
+D496;D496;1111 116F 11A9;D496;1111 116F 11A9;
+D497;D497;1111 116F 11AA;D497;1111 116F 11AA;
+D498;D498;1111 116F 11AB;D498;1111 116F 11AB;
+D499;D499;1111 116F 11AC;D499;1111 116F 11AC;
+D49A;D49A;1111 116F 11AD;D49A;1111 116F 11AD;
+D49B;D49B;1111 116F 11AE;D49B;1111 116F 11AE;
+D49C;D49C;1111 116F 11AF;D49C;1111 116F 11AF;
+D49D;D49D;1111 116F 11B0;D49D;1111 116F 11B0;
+D49E;D49E;1111 116F 11B1;D49E;1111 116F 11B1;
+D49F;D49F;1111 116F 11B2;D49F;1111 116F 11B2;
+D4A0;D4A0;1111 116F 11B3;D4A0;1111 116F 11B3;
+D4A1;D4A1;1111 116F 11B4;D4A1;1111 116F 11B4;
+D4A2;D4A2;1111 116F 11B5;D4A2;1111 116F 11B5;
+D4A3;D4A3;1111 116F 11B6;D4A3;1111 116F 11B6;
+D4A4;D4A4;1111 116F 11B7;D4A4;1111 116F 11B7;
+D4A5;D4A5;1111 116F 11B8;D4A5;1111 116F 11B8;
+D4A6;D4A6;1111 116F 11B9;D4A6;1111 116F 11B9;
+D4A7;D4A7;1111 116F 11BA;D4A7;1111 116F 11BA;
+D4A8;D4A8;1111 116F 11BB;D4A8;1111 116F 11BB;
+D4A9;D4A9;1111 116F 11BC;D4A9;1111 116F 11BC;
+D4AA;D4AA;1111 116F 11BD;D4AA;1111 116F 11BD;
+D4AB;D4AB;1111 116F 11BE;D4AB;1111 116F 11BE;
+D4AC;D4AC;1111 116F 11BF;D4AC;1111 116F 11BF;
+D4AD;D4AD;1111 116F 11C0;D4AD;1111 116F 11C0;
+D4AE;D4AE;1111 116F 11C1;D4AE;1111 116F 11C1;
+D4AF;D4AF;1111 116F 11C2;D4AF;1111 116F 11C2;
+D4B0;D4B0;1111 1170;D4B0;1111 1170;
+D4B1;D4B1;1111 1170 11A8;D4B1;1111 1170 11A8;
+D4B2;D4B2;1111 1170 11A9;D4B2;1111 1170 11A9;
+D4B3;D4B3;1111 1170 11AA;D4B3;1111 1170 11AA;
+D4B4;D4B4;1111 1170 11AB;D4B4;1111 1170 11AB;
+D4B5;D4B5;1111 1170 11AC;D4B5;1111 1170 11AC;
+D4B6;D4B6;1111 1170 11AD;D4B6;1111 1170 11AD;
+D4B7;D4B7;1111 1170 11AE;D4B7;1111 1170 11AE;
+D4B8;D4B8;1111 1170 11AF;D4B8;1111 1170 11AF;
+D4B9;D4B9;1111 1170 11B0;D4B9;1111 1170 11B0;
+D4BA;D4BA;1111 1170 11B1;D4BA;1111 1170 11B1;
+D4BB;D4BB;1111 1170 11B2;D4BB;1111 1170 11B2;
+D4BC;D4BC;1111 1170 11B3;D4BC;1111 1170 11B3;
+D4BD;D4BD;1111 1170 11B4;D4BD;1111 1170 11B4;
+D4BE;D4BE;1111 1170 11B5;D4BE;1111 1170 11B5;
+D4BF;D4BF;1111 1170 11B6;D4BF;1111 1170 11B6;
+D4C0;D4C0;1111 1170 11B7;D4C0;1111 1170 11B7;
+D4C1;D4C1;1111 1170 11B8;D4C1;1111 1170 11B8;
+D4C2;D4C2;1111 1170 11B9;D4C2;1111 1170 11B9;
+D4C3;D4C3;1111 1170 11BA;D4C3;1111 1170 11BA;
+D4C4;D4C4;1111 1170 11BB;D4C4;1111 1170 11BB;
+D4C5;D4C5;1111 1170 11BC;D4C5;1111 1170 11BC;
+D4C6;D4C6;1111 1170 11BD;D4C6;1111 1170 11BD;
+D4C7;D4C7;1111 1170 11BE;D4C7;1111 1170 11BE;
+D4C8;D4C8;1111 1170 11BF;D4C8;1111 1170 11BF;
+D4C9;D4C9;1111 1170 11C0;D4C9;1111 1170 11C0;
+D4CA;D4CA;1111 1170 11C1;D4CA;1111 1170 11C1;
+D4CB;D4CB;1111 1170 11C2;D4CB;1111 1170 11C2;
+D4CC;D4CC;1111 1171;D4CC;1111 1171;
+D4CD;D4CD;1111 1171 11A8;D4CD;1111 1171 11A8;
+D4CE;D4CE;1111 1171 11A9;D4CE;1111 1171 11A9;
+D4CF;D4CF;1111 1171 11AA;D4CF;1111 1171 11AA;
+D4D0;D4D0;1111 1171 11AB;D4D0;1111 1171 11AB;
+D4D1;D4D1;1111 1171 11AC;D4D1;1111 1171 11AC;
+D4D2;D4D2;1111 1171 11AD;D4D2;1111 1171 11AD;
+D4D3;D4D3;1111 1171 11AE;D4D3;1111 1171 11AE;
+D4D4;D4D4;1111 1171 11AF;D4D4;1111 1171 11AF;
+D4D5;D4D5;1111 1171 11B0;D4D5;1111 1171 11B0;
+D4D6;D4D6;1111 1171 11B1;D4D6;1111 1171 11B1;
+D4D7;D4D7;1111 1171 11B2;D4D7;1111 1171 11B2;
+D4D8;D4D8;1111 1171 11B3;D4D8;1111 1171 11B3;
+D4D9;D4D9;1111 1171 11B4;D4D9;1111 1171 11B4;
+D4DA;D4DA;1111 1171 11B5;D4DA;1111 1171 11B5;
+D4DB;D4DB;1111 1171 11B6;D4DB;1111 1171 11B6;
+D4DC;D4DC;1111 1171 11B7;D4DC;1111 1171 11B7;
+D4DD;D4DD;1111 1171 11B8;D4DD;1111 1171 11B8;
+D4DE;D4DE;1111 1171 11B9;D4DE;1111 1171 11B9;
+D4DF;D4DF;1111 1171 11BA;D4DF;1111 1171 11BA;
+D4E0;D4E0;1111 1171 11BB;D4E0;1111 1171 11BB;
+D4E1;D4E1;1111 1171 11BC;D4E1;1111 1171 11BC;
+D4E2;D4E2;1111 1171 11BD;D4E2;1111 1171 11BD;
+D4E3;D4E3;1111 1171 11BE;D4E3;1111 1171 11BE;
+D4E4;D4E4;1111 1171 11BF;D4E4;1111 1171 11BF;
+D4E5;D4E5;1111 1171 11C0;D4E5;1111 1171 11C0;
+D4E6;D4E6;1111 1171 11C1;D4E6;1111 1171 11C1;
+D4E7;D4E7;1111 1171 11C2;D4E7;1111 1171 11C2;
+D4E8;D4E8;1111 1172;D4E8;1111 1172;
+D4E9;D4E9;1111 1172 11A8;D4E9;1111 1172 11A8;
+D4EA;D4EA;1111 1172 11A9;D4EA;1111 1172 11A9;
+D4EB;D4EB;1111 1172 11AA;D4EB;1111 1172 11AA;
+D4EC;D4EC;1111 1172 11AB;D4EC;1111 1172 11AB;
+D4ED;D4ED;1111 1172 11AC;D4ED;1111 1172 11AC;
+D4EE;D4EE;1111 1172 11AD;D4EE;1111 1172 11AD;
+D4EF;D4EF;1111 1172 11AE;D4EF;1111 1172 11AE;
+D4F0;D4F0;1111 1172 11AF;D4F0;1111 1172 11AF;
+D4F1;D4F1;1111 1172 11B0;D4F1;1111 1172 11B0;
+D4F2;D4F2;1111 1172 11B1;D4F2;1111 1172 11B1;
+D4F3;D4F3;1111 1172 11B2;D4F3;1111 1172 11B2;
+D4F4;D4F4;1111 1172 11B3;D4F4;1111 1172 11B3;
+D4F5;D4F5;1111 1172 11B4;D4F5;1111 1172 11B4;
+D4F6;D4F6;1111 1172 11B5;D4F6;1111 1172 11B5;
+D4F7;D4F7;1111 1172 11B6;D4F7;1111 1172 11B6;
+D4F8;D4F8;1111 1172 11B7;D4F8;1111 1172 11B7;
+D4F9;D4F9;1111 1172 11B8;D4F9;1111 1172 11B8;
+D4FA;D4FA;1111 1172 11B9;D4FA;1111 1172 11B9;
+D4FB;D4FB;1111 1172 11BA;D4FB;1111 1172 11BA;
+D4FC;D4FC;1111 1172 11BB;D4FC;1111 1172 11BB;
+D4FD;D4FD;1111 1172 11BC;D4FD;1111 1172 11BC;
+D4FE;D4FE;1111 1172 11BD;D4FE;1111 1172 11BD;
+D4FF;D4FF;1111 1172 11BE;D4FF;1111 1172 11BE;
+D500;D500;1111 1172 11BF;D500;1111 1172 11BF;
+D501;D501;1111 1172 11C0;D501;1111 1172 11C0;
+D502;D502;1111 1172 11C1;D502;1111 1172 11C1;
+D503;D503;1111 1172 11C2;D503;1111 1172 11C2;
+D504;D504;1111 1173;D504;1111 1173;
+D505;D505;1111 1173 11A8;D505;1111 1173 11A8;
+D506;D506;1111 1173 11A9;D506;1111 1173 11A9;
+D507;D507;1111 1173 11AA;D507;1111 1173 11AA;
+D508;D508;1111 1173 11AB;D508;1111 1173 11AB;
+D509;D509;1111 1173 11AC;D509;1111 1173 11AC;
+D50A;D50A;1111 1173 11AD;D50A;1111 1173 11AD;
+D50B;D50B;1111 1173 11AE;D50B;1111 1173 11AE;
+D50C;D50C;1111 1173 11AF;D50C;1111 1173 11AF;
+D50D;D50D;1111 1173 11B0;D50D;1111 1173 11B0;
+D50E;D50E;1111 1173 11B1;D50E;1111 1173 11B1;
+D50F;D50F;1111 1173 11B2;D50F;1111 1173 11B2;
+D510;D510;1111 1173 11B3;D510;1111 1173 11B3;
+D511;D511;1111 1173 11B4;D511;1111 1173 11B4;
+D512;D512;1111 1173 11B5;D512;1111 1173 11B5;
+D513;D513;1111 1173 11B6;D513;1111 1173 11B6;
+D514;D514;1111 1173 11B7;D514;1111 1173 11B7;
+D515;D515;1111 1173 11B8;D515;1111 1173 11B8;
+D516;D516;1111 1173 11B9;D516;1111 1173 11B9;
+D517;D517;1111 1173 11BA;D517;1111 1173 11BA;
+D518;D518;1111 1173 11BB;D518;1111 1173 11BB;
+D519;D519;1111 1173 11BC;D519;1111 1173 11BC;
+D51A;D51A;1111 1173 11BD;D51A;1111 1173 11BD;
+D51B;D51B;1111 1173 11BE;D51B;1111 1173 11BE;
+D51C;D51C;1111 1173 11BF;D51C;1111 1173 11BF;
+D51D;D51D;1111 1173 11C0;D51D;1111 1173 11C0;
+D51E;D51E;1111 1173 11C1;D51E;1111 1173 11C1;
+D51F;D51F;1111 1173 11C2;D51F;1111 1173 11C2;
+D520;D520;1111 1174;D520;1111 1174;
+D521;D521;1111 1174 11A8;D521;1111 1174 11A8;
+D522;D522;1111 1174 11A9;D522;1111 1174 11A9;
+D523;D523;1111 1174 11AA;D523;1111 1174 11AA;
+D524;D524;1111 1174 11AB;D524;1111 1174 11AB;
+D525;D525;1111 1174 11AC;D525;1111 1174 11AC;
+D526;D526;1111 1174 11AD;D526;1111 1174 11AD;
+D527;D527;1111 1174 11AE;D527;1111 1174 11AE;
+D528;D528;1111 1174 11AF;D528;1111 1174 11AF;
+D529;D529;1111 1174 11B0;D529;1111 1174 11B0;
+D52A;D52A;1111 1174 11B1;D52A;1111 1174 11B1;
+D52B;D52B;1111 1174 11B2;D52B;1111 1174 11B2;
+D52C;D52C;1111 1174 11B3;D52C;1111 1174 11B3;
+D52D;D52D;1111 1174 11B4;D52D;1111 1174 11B4;
+D52E;D52E;1111 1174 11B5;D52E;1111 1174 11B5;
+D52F;D52F;1111 1174 11B6;D52F;1111 1174 11B6;
+D530;D530;1111 1174 11B7;D530;1111 1174 11B7;
+D531;D531;1111 1174 11B8;D531;1111 1174 11B8;
+D532;D532;1111 1174 11B9;D532;1111 1174 11B9;
+D533;D533;1111 1174 11BA;D533;1111 1174 11BA;
+D534;D534;1111 1174 11BB;D534;1111 1174 11BB;
+D535;D535;1111 1174 11BC;D535;1111 1174 11BC;
+D536;D536;1111 1174 11BD;D536;1111 1174 11BD;
+D537;D537;1111 1174 11BE;D537;1111 1174 11BE;
+D538;D538;1111 1174 11BF;D538;1111 1174 11BF;
+D539;D539;1111 1174 11C0;D539;1111 1174 11C0;
+D53A;D53A;1111 1174 11C1;D53A;1111 1174 11C1;
+D53B;D53B;1111 1174 11C2;D53B;1111 1174 11C2;
+D53C;D53C;1111 1175;D53C;1111 1175;
+D53D;D53D;1111 1175 11A8;D53D;1111 1175 11A8;
+D53E;D53E;1111 1175 11A9;D53E;1111 1175 11A9;
+D53F;D53F;1111 1175 11AA;D53F;1111 1175 11AA;
+D540;D540;1111 1175 11AB;D540;1111 1175 11AB;
+D541;D541;1111 1175 11AC;D541;1111 1175 11AC;
+D542;D542;1111 1175 11AD;D542;1111 1175 11AD;
+D543;D543;1111 1175 11AE;D543;1111 1175 11AE;
+D544;D544;1111 1175 11AF;D544;1111 1175 11AF;
+D545;D545;1111 1175 11B0;D545;1111 1175 11B0;
+D546;D546;1111 1175 11B1;D546;1111 1175 11B1;
+D547;D547;1111 1175 11B2;D547;1111 1175 11B2;
+D548;D548;1111 1175 11B3;D548;1111 1175 11B3;
+D549;D549;1111 1175 11B4;D549;1111 1175 11B4;
+D54A;D54A;1111 1175 11B5;D54A;1111 1175 11B5;
+D54B;D54B;1111 1175 11B6;D54B;1111 1175 11B6;
+D54C;D54C;1111 1175 11B7;D54C;1111 1175 11B7;
+D54D;D54D;1111 1175 11B8;D54D;1111 1175 11B8;
+D54E;D54E;1111 1175 11B9;D54E;1111 1175 11B9;
+D54F;D54F;1111 1175 11BA;D54F;1111 1175 11BA;
+D550;D550;1111 1175 11BB;D550;1111 1175 11BB;
+D551;D551;1111 1175 11BC;D551;1111 1175 11BC;
+D552;D552;1111 1175 11BD;D552;1111 1175 11BD;
+D553;D553;1111 1175 11BE;D553;1111 1175 11BE;
+D554;D554;1111 1175 11BF;D554;1111 1175 11BF;
+D555;D555;1111 1175 11C0;D555;1111 1175 11C0;
+D556;D556;1111 1175 11C1;D556;1111 1175 11C1;
+D557;D557;1111 1175 11C2;D557;1111 1175 11C2;
+D558;D558;1112 1161;D558;1112 1161;
+D559;D559;1112 1161 11A8;D559;1112 1161 11A8;
+D55A;D55A;1112 1161 11A9;D55A;1112 1161 11A9;
+D55B;D55B;1112 1161 11AA;D55B;1112 1161 11AA;
+D55C;D55C;1112 1161 11AB;D55C;1112 1161 11AB;
+D55D;D55D;1112 1161 11AC;D55D;1112 1161 11AC;
+D55E;D55E;1112 1161 11AD;D55E;1112 1161 11AD;
+D55F;D55F;1112 1161 11AE;D55F;1112 1161 11AE;
+D560;D560;1112 1161 11AF;D560;1112 1161 11AF;
+D561;D561;1112 1161 11B0;D561;1112 1161 11B0;
+D562;D562;1112 1161 11B1;D562;1112 1161 11B1;
+D563;D563;1112 1161 11B2;D563;1112 1161 11B2;
+D564;D564;1112 1161 11B3;D564;1112 1161 11B3;
+D565;D565;1112 1161 11B4;D565;1112 1161 11B4;
+D566;D566;1112 1161 11B5;D566;1112 1161 11B5;
+D567;D567;1112 1161 11B6;D567;1112 1161 11B6;
+D568;D568;1112 1161 11B7;D568;1112 1161 11B7;
+D569;D569;1112 1161 11B8;D569;1112 1161 11B8;
+D56A;D56A;1112 1161 11B9;D56A;1112 1161 11B9;
+D56B;D56B;1112 1161 11BA;D56B;1112 1161 11BA;
+D56C;D56C;1112 1161 11BB;D56C;1112 1161 11BB;
+D56D;D56D;1112 1161 11BC;D56D;1112 1161 11BC;
+D56E;D56E;1112 1161 11BD;D56E;1112 1161 11BD;
+D56F;D56F;1112 1161 11BE;D56F;1112 1161 11BE;
+D570;D570;1112 1161 11BF;D570;1112 1161 11BF;
+D571;D571;1112 1161 11C0;D571;1112 1161 11C0;
+D572;D572;1112 1161 11C1;D572;1112 1161 11C1;
+D573;D573;1112 1161 11C2;D573;1112 1161 11C2;
+D574;D574;1112 1162;D574;1112 1162;
+D575;D575;1112 1162 11A8;D575;1112 1162 11A8;
+D576;D576;1112 1162 11A9;D576;1112 1162 11A9;
+D577;D577;1112 1162 11AA;D577;1112 1162 11AA;
+D578;D578;1112 1162 11AB;D578;1112 1162 11AB;
+D579;D579;1112 1162 11AC;D579;1112 1162 11AC;
+D57A;D57A;1112 1162 11AD;D57A;1112 1162 11AD;
+D57B;D57B;1112 1162 11AE;D57B;1112 1162 11AE;
+D57C;D57C;1112 1162 11AF;D57C;1112 1162 11AF;
+D57D;D57D;1112 1162 11B0;D57D;1112 1162 11B0;
+D57E;D57E;1112 1162 11B1;D57E;1112 1162 11B1;
+D57F;D57F;1112 1162 11B2;D57F;1112 1162 11B2;
+D580;D580;1112 1162 11B3;D580;1112 1162 11B3;
+D581;D581;1112 1162 11B4;D581;1112 1162 11B4;
+D582;D582;1112 1162 11B5;D582;1112 1162 11B5;
+D583;D583;1112 1162 11B6;D583;1112 1162 11B6;
+D584;D584;1112 1162 11B7;D584;1112 1162 11B7;
+D585;D585;1112 1162 11B8;D585;1112 1162 11B8;
+D586;D586;1112 1162 11B9;D586;1112 1162 11B9;
+D587;D587;1112 1162 11BA;D587;1112 1162 11BA;
+D588;D588;1112 1162 11BB;D588;1112 1162 11BB;
+D589;D589;1112 1162 11BC;D589;1112 1162 11BC;
+D58A;D58A;1112 1162 11BD;D58A;1112 1162 11BD;
+D58B;D58B;1112 1162 11BE;D58B;1112 1162 11BE;
+D58C;D58C;1112 1162 11BF;D58C;1112 1162 11BF;
+D58D;D58D;1112 1162 11C0;D58D;1112 1162 11C0;
+D58E;D58E;1112 1162 11C1;D58E;1112 1162 11C1;
+D58F;D58F;1112 1162 11C2;D58F;1112 1162 11C2;
+D590;D590;1112 1163;D590;1112 1163;
+D591;D591;1112 1163 11A8;D591;1112 1163 11A8;
+D592;D592;1112 1163 11A9;D592;1112 1163 11A9;
+D593;D593;1112 1163 11AA;D593;1112 1163 11AA;
+D594;D594;1112 1163 11AB;D594;1112 1163 11AB;
+D595;D595;1112 1163 11AC;D595;1112 1163 11AC;
+D596;D596;1112 1163 11AD;D596;1112 1163 11AD;
+D597;D597;1112 1163 11AE;D597;1112 1163 11AE;
+D598;D598;1112 1163 11AF;D598;1112 1163 11AF;
+D599;D599;1112 1163 11B0;D599;1112 1163 11B0;
+D59A;D59A;1112 1163 11B1;D59A;1112 1163 11B1;
+D59B;D59B;1112 1163 11B2;D59B;1112 1163 11B2;
+D59C;D59C;1112 1163 11B3;D59C;1112 1163 11B3;
+D59D;D59D;1112 1163 11B4;D59D;1112 1163 11B4;
+D59E;D59E;1112 1163 11B5;D59E;1112 1163 11B5;
+D59F;D59F;1112 1163 11B6;D59F;1112 1163 11B6;
+D5A0;D5A0;1112 1163 11B7;D5A0;1112 1163 11B7;
+D5A1;D5A1;1112 1163 11B8;D5A1;1112 1163 11B8;
+D5A2;D5A2;1112 1163 11B9;D5A2;1112 1163 11B9;
+D5A3;D5A3;1112 1163 11BA;D5A3;1112 1163 11BA;
+D5A4;D5A4;1112 1163 11BB;D5A4;1112 1163 11BB;
+D5A5;D5A5;1112 1163 11BC;D5A5;1112 1163 11BC;
+D5A6;D5A6;1112 1163 11BD;D5A6;1112 1163 11BD;
+D5A7;D5A7;1112 1163 11BE;D5A7;1112 1163 11BE;
+D5A8;D5A8;1112 1163 11BF;D5A8;1112 1163 11BF;
+D5A9;D5A9;1112 1163 11C0;D5A9;1112 1163 11C0;
+D5AA;D5AA;1112 1163 11C1;D5AA;1112 1163 11C1;
+D5AB;D5AB;1112 1163 11C2;D5AB;1112 1163 11C2;
+D5AC;D5AC;1112 1164;D5AC;1112 1164;
+D5AD;D5AD;1112 1164 11A8;D5AD;1112 1164 11A8;
+D5AE;D5AE;1112 1164 11A9;D5AE;1112 1164 11A9;
+D5AF;D5AF;1112 1164 11AA;D5AF;1112 1164 11AA;
+D5B0;D5B0;1112 1164 11AB;D5B0;1112 1164 11AB;
+D5B1;D5B1;1112 1164 11AC;D5B1;1112 1164 11AC;
+D5B2;D5B2;1112 1164 11AD;D5B2;1112 1164 11AD;
+D5B3;D5B3;1112 1164 11AE;D5B3;1112 1164 11AE;
+D5B4;D5B4;1112 1164 11AF;D5B4;1112 1164 11AF;
+D5B5;D5B5;1112 1164 11B0;D5B5;1112 1164 11B0;
+D5B6;D5B6;1112 1164 11B1;D5B6;1112 1164 11B1;
+D5B7;D5B7;1112 1164 11B2;D5B7;1112 1164 11B2;
+D5B8;D5B8;1112 1164 11B3;D5B8;1112 1164 11B3;
+D5B9;D5B9;1112 1164 11B4;D5B9;1112 1164 11B4;
+D5BA;D5BA;1112 1164 11B5;D5BA;1112 1164 11B5;
+D5BB;D5BB;1112 1164 11B6;D5BB;1112 1164 11B6;
+D5BC;D5BC;1112 1164 11B7;D5BC;1112 1164 11B7;
+D5BD;D5BD;1112 1164 11B8;D5BD;1112 1164 11B8;
+D5BE;D5BE;1112 1164 11B9;D5BE;1112 1164 11B9;
+D5BF;D5BF;1112 1164 11BA;D5BF;1112 1164 11BA;
+D5C0;D5C0;1112 1164 11BB;D5C0;1112 1164 11BB;
+D5C1;D5C1;1112 1164 11BC;D5C1;1112 1164 11BC;
+D5C2;D5C2;1112 1164 11BD;D5C2;1112 1164 11BD;
+D5C3;D5C3;1112 1164 11BE;D5C3;1112 1164 11BE;
+D5C4;D5C4;1112 1164 11BF;D5C4;1112 1164 11BF;
+D5C5;D5C5;1112 1164 11C0;D5C5;1112 1164 11C0;
+D5C6;D5C6;1112 1164 11C1;D5C6;1112 1164 11C1;
+D5C7;D5C7;1112 1164 11C2;D5C7;1112 1164 11C2;
+D5C8;D5C8;1112 1165;D5C8;1112 1165;
+D5C9;D5C9;1112 1165 11A8;D5C9;1112 1165 11A8;
+D5CA;D5CA;1112 1165 11A9;D5CA;1112 1165 11A9;
+D5CB;D5CB;1112 1165 11AA;D5CB;1112 1165 11AA;
+D5CC;D5CC;1112 1165 11AB;D5CC;1112 1165 11AB;
+D5CD;D5CD;1112 1165 11AC;D5CD;1112 1165 11AC;
+D5CE;D5CE;1112 1165 11AD;D5CE;1112 1165 11AD;
+D5CF;D5CF;1112 1165 11AE;D5CF;1112 1165 11AE;
+D5D0;D5D0;1112 1165 11AF;D5D0;1112 1165 11AF;
+D5D1;D5D1;1112 1165 11B0;D5D1;1112 1165 11B0;
+D5D2;D5D2;1112 1165 11B1;D5D2;1112 1165 11B1;
+D5D3;D5D3;1112 1165 11B2;D5D3;1112 1165 11B2;
+D5D4;D5D4;1112 1165 11B3;D5D4;1112 1165 11B3;
+D5D5;D5D5;1112 1165 11B4;D5D5;1112 1165 11B4;
+D5D6;D5D6;1112 1165 11B5;D5D6;1112 1165 11B5;
+D5D7;D5D7;1112 1165 11B6;D5D7;1112 1165 11B6;
+D5D8;D5D8;1112 1165 11B7;D5D8;1112 1165 11B7;
+D5D9;D5D9;1112 1165 11B8;D5D9;1112 1165 11B8;
+D5DA;D5DA;1112 1165 11B9;D5DA;1112 1165 11B9;
+D5DB;D5DB;1112 1165 11BA;D5DB;1112 1165 11BA;
+D5DC;D5DC;1112 1165 11BB;D5DC;1112 1165 11BB;
+D5DD;D5DD;1112 1165 11BC;D5DD;1112 1165 11BC;
+D5DE;D5DE;1112 1165 11BD;D5DE;1112 1165 11BD;
+D5DF;D5DF;1112 1165 11BE;D5DF;1112 1165 11BE;
+D5E0;D5E0;1112 1165 11BF;D5E0;1112 1165 11BF;
+D5E1;D5E1;1112 1165 11C0;D5E1;1112 1165 11C0;
+D5E2;D5E2;1112 1165 11C1;D5E2;1112 1165 11C1;
+D5E3;D5E3;1112 1165 11C2;D5E3;1112 1165 11C2;
+D5E4;D5E4;1112 1166;D5E4;1112 1166;
+D5E5;D5E5;1112 1166 11A8;D5E5;1112 1166 11A8;
+D5E6;D5E6;1112 1166 11A9;D5E6;1112 1166 11A9;
+D5E7;D5E7;1112 1166 11AA;D5E7;1112 1166 11AA;
+D5E8;D5E8;1112 1166 11AB;D5E8;1112 1166 11AB;
+D5E9;D5E9;1112 1166 11AC;D5E9;1112 1166 11AC;
+D5EA;D5EA;1112 1166 11AD;D5EA;1112 1166 11AD;
+D5EB;D5EB;1112 1166 11AE;D5EB;1112 1166 11AE;
+D5EC;D5EC;1112 1166 11AF;D5EC;1112 1166 11AF;
+D5ED;D5ED;1112 1166 11B0;D5ED;1112 1166 11B0;
+D5EE;D5EE;1112 1166 11B1;D5EE;1112 1166 11B1;
+D5EF;D5EF;1112 1166 11B2;D5EF;1112 1166 11B2;
+D5F0;D5F0;1112 1166 11B3;D5F0;1112 1166 11B3;
+D5F1;D5F1;1112 1166 11B4;D5F1;1112 1166 11B4;
+D5F2;D5F2;1112 1166 11B5;D5F2;1112 1166 11B5;
+D5F3;D5F3;1112 1166 11B6;D5F3;1112 1166 11B6;
+D5F4;D5F4;1112 1166 11B7;D5F4;1112 1166 11B7;
+D5F5;D5F5;1112 1166 11B8;D5F5;1112 1166 11B8;
+D5F6;D5F6;1112 1166 11B9;D5F6;1112 1166 11B9;
+D5F7;D5F7;1112 1166 11BA;D5F7;1112 1166 11BA;
+D5F8;D5F8;1112 1166 11BB;D5F8;1112 1166 11BB;
+D5F9;D5F9;1112 1166 11BC;D5F9;1112 1166 11BC;
+D5FA;D5FA;1112 1166 11BD;D5FA;1112 1166 11BD;
+D5FB;D5FB;1112 1166 11BE;D5FB;1112 1166 11BE;
+D5FC;D5FC;1112 1166 11BF;D5FC;1112 1166 11BF;
+D5FD;D5FD;1112 1166 11C0;D5FD;1112 1166 11C0;
+D5FE;D5FE;1112 1166 11C1;D5FE;1112 1166 11C1;
+D5FF;D5FF;1112 1166 11C2;D5FF;1112 1166 11C2;
+D600;D600;1112 1167;D600;1112 1167;
+D601;D601;1112 1167 11A8;D601;1112 1167 11A8;
+D602;D602;1112 1167 11A9;D602;1112 1167 11A9;
+D603;D603;1112 1167 11AA;D603;1112 1167 11AA;
+D604;D604;1112 1167 11AB;D604;1112 1167 11AB;
+D605;D605;1112 1167 11AC;D605;1112 1167 11AC;
+D606;D606;1112 1167 11AD;D606;1112 1167 11AD;
+D607;D607;1112 1167 11AE;D607;1112 1167 11AE;
+D608;D608;1112 1167 11AF;D608;1112 1167 11AF;
+D609;D609;1112 1167 11B0;D609;1112 1167 11B0;
+D60A;D60A;1112 1167 11B1;D60A;1112 1167 11B1;
+D60B;D60B;1112 1167 11B2;D60B;1112 1167 11B2;
+D60C;D60C;1112 1167 11B3;D60C;1112 1167 11B3;
+D60D;D60D;1112 1167 11B4;D60D;1112 1167 11B4;
+D60E;D60E;1112 1167 11B5;D60E;1112 1167 11B5;
+D60F;D60F;1112 1167 11B6;D60F;1112 1167 11B6;
+D610;D610;1112 1167 11B7;D610;1112 1167 11B7;
+D611;D611;1112 1167 11B8;D611;1112 1167 11B8;
+D612;D612;1112 1167 11B9;D612;1112 1167 11B9;
+D613;D613;1112 1167 11BA;D613;1112 1167 11BA;
+D614;D614;1112 1167 11BB;D614;1112 1167 11BB;
+D615;D615;1112 1167 11BC;D615;1112 1167 11BC;
+D616;D616;1112 1167 11BD;D616;1112 1167 11BD;
+D617;D617;1112 1167 11BE;D617;1112 1167 11BE;
+D618;D618;1112 1167 11BF;D618;1112 1167 11BF;
+D619;D619;1112 1167 11C0;D619;1112 1167 11C0;
+D61A;D61A;1112 1167 11C1;D61A;1112 1167 11C1;
+D61B;D61B;1112 1167 11C2;D61B;1112 1167 11C2;
+D61C;D61C;1112 1168;D61C;1112 1168;
+D61D;D61D;1112 1168 11A8;D61D;1112 1168 11A8;
+D61E;D61E;1112 1168 11A9;D61E;1112 1168 11A9;
+D61F;D61F;1112 1168 11AA;D61F;1112 1168 11AA;
+D620;D620;1112 1168 11AB;D620;1112 1168 11AB;
+D621;D621;1112 1168 11AC;D621;1112 1168 11AC;
+D622;D622;1112 1168 11AD;D622;1112 1168 11AD;
+D623;D623;1112 1168 11AE;D623;1112 1168 11AE;
+D624;D624;1112 1168 11AF;D624;1112 1168 11AF;
+D625;D625;1112 1168 11B0;D625;1112 1168 11B0;
+D626;D626;1112 1168 11B1;D626;1112 1168 11B1;
+D627;D627;1112 1168 11B2;D627;1112 1168 11B2;
+D628;D628;1112 1168 11B3;D628;1112 1168 11B3;
+D629;D629;1112 1168 11B4;D629;1112 1168 11B4;
+D62A;D62A;1112 1168 11B5;D62A;1112 1168 11B5;
+D62B;D62B;1112 1168 11B6;D62B;1112 1168 11B6;
+D62C;D62C;1112 1168 11B7;D62C;1112 1168 11B7;
+D62D;D62D;1112 1168 11B8;D62D;1112 1168 11B8;
+D62E;D62E;1112 1168 11B9;D62E;1112 1168 11B9;
+D62F;D62F;1112 1168 11BA;D62F;1112 1168 11BA;
+D630;D630;1112 1168 11BB;D630;1112 1168 11BB;
+D631;D631;1112 1168 11BC;D631;1112 1168 11BC;
+D632;D632;1112 1168 11BD;D632;1112 1168 11BD;
+D633;D633;1112 1168 11BE;D633;1112 1168 11BE;
+D634;D634;1112 1168 11BF;D634;1112 1168 11BF;
+D635;D635;1112 1168 11C0;D635;1112 1168 11C0;
+D636;D636;1112 1168 11C1;D636;1112 1168 11C1;
+D637;D637;1112 1168 11C2;D637;1112 1168 11C2;
+D638;D638;1112 1169;D638;1112 1169;
+D639;D639;1112 1169 11A8;D639;1112 1169 11A8;
+D63A;D63A;1112 1169 11A9;D63A;1112 1169 11A9;
+D63B;D63B;1112 1169 11AA;D63B;1112 1169 11AA;
+D63C;D63C;1112 1169 11AB;D63C;1112 1169 11AB;
+D63D;D63D;1112 1169 11AC;D63D;1112 1169 11AC;
+D63E;D63E;1112 1169 11AD;D63E;1112 1169 11AD;
+D63F;D63F;1112 1169 11AE;D63F;1112 1169 11AE;
+D640;D640;1112 1169 11AF;D640;1112 1169 11AF;
+D641;D641;1112 1169 11B0;D641;1112 1169 11B0;
+D642;D642;1112 1169 11B1;D642;1112 1169 11B1;
+D643;D643;1112 1169 11B2;D643;1112 1169 11B2;
+D644;D644;1112 1169 11B3;D644;1112 1169 11B3;
+D645;D645;1112 1169 11B4;D645;1112 1169 11B4;
+D646;D646;1112 1169 11B5;D646;1112 1169 11B5;
+D647;D647;1112 1169 11B6;D647;1112 1169 11B6;
+D648;D648;1112 1169 11B7;D648;1112 1169 11B7;
+D649;D649;1112 1169 11B8;D649;1112 1169 11B8;
+D64A;D64A;1112 1169 11B9;D64A;1112 1169 11B9;
+D64B;D64B;1112 1169 11BA;D64B;1112 1169 11BA;
+D64C;D64C;1112 1169 11BB;D64C;1112 1169 11BB;
+D64D;D64D;1112 1169 11BC;D64D;1112 1169 11BC;
+D64E;D64E;1112 1169 11BD;D64E;1112 1169 11BD;
+D64F;D64F;1112 1169 11BE;D64F;1112 1169 11BE;
+D650;D650;1112 1169 11BF;D650;1112 1169 11BF;
+D651;D651;1112 1169 11C0;D651;1112 1169 11C0;
+D652;D652;1112 1169 11C1;D652;1112 1169 11C1;
+D653;D653;1112 1169 11C2;D653;1112 1169 11C2;
+D654;D654;1112 116A;D654;1112 116A;
+D655;D655;1112 116A 11A8;D655;1112 116A 11A8;
+D656;D656;1112 116A 11A9;D656;1112 116A 11A9;
+D657;D657;1112 116A 11AA;D657;1112 116A 11AA;
+D658;D658;1112 116A 11AB;D658;1112 116A 11AB;
+D659;D659;1112 116A 11AC;D659;1112 116A 11AC;
+D65A;D65A;1112 116A 11AD;D65A;1112 116A 11AD;
+D65B;D65B;1112 116A 11AE;D65B;1112 116A 11AE;
+D65C;D65C;1112 116A 11AF;D65C;1112 116A 11AF;
+D65D;D65D;1112 116A 11B0;D65D;1112 116A 11B0;
+D65E;D65E;1112 116A 11B1;D65E;1112 116A 11B1;
+D65F;D65F;1112 116A 11B2;D65F;1112 116A 11B2;
+D660;D660;1112 116A 11B3;D660;1112 116A 11B3;
+D661;D661;1112 116A 11B4;D661;1112 116A 11B4;
+D662;D662;1112 116A 11B5;D662;1112 116A 11B5;
+D663;D663;1112 116A 11B6;D663;1112 116A 11B6;
+D664;D664;1112 116A 11B7;D664;1112 116A 11B7;
+D665;D665;1112 116A 11B8;D665;1112 116A 11B8;
+D666;D666;1112 116A 11B9;D666;1112 116A 11B9;
+D667;D667;1112 116A 11BA;D667;1112 116A 11BA;
+D668;D668;1112 116A 11BB;D668;1112 116A 11BB;
+D669;D669;1112 116A 11BC;D669;1112 116A 11BC;
+D66A;D66A;1112 116A 11BD;D66A;1112 116A 11BD;
+D66B;D66B;1112 116A 11BE;D66B;1112 116A 11BE;
+D66C;D66C;1112 116A 11BF;D66C;1112 116A 11BF;
+D66D;D66D;1112 116A 11C0;D66D;1112 116A 11C0;
+D66E;D66E;1112 116A 11C1;D66E;1112 116A 11C1;
+D66F;D66F;1112 116A 11C2;D66F;1112 116A 11C2;
+D670;D670;1112 116B;D670;1112 116B;
+D671;D671;1112 116B 11A8;D671;1112 116B 11A8;
+D672;D672;1112 116B 11A9;D672;1112 116B 11A9;
+D673;D673;1112 116B 11AA;D673;1112 116B 11AA;
+D674;D674;1112 116B 11AB;D674;1112 116B 11AB;
+D675;D675;1112 116B 11AC;D675;1112 116B 11AC;
+D676;D676;1112 116B 11AD;D676;1112 116B 11AD;
+D677;D677;1112 116B 11AE;D677;1112 116B 11AE;
+D678;D678;1112 116B 11AF;D678;1112 116B 11AF;
+D679;D679;1112 116B 11B0;D679;1112 116B 11B0;
+D67A;D67A;1112 116B 11B1;D67A;1112 116B 11B1;
+D67B;D67B;1112 116B 11B2;D67B;1112 116B 11B2;
+D67C;D67C;1112 116B 11B3;D67C;1112 116B 11B3;
+D67D;D67D;1112 116B 11B4;D67D;1112 116B 11B4;
+D67E;D67E;1112 116B 11B5;D67E;1112 116B 11B5;
+D67F;D67F;1112 116B 11B6;D67F;1112 116B 11B6;
+D680;D680;1112 116B 11B7;D680;1112 116B 11B7;
+D681;D681;1112 116B 11B8;D681;1112 116B 11B8;
+D682;D682;1112 116B 11B9;D682;1112 116B 11B9;
+D683;D683;1112 116B 11BA;D683;1112 116B 11BA;
+D684;D684;1112 116B 11BB;D684;1112 116B 11BB;
+D685;D685;1112 116B 11BC;D685;1112 116B 11BC;
+D686;D686;1112 116B 11BD;D686;1112 116B 11BD;
+D687;D687;1112 116B 11BE;D687;1112 116B 11BE;
+D688;D688;1112 116B 11BF;D688;1112 116B 11BF;
+D689;D689;1112 116B 11C0;D689;1112 116B 11C0;
+D68A;D68A;1112 116B 11C1;D68A;1112 116B 11C1;
+D68B;D68B;1112 116B 11C2;D68B;1112 116B 11C2;
+D68C;D68C;1112 116C;D68C;1112 116C;
+D68D;D68D;1112 116C 11A8;D68D;1112 116C 11A8;
+D68E;D68E;1112 116C 11A9;D68E;1112 116C 11A9;
+D68F;D68F;1112 116C 11AA;D68F;1112 116C 11AA;
+D690;D690;1112 116C 11AB;D690;1112 116C 11AB;
+D691;D691;1112 116C 11AC;D691;1112 116C 11AC;
+D692;D692;1112 116C 11AD;D692;1112 116C 11AD;
+D693;D693;1112 116C 11AE;D693;1112 116C 11AE;
+D694;D694;1112 116C 11AF;D694;1112 116C 11AF;
+D695;D695;1112 116C 11B0;D695;1112 116C 11B0;
+D696;D696;1112 116C 11B1;D696;1112 116C 11B1;
+D697;D697;1112 116C 11B2;D697;1112 116C 11B2;
+D698;D698;1112 116C 11B3;D698;1112 116C 11B3;
+D699;D699;1112 116C 11B4;D699;1112 116C 11B4;
+D69A;D69A;1112 116C 11B5;D69A;1112 116C 11B5;
+D69B;D69B;1112 116C 11B6;D69B;1112 116C 11B6;
+D69C;D69C;1112 116C 11B7;D69C;1112 116C 11B7;
+D69D;D69D;1112 116C 11B8;D69D;1112 116C 11B8;
+D69E;D69E;1112 116C 11B9;D69E;1112 116C 11B9;
+D69F;D69F;1112 116C 11BA;D69F;1112 116C 11BA;
+D6A0;D6A0;1112 116C 11BB;D6A0;1112 116C 11BB;
+D6A1;D6A1;1112 116C 11BC;D6A1;1112 116C 11BC;
+D6A2;D6A2;1112 116C 11BD;D6A2;1112 116C 11BD;
+D6A3;D6A3;1112 116C 11BE;D6A3;1112 116C 11BE;
+D6A4;D6A4;1112 116C 11BF;D6A4;1112 116C 11BF;
+D6A5;D6A5;1112 116C 11C0;D6A5;1112 116C 11C0;
+D6A6;D6A6;1112 116C 11C1;D6A6;1112 116C 11C1;
+D6A7;D6A7;1112 116C 11C2;D6A7;1112 116C 11C2;
+D6A8;D6A8;1112 116D;D6A8;1112 116D;
+D6A9;D6A9;1112 116D 11A8;D6A9;1112 116D 11A8;
+D6AA;D6AA;1112 116D 11A9;D6AA;1112 116D 11A9;
+D6AB;D6AB;1112 116D 11AA;D6AB;1112 116D 11AA;
+D6AC;D6AC;1112 116D 11AB;D6AC;1112 116D 11AB;
+D6AD;D6AD;1112 116D 11AC;D6AD;1112 116D 11AC;
+D6AE;D6AE;1112 116D 11AD;D6AE;1112 116D 11AD;
+D6AF;D6AF;1112 116D 11AE;D6AF;1112 116D 11AE;
+D6B0;D6B0;1112 116D 11AF;D6B0;1112 116D 11AF;
+D6B1;D6B1;1112 116D 11B0;D6B1;1112 116D 11B0;
+D6B2;D6B2;1112 116D 11B1;D6B2;1112 116D 11B1;
+D6B3;D6B3;1112 116D 11B2;D6B3;1112 116D 11B2;
+D6B4;D6B4;1112 116D 11B3;D6B4;1112 116D 11B3;
+D6B5;D6B5;1112 116D 11B4;D6B5;1112 116D 11B4;
+D6B6;D6B6;1112 116D 11B5;D6B6;1112 116D 11B5;
+D6B7;D6B7;1112 116D 11B6;D6B7;1112 116D 11B6;
+D6B8;D6B8;1112 116D 11B7;D6B8;1112 116D 11B7;
+D6B9;D6B9;1112 116D 11B8;D6B9;1112 116D 11B8;
+D6BA;D6BA;1112 116D 11B9;D6BA;1112 116D 11B9;
+D6BB;D6BB;1112 116D 11BA;D6BB;1112 116D 11BA;
+D6BC;D6BC;1112 116D 11BB;D6BC;1112 116D 11BB;
+D6BD;D6BD;1112 116D 11BC;D6BD;1112 116D 11BC;
+D6BE;D6BE;1112 116D 11BD;D6BE;1112 116D 11BD;
+D6BF;D6BF;1112 116D 11BE;D6BF;1112 116D 11BE;
+D6C0;D6C0;1112 116D 11BF;D6C0;1112 116D 11BF;
+D6C1;D6C1;1112 116D 11C0;D6C1;1112 116D 11C0;
+D6C2;D6C2;1112 116D 11C1;D6C2;1112 116D 11C1;
+D6C3;D6C3;1112 116D 11C2;D6C3;1112 116D 11C2;
+D6C4;D6C4;1112 116E;D6C4;1112 116E;
+D6C5;D6C5;1112 116E 11A8;D6C5;1112 116E 11A8;
+D6C6;D6C6;1112 116E 11A9;D6C6;1112 116E 11A9;
+D6C7;D6C7;1112 116E 11AA;D6C7;1112 116E 11AA;
+D6C8;D6C8;1112 116E 11AB;D6C8;1112 116E 11AB;
+D6C9;D6C9;1112 116E 11AC;D6C9;1112 116E 11AC;
+D6CA;D6CA;1112 116E 11AD;D6CA;1112 116E 11AD;
+D6CB;D6CB;1112 116E 11AE;D6CB;1112 116E 11AE;
+D6CC;D6CC;1112 116E 11AF;D6CC;1112 116E 11AF;
+D6CD;D6CD;1112 116E 11B0;D6CD;1112 116E 11B0;
+D6CE;D6CE;1112 116E 11B1;D6CE;1112 116E 11B1;
+D6CF;D6CF;1112 116E 11B2;D6CF;1112 116E 11B2;
+D6D0;D6D0;1112 116E 11B3;D6D0;1112 116E 11B3;
+D6D1;D6D1;1112 116E 11B4;D6D1;1112 116E 11B4;
+D6D2;D6D2;1112 116E 11B5;D6D2;1112 116E 11B5;
+D6D3;D6D3;1112 116E 11B6;D6D3;1112 116E 11B6;
+D6D4;D6D4;1112 116E 11B7;D6D4;1112 116E 11B7;
+D6D5;D6D5;1112 116E 11B8;D6D5;1112 116E 11B8;
+D6D6;D6D6;1112 116E 11B9;D6D6;1112 116E 11B9;
+D6D7;D6D7;1112 116E 11BA;D6D7;1112 116E 11BA;
+D6D8;D6D8;1112 116E 11BB;D6D8;1112 116E 11BB;
+D6D9;D6D9;1112 116E 11BC;D6D9;1112 116E 11BC;
+D6DA;D6DA;1112 116E 11BD;D6DA;1112 116E 11BD;
+D6DB;D6DB;1112 116E 11BE;D6DB;1112 116E 11BE;
+D6DC;D6DC;1112 116E 11BF;D6DC;1112 116E 11BF;
+D6DD;D6DD;1112 116E 11C0;D6DD;1112 116E 11C0;
+D6DE;D6DE;1112 116E 11C1;D6DE;1112 116E 11C1;
+D6DF;D6DF;1112 116E 11C2;D6DF;1112 116E 11C2;
+D6E0;D6E0;1112 116F;D6E0;1112 116F;
+D6E1;D6E1;1112 116F 11A8;D6E1;1112 116F 11A8;
+D6E2;D6E2;1112 116F 11A9;D6E2;1112 116F 11A9;
+D6E3;D6E3;1112 116F 11AA;D6E3;1112 116F 11AA;
+D6E4;D6E4;1112 116F 11AB;D6E4;1112 116F 11AB;
+D6E5;D6E5;1112 116F 11AC;D6E5;1112 116F 11AC;
+D6E6;D6E6;1112 116F 11AD;D6E6;1112 116F 11AD;
+D6E7;D6E7;1112 116F 11AE;D6E7;1112 116F 11AE;
+D6E8;D6E8;1112 116F 11AF;D6E8;1112 116F 11AF;
+D6E9;D6E9;1112 116F 11B0;D6E9;1112 116F 11B0;
+D6EA;D6EA;1112 116F 11B1;D6EA;1112 116F 11B1;
+D6EB;D6EB;1112 116F 11B2;D6EB;1112 116F 11B2;
+D6EC;D6EC;1112 116F 11B3;D6EC;1112 116F 11B3;
+D6ED;D6ED;1112 116F 11B4;D6ED;1112 116F 11B4;
+D6EE;D6EE;1112 116F 11B5;D6EE;1112 116F 11B5;
+D6EF;D6EF;1112 116F 11B6;D6EF;1112 116F 11B6;
+D6F0;D6F0;1112 116F 11B7;D6F0;1112 116F 11B7;
+D6F1;D6F1;1112 116F 11B8;D6F1;1112 116F 11B8;
+D6F2;D6F2;1112 116F 11B9;D6F2;1112 116F 11B9;
+D6F3;D6F3;1112 116F 11BA;D6F3;1112 116F 11BA;
+D6F4;D6F4;1112 116F 11BB;D6F4;1112 116F 11BB;
+D6F5;D6F5;1112 116F 11BC;D6F5;1112 116F 11BC;
+D6F6;D6F6;1112 116F 11BD;D6F6;1112 116F 11BD;
+D6F7;D6F7;1112 116F 11BE;D6F7;1112 116F 11BE;
+D6F8;D6F8;1112 116F 11BF;D6F8;1112 116F 11BF;
+D6F9;D6F9;1112 116F 11C0;D6F9;1112 116F 11C0;
+D6FA;D6FA;1112 116F 11C1;D6FA;1112 116F 11C1;
+D6FB;D6FB;1112 116F 11C2;D6FB;1112 116F 11C2;
+D6FC;D6FC;1112 1170;D6FC;1112 1170;
+D6FD;D6FD;1112 1170 11A8;D6FD;1112 1170 11A8;
+D6FE;D6FE;1112 1170 11A9;D6FE;1112 1170 11A9;
+D6FF;D6FF;1112 1170 11AA;D6FF;1112 1170 11AA;
+D700;D700;1112 1170 11AB;D700;1112 1170 11AB;
+D701;D701;1112 1170 11AC;D701;1112 1170 11AC;
+D702;D702;1112 1170 11AD;D702;1112 1170 11AD;
+D703;D703;1112 1170 11AE;D703;1112 1170 11AE;
+D704;D704;1112 1170 11AF;D704;1112 1170 11AF;
+D705;D705;1112 1170 11B0;D705;1112 1170 11B0;
+D706;D706;1112 1170 11B1;D706;1112 1170 11B1;
+D707;D707;1112 1170 11B2;D707;1112 1170 11B2;
+D708;D708;1112 1170 11B3;D708;1112 1170 11B3;
+D709;D709;1112 1170 11B4;D709;1112 1170 11B4;
+D70A;D70A;1112 1170 11B5;D70A;1112 1170 11B5;
+D70B;D70B;1112 1170 11B6;D70B;1112 1170 11B6;
+D70C;D70C;1112 1170 11B7;D70C;1112 1170 11B7;
+D70D;D70D;1112 1170 11B8;D70D;1112 1170 11B8;
+D70E;D70E;1112 1170 11B9;D70E;1112 1170 11B9;
+D70F;D70F;1112 1170 11BA;D70F;1112 1170 11BA;
+D710;D710;1112 1170 11BB;D710;1112 1170 11BB;
+D711;D711;1112 1170 11BC;D711;1112 1170 11BC;
+D712;D712;1112 1170 11BD;D712;1112 1170 11BD;
+D713;D713;1112 1170 11BE;D713;1112 1170 11BE;
+D714;D714;1112 1170 11BF;D714;1112 1170 11BF;
+D715;D715;1112 1170 11C0;D715;1112 1170 11C0;
+D716;D716;1112 1170 11C1;D716;1112 1170 11C1;
+D717;D717;1112 1170 11C2;D717;1112 1170 11C2;
+D718;D718;1112 1171;D718;1112 1171;
+D719;D719;1112 1171 11A8;D719;1112 1171 11A8;
+D71A;D71A;1112 1171 11A9;D71A;1112 1171 11A9;
+D71B;D71B;1112 1171 11AA;D71B;1112 1171 11AA;
+D71C;D71C;1112 1171 11AB;D71C;1112 1171 11AB;
+D71D;D71D;1112 1171 11AC;D71D;1112 1171 11AC;
+D71E;D71E;1112 1171 11AD;D71E;1112 1171 11AD;
+D71F;D71F;1112 1171 11AE;D71F;1112 1171 11AE;
+D720;D720;1112 1171 11AF;D720;1112 1171 11AF;
+D721;D721;1112 1171 11B0;D721;1112 1171 11B0;
+D722;D722;1112 1171 11B1;D722;1112 1171 11B1;
+D723;D723;1112 1171 11B2;D723;1112 1171 11B2;
+D724;D724;1112 1171 11B3;D724;1112 1171 11B3;
+D725;D725;1112 1171 11B4;D725;1112 1171 11B4;
+D726;D726;1112 1171 11B5;D726;1112 1171 11B5;
+D727;D727;1112 1171 11B6;D727;1112 1171 11B6;
+D728;D728;1112 1171 11B7;D728;1112 1171 11B7;
+D729;D729;1112 1171 11B8;D729;1112 1171 11B8;
+D72A;D72A;1112 1171 11B9;D72A;1112 1171 11B9;
+D72B;D72B;1112 1171 11BA;D72B;1112 1171 11BA;
+D72C;D72C;1112 1171 11BB;D72C;1112 1171 11BB;
+D72D;D72D;1112 1171 11BC;D72D;1112 1171 11BC;
+D72E;D72E;1112 1171 11BD;D72E;1112 1171 11BD;
+D72F;D72F;1112 1171 11BE;D72F;1112 1171 11BE;
+D730;D730;1112 1171 11BF;D730;1112 1171 11BF;
+D731;D731;1112 1171 11C0;D731;1112 1171 11C0;
+D732;D732;1112 1171 11C1;D732;1112 1171 11C1;
+D733;D733;1112 1171 11C2;D733;1112 1171 11C2;
+D734;D734;1112 1172;D734;1112 1172;
+D735;D735;1112 1172 11A8;D735;1112 1172 11A8;
+D736;D736;1112 1172 11A9;D736;1112 1172 11A9;
+D737;D737;1112 1172 11AA;D737;1112 1172 11AA;
+D738;D738;1112 1172 11AB;D738;1112 1172 11AB;
+D739;D739;1112 1172 11AC;D739;1112 1172 11AC;
+D73A;D73A;1112 1172 11AD;D73A;1112 1172 11AD;
+D73B;D73B;1112 1172 11AE;D73B;1112 1172 11AE;
+D73C;D73C;1112 1172 11AF;D73C;1112 1172 11AF;
+D73D;D73D;1112 1172 11B0;D73D;1112 1172 11B0;
+D73E;D73E;1112 1172 11B1;D73E;1112 1172 11B1;
+D73F;D73F;1112 1172 11B2;D73F;1112 1172 11B2;
+D740;D740;1112 1172 11B3;D740;1112 1172 11B3;
+D741;D741;1112 1172 11B4;D741;1112 1172 11B4;
+D742;D742;1112 1172 11B5;D742;1112 1172 11B5;
+D743;D743;1112 1172 11B6;D743;1112 1172 11B6;
+D744;D744;1112 1172 11B7;D744;1112 1172 11B7;
+D745;D745;1112 1172 11B8;D745;1112 1172 11B8;
+D746;D746;1112 1172 11B9;D746;1112 1172 11B9;
+D747;D747;1112 1172 11BA;D747;1112 1172 11BA;
+D748;D748;1112 1172 11BB;D748;1112 1172 11BB;
+D749;D749;1112 1172 11BC;D749;1112 1172 11BC;
+D74A;D74A;1112 1172 11BD;D74A;1112 1172 11BD;
+D74B;D74B;1112 1172 11BE;D74B;1112 1172 11BE;
+D74C;D74C;1112 1172 11BF;D74C;1112 1172 11BF;
+D74D;D74D;1112 1172 11C0;D74D;1112 1172 11C0;
+D74E;D74E;1112 1172 11C1;D74E;1112 1172 11C1;
+D74F;D74F;1112 1172 11C2;D74F;1112 1172 11C2;
+D750;D750;1112 1173;D750;1112 1173;
+D751;D751;1112 1173 11A8;D751;1112 1173 11A8;
+D752;D752;1112 1173 11A9;D752;1112 1173 11A9;
+D753;D753;1112 1173 11AA;D753;1112 1173 11AA;
+D754;D754;1112 1173 11AB;D754;1112 1173 11AB;
+D755;D755;1112 1173 11AC;D755;1112 1173 11AC;
+D756;D756;1112 1173 11AD;D756;1112 1173 11AD;
+D757;D757;1112 1173 11AE;D757;1112 1173 11AE;
+D758;D758;1112 1173 11AF;D758;1112 1173 11AF;
+D759;D759;1112 1173 11B0;D759;1112 1173 11B0;
+D75A;D75A;1112 1173 11B1;D75A;1112 1173 11B1;
+D75B;D75B;1112 1173 11B2;D75B;1112 1173 11B2;
+D75C;D75C;1112 1173 11B3;D75C;1112 1173 11B3;
+D75D;D75D;1112 1173 11B4;D75D;1112 1173 11B4;
+D75E;D75E;1112 1173 11B5;D75E;1112 1173 11B5;
+D75F;D75F;1112 1173 11B6;D75F;1112 1173 11B6;
+D760;D760;1112 1173 11B7;D760;1112 1173 11B7;
+D761;D761;1112 1173 11B8;D761;1112 1173 11B8;
+D762;D762;1112 1173 11B9;D762;1112 1173 11B9;
+D763;D763;1112 1173 11BA;D763;1112 1173 11BA;
+D764;D764;1112 1173 11BB;D764;1112 1173 11BB;
+D765;D765;1112 1173 11BC;D765;1112 1173 11BC;
+D766;D766;1112 1173 11BD;D766;1112 1173 11BD;
+D767;D767;1112 1173 11BE;D767;1112 1173 11BE;
+D768;D768;1112 1173 11BF;D768;1112 1173 11BF;
+D769;D769;1112 1173 11C0;D769;1112 1173 11C0;
+D76A;D76A;1112 1173 11C1;D76A;1112 1173 11C1;
+D76B;D76B;1112 1173 11C2;D76B;1112 1173 11C2;
+D76C;D76C;1112 1174;D76C;1112 1174;
+D76D;D76D;1112 1174 11A8;D76D;1112 1174 11A8;
+D76E;D76E;1112 1174 11A9;D76E;1112 1174 11A9;
+D76F;D76F;1112 1174 11AA;D76F;1112 1174 11AA;
+D770;D770;1112 1174 11AB;D770;1112 1174 11AB;
+D771;D771;1112 1174 11AC;D771;1112 1174 11AC;
+D772;D772;1112 1174 11AD;D772;1112 1174 11AD;
+D773;D773;1112 1174 11AE;D773;1112 1174 11AE;
+D774;D774;1112 1174 11AF;D774;1112 1174 11AF;
+D775;D775;1112 1174 11B0;D775;1112 1174 11B0;
+D776;D776;1112 1174 11B1;D776;1112 1174 11B1;
+D777;D777;1112 1174 11B2;D777;1112 1174 11B2;
+D778;D778;1112 1174 11B3;D778;1112 1174 11B3;
+D779;D779;1112 1174 11B4;D779;1112 1174 11B4;
+D77A;D77A;1112 1174 11B5;D77A;1112 1174 11B5;
+D77B;D77B;1112 1174 11B6;D77B;1112 1174 11B6;
+D77C;D77C;1112 1174 11B7;D77C;1112 1174 11B7;
+D77D;D77D;1112 1174 11B8;D77D;1112 1174 11B8;
+D77E;D77E;1112 1174 11B9;D77E;1112 1174 11B9;
+D77F;D77F;1112 1174 11BA;D77F;1112 1174 11BA;
+D780;D780;1112 1174 11BB;D780;1112 1174 11BB;
+D781;D781;1112 1174 11BC;D781;1112 1174 11BC;
+D782;D782;1112 1174 11BD;D782;1112 1174 11BD;
+D783;D783;1112 1174 11BE;D783;1112 1174 11BE;
+D784;D784;1112 1174 11BF;D784;1112 1174 11BF;
+D785;D785;1112 1174 11C0;D785;1112 1174 11C0;
+D786;D786;1112 1174 11C1;D786;1112 1174 11C1;
+D787;D787;1112 1174 11C2;D787;1112 1174 11C2;
+D788;D788;1112 1175;D788;1112 1175;
+D789;D789;1112 1175 11A8;D789;1112 1175 11A8;
+D78A;D78A;1112 1175 11A9;D78A;1112 1175 11A9;
+D78B;D78B;1112 1175 11AA;D78B;1112 1175 11AA;
+D78C;D78C;1112 1175 11AB;D78C;1112 1175 11AB;
+D78D;D78D;1112 1175 11AC;D78D;1112 1175 11AC;
+D78E;D78E;1112 1175 11AD;D78E;1112 1175 11AD;
+D78F;D78F;1112 1175 11AE;D78F;1112 1175 11AE;
+D790;D790;1112 1175 11AF;D790;1112 1175 11AF;
+D791;D791;1112 1175 11B0;D791;1112 1175 11B0;
+D792;D792;1112 1175 11B1;D792;1112 1175 11B1;
+D793;D793;1112 1175 11B2;D793;1112 1175 11B2;
+D794;D794;1112 1175 11B3;D794;1112 1175 11B3;
+D795;D795;1112 1175 11B4;D795;1112 1175 11B4;
+D796;D796;1112 1175 11B5;D796;1112 1175 11B5;
+D797;D797;1112 1175 11B6;D797;1112 1175 11B6;
+D798;D798;1112 1175 11B7;D798;1112 1175 11B7;
+D799;D799;1112 1175 11B8;D799;1112 1175 11B8;
+D79A;D79A;1112 1175 11B9;D79A;1112 1175 11B9;
+D79B;D79B;1112 1175 11BA;D79B;1112 1175 11BA;
+D79C;D79C;1112 1175 11BB;D79C;1112 1175 11BB;
+D79D;D79D;1112 1175 11BC;D79D;1112 1175 11BC;
+D79E;D79E;1112 1175 11BD;D79E;1112 1175 11BD;
+D79F;D79F;1112 1175 11BE;D79F;1112 1175 11BE;
+D7A0;D7A0;1112 1175 11BF;D7A0;1112 1175 11BF;
+D7A1;D7A1;1112 1175 11C0;D7A1;1112 1175 11C0;
+D7A2;D7A2;1112 1175 11C1;D7A2;1112 1175 11C1;
+D7A3;D7A3;1112 1175 11C2;D7A3;1112 1175 11C2;
+F900;8C48;8C48;8C48;8C48;
+F901;66F4;66F4;66F4;66F4;
+F902;8ECA;8ECA;8ECA;8ECA;
+F903;8CC8;8CC8;8CC8;8CC8;
+F904;6ED1;6ED1;6ED1;6ED1;
+F905;4E32;4E32;4E32;4E32;
+F906;53E5;53E5;53E5;53E5;
+F907;9F9C;9F9C;9F9C;9F9C;
+F908;9F9C;9F9C;9F9C;9F9C;
+F909;5951;5951;5951;5951;
+F90A;91D1;91D1;91D1;91D1;
+F90B;5587;5587;5587;5587;
+F90C;5948;5948;5948;5948;
+F90D;61F6;61F6;61F6;61F6;
+F90E;7669;7669;7669;7669;
+F90F;7F85;7F85;7F85;7F85;
+F910;863F;863F;863F;863F;
+F911;87BA;87BA;87BA;87BA;
+F912;88F8;88F8;88F8;88F8;
+F913;908F;908F;908F;908F;
+F914;6A02;6A02;6A02;6A02;
+F915;6D1B;6D1B;6D1B;6D1B;
+F916;70D9;70D9;70D9;70D9;
+F917;73DE;73DE;73DE;73DE;
+F918;843D;843D;843D;843D;
+F919;916A;916A;916A;916A;
+F91A;99F1;99F1;99F1;99F1;
+F91B;4E82;4E82;4E82;4E82;
+F91C;5375;5375;5375;5375;
+F91D;6B04;6B04;6B04;6B04;
+F91E;721B;721B;721B;721B;
+F91F;862D;862D;862D;862D;
+F920;9E1E;9E1E;9E1E;9E1E;
+F921;5D50;5D50;5D50;5D50;
+F922;6FEB;6FEB;6FEB;6FEB;
+F923;85CD;85CD;85CD;85CD;
+F924;8964;8964;8964;8964;
+F925;62C9;62C9;62C9;62C9;
+F926;81D8;81D8;81D8;81D8;
+F927;881F;881F;881F;881F;
+F928;5ECA;5ECA;5ECA;5ECA;
+F929;6717;6717;6717;6717;
+F92A;6D6A;6D6A;6D6A;6D6A;
+F92B;72FC;72FC;72FC;72FC;
+F92C;90CE;90CE;90CE;90CE;
+F92D;4F86;4F86;4F86;4F86;
+F92E;51B7;51B7;51B7;51B7;
+F92F;52DE;52DE;52DE;52DE;
+F930;64C4;64C4;64C4;64C4;
+F931;6AD3;6AD3;6AD3;6AD3;
+F932;7210;7210;7210;7210;
+F933;76E7;76E7;76E7;76E7;
+F934;8001;8001;8001;8001;
+F935;8606;8606;8606;8606;
+F936;865C;865C;865C;865C;
+F937;8DEF;8DEF;8DEF;8DEF;
+F938;9732;9732;9732;9732;
+F939;9B6F;9B6F;9B6F;9B6F;
+F93A;9DFA;9DFA;9DFA;9DFA;
+F93B;788C;788C;788C;788C;
+F93C;797F;797F;797F;797F;
+F93D;7DA0;7DA0;7DA0;7DA0;
+F93E;83C9;83C9;83C9;83C9;
+F93F;9304;9304;9304;9304;
+F940;9E7F;9E7F;9E7F;9E7F;
+F941;8AD6;8AD6;8AD6;8AD6;
+F942;58DF;58DF;58DF;58DF;
+F943;5F04;5F04;5F04;5F04;
+F944;7C60;7C60;7C60;7C60;
+F945;807E;807E;807E;807E;
+F946;7262;7262;7262;7262;
+F947;78CA;78CA;78CA;78CA;
+F948;8CC2;8CC2;8CC2;8CC2;
+F949;96F7;96F7;96F7;96F7;
+F94A;58D8;58D8;58D8;58D8;
+F94B;5C62;5C62;5C62;5C62;
+F94C;6A13;6A13;6A13;6A13;
+F94D;6DDA;6DDA;6DDA;6DDA;
+F94E;6F0F;6F0F;6F0F;6F0F;
+F94F;7D2F;7D2F;7D2F;7D2F;
+F950;7E37;7E37;7E37;7E37;
+F951;964B;964B;964B;964B;
+F952;52D2;52D2;52D2;52D2;
+F953;808B;808B;808B;808B;
+F954;51DC;51DC;51DC;51DC;
+F955;51CC;51CC;51CC;51CC;
+F956;7A1C;7A1C;7A1C;7A1C;
+F957;7DBE;7DBE;7DBE;7DBE;
+F958;83F1;83F1;83F1;83F1;
+F959;9675;9675;9675;9675;
+F95A;8B80;8B80;8B80;8B80;
+F95B;62CF;62CF;62CF;62CF;
+F95C;6A02;6A02;6A02;6A02;
+F95D;8AFE;8AFE;8AFE;8AFE;
+F95E;4E39;4E39;4E39;4E39;
+F95F;5BE7;5BE7;5BE7;5BE7;
+F960;6012;6012;6012;6012;
+F961;7387;7387;7387;7387;
+F962;7570;7570;7570;7570;
+F963;5317;5317;5317;5317;
+F964;78FB;78FB;78FB;78FB;
+F965;4FBF;4FBF;4FBF;4FBF;
+F966;5FA9;5FA9;5FA9;5FA9;
+F967;4E0D;4E0D;4E0D;4E0D;
+F968;6CCC;6CCC;6CCC;6CCC;
+F969;6578;6578;6578;6578;
+F96A;7D22;7D22;7D22;7D22;
+F96B;53C3;53C3;53C3;53C3;
+F96C;585E;585E;585E;585E;
+F96D;7701;7701;7701;7701;
+F96E;8449;8449;8449;8449;
+F96F;8AAA;8AAA;8AAA;8AAA;
+F970;6BBA;6BBA;6BBA;6BBA;
+F971;8FB0;8FB0;8FB0;8FB0;
+F972;6C88;6C88;6C88;6C88;
+F973;62FE;62FE;62FE;62FE;
+F974;82E5;82E5;82E5;82E5;
+F975;63A0;63A0;63A0;63A0;
+F976;7565;7565;7565;7565;
+F977;4EAE;4EAE;4EAE;4EAE;
+F978;5169;5169;5169;5169;
+F979;51C9;51C9;51C9;51C9;
+F97A;6881;6881;6881;6881;
+F97B;7CE7;7CE7;7CE7;7CE7;
+F97C;826F;826F;826F;826F;
+F97D;8AD2;8AD2;8AD2;8AD2;
+F97E;91CF;91CF;91CF;91CF;
+F97F;52F5;52F5;52F5;52F5;
+F980;5442;5442;5442;5442;
+F981;5973;5973;5973;5973;
+F982;5EEC;5EEC;5EEC;5EEC;
+F983;65C5;65C5;65C5;65C5;
+F984;6FFE;6FFE;6FFE;6FFE;
+F985;792A;792A;792A;792A;
+F986;95AD;95AD;95AD;95AD;
+F987;9A6A;9A6A;9A6A;9A6A;
+F988;9E97;9E97;9E97;9E97;
+F989;9ECE;9ECE;9ECE;9ECE;
+F98A;529B;529B;529B;529B;
+F98B;66C6;66C6;66C6;66C6;
+F98C;6B77;6B77;6B77;6B77;
+F98D;8F62;8F62;8F62;8F62;
+F98E;5E74;5E74;5E74;5E74;
+F98F;6190;6190;6190;6190;
+F990;6200;6200;6200;6200;
+F991;649A;649A;649A;649A;
+F992;6F23;6F23;6F23;6F23;
+F993;7149;7149;7149;7149;
+F994;7489;7489;7489;7489;
+F995;79CA;79CA;79CA;79CA;
+F996;7DF4;7DF4;7DF4;7DF4;
+F997;806F;806F;806F;806F;
+F998;8F26;8F26;8F26;8F26;
+F999;84EE;84EE;84EE;84EE;
+F99A;9023;9023;9023;9023;
+F99B;934A;934A;934A;934A;
+F99C;5217;5217;5217;5217;
+F99D;52A3;52A3;52A3;52A3;
+F99E;54BD;54BD;54BD;54BD;
+F99F;70C8;70C8;70C8;70C8;
+F9A0;88C2;88C2;88C2;88C2;
+F9A1;8AAA;8AAA;8AAA;8AAA;
+F9A2;5EC9;5EC9;5EC9;5EC9;
+F9A3;5FF5;5FF5;5FF5;5FF5;
+F9A4;637B;637B;637B;637B;
+F9A5;6BAE;6BAE;6BAE;6BAE;
+F9A6;7C3E;7C3E;7C3E;7C3E;
+F9A7;7375;7375;7375;7375;
+F9A8;4EE4;4EE4;4EE4;4EE4;
+F9A9;56F9;56F9;56F9;56F9;
+F9AA;5BE7;5BE7;5BE7;5BE7;
+F9AB;5DBA;5DBA;5DBA;5DBA;
+F9AC;601C;601C;601C;601C;
+F9AD;73B2;73B2;73B2;73B2;
+F9AE;7469;7469;7469;7469;
+F9AF;7F9A;7F9A;7F9A;7F9A;
+F9B0;8046;8046;8046;8046;
+F9B1;9234;9234;9234;9234;
+F9B2;96F6;96F6;96F6;96F6;
+F9B3;9748;9748;9748;9748;
+F9B4;9818;9818;9818;9818;
+F9B5;4F8B;4F8B;4F8B;4F8B;
+F9B6;79AE;79AE;79AE;79AE;
+F9B7;91B4;91B4;91B4;91B4;
+F9B8;96B8;96B8;96B8;96B8;
+F9B9;60E1;60E1;60E1;60E1;
+F9BA;4E86;4E86;4E86;4E86;
+F9BB;50DA;50DA;50DA;50DA;
+F9BC;5BEE;5BEE;5BEE;5BEE;
+F9BD;5C3F;5C3F;5C3F;5C3F;
+F9BE;6599;6599;6599;6599;
+F9BF;6A02;6A02;6A02;6A02;
+F9C0;71CE;71CE;71CE;71CE;
+F9C1;7642;7642;7642;7642;
+F9C2;84FC;84FC;84FC;84FC;
+F9C3;907C;907C;907C;907C;
+F9C4;9F8D;9F8D;9F8D;9F8D;
+F9C5;6688;6688;6688;6688;
+F9C6;962E;962E;962E;962E;
+F9C7;5289;5289;5289;5289;
+F9C8;677B;677B;677B;677B;
+F9C9;67F3;67F3;67F3;67F3;
+F9CA;6D41;6D41;6D41;6D41;
+F9CB;6E9C;6E9C;6E9C;6E9C;
+F9CC;7409;7409;7409;7409;
+F9CD;7559;7559;7559;7559;
+F9CE;786B;786B;786B;786B;
+F9CF;7D10;7D10;7D10;7D10;
+F9D0;985E;985E;985E;985E;
+F9D1;516D;516D;516D;516D;
+F9D2;622E;622E;622E;622E;
+F9D3;9678;9678;9678;9678;
+F9D4;502B;502B;502B;502B;
+F9D5;5D19;5D19;5D19;5D19;
+F9D6;6DEA;6DEA;6DEA;6DEA;
+F9D7;8F2A;8F2A;8F2A;8F2A;
+F9D8;5F8B;5F8B;5F8B;5F8B;
+F9D9;6144;6144;6144;6144;
+F9DA;6817;6817;6817;6817;
+F9DB;7387;7387;7387;7387;
+F9DC;9686;9686;9686;9686;
+F9DD;5229;5229;5229;5229;
+F9DE;540F;540F;540F;540F;
+F9DF;5C65;5C65;5C65;5C65;
+F9E0;6613;6613;6613;6613;
+F9E1;674E;674E;674E;674E;
+F9E2;68A8;68A8;68A8;68A8;
+F9E3;6CE5;6CE5;6CE5;6CE5;
+F9E4;7406;7406;7406;7406;
+F9E5;75E2;75E2;75E2;75E2;
+F9E6;7F79;7F79;7F79;7F79;
+F9E7;88CF;88CF;88CF;88CF;
+F9E8;88E1;88E1;88E1;88E1;
+F9E9;91CC;91CC;91CC;91CC;
+F9EA;96E2;96E2;96E2;96E2;
+F9EB;533F;533F;533F;533F;
+F9EC;6EBA;6EBA;6EBA;6EBA;
+F9ED;541D;541D;541D;541D;
+F9EE;71D0;71D0;71D0;71D0;
+F9EF;7498;7498;7498;7498;
+F9F0;85FA;85FA;85FA;85FA;
+F9F1;96A3;96A3;96A3;96A3;
+F9F2;9C57;9C57;9C57;9C57;
+F9F3;9E9F;9E9F;9E9F;9E9F;
+F9F4;6797;6797;6797;6797;
+F9F5;6DCB;6DCB;6DCB;6DCB;
+F9F6;81E8;81E8;81E8;81E8;
+F9F7;7ACB;7ACB;7ACB;7ACB;
+F9F8;7B20;7B20;7B20;7B20;
+F9F9;7C92;7C92;7C92;7C92;
+F9FA;72C0;72C0;72C0;72C0;
+F9FB;7099;7099;7099;7099;
+F9FC;8B58;8B58;8B58;8B58;
+F9FD;4EC0;4EC0;4EC0;4EC0;
+F9FE;8336;8336;8336;8336;
+F9FF;523A;523A;523A;523A;
+FA00;5207;5207;5207;5207;
+FA01;5EA6;5EA6;5EA6;5EA6;
+FA02;62D3;62D3;62D3;62D3;
+FA03;7CD6;7CD6;7CD6;7CD6;
+FA04;5B85;5B85;5B85;5B85;
+FA05;6D1E;6D1E;6D1E;6D1E;
+FA06;66B4;66B4;66B4;66B4;
+FA07;8F3B;8F3B;8F3B;8F3B;
+FA08;884C;884C;884C;884C;
+FA09;964D;964D;964D;964D;
+FA0A;898B;898B;898B;898B;
+FA0B;5ED3;5ED3;5ED3;5ED3;
+FA0C;5140;5140;5140;5140;
+FA0D;55C0;55C0;55C0;55C0;
+FA10;585A;585A;585A;585A;
+FA12;6674;6674;6674;6674;
+FA15;51DE;51DE;51DE;51DE;
+FA16;732A;732A;732A;732A;
+FA17;76CA;76CA;76CA;76CA;
+FA18;793C;793C;793C;793C;
+FA19;795E;795E;795E;795E;
+FA1A;7965;7965;7965;7965;
+FA1B;798F;798F;798F;798F;
+FA1C;9756;9756;9756;9756;
+FA1D;7CBE;7CBE;7CBE;7CBE;
+FA1E;7FBD;7FBD;7FBD;7FBD;
+FA20;8612;8612;8612;8612;
+FA22;8AF8;8AF8;8AF8;8AF8;
+FA25;9038;9038;9038;9038;
+FA26;90FD;90FD;90FD;90FD;
+FA2A;98EF;98EF;98EF;98EF;
+FA2B;98FC;98FC;98FC;98FC;
+FA2C;9928;9928;9928;9928;
+FA2D;9DB4;9DB4;9DB4;9DB4;
+FA30;4FAE;4FAE;4FAE;4FAE;
+FA31;50E7;50E7;50E7;50E7;
+FA32;514D;514D;514D;514D;
+FA33;52C9;52C9;52C9;52C9;
+FA34;52E4;52E4;52E4;52E4;
+FA35;5351;5351;5351;5351;
+FA36;559D;559D;559D;559D;
+FA37;5606;5606;5606;5606;
+FA38;5668;5668;5668;5668;
+FA39;5840;5840;5840;5840;
+FA3A;58A8;58A8;58A8;58A8;
+FA3B;5C64;5C64;5C64;5C64;
+FA3C;5C6E;5C6E;5C6E;5C6E;
+FA3D;6094;6094;6094;6094;
+FA3E;6168;6168;6168;6168;
+FA3F;618E;618E;618E;618E;
+FA40;61F2;61F2;61F2;61F2;
+FA41;654F;654F;654F;654F;
+FA42;65E2;65E2;65E2;65E2;
+FA43;6691;6691;6691;6691;
+FA44;6885;6885;6885;6885;
+FA45;6D77;6D77;6D77;6D77;
+FA46;6E1A;6E1A;6E1A;6E1A;
+FA47;6F22;6F22;6F22;6F22;
+FA48;716E;716E;716E;716E;
+FA49;722B;722B;722B;722B;
+FA4A;7422;7422;7422;7422;
+FA4B;7891;7891;7891;7891;
+FA4C;793E;793E;793E;793E;
+FA4D;7949;7949;7949;7949;
+FA4E;7948;7948;7948;7948;
+FA4F;7950;7950;7950;7950;
+FA50;7956;7956;7956;7956;
+FA51;795D;795D;795D;795D;
+FA52;798D;798D;798D;798D;
+FA53;798E;798E;798E;798E;
+FA54;7A40;7A40;7A40;7A40;
+FA55;7A81;7A81;7A81;7A81;
+FA56;7BC0;7BC0;7BC0;7BC0;
+FA57;7DF4;7DF4;7DF4;7DF4;
+FA58;7E09;7E09;7E09;7E09;
+FA59;7E41;7E41;7E41;7E41;
+FA5A;7F72;7F72;7F72;7F72;
+FA5B;8005;8005;8005;8005;
+FA5C;81ED;81ED;81ED;81ED;
+FA5D;8279;8279;8279;8279;
+FA5E;8279;8279;8279;8279;
+FA5F;8457;8457;8457;8457;
+FA60;8910;8910;8910;8910;
+FA61;8996;8996;8996;8996;
+FA62;8B01;8B01;8B01;8B01;
+FA63;8B39;8B39;8B39;8B39;
+FA64;8CD3;8CD3;8CD3;8CD3;
+FA65;8D08;8D08;8D08;8D08;
+FA66;8FB6;8FB6;8FB6;8FB6;
+FA67;9038;9038;9038;9038;
+FA68;96E3;96E3;96E3;96E3;
+FA69;97FF;97FF;97FF;97FF;
+FA6A;983B;983B;983B;983B;
+FA70;4E26;4E26;4E26;4E26;
+FA71;51B5;51B5;51B5;51B5;
+FA72;5168;5168;5168;5168;
+FA73;4F80;4F80;4F80;4F80;
+FA74;5145;5145;5145;5145;
+FA75;5180;5180;5180;5180;
+FA76;52C7;52C7;52C7;52C7;
+FA77;52FA;52FA;52FA;52FA;
+FA78;559D;559D;559D;559D;
+FA79;5555;5555;5555;5555;
+FA7A;5599;5599;5599;5599;
+FA7B;55E2;55E2;55E2;55E2;
+FA7C;585A;585A;585A;585A;
+FA7D;58B3;58B3;58B3;58B3;
+FA7E;5944;5944;5944;5944;
+FA7F;5954;5954;5954;5954;
+FA80;5A62;5A62;5A62;5A62;
+FA81;5B28;5B28;5B28;5B28;
+FA82;5ED2;5ED2;5ED2;5ED2;
+FA83;5ED9;5ED9;5ED9;5ED9;
+FA84;5F69;5F69;5F69;5F69;
+FA85;5FAD;5FAD;5FAD;5FAD;
+FA86;60D8;60D8;60D8;60D8;
+FA87;614E;614E;614E;614E;
+FA88;6108;6108;6108;6108;
+FA89;618E;618E;618E;618E;
+FA8A;6160;6160;6160;6160;
+FA8B;61F2;61F2;61F2;61F2;
+FA8C;6234;6234;6234;6234;
+FA8D;63C4;63C4;63C4;63C4;
+FA8E;641C;641C;641C;641C;
+FA8F;6452;6452;6452;6452;
+FA90;6556;6556;6556;6556;
+FA91;6674;6674;6674;6674;
+FA92;6717;6717;6717;6717;
+FA93;671B;671B;671B;671B;
+FA94;6756;6756;6756;6756;
+FA95;6B79;6B79;6B79;6B79;
+FA96;6BBA;6BBA;6BBA;6BBA;
+FA97;6D41;6D41;6D41;6D41;
+FA98;6EDB;6EDB;6EDB;6EDB;
+FA99;6ECB;6ECB;6ECB;6ECB;
+FA9A;6F22;6F22;6F22;6F22;
+FA9B;701E;701E;701E;701E;
+FA9C;716E;716E;716E;716E;
+FA9D;77A7;77A7;77A7;77A7;
+FA9E;7235;7235;7235;7235;
+FA9F;72AF;72AF;72AF;72AF;
+FAA0;732A;732A;732A;732A;
+FAA1;7471;7471;7471;7471;
+FAA2;7506;7506;7506;7506;
+FAA3;753B;753B;753B;753B;
+FAA4;761D;761D;761D;761D;
+FAA5;761F;761F;761F;761F;
+FAA6;76CA;76CA;76CA;76CA;
+FAA7;76DB;76DB;76DB;76DB;
+FAA8;76F4;76F4;76F4;76F4;
+FAA9;774A;774A;774A;774A;
+FAAA;7740;7740;7740;7740;
+FAAB;78CC;78CC;78CC;78CC;
+FAAC;7AB1;7AB1;7AB1;7AB1;
+FAAD;7BC0;7BC0;7BC0;7BC0;
+FAAE;7C7B;7C7B;7C7B;7C7B;
+FAAF;7D5B;7D5B;7D5B;7D5B;
+FAB0;7DF4;7DF4;7DF4;7DF4;
+FAB1;7F3E;7F3E;7F3E;7F3E;
+FAB2;8005;8005;8005;8005;
+FAB3;8352;8352;8352;8352;
+FAB4;83EF;83EF;83EF;83EF;
+FAB5;8779;8779;8779;8779;
+FAB6;8941;8941;8941;8941;
+FAB7;8986;8986;8986;8986;
+FAB8;8996;8996;8996;8996;
+FAB9;8ABF;8ABF;8ABF;8ABF;
+FABA;8AF8;8AF8;8AF8;8AF8;
+FABB;8ACB;8ACB;8ACB;8ACB;
+FABC;8B01;8B01;8B01;8B01;
+FABD;8AFE;8AFE;8AFE;8AFE;
+FABE;8AED;8AED;8AED;8AED;
+FABF;8B39;8B39;8B39;8B39;
+FAC0;8B8A;8B8A;8B8A;8B8A;
+FAC1;8D08;8D08;8D08;8D08;
+FAC2;8F38;8F38;8F38;8F38;
+FAC3;9072;9072;9072;9072;
+FAC4;9199;9199;9199;9199;
+FAC5;9276;9276;9276;9276;
+FAC6;967C;967C;967C;967C;
+FAC7;96E3;96E3;96E3;96E3;
+FAC8;9756;9756;9756;9756;
+FAC9;97DB;97DB;97DB;97DB;
+FACA;97FF;97FF;97FF;97FF;
+FACB;980B;980B;980B;980B;
+FACC;983B;983B;983B;983B;
+FACD;9B12;9B12;9B12;9B12;
+FACE;9F9C;9F9C;9F9C;9F9C;
+FACF;2284A;2284A;2284A;2284A;
+FAD0;22844;22844;22844;22844;
+FAD1;233D5;233D5;233D5;233D5;
+FAD2;3B9D;3B9D;3B9D;3B9D;
+FAD3;4018;4018;4018;4018;
+FAD4;4039;4039;4039;4039;
+FAD5;25249;25249;25249;25249;
+FAD6;25CD0;25CD0;25CD0;25CD0;
+FAD7;27ED3;27ED3;27ED3;27ED3;
+FAD8;9F43;9F43;9F43;9F43;
+FAD9;9F8E;9F8E;9F8E;9F8E;
+FB00;FB00;FB00;0066 0066;0066 0066;
+FB01;FB01;FB01;0066 0069;0066 0069;
+FB02;FB02;FB02;0066 006C;0066 006C;
+FB03;FB03;FB03;0066 0066 0069;0066 0066 0069;
+FB04;FB04;FB04;0066 0066 006C;0066 0066 006C;
+FB05;FB05;FB05;0073 0074;0073 0074;
+FB06;FB06;FB06;0073 0074;0073 0074;
+FB13;FB13;FB13;0574 0576;0574 0576;
+FB14;FB14;FB14;0574 0565;0574 0565;
+FB15;FB15;FB15;0574 056B;0574 056B;
+FB16;FB16;FB16;057E 0576;057E 0576;
+FB17;FB17;FB17;0574 056D;0574 056D;
+FB1D;05D9 05B4;05D9 05B4;05D9 05B4;05D9 05B4;
+FB1F;05F2 05B7;05F2 05B7;05F2 05B7;05F2 05B7;
+FB20;FB20;FB20;05E2;05E2;
+FB21;FB21;FB21;05D0;05D0;
+FB22;FB22;FB22;05D3;05D3;
+FB23;FB23;FB23;05D4;05D4;
+FB24;FB24;FB24;05DB;05DB;
+FB25;FB25;FB25;05DC;05DC;
+FB26;FB26;FB26;05DD;05DD;
+FB27;FB27;FB27;05E8;05E8;
+FB28;FB28;FB28;05EA;05EA;
+FB29;FB29;FB29;002B;002B;
+FB2A;05E9 05C1;05E9 05C1;05E9 05C1;05E9 05C1;
+FB2B;05E9 05C2;05E9 05C2;05E9 05C2;05E9 05C2;
+FB2C;05E9 05BC 05C1;05E9 05BC 05C1;05E9 05BC 05C1;05E9 05BC 05C1;
+FB2D;05E9 05BC 05C2;05E9 05BC 05C2;05E9 05BC 05C2;05E9 05BC 05C2;
+FB2E;05D0 05B7;05D0 05B7;05D0 05B7;05D0 05B7;
+FB2F;05D0 05B8;05D0 05B8;05D0 05B8;05D0 05B8;
+FB30;05D0 05BC;05D0 05BC;05D0 05BC;05D0 05BC;
+FB31;05D1 05BC;05D1 05BC;05D1 05BC;05D1 05BC;
+FB32;05D2 05BC;05D2 05BC;05D2 05BC;05D2 05BC;
+FB33;05D3 05BC;05D3 05BC;05D3 05BC;05D3 05BC;
+FB34;05D4 05BC;05D4 05BC;05D4 05BC;05D4 05BC;
+FB35;05D5 05BC;05D5 05BC;05D5 05BC;05D5 05BC;
+FB36;05D6 05BC;05D6 05BC;05D6 05BC;05D6 05BC;
+FB38;05D8 05BC;05D8 05BC;05D8 05BC;05D8 05BC;
+FB39;05D9 05BC;05D9 05BC;05D9 05BC;05D9 05BC;
+FB3A;05DA 05BC;05DA 05BC;05DA 05BC;05DA 05BC;
+FB3B;05DB 05BC;05DB 05BC;05DB 05BC;05DB 05BC;
+FB3C;05DC 05BC;05DC 05BC;05DC 05BC;05DC 05BC;
+FB3E;05DE 05BC;05DE 05BC;05DE 05BC;05DE 05BC;
+FB40;05E0 05BC;05E0 05BC;05E0 05BC;05E0 05BC;
+FB41;05E1 05BC;05E1 05BC;05E1 05BC;05E1 05BC;
+FB43;05E3 05BC;05E3 05BC;05E3 05BC;05E3 05BC;
+FB44;05E4 05BC;05E4 05BC;05E4 05BC;05E4 05BC;
+FB46;05E6 05BC;05E6 05BC;05E6 05BC;05E6 05BC;
+FB47;05E7 05BC;05E7 05BC;05E7 05BC;05E7 05BC;
+FB48;05E8 05BC;05E8 05BC;05E8 05BC;05E8 05BC;
+FB49;05E9 05BC;05E9 05BC;05E9 05BC;05E9 05BC;
+FB4A;05EA 05BC;05EA 05BC;05EA 05BC;05EA 05BC;
+FB4B;05D5 05B9;05D5 05B9;05D5 05B9;05D5 05B9;
+FB4C;05D1 05BF;05D1 05BF;05D1 05BF;05D1 05BF;
+FB4D;05DB 05BF;05DB 05BF;05DB 05BF;05DB 05BF;
+FB4E;05E4 05BF;05E4 05BF;05E4 05BF;05E4 05BF;
+FB4F;FB4F;FB4F;05D0 05DC;05D0 05DC;
+FB50;FB50;FB50;0671;0671;
+FB51;FB51;FB51;0671;0671;
+FB52;FB52;FB52;067B;067B;
+FB53;FB53;FB53;067B;067B;
+FB54;FB54;FB54;067B;067B;
+FB55;FB55;FB55;067B;067B;
+FB56;FB56;FB56;067E;067E;
+FB57;FB57;FB57;067E;067E;
+FB58;FB58;FB58;067E;067E;
+FB59;FB59;FB59;067E;067E;
+FB5A;FB5A;FB5A;0680;0680;
+FB5B;FB5B;FB5B;0680;0680;
+FB5C;FB5C;FB5C;0680;0680;
+FB5D;FB5D;FB5D;0680;0680;
+FB5E;FB5E;FB5E;067A;067A;
+FB5F;FB5F;FB5F;067A;067A;
+FB60;FB60;FB60;067A;067A;
+FB61;FB61;FB61;067A;067A;
+FB62;FB62;FB62;067F;067F;
+FB63;FB63;FB63;067F;067F;
+FB64;FB64;FB64;067F;067F;
+FB65;FB65;FB65;067F;067F;
+FB66;FB66;FB66;0679;0679;
+FB67;FB67;FB67;0679;0679;
+FB68;FB68;FB68;0679;0679;
+FB69;FB69;FB69;0679;0679;
+FB6A;FB6A;FB6A;06A4;06A4;
+FB6B;FB6B;FB6B;06A4;06A4;
+FB6C;FB6C;FB6C;06A4;06A4;
+FB6D;FB6D;FB6D;06A4;06A4;
+FB6E;FB6E;FB6E;06A6;06A6;
+FB6F;FB6F;FB6F;06A6;06A6;
+FB70;FB70;FB70;06A6;06A6;
+FB71;FB71;FB71;06A6;06A6;
+FB72;FB72;FB72;0684;0684;
+FB73;FB73;FB73;0684;0684;
+FB74;FB74;FB74;0684;0684;
+FB75;FB75;FB75;0684;0684;
+FB76;FB76;FB76;0683;0683;
+FB77;FB77;FB77;0683;0683;
+FB78;FB78;FB78;0683;0683;
+FB79;FB79;FB79;0683;0683;
+FB7A;FB7A;FB7A;0686;0686;
+FB7B;FB7B;FB7B;0686;0686;
+FB7C;FB7C;FB7C;0686;0686;
+FB7D;FB7D;FB7D;0686;0686;
+FB7E;FB7E;FB7E;0687;0687;
+FB7F;FB7F;FB7F;0687;0687;
+FB80;FB80;FB80;0687;0687;
+FB81;FB81;FB81;0687;0687;
+FB82;FB82;FB82;068D;068D;
+FB83;FB83;FB83;068D;068D;
+FB84;FB84;FB84;068C;068C;
+FB85;FB85;FB85;068C;068C;
+FB86;FB86;FB86;068E;068E;
+FB87;FB87;FB87;068E;068E;
+FB88;FB88;FB88;0688;0688;
+FB89;FB89;FB89;0688;0688;
+FB8A;FB8A;FB8A;0698;0698;
+FB8B;FB8B;FB8B;0698;0698;
+FB8C;FB8C;FB8C;0691;0691;
+FB8D;FB8D;FB8D;0691;0691;
+FB8E;FB8E;FB8E;06A9;06A9;
+FB8F;FB8F;FB8F;06A9;06A9;
+FB90;FB90;FB90;06A9;06A9;
+FB91;FB91;FB91;06A9;06A9;
+FB92;FB92;FB92;06AF;06AF;
+FB93;FB93;FB93;06AF;06AF;
+FB94;FB94;FB94;06AF;06AF;
+FB95;FB95;FB95;06AF;06AF;
+FB96;FB96;FB96;06B3;06B3;
+FB97;FB97;FB97;06B3;06B3;
+FB98;FB98;FB98;06B3;06B3;
+FB99;FB99;FB99;06B3;06B3;
+FB9A;FB9A;FB9A;06B1;06B1;
+FB9B;FB9B;FB9B;06B1;06B1;
+FB9C;FB9C;FB9C;06B1;06B1;
+FB9D;FB9D;FB9D;06B1;06B1;
+FB9E;FB9E;FB9E;06BA;06BA;
+FB9F;FB9F;FB9F;06BA;06BA;
+FBA0;FBA0;FBA0;06BB;06BB;
+FBA1;FBA1;FBA1;06BB;06BB;
+FBA2;FBA2;FBA2;06BB;06BB;
+FBA3;FBA3;FBA3;06BB;06BB;
+FBA4;FBA4;FBA4;06C0;06D5 0654;
+FBA5;FBA5;FBA5;06C0;06D5 0654;
+FBA6;FBA6;FBA6;06C1;06C1;
+FBA7;FBA7;FBA7;06C1;06C1;
+FBA8;FBA8;FBA8;06C1;06C1;
+FBA9;FBA9;FBA9;06C1;06C1;
+FBAA;FBAA;FBAA;06BE;06BE;
+FBAB;FBAB;FBAB;06BE;06BE;
+FBAC;FBAC;FBAC;06BE;06BE;
+FBAD;FBAD;FBAD;06BE;06BE;
+FBAE;FBAE;FBAE;06D2;06D2;
+FBAF;FBAF;FBAF;06D2;06D2;
+FBB0;FBB0;FBB0;06D3;06D2 0654;
+FBB1;FBB1;FBB1;06D3;06D2 0654;
+FBD3;FBD3;FBD3;06AD;06AD;
+FBD4;FBD4;FBD4;06AD;06AD;
+FBD5;FBD5;FBD5;06AD;06AD;
+FBD6;FBD6;FBD6;06AD;06AD;
+FBD7;FBD7;FBD7;06C7;06C7;
+FBD8;FBD8;FBD8;06C7;06C7;
+FBD9;FBD9;FBD9;06C6;06C6;
+FBDA;FBDA;FBDA;06C6;06C6;
+FBDB;FBDB;FBDB;06C8;06C8;
+FBDC;FBDC;FBDC;06C8;06C8;
+FBDD;FBDD;FBDD;06C7 0674;06C7 0674;
+FBDE;FBDE;FBDE;06CB;06CB;
+FBDF;FBDF;FBDF;06CB;06CB;
+FBE0;FBE0;FBE0;06C5;06C5;
+FBE1;FBE1;FBE1;06C5;06C5;
+FBE2;FBE2;FBE2;06C9;06C9;
+FBE3;FBE3;FBE3;06C9;06C9;
+FBE4;FBE4;FBE4;06D0;06D0;
+FBE5;FBE5;FBE5;06D0;06D0;
+FBE6;FBE6;FBE6;06D0;06D0;
+FBE7;FBE7;FBE7;06D0;06D0;
+FBE8;FBE8;FBE8;0649;0649;
+FBE9;FBE9;FBE9;0649;0649;
+FBEA;FBEA;FBEA;0626 0627;064A 0654 0627;
+FBEB;FBEB;FBEB;0626 0627;064A 0654 0627;
+FBEC;FBEC;FBEC;0626 06D5;064A 0654 06D5;
+FBED;FBED;FBED;0626 06D5;064A 0654 06D5;
+FBEE;FBEE;FBEE;0626 0648;064A 0654 0648;
+FBEF;FBEF;FBEF;0626 0648;064A 0654 0648;
+FBF0;FBF0;FBF0;0626 06C7;064A 0654 06C7;
+FBF1;FBF1;FBF1;0626 06C7;064A 0654 06C7;
+FBF2;FBF2;FBF2;0626 06C6;064A 0654 06C6;
+FBF3;FBF3;FBF3;0626 06C6;064A 0654 06C6;
+FBF4;FBF4;FBF4;0626 06C8;064A 0654 06C8;
+FBF5;FBF5;FBF5;0626 06C8;064A 0654 06C8;
+FBF6;FBF6;FBF6;0626 06D0;064A 0654 06D0;
+FBF7;FBF7;FBF7;0626 06D0;064A 0654 06D0;
+FBF8;FBF8;FBF8;0626 06D0;064A 0654 06D0;
+FBF9;FBF9;FBF9;0626 0649;064A 0654 0649;
+FBFA;FBFA;FBFA;0626 0649;064A 0654 0649;
+FBFB;FBFB;FBFB;0626 0649;064A 0654 0649;
+FBFC;FBFC;FBFC;06CC;06CC;
+FBFD;FBFD;FBFD;06CC;06CC;
+FBFE;FBFE;FBFE;06CC;06CC;
+FBFF;FBFF;FBFF;06CC;06CC;
+FC00;FC00;FC00;0626 062C;064A 0654 062C;
+FC01;FC01;FC01;0626 062D;064A 0654 062D;
+FC02;FC02;FC02;0626 0645;064A 0654 0645;
+FC03;FC03;FC03;0626 0649;064A 0654 0649;
+FC04;FC04;FC04;0626 064A;064A 0654 064A;
+FC05;FC05;FC05;0628 062C;0628 062C;
+FC06;FC06;FC06;0628 062D;0628 062D;
+FC07;FC07;FC07;0628 062E;0628 062E;
+FC08;FC08;FC08;0628 0645;0628 0645;
+FC09;FC09;FC09;0628 0649;0628 0649;
+FC0A;FC0A;FC0A;0628 064A;0628 064A;
+FC0B;FC0B;FC0B;062A 062C;062A 062C;
+FC0C;FC0C;FC0C;062A 062D;062A 062D;
+FC0D;FC0D;FC0D;062A 062E;062A 062E;
+FC0E;FC0E;FC0E;062A 0645;062A 0645;
+FC0F;FC0F;FC0F;062A 0649;062A 0649;
+FC10;FC10;FC10;062A 064A;062A 064A;
+FC11;FC11;FC11;062B 062C;062B 062C;
+FC12;FC12;FC12;062B 0645;062B 0645;
+FC13;FC13;FC13;062B 0649;062B 0649;
+FC14;FC14;FC14;062B 064A;062B 064A;
+FC15;FC15;FC15;062C 062D;062C 062D;
+FC16;FC16;FC16;062C 0645;062C 0645;
+FC17;FC17;FC17;062D 062C;062D 062C;
+FC18;FC18;FC18;062D 0645;062D 0645;
+FC19;FC19;FC19;062E 062C;062E 062C;
+FC1A;FC1A;FC1A;062E 062D;062E 062D;
+FC1B;FC1B;FC1B;062E 0645;062E 0645;
+FC1C;FC1C;FC1C;0633 062C;0633 062C;
+FC1D;FC1D;FC1D;0633 062D;0633 062D;
+FC1E;FC1E;FC1E;0633 062E;0633 062E;
+FC1F;FC1F;FC1F;0633 0645;0633 0645;
+FC20;FC20;FC20;0635 062D;0635 062D;
+FC21;FC21;FC21;0635 0645;0635 0645;
+FC22;FC22;FC22;0636 062C;0636 062C;
+FC23;FC23;FC23;0636 062D;0636 062D;
+FC24;FC24;FC24;0636 062E;0636 062E;
+FC25;FC25;FC25;0636 0645;0636 0645;
+FC26;FC26;FC26;0637 062D;0637 062D;
+FC27;FC27;FC27;0637 0645;0637 0645;
+FC28;FC28;FC28;0638 0645;0638 0645;
+FC29;FC29;FC29;0639 062C;0639 062C;
+FC2A;FC2A;FC2A;0639 0645;0639 0645;
+FC2B;FC2B;FC2B;063A 062C;063A 062C;
+FC2C;FC2C;FC2C;063A 0645;063A 0645;
+FC2D;FC2D;FC2D;0641 062C;0641 062C;
+FC2E;FC2E;FC2E;0641 062D;0641 062D;
+FC2F;FC2F;FC2F;0641 062E;0641 062E;
+FC30;FC30;FC30;0641 0645;0641 0645;
+FC31;FC31;FC31;0641 0649;0641 0649;
+FC32;FC32;FC32;0641 064A;0641 064A;
+FC33;FC33;FC33;0642 062D;0642 062D;
+FC34;FC34;FC34;0642 0645;0642 0645;
+FC35;FC35;FC35;0642 0649;0642 0649;
+FC36;FC36;FC36;0642 064A;0642 064A;
+FC37;FC37;FC37;0643 0627;0643 0627;
+FC38;FC38;FC38;0643 062C;0643 062C;
+FC39;FC39;FC39;0643 062D;0643 062D;
+FC3A;FC3A;FC3A;0643 062E;0643 062E;
+FC3B;FC3B;FC3B;0643 0644;0643 0644;
+FC3C;FC3C;FC3C;0643 0645;0643 0645;
+FC3D;FC3D;FC3D;0643 0649;0643 0649;
+FC3E;FC3E;FC3E;0643 064A;0643 064A;
+FC3F;FC3F;FC3F;0644 062C;0644 062C;
+FC40;FC40;FC40;0644 062D;0644 062D;
+FC41;FC41;FC41;0644 062E;0644 062E;
+FC42;FC42;FC42;0644 0645;0644 0645;
+FC43;FC43;FC43;0644 0649;0644 0649;
+FC44;FC44;FC44;0644 064A;0644 064A;
+FC45;FC45;FC45;0645 062C;0645 062C;
+FC46;FC46;FC46;0645 062D;0645 062D;
+FC47;FC47;FC47;0645 062E;0645 062E;
+FC48;FC48;FC48;0645 0645;0645 0645;
+FC49;FC49;FC49;0645 0649;0645 0649;
+FC4A;FC4A;FC4A;0645 064A;0645 064A;
+FC4B;FC4B;FC4B;0646 062C;0646 062C;
+FC4C;FC4C;FC4C;0646 062D;0646 062D;
+FC4D;FC4D;FC4D;0646 062E;0646 062E;
+FC4E;FC4E;FC4E;0646 0645;0646 0645;
+FC4F;FC4F;FC4F;0646 0649;0646 0649;
+FC50;FC50;FC50;0646 064A;0646 064A;
+FC51;FC51;FC51;0647 062C;0647 062C;
+FC52;FC52;FC52;0647 0645;0647 0645;
+FC53;FC53;FC53;0647 0649;0647 0649;
+FC54;FC54;FC54;0647 064A;0647 064A;
+FC55;FC55;FC55;064A 062C;064A 062C;
+FC56;FC56;FC56;064A 062D;064A 062D;
+FC57;FC57;FC57;064A 062E;064A 062E;
+FC58;FC58;FC58;064A 0645;064A 0645;
+FC59;FC59;FC59;064A 0649;064A 0649;
+FC5A;FC5A;FC5A;064A 064A;064A 064A;
+FC5B;FC5B;FC5B;0630 0670;0630 0670;
+FC5C;FC5C;FC5C;0631 0670;0631 0670;
+FC5D;FC5D;FC5D;0649 0670;0649 0670;
+FC5E;FC5E;FC5E;0020 064C 0651;0020 064C 0651;
+FC5F;FC5F;FC5F;0020 064D 0651;0020 064D 0651;
+FC60;FC60;FC60;0020 064E 0651;0020 064E 0651;
+FC61;FC61;FC61;0020 064F 0651;0020 064F 0651;
+FC62;FC62;FC62;0020 0650 0651;0020 0650 0651;
+FC63;FC63;FC63;0020 0651 0670;0020 0651 0670;
+FC64;FC64;FC64;0626 0631;064A 0654 0631;
+FC65;FC65;FC65;0626 0632;064A 0654 0632;
+FC66;FC66;FC66;0626 0645;064A 0654 0645;
+FC67;FC67;FC67;0626 0646;064A 0654 0646;
+FC68;FC68;FC68;0626 0649;064A 0654 0649;
+FC69;FC69;FC69;0626 064A;064A 0654 064A;
+FC6A;FC6A;FC6A;0628 0631;0628 0631;
+FC6B;FC6B;FC6B;0628 0632;0628 0632;
+FC6C;FC6C;FC6C;0628 0645;0628 0645;
+FC6D;FC6D;FC6D;0628 0646;0628 0646;
+FC6E;FC6E;FC6E;0628 0649;0628 0649;
+FC6F;FC6F;FC6F;0628 064A;0628 064A;
+FC70;FC70;FC70;062A 0631;062A 0631;
+FC71;FC71;FC71;062A 0632;062A 0632;
+FC72;FC72;FC72;062A 0645;062A 0645;
+FC73;FC73;FC73;062A 0646;062A 0646;
+FC74;FC74;FC74;062A 0649;062A 0649;
+FC75;FC75;FC75;062A 064A;062A 064A;
+FC76;FC76;FC76;062B 0631;062B 0631;
+FC77;FC77;FC77;062B 0632;062B 0632;
+FC78;FC78;FC78;062B 0645;062B 0645;
+FC79;FC79;FC79;062B 0646;062B 0646;
+FC7A;FC7A;FC7A;062B 0649;062B 0649;
+FC7B;FC7B;FC7B;062B 064A;062B 064A;
+FC7C;FC7C;FC7C;0641 0649;0641 0649;
+FC7D;FC7D;FC7D;0641 064A;0641 064A;
+FC7E;FC7E;FC7E;0642 0649;0642 0649;
+FC7F;FC7F;FC7F;0642 064A;0642 064A;
+FC80;FC80;FC80;0643 0627;0643 0627;
+FC81;FC81;FC81;0643 0644;0643 0644;
+FC82;FC82;FC82;0643 0645;0643 0645;
+FC83;FC83;FC83;0643 0649;0643 0649;
+FC84;FC84;FC84;0643 064A;0643 064A;
+FC85;FC85;FC85;0644 0645;0644 0645;
+FC86;FC86;FC86;0644 0649;0644 0649;
+FC87;FC87;FC87;0644 064A;0644 064A;
+FC88;FC88;FC88;0645 0627;0645 0627;
+FC89;FC89;FC89;0645 0645;0645 0645;
+FC8A;FC8A;FC8A;0646 0631;0646 0631;
+FC8B;FC8B;FC8B;0646 0632;0646 0632;
+FC8C;FC8C;FC8C;0646 0645;0646 0645;
+FC8D;FC8D;FC8D;0646 0646;0646 0646;
+FC8E;FC8E;FC8E;0646 0649;0646 0649;
+FC8F;FC8F;FC8F;0646 064A;0646 064A;
+FC90;FC90;FC90;0649 0670;0649 0670;
+FC91;FC91;FC91;064A 0631;064A 0631;
+FC92;FC92;FC92;064A 0632;064A 0632;
+FC93;FC93;FC93;064A 0645;064A 0645;
+FC94;FC94;FC94;064A 0646;064A 0646;
+FC95;FC95;FC95;064A 0649;064A 0649;
+FC96;FC96;FC96;064A 064A;064A 064A;
+FC97;FC97;FC97;0626 062C;064A 0654 062C;
+FC98;FC98;FC98;0626 062D;064A 0654 062D;
+FC99;FC99;FC99;0626 062E;064A 0654 062E;
+FC9A;FC9A;FC9A;0626 0645;064A 0654 0645;
+FC9B;FC9B;FC9B;0626 0647;064A 0654 0647;
+FC9C;FC9C;FC9C;0628 062C;0628 062C;
+FC9D;FC9D;FC9D;0628 062D;0628 062D;
+FC9E;FC9E;FC9E;0628 062E;0628 062E;
+FC9F;FC9F;FC9F;0628 0645;0628 0645;
+FCA0;FCA0;FCA0;0628 0647;0628 0647;
+FCA1;FCA1;FCA1;062A 062C;062A 062C;
+FCA2;FCA2;FCA2;062A 062D;062A 062D;
+FCA3;FCA3;FCA3;062A 062E;062A 062E;
+FCA4;FCA4;FCA4;062A 0645;062A 0645;
+FCA5;FCA5;FCA5;062A 0647;062A 0647;
+FCA6;FCA6;FCA6;062B 0645;062B 0645;
+FCA7;FCA7;FCA7;062C 062D;062C 062D;
+FCA8;FCA8;FCA8;062C 0645;062C 0645;
+FCA9;FCA9;FCA9;062D 062C;062D 062C;
+FCAA;FCAA;FCAA;062D 0645;062D 0645;
+FCAB;FCAB;FCAB;062E 062C;062E 062C;
+FCAC;FCAC;FCAC;062E 0645;062E 0645;
+FCAD;FCAD;FCAD;0633 062C;0633 062C;
+FCAE;FCAE;FCAE;0633 062D;0633 062D;
+FCAF;FCAF;FCAF;0633 062E;0633 062E;
+FCB0;FCB0;FCB0;0633 0645;0633 0645;
+FCB1;FCB1;FCB1;0635 062D;0635 062D;
+FCB2;FCB2;FCB2;0635 062E;0635 062E;
+FCB3;FCB3;FCB3;0635 0645;0635 0645;
+FCB4;FCB4;FCB4;0636 062C;0636 062C;
+FCB5;FCB5;FCB5;0636 062D;0636 062D;
+FCB6;FCB6;FCB6;0636 062E;0636 062E;
+FCB7;FCB7;FCB7;0636 0645;0636 0645;
+FCB8;FCB8;FCB8;0637 062D;0637 062D;
+FCB9;FCB9;FCB9;0638 0645;0638 0645;
+FCBA;FCBA;FCBA;0639 062C;0639 062C;
+FCBB;FCBB;FCBB;0639 0645;0639 0645;
+FCBC;FCBC;FCBC;063A 062C;063A 062C;
+FCBD;FCBD;FCBD;063A 0645;063A 0645;
+FCBE;FCBE;FCBE;0641 062C;0641 062C;
+FCBF;FCBF;FCBF;0641 062D;0641 062D;
+FCC0;FCC0;FCC0;0641 062E;0641 062E;
+FCC1;FCC1;FCC1;0641 0645;0641 0645;
+FCC2;FCC2;FCC2;0642 062D;0642 062D;
+FCC3;FCC3;FCC3;0642 0645;0642 0645;
+FCC4;FCC4;FCC4;0643 062C;0643 062C;
+FCC5;FCC5;FCC5;0643 062D;0643 062D;
+FCC6;FCC6;FCC6;0643 062E;0643 062E;
+FCC7;FCC7;FCC7;0643 0644;0643 0644;
+FCC8;FCC8;FCC8;0643 0645;0643 0645;
+FCC9;FCC9;FCC9;0644 062C;0644 062C;
+FCCA;FCCA;FCCA;0644 062D;0644 062D;
+FCCB;FCCB;FCCB;0644 062E;0644 062E;
+FCCC;FCCC;FCCC;0644 0645;0644 0645;
+FCCD;FCCD;FCCD;0644 0647;0644 0647;
+FCCE;FCCE;FCCE;0645 062C;0645 062C;
+FCCF;FCCF;FCCF;0645 062D;0645 062D;
+FCD0;FCD0;FCD0;0645 062E;0645 062E;
+FCD1;FCD1;FCD1;0645 0645;0645 0645;
+FCD2;FCD2;FCD2;0646 062C;0646 062C;
+FCD3;FCD3;FCD3;0646 062D;0646 062D;
+FCD4;FCD4;FCD4;0646 062E;0646 062E;
+FCD5;FCD5;FCD5;0646 0645;0646 0645;
+FCD6;FCD6;FCD6;0646 0647;0646 0647;
+FCD7;FCD7;FCD7;0647 062C;0647 062C;
+FCD8;FCD8;FCD8;0647 0645;0647 0645;
+FCD9;FCD9;FCD9;0647 0670;0647 0670;
+FCDA;FCDA;FCDA;064A 062C;064A 062C;
+FCDB;FCDB;FCDB;064A 062D;064A 062D;
+FCDC;FCDC;FCDC;064A 062E;064A 062E;
+FCDD;FCDD;FCDD;064A 0645;064A 0645;
+FCDE;FCDE;FCDE;064A 0647;064A 0647;
+FCDF;FCDF;FCDF;0626 0645;064A 0654 0645;
+FCE0;FCE0;FCE0;0626 0647;064A 0654 0647;
+FCE1;FCE1;FCE1;0628 0645;0628 0645;
+FCE2;FCE2;FCE2;0628 0647;0628 0647;
+FCE3;FCE3;FCE3;062A 0645;062A 0645;
+FCE4;FCE4;FCE4;062A 0647;062A 0647;
+FCE5;FCE5;FCE5;062B 0645;062B 0645;
+FCE6;FCE6;FCE6;062B 0647;062B 0647;
+FCE7;FCE7;FCE7;0633 0645;0633 0645;
+FCE8;FCE8;FCE8;0633 0647;0633 0647;
+FCE9;FCE9;FCE9;0634 0645;0634 0645;
+FCEA;FCEA;FCEA;0634 0647;0634 0647;
+FCEB;FCEB;FCEB;0643 0644;0643 0644;
+FCEC;FCEC;FCEC;0643 0645;0643 0645;
+FCED;FCED;FCED;0644 0645;0644 0645;
+FCEE;FCEE;FCEE;0646 0645;0646 0645;
+FCEF;FCEF;FCEF;0646 0647;0646 0647;
+FCF0;FCF0;FCF0;064A 0645;064A 0645;
+FCF1;FCF1;FCF1;064A 0647;064A 0647;
+FCF2;FCF2;FCF2;0640 064E 0651;0640 064E 0651;
+FCF3;FCF3;FCF3;0640 064F 0651;0640 064F 0651;
+FCF4;FCF4;FCF4;0640 0650 0651;0640 0650 0651;
+FCF5;FCF5;FCF5;0637 0649;0637 0649;
+FCF6;FCF6;FCF6;0637 064A;0637 064A;
+FCF7;FCF7;FCF7;0639 0649;0639 0649;
+FCF8;FCF8;FCF8;0639 064A;0639 064A;
+FCF9;FCF9;FCF9;063A 0649;063A 0649;
+FCFA;FCFA;FCFA;063A 064A;063A 064A;
+FCFB;FCFB;FCFB;0633 0649;0633 0649;
+FCFC;FCFC;FCFC;0633 064A;0633 064A;
+FCFD;FCFD;FCFD;0634 0649;0634 0649;
+FCFE;FCFE;FCFE;0634 064A;0634 064A;
+FCFF;FCFF;FCFF;062D 0649;062D 0649;
+FD00;FD00;FD00;062D 064A;062D 064A;
+FD01;FD01;FD01;062C 0649;062C 0649;
+FD02;FD02;FD02;062C 064A;062C 064A;
+FD03;FD03;FD03;062E 0649;062E 0649;
+FD04;FD04;FD04;062E 064A;062E 064A;
+FD05;FD05;FD05;0635 0649;0635 0649;
+FD06;FD06;FD06;0635 064A;0635 064A;
+FD07;FD07;FD07;0636 0649;0636 0649;
+FD08;FD08;FD08;0636 064A;0636 064A;
+FD09;FD09;FD09;0634 062C;0634 062C;
+FD0A;FD0A;FD0A;0634 062D;0634 062D;
+FD0B;FD0B;FD0B;0634 062E;0634 062E;
+FD0C;FD0C;FD0C;0634 0645;0634 0645;
+FD0D;FD0D;FD0D;0634 0631;0634 0631;
+FD0E;FD0E;FD0E;0633 0631;0633 0631;
+FD0F;FD0F;FD0F;0635 0631;0635 0631;
+FD10;FD10;FD10;0636 0631;0636 0631;
+FD11;FD11;FD11;0637 0649;0637 0649;
+FD12;FD12;FD12;0637 064A;0637 064A;
+FD13;FD13;FD13;0639 0649;0639 0649;
+FD14;FD14;FD14;0639 064A;0639 064A;
+FD15;FD15;FD15;063A 0649;063A 0649;
+FD16;FD16;FD16;063A 064A;063A 064A;
+FD17;FD17;FD17;0633 0649;0633 0649;
+FD18;FD18;FD18;0633 064A;0633 064A;
+FD19;FD19;FD19;0634 0649;0634 0649;
+FD1A;FD1A;FD1A;0634 064A;0634 064A;
+FD1B;FD1B;FD1B;062D 0649;062D 0649;
+FD1C;FD1C;FD1C;062D 064A;062D 064A;
+FD1D;FD1D;FD1D;062C 0649;062C 0649;
+FD1E;FD1E;FD1E;062C 064A;062C 064A;
+FD1F;FD1F;FD1F;062E 0649;062E 0649;
+FD20;FD20;FD20;062E 064A;062E 064A;
+FD21;FD21;FD21;0635 0649;0635 0649;
+FD22;FD22;FD22;0635 064A;0635 064A;
+FD23;FD23;FD23;0636 0649;0636 0649;
+FD24;FD24;FD24;0636 064A;0636 064A;
+FD25;FD25;FD25;0634 062C;0634 062C;
+FD26;FD26;FD26;0634 062D;0634 062D;
+FD27;FD27;FD27;0634 062E;0634 062E;
+FD28;FD28;FD28;0634 0645;0634 0645;
+FD29;FD29;FD29;0634 0631;0634 0631;
+FD2A;FD2A;FD2A;0633 0631;0633 0631;
+FD2B;FD2B;FD2B;0635 0631;0635 0631;
+FD2C;FD2C;FD2C;0636 0631;0636 0631;
+FD2D;FD2D;FD2D;0634 062C;0634 062C;
+FD2E;FD2E;FD2E;0634 062D;0634 062D;
+FD2F;FD2F;FD2F;0634 062E;0634 062E;
+FD30;FD30;FD30;0634 0645;0634 0645;
+FD31;FD31;FD31;0633 0647;0633 0647;
+FD32;FD32;FD32;0634 0647;0634 0647;
+FD33;FD33;FD33;0637 0645;0637 0645;
+FD34;FD34;FD34;0633 062C;0633 062C;
+FD35;FD35;FD35;0633 062D;0633 062D;
+FD36;FD36;FD36;0633 062E;0633 062E;
+FD37;FD37;FD37;0634 062C;0634 062C;
+FD38;FD38;FD38;0634 062D;0634 062D;
+FD39;FD39;FD39;0634 062E;0634 062E;
+FD3A;FD3A;FD3A;0637 0645;0637 0645;
+FD3B;FD3B;FD3B;0638 0645;0638 0645;
+FD3C;FD3C;FD3C;0627 064B;0627 064B;
+FD3D;FD3D;FD3D;0627 064B;0627 064B;
+FD50;FD50;FD50;062A 062C 0645;062A 062C 0645;
+FD51;FD51;FD51;062A 062D 062C;062A 062D 062C;
+FD52;FD52;FD52;062A 062D 062C;062A 062D 062C;
+FD53;FD53;FD53;062A 062D 0645;062A 062D 0645;
+FD54;FD54;FD54;062A 062E 0645;062A 062E 0645;
+FD55;FD55;FD55;062A 0645 062C;062A 0645 062C;
+FD56;FD56;FD56;062A 0645 062D;062A 0645 062D;
+FD57;FD57;FD57;062A 0645 062E;062A 0645 062E;
+FD58;FD58;FD58;062C 0645 062D;062C 0645 062D;
+FD59;FD59;FD59;062C 0645 062D;062C 0645 062D;
+FD5A;FD5A;FD5A;062D 0645 064A;062D 0645 064A;
+FD5B;FD5B;FD5B;062D 0645 0649;062D 0645 0649;
+FD5C;FD5C;FD5C;0633 062D 062C;0633 062D 062C;
+FD5D;FD5D;FD5D;0633 062C 062D;0633 062C 062D;
+FD5E;FD5E;FD5E;0633 062C 0649;0633 062C 0649;
+FD5F;FD5F;FD5F;0633 0645 062D;0633 0645 062D;
+FD60;FD60;FD60;0633 0645 062D;0633 0645 062D;
+FD61;FD61;FD61;0633 0645 062C;0633 0645 062C;
+FD62;FD62;FD62;0633 0645 0645;0633 0645 0645;
+FD63;FD63;FD63;0633 0645 0645;0633 0645 0645;
+FD64;FD64;FD64;0635 062D 062D;0635 062D 062D;
+FD65;FD65;FD65;0635 062D 062D;0635 062D 062D;
+FD66;FD66;FD66;0635 0645 0645;0635 0645 0645;
+FD67;FD67;FD67;0634 062D 0645;0634 062D 0645;
+FD68;FD68;FD68;0634 062D 0645;0634 062D 0645;
+FD69;FD69;FD69;0634 062C 064A;0634 062C 064A;
+FD6A;FD6A;FD6A;0634 0645 062E;0634 0645 062E;
+FD6B;FD6B;FD6B;0634 0645 062E;0634 0645 062E;
+FD6C;FD6C;FD6C;0634 0645 0645;0634 0645 0645;
+FD6D;FD6D;FD6D;0634 0645 0645;0634 0645 0645;
+FD6E;FD6E;FD6E;0636 062D 0649;0636 062D 0649;
+FD6F;FD6F;FD6F;0636 062E 0645;0636 062E 0645;
+FD70;FD70;FD70;0636 062E 0645;0636 062E 0645;
+FD71;FD71;FD71;0637 0645 062D;0637 0645 062D;
+FD72;FD72;FD72;0637 0645 062D;0637 0645 062D;
+FD73;FD73;FD73;0637 0645 0645;0637 0645 0645;
+FD74;FD74;FD74;0637 0645 064A;0637 0645 064A;
+FD75;FD75;FD75;0639 062C 0645;0639 062C 0645;
+FD76;FD76;FD76;0639 0645 0645;0639 0645 0645;
+FD77;FD77;FD77;0639 0645 0645;0639 0645 0645;
+FD78;FD78;FD78;0639 0645 0649;0639 0645 0649;
+FD79;FD79;FD79;063A 0645 0645;063A 0645 0645;
+FD7A;FD7A;FD7A;063A 0645 064A;063A 0645 064A;
+FD7B;FD7B;FD7B;063A 0645 0649;063A 0645 0649;
+FD7C;FD7C;FD7C;0641 062E 0645;0641 062E 0645;
+FD7D;FD7D;FD7D;0641 062E 0645;0641 062E 0645;
+FD7E;FD7E;FD7E;0642 0645 062D;0642 0645 062D;
+FD7F;FD7F;FD7F;0642 0645 0645;0642 0645 0645;
+FD80;FD80;FD80;0644 062D 0645;0644 062D 0645;
+FD81;FD81;FD81;0644 062D 064A;0644 062D 064A;
+FD82;FD82;FD82;0644 062D 0649;0644 062D 0649;
+FD83;FD83;FD83;0644 062C 062C;0644 062C 062C;
+FD84;FD84;FD84;0644 062C 062C;0644 062C 062C;
+FD85;FD85;FD85;0644 062E 0645;0644 062E 0645;
+FD86;FD86;FD86;0644 062E 0645;0644 062E 0645;
+FD87;FD87;FD87;0644 0645 062D;0644 0645 062D;
+FD88;FD88;FD88;0644 0645 062D;0644 0645 062D;
+FD89;FD89;FD89;0645 062D 062C;0645 062D 062C;
+FD8A;FD8A;FD8A;0645 062D 0645;0645 062D 0645;
+FD8B;FD8B;FD8B;0645 062D 064A;0645 062D 064A;
+FD8C;FD8C;FD8C;0645 062C 062D;0645 062C 062D;
+FD8D;FD8D;FD8D;0645 062C 0645;0645 062C 0645;
+FD8E;FD8E;FD8E;0645 062E 062C;0645 062E 062C;
+FD8F;FD8F;FD8F;0645 062E 0645;0645 062E 0645;
+FD92;FD92;FD92;0645 062C 062E;0645 062C 062E;
+FD93;FD93;FD93;0647 0645 062C;0647 0645 062C;
+FD94;FD94;FD94;0647 0645 0645;0647 0645 0645;
+FD95;FD95;FD95;0646 062D 0645;0646 062D 0645;
+FD96;FD96;FD96;0646 062D 0649;0646 062D 0649;
+FD97;FD97;FD97;0646 062C 0645;0646 062C 0645;
+FD98;FD98;FD98;0646 062C 0645;0646 062C 0645;
+FD99;FD99;FD99;0646 062C 0649;0646 062C 0649;
+FD9A;FD9A;FD9A;0646 0645 064A;0646 0645 064A;
+FD9B;FD9B;FD9B;0646 0645 0649;0646 0645 0649;
+FD9C;FD9C;FD9C;064A 0645 0645;064A 0645 0645;
+FD9D;FD9D;FD9D;064A 0645 0645;064A 0645 0645;
+FD9E;FD9E;FD9E;0628 062E 064A;0628 062E 064A;
+FD9F;FD9F;FD9F;062A 062C 064A;062A 062C 064A;
+FDA0;FDA0;FDA0;062A 062C 0649;062A 062C 0649;
+FDA1;FDA1;FDA1;062A 062E 064A;062A 062E 064A;
+FDA2;FDA2;FDA2;062A 062E 0649;062A 062E 0649;
+FDA3;FDA3;FDA3;062A 0645 064A;062A 0645 064A;
+FDA4;FDA4;FDA4;062A 0645 0649;062A 0645 0649;
+FDA5;FDA5;FDA5;062C 0645 064A;062C 0645 064A;
+FDA6;FDA6;FDA6;062C 062D 0649;062C 062D 0649;
+FDA7;FDA7;FDA7;062C 0645 0649;062C 0645 0649;
+FDA8;FDA8;FDA8;0633 062E 0649;0633 062E 0649;
+FDA9;FDA9;FDA9;0635 062D 064A;0635 062D 064A;
+FDAA;FDAA;FDAA;0634 062D 064A;0634 062D 064A;
+FDAB;FDAB;FDAB;0636 062D 064A;0636 062D 064A;
+FDAC;FDAC;FDAC;0644 062C 064A;0644 062C 064A;
+FDAD;FDAD;FDAD;0644 0645 064A;0644 0645 064A;
+FDAE;FDAE;FDAE;064A 062D 064A;064A 062D 064A;
+FDAF;FDAF;FDAF;064A 062C 064A;064A 062C 064A;
+FDB0;FDB0;FDB0;064A 0645 064A;064A 0645 064A;
+FDB1;FDB1;FDB1;0645 0645 064A;0645 0645 064A;
+FDB2;FDB2;FDB2;0642 0645 064A;0642 0645 064A;
+FDB3;FDB3;FDB3;0646 062D 064A;0646 062D 064A;
+FDB4;FDB4;FDB4;0642 0645 062D;0642 0645 062D;
+FDB5;FDB5;FDB5;0644 062D 0645;0644 062D 0645;
+FDB6;FDB6;FDB6;0639 0645 064A;0639 0645 064A;
+FDB7;FDB7;FDB7;0643 0645 064A;0643 0645 064A;
+FDB8;FDB8;FDB8;0646 062C 062D;0646 062C 062D;
+FDB9;FDB9;FDB9;0645 062E 064A;0645 062E 064A;
+FDBA;FDBA;FDBA;0644 062C 0645;0644 062C 0645;
+FDBB;FDBB;FDBB;0643 0645 0645;0643 0645 0645;
+FDBC;FDBC;FDBC;0644 062C 0645;0644 062C 0645;
+FDBD;FDBD;FDBD;0646 062C 062D;0646 062C 062D;
+FDBE;FDBE;FDBE;062C 062D 064A;062C 062D 064A;
+FDBF;FDBF;FDBF;062D 062C 064A;062D 062C 064A;
+FDC0;FDC0;FDC0;0645 062C 064A;0645 062C 064A;
+FDC1;FDC1;FDC1;0641 0645 064A;0641 0645 064A;
+FDC2;FDC2;FDC2;0628 062D 064A;0628 062D 064A;
+FDC3;FDC3;FDC3;0643 0645 0645;0643 0645 0645;
+FDC4;FDC4;FDC4;0639 062C 0645;0639 062C 0645;
+FDC5;FDC5;FDC5;0635 0645 0645;0635 0645 0645;
+FDC6;FDC6;FDC6;0633 062E 064A;0633 062E 064A;
+FDC7;FDC7;FDC7;0646 062C 064A;0646 062C 064A;
+FDF0;FDF0;FDF0;0635 0644 06D2;0635 0644 06D2;
+FDF1;FDF1;FDF1;0642 0644 06D2;0642 0644 06D2;
+FDF2;FDF2;FDF2;0627 0644 0644 0647;0627 0644 0644 0647;
+FDF3;FDF3;FDF3;0627 0643 0628 0631;0627 0643 0628 0631;
+FDF4;FDF4;FDF4;0645 062D 0645 062F;0645 062D 0645 062F;
+FDF5;FDF5;FDF5;0635 0644 0639 0645;0635 0644 0639 0645;
+FDF6;FDF6;FDF6;0631 0633 0648 0644;0631 0633 0648 0644;
+FDF7;FDF7;FDF7;0639 0644 064A 0647;0639 0644 064A 0647;
+FDF8;FDF8;FDF8;0648 0633 0644 0645;0648 0633 0644 0645;
+FDF9;FDF9;FDF9;0635 0644 0649;0635 0644 0649;
+FDFA;FDFA;FDFA;0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;
+FDFB;FDFB;FDFB;062C 0644 0020 062C 0644 0627 0644 0647;062C 0644 0020 062C 0644 0627 0644 0647;
+FDFC;FDFC;FDFC;0631 06CC 0627 0644;0631 06CC 0627 0644;
+FE10;FE10;FE10;002C;002C;
+FE11;FE11;FE11;3001;3001;
+FE12;FE12;FE12;3002;3002;
+FE13;FE13;FE13;003A;003A;
+FE14;FE14;FE14;003B;003B;
+FE15;FE15;FE15;0021;0021;
+FE16;FE16;FE16;003F;003F;
+FE17;FE17;FE17;3016;3016;
+FE18;FE18;FE18;3017;3017;
+FE19;FE19;FE19;002E 002E 002E;002E 002E 002E;
+FE30;FE30;FE30;002E 002E;002E 002E;
+FE31;FE31;FE31;2014;2014;
+FE32;FE32;FE32;2013;2013;
+FE33;FE33;FE33;005F;005F;
+FE34;FE34;FE34;005F;005F;
+FE35;FE35;FE35;0028;0028;
+FE36;FE36;FE36;0029;0029;
+FE37;FE37;FE37;007B;007B;
+FE38;FE38;FE38;007D;007D;
+FE39;FE39;FE39;3014;3014;
+FE3A;FE3A;FE3A;3015;3015;
+FE3B;FE3B;FE3B;3010;3010;
+FE3C;FE3C;FE3C;3011;3011;
+FE3D;FE3D;FE3D;300A;300A;
+FE3E;FE3E;FE3E;300B;300B;
+FE3F;FE3F;FE3F;3008;3008;
+FE40;FE40;FE40;3009;3009;
+FE41;FE41;FE41;300C;300C;
+FE42;FE42;FE42;300D;300D;
+FE43;FE43;FE43;300E;300E;
+FE44;FE44;FE44;300F;300F;
+FE47;FE47;FE47;005B;005B;
+FE48;FE48;FE48;005D;005D;
+FE49;FE49;FE49;0020 0305;0020 0305;
+FE4A;FE4A;FE4A;0020 0305;0020 0305;
+FE4B;FE4B;FE4B;0020 0305;0020 0305;
+FE4C;FE4C;FE4C;0020 0305;0020 0305;
+FE4D;FE4D;FE4D;005F;005F;
+FE4E;FE4E;FE4E;005F;005F;
+FE4F;FE4F;FE4F;005F;005F;
+FE50;FE50;FE50;002C;002C;
+FE51;FE51;FE51;3001;3001;
+FE52;FE52;FE52;002E;002E;
+FE54;FE54;FE54;003B;003B;
+FE55;FE55;FE55;003A;003A;
+FE56;FE56;FE56;003F;003F;
+FE57;FE57;FE57;0021;0021;
+FE58;FE58;FE58;2014;2014;
+FE59;FE59;FE59;0028;0028;
+FE5A;FE5A;FE5A;0029;0029;
+FE5B;FE5B;FE5B;007B;007B;
+FE5C;FE5C;FE5C;007D;007D;
+FE5D;FE5D;FE5D;3014;3014;
+FE5E;FE5E;FE5E;3015;3015;
+FE5F;FE5F;FE5F;0023;0023;
+FE60;FE60;FE60;0026;0026;
+FE61;FE61;FE61;002A;002A;
+FE62;FE62;FE62;002B;002B;
+FE63;FE63;FE63;002D;002D;
+FE64;FE64;FE64;003C;003C;
+FE65;FE65;FE65;003E;003E;
+FE66;FE66;FE66;003D;003D;
+FE68;FE68;FE68;005C;005C;
+FE69;FE69;FE69;0024;0024;
+FE6A;FE6A;FE6A;0025;0025;
+FE6B;FE6B;FE6B;0040;0040;
+FE70;FE70;FE70;0020 064B;0020 064B;
+FE71;FE71;FE71;0640 064B;0640 064B;
+FE72;FE72;FE72;0020 064C;0020 064C;
+FE74;FE74;FE74;0020 064D;0020 064D;
+FE76;FE76;FE76;0020 064E;0020 064E;
+FE77;FE77;FE77;0640 064E;0640 064E;
+FE78;FE78;FE78;0020 064F;0020 064F;
+FE79;FE79;FE79;0640 064F;0640 064F;
+FE7A;FE7A;FE7A;0020 0650;0020 0650;
+FE7B;FE7B;FE7B;0640 0650;0640 0650;
+FE7C;FE7C;FE7C;0020 0651;0020 0651;
+FE7D;FE7D;FE7D;0640 0651;0640 0651;
+FE7E;FE7E;FE7E;0020 0652;0020 0652;
+FE7F;FE7F;FE7F;0640 0652;0640 0652;
+FE80;FE80;FE80;0621;0621;
+FE81;FE81;FE81;0622;0627 0653;
+FE82;FE82;FE82;0622;0627 0653;
+FE83;FE83;FE83;0623;0627 0654;
+FE84;FE84;FE84;0623;0627 0654;
+FE85;FE85;FE85;0624;0648 0654;
+FE86;FE86;FE86;0624;0648 0654;
+FE87;FE87;FE87;0625;0627 0655;
+FE88;FE88;FE88;0625;0627 0655;
+FE89;FE89;FE89;0626;064A 0654;
+FE8A;FE8A;FE8A;0626;064A 0654;
+FE8B;FE8B;FE8B;0626;064A 0654;
+FE8C;FE8C;FE8C;0626;064A 0654;
+FE8D;FE8D;FE8D;0627;0627;
+FE8E;FE8E;FE8E;0627;0627;
+FE8F;FE8F;FE8F;0628;0628;
+FE90;FE90;FE90;0628;0628;
+FE91;FE91;FE91;0628;0628;
+FE92;FE92;FE92;0628;0628;
+FE93;FE93;FE93;0629;0629;
+FE94;FE94;FE94;0629;0629;
+FE95;FE95;FE95;062A;062A;
+FE96;FE96;FE96;062A;062A;
+FE97;FE97;FE97;062A;062A;
+FE98;FE98;FE98;062A;062A;
+FE99;FE99;FE99;062B;062B;
+FE9A;FE9A;FE9A;062B;062B;
+FE9B;FE9B;FE9B;062B;062B;
+FE9C;FE9C;FE9C;062B;062B;
+FE9D;FE9D;FE9D;062C;062C;
+FE9E;FE9E;FE9E;062C;062C;
+FE9F;FE9F;FE9F;062C;062C;
+FEA0;FEA0;FEA0;062C;062C;
+FEA1;FEA1;FEA1;062D;062D;
+FEA2;FEA2;FEA2;062D;062D;
+FEA3;FEA3;FEA3;062D;062D;
+FEA4;FEA4;FEA4;062D;062D;
+FEA5;FEA5;FEA5;062E;062E;
+FEA6;FEA6;FEA6;062E;062E;
+FEA7;FEA7;FEA7;062E;062E;
+FEA8;FEA8;FEA8;062E;062E;
+FEA9;FEA9;FEA9;062F;062F;
+FEAA;FEAA;FEAA;062F;062F;
+FEAB;FEAB;FEAB;0630;0630;
+FEAC;FEAC;FEAC;0630;0630;
+FEAD;FEAD;FEAD;0631;0631;
+FEAE;FEAE;FEAE;0631;0631;
+FEAF;FEAF;FEAF;0632;0632;
+FEB0;FEB0;FEB0;0632;0632;
+FEB1;FEB1;FEB1;0633;0633;
+FEB2;FEB2;FEB2;0633;0633;
+FEB3;FEB3;FEB3;0633;0633;
+FEB4;FEB4;FEB4;0633;0633;
+FEB5;FEB5;FEB5;0634;0634;
+FEB6;FEB6;FEB6;0634;0634;
+FEB7;FEB7;FEB7;0634;0634;
+FEB8;FEB8;FEB8;0634;0634;
+FEB9;FEB9;FEB9;0635;0635;
+FEBA;FEBA;FEBA;0635;0635;
+FEBB;FEBB;FEBB;0635;0635;
+FEBC;FEBC;FEBC;0635;0635;
+FEBD;FEBD;FEBD;0636;0636;
+FEBE;FEBE;FEBE;0636;0636;
+FEBF;FEBF;FEBF;0636;0636;
+FEC0;FEC0;FEC0;0636;0636;
+FEC1;FEC1;FEC1;0637;0637;
+FEC2;FEC2;FEC2;0637;0637;
+FEC3;FEC3;FEC3;0637;0637;
+FEC4;FEC4;FEC4;0637;0637;
+FEC5;FEC5;FEC5;0638;0638;
+FEC6;FEC6;FEC6;0638;0638;
+FEC7;FEC7;FEC7;0638;0638;
+FEC8;FEC8;FEC8;0638;0638;
+FEC9;FEC9;FEC9;0639;0639;
+FECA;FECA;FECA;0639;0639;
+FECB;FECB;FECB;0639;0639;
+FECC;FECC;FECC;0639;0639;
+FECD;FECD;FECD;063A;063A;
+FECE;FECE;FECE;063A;063A;
+FECF;FECF;FECF;063A;063A;
+FED0;FED0;FED0;063A;063A;
+FED1;FED1;FED1;0641;0641;
+FED2;FED2;FED2;0641;0641;
+FED3;FED3;FED3;0641;0641;
+FED4;FED4;FED4;0641;0641;
+FED5;FED5;FED5;0642;0642;
+FED6;FED6;FED6;0642;0642;
+FED7;FED7;FED7;0642;0642;
+FED8;FED8;FED8;0642;0642;
+FED9;FED9;FED9;0643;0643;
+FEDA;FEDA;FEDA;0643;0643;
+FEDB;FEDB;FEDB;0643;0643;
+FEDC;FEDC;FEDC;0643;0643;
+FEDD;FEDD;FEDD;0644;0644;
+FEDE;FEDE;FEDE;0644;0644;
+FEDF;FEDF;FEDF;0644;0644;
+FEE0;FEE0;FEE0;0644;0644;
+FEE1;FEE1;FEE1;0645;0645;
+FEE2;FEE2;FEE2;0645;0645;
+FEE3;FEE3;FEE3;0645;0645;
+FEE4;FEE4;FEE4;0645;0645;
+FEE5;FEE5;FEE5;0646;0646;
+FEE6;FEE6;FEE6;0646;0646;
+FEE7;FEE7;FEE7;0646;0646;
+FEE8;FEE8;FEE8;0646;0646;
+FEE9;FEE9;FEE9;0647;0647;
+FEEA;FEEA;FEEA;0647;0647;
+FEEB;FEEB;FEEB;0647;0647;
+FEEC;FEEC;FEEC;0647;0647;
+FEED;FEED;FEED;0648;0648;
+FEEE;FEEE;FEEE;0648;0648;
+FEEF;FEEF;FEEF;0649;0649;
+FEF0;FEF0;FEF0;0649;0649;
+FEF1;FEF1;FEF1;064A;064A;
+FEF2;FEF2;FEF2;064A;064A;
+FEF3;FEF3;FEF3;064A;064A;
+FEF4;FEF4;FEF4;064A;064A;
+FEF5;FEF5;FEF5;0644 0622;0644 0627 0653;
+FEF6;FEF6;FEF6;0644 0622;0644 0627 0653;
+FEF7;FEF7;FEF7;0644 0623;0644 0627 0654;
+FEF8;FEF8;FEF8;0644 0623;0644 0627 0654;
+FEF9;FEF9;FEF9;0644 0625;0644 0627 0655;
+FEFA;FEFA;FEFA;0644 0625;0644 0627 0655;
+FEFB;FEFB;FEFB;0644 0627;0644 0627;
+FEFC;FEFC;FEFC;0644 0627;0644 0627;
+FF01;FF01;FF01;0021;0021;
+FF02;FF02;FF02;0022;0022;
+FF03;FF03;FF03;0023;0023;
+FF04;FF04;FF04;0024;0024;
+FF05;FF05;FF05;0025;0025;
+FF06;FF06;FF06;0026;0026;
+FF07;FF07;FF07;0027;0027;
+FF08;FF08;FF08;0028;0028;
+FF09;FF09;FF09;0029;0029;
+FF0A;FF0A;FF0A;002A;002A;
+FF0B;FF0B;FF0B;002B;002B;
+FF0C;FF0C;FF0C;002C;002C;
+FF0D;FF0D;FF0D;002D;002D;
+FF0E;FF0E;FF0E;002E;002E;
+FF0F;FF0F;FF0F;002F;002F;
+FF10;FF10;FF10;0030;0030;
+FF11;FF11;FF11;0031;0031;
+FF12;FF12;FF12;0032;0032;
+FF13;FF13;FF13;0033;0033;
+FF14;FF14;FF14;0034;0034;
+FF15;FF15;FF15;0035;0035;
+FF16;FF16;FF16;0036;0036;
+FF17;FF17;FF17;0037;0037;
+FF18;FF18;FF18;0038;0038;
+FF19;FF19;FF19;0039;0039;
+FF1A;FF1A;FF1A;003A;003A;
+FF1B;FF1B;FF1B;003B;003B;
+FF1C;FF1C;FF1C;003C;003C;
+FF1D;FF1D;FF1D;003D;003D;
+FF1E;FF1E;FF1E;003E;003E;
+FF1F;FF1F;FF1F;003F;003F;
+FF20;FF20;FF20;0040;0040;
+FF21;FF21;FF21;0041;0041;
+FF22;FF22;FF22;0042;0042;
+FF23;FF23;FF23;0043;0043;
+FF24;FF24;FF24;0044;0044;
+FF25;FF25;FF25;0045;0045;
+FF26;FF26;FF26;0046;0046;
+FF27;FF27;FF27;0047;0047;
+FF28;FF28;FF28;0048;0048;
+FF29;FF29;FF29;0049;0049;
+FF2A;FF2A;FF2A;004A;004A;
+FF2B;FF2B;FF2B;004B;004B;
+FF2C;FF2C;FF2C;004C;004C;
+FF2D;FF2D;FF2D;004D;004D;
+FF2E;FF2E;FF2E;004E;004E;
+FF2F;FF2F;FF2F;004F;004F;
+FF30;FF30;FF30;0050;0050;
+FF31;FF31;FF31;0051;0051;
+FF32;FF32;FF32;0052;0052;
+FF33;FF33;FF33;0053;0053;
+FF34;FF34;FF34;0054;0054;
+FF35;FF35;FF35;0055;0055;
+FF36;FF36;FF36;0056;0056;
+FF37;FF37;FF37;0057;0057;
+FF38;FF38;FF38;0058;0058;
+FF39;FF39;FF39;0059;0059;
+FF3A;FF3A;FF3A;005A;005A;
+FF3B;FF3B;FF3B;005B;005B;
+FF3C;FF3C;FF3C;005C;005C;
+FF3D;FF3D;FF3D;005D;005D;
+FF3E;FF3E;FF3E;005E;005E;
+FF3F;FF3F;FF3F;005F;005F;
+FF40;FF40;FF40;0060;0060;
+FF41;FF41;FF41;0061;0061;
+FF42;FF42;FF42;0062;0062;
+FF43;FF43;FF43;0063;0063;
+FF44;FF44;FF44;0064;0064;
+FF45;FF45;FF45;0065;0065;
+FF46;FF46;FF46;0066;0066;
+FF47;FF47;FF47;0067;0067;
+FF48;FF48;FF48;0068;0068;
+FF49;FF49;FF49;0069;0069;
+FF4A;FF4A;FF4A;006A;006A;
+FF4B;FF4B;FF4B;006B;006B;
+FF4C;FF4C;FF4C;006C;006C;
+FF4D;FF4D;FF4D;006D;006D;
+FF4E;FF4E;FF4E;006E;006E;
+FF4F;FF4F;FF4F;006F;006F;
+FF50;FF50;FF50;0070;0070;
+FF51;FF51;FF51;0071;0071;
+FF52;FF52;FF52;0072;0072;
+FF53;FF53;FF53;0073;0073;
+FF54;FF54;FF54;0074;0074;
+FF55;FF55;FF55;0075;0075;
+FF56;FF56;FF56;0076;0076;
+FF57;FF57;FF57;0077;0077;
+FF58;FF58;FF58;0078;0078;
+FF59;FF59;FF59;0079;0079;
+FF5A;FF5A;FF5A;007A;007A;
+FF5B;FF5B;FF5B;007B;007B;
+FF5C;FF5C;FF5C;007C;007C;
+FF5D;FF5D;FF5D;007D;007D;
+FF5E;FF5E;FF5E;007E;007E;
+FF5F;FF5F;FF5F;2985;2985;
+FF60;FF60;FF60;2986;2986;
+FF61;FF61;FF61;3002;3002;
+FF62;FF62;FF62;300C;300C;
+FF63;FF63;FF63;300D;300D;
+FF64;FF64;FF64;3001;3001;
+FF65;FF65;FF65;30FB;30FB;
+FF66;FF66;FF66;30F2;30F2;
+FF67;FF67;FF67;30A1;30A1;
+FF68;FF68;FF68;30A3;30A3;
+FF69;FF69;FF69;30A5;30A5;
+FF6A;FF6A;FF6A;30A7;30A7;
+FF6B;FF6B;FF6B;30A9;30A9;
+FF6C;FF6C;FF6C;30E3;30E3;
+FF6D;FF6D;FF6D;30E5;30E5;
+FF6E;FF6E;FF6E;30E7;30E7;
+FF6F;FF6F;FF6F;30C3;30C3;
+FF70;FF70;FF70;30FC;30FC;
+FF71;FF71;FF71;30A2;30A2;
+FF72;FF72;FF72;30A4;30A4;
+FF73;FF73;FF73;30A6;30A6;
+FF74;FF74;FF74;30A8;30A8;
+FF75;FF75;FF75;30AA;30AA;
+FF76;FF76;FF76;30AB;30AB;
+FF77;FF77;FF77;30AD;30AD;
+FF78;FF78;FF78;30AF;30AF;
+FF79;FF79;FF79;30B1;30B1;
+FF7A;FF7A;FF7A;30B3;30B3;
+FF7B;FF7B;FF7B;30B5;30B5;
+FF7C;FF7C;FF7C;30B7;30B7;
+FF7D;FF7D;FF7D;30B9;30B9;
+FF7E;FF7E;FF7E;30BB;30BB;
+FF7F;FF7F;FF7F;30BD;30BD;
+FF80;FF80;FF80;30BF;30BF;
+FF81;FF81;FF81;30C1;30C1;
+FF82;FF82;FF82;30C4;30C4;
+FF83;FF83;FF83;30C6;30C6;
+FF84;FF84;FF84;30C8;30C8;
+FF85;FF85;FF85;30CA;30CA;
+FF86;FF86;FF86;30CB;30CB;
+FF87;FF87;FF87;30CC;30CC;
+FF88;FF88;FF88;30CD;30CD;
+FF89;FF89;FF89;30CE;30CE;
+FF8A;FF8A;FF8A;30CF;30CF;
+FF8B;FF8B;FF8B;30D2;30D2;
+FF8C;FF8C;FF8C;30D5;30D5;
+FF8D;FF8D;FF8D;30D8;30D8;
+FF8E;FF8E;FF8E;30DB;30DB;
+FF8F;FF8F;FF8F;30DE;30DE;
+FF90;FF90;FF90;30DF;30DF;
+FF91;FF91;FF91;30E0;30E0;
+FF92;FF92;FF92;30E1;30E1;
+FF93;FF93;FF93;30E2;30E2;
+FF94;FF94;FF94;30E4;30E4;
+FF95;FF95;FF95;30E6;30E6;
+FF96;FF96;FF96;30E8;30E8;
+FF97;FF97;FF97;30E9;30E9;
+FF98;FF98;FF98;30EA;30EA;
+FF99;FF99;FF99;30EB;30EB;
+FF9A;FF9A;FF9A;30EC;30EC;
+FF9B;FF9B;FF9B;30ED;30ED;
+FF9C;FF9C;FF9C;30EF;30EF;
+FF9D;FF9D;FF9D;30F3;30F3;
+FF9E;FF9E;FF9E;3099;3099;
+FF9F;FF9F;FF9F;309A;309A;
+FFA0;FFA0;FFA0;1160;1160;
+FFA1;FFA1;FFA1;1100;1100;
+FFA2;FFA2;FFA2;1101;1101;
+FFA3;FFA3;FFA3;11AA;11AA;
+FFA4;FFA4;FFA4;1102;1102;
+FFA5;FFA5;FFA5;11AC;11AC;
+FFA6;FFA6;FFA6;11AD;11AD;
+FFA7;FFA7;FFA7;1103;1103;
+FFA8;FFA8;FFA8;1104;1104;
+FFA9;FFA9;FFA9;1105;1105;
+FFAA;FFAA;FFAA;11B0;11B0;
+FFAB;FFAB;FFAB;11B1;11B1;
+FFAC;FFAC;FFAC;11B2;11B2;
+FFAD;FFAD;FFAD;11B3;11B3;
+FFAE;FFAE;FFAE;11B4;11B4;
+FFAF;FFAF;FFAF;11B5;11B5;
+FFB0;FFB0;FFB0;111A;111A;
+FFB1;FFB1;FFB1;1106;1106;
+FFB2;FFB2;FFB2;1107;1107;
+FFB3;FFB3;FFB3;1108;1108;
+FFB4;FFB4;FFB4;1121;1121;
+FFB5;FFB5;FFB5;1109;1109;
+FFB6;FFB6;FFB6;110A;110A;
+FFB7;FFB7;FFB7;110B;110B;
+FFB8;FFB8;FFB8;110C;110C;
+FFB9;FFB9;FFB9;110D;110D;
+FFBA;FFBA;FFBA;110E;110E;
+FFBB;FFBB;FFBB;110F;110F;
+FFBC;FFBC;FFBC;1110;1110;
+FFBD;FFBD;FFBD;1111;1111;
+FFBE;FFBE;FFBE;1112;1112;
+FFC2;FFC2;FFC2;1161;1161;
+FFC3;FFC3;FFC3;1162;1162;
+FFC4;FFC4;FFC4;1163;1163;
+FFC5;FFC5;FFC5;1164;1164;
+FFC6;FFC6;FFC6;1165;1165;
+FFC7;FFC7;FFC7;1166;1166;
+FFCA;FFCA;FFCA;1167;1167;
+FFCB;FFCB;FFCB;1168;1168;
+FFCC;FFCC;FFCC;1169;1169;
+FFCD;FFCD;FFCD;116A;116A;
+FFCE;FFCE;FFCE;116B;116B;
+FFCF;FFCF;FFCF;116C;116C;
+FFD2;FFD2;FFD2;116D;116D;
+FFD3;FFD3;FFD3;116E;116E;
+FFD4;FFD4;FFD4;116F;116F;
+FFD5;FFD5;FFD5;1170;1170;
+FFD6;FFD6;FFD6;1171;1171;
+FFD7;FFD7;FFD7;1172;1172;
+FFDA;FFDA;FFDA;1173;1173;
+FFDB;FFDB;FFDB;1174;1174;
+FFDC;FFDC;FFDC;1175;1175;
+FFE0;FFE0;FFE0;00A2;00A2;
+FFE1;FFE1;FFE1;00A3;00A3;
+FFE2;FFE2;FFE2;00AC;00AC;
+FFE3;FFE3;FFE3;0020 0304;0020 0304;
+FFE4;FFE4;FFE4;00A6;00A6;
+FFE5;FFE5;FFE5;00A5;00A5;
+FFE6;FFE6;FFE6;20A9;20A9;
+FFE8;FFE8;FFE8;2502;2502;
+FFE9;FFE9;FFE9;2190;2190;
+FFEA;FFEA;FFEA;2191;2191;
+FFEB;FFEB;FFEB;2192;2192;
+FFEC;FFEC;FFEC;2193;2193;
+FFED;FFED;FFED;25A0;25A0;
+FFEE;FFEE;FFEE;25CB;25CB;
+1D15E;1D157 1D165;1D157 1D165;1D157 1D165;1D157 1D165;
+1D15F;1D158 1D165;1D158 1D165;1D158 1D165;1D158 1D165;
+1D160;1D158 1D165 1D16E;1D158 1D165 1D16E;1D158 1D165 1D16E;1D158 1D165 1D16E;
+1D161;1D158 1D165 1D16F;1D158 1D165 1D16F;1D158 1D165 1D16F;1D158 1D165 1D16F;
+1D162;1D158 1D165 1D170;1D158 1D165 1D170;1D158 1D165 1D170;1D158 1D165 1D170;
+1D163;1D158 1D165 1D171;1D158 1D165 1D171;1D158 1D165 1D171;1D158 1D165 1D171;
+1D164;1D158 1D165 1D172;1D158 1D165 1D172;1D158 1D165 1D172;1D158 1D165 1D172;
+1D1BB;1D1B9 1D165;1D1B9 1D165;1D1B9 1D165;1D1B9 1D165;
+1D1BC;1D1BA 1D165;1D1BA 1D165;1D1BA 1D165;1D1BA 1D165;
+1D1BD;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;
+1D1BE;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;
+1D1BF;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;
+1D1C0;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;
+1D400;1D400;1D400;0041;0041;
+1D401;1D401;1D401;0042;0042;
+1D402;1D402;1D402;0043;0043;
+1D403;1D403;1D403;0044;0044;
+1D404;1D404;1D404;0045;0045;
+1D405;1D405;1D405;0046;0046;
+1D406;1D406;1D406;0047;0047;
+1D407;1D407;1D407;0048;0048;
+1D408;1D408;1D408;0049;0049;
+1D409;1D409;1D409;004A;004A;
+1D40A;1D40A;1D40A;004B;004B;
+1D40B;1D40B;1D40B;004C;004C;
+1D40C;1D40C;1D40C;004D;004D;
+1D40D;1D40D;1D40D;004E;004E;
+1D40E;1D40E;1D40E;004F;004F;
+1D40F;1D40F;1D40F;0050;0050;
+1D410;1D410;1D410;0051;0051;
+1D411;1D411;1D411;0052;0052;
+1D412;1D412;1D412;0053;0053;
+1D413;1D413;1D413;0054;0054;
+1D414;1D414;1D414;0055;0055;
+1D415;1D415;1D415;0056;0056;
+1D416;1D416;1D416;0057;0057;
+1D417;1D417;1D417;0058;0058;
+1D418;1D418;1D418;0059;0059;
+1D419;1D419;1D419;005A;005A;
+1D41A;1D41A;1D41A;0061;0061;
+1D41B;1D41B;1D41B;0062;0062;
+1D41C;1D41C;1D41C;0063;0063;
+1D41D;1D41D;1D41D;0064;0064;
+1D41E;1D41E;1D41E;0065;0065;
+1D41F;1D41F;1D41F;0066;0066;
+1D420;1D420;1D420;0067;0067;
+1D421;1D421;1D421;0068;0068;
+1D422;1D422;1D422;0069;0069;
+1D423;1D423;1D423;006A;006A;
+1D424;1D424;1D424;006B;006B;
+1D425;1D425;1D425;006C;006C;
+1D426;1D426;1D426;006D;006D;
+1D427;1D427;1D427;006E;006E;
+1D428;1D428;1D428;006F;006F;
+1D429;1D429;1D429;0070;0070;
+1D42A;1D42A;1D42A;0071;0071;
+1D42B;1D42B;1D42B;0072;0072;
+1D42C;1D42C;1D42C;0073;0073;
+1D42D;1D42D;1D42D;0074;0074;
+1D42E;1D42E;1D42E;0075;0075;
+1D42F;1D42F;1D42F;0076;0076;
+1D430;1D430;1D430;0077;0077;
+1D431;1D431;1D431;0078;0078;
+1D432;1D432;1D432;0079;0079;
+1D433;1D433;1D433;007A;007A;
+1D434;1D434;1D434;0041;0041;
+1D435;1D435;1D435;0042;0042;
+1D436;1D436;1D436;0043;0043;
+1D437;1D437;1D437;0044;0044;
+1D438;1D438;1D438;0045;0045;
+1D439;1D439;1D439;0046;0046;
+1D43A;1D43A;1D43A;0047;0047;
+1D43B;1D43B;1D43B;0048;0048;
+1D43C;1D43C;1D43C;0049;0049;
+1D43D;1D43D;1D43D;004A;004A;
+1D43E;1D43E;1D43E;004B;004B;
+1D43F;1D43F;1D43F;004C;004C;
+1D440;1D440;1D440;004D;004D;
+1D441;1D441;1D441;004E;004E;
+1D442;1D442;1D442;004F;004F;
+1D443;1D443;1D443;0050;0050;
+1D444;1D444;1D444;0051;0051;
+1D445;1D445;1D445;0052;0052;
+1D446;1D446;1D446;0053;0053;
+1D447;1D447;1D447;0054;0054;
+1D448;1D448;1D448;0055;0055;
+1D449;1D449;1D449;0056;0056;
+1D44A;1D44A;1D44A;0057;0057;
+1D44B;1D44B;1D44B;0058;0058;
+1D44C;1D44C;1D44C;0059;0059;
+1D44D;1D44D;1D44D;005A;005A;
+1D44E;1D44E;1D44E;0061;0061;
+1D44F;1D44F;1D44F;0062;0062;
+1D450;1D450;1D450;0063;0063;
+1D451;1D451;1D451;0064;0064;
+1D452;1D452;1D452;0065;0065;
+1D453;1D453;1D453;0066;0066;
+1D454;1D454;1D454;0067;0067;
+1D456;1D456;1D456;0069;0069;
+1D457;1D457;1D457;006A;006A;
+1D458;1D458;1D458;006B;006B;
+1D459;1D459;1D459;006C;006C;
+1D45A;1D45A;1D45A;006D;006D;
+1D45B;1D45B;1D45B;006E;006E;
+1D45C;1D45C;1D45C;006F;006F;
+1D45D;1D45D;1D45D;0070;0070;
+1D45E;1D45E;1D45E;0071;0071;
+1D45F;1D45F;1D45F;0072;0072;
+1D460;1D460;1D460;0073;0073;
+1D461;1D461;1D461;0074;0074;
+1D462;1D462;1D462;0075;0075;
+1D463;1D463;1D463;0076;0076;
+1D464;1D464;1D464;0077;0077;
+1D465;1D465;1D465;0078;0078;
+1D466;1D466;1D466;0079;0079;
+1D467;1D467;1D467;007A;007A;
+1D468;1D468;1D468;0041;0041;
+1D469;1D469;1D469;0042;0042;
+1D46A;1D46A;1D46A;0043;0043;
+1D46B;1D46B;1D46B;0044;0044;
+1D46C;1D46C;1D46C;0045;0045;
+1D46D;1D46D;1D46D;0046;0046;
+1D46E;1D46E;1D46E;0047;0047;
+1D46F;1D46F;1D46F;0048;0048;
+1D470;1D470;1D470;0049;0049;
+1D471;1D471;1D471;004A;004A;
+1D472;1D472;1D472;004B;004B;
+1D473;1D473;1D473;004C;004C;
+1D474;1D474;1D474;004D;004D;
+1D475;1D475;1D475;004E;004E;
+1D476;1D476;1D476;004F;004F;
+1D477;1D477;1D477;0050;0050;
+1D478;1D478;1D478;0051;0051;
+1D479;1D479;1D479;0052;0052;
+1D47A;1D47A;1D47A;0053;0053;
+1D47B;1D47B;1D47B;0054;0054;
+1D47C;1D47C;1D47C;0055;0055;
+1D47D;1D47D;1D47D;0056;0056;
+1D47E;1D47E;1D47E;0057;0057;
+1D47F;1D47F;1D47F;0058;0058;
+1D480;1D480;1D480;0059;0059;
+1D481;1D481;1D481;005A;005A;
+1D482;1D482;1D482;0061;0061;
+1D483;1D483;1D483;0062;0062;
+1D484;1D484;1D484;0063;0063;
+1D485;1D485;1D485;0064;0064;
+1D486;1D486;1D486;0065;0065;
+1D487;1D487;1D487;0066;0066;
+1D488;1D488;1D488;0067;0067;
+1D489;1D489;1D489;0068;0068;
+1D48A;1D48A;1D48A;0069;0069;
+1D48B;1D48B;1D48B;006A;006A;
+1D48C;1D48C;1D48C;006B;006B;
+1D48D;1D48D;1D48D;006C;006C;
+1D48E;1D48E;1D48E;006D;006D;
+1D48F;1D48F;1D48F;006E;006E;
+1D490;1D490;1D490;006F;006F;
+1D491;1D491;1D491;0070;0070;
+1D492;1D492;1D492;0071;0071;
+1D493;1D493;1D493;0072;0072;
+1D494;1D494;1D494;0073;0073;
+1D495;1D495;1D495;0074;0074;
+1D496;1D496;1D496;0075;0075;
+1D497;1D497;1D497;0076;0076;
+1D498;1D498;1D498;0077;0077;
+1D499;1D499;1D499;0078;0078;
+1D49A;1D49A;1D49A;0079;0079;
+1D49B;1D49B;1D49B;007A;007A;
+1D49C;1D49C;1D49C;0041;0041;
+1D49E;1D49E;1D49E;0043;0043;
+1D49F;1D49F;1D49F;0044;0044;
+1D4A2;1D4A2;1D4A2;0047;0047;
+1D4A5;1D4A5;1D4A5;004A;004A;
+1D4A6;1D4A6;1D4A6;004B;004B;
+1D4A9;1D4A9;1D4A9;004E;004E;
+1D4AA;1D4AA;1D4AA;004F;004F;
+1D4AB;1D4AB;1D4AB;0050;0050;
+1D4AC;1D4AC;1D4AC;0051;0051;
+1D4AE;1D4AE;1D4AE;0053;0053;
+1D4AF;1D4AF;1D4AF;0054;0054;
+1D4B0;1D4B0;1D4B0;0055;0055;
+1D4B1;1D4B1;1D4B1;0056;0056;
+1D4B2;1D4B2;1D4B2;0057;0057;
+1D4B3;1D4B3;1D4B3;0058;0058;
+1D4B4;1D4B4;1D4B4;0059;0059;
+1D4B5;1D4B5;1D4B5;005A;005A;
+1D4B6;1D4B6;1D4B6;0061;0061;
+1D4B7;1D4B7;1D4B7;0062;0062;
+1D4B8;1D4B8;1D4B8;0063;0063;
+1D4B9;1D4B9;1D4B9;0064;0064;
+1D4BB;1D4BB;1D4BB;0066;0066;
+1D4BD;1D4BD;1D4BD;0068;0068;
+1D4BE;1D4BE;1D4BE;0069;0069;
+1D4BF;1D4BF;1D4BF;006A;006A;
+1D4C0;1D4C0;1D4C0;006B;006B;
+1D4C1;1D4C1;1D4C1;006C;006C;
+1D4C2;1D4C2;1D4C2;006D;006D;
+1D4C3;1D4C3;1D4C3;006E;006E;
+1D4C5;1D4C5;1D4C5;0070;0070;
+1D4C6;1D4C6;1D4C6;0071;0071;
+1D4C7;1D4C7;1D4C7;0072;0072;
+1D4C8;1D4C8;1D4C8;0073;0073;
+1D4C9;1D4C9;1D4C9;0074;0074;
+1D4CA;1D4CA;1D4CA;0075;0075;
+1D4CB;1D4CB;1D4CB;0076;0076;
+1D4CC;1D4CC;1D4CC;0077;0077;
+1D4CD;1D4CD;1D4CD;0078;0078;
+1D4CE;1D4CE;1D4CE;0079;0079;
+1D4CF;1D4CF;1D4CF;007A;007A;
+1D4D0;1D4D0;1D4D0;0041;0041;
+1D4D1;1D4D1;1D4D1;0042;0042;
+1D4D2;1D4D2;1D4D2;0043;0043;
+1D4D3;1D4D3;1D4D3;0044;0044;
+1D4D4;1D4D4;1D4D4;0045;0045;
+1D4D5;1D4D5;1D4D5;0046;0046;
+1D4D6;1D4D6;1D4D6;0047;0047;
+1D4D7;1D4D7;1D4D7;0048;0048;
+1D4D8;1D4D8;1D4D8;0049;0049;
+1D4D9;1D4D9;1D4D9;004A;004A;
+1D4DA;1D4DA;1D4DA;004B;004B;
+1D4DB;1D4DB;1D4DB;004C;004C;
+1D4DC;1D4DC;1D4DC;004D;004D;
+1D4DD;1D4DD;1D4DD;004E;004E;
+1D4DE;1D4DE;1D4DE;004F;004F;
+1D4DF;1D4DF;1D4DF;0050;0050;
+1D4E0;1D4E0;1D4E0;0051;0051;
+1D4E1;1D4E1;1D4E1;0052;0052;
+1D4E2;1D4E2;1D4E2;0053;0053;
+1D4E3;1D4E3;1D4E3;0054;0054;
+1D4E4;1D4E4;1D4E4;0055;0055;
+1D4E5;1D4E5;1D4E5;0056;0056;
+1D4E6;1D4E6;1D4E6;0057;0057;
+1D4E7;1D4E7;1D4E7;0058;0058;
+1D4E8;1D4E8;1D4E8;0059;0059;
+1D4E9;1D4E9;1D4E9;005A;005A;
+1D4EA;1D4EA;1D4EA;0061;0061;
+1D4EB;1D4EB;1D4EB;0062;0062;
+1D4EC;1D4EC;1D4EC;0063;0063;
+1D4ED;1D4ED;1D4ED;0064;0064;
+1D4EE;1D4EE;1D4EE;0065;0065;
+1D4EF;1D4EF;1D4EF;0066;0066;
+1D4F0;1D4F0;1D4F0;0067;0067;
+1D4F1;1D4F1;1D4F1;0068;0068;
+1D4F2;1D4F2;1D4F2;0069;0069;
+1D4F3;1D4F3;1D4F3;006A;006A;
+1D4F4;1D4F4;1D4F4;006B;006B;
+1D4F5;1D4F5;1D4F5;006C;006C;
+1D4F6;1D4F6;1D4F6;006D;006D;
+1D4F7;1D4F7;1D4F7;006E;006E;
+1D4F8;1D4F8;1D4F8;006F;006F;
+1D4F9;1D4F9;1D4F9;0070;0070;
+1D4FA;1D4FA;1D4FA;0071;0071;
+1D4FB;1D4FB;1D4FB;0072;0072;
+1D4FC;1D4FC;1D4FC;0073;0073;
+1D4FD;1D4FD;1D4FD;0074;0074;
+1D4FE;1D4FE;1D4FE;0075;0075;
+1D4FF;1D4FF;1D4FF;0076;0076;
+1D500;1D500;1D500;0077;0077;
+1D501;1D501;1D501;0078;0078;
+1D502;1D502;1D502;0079;0079;
+1D503;1D503;1D503;007A;007A;
+1D504;1D504;1D504;0041;0041;
+1D505;1D505;1D505;0042;0042;
+1D507;1D507;1D507;0044;0044;
+1D508;1D508;1D508;0045;0045;
+1D509;1D509;1D509;0046;0046;
+1D50A;1D50A;1D50A;0047;0047;
+1D50D;1D50D;1D50D;004A;004A;
+1D50E;1D50E;1D50E;004B;004B;
+1D50F;1D50F;1D50F;004C;004C;
+1D510;1D510;1D510;004D;004D;
+1D511;1D511;1D511;004E;004E;
+1D512;1D512;1D512;004F;004F;
+1D513;1D513;1D513;0050;0050;
+1D514;1D514;1D514;0051;0051;
+1D516;1D516;1D516;0053;0053;
+1D517;1D517;1D517;0054;0054;
+1D518;1D518;1D518;0055;0055;
+1D519;1D519;1D519;0056;0056;
+1D51A;1D51A;1D51A;0057;0057;
+1D51B;1D51B;1D51B;0058;0058;
+1D51C;1D51C;1D51C;0059;0059;
+1D51E;1D51E;1D51E;0061;0061;
+1D51F;1D51F;1D51F;0062;0062;
+1D520;1D520;1D520;0063;0063;
+1D521;1D521;1D521;0064;0064;
+1D522;1D522;1D522;0065;0065;
+1D523;1D523;1D523;0066;0066;
+1D524;1D524;1D524;0067;0067;
+1D525;1D525;1D525;0068;0068;
+1D526;1D526;1D526;0069;0069;
+1D527;1D527;1D527;006A;006A;
+1D528;1D528;1D528;006B;006B;
+1D529;1D529;1D529;006C;006C;
+1D52A;1D52A;1D52A;006D;006D;
+1D52B;1D52B;1D52B;006E;006E;
+1D52C;1D52C;1D52C;006F;006F;
+1D52D;1D52D;1D52D;0070;0070;
+1D52E;1D52E;1D52E;0071;0071;
+1D52F;1D52F;1D52F;0072;0072;
+1D530;1D530;1D530;0073;0073;
+1D531;1D531;1D531;0074;0074;
+1D532;1D532;1D532;0075;0075;
+1D533;1D533;1D533;0076;0076;
+1D534;1D534;1D534;0077;0077;
+1D535;1D535;1D535;0078;0078;
+1D536;1D536;1D536;0079;0079;
+1D537;1D537;1D537;007A;007A;
+1D538;1D538;1D538;0041;0041;
+1D539;1D539;1D539;0042;0042;
+1D53B;1D53B;1D53B;0044;0044;
+1D53C;1D53C;1D53C;0045;0045;
+1D53D;1D53D;1D53D;0046;0046;
+1D53E;1D53E;1D53E;0047;0047;
+1D540;1D540;1D540;0049;0049;
+1D541;1D541;1D541;004A;004A;
+1D542;1D542;1D542;004B;004B;
+1D543;1D543;1D543;004C;004C;
+1D544;1D544;1D544;004D;004D;
+1D546;1D546;1D546;004F;004F;
+1D54A;1D54A;1D54A;0053;0053;
+1D54B;1D54B;1D54B;0054;0054;
+1D54C;1D54C;1D54C;0055;0055;
+1D54D;1D54D;1D54D;0056;0056;
+1D54E;1D54E;1D54E;0057;0057;
+1D54F;1D54F;1D54F;0058;0058;
+1D550;1D550;1D550;0059;0059;
+1D552;1D552;1D552;0061;0061;
+1D553;1D553;1D553;0062;0062;
+1D554;1D554;1D554;0063;0063;
+1D555;1D555;1D555;0064;0064;
+1D556;1D556;1D556;0065;0065;
+1D557;1D557;1D557;0066;0066;
+1D558;1D558;1D558;0067;0067;
+1D559;1D559;1D559;0068;0068;
+1D55A;1D55A;1D55A;0069;0069;
+1D55B;1D55B;1D55B;006A;006A;
+1D55C;1D55C;1D55C;006B;006B;
+1D55D;1D55D;1D55D;006C;006C;
+1D55E;1D55E;1D55E;006D;006D;
+1D55F;1D55F;1D55F;006E;006E;
+1D560;1D560;1D560;006F;006F;
+1D561;1D561;1D561;0070;0070;
+1D562;1D562;1D562;0071;0071;
+1D563;1D563;1D563;0072;0072;
+1D564;1D564;1D564;0073;0073;
+1D565;1D565;1D565;0074;0074;
+1D566;1D566;1D566;0075;0075;
+1D567;1D567;1D567;0076;0076;
+1D568;1D568;1D568;0077;0077;
+1D569;1D569;1D569;0078;0078;
+1D56A;1D56A;1D56A;0079;0079;
+1D56B;1D56B;1D56B;007A;007A;
+1D56C;1D56C;1D56C;0041;0041;
+1D56D;1D56D;1D56D;0042;0042;
+1D56E;1D56E;1D56E;0043;0043;
+1D56F;1D56F;1D56F;0044;0044;
+1D570;1D570;1D570;0045;0045;
+1D571;1D571;1D571;0046;0046;
+1D572;1D572;1D572;0047;0047;
+1D573;1D573;1D573;0048;0048;
+1D574;1D574;1D574;0049;0049;
+1D575;1D575;1D575;004A;004A;
+1D576;1D576;1D576;004B;004B;
+1D577;1D577;1D577;004C;004C;
+1D578;1D578;1D578;004D;004D;
+1D579;1D579;1D579;004E;004E;
+1D57A;1D57A;1D57A;004F;004F;
+1D57B;1D57B;1D57B;0050;0050;
+1D57C;1D57C;1D57C;0051;0051;
+1D57D;1D57D;1D57D;0052;0052;
+1D57E;1D57E;1D57E;0053;0053;
+1D57F;1D57F;1D57F;0054;0054;
+1D580;1D580;1D580;0055;0055;
+1D581;1D581;1D581;0056;0056;
+1D582;1D582;1D582;0057;0057;
+1D583;1D583;1D583;0058;0058;
+1D584;1D584;1D584;0059;0059;
+1D585;1D585;1D585;005A;005A;
+1D586;1D586;1D586;0061;0061;
+1D587;1D587;1D587;0062;0062;
+1D588;1D588;1D588;0063;0063;
+1D589;1D589;1D589;0064;0064;
+1D58A;1D58A;1D58A;0065;0065;
+1D58B;1D58B;1D58B;0066;0066;
+1D58C;1D58C;1D58C;0067;0067;
+1D58D;1D58D;1D58D;0068;0068;
+1D58E;1D58E;1D58E;0069;0069;
+1D58F;1D58F;1D58F;006A;006A;
+1D590;1D590;1D590;006B;006B;
+1D591;1D591;1D591;006C;006C;
+1D592;1D592;1D592;006D;006D;
+1D593;1D593;1D593;006E;006E;
+1D594;1D594;1D594;006F;006F;
+1D595;1D595;1D595;0070;0070;
+1D596;1D596;1D596;0071;0071;
+1D597;1D597;1D597;0072;0072;
+1D598;1D598;1D598;0073;0073;
+1D599;1D599;1D599;0074;0074;
+1D59A;1D59A;1D59A;0075;0075;
+1D59B;1D59B;1D59B;0076;0076;
+1D59C;1D59C;1D59C;0077;0077;
+1D59D;1D59D;1D59D;0078;0078;
+1D59E;1D59E;1D59E;0079;0079;
+1D59F;1D59F;1D59F;007A;007A;
+1D5A0;1D5A0;1D5A0;0041;0041;
+1D5A1;1D5A1;1D5A1;0042;0042;
+1D5A2;1D5A2;1D5A2;0043;0043;
+1D5A3;1D5A3;1D5A3;0044;0044;
+1D5A4;1D5A4;1D5A4;0045;0045;
+1D5A5;1D5A5;1D5A5;0046;0046;
+1D5A6;1D5A6;1D5A6;0047;0047;
+1D5A7;1D5A7;1D5A7;0048;0048;
+1D5A8;1D5A8;1D5A8;0049;0049;
+1D5A9;1D5A9;1D5A9;004A;004A;
+1D5AA;1D5AA;1D5AA;004B;004B;
+1D5AB;1D5AB;1D5AB;004C;004C;
+1D5AC;1D5AC;1D5AC;004D;004D;
+1D5AD;1D5AD;1D5AD;004E;004E;
+1D5AE;1D5AE;1D5AE;004F;004F;
+1D5AF;1D5AF;1D5AF;0050;0050;
+1D5B0;1D5B0;1D5B0;0051;0051;
+1D5B1;1D5B1;1D5B1;0052;0052;
+1D5B2;1D5B2;1D5B2;0053;0053;
+1D5B3;1D5B3;1D5B3;0054;0054;
+1D5B4;1D5B4;1D5B4;0055;0055;
+1D5B5;1D5B5;1D5B5;0056;0056;
+1D5B6;1D5B6;1D5B6;0057;0057;
+1D5B7;1D5B7;1D5B7;0058;0058;
+1D5B8;1D5B8;1D5B8;0059;0059;
+1D5B9;1D5B9;1D5B9;005A;005A;
+1D5BA;1D5BA;1D5BA;0061;0061;
+1D5BB;1D5BB;1D5BB;0062;0062;
+1D5BC;1D5BC;1D5BC;0063;0063;
+1D5BD;1D5BD;1D5BD;0064;0064;
+1D5BE;1D5BE;1D5BE;0065;0065;
+1D5BF;1D5BF;1D5BF;0066;0066;
+1D5C0;1D5C0;1D5C0;0067;0067;
+1D5C1;1D5C1;1D5C1;0068;0068;
+1D5C2;1D5C2;1D5C2;0069;0069;
+1D5C3;1D5C3;1D5C3;006A;006A;
+1D5C4;1D5C4;1D5C4;006B;006B;
+1D5C5;1D5C5;1D5C5;006C;006C;
+1D5C6;1D5C6;1D5C6;006D;006D;
+1D5C7;1D5C7;1D5C7;006E;006E;
+1D5C8;1D5C8;1D5C8;006F;006F;
+1D5C9;1D5C9;1D5C9;0070;0070;
+1D5CA;1D5CA;1D5CA;0071;0071;
+1D5CB;1D5CB;1D5CB;0072;0072;
+1D5CC;1D5CC;1D5CC;0073;0073;
+1D5CD;1D5CD;1D5CD;0074;0074;
+1D5CE;1D5CE;1D5CE;0075;0075;
+1D5CF;1D5CF;1D5CF;0076;0076;
+1D5D0;1D5D0;1D5D0;0077;0077;
+1D5D1;1D5D1;1D5D1;0078;0078;
+1D5D2;1D5D2;1D5D2;0079;0079;
+1D5D3;1D5D3;1D5D3;007A;007A;
+1D5D4;1D5D4;1D5D4;0041;0041;
+1D5D5;1D5D5;1D5D5;0042;0042;
+1D5D6;1D5D6;1D5D6;0043;0043;
+1D5D7;1D5D7;1D5D7;0044;0044;
+1D5D8;1D5D8;1D5D8;0045;0045;
+1D5D9;1D5D9;1D5D9;0046;0046;
+1D5DA;1D5DA;1D5DA;0047;0047;
+1D5DB;1D5DB;1D5DB;0048;0048;
+1D5DC;1D5DC;1D5DC;0049;0049;
+1D5DD;1D5DD;1D5DD;004A;004A;
+1D5DE;1D5DE;1D5DE;004B;004B;
+1D5DF;1D5DF;1D5DF;004C;004C;
+1D5E0;1D5E0;1D5E0;004D;004D;
+1D5E1;1D5E1;1D5E1;004E;004E;
+1D5E2;1D5E2;1D5E2;004F;004F;
+1D5E3;1D5E3;1D5E3;0050;0050;
+1D5E4;1D5E4;1D5E4;0051;0051;
+1D5E5;1D5E5;1D5E5;0052;0052;
+1D5E6;1D5E6;1D5E6;0053;0053;
+1D5E7;1D5E7;1D5E7;0054;0054;
+1D5E8;1D5E8;1D5E8;0055;0055;
+1D5E9;1D5E9;1D5E9;0056;0056;
+1D5EA;1D5EA;1D5EA;0057;0057;
+1D5EB;1D5EB;1D5EB;0058;0058;
+1D5EC;1D5EC;1D5EC;0059;0059;
+1D5ED;1D5ED;1D5ED;005A;005A;
+1D5EE;1D5EE;1D5EE;0061;0061;
+1D5EF;1D5EF;1D5EF;0062;0062;
+1D5F0;1D5F0;1D5F0;0063;0063;
+1D5F1;1D5F1;1D5F1;0064;0064;
+1D5F2;1D5F2;1D5F2;0065;0065;
+1D5F3;1D5F3;1D5F3;0066;0066;
+1D5F4;1D5F4;1D5F4;0067;0067;
+1D5F5;1D5F5;1D5F5;0068;0068;
+1D5F6;1D5F6;1D5F6;0069;0069;
+1D5F7;1D5F7;1D5F7;006A;006A;
+1D5F8;1D5F8;1D5F8;006B;006B;
+1D5F9;1D5F9;1D5F9;006C;006C;
+1D5FA;1D5FA;1D5FA;006D;006D;
+1D5FB;1D5FB;1D5FB;006E;006E;
+1D5FC;1D5FC;1D5FC;006F;006F;
+1D5FD;1D5FD;1D5FD;0070;0070;
+1D5FE;1D5FE;1D5FE;0071;0071;
+1D5FF;1D5FF;1D5FF;0072;0072;
+1D600;1D600;1D600;0073;0073;
+1D601;1D601;1D601;0074;0074;
+1D602;1D602;1D602;0075;0075;
+1D603;1D603;1D603;0076;0076;
+1D604;1D604;1D604;0077;0077;
+1D605;1D605;1D605;0078;0078;
+1D606;1D606;1D606;0079;0079;
+1D607;1D607;1D607;007A;007A;
+1D608;1D608;1D608;0041;0041;
+1D609;1D609;1D609;0042;0042;
+1D60A;1D60A;1D60A;0043;0043;
+1D60B;1D60B;1D60B;0044;0044;
+1D60C;1D60C;1D60C;0045;0045;
+1D60D;1D60D;1D60D;0046;0046;
+1D60E;1D60E;1D60E;0047;0047;
+1D60F;1D60F;1D60F;0048;0048;
+1D610;1D610;1D610;0049;0049;
+1D611;1D611;1D611;004A;004A;
+1D612;1D612;1D612;004B;004B;
+1D613;1D613;1D613;004C;004C;
+1D614;1D614;1D614;004D;004D;
+1D615;1D615;1D615;004E;004E;
+1D616;1D616;1D616;004F;004F;
+1D617;1D617;1D617;0050;0050;
+1D618;1D618;1D618;0051;0051;
+1D619;1D619;1D619;0052;0052;
+1D61A;1D61A;1D61A;0053;0053;
+1D61B;1D61B;1D61B;0054;0054;
+1D61C;1D61C;1D61C;0055;0055;
+1D61D;1D61D;1D61D;0056;0056;
+1D61E;1D61E;1D61E;0057;0057;
+1D61F;1D61F;1D61F;0058;0058;
+1D620;1D620;1D620;0059;0059;
+1D621;1D621;1D621;005A;005A;
+1D622;1D622;1D622;0061;0061;
+1D623;1D623;1D623;0062;0062;
+1D624;1D624;1D624;0063;0063;
+1D625;1D625;1D625;0064;0064;
+1D626;1D626;1D626;0065;0065;
+1D627;1D627;1D627;0066;0066;
+1D628;1D628;1D628;0067;0067;
+1D629;1D629;1D629;0068;0068;
+1D62A;1D62A;1D62A;0069;0069;
+1D62B;1D62B;1D62B;006A;006A;
+1D62C;1D62C;1D62C;006B;006B;
+1D62D;1D62D;1D62D;006C;006C;
+1D62E;1D62E;1D62E;006D;006D;
+1D62F;1D62F;1D62F;006E;006E;
+1D630;1D630;1D630;006F;006F;
+1D631;1D631;1D631;0070;0070;
+1D632;1D632;1D632;0071;0071;
+1D633;1D633;1D633;0072;0072;
+1D634;1D634;1D634;0073;0073;
+1D635;1D635;1D635;0074;0074;
+1D636;1D636;1D636;0075;0075;
+1D637;1D637;1D637;0076;0076;
+1D638;1D638;1D638;0077;0077;
+1D639;1D639;1D639;0078;0078;
+1D63A;1D63A;1D63A;0079;0079;
+1D63B;1D63B;1D63B;007A;007A;
+1D63C;1D63C;1D63C;0041;0041;
+1D63D;1D63D;1D63D;0042;0042;
+1D63E;1D63E;1D63E;0043;0043;
+1D63F;1D63F;1D63F;0044;0044;
+1D640;1D640;1D640;0045;0045;
+1D641;1D641;1D641;0046;0046;
+1D642;1D642;1D642;0047;0047;
+1D643;1D643;1D643;0048;0048;
+1D644;1D644;1D644;0049;0049;
+1D645;1D645;1D645;004A;004A;
+1D646;1D646;1D646;004B;004B;
+1D647;1D647;1D647;004C;004C;
+1D648;1D648;1D648;004D;004D;
+1D649;1D649;1D649;004E;004E;
+1D64A;1D64A;1D64A;004F;004F;
+1D64B;1D64B;1D64B;0050;0050;
+1D64C;1D64C;1D64C;0051;0051;
+1D64D;1D64D;1D64D;0052;0052;
+1D64E;1D64E;1D64E;0053;0053;
+1D64F;1D64F;1D64F;0054;0054;
+1D650;1D650;1D650;0055;0055;
+1D651;1D651;1D651;0056;0056;
+1D652;1D652;1D652;0057;0057;
+1D653;1D653;1D653;0058;0058;
+1D654;1D654;1D654;0059;0059;
+1D655;1D655;1D655;005A;005A;
+1D656;1D656;1D656;0061;0061;
+1D657;1D657;1D657;0062;0062;
+1D658;1D658;1D658;0063;0063;
+1D659;1D659;1D659;0064;0064;
+1D65A;1D65A;1D65A;0065;0065;
+1D65B;1D65B;1D65B;0066;0066;
+1D65C;1D65C;1D65C;0067;0067;
+1D65D;1D65D;1D65D;0068;0068;
+1D65E;1D65E;1D65E;0069;0069;
+1D65F;1D65F;1D65F;006A;006A;
+1D660;1D660;1D660;006B;006B;
+1D661;1D661;1D661;006C;006C;
+1D662;1D662;1D662;006D;006D;
+1D663;1D663;1D663;006E;006E;
+1D664;1D664;1D664;006F;006F;
+1D665;1D665;1D665;0070;0070;
+1D666;1D666;1D666;0071;0071;
+1D667;1D667;1D667;0072;0072;
+1D668;1D668;1D668;0073;0073;
+1D669;1D669;1D669;0074;0074;
+1D66A;1D66A;1D66A;0075;0075;
+1D66B;1D66B;1D66B;0076;0076;
+1D66C;1D66C;1D66C;0077;0077;
+1D66D;1D66D;1D66D;0078;0078;
+1D66E;1D66E;1D66E;0079;0079;
+1D66F;1D66F;1D66F;007A;007A;
+1D670;1D670;1D670;0041;0041;
+1D671;1D671;1D671;0042;0042;
+1D672;1D672;1D672;0043;0043;
+1D673;1D673;1D673;0044;0044;
+1D674;1D674;1D674;0045;0045;
+1D675;1D675;1D675;0046;0046;
+1D676;1D676;1D676;0047;0047;
+1D677;1D677;1D677;0048;0048;
+1D678;1D678;1D678;0049;0049;
+1D679;1D679;1D679;004A;004A;
+1D67A;1D67A;1D67A;004B;004B;
+1D67B;1D67B;1D67B;004C;004C;
+1D67C;1D67C;1D67C;004D;004D;
+1D67D;1D67D;1D67D;004E;004E;
+1D67E;1D67E;1D67E;004F;004F;
+1D67F;1D67F;1D67F;0050;0050;
+1D680;1D680;1D680;0051;0051;
+1D681;1D681;1D681;0052;0052;
+1D682;1D682;1D682;0053;0053;
+1D683;1D683;1D683;0054;0054;
+1D684;1D684;1D684;0055;0055;
+1D685;1D685;1D685;0056;0056;
+1D686;1D686;1D686;0057;0057;
+1D687;1D687;1D687;0058;0058;
+1D688;1D688;1D688;0059;0059;
+1D689;1D689;1D689;005A;005A;
+1D68A;1D68A;1D68A;0061;0061;
+1D68B;1D68B;1D68B;0062;0062;
+1D68C;1D68C;1D68C;0063;0063;
+1D68D;1D68D;1D68D;0064;0064;
+1D68E;1D68E;1D68E;0065;0065;
+1D68F;1D68F;1D68F;0066;0066;
+1D690;1D690;1D690;0067;0067;
+1D691;1D691;1D691;0068;0068;
+1D692;1D692;1D692;0069;0069;
+1D693;1D693;1D693;006A;006A;
+1D694;1D694;1D694;006B;006B;
+1D695;1D695;1D695;006C;006C;
+1D696;1D696;1D696;006D;006D;
+1D697;1D697;1D697;006E;006E;
+1D698;1D698;1D698;006F;006F;
+1D699;1D699;1D699;0070;0070;
+1D69A;1D69A;1D69A;0071;0071;
+1D69B;1D69B;1D69B;0072;0072;
+1D69C;1D69C;1D69C;0073;0073;
+1D69D;1D69D;1D69D;0074;0074;
+1D69E;1D69E;1D69E;0075;0075;
+1D69F;1D69F;1D69F;0076;0076;
+1D6A0;1D6A0;1D6A0;0077;0077;
+1D6A1;1D6A1;1D6A1;0078;0078;
+1D6A2;1D6A2;1D6A2;0079;0079;
+1D6A3;1D6A3;1D6A3;007A;007A;
+1D6A4;1D6A4;1D6A4;0131;0131;
+1D6A5;1D6A5;1D6A5;0237;0237;
+1D6A8;1D6A8;1D6A8;0391;0391;
+1D6A9;1D6A9;1D6A9;0392;0392;
+1D6AA;1D6AA;1D6AA;0393;0393;
+1D6AB;1D6AB;1D6AB;0394;0394;
+1D6AC;1D6AC;1D6AC;0395;0395;
+1D6AD;1D6AD;1D6AD;0396;0396;
+1D6AE;1D6AE;1D6AE;0397;0397;
+1D6AF;1D6AF;1D6AF;0398;0398;
+1D6B0;1D6B0;1D6B0;0399;0399;
+1D6B1;1D6B1;1D6B1;039A;039A;
+1D6B2;1D6B2;1D6B2;039B;039B;
+1D6B3;1D6B3;1D6B3;039C;039C;
+1D6B4;1D6B4;1D6B4;039D;039D;
+1D6B5;1D6B5;1D6B5;039E;039E;
+1D6B6;1D6B6;1D6B6;039F;039F;
+1D6B7;1D6B7;1D6B7;03A0;03A0;
+1D6B8;1D6B8;1D6B8;03A1;03A1;
+1D6B9;1D6B9;1D6B9;0398;0398;
+1D6BA;1D6BA;1D6BA;03A3;03A3;
+1D6BB;1D6BB;1D6BB;03A4;03A4;
+1D6BC;1D6BC;1D6BC;03A5;03A5;
+1D6BD;1D6BD;1D6BD;03A6;03A6;
+1D6BE;1D6BE;1D6BE;03A7;03A7;
+1D6BF;1D6BF;1D6BF;03A8;03A8;
+1D6C0;1D6C0;1D6C0;03A9;03A9;
+1D6C1;1D6C1;1D6C1;2207;2207;
+1D6C2;1D6C2;1D6C2;03B1;03B1;
+1D6C3;1D6C3;1D6C3;03B2;03B2;
+1D6C4;1D6C4;1D6C4;03B3;03B3;
+1D6C5;1D6C5;1D6C5;03B4;03B4;
+1D6C6;1D6C6;1D6C6;03B5;03B5;
+1D6C7;1D6C7;1D6C7;03B6;03B6;
+1D6C8;1D6C8;1D6C8;03B7;03B7;
+1D6C9;1D6C9;1D6C9;03B8;03B8;
+1D6CA;1D6CA;1D6CA;03B9;03B9;
+1D6CB;1D6CB;1D6CB;03BA;03BA;
+1D6CC;1D6CC;1D6CC;03BB;03BB;
+1D6CD;1D6CD;1D6CD;03BC;03BC;
+1D6CE;1D6CE;1D6CE;03BD;03BD;
+1D6CF;1D6CF;1D6CF;03BE;03BE;
+1D6D0;1D6D0;1D6D0;03BF;03BF;
+1D6D1;1D6D1;1D6D1;03C0;03C0;
+1D6D2;1D6D2;1D6D2;03C1;03C1;
+1D6D3;1D6D3;1D6D3;03C2;03C2;
+1D6D4;1D6D4;1D6D4;03C3;03C3;
+1D6D5;1D6D5;1D6D5;03C4;03C4;
+1D6D6;1D6D6;1D6D6;03C5;03C5;
+1D6D7;1D6D7;1D6D7;03C6;03C6;
+1D6D8;1D6D8;1D6D8;03C7;03C7;
+1D6D9;1D6D9;1D6D9;03C8;03C8;
+1D6DA;1D6DA;1D6DA;03C9;03C9;
+1D6DB;1D6DB;1D6DB;2202;2202;
+1D6DC;1D6DC;1D6DC;03B5;03B5;
+1D6DD;1D6DD;1D6DD;03B8;03B8;
+1D6DE;1D6DE;1D6DE;03BA;03BA;
+1D6DF;1D6DF;1D6DF;03C6;03C6;
+1D6E0;1D6E0;1D6E0;03C1;03C1;
+1D6E1;1D6E1;1D6E1;03C0;03C0;
+1D6E2;1D6E2;1D6E2;0391;0391;
+1D6E3;1D6E3;1D6E3;0392;0392;
+1D6E4;1D6E4;1D6E4;0393;0393;
+1D6E5;1D6E5;1D6E5;0394;0394;
+1D6E6;1D6E6;1D6E6;0395;0395;
+1D6E7;1D6E7;1D6E7;0396;0396;
+1D6E8;1D6E8;1D6E8;0397;0397;
+1D6E9;1D6E9;1D6E9;0398;0398;
+1D6EA;1D6EA;1D6EA;0399;0399;
+1D6EB;1D6EB;1D6EB;039A;039A;
+1D6EC;1D6EC;1D6EC;039B;039B;
+1D6ED;1D6ED;1D6ED;039C;039C;
+1D6EE;1D6EE;1D6EE;039D;039D;
+1D6EF;1D6EF;1D6EF;039E;039E;
+1D6F0;1D6F0;1D6F0;039F;039F;
+1D6F1;1D6F1;1D6F1;03A0;03A0;
+1D6F2;1D6F2;1D6F2;03A1;03A1;
+1D6F3;1D6F3;1D6F3;0398;0398;
+1D6F4;1D6F4;1D6F4;03A3;03A3;
+1D6F5;1D6F5;1D6F5;03A4;03A4;
+1D6F6;1D6F6;1D6F6;03A5;03A5;
+1D6F7;1D6F7;1D6F7;03A6;03A6;
+1D6F8;1D6F8;1D6F8;03A7;03A7;
+1D6F9;1D6F9;1D6F9;03A8;03A8;
+1D6FA;1D6FA;1D6FA;03A9;03A9;
+1D6FB;1D6FB;1D6FB;2207;2207;
+1D6FC;1D6FC;1D6FC;03B1;03B1;
+1D6FD;1D6FD;1D6FD;03B2;03B2;
+1D6FE;1D6FE;1D6FE;03B3;03B3;
+1D6FF;1D6FF;1D6FF;03B4;03B4;
+1D700;1D700;1D700;03B5;03B5;
+1D701;1D701;1D701;03B6;03B6;
+1D702;1D702;1D702;03B7;03B7;
+1D703;1D703;1D703;03B8;03B8;
+1D704;1D704;1D704;03B9;03B9;
+1D705;1D705;1D705;03BA;03BA;
+1D706;1D706;1D706;03BB;03BB;
+1D707;1D707;1D707;03BC;03BC;
+1D708;1D708;1D708;03BD;03BD;
+1D709;1D709;1D709;03BE;03BE;
+1D70A;1D70A;1D70A;03BF;03BF;
+1D70B;1D70B;1D70B;03C0;03C0;
+1D70C;1D70C;1D70C;03C1;03C1;
+1D70D;1D70D;1D70D;03C2;03C2;
+1D70E;1D70E;1D70E;03C3;03C3;
+1D70F;1D70F;1D70F;03C4;03C4;
+1D710;1D710;1D710;03C5;03C5;
+1D711;1D711;1D711;03C6;03C6;
+1D712;1D712;1D712;03C7;03C7;
+1D713;1D713;1D713;03C8;03C8;
+1D714;1D714;1D714;03C9;03C9;
+1D715;1D715;1D715;2202;2202;
+1D716;1D716;1D716;03B5;03B5;
+1D717;1D717;1D717;03B8;03B8;
+1D718;1D718;1D718;03BA;03BA;
+1D719;1D719;1D719;03C6;03C6;
+1D71A;1D71A;1D71A;03C1;03C1;
+1D71B;1D71B;1D71B;03C0;03C0;
+1D71C;1D71C;1D71C;0391;0391;
+1D71D;1D71D;1D71D;0392;0392;
+1D71E;1D71E;1D71E;0393;0393;
+1D71F;1D71F;1D71F;0394;0394;
+1D720;1D720;1D720;0395;0395;
+1D721;1D721;1D721;0396;0396;
+1D722;1D722;1D722;0397;0397;
+1D723;1D723;1D723;0398;0398;
+1D724;1D724;1D724;0399;0399;
+1D725;1D725;1D725;039A;039A;
+1D726;1D726;1D726;039B;039B;
+1D727;1D727;1D727;039C;039C;
+1D728;1D728;1D728;039D;039D;
+1D729;1D729;1D729;039E;039E;
+1D72A;1D72A;1D72A;039F;039F;
+1D72B;1D72B;1D72B;03A0;03A0;
+1D72C;1D72C;1D72C;03A1;03A1;
+1D72D;1D72D;1D72D;0398;0398;
+1D72E;1D72E;1D72E;03A3;03A3;
+1D72F;1D72F;1D72F;03A4;03A4;
+1D730;1D730;1D730;03A5;03A5;
+1D731;1D731;1D731;03A6;03A6;
+1D732;1D732;1D732;03A7;03A7;
+1D733;1D733;1D733;03A8;03A8;
+1D734;1D734;1D734;03A9;03A9;
+1D735;1D735;1D735;2207;2207;
+1D736;1D736;1D736;03B1;03B1;
+1D737;1D737;1D737;03B2;03B2;
+1D738;1D738;1D738;03B3;03B3;
+1D739;1D739;1D739;03B4;03B4;
+1D73A;1D73A;1D73A;03B5;03B5;
+1D73B;1D73B;1D73B;03B6;03B6;
+1D73C;1D73C;1D73C;03B7;03B7;
+1D73D;1D73D;1D73D;03B8;03B8;
+1D73E;1D73E;1D73E;03B9;03B9;
+1D73F;1D73F;1D73F;03BA;03BA;
+1D740;1D740;1D740;03BB;03BB;
+1D741;1D741;1D741;03BC;03BC;
+1D742;1D742;1D742;03BD;03BD;
+1D743;1D743;1D743;03BE;03BE;
+1D744;1D744;1D744;03BF;03BF;
+1D745;1D745;1D745;03C0;03C0;
+1D746;1D746;1D746;03C1;03C1;
+1D747;1D747;1D747;03C2;03C2;
+1D748;1D748;1D748;03C3;03C3;
+1D749;1D749;1D749;03C4;03C4;
+1D74A;1D74A;1D74A;03C5;03C5;
+1D74B;1D74B;1D74B;03C6;03C6;
+1D74C;1D74C;1D74C;03C7;03C7;
+1D74D;1D74D;1D74D;03C8;03C8;
+1D74E;1D74E;1D74E;03C9;03C9;
+1D74F;1D74F;1D74F;2202;2202;
+1D750;1D750;1D750;03B5;03B5;
+1D751;1D751;1D751;03B8;03B8;
+1D752;1D752;1D752;03BA;03BA;
+1D753;1D753;1D753;03C6;03C6;
+1D754;1D754;1D754;03C1;03C1;
+1D755;1D755;1D755;03C0;03C0;
+1D756;1D756;1D756;0391;0391;
+1D757;1D757;1D757;0392;0392;
+1D758;1D758;1D758;0393;0393;
+1D759;1D759;1D759;0394;0394;
+1D75A;1D75A;1D75A;0395;0395;
+1D75B;1D75B;1D75B;0396;0396;
+1D75C;1D75C;1D75C;0397;0397;
+1D75D;1D75D;1D75D;0398;0398;
+1D75E;1D75E;1D75E;0399;0399;
+1D75F;1D75F;1D75F;039A;039A;
+1D760;1D760;1D760;039B;039B;
+1D761;1D761;1D761;039C;039C;
+1D762;1D762;1D762;039D;039D;
+1D763;1D763;1D763;039E;039E;
+1D764;1D764;1D764;039F;039F;
+1D765;1D765;1D765;03A0;03A0;
+1D766;1D766;1D766;03A1;03A1;
+1D767;1D767;1D767;0398;0398;
+1D768;1D768;1D768;03A3;03A3;
+1D769;1D769;1D769;03A4;03A4;
+1D76A;1D76A;1D76A;03A5;03A5;
+1D76B;1D76B;1D76B;03A6;03A6;
+1D76C;1D76C;1D76C;03A7;03A7;
+1D76D;1D76D;1D76D;03A8;03A8;
+1D76E;1D76E;1D76E;03A9;03A9;
+1D76F;1D76F;1D76F;2207;2207;
+1D770;1D770;1D770;03B1;03B1;
+1D771;1D771;1D771;03B2;03B2;
+1D772;1D772;1D772;03B3;03B3;
+1D773;1D773;1D773;03B4;03B4;
+1D774;1D774;1D774;03B5;03B5;
+1D775;1D775;1D775;03B6;03B6;
+1D776;1D776;1D776;03B7;03B7;
+1D777;1D777;1D777;03B8;03B8;
+1D778;1D778;1D778;03B9;03B9;
+1D779;1D779;1D779;03BA;03BA;
+1D77A;1D77A;1D77A;03BB;03BB;
+1D77B;1D77B;1D77B;03BC;03BC;
+1D77C;1D77C;1D77C;03BD;03BD;
+1D77D;1D77D;1D77D;03BE;03BE;
+1D77E;1D77E;1D77E;03BF;03BF;
+1D77F;1D77F;1D77F;03C0;03C0;
+1D780;1D780;1D780;03C1;03C1;
+1D781;1D781;1D781;03C2;03C2;
+1D782;1D782;1D782;03C3;03C3;
+1D783;1D783;1D783;03C4;03C4;
+1D784;1D784;1D784;03C5;03C5;
+1D785;1D785;1D785;03C6;03C6;
+1D786;1D786;1D786;03C7;03C7;
+1D787;1D787;1D787;03C8;03C8;
+1D788;1D788;1D788;03C9;03C9;
+1D789;1D789;1D789;2202;2202;
+1D78A;1D78A;1D78A;03B5;03B5;
+1D78B;1D78B;1D78B;03B8;03B8;
+1D78C;1D78C;1D78C;03BA;03BA;
+1D78D;1D78D;1D78D;03C6;03C6;
+1D78E;1D78E;1D78E;03C1;03C1;
+1D78F;1D78F;1D78F;03C0;03C0;
+1D790;1D790;1D790;0391;0391;
+1D791;1D791;1D791;0392;0392;
+1D792;1D792;1D792;0393;0393;
+1D793;1D793;1D793;0394;0394;
+1D794;1D794;1D794;0395;0395;
+1D795;1D795;1D795;0396;0396;
+1D796;1D796;1D796;0397;0397;
+1D797;1D797;1D797;0398;0398;
+1D798;1D798;1D798;0399;0399;
+1D799;1D799;1D799;039A;039A;
+1D79A;1D79A;1D79A;039B;039B;
+1D79B;1D79B;1D79B;039C;039C;
+1D79C;1D79C;1D79C;039D;039D;
+1D79D;1D79D;1D79D;039E;039E;
+1D79E;1D79E;1D79E;039F;039F;
+1D79F;1D79F;1D79F;03A0;03A0;
+1D7A0;1D7A0;1D7A0;03A1;03A1;
+1D7A1;1D7A1;1D7A1;0398;0398;
+1D7A2;1D7A2;1D7A2;03A3;03A3;
+1D7A3;1D7A3;1D7A3;03A4;03A4;
+1D7A4;1D7A4;1D7A4;03A5;03A5;
+1D7A5;1D7A5;1D7A5;03A6;03A6;
+1D7A6;1D7A6;1D7A6;03A7;03A7;
+1D7A7;1D7A7;1D7A7;03A8;03A8;
+1D7A8;1D7A8;1D7A8;03A9;03A9;
+1D7A9;1D7A9;1D7A9;2207;2207;
+1D7AA;1D7AA;1D7AA;03B1;03B1;
+1D7AB;1D7AB;1D7AB;03B2;03B2;
+1D7AC;1D7AC;1D7AC;03B3;03B3;
+1D7AD;1D7AD;1D7AD;03B4;03B4;
+1D7AE;1D7AE;1D7AE;03B5;03B5;
+1D7AF;1D7AF;1D7AF;03B6;03B6;
+1D7B0;1D7B0;1D7B0;03B7;03B7;
+1D7B1;1D7B1;1D7B1;03B8;03B8;
+1D7B2;1D7B2;1D7B2;03B9;03B9;
+1D7B3;1D7B3;1D7B3;03BA;03BA;
+1D7B4;1D7B4;1D7B4;03BB;03BB;
+1D7B5;1D7B5;1D7B5;03BC;03BC;
+1D7B6;1D7B6;1D7B6;03BD;03BD;
+1D7B7;1D7B7;1D7B7;03BE;03BE;
+1D7B8;1D7B8;1D7B8;03BF;03BF;
+1D7B9;1D7B9;1D7B9;03C0;03C0;
+1D7BA;1D7BA;1D7BA;03C1;03C1;
+1D7BB;1D7BB;1D7BB;03C2;03C2;
+1D7BC;1D7BC;1D7BC;03C3;03C3;
+1D7BD;1D7BD;1D7BD;03C4;03C4;
+1D7BE;1D7BE;1D7BE;03C5;03C5;
+1D7BF;1D7BF;1D7BF;03C6;03C6;
+1D7C0;1D7C0;1D7C0;03C7;03C7;
+1D7C1;1D7C1;1D7C1;03C8;03C8;
+1D7C2;1D7C2;1D7C2;03C9;03C9;
+1D7C3;1D7C3;1D7C3;2202;2202;
+1D7C4;1D7C4;1D7C4;03B5;03B5;
+1D7C5;1D7C5;1D7C5;03B8;03B8;
+1D7C6;1D7C6;1D7C6;03BA;03BA;
+1D7C7;1D7C7;1D7C7;03C6;03C6;
+1D7C8;1D7C8;1D7C8;03C1;03C1;
+1D7C9;1D7C9;1D7C9;03C0;03C0;
+1D7CA;1D7CA;1D7CA;03DC;03DC;
+1D7CB;1D7CB;1D7CB;03DD;03DD;
+1D7CE;1D7CE;1D7CE;0030;0030;
+1D7CF;1D7CF;1D7CF;0031;0031;
+1D7D0;1D7D0;1D7D0;0032;0032;
+1D7D1;1D7D1;1D7D1;0033;0033;
+1D7D2;1D7D2;1D7D2;0034;0034;
+1D7D3;1D7D3;1D7D3;0035;0035;
+1D7D4;1D7D4;1D7D4;0036;0036;
+1D7D5;1D7D5;1D7D5;0037;0037;
+1D7D6;1D7D6;1D7D6;0038;0038;
+1D7D7;1D7D7;1D7D7;0039;0039;
+1D7D8;1D7D8;1D7D8;0030;0030;
+1D7D9;1D7D9;1D7D9;0031;0031;
+1D7DA;1D7DA;1D7DA;0032;0032;
+1D7DB;1D7DB;1D7DB;0033;0033;
+1D7DC;1D7DC;1D7DC;0034;0034;
+1D7DD;1D7DD;1D7DD;0035;0035;
+1D7DE;1D7DE;1D7DE;0036;0036;
+1D7DF;1D7DF;1D7DF;0037;0037;
+1D7E0;1D7E0;1D7E0;0038;0038;
+1D7E1;1D7E1;1D7E1;0039;0039;
+1D7E2;1D7E2;1D7E2;0030;0030;
+1D7E3;1D7E3;1D7E3;0031;0031;
+1D7E4;1D7E4;1D7E4;0032;0032;
+1D7E5;1D7E5;1D7E5;0033;0033;
+1D7E6;1D7E6;1D7E6;0034;0034;
+1D7E7;1D7E7;1D7E7;0035;0035;
+1D7E8;1D7E8;1D7E8;0036;0036;
+1D7E9;1D7E9;1D7E9;0037;0037;
+1D7EA;1D7EA;1D7EA;0038;0038;
+1D7EB;1D7EB;1D7EB;0039;0039;
+1D7EC;1D7EC;1D7EC;0030;0030;
+1D7ED;1D7ED;1D7ED;0031;0031;
+1D7EE;1D7EE;1D7EE;0032;0032;
+1D7EF;1D7EF;1D7EF;0033;0033;
+1D7F0;1D7F0;1D7F0;0034;0034;
+1D7F1;1D7F1;1D7F1;0035;0035;
+1D7F2;1D7F2;1D7F2;0036;0036;
+1D7F3;1D7F3;1D7F3;0037;0037;
+1D7F4;1D7F4;1D7F4;0038;0038;
+1D7F5;1D7F5;1D7F5;0039;0039;
+1D7F6;1D7F6;1D7F6;0030;0030;
+1D7F7;1D7F7;1D7F7;0031;0031;
+1D7F8;1D7F8;1D7F8;0032;0032;
+1D7F9;1D7F9;1D7F9;0033;0033;
+1D7FA;1D7FA;1D7FA;0034;0034;
+1D7FB;1D7FB;1D7FB;0035;0035;
+1D7FC;1D7FC;1D7FC;0036;0036;
+1D7FD;1D7FD;1D7FD;0037;0037;
+1D7FE;1D7FE;1D7FE;0038;0038;
+1D7FF;1D7FF;1D7FF;0039;0039;
+2F800;4E3D;4E3D;4E3D;4E3D;
+2F801;4E38;4E38;4E38;4E38;
+2F802;4E41;4E41;4E41;4E41;
+2F803;20122;20122;20122;20122;
+2F804;4F60;4F60;4F60;4F60;
+2F805;4FAE;4FAE;4FAE;4FAE;
+2F806;4FBB;4FBB;4FBB;4FBB;
+2F807;5002;5002;5002;5002;
+2F808;507A;507A;507A;507A;
+2F809;5099;5099;5099;5099;
+2F80A;50E7;50E7;50E7;50E7;
+2F80B;50CF;50CF;50CF;50CF;
+2F80C;349E;349E;349E;349E;
+2F80D;2063A;2063A;2063A;2063A;
+2F80E;514D;514D;514D;514D;
+2F80F;5154;5154;5154;5154;
+2F810;5164;5164;5164;5164;
+2F811;5177;5177;5177;5177;
+2F812;2051C;2051C;2051C;2051C;
+2F813;34B9;34B9;34B9;34B9;
+2F814;5167;5167;5167;5167;
+2F815;518D;518D;518D;518D;
+2F816;2054B;2054B;2054B;2054B;
+2F817;5197;5197;5197;5197;
+2F818;51A4;51A4;51A4;51A4;
+2F819;4ECC;4ECC;4ECC;4ECC;
+2F81A;51AC;51AC;51AC;51AC;
+2F81B;51B5;51B5;51B5;51B5;
+2F81C;291DF;291DF;291DF;291DF;
+2F81D;51F5;51F5;51F5;51F5;
+2F81E;5203;5203;5203;5203;
+2F81F;34DF;34DF;34DF;34DF;
+2F820;523B;523B;523B;523B;
+2F821;5246;5246;5246;5246;
+2F822;5272;5272;5272;5272;
+2F823;5277;5277;5277;5277;
+2F824;3515;3515;3515;3515;
+2F825;52C7;52C7;52C7;52C7;
+2F826;52C9;52C9;52C9;52C9;
+2F827;52E4;52E4;52E4;52E4;
+2F828;52FA;52FA;52FA;52FA;
+2F829;5305;5305;5305;5305;
+2F82A;5306;5306;5306;5306;
+2F82B;5317;5317;5317;5317;
+2F82C;5349;5349;5349;5349;
+2F82D;5351;5351;5351;5351;
+2F82E;535A;535A;535A;535A;
+2F82F;5373;5373;5373;5373;
+2F830;537D;537D;537D;537D;
+2F831;537F;537F;537F;537F;
+2F832;537F;537F;537F;537F;
+2F833;537F;537F;537F;537F;
+2F834;20A2C;20A2C;20A2C;20A2C;
+2F835;7070;7070;7070;7070;
+2F836;53CA;53CA;53CA;53CA;
+2F837;53DF;53DF;53DF;53DF;
+2F838;20B63;20B63;20B63;20B63;
+2F839;53EB;53EB;53EB;53EB;
+2F83A;53F1;53F1;53F1;53F1;
+2F83B;5406;5406;5406;5406;
+2F83C;549E;549E;549E;549E;
+2F83D;5438;5438;5438;5438;
+2F83E;5448;5448;5448;5448;
+2F83F;5468;5468;5468;5468;
+2F840;54A2;54A2;54A2;54A2;
+2F841;54F6;54F6;54F6;54F6;
+2F842;5510;5510;5510;5510;
+2F843;5553;5553;5553;5553;
+2F844;5563;5563;5563;5563;
+2F845;5584;5584;5584;5584;
+2F846;5584;5584;5584;5584;
+2F847;5599;5599;5599;5599;
+2F848;55AB;55AB;55AB;55AB;
+2F849;55B3;55B3;55B3;55B3;
+2F84A;55C2;55C2;55C2;55C2;
+2F84B;5716;5716;5716;5716;
+2F84C;5606;5606;5606;5606;
+2F84D;5717;5717;5717;5717;
+2F84E;5651;5651;5651;5651;
+2F84F;5674;5674;5674;5674;
+2F850;5207;5207;5207;5207;
+2F851;58EE;58EE;58EE;58EE;
+2F852;57CE;57CE;57CE;57CE;
+2F853;57F4;57F4;57F4;57F4;
+2F854;580D;580D;580D;580D;
+2F855;578B;578B;578B;578B;
+2F856;5832;5832;5832;5832;
+2F857;5831;5831;5831;5831;
+2F858;58AC;58AC;58AC;58AC;
+2F859;214E4;214E4;214E4;214E4;
+2F85A;58F2;58F2;58F2;58F2;
+2F85B;58F7;58F7;58F7;58F7;
+2F85C;5906;5906;5906;5906;
+2F85D;591A;591A;591A;591A;
+2F85E;5922;5922;5922;5922;
+2F85F;5962;5962;5962;5962;
+2F860;216A8;216A8;216A8;216A8;
+2F861;216EA;216EA;216EA;216EA;
+2F862;59EC;59EC;59EC;59EC;
+2F863;5A1B;5A1B;5A1B;5A1B;
+2F864;5A27;5A27;5A27;5A27;
+2F865;59D8;59D8;59D8;59D8;
+2F866;5A66;5A66;5A66;5A66;
+2F867;36EE;36EE;36EE;36EE;
+2F868;36FC;36FC;36FC;36FC;
+2F869;5B08;5B08;5B08;5B08;
+2F86A;5B3E;5B3E;5B3E;5B3E;
+2F86B;5B3E;5B3E;5B3E;5B3E;
+2F86C;219C8;219C8;219C8;219C8;
+2F86D;5BC3;5BC3;5BC3;5BC3;
+2F86E;5BD8;5BD8;5BD8;5BD8;
+2F86F;5BE7;5BE7;5BE7;5BE7;
+2F870;5BF3;5BF3;5BF3;5BF3;
+2F871;21B18;21B18;21B18;21B18;
+2F872;5BFF;5BFF;5BFF;5BFF;
+2F873;5C06;5C06;5C06;5C06;
+2F874;5F53;5F53;5F53;5F53;
+2F875;5C22;5C22;5C22;5C22;
+2F876;3781;3781;3781;3781;
+2F877;5C60;5C60;5C60;5C60;
+2F878;5C6E;5C6E;5C6E;5C6E;
+2F879;5CC0;5CC0;5CC0;5CC0;
+2F87A;5C8D;5C8D;5C8D;5C8D;
+2F87B;21DE4;21DE4;21DE4;21DE4;
+2F87C;5D43;5D43;5D43;5D43;
+2F87D;21DE6;21DE6;21DE6;21DE6;
+2F87E;5D6E;5D6E;5D6E;5D6E;
+2F87F;5D6B;5D6B;5D6B;5D6B;
+2F880;5D7C;5D7C;5D7C;5D7C;
+2F881;5DE1;5DE1;5DE1;5DE1;
+2F882;5DE2;5DE2;5DE2;5DE2;
+2F883;382F;382F;382F;382F;
+2F884;5DFD;5DFD;5DFD;5DFD;
+2F885;5E28;5E28;5E28;5E28;
+2F886;5E3D;5E3D;5E3D;5E3D;
+2F887;5E69;5E69;5E69;5E69;
+2F888;3862;3862;3862;3862;
+2F889;22183;22183;22183;22183;
+2F88A;387C;387C;387C;387C;
+2F88B;5EB0;5EB0;5EB0;5EB0;
+2F88C;5EB3;5EB3;5EB3;5EB3;
+2F88D;5EB6;5EB6;5EB6;5EB6;
+2F88E;5ECA;5ECA;5ECA;5ECA;
+2F88F;2A392;2A392;2A392;2A392;
+2F890;5EFE;5EFE;5EFE;5EFE;
+2F891;22331;22331;22331;22331;
+2F892;22331;22331;22331;22331;
+2F893;8201;8201;8201;8201;
+2F894;5F22;5F22;5F22;5F22;
+2F895;5F22;5F22;5F22;5F22;
+2F896;38C7;38C7;38C7;38C7;
+2F897;232B8;232B8;232B8;232B8;
+2F898;261DA;261DA;261DA;261DA;
+2F899;5F62;5F62;5F62;5F62;
+2F89A;5F6B;5F6B;5F6B;5F6B;
+2F89B;38E3;38E3;38E3;38E3;
+2F89C;5F9A;5F9A;5F9A;5F9A;
+2F89D;5FCD;5FCD;5FCD;5FCD;
+2F89E;5FD7;5FD7;5FD7;5FD7;
+2F89F;5FF9;5FF9;5FF9;5FF9;
+2F8A0;6081;6081;6081;6081;
+2F8A1;393A;393A;393A;393A;
+2F8A2;391C;391C;391C;391C;
+2F8A3;6094;6094;6094;6094;
+2F8A4;226D4;226D4;226D4;226D4;
+2F8A5;60C7;60C7;60C7;60C7;
+2F8A6;6148;6148;6148;6148;
+2F8A7;614C;614C;614C;614C;
+2F8A8;614E;614E;614E;614E;
+2F8A9;614C;614C;614C;614C;
+2F8AA;617A;617A;617A;617A;
+2F8AB;618E;618E;618E;618E;
+2F8AC;61B2;61B2;61B2;61B2;
+2F8AD;61A4;61A4;61A4;61A4;
+2F8AE;61AF;61AF;61AF;61AF;
+2F8AF;61DE;61DE;61DE;61DE;
+2F8B0;61F2;61F2;61F2;61F2;
+2F8B1;61F6;61F6;61F6;61F6;
+2F8B2;6210;6210;6210;6210;
+2F8B3;621B;621B;621B;621B;
+2F8B4;625D;625D;625D;625D;
+2F8B5;62B1;62B1;62B1;62B1;
+2F8B6;62D4;62D4;62D4;62D4;
+2F8B7;6350;6350;6350;6350;
+2F8B8;22B0C;22B0C;22B0C;22B0C;
+2F8B9;633D;633D;633D;633D;
+2F8BA;62FC;62FC;62FC;62FC;
+2F8BB;6368;6368;6368;6368;
+2F8BC;6383;6383;6383;6383;
+2F8BD;63E4;63E4;63E4;63E4;
+2F8BE;22BF1;22BF1;22BF1;22BF1;
+2F8BF;6422;6422;6422;6422;
+2F8C0;63C5;63C5;63C5;63C5;
+2F8C1;63A9;63A9;63A9;63A9;
+2F8C2;3A2E;3A2E;3A2E;3A2E;
+2F8C3;6469;6469;6469;6469;
+2F8C4;647E;647E;647E;647E;
+2F8C5;649D;649D;649D;649D;
+2F8C6;6477;6477;6477;6477;
+2F8C7;3A6C;3A6C;3A6C;3A6C;
+2F8C8;654F;654F;654F;654F;
+2F8C9;656C;656C;656C;656C;
+2F8CA;2300A;2300A;2300A;2300A;
+2F8CB;65E3;65E3;65E3;65E3;
+2F8CC;66F8;66F8;66F8;66F8;
+2F8CD;6649;6649;6649;6649;
+2F8CE;3B19;3B19;3B19;3B19;
+2F8CF;6691;6691;6691;6691;
+2F8D0;3B08;3B08;3B08;3B08;
+2F8D1;3AE4;3AE4;3AE4;3AE4;
+2F8D2;5192;5192;5192;5192;
+2F8D3;5195;5195;5195;5195;
+2F8D4;6700;6700;6700;6700;
+2F8D5;669C;669C;669C;669C;
+2F8D6;80AD;80AD;80AD;80AD;
+2F8D7;43D9;43D9;43D9;43D9;
+2F8D8;6717;6717;6717;6717;
+2F8D9;671B;671B;671B;671B;
+2F8DA;6721;6721;6721;6721;
+2F8DB;675E;675E;675E;675E;
+2F8DC;6753;6753;6753;6753;
+2F8DD;233C3;233C3;233C3;233C3;
+2F8DE;3B49;3B49;3B49;3B49;
+2F8DF;67FA;67FA;67FA;67FA;
+2F8E0;6785;6785;6785;6785;
+2F8E1;6852;6852;6852;6852;
+2F8E2;6885;6885;6885;6885;
+2F8E3;2346D;2346D;2346D;2346D;
+2F8E4;688E;688E;688E;688E;
+2F8E5;681F;681F;681F;681F;
+2F8E6;6914;6914;6914;6914;
+2F8E7;3B9D;3B9D;3B9D;3B9D;
+2F8E8;6942;6942;6942;6942;
+2F8E9;69A3;69A3;69A3;69A3;
+2F8EA;69EA;69EA;69EA;69EA;
+2F8EB;6AA8;6AA8;6AA8;6AA8;
+2F8EC;236A3;236A3;236A3;236A3;
+2F8ED;6ADB;6ADB;6ADB;6ADB;
+2F8EE;3C18;3C18;3C18;3C18;
+2F8EF;6B21;6B21;6B21;6B21;
+2F8F0;238A7;238A7;238A7;238A7;
+2F8F1;6B54;6B54;6B54;6B54;
+2F8F2;3C4E;3C4E;3C4E;3C4E;
+2F8F3;6B72;6B72;6B72;6B72;
+2F8F4;6B9F;6B9F;6B9F;6B9F;
+2F8F5;6BBA;6BBA;6BBA;6BBA;
+2F8F6;6BBB;6BBB;6BBB;6BBB;
+2F8F7;23A8D;23A8D;23A8D;23A8D;
+2F8F8;21D0B;21D0B;21D0B;21D0B;
+2F8F9;23AFA;23AFA;23AFA;23AFA;
+2F8FA;6C4E;6C4E;6C4E;6C4E;
+2F8FB;23CBC;23CBC;23CBC;23CBC;
+2F8FC;6CBF;6CBF;6CBF;6CBF;
+2F8FD;6CCD;6CCD;6CCD;6CCD;
+2F8FE;6C67;6C67;6C67;6C67;
+2F8FF;6D16;6D16;6D16;6D16;
+2F900;6D3E;6D3E;6D3E;6D3E;
+2F901;6D77;6D77;6D77;6D77;
+2F902;6D41;6D41;6D41;6D41;
+2F903;6D69;6D69;6D69;6D69;
+2F904;6D78;6D78;6D78;6D78;
+2F905;6D85;6D85;6D85;6D85;
+2F906;23D1E;23D1E;23D1E;23D1E;
+2F907;6D34;6D34;6D34;6D34;
+2F908;6E2F;6E2F;6E2F;6E2F;
+2F909;6E6E;6E6E;6E6E;6E6E;
+2F90A;3D33;3D33;3D33;3D33;
+2F90B;6ECB;6ECB;6ECB;6ECB;
+2F90C;6EC7;6EC7;6EC7;6EC7;
+2F90D;23ED1;23ED1;23ED1;23ED1;
+2F90E;6DF9;6DF9;6DF9;6DF9;
+2F90F;6F6E;6F6E;6F6E;6F6E;
+2F910;23F5E;23F5E;23F5E;23F5E;
+2F911;23F8E;23F8E;23F8E;23F8E;
+2F912;6FC6;6FC6;6FC6;6FC6;
+2F913;7039;7039;7039;7039;
+2F914;701E;701E;701E;701E;
+2F915;701B;701B;701B;701B;
+2F916;3D96;3D96;3D96;3D96;
+2F917;704A;704A;704A;704A;
+2F918;707D;707D;707D;707D;
+2F919;7077;7077;7077;7077;
+2F91A;70AD;70AD;70AD;70AD;
+2F91B;20525;20525;20525;20525;
+2F91C;7145;7145;7145;7145;
+2F91D;24263;24263;24263;24263;
+2F91E;719C;719C;719C;719C;
+2F91F;243AB;243AB;243AB;243AB;
+2F920;7228;7228;7228;7228;
+2F921;7235;7235;7235;7235;
+2F922;7250;7250;7250;7250;
+2F923;24608;24608;24608;24608;
+2F924;7280;7280;7280;7280;
+2F925;7295;7295;7295;7295;
+2F926;24735;24735;24735;24735;
+2F927;24814;24814;24814;24814;
+2F928;737A;737A;737A;737A;
+2F929;738B;738B;738B;738B;
+2F92A;3EAC;3EAC;3EAC;3EAC;
+2F92B;73A5;73A5;73A5;73A5;
+2F92C;3EB8;3EB8;3EB8;3EB8;
+2F92D;3EB8;3EB8;3EB8;3EB8;
+2F92E;7447;7447;7447;7447;
+2F92F;745C;745C;745C;745C;
+2F930;7471;7471;7471;7471;
+2F931;7485;7485;7485;7485;
+2F932;74CA;74CA;74CA;74CA;
+2F933;3F1B;3F1B;3F1B;3F1B;
+2F934;7524;7524;7524;7524;
+2F935;24C36;24C36;24C36;24C36;
+2F936;753E;753E;753E;753E;
+2F937;24C92;24C92;24C92;24C92;
+2F938;7570;7570;7570;7570;
+2F939;2219F;2219F;2219F;2219F;
+2F93A;7610;7610;7610;7610;
+2F93B;24FA1;24FA1;24FA1;24FA1;
+2F93C;24FB8;24FB8;24FB8;24FB8;
+2F93D;25044;25044;25044;25044;
+2F93E;3FFC;3FFC;3FFC;3FFC;
+2F93F;4008;4008;4008;4008;
+2F940;76F4;76F4;76F4;76F4;
+2F941;250F3;250F3;250F3;250F3;
+2F942;250F2;250F2;250F2;250F2;
+2F943;25119;25119;25119;25119;
+2F944;25133;25133;25133;25133;
+2F945;771E;771E;771E;771E;
+2F946;771F;771F;771F;771F;
+2F947;771F;771F;771F;771F;
+2F948;774A;774A;774A;774A;
+2F949;4039;4039;4039;4039;
+2F94A;778B;778B;778B;778B;
+2F94B;4046;4046;4046;4046;
+2F94C;4096;4096;4096;4096;
+2F94D;2541D;2541D;2541D;2541D;
+2F94E;784E;784E;784E;784E;
+2F94F;788C;788C;788C;788C;
+2F950;78CC;78CC;78CC;78CC;
+2F951;40E3;40E3;40E3;40E3;
+2F952;25626;25626;25626;25626;
+2F953;7956;7956;7956;7956;
+2F954;2569A;2569A;2569A;2569A;
+2F955;256C5;256C5;256C5;256C5;
+2F956;798F;798F;798F;798F;
+2F957;79EB;79EB;79EB;79EB;
+2F958;412F;412F;412F;412F;
+2F959;7A40;7A40;7A40;7A40;
+2F95A;7A4A;7A4A;7A4A;7A4A;
+2F95B;7A4F;7A4F;7A4F;7A4F;
+2F95C;2597C;2597C;2597C;2597C;
+2F95D;25AA7;25AA7;25AA7;25AA7;
+2F95E;25AA7;25AA7;25AA7;25AA7;
+2F95F;7AEE;7AEE;7AEE;7AEE;
+2F960;4202;4202;4202;4202;
+2F961;25BAB;25BAB;25BAB;25BAB;
+2F962;7BC6;7BC6;7BC6;7BC6;
+2F963;7BC9;7BC9;7BC9;7BC9;
+2F964;4227;4227;4227;4227;
+2F965;25C80;25C80;25C80;25C80;
+2F966;7CD2;7CD2;7CD2;7CD2;
+2F967;42A0;42A0;42A0;42A0;
+2F968;7CE8;7CE8;7CE8;7CE8;
+2F969;7CE3;7CE3;7CE3;7CE3;
+2F96A;7D00;7D00;7D00;7D00;
+2F96B;25F86;25F86;25F86;25F86;
+2F96C;7D63;7D63;7D63;7D63;
+2F96D;4301;4301;4301;4301;
+2F96E;7DC7;7DC7;7DC7;7DC7;
+2F96F;7E02;7E02;7E02;7E02;
+2F970;7E45;7E45;7E45;7E45;
+2F971;4334;4334;4334;4334;
+2F972;26228;26228;26228;26228;
+2F973;26247;26247;26247;26247;
+2F974;4359;4359;4359;4359;
+2F975;262D9;262D9;262D9;262D9;
+2F976;7F7A;7F7A;7F7A;7F7A;
+2F977;2633E;2633E;2633E;2633E;
+2F978;7F95;7F95;7F95;7F95;
+2F979;7FFA;7FFA;7FFA;7FFA;
+2F97A;8005;8005;8005;8005;
+2F97B;264DA;264DA;264DA;264DA;
+2F97C;26523;26523;26523;26523;
+2F97D;8060;8060;8060;8060;
+2F97E;265A8;265A8;265A8;265A8;
+2F97F;8070;8070;8070;8070;
+2F980;2335F;2335F;2335F;2335F;
+2F981;43D5;43D5;43D5;43D5;
+2F982;80B2;80B2;80B2;80B2;
+2F983;8103;8103;8103;8103;
+2F984;440B;440B;440B;440B;
+2F985;813E;813E;813E;813E;
+2F986;5AB5;5AB5;5AB5;5AB5;
+2F987;267A7;267A7;267A7;267A7;
+2F988;267B5;267B5;267B5;267B5;
+2F989;23393;23393;23393;23393;
+2F98A;2339C;2339C;2339C;2339C;
+2F98B;8201;8201;8201;8201;
+2F98C;8204;8204;8204;8204;
+2F98D;8F9E;8F9E;8F9E;8F9E;
+2F98E;446B;446B;446B;446B;
+2F98F;8291;8291;8291;8291;
+2F990;828B;828B;828B;828B;
+2F991;829D;829D;829D;829D;
+2F992;52B3;52B3;52B3;52B3;
+2F993;82B1;82B1;82B1;82B1;
+2F994;82B3;82B3;82B3;82B3;
+2F995;82BD;82BD;82BD;82BD;
+2F996;82E6;82E6;82E6;82E6;
+2F997;26B3C;26B3C;26B3C;26B3C;
+2F998;82E5;82E5;82E5;82E5;
+2F999;831D;831D;831D;831D;
+2F99A;8363;8363;8363;8363;
+2F99B;83AD;83AD;83AD;83AD;
+2F99C;8323;8323;8323;8323;
+2F99D;83BD;83BD;83BD;83BD;
+2F99E;83E7;83E7;83E7;83E7;
+2F99F;8457;8457;8457;8457;
+2F9A0;8353;8353;8353;8353;
+2F9A1;83CA;83CA;83CA;83CA;
+2F9A2;83CC;83CC;83CC;83CC;
+2F9A3;83DC;83DC;83DC;83DC;
+2F9A4;26C36;26C36;26C36;26C36;
+2F9A5;26D6B;26D6B;26D6B;26D6B;
+2F9A6;26CD5;26CD5;26CD5;26CD5;
+2F9A7;452B;452B;452B;452B;
+2F9A8;84F1;84F1;84F1;84F1;
+2F9A9;84F3;84F3;84F3;84F3;
+2F9AA;8516;8516;8516;8516;
+2F9AB;273CA;273CA;273CA;273CA;
+2F9AC;8564;8564;8564;8564;
+2F9AD;26F2C;26F2C;26F2C;26F2C;
+2F9AE;455D;455D;455D;455D;
+2F9AF;4561;4561;4561;4561;
+2F9B0;26FB1;26FB1;26FB1;26FB1;
+2F9B1;270D2;270D2;270D2;270D2;
+2F9B2;456B;456B;456B;456B;
+2F9B3;8650;8650;8650;8650;
+2F9B4;865C;865C;865C;865C;
+2F9B5;8667;8667;8667;8667;
+2F9B6;8669;8669;8669;8669;
+2F9B7;86A9;86A9;86A9;86A9;
+2F9B8;8688;8688;8688;8688;
+2F9B9;870E;870E;870E;870E;
+2F9BA;86E2;86E2;86E2;86E2;
+2F9BB;8779;8779;8779;8779;
+2F9BC;8728;8728;8728;8728;
+2F9BD;876B;876B;876B;876B;
+2F9BE;8786;8786;8786;8786;
+2F9BF;45D7;45D7;45D7;45D7;
+2F9C0;87E1;87E1;87E1;87E1;
+2F9C1;8801;8801;8801;8801;
+2F9C2;45F9;45F9;45F9;45F9;
+2F9C3;8860;8860;8860;8860;
+2F9C4;8863;8863;8863;8863;
+2F9C5;27667;27667;27667;27667;
+2F9C6;88D7;88D7;88D7;88D7;
+2F9C7;88DE;88DE;88DE;88DE;
+2F9C8;4635;4635;4635;4635;
+2F9C9;88FA;88FA;88FA;88FA;
+2F9CA;34BB;34BB;34BB;34BB;
+2F9CB;278AE;278AE;278AE;278AE;
+2F9CC;27966;27966;27966;27966;
+2F9CD;46BE;46BE;46BE;46BE;
+2F9CE;46C7;46C7;46C7;46C7;
+2F9CF;8AA0;8AA0;8AA0;8AA0;
+2F9D0;8AED;8AED;8AED;8AED;
+2F9D1;8B8A;8B8A;8B8A;8B8A;
+2F9D2;8C55;8C55;8C55;8C55;
+2F9D3;27CA8;27CA8;27CA8;27CA8;
+2F9D4;8CAB;8CAB;8CAB;8CAB;
+2F9D5;8CC1;8CC1;8CC1;8CC1;
+2F9D6;8D1B;8D1B;8D1B;8D1B;
+2F9D7;8D77;8D77;8D77;8D77;
+2F9D8;27F2F;27F2F;27F2F;27F2F;
+2F9D9;20804;20804;20804;20804;
+2F9DA;8DCB;8DCB;8DCB;8DCB;
+2F9DB;8DBC;8DBC;8DBC;8DBC;
+2F9DC;8DF0;8DF0;8DF0;8DF0;
+2F9DD;208DE;208DE;208DE;208DE;
+2F9DE;8ED4;8ED4;8ED4;8ED4;
+2F9DF;8F38;8F38;8F38;8F38;
+2F9E0;285D2;285D2;285D2;285D2;
+2F9E1;285ED;285ED;285ED;285ED;
+2F9E2;9094;9094;9094;9094;
+2F9E3;90F1;90F1;90F1;90F1;
+2F9E4;9111;9111;9111;9111;
+2F9E5;2872E;2872E;2872E;2872E;
+2F9E6;911B;911B;911B;911B;
+2F9E7;9238;9238;9238;9238;
+2F9E8;92D7;92D7;92D7;92D7;
+2F9E9;92D8;92D8;92D8;92D8;
+2F9EA;927C;927C;927C;927C;
+2F9EB;93F9;93F9;93F9;93F9;
+2F9EC;9415;9415;9415;9415;
+2F9ED;28BFA;28BFA;28BFA;28BFA;
+2F9EE;958B;958B;958B;958B;
+2F9EF;4995;4995;4995;4995;
+2F9F0;95B7;95B7;95B7;95B7;
+2F9F1;28D77;28D77;28D77;28D77;
+2F9F2;49E6;49E6;49E6;49E6;
+2F9F3;96C3;96C3;96C3;96C3;
+2F9F4;5DB2;5DB2;5DB2;5DB2;
+2F9F5;9723;9723;9723;9723;
+2F9F6;29145;29145;29145;29145;
+2F9F7;2921A;2921A;2921A;2921A;
+2F9F8;4A6E;4A6E;4A6E;4A6E;
+2F9F9;4A76;4A76;4A76;4A76;
+2F9FA;97E0;97E0;97E0;97E0;
+2F9FB;2940A;2940A;2940A;2940A;
+2F9FC;4AB2;4AB2;4AB2;4AB2;
+2F9FD;29496;29496;29496;29496;
+2F9FE;980B;980B;980B;980B;
+2F9FF;980B;980B;980B;980B;
+2FA00;9829;9829;9829;9829;
+2FA01;295B6;295B6;295B6;295B6;
+2FA02;98E2;98E2;98E2;98E2;
+2FA03;4B33;4B33;4B33;4B33;
+2FA04;9929;9929;9929;9929;
+2FA05;99A7;99A7;99A7;99A7;
+2FA06;99C2;99C2;99C2;99C2;
+2FA07;99FE;99FE;99FE;99FE;
+2FA08;4BCE;4BCE;4BCE;4BCE;
+2FA09;29B30;29B30;29B30;29B30;
+2FA0A;9B12;9B12;9B12;9B12;
+2FA0B;9C40;9C40;9C40;9C40;
+2FA0C;9CFD;9CFD;9CFD;9CFD;
+2FA0D;4CCE;4CCE;4CCE;4CCE;
+2FA0E;4CED;4CED;4CED;4CED;
+2FA0F;9D67;9D67;9D67;9D67;
+2FA10;2A0CE;2A0CE;2A0CE;2A0CE;
+2FA11;4CF8;4CF8;4CF8;4CF8;
+2FA12;2A105;2A105;2A105;2A105;
+2FA13;2A20E;2A20E;2A20E;2A20E;
+2FA14;2A291;2A291;2A291;2A291;
+2FA15;9EBB;9EBB;9EBB;9EBB;
+2FA16;4D56;4D56;4D56;4D56;
+2FA17;9EF9;9EF9;9EF9;9EF9;
+2FA18;9EFE;9EFE;9EFE;9EFE;
+2FA19;9F05;9F05;9F05;9F05;
+2FA1A;9F0F;9F0F;9F0F;9F0F;
+2FA1B;9F16;9F16;9F16;9F16;
+2FA1C;9F3B;9F3B;9F3B;9F3B;
+2FA1D;2A600;2A600;2A600;2A600;
+
+@Part2
+
+0061 0315 0300 05AE 0300 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0300 0315 0300 05AE 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0315 0300 05AE 0301 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;
+0061 0301 0315 0300 05AE 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;
+0061 0315 0300 05AE 0302 0062;00E0 05AE 0302 0315 0062;0061 05AE 0300 0302 0315 0062;00E0 05AE 0302 0315 0062;0061 05AE 0300 0302 0315 0062;
+0061 0302 0315 0300 05AE 0062;1EA7 05AE 0315 0062;0061 05AE 0302 0300 0315 0062;1EA7 05AE 0315 0062;0061 05AE 0302 0300 0315 0062;
+0061 0315 0300 05AE 0303 0062;00E0 05AE 0303 0315 0062;0061 05AE 0300 0303 0315 0062;00E0 05AE 0303 0315 0062;0061 05AE 0300 0303 0315 0062;
+0061 0303 0315 0300 05AE 0062;00E3 05AE 0300 0315 0062;0061 05AE 0303 0300 0315 0062;00E3 05AE 0300 0315 0062;0061 05AE 0303 0300 0315 0062;
+0061 0315 0300 05AE 0304 0062;00E0 05AE 0304 0315 0062;0061 05AE 0300 0304 0315 0062;00E0 05AE 0304 0315 0062;0061 05AE 0300 0304 0315 0062;
+0061 0304 0315 0300 05AE 0062;0101 05AE 0300 0315 0062;0061 05AE 0304 0300 0315 0062;0101 05AE 0300 0315 0062;0061 05AE 0304 0300 0315 0062;
+0061 0315 0300 05AE 0305 0062;00E0 05AE 0305 0315 0062;0061 05AE 0300 0305 0315 0062;00E0 05AE 0305 0315 0062;0061 05AE 0300 0305 0315 0062;
+0061 0305 0315 0300 05AE 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;
+0061 0315 0300 05AE 0306 0062;00E0 05AE 0306 0315 0062;0061 05AE 0300 0306 0315 0062;00E0 05AE 0306 0315 0062;0061 05AE 0300 0306 0315 0062;
+0061 0306 0315 0300 05AE 0062;1EB1 05AE 0315 0062;0061 05AE 0306 0300 0315 0062;1EB1 05AE 0315 0062;0061 05AE 0306 0300 0315 0062;
+0061 0315 0300 05AE 0307 0062;00E0 05AE 0307 0315 0062;0061 05AE 0300 0307 0315 0062;00E0 05AE 0307 0315 0062;0061 05AE 0300 0307 0315 0062;
+0061 0307 0315 0300 05AE 0062;0227 05AE 0300 0315 0062;0061 05AE 0307 0300 0315 0062;0227 05AE 0300 0315 0062;0061 05AE 0307 0300 0315 0062;
+0061 0315 0300 05AE 0308 0062;00E0 05AE 0308 0315 0062;0061 05AE 0300 0308 0315 0062;00E0 05AE 0308 0315 0062;0061 05AE 0300 0308 0315 0062;
+0061 0308 0315 0300 05AE 0062;00E4 05AE 0300 0315 0062;0061 05AE 0308 0300 0315 0062;00E4 05AE 0300 0315 0062;0061 05AE 0308 0300 0315 0062;
+0061 0315 0300 05AE 0309 0062;00E0 05AE 0309 0315 0062;0061 05AE 0300 0309 0315 0062;00E0 05AE 0309 0315 0062;0061 05AE 0300 0309 0315 0062;
+0061 0309 0315 0300 05AE 0062;1EA3 05AE 0300 0315 0062;0061 05AE 0309 0300 0315 0062;1EA3 05AE 0300 0315 0062;0061 05AE 0309 0300 0315 0062;
+0061 0315 0300 05AE 030A 0062;00E0 05AE 030A 0315 0062;0061 05AE 0300 030A 0315 0062;00E0 05AE 030A 0315 0062;0061 05AE 0300 030A 0315 0062;
+0061 030A 0315 0300 05AE 0062;00E5 05AE 0300 0315 0062;0061 05AE 030A 0300 0315 0062;00E5 05AE 0300 0315 0062;0061 05AE 030A 0300 0315 0062;
+0061 0315 0300 05AE 030B 0062;00E0 05AE 030B 0315 0062;0061 05AE 0300 030B 0315 0062;00E0 05AE 030B 0315 0062;0061 05AE 0300 030B 0315 0062;
+0061 030B 0315 0300 05AE 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;
+0061 0315 0300 05AE 030C 0062;00E0 05AE 030C 0315 0062;0061 05AE 0300 030C 0315 0062;00E0 05AE 030C 0315 0062;0061 05AE 0300 030C 0315 0062;
+0061 030C 0315 0300 05AE 0062;01CE 05AE 0300 0315 0062;0061 05AE 030C 0300 0315 0062;01CE 05AE 0300 0315 0062;0061 05AE 030C 0300 0315 0062;
+0061 0315 0300 05AE 030D 0062;00E0 05AE 030D 0315 0062;0061 05AE 0300 030D 0315 0062;00E0 05AE 030D 0315 0062;0061 05AE 0300 030D 0315 0062;
+0061 030D 0315 0300 05AE 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;
+0061 0315 0300 05AE 030E 0062;00E0 05AE 030E 0315 0062;0061 05AE 0300 030E 0315 0062;00E0 05AE 030E 0315 0062;0061 05AE 0300 030E 0315 0062;
+0061 030E 0315 0300 05AE 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;
+0061 0315 0300 05AE 030F 0062;00E0 05AE 030F 0315 0062;0061 05AE 0300 030F 0315 0062;00E0 05AE 030F 0315 0062;0061 05AE 0300 030F 0315 0062;
+0061 030F 0315 0300 05AE 0062;0201 05AE 0300 0315 0062;0061 05AE 030F 0300 0315 0062;0201 05AE 0300 0315 0062;0061 05AE 030F 0300 0315 0062;
+0061 0315 0300 05AE 0310 0062;00E0 05AE 0310 0315 0062;0061 05AE 0300 0310 0315 0062;00E0 05AE 0310 0315 0062;0061 05AE 0300 0310 0315 0062;
+0061 0310 0315 0300 05AE 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;
+0061 0315 0300 05AE 0311 0062;00E0 05AE 0311 0315 0062;0061 05AE 0300 0311 0315 0062;00E0 05AE 0311 0315 0062;0061 05AE 0300 0311 0315 0062;
+0061 0311 0315 0300 05AE 0062;0203 05AE 0300 0315 0062;0061 05AE 0311 0300 0315 0062;0203 05AE 0300 0315 0062;0061 05AE 0311 0300 0315 0062;
+0061 0315 0300 05AE 0312 0062;00E0 05AE 0312 0315 0062;0061 05AE 0300 0312 0315 0062;00E0 05AE 0312 0315 0062;0061 05AE 0300 0312 0315 0062;
+0061 0312 0315 0300 05AE 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;
+0061 0315 0300 05AE 0313 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;
+0061 0313 0315 0300 05AE 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;
+0061 0315 0300 05AE 0314 0062;00E0 05AE 0314 0315 0062;0061 05AE 0300 0314 0315 0062;00E0 05AE 0314 0315 0062;0061 05AE 0300 0314 0315 0062;
+0061 0314 0315 0300 05AE 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;
+0061 035C 0315 0300 0315 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062;
+0061 0315 035C 0315 0300 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062;
+0061 059A 0316 302A 0316 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;
+0061 0316 059A 0316 302A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;
+0061 059A 0316 302A 0317 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;
+0061 0317 059A 0316 302A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;
+0061 059A 0316 302A 0318 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;
+0061 0318 059A 0316 302A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;
+0061 059A 0316 302A 0319 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;
+0061 0319 059A 0316 302A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;
+0061 035C 0315 0300 031A 0062;00E0 0315 031A 035C 0062;0061 0300 0315 031A 035C 0062;00E0 0315 031A 035C 0062;0061 0300 0315 031A 035C 0062;
+0061 031A 035C 0315 0300 0062;00E0 031A 0315 035C 0062;0061 0300 031A 0315 035C 0062;00E0 031A 0315 035C 0062;0061 0300 031A 0315 035C 0062;
+0061 302A 031B 1DCE 031B 0062;0061 1DCE 031B 031B 302A 0062;0061 1DCE 031B 031B 302A 0062;0061 1DCE 031B 031B 302A 0062;0061 1DCE 031B 031B 302A 0062;
+0061 031B 302A 031B 1DCE 0062;0061 1DCE 031B 031B 302A 0062;0061 1DCE 031B 031B 302A 0062;0061 1DCE 031B 031B 302A 0062;0061 1DCE 031B 031B 302A 0062;
+0061 059A 0316 302A 031C 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;
+0061 031C 059A 0316 302A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;
+0061 059A 0316 302A 031D 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;
+0061 031D 059A 0316 302A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;
+0061 059A 0316 302A 031E 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;
+0061 031E 059A 0316 302A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;
+0061 059A 0316 302A 031F 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;
+0061 031F 059A 0316 302A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;
+0061 059A 0316 302A 0320 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;
+0061 0320 059A 0316 302A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;
+0061 1DCE 0321 0F74 0321 0062;0061 0F74 0321 0321 1DCE 0062;0061 0F74 0321 0321 1DCE 0062;0061 0F74 0321 0321 1DCE 0062;0061 0F74 0321 0321 1DCE 0062;
+0061 0321 1DCE 0321 0F74 0062;0061 0F74 0321 0321 1DCE 0062;0061 0F74 0321 0321 1DCE 0062;0061 0F74 0321 0321 1DCE 0062;0061 0F74 0321 0321 1DCE 0062;
+0061 1DCE 0321 0F74 0322 0062;0061 0F74 0321 0322 1DCE 0062;0061 0F74 0321 0322 1DCE 0062;0061 0F74 0321 0322 1DCE 0062;0061 0F74 0321 0322 1DCE 0062;
+0061 0322 1DCE 0321 0F74 0062;0061 0F74 0322 0321 1DCE 0062;0061 0F74 0322 0321 1DCE 0062;0061 0F74 0322 0321 1DCE 0062;0061 0F74 0322 0321 1DCE 0062;
+0061 059A 0316 302A 0323 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;
+0061 0323 059A 0316 302A 0062;1EA1 302A 0316 059A 0062;0061 302A 0323 0316 059A 0062;1EA1 302A 0316 059A 0062;0061 302A 0323 0316 059A 0062;
+0061 059A 0316 302A 0324 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;
+0061 0324 059A 0316 302A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;
+0061 059A 0316 302A 0325 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;
+0061 0325 059A 0316 302A 0062;1E01 302A 0316 059A 0062;0061 302A 0325 0316 059A 0062;1E01 302A 0316 059A 0062;0061 302A 0325 0316 059A 0062;
+0061 059A 0316 302A 0326 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;
+0061 0326 059A 0316 302A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;
+0061 1DCE 0321 0F74 0327 0062;0061 0F74 0321 0327 1DCE 0062;0061 0F74 0321 0327 1DCE 0062;0061 0F74 0321 0327 1DCE 0062;0061 0F74 0321 0327 1DCE 0062;
+0061 0327 1DCE 0321 0F74 0062;0061 0F74 0327 0321 1DCE 0062;0061 0F74 0327 0321 1DCE 0062;0061 0F74 0327 0321 1DCE 0062;0061 0F74 0327 0321 1DCE 0062;
+0061 1DCE 0321 0F74 0328 0062;0061 0F74 0321 0328 1DCE 0062;0061 0F74 0321 0328 1DCE 0062;0061 0F74 0321 0328 1DCE 0062;0061 0F74 0321 0328 1DCE 0062;
+0061 0328 1DCE 0321 0F74 0062;0105 0F74 0321 1DCE 0062;0061 0F74 0328 0321 1DCE 0062;0105 0F74 0321 1DCE 0062;0061 0F74 0328 0321 1DCE 0062;
+0061 059A 0316 302A 0329 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;
+0061 0329 059A 0316 302A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;
+0061 059A 0316 302A 032A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;
+0061 032A 059A 0316 302A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;
+0061 059A 0316 302A 032B 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;
+0061 032B 059A 0316 302A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;
+0061 059A 0316 302A 032C 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;
+0061 032C 059A 0316 302A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;
+0061 059A 0316 302A 032D 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;
+0061 032D 059A 0316 302A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;
+0061 059A 0316 302A 032E 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;
+0061 032E 059A 0316 302A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;
+0061 059A 0316 302A 032F 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;
+0061 032F 059A 0316 302A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;
+0061 059A 0316 302A 0330 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;
+0061 0330 059A 0316 302A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;
+0061 059A 0316 302A 0331 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;
+0061 0331 059A 0316 302A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;
+0061 059A 0316 302A 0332 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;
+0061 0332 059A 0316 302A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;
+0061 059A 0316 302A 0333 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;
+0061 0333 059A 0316 302A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;
+0061 093C 0334 0334 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;
+0061 0334 093C 0334 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;
+0061 093C 0334 0335 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;
+0061 0335 093C 0334 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;
+0061 093C 0334 0336 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;
+0061 0336 093C 0334 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;
+0061 093C 0334 0337 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;
+0061 0337 093C 0334 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;
+0061 093C 0334 0338 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;
+0061 0338 093C 0334 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;
+0061 059A 0316 302A 0339 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;
+0061 0339 059A 0316 302A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;
+0061 059A 0316 302A 033A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;
+0061 033A 059A 0316 302A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;
+0061 059A 0316 302A 033B 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;
+0061 033B 059A 0316 302A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;
+0061 059A 0316 302A 033C 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;
+0061 033C 059A 0316 302A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;
+0061 0315 0300 05AE 033D 0062;00E0 05AE 033D 0315 0062;0061 05AE 0300 033D 0315 0062;00E0 05AE 033D 0315 0062;0061 05AE 0300 033D 0315 0062;
+0061 033D 0315 0300 05AE 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;
+0061 0315 0300 05AE 033E 0062;00E0 05AE 033E 0315 0062;0061 05AE 0300 033E 0315 0062;00E0 05AE 033E 0315 0062;0061 05AE 0300 033E 0315 0062;
+0061 033E 0315 0300 05AE 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;
+0061 0315 0300 05AE 033F 0062;00E0 05AE 033F 0315 0062;0061 05AE 0300 033F 0315 0062;00E0 05AE 033F 0315 0062;0061 05AE 0300 033F 0315 0062;
+0061 033F 0315 0300 05AE 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;
+0061 0315 0300 05AE 0340 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0340 0315 0300 05AE 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0315 0300 05AE 0341 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;
+0061 0341 0315 0300 05AE 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;
+0061 0315 0300 05AE 0342 0062;00E0 05AE 0342 0315 0062;0061 05AE 0300 0342 0315 0062;00E0 05AE 0342 0315 0062;0061 05AE 0300 0342 0315 0062;
+0061 0342 0315 0300 05AE 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;
+0061 0315 0300 05AE 0343 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;
+0061 0343 0315 0300 05AE 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;
+0061 0315 0300 05AE 0344 0062;00E0 05AE 0308 0301 0315 0062;0061 05AE 0300 0308 0301 0315 0062;00E0 05AE 0308 0301 0315 0062;0061 05AE 0300 0308 0301 0315 0062;
+0061 0344 0315 0300 05AE 0062;00E4 05AE 0301 0300 0315 0062;0061 05AE 0308 0301 0300 0315 0062;00E4 05AE 0301 0300 0315 0062;0061 05AE 0308 0301 0300 0315 0062;
+0061 0345 035D 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;
+0061 0345 0345 035D 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;
+0061 0315 0300 05AE 0346 0062;00E0 05AE 0346 0315 0062;0061 05AE 0300 0346 0315 0062;00E0 05AE 0346 0315 0062;0061 05AE 0300 0346 0315 0062;
+0061 0346 0315 0300 05AE 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;
+0061 059A 0316 302A 0347 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;
+0061 0347 059A 0316 302A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;
+0061 059A 0316 302A 0348 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;
+0061 0348 059A 0316 302A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;
+0061 059A 0316 302A 0349 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;
+0061 0349 059A 0316 302A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;
+0061 0315 0300 05AE 034A 0062;00E0 05AE 034A 0315 0062;0061 05AE 0300 034A 0315 0062;00E0 05AE 034A 0315 0062;0061 05AE 0300 034A 0315 0062;
+0061 034A 0315 0300 05AE 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;
+0061 0315 0300 05AE 034B 0062;00E0 05AE 034B 0315 0062;0061 05AE 0300 034B 0315 0062;00E0 05AE 034B 0315 0062;0061 05AE 0300 034B 0315 0062;
+0061 034B 0315 0300 05AE 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;
+0061 0315 0300 05AE 034C 0062;00E0 05AE 034C 0315 0062;0061 05AE 0300 034C 0315 0062;00E0 05AE 034C 0315 0062;0061 05AE 0300 034C 0315 0062;
+0061 034C 0315 0300 05AE 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;
+0061 059A 0316 302A 034D 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;
+0061 034D 059A 0316 302A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;
+0061 059A 0316 302A 034E 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;
+0061 034E 059A 0316 302A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;
+0061 0315 0300 05AE 0350 0062;00E0 05AE 0350 0315 0062;0061 05AE 0300 0350 0315 0062;00E0 05AE 0350 0315 0062;0061 05AE 0300 0350 0315 0062;
+0061 0350 0315 0300 05AE 0062;0061 05AE 0350 0300 0315 0062;0061 05AE 0350 0300 0315 0062;0061 05AE 0350 0300 0315 0062;0061 05AE 0350 0300 0315 0062;
+0061 0315 0300 05AE 0351 0062;00E0 05AE 0351 0315 0062;0061 05AE 0300 0351 0315 0062;00E0 05AE 0351 0315 0062;0061 05AE 0300 0351 0315 0062;
+0061 0351 0315 0300 05AE 0062;0061 05AE 0351 0300 0315 0062;0061 05AE 0351 0300 0315 0062;0061 05AE 0351 0300 0315 0062;0061 05AE 0351 0300 0315 0062;
+0061 0315 0300 05AE 0352 0062;00E0 05AE 0352 0315 0062;0061 05AE 0300 0352 0315 0062;00E0 05AE 0352 0315 0062;0061 05AE 0300 0352 0315 0062;
+0061 0352 0315 0300 05AE 0062;0061 05AE 0352 0300 0315 0062;0061 05AE 0352 0300 0315 0062;0061 05AE 0352 0300 0315 0062;0061 05AE 0352 0300 0315 0062;
+0061 059A 0316 302A 0353 0062;0061 302A 0316 0353 059A 0062;0061 302A 0316 0353 059A 0062;0061 302A 0316 0353 059A 0062;0061 302A 0316 0353 059A 0062;
+0061 0353 059A 0316 302A 0062;0061 302A 0353 0316 059A 0062;0061 302A 0353 0316 059A 0062;0061 302A 0353 0316 059A 0062;0061 302A 0353 0316 059A 0062;
+0061 059A 0316 302A 0354 0062;0061 302A 0316 0354 059A 0062;0061 302A 0316 0354 059A 0062;0061 302A 0316 0354 059A 0062;0061 302A 0316 0354 059A 0062;
+0061 0354 059A 0316 302A 0062;0061 302A 0354 0316 059A 0062;0061 302A 0354 0316 059A 0062;0061 302A 0354 0316 059A 0062;0061 302A 0354 0316 059A 0062;
+0061 059A 0316 302A 0355 0062;0061 302A 0316 0355 059A 0062;0061 302A 0316 0355 059A 0062;0061 302A 0316 0355 059A 0062;0061 302A 0316 0355 059A 0062;
+0061 0355 059A 0316 302A 0062;0061 302A 0355 0316 059A 0062;0061 302A 0355 0316 059A 0062;0061 302A 0355 0316 059A 0062;0061 302A 0355 0316 059A 0062;
+0061 059A 0316 302A 0356 0062;0061 302A 0316 0356 059A 0062;0061 302A 0316 0356 059A 0062;0061 302A 0316 0356 059A 0062;0061 302A 0316 0356 059A 0062;
+0061 0356 059A 0316 302A 0062;0061 302A 0356 0316 059A 0062;0061 302A 0356 0316 059A 0062;0061 302A 0356 0316 059A 0062;0061 302A 0356 0316 059A 0062;
+0061 0315 0300 05AE 0357 0062;00E0 05AE 0357 0315 0062;0061 05AE 0300 0357 0315 0062;00E0 05AE 0357 0315 0062;0061 05AE 0300 0357 0315 0062;
+0061 0357 0315 0300 05AE 0062;0061 05AE 0357 0300 0315 0062;0061 05AE 0357 0300 0315 0062;0061 05AE 0357 0300 0315 0062;0061 05AE 0357 0300 0315 0062;
+0061 035C 0315 0300 0358 0062;00E0 0315 0358 035C 0062;0061 0300 0315 0358 035C 0062;00E0 0315 0358 035C 0062;0061 0300 0315 0358 035C 0062;
+0061 0358 035C 0315 0300 0062;00E0 0358 0315 035C 0062;0061 0300 0358 0315 035C 0062;00E0 0358 0315 035C 0062;0061 0300 0358 0315 035C 0062;
+0061 059A 0316 302A 0359 0062;0061 302A 0316 0359 059A 0062;0061 302A 0316 0359 059A 0062;0061 302A 0316 0359 059A 0062;0061 302A 0316 0359 059A 0062;
+0061 0359 059A 0316 302A 0062;0061 302A 0359 0316 059A 0062;0061 302A 0359 0316 059A 0062;0061 302A 0359 0316 059A 0062;0061 302A 0359 0316 059A 0062;
+0061 059A 0316 302A 035A 0062;0061 302A 0316 035A 059A 0062;0061 302A 0316 035A 059A 0062;0061 302A 0316 035A 059A 0062;0061 302A 0316 035A 059A 0062;
+0061 035A 059A 0316 302A 0062;0061 302A 035A 0316 059A 0062;0061 302A 035A 0316 059A 0062;0061 302A 035A 0316 059A 0062;0061 302A 035A 0316 059A 0062;
+0061 0315 0300 05AE 035B 0062;00E0 05AE 035B 0315 0062;0061 05AE 0300 035B 0315 0062;00E0 05AE 035B 0315 0062;0061 05AE 0300 035B 0315 0062;
+0061 035B 0315 0300 05AE 0062;0061 05AE 035B 0300 0315 0062;0061 05AE 035B 0300 0315 0062;0061 05AE 035B 0300 0315 0062;0061 05AE 035B 0300 0315 0062;
+0061 035D 035C 0315 035C 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;
+0061 035C 035D 035C 0315 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;
+0061 0345 035D 035C 035D 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;
+0061 035D 0345 035D 035C 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;
+0061 0345 035D 035C 035E 0062;0061 035C 035D 035E 0345 0062;0061 035C 035D 035E 0345 0062;0061 035C 035D 035E 0345 0062;0061 035C 035D 035E 0345 0062;
+0061 035E 0345 035D 035C 0062;0061 035C 035E 035D 0345 0062;0061 035C 035E 035D 0345 0062;0061 035C 035E 035D 0345 0062;0061 035C 035E 035D 0345 0062;
+0061 035D 035C 0315 035F 0062;0061 0315 035C 035F 035D 0062;0061 0315 035C 035F 035D 0062;0061 0315 035C 035F 035D 0062;0061 0315 035C 035F 035D 0062;
+0061 035F 035D 035C 0315 0062;0061 0315 035F 035C 035D 0062;0061 0315 035F 035C 035D 0062;0061 0315 035F 035C 035D 0062;0061 0315 035F 035C 035D 0062;
+0061 0345 035D 035C 0360 0062;0061 035C 035D 0360 0345 0062;0061 035C 035D 0360 0345 0062;0061 035C 035D 0360 0345 0062;0061 035C 035D 0360 0345 0062;
+0061 0360 0345 035D 035C 0062;0061 035C 0360 035D 0345 0062;0061 035C 0360 035D 0345 0062;0061 035C 0360 035D 0345 0062;0061 035C 0360 035D 0345 0062;
+0061 0345 035D 035C 0361 0062;0061 035C 035D 0361 0345 0062;0061 035C 035D 0361 0345 0062;0061 035C 035D 0361 0345 0062;0061 035C 035D 0361 0345 0062;
+0061 0361 0345 035D 035C 0062;0061 035C 0361 035D 0345 0062;0061 035C 0361 035D 0345 0062;0061 035C 0361 035D 0345 0062;0061 035C 0361 035D 0345 0062;
+0061 035D 035C 0315 0362 0062;0061 0315 035C 0362 035D 0062;0061 0315 035C 0362 035D 0062;0061 0315 035C 0362 035D 0062;0061 0315 035C 0362 035D 0062;
+0061 0362 035D 035C 0315 0062;0061 0315 0362 035C 035D 0062;0061 0315 0362 035C 035D 0062;0061 0315 0362 035C 035D 0062;0061 0315 0362 035C 035D 0062;
+0061 0315 0300 05AE 0363 0062;00E0 05AE 0363 0315 0062;0061 05AE 0300 0363 0315 0062;00E0 05AE 0363 0315 0062;0061 05AE 0300 0363 0315 0062;
+0061 0363 0315 0300 05AE 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;
+0061 0315 0300 05AE 0364 0062;00E0 05AE 0364 0315 0062;0061 05AE 0300 0364 0315 0062;00E0 05AE 0364 0315 0062;0061 05AE 0300 0364 0315 0062;
+0061 0364 0315 0300 05AE 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;
+0061 0315 0300 05AE 0365 0062;00E0 05AE 0365 0315 0062;0061 05AE 0300 0365 0315 0062;00E0 05AE 0365 0315 0062;0061 05AE 0300 0365 0315 0062;
+0061 0365 0315 0300 05AE 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;
+0061 0315 0300 05AE 0366 0062;00E0 05AE 0366 0315 0062;0061 05AE 0300 0366 0315 0062;00E0 05AE 0366 0315 0062;0061 05AE 0300 0366 0315 0062;
+0061 0366 0315 0300 05AE 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;
+0061 0315 0300 05AE 0367 0062;00E0 05AE 0367 0315 0062;0061 05AE 0300 0367 0315 0062;00E0 05AE 0367 0315 0062;0061 05AE 0300 0367 0315 0062;
+0061 0367 0315 0300 05AE 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;
+0061 0315 0300 05AE 0368 0062;00E0 05AE 0368 0315 0062;0061 05AE 0300 0368 0315 0062;00E0 05AE 0368 0315 0062;0061 05AE 0300 0368 0315 0062;
+0061 0368 0315 0300 05AE 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;
+0061 0315 0300 05AE 0369 0062;00E0 05AE 0369 0315 0062;0061 05AE 0300 0369 0315 0062;00E0 05AE 0369 0315 0062;0061 05AE 0300 0369 0315 0062;
+0061 0369 0315 0300 05AE 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;
+0061 0315 0300 05AE 036A 0062;00E0 05AE 036A 0315 0062;0061 05AE 0300 036A 0315 0062;00E0 05AE 036A 0315 0062;0061 05AE 0300 036A 0315 0062;
+0061 036A 0315 0300 05AE 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;
+0061 0315 0300 05AE 036B 0062;00E0 05AE 036B 0315 0062;0061 05AE 0300 036B 0315 0062;00E0 05AE 036B 0315 0062;0061 05AE 0300 036B 0315 0062;
+0061 036B 0315 0300 05AE 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;
+0061 0315 0300 05AE 036C 0062;00E0 05AE 036C 0315 0062;0061 05AE 0300 036C 0315 0062;00E0 05AE 036C 0315 0062;0061 05AE 0300 036C 0315 0062;
+0061 036C 0315 0300 05AE 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;
+0061 0315 0300 05AE 036D 0062;00E0 05AE 036D 0315 0062;0061 05AE 0300 036D 0315 0062;00E0 05AE 036D 0315 0062;0061 05AE 0300 036D 0315 0062;
+0061 036D 0315 0300 05AE 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;
+0061 0315 0300 05AE 036E 0062;00E0 05AE 036E 0315 0062;0061 05AE 0300 036E 0315 0062;00E0 05AE 036E 0315 0062;0061 05AE 0300 036E 0315 0062;
+0061 036E 0315 0300 05AE 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;
+0061 0315 0300 05AE 036F 0062;00E0 05AE 036F 0315 0062;0061 05AE 0300 036F 0315 0062;00E0 05AE 036F 0315 0062;0061 05AE 0300 036F 0315 0062;
+0061 036F 0315 0300 05AE 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;
+0061 0315 0300 05AE 0483 0062;00E0 05AE 0483 0315 0062;0061 05AE 0300 0483 0315 0062;00E0 05AE 0483 0315 0062;0061 05AE 0300 0483 0315 0062;
+0061 0483 0315 0300 05AE 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;
+0061 0315 0300 05AE 0484 0062;00E0 05AE 0484 0315 0062;0061 05AE 0300 0484 0315 0062;00E0 05AE 0484 0315 0062;0061 05AE 0300 0484 0315 0062;
+0061 0484 0315 0300 05AE 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;
+0061 0315 0300 05AE 0485 0062;00E0 05AE 0485 0315 0062;0061 05AE 0300 0485 0315 0062;00E0 05AE 0485 0315 0062;0061 05AE 0300 0485 0315 0062;
+0061 0485 0315 0300 05AE 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;
+0061 0315 0300 05AE 0486 0062;00E0 05AE 0486 0315 0062;0061 05AE 0300 0486 0315 0062;00E0 05AE 0486 0315 0062;0061 05AE 0300 0486 0315 0062;
+0061 0486 0315 0300 05AE 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;
+0061 0315 0300 05AE 0487 0062;00E0 05AE 0487 0315 0062;0061 05AE 0300 0487 0315 0062;00E0 05AE 0487 0315 0062;0061 05AE 0300 0487 0315 0062;
+0061 0487 0315 0300 05AE 0062;0061 05AE 0487 0300 0315 0062;0061 05AE 0487 0300 0315 0062;0061 05AE 0487 0300 0315 0062;0061 05AE 0487 0300 0315 0062;
+0061 059A 0316 302A 0591 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;
+0061 0591 059A 0316 302A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;
+0061 0315 0300 05AE 0592 0062;00E0 05AE 0592 0315 0062;0061 05AE 0300 0592 0315 0062;00E0 05AE 0592 0315 0062;0061 05AE 0300 0592 0315 0062;
+0061 0592 0315 0300 05AE 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;
+0061 0315 0300 05AE 0593 0062;00E0 05AE 0593 0315 0062;0061 05AE 0300 0593 0315 0062;00E0 05AE 0593 0315 0062;0061 05AE 0300 0593 0315 0062;
+0061 0593 0315 0300 05AE 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;
+0061 0315 0300 05AE 0594 0062;00E0 05AE 0594 0315 0062;0061 05AE 0300 0594 0315 0062;00E0 05AE 0594 0315 0062;0061 05AE 0300 0594 0315 0062;
+0061 0594 0315 0300 05AE 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;
+0061 0315 0300 05AE 0595 0062;00E0 05AE 0595 0315 0062;0061 05AE 0300 0595 0315 0062;00E0 05AE 0595 0315 0062;0061 05AE 0300 0595 0315 0062;
+0061 0595 0315 0300 05AE 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;
+0061 059A 0316 302A 0596 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;
+0061 0596 059A 0316 302A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;
+0061 0315 0300 05AE 0597 0062;00E0 05AE 0597 0315 0062;0061 05AE 0300 0597 0315 0062;00E0 05AE 0597 0315 0062;0061 05AE 0300 0597 0315 0062;
+0061 0597 0315 0300 05AE 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;
+0061 0315 0300 05AE 0598 0062;00E0 05AE 0598 0315 0062;0061 05AE 0300 0598 0315 0062;00E0 05AE 0598 0315 0062;0061 05AE 0300 0598 0315 0062;
+0061 0598 0315 0300 05AE 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;
+0061 0315 0300 05AE 0599 0062;00E0 05AE 0599 0315 0062;0061 05AE 0300 0599 0315 0062;00E0 05AE 0599 0315 0062;0061 05AE 0300 0599 0315 0062;
+0061 0599 0315 0300 05AE 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;
+0061 302E 059A 0316 059A 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;
+0061 059A 302E 059A 0316 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;
+0061 059A 0316 302A 059B 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;
+0061 059B 059A 0316 302A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;
+0061 0315 0300 05AE 059C 0062;00E0 05AE 059C 0315 0062;0061 05AE 0300 059C 0315 0062;00E0 05AE 059C 0315 0062;0061 05AE 0300 059C 0315 0062;
+0061 059C 0315 0300 05AE 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;
+0061 0315 0300 05AE 059D 0062;00E0 05AE 059D 0315 0062;0061 05AE 0300 059D 0315 0062;00E0 05AE 059D 0315 0062;0061 05AE 0300 059D 0315 0062;
+0061 059D 0315 0300 05AE 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;
+0061 0315 0300 05AE 059E 0062;00E0 05AE 059E 0315 0062;0061 05AE 0300 059E 0315 0062;00E0 05AE 059E 0315 0062;0061 05AE 0300 059E 0315 0062;
+0061 059E 0315 0300 05AE 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;
+0061 0315 0300 05AE 059F 0062;00E0 05AE 059F 0315 0062;0061 05AE 0300 059F 0315 0062;00E0 05AE 059F 0315 0062;0061 05AE 0300 059F 0315 0062;
+0061 059F 0315 0300 05AE 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;
+0061 0315 0300 05AE 05A0 0062;00E0 05AE 05A0 0315 0062;0061 05AE 0300 05A0 0315 0062;00E0 05AE 05A0 0315 0062;0061 05AE 0300 05A0 0315 0062;
+0061 05A0 0315 0300 05AE 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;
+0061 0315 0300 05AE 05A1 0062;00E0 05AE 05A1 0315 0062;0061 05AE 0300 05A1 0315 0062;00E0 05AE 05A1 0315 0062;0061 05AE 0300 05A1 0315 0062;
+0061 05A1 0315 0300 05AE 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;
+0061 059A 0316 302A 05A2 0062;0061 302A 0316 05A2 059A 0062;0061 302A 0316 05A2 059A 0062;0061 302A 0316 05A2 059A 0062;0061 302A 0316 05A2 059A 0062;
+0061 05A2 059A 0316 302A 0062;0061 302A 05A2 0316 059A 0062;0061 302A 05A2 0316 059A 0062;0061 302A 05A2 0316 059A 0062;0061 302A 05A2 0316 059A 0062;
+0061 059A 0316 302A 05A3 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;
+0061 05A3 059A 0316 302A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;
+0061 059A 0316 302A 05A4 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;
+0061 05A4 059A 0316 302A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;
+0061 059A 0316 302A 05A5 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;
+0061 05A5 059A 0316 302A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;
+0061 059A 0316 302A 05A6 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;
+0061 05A6 059A 0316 302A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;
+0061 059A 0316 302A 05A7 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;
+0061 05A7 059A 0316 302A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;
+0061 0315 0300 05AE 05A8 0062;00E0 05AE 05A8 0315 0062;0061 05AE 0300 05A8 0315 0062;00E0 05AE 05A8 0315 0062;0061 05AE 0300 05A8 0315 0062;
+0061 05A8 0315 0300 05AE 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;
+0061 0315 0300 05AE 05A9 0062;00E0 05AE 05A9 0315 0062;0061 05AE 0300 05A9 0315 0062;00E0 05AE 05A9 0315 0062;0061 05AE 0300 05A9 0315 0062;
+0061 05A9 0315 0300 05AE 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;
+0061 059A 0316 302A 05AA 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;
+0061 05AA 059A 0316 302A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;
+0061 0315 0300 05AE 05AB 0062;00E0 05AE 05AB 0315 0062;0061 05AE 0300 05AB 0315 0062;00E0 05AE 05AB 0315 0062;0061 05AE 0300 05AB 0315 0062;
+0061 05AB 0315 0300 05AE 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;
+0061 0315 0300 05AE 05AC 0062;00E0 05AE 05AC 0315 0062;0061 05AE 0300 05AC 0315 0062;00E0 05AE 05AC 0315 0062;0061 05AE 0300 05AC 0315 0062;
+0061 05AC 0315 0300 05AE 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;
+0061 302E 059A 0316 05AD 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;
+0061 05AD 302E 059A 0316 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;
+0061 0300 05AE 1D16D 05AE 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;
+0061 05AE 0300 05AE 1D16D 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;
+0061 0315 0300 05AE 05AF 0062;00E0 05AE 05AF 0315 0062;0061 05AE 0300 05AF 0315 0062;00E0 05AE 05AF 0315 0062;0061 05AE 0300 05AF 0315 0062;
+0061 05AF 0315 0300 05AE 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;
+0061 05B1 05B0 094D 05B0 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;
+0061 05B0 05B1 05B0 094D 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;
+0061 05B2 05B1 05B0 05B1 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;
+0061 05B1 05B2 05B1 05B0 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;
+0061 05B3 05B2 05B1 05B2 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;
+0061 05B2 05B3 05B2 05B1 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;
+0061 05B4 05B3 05B2 05B3 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;
+0061 05B3 05B4 05B3 05B2 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;
+0061 05B5 05B4 05B3 05B4 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;
+0061 05B4 05B5 05B4 05B3 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;
+0061 05B6 05B5 05B4 05B5 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;
+0061 05B5 05B6 05B5 05B4 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;
+0061 05B7 05B6 05B5 05B6 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;
+0061 05B6 05B7 05B6 05B5 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;
+0061 05B8 05B7 05B6 05B7 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;
+0061 05B7 05B8 05B7 05B6 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;
+0061 05B9 05B8 05B7 05B8 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;
+0061 05B8 05B9 05B8 05B7 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;
+0061 05BB 05B9 05B8 05B9 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;
+0061 05B9 05BB 05B9 05B8 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;
+0061 05BB 05B9 05B8 05BA 0062;0061 05B8 05B9 05BA 05BB 0062;0061 05B8 05B9 05BA 05BB 0062;0061 05B8 05B9 05BA 05BB 0062;0061 05B8 05B9 05BA 05BB 0062;
+0061 05BA 05BB 05B9 05B8 0062;0061 05B8 05BA 05B9 05BB 0062;0061 05B8 05BA 05B9 05BB 0062;0061 05B8 05BA 05B9 05BB 0062;0061 05B8 05BA 05B9 05BB 0062;
+0061 05BC 05BB 05B9 05BB 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;
+0061 05BB 05BC 05BB 05B9 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;
+0061 05BD 05BC 05BB 05BC 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;
+0061 05BC 05BD 05BC 05BB 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;
+0061 05BF 05BD 05BC 05BD 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;
+0061 05BD 05BF 05BD 05BC 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;
+0061 05C1 05BF 05BD 05BF 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;
+0061 05BF 05C1 05BF 05BD 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;
+0061 05C2 05C1 05BF 05C1 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;
+0061 05C1 05C2 05C1 05BF 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;
+0061 FB1E 05C2 05C1 05C2 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;
+0061 05C2 FB1E 05C2 05C1 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;
+0061 0315 0300 05AE 05C4 0062;00E0 05AE 05C4 0315 0062;0061 05AE 0300 05C4 0315 0062;00E0 05AE 05C4 0315 0062;0061 05AE 0300 05C4 0315 0062;
+0061 05C4 0315 0300 05AE 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;
+0061 059A 0316 302A 05C5 0062;0061 302A 0316 05C5 059A 0062;0061 302A 0316 05C5 059A 0062;0061 302A 0316 05C5 059A 0062;0061 302A 0316 05C5 059A 0062;
+0061 05C5 059A 0316 302A 0062;0061 302A 05C5 0316 059A 0062;0061 302A 05C5 0316 059A 0062;0061 302A 05C5 0316 059A 0062;0061 302A 05C5 0316 059A 0062;
+0061 05B9 05B8 05B7 05C7 0062;0061 05B7 05B8 05C7 05B9 0062;0061 05B7 05B8 05C7 05B9 0062;0061 05B7 05B8 05C7 05B9 0062;0061 05B7 05B8 05C7 05B9 0062;
+0061 05C7 05B9 05B8 05B7 0062;0061 05B7 05C7 05B8 05B9 0062;0061 05B7 05C7 05B8 05B9 0062;0061 05B7 05C7 05B8 05B9 0062;0061 05B7 05C7 05B8 05B9 0062;
+0061 0315 0300 05AE 0610 0062;00E0 05AE 0610 0315 0062;0061 05AE 0300 0610 0315 0062;00E0 05AE 0610 0315 0062;0061 05AE 0300 0610 0315 0062;
+0061 0610 0315 0300 05AE 0062;0061 05AE 0610 0300 0315 0062;0061 05AE 0610 0300 0315 0062;0061 05AE 0610 0300 0315 0062;0061 05AE 0610 0300 0315 0062;
+0061 0315 0300 05AE 0611 0062;00E0 05AE 0611 0315 0062;0061 05AE 0300 0611 0315 0062;00E0 05AE 0611 0315 0062;0061 05AE 0300 0611 0315 0062;
+0061 0611 0315 0300 05AE 0062;0061 05AE 0611 0300 0315 0062;0061 05AE 0611 0300 0315 0062;0061 05AE 0611 0300 0315 0062;0061 05AE 0611 0300 0315 0062;
+0061 0315 0300 05AE 0612 0062;00E0 05AE 0612 0315 0062;0061 05AE 0300 0612 0315 0062;00E0 05AE 0612 0315 0062;0061 05AE 0300 0612 0315 0062;
+0061 0612 0315 0300 05AE 0062;0061 05AE 0612 0300 0315 0062;0061 05AE 0612 0300 0315 0062;0061 05AE 0612 0300 0315 0062;0061 05AE 0612 0300 0315 0062;
+0061 0315 0300 05AE 0613 0062;00E0 05AE 0613 0315 0062;0061 05AE 0300 0613 0315 0062;00E0 05AE 0613 0315 0062;0061 05AE 0300 0613 0315 0062;
+0061 0613 0315 0300 05AE 0062;0061 05AE 0613 0300 0315 0062;0061 05AE 0613 0300 0315 0062;0061 05AE 0613 0300 0315 0062;0061 05AE 0613 0300 0315 0062;
+0061 0315 0300 05AE 0614 0062;00E0 05AE 0614 0315 0062;0061 05AE 0300 0614 0315 0062;00E0 05AE 0614 0315 0062;0061 05AE 0300 0614 0315 0062;
+0061 0614 0315 0300 05AE 0062;0061 05AE 0614 0300 0315 0062;0061 05AE 0614 0300 0315 0062;0061 05AE 0614 0300 0315 0062;0061 05AE 0614 0300 0315 0062;
+0061 0315 0300 05AE 0615 0062;00E0 05AE 0615 0315 0062;0061 05AE 0300 0615 0315 0062;00E0 05AE 0615 0315 0062;0061 05AE 0300 0615 0315 0062;
+0061 0615 0315 0300 05AE 0062;0061 05AE 0615 0300 0315 0062;0061 05AE 0615 0300 0315 0062;0061 05AE 0615 0300 0315 0062;0061 05AE 0615 0300 0315 0062;
+0061 0315 0300 05AE 0616 0062;00E0 05AE 0616 0315 0062;0061 05AE 0300 0616 0315 0062;00E0 05AE 0616 0315 0062;0061 05AE 0300 0616 0315 0062;
+0061 0616 0315 0300 05AE 0062;0061 05AE 0616 0300 0315 0062;0061 05AE 0616 0300 0315 0062;0061 05AE 0616 0300 0315 0062;0061 05AE 0616 0300 0315 0062;
+0061 0315 0300 05AE 0617 0062;00E0 05AE 0617 0315 0062;0061 05AE 0300 0617 0315 0062;00E0 05AE 0617 0315 0062;0061 05AE 0300 0617 0315 0062;
+0061 0617 0315 0300 05AE 0062;0061 05AE 0617 0300 0315 0062;0061 05AE 0617 0300 0315 0062;0061 05AE 0617 0300 0315 0062;0061 05AE 0617 0300 0315 0062;
+0061 0619 0618 064D 0618 0062;0061 064D 0618 0618 0619 0062;0061 064D 0618 0618 0619 0062;0061 064D 0618 0618 0619 0062;0061 064D 0618 0618 0619 0062;
+0061 0618 0619 0618 064D 0062;0061 064D 0618 0618 0619 0062;0061 064D 0618 0618 0619 0062;0061 064D 0618 0618 0619 0062;0061 064D 0618 0618 0619 0062;
+0061 061A 0619 0618 0619 0062;0061 0618 0619 0619 061A 0062;0061 0618 0619 0619 061A 0062;0061 0618 0619 0619 061A 0062;0061 0618 0619 0619 061A 0062;
+0061 0619 061A 0619 0618 0062;0061 0618 0619 0619 061A 0062;0061 0618 0619 0619 061A 0062;0061 0618 0619 0619 061A 0062;0061 0618 0619 0619 061A 0062;
+0061 0651 061A 0619 061A 0062;0061 0619 061A 061A 0651 0062;0061 0619 061A 061A 0651 0062;0061 0619 061A 061A 0651 0062;0061 0619 061A 061A 0651 0062;
+0061 061A 0651 061A 0619 0062;0061 0619 061A 061A 0651 0062;0061 0619 061A 061A 0651 0062;0061 0619 061A 061A 0651 0062;0061 0619 061A 061A 0651 0062;
+0061 064C 064B FB1E 064B 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;
+0061 064B 064C 064B FB1E 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;
+0061 064D 064C 064B 064C 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;
+0061 064C 064D 064C 064B 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;
+0061 0618 064D 064C 064D 0062;0061 064C 064D 064D 0618 0062;0061 064C 064D 064D 0618 0062;0061 064C 064D 064D 0618 0062;0061 064C 064D 064D 0618 0062;
+0061 064D 0618 064D 064C 0062;0061 064C 064D 064D 0618 0062;0061 064C 064D 064D 0618 0062;0061 064C 064D 064D 0618 0062;0061 064C 064D 064D 0618 0062;
+0061 0619 0618 064D 064E 0062;0061 064D 0618 064E 0619 0062;0061 064D 0618 064E 0619 0062;0061 064D 0618 064E 0619 0062;0061 064D 0618 064E 0619 0062;
+0061 064E 0619 0618 064D 0062;0061 064D 064E 0618 0619 0062;0061 064D 064E 0618 0619 0062;0061 064D 064E 0618 0619 0062;0061 064D 064E 0618 0619 0062;
+0061 061A 0619 0618 064F 0062;0061 0618 0619 064F 061A 0062;0061 0618 0619 064F 061A 0062;0061 0618 0619 064F 061A 0062;0061 0618 0619 064F 061A 0062;
+0061 064F 061A 0619 0618 0062;0061 0618 064F 0619 061A 0062;0061 0618 064F 0619 061A 0062;0061 0618 064F 0619 061A 0062;0061 0618 064F 0619 061A 0062;
+0061 0651 061A 0619 0650 0062;0061 0619 061A 0650 0651 0062;0061 0619 061A 0650 0651 0062;0061 0619 061A 0650 0651 0062;0061 0619 061A 0650 0651 0062;
+0061 0650 0651 061A 0619 0062;0061 0619 0650 061A 0651 0062;0061 0619 0650 061A 0651 0062;0061 0619 0650 061A 0651 0062;0061 0619 0650 061A 0651 0062;
+0061 0652 0651 061A 0651 0062;0061 061A 0651 0651 0652 0062;0061 061A 0651 0651 0652 0062;0061 061A 0651 0651 0652 0062;0061 061A 0651 0651 0652 0062;
+0061 0651 0652 0651 061A 0062;0061 061A 0651 0651 0652 0062;0061 061A 0651 0651 0652 0062;0061 061A 0651 0651 0652 0062;0061 061A 0651 0651 0652 0062;
+0061 0670 0652 0651 0652 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;
+0061 0652 0670 0652 0651 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;
+0061 0315 0300 05AE 0653 0062;00E0 05AE 0653 0315 0062;0061 05AE 0300 0653 0315 0062;00E0 05AE 0653 0315 0062;0061 05AE 0300 0653 0315 0062;
+0061 0653 0315 0300 05AE 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;
+0061 0315 0300 05AE 0654 0062;00E0 05AE 0654 0315 0062;0061 05AE 0300 0654 0315 0062;00E0 05AE 0654 0315 0062;0061 05AE 0300 0654 0315 0062;
+0061 0654 0315 0300 05AE 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;
+0061 059A 0316 302A 0655 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;
+0061 0655 059A 0316 302A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;
+0061 059A 0316 302A 0656 0062;0061 302A 0316 0656 059A 0062;0061 302A 0316 0656 059A 0062;0061 302A 0316 0656 059A 0062;0061 302A 0316 0656 059A 0062;
+0061 0656 059A 0316 302A 0062;0061 302A 0656 0316 059A 0062;0061 302A 0656 0316 059A 0062;0061 302A 0656 0316 059A 0062;0061 302A 0656 0316 059A 0062;
+0061 0315 0300 05AE 0657 0062;00E0 05AE 0657 0315 0062;0061 05AE 0300 0657 0315 0062;00E0 05AE 0657 0315 0062;0061 05AE 0300 0657 0315 0062;
+0061 0657 0315 0300 05AE 0062;0061 05AE 0657 0300 0315 0062;0061 05AE 0657 0300 0315 0062;0061 05AE 0657 0300 0315 0062;0061 05AE 0657 0300 0315 0062;
+0061 0315 0300 05AE 0658 0062;00E0 05AE 0658 0315 0062;0061 05AE 0300 0658 0315 0062;00E0 05AE 0658 0315 0062;0061 05AE 0300 0658 0315 0062;
+0061 0658 0315 0300 05AE 0062;0061 05AE 0658 0300 0315 0062;0061 05AE 0658 0300 0315 0062;0061 05AE 0658 0300 0315 0062;0061 05AE 0658 0300 0315 0062;
+0061 0315 0300 05AE 0659 0062;00E0 05AE 0659 0315 0062;0061 05AE 0300 0659 0315 0062;00E0 05AE 0659 0315 0062;0061 05AE 0300 0659 0315 0062;
+0061 0659 0315 0300 05AE 0062;0061 05AE 0659 0300 0315 0062;0061 05AE 0659 0300 0315 0062;0061 05AE 0659 0300 0315 0062;0061 05AE 0659 0300 0315 0062;
+0061 0315 0300 05AE 065A 0062;00E0 05AE 065A 0315 0062;0061 05AE 0300 065A 0315 0062;00E0 05AE 065A 0315 0062;0061 05AE 0300 065A 0315 0062;
+0061 065A 0315 0300 05AE 0062;0061 05AE 065A 0300 0315 0062;0061 05AE 065A 0300 0315 0062;0061 05AE 065A 0300 0315 0062;0061 05AE 065A 0300 0315 0062;
+0061 0315 0300 05AE 065B 0062;00E0 05AE 065B 0315 0062;0061 05AE 0300 065B 0315 0062;00E0 05AE 065B 0315 0062;0061 05AE 0300 065B 0315 0062;
+0061 065B 0315 0300 05AE 0062;0061 05AE 065B 0300 0315 0062;0061 05AE 065B 0300 0315 0062;0061 05AE 065B 0300 0315 0062;0061 05AE 065B 0300 0315 0062;
+0061 059A 0316 302A 065C 0062;0061 302A 0316 065C 059A 0062;0061 302A 0316 065C 059A 0062;0061 302A 0316 065C 059A 0062;0061 302A 0316 065C 059A 0062;
+0061 065C 059A 0316 302A 0062;0061 302A 065C 0316 059A 0062;0061 302A 065C 0316 059A 0062;0061 302A 065C 0316 059A 0062;0061 302A 065C 0316 059A 0062;
+0061 0315 0300 05AE 065D 0062;00E0 05AE 065D 0315 0062;0061 05AE 0300 065D 0315 0062;00E0 05AE 065D 0315 0062;0061 05AE 0300 065D 0315 0062;
+0061 065D 0315 0300 05AE 0062;0061 05AE 065D 0300 0315 0062;0061 05AE 065D 0300 0315 0062;0061 05AE 065D 0300 0315 0062;0061 05AE 065D 0300 0315 0062;
+0061 0315 0300 05AE 065E 0062;00E0 05AE 065E 0315 0062;0061 05AE 0300 065E 0315 0062;00E0 05AE 065E 0315 0062;0061 05AE 0300 065E 0315 0062;
+0061 065E 0315 0300 05AE 0062;0061 05AE 065E 0300 0315 0062;0061 05AE 065E 0300 0315 0062;0061 05AE 065E 0300 0315 0062;0061 05AE 065E 0300 0315 0062;
+0061 0711 0670 0652 0670 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;
+0061 0670 0711 0670 0652 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;
+0061 0315 0300 05AE 06D6 0062;00E0 05AE 06D6 0315 0062;0061 05AE 0300 06D6 0315 0062;00E0 05AE 06D6 0315 0062;0061 05AE 0300 06D6 0315 0062;
+0061 06D6 0315 0300 05AE 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;
+0061 0315 0300 05AE 06D7 0062;00E0 05AE 06D7 0315 0062;0061 05AE 0300 06D7 0315 0062;00E0 05AE 06D7 0315 0062;0061 05AE 0300 06D7 0315 0062;
+0061 06D7 0315 0300 05AE 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;
+0061 0315 0300 05AE 06D8 0062;00E0 05AE 06D8 0315 0062;0061 05AE 0300 06D8 0315 0062;00E0 05AE 06D8 0315 0062;0061 05AE 0300 06D8 0315 0062;
+0061 06D8 0315 0300 05AE 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;
+0061 0315 0300 05AE 06D9 0062;00E0 05AE 06D9 0315 0062;0061 05AE 0300 06D9 0315 0062;00E0 05AE 06D9 0315 0062;0061 05AE 0300 06D9 0315 0062;
+0061 06D9 0315 0300 05AE 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;
+0061 0315 0300 05AE 06DA 0062;00E0 05AE 06DA 0315 0062;0061 05AE 0300 06DA 0315 0062;00E0 05AE 06DA 0315 0062;0061 05AE 0300 06DA 0315 0062;
+0061 06DA 0315 0300 05AE 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;
+0061 0315 0300 05AE 06DB 0062;00E0 05AE 06DB 0315 0062;0061 05AE 0300 06DB 0315 0062;00E0 05AE 06DB 0315 0062;0061 05AE 0300 06DB 0315 0062;
+0061 06DB 0315 0300 05AE 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;
+0061 0315 0300 05AE 06DC 0062;00E0 05AE 06DC 0315 0062;0061 05AE 0300 06DC 0315 0062;00E0 05AE 06DC 0315 0062;0061 05AE 0300 06DC 0315 0062;
+0061 06DC 0315 0300 05AE 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;
+0061 0315 0300 05AE 06DF 0062;00E0 05AE 06DF 0315 0062;0061 05AE 0300 06DF 0315 0062;00E0 05AE 06DF 0315 0062;0061 05AE 0300 06DF 0315 0062;
+0061 06DF 0315 0300 05AE 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;
+0061 0315 0300 05AE 06E0 0062;00E0 05AE 06E0 0315 0062;0061 05AE 0300 06E0 0315 0062;00E0 05AE 06E0 0315 0062;0061 05AE 0300 06E0 0315 0062;
+0061 06E0 0315 0300 05AE 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;
+0061 0315 0300 05AE 06E1 0062;00E0 05AE 06E1 0315 0062;0061 05AE 0300 06E1 0315 0062;00E0 05AE 06E1 0315 0062;0061 05AE 0300 06E1 0315 0062;
+0061 06E1 0315 0300 05AE 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;
+0061 0315 0300 05AE 06E2 0062;00E0 05AE 06E2 0315 0062;0061 05AE 0300 06E2 0315 0062;00E0 05AE 06E2 0315 0062;0061 05AE 0300 06E2 0315 0062;
+0061 06E2 0315 0300 05AE 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;
+0061 059A 0316 302A 06E3 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;
+0061 06E3 059A 0316 302A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;
+0061 0315 0300 05AE 06E4 0062;00E0 05AE 06E4 0315 0062;0061 05AE 0300 06E4 0315 0062;00E0 05AE 06E4 0315 0062;0061 05AE 0300 06E4 0315 0062;
+0061 06E4 0315 0300 05AE 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;
+0061 0315 0300 05AE 06E7 0062;00E0 05AE 06E7 0315 0062;0061 05AE 0300 06E7 0315 0062;00E0 05AE 06E7 0315 0062;0061 05AE 0300 06E7 0315 0062;
+0061 06E7 0315 0300 05AE 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;
+0061 0315 0300 05AE 06E8 0062;00E0 05AE 06E8 0315 0062;0061 05AE 0300 06E8 0315 0062;00E0 05AE 06E8 0315 0062;0061 05AE 0300 06E8 0315 0062;
+0061 06E8 0315 0300 05AE 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;
+0061 059A 0316 302A 06EA 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;
+0061 06EA 059A 0316 302A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;
+0061 0315 0300 05AE 06EB 0062;00E0 05AE 06EB 0315 0062;0061 05AE 0300 06EB 0315 0062;00E0 05AE 06EB 0315 0062;0061 05AE 0300 06EB 0315 0062;
+0061 06EB 0315 0300 05AE 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;
+0061 0315 0300 05AE 06EC 0062;00E0 05AE 06EC 0315 0062;0061 05AE 0300 06EC 0315 0062;00E0 05AE 06EC 0315 0062;0061 05AE 0300 06EC 0315 0062;
+0061 06EC 0315 0300 05AE 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;
+0061 059A 0316 302A 06ED 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;
+0061 06ED 059A 0316 302A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;
+0061 0C55 0711 0670 0711 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;
+0061 0711 0C55 0711 0670 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;
+0061 0315 0300 05AE 0730 0062;00E0 05AE 0730 0315 0062;0061 05AE 0300 0730 0315 0062;00E0 05AE 0730 0315 0062;0061 05AE 0300 0730 0315 0062;
+0061 0730 0315 0300 05AE 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;
+0061 059A 0316 302A 0731 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;
+0061 0731 059A 0316 302A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;
+0061 0315 0300 05AE 0732 0062;00E0 05AE 0732 0315 0062;0061 05AE 0300 0732 0315 0062;00E0 05AE 0732 0315 0062;0061 05AE 0300 0732 0315 0062;
+0061 0732 0315 0300 05AE 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;
+0061 0315 0300 05AE 0733 0062;00E0 05AE 0733 0315 0062;0061 05AE 0300 0733 0315 0062;00E0 05AE 0733 0315 0062;0061 05AE 0300 0733 0315 0062;
+0061 0733 0315 0300 05AE 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;
+0061 059A 0316 302A 0734 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;
+0061 0734 059A 0316 302A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;
+0061 0315 0300 05AE 0735 0062;00E0 05AE 0735 0315 0062;0061 05AE 0300 0735 0315 0062;00E0 05AE 0735 0315 0062;0061 05AE 0300 0735 0315 0062;
+0061 0735 0315 0300 05AE 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;
+0061 0315 0300 05AE 0736 0062;00E0 05AE 0736 0315 0062;0061 05AE 0300 0736 0315 0062;00E0 05AE 0736 0315 0062;0061 05AE 0300 0736 0315 0062;
+0061 0736 0315 0300 05AE 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;
+0061 059A 0316 302A 0737 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;
+0061 0737 059A 0316 302A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;
+0061 059A 0316 302A 0738 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;
+0061 0738 059A 0316 302A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;
+0061 059A 0316 302A 0739 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;
+0061 0739 059A 0316 302A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;
+0061 0315 0300 05AE 073A 0062;00E0 05AE 073A 0315 0062;0061 05AE 0300 073A 0315 0062;00E0 05AE 073A 0315 0062;0061 05AE 0300 073A 0315 0062;
+0061 073A 0315 0300 05AE 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;
+0061 059A 0316 302A 073B 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;
+0061 073B 059A 0316 302A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;
+0061 059A 0316 302A 073C 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;
+0061 073C 059A 0316 302A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;
+0061 0315 0300 05AE 073D 0062;00E0 05AE 073D 0315 0062;0061 05AE 0300 073D 0315 0062;00E0 05AE 073D 0315 0062;0061 05AE 0300 073D 0315 0062;
+0061 073D 0315 0300 05AE 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;
+0061 059A 0316 302A 073E 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;
+0061 073E 059A 0316 302A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;
+0061 0315 0300 05AE 073F 0062;00E0 05AE 073F 0315 0062;0061 05AE 0300 073F 0315 0062;00E0 05AE 073F 0315 0062;0061 05AE 0300 073F 0315 0062;
+0061 073F 0315 0300 05AE 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;
+0061 0315 0300 05AE 0740 0062;00E0 05AE 0740 0315 0062;0061 05AE 0300 0740 0315 0062;00E0 05AE 0740 0315 0062;0061 05AE 0300 0740 0315 0062;
+0061 0740 0315 0300 05AE 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;
+0061 0315 0300 05AE 0741 0062;00E0 05AE 0741 0315 0062;0061 05AE 0300 0741 0315 0062;00E0 05AE 0741 0315 0062;0061 05AE 0300 0741 0315 0062;
+0061 0741 0315 0300 05AE 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;
+0061 059A 0316 302A 0742 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;
+0061 0742 059A 0316 302A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;
+0061 0315 0300 05AE 0743 0062;00E0 05AE 0743 0315 0062;0061 05AE 0300 0743 0315 0062;00E0 05AE 0743 0315 0062;0061 05AE 0300 0743 0315 0062;
+0061 0743 0315 0300 05AE 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;
+0061 059A 0316 302A 0744 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;
+0061 0744 059A 0316 302A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;
+0061 0315 0300 05AE 0745 0062;00E0 05AE 0745 0315 0062;0061 05AE 0300 0745 0315 0062;00E0 05AE 0745 0315 0062;0061 05AE 0300 0745 0315 0062;
+0061 0745 0315 0300 05AE 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;
+0061 059A 0316 302A 0746 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;
+0061 0746 059A 0316 302A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;
+0061 0315 0300 05AE 0747 0062;00E0 05AE 0747 0315 0062;0061 05AE 0300 0747 0315 0062;00E0 05AE 0747 0315 0062;0061 05AE 0300 0747 0315 0062;
+0061 0747 0315 0300 05AE 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;
+0061 059A 0316 302A 0748 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;
+0061 0748 059A 0316 302A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;
+0061 0315 0300 05AE 0749 0062;00E0 05AE 0749 0315 0062;0061 05AE 0300 0749 0315 0062;00E0 05AE 0749 0315 0062;0061 05AE 0300 0749 0315 0062;
+0061 0749 0315 0300 05AE 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;
+0061 0315 0300 05AE 074A 0062;00E0 05AE 074A 0315 0062;0061 05AE 0300 074A 0315 0062;00E0 05AE 074A 0315 0062;0061 05AE 0300 074A 0315 0062;
+0061 074A 0315 0300 05AE 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;
+0061 0315 0300 05AE 07EB 0062;00E0 05AE 07EB 0315 0062;0061 05AE 0300 07EB 0315 0062;00E0 05AE 07EB 0315 0062;0061 05AE 0300 07EB 0315 0062;
+0061 07EB 0315 0300 05AE 0062;0061 05AE 07EB 0300 0315 0062;0061 05AE 07EB 0300 0315 0062;0061 05AE 07EB 0300 0315 0062;0061 05AE 07EB 0300 0315 0062;
+0061 0315 0300 05AE 07EC 0062;00E0 05AE 07EC 0315 0062;0061 05AE 0300 07EC 0315 0062;00E0 05AE 07EC 0315 0062;0061 05AE 0300 07EC 0315 0062;
+0061 07EC 0315 0300 05AE 0062;0061 05AE 07EC 0300 0315 0062;0061 05AE 07EC 0300 0315 0062;0061 05AE 07EC 0300 0315 0062;0061 05AE 07EC 0300 0315 0062;
+0061 0315 0300 05AE 07ED 0062;00E0 05AE 07ED 0315 0062;0061 05AE 0300 07ED 0315 0062;00E0 05AE 07ED 0315 0062;0061 05AE 0300 07ED 0315 0062;
+0061 07ED 0315 0300 05AE 0062;0061 05AE 07ED 0300 0315 0062;0061 05AE 07ED 0300 0315 0062;0061 05AE 07ED 0300 0315 0062;0061 05AE 07ED 0300 0315 0062;
+0061 0315 0300 05AE 07EE 0062;00E0 05AE 07EE 0315 0062;0061 05AE 0300 07EE 0315 0062;00E0 05AE 07EE 0315 0062;0061 05AE 0300 07EE 0315 0062;
+0061 07EE 0315 0300 05AE 0062;0061 05AE 07EE 0300 0315 0062;0061 05AE 07EE 0300 0315 0062;0061 05AE 07EE 0300 0315 0062;0061 05AE 07EE 0300 0315 0062;
+0061 0315 0300 05AE 07EF 0062;00E0 05AE 07EF 0315 0062;0061 05AE 0300 07EF 0315 0062;00E0 05AE 07EF 0315 0062;0061 05AE 0300 07EF 0315 0062;
+0061 07EF 0315 0300 05AE 0062;0061 05AE 07EF 0300 0315 0062;0061 05AE 07EF 0300 0315 0062;0061 05AE 07EF 0300 0315 0062;0061 05AE 07EF 0300 0315 0062;
+0061 0315 0300 05AE 07F0 0062;00E0 05AE 07F0 0315 0062;0061 05AE 0300 07F0 0315 0062;00E0 05AE 07F0 0315 0062;0061 05AE 0300 07F0 0315 0062;
+0061 07F0 0315 0300 05AE 0062;0061 05AE 07F0 0300 0315 0062;0061 05AE 07F0 0300 0315 0062;0061 05AE 07F0 0300 0315 0062;0061 05AE 07F0 0300 0315 0062;
+0061 0315 0300 05AE 07F1 0062;00E0 05AE 07F1 0315 0062;0061 05AE 0300 07F1 0315 0062;00E0 05AE 07F1 0315 0062;0061 05AE 0300 07F1 0315 0062;
+0061 07F1 0315 0300 05AE 0062;0061 05AE 07F1 0300 0315 0062;0061 05AE 07F1 0300 0315 0062;0061 05AE 07F1 0300 0315 0062;0061 05AE 07F1 0300 0315 0062;
+0061 059A 0316 302A 07F2 0062;0061 302A 0316 07F2 059A 0062;0061 302A 0316 07F2 059A 0062;0061 302A 0316 07F2 059A 0062;0061 302A 0316 07F2 059A 0062;
+0061 07F2 059A 0316 302A 0062;0061 302A 07F2 0316 059A 0062;0061 302A 07F2 0316 059A 0062;0061 302A 07F2 0316 059A 0062;0061 302A 07F2 0316 059A 0062;
+0061 0315 0300 05AE 07F3 0062;00E0 05AE 07F3 0315 0062;0061 05AE 0300 07F3 0315 0062;00E0 05AE 07F3 0315 0062;0061 05AE 0300 07F3 0315 0062;
+0061 07F3 0315 0300 05AE 0062;0061 05AE 07F3 0300 0315 0062;0061 05AE 07F3 0300 0315 0062;0061 05AE 07F3 0300 0315 0062;0061 05AE 07F3 0300 0315 0062;
+0061 3099 093C 0334 093C 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;
+0061 093C 3099 093C 0334 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;
+0061 05B0 094D 3099 094D 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;
+0061 094D 05B0 094D 3099 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;
+0061 0315 0300 05AE 0951 0062;00E0 05AE 0951 0315 0062;0061 05AE 0300 0951 0315 0062;00E0 05AE 0951 0315 0062;0061 05AE 0300 0951 0315 0062;
+0061 0951 0315 0300 05AE 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;
+0061 059A 0316 302A 0952 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;
+0061 0952 059A 0316 302A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;
+0061 0315 0300 05AE 0953 0062;00E0 05AE 0953 0315 0062;0061 05AE 0300 0953 0315 0062;00E0 05AE 0953 0315 0062;0061 05AE 0300 0953 0315 0062;
+0061 0953 0315 0300 05AE 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;
+0061 0315 0300 05AE 0954 0062;00E0 05AE 0954 0315 0062;0061 05AE 0300 0954 0315 0062;00E0 05AE 0954 0315 0062;0061 05AE 0300 0954 0315 0062;
+0061 0954 0315 0300 05AE 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;
+0061 3099 093C 0334 09BC 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;
+0061 09BC 3099 093C 0334 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;
+0061 05B0 094D 3099 09CD 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;
+0061 09CD 05B0 094D 3099 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;
+0061 3099 093C 0334 0A3C 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;
+0061 0A3C 3099 093C 0334 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;
+0061 05B0 094D 3099 0A4D 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;
+0061 0A4D 05B0 094D 3099 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;
+0061 3099 093C 0334 0ABC 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;
+0061 0ABC 3099 093C 0334 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;
+0061 05B0 094D 3099 0ACD 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;
+0061 0ACD 05B0 094D 3099 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;
+0061 3099 093C 0334 0B3C 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;
+0061 0B3C 3099 093C 0334 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;
+0061 05B0 094D 3099 0B4D 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;
+0061 0B4D 05B0 094D 3099 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;
+0061 05B0 094D 3099 0BCD 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;
+0061 0BCD 05B0 094D 3099 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;
+0061 05B0 094D 3099 0C4D 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;
+0061 0C4D 05B0 094D 3099 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;
+0061 0C56 0C55 0711 0C55 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;
+0061 0C55 0C56 0C55 0711 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;
+0061 0E38 0C56 0C55 0C56 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;
+0061 0C56 0E38 0C56 0C55 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;
+0061 3099 093C 0334 0CBC 0062;0061 0334 093C 0CBC 3099 0062;0061 0334 093C 0CBC 3099 0062;0061 0334 093C 0CBC 3099 0062;0061 0334 093C 0CBC 3099 0062;
+0061 0CBC 3099 093C 0334 0062;0061 0334 0CBC 093C 3099 0062;0061 0334 0CBC 093C 3099 0062;0061 0334 0CBC 093C 3099 0062;0061 0334 0CBC 093C 3099 0062;
+0061 05B0 094D 3099 0CCD 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;
+0061 0CCD 05B0 094D 3099 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;
+0061 05B0 094D 3099 0D4D 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;
+0061 0D4D 05B0 094D 3099 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;
+0061 05B0 094D 3099 0DCA 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;
+0061 0DCA 05B0 094D 3099 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;
+0061 0E48 0E38 0C56 0E38 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;
+0061 0E38 0E48 0E38 0C56 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;
+0061 0E48 0E38 0C56 0E39 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;
+0061 0E39 0E48 0E38 0C56 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;
+0061 05B0 094D 3099 0E3A 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;
+0061 0E3A 05B0 094D 3099 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;
+0061 0EB8 0E48 0E38 0E48 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;
+0061 0E48 0EB8 0E48 0E38 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;
+0061 0EB8 0E48 0E38 0E49 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;
+0061 0E49 0EB8 0E48 0E38 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;
+0061 0EB8 0E48 0E38 0E4A 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;
+0061 0E4A 0EB8 0E48 0E38 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;
+0061 0EB8 0E48 0E38 0E4B 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;
+0061 0E4B 0EB8 0E48 0E38 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;
+0061 0EC8 0EB8 0E48 0EB8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;
+0061 0EB8 0EC8 0EB8 0E48 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;
+0061 0EC8 0EB8 0E48 0EB9 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;
+0061 0EB9 0EC8 0EB8 0E48 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;
+0061 0F71 0EC8 0EB8 0EC8 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;
+0061 0EC8 0F71 0EC8 0EB8 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;
+0061 0F71 0EC8 0EB8 0EC9 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;
+0061 0EC9 0F71 0EC8 0EB8 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;
+0061 0F71 0EC8 0EB8 0ECA 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;
+0061 0ECA 0F71 0EC8 0EB8 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;
+0061 0F71 0EC8 0EB8 0ECB 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;
+0061 0ECB 0F71 0EC8 0EB8 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;
+0061 059A 0316 302A 0F18 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;
+0061 0F18 059A 0316 302A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;
+0061 059A 0316 302A 0F19 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;
+0061 0F19 059A 0316 302A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;
+0061 059A 0316 302A 0F35 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;
+0061 0F35 059A 0316 302A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;
+0061 059A 0316 302A 0F37 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;
+0061 0F37 059A 0316 302A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;
+0061 302A 031B 1DCE 0F39 0062;0061 1DCE 031B 0F39 302A 0062;0061 1DCE 031B 0F39 302A 0062;0061 1DCE 031B 0F39 302A 0062;0061 1DCE 031B 0F39 302A 0062;
+0061 0F39 302A 031B 1DCE 0062;0061 1DCE 0F39 031B 302A 0062;0061 1DCE 0F39 031B 302A 0062;0061 1DCE 0F39 031B 302A 0062;0061 1DCE 0F39 031B 302A 0062;
+0061 0F72 0F71 0EC8 0F71 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;
+0061 0F71 0F72 0F71 0EC8 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;
+0061 0F74 0F72 0F71 0F72 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;
+0061 0F72 0F74 0F72 0F71 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;
+0061 0321 0F74 0F72 0F74 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;
+0061 0F74 0321 0F74 0F72 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;
+0061 0F74 0F72 0F71 0F7A 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;
+0061 0F7A 0F74 0F72 0F71 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F7B 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;
+0061 0F7B 0F74 0F72 0F71 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F7C 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;
+0061 0F7C 0F74 0F72 0F71 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F7D 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;
+0061 0F7D 0F74 0F72 0F71 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F80 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;
+0061 0F80 0F74 0F72 0F71 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;
+0061 0315 0300 05AE 0F82 0062;00E0 05AE 0F82 0315 0062;0061 05AE 0300 0F82 0315 0062;00E0 05AE 0F82 0315 0062;0061 05AE 0300 0F82 0315 0062;
+0061 0F82 0315 0300 05AE 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;
+0061 0315 0300 05AE 0F83 0062;00E0 05AE 0F83 0315 0062;0061 05AE 0300 0F83 0315 0062;00E0 05AE 0F83 0315 0062;0061 05AE 0300 0F83 0315 0062;
+0061 0F83 0315 0300 05AE 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;
+0061 05B0 094D 3099 0F84 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;
+0061 0F84 05B0 094D 3099 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;
+0061 0315 0300 05AE 0F86 0062;00E0 05AE 0F86 0315 0062;0061 05AE 0300 0F86 0315 0062;00E0 05AE 0F86 0315 0062;0061 05AE 0300 0F86 0315 0062;
+0061 0F86 0315 0300 05AE 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;
+0061 0315 0300 05AE 0F87 0062;00E0 05AE 0F87 0315 0062;0061 05AE 0300 0F87 0315 0062;00E0 05AE 0F87 0315 0062;0061 05AE 0300 0F87 0315 0062;
+0061 0F87 0315 0300 05AE 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;
+0061 059A 0316 302A 0FC6 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;
+0061 0FC6 059A 0316 302A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;
+0061 3099 093C 0334 1037 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;
+0061 1037 3099 093C 0334 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;
+0061 05B0 094D 3099 1039 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;
+0061 1039 05B0 094D 3099 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;
+0061 05B0 094D 3099 103A 0062;0061 3099 094D 103A 05B0 0062;0061 3099 094D 103A 05B0 0062;0061 3099 094D 103A 05B0 0062;0061 3099 094D 103A 05B0 0062;
+0061 103A 05B0 094D 3099 0062;0061 3099 103A 094D 05B0 0062;0061 3099 103A 094D 05B0 0062;0061 3099 103A 094D 05B0 0062;0061 3099 103A 094D 05B0 0062;
+0061 059A 0316 302A 108D 0062;0061 302A 0316 108D 059A 0062;0061 302A 0316 108D 059A 0062;0061 302A 0316 108D 059A 0062;0061 302A 0316 108D 059A 0062;
+0061 108D 059A 0316 302A 0062;0061 302A 108D 0316 059A 0062;0061 302A 108D 0316 059A 0062;0061 302A 108D 0316 059A 0062;0061 302A 108D 0316 059A 0062;
+0061 0315 0300 05AE 135F 0062;00E0 05AE 135F 0315 0062;0061 05AE 0300 135F 0315 0062;00E0 05AE 135F 0315 0062;0061 05AE 0300 135F 0315 0062;
+0061 135F 0315 0300 05AE 0062;0061 05AE 135F 0300 0315 0062;0061 05AE 135F 0300 0315 0062;0061 05AE 135F 0300 0315 0062;0061 05AE 135F 0300 0315 0062;
+0061 05B0 094D 3099 1714 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;
+0061 1714 05B0 094D 3099 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;
+0061 05B0 094D 3099 1734 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;
+0061 1734 05B0 094D 3099 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;
+0061 05B0 094D 3099 17D2 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;
+0061 17D2 05B0 094D 3099 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;
+0061 0315 0300 05AE 17DD 0062;00E0 05AE 17DD 0315 0062;0061 05AE 0300 17DD 0315 0062;00E0 05AE 17DD 0315 0062;0061 05AE 0300 17DD 0315 0062;
+0061 17DD 0315 0300 05AE 0062;0061 05AE 17DD 0300 0315 0062;0061 05AE 17DD 0300 0315 0062;0061 05AE 17DD 0300 0315 0062;0061 05AE 17DD 0300 0315 0062;
+0061 0300 05AE 1D16D 18A9 0062;00E0 1D16D 05AE 18A9 0062;0061 1D16D 05AE 18A9 0300 0062;00E0 1D16D 05AE 18A9 0062;0061 1D16D 05AE 18A9 0300 0062;
+0061 18A9 0300 05AE 1D16D 0062;00E0 1D16D 18A9 05AE 0062;0061 1D16D 18A9 05AE 0300 0062;00E0 1D16D 18A9 05AE 0062;0061 1D16D 18A9 05AE 0300 0062;
+0061 302E 059A 0316 1939 0062;0061 0316 059A 1939 302E 0062;0061 0316 059A 1939 302E 0062;0061 0316 059A 1939 302E 0062;0061 0316 059A 1939 302E 0062;
+0061 1939 302E 059A 0316 0062;0061 0316 1939 059A 302E 0062;0061 0316 1939 059A 302E 0062;0061 0316 1939 059A 302E 0062;0061 0316 1939 059A 302E 0062;
+0061 0315 0300 05AE 193A 0062;00E0 05AE 193A 0315 0062;0061 05AE 0300 193A 0315 0062;00E0 05AE 193A 0315 0062;0061 05AE 0300 193A 0315 0062;
+0061 193A 0315 0300 05AE 0062;0061 05AE 193A 0300 0315 0062;0061 05AE 193A 0300 0315 0062;0061 05AE 193A 0300 0315 0062;0061 05AE 193A 0300 0315 0062;
+0061 059A 0316 302A 193B 0062;0061 302A 0316 193B 059A 0062;0061 302A 0316 193B 059A 0062;0061 302A 0316 193B 059A 0062;0061 302A 0316 193B 059A 0062;
+0061 193B 059A 0316 302A 0062;0061 302A 193B 0316 059A 0062;0061 302A 193B 0316 059A 0062;0061 302A 193B 0316 059A 0062;0061 302A 193B 0316 059A 0062;
+0061 0315 0300 05AE 1A17 0062;00E0 05AE 1A17 0315 0062;0061 05AE 0300 1A17 0315 0062;00E0 05AE 1A17 0315 0062;0061 05AE 0300 1A17 0315 0062;
+0061 1A17 0315 0300 05AE 0062;0061 05AE 1A17 0300 0315 0062;0061 05AE 1A17 0300 0315 0062;0061 05AE 1A17 0300 0315 0062;0061 05AE 1A17 0300 0315 0062;
+0061 059A 0316 302A 1A18 0062;0061 302A 0316 1A18 059A 0062;0061 302A 0316 1A18 059A 0062;0061 302A 0316 1A18 059A 0062;0061 302A 0316 1A18 059A 0062;
+0061 1A18 059A 0316 302A 0062;0061 302A 1A18 0316 059A 0062;0061 302A 1A18 0316 059A 0062;0061 302A 1A18 0316 059A 0062;0061 302A 1A18 0316 059A 0062;
+0061 3099 093C 0334 1B34 0062;0061 0334 093C 1B34 3099 0062;0061 0334 093C 1B34 3099 0062;0061 0334 093C 1B34 3099 0062;0061 0334 093C 1B34 3099 0062;
+0061 1B34 3099 093C 0334 0062;0061 0334 1B34 093C 3099 0062;0061 0334 1B34 093C 3099 0062;0061 0334 1B34 093C 3099 0062;0061 0334 1B34 093C 3099 0062;
+0061 05B0 094D 3099 1B44 0062;0061 3099 094D 1B44 05B0 0062;0061 3099 094D 1B44 05B0 0062;0061 3099 094D 1B44 05B0 0062;0061 3099 094D 1B44 05B0 0062;
+0061 1B44 05B0 094D 3099 0062;0061 3099 1B44 094D 05B0 0062;0061 3099 1B44 094D 05B0 0062;0061 3099 1B44 094D 05B0 0062;0061 3099 1B44 094D 05B0 0062;
+0061 0315 0300 05AE 1B6B 0062;00E0 05AE 1B6B 0315 0062;0061 05AE 0300 1B6B 0315 0062;00E0 05AE 1B6B 0315 0062;0061 05AE 0300 1B6B 0315 0062;
+0061 1B6B 0315 0300 05AE 0062;0061 05AE 1B6B 0300 0315 0062;0061 05AE 1B6B 0300 0315 0062;0061 05AE 1B6B 0300 0315 0062;0061 05AE 1B6B 0300 0315 0062;
+0061 059A 0316 302A 1B6C 0062;0061 302A 0316 1B6C 059A 0062;0061 302A 0316 1B6C 059A 0062;0061 302A 0316 1B6C 059A 0062;0061 302A 0316 1B6C 059A 0062;
+0061 1B6C 059A 0316 302A 0062;0061 302A 1B6C 0316 059A 0062;0061 302A 1B6C 0316 059A 0062;0061 302A 1B6C 0316 059A 0062;0061 302A 1B6C 0316 059A 0062;
+0061 0315 0300 05AE 1B6D 0062;00E0 05AE 1B6D 0315 0062;0061 05AE 0300 1B6D 0315 0062;00E0 05AE 1B6D 0315 0062;0061 05AE 0300 1B6D 0315 0062;
+0061 1B6D 0315 0300 05AE 0062;0061 05AE 1B6D 0300 0315 0062;0061 05AE 1B6D 0300 0315 0062;0061 05AE 1B6D 0300 0315 0062;0061 05AE 1B6D 0300 0315 0062;
+0061 0315 0300 05AE 1B6E 0062;00E0 05AE 1B6E 0315 0062;0061 05AE 0300 1B6E 0315 0062;00E0 05AE 1B6E 0315 0062;0061 05AE 0300 1B6E 0315 0062;
+0061 1B6E 0315 0300 05AE 0062;0061 05AE 1B6E 0300 0315 0062;0061 05AE 1B6E 0300 0315 0062;0061 05AE 1B6E 0300 0315 0062;0061 05AE 1B6E 0300 0315 0062;
+0061 0315 0300 05AE 1B6F 0062;00E0 05AE 1B6F 0315 0062;0061 05AE 0300 1B6F 0315 0062;00E0 05AE 1B6F 0315 0062;0061 05AE 0300 1B6F 0315 0062;
+0061 1B6F 0315 0300 05AE 0062;0061 05AE 1B6F 0300 0315 0062;0061 05AE 1B6F 0300 0315 0062;0061 05AE 1B6F 0300 0315 0062;0061 05AE 1B6F 0300 0315 0062;
+0061 0315 0300 05AE 1B70 0062;00E0 05AE 1B70 0315 0062;0061 05AE 0300 1B70 0315 0062;00E0 05AE 1B70 0315 0062;0061 05AE 0300 1B70 0315 0062;
+0061 1B70 0315 0300 05AE 0062;0061 05AE 1B70 0300 0315 0062;0061 05AE 1B70 0300 0315 0062;0061 05AE 1B70 0300 0315 0062;0061 05AE 1B70 0300 0315 0062;
+0061 0315 0300 05AE 1B71 0062;00E0 05AE 1B71 0315 0062;0061 05AE 0300 1B71 0315 0062;00E0 05AE 1B71 0315 0062;0061 05AE 0300 1B71 0315 0062;
+0061 1B71 0315 0300 05AE 0062;0061 05AE 1B71 0300 0315 0062;0061 05AE 1B71 0300 0315 0062;0061 05AE 1B71 0300 0315 0062;0061 05AE 1B71 0300 0315 0062;
+0061 0315 0300 05AE 1B72 0062;00E0 05AE 1B72 0315 0062;0061 05AE 0300 1B72 0315 0062;00E0 05AE 1B72 0315 0062;0061 05AE 0300 1B72 0315 0062;
+0061 1B72 0315 0300 05AE 0062;0061 05AE 1B72 0300 0315 0062;0061 05AE 1B72 0300 0315 0062;0061 05AE 1B72 0300 0315 0062;0061 05AE 1B72 0300 0315 0062;
+0061 0315 0300 05AE 1B73 0062;00E0 05AE 1B73 0315 0062;0061 05AE 0300 1B73 0315 0062;00E0 05AE 1B73 0315 0062;0061 05AE 0300 1B73 0315 0062;
+0061 1B73 0315 0300 05AE 0062;0061 05AE 1B73 0300 0315 0062;0061 05AE 1B73 0300 0315 0062;0061 05AE 1B73 0300 0315 0062;0061 05AE 1B73 0300 0315 0062;
+0061 05B0 094D 3099 1BAA 0062;0061 3099 094D 1BAA 05B0 0062;0061 3099 094D 1BAA 05B0 0062;0061 3099 094D 1BAA 05B0 0062;0061 3099 094D 1BAA 05B0 0062;
+0061 1BAA 05B0 094D 3099 0062;0061 3099 1BAA 094D 05B0 0062;0061 3099 1BAA 094D 05B0 0062;0061 3099 1BAA 094D 05B0 0062;0061 3099 1BAA 094D 05B0 0062;
+0061 3099 093C 0334 1C37 0062;0061 0334 093C 1C37 3099 0062;0061 0334 093C 1C37 3099 0062;0061 0334 093C 1C37 3099 0062;0061 0334 093C 1C37 3099 0062;
+0061 1C37 3099 093C 0334 0062;0061 0334 1C37 093C 3099 0062;0061 0334 1C37 093C 3099 0062;0061 0334 1C37 093C 3099 0062;0061 0334 1C37 093C 3099 0062;
+0061 0315 0300 05AE 1DC0 0062;00E0 05AE 1DC0 0315 0062;0061 05AE 0300 1DC0 0315 0062;00E0 05AE 1DC0 0315 0062;0061 05AE 0300 1DC0 0315 0062;
+0061 1DC0 0315 0300 05AE 0062;0061 05AE 1DC0 0300 0315 0062;0061 05AE 1DC0 0300 0315 0062;0061 05AE 1DC0 0300 0315 0062;0061 05AE 1DC0 0300 0315 0062;
+0061 0315 0300 05AE 1DC1 0062;00E0 05AE 1DC1 0315 0062;0061 05AE 0300 1DC1 0315 0062;00E0 05AE 1DC1 0315 0062;0061 05AE 0300 1DC1 0315 0062;
+0061 1DC1 0315 0300 05AE 0062;0061 05AE 1DC1 0300 0315 0062;0061 05AE 1DC1 0300 0315 0062;0061 05AE 1DC1 0300 0315 0062;0061 05AE 1DC1 0300 0315 0062;
+0061 059A 0316 302A 1DC2 0062;0061 302A 0316 1DC2 059A 0062;0061 302A 0316 1DC2 059A 0062;0061 302A 0316 1DC2 059A 0062;0061 302A 0316 1DC2 059A 0062;
+0061 1DC2 059A 0316 302A 0062;0061 302A 1DC2 0316 059A 0062;0061 302A 1DC2 0316 059A 0062;0061 302A 1DC2 0316 059A 0062;0061 302A 1DC2 0316 059A 0062;
+0061 0315 0300 05AE 1DC3 0062;00E0 05AE 1DC3 0315 0062;0061 05AE 0300 1DC3 0315 0062;00E0 05AE 1DC3 0315 0062;0061 05AE 0300 1DC3 0315 0062;
+0061 1DC3 0315 0300 05AE 0062;0061 05AE 1DC3 0300 0315 0062;0061 05AE 1DC3 0300 0315 0062;0061 05AE 1DC3 0300 0315 0062;0061 05AE 1DC3 0300 0315 0062;
+0061 0315 0300 05AE 1DC4 0062;00E0 05AE 1DC4 0315 0062;0061 05AE 0300 1DC4 0315 0062;00E0 05AE 1DC4 0315 0062;0061 05AE 0300 1DC4 0315 0062;
+0061 1DC4 0315 0300 05AE 0062;0061 05AE 1DC4 0300 0315 0062;0061 05AE 1DC4 0300 0315 0062;0061 05AE 1DC4 0300 0315 0062;0061 05AE 1DC4 0300 0315 0062;
+0061 0315 0300 05AE 1DC5 0062;00E0 05AE 1DC5 0315 0062;0061 05AE 0300 1DC5 0315 0062;00E0 05AE 1DC5 0315 0062;0061 05AE 0300 1DC5 0315 0062;
+0061 1DC5 0315 0300 05AE 0062;0061 05AE 1DC5 0300 0315 0062;0061 05AE 1DC5 0300 0315 0062;0061 05AE 1DC5 0300 0315 0062;0061 05AE 1DC5 0300 0315 0062;
+0061 0315 0300 05AE 1DC6 0062;00E0 05AE 1DC6 0315 0062;0061 05AE 0300 1DC6 0315 0062;00E0 05AE 1DC6 0315 0062;0061 05AE 0300 1DC6 0315 0062;
+0061 1DC6 0315 0300 05AE 0062;0061 05AE 1DC6 0300 0315 0062;0061 05AE 1DC6 0300 0315 0062;0061 05AE 1DC6 0300 0315 0062;0061 05AE 1DC6 0300 0315 0062;
+0061 0315 0300 05AE 1DC7 0062;00E0 05AE 1DC7 0315 0062;0061 05AE 0300 1DC7 0315 0062;00E0 05AE 1DC7 0315 0062;0061 05AE 0300 1DC7 0315 0062;
+0061 1DC7 0315 0300 05AE 0062;0061 05AE 1DC7 0300 0315 0062;0061 05AE 1DC7 0300 0315 0062;0061 05AE 1DC7 0300 0315 0062;0061 05AE 1DC7 0300 0315 0062;
+0061 0315 0300 05AE 1DC8 0062;00E0 05AE 1DC8 0315 0062;0061 05AE 0300 1DC8 0315 0062;00E0 05AE 1DC8 0315 0062;0061 05AE 0300 1DC8 0315 0062;
+0061 1DC8 0315 0300 05AE 0062;0061 05AE 1DC8 0300 0315 0062;0061 05AE 1DC8 0300 0315 0062;0061 05AE 1DC8 0300 0315 0062;0061 05AE 1DC8 0300 0315 0062;
+0061 0315 0300 05AE 1DC9 0062;00E0 05AE 1DC9 0315 0062;0061 05AE 0300 1DC9 0315 0062;00E0 05AE 1DC9 0315 0062;0061 05AE 0300 1DC9 0315 0062;
+0061 1DC9 0315 0300 05AE 0062;0061 05AE 1DC9 0300 0315 0062;0061 05AE 1DC9 0300 0315 0062;0061 05AE 1DC9 0300 0315 0062;0061 05AE 1DC9 0300 0315 0062;
+0061 059A 0316 302A 1DCA 0062;0061 302A 0316 1DCA 059A 0062;0061 302A 0316 1DCA 059A 0062;0061 302A 0316 1DCA 059A 0062;0061 302A 0316 1DCA 059A 0062;
+0061 1DCA 059A 0316 302A 0062;0061 302A 1DCA 0316 059A 0062;0061 302A 1DCA 0316 059A 0062;0061 302A 1DCA 0316 059A 0062;0061 302A 1DCA 0316 059A 0062;
+0061 0315 0300 05AE 1DCB 0062;00E0 05AE 1DCB 0315 0062;0061 05AE 0300 1DCB 0315 0062;00E0 05AE 1DCB 0315 0062;0061 05AE 0300 1DCB 0315 0062;
+0061 1DCB 0315 0300 05AE 0062;0061 05AE 1DCB 0300 0315 0062;0061 05AE 1DCB 0300 0315 0062;0061 05AE 1DCB 0300 0315 0062;0061 05AE 1DCB 0300 0315 0062;
+0061 0315 0300 05AE 1DCC 0062;00E0 05AE 1DCC 0315 0062;0061 05AE 0300 1DCC 0315 0062;00E0 05AE 1DCC 0315 0062;0061 05AE 0300 1DCC 0315 0062;
+0061 1DCC 0315 0300 05AE 0062;0061 05AE 1DCC 0300 0315 0062;0061 05AE 1DCC 0300 0315 0062;0061 05AE 1DCC 0300 0315 0062;0061 05AE 1DCC 0300 0315 0062;
+0061 0345 035D 035C 1DCD 0062;0061 035C 035D 1DCD 0345 0062;0061 035C 035D 1DCD 0345 0062;0061 035C 035D 1DCD 0345 0062;0061 035C 035D 1DCD 0345 0062;
+0061 1DCD 0345 035D 035C 0062;0061 035C 1DCD 035D 0345 0062;0061 035C 1DCD 035D 0345 0062;0061 035C 1DCD 035D 0345 0062;0061 035C 1DCD 035D 0345 0062;
+0061 031B 1DCE 0321 1DCE 0062;0061 0321 1DCE 1DCE 031B 0062;0061 0321 1DCE 1DCE 031B 0062;0061 0321 1DCE 1DCE 031B 0062;0061 0321 1DCE 1DCE 031B 0062;
+0061 1DCE 031B 1DCE 0321 0062;0061 0321 1DCE 1DCE 031B 0062;0061 0321 1DCE 1DCE 031B 0062;0061 0321 1DCE 1DCE 031B 0062;0061 0321 1DCE 1DCE 031B 0062;
+0061 059A 0316 302A 1DCF 0062;0061 302A 0316 1DCF 059A 0062;0061 302A 0316 1DCF 059A 0062;0061 302A 0316 1DCF 059A 0062;0061 302A 0316 1DCF 059A 0062;
+0061 1DCF 059A 0316 302A 0062;0061 302A 1DCF 0316 059A 0062;0061 302A 1DCF 0316 059A 0062;0061 302A 1DCF 0316 059A 0062;0061 302A 1DCF 0316 059A 0062;
+0061 1DCE 0321 0F74 1DD0 0062;0061 0F74 0321 1DD0 1DCE 0062;0061 0F74 0321 1DD0 1DCE 0062;0061 0F74 0321 1DD0 1DCE 0062;0061 0F74 0321 1DD0 1DCE 0062;
+0061 1DD0 1DCE 0321 0F74 0062;0061 0F74 1DD0 0321 1DCE 0062;0061 0F74 1DD0 0321 1DCE 0062;0061 0F74 1DD0 0321 1DCE 0062;0061 0F74 1DD0 0321 1DCE 0062;
+0061 0315 0300 05AE 1DD1 0062;00E0 05AE 1DD1 0315 0062;0061 05AE 0300 1DD1 0315 0062;00E0 05AE 1DD1 0315 0062;0061 05AE 0300 1DD1 0315 0062;
+0061 1DD1 0315 0300 05AE 0062;0061 05AE 1DD1 0300 0315 0062;0061 05AE 1DD1 0300 0315 0062;0061 05AE 1DD1 0300 0315 0062;0061 05AE 1DD1 0300 0315 0062;
+0061 0315 0300 05AE 1DD2 0062;00E0 05AE 1DD2 0315 0062;0061 05AE 0300 1DD2 0315 0062;00E0 05AE 1DD2 0315 0062;0061 05AE 0300 1DD2 0315 0062;
+0061 1DD2 0315 0300 05AE 0062;0061 05AE 1DD2 0300 0315 0062;0061 05AE 1DD2 0300 0315 0062;0061 05AE 1DD2 0300 0315 0062;0061 05AE 1DD2 0300 0315 0062;
+0061 0315 0300 05AE 1DD3 0062;00E0 05AE 1DD3 0315 0062;0061 05AE 0300 1DD3 0315 0062;00E0 05AE 1DD3 0315 0062;0061 05AE 0300 1DD3 0315 0062;
+0061 1DD3 0315 0300 05AE 0062;0061 05AE 1DD3 0300 0315 0062;0061 05AE 1DD3 0300 0315 0062;0061 05AE 1DD3 0300 0315 0062;0061 05AE 1DD3 0300 0315 0062;
+0061 0315 0300 05AE 1DD4 0062;00E0 05AE 1DD4 0315 0062;0061 05AE 0300 1DD4 0315 0062;00E0 05AE 1DD4 0315 0062;0061 05AE 0300 1DD4 0315 0062;
+0061 1DD4 0315 0300 05AE 0062;0061 05AE 1DD4 0300 0315 0062;0061 05AE 1DD4 0300 0315 0062;0061 05AE 1DD4 0300 0315 0062;0061 05AE 1DD4 0300 0315 0062;
+0061 0315 0300 05AE 1DD5 0062;00E0 05AE 1DD5 0315 0062;0061 05AE 0300 1DD5 0315 0062;00E0 05AE 1DD5 0315 0062;0061 05AE 0300 1DD5 0315 0062;
+0061 1DD5 0315 0300 05AE 0062;0061 05AE 1DD5 0300 0315 0062;0061 05AE 1DD5 0300 0315 0062;0061 05AE 1DD5 0300 0315 0062;0061 05AE 1DD5 0300 0315 0062;
+0061 0315 0300 05AE 1DD6 0062;00E0 05AE 1DD6 0315 0062;0061 05AE 0300 1DD6 0315 0062;00E0 05AE 1DD6 0315 0062;0061 05AE 0300 1DD6 0315 0062;
+0061 1DD6 0315 0300 05AE 0062;0061 05AE 1DD6 0300 0315 0062;0061 05AE 1DD6 0300 0315 0062;0061 05AE 1DD6 0300 0315 0062;0061 05AE 1DD6 0300 0315 0062;
+0061 0315 0300 05AE 1DD7 0062;00E0 05AE 1DD7 0315 0062;0061 05AE 0300 1DD7 0315 0062;00E0 05AE 1DD7 0315 0062;0061 05AE 0300 1DD7 0315 0062;
+0061 1DD7 0315 0300 05AE 0062;0061 05AE 1DD7 0300 0315 0062;0061 05AE 1DD7 0300 0315 0062;0061 05AE 1DD7 0300 0315 0062;0061 05AE 1DD7 0300 0315 0062;
+0061 0315 0300 05AE 1DD8 0062;00E0 05AE 1DD8 0315 0062;0061 05AE 0300 1DD8 0315 0062;00E0 05AE 1DD8 0315 0062;0061 05AE 0300 1DD8 0315 0062;
+0061 1DD8 0315 0300 05AE 0062;0061 05AE 1DD8 0300 0315 0062;0061 05AE 1DD8 0300 0315 0062;0061 05AE 1DD8 0300 0315 0062;0061 05AE 1DD8 0300 0315 0062;
+0061 0315 0300 05AE 1DD9 0062;00E0 05AE 1DD9 0315 0062;0061 05AE 0300 1DD9 0315 0062;00E0 05AE 1DD9 0315 0062;0061 05AE 0300 1DD9 0315 0062;
+0061 1DD9 0315 0300 05AE 0062;0061 05AE 1DD9 0300 0315 0062;0061 05AE 1DD9 0300 0315 0062;0061 05AE 1DD9 0300 0315 0062;0061 05AE 1DD9 0300 0315 0062;
+0061 0315 0300 05AE 1DDA 0062;00E0 05AE 1DDA 0315 0062;0061 05AE 0300 1DDA 0315 0062;00E0 05AE 1DDA 0315 0062;0061 05AE 0300 1DDA 0315 0062;
+0061 1DDA 0315 0300 05AE 0062;0061 05AE 1DDA 0300 0315 0062;0061 05AE 1DDA 0300 0315 0062;0061 05AE 1DDA 0300 0315 0062;0061 05AE 1DDA 0300 0315 0062;
+0061 0315 0300 05AE 1DDB 0062;00E0 05AE 1DDB 0315 0062;0061 05AE 0300 1DDB 0315 0062;00E0 05AE 1DDB 0315 0062;0061 05AE 0300 1DDB 0315 0062;
+0061 1DDB 0315 0300 05AE 0062;0061 05AE 1DDB 0300 0315 0062;0061 05AE 1DDB 0300 0315 0062;0061 05AE 1DDB 0300 0315 0062;0061 05AE 1DDB 0300 0315 0062;
+0061 0315 0300 05AE 1DDC 0062;00E0 05AE 1DDC 0315 0062;0061 05AE 0300 1DDC 0315 0062;00E0 05AE 1DDC 0315 0062;0061 05AE 0300 1DDC 0315 0062;
+0061 1DDC 0315 0300 05AE 0062;0061 05AE 1DDC 0300 0315 0062;0061 05AE 1DDC 0300 0315 0062;0061 05AE 1DDC 0300 0315 0062;0061 05AE 1DDC 0300 0315 0062;
+0061 0315 0300 05AE 1DDD 0062;00E0 05AE 1DDD 0315 0062;0061 05AE 0300 1DDD 0315 0062;00E0 05AE 1DDD 0315 0062;0061 05AE 0300 1DDD 0315 0062;
+0061 1DDD 0315 0300 05AE 0062;0061 05AE 1DDD 0300 0315 0062;0061 05AE 1DDD 0300 0315 0062;0061 05AE 1DDD 0300 0315 0062;0061 05AE 1DDD 0300 0315 0062;
+0061 0315 0300 05AE 1DDE 0062;00E0 05AE 1DDE 0315 0062;0061 05AE 0300 1DDE 0315 0062;00E0 05AE 1DDE 0315 0062;0061 05AE 0300 1DDE 0315 0062;
+0061 1DDE 0315 0300 05AE 0062;0061 05AE 1DDE 0300 0315 0062;0061 05AE 1DDE 0300 0315 0062;0061 05AE 1DDE 0300 0315 0062;0061 05AE 1DDE 0300 0315 0062;
+0061 0315 0300 05AE 1DDF 0062;00E0 05AE 1DDF 0315 0062;0061 05AE 0300 1DDF 0315 0062;00E0 05AE 1DDF 0315 0062;0061 05AE 0300 1DDF 0315 0062;
+0061 1DDF 0315 0300 05AE 0062;0061 05AE 1DDF 0300 0315 0062;0061 05AE 1DDF 0300 0315 0062;0061 05AE 1DDF 0300 0315 0062;0061 05AE 1DDF 0300 0315 0062;
+0061 0315 0300 05AE 1DE0 0062;00E0 05AE 1DE0 0315 0062;0061 05AE 0300 1DE0 0315 0062;00E0 05AE 1DE0 0315 0062;0061 05AE 0300 1DE0 0315 0062;
+0061 1DE0 0315 0300 05AE 0062;0061 05AE 1DE0 0300 0315 0062;0061 05AE 1DE0 0300 0315 0062;0061 05AE 1DE0 0300 0315 0062;0061 05AE 1DE0 0300 0315 0062;
+0061 0315 0300 05AE 1DE1 0062;00E0 05AE 1DE1 0315 0062;0061 05AE 0300 1DE1 0315 0062;00E0 05AE 1DE1 0315 0062;0061 05AE 0300 1DE1 0315 0062;
+0061 1DE1 0315 0300 05AE 0062;0061 05AE 1DE1 0300 0315 0062;0061 05AE 1DE1 0300 0315 0062;0061 05AE 1DE1 0300 0315 0062;0061 05AE 1DE1 0300 0315 0062;
+0061 0315 0300 05AE 1DE2 0062;00E0 05AE 1DE2 0315 0062;0061 05AE 0300 1DE2 0315 0062;00E0 05AE 1DE2 0315 0062;0061 05AE 0300 1DE2 0315 0062;
+0061 1DE2 0315 0300 05AE 0062;0061 05AE 1DE2 0300 0315 0062;0061 05AE 1DE2 0300 0315 0062;0061 05AE 1DE2 0300 0315 0062;0061 05AE 1DE2 0300 0315 0062;
+0061 0315 0300 05AE 1DE3 0062;00E0 05AE 1DE3 0315 0062;0061 05AE 0300 1DE3 0315 0062;00E0 05AE 1DE3 0315 0062;0061 05AE 0300 1DE3 0315 0062;
+0061 1DE3 0315 0300 05AE 0062;0061 05AE 1DE3 0300 0315 0062;0061 05AE 1DE3 0300 0315 0062;0061 05AE 1DE3 0300 0315 0062;0061 05AE 1DE3 0300 0315 0062;
+0061 0315 0300 05AE 1DE4 0062;00E0 05AE 1DE4 0315 0062;0061 05AE 0300 1DE4 0315 0062;00E0 05AE 1DE4 0315 0062;0061 05AE 0300 1DE4 0315 0062;
+0061 1DE4 0315 0300 05AE 0062;0061 05AE 1DE4 0300 0315 0062;0061 05AE 1DE4 0300 0315 0062;0061 05AE 1DE4 0300 0315 0062;0061 05AE 1DE4 0300 0315 0062;
+0061 0315 0300 05AE 1DE5 0062;00E0 05AE 1DE5 0315 0062;0061 05AE 0300 1DE5 0315 0062;00E0 05AE 1DE5 0315 0062;0061 05AE 0300 1DE5 0315 0062;
+0061 1DE5 0315 0300 05AE 0062;0061 05AE 1DE5 0300 0315 0062;0061 05AE 1DE5 0300 0315 0062;0061 05AE 1DE5 0300 0315 0062;0061 05AE 1DE5 0300 0315 0062;
+0061 0315 0300 05AE 1DE6 0062;00E0 05AE 1DE6 0315 0062;0061 05AE 0300 1DE6 0315 0062;00E0 05AE 1DE6 0315 0062;0061 05AE 0300 1DE6 0315 0062;
+0061 1DE6 0315 0300 05AE 0062;0061 05AE 1DE6 0300 0315 0062;0061 05AE 1DE6 0300 0315 0062;0061 05AE 1DE6 0300 0315 0062;0061 05AE 1DE6 0300 0315 0062;
+0061 0315 0300 05AE 1DFE 0062;00E0 05AE 1DFE 0315 0062;0061 05AE 0300 1DFE 0315 0062;00E0 05AE 1DFE 0315 0062;0061 05AE 0300 1DFE 0315 0062;
+0061 1DFE 0315 0300 05AE 0062;0061 05AE 1DFE 0300 0315 0062;0061 05AE 1DFE 0300 0315 0062;0061 05AE 1DFE 0300 0315 0062;0061 05AE 1DFE 0300 0315 0062;
+0061 059A 0316 302A 1DFF 0062;0061 302A 0316 1DFF 059A 0062;0061 302A 0316 1DFF 059A 0062;0061 302A 0316 1DFF 059A 0062;0061 302A 0316 1DFF 059A 0062;
+0061 1DFF 059A 0316 302A 0062;0061 302A 1DFF 0316 059A 0062;0061 302A 1DFF 0316 059A 0062;0061 302A 1DFF 0316 059A 0062;0061 302A 1DFF 0316 059A 0062;
+0061 0315 0300 05AE 20D0 0062;00E0 05AE 20D0 0315 0062;0061 05AE 0300 20D0 0315 0062;00E0 05AE 20D0 0315 0062;0061 05AE 0300 20D0 0315 0062;
+0061 20D0 0315 0300 05AE 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;
+0061 0315 0300 05AE 20D1 0062;00E0 05AE 20D1 0315 0062;0061 05AE 0300 20D1 0315 0062;00E0 05AE 20D1 0315 0062;0061 05AE 0300 20D1 0315 0062;
+0061 20D1 0315 0300 05AE 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;
+0061 093C 0334 20D2 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;
+0061 20D2 093C 0334 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;
+0061 093C 0334 20D3 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;
+0061 20D3 093C 0334 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;
+0061 0315 0300 05AE 20D4 0062;00E0 05AE 20D4 0315 0062;0061 05AE 0300 20D4 0315 0062;00E0 05AE 20D4 0315 0062;0061 05AE 0300 20D4 0315 0062;
+0061 20D4 0315 0300 05AE 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;
+0061 0315 0300 05AE 20D5 0062;00E0 05AE 20D5 0315 0062;0061 05AE 0300 20D5 0315 0062;00E0 05AE 20D5 0315 0062;0061 05AE 0300 20D5 0315 0062;
+0061 20D5 0315 0300 05AE 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;
+0061 0315 0300 05AE 20D6 0062;00E0 05AE 20D6 0315 0062;0061 05AE 0300 20D6 0315 0062;00E0 05AE 20D6 0315 0062;0061 05AE 0300 20D6 0315 0062;
+0061 20D6 0315 0300 05AE 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;
+0061 0315 0300 05AE 20D7 0062;00E0 05AE 20D7 0315 0062;0061 05AE 0300 20D7 0315 0062;00E0 05AE 20D7 0315 0062;0061 05AE 0300 20D7 0315 0062;
+0061 20D7 0315 0300 05AE 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;
+0061 093C 0334 20D8 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;
+0061 20D8 093C 0334 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;
+0061 093C 0334 20D9 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;
+0061 20D9 093C 0334 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;
+0061 093C 0334 20DA 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;
+0061 20DA 093C 0334 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;
+0061 0315 0300 05AE 20DB 0062;00E0 05AE 20DB 0315 0062;0061 05AE 0300 20DB 0315 0062;00E0 05AE 20DB 0315 0062;0061 05AE 0300 20DB 0315 0062;
+0061 20DB 0315 0300 05AE 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;
+0061 0315 0300 05AE 20DC 0062;00E0 05AE 20DC 0315 0062;0061 05AE 0300 20DC 0315 0062;00E0 05AE 20DC 0315 0062;0061 05AE 0300 20DC 0315 0062;
+0061 20DC 0315 0300 05AE 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;
+0061 0315 0300 05AE 20E1 0062;00E0 05AE 20E1 0315 0062;0061 05AE 0300 20E1 0315 0062;00E0 05AE 20E1 0315 0062;0061 05AE 0300 20E1 0315 0062;
+0061 20E1 0315 0300 05AE 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;
+0061 093C 0334 20E5 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;
+0061 20E5 093C 0334 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;
+0061 093C 0334 20E6 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;
+0061 20E6 093C 0334 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;
+0061 0315 0300 05AE 20E7 0062;00E0 05AE 20E7 0315 0062;0061 05AE 0300 20E7 0315 0062;00E0 05AE 20E7 0315 0062;0061 05AE 0300 20E7 0315 0062;
+0061 20E7 0315 0300 05AE 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;
+0061 059A 0316 302A 20E8 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;
+0061 20E8 059A 0316 302A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;
+0061 0315 0300 05AE 20E9 0062;00E0 05AE 20E9 0315 0062;0061 05AE 0300 20E9 0315 0062;00E0 05AE 20E9 0315 0062;0061 05AE 0300 20E9 0315 0062;
+0061 20E9 0315 0300 05AE 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;
+0061 093C 0334 20EA 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;
+0061 20EA 093C 0334 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;
+0061 093C 0334 20EB 0062;0061 0334 20EB 093C 0062;0061 0334 20EB 093C 0062;0061 0334 20EB 093C 0062;0061 0334 20EB 093C 0062;
+0061 20EB 093C 0334 0062;0061 20EB 0334 093C 0062;0061 20EB 0334 093C 0062;0061 20EB 0334 093C 0062;0061 20EB 0334 093C 0062;
+0061 059A 0316 302A 20EC 0062;0061 302A 0316 20EC 059A 0062;0061 302A 0316 20EC 059A 0062;0061 302A 0316 20EC 059A 0062;0061 302A 0316 20EC 059A 0062;
+0061 20EC 059A 0316 302A 0062;0061 302A 20EC 0316 059A 0062;0061 302A 20EC 0316 059A 0062;0061 302A 20EC 0316 059A 0062;0061 302A 20EC 0316 059A 0062;
+0061 059A 0316 302A 20ED 0062;0061 302A 0316 20ED 059A 0062;0061 302A 0316 20ED 059A 0062;0061 302A 0316 20ED 059A 0062;0061 302A 0316 20ED 059A 0062;
+0061 20ED 059A 0316 302A 0062;0061 302A 20ED 0316 059A 0062;0061 302A 20ED 0316 059A 0062;0061 302A 20ED 0316 059A 0062;0061 302A 20ED 0316 059A 0062;
+0061 059A 0316 302A 20EE 0062;0061 302A 0316 20EE 059A 0062;0061 302A 0316 20EE 059A 0062;0061 302A 0316 20EE 059A 0062;0061 302A 0316 20EE 059A 0062;
+0061 20EE 059A 0316 302A 0062;0061 302A 20EE 0316 059A 0062;0061 302A 20EE 0316 059A 0062;0061 302A 20EE 0316 059A 0062;0061 302A 20EE 0316 059A 0062;
+0061 059A 0316 302A 20EF 0062;0061 302A 0316 20EF 059A 0062;0061 302A 0316 20EF 059A 0062;0061 302A 0316 20EF 059A 0062;0061 302A 0316 20EF 059A 0062;
+0061 20EF 059A 0316 302A 0062;0061 302A 20EF 0316 059A 0062;0061 302A 20EF 0316 059A 0062;0061 302A 20EF 0316 059A 0062;0061 302A 20EF 0316 059A 0062;
+0061 0315 0300 05AE 20F0 0062;00E0 05AE 20F0 0315 0062;0061 05AE 0300 20F0 0315 0062;00E0 05AE 20F0 0315 0062;0061 05AE 0300 20F0 0315 0062;
+0061 20F0 0315 0300 05AE 0062;0061 05AE 20F0 0300 0315 0062;0061 05AE 20F0 0300 0315 0062;0061 05AE 20F0 0300 0315 0062;0061 05AE 20F0 0300 0315 0062;
+0061 0315 0300 05AE 2DE0 0062;00E0 05AE 2DE0 0315 0062;0061 05AE 0300 2DE0 0315 0062;00E0 05AE 2DE0 0315 0062;0061 05AE 0300 2DE0 0315 0062;
+0061 2DE0 0315 0300 05AE 0062;0061 05AE 2DE0 0300 0315 0062;0061 05AE 2DE0 0300 0315 0062;0061 05AE 2DE0 0300 0315 0062;0061 05AE 2DE0 0300 0315 0062;
+0061 0315 0300 05AE 2DE1 0062;00E0 05AE 2DE1 0315 0062;0061 05AE 0300 2DE1 0315 0062;00E0 05AE 2DE1 0315 0062;0061 05AE 0300 2DE1 0315 0062;
+0061 2DE1 0315 0300 05AE 0062;0061 05AE 2DE1 0300 0315 0062;0061 05AE 2DE1 0300 0315 0062;0061 05AE 2DE1 0300 0315 0062;0061 05AE 2DE1 0300 0315 0062;
+0061 0315 0300 05AE 2DE2 0062;00E0 05AE 2DE2 0315 0062;0061 05AE 0300 2DE2 0315 0062;00E0 05AE 2DE2 0315 0062;0061 05AE 0300 2DE2 0315 0062;
+0061 2DE2 0315 0300 05AE 0062;0061 05AE 2DE2 0300 0315 0062;0061 05AE 2DE2 0300 0315 0062;0061 05AE 2DE2 0300 0315 0062;0061 05AE 2DE2 0300 0315 0062;
+0061 0315 0300 05AE 2DE3 0062;00E0 05AE 2DE3 0315 0062;0061 05AE 0300 2DE3 0315 0062;00E0 05AE 2DE3 0315 0062;0061 05AE 0300 2DE3 0315 0062;
+0061 2DE3 0315 0300 05AE 0062;0061 05AE 2DE3 0300 0315 0062;0061 05AE 2DE3 0300 0315 0062;0061 05AE 2DE3 0300 0315 0062;0061 05AE 2DE3 0300 0315 0062;
+0061 0315 0300 05AE 2DE4 0062;00E0 05AE 2DE4 0315 0062;0061 05AE 0300 2DE4 0315 0062;00E0 05AE 2DE4 0315 0062;0061 05AE 0300 2DE4 0315 0062;
+0061 2DE4 0315 0300 05AE 0062;0061 05AE 2DE4 0300 0315 0062;0061 05AE 2DE4 0300 0315 0062;0061 05AE 2DE4 0300 0315 0062;0061 05AE 2DE4 0300 0315 0062;
+0061 0315 0300 05AE 2DE5 0062;00E0 05AE 2DE5 0315 0062;0061 05AE 0300 2DE5 0315 0062;00E0 05AE 2DE5 0315 0062;0061 05AE 0300 2DE5 0315 0062;
+0061 2DE5 0315 0300 05AE 0062;0061 05AE 2DE5 0300 0315 0062;0061 05AE 2DE5 0300 0315 0062;0061 05AE 2DE5 0300 0315 0062;0061 05AE 2DE5 0300 0315 0062;
+0061 0315 0300 05AE 2DE6 0062;00E0 05AE 2DE6 0315 0062;0061 05AE 0300 2DE6 0315 0062;00E0 05AE 2DE6 0315 0062;0061 05AE 0300 2DE6 0315 0062;
+0061 2DE6 0315 0300 05AE 0062;0061 05AE 2DE6 0300 0315 0062;0061 05AE 2DE6 0300 0315 0062;0061 05AE 2DE6 0300 0315 0062;0061 05AE 2DE6 0300 0315 0062;
+0061 0315 0300 05AE 2DE7 0062;00E0 05AE 2DE7 0315 0062;0061 05AE 0300 2DE7 0315 0062;00E0 05AE 2DE7 0315 0062;0061 05AE 0300 2DE7 0315 0062;
+0061 2DE7 0315 0300 05AE 0062;0061 05AE 2DE7 0300 0315 0062;0061 05AE 2DE7 0300 0315 0062;0061 05AE 2DE7 0300 0315 0062;0061 05AE 2DE7 0300 0315 0062;
+0061 0315 0300 05AE 2DE8 0062;00E0 05AE 2DE8 0315 0062;0061 05AE 0300 2DE8 0315 0062;00E0 05AE 2DE8 0315 0062;0061 05AE 0300 2DE8 0315 0062;
+0061 2DE8 0315 0300 05AE 0062;0061 05AE 2DE8 0300 0315 0062;0061 05AE 2DE8 0300 0315 0062;0061 05AE 2DE8 0300 0315 0062;0061 05AE 2DE8 0300 0315 0062;
+0061 0315 0300 05AE 2DE9 0062;00E0 05AE 2DE9 0315 0062;0061 05AE 0300 2DE9 0315 0062;00E0 05AE 2DE9 0315 0062;0061 05AE 0300 2DE9 0315 0062;
+0061 2DE9 0315 0300 05AE 0062;0061 05AE 2DE9 0300 0315 0062;0061 05AE 2DE9 0300 0315 0062;0061 05AE 2DE9 0300 0315 0062;0061 05AE 2DE9 0300 0315 0062;
+0061 0315 0300 05AE 2DEA 0062;00E0 05AE 2DEA 0315 0062;0061 05AE 0300 2DEA 0315 0062;00E0 05AE 2DEA 0315 0062;0061 05AE 0300 2DEA 0315 0062;
+0061 2DEA 0315 0300 05AE 0062;0061 05AE 2DEA 0300 0315 0062;0061 05AE 2DEA 0300 0315 0062;0061 05AE 2DEA 0300 0315 0062;0061 05AE 2DEA 0300 0315 0062;
+0061 0315 0300 05AE 2DEB 0062;00E0 05AE 2DEB 0315 0062;0061 05AE 0300 2DEB 0315 0062;00E0 05AE 2DEB 0315 0062;0061 05AE 0300 2DEB 0315 0062;
+0061 2DEB 0315 0300 05AE 0062;0061 05AE 2DEB 0300 0315 0062;0061 05AE 2DEB 0300 0315 0062;0061 05AE 2DEB 0300 0315 0062;0061 05AE 2DEB 0300 0315 0062;
+0061 0315 0300 05AE 2DEC 0062;00E0 05AE 2DEC 0315 0062;0061 05AE 0300 2DEC 0315 0062;00E0 05AE 2DEC 0315 0062;0061 05AE 0300 2DEC 0315 0062;
+0061 2DEC 0315 0300 05AE 0062;0061 05AE 2DEC 0300 0315 0062;0061 05AE 2DEC 0300 0315 0062;0061 05AE 2DEC 0300 0315 0062;0061 05AE 2DEC 0300 0315 0062;
+0061 0315 0300 05AE 2DED 0062;00E0 05AE 2DED 0315 0062;0061 05AE 0300 2DED 0315 0062;00E0 05AE 2DED 0315 0062;0061 05AE 0300 2DED 0315 0062;
+0061 2DED 0315 0300 05AE 0062;0061 05AE 2DED 0300 0315 0062;0061 05AE 2DED 0300 0315 0062;0061 05AE 2DED 0300 0315 0062;0061 05AE 2DED 0300 0315 0062;
+0061 0315 0300 05AE 2DEE 0062;00E0 05AE 2DEE 0315 0062;0061 05AE 0300 2DEE 0315 0062;00E0 05AE 2DEE 0315 0062;0061 05AE 0300 2DEE 0315 0062;
+0061 2DEE 0315 0300 05AE 0062;0061 05AE 2DEE 0300 0315 0062;0061 05AE 2DEE 0300 0315 0062;0061 05AE 2DEE 0300 0315 0062;0061 05AE 2DEE 0300 0315 0062;
+0061 0315 0300 05AE 2DEF 0062;00E0 05AE 2DEF 0315 0062;0061 05AE 0300 2DEF 0315 0062;00E0 05AE 2DEF 0315 0062;0061 05AE 0300 2DEF 0315 0062;
+0061 2DEF 0315 0300 05AE 0062;0061 05AE 2DEF 0300 0315 0062;0061 05AE 2DEF 0300 0315 0062;0061 05AE 2DEF 0300 0315 0062;0061 05AE 2DEF 0300 0315 0062;
+0061 0315 0300 05AE 2DF0 0062;00E0 05AE 2DF0 0315 0062;0061 05AE 0300 2DF0 0315 0062;00E0 05AE 2DF0 0315 0062;0061 05AE 0300 2DF0 0315 0062;
+0061 2DF0 0315 0300 05AE 0062;0061 05AE 2DF0 0300 0315 0062;0061 05AE 2DF0 0300 0315 0062;0061 05AE 2DF0 0300 0315 0062;0061 05AE 2DF0 0300 0315 0062;
+0061 0315 0300 05AE 2DF1 0062;00E0 05AE 2DF1 0315 0062;0061 05AE 0300 2DF1 0315 0062;00E0 05AE 2DF1 0315 0062;0061 05AE 0300 2DF1 0315 0062;
+0061 2DF1 0315 0300 05AE 0062;0061 05AE 2DF1 0300 0315 0062;0061 05AE 2DF1 0300 0315 0062;0061 05AE 2DF1 0300 0315 0062;0061 05AE 2DF1 0300 0315 0062;
+0061 0315 0300 05AE 2DF2 0062;00E0 05AE 2DF2 0315 0062;0061 05AE 0300 2DF2 0315 0062;00E0 05AE 2DF2 0315 0062;0061 05AE 0300 2DF2 0315 0062;
+0061 2DF2 0315 0300 05AE 0062;0061 05AE 2DF2 0300 0315 0062;0061 05AE 2DF2 0300 0315 0062;0061 05AE 2DF2 0300 0315 0062;0061 05AE 2DF2 0300 0315 0062;
+0061 0315 0300 05AE 2DF3 0062;00E0 05AE 2DF3 0315 0062;0061 05AE 0300 2DF3 0315 0062;00E0 05AE 2DF3 0315 0062;0061 05AE 0300 2DF3 0315 0062;
+0061 2DF3 0315 0300 05AE 0062;0061 05AE 2DF3 0300 0315 0062;0061 05AE 2DF3 0300 0315 0062;0061 05AE 2DF3 0300 0315 0062;0061 05AE 2DF3 0300 0315 0062;
+0061 0315 0300 05AE 2DF4 0062;00E0 05AE 2DF4 0315 0062;0061 05AE 0300 2DF4 0315 0062;00E0 05AE 2DF4 0315 0062;0061 05AE 0300 2DF4 0315 0062;
+0061 2DF4 0315 0300 05AE 0062;0061 05AE 2DF4 0300 0315 0062;0061 05AE 2DF4 0300 0315 0062;0061 05AE 2DF4 0300 0315 0062;0061 05AE 2DF4 0300 0315 0062;
+0061 0315 0300 05AE 2DF5 0062;00E0 05AE 2DF5 0315 0062;0061 05AE 0300 2DF5 0315 0062;00E0 05AE 2DF5 0315 0062;0061 05AE 0300 2DF5 0315 0062;
+0061 2DF5 0315 0300 05AE 0062;0061 05AE 2DF5 0300 0315 0062;0061 05AE 2DF5 0300 0315 0062;0061 05AE 2DF5 0300 0315 0062;0061 05AE 2DF5 0300 0315 0062;
+0061 0315 0300 05AE 2DF6 0062;00E0 05AE 2DF6 0315 0062;0061 05AE 0300 2DF6 0315 0062;00E0 05AE 2DF6 0315 0062;0061 05AE 0300 2DF6 0315 0062;
+0061 2DF6 0315 0300 05AE 0062;0061 05AE 2DF6 0300 0315 0062;0061 05AE 2DF6 0300 0315 0062;0061 05AE 2DF6 0300 0315 0062;0061 05AE 2DF6 0300 0315 0062;
+0061 0315 0300 05AE 2DF7 0062;00E0 05AE 2DF7 0315 0062;0061 05AE 0300 2DF7 0315 0062;00E0 05AE 2DF7 0315 0062;0061 05AE 0300 2DF7 0315 0062;
+0061 2DF7 0315 0300 05AE 0062;0061 05AE 2DF7 0300 0315 0062;0061 05AE 2DF7 0300 0315 0062;0061 05AE 2DF7 0300 0315 0062;0061 05AE 2DF7 0300 0315 0062;
+0061 0315 0300 05AE 2DF8 0062;00E0 05AE 2DF8 0315 0062;0061 05AE 0300 2DF8 0315 0062;00E0 05AE 2DF8 0315 0062;0061 05AE 0300 2DF8 0315 0062;
+0061 2DF8 0315 0300 05AE 0062;0061 05AE 2DF8 0300 0315 0062;0061 05AE 2DF8 0300 0315 0062;0061 05AE 2DF8 0300 0315 0062;0061 05AE 2DF8 0300 0315 0062;
+0061 0315 0300 05AE 2DF9 0062;00E0 05AE 2DF9 0315 0062;0061 05AE 0300 2DF9 0315 0062;00E0 05AE 2DF9 0315 0062;0061 05AE 0300 2DF9 0315 0062;
+0061 2DF9 0315 0300 05AE 0062;0061 05AE 2DF9 0300 0315 0062;0061 05AE 2DF9 0300 0315 0062;0061 05AE 2DF9 0300 0315 0062;0061 05AE 2DF9 0300 0315 0062;
+0061 0315 0300 05AE 2DFA 0062;00E0 05AE 2DFA 0315 0062;0061 05AE 0300 2DFA 0315 0062;00E0 05AE 2DFA 0315 0062;0061 05AE 0300 2DFA 0315 0062;
+0061 2DFA 0315 0300 05AE 0062;0061 05AE 2DFA 0300 0315 0062;0061 05AE 2DFA 0300 0315 0062;0061 05AE 2DFA 0300 0315 0062;0061 05AE 2DFA 0300 0315 0062;
+0061 0315 0300 05AE 2DFB 0062;00E0 05AE 2DFB 0315 0062;0061 05AE 0300 2DFB 0315 0062;00E0 05AE 2DFB 0315 0062;0061 05AE 0300 2DFB 0315 0062;
+0061 2DFB 0315 0300 05AE 0062;0061 05AE 2DFB 0300 0315 0062;0061 05AE 2DFB 0300 0315 0062;0061 05AE 2DFB 0300 0315 0062;0061 05AE 2DFB 0300 0315 0062;
+0061 0315 0300 05AE 2DFC 0062;00E0 05AE 2DFC 0315 0062;0061 05AE 0300 2DFC 0315 0062;00E0 05AE 2DFC 0315 0062;0061 05AE 0300 2DFC 0315 0062;
+0061 2DFC 0315 0300 05AE 0062;0061 05AE 2DFC 0300 0315 0062;0061 05AE 2DFC 0300 0315 0062;0061 05AE 2DFC 0300 0315 0062;0061 05AE 2DFC 0300 0315 0062;
+0061 0315 0300 05AE 2DFD 0062;00E0 05AE 2DFD 0315 0062;0061 05AE 0300 2DFD 0315 0062;00E0 05AE 2DFD 0315 0062;0061 05AE 0300 2DFD 0315 0062;
+0061 2DFD 0315 0300 05AE 0062;0061 05AE 2DFD 0300 0315 0062;0061 05AE 2DFD 0300 0315 0062;0061 05AE 2DFD 0300 0315 0062;0061 05AE 2DFD 0300 0315 0062;
+0061 0315 0300 05AE 2DFE 0062;00E0 05AE 2DFE 0315 0062;0061 05AE 0300 2DFE 0315 0062;00E0 05AE 2DFE 0315 0062;0061 05AE 0300 2DFE 0315 0062;
+0061 2DFE 0315 0300 05AE 0062;0061 05AE 2DFE 0300 0315 0062;0061 05AE 2DFE 0300 0315 0062;0061 05AE 2DFE 0300 0315 0062;0061 05AE 2DFE 0300 0315 0062;
+0061 0315 0300 05AE 2DFF 0062;00E0 05AE 2DFF 0315 0062;0061 05AE 0300 2DFF 0315 0062;00E0 05AE 2DFF 0315 0062;0061 05AE 0300 2DFF 0315 0062;
+0061 2DFF 0315 0300 05AE 0062;0061 05AE 2DFF 0300 0315 0062;0061 05AE 2DFF 0300 0315 0062;0061 05AE 2DFF 0300 0315 0062;0061 05AE 2DFF 0300 0315 0062;
+0061 0316 302A 031B 302A 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;
+0061 302A 0316 302A 031B 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;
+0061 0300 05AE 1D16D 302B 0062;00E0 1D16D 05AE 302B 0062;0061 1D16D 05AE 302B 0300 0062;00E0 1D16D 05AE 302B 0062;0061 1D16D 05AE 302B 0300 0062;
+0061 302B 0300 05AE 1D16D 0062;00E0 1D16D 302B 05AE 0062;0061 1D16D 302B 05AE 0300 0062;00E0 1D16D 302B 05AE 0062;0061 1D16D 302B 05AE 0300 0062;
+0061 035C 0315 0300 302C 0062;00E0 0315 302C 035C 0062;0061 0300 0315 302C 035C 0062;00E0 0315 302C 035C 0062;0061 0300 0315 302C 035C 0062;
+0061 302C 035C 0315 0300 0062;00E0 302C 0315 035C 0062;0061 0300 302C 0315 035C 0062;00E0 302C 0315 035C 0062;0061 0300 302C 0315 035C 0062;
+0061 302E 059A 0316 302D 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;
+0061 302D 302E 059A 0316 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;
+0061 1D16D 302E 059A 302E 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;
+0061 302E 1D16D 302E 059A 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;
+0061 1D16D 302E 059A 302F 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;
+0061 302F 1D16D 302E 059A 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;
+0061 094D 3099 093C 3099 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;
+0061 3099 094D 3099 093C 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;
+0061 094D 3099 093C 309A 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;
+0061 309A 094D 3099 093C 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;
+0061 0315 0300 05AE A66F 0062;00E0 05AE A66F 0315 0062;0061 05AE 0300 A66F 0315 0062;00E0 05AE A66F 0315 0062;0061 05AE 0300 A66F 0315 0062;
+0061 A66F 0315 0300 05AE 0062;0061 05AE A66F 0300 0315 0062;0061 05AE A66F 0300 0315 0062;0061 05AE A66F 0300 0315 0062;0061 05AE A66F 0300 0315 0062;
+0061 0315 0300 05AE A67C 0062;00E0 05AE A67C 0315 0062;0061 05AE 0300 A67C 0315 0062;00E0 05AE A67C 0315 0062;0061 05AE 0300 A67C 0315 0062;
+0061 A67C 0315 0300 05AE 0062;0061 05AE A67C 0300 0315 0062;0061 05AE A67C 0300 0315 0062;0061 05AE A67C 0300 0315 0062;0061 05AE A67C 0300 0315 0062;
+0061 0315 0300 05AE A67D 0062;00E0 05AE A67D 0315 0062;0061 05AE 0300 A67D 0315 0062;00E0 05AE A67D 0315 0062;0061 05AE 0300 A67D 0315 0062;
+0061 A67D 0315 0300 05AE 0062;0061 05AE A67D 0300 0315 0062;0061 05AE A67D 0300 0315 0062;0061 05AE A67D 0300 0315 0062;0061 05AE A67D 0300 0315 0062;
+0061 05B0 094D 3099 A806 0062;0061 3099 094D A806 05B0 0062;0061 3099 094D A806 05B0 0062;0061 3099 094D A806 05B0 0062;0061 3099 094D A806 05B0 0062;
+0061 A806 05B0 094D 3099 0062;0061 3099 A806 094D 05B0 0062;0061 3099 A806 094D 05B0 0062;0061 3099 A806 094D 05B0 0062;0061 3099 A806 094D 05B0 0062;
+0061 05B0 094D 3099 A8C4 0062;0061 3099 094D A8C4 05B0 0062;0061 3099 094D A8C4 05B0 0062;0061 3099 094D A8C4 05B0 0062;0061 3099 094D A8C4 05B0 0062;
+0061 A8C4 05B0 094D 3099 0062;0061 3099 A8C4 094D 05B0 0062;0061 3099 A8C4 094D 05B0 0062;0061 3099 A8C4 094D 05B0 0062;0061 3099 A8C4 094D 05B0 0062;
+0061 059A 0316 302A A92B 0062;0061 302A 0316 A92B 059A 0062;0061 302A 0316 A92B 059A 0062;0061 302A 0316 A92B 059A 0062;0061 302A 0316 A92B 059A 0062;
+0061 A92B 059A 0316 302A 0062;0061 302A A92B 0316 059A 0062;0061 302A A92B 0316 059A 0062;0061 302A A92B 0316 059A 0062;0061 302A A92B 0316 059A 0062;
+0061 059A 0316 302A A92C 0062;0061 302A 0316 A92C 059A 0062;0061 302A 0316 A92C 059A 0062;0061 302A 0316 A92C 059A 0062;0061 302A 0316 A92C 059A 0062;
+0061 A92C 059A 0316 302A 0062;0061 302A A92C 0316 059A 0062;0061 302A A92C 0316 059A 0062;0061 302A A92C 0316 059A 0062;0061 302A A92C 0316 059A 0062;
+0061 059A 0316 302A A92D 0062;0061 302A 0316 A92D 059A 0062;0061 302A 0316 A92D 059A 0062;0061 302A 0316 A92D 059A 0062;0061 302A 0316 A92D 059A 0062;
+0061 A92D 059A 0316 302A 0062;0061 302A A92D 0316 059A 0062;0061 302A A92D 0316 059A 0062;0061 302A A92D 0316 059A 0062;0061 302A A92D 0316 059A 0062;
+0061 05B0 094D 3099 A953 0062;0061 3099 094D A953 05B0 0062;0061 3099 094D A953 05B0 0062;0061 3099 094D A953 05B0 0062;0061 3099 094D A953 05B0 0062;
+0061 A953 05B0 094D 3099 0062;0061 3099 A953 094D 05B0 0062;0061 3099 A953 094D 05B0 0062;0061 3099 A953 094D 05B0 0062;0061 3099 A953 094D 05B0 0062;
+0061 064B FB1E 05C2 FB1E 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;
+0061 FB1E 064B FB1E 05C2 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;
+0061 0315 0300 05AE FE20 0062;00E0 05AE FE20 0315 0062;0061 05AE 0300 FE20 0315 0062;00E0 05AE FE20 0315 0062;0061 05AE 0300 FE20 0315 0062;
+0061 FE20 0315 0300 05AE 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;
+0061 0315 0300 05AE FE21 0062;00E0 05AE FE21 0315 0062;0061 05AE 0300 FE21 0315 0062;00E0 05AE FE21 0315 0062;0061 05AE 0300 FE21 0315 0062;
+0061 FE21 0315 0300 05AE 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;
+0061 0315 0300 05AE FE22 0062;00E0 05AE FE22 0315 0062;0061 05AE 0300 FE22 0315 0062;00E0 05AE FE22 0315 0062;0061 05AE 0300 FE22 0315 0062;
+0061 FE22 0315 0300 05AE 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;
+0061 0315 0300 05AE FE23 0062;00E0 05AE FE23 0315 0062;0061 05AE 0300 FE23 0315 0062;00E0 05AE FE23 0315 0062;0061 05AE 0300 FE23 0315 0062;
+0061 FE23 0315 0300 05AE 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;
+0061 0315 0300 05AE FE24 0062;00E0 05AE FE24 0315 0062;0061 05AE 0300 FE24 0315 0062;00E0 05AE FE24 0315 0062;0061 05AE 0300 FE24 0315 0062;
+0061 FE24 0315 0300 05AE 0062;0061 05AE FE24 0300 0315 0062;0061 05AE FE24 0300 0315 0062;0061 05AE FE24 0300 0315 0062;0061 05AE FE24 0300 0315 0062;
+0061 0315 0300 05AE FE25 0062;00E0 05AE FE25 0315 0062;0061 05AE 0300 FE25 0315 0062;00E0 05AE FE25 0315 0062;0061 05AE 0300 FE25 0315 0062;
+0061 FE25 0315 0300 05AE 0062;0061 05AE FE25 0300 0315 0062;0061 05AE FE25 0300 0315 0062;0061 05AE FE25 0300 0315 0062;0061 05AE FE25 0300 0315 0062;
+0061 0315 0300 05AE FE26 0062;00E0 05AE FE26 0315 0062;0061 05AE 0300 FE26 0315 0062;00E0 05AE FE26 0315 0062;0061 05AE 0300 FE26 0315 0062;
+0061 FE26 0315 0300 05AE 0062;0061 05AE FE26 0300 0315 0062;0061 05AE FE26 0300 0315 0062;0061 05AE FE26 0300 0315 0062;0061 05AE FE26 0300 0315 0062;
+0061 059A 0316 302A 101FD 0062;0061 302A 0316 101FD 059A 0062;0061 302A 0316 101FD 059A 0062;0061 302A 0316 101FD 059A 0062;0061 302A 0316 101FD 059A 0062;
+0061 101FD 059A 0316 302A 0062;0061 302A 101FD 0316 059A 0062;0061 302A 101FD 0316 059A 0062;0061 302A 101FD 0316 059A 0062;0061 302A 101FD 0316 059A 0062;
+0061 059A 0316 302A 10A0D 0062;0061 302A 0316 10A0D 059A 0062;0061 302A 0316 10A0D 059A 0062;0061 302A 0316 10A0D 059A 0062;0061 302A 0316 10A0D 059A 0062;
+0061 10A0D 059A 0316 302A 0062;0061 302A 10A0D 0316 059A 0062;0061 302A 10A0D 0316 059A 0062;0061 302A 10A0D 0316 059A 0062;0061 302A 10A0D 0316 059A 0062;
+0061 0315 0300 05AE 10A0F 0062;00E0 05AE 10A0F 0315 0062;0061 05AE 0300 10A0F 0315 0062;00E0 05AE 10A0F 0315 0062;0061 05AE 0300 10A0F 0315 0062;
+0061 10A0F 0315 0300 05AE 0062;0061 05AE 10A0F 0300 0315 0062;0061 05AE 10A0F 0300 0315 0062;0061 05AE 10A0F 0300 0315 0062;0061 05AE 10A0F 0300 0315 0062;
+0061 0315 0300 05AE 10A38 0062;00E0 05AE 10A38 0315 0062;0061 05AE 0300 10A38 0315 0062;00E0 05AE 10A38 0315 0062;0061 05AE 0300 10A38 0315 0062;
+0061 10A38 0315 0300 05AE 0062;0061 05AE 10A38 0300 0315 0062;0061 05AE 10A38 0300 0315 0062;0061 05AE 10A38 0300 0315 0062;0061 05AE 10A38 0300 0315 0062;
+0061 093C 0334 10A39 0062;0061 0334 10A39 093C 0062;0061 0334 10A39 093C 0062;0061 0334 10A39 093C 0062;0061 0334 10A39 093C 0062;
+0061 10A39 093C 0334 0062;0061 10A39 0334 093C 0062;0061 10A39 0334 093C 0062;0061 10A39 0334 093C 0062;0061 10A39 0334 093C 0062;
+0061 059A 0316 302A 10A3A 0062;0061 302A 0316 10A3A 059A 0062;0061 302A 0316 10A3A 059A 0062;0061 302A 0316 10A3A 059A 0062;0061 302A 0316 10A3A 059A 0062;
+0061 10A3A 059A 0316 302A 0062;0061 302A 10A3A 0316 059A 0062;0061 302A 10A3A 0316 059A 0062;0061 302A 10A3A 0316 059A 0062;0061 302A 10A3A 0316 059A 0062;
+0061 05B0 094D 3099 10A3F 0062;0061 3099 094D 10A3F 05B0 0062;0061 3099 094D 10A3F 05B0 0062;0061 3099 094D 10A3F 05B0 0062;0061 3099 094D 10A3F 05B0 0062;
+0061 10A3F 05B0 094D 3099 0062;0061 3099 10A3F 094D 05B0 0062;0061 3099 10A3F 094D 05B0 0062;0061 3099 10A3F 094D 05B0 0062;0061 3099 10A3F 094D 05B0 0062;
+0061 302A 031B 1DCE 1D165 0062;0061 1DCE 031B 1D165 302A 0062;0061 1DCE 031B 1D165 302A 0062;0061 1DCE 031B 1D165 302A 0062;0061 1DCE 031B 1D165 302A 0062;
+0061 1D165 302A 031B 1DCE 0062;0061 1DCE 1D165 031B 302A 0062;0061 1DCE 1D165 031B 302A 0062;0061 1DCE 1D165 031B 302A 0062;0061 1DCE 1D165 031B 302A 0062;
+0061 302A 031B 1DCE 1D166 0062;0061 1DCE 031B 1D166 302A 0062;0061 1DCE 031B 1D166 302A 0062;0061 1DCE 031B 1D166 302A 0062;0061 1DCE 031B 1D166 302A 0062;
+0061 1D166 302A 031B 1DCE 0062;0061 1DCE 1D166 031B 302A 0062;0061 1DCE 1D166 031B 302A 0062;0061 1DCE 1D166 031B 302A 0062;0061 1DCE 1D166 031B 302A 0062;
+0061 093C 0334 1D167 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;
+0061 1D167 093C 0334 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;
+0061 093C 0334 1D168 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;
+0061 1D168 093C 0334 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;
+0061 093C 0334 1D169 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;
+0061 1D169 093C 0334 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;
+0061 05AE 1D16D 302E 1D16D 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;
+0061 1D16D 05AE 1D16D 302E 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;
+0061 302A 031B 1DCE 1D16E 0062;0061 1DCE 031B 1D16E 302A 0062;0061 1DCE 031B 1D16E 302A 0062;0061 1DCE 031B 1D16E 302A 0062;0061 1DCE 031B 1D16E 302A 0062;
+0061 1D16E 302A 031B 1DCE 0062;0061 1DCE 1D16E 031B 302A 0062;0061 1DCE 1D16E 031B 302A 0062;0061 1DCE 1D16E 031B 302A 0062;0061 1DCE 1D16E 031B 302A 0062;
+0061 302A 031B 1DCE 1D16F 0062;0061 1DCE 031B 1D16F 302A 0062;0061 1DCE 031B 1D16F 302A 0062;0061 1DCE 031B 1D16F 302A 0062;0061 1DCE 031B 1D16F 302A 0062;
+0061 1D16F 302A 031B 1DCE 0062;0061 1DCE 1D16F 031B 302A 0062;0061 1DCE 1D16F 031B 302A 0062;0061 1DCE 1D16F 031B 302A 0062;0061 1DCE 1D16F 031B 302A 0062;
+0061 302A 031B 1DCE 1D170 0062;0061 1DCE 031B 1D170 302A 0062;0061 1DCE 031B 1D170 302A 0062;0061 1DCE 031B 1D170 302A 0062;0061 1DCE 031B 1D170 302A 0062;
+0061 1D170 302A 031B 1DCE 0062;0061 1DCE 1D170 031B 302A 0062;0061 1DCE 1D170 031B 302A 0062;0061 1DCE 1D170 031B 302A 0062;0061 1DCE 1D170 031B 302A 0062;
+0061 302A 031B 1DCE 1D171 0062;0061 1DCE 031B 1D171 302A 0062;0061 1DCE 031B 1D171 302A 0062;0061 1DCE 031B 1D171 302A 0062;0061 1DCE 031B 1D171 302A 0062;
+0061 1D171 302A 031B 1DCE 0062;0061 1DCE 1D171 031B 302A 0062;0061 1DCE 1D171 031B 302A 0062;0061 1DCE 1D171 031B 302A 0062;0061 1DCE 1D171 031B 302A 0062;
+0061 302A 031B 1DCE 1D172 0062;0061 1DCE 031B 1D172 302A 0062;0061 1DCE 031B 1D172 302A 0062;0061 1DCE 031B 1D172 302A 0062;0061 1DCE 031B 1D172 302A 0062;
+0061 1D172 302A 031B 1DCE 0062;0061 1DCE 1D172 031B 302A 0062;0061 1DCE 1D172 031B 302A 0062;0061 1DCE 1D172 031B 302A 0062;0061 1DCE 1D172 031B 302A 0062;
+0061 059A 0316 302A 1D17B 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;
+0061 1D17B 059A 0316 302A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;
+0061 059A 0316 302A 1D17C 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;
+0061 1D17C 059A 0316 302A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;
+0061 059A 0316 302A 1D17D 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;
+0061 1D17D 059A 0316 302A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;
+0061 059A 0316 302A 1D17E 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;
+0061 1D17E 059A 0316 302A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;
+0061 059A 0316 302A 1D17F 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;
+0061 1D17F 059A 0316 302A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;
+0061 059A 0316 302A 1D180 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;
+0061 1D180 059A 0316 302A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;
+0061 059A 0316 302A 1D181 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;
+0061 1D181 059A 0316 302A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;
+0061 059A 0316 302A 1D182 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;
+0061 1D182 059A 0316 302A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;
+0061 0315 0300 05AE 1D185 0062;00E0 05AE 1D185 0315 0062;0061 05AE 0300 1D185 0315 0062;00E0 05AE 1D185 0315 0062;0061 05AE 0300 1D185 0315 0062;
+0061 1D185 0315 0300 05AE 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;
+0061 0315 0300 05AE 1D186 0062;00E0 05AE 1D186 0315 0062;0061 05AE 0300 1D186 0315 0062;00E0 05AE 1D186 0315 0062;0061 05AE 0300 1D186 0315 0062;
+0061 1D186 0315 0300 05AE 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;
+0061 0315 0300 05AE 1D187 0062;00E0 05AE 1D187 0315 0062;0061 05AE 0300 1D187 0315 0062;00E0 05AE 1D187 0315 0062;0061 05AE 0300 1D187 0315 0062;
+0061 1D187 0315 0300 05AE 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;
+0061 0315 0300 05AE 1D188 0062;00E0 05AE 1D188 0315 0062;0061 05AE 0300 1D188 0315 0062;00E0 05AE 1D188 0315 0062;0061 05AE 0300 1D188 0315 0062;
+0061 1D188 0315 0300 05AE 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;
+0061 0315 0300 05AE 1D189 0062;00E0 05AE 1D189 0315 0062;0061 05AE 0300 1D189 0315 0062;00E0 05AE 1D189 0315 0062;0061 05AE 0300 1D189 0315 0062;
+0061 1D189 0315 0300 05AE 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;
+0061 059A 0316 302A 1D18A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;
+0061 1D18A 059A 0316 302A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;
+0061 059A 0316 302A 1D18B 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;
+0061 1D18B 059A 0316 302A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;
+0061 0315 0300 05AE 1D1AA 0062;00E0 05AE 1D1AA 0315 0062;0061 05AE 0300 1D1AA 0315 0062;00E0 05AE 1D1AA 0315 0062;0061 05AE 0300 1D1AA 0315 0062;
+0061 1D1AA 0315 0300 05AE 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;
+0061 0315 0300 05AE 1D1AB 0062;00E0 05AE 1D1AB 0315 0062;0061 05AE 0300 1D1AB 0315 0062;00E0 05AE 1D1AB 0315 0062;0061 05AE 0300 1D1AB 0315 0062;
+0061 1D1AB 0315 0300 05AE 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;
+0061 0315 0300 05AE 1D1AC 0062;00E0 05AE 1D1AC 0315 0062;0061 05AE 0300 1D1AC 0315 0062;00E0 05AE 1D1AC 0315 0062;0061 05AE 0300 1D1AC 0315 0062;
+0061 1D1AC 0315 0300 05AE 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;
+0061 0315 0300 05AE 1D1AD 0062;00E0 05AE 1D1AD 0315 0062;0061 05AE 0300 1D1AD 0315 0062;00E0 05AE 1D1AD 0315 0062;0061 05AE 0300 1D1AD 0315 0062;
+0061 1D1AD 0315 0300 05AE 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;
+0061 0315 0300 05AE 1D242 0062;00E0 05AE 1D242 0315 0062;0061 05AE 0300 1D242 0315 0062;00E0 05AE 1D242 0315 0062;0061 05AE 0300 1D242 0315 0062;
+0061 1D242 0315 0300 05AE 0062;0061 05AE 1D242 0300 0315 0062;0061 05AE 1D242 0300 0315 0062;0061 05AE 1D242 0300 0315 0062;0061 05AE 1D242 0300 0315 0062;
+0061 0315 0300 05AE 1D243 0062;00E0 05AE 1D243 0315 0062;0061 05AE 0300 1D243 0315 0062;00E0 05AE 1D243 0315 0062;0061 05AE 0300 1D243 0315 0062;
+0061 1D243 0315 0300 05AE 0062;0061 05AE 1D243 0300 0315 0062;0061 05AE 1D243 0300 0315 0062;0061 05AE 1D243 0300 0315 0062;0061 05AE 1D243 0300 0315 0062;
+0061 0315 0300 05AE 1D244 0062;00E0 05AE 1D244 0315 0062;0061 05AE 0300 1D244 0315 0062;00E0 05AE 1D244 0315 0062;0061 05AE 0300 1D244 0315 0062;
+0061 1D244 0315 0300 05AE 0062;0061 05AE 1D244 0300 0315 0062;0061 05AE 1D244 0300 0315 0062;0061 05AE 1D244 0300 0315 0062;0061 05AE 1D244 0300 0315 0062;
+
+@Part3
+
+09C7 0334 09BE;09C7 0334 09BE;09C7 0334 09BE;09C7 0334 09BE;09C7 0334 09BE;
+09C7 0334 09D7;09C7 0334 09D7;09C7 0334 09D7;09C7 0334 09D7;09C7 0334 09D7;
+0B47 0334 0B3E;0B47 0334 0B3E;0B47 0334 0B3E;0B47 0334 0B3E;0B47 0334 0B3E;
+0B47 0334 0B56;0B47 0334 0B56;0B47 0334 0B56;0B47 0334 0B56;0B47 0334 0B56;
+0B47 0334 0B57;0B47 0334 0B57;0B47 0334 0B57;0B47 0334 0B57;0B47 0334 0B57;
+0B92 0334 0BD7;0B92 0334 0BD7;0B92 0334 0BD7;0B92 0334 0BD7;0B92 0334 0BD7;
+0BC6 0334 0BBE;0BC6 0334 0BBE;0BC6 0334 0BBE;0BC6 0334 0BBE;0BC6 0334 0BBE;
+0BC6 0334 0BD7;0BC6 0334 0BD7;0BC6 0334 0BD7;0BC6 0334 0BD7;0BC6 0334 0BD7;
+0BC7 0334 0BBE;0BC7 0334 0BBE;0BC7 0334 0BBE;0BC7 0334 0BBE;0BC7 0334 0BBE;
+0CBF 0334 0CD5;0CBF 0334 0CD5;0CBF 0334 0CD5;0CBF 0334 0CD5;0CBF 0334 0CD5;
+0CC6 0334 0CC2;0CC6 0334 0CC2;0CC6 0334 0CC2;0CC6 0334 0CC2;0CC6 0334 0CC2;
+0CC6 0334 0CD5;0CC6 0334 0CD5;0CC6 0334 0CD5;0CC6 0334 0CD5;0CC6 0334 0CD5;
+0CC6 0334 0CD6;0CC6 0334 0CD6;0CC6 0334 0CD6;0CC6 0334 0CD6;0CC6 0334 0CD6;
+0CCA 0334 0CD5;0CCA 0334 0CD5;0CC6 0CC2 0334 0CD5;0CCA 0334 0CD5;0CC6 0CC2 0334 0CD5;
+0D46 0334 0D3E;0D46 0334 0D3E;0D46 0334 0D3E;0D46 0334 0D3E;0D46 0334 0D3E;
+0D46 0334 0D57;0D46 0334 0D57;0D46 0334 0D57;0D46 0334 0D57;0D46 0334 0D57;
+0D47 0334 0D3E;0D47 0334 0D3E;0D47 0334 0D3E;0D47 0334 0D3E;0D47 0334 0D3E;
+0DD9 0334 0DCF;0DD9 0334 0DCF;0DD9 0334 0DCF;0DD9 0334 0DCF;0DD9 0334 0DCF;
+0DD9 0334 0DDF;0DD9 0334 0DDF;0DD9 0334 0DDF;0DD9 0334 0DDF;0DD9 0334 0DDF;
+0F40 0334 0FB5;0F40 0334 0FB5;0F40 0334 0FB5;0F40 0334 0FB5;0F40 0334 0FB5;
+0F42 0334 0FB7;0F42 0334 0FB7;0F42 0334 0FB7;0F42 0334 0FB7;0F42 0334 0FB7;
+0F4C 0334 0FB7;0F4C 0334 0FB7;0F4C 0334 0FB7;0F4C 0334 0FB7;0F4C 0334 0FB7;
+0F51 0334 0FB7;0F51 0334 0FB7;0F51 0334 0FB7;0F51 0334 0FB7;0F51 0334 0FB7;
+0F56 0334 0FB7;0F56 0334 0FB7;0F56 0334 0FB7;0F56 0334 0FB7;0F56 0334 0FB7;
+0F5B 0334 0FB7;0F5B 0334 0FB7;0F5B 0334 0FB7;0F5B 0334 0FB7;0F5B 0334 0FB7;
+0F90 0334 0FB5;0F90 0334 0FB5;0F90 0334 0FB5;0F90 0334 0FB5;0F90 0334 0FB5;
+0F92 0334 0FB7;0F92 0334 0FB7;0F92 0334 0FB7;0F92 0334 0FB7;0F92 0334 0FB7;
+0F9C 0334 0FB7;0F9C 0334 0FB7;0F9C 0334 0FB7;0F9C 0334 0FB7;0F9C 0334 0FB7;
+0FA1 0334 0FB7;0FA1 0334 0FB7;0FA1 0334 0FB7;0FA1 0334 0FB7;0FA1 0334 0FB7;
+0FA6 0334 0FB7;0FA6 0334 0FB7;0FA6 0334 0FB7;0FA6 0334 0FB7;0FA6 0334 0FB7;
+0FAB 0334 0FB7;0FAB 0334 0FB7;0FAB 0334 0FB7;0FAB 0334 0FB7;0FAB 0334 0FB7;
+1025 0334 102E;1025 0334 102E;1025 0334 102E;1025 0334 102E;1025 0334 102E;
+1100 0334 1161;1100 0334 1161;1100 0334 1161;1100 0334 1161;1100 0334 1161;
+1100 0334 116E;1100 0334 116E;1100 0334 116E;1100 0334 116E;1100 0334 116E;
+1101 0334 1166;1101 0334 1166;1101 0334 1166;1101 0334 1166;1101 0334 1166;
+1101 0334 1173;1101 0334 1173;1101 0334 1173;1101 0334 1173;1101 0334 1173;
+1102 0334 116B;1102 0334 116B;1102 0334 116B;1102 0334 116B;1102 0334 116B;
+1103 0334 1163;1103 0334 1163;1103 0334 1163;1103 0334 1163;1103 0334 1163;
+1103 0334 1170;1103 0334 1170;1103 0334 1170;1103 0334 1170;1103 0334 1170;
+1104 0334 1168;1104 0334 1168;1104 0334 1168;1104 0334 1168;1104 0334 1168;
+1104 0334 1175;1104 0334 1175;1104 0334 1175;1104 0334 1175;1104 0334 1175;
+1105 0334 116D;1105 0334 116D;1105 0334 116D;1105 0334 116D;1105 0334 116D;
+1106 0334 1165;1106 0334 1165;1106 0334 1165;1106 0334 1165;1106 0334 1165;
+1106 0334 1172;1106 0334 1172;1106 0334 1172;1106 0334 1172;1106 0334 1172;
+1107 0334 116A;1107 0334 116A;1107 0334 116A;1107 0334 116A;1107 0334 116A;
+1108 0334 1162;1108 0334 1162;1108 0334 1162;1108 0334 1162;1108 0334 1162;
+1108 0334 116F;1108 0334 116F;1108 0334 116F;1108 0334 116F;1108 0334 116F;
+1109 0334 1167;1109 0334 1167;1109 0334 1167;1109 0334 1167;1109 0334 1167;
+1109 0334 1174;1109 0334 1174;1109 0334 1174;1109 0334 1174;1109 0334 1174;
+110A 0334 116C;110A 0334 116C;110A 0334 116C;110A 0334 116C;110A 0334 116C;
+110B 0334 1164;110B 0334 1164;110B 0334 1164;110B 0334 1164;110B 0334 1164;
+110B 0334 1171;110B 0334 1171;110B 0334 1171;110B 0334 1171;110B 0334 1171;
+110C 0334 1169;110C 0334 1169;110C 0334 1169;110C 0334 1169;110C 0334 1169;
+110D 0334 1161;110D 0334 1161;110D 0334 1161;110D 0334 1161;110D 0334 1161;
+110D 0334 116E;110D 0334 116E;110D 0334 116E;110D 0334 116E;110D 0334 116E;
+110E 0334 1166;110E 0334 1166;110E 0334 1166;110E 0334 1166;110E 0334 1166;
+110E 0334 1173;110E 0334 1173;110E 0334 1173;110E 0334 1173;110E 0334 1173;
+110F 0334 116B;110F 0334 116B;110F 0334 116B;110F 0334 116B;110F 0334 116B;
+1110 0334 1163;1110 0334 1163;1110 0334 1163;1110 0334 1163;1110 0334 1163;
+1110 0334 1170;1110 0334 1170;1110 0334 1170;1110 0334 1170;1110 0334 1170;
+1111 0334 1168;1111 0334 1168;1111 0334 1168;1111 0334 1168;1111 0334 1168;
+1111 0334 1175;1111 0334 1175;1111 0334 1175;1111 0334 1175;1111 0334 1175;
+1112 0334 116D;1112 0334 116D;1112 0334 116D;1112 0334 116D;1112 0334 116D;
+1B05 0334 1B35;1B05 0334 1B35;1B05 0334 1B35;1B05 0334 1B35;1B05 0334 1B35;
+1B07 0334 1B35;1B07 0334 1B35;1B07 0334 1B35;1B07 0334 1B35;1B07 0334 1B35;
+1B09 0334 1B35;1B09 0334 1B35;1B09 0334 1B35;1B09 0334 1B35;1B09 0334 1B35;
+1B0B 0334 1B35;1B0B 0334 1B35;1B0B 0334 1B35;1B0B 0334 1B35;1B0B 0334 1B35;
+1B0D 0334 1B35;1B0D 0334 1B35;1B0D 0334 1B35;1B0D 0334 1B35;1B0D 0334 1B35;
+1B11 0334 1B35;1B11 0334 1B35;1B11 0334 1B35;1B11 0334 1B35;1B11 0334 1B35;
+1B3A 0334 1B35;1B3A 0334 1B35;1B3A 0334 1B35;1B3A 0334 1B35;1B3A 0334 1B35;
+1B3C 0334 1B35;1B3C 0334 1B35;1B3C 0334 1B35;1B3C 0334 1B35;1B3C 0334 1B35;
+1B3E 0334 1B35;1B3E 0334 1B35;1B3E 0334 1B35;1B3E 0334 1B35;1B3E 0334 1B35;
+1B3F 0334 1B35;1B3F 0334 1B35;1B3F 0334 1B35;1B3F 0334 1B35;1B3F 0334 1B35;
+1B42 0334 1B35;1B42 0334 1B35;1B42 0334 1B35;1B42 0334 1B35;1B42 0334 1B35;
+AC54 0334 11AE;AC54 0334 11AE;1100 1164 0334 11AE;AC54 0334 11AE;1100 1164 0334 11AE;
+ACA8 0334 11B5;ACA8 0334 11B5;1100 1167 0334 11B5;ACA8 0334 11B5;1100 1167 0334 11B5;
+ACFC 0334 11BC;ACFC 0334 11BC;1100 116A 0334 11BC;ACFC 0334 11BC;1100 116A 0334 11BC;
+ADC0 0334 11AE;ADC0 0334 11AE;1100 1171 0334 11AE;ADC0 0334 11AE;1100 1171 0334 11AE;
+AE14 0334 11B5;AE14 0334 11B5;1100 1174 0334 11B5;AE14 0334 11B5;1100 1174 0334 11B5;
+AE68 0334 11BC;AE68 0334 11BC;1101 1162 0334 11BC;AE68 0334 11BC;1101 1162 0334 11BC;
+AF2C 0334 11AE;AF2C 0334 11AE;1101 1169 0334 11AE;AF2C 0334 11AE;1101 1169 0334 11AE;
+AF80 0334 11B5;AF80 0334 11B5;1101 116C 0334 11B5;AF80 0334 11B5;1101 116C 0334 11B5;
+AFD4 0334 11BC;AFD4 0334 11BC;1101 116F 0334 11BC;AFD4 0334 11BC;1101 116F 0334 11BC;
+B098 0334 11AE;B098 0334 11AE;1102 1161 0334 11AE;B098 0334 11AE;1102 1161 0334 11AE;
+B0EC 0334 11B5;B0EC 0334 11B5;1102 1164 0334 11B5;B0EC 0334 11B5;1102 1164 0334 11B5;
+B140 0334 11BC;B140 0334 11BC;1102 1167 0334 11BC;B140 0334 11BC;1102 1167 0334 11BC;
+B204 0334 11AE;B204 0334 11AE;1102 116E 0334 11AE;B204 0334 11AE;1102 116E 0334 11AE;
+B258 0334 11B5;B258 0334 11B5;1102 1171 0334 11B5;B258 0334 11B5;1102 1171 0334 11B5;
+B2AC 0334 11BC;B2AC 0334 11BC;1102 1174 0334 11BC;B2AC 0334 11BC;1102 1174 0334 11BC;
+B370 0334 11AE;B370 0334 11AE;1103 1166 0334 11AE;B370 0334 11AE;1103 1166 0334 11AE;
+B3C4 0334 11B5;B3C4 0334 11B5;1103 1169 0334 11B5;B3C4 0334 11B5;1103 1169 0334 11B5;
+B418 0334 11BC;B418 0334 11BC;1103 116C 0334 11BC;B418 0334 11BC;1103 116C 0334 11BC;
+B4DC 0334 11AE;B4DC 0334 11AE;1103 1173 0334 11AE;B4DC 0334 11AE;1103 1173 0334 11AE;
+B530 0334 11B5;B530 0334 11B5;1104 1161 0334 11B5;B530 0334 11B5;1104 1161 0334 11B5;
+B584 0334 11BC;B584 0334 11BC;1104 1164 0334 11BC;B584 0334 11BC;1104 1164 0334 11BC;
+B648 0334 11AE;B648 0334 11AE;1104 116B 0334 11AE;B648 0334 11AE;1104 116B 0334 11AE;
+B69C 0334 11B5;B69C 0334 11B5;1104 116E 0334 11B5;B69C 0334 11B5;1104 116E 0334 11B5;
+B6F0 0334 11BC;B6F0 0334 11BC;1104 1171 0334 11BC;B6F0 0334 11BC;1104 1171 0334 11BC;
+B7B4 0334 11AE;B7B4 0334 11AE;1105 1163 0334 11AE;B7B4 0334 11AE;1105 1163 0334 11AE;
+B808 0334 11B5;B808 0334 11B5;1105 1166 0334 11B5;B808 0334 11B5;1105 1166 0334 11B5;
+B85C 0334 11BC;B85C 0334 11BC;1105 1169 0334 11BC;B85C 0334 11BC;1105 1169 0334 11BC;
+B920 0334 11AE;B920 0334 11AE;1105 1170 0334 11AE;B920 0334 11AE;1105 1170 0334 11AE;
+B974 0334 11B5;B974 0334 11B5;1105 1173 0334 11B5;B974 0334 11B5;1105 1173 0334 11B5;
+B9C8 0334 11BC;B9C8 0334 11BC;1106 1161 0334 11BC;B9C8 0334 11BC;1106 1161 0334 11BC;
+BA8C 0334 11AE;BA8C 0334 11AE;1106 1168 0334 11AE;BA8C 0334 11AE;1106 1168 0334 11AE;
+BAE0 0334 11B5;BAE0 0334 11B5;1106 116B 0334 11B5;BAE0 0334 11B5;1106 116B 0334 11B5;
+BB34 0334 11BC;BB34 0334 11BC;1106 116E 0334 11BC;BB34 0334 11BC;1106 116E 0334 11BC;
+BBF8 0334 11AE;BBF8 0334 11AE;1106 1175 0334 11AE;BBF8 0334 11AE;1106 1175 0334 11AE;
+BC4C 0334 11B5;BC4C 0334 11B5;1107 1163 0334 11B5;BC4C 0334 11B5;1107 1163 0334 11B5;
+BCA0 0334 11BC;BCA0 0334 11BC;1107 1166 0334 11BC;BCA0 0334 11BC;1107 1166 0334 11BC;
+BD64 0334 11AE;BD64 0334 11AE;1107 116D 0334 11AE;BD64 0334 11AE;1107 116D 0334 11AE;
+BDB8 0334 11B5;BDB8 0334 11B5;1107 1170 0334 11B5;BDB8 0334 11B5;1107 1170 0334 11B5;
+BE0C 0334 11BC;BE0C 0334 11BC;1107 1173 0334 11BC;BE0C 0334 11BC;1107 1173 0334 11BC;
+BED0 0334 11AE;BED0 0334 11AE;1108 1165 0334 11AE;BED0 0334 11AE;1108 1165 0334 11AE;
+BF24 0334 11B5;BF24 0334 11B5;1108 1168 0334 11B5;BF24 0334 11B5;1108 1168 0334 11B5;
+BF78 0334 11BC;BF78 0334 11BC;1108 116B 0334 11BC;BF78 0334 11BC;1108 116B 0334 11BC;
+C03C 0334 11AE;C03C 0334 11AE;1108 1172 0334 11AE;C03C 0334 11AE;1108 1172 0334 11AE;
+C090 0334 11B5;C090 0334 11B5;1108 1175 0334 11B5;C090 0334 11B5;1108 1175 0334 11B5;
+C0E4 0334 11BC;C0E4 0334 11BC;1109 1163 0334 11BC;C0E4 0334 11BC;1109 1163 0334 11BC;
+C1A8 0334 11AE;C1A8 0334 11AE;1109 116A 0334 11AE;C1A8 0334 11AE;1109 116A 0334 11AE;
+C1FC 0334 11B5;C1FC 0334 11B5;1109 116D 0334 11B5;C1FC 0334 11B5;1109 116D 0334 11B5;
+C250 0334 11BC;C250 0334 11BC;1109 1170 0334 11BC;C250 0334 11BC;1109 1170 0334 11BC;
+C314 0334 11AE;C314 0334 11AE;110A 1162 0334 11AE;C314 0334 11AE;110A 1162 0334 11AE;
+C368 0334 11B5;C368 0334 11B5;110A 1165 0334 11B5;C368 0334 11B5;110A 1165 0334 11B5;
+C3BC 0334 11BC;C3BC 0334 11BC;110A 1168 0334 11BC;C3BC 0334 11BC;110A 1168 0334 11BC;
+C480 0334 11AE;C480 0334 11AE;110A 116F 0334 11AE;C480 0334 11AE;110A 116F 0334 11AE;
+C4D4 0334 11B5;C4D4 0334 11B5;110A 1172 0334 11B5;C4D4 0334 11B5;110A 1172 0334 11B5;
+C528 0334 11BC;C528 0334 11BC;110A 1175 0334 11BC;C528 0334 11BC;110A 1175 0334 11BC;
+C5EC 0334 11AE;C5EC 0334 11AE;110B 1167 0334 11AE;C5EC 0334 11AE;110B 1167 0334 11AE;
+C640 0334 11B5;C640 0334 11B5;110B 116A 0334 11B5;C640 0334 11B5;110B 116A 0334 11B5;
+C694 0334 11BC;C694 0334 11BC;110B 116D 0334 11BC;C694 0334 11BC;110B 116D 0334 11BC;
+C758 0334 11AE;C758 0334 11AE;110B 1174 0334 11AE;C758 0334 11AE;110B 1174 0334 11AE;
+C7AC 0334 11B5;C7AC 0334 11B5;110C 1162 0334 11B5;C7AC 0334 11B5;110C 1162 0334 11B5;
+C800 0334 11BC;C800 0334 11BC;110C 1165 0334 11BC;C800 0334 11BC;110C 1165 0334 11BC;
+C8C4 0334 11AE;C8C4 0334 11AE;110C 116C 0334 11AE;C8C4 0334 11AE;110C 116C 0334 11AE;
+C918 0334 11B5;C918 0334 11B5;110C 116F 0334 11B5;C918 0334 11B5;110C 116F 0334 11B5;
+C96C 0334 11BC;C96C 0334 11BC;110C 1172 0334 11BC;C96C 0334 11BC;110C 1172 0334 11BC;
+CA30 0334 11AE;CA30 0334 11AE;110D 1164 0334 11AE;CA30 0334 11AE;110D 1164 0334 11AE;
+CA84 0334 11B5;CA84 0334 11B5;110D 1167 0334 11B5;CA84 0334 11B5;110D 1167 0334 11B5;
+CAD8 0334 11BC;CAD8 0334 11BC;110D 116A 0334 11BC;CAD8 0334 11BC;110D 116A 0334 11BC;
+CB9C 0334 11AE;CB9C 0334 11AE;110D 1171 0334 11AE;CB9C 0334 11AE;110D 1171 0334 11AE;
+CBF0 0334 11B5;CBF0 0334 11B5;110D 1174 0334 11B5;CBF0 0334 11B5;110D 1174 0334 11B5;
+CC44 0334 11BC;CC44 0334 11BC;110E 1162 0334 11BC;CC44 0334 11BC;110E 1162 0334 11BC;
+CD08 0334 11AE;CD08 0334 11AE;110E 1169 0334 11AE;CD08 0334 11AE;110E 1169 0334 11AE;
+CD5C 0334 11B5;CD5C 0334 11B5;110E 116C 0334 11B5;CD5C 0334 11B5;110E 116C 0334 11B5;
+CDB0 0334 11BC;CDB0 0334 11BC;110E 116F 0334 11BC;CDB0 0334 11BC;110E 116F 0334 11BC;
+CE74 0334 11AE;CE74 0334 11AE;110F 1161 0334 11AE;CE74 0334 11AE;110F 1161 0334 11AE;
+CEC8 0334 11B5;CEC8 0334 11B5;110F 1164 0334 11B5;CEC8 0334 11B5;110F 1164 0334 11B5;
+CF1C 0334 11BC;CF1C 0334 11BC;110F 1167 0334 11BC;CF1C 0334 11BC;110F 1167 0334 11BC;
+CFE0 0334 11AE;CFE0 0334 11AE;110F 116E 0334 11AE;CFE0 0334 11AE;110F 116E 0334 11AE;
+D034 0334 11B5;D034 0334 11B5;110F 1171 0334 11B5;D034 0334 11B5;110F 1171 0334 11B5;
+D088 0334 11BC;D088 0334 11BC;110F 1174 0334 11BC;D088 0334 11BC;110F 1174 0334 11BC;
+D14C 0334 11AE;D14C 0334 11AE;1110 1166 0334 11AE;D14C 0334 11AE;1110 1166 0334 11AE;
+D1A0 0334 11B5;D1A0 0334 11B5;1110 1169 0334 11B5;D1A0 0334 11B5;1110 1169 0334 11B5;
+D1F4 0334 11BC;D1F4 0334 11BC;1110 116C 0334 11BC;D1F4 0334 11BC;1110 116C 0334 11BC;
+D2B8 0334 11AE;D2B8 0334 11AE;1110 1173 0334 11AE;D2B8 0334 11AE;1110 1173 0334 11AE;
+D30C 0334 11B5;D30C 0334 11B5;1111 1161 0334 11B5;D30C 0334 11B5;1111 1161 0334 11B5;
+D360 0334 11BC;D360 0334 11BC;1111 1164 0334 11BC;D360 0334 11BC;1111 1164 0334 11BC;
+D424 0334 11AE;D424 0334 11AE;1111 116B 0334 11AE;D424 0334 11AE;1111 116B 0334 11AE;
+D478 0334 11B5;D478 0334 11B5;1111 116E 0334 11B5;D478 0334 11B5;1111 116E 0334 11B5;
+D4CC 0334 11BC;D4CC 0334 11BC;1111 1171 0334 11BC;D4CC 0334 11BC;1111 1171 0334 11BC;
+D590 0334 11AE;D590 0334 11AE;1112 1163 0334 11AE;D590 0334 11AE;1112 1163 0334 11AE;
+D5E4 0334 11B5;D5E4 0334 11B5;1112 1166 0334 11B5;D5E4 0334 11B5;1112 1166 0334 11B5;
+D638 0334 11BC;D638 0334 11BC;1112 1169 0334 11BC;D638 0334 11BC;1112 1169 0334 11BC;
+D6FC 0334 11AE;D6FC 0334 11AE;1112 1170 0334 11AE;D6FC 0334 11AE;1112 1170 0334 11AE;
+D750 0334 11B5;D750 0334 11B5;1112 1173 0334 11B5;D750 0334 11B5;1112 1173 0334 11B5;
+
+
diff --git a/tests/uninorm/test-canonical-decomposition.c b/tests/uninorm/test-canonical-decomposition.c
new file mode 100644
index 00000000..040011b5
--- /dev/null
+++ b/tests/uninorm/test-canonical-decomposition.c
@@ -0,0 +1,156 @@
+/* Test of canonical decomposition of Unicode characters.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uninorm.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ ucs4_t decomposed[UC_DECOMPOSITION_MAX_LENGTH];
+ int ret;
+
+ /* SPACE */
+ ret = uc_canonical_decomposition (0x0020, decomposed);
+ ASSERT (ret == -1);
+
+ /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ ret = uc_canonical_decomposition (0x00C4, decomposed);
+ ASSERT (ret == 2);
+ ASSERT (decomposed[0] == 0x0041);
+ ASSERT (decomposed[1] == 0x0308);
+
+ /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ ret = uc_canonical_decomposition (0x01DE, decomposed);
+ ASSERT (ret == 2);
+ ASSERT (decomposed[0] == 0x00C4);
+ ASSERT (decomposed[1] == 0x0304);
+
+ /* GREEK DIALYTIKA AND PERISPOMENI */
+ ret = uc_canonical_decomposition (0x1FC1, decomposed);
+ ASSERT (ret == 2);
+ ASSERT (decomposed[0] == 0x00A8);
+ ASSERT (decomposed[1] == 0x0342);
+
+ /* SCRIPT SMALL L */
+ ret = uc_canonical_decomposition (0x2113, decomposed);
+ ASSERT (ret == -1);
+
+ /* NO-BREAK SPACE */
+ ret = uc_canonical_decomposition (0x00A0, decomposed);
+ ASSERT (ret == -1);
+
+ /* ARABIC LETTER VEH INITIAL FORM */
+ ret = uc_canonical_decomposition (0xFB6C, decomposed);
+ ASSERT (ret == -1);
+
+ /* ARABIC LETTER VEH MEDIAL FORM */
+ ret = uc_canonical_decomposition (0xFB6D, decomposed);
+ ASSERT (ret == -1);
+
+ /* ARABIC LETTER VEH FINAL FORM */
+ ret = uc_canonical_decomposition (0xFB6B, decomposed);
+ ASSERT (ret == -1);
+
+ /* ARABIC LETTER VEH ISOLATED FORM */
+ ret = uc_canonical_decomposition (0xFB6A, decomposed);
+ ASSERT (ret == -1);
+
+ /* CIRCLED NUMBER FIFTEEN */
+ ret = uc_canonical_decomposition (0x246E, decomposed);
+ ASSERT (ret == -1);
+
+ /* TRADE MARK SIGN */
+ ret = uc_canonical_decomposition (0x2122, decomposed);
+ ASSERT (ret == -1);
+
+ /* LATIN SUBSCRIPT SMALL LETTER I */
+ ret = uc_canonical_decomposition (0x1D62, decomposed);
+ ASSERT (ret == -1);
+
+ /* PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS */
+ ret = uc_canonical_decomposition (0xFE35, decomposed);
+ ASSERT (ret == -1);
+
+ /* FULLWIDTH LATIN CAPITAL LETTER A */
+ ret = uc_canonical_decomposition (0xFF21, decomposed);
+ ASSERT (ret == -1);
+
+ /* HALFWIDTH IDEOGRAPHIC COMMA */
+ ret = uc_canonical_decomposition (0xFF64, decomposed);
+ ASSERT (ret == -1);
+
+ /* SMALL IDEOGRAPHIC COMMA */
+ ret = uc_canonical_decomposition (0xFE51, decomposed);
+ ASSERT (ret == -1);
+
+ /* SQUARE MHZ */
+ ret = uc_canonical_decomposition (0x3392, decomposed);
+ ASSERT (ret == -1);
+
+ /* VULGAR FRACTION THREE EIGHTHS */
+ ret = uc_canonical_decomposition (0x215C, decomposed);
+ ASSERT (ret == -1);
+
+ /* MICRO SIGN */
+ ret = uc_canonical_decomposition (0x00B5, decomposed);
+ ASSERT (ret == -1);
+
+ /* ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM */
+ ret = uc_canonical_decomposition (0xFDFA, decomposed);
+ ASSERT (ret == -1);
+
+ /* HANGUL SYLLABLE GEUL */
+ ret = uc_canonical_decomposition (0xAE00, decomposed);
+ /* See the clarification at <http://www.unicode.org/versions/Unicode5.1.0/>,
+ section "Clarification of Hangul Jamo Handling". */
+#if 1
+ ASSERT (ret == 2);
+ ASSERT (decomposed[0] == 0xADF8);
+ ASSERT (decomposed[1] == 0x11AF);
+#else
+ ASSERT (ret == 3);
+ ASSERT (decomposed[0] == 0x1100);
+ ASSERT (decomposed[1] == 0x1173);
+ ASSERT (decomposed[2] == 0x11AF);
+#endif
+
+ /* HANGUL SYLLABLE GEU */
+ ret = uc_canonical_decomposition (0xADF8, decomposed);
+ ASSERT (ret == 2);
+ ASSERT (decomposed[0] == 0x1100);
+ ASSERT (decomposed[1] == 0x1173);
+
+ return 0;
+}
diff --git a/tests/uninorm/test-compat-decomposition.c b/tests/uninorm/test-compat-decomposition.c
new file mode 100644
index 00000000..49a2b09f
--- /dev/null
+++ b/tests/uninorm/test-compat-decomposition.c
@@ -0,0 +1,198 @@
+/* Test of compatibility decomposition of Unicode characters.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uninorm/decompose-internal.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "uninorm.h"
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ ucs4_t decomposed[UC_DECOMPOSITION_MAX_LENGTH];
+ int ret;
+
+ /* SPACE */
+ ret = uc_compat_decomposition (0x0020, decomposed);
+ ASSERT (ret == -1);
+
+ /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ ret = uc_compat_decomposition (0x00C4, decomposed);
+ ASSERT (ret == 2);
+ ASSERT (decomposed[0] == 0x0041);
+ ASSERT (decomposed[1] == 0x0308);
+
+ /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ ret = uc_compat_decomposition (0x01DE, decomposed);
+ ASSERT (ret == 2);
+ ASSERT (decomposed[0] == 0x00C4);
+ ASSERT (decomposed[1] == 0x0304);
+
+ /* GREEK DIALYTIKA AND PERISPOMENI */
+ ret = uc_compat_decomposition (0x1FC1, decomposed);
+ ASSERT (ret == 2);
+ ASSERT (decomposed[0] == 0x00A8);
+ ASSERT (decomposed[1] == 0x0342);
+
+ /* SCRIPT SMALL L */
+ ret = uc_compat_decomposition (0x2113, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (decomposed[0] == 0x006C);
+
+ /* NO-BREAK SPACE */
+ ret = uc_compat_decomposition (0x00A0, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (decomposed[0] == 0x0020);
+
+ /* ARABIC LETTER VEH INITIAL FORM */
+ ret = uc_compat_decomposition (0xFB6C, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (decomposed[0] == 0x06A4);
+
+ /* ARABIC LETTER VEH MEDIAL FORM */
+ ret = uc_compat_decomposition (0xFB6D, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (decomposed[0] == 0x06A4);
+
+ /* ARABIC LETTER VEH FINAL FORM */
+ ret = uc_compat_decomposition (0xFB6B, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (decomposed[0] == 0x06A4);
+
+ /* ARABIC LETTER VEH ISOLATED FORM */
+ ret = uc_compat_decomposition (0xFB6A, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (decomposed[0] == 0x06A4);
+
+ /* CIRCLED NUMBER FIFTEEN */
+ ret = uc_compat_decomposition (0x246E, decomposed);
+ ASSERT (ret == 2);
+ ASSERT (decomposed[0] == 0x0031);
+ ASSERT (decomposed[1] == 0x0035);
+
+ /* TRADE MARK SIGN */
+ ret = uc_compat_decomposition (0x2122, decomposed);
+ ASSERT (ret == 2);
+ ASSERT (decomposed[0] == 0x0054);
+ ASSERT (decomposed[1] == 0x004D);
+
+ /* LATIN SUBSCRIPT SMALL LETTER I */
+ ret = uc_compat_decomposition (0x1D62, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (decomposed[0] == 0x0069);
+
+ /* PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS */
+ ret = uc_compat_decomposition (0xFE35, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (decomposed[0] == 0x0028);
+
+ /* FULLWIDTH LATIN CAPITAL LETTER A */
+ ret = uc_compat_decomposition (0xFF21, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (decomposed[0] == 0x0041);
+
+ /* HALFWIDTH IDEOGRAPHIC COMMA */
+ ret = uc_compat_decomposition (0xFF64, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (decomposed[0] == 0x3001);
+
+ /* SMALL IDEOGRAPHIC COMMA */
+ ret = uc_compat_decomposition (0xFE51, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (decomposed[0] == 0x3001);
+
+ /* SQUARE MHZ */
+ ret = uc_compat_decomposition (0x3392, decomposed);
+ ASSERT (ret == 3);
+ ASSERT (decomposed[0] == 0x004D);
+ ASSERT (decomposed[1] == 0x0048);
+ ASSERT (decomposed[2] == 0x007A);
+
+ /* VULGAR FRACTION THREE EIGHTHS */
+ ret = uc_compat_decomposition (0x215C, decomposed);
+ ASSERT (ret == 3);
+ ASSERT (decomposed[0] == 0x0033);
+ ASSERT (decomposed[1] == 0x2044);
+ ASSERT (decomposed[2] == 0x0038);
+
+ /* MICRO SIGN */
+ ret = uc_compat_decomposition (0x00B5, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (decomposed[0] == 0x03BC);
+
+ /* ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM */
+ ret = uc_compat_decomposition (0xFDFA, decomposed);
+ ASSERT (ret == 18);
+ ASSERT (decomposed[0] == 0x0635);
+ ASSERT (decomposed[1] == 0x0644);
+ ASSERT (decomposed[2] == 0x0649);
+ ASSERT (decomposed[3] == 0x0020);
+ ASSERT (decomposed[4] == 0x0627);
+ ASSERT (decomposed[5] == 0x0644);
+ ASSERT (decomposed[6] == 0x0644);
+ ASSERT (decomposed[7] == 0x0647);
+ ASSERT (decomposed[8] == 0x0020);
+ ASSERT (decomposed[9] == 0x0639);
+ ASSERT (decomposed[10] == 0x0644);
+ ASSERT (decomposed[11] == 0x064A);
+ ASSERT (decomposed[12] == 0x0647);
+ ASSERT (decomposed[13] == 0x0020);
+ ASSERT (decomposed[14] == 0x0648);
+ ASSERT (decomposed[15] == 0x0633);
+ ASSERT (decomposed[16] == 0x0644);
+ ASSERT (decomposed[17] == 0x0645);
+
+ /* HANGUL SYLLABLE GEUL */
+ ret = uc_compat_decomposition (0xAE00, decomposed);
+ /* See the clarification at <http://www.unicode.org/versions/Unicode5.1.0/>,
+ section "Clarification of Hangul Jamo Handling". */
+#if 1
+ ASSERT (ret == 2);
+ ASSERT (decomposed[0] == 0xADF8);
+ ASSERT (decomposed[1] == 0x11AF);
+#else
+ ASSERT (ret == 3);
+ ASSERT (decomposed[0] == 0x1100);
+ ASSERT (decomposed[1] == 0x1173);
+ ASSERT (decomposed[2] == 0x11AF);
+#endif
+
+ /* HANGUL SYLLABLE GEU */
+ ret = uc_compat_decomposition (0xADF8, decomposed);
+ ASSERT (ret == 2);
+ ASSERT (decomposed[0] == 0x1100);
+ ASSERT (decomposed[1] == 0x1173);
+
+ return 0;
+}
diff --git a/tests/uninorm/test-composition.c b/tests/uninorm/test-composition.c
new file mode 100644
index 00000000..dbadbbac
--- /dev/null
+++ b/tests/uninorm/test-composition.c
@@ -0,0 +1,66 @@
+/* Test of canonical composition of Unicode characters.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uninorm.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ ASSERT (uc_composition (0x0041, 0x0308) == 0x00C4);
+
+ /* LATIN CAPITAL LETTER A WITH RING ABOVE */
+ ASSERT (uc_composition (0x0041, 0x030A) == 0x00C5);
+
+ /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ ASSERT (uc_composition (0x00C4, 0x0304) == 0x01DE);
+
+ /* GREEK DIALYTIKA AND PERISPOMENI */
+ ASSERT (uc_composition (0x00A8, 0x0342) == 0x1FC1);
+
+ /* CIRCLED NUMBER FIFTEEN */
+ ASSERT (uc_composition (0x0031, 0x0035) == 0);
+
+ /* TRADE MARK SIGN */
+ ASSERT (uc_composition (0x0054, 0x004D) == 0);
+
+ /* HANGUL SYLLABLE GEU */
+ ASSERT (uc_composition (0x1100, 0x1173) == 0xADF8);
+
+ /* HANGUL SYLLABLE GEUL */
+ ASSERT (uc_composition (0xADF8, 0x11AF) == 0xAE00);
+
+ return 0;
+}
diff --git a/tests/uninorm/test-decomposing-form.c b/tests/uninorm/test-decomposing-form.c
new file mode 100644
index 00000000..3802c3fe
--- /dev/null
+++ b/tests/uninorm/test-decomposing-form.c
@@ -0,0 +1,47 @@
+/* Test of decomposing variant of a normalization form.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uninorm.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ ASSERT (uninorm_decomposing_form (UNINORM_NFC) == UNINORM_NFD);
+ ASSERT (uninorm_decomposing_form (UNINORM_NFD) == UNINORM_NFD);
+ ASSERT (uninorm_decomposing_form (UNINORM_NFKC) == UNINORM_NFKD);
+ ASSERT (uninorm_decomposing_form (UNINORM_NFKD) == UNINORM_NFKD);
+
+ return 0;
+}
diff --git a/tests/uninorm/test-decomposition.c b/tests/uninorm/test-decomposition.c
new file mode 100644
index 00000000..684dee45
--- /dev/null
+++ b/tests/uninorm/test-decomposition.c
@@ -0,0 +1,220 @@
+/* Test of decomposition of Unicode characters.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uninorm.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ ucs4_t decomposed[UC_DECOMPOSITION_MAX_LENGTH];
+ int tag;
+ int ret;
+
+ /* SPACE */
+ ret = uc_decomposition (0x0020, &tag, decomposed);
+ ASSERT (ret == -1);
+
+ /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ ret = uc_decomposition (0x00C4, &tag, decomposed);
+ ASSERT (ret == 2);
+ ASSERT (tag == UC_DECOMP_CANONICAL);
+ ASSERT (decomposed[0] == 0x0041);
+ ASSERT (decomposed[1] == 0x0308);
+
+ /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ ret = uc_decomposition (0x01DE, &tag, decomposed);
+ ASSERT (ret == 2);
+ ASSERT (tag == UC_DECOMP_CANONICAL);
+ ASSERT (decomposed[0] == 0x00C4);
+ ASSERT (decomposed[1] == 0x0304);
+
+ /* GREEK DIALYTIKA AND PERISPOMENI */
+ ret = uc_decomposition (0x1FC1, &tag, decomposed);
+ ASSERT (ret == 2);
+ ASSERT (tag == UC_DECOMP_CANONICAL);
+ ASSERT (decomposed[0] == 0x00A8);
+ ASSERT (decomposed[1] == 0x0342);
+
+ /* SCRIPT SMALL L */
+ ret = uc_decomposition (0x2113, &tag, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (tag == UC_DECOMP_FONT);
+ ASSERT (decomposed[0] == 0x006C);
+
+ /* NO-BREAK SPACE */
+ ret = uc_decomposition (0x00A0, &tag, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (tag == UC_DECOMP_NOBREAK);
+ ASSERT (decomposed[0] == 0x0020);
+
+ /* ARABIC LETTER VEH INITIAL FORM */
+ ret = uc_decomposition (0xFB6C, &tag, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (tag == UC_DECOMP_INITIAL);
+ ASSERT (decomposed[0] == 0x06A4);
+
+ /* ARABIC LETTER VEH MEDIAL FORM */
+ ret = uc_decomposition (0xFB6D, &tag, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (tag == UC_DECOMP_MEDIAL);
+ ASSERT (decomposed[0] == 0x06A4);
+
+ /* ARABIC LETTER VEH FINAL FORM */
+ ret = uc_decomposition (0xFB6B, &tag, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (tag == UC_DECOMP_FINAL);
+ ASSERT (decomposed[0] == 0x06A4);
+
+ /* ARABIC LETTER VEH ISOLATED FORM */
+ ret = uc_decomposition (0xFB6A, &tag, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (tag == UC_DECOMP_ISOLATED);
+ ASSERT (decomposed[0] == 0x06A4);
+
+ /* CIRCLED NUMBER FIFTEEN */
+ ret = uc_decomposition (0x246E, &tag, decomposed);
+ ASSERT (ret == 2);
+ ASSERT (tag == UC_DECOMP_CIRCLE);
+ ASSERT (decomposed[0] == 0x0031);
+ ASSERT (decomposed[1] == 0x0035);
+
+ /* TRADE MARK SIGN */
+ ret = uc_decomposition (0x2122, &tag, decomposed);
+ ASSERT (ret == 2);
+ ASSERT (tag == UC_DECOMP_SUPER);
+ ASSERT (decomposed[0] == 0x0054);
+ ASSERT (decomposed[1] == 0x004D);
+
+ /* LATIN SUBSCRIPT SMALL LETTER I */
+ ret = uc_decomposition (0x1D62, &tag, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (tag == UC_DECOMP_SUB);
+ ASSERT (decomposed[0] == 0x0069);
+
+ /* PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS */
+ ret = uc_decomposition (0xFE35, &tag, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (tag == UC_DECOMP_VERTICAL);
+ ASSERT (decomposed[0] == 0x0028);
+
+ /* FULLWIDTH LATIN CAPITAL LETTER A */
+ ret = uc_decomposition (0xFF21, &tag, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (tag == UC_DECOMP_WIDE);
+ ASSERT (decomposed[0] == 0x0041);
+
+ /* HALFWIDTH IDEOGRAPHIC COMMA */
+ ret = uc_decomposition (0xFF64, &tag, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (tag == UC_DECOMP_NARROW);
+ ASSERT (decomposed[0] == 0x3001);
+
+ /* SMALL IDEOGRAPHIC COMMA */
+ ret = uc_decomposition (0xFE51, &tag, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (tag == UC_DECOMP_SMALL);
+ ASSERT (decomposed[0] == 0x3001);
+
+ /* SQUARE MHZ */
+ ret = uc_decomposition (0x3392, &tag, decomposed);
+ ASSERT (ret == 3);
+ ASSERT (tag == UC_DECOMP_SQUARE);
+ ASSERT (decomposed[0] == 0x004D);
+ ASSERT (decomposed[1] == 0x0048);
+ ASSERT (decomposed[2] == 0x007A);
+
+ /* VULGAR FRACTION THREE EIGHTHS */
+ ret = uc_decomposition (0x215C, &tag, decomposed);
+ ASSERT (ret == 3);
+ ASSERT (tag == UC_DECOMP_FRACTION);
+ ASSERT (decomposed[0] == 0x0033);
+ ASSERT (decomposed[1] == 0x2044);
+ ASSERT (decomposed[2] == 0x0038);
+
+ /* MICRO SIGN */
+ ret = uc_decomposition (0x00B5, &tag, decomposed);
+ ASSERT (ret == 1);
+ ASSERT (tag == UC_DECOMP_COMPAT);
+ ASSERT (decomposed[0] == 0x03BC);
+
+ /* ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM */
+ ret = uc_decomposition (0xFDFA, &tag, decomposed);
+ ASSERT (ret == 18);
+ ASSERT (tag == UC_DECOMP_ISOLATED);
+ ASSERT (decomposed[0] == 0x0635);
+ ASSERT (decomposed[1] == 0x0644);
+ ASSERT (decomposed[2] == 0x0649);
+ ASSERT (decomposed[3] == 0x0020);
+ ASSERT (decomposed[4] == 0x0627);
+ ASSERT (decomposed[5] == 0x0644);
+ ASSERT (decomposed[6] == 0x0644);
+ ASSERT (decomposed[7] == 0x0647);
+ ASSERT (decomposed[8] == 0x0020);
+ ASSERT (decomposed[9] == 0x0639);
+ ASSERT (decomposed[10] == 0x0644);
+ ASSERT (decomposed[11] == 0x064A);
+ ASSERT (decomposed[12] == 0x0647);
+ ASSERT (decomposed[13] == 0x0020);
+ ASSERT (decomposed[14] == 0x0648);
+ ASSERT (decomposed[15] == 0x0633);
+ ASSERT (decomposed[16] == 0x0644);
+ ASSERT (decomposed[17] == 0x0645);
+
+ /* HANGUL SYLLABLE GEUL */
+ ret = uc_decomposition (0xAE00, &tag, decomposed);
+ /* See the clarification at <http://www.unicode.org/versions/Unicode5.1.0/>,
+ section "Clarification of Hangul Jamo Handling". */
+#if 1
+ ASSERT (ret == 2);
+ ASSERT (tag == UC_DECOMP_CANONICAL);
+ ASSERT (decomposed[0] == 0xADF8);
+ ASSERT (decomposed[1] == 0x11AF);
+#else
+ ASSERT (ret == 3);
+ ASSERT (tag == UC_DECOMP_CANONICAL);
+ ASSERT (decomposed[0] == 0x1100);
+ ASSERT (decomposed[1] == 0x1173);
+ ASSERT (decomposed[2] == 0x11AF);
+#endif
+
+ /* HANGUL SYLLABLE GEU */
+ ret = uc_decomposition (0xADF8, &tag, decomposed);
+ ASSERT (ret == 2);
+ ASSERT (tag == UC_DECOMP_CANONICAL);
+ ASSERT (decomposed[0] == 0x1100);
+ ASSERT (decomposed[1] == 0x1173);
+
+ return 0;
+}
diff --git a/tests/uninorm/test-nfc.c b/tests/uninorm/test-nfc.c
new file mode 100644
index 00000000..ca957102
--- /dev/null
+++ b/tests/uninorm/test-nfc.c
@@ -0,0 +1,44 @@
+/* Test of canonical normalization of Unicode strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uninorm.h"
+
+#if !WOE32DLL
+/* Check that UNINORM_NFC is defined and links. */
+uninorm_t n = UNINORM_NFC;
+#endif
+
+extern void test_u8_nfc (void);
+extern void test_u16_nfc (void);
+extern void test_u32_nfc (void);
+
+int
+main ()
+{
+ /* Check that UNINORM_NFC is defined and links. */
+ uninorm_t nf = UNINORM_NFC;
+ (void) nf;
+
+ test_u32_nfc ();
+ test_u16_nfc ();
+ test_u8_nfc ();
+
+ return 0;
+}
diff --git a/tests/uninorm/test-nfd.c b/tests/uninorm/test-nfd.c
new file mode 100644
index 00000000..2a7e55b0
--- /dev/null
+++ b/tests/uninorm/test-nfd.c
@@ -0,0 +1,44 @@
+/* Test of canonical decomposition of Unicode strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uninorm.h"
+
+#if !WOE32DLL
+/* Check that UNINORM_NFD is defined and links. */
+uninorm_t n = UNINORM_NFD;
+#endif
+
+extern void test_u8_nfd (void);
+extern void test_u16_nfd (void);
+extern void test_u32_nfd (void);
+
+int
+main ()
+{
+ /* Check that UNINORM_NFD is defined and links. */
+ uninorm_t nf = UNINORM_NFD;
+ (void) nf;
+
+ test_u32_nfd ();
+ test_u16_nfd ();
+ test_u8_nfd ();
+
+ return 0;
+}
diff --git a/tests/uninorm/test-nfkc.c b/tests/uninorm/test-nfkc.c
new file mode 100644
index 00000000..2e57a15e
--- /dev/null
+++ b/tests/uninorm/test-nfkc.c
@@ -0,0 +1,44 @@
+/* Test of compatibility normalization of Unicode strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uninorm.h"
+
+#if !WOE32DLL
+/* Check that UNINORM_NFKC is defined and links. */
+uninorm_t n = UNINORM_NFKC;
+#endif
+
+extern void test_u8_nfkc (void);
+extern void test_u16_nfkc (void);
+extern void test_u32_nfkc (void);
+
+int
+main ()
+{
+ /* Check that UNINORM_NFKC is defined and links. */
+ uninorm_t nf = UNINORM_NFKC;
+ (void) nf;
+
+ test_u32_nfkc ();
+ test_u16_nfkc ();
+ test_u8_nfkc ();
+
+ return 0;
+}
diff --git a/tests/uninorm/test-nfkd.c b/tests/uninorm/test-nfkd.c
new file mode 100644
index 00000000..8e330feb
--- /dev/null
+++ b/tests/uninorm/test-nfkd.c
@@ -0,0 +1,44 @@
+/* Test of compatibility decomposition of Unicode strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uninorm.h"
+
+#if !WOE32DLL
+/* Check that UNINORM_NFKD is defined and links. */
+uninorm_t n = UNINORM_NFKD;
+#endif
+
+extern void test_u8_nfkd (void);
+extern void test_u16_nfkd (void);
+extern void test_u32_nfkd (void);
+
+int
+main ()
+{
+ /* Check that UNINORM_NFKD is defined and links. */
+ uninorm_t nf = UNINORM_NFKD;
+ (void) nf;
+
+ test_u32_nfkd ();
+ test_u16_nfkd ();
+ test_u8_nfkd ();
+
+ return 0;
+}
diff --git a/tests/uninorm/test-u16-nfc.c b/tests/uninorm/test-u16-nfc.c
new file mode 100644
index 00000000..1bf9a94d
--- /dev/null
+++ b/tests/uninorm/test-u16-nfc.c
@@ -0,0 +1,345 @@
+/* Test of canonical normalization of UTF-16 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#if GNULIB_UNINORM_U16_NORMALIZE
+
+#include "uninorm.h"
+
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint16_t *input, size_t input_length,
+ const uint16_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint16_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u16_normalize (UNINORM_NFC, input, input_length, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint16_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint16_t *) malloc (length * sizeof (uint16_t));
+ result = u16_normalize (UNINORM_NFC, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint16_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint16_t *) malloc (length * sizeof (uint16_t));
+ result = u16_normalize (UNINORM_NFC, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+void
+test_u16_nfc (void)
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, 0) == 0);
+ }
+ { /* SPACE */
+ static const uint16_t input[] = { 0x0020 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const uint16_t input[] = { 0x00C4 };
+ static const uint16_t decomposed[] = { 0x0041, 0x0308 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const uint16_t input[] = { 0x01DE };
+ static const uint16_t decomposed[] = { 0x0041, 0x0308, 0x0304 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ANGSTROM SIGN */
+ static const uint16_t input[] = { 0x212B };
+ static const uint16_t decomposed[] = { 0x0041, 0x030A };
+ static const uint16_t expected[] = { 0x00C5 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), expected, SIZEOF (expected)) == 0);
+ ASSERT (check (expected, SIZEOF (expected), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const uint16_t input[] = { 0x1FC1 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* SCRIPT SMALL L */
+ static const uint16_t input[] = { 0x2113 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* NO-BREAK SPACE */
+ static const uint16_t input[] = { 0x00A0 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH INITIAL FORM */
+ static const uint16_t input[] = { 0xFB6C };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH MEDIAL FORM */
+ static const uint16_t input[] = { 0xFB6D };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH FINAL FORM */
+ static const uint16_t input[] = { 0xFB6B };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH ISOLATED FORM */
+ static const uint16_t input[] = { 0xFB6A };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* CIRCLED NUMBER FIFTEEN */
+ static const uint16_t input[] = { 0x246E };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* TRADE MARK SIGN */
+ static const uint16_t input[] = { 0x2122 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN SUBSCRIPT SMALL LETTER I */
+ static const uint16_t input[] = { 0x1D62 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS */
+ static const uint16_t input[] = { 0xFE35 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* FULLWIDTH LATIN CAPITAL LETTER A */
+ static const uint16_t input[] = { 0xFF21 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* HALFWIDTH IDEOGRAPHIC COMMA */
+ static const uint16_t input[] = { 0xFF64 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* SMALL IDEOGRAPHIC COMMA */
+ static const uint16_t input[] = { 0xFE51 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* SQUARE MHZ */
+ static const uint16_t input[] = { 0x3392 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* VULGAR FRACTION THREE EIGHTHS */
+ static const uint16_t input[] = { 0x215C };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* MICRO SIGN */
+ static const uint16_t input[] = { 0x00B5 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM */
+ static const uint16_t input[] = { 0xFDFA };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEUL */
+ static const uint16_t input[] = { 0xAE00 };
+ static const uint16_t decomposed[] = { 0x1100, 0x1173, 0x11AF };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEU */
+ static const uint16_t input[] = { 0xADF8 };
+ static const uint16_t decomposed[] = { 0x1100, 0x1173 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint16_t input[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint16_t decomposed[] =
+ { 'G', 'r', 0x0075, 0x0308, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0438, 0x0306, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',',
+ 0x1112, 0x1161, 0x11AB, 0x1100, 0x1173, 0x11AF, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+#if HAVE_DECL_ALARM
+ /* Declare failure if test takes too long, by using default abort
+ caused by SIGALRM. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (50);
+#endif
+
+ /* Check that the sorting is not O(n²) but O(n log n). */
+ {
+ int pass;
+ for (pass = 0; pass < 3; pass++)
+ {
+ size_t repeat = 1;
+ size_t m = 100000;
+ uint16_t *input = (uint16_t *) malloc (2 * m * sizeof (uint16_t));
+ if (input != NULL)
+ {
+ uint16_t *expected = input + m;
+ size_t m1 = m / 2;
+ size_t m2 = (m - 1) / 2;
+ /* NB: m1 + m2 == m - 1. */
+ uint16_t *p;
+ size_t i;
+
+ input[0] = 0x0041;
+ p = input + 1;
+ switch (pass)
+ {
+ case 0:
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+ break;
+
+ case 1:
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ break;
+
+ case 2:
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0x0319;
+ *p++ = 0x0300;
+ }
+ for (; i < m1; i++)
+ *p++ = 0x0319;
+ break;
+
+ default:
+ abort ();
+ }
+
+ expected[0] = 0x00C0;
+ p = expected + 1;
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ for (i = 0; i < m2 - 1; i++)
+ *p++ = 0x0300;
+
+ for (; repeat > 0; repeat--)
+ {
+ ASSERT (check (input, m, expected, m - 1) == 0);
+ ASSERT (check (expected, m - 1, expected, m - 1) == 0);
+ }
+
+ free (input);
+ }
+ }
+ }
+}
+
+#else
+
+void
+test_u16_nfc (void)
+{
+}
+
+#endif
diff --git a/tests/uninorm/test-u16-nfd.c b/tests/uninorm/test-u16-nfd.c
new file mode 100644
index 00000000..34789b8d
--- /dev/null
+++ b/tests/uninorm/test-u16-nfd.c
@@ -0,0 +1,329 @@
+/* Test of canonical decomposition of UTF-16 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#if GNULIB_UNINORM_U16_NORMALIZE
+
+#include "uninorm.h"
+
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint16_t *input, size_t input_length,
+ const uint16_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint16_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u16_normalize (UNINORM_NFD, input, input_length, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint16_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint16_t *) malloc (length * sizeof (uint16_t));
+ result = u16_normalize (UNINORM_NFD, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint16_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint16_t *) malloc (length * sizeof (uint16_t));
+ result = u16_normalize (UNINORM_NFD, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+void
+test_u16_nfd (void)
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, 0) == 0);
+ }
+ { /* SPACE */
+ static const uint16_t input[] = { 0x0020 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const uint16_t input[] = { 0x00C4 };
+ static const uint16_t expected[] = { 0x0041, 0x0308 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const uint16_t input[] = { 0x01DE };
+ static const uint16_t expected[] = { 0x0041, 0x0308, 0x0304 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const uint16_t input[] = { 0x1FC1 };
+ static const uint16_t expected[] = { 0x00A8, 0x0342 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* SCRIPT SMALL L */
+ static const uint16_t input[] = { 0x2113 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* NO-BREAK SPACE */
+ static const uint16_t input[] = { 0x00A0 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH INITIAL FORM */
+ static const uint16_t input[] = { 0xFB6C };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH MEDIAL FORM */
+ static const uint16_t input[] = { 0xFB6D };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH FINAL FORM */
+ static const uint16_t input[] = { 0xFB6B };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH ISOLATED FORM */
+ static const uint16_t input[] = { 0xFB6A };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* CIRCLED NUMBER FIFTEEN */
+ static const uint16_t input[] = { 0x246E };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* TRADE MARK SIGN */
+ static const uint16_t input[] = { 0x2122 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN SUBSCRIPT SMALL LETTER I */
+ static const uint16_t input[] = { 0x1D62 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS */
+ static const uint16_t input[] = { 0xFE35 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* FULLWIDTH LATIN CAPITAL LETTER A */
+ static const uint16_t input[] = { 0xFF21 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* HALFWIDTH IDEOGRAPHIC COMMA */
+ static const uint16_t input[] = { 0xFF64 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* SMALL IDEOGRAPHIC COMMA */
+ static const uint16_t input[] = { 0xFE51 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* SQUARE MHZ */
+ static const uint16_t input[] = { 0x3392 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* VULGAR FRACTION THREE EIGHTHS */
+ static const uint16_t input[] = { 0x215C };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* MICRO SIGN */
+ static const uint16_t input[] = { 0x00B5 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM */
+ static const uint16_t input[] = { 0xFDFA };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEUL */
+ static const uint16_t input[] = { 0xAE00 };
+ static const uint16_t expected[] = { 0x1100, 0x1173, 0x11AF };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEU */
+ static const uint16_t input[] = { 0xADF8 };
+ static const uint16_t expected[] = { 0x1100, 0x1173 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint16_t input[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint16_t expected[] =
+ { 'G', 'r', 0x0075, 0x0308, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0438, 0x0306, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',',
+ 0x1112, 0x1161, 0x11AB, 0x1100, 0x1173, 0x11AF, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+#if HAVE_DECL_ALARM
+ /* Declare failure if test takes too long, by using default abort
+ caused by SIGALRM. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (50);
+#endif
+
+ /* Check that the sorting is not O(n²) but O(n log n). */
+ {
+ int pass;
+ for (pass = 0; pass < 3; pass++)
+ {
+ size_t repeat = 1;
+ size_t m = 100000;
+ uint16_t *input = (uint16_t *) malloc (2 * m * sizeof (uint16_t));
+ if (input != NULL)
+ {
+ uint16_t *expected = input + m;
+ size_t m1 = m / 2;
+ size_t m2 = (m - 1) / 2;
+ /* NB: m1 + m2 == m - 1. */
+ uint16_t *p;
+ size_t i;
+
+ input[0] = 0x0041;
+ p = input + 1;
+ switch (pass)
+ {
+ case 0:
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+ break;
+
+ case 1:
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ break;
+
+ case 2:
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0x0319;
+ *p++ = 0x0300;
+ }
+ for (; i < m1; i++)
+ *p++ = 0x0319;
+ break;
+
+ default:
+ abort ();
+ }
+
+ expected[0] = 0x0041;
+ p = expected + 1;
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+
+ for (; repeat > 0; repeat--)
+ ASSERT (check (input, m, expected, m) == 0);
+
+ free (input);
+ }
+ }
+ }
+}
+
+#else
+
+void
+test_u16_nfd (void)
+{
+}
+
+#endif
diff --git a/tests/uninorm/test-u16-nfkc.c b/tests/uninorm/test-u16-nfkc.c
new file mode 100644
index 00000000..4ac8f7ed
--- /dev/null
+++ b/tests/uninorm/test-u16-nfkc.c
@@ -0,0 +1,393 @@
+/* Test of compatibility normalization of UTF-16 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#if GNULIB_UNINORM_U16_NORMALIZE
+
+#include "uninorm.h"
+
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint16_t *input, size_t input_length,
+ const uint16_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint16_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u16_normalize (UNINORM_NFKC, input, input_length, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint16_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint16_t *) malloc (length * sizeof (uint16_t));
+ result = u16_normalize (UNINORM_NFKC, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint16_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint16_t *) malloc (length * sizeof (uint16_t));
+ result = u16_normalize (UNINORM_NFKC, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+void
+test_u16_nfkc (void)
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, 0) == 0);
+ }
+ { /* SPACE */
+ static const uint16_t input[] = { 0x0020 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const uint16_t input[] = { 0x00C4 };
+ static const uint16_t decomposed[] = { 0x0041, 0x0308 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const uint16_t input[] = { 0x01DE };
+ static const uint16_t decomposed[] = { 0x0041, 0x0308, 0x0304 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ANGSTROM SIGN */
+ static const uint16_t input[] = { 0x212B };
+ static const uint16_t decomposed[] = { 0x0041, 0x030A };
+ static const uint16_t expected[] = { 0x00C5 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), expected, SIZEOF (expected)) == 0);
+ ASSERT (check (expected, SIZEOF (expected), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const uint16_t input[] = { 0x1FC1 };
+ static const uint16_t decomposed[] = { 0x0020, 0x0308, 0x0342 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* SCRIPT SMALL L */
+ static const uint16_t input[] = { 0x2113 };
+ static const uint16_t decomposed[] = { 0x006C };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* NO-BREAK SPACE */
+ static const uint16_t input[] = { 0x00A0 };
+ static const uint16_t decomposed[] = { 0x0020 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH INITIAL FORM */
+ static const uint16_t input[] = { 0xFB6C };
+ static const uint16_t decomposed[] = { 0x06A4 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH MEDIAL FORM */
+ static const uint16_t input[] = { 0xFB6D };
+ static const uint16_t decomposed[] = { 0x06A4 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH FINAL FORM */
+ static const uint16_t input[] = { 0xFB6B };
+ static const uint16_t decomposed[] = { 0x06A4 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH ISOLATED FORM */
+ static const uint16_t input[] = { 0xFB6A };
+ static const uint16_t decomposed[] = { 0x06A4 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* CIRCLED NUMBER FIFTEEN */
+ static const uint16_t input[] = { 0x246E };
+ static const uint16_t decomposed[] = { 0x0031, 0x0035 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* TRADE MARK SIGN */
+ static const uint16_t input[] = { 0x2122 };
+ static const uint16_t decomposed[] = { 0x0054, 0x004D };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* LATIN SUBSCRIPT SMALL LETTER I */
+ static const uint16_t input[] = { 0x1D62 };
+ static const uint16_t decomposed[] = { 0x0069 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS */
+ static const uint16_t input[] = { 0xFE35 };
+ static const uint16_t decomposed[] = { 0x0028 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* FULLWIDTH LATIN CAPITAL LETTER A */
+ static const uint16_t input[] = { 0xFF21 };
+ static const uint16_t decomposed[] = { 0x0041 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* HALFWIDTH IDEOGRAPHIC COMMA */
+ static const uint16_t input[] = { 0xFF64 };
+ static const uint16_t decomposed[] = { 0x3001 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* SMALL IDEOGRAPHIC COMMA */
+ static const uint16_t input[] = { 0xFE51 };
+ static const uint16_t decomposed[] = { 0x3001 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* SQUARE MHZ */
+ static const uint16_t input[] = { 0x3392 };
+ static const uint16_t decomposed[] = { 0x004D, 0x0048, 0x007A };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* VULGAR FRACTION THREE EIGHTHS */
+ static const uint16_t input[] = { 0x215C };
+ static const uint16_t decomposed[] = { 0x0033, 0x2044, 0x0038 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* MICRO SIGN */
+ static const uint16_t input[] = { 0x00B5 };
+ static const uint16_t decomposed[] = { 0x03BC };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM */
+ static const uint16_t input[] = { 0xFDFA };
+ static const uint16_t decomposed[] =
+ { 0x0635, 0x0644, 0x0649, 0x0020, 0x0627, 0x0644, 0x0644, 0x0647, 0x0020,
+ 0x0639, 0x0644, 0x064A, 0x0647, 0x0020, 0x0648, 0x0633, 0x0644, 0x0645
+ };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEUL */
+ static const uint16_t input[] = { 0xAE00 };
+ static const uint16_t decomposed[] = { 0x1100, 0x1173, 0x11AF };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEU */
+ static const uint16_t input[] = { 0xADF8 };
+ static const uint16_t decomposed[] = { 0x1100, 0x1173 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint16_t input[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint16_t decomposed[] =
+ { 'G', 'r', 0x0075, 0x0308, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0438, 0x0306, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x0032,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',',
+ 0x1112, 0x1161, 0x11AB, 0x1100, 0x1173, 0x11AF, '\n'
+ };
+ static const uint16_t expected[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x0032,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), expected, SIZEOF (expected)) == 0);
+ ASSERT (check (expected, SIZEOF (expected), expected, SIZEOF (expected)) == 0);
+ }
+
+#if HAVE_DECL_ALARM
+ /* Declare failure if test takes too long, by using default abort
+ caused by SIGALRM. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (50);
+#endif
+
+ /* Check that the sorting is not O(n²) but O(n log n). */
+ {
+ int pass;
+ for (pass = 0; pass < 3; pass++)
+ {
+ size_t repeat = 1;
+ size_t m = 100000;
+ uint16_t *input = (uint16_t *) malloc (2 * m * sizeof (uint16_t));
+ if (input != NULL)
+ {
+ uint16_t *expected = input + m;
+ size_t m1 = m / 2;
+ size_t m2 = (m - 1) / 2;
+ /* NB: m1 + m2 == m - 1. */
+ uint16_t *p;
+ size_t i;
+
+ input[0] = 0x0041;
+ p = input + 1;
+ switch (pass)
+ {
+ case 0:
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+ break;
+
+ case 1:
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ break;
+
+ case 2:
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0x0319;
+ *p++ = 0x0300;
+ }
+ for (; i < m1; i++)
+ *p++ = 0x0319;
+ break;
+
+ default:
+ abort ();
+ }
+
+ expected[0] = 0x00C0;
+ p = expected + 1;
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ for (i = 0; i < m2 - 1; i++)
+ *p++ = 0x0300;
+
+ for (; repeat > 0; repeat--)
+ {
+ ASSERT (check (input, m, expected, m - 1) == 0);
+ ASSERT (check (expected, m - 1, expected, m - 1) == 0);
+ }
+
+ free (input);
+ }
+ }
+ }
+}
+
+#else
+
+void
+test_u16_nfkc (void)
+{
+}
+
+#endif
diff --git a/tests/uninorm/test-u16-nfkd.c b/tests/uninorm/test-u16-nfkd.c
new file mode 100644
index 00000000..6dfa39f3
--- /dev/null
+++ b/tests/uninorm/test-u16-nfkd.c
@@ -0,0 +1,349 @@
+/* Test of compatibility decomposition of UTF-16 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#if GNULIB_UNINORM_U16_NORMALIZE
+
+#include "uninorm.h"
+
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint16_t *input, size_t input_length,
+ const uint16_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint16_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u16_normalize (UNINORM_NFKD, input, input_length, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint16_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint16_t *) malloc (length * sizeof (uint16_t));
+ result = u16_normalize (UNINORM_NFKD, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint16_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint16_t *) malloc (length * sizeof (uint16_t));
+ result = u16_normalize (UNINORM_NFKD, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u16_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+void
+test_u16_nfkd (void)
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, 0) == 0);
+ }
+ { /* SPACE */
+ static const uint16_t input[] = { 0x0020 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const uint16_t input[] = { 0x00C4 };
+ static const uint16_t expected[] = { 0x0041, 0x0308 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const uint16_t input[] = { 0x01DE };
+ static const uint16_t expected[] = { 0x0041, 0x0308, 0x0304 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const uint16_t input[] = { 0x1FC1 };
+ static const uint16_t expected[] = { 0x0020, 0x0308, 0x0342 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* SCRIPT SMALL L */
+ static const uint16_t input[] = { 0x2113 };
+ static const uint16_t expected[] = { 0x006C };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* NO-BREAK SPACE */
+ static const uint16_t input[] = { 0x00A0 };
+ static const uint16_t expected[] = { 0x0020 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH INITIAL FORM */
+ static const uint16_t input[] = { 0xFB6C };
+ static const uint16_t expected[] = { 0x06A4 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH MEDIAL FORM */
+ static const uint16_t input[] = { 0xFB6D };
+ static const uint16_t expected[] = { 0x06A4 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH FINAL FORM */
+ static const uint16_t input[] = { 0xFB6B };
+ static const uint16_t expected[] = { 0x06A4 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH ISOLATED FORM */
+ static const uint16_t input[] = { 0xFB6A };
+ static const uint16_t expected[] = { 0x06A4 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* CIRCLED NUMBER FIFTEEN */
+ static const uint16_t input[] = { 0x246E };
+ static const uint16_t expected[] = { 0x0031, 0x0035 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* TRADE MARK SIGN */
+ static const uint16_t input[] = { 0x2122 };
+ static const uint16_t expected[] = { 0x0054, 0x004D };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* LATIN SUBSCRIPT SMALL LETTER I */
+ static const uint16_t input[] = { 0x1D62 };
+ static const uint16_t expected[] = { 0x0069 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS */
+ static const uint16_t input[] = { 0xFE35 };
+ static const uint16_t expected[] = { 0x0028 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* FULLWIDTH LATIN CAPITAL LETTER A */
+ static const uint16_t input[] = { 0xFF21 };
+ static const uint16_t expected[] = { 0x0041 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* HALFWIDTH IDEOGRAPHIC COMMA */
+ static const uint16_t input[] = { 0xFF64 };
+ static const uint16_t expected[] = { 0x3001 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* SMALL IDEOGRAPHIC COMMA */
+ static const uint16_t input[] = { 0xFE51 };
+ static const uint16_t expected[] = { 0x3001 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* SQUARE MHZ */
+ static const uint16_t input[] = { 0x3392 };
+ static const uint16_t expected[] = { 0x004D, 0x0048, 0x007A };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* VULGAR FRACTION THREE EIGHTHS */
+ static const uint16_t input[] = { 0x215C };
+ static const uint16_t expected[] = { 0x0033, 0x2044, 0x0038 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* MICRO SIGN */
+ static const uint16_t input[] = { 0x00B5 };
+ static const uint16_t expected[] = { 0x03BC };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM */
+ static const uint16_t input[] = { 0xFDFA };
+ static const uint16_t expected[] =
+ { 0x0635, 0x0644, 0x0649, 0x0020, 0x0627, 0x0644, 0x0644, 0x0647, 0x0020,
+ 0x0639, 0x0644, 0x064A, 0x0647, 0x0020, 0x0648, 0x0633, 0x0644, 0x0645
+ };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEUL */
+ static const uint16_t input[] = { 0xAE00 };
+ static const uint16_t expected[] = { 0x1100, 0x1173, 0x11AF };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEU */
+ static const uint16_t input[] = { 0xADF8 };
+ static const uint16_t expected[] = { 0x1100, 0x1173 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint16_t input[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint16_t expected[] =
+ { 'G', 'r', 0x0075, 0x0308, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0438, 0x0306, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x0032,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',',
+ 0x1112, 0x1161, 0x11AB, 0x1100, 0x1173, 0x11AF, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+#if HAVE_DECL_ALARM
+ /* Declare failure if test takes too long, by using default abort
+ caused by SIGALRM. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (50);
+#endif
+
+ /* Check that the sorting is not O(n²) but O(n log n). */
+ {
+ int pass;
+ for (pass = 0; pass < 3; pass++)
+ {
+ size_t repeat = 1;
+ size_t m = 100000;
+ uint16_t *input = (uint16_t *) malloc (2 * m * sizeof (uint16_t));
+ if (input != NULL)
+ {
+ uint16_t *expected = input + m;
+ size_t m1 = m / 2;
+ size_t m2 = (m - 1) / 2;
+ /* NB: m1 + m2 == m - 1. */
+ uint16_t *p;
+ size_t i;
+
+ input[0] = 0x0041;
+ p = input + 1;
+ switch (pass)
+ {
+ case 0:
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+ break;
+
+ case 1:
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ break;
+
+ case 2:
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0x0319;
+ *p++ = 0x0300;
+ }
+ for (; i < m1; i++)
+ *p++ = 0x0319;
+ break;
+
+ default:
+ abort ();
+ }
+
+ expected[0] = 0x0041;
+ p = expected + 1;
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+
+ for (; repeat > 0; repeat--)
+ ASSERT (check (input, m, expected, m) == 0);
+
+ free (input);
+ }
+ }
+ }
+}
+
+#else
+
+void
+test_u16_nfkd (void)
+{
+}
+
+#endif
diff --git a/tests/uninorm/test-u16-normcmp.c b/tests/uninorm/test-u16-normcmp.c
new file mode 100644
index 00000000..3cf947a3
--- /dev/null
+++ b/tests/uninorm/test-u16-normcmp.c
@@ -0,0 +1,130 @@
+/* Test of normalization insensitive comparison of UTF-16 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uninorm.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u16-normcmp.h"
+
+static void
+test_nonascii (int (*my_normcmp) (const uint16_t *, size_t, const uint16_t *, size_t, uninorm_t, int *))
+{
+ /* Normalization effects. */
+ {
+ static const uint16_t input1[] = { 'H', 0x00F6, 'h', 'l', 'e' };
+ static const uint16_t input2[] = { 'H', 'o', 0x0308, 'h', 'l', 'e' };
+ static const uint16_t input3[] = { 'H', 0x00F6, 'h', 'l', 'e', 'n' };
+ static const uint16_t input4[] = { 'H', 'o', 0x0308, 'h', 'l', 'e', 'n' };
+ static const uint16_t input5[] = { 'H', 'u', 'r', 'z' };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_normcmp (input2, SIZEOF (input2), input1, SIZEOF (input1), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_normcmp (input3, SIZEOF (input3), input4, SIZEOF (input4), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_normcmp (input4, SIZEOF (input4), input3, SIZEOF (input3), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_normcmp (input2, SIZEOF (input2), input3, SIZEOF (input3), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input4, SIZEOF (input4), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input5, SIZEOF (input5), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_normcmp (input2, SIZEOF (input2), input5, SIZEOF (input5), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+ }
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const uint16_t input1[] = { 0x00C4 };
+ static const uint16_t input2[] = { 0x0041, 0x0308 };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const uint16_t input1[] = { 0x01DE };
+ static const uint16_t input2[] = { 0x0041, 0x0308, 0x0304 };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const uint16_t input1[] = { 0x1FC1 };
+ static const uint16_t input2[] = { 0x00A8, 0x0342 };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* HANGUL SYLLABLE GEUL */
+ static const uint16_t input1[] = { 0xAE00 };
+ static const uint16_t input2[] = { 0xADF8, 0x11AF };
+ static const uint16_t input3[] = { 0x1100, 0x1173, 0x11AF };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input3, SIZEOF (input3), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* HANGUL SYLLABLE GEU */
+ static const uint16_t input1[] = { 0xADF8 };
+ static const uint16_t input2[] = { 0x1100, 0x1173 };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+}
+
+int
+main ()
+{
+ test_ascii (u16_normcmp, UNINORM_NFD);
+ test_nonascii (u16_normcmp);
+
+ return 0;
+}
diff --git a/tests/uninorm/test-u16-normcmp.h b/tests/uninorm/test-u16-normcmp.h
new file mode 100644
index 00000000..ea7def8f
--- /dev/null
+++ b/tests/uninorm/test-u16-normcmp.h
@@ -0,0 +1,69 @@
+/* Test of normalization insensitive comparison of UTF-16 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+static void
+test_ascii (int (*my_normcmp) (const uint16_t *, size_t, const uint16_t *, size_t, uninorm_t, int *),
+ uninorm_t nf)
+{
+ /* Empty string. */
+ {
+ int cmp;
+
+ ASSERT (my_normcmp (NULL, 0, NULL, 0, nf, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ {
+ static const uint16_t input[] = { 'x', 'y' };
+ int cmp;
+
+ ASSERT (my_normcmp (input, SIZEOF (input), NULL, 0, nf, &cmp) == 0);
+ ASSERT (cmp == 1);
+
+ ASSERT (my_normcmp (NULL, 0, input, SIZEOF (input), nf, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_normcmp (input, SIZEOF (input), input, SIZEOF (input), nf, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Normal lexicographic order. */
+ {
+ static const uint16_t input1[] = { 'A', 'm', 'e', 'r', 'i', 'c', 'a' };
+ static const uint16_t input2[] = { 'A', 'm', 'i', 'g', 'o' };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), nf, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_normcmp (input2, SIZEOF (input2), input1, SIZEOF (input1), nf, &cmp) == 0);
+ ASSERT (cmp == 1);
+ }
+
+ /* Shorter and longer strings. */
+ {
+ static const uint16_t input1[] = { 'R', 'e', 'a', 'g', 'a', 'n' };
+ static const uint16_t input2[] = { 'R', 'e', 'a', 'g', 'a', 'n', 'o', 'm', 'i', 'c', 's' };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), nf, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_normcmp (input2, SIZEOF (input2), input1, SIZEOF (input1), nf, &cmp) == 0);
+ ASSERT (cmp == 1);
+ }
+}
diff --git a/tests/uninorm/test-u16-normcoll.c b/tests/uninorm/test-u16-normcoll.c
new file mode 100644
index 00000000..d83799dd
--- /dev/null
+++ b/tests/uninorm/test-u16-normcoll.c
@@ -0,0 +1,49 @@
+/* Test of locale dependent, normalization insensitive comparison of
+ UTF-16 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uninorm.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u16-normcmp.h"
+int
+main ()
+{
+ /* In the "C" locale, strcoll is equivalent to strcmp, therefore u8_normcoll
+ on ASCII strings should behave like strcmp as well. */
+ test_ascii (u16_normcoll, UNINORM_NFC);
+
+ return 0;
+}
diff --git a/tests/uninorm/test-u32-nfc-big.c b/tests/uninorm/test-u32-nfc-big.c
new file mode 100644
index 00000000..2a1b611f
--- /dev/null
+++ b/tests/uninorm/test-u32-nfc-big.c
@@ -0,0 +1,125 @@
+/* Test of Unicode compliance of canonical normalization of UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#if GNULIB_UNINORM_U32_NORMALIZE
+
+#include "uninorm.h"
+
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "progname.h"
+#include "test-u32-normalize-big.h"
+
+static int
+check (const uint32_t *c1, size_t c1_length,
+ const uint32_t *c2, size_t c2_length,
+ const uint32_t *c3, size_t c3_length,
+ const uint32_t *c4, size_t c4_length,
+ const uint32_t *c5, size_t c5_length)
+{
+ /* Check
+ c2 == NFC(c1) == NFC(c2) == NFC(c3)
+ c4 == NFC(c4) == NFC(c5)
+ */
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFC, c1, c1_length, NULL, &length);
+ if (!(result != NULL
+ && length == c2_length
+ && u32_cmp (result, c2, c2_length) == 0))
+ return 1;
+ free (result);
+ }
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFC, c2, c2_length, NULL, &length);
+ if (!(result != NULL
+ && length == c2_length
+ && u32_cmp (result, c2, c2_length) == 0))
+ return 2;
+ free (result);
+ }
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFC, c3, c3_length, NULL, &length);
+ if (!(result != NULL
+ && length == c2_length
+ && u32_cmp (result, c2, c2_length) == 0))
+ return 3;
+ free (result);
+ }
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFC, c4, c4_length, NULL, &length);
+ if (!(result != NULL
+ && length == c4_length
+ && u32_cmp (result, c4, c4_length) == 0))
+ return 4;
+ free (result);
+ }
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFC, c5, c5_length, NULL, &length);
+ if (!(result != NULL
+ && length == c4_length
+ && u32_cmp (result, c4, c4_length) == 0))
+ return 5;
+ free (result);
+ }
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ struct normalization_test_file file;
+
+ set_program_name (argv[0]);
+ read_normalization_test_file (argv[1], &file);
+
+ test_specific (&file, check);
+ test_other (&file, UNINORM_NFC);
+
+ return 0;
+}
+
+#else
+
+#include <stdio.h>
+
+int
+main ()
+{
+ fprintf (stderr, "Skipping test: uninorm/u32-normalize module not included.\n");
+ return 77;
+}
+
+#endif
diff --git a/tests/uninorm/test-u32-nfc-big.sh b/tests/uninorm/test-u32-nfc-big.sh
new file mode 100755
index 00000000..93d0003d
--- /dev/null
+++ b/tests/uninorm/test-u32-nfc-big.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec ./test-u32-nfc-big${EXEEXT} "$srcdir/uninorm/NormalizationTest.txt"
diff --git a/tests/uninorm/test-u32-nfc.c b/tests/uninorm/test-u32-nfc.c
new file mode 100644
index 00000000..0d8311cc
--- /dev/null
+++ b/tests/uninorm/test-u32-nfc.c
@@ -0,0 +1,345 @@
+/* Test of canonical normalization of UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#if GNULIB_UNINORM_U32_NORMALIZE
+
+#include "uninorm.h"
+
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint32_t *input, size_t input_length,
+ const uint32_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint32_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u32_normalize (UNINORM_NFC, input, input_length, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint32_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint32_t *) malloc (length * sizeof (uint32_t));
+ result = u32_normalize (UNINORM_NFC, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint32_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint32_t *) malloc (length * sizeof (uint32_t));
+ result = u32_normalize (UNINORM_NFC, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+void
+test_u32_nfc (void)
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, 0) == 0);
+ }
+ { /* SPACE */
+ static const uint32_t input[] = { 0x0020 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const uint32_t input[] = { 0x00C4 };
+ static const uint32_t decomposed[] = { 0x0041, 0x0308 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const uint32_t input[] = { 0x01DE };
+ static const uint32_t decomposed[] = { 0x0041, 0x0308, 0x0304 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ANGSTROM SIGN */
+ static const uint32_t input[] = { 0x212B };
+ static const uint32_t decomposed[] = { 0x0041, 0x030A };
+ static const uint32_t expected[] = { 0x00C5 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), expected, SIZEOF (expected)) == 0);
+ ASSERT (check (expected, SIZEOF (expected), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const uint32_t input[] = { 0x1FC1 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* SCRIPT SMALL L */
+ static const uint32_t input[] = { 0x2113 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* NO-BREAK SPACE */
+ static const uint32_t input[] = { 0x00A0 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH INITIAL FORM */
+ static const uint32_t input[] = { 0xFB6C };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH MEDIAL FORM */
+ static const uint32_t input[] = { 0xFB6D };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH FINAL FORM */
+ static const uint32_t input[] = { 0xFB6B };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH ISOLATED FORM */
+ static const uint32_t input[] = { 0xFB6A };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* CIRCLED NUMBER FIFTEEN */
+ static const uint32_t input[] = { 0x246E };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* TRADE MARK SIGN */
+ static const uint32_t input[] = { 0x2122 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN SUBSCRIPT SMALL LETTER I */
+ static const uint32_t input[] = { 0x1D62 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS */
+ static const uint32_t input[] = { 0xFE35 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* FULLWIDTH LATIN CAPITAL LETTER A */
+ static const uint32_t input[] = { 0xFF21 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* HALFWIDTH IDEOGRAPHIC COMMA */
+ static const uint32_t input[] = { 0xFF64 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* SMALL IDEOGRAPHIC COMMA */
+ static const uint32_t input[] = { 0xFE51 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* SQUARE MHZ */
+ static const uint32_t input[] = { 0x3392 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* VULGAR FRACTION THREE EIGHTHS */
+ static const uint32_t input[] = { 0x215C };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* MICRO SIGN */
+ static const uint32_t input[] = { 0x00B5 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM */
+ static const uint32_t input[] = { 0xFDFA };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEUL */
+ static const uint32_t input[] = { 0xAE00 };
+ static const uint32_t decomposed[] = { 0x1100, 0x1173, 0x11AF };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEU */
+ static const uint32_t input[] = { 0xADF8 };
+ static const uint32_t decomposed[] = { 0x1100, 0x1173 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint32_t input[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint32_t decomposed[] =
+ { 'G', 'r', 0x0075, 0x0308, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0438, 0x0306, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',',
+ 0x1112, 0x1161, 0x11AB, 0x1100, 0x1173, 0x11AF, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+#if HAVE_DECL_ALARM
+ /* Declare failure if test takes too long, by using default abort
+ caused by SIGALRM. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (50);
+#endif
+
+ /* Check that the sorting is not O(n²) but O(n log n). */
+ {
+ int pass;
+ for (pass = 0; pass < 3; pass++)
+ {
+ size_t repeat = 1;
+ size_t m = 100000;
+ uint32_t *input = (uint32_t *) malloc (2 * m * sizeof (uint32_t));
+ if (input != NULL)
+ {
+ uint32_t *expected = input + m;
+ size_t m1 = m / 2;
+ size_t m2 = (m - 1) / 2;
+ /* NB: m1 + m2 == m - 1. */
+ uint32_t *p;
+ size_t i;
+
+ input[0] = 0x0041;
+ p = input + 1;
+ switch (pass)
+ {
+ case 0:
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+ break;
+
+ case 1:
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ break;
+
+ case 2:
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0x0319;
+ *p++ = 0x0300;
+ }
+ for (; i < m1; i++)
+ *p++ = 0x0319;
+ break;
+
+ default:
+ abort ();
+ }
+
+ expected[0] = 0x00C0;
+ p = expected + 1;
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ for (i = 0; i < m2 - 1; i++)
+ *p++ = 0x0300;
+
+ for (; repeat > 0; repeat--)
+ {
+ ASSERT (check (input, m, expected, m - 1) == 0);
+ ASSERT (check (expected, m - 1, expected, m - 1) == 0);
+ }
+
+ free (input);
+ }
+ }
+ }
+}
+
+#else
+
+void
+test_u32_nfc (void)
+{
+}
+
+#endif
diff --git a/tests/uninorm/test-u32-nfd-big.c b/tests/uninorm/test-u32-nfd-big.c
new file mode 100644
index 00000000..9bfd0d89
--- /dev/null
+++ b/tests/uninorm/test-u32-nfd-big.c
@@ -0,0 +1,125 @@
+/* Test of Unicode compliance of canonical decomposition of UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#if GNULIB_UNINORM_U32_NORMALIZE
+
+#include "uninorm.h"
+
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "progname.h"
+#include "test-u32-normalize-big.h"
+
+static int
+check (const uint32_t *c1, size_t c1_length,
+ const uint32_t *c2, size_t c2_length,
+ const uint32_t *c3, size_t c3_length,
+ const uint32_t *c4, size_t c4_length,
+ const uint32_t *c5, size_t c5_length)
+{
+ /* Check
+ c3 == NFD(c1) == NFD(c2) == NFD(c3)
+ c5 == NFD(c4) == NFD(c5)
+ */
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFD, c1, c1_length, NULL, &length);
+ if (!(result != NULL
+ && length == c3_length
+ && u32_cmp (result, c3, c3_length) == 0))
+ return 1;
+ free (result);
+ }
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFD, c2, c2_length, NULL, &length);
+ if (!(result != NULL
+ && length == c3_length
+ && u32_cmp (result, c3, c3_length) == 0))
+ return 2;
+ free (result);
+ }
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFD, c3, c3_length, NULL, &length);
+ if (!(result != NULL
+ && length == c3_length
+ && u32_cmp (result, c3, c3_length) == 0))
+ return 3;
+ free (result);
+ }
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFD, c4, c4_length, NULL, &length);
+ if (!(result != NULL
+ && length == c5_length
+ && u32_cmp (result, c5, c5_length) == 0))
+ return 4;
+ free (result);
+ }
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFD, c5, c5_length, NULL, &length);
+ if (!(result != NULL
+ && length == c5_length
+ && u32_cmp (result, c5, c5_length) == 0))
+ return 5;
+ free (result);
+ }
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ struct normalization_test_file file;
+
+ set_program_name (argv[0]);
+ read_normalization_test_file (argv[1], &file);
+
+ test_specific (&file, check);
+ test_other (&file, UNINORM_NFD);
+
+ return 0;
+}
+
+#else
+
+#include <stdio.h>
+
+int
+main ()
+{
+ fprintf (stderr, "Skipping test: uninorm/u32-normalize module not included.\n");
+ return 77;
+}
+
+#endif
diff --git a/tests/uninorm/test-u32-nfd-big.sh b/tests/uninorm/test-u32-nfd-big.sh
new file mode 100755
index 00000000..3cfe2c56
--- /dev/null
+++ b/tests/uninorm/test-u32-nfd-big.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec ./test-u32-nfd-big${EXEEXT} "$srcdir/uninorm/NormalizationTest.txt"
diff --git a/tests/uninorm/test-u32-nfd.c b/tests/uninorm/test-u32-nfd.c
new file mode 100644
index 00000000..f7b2d8df
--- /dev/null
+++ b/tests/uninorm/test-u32-nfd.c
@@ -0,0 +1,329 @@
+/* Test of canonical decomposition of UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#if GNULIB_UNINORM_U32_NORMALIZE
+
+#include "uninorm.h"
+
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint32_t *input, size_t input_length,
+ const uint32_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint32_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u32_normalize (UNINORM_NFD, input, input_length, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint32_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint32_t *) malloc (length * sizeof (uint32_t));
+ result = u32_normalize (UNINORM_NFD, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint32_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint32_t *) malloc (length * sizeof (uint32_t));
+ result = u32_normalize (UNINORM_NFD, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+void
+test_u32_nfd (void)
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, 0) == 0);
+ }
+ { /* SPACE */
+ static const uint32_t input[] = { 0x0020 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const uint32_t input[] = { 0x00C4 };
+ static const uint32_t expected[] = { 0x0041, 0x0308 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const uint32_t input[] = { 0x01DE };
+ static const uint32_t expected[] = { 0x0041, 0x0308, 0x0304 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const uint32_t input[] = { 0x1FC1 };
+ static const uint32_t expected[] = { 0x00A8, 0x0342 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* SCRIPT SMALL L */
+ static const uint32_t input[] = { 0x2113 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* NO-BREAK SPACE */
+ static const uint32_t input[] = { 0x00A0 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH INITIAL FORM */
+ static const uint32_t input[] = { 0xFB6C };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH MEDIAL FORM */
+ static const uint32_t input[] = { 0xFB6D };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH FINAL FORM */
+ static const uint32_t input[] = { 0xFB6B };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH ISOLATED FORM */
+ static const uint32_t input[] = { 0xFB6A };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* CIRCLED NUMBER FIFTEEN */
+ static const uint32_t input[] = { 0x246E };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* TRADE MARK SIGN */
+ static const uint32_t input[] = { 0x2122 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN SUBSCRIPT SMALL LETTER I */
+ static const uint32_t input[] = { 0x1D62 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS */
+ static const uint32_t input[] = { 0xFE35 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* FULLWIDTH LATIN CAPITAL LETTER A */
+ static const uint32_t input[] = { 0xFF21 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* HALFWIDTH IDEOGRAPHIC COMMA */
+ static const uint32_t input[] = { 0xFF64 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* SMALL IDEOGRAPHIC COMMA */
+ static const uint32_t input[] = { 0xFE51 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* SQUARE MHZ */
+ static const uint32_t input[] = { 0x3392 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* VULGAR FRACTION THREE EIGHTHS */
+ static const uint32_t input[] = { 0x215C };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* MICRO SIGN */
+ static const uint32_t input[] = { 0x00B5 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM */
+ static const uint32_t input[] = { 0xFDFA };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEUL */
+ static const uint32_t input[] = { 0xAE00 };
+ static const uint32_t expected[] = { 0x1100, 0x1173, 0x11AF };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEU */
+ static const uint32_t input[] = { 0xADF8 };
+ static const uint32_t expected[] = { 0x1100, 0x1173 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint32_t input[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint32_t expected[] =
+ { 'G', 'r', 0x0075, 0x0308, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0438, 0x0306, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',',
+ 0x1112, 0x1161, 0x11AB, 0x1100, 0x1173, 0x11AF, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+#if HAVE_DECL_ALARM
+ /* Declare failure if test takes too long, by using default abort
+ caused by SIGALRM. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (50);
+#endif
+
+ /* Check that the sorting is not O(n²) but O(n log n). */
+ {
+ int pass;
+ for (pass = 0; pass < 3; pass++)
+ {
+ size_t repeat = 1;
+ size_t m = 100000;
+ uint32_t *input = (uint32_t *) malloc (2 * m * sizeof (uint32_t));
+ if (input != NULL)
+ {
+ uint32_t *expected = input + m;
+ size_t m1 = m / 2;
+ size_t m2 = (m - 1) / 2;
+ /* NB: m1 + m2 == m - 1. */
+ uint32_t *p;
+ size_t i;
+
+ input[0] = 0x0041;
+ p = input + 1;
+ switch (pass)
+ {
+ case 0:
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+ break;
+
+ case 1:
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ break;
+
+ case 2:
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0x0319;
+ *p++ = 0x0300;
+ }
+ for (; i < m1; i++)
+ *p++ = 0x0319;
+ break;
+
+ default:
+ abort ();
+ }
+
+ expected[0] = 0x0041;
+ p = expected + 1;
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+
+ for (; repeat > 0; repeat--)
+ ASSERT (check (input, m, expected, m) == 0);
+
+ free (input);
+ }
+ }
+ }
+}
+
+#else
+
+void
+test_u32_nfd (void)
+{
+}
+
+#endif
diff --git a/tests/uninorm/test-u32-nfkc-big.c b/tests/uninorm/test-u32-nfkc-big.c
new file mode 100644
index 00000000..340fe65b
--- /dev/null
+++ b/tests/uninorm/test-u32-nfkc-big.c
@@ -0,0 +1,122 @@
+/* Test of Unicode compliance of compatibility normalization of UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#if GNULIB_UNINORM_U32_NORMALIZE
+
+#include "uninorm.h"
+
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "progname.h"
+#include "test-u32-normalize-big.h"
+
+static int
+check (const uint32_t *c1, size_t c1_length,
+ const uint32_t *c2, size_t c2_length,
+ const uint32_t *c3, size_t c3_length,
+ const uint32_t *c4, size_t c4_length,
+ const uint32_t *c5, size_t c5_length)
+{
+ /* Check c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5). */
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFKC, c1, c1_length, NULL, &length);
+ if (!(result != NULL
+ && length == c4_length
+ && u32_cmp (result, c4, c4_length) == 0))
+ return 1;
+ free (result);
+ }
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFKC, c2, c2_length, NULL, &length);
+ if (!(result != NULL
+ && length == c4_length
+ && u32_cmp (result, c4, c4_length) == 0))
+ return 2;
+ free (result);
+ }
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFKC, c3, c3_length, NULL, &length);
+ if (!(result != NULL
+ && length == c4_length
+ && u32_cmp (result, c4, c4_length) == 0))
+ return 3;
+ free (result);
+ }
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFKC, c4, c4_length, NULL, &length);
+ if (!(result != NULL
+ && length == c4_length
+ && u32_cmp (result, c4, c4_length) == 0))
+ return 4;
+ free (result);
+ }
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFKC, c5, c5_length, NULL, &length);
+ if (!(result != NULL
+ && length == c4_length
+ && u32_cmp (result, c4, c4_length) == 0))
+ return 5;
+ free (result);
+ }
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ struct normalization_test_file file;
+
+ set_program_name (argv[0]);
+ read_normalization_test_file (argv[1], &file);
+
+ test_specific (&file, check);
+ test_other (&file, UNINORM_NFKC);
+
+ return 0;
+}
+
+#else
+
+#include <stdio.h>
+
+int
+main ()
+{
+ fprintf (stderr, "Skipping test: uninorm/u32-normalize module not included.\n");
+ return 77;
+}
+
+#endif
diff --git a/tests/uninorm/test-u32-nfkc-big.sh b/tests/uninorm/test-u32-nfkc-big.sh
new file mode 100755
index 00000000..cd816196
--- /dev/null
+++ b/tests/uninorm/test-u32-nfkc-big.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec ./test-u32-nfkc-big${EXEEXT} "$srcdir/uninorm/NormalizationTest.txt"
diff --git a/tests/uninorm/test-u32-nfkc.c b/tests/uninorm/test-u32-nfkc.c
new file mode 100644
index 00000000..75f7e825
--- /dev/null
+++ b/tests/uninorm/test-u32-nfkc.c
@@ -0,0 +1,393 @@
+/* Test of compatibility normalization of UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#if GNULIB_UNINORM_U32_NORMALIZE
+
+#include "uninorm.h"
+
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint32_t *input, size_t input_length,
+ const uint32_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint32_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u32_normalize (UNINORM_NFKC, input, input_length, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint32_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint32_t *) malloc (length * sizeof (uint32_t));
+ result = u32_normalize (UNINORM_NFKC, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint32_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint32_t *) malloc (length * sizeof (uint32_t));
+ result = u32_normalize (UNINORM_NFKC, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+void
+test_u32_nfkc (void)
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, 0) == 0);
+ }
+ { /* SPACE */
+ static const uint32_t input[] = { 0x0020 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const uint32_t input[] = { 0x00C4 };
+ static const uint32_t decomposed[] = { 0x0041, 0x0308 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const uint32_t input[] = { 0x01DE };
+ static const uint32_t decomposed[] = { 0x0041, 0x0308, 0x0304 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ANGSTROM SIGN */
+ static const uint32_t input[] = { 0x212B };
+ static const uint32_t decomposed[] = { 0x0041, 0x030A };
+ static const uint32_t expected[] = { 0x00C5 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), expected, SIZEOF (expected)) == 0);
+ ASSERT (check (expected, SIZEOF (expected), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const uint32_t input[] = { 0x1FC1 };
+ static const uint32_t decomposed[] = { 0x0020, 0x0308, 0x0342 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* SCRIPT SMALL L */
+ static const uint32_t input[] = { 0x2113 };
+ static const uint32_t decomposed[] = { 0x006C };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* NO-BREAK SPACE */
+ static const uint32_t input[] = { 0x00A0 };
+ static const uint32_t decomposed[] = { 0x0020 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH INITIAL FORM */
+ static const uint32_t input[] = { 0xFB6C };
+ static const uint32_t decomposed[] = { 0x06A4 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH MEDIAL FORM */
+ static const uint32_t input[] = { 0xFB6D };
+ static const uint32_t decomposed[] = { 0x06A4 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH FINAL FORM */
+ static const uint32_t input[] = { 0xFB6B };
+ static const uint32_t decomposed[] = { 0x06A4 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH ISOLATED FORM */
+ static const uint32_t input[] = { 0xFB6A };
+ static const uint32_t decomposed[] = { 0x06A4 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* CIRCLED NUMBER FIFTEEN */
+ static const uint32_t input[] = { 0x246E };
+ static const uint32_t decomposed[] = { 0x0031, 0x0035 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* TRADE MARK SIGN */
+ static const uint32_t input[] = { 0x2122 };
+ static const uint32_t decomposed[] = { 0x0054, 0x004D };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* LATIN SUBSCRIPT SMALL LETTER I */
+ static const uint32_t input[] = { 0x1D62 };
+ static const uint32_t decomposed[] = { 0x0069 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS */
+ static const uint32_t input[] = { 0xFE35 };
+ static const uint32_t decomposed[] = { 0x0028 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* FULLWIDTH LATIN CAPITAL LETTER A */
+ static const uint32_t input[] = { 0xFF21 };
+ static const uint32_t decomposed[] = { 0x0041 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* HALFWIDTH IDEOGRAPHIC COMMA */
+ static const uint32_t input[] = { 0xFF64 };
+ static const uint32_t decomposed[] = { 0x3001 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* SMALL IDEOGRAPHIC COMMA */
+ static const uint32_t input[] = { 0xFE51 };
+ static const uint32_t decomposed[] = { 0x3001 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* SQUARE MHZ */
+ static const uint32_t input[] = { 0x3392 };
+ static const uint32_t decomposed[] = { 0x004D, 0x0048, 0x007A };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* VULGAR FRACTION THREE EIGHTHS */
+ static const uint32_t input[] = { 0x215C };
+ static const uint32_t decomposed[] = { 0x0033, 0x2044, 0x0038 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* MICRO SIGN */
+ static const uint32_t input[] = { 0x00B5 };
+ static const uint32_t decomposed[] = { 0x03BC };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM */
+ static const uint32_t input[] = { 0xFDFA };
+ static const uint32_t decomposed[] =
+ { 0x0635, 0x0644, 0x0649, 0x0020, 0x0627, 0x0644, 0x0644, 0x0647, 0x0020,
+ 0x0639, 0x0644, 0x064A, 0x0647, 0x0020, 0x0648, 0x0633, 0x0644, 0x0645
+ };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEUL */
+ static const uint32_t input[] = { 0xAE00 };
+ static const uint32_t decomposed[] = { 0x1100, 0x1173, 0x11AF };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEU */
+ static const uint32_t input[] = { 0xADF8 };
+ static const uint32_t decomposed[] = { 0x1100, 0x1173 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint32_t input[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint32_t decomposed[] =
+ { 'G', 'r', 0x0075, 0x0308, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0438, 0x0306, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x0032,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',',
+ 0x1112, 0x1161, 0x11AB, 0x1100, 0x1173, 0x11AF, '\n'
+ };
+ static const uint32_t expected[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x0032,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), expected, SIZEOF (expected)) == 0);
+ ASSERT (check (expected, SIZEOF (expected), expected, SIZEOF (expected)) == 0);
+ }
+
+#if HAVE_DECL_ALARM
+ /* Declare failure if test takes too long, by using default abort
+ caused by SIGALRM. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (50);
+#endif
+
+ /* Check that the sorting is not O(n²) but O(n log n). */
+ {
+ int pass;
+ for (pass = 0; pass < 3; pass++)
+ {
+ size_t repeat = 1;
+ size_t m = 100000;
+ uint32_t *input = (uint32_t *) malloc (2 * m * sizeof (uint32_t));
+ if (input != NULL)
+ {
+ uint32_t *expected = input + m;
+ size_t m1 = m / 2;
+ size_t m2 = (m - 1) / 2;
+ /* NB: m1 + m2 == m - 1. */
+ uint32_t *p;
+ size_t i;
+
+ input[0] = 0x0041;
+ p = input + 1;
+ switch (pass)
+ {
+ case 0:
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+ break;
+
+ case 1:
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ break;
+
+ case 2:
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0x0319;
+ *p++ = 0x0300;
+ }
+ for (; i < m1; i++)
+ *p++ = 0x0319;
+ break;
+
+ default:
+ abort ();
+ }
+
+ expected[0] = 0x00C0;
+ p = expected + 1;
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ for (i = 0; i < m2 - 1; i++)
+ *p++ = 0x0300;
+
+ for (; repeat > 0; repeat--)
+ {
+ ASSERT (check (input, m, expected, m - 1) == 0);
+ ASSERT (check (expected, m - 1, expected, m - 1) == 0);
+ }
+
+ free (input);
+ }
+ }
+ }
+}
+
+#else
+
+void
+test_u32_nfkc (void)
+{
+}
+
+#endif
diff --git a/tests/uninorm/test-u32-nfkd-big.c b/tests/uninorm/test-u32-nfkd-big.c
new file mode 100644
index 00000000..e7c1b4f3
--- /dev/null
+++ b/tests/uninorm/test-u32-nfkd-big.c
@@ -0,0 +1,122 @@
+/* Test of Unicode compliance of compatibility decomposition of UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#if GNULIB_UNINORM_U32_NORMALIZE
+
+#include "uninorm.h"
+
+#include <stdlib.h>
+
+#include "unistr.h"
+#include "progname.h"
+#include "test-u32-normalize-big.h"
+
+static int
+check (const uint32_t *c1, size_t c1_length,
+ const uint32_t *c2, size_t c2_length,
+ const uint32_t *c3, size_t c3_length,
+ const uint32_t *c4, size_t c4_length,
+ const uint32_t *c5, size_t c5_length)
+{
+ /* Check c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5). */
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFKD, c1, c1_length, NULL, &length);
+ if (!(result != NULL
+ && length == c5_length
+ && u32_cmp (result, c5, c5_length) == 0))
+ return 1;
+ free (result);
+ }
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFKD, c2, c2_length, NULL, &length);
+ if (!(result != NULL
+ && length == c5_length
+ && u32_cmp (result, c5, c5_length) == 0))
+ return 2;
+ free (result);
+ }
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFKD, c3, c3_length, NULL, &length);
+ if (!(result != NULL
+ && length == c5_length
+ && u32_cmp (result, c5, c5_length) == 0))
+ return 3;
+ free (result);
+ }
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFKD, c4, c4_length, NULL, &length);
+ if (!(result != NULL
+ && length == c5_length
+ && u32_cmp (result, c5, c5_length) == 0))
+ return 4;
+ free (result);
+ }
+ {
+ size_t length;
+ uint32_t *result;
+
+ result = u32_normalize (UNINORM_NFKD, c5, c5_length, NULL, &length);
+ if (!(result != NULL
+ && length == c5_length
+ && u32_cmp (result, c5, c5_length) == 0))
+ return 5;
+ free (result);
+ }
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ struct normalization_test_file file;
+
+ set_program_name (argv[0]);
+ read_normalization_test_file (argv[1], &file);
+
+ test_specific (&file, check);
+ test_other (&file, UNINORM_NFKD);
+
+ return 0;
+}
+
+#else
+
+#include <stdio.h>
+
+int
+main ()
+{
+ fprintf (stderr, "Skipping test: uninorm/u32-normalize module not included.\n");
+ return 77;
+}
+
+#endif
diff --git a/tests/uninorm/test-u32-nfkd-big.sh b/tests/uninorm/test-u32-nfkd-big.sh
new file mode 100755
index 00000000..a279c124
--- /dev/null
+++ b/tests/uninorm/test-u32-nfkd-big.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec ./test-u32-nfkd-big${EXEEXT} "$srcdir/uninorm/NormalizationTest.txt"
diff --git a/tests/uninorm/test-u32-nfkd.c b/tests/uninorm/test-u32-nfkd.c
new file mode 100644
index 00000000..d3de7f76
--- /dev/null
+++ b/tests/uninorm/test-u32-nfkd.c
@@ -0,0 +1,349 @@
+/* Test of compatibility decomposition of UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#if GNULIB_UNINORM_U32_NORMALIZE
+
+#include "uninorm.h"
+
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint32_t *input, size_t input_length,
+ const uint32_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint32_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u32_normalize (UNINORM_NFKD, input, input_length, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint32_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint32_t *) malloc (length * sizeof (uint32_t));
+ result = u32_normalize (UNINORM_NFKD, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint32_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint32_t *) malloc (length * sizeof (uint32_t));
+ result = u32_normalize (UNINORM_NFKD, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u32_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+void
+test_u32_nfkd (void)
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, 0) == 0);
+ }
+ { /* SPACE */
+ static const uint32_t input[] = { 0x0020 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const uint32_t input[] = { 0x00C4 };
+ static const uint32_t expected[] = { 0x0041, 0x0308 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const uint32_t input[] = { 0x01DE };
+ static const uint32_t expected[] = { 0x0041, 0x0308, 0x0304 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const uint32_t input[] = { 0x1FC1 };
+ static const uint32_t expected[] = { 0x0020, 0x0308, 0x0342 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* SCRIPT SMALL L */
+ static const uint32_t input[] = { 0x2113 };
+ static const uint32_t expected[] = { 0x006C };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* NO-BREAK SPACE */
+ static const uint32_t input[] = { 0x00A0 };
+ static const uint32_t expected[] = { 0x0020 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH INITIAL FORM */
+ static const uint32_t input[] = { 0xFB6C };
+ static const uint32_t expected[] = { 0x06A4 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH MEDIAL FORM */
+ static const uint32_t input[] = { 0xFB6D };
+ static const uint32_t expected[] = { 0x06A4 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH FINAL FORM */
+ static const uint32_t input[] = { 0xFB6B };
+ static const uint32_t expected[] = { 0x06A4 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH ISOLATED FORM */
+ static const uint32_t input[] = { 0xFB6A };
+ static const uint32_t expected[] = { 0x06A4 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* CIRCLED NUMBER FIFTEEN */
+ static const uint32_t input[] = { 0x246E };
+ static const uint32_t expected[] = { 0x0031, 0x0035 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* TRADE MARK SIGN */
+ static const uint32_t input[] = { 0x2122 };
+ static const uint32_t expected[] = { 0x0054, 0x004D };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* LATIN SUBSCRIPT SMALL LETTER I */
+ static const uint32_t input[] = { 0x1D62 };
+ static const uint32_t expected[] = { 0x0069 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS */
+ static const uint32_t input[] = { 0xFE35 };
+ static const uint32_t expected[] = { 0x0028 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* FULLWIDTH LATIN CAPITAL LETTER A */
+ static const uint32_t input[] = { 0xFF21 };
+ static const uint32_t expected[] = { 0x0041 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* HALFWIDTH IDEOGRAPHIC COMMA */
+ static const uint32_t input[] = { 0xFF64 };
+ static const uint32_t expected[] = { 0x3001 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* SMALL IDEOGRAPHIC COMMA */
+ static const uint32_t input[] = { 0xFE51 };
+ static const uint32_t expected[] = { 0x3001 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* SQUARE MHZ */
+ static const uint32_t input[] = { 0x3392 };
+ static const uint32_t expected[] = { 0x004D, 0x0048, 0x007A };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* VULGAR FRACTION THREE EIGHTHS */
+ static const uint32_t input[] = { 0x215C };
+ static const uint32_t expected[] = { 0x0033, 0x2044, 0x0038 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* MICRO SIGN */
+ static const uint32_t input[] = { 0x00B5 };
+ static const uint32_t expected[] = { 0x03BC };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM */
+ static const uint32_t input[] = { 0xFDFA };
+ static const uint32_t expected[] =
+ { 0x0635, 0x0644, 0x0649, 0x0020, 0x0627, 0x0644, 0x0644, 0x0647, 0x0020,
+ 0x0639, 0x0644, 0x064A, 0x0647, 0x0020, 0x0648, 0x0633, 0x0644, 0x0645
+ };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEUL */
+ static const uint32_t input[] = { 0xAE00 };
+ static const uint32_t expected[] = { 0x1100, 0x1173, 0x11AF };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEU */
+ static const uint32_t input[] = { 0xADF8 };
+ static const uint32_t expected[] = { 0x1100, 0x1173 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint32_t input[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint32_t expected[] =
+ { 'G', 'r', 0x0075, 0x0308, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0438, 0x0306, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x0032,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',',
+ 0x1112, 0x1161, 0x11AB, 0x1100, 0x1173, 0x11AF, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+#if HAVE_DECL_ALARM
+ /* Declare failure if test takes too long, by using default abort
+ caused by SIGALRM. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (50);
+#endif
+
+ /* Check that the sorting is not O(n²) but O(n log n). */
+ {
+ int pass;
+ for (pass = 0; pass < 3; pass++)
+ {
+ size_t repeat = 1;
+ size_t m = 100000;
+ uint32_t *input = (uint32_t *) malloc (2 * m * sizeof (uint32_t));
+ if (input != NULL)
+ {
+ uint32_t *expected = input + m;
+ size_t m1 = m / 2;
+ size_t m2 = (m - 1) / 2;
+ /* NB: m1 + m2 == m - 1. */
+ uint32_t *p;
+ size_t i;
+
+ input[0] = 0x0041;
+ p = input + 1;
+ switch (pass)
+ {
+ case 0:
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+ break;
+
+ case 1:
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ break;
+
+ case 2:
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0x0319;
+ *p++ = 0x0300;
+ }
+ for (; i < m1; i++)
+ *p++ = 0x0319;
+ break;
+
+ default:
+ abort ();
+ }
+
+ expected[0] = 0x0041;
+ p = expected + 1;
+ for (i = 0; i < m1; i++)
+ *p++ = 0x0319;
+ for (i = 0; i < m2; i++)
+ *p++ = 0x0300;
+
+ for (; repeat > 0; repeat--)
+ ASSERT (check (input, m, expected, m) == 0);
+
+ free (input);
+ }
+ }
+ }
+}
+
+#else
+
+void
+test_u32_nfkd (void)
+{
+}
+
+#endif
diff --git a/tests/uninorm/test-u32-normalize-big.c b/tests/uninorm/test-u32-normalize-big.c
new file mode 100644
index 00000000..96781ab0
--- /dev/null
+++ b/tests/uninorm/test-u32-normalize-big.c
@@ -0,0 +1,315 @@
+/* Test of Unicode compliance of normalization of UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+/* Specification. */
+#include "test-u32-normalize-big.h"
+
+#if GNULIB_UNINORM_U32_NORMALIZE
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "xalloc.h"
+#include "unistr.h"
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#define ASSERT_WITH_LINE(expr, file, line) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed for %s:%u\n", \
+ __FILE__, __LINE__, file, line); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+cmp_ucs4_t (const void *a, const void *b)
+{
+ ucs4_t a_value = *(const ucs4_t *)a;
+ ucs4_t b_value = *(const ucs4_t *)b;
+ return (a_value < b_value ? -1 : a_value > b_value ? 1 : 0);
+}
+
+void
+read_normalization_test_file (const char *filename,
+ struct normalization_test_file *file)
+{
+ FILE *stream;
+ unsigned int lineno;
+ int part_index;
+ struct normalization_test_line *lines;
+ size_t lines_length;
+ size_t lines_allocated;
+
+ stream = fopen (filename, "r");
+ if (stream == NULL)
+ {
+ fprintf (stderr, "error during fopen of '%s'\n", filename);
+ exit (1);
+ }
+
+ for (part_index = 0; part_index < 4; part_index++)
+ {
+ file->parts[part_index].lines = NULL;
+ file->parts[part_index].lines_length = 0;
+ }
+
+ lineno = 0;
+
+ part_index = -1;
+ lines = NULL;
+ lines_length = 0;
+ lines_allocated = 0;
+
+ for (;;)
+ {
+ char buf[1000+1];
+ char *ptr;
+ int c;
+ struct normalization_test_line line;
+ size_t sequence_index;
+
+ lineno++;
+
+ /* Read a line. */
+ ptr = buf;
+ do
+ {
+ c = getc (stream);
+ if (c == EOF || c == '\n')
+ break;
+ *ptr++ = c;
+ }
+ while (ptr < buf + 1000);
+ *ptr = '\0';
+ if (c == EOF)
+ break;
+
+ /* Ignore empty lines and comment lines. */
+ if (buf[0] == '\0' || buf[0] == '#')
+ continue;
+
+ /* Handle lines that introduce a new part. */
+ if (buf[0] == '@')
+ {
+ /* Switch to the next part. */
+ if (part_index >= 0)
+ {
+ lines =
+ (struct normalization_test_line *)
+ xnrealloc (lines, lines_length, sizeof (struct normalization_test_line));
+ file->parts[part_index].lines = lines;
+ file->parts[part_index].lines_length = lines_length;
+ }
+ part_index++;
+ lines = NULL;
+ lines_length = 0;
+ lines_allocated = 0;
+ continue;
+ }
+
+ /* It's a line containing 5 sequences of Unicode characters.
+ Parse it and append it to the current part. */
+ if (!(part_index >= 0 && part_index < 4))
+ {
+ fprintf (stderr, "unexpected structure of '%s'\n", filename);
+ exit (1);
+ }
+ ptr = buf;
+ line.lineno = lineno;
+ for (sequence_index = 0; sequence_index < 5; sequence_index++)
+ line.sequences[sequence_index] = NULL;
+ for (sequence_index = 0; sequence_index < 5; sequence_index++)
+ {
+ uint32_t *sequence = XNMALLOC (1, uint32_t);
+ size_t sequence_length = 0;
+
+ for (;;)
+ {
+ char *endptr;
+ unsigned int uc;
+
+ uc = strtoul (ptr, &endptr, 16);
+ if (endptr == ptr)
+ break;
+ ptr = endptr;
+
+ /* Append uc to the sequence. */
+ sequence =
+ (uint32_t *)
+ xnrealloc (sequence, sequence_length + 2, sizeof (uint32_t));
+ sequence[sequence_length] = uc;
+ sequence_length++;
+
+ if (*ptr == ' ')
+ ptr++;
+ }
+ if (sequence_length == 0)
+ {
+ fprintf (stderr, "empty character sequence in '%s'\n", filename);
+ exit (1);
+ }
+ sequence[sequence_length] = 0; /* terminator */
+
+ line.sequences[sequence_index] = sequence;
+
+ if (*ptr != ';')
+ {
+ fprintf (stderr, "error parsing '%s'\n", filename);
+ exit (1);
+ }
+ ptr++;
+ }
+
+ /* Append the line to the current part. */
+ if (lines_length == lines_allocated)
+ {
+ lines_allocated = 2 * lines_allocated;
+ if (lines_allocated < 7)
+ lines_allocated = 7;
+ lines =
+ (struct normalization_test_line *)
+ xnrealloc (lines, lines_allocated, sizeof (struct normalization_test_line));
+ }
+ lines[lines_length] = line;
+ lines_length++;
+ }
+
+ if (part_index >= 0)
+ {
+ lines =
+ (struct normalization_test_line *)
+ xnrealloc (lines, lines_length, sizeof (struct normalization_test_line));
+ file->parts[part_index].lines = lines;
+ file->parts[part_index].lines_length = lines_length;
+ }
+
+ {
+ /* Collect all c1 values from the part 1 in an array. */
+ const struct normalization_test_part *p = &file->parts[1];
+ ucs4_t *c1_array = XNMALLOC (p->lines_length + 1, ucs4_t);
+ size_t line_index;
+
+ for (line_index = 0; line_index < p->lines_length; line_index++)
+ {
+ const uint32_t *sequence = p->lines[line_index].sequences[0];
+ /* In part 1, every sequences[0] consists of a single character. */
+ if (!(sequence[0] != 0 && sequence[1] == 0))
+ abort ();
+ c1_array[line_index] = sequence[0];
+ }
+
+ /* Sort this array. */
+ qsort (c1_array, p->lines_length, sizeof (ucs4_t), cmp_ucs4_t);
+
+ /* Add the sentinel at the end. */
+ c1_array[p->lines_length] = 0x110000;
+
+ file->part1_c1_sorted = c1_array;
+ }
+
+ file->filename = xstrdup (filename);
+
+ if (ferror (stream) || fclose (stream))
+ {
+ fprintf (stderr, "error reading from '%s'\n", filename);
+ exit (1);
+ }
+}
+
+void
+test_specific (const struct normalization_test_file *file,
+ int (*check) (const uint32_t *c1, size_t c1_length,
+ const uint32_t *c2, size_t c2_length,
+ const uint32_t *c3, size_t c3_length,
+ const uint32_t *c4, size_t c4_length,
+ const uint32_t *c5, size_t c5_length))
+{
+ size_t part_index;
+
+ for (part_index = 0; part_index < 4; part_index++)
+ {
+ const struct normalization_test_part *p = &file->parts[part_index];
+ size_t line_index;
+
+ for (line_index = 0; line_index < p->lines_length; line_index++)
+ {
+ const struct normalization_test_line *l = &p->lines[line_index];
+
+ ASSERT_WITH_LINE (check (l->sequences[0], u32_strlen (l->sequences[0]),
+ l->sequences[1], u32_strlen (l->sequences[1]),
+ l->sequences[2], u32_strlen (l->sequences[2]),
+ l->sequences[3], u32_strlen (l->sequences[3]),
+ l->sequences[4], u32_strlen (l->sequences[4]))
+ == 0,
+ file->filename, l->lineno);
+ }
+ }
+}
+
+void
+test_other (const struct normalization_test_file *file, uninorm_t nf)
+{
+ /* Check that for every character not listed in part 1 of the
+ NormalizationTest.txt file, the character maps to itself in each
+ of the four normalization forms. */
+ const ucs4_t *p = file->part1_c1_sorted;
+ ucs4_t uc;
+
+ for (uc = 0; uc < 0x110000; uc++)
+ {
+ if (uc >= 0xD800 && uc < 0xE000)
+ {
+ /* A surrogate, not a character. Skip uc. */
+ }
+ else if (uc == *p)
+ {
+ /* Skip uc. */
+ p++;
+ }
+ else
+ {
+ uint32_t input[1];
+ size_t length;
+ uint32_t *result;
+
+ input[0] = uc;
+ result = u32_normalize (nf, input, 1, NULL, &length);
+ ASSERT (result != NULL && length == 1 && result[0] == uc);
+ }
+ }
+}
+
+#endif
diff --git a/tests/uninorm/test-u32-normalize-big.h b/tests/uninorm/test-u32-normalize-big.h
new file mode 100644
index 00000000..f154daa9
--- /dev/null
+++ b/tests/uninorm/test-u32-normalize-big.h
@@ -0,0 +1,70 @@
+/* Test of Unicode compliance of normalization of UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <stddef.h>
+
+#include "unitypes.h"
+#include "uninorm.h"
+
+/* The NormalizationTest.txt is from www.unicode.org, with stripped comments:
+ sed -e 's| *#.*||' < .../ucd/NormalizationTest.txt \
+ > tests/uninorm/NormalizationTest.txt
+ It is only used to verify the compliance of this implementation of the
+ Unicode normalization forms. It is not used by the library code, only
+ by the unit tests. */
+
+/* Representation of a line in the NormalizationTest.txt file. */
+struct normalization_test_line
+{
+ unsigned int lineno;
+ uint32_t *sequences[5];
+};
+
+/* Representation of a delimited part of the NormalizationTest.txt file. */
+struct normalization_test_part
+{
+ struct normalization_test_line *lines;
+ size_t lines_length;
+};
+
+/* Representation of the entire NormalizationTest.txt file. */
+struct normalization_test_file
+{
+ struct normalization_test_part parts[4];
+ /* The set of c1 values from part 1, sorted in ascending order, with a
+ sentinel value of 0x110000 at the end. */
+ ucs4_t *part1_c1_sorted;
+ /* The filename of the NormalizationTest.txt file. */
+ const char *filename;
+};
+
+/* Read the NormalizationTest.txt file and return its contents. */
+extern void
+ read_normalization_test_file (const char *filename,
+ struct normalization_test_file *file);
+
+/* Perform the first compliance test. */
+extern void
+ test_specific (const struct normalization_test_file *file,
+ int (*check) (const uint32_t *c1, size_t c1_length,
+ const uint32_t *c2, size_t c2_length,
+ const uint32_t *c3, size_t c3_length,
+ const uint32_t *c4, size_t c4_length,
+ const uint32_t *c5, size_t c5_length));
+
+/* Perform the second compliance test. */
+extern void
+ test_other (const struct normalization_test_file *file, uninorm_t nf);
diff --git a/tests/uninorm/test-u32-normcmp.c b/tests/uninorm/test-u32-normcmp.c
new file mode 100644
index 00000000..846300a8
--- /dev/null
+++ b/tests/uninorm/test-u32-normcmp.c
@@ -0,0 +1,130 @@
+/* Test of normalization insensitive comparison of UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uninorm.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u32-normcmp.h"
+
+static void
+test_nonascii (int (*my_normcmp) (const uint32_t *, size_t, const uint32_t *, size_t, uninorm_t, int *))
+{
+ /* Normalization effects. */
+ {
+ static const uint32_t input1[] = { 'H', 0x00F6, 'h', 'l', 'e' };
+ static const uint32_t input2[] = { 'H', 'o', 0x0308, 'h', 'l', 'e' };
+ static const uint32_t input3[] = { 'H', 0x00F6, 'h', 'l', 'e', 'n' };
+ static const uint32_t input4[] = { 'H', 'o', 0x0308, 'h', 'l', 'e', 'n' };
+ static const uint32_t input5[] = { 'H', 'u', 'r', 'z' };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_normcmp (input2, SIZEOF (input2), input1, SIZEOF (input1), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_normcmp (input3, SIZEOF (input3), input4, SIZEOF (input4), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_normcmp (input4, SIZEOF (input4), input3, SIZEOF (input3), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_normcmp (input2, SIZEOF (input2), input3, SIZEOF (input3), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input4, SIZEOF (input4), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input5, SIZEOF (input5), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_normcmp (input2, SIZEOF (input2), input5, SIZEOF (input5), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+ }
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const uint32_t input1[] = { 0x00C4 };
+ static const uint32_t input2[] = { 0x0041, 0x0308 };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const uint32_t input1[] = { 0x01DE };
+ static const uint32_t input2[] = { 0x0041, 0x0308, 0x0304 };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const uint32_t input1[] = { 0x1FC1 };
+ static const uint32_t input2[] = { 0x00A8, 0x0342 };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* HANGUL SYLLABLE GEUL */
+ static const uint32_t input1[] = { 0xAE00 };
+ static const uint32_t input2[] = { 0xADF8, 0x11AF };
+ static const uint32_t input3[] = { 0x1100, 0x1173, 0x11AF };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input3, SIZEOF (input3), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* HANGUL SYLLABLE GEU */
+ static const uint32_t input1[] = { 0xADF8 };
+ static const uint32_t input2[] = { 0x1100, 0x1173 };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+}
+
+int
+main ()
+{
+ test_ascii (u32_normcmp, UNINORM_NFD);
+ test_nonascii (u32_normcmp);
+
+ return 0;
+}
diff --git a/tests/uninorm/test-u32-normcmp.h b/tests/uninorm/test-u32-normcmp.h
new file mode 100644
index 00000000..06d5fad8
--- /dev/null
+++ b/tests/uninorm/test-u32-normcmp.h
@@ -0,0 +1,69 @@
+/* Test of normalization insensitive comparison of UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+static void
+test_ascii (int (*my_normcmp) (const uint32_t *, size_t, const uint32_t *, size_t, uninorm_t, int *),
+ uninorm_t nf)
+{
+ /* Empty string. */
+ {
+ int cmp;
+
+ ASSERT (my_normcmp (NULL, 0, NULL, 0, nf, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ {
+ static const uint32_t input[] = { 'x', 'y' };
+ int cmp;
+
+ ASSERT (my_normcmp (input, SIZEOF (input), NULL, 0, nf, &cmp) == 0);
+ ASSERT (cmp == 1);
+
+ ASSERT (my_normcmp (NULL, 0, input, SIZEOF (input), nf, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_normcmp (input, SIZEOF (input), input, SIZEOF (input), nf, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Normal lexicographic order. */
+ {
+ static const uint32_t input1[] = { 'A', 'm', 'e', 'r', 'i', 'c', 'a' };
+ static const uint32_t input2[] = { 'A', 'm', 'i', 'g', 'o' };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), nf, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_normcmp (input2, SIZEOF (input2), input1, SIZEOF (input1), nf, &cmp) == 0);
+ ASSERT (cmp == 1);
+ }
+
+ /* Shorter and longer strings. */
+ {
+ static const uint32_t input1[] = { 'R', 'e', 'a', 'g', 'a', 'n' };
+ static const uint32_t input2[] = { 'R', 'e', 'a', 'g', 'a', 'n', 'o', 'm', 'i', 'c', 's' };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), nf, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_normcmp (input2, SIZEOF (input2), input1, SIZEOF (input1), nf, &cmp) == 0);
+ ASSERT (cmp == 1);
+ }
+}
diff --git a/tests/uninorm/test-u32-normcoll.c b/tests/uninorm/test-u32-normcoll.c
new file mode 100644
index 00000000..916d433f
--- /dev/null
+++ b/tests/uninorm/test-u32-normcoll.c
@@ -0,0 +1,49 @@
+/* Test of locale dependent, normalization insensitive comparison of
+ UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uninorm.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u32-normcmp.h"
+int
+main ()
+{
+ /* In the "C" locale, strcoll is equivalent to strcmp, therefore u8_normcoll
+ on ASCII strings should behave like strcmp as well. */
+ test_ascii (u32_normcoll, UNINORM_NFC);
+
+ return 0;
+}
diff --git a/tests/uninorm/test-u8-nfc.c b/tests/uninorm/test-u8-nfc.c
new file mode 100644
index 00000000..52baa68b
--- /dev/null
+++ b/tests/uninorm/test-u8-nfc.c
@@ -0,0 +1,375 @@
+/* Test of canonical normalization of UTF-8 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#if GNULIB_UNINORM_U8_NORMALIZE
+
+#include "uninorm.h"
+
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint8_t *input, size_t input_length,
+ const uint8_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint8_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u8_normalize (UNINORM_NFC, input, input_length, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint8_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint8_t *) malloc (length * sizeof (uint8_t));
+ result = u8_normalize (UNINORM_NFC, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint8_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint8_t *) malloc (length * sizeof (uint8_t));
+ result = u8_normalize (UNINORM_NFC, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+void
+test_u8_nfc (void)
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, 0) == 0);
+ }
+ { /* SPACE */
+ static const uint8_t input[] = { 0x20 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const uint8_t input[] = { 0xC3, 0x84 };
+ static const uint8_t decomposed[] = { 0x41, 0xCC, 0x88 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const uint8_t input[] = { 0xC7, 0x9E };
+ static const uint8_t decomposed[] = { 0x41, 0xCC, 0x88, 0xCC, 0x84 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ANGSTROM SIGN */
+ static const uint8_t input[] = { 0xE2, 0x84, 0xAB };
+ static const uint8_t decomposed[] = { 0x41, 0xCC, 0x8A };
+ static const uint8_t expected[] = { 0xC3, 0x85 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), expected, SIZEOF (expected)) == 0);
+ ASSERT (check (expected, SIZEOF (expected), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const uint8_t input[] = { 0xE1, 0xBF, 0x81 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* SCRIPT SMALL L */
+ static const uint8_t input[] = { 0xE2, 0x84, 0x93 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* NO-BREAK SPACE */
+ static const uint8_t input[] = { 0xC2, 0xA0 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH INITIAL FORM */
+ static const uint8_t input[] = { 0xEF, 0xAD, 0xAC };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH MEDIAL FORM */
+ static const uint8_t input[] = { 0xEF, 0xAD, 0xAD };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH FINAL FORM */
+ static const uint8_t input[] = { 0xEF, 0xAD, 0xAB };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH ISOLATED FORM */
+ static const uint8_t input[] = { 0xEF, 0xAD, 0xAA };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* CIRCLED NUMBER FIFTEEN */
+ static const uint8_t input[] = { 0xE2, 0x91, 0xAE };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* TRADE MARK SIGN */
+ static const uint8_t input[] = { 0xE2, 0x84, 0xA2 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN SUBSCRIPT SMALL LETTER I */
+ static const uint8_t input[] = { 0xE1, 0xB5, 0xA2 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS */
+ static const uint8_t input[] = { 0xEF, 0xB8, 0xB5 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* FULLWIDTH LATIN CAPITAL LETTER A */
+ static const uint8_t input[] = { 0xEF, 0xBC, 0xA1 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* HALFWIDTH IDEOGRAPHIC COMMA */
+ static const uint8_t input[] = { 0xEF, 0xBD, 0xA4 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* SMALL IDEOGRAPHIC COMMA */
+ static const uint8_t input[] = { 0xEF, 0xB9, 0x91 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* SQUARE MHZ */
+ static const uint8_t input[] = { 0xE3, 0x8E, 0x92 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* VULGAR FRACTION THREE EIGHTHS */
+ static const uint8_t input[] = { 0xE2, 0x85, 0x9C };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* MICRO SIGN */
+ static const uint8_t input[] = { 0xC2, 0xB5 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM */
+ static const uint8_t input[] = { 0xEF, 0xB7, 0xBA };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEUL */
+ static const uint8_t input[] = { 0xEA, 0xB8, 0x80 };
+ static const uint8_t decomposed[] =
+ { 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3, 0xE1, 0x86, 0xAF };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEU */
+ static const uint8_t input[] = { 0xEA, 0xB7, 0xB8 };
+ static const uint8_t decomposed[] = { 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint8_t input[] =
+ { 'G', 'r', 0xC3, 0xBC, 0xC3, 0x9F, ' ', 'G', 'o', 't', 't', '.',
+ ' ', 0xD0, 0x97, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1,
+ 0x81, 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB9,
+ 0xD1, 0x82, 0xD0, 0xB5, '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1,
+ 's', 'q', 'r', 't', '(', 'b', 0xC2, 0xB2, '-', '4', 'a', 'c', ')', ')',
+ '/', '(', '2', 'a', ')', ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC,
+ 0xE8, 0xAA, 0x9E, ',', 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C,
+ 0xEA, 0xB8, 0x80, '\n'
+ };
+ static const uint8_t decomposed[] =
+ { 'G', 'r', 0x75, 0xCC, 0x88, 0xC3, 0x9F, ' ', 'G', 'o', 't', 't', '.',
+ ' ', 0xD0, 0x97, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1,
+ 0x81, 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB8, 0xCC, 0x86,
+ 0xD1, 0x82, 0xD0, 0xB5, '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1,
+ 's', 'q', 'r', 't', '(', 'b', 0xC2, 0xB2, '-', '4', 'a', 'c', ')', ')',
+ '/', '(', '2', 'a', ')', ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC,
+ 0xE8, 0xAA, 0x9E, ',', 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0xE1, 0x86, 0xAB,
+ 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3, 0xE1, 0x86, 0xAF, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+#if HAVE_DECL_ALARM
+ /* Declare failure if test takes too long, by using default abort
+ caused by SIGALRM. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (50);
+#endif
+
+ /* Check that the sorting is not O(n²) but O(n log n). */
+ {
+ int pass;
+ for (pass = 0; pass < 3; pass++)
+ {
+ size_t repeat = 1;
+ size_t m = 100000;
+ uint8_t *input = (uint8_t *) malloc (2 * (2 * m - 1) * sizeof (uint8_t));
+ if (input != NULL)
+ {
+ uint8_t *expected = input + (2 * m - 1);
+ size_t m1 = m / 2;
+ size_t m2 = (m - 1) / 2;
+ /* NB: m1 + m2 == m - 1. */
+ uint8_t *p;
+ size_t i;
+
+ input[0] = 0x41;
+ p = input + 1;
+ switch (pass)
+ {
+ case 0:
+ for (i = 0; i < m1; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ }
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x80;
+ }
+ break;
+
+ case 1:
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x80;
+ }
+ for (i = 0; i < m1; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ }
+ break;
+
+ case 2:
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ *p++ = 0xCC;
+ *p++ = 0x80;
+ }
+ for (; i < m1; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ }
+ break;
+
+ default:
+ abort ();
+ }
+
+ expected[0] = 0xC3;
+ expected[1] = 0x80;
+ p = expected + 2;
+ for (i = 0; i < m1; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ }
+ for (i = 0; i < m2 - 1; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x80;
+ }
+
+ for (; repeat > 0; repeat--)
+ {
+ ASSERT (check (input, 2 * m - 1, expected, 2 * m - 2) == 0);
+ ASSERT (check (expected, 2 * m - 2, expected, 2 * m - 2) == 0);
+ }
+
+ free (input);
+ }
+ }
+ }
+}
+
+#else
+
+void
+test_u8_nfc (void)
+{
+}
+
+#endif
diff --git a/tests/uninorm/test-u8-nfd.c b/tests/uninorm/test-u8-nfd.c
new file mode 100644
index 00000000..d1d840ac
--- /dev/null
+++ b/tests/uninorm/test-u8-nfd.c
@@ -0,0 +1,358 @@
+/* Test of canonical decomposition of UTF-8 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#if GNULIB_UNINORM_U8_NORMALIZE
+
+#include "uninorm.h"
+
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint8_t *input, size_t input_length,
+ const uint8_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint8_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u8_normalize (UNINORM_NFD, input, input_length, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint8_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint8_t *) malloc (length * sizeof (uint8_t));
+ result = u8_normalize (UNINORM_NFD, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint8_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint8_t *) malloc (length * sizeof (uint8_t));
+ result = u8_normalize (UNINORM_NFD, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+void
+test_u8_nfd (void)
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, 0) == 0);
+ }
+ { /* SPACE */
+ static const uint8_t input[] = { 0x20 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const uint8_t input[] = { 0xC3, 0x84 };
+ static const uint8_t expected[] = { 0x41, 0xCC, 0x88 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const uint8_t input[] = { 0xC7, 0x9E };
+ static const uint8_t expected[] = { 0x41, 0xCC, 0x88, 0xCC, 0x84 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const uint8_t input[] = { 0xE1, 0xBF, 0x81 };
+ static const uint8_t expected[] = { 0xC2, 0xA8, 0xCD, 0x82 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* SCRIPT SMALL L */
+ static const uint8_t input[] = { 0xE2, 0x84, 0x93 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* NO-BREAK SPACE */
+ static const uint8_t input[] = { 0xC2, 0xA0 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH INITIAL FORM */
+ static const uint8_t input[] = { 0xEF, 0xAD, 0xAC };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH MEDIAL FORM */
+ static const uint8_t input[] = { 0xEF, 0xAD, 0xAD };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH FINAL FORM */
+ static const uint8_t input[] = { 0xEF, 0xAD, 0xAB };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH ISOLATED FORM */
+ static const uint8_t input[] = { 0xEF, 0xAD, 0xAA };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* CIRCLED NUMBER FIFTEEN */
+ static const uint8_t input[] = { 0xE2, 0x91, 0xAE };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* TRADE MARK SIGN */
+ static const uint8_t input[] = { 0xE2, 0x84, 0xA2 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN SUBSCRIPT SMALL LETTER I */
+ static const uint8_t input[] = { 0xE1, 0xB5, 0xA2 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS */
+ static const uint8_t input[] = { 0xEF, 0xB8, 0xB5 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* FULLWIDTH LATIN CAPITAL LETTER A */
+ static const uint8_t input[] = { 0xEF, 0xBC, 0xA1 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* HALFWIDTH IDEOGRAPHIC COMMA */
+ static const uint8_t input[] = { 0xEF, 0xBD, 0xA4 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* SMALL IDEOGRAPHIC COMMA */
+ static const uint8_t input[] = { 0xEF, 0xB9, 0x91 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* SQUARE MHZ */
+ static const uint8_t input[] = { 0xE3, 0x8E, 0x92 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* VULGAR FRACTION THREE EIGHTHS */
+ static const uint8_t input[] = { 0xE2, 0x85, 0x9C };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* MICRO SIGN */
+ static const uint8_t input[] = { 0xC2, 0xB5 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM */
+ static const uint8_t input[] = { 0xEF, 0xB7, 0xBA };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEUL */
+ static const uint8_t input[] = { 0xEA, 0xB8, 0x80 };
+ static const uint8_t expected[] =
+ { 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3, 0xE1, 0x86, 0xAF };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEU */
+ static const uint8_t input[] = { 0xEA, 0xB7, 0xB8 };
+ static const uint8_t expected[] = { 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint8_t input[] =
+ { 'G', 'r', 0xC3, 0xBC, 0xC3, 0x9F, ' ', 'G', 'o', 't', 't', '.',
+ ' ', 0xD0, 0x97, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1,
+ 0x81, 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB9,
+ 0xD1, 0x82, 0xD0, 0xB5, '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1,
+ 's', 'q', 'r', 't', '(', 'b', 0xC2, 0xB2, '-', '4', 'a', 'c', ')', ')',
+ '/', '(', '2', 'a', ')', ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC,
+ 0xE8, 0xAA, 0x9E, ',', 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C,
+ 0xEA, 0xB8, 0x80, '\n'
+ };
+ static const uint8_t expected[] =
+ { 'G', 'r', 0x75, 0xCC, 0x88, 0xC3, 0x9F, ' ', 'G', 'o', 't', 't', '.',
+ ' ', 0xD0, 0x97, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1,
+ 0x81, 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB8, 0xCC, 0x86,
+ 0xD1, 0x82, 0xD0, 0xB5, '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1,
+ 's', 'q', 'r', 't', '(', 'b', 0xC2, 0xB2, '-', '4', 'a', 'c', ')', ')',
+ '/', '(', '2', 'a', ')', ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC,
+ 0xE8, 0xAA, 0x9E, ',', 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0xE1, 0x86, 0xAB,
+ 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3, 0xE1, 0x86, 0xAF, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+#if HAVE_DECL_ALARM
+ /* Declare failure if test takes too long, by using default abort
+ caused by SIGALRM. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (50);
+#endif
+
+ /* Check that the sorting is not O(n²) but O(n log n). */
+ {
+ int pass;
+ for (pass = 0; pass < 3; pass++)
+ {
+ size_t repeat = 1;
+ size_t m = 100000;
+ uint8_t *input = (uint8_t *) malloc (2 * (2 * m - 1) * sizeof (uint8_t));
+ if (input != NULL)
+ {
+ uint8_t *expected = input + (2 * m - 1);
+ size_t m1 = m / 2;
+ size_t m2 = (m - 1) / 2;
+ /* NB: m1 + m2 == m - 1. */
+ uint8_t *p;
+ size_t i;
+
+ input[0] = 0x41;
+ p = input + 1;
+ switch (pass)
+ {
+ case 0:
+ for (i = 0; i < m1; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ }
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x80;
+ }
+ break;
+
+ case 1:
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x80;
+ }
+ for (i = 0; i < m1; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ }
+ break;
+
+ case 2:
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ *p++ = 0xCC;
+ *p++ = 0x80;
+ }
+ for (; i < m1; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ }
+ break;
+
+ default:
+ abort ();
+ }
+
+ expected[0] = 0x41;
+ p = expected + 1;
+ for (i = 0; i < m1; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ }
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x80;
+ }
+
+ for (; repeat > 0; repeat--)
+ ASSERT (check (input, 2 * m - 1, expected, 2 * m - 1) == 0);
+
+ free (input);
+ }
+ }
+ }
+}
+
+#else
+
+void
+test_u8_nfd (void)
+{
+}
+
+#endif
diff --git a/tests/uninorm/test-u8-nfkc.c b/tests/uninorm/test-u8-nfkc.c
new file mode 100644
index 00000000..0ea46363
--- /dev/null
+++ b/tests/uninorm/test-u8-nfkc.c
@@ -0,0 +1,427 @@
+/* Test of compatibility normalization of UTF-8 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#if GNULIB_UNINORM_U8_NORMALIZE
+
+#include "uninorm.h"
+
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint8_t *input, size_t input_length,
+ const uint8_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint8_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u8_normalize (UNINORM_NFKC, input, input_length, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint8_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint8_t *) malloc (length * sizeof (uint8_t));
+ result = u8_normalize (UNINORM_NFKC, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint8_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint8_t *) malloc (length * sizeof (uint8_t));
+ result = u8_normalize (UNINORM_NFKC, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+void
+test_u8_nfkc (void)
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, 0) == 0);
+ }
+ { /* SPACE */
+ static const uint8_t input[] = { 0x20 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const uint8_t input[] = { 0xC3, 0x84 };
+ static const uint8_t decomposed[] = { 0x41, 0xCC, 0x88 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const uint8_t input[] = { 0xC7, 0x9E };
+ static const uint8_t decomposed[] = { 0x41, 0xCC, 0x88, 0xCC, 0x84 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* ANGSTROM SIGN */
+ static const uint8_t input[] = { 0xE2, 0x84, 0xAB };
+ static const uint8_t decomposed[] = { 0x41, 0xCC, 0x8A };
+ static const uint8_t expected[] = { 0xC3, 0x85 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), expected, SIZEOF (expected)) == 0);
+ ASSERT (check (expected, SIZEOF (expected), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const uint8_t input[] = { 0xE1, 0xBF, 0x81 };
+ static const uint8_t decomposed[] = { 0x20, 0xCC, 0x88, 0xCD, 0x82 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* SCRIPT SMALL L */
+ static const uint8_t input[] = { 0xE2, 0x84, 0x93 };
+ static const uint8_t decomposed[] = { 0x6C };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* NO-BREAK SPACE */
+ static const uint8_t input[] = { 0xC2, 0xA0 };
+ static const uint8_t decomposed[] = { 0x20 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH INITIAL FORM */
+ static const uint8_t input[] = { 0xEF, 0xAD, 0xAC };
+ static const uint8_t decomposed[] = { 0xDA, 0xA4 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH MEDIAL FORM */
+ static const uint8_t input[] = { 0xEF, 0xAD, 0xAD };
+ static const uint8_t decomposed[] = { 0xDA, 0xA4 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH FINAL FORM */
+ static const uint8_t input[] = { 0xEF, 0xAD, 0xAB };
+ static const uint8_t decomposed[] = { 0xDA, 0xA4 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH ISOLATED FORM */
+ static const uint8_t input[] = { 0xEF, 0xAD, 0xAA };
+ static const uint8_t decomposed[] = { 0xDA, 0xA4 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* CIRCLED NUMBER FIFTEEN */
+ static const uint8_t input[] = { 0xE2, 0x91, 0xAE };
+ static const uint8_t decomposed[] = { 0x31, 0x35 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* TRADE MARK SIGN */
+ static const uint8_t input[] = { 0xE2, 0x84, 0xA2 };
+ static const uint8_t decomposed[] = { 0x54, 0x4D };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* LATIN SUBSCRIPT SMALL LETTER I */
+ static const uint8_t input[] = { 0xE1, 0xB5, 0xA2 };
+ static const uint8_t decomposed[] = { 0x69 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS */
+ static const uint8_t input[] = { 0xEF, 0xB8, 0xB5 };
+ static const uint8_t decomposed[] = { 0x28 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* FULLWIDTH LATIN CAPITAL LETTER A */
+ static const uint8_t input[] = { 0xEF, 0xBC, 0xA1 };
+ static const uint8_t decomposed[] = { 0x41 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* HALFWIDTH IDEOGRAPHIC COMMA */
+ static const uint8_t input[] = { 0xEF, 0xBD, 0xA4 };
+ static const uint8_t decomposed[] = { 0xE3, 0x80, 0x81 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* SMALL IDEOGRAPHIC COMMA */
+ static const uint8_t input[] = { 0xEF, 0xB9, 0x91 };
+ static const uint8_t decomposed[] = { 0xE3, 0x80, 0x81 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* SQUARE MHZ */
+ static const uint8_t input[] = { 0xE3, 0x8E, 0x92 };
+ static const uint8_t decomposed[] = { 0x4D, 0x48, 0x7A };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* VULGAR FRACTION THREE EIGHTHS */
+ static const uint8_t input[] = { 0xE2, 0x85, 0x9C };
+ static const uint8_t decomposed[] = { 0x33, 0xE2, 0x81, 0x84, 0x38 };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* MICRO SIGN */
+ static const uint8_t input[] = { 0xC2, 0xB5 };
+ static const uint8_t decomposed[] = { 0xCE, 0xBC };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM */
+ static const uint8_t input[] = { 0xEF, 0xB7, 0xBA };
+ static const uint8_t decomposed[] =
+ { 0xD8, 0xB5, 0xD9, 0x84, 0xD9, 0x89, 0x20, 0xD8, 0xA7, 0xD9, 0x84, 0xD9,
+ 0x84, 0xD9, 0x87, 0x20, 0xD8, 0xB9, 0xD9, 0x84, 0xD9, 0x8A, 0xD9, 0x87,
+ 0x20, 0xD9, 0x88, 0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85
+ };
+ ASSERT (check (input, SIZEOF (input), decomposed, SIZEOF (decomposed)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), decomposed, SIZEOF (decomposed)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEUL */
+ static const uint8_t input[] = { 0xEA, 0xB8, 0x80 };
+ static const uint8_t decomposed[] =
+ { 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3, 0xE1, 0x86, 0xAF };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEU */
+ static const uint8_t input[] = { 0xEA, 0xB7, 0xB8 };
+ static const uint8_t decomposed[] = { 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint8_t input[] =
+ { 'G', 'r', 0xC3, 0xBC, 0xC3, 0x9F, ' ', 'G', 'o', 't', 't', '.',
+ ' ', 0xD0, 0x97, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1,
+ 0x81, 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB9,
+ 0xD1, 0x82, 0xD0, 0xB5, '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1,
+ 's', 'q', 'r', 't', '(', 'b', 0xC2, 0xB2, '-', '4', 'a', 'c', ')', ')',
+ '/', '(', '2', 'a', ')', ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC,
+ 0xE8, 0xAA, 0x9E, ',', 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C,
+ 0xEA, 0xB8, 0x80, '\n'
+ };
+ static const uint8_t decomposed[] =
+ { 'G', 'r', 0x75, 0xCC, 0x88, 0xC3, 0x9F, ' ', 'G', 'o', 't', 't', '.',
+ ' ', 0xD0, 0x97, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1,
+ 0x81, 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB8, 0xCC, 0x86,
+ 0xD1, 0x82, 0xD0, 0xB5, '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1,
+ 's', 'q', 'r', 't', '(', 'b', 0x32, '-', '4', 'a', 'c', ')', ')',
+ '/', '(', '2', 'a', ')', ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC,
+ 0xE8, 0xAA, 0x9E, ',', 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0xE1, 0x86, 0xAB,
+ 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3, 0xE1, 0x86, 0xAF, '\n'
+ };
+ static const uint8_t expected[] =
+ { 'G', 'r', 0xC3, 0xBC, 0xC3, 0x9F, ' ', 'G', 'o', 't', 't', '.',
+ ' ', 0xD0, 0x97, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1,
+ 0x81, 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB9,
+ 0xD1, 0x82, 0xD0, 0xB5, '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1,
+ 's', 'q', 'r', 't', '(', 'b', 0x32, '-', '4', 'a', 'c', ')', ')',
+ '/', '(', '2', 'a', ')', ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC,
+ 0xE8, 0xAA, 0x9E, ',', 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C,
+ 0xEA, 0xB8, 0x80, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), expected, SIZEOF (expected)) == 0);
+ ASSERT (check (expected, SIZEOF (expected), expected, SIZEOF (expected)) == 0);
+ }
+
+#if HAVE_DECL_ALARM
+ /* Declare failure if test takes too long, by using default abort
+ caused by SIGALRM. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (50);
+#endif
+
+ /* Check that the sorting is not O(n²) but O(n log n). */
+ {
+ int pass;
+ for (pass = 0; pass < 3; pass++)
+ {
+ size_t repeat = 1;
+ size_t m = 100000;
+ uint8_t *input = (uint8_t *) malloc (2 * (2 * m - 1) * sizeof (uint8_t));
+ if (input != NULL)
+ {
+ uint8_t *expected = input + (2 * m - 1);
+ size_t m1 = m / 2;
+ size_t m2 = (m - 1) / 2;
+ /* NB: m1 + m2 == m - 1. */
+ uint8_t *p;
+ size_t i;
+
+ input[0] = 0x41;
+ p = input + 1;
+ switch (pass)
+ {
+ case 0:
+ for (i = 0; i < m1; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ }
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x80;
+ }
+ break;
+
+ case 1:
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x80;
+ }
+ for (i = 0; i < m1; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ }
+ break;
+
+ case 2:
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ *p++ = 0xCC;
+ *p++ = 0x80;
+ }
+ for (; i < m1; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ }
+ break;
+
+ default:
+ abort ();
+ }
+
+ expected[0] = 0xC3;
+ expected[1] = 0x80;
+ p = expected + 2;
+ for (i = 0; i < m1; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ }
+ for (i = 0; i < m2 - 1; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x80;
+ }
+
+ for (; repeat > 0; repeat--)
+ {
+ ASSERT (check (input, 2 * m - 1, expected, 2 * m - 2) == 0);
+ ASSERT (check (expected, 2 * m - 2, expected, 2 * m - 2) == 0);
+ }
+
+ free (input);
+ }
+ }
+ }
+}
+
+#else
+
+void
+test_u8_nfkc (void)
+{
+}
+
+#endif
diff --git a/tests/uninorm/test-u8-nfkd.c b/tests/uninorm/test-u8-nfkd.c
new file mode 100644
index 00000000..2d883a05
--- /dev/null
+++ b/tests/uninorm/test-u8-nfkd.c
@@ -0,0 +1,379 @@
+/* Test of compatibility decomposition of UTF-8 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#if GNULIB_UNINORM_U8_NORMALIZE
+
+#include "uninorm.h"
+
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static int
+check (const uint8_t *input, size_t input_length,
+ const uint8_t *expected, size_t expected_length)
+{
+ size_t length;
+ uint8_t *result;
+
+ /* Test return conventions with resultbuf == NULL. */
+ result = u8_normalize (UNINORM_NFKD, input, input_length, NULL, &length);
+ if (!(result != NULL))
+ return 1;
+ if (!(length == expected_length))
+ return 2;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 3;
+ free (result);
+
+ /* Test return conventions with resultbuf too small. */
+ if (expected_length > 0)
+ {
+ uint8_t *preallocated;
+
+ length = expected_length - 1;
+ preallocated = (uint8_t *) malloc (length * sizeof (uint8_t));
+ result = u8_normalize (UNINORM_NFKD, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 4;
+ if (!(result != preallocated))
+ return 5;
+ if (!(length == expected_length))
+ return 6;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 7;
+ free (result);
+ free (preallocated);
+ }
+
+ /* Test return conventions with resultbuf large enough. */
+ {
+ uint8_t *preallocated;
+
+ length = expected_length;
+ preallocated = (uint8_t *) malloc (length * sizeof (uint8_t));
+ result = u8_normalize (UNINORM_NFKD, input, input_length, preallocated, &length);
+ if (!(result != NULL))
+ return 8;
+ if (!(preallocated == NULL || result == preallocated))
+ return 9;
+ if (!(length == expected_length))
+ return 10;
+ if (!(u8_cmp (result, expected, expected_length) == 0))
+ return 11;
+ free (preallocated);
+ }
+
+ return 0;
+}
+
+void
+test_u8_nfkd (void)
+{
+ { /* Empty string. */
+ ASSERT (check (NULL, 0, NULL, 0) == 0);
+ }
+ { /* SPACE */
+ static const uint8_t input[] = { 0x20 };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const uint8_t input[] = { 0xC3, 0x84 };
+ static const uint8_t expected[] = { 0x41, 0xCC, 0x88 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const uint8_t input[] = { 0xC7, 0x9E };
+ static const uint8_t expected[] = { 0x41, 0xCC, 0x88, 0xCC, 0x84 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const uint8_t input[] = { 0xE1, 0xBF, 0x81 };
+ static const uint8_t expected[] = { 0x20, 0xCC, 0x88, 0xCD, 0x82 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* SCRIPT SMALL L */
+ static const uint8_t input[] = { 0xE2, 0x84, 0x93 };
+ static const uint8_t expected[] = { 0x6C };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* NO-BREAK SPACE */
+ static const uint8_t input[] = { 0xC2, 0xA0 };
+ static const uint8_t expected[] = { 0x20 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH INITIAL FORM */
+ static const uint8_t input[] = { 0xEF, 0xAD, 0xAC };
+ static const uint8_t expected[] = { 0xDA, 0xA4 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH MEDIAL FORM */
+ static const uint8_t input[] = { 0xEF, 0xAD, 0xAD };
+ static const uint8_t expected[] = { 0xDA, 0xA4 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH FINAL FORM */
+ static const uint8_t input[] = { 0xEF, 0xAD, 0xAB };
+ static const uint8_t expected[] = { 0xDA, 0xA4 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* ARABIC LETTER VEH ISOLATED FORM */
+ static const uint8_t input[] = { 0xEF, 0xAD, 0xAA };
+ static const uint8_t expected[] = { 0xDA, 0xA4 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* CIRCLED NUMBER FIFTEEN */
+ static const uint8_t input[] = { 0xE2, 0x91, 0xAE };
+ static const uint8_t expected[] = { 0x31, 0x35 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* TRADE MARK SIGN */
+ static const uint8_t input[] = { 0xE2, 0x84, 0xA2 };
+ static const uint8_t expected[] = { 0x54, 0x4D };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* LATIN SUBSCRIPT SMALL LETTER I */
+ static const uint8_t input[] = { 0xE1, 0xB5, 0xA2 };
+ static const uint8_t expected[] = { 0x69 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS */
+ static const uint8_t input[] = { 0xEF, 0xB8, 0xB5 };
+ static const uint8_t expected[] = { 0x28 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* FULLWIDTH LATIN CAPITAL LETTER A */
+ static const uint8_t input[] = { 0xEF, 0xBC, 0xA1 };
+ static const uint8_t expected[] = { 0x41 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* HALFWIDTH IDEOGRAPHIC COMMA */
+ static const uint8_t input[] = { 0xEF, 0xBD, 0xA4 };
+ static const uint8_t expected[] = { 0xE3, 0x80, 0x81 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* SMALL IDEOGRAPHIC COMMA */
+ static const uint8_t input[] = { 0xEF, 0xB9, 0x91 };
+ static const uint8_t expected[] = { 0xE3, 0x80, 0x81 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* SQUARE MHZ */
+ static const uint8_t input[] = { 0xE3, 0x8E, 0x92 };
+ static const uint8_t expected[] = { 0x4D, 0x48, 0x7A };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* VULGAR FRACTION THREE EIGHTHS */
+ static const uint8_t input[] = { 0xE2, 0x85, 0x9C };
+ static const uint8_t expected[] = { 0x33, 0xE2, 0x81, 0x84, 0x38 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* MICRO SIGN */
+ static const uint8_t input[] = { 0xC2, 0xB5 };
+ static const uint8_t expected[] = { 0xCE, 0xBC };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM */
+ static const uint8_t input[] = { 0xEF, 0xB7, 0xBA };
+ static const uint8_t expected[] =
+ { 0xD8, 0xB5, 0xD9, 0x84, 0xD9, 0x89, 0x20, 0xD8, 0xA7, 0xD9, 0x84, 0xD9,
+ 0x84, 0xD9, 0x87, 0x20, 0xD8, 0xB9, 0xD9, 0x84, 0xD9, 0x8A, 0xD9, 0x87,
+ 0x20, 0xD9, 0x88, 0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85
+ };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEUL */
+ static const uint8_t input[] = { 0xEA, 0xB8, 0x80 };
+ static const uint8_t expected[] =
+ { 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3, 0xE1, 0x86, 0xAF };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* HANGUL SYLLABLE GEU */
+ static const uint8_t input[] = { 0xEA, 0xB7, 0xB8 };
+ static const uint8_t expected[] = { 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3 };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint8_t input[] =
+ { 'G', 'r', 0xC3, 0xBC, 0xC3, 0x9F, ' ', 'G', 'o', 't', 't', '.',
+ ' ', 0xD0, 0x97, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1,
+ 0x81, 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB9,
+ 0xD1, 0x82, 0xD0, 0xB5, '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1,
+ 's', 'q', 'r', 't', '(', 'b', 0xC2, 0xB2, '-', '4', 'a', 'c', ')', ')',
+ '/', '(', '2', 'a', ')', ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC,
+ 0xE8, 0xAA, 0x9E, ',', 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xED, 0x95, 0x9C,
+ 0xEA, 0xB8, 0x80, '\n'
+ };
+ static const uint8_t expected[] =
+ { 'G', 'r', 0x75, 0xCC, 0x88, 0xC3, 0x9F, ' ', 'G', 'o', 't', 't', '.',
+ ' ', 0xD0, 0x97, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1,
+ 0x81, 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB8, 0xCC, 0x86,
+ 0xD1, 0x82, 0xD0, 0xB5, '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1,
+ 's', 'q', 'r', 't', '(', 'b', 0x32, '-', '4', 'a', 'c', ')', ')',
+ '/', '(', '2', 'a', ')', ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC,
+ 0xE8, 0xAA, 0x9E, ',', 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',',
+ 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0xE1, 0x86, 0xAB,
+ 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3, 0xE1, 0x86, 0xAF, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0);
+ }
+
+#if HAVE_DECL_ALARM
+ /* Declare failure if test takes too long, by using default abort
+ caused by SIGALRM. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (50);
+#endif
+
+ /* Check that the sorting is not O(n²) but O(n log n). */
+ {
+ int pass;
+ for (pass = 0; pass < 3; pass++)
+ {
+ size_t repeat = 1;
+ size_t m = 100000;
+ uint8_t *input = (uint8_t *) malloc (2 * (2 * m - 1) * sizeof (uint8_t));
+ if (input != NULL)
+ {
+ uint8_t *expected = input + (2 * m - 1);
+ size_t m1 = m / 2;
+ size_t m2 = (m - 1) / 2;
+ /* NB: m1 + m2 == m - 1. */
+ uint8_t *p;
+ size_t i;
+
+ input[0] = 0x41;
+ p = input + 1;
+ switch (pass)
+ {
+ case 0:
+ for (i = 0; i < m1; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ }
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x80;
+ }
+ break;
+
+ case 1:
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x80;
+ }
+ for (i = 0; i < m1; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ }
+ break;
+
+ case 2:
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ *p++ = 0xCC;
+ *p++ = 0x80;
+ }
+ for (; i < m1; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ }
+ break;
+
+ default:
+ abort ();
+ }
+
+ expected[0] = 0x41;
+ p = expected + 1;
+ for (i = 0; i < m1; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x99;
+ }
+ for (i = 0; i < m2; i++)
+ {
+ *p++ = 0xCC;
+ *p++ = 0x80;
+ }
+
+ for (; repeat > 0; repeat--)
+ ASSERT (check (input, 2 * m - 1, expected, 2 * m - 1) == 0);
+
+ free (input);
+ }
+ }
+ }
+}
+
+#else
+
+void
+test_u8_nfkd (void)
+{
+}
+
+#endif
diff --git a/tests/uninorm/test-u8-normcmp.c b/tests/uninorm/test-u8-normcmp.c
new file mode 100644
index 00000000..ec479472
--- /dev/null
+++ b/tests/uninorm/test-u8-normcmp.c
@@ -0,0 +1,130 @@
+/* Test of normalization insensitive comparison of UTF-8 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uninorm.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u8-normcmp.h"
+
+static void
+test_nonascii (int (*my_normcmp) (const uint8_t *, size_t, const uint8_t *, size_t, uninorm_t, int *))
+{
+ /* Normalization effects. */
+ {
+ static const uint8_t input1[] = { 'H', 0xC3, 0xB6, 'h', 'l', 'e' };
+ static const uint8_t input2[] = { 'H', 'o', 0xCC, 0x88, 'h', 'l', 'e' };
+ static const uint8_t input3[] = { 'H', 0xC3, 0xB6, 'h', 'l', 'e', 'n' };
+ static const uint8_t input4[] = { 'H', 'o', 0xCC, 0x88, 'h', 'l', 'e', 'n' };
+ static const uint8_t input5[] = { 'H', 'u', 'r', 'z' };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_normcmp (input2, SIZEOF (input2), input1, SIZEOF (input1), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_normcmp (input3, SIZEOF (input3), input4, SIZEOF (input4), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_normcmp (input4, SIZEOF (input4), input3, SIZEOF (input3), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_normcmp (input2, SIZEOF (input2), input3, SIZEOF (input3), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input4, SIZEOF (input4), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input5, SIZEOF (input5), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_normcmp (input2, SIZEOF (input2), input5, SIZEOF (input5), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == -1);
+ }
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS */
+ static const uint8_t input1[] = { 0xC3, 0x84 };
+ static const uint8_t input2[] = { 0x41, 0xCC, 0x88 };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON */
+ static const uint8_t input1[] = { 0xC7, 0x9E };
+ static const uint8_t input2[] = { 0x41, 0xCC, 0x88, 0xCC, 0x84 };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* GREEK DIALYTIKA AND PERISPOMENI */
+ static const uint8_t input1[] = { 0xE1, 0xBF, 0x81 };
+ static const uint8_t input2[] = { 0xC2, 0xA8, 0xCD, 0x82 };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* HANGUL SYLLABLE GEUL */
+ static const uint8_t input1[] = { 0xEA, 0xB8, 0x80 };
+ static const uint8_t input2[] = { 0xEA, 0xB7, 0xB8, 0xE1, 0x86, 0xAF };
+ static const uint8_t input3[] = { 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3, 0xE1, 0x86, 0xAF };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input3, SIZEOF (input3), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ { /* HANGUL SYLLABLE GEU */
+ static const uint8_t input1[] = { 0xEA, 0xB7, 0xB8 };
+ static const uint8_t input2[] = { 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xB3 };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), UNINORM_NFD, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+}
+
+int
+main ()
+{
+ test_ascii (u8_normcmp, UNINORM_NFD);
+ test_nonascii (u8_normcmp);
+
+ return 0;
+}
diff --git a/tests/uninorm/test-u8-normcmp.h b/tests/uninorm/test-u8-normcmp.h
new file mode 100644
index 00000000..78c887d2
--- /dev/null
+++ b/tests/uninorm/test-u8-normcmp.h
@@ -0,0 +1,69 @@
+/* Test of normalization insensitive comparison of UTF-8 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+static void
+test_ascii (int (*my_normcmp) (const uint8_t *, size_t, const uint8_t *, size_t, uninorm_t, int *),
+ uninorm_t nf)
+{
+ /* Empty string. */
+ {
+ int cmp;
+
+ ASSERT (my_normcmp (NULL, 0, NULL, 0, nf, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+ {
+ static const uint8_t input[] = { 'x', 'y' };
+ int cmp;
+
+ ASSERT (my_normcmp (input, SIZEOF (input), NULL, 0, nf, &cmp) == 0);
+ ASSERT (cmp == 1);
+
+ ASSERT (my_normcmp (NULL, 0, input, SIZEOF (input), nf, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_normcmp (input, SIZEOF (input), input, SIZEOF (input), nf, &cmp) == 0);
+ ASSERT (cmp == 0);
+ }
+
+ /* Normal lexicographic order. */
+ {
+ static const uint8_t input1[] = { 'A', 'm', 'e', 'r', 'i', 'c', 'a' };
+ static const uint8_t input2[] = { 'A', 'm', 'i', 'g', 'o' };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), nf, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_normcmp (input2, SIZEOF (input2), input1, SIZEOF (input1), nf, &cmp) == 0);
+ ASSERT (cmp == 1);
+ }
+
+ /* Shorter and longer strings. */
+ {
+ static const uint8_t input1[] = { 'R', 'e', 'a', 'g', 'a', 'n' };
+ static const uint8_t input2[] = { 'R', 'e', 'a', 'g', 'a', 'n', 'o', 'm', 'i', 'c', 's' };
+ int cmp;
+
+ ASSERT (my_normcmp (input1, SIZEOF (input1), input2, SIZEOF (input2), nf, &cmp) == 0);
+ ASSERT (cmp == -1);
+
+ ASSERT (my_normcmp (input2, SIZEOF (input2), input1, SIZEOF (input1), nf, &cmp) == 0);
+ ASSERT (cmp == 1);
+ }
+}
diff --git a/tests/uninorm/test-u8-normcoll.c b/tests/uninorm/test-u8-normcoll.c
new file mode 100644
index 00000000..edf91720
--- /dev/null
+++ b/tests/uninorm/test-u8-normcoll.c
@@ -0,0 +1,49 @@
+/* Test of locale dependent, normalization insensitive comparison of
+ UTF-8 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uninorm.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u8-normcmp.h"
+int
+main ()
+{
+ /* In the "C" locale, strcoll is equivalent to strcmp, therefore u8_normcoll
+ on ASCII strings should behave like strcmp as well. */
+ test_ascii (u8_normcoll, UNINORM_NFC);
+
+ return 0;
+}
diff --git a/tests/uninorm/test-uninorm-filter-nfc.c b/tests/uninorm/test-uninorm-filter-nfc.c
new file mode 100644
index 00000000..32b77efa
--- /dev/null
+++ b/tests/uninorm/test-uninorm-filter-nfc.c
@@ -0,0 +1,122 @@
+/* Test of canonical normalization of streams.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uninorm.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+/* A stream of Unicode characters that simply accumulates the contents. */
+
+struct accumulator
+{
+ uint32_t *result;
+ size_t length;
+ size_t allocated;
+};
+
+static int
+write_to_accumulator (void *stream_data, ucs4_t uc)
+{
+ struct accumulator *accu = (struct accumulator *) stream_data;
+
+ if (accu->length == accu->allocated)
+ {
+ accu->allocated = 2 * accu->allocated + 1;
+ accu->result = (uint32_t *) realloc (accu->result, accu->allocated * sizeof (uint32_t));
+ }
+ accu->result[accu->length] = uc;
+ accu->length++;
+ return 0;
+}
+
+static int
+check (const uint32_t *input, size_t input_length,
+ const uint32_t *expected, size_t expected_length)
+{
+ struct accumulator accu;
+ struct uninorm_filter *filter;
+ size_t i;
+
+ accu.result = NULL;
+ accu.length = 0;
+ accu.allocated = 0;
+
+ filter = uninorm_filter_create (UNINORM_NFC, write_to_accumulator, &accu);
+ ASSERT (filter != NULL);
+
+ for (i = 0; i < input_length; i++)
+ ASSERT (uninorm_filter_write (filter, input[i]) == 0);
+
+ ASSERT (uninorm_filter_free (filter) == 0);
+
+ if (!(accu.result != NULL))
+ return 1;
+ if (!(accu.length == expected_length))
+ return 2;
+ if (!(u32_cmp (accu.result, expected, expected_length) == 0))
+ return 3;
+ free (accu.result);
+
+ return 0;
+}
+
+int
+main ()
+{
+ { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ static const uint32_t input[] =
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ static const uint32_t decomposed[] =
+ { 'G', 'r', 0x0075, 0x0308, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0438, 0x0306, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',',
+ 0x1112, 0x1161, 0x11AB, 0x1100, 0x1173, 0x11AF, '\n'
+ };
+ ASSERT (check (input, SIZEOF (input), input, SIZEOF (input)) == 0);
+ ASSERT (check (decomposed, SIZEOF (decomposed), input, SIZEOF (input)) == 0);
+ }
+
+ return 0;
+}
diff --git a/tests/unistdio/test-u16-asnprintf1.c b/tests/unistdio/test-u16-asnprintf1.c
new file mode 100644
index 00000000..53fedf34
--- /dev/null
+++ b/tests/unistdio/test-u16-asnprintf1.c
@@ -0,0 +1,59 @@
+/* Test of u16_asnprintf() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u16-asnprintf1.h"
+
+static void
+test_asnprintf ()
+{
+ test_function (u16_asnprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ test_asnprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-u16-asnprintf1.h b/tests/unistdio/test-u16-asnprintf1.h
new file mode 100644
index 00000000..34d4f821
--- /dev/null
+++ b/tests/unistdio/test-u16-asnprintf1.h
@@ -0,0 +1,60 @@
+/* Test of u16_[v]asnprintf() function.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+static void
+test_function (uint16_t * (*my_asnprintf) (uint16_t *, size_t *, const char *, ...))
+{
+ uint16_t buf[8];
+ int size;
+
+ /* Test return value convention. */
+
+ for (size = 0; size <= 8; size++)
+ {
+ size_t length = size;
+ uint16_t *result = my_asnprintf (NULL, &length, "%d", 12345);
+ static const uint16_t expected[] =
+ { '1', '2', '3', '4', '5', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ ASSERT (length == 5);
+ free (result);
+ }
+
+ for (size = 0; size <= 8; size++)
+ {
+ static const uint16_t initializer[] =
+ { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F', 0 };
+ static const uint16_t expected[] =
+ { '1', '2', '3', '4', '5', 0 };
+ size_t length;
+ uint16_t *result;
+
+ u16_cpy (buf, initializer, 8);
+ length = size;
+ result = my_asnprintf (buf, &length, "%d", 12345);
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ ASSERT (length == 5);
+ if (size < 6)
+ ASSERT (result != buf);
+ ASSERT (u16_cmp (buf + size, initializer + size, 8 - size) == 0);
+ if (result != buf)
+ free (result);
+ }
+}
diff --git a/tests/unistdio/test-u16-printf1.h b/tests/unistdio/test-u16-printf1.h
new file mode 100644
index 00000000..199ece90
--- /dev/null
+++ b/tests/unistdio/test-u16-printf1.h
@@ -0,0 +1,941 @@
+/* Test of u16_v[a]s[n]printf() function.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+static void
+test_xfunction (uint16_t * (*my_xasprintf) (const char *, ...))
+{
+ /* Test support of size specifiers as in C99. */
+
+ {
+ uint16_t *result =
+ my_xasprintf ("%ju %d", (uintmax_t) 12345671, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '2', '3', '4', '5', '6', '7', '1', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ {
+ uint16_t *result =
+ my_xasprintf ("%zu %d", (size_t) 12345672, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '2', '3', '4', '5', '6', '7', '2', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ {
+ uint16_t *result =
+ my_xasprintf ("%tu %d", (ptrdiff_t) 12345673, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '2', '3', '4', '5', '6', '7', '3', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ {
+ uint16_t *result =
+ my_xasprintf ("%Lg %d", (long double) 1.5, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '.', '5', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the 'U' conversion specifier for Unicode strings. */
+
+ {
+ static const uint8_t unicode_string[] = "Hello";
+ {
+ uint16_t *result =
+ my_xasprintf ("%U %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Width. */
+ uint16_t *result =
+ my_xasprintf ("%10U %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ uint16_t *result =
+ my_xasprintf ("%-10U %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'H', 'e', 'l', 'l', 'o', ' ', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ uint16_t *result =
+ my_xasprintf ("%010U %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ }
+
+ {
+ static const uint16_t unicode_string[] = { 'H', 'e', 'l', 'l', 'o', 0 };
+ {
+ uint16_t *result =
+ my_xasprintf ("%lU %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Width. */
+ uint16_t *result =
+ my_xasprintf ("%10lU %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ uint16_t *result =
+ my_xasprintf ("%-10lU %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'H', 'e', 'l', 'l', 'o', ' ', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ uint16_t *result =
+ my_xasprintf ("%010lU %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ }
+
+ {
+ static const uint32_t unicode_string[] = { 'H', 'e', 'l', 'l', 'o', 0 };
+ {
+ uint16_t *result =
+ my_xasprintf ("%llU %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Width. */
+ uint16_t *result =
+ my_xasprintf ("%10llU %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ uint16_t *result =
+ my_xasprintf ("%-10llU %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'H', 'e', 'l', 'l', 'o', ' ', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ uint16_t *result =
+ my_xasprintf ("%010llU %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ }
+
+ /* Test the support of the 's' conversion specifier for strings. */
+
+ {
+ uint16_t *result =
+ my_xasprintf ("Mr. %s %d", "Ronald Reagan", 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'M', 'r', '.', ' ', 'R', 'o', 'n', 'a', 'l', 'd',
+ ' ', 'R', 'e', 'a', 'g', 'a', 'n', ' ', '3', '3',
+ 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint16_t *result =
+ my_xasprintf ("Mr. %20s %d", "Ronald Reagan", 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'M', 'r', '.', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
+ ' ', 'R', 'o', 'n', 'a', 'l', 'd', ' ', 'R', 'e',
+ 'a', 'g', 'a', 'n', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* FLAG_LEFT. */
+ uint16_t *result =
+ my_xasprintf ("Mr. %-20s %d", "Ronald Reagan", 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'M', 'r', '.', ' ', 'R', 'o', 'n', 'a', 'l', 'd',
+ ' ', 'R', 'e', 'a', 'g', 'a', 'n', ' ', ' ', ' ',
+ ' ', ' ', ' ', ' ', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* FLAG_ZERO: no effect. */
+ uint16_t *result =
+ my_xasprintf ("Mr. %020s %d", "Ronald Reagan", 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'M', 'r', '.', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
+ ' ', 'R', 'o', 'n', 'a', 'l', 'd', ' ', 'R', 'e',
+ 'a', 'g', 'a', 'n', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the 'a' and 'A' conversion specifier for hexadecimal
+ output of floating-point numbers. */
+
+ { /* A positive number. */
+ uint16_t *result =
+ my_xasprintf ("%a %d", 3.1416015625, 33, 44, 55);
+ static const uint16_t expected1[] =
+ { '0', 'x', '1', '.', '9', '2', '2', 'p', '+', '1', ' ', '3', '3', 0 };
+ static const uint16_t expected2[] =
+ { '0', 'x', '3', '.', '2', '4', '4', 'p', '+', '0', ' ', '3', '3', 0 };
+ static const uint16_t expected3[] =
+ { '0', 'x', '6', '.', '4', '8', '8', 'p', '-', '1', ' ', '3', '3', 0 };
+ static const uint16_t expected4[] =
+ { '0', 'x', 'c', '.', '9', '1', 'p', '-', '2', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected1) == 0
+ || u16_strcmp (result, expected2) == 0
+ || u16_strcmp (result, expected3) == 0
+ || u16_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint16_t *result =
+ my_xasprintf ("%10a %d", 1.75, 33, 44, 55);
+ static const uint16_t expected1[] =
+ { ' ', ' ', '0', 'x', '1', '.', 'c', 'p', '+', '0', ' ', '3', '3', 0 };
+ static const uint16_t expected2[] =
+ { ' ', ' ', '0', 'x', '3', '.', '8', 'p', '-', '1', ' ', '3', '3', 0 };
+ static const uint16_t expected3[] =
+ { ' ', ' ', ' ', ' ', '0', 'x', '7', 'p', '-', '2', ' ', '3', '3', 0 };
+ static const uint16_t expected4[] =
+ { ' ', ' ', ' ', ' ', '0', 'x', 'e', 'p', '-', '3', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected1) == 0
+ || u16_strcmp (result, expected2) == 0
+ || u16_strcmp (result, expected3) == 0
+ || u16_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Small precision. */
+ uint16_t *result =
+ my_xasprintf ("%.10a %d", 1.75, 33, 44, 55);
+ static const uint16_t expected1[] =
+ { '0', 'x', '1', '.', 'c', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '+', '0', ' ', '3', '3',
+ 0
+ };
+ static const uint16_t expected2[] =
+ { '0', 'x', '3', '.', '8', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '1', ' ', '3', '3',
+ 0
+ };
+ static const uint16_t expected3[] =
+ { '0', 'x', '7', '.', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '2', ' ', '3', '3',
+ 0
+ };
+ static const uint16_t expected4[] =
+ { '0', 'x', 'e', '.', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '3', ' ', '3', '3',
+ 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected1) == 0
+ || u16_strcmp (result, expected2) == 0
+ || u16_strcmp (result, expected3) == 0
+ || u16_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Large precision. */
+ uint16_t *result =
+ my_xasprintf ("%.50a %d", 1.75, 33, 44, 55);
+ static const uint16_t expected1[] =
+ { '0', 'x', '1', '.', 'c', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '+', '0', ' ', '3', '3',
+ 0
+ };
+ static const uint16_t expected2[] =
+ { '0', 'x', '3', '.', '8', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '1', ' ', '3', '3',
+ 0
+ };
+ static const uint16_t expected3[] =
+ { '0', 'x', '7', '.', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '2', ' ', '3', '3',
+ 0
+ };
+ static const uint16_t expected4[] =
+ { '0', 'x', 'e', '.', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '3', ' ', '3', '3',
+ 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected1) == 0
+ || u16_strcmp (result, expected2) == 0
+ || u16_strcmp (result, expected3) == 0
+ || u16_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ uint16_t *result =
+ my_xasprintf ("%La %d", 3.1416015625L, 33, 44, 55);
+ static const uint16_t expected1[] =
+ { '0', 'x', '1', '.', '9', '2', '2', 'p', '+', '1',
+ ' ', '3', '3', 0
+ };
+ static const uint16_t expected2[] =
+ { '0', 'x', '3', '.', '2', '4', '4', 'p', '+', '0',
+ ' ', '3', '3', 0
+ };
+ static const uint16_t expected3[] =
+ { '0', 'x', '6', '.', '4', '8', '8', 'p', '-', '1',
+ ' ', '3', '3', 0
+ };
+ static const uint16_t expected4[] =
+ { '0', 'x', 'c', '.', '9', '1', 'p', '-', '2', ' ',
+ '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected1) == 0
+ || u16_strcmp (result, expected2) == 0
+ || u16_strcmp (result, expected3) == 0
+ || u16_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint16_t *result =
+ my_xasprintf ("%10La %d", 1.75L, 33, 44, 55);
+ static const uint16_t expected1[] =
+ { ' ', ' ', '0', 'x', '1', '.', 'c', 'p', '+', '0', ' ', '3', '3', 0 };
+ static const uint16_t expected2[] =
+ { ' ', ' ', '0', 'x', '3', '.', '8', 'p', '-', '1', ' ', '3', '3', 0 };
+ static const uint16_t expected3[] =
+ { ' ', ' ', ' ', ' ', '0', 'x', '7', 'p', '-', '2', ' ', '3', '3', 0 };
+ static const uint16_t expected4[] =
+ { ' ', ' ', ' ', ' ', '0', 'x', 'e', 'p', '-', '3', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected1) == 0
+ || u16_strcmp (result, expected2) == 0
+ || u16_strcmp (result, expected3) == 0
+ || u16_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Small precision. */
+ uint16_t *result =
+ my_xasprintf ("%.10La %d", 1.75L, 33, 44, 55);
+ static const uint16_t expected1[] =
+ { '0', 'x', '1', '.', 'c', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '+', '0', ' ', '3', '3',
+ 0
+ };
+ static const uint16_t expected2[] =
+ { '0', 'x', '3', '.', '8', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '1', ' ', '3', '3',
+ 0
+ };
+ static const uint16_t expected3[] =
+ { '0', 'x', '7', '.', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '2', ' ', '3', '3',
+ 0
+ };
+ static const uint16_t expected4[] =
+ { '0', 'x', 'e', '.', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '3', ' ', '3', '3',
+ 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected1) == 0
+ || u16_strcmp (result, expected2) == 0
+ || u16_strcmp (result, expected3) == 0
+ || u16_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Large precision. */
+ uint16_t *result =
+ my_xasprintf ("%.50La %d", 1.75L, 33, 44, 55);
+ static const uint16_t expected1[] =
+ { '0', 'x', '1', '.', 'c', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '+', '0', ' ', '3', '3',
+ 0
+ };
+ static const uint16_t expected2[] =
+ { '0', 'x', '3', '.', '8', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '1', ' ', '3', '3',
+ 0
+ };
+ static const uint16_t expected3[] =
+ { '0', 'x', '7', '.', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '2', ' ', '3', '3',
+ 0
+ };
+ static const uint16_t expected4[] =
+ { '0', 'x', 'e', '.', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '3', ' ', '3', '3',
+ 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected1) == 0
+ || u16_strcmp (result, expected2) == 0
+ || u16_strcmp (result, expected3) == 0
+ || u16_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ /* Test the support of the %f format directive. */
+
+ { /* A positive number. */
+ uint16_t *result =
+ my_xasprintf ("%f %d", 12.75, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '2', '.', '7', '5', '0', '0', '0', '0', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint16_t *result =
+ my_xasprintf ("%10f %d", 1.75, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', '1', '.', '7', '5', '0', '0', '0', '0', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint16_t *result =
+ my_xasprintf ("%.f %d", 1234.0, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '2', '3', '4', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ uint16_t *result =
+ my_xasprintf ("%Lf %d", 12.75L, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '2', '.', '7', '5', '0', '0', '0', '0', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint16_t *result =
+ my_xasprintf ("%10Lf %d", 1.75L, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', '1', '.', '7', '5', '0', '0', '0', '0', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint16_t *result =
+ my_xasprintf ("%.Lf %d", 1234.0L, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '2', '3', '4', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the %F format directive. */
+
+ { /* A positive number. */
+ uint16_t *result =
+ my_xasprintf ("%F %d", 12.75, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '2', '.', '7', '5', '0', '0', '0', '0', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint16_t *result =
+ my_xasprintf ("%.F %d", 1234.0, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '2', '3', '4', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ uint16_t *result =
+ my_xasprintf ("%LF %d", 12.75L, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '2', '.', '7', '5', '0', '0', '0', '0', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint16_t *result =
+ my_xasprintf ("%.LF %d", 1234.0L, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '2', '3', '4', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the %e format directive. */
+
+ { /* A positive number. */
+ uint16_t *result =
+ my_xasprintf ("%e %d", 12.75, 33, 44, 55);
+ static const uint16_t expected1[] =
+ { '1', '.', '2', '7', '5', '0', '0', '0', 'e', '+',
+ '0', '1', ' ', '3', '3', 0
+ };
+ static const uint16_t expected2[] =
+ { '1', '.', '2', '7', '5', '0', '0', '0', 'e', '+',
+ '0', '0', '1', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected1) == 0
+ || u16_strcmp (result, expected2) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint16_t *result =
+ my_xasprintf ("%15e %d", 1.75, 33, 44, 55);
+ static const uint16_t expected1[] =
+ { ' ', ' ', ' ', '1', '.', '7', '5', '0', '0', '0',
+ '0', 'e', '+', '0', '0', ' ', '3', '3', 0
+ };
+ static const uint16_t expected2[] =
+ { ' ', ' ', '1', '.', '7', '5', '0', '0', '0', '0',
+ 'e', '+', '0', '0', '0', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected1) == 0
+ || u16_strcmp (result, expected2) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint16_t *result =
+ my_xasprintf ("%.e %d", 1234.0, 33, 44, 55);
+ static const uint16_t expected1[] =
+ { '1', 'e', '+', '0', '3', ' ', '3', '3', 0 };
+ static const uint16_t expected2[] =
+ { '1', 'e', '+', '0', '0', '3', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected1) == 0
+ || u16_strcmp (result, expected2) == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ uint16_t *result =
+ my_xasprintf ("%Le %d", 12.75L, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '.', '2', '7', '5', '0', '0', '0', 'e', '+',
+ '0', '1', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint16_t *result =
+ my_xasprintf ("%15Le %d", 1.75L, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', '1', '.', '7', '5', '0', '0', '0',
+ '0', 'e', '+', '0', '0', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint16_t *result =
+ my_xasprintf ("%.Le %d", 1234.0L, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', 'e', '+', '0', '3', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the %g format directive. */
+
+ { /* A positive number. */
+ uint16_t *result =
+ my_xasprintf ("%g %d", 12.75, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '2', '.', '7', '5', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint16_t *result =
+ my_xasprintf ("%10g %d", 1.75, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', ' ', '1', '.', '7', '5', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint16_t *result =
+ my_xasprintf ("%.g %d", 1234.0, 33, 44, 55);
+ static const uint16_t expected1[] =
+ { '1', 'e', '+', '0', '3', ' ', '3', '3', 0 };
+ static const uint16_t expected2[] =
+ { '1', 'e', '+', '0', '0', '3', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected1) == 0
+ || u16_strcmp (result, expected2) == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ uint16_t *result =
+ my_xasprintf ("%Lg %d", 12.75L, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '2', '.', '7', '5', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint16_t *result =
+ my_xasprintf ("%10Lg %d", 1.75L, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', ' ', '1', '.', '7', '5', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint16_t *result =
+ my_xasprintf ("%.Lg %d", 1234.0L, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', 'e', '+', '0', '3', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the %n format directive. */
+
+ {
+ int count = -1;
+ uint16_t *result =
+ my_xasprintf ("%d %n", 123, &count, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '2', '3', ' ', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ ASSERT (count == 4);
+ free (result);
+ }
+
+ /* Test the support of the POSIX/XSI format strings with positions. */
+
+ {
+ uint16_t *result =
+ my_xasprintf ("%2$d %1$d", 33, 55);
+ static const uint16_t expected[] =
+ { '5', '5', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the grouping flag. */
+
+ {
+ uint16_t *result =
+ my_xasprintf ("%'d %d", 1234567, 99);
+ ASSERT (result != NULL);
+ ASSERT (result[u16_strlen (result) - 1] == '9');
+ free (result);
+ }
+
+ /* Test the support of the 'U' conversion specifier for Unicode strings. */
+
+ {
+ static const uint8_t unicode_string[] = "Rafa\305\202 Maszkowski"; /* Rafał Maszkowski */
+ {
+ uint16_t *result =
+ my_xasprintf ("%U %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z',
+ 'k', 'o', 'w', 's', 'k', 'i', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Width. */
+ uint16_t *result =
+ my_xasprintf ("%20U %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', 'R', 'a', 'f', 'a', 0x0142, ' ',
+ 'M', 'a', 's', 'z', 'k', 'o', 'w', 's', 'k', 'i',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ uint16_t *result =
+ my_xasprintf ("%-20U %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z',
+ 'k', 'o', 'w', 's', 'k', 'i', ' ', ' ', ' ', ' ',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ uint16_t *result =
+ my_xasprintf ("%020U %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', 'R', 'a', 'f', 'a', 0x0142, ' ',
+ 'M', 'a', 's', 'z', 'k', 'o', 'w', 's', 'k', 'i',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ }
+
+ {
+ static const uint16_t unicode_string[] = /* Rafał Maszkowski */
+ {
+ 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w',
+ 's', 'k', 'i', 0
+ };
+ {
+ uint16_t *result =
+ my_xasprintf ("%lU %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z',
+ 'k', 'o', 'w', 's', 'k', 'i', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Width. */
+ uint16_t *result =
+ my_xasprintf ("%20lU %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', 'R', 'a', 'f', 'a', 0x0142, ' ',
+ 'M', 'a', 's', 'z', 'k', 'o', 'w', 's', 'k', 'i',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ uint16_t *result =
+ my_xasprintf ("%-20lU %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z',
+ 'k', 'o', 'w', 's', 'k', 'i', ' ', ' ', ' ', ' ',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ uint16_t *result =
+ my_xasprintf ("%020lU %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', 'R', 'a', 'f', 'a', 0x0142, ' ',
+ 'M', 'a', 's', 'z', 'k', 'o', 'w', 's', 'k', 'i',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ }
+
+ {
+ static const uint32_t unicode_string[] = /* Rafał Maszkowski */
+ {
+ 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w',
+ 's', 'k', 'i', 0
+ };
+ {
+ uint16_t *result =
+ my_xasprintf ("%llU %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z',
+ 'k', 'o', 'w', 's', 'k', 'i', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Width. */
+ uint16_t *result =
+ my_xasprintf ("%20llU %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', 'R', 'a', 'f', 'a', 0x0142, ' ',
+ 'M', 'a', 's', 'z', 'k', 'o', 'w', 's', 'k', 'i',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ uint16_t *result =
+ my_xasprintf ("%-20llU %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z',
+ 'k', 'o', 'w', 's', 'k', 'i', ' ', ' ', ' ', ' ',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ uint16_t *result =
+ my_xasprintf ("%020llU %d", unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', 'R', 'a', 'f', 'a', 0x0142, ' ',
+ 'M', 'a', 's', 'z', 'k', 'o', 'w', 's', 'k', 'i',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ }
+
+ /* Test non-ASCII characters in the format string. */
+
+ {
+ uint16_t *result =
+ my_xasprintf ("\304rger", 33, 44, 55);
+ ASSERT (result == NULL && errno == EINVAL);
+ }
+}
diff --git a/tests/unistdio/test-u16-vasnprintf1.c b/tests/unistdio/test-u16-vasnprintf1.c
new file mode 100644
index 00000000..b236e3fe
--- /dev/null
+++ b/tests/unistdio/test-u16-vasnprintf1.c
@@ -0,0 +1,88 @@
+/* Test of u16_vasnprintf() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u16-asnprintf1.h"
+#include "test-u16-printf1.h"
+
+static uint16_t *
+my_asnprintf (uint16_t *resultbuf, size_t *lengthp, const char *format, ...)
+{
+ va_list args;
+ uint16_t *ret;
+
+ va_start (args, format);
+ ret = u16_vasnprintf (resultbuf, lengthp, format, args);
+ va_end (args);
+ return ret;
+}
+
+static uint16_t *
+my_xasprintf (const char *format, ...)
+{
+ va_list args;
+ size_t length;
+ uint16_t *ret;
+
+ va_start (args, format);
+ ret = u16_vasnprintf (NULL, &length, format, args);
+ va_end (args);
+ if (ret != NULL)
+ ASSERT (length == u16_strlen (ret));
+ return ret;
+}
+
+static void
+test_vasnprintf ()
+{
+ test_function (my_asnprintf);
+ test_xfunction (my_xasprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ test_vasnprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-u16-vasnprintf2.c b/tests/unistdio/test-u16-vasnprintf2.c
new file mode 100644
index 00000000..6f7b7cf6
--- /dev/null
+++ b/tests/unistdio/test-u16-vasnprintf2.c
@@ -0,0 +1,132 @@
+/* Test of u16_vasnprintf() function in an ISO-8859-1 locale.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <locale.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static void
+test_function (uint16_t * (*my_asnprintf) (uint16_t *, size_t *, const char *, ...))
+{
+ /* Test the support of the 's' conversion specifier for strings. */
+
+ {
+ const char *locale_string = "\304rger"; /* Ärger */
+ {
+ size_t length;
+ uint16_t *result =
+ my_asnprintf (NULL, &length, "%s %d", locale_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 0x00c4, 'r', 'g', 'e', 'r', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ ASSERT (length == u16_strlen (result));
+ free (result);
+ }
+ { /* Width. */
+ size_t length;
+ uint16_t *result =
+ my_asnprintf (NULL, &length, "%10s %d", locale_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 0x00c4, 'r', 'g', 'e', 'r',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ ASSERT (length == u16_strlen (result));
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ size_t length;
+ uint16_t *result =
+ my_asnprintf (NULL, &length, "%-10s %d", locale_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 0x00c4, 'r', 'g', 'e', 'r', ' ', ' ', ' ', ' ', ' ',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ ASSERT (length == u16_strlen (result));
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ size_t length;
+ uint16_t *result =
+ my_asnprintf (NULL, &length, "%010s %d", locale_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 0x00c4, 'r', 'g', 'e', 'r',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ ASSERT (length == u16_strlen (result));
+ free (result);
+ }
+ }
+}
+
+static uint16_t *
+my_asnprintf (uint16_t *resultbuf, size_t *lengthp, const char *format, ...)
+{
+ va_list args;
+ uint16_t *ret;
+
+ va_start (args, format);
+ ret = u16_vasnprintf (resultbuf, lengthp, format, args);
+ va_end (args);
+ return ret;
+}
+
+static void
+test_vasnprintf ()
+{
+ test_function (my_asnprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ test_vasnprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-u16-vasnprintf2.sh b/tests/unistdio/test-u16-vasnprintf2.sh
new file mode 100755
index 00000000..418b8aac
--- /dev/null
+++ b/tests/unistdio/test-u16-vasnprintf2.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# Test whether a traditional french locale is installed.
+: ${LOCALE_FR=fr_FR}
+if test $LOCALE_FR != none; then
+ testlocale=$LOCALE_FR
+else
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no traditional french locale is installed"
+ else
+ echo "Skipping test: no traditional french locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$testlocale \
+./test-u16-vasnprintf1${EXEEXT} \
+ || exit 1
+
+LC_ALL=$testlocale \
+./test-u16-vasnprintf2${EXEEXT}
diff --git a/tests/unistdio/test-u16-vasnprintf3.c b/tests/unistdio/test-u16-vasnprintf3.c
new file mode 100644
index 00000000..14021819
--- /dev/null
+++ b/tests/unistdio/test-u16-vasnprintf3.c
@@ -0,0 +1,132 @@
+/* Test of u16_vasnprintf() function in an UTF-8 locale.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <locale.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static void
+test_function (uint16_t * (*my_asnprintf) (uint16_t *, size_t *, const char *, ...))
+{
+ /* Test the support of the 's' conversion specifier for strings. */
+
+ {
+ const char *locale_string = "\303\204rger"; /* Ärger */
+ {
+ size_t length;
+ uint16_t *result =
+ my_asnprintf (NULL, &length, "%s %d", locale_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 0x00c4, 'r', 'g', 'e', 'r', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ ASSERT (length == u16_strlen (result));
+ free (result);
+ }
+ { /* Width. */
+ size_t length;
+ uint16_t *result =
+ my_asnprintf (NULL, &length, "%10s %d", locale_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 0x00c4, 'r', 'g', 'e', 'r',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ ASSERT (length == u16_strlen (result));
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ size_t length;
+ uint16_t *result =
+ my_asnprintf (NULL, &length, "%-10s %d", locale_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 0x00c4, 'r', 'g', 'e', 'r', ' ', ' ', ' ', ' ', ' ',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ ASSERT (length == u16_strlen (result));
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ size_t length;
+ uint16_t *result =
+ my_asnprintf (NULL, &length, "%010s %d", locale_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 0x00c4, 'r', 'g', 'e', 'r',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ ASSERT (length == u16_strlen (result));
+ free (result);
+ }
+ }
+}
+
+static uint16_t *
+my_asnprintf (uint16_t *resultbuf, size_t *lengthp, const char *format, ...)
+{
+ va_list args;
+ uint16_t *ret;
+
+ va_start (args, format);
+ ret = u16_vasnprintf (resultbuf, lengthp, format, args);
+ va_end (args);
+ return ret;
+}
+
+static void
+test_vasnprintf ()
+{
+ test_function (my_asnprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ test_vasnprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-u16-vasnprintf3.sh b/tests/unistdio/test-u16-vasnprintf3.sh
new file mode 100755
index 00000000..57488c06
--- /dev/null
+++ b/tests/unistdio/test-u16-vasnprintf3.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# Test whether a french Unicode locale is installed.
+: ${LOCALE_FR_UTF8=fr_FR.UTF-8}
+if test $LOCALE_FR_UTF8 != none; then
+ testlocale=$LOCALE_FR_UTF8
+else
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no french Unicode locale is installed"
+ else
+ echo "Skipping test: no french Unicode locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$testlocale \
+./test-u16-vasnprintf1${EXEEXT} \
+ || exit 1
+
+LC_ALL=$testlocale \
+./test-u16-vasnprintf3${EXEEXT}
diff --git a/tests/unistdio/test-u16-vasprintf1.c b/tests/unistdio/test-u16-vasprintf1.c
new file mode 100644
index 00000000..8b961268
--- /dev/null
+++ b/tests/unistdio/test-u16-vasprintf1.c
@@ -0,0 +1,75 @@
+/* Test of u16_vasprintf() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u16-printf1.h"
+
+static uint16_t *
+my_xasprintf (const char *format, ...)
+{
+ va_list args;
+ uint16_t *result;
+ int retval;
+
+ va_start (args, format);
+ retval = u16_vasprintf (&result, format, args);
+ va_end (args);
+ if (retval < 0)
+ return NULL;
+ ASSERT (result != NULL);
+ return result;
+}
+
+static void
+test_vasprintf ()
+{
+ test_xfunction (my_xasprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ test_vasprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-u16-vsnprintf1.c b/tests/unistdio/test-u16-vsnprintf1.c
new file mode 100644
index 00000000..886e95b3
--- /dev/null
+++ b/tests/unistdio/test-u16-vsnprintf1.c
@@ -0,0 +1,84 @@
+/* Test of u16_vsnprintf() function.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+#include "xalloc.h"
+#include "progname.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u16-printf1.h"
+
+static uint16_t *
+my_xasprintf (const char *format, ...)
+{
+ va_list args;
+ uint16_t buf[1000];
+ int retval;
+ size_t length;
+ uint16_t *result;
+
+ va_start (args, format);
+ retval = u16_vsnprintf (buf, sizeof (buf), format, args);
+ va_end (args);
+ if (retval < 0 || retval >= (int) sizeof (buf))
+ return NULL;
+ length = u16_strlen (buf);
+ result = XNMALLOC (length + 1, uint16_t);
+ u16_cpy (result, buf, length + 1);
+ return result;
+}
+
+static void
+test_vsnprintf ()
+{
+ test_xfunction (my_xasprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ set_program_name (argv[0]);
+
+ test_vsnprintf ();
+
+ return 0;
+}
diff --git a/tests/unistdio/test-u16-vsprintf1.c b/tests/unistdio/test-u16-vsprintf1.c
new file mode 100644
index 00000000..e6b6eab7
--- /dev/null
+++ b/tests/unistdio/test-u16-vsprintf1.c
@@ -0,0 +1,84 @@
+/* Test of u16_vsprintf() function.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+#include "xalloc.h"
+#include "progname.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u16-printf1.h"
+
+static uint16_t *
+my_xasprintf (const char *format, ...)
+{
+ va_list args;
+ uint16_t buf[1000];
+ int retval;
+ size_t length;
+ uint16_t *result;
+
+ va_start (args, format);
+ retval = u16_vsprintf (buf, format, args);
+ va_end (args);
+ if (retval < 0 || retval >= (int) sizeof (buf))
+ return NULL;
+ length = u16_strlen (buf);
+ result = XNMALLOC (length + 1, uint16_t);
+ u16_cpy (result, buf, length + 1);
+ return result;
+}
+
+static void
+test_vsprintf ()
+{
+ test_xfunction (my_xasprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ set_program_name (argv[0]);
+
+ test_vsprintf ();
+
+ return 0;
+}
diff --git a/tests/unistdio/test-u32-asnprintf1.c b/tests/unistdio/test-u32-asnprintf1.c
new file mode 100644
index 00000000..252e919f
--- /dev/null
+++ b/tests/unistdio/test-u32-asnprintf1.c
@@ -0,0 +1,59 @@
+/* Test of u32_asnprintf() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u32-asnprintf1.h"
+
+static void
+test_asnprintf ()
+{
+ test_function (u32_asnprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ test_asnprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-u32-asnprintf1.h b/tests/unistdio/test-u32-asnprintf1.h
new file mode 100644
index 00000000..dfaed98d
--- /dev/null
+++ b/tests/unistdio/test-u32-asnprintf1.h
@@ -0,0 +1,60 @@
+/* Test of u32_[v]asnprintf() function.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+static void
+test_function (uint32_t * (*my_asnprintf) (uint32_t *, size_t *, const char *, ...))
+{
+ uint32_t buf[8];
+ int size;
+
+ /* Test return value convention. */
+
+ for (size = 0; size <= 8; size++)
+ {
+ size_t length = size;
+ uint32_t *result = my_asnprintf (NULL, &length, "%d", 12345);
+ static const uint32_t expected[] =
+ { '1', '2', '3', '4', '5', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ ASSERT (length == 5);
+ free (result);
+ }
+
+ for (size = 0; size <= 8; size++)
+ {
+ static const uint32_t initializer[] =
+ { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F', 0 };
+ static const uint32_t expected[] =
+ { '1', '2', '3', '4', '5', 0 };
+ size_t length;
+ uint32_t *result;
+
+ u32_cpy (buf, initializer, 8);
+ length = size;
+ result = my_asnprintf (buf, &length, "%d", 12345);
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ ASSERT (length == 5);
+ if (size < 6)
+ ASSERT (result != buf);
+ ASSERT (u32_cmp (buf + size, initializer + size, 8 - size) == 0);
+ if (result != buf)
+ free (result);
+ }
+}
diff --git a/tests/unistdio/test-u32-printf1.h b/tests/unistdio/test-u32-printf1.h
new file mode 100644
index 00000000..240232fd
--- /dev/null
+++ b/tests/unistdio/test-u32-printf1.h
@@ -0,0 +1,941 @@
+/* Test of u32_v[a]s[n]printf() function.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+static void
+test_xfunction (uint32_t * (*my_xasprintf) (const char *, ...))
+{
+ /* Test support of size specifiers as in C99. */
+
+ {
+ uint32_t *result =
+ my_xasprintf ("%ju %d", (uintmax_t) 12345671, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '2', '3', '4', '5', '6', '7', '1', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ {
+ uint32_t *result =
+ my_xasprintf ("%zu %d", (size_t) 12345672, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '2', '3', '4', '5', '6', '7', '2', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ {
+ uint32_t *result =
+ my_xasprintf ("%tu %d", (ptrdiff_t) 12345673, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '2', '3', '4', '5', '6', '7', '3', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ {
+ uint32_t *result =
+ my_xasprintf ("%Lg %d", (long double) 1.5, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '.', '5', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the 'U' conversion specifier for Unicode strings. */
+
+ {
+ static const uint8_t unicode_string[] = "Hello";
+ {
+ uint32_t *result =
+ my_xasprintf ("%U %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Width. */
+ uint32_t *result =
+ my_xasprintf ("%10U %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ uint32_t *result =
+ my_xasprintf ("%-10U %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'H', 'e', 'l', 'l', 'o', ' ', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ uint32_t *result =
+ my_xasprintf ("%010U %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ }
+
+ {
+ static const uint16_t unicode_string[] = { 'H', 'e', 'l', 'l', 'o', 0 };
+ {
+ uint32_t *result =
+ my_xasprintf ("%lU %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Width. */
+ uint32_t *result =
+ my_xasprintf ("%10lU %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ uint32_t *result =
+ my_xasprintf ("%-10lU %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'H', 'e', 'l', 'l', 'o', ' ', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ uint32_t *result =
+ my_xasprintf ("%010lU %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ }
+
+ {
+ static const uint32_t unicode_string[] = { 'H', 'e', 'l', 'l', 'o', 0 };
+ {
+ uint32_t *result =
+ my_xasprintf ("%llU %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Width. */
+ uint32_t *result =
+ my_xasprintf ("%10llU %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ uint32_t *result =
+ my_xasprintf ("%-10llU %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'H', 'e', 'l', 'l', 'o', ' ', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ uint32_t *result =
+ my_xasprintf ("%010llU %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ }
+
+ /* Test the support of the 's' conversion specifier for strings. */
+
+ {
+ uint32_t *result =
+ my_xasprintf ("Mr. %s %d", "Ronald Reagan", 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'M', 'r', '.', ' ', 'R', 'o', 'n', 'a', 'l', 'd',
+ ' ', 'R', 'e', 'a', 'g', 'a', 'n', ' ', '3', '3',
+ 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint32_t *result =
+ my_xasprintf ("Mr. %20s %d", "Ronald Reagan", 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'M', 'r', '.', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
+ ' ', 'R', 'o', 'n', 'a', 'l', 'd', ' ', 'R', 'e',
+ 'a', 'g', 'a', 'n', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* FLAG_LEFT. */
+ uint32_t *result =
+ my_xasprintf ("Mr. %-20s %d", "Ronald Reagan", 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'M', 'r', '.', ' ', 'R', 'o', 'n', 'a', 'l', 'd',
+ ' ', 'R', 'e', 'a', 'g', 'a', 'n', ' ', ' ', ' ',
+ ' ', ' ', ' ', ' ', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* FLAG_ZERO: no effect. */
+ uint32_t *result =
+ my_xasprintf ("Mr. %020s %d", "Ronald Reagan", 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'M', 'r', '.', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
+ ' ', 'R', 'o', 'n', 'a', 'l', 'd', ' ', 'R', 'e',
+ 'a', 'g', 'a', 'n', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the 'a' and 'A' conversion specifier for hexadecimal
+ output of floating-point numbers. */
+
+ { /* A positive number. */
+ uint32_t *result =
+ my_xasprintf ("%a %d", 3.1416015625, 33, 44, 55);
+ static const uint32_t expected1[] =
+ { '0', 'x', '1', '.', '9', '2', '2', 'p', '+', '1', ' ', '3', '3', 0 };
+ static const uint32_t expected2[] =
+ { '0', 'x', '3', '.', '2', '4', '4', 'p', '+', '0', ' ', '3', '3', 0 };
+ static const uint32_t expected3[] =
+ { '0', 'x', '6', '.', '4', '8', '8', 'p', '-', '1', ' ', '3', '3', 0 };
+ static const uint32_t expected4[] =
+ { '0', 'x', 'c', '.', '9', '1', 'p', '-', '2', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected1) == 0
+ || u32_strcmp (result, expected2) == 0
+ || u32_strcmp (result, expected3) == 0
+ || u32_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint32_t *result =
+ my_xasprintf ("%10a %d", 1.75, 33, 44, 55);
+ static const uint32_t expected1[] =
+ { ' ', ' ', '0', 'x', '1', '.', 'c', 'p', '+', '0', ' ', '3', '3', 0 };
+ static const uint32_t expected2[] =
+ { ' ', ' ', '0', 'x', '3', '.', '8', 'p', '-', '1', ' ', '3', '3', 0 };
+ static const uint32_t expected3[] =
+ { ' ', ' ', ' ', ' ', '0', 'x', '7', 'p', '-', '2', ' ', '3', '3', 0 };
+ static const uint32_t expected4[] =
+ { ' ', ' ', ' ', ' ', '0', 'x', 'e', 'p', '-', '3', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected1) == 0
+ || u32_strcmp (result, expected2) == 0
+ || u32_strcmp (result, expected3) == 0
+ || u32_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Small precision. */
+ uint32_t *result =
+ my_xasprintf ("%.10a %d", 1.75, 33, 44, 55);
+ static const uint32_t expected1[] =
+ { '0', 'x', '1', '.', 'c', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '+', '0', ' ', '3', '3',
+ 0
+ };
+ static const uint32_t expected2[] =
+ { '0', 'x', '3', '.', '8', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '1', ' ', '3', '3',
+ 0
+ };
+ static const uint32_t expected3[] =
+ { '0', 'x', '7', '.', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '2', ' ', '3', '3',
+ 0
+ };
+ static const uint32_t expected4[] =
+ { '0', 'x', 'e', '.', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '3', ' ', '3', '3',
+ 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected1) == 0
+ || u32_strcmp (result, expected2) == 0
+ || u32_strcmp (result, expected3) == 0
+ || u32_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Large precision. */
+ uint32_t *result =
+ my_xasprintf ("%.50a %d", 1.75, 33, 44, 55);
+ static const uint32_t expected1[] =
+ { '0', 'x', '1', '.', 'c', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '+', '0', ' ', '3', '3',
+ 0
+ };
+ static const uint32_t expected2[] =
+ { '0', 'x', '3', '.', '8', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '1', ' ', '3', '3',
+ 0
+ };
+ static const uint32_t expected3[] =
+ { '0', 'x', '7', '.', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '2', ' ', '3', '3',
+ 0
+ };
+ static const uint32_t expected4[] =
+ { '0', 'x', 'e', '.', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '3', ' ', '3', '3',
+ 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected1) == 0
+ || u32_strcmp (result, expected2) == 0
+ || u32_strcmp (result, expected3) == 0
+ || u32_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ uint32_t *result =
+ my_xasprintf ("%La %d", 3.1416015625L, 33, 44, 55);
+ static const uint32_t expected1[] =
+ { '0', 'x', '1', '.', '9', '2', '2', 'p', '+', '1',
+ ' ', '3', '3', 0
+ };
+ static const uint32_t expected2[] =
+ { '0', 'x', '3', '.', '2', '4', '4', 'p', '+', '0',
+ ' ', '3', '3', 0
+ };
+ static const uint32_t expected3[] =
+ { '0', 'x', '6', '.', '4', '8', '8', 'p', '-', '1',
+ ' ', '3', '3', 0
+ };
+ static const uint32_t expected4[] =
+ { '0', 'x', 'c', '.', '9', '1', 'p', '-', '2', ' ',
+ '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected1) == 0
+ || u32_strcmp (result, expected2) == 0
+ || u32_strcmp (result, expected3) == 0
+ || u32_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint32_t *result =
+ my_xasprintf ("%10La %d", 1.75L, 33, 44, 55);
+ static const uint32_t expected1[] =
+ { ' ', ' ', '0', 'x', '1', '.', 'c', 'p', '+', '0', ' ', '3', '3', 0 };
+ static const uint32_t expected2[] =
+ { ' ', ' ', '0', 'x', '3', '.', '8', 'p', '-', '1', ' ', '3', '3', 0 };
+ static const uint32_t expected3[] =
+ { ' ', ' ', ' ', ' ', '0', 'x', '7', 'p', '-', '2', ' ', '3', '3', 0 };
+ static const uint32_t expected4[] =
+ { ' ', ' ', ' ', ' ', '0', 'x', 'e', 'p', '-', '3', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected1) == 0
+ || u32_strcmp (result, expected2) == 0
+ || u32_strcmp (result, expected3) == 0
+ || u32_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Small precision. */
+ uint32_t *result =
+ my_xasprintf ("%.10La %d", 1.75L, 33, 44, 55);
+ static const uint32_t expected1[] =
+ { '0', 'x', '1', '.', 'c', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '+', '0', ' ', '3', '3',
+ 0
+ };
+ static const uint32_t expected2[] =
+ { '0', 'x', '3', '.', '8', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '1', ' ', '3', '3',
+ 0
+ };
+ static const uint32_t expected3[] =
+ { '0', 'x', '7', '.', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '2', ' ', '3', '3',
+ 0
+ };
+ static const uint32_t expected4[] =
+ { '0', 'x', 'e', '.', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '3', ' ', '3', '3',
+ 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected1) == 0
+ || u32_strcmp (result, expected2) == 0
+ || u32_strcmp (result, expected3) == 0
+ || u32_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Large precision. */
+ uint32_t *result =
+ my_xasprintf ("%.50La %d", 1.75L, 33, 44, 55);
+ static const uint32_t expected1[] =
+ { '0', 'x', '1', '.', 'c', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '+', '0', ' ', '3', '3',
+ 0
+ };
+ static const uint32_t expected2[] =
+ { '0', 'x', '3', '.', '8', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '1', ' ', '3', '3',
+ 0
+ };
+ static const uint32_t expected3[] =
+ { '0', 'x', '7', '.', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '2', ' ', '3', '3',
+ 0
+ };
+ static const uint32_t expected4[] =
+ { '0', 'x', 'e', '.', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
+ '0', '0', '0', '0', 'p', '-', '3', ' ', '3', '3',
+ 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected1) == 0
+ || u32_strcmp (result, expected2) == 0
+ || u32_strcmp (result, expected3) == 0
+ || u32_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ /* Test the support of the %f format directive. */
+
+ { /* A positive number. */
+ uint32_t *result =
+ my_xasprintf ("%f %d", 12.75, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '2', '.', '7', '5', '0', '0', '0', '0', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint32_t *result =
+ my_xasprintf ("%10f %d", 1.75, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', '1', '.', '7', '5', '0', '0', '0', '0', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint32_t *result =
+ my_xasprintf ("%.f %d", 1234.0, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '2', '3', '4', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ uint32_t *result =
+ my_xasprintf ("%Lf %d", 12.75L, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '2', '.', '7', '5', '0', '0', '0', '0', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint32_t *result =
+ my_xasprintf ("%10Lf %d", 1.75L, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', '1', '.', '7', '5', '0', '0', '0', '0', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint32_t *result =
+ my_xasprintf ("%.Lf %d", 1234.0L, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '2', '3', '4', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the %F format directive. */
+
+ { /* A positive number. */
+ uint32_t *result =
+ my_xasprintf ("%F %d", 12.75, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '2', '.', '7', '5', '0', '0', '0', '0', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint32_t *result =
+ my_xasprintf ("%.F %d", 1234.0, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '2', '3', '4', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ uint32_t *result =
+ my_xasprintf ("%LF %d", 12.75L, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '2', '.', '7', '5', '0', '0', '0', '0', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint32_t *result =
+ my_xasprintf ("%.LF %d", 1234.0L, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '2', '3', '4', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the %e format directive. */
+
+ { /* A positive number. */
+ uint32_t *result =
+ my_xasprintf ("%e %d", 12.75, 33, 44, 55);
+ static const uint32_t expected1[] =
+ { '1', '.', '2', '7', '5', '0', '0', '0', 'e', '+',
+ '0', '1', ' ', '3', '3', 0
+ };
+ static const uint32_t expected2[] =
+ { '1', '.', '2', '7', '5', '0', '0', '0', 'e', '+',
+ '0', '0', '1', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected1) == 0
+ || u32_strcmp (result, expected2) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint32_t *result =
+ my_xasprintf ("%15e %d", 1.75, 33, 44, 55);
+ static const uint32_t expected1[] =
+ { ' ', ' ', ' ', '1', '.', '7', '5', '0', '0', '0',
+ '0', 'e', '+', '0', '0', ' ', '3', '3', 0
+ };
+ static const uint32_t expected2[] =
+ { ' ', ' ', '1', '.', '7', '5', '0', '0', '0', '0',
+ 'e', '+', '0', '0', '0', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected1) == 0
+ || u32_strcmp (result, expected2) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint32_t *result =
+ my_xasprintf ("%.e %d", 1234.0, 33, 44, 55);
+ static const uint32_t expected1[] =
+ { '1', 'e', '+', '0', '3', ' ', '3', '3', 0 };
+ static const uint32_t expected2[] =
+ { '1', 'e', '+', '0', '0', '3', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected1) == 0
+ || u32_strcmp (result, expected2) == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ uint32_t *result =
+ my_xasprintf ("%Le %d", 12.75L, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '.', '2', '7', '5', '0', '0', '0', 'e', '+',
+ '0', '1', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint32_t *result =
+ my_xasprintf ("%15Le %d", 1.75L, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', '1', '.', '7', '5', '0', '0', '0',
+ '0', 'e', '+', '0', '0', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint32_t *result =
+ my_xasprintf ("%.Le %d", 1234.0L, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', 'e', '+', '0', '3', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the %g format directive. */
+
+ { /* A positive number. */
+ uint32_t *result =
+ my_xasprintf ("%g %d", 12.75, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '2', '.', '7', '5', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint32_t *result =
+ my_xasprintf ("%10g %d", 1.75, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', ' ', '1', '.', '7', '5', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint32_t *result =
+ my_xasprintf ("%.g %d", 1234.0, 33, 44, 55);
+ static const uint32_t expected1[] =
+ { '1', 'e', '+', '0', '3', ' ', '3', '3', 0 };
+ static const uint32_t expected2[] =
+ { '1', 'e', '+', '0', '0', '3', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected1) == 0
+ || u32_strcmp (result, expected2) == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ uint32_t *result =
+ my_xasprintf ("%Lg %d", 12.75L, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '2', '.', '7', '5', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint32_t *result =
+ my_xasprintf ("%10Lg %d", 1.75L, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', ' ', '1', '.', '7', '5', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint32_t *result =
+ my_xasprintf ("%.Lg %d", 1234.0L, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', 'e', '+', '0', '3', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the %n format directive. */
+
+ {
+ int count = -1;
+ uint32_t *result =
+ my_xasprintf ("%d %n", 123, &count, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '2', '3', ' ', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ ASSERT (count == 4);
+ free (result);
+ }
+
+ /* Test the support of the POSIX/XSI format strings with positions. */
+
+ {
+ uint32_t *result =
+ my_xasprintf ("%2$d %1$d", 33, 55);
+ static const uint32_t expected[] =
+ { '5', '5', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the grouping flag. */
+
+ {
+ uint32_t *result =
+ my_xasprintf ("%'d %d", 1234567, 99);
+ ASSERT (result != NULL);
+ ASSERT (result[u32_strlen (result) - 1] == '9');
+ free (result);
+ }
+
+ /* Test the support of the 'U' conversion specifier for Unicode strings. */
+
+ {
+ static const uint8_t unicode_string[] = "Rafa\305\202 Maszkowski"; /* Rafał Maszkowski */
+ {
+ uint32_t *result =
+ my_xasprintf ("%U %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z',
+ 'k', 'o', 'w', 's', 'k', 'i', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Width. */
+ uint32_t *result =
+ my_xasprintf ("%20U %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', 'R', 'a', 'f', 'a', 0x0142, ' ',
+ 'M', 'a', 's', 'z', 'k', 'o', 'w', 's', 'k', 'i',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ uint32_t *result =
+ my_xasprintf ("%-20U %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z',
+ 'k', 'o', 'w', 's', 'k', 'i', ' ', ' ', ' ', ' ',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ uint32_t *result =
+ my_xasprintf ("%020U %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', 'R', 'a', 'f', 'a', 0x0142, ' ',
+ 'M', 'a', 's', 'z', 'k', 'o', 'w', 's', 'k', 'i',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ }
+
+ {
+ static const uint16_t unicode_string[] = /* Rafał Maszkowski */
+ {
+ 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w',
+ 's', 'k', 'i', 0
+ };
+ {
+ uint32_t *result =
+ my_xasprintf ("%lU %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z',
+ 'k', 'o', 'w', 's', 'k', 'i', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Width. */
+ uint32_t *result =
+ my_xasprintf ("%20lU %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', 'R', 'a', 'f', 'a', 0x0142, ' ',
+ 'M', 'a', 's', 'z', 'k', 'o', 'w', 's', 'k', 'i',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ uint32_t *result =
+ my_xasprintf ("%-20lU %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z',
+ 'k', 'o', 'w', 's', 'k', 'i', ' ', ' ', ' ', ' ',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ uint32_t *result =
+ my_xasprintf ("%020lU %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', 'R', 'a', 'f', 'a', 0x0142, ' ',
+ 'M', 'a', 's', 'z', 'k', 'o', 'w', 's', 'k', 'i',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ }
+
+ {
+ static const uint32_t unicode_string[] = /* Rafał Maszkowski */
+ {
+ 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w',
+ 's', 'k', 'i', 0
+ };
+ {
+ uint32_t *result =
+ my_xasprintf ("%llU %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z',
+ 'k', 'o', 'w', 's', 'k', 'i', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Width. */
+ uint32_t *result =
+ my_xasprintf ("%20llU %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', 'R', 'a', 'f', 'a', 0x0142, ' ',
+ 'M', 'a', 's', 'z', 'k', 'o', 'w', 's', 'k', 'i',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ uint32_t *result =
+ my_xasprintf ("%-20llU %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z',
+ 'k', 'o', 'w', 's', 'k', 'i', ' ', ' ', ' ', ' ',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ uint32_t *result =
+ my_xasprintf ("%020llU %d", unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', 'R', 'a', 'f', 'a', 0x0142, ' ',
+ 'M', 'a', 's', 'z', 'k', 'o', 'w', 's', 'k', 'i',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ }
+
+ /* Test non-ASCII characters in the format string. */
+
+ {
+ uint32_t *result =
+ my_xasprintf ("\304rger", 33, 44, 55);
+ ASSERT (result == NULL && errno == EINVAL);
+ }
+}
diff --git a/tests/unistdio/test-u32-vasnprintf1.c b/tests/unistdio/test-u32-vasnprintf1.c
new file mode 100644
index 00000000..959bdab3
--- /dev/null
+++ b/tests/unistdio/test-u32-vasnprintf1.c
@@ -0,0 +1,88 @@
+/* Test of u32_vasnprintf() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u32-asnprintf1.h"
+#include "test-u32-printf1.h"
+
+static uint32_t *
+my_asnprintf (uint32_t *resultbuf, size_t *lengthp, const char *format, ...)
+{
+ va_list args;
+ uint32_t *ret;
+
+ va_start (args, format);
+ ret = u32_vasnprintf (resultbuf, lengthp, format, args);
+ va_end (args);
+ return ret;
+}
+
+static uint32_t *
+my_xasprintf (const char *format, ...)
+{
+ va_list args;
+ size_t length;
+ uint32_t *ret;
+
+ va_start (args, format);
+ ret = u32_vasnprintf (NULL, &length, format, args);
+ va_end (args);
+ if (ret != NULL)
+ ASSERT (length == u32_strlen (ret));
+ return ret;
+}
+
+static void
+test_vasnprintf ()
+{
+ test_function (my_asnprintf);
+ test_xfunction (my_xasprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ test_vasnprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-u32-vasnprintf2.c b/tests/unistdio/test-u32-vasnprintf2.c
new file mode 100644
index 00000000..9d8ab007
--- /dev/null
+++ b/tests/unistdio/test-u32-vasnprintf2.c
@@ -0,0 +1,132 @@
+/* Test of u32_vasnprintf() function in an ISO-8859-1 locale.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <locale.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static void
+test_function (uint32_t * (*my_asnprintf) (uint32_t *, size_t *, const char *, ...))
+{
+ /* Test the support of the 's' conversion specifier for strings. */
+
+ {
+ const char *locale_string = "\304rger"; /* Ärger */
+ {
+ size_t length;
+ uint32_t *result =
+ my_asnprintf (NULL, &length, "%s %d", locale_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 0x00c4, 'r', 'g', 'e', 'r', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ ASSERT (length == u32_strlen (result));
+ free (result);
+ }
+ { /* Width. */
+ size_t length;
+ uint32_t *result =
+ my_asnprintf (NULL, &length, "%10s %d", locale_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 0x00c4, 'r', 'g', 'e', 'r',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ ASSERT (length == u32_strlen (result));
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ size_t length;
+ uint32_t *result =
+ my_asnprintf (NULL, &length, "%-10s %d", locale_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 0x00c4, 'r', 'g', 'e', 'r', ' ', ' ', ' ', ' ', ' ',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ ASSERT (length == u32_strlen (result));
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ size_t length;
+ uint32_t *result =
+ my_asnprintf (NULL, &length, "%010s %d", locale_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 0x00c4, 'r', 'g', 'e', 'r',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ ASSERT (length == u32_strlen (result));
+ free (result);
+ }
+ }
+}
+
+static uint32_t *
+my_asnprintf (uint32_t *resultbuf, size_t *lengthp, const char *format, ...)
+{
+ va_list args;
+ uint32_t *ret;
+
+ va_start (args, format);
+ ret = u32_vasnprintf (resultbuf, lengthp, format, args);
+ va_end (args);
+ return ret;
+}
+
+static void
+test_vasnprintf ()
+{
+ test_function (my_asnprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ test_vasnprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-u32-vasnprintf2.sh b/tests/unistdio/test-u32-vasnprintf2.sh
new file mode 100755
index 00000000..ae39dd48
--- /dev/null
+++ b/tests/unistdio/test-u32-vasnprintf2.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# Test whether a traditional french locale is installed.
+: ${LOCALE_FR=fr_FR}
+if test $LOCALE_FR != none; then
+ testlocale=$LOCALE_FR
+else
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no traditional french locale is installed"
+ else
+ echo "Skipping test: no traditional french locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$testlocale \
+./test-u32-vasnprintf1${EXEEXT} \
+ || exit 1
+
+LC_ALL=$testlocale \
+./test-u32-vasnprintf2${EXEEXT}
diff --git a/tests/unistdio/test-u32-vasnprintf3.c b/tests/unistdio/test-u32-vasnprintf3.c
new file mode 100644
index 00000000..73f7c6c7
--- /dev/null
+++ b/tests/unistdio/test-u32-vasnprintf3.c
@@ -0,0 +1,132 @@
+/* Test of u32_vasnprintf() function in an UTF-8 locale.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <locale.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static void
+test_function (uint32_t * (*my_asnprintf) (uint32_t *, size_t *, const char *, ...))
+{
+ /* Test the support of the 's' conversion specifier for strings. */
+
+ {
+ const char *locale_string = "\303\204rger"; /* Ärger */
+ {
+ size_t length;
+ uint32_t *result =
+ my_asnprintf (NULL, &length, "%s %d", locale_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 0x00c4, 'r', 'g', 'e', 'r', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ ASSERT (length == u32_strlen (result));
+ free (result);
+ }
+ { /* Width. */
+ size_t length;
+ uint32_t *result =
+ my_asnprintf (NULL, &length, "%10s %d", locale_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 0x00c4, 'r', 'g', 'e', 'r',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ ASSERT (length == u32_strlen (result));
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ size_t length;
+ uint32_t *result =
+ my_asnprintf (NULL, &length, "%-10s %d", locale_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 0x00c4, 'r', 'g', 'e', 'r', ' ', ' ', ' ', ' ', ' ',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ ASSERT (length == u32_strlen (result));
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ size_t length;
+ uint32_t *result =
+ my_asnprintf (NULL, &length, "%010s %d", locale_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 0x00c4, 'r', 'g', 'e', 'r',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ ASSERT (length == u32_strlen (result));
+ free (result);
+ }
+ }
+}
+
+static uint32_t *
+my_asnprintf (uint32_t *resultbuf, size_t *lengthp, const char *format, ...)
+{
+ va_list args;
+ uint32_t *ret;
+
+ va_start (args, format);
+ ret = u32_vasnprintf (resultbuf, lengthp, format, args);
+ va_end (args);
+ return ret;
+}
+
+static void
+test_vasnprintf ()
+{
+ test_function (my_asnprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ test_vasnprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-u32-vasnprintf3.sh b/tests/unistdio/test-u32-vasnprintf3.sh
new file mode 100755
index 00000000..d2c31170
--- /dev/null
+++ b/tests/unistdio/test-u32-vasnprintf3.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# Test whether a french Unicode locale is installed.
+: ${LOCALE_FR_UTF8=fr_FR.UTF-8}
+if test $LOCALE_FR_UTF8 != none; then
+ testlocale=$LOCALE_FR_UTF8
+else
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no french Unicode locale is installed"
+ else
+ echo "Skipping test: no french Unicode locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$testlocale \
+./test-u32-vasnprintf1${EXEEXT} \
+ || exit 1
+
+LC_ALL=$testlocale \
+./test-u32-vasnprintf3${EXEEXT}
diff --git a/tests/unistdio/test-u32-vasprintf1.c b/tests/unistdio/test-u32-vasprintf1.c
new file mode 100644
index 00000000..39e68d25
--- /dev/null
+++ b/tests/unistdio/test-u32-vasprintf1.c
@@ -0,0 +1,75 @@
+/* Test of u32_vasprintf() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u32-printf1.h"
+
+static uint32_t *
+my_xasprintf (const char *format, ...)
+{
+ va_list args;
+ uint32_t *result;
+ int retval;
+
+ va_start (args, format);
+ retval = u32_vasprintf (&result, format, args);
+ va_end (args);
+ if (retval < 0)
+ return NULL;
+ ASSERT (result != NULL);
+ return result;
+}
+
+static void
+test_vasprintf ()
+{
+ test_xfunction (my_xasprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ test_vasprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-u32-vsnprintf1.c b/tests/unistdio/test-u32-vsnprintf1.c
new file mode 100644
index 00000000..d7727081
--- /dev/null
+++ b/tests/unistdio/test-u32-vsnprintf1.c
@@ -0,0 +1,84 @@
+/* Test of u32_vsnprintf() function.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+#include "xalloc.h"
+#include "progname.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u32-printf1.h"
+
+static uint32_t *
+my_xasprintf (const char *format, ...)
+{
+ va_list args;
+ uint32_t buf[1000];
+ int retval;
+ size_t length;
+ uint32_t *result;
+
+ va_start (args, format);
+ retval = u32_vsnprintf (buf, sizeof (buf), format, args);
+ va_end (args);
+ if (retval < 0 || retval >= (int) sizeof (buf))
+ return NULL;
+ length = u32_strlen (buf);
+ result = XNMALLOC (length + 1, uint32_t);
+ u32_cpy (result, buf, length + 1);
+ return result;
+}
+
+static void
+test_vsnprintf ()
+{
+ test_xfunction (my_xasprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ set_program_name (argv[0]);
+
+ test_vsnprintf ();
+
+ return 0;
+}
diff --git a/tests/unistdio/test-u32-vsprintf1.c b/tests/unistdio/test-u32-vsprintf1.c
new file mode 100644
index 00000000..8398b274
--- /dev/null
+++ b/tests/unistdio/test-u32-vsprintf1.c
@@ -0,0 +1,84 @@
+/* Test of u32_vsprintf() function.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+#include "xalloc.h"
+#include "progname.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u32-printf1.h"
+
+static uint32_t *
+my_xasprintf (const char *format, ...)
+{
+ va_list args;
+ uint32_t buf[1000];
+ int retval;
+ size_t length;
+ uint32_t *result;
+
+ va_start (args, format);
+ retval = u32_vsprintf (buf, format, args);
+ va_end (args);
+ if (retval < 0 || retval >= (int) sizeof (buf))
+ return NULL;
+ length = u32_strlen (buf);
+ result = XNMALLOC (length + 1, uint32_t);
+ u32_cpy (result, buf, length + 1);
+ return result;
+}
+
+static void
+test_vsprintf ()
+{
+ test_xfunction (my_xasprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ set_program_name (argv[0]);
+
+ test_vsprintf ();
+
+ return 0;
+}
diff --git a/tests/unistdio/test-u8-asnprintf1.c b/tests/unistdio/test-u8-asnprintf1.c
new file mode 100644
index 00000000..852d76b4
--- /dev/null
+++ b/tests/unistdio/test-u8-asnprintf1.c
@@ -0,0 +1,59 @@
+/* Test of u8_asnprintf() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u8-asnprintf1.h"
+
+static void
+test_asnprintf ()
+{
+ test_function (u8_asnprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ test_asnprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-u8-asnprintf1.h b/tests/unistdio/test-u8-asnprintf1.h
new file mode 100644
index 00000000..063f145f
--- /dev/null
+++ b/tests/unistdio/test-u8-asnprintf1.h
@@ -0,0 +1,57 @@
+/* Test of u8_[v]asnprintf() function.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+static void
+test_function (uint8_t * (*my_asnprintf) (uint8_t *, size_t *, const char *, ...))
+{
+ uint8_t buf[8];
+ int size;
+
+ /* Test return value convention. */
+
+ for (size = 0; size <= 8; size++)
+ {
+ size_t length = size;
+ uint8_t *result = my_asnprintf (NULL, &length, "%d", 12345);
+ static const uint8_t expected[] = "12345";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ ASSERT (length == 5);
+ free (result);
+ }
+
+ for (size = 0; size <= 8; size++)
+ {
+ static const uint8_t initializer[] = "DEADBEEF";
+ static const uint8_t expected[] = "12345";
+ size_t length;
+ uint8_t *result;
+
+ u8_cpy (buf, initializer, 8);
+ length = size;
+ result = my_asnprintf (buf, &length, "%d", 12345);
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ ASSERT (length == 5);
+ if (size < 6)
+ ASSERT (result != buf);
+ ASSERT (u8_cmp (buf + size, initializer + size, 8 - size) == 0);
+ if (result != buf)
+ free (result);
+ }
+}
diff --git a/tests/unistdio/test-u8-printf1.h b/tests/unistdio/test-u8-printf1.h
new file mode 100644
index 00000000..4ac6573f
--- /dev/null
+++ b/tests/unistdio/test-u8-printf1.h
@@ -0,0 +1,704 @@
+/* Test of u8_v[a]s[n]printf() function.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+static void
+test_xfunction (uint8_t * (*my_xasprintf) (const char *, ...))
+{
+ /* Test support of size specifiers as in C99. */
+
+ {
+ uint8_t *result =
+ my_xasprintf ("%ju %d", (uintmax_t) 12345671, 33, 44, 55);
+ static const uint8_t expected[] = "12345671 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ {
+ uint8_t *result =
+ my_xasprintf ("%zu %d", (size_t) 12345672, 33, 44, 55);
+ static const uint8_t expected[] = "12345672 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ {
+ uint8_t *result =
+ my_xasprintf ("%tu %d", (ptrdiff_t) 12345673, 33, 44, 55);
+ static const uint8_t expected[] = "12345673 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ {
+ uint8_t *result =
+ my_xasprintf ("%Lg %d", (long double) 1.5, 33, 44, 55);
+ static const uint8_t expected[] = "1.5 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the 'U' conversion specifier for Unicode strings. */
+
+ {
+ static const uint8_t unicode_string[] = "Hello";
+ {
+ uint8_t *result =
+ my_xasprintf ("%U %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = "Hello 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Width. */
+ uint8_t *result =
+ my_xasprintf ("%10U %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = " Hello 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ uint8_t *result =
+ my_xasprintf ("%-10U %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = "Hello 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ uint8_t *result =
+ my_xasprintf ("%010U %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = " Hello 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ }
+
+ {
+ static const uint16_t unicode_string[] = { 'H', 'e', 'l', 'l', 'o', 0 };
+ {
+ uint8_t *result =
+ my_xasprintf ("%lU %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = "Hello 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Width. */
+ uint8_t *result =
+ my_xasprintf ("%10lU %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = " Hello 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ uint8_t *result =
+ my_xasprintf ("%-10lU %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = "Hello 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ uint8_t *result =
+ my_xasprintf ("%010lU %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = " Hello 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ }
+
+ {
+ static const uint32_t unicode_string[] = { 'H', 'e', 'l', 'l', 'o', 0 };
+ {
+ uint8_t *result =
+ my_xasprintf ("%llU %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = "Hello 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Width. */
+ uint8_t *result =
+ my_xasprintf ("%10llU %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = " Hello 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ uint8_t *result =
+ my_xasprintf ("%-10llU %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = "Hello 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ uint8_t *result =
+ my_xasprintf ("%010llU %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = " Hello 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ }
+
+ /* Test the support of the 's' conversion specifier for strings. */
+
+ {
+ uint8_t *result =
+ my_xasprintf ("Mr. %s %d", "Ronald Reagan", 33, 44, 55);
+ static const uint8_t expected[] = "Mr. Ronald Reagan 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint8_t *result =
+ my_xasprintf ("Mr. %20s %d", "Ronald Reagan", 33, 44, 55);
+ static const uint8_t expected[] = "Mr. Ronald Reagan 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* FLAG_LEFT. */
+ uint8_t *result =
+ my_xasprintf ("Mr. %-20s %d", "Ronald Reagan", 33, 44, 55);
+ static const uint8_t expected[] = "Mr. Ronald Reagan 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* FLAG_ZERO: no effect. */
+ uint8_t *result =
+ my_xasprintf ("Mr. %020s %d", "Ronald Reagan", 33, 44, 55);
+ static const uint8_t expected[] = "Mr. Ronald Reagan 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the 'a' and 'A' conversion specifier for hexadecimal
+ output of floating-point numbers. */
+
+ { /* A positive number. */
+ uint8_t *result =
+ my_xasprintf ("%a %d", 3.1416015625, 33, 44, 55);
+ static const uint8_t expected1[] = "0x1.922p+1 33";
+ static const uint8_t expected2[] = "0x3.244p+0 33";
+ static const uint8_t expected3[] = "0x6.488p-1 33";
+ static const uint8_t expected4[] = "0xc.91p-2 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected1) == 0
+ || u8_strcmp (result, expected2) == 0
+ || u8_strcmp (result, expected3) == 0
+ || u8_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint8_t *result =
+ my_xasprintf ("%10a %d", 1.75, 33, 44, 55);
+ static const uint8_t expected1[] = " 0x1.cp+0 33";
+ static const uint8_t expected2[] = " 0x3.8p-1 33";
+ static const uint8_t expected3[] = " 0x7p-2 33";
+ static const uint8_t expected4[] = " 0xep-3 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected1) == 0
+ || u8_strcmp (result, expected2) == 0
+ || u8_strcmp (result, expected3) == 0
+ || u8_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Small precision. */
+ uint8_t *result =
+ my_xasprintf ("%.10a %d", 1.75, 33, 44, 55);
+ static const uint8_t expected1[] = "0x1.c000000000p+0 33";
+ static const uint8_t expected2[] = "0x3.8000000000p-1 33";
+ static const uint8_t expected3[] = "0x7.0000000000p-2 33";
+ static const uint8_t expected4[] = "0xe.0000000000p-3 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected1) == 0
+ || u8_strcmp (result, expected2) == 0
+ || u8_strcmp (result, expected3) == 0
+ || u8_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Large precision. */
+ uint8_t *result =
+ my_xasprintf ("%.50a %d", 1.75, 33, 44, 55);
+ static const uint8_t expected1[] = "0x1.c0000000000000000000000000000000000000000000000000p+0 33";
+ static const uint8_t expected2[] = "0x3.80000000000000000000000000000000000000000000000000p-1 33";
+ static const uint8_t expected3[] = "0x7.00000000000000000000000000000000000000000000000000p-2 33";
+ static const uint8_t expected4[] = "0xe.00000000000000000000000000000000000000000000000000p-3 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected1) == 0
+ || u8_strcmp (result, expected2) == 0
+ || u8_strcmp (result, expected3) == 0
+ || u8_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ uint8_t *result =
+ my_xasprintf ("%La %d", 3.1416015625L, 33, 44, 55);
+ static const uint8_t expected1[] = "0x1.922p+1 33";
+ static const uint8_t expected2[] = "0x3.244p+0 33";
+ static const uint8_t expected3[] = "0x6.488p-1 33";
+ static const uint8_t expected4[] = "0xc.91p-2 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected1) == 0
+ || u8_strcmp (result, expected2) == 0
+ || u8_strcmp (result, expected3) == 0
+ || u8_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint8_t *result =
+ my_xasprintf ("%10La %d", 1.75L, 33, 44, 55);
+ static const uint8_t expected1[] = " 0x1.cp+0 33";
+ static const uint8_t expected2[] = " 0x3.8p-1 33";
+ static const uint8_t expected3[] = " 0x7p-2 33";
+ static const uint8_t expected4[] = " 0xep-3 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected1) == 0
+ || u8_strcmp (result, expected2) == 0
+ || u8_strcmp (result, expected3) == 0
+ || u8_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Small precision. */
+ uint8_t *result =
+ my_xasprintf ("%.10La %d", 1.75L, 33, 44, 55);
+ static const uint8_t expected1[] = "0x1.c000000000p+0 33";
+ static const uint8_t expected2[] = "0x3.8000000000p-1 33";
+ static const uint8_t expected3[] = "0x7.0000000000p-2 33";
+ static const uint8_t expected4[] = "0xe.0000000000p-3 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected1) == 0
+ || u8_strcmp (result, expected2) == 0
+ || u8_strcmp (result, expected3) == 0
+ || u8_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Large precision. */
+ uint8_t *result =
+ my_xasprintf ("%.50La %d", 1.75L, 33, 44, 55);
+ static const uint8_t expected1[] = "0x1.c0000000000000000000000000000000000000000000000000p+0 33";
+ static const uint8_t expected2[] = "0x3.80000000000000000000000000000000000000000000000000p-1 33";
+ static const uint8_t expected3[] = "0x7.00000000000000000000000000000000000000000000000000p-2 33";
+ static const uint8_t expected4[] = "0xe.00000000000000000000000000000000000000000000000000p-3 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected1) == 0
+ || u8_strcmp (result, expected2) == 0
+ || u8_strcmp (result, expected3) == 0
+ || u8_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ /* Test the support of the %f format directive. */
+
+ { /* A positive number. */
+ uint8_t *result =
+ my_xasprintf ("%f %d", 12.75, 33, 44, 55);
+ static const uint8_t expected[] = "12.750000 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint8_t *result =
+ my_xasprintf ("%10f %d", 1.75, 33, 44, 55);
+ static const uint8_t expected[] = " 1.750000 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint8_t *result =
+ my_xasprintf ("%.f %d", 1234.0, 33, 44, 55);
+ static const uint8_t expected[] = "1234 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ uint8_t *result =
+ my_xasprintf ("%Lf %d", 12.75L, 33, 44, 55);
+ static const uint8_t expected[] = "12.750000 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint8_t *result =
+ my_xasprintf ("%10Lf %d", 1.75L, 33, 44, 55);
+ static const uint8_t expected[] = " 1.750000 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint8_t *result =
+ my_xasprintf ("%.Lf %d", 1234.0L, 33, 44, 55);
+ static const uint8_t expected[] = "1234 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the %F format directive. */
+
+ { /* A positive number. */
+ uint8_t *result =
+ my_xasprintf ("%F %d", 12.75, 33, 44, 55);
+ static const uint8_t expected[] = "12.750000 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint8_t *result =
+ my_xasprintf ("%.F %d", 1234.0, 33, 44, 55);
+ static const uint8_t expected[] = "1234 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ uint8_t *result =
+ my_xasprintf ("%LF %d", 12.75L, 33, 44, 55);
+ static const uint8_t expected[] = "12.750000 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint8_t *result =
+ my_xasprintf ("%.LF %d", 1234.0L, 33, 44, 55);
+ static const uint8_t expected[] = "1234 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the %e format directive. */
+
+ { /* A positive number. */
+ uint8_t *result =
+ my_xasprintf ("%e %d", 12.75, 33, 44, 55);
+ static const uint8_t expected1[] = "1.275000e+01 33";
+ static const uint8_t expected2[] = "1.275000e+001 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected1) == 0
+ || u8_strcmp (result, expected2) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint8_t *result =
+ my_xasprintf ("%15e %d", 1.75, 33, 44, 55);
+ static const uint8_t expected1[] = " 1.750000e+00 33";
+ static const uint8_t expected2[] = " 1.750000e+000 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected1) == 0
+ || u8_strcmp (result, expected2) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint8_t *result =
+ my_xasprintf ("%.e %d", 1234.0, 33, 44, 55);
+ static const uint8_t expected1[] = "1e+03 33";
+ static const uint8_t expected2[] = "1e+003 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected1) == 0
+ || u8_strcmp (result, expected2) == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ uint8_t *result =
+ my_xasprintf ("%Le %d", 12.75L, 33, 44, 55);
+ static const uint8_t expected[] = "1.275000e+01 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint8_t *result =
+ my_xasprintf ("%15Le %d", 1.75L, 33, 44, 55);
+ static const uint8_t expected[] = " 1.750000e+00 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint8_t *result =
+ my_xasprintf ("%.Le %d", 1234.0L, 33, 44, 55);
+ static const uint8_t expected[] = "1e+03 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the %g format directive. */
+
+ { /* A positive number. */
+ uint8_t *result =
+ my_xasprintf ("%g %d", 12.75, 33, 44, 55);
+ static const uint8_t expected[] = "12.75 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint8_t *result =
+ my_xasprintf ("%10g %d", 1.75, 33, 44, 55);
+ static const uint8_t expected[] = " 1.75 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint8_t *result =
+ my_xasprintf ("%.g %d", 1234.0, 33, 44, 55);
+ static const uint8_t expected1[] = "1e+03 33";
+ static const uint8_t expected2[] = "1e+003 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected1) == 0
+ || u8_strcmp (result, expected2) == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ uint8_t *result =
+ my_xasprintf ("%Lg %d", 12.75L, 33, 44, 55);
+ static const uint8_t expected[] = "12.75 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ uint8_t *result =
+ my_xasprintf ("%10Lg %d", 1.75L, 33, 44, 55);
+ static const uint8_t expected[] = " 1.75 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ uint8_t *result =
+ my_xasprintf ("%.Lg %d", 1234.0L, 33, 44, 55);
+ static const uint8_t expected[] = "1e+03 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the %n format directive. */
+
+ {
+ int count = -1;
+ uint8_t *result =
+ my_xasprintf ("%d %n", 123, &count, 33, 44, 55);
+ static const uint8_t expected[] = "123 ";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ ASSERT (count == 4);
+ free (result);
+ }
+
+ /* Test the support of the POSIX/XSI format strings with positions. */
+
+ {
+ uint8_t *result =
+ my_xasprintf ("%2$d %1$d", 33, 55);
+ static const uint8_t expected[] = "55 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ /* Test the support of the grouping flag. */
+
+ {
+ uint8_t *result =
+ my_xasprintf ("%'d %d", 1234567, 99);
+ ASSERT (result != NULL);
+ ASSERT (result[u8_strlen (result) - 1] == '9');
+ free (result);
+ }
+
+ /* Test the support of the 'U' conversion specifier for Unicode strings. */
+
+ {
+ static const uint8_t unicode_string[] = "Rafa\305\202 Maszkowski"; /* Rafał Maszkowski */
+ {
+ uint8_t *result =
+ my_xasprintf ("%U %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = "Rafa\305\202 Maszkowski 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Width. */
+ uint8_t *result =
+ my_xasprintf ("%20U %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = " Rafa\305\202 Maszkowski 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ uint8_t *result =
+ my_xasprintf ("%-20U %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = "Rafa\305\202 Maszkowski 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ uint8_t *result =
+ my_xasprintf ("%020U %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = " Rafa\305\202 Maszkowski 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ }
+
+ {
+ static const uint16_t unicode_string[] = /* Rafał Maszkowski */
+ {
+ 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w',
+ 's', 'k', 'i', 0
+ };
+ {
+ uint8_t *result =
+ my_xasprintf ("%lU %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = "Rafa\305\202 Maszkowski 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Width. */
+ uint8_t *result =
+ my_xasprintf ("%20lU %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = " Rafa\305\202 Maszkowski 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ uint8_t *result =
+ my_xasprintf ("%-20lU %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = "Rafa\305\202 Maszkowski 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ uint8_t *result =
+ my_xasprintf ("%020lU %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = " Rafa\305\202 Maszkowski 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ }
+
+ {
+ static const uint32_t unicode_string[] = /* Rafał Maszkowski */
+ {
+ 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w',
+ 's', 'k', 'i', 0
+ };
+ {
+ uint8_t *result =
+ my_xasprintf ("%llU %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = "Rafa\305\202 Maszkowski 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Width. */
+ uint8_t *result =
+ my_xasprintf ("%20llU %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = " Rafa\305\202 Maszkowski 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ uint8_t *result =
+ my_xasprintf ("%-20llU %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = "Rafa\305\202 Maszkowski 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ uint8_t *result =
+ my_xasprintf ("%020llU %d", unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = " Rafa\305\202 Maszkowski 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ }
+
+ /* Test non-ASCII characters in the format string. */
+
+ {
+ uint8_t *result =
+ my_xasprintf ("\304rger", 33, 44, 55);
+ ASSERT (result == NULL && errno == EINVAL);
+ }
+}
diff --git a/tests/unistdio/test-u8-vasnprintf1.c b/tests/unistdio/test-u8-vasnprintf1.c
new file mode 100644
index 00000000..3329df40
--- /dev/null
+++ b/tests/unistdio/test-u8-vasnprintf1.c
@@ -0,0 +1,88 @@
+/* Test of u8_vasnprintf() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u8-asnprintf1.h"
+#include "test-u8-printf1.h"
+
+static uint8_t *
+my_asnprintf (uint8_t *resultbuf, size_t *lengthp, const char *format, ...)
+{
+ va_list args;
+ uint8_t *ret;
+
+ va_start (args, format);
+ ret = u8_vasnprintf (resultbuf, lengthp, format, args);
+ va_end (args);
+ return ret;
+}
+
+static uint8_t *
+my_xasprintf (const char *format, ...)
+{
+ va_list args;
+ size_t length;
+ uint8_t *ret;
+
+ va_start (args, format);
+ ret = u8_vasnprintf (NULL, &length, format, args);
+ va_end (args);
+ if (ret != NULL)
+ ASSERT (length == u8_strlen (ret));
+ return ret;
+}
+
+static void
+test_vasnprintf ()
+{
+ test_function (my_asnprintf);
+ test_xfunction (my_xasprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ test_vasnprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-u8-vasnprintf2.c b/tests/unistdio/test-u8-vasnprintf2.c
new file mode 100644
index 00000000..4283be69
--- /dev/null
+++ b/tests/unistdio/test-u8-vasnprintf2.c
@@ -0,0 +1,122 @@
+/* Test of u8_vasnprintf() function in an ISO-8859-1 locale.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <locale.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static void
+test_function (uint8_t * (*my_asnprintf) (uint8_t *, size_t *, const char *, ...))
+{
+ /* Test the support of the 's' conversion specifier for strings. */
+
+ {
+ const char *locale_string = "\304rger"; /* Ärger */
+ {
+ size_t length;
+ uint8_t *result =
+ my_asnprintf (NULL, &length, "%s %d", locale_string, 33, 44, 55);
+ static const uint8_t expected[] = "\303\204rger 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ ASSERT (length == u8_strlen (result));
+ free (result);
+ }
+ { /* Width. */
+ size_t length;
+ uint8_t *result =
+ my_asnprintf (NULL, &length, "%10s %d", locale_string, 33, 44, 55);
+ static const uint8_t expected[] = " \303\204rger 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ ASSERT (length == u8_strlen (result));
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ size_t length;
+ uint8_t *result =
+ my_asnprintf (NULL, &length, "%-10s %d", locale_string, 33, 44, 55);
+ static const uint8_t expected[] = "\303\204rger 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ ASSERT (length == u8_strlen (result));
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ size_t length;
+ uint8_t *result =
+ my_asnprintf (NULL, &length, "%010s %d", locale_string, 33, 44, 55);
+ static const uint8_t expected[] = " \303\204rger 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ ASSERT (length == u8_strlen (result));
+ free (result);
+ }
+ }
+}
+
+static uint8_t *
+my_asnprintf (uint8_t *resultbuf, size_t *lengthp, const char *format, ...)
+{
+ va_list args;
+ uint8_t *ret;
+
+ va_start (args, format);
+ ret = u8_vasnprintf (resultbuf, lengthp, format, args);
+ va_end (args);
+ return ret;
+}
+
+static void
+test_vasnprintf ()
+{
+ test_function (my_asnprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ test_vasnprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-u8-vasnprintf2.sh b/tests/unistdio/test-u8-vasnprintf2.sh
new file mode 100755
index 00000000..ea5fcb08
--- /dev/null
+++ b/tests/unistdio/test-u8-vasnprintf2.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# Test whether a traditional french locale is installed.
+: ${LOCALE_FR=fr_FR}
+if test $LOCALE_FR != none; then
+ testlocale=$LOCALE_FR
+else
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no traditional french locale is installed"
+ else
+ echo "Skipping test: no traditional french locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$testlocale \
+./test-u8-vasnprintf1${EXEEXT} \
+ || exit 1
+
+LC_ALL=$testlocale \
+./test-u8-vasnprintf2${EXEEXT}
diff --git a/tests/unistdio/test-u8-vasnprintf3.c b/tests/unistdio/test-u8-vasnprintf3.c
new file mode 100644
index 00000000..fc645bca
--- /dev/null
+++ b/tests/unistdio/test-u8-vasnprintf3.c
@@ -0,0 +1,122 @@
+/* Test of u8_vasnprintf() function in an UTF-8 locale.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <locale.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static void
+test_function (uint8_t * (*my_asnprintf) (uint8_t *, size_t *, const char *, ...))
+{
+ /* Test the support of the 's' conversion specifier for strings. */
+
+ {
+ const char *locale_string = "\303\204rger"; /* Ärger */
+ {
+ size_t length;
+ uint8_t *result =
+ my_asnprintf (NULL, &length, "%s %d", locale_string, 33, 44, 55);
+ static const uint8_t expected[] = "\303\204rger 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ ASSERT (length == u8_strlen (result));
+ free (result);
+ }
+ { /* Width. */
+ size_t length;
+ uint8_t *result =
+ my_asnprintf (NULL, &length, "%10s %d", locale_string, 33, 44, 55);
+ static const uint8_t expected[] = " \303\204rger 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ ASSERT (length == u8_strlen (result));
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ size_t length;
+ uint8_t *result =
+ my_asnprintf (NULL, &length, "%-10s %d", locale_string, 33, 44, 55);
+ static const uint8_t expected[] = "\303\204rger 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ ASSERT (length == u8_strlen (result));
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ size_t length;
+ uint8_t *result =
+ my_asnprintf (NULL, &length, "%010s %d", locale_string, 33, 44, 55);
+ static const uint8_t expected[] = " \303\204rger 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ ASSERT (length == u8_strlen (result));
+ free (result);
+ }
+ }
+}
+
+static uint8_t *
+my_asnprintf (uint8_t *resultbuf, size_t *lengthp, const char *format, ...)
+{
+ va_list args;
+ uint8_t *ret;
+
+ va_start (args, format);
+ ret = u8_vasnprintf (resultbuf, lengthp, format, args);
+ va_end (args);
+ return ret;
+}
+
+static void
+test_vasnprintf ()
+{
+ test_function (my_asnprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ test_vasnprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-u8-vasnprintf3.sh b/tests/unistdio/test-u8-vasnprintf3.sh
new file mode 100755
index 00000000..9df0044a
--- /dev/null
+++ b/tests/unistdio/test-u8-vasnprintf3.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# Test whether a french Unicode locale is installed.
+: ${LOCALE_FR_UTF8=fr_FR.UTF-8}
+if test $LOCALE_FR_UTF8 != none; then
+ testlocale=$LOCALE_FR_UTF8
+else
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no french Unicode locale is installed"
+ else
+ echo "Skipping test: no french Unicode locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$testlocale \
+./test-u8-vasnprintf1${EXEEXT} \
+ || exit 1
+
+LC_ALL=$testlocale \
+./test-u8-vasnprintf3${EXEEXT}
diff --git a/tests/unistdio/test-u8-vasprintf1.c b/tests/unistdio/test-u8-vasprintf1.c
new file mode 100644
index 00000000..8a2caae8
--- /dev/null
+++ b/tests/unistdio/test-u8-vasprintf1.c
@@ -0,0 +1,75 @@
+/* Test of u8_vasprintf() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u8-printf1.h"
+
+static uint8_t *
+my_xasprintf (const char *format, ...)
+{
+ va_list args;
+ uint8_t *result;
+ int retval;
+
+ va_start (args, format);
+ retval = u8_vasprintf (&result, format, args);
+ va_end (args);
+ if (retval < 0)
+ return NULL;
+ ASSERT (result != NULL);
+ return result;
+}
+
+static void
+test_vasprintf ()
+{
+ test_xfunction (my_xasprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ test_vasprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-u8-vsnprintf1.c b/tests/unistdio/test-u8-vsnprintf1.c
new file mode 100644
index 00000000..6dd7439d
--- /dev/null
+++ b/tests/unistdio/test-u8-vsnprintf1.c
@@ -0,0 +1,84 @@
+/* Test of u8_vsnprintf() function.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+#include "xalloc.h"
+#include "progname.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u8-printf1.h"
+
+static uint8_t *
+my_xasprintf (const char *format, ...)
+{
+ va_list args;
+ uint8_t buf[1000];
+ int retval;
+ size_t length;
+ uint8_t *result;
+
+ va_start (args, format);
+ retval = u8_vsnprintf (buf, sizeof (buf), format, args);
+ va_end (args);
+ if (retval < 0 || retval >= (int) sizeof (buf))
+ return NULL;
+ length = u8_strlen (buf);
+ result = XNMALLOC (length + 1, uint8_t);
+ u8_cpy (result, buf, length + 1);
+ return result;
+}
+
+static void
+test_vsnprintf ()
+{
+ test_xfunction (my_xasprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ set_program_name (argv[0]);
+
+ test_vsnprintf ();
+
+ return 0;
+}
diff --git a/tests/unistdio/test-u8-vsprintf1.c b/tests/unistdio/test-u8-vsprintf1.c
new file mode 100644
index 00000000..9559df0c
--- /dev/null
+++ b/tests/unistdio/test-u8-vsprintf1.c
@@ -0,0 +1,84 @@
+/* Test of u8_vsprintf() function.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "unistr.h"
+#include "xalloc.h"
+#include "progname.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-u8-printf1.h"
+
+static uint8_t *
+my_xasprintf (const char *format, ...)
+{
+ va_list args;
+ uint8_t buf[1000];
+ int retval;
+ size_t length;
+ uint8_t *result;
+
+ va_start (args, format);
+ retval = u8_vsprintf (buf, format, args);
+ va_end (args);
+ if (retval < 0 || retval >= (int) sizeof (buf))
+ return NULL;
+ length = u8_strlen (buf);
+ result = XNMALLOC (length + 1, uint8_t);
+ u8_cpy (result, buf, length + 1);
+ return result;
+}
+
+static void
+test_vsprintf ()
+{
+ test_xfunction (my_xasprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ set_program_name (argv[0]);
+
+ test_vsprintf ();
+
+ return 0;
+}
diff --git a/tests/unistdio/test-ulc-asnprintf1.c b/tests/unistdio/test-ulc-asnprintf1.c
new file mode 100644
index 00000000..591ae262
--- /dev/null
+++ b/tests/unistdio/test-ulc-asnprintf1.c
@@ -0,0 +1,56 @@
+/* Test of ulc_asnprintf() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-ulc-asnprintf1.h"
+
+static void
+test_asnprintf ()
+{
+ test_function (ulc_asnprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ test_asnprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-ulc-asnprintf1.h b/tests/unistdio/test-ulc-asnprintf1.h
new file mode 100644
index 00000000..285a4062
--- /dev/null
+++ b/tests/unistdio/test-ulc-asnprintf1.h
@@ -0,0 +1,54 @@
+/* Test of ulc_[v]asnprintf() functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+static void
+test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...))
+{
+ char buf[8];
+ int size;
+
+ /* Test return value convention. */
+
+ for (size = 0; size <= 8; size++)
+ {
+ size_t length = size;
+ char *result = my_asnprintf (NULL, &length, "%d", 12345);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "12345") == 0);
+ ASSERT (length == 5);
+ free (result);
+ }
+
+ for (size = 0; size <= 8; size++)
+ {
+ size_t length;
+ char *result;
+
+ memcpy (buf, "DEADBEEF", 8);
+ length = size;
+ result = my_asnprintf (buf, &length, "%d", 12345);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "12345") == 0);
+ ASSERT (length == 5);
+ if (size < 6)
+ ASSERT (result != buf);
+ ASSERT (memcmp (buf + size, "DEADBEEF" + size, 8 - size) == 0);
+ if (result != buf)
+ free (result);
+ }
+}
diff --git a/tests/unistdio/test-ulc-printf1.h b/tests/unistdio/test-ulc-printf1.h
new file mode 100644
index 00000000..77516d61
--- /dev/null
+++ b/tests/unistdio/test-ulc-printf1.h
@@ -0,0 +1,498 @@
+/* Test of ulc_v[a]s[n]printf() functions.
+ Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+static void
+test_xfunction (char * (*my_xasprintf) (const char *, ...))
+{
+ /* Test support of size specifiers as in C99. */
+
+ {
+ char *result =
+ my_xasprintf ("%ju %d", (uintmax_t) 12345671, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "12345671 33") == 0);
+ free (result);
+ }
+
+ {
+ char *result =
+ my_xasprintf ("%zu %d", (size_t) 12345672, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "12345672 33") == 0);
+ free (result);
+ }
+
+ {
+ char *result =
+ my_xasprintf ("%tu %d", (ptrdiff_t) 12345673, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "12345673 33") == 0);
+ free (result);
+ }
+
+ {
+ char *result =
+ my_xasprintf ("%Lg %d", (long double) 1.5, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "1.5 33") == 0);
+ free (result);
+ }
+
+ /* Test the support of the 'U' conversion specifier for Unicode strings. */
+
+ {
+ static const uint8_t unicode_string[] = "Hello";
+ {
+ char *result =
+ my_xasprintf ("%U %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Hello 33") == 0);
+ free (result);
+ }
+ { /* Width. */
+ char *result =
+ my_xasprintf ("%10U %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Hello 33") == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ char *result =
+ my_xasprintf ("%-10U %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Hello 33") == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ char *result =
+ my_xasprintf ("%010U %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Hello 33") == 0);
+ free (result);
+ }
+ }
+
+ {
+ static const uint16_t unicode_string[] = { 'H', 'e', 'l', 'l', 'o', 0 };
+ {
+ char *result =
+ my_xasprintf ("%lU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Hello 33") == 0);
+ free (result);
+ }
+ { /* Width. */
+ char *result =
+ my_xasprintf ("%10lU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Hello 33") == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ char *result =
+ my_xasprintf ("%-10lU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Hello 33") == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ char *result =
+ my_xasprintf ("%010lU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Hello 33") == 0);
+ free (result);
+ }
+ }
+
+ {
+ static const uint32_t unicode_string[] = { 'H', 'e', 'l', 'l', 'o', 0 };
+ {
+ char *result =
+ my_xasprintf ("%llU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Hello 33") == 0);
+ free (result);
+ }
+ { /* Width. */
+ char *result =
+ my_xasprintf ("%10llU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Hello 33") == 0);
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ char *result =
+ my_xasprintf ("%-10llU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Hello 33") == 0);
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ char *result =
+ my_xasprintf ("%010llU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Hello 33") == 0);
+ free (result);
+ }
+ }
+
+ /* Test the support of the 's' conversion specifier for strings. */
+
+ {
+ char *result =
+ my_xasprintf ("Mr. %s %d", "Ronald Reagan", 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Mr. Ronald Reagan 33") == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ char *result =
+ my_xasprintf ("Mr. %20s %d", "Ronald Reagan", 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Mr. Ronald Reagan 33") == 0);
+ free (result);
+ }
+
+ { /* FLAG_LEFT. */
+ char *result =
+ my_xasprintf ("Mr. %-20s %d", "Ronald Reagan", 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Mr. Ronald Reagan 33") == 0);
+ free (result);
+ }
+
+ { /* FLAG_ZERO: no effect. */
+ char *result =
+ my_xasprintf ("Mr. %020s %d", "Ronald Reagan", 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Mr. Ronald Reagan 33") == 0);
+ free (result);
+ }
+
+ /* Test the support of the 'a' and 'A' conversion specifier for hexadecimal
+ output of floating-point numbers. */
+
+ { /* A positive number. */
+ char *result =
+ my_xasprintf ("%a %d", 3.1416015625, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "0x1.922p+1 33") == 0
+ || strcmp (result, "0x3.244p+0 33") == 0
+ || strcmp (result, "0x6.488p-1 33") == 0
+ || strcmp (result, "0xc.91p-2 33") == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ char *result =
+ my_xasprintf ("%10a %d", 1.75, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " 0x1.cp+0 33") == 0
+ || strcmp (result, " 0x3.8p-1 33") == 0
+ || strcmp (result, " 0x7p-2 33") == 0
+ || strcmp (result, " 0xep-3 33") == 0);
+ free (result);
+ }
+
+ { /* Small precision. */
+ char *result =
+ my_xasprintf ("%.10a %d", 1.75, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "0x1.c000000000p+0 33") == 0
+ || strcmp (result, "0x3.8000000000p-1 33") == 0
+ || strcmp (result, "0x7.0000000000p-2 33") == 0
+ || strcmp (result, "0xe.0000000000p-3 33") == 0);
+ free (result);
+ }
+
+ { /* Large precision. */
+ char *result =
+ my_xasprintf ("%.50a %d", 1.75, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "0x1.c0000000000000000000000000000000000000000000000000p+0 33") == 0
+ || strcmp (result, "0x3.80000000000000000000000000000000000000000000000000p-1 33") == 0
+ || strcmp (result, "0x7.00000000000000000000000000000000000000000000000000p-2 33") == 0
+ || strcmp (result, "0xe.00000000000000000000000000000000000000000000000000p-3 33") == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ char *result =
+ my_xasprintf ("%La %d", 3.1416015625L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "0x1.922p+1 33") == 0
+ || strcmp (result, "0x3.244p+0 33") == 0
+ || strcmp (result, "0x6.488p-1 33") == 0
+ || strcmp (result, "0xc.91p-2 33") == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ char *result =
+ my_xasprintf ("%10La %d", 1.75L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " 0x1.cp+0 33") == 0
+ || strcmp (result, " 0x3.8p-1 33") == 0
+ || strcmp (result, " 0x7p-2 33") == 0
+ || strcmp (result, " 0xep-3 33") == 0);
+ free (result);
+ }
+
+ { /* Small precision. */
+ char *result =
+ my_xasprintf ("%.10La %d", 1.75L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "0x1.c000000000p+0 33") == 0
+ || strcmp (result, "0x3.8000000000p-1 33") == 0
+ || strcmp (result, "0x7.0000000000p-2 33") == 0
+ || strcmp (result, "0xe.0000000000p-3 33") == 0);
+ free (result);
+ }
+
+ { /* Large precision. */
+ char *result =
+ my_xasprintf ("%.50La %d", 1.75L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "0x1.c0000000000000000000000000000000000000000000000000p+0 33") == 0
+ || strcmp (result, "0x3.80000000000000000000000000000000000000000000000000p-1 33") == 0
+ || strcmp (result, "0x7.00000000000000000000000000000000000000000000000000p-2 33") == 0
+ || strcmp (result, "0xe.00000000000000000000000000000000000000000000000000p-3 33") == 0);
+ free (result);
+ }
+
+ /* Test the support of the %f format directive. */
+
+ { /* A positive number. */
+ char *result =
+ my_xasprintf ("%f %d", 12.75, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "12.750000 33") == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ char *result =
+ my_xasprintf ("%10f %d", 1.75, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " 1.750000 33") == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ char *result =
+ my_xasprintf ("%.f %d", 1234.0, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "1234 33") == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ char *result =
+ my_xasprintf ("%Lf %d", 12.75L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "12.750000 33") == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ char *result =
+ my_xasprintf ("%10Lf %d", 1.75L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " 1.750000 33") == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ char *result =
+ my_xasprintf ("%.Lf %d", 1234.0L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "1234 33") == 0);
+ free (result);
+ }
+
+ /* Test the support of the %F format directive. */
+
+ { /* A positive number. */
+ char *result =
+ my_xasprintf ("%F %d", 12.75, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "12.750000 33") == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ char *result =
+ my_xasprintf ("%.F %d", 1234.0, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "1234 33") == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ char *result =
+ my_xasprintf ("%LF %d", 12.75L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "12.750000 33") == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ char *result =
+ my_xasprintf ("%.LF %d", 1234.0L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "1234 33") == 0);
+ free (result);
+ }
+
+ /* Test the support of the %e format directive. */
+
+ { /* A positive number. */
+ char *result =
+ my_xasprintf ("%e %d", 12.75, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "1.275000e+01 33") == 0
+ || strcmp (result, "1.275000e+001 33") == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ char *result =
+ my_xasprintf ("%15e %d", 1.75, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " 1.750000e+00 33") == 0
+ || strcmp (result, " 1.750000e+000 33") == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ char *result =
+ my_xasprintf ("%.e %d", 1234.0, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "1e+03 33") == 0
+ || strcmp (result, "1e+003 33") == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ char *result =
+ my_xasprintf ("%Le %d", 12.75L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "1.275000e+01 33") == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ char *result =
+ my_xasprintf ("%15Le %d", 1.75L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " 1.750000e+00 33") == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ char *result =
+ my_xasprintf ("%.Le %d", 1234.0L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "1e+03 33") == 0);
+ free (result);
+ }
+
+ /* Test the support of the %g format directive. */
+
+ { /* A positive number. */
+ char *result =
+ my_xasprintf ("%g %d", 12.75, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "12.75 33") == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ char *result =
+ my_xasprintf ("%10g %d", 1.75, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " 1.75 33") == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ char *result =
+ my_xasprintf ("%.g %d", 1234.0, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "1e+03 33") == 0
+ || strcmp (result, "1e+003 33") == 0);
+ free (result);
+ }
+
+ { /* A positive number. */
+ char *result =
+ my_xasprintf ("%Lg %d", 12.75L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "12.75 33") == 0);
+ free (result);
+ }
+
+ { /* Width. */
+ char *result =
+ my_xasprintf ("%10Lg %d", 1.75L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " 1.75 33") == 0);
+ free (result);
+ }
+
+ { /* Precision. */
+ char *result =
+ my_xasprintf ("%.Lg %d", 1234.0L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "1e+03 33") == 0);
+ free (result);
+ }
+
+ /* Test the support of the %n format directive. */
+
+ {
+ int count = -1;
+ char *result =
+ my_xasprintf ("%d %n", 123, &count, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "123 ") == 0);
+ ASSERT (count == 4);
+ free (result);
+ }
+
+ /* Test the support of the POSIX/XSI format strings with positions. */
+
+ {
+ char *result =
+ my_xasprintf ("%2$d %1$d", 33, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "55 33") == 0);
+ free (result);
+ }
+
+ /* Test the support of the grouping flag. */
+
+ {
+ char *result =
+ my_xasprintf ("%'d %d", 1234567, 99);
+ ASSERT (result != NULL);
+ ASSERT (result[strlen (result) - 1] == '9');
+ free (result);
+ }
+}
diff --git a/tests/unistdio/test-ulc-vasnprintf1.c b/tests/unistdio/test-ulc-vasnprintf1.c
new file mode 100644
index 00000000..e2f8be6d
--- /dev/null
+++ b/tests/unistdio/test-ulc-vasnprintf1.c
@@ -0,0 +1,85 @@
+/* Test of ulc_vasnprintf() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-ulc-asnprintf1.h"
+#include "test-ulc-printf1.h"
+
+static char *
+my_asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
+{
+ va_list args;
+ char *ret;
+
+ va_start (args, format);
+ ret = ulc_vasnprintf (resultbuf, lengthp, format, args);
+ va_end (args);
+ return ret;
+}
+
+static char *
+my_xasprintf (const char *format, ...)
+{
+ va_list args;
+ size_t length;
+ char *ret;
+
+ va_start (args, format);
+ ret = ulc_vasnprintf (NULL, &length, format, args);
+ va_end (args);
+ if (ret != NULL)
+ ASSERT (length == strlen (ret));
+ return ret;
+}
+
+static void
+test_vasnprintf ()
+{
+ test_function (my_asnprintf);
+ test_xfunction (my_xasprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ test_vasnprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-ulc-vasnprintf2.c b/tests/unistdio/test-ulc-vasnprintf2.c
new file mode 100644
index 00000000..90229751
--- /dev/null
+++ b/tests/unistdio/test-ulc-vasnprintf2.c
@@ -0,0 +1,258 @@
+/* Test of ulc_vasnprintf() function in an ISO-8859-1 locale.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <locale.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static void
+test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...))
+{
+ /* Test the support of the 'U' conversion specifier for Unicode strings. */
+
+ {
+ static const uint8_t unicode_string[] = "Rafa\305\202 Maszkowski"; /* Rafał Maszkowski */
+ {
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%U %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Rafa? Maszkowski 33") == 0
+ || strcmp (result, "Rafal Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* Width. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%20U %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Rafa? Maszkowski 33") == 0
+ || strcmp (result, " Rafal Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%-20U %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Rafa? Maszkowski 33") == 0
+ || strcmp (result, "Rafal Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%020U %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Rafa? Maszkowski 33") == 0
+ || strcmp (result, " Rafal Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ }
+
+ {
+ static const uint16_t unicode_string[] = /* Rafał Maszkowski */
+ {
+ 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w',
+ 's', 'k', 'i', 0
+ };
+ {
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%lU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Rafa? Maszkowski 33") == 0
+ || strcmp (result, "Rafal Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* Width. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%20lU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Rafa? Maszkowski 33") == 0
+ || strcmp (result, " Rafal Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%-20lU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Rafa? Maszkowski 33") == 0
+ || strcmp (result, "Rafal Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%020lU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Rafa? Maszkowski 33") == 0
+ || strcmp (result, " Rafal Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ }
+
+ {
+ static const uint32_t unicode_string[] = /* Rafał Maszkowski */
+ {
+ 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w',
+ 's', 'k', 'i', 0
+ };
+ {
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%llU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Rafa? Maszkowski 33") == 0
+ || strcmp (result, "Rafal Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* Width. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%20llU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Rafa? Maszkowski 33") == 0
+ || strcmp (result, " Rafal Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%-20llU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Rafa? Maszkowski 33") == 0
+ || strcmp (result, "Rafal Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%020llU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Rafa? Maszkowski 33") == 0
+ || strcmp (result, " Rafal Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ }
+
+ /* Test the support of the 's' conversion specifier for strings. */
+
+ {
+ const char *locale_string = "\304rger"; /* Ärger */
+ {
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%s %d", locale_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "\304rger 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* Width. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%10s %d", locale_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " \304rger 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%-10s %d", locale_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "\304rger 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%010s %d", locale_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " \304rger 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ }
+}
+
+static char *
+my_asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
+{
+ va_list args;
+ char *ret;
+
+ va_start (args, format);
+ ret = ulc_vasnprintf (resultbuf, lengthp, format, args);
+ va_end (args);
+ return ret;
+}
+
+static void
+test_vasnprintf ()
+{
+ test_function (my_asnprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ test_vasnprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-ulc-vasnprintf2.sh b/tests/unistdio/test-ulc-vasnprintf2.sh
new file mode 100755
index 00000000..39056a63
--- /dev/null
+++ b/tests/unistdio/test-ulc-vasnprintf2.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# Test whether a traditional french locale is installed.
+: ${LOCALE_FR=fr_FR}
+if test $LOCALE_FR != none; then
+ testlocale=$LOCALE_FR
+else
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no traditional french locale is installed"
+ else
+ echo "Skipping test: no traditional french locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$testlocale \
+./test-ulc-vasnprintf1${EXEEXT} \
+ || exit 1
+
+LC_ALL=$testlocale \
+./test-ulc-vasnprintf2${EXEEXT}
diff --git a/tests/unistdio/test-ulc-vasnprintf3.c b/tests/unistdio/test-ulc-vasnprintf3.c
new file mode 100644
index 00000000..1fbd925d
--- /dev/null
+++ b/tests/unistdio/test-ulc-vasnprintf3.c
@@ -0,0 +1,246 @@
+/* Test of ulc_vasnprintf() function in an UTF-8 locale.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <locale.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+static void
+test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...))
+{
+ /* Test the support of the 'U' conversion specifier for Unicode strings. */
+
+ {
+ static const uint8_t unicode_string[] = "Rafa\305\202 Maszkowski"; /* Rafał Maszkowski */
+ {
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%U %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Rafa\305\202 Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* Width. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%20U %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Rafa\305\202 Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%-20U %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Rafa\305\202 Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%020U %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Rafa\305\202 Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ }
+
+ {
+ static const uint16_t unicode_string[] = /* Rafał Maszkowski */
+ {
+ 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w',
+ 's', 'k', 'i', 0
+ };
+ {
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%lU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Rafa\305\202 Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* Width. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%20lU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Rafa\305\202 Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%-20lU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Rafa\305\202 Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%020lU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Rafa\305\202 Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ }
+
+ {
+ static const uint32_t unicode_string[] = /* Rafał Maszkowski */
+ {
+ 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w',
+ 's', 'k', 'i', 0
+ };
+ {
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%llU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Rafa\305\202 Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* Width. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%20llU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Rafa\305\202 Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%-20llU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Rafa\305\202 Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%020llU %d", unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Rafa\305\202 Maszkowski 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ }
+
+ /* Test the support of the 's' conversion specifier for strings. */
+
+ {
+ const char *locale_string = "\303\204rger"; /* Ärger */
+ {
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%s %d", locale_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "\303\204rger 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* Width. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%10s %d", locale_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " \303\204rger 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* FLAG_LEFT. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%-10s %d", locale_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "\303\204rger 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ { /* FLAG_ZERO: no effect. */
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%010s %d", locale_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " \303\204rger 33") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+ }
+}
+
+static char *
+my_asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
+{
+ va_list args;
+ char *ret;
+
+ va_start (args, format);
+ ret = ulc_vasnprintf (resultbuf, lengthp, format, args);
+ va_end (args);
+ return ret;
+}
+
+static void
+test_vasnprintf ()
+{
+ test_function (my_asnprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ test_vasnprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-ulc-vasnprintf3.sh b/tests/unistdio/test-ulc-vasnprintf3.sh
new file mode 100755
index 00000000..caa528a6
--- /dev/null
+++ b/tests/unistdio/test-ulc-vasnprintf3.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# Test whether a french Unicode locale is installed.
+: ${LOCALE_FR_UTF8=fr_FR.UTF-8}
+if test $LOCALE_FR_UTF8 != none; then
+ testlocale=$LOCALE_FR_UTF8
+else
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no french Unicode locale is installed"
+ else
+ echo "Skipping test: no french Unicode locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$testlocale \
+./test-ulc-vasnprintf1${EXEEXT} \
+ || exit 1
+
+LC_ALL=$testlocale \
+./test-ulc-vasnprintf3${EXEEXT}
diff --git a/tests/unistdio/test-ulc-vasprintf1.c b/tests/unistdio/test-ulc-vasprintf1.c
new file mode 100644
index 00000000..d8ed67c2
--- /dev/null
+++ b/tests/unistdio/test-ulc-vasprintf1.c
@@ -0,0 +1,72 @@
+/* Test of ulc_vasprintf() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-ulc-printf1.h"
+
+static char *
+my_xasprintf (const char *format, ...)
+{
+ va_list args;
+ char *result;
+ int retval;
+
+ va_start (args, format);
+ retval = ulc_vasprintf (&result, format, args);
+ va_end (args);
+ if (retval < 0)
+ return NULL;
+ ASSERT (result != NULL);
+ return result;
+}
+
+static void
+test_vasprintf ()
+{
+ test_xfunction (my_xasprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ test_vasprintf ();
+ return 0;
+}
diff --git a/tests/unistdio/test-ulc-vsnprintf1.c b/tests/unistdio/test-ulc-vsnprintf1.c
new file mode 100644
index 00000000..7701c21e
--- /dev/null
+++ b/tests/unistdio/test-ulc-vsnprintf1.c
@@ -0,0 +1,77 @@
+/* Test of ulc_vsnprintf() function.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "xalloc.h"
+#include "progname.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-ulc-printf1.h"
+
+static char *
+my_xasprintf (const char *format, ...)
+{
+ va_list args;
+ char result[1000];
+ int retval;
+
+ va_start (args, format);
+ retval = ulc_vsnprintf (result, sizeof (result), format, args);
+ va_end (args);
+ if (retval < 0 || retval >= (int) sizeof (result))
+ return NULL;
+ return xstrdup (result);
+}
+
+static void
+test_vsnprintf ()
+{
+ test_xfunction (my_xasprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ set_program_name (argv[0]);
+
+ test_vsnprintf ();
+
+ return 0;
+}
diff --git a/tests/unistdio/test-ulc-vsprintf1.c b/tests/unistdio/test-ulc-vsprintf1.c
new file mode 100644
index 00000000..76b85b29
--- /dev/null
+++ b/tests/unistdio/test-ulc-vsprintf1.c
@@ -0,0 +1,77 @@
+/* Test of ulc_vsprintf() function.
+ Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "unistdio.h"
+
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "xalloc.h"
+#include "progname.h"
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+#include "test-ulc-printf1.h"
+
+static char *
+my_xasprintf (const char *format, ...)
+{
+ va_list args;
+ char result[1000];
+ int retval;
+
+ va_start (args, format);
+ retval = ulc_vsprintf (result, format, args);
+ va_end (args);
+ if (retval < 0 || retval >= (int) sizeof (result))
+ return NULL;
+ return xstrdup (result);
+}
+
+static void
+test_vsprintf ()
+{
+ test_xfunction (my_xasprintf);
+}
+
+int
+main (int argc, char *argv[])
+{
+ set_program_name (argv[0]);
+
+ test_vsprintf ();
+
+ return 0;
+}
diff --git a/tests/uniwbrk/test-u16-wordbreaks.c b/tests/uniwbrk/test-u16-wordbreaks.c
new file mode 100644
index 00000000..b5eb26cd
--- /dev/null
+++ b/tests/uniwbrk/test-u16-wordbreaks.c
@@ -0,0 +1,106 @@
+/* Test of word breaks in UTF-16 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uniwbrk.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ /* Test case n = 0. */
+ u16_wordbreaks (NULL, 0, NULL);
+
+ {
+ static const uint16_t input[61] =
+ /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u16_wordbreaks (input, SIZEOF (input), p);
+
+ for (i = 0; i < 61; i++)
+ {
+ ASSERT (p[i] == ((i >= 4 && i <= 5)
+ || (i >= 9 && i <= 11)
+ || (i >= 23 && i <= 31)
+ || (i >= 35 && i <= 39)
+ || (i >= 42 && i <= 46)
+ || (i >= 48 && i <= 58)
+ || i == 60
+ ? 1 : 0));
+ }
+ free (p);
+ }
+
+ {
+ /* Same input string, decomposed. */
+ static const uint16_t input[67] =
+ /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ { 'G', 'r', 0x0075, 0x0308, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0438, 0x0306, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',',
+ 0x1112, 0x1161, 0x11AB, 0x1100, 0x1173, 0x11AF, '\n'
+ };
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u16_wordbreaks (input, SIZEOF (input), p);
+
+ for (i = 0; i < 67; i++)
+ {
+ ASSERT (p[i] == ((i >= 5 && i <= 6)
+ || (i >= 10 && i <= 12)
+ || (i >= 25 && i <= 33)
+ || (i >= 37 && i <= 41)
+ || (i >= 44 && i <= 48)
+ || (i >= 50 && i <= 60)
+ || i == 66
+ ? 1 : 0));
+ }
+ free (p);
+ }
+
+ return 0;
+}
diff --git a/tests/uniwbrk/test-u32-wordbreaks.c b/tests/uniwbrk/test-u32-wordbreaks.c
new file mode 100644
index 00000000..c6feb84f
--- /dev/null
+++ b/tests/uniwbrk/test-u32-wordbreaks.c
@@ -0,0 +1,106 @@
+/* Test of word breaks in UTF-32 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uniwbrk.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ /* Test case n = 0. */
+ u32_wordbreaks (NULL, 0, NULL);
+
+ {
+ static const uint32_t input[61] =
+ /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0439, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n'
+ };
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u32_wordbreaks (input, SIZEOF (input), p);
+
+ for (i = 0; i < 61; i++)
+ {
+ ASSERT (p[i] == ((i >= 4 && i <= 5)
+ || (i >= 9 && i <= 11)
+ || (i >= 23 && i <= 31)
+ || (i >= 35 && i <= 39)
+ || (i >= 42 && i <= 46)
+ || (i >= 48 && i <= 58)
+ || i == 60
+ ? 1 : 0));
+ }
+ free (p);
+ }
+
+ {
+ /* Same input string, decomposed. */
+ static const uint32_t input[67] =
+ /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ { 'G', 'r', 0x0075, 0x0308, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ',
+ 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443,
+ 0x0438, 0x0306, 0x0442, 0x0435, '!', ' ',
+ 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2,
+ '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ',
+ 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',',
+ 0x1112, 0x1161, 0x11AB, 0x1100, 0x1173, 0x11AF, '\n'
+ };
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u32_wordbreaks (input, SIZEOF (input), p);
+
+ for (i = 0; i < 67; i++)
+ {
+ ASSERT (p[i] == ((i >= 5 && i <= 6)
+ || (i >= 10 && i <= 12)
+ || (i >= 25 && i <= 33)
+ || (i >= 37 && i <= 41)
+ || (i >= 44 && i <= 48)
+ || (i >= 50 && i <= 60)
+ || i == 66
+ ? 1 : 0));
+ }
+ free (p);
+ }
+
+ return 0;
+}
diff --git a/tests/uniwbrk/test-u8-wordbreaks.c b/tests/uniwbrk/test-u8-wordbreaks.c
new file mode 100644
index 00000000..c2633025
--- /dev/null
+++ b/tests/uniwbrk/test-u8-wordbreaks.c
@@ -0,0 +1,97 @@
+/* Test of word breaks in UTF-8 strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uniwbrk.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ /* Test case n = 0. */
+ u8_wordbreaks (NULL, 0, NULL);
+
+ {
+ static const uint8_t input[91] =
+ /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ "Gr\303\274\303\237 Gott. \320\227\320\264\321\200\320\260\320\262\321\201\321\202\320\262\321\203\320\271\321\202\320\265! x=(-b\302\261sqrt(b\302\262-4ac))/(2a) \346\227\245\346\234\254\350\252\236,\344\270\255\346\226\207,\355\225\234\352\270\200\n";
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u8_wordbreaks (input, SIZEOF (input), p);
+
+ for (i = 0; i < 91; i++)
+ {
+ ASSERT (p[i] == ((i >= 6 && i <= 7)
+ || (i >= 11 && i <= 13)
+ || (i >= 37 && i <= 44)
+ || i == 46 || (i >= 50 && i <= 52)
+ || (i >= 54 && i <= 55)
+ || (i >= 58 && i <= 62) || (i >= 64 && i <= 67)
+ || i == 70 || i == 73 || i == 76
+ || i == 77 || i == 80 || i == 83
+ || i == 84 || i == 90
+ ? 1 : 0));
+ }
+ free (p);
+ }
+
+ {
+ /* Same input string, decomposed. */
+ static const uint8_t input[106] =
+ /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */
+ "Gru\314\210\303\237 Gott. \320\227\320\264\321\200\320\260\320\262\321\201\321\202\320\262\321\203\320\270\314\206\321\202\320\265! x=(-b\302\261sqrt(b\302\262-4ac))/(2a) \346\227\245\346\234\254\350\252\236,\344\270\255\346\226\207,\341\204\222\341\205\241\341\206\253\341\204\200\341\205\263\341\206\257\n";
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u8_wordbreaks (input, SIZEOF (input), p);
+
+ for (i = 0; i < 106; i++)
+ {
+ ASSERT (p[i] == ((i >= 7 && i <= 8)
+ || (i >= 12 && i <= 14)
+ || (i >= 40 && i <= 47)
+ || i == 49 || (i >= 53 && i <= 55)
+ || (i >= 57 && i <= 58)
+ || (i >= 61 && i <= 65) || (i >= 67 && i <= 70)
+ || i == 73 || i == 76 || i == 79
+ || i == 80 || i == 83 || i == 86
+ || i == 87 || i == 105
+ ? 1 : 0));
+ }
+ free (p);
+ }
+
+ return 0;
+}
diff --git a/tests/uniwbrk/test-ulc-wordbreaks.c b/tests/uniwbrk/test-ulc-wordbreaks.c
new file mode 100644
index 00000000..80284ab2
--- /dev/null
+++ b/tests/uniwbrk/test-ulc-wordbreaks.c
@@ -0,0 +1,74 @@
+/* Test of word breaks in strings.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2009. */
+
+#include <config.h>
+
+#include "uniwbrk.h"
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* Test case n = 0. */
+ ulc_wordbreaks (NULL, 0, NULL);
+
+#if HAVE_ICONV
+ {
+ static const char input[36] =
+ /* "Grüß Gott. x=(-b±sqrt(b²-4ac))/(2a)" */
+ "Gr\374\337 Gott. x=(-b\261sqrt(b\262-4ac))/(2a)\n";
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ ulc_wordbreaks (input, SIZEOF (input), p);
+
+ for (i = 0; i < 36; i++)
+ {
+ ASSERT (p[i] == ((i >= 4 && i <= 5)
+ || (i >= 9 && i <= 17)
+ || (i >= 21 && i <= 25)
+ || (i >= 28 && i <= 32)
+ || (i >= 34 && i <= 35)
+ ? 1 : 0));
+ }
+ free (p);
+ }
+#endif
+
+ return 0;
+}
diff --git a/tests/uniwbrk/test-ulc-wordbreaks.sh b/tests/uniwbrk/test-ulc-wordbreaks.sh
new file mode 100755
index 00000000..96bae501
--- /dev/null
+++ b/tests/uniwbrk/test-ulc-wordbreaks.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: ${LOCALE_FR=fr_FR}
+if test $LOCALE_FR = none; then
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no traditional french locale is installed"
+ else
+ echo "Skipping test: no traditional french locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$LOCALE_FR \
+./test-ulc-wordbreaks${EXEEXT}
diff --git a/tests/uniwidth/test-u16-strwidth.c b/tests/uniwidth/test-u16-strwidth.c
new file mode 100644
index 00000000..7365426f
--- /dev/null
+++ b/tests/uniwidth/test-u16-strwidth.c
@@ -0,0 +1,71 @@
+/* Test of u16_strwidth() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniwidth.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ {
+ static const uint16_t input[] = /* "Danilo Šegan" */
+ { 'D', 'a', 'n', 'i', 'l', 'o', ' ', 0x0160, 'e', 'g', 'a', 'n', 0 };
+ ASSERT (u16_strwidth (input, "UTF-8") == 12);
+ }
+
+ {
+ static const uint16_t input[] = /* "Danilo Šegan" decomposed */
+ { 'D', 'a', 'n', 'i', 'l', 'o', ' ', 'S', 0x030C, 'e', 'g', 'a', 'n', 0 };
+ ASSERT (u16_strwidth (input, "UTF-8") == 12);
+ }
+
+ {
+ static const uint16_t input[] = /* "Данило Шеган" */
+ {
+ 0x0414, 0x0430, 0x043D, 0x0438, 0x043B, 0x043E, ' ',
+ 0x0428, 0x0435, 0x0433, 0x0430, 0x043D, 0
+ };
+ ASSERT (u16_strwidth (input, "UTF-8") == 12);
+ ASSERT (u16_strwidth (input, "EUC-JP") == 23);
+ }
+
+ {
+ static const uint16_t input[] = /* 刘军民 */
+ { 0x5218, 0x519B, 0x6C11, 0 };
+ ASSERT (u16_strwidth (input, "UTF-8") == 6);
+ ASSERT (u16_strwidth (input, "GB2312") == 6);
+ }
+
+ return 0;
+}
diff --git a/tests/uniwidth/test-u16-width.c b/tests/uniwidth/test-u16-width.c
new file mode 100644
index 00000000..b3e2b592
--- /dev/null
+++ b/tests/uniwidth/test-u16-width.c
@@ -0,0 +1,77 @@
+/* Test of u16_width() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniwidth.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ static const uint16_t input[] =
+ {
+ #define INPUT1_OFFSET 0
+ #define INPUT1_LENGTH 12
+ 'D', 'a', 'n', 'i', 'l', 'o', ' ', 0x0160, 'e', 'g', 'a', 'n',
+ #define INPUT2_OFFSET 12
+ #define INPUT2_LENGTH 13
+ 'D', 'a', 'n', 'i', 'l', 'o', ' ', 'S', 0x030C, 'e', 'g', 'a', 'n',
+ #define INPUT3_OFFSET 25
+ #define INPUT3_LENGTH 12
+ 0x0414, 0x0430, 0x043D, 0x0438, 0x043B, 0x043E, ' ',
+ 0x0428, 0x0435, 0x0433, 0x0430, 0x043D,
+ #define INPUT4_OFFSET 37
+ #define INPUT4_LENGTH 3
+ 0x5218, 0x519B, 0x6C11
+ };
+
+ { /* "Danilo Šegan" */
+ ASSERT (u16_width (input + INPUT1_OFFSET, INPUT1_LENGTH, "UTF-8") == 12);
+ }
+
+ { /* "Danilo Šegan" decomposed */
+ ASSERT (u16_width (input + INPUT2_OFFSET, INPUT2_LENGTH, "UTF-8") == 12);
+ }
+
+ { /* "Данило Шеган" */
+ ASSERT (u16_width (input + INPUT3_OFFSET, INPUT3_LENGTH, "UTF-8") == 12);
+ ASSERT (u16_width (input + INPUT3_OFFSET, INPUT3_LENGTH, "EUC-JP") == 23);
+ }
+
+ { /* 刘军民 */
+ ASSERT (u16_width (input + INPUT4_OFFSET, INPUT4_LENGTH, "UTF-8") == 6);
+ ASSERT (u16_width (input + INPUT4_OFFSET, INPUT4_LENGTH, "GB2312") == 6);
+ }
+
+ return 0;
+}
diff --git a/tests/uniwidth/test-u32-strwidth.c b/tests/uniwidth/test-u32-strwidth.c
new file mode 100644
index 00000000..3976daa9
--- /dev/null
+++ b/tests/uniwidth/test-u32-strwidth.c
@@ -0,0 +1,71 @@
+/* Test of u32_strwidth() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniwidth.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ {
+ static const uint32_t input[] = /* "Danilo Šegan" */
+ { 'D', 'a', 'n', 'i', 'l', 'o', ' ', 0x0160, 'e', 'g', 'a', 'n', 0 };
+ ASSERT (u32_strwidth (input, "UTF-8") == 12);
+ }
+
+ {
+ static const uint32_t input[] = /* "Danilo Šegan" decomposed */
+ { 'D', 'a', 'n', 'i', 'l', 'o', ' ', 'S', 0x030C, 'e', 'g', 'a', 'n', 0 };
+ ASSERT (u32_strwidth (input, "UTF-8") == 12);
+ }
+
+ {
+ static const uint32_t input[] = /* "Данило Шеган" */
+ {
+ 0x0414, 0x0430, 0x043D, 0x0438, 0x043B, 0x043E, ' ',
+ 0x0428, 0x0435, 0x0433, 0x0430, 0x043D, 0
+ };
+ ASSERT (u32_strwidth (input, "UTF-8") == 12);
+ ASSERT (u32_strwidth (input, "EUC-JP") == 23);
+ }
+
+ {
+ static const uint32_t input[] = /* 刘军民 */
+ { 0x5218, 0x519B, 0x6C11, 0 };
+ ASSERT (u32_strwidth (input, "UTF-8") == 6);
+ ASSERT (u32_strwidth (input, "GB2312") == 6);
+ }
+
+ return 0;
+}
diff --git a/tests/uniwidth/test-u32-width.c b/tests/uniwidth/test-u32-width.c
new file mode 100644
index 00000000..05fd856d
--- /dev/null
+++ b/tests/uniwidth/test-u32-width.c
@@ -0,0 +1,77 @@
+/* Test of u32_width() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniwidth.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ static const uint32_t input[] =
+ {
+ #define INPUT1_OFFSET 0
+ #define INPUT1_LENGTH 12
+ 'D', 'a', 'n', 'i', 'l', 'o', ' ', 0x0160, 'e', 'g', 'a', 'n',
+ #define INPUT2_OFFSET 12
+ #define INPUT2_LENGTH 13
+ 'D', 'a', 'n', 'i', 'l', 'o', ' ', 'S', 0x030C, 'e', 'g', 'a', 'n',
+ #define INPUT3_OFFSET 25
+ #define INPUT3_LENGTH 12
+ 0x0414, 0x0430, 0x043D, 0x0438, 0x043B, 0x043E, ' ',
+ 0x0428, 0x0435, 0x0433, 0x0430, 0x043D,
+ #define INPUT4_OFFSET 37
+ #define INPUT4_LENGTH 3
+ 0x5218, 0x519B, 0x6C11
+ };
+
+ { /* "Danilo Šegan" */
+ ASSERT (u32_width (input + INPUT1_OFFSET, INPUT1_LENGTH, "UTF-8") == 12);
+ }
+
+ { /* "Danilo Šegan" decomposed */
+ ASSERT (u32_width (input + INPUT2_OFFSET, INPUT2_LENGTH, "UTF-8") == 12);
+ }
+
+ { /* "Данило Шеган" */
+ ASSERT (u32_width (input + INPUT3_OFFSET, INPUT3_LENGTH, "UTF-8") == 12);
+ ASSERT (u32_width (input + INPUT3_OFFSET, INPUT3_LENGTH, "EUC-JP") == 23);
+ }
+
+ { /* 刘军民 */
+ ASSERT (u32_width (input + INPUT4_OFFSET, INPUT4_LENGTH, "UTF-8") == 6);
+ ASSERT (u32_width (input + INPUT4_OFFSET, INPUT4_LENGTH, "GB2312") == 6);
+ }
+
+ return 0;
+}
diff --git a/tests/uniwidth/test-u8-strwidth.c b/tests/uniwidth/test-u8-strwidth.c
new file mode 100644
index 00000000..3fbb39e5
--- /dev/null
+++ b/tests/uniwidth/test-u8-strwidth.c
@@ -0,0 +1,66 @@
+/* Test of u8_strwidth() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniwidth.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ {
+ static const uint8_t input[] = "Danilo \305\240egan"; /* "Danilo Šegan" */
+ ASSERT (u8_strwidth (input, "UTF-8") == 12);
+ }
+
+ {
+ static const uint8_t input[] = "Danilo S\314\214egan"; /* "Danilo Šegan" decomposed */
+ ASSERT (u8_strwidth (input, "UTF-8") == 12);
+ }
+
+ {
+ static const uint8_t input[] = /* "Данило Шеган" */
+ "\320\224\320\260\320\275\320\270\320\273\320\276 \320\250\320\265\320\263\320\260\320\275";
+ ASSERT (u8_strwidth (input, "UTF-8") == 12);
+ ASSERT (u8_strwidth (input, "EUC-JP") == 23);
+ }
+
+ {
+ static const uint8_t input[] = /* 刘军民 */
+ "\345\210\230\345\206\233\346\260\221";
+ ASSERT (u8_strwidth (input, "UTF-8") == 6);
+ ASSERT (u8_strwidth (input, "GB2312") == 6);
+ }
+
+ return 0;
+}
diff --git a/tests/uniwidth/test-u8-width.c b/tests/uniwidth/test-u8-width.c
new file mode 100644
index 00000000..b2532897
--- /dev/null
+++ b/tests/uniwidth/test-u8-width.c
@@ -0,0 +1,75 @@
+/* Test of u8_width() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniwidth.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ static const uint8_t input[] =
+ #define INPUT1_OFFSET 0
+ #define INPUT1_LENGTH 13
+ "Danilo \305\240egan"
+ #define INPUT2_OFFSET 13
+ #define INPUT2_LENGTH 14
+ "Danilo S\314\214egan"
+ #define INPUT3_OFFSET 27
+ #define INPUT3_LENGTH 23
+ "\320\224\320\260\320\275\320\270\320\273\320\276 \320\250\320\265\320\263\320\260\320\275"
+ #define INPUT4_OFFSET 50
+ #define INPUT4_LENGTH 9
+ "\345\210\230\345\206\233\346\260\221"
+ ;
+
+ { /* "Danilo Šegan" */
+ ASSERT (u8_width (input + INPUT1_OFFSET, INPUT1_LENGTH, "UTF-8") == 12);
+ }
+
+ { /* "Danilo Šegan" decomposed */
+ ASSERT (u8_width (input + INPUT2_OFFSET, INPUT2_LENGTH, "UTF-8") == 12);
+ }
+
+ { /* "Данило Шеган" */
+ ASSERT (u8_width (input + INPUT3_OFFSET, INPUT3_LENGTH, "UTF-8") == 12);
+ ASSERT (u8_width (input + INPUT3_OFFSET, INPUT3_LENGTH, "EUC-JP") == 23);
+ }
+
+ { /* 刘军民 */
+ ASSERT (u8_width (input + INPUT4_OFFSET, INPUT4_LENGTH, "UTF-8") == 6);
+ ASSERT (u8_width (input + INPUT4_OFFSET, INPUT4_LENGTH, "GB2312") == 6);
+ }
+
+ return 0;
+}
diff --git a/tests/uniwidth/test-uc_width.c b/tests/uniwidth/test-uc_width.c
new file mode 100644
index 00000000..d7335cfd
--- /dev/null
+++ b/tests/uniwidth/test-uc_width.c
@@ -0,0 +1,69 @@
+/* Test of uc_width() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include "uniwidth.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ ucs4_t uc;
+
+ /* Test width of ASCII characters. */
+ for (uc = 0x0020; uc < 0x007F; uc++)
+ ASSERT (uc_width (uc, "ISO-8859-2") == 1);
+
+ /* Test width of some non-spacing characters. */
+ ASSERT (uc_width (0x0301, "UTF-8") == 0);
+ ASSERT (uc_width (0x05B0, "UTF-8") == 0);
+
+ /* Test width of some format control characters. */
+ ASSERT (uc_width (0x200E, "UTF-8") == 0);
+ ASSERT (uc_width (0x2060, "UTF-8") == 0);
+ ASSERT (uc_width (0xE0001, "UTF-8") == 0);
+ ASSERT (uc_width (0xE0044, "UTF-8") == 0);
+
+ /* Test width of some zero width characters. */
+ ASSERT (uc_width (0x200B, "UTF-8") == 0);
+ ASSERT (uc_width (0xFEFF, "UTF-8") == 0);
+
+ /* Test width of some CJK characters. */
+ ASSERT (uc_width (0x3000, "UTF-8") == 2);
+ ASSERT (uc_width (0xB250, "UTF-8") == 2);
+ ASSERT (uc_width (0xFF1A, "UTF-8") == 2);
+ ASSERT (uc_width (0x20369, "UTF-8") == 2);
+ ASSERT (uc_width (0x2F876, "UTF-8") == 2);
+
+ return 0;
+}
diff --git a/tests/uniwidth/test-uc_width2.c b/tests/uniwidth/test-uc_width2.c
new file mode 100644
index 00000000..2bf143c2
--- /dev/null
+++ b/tests/uniwidth/test-uc_width2.c
@@ -0,0 +1,97 @@
+/* Test of uc_width() function.
+ Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+
+#include <config.h>
+
+#include "uniwidth.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+/* One of 0, '0', '1', 'A', '2'. */
+static char current_width;
+/* The interval for which the current_width holds. */
+static ucs4_t current_start;
+static ucs4_t current_end;
+
+static void
+finish_interval (void)
+{
+ if (current_width != 0)
+ {
+ if (current_start == current_end)
+ printf ("%04X\t\t%c\n", (unsigned) current_start, current_width);
+ else
+ printf ("%04X..%04X\t%c\n", (unsigned) current_start,
+ (unsigned) current_end, current_width);
+ current_width = 0;
+ }
+}
+
+static void
+add_to_interval (ucs4_t uc, char width)
+{
+ if (current_width == width && uc == current_end + 1)
+ current_end = uc;
+ else
+ {
+ finish_interval ();
+ current_width = width;
+ current_start = current_end = uc;
+ }
+}
+
+int
+main ()
+{
+ ucs4_t uc;
+
+ for (uc = 0; uc < 0x110000; uc++)
+ {
+ int w1 = uc_width (uc, "UTF-8");
+ int w2 = uc_width (uc, "GBK");
+ char width =
+ (w1 == 0 && w2 == 0 ? '0' :
+ w1 == 1 && w2 == 1 ? '1' :
+ w1 == 1 && w2 == 2 ? 'A' :
+ w1 == 2 && w2 == 2 ? '2' :
+ 0);
+ if (width == 0)
+ {
+ /* uc must be a control character. */
+ ASSERT (w1 < 0 && w2 < 0);
+ }
+ else
+ add_to_interval (uc, width);
+ }
+ finish_interval ();
+
+ return 0;
+}
diff --git a/tests/uniwidth/test-uc_width2.sh b/tests/uniwidth/test-uc_width2.sh
new file mode 100755
index 00000000..484288c9
--- /dev/null
+++ b/tests/uniwidth/test-uc_width2.sh
@@ -0,0 +1,382 @@
+#!/bin/sh
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles uc_width.out"
+./test-uc_width2${EXEEXT} | LC_ALL=C tr -d '\r' > uc_width.out
+
+tmpfiles="$tmpfiles uc_width.ok"
+cat > uc_width.ok <<\EOF
+0000 0
+0020..007E 1
+00A0 1
+00A1..00AC A
+00AD 0
+00AE..02FF A
+0300..036F 0
+0370..0482 A
+0483..0489 0
+048A..0590 A
+0591..05BD 0
+05BE A
+05BF 0
+05C0 A
+05C1..05C2 0
+05C3 A
+05C4..05C5 0
+05C6 A
+05C7 0
+05C8..05FF A
+0600..0603 0
+0604..060F A
+0610..061A 0
+061B..064A A
+064B..065E 0
+065F..066F A
+0670 0
+0671..06D5 A
+06D6..06E4 0
+06E5..06E6 A
+06E7..06E8 0
+06E9 A
+06EA..06ED 0
+06EE..070E A
+070F 0
+0710 A
+0711 0
+0712..072F A
+0730..074A 0
+074B..07A5 A
+07A6..07B0 0
+07B1..07EA A
+07EB..07F3 0
+07F4..0900 A
+0901..0902 0
+0903..093B A
+093C 0
+093D..0940 A
+0941..0948 0
+0949..094C A
+094D 0
+094E..0950 A
+0951..0954 0
+0955..0961 A
+0962..0963 0
+0964..0980 A
+0981 0
+0982..09BB A
+09BC 0
+09BD..09C0 A
+09C1..09C4 0
+09C5..09CC A
+09CD 0
+09CE..09E1 A
+09E2..09E3 0
+09E4..0A00 A
+0A01..0A02 0
+0A03..0A3B A
+0A3C 0
+0A3D..0A40 A
+0A41..0A42 0
+0A43..0A46 A
+0A47..0A48 0
+0A49..0A4A A
+0A4B..0A4D 0
+0A4E..0A50 A
+0A51 0
+0A52..0A6F A
+0A70..0A71 0
+0A72..0A74 A
+0A75 0
+0A76..0A80 A
+0A81..0A82 0
+0A83..0ABB A
+0ABC 0
+0ABD..0AC0 A
+0AC1..0AC5 0
+0AC6 A
+0AC7..0AC8 0
+0AC9..0ACC A
+0ACD 0
+0ACE..0AE1 A
+0AE2..0AE3 0
+0AE4..0B00 A
+0B01 0
+0B02..0B3B A
+0B3C 0
+0B3D..0B3E A
+0B3F 0
+0B40 A
+0B41..0B44 0
+0B45..0B4C A
+0B4D 0
+0B4E..0B55 A
+0B56 0
+0B57..0B61 A
+0B62..0B63 0
+0B64..0B81 A
+0B82 0
+0B83..0BBF A
+0BC0 0
+0BC1..0BCC A
+0BCD 0
+0BCE..0C3D A
+0C3E..0C40 0
+0C41..0C45 A
+0C46..0C48 0
+0C49 A
+0C4A..0C4D 0
+0C4E..0C54 A
+0C55..0C56 0
+0C57..0C61 A
+0C62..0C63 0
+0C64..0CBB A
+0CBC 0
+0CBD..0CCB A
+0CCC..0CCD 0
+0CCE..0CE1 A
+0CE2..0CE3 0
+0CE4..0D40 A
+0D41..0D44 0
+0D45..0D4C A
+0D4D 0
+0D4E..0D61 A
+0D62..0D63 0
+0D64..0DC9 A
+0DCA 0
+0DCB..0DD1 A
+0DD2..0DD4 0
+0DD5 A
+0DD6 0
+0DD7..0E30 A
+0E31 0
+0E32..0E33 A
+0E34..0E3A 0
+0E3B..0E46 A
+0E47..0E4E 0
+0E4F..0EB0 A
+0EB1 0
+0EB2..0EB3 A
+0EB4..0EB9 0
+0EBA A
+0EBB..0EBC 0
+0EBD..0EC7 A
+0EC8..0ECD 0
+0ECE..0F17 A
+0F18..0F19 0
+0F1A..0F34 A
+0F35 0
+0F36 A
+0F37 0
+0F38 A
+0F39 0
+0F3A..0F70 A
+0F71..0F7E 0
+0F7F A
+0F80..0F84 0
+0F85 A
+0F86..0F87 0
+0F88..0F8F A
+0F90..0F97 0
+0F98 A
+0F99..0FBC 0
+0FBD..0FC5 A
+0FC6 0
+0FC7..102C A
+102D..1030 0
+1031 A
+1032..1037 0
+1038 A
+1039..103A 0
+103B..103C A
+103D..103E 0
+103F..1057 A
+1058..1059 0
+105A..105D A
+105E..1060 0
+1061..1070 A
+1071..1074 0
+1075..1081 A
+1082 0
+1083..1084 A
+1085..1086 0
+1087..108C A
+108D 0
+108E..10FF A
+1100..115F 2
+1160..135E A
+135F 0
+1360..1711 A
+1712..1714 0
+1715..1731 A
+1732..1734 0
+1735..1751 A
+1752..1753 0
+1754..1771 A
+1772..1773 0
+1774..17B3 A
+17B4..17B5 0
+17B6 A
+17B7..17BD 0
+17BE..17C5 A
+17C6 0
+17C7..17C8 A
+17C9..17D3 0
+17D4..17DC A
+17DD 0
+17DE..180A A
+180B..180D 0
+180E..18A8 A
+18A9 0
+18AA..191F A
+1920..1922 0
+1923..1926 A
+1927..1928 0
+1929..1931 A
+1932 0
+1933..1938 A
+1939..193B 0
+193C..1A16 A
+1A17..1A18 0
+1A19..1AFF A
+1B00..1B03 0
+1B04..1B33 A
+1B34 0
+1B35 A
+1B36..1B3A 0
+1B3B A
+1B3C 0
+1B3D..1B41 A
+1B42 0
+1B43..1B6A A
+1B6B..1B73 0
+1B74..1B7F A
+1B80..1B81 0
+1B82..1BA1 A
+1BA2..1BA5 0
+1BA6..1BA7 A
+1BA8..1BA9 0
+1BAA..1C2B A
+1C2C..1C33 0
+1C34..1C35 A
+1C36..1C37 0
+1C38..1DBF A
+1DC0..1DE6 0
+1DE7..1DFD A
+1DFE..1DFF 0
+1E00..200A A
+200B..200F 0
+2010..2029 A
+202A..202E 0
+202F..205F A
+2060..2064 0
+2065..2069 A
+206A..206F 0
+2070..20A8 A
+20A9 1
+20AA..20CF A
+20D0..20F0 0
+20F1..2328 A
+2329..232A 2
+232B..2DDF A
+2DE0..2DFF 0
+2E00..2E7F A
+2E80..3029 2
+302A..302F 0
+3030..303E 2
+303F A
+3040..3098 2
+3099..309A 0
+309B..4DBF 2
+4DC0..4DFF A
+4E00..A4CF 2
+A4D0..A66E A
+A66F..A672 0
+A673..A67B A
+A67C..A67D 0
+A67E..A801 A
+A802 0
+A803..A805 A
+A806 0
+A807..A80A A
+A80B 0
+A80C..A824 A
+A825..A826 0
+A827..A8C3 A
+A8C4 0
+A8C5..A925 A
+A926..A92D 0
+A92E..A946 A
+A947..A951 0
+A952..AA28 A
+AA29..AA2E 0
+AA2F..AA30 A
+AA31..AA32 0
+AA33..AA34 A
+AA35..AA36 0
+AA37..AA42 A
+AA43 0
+AA44..AA4B A
+AA4C 0
+AA4D..ABFF A
+AC00..D7A3 2
+D7A4..F8FF A
+F900..FAFF 2
+FB00..FB1D A
+FB1E 0
+FB1F..FDFF A
+FE00..FE0F 0
+FE10..FE1F 2
+FE20..FE26 0
+FE27..FE2F A
+FE30..FE6F 2
+FE70..FEFE A
+FEFF 0
+FF00..FF60 2
+FF61..FFDF 1
+FFE0..FFE6 2
+FFE7..FFF8 1
+FFF9..FFFB 0
+FFFC..101FC 1
+101FD 0
+101FE..10A00 1
+10A01..10A03 0
+10A04 1
+10A05..10A06 0
+10A07..10A0B 1
+10A0C..10A0F 0
+10A10..10A37 1
+10A38..10A3A 0
+10A3B..10A3E 1
+10A3F 0
+10A40..1D166 1
+1D167..1D169 0
+1D16A..1D17A 1
+1D17B..1D182 0
+1D183..1D184 1
+1D185..1D18B 0
+1D18C..1D1A9 1
+1D1AA..1D1AD 0
+1D1AE..1D241 1
+1D242..1D244 0
+1D245..1FFFF 1
+20000..2A6D6 2
+2A6D7..2F7FF 1
+2F800..2FA1D 2
+2FA1E..E0000 1
+E0001 0
+E0002..E001F 1
+E0020..E007F 0
+E0080..E00FF 1
+E0100..E01EF 0
+E01F0..10FFFF 1
+EOF
+
+: ${DIFF=diff}
+${DIFF} uc_width.ok uc_width.out
+result=$?
+
+rm -fr $tmpfiles
+
+exit $result
diff --git a/tests/unsetenv.c b/tests/unsetenv.c
new file mode 100644
index 00000000..73ea878a
--- /dev/null
+++ b/tests/unsetenv.c
@@ -0,0 +1,90 @@
+/* Copyright (C) 1992,1995-1999,2000-2002,2005-2008 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <stdlib.h>
+
+#include <errno.h>
+#if !_LIBC
+# define __set_errno(ev) ((errno) = (ev))
+#endif
+
+#include <string.h>
+#include <unistd.h>
+
+#if !_LIBC
+# define __environ environ
+#endif
+
+#if _LIBC
+/* This lock protects against simultaneous modifications of `environ'. */
+# include <bits/libc-lock.h>
+__libc_lock_define_initialized (static, envlock)
+# define LOCK __libc_lock_lock (envlock)
+# define UNLOCK __libc_lock_unlock (envlock)
+#else
+# define LOCK
+# define UNLOCK
+#endif
+
+/* In the GNU C library we must keep the namespace clean. */
+#ifdef _LIBC
+# define unsetenv __unsetenv
+#endif
+
+
+int
+unsetenv (const char *name)
+{
+ size_t len;
+ char **ep;
+
+ if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ len = strlen (name);
+
+ LOCK;
+
+ ep = __environ;
+ while (*ep != NULL)
+ if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
+ {
+ /* Found it. Remove this pointer by moving later ones back. */
+ char **dp = ep;
+
+ do
+ dp[0] = dp[1];
+ while (*dp++);
+ /* Continue the loop in case NAME appears again. */
+ }
+ else
+ ++ep;
+
+ UNLOCK;
+
+ return 0;
+}
+
+#ifdef _LIBC
+# undef unsetenv
+weak_alias (__unsetenv, unsetenv)
+#endif
diff --git a/tests/wctob.c b/tests/wctob.c
new file mode 100644
index 00000000..4fa71b0d
--- /dev/null
+++ b/tests/wctob.c
@@ -0,0 +1,37 @@
+/* Convert wide character to unibyte character.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2008.
+
+ 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <wchar.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+wctob (wint_t wc)
+{
+ char buf[64];
+
+ if (!(MB_CUR_MAX <= sizeof (buf)))
+ abort ();
+ if (wctomb (buf, wc) == 1)
+ return (unsigned char) buf[0];
+ else
+ return EOF;
+}
diff --git a/tests/xalloc-die.c b/tests/xalloc-die.c
new file mode 100644
index 00000000..0a0694fc
--- /dev/null
+++ b/tests/xalloc-die.c
@@ -0,0 +1,41 @@
+/* Report a memory allocation failure and exit.
+
+ Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004, 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "xalloc.h"
+
+#include <stdlib.h>
+
+#include "error.h"
+#include "exitfail.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+void
+xalloc_die (void)
+{
+ error (exit_failure, 0, "%s", _("memory exhausted"));
+
+ /* The `noreturn' cannot be given to error, since it may return if
+ its first argument is 0. To help compilers understand the
+ xalloc_die does not return, call abort. Also, the abort is a
+ safety feature if exit_failure is 0 (which shouldn't happen). */
+ abort ();
+}
diff --git a/tests/xalloc.h b/tests/xalloc.h
new file mode 100644
index 00000000..57a13e0a
--- /dev/null
+++ b/tests/xalloc.h
@@ -0,0 +1,280 @@
+/* xalloc.h -- malloc with out-of-memory checking
+
+ Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+ 1999, 2000, 2003, 2004, 2006, 2007, 2008 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#ifndef XALLOC_H_
+# define XALLOC_H_
+
+# include <stddef.h>
+
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+
+# ifndef __attribute__
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8)
+# define __attribute__(x)
+# endif
+# endif
+
+# ifndef ATTRIBUTE_NORETURN
+# define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
+# endif
+
+# ifndef ATTRIBUTE_MALLOC
+# if __GNUC__ >= 3
+# define ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
+# else
+# define ATTRIBUTE_MALLOC
+# endif
+# endif
+
+/* This function is always triggered when memory is exhausted.
+ It must be defined by the application, either explicitly
+ or by using gnulib's xalloc-die module. This is the
+ function to call when one wants the program to die because of a
+ memory allocation failure. */
+extern void xalloc_die (void) ATTRIBUTE_NORETURN;
+
+void *xmalloc (size_t s) ATTRIBUTE_MALLOC;
+void *xzalloc (size_t s) ATTRIBUTE_MALLOC;
+void *xcalloc (size_t n, size_t s) ATTRIBUTE_MALLOC;
+void *xrealloc (void *p, size_t s);
+void *x2realloc (void *p, size_t *pn);
+void *xmemdup (void const *p, size_t s) ATTRIBUTE_MALLOC;
+char *xstrdup (char const *str) ATTRIBUTE_MALLOC;
+
+/* Return 1 if an array of N objects, each of size S, cannot exist due
+ to size arithmetic overflow. S must be positive and N must be
+ nonnegative. This is a macro, not an inline function, so that it
+ works correctly even when SIZE_MAX < N.
+
+ By gnulib convention, SIZE_MAX represents overflow in size
+ calculations, so the conservative dividend to use here is
+ SIZE_MAX - 1, since SIZE_MAX might represent an overflowed value.
+ However, malloc (SIZE_MAX) fails on all known hosts where
+ sizeof (ptrdiff_t) <= sizeof (size_t), so do not bother to test for
+ exactly-SIZE_MAX allocations on such hosts; this avoids a test and
+ branch when S is known to be 1. */
+# define xalloc_oversized(n, s) \
+ ((size_t) (sizeof (ptrdiff_t) <= sizeof (size_t) ? -1 : -2) / (s) < (n))
+
+
+/* In the following macros, T must be an elementary or structure/union or
+ typedef'ed type, or a pointer to such a type. To apply one of the
+ following macros to a function pointer or array type, you need to typedef
+ it first and use the typedef name. */
+
+/* Allocate an object of type T dynamically, with error checking. */
+/* extern t *XMALLOC (typename t); */
+# define XMALLOC(t) ((t *) xmalloc (sizeof (t)))
+
+/* Allocate memory for N elements of type T, with error checking. */
+/* extern t *XNMALLOC (size_t n, typename t); */
+# define XNMALLOC(n, t) \
+ ((t *) (sizeof (t) == 1 ? xmalloc (n) : xnmalloc (n, sizeof (t))))
+
+/* Allocate an object of type T dynamically, with error checking,
+ and zero it. */
+/* extern t *XZALLOC (typename t); */
+# define XZALLOC(t) ((t *) xzalloc (sizeof (t)))
+
+/* Allocate memory for N elements of type T, with error checking,
+ and zero it. */
+/* extern t *XCALLOC (size_t n, typename t); */
+# define XCALLOC(n, t) \
+ ((t *) (sizeof (t) == 1 ? xzalloc (n) : xcalloc (n, sizeof (t))))
+
+
+# if HAVE_INLINE
+# define static_inline static inline
+# else
+ void *xnmalloc (size_t n, size_t s) ATTRIBUTE_MALLOC;
+ void *xnrealloc (void *p, size_t n, size_t s);
+ void *x2nrealloc (void *p, size_t *pn, size_t s);
+ char *xcharalloc (size_t n) ATTRIBUTE_MALLOC;
+# endif
+
+# ifdef static_inline
+
+/* Allocate an array of N objects, each with S bytes of memory,
+ dynamically, with error checking. S must be nonzero. */
+
+static_inline void *xnmalloc (size_t n, size_t s) ATTRIBUTE_MALLOC;
+static_inline void *
+xnmalloc (size_t n, size_t s)
+{
+ if (xalloc_oversized (n, s))
+ xalloc_die ();
+ return xmalloc (n * s);
+}
+
+/* Change the size of an allocated block of memory P to an array of N
+ objects each of S bytes, with error checking. S must be nonzero. */
+
+static_inline void *
+xnrealloc (void *p, size_t n, size_t s)
+{
+ if (xalloc_oversized (n, s))
+ xalloc_die ();
+ return xrealloc (p, n * s);
+}
+
+/* If P is null, allocate a block of at least *PN such objects;
+ otherwise, reallocate P so that it contains more than *PN objects
+ each of S bytes. *PN must be nonzero unless P is null, and S must
+ be nonzero. Set *PN to the new number of objects, and return the
+ pointer to the new block. *PN is never set to zero, and the
+ returned pointer is never null.
+
+ Repeated reallocations are guaranteed to make progress, either by
+ allocating an initial block with a nonzero size, or by allocating a
+ larger block.
+
+ In the following implementation, nonzero sizes are increased by a
+ factor of approximately 1.5 so that repeated reallocations have
+ O(N) overall cost rather than O(N**2) cost, but the
+ specification for this function does not guarantee that rate.
+
+ Here is an example of use:
+
+ int *p = NULL;
+ size_t used = 0;
+ size_t allocated = 0;
+
+ void
+ append_int (int value)
+ {
+ if (used == allocated)
+ p = x2nrealloc (p, &allocated, sizeof *p);
+ p[used++] = value;
+ }
+
+ This causes x2nrealloc to allocate a block of some nonzero size the
+ first time it is called.
+
+ To have finer-grained control over the initial size, set *PN to a
+ nonzero value before calling this function with P == NULL. For
+ example:
+
+ int *p = NULL;
+ size_t used = 0;
+ size_t allocated = 0;
+ size_t allocated1 = 1000;
+
+ void
+ append_int (int value)
+ {
+ if (used == allocated)
+ {
+ p = x2nrealloc (p, &allocated1, sizeof *p);
+ allocated = allocated1;
+ }
+ p[used++] = value;
+ }
+
+ */
+
+static_inline void *
+x2nrealloc (void *p, size_t *pn, size_t s)
+{
+ size_t n = *pn;
+
+ if (! p)
+ {
+ if (! n)
+ {
+ /* The approximate size to use for initial small allocation
+ requests, when the invoking code specifies an old size of
+ zero. 64 bytes is the largest "small" request for the
+ GNU C library malloc. */
+ enum { DEFAULT_MXFAST = 64 };
+
+ n = DEFAULT_MXFAST / s;
+ n += !n;
+ }
+ }
+ else
+ {
+ /* Set N = ceil (1.5 * N) so that progress is made if N == 1.
+ Check for overflow, so that N * S stays in size_t range.
+ The check is slightly conservative, but an exact check isn't
+ worth the trouble. */
+ if ((size_t) -1 / 3 * 2 / s <= n)
+ xalloc_die ();
+ n += (n + 1) / 2;
+ }
+
+ *pn = n;
+ return xrealloc (p, n * s);
+}
+
+/* Return a pointer to a new buffer of N bytes. This is like xmalloc,
+ except it returns char *. */
+
+static_inline char *xcharalloc (size_t n) ATTRIBUTE_MALLOC;
+static_inline char *
+xcharalloc (size_t n)
+{
+ return XNMALLOC (n, char);
+}
+
+# endif
+
+# ifdef __cplusplus
+}
+
+/* C++ does not allow conversions from void * to other pointer types
+ without a cast. Use templates to work around the problem when
+ possible. */
+
+template <typename T> inline T *
+xrealloc (T *p, size_t s)
+{
+ return (T *) xrealloc ((void *) p, s);
+}
+
+template <typename T> inline T *
+xnrealloc (T *p, size_t n, size_t s)
+{
+ return (T *) xnrealloc ((void *) p, n, s);
+}
+
+template <typename T> inline T *
+x2realloc (T *p, size_t *pn)
+{
+ return (T *) x2realloc ((void *) p, pn);
+}
+
+template <typename T> inline T *
+x2nrealloc (T *p, size_t *pn, size_t s)
+{
+ return (T *) x2nrealloc ((void *) p, pn, s);
+}
+
+template <typename T> inline T *
+xmemdup (T const *p, size_t s)
+{
+ return (T *) xmemdup ((void const *) p, s);
+}
+
+# endif
+
+
+#endif /* !XALLOC_H_ */
diff --git a/tests/xmalloc.c b/tests/xmalloc.c
new file mode 100644
index 00000000..585fb4b1
--- /dev/null
+++ b/tests/xmalloc.c
@@ -0,0 +1,118 @@
+/* xmalloc.c -- malloc with out of memory checking
+
+ Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+ 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2008-2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#if ! HAVE_INLINE
+# define static_inline
+#endif
+#include "xalloc.h"
+#undef static_inline
+
+#include <stdlib.h>
+#include <string.h>
+
+/* 1 if calloc is known to be compatible with GNU calloc. This
+ matters if we are not also using the calloc module, which defines
+ HAVE_CALLOC and supports the GNU API even on non-GNU platforms. */
+#if defined HAVE_CALLOC || defined __GLIBC__
+enum { HAVE_GNU_CALLOC = 1 };
+#else
+enum { HAVE_GNU_CALLOC = 0 };
+#endif
+
+/* Allocate N bytes of memory dynamically, with error checking. */
+
+void *
+xmalloc (size_t n)
+{
+ void *p = malloc (n);
+ if (!p && n != 0)
+ xalloc_die ();
+ return p;
+}
+
+/* Change the size of an allocated block of memory P to N bytes,
+ with error checking. */
+
+void *
+xrealloc (void *p, size_t n)
+{
+ p = realloc (p, n);
+ if (!p && n != 0)
+ xalloc_die ();
+ return p;
+}
+
+/* If P is null, allocate a block of at least *PN bytes; otherwise,
+ reallocate P so that it contains more than *PN bytes. *PN must be
+ nonzero unless P is null. Set *PN to the new block's size, and
+ return the pointer to the new block. *PN is never set to zero, and
+ the returned pointer is never null. */
+
+void *
+x2realloc (void *p, size_t *pn)
+{
+ return x2nrealloc (p, pn, 1);
+}
+
+/* Allocate S bytes of zeroed memory dynamically, with error checking.
+ There's no need for xnzalloc (N, S), since it would be equivalent
+ to xcalloc (N, S). */
+
+void *
+xzalloc (size_t s)
+{
+ return memset (xmalloc (s), 0, s);
+}
+
+/* Allocate zeroed memory for N elements of S bytes, with error
+ checking. S must be nonzero. */
+
+void *
+xcalloc (size_t n, size_t s)
+{
+ void *p;
+ /* Test for overflow, since some calloc implementations don't have
+ proper overflow checks. But omit overflow and size-zero tests if
+ HAVE_GNU_CALLOC, since GNU calloc catches overflow and never
+ returns NULL if successful. */
+ if ((! HAVE_GNU_CALLOC && xalloc_oversized (n, s))
+ || (! (p = calloc (n, s)) && (HAVE_GNU_CALLOC || n != 0)))
+ xalloc_die ();
+ return p;
+}
+
+/* Clone an object P of size S, with error checking. There's no need
+ for xnmemdup (P, N, S), since xmemdup (P, N * S) works without any
+ need for an arithmetic overflow check. */
+
+void *
+xmemdup (void const *p, size_t s)
+{
+ return memcpy (xmalloc (s), p, s);
+}
+
+/* Clone STRING. */
+
+char *
+xstrdup (char const *string)
+{
+ return xmemdup (string, strlen (string) + 1);
+}
diff --git a/tests/zerosize-ptr.h b/tests/zerosize-ptr.h
new file mode 100644
index 00000000..a38a2cf4
--- /dev/null
+++ b/tests/zerosize-ptr.h
@@ -0,0 +1,68 @@
+/* Return a pointer to a zero-size object in memory.
+ Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* ISO C 99 does not allow memcmp(), memchr() etc. to be invoked with a NULL
+ argument. Therefore this file produces a non-NULL pointer which cannot
+ be dereferenced, if possible. */
+
+#include <stdlib.h>
+
+/* Test whether mmap() and mprotect() are available.
+ We don't use HAVE_MMAP, because AC_FUNC_MMAP would not define it on HP-UX.
+ HAVE_MPROTECT is not enough, because mingw does not have mmap() but has an
+ mprotect() function in libgcc.a. */
+#if HAVE_SYS_MMAN_H && HAVE_MPROTECT
+# include <fcntl.h>
+# include <unistd.h>
+# include <sys/types.h>
+# include <sys/mman.h>
+/* Define MAP_FILE when it isn't otherwise. */
+# ifndef MAP_FILE
+# define MAP_FILE 0
+# endif
+#endif
+
+/* Return a pointer to a zero-size object in memory (that is, actually, a
+ pointer to a page boundary where the previous page is readable and writable
+ and the next page is neither readable not writable), if possible.
+ Return NULL otherwise. */
+
+static void *
+zerosize_ptr (void)
+{
+/* Use mmap and mprotect when they exist. Don't test HAVE_MMAP, because it is
+ not defined on HP-UX 11 (since it does not support MAP_FIXED). */
+#if HAVE_SYS_MMAN_H && HAVE_MPROTECT
+# if HAVE_MAP_ANONYMOUS
+ const int flags = MAP_ANONYMOUS | MAP_PRIVATE;
+ const int fd = -1;
+# else /* !HAVE_MAP_ANONYMOUS */
+ const int flags = MAP_FILE | MAP_PRIVATE;
+ int fd = open ("/dev/zero", O_RDONLY, 0666);
+ if (fd >= 0)
+# endif
+ {
+ int pagesize = getpagesize ();
+ char *two_pages =
+ (char *) mmap (NULL, 2 * pagesize, PROT_READ | PROT_WRITE,
+ flags, fd, 0);
+ if (two_pages != (char *)(-1)
+ && mprotect (two_pages + pagesize, pagesize, PROT_NONE) == 0)
+ return two_pages + pagesize;
+ }
+#endif
+ return NULL;
+}
diff --git a/version.sh b/version.sh
new file mode 100644
index 00000000..f5295b18
--- /dev/null
+++ b/version.sh
@@ -0,0 +1,6 @@
+# Version number and release date.
+VERSION_NUMBER=0.9.1
+RELEASE_DATE=2009-06-30 # in "date +%Y-%m-%d" format
+
+# Version of gnulib that was used in this release.
+GNULIB_GIT_COMMIT=e43d583475dc364a0816df054471e6bc4bb75106
diff --git a/woe32dll/export.h b/woe32dll/export.h
new file mode 100644
index 00000000..3e8a21fc
--- /dev/null
+++ b/woe32dll/export.h
@@ -0,0 +1,106 @@
+/* Exporting symbols from Cygwin shared libraries.
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2006.
+
+ 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* There are four ways to build shared libraries on Cygwin:
+
+ - Export only functions, no variables.
+ This has the drawback of severely affecting the programming style in use.
+ It does not let the programmer use full ANSI C. It lets one platform
+ dictate the code style on all platforms. This is unacceptable.
+
+ - Use the GNU ld --enable-auto-import option. It is the default on Cygwin
+ since July 2005. But it has three fatal drawbacks:
+ - It produces executables and shared libraries with relocations in the
+ .text segment, defeating the principles of virtual memory.
+ - For some constructs such as
+ extern int var;
+ int * const b = &var;
+ it creates an executable that will give an error at runtime, rather
+ than either a compile-time or link-time error or a working executable.
+ (This is with both gcc and g++.) Whereas this code, not relying on
+ auto-import:
+ extern __declspec (dllimport) int var;
+ int * const b = &var;
+ gives a compile-time error with gcc and works with g++.
+ - It doesn't work in some cases (references to a member field of an
+ exported struct variable, or to a particular element of an exported
+ array variable), requiring code modifications. Again one platform
+ dictates code modifications on all platforms.
+
+ This is unacceptable. Therefore we disable this option, through the
+ woe32-dll.m4 autoconf macro.
+
+ - Define a macro that expands to __declspec(dllexport) when building
+ the library and to __declspec(dllimport) when building code outside
+ the library, and use it in all header files of the library.
+ This is acceptable if
+ 1. the header files are unique to this library (not shared with
+ other packages), and
+ 2. the library sources are contained in one directory, making it easy
+ to define a -DBUILDING_LIBXYZ flag for the library.
+ Example:
+ #ifdef BUILDING_LIBASPRINTF
+ #define LIBASPRINTF_DLL_EXPORTED __declspec(dllexport)
+ #else
+ #define LIBASPRINTF_DLL_EXPORTED __declspec(dllimport)
+ #endif
+
+ We use this technique for the libintl and the libasprintf libraries.
+
+ - Define a macro that expands to __declspec(dllimport) always, and use
+ it in all header files of the library. Use an explicit export list for
+ the library.
+ This is acceptable if
+ 1. the programming language is not C++ (because the name mangling of
+ static struct/class fields and of variables in namespaces makes it
+ hard to maintain an export list).
+ The benefit of this approach is that the partitioning of the source files
+ into libraries (which source file goes into which library) does not
+ affect the source code; only the Makefiles reflect it.
+ The performance loss due to the unnecessary indirection for references
+ to variables from within the library defining the variable is acceptable.
+
+ We use this technique for libgettextlib (because it contains many gnulib
+ modules) and for libgettextsrc (because this makes it easy to move source
+ code from an msg* program to libgettextsrc). The macro is called
+ DLL_VARIABLE.
+
+ This file allows building an explicit export list. You can either
+ - specify the variables to be exported, and use the GNU ld option
+ --export-all-symbols to export all function names, or
+ - specify the variables and functions to be exported explicitly.
+
+ Note: --export-all-symbols is the default when no other symbol is explicitly
+ exported. This means, the use of an explicit export on the variables has
+ the effect of no longer exporting the functions! - until the option
+ --export-all-symbols is used. */
+
+ /* IMP(x) is a symbol that contains the address of x. */
+#define IMP(x) _imp__##x
+
+ /* Ensure that the variable x is exported from the library, and that a
+ pseudo-variable IMP(x) is available. */
+#define VARIABLE(x) \
+ /* Export x without redefining x. This code was found by compiling a \
+ snippet: \
+ extern __declspec(dllexport) int x; int x = 42; */ \
+ asm (".section .drectve\n"); \
+ asm (".ascii \" -export:" #x ",data\"\n"); \
+ asm (".data\n"); \
+ /* Allocate a pseudo-variable IMP(x). */ \
+ extern int x; \
+ void * IMP(x) = &x;
diff --git a/woe32dll/unistring-exports.c b/woe32dll/unistring-exports.c
new file mode 100644
index 00000000..a32ae611
--- /dev/null
+++ b/woe32dll/unistring-exports.c
@@ -0,0 +1,146 @@
+/* List of exported symbols of libunistring on Cygwin.
+ Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2006.
+
+ 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+#include "woe32dll/export.h"
+
+/* Variables declared in unictype.h */
+VARIABLE(UC_CATEGORY_C)
+VARIABLE(UC_CATEGORY_Cc)
+VARIABLE(UC_CATEGORY_Cf)
+VARIABLE(UC_CATEGORY_Cn)
+VARIABLE(UC_CATEGORY_Co)
+VARIABLE(UC_CATEGORY_Cs)
+VARIABLE(UC_CATEGORY_L)
+VARIABLE(UC_CATEGORY_Ll)
+VARIABLE(UC_CATEGORY_Lm)
+VARIABLE(UC_CATEGORY_Lo)
+VARIABLE(UC_CATEGORY_Lt)
+VARIABLE(UC_CATEGORY_Lu)
+VARIABLE(UC_CATEGORY_M)
+VARIABLE(UC_CATEGORY_Mc)
+VARIABLE(UC_CATEGORY_Me)
+VARIABLE(UC_CATEGORY_Mn)
+VARIABLE(UC_CATEGORY_N)
+VARIABLE(UC_CATEGORY_Nd)
+VARIABLE(UC_CATEGORY_Nl)
+VARIABLE(UC_CATEGORY_No)
+VARIABLE(UC_CATEGORY_P)
+VARIABLE(UC_CATEGORY_Pc)
+VARIABLE(UC_CATEGORY_Pd)
+VARIABLE(UC_CATEGORY_Pe)
+VARIABLE(UC_CATEGORY_Pf)
+VARIABLE(UC_CATEGORY_Pi)
+VARIABLE(UC_CATEGORY_Po)
+VARIABLE(UC_CATEGORY_Ps)
+VARIABLE(UC_CATEGORY_S)
+VARIABLE(UC_CATEGORY_Sc)
+VARIABLE(UC_CATEGORY_Sk)
+VARIABLE(UC_CATEGORY_Sm)
+VARIABLE(UC_CATEGORY_So)
+VARIABLE(UC_CATEGORY_Z)
+VARIABLE(UC_CATEGORY_Zl)
+VARIABLE(UC_CATEGORY_Zp)
+VARIABLE(UC_CATEGORY_Zs)
+VARIABLE(UC_PROPERTY_ALPHABETIC)
+VARIABLE(UC_PROPERTY_ASCII_HEX_DIGIT)
+VARIABLE(UC_PROPERTY_BIDI_ARABIC_DIGIT)
+VARIABLE(UC_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT)
+VARIABLE(UC_PROPERTY_BIDI_BLOCK_SEPARATOR)
+VARIABLE(UC_PROPERTY_BIDI_BOUNDARY_NEUTRAL)
+VARIABLE(UC_PROPERTY_BIDI_COMMON_SEPARATOR)
+VARIABLE(UC_PROPERTY_BIDI_CONTROL)
+VARIABLE(UC_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE)
+VARIABLE(UC_PROPERTY_BIDI_EUROPEAN_DIGIT)
+VARIABLE(UC_PROPERTY_BIDI_EUR_NUM_SEPARATOR)
+VARIABLE(UC_PROPERTY_BIDI_EUR_NUM_TERMINATOR)
+VARIABLE(UC_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT)
+VARIABLE(UC_PROPERTY_BIDI_LEFT_TO_RIGHT)
+VARIABLE(UC_PROPERTY_BIDI_NON_SPACING_MARK)
+VARIABLE(UC_PROPERTY_BIDI_OTHER_NEUTRAL)
+VARIABLE(UC_PROPERTY_BIDI_PDF)
+VARIABLE(UC_PROPERTY_BIDI_SEGMENT_SEPARATOR)
+VARIABLE(UC_PROPERTY_BIDI_WHITESPACE)
+VARIABLE(UC_PROPERTY_COMBINING)
+VARIABLE(UC_PROPERTY_COMPOSITE)
+VARIABLE(UC_PROPERTY_CURRENCY_SYMBOL)
+VARIABLE(UC_PROPERTY_DASH)
+VARIABLE(UC_PROPERTY_DECIMAL_DIGIT)
+VARIABLE(UC_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT)
+VARIABLE(UC_PROPERTY_DEPRECATED)
+VARIABLE(UC_PROPERTY_DIACRITIC)
+VARIABLE(UC_PROPERTY_EXTENDER)
+VARIABLE(UC_PROPERTY_FORMAT_CONTROL)
+VARIABLE(UC_PROPERTY_GRAPHEME_BASE)
+VARIABLE(UC_PROPERTY_GRAPHEME_EXTEND)
+VARIABLE(UC_PROPERTY_GRAPHEME_LINK)
+VARIABLE(UC_PROPERTY_HEX_DIGIT)
+VARIABLE(UC_PROPERTY_HYPHEN)
+VARIABLE(UC_PROPERTY_IDEOGRAPHIC)
+VARIABLE(UC_PROPERTY_IDS_BINARY_OPERATOR)
+VARIABLE(UC_PROPERTY_IDS_TRINARY_OPERATOR)
+VARIABLE(UC_PROPERTY_ID_CONTINUE)
+VARIABLE(UC_PROPERTY_ID_START)
+VARIABLE(UC_PROPERTY_IGNORABLE_CONTROL)
+VARIABLE(UC_PROPERTY_ISO_CONTROL)
+VARIABLE(UC_PROPERTY_JOIN_CONTROL)
+VARIABLE(UC_PROPERTY_LEFT_OF_PAIR)
+VARIABLE(UC_PROPERTY_LINE_SEPARATOR)
+VARIABLE(UC_PROPERTY_LOGICAL_ORDER_EXCEPTION)
+VARIABLE(UC_PROPERTY_LOWERCASE)
+VARIABLE(UC_PROPERTY_MATH)
+VARIABLE(UC_PROPERTY_NON_BREAK)
+VARIABLE(UC_PROPERTY_NOT_A_CHARACTER)
+VARIABLE(UC_PROPERTY_NUMERIC)
+VARIABLE(UC_PROPERTY_OTHER_ALPHABETIC)
+VARIABLE(UC_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT)
+VARIABLE(UC_PROPERTY_OTHER_GRAPHEME_EXTEND)
+VARIABLE(UC_PROPERTY_OTHER_ID_CONTINUE)
+VARIABLE(UC_PROPERTY_OTHER_ID_START)
+VARIABLE(UC_PROPERTY_OTHER_LOWERCASE)
+VARIABLE(UC_PROPERTY_OTHER_MATH)
+VARIABLE(UC_PROPERTY_OTHER_UPPERCASE)
+VARIABLE(UC_PROPERTY_PAIRED_PUNCTUATION)
+VARIABLE(UC_PROPERTY_PARAGRAPH_SEPARATOR)
+VARIABLE(UC_PROPERTY_PATTERN_SYNTAX)
+VARIABLE(UC_PROPERTY_PATTERN_WHITE_SPACE)
+VARIABLE(UC_PROPERTY_PRIVATE_USE)
+VARIABLE(UC_PROPERTY_PUNCTUATION)
+VARIABLE(UC_PROPERTY_QUOTATION_MARK)
+VARIABLE(UC_PROPERTY_RADICAL)
+VARIABLE(UC_PROPERTY_SENTENCE_TERMINAL)
+VARIABLE(UC_PROPERTY_SOFT_DOTTED)
+VARIABLE(UC_PROPERTY_SPACE)
+VARIABLE(UC_PROPERTY_TERMINAL_PUNCTUATION)
+VARIABLE(UC_PROPERTY_TITLECASE)
+VARIABLE(UC_PROPERTY_UNASSIGNED_CODE_VALUE)
+VARIABLE(UC_PROPERTY_UNIFIED_IDEOGRAPH)
+VARIABLE(UC_PROPERTY_UPPERCASE)
+VARIABLE(UC_PROPERTY_VARIATION_SELECTOR)
+VARIABLE(UC_PROPERTY_WHITE_SPACE)
+VARIABLE(UC_PROPERTY_XID_CONTINUE)
+VARIABLE(UC_PROPERTY_XID_START)
+VARIABLE(UC_PROPERTY_ZERO_WIDTH)
+/* Variables declared in uninorm.h */
+VARIABLE(uninorm_nfc)
+VARIABLE(uninorm_nfd)
+VARIABLE(uninorm_nfkc)
+VARIABLE(uninorm_nfkd)
+/* Variables declared in unicase.h */
+VARIABLE(unicase_empty_prefix_context)
+VARIABLE(unicase_empty_suffix_context)
+/* Variables declared in unistring/version.h */
+VARIABLE(_libunistring_version)